{
"info": {
"author": "James Barclay",
"author_email": "jbarclay@duo.com",
"bugtrack_url": null,
"classifiers": [
"Intended Audience :: Developers",
"License :: OSI Approved :: BSD License",
"Programming Language :: Python"
],
"description": "PyWebAuthn\n==========\n\n\n.. image:: https://img.shields.io/pypi/v/webauthn.svg\n :target: https://pypi.python.org/pypi/webauthn\n :alt: PyPI\n\n\n.. image:: https://img.shields.io/badge/license-BSD-blue.svg\n :target: https://raw.githubusercontent.com/duo-labs/py_webauthn/master/LICENSE\n :alt: GitHub license\n\n\nPyWebAuthn is a Python module which can be used to handle `WebAuthn `_ registration and assertion. Currently, WebAuthn is supported in `Firefox `_\\ , `Chrome `_\\ , and `Edge `_.\n\nInstallation\n============\n\n``pip install webauthn``\n\nUsage\n=====\n\nGenerating credential options, (to be passed to ``navigator.credentials.create``\\ ):\n\n.. code-block:: python\n\n make_credential_options = webauthn.WebAuthnMakeCredentialOptions(\n challenge,\n rp_name,\n rp_id,\n user_id,\n username,\n display_name,\n icon_url)\n\nCreating a ``WebAuthnUser`` object. Used during the assertion (login) process:\n\n.. code-block:: python\n\n webauthn_user = webauthn.WebAuthnUser(\n user.id,\n user.username,\n user.display_name,\n user.icon_url,\n user.credential_id,\n user.pub_key,\n user.sign_count,\n user.rp_id)\n\nGenerating assertion options, (to be passed to ``navigator.credentials.get``\\ ):\n\n.. code-block:: python\n\n webauthn_assertion_options = webauthn.WebAuthnAssertionOptions(\n webauthn_user,\n challenge)\n\nVerifying a registration response, (result of ``navigator.credentials.create``\\ ):\n\n.. code-block:: python\n\n webauthn_registration_response = webauthn.WebAuthnRegistrationResponse(\n RP_ID,\n ORIGIN,\n registration_response,\n challenge,\n trust_anchor_dir,\n trusted_attestation_cert_required,\n self_attestation_permitted,\n none_attestation_permitted,\n uv_required=False) # User Verification\n\n try:\n webauthn_credential = webauthn_registration_response.verify()\n except Exception as e:\n return jsonify({'fail': 'Registration failed. Error: {}'.format(e)})\n\n # Create User\n\nVerifying an assertion response, (result of ``navigator.credentials.get``\\ ):\n\n.. code-block:: python\n\n webauthn_user = webauthn.WebAuthnUser(\n user.ukey,\n user.username,\n user.display_name,\n user.icon_url,\n user.credential_id,\n user.pub_key,\n user.sign_count,\n user.rp_id)\n\n webauthn_assertion_response = webauthn.WebAuthnAssertionResponse(\n webauthn_user,\n assertion_response,\n challenge,\n origin,\n uv_required=False) # User Verification\n\n try:\n sign_count = webauthn_assertion_response.verify()\n except Exception as e:\n return jsonify({'fail': 'Assertion failed. Error: {}'.format(e)})\n\n # Update counter.\n user.sign_count = sign_count\n\nFlask Demo\n==========\n\nThere is a `Flask `_ demo available in the ``flask_demo`` directory. Follow these steps to run the Flask web app:\n\n\n#. ``cd flask_demo``\n#. ``pip install -r requirements.txt``\n#. ``python create_db.py``\n#. ``python app.py``\n#. Go to `https://localhost:5000 `_ in your web browser. Try registering and logging in with a compatible U2F or WebAuthn authenticator.\n#. Profit?\n\nFlask Demo (Docker)\n===================\n\nTo run the `Flask `_ demo with `Docker `_\\ :\n\n\n#. Install Docker.\n#. ``docker-compose up -d``\n#. Go to `https://localhost:5000 `_ in your web browser. Try registering and logging in with a compatible U2F or WebAuthn authenticator.\n\nNote\n====\n\nCurrently, PyWebAuthn does not support performing the following verifications.\n\n\n* `Token Binding ID `_\n* `Authenticator Extensions `_",
"description_content_type": "",
"docs_url": null,
"download_url": "https://github.com/duo-labs/py_webauthn/archive/0.4.5.tar.gz",
"downloads": {
"last_day": -1,
"last_month": -1,
"last_week": -1
},
"home_page": "https://github.com/duo-labs/py_webauthn",
"keywords": "",
"license": "BSD",
"maintainer": "",
"maintainer_email": "",
"name": "webauthn",
"package_url": "https://pypi.org/project/webauthn/",
"platform": "",
"project_url": "https://pypi.org/project/webauthn/",
"project_urls": {
"Download": "https://github.com/duo-labs/py_webauthn/archive/0.4.5.tar.gz",
"Homepage": "https://github.com/duo-labs/py_webauthn"
},
"release_url": "https://pypi.org/project/webauthn/0.4.5/",
"requires_dist": null,
"requires_python": "",
"summary": "A WebAuthn Python module.",
"version": "0.4.5"
},
"last_serial": 5821345,
"releases": {
"0.1": [
{
"comment_text": "",
"digests": {
"md5": "d320a6633b491c35a04fe4472cdd00ad",
"sha256": "44fd5616d50733a4089c3cbc2fd55f04c98e32880526550958509a52d61b601b"
},
"downloads": -1,
"filename": "webauthn-0.1.tar.gz",
"has_sig": false,
"md5_digest": "d320a6633b491c35a04fe4472cdd00ad",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 57353,
"upload_time": "2018-03-05T20:14:16",
"url": "https://files.pythonhosted.org/packages/cd/e6/7b8815f88686f39bab9b53696122d130b96ca9972b0e1733acd038030adb/webauthn-0.1.tar.gz"
}
],
"0.2": [
{
"comment_text": "",
"digests": {
"md5": "631aa413c33c4da6dab64b572deadf14",
"sha256": "cd0db6ea6fe6fb20b64d0006bc098e2e26c8f7c9b08f713577a3e252d918010f"
},
"downloads": -1,
"filename": "webauthn-0.2.tar.gz",
"has_sig": false,
"md5_digest": "631aa413c33c4da6dab64b572deadf14",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 50293,
"upload_time": "2018-03-05T20:46:30",
"url": "https://files.pythonhosted.org/packages/1b/74/245cbc85781ac4c1fd6a29967763cbdbaaf55c5a8f2a16e0e89629734224/webauthn-0.2.tar.gz"
}
],
"0.3": [
{
"comment_text": "",
"digests": {
"md5": "22ba112e2437ff8ad0bf29c92603be6b",
"sha256": "1653a3ff732daa591d38e25d90fa2f90fa43224dd79b7b8aad57f22e1d163a2b"
},
"downloads": -1,
"filename": "webauthn-0.3.tar.gz",
"has_sig": false,
"md5_digest": "22ba112e2437ff8ad0bf29c92603be6b",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 50482,
"upload_time": "2018-03-06T21:44:12",
"url": "https://files.pythonhosted.org/packages/22/39/381a33ed5d28019e002e85118942b570b0e0b71377005cf1871e9037382f/webauthn-0.3.tar.gz"
}
],
"0.3.1": [
{
"comment_text": "",
"digests": {
"md5": "9132d0765a6236c938f94893caceb5f7",
"sha256": "0e61ab1e537a0f9be491e352009b3453e535d0875d1717c3c5cad721e3b95ab6"
},
"downloads": -1,
"filename": "webauthn-0.3.1.tar.gz",
"has_sig": false,
"md5_digest": "9132d0765a6236c938f94893caceb5f7",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 53406,
"upload_time": "2018-11-02T03:27:52",
"url": "https://files.pythonhosted.org/packages/a7/93/613d8f52e65dc528243277be453f577dab9c427ce027f0bf3f44e9f39e7b/webauthn-0.3.1.tar.gz"
}
],
"0.4": [
{
"comment_text": "",
"digests": {
"md5": "41c67fe2bc0c5a7783514540f3a1c379",
"sha256": "4e256c83f17e82d32309b46f00bcf4add58fe88bc4bb2abc08059ef111671f30"
},
"downloads": -1,
"filename": "webauthn-0.4.tar.gz",
"has_sig": false,
"md5_digest": "41c67fe2bc0c5a7783514540f3a1c379",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 54798,
"upload_time": "2018-11-30T23:43:14",
"url": "https://files.pythonhosted.org/packages/e3/8c/8242dd44661a59e7fdc183d54bf761aa39eb0f09bf82661320ecd75cb7fb/webauthn-0.4.tar.gz"
}
],
"0.4.2": [
{
"comment_text": "",
"digests": {
"md5": "c24636398de7f9ca26facc961034c475",
"sha256": "b862c3b4ea52362ba9b57656ccf30e8e7c38a5f3351da3c60a9b80778b89eeb5"
},
"downloads": -1,
"filename": "webauthn-0.4.2.tar.gz",
"has_sig": false,
"md5_digest": "c24636398de7f9ca26facc961034c475",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 54775,
"upload_time": "2019-02-08T17:54:19",
"url": "https://files.pythonhosted.org/packages/3f/32/fac0fa02e59cda6ff9350b778f2c5d3b272c56ac1b78059a895c82dd91ec/webauthn-0.4.2.tar.gz"
}
],
"0.4.5": [
{
"comment_text": "",
"digests": {
"md5": "6126f9e3da8ae077c839e1ee9dba6b57",
"sha256": "db0bfc8b74896e209bfb290815c0a563f785ec5be321e1db17e9ac627ec3562f"
},
"downloads": -1,
"filename": "webauthn-0.4.5.tar.gz",
"has_sig": false,
"md5_digest": "6126f9e3da8ae077c839e1ee9dba6b57",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 59824,
"upload_time": "2019-06-05T02:13:25",
"url": "https://files.pythonhosted.org/packages/86/30/8522e16b96445d4ab517f67f507dca17e123ff543e99f42aa98315b9bc0a/webauthn-0.4.5.tar.gz"
}
]
},
"urls": [
{
"comment_text": "",
"digests": {
"md5": "6126f9e3da8ae077c839e1ee9dba6b57",
"sha256": "db0bfc8b74896e209bfb290815c0a563f785ec5be321e1db17e9ac627ec3562f"
},
"downloads": -1,
"filename": "webauthn-0.4.5.tar.gz",
"has_sig": false,
"md5_digest": "6126f9e3da8ae077c839e1ee9dba6b57",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 59824,
"upload_time": "2019-06-05T02:13:25",
"url": "https://files.pythonhosted.org/packages/86/30/8522e16b96445d4ab517f67f507dca17e123ff543e99f42aa98315b9bc0a/webauthn-0.4.5.tar.gz"
}
]
}