/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 *
 * 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 nsIPKCS11Module;
interface nsIPKCS11Slot;
interface nsISimpleEnumerator;

%{C++
#define NS_PKCS11MODULEDB_CONTRACTID "@mozilla.org/security/pkcs11moduledb;1"
%}

[scriptable, uuid(ff9fbcd7-9517-4334-b97a-ceed78909974)]
interface nsIPKCS11ModuleDB : nsISupports
{
  nsIPKCS11Module getInternal();

  nsIPKCS11Module getInternalFIPS();

  nsIPKCS11Module findModuleByName(in wstring name);

  nsIPKCS11Slot findSlotByName(in wstring name);

  nsISimpleEnumerator listModules();

  readonly attribute boolean canToggleFIPS;

  void toggleFIPSMode();

  readonly attribute boolean isFIPSEnabled;
};
