summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCoprDistGit <infra@openeuler.org>2023-04-12 01:36:45 +0000
committerCoprDistGit <infra@openeuler.org>2023-04-12 01:36:45 +0000
commit82637e49598a2a4b7a7ce6981de5288dddb9a20f (patch)
treebb48d6fa81815ce3ec31ff2086eae3cbfeef1749
parent4ae7a8a046cfcc189a139301b9c2b9cecb19ed13 (diff)
automatic import of python-cose
-rw-r--r--.gitignore1
-rw-r--r--python-cose.spec392
-rw-r--r--sources1
3 files changed, 394 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index e69de29..49c014e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -0,0 +1 @@
+/cose-0.9.dev8.tar.gz
diff --git a/python-cose.spec b/python-cose.spec
new file mode 100644
index 0000000..94c1c1d
--- /dev/null
+++ b/python-cose.spec
@@ -0,0 +1,392 @@
+%global _empty_manifest_terminate_build 0
+Name: python-cose
+Version: 0.9.dev8
+Release: 1
+Summary: CBOR Object Signing and Encryption (COSE) implementation
+License: BSD-3
+URL: https://pycose.readthedocs.io/en/latest/
+Source0: https://mirrors.nju.edu.cn/pypi/web/packages/c8/51/1ce23503581575c1ac48911a14ed92ed16b1ec10e1f32e792c7af428d33e/cose-0.9.dev8.tar.gz
+BuildArch: noarch
+
+Requires: python3-cryptography
+Requires: python3-cbor2
+Requires: python3-ecdsa
+Requires: python3-attrs
+Requires: python3-certvalidator
+
+%description
+# pycose:snake: --- CBOR Object Signing and Encryption
+[![Python package](https://github.com/TimothyClaeys/pycose/actions/workflows/python-package.yml/badge.svg)](https://github.com/TimothyClaeys/pycose/actions/workflows/python-package.yml)
+[![Documentation Status](https://readthedocs.org/projects/pycose/badge/?version=latest)](https://pycose.readthedocs.io/en/latest/?badge=latest)
+
+This project is a Python implementation of the IETF CBOR Encoded Message Syntax (COSE). COSE has reached RFC status and is now available at RFC 8152.
+
+
+## Installation
+
+```bash
+$ pip install cose
+```
+
+:warning:**WARNING**:warning:: There is package on [PyPI](https://pypi.org/) called `pycose` which contains old code from this repository. Since I am not the maintainer I cannot update that package or remove it.
+
+## What is COSE ?
+CBOR Encoded Message Syntax (COSE) is a data format for concise representation of small messages [RFC 8152](https://tools.ietf.org/html/rfc8152). COSE is optimized for low power devices. The messages can be encrypted, MAC'ed and signed. There are 6 different types of COSE messages:
+
+- **Encrypt0**: An encrypted COSE message with a single recipient. The payload and AAD are protected by a shared CEK (Content Encryption Keys)
+- **Encrypt**: An encrypted COSE message can have multiple recipients. For each recipient the CEK is encrypted with a KEK (Key Encryption Key) - using AES key wrap - and added to the message.
+- **MAC0**: An authenticated COSE message with one recipient.
+- **MAC**: An authenticated COSE message that can have multiple recipients. For each recipient, the authentication key is encrypted with a KEK and added to the message.
+- **Sign1**: A signed COSE message with a single signature.
+- **Sign**: A COSE message that has been signed by multiple entities (each signature is carried in a COSE signature structure, added to the message).
+
+A basic COSE message consists of 2 _information_ _buckets_ and the _payload_:
+
+- **Protected header**: This message field contains information that needs to be protected. This information is taken into account during the encryption, calculation of the MAC or the signature.
+- **Unprotected header**: The information contained in the unprotected header is not protected by the cryptographic algorithms.
+- **Payload**: Contains the payload of the message, protected (mac'ed, signed or encrypted) by the cryptographic algorithms.
+
+Additionally, based on the message type, other message fields can be added:
+
+- _MAC_ or _signature_ (for **MAC0** or **Sign1** messages)
+- _COSE recipients_ or _COSE signatures_ (for **MAC**, **Encrypt**, and **Sign** messages)
+
+## Examples
+
+### Encoding
+
+```python
+from binascii import unhexlify
+from cose.messages import Enc0Message
+from cose.keys import SymmetricKey
+
+# Create a COSE Encrypt0 Message
+msg = Enc0Message(
+ phdr={'ALG': 'A128GCM', 'IV': unhexlify(b'01010101010101010101010101010101')},
+ uhdr={'KID': b'meriadoc.brandybuck@buckland.example'},
+ payload='a secret message'.encode('utf-8')
+)
+
+# Create a COSE Symmetric Key
+cose_key = SymmetricKey(key=unhexlify(b'000102030405060708090a0b0c0d0e0f'))
+msg.key = cose_key
+
+# Performs encryption and CBOR serialization
+msg.encode()
+b'\xd0\x83U\xa2\x01\x01\x05P\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\xa1\x04X$meriadoc.brandybuck@buckland.exampleX \xc4\xaf\x85\xacJQ4\x93\x19\x93\xec\n\x18c\xa6\xe8\xc6n\xf4\xc9\xac\x161^\xe6\xfe\xcd\x9b.\x1cy\xa1'
+```
+
+### Decoding
+```python
+from binascii import unhexlify
+from cose.messages import CoseMessage
+from cose.keys import SymmetricKey
+
+# message bytes (CBOR encoded)
+msg = b'\xd0\x83U\xa2\x01\x01\x05P\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\xa1\x04X$meriadoc.brandybuck@buckland.exampleX \xc4\xaf\x85\xacJQ4\x93\x19\x93\xec\n\x18c\xa6\xe8\xc6n\xf4\xc9\xac\x161^\xe6\xfe\xcd\x9b.\x1cy\xa1'
+
+cose_msg = CoseMessage.decode(msg)
+
+# Create a COSE Symmetric Key
+cose_key = SymmetricKey(key=unhexlify(b'000102030405060708090a0b0c0d0e0f'))
+cose_msg.key = cose_key
+
+cose_msg.decrypt()
+b'a secret message'
+```
+
+### More examples
+More examples can be found [here](https://pycose.readthedocs.io/en/latest/examples.html)
+
+## Testing
+
+To run the test suite you need `pytest`:
+```shell
+$ pip install pytest
+```
+Move to the root of the repository and type:
+
+```shell
+$ pytest
+```
+
+## Cryptography
+
+The project depends on [pyca/cryptography](https://github.com/pyca/cryptography) for all cryptographic operations, except the deterministic ECDSA algorithm. For deterministic ECDSA `cose` uses [python-ecdsa](https://github.com/warner/python-ecdsa).
+
+## Documentation
+
+More documentation on COSE and the `cose` API can be found at: https://pycose.readthedocs.io
+
+
+
+
+
+%package -n python3-cose
+Summary: CBOR Object Signing and Encryption (COSE) implementation
+Provides: python-cose
+BuildRequires: python3-devel
+BuildRequires: python3-setuptools
+BuildRequires: python3-pip
+%description -n python3-cose
+# pycose:snake: --- CBOR Object Signing and Encryption
+[![Python package](https://github.com/TimothyClaeys/pycose/actions/workflows/python-package.yml/badge.svg)](https://github.com/TimothyClaeys/pycose/actions/workflows/python-package.yml)
+[![Documentation Status](https://readthedocs.org/projects/pycose/badge/?version=latest)](https://pycose.readthedocs.io/en/latest/?badge=latest)
+
+This project is a Python implementation of the IETF CBOR Encoded Message Syntax (COSE). COSE has reached RFC status and is now available at RFC 8152.
+
+
+## Installation
+
+```bash
+$ pip install cose
+```
+
+:warning:**WARNING**:warning:: There is package on [PyPI](https://pypi.org/) called `pycose` which contains old code from this repository. Since I am not the maintainer I cannot update that package or remove it.
+
+## What is COSE ?
+CBOR Encoded Message Syntax (COSE) is a data format for concise representation of small messages [RFC 8152](https://tools.ietf.org/html/rfc8152). COSE is optimized for low power devices. The messages can be encrypted, MAC'ed and signed. There are 6 different types of COSE messages:
+
+- **Encrypt0**: An encrypted COSE message with a single recipient. The payload and AAD are protected by a shared CEK (Content Encryption Keys)
+- **Encrypt**: An encrypted COSE message can have multiple recipients. For each recipient the CEK is encrypted with a KEK (Key Encryption Key) - using AES key wrap - and added to the message.
+- **MAC0**: An authenticated COSE message with one recipient.
+- **MAC**: An authenticated COSE message that can have multiple recipients. For each recipient, the authentication key is encrypted with a KEK and added to the message.
+- **Sign1**: A signed COSE message with a single signature.
+- **Sign**: A COSE message that has been signed by multiple entities (each signature is carried in a COSE signature structure, added to the message).
+
+A basic COSE message consists of 2 _information_ _buckets_ and the _payload_:
+
+- **Protected header**: This message field contains information that needs to be protected. This information is taken into account during the encryption, calculation of the MAC or the signature.
+- **Unprotected header**: The information contained in the unprotected header is not protected by the cryptographic algorithms.
+- **Payload**: Contains the payload of the message, protected (mac'ed, signed or encrypted) by the cryptographic algorithms.
+
+Additionally, based on the message type, other message fields can be added:
+
+- _MAC_ or _signature_ (for **MAC0** or **Sign1** messages)
+- _COSE recipients_ or _COSE signatures_ (for **MAC**, **Encrypt**, and **Sign** messages)
+
+## Examples
+
+### Encoding
+
+```python
+from binascii import unhexlify
+from cose.messages import Enc0Message
+from cose.keys import SymmetricKey
+
+# Create a COSE Encrypt0 Message
+msg = Enc0Message(
+ phdr={'ALG': 'A128GCM', 'IV': unhexlify(b'01010101010101010101010101010101')},
+ uhdr={'KID': b'meriadoc.brandybuck@buckland.example'},
+ payload='a secret message'.encode('utf-8')
+)
+
+# Create a COSE Symmetric Key
+cose_key = SymmetricKey(key=unhexlify(b'000102030405060708090a0b0c0d0e0f'))
+msg.key = cose_key
+
+# Performs encryption and CBOR serialization
+msg.encode()
+b'\xd0\x83U\xa2\x01\x01\x05P\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\xa1\x04X$meriadoc.brandybuck@buckland.exampleX \xc4\xaf\x85\xacJQ4\x93\x19\x93\xec\n\x18c\xa6\xe8\xc6n\xf4\xc9\xac\x161^\xe6\xfe\xcd\x9b.\x1cy\xa1'
+```
+
+### Decoding
+```python
+from binascii import unhexlify
+from cose.messages import CoseMessage
+from cose.keys import SymmetricKey
+
+# message bytes (CBOR encoded)
+msg = b'\xd0\x83U\xa2\x01\x01\x05P\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\xa1\x04X$meriadoc.brandybuck@buckland.exampleX \xc4\xaf\x85\xacJQ4\x93\x19\x93\xec\n\x18c\xa6\xe8\xc6n\xf4\xc9\xac\x161^\xe6\xfe\xcd\x9b.\x1cy\xa1'
+
+cose_msg = CoseMessage.decode(msg)
+
+# Create a COSE Symmetric Key
+cose_key = SymmetricKey(key=unhexlify(b'000102030405060708090a0b0c0d0e0f'))
+cose_msg.key = cose_key
+
+cose_msg.decrypt()
+b'a secret message'
+```
+
+### More examples
+More examples can be found [here](https://pycose.readthedocs.io/en/latest/examples.html)
+
+## Testing
+
+To run the test suite you need `pytest`:
+```shell
+$ pip install pytest
+```
+Move to the root of the repository and type:
+
+```shell
+$ pytest
+```
+
+## Cryptography
+
+The project depends on [pyca/cryptography](https://github.com/pyca/cryptography) for all cryptographic operations, except the deterministic ECDSA algorithm. For deterministic ECDSA `cose` uses [python-ecdsa](https://github.com/warner/python-ecdsa).
+
+## Documentation
+
+More documentation on COSE and the `cose` API can be found at: https://pycose.readthedocs.io
+
+
+
+
+
+%package help
+Summary: Development documents and examples for cose
+Provides: python3-cose-doc
+%description help
+# pycose:snake: --- CBOR Object Signing and Encryption
+[![Python package](https://github.com/TimothyClaeys/pycose/actions/workflows/python-package.yml/badge.svg)](https://github.com/TimothyClaeys/pycose/actions/workflows/python-package.yml)
+[![Documentation Status](https://readthedocs.org/projects/pycose/badge/?version=latest)](https://pycose.readthedocs.io/en/latest/?badge=latest)
+
+This project is a Python implementation of the IETF CBOR Encoded Message Syntax (COSE). COSE has reached RFC status and is now available at RFC 8152.
+
+
+## Installation
+
+```bash
+$ pip install cose
+```
+
+:warning:**WARNING**:warning:: There is package on [PyPI](https://pypi.org/) called `pycose` which contains old code from this repository. Since I am not the maintainer I cannot update that package or remove it.
+
+## What is COSE ?
+CBOR Encoded Message Syntax (COSE) is a data format for concise representation of small messages [RFC 8152](https://tools.ietf.org/html/rfc8152). COSE is optimized for low power devices. The messages can be encrypted, MAC'ed and signed. There are 6 different types of COSE messages:
+
+- **Encrypt0**: An encrypted COSE message with a single recipient. The payload and AAD are protected by a shared CEK (Content Encryption Keys)
+- **Encrypt**: An encrypted COSE message can have multiple recipients. For each recipient the CEK is encrypted with a KEK (Key Encryption Key) - using AES key wrap - and added to the message.
+- **MAC0**: An authenticated COSE message with one recipient.
+- **MAC**: An authenticated COSE message that can have multiple recipients. For each recipient, the authentication key is encrypted with a KEK and added to the message.
+- **Sign1**: A signed COSE message with a single signature.
+- **Sign**: A COSE message that has been signed by multiple entities (each signature is carried in a COSE signature structure, added to the message).
+
+A basic COSE message consists of 2 _information_ _buckets_ and the _payload_:
+
+- **Protected header**: This message field contains information that needs to be protected. This information is taken into account during the encryption, calculation of the MAC or the signature.
+- **Unprotected header**: The information contained in the unprotected header is not protected by the cryptographic algorithms.
+- **Payload**: Contains the payload of the message, protected (mac'ed, signed or encrypted) by the cryptographic algorithms.
+
+Additionally, based on the message type, other message fields can be added:
+
+- _MAC_ or _signature_ (for **MAC0** or **Sign1** messages)
+- _COSE recipients_ or _COSE signatures_ (for **MAC**, **Encrypt**, and **Sign** messages)
+
+## Examples
+
+### Encoding
+
+```python
+from binascii import unhexlify
+from cose.messages import Enc0Message
+from cose.keys import SymmetricKey
+
+# Create a COSE Encrypt0 Message
+msg = Enc0Message(
+ phdr={'ALG': 'A128GCM', 'IV': unhexlify(b'01010101010101010101010101010101')},
+ uhdr={'KID': b'meriadoc.brandybuck@buckland.example'},
+ payload='a secret message'.encode('utf-8')
+)
+
+# Create a COSE Symmetric Key
+cose_key = SymmetricKey(key=unhexlify(b'000102030405060708090a0b0c0d0e0f'))
+msg.key = cose_key
+
+# Performs encryption and CBOR serialization
+msg.encode()
+b'\xd0\x83U\xa2\x01\x01\x05P\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\xa1\x04X$meriadoc.brandybuck@buckland.exampleX \xc4\xaf\x85\xacJQ4\x93\x19\x93\xec\n\x18c\xa6\xe8\xc6n\xf4\xc9\xac\x161^\xe6\xfe\xcd\x9b.\x1cy\xa1'
+```
+
+### Decoding
+```python
+from binascii import unhexlify
+from cose.messages import CoseMessage
+from cose.keys import SymmetricKey
+
+# message bytes (CBOR encoded)
+msg = b'\xd0\x83U\xa2\x01\x01\x05P\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\xa1\x04X$meriadoc.brandybuck@buckland.exampleX \xc4\xaf\x85\xacJQ4\x93\x19\x93\xec\n\x18c\xa6\xe8\xc6n\xf4\xc9\xac\x161^\xe6\xfe\xcd\x9b.\x1cy\xa1'
+
+cose_msg = CoseMessage.decode(msg)
+
+# Create a COSE Symmetric Key
+cose_key = SymmetricKey(key=unhexlify(b'000102030405060708090a0b0c0d0e0f'))
+cose_msg.key = cose_key
+
+cose_msg.decrypt()
+b'a secret message'
+```
+
+### More examples
+More examples can be found [here](https://pycose.readthedocs.io/en/latest/examples.html)
+
+## Testing
+
+To run the test suite you need `pytest`:
+```shell
+$ pip install pytest
+```
+Move to the root of the repository and type:
+
+```shell
+$ pytest
+```
+
+## Cryptography
+
+The project depends on [pyca/cryptography](https://github.com/pyca/cryptography) for all cryptographic operations, except the deterministic ECDSA algorithm. For deterministic ECDSA `cose` uses [python-ecdsa](https://github.com/warner/python-ecdsa).
+
+## Documentation
+
+More documentation on COSE and the `cose` API can be found at: https://pycose.readthedocs.io
+
+
+
+
+
+%prep
+%autosetup -n cose-0.9.dev8
+
+%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-cose -f filelist.lst
+%dir %{python3_sitelib}/*
+
+%files help -f doclist.lst
+%{_docdir}/*
+
+%changelog
+* Wed Apr 12 2023 Python_Bot <Python_Bot@openeuler.org> - 0.9.dev8-1
+- Package Spec generated
diff --git a/sources b/sources
new file mode 100644
index 0000000..4bc343d
--- /dev/null
+++ b/sources
@@ -0,0 +1 @@
+8f7ffe9b4c83a44eee9035e0de4fe5a8 cose-0.9.dev8.tar.gz