NEO3VM
C++ implementations of cryptographic functions used in the NEO3 Blockchain with bindings for Python 3.13 & 3.14.
The current version supports mmh3 and EllipticCurve functions by wrapping (part of smhasher and micro-ecc) and exposing helper classes. SECP256R1 (a.k.a NIST256P) and SECP256K1 are the only curves exposed, but others can easily be enabled if needed.
Installation
pip install neo3crypto
Or download the wheels from the Github releases page.
Windows users
If installing fails with the error No Matching distribution found then upgrade your Python installation to use the latest post release version (i.e. 3.10.8 instead of 3.10.0)
Usage
import hashlib
import os
from neo3crypto import ECCCurve, ECPoint, sign, verify, mmh3_hash_bytes, mmh3_hash
curve = ECCCurve.SECP256R1
private_key = os.urandom(32)
public_key = ECPoint(private_key, curve)
signature = sign(private_key, b'message', curve, hashlib.sha256)
assert verify(signature, b'message', public_key, hashlib.sha256) == True
assert mmh3_hash("foo", signed=False) == 4138058784
assert bytes.fromhex("0bc59d0ad25fde2982ed65af61227a0e") == mmh3_hash_bytes("hello", 123)
Any hashlib hashing function can be used. Further documentation on the classes can be queried from the extension module using help(neo3crypto).
Building wheels
Make sure to have wheel and CMake installed. Then call python setup.py bdist_wheel.
Release files for neo3crypto 0.4.5
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distributions (wheels)
Total release size:5.9 MB
Release files / neo3crypto-0.4.5-cp314-cp314-win_amd64.whl
| Download URL | neo3crypto-0.4.5-cp314-cp314-win_amd64.whl |
|---|---|
| Size | 121.1 kB |
| Tags | CPython 3.14 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
6781220e8f12b907f714103c8e77aaf8e99e585e99649322b62183ac3febdbc6
|
|
BLAKE2b-256 checksum How to use checksums |
bd1c55566fbf1370bb0d13f5b4e3d84df44ac971e7f6c3f88b392391bb28af10
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.0
|
Release files / neo3crypto-0.4.5-cp314-cp314-musllinux_1_2_x86_64.whl
| Download URL | neo3crypto-0.4.5-cp314-cp314-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 1.2 MB |
| Tags | CPython 3.14 Linux musl 1.2+ x86-64 |
|
SHA-256 checksum How to use checksums |
8326279ff74fb1830f180c8b7a97004206b10392dd5690415f6e74346ae69cac
|
|
BLAKE2b-256 checksum How to use checksums |
856bca551a689d75dd3b85bfd822c87b7f3dfa539332f2e762dedbf0937f1e8d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.0
|
Release files / neo3crypto-0.4.5-cp314-cp314-musllinux_1_2_aarch64.whl
| Download URL | neo3crypto-0.4.5-cp314-cp314-musllinux_1_2_aarch64.whl |
|---|---|
| Size | 1.1 MB |
| Tags | CPython 3.14 Linux musl 1.2+ ARM64 |
|
SHA-256 checksum How to use checksums |
6f9399b958b20597fced9205477111ea6969785a8ff10c392bdaa9ae69d894c4
|
|
BLAKE2b-256 checksum How to use checksums |
9eb54e807c9246b23a47b8bb7e129b50fdba7ab702e09bb640b876b2bd0c9364
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.0
|
Release files / neo3crypto-0.4.5-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | neo3crypto-0.4.5-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 145.5 kB |
| Tags | CPython 3.14 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
37a0798bdbde789ed96521ed5028c7912d91edef17d93318d7f0bdc8fd1791b4
|
|
BLAKE2b-256 checksum How to use checksums |
68b2272c9b4840e11cc7163f677707319c1d39b5d1435af319ca4574d4843f77
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.0
|
Release files / neo3crypto-0.4.5-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
| Download URL | neo3crypto-0.4.5-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl |
|---|---|
| Size | 136.5 kB |
| Tags | CPython 3.14 Linux glibc 2.26+ ARM64 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
bc8766585cbd2675fa4fee6d5739a39f0e2f826b0d94eceed20f3c61570cde24
|
|
BLAKE2b-256 checksum How to use checksums |
504ae20d2f5cd77db3bebcc0d4422ab83f74467781cf4ee0598f03c2478d7c9c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.0
|
Release files / neo3crypto-0.4.5-cp314-cp314-macosx_11_0_arm64.whl
| Download URL | neo3crypto-0.4.5-cp314-cp314-macosx_11_0_arm64.whl |
|---|---|
| Size | 115.4 kB |
| Tags | CPython 3.14 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
86160d70b168219b3e7b5e622ba5338e9af10dac7a6148a2df9eaf28c6e3b5fb
|
|
BLAKE2b-256 checksum How to use checksums |
e676ab8ce19d200ab0baac74281838173ebe66c6f280d498d767cf7a70d76735
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.0
|
Release files / neo3crypto-0.4.5-cp314-cp314-macosx_10_15_x86_64.whl
| Download URL | neo3crypto-0.4.5-cp314-cp314-macosx_10_15_x86_64.whl |
|---|---|
| Size | 135.1 kB |
| Tags | CPython 3.14 macOS 10.15+ x86-64 |
|
SHA-256 checksum How to use checksums |
e2ef60a3003dbbb31927b373711c0d30ba7ee8a8288baa4a9d08ea356a981a0c
|
|
BLAKE2b-256 checksum How to use checksums |
bb0a10d80e56314ac17e6a5e670441c4ece3b394fe13a58dd923a79be686187e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.0
|
Release files / neo3crypto-0.4.5-cp313-cp313-win_amd64.whl
| Download URL | neo3crypto-0.4.5-cp313-cp313-win_amd64.whl |
|---|---|
| Size | 118.4 kB |
| Tags | CPython 3.13 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
ef5f0e3db3d19fa99578de0eb2fea48cd6a99b0e3c420ec8be2c70ff2a893bda
|
|
BLAKE2b-256 checksum How to use checksums |
8cc16914c3c51d6e5288b40c801cd8a163d0c99706783225863770f16e7478df
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.0
|
Release files / neo3crypto-0.4.5-cp313-cp313-musllinux_1_2_x86_64.whl
| Download URL | neo3crypto-0.4.5-cp313-cp313-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 1.2 MB |
| Tags | CPython 3.13 Linux musl 1.2+ x86-64 |
|
SHA-256 checksum How to use checksums |
2c010571c4758be2721e0a5d83f173c2cb1336883539b6aa9583faac5b513e6c
|
|
BLAKE2b-256 checksum How to use checksums |
ebfdc0d41a01215398363f3ed9931ac69500c2f9840d470814bb10de6fe5ece4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.0
|
Release files / neo3crypto-0.4.5-cp313-cp313-musllinux_1_2_aarch64.whl
| Download URL | neo3crypto-0.4.5-cp313-cp313-musllinux_1_2_aarch64.whl |
|---|---|
| Size | 1.1 MB |
| Tags | CPython 3.13 Linux musl 1.2+ ARM64 |
|
SHA-256 checksum How to use checksums |
7a072ce57bf1b56f2afbb2734c99b96d6a48372288365722c069f6741a6e46c1
|
|
BLAKE2b-256 checksum How to use checksums |
9738b756553b5a85c070a7c53247004bd8b7e1eff0b964a594da8638b806336c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.0
|
Release files / neo3crypto-0.4.5-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | neo3crypto-0.4.5-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 145.4 kB |
| Tags | CPython 3.13 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
e7065f2fa09a4ccf5a8edb9934afc33c9ce7c8f8365bcce79bbeef0ceb089287
|
|
BLAKE2b-256 checksum How to use checksums |
1e27a4d6050865917576d7c1f1f95fd322a70391db8626e1e88cc9f3effe6ff2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.0
|
Release files / neo3crypto-0.4.5-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
| Download URL | neo3crypto-0.4.5-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl |
|---|---|
| Size | 135.8 kB |
| Tags | CPython 3.13 Linux glibc 2.26+ ARM64 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
38b0d4faea20a2b4af61a31cf73b9afc0de520bc24201a1f13dd09b23074f764
|
|
BLAKE2b-256 checksum How to use checksums |
11d9e6306cc460df4ef35f6e4dc4ca501c6511dbb6a2d19239c01e5c9439ad66
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.0
|
Release files / neo3crypto-0.4.5-cp313-cp313-macosx_11_0_arm64.whl
| Download URL | neo3crypto-0.4.5-cp313-cp313-macosx_11_0_arm64.whl |
|---|---|
| Size | 114.9 kB |
| Tags | CPython 3.13 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
dc027f42b7aabc2edd5bac6c1395d9101779ba96733a12427ed8e3100b35e1c9
|
|
BLAKE2b-256 checksum How to use checksums |
15c9f89c9d33eb3ca8bd048124c02d5ba983163a21d32e0b4996a57a6fbf6280
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.0
|
Release files / neo3crypto-0.4.5-cp313-cp313-macosx_10_13_x86_64.whl
| Download URL | neo3crypto-0.4.5-cp313-cp313-macosx_10_13_x86_64.whl |
|---|---|
| Size | 135.0 kB |
| Tags | CPython 3.13 macOS 10.13+ x86-64 |
|
SHA-256 checksum How to use checksums |
ed6a82656fea2fc044791718594cc93b192531362a5290f2ae2101bc7b09a154
|
|
BLAKE2b-256 checksum How to use checksums |
d83f4bfa22924160621fbe47fa7b207077cfa102e584cfe8494149f39327fe66
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.0
|