eHSM PKCS11 Reference

Last updated January 18, 2019

The eHSM implements the PKCS#11 specification v2.4.

This document specifies the default values and algorithms supported by the eHSM.

PKCS#11 object classes supported:

  • CKO_DATA
  • CKO_CERTIFICATE
  • CKO_PRIVATE_KEY
  • CKO_PUBLIC_KEY
  • CKO_SECRET_KEY

Default PKCS#11 Object Attributes

Attribute Default Comments
CK_TOKEN false By default an object will be stored in volatile session data.
CKA_PRIVATE true By default a logged in session is required.
CKA_DESTROYABLE true By default an object can be deleted.
CKA_COPYABLE true By default an object can be copied.
CKA_MODIFIABLE true By default object attributes can be modified.

Default PKCS#11 Key Attributes

Besides the default object attributes set above, the following default values are specific to key objects

Attribute Default Comments
CKA_ALWAYS_AUTHENTICATE false By default authentication is only required for the session, not each cryptographic operation.
CKA_EXTRACTABLE false By default a key is not extractable.
CKA_DERIVE false By default the key cannot be used for key derivation.
CKA_SENSITIVE true By default a key is sensitive and cannot be read.
CKA_DECRYPT true By default a private key can be used for decryption.
CKA_SIGN true By default a private key can be used for signing.
CKA_VERIFY true By default a public key can be used for verification.
CKA_UNWRAP true By default a key can be used for unwrapping.
CKA_WRAP false By default a key can not be used for wrapping.

Implemented PKCS#11 Functions

Note: all cryptographic operations are implemented on the eHSM. For performance reasons it might be faster for users to perform C_Digest and public key verifications (C_Verify) in software.

Function Name Comments
C_Initialize
C_Finalize
C_GetInfo
C_GetFunctionList
C_GetSlotList
C_GetSlotInfo
C_GetTokenInfo
C_GetMechanismList
C_GetMechanismInfo
C_InitToken
C_InitPIN
C_SetPIN
C_OpenSession
C_CloseSession
C_CloseAllSessions
C_GetSessionInfo
C_Login
C_Logout
C_CreateObject
C_CopyObject
C_DestroyObject
C_GetObjectSize
C_GetAttributeValue
C_SetAttributeValue
C_FindObjectsInit
C_FindObjects
C_FindObjectsFinal
C_EncryptInit
C_Encrypt
C_EncryptUpdate
C_EncryptFinal
C_DecryptInit
C_Decrypt
C_DecryptUpdate
C_DecryptFinal
C_DigestInit
C_DigestUpdate
C_DigestKey
C_DigestFinal
C_SignInit
C_Sign
C_SignUpdate
C_SignFinal
C_VerifyInit
C_Verify
C_VerifyUpdate
C_VerifyFinal
C_GenerateKey
C_GenerateKeyPair
C_WrapKey
C_UnwrapKey
C_DeriveKey
C_SeedRandom
C_GenerateRandom
C_GetFunctionStatus
C_CancelFunction
C_WaitForSlotEvent

Subscribe to receive updates

* indicates required