libsodium предлагает небольшой, намеренно ограниченный набор примитивов за функциями, которые трудно использовать неправильно; библиотека входит в состав PHP, на ней построены привязки для многих языков, и её встраивают в мессенджеры. Подписи только Ed25519: в заголовочных файлах версии 1.0.22 (проверено на пакете Alpine 3.24.2) не объявлено ни одной функции ECDSA, поэтому для всего, что работает с ES256 или secp256k1, нужна другая библиотека.
Подписание Ed25519 детерминированное, как и требует RFC 8032 (две подписи одного сообщения совпали), а функции crypto_sign_*_ph реализуют Ed25519ph, подписи которого нельзя использовать вместо обычных подписей Ed25519: при тестировании обычная функция проверки отклонила такую подпись. Секретный ключ занимает 64 байта: 32-байтовый seed, за которым следует открытый ключ, тогда как большинство других библиотек хранят только seed; crypto_sign_ed25519_sk_to_seed и crypto_sign_seed_keypair переводят одну форму в другую, как показано в примере.
Проверка строгая именно там, где реализации ведут себя по-разному. Подпись, в которой S заменили на S + L (значение, равное S по модулю порядка группы; RFC 8032 такие подписи запрещает), была отклонена, как и подпись, которую проверяли по нейтральному элементу группы (точке малого порядка) в качестве открытого ключа. Библиотеки, которые принимают такие входные данные, расходятся с libsodium в граничных случаях, а это важно для систем консенсуса, где все участники должны одинаково решать, действительна ли подпись. crypto_sign_verify_detached не принимает длину подписи и читает ровно 64 байта, поэтому проверяйте длину перед вызовом.
Постквантовые алгоритмы в 1.0.22 ограничены инкапсуляцией ключа: crypto_kem_mlkem768_* (1184-байтовые открытые ключи, 1088-байтовые шифртексты) и гибридный X-Wing (crypto_kem_xwing_*, 1216 и 1120 байт), который также используют по умолчанию универсальные функции crypto_kem_*. ML-DSA и других постквантовых подписей нет. Ключи везде представлены сырыми байтами (32-байтовые открытые ключи и seed), PEM, DER и JWK не поддерживаются. Сравните размеры KEM в песочнице постквантовых KEM.