PluginProbe ʕ •ᴥ•ʔ
JetBackup – Backup, Restore & Migrate / trunk
JetBackup – Backup, Restore & Migrate vtrunk
3.1.22.4 3.1.22.3 1.4.3 1.4.4 1.4.5 1.4.6 1.4.7 1.4.8 1.4.8.1 1.4.9 1.5.0 1.5.1 1.5.1.1 1.5.2 1.5.3 1.5.4 1.5.5 1.5.6 1.5.7 1.5.8 1.6.0 1.6.10 1.6.11 1.6.12 1.6.13 1.6.15 1.6.5.1 1.6.8.8 1.6.9 1.6.9.1 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7.5 2.0.8.7 2.0.9.11 2.0.9.14 2.0.9.15 2.0.9.6 2.0.9.7 2.0.9.9 3.1.10.7 3.1.11.1 3.1.12.3 3.1.13.4 3.1.14.17 3.1.15.4 3.1.16.1 3.1.17.5 3.1.18.10 3.1.18.8 3.1.18.9 3.1.19.8 3.1.20.3 3.1.21.3 3.1.7.9 3.1.9.2 trunk 1.1.90 1.1.91 1.2.0 1.2.5 1.2.6 1.2.7 1.2.8 1.2.9 1.3.0 1.3.1 1.3.2 1.3.3 1.3.4 1.3.6 1.3.7 1.3.8 1.3.9 1.4.0 1.4.1 1.4.2
backup / src / JetBackup / 3rdparty / phpseclib3 / Crypt / EC / Curves / Curve25519.php
backup / src / JetBackup / 3rdparty / phpseclib3 / Crypt / EC / Curves Last commit date
.htaccess 1 year ago Curve25519.php 1 year ago Curve448.php 1 year ago Ed25519.php 1 year ago Ed448.php 1 year ago brainpoolP160r1.php 1 year ago brainpoolP160t1.php 1 year ago brainpoolP192r1.php 1 year ago brainpoolP192t1.php 1 year ago brainpoolP224r1.php 1 year ago brainpoolP224t1.php 1 year ago brainpoolP256r1.php 1 year ago brainpoolP256t1.php 1 year ago brainpoolP320r1.php 1 year ago brainpoolP320t1.php 1 year ago brainpoolP384r1.php 1 year ago brainpoolP384t1.php 1 year ago brainpoolP512r1.php 1 year ago brainpoolP512t1.php 1 year ago index.html 1 year ago nistb233.php 1 year ago nistb409.php 1 year ago nistk163.php 1 year ago nistk233.php 1 year ago nistk283.php 1 year ago nistk409.php 1 year ago nistp192.php 1 year ago nistp224.php 1 year ago nistp256.php 1 year ago nistp384.php 1 year ago nistp521.php 1 year ago nistt571.php 1 year ago prime192v1.php 1 year ago prime192v2.php 1 year ago prime192v3.php 1 year ago prime239v1.php 1 year ago prime239v2.php 1 year ago prime239v3.php 1 year ago prime256v1.php 1 year ago secp112r1.php 1 year ago secp112r2.php 1 year ago secp128r1.php 1 year ago secp128r2.php 1 year ago secp160k1.php 1 year ago secp160r1.php 1 year ago secp160r2.php 1 year ago secp192k1.php 1 year ago secp192r1.php 1 year ago secp224k1.php 1 year ago secp224r1.php 1 year ago secp256k1.php 1 year ago secp256r1.php 1 year ago secp384r1.php 1 year ago secp521r1.php 1 year ago sect113r1.php 1 year ago sect113r2.php 1 year ago sect131r1.php 1 year ago sect131r2.php 1 year ago sect163k1.php 1 year ago sect163r1.php 1 year ago sect163r2.php 1 year ago sect193r1.php 1 year ago sect193r2.php 1 year ago sect233k1.php 1 year ago sect233r1.php 1 year ago sect239k1.php 1 year ago sect283k1.php 1 year ago sect283r1.php 1 year ago sect409k1.php 1 year ago sect409r1.php 1 year ago sect571k1.php 1 year ago sect571r1.php 1 year ago web.config 1 year ago
Curve25519.php
81 lines
1 <?php
2
3 /**
4 * Curve25519
5 *
6 * PHP version 5 and 7
7 *
8 * @author Jim Wigginton <terrafrost@php.net>
9 * @copyright 2019 Jim Wigginton
10 * @license http://www.opensource.org/licenses/mit-license.html MIT License
11 * @link http://pear.php.net/package/Math_BigInteger
12 */
13
14 declare(strict_types=1);
15
16 namespace phpseclib3\Crypt\EC\Curves;
17
18 use phpseclib3\Crypt\EC\BaseCurves\Montgomery;
19 use phpseclib3\Exception\RangeException;
20 use phpseclib3\Math\BigInteger;
21
22 class Curve25519 extends Montgomery
23 {
24 public function __construct()
25 {
26 // 2^255 - 19
27 $this->setModulo(new BigInteger('7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFED', 16));
28 $this->a24 = $this->factory->newInteger(new BigInteger('121666'));
29 $this->p = [$this->factory->newInteger(new BigInteger(9))];
30 // 2^252 + 0x14def9dea2f79cd65812631a5cf5d3ed
31 $this->setOrder(new BigInteger('1000000000000000000000000000000014DEF9DEA2F79CD65812631A5CF5D3ED', 16));
32
33 /*
34 $this->setCoefficients(
35 new BigInteger('486662'), // a
36 );
37 $this->setBasePoint(
38 new BigInteger(9),
39 new BigInteger('14781619447589544791020593568409986887264606134616475288964881837755586237401')
40 );
41 */
42 }
43
44 /**
45 * Multiply a point on the curve by a scalar
46 *
47 * Modifies the scalar as described at https://tools.ietf.org/html/rfc7748#page-8
48 */
49 public function multiplyPoint(array $p, BigInteger $d): array
50 {
51 //$r = strrev(sodium_crypto_scalarmult($d->toBytes(), strrev($p[0]->toBytes())));
52 //return [$this->factory->newInteger(new BigInteger($r, 256))];
53
54 $d = $d->toBytes();
55 $d &= "\xF8" . str_repeat("\xFF", 30) . "\x7F";
56 $d = strrev($d);
57 $d |= "\x40";
58 $d = new BigInteger($d, -256);
59
60 return parent::multiplyPoint($p, $d);
61 }
62
63 /**
64 * Creates a random scalar multiplier
65 */
66 public function createRandomMultiplier(): BigInteger
67 {
68 return BigInteger::random(256);
69 }
70
71 /**
72 * Performs range check
73 */
74 public function rangeCheck(BigInteger $x): void
75 {
76 if ($x->getLength() > 256 || $x->isNegative()) {
77 throw new RangeException('x must be a positive integer less than 256 bytes in length');
78 }
79 }
80 }
81