⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dkcryp32.h

📁 可以实现对邮件的加密解密以及签名
💻 H
📖 第 1 页 / 共 2 页
字号:
// Actual key lengths are multiplier * 256.

//

enum {keyMultiplier = 256};

typedef struct KeyLength

{

	CK_BYTE dsaSignature;			// DSA Signature

	CK_BYTE rsaSignature;			// RSA Signature

	CK_BYTE rsaExchange;			// RSA Exchange

	CK_BYTE reserved;				// reserved for future use

} KeyLength;



// Datakey token configuration information

//

typedef struct DatakeyInfo

{

	CK_CHAR serialNumber[8];		// serial number

	CK_CHAR	osVersion[16];			// chip OS version

	CK_CHAR vendor[14];				// vendor

	CK_CHAR manufacturingDate[8];	// manufacturing date

	CK_BYTE dkisMajor;				// major version number

	CK_BYTE dkisMinor;				// minor version number

	CK_BYTE maxPinLength;			// maximum PIN length

	CK_BYTE export;					// TRUE if export version

	CK_BYTE reserved[16];			// reserved for future use



} DatakeyInfo;



// Datakey security policy information

//

typedef struct SecurityPolicyInfo

{

	CK_BYTE ckMajor;				// cryptoki major version number

	CK_BYTE ckMinor;				// cryptoki minor version number

	CK_BYTE spifMajor;				// SPIF major version number

	CK_BYTE spifMinor;				// SPIF minor version number

	CK_BYTE soapMajor;				// SO app major version number

	CK_BYTE soapMinor;				// SO app minor version number

	CK_BYTE maxLoginAttempts;		// maximum login attempts

	CK_BYTE minPinLength;			// minimum pin length

	CK_BYTE pinTimer;				// number of minutes PIN is valid

	KeyLength algid;				// key length multiplier (x256)

	CK_BYTE reserved[37];			// reserved for future use

} SecurityPolicyInfo;



// Note that the 330 chip has a different configuration file format. When the 330

// code is added, Hazem may want to add a structure to work with both chips.

//

//	Dkccos Configuration file format.

//

typedef struct ConfigFile

{

	CK_BYTE rsaPrivEnableSize;

	CK_BYTE rsaSignEnableSize;

	CK_BYTE dsaEnableSize;

	CK_BYTE dhEnableSize[2];

	CK_BYTE pubKeyFormat;

	CK_BYTE symKeyEnable;

	CK_BYTE soAuth;

	CK_BYTE userAuth;

	CK_BYTE exfEnable[2];

	CK_BYTE idleAllow ;

	CK_BYTE RFU[4];

	CK_BYTE configurationMask[16];

} ConfigFile;

// Structure of data in Dkccos GetStatus response. 

//

typedef struct DkccosStatus

{

	CK_BYTE cardState;

	CK_BYTE remFileSpace[2];

	CK_BYTE firmwareVersion[2];

	CK_BYTE exfStatus;

	CK_BYTE exfNumber[2];

	CK_BYTE errorStatus;

	CK_BYTE RFU[4];

	ConfigFile configData;

} DkccosStatus;





//

// PIN Types

//

#define	CK_PIN_ASCII	0

#define CK_PIN_BINARY	1

#define CK_PIN_BCD		2

/*

typedef enum CK_PIN_TYPE

{

	CK_PIN_ASCII,		// PIN format is ascii, i.e. 1234 = 0x31 0x32 0x33 0x34

	CK_PIN_BINARY,		// PIN format is bin, i.e. 1234 = 0x01 0x02 0x03 0x04

	CK_PIN_BCD			// PIN format is BCD, i.e. 1234 = 0x12 0x34

} CK_PIN_TYPE;

*/

// User Information

//

typedef struct UserInfo

{

	CK_CHAR label[32];			// same as label parameter to C_InitToken

	CK_BYTE pinTimer;			// upper limit is DatakeyInfo.pinTimer

	CK_BYTE pinType;			// Format of pin stored on token

	CK_BYTE reserved[32];		// reserved for future use

} UserInfo;



#ifdef __cplusplus

extern "C"

