"Cannot read properties of undefined (reading 'length')" when trying to work with output of pki.decryptRsaPrivateKey
メンテナーはふだん 1 日以内に返信
まだ誰も着手していません。
評価
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 初心者へのやさしさ
- 35/100
- issue の種類
- バグ
- 明瞭さ
- おおむね明確
- 活発さ
- 停滞
- 技術スタック
- javascript
- 領域
- cryptography, security
調査の方向性
Reproduce the supplied example and inspect the value passed from pki.decryptRsaPrivateKey into pki.wrapRsaPrivateKey. Trace the failure through lib/util.js:288 and lib/asn1.js:711, then determine the expected input and behavior for this encrypted PEM case. Done means the error is explained and the relevant key-conversion path is covered by a verified result.
索引モデルが issue の本文から書いたものです。
説明
I've an encrypted PEM key that I would like to feed into crypto.subtle.importKey. I can successfully decrypt the key via pki.decryptRsaPrivateKey, but I'm failing to make progress beyond that.
import forge from 'node-forge'
const key = `
-----BEGIN ENCRYPTED PRIVATE KEY-----
MIIFLTBXBgkqhkiG9w0BBQ0wSjApBgkqhkiG9w0BBQwwHAQIu1+bbUTCodgCAggA
MAwGCCqGSIb3DQIJBQAwHQYJYIZIAWUDBAEqBBCfvVDbZMTGx6A4eXBxXdTtBIIE
0IlJLqI5V1b1CPLHWGlQ2m3TQyQUZv5stxhTgTfyS1+TwldqKOqXEimPISvz63rO
Mz07abeEa7Pz/97uNst9pkd6XMIa/X/B0CdYMt4FQDVvdIRJgsW9t9lxXxNRvzIO
ljXoAywXq5RBSswnPiB/z+luzj3EJeDidaNJ2r9PQAFVcNYZn+1gwSIPe5llkZqM
GjhxscMlIYllUNWo37WoLkock0pJbQ6b+HJJMBxJzo4lefUIgZQ7s4JWwc1OIvHc
K4p16GTd7wz3FcOtrfSr7QsQ2oPMGADkDr603RaQoM13J43prnJxeTnHgnQNhqoe
Aw/19Y8hUyqKJ6ko1PwWCOibmu/oAnEJVR/BeuPD24mIXTqHUDg5RustKiuV7vgD
qD2B1rmZCnls1Liu6Ci4Q56kuC/gedtGOlffc4zYslGyN+MqQyaRbjfqg7gL5l/l
MZamqIcebI3vaWB6d7BvrnJJJVZaTtWYTzdt7btnHcUwDeTrk333GHIJZy2UJjvN
BIgNTmIgrewRKshQfGyx69VLh+eeCrZ+xhlkONtsdrqJs6kCqX4G6+sxAo638a73
h+cYD6+O6yZOD/4XbxbrpfL8WL6vSApjswMPG8jS9ExtTwgR9yoCFoW8cwFdLAUw
mbQaoMHBL83ZiJDr69qEld0d2GDnZUYHTFFyi7NKYch/VnXbsds6N2Bi2NoNb0CD
6ABaG3HaGF2OfQssGKViDM366Jnmki1/1o3SyvFizLns4ZlCo/NXpakyFfseFKrC
7SyHP2mv8YFq/n1VvsL1YL7lhWb3gxqA+yqmkbsDpy2HToHx03RoL7h3r4tN6WyT
TI14gZ0jx934x1lYjasVx3qnGlRQDjOMlYDp41/YVLqQarJX5kpuUOwwBpubPHti
L6bYnkaTytZ/CKR5P2O42qSUMXyY4u2G/oMURukjSB2xZn0+O3BVwjLkx4IsDkCC
cGcygSV1b21CGAuTLDNwPTHTTkl1BzebfHcvkT5TKbNvMDpsKP1Ge5u26uZrhOg2
c+UtLmMU1jroYhJd+qdG7T1w3lbKkyqABbP4HNOCbunDJwHmLFz3414SSxlQHHA7
DBFGu9E1yHXUleshyYq3Tr+Vkod1BptwHvTkvNIPsAKRPZoTAFT0lM7JUE/+P7KF
qlVdguCREQBt6IRL1s8SZdAZp9g/dDljm0SzTgHmSmGkMmNB87cn7nz+VF/7wKMG
KpW28cisUQsOt5NyboJXzFp1YYu2XOPXb9wzP2rj2JyFX9tMy4SzBU373n3J0d4d
5XKg6OYMqXGZuouNBfpd7CvqBJa3K7i5pso3ZIaQ797ZUH/Dq0XRNK9/KZ8G4MXc
BZJOWqBDZp3jQEk0husuE4/Q1jzf+mInfirl9fSNKewKHjsY8PlaeiFWfOuLm7lp
XW/ToHlcVT74c6wVtyZH/OA9M/GsIPJH0rTusT/2MwW/ajlFWPqK7ePGRr/KiB7g
05PZx+6FV8LmQ+SVNCchvoicxjf2O5E2RZsf7RwznVVCiWjy2/aScG02GQTX3f4q
3U+tMx+KhyG14cChq/K3eAuX71EKHpZrK3mbud8ao1+0KWOkXKtaxtWX96N6ek8d
T8mBr83IZ8bx7Ra6tiaYtWWiNf1TVqVhdx7LMDJYwRSq
-----END ENCRYPTED PRIVATE KEY-----`;
const privateKey = forge.pki.decryptRsaPrivateKey(key, '123');
// Convert the private key to a PKCS#8 ASN.1 structure
const privateKeyInfo = forge.pki.wrapRsaPrivateKey(privateKey);
const privateKeyDer = forge.asn1.toDer(privateKeyInfo).getBytes();
// Convert DER to ArrayBuffer
const privateKeyBuffer = new Uint8Array(privateKeyDer.length);
for (let i = 0; i < privateKeyDer.length; i++) {
privateKeyBuffer[i] = privateKeyDer.charCodeAt(i);
}
crypto.subtle.importKey(
"pkcs8", // PKCS#8 format for private keys
privateKeyBuffer.buffer,
{
name: "RSASSA-PKCS1-v1_5",
hash: "SHA-256",
},
false,
["sign"]
).then((privateKey) => {
console.log(privateKey)
});
^ here on line where I call wrapRsaPrivateKey I'm getting
TypeError: Cannot read properties of undefined (reading 'length')
at util.ByteStringBuffer.putBytes (/Users/gostrolucky/Documents/xxx/node_modules/node-forge/lib/util.js:288:41)
at asn1.toDer (/Users/gostrolucky/Documents/xxx/node_modules/node-forge/lib/asn1.js:711:15)
private key was generated with openssl genrsa -passout pass:123 -aes256
- 主要言語
- JavaScript
- スター
- 5.4k
- フォーク
- 875
- 平均マージ
- 3分
- マージ済み PR(30日)
- 6
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートなし
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
digitalbazaar/forge のほかの issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
digitalbazaar/forge#1170 ·
メンテナーはふだん 1 日以内に返信
-
難易度 3/5 1〜2日 初心者へのやさしさ 52/100
digitalbazaar/forge#1147 ·
メンテナーはふだん 1 日以内に返信
-
難易度 4/5 3〜5日 初心者へのやさしさ 45/100
digitalbazaar/forge#1146 ·
メンテナーはふだん 1 日以内に返信
-
難易度 4/5 3〜5日 初心者へのやさしさ 58/100
digitalbazaar/forge#1145 ·
メンテナーはふだん 1 日以内に返信
-
難易度 3/5 1〜2日 初心者へのやさしさ 48/100
digitalbazaar/forge#1144 ·
メンテナーはふだん 1 日以内に返信
digitalbazaar/forge の issue をすべて見る
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
ImranR98/apps.obtainium.imranr.dev#2000 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 66/100
-
難易度 2/5 1〜3時間 初心者へのやさしさ 83/100
microsoft/monaco-editor#5577 ·
メンテナーはふだん 1 日以内に返信
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 88/100
obsidianmd/obsidian-help#1169 ·
メンテナーはふだん 2 日以内に返信
-
[docs] RELEASE.md: wrong branch name, no check that the prepare PR merged with the right subject, manual publish step対応中かも @albertteoh が今日担当しました。 オープンdocumentation
難易度 2/5 1〜3時間 初心者へのやさしさ 85/100
jaegertracing/jaeger-ui#4739 ·
メンテナーはふだん 1 日以内に返信