diff options
Diffstat (limited to 'python-py-ecc.spec')
-rw-r--r-- | python-py-ecc.spec | 283 |
1 files changed, 283 insertions, 0 deletions
diff --git a/python-py-ecc.spec b/python-py-ecc.spec new file mode 100644 index 0000000..890a520 --- /dev/null +++ b/python-py-ecc.spec @@ -0,0 +1,283 @@ +%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. +[](https://github.com/ethereum/py_ecc) [](https://circleci.com/gh/ethereum/py_ecc) [](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. +[](https://github.com/ethereum/py_ecc) [](https://circleci.com/gh/ethereum/py_ecc) [](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. +[](https://github.com/ethereum/py_ecc) [](https://circleci.com/gh/ethereum/py_ecc) [](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 <Python_Bot@openeuler.org> - 6.0.0-1 +- Package Spec generated |