Skip to main content

Pure Pyhton Elliptic Curve Library

Project description

ECPy

ECPy (pronounced ekpy), is a pure python Elliptic Curve library providing ECDSA, EDDSA (Ed25519), ECSchnorr, Borromean signatures as well as Point operations.

Full html documentation is available here.

ECDSA sample

from ecpy.curves     import Curve,Point
from ecpy.keys       import ECPublicKey, ECPrivateKey
from ecpy.ecdsa      import ECDSA

cv   = Curve.get_curve('secp256k1')
pu_key = ECPublicKey(Point(0x65d5b8bf9ab1801c9f168d4815994ad35f1dcb6ae6c7a1a303966b677b813b00,
                       0xe6b865e529b8ecbf71cf966e900477d49ced5846d7662dd2dd11ccd55c0aff7f,
                       cv))
pv_key = ECPrivateKey(0xfb26a4e75eec75544c0f44e937dcf5ee6355c7176600b9688c667e5c283b43c5,
                  cv)


signer = ECDSA()
sig    = signer.sign(b'01234567890123456789012345678912',pv_key)
assert(signer.verify(b'01234567890123456789012345678912',sig,pu_key))

Point sample

from ecpy.curves     import Curve,Point

cv = Curve.get_curve('secp256k1')
P  = Point(0x65d5b8bf9ab1801c9f168d4815994ad35f1dcb6ae6c7a1a303966b677b813b00,
           0xe6b865e529b8ecbf71cf966e900477d49ced5846d7662dd2dd11ccd55c0aff7f,
           cv)
k  = 0xfb26a4e75eec75544c0f44e937dcf5ee6355c7176600b9688c667e5c283b43c5
Q  = k*P
R  = P+Q

History

1.2.5

Fix issue 19

1.2.4

Fix ECDSA when mesaage hash length is greater than domain order length

Move from distutils to setuptools

1.2.3

Fix ECSchnorr when r is greater than order. Main use case is when using a hash function with bitlength greater than curve size.

1.2.2

Fix ECDSA with rfc6979. Field was used instead of order for max random.

1.2.1

Missing README update

1.2.0

Fix rfc6979. Now conform to RFC and fully compat with python-ecdsa (https://github.com/warner/python-ecdsa).

1.1.0

Fix DER encoding for length greater than 128

Declare ONE infinity point per curve. Consider global (non attached to a curve) infinity point as deprecated

Fix infinity point management in ECDSA

Fix issue #13

1.0.1beta

Merge PR11, fixing an overflow with secp521k1

1.0.0beta

Initial 1.x series (Beta)

Quick Install

From Pypi

$ pip install ECPy

From Github

From tarball dist

Download last dist tarball.

Untar it

$ tar xzvf ECPy-M.m.tar.gz

install it (or use it as is…)

$ python3 setup.py install

From sources

Clone the git repository

Rebuild the tarball

$ python3 setup.py sdist

Continue with the created tarball dist.

Generate the documentation

You can regenerate the doc from git clone

$ cd doc
$ make singlehtml

Documentation is in build dir

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

ECPy-1.2.5.tar.gz (38.5 kB view details)

Uploaded Source

Built Distribution

ECPy-1.2.5-py3-none-any.whl (43.1 kB view details)

Uploaded Python 3

File details

Details for the file ECPy-1.2.5.tar.gz.

File metadata

  • Download URL: ECPy-1.2.5.tar.gz
  • Upload date:
  • Size: 38.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.0 requests/2.22.0 setuptools/45.2.0 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.8.5

File hashes

Hashes for ECPy-1.2.5.tar.gz
Algorithm Hash digest
SHA256 9635cffb9b6ecf7fd7f72aea1665829ac74a1d272006d0057d45a621aae20228
MD5 a363ac3bfd65589a7e3c8eca8aa523fc
BLAKE2b-256 e0483f8c1a252e3a46fd04e6fabc5e11c933b9c39cf84edd4e7c906e29c23750

See more details on using hashes here.

File details

Details for the file ECPy-1.2.5-py3-none-any.whl.

File metadata

  • Download URL: ECPy-1.2.5-py3-none-any.whl
  • Upload date:
  • Size: 43.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.0 requests/2.22.0 setuptools/45.2.0 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.8.5

File hashes

Hashes for ECPy-1.2.5-py3-none-any.whl
Algorithm Hash digest
SHA256 559c92e42406d9d1a6b2b8fc26e6ad7bc985f33903b72f426a56cb1073a25ce3
MD5 1c9e6e0584b9fd88d235eda51f9d62a5
BLAKE2b-256 e8354a113189f7138035a21bd255d30dc7bffc77c942c93b7948d2eac2e22429

See more details on using hashes here.

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