%global _empty_manifest_terminate_build 0 Name: python-py-ecc Version: 6.0.0 Release: 1 Summary: Elliptic curve crypto in python including secp256k1 and alt_bn128 License: MIT URL: https://github.com/ethereum/py_ecc Source0: https://mirrors.nju.edu.cn/pypi/web/packages/5e/e3/12234aef5f578457f10e1cdd28737445b5918c1cf4049da5d34587647fa1/py_ecc-6.0.0.tar.gz BuildArch: noarch Requires: python3-eth-typing Requires: python3-eth-utils Requires: python3-mypy-extensions Requires: python3-cached-property Requires: python3-bumpversion Requires: python3-twine Requires: python3-pytest Requires: python3-pytest-xdist Requires: python3-flake8 Requires: python3-mypy Requires: python3-mypy-extensions Requires: python3-flake8 Requires: python3-mypy Requires: python3-mypy-extensions Requires: python3-pytest Requires: python3-pytest-xdist %description Elliptic curve crypto in python including secp256k1, alt_bn128, and bls12_381. > **Warning**: This library contains some experimental codes that have **NOT** been audited. [![GitHub](https://img.shields.io/github/license/mashape/apistatus.svg)](https://github.com/ethereum/py_ecc) [![Build Status](https://circleci.com/gh/ethereum/py_ecc.svg?style=shield)](https://circleci.com/gh/ethereum/py_ecc) [![PyPI version](https://badge.fury.io/py/py-ecc.svg)](https://badge.fury.io/py/py-ecc) ## Quickstart ```sh pip install py_ecc ``` ## BLS Signatures `py_ecc` implements the [IETF BLS draft standard v4](https://tools.ietf.org/html/draft-irtf-cfrg-bls-signature-04) as per the inter-blockchain standardization agreement. The BLS standards specify [different ciphersuites](https://tools.ietf.org/html/draft-irtf-cfrg-bls-signature-04#section-4) which each have different functionality to accommodate various use cases. The following ciphersuites are available from this library: - `G2Basic` also known as `BLS_SIG_BLS12381G2_XMD:SHA-256_SSWU_RO_NUL_` - `G2MessageAugmentation` also known as `BLS_SIG_BLS12381G2_XMD:SHA-256_SSWU_RO_AUG_` - `G2ProofOfPossession` also known as `BLS_SIG_BLS12381G2_XMD:SHA-256_SSWU_RO_POP_` ### Basic Usage ```python from py_ecc.bls import G2ProofOfPossession as bls_pop private_key = 5566 public_key = bls_pop.SkToPk(private_key) message = b'\xab' * 32 # The message to be signed # Signing signature = bls_pop.Sign(private_key, message) # Verifying assert bls_pop.Verify(public_key, message, signature) ``` ### Aggregating Signatures ```python private_keys = [3, 14, 159] public_keys = [bls_pop.SkToPk(key) for key in private_keys] signatures = [bls_pop.Sign(key, message) for key in private_keys] # Aggregating agg_sig = bls_pop.Aggregate(signatures) # Verifying signatures over the same message. # Note this is only safe if Proofs of Possession have been verified for each of the public keys beforehand. # See the BLS standards for why this is the case. assert bls_pop.FastAggregateVerify(public_keys, message, agg_sig) ``` ### Multiple Aggregation ```python messages = [b'\xaa' * 42, b'\xbb' * 32, b'\xcc' * 64] signatures = [bls_pop.Sign(key, message) for key, message in zip(private_keys, messages)] agg_sig = bls_pop.Aggregate(signatures) # Verify aggregate signature with different messages assert bls_pop.AggregateVerify(public_keys, messages, agg_sig) ``` ## Developer Setup If you would like to hack on py_ecc, please check out the [Ethereum Development Tactical Manual](https://github.com/ethereum/ethereum-dev-tactical-manual) for information on how we do: - Testing - Pull Requests - Code Style - Documentation ## Got bug? Feel free to create issue under https://github.com/ethereum/py_ecc/issues ## Copyright and Licensing Project is licensed under the MIT license. ## Release setup To release a new version: ```sh make release bump=$$VERSION_PART_TO_BUMP$$ ``` #### How to bumpversion The version format for this repo is `{major}.{minor}.{patch}` for stable, and `{major}.{minor}.{patch}-{stage}.{devnum}` for unstable (`stage` can be alpha or beta). To issue the next version in line, specify which part to bump, like `make release bump=minor` or `make release bump=devnum`. If you are in a beta version, `make release bump=stage` will switch to a stable. To issue an unstable version when the current version is stable, specify the new version explicitly, like `make release bump="--new-version 4.0.0-alpha.1 devnum"` %package -n python3-py-ecc Summary: Elliptic curve crypto in python including secp256k1 and alt_bn128 Provides: python-py-ecc BuildRequires: python3-devel BuildRequires: python3-setuptools BuildRequires: python3-pip %description -n python3-py-ecc Elliptic curve crypto in python including secp256k1, alt_bn128, and bls12_381. > **Warning**: This library contains some experimental codes that have **NOT** been audited. [![GitHub](https://img.shields.io/github/license/mashape/apistatus.svg)](https://github.com/ethereum/py_ecc) [![Build Status](https://circleci.com/gh/ethereum/py_ecc.svg?style=shield)](https://circleci.com/gh/ethereum/py_ecc) [![PyPI version](https://badge.fury.io/py/py-ecc.svg)](https://badge.fury.io/py/py-ecc) ## Quickstart ```sh pip install py_ecc ``` ## BLS Signatures `py_ecc` implements the [IETF BLS draft standard v4](https://tools.ietf.org/html/draft-irtf-cfrg-bls-signature-04) as per the inter-blockchain standardization agreement. The BLS standards specify [different ciphersuites](https://tools.ietf.org/html/draft-irtf-cfrg-bls-signature-04#section-4) which each have different functionality to accommodate various use cases. The following ciphersuites are available from this library: - `G2Basic` also known as `BLS_SIG_BLS12381G2_XMD:SHA-256_SSWU_RO_NUL_` - `G2MessageAugmentation` also known as `BLS_SIG_BLS12381G2_XMD:SHA-256_SSWU_RO_AUG_` - `G2ProofOfPossession` also known as `BLS_SIG_BLS12381G2_XMD:SHA-256_SSWU_RO_POP_` ### Basic Usage ```python from py_ecc.bls import G2ProofOfPossession as bls_pop private_key = 5566 public_key = bls_pop.SkToPk(private_key) message = b'\xab' * 32 # The message to be signed # Signing signature = bls_pop.Sign(private_key, message) # Verifying assert bls_pop.Verify(public_key, message, signature) ``` ### Aggregating Signatures ```python private_keys = [3, 14, 159] public_keys = [bls_pop.SkToPk(key) for key in private_keys] signatures = [bls_pop.Sign(key, message) for key in private_keys] # Aggregating agg_sig = bls_pop.Aggregate(signatures) # Verifying signatures over the same message. # Note this is only safe if Proofs of Possession have been verified for each of the public keys beforehand. # See the BLS standards for why this is the case. assert bls_pop.FastAggregateVerify(public_keys, message, agg_sig) ``` ### Multiple Aggregation ```python messages = [b'\xaa' * 42, b'\xbb' * 32, b'\xcc' * 64] signatures = [bls_pop.Sign(key, message) for key, message in zip(private_keys, messages)] agg_sig = bls_pop.Aggregate(signatures) # Verify aggregate signature with different messages assert bls_pop.AggregateVerify(public_keys, messages, agg_sig) ``` ## Developer Setup If you would like to hack on py_ecc, please check out the [Ethereum Development Tactical Manual](https://github.com/ethereum/ethereum-dev-tactical-manual) for information on how we do: - Testing - Pull Requests - Code Style - Documentation ## Got bug? Feel free to create issue under https://github.com/ethereum/py_ecc/issues ## Copyright and Licensing Project is licensed under the MIT license. ## Release setup To release a new version: ```sh make release bump=$$VERSION_PART_TO_BUMP$$ ``` #### How to bumpversion The version format for this repo is `{major}.{minor}.{patch}` for stable, and `{major}.{minor}.{patch}-{stage}.{devnum}` for unstable (`stage` can be alpha or beta). To issue the next version in line, specify which part to bump, like `make release bump=minor` or `make release bump=devnum`. If you are in a beta version, `make release bump=stage` will switch to a stable. To issue an unstable version when the current version is stable, specify the new version explicitly, like `make release bump="--new-version 4.0.0-alpha.1 devnum"` %package help Summary: Development documents and examples for py-ecc Provides: python3-py-ecc-doc %description help Elliptic curve crypto in python including secp256k1, alt_bn128, and bls12_381. > **Warning**: This library contains some experimental codes that have **NOT** been audited. [![GitHub](https://img.shields.io/github/license/mashape/apistatus.svg)](https://github.com/ethereum/py_ecc) [![Build Status](https://circleci.com/gh/ethereum/py_ecc.svg?style=shield)](https://circleci.com/gh/ethereum/py_ecc) [![PyPI version](https://badge.fury.io/py/py-ecc.svg)](https://badge.fury.io/py/py-ecc) ## Quickstart ```sh pip install py_ecc ``` ## BLS Signatures `py_ecc` implements the [IETF BLS draft standard v4](https://tools.ietf.org/html/draft-irtf-cfrg-bls-signature-04) as per the inter-blockchain standardization agreement. The BLS standards specify [different ciphersuites](https://tools.ietf.org/html/draft-irtf-cfrg-bls-signature-04#section-4) which each have different functionality to accommodate various use cases. The following ciphersuites are available from this library: - `G2Basic` also known as `BLS_SIG_BLS12381G2_XMD:SHA-256_SSWU_RO_NUL_` - `G2MessageAugmentation` also known as `BLS_SIG_BLS12381G2_XMD:SHA-256_SSWU_RO_AUG_` - `G2ProofOfPossession` also known as `BLS_SIG_BLS12381G2_XMD:SHA-256_SSWU_RO_POP_` ### Basic Usage ```python from py_ecc.bls import G2ProofOfPossession as bls_pop private_key = 5566 public_key = bls_pop.SkToPk(private_key) message = b'\xab' * 32 # The message to be signed # Signing signature = bls_pop.Sign(private_key, message) # Verifying assert bls_pop.Verify(public_key, message, signature) ``` ### Aggregating Signatures ```python private_keys = [3, 14, 159] public_keys = [bls_pop.SkToPk(key) for key in private_keys] signatures = [bls_pop.Sign(key, message) for key in private_keys] # Aggregating agg_sig = bls_pop.Aggregate(signatures) # Verifying signatures over the same message. # Note this is only safe if Proofs of Possession have been verified for each of the public keys beforehand. # See the BLS standards for why this is the case. assert bls_pop.FastAggregateVerify(public_keys, message, agg_sig) ``` ### Multiple Aggregation ```python messages = [b'\xaa' * 42, b'\xbb' * 32, b'\xcc' * 64] signatures = [bls_pop.Sign(key, message) for key, message in zip(private_keys, messages)] agg_sig = bls_pop.Aggregate(signatures) # Verify aggregate signature with different messages assert bls_pop.AggregateVerify(public_keys, messages, agg_sig) ``` ## Developer Setup If you would like to hack on py_ecc, please check out the [Ethereum Development Tactical Manual](https://github.com/ethereum/ethereum-dev-tactical-manual) for information on how we do: - Testing - Pull Requests - Code Style - Documentation ## Got bug? Feel free to create issue under https://github.com/ethereum/py_ecc/issues ## Copyright and Licensing Project is licensed under the MIT license. ## Release setup To release a new version: ```sh make release bump=$$VERSION_PART_TO_BUMP$$ ``` #### How to bumpversion The version format for this repo is `{major}.{minor}.{patch}` for stable, and `{major}.{minor}.{patch}-{stage}.{devnum}` for unstable (`stage` can be alpha or beta). To issue the next version in line, specify which part to bump, like `make release bump=minor` or `make release bump=devnum`. If you are in a beta version, `make release bump=stage` will switch to a stable. To issue an unstable version when the current version is stable, specify the new version explicitly, like `make release bump="--new-version 4.0.0-alpha.1 devnum"` %prep %autosetup -n py-ecc-6.0.0 %build %py3_build %install %py3_install install -d -m755 %{buildroot}/%{_pkgdocdir} if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi pushd %{buildroot} if [ -d usr/lib ]; then find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst fi if [ -d usr/lib64 ]; then find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst fi if [ -d usr/bin ]; then find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst fi if [ -d usr/sbin ]; then find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst fi touch doclist.lst if [ -d usr/share/man ]; then find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst fi popd mv %{buildroot}/filelist.lst . mv %{buildroot}/doclist.lst . %files -n python3-py-ecc -f filelist.lst %dir %{python3_sitelib}/* %files help -f doclist.lst %{_docdir}/* %changelog * Tue Apr 11 2023 Python_Bot - 6.0.0-1 - Package Spec generated