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
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 Point
from PyECCArithmetic import Curve
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 Point
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 point
Multiplication
Multiplication is realised with the double and add algorithm.
from PyECCArithmetic import Point
p = Point(x_1, y_1) # curve defaults to Curve.secp256r1()
z = p * 3 # z is a new point
Division
from PyECCArithmetic import Point
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 Point
p = Point(x_1, y_1) # curve defaults to Curve.secp256r1()
order = p.order(timeout=5) # tries to calculate the order for maximal timeout seconds
Custom curve definition
from PyECCArithmetic import Curve
# Only curves defined as Weierstrass equation are supported
# y^2 = x^3 + a * x + b mod p
c = Curve(a, b, p, name='optional')
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.0.0.tar.gz
(5.6 kB
view hashes)
Built Distribution
Close
Hashes for pyECCArithmetic-1.0.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | bff05df792ed28ffc5892b10847680c468d2df282dab5b8227a962fb1ab4baaf |
|
MD5 | 8e98a6c8e288963a06a15801894ff1ad |
|
BLAKE2b-256 | ad58a34f5df54544c421b093436d70b7195ba5dfde3d1fef05f2cbe4b49992be |