In the Kyber specification the parse
function (algorithm 1 on page 6) takes as input a non-terminating byte stream. Although unlikely, an unlimited number of bytes from this stream can be used in this function.
In Kyber.CPAPKE.KeyGen
(algorithm 4 on page 8) the parse
function is called on line 6 using the output of an extensible output function for the byte stream. On page 11 it is stated that SHAKE-128
is used to instantiate this extensible output function.
The NIST FIPS-202 specification of SHAKE-128
in section 6.2 requires that the function be given an output size before output is generated. How can SHAKE-128
be used to generate the (possibly non-terminating) bytes stream of indeterminate length required by the parse
function?