libsodium ofrece un conjunto pequeño de primitivas que la biblioteca elige por ti, tras funciones difíciles de usar mal; viene incluida en PHP, la usan bindings para muchos lenguajes y está integrada en aplicaciones de mensajería. Las firmas son solo Ed25519: los archivos de cabecera de la 1.0.22 (comprobados con el paquete de Alpine 3.24.2) no declaran ninguna función ECDSA, así que todo lo que use ES256 o secp256k1 necesita otra biblioteca.
La firma Ed25519 es determinista, como especifica el RFC 8032 —dos firmas del mismo mensaje fueron idénticas—, y las funciones crypto_sign_*_ph implementan Ed25519ph, cuyas firmas no son intercambiables con las de Ed25519 simple: en la comprobación, el verificador simple rechazó una. La clave secreta ocupa 64 bytes, la semilla de 32 bytes seguida de la clave pública, mientras que la mayoría de las demás bibliotecas guardan solo la semilla; crypto_sign_ed25519_sk_to_seed y crypto_sign_seed_keypair convierten entre ambas formas, como muestra el ejemplo.
La verificación es estricta justo donde otras implementaciones difieren. Se rechazó una firma con S sustituido por S + L —el mismo valor módulo el orden del grupo, prohibido por el RFC 8032—, y también una firma comprobada con el punto identidad, de orden pequeño, como clave pública. Las bibliotecas que aceptan esas entradas discrepan de libsodium en los casos límite, lo que importa en los sistemas de consenso, que deben ponerse de acuerdo sobre qué es válido. crypto_sign_verify_detached no recibe la longitud de la firma y lee exactamente 64 bytes, así que comprueba la longitud antes de llamarla.
En la 1.0.22, la compatibilidad poscuántica se limita a la encapsulación de claves: crypto_kem_mlkem768_* (claves públicas de 1184 bytes, textos cifrados de 1088 bytes) y el híbrido X-Wing (crypto_kem_xwing_*, 1216 y 1120 bytes), que es también lo que usan por defecto las funciones genéricas crypto_kem_*. No hay ML-DSA ni ninguna otra firma poscuántica. Las claves son siempre bytes en bruto —claves públicas y semillas de 32 bytes—, sin compatibilidad con PEM, DER ni JWK. Compara los tamaños de los KEM en el laboratorio de KEM poscuánticos.