{

#endif // __cplusplus



// The Cryptoki interface -----------------------------------------------------

//



#if CRYPTOKI_VERSION < 2



	// General purpose -----------------

	//

	CK_RV CK_ENTRY C_Initialize(CK_VOID_PTR pReserved);

	CK_RV CK_ENTRY C_Finalize(CK_VOID_PTR pReserved);

	CK_RV CK_ENTRY C_GetInfo(CK_INFO_PTR pInfo);



	// Slot and token management -------

	//

	CK_RV CK_ENTRY C_GetSlotList(

		CK_BBOOL tokenPresent,

		CK_SLOT_ID_PTR pSlotList,

		CK_USHORT_PTR pusCount);



	CK_RV CK_ENTRY C_GetSlotInfo(

		CK_SLOT_ID slotID,

		CK_SLOT_INFO_PTR pInfo);



	CK_RV CK_ENTRY C_GetTokenInfo(

		CK_SLOT_ID slotID,

		CK_TOKEN_INFO_PTR pInfo);



	CK_RV CK_ENTRY C_GetMechanismList(

		CK_SLOT_ID slotID,

		CK_MECHANISM_TYPE_PTR pMechanismList,

		CK_USHORT_PTR pusCount);



	CK_RV CK_ENTRY C_GetMechanismInfo(

		CK_SLOT_ID slotID,

		CK_MECHANISM_TYPE type,

		CK_MECHANISM_INFO_PTR pInfo);



	CK_RV CK_ENTRY C_InitToken(

		CK_SLOT_ID slotID,

		CK_CHAR_PTR pPin,

		CK_USHORT usPinLen,

		CK_CHAR_PTR pLabel);



	CK_RV CK_ENTRY C_InitPIN(

		CK_SESSION_HANDLE hSession,

		CK_CHAR_PTR pPin,

		CK_USHORT usPinLen);



	CK_RV CK_ENTRY C_SetPIN(

		CK_SESSION_HANDLE hSession,

		CK_CHAR_PTR pOldPin,

		CK_USHORT usOldLen,

		CK_CHAR_PTR pNewPin,

		CK_USHORT usNewLen);



	// Session Management --------------

	//

	CK_RV CK_ENTRY C_OpenSession(

		CK_SLOT_ID slotID,

		CK_FLAGS flags,

		CK_VOID_PTR pApplication,

		Notify Notify,

		CK_SESSION_HANDLE_PTR phSession);



	CK_RV CK_ENTRY C_CloseSession(CK_SESSION_HANDLE hSession);



	CK_RV CK_ENTRY C_CloseAllSessions(CK_SLOT_ID slotID);



	CK_RV CK_ENTRY C_GetSessionInfo(

		CK_SESSION_HANDLE hSession,

		CK_SESSION_INFO_PTR pInfo);



	CK_RV CK_ENTRY C_Login(

		CK_SESSION_HANDLE hSession,

		CK_USER_TYPE userType,

		CK_CHAR_PTR pPin,

		CK_USHORT usPinLen);



	CK_RV CK_ENTRY C_Logout(CK_SESSION_HANDLE hSession);



	// Object Management ---------------

	//

	CK_RV CK_ENTRY C_CreateObject(

		CK_SESSION_HANDLE hSession,

		CK_ATTRIBUTE_PTR pTemplate,

		CK_USHORT usCount,

		CK_OBJECT_HANDLE_PTR phObject);



	CK_RV CK_ENTRY C_CopyObject(

		CK_SESSION_HANDLE hSession,

		CK_OBJECT_HANDLE hObject,

		CK_ATTRIBUTE_PTR pTemplate,

		CK_USHORT usCount,

		CK_OBJECT_HANDLE_PTR phNewObject);



	CK_RV CK_ENTRY C_DestroyObject(

		CK_SESSION_HANDLE hSession,

		CK_OBJECT_HANDLE hObject);



	CK_RV CK_ENTRY C_GetObjectSize(

		CK_SESSION_HANDLE hSession,

		CK_OBJECT_HANDLE hObject,

		CK_USHORT_PTR pusSize);



	CK_RV CK_ENTRY C_GetAttributeValue(

		CK_SESSION_HANDLE hSession,

		CK_OBJECT_HANDLE hObject,

		CK_ATTRIBUTE_PTR pTemplate,

		CK_USHORT usCount);



	CK_RV CK_ENTRY C_SetAttributeValue(

		CK_SESSION_HANDLE hSession,

		CK_OBJECT_HANDLE hObject,

		CK_ATTRIBUTE_PTR pTemplate,

		CK_USHORT usCount);



	CK_RV CK_ENTRY C_FindObjectsInit(

		CK_SESSION_HANDLE hSession,

		CK_ATTRIBUTE_PTR pTemplate,

		CK_USHORT usCount);



	CK_RV CK_ENTRY C_FindObjects(

		CK_SESSION_HANDLE hSession,

		CK_OBJECT_HANDLE_PTR phObject,

		CK_USHORT usMaxObjectCount,

		CK_USHORT_PTR pusObjectCount);



	// Encryption and decryption -------

	//

	CK_RV CK_ENTRY C_EncryptInit(

		CK_SESSION_HANDLE hSession,

		CK_MECHANISM_PTR pMechanism,

		CK_OBJECT_HANDLE hKey);



	CK_RV CK_ENTRY C_Encrypt(

		CK_SESSION_HANDLE hSession,

		CK_BYTE_PTR pData,

		CK_USHORT usDataLen,

		CK_BYTE_PTR pEncryptedData,

		CK_USHORT_PTR pusEncryptedDataLen);



	CK_RV CK_ENTRY C_EncryptUpdate(

		CK_SESSION_HANDLE hSession,

		CK_BYTE_PTR pPart,

		CK_USHORT usPartLen,

		CK_BYTE_PTR pEncryptedPart,

		CK_USHORT_PTR pusEncryptedPartLen);



	CK_RV CK_ENTRY C_EncryptFinal(

		CK_SESSION_HANDLE hSession,

		CK_BYTE_PTR pLastEncryptedPart,

		CK_USHORT_PTR pusLastEncryptedPartLen);



	CK_RV CK_ENTRY C_DecryptInit(

		CK_SESSION_HANDLE hSession,

		CK_MECHANISM_PTR pMechanism,

		CK_OBJECT_HANDLE hKey);



	CK_RV CK_ENTRY C_Decrypt(

		CK_SESSION_HANDLE hSession,

		CK_BYTE_PTR pEncryptedData,

		CK_USHORT usEncryptedDataLen,

		CK_BYTE_PTR pData,

		CK_USHORT_PTR pusDataLen);



	CK_RV CK_ENTRY C_DecryptUpdate(

		CK_SESSION_HANDLE hSession,

		CK_BYTE_PTR pEncryptedPart,

		CK_USHORT usEncryptedPartLen,

		CK_BYTE_PTR pPart,

		CK_USHORT_PTR pusPartLen);



	CK_RV CK_ENTRY C_DecryptFinal(

		CK_SESSION_HANDLE hSession,

		CK_BYTE_PTR pLastPart,

		CK_USHORT_PTR pusLastPartLen);



	// Message digesting ---------------

	//

	CK_RV CK_ENTRY C_DigestInit(

		CK_SESSION_HANDLE hSession,

		CK_MECHANISM_PTR pMechanism);



	CK_RV CK_ENTRY C_Digest(

		CK_SESSION_HANDLE hSession,

		CK_BYTE_PTR pData,

		CK_USHORT usDataLen,

		CK_BYTE_PTR pDigest,

		CK_USHORT_PTR pusDigestLen);



	CK_RV CK_ENTRY C_DigestUpdate(

		CK_SESSION_HANDLE hSession,

		CK_BYTE_PTR pPart,

		CK_USHORT usPartLen);



	CK_RV CK_ENTRY C_DigestFinal(

		CK_SESSION_HANDLE hSession,

		CK_BYTE_PTR pDigest,

		CK_USHORT_PTR pusDigestLen);



	// Signature and verification ------

	//

	CK_RV CK_ENTRY C_SignInit(

		CK_SESSION_HANDLE hSession,

		CK_MECHANISM_PTR pMechanism,

		CK_OBJECT_HANDLE hKey);



	CK_RV CK_ENTRY C_Sign(

		CK_SESSION_HANDLE hSession,

		CK_BYTE_PTR pData,

		CK_USHORT usDataLen,

		CK_BYTE_PTR pSignature,

		CK_USHORT_PTR pusSignatureLen);



	CK_RV CK_ENTRY C_SignUpdate(

		CK_SESSION_HANDLE hSession,

		CK_BYTE_PTR pPart,

		CK_USHORT usPartLen);



	CK_RV CK_ENTRY C_SignFinal(

		CK_SESSION_HANDLE hSession,

		CK_BYTE_PTR pSignature,

		CK_USHORT_PTR pusSignatureLen);



	CK_RV CK_ENTRY C_SignRecoverInit(

		CK_SESSION_HANDLE hSession,

		CK_MECHANISM_PTR pMechanism,

		CK_OBJECT_HANDLE hKey);



	CK_RV CK_ENTRY C_SignRecover(

		CK_SESSION_HANDLE hSession,

		CK_BYTE_PTR pData,

		CK_USHORT usDataLen,

		CK_BYTE_PTR pSignature,

		CK_USHORT_PTR pusSignatureLen);



	CK_RV CK_ENTRY C_VerifyInit(

		CK_SESSION_HANDLE hSession,

		CK_MECHANISM_PTR pMechanism,

		CK_OBJECT_HANDLE hKey);



	CK_RV CK_ENTRY C_Verify(

		CK_SESSION_HANDLE hSession,

		CK_BYTE_PTR pData,

		CK_USHORT usDataLen,

		CK_BYTE_PTR pSignature,

		CK_USHORT usSignatureLen);



	CK_RV CK_ENTRY C_VerifyUpdate(

		CK_SESSION_HANDLE hSession,

		CK_BYTE_PTR pPart,

		CK_USHORT usPartLen);



	CK_RV CK_ENTRY C_VerifyFinal(

		CK_SESSION_HANDLE hSession,

		CK_BYTE_PTR pSignature,

		CK_USHORT signatureLen);



	CK_RV CK_ENTRY C_VerifyRecoverInit(

		CK_SESSION_HANDLE hSession,

		CK_MECHANISM_PTR pMechanism,

		CK_OBJECT_HANDLE hKey);



	CK_RV CK_ENTRY C_VerifyRecover(

		CK_SESSION_HANDLE hSession,

		CK_BYTE_PTR pSignature,

		CK_USHORT signatureLen,

		CK_BYTE_PTR pData,

		CK_USHORT_PTR pusDataLen);



	// Key Management ------------------

	//

	CK_RV CK_ENTRY C_GenerateKey(

		CK_SESSION_HANDLE hSession,

		CK_MECHANISM_PTR pMechanism,

		CK_ATTRIBUTE_PTR pTemplate,

		CK_USHORT usCount,

		CK_OBJECT_HANDLE_PTR phKey);



	CK_RV CK_ENTRY C_GenerateKeyPair(

		CK_SESSION_HANDLE hSession,

		CK_MECHANISM_PTR pMechanism,

		CK_ATTRIBUTE_PTR pPublicKeyTemplate,

		CK_USHORT usPublicKeyAttributeCount,

		CK_ATTRIBUTE_PTR pPrivateKeyTemplate,

		CK_USHORT usPrivateKeyAttributeCount,

		CK_OBJECT_HANDLE_PTR phPrivateKey,

		CK_OBJECT_HANDLE_PTR phPublicKey);



	CK_RV CK_ENTRY C_WrapKey(

		CK_SESSION_HANDLE hSession,

		CK_MECHANISM_PTR pMechanism,

		CK_OBJECT_HANDLE hWrappingKey,

		CK_OBJECT_HANDLE hKey,

		CK_BYTE_PTR pWrappedKey,

		CK_USHORT_PTR pusWrappedKeyLen);



	CK_RV CK_ENTRY C_UnwrapKey(

		CK_SESSION_HANDLE hSession,

		CK_MECHANISM_PTR pMechanism,

		CK_OBJECT_HANDLE hUnwrappingKey,

		CK_BYTE_PTR pWrappedKey,

		CK_USHORT usWrappedKeyLen,

		CK_ATTRIBUTE_PTR pTemplate,

		CK_USHORT usAttributeCount,

		CK_OBJECT_HANDLE_PTR phKey);



	CK_RV CK_ENTRY C_DeriveKey(

		CK_SESSION_HANDLE hSession,

		CK_MECHANISM_PTR pMechanism,

		CK_OBJECT_HANDLE hBaseKey,

		CK_ATTRIBUTE_PTR pTemplate,

		CK_USHORT usAttributeCount,

		CK_OBJECT_HANDLE_PTR phKey);



	// Random number generation --------

	//

	CK_RV CK_ENTRY C_SeedRandom(

		CK_SESSION_HANDLE hSession,

		CK_BYTE_PTR pSeed,

		CK_USHORT usSeedLen);



	CK_RV CK_ENTRY C_GenerateRandom(

		CK_SESSION_HANDLE hSession,

		CK_BYTE_PTR pRandomData,

		CK_USHORT usRandomLen);



	// Parallel function management ----

	//

	CK_RV CK_ENTRY C_GetFunctionStatus(CK_SESSION_HANDLE hSession);

	CK_RV CK_ENTRY C_CancelFunction(CK_SESSION_HANDLE hSession);



#endif	// CRYPTOKI_VERSION



	// Datakey extensions --------------

	//

	CK_RV CK_ENTRY D_GetSlotSN(CK_SLOT_ID slotID, BYTE *richardDale);



	CK_RV CK_ENTRY D_GetATR(CK_SESSION_HANDLE hSession, AnswerToReset *atr);



	CK_RV CK_ENTRY D_GetUIS(CK_SESSION_HANDLE hSession, UserInfo *userInfo);

	CK_RV CK_ENTRY D_SetUIS(CK_SESSION_HANDLE hSession, UserInfo *userInfo);



	CK_RV CK_ENTRY D_GetDKIS(CK_SESSION_HANDLE hSession, DatakeyInfo *datakeyInfo);



	CK_RV CK_ENTRY D_GetSPIF(CK_SESSION_HANDLE hSession,

		SecurityPolicyInfo *securityPolicyInfo);

	CK_RV CK_ENTRY D_SetSPIF(CK_SESSION_HANDLE hSession,       

		SecurityPolicyInfo *securityPolicyInfo);



	CK_RV CK_ENTRY _stdcall D_GetDkStatus(CK_SLOT_ID slotId, DkccosStatus *spinfo);



#if CRYPTOKI_VERSION > 1

	CK_RV CK_ENTRY D_GetSeed(CK_SESSION_HANDLE hSession,

		CK_BYTE_PTR seed, CK_ULONG seedSize);

	CK_RV CK_ENTRY D_GetAllAttributeValues(CK_SESSION_HANDLE hSession,CK_OBJECT_HANDLE hObject,CK_ATTRIBUTE_PTR pTemplate,CK_ULONG ulCount);

	CK_RV CK_ENTRY D_GetAttributeCount(CK_SESSION_HANDLE hSession,CK_OBJECT_HANDLE hObject,CK_ULONG& ulCount);

	CK_RV CK_ENTRY _stdcall D_ChangeConfigFile(CK_SLOT_ID slotId, ConfigFile *configfile, CK_BYTE *passphrase,CK_ULONG uspassphrase);

#else

	CK_RV CK_ENTRY D_GetSeed(CK_SESSION_HANDLE hSession,

		CK_BYTE_PTR seed, CK_USHORT seedSize);

	CK_RV CK_ENTRY D_GetAllAttributeValues(CK_SESSION_HANDLE hSession,CK_OBJECT_HANDLE hObject,CK_ATTRIBUTE_PTR pTemplate,CK_USHORT usCount);

//	CK_RV CK_ENTRY D_GetAttributeCount(CK_SESSION_HANDLE hSession,CK_OBJECT_HANDLE hObject,CK_USHORT& usCount);

	CK_RV CK_ENTRY _stdcall D_ChangeConfigFile(CK_SLOT_ID slotId, ConfigFile *configfile, CK_BYTE *passphrase,CK_USHORT uspassphrase);

#endif	// CRYPTOKI_VERSION



	void CK_ENTRY D_SetTraceMask(CK_ULONG mask);



#ifdef __cplusplus

}

#endif // __cplusplus



#if CRYPTOKI_VERSION < 2

#ifdef WIN32

#pragma pack(pop,cryptoki)

#endif 

#endif



#endif	// CRYPTOKI_H

⌨️ 快捷键说明

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