📄 dkcryp32.h
字号:
// 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 + -