Skip to content

Releases: 0xNullll/CryptoForge

CryptoForge v0.1.4 – Version Bump, Controlled Windows Exports & CMake Cleanup

18 Apr 00:14

Choose a tag to compare

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

17 Apr 23:48

Choose a tag to compare

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_block parameter 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_block changes 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_GetName function signature

  • Suppressed cast-qual warning 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

17 Apr 20:41

Choose a tag to compare

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_API macro for consistent symbol export/import across platforms
  • Added cf_exports.h to centralize visibility logic for shared/static builds
  • Applied CF_API to 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.h as 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_SIZE
    • CF_MAX_CIPHER_IV_SIZE
  • Added CF_StatusToStr prototype in cf_utils.h for 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/CryptoForge CMake 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 README and USAGE:

    • 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

28 Feb 15:40

Choose a tag to compare

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

27 Feb 23:43

Choose a tag to compare

Pre-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

  1. 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 other ll_* primitives
    • No user-facing checks or policy enforcement
  2. 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