pk11func.h

来自「支持SSL v2/v3, TLS, PKCS #5, PKCS #7, PKCS」· C头文件 代码 · 共 451 行 · 第 1/2 页

H
451
字号
/* * The contents of this file are subject to the Mozilla Public * License Version 1.1 (the "License"); you may not use this file * except in compliance with the License. You may obtain a copy of * the License at http://www.mozilla.org/MPL/ *  * Software distributed under the License is distributed on an "AS * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or * implied. See the License for the specific language governing * rights and limitations under the License. *  * The Original Code is the Netscape security libraries. *  * The Initial Developer of the Original Code is Netscape * Communications Corporation.  Portions created by Netscape are  * Copyright (C) 1994-2000 Netscape Communications Corporation.  All * Rights Reserved. *  * Contributor(s): *  * Alternatively, the contents of this file may be used under the * terms of the GNU General Public License Version 2 or later (the * "GPL"), in which case the provisions of the GPL are applicable  * instead of those above.  If you wish to allow use of your  * version of this file only under the terms of the GPL and not to * allow others to use your version of this file under the MPL, * indicate your decision by deleting the provisions above and * replace them with the notice and other provisions required by * the GPL.  If you do not delete the provisions above, a recipient * may use your version of this file under either the MPL or the * GPL. * * PKCS #11 Wrapper functions which handles authenticating to the card's * choosing the best cards, etc. */#ifndef _PK11FUNC_H_#define _PK11FUNC_H_#include "plarena.h"#include "mcom_db.h"#include "seccomon.h"#include "secoidt.h"#include "secdert.h"#include "keyt.h"#include "certt.h"#include "pkcs11t.h"#include "secmodt.h"#include "seccomon.h"#include "pkcs7t.h"#include "cmsreclist.h"SEC_BEGIN_PROTOS/************************************************************ * Generic Slot Lists Management ************************************************************/PK11SlotList * PK11_NewSlotList(void);void PK11_FreeSlotList(PK11SlotList *list);SECStatus PK11_AddSlotToList(PK11SlotList *list,PK11SlotInfo *slot);SECStatus PK11_DeleteSlotFromList(PK11SlotList *list,PK11SlotListElement *le);PK11SlotListElement * PK11_GetFirstSafe(PK11SlotList *list);PK11SlotListElement *PK11_GetNextSafe(PK11SlotList *list, 				PK11SlotListElement *le, PRBool restart);PK11SlotListElement *PK11_FindSlotElement(PK11SlotList *list,							PK11SlotInfo *slot);/************************************************************ * Generic Slot Management ************************************************************/PK11SlotInfo *PK11_ReferenceSlot(PK11SlotInfo *slot);PK11SlotInfo *PK11_FindSlotByID(SECMODModuleID modID,CK_SLOT_ID slotID);void PK11_FreeSlot(PK11SlotInfo *slot);SECStatus PK11_DestroyObject(PK11SlotInfo *slot,CK_OBJECT_HANDLE object);SECStatus PK11_DestroyTokenObject(PK11SlotInfo *slot,CK_OBJECT_HANDLE object);CK_OBJECT_HANDLE PK11_CopyKey(PK11SlotInfo *slot, CK_OBJECT_HANDLE srcObject);SECStatus PK11_ReadAttribute(PK11SlotInfo *slot, CK_OBJECT_HANDLE id,         CK_ATTRIBUTE_TYPE type, PRArenaPool *arena, SECItem *result);CK_ULONG PK11_ReadULongAttribute(PK11SlotInfo *slot, CK_OBJECT_HANDLE id,         CK_ATTRIBUTE_TYPE type);PK11SlotInfo *PK11_GetInternalKeySlot(void);PK11SlotInfo *PK11_GetInternalSlot(void);char * PK11_MakeString(PRArenaPool *arena,char *space,char *staticSring,								int stringLen);int PK11_MapError(CK_RV error);CK_SESSION_HANDLE PK11_GetRWSession(PK11SlotInfo *slot);void PK11_RestoreROSession(PK11SlotInfo *slot,CK_SESSION_HANDLE rwsession);PRBool PK11_RWSessionHasLock(PK11SlotInfo *slot,					 CK_SESSION_HANDLE session_handle);PK11SlotInfo *PK11_NewSlotInfo(void);SECStatus PK11_Logout(PK11SlotInfo *slot);void PK11_LogoutAll(void);void PK11_EnterSlotMonitor(PK11SlotInfo *);void PK11_ExitSlotMonitor(PK11SlotInfo *);void PK11_CleanKeyList(PK11SlotInfo *slot);/************************************************************ *  Slot Password Management ************************************************************/void PK11_SetSlotPWValues(PK11SlotInfo *slot,int askpw, int timeout);void PK11_GetSlotPWValues(PK11SlotInfo *slot,int *askpw, int *timeout);SECStatus PK11_CheckSSOPassword(PK11SlotInfo *slot, char *ssopw);SECStatus PK11_CheckUserPassword(PK11SlotInfo *slot,char *pw);SECStatus PK11_DoPassword(PK11SlotInfo *slot, PRBool loadCerts, void *wincx);PRBool PK11_IsLoggedIn(PK11SlotInfo *slot, void *wincx);SECStatus PK11_VerifyPW(PK11SlotInfo *slot,char *pw);SECStatus PK11_InitPin(PK11SlotInfo *slot,char *ssopw, char *pk11_userpwd);SECStatus PK11_ChangePW(PK11SlotInfo *slot,char *oldpw, char *newpw);void PK11_HandlePasswordCheck(PK11SlotInfo *slot,void *wincx);void PK11_SetPasswordFunc(PK11PasswordFunc func);void PK11_SetVerifyPasswordFunc(PK11VerifyPasswordFunc func);void PK11_SetIsLoggedInFunc(PK11IsLoggedInFunc func);int PK11_GetMinimumPwdLength(PK11SlotInfo *slot);SECStatus PK11_ResetToken(PK11SlotInfo *slot, char *sso_pwd);/************************************************************ * Manage the built-In Slot Lists ************************************************************/SECStatus PK11_InitSlotLists(void);PK11SlotList *PK11_GetSlotList(CK_MECHANISM_TYPE type);void PK11_LoadSlotList(PK11SlotInfo *slot, PK11PreSlotInfo *psi, int count);void PK11_ClearSlotList(PK11SlotInfo *slot);/****************************************************************** *           Slot initialization ******************************************************************/PRBool PK11_VerifyMechanism(PK11SlotInfo *slot,PK11SlotInfo *intern,  CK_MECHANISM_TYPE mech, SECItem *data, SECItem *iv);PRBool PK11_VerifySlotMechanisms(PK11SlotInfo *slot);SECStatus pk11_CheckVerifyTest(PK11SlotInfo *slot);SECStatus PK11_InitToken(PK11SlotInfo *slot, PRBool loadCerts);SECStatus PK11_Authenticate(PK11SlotInfo *slot, PRBool loadCerts, void *wincx);void PK11_InitSlot(SECMODModule *mod,CK_SLOT_ID slotID,PK11SlotInfo *slot);/****************************************************************** *           Slot info functions ******************************************************************/PK11SlotInfo *PK11_FindSlotByName(char *name);PK11SlotInfo *PK11_FindSlotBySerial(char *serial);PRBool PK11_IsReadOnly(PK11SlotInfo *slot);PRBool PK11_IsInternal(PK11SlotInfo *slot);char * PK11_GetTokenName(PK11SlotInfo *slot);char * PK11_GetSlotName(PK11SlotInfo *slot);PRBool PK11_NeedLogin(PK11SlotInfo *slot);PRBool PK11_IsFriendly(PK11SlotInfo *slot);PRBool PK11_IsHW(PK11SlotInfo *slot);PRBool PK11_NeedUserInit(PK11SlotInfo *slot);int PK11_GetSlotSeries(PK11SlotInfo *slot);int PK11_GetCurrentWrapIndex(PK11SlotInfo *slot);unsigned long PK11_GetDefaultFlags(PK11SlotInfo *slot);CK_SLOT_ID PK11_GetSlotID(PK11SlotInfo *slot);SECMODModuleID PK11_GetModuleID(PK11SlotInfo *slot);SECStatus PK11_GetSlotInfo(PK11SlotInfo *slot, CK_SLOT_INFO *info);SECStatus PK11_GetTokenInfo(PK11SlotInfo *slot, CK_TOKEN_INFO *info);PRBool PK11_IsDisabled(PK11SlotInfo *slot);PRBool PK11_HasRootCerts(PK11SlotInfo *slot);PK11DisableReasons PK11_GetDisabledReason(PK11SlotInfo *slot);/* Prevents the slot from being used, and set disable reason to user-disable *//* NOTE: Mechanisms that were ON continue to stay ON *//*       Therefore, when the slot is enabled, it will remember *//*       what mechanisms needs to be turned on */PRBool PK11_UserDisableSlot(PK11SlotInfo *slot);/* Allow all mechanisms that are ON before UserDisableSlot() *//* was called to be available again */PRBool PK11_UserEnableSlot(PK11SlotInfo *slot);PRBool PK11_NeedPWInit(void);PRBool PK11_NeedPWInitForSlot(PK11SlotInfo *slot);PRBool PK11_TokenExists(CK_MECHANISM_TYPE);SECStatus PK11_GetModInfo(SECMODModule *mod, CK_INFO *info);PRBool PK11_IsFIPS(void);SECMODModule *PK11_GetModule(PK11SlotInfo *slot);/********************************************************************* *            Slot mapping utility functions. *********************************************************************/PRBool PK11_IsPresent(PK11SlotInfo *slot);PRBool PK11_DoesMechanism(PK11SlotInfo *slot, CK_MECHANISM_TYPE type);PK11SlotList * PK11_GetAllTokens(CK_MECHANISM_TYPE type,PRBool needRW,					PRBool loadCerts, void *wincx);PK11SlotList * PK11_GetPrivateKeyTokens(CK_MECHANISM_TYPE type,						PRBool needRW,void *wincx);PK11SlotInfo *PK11_GetBestSlotMultiple(CK_MECHANISM_TYPE *type, int count,							void *wincx);PK11SlotInfo *PK11_GetBestSlot(CK_MECHANISM_TYPE type, void *wincx);CK_MECHANISM_TYPE PK11_GetBestWrapMechanism(PK11SlotInfo *slot);int PK11_GetBestKeyLength(PK11SlotInfo *slot, CK_MECHANISM_TYPE type);/********************************************************************* *       Mechanism Mapping functions *********************************************************************/void PK11_AddMechanismEntry(CK_MECHANISM_TYPE type, CK_KEY_TYPE key,		 	CK_MECHANISM_TYPE keygen, int ivLen, int blocksize);CK_MECHANISM_TYPE PK11_GetKeyType(CK_MECHANISM_TYPE type,unsigned long len);CK_MECHANISM_TYPE PK11_GetKeyGen(CK_MECHANISM_TYPE type);int PK11_GetBlockSize(CK_MECHANISM_TYPE type,SECItem *params);int PK11_GetIVLength(CK_MECHANISM_TYPE type);SECItem *PK11_ParamFromIV(CK_MECHANISM_TYPE type,SECItem *iv);unsigned char *PK11_IVFromParam(CK_MECHANISM_TYPE type,SECItem *param,int *len);SECItem * PK11_BlockData(SECItem *data,unsigned long size);/* PKCS #11 to DER mapping functions */SECItem *PK11_ParamFromAlgid(SECAlgorithmID *algid);SECItem *PK11_GenerateNewParam(CK_MECHANISM_TYPE, PK11SymKey *);CK_MECHANISM_TYPE PK11_AlgtagToMechanism(SECOidTag algTag);SECOidTag PK11_MechanismToAlgtag(CK_MECHANISM_TYPE type);SECOidTag PK11_FortezzaMapSig(SECOidTag algTag);SECStatus PK11_ParamToAlgid(SECOidTag algtag, SECItem *param,                                   PRArenaPool *arena, SECAlgorithmID *algid);SECStatus PK11_SeedRandom(PK11SlotInfo *,unsigned char *data,int len);SECStatus PK11_RandomUpdate(void *data, size_t bytes);SECStatus PK11_GenerateRandom(unsigned char *data,int len);CK_RV PK11_MapPBEMechanismToCryptoMechanism(CK_MECHANISM_PTR pPBEMechanism,					    CK_MECHANISM_PTR pCryptoMechanism,					    SECItem *pbe_pwd, PRBool bad3DES);CK_MECHANISM_TYPE PK11_GetPadMechanism(CK_MECHANISM_TYPE);/********************************************************************** *                   Symetric, Public, and Private Keys  **********************************************************************/PK11SymKey *PK11_CreateSymKey(PK11SlotInfo *slot, 					CK_MECHANISM_TYPE type, void *wincx);void PK11_FreeSymKey(PK11SymKey *key);PK11SymKey *PK11_ReferenceSymKey(PK11SymKey *symKey);

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?