{ "info": { "author": "Peter Scott", "author_email": "peter@cueup.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "License :: OSI Approved :: Apache Software License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 3", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: PyPy", "Topic :: Security", "Topic :: Security :: Cryptography" ], "description": "Constant-time string comparison\n-------------------------------\n\nSometimes you need to test strings for equality with an algorithm whose timing depends\nonly on the length of the strings, and not on the contents of the strings themselves. If\none of those strings is of constant width -- an\n`HMAC `_, for example -- then it becomes a constant-time\noperation. This can be used to prevent some `timing side-channel\nattacks `_, such as `the critical vulnerability\nfound in KeyCzar back in 2009 `_.\n\nThis module offers a single function, ``equals(x, y)``, which takes two strings ``x`` and\n``y`` and returns ``True`` if they are equal, and ``False`` if they are not. The time\nthis function takes does not depend on what specific bytes are in these strings. Unicode\nstrings are encoded as UTF-8 before being compared; it is recommended that you only use\nthis on byte strings (``str`` in Python 2, ``bytes`` in Python 3).\n\nThis works with Python 2 and 3, and PyPy. The license is Apache 2.0.", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/PeterScott/streql", "keywords": null, "license": "Apache", "maintainer": null, "maintainer_email": null, "name": "streql", "package_url": "https://pypi.org/project/streql/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/streql/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/PeterScott/streql" }, "release_url": "https://pypi.org/project/streql/3.0.2/", "requires_dist": null, "requires_python": null, "summary": "Constant-time string comparison", "version": "3.0.2" }, "last_serial": 721895, "releases": { "1.0": [ { "comment_text": "", "digests": { "md5": "6a863df3b72ecf3ac435bd7949a5d29f", "sha256": "584c20a6a4e78d1af347026a5db1e8d4e6790d5e24b2ea23adb5e7e2930077a1" }, "downloads": -1, "filename": "streql-1.0.tar.gz", "has_sig": false, "md5_digest": "6a863df3b72ecf3ac435bd7949a5d29f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1937, "upload_time": "2013-03-27T21:15:17", "url": "https://files.pythonhosted.org/packages/34/bb/e4921162de2138f2574047f6ab8f2dc5a9f6edddd9085887e3fe4760a5c5/streql-1.0.tar.gz" } ], "2.0": [ { "comment_text": "", "digests": { "md5": "873d4be9c274ddf4160b167e86e1577b", "sha256": "4d8efad72a94dc76e8c81a49bf7f944a744948d2df8788d315869e5791d411cc" }, "downloads": -1, "filename": "streql-2.0.tar.gz", "has_sig": false, "md5_digest": "873d4be9c274ddf4160b167e86e1577b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2456, "upload_time": "2013-05-17T21:14:39", "url": "https://files.pythonhosted.org/packages/c4/60/20c07b130d5511350d1d3f951c4f8cf902ff23eef14460f432f16b286d93/streql-2.0.tar.gz" } ], "2.0.1": [ { "comment_text": "", "digests": { "md5": "2eda0c8c0a0480df0c67fb4caff38dd9", "sha256": "a050ea01a0461d45670b2c32b56e4d291fa00de8b97f0242edbcb335f245ccf3" }, "downloads": -1, "filename": "streql-2.0.1.tar.gz", "has_sig": false, "md5_digest": "2eda0c8c0a0480df0c67fb4caff38dd9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2555, "upload_time": "2013-05-17T21:51:29", "url": "https://files.pythonhosted.org/packages/21/f8/02069c0c754fd79efdad11604b9a471601f4882d7e2065d4b7f066058dd4/streql-2.0.1.tar.gz" } ], "3.0.1": [ { "comment_text": "", "digests": { "md5": "675a2f2f02293256e29be52d5cc2ef78", "sha256": "226667c6582dcf2efb808ac758e01bbc5ac5c66f452ce9a46a3ec627846c3340" }, "downloads": -1, "filename": "streql-3.0.1.tar.gz", "has_sig": false, "md5_digest": "675a2f2f02293256e29be52d5cc2ef78", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2883, "upload_time": "2013-05-17T22:18:26", "url": "https://files.pythonhosted.org/packages/e0/5a/71625482e0b5506729bd18352c82a7d0662680efb4dfb4d0efaad146d975/streql-3.0.1.tar.gz" } ], "3.0.2": [ { "comment_text": "", "digests": { "md5": "7afb84687fed6e848383fc4ce51dfb47", "sha256": "54231c479871f0d347aa740cd6273602a4dcdf4191209495afffbadf5f585935" }, "downloads": -1, "filename": "streql-3.0.2.tar.gz", "has_sig": false, "md5_digest": "7afb84687fed6e848383fc4ce51dfb47", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2917, "upload_time": "2013-05-21T00:34:11", "url": "https://files.pythonhosted.org/packages/9a/a4/b3e7012e4f98d8063327273af748249caf36d8b190ab55840a7ceea97bd4/streql-3.0.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "7afb84687fed6e848383fc4ce51dfb47", "sha256": "54231c479871f0d347aa740cd6273602a4dcdf4191209495afffbadf5f585935" }, "downloads": -1, "filename": "streql-3.0.2.tar.gz", "has_sig": false, "md5_digest": "7afb84687fed6e848383fc4ce51dfb47", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2917, "upload_time": "2013-05-21T00:34:11", "url": "https://files.pythonhosted.org/packages/9a/a4/b3e7012e4f98d8063327273af748249caf36d8b190ab55840a7ceea97bd4/streql-3.0.2.tar.gz" } ] }