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

AEAD AES-CCM (NIST SP 800-38C / RFC 3610), 128- and 256-bit keys, detached tag. More...

#include "protocore_config.h"

Go to the source code of this file.

Detailed Description

AEAD AES-CCM (NIST SP 800-38C / RFC 3610), 128- and 256-bit keys, detached tag.

CCM = CTR encryption + CBC-MAC authentication under one key. SMB 3.x offers it as SMB2_ENCRYPTION_AES128_CCM (0x0001) and SMB2_ENCRYPTION_AES256_CCM (0x0003); the transport uses an 11-byte nonce and a 16-byte tag (MS-SMB2 ยง3.1.4.3). The tag is kept detached (returned separately, not appended to the ciphertext) because the SMB2 TRANSFORM_HEADER carries it in its own Signature field.

On Arduino (ESP32) the block cipher is mbedtls_ccm, which routes AES through the hardware accelerator; on the native host a compact software AES (crypto/cipher/aes_block.h, shared with the GCM modules) drives the same CCM construction so the whole AEAD is unit-testable off-target. Pure, zero heap; host-tested against reference AES-CCM vectors (nonce 11, tag 16, AES-128 and AES-256).

Author
Douglas Quigg (dstroy0)
Date
2026

Definition in file aesccm.h.