23#ifndef _CORE_PKCS11_H_
24#define _CORE_PKCS11_H_
35 #pragma pack(push, cryptoki, 1)
68#define CK_DEFINE_FUNCTION( returnType, name ) returnType name
75#define CK_DECLARE_FUNCTION( returnType, name ) returnType name
82#define CK_DECLARE_FUNCTION_POINTER( returnType, name ) returnType( CK_PTR name )
89#define CK_CALLBACK_FUNCTION( returnType, name ) returnType( CK_PTR name )
95#define pkcs11SHA256_DIGEST_LENGTH 32UL
101#define pkcs11AES_CMAC_SIGNATURE_LENGTH 16UL
109#define pkcs11ECDSA_P256_SIGNATURE_LENGTH 64UL
115#define pkcs11ECDSA_P256_KEY_BITS 256UL
121#define pkcs11RSA_PUBLIC_EXPONENT { 0x01, 0x00, 0x01 }
128#define pkcs11RSA_2048_MODULUS_BITS 2048UL
134#define pkcs11RSA_2048_SIGNATURE_LENGTH ( pkcs11RSA_2048_MODULUS_BITS / 8UL )
143#define pkcs11RSA_SIGNATURE_INPUT_LENGTH 51UL
150#define pkcs11ELLIPTIC_CURVE_NISTP256 "1.2.840.10045.3.1.7"
156#define pkcs11MAX_LABEL_LENGTH 32UL
162#define pkcs11DER_ENCODED_OID_P256 { 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x03, 0x01, 0x07 }
170#ifndef pkcs11configIMPORT_PRIVATE_KEYS_SUPPORTED
171 #define pkcs11configIMPORT_PRIVATE_KEYS_SUPPORTED 1
194#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 }
199#if defined( __PASTE ) && defined( __CC_ARM )
215typedef struct PKCS11_CertificateTemplate
252 CK_ULONG * pxSlotCount );
298 CK_ULONG ulLabelNameLen,
299 CK_OBJECT_CLASS xClass,
300 CK_OBJECT_HANDLE_PTR pxHandle );
324 uint8_t * puc51ByteHashOidBuffer );
328 #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:374
CK_RV xGetSlotList(CK_SLOT_ID **ppxSlotId, CK_ULONG *pxSlotCount)
Get a list of available PKCS #11 slots.
Definition: core_pkcs11.c:70
CK_RV xInitializePkcs11Session(CK_SESSION_HANDLE *pxSession)
Initializes the PKCS #11 module and opens a session.
Definition: core_pkcs11.c:253
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:309
CK_RV xInitializePkcs11Token(void)
Initializes a PKCS #11 module and token.
Definition: core_pkcs11.c:176
CK_RV xInitializePKCS11(void)
Initializes a PKCS #11 session.
Definition: core_pkcs11.c:150
Certificate Template The object class must be the first attribute in the array.
Definition: core_pkcs11.h:216
CK_ATTRIBUTE xValue
CKA_VALUE, the DER byte array of the certificate contents.
Definition: core_pkcs11.h:220
CK_ATTRIBUTE xSubject
CKA_SUBJECT, this parameter is required by the PKCS #11 standard.
Definition: core_pkcs11.h:218
CK_ATTRIBUTE xCertificateType
CKA_CERTIFICATE_TYPE, set to CKC_X_509.
Definition: core_pkcs11.h:219
CK_ATTRIBUTE xTokenObject
CKA_TOKEN.
Definition: core_pkcs11.h:222
CK_ATTRIBUTE xObjectClass
CKA_CLASS, set to CKO_CERTIFICATE.
Definition: core_pkcs11.h:217
CK_ATTRIBUTE xLabel
CKA_LABEL.
Definition: core_pkcs11.h:221