DarkCurves.Curve_secp256k1
— TypeSECP256k1 curve y^2 = x^3 + 7
over the field of integers modulo 2^256 - 2^32 - 2^9 - 2^8 - 2^7 - 2^6 - 2^4 - 1
with the order (little-endian) 0xFFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFE BAAEDCE6 AF48A03B BFD25E8C D0364141
.
DarkCurves.EllipticCurve
— TypeAbstract type for an elliptic curve "bundle" that includes a point type, a scalar type, and operations on them.
DarkCurves.EllipticCurvePoint
— TypeAbstract type of a curve point.
DarkCurves.batch_mul
— MethodReturns points .* coeff
.
DarkCurves.curve_point_type
— Methodcurve_point_type(::Type{<:EllipticCurve})
Returns the type of a curve point (a subtype of EllipticCurvePoint
) for an object of type EllipticCurve
.
Objects of this type support zero()
, iszero()
, one()
, rand()
, +
, -
, ==
, *
(by a scalar type).
Base point is returned by one()
, and infinity point by zero()
.
DarkCurves.curve_scalar_type
— Methodcurve_scalar_type(::Type{<:EllipticCurve})
Returns the type of an associated scalar for an object of type EllipticCurve
. All operations with objects of this type are done modulo curve order.
Objects of this type support zero()
, iszero()
, one()
, rand()
, +
, -
, ==
, *
(by a scalar type or a point type), iseven()
, isodd()
, >>
, inv()
, divrem()
, trailing_zeros()
, DarkIntegers.num_bits()
.
DarkCurves.lin_comb
— MethodCalculates a linear combination of curve points given an array of points and an array of coefficients.
DarkCurves.EndomorphismType4Curve
— TypeA subtype of WeierstrassCurve
for curves of the form y^2 = x^3 + b
with the modulus p = 1 mod 3
. These curves support an endomorphism type 4.
DarkCurves.StandardEllipticCurvePoint
— TypeAbstract type for built-in curve point types parameterized by coordinate types.
DarkCurves.WeierstrassCurve
— TypeA subtype of EllipticCurve
for curves defined by an equation y^2 = x^3 + a * x + b
.
DarkCurves.balanced_decomposition
— MethodReturns k1, k2
such that k = k1 + k2 * l mod n
.
DarkCurves.lin_comb_windowed
— MethodLinear combination using Shamir's trick and a fixed window.