pyhdwallet package¶
Submodules¶
pyhdwallet.ecpair module¶
Elliptic Curve Cryptography module
-
class
pyhdwallet.ecpair.ECPair(privkey, pubkey_buffer=None, compressed=True, network=<pyhdwallet.networks.Network object>)¶ Bases:
objectElliptic Curve Cryptography key pair
-
property
compressed¶ Returns whether or not the public key is in compressed format.
- Returns
True for compressed; False otherwise
-
classmethod
from_wif(wif)¶ Imports the private key from WIF format.
- Parameters
wif – private key as WIF (Wallet Import Format)
- Returns
New object containing the imported private key
-
get_address()¶ Converts the public key to a bitcoin address (P2PKH address)
- Returns
Address as string (P2PKH address)
-
property
network¶ Returns the network associated with this key pair.
- Returns
Network object
-
property
privkey¶ Returns the private key as a 256 bit integer.
- Returns
256 bit int secret
-
property
privkey_buffer¶ Returns the private key as bytes.
- Returns
bytes object representing the private key
-
property
pubkey_buffer¶ Returns the public key (33 or 65 bytes)
- Returns
bytes object representing the public key
-
sign(hash_buffer)¶ Sign a 32 byte hash and returns a signature
- Parameters
buffer – 32 byte buffer (as bytes)
- Returns
ECSignature object
-
to_wif()¶ Exports the private key as WIF (Wallet Import Format)
- Returns
string corresponding to the private Key as WIF
-
verify(buffer, ec_signature)¶ Verify signature of a 32 byte buffer (as bytes)
- Parameters
buffer – 32 byte buffer (as bytes)
ec_signature – ECSignature object
- Returns
True if this signature is valid
-
property
pyhdwallet.ecutils module¶
Low level Elliptic Curve Functions
-
class
pyhdwallet.ecutils.ECSignature(r, s)¶ Bases:
objectEC Signature
-
classmethod
sign(secret, hash_buffer)¶ Sign a message (hash) with the provided private key and returns the signature.
- Parameters
secret – private key as 32-byte int
hash_buffer – Hash of the message as bytes
- Returns
ECSignature object
-
verify(pubkey_buffer, hash_buffer)¶ Verify a digital signature.
- Parameters
pubkey_buffer – Public key as bytes
hash_buffer – hash of the message
- Returns
True if this signature is valid
-
classmethod
-
pyhdwallet.ecutils.combine_pubkeys(secret, pubkey_buffer)¶ Combines the public keys.
- Parameters
secret – private key (32-bytes int)
pubkey_buffer – public key compressed
- Returns
bytes of compressed public key
-
pyhdwallet.ecutils.get_pubkey_from_privkey(secret, compressed=True)¶ Returns a compressed public key from a private key.
- Parameters
secret – private key (32-bytes int)
compressed – get a compressed public key if true
- Returns
public key as bytes
-
pyhdwallet.ecutils.is_compressed_key(pubkey_buffer)¶ Checks whether or not a public key is compressed.
- Parameters
pubkey_buffer – public keys as bytes obj.
- Returns
true if public key is compressed; false otherwise
pyhdwallet.hashutils module¶
Hash functions
-
pyhdwallet.hashutils.hash160(data)¶ RIPEMD-160 after SHA-256.
- Parameters
data –
- Returns
ripemd160(sha256(data))
-
pyhdwallet.hashutils.hmac_sha512(key, msg)¶ HMAC using SHA-512.
- Parameters
key –
msg –
- Returns
-
pyhdwallet.hashutils.ripemd160(data)¶ RIPEMD-160 hash function.
- Parameters
data –
- Returns
-
pyhdwallet.hashutils.sha256(data)¶ SHA-256 hash function.
- Parameters
data –
- Returns
pyhdwallet.hdnode module¶
Module to deal with Hierarchical Deterministic (HD) tree according to BIP32 specification (https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki)
-
class
pyhdwallet.hdnode.HDNode(keypair, chaincode, depth=0, index=0, parent_fingerprint=0)¶ Bases:
objectA node from Hierarchical Deterministic (HD) tree.
Each node has extended keys allowing derivation of children nodes
-
derive(index)¶ Child Extended Key Derivation. Given the parent extended key and an index, computes the corresponding child extended key.
- Parameters
index – index for derivation
- Returns
HDNode child
-
derive_hardened(index)¶ Child Extended Key Derivation. (hardened version) Given the parent extended key and an index, computes the corresponding child extended key.
- Parameters
index – index for derivation
- Returns
HDNode child
-
derive_path(path)¶ Child Extended Key Derivation. Given the derivation path in the format m/x/x’ (e.g. m/0/1’/0) computes the corresponding child extended key.
- Parameters
index – derivation path as string (e.g. m/0/1’/0)
- Returns
HDNode child
-
classmethod
from_base58(encoded)¶ Creates a new HDNode from a extended key (xpub/xpriv)
- Parameters
encoded – a base58check string
- Returns
a new HDNode object
-
classmethod
from_seed(seed_bytes, network=<pyhdwallet.networks.Network object>)¶ Creates a new HDNode from a bip39 seed
- Parameters
seed_bytes – binary bip39 seed
network – Network object
- Returns
new HDNode object
-
get_address()¶ Returns a P2PKH address
- Returns
Address as string (P2PKH address)
-
get_fingerprint()¶ Returns the fingerprint. The first 32 bits of the identifier are called the key fingerprint.
- Returns
the fingerprint
-
get_identifier()¶ Returns the identifier. Extended keys can be identified by the Hash160 (RIPEMD160 after SHA256) of the serialized ECDSA public key K.
- Returns
identifier
-
get_keypair()¶ Returns the keypair
-
is_neutered()¶ Returns true if this object is neutered.
- Returns
true if this object is neutered; false otherwise
-
neutered()¶ Returns a new node without the private key. (Removes the privkey)
- Returns
a neutered HDNode
-
to_base58()¶ Returns the extended key (xpriv or xpub) as a Base58Check string. (xpub if neutered; xpriv otherwise)
- Returns
Extended key as Base58Check string
-
pyhdwallet.networks module¶
Cryptocurrency network definitions
-
class
pyhdwallet.networks.Network(description, version_priv, version_pub, pub_key_hash, wif)¶ Bases:
objectRepresents a cryptocurrency network (e.g. Bitcoin Mainnet)
-
classmethod
get_supported_networks()¶ Returns the list of supported networks
- Returns
list of supported networks
-
classmethod
set_supported_networks(network_list)¶ Sets up the list of supported networks
- Parameters
network_list – New list of supported networks
-
classmethod
Module contents¶
Hierarchical Deterministic Wallets (BIP32) in python