`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`

— Method`curve_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`

— Method`curve_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.