{ "info": { "author": "Infineon Technologies AG", "author_email": "DSSTechnicalSupport@infineon.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: Microsoft :: Windows", "Operating System :: Microsoft :: Windows :: Windows 10", "Operating System :: Microsoft :: Windows :: Windows 8", "Operating System :: Microsoft :: Windows :: Windows 8.1", "Operating System :: POSIX :: Linux", "Programming Language :: Python", "Programming Language :: Python :: 3.7" ], "description": "# optigatrust\n\nA ctypes based Python wrapper to work with the OPTIGA\u00e2\u201e\u00a2 Trust security solutions.\n\n - [Features](#features)\n - [Dependencies](#dependencies)\n - [Required Hardware](#required-hardware)\n - [Installation](#installation)\n - [License](#license)\n - [Documentation](#documentation)\n - [Testing](#testing)\n - [Development](#development)\n\n[![PyPI](https://img.shields.io/pypi/v/optigatrust.svg)](https://pypi.org/project/optigatrust/)\n\n## Features\n\n| Function | Module |\n| --------------------------- | ------------------------------------------- | \n| Elliptic Curves Cryptograpy | [`optigatrust.pk.ecc`](lib/optigatrust/pk/ecc.py) | \n| ECDSA | [`optigatrust.pk.ecdsa`](lib/optigatrust/pk/ecdsa.py) | \n| Certificate Signing Request | [`optigatrust.x509.csr`](lib/optigatrust/x509/csr.py) |\n| Certificate handling | [`optigatrust.x509.cert`](lib/optigatrust/x509/cert.py) | \n| Random Number Generation | [`optigatrust.rand`](lib/optigatrust/rand/__init__.py) | \n| Write/Read General Purpose Data | [`optigatrust.util.io`](lib/optigatrust/util/io.py) | \n\n## Dependencies\n\n - Python 3.7+ \n - [asn1crypto](https://github.com/wbond/asn1crypto)\n - [oscrypto](https://github.com/wbond/oscrypto)\n\n## Required Hardware\n\n 1. Either of the following:\n * OPTIGA\u00e2\u201e\u00a2 Trust Personalisation Board\n * any FTDI USB-HID/I2C Converter board\n * Embedded Linux with open I2C lines; e.g. RPi3\n 2. OPTIGA\u00e2\u201e\u00a2 Trust X/M sample\n\n
\n Connection details for the RPi3 and OPTIGA\u00e2\u201e\u00a2 Trust X Security Shield 2Go \n\n
\n\n## Installation\n\n```bash\n$ pip install optigatrust\n```\n\n## License\n\n*optigatrust* is licensed under the terms of the MIT license. See the\n[LICENSE](LICENSE) file for the exact license text.\n\n## Documentation\n\nThe documentation for *optigatrust* is composed of tutorials on basic usage and\nlinks to the source for the various pre-defined type classes.\n\n### Examples\n\n```python\nfrom optigatrust.util.types import *\nfrom optigatrust.rand import *\nfrom optigatrust.pk import *\nfrom optigatrust.x509 import *\nimport base64\n\nprint(\"Rand size 8 bytes: {0}\\n\".format(list(get_random_bytes(8))))\nprint(\"Rand size 16 bytes: {0}\\n\".format(list(get_random_bytes(16))))\nprint(\"Rand size 255 bytes: {0}\\n\".format(list(get_random_bytes(255))))\n\necc_key = ecc.generate_keypair()\nprint(\"Generate NIST-P256 Keypair: {0}\\n\".format(list(ecc_key.pkey)))\n\necdsa_signature = ecdsa.sign(ecc_key, b'Hello World')\nprint(\"Generate ECDSA Signature using the keypair: {0}\\n\".format(list(ecdsa_signature.signature)))\n\ncsr_key = ecc.generate_keypair(curve='secp256r1', keyid=KeyId.USER_PRIVKEY_3)\nprint(\"Generate NIST-P256 Keypair for a new certificate: {0}\\n\".format(list(csr_key.pkey)))\n\nbuilder = csr.Builder(\n\t{\n\t\t'country_name': 'DE',\n\t\t'state_or_province_name': 'Bayern',\n\t\t'organization_name': 'Infineon Technologies AG',\n\t\t'common_name': 'OPTIGA(TM) Trust IoT',\n\t},\n\tcsr_key\n)\n\nrequest = builder.build(csr_key)\ncsr = base64.b64encode(request.dump())\nprint(\"A new CSR {0}\\n\".format(csr))\n\n```\n\n## Testing\n\nTests are written using `pytest` and `oscrypto` and require these packages to be installed:\n\n```bash\n$ pip3 install pytest oscrypto\n$ git clone --recurse-submodules https://github.com/Infineon/python-optiga-trust\n...\n$ cd python-optiga-trust\n$ cd tests\n$ pytest\n```\n\nTo run only some tests, pass a regular expression as a parameter to `tests`.\n\n```bash\n$ pytest test_rand.py\n```\n\n## Add support for you own Embedded Linux\n\nYou need to build the shared library for your platform for this you need to have `cmake` and `build-essential` packages installed in your system\n\nThen you can do the following\n\n```bash\n$ cd cd python-optiga-trust/lib/optigatrust/csrc\n$ mkdir build && cd build\n$ cmake ..\n$ make\n```\n\n
\n Sample output \n\n```bash\npi@raspberrypi:~/git/python-optiga-trust/lib/optigatrust/csrc/build $ make\nScanning dependencies of target optigatrust-libusb-linux-armv7l\n[ 1%] Building C object CMakeFiles/optigatrust-libusb-linux-armv7l.dir/optiga-trust-x/optiga/crypt/optiga_crypt.c.o\n[ 3%] Building C object CMakeFiles/optigatrust-libusb-linux-armv7l.dir/optiga-trust-x/optiga/util/optiga_util.c.o\n[ 4%] Building C object CMakeFiles/optigatrust-libusb-linux-armv7l.dir/optiga-trust-x/optiga/cmd/CommandLib.c.o\n[ 6%] Building C object CMakeFiles/optigatrust-libusb-linux-armv7l.dir/optiga-trust-x/optiga/common/Logger.c.o\n[ 8%] Building C object CMakeFiles/optigatrust-libusb-linux-armv7l.dir/optiga-trust-x/optiga/common/Util.c.o\n[ 9%] Building C object CMakeFiles/optigatrust-libusb-linux-armv7l.dir/optiga-trust-x/optiga/comms/ifx_i2c/ifx_i2c.c.o\n[ 11%] Building C object CMakeFiles/optigatrust-libusb-linux-armv7l.dir/optiga-trust-x/optiga/comms/ifx_i2c/ifx_i2c_config.c.o\n[ 13%] Building C object CMakeFiles/optigatrust-libusb-linux-armv7l.dir/optiga-trust-x/optiga/comms/ifx_i2c/ifx_i2c_data_link_layer.c.o\n[ 14%] Building C object CMakeFiles/optigatrust-libusb-linux-armv7l.dir/optiga-trust-x/optiga/comms/ifx_i2c/ifx_i2c_physical_layer.c.o\n[ 16%] Building C object CMakeFiles/optigatrust-libusb-linux-armv7l.dir/optiga-trust-x/optiga/comms/ifx_i2c/ifx_i2c_transport_layer.c.o\n[ 18%] Building C object CMakeFiles/optigatrust-libusb-linux-armv7l.dir/optiga-trust-x/optiga/dtls/AlertProtocol.c.o\n[ 19%] Building C object CMakeFiles/optigatrust-libusb-linux-armv7l.dir/optiga-trust-x/optiga/dtls/DtlsFlightHandler.c.o\n[ 21%] Building C object CMakeFiles/optigatrust-libusb-linux-armv7l.dir/optiga-trust-x/optiga/dtls/DtlsHandshakeProtocol.c.o\n[ 22%] Building C object CMakeFiles/optigatrust-libusb-linux-armv7l.dir/optiga-trust-x/optiga/dtls/DtlsRecordLayer.c.o\n[ 24%] Building C object CMakeFiles/optigatrust-libusb-linux-armv7l.dir/optiga-trust-x/optiga/dtls/DtlsTransportLayer.c.o\n[ 26%] Building C object CMakeFiles/optigatrust-libusb-linux-armv7l.dir/optiga-trust-x/optiga/dtls/DtlsWindowing.c.o\n[ 27%] Building C object CMakeFiles/optigatrust-libusb-linux-armv7l.dir/optiga-trust-x/optiga/dtls/HardwareCrypto.c.o\n[ 29%] Building C object CMakeFiles/optigatrust-libusb-linux-armv7l.dir/optiga-trust-x/optiga/dtls/MessageLayer.c.o\n[ 31%] Building C object CMakeFiles/optigatrust-libusb-linux-armv7l.dir/optiga-trust-x/optiga/dtls/OCP.c.o\n[ 32%] Building C object CMakeFiles/optigatrust-libusb-linux-armv7l.dir/optiga-trust-x/optiga/dtls/OCPConfig.c.o\n[ 34%] Building C object CMakeFiles/optigatrust-libusb-linux-armv7l.dir/optiga-trust-x/optiga_trust_init.c.o\n[ 36%] Building C object CMakeFiles/optigatrust-libusb-linux-armv7l.dir/optiga-trust-x/pal/libusb/optiga_comms_ifx_i2c_usb.c.o\n[ 37%] Building C object CMakeFiles/optigatrust-libusb-linux-armv7l.dir/optiga-trust-x/pal/libusb/pal_common.c.o\n[ 39%] Building C object CMakeFiles/optigatrust-libusb-linux-armv7l.dir/optiga-trust-x/pal/libusb/pal.c.o\n[ 40%] Building C object CMakeFiles/optigatrust-libusb-linux-armv7l.dir/optiga-trust-x/pal/libusb/pal_gpio.c.o\n[ 42%] Building C object CMakeFiles/optigatrust-libusb-linux-armv7l.dir/optiga-trust-x/pal/libusb/pal_i2c.c.o\n[ 44%] Building C object CMakeFiles/optigatrust-libusb-linux-armv7l.dir/optiga-trust-x/pal/libusb/pal_ifx_usb_config.c.o\n[ 45%] Building C object CMakeFiles/optigatrust-libusb-linux-armv7l.dir/optiga-trust-x/pal/libusb/pal_os_event.c.o\n[ 47%] Building C object CMakeFiles/optigatrust-libusb-linux-armv7l.dir/optiga-trust-x/pal/libusb/pal_os_lock.c.o\n[ 49%] Building C object CMakeFiles/optigatrust-libusb-linux-armv7l.dir/optiga-trust-x/pal/libusb/pal_os_timer.c.o\n[ 50%] Linking C shared library ../lib/liboptigatrust-libusb-linux-armv7l.so\n[ 50%] Built target optigatrust-libusb-linux-armv7l\nScanning dependencies of target optigatrust-i2c-linux-armv7l\n[ 52%] Building C object CMakeFiles/optigatrust-i2c-linux-armv7l.dir/optiga-trust-x/optiga/crypt/optiga_crypt.c.o\n[ 54%] Building C object CMakeFiles/optigatrust-i2c-linux-armv7l.dir/optiga-trust-x/optiga/util/optiga_util.c.o\n[ 55%] Building C object CMakeFiles/optigatrust-i2c-linux-armv7l.dir/optiga-trust-x/optiga/cmd/CommandLib.c.o\n[ 57%] Building C object CMakeFiles/optigatrust-i2c-linux-armv7l.dir/optiga-trust-x/optiga/common/Logger.c.o\n[ 59%] Building C object CMakeFiles/optigatrust-i2c-linux-armv7l.dir/optiga-trust-x/optiga/common/Util.c.o\n[ 60%] Building C object CMakeFiles/optigatrust-i2c-linux-armv7l.dir/optiga-trust-x/optiga/comms/ifx_i2c/ifx_i2c.c.o\n[ 62%] Building C object CMakeFiles/optigatrust-i2c-linux-armv7l.dir/optiga-trust-x/optiga/comms/ifx_i2c/ifx_i2c_config.c.o\n[ 63%] Building C object CMakeFiles/optigatrust-i2c-linux-armv7l.dir/optiga-trust-x/optiga/comms/ifx_i2c/ifx_i2c_data_link_layer.c.o\n[ 65%] Building C object CMakeFiles/optigatrust-i2c-linux-armv7l.dir/optiga-trust-x/optiga/comms/ifx_i2c/ifx_i2c_physical_layer.c.o\n[ 67%] Building C object CMakeFiles/optigatrust-i2c-linux-armv7l.dir/optiga-trust-x/optiga/comms/ifx_i2c/ifx_i2c_transport_layer.c.o\n[ 68%] Building C object CMakeFiles/optigatrust-i2c-linux-armv7l.dir/optiga-trust-x/optiga/dtls/AlertProtocol.c.o\n[ 70%] Building C object CMakeFiles/optigatrust-i2c-linux-armv7l.dir/optiga-trust-x/optiga/dtls/DtlsFlightHandler.c.o\n[ 72%] Building C object CMakeFiles/optigatrust-i2c-linux-armv7l.dir/optiga-trust-x/optiga/dtls/DtlsHandshakeProtocol.c.o\n[ 73%] Building C object CMakeFiles/optigatrust-i2c-linux-armv7l.dir/optiga-trust-x/optiga/dtls/DtlsRecordLayer.c.o\n[ 75%] Building C object CMakeFiles/optigatrust-i2c-linux-armv7l.dir/optiga-trust-x/optiga/dtls/DtlsTransportLayer.c.o\n[ 77%] Building C object CMakeFiles/optigatrust-i2c-linux-armv7l.dir/optiga-trust-x/optiga/dtls/DtlsWindowing.c.o\n[ 78%] Building C object CMakeFiles/optigatrust-i2c-linux-armv7l.dir/optiga-trust-x/optiga/dtls/HardwareCrypto.c.o\n[ 80%] Building C object CMakeFiles/optigatrust-i2c-linux-armv7l.dir/optiga-trust-x/optiga/dtls/MessageLayer.c.o\n[ 81%] Building C object CMakeFiles/optigatrust-i2c-linux-armv7l.dir/optiga-trust-x/optiga/dtls/OCP.c.o\n[ 83%] Building C object CMakeFiles/optigatrust-i2c-linux-armv7l.dir/optiga-trust-x/optiga/dtls/OCPConfig.c.o\n[ 85%] Building C object CMakeFiles/optigatrust-i2c-linux-armv7l.dir/optiga-trust-x/optiga_trust_init.c.o\n[ 86%] Building C object CMakeFiles/optigatrust-i2c-linux-armv7l.dir/optiga-trust-x/optiga/comms/optiga_comms.c.o\n[ 88%] Building C object CMakeFiles/optigatrust-i2c-linux-armv7l.dir/optiga-trust-x/pal/linux/pal.c.o\n[ 90%] Building C object CMakeFiles/optigatrust-i2c-linux-armv7l.dir/optiga-trust-x/pal/linux/pal_gpio.c.o\n[ 91%] Building C object CMakeFiles/optigatrust-i2c-linux-armv7l.dir/optiga-trust-x/pal/linux/pal_i2c.c.o\n[ 93%] Building C object CMakeFiles/optigatrust-i2c-linux-armv7l.dir/optiga-trust-x/pal/linux/target/rpi3/pal_ifx_i2c_config.c.o\n[ 95%] Building C object CMakeFiles/optigatrust-i2c-linux-armv7l.dir/optiga-trust-x/pal/linux/pal_os_event.c.o\n[ 96%] Building C object CMakeFiles/optigatrust-i2c-linux-armv7l.dir/optiga-trust-x/pal/linux/pal_os_lock.c.o\n[ 98%] Building C object CMakeFiles/optigatrust-i2c-linux-armv7l.dir/optiga-trust-x/pal/linux/pal_os_timer.c.o\n[100%] Linking C shared library ../lib/liboptigatrust-i2c-linux-armv7l.so\n[100%] Built target optigatrust-i2c-linux-armv7l\n```\n
\n\n## Development\n\nExisting releases can be found at https://pypi.org/project/optigatrust/.\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/infineon/python-optiga-trust", "keywords": "ECDHE ECDSA RSA ECC X509 NISTP256 NIST384 OPTIGA TRUST TRUSTX TRUSTM", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "optigatrust", "package_url": "https://pypi.org/project/optigatrust/", "platform": "", "project_url": "https://pypi.org/project/optigatrust/", "project_urls": { "Homepage": "https://github.com/infineon/python-optiga-trust" }, "release_url": "https://pypi.org/project/optigatrust/0.4.7/", "requires_dist": [ "asn1crypto ; python_version < \"4\"" ], "requires_python": ">=3.5", "summary": "The ctypes Python wrapper for the Infineon OPTIGA(TM) Trust family of security solutions", "version": "0.4.7" }, "last_serial": 5650190, "releases": { "0.3.11": [ { "comment_text": "", "digests": { "md5": "106ed1bd1fe0253ec225c8de7d5bdef8", "sha256": "ee74f2a43a88194bd03e5663be5217e0e42e9b1c47a08945bfd977bf7df71ebf" }, "downloads": -1, "filename": "optigatrust-0.3.11-py3-none-any.whl", "has_sig": false, "md5_digest": "106ed1bd1fe0253ec225c8de7d5bdef8", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 246496, "upload_time": "2019-06-03T12:21:57", "url": "https://files.pythonhosted.org/packages/1a/94/e39f889efc1279fec30e487316df1d63cea306544f0e511cd3e75fab2bc2/optigatrust-0.3.11-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a5e435800248f76aef98a8ff883be154", "sha256": "cbe1f5e77a8a53dece33041b1a252a5a738723e2f8a2c99e22cf96cc33fcef4e" }, "downloads": -1, "filename": "optigatrust-0.3.11.tar.gz", "has_sig": false, "md5_digest": "a5e435800248f76aef98a8ff883be154", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 16815, "upload_time": "2019-06-03T12:21:59", "url": "https://files.pythonhosted.org/packages/99/5b/5f9dba20417849fbea7c211bc86d12384ce2f14739bb6b052a3742002588/optigatrust-0.3.11.tar.gz" } ], "0.3.12": [ { "comment_text": "", "digests": { "md5": "29af4ee05b92dff88cd5ab20b1a9cf72", "sha256": "659ed2f80c3442722fc76d6a01876d97ca6bb0a8a7955460628a877115970357" }, "downloads": -1, "filename": "optigatrust-0.3.12-py3-none-any.whl", "has_sig": false, "md5_digest": "29af4ee05b92dff88cd5ab20b1a9cf72", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 246510, "upload_time": "2019-06-04T14:58:03", "url": "https://files.pythonhosted.org/packages/01/56/49e44f1e2bd08446fb4ab4aec3c4e50e0790ee85c7ca752df821cd0950be/optigatrust-0.3.12-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c333669dc6e17263139e552cb01e073c", "sha256": "57acad9418d59a81b292372f78babfe5f1d9f8454a982f7b1c3f5d3643eb9f5f" }, "downloads": -1, "filename": "optigatrust-0.3.12.tar.gz", "has_sig": false, "md5_digest": "c333669dc6e17263139e552cb01e073c", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 16830, "upload_time": "2019-06-04T14:58:05", "url": "https://files.pythonhosted.org/packages/11/ca/e584cba4974af4a33ead920b4bf206115898c2c36864b0901dabe15f4380/optigatrust-0.3.12.tar.gz" } ], "0.3.15": [ { "comment_text": "", "digests": { "md5": "0cbc9222b49024388e02b7eb40f7a2ef", "sha256": "8e15240eab6da679bd7a25eecf1eca99e61eeb0e85f2c45c7dfe73c306c26f4a" }, "downloads": -1, "filename": "optigatrust-0.3.15-py3-none-any.whl", "has_sig": false, "md5_digest": "0cbc9222b49024388e02b7eb40f7a2ef", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 246538, "upload_time": "2019-06-05T11:49:10", "url": "https://files.pythonhosted.org/packages/e7/df/2cb99e140f33468494653289e93c2a553a26acb4cbc816f45e85479ee942/optigatrust-0.3.15-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d4d63aa826c083d93ab883847b629d4d", "sha256": "0252ad7fe86b76f8077b08086c0535e1a0d081788af43e08bdcc4a0a4d6ab76e" }, "downloads": -1, "filename": "optigatrust-0.3.15.tar.gz", "has_sig": false, "md5_digest": "d4d63aa826c083d93ab883847b629d4d", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 16866, "upload_time": "2019-06-05T11:49:12", "url": "https://files.pythonhosted.org/packages/eb/05/4e143b0928de0cc1bcc41b759ae8ab8a51e8927b2e05dc3c2a8c16246c6d/optigatrust-0.3.15.tar.gz" } ], "0.3.17": [ { "comment_text": "", "digests": { "md5": "e2e790604fa744c26935ceb2bdd75f88", "sha256": "c6e6197dbf70868b88ac5afe434936724e9152cb2ea30be47578fe4e2ffbd5cb" }, "downloads": -1, "filename": "optigatrust-0.3.17-py3-none-any.whl", "has_sig": false, "md5_digest": "e2e790604fa744c26935ceb2bdd75f88", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 246536, "upload_time": "2019-06-05T12:08:53", "url": "https://files.pythonhosted.org/packages/a3/fc/7dccae6c0cc549ccc0ea4d4cb470b3b1235d07895b6585c1291cbc8ea89a/optigatrust-0.3.17-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "47d439a63f2c93c9386be019a444fcc6", "sha256": "e121c96c4585e184f0e29a2a5b989bd9b773305455b028071b240a84abaa72bc" }, "downloads": -1, "filename": "optigatrust-0.3.17.tar.gz", "has_sig": false, "md5_digest": "47d439a63f2c93c9386be019a444fcc6", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 16856, "upload_time": "2019-06-05T12:08:56", "url": "https://files.pythonhosted.org/packages/d8/08/b2f830a3c34b0fbc6878988374bdbaf95e150900f451e2fe2014c1c919dc/optigatrust-0.3.17.tar.gz" } ], "0.3.3": [ { "comment_text": "", "digests": { "md5": "505b82ad6e16ea954e424601a7794c60", "sha256": "e304c381cf81f6bbe13123a1b72c8b0eae587c0b8072549209f87fe2cd905f27" }, "downloads": -1, "filename": "optigatrust-0.3.3-py3-none-any.whl", "has_sig": false, "md5_digest": "505b82ad6e16ea954e424601a7794c60", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 244206, "upload_time": "2019-05-31T11:36:31", "url": "https://files.pythonhosted.org/packages/1f/4e/d88fa080f579026307c72e142f925725a1eb6360348180ba7b01998bb3c8/optigatrust-0.3.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "fa03d592284d0668ff01f902ecd5b51b", "sha256": "4d463d0b2bb8078722de02f2ff504debbd719f2ff1cdf71921875d5a71983d56" }, "downloads": -1, "filename": "optigatrust-0.3.3.tar.gz", "has_sig": false, "md5_digest": "fa03d592284d0668ff01f902ecd5b51b", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 15751, "upload_time": "2019-05-31T11:36:34", "url": "https://files.pythonhosted.org/packages/a4/49/f52f1f232be29e0f474a60a628a9407689d23f9e24d912d397dc8c87a73f/optigatrust-0.3.3.tar.gz" } ], "0.3.4": [ { "comment_text": "", "digests": { "md5": "1b35072ca9f67ee81fabc2c8e4eb0a91", "sha256": "eefb985a457a1b5ba4c3e1188d25f4b929281a4859aea77bbff62718ca5bce94" }, "downloads": -1, "filename": "optigatrust-0.3.4-py3-none-any.whl", "has_sig": false, "md5_digest": "1b35072ca9f67ee81fabc2c8e4eb0a91", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 244271, "upload_time": "2019-05-31T11:45:27", "url": "https://files.pythonhosted.org/packages/d8/fe/ab34be447a57a68840aa05338d950d9f959d987f1637e87b951cb9e4b3ab/optigatrust-0.3.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0734f1c9a49f59fe0ea57930eb5f7c00", "sha256": "fdb0aee75cb2d3ee68580165054a9b57e62b0231684ebff2e63a26fe7a886a16" }, "downloads": -1, "filename": "optigatrust-0.3.4.tar.gz", "has_sig": false, "md5_digest": "0734f1c9a49f59fe0ea57930eb5f7c00", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 15837, "upload_time": "2019-05-31T11:45:30", "url": "https://files.pythonhosted.org/packages/74/8d/f2b474309c5b4eabe0c7ab0b1175a9bf3c13377a0c2ac3f28836a8aebf17/optigatrust-0.3.4.tar.gz" } ], "0.3.5": [ { "comment_text": "", "digests": { "md5": "40d3cfba5f2d016e5614480dd7a98e08", "sha256": "d4afffe5c3771f895039ec7c3df479bb140178f38ae89dd72508bf7a964c8e1d" }, "downloads": -1, "filename": "optigatrust-0.3.5-py3-none-any.whl", "has_sig": false, "md5_digest": "40d3cfba5f2d016e5614480dd7a98e08", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 244206, "upload_time": "2019-05-31T11:51:54", "url": "https://files.pythonhosted.org/packages/0f/f5/e52b291a8d1328c3b74c7d1e1023ac4a9470f7e6207042a8e756c5966601/optigatrust-0.3.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5b72c1ac5b629061a2b04e1e614f1f11", "sha256": "56076e109643286617ca1b04acba40e28af6cc224420704b3b54b810cb039ae6" }, "downloads": -1, "filename": "optigatrust-0.3.5.tar.gz", "has_sig": false, "md5_digest": "5b72c1ac5b629061a2b04e1e614f1f11", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 15703, "upload_time": "2019-05-31T11:51:56", "url": "https://files.pythonhosted.org/packages/8a/a2/6728e9a572d14f9c4c88f0a744d5ba578612226903d0434e38d04fe8139c/optigatrust-0.3.5.tar.gz" } ], "0.3.6": [ { "comment_text": "", "digests": { "md5": "5e679fcae7a2be02eff6e779e2d060d7", "sha256": "fc66d4774b9ca626e0cd5fbe7903c8a80306486520a76382587d107aa022aee7" }, "downloads": -1, "filename": "optigatrust-0.3.6-py3-none-any.whl", "has_sig": false, "md5_digest": "5e679fcae7a2be02eff6e779e2d060d7", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 244178, "upload_time": "2019-05-31T11:57:27", "url": "https://files.pythonhosted.org/packages/a1/f2/7f5f47a9f07f7ab287d3e17e56cdc42931ad1ab9ac2caca594eb17fe17b8/optigatrust-0.3.6-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "37c7c07aad99457128644dc00a269c44", "sha256": "75098fffa8ff15a9465548f79391a598787f044a28cb54c59d7f1535177c83f8" }, "downloads": -1, "filename": "optigatrust-0.3.6.tar.gz", "has_sig": false, "md5_digest": "37c7c07aad99457128644dc00a269c44", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 15635, "upload_time": "2019-05-31T11:57:28", "url": "https://files.pythonhosted.org/packages/8d/15/d45806e2184232e55868132354d3fe9fa43d8cbbcb48b206a6197212ed2a/optigatrust-0.3.6.tar.gz" } ], "0.3.7": [ { "comment_text": "", "digests": { "md5": "a3d4086e66e1f9fa741ad24bd39f1914", "sha256": "106e66e8a3da6258afd3191f771e065a03b35eee52a7238ea4230a2b54076794" }, "downloads": -1, "filename": "optigatrust-0.3.7-py3-none-any.whl", "has_sig": false, "md5_digest": "a3d4086e66e1f9fa741ad24bd39f1914", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 244174, "upload_time": "2019-05-31T12:17:42", "url": "https://files.pythonhosted.org/packages/6d/33/75c06b711e931bb340d8e593e293b7507ea3fade6cf76390eefd26680644/optigatrust-0.3.7-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "53e90b515686cbdb1111b30a014f060a", "sha256": "09cdbad7e2a4741eaf77071b535672b47c4ef47136613abaed10bb98f08f25ea" }, "downloads": -1, "filename": "optigatrust-0.3.7.tar.gz", "has_sig": false, "md5_digest": "53e90b515686cbdb1111b30a014f060a", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 15630, "upload_time": "2019-05-31T12:17:44", "url": "https://files.pythonhosted.org/packages/e4/7f/1709f04c22e8d098e744cfe9298b6f924fcae2c8f11d92199f80e3a5712d/optigatrust-0.3.7.tar.gz" } ], "0.3.8": [ { "comment_text": "", "digests": { "md5": "2215a528dbafb2d82a43ec945a42348a", "sha256": "622844d55c52a1715e78a07f801e3e2ffbfa8cee98a296b456880f4da9092cb2" }, "downloads": -1, "filename": "optigatrust-0.3.8-py3-none-any.whl", "has_sig": false, "md5_digest": "2215a528dbafb2d82a43ec945a42348a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 244182, "upload_time": "2019-05-31T12:20:37", "url": "https://files.pythonhosted.org/packages/4e/33/fb1744c5d066c64b566332ee48480b745721c7c962bb730bce1f17a9a8a8/optigatrust-0.3.8-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "50e9aab758e325b826ce3160c1f48832", "sha256": "34642fef94b59fcff00eb6eefcaa3b4459d16aa2ebc650c9c622378276a5f1cd" }, "downloads": -1, "filename": "optigatrust-0.3.8.tar.gz", "has_sig": false, "md5_digest": "50e9aab758e325b826ce3160c1f48832", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 15623, "upload_time": "2019-05-31T12:20:39", "url": "https://files.pythonhosted.org/packages/37/18/410019478e3e944cd5bd00afab4d4da0f070f5309b234e104d171a8a1d16/optigatrust-0.3.8.tar.gz" } ], "0.4.3": [ { "comment_text": "", "digests": { "md5": "b5e55414fda1823e6fbb2410cbc214c5", "sha256": "ef7f53a314aed864c39cf246fc2c8e78a49a4e0d0bcefcc435b249f88e7a1e53" }, "downloads": -1, "filename": "optigatrust-0.4.3-py3-none-any.whl", "has_sig": false, "md5_digest": "b5e55414fda1823e6fbb2410cbc214c5", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 188115, "upload_time": "2019-07-16T12:47:32", "url": "https://files.pythonhosted.org/packages/52/da/d9997c9ff7a72fbefb88ff0a9dd38acb125e25b3e15d241a4f42e705b5e7/optigatrust-0.4.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "08009d82382a17085c0228bc90a652ad", "sha256": "ef44ea738602ce80093b7f03349a1074879bc0cde64ed1c7dd75a5e429b98591" }, "downloads": -1, "filename": "optigatrust-0.4.3.tar.gz", "has_sig": false, "md5_digest": "08009d82382a17085c0228bc90a652ad", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 17143, "upload_time": "2019-07-16T12:47:34", "url": "https://files.pythonhosted.org/packages/ce/6c/f9cb85fc63ff40cd0d66e5c833005aee3bce80e134dfb36b9330d31fe7eb/optigatrust-0.4.3.tar.gz" } ], "0.4.4": [ { "comment_text": "", "digests": { "md5": "6a2c0d3b017be8fee9f761cb97990e53", "sha256": "de9e33219bb6d732b680d5f85558ac7e5e43c18ac565392f83cb96fb0e86c7ab" }, "downloads": -1, "filename": "optigatrust-0.4.4-py3-none-any.whl", "has_sig": false, "md5_digest": "6a2c0d3b017be8fee9f761cb97990e53", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 189199, "upload_time": "2019-07-16T13:21:16", "url": "https://files.pythonhosted.org/packages/bb/f9/cb4b8f3fde3b1fc949e1c97ccacfb0eaf0bd34727f8a48ab67c8c86be41f/optigatrust-0.4.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c0c7e9cea67722c0fcaf5a082c5d5ab9", "sha256": "2ae05ab1904afdcfbe3740e5fc6f3c110662199f4e795f880e7430a9f3a249c6" }, "downloads": -1, "filename": "optigatrust-0.4.4.tar.gz", "has_sig": false, "md5_digest": "c0c7e9cea67722c0fcaf5a082c5d5ab9", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 19640, "upload_time": "2019-07-16T13:21:18", "url": "https://files.pythonhosted.org/packages/36/a7/ce878cc866655fe12873de21f81da030c841045e6fdb8a705476d32d4a3b/optigatrust-0.4.4.tar.gz" } ], "0.4.5": [ { "comment_text": "", "digests": { "md5": "dc6d56ad65c04fc81bd6b4d1bb0e6ef3", "sha256": "91f5756058c25a8c6f4b8ea04f984f980082d4e603e371f76fbd8886940f1dc7" }, "downloads": -1, "filename": "optigatrust-0.4.5-py3-none-any.whl", "has_sig": false, "md5_digest": "dc6d56ad65c04fc81bd6b4d1bb0e6ef3", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 189292, "upload_time": "2019-07-16T13:50:16", "url": "https://files.pythonhosted.org/packages/3d/3f/e2517e65003d514066597d002e3c393ffda3e6bf71a188b094cf1a7f1832/optigatrust-0.4.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "78f344fb2e55cfde646284fb385773f1", "sha256": "e05952011d8ae8ab48d1f4b0166c819bb6633d137f9c91921d9acf32fd8a3499" }, "downloads": -1, "filename": "optigatrust-0.4.5.tar.gz", "has_sig": false, "md5_digest": "78f344fb2e55cfde646284fb385773f1", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 19741, "upload_time": "2019-07-16T13:50:19", "url": "https://files.pythonhosted.org/packages/1a/55/4e6ed873779fd9e42f183bc438660d5bcb29822b792ca5b8842b2bf6aa7e/optigatrust-0.4.5.tar.gz" } ], "0.4.6": [ { "comment_text": "", "digests": { "md5": "b5c0f577e50a30ca15defb478e8d5202", "sha256": "b65476584359090746c74bb9f63a77bd9dfaee8c547be2535cd934d545da3ce0" }, "downloads": -1, "filename": "optigatrust-0.4.6.tar.gz", "has_sig": false, "md5_digest": "b5c0f577e50a30ca15defb478e8d5202", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 19613, "upload_time": "2019-08-06T14:10:15", "url": "https://files.pythonhosted.org/packages/9c/25/4872a92bcee3334231dc43f19e032676125913c0f1911e867bdadd046339/optigatrust-0.4.6.tar.gz" } ], "0.4.7": [ { "comment_text": "", "digests": { "md5": "9642772ea11fb44dc32b0164bd512162", "sha256": "c051a275f083625cdfa53b38d158b33ac48d6c31e0143c27d36c9cabce4c3c5d" }, "downloads": -1, "filename": "optigatrust-0.4.7-py3-none-any.whl", "has_sig": false, "md5_digest": "9642772ea11fb44dc32b0164bd512162", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 189101, "upload_time": "2019-08-08T13:38:12", "url": "https://files.pythonhosted.org/packages/07/8f/b2f72a25ef229f3e9de6f1e5ac2d682354a790536f2680073f7ac03b330b/optigatrust-0.4.7-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0ac4ed174a5dfcc8ba3775524167e987", "sha256": "e735511a2de6bb60560967158e20044c376e6456f7b869e93737973a25a85665" }, "downloads": -1, "filename": "optigatrust-0.4.7.tar.gz", "has_sig": false, "md5_digest": "0ac4ed174a5dfcc8ba3775524167e987", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 19897, "upload_time": "2019-08-08T13:38:15", "url": "https://files.pythonhosted.org/packages/42/f3/571de878b1adf055e8ec1e56f63beaac0ec08049459df95b4764bda2fbb2/optigatrust-0.4.7.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "9642772ea11fb44dc32b0164bd512162", "sha256": "c051a275f083625cdfa53b38d158b33ac48d6c31e0143c27d36c9cabce4c3c5d" }, "downloads": -1, "filename": "optigatrust-0.4.7-py3-none-any.whl", "has_sig": false, "md5_digest": "9642772ea11fb44dc32b0164bd512162", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 189101, "upload_time": "2019-08-08T13:38:12", "url": "https://files.pythonhosted.org/packages/07/8f/b2f72a25ef229f3e9de6f1e5ac2d682354a790536f2680073f7ac03b330b/optigatrust-0.4.7-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0ac4ed174a5dfcc8ba3775524167e987", "sha256": "e735511a2de6bb60560967158e20044c376e6456f7b869e93737973a25a85665" }, "downloads": -1, "filename": "optigatrust-0.4.7.tar.gz", "has_sig": false, "md5_digest": "0ac4ed174a5dfcc8ba3775524167e987", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 19897, "upload_time": "2019-08-08T13:38:15", "url": "https://files.pythonhosted.org/packages/42/f3/571de878b1adf055e8ec1e56f63beaac0ec08049459df95b4764bda2fbb2/optigatrust-0.4.7.tar.gz" } ] }