NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
crates.io · #477 most downloaded on crates.io
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.
Last release 1 months ago
01 Sep 2026
Ships fairly regularly
a new release about every 4 weeks
Rarely documented
notes for 6 of 53 stable releases
3 versions withdrawn
withdrawn after publishing
3 years old
57 releases · first in 2023
One column per quarter.
Add ECDSA P-256 SHA-1 ASN.1 signature verification by @assafvayner in #1214
ECDSA_P256_SHA1_ASN1 for verifying ASN.1 DER-encoded ECDSA P-256 signatures over SHA-1, so applications can verify legacy signatures such as CloudFront signed URLs using ECDSA P-256 with the default SHA-1 hash.Extend produced exactly enough space for the plaintext and authentication tag before passing the buffer to AWS-LC. Non-conforming custom buffers now return Err(Unspecified).Salt::from(Okm) now uses the output algorithm selected by the Okm, rather than the algorithm from the source PRK.verify_digest_sig now requires the supplied digest to match the digest configured by RsaParameters, for both parsed and unparsed public keys.Err(Unspecified).aws-lc-sys v0.45.0 aligns with AWS-LC v5.7.0 (previously v5.5.0). See also the release notes for v5.6.0.
EVP_DecryptUpdate for padded block ciphers so it modifies only the output range reported through out_len. aws-lc-rs now includes canary-based regression coverage around the documented minimum output-buffer sizes.aws-lc-fips-sys v0.14.2 moves to AWS-LC FIPS v4.2.0.
EVP_DecryptUpdate correction for FIPS builds./usr/bin/env, fixing builds in Nix and similar sandboxed environments.cargo:root metadata when linking against a system-installed AWS-LC by @weihanglo in #1208
DEP_AWS_LC_*_ROOT, consistently with the CC and CMake builders, so downstream build scripts can rely on the metadata regardless of how AWS-LC was built.-Wa,--debug-prefix-map handling with Clang and LTO by @justsmth in #1212
CFLAGS contains -flto or -flto=thin. The assembler-specific flag is now used only with GCC; Clang's integrated assembler uses -ffile-prefix-map directly.CFLAGS spellings when compiling jitterentropy by @justsmth in #1207
-O0, including when environment variables are set by a parent process using raw or legacy-normalized target triples.aws-lc-fips-sys v0.14.0 fails to build with Clang newer than 19 -- #1202CFLAGS should be filtered for jitterentropy -- #1205CFLAGS includes -flto -- #1211Full Changelog: v1.18.0...v1.18.1
Full Changelog: v1.18.0...v1.18.1
Please migrate any use of aws_lc_rs::signature to aws_lc_rs::signature . The unstable::signature module remains as deprecated aliases and will be remo…
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.
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.x | <1.18.0 |
| 4.x | latest |
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.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.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.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.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.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.rsa::KeyPair::from_components for constructing RSA key pairs from raw components by @justsmth in #1175
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.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.AWS_LC_SYS_SMALL=1/=0 to force it on or off independently of opt-level.aws-lc-fips-sys requires an explicit AWS_LC_FIPS_SYS_SMALL=1, and warns when it is set.opt-level=3 footprint is unchanged.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.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.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.
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.Full Changelog: v1.17.3...v1.18.0
Note This is a maintenance release for the aws-lc-rs v1.17 line. The fips feature continues to use the validated AWS-LC FIPS v3 module and does not mo
Note
This is a maintenance release for the aws-lc-rs v1.17 line. The fips feature continues to use the validated AWS-LC FIPS v3 module and does not move users to the FIPS v4 module used by aws-lc-rs v1.18.x.
aws-lc-sys v0.45.0 aligns with AWS-LC v5.7.0 (previously v5.5.0). See also the release notes for v5.6.0.
EVP_DecryptUpdate for padded block ciphers so it modifies only the output range reported through out_len: aws/aws-lc#3460aws-lc-fips-sys v0.13.17 moves to AWS-LC FIPS v3.6.0.
EVP_DecryptUpdate correction for FIPS builds.Full Changelog: v1.17.3...v1.17.4
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().PqdsaKeyPair in serialized forms by @Mark-Simulacrum in #1174
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).TARGET_* env leakage into host builds by @justsmth in #1171
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.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.TARGET_CFLAGS applied to host builds -- #1169Full 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.
Nothing published for this version
🎉 AWS-LC FIPS v3 Module Has Been Validated
🎉 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.
aws-lc-fips-sys to our FIPS v4 branch.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 #1129aws-lc-fips-sys by @justsmth in #1143OPENSSL_* and pkg-config by @justsmth in #1156Send/Sync for RSA hazmat encryption key types by @justsmth in #1128Salt::none constructor for HKDF by @justsmth in #1135wasm32-unknown-emscripten build and test support by @justsmth in #1059aws-lc-sys now aligns with AWS-LC v5.1.0 (previously v1.73.0). Notable upstream changes include:
memcmp_check build failure when CFLAGS contains LTO flags by @justsmth in #1134poly_Rq_mul symbol in Linux x86_64 build by @Lebei2046 in #1130-ffile-prefix-map to jitterentropy builder by @justsmth in #1139Send/Sync -- #1125Unspecified for invalid key sizes -- #1082x86_64-pc-windows-msvc -- #1146cpu_arm_linux.c assumes sys/auxv.h and getauxval (uclibc targets) -- #1108Full Changelog: v1.17.0...v1.17.1
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Compare
Compare
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →