Caustic v0.1.12 Caustic.ECPoint View Source
Represents an elliptic curve point y^2 = x^3 + ax + b
Link to this section Summary
Functions
Addition of points in an elliptic curve
Check whether two points in an elliptic field is equal
Find points on an elliptic curve
Create point of infinity in an elliptic curve y^2 = x^3 + ax + b
Create a point in an elliptic field
Examples
Check whether two points in an elliptic field is not equal
Link to this section Functions
Addition of points in an elliptic curve.
Examples
iex> Caustic.ECPoint.add(Caustic.ECPoint.make(-1, -1, 5, 7), Caustic.ECPoint.infinity(5, 7))
{-1, -1, 5, 7}
iex> Caustic.ECPoint.add(Caustic.ECPoint.infinity(5, 7), Caustic.ECPoint.make(-1, -1, 5, 7))
{-1, -1, 5, 7}
iex> Caustic.ECPoint.add(Caustic.ECPoint.make(-1, 1, 5, 7), Caustic.ECPoint.make(-1, -1, 5, 7))
{nil, nil, 5, 7}
iex> p = 223
iex> a = {0, p}
iex> b = {7, p}
iex> x1 = {192, p}
iex> y1 = {105, p}
iex> x2 = {17, p}
iex> y2 = {56, p}
iex> p1 = Caustic.ECPoint.make(x1, y1, a, b)
iex> p2 = Caustic.ECPoint.make(x2, y2, a, b)
iex> Caustic.ECPoint.add(p1, p2)
{{170, 223}, {142, 223}, {0, 223}, {7, 223}}
iex> p = 223
iex> a = {0, p}
iex> b = {7, p}
iex> x = {47, p}
iex> y = {71, p}
iex> p = Caustic.ECPoint.make(x, y, a, b)
iex> Caustic.ECPoint.add(p, p)
{{36, 223}, {111, 223}, {0, 223}, {7, 223}}
iex> a = {0, 223}
iex> b = {7, 223}
iex> i = Caustic.ECPoint.infinity(a, b)
iex> Caustic.ECPoint.add(i, i)
{nil, nil, {0, 223}, {7, 223}}
Check whether two points in an elliptic field is equal.
Examples
iex> Caustic.ECPoint.eq?({-1, -1, 5, 7}, {-1, -1, 5, 7})
true
Find points on an elliptic curve.
Examples
iex> Caustic.ECPoint.find_points(-100, 5, 7)
[]
iex> Caustic.ECPoint.find_points(-1.0, 5, 7)
[{-1.0, 1.0, 5, 7}, {-1.0, -1.0, 5, 7}]
Create point of infinity in an elliptic curve y^2 = x^3 + ax + b.
Examples
iex> Caustic.ECPoint.infinity(5, 7)
{nil, nil, 5, 7}
Create a point in an elliptic field.
Examples
iex> Caustic.ECPoint.make(-1, 1, 5, 7)
{-1, 1, 5, 7}
iex> Caustic.ECPoint.make(-1, -1, 5, 7)
{-1, -1, 5, 7}
iex> Caustic.ECPoint.make({17, 103}, {64, 103}, {0, 103}, {7, 103})
{{17, 103}, {64, 103}, {0, 103}, {7, 103}}
iex> Caustic.ECPoint.make({192, 223}, {105, 223}, {0, 223}, {7, 223})
{{192, 223}, {105, 223}, {0, 223}, {7, 223}}
iex> Caustic.ECPoint.make({17, 223}, {56, 223}, {0, 223}, {7, 223})
{{17, 223}, {56, 223}, {0, 223}, {7, 223}}
Examples
iex> p = 223
iex> a = {0, p}
iex> b = {7, p}
iex> x = {47, p}
iex> y = {71, p}
iex> g = Caustic.ECPoint.make(x, y, a, b)
iex> Caustic.ECPoint.mul(2, g)
{{36, 223}, {111, 223}, {0, 223}, {7, 223}}
iex> g = {{15, 223}, {86, 223}, {0, 223}, {7, 223}}
iex> Caustic.ECPoint.mul(0, g)
{nil, nil, {0, 223}, {7, 223}}