ProtoCore v0.0.2
Deterministic, zero-heap network stack for embedded targets
Loading...
Searching...
No Matches
esp_aesgcm.cpp File Reference

AES-256-GCM on Espressif silicon, through the vendor's own AEAD. More...

#include "board_drivers/board_profiles/pc_platform.h"
#include "crypto/aead/aesgcm.h"
#include "crypto/crypto_opt.h"
#include "server/mmgr/secure.h"
#include <string.h>

Go to the source code of this file.

Detailed Description

AES-256-GCM on Espressif silicon, through the vendor's own AEAD.

Hands the whole AEAD to mbedtls rather than driving the block cipher and folding GHASH in software. That is not a style preference - measured on an ESP32-S3 at 240 MHz, sealing 1 KiB:

this path (vendor GCM)                     81,085 cycles   3.0 MB/s
manual HW-AES block + software GHASH      616,567 cycles   0.4 MB/s

7.6x, same chip, same data. The old code took the manual path whenever SOC_AES_SUPPORT_GCM was unset, i.e. whenever we concluded the die had no GCM mode - and then hand-rolled a slower replacement. The vendor's implementation knows what its own silicon can do; deciding that is its job, not the core's.

Vendor headers are fine here: this is board_drivers, the partition vendor code is segregated to.

Definition in file esp_aesgcm.cpp.