# cryptomite
`cryptomite` is a modular, extensible high-level Python library
for randomness extractions, created by Quantinuum's Quantum Cryptography team.
At a high level, the library offers state-of-the-art randomness extractors that are easy to use, optimized and numerically precise
providing a trade-off of features that suits numerous practical use cases today.
The performance critical parts of the library (e.g. NTT) are implemented in C++, but the rest of the
library (e.g. parameter estimation) is implemented in Python for accessibility and ease of installation.
The package is available for Python 3.8 and higher on Mac, Windows and Linux. To install, type:
```bash
pip install cryptomite
```
## Example Usage
```python
from cryptomite.trevisan import Trevisan
from random import randint
n, m, max_eps = 1000, 200, 0.01
ext = Trevisan(n, m, max_eps)
input_bits = [randint(0, 1) for _ in range(n)]
seed_bits = [randint(0, 1) for _ in range(ext.ext.get_seed_length())]
output_bits = ext.extract(input_bits, seed_bits)
```
## Documentation
To build the docs, run
```bash
cd docs
pip install -r requirements.txt
make clean
make html
```
## Testing
Install `pytest`, then run `pytest test`.
To run the C++ tests, run
```bash
cmake .
make
test/runTest
```
Raw data
{
"_id": null,
"home_page": "",
"name": "cryptomite",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": "",
"keywords": "quantum,quantum computing",
"author": "Cambridge Quantum",
"author_email": "qcrypto@cambridgequantum.com",
"download_url": "",
"platform": null,
"description": "# cryptomite\n\n`cryptomite` is a modular, extensible high-level Python library \nfor randomness extractions, created by Quantinuum's Quantum Cryptography team. \nAt a high level, the library offers state-of-the-art randomness extractors that are easy to use, optimized and numerically precise\nproviding a trade-off of features that suits numerous practical use cases today.\n\nThe performance critical parts of the library (e.g. NTT) are implemented in C++, but the rest of the\nlibrary (e.g. parameter estimation) is implemented in Python for accessibility and ease of installation.\n\nThe package is available for Python 3.8 and higher on Mac, Windows and Linux. To install, type:\n\n```bash \npip install cryptomite\n```\n\n\n\n## Example Usage\n\n```python\nfrom cryptomite.trevisan import Trevisan\nfrom random import randint\n\nn, m, max_eps = 1000, 200, 0.01\n\next = Trevisan(n, m, max_eps)\n\ninput_bits = [randint(0, 1) for _ in range(n)]\nseed_bits = [randint(0, 1) for _ in range(ext.ext.get_seed_length())]\n\noutput_bits = ext.extract(input_bits, seed_bits)\n```\n\n## Documentation\n\nTo build the docs, run\n\n```bash\ncd docs\npip install -r requirements.txt\nmake clean\nmake html\n```\n\n## Testing\n\nInstall `pytest`, then run `pytest test`.\n\nTo run the C++ tests, run\n\n```bash\ncmake .\nmake\ntest/runTest\n```\n",
"bugtrack_url": null,
"license": "",
"summary": "An awesome extractor library",
"version": "0.1.2",
"project_urls": null,
"split_keywords": [
"quantum",
"quantum computing"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "387dedd76fa0402a63a1ba870ecfd9ec76391784e878a3f7cbe9649ef94b545f",
"md5": "f1a03ea913a03546514688d3b30f1607",
"sha256": "8f40f501aeef379ef66e6ac7be54c8bc7015686e8f581f8c179bfd20b34b1e8b"
},
"downloads": -1,
"filename": "cryptomite-0.1.2-cp310-cp310-macosx_11_0_x86_64.whl",
"has_sig": false,
"md5_digest": "f1a03ea913a03546514688d3b30f1607",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8",
"size": 99590,
"upload_time": "2024-01-24T14:17:45",
"upload_time_iso_8601": "2024-01-24T14:17:45.807923Z",
"url": "https://files.pythonhosted.org/packages/38/7d/edd76fa0402a63a1ba870ecfd9ec76391784e878a3f7cbe9649ef94b545f/cryptomite-0.1.2-cp310-cp310-macosx_11_0_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "9526054ca12d0d702c4a3381f305e2342d4cffdcaf627c92a4a6a88fc5ce1909",
"md5": "288057516809eaa4450bc897c04abb89",
"sha256": "35abf7b15688c5e98ea2e678309410543cda93bd8993af52f899fd6faa496219"
},
"downloads": -1,
"filename": "cryptomite-0.1.2-cp310-cp310-macosx_13_0_arm64.whl",
"has_sig": false,
"md5_digest": "288057516809eaa4450bc897c04abb89",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8",
"size": 96297,
"upload_time": "2024-01-24T14:17:41",
"upload_time_iso_8601": "2024-01-24T14:17:41.405945Z",
"url": "https://files.pythonhosted.org/packages/95/26/054ca12d0d702c4a3381f305e2342d4cffdcaf627c92a4a6a88fc5ce1909/cryptomite-0.1.2-cp310-cp310-macosx_13_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "67d48165114e4e46f10e8b440641f0463add665061a1c2ec315e6713cbc44fb9",
"md5": "34682715d23b45f0e4d0b69806af8346",
"sha256": "5ba46312712100025d3a920adba26d41b2bffc64e19b57a3f510835b69be5699"
},
"downloads": -1,
"filename": "cryptomite-0.1.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "34682715d23b45f0e4d0b69806af8346",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8",
"size": 123506,
"upload_time": "2024-01-24T14:17:33",
"upload_time_iso_8601": "2024-01-24T14:17:33.615765Z",
"url": "https://files.pythonhosted.org/packages/67/d4/8165114e4e46f10e8b440641f0463add665061a1c2ec315e6713cbc44fb9/cryptomite-0.1.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "df4ff6f658c42ba36100b0d39e66022ab5c1c1d89da4ad2431691b1de9c175d5",
"md5": "b7de629553aee7c7f948c5d4a6dc8f9e",
"sha256": "5b15b08c533c8ff7a33918cc98e39b9cf0e22afa6a64917f81c84136c592aa56"
},
"downloads": -1,
"filename": "cryptomite-0.1.2-cp310-cp310-win_amd64.whl",
"has_sig": false,
"md5_digest": "b7de629553aee7c7f948c5d4a6dc8f9e",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8",
"size": 100959,
"upload_time": "2024-01-24T14:17:52",
"upload_time_iso_8601": "2024-01-24T14:17:52.572753Z",
"url": "https://files.pythonhosted.org/packages/df/4f/f6f658c42ba36100b0d39e66022ab5c1c1d89da4ad2431691b1de9c175d5/cryptomite-0.1.2-cp310-cp310-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "61faa48aefa32e5954c4e1dd8ef811d0ace6915184443994dc2e4b8e06e92f3c",
"md5": "a72fb42cca761d7ec0db5464f7a61db3",
"sha256": "277b76b91cafbfbf081efe120553ffc2f8538d197d7e304c4346fcc24034cf35"
},
"downloads": -1,
"filename": "cryptomite-0.1.2-cp311-cp311-macosx_11_0_x86_64.whl",
"has_sig": false,
"md5_digest": "a72fb42cca761d7ec0db5464f7a61db3",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8",
"size": 99603,
"upload_time": "2024-01-24T14:17:47",
"upload_time_iso_8601": "2024-01-24T14:17:47.136190Z",
"url": "https://files.pythonhosted.org/packages/61/fa/a48aefa32e5954c4e1dd8ef811d0ace6915184443994dc2e4b8e06e92f3c/cryptomite-0.1.2-cp311-cp311-macosx_11_0_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "45b9363348c2bcdd5a8752e64e060460e5f8124449e89b4dc144ce121bf8855f",
"md5": "8cf3e77f6c78a920d044638b90c93058",
"sha256": "eec65b07d3dd177757b116d803a0900ea308fd3c5b4cca018270e823e865cfa3"
},
"downloads": -1,
"filename": "cryptomite-0.1.2-cp311-cp311-macosx_13_0_arm64.whl",
"has_sig": false,
"md5_digest": "8cf3e77f6c78a920d044638b90c93058",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8",
"size": 96293,
"upload_time": "2024-01-24T14:17:43",
"upload_time_iso_8601": "2024-01-24T14:17:43.246272Z",
"url": "https://files.pythonhosted.org/packages/45/b9/363348c2bcdd5a8752e64e060460e5f8124449e89b4dc144ce121bf8855f/cryptomite-0.1.2-cp311-cp311-macosx_13_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "5ada6f7bfd565a751459aa6d20718379e137cc8718044437688a8e594ead5992",
"md5": "784f04ce71169475d0b2b3bd9a048435",
"sha256": "54a31a64703031b528f60c63f414b1af99b6f22811cc0dc30949e0b7eb97cfb7"
},
"downloads": -1,
"filename": "cryptomite-0.1.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "784f04ce71169475d0b2b3bd9a048435",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8",
"size": 123478,
"upload_time": "2024-01-24T14:17:35",
"upload_time_iso_8601": "2024-01-24T14:17:35.115645Z",
"url": "https://files.pythonhosted.org/packages/5a/da/6f7bfd565a751459aa6d20718379e137cc8718044437688a8e594ead5992/cryptomite-0.1.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "378f3ea5c3223cc63bb24ef8ba5820cd5c15dd5b5fc27c611c971fa045392c31",
"md5": "f0060fa7c6e7157066a2c0d0dbd8089f",
"sha256": "6775863b6c411df87f6ffaa87895d343ba07eba4e55cf8c54ed7c9dd2e4c3187"
},
"downloads": -1,
"filename": "cryptomite-0.1.2-cp311-cp311-win_amd64.whl",
"has_sig": false,
"md5_digest": "f0060fa7c6e7157066a2c0d0dbd8089f",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8",
"size": 100908,
"upload_time": "2024-01-24T14:17:53",
"upload_time_iso_8601": "2024-01-24T14:17:53.865085Z",
"url": "https://files.pythonhosted.org/packages/37/8f/3ea5c3223cc63bb24ef8ba5820cd5c15dd5b5fc27c611c971fa045392c31/cryptomite-0.1.2-cp311-cp311-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "67ea5a8974663fd0b3c0bc72a54b7cfa4532dfee04f552f93fed0b6e625cef02",
"md5": "ceef9c8a18ba321100285575612396e3",
"sha256": "61319e3ae8ce275ade96e816f832dae2984614ab9be7f345fc637be8b515b238"
},
"downloads": -1,
"filename": "cryptomite-0.1.2-cp312-cp312-macosx_11_0_x86_64.whl",
"has_sig": false,
"md5_digest": "ceef9c8a18ba321100285575612396e3",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.8",
"size": 100747,
"upload_time": "2024-01-24T14:17:48",
"upload_time_iso_8601": "2024-01-24T14:17:48.379465Z",
"url": "https://files.pythonhosted.org/packages/67/ea/5a8974663fd0b3c0bc72a54b7cfa4532dfee04f552f93fed0b6e625cef02/cryptomite-0.1.2-cp312-cp312-macosx_11_0_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "a3539bdbd0366af6957ebbcc570e62ead6079569ab52bcfcd42f01a23e609eec",
"md5": "1ae031dbeafd32ca9a5d4631ed2a1806",
"sha256": "662b4d3689515312015ae476021e85febe42e64d8607481e76fc01d9cfe6601b"
},
"downloads": -1,
"filename": "cryptomite-0.1.2-cp312-cp312-macosx_13_0_arm64.whl",
"has_sig": false,
"md5_digest": "1ae031dbeafd32ca9a5d4631ed2a1806",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.8",
"size": 97229,
"upload_time": "2024-01-24T14:17:44",
"upload_time_iso_8601": "2024-01-24T14:17:44.375871Z",
"url": "https://files.pythonhosted.org/packages/a3/53/9bdbd0366af6957ebbcc570e62ead6079569ab52bcfcd42f01a23e609eec/cryptomite-0.1.2-cp312-cp312-macosx_13_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "4a7eed522902cebee54205504666dec8df16cb7cca9523d4eec59f22f856acc6",
"md5": "a2512bee7f9922513363f434edc22d82",
"sha256": "fea19b3219d91fb5a94aaca91630dac778e28f45dee04b2d3b0ec4a0c6a3577f"
},
"downloads": -1,
"filename": "cryptomite-0.1.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "a2512bee7f9922513363f434edc22d82",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.8",
"size": 122848,
"upload_time": "2024-01-24T14:17:36",
"upload_time_iso_8601": "2024-01-24T14:17:36.283308Z",
"url": "https://files.pythonhosted.org/packages/4a/7e/ed522902cebee54205504666dec8df16cb7cca9523d4eec59f22f856acc6/cryptomite-0.1.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "4ce9368fe221b397e5814e38393ed2bc0f6ee724ab2a5737e54c1f556fb01430",
"md5": "2ccd3042e59a723d8103632eadee4610",
"sha256": "064568ca2d63f922d3c7726962b7f31341313a7264e01507d57a31e83bc17f80"
},
"downloads": -1,
"filename": "cryptomite-0.1.2-cp312-cp312-win_amd64.whl",
"has_sig": false,
"md5_digest": "2ccd3042e59a723d8103632eadee4610",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.8",
"size": 101773,
"upload_time": "2024-01-24T14:17:55",
"upload_time_iso_8601": "2024-01-24T14:17:55.135476Z",
"url": "https://files.pythonhosted.org/packages/4c/e9/368fe221b397e5814e38393ed2bc0f6ee724ab2a5737e54c1f556fb01430/cryptomite-0.1.2-cp312-cp312-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "0d235d20aeedcf4e4e6237c994be0d9bd73c21070c8715911bc4025aa95e0078",
"md5": "d94191fd0f88a9054d98e2d1b648671c",
"sha256": "970d7ef160b13e536465a7e569f2f59df9c5bbffeebc395c1ed2e9f4bb82243e"
},
"downloads": -1,
"filename": "cryptomite-0.1.2-cp38-cp38-macosx_11_0_x86_64.whl",
"has_sig": false,
"md5_digest": "d94191fd0f88a9054d98e2d1b648671c",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 99661,
"upload_time": "2024-01-24T14:17:50",
"upload_time_iso_8601": "2024-01-24T14:17:50.212711Z",
"url": "https://files.pythonhosted.org/packages/0d/23/5d20aeedcf4e4e6237c994be0d9bd73c21070c8715911bc4025aa95e0078/cryptomite-0.1.2-cp38-cp38-macosx_11_0_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "0273790482cf26d71ac43500ca2206c4aed5fbd4ea9880d31fdee87453e0a916",
"md5": "849b7dabd41ea9d6e9434d5b29d7b4d1",
"sha256": "634df2a2e43fff20fa0a2221ea8844e4934d791b8ed06a6d1efeecc3d49699ba"
},
"downloads": -1,
"filename": "cryptomite-0.1.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "849b7dabd41ea9d6e9434d5b29d7b4d1",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 123917,
"upload_time": "2024-01-24T14:17:37",
"upload_time_iso_8601": "2024-01-24T14:17:37.442930Z",
"url": "https://files.pythonhosted.org/packages/02/73/790482cf26d71ac43500ca2206c4aed5fbd4ea9880d31fdee87453e0a916/cryptomite-0.1.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "ec3d43e84327b2dd92297694239f76ccde1714429e43b77e83ca2661928e6733",
"md5": "737cb36288017e41ffad21debe89809f",
"sha256": "257576bb4d4e8a75ec7ede9aef0ab88ab21101551f6bee2fc4941d687337f7c3"
},
"downloads": -1,
"filename": "cryptomite-0.1.2-cp38-cp38-win_amd64.whl",
"has_sig": false,
"md5_digest": "737cb36288017e41ffad21debe89809f",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 100843,
"upload_time": "2024-01-24T14:17:56",
"upload_time_iso_8601": "2024-01-24T14:17:56.972228Z",
"url": "https://files.pythonhosted.org/packages/ec/3d/43e84327b2dd92297694239f76ccde1714429e43b77e83ca2661928e6733/cryptomite-0.1.2-cp38-cp38-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "1706b1c7d5bdad76ab406b5713dc3fc2ccd2720cadd9345dac1d268b3bf89f6e",
"md5": "9af5cd7c5681a00995e42d7634221494",
"sha256": "90f183bcd5bf3e8fc3a3875c23d747475c7a086a988f513cc3e867ad7379e637"
},
"downloads": -1,
"filename": "cryptomite-0.1.2-cp39-cp39-macosx_11_0_x86_64.whl",
"has_sig": false,
"md5_digest": "9af5cd7c5681a00995e42d7634221494",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.8",
"size": 99670,
"upload_time": "2024-01-24T14:17:51",
"upload_time_iso_8601": "2024-01-24T14:17:51.388641Z",
"url": "https://files.pythonhosted.org/packages/17/06/b1c7d5bdad76ab406b5713dc3fc2ccd2720cadd9345dac1d268b3bf89f6e/cryptomite-0.1.2-cp39-cp39-macosx_11_0_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "a52c24855d54c093122024f9acbf583a262b2c06fa218073adff06c4e1b491a1",
"md5": "10bed812c3af0c5dc9e70963c17db5f2",
"sha256": "5ac9f033c4a715b3636b2c0d9d04234919e9037af6c9d9e00209e60da105243d"
},
"downloads": -1,
"filename": "cryptomite-0.1.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "10bed812c3af0c5dc9e70963c17db5f2",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.8",
"size": 124002,
"upload_time": "2024-01-24T14:17:39",
"upload_time_iso_8601": "2024-01-24T14:17:39.526916Z",
"url": "https://files.pythonhosted.org/packages/a5/2c/24855d54c093122024f9acbf583a262b2c06fa218073adff06c4e1b491a1/cryptomite-0.1.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "c73cedd5c75f5ab8f37dd0da063e519455d6fdaf5bf48ae373124f256de9e634",
"md5": "c22c086f037e2f42daf7991631be8d74",
"sha256": "8ebe64fff03e4efebf86faf9c8808016d368125ce4fa0e26a32d5cb6ac07051d"
},
"downloads": -1,
"filename": "cryptomite-0.1.2-cp39-cp39-win_amd64.whl",
"has_sig": false,
"md5_digest": "c22c086f037e2f42daf7991631be8d74",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.8",
"size": 100238,
"upload_time": "2024-01-24T14:17:58",
"upload_time_iso_8601": "2024-01-24T14:17:58.191656Z",
"url": "https://files.pythonhosted.org/packages/c7/3c/edd5c75f5ab8f37dd0da063e519455d6fdaf5bf48ae373124f256de9e634/cryptomite-0.1.2-cp39-cp39-win_amd64.whl",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-01-24 14:17:45",
"github": false,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"lcname": "cryptomite"
}