diff options
author | Anton Luka Šijanec <anton@sijanec.eu> | 2022-01-11 12:35:47 +0100 |
---|---|---|
committer | Anton Luka Šijanec <anton@sijanec.eu> | 2022-01-11 12:35:47 +0100 |
commit | 19985dbb8c0aa66dc4bf7905abc1148de909097d (patch) | |
tree | 2cd5a5d20d7e80fc2a51adf60d838d8a2c40999e /vendor/paragonie/sodium_compat/src/Core32/XChaCha20.php | |
download | 1ka-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.php | 64 |
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 + ); + } +} |