Initializes a message-digesting operation.
CK_MECHANISM_PTR pMechanism )
{
int32_t lMbedTLSResult = 0;
if( pMechanism == NULL )
{
LogError( (
"Failed to initialize digest operation. Mechanism pointer "
"was NULL." ) );
xResult = CKR_ARGUMENTS_BAD;
}
if( xResult == CKR_OK )
{
{
LogError( (
"Failed to initialize digest operation. An operation "
"was already active." ) );
xResult = CKR_OPERATION_ACTIVE;
}
}
if( xResult == CKR_OK )
{
if( pMechanism->mechanism != CKM_SHA256 )
{
LogError( (
"Failed to initialize digest operation. Currently only "
"the CKM_SHA256 mechanism is supported." ) );
xResult = CKR_MECHANISM_INVALID;
}
}
if( xResult == CKR_OK )
{
lMbedTLSResult = mbedtls_sha256_starts_ret( &pxSession->
xSHA256Context, 0 );
if( 0 != lMbedTLSResult )
{
LogError( (
"Failed to initialize digest operation. "
"mbedtls_sha256_starts_ret failed with: mbed TLS error = %s : %s.",
xResult = CKR_FUNCTION_FAILED;
}
else
{
}
}
return xResult;
}
- See also
- C_DigestUpdate(), C_DigestFinal()
- Note
- Digest parameters are shared by a session. Calling C_DigestInit(), C_DigestUpdate(), and C_DigestFinal() with the same session across different tasks may lead to unexpected results.
- Parameters
-
[in] | hSession | Handle of a valid PKCS #11 session. |
[in] | pMechanism | Digesting mechanism. This port only supports the mechanism CKM_SHA256. |
- Returns
- CKR_OK if successful.