diff -r 3d4e9c994f10 -r a86126ab1dd4 wp/wp-includes/sodium_compat/src/Core/XChaCha20.php --- a/wp/wp-includes/sodium_compat/src/Core/XChaCha20.php Tue Oct 22 16:11:46 2019 +0200 +++ b/wp/wp-includes/sodium_compat/src/Core/XChaCha20.php Tue Dec 15 13:49:49 2020 +0100 @@ -39,6 +39,33 @@ /** * @internal You should not use this directly from another application * + * @param int $len + * @param string $nonce + * @param string $key + * @return string + * @throws SodiumException + * @throws TypeError + */ + public static function ietfStream($len = 64, $nonce = '', $key = '') + { + if (self::strlen($nonce) !== 24) { + throw new SodiumException('Nonce must be 24 bytes long'); + } + return self::encryptBytes( + new ParagonIE_Sodium_Core_ChaCha20_IetfCtx( + self::hChaCha20( + self::substr($nonce, 0, 16), + $key + ), + "\x00\x00\x00\x00" . self::substr($nonce, 16, 8) + ), + str_repeat("\x00", $len) + ); + } + + /** + * @internal You should not use this directly from another application + * * @param string $message * @param string $nonce * @param string $key @@ -61,4 +88,30 @@ $message ); } + + /** + * @internal You should not use this directly from another application + * + * @param string $message + * @param string $nonce + * @param string $key + * @param string $ic + * @return string + * @throws SodiumException + * @throws TypeError + */ + public static function ietfStreamXorIc($message, $nonce = '', $key = '', $ic = '') + { + if (self::strlen($nonce) !== 24) { + throw new SodiumException('Nonce must be 24 bytes long'); + } + return self::encryptBytes( + new ParagonIE_Sodium_Core_ChaCha20_IetfCtx( + self::hChaCha20(self::substr($nonce, 0, 16), $key), + "\x00\x00\x00\x00" . self::substr($nonce, 16, 8), + $ic + ), + $message + ); + } }