Edit File by line

Deprecated: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in /home/sportsfever/public_html/filemanger/function.php on line 93

Warning: Undefined array key "page_file_edit_line" in /home/sportsfever/public_html/filemanger/edit_text_line.php on line 32
/home/sportsfe.../httpdocs/clone/wp-inclu.../sodium_c.../src/Core32
File: Curve25519.php
$f2f5_2 = $f2_2->mulInt64($f5, 28);
[1000] Fix | Delete
$f2f6_2 = $f2_2->mulInt64($f6, 28);
[1001] Fix | Delete
$f2f7_2 = $f2_2->mulInt64($f7, 28);
[1002] Fix | Delete
$f2f8_38 = $f8_19->mulInt64($f2_2, 29);
[1003] Fix | Delete
$f2f9_38 = $f9_38->mulInt64($f2, 29);
[1004] Fix | Delete
$f3f3_2 = $f3_2->mulInt64($f3, 28);
[1005] Fix | Delete
$f3f4_2 = $f3_2->mulInt64($f4, 28);
[1006] Fix | Delete
$f3f5_4 = $f3_2->mulInt64($f5_2, 28);
[1007] Fix | Delete
$f3f6_2 = $f3_2->mulInt64($f6, 28);
[1008] Fix | Delete
$f3f7_76 = $f7_38->mulInt64($f3_2, 29);
[1009] Fix | Delete
$f3f8_38 = $f8_19->mulInt64($f3_2, 29);
[1010] Fix | Delete
$f3f9_76 = $f9_38->mulInt64($f3_2, 29);
[1011] Fix | Delete
$f4f4 = $f4->mulInt64($f4, 28);
[1012] Fix | Delete
$f4f5_2 = $f4_2->mulInt64($f5, 28);
[1013] Fix | Delete
$f4f6_38 = $f6_19->mulInt64($f4_2, 29);
[1014] Fix | Delete
$f4f7_38 = $f7_38->mulInt64($f4, 29);
[1015] Fix | Delete
$f4f8_38 = $f8_19->mulInt64($f4_2, 29);
[1016] Fix | Delete
$f4f9_38 = $f9_38->mulInt64($f4, 29);
[1017] Fix | Delete
$f5f5_38 = $f5_38->mulInt64($f5, 29);
[1018] Fix | Delete
$f5f6_38 = $f6_19->mulInt64($f5_2, 29);
[1019] Fix | Delete
$f5f7_76 = $f7_38->mulInt64($f5_2, 29);
[1020] Fix | Delete
$f5f8_38 = $f8_19->mulInt64($f5_2, 29);
[1021] Fix | Delete
$f5f9_76 = $f9_38->mulInt64($f5_2, 29);
[1022] Fix | Delete
$f6f6_19 = $f6_19->mulInt64($f6, 29);
[1023] Fix | Delete
$f6f7_38 = $f7_38->mulInt64($f6, 29);
[1024] Fix | Delete
$f6f8_38 = $f8_19->mulInt64($f6_2, 29);
[1025] Fix | Delete
$f6f9_38 = $f9_38->mulInt64($f6, 29);
[1026] Fix | Delete
$f7f7_38 = $f7_38->mulInt64($f7, 29);
[1027] Fix | Delete
$f7f8_38 = $f8_19->mulInt64($f7_2, 29);
[1028] Fix | Delete
$f7f9_76 = $f9_38->mulInt64($f7_2, 29);
[1029] Fix | Delete
$f8f8_19 = $f8_19->mulInt64($f8, 29);
[1030] Fix | Delete
$f8f9_38 = $f9_38->mulInt64($f8, 29);
[1031] Fix | Delete
$f9f9_38 = $f9_38->mulInt64($f9, 29);
[1032] Fix | Delete
[1033] Fix | Delete
$h0 = $f0f0->addInt64($f1f9_76)->addInt64($f2f8_38)->addInt64($f3f7_76)->addInt64($f4f6_38)->addInt64($f5f5_38);
[1034] Fix | Delete
$h1 = $f0f1_2->addInt64($f2f9_38)->addInt64($f3f8_38)->addInt64($f4f7_38)->addInt64($f5f6_38);
[1035] Fix | Delete
$h2 = $f0f2_2->addInt64($f1f1_2)->addInt64($f3f9_76)->addInt64($f4f8_38)->addInt64($f5f7_76)->addInt64($f6f6_19);
[1036] Fix | Delete
$h3 = $f0f3_2->addInt64($f1f2_2)->addInt64($f4f9_38)->addInt64($f5f8_38)->addInt64($f6f7_38);
[1037] Fix | Delete
$h4 = $f0f4_2->addInt64($f1f3_4)->addInt64($f2f2)->addInt64($f5f9_76)->addInt64($f6f8_38)->addInt64($f7f7_38);
[1038] Fix | Delete
$h5 = $f0f5_2->addInt64($f1f4_2)->addInt64($f2f3_2)->addInt64($f6f9_38)->addInt64($f7f8_38);
[1039] Fix | Delete
$h6 = $f0f6_2->addInt64($f1f5_4)->addInt64($f2f4_2)->addInt64($f3f3_2)->addInt64($f7f9_76)->addInt64($f8f8_19);
[1040] Fix | Delete
$h7 = $f0f7_2->addInt64($f1f6_2)->addInt64($f2f5_2)->addInt64($f3f4_2)->addInt64($f8f9_38);
[1041] Fix | Delete
$h8 = $f0f8_2->addInt64($f1f7_4)->addInt64($f2f6_2)->addInt64($f3f5_4)->addInt64($f4f4)->addInt64($f9f9_38);
[1042] Fix | Delete
$h9 = $f0f9_2->addInt64($f1f8_2)->addInt64($f2f7_2)->addInt64($f3f6_2)->addInt64($f4f5_2);
[1043] Fix | Delete
[1044] Fix | Delete
/**
[1045] Fix | Delete
* @var ParagonIE_Sodium_Core32_Int64 $h0
[1046] Fix | Delete
* @var ParagonIE_Sodium_Core32_Int64 $h1
[1047] Fix | Delete
* @var ParagonIE_Sodium_Core32_Int64 $h2
[1048] Fix | Delete
* @var ParagonIE_Sodium_Core32_Int64 $h3
[1049] Fix | Delete
* @var ParagonIE_Sodium_Core32_Int64 $h4
[1050] Fix | Delete
* @var ParagonIE_Sodium_Core32_Int64 $h5
[1051] Fix | Delete
* @var ParagonIE_Sodium_Core32_Int64 $h6
[1052] Fix | Delete
* @var ParagonIE_Sodium_Core32_Int64 $h7
[1053] Fix | Delete
* @var ParagonIE_Sodium_Core32_Int64 $h8
[1054] Fix | Delete
* @var ParagonIE_Sodium_Core32_Int64 $h9
[1055] Fix | Delete
*/
[1056] Fix | Delete
$h0 = $h0->shiftLeft(1);
[1057] Fix | Delete
$h1 = $h1->shiftLeft(1);
[1058] Fix | Delete
$h2 = $h2->shiftLeft(1);
[1059] Fix | Delete
$h3 = $h3->shiftLeft(1);
[1060] Fix | Delete
$h4 = $h4->shiftLeft(1);
[1061] Fix | Delete
$h5 = $h5->shiftLeft(1);
[1062] Fix | Delete
$h6 = $h6->shiftLeft(1);
[1063] Fix | Delete
$h7 = $h7->shiftLeft(1);
[1064] Fix | Delete
$h8 = $h8->shiftLeft(1);
[1065] Fix | Delete
$h9 = $h9->shiftLeft(1);
[1066] Fix | Delete
[1067] Fix | Delete
$carry0 = $h0->addInt(1 << 25)->shiftRight(26);
[1068] Fix | Delete
$h1 = $h1->addInt64($carry0);
[1069] Fix | Delete
$h0 = $h0->subInt64($carry0->shiftLeft(26));
[1070] Fix | Delete
$carry4 = $h4->addInt(1 << 25)->shiftRight(26);
[1071] Fix | Delete
$h5 = $h5->addInt64($carry4);
[1072] Fix | Delete
$h4 = $h4->subInt64($carry4->shiftLeft(26));
[1073] Fix | Delete
[1074] Fix | Delete
$carry1 = $h1->addInt(1 << 24)->shiftRight(25);
[1075] Fix | Delete
$h2 = $h2->addInt64($carry1);
[1076] Fix | Delete
$h1 = $h1->subInt64($carry1->shiftLeft(25));
[1077] Fix | Delete
$carry5 = $h5->addInt(1 << 24)->shiftRight(25);
[1078] Fix | Delete
$h6 = $h6->addInt64($carry5);
[1079] Fix | Delete
$h5 = $h5->subInt64($carry5->shiftLeft(25));
[1080] Fix | Delete
[1081] Fix | Delete
$carry2 = $h2->addInt(1 << 25)->shiftRight(26);
[1082] Fix | Delete
$h3 = $h3->addInt64($carry2);
[1083] Fix | Delete
$h2 = $h2->subInt64($carry2->shiftLeft(26));
[1084] Fix | Delete
$carry6 = $h6->addInt(1 << 25)->shiftRight(26);
[1085] Fix | Delete
$h7 = $h7->addInt64($carry6);
[1086] Fix | Delete
$h6 = $h6->subInt64($carry6->shiftLeft(26));
[1087] Fix | Delete
[1088] Fix | Delete
$carry3 = $h3->addInt(1 << 24)->shiftRight(25);
[1089] Fix | Delete
$h4 = $h4->addInt64($carry3);
[1090] Fix | Delete
$h3 = $h3->subInt64($carry3->shiftLeft(25));
[1091] Fix | Delete
$carry7 = $h7->addInt(1 << 24)->shiftRight(25);
[1092] Fix | Delete
$h8 = $h8->addInt64($carry7);
[1093] Fix | Delete
$h7 = $h7->subInt64($carry7->shiftLeft(25));
[1094] Fix | Delete
[1095] Fix | Delete
$carry4 = $h4->addInt(1 << 25)->shiftRight(26);
[1096] Fix | Delete
$h5 = $h5->addInt64($carry4);
[1097] Fix | Delete
$h4 = $h4->subInt64($carry4->shiftLeft(26));
[1098] Fix | Delete
$carry8 = $h8->addInt(1 << 25)->shiftRight(26);
[1099] Fix | Delete
$h9 = $h9->addInt64($carry8);
[1100] Fix | Delete
$h8 = $h8->subInt64($carry8->shiftLeft(26));
[1101] Fix | Delete
[1102] Fix | Delete
$carry9 = $h9->addInt(1 << 24)->shiftRight(25);
[1103] Fix | Delete
$h0 = $h0->addInt64($carry9->mulInt(19, 5));
[1104] Fix | Delete
$h9 = $h9->subInt64($carry9->shiftLeft(25));
[1105] Fix | Delete
[1106] Fix | Delete
$carry0 = $h0->addInt(1 << 25)->shiftRight(26);
[1107] Fix | Delete
$h1 = $h1->addInt64($carry0);
[1108] Fix | Delete
$h0 = $h0->subInt64($carry0->shiftLeft(26));
[1109] Fix | Delete
[1110] Fix | Delete
return ParagonIE_Sodium_Core32_Curve25519_Fe::fromArray(
[1111] Fix | Delete
array(
[1112] Fix | Delete
$h0->toInt32(),
[1113] Fix | Delete
$h1->toInt32(),
[1114] Fix | Delete
$h2->toInt32(),
[1115] Fix | Delete
$h3->toInt32(),
[1116] Fix | Delete
$h4->toInt32(),
[1117] Fix | Delete
$h5->toInt32(),
[1118] Fix | Delete
$h6->toInt32(),
[1119] Fix | Delete
$h7->toInt32(),
[1120] Fix | Delete
$h8->toInt32(),
[1121] Fix | Delete
$h9->toInt32()
[1122] Fix | Delete
)
[1123] Fix | Delete
);
[1124] Fix | Delete
}
[1125] Fix | Delete
[1126] Fix | Delete
/**
[1127] Fix | Delete
* @internal You should not use this directly from another application
[1128] Fix | Delete
*
[1129] Fix | Delete
* @param ParagonIE_Sodium_Core32_Curve25519_Fe $Z
[1130] Fix | Delete
* @return ParagonIE_Sodium_Core32_Curve25519_Fe
[1131] Fix | Delete
* @throws SodiumException
[1132] Fix | Delete
* @throws TypeError
[1133] Fix | Delete
*/
[1134] Fix | Delete
public static function fe_invert(ParagonIE_Sodium_Core32_Curve25519_Fe $Z)
[1135] Fix | Delete
{
[1136] Fix | Delete
$z = clone $Z;
[1137] Fix | Delete
$t0 = self::fe_sq($z);
[1138] Fix | Delete
$t1 = self::fe_sq($t0);
[1139] Fix | Delete
$t1 = self::fe_sq($t1);
[1140] Fix | Delete
$t1 = self::fe_mul($z, $t1);
[1141] Fix | Delete
$t0 = self::fe_mul($t0, $t1);
[1142] Fix | Delete
$t2 = self::fe_sq($t0);
[1143] Fix | Delete
$t1 = self::fe_mul($t1, $t2);
[1144] Fix | Delete
$t2 = self::fe_sq($t1);
[1145] Fix | Delete
for ($i = 1; $i < 5; ++$i) {
[1146] Fix | Delete
$t2 = self::fe_sq($t2);
[1147] Fix | Delete
}
[1148] Fix | Delete
$t1 = self::fe_mul($t2, $t1);
[1149] Fix | Delete
$t2 = self::fe_sq($t1);
[1150] Fix | Delete
for ($i = 1; $i < 10; ++$i) {
[1151] Fix | Delete
$t2 = self::fe_sq($t2);
[1152] Fix | Delete
}
[1153] Fix | Delete
$t2 = self::fe_mul($t2, $t1);
[1154] Fix | Delete
$t3 = self::fe_sq($t2);
[1155] Fix | Delete
for ($i = 1; $i < 20; ++$i) {
[1156] Fix | Delete
$t3 = self::fe_sq($t3);
[1157] Fix | Delete
}
[1158] Fix | Delete
$t2 = self::fe_mul($t3, $t2);
[1159] Fix | Delete
$t2 = self::fe_sq($t2);
[1160] Fix | Delete
for ($i = 1; $i < 10; ++$i) {
[1161] Fix | Delete
$t2 = self::fe_sq($t2);
[1162] Fix | Delete
}
[1163] Fix | Delete
$t1 = self::fe_mul($t2, $t1);
[1164] Fix | Delete
$t2 = self::fe_sq($t1);
[1165] Fix | Delete
for ($i = 1; $i < 50; ++$i) {
[1166] Fix | Delete
$t2 = self::fe_sq($t2);
[1167] Fix | Delete
}
[1168] Fix | Delete
$t2 = self::fe_mul($t2, $t1);
[1169] Fix | Delete
$t3 = self::fe_sq($t2);
[1170] Fix | Delete
for ($i = 1; $i < 100; ++$i) {
[1171] Fix | Delete
$t3 = self::fe_sq($t3);
[1172] Fix | Delete
}
[1173] Fix | Delete
$t2 = self::fe_mul($t3, $t2);
[1174] Fix | Delete
$t2 = self::fe_sq($t2);
[1175] Fix | Delete
for ($i = 1; $i < 50; ++$i) {
[1176] Fix | Delete
$t2 = self::fe_sq($t2);
[1177] Fix | Delete
}
[1178] Fix | Delete
$t1 = self::fe_mul($t2, $t1);
[1179] Fix | Delete
$t1 = self::fe_sq($t1);
[1180] Fix | Delete
for ($i = 1; $i < 5; ++$i) {
[1181] Fix | Delete
$t1 = self::fe_sq($t1);
[1182] Fix | Delete
}
[1183] Fix | Delete
return self::fe_mul($t1, $t0);
[1184] Fix | Delete
}
[1185] Fix | Delete
[1186] Fix | Delete
/**
[1187] Fix | Delete
* @internal You should not use this directly from another application
[1188] Fix | Delete
*
[1189] Fix | Delete
* @ref https://github.com/jedisct1/libsodium/blob/68564326e1e9dc57ef03746f85734232d20ca6fb/src/libsodium/crypto_core/curve25519/ref10/curve25519_ref10.c#L1054-L1106
[1190] Fix | Delete
*
[1191] Fix | Delete
* @param ParagonIE_Sodium_Core32_Curve25519_Fe $z
[1192] Fix | Delete
* @return ParagonIE_Sodium_Core32_Curve25519_Fe
[1193] Fix | Delete
* @throws SodiumException
[1194] Fix | Delete
* @throws TypeError
[1195] Fix | Delete
*/
[1196] Fix | Delete
public static function fe_pow22523(ParagonIE_Sodium_Core32_Curve25519_Fe $z)
[1197] Fix | Delete
{
[1198] Fix | Delete
# fe_sq(t0, z);
[1199] Fix | Delete
# fe_sq(t1, t0);
[1200] Fix | Delete
# fe_sq(t1, t1);
[1201] Fix | Delete
# fe_mul(t1, z, t1);
[1202] Fix | Delete
# fe_mul(t0, t0, t1);
[1203] Fix | Delete
# fe_sq(t0, t0);
[1204] Fix | Delete
# fe_mul(t0, t1, t0);
[1205] Fix | Delete
# fe_sq(t1, t0);
[1206] Fix | Delete
$t0 = self::fe_sq($z);
[1207] Fix | Delete
$t1 = self::fe_sq($t0);
[1208] Fix | Delete
$t1 = self::fe_sq($t1);
[1209] Fix | Delete
$t1 = self::fe_mul($z, $t1);
[1210] Fix | Delete
$t0 = self::fe_mul($t0, $t1);
[1211] Fix | Delete
$t0 = self::fe_sq($t0);
[1212] Fix | Delete
$t0 = self::fe_mul($t1, $t0);
[1213] Fix | Delete
$t1 = self::fe_sq($t0);
[1214] Fix | Delete
[1215] Fix | Delete
# for (i = 1; i < 5; ++i) {
[1216] Fix | Delete
# fe_sq(t1, t1);
[1217] Fix | Delete
# }
[1218] Fix | Delete
for ($i = 1; $i < 5; ++$i) {
[1219] Fix | Delete
$t1 = self::fe_sq($t1);
[1220] Fix | Delete
}
[1221] Fix | Delete
[1222] Fix | Delete
# fe_mul(t0, t1, t0);
[1223] Fix | Delete
# fe_sq(t1, t0);
[1224] Fix | Delete
$t0 = self::fe_mul($t1, $t0);
[1225] Fix | Delete
$t1 = self::fe_sq($t0);
[1226] Fix | Delete
[1227] Fix | Delete
# for (i = 1; i < 10; ++i) {
[1228] Fix | Delete
# fe_sq(t1, t1);
[1229] Fix | Delete
# }
[1230] Fix | Delete
for ($i = 1; $i < 10; ++$i) {
[1231] Fix | Delete
$t1 = self::fe_sq($t1);
[1232] Fix | Delete
}
[1233] Fix | Delete
[1234] Fix | Delete
# fe_mul(t1, t1, t0);
[1235] Fix | Delete
# fe_sq(t2, t1);
[1236] Fix | Delete
$t1 = self::fe_mul($t1, $t0);
[1237] Fix | Delete
$t2 = self::fe_sq($t1);
[1238] Fix | Delete
[1239] Fix | Delete
# for (i = 1; i < 20; ++i) {
[1240] Fix | Delete
# fe_sq(t2, t2);
[1241] Fix | Delete
# }
[1242] Fix | Delete
for ($i = 1; $i < 20; ++$i) {
[1243] Fix | Delete
$t2 = self::fe_sq($t2);
[1244] Fix | Delete
}
[1245] Fix | Delete
[1246] Fix | Delete
# fe_mul(t1, t2, t1);
[1247] Fix | Delete
# fe_sq(t1, t1);
[1248] Fix | Delete
$t1 = self::fe_mul($t2, $t1);
[1249] Fix | Delete
$t1 = self::fe_sq($t1);
[1250] Fix | Delete
[1251] Fix | Delete
# for (i = 1; i < 10; ++i) {
[1252] Fix | Delete
# fe_sq(t1, t1);
[1253] Fix | Delete
# }
[1254] Fix | Delete
for ($i = 1; $i < 10; ++$i) {
[1255] Fix | Delete
$t1 = self::fe_sq($t1);
[1256] Fix | Delete
}
[1257] Fix | Delete
[1258] Fix | Delete
# fe_mul(t0, t1, t0);
[1259] Fix | Delete
# fe_sq(t1, t0);
[1260] Fix | Delete
$t0 = self::fe_mul($t1, $t0);
[1261] Fix | Delete
$t1 = self::fe_sq($t0);
[1262] Fix | Delete
[1263] Fix | Delete
# for (i = 1; i < 50; ++i) {
[1264] Fix | Delete
# fe_sq(t1, t1);
[1265] Fix | Delete
# }
[1266] Fix | Delete
for ($i = 1; $i < 50; ++$i) {
[1267] Fix | Delete
$t1 = self::fe_sq($t1);
[1268] Fix | Delete
}
[1269] Fix | Delete
[1270] Fix | Delete
# fe_mul(t1, t1, t0);
[1271] Fix | Delete
# fe_sq(t2, t1);
[1272] Fix | Delete
$t1 = self::fe_mul($t1, $t0);
[1273] Fix | Delete
$t2 = self::fe_sq($t1);
[1274] Fix | Delete
[1275] Fix | Delete
# for (i = 1; i < 100; ++i) {
[1276] Fix | Delete
# fe_sq(t2, t2);
[1277] Fix | Delete
# }
[1278] Fix | Delete
for ($i = 1; $i < 100; ++$i) {
[1279] Fix | Delete
$t2 = self::fe_sq($t2);
[1280] Fix | Delete
}
[1281] Fix | Delete
[1282] Fix | Delete
# fe_mul(t1, t2, t1);
[1283] Fix | Delete
# fe_sq(t1, t1);
[1284] Fix | Delete
$t1 = self::fe_mul($t2, $t1);
[1285] Fix | Delete
$t1 = self::fe_sq($t1);
[1286] Fix | Delete
[1287] Fix | Delete
# for (i = 1; i < 50; ++i) {
[1288] Fix | Delete
# fe_sq(t1, t1);
[1289] Fix | Delete
# }
[1290] Fix | Delete
for ($i = 1; $i < 50; ++$i) {
[1291] Fix | Delete
$t1 = self::fe_sq($t1);
[1292] Fix | Delete
}
[1293] Fix | Delete
[1294] Fix | Delete
# fe_mul(t0, t1, t0);
[1295] Fix | Delete
# fe_sq(t0, t0);
[1296] Fix | Delete
# fe_sq(t0, t0);
[1297] Fix | Delete
# fe_mul(out, t0, z);
[1298] Fix | Delete
$t0 = self::fe_mul($t1, $t0);
[1299] Fix | Delete
$t0 = self::fe_sq($t0);
[1300] Fix | Delete
$t0 = self::fe_sq($t0);
[1301] Fix | Delete
return self::fe_mul($t0, $z);
[1302] Fix | Delete
}
[1303] Fix | Delete
[1304] Fix | Delete
/**
[1305] Fix | Delete
* Subtract two field elements.
[1306] Fix | Delete
*
[1307] Fix | Delete
* h = f - g
[1308] Fix | Delete
*
[1309] Fix | Delete
* Preconditions:
[1310] Fix | Delete
* |f| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc.
[1311] Fix | Delete
* |g| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc.
[1312] Fix | Delete
*
[1313] Fix | Delete
* Postconditions:
[1314] Fix | Delete
* |h| bounded by 1.1*2^26,1.1*2^25,1.1*2^26,1.1*2^25,etc.
[1315] Fix | Delete
*
[1316] Fix | Delete
* @internal You should not use this directly from another application
[1317] Fix | Delete
*
[1318] Fix | Delete
* @param ParagonIE_Sodium_Core32_Curve25519_Fe $f
[1319] Fix | Delete
* @param ParagonIE_Sodium_Core32_Curve25519_Fe $g
[1320] Fix | Delete
* @return ParagonIE_Sodium_Core32_Curve25519_Fe
[1321] Fix | Delete
* @throws SodiumException
[1322] Fix | Delete
* @throws TypeError
[1323] Fix | Delete
* @psalm-suppress MixedMethodCall
[1324] Fix | Delete
* @psalm-suppress MixedTypeCoercion
[1325] Fix | Delete
*/
[1326] Fix | Delete
public static function fe_sub(ParagonIE_Sodium_Core32_Curve25519_Fe $f, ParagonIE_Sodium_Core32_Curve25519_Fe $g)
[1327] Fix | Delete
{
[1328] Fix | Delete
return ParagonIE_Sodium_Core32_Curve25519_Fe::fromArray(
[1329] Fix | Delete
array(
[1330] Fix | Delete
$f[0]->subInt32($g[0]),
[1331] Fix | Delete
$f[1]->subInt32($g[1]),
[1332] Fix | Delete
$f[2]->subInt32($g[2]),
[1333] Fix | Delete
$f[3]->subInt32($g[3]),
[1334] Fix | Delete
$f[4]->subInt32($g[4]),
[1335] Fix | Delete
$f[5]->subInt32($g[5]),
[1336] Fix | Delete
$f[6]->subInt32($g[6]),
[1337] Fix | Delete
$f[7]->subInt32($g[7]),
[1338] Fix | Delete
$f[8]->subInt32($g[8]),
[1339] Fix | Delete
$f[9]->subInt32($g[9])
[1340] Fix | Delete
)
[1341] Fix | Delete
);
[1342] Fix | Delete
}
[1343] Fix | Delete
[1344] Fix | Delete
/**
[1345] Fix | Delete
* Add two group elements.
[1346] Fix | Delete
*
[1347] Fix | Delete
* r = p + q
[1348] Fix | Delete
*
[1349] Fix | Delete
* @internal You should not use this directly from another application
[1350] Fix | Delete
*
[1351] Fix | Delete
* @param ParagonIE_Sodium_Core32_Curve25519_Ge_P3 $p
[1352] Fix | Delete
* @param ParagonIE_Sodium_Core32_Curve25519_Ge_Cached $q
[1353] Fix | Delete
* @return ParagonIE_Sodium_Core32_Curve25519_Ge_P1p1
[1354] Fix | Delete
* @throws SodiumException
[1355] Fix | Delete
* @throws TypeError
[1356] Fix | Delete
*/
[1357] Fix | Delete
public static function ge_add(
[1358] Fix | Delete
ParagonIE_Sodium_Core32_Curve25519_Ge_P3 $p,
[1359] Fix | Delete
ParagonIE_Sodium_Core32_Curve25519_Ge_Cached $q
[1360] Fix | Delete
) {
[1361] Fix | Delete
$r = new ParagonIE_Sodium_Core32_Curve25519_Ge_P1p1();
[1362] Fix | Delete
$r->X = self::fe_add($p->Y, $p->X);
[1363] Fix | Delete
$r->Y = self::fe_sub($p->Y, $p->X);
[1364] Fix | Delete
$r->Z = self::fe_mul($r->X, $q->YplusX);
[1365] Fix | Delete
$r->Y = self::fe_mul($r->Y, $q->YminusX);
[1366] Fix | Delete
$r->T = self::fe_mul($q->T2d, $p->T);
[1367] Fix | Delete
$r->X = self::fe_mul($p->Z, $q->Z);
[1368] Fix | Delete
$t0 = self::fe_add($r->X, $r->X);
[1369] Fix | Delete
$r->X = self::fe_sub($r->Z, $r->Y);
[1370] Fix | Delete
$r->Y = self::fe_add($r->Z, $r->Y);
[1371] Fix | Delete
$r->Z = self::fe_add($t0, $r->T);
[1372] Fix | Delete
$r->T = self::fe_sub($t0, $r->T);
[1373] Fix | Delete
return $r;
[1374] Fix | Delete
}
[1375] Fix | Delete
[1376] Fix | Delete
/**
[1377] Fix | Delete
* @internal You should not use this directly from another application
[1378] Fix | Delete
*
[1379] Fix | Delete
* @ref https://github.com/jedisct1/libsodium/blob/157c4a80c13b117608aeae12178b2d38825f9f8f/src/libsodium/crypto_core/curve25519/ref10/curve25519_ref10.c#L1185-L1215
[1380] Fix | Delete
* @param string $a
[1381] Fix | Delete
* @return array<int, mixed>
[1382] Fix | Delete
* @throws SodiumException
[1383] Fix | Delete
* @throws TypeError
[1384] Fix | Delete
* @psalm-suppress MixedArrayOffset
[1385] Fix | Delete
*/
[1386] Fix | Delete
public static function slide($a)
[1387] Fix | Delete
{
[1388] Fix | Delete
if (self::strlen($a) < 256) {
[1389] Fix | Delete
if (self::strlen($a) < 16) {
[1390] Fix | Delete
$a = str_pad($a, 256, '0', STR_PAD_RIGHT);
[1391] Fix | Delete
}
[1392] Fix | Delete
}
[1393] Fix | Delete
/** @var array<int, int> $r */
[1394] Fix | Delete
$r = array();
[1395] Fix | Delete
for ($i = 0; $i < 256; ++$i) {
[1396] Fix | Delete
$r[$i] = (int) (1 &
[1397] Fix | Delete
(
[1398] Fix | Delete
self::chrToInt($a[$i >> 3])
[1399] Fix | Delete
>>
[1400] Fix | Delete
($i & 7)
[1401] Fix | Delete
)
[1402] Fix | Delete
);
[1403] Fix | Delete
}
[1404] Fix | Delete
[1405] Fix | Delete
for ($i = 0;$i < 256;++$i) {
[1406] Fix | Delete
if ($r[$i]) {
[1407] Fix | Delete
for ($b = 1;$b <= 6 && $i + $b < 256;++$b) {
[1408] Fix | Delete
if ($r[$i + $b]) {
[1409] Fix | Delete
if ($r[$i] + ($r[$i + $b] << $b) <= 15) {
[1410] Fix | Delete
$r[$i] += $r[$i + $b] << $b;
[1411] Fix | Delete
$r[$i + $b] = 0;
[1412] Fix | Delete
} elseif ($r[$i] - ($r[$i + $b] << $b) >= -15) {
[1413] Fix | Delete
$r[$i] -= $r[$i + $b] << $b;
[1414] Fix | Delete
for ($k = $i + $b; $k < 256; ++$k) {
[1415] Fix | Delete
if (!$r[$k]) {
[1416] Fix | Delete
$r[$k] = 1;
[1417] Fix | Delete
break;
[1418] Fix | Delete
}
[1419] Fix | Delete
$r[$k] = 0;
[1420] Fix | Delete
}
[1421] Fix | Delete
} else {
[1422] Fix | Delete
break;
[1423] Fix | Delete
}
[1424] Fix | Delete
}
[1425] Fix | Delete
}
[1426] Fix | Delete
}
[1427] Fix | Delete
}
[1428] Fix | Delete
return $r;
[1429] Fix | Delete
}
[1430] Fix | Delete
[1431] Fix | Delete
/**
[1432] Fix | Delete
* @internal You should not use this directly from another application
[1433] Fix | Delete
*
[1434] Fix | Delete
* @param string $s
[1435] Fix | Delete
* @return ParagonIE_Sodium_Core32_Curve25519_Ge_P3
[1436] Fix | Delete
* @throws SodiumException
[1437] Fix | Delete
* @throws TypeError
[1438] Fix | Delete
*/
[1439] Fix | Delete
public static function ge_frombytes_negate_vartime($s)
[1440] Fix | Delete
{
[1441] Fix | Delete
static $d = null;
[1442] Fix | Delete
if (!$d) {
[1443] Fix | Delete
$d = ParagonIE_Sodium_Core32_Curve25519_Fe::fromArray(
[1444] Fix | Delete
array(
[1445] Fix | Delete
ParagonIE_Sodium_Core32_Int32::fromInt(self::$d[0]),
[1446] Fix | Delete
ParagonIE_Sodium_Core32_Int32::fromInt(self::$d[1]),
[1447] Fix | Delete
ParagonIE_Sodium_Core32_Int32::fromInt(self::$d[2]),
[1448] Fix | Delete
ParagonIE_Sodium_Core32_Int32::fromInt(self::$d[3]),
[1449] Fix | Delete
ParagonIE_Sodium_Core32_Int32::fromInt(self::$d[4]),
[1450] Fix | Delete
ParagonIE_Sodium_Core32_Int32::fromInt(self::$d[5]),
[1451] Fix | Delete
ParagonIE_Sodium_Core32_Int32::fromInt(self::$d[6]),
[1452] Fix | Delete
ParagonIE_Sodium_Core32_Int32::fromInt(self::$d[7]),
[1453] Fix | Delete
ParagonIE_Sodium_Core32_Int32::fromInt(self::$d[8]),
[1454] Fix | Delete
ParagonIE_Sodium_Core32_Int32::fromInt(self::$d[9])
[1455] Fix | Delete
)
[1456] Fix | Delete
);
[1457] Fix | Delete
}
[1458] Fix | Delete
/** @var ParagonIE_Sodium_Core32_Curve25519_Fe $d */
[1459] Fix | Delete
[1460] Fix | Delete
# fe_frombytes(h->Y,s);
[1461] Fix | Delete
# fe_1(h->Z);
[1462] Fix | Delete
$h = new ParagonIE_Sodium_Core32_Curve25519_Ge_P3(
[1463] Fix | Delete
self::fe_0(),
[1464] Fix | Delete
self::fe_frombytes($s),
[1465] Fix | Delete
self::fe_1()
[1466] Fix | Delete
);
[1467] Fix | Delete
[1468] Fix | Delete
# fe_sq(u,h->Y);
[1469] Fix | Delete
# fe_mul(v,u,d);
[1470] Fix | Delete
# fe_sub(u,u,h->Z); /* u = y^2-1 */
[1471] Fix | Delete
# fe_add(v,v,h->Z); /* v = dy^2+1 */
[1472] Fix | Delete
$u = self::fe_sq($h->Y);
[1473] Fix | Delete
/** @var ParagonIE_Sodium_Core32_Curve25519_Fe $d */
[1474] Fix | Delete
$v = self::fe_mul($u, $d);
[1475] Fix | Delete
$u = self::fe_sub($u, $h->Z); /* u = y^2 - 1 */
[1476] Fix | Delete
$v = self::fe_add($v, $h->Z); /* v = dy^2 + 1 */
[1477] Fix | Delete
[1478] Fix | Delete
# fe_sq(v3,v);
[1479] Fix | Delete
# fe_mul(v3,v3,v); /* v3 = v^3 */
[1480] Fix | Delete
# fe_sq(h->X,v3);
[1481] Fix | Delete
# fe_mul(h->X,h->X,v);
[1482] Fix | Delete
# fe_mul(h->X,h->X,u); /* x = uv^7 */
[1483] Fix | Delete
$v3 = self::fe_sq($v);
[1484] Fix | Delete
$v3 = self::fe_mul($v3, $v); /* v3 = v^3 */
[1485] Fix | Delete
$h->X = self::fe_sq($v3);
[1486] Fix | Delete
$h->X = self::fe_mul($h->X, $v);
[1487] Fix | Delete
$h->X = self::fe_mul($h->X, $u); /* x = uv^7 */
[1488] Fix | Delete
[1489] Fix | Delete
# fe_pow22523(h->X,h->X); /* x = (uv^7)^((q-5)/8) */
[1490] Fix | Delete
# fe_mul(h->X,h->X,v3);
[1491] Fix | Delete
# fe_mul(h->X,h->X,u); /* x = uv^3(uv^7)^((q-5)/8) */
[1492] Fix | Delete
$h->X = self::fe_pow22523($h->X); /* x = (uv^7)^((q-5)/8) */
[1493] Fix | Delete
$h->X = self::fe_mul($h->X, $v3);
[1494] Fix | Delete
$h->X = self::fe_mul($h->X, $u); /* x = uv^3(uv^7)^((q-5)/8) */
[1495] Fix | Delete
[1496] Fix | Delete
# fe_sq(vxx,h->X);
[1497] Fix | Delete
# fe_mul(vxx,vxx,v);
[1498] Fix | Delete
# fe_sub(check,vxx,u); /* vx^2-u */
[1499] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function