Skip to main content

Basic arithmetic operations for points on elliptic curves.

Project description

PyECCArithmetic

This package provides basic arithmethic point operations on elliptic curves. The following operations for points are available:

  • Addition
  • Subtraction
  • Multiplication
  • Division
  • Order of point (for fair points)
  • Inversion of a point
  • Is the point on the curve?

The following curves are already implemented:

  • secp224r1
  • secp256r1
  • secp384r1
  • secp521r1
  • brainpoolP160r1
  • brainpoolP192r1
  • brainpoolP224r1
  • brainpoolP256r1
  • brainpoolP320r1
  • brainpoolP384r1
  • brainpoolP512r1

It is also possible to define your own curve.

Installation

pip install PyECCArithmetic

Addition

from PyECCArithmetic import *

p = Point(x_1, y_1, curve=Curve.secp256r1())
q = Point(x_2, y_2, curve=Curve.secp256r1())

z = p + q # z is a new point

Subtraction

from PyECCArithmetic import *

p = Point(x_1, y_1) # curve defaults to Curve.secp256r1()
q = Point(x_2, y_2)

z = p - q # z = p + (-q), z is a new point

Multiplication

Multiplication is realised with the double and add algorithm.

from PyECCArithmetic import *

p = Point(x_1, y_1) # curve defaults to Curve.secp256r1()

z = p * 3 # z is a new point

Division

from PyECCArithmetic import *

p = Point(x_1, y_1) # curve defaults to Curve.secp256r1()
q = Point(x_2, y_2)

z = p / q # z is int, such that z * q == p

Order calculation

from PyECCArithmetic import *

p = Point(x_1, y_1) # curve defaults to Curve.secp256r1()
order = p.calcOrder(timeout=5) # tries to calculate the order for maximal timeout seconds 

Custom curve definition

from PyECCArithmetic import *

# Only curves defined as Weierstrass equation are supported
# y^2 = x^3 + a * x + b mod p
c = Curve(a, b, p, name='optional')

Is the point on the curve?

from PyECCArithmetic import *

onCurve = Point(1,1).isOnCurve # true or false 

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

PyECCArithmetic-1.1.0.tar.gz (5.9 kB view hashes)

Uploaded Source

Built Distribution

PyECCArithmetic-1.1.0-py3-none-any.whl (7.5 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page