{ "info": { "author": "Luke Macken", "author_email": "lmacken@redhat.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "License :: OSI Approved :: MIT License", "Programming Language :: Python", "Programming Language :: Python :: 3", "Topic :: Scientific/Engineering :: Mathematics" ], "description": "Tools for utilizing the ANU Quantum Random Numbers Server\n=========================================================\n\nThis project provides tools for interacting with The ANU Quantum Random\nNumber Generator (`qrng.anu.edu.au `_). It\ncommunicates with their JSON API and provides a ``qrandom`` command-line\ntool, a Python API, and a Linux ``/dev/qrandom`` character device.\n\nquantumrandom works on Python 2 and 3.\n\n.. note:: As of version 1.7, quantumrandom now uses SSL/TLS by default.\n\nInstalling\n----------\n\n::\n\n pip install quantumrandom\n\nCommand-line tool\n-----------------\n\n::\n\n $ qrandom --int --min 5 --max 15\n 7\n $ qrandom --binary\n \ufffd\ufffd\ufffdI\ufffd%\ufffd\ufffde(\ufffd1\ufffd\ufffdc\ufffd\ufffdEe\ufffd4\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffdj\ufffd\u053f\ufffd\ufffd=\ufffd^H\ufffdc\ufffdu\n oq\ufffd\ufffdG\ufffd\ufffdZ\ufffd^\ufffd\ufffd\ufffdfK\ufffd0_\ufffd\ufffdh\ufffd\ufffds\ufffdb\ufffd\ufffdAE=\ufffdrR~\ufffd\ufffd\ufffd(\ufffd^Q\ufffd)4\ufffd\ufffd{c\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffdX{f\ufffd\ufffda\ufffdBk\ufffdN%#W\n +a\ufffda\u0319\ufffdIB\ufffd,S\ufffd!\ua014d\ufffd2H~\ufffdX\ufffdZ\ufffd\ufffd\ufffd\ufffdR\ufffd\ufffd.f\n ...\n $ qrandom --hex\n 1dc59fde43b5045120453186d45653dd455bd8e6fc7d8c591f0018fa9261ab2835eb210e8\n e267cf35a54c02ce2a93b3ec448c4c7aa84fdedb61c7b0d87c9e7acf8e9fdadc8d68bcaa5a\n ...\n $ qrandom --binary | dd of=data\n ^C1752+0 records in\n 1752+0 records out\n 897024 bytes (897 kB) copied, 77.7588 s, 11.5 kB/s\n\n\nCreating /dev/qrandom\n---------------------\n\nquantumrandom comes equipped with a multi-threaded character device in\nuserspace. When read from, this device fires up a bunch of threads to\nfetch data. Not only can you utilize this as a rng, but you can also feed\nthis data back into your system's entropy pool.\n\nIn order to build it's dependencies, you'll need the following packages\ninstalled: svn gcc-c++ fuse-devel gccxml libattr-devel. On Fedora 17 and\nnewer, you'll also need the kernel-modules-extra package installed for the\ncuse module.\n\n.. note:: The /dev/qrandom character device currently only supports Python2\n\n::\n\n pip install ctypeslib hg+https://cusepy.googlecode.com/hg\n sudo modprobe cuse\n sudo chmod 666 /dev/cuse\n qrandom-dev\n sudo chmod 666 /dev/qrandom\n\nBy default it will use 3 threads, which can be changed by passing '-t #' into the qrandom-dev.\n\nTesting the randomness for `FIPS 140-2 `_ compliance\n----------------------------------------------------------------------------------------------\n\n::\n\n $ cat /dev/qrandom | rngtest --blockcount=1000\n rngtest: bits received from input: 20000032\n rngtest: FIPS 140-2 successes: 1000\n rngtest: FIPS 140-2 failures: 0\n rngtest: FIPS 140-2(2001-10-10) Monobit: 0\n rngtest: FIPS 140-2(2001-10-10) Poker: 0\n rngtest: FIPS 140-2(2001-10-10) Runs: 0\n rngtest: FIPS 140-2(2001-10-10) Long run: 0\n rngtest: FIPS 140-2(2001-10-10) Continuous run: 0\n rngtest: input channel speed: (min=17.696; avg=386.711; max=4882812.500)Kibits/s\n rngtest: FIPS tests speed: (min=10.949; avg=94.538; max=161.640)Mibits/s\n rngtest: Program run time: 50708319 microseconds\n\nAdding entropy to the Linux random number generator\n---------------------------------------------------\n\n::\n\n sudo rngd --rng-device=/dev/qrandom --random-device=/dev/random --timeout=5 --foreground\n\nMonitoring your available entropy levels\n----------------------------------------\n\n::\n\n watch -n 1 cat /proc/sys/kernel/random/entropy_avail\n\nPython API\n----------\n\nThe quantumrandom Python module contains a low-level ``get_data``\nfunction, which is modelled after the ANU Quantum Random Number\nGenerator's JSON API. It returns variable-length lists of either\n``uint16`` or ``hex16`` data.\n\n::\n\n >>> quantumrandom.get_data()\n [26646]\n >>> quantumrandom.get_data(data_type='uint16', array_length=5)\n [42796, 32457, 9242, 11316, 21078]\n >>> quantumrandom.get_data(data_type='hex16', array_length=5, block_size=2)\n ['f1d5', '0eb3', '1119', '7cfd', '64ce']\n\nValid ``data_type`` values are ``uint16`` and ``hex16``, and the\n``array_length`` and ``block_size`` cannot be larger than ``1024``. If for some\nreason the API call is not successful, or the incorrect amount of data is\nreturned from the server, this function will raise an exception.\n\nBased on this ``get_data`` function, quantumrandom also provides a bunch\nof higher-level helper functions that make easy to perform a variety of\ntasks.\n\n::\n\n >>> quantumrandom.randint(0, 20)\n 5\n >>> quantumrandom.hex()[:10]\n '8272613343'\n >>> quantumrandom.binary()[0]\n '\\xa5'\n >>> len(quantumrandom.binary())\n 10000\n >>> quantumrandom.uint16()\n numpy.array([24094, 13944, 22109, 22908, 34878, 33797, 47221, 21485, 37930, ...], dtype=numpy.uint16)\n >>> quantumrandom.uint16().data[:10]\n '\\x87\\x7fY.\\xcc\\xab\\xea\\r\\x1c`'", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://github.com/lmacken/quantumrandom", "keywords": "quantum random", "license": "MIT", "maintainer": null, "maintainer_email": null, "name": "quantumrandom", "package_url": "https://pypi.org/project/quantumrandom/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/quantumrandom/", "project_urls": { "Download": "UNKNOWN", "Homepage": "http://github.com/lmacken/quantumrandom" }, "release_url": "https://pypi.org/project/quantumrandom/1.9.0/", "requires_dist": null, "requires_python": null, "summary": "A Python interface to the ANU Quantum Random Numbers Server", "version": "1.9.0" }, "last_serial": 798353, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "b1d5c012abec1f93c3a4846b44d72976", "sha256": "c5aecdce6da790bc97961ff403079cbd830c5c0d18723657925f27aaf4474f46" }, "downloads": -1, "filename": "quantumrandom-0.1.tar.gz", "has_sig": false, "md5_digest": "b1d5c012abec1f93c3a4846b44d72976", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2111, "upload_time": "2012-04-15T17:24:17", "url": "https://files.pythonhosted.org/packages/16/52/24c7035da5cf5d39b369011b5390c088fa8ed3dfb888257ae0fc899ba201/quantumrandom-0.1.tar.gz" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "e6e46ef902c493e7a1b2cf65f9a83d03", "sha256": "627ba663b94e0de415ff27aac7bc0c0ae1824b90a0c0db4682cee958e8ad71d6" }, "downloads": -1, "filename": "quantumrandom-0.2.tar.gz", "has_sig": false, "md5_digest": "e6e46ef902c493e7a1b2cf65f9a83d03", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2253, "upload_time": "2012-04-15T21:23:10", "url": "https://files.pythonhosted.org/packages/91/7b/64582878b2dbc5ac665996f3432328203e7ecd93a2624f3b79ec0f7955e5/quantumrandom-0.2.tar.gz" } ], "1.0": [ { "comment_text": "", "digests": { "md5": "f0d3fa863e20bac21f5d4a52dba55a26", "sha256": "c5961cd6dc34ec1ca88923552829f7c191402cc6d9fccc71c12848c6301b6c91" }, "downloads": -1, "filename": "quantumrandom-1.0.tar.gz", "has_sig": false, "md5_digest": "f0d3fa863e20bac21f5d4a52dba55a26", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2404, "upload_time": "2012-04-17T22:23:54", "url": "https://files.pythonhosted.org/packages/34/8e/f0b0d797e09bd1c7a41fd0be5dc524182cd628b754880789af29dfa1115e/quantumrandom-1.0.tar.gz" } ], "1.1": [ { "comment_text": "", "digests": { "md5": "90483928b96fd8443a39325ca8d708f4", "sha256": "5157137146d705f39aec20cc8cefc24ea0916eb8d2beab374c870b0e337e89a1" }, "downloads": -1, "filename": "quantumrandom-1.1.tar.gz", "has_sig": false, "md5_digest": "90483928b96fd8443a39325ca8d708f4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2577, "upload_time": "2012-04-18T16:45:50", "url": "https://files.pythonhosted.org/packages/01/41/10821f524092947952debb8aa66760430b8d8d7622c4c255762d9c6c69be/quantumrandom-1.1.tar.gz" } ], "1.2": [ { "comment_text": "", "digests": { "md5": "9943f5433162136df122a8ad0a89ddae", "sha256": "4bcd1f753c94aa8e4e9dacdcbbb15b188df3bb345e908a12b70ea61fc93f6390" }, "downloads": -1, "filename": "quantumrandom-1.2.tar.gz", "has_sig": false, "md5_digest": "9943f5433162136df122a8ad0a89ddae", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2735, "upload_time": "2012-04-19T01:00:28", "url": "https://files.pythonhosted.org/packages/0a/96/9dc85f232005caf3ffe64cebb2cc6645d9aabe32b5bebe354057ffd00735/quantumrandom-1.2.tar.gz" } ], "1.3": [ { "comment_text": "", "digests": { "md5": "13811e4548cc0e0d967a8d8a2c23f02d", "sha256": "2d1d8c0bcf4be76616e169bd5000b99d454d363d310bef5c855bd8b7ba7d3465" }, "downloads": -1, "filename": "quantumrandom-1.3.tar.gz", "has_sig": false, "md5_digest": "13811e4548cc0e0d967a8d8a2c23f02d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2748, "upload_time": "2012-04-19T01:22:18", "url": "https://files.pythonhosted.org/packages/74/29/10bb7cf908a0a7eee25e0bdc7ad2907ddb20e870eba3fdf7cb65464768ef/quantumrandom-1.3.tar.gz" } ], "1.4": [ { "comment_text": "", "digests": { "md5": "f8e8294d2be75e428e6c019e8a997e09", "sha256": "44b95437fda6469603ea0dd72dac28b29a94fdee32d7cd3087f4b771d8acac91" }, "downloads": -1, "filename": "quantumrandom-1.4.tar.gz", "has_sig": false, "md5_digest": "f8e8294d2be75e428e6c019e8a997e09", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7007, "upload_time": "2012-04-21T18:27:33", "url": "https://files.pythonhosted.org/packages/a7/20/18284d07263fc7a886a18605f69e6e3bb3fb2d7070ac8b63146a66939c69/quantumrandom-1.4.tar.gz" } ], "1.5": [ { "comment_text": "", "digests": { "md5": "b2bcd491e94451b4c24f5a0a8b764865", "sha256": "397c31851b00c34582bf16f2652d341609145ec4d68f8f48e840863039dbae8c" }, "downloads": -1, "filename": "quantumrandom-1.5.tar.gz", "has_sig": false, "md5_digest": "b2bcd491e94451b4c24f5a0a8b764865", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7007, "upload_time": "2012-04-22T21:07:25", "url": "https://files.pythonhosted.org/packages/13/13/8bfc0d0d3d30a771e02de7dbbaa432b50e618b6142b47685042526b203b5/quantumrandom-1.5.tar.gz" } ], "1.6": [ { "comment_text": "", "digests": { "md5": "fbcdb320e819f211cc2875e7aaf15509", "sha256": "6426d4d77af02e2f8eee3749fa873634a320215e3c24df5eb4d1a8d53a602b5e" }, "downloads": -1, "filename": "quantumrandom-1.6.tar.gz", "has_sig": false, "md5_digest": "fbcdb320e819f211cc2875e7aaf15509", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7116, "upload_time": "2012-04-30T19:55:42", "url": "https://files.pythonhosted.org/packages/98/3b/a010d8c4a3616b9cfd3d37aa4525c5d2a58f45b674a55e6336d0d7e4aab2/quantumrandom-1.6.tar.gz" } ], "1.7": [ { "comment_text": "", "digests": { "md5": "c0c81040d57678bcfef3077aa35a6a80", "sha256": "9749d5e8e22b5e5e13da5800e9822aa4a1aea9271bf1fc37e1d0db3dbe6a0ea8" }, "downloads": -1, "filename": "quantumrandom-1.7.tar.bz2", "has_sig": false, "md5_digest": "c0c81040d57678bcfef3077aa35a6a80", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7663, "upload_time": "2012-05-04T05:42:00", "url": "https://files.pythonhosted.org/packages/7e/21/7b3103f63ae2a08f90e6bd8dfa8913569e5f3bec59a6119f845ba4754da1/quantumrandom-1.7.tar.bz2" } ], "1.8": [ { "comment_text": "", "digests": { "md5": "d3713f27d9ea3562cd7fe6ac8a8d53e8", "sha256": "2f0dc55e470c57e908f1a1cf510a29fe43cd707fa74defbb48d1c0af58585594" }, "downloads": -1, "filename": "quantumrandom-1.8.tar.gz", "has_sig": false, "md5_digest": "d3713f27d9ea3562cd7fe6ac8a8d53e8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7324, "upload_time": "2012-11-17T17:50:33", "url": "https://files.pythonhosted.org/packages/c2/7f/dddaa881feb6a4124bb345c01a1bf5b03b4ce6701dbc6b46d7ccc20899c4/quantumrandom-1.8.tar.gz" } ], "1.9.0": [ { "comment_text": "", "digests": { "md5": "146423b60e87c7e5918928d3b26cf840", "sha256": "f41a0aac1fcd3eae621f252f2ae18031c684142d72ce202a766d18b6f40ddf3d" }, "downloads": -1, "filename": "quantumrandom-1.9.0.tar.gz", "has_sig": false, "md5_digest": "146423b60e87c7e5918928d3b26cf840", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7648, "upload_time": "2013-03-17T22:24:27", "url": "https://files.pythonhosted.org/packages/86/7b/9184990c06acee61e6a3e4b1be207bc588814df1fad526aeba764a31acfa/quantumrandom-1.9.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "146423b60e87c7e5918928d3b26cf840", "sha256": "f41a0aac1fcd3eae621f252f2ae18031c684142d72ce202a766d18b6f40ddf3d" }, "downloads": -1, "filename": "quantumrandom-1.9.0.tar.gz", "has_sig": false, "md5_digest": "146423b60e87c7e5918928d3b26cf840", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7648, "upload_time": "2013-03-17T22:24:27", "url": "https://files.pythonhosted.org/packages/86/7b/9184990c06acee61e6a3e4b1be207bc588814df1fad526aeba764a31acfa/quantumrandom-1.9.0.tar.gz" } ] }