corePKCS11  v3.2.0
PKCS #11 Cryptoki Library
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 ) )
{
LogError( ( "Failed to create object. Received a NULL template or "
"object pointer." ) );
xResult = CKR_ARGUMENTS_BAD;
}
if( xResult == CKR_OK )
{
xResult = prvGetObjectClass( pTemplate, ulCount, &xClass );
}
if( xResult == CKR_OK )
{
LogInfo( ( "Creating a 0x%0lX type object.", ( unsigned long int ) xClass ) );
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;
case CKO_SECRET_KEY:
xResult = prvCreateSecretKey( 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.
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: core_pkcs11_mbedtls.c:1982
LogInfo
#define LogInfo(message)
Macro that is called in the corePKCS11 library for logging "Info" level messages.
Definition: core_pkcs11_config_defaults.h:355
prvCreateSecretKey
static CK_RV prvCreateSecretKey(CK_ATTRIBUTE *pxTemplate, CK_ULONG ulCount, CK_OBJECT_HANDLE_PTR pxObject)
Helper function for importing secret keys using template C_CreateObject.
Definition: core_pkcs11_mbedtls.c:2716
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: core_pkcs11_mbedtls.c:470
prvCheckValidSessionAndModule
static CK_RV prvCheckValidSessionAndModule(const P11Session_t *pxSession)
Helper to check if the current session is initialized and valid.
Definition: core_pkcs11_mbedtls.c:323
CK_DECLARE_FUNCTION
#define CK_DECLARE_FUNCTION(returnType, name)
Macro for defining a PKCS #11 functions.
Definition: core_pkcs11.h:75
prvSessionPointerFromHandle
static P11Session_t * prvSessionPointerFromHandle(CK_SESSION_HANDLE xSession)
Maps an opaque caller session handle into its internal state structure.
Definition: core_pkcs11_mbedtls.c:365
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: core_pkcs11_mbedtls.c:2675
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: core_pkcs11_mbedtls.c:2798
P11Session_t
Session structure.
Definition: core_pkcs11_mbedtls.c:286
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: core_pkcs11_mbedtls.c:2626
LogError
#define LogError(message)
Macro that is called in the corePKCS11 library for logging "Error" level messages.
Definition: core_pkcs11_config_defaults.h:315