{ "info": { "author": "Anton Kueltz", "author_email": "kueltz.anton@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: CC0 1.0 Universal (CC0 1.0) Public Domain Dedication", "Operating System :: MacOS :: MacOS X", "Operating System :: POSIX :: Linux", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3.8", "Topic :: Security :: Cryptography" ], "description": "fastecdsa\n=========\n.. image:: https://img.shields.io/pypi/v/fastecdsa.svg\n :target: https://pypi.org/project/fastecdsa/\n :alt: PyPI\n\n.. image:: https://img.shields.io/travis/AntonKueltz/fastecdsa.svg\n :target: https://travis-ci.org/AntonKueltz/fastecdsa\n :alt: Travis\n\n.. image:: https://readthedocs.org/projects/fastecdsa/badge/?version=latest\n :target: http://fastecdsa.readthedocs.io/en/latest/?badge=latest\n :alt: Documentation Status\n\n.. contents::\n\nAbout\n-----\nThis is a python package for doing fast elliptic curve cryptography, specifically\ndigital signatures.\n\nSecurity\n--------\nI am not aware of any current issues. There is no nonce reuse, no branching on secret material,\nand all points are validated before any operations are performed on them. Timing side challenges\nare mitigated via Montgomery point multiplication. Nonces are generated per RFC6979_. The default\ncurve used throughout the package is P256 which provides 128 bits of security. If you require a\nhigher level of security you can specify the curve parameter in a method to use a curve over a\nbigger field e.g. P384. All that being said, crypto is tricky and I'm not beyond making mistakes.\nPlease use a more established and reviewed library for security critical applications. Open an\nissue or email me if you see any security issue or risk with this library.\n\nPython Versions Supported\n-------------------------\nThe initial release of this package was targeted at python2.7. Earlier versions may work but have\nno guarantee of correctness or stability. As of release 1.2.1+ python3 is now supported as well.\n\nSupported Primitives\n--------------------\nCurves over Prime Fields\n~~~~~~~~~~~~~~~~~~~~~~~~\n\n+---------------------------+-----------------------------------------+-------------+\n| Name | Class | Proposed By |\n+===========================+=========================================+=============+\n| P192 / secp192r1 | :code:`fastecdsa.curve.P192` | NIST / NSA |\n+---------------------------+-----------------------------------------+-------------+\n| P224 / secp224r1 | :code:`fastecdsa.curve.P224` | NIST / NSA |\n+---------------------------+-----------------------------------------+-------------+\n| P256 / secp256r1 | :code:`fastecdsa.curve.P256` | NIST / NSA |\n+---------------------------+-----------------------------------------+-------------+\n| P384 / secp384r1 | :code:`fastecdsa.curve.P384` | NIST / NSA |\n+---------------------------+-----------------------------------------+-------------+\n| P521 / secp521r1 | :code:`fastecdsa.curve.P521` | NIST / NSA |\n+---------------------------+-----------------------------------------+-------------+\n| secp192k1 | :code:`fastecdsa.curve.secp192k1` | Certicom |\n+---------------------------+-----------------------------------------+-------------+\n| secp224k1 | :code:`fastecdsa.curve.secp224k1` | Certicom |\n+---------------------------+-----------------------------------------+-------------+\n| secp256k1 (bitcoin curve) | :code:`fastecdsa.curve.secp256k1` | Certicom |\n+---------------------------+-----------------------------------------+-------------+\n| brainpoolP160r1 | :code:`fastecdsa.curve.brainpoolP160r1` | BSI |\n+---------------------------+-----------------------------------------+-------------+\n| brainpoolP192r1 | :code:`fastecdsa.curve.brainpoolP192r1` | BSI |\n+---------------------------+-----------------------------------------+-------------+\n| brainpoolP224r1 | :code:`fastecdsa.curve.brainpoolP224r1` | BSI |\n+---------------------------+-----------------------------------------+-------------+\n| brainpoolP256r1 | :code:`fastecdsa.curve.brainpoolP256r1` | BSI |\n+---------------------------+-----------------------------------------+-------------+\n| brainpoolP320r1 | :code:`fastecdsa.curve.brainpoolP320r1` | BSI |\n+---------------------------+-----------------------------------------+-------------+\n| brainpoolP384r1 | :code:`fastecdsa.curve.brainpoolP384r1` | BSI |\n+---------------------------+-----------------------------------------+-------------+\n| brainpoolP512r1 | :code:`fastecdsa.curve.brainpoolP512r1` | BSI |\n+---------------------------+-----------------------------------------+-------------+\n\nArbitrary Curves\n~~~~~~~~~~~~~~~~\nAs of version 1.5.1 construction of arbitrary curves in Weierstrass form\n(:code:`y^2 = x^3 + ax + b (mod p)`) is supported. I advise against using custom curves for any\nsecurity critical applications. It's up to you to make sure that the parameters you pass here are\ncorrect, no validation of the base point is done, and in general no sanity checks are done. Use\nat your own risk.\n\n.. code:: python\n\n from fastecdsa.curve import Curve\n curve = Curve(\n name, # (str): The name of the curve\n p, # (long): The value of p in the curve equation.\n a, # (long): The value of a in the curve equation.\n b, # (long): The value of b in the curve equation.\n q, # (long): The order of the base point of the curve.\n gx, # (long): The x coordinate of the base point of the curve.\n gy, # (long): The y coordinate of the base point of the curve.\n oid # (str): The object identifier of the curve (optional).\n )\n\nHash Functions\n~~~~~~~~~~~~~~\nAny hash function in the :code:`hashlib` module (:code:`md5, sha1, sha224, sha256, sha384, sha512`)\nwill work, as will any hash function that implements the same interface / core functionality as the\nthose in :code:`hashlib`. For instance, if you wish to use SHA3 as the hash function the\n:code:`pysha3` package will work with this library as long as it is at version >=1.0b1 (as previous\nversions didn't work with the :code:`hmac` module which is used in nonce generation). Note\nthat :code:`sha3_224, sha3_256, sha3_384, sha3_512` are all in :code:`hashlib` as of python3.6.\n\nPerformance\n-----------\n\nCurves over Prime Fields\n~~~~~~~~~~~~~~~~~~~~~~~~\nCurrently it does elliptic curve arithmetic significantly faster than the :code:`ecdsa`\npackage. You can see the times for 1,000 signature and verification operations over\nvarious curves below. These were run on an early 2014 MacBook Air with a 1.4 GHz Intel\nCore i5.\n\n+-----------+------------------------+--------------------+---------+\n| Curve | :code:`fastecdsa` time | :code:`ecdsa` time | Speedup |\n+-----------+------------------------+--------------------+---------+\n| P192 | 3.62s | 1m35.49s | ~26x |\n+-----------+------------------------+--------------------+---------+\n| P224 | 4.50s | 2m13.42s | ~29x |\n+-----------+------------------------+--------------------+---------+\n| P256 | 6.15s | 2m52.43s | ~28x |\n+-----------+------------------------+--------------------+---------+\n| P384 | 12.11s | 6m21.01s | ~31x |\n+-----------+------------------------+--------------------+---------+\n| P521 | 22.21s | 11m39.53s | ~31x |\n+-----------+------------------------+--------------------+---------+\n| secp256k1 | 5.92s | 2m57.19s | ~30x |\n+-----------+------------------------+--------------------+---------+\n\nBenchmarking\n~~~~~~~~~~~~\nIf you'd like to benchmark performance on your machine you can do so using the command:\n\n.. code:: bash\n\n $ python setup.py benchmark\n\nThis will use the :code:`timeit` module to benchmark 1000 signature and verification operations\nfor each curve supported by this package.\n\nInstalling\n----------\nYou can use pip: :code:`$ pip install fastecdsa` or clone the repo and use\n:code:`$ python setup.py install`. Note that you need to have a C compiler.\nYou also need to have GMP_ on your system as the underlying\nC code in this package includes the :code:`gmp.h` header (and links against gmp\nvia the :code:`-lgmp` flag). You can install all dependencies as follows:\n\napt\n~~~\n\n.. code:: bash\n\n $ sudo apt-get install python-dev libgmp3-dev\n\nyum\n~~~\n\n.. code:: bash\n\n $ sudo yum install python-devel gmp-devel\n\nUsage\n-----\nGenerating Keys\n~~~~~~~~~~~~~~~\nYou can use this package to generate keys if you like. Recall that private keys on elliptic curves\nare integers, and public keys are points i.e. integer pairs.\n\n.. code:: python\n\n from fastecdsa import keys, curve\n\n \"\"\"The reason there are two ways to generate a keypair is that generating the public key requires\n a point multiplication, which can be expensive. That means sometimes you may want to delay\n generating the public key until it is actually needed.\"\"\"\n\n # generate a keypair (i.e. both keys) for curve P256\n priv_key, pub_key = keys.gen_keypair(curve.P256)\n\n # generate a private key for curve P256\n priv_key = keys.gen_private_key(curve.P256)\n\n # get the public key corresponding to the private key we just generated\n pub_key = keys.get_public_key(priv_key, curve.P256)\n\n\nSigning and Verifying\n~~~~~~~~~~~~~~~~~~~~~\nSome basic usage is shown below:\n\n.. code:: python\n\n from fastecdsa import curve, ecdsa, keys\n from hashlib import sha384\n\n m = \"a message to sign via ECDSA\" # some message\n\n ''' use default curve and hash function (P256 and SHA2) '''\n private_key = keys.gen_private_key(curve.P256)\n public_key = keys.get_public_key(private_key, curve.P256)\n # standard signature, returns two integers\n r, s = ecdsa.sign(m, private_key)\n # should return True as the signature we just generated is valid.\n valid = ecdsa.verify((r, s), m, public_key)\n\n ''' specify a different hash function to use with ECDSA '''\n r, s = ecdsa.sign(m, private_key, hashfunc=sha384)\n valid = ecdsa.verify((r, s), m, public_key, hashfunc=sha384)\n\n ''' specify a different curve to use with ECDSA '''\n private_key = keys.gen_private_key(curve.P224)\n public_key = keys.get_public_key(private_key, curve.P224)\n r, s = ecdsa.sign(m, private_key, curve=curve.P224)\n valid = ecdsa.verify((r, s), m, public_key, curve=curve.P224)\n\n ''' using SHA3 via pysha3>=1.0b1 package '''\n import sha3 # pip install [--user] pysha3==1.0b1\n from hashlib import sha3_256\n private_key, public_key = keys.gen_keypair(curve.P256)\n r, s = ecdsa.sign(m, private_key, hashfunc=sha3_256)\n valid = ecdsa.verify((r, s), m, public_key, hashfunc=sha3_256)\n\nArbitrary Elliptic Curve Arithmetic\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\nThe :code:`Point` class allows arbitrary arithmetic to be performed over curves. The two main\noperations are point addition and point multiplication (by a scalar) which can be done via the\nstandard python operators (:code:`+` and :code:`*` respectively):\n\n.. code:: python\n\n # example taken from the document below (section 4.3.2):\n # https://koclab.cs.ucsb.edu/teaching/cren/docs/w02/nist-routines.pdf\n\n from fastecdsa.curve import P256\n from fastecdsa.point import Point\n\n xs = 0xde2444bebc8d36e682edd27e0f271508617519b3221a8fa0b77cab3989da97c9\n ys = 0xc093ae7ff36e5380fc01a5aad1e66659702de80f53cec576b6350b243042a256\n S = Point(xs, ys, curve=P256)\n\n xt = 0x55a8b00f8da1d44e62f6b3b25316212e39540dc861c89575bb8cf92e35e0986b\n yt = 0x5421c3209c2d6c704835d82ac4c3dd90f61a8a52598b9e7ab656e9d8c8b24316\n T = Point(xt, yt, curve=P256)\n\n # Point Addition\n R = S + T\n\n # Point Subtraction: (xs, ys) - (xt, yt) = (xs, ys) + (xt, -yt)\n R = S - T\n\n # Point Doubling\n R = S + S # produces the same value as the operation below\n R = 2 * S # S * 2 works fine too i.e. order doesn't matter\n\n d = 0xc51e4753afdec1e6b6c6a5b992f43f8dd0c7a8933072708b6522468b2ffb06fd\n\n # Scalar Multiplication\n R = d * S # S * d works fine too i.e. order doesn't matter\n\n e = 0xd37f628ece72a462f0145cbefe3f0b355ee8332d37acdd83a358016aea029db7\n\n # Joint Scalar Multiplication\n R = d * S + e * T\n\nImporting and Exporting Keys\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~\nYou can also export keys as files, ASN.1 encoded and formatted per RFC5480_ and RFC5915_. Both\nprivate keys and public keys can be exported as follows:\n\n.. code:: python\n\n from fastecdsa.curve import P256\n from fastecdsa.keys import export_key, gen_keypair\n\n d, Q = gen_keypair(P256)\n # save the private key to disk\n export_key(d, curve=P256, filepath='/path/to/exported/p256.key')\n # save the public key to disk\n export_key(Q, curve=P256, filepath='/path/to/exported/p256.pub')\n\nKeys stored in this format can also be imported. The import function will figure out if the key\nis a public or private key and parse it accordingly:\n\n.. code:: python\n\n from fastecdsa.keys import import_key\n\n # if the file is a private key then parsed_d is a long and parsed_Q is a Point object\n # if the file is a public key then parsed_d will be None\n parsed_d, parsed_Q = import_key('/path/to/file.key')\n\nOther encoding formats can also be specified, such as SEC1_ for public keys. This is done using\nclasses found in the :code:`fastecdsa.encoding` package, and passing them as keyword args to\nthe key functions:\n\n.. code:: python\n\n from fastecdsa.curve import P256\n from fastecdsa.encoding.sec1 import SEC1Encoder\n from fastecdsa.keys import export_key, gen_keypair, import_key\n\n _, Q = gen_keypair(P256)\n export_key(Q, curve=P256, filepath='/path/to/p256.key', encoder=SEC1Encoder)\n parsed_Q = import_key('/path/to/p256.key', curve=P256, public=True, decoder=SEC1Encoder)\n\nEncoding Signatures\n~~~~~~~~~~~~~~~~~~~\nDER encoding of ECDSA signatures as defined in RFC2459_ is also supported. The\n:code:`fastecdsa.encoding.der` provides the :code:`DEREncoder` class which encodes signatures:\n\n.. code:: python\n\n from fastecdsa.encoding.der import DEREncoder\n\n r, s = 0xdeadc0de, 0xbadc0de\n encoded = DEREncoder.encode_signature(r, s)\n decoded_r, decoded_s = DEREncoder.decode_signature(encoded)\n\nAcknowledgements\n----------------\nThanks to those below for contributing improvements:\n\n- boneyard93501\n- clouds56\n- m-kus\n- sirk390\n- targon\n\n.. _GMP: https://gmplib.org/\n.. _RFC2459: https://tools.ietf.org/html/rfc2459\n.. _RFC5480: https://tools.ietf.org/html/rfc5480\n.. _RFC5915: https://tools.ietf.org/html/rfc5915\n.. _RFC6979: https://tools.ietf.org/html/rfc6979\n.. _SEC1: http://www.secg.org/sec1-v2.pdf\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/AntonKueltz/fastecdsa", "keywords": "elliptic curve cryptography ecdsa ecc", "license": "CC0 1.0 Universal (CC0 1.0) Public Domain Dedication", "maintainer": "", "maintainer_email": "", "name": "fastecdsa", "package_url": "https://pypi.org/project/fastecdsa/", "platform": "", "project_url": "https://pypi.org/project/fastecdsa/", "project_urls": { "Homepage": "https://github.com/AntonKueltz/fastecdsa" }, "release_url": "https://pypi.org/project/fastecdsa/1.7.4/", "requires_dist": [ "six" ], "requires_python": "", "summary": "Fast elliptic curve digital signatures", "version": "1.7.4" }, "last_serial": 5596507, "releases": { "1.0.0b1": [ { "comment_text": "", "digests": { "md5": "096f92bfa12d6b67667efcdb2d1c5537", "sha256": "08ed3a374cc42a1f02f81b879ae369462ea4c9363ec673bd26e0e21e9a23b237" }, "downloads": -1, "filename": "fastecdsa-1.0.0b1.tar.gz", "has_sig": false, "md5_digest": "096f92bfa12d6b67667efcdb2d1c5537", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10116, "upload_time": "2016-04-05T05:44:29", "url": "https://files.pythonhosted.org/packages/ca/19/4f6b8f8c8963c210248f7cf58ff6d9892120157b13d4448a37838f3d6c01/fastecdsa-1.0.0b1.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "79acaecc04b4d1fc25fa8cf110be4e59", "sha256": "b43db66b599f396abab190c9f0969abf6b34211d7b5ba249e6cc4361e160b761" }, "downloads": -1, "filename": "fastecdsa-1.0.1.tar.gz", "has_sig": true, "md5_digest": "79acaecc04b4d1fc25fa8cf110be4e59", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10441, "upload_time": "2016-04-05T06:38:35", "url": "https://files.pythonhosted.org/packages/c9/f8/e646395534a4d6bc549931147e18b3130712c5ff437ab86d4ac330ad8409/fastecdsa-1.0.1.tar.gz" } ], "1.0.1b1": [ { "comment_text": "", "digests": { "md5": "90300b6f44fa5c1e8d62708408d04bc2", "sha256": "0ea10c23031e5b822b2aceda33f142a11b91923bb352554755356a00a8cb3d78" }, "downloads": -1, "filename": "fastecdsa-1.0.1b1.tar.gz", "has_sig": true, "md5_digest": "90300b6f44fa5c1e8d62708408d04bc2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10112, "upload_time": "2016-04-05T05:50:27", "url": "https://files.pythonhosted.org/packages/0d/e5/dc9868111135677e09e8bd11c32ca28bdb92442ec98121096908fd46d5a9/fastecdsa-1.0.1b1.tar.gz" } ], "1.0.1b2": [ { "comment_text": "", "digests": { "md5": "3b4d0ca4799981d7d541b0b6f27b8736", "sha256": "cbc3b4695b3291317341e31faac5fa89fb2cf60ff9f8a510741da780758eed68" }, "downloads": -1, "filename": "fastecdsa-1.0.1b2.tar.gz", "has_sig": true, "md5_digest": "3b4d0ca4799981d7d541b0b6f27b8736", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10468, "upload_time": "2016-04-05T06:04:25", "url": "https://files.pythonhosted.org/packages/08/e9/aad6904912c206eb1eed5f4a8cf4a672d6d6fe542d596c3a5a653d5eb48f/fastecdsa-1.0.1b2.tar.gz" } ], "1.0.1b3": [ { "comment_text": "", "digests": { "md5": "3cbcd0e50e03ce0f12f91543fd4d255d", "sha256": "7d0973f209a79867cd853471084b8f8e1d81129d045e7d256739a63a40e465e1" }, "downloads": -1, "filename": "fastecdsa-1.0.1b3.tar.gz", "has_sig": true, "md5_digest": "3cbcd0e50e03ce0f12f91543fd4d255d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10442, "upload_time": "2016-04-05T06:31:47", "url": "https://files.pythonhosted.org/packages/18/bb/25ebfca2ce2747c9d776ed9aa070d698f1db860de4f4e813aa8ee524afbc/fastecdsa-1.0.1b3.tar.gz" } ], "1.0.2": [ { "comment_text": "", "digests": { "md5": "3e7ec8fe33e2cedea26df7d13487f5a7", "sha256": "5f1a6afea5fcd93a483d68f9b7e550d44a1e90bba71e95b290afe5aefe239659" }, "downloads": -1, "filename": "fastecdsa-1.0.2.tar.gz", "has_sig": true, "md5_digest": "3e7ec8fe33e2cedea26df7d13487f5a7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10528, "upload_time": "2016-04-05T10:17:39", "url": "https://files.pythonhosted.org/packages/c7/ee/bb56ee9f610635ec4ed6a55161d1a723c2e0fe5e7ef700fdbd0fb149320f/fastecdsa-1.0.2.tar.gz" } ], "1.0.3": [ { "comment_text": "", "digests": { "md5": "7dca30120b402d77d988bc5c955b7a74", "sha256": "23ce5ec3b08abbf65e5b829a867e5d4fc9b07d0ab41fbbf1dbeb252f108a32a8" }, "downloads": -1, "filename": "fastecdsa-1.0.3.tar.gz", "has_sig": true, "md5_digest": "7dca30120b402d77d988bc5c955b7a74", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10564, "upload_time": "2016-04-05T22:50:42", "url": "https://files.pythonhosted.org/packages/e5/67/c34244c28bc99c74f8e97f237997aed243815e45d5d8a3b45be94fc30b2b/fastecdsa-1.0.3.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "99758c195a8f1eed89107edfe0c35a67", "sha256": "885500275c1257bb460ce85846b34dd269d7e9e444160137b495a28e6d4ff496" }, "downloads": -1, "filename": "fastecdsa-1.1.0.tar.gz", "has_sig": true, "md5_digest": "99758c195a8f1eed89107edfe0c35a67", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10607, "upload_time": "2016-04-07T00:31:37", "url": "https://files.pythonhosted.org/packages/06/9f/6ea8101d2d09e4196d9946ac092d1ec6408eed82515280cae2d465332cd7/fastecdsa-1.1.0.tar.gz" } ], "1.1.1": [ { "comment_text": "", "digests": { "md5": "8b701104b8d5b15060c5544d3f5298c8", "sha256": "f8c888ab0f2816728545d94e0eb6ead5dbda8513236b7db72ad7656ce335ebd7" }, "downloads": -1, "filename": "fastecdsa-1.1.1.tar.gz", "has_sig": true, "md5_digest": "8b701104b8d5b15060c5544d3f5298c8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13064, "upload_time": "2016-04-07T00:39:31", "url": "https://files.pythonhosted.org/packages/00/8c/d108c15e8e19c8eca445b27e10912d789f25dd596ffce2e7c4decfe59318/fastecdsa-1.1.1.tar.gz" } ], "1.1.2": [ { "comment_text": "", "digests": { "md5": "1eea31d451eb82b4aeee607ffed8164e", "sha256": "3c237999749657666f655c4d9962dbcbe6b65be57d5ad516eb25751e97e0cda6" }, "downloads": -1, "filename": "fastecdsa-1.1.2.tar.gz", "has_sig": true, "md5_digest": "1eea31d451eb82b4aeee607ffed8164e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14068, "upload_time": "2016-05-11T03:05:40", "url": "https://files.pythonhosted.org/packages/45/a3/972113bfd797da99694262cd7af1625c8f92e22bebf549715f50de554ec7/fastecdsa-1.1.2.tar.gz" } ], "1.1.3": [ { "comment_text": "", "digests": { "md5": "035b3cef1ac9c87856aecea74774b310", "sha256": "affd7c5cb0b878972a97b8090e464a8b66eacf0c959f205dad7b23b9e007ba63" }, "downloads": -1, "filename": "fastecdsa-1.1.3.tar.gz", "has_sig": true, "md5_digest": "035b3cef1ac9c87856aecea74774b310", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14870, "upload_time": "2016-08-22T02:16:50", "url": "https://files.pythonhosted.org/packages/2c/33/15b8ec2d31b79c20a9f5e5739a7300abb121026f99990e169a8821b404f4/fastecdsa-1.1.3.tar.gz" } ], "1.2.1": [ { "comment_text": "", "digests": { "md5": "ba0fd48821cd3bcdf8b937b0235ee1e5", "sha256": "58f1255640d256408ff637cc0306bbc8f45fb2816e977deabe0b1798ee4daab6" }, "downloads": -1, "filename": "fastecdsa-1.2.1.tar.gz", "has_sig": true, "md5_digest": "ba0fd48821cd3bcdf8b937b0235ee1e5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15533, "upload_time": "2016-10-27T05:16:19", "url": "https://files.pythonhosted.org/packages/f8/08/ba3c15dc1543f8bf948397161e916c822ded7891f015bb12dfc2b03840ec/fastecdsa-1.2.1.tar.gz" } ], "1.3.1": [ { "comment_text": "", "digests": { "md5": "c54a7df3501c3427b987d16282f7d622", "sha256": "112105a569c42d3c051ab81ddd50a037df83bf6bf9ac67e5e71ea4185c952a86" }, "downloads": -1, "filename": "fastecdsa-1.3.1.tar.gz", "has_sig": true, "md5_digest": "c54a7df3501c3427b987d16282f7d622", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24674, "upload_time": "2017-01-25T08:44:02", "url": "https://files.pythonhosted.org/packages/a9/07/4e4483d5be63023580ee9b7a5f7d3dd86d99cc75138ec653769471dc7113/fastecdsa-1.3.1.tar.gz" } ], "1.3.2": [ { "comment_text": "", "digests": { "md5": "84dfb79a5f1758169b6678be0671fe84", "sha256": "7230ae3787184c5ffcbb4be3879aa5dfe0d74435e9f0506a0940146ca3f88cd6" }, "downloads": -1, "filename": "fastecdsa-1.3.2.tar.gz", "has_sig": true, "md5_digest": "84dfb79a5f1758169b6678be0671fe84", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24853, "upload_time": "2017-01-26T01:56:52", "url": "https://files.pythonhosted.org/packages/6f/71/ec11ac5b3333453da0610201b5bce082f7a0d1c822b170bc6a1c91fa895a/fastecdsa-1.3.2.tar.gz" } ], "1.4.1": [ { "comment_text": "", "digests": { "md5": "f5d3e58bf159c96741d4a955edbb166e", "sha256": "60bebe1e9a7c7ab4a2199c3d2bfd88fd130529efd32778202f1bed56d564ed38" }, "downloads": -1, "filename": "fastecdsa-1.4.1.tar.gz", "has_sig": true, "md5_digest": "f5d3e58bf159c96741d4a955edbb166e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17890, "upload_time": "2017-03-07T01:54:25", "url": "https://files.pythonhosted.org/packages/35/2f/e476d9c4f902df5da29d7011f3f73c8f47cc65332f3773cf7f35afbee98a/fastecdsa-1.4.1.tar.gz" } ], "1.4.2": [ { "comment_text": "", "digests": { "md5": "5bc9e8089cc2b08ac1817392181228c7", "sha256": "8332f94aba32452eb7bcfc544e1a849561c31dc43e0252e31ce7959e0f050182" }, "downloads": -1, "filename": "fastecdsa-1.4.2-cp27-cp27m-macosx_10_12_x86_64.whl", "has_sig": true, "md5_digest": "5bc9e8089cc2b08ac1817392181228c7", "packagetype": "bdist_wheel", "python_version": "cp27", "requires_python": null, "size": 30601, "upload_time": "2017-03-25T17:48:22", "url": "https://files.pythonhosted.org/packages/3b/08/a0042d9feca5e4bccb6bc7af09cbadc820f76892b900a2e0f0ebacf0daf1/fastecdsa-1.4.2-cp27-cp27m-macosx_10_12_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "39892b8ccbf3e416758014a61f5353e4", "sha256": "170e6b6284e00b06dbb763285ab533962086feb5a899cece5267852555131fc8" }, "downloads": -1, "filename": "fastecdsa-1.4.2-cp36-cp36m-macosx_10_12_x86_64.whl", "has_sig": true, "md5_digest": "39892b8ccbf3e416758014a61f5353e4", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": null, "size": 30771, "upload_time": "2017-03-25T17:48:25", "url": "https://files.pythonhosted.org/packages/bb/d8/b20464e7694abd77d6921f7ec42a07a6d993ead295d9cd6fa8e9590566d1/fastecdsa-1.4.2-cp36-cp36m-macosx_10_12_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "c13232a7486346af634d415c225ec78d", "sha256": "44f50d8e7180160fb888b1aa48731d814280b92c36d61bcf93505325497894ce" }, "downloads": -1, "filename": "fastecdsa-1.4.2.tar.gz", "has_sig": true, "md5_digest": "c13232a7486346af634d415c225ec78d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18361, "upload_time": "2017-03-25T17:48:27", "url": "https://files.pythonhosted.org/packages/63/f2/15c6d36ac03a6725c79dcc9638f27f2350dfd210ecd58f3edfea99653a4a/fastecdsa-1.4.2.tar.gz" } ], "1.4.3": [ { "comment_text": "", "digests": { "md5": "614ecd33d1da4ef1772e439be872fbf1", "sha256": "cf087378f8bcb03a82736979ce48d3e32527265ab697a18b0b4158e51ae8925c" }, "downloads": -1, "filename": "fastecdsa-1.4.3-cp27-cp27m-macosx_10_12_x86_64.whl", "has_sig": true, "md5_digest": "614ecd33d1da4ef1772e439be872fbf1", "packagetype": "bdist_wheel", "python_version": "cp27", "requires_python": null, "size": 33369, "upload_time": "2017-09-27T00:14:27", "url": "https://files.pythonhosted.org/packages/e4/20/fcf94a21f778065bc3ca9529e78987017d42b36e7e6bad486508d767d6e5/fastecdsa-1.4.3-cp27-cp27m-macosx_10_12_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "c3b02e469e8d070300e9af94fd37dafb", "sha256": "ce30652cee8ada9547528c299b6c15831d7a08a397408e9424e529c9b78f00c6" }, "downloads": -1, "filename": "fastecdsa-1.4.3-cp36-cp36m-macosx_10_12_x86_64.whl", "has_sig": true, "md5_digest": "c3b02e469e8d070300e9af94fd37dafb", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": null, "size": 33545, "upload_time": "2017-09-27T00:14:28", "url": "https://files.pythonhosted.org/packages/38/9c/6d6873e4c3f163c364ce7750984202e7b06f4cdec9b71d9ef44d7c3d1814/fastecdsa-1.4.3-cp36-cp36m-macosx_10_12_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "6305b268bd43c023fd210400e798d2b9", "sha256": "6692a16b84039b422c452806fb557826d09b2a003c3d8e4239e40fe1d814f4e6" }, "downloads": -1, "filename": "fastecdsa-1.4.3.tar.gz", "has_sig": true, "md5_digest": "6305b268bd43c023fd210400e798d2b9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20911, "upload_time": "2017-09-27T00:14:33", "url": "https://files.pythonhosted.org/packages/a4/df/1e74ac1b9e5307f68695fce18adaaf765ff20e2bae65a2c42bf099c30d0e/fastecdsa-1.4.3.tar.gz" } ], "1.5.1": [ { "comment_text": "", "digests": { "md5": "26fb6bc1571349bc160cec5f58736d8c", "sha256": "c0b7d2cb42b90df8f1db5db0e9f7c69c02134b30fe711863a7428c5bbf9e4ac9" }, "downloads": -1, "filename": "fastecdsa-1.5.1-cp27-none-macosx_10_12_x86_64.whl", "has_sig": true, "md5_digest": "26fb6bc1571349bc160cec5f58736d8c", "packagetype": "bdist_wheel", "python_version": "cp27", "requires_python": null, "size": 33821, "upload_time": "2017-12-15T06:20:19", "url": "https://files.pythonhosted.org/packages/b0/37/b47e937ac4f486bc173be99a8d4e441757a9ef248342937bd4ffb7d3875e/fastecdsa-1.5.1-cp27-none-macosx_10_12_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "be025896bfdcfc0e5fc15d90091338d7", "sha256": "a6bf14ddafc3170bbbaff6b7b73a39b9c7c0c9dce378d5902c68b27ccae89a25" }, "downloads": -1, "filename": "fastecdsa-1.5.1-cp36-cp36m-macosx_10_12_x86_64.whl", "has_sig": true, "md5_digest": "be025896bfdcfc0e5fc15d90091338d7", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": null, "size": 33990, "upload_time": "2017-12-15T06:20:22", "url": "https://files.pythonhosted.org/packages/17/1b/42091101587898d31686324ab57dcd222262cdaaa957fd5bfeb7df5afc78/fastecdsa-1.5.1-cp36-cp36m-macosx_10_12_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "47c9714544c096e95b8749ef13fed748", "sha256": "8847372a60fb8f70f76338f250ff51d54cd0abe31ccce4bd253f51bd8d7fcbc5" }, "downloads": -1, "filename": "fastecdsa-1.5.1.tar.gz", "has_sig": true, "md5_digest": "47c9714544c096e95b8749ef13fed748", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24453, "upload_time": "2017-12-15T06:20:23", "url": "https://files.pythonhosted.org/packages/7d/3a/84002ff38a8e215f1e466dbddeacfffeff094326735a9b92386221b29937/fastecdsa-1.5.1.tar.gz" } ], "1.5.2": [ { "comment_text": "", "digests": { "md5": "376a1f53f2517db48782acf0c6505848", "sha256": "ef678ec1bc16f3178f74b95b32aeb92bcda9eff0485530d17ec4b16eecb583d8" }, "downloads": -1, "filename": "fastecdsa-1.5.2-cp27-none-macosx_10_12_x86_64.whl", "has_sig": true, "md5_digest": "376a1f53f2517db48782acf0c6505848", "packagetype": "bdist_wheel", "python_version": "cp27", "requires_python": null, "size": 34528, "upload_time": "2017-12-22T22:24:56", "url": "https://files.pythonhosted.org/packages/4e/50/bf81b2382ef2cdaf9e2292d4e40398532a8bc322af96a2f6f1f939fa4c24/fastecdsa-1.5.2-cp27-none-macosx_10_12_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "b41e056231b0c95d10971496dfa883e2", "sha256": "4499f2899f1d9a8c7d6bc14b1f1e7c51a65994d0fe5c6f2f7a1b025a22558e59" }, "downloads": -1, "filename": "fastecdsa-1.5.2-cp36-cp36m-macosx_10_12_x86_64.whl", "has_sig": true, "md5_digest": "b41e056231b0c95d10971496dfa883e2", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": null, "size": 34696, "upload_time": "2017-12-22T22:24:58", "url": "https://files.pythonhosted.org/packages/34/70/2154999488cb9c40bd5b096648b462922cc328307f023d51f01834b551c9/fastecdsa-1.5.2-cp36-cp36m-macosx_10_12_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "790bc4f227ec3bfb1644941408d5dd6d", "sha256": "255cb06434988b87ae7a4fc1a641d0edbb5f363015697e6ae0c36728f95cb012" }, "downloads": -1, "filename": "fastecdsa-1.5.2.tar.gz", "has_sig": true, "md5_digest": "790bc4f227ec3bfb1644941408d5dd6d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24970, "upload_time": "2017-12-22T22:24:59", "url": "https://files.pythonhosted.org/packages/d3/e6/4e65c88da32b7b6a1ba18312e6136dc0ff5f75184cd2f1cf9413fdcf0e17/fastecdsa-1.5.2.tar.gz" } ], "1.6.1": [ { "comment_text": "", "digests": { "md5": "ea8a851051d83d477beed8767c3e6466", "sha256": "43f7f763a4e26f2096b44721e3009e05cd5cfd15a24d9d6235a1ae2b176a362d" }, "downloads": -1, "filename": "fastecdsa-1.6.1-cp27-none-macosx_10_12_x86_64.whl", "has_sig": true, "md5_digest": "ea8a851051d83d477beed8767c3e6466", "packagetype": "bdist_wheel", "python_version": "cp27", "requires_python": null, "size": 38776, "upload_time": "2017-12-23T04:26:22", "url": "https://files.pythonhosted.org/packages/68/46/537d2dd2f658aa346e5c97ffe4bce077739e5c050e63ae8facd92e5226b7/fastecdsa-1.6.1-cp27-none-macosx_10_12_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "6f19c06fdcfd45415e6daa94579b0621", "sha256": "807ecd71f3019a906b5658ec4748059637f241a550d3ce3fa44a74732c055150" }, "downloads": -1, "filename": "fastecdsa-1.6.1-cp36-cp36m-macosx_10_12_x86_64.whl", "has_sig": true, "md5_digest": "6f19c06fdcfd45415e6daa94579b0621", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": null, "size": 38942, "upload_time": "2017-12-23T04:26:23", "url": "https://files.pythonhosted.org/packages/68/10/1578fe092ca81e420bf1c4d0fecb95848eb1d5395d9d649b8ad08b5b63db/fastecdsa-1.6.1-cp36-cp36m-macosx_10_12_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "8e0aa55dd99c6f22cb46712088e6f8d6", "sha256": "d645e595cc385241920257f8ea616013ba2817f73e7c74e121a03948860defda" }, "downloads": -1, "filename": "fastecdsa-1.6.1.tar.gz", "has_sig": true, "md5_digest": "8e0aa55dd99c6f22cb46712088e6f8d6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29456, "upload_time": "2017-12-23T04:26:25", "url": "https://files.pythonhosted.org/packages/ce/d5/45125dcf8487841c5027c8914c5c3055ebbd2d84af854ab6917a2a6669b7/fastecdsa-1.6.1.tar.gz" } ], "1.6.2": [ { "comment_text": "", "digests": { "md5": "4e26bf686b99f7829e585707d3847b50", "sha256": "7f0ea310c4a2ec57610aa7a6125b05651ecd8b4228ad6c1b4a4de97539be2e83" }, "downloads": -1, "filename": "fastecdsa-1.6.2-cp27-cp27m-macosx_10_12_x86_64.whl", "has_sig": true, "md5_digest": "4e26bf686b99f7829e585707d3847b50", "packagetype": "bdist_wheel", "python_version": "cp27", "requires_python": null, "size": 42754, "upload_time": "2018-02-25T05:12:29", "url": "https://files.pythonhosted.org/packages/45/b7/8a77653362f95a4917be63dd776b9c109015239253ad40ce54eb2c8efa92/fastecdsa-1.6.2-cp27-cp27m-macosx_10_12_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "37b97ea4d7e80315202ac60b6d48a352", "sha256": "0abd10f965c872ce9799318e5aa11de88bc33f8360aecb726de6e832f905ec87" }, "downloads": -1, "filename": "fastecdsa-1.6.2-cp36-cp36m-macosx_10_12_x86_64.whl", "has_sig": true, "md5_digest": "37b97ea4d7e80315202ac60b6d48a352", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": null, "size": 42921, "upload_time": "2018-02-25T05:12:31", "url": "https://files.pythonhosted.org/packages/eb/e5/1feafe2b70394b4f32821ab5865125a3dd31843d99363fd89a47e13f6378/fastecdsa-1.6.2-cp36-cp36m-macosx_10_12_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "8c4a376524825966f48061819d36a269", "sha256": "6de51bce7cf6220f4ad39ce1a5de712e4a0c48cba2a66e7b4a1785368834277b" }, "downloads": -1, "filename": "fastecdsa-1.6.2.tar.gz", "has_sig": true, "md5_digest": "8c4a376524825966f48061819d36a269", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 33085, "upload_time": "2018-02-25T05:12:33", "url": "https://files.pythonhosted.org/packages/c0/d4/0c143f5674251230ab505829f0a0e61c7f3a9c87f16893559708c62103bd/fastecdsa-1.6.2.tar.gz" } ], "1.6.3": [ { "comment_text": "", "digests": { "md5": "f408662bd33b4a21d6d8d2bdd0ec4ce7", "sha256": "afb44ca6cc40b59b28780c194f90dd9a252ccbea12a6b5e67dcb285ea9df2123" }, "downloads": -1, "filename": "fastecdsa-1.6.3-cp27-cp27m-macosx_10_12_x86_64.whl", "has_sig": true, "md5_digest": "f408662bd33b4a21d6d8d2bdd0ec4ce7", "packagetype": "bdist_wheel", "python_version": "cp27", "requires_python": null, "size": 39424, "upload_time": "2018-03-15T00:30:15", "url": "https://files.pythonhosted.org/packages/e1/92/d730777dc91d6c8aba969e386f0a21a78b36d89b2decc2c393fc6ba9a122/fastecdsa-1.6.3-cp27-cp27m-macosx_10_12_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "fd5071136a74f7e4933f8bbea8914807", "sha256": "7be24e52194df0dc419375c83843533d80baae832574e704d12ec25f60303177" }, "downloads": -1, "filename": "fastecdsa-1.6.3-cp36-cp36m-macosx_10_12_x86_64.whl", "has_sig": true, "md5_digest": "fd5071136a74f7e4933f8bbea8914807", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": null, "size": 39588, "upload_time": "2018-03-15T00:30:18", "url": "https://files.pythonhosted.org/packages/59/18/fce015250d96cfe575d1648a7236f5bce8f79dd1a5aa4722e66db10d7c59/fastecdsa-1.6.3-cp36-cp36m-macosx_10_12_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "627a77e046ba88e46e413b686f747a0b", "sha256": "b02f3e36af4e01ed15f69efa8619dda41e2c46e7e2d338b2e1645c3698d5738a" }, "downloads": -1, "filename": "fastecdsa-1.6.3.tar.gz", "has_sig": true, "md5_digest": "627a77e046ba88e46e413b686f747a0b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 32334, "upload_time": "2018-03-15T00:30:20", "url": "https://files.pythonhosted.org/packages/96/5a/23b126f8d2a877e71823b9298ace2a1615076e25e4d56f4d709ec682d982/fastecdsa-1.6.3.tar.gz" } ], "1.6.4": [ { "comment_text": "", "digests": { "md5": "5cd4c665b430981ffb61dbddffe13b27", "sha256": "c44a2a073a3c6d071ae1bb01ae168c68492d580db9585bd9a34b41647b2a7ffb" }, "downloads": -1, "filename": "fastecdsa-1.6.4-cp27-cp27m-macosx_10_12_x86_64.whl", "has_sig": true, "md5_digest": "5cd4c665b430981ffb61dbddffe13b27", "packagetype": "bdist_wheel", "python_version": "cp27", "requires_python": null, "size": 40647, "upload_time": "2018-04-21T17:42:34", "url": "https://files.pythonhosted.org/packages/8b/3f/0c5f2c94da7fb56ed19d32c9125c28c9d127d086f5617894a1abb74942df/fastecdsa-1.6.4-cp27-cp27m-macosx_10_12_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "c505b5872df801aba86175e52c728693", "sha256": "a2f8912b11700945445c4093e4e0fdb351a2866e7ed4eb3518c6fa52e01c67a0" }, "downloads": -1, "filename": "fastecdsa-1.6.4-cp36-cp36m-macosx_10_12_x86_64.whl", "has_sig": true, "md5_digest": "c505b5872df801aba86175e52c728693", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": null, "size": 40816, "upload_time": "2018-04-21T17:42:36", "url": "https://files.pythonhosted.org/packages/d9/c8/6c7b31253c5c199c11b67a83d9924a79acedac71dc3b5cb4e824db357870/fastecdsa-1.6.4-cp36-cp36m-macosx_10_12_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "7f7dd63bba687bae80fb56e3e3691c28", "sha256": "8a141c1773ba649a91758cfc07aab8d150aebe9bdf1f760e24a91aa42f730e25" }, "downloads": -1, "filename": "fastecdsa-1.6.4.tar.gz", "has_sig": true, "md5_digest": "7f7dd63bba687bae80fb56e3e3691c28", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 33223, "upload_time": "2018-04-21T17:42:38", "url": "https://files.pythonhosted.org/packages/f1/3c/220bd9d7eb4ac7e1dd30ce20b3a2551bb764ec0685a85c5d0f114ca7fea3/fastecdsa-1.6.4.tar.gz" } ], "1.6.5": [ { "comment_text": "", "digests": { "md5": "1ade142943945fde515d532cfaeb9c50", "sha256": "5a50bbad02eaf03f05fdac48ee7a72aae28a45a51c1060130f3d6bd050fb0c63" }, "downloads": -1, "filename": "fastecdsa-1.6.5-cp27-cp27m-macosx_10_13_x86_64.whl", "has_sig": true, "md5_digest": "1ade142943945fde515d532cfaeb9c50", "packagetype": "bdist_wheel", "python_version": "cp27", "requires_python": null, "size": 35532, "upload_time": "2018-10-05T23:59:27", "url": "https://files.pythonhosted.org/packages/e0/de/eb0c2146e8d1e579b372008a58a8ca5f0f56e61e33083e2f3fbc25d195f6/fastecdsa-1.6.5-cp27-cp27m-macosx_10_13_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "9c365a6b618fa3b55d6b589f6463321a", "sha256": "e346cafa1a21e304164c4db9c83d5a7dc4dfb0b4b1ed9a3d21e99a80110dc965" }, "downloads": -1, "filename": "fastecdsa-1.6.5-cp37-cp37m-macosx_10_13_x86_64.whl", "has_sig": true, "md5_digest": "9c365a6b618fa3b55d6b589f6463321a", "packagetype": "bdist_wheel", "python_version": "cp37", "requires_python": null, "size": 35703, "upload_time": "2018-10-05T23:59:30", "url": "https://files.pythonhosted.org/packages/fb/83/1493bf76f706863d23dec81bb4636751c07dd6694cd1352dfa13786112f3/fastecdsa-1.6.5-cp37-cp37m-macosx_10_13_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "992ea3e8297fc9765cac6b755bc167d0", "sha256": "5761dd1d339626288695b7cba21958487a5271e1dfa8a5626f326b1dc478e992" }, "downloads": -1, "filename": "fastecdsa-1.6.5.tar.gz", "has_sig": true, "md5_digest": "992ea3e8297fc9765cac6b755bc167d0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 33441, "upload_time": "2018-10-05T23:59:32", "url": "https://files.pythonhosted.org/packages/f7/98/8c7a2e32cfb972e25ffafc9566293dfc29bf486b7414e5db03939ed38ba8/fastecdsa-1.6.5.tar.gz" } ], "1.7.0": [ { "comment_text": "", "digests": { "md5": "b01596d0ebc9a3c212c87bdcab812803", "sha256": "b91542fd34d6078cb55a0f41e00cdd60dc2faa71eeb09a9b6d49fb899b8fff02" }, "downloads": -1, "filename": "fastecdsa-1.7.0-cp27-cp27m-macosx_10_13_x86_64.whl", "has_sig": true, "md5_digest": "b01596d0ebc9a3c212c87bdcab812803", "packagetype": "bdist_wheel", "python_version": "cp27", "requires_python": null, "size": 41838, "upload_time": "2019-02-15T05:03:04", "url": "https://files.pythonhosted.org/packages/db/77/2941ea809fb8e42c220c732bb7f388d8ff39bc096e5ca3c6a17956bb99e7/fastecdsa-1.7.0-cp27-cp27m-macosx_10_13_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "af0f7acf5f379b0e71af8c18f1da32bf", "sha256": "5fcc5c614484334efbe11d4738f2f892b955a84f3ea9b199d75e269cf4a57fc4" }, "downloads": -1, "filename": "fastecdsa-1.7.0-cp37-cp37m-macosx_10_13_x86_64.whl", "has_sig": true, "md5_digest": "af0f7acf5f379b0e71af8c18f1da32bf", "packagetype": "bdist_wheel", "python_version": "cp37", "requires_python": null, "size": 42012, "upload_time": "2019-02-15T05:03:07", "url": "https://files.pythonhosted.org/packages/0c/a6/b19c848411982bc39cbcc8921744de6072d7049df3b71f6e8563557ca12a/fastecdsa-1.7.0-cp37-cp37m-macosx_10_13_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "610322d7bb3413a04448d0b3aaf1527b", "sha256": "0ef56f0725f3264b07ec19207feb7c3eae63287f979669b9134984130da764ba" }, "downloads": -1, "filename": "fastecdsa-1.7.0.tar.gz", "has_sig": true, "md5_digest": "610322d7bb3413a04448d0b3aaf1527b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 39034, "upload_time": "2019-02-15T05:03:09", "url": "https://files.pythonhosted.org/packages/03/cb/0fa4c15fa4996f465c435f25f5f5308cf0ef89317ecb907485944ea48adb/fastecdsa-1.7.0.tar.gz" } ], "1.7.1": [ { "comment_text": "", "digests": { "md5": "f43adfb2f3c98805f6c5013e1c1ebe20", "sha256": "ca3b70122a95a310020758924f0772527bf4758b830460b87fa948d87ca2205d" }, "downloads": -1, "filename": "fastecdsa-1.7.1-cp27-cp27m-macosx_10_13_x86_64.whl", "has_sig": true, "md5_digest": "f43adfb2f3c98805f6c5013e1c1ebe20", "packagetype": "bdist_wheel", "python_version": "cp27", "requires_python": null, "size": 41843, "upload_time": "2019-02-15T05:04:47", "url": "https://files.pythonhosted.org/packages/5a/b0/7e6ca4570c954cb4de983c5ae6da0e8e04dc42e90e3738036b65b3a1c8e8/fastecdsa-1.7.1-cp27-cp27m-macosx_10_13_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "52b5eb0d2a628d121b60f4b51a52a6b7", "sha256": "018c5aed286ccc81d858593a08fb5600bead4183969f934fec05aaa2249f0c3f" }, "downloads": -1, "filename": "fastecdsa-1.7.1-cp37-cp37m-macosx_10_13_x86_64.whl", "has_sig": true, "md5_digest": "52b5eb0d2a628d121b60f4b51a52a6b7", "packagetype": "bdist_wheel", "python_version": "cp37", "requires_python": null, "size": 42009, "upload_time": "2019-02-15T05:04:49", "url": "https://files.pythonhosted.org/packages/4c/f8/ae7b2a3d9c1ecfc93c61cb4128de9e538472cde1aea19664ebc5747dfaee/fastecdsa-1.7.1-cp37-cp37m-macosx_10_13_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "72469baa341b759f1ba513e742f7d5af", "sha256": "3e493b03050484c4f48ba2a96933908baea49d64a12358e22fd9bff38c483bbd" }, "downloads": -1, "filename": "fastecdsa-1.7.1.tar.gz", "has_sig": true, "md5_digest": "72469baa341b759f1ba513e742f7d5af", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 39038, "upload_time": "2019-02-15T05:04:51", "url": "https://files.pythonhosted.org/packages/7c/fa/ba0ffd1dbf7baf3b796f5379b8cab4313bd8a86e2f4609555002e1a9d46d/fastecdsa-1.7.1.tar.gz" } ], "1.7.2": [ { "comment_text": "", "digests": { "md5": "c05ee05e79c9bc3a7ea4b4fbac3bb36f", "sha256": "655642c9736663219af47fa6f51c16605cf837ba0ed722c9dac8421693f9b63a" }, "downloads": -1, "filename": "fastecdsa-1.7.2-cp27-cp27m-macosx_10_13_x86_64.whl", "has_sig": true, "md5_digest": "c05ee05e79c9bc3a7ea4b4fbac3bb36f", "packagetype": "bdist_wheel", "python_version": "cp27", "requires_python": null, "size": 41897, "upload_time": "2019-04-09T04:01:18", "url": "https://files.pythonhosted.org/packages/59/73/4a5be1a4af0a14f4246dafc3eaa2bef689a80effd5c360bcb2f6049cc6fe/fastecdsa-1.7.2-cp27-cp27m-macosx_10_13_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "7fc3dbaa233956f5437708615eb20c45", "sha256": "c2868771cdda5ac5729a781116e99cd7aed8d59247004dd864dd4e4834f5d048" }, "downloads": -1, "filename": "fastecdsa-1.7.2-cp37-cp37m-macosx_10_13_x86_64.whl", "has_sig": true, "md5_digest": "7fc3dbaa233956f5437708615eb20c45", "packagetype": "bdist_wheel", "python_version": "cp37", "requires_python": null, "size": 42070, "upload_time": "2019-04-09T04:01:21", "url": "https://files.pythonhosted.org/packages/98/8a/f434a716d7cd15249ad66df5f91b92ba6b06f07ef913434c641d2a236a48/fastecdsa-1.7.2-cp37-cp37m-macosx_10_13_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "585b9de97abb67d0a47b2da88513be29", "sha256": "974e18948ccef9947c721b794b4c4044ca122895718e4ea4ed795b20b1ae751b" }, "downloads": -1, "filename": "fastecdsa-1.7.2.tar.gz", "has_sig": true, "md5_digest": "585b9de97abb67d0a47b2da88513be29", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 39098, "upload_time": "2019-04-09T04:01:22", "url": "https://files.pythonhosted.org/packages/e2/4f/28f130d188b907d816da7efb30befabd288e684129e734a4dedfad15ffe8/fastecdsa-1.7.2.tar.gz" } ], "1.7.3": [ { "comment_text": "", "digests": { "md5": "fbb14672724c71c96aea2a22580d1a32", "sha256": "107a2f3b2a46a16d4717513e43659b06e0d7a1f310b3741e21ece2f954ab2692" }, "downloads": -1, "filename": "fastecdsa-1.7.3-cp27-cp27m-macosx_10_13_x86_64.whl", "has_sig": true, "md5_digest": "fbb14672724c71c96aea2a22580d1a32", "packagetype": "bdist_wheel", "python_version": "cp27", "requires_python": null, "size": 42377, "upload_time": "2019-04-30T01:10:51", "url": "https://files.pythonhosted.org/packages/5f/48/58030b863302c44caf90e55a7dd19b26d5368cc51d2fd9400a47a1777284/fastecdsa-1.7.3-cp27-cp27m-macosx_10_13_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "667764c61c0be0bbabe80fd57483e725", "sha256": "23797102ae86095bd000afad63b0d84066ac0132326b5c30a982136a423f5965" }, "downloads": -1, "filename": "fastecdsa-1.7.3-cp37-cp37m-macosx_10_13_x86_64.whl", "has_sig": true, "md5_digest": "667764c61c0be0bbabe80fd57483e725", "packagetype": "bdist_wheel", "python_version": "cp37", "requires_python": null, "size": 42548, "upload_time": "2019-04-30T01:10:55", "url": "https://files.pythonhosted.org/packages/ff/f6/c07247de07c6613006af902597634f3c347a2c09517cde9de8e251113336/fastecdsa-1.7.3-cp37-cp37m-macosx_10_13_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "8e91cd0e72392560ddcef4c476852cad", "sha256": "0d39a530c6e66948965e25f3b9279c224178d0b5f9807b09f65971a3b202cefd" }, "downloads": -1, "filename": "fastecdsa-1.7.3.tar.gz", "has_sig": true, "md5_digest": "8e91cd0e72392560ddcef4c476852cad", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 39566, "upload_time": "2019-04-30T01:10:59", "url": "https://files.pythonhosted.org/packages/46/49/6f8e914c42cd7212b556edc475f9827a092d275c1fae0121111e53792730/fastecdsa-1.7.3.tar.gz" } ], "1.7.4": [ { "comment_text": "", "digests": { "md5": "8b1c30f11d198311cca74121716030a5", "sha256": "9d253175f74a96b7aa9c4ce266f96d1c663ca9f12a7e997c9cbe9dc58ea06f0e" }, "downloads": -1, "filename": "fastecdsa-1.7.4-cp27-cp27m-macosx_10_13_x86_64.whl", "has_sig": true, "md5_digest": "8b1c30f11d198311cca74121716030a5", "packagetype": "bdist_wheel", "python_version": "cp27", "requires_python": null, "size": 55302, "upload_time": "2019-07-28T19:35:31", "url": "https://files.pythonhosted.org/packages/8c/08/c0098d21a0b3299c5a36664fe142b1c791bd7c4aedaf19521e37bbb0536a/fastecdsa-1.7.4-cp27-cp27m-macosx_10_13_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "36d2a1fbd0dc76b1a1d0893969247b5d", "sha256": "12e952e2a70e2a896083f4cf304b4653f108ead4aac9c63ac8333343182fceac" }, "downloads": -1, "filename": "fastecdsa-1.7.4-cp37-cp37m-macosx_10_13_x86_64.whl", "has_sig": true, "md5_digest": "36d2a1fbd0dc76b1a1d0893969247b5d", "packagetype": "bdist_wheel", "python_version": "cp37", "requires_python": null, "size": 55473, "upload_time": "2019-07-28T19:35:33", "url": "https://files.pythonhosted.org/packages/8a/af/5b1d962fc86e83632ff75ed762c696ee5b1a220e0624a045b3c3f3d6aa2c/fastecdsa-1.7.4-cp37-cp37m-macosx_10_13_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "97ff234655d3c8a4ccbab6e012983c69", "sha256": "b40816ebc663d88b312c503533432bfa6bf7dc50133682d02ecc4ac158d79d5c" }, "downloads": -1, "filename": "fastecdsa-1.7.4.tar.gz", "has_sig": true, "md5_digest": "97ff234655d3c8a4ccbab6e012983c69", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 40123, "upload_time": "2019-07-28T19:35:35", "url": "https://files.pythonhosted.org/packages/41/b7/292c58a399df59a0c9f52878b73ca51b292d3b963f500f7c85414759b4f2/fastecdsa-1.7.4.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "8b1c30f11d198311cca74121716030a5", "sha256": "9d253175f74a96b7aa9c4ce266f96d1c663ca9f12a7e997c9cbe9dc58ea06f0e" }, "downloads": -1, "filename": "fastecdsa-1.7.4-cp27-cp27m-macosx_10_13_x86_64.whl", "has_sig": true, "md5_digest": "8b1c30f11d198311cca74121716030a5", "packagetype": "bdist_wheel", "python_version": "cp27", "requires_python": null, "size": 55302, "upload_time": "2019-07-28T19:35:31", "url": "https://files.pythonhosted.org/packages/8c/08/c0098d21a0b3299c5a36664fe142b1c791bd7c4aedaf19521e37bbb0536a/fastecdsa-1.7.4-cp27-cp27m-macosx_10_13_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "36d2a1fbd0dc76b1a1d0893969247b5d", "sha256": "12e952e2a70e2a896083f4cf304b4653f108ead4aac9c63ac8333343182fceac" }, "downloads": -1, "filename": "fastecdsa-1.7.4-cp37-cp37m-macosx_10_13_x86_64.whl", "has_sig": true, "md5_digest": "36d2a1fbd0dc76b1a1d0893969247b5d", "packagetype": "bdist_wheel", "python_version": "cp37", "requires_python": null, "size": 55473, "upload_time": "2019-07-28T19:35:33", "url": "https://files.pythonhosted.org/packages/8a/af/5b1d962fc86e83632ff75ed762c696ee5b1a220e0624a045b3c3f3d6aa2c/fastecdsa-1.7.4-cp37-cp37m-macosx_10_13_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "97ff234655d3c8a4ccbab6e012983c69", "sha256": "b40816ebc663d88b312c503533432bfa6bf7dc50133682d02ecc4ac158d79d5c" }, "downloads": -1, "filename": "fastecdsa-1.7.4.tar.gz", "has_sig": true, "md5_digest": "97ff234655d3c8a4ccbab6e012983c69", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 40123, "upload_time": "2019-07-28T19:35:35", "url": "https://files.pythonhosted.org/packages/41/b7/292c58a399df59a0c9f52878b73ca51b292d3b963f500f7c85414759b4f2/fastecdsa-1.7.4.tar.gz" } ] }