FreeRTOS: PKCS11
PKCS11 Cryptoki Library
Return to main page ↑
C_CreateObject

Creates an object.

CK_DECLARE_FUNCTION( CK_RV, C_CreateObject )( CK_SESSION_HANDLE hSession,
CK_ATTRIBUTE_PTR pTemplate,
CK_ULONG ulCount,
CK_OBJECT_HANDLE_PTR phObject )
{
CK_OBJECT_CLASS xClass = 0;
const P11Session_t * pxSession = prvSessionPointerFromHandle( hSession );
CK_RV xResult = prvCheckValidSessionAndModule( pxSession );
if( ( NULL == pTemplate ) ||
( NULL == phObject ) )
{
xResult = CKR_ARGUMENTS_BAD;
}
if( xResult == CKR_OK )
{
xResult = prvGetObjectClass( pTemplate, ulCount, &xClass );
}
if( xResult == CKR_OK )
{
switch( xClass )
{
case CKO_CERTIFICATE:
xResult = prvCreateCertificate( pTemplate, ulCount, phObject );
break;
case CKO_PRIVATE_KEY:
xResult = prvCreatePrivateKey( pTemplate, ulCount, phObject );
break;
case CKO_PUBLIC_KEY:
xResult = prvCreatePublicKey( pTemplate, ulCount, phObject );
break;
default:
xResult = CKR_ATTRIBUTE_VALUE_INVALID;
break;
}
}
return xResult;
}
Parameters
[in]hSessionHandle of a valid PKCS #11 session.
[in]pTemplateList of attributes of the object to be created.
[in]ulCountNumber of attributes in pTemplate.
[out]phObjectPointer to the location where the created object's handle will be placed.
Object Type Template Attributes
CertificateCKA_CLASS
CKA_VALUE
CKA_TOKEN
CKA_LABEL
CKA_CERTIFICATE_TYPE
CKA_VALUE
EC Private KeyCKA_CLASS
CKA_KEY_TYPE
CKA_TOKEN
CKA_LABEL
CKA_SIGN
CKA_EC_PARAMS
CKA_VALUE
EC Public KeyCKA_CLASS
CKA_KEY_TYPE
CKA_TOKEN
CKA_VERIFY
CKA_LABEL
CKA_EC_PARAMS
CKA_EC_POINT
RSA Private KeyCKA_CLASS
CKA_KEY_TYPE
CKA_TOKEN
CKA_LABEL
CKA_SIGN
CKA_MODULUS
CKA_PUBLIC_EXPONENT
CKA_PRIME_1
CKA_PRIME_2
CKA_PRIVATE_EXPONENT
CKA_EXPONENT_1
CKA_EXPONENT_2
CKA_COEFFICIENT
Returns
CKR_OK if successful. Else, see PKCS #11 specification for more information.
CK_DECLARE_FUNCTION
#define CK_DECLARE_FUNCTION(returnType, name)
Macro for defining a PKCS #11 functions.
Definition: iot_pkcs11.h:66
prvCreatePrivateKey
static CK_RV prvCreatePrivateKey(CK_ATTRIBUTE *pxTemplate, CK_ULONG ulCount, CK_OBJECT_HANDLE_PTR pxObject)
Helper function for importing private keys using template C_CreateObject.
Definition: iot_pkcs11_mbedtls.c:2314
prvGetObjectClass
static CK_RV prvGetObjectClass(const CK_ATTRIBUTE *pxTemplate, CK_ULONG ulCount, CK_OBJECT_CLASS *pxClass)
Searches a template for the CKA_CLASS attribute.
Definition: iot_pkcs11_mbedtls.c:519
prvSessionPointerFromHandle
static P11Session_t * prvSessionPointerFromHandle(CK_SESSION_HANDLE xSession)
Maps an opaque caller session handle into its internal state structure.
Definition: iot_pkcs11_mbedtls.c:287
prvCheckValidSessionAndModule
static CK_RV prvCheckValidSessionAndModule(const P11Session_t *pxSession)
Helper to check if the current session is initialized and valid.
Definition: iot_pkcs11_mbedtls.c:248
prvCreateCertificate
static CK_RV prvCreateCertificate(CK_ATTRIBUTE *pxTemplate, CK_ULONG ulCount, CK_OBJECT_HANDLE_PTR pxObject)
Helper function for parsing the templates of device certificates for C_CreateObject.
Definition: iot_pkcs11_mbedtls.c:1935
C_CreateObject
CK_RV C_CreateObject(CK_SESSION_HANDLE hSession, CK_ATTRIBUTE_PTR pTemplate, CK_ULONG ulCount, CK_OBJECT_HANDLE_PTR phObject)
Creates an object.
Definition: iot_pkcs11_mbedtls.c:2448
prvCreatePublicKey
static CK_RV prvCreatePublicKey(CK_ATTRIBUTE *pxTemplate, CK_ULONG ulCount, CK_OBJECT_HANDLE_PTR pxObject)
Helper function for importing public keys using C_CreateObject.
Definition: iot_pkcs11_mbedtls.c:2359
P11Session_t
Session structure.
Definition: iot_pkcs11_mbedtls.c:217