--- 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
+ );
+ }
}