public static function ParagonIE_Sodium_Core32_Curve25519::sc_reduce in Automatic Updates 7
Same name and namespace in other branches
- 8 vendor/paragonie/sodium_compat/src/Core32/Curve25519.php \ParagonIE_Sodium_Core32_Curve25519::sc_reduce()
@internal You should not use this directly from another application
Parameters
string $s:
Return value
string
Throws
SodiumException
TypeError
2 calls to ParagonIE_Sodium_Core32_Curve25519::sc_reduce()
- ParagonIE_Sodium_Core32_Ed25519::sign_detached in vendor/
paragonie/ sodium_compat/ src/ Core32/ Ed25519.php - @internal You should not use this directly from another application
- ParagonIE_Sodium_Core32_Ed25519::verify_detached in vendor/
paragonie/ sodium_compat/ src/ Core32/ Ed25519.php - @internal You should not use this directly from another application
File
- vendor/
paragonie/ sodium_compat/ src/ Core32/ Curve25519.php, line 2784
Class
- ParagonIE_Sodium_Core32_Curve25519
- Class ParagonIE_Sodium_Core32_Curve25519
Code
public static function sc_reduce($s) {
/**
* @var ParagonIE_Sodium_Core32_Int64 $s0
* @var ParagonIE_Sodium_Core32_Int64 $s1
* @var ParagonIE_Sodium_Core32_Int64 $s2
* @var ParagonIE_Sodium_Core32_Int64 $s3
* @var ParagonIE_Sodium_Core32_Int64 $s4
* @var ParagonIE_Sodium_Core32_Int64 $s5
* @var ParagonIE_Sodium_Core32_Int64 $s6
* @var ParagonIE_Sodium_Core32_Int64 $s7
* @var ParagonIE_Sodium_Core32_Int64 $s8
* @var ParagonIE_Sodium_Core32_Int64 $s9
* @var ParagonIE_Sodium_Core32_Int64 $s10
* @var ParagonIE_Sodium_Core32_Int64 $s11
* @var ParagonIE_Sodium_Core32_Int64 $s12
* @var ParagonIE_Sodium_Core32_Int64 $s13
* @var ParagonIE_Sodium_Core32_Int64 $s14
* @var ParagonIE_Sodium_Core32_Int64 $s15
* @var ParagonIE_Sodium_Core32_Int64 $s16
* @var ParagonIE_Sodium_Core32_Int64 $s17
* @var ParagonIE_Sodium_Core32_Int64 $s18
* @var ParagonIE_Sodium_Core32_Int64 $s19
* @var ParagonIE_Sodium_Core32_Int64 $s20
* @var ParagonIE_Sodium_Core32_Int64 $s21
* @var ParagonIE_Sodium_Core32_Int64 $s22
* @var ParagonIE_Sodium_Core32_Int64 $s23
*/
$s0 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & self::load_3(self::substr($s, 0, 3)));
$s1 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & self::load_4(self::substr($s, 2, 4)) >> 5);
$s2 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & self::load_3(self::substr($s, 5, 3)) >> 2);
$s3 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & self::load_4(self::substr($s, 7, 4)) >> 7);
$s4 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & self::load_4(self::substr($s, 10, 4)) >> 4);
$s5 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & self::load_3(self::substr($s, 13, 3)) >> 1);
$s6 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & self::load_4(self::substr($s, 15, 4)) >> 6);
$s7 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & self::load_3(self::substr($s, 18, 4)) >> 3);
$s8 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & self::load_3(self::substr($s, 21, 3)));
$s9 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & self::load_4(self::substr($s, 23, 4)) >> 5);
$s10 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & self::load_3(self::substr($s, 26, 3)) >> 2);
$s11 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & self::load_4(self::substr($s, 28, 4)) >> 7);
$s12 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & self::load_4(self::substr($s, 31, 4)) >> 4);
$s13 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & self::load_3(self::substr($s, 34, 3)) >> 1);
$s14 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & self::load_4(self::substr($s, 36, 4)) >> 6);
$s15 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & self::load_3(self::substr($s, 39, 4)) >> 3);
$s16 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & self::load_3(self::substr($s, 42, 3)));
$s17 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & self::load_4(self::substr($s, 44, 4)) >> 5);
$s18 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & self::load_3(self::substr($s, 47, 3)) >> 2);
$s19 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & self::load_4(self::substr($s, 49, 4)) >> 7);
$s20 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & self::load_4(self::substr($s, 52, 4)) >> 4);
$s21 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & self::load_3(self::substr($s, 55, 3)) >> 1);
$s22 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & self::load_4(self::substr($s, 57, 4)) >> 6);
$s23 = ParagonIE_Sodium_Core32_Int64::fromInt(0x1fffffff & self::load_4(self::substr($s, 60, 4)) >> 3);
$s11 = $s11
->addInt64($s23
->mulInt(666643, 20));
$s12 = $s12
->addInt64($s23
->mulInt(470296, 19));
$s13 = $s13
->addInt64($s23
->mulInt(654183, 20));
$s14 = $s14
->subInt64($s23
->mulInt(997805, 20));
$s15 = $s15
->addInt64($s23
->mulInt(136657, 18));
$s16 = $s16
->subInt64($s23
->mulInt(683901, 20));
$s10 = $s10
->addInt64($s22
->mulInt(666643, 20));
$s11 = $s11
->addInt64($s22
->mulInt(470296, 19));
$s12 = $s12
->addInt64($s22
->mulInt(654183, 20));
$s13 = $s13
->subInt64($s22
->mulInt(997805, 20));
$s14 = $s14
->addInt64($s22
->mulInt(136657, 18));
$s15 = $s15
->subInt64($s22
->mulInt(683901, 20));
$s9 = $s9
->addInt64($s21
->mulInt(666643, 20));
$s10 = $s10
->addInt64($s21
->mulInt(470296, 19));
$s11 = $s11
->addInt64($s21
->mulInt(654183, 20));
$s12 = $s12
->subInt64($s21
->mulInt(997805, 20));
$s13 = $s13
->addInt64($s21
->mulInt(136657, 18));
$s14 = $s14
->subInt64($s21
->mulInt(683901, 20));
$s8 = $s8
->addInt64($s20
->mulInt(666643, 20));
$s9 = $s9
->addInt64($s20
->mulInt(470296, 19));
$s10 = $s10
->addInt64($s20
->mulInt(654183, 20));
$s11 = $s11
->subInt64($s20
->mulInt(997805, 20));
$s12 = $s12
->addInt64($s20
->mulInt(136657, 18));
$s13 = $s13
->subInt64($s20
->mulInt(683901, 20));
$s7 = $s7
->addInt64($s19
->mulInt(666643, 20));
$s8 = $s8
->addInt64($s19
->mulInt(470296, 19));
$s9 = $s9
->addInt64($s19
->mulInt(654183, 20));
$s10 = $s10
->subInt64($s19
->mulInt(997805, 20));
$s11 = $s11
->addInt64($s19
->mulInt(136657, 18));
$s12 = $s12
->subInt64($s19
->mulInt(683901, 20));
$s6 = $s6
->addInt64($s18
->mulInt(666643, 20));
$s7 = $s7
->addInt64($s18
->mulInt(470296, 19));
$s8 = $s8
->addInt64($s18
->mulInt(654183, 20));
$s9 = $s9
->subInt64($s18
->mulInt(997805, 20));
$s10 = $s10
->addInt64($s18
->mulInt(136657, 18));
$s11 = $s11
->subInt64($s18
->mulInt(683901, 20));
$carry6 = $s6
->addInt(1 << 20)
->shiftRight(21);
$s7 = $s7
->addInt64($carry6);
$s6 = $s6
->subInt64($carry6
->shiftLeft(21));
$carry8 = $s8
->addInt(1 << 20)
->shiftRight(21);
$s9 = $s9
->addInt64($carry8);
$s8 = $s8
->subInt64($carry8
->shiftLeft(21));
$carry10 = $s10
->addInt(1 << 20)
->shiftRight(21);
$s11 = $s11
->addInt64($carry10);
$s10 = $s10
->subInt64($carry10
->shiftLeft(21));
$carry12 = $s12
->addInt(1 << 20)
->shiftRight(21);
$s13 = $s13
->addInt64($carry12);
$s12 = $s12
->subInt64($carry12
->shiftLeft(21));
$carry14 = $s14
->addInt(1 << 20)
->shiftRight(21);
$s15 = $s15
->addInt64($carry14);
$s14 = $s14
->subInt64($carry14
->shiftLeft(21));
$carry16 = $s16
->addInt(1 << 20)
->shiftRight(21);
$s17 = $s17
->addInt64($carry16);
$s16 = $s16
->subInt64($carry16
->shiftLeft(21));
$carry7 = $s7
->addInt(1 << 20)
->shiftRight(21);
$s8 = $s8
->addInt64($carry7);
$s7 = $s7
->subInt64($carry7
->shiftLeft(21));
$carry9 = $s9
->addInt(1 << 20)
->shiftRight(21);
$s10 = $s10
->addInt64($carry9);
$s9 = $s9
->subInt64($carry9
->shiftLeft(21));
$carry11 = $s11
->addInt(1 << 20)
->shiftRight(21);
$s12 = $s12
->addInt64($carry11);
$s11 = $s11
->subInt64($carry11
->shiftLeft(21));
$carry13 = $s13
->addInt(1 << 20)
->shiftRight(21);
$s14 = $s14
->addInt64($carry13);
$s13 = $s13
->subInt64($carry13
->shiftLeft(21));
$carry15 = $s15
->addInt(1 << 20)
->shiftRight(21);
$s16 = $s16
->addInt64($carry15);
$s15 = $s15
->subInt64($carry15
->shiftLeft(21));
$s5 = $s5
->addInt64($s17
->mulInt(666643, 20));
$s6 = $s6
->addInt64($s17
->mulInt(470296, 19));
$s7 = $s7
->addInt64($s17
->mulInt(654183, 20));
$s8 = $s8
->subInt64($s17
->mulInt(997805, 20));
$s9 = $s9
->addInt64($s17
->mulInt(136657, 18));
$s10 = $s10
->subInt64($s17
->mulInt(683901, 20));
$s4 = $s4
->addInt64($s16
->mulInt(666643, 20));
$s5 = $s5
->addInt64($s16
->mulInt(470296, 19));
$s6 = $s6
->addInt64($s16
->mulInt(654183, 20));
$s7 = $s7
->subInt64($s16
->mulInt(997805, 20));
$s8 = $s8
->addInt64($s16
->mulInt(136657, 18));
$s9 = $s9
->subInt64($s16
->mulInt(683901, 20));
$s3 = $s3
->addInt64($s15
->mulInt(666643, 20));
$s4 = $s4
->addInt64($s15
->mulInt(470296, 19));
$s5 = $s5
->addInt64($s15
->mulInt(654183, 20));
$s6 = $s6
->subInt64($s15
->mulInt(997805, 20));
$s7 = $s7
->addInt64($s15
->mulInt(136657, 18));
$s8 = $s8
->subInt64($s15
->mulInt(683901, 20));
$s2 = $s2
->addInt64($s14
->mulInt(666643, 20));
$s3 = $s3
->addInt64($s14
->mulInt(470296, 19));
$s4 = $s4
->addInt64($s14
->mulInt(654183, 20));
$s5 = $s5
->subInt64($s14
->mulInt(997805, 20));
$s6 = $s6
->addInt64($s14
->mulInt(136657, 18));
$s7 = $s7
->subInt64($s14
->mulInt(683901, 20));
$s1 = $s1
->addInt64($s13
->mulInt(666643, 20));
$s2 = $s2
->addInt64($s13
->mulInt(470296, 19));
$s3 = $s3
->addInt64($s13
->mulInt(654183, 20));
$s4 = $s4
->subInt64($s13
->mulInt(997805, 20));
$s5 = $s5
->addInt64($s13
->mulInt(136657, 18));
$s6 = $s6
->subInt64($s13
->mulInt(683901, 20));
$s0 = $s0
->addInt64($s12
->mulInt(666643, 20));
$s1 = $s1
->addInt64($s12
->mulInt(470296, 19));
$s2 = $s2
->addInt64($s12
->mulInt(654183, 20));
$s3 = $s3
->subInt64($s12
->mulInt(997805, 20));
$s4 = $s4
->addInt64($s12
->mulInt(136657, 18));
$s5 = $s5
->subInt64($s12
->mulInt(683901, 20));
$s12 = new ParagonIE_Sodium_Core32_Int64();
$carry0 = $s0
->addInt(1 << 20)
->shiftRight(21);
$s1 = $s1
->addInt64($carry0);
$s0 = $s0
->subInt64($carry0
->shiftLeft(21));
$carry2 = $s2
->addInt(1 << 20)
->shiftRight(21);
$s3 = $s3
->addInt64($carry2);
$s2 = $s2
->subInt64($carry2
->shiftLeft(21));
$carry4 = $s4
->addInt(1 << 20)
->shiftRight(21);
$s5 = $s5
->addInt64($carry4);
$s4 = $s4
->subInt64($carry4
->shiftLeft(21));
$carry6 = $s6
->addInt(1 << 20)
->shiftRight(21);
$s7 = $s7
->addInt64($carry6);
$s6 = $s6
->subInt64($carry6
->shiftLeft(21));
$carry8 = $s8
->addInt(1 << 20)
->shiftRight(21);
$s9 = $s9
->addInt64($carry8);
$s8 = $s8
->subInt64($carry8
->shiftLeft(21));
$carry10 = $s10
->addInt(1 << 20)
->shiftRight(21);
$s11 = $s11
->addInt64($carry10);
$s10 = $s10
->subInt64($carry10
->shiftLeft(21));
$carry1 = $s1
->addInt(1 << 20)
->shiftRight(21);
$s2 = $s2
->addInt64($carry1);
$s1 = $s1
->subInt64($carry1
->shiftLeft(21));
$carry3 = $s3
->addInt(1 << 20)
->shiftRight(21);
$s4 = $s4
->addInt64($carry3);
$s3 = $s3
->subInt64($carry3
->shiftLeft(21));
$carry5 = $s5
->addInt(1 << 20)
->shiftRight(21);
$s6 = $s6
->addInt64($carry5);
$s5 = $s5
->subInt64($carry5
->shiftLeft(21));
$carry7 = $s7
->addInt(1 << 20)
->shiftRight(21);
$s8 = $s8
->addInt64($carry7);
$s7 = $s7
->subInt64($carry7
->shiftLeft(21));
$carry9 = $s9
->addInt(1 << 20)
->shiftRight(21);
$s10 = $s10
->addInt64($carry9);
$s9 = $s9
->subInt64($carry9
->shiftLeft(21));
$carry11 = $s11
->addInt(1 << 20)
->shiftRight(21);
$s12 = $s12
->addInt64($carry11);
$s11 = $s11
->subInt64($carry11
->shiftLeft(21));
$s0 = $s0
->addInt64($s12
->mulInt(666643, 20));
$s1 = $s1
->addInt64($s12
->mulInt(470296, 19));
$s2 = $s2
->addInt64($s12
->mulInt(654183, 20));
$s3 = $s3
->subInt64($s12
->mulInt(997805, 20));
$s4 = $s4
->addInt64($s12
->mulInt(136657, 18));
$s5 = $s5
->subInt64($s12
->mulInt(683901, 20));
$s12 = new ParagonIE_Sodium_Core32_Int64();
$carry0 = $s0
->shiftRight(21);
$s1 = $s1
->addInt64($carry0);
$s0 = $s0
->subInt64($carry0
->shiftLeft(21));
$carry1 = $s1
->shiftRight(21);
$s2 = $s2
->addInt64($carry1);
$s1 = $s1
->subInt64($carry1
->shiftLeft(21));
$carry2 = $s2
->shiftRight(21);
$s3 = $s3
->addInt64($carry2);
$s2 = $s2
->subInt64($carry2
->shiftLeft(21));
$carry3 = $s3
->shiftRight(21);
$s4 = $s4
->addInt64($carry3);
$s3 = $s3
->subInt64($carry3
->shiftLeft(21));
$carry4 = $s4
->shiftRight(21);
$s5 = $s5
->addInt64($carry4);
$s4 = $s4
->subInt64($carry4
->shiftLeft(21));
$carry5 = $s5
->shiftRight(21);
$s6 = $s6
->addInt64($carry5);
$s5 = $s5
->subInt64($carry5
->shiftLeft(21));
$carry6 = $s6
->shiftRight(21);
$s7 = $s7
->addInt64($carry6);
$s6 = $s6
->subInt64($carry6
->shiftLeft(21));
$carry7 = $s7
->shiftRight(21);
$s8 = $s8
->addInt64($carry7);
$s7 = $s7
->subInt64($carry7
->shiftLeft(21));
$carry8 = $s8
->shiftRight(21);
$s9 = $s9
->addInt64($carry8);
$s8 = $s8
->subInt64($carry8
->shiftLeft(21));
$carry9 = $s9
->shiftRight(21);
$s10 = $s10
->addInt64($carry9);
$s9 = $s9
->subInt64($carry9
->shiftLeft(21));
$carry10 = $s10
->shiftRight(21);
$s11 = $s11
->addInt64($carry10);
$s10 = $s10
->subInt64($carry10
->shiftLeft(21));
$carry11 = $s11
->shiftRight(21);
$s12 = $s12
->addInt64($carry11);
$s11 = $s11
->subInt64($carry11
->shiftLeft(21));
$s0 = $s0
->addInt64($s12
->mulInt(666643, 20));
$s1 = $s1
->addInt64($s12
->mulInt(470296, 19));
$s2 = $s2
->addInt64($s12
->mulInt(654183, 20));
$s3 = $s3
->subInt64($s12
->mulInt(997805, 20));
$s4 = $s4
->addInt64($s12
->mulInt(136657, 18));
$s5 = $s5
->subInt64($s12
->mulInt(683901, 20));
$carry0 = $s0
->shiftRight(21);
$s1 = $s1
->addInt64($carry0);
$s0 = $s0
->subInt64($carry0
->shiftLeft(21));
$carry1 = $s1
->shiftRight(21);
$s2 = $s2
->addInt64($carry1);
$s1 = $s1
->subInt64($carry1
->shiftLeft(21));
$carry2 = $s2
->shiftRight(21);
$s3 = $s3
->addInt64($carry2);
$s2 = $s2
->subInt64($carry2
->shiftLeft(21));
$carry3 = $s3
->shiftRight(21);
$s4 = $s4
->addInt64($carry3);
$s3 = $s3
->subInt64($carry3
->shiftLeft(21));
$carry4 = $s4
->shiftRight(21);
$s5 = $s5
->addInt64($carry4);
$s4 = $s4
->subInt64($carry4
->shiftLeft(21));
$carry5 = $s5
->shiftRight(21);
$s6 = $s6
->addInt64($carry5);
$s5 = $s5
->subInt64($carry5
->shiftLeft(21));
$carry6 = $s6
->shiftRight(21);
$s7 = $s7
->addInt64($carry6);
$s6 = $s6
->subInt64($carry6
->shiftLeft(21));
$carry7 = $s7
->shiftRight(21);
$s8 = $s8
->addInt64($carry7);
$s7 = $s7
->subInt64($carry7
->shiftLeft(21));
$carry8 = $s8
->shiftRight(21);
$s9 = $s9
->addInt64($carry8);
$s8 = $s8
->subInt64($carry8
->shiftLeft(21));
$carry9 = $s9
->shiftRight(21);
$s10 = $s10
->addInt64($carry9);
$s9 = $s9
->subInt64($carry9
->shiftLeft(21));
$carry10 = $s10
->shiftRight(21);
$s11 = $s11
->addInt64($carry10);
$s10 = $s10
->subInt64($carry10
->shiftLeft(21));
$S0 = $s0
->toInt32()
->toInt();
$S1 = $s1
->toInt32()
->toInt();
$S2 = $s2
->toInt32()
->toInt();
$S3 = $s3
->toInt32()
->toInt();
$S4 = $s4
->toInt32()
->toInt();
$S5 = $s5
->toInt32()
->toInt();
$S6 = $s6
->toInt32()
->toInt();
$S7 = $s7
->toInt32()
->toInt();
$S8 = $s8
->toInt32()
->toInt();
$S9 = $s9
->toInt32()
->toInt();
$S10 = $s10
->toInt32()
->toInt();
$S11 = $s11
->toInt32()
->toInt();
/**
* @var array<int, int>
*/
$arr = array(
(int) ($S0 >> 0),
(int) ($S0 >> 8),
(int) ($S0 >> 16 | $S1 << 5),
(int) ($S1 >> 3),
(int) ($S1 >> 11),
(int) ($S1 >> 19 | $S2 << 2),
(int) ($S2 >> 6),
(int) ($S2 >> 14 | $S3 << 7),
(int) ($S3 >> 1),
(int) ($S3 >> 9),
(int) ($S3 >> 17 | $S4 << 4),
(int) ($S4 >> 4),
(int) ($S4 >> 12),
(int) ($S4 >> 20 | $S5 << 1),
(int) ($S5 >> 7),
(int) ($S5 >> 15 | $S6 << 6),
(int) ($S6 >> 2),
(int) ($S6 >> 10),
(int) ($S6 >> 18 | $S7 << 3),
(int) ($S7 >> 5),
(int) ($S7 >> 13),
(int) ($S8 >> 0),
(int) ($S8 >> 8),
(int) ($S8 >> 16 | $S9 << 5),
(int) ($S9 >> 3),
(int) ($S9 >> 11),
(int) ($S9 >> 19 | $S10 << 2),
(int) ($S10 >> 6),
(int) ($S10 >> 14 | $S11 << 7),
(int) ($S11 >> 1),
(int) ($S11 >> 9),
(int) $S11 >> 17,
);
return self::intArrayToString($arr);
}