{ "info": { "author": "", "author_email": "", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: GNU General Public License v3 (GPLv3)", "Programming Language :: Python :: 3", "Programming Language :: Rust" ], "description": "[![Build Status](https://travis-ci.com/KZen-networks/multi-party-schnorr.svg?branch=master)](https://travis-ci.com/KZen-networks/multi-party-schnorr)\n[![License: GPL v3](https://img.shields.io/badge/License-GPL%20v3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0)\n\nMulti Party Schnorr Signatures (python extension)\n=====================================\n* Aggregated Signatures: {n,n} scheme based on [simple_schnorr_multi_signatures_with_applications_to_bitcoin](https://github.com/KZen-networks/multi-party-schnorr/blob/master/papers/simple_schnorr_multi_signatures_with_applications_to_bitcoin.pdf) and the scheme for discrete-logs (section 5) from [compact_multi_signatures_for_smaller_blockchains](https://github.com/KZen-networks/multi-party-schnorr/blob/master/papers/compact_multi_signatures_for_smaller_blockchains.pdf) \n* not implement ~~Multi-signature scheme based on Micali-Ohta-Reyzin: [Accountable-Subgroup Multisignatures](https://github.com/KZen-networks/multi-party-schnorr/blob/master/papers/accountable_subgroups_multisignatures.pdf). This code is being used currently for [2p-Schnorr key management](https://github.com/KZen-networks/kms-secp256k1 ).~~\n* Threshold Schnorr scheme based on [provably secure distributed schnorr signatures and a {t,n} threshold scheme](https://github.com/KZen-networks/multi-party-schnorr/blob/master/papers/provably_secure_distributed_schnorr_signatures_and_a_threshold_scheme.pdf). For more efficient implementation we used the DKG from [Fast Multiparty Threshold ECDSA with Fast Trustless Setup](http://stevengoldfeder.com/papers/GG18.pdf). The cost is robustness: if there is a malicious party out of the n parties in DKG the protocol stops and if there is a malicious party out of the t parties used for signing the signature protocol will stop.\n* The implementations aim to be [_bip-schnorr_](https://github.com/sipa/bips/blob/bip-schnorr/bip-schnorr.mediawiki) compliant.\n\n* [Paper List](https://github.com/KZen-networks/multi-party-schnorr/tree/master/papers), [Wiki](https://github.com/KZen-networks/multisig-schnorr/wiki).\n\n**Disclaimers**: \n\n(1) This code should not be used for production at the moment.\n\n(2) This code is not secure against side-channel attacks\n\n(3) The code do not contain a network layer (if you are interested, check [white-city](https://github.com/KZen-networks/white-city) for ongoing effort, contribtutions are welcome)\n\n\nGet Started\n=====================================\n\n[schnorr_bip_test_vector_2](https://github.com/KZen-networks/multi-party-schnorr/blob/master/src/protocols/aggsig/test.rs#L137)\n\n[schnorr_two_party_signing](https://github.com/KZen-networks/multi-party-schnorr/blob/master/src/protocols/aggsig/test.rs#L26)\n\n[threshold 3 out of 5 with 4 parties in signing](https://github.com/KZen-networks/multi-party-schnorr/blob/master/src/protocols/thresholdsig/test.rs#L61)\n\nInstall\n----\nPlease use python3.5 or more \nInstall by pip `pip3 install --user multi-party-schnorr` \nHow to use? please look at examples `*.py` \nCannot use on windows? please read a [issue/39](https://github.com/KZen-networks/curv/issues/39) \n\ncompressed key prefix\n----\n* `0x02, 0x03, 0x04` => for 1 of 1 single signature\n* `0x05, 0x06, 0x07` => for n of n aggregate signature\n* `0x08, 0x09, 0x0a` => for t of n threshold signature\n\nperformance\n----\ntype | secp256k1(~0.1.7) | libsecp256k1-rs(0.1.8) | emerald-city(0.1.9~) | test code link |\n------------------|-----------|----|--------|-------|\n1 of 1 aggregate | 112ms | 3ms | 1ms | [aggregate_1_of_1.py](https://github.com/namuyan/multi-party-schnorr/blob/master/aggregate_1_of_1.py) |\nn of n aggregate | 458ms | 7ms | 3ms | [aggregate_n_of_n.py](https://github.com/namuyan/multi-party-schnorr/blob/master/aggregate_n_of_n.py) |\nt of n threshold | 2475ms | 68ms | 33ms | [thresholdbig_t_of_n.py](https://github.com/namuyan/multi-party-schnorr/blob/master/thresholdbig_t_of_n.py) |\n\nDevelopment Process\n-------------------\nThis contribution workflow is described in [CONTRIBUTING.md](CONTRIBUTING.md).\n\nContact\n-------------------\nFeel free to [reach out](mailto:github@kzencorp.com) or join the KZen Research [Telegram]( https://t.me/kzen_research) for discussions on code and research.\n\nLicense\n-------\nThe library is released under the terms of the GPL-3.0 license. See [LICENSE](LICENSE) for more information.\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/namuyan/multi-party-schnorr", "keywords": "", "license": "GPL-3", "maintainer": "", "maintainer_email": "", "name": "multi-party-schnorr", "package_url": "https://pypi.org/project/multi-party-schnorr/", "platform": "", "project_url": "https://pypi.org/project/multi-party-schnorr/", "project_urls": { "Homepage": "https://github.com/namuyan/multi-party-schnorr" }, "release_url": "https://pypi.org/project/multi-party-schnorr/0.1.9/", "requires_dist": null, "requires_python": ">=3.5", "summary": "", "version": "0.1.9" }, "last_serial": 5494821, "releases": { "0.1.1": [ { "comment_text": "", "digests": { "md5": "1137369cd23edcf27c4b487c809c0ff1", "sha256": "534909a359d7bddf7d512d081e9b47a5bfb1bf7d6c662efc8452d1d8b6752046" }, "downloads": -1, "filename": "multi_party_schnorr-0.1.1-cp35-cp35m-win_amd64.whl", "has_sig": false, "md5_digest": "1137369cd23edcf27c4b487c809c0ff1", "packagetype": "bdist_wheel", "python_version": "cp35", "requires_python": ">=3.5", "size": 435682, "upload_time": "2019-04-05T09:13:12", "url": "https://files.pythonhosted.org/packages/7f/b8/4d62a06fc4d6d4c610eb35c321661bcb12146f045ea9327b50aa4e244c79/multi_party_schnorr-0.1.1-cp35-cp35m-win_amd64.whl" }, { "comment_text": "", "digests": { "md5": "25d3962ef44484c89524c6ba03a47593", "sha256": "d54011665e58f89a352955182f7e968d435ef335b238c4be6022463571b9e236" }, "downloads": -1, "filename": "multi_party_schnorr-0.1.1-cp36-cp36m-win_amd64.whl", "has_sig": false, "md5_digest": "25d3962ef44484c89524c6ba03a47593", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": ">=3.5", "size": 435703, "upload_time": "2019-04-05T03:35:57", "url": "https://files.pythonhosted.org/packages/05/6b/191cd7eb64cb5d108062fea72133659e83337c72ee45e820c8dbbf3bf027/multi_party_schnorr-0.1.1-cp36-cp36m-win_amd64.whl" }, { "comment_text": "", "digests": { "md5": "b5f5b52c01d53c904661141b2090f4ab", "sha256": "afa60f85952a2224aff7dd48002742de0f38d8f110acfeab22f12ca82049a69c" }, "downloads": -1, "filename": "multi_party_schnorr-0.1.1-cp37-cp37m-win_amd64.whl", "has_sig": false, "md5_digest": "b5f5b52c01d53c904661141b2090f4ab", "packagetype": "bdist_wheel", "python_version": "cp37", "requires_python": ">=3.5", "size": 435684, "upload_time": "2019-04-05T09:16:01", "url": "https://files.pythonhosted.org/packages/67/44/4530590c149c5df06c41ad57e4458cd5a2f164043521906ad8ab2f420cef/multi_party_schnorr-0.1.1-cp37-cp37m-win_amd64.whl" }, { "comment_text": "", "digests": { "md5": "f8ab680a7c5f57c51499928e6a4b78df", "sha256": "c7bcd77f979f4a0a54328a29815719b18b497d6bd9738dfc3a0a0674b185eadf" }, "downloads": -1, "filename": "multi-party-schnorr-0.1.1.tar.gz", "has_sig": false, "md5_digest": "f8ab680a7c5f57c51499928e6a4b78df", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 17757, "upload_time": "2019-04-05T03:35:59", "url": "https://files.pythonhosted.org/packages/4e/1c/439275d2775b04e24dddeb7d5eed71ac1e7b163c05a5953df4188ee2a0c6/multi-party-schnorr-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "f4d8cfac1e9a7af773606e78e6ff92c0", "sha256": "11029193302a513d003af8dde1d8d20cdfa1725711b16962b2b1350e06a3cb45" }, "downloads": -1, "filename": "multi_party_schnorr-0.1.2-cp36-cp36m-win_amd64.whl", "has_sig": false, "md5_digest": "f4d8cfac1e9a7af773606e78e6ff92c0", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": ">=3.5", "size": 437273, "upload_time": "2019-04-06T03:03:42", "url": "https://files.pythonhosted.org/packages/af/1c/3841e6c821a18be963c91b1e01b50733b02fe4366d25d3b52812dd32d896/multi_party_schnorr-0.1.2-cp36-cp36m-win_amd64.whl" }, { "comment_text": "", "digests": { "md5": "105f21c02dfaf5e3f11dde1e99de4ac7", "sha256": "2209e10bf242894a7ae190addf4c5e1498819d6e76bd645c9e63fc7ba96aff19" }, "downloads": -1, "filename": "multi-party-schnorr-0.1.2.tar.gz", "has_sig": false, "md5_digest": "105f21c02dfaf5e3f11dde1e99de4ac7", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 17946, "upload_time": "2019-04-06T03:03:44", "url": "https://files.pythonhosted.org/packages/47/43/b05d3509f5499e66c91372a64a7fc7f06879d9707830ad7be53e3171d776/multi-party-schnorr-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "c9a7bed9f4e864d26d6b9b1290938e1d", "sha256": "bb4eaafef038f76b4ab40df05264656ca43ee947768ca84a03deddcef301ad06" }, "downloads": -1, "filename": "multi_party_schnorr-0.1.3-cp35-cp35m-win_amd64.whl", "has_sig": false, "md5_digest": "c9a7bed9f4e864d26d6b9b1290938e1d", "packagetype": "bdist_wheel", "python_version": "cp35", "requires_python": ">=3.5", "size": 493071, "upload_time": "2019-04-09T00:07:48", "url": "https://files.pythonhosted.org/packages/c8/e8/76ede3e51ae948409d669c539b2310f514ef3594461e88536c4bd609b23a/multi_party_schnorr-0.1.3-cp35-cp35m-win_amd64.whl" }, { "comment_text": "", "digests": { "md5": "6a3131912d479243463cdba9690518e5", "sha256": "939845e2b650151654eafd78a6bb6b8a1f7020cb3268cca438c2a0a99fe09d5b" }, "downloads": -1, "filename": "multi_party_schnorr-0.1.3-cp36-cp36m-win_amd64.whl", "has_sig": false, "md5_digest": "6a3131912d479243463cdba9690518e5", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": ">=3.5", "size": 493177, "upload_time": "2019-04-08T16:43:32", "url": "https://files.pythonhosted.org/packages/31/bc/e7c787f04f5c666ecfd8b08212739c8db14548a490c4ea30c3a4a7ab4427/multi_party_schnorr-0.1.3-cp36-cp36m-win_amd64.whl" }, { "comment_text": "", "digests": { "md5": "9e5a343c7461ad3df752d4c0e5825c8a", "sha256": "732ed61a3730654efe8586da99b6517022c02b314b0940389d0e6adc2b68116a" }, "downloads": -1, "filename": "multi_party_schnorr-0.1.3-cp37-cp37m-win_amd64.whl", "has_sig": false, "md5_digest": "9e5a343c7461ad3df752d4c0e5825c8a", "packagetype": "bdist_wheel", "python_version": "cp37", "requires_python": ">=3.5", "size": 493070, "upload_time": "2019-04-09T00:08:32", "url": "https://files.pythonhosted.org/packages/f9/dd/cfbea4bda67155a23d622b77e0b056c77b09a26b150fe2343c56ce53672e/multi_party_schnorr-0.1.3-cp37-cp37m-win_amd64.whl" }, { "comment_text": "", "digests": { "md5": "74f54ae986a84a4e6d201245cda4c38a", "sha256": "6a25c747e596cd6e017eb4644ed0cc4785b963d8620f49bdd54454eeee57d925" }, "downloads": -1, "filename": "multi-party-schnorr-0.1.3.tar.gz", "has_sig": false, "md5_digest": "74f54ae986a84a4e6d201245cda4c38a", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 19134, "upload_time": "2019-04-08T16:40:29", "url": "https://files.pythonhosted.org/packages/a1/43/7d95297f12ed53fd28624d1c1826e9c6148543311c0ad8d649ce0466fbcd/multi-party-schnorr-0.1.3.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "291d93b9a0cf5931aa887dca28245891", "sha256": "58f9d14fbdbfde56bd088b7965c9c95fecfaf81d0628cb4af28fb3dd5e931a2a" }, "downloads": -1, "filename": "multi_party_schnorr-0.1.4-cp36-cp36m-win_amd64.whl", "has_sig": false, "md5_digest": "291d93b9a0cf5931aa887dca28245891", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": ">=3.5", "size": 493219, "upload_time": "2019-04-27T05:45:25", "url": "https://files.pythonhosted.org/packages/e4/31/26b2982ce00ac1fa366b3e2fb97f0dc302feedfbb8fa5ccc32be70939240/multi_party_schnorr-0.1.4-cp36-cp36m-win_amd64.whl" }, { "comment_text": "", "digests": { "md5": "4bbe586134a67cc35a575cb5e1f1d1b8", "sha256": "97d160bae3bec8dd0b53d59a6781ad0e63a63bb538c873f06c47171a09310fc7" }, "downloads": -1, "filename": "multi-party-schnorr-0.1.4.tar.gz", "has_sig": false, "md5_digest": "4bbe586134a67cc35a575cb5e1f1d1b8", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 19602, "upload_time": "2019-04-27T05:45:28", "url": "https://files.pythonhosted.org/packages/9e/8d/3982174e654cac700e82fcf8cdbd25cb8623373abc61546fdf115fa72207/multi-party-schnorr-0.1.4.tar.gz" } ], "0.1.5": [ { "comment_text": "", "digests": { "md5": "834564919f3cd94d81fbc1906bdcc114", "sha256": "5a1d0fe5b7abaf145b3d4521ae6ff679fcb7a946a2a769b105d6bc02c5a5c0a0" }, "downloads": -1, "filename": "multi_party_schnorr-0.1.5-cp36-cp36m-win_amd64.whl", "has_sig": false, "md5_digest": "834564919f3cd94d81fbc1906bdcc114", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": ">=3.5", "size": 492529, "upload_time": "2019-04-29T14:55:43", "url": "https://files.pythonhosted.org/packages/68/00/7d09cf80c461330b55243d7c50c62820067f3091c51e851c812e76a81ee5/multi_party_schnorr-0.1.5-cp36-cp36m-win_amd64.whl" }, { "comment_text": "", "digests": { "md5": "1b23724e879b9f76561326e80c0bd3c1", "sha256": "42bd80e4459d24a03ce925644a52837d73583c5b2c7d19184eb56898ffd67410" }, "downloads": -1, "filename": "multi-party-schnorr-0.1.5.tar.gz", "has_sig": false, "md5_digest": "1b23724e879b9f76561326e80c0bd3c1", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 19718, "upload_time": "2019-04-29T14:55:49", "url": "https://files.pythonhosted.org/packages/04/f6/76db9ae6bce9d5870d8809d22783ea0f7b54f87da1a0e3e1647b63a9be1a/multi-party-schnorr-0.1.5.tar.gz" } ], "0.1.6": [ { "comment_text": "", "digests": { "md5": "e79efc502ce8bf54733b3d4b0e13269b", "sha256": "c38fd5156f9581214cab06539c9bbcced1e6b360cad890c4ad0d4d247aaa0805" }, "downloads": -1, "filename": "multi_party_schnorr-0.1.6-cp36-cp36m-win_amd64.whl", "has_sig": false, "md5_digest": "e79efc502ce8bf54733b3d4b0e13269b", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": ">=3.5", "size": 509946, "upload_time": "2019-05-06T04:43:58", "url": "https://files.pythonhosted.org/packages/c6/57/6d2a7e2d883bef3a8b76615b5ca8beea228289461a2c564ab711e24aefc7/multi_party_schnorr-0.1.6-cp36-cp36m-win_amd64.whl" }, { "comment_text": "", "digests": { "md5": "d52d22194046f902d346a16bd7711f8d", "sha256": "9c70de6a37252309a985718e56bf56cd9e76df60fe5c18a0dd7f58d41d35cb2e" }, "downloads": -1, "filename": "multi-party-schnorr-0.1.6.tar.gz", "has_sig": false, "md5_digest": "d52d22194046f902d346a16bd7711f8d", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 20405, "upload_time": "2019-05-06T04:43:59", "url": "https://files.pythonhosted.org/packages/f5/81/6558a85e42df6031d2b61273f41395727db67b741b6299a026c5290e7295/multi-party-schnorr-0.1.6.tar.gz" } ], "0.1.7": [ { "comment_text": "", "digests": { "md5": "511d3638dbfec70613b9b8f224997df5", "sha256": "f10e999e38f2559b8024fa78f9e38423efccba845826a0357a72f19e52a493c0" }, "downloads": -1, "filename": "multi_party_schnorr-0.1.7-cp36-cp36m-win_amd64.whl", "has_sig": false, "md5_digest": "511d3638dbfec70613b9b8f224997df5", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": ">=3.5", "size": 513174, "upload_time": "2019-06-22T11:50:08", "url": "https://files.pythonhosted.org/packages/e2/bf/54441419055da4c995262602b44273321bd6b65f208403645d9b7e03484e/multi_party_schnorr-0.1.7-cp36-cp36m-win_amd64.whl" }, { "comment_text": "", "digests": { "md5": "9bd99d470530448f2a396551a2db9c73", "sha256": "ee6fa79e9cd9fa71215eda45a1dd63b9e907da643fa88c1d2b1f58845bc9e5aa" }, "downloads": -1, "filename": "multi-party-schnorr-0.1.7.tar.gz", "has_sig": false, "md5_digest": "9bd99d470530448f2a396551a2db9c73", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 21760, "upload_time": "2019-06-22T11:50:09", "url": "https://files.pythonhosted.org/packages/f2/09/12b92e78dd2fe9e51fa5bfe2b78b9e8276c7a37670478ce641d3e9e941ad/multi-party-schnorr-0.1.7.tar.gz" } ], "0.1.8": [ { "comment_text": "", "digests": { "md5": "05e02c1e81f1dd78cab1fa42fd3dafc4", "sha256": "1da30a3fda7a42aecdf327b22cd48f3c73961bf12343381196747176e2fbc7d4" }, "downloads": -1, "filename": "multi_party_schnorr-0.1.8-cp36-cp36m-win_amd64.whl", "has_sig": false, "md5_digest": "05e02c1e81f1dd78cab1fa42fd3dafc4", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": ">=3.5", "size": 1542525, "upload_time": "2019-07-03T01:53:26", "url": "https://files.pythonhosted.org/packages/1d/51/cb956e6db3c9c927fd0f987784d8a7fbfadcd3d9f7cc3f699c68a07ed937/multi_party_schnorr-0.1.8-cp36-cp36m-win_amd64.whl" }, { "comment_text": "", "digests": { "md5": "3e8949d8c2a149b35af229af4ca80b90", "sha256": "00b1cfa5d6951d0ba38fe45e3af0898b3d8fad2030ebc9f53a7212ec17f9a4f1" }, "downloads": -1, "filename": "multi-party-schnorr-0.1.8.tar.gz", "has_sig": false, "md5_digest": "3e8949d8c2a149b35af229af4ca80b90", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 12410, "upload_time": "2019-07-03T01:53:28", "url": "https://files.pythonhosted.org/packages/2b/96/dba8af40f66fee57d002a2b78b6686bc28fbb136ffc3261b62d168ab657d/multi-party-schnorr-0.1.8.tar.gz" } ], "0.1.9": [ { "comment_text": "", "digests": { "md5": "23e49561a3d80c92573d67d9a8c9dcd5", "sha256": "18954062131083c7cc2618bcc4a554d54b17291da25850a864df1dd098bfa270" }, "downloads": -1, "filename": "multi_party_schnorr-0.1.9-cp36-cp36m-win_amd64.whl", "has_sig": false, "md5_digest": "23e49561a3d80c92573d67d9a8c9dcd5", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": ">=3.5", "size": 1367093, "upload_time": "2019-07-06T13:46:39", "url": "https://files.pythonhosted.org/packages/c5/57/f1e4168cf7c2e0ed435bd70da06d4fad651df959f472dfd5a7841cddc7b0/multi_party_schnorr-0.1.9-cp36-cp36m-win_amd64.whl" }, { "comment_text": "", "digests": { "md5": "77962c32d3994d05f0972bcc4dc03005", "sha256": "9b1f600a6f59ac093e8dffb0ff67a6c9405e11aa650eb2d15c820945b22f9b73" }, "downloads": -1, "filename": "multi-party-schnorr-0.1.9.tar.gz", "has_sig": false, "md5_digest": "77962c32d3994d05f0972bcc4dc03005", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 12769, "upload_time": "2019-07-06T13:46:55", "url": "https://files.pythonhosted.org/packages/6c/7d/90bd4f231fcd9d8e603b8b2b0c44c81e48ab80e597d9115540ef8e754384/multi-party-schnorr-0.1.9.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "23e49561a3d80c92573d67d9a8c9dcd5", "sha256": "18954062131083c7cc2618bcc4a554d54b17291da25850a864df1dd098bfa270" }, "downloads": -1, "filename": "multi_party_schnorr-0.1.9-cp36-cp36m-win_amd64.whl", "has_sig": false, "md5_digest": "23e49561a3d80c92573d67d9a8c9dcd5", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": ">=3.5", "size": 1367093, "upload_time": "2019-07-06T13:46:39", "url": "https://files.pythonhosted.org/packages/c5/57/f1e4168cf7c2e0ed435bd70da06d4fad651df959f472dfd5a7841cddc7b0/multi_party_schnorr-0.1.9-cp36-cp36m-win_amd64.whl" }, { "comment_text": "", "digests": { "md5": "77962c32d3994d05f0972bcc4dc03005", "sha256": "9b1f600a6f59ac093e8dffb0ff67a6c9405e11aa650eb2d15c820945b22f9b73" }, "downloads": -1, "filename": "multi-party-schnorr-0.1.9.tar.gz", "has_sig": false, "md5_digest": "77962c32d3994d05f0972bcc4dc03005", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 12769, "upload_time": "2019-07-06T13:46:55", "url": "https://files.pythonhosted.org/packages/6c/7d/90bd4f231fcd9d8e603b8b2b0c44c81e48ab80e597d9115540ef8e754384/multi-party-schnorr-0.1.9.tar.gz" } ] }