PackageTrack
Sign in Get early access

aws-lc-rs

aws-lc-rs is a cryptographic library using AWS-LC for its cryptographic operations. This library strives to be API-compatible with the popular Rust library named ring.

1.18.0 198M downloads/mo #509 most downloaded on crates.io aws/aws-lc-rs

What this package is like to depend on

Last release 16 days ago

07 Aug 2026

Ships fairly regularly

a new release about every 4 weeks

Rarely documented

notes for 3 of 51 stable releases

3 versions withdrawn

withdrawn after publishing

3 years old

55 releases · first in 2023

16 releases in the last 12 months

see the full history below

Release timeline

55 releases · Apr 2023 to Aug 2026
2024 2025 2026
Release Pre-release Withdrawn

Releases

latest 55
  1. 1.18.0 07 Aug 2026
    Release notes

    AWS-LC-FIPS module updated to 4.x

    This release switches aws-lc-fips-sys (used via the fips feature) from the AWS-LC-FIPS 3.x branch to AWS-LC-FIPS 4.0.

    • If your project requires FIPS compliance, please consult your local FIPS compliance experts before upgrading. The FIPS v3 module shipped in aws-lc-rs v1.17.x is FIPS 140-3 validated (Certificate #5314 static, Certificate #5298 dynamic). The 4.x module has completed validation testing by an accredited lab and has been submitted to NIST for certification. Refer to the CMVP Modules In Progress List for its current status, and to FIPS.md for security policies and supported operating environments.
    • Consumers who need to remain on the FIPS 3.x module should pin aws-lc-rs to <1.18.0. See the Cargo Book on Specifying Dependencies.
    AWS-LC-FIPS module aws-lc-rs
    2.0.x <1.12.0
    3.0.x <1.18.0
    4.x latest

    What's Changed

    • Switch aws-lc-fips-sys to AWS-LC's "FIPS 4.0" branch by @justsmth in #1185
      • aws-lc-fips-sys v0.13.16 -> v0.14.0. Please see the call-out above.
    • The ML-DSA signature APIs are now stable 🎉 by @justsmth in #1188 and #1189
      • PqdsaKeyPair, PqdsaPublicKey, PqdsaPrivateKey, PqdsaSigningAlgorithm, PqdsaVerificationAlgorithm, and the ML_DSA_44 / ML_DSA_65 / ML_DSA_87 algorithms (and their _SIGNING counterparts) now live in aws_lc_rs::signature. ML-DSA no longer requires the unstable feature, and is now available under fips -- the FIPS 4.0 module provides ML-DSA, which is what had kept these APIs unstable. See our updated API documentation.
      • Please migrate any use of aws_lc_rs::unstable::signature to aws_lc_rs::signature. The unstable::signature module remains as deprecated aliases and will be removed in a future release.
      • PqdsaKeyPair::to_pkcs8 has been renamed to to_pkcs8v1, since elsewhere in the module an unqualified to_pkcs8 means PKCS#8 v2. A deprecated to_pkcs8 alias remains available under the unstable feature.
      • Existing unstable consumers continue to compile, with deprecation warnings. Two cases need a source change: builds using #![deny(warnings)], and code that glob-imports both signature::* and unstable::signature::*, which now needs an explicit import to disambiguate.
      • Behavior change: PqdsaVerificationAlgorithm::parsed_verify_digest_sig now always returns Unspecified. Digest-then-verify is not an operation defined by FIPS 204 -- pure ML-DSA signs the message itself, and the pre-hash variant (HashML-DSA) uses a distinct domain separator that this API does not implement.
    • Add out-of-place AEAD sealing by @iainmcgin in #1183
      • Adds seal_separate_out_of_place to LessSafeKey and TlsRecordSealingKey. Every sealing entry point was previously in-place, so a caller whose plaintext was borrowed or shared had to copy it into a scratch buffer purely to make it mutable. This mirrors the existing open_separate_gather, so the sealing and opening directions now match.
    • Add rsa::KeyPair::from_components for constructing RSA key pairs from raw components by @justsmth in #1175
      • Adds rsa::KeyPairComponents and rsa::KeyPair::from_components, matching ring 0.17, so a signing key can be built from formats such as JWK without first encoding the components as DER. Unlike ring, d and the CRT parameters are validated at construction using RSA_check_key, so keys with inconsistent or placeholder values that ring accepts may be rejected. Unnecessary generic bounds were also removed from PublicKeyComponents.
    • Automatically optimize aws-lc for size when opt-level is "s" or "z" by @justsmth in #1159
      • The builder now enables AWS-LC's size-optimized configuration (OPENSSL_SMALL, and no AVX-512 assembly on x86_64) whenever Cargo is already building for size. In CI, a small binary exercising SHA-256, AES-256-GCM, and ECDSA P-256 is 36-50% smaller at opt-level=z than at opt-level=3: 50% on x86_64 Linux, 48% on aarch64 macOS, 39% on x86_64 Windows, 36% on aarch64 Linux. Your own savings depend on how much of AWS-LC your binary retains.
      • No algorithms are removed and outputs are unchanged; the trade-off is slower elliptic-curve performance. Set AWS_LC_SYS_SMALL=1/=0 to force it on or off independently of opt-level.
      • FIPS builds do not opt in automatically: aws-lc-fips-sys requires an explicit AWS_LC_FIPS_SYS_SMALL=1, and warns when it is set.
      • Partially addresses #745; the default size under opt-level=3 footprint is unchanged.
    • Export native library build metadata from the -sys crates by @justsmth in #1187, including original commits from @glebpom in #1184
      • Downstream build scripts compiling C code against AWS-LC can now locate our artifacts via DEP_AWS_LC_* / DEP_AWS_LC_FIPS_* (libdir, libcrypto_path, link_kind, and libssl_path with ssl), consistently across the CC, CMake, and system-library build paths. Existing linker directives are unchanged. On Windows, the *_path values are the link-time artifact (import library), not the runtime DLL.
    • Key wrap hardening by @justsmth in #1190 and #1191
      • KeyEncryptionKey::unwrap no longer underflows on ciphertexts shorter than 8 bytes. Since the ciphertext is untrusted input, builds with overflow-checks = true would panic instead of returning the documented Err(Unspecified); default release builds were unaffected.
      • KeyEncryptionKey now zeroizes its key material on drop, consistent with the other key types in this crate.
    • docs(signature): correct outdated note about signing a separate digest by @WesleyRosenblum in #1186

    Upstream AWS-LC (v5.5.0)

    aws-lc-sys v0.44.0 aligns with AWS-LC v5.5.0 (previously v5.2.0). See also the release notes for v5.3.0 and v5.4.0.

    Build Improvements

    • Fix bindings copy from read-only prebuilt AWS-LC install by @justsmth in #1194
      • Copies into OUT_DIR now remove any stale destination first and leave the fresh copy writable, so building against a read-only prebuilt install (e.g. the Nix store) no longer fails with Permission denied on a build-script rerun. An OUT_DIR already poisoned by an earlier build now recovers without a cargo clean.

    Issues Being Closed

    • ML-DSA stabilization? -- #964
    • Expose out-of-place AEAD sealing -- #1182
    • Construct an RSA Key pair from raw private components -- #791
    • aws-lc-sys build script fails to copy bindings from read only prebuild aws-lc on repeat runs -- #1193

    Other Merged PRs

    • ci: fix mdbook test failure and run docs checks on PRs by @justsmth in #1181
    • Publish script fixes: cargo clean failure, and verify aws-lc-rs against minimum published sys crates by @justsmth in #1179
    • Prepare aws-lc-sys v0.44.0 by @justsmth in #1199
    • Prepare aws-lc-rs v1.18.0 by @justsmth in #1200

    New Contributors

    Full Changelog: v1.17.3...v1.18.0

    Open source →
  2. 1.17.3 17 Jul 2026
    Release notes

    What's Changed

    • Add public API to check AWS-LC and FIPS versions by @prasden in #1167
      • awslc_version() returns the linked AWS-LC library version (e.g., "5.1.0"), resolved at runtime. fips_version() returns the AWS-LC FIPS release-branch version as Some(version), or None when unavailable. Note that fips_version() is independent of try_fips_mode().
    • Clarify representations of PqdsaKeyPair in serialized forms by @Mark-Simulacrum in #1174
      • Documents how to use PqdsaKeyPair::from_seed in a FIPS setting, and notes that key pairs constructed from the expanded form cannot be re-serialized to PKCS#8 (which contains just the seed).

    Build Improvements

    • Fix TARGET_* env leakage into host builds by @justsmth in #1171
      • Per the cc-rs convention, TARGET_CC/TARGET_CXX/TARGET_CFLAGS are now only applied when cross-compiling, and HOST_* variables are honored for native builds. Previously, when aws-lc-sys appeared as both a dependency and a build-dependency in a cross build, the cross toolchain's flags leaked into the host-side build.
    • Restore cc default flags in memcmp probe; only fail build on confirmed bug by @justsmth in #1173
      • Fixes build failures under RPM hardened build flags (Fedora/RHEL/Rocky rpmbuild defaults): the memcmp probe (GCC bug 95189 check) now retains cc's computed target default flags (e.g., -fPIC) while still excluding user CFLAGS. The check also only runs for GCC versions that may contain the bug, and a probe that fails to build only warns -- the build only fails when the miscompilation is actually demonstrated.

    Issues Being Closed

    • Public API for FIPS status -- #1166
    • memcmp probe fails under RPM hardened build flags -- #1168
    • Cross-compilation failure: TARGET_CFLAGS applied to host builds -- #1169

    Other Merged PRs

    New Contributors

    Full Changelog: v1.17.1...v1.17.3

    Note

    aws-lc-rs v1.17.2 has been yanked. It failed to compile with the fips feature when aws-lc-fips-sys resolved to v0.13.15 (or earlier), since that version lacks functions needed by the new version APIs. v1.17.3 is identical to v1.17.2 aside from requiring aws-lc-fips-sys v0.13.16.

    Open source →
  3. 1.17.2 17 Jul 2026 withdrawn

    Nothing published for this version

  4. 1.17.1 30 Jun 2026
    Release notes

    🎉 AWS-LC FIPS v3 Module Has Been Validated

    The AWS-LC FIPS v3 module has been awarded FIPS 140-3 validation by NIST's CMVP:

    Seek guidance from a local FIPS compliance expert regarding requirements for your deployment environments. Please consult the Security Policies associated with our certificates if you have questions.

    aws-lc-fips-sys (utilized via the fips feature of aws-lc-rs) currently uses the validated FIPS v3 module.

    • In the upcoming aws-lc-rs v1.18.0 release, we plan to switch aws-lc-fips-sys to our FIPS v4 branch.

    What's Changed

    • Support linking against a system-installed AWS-LC:
      • Set AWS_LC_SYS_SYSTEM_DIR or let pkg-config / OPENSSL_* environment variables auto-detect an existing AWS-LC installation instead of building from source by @justsmth in #1129
      • Support system-installed AWS-LC FIPS library for aws-lc-fips-sys by @justsmth in #1143
      • Auto-detect system AWS-LC from OPENSSL_* and pkg-config by @justsmth in #1156
      • Gate system AWS-LC on a declared minimum version by @justsmth in #1152
    • Implement Send/Sync for RSA hazmat encryption key types by @justsmth in #1128
    • Add Salt::none constructor for HKDF by @justsmth in #1135
    • Add wasm32-unknown-emscripten build and test support by @justsmth in #1059
    • Report specific key rejection reasons for invalid RSA key sizes by @justsmth in #1153

    Upstream AWS-LC (v5.1.0)

    aws-lc-sys now aligns with AWS-LC v5.1.0 (previously v1.73.0). Notable upstream changes include:

    Build Improvements

    • Fix memcmp_check build failure when CFLAGS contains LTO flags by @justsmth in #1134
    • Fix missing poly_Rq_mul symbol in Linux x86_64 build by @Lebei2046 in #1130
    • Apply -ffile-prefix-map to jitterentropy builder by @justsmth in #1139
    • Select compiler flag dialect by driver mode, not target ABI by @justsmth in #1147

    Issues Being Closed

    • RSA hazmat encryption key types missing Send/Sync -- #1125
    • RSA key rejection reports generic Unspecified for invalid key sizes -- #1082
    • Build failure when CFLAGS contains LTO flags (Windows/clang) -- #1132
    • cargo-xwin (clang-cl) jitterentropy build failure on x86_64-pc-windows-msvc -- #1146
    • Support system-provided AWS-LC library -- #936
    • cpu_arm_linux.c assumes sys/auxv.h and getauxval (uclibc targets) -- #1108
    • jitterentropy embeds absolute paths to files -- #1137

    Other Merged PRs

    New Contributors

    Full Changelog: v1.17.0...v1.17.1

    Open source →
  5. 1.17.0 13 May 2026

    Nothing published for this version

  6. 1.16.3 15 Apr 2026

    Nothing published for this version

  7. 1.16.2 19 Mar 2026

    Nothing published for this version

  8. 1.16.1 02 Mar 2026

    Nothing published for this version

  9. 1.16.0 18 Feb 2026

    Nothing published for this version

  10. 1.15.4 23 Jan 2026

    Nothing published for this version

  11. 1.15.3 14 Jan 2026

    Nothing published for this version

  12. 1.15.2 16 Dec 2025

    Nothing published for this version

  13. 1.15.1 21 Nov 2025

    Nothing published for this version

  14. 1.15.0 12 Nov 2025

    Nothing published for this version

  15. 1.14.1 24 Sep 2025

    Nothing published for this version

  16. 1.14.0 09 Sep 2025

    Nothing published for this version

  17. 1.13.3 22 Jul 2025

    Nothing published for this version

  18. 1.13.2 10 Jul 2025

    Nothing published for this version

  19. 1.13.1 08 May 2025

    Nothing published for this version

  20. 1.13.0 01 Apr 2025

    Nothing published for this version

  21. 1.12.6 11 Mar 2025

    Nothing published for this version

  22. 1.12.5 28 Feb 2025

    Nothing published for this version

  23. 1.12.4 20 Feb 2025

    Nothing published for this version

  24. 1.12.3 19 Feb 2025 withdrawn

    Nothing published for this version

  25. 1.12.2 21 Jan 2025

    Nothing published for this version

  26. 1.12.1 16 Jan 2025

    Nothing published for this version

  27. 1.12.0 17 Dec 2024

    Nothing published for this version

  28. 1.11.1 22 Nov 2024

    Nothing published for this version

  29. 1.11.0 15 Nov 2024

    Nothing published for this version

  30. 1.10.0 03 Oct 2024

    Nothing published for this version

  31. 1.9.0 06 Sep 2024

    Nothing published for this version

  32. 1.8.1 18 Jul 2024

    Nothing published for this version

  33. 1.8.0 26 Jun 2024

    Nothing published for this version

  34. 1.7.3 11 Jun 2024

    Nothing published for this version

  35. 1.7.2 23 May 2024

    Nothing published for this version

  36. 1.7.1 03 May 2024

    Nothing published for this version

  37. 1.7.0 16 Apr 2024

    Nothing published for this version

  38. 1.6.4 03 Apr 2024

    Nothing published for this version

  39. 1.6.3 01 Apr 2024 withdrawn

    Nothing published for this version

  40. 1.6.2 14 Feb 2024

    Nothing published for this version

  41. 1.6.1 26 Jan 2024

    Nothing published for this version

  42. 1.6.0 26 Jan 2024

    Nothing published for this version

  43. 1.5.2 20 Nov 2023

    Nothing published for this version

  44. 1.5.1 17 Nov 2023

    Nothing published for this version

  45. 1.5.0 16 Nov 2023

    Nothing published for this version

  46. 1.4.0 27 Oct 2023

    Nothing published for this version

  47. 1.3.0 31 Aug 2023

    Nothing published for this version

  48. 1.2.1 10 Jul 2023

    Nothing published for this version

  49. 1.2.0 23 Jun 2023

    Nothing published for this version

  50. 1.1.0 24 May 2023

    Nothing published for this version

  51. 1.0.2 12 May 2023

    Nothing published for this version

  52. 1.0.1 25 Apr 2023

    Nothing published for this version

  53. 1.0.0 19 Apr 2023

    Nothing published for this version

  54. 1.0.0-rc1 19 Apr 2023 pre-release

    Nothing published for this version

  55. 0.0.1 11 Apr 2023

    Nothing published for this version

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive