Signature is generated differently on Node v4 and Node v6
評価
- 難易度
- 3/5
- 見積もり時間
- 1〜2日
- 初心者へのやさしさ
- 35/100
- issue の種類
- バグ
- 明瞭さ
- おおむね明確
- 活発さ
- 停滞
- 技術スタック
- javascript, node.js
調査の方向性
index.js の 35 行目から始めます。ここでは hmac.update(thing) に続いて hmac.digest('base64') が呼び出されています。提供された payload と secret を使い、Node v4 と v6 で報告された出力を再現してください。リンクされている Node crypto のエンコーディング変更を確認し、完成した fix によって両方のバージョンで一貫した HS256 署名が生成されることを検証してください。リポジトリにテストがある場合は、リグレッションテストのカバレッジも追加してください。
索引モデルが issue の本文から書いたものです。
説明
Hello,
I'm trying to switch a project from Node v4 to Node v6, but I'm facing a little problem.
We are using node-jsonwebtoken, which use this library to sign jwt, and it seems that signatures are not generated the same way on node v4 and v6.
I've investigated the issue, I ended up here and found where it happens.
My secret and my payload look like this :
const crypto = require('crypto');
const secret = crypto.createHash('sha256').update('secret').digest('binary');
const payload = {
uid: 'test',
iat: 1455988418,
iss: 'test'
};
Then, if I generate a signature :
const jwa = require('jwa');
const algo = jwa('HS256');
const sig = algo.sign(payload, secret);
console.log(sig);
// Node v4 => "_zPq9vDP4_Ve0mTVTF_9H3NRkluQhoR4yAg8X4yqR8Q"
// Node v6 => "hk9bpxID-HOmvNpJUy7x80KqT5JP8tb_BoAJLYVIYsE"
After reading the code of this library, seems that the problem is coming from this line => https://github.com/brianloveswords/node-jwa/blob/master/index.js#L35
The signature is generated like this :
var sig = (hmac.update(thing), hmac.digest('base64'));
I went back to the crypto library, and found that crypto default encoding for digest has changed between node 4 and 6 ( https://github.com/nodejs/node/issues/6813#issuecomment-219753580 )
I tried to change in the lib hmac.update(thing) to hmac.update(thing, 'binary') but it changes nothing.
By the way, the secret generated is still the same between Node 4 and Node 6.
Do you have any idea of what is happening ?
Thanks a lot for this library, and for your help :)
Have a nice day.
- 主要言語
- JavaScript
- スター
- 103
- フォーク
- 44
- PR マージ指標
- 30日以内にマージされた PR はありません
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートなし
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
auth0/node-jwa のほかの issue
-
Remove unnecessary safe-buffer dependency (use Node.js built-in Buffer API)再び着手できるかも このイシューのプルリクエストはマージされずにクローズされました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 48/100
-
難易度 2/5 1〜3時間 初心者へのやさしさ 45/100
-
Enhancement/ tech debt: use Node's built-in toString(base64url)対応中かも @jimmywarting が 1148 日前に担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 55/100
-
move from `buffer-equal-constant-time` to `timingSafeEqual`対応中かも @jimmywarting が 1148 日前に担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 35/100
-
Deprecating jwa and jws packages対応中かも @jimmywarting が 1148 日前に担当しました。 オープン
難易度 3/5 1〜2日 初心者へのやさしさ 25/100
似ている issue
-
難易度 1/5 1〜3時間 初心者へのやさしさ 87/100
OWASP/CheatSheetSeries#2905 ·
メンテナーはふだん 1 日以内に返信
-
desktop enhancement P2
難易度 2/5 1〜3時間 初心者へのやさしさ 62/100
メンテナーはふだん 1 日以内に返信
-
難易度 1/5 1時間未満 初心者へのやさしさ 74/100
AllTheMods/ATM10-Aeronautics#159 ·
メンテナーはふだん 6 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
ComposioHQ/composio#5249 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 84/100
zilliztech/memsearch#838 ·
メンテナーはふだん 1 日以内に返信