Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

ES256 errors with InvalidEcdsaKey

オープン
#331 コメント 5 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

評価

難易度
3/5
見積もり時間
1〜2日
初心者へのやさしさ
35/100
issue の種類
ドキュメント
明瞭さ
おおむね明確
活発さ
停滞
技術スタック
rust

調査の方向性

Issue に示されている secp256k1 と prime256v1 の鍵構造を、ring::io::der::expect_tag_and_get_value と tests.pem を使用する適応済みテストから調べて比較します。ライブラリが受け入れる曲線とアルゴリズムの組み合わせを検証します。対応している曲線、secp256k1 が InvalidEcdsaKey を生成する理由、および正しい鍵生成例を文書化できれば完了です。

索引モデルが issue の本文から書いたものです。

説明

Deep down in ring::io::der::expect_tag_and_get_value I always get an error bubbling up to an InvalidEcdsaKey. I think my brain melted trying to figure out the problem.

This is how I'm generating keys:

openssl ecparam -name secp256k1 -genkey -noout -out private.sec1.pem
openssl ec -in private.sec1.pem -pubout > public.pem
openssl pkcs8 -topk8 -nocrypt -in private.sec1.pem -out private.pkcs.pem

Here's the private key:

openssl asn1parse -i -in private.sec1.pem
    0:d=0  hl=2 l= 116 cons: SEQUENCE
    2:d=1  hl=2 l=   1 prim:  INTEGER           :01
    5:d=1  hl=2 l=  32 prim:  OCTET STRING      [HEX DUMP]:311AF2663D9B22B553BD72E1960640D8586C4A7D6CBA2B1915F8988E1FE0DFDF
   39:d=1  hl=2 l=   7 cons:  cont [ 0 ]
   41:d=2  hl=2 l=   5 prim:   OBJECT            :secp256k1
   48:d=1  hl=2 l=  68 cons:  cont [ 1 ]
   50:d=2  hl=2 l=  66 prim:   BIT STRING

Here's the key you use in tests:

openssl asn1parse -i -in tests.pem
    0:d=0  hl=3 l= 135 cons: SEQUENCE
    3:d=1  hl=2 l=   1 prim:  INTEGER           :00
    6:d=1  hl=2 l=  19 cons:  SEQUENCE
    8:d=2  hl=2 l=   7 prim:   OBJECT            :id-ecPublicKey
   17:d=2  hl=2 l=   8 prim:   OBJECT            :prime256v1
   27:d=1  hl=2 l= 109 prim:  OCTET STRING      [HEX DUMP]:306B020101042059315F08696363A6B0DC7AED90798F4626B3BA4C4F2DBEA29694407B08D6F278A14403420004C3B240A14FE025B649BD5FB308EBD4F72149AB414D0BF79D08C44CEFC3FC7904C10835132B5CB04986ACCEF419BE77A25BA80DB561099DD4AB784732C94755BE

I adapted your test and ran the test using the same curve your key uses and the curve I used based on a guide on Akamai and the test worked once I switched to prime256v1. I started typing this issue after an hour of debugging but found the fix while collecting all the details. Is there a reason one curve would work but not another? With the right info I'd like to document it so it doesn't trip up someone else.

主要言語
Rust
スター
2.1k
フォーク
371
PR マージ指標
30日以内にマージされた PR はありません

環境構築

このプロジェクトには開発コンテナ、Dockerfile、コントリビューションガイドがありません。まず README を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

Keats/jsonwebtoken のほかの issue

Keats/jsonwebtoken の issue をすべて見る

似ている issue

Rust の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。