リファレンス
ライブラリ
ライブラリとコマンドラインツール 59 件について、相互運用性を損なう挙動(署名のエンコーディング、nonce、low-S、曲線、鍵の形式、JWT のデフォルト設定)を記録しています。ドキュメントからの転記ではなく、それぞれを実際に実行して確かめた結果です。
59 件中 59 件を表示
言語別
Node.js
- @noble/curvesPaul Miller による、監査済みで依存関係のない JavaScript の楕円曲線ライブラリです。NIST、secp256k1、Brainpool の各曲線での ECDSA、EdDSA、Schnorr などに対応し、バージョン 2 以降のデフォルトは決定的署名、low-S、メッセージのハッシュ化です。Node.jsWebCryptoECDSAEdDSA確認したバージョン:2.4.0 · 2026年10月20日
- ellipticFedor Indutny による elliptic は、10 年にわたってブラウザー向けバンドルやウォレットを支えてきた、純粋な JavaScript による ECDSA・EdDSA ライブラリです。デフォルトでは決定的ですが low-S ではなく、入力はダイジェストのみで、P-521 で誤った nonce が生じるという未解決のアドバイザリがあります。Node.jsECDSAEdDSA確認したバージョン:6.6.1 · 2026年10月20日
- ethers.jsethers.js v6 は、Ethereum のウォレットとコントラクトを扱う定番の JavaScript ライブラリです。v = 27/28 の 65 バイトの r‖s‖v 署名、EIP-191 によるメッセージのハッシュ化、RFC 6979 の nonce を使い、high-S 署名は一律に拒否します。Node.jsWebCryptoECDSAEthereum と Bitcoin確認したバージョン:6.17.0 · 2026年10月20日
- jose (panva)Filip Skokan による jose は、WebCrypto の上に構築された、依存関係のない JOSE 実装(JWS、JWE、JWK、JWKS、JWT)です。Node.js、ブラウザー、Deno、Bun、エッジランタイムでそのまま動作し、EdDSA と ML-DSA に対応しますが、secp256k1 には対応していません。Node.jsWebCryptoJOSE と JWT確認したバージョン:6.2.13 · 2026年10月20日
- jsonwebtoken (Node.js)Auth0 の jsonwebtoken は、Node.js でインストール数が最も多い JWT パッケージです。node:crypto の上で HMAC、RSA、ECDSA のトークンを扱い、バージョン 9 以降はアルゴリズムのチェックが鍵の種類に結び付けられていますが、EdDSA には対応していません。Node.jsJOSE と JWT確認したバージョン:9.0.3 · 2026年10月20日
- node-forgeDigital Bazaar による node-forge は、純粋な JavaScript で書かれた TLS、PKI、PKCS のツールキットです。RSA、PKCS#12、X.509、Ed25519 に対応していますが、ECDSA はまったくサポートしていないため、楕円曲線の鍵や証明書を読み込めません。Node.jsEdDSA確認したバージョン:1.4.0 · 2026年10月20日
- Node.js node:cryptoNode.js に組み込まれた crypto モジュールです。各 Node.js リリースに同梱された OpenSSL の上で ECDSA、EdDSA、RSA、ポスト量子の署名を扱い、デフォルトでは署名は DER、nonce はランダムで、low-S のポリシーはありません。Node.jsECDSAEdDSAポスト量子暗号確認したバージョン:24.22.0 · 2026年10月20日
- SimpleWebAuthnSimpleWebAuthn は Matthew Miller による、TypeScript で最も広く使われているパスキーライブラリです。オプションのジェネレーターとレスポンスの検証関数を備え、デフォルトでユーザー検証を必須とし、アサーション署名は DER のみを受け付け、カウンターの巻き戻りを拒否します。Node.jsWebCryptoWebAuthn確認したバージョン:14.0.3 · 2026年10月20日
- viemwevm の viem は、wagmi が使っている Ethereum 用の TypeScript インターフェースです。v = 27/28 の 65 バイトの r‖s‖v 署名、EIP-191 によるハッシュ化、RFC 6979 を使います。ただし ethers と異なり、high-S 署名からも署名者を復元し、EIP-2098 のコンパクト署名は読み込めません。Node.jsWebCryptoECDSAEthereum と Bitcoin確認したバージョン:2.57.7 · 2026年10月20日
WebCrypto
Python
- Authlib (authlib.jose)Authlib の JOSE モジュールは、Authlib の OAuth と OpenID Connect のクライアントとサーバーの基盤となるトークン層です。1.9 で非推奨となって joserfc への移行が勧められており、クレームを検証せずにデコードし、alg: none もリストに含めれば許可します。PythonJOSE と JWT確認したバージョン:1.9.1 · 2026年10月20日
- coincurveOfek Lev による coincurve は、Bitcoin Core の libsecp256k1 の Python バインディングです。デフォルトでは SHA-256 に対する DER 署名を生成し、RFC 6979 を使い、署名側でも検証側でも low-S を厳格に適用します。復元可能な署名と BIP-340 Schnorr 署名にも対応しています。PythonECDSA確認したバージョン:21.0.0 · 2026年10月20日
- JWCryptoRed Hat の JWCrypto は、FreeIPA や多くのエンタープライズ向け Python サービスで使われている JOSE 実装です。ML-DSA を含めて JWS、JWE、JWK を網羅し、時刻のずれの許容はデフォルトで 60 秒、alg: none は明示的に求めた場合にだけ受け入れます。PythonJOSE と JWT確認したバージョン:1.6.1 · 2026年10月20日
- py_webauthnDuo Labs の py_webauthn は、Python 向けの WebAuthn リライングパーティライブラリの定番です。アサーション署名は DER のみを受け付け、カウンターのチェックも厳格ですが、ユーザー検証は明示的に求めない限り強制されません。PythonWebAuthn確認したバージョン:3.0.1 · 2026年10月20日
- pyca/cryptographyPython Cryptographic Authority の cryptography パッケージは、Python で標準的に使われる暗号ライブラリです。OpenSSL をバックエンドとする ECDSA(署名は DER、RFC 6979 はオプトイン)、EdDSA、ML-KEM、ML-DSA を備えますが、JWK には対応していません。PythonECDSAEdDSAポスト量子暗号確認したバージョン:50.0.2 · 2026年10月20日
- PyJWTJosé Padilla による PyJWT は、Python で最も使われている JWT ライブラリです。algorithms の一覧を明示することが必須で、alg: none は決して検証を通らず、公開鍵を HMAC シークレットとして使うことは拒否されます。ただし、有効期限は任意で、時刻のずれの許容(leeway)はゼロです。PythonJOSE と JWT確認したバージョン:2.15.1 · 2026年10月20日
- python-ecdsatlsfuzzer による純粋な Python 実装の ECDSA・EdDSA ライブラリです。指定しなければ SHA-1 で生の r‖s 署名を作り、nonce はデフォルトでランダム(RFC 6979 はメソッドを 1 つ替えるだけで使えます)、公開鍵はプレフィックスのない x‖y です。PythonECDSAEdDSA確認したバージョン:0.19.2 · 2026年10月20日
- python-josepython-jose は、今も FastAPI のチュートリアルでよく使われる JOSE ライブラリです。algorithms は省略可能で、PS と EdDSA には対応せず、P-384 鍵で署名した ES256 トークンを作れてしまいます。さらに、DER の公開鍵を HMAC シークレットとして使えてしまう未修正のアドバイザリがあります。PythonJOSE と JWT確認したバージョン:3.5.0 · 2026年10月20日
- web3.py (eth-account)Ethereum Foundation の web3.py です。署名は eth-account が担い、v = 27/28 の 65 バイトの r‖s‖v 署名、EIP-191、RFC 6979 を使います。また、viem と同様に、ethers とは異なり high-S 署名からも署名者を復元します。PythonECDSAEthereum と Bitcoin確認したバージョン:8.0.0 · 2026年10月20日
Go
- Go crypto/ecdsa (standard library)Go 標準ライブラリの署名関連パッケージ(crypto/ecdsa と crypto/x509、ed25519、mlkem、mldsa)です。署名は渡されたダイジェストに対する DER 形式で、nonce は渡した Reader を無視してランダムに生成され、曲線は NIST 曲線のみです。GoECDSAEdDSAポスト量子暗号確認したバージョン:1.27.3 · 2026年10月20日
- go-ethereum cryptogo-ethereum(geth)の crypto パッケージです。secp256k1 でメッセージのプレフィックスを付けずに 32 バイトのハッシュに署名し、署名は v = 0/1 の 65 バイトです。検証関数は high-S を拒否しますが、公開鍵の復元では受け入れられます。GoECDSAEthereum と Bitcoin確認したバージョン:1.17.8 · 2026年10月20日
- go-josego-jose は、Kubernetes、Vault、Dex などのプロジェクトが使う Go の JOSE 実装です。v4 以降は解析時にアルゴリズムの一覧が必須で、署名の検証とクレームの検証は別々の呼び出しで行い、時刻の許容誤差(leeway)のデフォルトは 1 分です。GoJOSE と JWT確認したバージョン:4.1.6 · 2026年10月20日
- go-webauthngo-webauthn は、Go 向けの WebAuthn リライングパーティライブラリです。アサーション署名は DER のみ、ユーザー検証の要否はセッションで決まり、カウンターの巻き戻りはログインの失敗ではなくクローンの警告として報告されます。GoWebAuthn確認したバージョン:0.18.2 · 2026年10月20日
- golang-jwt/jwtgolang-jwt/jwt は、dgrijalva/jwt-go の後継としてコミュニティが保守する、Go で最も使われている JWT パッケージです。検証は鍵の型に基づいて行われ、none は明示的なセンチネル値を使ったときにだけ受け入れられ、有効期限は要求しない限り任意です。GoJOSE と JWT確認したバージョン:5.3.1 · 2026年10月20日
Java
- Bouncy Castle (Java)The Legion of the Bouncy Castle による Java プロバイダー兼 PKIX ツールキットです。JDK が削除したすべての曲線、指定すれば使える決定的 ECDSA、PEM の解析、そして JVM で最も多くの種類のポスト量子署名を提供します。JavaKotlinECDSAEdDSAポスト量子暗号確認したバージョン:1.86 · 2026年10月20日
- Java JCA (SunEC, JDK 25)JDK 25 時点の、SunEC プロバイダーを使った Java 暗号化アーキテクチャ(JCA)です。ECDSA 署名はデフォルトで DER(P1363 形式のバリアントもあり)、nonce はランダム、曲線は NIST の 3 曲線のみで、ほかに Ed25519、Ed448、ML-KEM、ML-DSA に対応します。JavaKotlinECDSAEdDSAポスト量子暗号確認したバージョン:25.0.4.1 · 2026年10月20日
- java-jwt (Auth0)Auth0 の java-jwt は、コンパクトな JWT ライブラリです。各検証器は 1 つの Algorithm オブジェクトに結び付けられ、JWT.decode() は何もチェックせず、アルゴリズムは HS、RS、ES までで、PS256 と EdDSA はありません。JavaKotlinJOSE と JWT確認したバージョン:4.6.2 · 2026年10月20日
- JJWT (io.jsonwebtoken)Les Hazlewood による JJWT は、Java と Android で広く使われている JWT ライブラリです。検証鍵によって受け入れるアルゴリズムが決まり、署名のないトークンには明示的な unsecured() パーサーが必要で、弱い HMAC 鍵は無条件に拒否されます。JavaKotlinJOSE と JWT確認したバージョン:0.13.0 · 2026年10月20日
- jose4jBrian Campbell による jose4j は、Java で書かれた複数の ID サーバーを支える JOSE ライブラリです。JwtConsumer はデフォルトで none をブロックし、種類の合わない鍵を拒否しますが、制限しない限り、鍵で使えるそれ以外のアルゴリズムはすべて許可します。JavaKotlinJOSE と JWT確認したバージョン:0.9.7 · 2026年10月20日
- Nimbus JOSE + JWTConnect2id の Nimbus JOSE + JWT は、Spring Security や多くの Java の OAuth サーバーの内部で使われている JOSE ライブラリです。プロセッサーでは鍵セレクターがアルゴリズムの許可リストとなり、署名のないトークンは拒否され、時刻のずれはデフォルトで 60 秒まで許容されます。JavaKotlinJOSE と JWT確認したバージョン:10.10 · 2026年10月20日
- Tink (Java)Google の Tink for Java は、鍵セットとテンプレートを中心に設計された、誤用しにくい暗号 API です。デフォルトの署名には、ほかのライブラリが解釈できない 5 バイトの Tink プレフィックスが付き、テンプレート名からはどのエンコーディングになるかがわかりません。JavaKotlinECDSAEdDSA確認したバージョン:1.24.0 · 2026年10月20日
- WebAuthn4JWebAuthn4J は、Spring Security のパスキー対応と Keycloak の基盤となっている WebAuthn 検証ライブラリです。ユーザー検証に隠れたデフォルト値はなく、署名は DER のみを受け付け、カウンターが巻き戻ると必ずエラーになります。JavaKotlinWebAuthn確認したバージョン:0.31.11.RELEASE · 2026年10月20日
.NET
- .NET System.Security.Cryptography.NET の System.Security.Cryptography です。ECDSA は OpenSSL ベースのどのスタックとも異なり、デフォルトで生の r‖s(IEEE P1363)で署名します。Ed25519 は標準では含まれず、ポスト量子暗号のクラスが使えるかどうかは OS によって異なります。.NETECDSA確認したバージョン:10.0.13 · 2026年10月20日
- Bouncy Castle for .NET (BouncyCastle.Cryptography)Bouncy Castle for .NET は、基本クラスライブラリに欠けている機能を補うために .NET 開発者が追加するマネージドの暗号ライブラリです。Ed25519 と Ed448、すべてのプラットフォームで使える secp256k1、決定的 ECDSA、PGP、PEM、そして OS に依存しない ML-KEM、ML-DSA、SLH-DSA を提供します。.NETECDSAEdDSAポスト量子暗号確認したバージョン:2.7.0 · 2026年10月20日
- Microsoft.IdentityModel (JsonWebTokenHandler)Microsoft.IdentityModel の JsonWebTokenHandler は、ASP.NET Core の認証と Microsoft Entra ID の SDK の内部で使われる JWT バリデーターです。デフォルトで 5 分の時刻のずれを許容し、exp を必須とし、P-384 の鍵による ES256 トークンも受け入れます。.NETJOSE と JWT確認したバージョン:8.23.0 · 2026年10月20日
Rust
- aws-lc-rsAWS の aws-lc-rs は、AWS-LC の C ライブラリ上に構築された ring 互換の Rust API です。ring と同じ FIXED/ASN1 のエンコーディング定数に加え、安定版 API で P-521、secp256k1、ML-KEM、ML-DSA を提供し、オプションで FIPS 140-3 ビルドも利用できます。RustECDSAEdDSAポスト量子暗号確認したバージョン:1.18.2 · 2026年10月20日
- jsonwebtoken (Rust)Vincent Prouillet による jsonwebtoken クレートは、Rust で最も使われている JWT ライブラリです。Algorithm は none を含まない閉じた列挙型で、exp は必須、時刻のずれの許容(leeway)はデフォルトで 60 秒です。さらにバージョン 10 以降は、暗号バックエンドを自分で選ぶ必要があります。RustJOSE と JWT確認したバージョン:11.1.0 · 2026年10月20日
- ringring は Brian Smith による Rust の暗号ライブラリで、rustls や多くの Web サーバーの基盤です。API は意図的に小さく、アルゴリズム定数で署名のエンコーディングが決まり、秘密鍵は PKCS#8 のみ、曲線は P-256、P-384、Ed25519 です。RustECDSAEdDSA確認したバージョン:0.17.14 · 2026年10月20日
- RustCrypto ecdsa (p256, p384, k256)RustCrypto による純粋な Rust 実装の ECDSA です。ecdsa クレートと曲線ごとのクレート(p256、p384、p521、k256…)で構成され、デフォルトは RFC 6979 と生の r‖s です。ただし secp256k1 は署名側と検証側の両方で low-S ですが、NIST 曲線はそうではありません。RustECDSA確認したバージョン:0.17.0 · 2026年10月20日
PHP
- firebase/php-jwtfirebase/php-jwt は、PHP で最も多くインストールされている JWT パッケージです。Key オブジェクトでアルゴリズムを固定し、短い HMAC 鍵を拒否します。ただし ES512 と PS384/512 には対応せず、発行者とオーディエンスのチェックもなく、P-384 鍵による ES256 も受け入れます。PHPJOSE と JWT確認したバージョン:7.2.1 · 2026年10月20日
- lcobucci/jwtLuís Cobucci による lcobucci/jwt は、Laravel Passport や多くの PHP フレームワークを支える JWT ライブラリです。すべてのチェックは明示的な制約として指定し、assert() は制約なしでは実行されず、鍵長も強制されます。ただし、RSA-PSS には対応していません。PHPJOSE と JWT確認したバージョン:5.6.1 · 2026年10月20日
- PHP openssl extensionPHP に同梱されている openssl 拡張です。リンクされた OpenSSL の曲線で DER 形式の ECDSA 署名を扱い、Ed25519 と Ed448 の鍵の種類を備えますが、openssl_verify() は不正な形式の入力に対して -1(真と評価される値)を返します。PHPECDSAEdDSA確認したバージョン:8.5.11 · 2026年10月20日
- web-token (JWT Framework)Florent Morselli による JWT Framework(web-token)は、PHP と Symfony 向けの完全な JOSE 実装です。AlgorithmManager が許可リストとして機能し、クレームのチェックは別のチェッカーが行います。RFC 7518 のすべての署名アルゴリズムと EdDSA に対応していますが、ES256K には対応していません。PHPJOSE と JWT確認したバージョン:4.2.3 · 2026年10月20日
Ruby
- Ruby OpenSSL (openssl gem)Ruby の openssl gem は、Ruby のあらゆる暗号ライブラリと JWT ライブラリの土台となるバインディングです。署名は DER 形式で、形式の誤った入力に対しては false を返さずに例外を発生させます。また、OpenSSL 3 では鍵がイミュータブル(変更不可)で、汎用の PKey API で ML-DSA も扱えます。RubyECDSAEdDSAポスト量子暗号確認したバージョン:4.0.2 · 2026年10月20日
- ruby-jwt (jwt gem)ruby-jwt は、ほとんどの Ruby・Rails アプリケーションで使われている jwt gem です。algorithm の明示が必須で、鍵の種類がチェックされ、ES256K も含まれます。ただし EdDSA は 3.x で別の gem に移り、短い HMAC シークレットも警告なしで受け入れられます。RubyJOSE と JWT確認したバージョン:3.3.0 · 2026年10月20日
Swift
- Apple CryptoKitApple CryptoKit は、iOS と macOS に組み込まれた Swift の暗号フレームワークです。ECDSA 署名は生形式と DER の両方を扱え、Ed25519 署名はランダム化され、バージョン 26 のリリース以降は ML-KEM、ML-DSA、X-Wing を備えます。Secure Enclave の鍵は、API からは不透明なハンドルとしてのみ扱えます。SwiftECDSAEdDSAポスト量子暗号確認したバージョン:macOS 27.0.1 · 2026年10月20日
- swift-cryptoswift-crypto は、CryptoKit のない Linux などのプラットフォーム向けに Apple がオープンソースで公開している CryptoKit API です。ソースに同梱された BoringSSL 上で同じ Swift の型を提供します。macOS の CryptoKit ではランダム化される Ed25519 署名がここでは決定的になり、Secure Enclave はありません。SwiftECDSAEdDSAポスト量子暗号確認したバージョン:5.0.3 · 2026年10月20日
C
- BoringSSLGoogle の BoringSSL は、Chrome と Android で使われている OpenSSL のフォークです。ECDSA は DER 形式で NIST 曲線のみに対応し、ほかに Ed25519 と、専用の API による ML-KEM、ML-DSA、SLH-DSA を備えます。リリースはなく、安定性の保証もありません。CC++ECDSAEdDSAポスト量子暗号確認したバージョン:2026-10-19-b50cad27ee80 · 2026年10月20日
- GnuTLSGnuTLS は GNU プロジェクトの TLS・X.509 ライブラリです。NIST 曲線での DER 形式の ECDSA、フラグで有効にする RFC 6979、Ed25519、Ed448 に対応しています。ただし、確認したディストリビューションのビルドには secp256k1 がなく、動作するポスト量子アルゴリズムもありません。CコマンドラインECDSAEdDSA確認したバージョン:3.8.13 · 2026年10月20日
- liboqs (Open Quantum Safe)liboqs は、Open Quantum Safe プロジェクトによるポスト量子 KEM と署名の C ライブラリです。ML-KEM、ML-DSA、SLH-DSA と多数の候補アルゴリズムを 1 つの API で提供していますが、作者たちの言葉によれば、研究とプロトタイピングを目的としたものです。Cポスト量子暗号確認したバージョン:0.16.0 · 2026年10月20日
- LibreSSLOpenBSD の LibreSSL は、2014年に OpenSSL からフォークされたライブラリで、OpenBSD と macOS のシステムツールで使われています。ECDSA の DER 形式と鍵の形式は OpenSSL と同じで、Ed25519 はありますが Ed448 はなく、ML-KEM は独自の API で提供され、ML-DSA と RFC 6979 には対応していません。CコマンドラインECDSAEdDSAポスト量子暗号確認したバージョン:4.3.1 · 2026年10月20日
- libsecp256k1 (Bitcoin Core)Bitcoin Core の libsecp256k1 は、secp256k1 のリファレンス実装です。署名は不透明な構造体で、コンパクト形式か厳格な DER にシリアライズされます。nonce は RFC 6979 に従い、署名側でも検証側でも low-S を適用し、公開鍵の復元と BIP-340 Schnorr 署名にも対応しています。CECDSA確認したバージョン:0.5.0 · 2026年10月20日
- libsodiumFrank Denis による libsodium は、NaCl の移植性の高いフォークです。厳格に検証される Ed25519 署名、X25519、認証付き暗号、ML-KEM-768 とハイブリッド KEM の X-Wing を備えますが、ECDSA にはまったく対応していません。CEdDSAポスト量子暗号確認したバージョン:1.0.22 · 2026年10月20日
- Mbed TLS (TF-PSA-Crypto)Mbed TLS 4.x は、暗号処理が PSA Crypto API に移った組み込み向けの TLS スタックです。ECDSA 署名は生の r‖s 形式で、決定的 ECDSA は別のアルゴリズムとして扱われ、鍵ごとのポリシーでアルゴリズムが固定されます。CECDSAポスト量子暗号確認したバージョン:4.1.1 · 2026年10月20日
- NSS (Network Security Services)NSS は、Firefox と Thunderbird を支える Mozilla の暗号・TLS ライブラリです。署名の層が 2 つあり、ECDSA のエンコーディングが層によって異なります(cryptohi 経由では DER、PK11 経由では生の r‖s)。曲線は P-256 から P-521 までのみで、Ed25519 と ML-KEM にも対応しています。CコマンドラインECDSAEdDSAポスト量子暗号確認したバージョン:3.124 · 2026年10月20日
- OpenSSLOpenSSL は、インターネット上の TLS の大半と署名処理の多くを支える C ライブラリ兼コマンドラインツールです。署名は DER、nonce はランダム(指定すれば RFC 6979 も使用可能)で、一般的な曲線にはすべて対応し、3.5 以降は ML-KEM、ML-DSA、SLH-DSA も使えます。COpenSSLコマンドラインECDSAEdDSAポスト量子暗号確認したバージョン:3.5.9 · 2026年10月20日
- wolfSSL (wolfCrypt)wolfSSL の組み込み向け TLS と wolfCrypt ライブラリです。ECDSA は呼び出し側が渡すダイジェストに DER 形式で署名し、検証関数は戻り値と検証結果を別々に返します。使える機能は、すべてビルド方法次第です。CECDSAEdDSAポスト量子暗号確認したバージョン:5.9.4 · 2026年10月20日
コマンドライン
- GnuPG (gpg)GnuPG 2.4 は、gpg の基盤となる OpenPGP 実装です。デフォルトの Ed25519 鍵は 3 年で期限切れになり、ECDSA は NIST、Brainpool、secp256k1 の各曲線で RFC 6979 の決定的な署名を行い、Ed25519 はダイジェストに署名します。ポスト量子アルゴリズムにはまだ対応していません。コマンドラインECDSAEdDSA確認したバージョン:2.4.9 · 2026年10月20日
- OpenSSH (ssh-keygen)OpenSSH 10 は SSH のツール群で、付属の ssh-keygen は鍵の変換や、ファイルと git コミットへの署名も行います。デフォルトの鍵は Ed25519 で、ML-KEM のハイブリッド鍵交換を最優先し、DSA は削除済みです。また、ECDSA 署名には SSH 独自の mpint エンコーディングを使います。コマンドラインECDSAEdDSAポスト量子暗号確認したバージョン:10.3p1 · 2026年10月20日