PATH:
home
/
lab2454c
/
costbloc.com
/
vendor
/
phpseclib
/
phpseclib
/
phpseclib
/
Crypt
/
EC
/
Curves
<?php /** * Curve25519 * * PHP version 5 and 7 * * @author Jim Wigginton <terrafrost@php.net> * @copyright 2019 Jim Wigginton * @license http://www.opensource.org/licenses/mit-license.html MIT License * @link http://pear.php.net/package/Math_BigInteger */ namespace phpseclib3\Crypt\EC\Curves; use phpseclib3\Crypt\EC\BaseCurves\Montgomery; use phpseclib3\Math\BigInteger; class Curve25519 extends Montgomery { public function __construct() { // 2^255 - 19 $this->setModulo(new BigInteger('7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFED', 16)); $this->a24 = $this->factory->newInteger(new BigInteger('121666')); $this->p = [$this->factory->newInteger(new BigInteger(9))]; // 2^252 + 0x14def9dea2f79cd65812631a5cf5d3ed $this->setOrder(new BigInteger('1000000000000000000000000000000014DEF9DEA2F79CD65812631A5CF5D3ED', 16)); /* $this->setCoefficients( new BigInteger('486662'), // a ); $this->setBasePoint( new BigInteger(9), new BigInteger('14781619447589544791020593568409986887264606134616475288964881837755586237401') ); */ } /** * Multiply a point on the curve by a scalar * * Modifies the scalar as described at https://tools.ietf.org/html/rfc7748#page-8 * * @return array */ public function multiplyPoint(array $p, BigInteger $d) { //$r = strrev(sodium_crypto_scalarmult($d->toBytes(), strrev($p[0]->toBytes()))); //return [$this->factory->newInteger(new BigInteger($r, 256))]; $d = $d->toBytes(); $d &= "\xF8" . str_repeat("\xFF", 30) . "\x7F"; $d = strrev($d); $d |= "\x40"; $d = new BigInteger($d, -256); return parent::multiplyPoint($p, $d); } /** * Creates a random scalar multiplier * * @return BigInteger */ public function createRandomMultiplier() { return BigInteger::random(256); } /** * Performs range check */ public function rangeCheck(BigInteger $x) { if ($x->getLength() > 256 || $x->isNegative()) { throw new \RangeException('x must be a positive integer less than 256 bytes in length'); } } }
[-] nistp521.php
[edit]
[-] sect283r1.php
[edit]
[-] sect409k1.php
[edit]
[-] secp192r1.php
[edit]
[-] secp112r2.php
[edit]
[-] secp224k1.php
[edit]
[-] brainpoolP512t1.php
[edit]
[-] brainpoolP160t1.php
[edit]
[-] secp160r1.php
[edit]
[-] secp192k1.php
[edit]
[-] nistb409.php
[edit]
[-] prime192v1.php
[edit]
[-] brainpoolP384r1.php
[edit]
[-] brainpoolP512r1.php
[edit]
[-] nistp192.php
[edit]
[+]
..
[-] Curve25519.php
[edit]
[-] prime239v3.php
[edit]
[-] sect233k1.php
[edit]
[-] secp256r1.php
[edit]
[-] nistp384.php
[edit]
[-] sect163r2.php
[edit]
[-] sect131r2.php
[edit]
[-] sect131r1.php
[edit]
[-] prime256v1.php
[edit]
[-] secp224r1.php
[edit]
[-] secp128r1.php
[edit]
[-] sect409r1.php
[edit]
[-] brainpoolP256r1.php
[edit]
[-] brainpoolP320t1.php
[edit]
[-] brainpoolP224r1.php
[edit]
[-] sect113r1.php
[edit]
[-] sect113r2.php
[edit]
[-] brainpoolP384t1.php
[edit]
[-] prime239v2.php
[edit]
[-] nistk163.php
[edit]
[-] nistp256.php
[edit]
[-] Curve448.php
[edit]
[-] prime192v2.php
[edit]
[-] nistb233.php
[edit]
[-] nistp224.php
[edit]
[-] sect163k1.php
[edit]
[-] secp112r1.php
[edit]
[-] sect193r1.php
[edit]
[-] brainpoolP192r1.php
[edit]
[-] prime239v1.php
[edit]
[-] sect193r2.php
[edit]
[-] nistk409.php
[edit]
[-] secp256k1.php
[edit]
[-] secp160r2.php
[edit]
[-] sect163r1.php
[edit]
[-] brainpoolP192t1.php
[edit]
[-] nistk283.php
[edit]
[-] secp160k1.php
[edit]
[-] brainpoolP256t1.php
[edit]
[-] Ed25519.php
[edit]
[-] prime192v3.php
[edit]
[-] sect571r1.php
[edit]
[-] secp128r2.php
[edit]
[-] sect283k1.php
[edit]
[-] sect233r1.php
[edit]
[-] sect239k1.php
[edit]
[-] sect571k1.php
[edit]
[-] secp521r1.php
[edit]
[-] Ed448.php
[edit]
[-] brainpoolP224t1.php
[edit]
[-] secp384r1.php
[edit]
[-] nistt571.php
[edit]
[-] brainpoolP320r1.php
[edit]
[-] brainpoolP160r1.php
[edit]
[-] nistk233.php
[edit]