aws-lc-rs exposes AWS-LC — Amazon's fork of BoringSSL — through an API modelled on ring, so most ring code compiles after changing the crate name. It is the default crypto provider of rustls and is what Rust services reach for when they need FIPS 140-3 validation (the fips feature) or post-quantum algorithms. The C library is compiled during the build; the check built 1.18.2 with default features in the plain rust image.
Signature encodings work exactly as in ring: the *_FIXED constants produce and accept 64-byte raw r‖s, the *_ASN1 constants DER, and a raw signature failed under the ASN1 verification constant. Nonces are random, s is not normalized and verification accepts both halves. Beyond ring's P-256 and P-384, it signs and verifies on P-521 and secp256k1, with SHA-2 and SHA-3 variants.
Post-quantum algorithms are part of the stable API in 1.18.2 — the check built without the unstable feature: ML-KEM-512, ML-KEM-768 and ML-KEM-1024 in aws_lc_rs::kem, and ML-DSA-44, ML-DSA-65 and ML-DSA-87 in aws_lc_rs::signature, which the sample uses. The sizes it prints — a 1952-byte public key and a 3309-byte signature for ML-DSA-65, a 1088-byte ciphertext for ML-KEM-768 — are what certificates, tokens and handshakes have to carry; the post-quantum signature playground and KEM playground compare them with classical algorithms.
Key loading is wider than ring's: ECDSA keys load from PKCS#8, SEC1 (RFC 5915) DER and a raw scalar with its public key; public keys from SPKI DER and SEC1 points, compressed or not. Unlike ring, Ed25519KeyPair::from_pkcs8 accepted the 48-byte PKCS#8 v1 form that OpenSSL writes.
Use the DER ⇄ raw converter when a FIXED/ASN1 mismatch is suspected, and the TLS configuration generator for hybrid post-quantum key exchange settings.