refactor(core): use mp_obj_new_str_from_vstr
What changed, and why it matters
This is a code cleanup change in Trezor's firmware that swaps one MicroPython internal helper for another. It replaces calls that create byte or string objects from a vstr buffer with newer, purpose-built helpers. The commit message says the new string helper also does UTF-8 validation, which can be skipped where performance matters. The change itself does not introduce a known vulnerability; it is a refactor to match upstream MicroPython conventions.
No immediate action required. Treat as routine maintenance. If reviewing for security, verify separately that the new MicroPython helpers (mp_obj_new_str_from_vstr / mp_obj_new_bytes_from_vstr) are present in the bundled MicroPython version and behave equivalently, especially that bytes objects are not subject to UTF-8 validation.
Security signals we found
Refactor only: helper function renames with equivalent semantics
New str helper adds UTF-8 validation; bytes helper does not validate
No input validation, length, or error-handling changes observed
No changelog entry; commit tagged [no changelog]
Evidence from the diff
The commit refactors Trezor’s MicroPython C modules to use mp_obj_new_str_from_vstr(vstr) and mp_obj_new_bytes_from_vstr(vstr) instead of the older mp_obj_new_str_from_vstr(&mp_type_str, vstr) / mp_obj_new_str_from_vstr(&mp_type_bytes, vstr). This follows upstream MicroPython commits 0b9ee861 and 88864587. The new str variant performs UTF-8 validation; the bytes variant does not. The diff shows many crypto modules returning bytes objects via the new helper, and a few returning str objects (xpub, address, base58, tropic ping). No logic changes, bounds checks, or memory handling changes are visible in the diff.
Changed components
core/embed/projects/unix/main.ccore/embed/upymod/modtrezorconfig/modtrezorconfig.ccore/embed/upymod/modtrezorcrypto/*core/embed/upymod/modtrezorutils/modtrezorutils.cInspect captured patch +72 / −74
diff --git a/core/embed/projects/unix/main.c b/core/embed/projects/unix/main.c
index 43204861..85dc2319 100644
--- a/core/embed/projects/unix/main.c
+++ b/core/embed/projects/unix/main.c
@@ -450,7 +450,7 @@ reimport:
vstr_init(&vstr, len + sizeof(".__main__"));
vstr_add_strn(&vstr, modname, len);
vstr_add_strn(&vstr, ".__main__", sizeof(".__main__") - 1);
- import_args[0] = mp_obj_new_str_from_vstr(&mp_type_str, &vstr);
+ import_args[0] = mp_obj_new_str_from_vstr(&vstr);
goto reimport;
}
@@ -540,7 +540,7 @@ MP_NOINLINE int main_(int argc, char **argv) {
vstr_init(&vstr, home_l + (p1 - p - 1) + 1);
vstr_add_strn(&vstr, home, home_l);
vstr_add_strn(&vstr, p + 1, p1 - p - 1);
- path_items[i] = mp_obj_new_str_from_vstr(&mp_type_str, &vstr);
+ path_items[i] = mp_obj_new_str_from_vstr(&vstr);
} else {
path_items[i] = mp_obj_new_str_via_qstr(p, p1 - p);
}
diff --git a/core/embed/upymod/modtrezorconfig/modtrezorconfig.c b/core/embed/upymod/modtrezorconfig/modtrezorconfig.c
index 7f8cdf2b..39390778 100644
--- a/core/embed/upymod/modtrezorconfig/modtrezorconfig.c
+++ b/core/embed/upymod/modtrezorconfig/modtrezorconfig.c
@@ -340,7 +340,7 @@ STATIC mp_obj_t mod_trezorconfig_get(size_t n_args, const mp_obj_t *args) {
mp_raise_msg(&mp_type_RuntimeError,
MP_ERROR_TEXT("Failed to get value from storage."));
}
- return mp_obj_new_str_from_vstr(&mp_type_bytes, &vstr);
+ return mp_obj_new_bytes_from_vstr(&vstr);
}
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(mod_trezorconfig_get_obj, 2, 3,
mod_trezorconfig_get);
diff --git a/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-aes.h b/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-aes.h
index aac688e0..a770a459 100644
--- a/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-aes.h
+++ b/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-aes.h
@@ -158,7 +158,7 @@ static mp_obj_t aes_update(mp_obj_t self, mp_obj_t data, bool encrypt) {
aes_ctr_cbuf_inc, &(o->encrypt_ctx));
break;
}
- return mp_obj_new_str_from_vstr(&mp_type_bytes, &vstr);
+ return mp_obj_new_bytes_from_vstr(&vstr);
}
/// def encrypt(self, data: AnyBytes) -> bytes:
diff --git a/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-aesgcm.h b/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-aesgcm.h
index eb3bffad..20fb774e 100644
--- a/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-aesgcm.h
+++ b/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-aesgcm.h
@@ -129,7 +129,7 @@ STATIC mp_obj_t mod_trezorcrypto_AesGcm_encrypt(mp_obj_t self, mp_obj_t data) {
o->state = STATE_FAILED;
mp_raise_type(&mp_type_RuntimeError);
}
- return mp_obj_new_str_from_vstr(&mp_type_bytes, &vstr);
+ return mp_obj_new_bytes_from_vstr(&vstr);
}
STATIC MP_DEFINE_CONST_FUN_OBJ_2(mod_trezorcrypto_AesGcm_encrypt_obj,
mod_trezorcrypto_AesGcm_encrypt);
@@ -174,7 +174,7 @@ STATIC mp_obj_t mod_trezorcrypto_AesGcm_encrypt_finish(mp_obj_t self) {
o->state = STATE_FAILED;
mp_raise_type(&mp_type_RuntimeError);
}
- return mp_obj_new_str_from_vstr(&mp_type_bytes, &tag);
+ return mp_obj_new_bytes_from_vstr(&tag);
}
STATIC MP_DEFINE_CONST_FUN_OBJ_1(mod_trezorcrypto_AesGcm_encrypt_finish_obj,
mod_trezorcrypto_AesGcm_encrypt_finish);
@@ -221,7 +221,7 @@ STATIC mp_obj_t mod_trezorcrypto_AesGcm_decrypt(mp_obj_t self, mp_obj_t data) {
o->state = STATE_FAILED;
mp_raise_type(&mp_type_RuntimeError);
}
- return mp_obj_new_str_from_vstr(&mp_type_bytes, &vstr);
+ return mp_obj_new_bytes_from_vstr(&vstr);
}
STATIC MP_DEFINE_CONST_FUN_OBJ_2(mod_trezorcrypto_AesGcm_decrypt_obj,
mod_trezorcrypto_AesGcm_decrypt);
diff --git a/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-bip32.h b/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-bip32.h
index 2347e5b7..d8b8f992 100644
--- a/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-bip32.h
+++ b/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-bip32.h
@@ -238,7 +238,7 @@ STATIC mp_obj_t mod_trezorcrypto_HDNode_serialize_public(mp_obj_t self,
}
// written includes NULL at the end of the string
xpub.len = written - 1;
- return mp_obj_new_str_from_vstr(&mp_type_str, &xpub);
+ return mp_obj_new_str_from_vstr(&xpub);
}
STATIC MP_DEFINE_CONST_FUN_OBJ_2(mod_trezorcrypto_HDNode_serialize_public_obj,
mod_trezorcrypto_HDNode_serialize_public);
@@ -355,7 +355,7 @@ STATIC mp_obj_t mod_trezorcrypto_HDNode_address(mp_obj_t self,
mp_raise_ValueError(MP_ERROR_TEXT("Failed to get address"));
}
address.len = strlen(address.buf);
- return mp_obj_new_str_from_vstr(&mp_type_str, &address);
+ return mp_obj_new_str_from_vstr(&address);
}
STATIC MP_DEFINE_CONST_FUN_OBJ_2(mod_trezorcrypto_HDNode_address_obj,
mod_trezorcrypto_HDNode_address);
@@ -380,7 +380,7 @@ STATIC mp_obj_t mod_trezorcrypto_HDNode_nem_address(mp_obj_t self,
mp_raise_ValueError(MP_ERROR_TEXT("Failed to compute a NEM address"));
}
address.len = strlen(address.buf);
- return mp_obj_new_str_from_vstr(&mp_type_str, &address);
+ return mp_obj_new_str_from_vstr(&address);
}
STATIC MP_DEFINE_CONST_FUN_OBJ_2(mod_trezorcrypto_HDNode_nem_address_obj,
mod_trezorcrypto_HDNode_nem_address);
@@ -429,7 +429,7 @@ STATIC mp_obj_t mod_trezorcrypto_HDNode_nem_encrypt(size_t n_args,
salt.buf, payload.buf, payload.len, (uint8_t *)vstr.buf)) {
mp_raise_ValueError(MP_ERROR_TEXT("HDNode nem encrypt failed"));
}
- return mp_obj_new_str_from_vstr(&mp_type_bytes, &vstr);
+ return mp_obj_new_bytes_from_vstr(&vstr);
}
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(
mod_trezorcrypto_HDNode_nem_encrypt_obj, 5, 5,
@@ -447,7 +447,7 @@ STATIC mp_obj_t mod_trezorcrypto_HDNode_ethereum_pubkeyhash(mp_obj_t self) {
vstr_t pkh = {0};
vstr_init_len(&pkh, 20);
hdnode_get_ethereum_pubkeyhash(&o->hdnode, (uint8_t *)pkh.buf);
- return mp_obj_new_str_from_vstr(&mp_type_bytes, &pkh);
+ return mp_obj_new_bytes_from_vstr(&pkh);
}
STATIC MP_DEFINE_CONST_FUN_OBJ_1(
mod_trezorcrypto_HDNode_ethereum_pubkeyhash_obj,
diff --git a/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-bip340.h b/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-bip340.h
index c5bf0c42..edcb2d2f 100644
--- a/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-bip340.h
+++ b/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-bip340.h
@@ -53,7 +53,7 @@ STATIC mp_obj_t mod_trezorcrypto_bip340_generate_secret() {
continue;
break;
}
- return mp_obj_new_str_from_vstr(&mp_type_bytes, &sk);
+ return mp_obj_new_bytes_from_vstr(&sk);
}
STATIC MP_DEFINE_CONST_FUN_OBJ_0(mod_trezorcrypto_bip340_generate_secret_obj,
mod_trezorcrypto_bip340_generate_secret);
@@ -76,7 +76,7 @@ STATIC mp_obj_t mod_trezorcrypto_bip340_publickey(mp_obj_t secret_key) {
vstr_clear(&pk);
mp_raise_ValueError(MP_ERROR_TEXT("Invalid secret key"));
}
- return mp_obj_new_str_from_vstr(&mp_type_bytes, &pk);
+ return mp_obj_new_bytes_from_vstr(&pk);
}
STATIC MP_DEFINE_CONST_FUN_OBJ_1(mod_trezorcrypto_bip340_publickey_obj,
@@ -110,7 +110,7 @@ STATIC mp_obj_t mod_trezorcrypto_bip340_sign(mp_obj_t secret_key,
vstr_clear(&sig);
mp_raise_ValueError(MP_ERROR_TEXT("Signing failed"));
}
- return mp_obj_new_str_from_vstr(&mp_type_bytes, &sig);
+ return mp_obj_new_bytes_from_vstr(&sig);
}
STATIC MP_DEFINE_CONST_FUN_OBJ_2(mod_trezorcrypto_bip340_sign_obj,
@@ -197,7 +197,7 @@ STATIC mp_obj_t mod_trezorcrypto_bip340_tweak_public_key(size_t n_args,
vstr_clear(&tpk);
mp_raise_ValueError(MP_ERROR_TEXT("Failed to tweak public key"));
}
- return mp_obj_new_str_from_vstr(&mp_type_bytes, &tpk);
+ return mp_obj_new_bytes_from_vstr(&tpk);
}
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(
@@ -237,7 +237,7 @@ STATIC mp_obj_t mod_trezorcrypto_bip340_tweak_secret_key(size_t n_args,
vstr_clear(&tsk);
mp_raise_ValueError(MP_ERROR_TEXT("Failed to tweak secret key"));
}
- return mp_obj_new_str_from_vstr(&mp_type_bytes, &tsk);
+ return mp_obj_new_bytes_from_vstr(&tsk);
}
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(
diff --git a/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-bip39.h b/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-bip39.h
index a7dc9c0d..2d18f160 100644
--- a/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-bip39.h
+++ b/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-bip39.h
@@ -86,7 +86,7 @@ STATIC mp_obj_t mod_trezorcrypto_bip39_seed(size_t n_args,
// generate without callback
mnemonic_to_seed(pmnemonic, ppassphrase, (uint8_t *)seed.buf, NULL);
}
- return mp_obj_new_str_from_vstr(&mp_type_bytes, &seed);
+ return mp_obj_new_bytes_from_vstr(&seed);
}
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(mod_trezorcrypto_bip39_seed_obj, 2,
3, mod_trezorcrypto_bip39_seed);
diff --git a/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-blake256.h b/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-blake256.h
index bd46342d..f8683f5d 100644
--- a/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-blake256.h
+++ b/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-blake256.h
@@ -83,7 +83,7 @@ STATIC mp_obj_t mod_trezorcrypto_Blake256_digest(mp_obj_t self) {
memcpy(&ctx, &(o->ctx), sizeof(BLAKE256_CTX));
blake256_Final(&ctx, (uint8_t *)hash.buf);
memzero(&ctx, sizeof(BLAKE256_CTX));
- return mp_obj_new_str_from_vstr(&mp_type_bytes, &hash);
+ return mp_obj_new_bytes_from_vstr(&hash);
}
STATIC MP_DEFINE_CONST_FUN_OBJ_1(mod_trezorcrypto_Blake256_digest_obj,
mod_trezorcrypto_Blake256_digest);
diff --git a/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-blake2b.h b/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-blake2b.h
index 903f2546..a8fb6625 100644
--- a/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-blake2b.h
+++ b/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-blake2b.h
@@ -137,7 +137,7 @@ STATIC mp_obj_t mod_trezorcrypto_Blake2b_digest(mp_obj_t self) {
vstr_init_len(&hash, ctx.outlen);
blake2b_Final(&ctx, (uint8_t *)hash.buf, hash.len);
memzero(&ctx, sizeof(BLAKE2B_CTX));
- return mp_obj_new_str_from_vstr(&mp_type_bytes, &hash);
+ return mp_obj_new_bytes_from_vstr(&hash);
}
STATIC MP_DEFINE_CONST_FUN_OBJ_1(mod_trezorcrypto_Blake2b_digest_obj,
mod_trezorcrypto_Blake2b_digest);
diff --git a/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-blake2s.h b/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-blake2s.h
index a09334f6..fe55d616 100644
--- a/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-blake2s.h
+++ b/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-blake2s.h
@@ -137,7 +137,7 @@ STATIC mp_obj_t mod_trezorcrypto_Blake2s_digest(mp_obj_t self) {
vstr_init_len(&hash, ctx.outlen);
blake2s_Final(&ctx, (uint8_t *)hash.buf, hash.len);
memzero(&ctx, sizeof(BLAKE2S_CTX));
- return mp_obj_new_str_from_vstr(&mp_type_bytes, &hash);
+ return mp_obj_new_bytes_from_vstr(&hash);
}
STATIC MP_DEFINE_CONST_FUN_OBJ_1(mod_trezorcrypto_Blake2s_digest_obj,
mod_trezorcrypto_Blake2s_digest);
diff --git a/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-cardano.h b/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-cardano.h
index 8b78da02..80744c64 100644
--- a/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-cardano.h
+++ b/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-cardano.h
@@ -86,7 +86,7 @@ STATIC mp_obj_t mod_trezorcrypto_cardano_derive_icarus(size_t n_args,
MP_ERROR_TEXT("Unexpected failure in Icarus derivation."));
}
- return mp_obj_new_str_from_vstr(&mp_type_bytes, &vstr);
+ return mp_obj_new_bytes_from_vstr(&vstr);
}
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(
diff --git a/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-chacha20poly1305.h b/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-chacha20poly1305.h
index f22596d8..17d708ce 100644
--- a/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-chacha20poly1305.h
+++ b/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-chacha20poly1305.h
@@ -110,7 +110,7 @@ STATIC mp_obj_t mod_trezorcrypto_ChaCha20Poly1305_encrypt(mp_obj_t self,
vstr_init_len(&vstr, in.len);
chacha20poly1305_encrypt(&(o->ctx), in.buf, (uint8_t *)vstr.buf, in.len);
o->plen += in.len;
- return mp_obj_new_str_from_vstr(&mp_type_bytes, &vstr);
+ return mp_obj_new_bytes_from_vstr(&vstr);
}
STATIC MP_DEFINE_CONST_FUN_OBJ_2(mod_trezorcrypto_ChaCha20Poly1305_encrypt_obj,
mod_trezorcrypto_ChaCha20Poly1305_encrypt);
@@ -130,7 +130,7 @@ mod_trezorcrypto_ChaCha20Poly1305_encrypt_finish(mp_obj_t self) {
vstr_t mac = {0};
vstr_init_len(&mac, 16);
rfc7539_finish(&(o->ctx), o->alen, o->plen, (uint8_t *)mac.buf);
- return mp_obj_new_str_from_vstr(&mp_type_bytes, &mac);
+ return mp_obj_new_bytes_from_vstr(&mac);
}
STATIC MP_DEFINE_CONST_FUN_OBJ_1(
mod_trezorcrypto_ChaCha20Poly1305_encrypt_finish_obj,
@@ -172,7 +172,7 @@ STATIC mp_obj_t mod_trezorcrypto_ChaCha20Poly1305_decrypt(mp_obj_t self,
vstr_init_len(&vstr, in.len);
chacha20poly1305_decrypt(&(o->ctx), in.buf, (uint8_t *)vstr.buf, in.len);
o->plen += in.len;
- return mp_obj_new_str_from_vstr(&mp_type_bytes, &vstr);
+ return mp_obj_new_bytes_from_vstr(&vstr);
}
STATIC MP_DEFINE_CONST_FUN_OBJ_2(mod_trezorcrypto_ChaCha20Poly1305_decrypt_obj,
mod_trezorcrypto_ChaCha20Poly1305_decrypt);
diff --git a/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-curve25519.h b/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-curve25519.h
index 04dec57a..b2fefecf 100644
--- a/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-curve25519.h
+++ b/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-curve25519.h
@@ -37,7 +37,7 @@ STATIC mp_obj_t mod_trezorcrypto_curve25519_generate_secret() {
sk.buf[0] &= 248;
sk.buf[31] &= 127;
sk.buf[31] |= 64;
- return mp_obj_new_str_from_vstr(&mp_type_bytes, &sk);
+ return mp_obj_new_bytes_from_vstr(&sk);
}
STATIC MP_DEFINE_CONST_FUN_OBJ_0(
mod_trezorcrypto_curve25519_generate_secret_obj,
@@ -56,7 +56,7 @@ STATIC mp_obj_t mod_trezorcrypto_curve25519_publickey(mp_obj_t secret_key) {
vstr_t pk = {0};
vstr_init_len(&pk, 32);
curve25519_scalarmult_basepoint((uint8_t *)pk.buf, (const uint8_t *)sk.buf);
- return mp_obj_new_str_from_vstr(&mp_type_bytes, &pk);
+ return mp_obj_new_bytes_from_vstr(&pk);
}
STATIC MP_DEFINE_CONST_FUN_OBJ_1(mod_trezorcrypto_curve25519_publickey_obj,
mod_trezorcrypto_curve25519_publickey);
@@ -81,7 +81,7 @@ STATIC mp_obj_t mod_trezorcrypto_curve25519_multiply(mp_obj_t secret_key,
vstr_init_len(&out, 32);
curve25519_scalarmult((uint8_t *)out.buf, (const uint8_t *)sk.buf,
(const uint8_t *)pk.buf);
- return mp_obj_new_str_from_vstr(&mp_type_bytes, &out);
+ return mp_obj_new_bytes_from_vstr(&out);
}
STATIC MP_DEFINE_CONST_FUN_OBJ_2(mod_trezorcrypto_curve25519_multiply_obj,
mod_trezorcrypto_curve25519_multiply);
diff --git a/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-ed25519.h b/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-ed25519.h
index 1c8df495..b159824c 100644
--- a/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-ed25519.h
+++ b/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-ed25519.h
@@ -34,7 +34,7 @@ STATIC mp_obj_t mod_trezorcrypto_ed25519_generate_secret() {
vstr_t sk = {0};
vstr_init_len(&sk, 32);
rng_fill_buffer((uint8_t *)sk.buf, sk.len);
- return mp_obj_new_str_from_vstr(&mp_type_bytes, &sk);
+ return mp_obj_new_bytes_from_vstr(&sk);
}
STATIC MP_DEFINE_CONST_FUN_OBJ_0(mod_trezorcrypto_ed25519_generate_secret_obj,
mod_trezorcrypto_ed25519_generate_secret);
@@ -53,7 +53,7 @@ STATIC mp_obj_t mod_trezorcrypto_ed25519_publickey(mp_obj_t secret_key) {
vstr_init_len(&pk, sizeof(ed25519_public_key));
ed25519_publickey(*(const ed25519_secret_key *)sk.buf,
*(ed25519_public_key *)pk.buf);
- return mp_obj_new_str_from_vstr(&mp_type_bytes, &pk);
+ return mp_obj_new_bytes_from_vstr(&pk);
}
STATIC MP_DEFINE_CONST_FUN_OBJ_1(mod_trezorcrypto_ed25519_publickey_obj,
mod_trezorcrypto_ed25519_publickey);
@@ -94,7 +94,7 @@ STATIC mp_obj_t mod_trezorcrypto_ed25519_sign(size_t n_args,
*(ed25519_signature *)sig.buf);
}
- return mp_obj_new_str_from_vstr(&mp_type_bytes, &sig);
+ return mp_obj_new_bytes_from_vstr(&sig);
}
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(mod_trezorcrypto_ed25519_sign_obj, 2,
3, mod_trezorcrypto_ed25519_sign);
@@ -129,7 +129,7 @@ STATIC mp_obj_t mod_trezorcrypto_ed25519_sign_ext(mp_obj_t secret_scalar,
ed25519_sign_ext(msg.buf, msg.len, *(const ed25519_secret_key *)sk.buf,
*(const ed25519_secret_key *)skext.buf,
*(ed25519_signature *)sig.buf);
- return mp_obj_new_str_from_vstr(&mp_type_bytes, &sig);
+ return mp_obj_new_bytes_from_vstr(&sig);
}
STATIC MP_DEFINE_CONST_FUN_OBJ_3(mod_trezorcrypto_ed25519_sign_ext_obj,
mod_trezorcrypto_ed25519_sign_ext);
@@ -198,7 +198,7 @@ mod_trezorcrypto_ed25519_cosi_combine_publickeys(mp_obj_t public_keys) {
vstr_clear(&pk);
mp_raise_ValueError(MP_ERROR_TEXT("Error combining public keys"));
}
- return mp_obj_new_str_from_vstr(&mp_type_bytes, &pk);
+ return mp_obj_new_bytes_from_vstr(&pk);
}
STATIC MP_DEFINE_CONST_FUN_OBJ_1(
mod_trezorcrypto_ed25519_cosi_combine_publickeys_obj,
@@ -239,7 +239,7 @@ STATIC mp_obj_t mod_trezorcrypto_ed25519_cosi_combine_signatures(
ed25519_cosi_combine_signatures(*(ed25519_signature *)sig.buf,
*(const ed25519_public_key *)sigR.buf, sigs,
siglen);
- return mp_obj_new_str_from_vstr(&mp_type_bytes, &sig);
+ return mp_obj_new_bytes_from_vstr(&sig);
}
STATIC MP_DEFINE_CONST_FUN_OBJ_2(
mod_trezorcrypto_ed25519_cosi_combine_signatures_obj,
@@ -257,8 +257,8 @@ STATIC mp_obj_t mod_trezorcrypto_ed25519_cosi_commit() {
ed25519_cosi_commit(*(ed25519_secret_key *)nonce.buf,
*(ed25519_public_key *)commitment.buf);
mp_obj_tuple_t *tuple = MP_OBJ_TO_PTR(mp_obj_new_tuple(2, NULL));
- tuple->items[0] = mp_obj_new_str_from_vstr(&mp_type_bytes, &nonce);
- tuple->items[1] = mp_obj_new_str_from_vstr(&mp_type_bytes, &commitment);
+ tuple->items[0] = mp_obj_new_bytes_from_vstr(&nonce);
+ tuple->items[1] = mp_obj_new_bytes_from_vstr(&commitment);
return MP_OBJ_FROM_PTR(tuple);
}
STATIC MP_DEFINE_CONST_FUN_OBJ_0(mod_trezorcrypto_ed25519_cosi_commit_obj,
@@ -306,7 +306,7 @@ STATIC mp_obj_t mod_trezorcrypto_ed25519_cosi_sign(size_t n_args,
vstr_clear(&sig);
mp_raise_ValueError(MP_ERROR_TEXT("Signing failed"));
}
- return mp_obj_new_str_from_vstr(&mp_type_bytes, &sig);
+ return mp_obj_new_bytes_from_vstr(&sig);
}
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(
mod_trezorcrypto_ed25519_cosi_sign_obj, 5, 5,
diff --git a/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-elligator2.h b/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-elligator2.h
index 4200f7d4..9eef8f83 100644
--- a/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-elligator2.h
+++ b/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-elligator2.h
@@ -44,7 +44,7 @@ mp_obj_t mod_trezorcrypto_elligator2_map_to_curve25519(mp_obj_t input) {
mp_raise_ValueError(NULL);
}
- return mp_obj_new_str_from_vstr(&mp_type_bytes, &output_vstr);
+ return mp_obj_new_bytes_from_vstr(&output_vstr);
}
STATIC MP_DEFINE_CONST_FUN_OBJ_1(
mod_trezorcrypto_elligator2_map_to_curve25519_obj,
diff --git a/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-groestl.h b/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-groestl.h
index 0e2e4f80..d9297339 100644
--- a/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-groestl.h
+++ b/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-groestl.h
@@ -87,7 +87,7 @@ STATIC mp_obj_t mod_trezorcrypto_Groestl512_digest(mp_obj_t self) {
memcpy(&ctx, &(o->ctx), sizeof(GROESTL512_CTX));
groestl512_Final(&ctx, (uint8_t *)hash.buf);
memzero(&ctx, sizeof(GROESTL512_CTX));
- return mp_obj_new_str_from_vstr(&mp_type_bytes, &hash);
+ return mp_obj_new_bytes_from_vstr(&hash);
}
STATIC MP_DEFINE_CONST_FUN_OBJ_1(mod_trezorcrypto_Groestl512_digest_obj,
mod_trezorcrypto_Groestl512_digest);
diff --git a/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-hmac.h b/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-hmac.h
index 3e819d8f..c7b1458d 100644
--- a/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-hmac.h
+++ b/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-hmac.h
@@ -125,7 +125,7 @@ STATIC mp_obj_t mod_trezorcrypto_Hmac_digest(mp_obj_t self) {
} else {
mp_raise_ValueError(MP_ERROR_TEXT("Invalid hashtype"));
}
- return mp_obj_new_str_from_vstr(&mp_type_bytes, &mac);
+ return mp_obj_new_bytes_from_vstr(&mac);
}
STATIC MP_DEFINE_CONST_FUN_OBJ_1(mod_trezorcrypto_Hmac_digest_obj,
mod_trezorcrypto_Hmac_digest);
diff --git a/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-mcu.h b/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-mcu.h
index 9cf636bb..6e29c064 100644
--- a/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-mcu.h
+++ b/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-mcu.h
@@ -44,7 +44,7 @@ STATIC mp_obj_t mod_trezorcrypto_mcu_get_certificate(void) {
}
cert.len = cert_size;
- return mp_obj_new_str_from_vstr(&mp_type_bytes, &cert);
+ return mp_obj_new_bytes_from_vstr(&cert);
}
STATIC MP_DEFINE_CONST_FUN_OBJ_0(mod_trezorcrypto_mcu_get_certificate_obj,
mod_trezorcrypto_mcu_get_certificate);
@@ -66,7 +66,7 @@ STATIC mp_obj_t mod_trezorcrypto_mcu_sign(mp_obj_t challenge) {
}
sig.len = MCU_ATTESTATION_SIG_SIZE;
- return mp_obj_new_str_from_vstr(&mp_type_bytes, &sig);
+ return mp_obj_new_bytes_from_vstr(&sig);
}
STATIC MP_DEFINE_CONST_FUN_OBJ_1(mod_trezorcrypto_mcu_sign_obj,
mod_trezorcrypto_mcu_sign);
diff --git a/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-monero.h b/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-monero.h
index 67c1de60..1cb9ae9b 100644
--- a/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-monero.h
+++ b/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-monero.h
@@ -430,7 +430,7 @@ STATIC mp_obj_t mod_trezorcrypto_monero_encodeint_into(size_t n_args,
vstr_t out = {0};
vstr_init_len(&out, 32);
contract256_modm((uint8_t *)out.buf, MP_OBJ_C_SCALAR(args[1]));
- return mp_obj_new_str_from_vstr(&mp_type_bytes, &out);
+ return mp_obj_new_bytes_from_vstr(&out);
} else {
mp_buffer_info_t bufm = {0};
mp_get_buffer_raise(args[0], &bufm, MP_BUFFER_WRITE);
@@ -690,7 +690,7 @@ STATIC mp_obj_t mod_trezorcrypto_monero_encodepoint_into(size_t n_args,
vstr_t out = {0};
vstr_init_len(&out, 32);
ge25519_pack((uint8_t *)out.buf, &MP_OBJ_C_GE25519(args[1]));
- return mp_obj_new_str_from_vstr(&mp_type_bytes, &out);
+ return mp_obj_new_bytes_from_vstr(&out);
} else {
mp_buffer_info_t bufm = {0};
mp_get_buffer_raise(args[0], &bufm, MP_BUFFER_WRITE);
@@ -748,7 +748,7 @@ STATIC mp_obj_t mod_trezorcrypto_monero_xmr_base58_addr_encode_check(
}
out.len = sz;
- return mp_obj_new_str_from_vstr(&mp_type_str, &out);
+ return mp_obj_new_str_from_vstr(&out);
}
STATIC MP_DEFINE_CONST_FUN_OBJ_2(
mod_trezorcrypto_monero_xmr_base58_addr_encode_check_obj,
@@ -777,7 +777,7 @@ mod_trezorcrypto_monero_xmr_base58_addr_decode_check(const mp_obj_t buff) {
out.len = sz;
mp_obj_tuple_t *tuple = MP_OBJ_TO_PTR(mp_obj_new_tuple(2, NULL));
- tuple->items[0] = mp_obj_new_str_from_vstr(&mp_type_bytes, &out);
+ tuple->items[0] = mp_obj_new_bytes_from_vstr(&out);
tuple->items[1] = mp_obj_new_int_from_ull(tag);
return MP_OBJ_FROM_PTR(tuple);
}
@@ -836,9 +836,7 @@ STATIC mp_obj_t mod_trezorcrypto_monero_fast_hash_into(size_t n_args,
mp_raise_ValueError(MP_ERROR_TEXT("Illegal offset/length"));
}
xmr_fast_hash(buff_use, (const char *)data.buf + offset, length);
- return args[0] != mp_const_none
- ? args[0]
- : mp_obj_new_str_from_vstr(&mp_type_bytes, &out);
+ return args[0] != mp_const_none ? args[0] : mp_obj_new_bytes_from_vstr(&out);
}
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(
mod_trezorcrypto_monero_fast_hash_into_obj, 2, 4,
diff --git a/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-nist256p1.h b/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-nist256p1.h
index 5f214ad0..7b35cd24 100644
--- a/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-nist256p1.h
+++ b/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-nist256p1.h
@@ -52,7 +52,7 @@ STATIC mp_obj_t mod_trezorcrypto_nist256p1_generate_secret() {
continue;
break;
}
- return mp_obj_new_str_from_vstr(&mp_type_bytes, &sk);
+ return mp_obj_new_bytes_from_vstr(&sk);
}
STATIC MP_DEFINE_CONST_FUN_OBJ_0(mod_trezorcrypto_nist256p1_generate_secret_obj,
mod_trezorcrypto_nist256p1_generate_secret);
@@ -83,7 +83,7 @@ STATIC mp_obj_t mod_trezorcrypto_nist256p1_publickey(size_t n_args,
mp_raise_ValueError(MP_ERROR_TEXT("Invalid secret key"));
}
}
- return mp_obj_new_str_from_vstr(&mp_type_bytes, &pk);
+ return mp_obj_new_bytes_from_vstr(&pk);
}
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(
mod_trezorcrypto_nist256p1_publickey_obj, 1, 2,
@@ -118,7 +118,7 @@ STATIC mp_obj_t mod_trezorcrypto_nist256p1_sign(size_t n_args,
mp_raise_ValueError(MP_ERROR_TEXT("Signing failed"));
}
sig.buf[0] = 27 + pby + compressed * 4;
- return mp_obj_new_str_from_vstr(&mp_type_bytes, &sig);
+ return mp_obj_new_bytes_from_vstr(&sig);
}
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(mod_trezorcrypto_nist256p1_sign_obj,
2, 3,
@@ -187,7 +187,7 @@ STATIC mp_obj_t mod_trezorcrypto_nist256p1_verify_recover(mp_obj_t signature,
pk.buf[0] = 0x02 | (pk.buf[64] & 1);
pk.len = 33;
}
- return mp_obj_new_str_from_vstr(&mp_type_bytes, &pk);
+ return mp_obj_new_bytes_from_vstr(&pk);
} else {
return mp_const_none;
}
@@ -218,7 +218,7 @@ STATIC mp_obj_t mod_trezorcrypto_nist256p1_multiply(mp_obj_t secret_key,
vstr_clear(&out);
mp_raise_ValueError(MP_ERROR_TEXT("Multiply failed"));
}
- return mp_obj_new_str_from_vstr(&mp_type_bytes, &out);
+ return mp_obj_new_bytes_from_vstr(&out);
}
STATIC MP_DEFINE_CONST_FUN_OBJ_2(mod_trezorcrypto_nist256p1_multiply_obj,
mod_trezorcrypto_nist256p1_multiply);
diff --git a/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-optiga.h b/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-optiga.h
index 3dccf6c6..6ac4c4cc 100644
--- a/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-optiga.h
+++ b/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-optiga.h
@@ -61,7 +61,7 @@ STATIC mp_obj_t mod_trezorcrypto_optiga_get_certificate(mp_obj_t cert_index) {
}
cert.len = cert_size;
- return mp_obj_new_str_from_vstr(&mp_type_bytes, &cert);
+ return mp_obj_new_bytes_from_vstr(&cert);
}
STATIC MP_DEFINE_CONST_FUN_OBJ_1(mod_trezorcrypto_optiga_get_certificate_obj,
mod_trezorcrypto_optiga_get_certificate);
@@ -104,7 +104,7 @@ STATIC mp_obj_t mod_trezorcrypto_optiga_sign(mp_obj_t key_index,
}
sig.len = sig_size;
- return mp_obj_new_str_from_vstr(&mp_type_bytes, &sig);
+ return mp_obj_new_bytes_from_vstr(&sig);
}
STATIC MP_DEFINE_CONST_FUN_OBJ_2(mod_trezorcrypto_optiga_sign_obj,
mod_trezorcrypto_optiga_sign);
diff --git a/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-pbkdf2.h b/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-pbkdf2.h
index cf2880d4..0c818e6f 100644
--- a/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-pbkdf2.h
+++ b/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-pbkdf2.h
@@ -141,7 +141,7 @@ STATIC mp_obj_t mod_trezorcrypto_Pbkdf2_key(mp_obj_t self) {
} else {
mp_raise_ValueError(MP_ERROR_TEXT("Invalid PRF"));
}
- return mp_obj_new_str_from_vstr(&mp_type_bytes, &out);
+ return mp_obj_new_bytes_from_vstr(&out);
}
STATIC MP_DEFINE_CONST_FUN_OBJ_1(mod_trezorcrypto_Pbkdf2_key_obj,
mod_trezorcrypto_Pbkdf2_key);
diff --git a/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-random.h b/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-random.h
index 39061ea2..0be7d55a 100644
--- a/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-random.h
+++ b/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-random.h
@@ -63,7 +63,7 @@ STATIC mp_obj_t mod_trezorcrypto_random_bytes(size_t n_args,
} else {
rng_fill_buffer((uint8_t *)vstr.buf, len);
}
- return mp_obj_new_str_from_vstr(&mp_type_bytes, &vstr);
+ return mp_obj_new_bytes_from_vstr(&vstr);
}
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(mod_trezorcrypto_random_bytes_obj, 1,
2, mod_trezorcrypto_random_bytes);
diff --git a/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-ripemd160.h b/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-ripemd160.h
index cc889719..c9eca332 100644
--- a/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-ripemd160.h
+++ b/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-ripemd160.h
@@ -84,7 +84,7 @@ STATIC mp_obj_t mod_trezorcrypto_Ripemd160_digest(mp_obj_t self) {
memcpy(&ctx, &(o->ctx), sizeof(ripemd160_state));
ripemd160_done(&ctx, (uint8_t *)hash.buf);
memzero(&ctx, sizeof(ripemd160_state));
- return mp_obj_new_str_from_vstr(&mp_type_bytes, &hash);
+ return mp_obj_new_bytes_from_vstr(&hash);
}
STATIC MP_DEFINE_CONST_FUN_OBJ_1(mod_trezorcrypto_Ripemd160_digest_obj,
mod_trezorcrypto_Ripemd160_digest);
diff --git a/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-secp256k1.h b/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-secp256k1.h
index 9de7d3bc..a24ecc96 100644
--- a/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-secp256k1.h
+++ b/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-secp256k1.h
@@ -52,7 +52,7 @@ STATIC mp_obj_t mod_trezorcrypto_secp256k1_generate_secret() {
continue;
break;
}
- return mp_obj_new_str_from_vstr(&mp_type_bytes, &sk);
+ return mp_obj_new_bytes_from_vstr(&sk);
}
STATIC MP_DEFINE_CONST_FUN_OBJ_0(mod_trezorcrypto_secp256k1_generate_secret_obj,
mod_trezorcrypto_secp256k1_generate_secret);
@@ -84,7 +84,7 @@ STATIC mp_obj_t mod_trezorcrypto_secp256k1_publickey(size_t n_args,
vstr_clear(&pk);
mp_raise_ValueError(MP_ERROR_TEXT("Invalid secret key"));
}
- return mp_obj_new_str_from_vstr(&mp_type_bytes, &pk);
+ return mp_obj_new_bytes_from_vstr(&pk);
}
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(
mod_trezorcrypto_secp256k1_publickey_obj, 1, 2,
@@ -160,7 +160,7 @@ STATIC mp_obj_t mod_trezorcrypto_secp256k1_sign(size_t n_args,
mp_raise_ValueError(MP_ERROR_TEXT("Signing failed"));
}
sig.buf[0] = 27 + pby + compressed * 4;
- return mp_obj_new_str_from_vstr(&mp_type_bytes, &sig);
+ return mp_obj_new_bytes_from_vstr(&sig);
}
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(mod_trezorcrypto_secp256k1_sign_obj,
2, 4,
@@ -229,7 +229,7 @@ STATIC mp_obj_t mod_trezorcrypto_secp256k1_verify_recover(mp_obj_t signature,
pk.buf[0] = 0x02 | (pk.buf[64] & 1);
pk.len = 33;
}
- return mp_obj_new_str_from_vstr(&mp_type_bytes, &pk);
+ return mp_obj_new_bytes_from_vstr(&pk);
} else {
return mp_const_none;
}
@@ -260,7 +260,7 @@ STATIC mp_obj_t mod_trezorcrypto_secp256k1_multiply(mp_obj_t secret_key,
vstr_clear(&out);
mp_raise_ValueError(MP_ERROR_TEXT("Multiply failed"));
}
- return mp_obj_new_str_from_vstr(&mp_type_bytes, &out);
+ return mp_obj_new_bytes_from_vstr(&out);
}
STATIC MP_DEFINE_CONST_FUN_OBJ_2(mod_trezorcrypto_secp256k1_multiply_obj,
mod_trezorcrypto_secp256k1_multiply);
diff --git a/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-sha1.h b/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-sha1.h
index 82440ca0..8f9c5a41 100644
--- a/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-sha1.h
+++ b/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-sha1.h
@@ -83,7 +83,7 @@ STATIC mp_obj_t mod_trezorcrypto_Sha1_digest(mp_obj_t self) {
memcpy(&ctx, &(o->ctx), sizeof(SHA1_CTX));
sha1_Final(&ctx, (uint8_t *)hash.buf);
memzero(&ctx, sizeof(SHA1_CTX));
- return mp_obj_new_str_from_vstr(&mp_type_bytes, &hash);
+ return mp_obj_new_bytes_from_vstr(&hash);
}
STATIC MP_DEFINE_CONST_FUN_OBJ_1(mod_trezorcrypto_Sha1_digest_obj,
mod_trezorcrypto_Sha1_digest);
diff --git a/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-sha256.h b/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-sha256.h
index a88dbcf0..d1b76a26 100644
--- a/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-sha256.h
+++ b/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-sha256.h
@@ -83,7 +83,7 @@ STATIC mp_obj_t mod_trezorcrypto_Sha256_digest(mp_obj_t self) {
memcpy(&ctx, &(o->ctx), sizeof(SHA256_CTX));
sha256_Final(&ctx, (uint8_t *)hash.buf);
memzero(&ctx, sizeof(SHA256_CTX));
- return mp_obj_new_str_from_vstr(&mp_type_bytes, &hash);
+ return mp_obj_new_bytes_from_vstr(&hash);
}
STATIC MP_DEFINE_CONST_FUN_OBJ_1(mod_trezorcrypto_Sha256_digest_obj,
mod_trezorcrypto_Sha256_digest);
diff --git a/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-sha3-256.h b/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-sha3-256.h
index 6e672c6d..282ba96b 100644
--- a/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-sha3-256.h
+++ b/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-sha3-256.h
@@ -104,7 +104,7 @@ STATIC mp_obj_t mod_trezorcrypto_Sha3_256_digest(mp_obj_t self) {
sha3_Final(&ctx, (uint8_t *)hash.buf);
}
memzero(&ctx, sizeof(SHA3_CTX));
- return mp_obj_new_str_from_vstr(&mp_type_bytes, &hash);
+ return mp_obj_new_bytes_from_vstr(&hash);
}
STATIC MP_DEFINE_CONST_FUN_OBJ_1(mod_trezorcrypto_Sha3_256_digest_obj,
mod_trezorcrypto_Sha3_256_digest);
diff --git a/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-sha3-512.h b/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-sha3-512.h
index b66e3682..47bd9394 100644
--- a/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-sha3-512.h
+++ b/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-sha3-512.h
@@ -104,7 +104,7 @@ STATIC mp_obj_t mod_trezorcrypto_Sha3_512_digest(mp_obj_t self) {
sha3_Final(&ctx, (uint8_t *)hash.buf);
}
memzero(&ctx, sizeof(SHA3_CTX));
- return mp_obj_new_str_from_vstr(&mp_type_bytes, &hash);
+ return mp_obj_new_bytes_from_vstr(&hash);
}
STATIC MP_DEFINE_CONST_FUN_OBJ_1(mod_trezorcrypto_Sha3_512_digest_obj,
mod_trezorcrypto_Sha3_512_digest);
diff --git a/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-sha512.h b/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-sha512.h
index 9c6ac8e4..517ac49d 100644
--- a/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-sha512.h
+++ b/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-sha512.h
@@ -82,7 +82,7 @@ STATIC mp_obj_t mod_trezorcrypto_Sha512_digest(mp_obj_t self) {
memcpy(&ctx, &(o->ctx), sizeof(SHA512_CTX));
sha512_Final(&ctx, (uint8_t *)hash.buf);
memzero(&ctx, sizeof(SHA512_CTX));
- return mp_obj_new_str_from_vstr(&mp_type_bytes, &hash);
+ return mp_obj_new_bytes_from_vstr(&hash);
}
STATIC MP_DEFINE_CONST_FUN_OBJ_1(mod_trezorcrypto_Sha512_digest_obj,
mod_trezorcrypto_Sha512_digest);
diff --git a/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-shamir.h b/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-shamir.h
index 5a4e35b1..1c6b6f3b 100644
--- a/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-shamir.h
+++ b/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-shamir.h
@@ -76,7 +76,7 @@ mp_obj_t mod_trezorcrypto_shamir_interpolate(mp_obj_t shares, mp_obj_t x) {
mp_raise_ValueError(
MP_ERROR_TEXT("Share indices must be pairwise distinct."));
}
- return mp_obj_new_str_from_vstr(&mp_type_bytes, &vstr);
+ return mp_obj_new_bytes_from_vstr(&vstr);
}
STATIC MP_DEFINE_CONST_FUN_OBJ_2(mod_trezorcrypto_shamir_interpolate_obj,
mod_trezorcrypto_shamir_interpolate);
diff --git a/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-tropic.h b/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-tropic.h
index 30875397..168cf7da 100644
--- a/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-tropic.h
+++ b/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-tropic.h
@@ -58,7 +58,7 @@ STATIC mp_obj_t mod_trezorcrypto_tropic_ping(mp_obj_t message) {
memcpy(result.buf, msg_in, message_b.len);
- return mp_obj_new_str_from_vstr(&mp_type_str, &result);
+ return mp_obj_new_str_from_vstr(&result);
}
STATIC MP_DEFINE_CONST_FUN_OBJ_1(mod_trezorcrypto_tropic_ping_obj,
mod_trezorcrypto_tropic_ping);
@@ -115,7 +115,7 @@ STATIC mp_obj_t mod_trezorcrypto_tropic_sign(mp_obj_t key_index,
}
sig.len = sizeof(ed25519_signature);
- return mp_obj_new_str_from_vstr(&mp_type_bytes, &sig);
+ return mp_obj_new_bytes_from_vstr(&sig);
}
STATIC MP_DEFINE_CONST_FUN_OBJ_2(mod_trezorcrypto_tropic_sign_obj,
mod_trezorcrypto_tropic_sign);
@@ -165,7 +165,7 @@ STATIC mp_obj_t mod_trezorcrypto_tropic_get_user_data(mp_obj_t index) {
}
data.len = data_size;
- return mp_obj_new_str_from_vstr(&mp_type_bytes, &data);
+ return mp_obj_new_bytes_from_vstr(&data);
}
STATIC MP_DEFINE_CONST_FUN_OBJ_1(mod_trezorcrypto_tropic_get_user_data_obj,
mod_trezorcrypto_tropic_get_user_data);
diff --git a/core/embed/upymod/modtrezorutils/modtrezorutils.c b/core/embed/upymod/modtrezorutils/modtrezorutils.c
index 4bc19857..eb15b0cf 100644
--- a/core/embed/upymod/modtrezorutils/modtrezorutils.c
+++ b/core/embed/upymod/modtrezorutils/modtrezorutils.c
@@ -247,7 +247,7 @@ STATIC mp_obj_t mod_trezorutils_firmware_hash(size_t n_args,
}
}
- return mp_obj_new_str_from_vstr(&mp_type_bytes, &vstr);
+ return mp_obj_new_bytes_from_vstr(&vstr);
}
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(mod_trezorutils_firmware_hash_obj, 0,
Why this scored 17/100
Community notes
Notes can correct, qualify, or add evidence to the AI analysis. Every note shown here has been validated by a human moderator.
The AI analysis stands alone for now. Submit a note if you can add evidence or important context.