{ "info": { "author": "Daniel Roos", "author_email": "daniel@roos.io", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 3" ], "description": "# pySafetyNet-Attestation\n\nA package for verifying JWS-attestations from Google's SafetyNet.\n\n## Introduction\n\nThis package verifies [SafetyNet attestations](https://developer.android.com/training/safetynet/) by following the steps described on the page. It allows you to specify what parts of the JWS-body you wish to verify, but will always atleast verify the certificate and validity of the JWS.\n\n\n## Usage\n\n### Online verification\n\n```python\nfrom safetynet_attestation import Attestation\n\njws_token = \"...\"\napi_key = \"...\"\n\nattestation = Attestation(jws_token)\nattestation.verify_online(api_key)\n```\n\n**`verify_online` takes the following optional parameters:**\n\n* `url=\"\"`\n\t* If you for some reason wish to validate against some other url.\n\n`` can be found at [Google's SafetyNet documentation](https://developer.android.com/training/safetynet/).\n\n### Offline verification\n\n```python\nfrom safetynet_attestation import Attestation\n\n\njws_token = \"...\"\n\nattestation = Attestation(jws_token)\nattestation.verify_offline()\n```\n\n**`verify_offline` takes the following optional parameters:**\n\n* `apkPackageName=None`\n\n* `nonce=None`\n\n* `apkDigestSha256=None`\n\t* `str` of hex-values.\n\n* `apkCertificateDigestSha256=None`\n\t* Can be `list` of `str` or `str`.\n\n* `check_basicIntegrity=True`\n\n* `check_ctsProfileMatch=True`\n\n* `hostname=\"attest.android.com\"`\n\t* Used for TLS validation of the certificate. Only modify if you know what you are doing.\n\nA full explanation of the parameters above can be found at [Google's SafetyNet documentation](https://developer.android.com/training/safetynet/)\n\nOnce a token has been verified, the following fields can be used:\n\n* `header`\n\t* A `dict`of the token's header.\n\n* `body`\n\t* A `dict` of the token's body.\n\n* `certificates`\n\t* A `list`of base64-decoded certificates present in the `header`.\n\n* `public_key_pem`\n\t* The public key of the certificate.\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/RoosDaniel/SafetyNet-Attestation", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "pySafetyNet-Attestation", "package_url": "https://pypi.org/project/pySafetyNet-Attestation/", "platform": "", "project_url": "https://pypi.org/project/pySafetyNet-Attestation/", "project_urls": { "Homepage": "https://github.com/RoosDaniel/SafetyNet-Attestation" }, "release_url": "https://pypi.org/project/pySafetyNet-Attestation/0.0.5/", "requires_dist": [ "pyOpenSSL", "certvalidator", "jwcrypto", "requests" ], "requires_python": "", "summary": "Verify JWS-attestations from Google's SafetyNet.", "version": "0.0.5" }, "last_serial": 4319746, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "5fd8b784b2bb68b2d53f1cedbc863e63", "sha256": "828ef2fd9d10ae5daa117999355dcbcfbd6f6f0674893c6bebdf2c0d0f12822e" }, "downloads": -1, "filename": "pySafetyNet_Attestation-0.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "5fd8b784b2bb68b2d53f1cedbc863e63", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 3116, "upload_time": "2018-09-27T22:13:11", "url": "https://files.pythonhosted.org/packages/ee/e5/c497bb17a2ce8de7c7af00cca9025d8479787a0e89a6643d8e14a6d1cc35/pySafetyNet_Attestation-0.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c73e193dcd56df4368ae08d22cc86b6f", "sha256": "c25d2450ce6a8d16b42de5254c0697cecc1dd3b562a3f12b8f1609ca203fc2e7" }, "downloads": -1, "filename": "pySafetyNet-Attestation-0.0.1.tar.gz", "has_sig": false, "md5_digest": "c73e193dcd56df4368ae08d22cc86b6f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2423, "upload_time": "2018-09-27T22:13:12", "url": "https://files.pythonhosted.org/packages/99/14/1ac98d3c60b390dfc35efea464b67adc4cbe3eed46af399b19ebd809fa9f/pySafetyNet-Attestation-0.0.1.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "3e6cf1278f648b9be4d09fb9669fd19d", "sha256": "58622cc6bbfcffc4f073c9d929d0fbd653684cd33639899521477a0f4231e3a2" }, "downloads": -1, "filename": "pySafetyNet_Attestation-0.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "3e6cf1278f648b9be4d09fb9669fd19d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 3146, "upload_time": "2018-09-27T22:15:41", "url": "https://files.pythonhosted.org/packages/87/cd/40626eebd301be901a06e78570d872f14122695526f50dc437359f6524b3/pySafetyNet_Attestation-0.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9aa5e5ac0605879f61f2aaa5090a71bd", "sha256": "dc93d91a6a52f070d1a15d9d34117eb83b59020289f574e3298f4e6522646173" }, "downloads": -1, "filename": "pySafetyNet-Attestation-0.0.2.tar.gz", "has_sig": false, "md5_digest": "9aa5e5ac0605879f61f2aaa5090a71bd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2430, "upload_time": "2018-09-27T22:15:43", "url": "https://files.pythonhosted.org/packages/ab/af/88bae400c3fa91d901436d00bf042216cd3ce4b090ab49b2333a484c85a9/pySafetyNet-Attestation-0.0.2.tar.gz" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "60d66e2ea3925b9e3842db199d1ae76b", "sha256": "689e80f05674635e38042e7976486e46c983b47f213ae68d6e4b92dcb99d8faf" }, "downloads": -1, "filename": "pySafetyNet_Attestation-0.0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "60d66e2ea3925b9e3842db199d1ae76b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 3857, "upload_time": "2018-09-28T11:05:15", "url": "https://files.pythonhosted.org/packages/7a/7c/316131e7d5760b2c9cb78d360b277d8fb61b6db19b337f08fbee48287ccc/pySafetyNet_Attestation-0.0.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "50b00b3a14556bd1162f4f4c715a5f1a", "sha256": "50889c410339571fe8611803a91c4c5a7037730f61316c7e7faeac41b156d3b0" }, "downloads": -1, "filename": "pySafetyNet-Attestation-0.0.3.tar.gz", "has_sig": false, "md5_digest": "50b00b3a14556bd1162f4f4c715a5f1a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3242, "upload_time": "2018-09-28T11:05:17", "url": "https://files.pythonhosted.org/packages/8e/8c/fcd42b7b10971f4128e76dcc01004306eda7be2d1e62ef5695ca36041cab/pySafetyNet-Attestation-0.0.3.tar.gz" } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "881bcc086ec5dcb61fbadbe9d540bb33", "sha256": "4aa80a4c9f1e9cdbb73b5a9ce00f4d01b0a83672a96ff80b45679b93b1a92f89" }, "downloads": -1, "filename": "pySafetyNet_Attestation-0.0.4-py3-none-any.whl", "has_sig": false, "md5_digest": "881bcc086ec5dcb61fbadbe9d540bb33", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 3915, "upload_time": "2018-09-28T11:44:46", "url": "https://files.pythonhosted.org/packages/4a/9e/5478f507e976a847e50a74db069d972b219ba60960f5591723ea90f404d0/pySafetyNet_Attestation-0.0.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4116cc05f1e83c3e84aee02f3bc6c9e2", "sha256": "c7144d72ad5f87db0665b928a22af454710e9845ecf8f5714c8a783169a54639" }, "downloads": -1, "filename": "pySafetyNet-Attestation-0.0.4.tar.gz", "has_sig": false, "md5_digest": "4116cc05f1e83c3e84aee02f3bc6c9e2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3341, "upload_time": "2018-09-28T11:44:50", "url": "https://files.pythonhosted.org/packages/f9/09/4288e212974f4af9bae92937e4d26e8236f26551de47866262e0dc640c6b/pySafetyNet-Attestation-0.0.4.tar.gz" } ], "0.0.5": [ { "comment_text": "", "digests": { "md5": "3b8d126a3ef61aa591d6beff771b2a07", "sha256": "d40a28ecd0ce30cc376b0a2a088a4f8445ec2e7bf6b07d665d6c901e18723602" }, "downloads": -1, "filename": "pySafetyNet_Attestation-0.0.5-py3-none-any.whl", "has_sig": false, "md5_digest": "3b8d126a3ef61aa591d6beff771b2a07", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 3918, "upload_time": "2018-09-28T11:46:50", "url": "https://files.pythonhosted.org/packages/c0/7b/87d8b8abcd5ebd8ca664101ee115c915b2b063602cd7e864065373328c62/pySafetyNet_Attestation-0.0.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f8ab1585c840dde8874a1ac5ee844ae6", "sha256": "ce9e9da79f4d9e58b2e0fbe929d44df01ac5417562f4fe59beb65b16c286a066" }, "downloads": -1, "filename": "pySafetyNet-Attestation-0.0.5.tar.gz", "has_sig": false, "md5_digest": "f8ab1585c840dde8874a1ac5ee844ae6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3343, "upload_time": "2018-09-28T11:46:54", "url": "https://files.pythonhosted.org/packages/ca/42/1fa921784ae67db70a54e295ef0e137ffa57bd634b9a7dec5b5cde860b78/pySafetyNet-Attestation-0.0.5.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "3b8d126a3ef61aa591d6beff771b2a07", "sha256": "d40a28ecd0ce30cc376b0a2a088a4f8445ec2e7bf6b07d665d6c901e18723602" }, "downloads": -1, "filename": "pySafetyNet_Attestation-0.0.5-py3-none-any.whl", "has_sig": false, "md5_digest": "3b8d126a3ef61aa591d6beff771b2a07", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 3918, "upload_time": "2018-09-28T11:46:50", "url": "https://files.pythonhosted.org/packages/c0/7b/87d8b8abcd5ebd8ca664101ee115c915b2b063602cd7e864065373328c62/pySafetyNet_Attestation-0.0.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f8ab1585c840dde8874a1ac5ee844ae6", "sha256": "ce9e9da79f4d9e58b2e0fbe929d44df01ac5417562f4fe59beb65b16c286a066" }, "downloads": -1, "filename": "pySafetyNet-Attestation-0.0.5.tar.gz", "has_sig": false, "md5_digest": "f8ab1585c840dde8874a1ac5ee844ae6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3343, "upload_time": "2018-09-28T11:46:54", "url": "https://files.pythonhosted.org/packages/ca/42/1fa921784ae67db70a54e295ef0e137ffa57bd634b9a7dec5b5cde860b78/pySafetyNet-Attestation-0.0.5.tar.gz" } ] }