Crypto

A module that contains cryptographic functions.

BIP32 implemented on curve ED25519 Paper: https://github.com/LedgerHQ/orakolo/blob/master/papers/Ed25519_BIP%20Final.pdf This is a modified version of https://github.com/johnoliverdriscoll/py-edhd/blob/master/src/edhd/__init__.py

class pycardano.crypto.bip32.BIP32ED25519PrivateKey(private_key: bytes, chain_code: bytes)

Bases: object

sign(message: bytes) bytes
class pycardano.crypto.bip32.BIP32ED25519PublicKey(public_key: bytes, chain_code: bytes)

Bases: object

classmethod from_private_key(private_key: pycardano.crypto.bip32.BIP32ED25519PrivateKey) pycardano.crypto.bip32.BIP32ED25519PublicKey
verify(signature, message)
class pycardano.crypto.bip32.HDWallet(root_xprivate_key: bytes, root_public_key: bytes, root_chain_code: bytes, xprivate_key: bytes, public_key: bytes, chain_code: bytes, path: str = 'm', seed: Optional[bytes] = None, mnemonic: Optional[str] = None, passphrase: Optional[str] = None, entropy: Optional[str] = None)

Bases: object

Hierarchical Deterministic Wallet for Cardano

classmethod from_seed(seed: str, entropy: Optional[str] = None, passphrase: Optional[str] = None, mnemonic: Optional[str] = None) pycardano.crypto.bip32.HDWallet

Create an HDWallet instance from master key.

Parameters
  • seed – Master key of 96 bytes from seed hex string.

  • entropy – Entropy hex string, default to None.

  • passphrase – Mnemonic passphrase or password, default to None.

  • mnemonic – Mnemonic words, default to None.

Returns

HDWallet – Hierarchical Deterministic Wallet instance.

classmethod from_mnemonic(mnemonic: str, passphrase: str = '') pycardano.crypto.bip32.HDWallet

Create master key and HDWallet from Mnemonic words.

Parameters
  • mnemonic – Mnemonic words.

  • passphrase – Mnemonic passphrase or password, default to None.

Returns

HDWallet – Hierarchical Deterministic Wallet instance.

classmethod from_entropy(entropy: str, passphrase: str = '') pycardano.crypto.bip32.HDWallet

Create master key and HDWallet from Mnemonic words.

Parameters
  • entropy – Entropy hex string.

  • passphrase – Mnemonic passphrase or password, default to None.

Returns

HDWallet – Hierarchical Deterministic Wallet instance.

derive_from_path(path: str, private: bool = True) pycardano.crypto.bip32.HDWallet

Derive keys from a path following CIP-1852 specifications.

Parameters
  • path – Derivation path for the key generation.

  • private – whether to derive private child keys or public child keys.

Returns

HDWallet instance with keys derived

Examples

>>> mnemonic_words = "test walk nut penalty hip pave soap entry language right filter choice"
>>> hdwallet = HDWallet.from_mnemonic(mnemonic_words)
>>> child_hdwallet = hdwallet.derive_from_path("m/1852'/1815'/0'/0/0")
>>> child_hdwallet.public_key.hex()
'73fea80d424276ad0978d4fe5310e8bc2d485f5f6bb3bf87612989f112ad5a7d'
derive(index: int, private: bool = True, hardened: bool = False) pycardano.crypto.bip32.HDWallet

Returns a new HDWallet derived from given index.

Parameters
  • index – Derivation index.

  • private – whether to derive private child keys or public child keys.

  • hardened – whether to derive hardened address. Default to False.

Returns

HDWallet instance with keys derived

Examples

>>> mnemonic_words = "test walk nut penalty hip pave soap entry language right filter choice"
>>> hdwallet = HDWallet.from_mnemonic(mnemonic_words)
>>> hdwallet = hdwallet.derive(1852, hardened=True)
>>> hdwallet = hdwallet.derive(1815, hardened=True)
>>> hdwallet = hdwallet.derive(0, hardened=True)
>>> hdwallet = hdwallet.derive(0)
>>> hdwallet = hdwallet.derive(0)
>>> hdwallet.public_key.hex()
'73fea80d424276ad0978d4fe5310e8bc2d485f5f6bb3bf87612989f112ad5a7d'
property root_xprivate_key
property root_public_key
property root_chain_code
property xprivate_key
property public_key
property chain_code
static generate_mnemonic(language: str = 'english', strength: int = 256) str

Generate mnemonic words.

Parameters
  • language (str) – language for the mnemonic words.

  • strength (int) – length of the mnemoic words. Valid values are 128/160/192/224/256.

Returns

mnemonic words.

Return type

mnemonic (str)

static is_mnemonic(mnemonic: str, language: Optional[str] = None) bool

Check if mnemonic words are valid.

Parameters
  • mnemonic (str) – Mnemonic words in string format.

  • language (Optional[str]) – Mnemonic language, default to None.

Returns

bool. Whether the input mnemonic words is valid.

static is_entropy(entropy: str) bool

Check entropy hex string.

Parameters

entropy – entropy converted from mnemonic words.

Returns

bool. Whether entropy is valid or not.