ECPy


NameECPy JSON
Version 1.2.5 PyPI version JSON
download
home_pagehttps://github.com/cslashm/ECPy
SummaryPure Pyhton Elliptic Curve Library
upload_time2020-10-26 11:56:16
maintainer
docs_urlNone
authorCedric Mesnil
requires_python
licenseApache License - Version 2.0
keywords ecdsa eddsa ed25519 ed448 schnorr ecschnorr elliptic curve
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            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 <https://cslashm.github.com/ECPy>`_.


**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
-----------

.. _tarball dist:

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




            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/cslashm/ECPy",
    "name": "ECPy",
    "maintainer": "",
    "docs_url": null,
    "requires_python": "",
    "maintainer_email": "",
    "keywords": "ecdsa eddsa ed25519 ed448 schnorr ecschnorr elliptic curve",
    "author": "Cedric Mesnil",
    "author_email": "cslashm@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/e0/48/3f8c1a252e3a46fd04e6fabc5e11c933b9c39cf84edd4e7c906e29c23750/ECPy-1.2.5.tar.gz",
    "platform": "",
    "description": "ECPy\n====\n\nECPy (pronounced ekpy), is a pure python Elliptic Curve library\nproviding ECDSA, EDDSA (Ed25519), ECSchnorr, Borromean signatures as well as Point\noperations.\n\nFull html documentation is available `here <https://cslashm.github.com/ECPy>`_.\n\n\n**ECDSA sample**\n\n::\n\n    from ecpy.curves     import Curve,Point\n    from ecpy.keys       import ECPublicKey, ECPrivateKey\n    from ecpy.ecdsa      import ECDSA\n\n    cv   = Curve.get_curve('secp256k1')\n    pu_key = ECPublicKey(Point(0x65d5b8bf9ab1801c9f168d4815994ad35f1dcb6ae6c7a1a303966b677b813b00,\n                           0xe6b865e529b8ecbf71cf966e900477d49ced5846d7662dd2dd11ccd55c0aff7f,\n                           cv))\n    pv_key = ECPrivateKey(0xfb26a4e75eec75544c0f44e937dcf5ee6355c7176600b9688c667e5c283b43c5,\n                      cv)\n\n\n    signer = ECDSA()\n    sig    = signer.sign(b'01234567890123456789012345678912',pv_key)\n    assert(signer.verify(b'01234567890123456789012345678912',sig,pu_key))\n\n**Point sample**\n\n::\n\n    from ecpy.curves     import Curve,Point\n\n    cv = Curve.get_curve('secp256k1')\n    P  = Point(0x65d5b8bf9ab1801c9f168d4815994ad35f1dcb6ae6c7a1a303966b677b813b00,\n               0xe6b865e529b8ecbf71cf966e900477d49ced5846d7662dd2dd11ccd55c0aff7f,\n               cv)\n    k  = 0xfb26a4e75eec75544c0f44e937dcf5ee6355c7176600b9688c667e5c283b43c5\n    Q  = k*P\n    R  = P+Q\n\n\n\nHistory\n=======\n\n1.2.5\n-----\n\nFix issue 19\n\n1.2.4\n-----\n\nFix ECDSA when mesaage hash length is greater than domain order length \n\nMove from distutils to setuptools\n\n1.2.3\n-----\n\nFix ECSchnorr when r is greater than order. Main use case is when\nusing a hash function with bitlength greater than curve size.\n\n1.2.2\n-----\n\nFix ECDSA with rfc6979. Field was used instead of order for max random.\n\n1.2.1\n-----\n\nMissing README update\n\n\n1.2.0\n-----\n\nFix rfc6979. Now conform to RFC and fully compat with python-ecdsa\n(https://github.com/warner/python-ecdsa).\n\n\n1.1.0\n-----\n\nFix DER encoding for length greater than 128\n\n    Declare ONE infinity point per curve.\n    Consider global (non attached to a curve) infinity point as deprecated\n\nFix infinity point management in ECDSA\n\nFix issue #13\n\n\n\n\n1.0.1beta\n---------\n\nMerge PR11, fixing an overflow with secp521k1\n\n\n1.0.0beta\n---------\n\nInitial 1.x series (Beta)\n\n\nQuick Install\n=============\n\nFrom Pypi\n---------\n\n::\n\n   $ pip install ECPy\n\n\n\nFrom Github\n-----------\n\n.. _tarball dist:\n\nFrom tarball dist\n`````````````````\nDownload last dist tarball.\n\nUntar it\n\n::\n\n    $ tar xzvf ECPy-M.m.tar.gz\n\ninstall it (or use it as is...)\n\n::\n\n    $ python3 setup.py install\n\nFrom sources\n````````````\n\nClone the git repository\n\nRebuild the tarball\n\n::\n\n    $ python3 setup.py sdist\n\nContinue with the created `tarball dist`_.\n\n\nGenerate the documentation\n==========================\n\n\nYou can regenerate the doc from git clone\n\n::\n\n    $ cd doc\n    $ make singlehtml\n\nDocumentation is in build dir\n\n\n\n",
    "bugtrack_url": null,
    "license": "Apache License - Version 2.0",
    "summary": "Pure Pyhton Elliptic Curve Library",
    "version": "1.2.5",
    "project_urls": {
        "Homepage": "https://github.com/cslashm/ECPy"
    },
    "split_keywords": [
        "ecdsa",
        "eddsa",
        "ed25519",
        "ed448",
        "schnorr",
        "ecschnorr",
        "elliptic",
        "curve"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "e8354a113189f7138035a21bd255d30dc7bffc77c942c93b7948d2eac2e22429",
                "md5": "1c9e6e0584b9fd88d235eda51f9d62a5",
                "sha256": "559c92e42406d9d1a6b2b8fc26e6ad7bc985f33903b72f426a56cb1073a25ce3"
            },
            "downloads": -1,
            "filename": "ECPy-1.2.5-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "1c9e6e0584b9fd88d235eda51f9d62a5",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": null,
            "size": 43075,
            "upload_time": "2020-10-26T11:56:13",
            "upload_time_iso_8601": "2020-10-26T11:56:13.613139Z",
            "url": "https://files.pythonhosted.org/packages/e8/35/4a113189f7138035a21bd255d30dc7bffc77c942c93b7948d2eac2e22429/ECPy-1.2.5-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "e0483f8c1a252e3a46fd04e6fabc5e11c933b9c39cf84edd4e7c906e29c23750",
                "md5": "a363ac3bfd65589a7e3c8eca8aa523fc",
                "sha256": "9635cffb9b6ecf7fd7f72aea1665829ac74a1d272006d0057d45a621aae20228"
            },
            "downloads": -1,
            "filename": "ECPy-1.2.5.tar.gz",
            "has_sig": false,
            "md5_digest": "a363ac3bfd65589a7e3c8eca8aa523fc",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": null,
            "size": 38458,
            "upload_time": "2020-10-26T11:56:16",
            "upload_time_iso_8601": "2020-10-26T11:56:16.313802Z",
            "url": "https://files.pythonhosted.org/packages/e0/48/3f8c1a252e3a46fd04e6fabc5e11c933b9c39cf84edd4e7c906e29c23750/ECPy-1.2.5.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2020-10-26 11:56:16",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "cslashm",
    "github_project": "ECPy",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "lcname": "ecpy"
}
        
Elapsed time: 0.81788s