2.1.1. Strict Serialization of HTTP Structured Fields (HTTP Structured Fields の厳密シリアル化)
2.1.1. Strict Serialization of HTTP Structured Fields (HTTP Structured Fields の厳密シリアル化)
アプリケーションが HTTP フィールドの値を [STRUCTURED-FIELDS] またはその拡張・更新で定義される Structured Field 型であると知っており, Structured Field の期待される型が既知である場合, 署名者はコンポーネント識別子に sf パラメータを含めてよい. このパラメータがコンポーネント識別子に含まれる場合, HTTP フィールド値は, 当該 HTTP フィールドの型に適用される [STRUCTURED-FIELDS] のセクション 4 (またはその拡張・更新の該当する正式シリアル化節) に指定される正式シリアル化規則を用いてシリアル化されなければならない. この過程は, 任意の内部空白を単一の空白文字に置き換えるなど, 値に対する他の変換を伴いうることに注意する.
メッセージ内に複数のフィールド値が現れる場合, これらの値はシリアル化の前に単一の List または Dictionary 構造に結合されなければならない.
アプリケーションがフィールドの型を知らないか, その型のシリアル化方法を知らない場合, このフラグの使用はエラーを生じさせる. その結果, 署名者は検証者のシステムも型を知っている場合に限り, このフラグを用いてフィールドを確実に署名できる.
例えば, 次の Dictionary フィールドは有効なシリアル化である.
Example-Dict: a=1, b=2;x=1;y=2, c=(a b c)
パラメータなしで署名ベースに含めると, その値は次のとおりである.
"example-dict": a=1, b=2;x=1;y=2, c=(a b c)
一方, sf パラメータを付加すると, 値は次のように再シリアル化される.
"example-dict";sf: a=1, b=2;x=1;y=2, c=(a b c)
得られた文字列がコンポーネント値として用いられる, セクション 2.1 を参照.