{ "info": { "author": "Guy K. Kloss", "author_email": "guy@mysinglesource.io", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: Apache Software License", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Topic :: Utilities" ], "description": "SingleSource Python SDK\n=======================\n\nThe high level software development kit (SDK) to participate in the\ndecentralised SingleSource identity eco-system in Python.\n\n\nOverview\n--------\n\nHigh level helpers available for:\n\n* Identity Request Service (`idrs`) - Support for generating ephemeral\n encryption key pairs (X25519 ECDH), messaging service topics and\n serialisation/deserialisation of these.\n* Attestations (`attestations`) - Making (foreign) claim sets and\n making attestations on them.\n\n\nInstallation\n------------\n\nTo install use pip:\n\n $ pip install pysinglesource\n\n\nOr clone the repo:\n\n $ git clone git@bitbucket.org:mysinglesource/pysinglesource.git\n $ python setup.py install\n\nSet up and activate for Python 3:\n\n virtualenv ${HOME}/.virtualenvs/pysinglesource \\\n --system-site-packages --python=/usr/bin/python3\n source ${HOME}/.virtualenvs/pysinglesource/bin/activate\n\nInstall required packages:\n\n pip install -e .\n\nFor installing the additional development, testing or documentation\ndependencies, add a qualifier with one or more of these commands:\n\n pip install -e .[dev] # Development dependencies\n pip install -e .[test] # Testing dependencies\n pip install -e .[dev,test] # All dependencies together\n\n\nUsage\n-----\n\n### Identity Request Service Handler\n\nWhen using the ID Request Service to create well-formed (selective\ndisclosure) requests, usually also a messaging service is used in\nconjunction. Due to the sensitive nature, responses usually need to be\nend-to-end encrypted, as the messaging service is not under the user's\ncontrol.\n\nFor this purpose an 'ephemeral handler' is available. It will generate\nan ephemeral encryption key pair as well as a suitable messaging\nservice topic. The ephemeral handler can be serialised and\ndeserialised at ease to be persisted using strings (e.g. in any used\nDB system).\n\nNotes:\n\n- The handler is supposed to be unguessable and for single-use and a\n particular purpose on the messaging service only. After completion,\n a new handler is to be used.\n- The serialised data is confidential and needs to be protected. It\n **MUST NOT** leak out, or the communication can be retrospectively\n decrypted by anybody who has intercepted the message and this\n serialised handler.\n\nA receiving side would continuously poll on the messaging service\n(e.g. every 2 seconds) using the handler's topic, checking for a\nsubmitted response. The message returned then would contain encrypted\ncontent, for which the ephemeral (private) key is required to access\nit. Therefore, it makes sense to store the messaging service `topic`\nunder an indexed field, and the serialised handler value in the same\nrecord.\n\n```python\nfrom singlesource import EphemeralHandler\n\nhandler = EphemeralHandler()\n\n# Get the messaging topic for the Identity Request Service.\ntopic = handler.messaging_topic\n# Get the serialised handler for storage (with the topic) in a DB.\nserialised_data = handler.serialise()\n\n# After receiving a response message with encrypted content, use the\n# serialised handler to re-build it.\nhandler = EphemeralHandler(serialised_data)\n# Get the encryption JWK object for use with encrypted message data.\njwk = handler.jwk\n```\n\n\nContributing\n------------\n\nTBD\n\n\nExample\n-------\n\nTBD\n\n\n## Licence\n\nCopyright 2018-2019 by SingleSource Limited, Auckland, New Zealand\n\nThis work is licensed under the Apache 2.0 open source licence.\nTerms and conditions apply.\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://bitbucket.org/mysinglesource/pysinglesource.git", "keywords": "singlesource blockchain data kauri kauriid identity self-sovereign jose jwt jws jwe jwk", "license": "Apache License 2.0", "maintainer": "", "maintainer_email": "", "name": "pysinglesource", "package_url": "https://pypi.org/project/pysinglesource/", "platform": "", "project_url": "https://pypi.org/project/pysinglesource/", "project_urls": { "Homepage": "https://bitbucket.org/mysinglesource/pysinglesource.git" }, "release_url": "https://pypi.org/project/pysinglesource/0.1.3/", "requires_dist": [ "pykauriid (>=0.3.0)", "base58", "requests", "bumpversion ; extra == 'dev'", "flake8 ; extra == 'dev'", "flake8-docstrings ; extra == 'dev'", "pep8-naming ; extra == 'dev'", "flake8-bugbear ; extra == 'dev'", "pypi-publisher ; extra == 'dev'", "pre-commit ; extra == 'dev'", "nose2 ; extra == 'test'", "nose2-cov ; extra == 'test'" ], "requires_python": "", "summary": "The high level software development kit (SDK) to participate in the decentralised SingleSource identity eco-system in Python.", "version": "0.1.3" }, "last_serial": 5310222, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "7362893d6a3e57488d77987305ff6f6b", "sha256": "fd127f53b2f6effe4e68a6f6908cd387a38206b3ee1ca1864fd0dd30c354f59f" }, "downloads": -1, "filename": "pysinglesource-0.0.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "7362893d6a3e57488d77987305ff6f6b", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 11846, "upload_time": "2019-04-08T04:45:02", "url": "https://files.pythonhosted.org/packages/83/93/983f8e76a34b0b6fd9118c5849708db880215e014ceb4a11bb78068d5527/pysinglesource-0.0.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "057fba9a235a2f6f2203f95a0659b842", "sha256": "d2f067a39a1c92daad052e5dd3bf79da0acc6d60e684c21d886d4c75d48ce030" }, "downloads": -1, "filename": "pysinglesource-0.0.1.tar.gz", "has_sig": false, "md5_digest": "057fba9a235a2f6f2203f95a0659b842", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6789, "upload_time": "2019-04-08T04:45:05", "url": "https://files.pythonhosted.org/packages/ab/34/05cfd2624344e515e45a46cdefe238c717d9caf3938a30c9bec59ccc4f03/pysinglesource-0.0.1.tar.gz" } ], "0.1.0": [ { "comment_text": "", "digests": { "md5": "81ea618240dfe937701fc19842384d5e", "sha256": "8452653ad0c6aea84090485e8e9e1510d552c26c981e725187419f00db078d5c" }, "downloads": -1, "filename": "pysinglesource-0.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "81ea618240dfe937701fc19842384d5e", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 22584, "upload_time": "2019-05-17T03:18:03", "url": "https://files.pythonhosted.org/packages/b7/35/1aaef884edfafa633e07c444eb1064f2fc3efe35b7f55f128950bba30aef/pysinglesource-0.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5a4b627b6485987266f5e0ab355d8b8c", "sha256": "dff0dc60ee16478d5142eaae68f9e9b6fad3fe27d0339eeb6c77f8d5eb4556c9" }, "downloads": -1, "filename": "pysinglesource-0.1.0.tar.gz", "has_sig": false, "md5_digest": "5a4b627b6485987266f5e0ab355d8b8c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13367, "upload_time": "2019-05-17T03:18:05", "url": "https://files.pythonhosted.org/packages/9d/14/3364ae494d3b5312319851250c2e47e3f07c98894df616c012353179287f/pysinglesource-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "591d36e83d726bb6c8cc7365469fe019", "sha256": "02050cb42686c0b3d536a205eb1ab5daebaf91604e4ad5a61a1126765e6cb76c" }, "downloads": -1, "filename": "pysinglesource-0.1.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "591d36e83d726bb6c8cc7365469fe019", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 22614, "upload_time": "2019-05-17T05:36:08", "url": "https://files.pythonhosted.org/packages/02/a8/f88b115cc6ef0de58bb27edb81b0e69c8bdd4b8b433fc1b450ad395adc9d/pysinglesource-0.1.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "74136340a559f8b1a2e33625d9c50e4f", "sha256": "a221299ff288decb16639e2d2ae60e04cb336e664500ae9f0a4a911e9214c99d" }, "downloads": -1, "filename": "pysinglesource-0.1.1.tar.gz", "has_sig": false, "md5_digest": "74136340a559f8b1a2e33625d9c50e4f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13400, "upload_time": "2019-05-17T05:36:09", "url": "https://files.pythonhosted.org/packages/84/77/4f1c08bc7e829e69c6fb1c741948533f91933676a24a05cb23c5e156b49e/pysinglesource-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "3c661cda8eb27901cdf3cfbb061f8843", "sha256": "f476d231c000e40be8ccb617588f0c373e6adb29f0cf104a8b5151af902d09c5" }, "downloads": -1, "filename": "pysinglesource-0.1.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "3c661cda8eb27901cdf3cfbb061f8843", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 24309, "upload_time": "2019-05-23T23:32:46", "url": "https://files.pythonhosted.org/packages/f3/e6/783ec968d814427dfffb2bb1c767800bc08f1cc58cd4ee81b0a6a5a3bcad/pysinglesource-0.1.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0eee572bf7b2224ff5fe41bd674b3631", "sha256": "989531851e1d515195820e80674ebcb14d0a2143b416405d336733ea10197f0f" }, "downloads": -1, "filename": "pysinglesource-0.1.2.tar.gz", "has_sig": false, "md5_digest": "0eee572bf7b2224ff5fe41bd674b3631", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14811, "upload_time": "2019-05-23T23:32:48", "url": "https://files.pythonhosted.org/packages/0f/b9/53e3601ebf199f948204342e64627cccfda296d2f2d5157ebe840322b289/pysinglesource-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "2333beb693e3cc25998419aa30aa0cfa", "sha256": "b2735e52ee0f374274e3b3808847cc4986c3b36357454965a7c2ac9093c97756" }, "downloads": -1, "filename": "pysinglesource-0.1.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "2333beb693e3cc25998419aa30aa0cfa", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 24301, "upload_time": "2019-05-24T01:45:36", "url": "https://files.pythonhosted.org/packages/f2/22/a78833866a97928f41b1a8099dbbab27ccf5cb15ad2491761c37514738c6/pysinglesource-0.1.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "22cfe66c590629dfc060a0f5936cc415", "sha256": "f55711edfadc28f4aa514067fc94d56c923fca828d7b10adc3b5da50c9aa2830" }, "downloads": -1, "filename": "pysinglesource-0.1.3.tar.gz", "has_sig": false, "md5_digest": "22cfe66c590629dfc060a0f5936cc415", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14806, "upload_time": "2019-05-24T01:45:38", "url": "https://files.pythonhosted.org/packages/c7/dd/3bad46db19f3a45d030b23b92efff7ad96f64a876397de0945d1d799b2d5/pysinglesource-0.1.3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "2333beb693e3cc25998419aa30aa0cfa", "sha256": "b2735e52ee0f374274e3b3808847cc4986c3b36357454965a7c2ac9093c97756" }, "downloads": -1, "filename": "pysinglesource-0.1.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "2333beb693e3cc25998419aa30aa0cfa", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 24301, "upload_time": "2019-05-24T01:45:36", "url": "https://files.pythonhosted.org/packages/f2/22/a78833866a97928f41b1a8099dbbab27ccf5cb15ad2491761c37514738c6/pysinglesource-0.1.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "22cfe66c590629dfc060a0f5936cc415", "sha256": "f55711edfadc28f4aa514067fc94d56c923fca828d7b10adc3b5da50c9aa2830" }, "downloads": -1, "filename": "pysinglesource-0.1.3.tar.gz", "has_sig": false, "md5_digest": "22cfe66c590629dfc060a0f5936cc415", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14806, "upload_time": "2019-05-24T01:45:38", "url": "https://files.pythonhosted.org/packages/c7/dd/3bad46db19f3a45d030b23b92efff7ad96f64a876397de0945d1d799b2d5/pysinglesource-0.1.3.tar.gz" } ] }