corePKCS11  v3.2.0
PKCS #11 Cryptoki Library
C_DestroyObject

Destroys an object.

CK_DECLARE_FUNCTION( CK_RV, C_DestroyObject )( CK_SESSION_HANDLE hSession,
CK_OBJECT_HANDLE hObject )
{
const P11Session_t * pxSession = prvSessionPointerFromHandle( hSession );
CK_RV xResult = prvCheckValidSessionAndModule( pxSession );
CK_OBJECT_HANDLE xPalHandle = CK_INVALID_HANDLE;
CK_BYTE_PTR pcLabel = NULL;
CK_ULONG xLabelLength = 0;
prvFindObjectInListByHandle( hObject, &xPalHandle, &pcLabel, &xLabelLength );
if( xPalHandle == CK_INVALID_HANDLE )
{
xResult = CKR_OBJECT_HANDLE_INVALID;
}
if( xResult == CKR_OK )
{
xResult = PKCS11_PAL_DestroyObject( xPalHandle );
if( xResult == CKR_OK )
{
xResult = prvDeleteObjectFromList( xPalHandle );
}
else
{
LogError( ( "Failed to destroy object. PKCS11_PAL_DestroyObject failed." ) );
}
}
else
{
LogError( ( "Failed to destroy object. The session was invalid." ) );
}
return xResult;
}
Parameters
[in]hSessionHandle of a valid PKCS #11 session.
[in]hObjectHandle of the object to be destroyed.
Warning
In this implementation, if either the device public key or the device private key (labels pkcs11configLABEL_DEVICE_PUBLIC_KEY_FOR_TLS and pkcs11configLABEL_DEVICE_PRIVATE_KEY_FOR_TLS) are deleted, both keys will be destroyed.
Returns
CKR_OK if successful.
prvDeleteObjectFromList
static CK_RV prvDeleteObjectFromList(CK_OBJECT_HANDLE xPalHandle)
Removes an object from the module object list (xP11Context.xObjectList)
Definition: core_pkcs11_mbedtls.c:1100
prvFindObjectInListByHandle
static void prvFindObjectInListByHandle(CK_OBJECT_HANDLE xAppHandle, CK_OBJECT_HANDLE_PTR pxPalHandle, CK_BYTE_PTR *ppcLabel, CK_ULONG_PTR pxLabelLength)
Looks up a PKCS #11 object's label and PAL handle given an application handle.
Definition: core_pkcs11_mbedtls.c:1070
C_DestroyObject
CK_RV C_DestroyObject(CK_SESSION_HANDLE hSession, CK_OBJECT_HANDLE hObject)
Destroys an object.
Definition: core_pkcs11_mbedtls.c:2867
PKCS11_PAL_DestroyObject
CK_RV PKCS11_PAL_DestroyObject(CK_OBJECT_HANDLE xHandle)
Delete an object from NVM.
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
P11Session_t
Session structure.
Definition: core_pkcs11_mbedtls.c:286
LogError
#define LogError(message)
Macro that is called in the corePKCS11 library for logging "Error" level messages.
Definition: core_pkcs11_config_defaults.h:315