Binary
class Binary extends Base (View source)
Curves over y^2 + xy = x^3 + ax^2 + b
Properties
| protected object[] | $doubles | Doubles | from Base | 
| protected BigInteger | $order | The Order | |
| protected BinaryField | $factory | Binary Field Integer factory | |
| protected object | $a | Cofficient for x^1 | |
| protected object | $b | Cofficient for x^0 | |
| protected object | $p | Base Point | |
| protected object | $one | The number one over the specified finite field | |
| protected BigInteger | $modulo | The modulo | 
Methods
Returns the affine point
Converts an affine point to a jacobian coordinate
Sets the modulo
Set coefficients a and b
Set x and y coordinates for the base point
Retrieve the base point as an array
Adds two points on the curve
Doubles a point on a curve
Returns the X coordinate and the derived Y coordinate
Tests whether or not the x / y values satisfy the equation
Returns the modulo
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
        
                            
    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