O aws-lc-rs expõe o AWS-LC — o fork do BoringSSL mantido pela Amazon — por meio de uma API inspirada no ring, de modo que a maior parte do código escrito para o ring compila depois de trocar o nome do crate. Ele é o provedor de criptografia padrão do rustls e é a opção dos serviços Rust que precisam de validação FIPS 140-3 (a feature fips) ou de algoritmos pós-quânticos. A biblioteca C é compilada durante o build; o teste compilou a versão 1.18.2 com as features padrão na imagem rust simples.
As codificações de assinatura funcionam exatamente como no ring: as constantes *_FIXED produzem e aceitam r‖s bruto de 64 bytes, as constantes *_ASN1, DER, e uma assinatura bruta falhou com a constante de verificação ASN1. Os nonces são aleatórios, o s não é normalizado e a verificação aceita as duas metades. Além das curvas P-256 e P-384 do ring, ele assina e verifica na P-521 e na secp256k1, com variantes SHA-2 e SHA-3.
Os algoritmos pós-quânticos fazem parte da API estável na versão 1.18.2 — o teste compilou sem a feature unstable: ML-KEM-512, ML-KEM-768 e ML-KEM-1024 em aws_lc_rs::kem, e ML-DSA-44, ML-DSA-65 e ML-DSA-87 em aws_lc_rs::signature, que o exemplo usa. Os tamanhos que ele imprime — uma chave pública de 1952 bytes e uma assinatura de 3309 bytes no ML-DSA-65, um texto cifrado de 1088 bytes no ML-KEM-768 — são o que certificados, tokens e handshakes precisam transportar; o playground de assinaturas pós-quânticas e o playground de KEM os comparam com algoritmos clássicos.
O carregamento de chaves é mais amplo que o do ring: chaves ECDSA são carregadas de PKCS#8 e SEC1 (RFC 5915) em DER e de um escalar bruto acompanhado da chave pública; chaves públicas, de SPKI DER e de pontos SEC1, comprimidos ou não. Ao contrário do ring, Ed25519KeyPair::from_pkcs8 aceitou a forma PKCS#8 v1 de 48 bytes que o OpenSSL grava.
Use o conversor DER ⇄ bruto quando suspeitar de uma incompatibilidade entre FIXED e ASN1, e o gerador de configurações TLS para as configurações de troca de chaves híbrida pós-quântica.