3.3.4. 曲線 P-256 DSS と SHA-256 を用いる ECDSA (ECDSA Using Curve P-256 DSS and SHA-256)
3.3.4. 曲線 P-256 DSS と SHA-256 を用いる ECDSA (ECDSA Using Curve P-256 DSS and SHA-256)
本アルゴリズムで署名する際, 署名者は [FIPS186-5] で定義される ECDSA 署名アルゴリズムを, 署名者の秘密署名鍵および署名ベース (2.5 節) とともに曲線 P-256 で適用する. ハッシュ SHA-256 [RFC6234] を署名ベースに適用し, デジタル署名の対象となるダイジェスト内容 (M) を生成する. 署名アルゴリズムは 2 つの整数値 r および s を返す. これらはいずれもビッグエンディアンの符号なし整数としてエンコードされ, それぞれ 32 オクテットになるようゼロパディングされる. これらのエンコード値は連結され, r のエンコード値に続けて s のエンコード値を並べた単一の 64 オクテット配列となる. (r, s) の連結結果のバイト列が, 3.1 節で用いる HTTP メッセージ署名の出力となる.
本アルゴリズムで検証する際, 検証者は [FIPS186-5] で定義される ECDSA 署名アルゴリズムを, 検証鍵素材 (verification key material) の公開鍵部分および 3.2 節の説明に従って再現した署名ベースとともに適用する. ハッシュ関数 SHA-256 [RFC6234] を署名ベースに適用し, 署名検証関数の対象となるダイジェスト内容 (M) を生成する. 検証者は 3.2 節の説明に従い, 検証対象の HTTP メッセージ署名 (S) を取り出す. この値は, 順に連結された r および s のエンコード値からなる 64 オクテット配列である. これらはいずれもビッグエンディアンの符号なし整数としてエンコードされ, それぞれ 32 オクテットになるようゼロパディングされる. 得られた署名値 (r, s) を署名検証関数への入力として用いる. 検証関数の結果が, 提示された署名が有効かどうかを示す.
ECDSA 署名アルゴリズムの出力は非決定的であることに注意すること. したがって, 署名ベースに対して新たな署名を再計算し, その結果を既存の署名と比較するのは正しくない. 代わりに, ここで定義する検証アルゴリズムを用いる必要がある. 7.3.5 節を参照のこと.
本アルゴリズムの使用は, 実行時に alg 署名パラメータに ecdsa-p256-sha256 の値を用いることで示してよい (MAY).