Documentation

prime192v1 extends secp192r1
in package

FinalYes

Curves over y^2 = x^3 + a*x + b

Table of Contents

Properties

$a  : object
Cofficient for x^1
$b  : object
Cofficient for x^0
$doubles  : array<string|int, object>
Doubles
$eight  : object
The number eight over the specified finite field
$factory  : PrimeFields
Prime Field Integer factory
$four  : object
The number four over the specified finite field
$modulo  : BigInteger
The modulo
$one  : object
The number one over the specified finite field
$order  : BigInteger
The Order
$p  : object
Base Point
$three  : object
The number three over the specified finite field
$two  : object
The number two over the specified finite field
$naf  : array<string|int, int>
NAF Points

Methods

__construct()  : mixed
addPoint()  : array<string|int, FiniteField>
Adds two points on the curve
convertInteger()  : object
Converts a BigInteger to a FiniteField integer
convertToAffine()  : array<string|int, Integer>
Returns the affine point
convertToInternal()  : array<string|int, Integer>
Converts an affine point to a jacobian coordinate
createRandomMultiplier()  : FiniteField
Creates a random scalar multiplier
derivePoint()  : array<string|int, mixed>
Returns the X coordinate and the derived Y coordinate
doublePoint()  : array<string|int, FiniteField>
Doubles a point on a curve
getA()  : Integer
Returns the a coefficient
getB()  : Integer
Returns the a coefficient
getBasePoint()  : array<string|int, mixed>
Retrieve the base point as an array
getLength()  : int
Returns the length, in bits, of the modulo
getLengthInBytes()  : int
Returns the length, in bytes, of the modulo
getModulo()  : BigInteger
Returns the modulo
getOrder()  : BigInteger
Returns the Order
multiplyAddPoints()  : array<string|int, int>
Multiply and Add Points
multiplyPoint()  : array<string|int, mixed>
Multiply a point on the curve by a scalar
negatePoint()  : array<string|int, object>
Negates a point
randomInteger()  : object
Returns a random integer
setBasePoint()  : array<string|int, Integer>
Set x and y coordinates for the base point
setCoefficients()  : mixed
Set coefficients a and b
setModulo()  : mixed
Sets the modulo
setOrder()  : mixed
Sets the Order
setReduction()  : object
Use a custom defined modular reduction function
verifyPoint()  : bool
Tests whether or not the x / y values satisfy the equation
doublePointHelper()  : array<string|int, FiniteField>
Returns the numerator and denominator of the slope
jacobianAddPoint()  : array<string|int, FiniteField>
Adds two jacobian coordinates on the curve
jacobianAddPointMixedX()  : array<string|int, FiniteField>
Adds one "fresh" jacobian form on the curve
jacobianAddPointMixedXY()  : array<string|int, FiniteField>
Adds two "fresh" jacobian form on the curve
jacobianDoublePoint()  : array<string|int, FiniteField>
Doubles a jacobian coordinate on the curve
jacobianDoublePointMixed()  : array<string|int, FiniteField>
Doubles a "fresh" jacobian coordinate on the curve
getJSFPoints()  : array<string|int, int>
Precomputes points in Joint Sparse Form
getNAFPoints()  : array<string|int, int>
Precomputes NAF points

Properties

$a

Cofficient for x^1

protected object $a

$b

Cofficient for x^0

protected object $b

$doubles

Doubles

protected array<string|int, object> $doubles

$eight

The number eight over the specified finite field

protected object $eight

$factory

Prime Field Integer factory

protected PrimeFields $factory

$four

The number four over the specified finite field

protected object $four

$one

The number one over the specified finite field

protected object $one

$p

Base Point

protected object $p

$three

The number three over the specified finite field

protected object $three

$two

The number two over the specified finite field

protected object $two

$naf

NAF Points

private array<string|int, int> $naf

Methods

addPoint()

Adds two points on the curve

public addPoint(array<string|int, mixed> $p, array<string|int, mixed> $q) : array<string|int, FiniteField>
Parameters
$p : array<string|int, mixed>
$q : array<string|int, mixed>
Return values
array<string|int, FiniteField>

convertInteger()

Converts a BigInteger to a FiniteField integer

public convertInteger(BigInteger $x) : object
Parameters
$x : BigInteger
Return values
object

convertToAffine()

Returns the affine point

public convertToAffine(array<string|int, mixed> $p) : array<string|int, Integer>

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)

Parameters
$p : array<string|int, mixed>
Return values
array<string|int, Integer>

convertToInternal()

Converts an affine point to a jacobian coordinate

public convertToInternal(array<string|int, mixed> $p) : array<string|int, Integer>
Parameters
$p : array<string|int, mixed>
Return values
array<string|int, Integer>

derivePoint()

Returns the X coordinate and the derived Y coordinate

public derivePoint(mixed $m) : array<string|int, mixed>
Parameters
$m : mixed
Return values
array<string|int, mixed>

doublePoint()

Doubles a point on a curve

public doublePoint(array<string|int, mixed> $p) : array<string|int, FiniteField>
Parameters
$p : array<string|int, mixed>
Return values
array<string|int, FiniteField>

getBasePoint()

Retrieve the base point as an array

public getBasePoint() : array<string|int, mixed>
Return values
array<string|int, mixed>

getLength()

Returns the length, in bits, of the modulo

public getLength() : int
Return values
int

getLengthInBytes()

Returns the length, in bytes, of the modulo

public getLengthInBytes() : int
Return values
int

multiplyAddPoints()

Multiply and Add Points

public multiplyAddPoints(array<string|int, mixed> $points, array<string|int, mixed> $scalars) : array<string|int, int>

Adapted from https://git.io/vxPUH

Parameters
$points : array<string|int, mixed>
$scalars : array<string|int, mixed>
Return values
array<string|int, int>

multiplyPoint()

Multiply a point on the curve by a scalar

public multiplyPoint(array<string|int, mixed> $p, Integer $d) : array<string|int, mixed>

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

Parameters
$p : array<string|int, mixed>
$d : Integer
Return values
array<string|int, mixed>

negatePoint()

Negates a point

public negatePoint(array<string|int, mixed> $p) : array<string|int, object>
Parameters
$p : array<string|int, mixed>
Return values
array<string|int, object>

randomInteger()

Returns a random integer

public randomInteger() : object
Return values
object

setReduction()

Use a custom defined modular reduction function

public setReduction(callable $func) : object
Parameters
$func : callable
Return values
object

verifyPoint()

Tests whether or not the x / y values satisfy the equation

public verifyPoint(array<string|int, mixed> $p) : bool
Parameters
$p : array<string|int, mixed>
Return values
bool

doublePointHelper()

Returns the numerator and denominator of the slope

protected doublePointHelper(array<string|int, mixed> $p) : array<string|int, FiniteField>
Parameters
$p : array<string|int, mixed>
Return values
array<string|int, FiniteField>

jacobianAddPoint()

Adds two jacobian coordinates on the curve

protected jacobianAddPoint(array<string|int, mixed> $p, array<string|int, mixed> $q) : array<string|int, FiniteField>
Parameters
$p : array<string|int, mixed>
$q : array<string|int, mixed>
Return values
array<string|int, FiniteField>

jacobianAddPointMixedX()

Adds one "fresh" jacobian form on the curve

protected jacobianAddPointMixedX(array<string|int, mixed> $p, array<string|int, mixed> $q) : array<string|int, FiniteField>

The second parameter should be the "fresh" one

Parameters
$p : array<string|int, mixed>
$q : array<string|int, mixed>
Return values
array<string|int, FiniteField>

jacobianAddPointMixedXY()

Adds two "fresh" jacobian form on the curve

protected jacobianAddPointMixedXY(array<string|int, mixed> $p, array<string|int, mixed> $q) : array<string|int, FiniteField>
Parameters
$p : array<string|int, mixed>
$q : array<string|int, mixed>
Return values
array<string|int, FiniteField>

jacobianDoublePoint()

Doubles a jacobian coordinate on the curve

protected jacobianDoublePoint(array<string|int, mixed> $p) : array<string|int, FiniteField>
Parameters
$p : array<string|int, mixed>
Return values
array<string|int, FiniteField>

jacobianDoublePointMixed()

Doubles a "fresh" jacobian coordinate on the curve

protected jacobianDoublePointMixed(array<string|int, mixed> $p) : array<string|int, FiniteField>
Parameters
$p : array<string|int, mixed>
Return values
array<string|int, FiniteField>

getJSFPoints()

Precomputes points in Joint Sparse Form

private static getJSFPoints(Integer $k1, Integer $k2) : array<string|int, int>

Adapted from https://git.io/vxrpD

Parameters
$k1 : Integer
$k2 : Integer
Return values
array<string|int, int>

getNAFPoints()

Precomputes NAF points

private getNAFPoints(mixed $point, mixed $wnd) : array<string|int, int>

Adapted from https://git.io/vxY1f

Parameters
$point : mixed
$wnd : mixed
Return values
array<string|int, int>

        
On this page

Search results