aws-lc-rs stellt AWS-LC – Amazons Fork von BoringSSL – über eine API nach dem Vorbild von ring bereit, sodass sich der meiste ring-Code nach dem Ändern des Crate-Namens kompilieren lässt. aws-lc-rs ist der Standard-Kryptoprovider von rustls und die Bibliothek, zu der Rust-Dienste greifen, wenn sie eine Validierung nach FIPS 140-3 (Feature fips) oder Post-Quanten-Algorithmen brauchen. Die C-Bibliothek wird während des Builds kompiliert; für die Prüfung wurde 1.18.2 mit den Standard-Features im einfachen Image rust gebaut.
Die Signaturkodierungen funktionieren genau wie in ring: Die Konstanten *_FIXED erzeugen und akzeptieren 64 Byte rohes r‖s, die Konstanten *_ASN1 DER, und eine rohe Signatur scheiterte mit der ASN1-Prüfkonstante. Die Nonces sind zufällig, s wird nicht normalisiert, und die Prüfung akzeptiert beide Hälften (Low-S und High-S). Über P-256 und P-384 von ring hinaus signiert und prüft aws-lc-rs auch mit P-521 und secp256k1, jeweils mit Varianten für SHA-2 und SHA-3.
Post-Quanten-Algorithmen gehören in 1.18.2 zur stabilen API – für die Prüfung wurde ohne das Feature unstable gebaut: ML-KEM-512, ML-KEM-768 und ML-KEM-1024 in aws_lc_rs::kem sowie ML-DSA-44, ML-DSA-65 und ML-DSA-87 in aws_lc_rs::signature, die das Beispiel verwendet. Die Größen, die es ausgibt – ein öffentlicher Schlüssel mit 1.952 Byte und eine Signatur mit 3.309 Byte bei ML-DSA-65, ein Chiffrat mit 1.088 Byte bei ML-KEM-768 –, müssen Zertifikate, Tokens und Handshakes transportieren; der Playground für Post-Quanten-Signaturen und der KEM-Playground vergleichen sie mit klassischen Algorithmen.
Beim Laden von Schlüsseln ist aws-lc-rs vielseitiger als ring: ECDSA-Schlüssel lassen sich aus PKCS#8, SEC1-DER (RFC 5915) und einem rohen Skalar samt öffentlichem Schlüssel laden, öffentliche Schlüssel aus SPKI-DER und SEC1-Punkten, komprimiert oder nicht. Anders als in ring akzeptierte Ed25519KeyPair::from_pkcs8 hier die 48 Byte lange PKCS#8-v1-Form, die OpenSSL schreibt.
Nutze den Konverter DER ⇄ Raw, wenn du eine Verwechslung von FIXED und ASN1 vermutest, und den TLS-Konfigurationsgenerator für Einstellungen zum hybriden Post-Quanten-Schlüsselaustausch.