Obtains information about a particular mechanism.
CK_MECHANISM_TYPE type,
CK_MECHANISM_INFO_PTR pInfo )
{
CK_RV xResult = CKR_MECHANISM_INVALID;
struct CryptoMechanisms
{
CK_MECHANISM_TYPE xType;
CK_MECHANISM_INFO xInfo;
}
pxSupportedMechanisms[] =
{
{ CKM_RSA_PKCS, { 2048, 2048, CKF_SIGN } },
{ CKM_RSA_X_509, { 2048, 2048, CKF_VERIFY } },
#ifndef pkcs11configSUPPRESS_ECDSA_MECHANISM
{ CKM_ECDSA, { 256, 256, CKF_SIGN | CKF_VERIFY } },
{ CKM_EC_KEY_PAIR_GEN, { 256, 256, CKF_GENERATE_KEY_PAIR } },
#endif
{ CKM_SHA256, { 0, 0, CKF_DIGEST } }
};
uint32_t ulMech = 0;
( void ) slotID;
if( pInfo == NULL )
{
xResult = CKR_ARGUMENTS_BAD;
LogError( (
"Failed to get mechanism info. pInfo was NULL. Expected a "
"pointer to a valid CK_MECHANISM_INFO struct." ) );
}
else
{
for( ; ulMech < sizeof( pxSupportedMechanisms ) / sizeof( pxSupportedMechanisms[ 0 ] ); ulMech++ )
{
if( pxSupportedMechanisms[ ulMech ].xType == type )
{
( void ) memcpy( pInfo, &( pxSupportedMechanisms[ ulMech ].xInfo ), sizeof( CK_MECHANISM_INFO ) );
xResult = CKR_OK;
break;
}
}
}
return xResult;
}
- Parameters
-
[in] | slotID | This parameter is unused in this port. |
[in] | type | The cryptographic capability for which support information is being queried. |
[out] | pInfo | Algorithm sizes and flags for the requested mechanism, if supported. |
- Returns
- CKR_OK if the mechanism is supported. Otherwise, CKR_MECHANISM_INVALID.