A bitcoin cryptography library.
Project description
btclib: a python3 library for 'bitcoin cryptography'
http://github.com/dginst/btclib
btclib is a python3 type annotated library intended for teaching and demonstration of the elliptic curve cryptography used in bitcoin.
It does not have external requirements or dependencies; to install (and upgrade) it:
python -m pip install --upgrade btclib
Originally developed for the Bitcoin and Blockchain Technology course at Milano Bicocca and Politecnico di Milano, its algorithms are not intended for production environments: they could be broken using side-channel attacks; moreover, they are often refactored without care for backward compatibility.
The library includes:
- modulo algebra functions (gcd, inverse, legendre symbol, square root)
- octets / integer / point conversion functions
- elliptic curve class
- fast algebra implemented using Jacobian coordinates
- double scalar multiplication (Straus's algorithm, also known as Shamir's trick)
- multi scalar multiplication (Bos-coster's algorithm)
- point simmetry solution: odd/even, low/high, and quadratic residue
- available curves: SEC 1 v1 and v2, NIST, Brainpool, and low cardinality test curves
- DSA signature with (transaction) DER encoding and (message) compact encoding
- Schnorr signature (according to
bip-schnorr
bitcoin standardization)
- batch validation
- threshold signature (see test-suite)
- MuSig multi-signature (see test-suite)
- Borromean ring signature
- RFC 6979 to make signature schemes deterministic
- Sign-to-contract commitment
- Diffie-Hellman
- Pedersen Committment
- Base58 encoding, addresses, WIFs
- BIP32 hierarchical deterministic wallets
- BIP39 wordlists and mnemonic for generating deterministic keys
- Electrum standard for mnemonic
A very extensive test suite reproduces results from major official sources and covers 100% of the library code base.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for btclib-2019.6.12-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 05bcd7fb00d7d650f3018735d237042d88c2701cf42b034b5ad1a630fbe58303 |
|
MD5 | 7f63ac07b690699dd08b37c4e2eadc21 |
|
BLAKE2b-256 | f03a6026c8575006fac58ebce5d9ec75e9f22e135a74316d2cc6887b7f2154d5 |