wolfSSL рассчитана на встраиваемые системы и развёртывания с сертификацией FIPS, и почти всё в ней задаётся параметрами компиляции: кривые, варианты EdDSA, детерминированные nonce, постквантовые алгоритмы и поддержка PEM появляются и исчезают вместе с флагами ./configure. Факты на этой странице относятся к пакету wolfSSL 5.9.4 из Alpine 3.24.2, собранному с HAVE_ECC, HAVE_ED25519, HAVE_CURVE25519 и WOLFSSL_HAVE_MLKEM, но без HAVE_ED448, HAVE_DILITHIUM, кривых Koblitz и Brainpool и без WOLFSSL_ECDSA_DETERMINISTIC_K. В собственной сборке любой из этих пунктов может отличаться.
wc_ecc_sign_hash подписывает вычисленный вами дайджест и возвращает DER; wc_ecc_verify_hash_ex принимает r и s как целые числа для подписей в формате raw. У проверки два результата: код возврата функции сообщает, смогла ли она выполниться, а аргумент int *res содержит вердикт. Вызов wc_ecc_verify_hash с подписью raw длиной 64 байта вернул -171 (ECC ASN1 bad key data, invalid input) с вердиктом 0; код, который проверяет только код возврата или только вердикт, неправильно обработает один из двух случаев. Пример выводит оба значения.
В этой сборке nonce случайные (для детерминированной подписи по RFC 6979 нужен WOLFSSL_ECDSA_DETERMINISTIC_K), s не нормализуется, а подписи с high-S проходят проверку. Поддерживаются кривые от P-224 до P-521; secp256k1 и Brainpool отсутствуют, если их не включить. Ed25519 работает, инкапсуляция и декапсуляция ML-KEM-768 через wc_MlKemKey_* прошли успешно; ML-DSA (Dilithium) в эту сборку не входит.
Ключи передаются в DER: wc_EccPublicKeyToDer записывает SPKI, а wc_EccKeyToDer — SEC1 ECPrivateKey; преобразование в PEM (wc_DerToPem) доступно, потому что пакет задаёт WOLFSSL_DER_TO_PEM. В пакете Alpine указана лицензия GPL-3.0-only; wolfSSL Inc. отдельно продаёт коммерческие лицензии. Сверяйте кодировки с другими стеками с помощью конвертера DER ⇄ raw.