25#ifndef _CORE_PKCS11_H_
26#define _CORE_PKCS11_H_
37 #pragma pack(push, cryptoki, 1)
70#define CK_DEFINE_FUNCTION( returnType, name ) returnType name
77#define CK_DECLARE_FUNCTION( returnType, name ) returnType name
84#define CK_DECLARE_FUNCTION_POINTER( returnType, name ) returnType( CK_PTR name )
91#define CK_CALLBACK_FUNCTION( returnType, name ) returnType( CK_PTR name )
97#define pkcs11SHA256_DIGEST_LENGTH 32UL
103#define pkcs11AES_CMAC_SIGNATURE_LENGTH 16UL
111#define pkcs11ECDSA_P256_SIGNATURE_LENGTH 64UL
117#define pkcs11ECDSA_P256_KEY_BITS 256UL
123#define pkcs11RSA_PUBLIC_EXPONENT { 0x01, 0x00, 0x01 }
130#define pkcs11RSA_2048_MODULUS_BITS 2048UL
136#define pkcs11RSA_2048_SIGNATURE_LENGTH ( pkcs11RSA_2048_MODULUS_BITS / 8UL )
145#define pkcs11RSA_SIGNATURE_INPUT_LENGTH 51UL
152#define pkcs11ELLIPTIC_CURVE_NISTP256 "1.2.840.10045.3.1.7"
158#define pkcs11MAX_LABEL_LENGTH 32UL
164#define pkcs11DER_ENCODED_OID_P256 { 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x03, 0x01, 0x07 }
172#ifndef pkcs11configIMPORT_PRIVATE_KEYS_SUPPORTED
173 #define pkcs11configIMPORT_PRIVATE_KEYS_SUPPORTED 1
196#define pkcs11STUFF_APPENDED_TO_RSA_SIG { 0x30, 0x31, 0x30, 0x0d, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x01, 0x05, 0x00, 0x04, 0x20 }
201#if defined( __PASTE ) && ( defined( __CC_ARM ) || defined( __ARMCC_VERSION ) )
217typedef struct PKCS11_CertificateTemplate
254 CK_ULONG * pxSlotCount );
300 CK_ULONG ulLabelNameLen,
301 CK_OBJECT_CLASS xClass,
302 CK_OBJECT_HANDLE_PTR pxHandle );
326 uint8_t * puc51ByteHashOidBuffer );
330 #pragma pack(pop, cryptoki)
CK_RV vAppendSHA256AlgorithmIdentifierSequence(const uint8_t *puc32ByteHashedMessage, uint8_t *puc51ByteHashOidBuffer)
Appends digest algorithm sequence to SHA-256 hash for RSA signatures.
Definition: core_pkcs11.c:378
CK_RV xGetSlotList(CK_SLOT_ID **ppxSlotId, CK_ULONG *pxSlotCount)
Get a list of available PKCS #11 slots.
Definition: core_pkcs11.c:44
CK_RV xInitializePkcs11Session(CK_SESSION_HANDLE *pxSession)
Initializes the PKCS #11 module and opens a session.
Definition: core_pkcs11.c:238
CK_RV xFindObjectWithLabelAndClass(CK_SESSION_HANDLE xSession, char *pcLabelName, CK_ULONG ulLabelNameLen, CK_OBJECT_CLASS xClass, CK_OBJECT_HANDLE_PTR pxHandle)
Searches for an object with a matching label and class provided.
Definition: core_pkcs11.c:313
CK_RV xInitializePkcs11Token(void)
Initializes a PKCS #11 module and token.
Definition: core_pkcs11.c:157
CK_RV xInitializePKCS11(void)
Initializes a PKCS #11 session.
Definition: core_pkcs11.c:127
Certificate Template The object class must be the first attribute in the array.
Definition: core_pkcs11.h:218
CK_ATTRIBUTE xValue
CKA_VALUE, the DER byte array of the certificate contents.
Definition: core_pkcs11.h:222
CK_ATTRIBUTE xSubject
CKA_SUBJECT, this parameter is required by the PKCS #11 standard.
Definition: core_pkcs11.h:220
CK_ATTRIBUTE xCertificateType
CKA_CERTIFICATE_TYPE, set to CKC_X_509.
Definition: core_pkcs11.h:221
CK_ATTRIBUTE xTokenObject
CKA_TOKEN.
Definition: core_pkcs11.h:224
CK_ATTRIBUTE xObjectClass
CKA_CLASS, set to CKO_CERTIFICATE.
Definition: core_pkcs11.h:219
CK_ATTRIBUTE xLabel
CKA_LABEL.
Definition: core_pkcs11.h:223