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