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; |