Hello.
We are developing using nrf52832 (S132 v7.0.1, SDK v17.0.0).
I'm looking at how to encrypt a string with AES CBC.
Below is the code we are considering.
static uint8_t m_key[16] = {'N', 'O', 'R', 'D', 'I', 'C', 'A', 'E', 'S', 'C', 'B', 'C', 'T', 'E', 'S', 'T'};
static char m_plain_text[NRF_CRYPTO_EXAMPLE_AES_MAX_TEXT_SIZE] =
{
"Example string to demonstrate basic usage of AES CBC mode."
};
static char m_encrypted_text[NRF_CRYPTO_EXAMPLE_AES_MAX_TEXT_SIZE];
static void crypto_test(void){
static nrf_crypto_aes_context_t cbc_encr_ctx;
static nrf_crypto_aes_context_t cbc_decr_ctx;
ret_code_t ret_val;
uint8_t iv[NRF_CRYPTO_MBEDTLS_AES_IV_SIZE]; // 16
size_t len_in;
size_t len_out;
memset(m_encrypted_text, 0, sizeof(m_encrypted_text));
memset(m_decrypted_text, 0, sizeof(m_decrypted_text));
memset(iv, 0, sizeof(iv));
len_in = strlen(m_plain_text);
len_out = sizeof(m_encrypted_text);
ret_val = nrf_crypto_init();
APP_ERROR_CHECK(ret_val);
ret_val = nrf_crypto_aes_init(&cbc_encr_ctx, &g_nrf_crypto_aes_cbc_128_info, NRF_CRYPTO_ENCRYPT);
AES_ERROR_CHECK(ret_val);
ret_val = nrf_crypto_aes_key_set(&cbc_encr_ctx, m_key);
AES_ERROR_CHECK(ret_val);
ret_val = nrf_crypto_aes_iv_set(&cbc_encr_ctx, iv);
AES_ERROR_CHECK(ret_val);
ret_val = nrf_crypto_aes_finalize(&cbc_encr_ctx,
(uint8_t *)m_plain_text,
len_in,
(uint8_t *)m_encrypted_text,
&len_out);
AES_ERROR_CHECK(ret_val);
return;
}
Currently, it works, but the strings are not encrypted and are all "0x00".
How can I solve it?
Best Regards.