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 を返します。生形式の署名には、r と s を整数として受け取る wc_ecc_verify_hash_ex を使います。検証の出力は 2 つあります。関数の戻り値は処理を実行できたかどうかを示し、int *res 引数には検証結果が入ります。64 バイトの生形式の署名を wc_ecc_verify_hash に渡すと、戻り値は -171(ECC ASN1 bad key data, invalid input)、検証結果は 0 でした。戻り値だけ、または検証結果だけを確認するコードは、2 つのケースのどちらかを誤って処理します。サンプルでは両方を出力しています。
このビルドでは、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 を書き出します。パッケージが WOLFSSL_DER_TO_PEM を設定しているため、PEM への変換(wc_DerToPem)も使えます。Alpine パッケージはライセンスを GPL-3.0-only と宣言しており、商用ライセンスは wolfSSL Inc. が別途販売しています。ほかのスタックとのエンコーディングの違いは、DER ⇄ 生形式の変換ツールで確認してください。