Cryptography
Keys and signatures
- class pymavryk.crypto.key.Key(public_point: bytes, secret_exponent: bytes | None = None, curve: bytes = b'ed', activation_code: str | None = None)[source]
Represents a public or secret key for Mavryk. Ed25519, Secp256k1 and P256 are supported.
- blinded_public_key_hash = <function Key.blinded_public_key_hash> Creates base58 encoded commitment out of activation code (required) and public key hash :return: blinded public key hash [source]
- classmethod from_alias(alias: str, passphrase: str | bytes | None = None, mavryk_client_dir: str = '~/.tezos-client') Key [source]
Import secret key from octez-client keychain.
- Parameters:
alias – key alias
passphrase – if key is encrypted (optional)
mavryk_client_dir – path to the octez client directory (default is ~/.tezos-client)
- Return type:
- classmethod from_encoded_key(key: str | bytes, passphrase: str | bytes | None = None) Key [source]
Creates a key object from a base58 encoded key.
- Parameters:
key – a public or secret key in base58 encoding
passphrase – the passphrase used if the key provided is an encrypted private key, if not set value from from PYMAVRYK_PASSPHRASE env variable will be used or promted dynamically
- classmethod from_faucet(source: str | dict) Key [source]
Import key from a faucet file: https://teztnets.xyz/
- Parameters:
source – path to the json file
- Return type:
- classmethod from_mnemonic(mnemonic: List[str] | str, passphrase: str = '', email: str = '', validate: bool = True, curve: bytes = b'ed', activation_code: str | None = None, language: str = 'english') Key [source]
Creates a key object from a bip39 mnemonic.
- Parameters:
mnemonic – a 15 word bip39 english mnemonic
passphrase – a mnemonic password or a fundraiser key
email – email used if a fundraiser key is passed
validate – whether to check mnemonic or not
curve – b’sp’ for secp251k1, b’p2’ for P256/secp256r1, b’ed’ for Ed25519 (default)
activation_code – secret for initializing account balance
language – The English label for the language of the mnemonic. This is needed for validation
- Return type:
- classmethod from_public_point(public_point: bytes, curve: bytes = b'ed') Key [source]
Creates a key object from a public elliptic point.
- Parameters:
public_point – elliptic point in the compressed format (see https://tezos.stackexchange.com/a/623/309)
curve – b’sp’ for secp251k1, b’p2’ for P256/secp256r1, b’ed’ for Ed25519 (default)
- classmethod from_secret_exponent(secret_exponent: bytes, curve=b'ed', activation_code=None) Key [source]
Creates a key object from a secret exponent.
- Parameters:
secret_exponent – secret exponent or seed
curve – b’sp’ for Secp251k1, b’p2’ for P256/Secp256r1, b’ed’ for Ed25519 (default)
activation_code – secret for initializing account balance
- classmethod generate(passphrase: str = '', curve: bytes = b'ed', strength: int = 128, language: str = 'english', export: bool = True)[source]
Generates new key.
- Parameters:
passphrase – optional password
curve – b’sp’ for secp251k1, b’p2’ for P256/secp256r1, b’ed’ for Ed25519 (default)
strength – mnemonic strength, default is 128
language – mnemonic language, default is english
export – export as json file in the current folder, default is True
- Return type:
- public_key = <function Key.public_key> Creates base58 encoded public key representation. :returns: the public key associated with the private key [source]
- public_key_hash = <function Key.public_key_hash> Creates base58 encoded public key hash for this key. :returns: the public key hash for this key [source]
- secret_key = <function Key.secret_key> Creates base58 encoded private key representation. :param passphrase: encryption phrase for the private key :param ed25519_seed: encode seed rather than full key for ed25519 curve (True by default) :returns: the secret key associated with this key, if available [source]
Encoding
- pymavryk.crypto.encoding.base58_decode(v: bytes) bytes [source]
Decode data using Base58 with checksum + validate binary prefix against known kinds and cut in the end.
- Parameters:
v – Array of bytes (use string.encode())
- Returns:
bytes
- pymavryk.crypto.encoding.base58_encode(v: bytes, prefix: bytes) bytes [source]
Encode data using Base58 with checksum and add an according binary prefix in the end.
- Parameters:
v – Array of bytes
prefix – Human-readable prefix (use b’’) e.g. b’tz’, b’KT’, etc
- Returns:
bytes (use string.decode())
- pymavryk.crypto.encoding.is_address(v: str | bytes) bool [source]
Check if value is a tz/KT address
- pymavryk.crypto.encoding.is_l2_pkh(v: str | bytes) bool [source]
Check if value is an L2 public key hash.
- pymavryk.crypto.encoding.is_public_key(v: str | bytes) bool [source]
Check if value is a public key.
- pymavryk.crypto.encoding.is_sr(v: str | bytes) bool [source]
Check if value is a smart rollup address.
- pymavryk.crypto.encoding.is_txr_address(v: str | bytes) bool [source]
Check if value is a txr1 address
- pymavryk.crypto.encoding.validate_l2_pkh(v: str | bytes)[source]
Ensure parameter is a L2 public key hash (starts with b’txr1’)
- Parameters:
v – string or bytes
- Raises:
ValueError – if parameter is not a public key hash