Releases: 0xNullll/CryptoForge
CryptoForge v0.1.4 – Version Bump, Controlled Windows Exports & CMake Cleanup
This release focuses on tightening build behavior and ensuring more controlled symbol exports on Windows. It also includes a version bump and minor cleanup to improve maintainability.
What's New
Versioning
- Bumped version to 0.1.4 across:
- CMake configuration
- Public headers
- Windows resource files
Windows Export Behavior
- Removed automatic symbol export (
WINDOWS_EXPORT_ALL_SYMBOLS) - Now relies on explicit and controlled export definitions
- Results in a cleaner and more predictable ABI
Build System Cleanup
- Simplified
CMakeLists.txt:- Removed redundant comments
- Reduced clutter for better readability
- Minor cleanup in test build configuration
Status
- Experimental — not production-ready
- No API changes
- Internal build behavior improved
License
Apache-2.0
CryptoForge v0.1.3 – CTR Mode Redesign, API Fixes & Build Improvements
This release focuses on refining the CTR mode design, improving API consistency, and tightening build and compiler handling. It introduces caller-managed counter handling for CTR mode, propagates API changes across cipher interfaces, and includes various fixes to improve correctness and portability.
What's New
CTR Mode & Cipher API Updates
- Introduced
ctr_blockparameter to cipher callback signatures in:
include/CryptoForge/cf_cipher.h
-
Made CTR mode caller-managed:
-
Counter is now mutable (non-const)
-
Callers are responsible for maintaining and updating the counter state
-
Propagated
ctr_blockchanges through: -
cf_cipher -
All cipher wrappers and implementations
-
Updated AES CTR implementation:
-
Accepts mutable counter block
-
Adjusted all internal callers to pass
opts->ctr_block
API Fixes & Improvements
-
Corrected
CF_Enc_GetNamefunction signature -
Suppressed
cast-qualwarning in AEAD decrypt tag verification path -
Tightened casts in:
-
AES core implementation
-
Base64 encoding/decoding logic
-
Improved const-correctness and type safety across affected components
Versioning & Metadata
-
Bumped version to 0.1.3 across:
-
Public headers
-
Windows resource files
Build System & Compiler Handling (CMake)
-
Improved compiler and compile-option handling:
-
More consistent flag application across targets
-
Better handling of platform-specific settings
-
Cleaned up
CMakeLists.txt: -
Removed redundant logic
-
Simplified configuration structure
Status
- Experimental and educational — still not production-ready
- API changes may require minor updates for existing users (me and me)
- Test coverage remains limited
Still Missing
- No asymmetric cryptography support
- No dedicated secure RNG implementation
- Limited high-level abstractions
License
Apache-2.0
CryptoForge v0.1.2 – API Visibility, Header Reorganization & Build System Overhaul
This release focuses on improving the public API structure, symbol visibility, and overall developer experience. It introduces a cleaner include layout, better cross-platform build handling, and foundational changes to support shared/static library usage.
What's New
Public API & Symbol Visibility
- Introduced
CF_APImacro for consistent symbol export/import across platforms - Added
cf_exports.hto centralize visibility logic for shared/static builds - Applied
CF_APIto all public-facing functions (e.g., AEAD, cipher, encoding APIs)
Header Reorganization
-
Moved public headers to:
include/CryptoForge/ -
Updated include style to:
#include <CryptoForge/...>
-
Cleaned up headers:
- Removed internal relative includes
- Standardized include order (
stdint, system headers, then project headers) - Added license boilerplate across public headers
-
Simplified
cf.has a cleaner umbrella header
Core Definitions & Utilities
-
Bumped version to 0.1.2
-
Added version macros and packed version string in
cf_defs.h -
Replaced hardcoded constants:
CF_AES_BLOCK_SIZECF_MAX_CIPHER_IV_SIZE
-
Added
CF_StatusToStrprototype incf_utils.hfor improved debugging
Build System Overhaul (CMake)
-
Simplified top-level
CMakeLists.txt -
Introduced
src/CMakeLists.txt:- Centralized source collection
- Defined target properties and compile options
-
Removed legacy
src/CryptoForgeCMake configuration -
Improved handling of:
- Shared vs static builds
- Compile definitions (tests, verbosity flags)
-
Disabled forced compiler cache setting for flexibility
-
Updated compiler flags and build type handling
Tooling & Developer Experience
-
Updated VSCode
tasks.json:- Switched to MinGW Makefiles
- Configured explicit GCC path
- Enabled verbose test output option
-
Updated
READMEandUSAGE:- Reflect new include structure
- Improved documentation references and clarity
Platform Support
-
Added Windows resource files for:
- Library builds
- Test binaries
Status
- Experimental and educational — still not production-ready
- Internal structure is stabilizing, but API may still change
- Test coverage remains limited
Still Missing
- No asymmetric cryptography support
- No dedicated secure RNG implementation
- Limited high-level abstractions
License
Apache-2.0
CryptoForge v0.1.1 – Usage Guide Added
This release adds a comprehensive user guide for the CryptoForge API to help developers get started quickly and safely.
What's New
- Full CryptoForge API usage guide
- Initialization and setup
- Low-level primitive usage (AES, ChaCha, SHA, etc.)
- Layered API calls and best practices
- Example code snippets for common workflows
- Security considerations and performance tips
Status
- Experimental and educational — still not production-ready
- Minimal test coverage included
- No asymmetric algorithms or dedicated RNGs
License
Apache-2.0
CryptoForge v0.1.0 – Initial Release
This is the first public release of CryptoForge. At this stage, the library includes only the main source code with foundational implementations.
Layered API Design
-
Low-Level / Context Layer (
ll_*)- Implements atomic primitives: AES, ChaCha, SHA family, SHAKE, HMAC, KMAC, PBKDF2
- Deterministic state, supports streaming operations
- Minimal internal helpers; some
ll_*call otherll_*primitives - No user-facing checks or policy enforcement
-
Facade / User-Facing Layer (
cf_*)- Dispatcher layer by enum/macro for algorithm selection
- Supports streaming, pipelining, and memory-safe APIs
- Enforces key sizes and nonce rules for AEAD
- Handles zeroization, error codes, and resource management
Main Features
Symmetric Ciphers
- AES: ECB, CBC, CFB8, CFB128, OFB, CTR
- ChaCha / XChaCha: ChaCha8, ChaCha12, ChaCha20, XChaCha8, XChaCha12, XChaCha20
- AEAD Constructions: AES-GCM, ChaCha20-Poly1305, XChaCha20-Poly1305
Hash Functions
- SHA family: SHA-1, SHA-224, SHA-256, SHA-384, SHA-512
- SHA3 / Keccak: SHA3-224/256/384/512, rawSHAKE128/256, SHAKE128/256
- cSHAKE128/256
- Legacy: MD5
Message Authentication Codes (MACs)
- HMAC, CMAC, GMAC, KMAC, KMAC-XOF, Poly1305
Key Derivation Functions (KDFs)
- PBKDF2, HKDF, KMAC-XOF
Encoding / Decoding Utilities
- Base16, Base32, Base58, Base64, Base85
Miscellaneous
- Modular, layered API for flexibility
- Portable and lightweight, suitable for embedded targets
- Configurable memory footprint via compile-time options
Status
- Experimental and educational — not production-ready
- Minimal test coverage included
- No asymmetric algorithms or dedicated RNGs
- Focused on clarity, correctness, and portability
License
Apache-2.0