wp/wp-includes/sodium_compat/src/Core/SipHash.php
changeset 18 be944660c56a
parent 9 177826044cd9
equal deleted inserted replaced
17:34716fd837a4 18:be944660c56a
    14     /**
    14     /**
    15      * @internal You should not use this directly from another application
    15      * @internal You should not use this directly from another application
    16      *
    16      *
    17      * @param int[] $v
    17      * @param int[] $v
    18      * @return int[]
    18      * @return int[]
       
    19      *
    19      */
    20      */
    20     public static function sipRound(array $v)
    21     public static function sipRound(array $v)
    21     {
    22     {
    22         # v0 += v1;
    23         # v0 += v1;
    23         list($v[0], $v[1]) = self::add(
    24         list($v[0], $v[1]) = self::add(
    24             array($v[0], $v[1]),
    25             array($v[0], $v[1]),
    25             array($v[2], $v[3])
    26             array($v[2], $v[3])
    26         );
    27         );
    27 
    28 
    28         #  v1=ROTL(v1,13);
    29         #  v1=ROTL(v1,13);
    29         list($v[2], $v[3]) = self::rotl_64($v[2], $v[3], 13);
    30         list($v[2], $v[3]) = self::rotl_64((int) $v[2], (int) $v[3], 13);
    30 
    31 
    31         #  v1 ^= v0;
    32         #  v1 ^= v0;
    32         $v[2] ^= $v[0];
    33         $v[2] = (int) $v[2] ^ (int) $v[0];
    33         $v[3] ^= $v[1];
    34         $v[3] = (int) $v[3] ^ (int) $v[1];
    34 
    35 
    35         #  v0=ROTL(v0,32);
    36         #  v0=ROTL(v0,32);
    36         list($v[0], $v[1]) = self::rotl_64((int) $v[0], (int) $v[1], 32);
    37         list($v[0], $v[1]) = self::rotl_64((int) $v[0], (int) $v[1], 32);
    37 
    38 
    38         # v2 += v3;
    39         # v2 += v3;
    39         list($v[4], $v[5]) = self::add(
    40         list($v[4], $v[5]) = self::add(
    40             array($v[4], $v[5]),
    41             array((int) $v[4], (int) $v[5]),
    41             array($v[6], $v[7])
    42             array((int) $v[6], (int) $v[7])
    42         );
    43         );
    43 
    44 
    44         # v3=ROTL(v3,16);
    45         # v3=ROTL(v3,16);
    45         list($v[6], $v[7]) = self::rotl_64($v[6], $v[7], 16);
    46         list($v[6], $v[7]) = self::rotl_64((int) $v[6], (int) $v[7], 16);
    46 
    47 
    47         #  v3 ^= v2;
    48         #  v3 ^= v2;
    48         $v[6] ^= $v[4];
    49         $v[6] = (int) $v[6] ^ (int) $v[4];
    49         $v[7] ^= $v[5];
    50         $v[7] = (int) $v[7] ^ (int) $v[5];
    50 
    51 
    51         # v0 += v3;
    52         # v0 += v3;
    52         list($v[0], $v[1]) = self::add(
    53         list($v[0], $v[1]) = self::add(
    53             array((int) $v[0], (int) $v[1]),
    54             array((int) $v[0], (int) $v[1]),
    54             array((int) $v[6], (int) $v[7])
    55             array((int) $v[6], (int) $v[7])
    56 
    57 
    57         # v3=ROTL(v3,21);
    58         # v3=ROTL(v3,21);
    58         list($v[6], $v[7]) = self::rotl_64((int) $v[6], (int) $v[7], 21);
    59         list($v[6], $v[7]) = self::rotl_64((int) $v[6], (int) $v[7], 21);
    59 
    60 
    60         # v3 ^= v0;
    61         # v3 ^= v0;
    61         $v[6] ^= $v[0];
    62         $v[6] = (int) $v[6] ^ (int) $v[0];
    62         $v[7] ^= $v[1];
    63         $v[7] = (int) $v[7] ^ (int) $v[1];
    63 
    64 
    64         # v2 += v1;
    65         # v2 += v1;
    65         list($v[4], $v[5]) = self::add(
    66         list($v[4], $v[5]) = self::add(
    66             array((int) $v[4], (int) $v[5]),
    67             array((int) $v[4], (int) $v[5]),
    67             array((int) $v[2], (int) $v[3])
    68             array((int) $v[2], (int) $v[3])
    69 
    70 
    70         # v1=ROTL(v1,17);
    71         # v1=ROTL(v1,17);
    71         list($v[2], $v[3]) = self::rotl_64((int) $v[2], (int) $v[3], 17);
    72         list($v[2], $v[3]) = self::rotl_64((int) $v[2], (int) $v[3], 17);
    72 
    73 
    73         #  v1 ^= v2;;
    74         #  v1 ^= v2;;
    74         $v[2] ^= $v[4];
    75         $v[2] = (int) $v[2] ^ (int) $v[4];
    75         $v[3] ^= $v[5];
    76         $v[3] = (int) $v[3] ^ (int) $v[5];
    76 
    77 
    77         # v2=ROTL(v2,32)
    78         # v2=ROTL(v2,32)
    78         list($v[4], $v[5]) = self::rotl_64((int) $v[4], (int) $v[5], 32);
    79         list($v[4], $v[5]) = self::rotl_64((int) $v[4], (int) $v[5], 32);
    79 
    80 
    80         return $v;
    81         return $v;