2.3. 署名パラメータ (Signature Parameters)
2.3. 署名パラメータ (Signature Parameters)
HTTP メッセージ署名には, 署名の生成および検証に関する情報を与えるメタデータプロパティがあり, 被覆コンポーネントの順序付き集合とパラメータの順序付き集合で構成される. ここでパラメータには署名作成のタイムスタンプ, 検証鍵素材の識別子, その他の補助情報が含まれる. このメタデータは署名ベース内の署名用の特別なメッセージコンポーネントとして表現され, この特別なメッセージコンポーネントは他のメッセージコンポーネントとはやや異なる扱いを受ける. 具体的には, 署名パラメータのメッセージコンポーネントは署名ベースの最終行として必須 (REQUIRED) である (2.5 節), かつコンポーネント識別子はいかなる署名の被覆コンポーネント集合にも列挙してはならない (MUST NOT), 自身を含めてもである.
署名パラメータのコンポーネント名は @signature-params である.
署名パラメータのコンポーネント値は, この署名の署名パラメータの直列化であり, 関連するすべてのパラメータを伴う被覆コンポーネントの順序付き集合を含む. これらのパラメータには次のいずれかを含めてよい:
created: Integer 型の UNIX タイムスタンプ値としての作成時刻. 秒未満の精度はサポートされない. このパラメータの含有は推奨される (RECOMMENDED).
expires: Integer 型の UNIX タイムスタンプ値としての有効期限. 秒未満の精度はサポートされない.
nonce: この署名のために生成されたランダムな一意の値を String 値とする.
alg: "HTTP Signature Algorithms" レジストリの HTTP メッセージ署名アルゴリズムを String 値とする.
keyid: 鍵素材の識別子を String 値とする.
tag: 署名のアプリケーション固有のタグを String 値とする. この値はアプリケーションが特定のアプリケーションまたはプロトコルに関連する署名を識別するのに用いられる.
追加のパラメータは "HTTP Signature Metadata Parameters" レジストリ (6.3 節) で定義できる. パラメータに一般の順序はないが, ある集合について順序が一度選ばれたら, 署名パラメータ値を変えずに変更することはできない.
署名パラメータのコンポーネント値は, [STRUCTURED-FIELDS] の 4 節の規則を用いたパラメータ付き Inner List として直列化される:
-
出力を空文字列とする.
-
@signature-params コンポーネント識別子自体を除く, 被覆コンポーネントのコンポーネント識別子の順序を決定する. 一度選んだ順序は変更できない. この順序は署名ベースの作成 (2.5 節) に用いた順序と同一でなければならない (MUST).
-
被覆コンポーネントのコンポーネント識別子を, すべてのパラメータを含め, [STRUCTURED-FIELDS] の 4.1.1.1 節に従い String 値の順序付き Inner List として直列化し, 出力に追加する. コンポーネント識別子は独自のパラメータを含み得, これらのパラメータは順序付き集合である. コンポーネントのパラメータの順序が一度選ばれたら, 変更できない.
-
任意の署名パラメータの順序を決定する. 一度選んだ順序は変更できない.
-
このメッセージ署名に利用できないまたは用いないパラメータを除き, [STRUCTURED-FIELDS] の 4.1.1.2 節に従い Inner List にパラメータを順に追加する.
-
出力が署名パラメータのコンポーネント値となる.
[STRUCTURED-FIELDS] の 4.1.1.1 節の Inner List 直列化を被覆コンポーネント値に用い, 4.1.1 節の List 直列化ではないことに注意すること. これは 4.1 節で述べるとおり, この値の Signature-Input フィールドへの含有との並行性を容易にするためである.
次の例は, 例となるメッセージ署名のパラメータの直列化されたコンポーネント値を示す:
NOTE: '' line wrapping per RFC 8792
("@target-uri" "@authority" "date" "cache-control")
;keyid="test-key-rsa-pss";alg="rsa-pss-sha512";
created=1618884475;expires=1618884775
HTTP メッセージに複数の署名が含まれてもよい (4.3 節) が, 与えられた署名パラメータエントリに含まれるのは単一の署名に用いる署名パラメータのみである.