diff options
| author | CoprDistGit <infra@openeuler.org> | 2023-05-05 06:48:25 +0000 |
|---|---|---|
| committer | CoprDistGit <infra@openeuler.org> | 2023-05-05 06:48:25 +0000 |
| commit | 5b6b6a48142d6e1a3457c1aa08bd11cc2adfbb73 (patch) | |
| tree | 1542595bb635f47c362dbb5a437234822ead8029 | |
| parent | bff631cede444f8adc4f78278ced5b0a4a9542ae (diff) | |
automatic import of python-nkeysopeneuler20.03
| -rw-r--r-- | .gitignore | 1 | ||||
| -rw-r--r-- | python-nkeys.spec | 246 | ||||
| -rw-r--r-- | sources | 1 |
3 files changed, 248 insertions, 0 deletions
@@ -0,0 +1 @@ +/nkeys-0.1.0.tar.gz diff --git a/python-nkeys.spec b/python-nkeys.spec new file mode 100644 index 0000000..16960e3 --- /dev/null +++ b/python-nkeys.spec @@ -0,0 +1,246 @@ +%global _empty_manifest_terminate_build 0 +Name: python-nkeys +Version: 0.1.0 +Release: 1 +Summary: A public-key signature system based on Ed25519 for the NATS ecosystem. +License: Apache 2 License +URL: https://github.com/nats-io/nkeys.py +Source0: https://mirrors.nju.edu.cn/pypi/web/packages/73/fe/d788a4fe70442e527d73f52d3091be3a980d539b63b8574349b5a3732881/nkeys-0.1.0.tar.gz +BuildArch: noarch + + +%description +# NKEYS for Python3 + +[](https://www.apache.org/licenses/LICENSE-2.0) + +A public-key signature system based on [Ed25519](https://ed25519.cr.yp.to/) for the NATS ecosystem. + +## About + +The NATS ecosystem will be moving to [Ed25519](https://ed25519.cr.yp.to/) keys for identity, authentication and authorization for entities such as Accounts, Users, Servers and Clusters. + +Ed25519 is fast and resistant to side channel attacks. Generation of a seed key is all that is needed to be stored and kept safe, as the seed can generate both the public and private keys. + +The NATS system will utilize Ed25519 keys, meaning that NATS systems will never store or even have access to any private keys. Authentication will utilize a random challenge response mechanism. + +Dealing with 32 byte and 64 byte raw keys can be challenging. NKEYS is designed to formulate keys in a much friendlier fashion and references work done in cryptocurrencies, specifically [Stellar](https://www.stellar.org/). Bitcoin and others used a form of Base58 (or Base58Check) to endode raw keys. Stellar utilized a more traditonal Base32 with a CRC16 and a version or prefix byte. NKEYS utilizes a similar format where the prefix will be 1 byte for public and private keys and will be 2 bytes for seeds. The base32 encoding of these prefixes will yield friendly human readbable prefixes, e.g. '**N**' = server, '**C**' = cluster, '**O**' = operator, '**A**' = account, and '**U**' = user. '**P**' is used for private keys. For seeds, the first encoded prefix is '**S**', and the second character will be the type for the public key, e.g. "**SU**" is a seed for a user key pair, "**SA**" is a seed for an account key pair. + +## Installation + +```sh +pip install nkeys +``` + +## Basic API Usage + +```python +import nkeys +import os + +# Create an NKEYS KeyPair from a seed file. +user = None +with open("user.nkey", 'rb', buffering=0) as f: + + # We compute the size of the file to allocate the required + # bytearray size in order to have control over the memory + # and be able to wipe it once the keys are not needed anymore. + seed = bytearray(os.fstat(f.fileno()).st_size) + f.readinto(seed) + user = nkeys.from_seed(seed) + +# Sign some data with the KeyPair user. +data = b'arGTKH8q7XDmgy0' +sig = user.sign(data) + +# Verify the signature +try: + user.verify(data, sig) +except nkeys.ErrInvalidSignature as e: + print("Error:", e) + +# Access the seed, the only thing that needs to be stored and kept safe. +print(user.seed) + +# Remove any secrets that were in use by the KeyPair. +user.wipe() +``` + +## License + +Unless otherwise noted, the NATS source files are distributed under the Apache Version 2.0 license found in the LICENSE file. + +%package -n python3-nkeys +Summary: A public-key signature system based on Ed25519 for the NATS ecosystem. +Provides: python-nkeys +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +%description -n python3-nkeys +# NKEYS for Python3 + +[](https://www.apache.org/licenses/LICENSE-2.0) + +A public-key signature system based on [Ed25519](https://ed25519.cr.yp.to/) for the NATS ecosystem. + +## About + +The NATS ecosystem will be moving to [Ed25519](https://ed25519.cr.yp.to/) keys for identity, authentication and authorization for entities such as Accounts, Users, Servers and Clusters. + +Ed25519 is fast and resistant to side channel attacks. Generation of a seed key is all that is needed to be stored and kept safe, as the seed can generate both the public and private keys. + +The NATS system will utilize Ed25519 keys, meaning that NATS systems will never store or even have access to any private keys. Authentication will utilize a random challenge response mechanism. + +Dealing with 32 byte and 64 byte raw keys can be challenging. NKEYS is designed to formulate keys in a much friendlier fashion and references work done in cryptocurrencies, specifically [Stellar](https://www.stellar.org/). Bitcoin and others used a form of Base58 (or Base58Check) to endode raw keys. Stellar utilized a more traditonal Base32 with a CRC16 and a version or prefix byte. NKEYS utilizes a similar format where the prefix will be 1 byte for public and private keys and will be 2 bytes for seeds. The base32 encoding of these prefixes will yield friendly human readbable prefixes, e.g. '**N**' = server, '**C**' = cluster, '**O**' = operator, '**A**' = account, and '**U**' = user. '**P**' is used for private keys. For seeds, the first encoded prefix is '**S**', and the second character will be the type for the public key, e.g. "**SU**" is a seed for a user key pair, "**SA**" is a seed for an account key pair. + +## Installation + +```sh +pip install nkeys +``` + +## Basic API Usage + +```python +import nkeys +import os + +# Create an NKEYS KeyPair from a seed file. +user = None +with open("user.nkey", 'rb', buffering=0) as f: + + # We compute the size of the file to allocate the required + # bytearray size in order to have control over the memory + # and be able to wipe it once the keys are not needed anymore. + seed = bytearray(os.fstat(f.fileno()).st_size) + f.readinto(seed) + user = nkeys.from_seed(seed) + +# Sign some data with the KeyPair user. +data = b'arGTKH8q7XDmgy0' +sig = user.sign(data) + +# Verify the signature +try: + user.verify(data, sig) +except nkeys.ErrInvalidSignature as e: + print("Error:", e) + +# Access the seed, the only thing that needs to be stored and kept safe. +print(user.seed) + +# Remove any secrets that were in use by the KeyPair. +user.wipe() +``` + +## License + +Unless otherwise noted, the NATS source files are distributed under the Apache Version 2.0 license found in the LICENSE file. + +%package help +Summary: Development documents and examples for nkeys +Provides: python3-nkeys-doc +%description help +# NKEYS for Python3 + +[](https://www.apache.org/licenses/LICENSE-2.0) + +A public-key signature system based on [Ed25519](https://ed25519.cr.yp.to/) for the NATS ecosystem. + +## About + +The NATS ecosystem will be moving to [Ed25519](https://ed25519.cr.yp.to/) keys for identity, authentication and authorization for entities such as Accounts, Users, Servers and Clusters. + +Ed25519 is fast and resistant to side channel attacks. Generation of a seed key is all that is needed to be stored and kept safe, as the seed can generate both the public and private keys. + +The NATS system will utilize Ed25519 keys, meaning that NATS systems will never store or even have access to any private keys. Authentication will utilize a random challenge response mechanism. + +Dealing with 32 byte and 64 byte raw keys can be challenging. NKEYS is designed to formulate keys in a much friendlier fashion and references work done in cryptocurrencies, specifically [Stellar](https://www.stellar.org/). Bitcoin and others used a form of Base58 (or Base58Check) to endode raw keys. Stellar utilized a more traditonal Base32 with a CRC16 and a version or prefix byte. NKEYS utilizes a similar format where the prefix will be 1 byte for public and private keys and will be 2 bytes for seeds. The base32 encoding of these prefixes will yield friendly human readbable prefixes, e.g. '**N**' = server, '**C**' = cluster, '**O**' = operator, '**A**' = account, and '**U**' = user. '**P**' is used for private keys. For seeds, the first encoded prefix is '**S**', and the second character will be the type for the public key, e.g. "**SU**" is a seed for a user key pair, "**SA**" is a seed for an account key pair. + +## Installation + +```sh +pip install nkeys +``` + +## Basic API Usage + +```python +import nkeys +import os + +# Create an NKEYS KeyPair from a seed file. +user = None +with open("user.nkey", 'rb', buffering=0) as f: + + # We compute the size of the file to allocate the required + # bytearray size in order to have control over the memory + # and be able to wipe it once the keys are not needed anymore. + seed = bytearray(os.fstat(f.fileno()).st_size) + f.readinto(seed) + user = nkeys.from_seed(seed) + +# Sign some data with the KeyPair user. +data = b'arGTKH8q7XDmgy0' +sig = user.sign(data) + +# Verify the signature +try: + user.verify(data, sig) +except nkeys.ErrInvalidSignature as e: + print("Error:", e) + +# Access the seed, the only thing that needs to be stored and kept safe. +print(user.seed) + +# Remove any secrets that were in use by the KeyPair. +user.wipe() +``` + +## License + +Unless otherwise noted, the NATS source files are distributed under the Apache Version 2.0 license found in the LICENSE file. + +%prep +%autosetup -n nkeys-0.1.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-nkeys -f filelist.lst +%dir %{python3_sitelib}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Fri May 05 2023 Python_Bot <Python_Bot@openeuler.org> - 0.1.0-1 +- Package Spec generated @@ -0,0 +1 @@ +870fd02211baf8536c19fe6713c29ba4 nkeys-0.1.0.tar.gz |
