# pymceliece
A Python wrapper for the libmceliece microlibrary
# Installation
## Dependencies
pymceliece depends only on libmceliece (which also depends on libcpucycles and
librandombytes), available [here](https://lib.mceliece.org)
# API
## Instantiated parameters
The API follows the libmceliece API. It implements the following parameter sets:
- mceliece8192128
- mceliece6960119
- mceliece6688128
- mceliece8192128
- mceliece460896
- mceliece348864
- mceliece6960119f
- mceliece6688128f
- mceliece8192128f
- mceliece460896f
- mceliece348864f
Each has the following constants defined:
- mceliecexxxxxxx.PUBLICKEYBYTES
Length of the public key
- mceliecexxxxxxx.SECRETKEYBYTES
Length of the private key
- mceliecexxxxxxx.CIPHERTEXTBYTES
Length of the ciphertext
- mceliecexxxxxxx.BYTES
Length of the session key
## Usage
For each instantiation the following functions are available:
### mcelieceXXXXXXX.keypair() -> Tuple[bytes, bytes]
Randomly generates a McEliece secret key and its corresponding public key.
Example:
```python
>>> from pymceliece import mceliece6960119
>>> pk, sk = mceliece6960119.keypair()
```
### mcelieceXXXXXXX.enc(pk: bytes) -> Tuple[bytes, bytes]
Randomly generates a ciphertext and the corresponding session key given a
public key pk.
Example:
```python
>>> from pymceliece import mceliece8192128f
>>> pk, _ = mceliece8192128f.keypair()
>>> c, k = mceliece8192128f.enc(pk)
```
### mcelieceXXXXXXX.dec(c: bytes, pk: bytes) -> bytes
Given a McEliece secret key sk and a ciphertext c encapsulated to sk's
corresponding public key pk, computes the session key k.
Example:
```python
>>> from pymceliece import mceliece348864f
>>> pk, sk = mceliece348864f.keypair()
>>> c, k = mceliece348864f.enc(pk)
>>> mceliece348864f.dec(c, sk) == k
True
```
Raw data
{
"_id": null,
"home_page": null,
"name": "pymceliece",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.6",
"maintainer_email": null,
"keywords": "post-quantum, cryptography, McEliece, Classic McEliece, libmceliece, pymceliece",
"author": null,
"author_email": "Jonathan Levin <pymceliece@riseup.net>",
"download_url": "https://files.pythonhosted.org/packages/38/2b/a7a7de54587bbc528fca03132f3da514969b9d1928367a87def0acfca479/pymceliece-0.0.3.tar.gz",
"platform": null,
"description": "# pymceliece\nA Python wrapper for the libmceliece microlibrary\n\n# Installation\n## Dependencies\npymceliece depends only on libmceliece (which also depends on libcpucycles and\nlibrandombytes), available [here](https://lib.mceliece.org)\n\n# API\n## Instantiated parameters\nThe API follows the libmceliece API. It implements the following parameter sets:\n\n- mceliece8192128\n- mceliece6960119\n- mceliece6688128\n- mceliece8192128\n- mceliece460896\n- mceliece348864\n- mceliece6960119f\n- mceliece6688128f\n- mceliece8192128f\n- mceliece460896f\n- mceliece348864f\n\nEach has the following constants defined:\n- mceliecexxxxxxx.PUBLICKEYBYTES\nLength of the public key\n- mceliecexxxxxxx.SECRETKEYBYTES\nLength of the private key\n- mceliecexxxxxxx.CIPHERTEXTBYTES\nLength of the ciphertext\n- mceliecexxxxxxx.BYTES\nLength of the session key\n\n## Usage\nFor each instantiation the following functions are available:\n### mcelieceXXXXXXX.keypair() -> Tuple[bytes, bytes]\n\nRandomly generates a McEliece secret key and its corresponding public key.\n\nExample:\n```python\n>>> from pymceliece import mceliece6960119\n>>> pk, sk = mceliece6960119.keypair()\n```\n\n### mcelieceXXXXXXX.enc(pk: bytes) -> Tuple[bytes, bytes]\nRandomly generates a ciphertext and the corresponding session key given a\npublic key pk.\n\nExample:\n```python\n>>> from pymceliece import mceliece8192128f\n>>> pk, _ = mceliece8192128f.keypair()\n>>> c, k = mceliece8192128f.enc(pk)\n```\n\n### mcelieceXXXXXXX.dec(c: bytes, pk: bytes) -> bytes\nGiven a McEliece secret key sk and a ciphertext c encapsulated to sk's\ncorresponding public key pk, computes the session key k.\n\nExample:\n```python\n>>> from pymceliece import mceliece348864f\n>>> pk, sk = mceliece348864f.keypair()\n>>> c, k = mceliece348864f.enc(pk)\n>>> mceliece348864f.dec(c, sk) == k\nTrue\n```\n\n",
"bugtrack_url": null,
"license": null,
"summary": "A Python wrapper for the libmceliece microlibrary",
"version": "0.0.3",
"project_urls": {
"Source": "https://www.github.com/ondesmartenot/pymceliece"
},
"split_keywords": [
"post-quantum",
" cryptography",
" mceliece",
" classic mceliece",
" libmceliece",
" pymceliece"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "0bda120ab92eed17b75ccc071858f458cf4083234d58c0fe01dfc57a4866c153",
"md5": "1e99dd361ef0daead1e5ec35cb46ea5f",
"sha256": "d8bfcac8ae3a562b84d3ea7e0b2400905bcb068528afda9cfc1d98d52d32fa9b"
},
"downloads": -1,
"filename": "pymceliece-0.0.3-py3-none-any.whl",
"has_sig": false,
"md5_digest": "1e99dd361ef0daead1e5ec35cb46ea5f",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.6",
"size": 305955,
"upload_time": "2024-12-04T08:38:17",
"upload_time_iso_8601": "2024-12-04T08:38:17.477578Z",
"url": "https://files.pythonhosted.org/packages/0b/da/120ab92eed17b75ccc071858f458cf4083234d58c0fe01dfc57a4866c153/pymceliece-0.0.3-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "382ba7a7de54587bbc528fca03132f3da514969b9d1928367a87def0acfca479",
"md5": "81f28a35303b256d52452b0a5ad6290d",
"sha256": "62370f3199798a689d9ab564ad73e715926cbb6d46e39c97a54f3c6717eb2627"
},
"downloads": -1,
"filename": "pymceliece-0.0.3.tar.gz",
"has_sig": false,
"md5_digest": "81f28a35303b256d52452b0a5ad6290d",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.6",
"size": 250193,
"upload_time": "2024-12-04T08:38:20",
"upload_time_iso_8601": "2024-12-04T08:38:20.303783Z",
"url": "https://files.pythonhosted.org/packages/38/2b/a7a7de54587bbc528fca03132f3da514969b9d1928367a87def0acfca479/pymceliece-0.0.3.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-12-04 08:38:20",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "ondesmartenot",
"github_project": "pymceliece",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "pymceliece"
}