summaryrefslogtreecommitdiffstats
path: root/vendor/paragonie/sodium_compat/src/Core32/Poly1305.php
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--vendor/paragonie/sodium_compat/src/Core32/Poly1305.php63
1 files changed, 63 insertions, 0 deletions
diff --git a/vendor/paragonie/sodium_compat/src/Core32/Poly1305.php b/vendor/paragonie/sodium_compat/src/Core32/Poly1305.php
new file mode 100644
index 0000000..b9dfaf3
--- /dev/null
+++ b/vendor/paragonie/sodium_compat/src/Core32/Poly1305.php
@@ -0,0 +1,63 @@
+<?php
+
+if (class_exists('ParagonIE_Sodium_Core32_Poly1305', false)) {
+ return;
+}
+
+/**
+ * Class ParagonIE_Sodium_Core32_Poly1305
+ */
+abstract class ParagonIE_Sodium_Core32_Poly1305 extends ParagonIE_Sodium_Core32_Util
+{
+ const BLOCK_SIZE = 16;
+
+ /**
+ * @internal You should not use this directly from another application
+ *
+ * @param string $m
+ * @param string $key
+ * @return string
+ * @throws SodiumException
+ * @throws TypeError
+ */
+ public static function onetimeauth($m, $key)
+ {
+ if (self::strlen($key) < 32) {
+ throw new InvalidArgumentException(
+ 'Key must be 32 bytes long.'
+ );
+ }
+ $state = new ParagonIE_Sodium_Core32_Poly1305_State(
+ self::substr($key, 0, 32)
+ );
+ return $state
+ ->update($m)
+ ->finish();
+ }
+
+ /**
+ * @internal You should not use this directly from another application
+ *
+ * @param string $mac
+ * @param string $m
+ * @param string $key
+ * @return bool
+ * @throws SodiumException
+ * @throws TypeError
+ */
+ public static function onetimeauth_verify($mac, $m, $key)
+ {
+ if (self::strlen($key) < 32) {
+ throw new InvalidArgumentException(
+ 'Key must be 32 bytes long.'
+ );
+ }
+ $state = new ParagonIE_Sodium_Core32_Poly1305_State(
+ self::substr($key, 0, 32)
+ );
+ $calc = $state
+ ->update($m)
+ ->finish();
+ return self::verify_16($calc, $mac);
+ }
+}