py-fn-dsa
Python bindings for Thomas Pornin's c-fn-dsa using CFFI out-of-line API mode.
Features
- Thin wrapper around upstream c-fn-dsa
- Windows and Linux support
- Pythonic API
- Upstream validation, KAT, and interoperability tests
Installation
uv sync
Quick Start
from py_fn_dsa import keygen, sign, verify
vk, sk = keygen()
sig = sign(sk, b"hello")
assert verify(vk, sig, b"hello")
API Reference
- keygen()
- sign()
- verify()
Security Notes
Uses the upstream implementation without modifying cryptographic algorithms.
Development
uv sync
uv run pytest
Acknowledgements
- Thomas Pornin and the c-fn-dsa project.
License
MIT
Metadata
Release files for py-fn-dsa 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| py_fn_dsa-0.2.0.tar.gz | 1.5 MB | Details |
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| py_fn_dsa-0.2.0-cp314-cp314t-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl | CPython 3.14 | CPython 3.14 free-threading | Linux glibc 2.28+ x86-64, Linux glibc 2.26+ x86-64 | Details |
| py_fn_dsa-0.2.0-cp314-cp314-win_amd64.whl | CPython 3.14 | CPython 3.14 | Windows x86-64 | Details |
| py_fn_dsa-0.2.0-cp314-cp314-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl | CPython 3.14 | CPython 3.14 | Linux glibc 2.26+ x86-64, Linux glibc 2.28+ x86-64 | Details |
| py_fn_dsa-0.2.0-cp313-cp313-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl | CPython 3.13 | CPython 3.13 | Linux glibc 2.26+ x86-64, Linux glibc 2.28+ x86-64 | Details |
| py_fn_dsa-0.2.0-cp312-cp312-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl | CPython 3.12 | CPython 3.12 | Linux glibc 2.28+ x86-64, Linux glibc 2.26+ x86-64 | Details |
| py_fn_dsa-0.2.0-cp311-cp311-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl | CPython 3.11 | CPython 3.11 | Linux glibc 2.26+ x86-64, Linux glibc 2.28+ x86-64 | Details |
| py_fn_dsa-0.2.0-cp310-cp310-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl | CPython 3.10 | CPython 3.10 | Linux glibc 2.28+ x86-64, Linux glibc 2.26+ x86-64 | Details |
Total release size: 16.8 MB
Release files / py_fn_dsa-0.2.0.tar.gz
| Download URL | py_fn_dsa-0.2.0.tar.gz |
|---|---|
| Size | 1.5 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
1942c40b3bebbab5821329800cc3a09c86d9d13c734fb453a147a59f8cb687c3
|
|
BLAKE2b-256 checksum How to use checksums |
2593f04f9f6ffc1d07a644c7d8236a46442aebe1b25423d8f8c85ea87bcb608b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.25 {"installer":{"name":"uv","version":"0.11.25","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / py_fn_dsa-0.2.0-cp314-cp314t-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl
| Download URL | py_fn_dsa-0.2.0-cp314-cp314t-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 4.0 MB |
| Tags | CPython 3.14 CPython 3.14 free-threading Linux glibc 2.26+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
cea2d38c4d6a50816970b97819ad294f05f8c91ade313572695c0cacb95470e6
|
|
BLAKE2b-256 checksum How to use checksums |
cb558c814596ad646ac53f950db5d4ba4f63cc260cded435bab0d4747f5e3b6c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.25 {"installer":{"name":"uv","version":"0.11.25","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / py_fn_dsa-0.2.0-cp314-cp314-win_amd64.whl
| Download URL | py_fn_dsa-0.2.0-cp314-cp314-win_amd64.whl |
|---|---|
| Size | 121.8 kB |
| Tags | CPython 3.14 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
7dd7e0af7d7c8f7aa4ac0462715f060b377b45d4b5c3f7f2c578894b46ca8360
|
|
BLAKE2b-256 checksum How to use checksums |
54bc2df899ca53f7130d50a274ccd6b8c5e4a5358d68913634982e309996bc95
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.4 {"installer":{"name":"uv","version":"0.12.4","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / py_fn_dsa-0.2.0-cp314-cp314-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl
| Download URL | py_fn_dsa-0.2.0-cp314-cp314-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 3.4 MB |
| Tags | CPython 3.14 Linux glibc 2.26+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
2176ffc53fc96a860df840fb9a7146cccd32bb32f2695eb286890be9cff55336
|
|
BLAKE2b-256 checksum How to use checksums |
b74cd50624dbb002f130079e29842caa94722166d981d284afbc91d898c90d60
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.25 {"installer":{"name":"uv","version":"0.11.25","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / py_fn_dsa-0.2.0-cp313-cp313-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl
| Download URL | py_fn_dsa-0.2.0-cp313-cp313-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 2.7 MB |
| Tags | CPython 3.13 Linux glibc 2.26+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
25d91aeab2b2c9e39436311218604b4328d690601d14dbbd9492a1a2a4198c74
|
|
BLAKE2b-256 checksum How to use checksums |
a32987e2f79c50a8f08fe550ade67cc06a55d76620b807c3cf597146b2286276
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.25 {"installer":{"name":"uv","version":"0.11.25","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / py_fn_dsa-0.2.0-cp312-cp312-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl
| Download URL | py_fn_dsa-0.2.0-cp312-cp312-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 2.0 MB |
| Tags | CPython 3.12 Linux glibc 2.26+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
c0af8aecbdbebec4c0cbfbfc1513dfbc2364abcec72072f39343d4a9c6bc8df5
|
|
BLAKE2b-256 checksum How to use checksums |
75df3f3cb70be8fc5c0725e46fae7b6cafb69c65c6bcddb0ebe27ad1ebb9eeec
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.25 {"installer":{"name":"uv","version":"0.11.25","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / py_fn_dsa-0.2.0-cp311-cp311-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl
| Download URL | py_fn_dsa-0.2.0-cp311-cp311-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 1.9 MB |
| Tags | CPython 3.11 Linux glibc 2.26+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
6680d41924aa42fcbd9c9b2a7f57f293cebc4250942026d62242c9ab2cb91242
|
|
BLAKE2b-256 checksum How to use checksums |
961e9657b1069723e104cfcd18ad48aae73f08be9e26722fb8812202db071c7e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.25 {"installer":{"name":"uv","version":"0.11.25","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / py_fn_dsa-0.2.0-cp310-cp310-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl
| Download URL | py_fn_dsa-0.2.0-cp310-cp310-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 1.2 MB |
| Tags | CPython 3.10 Linux glibc 2.26+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
6869236614e8467e27ee1f551eff696a14f640aed63c337727d5b4922638ec92
|
|
BLAKE2b-256 checksum How to use checksums |
a8cfd15d37e9e3f645ec550c850dba3f6641de54c605549312f6a74350842b1c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.25 {"installer":{"name":"uv","version":"0.11.25","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|