summaryrefslogtreecommitdiffstats
path: root/vendor/paragonie/sodium_compat/src/Core32/XChaCha20.php
diff options
context:
space:
mode:
authorAnton Luka Šijanec <anton@sijanec.eu>2022-01-11 12:35:47 +0100
committerAnton Luka Šijanec <anton@sijanec.eu>2022-01-11 12:35:47 +0100
commit19985dbb8c0aa66dc4bf7905abc1148de909097d (patch)
tree2cd5a5d20d7e80fc2a51adf60d838d8a2c40999e /vendor/paragonie/sodium_compat/src/Core32/XChaCha20.php
download1ka-19985dbb8c0aa66dc4bf7905abc1148de909097d.tar
1ka-19985dbb8c0aa66dc4bf7905abc1148de909097d.tar.gz
1ka-19985dbb8c0aa66dc4bf7905abc1148de909097d.tar.bz2
1ka-19985dbb8c0aa66dc4bf7905abc1148de909097d.tar.lz
1ka-19985dbb8c0aa66dc4bf7905abc1148de909097d.tar.xz
1ka-19985dbb8c0aa66dc4bf7905abc1148de909097d.tar.zst
1ka-19985dbb8c0aa66dc4bf7905abc1148de909097d.zip
Diffstat (limited to 'vendor/paragonie/sodium_compat/src/Core32/XChaCha20.php')
-rw-r--r--vendor/paragonie/sodium_compat/src/Core32/XChaCha20.php64
1 files changed, 64 insertions, 0 deletions
diff --git a/vendor/paragonie/sodium_compat/src/Core32/XChaCha20.php b/vendor/paragonie/sodium_compat/src/Core32/XChaCha20.php
new file mode 100644
index 0000000..1dfc859
--- /dev/null
+++ b/vendor/paragonie/sodium_compat/src/Core32/XChaCha20.php
@@ -0,0 +1,64 @@
+<?php
+
+if (class_exists('ParagonIE_Sodium_Core32_XChaCha20', false)) {
+ return;
+}
+
+/**
+ * Class ParagonIE_Sodium_Core32_XChaCha20
+ */
+class ParagonIE_Sodium_Core32_XChaCha20 extends ParagonIE_Sodium_Core32_HChaCha20
+{
+ /**
+ * @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 stream($len = 64, $nonce = '', $key = '')
+ {
+ if (self::strlen($nonce) !== 24) {
+ throw new SodiumException('Nonce must be 24 bytes long');
+ }
+ return self::encryptBytes(
+ new ParagonIE_Sodium_Core32_ChaCha20_Ctx(
+ self::hChaCha20(
+ self::substr($nonce, 0, 16),
+ $key
+ ),
+ 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
+ * @param string $ic
+ * @return string
+ * @throws SodiumException
+ * @throws TypeError
+ */
+ public static function streamXorIc($message, $nonce = '', $key = '', $ic = '')
+ {
+ if (self::strlen($nonce) !== 24) {
+ throw new SodiumException('Nonce must be 24 bytes long');
+ }
+ return self::encryptBytes(
+ new ParagonIE_Sodium_Core32_ChaCha20_Ctx(
+ self::hChaCha20(self::substr($nonce, 0, 16), $key),
+ self::substr($nonce, 16, 8),
+ $ic
+ ),
+ $message
+ );
+ }
+}