security/nss/lib/pk11wrap/pk11priv.h

changeset 0
6474c204b198
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/security/nss/lib/pk11wrap/pk11priv.h	Wed Dec 31 06:09:35 2014 +0100
     1.3 @@ -0,0 +1,192 @@
     1.4 +/* This Source Code Form is subject to the terms of the Mozilla Public
     1.5 + * License, v. 2.0. If a copy of the MPL was not distributed with this
     1.6 + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
     1.7 +#ifndef _PK11PRIV_H_
     1.8 +#define _PK11PRIV_H_
     1.9 +#include "plarena.h"
    1.10 +#include "seccomon.h"
    1.11 +#include "secoidt.h"
    1.12 +#include "secdert.h"
    1.13 +#include "keyt.h"
    1.14 +#include "certt.h"
    1.15 +#include "pkcs11t.h"
    1.16 +#include "secmodt.h"
    1.17 +#include "seccomon.h"
    1.18 +#include "pkcs7t.h"
    1.19 +#include "cmsreclist.h"
    1.20 +
    1.21 +/*
    1.22 + * These are the private NSS functions. They are not exported by nss.def, and
    1.23 + * are not callable outside nss3.dll. 
    1.24 + */
    1.25 +
    1.26 +SEC_BEGIN_PROTOS
    1.27 +
    1.28 +/************************************************************
    1.29 + * Generic Slot Lists Management
    1.30 + ************************************************************/
    1.31 +PK11SlotList * PK11_NewSlotList(void);
    1.32 +PK11SlotList * PK11_GetPrivateKeyTokens(CK_MECHANISM_TYPE type,
    1.33 +						PRBool needRW,void *wincx);
    1.34 +SECStatus PK11_AddSlotToList(PK11SlotList *list,PK11SlotInfo *slot, PRBool sorted);
    1.35 +SECStatus PK11_DeleteSlotFromList(PK11SlotList *list,PK11SlotListElement *le);
    1.36 +PK11SlotListElement *PK11_FindSlotElement(PK11SlotList *list,
    1.37 +							PK11SlotInfo *slot);
    1.38 +PK11SlotInfo *PK11_FindSlotBySerial(char *serial);
    1.39 +int PK11_GetMaxKeyLength(CK_MECHANISM_TYPE type);
    1.40 +
    1.41 +/************************************************************
    1.42 + * Generic Slot Management
    1.43 + ************************************************************/
    1.44 +CK_OBJECT_HANDLE PK11_CopyKey(PK11SlotInfo *slot, CK_OBJECT_HANDLE srcObject);
    1.45 +SECStatus PK11_ReadAttribute(PK11SlotInfo *slot, CK_OBJECT_HANDLE id,
    1.46 +         CK_ATTRIBUTE_TYPE type, PLArenaPool *arena, SECItem *result);
    1.47 +CK_ULONG PK11_ReadULongAttribute(PK11SlotInfo *slot, CK_OBJECT_HANDLE id,
    1.48 +         CK_ATTRIBUTE_TYPE type);
    1.49 +char * PK11_MakeString(PLArenaPool *arena,char *space,char *staticSring,
    1.50 +								int stringLen);
    1.51 +int PK11_MapError(CK_RV error);
    1.52 +CK_SESSION_HANDLE PK11_GetRWSession(PK11SlotInfo *slot);
    1.53 +void PK11_RestoreROSession(PK11SlotInfo *slot,CK_SESSION_HANDLE rwsession);
    1.54 +PRBool PK11_RWSessionHasLock(PK11SlotInfo *slot,
    1.55 +					 CK_SESSION_HANDLE session_handle);
    1.56 +PK11SlotInfo *PK11_NewSlotInfo(SECMODModule *mod);
    1.57 +void PK11_EnterSlotMonitor(PK11SlotInfo *);
    1.58 +void PK11_ExitSlotMonitor(PK11SlotInfo *);
    1.59 +void PK11_CleanKeyList(PK11SlotInfo *slot);
    1.60 +
    1.61 +
    1.62 +/************************************************************
    1.63 + *  Slot Password Management
    1.64 + ************************************************************/
    1.65 +SECStatus PK11_DoPassword(PK11SlotInfo *slot, CK_SESSION_HANDLE session,
    1.66 +			PRBool loadCerts, void *wincx, PRBool alreadyLocked,
    1.67 +			PRBool contextSpecific);
    1.68 +SECStatus PK11_VerifyPW(PK11SlotInfo *slot,char *pw);
    1.69 +void PK11_HandlePasswordCheck(PK11SlotInfo *slot,void *wincx);
    1.70 +void PK11_SetVerifyPasswordFunc(PK11VerifyPasswordFunc func);
    1.71 +void PK11_SetIsLoggedInFunc(PK11IsLoggedInFunc func);
    1.72 +
    1.73 +/************************************************************
    1.74 + * Manage the built-In Slot Lists
    1.75 + ************************************************************/
    1.76 +SECStatus PK11_InitSlotLists(void);
    1.77 +void PK11_DestroySlotLists(void);
    1.78 +PK11SlotList *PK11_GetSlotList(CK_MECHANISM_TYPE type);
    1.79 +void PK11_LoadSlotList(PK11SlotInfo *slot, PK11PreSlotInfo *psi, int count);
    1.80 +void PK11_ClearSlotList(PK11SlotInfo *slot);
    1.81 +
    1.82 +
    1.83 +/******************************************************************
    1.84 + *           Slot initialization
    1.85 + ******************************************************************/
    1.86 +SECStatus PK11_InitToken(PK11SlotInfo *slot, PRBool loadCerts);
    1.87 +void PK11_InitSlot(SECMODModule *mod,CK_SLOT_ID slotID,PK11SlotInfo *slot);
    1.88 +PRBool PK11_NeedPWInitForSlot(PK11SlotInfo *slot);
    1.89 +SECStatus PK11_ReadSlotCerts(PK11SlotInfo *slot);
    1.90 +void pk11_SetInternalKeySlot(PK11SlotInfo *slot);
    1.91 +PK11SlotInfo *pk11_SwapInternalKeySlot(PK11SlotInfo *slot);
    1.92 +void pk11_SetInternalKeySlotIfFirst(PK11SlotInfo *slot);
    1.93 +
    1.94 +/*********************************************************************
    1.95 + *       Mechanism Mapping functions
    1.96 + *********************************************************************/
    1.97 +void PK11_AddMechanismEntry(CK_MECHANISM_TYPE type, CK_KEY_TYPE key,
    1.98 +	 	CK_MECHANISM_TYPE keygen, CK_MECHANISM_TYPE pad, 
    1.99 +		int ivLen, int blocksize);
   1.100 +CK_MECHANISM_TYPE PK11_GetKeyMechanism(CK_KEY_TYPE type);
   1.101 +CK_MECHANISM_TYPE PK11_GetKeyGenWithSize(CK_MECHANISM_TYPE type, int size);
   1.102 +
   1.103 +/**********************************************************************
   1.104 + *                   Symetric, Public, and Private Keys 
   1.105 + **********************************************************************/
   1.106 +/* Key Generation specialized for SDR (fixed DES3 key) */
   1.107 +PK11SymKey *PK11_GenDES3TokenKey(PK11SlotInfo *slot, SECItem *keyid, void *cx);
   1.108 +SECKEYPublicKey *PK11_ExtractPublicKey(PK11SlotInfo *slot, KeyType keyType,
   1.109 +					 CK_OBJECT_HANDLE id);
   1.110 +CK_OBJECT_HANDLE PK11_FindObjectForCert(CERTCertificate *cert,
   1.111 +					void *wincx, PK11SlotInfo **pSlot);
   1.112 +PK11SymKey * pk11_CopyToSlot(PK11SlotInfo *slot,CK_MECHANISM_TYPE type,
   1.113 +		 	CK_ATTRIBUTE_TYPE operation, PK11SymKey *symKey);
   1.114 +
   1.115 +/**********************************************************************
   1.116 + *                   Certs
   1.117 + **********************************************************************/
   1.118 +SECStatus PK11_TraversePrivateKeysInSlot( PK11SlotInfo *slot,
   1.119 +    SECStatus(* callback)(SECKEYPrivateKey*, void*), void *arg);
   1.120 +SECKEYPrivateKey * PK11_FindPrivateKeyFromNickname(char *nickname, void *wincx);
   1.121 +CK_OBJECT_HANDLE * PK11_FindObjectsFromNickname(char *nickname,
   1.122 +	PK11SlotInfo **slotptr, CK_OBJECT_CLASS objclass, int *returnCount, 
   1.123 +								void *wincx);
   1.124 +CK_OBJECT_HANDLE PK11_MatchItem(PK11SlotInfo *slot,CK_OBJECT_HANDLE peer,
   1.125 +						CK_OBJECT_CLASS o_class); 
   1.126 +CK_BBOOL PK11_HasAttributeSet( PK11SlotInfo *slot,
   1.127 +			       CK_OBJECT_HANDLE id,
   1.128 +			       CK_ATTRIBUTE_TYPE type,
   1.129 +			       PRBool haslock );
   1.130 +CK_RV PK11_GetAttributes(PLArenaPool *arena,PK11SlotInfo *slot,
   1.131 +			 CK_OBJECT_HANDLE obj,CK_ATTRIBUTE *attr, int count);
   1.132 +int PK11_NumberCertsForCertSubject(CERTCertificate *cert);
   1.133 +SECStatus PK11_TraverseCertsForSubject(CERTCertificate *cert, 
   1.134 +	SECStatus(*callback)(CERTCertificate *, void *), void *arg);
   1.135 +SECStatus PK11_GetKEAMatchedCerts(PK11SlotInfo *slot1,
   1.136 +   PK11SlotInfo *slot2, CERTCertificate **cert1, CERTCertificate **cert2);
   1.137 +SECStatus PK11_TraverseCertsInSlot(PK11SlotInfo *slot,
   1.138 +       SECStatus(* callback)(CERTCertificate*, void *), void *arg);
   1.139 +SECStatus PK11_LookupCrls(CERTCrlHeadNode *nodes, int type, void *wincx);
   1.140 +
   1.141 +
   1.142 +/**********************************************************************
   1.143 + *                   Crypto Contexts
   1.144 + **********************************************************************/
   1.145 +PK11Context * PK11_CreateContextByRawKey(PK11SlotInfo *slot, 
   1.146 +    CK_MECHANISM_TYPE type, PK11Origin origin, CK_ATTRIBUTE_TYPE operation,
   1.147 +			 	SECItem *key, SECItem *param, void *wincx);
   1.148 +PRBool PK11_HashOK(SECOidTag hashAlg);
   1.149 +
   1.150 +
   1.151 +/**********************************************************************
   1.152 + * Functions which are  deprecated....
   1.153 + **********************************************************************/
   1.154 +
   1.155 +SECItem *
   1.156 +PK11_FindCrlByName(PK11SlotInfo **slot, CK_OBJECT_HANDLE *handle,
   1.157 +					SECItem *derName, int type, char **url);
   1.158 +
   1.159 +CK_OBJECT_HANDLE
   1.160 +PK11_PutCrl(PK11SlotInfo *slot, SECItem *crl, 
   1.161 +				SECItem *name, char *url, int type);
   1.162 +
   1.163 +SECItem *
   1.164 +PK11_FindSMimeProfile(PK11SlotInfo **slotp, char *emailAddr, SECItem *derSubj,
   1.165 +					SECItem **profileTime);
   1.166 +SECStatus
   1.167 +PK11_SaveSMimeProfile(PK11SlotInfo *slot, char *emailAddr, SECItem *derSubj,
   1.168 +			SECItem *emailProfile, SECItem *profileTime);
   1.169 +
   1.170 +PRBool PK11_IsPermObject(PK11SlotInfo *slot, CK_OBJECT_HANDLE handle);
   1.171 +
   1.172 +char * PK11_GetObjectNickname(PK11SlotInfo *slot, CK_OBJECT_HANDLE id) ;
   1.173 +SECStatus PK11_SetObjectNickname(PK11SlotInfo *slot, CK_OBJECT_HANDLE id, 
   1.174 +						const char *nickname) ;
   1.175 +
   1.176 +
   1.177 +/* private */
   1.178 +SECStatus pk11_TraverseAllSlots( SECStatus (*callback)(PK11SlotInfo *,void *),
   1.179 +	void *cbArg, PRBool forceLogin, void *pwArg);
   1.180 +
   1.181 +/* fetch multiple CRLs for a specific issuer */
   1.182 +SECStatus pk11_RetrieveCrls(CERTCrlHeadNode *nodes, SECItem* issuer,
   1.183 +                                   void *wincx);
   1.184 +
   1.185 +/* set global options for NSS PKCS#11 module loader */
   1.186 +SECStatus pk11_setGlobalOptions(PRBool noSingleThreadedModules,
   1.187 +                                PRBool allowAlreadyInitializedModules,
   1.188 +                                PRBool dontFinalizeModules);
   1.189 +
   1.190 +/* return whether NSS is allowed to call C_Finalize */
   1.191 +PRBool pk11_getFinalizeModulesOption(void);
   1.192 +
   1.193 +SEC_END_PROTOS
   1.194 +
   1.195 +#endif

mercurial