microcrypt is a portable primitive library, not a hardened security product.
- SHA-256, HMAC-SHA256, AES-128 block transforms, AES-128-CBC helpers, and AES-128-GCM
- Checked APIs with explicit status returns
- Secure clearing helpers for secret material
- Audit status
- FIPS validation
- Formal proof
- Cache/timing/power/EM resistance
- Fault-injection resistance
- Physical hardware key protection
- Production protocol integration
CBC provides confidentiality only and is malleable. It does not authenticate data. Use authenticated designs for new protocols.
AES-GCM provides confidentiality and authentication, but its security depends on nonce uniqueness. Reusing a nonce with the same key is a critical failure. microcrypt does not generate nonces or enforce their global uniqueness.
Only 96-bit (12-byte) nonces and 128-bit (16-byte) tags are supported. Decryption does not release plaintext before tag verification succeeds. This implementation is not claimed to be side-channel hardened.
Report security concerns through the repository issue tracker or the maintainers' preferred private channel if one is established for the project.