{ "info": { "author": "Daniel Holth", "author_email": "dholth@fastmail.fm", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "Programming Language :: Python", "Topic :: Security :: Cryptography" ], "description": "About Ed25519\n=============\n\nEd25519 is a public-key signature system with several attractive features \nincluding:\n\n* Fast single-signature verification.\n* Very fast signing.\n* Fast key generation.\n* High security level.\n* Small signatures. Signatures fit into 64 bytes.\n* Small keys. Public keys consume only 32 bytes. \n\nThis text abridged from http://ed25519.cr.yp.to/.\n\nAbout ed25519ll\n===============\n\ned25519ll is a low-level wrapper for the Ed25519 public key signature\nsystem. It uses Extension() to compile a shared library that is not a\nPython extension module, and then uses ctypes to talk to the library. With\nluck it will only be necessary to compile ed25519ll once for each\nplatform, reusing its shared library across Python versions.\n\nThis wrapper currently exposes the supercop-ref10 implementation of\nEd25519, on my 2.6GHz Athlon achieving about 7200 signatures/second/core\nand 2900 verifications/second/core including the wrapper overhead.\n\nThis wrapper also contains a reasonably performat pure-Python\nfallback. Unlike the reference implementation, the Python implementation\ndoes not contain protection against timing attacks.\n\nExample::\n \n import ed25519ll\n msg = b\"The rain in Spain stays mainly on the plain\"\n kp = ed25519ll.crypto_sign_keypair()\n signed = ed25519ll.crypto_sign(msg, kp.sk) \n verified = ed25519ll.crypto_sign_open(signed, kp.vk)\n assert verified == msg # but ValueError is raised for bad signatures \n\nAPI\n===\n\ned25519ll exposes the supercop-ref10 API rather directly. All messages and keys\nare binary strings (bytes() or Python 2 str()). Signed messages consist of the\n64 signature bytes concatenated with the message.\n\n``Keypair()`` is a named tuple ``(vk, sk)`` of the verifying key (32 bytes) and\nthe signing key (64 bytes). The second half of the signing key is a copy of the\nverifying key.\n\n``crypto_sign_keypair()`` returns a new ``Keypair()``. ``os.urandom()`` is used\nas the random seed. This operation is about as fast as signing.\n\n``crypto_sign(msg, sk)`` takes a message (any binary string) and a 64-byte \nsigning key (from crypto_sign_keypair()) and returns a signed message.\n\n``crypto_sign_open(signed, vk)`` takes a signed message (64 byte signature + \nmessage) and the corresponding 32-byte verifying key and returns a copy of the\nmessage without the attached signature. ``ValueError`` is raised for invalid\nsignatures.\n\n\n0.6\n===\n- Include pure-Python fallback implementation\n\n0.5\n===\n- Switch to ctypes to avoid parser overhead for such a trivial library\n\n0.4\n===\n- Switch away from ffi.verify() again\n\n0.3\n===\n- Switch to supercop-ref10\n- Switch to ffi.verify()\n- Update to work with cffi 0.3\n- Update to work with Python 3.3 \n\n0.2\n===\n- 100% test coverage\n- Basic documentation\n\n0.1\n===\n\n- Initial release", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://bitbucket.org/dholth/ed25519ll/", "keywords": "ed25519", "license": "MIT", "maintainer": null, "maintainer_email": null, "name": "ed25519ll", "package_url": "https://pypi.org/project/ed25519ll/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/ed25519ll/", "project_urls": { "Download": "UNKNOWN", "Homepage": "http://bitbucket.org/dholth/ed25519ll/" }, "release_url": "https://pypi.org/project/ed25519ll/0.6/", "requires_dist": null, "requires_python": null, "summary": "A low-level ctypes wrapper for Ed25519 digital signatures.", "version": "0.6" }, "last_serial": 791549, "releases": { "0.2": [ { "comment_text": "", "digests": { "md5": "bd9d1632bfc9d725eb7bda77e20f3ba2", "sha256": "e1b041a077b8cc1fe9034e873ca0754a4fcb77ac33551ef4da06eee38bf538e2" }, "downloads": -1, "filename": "ed25519ll-0.2.tar.gz", "has_sig": false, "md5_digest": "bd9d1632bfc9d725eb7bda77e20f3ba2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 51515, "upload_time": "2012-07-18T06:08:54", "url": "https://files.pythonhosted.org/packages/f3/ef/1099f1e3133207939d5229fd9ea3705039b5de038636b7a8346eaefb619a/ed25519ll-0.2.tar.gz" } ], "0.3": [ { "comment_text": "", "digests": { "md5": "44b8ce569152c602aeb3a3e81aee3323", "sha256": "d8961a35fe81992522ee01052699b69b7c54a82d125c297c827458331e2382fe" }, "downloads": -1, "filename": "ed25519ll-0.3.tar.gz", "has_sig": false, "md5_digest": "44b8ce569152c602aeb3a3e81aee3323", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 70940, "upload_time": "2012-08-14T05:39:34", "url": "https://files.pythonhosted.org/packages/37/30/9b1dc0a6af5767e9b367c8c2009149d2830b0fb609d1eddd624f94948a4e/ed25519ll-0.3.tar.gz" } ], "0.4": [ { "comment_text": "Signed with ed25519=tmAYCrSfj8gtJ10v3VkvW7jOndKmQIYE12hgnFu3cvk", "digests": { "md5": "479b0bdde1e84e54ac42923368a36320", "sha256": "6c8dec99fa5c95576e5f9b80be6e62f41f2798a924cb96638b4ddd7c5541cd1a" }, "downloads": -1, "filename": "ed25519ll-0.4-cp27-none-linux_x86_64.whl", "has_sig": false, "md5_digest": "479b0bdde1e84e54ac42923368a36320", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 102171, "upload_time": "2012-08-26T05:07:35", "url": "https://files.pythonhosted.org/packages/b9/e5/1426102832e0f460a7443fa5132d317aa62a29c8930bdb4eff3aa8cc93fe/ed25519ll-0.4-cp27-none-linux_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "bce4c591d9c9f2f977cb049461c4e857", "sha256": "0f4c994f20880e74f338a63e93e9af59c7f1ee1177eb31958fcedf66de24273a" }, "downloads": -1, "filename": "ed25519ll-0.4.tar.gz", "has_sig": false, "md5_digest": "bce4c591d9c9f2f977cb049461c4e857", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 71116, "upload_time": "2012-08-26T05:06:12", "url": "https://files.pythonhosted.org/packages/3f/6b/a8eeec3cd80f1d6fa043084cdc5a19666cdf9e8fd4ef7da12c7af31d320f/ed25519ll-0.4.tar.gz" } ], "0.5": [ { "comment_text": "", "digests": { "md5": "91718574bba8687d9710393de0d9a10d", "sha256": "e793a9a5d46b25105f90bf0dc9baa34470c11bc41552e08c40cee78a3d7c7961" }, "downloads": -1, "filename": "ed25519ll-0.5.tar.gz", "has_sig": false, "md5_digest": "91718574bba8687d9710393de0d9a10d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 70982, "upload_time": "2012-08-29T23:30:43", "url": "https://files.pythonhosted.org/packages/87/c1/f0dc94505541f171ff02b38a9f440aa394822ab13eb3b56d42b691d18d4c/ed25519ll-0.5.tar.gz" } ], "0.6": [ { "comment_text": "", "digests": { "md5": "35b3190ffefb631e7c5a45d96d768f80", "sha256": "7b75b7e6f4c7e7c172229aa78b13436ca9834ef5893598b49c7163d7ba55adf9" }, "downloads": -1, "filename": "ed25519ll-0.6.tar.gz", "has_sig": false, "md5_digest": "35b3190ffefb631e7c5a45d96d768f80", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 74782, "upload_time": "2012-09-05T23:09:47", "url": "https://files.pythonhosted.org/packages/8a/34/b27ee501205893cf7cc537b4e6553a557eaaca14c4755aa1eaa500afac57/ed25519ll-0.6.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "35b3190ffefb631e7c5a45d96d768f80", "sha256": "7b75b7e6f4c7e7c172229aa78b13436ca9834ef5893598b49c7163d7ba55adf9" }, "downloads": -1, "filename": "ed25519ll-0.6.tar.gz", "has_sig": false, "md5_digest": "35b3190ffefb631e7c5a45d96d768f80", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 74782, "upload_time": "2012-09-05T23:09:47", "url": "https://files.pythonhosted.org/packages/8a/34/b27ee501205893cf7cc537b4e6553a557eaaca14c4755aa1eaa500afac57/ed25519ll-0.6.tar.gz" } ] }