| Index: mozilla/security/nss/lib/cryptohi/keythi.h | 
| =================================================================== | 
| --- mozilla/security/nss/lib/cryptohi/keythi.h	(revision 191424) | 
| +++ mozilla/security/nss/lib/cryptohi/keythi.h	(working copy) | 
| @@ -1,258 +0,0 @@ | 
| -/* 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/. */ | 
| -#ifndef _KEYTHI_H_ | 
| -#define _KEYTHI_H_ 1 | 
| - | 
| -#include "plarena.h" | 
| -#include "pkcs11t.h" | 
| -#include "secmodt.h" | 
| -#include "prclist.h" | 
| - | 
| -/* | 
| -** RFC 4055 Section 1.2 specifies three different RSA key types. | 
| -** | 
| -** rsaKey maps to keys with SEC_OID_PKCS1_RSA_ENCRYPTION and can be used for | 
| -** both encryption and signatures with old (PKCS #1 v1.5) and new (PKCS #1 | 
| -** v2.1) padding schemes. | 
| -** | 
| -** rsaPssKey maps to keys with SEC_OID_PKCS1_RSA_PSS_SIGNATURE and may only | 
| -** be used for signatures with PSS padding (PKCS #1 v2.1). | 
| -** | 
| -** rsaOaepKey maps to keys with SEC_OID_PKCS1_RSA_OAEP_ENCRYPTION and may only | 
| -** be used for encryption with OAEP padding (PKCS #1 v2.1). | 
| -*/ | 
| - | 
| -typedef enum { | 
| -    nullKey = 0, | 
| -    rsaKey = 1, | 
| -    dsaKey = 2, | 
| -    fortezzaKey = 3, /* deprecated */ | 
| -    dhKey = 4, | 
| -    keaKey = 5, /* deprecated */ | 
| -    ecKey = 6, | 
| -    rsaPssKey = 7, | 
| -    rsaOaepKey = 8 | 
| -} KeyType; | 
| - | 
| -/* | 
| -** Template Definitions | 
| -**/ | 
| - | 
| -SEC_BEGIN_PROTOS | 
| -extern const SEC_ASN1Template SECKEY_RSAPublicKeyTemplate[]; | 
| -extern const SEC_ASN1Template SECKEY_RSAPSSParamsTemplate[]; | 
| -extern const SEC_ASN1Template SECKEY_DSAPublicKeyTemplate[]; | 
| -extern const SEC_ASN1Template SECKEY_DHPublicKeyTemplate[]; | 
| -extern const SEC_ASN1Template SECKEY_DHParamKeyTemplate[]; | 
| -extern const SEC_ASN1Template SECKEY_PQGParamsTemplate[]; | 
| -extern const SEC_ASN1Template SECKEY_DSAPrivateKeyExportTemplate[]; | 
| - | 
| -/* Windows DLL accessor functions */ | 
| -SEC_ASN1_CHOOSER_DECLARE(SECKEY_DSAPublicKeyTemplate) | 
| -SEC_ASN1_CHOOSER_DECLARE(SECKEY_RSAPublicKeyTemplate) | 
| -SEC_ASN1_CHOOSER_DECLARE(SECKEY_RSAPSSParamsTemplate) | 
| -SEC_END_PROTOS | 
| - | 
| - | 
| -/* | 
| -** RSA Public Key structures | 
| -** member names from PKCS#1, section 7.1 | 
| -*/ | 
| - | 
| -struct SECKEYRSAPublicKeyStr { | 
| -    PLArenaPool * arena; | 
| -    SECItem modulus; | 
| -    SECItem publicExponent; | 
| -}; | 
| -typedef struct SECKEYRSAPublicKeyStr SECKEYRSAPublicKey; | 
| - | 
| -/* | 
| -** RSA-PSS parameters | 
| -*/ | 
| -struct SECKEYRSAPSSParamsStr { | 
| -    SECAlgorithmID *hashAlg; | 
| -    SECAlgorithmID *maskAlg; | 
| -    SECItem saltLength; | 
| -    SECItem trailerField; | 
| -}; | 
| -typedef struct SECKEYRSAPSSParamsStr SECKEYRSAPSSParams; | 
| - | 
| -/* | 
| -** DSA Public Key and related structures | 
| -*/ | 
| - | 
| -struct SECKEYPQGParamsStr { | 
| -    PLArenaPool *arena; | 
| -    SECItem prime;    /* p */ | 
| -    SECItem subPrime; /* q */ | 
| -    SECItem base;     /* g */ | 
| -    /* XXX chrisk: this needs to be expanded to hold j and validationParms (RFC2459 7.3.2) */ | 
| -}; | 
| -typedef struct SECKEYPQGParamsStr SECKEYPQGParams; | 
| - | 
| -struct SECKEYDSAPublicKeyStr { | 
| -    SECKEYPQGParams params; | 
| -    SECItem publicValue; | 
| -}; | 
| -typedef struct SECKEYDSAPublicKeyStr SECKEYDSAPublicKey; | 
| - | 
| - | 
| -/* | 
| -** Diffie-Hellman Public Key structure | 
| -** Structure member names suggested by PKCS#3. | 
| -*/ | 
| -struct SECKEYDHParamsStr { | 
| -    PLArenaPool * arena; | 
| -    SECItem prime; /* p */ | 
| -    SECItem base; /* g */ | 
| -}; | 
| -typedef struct SECKEYDHParamsStr SECKEYDHParams; | 
| - | 
| -struct SECKEYDHPublicKeyStr { | 
| -    PLArenaPool * arena; | 
| -    SECItem prime; | 
| -    SECItem base; | 
| -    SECItem publicValue; | 
| -}; | 
| -typedef struct SECKEYDHPublicKeyStr SECKEYDHPublicKey; | 
| - | 
| -/* | 
| -** Elliptic curve Public Key structure | 
| -** The PKCS#11 layer needs DER encoding of ANSI X9.62 | 
| -** parameters value | 
| -*/ | 
| -typedef SECItem SECKEYECParams; | 
| - | 
| -struct SECKEYECPublicKeyStr { | 
| -    SECKEYECParams DEREncodedParams; | 
| -    int     size;             /* size in bits */ | 
| -    SECItem publicValue;      /* encoded point */ | 
| -    /* XXX Even though the PKCS#11 interface takes encoded parameters, | 
| -     * we may still wish to decode them above PKCS#11 for things like | 
| -     * printing key information. For named curves, which is what | 
| -     * we initially support, we ought to have the curve name at the | 
| -     * very least. | 
| -     */ | 
| -}; | 
| -typedef struct SECKEYECPublicKeyStr SECKEYECPublicKey; | 
| - | 
| -/* | 
| -** FORTEZZA Public Key structures | 
| -*/ | 
| -struct SECKEYFortezzaPublicKeyStr { | 
| -    int      KEAversion; | 
| -    int      DSSversion; | 
| -    unsigned char    KMID[8]; | 
| -    SECItem clearance; | 
| -    SECItem KEApriviledge; | 
| -    SECItem DSSpriviledge; | 
| -    SECItem KEAKey; | 
| -    SECItem DSSKey; | 
| -    SECKEYPQGParams params; | 
| -    SECKEYPQGParams keaParams; | 
| -}; | 
| -typedef struct SECKEYFortezzaPublicKeyStr SECKEYFortezzaPublicKey; | 
| -#define KEAprivilege KEApriviledge /* corrected spelling */ | 
| -#define DSSprivilege DSSpriviledge /* corrected spelling */ | 
| - | 
| -struct SECKEYDiffPQGParamsStr { | 
| -    SECKEYPQGParams DiffKEAParams; | 
| -    SECKEYPQGParams DiffDSAParams; | 
| -}; | 
| -typedef struct SECKEYDiffPQGParamsStr SECKEYDiffPQGParams; | 
| - | 
| -struct SECKEYPQGDualParamsStr { | 
| -    SECKEYPQGParams CommParams; | 
| -    SECKEYDiffPQGParams DiffParams; | 
| -}; | 
| -typedef struct SECKEYPQGDualParamsStr SECKEYPQGDualParams; | 
| - | 
| -struct SECKEYKEAParamsStr { | 
| -    PLArenaPool *arena; | 
| -    SECItem hash; | 
| -}; | 
| -typedef struct SECKEYKEAParamsStr SECKEYKEAParams; | 
| - | 
| -struct SECKEYKEAPublicKeyStr { | 
| -    SECKEYKEAParams params; | 
| -    SECItem publicValue; | 
| -}; | 
| -typedef struct SECKEYKEAPublicKeyStr SECKEYKEAPublicKey; | 
| - | 
| -/* | 
| -** A Generic  public key object. | 
| -*/ | 
| -struct SECKEYPublicKeyStr { | 
| -    PLArenaPool *arena; | 
| -    KeyType keyType; | 
| -    PK11SlotInfo *pkcs11Slot; | 
| -    CK_OBJECT_HANDLE pkcs11ID; | 
| -    union { | 
| -        SECKEYRSAPublicKey rsa; | 
| -	SECKEYDSAPublicKey dsa; | 
| -	SECKEYDHPublicKey  dh; | 
| -        SECKEYKEAPublicKey kea; | 
| -        SECKEYFortezzaPublicKey fortezza; | 
| -	SECKEYECPublicKey  ec; | 
| -    } u; | 
| -}; | 
| -typedef struct SECKEYPublicKeyStr SECKEYPublicKey; | 
| - | 
| -/* bit flag definitions for staticflags */ | 
| -#define SECKEY_Attributes_Cached 0x1    /* bit 0 states | 
| -                                           whether attributes are cached */ | 
| -#define SECKEY_CKA_PRIVATE (1U << 1)    /* bit 1 is the value of CKA_PRIVATE */ | 
| -#define SECKEY_CKA_ALWAYS_AUTHENTICATE (1U << 2) | 
| - | 
| -#define SECKEY_ATTRIBUTES_CACHED(key) \ | 
| -     (0 != (key->staticflags & SECKEY_Attributes_Cached)) | 
| - | 
| -#define SECKEY_ATTRIBUTE_VALUE(key,attribute) \ | 
| -     (0 != (key->staticflags & SECKEY_##attribute)) | 
| - | 
| -#define SECKEY_HAS_ATTRIBUTE_SET(key,attribute) \ | 
| -    (0 != (key->staticflags & SECKEY_Attributes_Cached)) ? \ | 
| -    (0 != (key->staticflags & SECKEY_##attribute)) : \ | 
| -    PK11_HasAttributeSet(key->pkcs11Slot,key->pkcs11ID,attribute, PR_FALSE) | 
| - | 
| -#define SECKEY_HAS_ATTRIBUTE_SET_LOCK(key,attribute, haslock) \ | 
| -    (0 != (key->staticflags & SECKEY_Attributes_Cached)) ? \ | 
| -    (0 != (key->staticflags & SECKEY_##attribute)) : \ | 
| -    PK11_HasAttributeSet(key->pkcs11Slot,key->pkcs11ID,attribute, haslock) | 
| - | 
| -/* | 
| -** A generic key structure | 
| -*/ | 
| -struct SECKEYPrivateKeyStr { | 
| -    PLArenaPool *arena; | 
| -    KeyType keyType; | 
| -    PK11SlotInfo *pkcs11Slot;	/* pkcs11 slot this key lives in */ | 
| -    CK_OBJECT_HANDLE pkcs11ID;  /* ID of pkcs11 object */ | 
| -    PRBool pkcs11IsTemp;	/* temp pkcs11 object, delete it when done */ | 
| -    void *wincx;		/* context for errors and pw prompts */ | 
| -    PRUint32 staticflags;       /* bit flag of cached PKCS#11 attributes */ | 
| -}; | 
| -typedef struct SECKEYPrivateKeyStr SECKEYPrivateKey; | 
| - | 
| -typedef struct { | 
| -    PRCList links; | 
| -    SECKEYPrivateKey *key; | 
| -} SECKEYPrivateKeyListNode; | 
| - | 
| -typedef struct { | 
| -    PRCList list; | 
| -    PLArenaPool *arena; | 
| -} SECKEYPrivateKeyList; | 
| - | 
| -typedef struct { | 
| -    PRCList links; | 
| -    SECKEYPublicKey *key; | 
| -} SECKEYPublicKeyListNode; | 
| - | 
| -typedef struct { | 
| -    PRCList list; | 
| -    PLArenaPool *arena; | 
| -} SECKEYPublicKeyList; | 
| -#endif /* _KEYTHI_H_ */ | 
| - | 
|  |