Releases: misskey-dev/node-http-message-signatures
Releases · misskey-dev/node-http-message-signatures
v1.0.0-beta.1
- Implement RFC 9421 sign/verify
Full Changelog: 0.0.10...1.0.0-beta.1
v0.0.10
v0.0.9
0.0.8
- RFC 9530に対応しました。
Content-Digestのみに対応しています。Repr-Digestの対応は重視していません。- 扱えるアルゴリズムは、Web Crypto APIとRFC 9530レジストリの両方にあるsha-256とsha-512のみです。
genRFC9530DigestHeaderでは、require('structured-headers').parseDictionaryでパースした要求ヘッダのWant-*-Digestをもとにダイジェストを1つ選んで返す機能があります。verifyRFC9530DigestHeaderで来たRequest/Responseの検証に対応します。opts.verifyAllでは、複数のアルゴリズムのダイジェストが含まれていた場合に、全てを検証するか一つだけ検証するかを選びます。algorithmsでは、検証可能なアルゴリズムを文字列配列で設定します。また、verifyAll: false時には、algorithmsの若いインデックスのものからアルゴリズムを選択します。
genDigestHeaderBothRFC3230AndRFC9530を作成しました- 第1引数のrequestに対して
Digest(RFC 3230)ヘッダおよびContent-Digest(RFC 9530)ヘッダを追加します。
- 第1引数のrequestに対して
verifyDigestHeader/verifyRFC3230DigestHeader/verifyRFC9530DigestHeaderで第3引数のオブジェクトへalgorithmsとしてハッシュアルゴリズム文字列配列を指定することで、認証するアルゴリズムを制限することができるようになりました。algorithmsの初期値は['SHA-256', 'SHA-512']です。verifyDigestHeader/verifyRFC3230DigestHeaderでは、従来第3引数はfailOnNoDigest (boolean)でしたが、booleanとobjectの両方に対応しています。
- ダイジェストを比較する際、「来たbodyのダイジェストをbase64に変換し、base64文字列同士を比較」する方式から「Digestヘッダのbase64をUint8Arrayに変換し、来たbodyのダイジェストを計算し(base64にせず)、Uint8Array同士を比較」する方式にしました。
- RFC 9421のSignature Baseを生成するための
RFC9421SignatureBaseFactoryを作成しました(RFC 9421の部分的実装)
0.0.7
0.0.6
0.0.5
- EC鍵でのsign/verifyでhashがない旨のエラーが発生するのを修正
- verifyDraftSignatureでパースされたシグネチャのアルゴリズムと実際のキーのアルゴリズムの比較ができていなかったのを修正
- 主要でない関数(README.mdで紹介がない関数)に若干の変更
Full Changelog: 0.0.4...0.0.5
0.0.4
0.0.3
crypto.subtle.importKeyが割と重たいので、verifyとsignへ事前にインポートしたCryptoKeyを与えられるようにします。verifyDraftSignatureが第2引数にwebcrypto.CryptoKeyを取れるようにsignAsDraftToRequestの第2引数のプロパティでprivateKeyにwebcrypto.CryptoKeyを与えられるようにimportPrivateKey,importPublicKey関数の追加 (鍵をwebcrypto.CryptoKeyに変換します)
getDraftAlgoStringの引数が変更に
Full Changelog: 0.0.2...0.0.3