/*
* AES-ECB block encryption
*/
-void esp_aes_encrypt( esp_aes_context *ctx,
+int esp_internal_aes_encrypt( esp_aes_context *ctx,
const unsigned char input[16],
unsigned char output[16] )
{
esp_aes_setkey_hardware(ctx, ESP_AES_ENCRYPT);
esp_aes_block(input, output);
esp_aes_release_hardware();
+ return 0;
+}
+
+void esp_aes_encrypt( esp_aes_context *ctx,
+ const unsigned char input[16],
+ unsigned char output[16] )
+{
+ esp_internal_aes_encrypt(ctx, input, output);
}
/*
* AES-ECB block decryption
*/
-void esp_aes_decrypt( esp_aes_context *ctx,
+int esp_internal_aes_decrypt( esp_aes_context *ctx,
const unsigned char input[16],
unsigned char output[16] )
{
esp_aes_setkey_hardware(ctx, ESP_AES_DECRYPT);
esp_aes_block(input, output);
esp_aes_release_hardware();
+ return 0;
+}
+
+void esp_aes_decrypt( esp_aes_context *ctx,
+ const unsigned char input[16],
+ unsigned char output[16] )
+{
+ esp_internal_aes_decrypt(ctx, input, output);
}
* \param input Plaintext block
* \param output Output (ciphertext) block
*/
-void esp_aes_encrypt( esp_aes_context *ctx, const unsigned char input[16], unsigned char output[16] );
+int esp_internal_aes_encrypt( esp_aes_context *ctx, const unsigned char input[16], unsigned char output[16] );
+
+/** Deprecated, see esp_aes_internal_encrypt */
+void esp_aes_encrypt( esp_aes_context *ctx, const unsigned char input[16], unsigned char output[16] ) __attribute__((deprecated));
/**
* \brief Internal AES block decryption function
* \param input Ciphertext block
* \param output Output (plaintext) block
*/
-void esp_aes_decrypt( esp_aes_context *ctx, const unsigned char input[16], unsigned char output[16] );
+int esp_internal_aes_decrypt( esp_aes_context *ctx, const unsigned char input[16], unsigned char output[16] );
+
+/** Deprecated, see esp_aes_internal_decrypt */
+void esp_aes_decrypt( esp_aes_context *ctx, const unsigned char input[16], unsigned char output[16] ) __attribute__((deprecated));
#ifdef __cplusplus
}
#if defined(MBEDTLS_CIPHER_MODE_CTR)
#define mbedtls_aes_crypt_ctr esp_aes_crypt_ctr
#endif
-#define mbedtls_aes_encrypt esp_aes_encrypt
-#define mbedtls_aes_decrypt esp_aes_decrypt
+#define mbedtls_internal_aes_encrypt esp_internal_aes_encrypt
+#define mbedtls_internal_aes_decrypt esp_internal_aes_decrypt
#endif /* MBEDTLS_AES_ALT */
#ifdef __cplusplus
os_memcpy(b, a, 8);
b[7] ^= n * j + i;
os_memcpy(b + 8, r, 8);
- mbedtls_aes_decrypt(&ctx, b, b);
+ ret = mbedtls_internal_aes_decrypt(&ctx, b, b);
+ if (ret != 0) {
+ break;
+ }
os_memcpy(a, b, 8);
os_memcpy(r, b + 8, 8);
r -= 8;
}
}
- return 0;
+ return ret;
}
for (i = 1; i <= n; i++) {
os_memcpy(b, a, 8);
os_memcpy(b + 8, r, 8);
- mbedtls_aes_encrypt(&ctx, b, b);
+ ret = mbedtls_internal_aes_encrypt(&ctx, b, b);
+ if (ret != 0) {
+ break;
+ }
os_memcpy(a, b, 8);
a[7] ^= n * j + i;
os_memcpy(r, b + 8, 8);
* variables.
*/
- return 0;
+ return ret;
}
for (i = 0; i < blocks; i++) {
for (j = 0; j < AES_BLOCK_SIZE; j++)
fast_ctx->u.aes.cbc[j] ^= plain[j];
- mbedtls_aes_encrypt(&(fast_ctx->u.aes.ctx_enc), fast_ctx->u.aes.cbc, fast_ctx->u.aes.cbc);
+ if (mbedtls_internal_aes_encrypt(&(fast_ctx->u.aes.ctx_enc), fast_ctx->u.aes.cbc, fast_ctx->u.aes.cbc) != 0) {
+ return -1;
+ }
os_memcpy(crypt, fast_ctx->u.aes.cbc, AES_BLOCK_SIZE);
plain += AES_BLOCK_SIZE;
crypt += AES_BLOCK_SIZE;
blocks = len / AES_BLOCK_SIZE;
for (i = 0; i < blocks; i++) {
os_memcpy(tmp, crypt, AES_BLOCK_SIZE);
- mbedtls_aes_decrypt(&(fast_ctx->u.aes.ctx_dec), crypt, plain);
+ if (mbedtls_internal_aes_decrypt(&(fast_ctx->u.aes.ctx_dec), crypt, plain) != 0) {
+ return -1;
+ }
for (j = 0; j < AES_BLOCK_SIZE; j++)
plain[j] ^= fast_ctx->u.aes.cbc[j];
os_memcpy(fast_ctx->u.aes.cbc, tmp, AES_BLOCK_SIZE);