/* 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" // An opaque key object. [scriptable, uuid(4b31f4ed-9424-4710-b946-79b7e33cf3a8)] interface nsIKeyObject : nsISupports { // Key types const short SYM_KEY = 1; const short PRIVATE_KEY = 2; const short PUBLIC_KEY = 3; // Algorithm types const short RC4 = 1; const short AES_CBC = 2; const short HMAC = 257; // aAlgorithm is an algorithm type // aKey is either a PK11SymKey, SECKEYPublicKey, or a SECKEYPrivateKey. // The nsIKeyObject will take ownership of the key and be responsible // for freeing the key memory when destroyed. [noscript] void initKey(in short aAlgorithm, in voidPtr aKey); // Return a pointer to the underlying key object [noscript] voidPtr getKeyObj(); // Will return NS_ERROR_NOT_INITIALIZED if initKey hasn't been run short getType(); }; [scriptable, uuid(264eb54d-e20d-49a0-890c-1a5986ea81c4)] interface nsIKeyObjectFactory : nsISupports { nsIKeyObject lookupKeyByName(in ACString aName); nsIKeyObject unwrapKey(in short aAlgorithm, [const, array, size_is(aWrappedKeyLen)] in octet aWrappedKey, in unsigned long aWrappedKeyLen); // TODO: deriveKeyFrom* // DO NOT USE // This is not FIPS compliant and should not be used. nsIKeyObject keyFromString(in short aAlgorithm, in ACString aKey); };