This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

CC310 hardware accelerated backend nrf_crypto_hash_compute query

Hi,

I've noticed that when using the CC310 hardware accelerated cryptographic backend the call to nrf_crypto_hash_compute() seems to return an error (not supported) despite using a supported hash, SHA256. This seems to be related to this check:

    if (!hash_algorithm_get(hash_info.hash_type, &hash_type))
    {
        return NRF_ERROR_NOT_SUPPORTED;
    }

The hash_algorithm_get function will always return 0 if it is successful though because NRF_SUCCESS is 0, as shown:

bool hash_algorithm_get(nrf_hash_type_t hash_type, CRYS_HASH_OperationMode_t * p_hash_mode)
{
    if (p_hash_mode == NULL)
    {
        return false;
    }

    switch (hash_type)
    {
        case NRF_CRYPTO_HASH_TYPE_MD5:
            (*p_hash_mode) = CRYS_HASH_MD5_mode;
            break;
            ...
        case NRF_CRYPTO_HASH_TYPE_SHA512:
            (*p_hash_mode) = CRYS_HASH_SHA512_mode;
            break;

        default:
            return NRF_ERROR_NOT_SUPPORTED;
    }

    return NRF_SUCCESS;
}

Should the line therefore be negated?

`

    if (hash_algorithm_get(hash_info.hash_type, &hash_type))
    {
        return NRF_ERROR_NOT_SUPPORTED;
    }

Related