public static function secretstream_xchacha20poly1305_init_push($key) { # randombytes_buf(out, crypto_secretstream_xchacha20poly1305_HEADERBYTES);
$out =
random_bytes(24
);
# crypto_core_hchacha20(state->k, out, k, NULL);
$subkey = ParagonIE_Sodium_Core32_HChaCha20::
hChaCha20($out,
$key);
$state =
new ParagonIE_Sodium_Core32_SecretStream_State( $subkey,
ParagonIE_Sodium_Core32_Util::
substr($out, 16, 8
) .
str_repeat("\0", 4
) );
# _crypto_secretstream_xchacha20poly1305_counter_reset(state);
$state->
counterReset();
# memcpy(STATE_INONCE(state), out + crypto_core_hchacha20_INPUTBYTES,
# crypto_secretstream_xchacha20poly1305_INONCEBYTES);
# memset(state->_pad, 0, sizeof state->_pad);
return array
(