wp/wp-includes/sodium_compat/src/Core32/XSalsa20.php
changeset 9 177826044cd9
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wp/wp-includes/sodium_compat/src/Core32/XSalsa20.php	Mon Oct 14 18:28:13 2019 +0200
@@ -0,0 +1,57 @@
+<?php
+
+if (class_exists('ParagonIE_Sodium_Core32_XSalsa20', false)) {
+    return;
+}
+
+/**
+ * Class ParagonIE_Sodium_Core32_XSalsa20
+ */
+abstract class ParagonIE_Sodium_Core32_XSalsa20 extends ParagonIE_Sodium_Core32_HSalsa20
+{
+    /**
+     * Expand a key and nonce into an xsalsa20 keystream.
+     *
+     * @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 xsalsa20($len, $nonce, $key)
+    {
+        $ret = self::salsa20(
+            $len,
+            self::substr($nonce, 16, 8),
+            self::hsalsa20($nonce, $key)
+        );
+        return $ret;
+    }
+
+    /**
+     * Encrypt a string with XSalsa20. Doesn't provide integrity.
+     *
+     * @internal You should not use this directly from another application
+     *
+     * @param string $message
+     * @param string $nonce
+     * @param string $key
+     * @return string
+     * @throws SodiumException
+     * @throws TypeError
+     */
+    public static function xsalsa20_xor($message, $nonce, $key)
+    {
+        return self::xorStrings(
+            $message,
+            self::xsalsa20(
+                self::strlen($message),
+                $nonce,
+                $key
+            )
+        );
+    }
+}