Skip to content

v0.9.0

Latest

Choose a tag to compare

@github-actions github-actions released this 08 Jul 11:49
Immutable release. Only release title and notes can be modified.
v0.9.0
6ece7f8

dryoc v0.9.0

dryoc 0.9.0 expands libsodium-compatible coverage with AEAD, direct HMAC, HKDF, SHA-2/SHA-3 hashing, and Ed25519 key extraction helpers. It also makes protected memory available on stable Rust for supported targets, improves wasm coverage, reduces the normal dependency surface, and tunes several hot paths.

Full Changelog: v0.8.0...v0.9.0

Breaking Changes / Compatibility Notes

  • dryocstream::Tag now uses a local compatibility implementation instead of the external bitflags type. The public constants, methods, operators, formatting, and iteration behavior are preserved for normal use, but code depending on bitflags-specific trait impls or concrete iterator types may need adjustment.
  • The legacy gen / r#gen generation APIs are deprecated because gen is reserved in Rust 2024. Existing callers remain source-compatible; prefer the generate replacements, including the new protected-memory key generation helpers.
  • Default features are now base64, u64_backend, and protected. Protected-memory APIs are available on stable Rust for Unix and Windows targets, and unsupported targets such as wasm32-unknown-unknown do not expose the protected-memory module.

Highlights Since v0.8.0

Cryptographic APIs

  • Added libsodium-compatible crypto_aead_xchacha20poly1305_ietf_* APIs plus the Rustaceous dryocaead API for XChaCha20-Poly1305-IETF, including explicit-nonce boxes, generated-nonce envelopes, protected aliases, serde/wincode support, tests, and fuzz coverage.
  • Added direct HMAC variants for SHA-256, SHA-512, and SHA-512/256, plus HKDF-SHA-256 and HKDF-SHA-512 APIs in both Classic and Rustaceous forms.
  • Added SHA-256 Classic hashing support and SHA-3-256/SHA-3-512 Classic and Rustaceous hashing APIs.
  • Added Ed25519 secret-key extraction helpers for seed and embedded public-key extraction, matching libsodium's signing-key layout.

Protected Memory And Platform Support

  • Moved protected memory off the nightly allocator API for the stable storage path while keeping the nightly allocator implementation available behind nightly.
  • Added wasm32-unknown-unknown compatibility coverage, target-specific randomness setup, and wasm-bindgen tests for core Rustaceous encryption and hashing paths.
  • Clarified protected-memory tradeoffs, platform behavior, and default feature guidance in the README, rustdoc, and repository guidance.

Performance And Dependency Surface

  • Removed normal dependencies on base64, bitflags, and lazy_static by replacing them with local or standard-library implementations while keeping the base64 feature as a compatibility flag.
  • Uses the soft Poly1305 backend on AArch64 under simd_backend,nightly, where profiling showed it outperforming the portable-SIMD Poly1305 path.
  • Removed redundant software Poly1305 state stores.
  • Optimized detached crypto_secretbox seal/open paths to avoid full-buffer pre-copying. Detached open now leaves the output buffer unchanged when authentication fails.

Maintenance

  • Added a cargo-deny advisory check to CI.
  • Updated the README libsodium coverage audit against libsodium 1.0.22 and narrowed the crate-level compatibility wording to supported APIs and wire formats.
  • Fixed new chunks_exact clippy lints while preserving existing remainder handling.

Upgrade Guidance

cargo update -p dryoc
  • Replace r#gen() calls with generate() where practical. Existing gen APIs are deprecated, not removed.
  • If you relied on the previous default feature set, pin features explicitly, for example:
dryoc = { version = "0.9", default-features = false, features = ["u64_backend"] }

Pull Requests by Category

Features And API

  • feat: add XChaCha20-Poly1305 AEAD APIs (#124)
  • feat: support protected memory on stable (#125)
  • feat: add libsodium HMAC and HKDF APIs (#128)
  • feat: deprecate gen generation APIs (#129)
  • feat(sign): add Ed25519 key extraction helpers (#133)
  • feat: add SHA-3 hash variants (#134)

Performance

  • perf: use soft poly1305 on aarch64 (#121)
  • perf: remove redundant poly1305 state stores (#122)
  • perf: avoid detached secretbox buffer copies (#123)

Bug Fixes

  • fix: address chunks_exact clippy lints (#132)

Testing, CI, And Maintenance

  • refactor: reduce dependency surface (#119)
  • test: add wasm compatibility coverage (#118)
  • ci: enforce cargo-deny advisory checks (#131)

Documentation

  • docs: audit libsodium feature coverage (#120)
  • docs: clarify protected memory tradeoffs (#127)
  • docs: update default feature guidance (#130)
  • docs: clarify libsodium compatibility scope (#135)

Misc

  • chore: bump version (#116)
  • chore: bump version (#126)