/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */

#include "nsISupports.idl"

interface nsIDOMBlob;
interface nsIWifiEventListener;

[scriptable, uuid(5d0edcd3-c2f1-4946-aae5-06adcbdf0992)]
interface nsIWifiCertService : nsISupports
{
  const unsigned short WIFI_CERT_USAGE_FLAG_SERVER = 0x01;
  const unsigned short WIFI_CERT_USAGE_FLAG_USER   = 0x02;

  void start(in nsIWifiEventListener listener);
  void shutdown();

  /**
   * Import a certificate file.
   *
   * @param id
   *        Request ID.
   * @param certBlob
   *        A Blob object containing raw data of certificate to be imported.
   * @param certPassword
   *        Password of certificate.
   * @param certNickname
   *        User assigned nickname for imported certificate.
   */
  void importCert(in long id,
                  in nsIDOMBlob certBlob,
                  in DOMString certPassword,
                  in DOMString certNickname);

  /**
   * Delete an imported certificate file
   *
   * @param id
   *        Request ID.
   * @param certNickname
   *        Certificate nickname to delete.
   */
  void deleteCert(in long id,
                  in DOMString certNickname);

  /**
   * Check if certificate has private key.
   *
   * @param certNickname
   *        Certificate nickname to check for private key.
   */
   boolean hasPrivateKey(in DOMString certNickname);
};