mirror of
https://github.com/espressif/esp-idf.git
synced 2025-10-05 04:49:21 +00:00
feat(mbedtls/aes): Add config to support AES block and DMA modes during runtime
- Dynamically switch the AES operation modes based on the buffer operating length - Shorter AES and SHA operations can now run faster and concurrently as well Closes https://github.com/espressif/esp-idf/issues/15914
This commit is contained in:
@@ -34,6 +34,7 @@
|
||||
|
||||
#include "esp_sha_internal.h"
|
||||
#include "sha/sha_core.h"
|
||||
#include "esp_compiler.h"
|
||||
|
||||
/* Implementation that should never be optimized out by the compiler */
|
||||
static void mbedtls_zeroize(void *v, size_t n)
|
||||
@@ -119,7 +120,8 @@ int mbedtls_internal_sha1_process(mbedtls_sha1_context *ctx, const unsigned char
|
||||
esp_internal_sha_update_state(ctx);
|
||||
|
||||
#if SOC_SHA_SUPPORT_DMA
|
||||
if (sha_operation_mode(64) == SHA_DMA_MODE) {
|
||||
// Unlikely to use DMA because data size is 64 bytes which is smaller than the DMA threshold
|
||||
if (unlikely(sha_operation_mode(64) == SHA_DMA_MODE)) {
|
||||
int ret = esp_sha_dma(SHA1, data, 64, NULL, 0, ctx->first_block);
|
||||
if (ret != 0) {
|
||||
esp_sha_release_hardware();
|
||||
|
@@ -34,6 +34,7 @@
|
||||
|
||||
#include "esp_sha_internal.h"
|
||||
#include "sha/sha_core.h"
|
||||
#include "esp_compiler.h"
|
||||
|
||||
/* Implementation that should never be optimized out by the compiler */
|
||||
static void mbedtls_zeroize(void *v, size_t n)
|
||||
@@ -132,7 +133,8 @@ int mbedtls_internal_sha256_process(mbedtls_sha256_context *ctx, const unsigned
|
||||
esp_internal_sha_update_state(ctx);
|
||||
|
||||
#if SOC_SHA_SUPPORT_DMA
|
||||
if (sha_operation_mode(64) == SHA_DMA_MODE) {
|
||||
// Unlikely to use DMA because data size is 64 bytes which is smaller than the DMA threshold
|
||||
if (unlikely(sha_operation_mode(64) == SHA_DMA_MODE)) {
|
||||
int ret = esp_sha_dma(ctx->mode, data, 64, NULL, 0, ctx->first_block);
|
||||
if (ret != 0) {
|
||||
esp_sha_release_hardware();
|
||||
|
@@ -40,6 +40,7 @@
|
||||
|
||||
#include "esp_sha_internal.h"
|
||||
#include "sha/sha_core.h"
|
||||
#include "esp_compiler.h"
|
||||
|
||||
/* Implementation that should never be optimized out by the compiler */
|
||||
static void mbedtls_zeroize(void *v, size_t n)
|
||||
@@ -169,7 +170,8 @@ int mbedtls_internal_sha512_process(mbedtls_sha512_context *ctx, const unsigned
|
||||
}
|
||||
|
||||
#if SOC_SHA_SUPPORT_DMA
|
||||
if (sha_operation_mode(128) == SHA_DMA_MODE) {
|
||||
// Likely to use DMA because data size is 128 bytes which is larger or equal to the DMA threshold
|
||||
if (likely(sha_operation_mode(128) == SHA_DMA_MODE)) {
|
||||
ret = esp_sha_dma(ctx->mode, data, 128, NULL, 0, ctx->first_block);
|
||||
if (ret != 0) {
|
||||
esp_sha_release_hardware();
|
||||
|
Reference in New Issue
Block a user