optigatrust
A ctypes based Python wrapper to work with the OPTIGA(TM) Trust security solutions.
Features
| Function | Module |
|---|---|
| Elliptic Curves Cryptograpy | optigatrust.pk.ecc |
| ECDSA | optigatrust.pk.ecdsa |
| Certificate Signing Request | optigatrust.x509.csr |
| Certificate handling | optigatrust.x509.cert |
| Random Number Generation | optigatrust.rand |
| Write/Read General Purpose Data | optigatrust.util.io |
Dependencies
- Python 3.x
- asn1crypto
- oscrypto
Required Hardware
- OPTIGA(TM) Trust Personalisation Board, or
- any FTDI USB-HID/I2C Converter board
- (planned) Embedded Linux with open I2C lines; e.g. RPi3
Installation
$ pip install optigatrust
License
optigatrust is licensed under the terms of the MIT license. See the LICENSE file for the exact license text.
Documentation
The documentation for optigatrust is composed of tutorials on basic usage and links to the source for the various pre-defined type classes.
Examples
from optigatrust.util.types import *
from optigatrust.rand import *
from optigatrust.pk import *
from optigatrust.x509 import *
import base64
print("Rand size 8 bytes: {0}\n".format(list(get_random_bytes(8))))
print("Rand size 16 bytes: {0}\n".format(list(get_random_bytes(16))))
print("Rand size 255 bytes: {0}\n".format(list(get_random_bytes(255))))
ecc_key = ecc.generate_keypair()
print("Generate NIST-P256 Keypair: {0}\n".format(list(ecc_key.pkey)))
ecdsa_signature = ecdsa.sign(ecc_key, b'Hello World')
print("Generate ECDSA Signature using the keypair: {0}\n".format(list(ecdsa_signature.signature)))
csr_key = ecc.generate_keypair(curve='secp256r1', keyid=KeyId.USER_PRIVKEY_3)
print("Generate NIST-P256 Keypair for a new certificate: {0}\n".format(list(csr_key.pkey)))
builder = csr.Builder(
{
'country_name': 'DE',
'state_or_province_name': 'Bayern',
'organization_name': 'Infineon Technologies AG',
'common_name': 'OPTIGA(TM) Trust IoT',
},
csr_key
)
request = builder.build(csr_key)
csr = base64.b64encode(request.dump())
print("A new CSR {0}\n".format(csr))
Testing
Tests are written using pytest and require this package to be installed:
$ git clone --recurse-submodules https://github.com/Infineon/python-optiga-trust
...
$ cd python-optiga-trust
$ cd tests
$ pytest
To run only some tests, pass a regular expression as a parameter to tests.
$ pytest test_rand.py
Development
Existing releases can be found at https://pypi.org/project/optigatrust/.
Metadata
Release files for optigatrust 0.3.15
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| optigatrust-0.3.15.tar.gz | 16.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| optigatrust-0.3.15-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 263.4 kB
Release files / optigatrust-0.3.15.tar.gz
| Download URL | optigatrust-0.3.15.tar.gz |
|---|---|
| Size | 16.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
0252ad7fe86b76f8077b08086c0535e1a0d081788af43e08bdcc4a0a4d6ab76e
|
|
BLAKE2b-256 checksum How to use checksums |
eb054e143b0928de0cc1bcc41b759ae8ab8a51e8927b2e05dc3c2a8c16246c6d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.32.1 CPython/3.7.3
|
Release files / optigatrust-0.3.15-py3-none-any.whl
| Download URL | optigatrust-0.3.15-py3-none-any.whl |
|---|---|
| Size | 246.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
8e15240eab6da679bd7a25eecf1eca99e61eeb0e85f2c45c7dfe73c306c26f4a
|
|
BLAKE2b-256 checksum How to use checksums |
e7df2cb99e140f33468494653289e93c2a553a26acb4cbc816f45e85479ee942
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.32.1 CPython/3.7.3
|