2. Notation and Conventions (表記法と規約)
2. Notation and Conventions (表記法と規約)
本文書全体で以下の表記法を使用します:
p - 基礎となるフィールドを定義する素数を表します
GF(p) - p 個の要素を持つ有限体 (Finite field)
x^y - x を y 回自乗したもの
B - 対象となる群または部分群の生成元 (Generator)
[n]X - X を n 回加算したもの
h[i] - オクテット文字列 h の i 番目のオクテット
h_i - h の i 番目のビット
a || b - (ビット)文字列 a と (ビット)文字列 b の連結
a <= b - a は b 以下
a >= b - a は b 以上
i+j - i と j の和
i*j - i と j の積
i-j - i から j を減算
i/j - i を j で除算
i x j - i と j のデカルト積 (Cartesian product)
(u,v) - x 座標 u および y 座標 v を持つ楕円曲線点
SHAKE256(x, y) - 入力 x に対する SHAKE256 [FIPS202] 出力の最初の y オクテット
OCTET(x) - 値 x を持つオクテット
OLEN(x) - 文字列 x のオクテット数
dom2(x, y) - Ed25519 を署名または検証する際は空のオクテット文字列。それ以外の場合は, オクテット文字列: "SigEd25519 no Ed25519 collisions" || octet(x) || octet(OLEN(y)) || y, ここで x は 0-255 の範囲内であり, y は最大 255 オクテットのオクテット文字列です。"SigEd25519 no Ed25519 collisions" は ASCII 形式です (32 オクテット)。
dom4(x, y) - オクテット文字列 "SigEd448" || octet(x) || octet(OLEN(y)) || y, ここで x は 0-255 の範囲内であり, y は最大 255 オクテットのオクテット文字列です。"SigEd448" は ASCII 形式です (8 オクテット)。
括弧 (つまり '(' と ')') は, 演算子間の結合順序に記述が依存しないようにするため, 式をグループ化するために使用されます。
ビット文字列は, ビットを左から右へ取り, 各オクテットの最下位ビットから最上位ビットへパックし, 各オクテットが満杯になると次のオクテットに移動することによって, オクテット文字列に変換されます。オクテット文字列からビット文字列への変換は, このプロセスの逆です。例えば, 16 ビットのビット文字列
b0 b1 b2 b3 b4 b5 b6 b7 b8 b9 b10 b11 b12 b13 b14 b15
は, この順序で 2 つのオクテット x0 と x1 に変換されます:
x0 = b7*128+b6*64+b5*32+b4*16+b3*8+b2*4+b1*2+b0
x1 = b15*128+b14*64+b13*32+b12*16+b11*8+b10*4+b9*2+b8
リトルエンディアンエンコーディングは, ビットを左から右へ, また最下位から最上位へ配置します。上記で定義したビット文字列からオクテット文字列への変換と組み合わせると, これはオクテットへのリトルエンディアンエンコーディングになります (長さが 8 の倍数でない場合, 最後のオクテットの最上位ビットは未使用のままです)。
この文書のキーワード "MUST" (しなければならない), "MUST NOT" (してはならない), "REQUIRED" (必須), "SHALL" (するものとする), "SHALL NOT" (しないものとする), "SHOULD" (すべきである), "SHOULD NOT" (すべきではない), "RECOMMENDED" (推奨される), "MAY" (してもよい), および "OPTIONAL" (任意) は, [RFC2119] に記載されているように解釈されるものとします。