aws-lc-rs expose AWS-LC, le fork de BoringSSL maintenu par Amazon, à travers une API calquée sur ring, si bien que la plupart du code ring compile après un simple changement de nom de crate. C’est le fournisseur cryptographique par défaut de rustls, et c’est vers lui que se tournent les services Rust qui ont besoin d’une validation FIPS 140-3 (la fonctionnalité fips) ou d’algorithmes post-quantiques. La bibliothèque C est compilée pendant le build ; les essais ont compilé la 1.18.2 avec les fonctionnalités par défaut dans l’image rust standard.
Les encodages de signature fonctionnent exactement comme dans ring : les constantes *_FIXED produisent et acceptent du r‖s brut de 64 octets, les constantes *_ASN1 du DER, et une signature brute a échoué sous la constante de vérification ASN1. Les nonces sont aléatoires, s n’est pas normalisé et la vérification accepte les deux moitiés. Au-delà des courbes P-256 et P-384 de ring, aws-lc-rs signe et vérifie sur P-521 et secp256k1, avec des variantes SHA-2 et SHA-3.
Les algorithmes post-quantiques font partie de l’API stable dans la 1.18.2 (les essais ont compilé sans la fonctionnalité unstable) : ML-KEM-512, ML-KEM-768 et ML-KEM-1024 dans aws_lc_rs::kem, et ML-DSA-44, ML-DSA-65 et ML-DSA-87 dans aws_lc_rs::signature, qu’utilise l’exemple. Les tailles qu’il affiche (une clé publique de 1952 octets et une signature de 3309 octets pour ML-DSA-65, un texte chiffré de 1088 octets pour ML-KEM-768) sont ce que les certificats, les jetons et les handshakes doivent transporter ; le bac à sable des signatures post-quantiques et le bac à sable KEM les comparent aux algorithmes classiques.
Le chargement des clés est plus large que dans ring : les clés ECDSA se chargent depuis PKCS#8, SEC1 (RFC 5915) DER et un scalaire brut accompagné de sa clé publique ; les clés publiques, depuis SPKI DER et des points SEC1, compressés ou non. Contrairement à ring, Ed25519KeyPair::from_pkcs8 a accepté la forme PKCS#8 v1 de 48 octets qu’écrit OpenSSL.
Utilisez le convertisseur DER ⇄ brut lorsque vous soupçonnez une confusion entre FIXED et ASN1, et le générateur de configurations TLS pour les paramètres d’échange de clés hybride post-quantique.