summaryrefslogtreecommitdiffstats
path: root/vendor/paragonie/sodium_compat/src/Core32/Curve25519/Fe.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/Curve25519/Fe.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/Curve25519/Fe.php')
-rw-r--r--vendor/paragonie/sodium_compat/src/Core32/Curve25519/Fe.php185
1 files changed, 185 insertions, 0 deletions
diff --git a/vendor/paragonie/sodium_compat/src/Core32/Curve25519/Fe.php b/vendor/paragonie/sodium_compat/src/Core32/Curve25519/Fe.php
new file mode 100644
index 0000000..5fe10f7
--- /dev/null
+++ b/vendor/paragonie/sodium_compat/src/Core32/Curve25519/Fe.php
@@ -0,0 +1,185 @@
+<?php
+
+if (class_exists('ParagonIE_Sodium_Core32_Curve25519_Fe', false)) {
+ return;
+}
+
+/**
+ * Class ParagonIE_Sodium_Core32_Curve25519_Fe
+ *
+ * This represents a Field Element
+ */
+class ParagonIE_Sodium_Core32_Curve25519_Fe implements ArrayAccess
+{
+ /**
+ * @var array<int, ParagonIE_Sodium_Core32_Int32>
+ */
+ protected $container = array();
+
+ /**
+ * @var int
+ */
+ protected $size = 10;
+
+ /**
+ * @internal You should not use this directly from another application
+ *
+ * @param array<int, ParagonIE_Sodium_Core32_Int32> $array
+ * @param bool $save_indexes
+ * @return self
+ * @throws SodiumException
+ * @throws TypeError
+ */
+ public static function fromArray($array, $save_indexes = null)
+ {
+ $count = count($array);
+ if ($save_indexes) {
+ $keys = array_keys($array);
+ } else {
+ $keys = range(0, $count - 1);
+ }
+ $array = array_values($array);
+
+ $obj = new ParagonIE_Sodium_Core32_Curve25519_Fe();
+ if ($save_indexes) {
+ for ($i = 0; $i < $count; ++$i) {
+ $array[$i]->overflow = 0;
+ $obj->offsetSet($keys[$i], $array[$i]);
+ }
+ } else {
+ for ($i = 0; $i < $count; ++$i) {
+ $array[$i]->overflow = 0;
+ $obj->offsetSet($i, $array[$i]);
+ }
+ }
+ return $obj;
+ }
+
+ /**
+ * @internal You should not use this directly from another application
+ *
+ * @param array<int, int> $array
+ * @param bool $save_indexes
+ * @return self
+ * @throws SodiumException
+ * @throws TypeError
+ */
+ public static function fromIntArray($array, $save_indexes = null)
+ {
+ $count = count($array);
+ if ($save_indexes) {
+ $keys = array_keys($array);
+ } else {
+ $keys = range(0, $count - 1);
+ }
+ $array = array_values($array);
+ $set = array();
+ /** @var int $i */
+ /** @var int $v */
+ foreach ($array as $i => $v) {
+ $set[$i] = ParagonIE_Sodium_Core32_Int32::fromInt($v);
+ }
+
+ $obj = new ParagonIE_Sodium_Core32_Curve25519_Fe();
+ if ($save_indexes) {
+ for ($i = 0; $i < $count; ++$i) {
+ $set[$i]->overflow = 0;
+ $obj->offsetSet($keys[$i], $set[$i]);
+ }
+ } else {
+ for ($i = 0; $i < $count; ++$i) {
+ $set[$i]->overflow = 0;
+ $obj->offsetSet($i, $set[$i]);
+ }
+ }
+ return $obj;
+ }
+
+ /**
+ * @internal You should not use this directly from another application
+ *
+ * @param mixed $offset
+ * @param mixed $value
+ * @return void
+ * @throws SodiumException
+ * @throws TypeError
+ */
+ public function offsetSet($offset, $value)
+ {
+ if (!($value instanceof ParagonIE_Sodium_Core32_Int32)) {
+ throw new InvalidArgumentException('Expected an instance of ParagonIE_Sodium_Core32_Int32');
+ }
+ if (is_null($offset)) {
+ $this->container[] = $value;
+ } else {
+ ParagonIE_Sodium_Core32_Util::declareScalarType($offset, 'int', 1);
+ $this->container[(int) $offset] = $value;
+ }
+ }
+
+ /**
+ * @internal You should not use this directly from another application
+ *
+ * @param mixed $offset
+ * @return bool
+ * @psalm-suppress MixedArrayOffset
+ */
+ public function offsetExists($offset)
+ {
+ return isset($this->container[$offset]);
+ }
+
+ /**
+ * @internal You should not use this directly from another application
+ *
+ * @param mixed $offset
+ * @return void
+ * @psalm-suppress MixedArrayOffset
+ */
+ public function offsetUnset($offset)
+ {
+ unset($this->container[$offset]);
+ }
+
+ /**
+ * @internal You should not use this directly from another application
+ *
+ * @param mixed $offset
+ * @return ParagonIE_Sodium_Core32_Int32
+ * @psalm-suppress MixedArrayOffset
+ */
+ public function offsetGet($offset)
+ {
+ if (!isset($this->container[$offset])) {
+ $this->container[(int) $offset] = new ParagonIE_Sodium_Core32_Int32();
+ }
+ /** @var ParagonIE_Sodium_Core32_Int32 $get */
+ $get = $this->container[$offset];
+ return $get;
+ }
+
+ /**
+ * @internal You should not use this directly from another application
+ *
+ * @return array
+ */
+ public function __debugInfo()
+ {
+ if (empty($this->container)) {
+ return array();
+ }
+ $c = array(
+ (int) ($this->container[0]->toInt()),
+ (int) ($this->container[1]->toInt()),
+ (int) ($this->container[2]->toInt()),
+ (int) ($this->container[3]->toInt()),
+ (int) ($this->container[4]->toInt()),
+ (int) ($this->container[5]->toInt()),
+ (int) ($this->container[6]->toInt()),
+ (int) ($this->container[7]->toInt()),
+ (int) ($this->container[8]->toInt()),
+ (int) ($this->container[9]->toInt())
+ );
+ return array(implode(', ', $c));
+ }
+}