MGF
Mask Generation Function マスク生成関数
付録 Bにハッシュ関数を使ったMGF1がある
IEEE 1363, ANSI X9.44 でも同じ定義あり?
RFC 8692 8702 RSASSA-PSSでXOFを使える? XOFはそのまま出力長を指定して使ってもいい。 SHAKE128, SHAKE256 のみの想定か?
ECDSAではMGFではなくハッシュ関数として固定長出力でSHAKE128, SHAKE256を使用する
将来的に付録BにXOFも追加されそう
マスク関数なので出力結果はすぐにXOR される。そこまで含めてみてもいいかも。
MGF1
Hash ハッシュ関数
入力 byte[] mgfSeed seed値
int 出力長(バイト単位)
int c = 0;
mgfSeed に 4バイトc++ を繋げてHashを計算する
出力長になるまでHashを繋げてくり返す
不要な末尾を切り取り返す
CTRモード的な動作かな
MGFXOF (仮名)
XOF XOF CMSで使えるのはSHAKE128, SHAKE256
入力 byte[] mgfSeed seed値
int 出力長
XOFに出力長を指定する
mgfSeedからXOFを計算する
注意: 出力長によって内容が変化するもの(KMAC,TupleHash,ParallelHashのXOFがつかないもの)はXOFではない