# Changelog ## Unreleased ### Added - Introduced subpackages and root wrappers: - `asymm`, `symm`, `hashx`, `encodingx`, `paddingx`, `filex`, `legacy`, `macx`. - Added Chinese `README.md` and Apache-2.0 `LICENSE`. - Added `SM9` support in asymmetric APIs. - Added `ChaCha20` and `ChaCha20-Poly1305` APIs (memory + stream wrappers where applicable). - Added unified symmetric cipher options API: - `CipherOptions{Mode, Padding, IV, Nonce, AAD}`. - Added AEAD APIs and wrappers: - `AES-GCM`, `SM4-GCM` (bytes + stream helper APIs). - Added more symmetric mode coverage for SM4: - `ECB/CBC/CFB/OFB/CTR` (bytes + stream derived APIs). - Added comprehensive tests across packages and root wrappers. - Added fuzz tests for `paddingx`, `encodingx`, and `symm` round-trip invariants. ### Changed - Refactored monolithic implementation to subpackage architecture while preserving root-package convenience APIs. - AES mode APIs now support generic mode selection and derived mode helpers. - Stream APIs expanded across AES/SM4/DES/3DES and ChaCha20. - Updated docs to include a security-first recommendation and algorithm capability matrix. - Updated dependencies and modules for current code paths (`gmsm`, `x/crypto`). ### Fixed - Fixed Base128 encode/decode round-trip bug in `encodingx`. - Corrected CRC32A test expectations and clarified CRC32A variant comments. - Corrected default padding behavior for AES-CBC to PKCS7. ### Notes - Legacy/insecure algorithms and modes remain available for compatibility. - Production recommendations now explicitly prefer AEAD schemes.