📄 pkcs11t.h
字号:
#ifndef _PKCS11T_H_#define _PKCS11T_H_ 1/* an unsigned 8-bit value */typedef unsigned char CK_BYTE;/* an unsigned 8-bit character */typedef CK_BYTE CK_CHAR;/* a BYTE-sized Boolean flag */typedef CK_BYTE CK_BBOOL;/* an unsigned value, at least 32 bits long */typedef unsigned long int CK_ULONG;/* a signed value, the same size as a CK_ULONG *//* CK_LONG is new for v2.0 */typedef long int CK_LONG;/* at least 32 bits, each bit is a Boolean flag */typedef CK_ULONG CK_FLAGS;/* these data types are platform/implementation-dependent. */#if defined(WINDOWS) #if defined(_WIN32) /* win32 */#define CK_ENTRY __declspec( dllexport )#define CK_PTR *#ifndef NULL_PTR#define NULL_PTR 0#endif#pragma pack(push, cryptoki, 1)#else /* win16 */#define CK_ENTRY _export _far _pascal#define CK_PTR far *#ifndef NULL_PTR#define NULL_PTR 0#endif#pragma pack(push, cryptoki, 1)#endif#else /* not windows */#define CK_ENTRY#define CK_PTR *#ifndef NULL_PTR#define NULL_PTR 0#endif#endiftypedef CK_BYTE CK_PTR CK_BYTE_PTR; /* Pointer to a CK_BYTE */typedef CK_CHAR CK_PTR CK_CHAR_PTR; /* Pointer to a CK_CHAR */typedef CK_ULONG CK_PTR CK_ULONG_PTR; /* Pointer to a CK_ULONG */typedef void CK_PTR CK_VOID_PTR; /* Pointer to a void */typedef struct CK_VERSION { CK_BYTE major; /* integer portion of the version number */ CK_BYTE minor; /* hundredths portion of the version number */} CK_VERSION;typedef CK_VERSION CK_PTR CK_VERSION_PTR; /* points to a CK_VERSION */typedef struct CK_INFO { CK_VERSION cryptokiVersion; /* Cryptoki interface version number */ CK_CHAR manufacturerID[32]; /* blank padded */ CK_FLAGS flags; /* must be zero */ /* libraryDescription and libraryVersion are new for v2.0 */ CK_CHAR libraryDescription[32]; /* blank padded */ CK_VERSION libraryVersion; /* version of library */} CK_INFO;typedef CK_INFO CK_PTR CK_INFO_PTR; /* points to a CK_INFO structure *//* CK_NOTIFICATION enumerates the types of notifications * that Cryptoki provides to an application. *//* CK_NOTIFICATION has been changed from an enum to a CK_ULONG for v2.0 */typedef CK_ULONG CK_NOTIFICATION;#define CKN_SURRENDER 0#define CKN_COMPLETE 1#define CKN_DEVICE_REMOVED 2/* CKN_TOKEN_INSERTION is new to v2.0 */#define CKN_TOKEN_INSERTION 3typedef CK_ULONG CK_SLOT_ID;/* CK_SLOT_ID_PTR points to a CK_SLOT_ID. */typedef CK_SLOT_ID CK_PTR CK_SLOT_ID_PTR;/* CK_SLOT_INFO provides information about a slot. */typedef struct CK_SLOT_INFO { CK_CHAR slotDescription[64]; /* blank padded */ CK_CHAR manufacturerID[32]; /* blank padded */ CK_FLAGS flags; /* hardwareVersion and firmwareVersion are new for v2.0 */ CK_VERSION hardwareVersion; /* version of hardware */ CK_VERSION firmwareVersion; /* version of firmware */} CK_SLOT_INFO;/* flags: bit flags that provide capabilities of the slot. * Bit Flag Mask Meaning */#define CKF_TOKEN_PRESENT 0x00000001 /* a token is present in the slot */#define CKF_REMOVABLE_DEVICE 0x00000002 /* slot supports removable devices*/#define CKF_HW_SLOT 0x00000004 /* a hardware slot, not software *//* CK_SLOT_INFO_PTR points to a CK_SLOT_INFO. */typedef CK_SLOT_INFO CK_PTR CK_SLOT_INFO_PTR;/* CK_TOKEN_INFO provides information about a token. */typedef struct CK_TOKEN_INFO { CK_CHAR label[32]; /* blank padded */ CK_CHAR manufacturerID[32]; /* blank padded */ CK_CHAR model[16]; /* blank padded */ CK_CHAR serialNumber[16]; /* blank padded */ CK_FLAGS flags; /* see below */ /* ulMaxSessionCount, ulSessionCount, ulMaxRwSessionCount, * ulRwSessionCount, ulMaxPinLen, and ulMinPinLen have all been * changed from CK_USHORT to CK_ULONG for v2.0 */ CK_ULONG ulMaxSessionCount; /* max open sessions */ CK_ULONG ulSessionCount; /* sessions currently open */ CK_ULONG ulMaxRwSessionCount; /* max R/W sessions */ CK_ULONG ulRwSessionCount; /* R/W sessions currently open */ CK_ULONG ulMaxPinLen; /* in bytes */ CK_ULONG ulMinPinLen; /* in bytes */ CK_ULONG ulTotalPublicMemory; /* in bytes */ CK_ULONG ulFreePublicMemory; /* in bytes */ CK_ULONG ulTotalPrivateMemory; /* in bytes */ CK_ULONG ulFreePrivateMemory; /* in bytes */ /* hardwareVersion, firmwareVersion, and time are new for v2.0 */ CK_VERSION hardwareVersion; /* version of hardware */ CK_VERSION firmwareVersion; /* version of firmware */ CK_CHAR utcTime[16]; /* time */} CK_TOKEN_INFO;/* The flags parameter is defined as follows: * Bit Flag Mask Meaning */#define CKF_RNG 0x00000001 /* has random # generator */#define CKF_WRITE_PROTECTED 0x00000002 /* token write-protected */#define CKF_LOGIN_REQUIRED 0x00000004 /* a user must log in */#define CKF_USER_PIN_INITIALIZED 0x00000008 /* normal user's PIN set */#define CKF_EXCLUSIVE_EXISTS 0x00000010 /* exclusive session exists *//* CKF_RESTORE_KEY_NOT_NEEDED is new for v2.0. If it is set, then that * means that *every* time the state of cryptographic operations of a * session is successfully saved, all keys needed to continue those * operations are stored in the state. */#define CKF_RESTORE_KEY_NOT_NEEDED 0x00000020 /* key always in saved state *//* CKF_CLOCK_ON_TOKEN is new for v2.0. If it is set, then that means that *//* the token has some sort of clock. The time on that clock is returned in *//* the token info structure. */#define CKF_CLOCK_ON_TOKEN 0x00000040 /* token has a clock *//* CKF_SUPPORTS_PARALLEL is new for v2.0 */#define CKF_SUPPORTS_PARALLEL 0x00000080 /* has parallel sessions *//* CKF_PROTECTED_AUTHENTICATION_PATH is new for v2.0. If it is true, * that means that there is some way for the user to login without * sending a PIN through the Cryptoki library itself. */#define CKF_PROTECTED_AUTHENTICATION_PATH 0x00000100 /* protected path *//* CKF_DUAL_CRYPTO_OPERATIONS is new for v2.0. If it is true, that * means that a single session with the token can perform dual * simultaneous cryptographic operations (digest and encrypt; * decrypt and digest; sign and encrypt; and decrypt and sign) */#define CKF_DUAL_CRYPTO_OPERATIONS 0x00000200 /* dual crypto operations *//* CK_TOKEN_INFO_PTR points to a CK_TOKEN_INFO. */typedef CK_TOKEN_INFO CK_PTR CK_TOKEN_INFO_PTR;/* CK_SESSION_HANDLE is a Cryptoki-assigned value that identifies a session. */typedef CK_ULONG CK_SESSION_HANDLE;/* CK_SESSION_HANDLE_PTR points to a CK_SESSION_HANDLE. */typedef CK_SESSION_HANDLE CK_PTR CK_SESSION_HANDLE_PTR; /* CK_USER_TYPE enumerates the types of Cryptoki users *//* CK_USER_TYPE has been changed from an enum to a CK_ULONG for v2.0 */typedef CK_ULONG CK_USER_TYPE;/* Security Officer */#define CKU_SO 0/* Normal user */#define CKU_USER 1/* CK_STATE enumerates the session states *//* CK_STATE has been changed from an enum to a CK_ULONG for v2.0 */typedef CK_ULONG CK_STATE;#define CKS_RO_PUBLIC_SESSION 0#define CKS_RO_USER_FUNCTIONS 1#define CKS_RW_PUBLIC_SESSION 2#define CKS_RW_USER_FUNCTIONS 3#define CKS_RW_SO_FUNCTIONS 4/* CK_SESSION_INFO provides information about a session. */typedef struct CK_SESSION_INFO { CK_SLOT_ID slotID; CK_STATE state; CK_FLAGS flags; /* see below */ /* ulDeviceError was changed from CK_USHORT to CK_ULONG for v2.0 */ CK_ULONG ulDeviceError; /* device-dependent error code */} CK_SESSION_INFO;/* The flags are defined in the following table: * Bit Flag Mask Meaning */#define CKF_EXCLUSIVE_SESSION 0x00000001 /* session is exclusive */#define CKF_RW_SESSION 0x00000002 /* session is read/write */#define CKF_SERIAL_SESSION 0x00000004 /* doesn't support parallel *//* CKF_INSERTION_CALLBACK is new for v2.0. If it is set in the * flags supplied to a C_OpenSession call, then instead of actually * opening a session, the call is a request to get a callback when * the token is inserted. */#define CKF_INSERTION_CALLBACK 0x00000008 /* app. gets insertion notice *//* CK_SESSION_INFO_PTR points to a CK_SESSION_INFO. */typedef CK_SESSION_INFO CK_PTR CK_SESSION_INFO_PTR;/* CK_OBJECT_HANDLE is a token-specific identifier for an object. */typedef CK_ULONG CK_OBJECT_HANDLE;/* CK_OBJECT_HANDLE_PTR points to a CK_OBJECT_HANDLE. */typedef CK_OBJECT_HANDLE CK_PTR CK_OBJECT_HANDLE_PTR;/* CK_OBJECT_CLASS is a value that identifies the classes (or types) * of objects that Cryptoki recognizes. It is defined as follows: *//* CK_OBJECT_CLASS was changed from CK_USHORT to CK_ULONG for v2.0 */typedef CK_ULONG CK_OBJECT_CLASS;/* The following classes of objects are defined: */#define CKO_DATA 0x00000000#define CKO_CERTIFICATE 0x00000001#define CKO_PUBLIC_KEY 0x00000002#define CKO_PRIVATE_KEY 0x00000003#define CKO_SECRET_KEY 0x00000004#define CKO_VENDOR_DEFINED 0x80000000/* CK_OBJECT_CLASS_PTR points to a CK_OBJECT_CLASS structure. */typedef CK_OBJECT_CLASS CK_PTR CK_OBJECT_CLASS_PTR;/* CK_KEY_TYPE is a value that identifies a key type. *//* CK_KEY_TYPE was changed from CK_USHORT to CK_ULONG for v2.0 */typedef CK_ULONG CK_KEY_TYPE;/* the following key types are defined: */#define CKK_RSA 0x00000000#define CKK_DSA 0x00000001#define CKK_DH 0x00000002/* CKK_ECDSA, CKK_MAYFLY, and CKK_KEA are new for v2.0 */#define CKK_ECDSA 0x00000003#define CKK_MAYFLY 0x00000004#define CKK_KEA 0x00000005#define CKK_GENERIC_SECRET 0x00000010#define CKK_RC2 0x00000011#define CKK_RC4 0x00000012#define CKK_DES 0x00000013#define CKK_DES2 0x00000014#define CKK_DES3 0x00000015/* all these key types are new for v2.0 */#define CKK_CAST 0x00000016#define CKK_CAST3 0x00000017#define CKK_CAST5 0x00000018#define CKK_RC5 0x00000019#define CKK_IDEA 0x0000001A#define CKK_SKIPJACK 0x0000001B#define CKK_BATON 0x0000001C#define CKK_JUNIPER 0x0000001D#define CKK_CDMF 0x0000001E#define CKK_VENDOR_DEFINED 0x80000000/* CK_CERTIFICATE_TYPE is a value that identifies a certificate type. *//* CK_CERTIFICATE_TYPE was changed from CK_USHORT to CK_ULONG for v2.0 */typedef CK_ULONG CK_CERTIFICATE_TYPE;/* The following certificate types are defined: */#define CKC_X_509 0x00000000#define CKC_VENDOR_DEFINED 0x80000000/* CK_ATTRIBUTE_TYPE is a value that identifies an attribute type. *//* CK_ATTRIBUTE_TYPE was changed from CK_USHORT to CK_ULONG for v2.0 */typedef CK_ULONG CK_ATTRIBUTE_TYPE;/* The following attribute types are defined: */#define CKA_CLASS 0x00000000#define CKA_TOKEN 0x00000001#define CKA_PRIVATE 0x00000002#define CKA_LABEL 0x00000003#define CKA_APPLICATION 0x00000010#define CKA_VALUE 0x00000011#define CKA_CERTIFICATE_TYPE 0x00000080#define CKA_ISSUER 0x00000081#define CKA_SERIAL_NUMBER 0x00000082#define CKA_KEY_TYPE 0x00000100#define CKA_SUBJECT 0x00000101#define CKA_ID 0x00000102#define CKA_SENSITIVE 0x00000103#define CKA_ENCRYPT 0x00000104#define CKA_DECRYPT 0x00000105#define CKA_WRAP 0x00000106#define CKA_UNWRAP 0x00000107
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -