nistb409
class nistb409 extends sect409r1 (View source)
Properties
| protected object[] | $doubles | Doubles | from Base | 
| protected BigInteger | $order | The Order | from Binary | 
| protected BinaryField | $factory | Binary Field Integer factory | from Binary | 
| protected object | $a | Cofficient for x^1 | from Binary | 
| protected object | $b | Cofficient for x^0 | from Binary | 
| protected object | $p | Base Point | from Binary | 
| protected object | $one | The number one over the specified finite field | from Binary | 
| protected BigInteger | $modulo | The modulo | from Binary | 
Methods
Set x and y coordinates for the base point
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
        
                            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)
        
                            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 
Base at line 211
                            int[]
    multiplyAddPoints(array $points, array $scalars)
        
    
    Multiply and Add Points
        in 
Binary at line 92
                            
    setModulo(...$modulo)
        
    
    Sets the modulo
        
                            
    setCoefficients(string $a, string $b)
        
    
    Set coefficients a and b
        
                            
    setBasePoint(string|BinaryInteger $x, string|BinaryInteger $y)
        
    
    Set x and y coordinates for the base point
        
                            array
    getBasePoint()
        
    
    Retrieve the base point as an array
        
                            FiniteField[]
    addPoint(array $p, array $q)
        
    
    Adds two points on the curve
        
                            FiniteField[]
    doublePoint(array $p)
        
    
    Doubles a point on a curve
        
                            array
    derivePoint($m)
        
    
    Returns the X coordinate and the derived Y coordinate
Not supported because it is covered by patents. Quoting https://www.openssl.org/docs/man1.1.0/apps/ecparam.html ,
"Due to patent issues the compressed option is disabled by default for binary curves and can be enabled by defining the preprocessor macro OPENSSL_EC_BIN_PT_COMP at compile time."
        
                            bool
    verifyPoint(array $p)
        
    
    Tests whether or not the x / y values satisfy the equation
        
                            BigInteger
    getModulo()
        
    
    Returns the modulo
        
                            Integer
    getA()
        
    
    Returns the a coefficient
        
                            Integer
    getB()
        
    
    Returns the a coefficient