Skip to content

0.0.8

Compare
Choose a tag to compare
@tamaina tamaina released this 09 Mar 07:16
· 29 commits to main since this release
  • 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)ヘッダを追加します。
  • 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の部分的実装)