Caustic v0.1.6 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}}

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> p = Caustic.ECPoint.make(x, y, a, b)
iex> Caustic.ECPoint.mul(2, p)
{{36, 223}, {111, 223}, {0, 223}, {7, 223}}

Check whether two points in an elliptic field is not equal.

Examples

iex> Caustic.ECPoint.ne?({-1, 1, 5, 7}, {-1, -1, 5, 7})
true