mirror of
https://github.com/trezor/trezor-firmware.git
synced 2025-01-03 12:00:59 +00:00
extmod: doc comments describe internal apis
This commit is contained in:
parent
e29601e838
commit
5a5c4f11b9
@ -15,10 +15,18 @@
|
||||
|
||||
#if MICROPY_PY_TREZORCONFIG
|
||||
|
||||
/// class Config:
|
||||
/// '''
|
||||
/// Persistent key-value storage, with 16-bit keys and bytes values.
|
||||
/// '''
|
||||
typedef struct _mp_obj_Config_t {
|
||||
mp_obj_base_t base;
|
||||
} mp_obj_Config_t;
|
||||
|
||||
/// def __init__(self):
|
||||
/// '''
|
||||
/// Initializes the storage.
|
||||
/// '''
|
||||
STATIC mp_obj_t mod_TrezorConfig_Config_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *args) {
|
||||
mp_arg_check_num(n_args, n_kw, 0, 0, false);
|
||||
mp_obj_Config_t *o = m_new_obj(mp_obj_Config_t);
|
||||
@ -30,7 +38,7 @@ STATIC mp_obj_t mod_TrezorConfig_Config_make_new(const mp_obj_type_t *type, size
|
||||
return MP_OBJ_FROM_PTR(o);
|
||||
}
|
||||
|
||||
/// def trezor.config.get(app: int, key: int) -> bytes:
|
||||
/// def get(self, app: int, key: int) -> bytes:
|
||||
/// '''
|
||||
/// Gets a value of given key for given app (or empty bytes if not set).
|
||||
/// '''
|
||||
@ -50,7 +58,7 @@ STATIC mp_obj_t mod_TrezorConfig_Config_get(mp_obj_t self, mp_obj_t app, mp_obj_
|
||||
}
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_3(mod_TrezorConfig_Config_get_obj, mod_TrezorConfig_Config_get);
|
||||
|
||||
/// def trezor.config.set(app: int, key: int, value: bytes) -> None:
|
||||
/// def set(self, app: int, key: int, value: bytes) -> None:
|
||||
/// '''
|
||||
/// Sets a value of given key for given app.
|
||||
/// Returns True on success.
|
||||
@ -69,9 +77,9 @@ STATIC mp_obj_t mod_TrezorConfig_Config_set(size_t n_args, const mp_obj_t *args)
|
||||
}
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(mod_TrezorConfig_Config_set_obj, 4, 4, mod_TrezorConfig_Config_set);
|
||||
|
||||
/// def trezor.config.wipe() -> None:
|
||||
/// def wipe(self) -> None:
|
||||
/// '''
|
||||
/// Erases the whole config (use with caution!)
|
||||
/// Erases the whole config. Use with caution!
|
||||
/// '''
|
||||
STATIC mp_obj_t mod_TrezorConfig_Config_wipe(mp_obj_t self) {
|
||||
bool r = norcow_wipe();
|
||||
|
@ -9,6 +9,10 @@
|
||||
|
||||
#include "trezor-crypto/aes/aes.h"
|
||||
|
||||
/// class AES:
|
||||
/// '''
|
||||
/// AES context.
|
||||
/// '''
|
||||
typedef struct _mp_obj_AES_t {
|
||||
mp_obj_base_t base;
|
||||
union {
|
||||
@ -33,6 +37,10 @@ enum {
|
||||
#define AESModeMask 0x3F
|
||||
#define AESDirMask 0xC0
|
||||
|
||||
/// def __init__(self, mode: int, key: bytes, iv: bytes = ...) -> None:
|
||||
/// '''
|
||||
/// Initialize AES context.
|
||||
/// '''
|
||||
STATIC mp_obj_t mod_TrezorCrypto_AES_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *args) {
|
||||
mp_arg_check_num(n_args, n_kw, 2, 3, false);
|
||||
mp_obj_AES_t *o = m_new_obj(mp_obj_AES_t);
|
||||
@ -83,9 +91,9 @@ STATIC mp_obj_t mod_TrezorCrypto_AES_make_new(const mp_obj_type_t *type, size_t
|
||||
return MP_OBJ_FROM_PTR(o);
|
||||
}
|
||||
|
||||
/// def trezor.crypto.aes.AES.update(self, data: bytes) -> bytes:
|
||||
/// def update(self, data: bytes) -> bytes:
|
||||
/// '''
|
||||
/// Update AES context
|
||||
/// Update AES context with data.
|
||||
/// '''
|
||||
STATIC mp_obj_t mod_TrezorCrypto_AES_update(mp_obj_t self, mp_obj_t data) {
|
||||
mp_buffer_info_t buf;
|
||||
|
@ -9,6 +9,10 @@
|
||||
|
||||
#include "trezor-crypto/bip32.h"
|
||||
|
||||
/// class HDNode:
|
||||
/// '''
|
||||
/// BIP0032 HD node structure.
|
||||
/// '''
|
||||
typedef struct _mp_obj_HDNode_t {
|
||||
mp_obj_base_t base;
|
||||
uint32_t fingerprint;
|
||||
@ -20,7 +24,7 @@ STATIC const mp_obj_type_t mod_TrezorCrypto_HDNode_type;
|
||||
#define XPUB_MAXLEN 128
|
||||
#define ADDRESS_MAXLEN 36
|
||||
|
||||
/// def trezor.crypto.HDNode.derive(index: int) -> None:
|
||||
/// def derive(self, index: int) -> None:
|
||||
/// '''
|
||||
/// Derive a BIP0032 child node in place.
|
||||
/// '''
|
||||
@ -39,7 +43,7 @@ STATIC mp_obj_t mod_TrezorCrypto_HDNode_derive(mp_obj_t self, mp_obj_t index) {
|
||||
}
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_2(mod_TrezorCrypto_HDNode_derive_obj, mod_TrezorCrypto_HDNode_derive);
|
||||
|
||||
/// def trezor.crypto.HDNode.derive_path(path: list) -> None:
|
||||
/// def derive_path(self, path: List[int]) -> None:
|
||||
/// '''
|
||||
/// Go through a list of indexes and iteratively derive a child node in place.
|
||||
/// '''
|
||||
@ -96,7 +100,7 @@ STATIC mp_obj_t serialize_public_private(mp_obj_t self, bool use_public, uint32_
|
||||
return mp_obj_new_str_from_vstr(&mp_type_str, &vstr);
|
||||
}
|
||||
|
||||
/// def trezor.crypto.HDNode.serialize_public(version: int) -> str:
|
||||
/// def serialize_public(self, version: int) -> str:
|
||||
/// '''
|
||||
/// Serialize the public info from HD node to base58 string.
|
||||
/// '''
|
||||
@ -106,7 +110,7 @@ STATIC mp_obj_t mod_TrezorCrypto_HDNode_serialize_public(mp_obj_t self, mp_obj_t
|
||||
}
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_2(mod_TrezorCrypto_HDNode_serialize_public_obj, mod_TrezorCrypto_HDNode_serialize_public);
|
||||
|
||||
/// def trezor.crypto.HDNode.serialize_private(version: int) -> str:
|
||||
/// def serialize_private(self, version: int) -> str:
|
||||
/// '''
|
||||
/// Serialize the private info HD node to base58 string.
|
||||
/// '''
|
||||
@ -116,7 +120,7 @@ STATIC mp_obj_t mod_TrezorCrypto_HDNode_serialize_private(mp_obj_t self, mp_obj_
|
||||
}
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_2(mod_TrezorCrypto_HDNode_serialize_private_obj, mod_TrezorCrypto_HDNode_serialize_private);
|
||||
|
||||
/// def trezor.crypto.HDNode.clone() -> HDNode:
|
||||
/// def clone(self) -> HDNode:
|
||||
/// '''
|
||||
/// Returns a copy of the HD node.
|
||||
/// '''
|
||||
@ -130,7 +134,7 @@ STATIC mp_obj_t mod_TrezorCrypto_HDNode_clone(mp_obj_t self) {
|
||||
}
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_1(mod_TrezorCrypto_HDNode_clone_obj, mod_TrezorCrypto_HDNode_clone);
|
||||
|
||||
/// def trezor.crypto.HDNode.depth() -> int:
|
||||
/// def depth(self) -> int:
|
||||
/// '''
|
||||
/// Returns a depth of the HD node.
|
||||
/// '''
|
||||
@ -140,7 +144,7 @@ STATIC mp_obj_t mod_TrezorCrypto_HDNode_depth(mp_obj_t self) {
|
||||
}
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_1(mod_TrezorCrypto_HDNode_depth_obj, mod_TrezorCrypto_HDNode_depth);
|
||||
|
||||
/// def trezor.crypto.HDNode.fingerprint() -> int:
|
||||
/// def fingerprint(self) -> int:
|
||||
/// '''
|
||||
/// Returns a fingerprint of the HD node (hash of the parent public key).
|
||||
/// '''
|
||||
@ -150,7 +154,7 @@ STATIC mp_obj_t mod_TrezorCrypto_HDNode_fingerprint(mp_obj_t self) {
|
||||
}
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_1(mod_TrezorCrypto_HDNode_fingerprint_obj, mod_TrezorCrypto_HDNode_fingerprint);
|
||||
|
||||
/// def trezor.crypto.HDNode.child_num() -> int:
|
||||
/// def child_num(self) -> int:
|
||||
/// '''
|
||||
/// Returns a child index of the HD node.
|
||||
/// '''
|
||||
@ -160,7 +164,7 @@ STATIC mp_obj_t mod_TrezorCrypto_HDNode_child_num(mp_obj_t self) {
|
||||
}
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_1(mod_TrezorCrypto_HDNode_child_num_obj, mod_TrezorCrypto_HDNode_child_num);
|
||||
|
||||
/// def trezor.crypto.HDNode.chain_code() -> bytes:
|
||||
/// def chain_code(self) -> bytes:
|
||||
/// '''
|
||||
/// Returns a chain code of the HD node.
|
||||
/// '''
|
||||
@ -170,7 +174,7 @@ STATIC mp_obj_t mod_TrezorCrypto_HDNode_chain_code(mp_obj_t self) {
|
||||
}
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_1(mod_TrezorCrypto_HDNode_chain_code_obj, mod_TrezorCrypto_HDNode_chain_code);
|
||||
|
||||
/// def trezor.crypto.HDNode.private_key() -> bytes:
|
||||
/// def private_key(self) -> bytes:
|
||||
/// '''
|
||||
/// Returns a private key of the HD node.
|
||||
/// '''
|
||||
@ -180,7 +184,7 @@ STATIC mp_obj_t mod_TrezorCrypto_HDNode_private_key(mp_obj_t self) {
|
||||
}
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_1(mod_TrezorCrypto_HDNode_private_key_obj, mod_TrezorCrypto_HDNode_private_key);
|
||||
|
||||
/// def trezor.crypto.HDNode.public_key() -> bytes:
|
||||
/// def public_key(self) -> bytes:
|
||||
/// '''
|
||||
/// Returns a public key of the HD node.
|
||||
/// '''
|
||||
@ -191,7 +195,7 @@ STATIC mp_obj_t mod_TrezorCrypto_HDNode_public_key(mp_obj_t self) {
|
||||
}
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_1(mod_TrezorCrypto_HDNode_public_key_obj, mod_TrezorCrypto_HDNode_public_key);
|
||||
|
||||
/// def trezor.crypto.HDNode.address(version: int) -> str:
|
||||
/// def address(self, version: int) -> str:
|
||||
/// '''
|
||||
/// Compute a base58-encoded address string from the HD node.
|
||||
/// '''
|
||||
@ -231,10 +235,16 @@ STATIC const mp_obj_type_t mod_TrezorCrypto_HDNode_type = {
|
||||
.locals_dict = (void*)&mod_TrezorCrypto_HDNode_locals_dict,
|
||||
};
|
||||
|
||||
/// class Bip32:
|
||||
/// '''
|
||||
/// '''
|
||||
typedef struct _mp_obj_Bip32_t {
|
||||
mp_obj_base_t base;
|
||||
} mp_obj_Bip32_t;
|
||||
|
||||
/// def __init__(self):
|
||||
/// '''
|
||||
/// '''
|
||||
STATIC mp_obj_t mod_TrezorCrypto_Bip32_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *args) {
|
||||
mp_arg_check_num(n_args, n_kw, 0, 0, false);
|
||||
mp_obj_Bip32_t *o = m_new_obj(mp_obj_Bip32_t);
|
||||
@ -242,7 +252,7 @@ STATIC mp_obj_t mod_TrezorCrypto_Bip32_make_new(const mp_obj_type_t *type, size_
|
||||
return MP_OBJ_FROM_PTR(o);
|
||||
}
|
||||
|
||||
/// def trezor.crypto.bip32.deserialize(value:str, version_public: int, version_private: int) -> HDNode:
|
||||
/// def deserialize(self, value: str, version_public: int, version_private: int) -> HDNode:
|
||||
/// '''
|
||||
/// Construct a BIP0032 HD node from a base58-serialized value.
|
||||
/// '''
|
||||
@ -268,7 +278,7 @@ STATIC mp_obj_t mod_TrezorCrypto_Bip32_deserialize(size_t n_args, const mp_obj_t
|
||||
}
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(mod_TrezorCrypto_Bip32_deserialize_obj, 4, 4, mod_TrezorCrypto_Bip32_deserialize);
|
||||
|
||||
/// def trezor.crypto.bip32.from_seed(seed: bytes, curve_name: str) -> HDNode:
|
||||
/// def from_seed(self, seed: bytes, curve_name: str) -> HDNode:
|
||||
/// '''
|
||||
/// Construct a BIP0032 HD node from a BIP0039 seed value.
|
||||
/// '''
|
||||
|
@ -9,10 +9,16 @@
|
||||
|
||||
#include "trezor-crypto/bip39.h"
|
||||
|
||||
/// class Bip39:
|
||||
/// '''
|
||||
/// '''
|
||||
typedef struct _mp_obj_Bip39_t {
|
||||
mp_obj_base_t base;
|
||||
} mp_obj_Bip39_t;
|
||||
|
||||
/// def __init__(self):
|
||||
/// '''
|
||||
/// '''
|
||||
STATIC mp_obj_t mod_TrezorCrypto_Bip39_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *args) {
|
||||
mp_arg_check_num(n_args, n_kw, 0, 0, false);
|
||||
mp_obj_Bip39_t *o = m_new_obj(mp_obj_Bip39_t);
|
||||
@ -20,9 +26,9 @@ STATIC mp_obj_t mod_TrezorCrypto_Bip39_make_new(const mp_obj_type_t *type, size_
|
||||
return MP_OBJ_FROM_PTR(o);
|
||||
}
|
||||
|
||||
/// def trezor.crypto.bip39.find_word(prefix: str) -> str:
|
||||
/// def find_word(self, prefix: str) -> Optional[str]:
|
||||
/// '''
|
||||
/// Return the first word from the wordlist starting with prefix
|
||||
/// Return the first word from the wordlist starting with prefix.
|
||||
/// '''
|
||||
STATIC mp_obj_t mod_TrezorCrypto_Bip39_find_word(mp_obj_t self, mp_obj_t prefix)
|
||||
{
|
||||
@ -40,9 +46,9 @@ STATIC mp_obj_t mod_TrezorCrypto_Bip39_find_word(mp_obj_t self, mp_obj_t prefix)
|
||||
}
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_2(mod_TrezorCrypto_Bip39_find_word_obj, mod_TrezorCrypto_Bip39_find_word);
|
||||
|
||||
/// def trezor.crypto.bip39.complete_word(prefix: str) -> int:
|
||||
/// def complete_word(self, prefix: str) -> int:
|
||||
/// '''
|
||||
/// Return possible 1-letter suffixes for given word prefix
|
||||
/// Return possible 1-letter suffixes for given word prefix.
|
||||
/// Result is a bitmask, with 'a' on the lowest bit, 'b' on the second lowest, etc.
|
||||
/// '''
|
||||
STATIC mp_obj_t mod_TrezorCrypto_Bip39_complete_word(mp_obj_t self, mp_obj_t prefix)
|
||||
@ -67,9 +73,9 @@ STATIC mp_obj_t mod_TrezorCrypto_Bip39_complete_word(mp_obj_t self, mp_obj_t pre
|
||||
}
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_2(mod_TrezorCrypto_Bip39_complete_word_obj, mod_TrezorCrypto_Bip39_complete_word);
|
||||
|
||||
/// def trezor.crypto.bip39.generate(strength: int) -> str:
|
||||
/// def generate(self, strength: int) -> str:
|
||||
/// '''
|
||||
/// Generate a mnemonic of given strength (128, 160, 192, 224 and 256 bits)
|
||||
/// Generate a mnemonic of given strength (128, 160, 192, 224 and 256 bits).
|
||||
/// '''
|
||||
STATIC mp_obj_t mod_TrezorCrypto_Bip39_generate(mp_obj_t self, mp_obj_t strength) {
|
||||
int bits = mp_obj_get_int(strength);
|
||||
@ -81,9 +87,9 @@ STATIC mp_obj_t mod_TrezorCrypto_Bip39_generate(mp_obj_t self, mp_obj_t strength
|
||||
}
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_2(mod_TrezorCrypto_Bip39_generate_obj, mod_TrezorCrypto_Bip39_generate);
|
||||
|
||||
/// def trezor.crypto.bip39.from_data(data: bytes) -> str:
|
||||
/// def from_data(self, data: bytes) -> str:
|
||||
/// '''
|
||||
/// Generate a mnemonic from given data (of 16, 20, 24, 28 and 32 bytes)
|
||||
/// Generate a mnemonic from given data (of 16, 20, 24, 28 and 32 bytes).
|
||||
/// '''
|
||||
STATIC mp_obj_t mod_TrezorCrypto_Bip39_from_data(mp_obj_t self, mp_obj_t data) {
|
||||
mp_buffer_info_t bin;
|
||||
@ -96,9 +102,9 @@ STATIC mp_obj_t mod_TrezorCrypto_Bip39_from_data(mp_obj_t self, mp_obj_t data) {
|
||||
}
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_2(mod_TrezorCrypto_Bip39_from_data_obj, mod_TrezorCrypto_Bip39_from_data);
|
||||
|
||||
/// def trezor.crypto.bip39.check(mnemonic: str) -> bool:
|
||||
/// def check(self, mnemonic: str) -> bool:
|
||||
/// '''
|
||||
/// Check whether given mnemonic is valid
|
||||
/// Check whether given mnemonic is valid.
|
||||
/// '''
|
||||
STATIC mp_obj_t mod_TrezorCrypto_Bip39_check(mp_obj_t self, mp_obj_t mnemonic) {
|
||||
mp_buffer_info_t text;
|
||||
@ -107,9 +113,9 @@ STATIC mp_obj_t mod_TrezorCrypto_Bip39_check(mp_obj_t self, mp_obj_t mnemonic) {
|
||||
}
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_2(mod_TrezorCrypto_Bip39_check_obj, mod_TrezorCrypto_Bip39_check);
|
||||
|
||||
/// def trezor.crypto.bip39.seed(mnemonic: str, passphrase: str) -> bytes:
|
||||
/// def seed(self, mnemonic: str, passphrase: str) -> bytes:
|
||||
/// '''
|
||||
/// Generate seed from mnemonic and passphrase
|
||||
/// Generate seed from mnemonic and passphrase.
|
||||
/// '''
|
||||
STATIC mp_obj_t mod_TrezorCrypto_Bip39_seed(mp_obj_t self, mp_obj_t mnemonic, mp_obj_t passphrase) {
|
||||
mp_buffer_info_t mnemo;
|
||||
|
@ -9,6 +9,10 @@
|
||||
|
||||
#include "trezor-crypto/blake2b.h"
|
||||
|
||||
/// class Blake2b:
|
||||
/// '''
|
||||
/// Blake2b context.
|
||||
/// '''
|
||||
typedef struct _mp_obj_Blake2b_t {
|
||||
mp_obj_base_t base;
|
||||
BLAKE2B_CTX ctx;
|
||||
@ -16,7 +20,7 @@ typedef struct _mp_obj_Blake2b_t {
|
||||
|
||||
STATIC mp_obj_t mod_TrezorCrypto_Blake2b_update(mp_obj_t self, mp_obj_t data);
|
||||
|
||||
/// def trezor.crypto.hashlib.blake2b(data: bytes=None, key: bytes=None) -> Blake2b:
|
||||
/// def __init__(self, data: bytes = None, key: bytes = None) -> None:
|
||||
/// '''
|
||||
/// Creates a hash context object.
|
||||
/// '''
|
||||
@ -39,7 +43,7 @@ STATIC mp_obj_t mod_TrezorCrypto_Blake2b_make_new(const mp_obj_type_t *type, siz
|
||||
return MP_OBJ_FROM_PTR(o);
|
||||
}
|
||||
|
||||
/// def trezor.crypto.hashlib.blake2b.update(self, data: bytes) -> None:
|
||||
/// def update(self, data: bytes) -> None:
|
||||
/// '''
|
||||
/// Update the hash context with hashed data.
|
||||
/// '''
|
||||
@ -54,7 +58,7 @@ STATIC mp_obj_t mod_TrezorCrypto_Blake2b_update(mp_obj_t self, mp_obj_t data) {
|
||||
}
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_2(mod_TrezorCrypto_Blake2b_update_obj, mod_TrezorCrypto_Blake2b_update);
|
||||
|
||||
/// def trezor.crypto.hashlib.blake2b.digest(self) -> bytes:
|
||||
/// def digest(self) -> bytes:
|
||||
/// '''
|
||||
/// Returns the digest of hashed data.
|
||||
/// '''
|
||||
|
@ -9,6 +9,10 @@
|
||||
|
||||
#include "trezor-crypto/blake2s.h"
|
||||
|
||||
/// class Blake2s:
|
||||
/// '''
|
||||
/// Blake2s context.
|
||||
/// '''
|
||||
typedef struct _mp_obj_Blake2s_t {
|
||||
mp_obj_base_t base;
|
||||
BLAKE2S_CTX ctx;
|
||||
@ -16,7 +20,7 @@ typedef struct _mp_obj_Blake2s_t {
|
||||
|
||||
STATIC mp_obj_t mod_TrezorCrypto_Blake2s_update(mp_obj_t self, mp_obj_t data);
|
||||
|
||||
/// def trezor.crypto.hashlib.blake2s(data: bytes=None, key: bytes=None) -> Blake2s:
|
||||
/// def __init__(self, data: bytes = None, key: bytes = None) -> None:
|
||||
/// '''
|
||||
/// Creates a hash context object.
|
||||
/// '''
|
||||
@ -39,7 +43,7 @@ STATIC mp_obj_t mod_TrezorCrypto_Blake2s_make_new(const mp_obj_type_t *type, siz
|
||||
return MP_OBJ_FROM_PTR(o);
|
||||
}
|
||||
|
||||
/// def trezor.crypto.hashlib.blake2s.update(self, data: bytes) -> None:
|
||||
/// def update(self, data: bytes) -> None:
|
||||
/// '''
|
||||
/// Update the hash context with hashed data.
|
||||
/// '''
|
||||
@ -54,7 +58,7 @@ STATIC mp_obj_t mod_TrezorCrypto_Blake2s_update(mp_obj_t self, mp_obj_t data) {
|
||||
}
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_2(mod_TrezorCrypto_Blake2s_update_obj, mod_TrezorCrypto_Blake2s_update);
|
||||
|
||||
/// def trezor.crypto.hashlib.blake2s.digest(self) -> bytes:
|
||||
/// def digest(self) -> bytes:
|
||||
/// '''
|
||||
/// Returns the digest of hashed data.
|
||||
/// '''
|
||||
|
@ -11,10 +11,16 @@
|
||||
|
||||
#include "rand.h"
|
||||
|
||||
/// class Curve25519:
|
||||
/// '''
|
||||
/// '''
|
||||
typedef struct _mp_obj_Curve25519_t {
|
||||
mp_obj_base_t base;
|
||||
} mp_obj_Curve25519_t;
|
||||
|
||||
/// def __init__(self) -> None:
|
||||
/// '''
|
||||
/// '''
|
||||
STATIC mp_obj_t mod_TrezorCrypto_Curve25519_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *args) {
|
||||
mp_arg_check_num(n_args, n_kw, 0, 0, false);
|
||||
mp_obj_Curve25519_t *o = m_new_obj(mp_obj_Curve25519_t);
|
||||
@ -22,7 +28,7 @@ STATIC mp_obj_t mod_TrezorCrypto_Curve25519_make_new(const mp_obj_type_t *type,
|
||||
return MP_OBJ_FROM_PTR(o);
|
||||
}
|
||||
|
||||
/// def trezor.crypto.curve.curve25519.generate_secret() -> bytes:
|
||||
/// def generate_secret(self) -> bytes:
|
||||
/// '''
|
||||
/// Generate secret key.
|
||||
/// '''
|
||||
@ -38,7 +44,7 @@ STATIC mp_obj_t mod_TrezorCrypto_Curve25519_generate_secret(mp_obj_t self) {
|
||||
}
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_1(mod_TrezorCrypto_Curve25519_generate_secret_obj, mod_TrezorCrypto_Curve25519_generate_secret);
|
||||
|
||||
/// def trezor.crypto.curve.curve25519.publickey(secret_key: bytes) -> bytes:
|
||||
/// def publickey(self, secret_key: bytes) -> bytes:
|
||||
/// '''
|
||||
/// Computes public key from secret key.
|
||||
/// '''
|
||||
@ -55,10 +61,10 @@ STATIC mp_obj_t mod_TrezorCrypto_Curve25519_publickey(mp_obj_t self, mp_obj_t se
|
||||
}
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_2(mod_TrezorCrypto_Curve25519_publickey_obj, mod_TrezorCrypto_Curve25519_publickey);
|
||||
|
||||
/// def trezor.crypto.curve.curve25519.multiply(secret_key: bytes, public_key: bytes) -> bytes:
|
||||
/// def multiply(self, secret_key: bytes, public_key: bytes) -> bytes:
|
||||
/// '''
|
||||
/// Multiplies point defined by public_key with scalar defined by secret_key
|
||||
/// Useful for ECDH
|
||||
/// Multiplies point defined by public_key with scalar defined by secret_key.
|
||||
/// Useful for ECDH.
|
||||
/// '''
|
||||
STATIC mp_obj_t mod_TrezorCrypto_Curve25519_multiply(mp_obj_t self, mp_obj_t secret_key, mp_obj_t public_key) {
|
||||
mp_buffer_info_t sk, pk;
|
||||
|
@ -11,10 +11,16 @@
|
||||
|
||||
#include "rand.h"
|
||||
|
||||
/// class Ed25519:
|
||||
/// '''
|
||||
/// '''
|
||||
typedef struct _mp_obj_Ed25519_t {
|
||||
mp_obj_base_t base;
|
||||
} mp_obj_Ed25519_t;
|
||||
|
||||
/// def __init__(self) -> None:
|
||||
/// '''
|
||||
/// '''
|
||||
STATIC mp_obj_t mod_TrezorCrypto_Ed25519_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *args) {
|
||||
mp_arg_check_num(n_args, n_kw, 0, 0, false);
|
||||
mp_obj_Ed25519_t *o = m_new_obj(mp_obj_Ed25519_t);
|
||||
@ -22,7 +28,7 @@ STATIC mp_obj_t mod_TrezorCrypto_Ed25519_make_new(const mp_obj_type_t *type, siz
|
||||
return MP_OBJ_FROM_PTR(o);
|
||||
}
|
||||
|
||||
/// def trezor.crypto.curve.ed25519.generate_secret() -> bytes:
|
||||
/// def generate_secret(self) -> bytes:
|
||||
/// '''
|
||||
/// Generate secret key.
|
||||
/// '''
|
||||
@ -38,7 +44,7 @@ STATIC mp_obj_t mod_TrezorCrypto_Ed25519_generate_secret(mp_obj_t self) {
|
||||
}
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_1(mod_TrezorCrypto_Ed25519_generate_secret_obj, mod_TrezorCrypto_Ed25519_generate_secret);
|
||||
|
||||
/// def trezor.crypto.curve.ed25519.publickey(secret_key: bytes) -> bytes:
|
||||
/// def publickey(self, secret_key: bytes) -> bytes:
|
||||
/// '''
|
||||
/// Computes public key from secret key.
|
||||
/// '''
|
||||
@ -55,7 +61,7 @@ STATIC mp_obj_t mod_TrezorCrypto_Ed25519_publickey(mp_obj_t self, mp_obj_t secre
|
||||
}
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_2(mod_TrezorCrypto_Ed25519_publickey_obj, mod_TrezorCrypto_Ed25519_publickey);
|
||||
|
||||
/// def trezor.crypto.curve.ed25519.sign(secret_key: bytes, message: bytes) -> bytes:
|
||||
/// def sign(self, secret_key: bytes, message: bytes) -> bytes:
|
||||
/// '''
|
||||
/// Uses secret key to produce the signature of message.
|
||||
/// '''
|
||||
@ -78,7 +84,7 @@ STATIC mp_obj_t mod_TrezorCrypto_Ed25519_sign(mp_obj_t self, mp_obj_t secret_key
|
||||
}
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_3(mod_TrezorCrypto_Ed25519_sign_obj, mod_TrezorCrypto_Ed25519_sign);
|
||||
|
||||
/// def trezor.crypto.curve.ed25519.verify(public_key: bytes, signature: bytes, message: bytes) -> bool:
|
||||
/// def verify(self, public_key: bytes, signature: bytes, message: bytes) -> bool:
|
||||
/// '''
|
||||
/// Uses public key to verify the signature of the message.
|
||||
/// Returns True on success.
|
||||
@ -101,9 +107,9 @@ STATIC mp_obj_t mod_TrezorCrypto_Ed25519_verify(size_t n_args, const mp_obj_t *a
|
||||
}
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(mod_TrezorCrypto_Ed25519_verify_obj, 4, 4, mod_TrezorCrypto_Ed25519_verify);
|
||||
|
||||
/// def trezor.crypto.curve.ed25519.cosi_combine_publickeys(public_keys: list) -> bytes:
|
||||
/// def cosi_combine_publickeys(self, public_keys: List[bytes]) -> bytes:
|
||||
/// '''
|
||||
/// Combines a list of public keys used in COSI cosigning scheme
|
||||
/// Combines a list of public keys used in COSI cosigning scheme.
|
||||
/// '''
|
||||
STATIC mp_obj_t mod_TrezorCrypto_Ed25519_cosi_combine_publickeys(mp_obj_t self, mp_obj_t public_keys) {
|
||||
size_t pklen;
|
||||
@ -130,9 +136,9 @@ STATIC mp_obj_t mod_TrezorCrypto_Ed25519_cosi_combine_publickeys(mp_obj_t self,
|
||||
}
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_2(mod_TrezorCrypto_Ed25519_cosi_combine_publickeys_obj, mod_TrezorCrypto_Ed25519_cosi_combine_publickeys);
|
||||
|
||||
/// def trezor.crypto.curve.ed25519.cosi_combine_signatures(R: bytes, signatures: list) -> bytes:
|
||||
/// def cosi_combine_signatures(self, R: bytes, signatures: List[bytes]) -> bytes:
|
||||
/// '''
|
||||
/// Combines a list of signatures used in COSI cosigning scheme
|
||||
/// Combines a list of signatures used in COSI cosigning scheme.
|
||||
/// '''
|
||||
STATIC mp_obj_t mod_TrezorCrypto_Ed25519_cosi_combine_signatures(mp_obj_t self, mp_obj_t R, mp_obj_t signatures) {
|
||||
mp_buffer_info_t sigR;
|
||||
@ -162,9 +168,9 @@ STATIC mp_obj_t mod_TrezorCrypto_Ed25519_cosi_combine_signatures(mp_obj_t self,
|
||||
}
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_3(mod_TrezorCrypto_Ed25519_cosi_combine_signatures_obj, mod_TrezorCrypto_Ed25519_cosi_combine_signatures);
|
||||
|
||||
/// def trezor.crypto.curve.ed25519.cosi_sign(secret_key: bytes, message: bytes, nonce: bytes, sigR: bytes, combined_pubkey: bytes) -> bytes:
|
||||
/// def cosi_sign(self, secret_key: bytes, message: bytes, nonce: bytes, sigR: bytes, combined_pubkey: bytes) -> bytes:
|
||||
/// '''
|
||||
/// Produce signature of message using COSI cosigning scheme
|
||||
/// Produce signature of message using COSI cosigning scheme.
|
||||
/// '''
|
||||
STATIC mp_obj_t mod_TrezorCrypto_Ed25519_cosi_sign(size_t n_args, const mp_obj_t *args) {
|
||||
mp_buffer_info_t sk, msg, nonce, sigR, pk;
|
||||
|
@ -10,10 +10,16 @@
|
||||
#include "trezor-crypto/ecdsa.h"
|
||||
#include "trezor-crypto/nist256p1.h"
|
||||
|
||||
/// class Nist256p1:
|
||||
/// '''
|
||||
/// '''
|
||||
typedef struct _mp_obj_Nist256p1_t {
|
||||
mp_obj_base_t base;
|
||||
} mp_obj_Nist256p1_t;
|
||||
|
||||
/// def __init__(self) -> None:
|
||||
/// '''
|
||||
/// '''
|
||||
STATIC mp_obj_t mod_TrezorCrypto_Nist256p1_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *args) {
|
||||
mp_arg_check_num(n_args, n_kw, 0, 0, false);
|
||||
mp_obj_Nist256p1_t *o = m_new_obj(mp_obj_Nist256p1_t);
|
||||
@ -21,7 +27,7 @@ STATIC mp_obj_t mod_TrezorCrypto_Nist256p1_make_new(const mp_obj_type_t *type, s
|
||||
return MP_OBJ_FROM_PTR(o);
|
||||
}
|
||||
|
||||
/// def trezor.crypto.curve.nist256p1.generate_secret() -> bytes:
|
||||
/// def generate_secret(self) -> bytes:
|
||||
/// '''
|
||||
/// Generate secret key.
|
||||
/// '''
|
||||
@ -39,7 +45,7 @@ STATIC mp_obj_t mod_TrezorCrypto_Nist256p1_generate_secret(mp_obj_t self) {
|
||||
}
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_1(mod_TrezorCrypto_Nist256p1_generate_secret_obj, mod_TrezorCrypto_Nist256p1_generate_secret);
|
||||
|
||||
/// def trezor.crypto.curve.nist256p1.publickey(secret_key: bytes, compressed: bool=True) -> bytes:
|
||||
/// def publickey(self, secret_key: bytes, compressed: bool = True) -> bytes:
|
||||
/// '''
|
||||
/// Computes public key from secret key.
|
||||
/// '''
|
||||
@ -62,7 +68,7 @@ STATIC mp_obj_t mod_TrezorCrypto_Nist256p1_publickey(size_t n_args, const mp_obj
|
||||
}
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(mod_TrezorCrypto_Nist256p1_publickey_obj, 2, 3, mod_TrezorCrypto_Nist256p1_publickey);
|
||||
|
||||
/// def trezor.crypto.curve.nist256p1.sign(secret_key: bytes, digest: bytes, compressed: bool=True) -> bytes:
|
||||
/// def sign(self, secret_key: bytes, digest: bytes, compressed: bool = True) -> bytes:
|
||||
/// '''
|
||||
/// Uses secret key to produce the signature of the digest.
|
||||
/// '''
|
||||
@ -88,7 +94,7 @@ STATIC mp_obj_t mod_TrezorCrypto_Nist256p1_sign(size_t n_args, const mp_obj_t *a
|
||||
}
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(mod_TrezorCrypto_Nist256p1_sign_obj, 3, 4, mod_TrezorCrypto_Nist256p1_sign);
|
||||
|
||||
/// def trezor.crypto.curve.nist256p1.verify(public_key: bytes, signature: bytes, digest: bytes) -> bool:
|
||||
/// def verify(self, public_key: bytes, signature: bytes, digest: bytes) -> bool:
|
||||
/// '''
|
||||
/// Uses public key to verify the signature of the digest.
|
||||
/// Returns True on success.
|
||||
@ -112,7 +118,7 @@ STATIC mp_obj_t mod_TrezorCrypto_Nist256p1_verify(size_t n_args, const mp_obj_t
|
||||
}
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(mod_TrezorCrypto_Nist256p1_verify_obj, 4, 4, mod_TrezorCrypto_Nist256p1_verify);
|
||||
|
||||
/// def trezor.crypto.curve.nist256p1.verify_recover(signature: bytes, digest: bytes) -> bytes:
|
||||
/// def verify_recover(self, signature: bytes, digest: bytes) -> bytes:
|
||||
/// '''
|
||||
/// Uses signature of the digest to verify the digest and recover the public key.
|
||||
/// Returns public key on success, None on failure.
|
||||
@ -147,7 +153,7 @@ STATIC mp_obj_t mod_TrezorCrypto_Nist256p1_verify_recover(mp_obj_t self, mp_obj_
|
||||
}
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_3(mod_TrezorCrypto_Nist256p1_verify_recover_obj, mod_TrezorCrypto_Nist256p1_verify_recover);
|
||||
|
||||
/// def trezor.crypto.curve.nist256p1.multiply(secret_key: bytes, public_key: bytes) -> bytes:
|
||||
/// def multiply(self, secret_key: bytes, public_key: bytes) -> bytes:
|
||||
/// '''
|
||||
/// Multiplies point defined by public_key with scalar defined by secret_key
|
||||
/// Useful for ECDH
|
||||
|
@ -9,6 +9,10 @@
|
||||
|
||||
#include "trezor-crypto/pbkdf2.h"
|
||||
|
||||
/// class Pbkdf2:
|
||||
/// '''
|
||||
/// PBKDF2 context.
|
||||
/// '''
|
||||
typedef struct _mp_obj_Pbkdf2_t {
|
||||
mp_obj_base_t base;
|
||||
union {
|
||||
@ -20,9 +24,9 @@ typedef struct _mp_obj_Pbkdf2_t {
|
||||
|
||||
STATIC mp_obj_t mod_TrezorCrypto_Pbkdf2_update(mp_obj_t self, mp_obj_t data);
|
||||
|
||||
/// def trezor.crypto.pbkdf2(prf: str, password: bytes, salt: bytes, iterations: int=None) -> Pbkdf2:
|
||||
/// def __init__(self, prf: str, password: bytes, salt: bytes, iterations: int = None) -> None:
|
||||
/// '''
|
||||
/// Create a PBKDF2 context
|
||||
/// Create a PBKDF2 context.
|
||||
/// '''
|
||||
STATIC mp_obj_t mod_TrezorCrypto_Pbkdf2_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *args) {
|
||||
mp_arg_check_num(n_args, n_kw, 3, 4, false);
|
||||
@ -62,9 +66,9 @@ STATIC mp_obj_t mod_TrezorCrypto_Pbkdf2_make_new(const mp_obj_type_t *type, size
|
||||
return MP_OBJ_FROM_PTR(o);
|
||||
}
|
||||
|
||||
/// def trezor.crypto.pbkdf2.update(self, iterations: int) -> None:
|
||||
/// def update(self, iterations: int) -> None:
|
||||
/// '''
|
||||
/// Update a PBKDF2 context
|
||||
/// Update a PBKDF2 context.
|
||||
/// '''
|
||||
STATIC mp_obj_t mod_TrezorCrypto_Pbkdf2_update(mp_obj_t self, mp_obj_t iterations) {
|
||||
mp_obj_Pbkdf2_t *o = MP_OBJ_TO_PTR(self);
|
||||
@ -79,9 +83,9 @@ STATIC mp_obj_t mod_TrezorCrypto_Pbkdf2_update(mp_obj_t self, mp_obj_t iteration
|
||||
}
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_2(mod_TrezorCrypto_Pbkdf2_update_obj, mod_TrezorCrypto_Pbkdf2_update);
|
||||
|
||||
/// def trezor.crypto.pbkdf2.key(self) -> bytes:
|
||||
/// def key(self) -> bytes:
|
||||
/// '''
|
||||
/// Retreive derived key
|
||||
/// Retrieve derived key.
|
||||
/// '''
|
||||
STATIC mp_obj_t mod_TrezorCrypto_Pbkdf2_key(mp_obj_t self) {
|
||||
mp_obj_Pbkdf2_t *o = MP_OBJ_TO_PTR(self);
|
||||
|
@ -9,10 +9,16 @@
|
||||
|
||||
#include "rand.h"
|
||||
|
||||
/// class Random:
|
||||
/// '''
|
||||
/// '''
|
||||
typedef struct _mp_obj_Random_t {
|
||||
mp_obj_base_t base;
|
||||
} mp_obj_Random_t;
|
||||
|
||||
/// def __init__(self) -> None:
|
||||
/// '''
|
||||
/// '''
|
||||
STATIC mp_obj_t mod_TrezorCrypto_Random_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *args) {
|
||||
mp_arg_check_num(n_args, n_kw, 0, 0, false);
|
||||
mp_obj_Random_t *o = m_new_obj(mp_obj_Random_t);
|
||||
@ -20,7 +26,7 @@ STATIC mp_obj_t mod_TrezorCrypto_Random_make_new(const mp_obj_type_t *type, size
|
||||
return MP_OBJ_FROM_PTR(o);
|
||||
}
|
||||
|
||||
/// def trezor.crypto.random.uniform(n: int) -> int:
|
||||
/// def uniform(self, n: int) -> int:
|
||||
/// '''
|
||||
/// Compute uniform random number from interval 0 ... n - 1
|
||||
/// '''
|
||||
@ -33,7 +39,7 @@ STATIC mp_obj_t mod_TrezorCrypto_Random_uniform(mp_obj_t self, mp_obj_t n) {
|
||||
}
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_2(mod_TrezorCrypto_Random_uniform_obj, mod_TrezorCrypto_Random_uniform);
|
||||
|
||||
/// def trezor.crypto.random.bytes(len: int) -> bytes:
|
||||
/// def bytes(self, len: int) -> bytes:
|
||||
/// '''
|
||||
/// Generate random bytes sequence of length len
|
||||
/// '''
|
||||
@ -49,7 +55,7 @@ STATIC mp_obj_t mod_TrezorCrypto_Random_bytes(mp_obj_t self, mp_obj_t len) {
|
||||
}
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_2(mod_TrezorCrypto_Random_bytes_obj, mod_TrezorCrypto_Random_bytes);
|
||||
|
||||
/// def trezor.crypto.random.shuffle(data: list) -> None:
|
||||
/// def shuffle(self, data: list) -> None:
|
||||
/// '''
|
||||
/// Shuffles items of given list (in-place)
|
||||
/// '''
|
||||
|
@ -9,11 +9,19 @@
|
||||
|
||||
#include "trezor-crypto/rfc6979.h"
|
||||
|
||||
/// class Rfc6979:
|
||||
/// '''
|
||||
/// RFC6979 context.
|
||||
/// '''
|
||||
typedef struct _mp_obj_Rfc6979_t {
|
||||
mp_obj_base_t base;
|
||||
rfc6979_state rng;
|
||||
} mp_obj_Rfc6979_t;
|
||||
|
||||
/// def __init__(self, secret_key: bytes, hash: bytes) -> None:
|
||||
/// '''
|
||||
/// Initialize RFC6979 context from secret key and a hash.
|
||||
/// '''
|
||||
STATIC mp_obj_t mod_TrezorCrypto_Rfc6979_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *args) {
|
||||
mp_arg_check_num(n_args, n_kw, 2, 2, false);
|
||||
mp_obj_Rfc6979_t *o = m_new_obj(mp_obj_Rfc6979_t);
|
||||
@ -22,7 +30,7 @@ STATIC mp_obj_t mod_TrezorCrypto_Rfc6979_make_new(const mp_obj_type_t *type, siz
|
||||
mp_get_buffer_raise(args[0], &pkey, MP_BUFFER_READ);
|
||||
mp_get_buffer_raise(args[1], &hash, MP_BUFFER_READ);
|
||||
if (pkey.len != 32) {
|
||||
mp_raise_ValueError("Private key has to be 32 bytes long");
|
||||
mp_raise_ValueError("Secret key has to be 32 bytes long");
|
||||
}
|
||||
if (hash.len != 32) {
|
||||
mp_raise_ValueError("Hash has to be 32 bytes long");
|
||||
@ -31,9 +39,9 @@ STATIC mp_obj_t mod_TrezorCrypto_Rfc6979_make_new(const mp_obj_type_t *type, siz
|
||||
return MP_OBJ_FROM_PTR(o);
|
||||
}
|
||||
|
||||
/// def trezor.crypto.rfc6979.next() -> bytes:
|
||||
/// def next(self) -> bytes:
|
||||
/// '''
|
||||
/// Compute next 32-bytes of pseudorandom data
|
||||
/// Compute next 32-bytes of pseudorandom data.
|
||||
/// '''
|
||||
STATIC mp_obj_t mod_TrezorCrypto_Rfc6979_next(mp_obj_t self) {
|
||||
mp_obj_Rfc6979_t *o = MP_OBJ_TO_PTR(self);
|
||||
|
@ -9,6 +9,10 @@
|
||||
|
||||
#include "trezor-crypto/ripemd160.h"
|
||||
|
||||
/// class Ripemd160:
|
||||
/// '''
|
||||
/// RIPEMD160 context.
|
||||
/// '''
|
||||
typedef struct _mp_obj_Ripemd160_t {
|
||||
mp_obj_base_t base;
|
||||
RIPEMD160_CTX ctx;
|
||||
@ -16,7 +20,7 @@ typedef struct _mp_obj_Ripemd160_t {
|
||||
|
||||
STATIC mp_obj_t mod_TrezorCrypto_Ripemd160_update(mp_obj_t self, mp_obj_t data);
|
||||
|
||||
/// def trezor.crypto.hashlib.ripemd160(data: bytes=None) -> Ripemd160:
|
||||
/// def __init__(self, data: bytes = None) -> None:
|
||||
/// '''
|
||||
/// Creates a hash context object.
|
||||
/// '''
|
||||
@ -32,7 +36,7 @@ STATIC mp_obj_t mod_TrezorCrypto_Ripemd160_make_new(const mp_obj_type_t *type, s
|
||||
return MP_OBJ_FROM_PTR(o);
|
||||
}
|
||||
|
||||
/// def trezor.crypto.hashlib.ripemd160.update(self, data: bytes) -> None:
|
||||
/// def update(self, data: bytes) -> None:
|
||||
/// '''
|
||||
/// Update the hash context with hashed data.
|
||||
/// '''
|
||||
@ -47,7 +51,7 @@ STATIC mp_obj_t mod_TrezorCrypto_Ripemd160_update(mp_obj_t self, mp_obj_t data)
|
||||
}
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_2(mod_TrezorCrypto_Ripemd160_update_obj, mod_TrezorCrypto_Ripemd160_update);
|
||||
|
||||
/// def trezor.crypto.hashlib.ripemd160.digest(self) -> bytes:
|
||||
/// def digest(self) -> bytes:
|
||||
/// '''
|
||||
/// Returns the digest of hashed data.
|
||||
/// '''
|
||||
|
@ -10,10 +10,16 @@
|
||||
#include "trezor-crypto/ecdsa.h"
|
||||
#include "trezor-crypto/secp256k1.h"
|
||||
|
||||
/// class Secp256k1:
|
||||
/// '''
|
||||
/// '''
|
||||
typedef struct _mp_obj_Secp256k1_t {
|
||||
mp_obj_base_t base;
|
||||
} mp_obj_Secp256k1_t;
|
||||
|
||||
/// def __init__(self) -> None:
|
||||
/// '''
|
||||
/// '''
|
||||
STATIC mp_obj_t mod_TrezorCrypto_Secp256k1_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *args) {
|
||||
mp_arg_check_num(n_args, n_kw, 0, 0, false);
|
||||
mp_obj_Secp256k1_t *o = m_new_obj(mp_obj_Secp256k1_t);
|
||||
@ -21,7 +27,7 @@ STATIC mp_obj_t mod_TrezorCrypto_Secp256k1_make_new(const mp_obj_type_t *type, s
|
||||
return MP_OBJ_FROM_PTR(o);
|
||||
}
|
||||
|
||||
/// def trezor.crypto.curve.secp256k1.generate_secret() -> bytes:
|
||||
/// def generate_secret(self, ) -> bytes:
|
||||
/// '''
|
||||
/// Generate secret key.
|
||||
/// '''
|
||||
@ -39,7 +45,7 @@ STATIC mp_obj_t mod_TrezorCrypto_Secp256k1_generate_secret(mp_obj_t self) {
|
||||
}
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_1(mod_TrezorCrypto_Secp256k1_generate_secret_obj, mod_TrezorCrypto_Secp256k1_generate_secret);
|
||||
|
||||
/// def trezor.crypto.curve.secp256k1.publickey(secret_key: bytes, compressed: bool=True) -> bytes:
|
||||
/// def publickey(self, secret_key: bytes, compressed: bool = True) -> bytes:
|
||||
/// '''
|
||||
/// Computes public key from secret key.
|
||||
/// '''
|
||||
@ -62,7 +68,7 @@ STATIC mp_obj_t mod_TrezorCrypto_Secp256k1_publickey(size_t n_args, const mp_obj
|
||||
}
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(mod_TrezorCrypto_Secp256k1_publickey_obj, 2, 3, mod_TrezorCrypto_Secp256k1_publickey);
|
||||
|
||||
/// def trezor.crypto.curve.secp256k1.sign(secret_key: bytes, digest: bytes, compressed: bool=True) -> bytes:
|
||||
/// def sign(self, secret_key: bytes, digest: bytes, compressed: bool = True) -> bytes:
|
||||
/// '''
|
||||
/// Uses secret key to produce the signature of the digest.
|
||||
/// '''
|
||||
@ -88,7 +94,7 @@ STATIC mp_obj_t mod_TrezorCrypto_Secp256k1_sign(size_t n_args, const mp_obj_t *a
|
||||
}
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(mod_TrezorCrypto_Secp256k1_sign_obj, 3, 4, mod_TrezorCrypto_Secp256k1_sign);
|
||||
|
||||
/// def trezor.crypto.curve.secp256k1.verify(public_key: bytes, signature: bytes, digest: bytes) -> bool:
|
||||
/// def verify(self, public_key: bytes, signature: bytes, digest: bytes) -> bool:
|
||||
/// '''
|
||||
/// Uses public key to verify the signature of the digest.
|
||||
/// Returns True on success.
|
||||
@ -112,7 +118,7 @@ STATIC mp_obj_t mod_TrezorCrypto_Secp256k1_verify(size_t n_args, const mp_obj_t
|
||||
}
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(mod_TrezorCrypto_Secp256k1_verify_obj, 4, 4, mod_TrezorCrypto_Secp256k1_verify);
|
||||
|
||||
/// def trezor.crypto.curve.secp256k1.verify_recover(signature: bytes, digest: bytes) -> bytes:
|
||||
/// def verify_recover(self, signature: bytes, digest: bytes) -> bytes:
|
||||
/// '''
|
||||
/// Uses signature of the digest to verify the digest and recover the public key.
|
||||
/// Returns public key on success, None on failure.
|
||||
@ -147,10 +153,10 @@ STATIC mp_obj_t mod_TrezorCrypto_Secp256k1_verify_recover(mp_obj_t self, mp_obj_
|
||||
}
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_3(mod_TrezorCrypto_Secp256k1_verify_recover_obj, mod_TrezorCrypto_Secp256k1_verify_recover);
|
||||
|
||||
/// def trezor.crypto.curve.secp256k1.multiply(secret_key: bytes, public_key: bytes) -> bytes:
|
||||
/// def multiply(self, secret_key: bytes, public_key: bytes) -> bytes:
|
||||
/// '''
|
||||
/// Multiplies point defined by public_key with scalar defined by secret_key
|
||||
/// Useful for ECDH
|
||||
/// Multiplies point defined by public_key with scalar defined by secret_key.
|
||||
/// Useful for ECDH.
|
||||
/// '''
|
||||
STATIC mp_obj_t mod_TrezorCrypto_Secp256k1_multiply(mp_obj_t self, mp_obj_t secret_key, mp_obj_t public_key) {
|
||||
mp_buffer_info_t sk, pk;
|
||||
|
@ -9,6 +9,10 @@
|
||||
|
||||
#include "trezor-crypto/sha2.h"
|
||||
|
||||
/// class Sha1:
|
||||
/// '''
|
||||
/// SHA1 context.
|
||||
/// '''
|
||||
typedef struct _mp_obj_Sha1_t {
|
||||
mp_obj_base_t base;
|
||||
SHA1_CTX ctx;
|
||||
@ -16,7 +20,7 @@ typedef struct _mp_obj_Sha1_t {
|
||||
|
||||
STATIC mp_obj_t mod_TrezorCrypto_Sha1_update(mp_obj_t self, mp_obj_t data);
|
||||
|
||||
/// def trezor.crypto.hashlib.sha1(data: bytes=None) -> Sha1:
|
||||
/// def __init__(self, data: bytes = None) -> None:
|
||||
/// '''
|
||||
/// Creates a hash context object.
|
||||
/// '''
|
||||
@ -32,7 +36,7 @@ STATIC mp_obj_t mod_TrezorCrypto_Sha1_make_new(const mp_obj_type_t *type, size_t
|
||||
return MP_OBJ_FROM_PTR(o);
|
||||
}
|
||||
|
||||
/// def trezor.crypto.hashlib.sha1.update(self, data: bytes) -> None:
|
||||
/// def update(self, data: bytes) -> None:
|
||||
/// '''
|
||||
/// Update the hash context with hashed data.
|
||||
/// '''
|
||||
@ -47,7 +51,7 @@ STATIC mp_obj_t mod_TrezorCrypto_Sha1_update(mp_obj_t self, mp_obj_t data) {
|
||||
}
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_2(mod_TrezorCrypto_Sha1_update_obj, mod_TrezorCrypto_Sha1_update);
|
||||
|
||||
/// def trezor.crypto.hashlib.sha1.digest(self) -> bytes:
|
||||
/// def digest(self) -> bytes:
|
||||
/// '''
|
||||
/// Returns the digest of hashed data.
|
||||
/// '''
|
||||
|
@ -9,6 +9,10 @@
|
||||
|
||||
#include "trezor-crypto/sha2.h"
|
||||
|
||||
/// class Sha256:
|
||||
/// '''
|
||||
/// SHA256 context.
|
||||
/// '''
|
||||
typedef struct _mp_obj_Sha256_t {
|
||||
mp_obj_base_t base;
|
||||
SHA256_CTX ctx;
|
||||
@ -16,7 +20,7 @@ typedef struct _mp_obj_Sha256_t {
|
||||
|
||||
STATIC mp_obj_t mod_TrezorCrypto_Sha256_update(mp_obj_t self, mp_obj_t data);
|
||||
|
||||
/// def trezor.crypto.hashlib.sha256(data: bytes=None) -> Sha256:
|
||||
/// def __init__(self, data: bytes = None) -> None:
|
||||
/// '''
|
||||
/// Creates a hash context object.
|
||||
/// '''
|
||||
@ -32,7 +36,7 @@ STATIC mp_obj_t mod_TrezorCrypto_Sha256_make_new(const mp_obj_type_t *type, size
|
||||
return MP_OBJ_FROM_PTR(o);
|
||||
}
|
||||
|
||||
/// def trezor.crypto.hashlib.sha256.update(self, data: bytes) -> None:
|
||||
/// def update(self, data: bytes) -> None:
|
||||
/// '''
|
||||
/// Update the hash context with hashed data.
|
||||
/// '''
|
||||
@ -47,7 +51,7 @@ STATIC mp_obj_t mod_TrezorCrypto_Sha256_update(mp_obj_t self, mp_obj_t data) {
|
||||
}
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_2(mod_TrezorCrypto_Sha256_update_obj, mod_TrezorCrypto_Sha256_update);
|
||||
|
||||
/// def trezor.crypto.hashlib.sha256.digest(self) -> bytes:
|
||||
/// def digest(self) -> bytes:
|
||||
/// '''
|
||||
/// Returns the digest of hashed data.
|
||||
/// '''
|
||||
|
@ -9,6 +9,10 @@
|
||||
|
||||
#include "trezor-crypto/sha3.h"
|
||||
|
||||
/// class Sha3_256:
|
||||
/// '''
|
||||
/// SHA3_256 context.
|
||||
/// '''
|
||||
typedef struct _mp_obj_Sha3_256_t {
|
||||
mp_obj_base_t base;
|
||||
SHA3_CTX ctx;
|
||||
@ -16,7 +20,7 @@ typedef struct _mp_obj_Sha3_256_t {
|
||||
|
||||
STATIC mp_obj_t mod_TrezorCrypto_Sha3_256_update(mp_obj_t self, mp_obj_t data);
|
||||
|
||||
/// def trezor.crypto.hashlib.sha3_256(data: bytes=None) -> Sha3_256:
|
||||
/// def __init__(self, data: bytes = None) -> None:
|
||||
/// '''
|
||||
/// Creates a hash context object.
|
||||
/// '''
|
||||
@ -32,7 +36,7 @@ STATIC mp_obj_t mod_TrezorCrypto_Sha3_256_make_new(const mp_obj_type_t *type, si
|
||||
return MP_OBJ_FROM_PTR(o);
|
||||
}
|
||||
|
||||
/// def trezor.crypto.hashlib.sha3_256.update(self, data: bytes) -> None:
|
||||
/// def update(self, data: bytes) -> None:
|
||||
/// '''
|
||||
/// Update the hash context with hashed data.
|
||||
/// '''
|
||||
@ -47,7 +51,7 @@ STATIC mp_obj_t mod_TrezorCrypto_Sha3_256_update(mp_obj_t self, mp_obj_t data) {
|
||||
}
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_2(mod_TrezorCrypto_Sha3_256_update_obj, mod_TrezorCrypto_Sha3_256_update);
|
||||
|
||||
/// def trezor.crypto.hashlib.sha3_256.digest(self, keccak: bool=False) -> bytes:
|
||||
/// def digest(self, keccak: bool = False) -> bytes:
|
||||
/// '''
|
||||
/// Returns the digest of hashed data.
|
||||
/// '''
|
||||
|
@ -9,6 +9,10 @@
|
||||
|
||||
#include "trezor-crypto/sha3.h"
|
||||
|
||||
/// class Sha3_512:
|
||||
/// '''
|
||||
/// SHA3_512 context.
|
||||
/// '''
|
||||
typedef struct _mp_obj_Sha3_512_t {
|
||||
mp_obj_base_t base;
|
||||
SHA3_CTX ctx;
|
||||
@ -16,7 +20,7 @@ typedef struct _mp_obj_Sha3_512_t {
|
||||
|
||||
STATIC mp_obj_t mod_TrezorCrypto_Sha3_512_update(mp_obj_t self, mp_obj_t data);
|
||||
|
||||
/// def trezor.crypto.hashlib.sha3_512(data: bytes=None) -> Sha3_512:
|
||||
/// def __init__(self, data: bytes = None) -> None:
|
||||
/// '''
|
||||
/// Creates a hash context object.
|
||||
/// '''
|
||||
@ -32,7 +36,7 @@ STATIC mp_obj_t mod_TrezorCrypto_Sha3_512_make_new(const mp_obj_type_t *type, si
|
||||
return MP_OBJ_FROM_PTR(o);
|
||||
}
|
||||
|
||||
/// def trezor.crypto.hashlib.sha3_512.update(self, data: bytes) -> None:
|
||||
/// def update(self, data: bytes) -> None:
|
||||
/// '''
|
||||
/// Update the hash context with hashed data.
|
||||
/// '''
|
||||
@ -47,7 +51,7 @@ STATIC mp_obj_t mod_TrezorCrypto_Sha3_512_update(mp_obj_t self, mp_obj_t data) {
|
||||
}
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_2(mod_TrezorCrypto_Sha3_512_update_obj, mod_TrezorCrypto_Sha3_512_update);
|
||||
|
||||
/// def trezor.crypto.hashlib.sha3_512.digest(self, keccak: bool=False) -> bytes:
|
||||
/// def digest(self, keccak: bool = False) -> bytes:
|
||||
/// '''
|
||||
/// Returns the digest of hashed data.
|
||||
/// '''
|
||||
|
@ -9,6 +9,10 @@
|
||||
|
||||
#include "trezor-crypto/sha2.h"
|
||||
|
||||
/// class Sha512:
|
||||
/// '''
|
||||
/// SHA512 context.
|
||||
/// '''
|
||||
typedef struct _mp_obj_Sha512_t {
|
||||
mp_obj_base_t base;
|
||||
SHA512_CTX ctx;
|
||||
@ -16,7 +20,7 @@ typedef struct _mp_obj_Sha512_t {
|
||||
|
||||
STATIC mp_obj_t mod_TrezorCrypto_Sha512_update(mp_obj_t self, mp_obj_t data);
|
||||
|
||||
/// def trezor.crypto.hashlib.sha512(data: bytes=None) -> Sha512:
|
||||
/// def __init__(self, data: bytes = None) -> None:
|
||||
/// '''
|
||||
/// Creates a hash context object.
|
||||
/// '''
|
||||
@ -31,7 +35,7 @@ STATIC mp_obj_t mod_TrezorCrypto_Sha512_make_new(const mp_obj_type_t *type, size
|
||||
return MP_OBJ_FROM_PTR(o);
|
||||
}
|
||||
|
||||
/// def trezor.crypto.hashlib.sha512.hash(self, data: bytes) -> None:
|
||||
/// def hash(self, data: bytes) -> None:
|
||||
/// '''
|
||||
/// Update the hash context with hashed data.
|
||||
/// '''
|
||||
@ -46,7 +50,7 @@ STATIC mp_obj_t mod_TrezorCrypto_Sha512_update(mp_obj_t self, mp_obj_t data) {
|
||||
}
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_2(mod_TrezorCrypto_Sha512_update_obj, mod_TrezorCrypto_Sha512_update);
|
||||
|
||||
/// def trezor.crypto.hashlib.sha512.digest(self) -> bytes:
|
||||
/// def digest(self) -> bytes:
|
||||
/// '''
|
||||
/// Returns the digest of hashed data.
|
||||
/// '''
|
||||
|
@ -10,10 +10,16 @@
|
||||
#include "trezor-crypto/bignum.h"
|
||||
#include "ssss.h"
|
||||
|
||||
/// class SSSS:
|
||||
/// '''
|
||||
/// '''
|
||||
typedef struct _mp_obj_SSSS_t {
|
||||
mp_obj_base_t base;
|
||||
} mp_obj_SSSS_t;
|
||||
|
||||
/// def __init__(self) -> None:
|
||||
/// '''
|
||||
/// '''
|
||||
STATIC mp_obj_t mod_TrezorCrypto_SSSS_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *args) {
|
||||
mp_arg_check_num(n_args, n_kw, 0, 0, false);
|
||||
mp_obj_SSSS_t *o = m_new_obj(mp_obj_SSSS_t);
|
||||
@ -21,9 +27,9 @@ STATIC mp_obj_t mod_TrezorCrypto_SSSS_make_new(const mp_obj_type_t *type, size_t
|
||||
return MP_OBJ_FROM_PTR(o);
|
||||
}
|
||||
|
||||
/// def trezor.crypto.ssss.split(m: int, n: int, secret: bytes) -> tuple:
|
||||
/// def split(self, m: int, n: int, secret: bytes) -> tuple:
|
||||
/// '''
|
||||
/// Split secret to (M of N) shares using Shamir's Secret Sharing Scheme
|
||||
/// Split secret to (M of N) shares using Shamir's Secret Sharing Scheme.
|
||||
/// '''
|
||||
STATIC mp_obj_t mod_TrezorCrypto_SSSS_split(size_t n_args, const mp_obj_t *args) {
|
||||
mp_int_t m = mp_obj_get_int(args[1]);
|
||||
@ -53,9 +59,9 @@ STATIC mp_obj_t mod_TrezorCrypto_SSSS_split(size_t n_args, const mp_obj_t *args)
|
||||
}
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(mod_TrezorCrypto_SSSS_split_obj, 4, 4, mod_TrezorCrypto_SSSS_split);
|
||||
|
||||
/// def trezor.crypto.ssss.combine(shares: tuple) -> bytes:
|
||||
/// def combine(self, shares: tuple) -> bytes:
|
||||
/// '''
|
||||
/// Combine M shares of Shamir's Secret Sharing Scheme into secret
|
||||
/// Combine M shares of Shamir's Secret Sharing Scheme into secret.
|
||||
/// '''
|
||||
STATIC mp_obj_t mod_TrezorCrypto_SSSS_combine(mp_obj_t self, mp_obj_t shares) {
|
||||
size_t n;
|
||||
|
@ -24,15 +24,25 @@
|
||||
#error Unsupported TREZOR port. Only STM32 and UNIX ports are supported.
|
||||
#endif
|
||||
|
||||
/*
|
||||
* USB HID interface configuration
|
||||
*/
|
||||
|
||||
/// class HID:
|
||||
/// '''
|
||||
/// USB HID interface configuration.
|
||||
/// '''
|
||||
typedef struct _mp_obj_HID_t {
|
||||
mp_obj_base_t base;
|
||||
usb_hid_info_t info;
|
||||
} mp_obj_HID_t;
|
||||
|
||||
/// def __init__(self,
|
||||
/// iface_num: int,
|
||||
/// ep_in: int,
|
||||
/// ep_out: int,
|
||||
/// report_desc: bytes,
|
||||
/// subclass: int = 0,
|
||||
/// protocol: int = 0,
|
||||
/// polling_interval: int = 1,
|
||||
/// max_packet_len: int = 64) -> None:
|
||||
/// pass
|
||||
STATIC mp_obj_t mod_TrezorMsg_HID_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *args) {
|
||||
|
||||
STATIC const mp_arg_t allowed_args[] = {
|
||||
@ -110,15 +120,22 @@ STATIC const mp_obj_type_t mod_TrezorMsg_HID_type = {
|
||||
.locals_dict = (void*)&mod_TrezorMsg_HID_locals_dict,
|
||||
};
|
||||
|
||||
/*
|
||||
* USB VCP interface configuration
|
||||
*/
|
||||
|
||||
/// class VCP:
|
||||
/// '''
|
||||
/// USB VCP interface configuration.
|
||||
/// '''
|
||||
typedef struct _mp_obj_VCP_t {
|
||||
mp_obj_base_t base;
|
||||
usb_vcp_info_t info;
|
||||
} mp_obj_VCP_t;
|
||||
|
||||
/// def __init__(self,
|
||||
/// iface_num: int,
|
||||
/// data_iface_num: int,
|
||||
/// ep_in: int,
|
||||
/// ep_out: int,
|
||||
/// ep_cmd: int) -> None:
|
||||
/// pass
|
||||
STATIC mp_obj_t mod_TrezorMsg_VCP_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *args) {
|
||||
|
||||
STATIC const mp_arg_t allowed_args[] = {
|
||||
@ -188,10 +205,10 @@ STATIC const mp_obj_type_t mod_TrezorMsg_VCP_type = {
|
||||
.locals_dict = (void*)&mod_TrezorMsg_VCP_locals_dict,
|
||||
};
|
||||
|
||||
/*
|
||||
* USB device configuration
|
||||
*/
|
||||
|
||||
/// class USB:
|
||||
/// '''
|
||||
/// USB device configuration.
|
||||
/// '''
|
||||
typedef struct _mp_obj_USB_t {
|
||||
mp_obj_base_t base;
|
||||
usb_dev_info_t info;
|
||||
@ -211,6 +228,16 @@ static const char *get_0str(mp_obj_t o, size_t min_len, size_t max_len) {
|
||||
}
|
||||
}
|
||||
|
||||
/// def __init__(self,
|
||||
/// vendor_id: int,
|
||||
/// product_id: int,
|
||||
/// release_num: int,
|
||||
/// manufacturer_str: str,
|
||||
/// product_str: str,
|
||||
/// serial_number_str: str,
|
||||
/// configuration_str: str = '',
|
||||
/// interface_str: str = '') -> None:
|
||||
/// pass
|
||||
STATIC mp_obj_t mod_TrezorMsg_USB_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *args) {
|
||||
|
||||
STATIC const mp_arg_t allowed_args[] = {
|
||||
@ -282,16 +309,18 @@ STATIC const mp_obj_type_t mod_TrezorMsg_USB_type = {
|
||||
.locals_dict = (void*)&mod_TrezorMsg_USB_locals_dict,
|
||||
};
|
||||
|
||||
/*
|
||||
* Msg class
|
||||
*/
|
||||
|
||||
/// class Msg:
|
||||
/// '''
|
||||
/// Interface with USB and touch events.
|
||||
/// '''
|
||||
typedef struct _mp_obj_Msg_t {
|
||||
mp_obj_base_t base;
|
||||
mp_obj_t usb_info;
|
||||
mp_obj_t usb_ifaces;
|
||||
} mp_obj_Msg_t;
|
||||
|
||||
/// def __init__(self) -> None:
|
||||
/// pass
|
||||
STATIC mp_obj_t mod_TrezorMsg_Msg_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *args) {
|
||||
mp_arg_check_num(n_args, n_kw, 0, 0, false);
|
||||
msg_init();
|
||||
@ -302,9 +331,9 @@ STATIC mp_obj_t mod_TrezorMsg_Msg_make_new(const mp_obj_type_t *type, size_t n_a
|
||||
return MP_OBJ_FROM_PTR(o);
|
||||
}
|
||||
|
||||
/// def trezor.msg.init_usb(usb_info, usb_ifaces) -> None:
|
||||
/// def init_usb(self, usb_info: USB, usb_ifaces: List[Union[HID, VCP]]) -> None:
|
||||
/// '''
|
||||
/// Registers passed interfaces and initializes the USB stack
|
||||
/// Registers passed interfaces and initializes the USB stack.
|
||||
/// '''
|
||||
STATIC mp_obj_t mod_TrezorMsg_Msg_init_usb(mp_obj_t self, mp_obj_t usb_info, mp_obj_t usb_ifaces) {
|
||||
|
||||
@ -369,7 +398,7 @@ STATIC mp_obj_t mod_TrezorMsg_Msg_init_usb(mp_obj_t self, mp_obj_t usb_info, mp_
|
||||
}
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_3(mod_TrezorMsg_Msg_init_usb_obj, mod_TrezorMsg_Msg_init_usb);
|
||||
|
||||
/// def trezor.msg.deinit_usb() -> None:
|
||||
/// def deinit_usb(self) -> None:
|
||||
/// '''
|
||||
/// Cleans up the USB stack
|
||||
/// '''
|
||||
@ -386,7 +415,7 @@ STATIC mp_obj_t mod_TrezorMsg_Msg_deinit_usb(mp_obj_t self) {
|
||||
}
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_1(mod_TrezorMsg_Msg_deinit_usb_obj, mod_TrezorMsg_Msg_deinit_usb);
|
||||
|
||||
/// def trezor.msg.send(iface: int, message: bytes) -> int:
|
||||
/// def send(self, iface: int, message: bytes) -> int:
|
||||
/// '''
|
||||
/// Sends message using USB HID (device) or UDP (emulator).
|
||||
/// '''
|
||||
@ -404,7 +433,7 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_3(mod_TrezorMsg_Msg_send_obj, mod_TrezorMsg_Msg_s
|
||||
#define TOUCH_IFACE 255
|
||||
extern uint32_t touch_read(void); // defined in HAL
|
||||
|
||||
/// def trezor.msg.select(timeout_us: int) -> tuple:
|
||||
/// def select(self, timeout_us: int) -> tuple:
|
||||
/// '''
|
||||
/// Polls the event queue and returns the event object.
|
||||
/// Function returns None if timeout specified in microseconds is reached.
|
||||
|
@ -9,10 +9,18 @@
|
||||
|
||||
#include "display.h"
|
||||
|
||||
/// class Display:
|
||||
/// '''
|
||||
/// Provide access to device display.
|
||||
/// '''
|
||||
typedef struct _mp_obj_Display_t {
|
||||
mp_obj_base_t base;
|
||||
} mp_obj_Display_t;
|
||||
|
||||
/// def __init__(self) -> None:
|
||||
/// '''
|
||||
/// Initialize the display.
|
||||
/// '''
|
||||
STATIC mp_obj_t mod_TrezorUI_Display_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *args) {
|
||||
mp_arg_check_num(n_args, n_kw, 0, 0, false);
|
||||
display_init();
|
||||
@ -21,9 +29,9 @@ STATIC mp_obj_t mod_TrezorUI_Display_make_new(const mp_obj_type_t *type, size_t
|
||||
return MP_OBJ_FROM_PTR(o);
|
||||
}
|
||||
|
||||
/// def trezor.ui.display.clear() -> None
|
||||
/// def clear(self) -> None:
|
||||
/// '''
|
||||
/// Clear display (with black color)
|
||||
/// Clear display with black color.
|
||||
/// '''
|
||||
STATIC mp_obj_t mod_TrezorUI_Display_clear(mp_obj_t self) {
|
||||
display_clear();
|
||||
@ -31,9 +39,9 @@ STATIC mp_obj_t mod_TrezorUI_Display_clear(mp_obj_t self) {
|
||||
}
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_1(mod_TrezorUI_Display_clear_obj, mod_TrezorUI_Display_clear);
|
||||
|
||||
/// def trezor.ui.display.refresh() -> None
|
||||
/// def refresh(self) -> None:
|
||||
/// '''
|
||||
/// Refresh display (update screen)
|
||||
/// Refresh display (update screen).
|
||||
/// '''
|
||||
STATIC mp_obj_t mod_TrezorUI_Display_refresh(mp_obj_t self) {
|
||||
display_refresh();
|
||||
@ -41,7 +49,7 @@ STATIC mp_obj_t mod_TrezorUI_Display_refresh(mp_obj_t self) {
|
||||
}
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_1(mod_TrezorUI_Display_refresh_obj, mod_TrezorUI_Display_refresh);
|
||||
|
||||
/// def trezor.ui.display.bar(x: int, y: int, w: int, h: int, color: int) -> None:
|
||||
/// def bar(self, x: int, y: int, w: int, h: int, color: int) -> None:
|
||||
/// '''
|
||||
/// Renders a bar at position (x,y = upper left corner) with width w and height h of color color.
|
||||
/// '''
|
||||
@ -56,7 +64,7 @@ STATIC mp_obj_t mod_TrezorUI_Display_bar(size_t n_args, const mp_obj_t *args) {
|
||||
}
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(mod_TrezorUI_Display_bar_obj, 6, 6, mod_TrezorUI_Display_bar);
|
||||
|
||||
/// def trezor.ui.display.bar_radius(x: int, y: int, w: int, h: int, fgcolor: int, bgcolor: int=None, radius: int=None) -> None:
|
||||
/// def bar_radius(self, x: int, y: int, w: int, h: int, fgcolor: int, bgcolor: int = None, radius: int = None) -> None:
|
||||
/// '''
|
||||
/// Renders a rounded bar at position (x,y = upper left corner) with width w and height h of color fgcolor.
|
||||
/// Background is set to bgcolor and corners are drawn with radius radius.
|
||||
@ -74,7 +82,7 @@ STATIC mp_obj_t mod_TrezorUI_Display_bar_radius(size_t n_args, const mp_obj_t *a
|
||||
}
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(mod_TrezorUI_Display_bar_radius_obj, 8, 8, mod_TrezorUI_Display_bar_radius);
|
||||
|
||||
/// def trezor.ui.display.image(x: int, y: int, image: bytes) -> None:
|
||||
/// def image(self, x: int, y: int, image: bytes) -> None:
|
||||
/// '''
|
||||
/// Renders an image at position (x,y).
|
||||
/// The image needs to be in TREZOR Optimized Image Format (TOIF) - full-color mode.
|
||||
@ -99,7 +107,7 @@ STATIC mp_obj_t mod_TrezorUI_Display_image(size_t n_args, const mp_obj_t *args)
|
||||
}
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(mod_TrezorUI_Display_image_obj, 4, 4, mod_TrezorUI_Display_image);
|
||||
|
||||
/// def trezor.ui.display.icon(x: int, y: int, icon: bytes, fgcolor: int, bgcolor: int) -> None:
|
||||
/// def icon(self, x: int, y: int, icon: bytes, fgcolor: int, bgcolor: int) -> None:
|
||||
/// '''
|
||||
/// Renders an icon at position (x,y), fgcolor is used as foreground color, bgcolor as background.
|
||||
/// The image needs to be in TREZOR Optimized Image Format (TOIF) - gray-scale mode.
|
||||
@ -126,9 +134,9 @@ STATIC mp_obj_t mod_TrezorUI_Display_icon(size_t n_args, const mp_obj_t *args) {
|
||||
}
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(mod_TrezorUI_Display_icon_obj, 6, 6, mod_TrezorUI_Display_icon);
|
||||
|
||||
/// def trezor.ui.display.print(text: str) -> None:
|
||||
/// def print(self, text: str) -> None:
|
||||
/// '''
|
||||
/// Renders text using 5x8 bitmap font (using special text mode)
|
||||
/// Renders text using 5x8 bitmap font (using special text mode).
|
||||
/// '''
|
||||
STATIC mp_obj_t mod_TrezorUI_Display_print(mp_obj_t self, mp_obj_t text) {
|
||||
mp_buffer_info_t buf;
|
||||
@ -140,7 +148,7 @@ STATIC mp_obj_t mod_TrezorUI_Display_print(mp_obj_t self, mp_obj_t text) {
|
||||
}
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_2(mod_TrezorUI_Display_print_obj, mod_TrezorUI_Display_print);
|
||||
|
||||
/// def trezor.ui.display.text(x: int, y: int, text: str, font: int, fgcolor: int, bgcolor: int) -> None:
|
||||
/// def text(self, x: int, y: int, text: str, font: int, fgcolor: int, bgcolor: int) -> None:
|
||||
/// '''
|
||||
/// Renders left-aligned text at position (x,y) where x is left position and y is baseline.
|
||||
/// Font font is used for rendering, fgcolor is used as foreground color, bgcolor as background.
|
||||
@ -160,7 +168,7 @@ STATIC mp_obj_t mod_TrezorUI_Display_text(size_t n_args, const mp_obj_t *args) {
|
||||
}
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(mod_TrezorUI_Display_text_obj, 7, 7, mod_TrezorUI_Display_text);
|
||||
|
||||
/// def trezor.ui.display.text_center(x: int, y: int, text: str, font: int, fgcolor: int, bgcolor: int) -> None:
|
||||
/// def text_center(self, x: int, y: int, text: str, font: int, fgcolor: int, bgcolor: int) -> None:
|
||||
/// '''
|
||||
/// Renders text centered at position (x,y) where x is text center and y is baseline.
|
||||
/// Font font is used for rendering, fgcolor is used as foreground color, bgcolor as background.
|
||||
@ -180,7 +188,7 @@ STATIC mp_obj_t mod_TrezorUI_Display_text_center(size_t n_args, const mp_obj_t *
|
||||
}
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(mod_TrezorUI_Display_text_center_obj, 7, 7, mod_TrezorUI_Display_text_center);
|
||||
|
||||
/// def trezor.ui.display.text_right(x: int, y: int, text: str, font: int, fgcolor: int, bgcolor: int) -> None:
|
||||
/// def text_right(self, x: int, y: int, text: str, font: int, fgcolor: int, bgcolor: int) -> None:
|
||||
/// '''
|
||||
/// Renders right-aligned text at position (x,y) where x is right position and y is baseline.
|
||||
/// Font font is used for rendering, fgcolor is used as foreground color, bgcolor as background.
|
||||
@ -200,7 +208,7 @@ STATIC mp_obj_t mod_TrezorUI_Display_text_right(size_t n_args, const mp_obj_t *a
|
||||
}
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(mod_TrezorUI_Display_text_right_obj, 7, 7, mod_TrezorUI_Display_text_right);
|
||||
|
||||
/// def trezor.ui.display.text_width(text: str, font: int) -> int:
|
||||
/// def text_width(self, text: str, font: int) -> int:
|
||||
/// '''
|
||||
/// Returns a width of text in pixels. Font font is used for rendering.
|
||||
/// '''
|
||||
@ -216,7 +224,7 @@ STATIC mp_obj_t mod_TrezorUI_Display_text_width(mp_obj_t self, mp_obj_t text, mp
|
||||
}
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_3(mod_TrezorUI_Display_text_width_obj, mod_TrezorUI_Display_text_width);
|
||||
|
||||
/// def trezor.ui.display.qrcode(x: int, y: int, data: bytes, scale: int) -> None:
|
||||
/// def qrcode(self, x: int, y: int, data: bytes, scale: int) -> None:
|
||||
/// '''
|
||||
/// Renders data encoded as a QR code centered at position (x,y).
|
||||
/// Scale determines a zoom factor.
|
||||
@ -237,7 +245,7 @@ STATIC mp_obj_t mod_TrezorUI_Display_qrcode(size_t n_args, const mp_obj_t *args)
|
||||
}
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(mod_TrezorUI_Display_qrcode_obj, 5, 5, mod_TrezorUI_Display_qrcode);
|
||||
|
||||
/// def trezor.ui.display.loader(progress: int, yoffset: int, fgcolor: int, bgcolor: int, icon: bytes=None, iconfgcolor: int=None) -> None:
|
||||
/// def loader(self, progress: int, yoffset: int, fgcolor: int, bgcolor: int, icon: bytes = None, iconfgcolor: int = None) -> None:
|
||||
/// '''
|
||||
/// Renders a rotating loader graphic.
|
||||
/// Progress determines its position (0-1000), fgcolor is used as foreground color, bgcolor as background.
|
||||
@ -279,7 +287,7 @@ STATIC mp_obj_t mod_TrezorUI_Display_loader(size_t n_args, const mp_obj_t *args)
|
||||
}
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(mod_TrezorUI_Display_loader_obj, 5, 7, mod_TrezorUI_Display_loader);
|
||||
|
||||
/// def trezor.ui.display.orientation(degrees: int=None) -> int:
|
||||
/// def orientation(self, degrees: int = None) -> int:
|
||||
/// '''
|
||||
/// Sets display orientation to 0, 90, 180 or 270 degrees.
|
||||
/// Everything needs to be redrawn again when this function is used.
|
||||
@ -300,7 +308,7 @@ STATIC mp_obj_t mod_TrezorUI_Display_orientation(size_t n_args, const mp_obj_t *
|
||||
}
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(mod_TrezorUI_Display_orientation_obj, 1, 2, mod_TrezorUI_Display_orientation);
|
||||
|
||||
/// def trezor.ui.display.backlight(val: int=None) -> int:
|
||||
/// def backlight(self, val: int = None) -> int:
|
||||
/// '''
|
||||
/// Sets backlight intensity to the value specified in val.
|
||||
/// Call without the val parameter to just perform the read of the value.
|
||||
@ -320,7 +328,7 @@ STATIC mp_obj_t mod_TrezorUI_Display_backlight(size_t n_args, const mp_obj_t *ar
|
||||
}
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(mod_TrezorUI_Display_backlight_obj, 1, 2, mod_TrezorUI_Display_backlight);
|
||||
|
||||
/// def trezor.ui.display.offset(xy: tuple=None) -> tuple:
|
||||
/// def offset(self, xy: Tuple[int, int] = None) -> Tuple[int, int]:
|
||||
/// '''
|
||||
/// Sets offset (x, y) for all subsequent drawing calls.
|
||||
/// Call without the xy parameter to just perform the read of the value.
|
||||
@ -352,7 +360,7 @@ STATIC mp_obj_t mod_TrezorUI_Display_offset(size_t n_args, const mp_obj_t *args)
|
||||
}
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(mod_TrezorUI_Display_offset_obj, 1, 2, mod_TrezorUI_Display_offset);
|
||||
|
||||
/// def trezor.ui.display.save(filename: string) -> None:
|
||||
/// def save(self, filename: str) -> None:
|
||||
/// '''
|
||||
/// Saves current display contents to file filename.
|
||||
/// '''
|
||||
|
@ -12,9 +12,9 @@
|
||||
#include <string.h>
|
||||
#include "common.h"
|
||||
|
||||
/// def trezor.utils.memcpy(dst: bytearray, dst_ofs: int,
|
||||
/// def memcpy(dst: bytearray, dst_ofs: int,
|
||||
/// src: bytearray, src_ofs: int,
|
||||
// n: int) -> int:
|
||||
/// n: int) -> int:
|
||||
/// '''
|
||||
/// Copies at most `n` bytes from `src` at offset `src_ofs` to
|
||||
/// `dst` at offset `dst_ofs`. Returns the number of actually
|
||||
@ -51,9 +51,9 @@ STATIC mp_obj_t mod_TrezorUtils_memcpy(size_t n_args, const mp_obj_t *args) {
|
||||
}
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(mod_TrezorUtils_memcpy_obj, 5, 5, mod_TrezorUtils_memcpy);
|
||||
|
||||
/// def trezor.utils.halt(msg: str=None) -> None:
|
||||
/// def halt(msg: str = None) -> None:
|
||||
/// '''
|
||||
/// Halts execution
|
||||
/// Halts execution.
|
||||
/// '''
|
||||
STATIC mp_obj_t mod_TrezorUtils_halt(size_t n_args, const mp_obj_t *args) {
|
||||
mp_buffer_info_t msg;
|
||||
|
Loading…
Reference in New Issue
Block a user