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 ) 
  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