secp256r1
class secp256r1 extends Prime (View source)
Properties
protected object[] | $doubles | Doubles | from Base |
protected BigInteger | $order | The Order | from Prime |
protected PrimeFields | $factory | Prime Field Integer factory | from Prime |
protected object | $a | Cofficient for x^1 | from Prime |
protected object | $b | Cofficient for x^0 | from Prime |
protected object | $p | Base Point | from Prime |
protected object | $one | The number one over the specified finite field | from Prime |
protected object | $two | The number two over the specified finite field | from Prime |
protected object | $three | The number three over the specified finite field | from Prime |
protected object | $four | The number four over the specified finite field | from Prime |
protected object | $eight | The number eight over the specified finite field | from Prime |
protected BigInteger | $modulo | The modulo | from Prime |
Methods
Set x and y coordinates for the base point
Adds two "fresh" jacobian form on the curve
Adds one "fresh" jacobian form on the curve
Adds two jacobian coordinates on the curve
Returns the numerator and denominator of the slope
Doubles a "fresh" jacobian coordinate on the curve
No description
Details
in
Base at line 63
object
randomInteger()
Returns a random integer
in
Base at line 73
object
convertInteger(BigInteger $x)
Converts a BigInteger to a FiniteField integer
in
Base at line 83
int
getLengthInBytes()
Returns the length, in bytes, of the modulo
in
Base at line 93
int
getLength()
Returns the length, in bits, of the modulo
in
Base at line 108
array
multiplyPoint(array $p, Integer $d)
Multiply a point on the curve by a scalar
Uses the montgomery ladder technique as described here:
https://en.wikipedia.org/wiki/Elliptic_curve_point_multiplication#Montgomery_ladder https://github.com/phpecc/phpecc/issues/16#issuecomment-59176772
in
Base at line 130
FiniteField
createRandomMultiplier()
Creates a random scalar multiplier
in
Base at line 144
setOrder(BigInteger $order)
Sets the Order
in
Base at line 154
BigInteger
getOrder()
Returns the Order
in
Base at line 164
object
setReduction(callable $func)
Use a custom defined modular reduction function
in
Prime at line 745
object[]
convertToAffine(array $p)
Returns the affine point
A Jacobian Coordinate is of the form (x, y, z). To convert a Jacobian Coordinate to an Affine Point you do (x / z^2, y / z^3)
in
Prime at line 764
object[]
convertToInternal(array $p)
Converts an affine point to a jacobian coordinate
in
Base at line 194
object[]
negatePoint(array $p)
Negates a point
in
Prime at line 512
int[]
multiplyAddPoints(array $points, array $scalars)
Multiply and Add Points
Adapted from https://git.io/vxPUH
in
Prime at line 121
setModulo(BigInteger $modulo)
Sets the modulo
in
Prime at line 136
setCoefficients(BigInteger $a, BigInteger $b)
Set coefficients a and b
in
Prime at line 152
PrimeInteger[]
setBasePoint(BigInteger|PrimeInteger $x, BigInteger|PrimeInteger $y)
Set x and y coordinates for the base point
in
Prime at line 174
array
getBasePoint()
Retrieve the base point as an array
in
Prime at line 192
protected FiniteField[]
jacobianAddPointMixedXY(array $p, array $q)
Adds two "fresh" jacobian form on the curve
in
Prime at line 222
protected FiniteField[]
jacobianAddPointMixedX(array $p, array $q)
Adds one "fresh" jacobian form on the curve
The second parameter should be the "fresh" one
in
Prime at line 256
protected FiniteField[]
jacobianAddPoint(array $p, array $q)
Adds two jacobian coordinates on the curve
in
Prime at line 293
FiniteField[]
addPoint(array $p, array $q)
Adds two points on the curve
in
Prime at line 349
protected FiniteField[]
doublePointHelper(array $p)
Returns the numerator and denominator of the slope
in
Prime at line 361
protected FiniteField[]
jacobianDoublePoint(array $p)
Doubles a jacobian coordinate on the curve
in
Prime at line 383
protected FiniteField[]
jacobianDoublePointMixed(array $p)
Doubles a "fresh" jacobian coordinate on the curve
in
Prime at line 403
FiniteField[]
doublePoint(array $p)
Doubles a point on a curve
in
Prime at line 436
array
derivePoint($m)
Returns the X coordinate and the derived Y coordinate
in
Prime at line 464
bool
verifyPoint(array $p)
Tests whether or not the x / y values satisfy the equation
in
Prime at line 480
BigInteger
getModulo()
Returns the modulo
in
Prime at line 490
Integer
getA()
Returns the a coefficient
in
Prime at line 500
Integer
getB()
Returns the a coefficient