"Fossies" - the Fresh Open Source Software Archive

Member "wordpress/wp-includes/sodium_compat/src/Core32/Curve25519/Fe.php" (21 Mar 2019, 5207 Bytes) of package /linux/www/wordpress-5.7-RC1.tar.gz:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) PHP source code syntax highlighting (style: standard) with prefixed line numbers and code folding option. Alternatively you can here view or download the uninterpreted source code file. For more information about "Fe.php" see the Fossies "Dox" file reference documentation.

    1 <?php
    2 
    3 if (class_exists('ParagonIE_Sodium_Core32_Curve25519_Fe', false)) {
    4     return;
    5 }
    6 
    7 /**
    8  * Class ParagonIE_Sodium_Core32_Curve25519_Fe
    9  *
   10  * This represents a Field Element
   11  */
   12 class ParagonIE_Sodium_Core32_Curve25519_Fe implements ArrayAccess
   13 {
   14     /**
   15      * @var array<int, ParagonIE_Sodium_Core32_Int32>
   16      */
   17     protected $container = array();
   18 
   19     /**
   20      * @var int
   21      */
   22     protected $size = 10;
   23 
   24     /**
   25      * @internal You should not use this directly from another application
   26      *
   27      * @param array<int, ParagonIE_Sodium_Core32_Int32> $array
   28      * @param bool $save_indexes
   29      * @return self
   30      * @throws SodiumException
   31      * @throws TypeError
   32      */
   33     public static function fromArray($array, $save_indexes = null)
   34     {
   35         $count = count($array);
   36         if ($save_indexes) {
   37             $keys = array_keys($array);
   38         } else {
   39             $keys = range(0, $count - 1);
   40         }
   41         $array = array_values($array);
   42 
   43         $obj = new ParagonIE_Sodium_Core32_Curve25519_Fe();
   44         if ($save_indexes) {
   45             for ($i = 0; $i < $count; ++$i) {
   46                 $array[$i]->overflow = 0;
   47                 $obj->offsetSet($keys[$i], $array[$i]);
   48             }
   49         } else {
   50             for ($i = 0; $i < $count; ++$i) {
   51                 $array[$i]->overflow = 0;
   52                 $obj->offsetSet($i, $array[$i]);
   53             }
   54         }
   55         return $obj;
   56     }
   57 
   58     /**
   59      * @internal You should not use this directly from another application
   60      *
   61      * @param array<int, int> $array
   62      * @param bool $save_indexes
   63      * @return self
   64      * @throws SodiumException
   65      * @throws TypeError
   66      */
   67     public static function fromIntArray($array, $save_indexes = null)
   68     {
   69         $count = count($array);
   70         if ($save_indexes) {
   71             $keys = array_keys($array);
   72         } else {
   73             $keys = range(0, $count - 1);
   74         }
   75         $array = array_values($array);
   76         $set = array();
   77         /** @var int $i */
   78         /** @var int $v */
   79         foreach ($array as $i => $v) {
   80             $set[$i] = ParagonIE_Sodium_Core32_Int32::fromInt($v);
   81         }
   82 
   83         $obj = new ParagonIE_Sodium_Core32_Curve25519_Fe();
   84         if ($save_indexes) {
   85             for ($i = 0; $i < $count; ++$i) {
   86                 $set[$i]->overflow = 0;
   87                 $obj->offsetSet($keys[$i], $set[$i]);
   88             }
   89         } else {
   90             for ($i = 0; $i < $count; ++$i) {
   91                 $set[$i]->overflow = 0;
   92                 $obj->offsetSet($i, $set[$i]);
   93             }
   94         }
   95         return $obj;
   96     }
   97 
   98     /**
   99      * @internal You should not use this directly from another application
  100      *
  101      * @param mixed $offset
  102      * @param mixed $value
  103      * @return void
  104      * @throws SodiumException
  105      * @throws TypeError
  106      */
  107     public function offsetSet($offset, $value)
  108     {
  109         if (!($value instanceof ParagonIE_Sodium_Core32_Int32)) {
  110             throw new InvalidArgumentException('Expected an instance of ParagonIE_Sodium_Core32_Int32');
  111         }
  112         if (is_null($offset)) {
  113             $this->container[] = $value;
  114         } else {
  115             ParagonIE_Sodium_Core32_Util::declareScalarType($offset, 'int', 1);
  116             $this->container[(int) $offset] = $value;
  117         }
  118     }
  119 
  120     /**
  121      * @internal You should not use this directly from another application
  122      *
  123      * @param mixed $offset
  124      * @return bool
  125      * @psalm-suppress MixedArrayOffset
  126      */
  127     public function offsetExists($offset)
  128     {
  129         return isset($this->container[$offset]);
  130     }
  131 
  132     /**
  133      * @internal You should not use this directly from another application
  134      *
  135      * @param mixed $offset
  136      * @return void
  137      * @psalm-suppress MixedArrayOffset
  138      */
  139     public function offsetUnset($offset)
  140     {
  141         unset($this->container[$offset]);
  142     }
  143 
  144     /**
  145      * @internal You should not use this directly from another application
  146      *
  147      * @param mixed $offset
  148      * @return ParagonIE_Sodium_Core32_Int32
  149      * @psalm-suppress MixedArrayOffset
  150      */
  151     public function offsetGet($offset)
  152     {
  153         if (!isset($this->container[$offset])) {
  154             $this->container[(int) $offset] = new ParagonIE_Sodium_Core32_Int32();
  155         }
  156         /** @var ParagonIE_Sodium_Core32_Int32 $get */
  157         $get = $this->container[$offset];
  158         return $get;
  159     }
  160 
  161     /**
  162      * @internal You should not use this directly from another application
  163      *
  164      * @return array
  165      */
  166     public function __debugInfo()
  167     {
  168         if (empty($this->container)) {
  169             return array();
  170         }
  171         $c = array(
  172             (int) ($this->container[0]->toInt()),
  173             (int) ($this->container[1]->toInt()),
  174             (int) ($this->container[2]->toInt()),
  175             (int) ($this->container[3]->toInt()),
  176             (int) ($this->container[4]->toInt()),
  177             (int) ($this->container[5]->toInt()),
  178             (int) ($this->container[6]->toInt()),
  179             (int) ($this->container[7]->toInt()),
  180             (int) ($this->container[8]->toInt()),
  181             (int) ($this->container[9]->toInt())
  182         );
  183         return array(implode(', ', $c));
  184     }
  185 }