From 0b1b032f3ec36284aabf767f99c8dea0a3b1286b Mon Sep 17 00:00:00 2001 From: scgbckbone Date: Tue, 21 Apr 2026 10:37:32 +0200 Subject: [PATCH 01/15] update mpy to v1.28 --- libs/mpy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libs/mpy b/libs/mpy index ab754d5..e0e9fbb 160000 --- a/libs/mpy +++ b/libs/mpy @@ -1 +1 @@ -Subproject commit ab754d5924168d027bfc2eeed7881b9b2e469535 +Subproject commit e0e9fbb17ed6fd06bb76e266ae554784c9c80804 From c783a6b93938a317ee73b4f709271e59316d8b40 Mon Sep 17 00:00:00 2001 From: scgbckbone Date: Tue, 21 Apr 2026 11:05:28 +0200 Subject: [PATCH 02/15] fix MP_REGISTER_MODULE --- ngu/modngu.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ngu/modngu.c b/ngu/modngu.c index a5090c1..2390183 100644 --- a/ngu/modngu.c +++ b/ngu/modngu.c @@ -55,6 +55,6 @@ const mp_obj_module_t mp_module_ngu = { .globals = (mp_obj_dict_t *)&mp_module_ngu_globals, }; -MP_REGISTER_MODULE(MP_QSTR_ngu, mp_module_ngu, 1); +MP_REGISTER_MODULE(MP_QSTR_ngu, mp_module_ngu); From 9e1fb664178efaa070df0479411237de408640ad Mon Sep 17 00:00:00 2001 From: scgbckbone Date: Tue, 21 Apr 2026 11:06:17 +0200 Subject: [PATCH 03/15] vibed: modngu_hash_sha512_make_new --- ngu/hash.c | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/ngu/hash.c b/ngu/hash.c index 829bd75..8d7398d 100644 --- a/ngu/hash.c +++ b/ngu/hash.c @@ -42,23 +42,29 @@ void ripemd160(const uint8_t *msg, int msglen, uint8_t digest[20]); // SHA512 // -STATIC mp_obj_t modngu_hash_sha512_update(mp_obj_t self_in, mp_obj_t arg); - STATIC mp_obj_t modngu_hash_sha512_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, 1, false); + #if MICROPY_SSL_MBEDTLS - mp_obj_hash_t *o = m_new_obj_var(mp_obj_hash_t, char, sizeof(mbedtls_sha512_context)); + // New v1.28 allocation: 4 arguments + correct field name + uintptr_t alignment + size_t n = (sizeof(mbedtls_sha512_context) + sizeof(uintptr_t) - 1) / sizeof(uintptr_t); + mp_obj_hash_t *o = m_new_obj_var(mp_obj_hash_t, state, uintptr_t, n); o->base.type = type; + o->final = false; // ← REQUIRED in v1.28+ mbedtls_sha512_init((mbedtls_sha512_context *)o->state); mbedtls_sha512_starts_ret((mbedtls_sha512_context *)o->state, false); #else - mp_obj_hash_t *o = m_new_obj_var(mp_obj_hash_t, char, sizeof(cf_sha512_context)); + // Same pattern for the tinycrypt/cf fallback + size_t n = (sizeof(cf_sha512_context) + sizeof(uintptr_t) - 1) / sizeof(uintptr_t); + mp_obj_hash_t *o = m_new_obj_var(mp_obj_hash_t, state, uintptr_t, n); o->base.type = type; + o->final = false; // ← REQUIRED in v1.28+ + cf_sha512_init((cf_sha512_context *)o->state); #endif - if(n_args == 1) { + if (n_args == 1) { modngu_hash_sha512_update(MP_OBJ_FROM_PTR(o), args[0]); } From d26c1aa145b4d81ab29c8cecfd79ff3288e0e96c Mon Sep 17 00:00:00 2001 From: scgbckbone Date: Tue, 21 Apr 2026 11:12:59 +0200 Subject: [PATCH 04/15] vibe fix --- ngu/hash.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/ngu/hash.c b/ngu/hash.c index 8d7398d..cff10d7 100644 --- a/ngu/hash.c +++ b/ngu/hash.c @@ -50,7 +50,6 @@ STATIC mp_obj_t modngu_hash_sha512_make_new(const mp_obj_type_t *type, size_t n_ size_t n = (sizeof(mbedtls_sha512_context) + sizeof(uintptr_t) - 1) / sizeof(uintptr_t); mp_obj_hash_t *o = m_new_obj_var(mp_obj_hash_t, state, uintptr_t, n); o->base.type = type; - o->final = false; // ← REQUIRED in v1.28+ mbedtls_sha512_init((mbedtls_sha512_context *)o->state); mbedtls_sha512_starts_ret((mbedtls_sha512_context *)o->state, false); @@ -59,7 +58,6 @@ STATIC mp_obj_t modngu_hash_sha512_make_new(const mp_obj_type_t *type, size_t n_ size_t n = (sizeof(cf_sha512_context) + sizeof(uintptr_t) - 1) / sizeof(uintptr_t); mp_obj_hash_t *o = m_new_obj_var(mp_obj_hash_t, state, uintptr_t, n); o->base.type = type; - o->final = false; // ← REQUIRED in v1.28+ cf_sha512_init((cf_sha512_context *)o->state); #endif From 5d696da7c923b83464aa4b24132c55505cfe84c4 Mon Sep 17 00:00:00 2001 From: scgbckbone Date: Tue, 21 Apr 2026 11:15:36 +0200 Subject: [PATCH 05/15] STATIC -> static --- ngu/aes.c | 46 ++++++------ ngu/cert.c | 32 ++++---- ngu/codecs.c | 36 ++++----- ngu/ec.c | 24 +++--- ngu/hash.c | 44 +++++------ ngu/hdnode.c | 88 +++++++++++----------- ngu/hm.c | 18 ++--- ngu/k1.c | 208 +++++++++++++++++++++++++-------------------------- ngu/modngu.c | 4 +- ngu/random.c | 22 +++--- 10 files changed, 261 insertions(+), 261 deletions(-) diff --git a/ngu/aes.c b/ngu/aes.c index f2ab019..29d1ad6 100644 --- a/ngu/aes.c +++ b/ngu/aes.c @@ -26,7 +26,7 @@ typedef struct { cf_ctr mode_ctx; } mp_obj_CTR_t; -STATIC const mp_obj_type_t s_CBC_type, s_CTR_type; +static const mp_obj_type_t s_CBC_type, s_CTR_type; static void _aes_setup(cf_aes_context *aes_ctx, const mp_obj_t key_in) { @@ -45,7 +45,7 @@ static void _aes_setup(cf_aes_context *aes_ctx, const mp_obj_t key_in) cf_aes_init(aes_ctx, key.buf, key.len); } -STATIC mp_obj_t s_CBC_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *args) { +static mp_obj_t s_CBC_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *args) { // args: is_encrypt, key, iv? mp_arg_check_num(n_args, n_kw, 3, 3, false); @@ -66,7 +66,7 @@ STATIC mp_obj_t s_CBC_make_new(const mp_obj_type_t *type, size_t n_args, size_t return MP_OBJ_FROM_PTR(o); } -STATIC mp_obj_t s_CTR_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *args) { +static mp_obj_t s_CTR_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *args) { // args: key, nonce mp_arg_check_num(n_args, n_kw, 1, 2, false); @@ -91,7 +91,7 @@ STATIC mp_obj_t s_CTR_make_new(const mp_obj_type_t *type, size_t n_args, size_t return MP_OBJ_FROM_PTR(o); } -STATIC mp_obj_t s_CBC_cipher(mp_obj_t self_in, mp_obj_t buf_in) +static mp_obj_t s_CBC_cipher(mp_obj_t self_in, mp_obj_t buf_in) { mp_buffer_info_t buf; mp_get_buffer_raise(buf_in, &buf, MP_BUFFER_READ); @@ -113,9 +113,9 @@ STATIC mp_obj_t s_CBC_cipher(mp_obj_t self_in, mp_obj_t buf_in) return mp_obj_new_str_from_vstr(&mp_type_bytes, &rv); } -STATIC MP_DEFINE_CONST_FUN_OBJ_2(s_CBC_cipher_obj, s_CBC_cipher); +static MP_DEFINE_CONST_FUN_OBJ_2(s_CBC_cipher_obj, s_CBC_cipher); -STATIC mp_obj_t s_CTR_cipher(mp_obj_t self_in, mp_obj_t buf_in) +static mp_obj_t s_CTR_cipher(mp_obj_t self_in, mp_obj_t buf_in) { mp_buffer_info_t buf; mp_get_buffer_raise(buf_in, &buf, MP_BUFFER_READ); @@ -131,9 +131,9 @@ STATIC mp_obj_t s_CTR_cipher(mp_obj_t self_in, mp_obj_t buf_in) return mp_obj_new_str_from_vstr(&mp_type_bytes, &rv); } -STATIC MP_DEFINE_CONST_FUN_OBJ_2(s_CTR_cipher_obj, s_CTR_cipher); +static MP_DEFINE_CONST_FUN_OBJ_2(s_CTR_cipher_obj, s_CTR_cipher); -STATIC mp_obj_t s_CBC_blank(mp_obj_t self_in) { +static mp_obj_t s_CBC_blank(mp_obj_t self_in) { mp_obj_CBC_t *self = MP_OBJ_TO_PTR(self_in); // cf_aes_finish is just this anyway @@ -142,9 +142,9 @@ STATIC mp_obj_t s_CBC_blank(mp_obj_t self_in) { return MP_OBJ_FROM_PTR(self); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(s_CBC_blank_obj, s_CBC_blank); +static MP_DEFINE_CONST_FUN_OBJ_1(s_CBC_blank_obj, s_CBC_blank); -STATIC mp_obj_t s_CBC_copy(mp_obj_t self_in) { +static mp_obj_t s_CBC_copy(mp_obj_t self_in) { mp_obj_CBC_t *self = MP_OBJ_TO_PTR(self_in); mp_obj_CBC_t *rv = m_new_obj_with_finaliser(mp_obj_CBC_t); @@ -153,9 +153,9 @@ STATIC mp_obj_t s_CBC_copy(mp_obj_t self_in) { return MP_OBJ_FROM_PTR(rv); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(s_CBC_copy_obj, s_CBC_copy); +static MP_DEFINE_CONST_FUN_OBJ_1(s_CBC_copy_obj, s_CBC_copy); -STATIC mp_obj_t s_CTR_blank(mp_obj_t self_in) { +static mp_obj_t s_CTR_blank(mp_obj_t self_in) { mp_obj_CTR_t *self = MP_OBJ_TO_PTR(self_in); // cf_aes_finish is just this anyway @@ -164,9 +164,9 @@ STATIC mp_obj_t s_CTR_blank(mp_obj_t self_in) { return MP_OBJ_FROM_PTR(self); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(s_CTR_blank_obj, s_CTR_blank); +static MP_DEFINE_CONST_FUN_OBJ_1(s_CTR_blank_obj, s_CTR_blank); -STATIC mp_obj_t s_CTR_copy(mp_obj_t self_in) { +static mp_obj_t s_CTR_copy(mp_obj_t self_in) { mp_obj_CTR_t *self = MP_OBJ_TO_PTR(self_in); mp_obj_CTR_t *rv = m_new_obj_with_finaliser(mp_obj_CTR_t); @@ -175,33 +175,33 @@ STATIC mp_obj_t s_CTR_copy(mp_obj_t self_in) { return MP_OBJ_FROM_PTR(rv); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(s_CTR_copy_obj, s_CTR_copy); +static MP_DEFINE_CONST_FUN_OBJ_1(s_CTR_copy_obj, s_CTR_copy); -STATIC const mp_rom_map_elem_t s_CBC_locals_dict_table[] = { +static const mp_rom_map_elem_t s_CBC_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_cipher), MP_ROM_PTR(&s_CBC_cipher_obj) }, { MP_ROM_QSTR(MP_QSTR_blank), MP_ROM_PTR(&s_CBC_blank_obj) }, { MP_ROM_QSTR(MP_QSTR_copy), MP_ROM_PTR(&s_CBC_copy_obj) }, { MP_ROM_QSTR(MP_QSTR___del__), MP_ROM_PTR(&s_CBC_blank_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(s_CBC_locals_dict, s_CBC_locals_dict_table); +static MP_DEFINE_CONST_DICT(s_CBC_locals_dict, s_CBC_locals_dict_table); -STATIC const mp_obj_type_t s_CBC_type = { +static const mp_obj_type_t s_CBC_type = { { &mp_type_type }, .name = MP_QSTR_CBC, .make_new = s_CBC_make_new, .locals_dict = (void *)&s_CBC_locals_dict, }; -STATIC const mp_rom_map_elem_t s_CTR_locals_dict_table[] = { +static const mp_rom_map_elem_t s_CTR_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_cipher), MP_ROM_PTR(&s_CTR_cipher_obj) }, { MP_ROM_QSTR(MP_QSTR_blank), MP_ROM_PTR(&s_CTR_blank_obj) }, { MP_ROM_QSTR(MP_QSTR_copy), MP_ROM_PTR(&s_CTR_copy_obj) }, { MP_ROM_QSTR(MP_QSTR___del__), MP_ROM_PTR(&s_CTR_blank_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(s_CTR_locals_dict, s_CTR_locals_dict_table); +static MP_DEFINE_CONST_DICT(s_CTR_locals_dict, s_CTR_locals_dict_table); -STATIC const mp_obj_type_t s_CTR_type = { +static const mp_obj_type_t s_CTR_type = { { &mp_type_type }, .name = MP_QSTR_CTR, .make_new = s_CTR_make_new, @@ -209,14 +209,14 @@ STATIC const mp_obj_type_t s_CTR_type = { }; -STATIC const mp_rom_map_elem_t mp_module_aes_globals_table[] = { +static const mp_rom_map_elem_t mp_module_aes_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_aes) }, { MP_ROM_QSTR(MP_QSTR_CTR), MP_ROM_PTR(&s_CTR_type) }, { MP_ROM_QSTR(MP_QSTR_CBC), MP_ROM_PTR(&s_CBC_type) }, }; -STATIC MP_DEFINE_CONST_DICT(mp_module_aes_globals, mp_module_aes_globals_table); +static MP_DEFINE_CONST_DICT(mp_module_aes_globals, mp_module_aes_globals_table); const mp_obj_module_t mp_module_aes = { .base = { &mp_type_module }, diff --git a/ngu/cert.c b/ngu/cert.c index 9269544..706c0aa 100644 --- a/ngu/cert.c +++ b/ngu/cert.c @@ -19,7 +19,7 @@ if(rv) nlr_raise(mp_obj_new_exception_arg1(&mp_type_RuntimeError, \ MP_OBJ_NEW_SMALL_INT(rv))); } -STATIC const mp_obj_type_t cert_type; +static const mp_obj_type_t cert_type; typedef struct { mp_obj_base_t base; @@ -28,7 +28,7 @@ typedef struct { // Constructor -STATIC mp_obj_t cert_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *args) { +static mp_obj_t cert_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_cert_t *o = m_new_obj_with_finaliser(mp_obj_cert_t); @@ -40,18 +40,18 @@ STATIC mp_obj_t cert_make_new(const mp_obj_type_t *type, size_t n_args, size_t n } // Finalizer -STATIC mp_obj_t cert_del(mp_obj_t self_in) { +static mp_obj_t cert_del(mp_obj_t self_in) { mp_obj_cert_t *self = MP_OBJ_TO_PTR(self_in); mbedtls_x509_crt_free(&self->mcert); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(cert_del_obj, cert_del); +static MP_DEFINE_CONST_FUN_OBJ_1(cert_del_obj, cert_del); // Parse PEM (base64) -STATIC mp_obj_t parse(mp_obj_t self_in, mp_obj_t data_in) +static mp_obj_t parse(mp_obj_t self_in, mp_obj_t data_in) { mp_obj_cert_t *self = MP_OBJ_TO_PTR(self_in); @@ -62,10 +62,10 @@ STATIC mp_obj_t parse(mp_obj_t self_in, mp_obj_t data_in) return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_2(parse_obj, parse); +static MP_DEFINE_CONST_FUN_OBJ_2(parse_obj, parse); // Verify chain -STATIC mp_obj_t verify_chain(mp_obj_t self_in, mp_obj_t trust_ca_in) +static mp_obj_t verify_chain(mp_obj_t self_in, mp_obj_t trust_ca_in) { // TODO: add ca_crl, profile, etc. mp_obj_cert_t *self = MP_OBJ_TO_PTR(self_in); @@ -87,10 +87,10 @@ STATIC mp_obj_t verify_chain(mp_obj_t self_in, mp_obj_t trust_ca_in) return MP_OBJ_NEW_SMALL_INT(rv); } -STATIC MP_DEFINE_CONST_FUN_OBJ_2(verify_chain_obj, verify_chain); +static MP_DEFINE_CONST_FUN_OBJ_2(verify_chain_obj, verify_chain); // get_ec_pubkey -STATIC mp_obj_t get_ec_pubkey(mp_obj_t self_in) +static mp_obj_t get_ec_pubkey(mp_obj_t self_in) { mp_obj_cert_t *self = MP_OBJ_TO_PTR(self_in); mbedtls_pk_context *pk = &self->mcert.pk; @@ -118,10 +118,10 @@ STATIC mp_obj_t get_ec_pubkey(mp_obj_t self_in) return mp_obj_new_str_from_vstr(&mp_type_bytes, &vstr); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(get_ec_pubkey_obj, get_ec_pubkey); +static MP_DEFINE_CONST_FUN_OBJ_1(get_ec_pubkey_obj, get_ec_pubkey); // __repr__ -STATIC void cert_print(const mp_print_t *print, mp_obj_t self_in, mp_print_kind_t kind) { +static void cert_print(const mp_print_t *print, mp_obj_t self_in, mp_print_kind_t kind) { (void)kind; mp_obj_cert_t *self = MP_OBJ_TO_PTR(self_in); @@ -132,15 +132,15 @@ STATIC void cert_print(const mp_print_t *print, mp_obj_t self_in, mp_print_kind_ } -STATIC const mp_rom_map_elem_t cert_locals_dict_table[] = { +static const mp_rom_map_elem_t cert_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR___del__), MP_ROM_PTR(&cert_del_obj) }, { MP_ROM_QSTR(MP_QSTR_parse), MP_ROM_PTR(&parse_obj) }, { MP_ROM_QSTR(MP_QSTR_verify_chain), MP_ROM_PTR(&verify_chain_obj) }, { MP_ROM_QSTR(MP_QSTR_get_ec_pubkey), MP_ROM_PTR(&get_ec_pubkey_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(cert_locals_dict, cert_locals_dict_table); +static MP_DEFINE_CONST_DICT(cert_locals_dict, cert_locals_dict_table); -STATIC const mp_obj_type_t cert_type = { +static const mp_obj_type_t cert_type = { { &mp_type_type }, .name = MP_QSTR_x509_cert, .print = cert_print, @@ -148,12 +148,12 @@ STATIC const mp_obj_type_t cert_type = { .locals_dict = (void *)&cert_locals_dict, }; -STATIC const mp_rom_map_elem_t globals_table[] = { +static const mp_rom_map_elem_t globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_cert) }, { MP_ROM_QSTR(MP_QSTR_x509), MP_ROM_PTR(&cert_type) }, }; -STATIC MP_DEFINE_CONST_DICT(mod_globals, globals_table); +static MP_DEFINE_CONST_DICT(mod_globals, globals_table); const mp_obj_module_t mp_module_cert = { .base = { &mp_type_module }, diff --git a/ngu/codecs.c b/ngu/codecs.c index e9868db..d9550bf 100644 --- a/ngu/codecs.c +++ b/ngu/codecs.c @@ -17,7 +17,7 @@ // // Base 32 // -STATIC mp_obj_t c_b32decode(mp_obj_t arg_in) +static mp_obj_t c_b32decode(mp_obj_t arg_in) { const char *arg = mp_obj_str_get_str(arg_in); uint8_t tmp[strlen(arg)+10]; @@ -29,10 +29,10 @@ STATIC mp_obj_t c_b32decode(mp_obj_t arg_in) return mp_obj_new_bytes(tmp, len_out); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(c_b32decode_obj, c_b32decode); +static MP_DEFINE_CONST_FUN_OBJ_1(c_b32decode_obj, c_b32decode); -STATIC mp_obj_t c_b32encode(mp_obj_t arg_in) { +static mp_obj_t c_b32encode(mp_obj_t arg_in) { mp_buffer_info_t buf; mp_get_buffer_raise(arg_in, &buf, MP_BUFFER_READ); @@ -45,7 +45,7 @@ STATIC mp_obj_t c_b32encode(mp_obj_t arg_in) { return mp_obj_new_str((char *)tmp, len_out); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(c_b32encode_obj, c_b32encode); +static MP_DEFINE_CONST_FUN_OBJ_1(c_b32encode_obj, c_b32encode); // // Base 58 - always with checksum, never with a particular prefix @@ -59,7 +59,7 @@ bool b58_sha256_impl(void *out, const void *inp, int len) return true; } -STATIC mp_obj_t c_b58decode(mp_obj_t arg_in) +static mp_obj_t c_b58decode(mp_obj_t arg_in) { uint8_t tmp[128]; @@ -70,10 +70,10 @@ STATIC mp_obj_t c_b58decode(mp_obj_t arg_in) return mp_obj_new_bytes(tmp, len_out); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(c_b58decode_obj, c_b58decode); +static MP_DEFINE_CONST_FUN_OBJ_1(c_b58decode_obj, c_b58decode); -STATIC mp_obj_t c_b58encode(mp_obj_t arg_in) +static mp_obj_t c_b58encode(mp_obj_t arg_in) { mp_buffer_info_t buf; mp_get_buffer_raise(arg_in, &buf, MP_BUFFER_READ); @@ -87,11 +87,11 @@ STATIC mp_obj_t c_b58encode(mp_obj_t arg_in) return mp_obj_new_str(tmp, len_out-1); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(c_b58encode_obj, c_b58encode); +static MP_DEFINE_CONST_FUN_OBJ_1(c_b58encode_obj, c_b58encode); // Segwit = BECH32(m) -STATIC mp_obj_t c_segwit_encode(mp_obj_t hrp_in, mp_obj_t witver_in, mp_obj_t prog_in) +static mp_obj_t c_segwit_encode(mp_obj_t hrp_in, mp_obj_t witver_in, mp_obj_t prog_in) { const char *hrp = mp_obj_str_get_str(hrp_in); int witver = mp_obj_get_int_truncated(witver_in); @@ -109,10 +109,10 @@ STATIC mp_obj_t c_segwit_encode(mp_obj_t hrp_in, mp_obj_t witver_in, mp_obj_t pr return mp_obj_new_str(tmp, strlen(tmp)); } -STATIC MP_DEFINE_CONST_FUN_OBJ_3(c_segwit_encode_obj, c_segwit_encode); +static MP_DEFINE_CONST_FUN_OBJ_3(c_segwit_encode_obj, c_segwit_encode); -STATIC mp_obj_t c_segwit_decode(mp_obj_t addr_in) +static mp_obj_t c_segwit_decode(mp_obj_t addr_in) { const char *addr = mp_obj_str_get_str(addr_in); @@ -134,11 +134,11 @@ STATIC mp_obj_t c_segwit_decode(mp_obj_t addr_in) return mp_obj_new_tuple(3, rv); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(c_segwit_decode_obj, c_segwit_decode); +static MP_DEFINE_CONST_FUN_OBJ_1(c_segwit_decode_obj, c_segwit_decode); // BECH32 -STATIC mp_obj_t c_nip19_encode(mp_obj_t hrp_in, mp_obj_t prog_in) +static mp_obj_t c_nip19_encode(mp_obj_t hrp_in, mp_obj_t prog_in) { const char *hrp = mp_obj_str_get_str(hrp_in); @@ -161,10 +161,10 @@ STATIC mp_obj_t c_nip19_encode(mp_obj_t hrp_in, mp_obj_t prog_in) return mp_obj_new_str(tmp, strlen(tmp)); } -STATIC MP_DEFINE_CONST_FUN_OBJ_2(c_nip19_encode_obj, c_nip19_encode); +static MP_DEFINE_CONST_FUN_OBJ_2(c_nip19_encode_obj, c_nip19_encode); -STATIC mp_obj_t c_nip19_decode(mp_obj_t str_in) +static mp_obj_t c_nip19_decode(mp_obj_t str_in) { const char *str = mp_obj_str_get_str(str_in); @@ -184,10 +184,10 @@ STATIC mp_obj_t c_nip19_decode(mp_obj_t str_in) convert_bits(res, &reslen, 8, data, data_len, 5, 0); return mp_obj_new_bytes(res, reslen); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(c_nip19_decode_obj, c_nip19_decode); +static MP_DEFINE_CONST_FUN_OBJ_1(c_nip19_decode_obj, c_nip19_decode); -STATIC const mp_rom_map_elem_t globals_table[] = { +static const mp_rom_map_elem_t globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_codecs) }, { MP_ROM_QSTR(MP_QSTR_b32_encode), MP_ROM_PTR(&c_b32encode_obj) }, @@ -203,7 +203,7 @@ STATIC const mp_rom_map_elem_t globals_table[] = { { MP_ROM_QSTR(MP_QSTR_nip19_decode), MP_ROM_PTR(&c_nip19_decode_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(globals_table_obj, globals_table); +static MP_DEFINE_CONST_DICT(globals_table_obj, globals_table); const mp_obj_module_t mp_module_codecs = { .base = { &mp_type_module }, diff --git a/ngu/ec.c b/ngu/ec.c index 8ee8db9..105b576 100644 --- a/ngu/ec.c +++ b/ngu/ec.c @@ -32,7 +32,7 @@ typedef struct _mp_obj_curve_t { // Constructor -STATIC mp_obj_t curve_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *args) { +static mp_obj_t curve_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, 1, 1, false); mp_obj_curve_t *o = m_new_obj_with_finaliser(mp_obj_curve_t); @@ -46,18 +46,18 @@ STATIC mp_obj_t curve_make_new(const mp_obj_type_t *type, size_t n_args, size_t } // Finalizer -STATIC mp_obj_t curve_del(mp_obj_t self_in) { +static mp_obj_t curve_del(mp_obj_t self_in) { mp_obj_curve_t *self = MP_OBJ_TO_PTR(self_in); mbedtls_ecp_group_free(&self->grp); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(curve_del_obj, curve_del); +static MP_DEFINE_CONST_FUN_OBJ_1(curve_del_obj, curve_del); // Signing -STATIC mp_obj_t curve_sign(mp_obj_t self_in, mp_obj_t privkey_in, mp_obj_t digest_in) +static mp_obj_t curve_sign(mp_obj_t self_in, mp_obj_t privkey_in, mp_obj_t digest_in) { mp_obj_curve_t *self = MP_OBJ_TO_PTR(self_in); @@ -97,10 +97,10 @@ STATIC mp_obj_t curve_sign(mp_obj_t self_in, mp_obj_t privkey_in, mp_obj_t diges return mp_obj_new_str_from_vstr(&mp_type_bytes, &vstr); } -STATIC MP_DEFINE_CONST_FUN_OBJ_3(curve_sign_obj, curve_sign); +static MP_DEFINE_CONST_FUN_OBJ_3(curve_sign_obj, curve_sign); // Verify -STATIC mp_obj_t curve_verify(size_t n_args, const mp_obj_t *args) +static mp_obj_t curve_verify(size_t n_args, const mp_obj_t *args) { mp_obj_curve_t *self = MP_OBJ_TO_PTR(args[0]); mp_obj_t pubkey_in = args[1]; @@ -155,24 +155,24 @@ STATIC mp_obj_t curve_verify(size_t n_args, const mp_obj_t *args) return rv; } -STATIC MP_DEFINE_CONST_FUN_OBJ_VAR(curve_verify_obj, 4, curve_verify); +static MP_DEFINE_CONST_FUN_OBJ_VAR(curve_verify_obj, 4, curve_verify); -STATIC const mp_rom_map_elem_t curve_locals_dict_table[] = { +static const mp_rom_map_elem_t curve_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR___del__), MP_ROM_PTR(&curve_del_obj) }, { MP_ROM_QSTR(MP_QSTR_sign), MP_ROM_PTR(&curve_sign_obj) }, { MP_ROM_QSTR(MP_QSTR_verify), MP_ROM_PTR(&curve_verify_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(curve_locals_dict, curve_locals_dict_table); +static MP_DEFINE_CONST_DICT(curve_locals_dict, curve_locals_dict_table); -STATIC const mp_obj_type_t modngu_ec_curve_type = { +static const mp_obj_type_t modngu_ec_curve_type = { { &mp_type_type }, .name = MP_QSTR_ec_curve, .make_new = curve_make_new, .locals_dict = (void *)&curve_locals_dict, }; -STATIC const mp_rom_map_elem_t mp_module_ec_globals_table[] = { +static const mp_rom_map_elem_t mp_module_ec_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_ec) }, { MP_ROM_QSTR(MP_QSTR_curve), MP_ROM_PTR(&modngu_ec_curve_type) }, @@ -192,7 +192,7 @@ STATIC const mp_rom_map_elem_t mp_module_ec_globals_table[] = { }; -STATIC MP_DEFINE_CONST_DICT(mp_module_ec_globals, mp_module_ec_globals_table); +static MP_DEFINE_CONST_DICT(mp_module_ec_globals, mp_module_ec_globals_table); const mp_obj_module_t mp_module_ec = { .base = { &mp_type_module }, diff --git a/ngu/hash.c b/ngu/hash.c index cff10d7..8e08dbe 100644 --- a/ngu/hash.c +++ b/ngu/hash.c @@ -42,7 +42,7 @@ void ripemd160(const uint8_t *msg, int msglen, uint8_t digest[20]); // SHA512 // -STATIC mp_obj_t modngu_hash_sha512_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *args) { +static mp_obj_t modngu_hash_sha512_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, 1, false); #if MICROPY_SSL_MBEDTLS @@ -69,7 +69,7 @@ STATIC mp_obj_t modngu_hash_sha512_make_new(const mp_obj_type_t *type, size_t n_ return MP_OBJ_FROM_PTR(o); } -STATIC mp_obj_t modngu_hash_sha512_update(mp_obj_t self_in, mp_obj_t arg) { +static mp_obj_t modngu_hash_sha512_update(mp_obj_t self_in, mp_obj_t arg) { mp_obj_hash_t *self = MP_OBJ_TO_PTR(self_in); mp_buffer_info_t bufinfo; mp_get_buffer_raise(arg, &bufinfo, MP_BUFFER_READ); @@ -83,7 +83,7 @@ STATIC mp_obj_t modngu_hash_sha512_update(mp_obj_t self_in, mp_obj_t arg) { return mp_const_none; } -STATIC mp_obj_t modngu_hash_sha512_digest(mp_obj_t self_in) { +static mp_obj_t modngu_hash_sha512_digest(mp_obj_t self_in) { mp_obj_hash_t *self = MP_OBJ_TO_PTR(self_in); vstr_t vstr; @@ -99,16 +99,16 @@ STATIC mp_obj_t modngu_hash_sha512_digest(mp_obj_t self_in) { return mp_obj_new_str_from_vstr(&mp_type_bytes, &vstr); } -STATIC MP_DEFINE_CONST_FUN_OBJ_2(modngu_hash_sha512_update_obj, modngu_hash_sha512_update); -STATIC MP_DEFINE_CONST_FUN_OBJ_1(modngu_hash_sha512_digest_obj, modngu_hash_sha512_digest); +static MP_DEFINE_CONST_FUN_OBJ_2(modngu_hash_sha512_update_obj, modngu_hash_sha512_update); +static MP_DEFINE_CONST_FUN_OBJ_1(modngu_hash_sha512_digest_obj, modngu_hash_sha512_digest); -STATIC const mp_rom_map_elem_t modngu_hash_sha512_locals_dict_table[] = { +static const mp_rom_map_elem_t modngu_hash_sha512_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_update), MP_ROM_PTR(&modngu_hash_sha512_update_obj) }, { MP_ROM_QSTR(MP_QSTR_digest), MP_ROM_PTR(&modngu_hash_sha512_digest_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(modngu_hash_sha512_locals_dict, modngu_hash_sha512_locals_dict_table); +static MP_DEFINE_CONST_DICT(modngu_hash_sha512_locals_dict, modngu_hash_sha512_locals_dict_table); -STATIC const mp_obj_type_t modngu_hash_sha512_type = { +static const mp_obj_type_t modngu_hash_sha512_type = { { &mp_type_type }, .name = MP_QSTR_sha512, .make_new = modngu_hash_sha512_make_new, @@ -116,7 +116,7 @@ STATIC const mp_obj_type_t modngu_hash_sha512_type = { }; // Tagged sha256 = SHA256(SHA256(tag)||SHA256(tag)||msg) -STATIC mp_obj_t hm_tagged_sha256(size_t n_args, const mp_obj_t *args) { +static mp_obj_t hm_tagged_sha256(size_t n_args, const mp_obj_t *args) { mp_obj_t tag = args[0]; mp_obj_t msg = args[1]; bool is_tag_hashed = false; @@ -149,10 +149,10 @@ STATIC mp_obj_t hm_tagged_sha256(size_t n_args, const mp_obj_t *args) { return mp_obj_new_str_from_vstr(&mp_type_bytes, &res); } -STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(hm_tagged_sha256_obj,2,3, hm_tagged_sha256); +static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(hm_tagged_sha256_obj,2,3, hm_tagged_sha256); // Double sha256 = sha256(sha256('foo').digest()).digest() ... in one step -STATIC mp_obj_t hm_double_sha256(mp_obj_t arg) { +static mp_obj_t hm_double_sha256(mp_obj_t arg) { mp_buffer_info_t inp; mp_get_buffer_raise(arg, &inp, MP_BUFFER_READ); @@ -163,11 +163,11 @@ STATIC mp_obj_t hm_double_sha256(mp_obj_t arg) { return mp_obj_new_str_from_vstr(&mp_type_bytes, &vstr); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(hm_double_sha256_obj, hm_double_sha256); +static MP_DEFINE_CONST_FUN_OBJ_1(hm_double_sha256_obj, hm_double_sha256); // single-shot sha256/ripe/etc -STATIC mp_obj_t hm_single_sha256(mp_obj_t arg) { +static mp_obj_t hm_single_sha256(mp_obj_t arg) { mp_buffer_info_t inp; mp_get_buffer_raise(arg, &inp, MP_BUFFER_READ); @@ -178,9 +178,9 @@ STATIC mp_obj_t hm_single_sha256(mp_obj_t arg) { return mp_obj_new_str_from_vstr(&mp_type_bytes, &vstr); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(hm_single_sha256_obj, hm_single_sha256); +static MP_DEFINE_CONST_FUN_OBJ_1(hm_single_sha256_obj, hm_single_sha256); -STATIC mp_obj_t hm_single_ripemd160(mp_obj_t arg) { +static mp_obj_t hm_single_ripemd160(mp_obj_t arg) { mp_buffer_info_t inp; mp_get_buffer_raise(arg, &inp, MP_BUFFER_READ); @@ -199,9 +199,9 @@ STATIC mp_obj_t hm_single_ripemd160(mp_obj_t arg) { return mp_obj_new_str_from_vstr(&mp_type_bytes, &vstr); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(hm_single_ripemd160_obj, hm_single_ripemd160); +static MP_DEFINE_CONST_FUN_OBJ_1(hm_single_ripemd160_obj, hm_single_ripemd160); -STATIC mp_obj_t hm_hash160(mp_obj_t arg) { +static mp_obj_t hm_hash160(mp_obj_t arg) { mp_buffer_info_t inp; mp_get_buffer_raise(arg, &inp, MP_BUFFER_READ); @@ -212,11 +212,11 @@ STATIC mp_obj_t hm_hash160(mp_obj_t arg) { return mp_obj_new_str_from_vstr(&mp_type_bytes, &vstr); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(hm_hash160_obj, hm_hash160); +static MP_DEFINE_CONST_FUN_OBJ_1(hm_hash160_obj, hm_hash160); // Pbkdf2 using sha512 hmac, for use in BIP39=>BIP32 seed -STATIC mp_obj_t pbkdf2_sha512(mp_obj_t pass_in, mp_obj_t salt_in, mp_obj_t rounds_in) { +static mp_obj_t pbkdf2_sha512(mp_obj_t pass_in, mp_obj_t salt_in, mp_obj_t rounds_in) { mp_buffer_info_t pass, salt; mp_get_buffer_raise(pass_in, &pass, MP_BUFFER_READ); mp_get_buffer_raise(salt_in, &salt, MP_BUFFER_READ); @@ -287,10 +287,10 @@ STATIC mp_obj_t pbkdf2_sha512(mp_obj_t pass_in, mp_obj_t salt_in, mp_obj_t round return mp_obj_new_str_from_vstr(&mp_type_bytes, &key_out); } -STATIC MP_DEFINE_CONST_FUN_OBJ_3(pbkdf2_sha512_obj, pbkdf2_sha512); +static MP_DEFINE_CONST_FUN_OBJ_3(pbkdf2_sha512_obj, pbkdf2_sha512); -STATIC const mp_rom_map_elem_t mp_module_hash_globals_table[] = { +static const mp_rom_map_elem_t mp_module_hash_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_hash) }, { MP_ROM_QSTR(MP_QSTR_sha512), MP_ROM_PTR(&modngu_hash_sha512_type) }, @@ -303,7 +303,7 @@ STATIC const mp_rom_map_elem_t mp_module_hash_globals_table[] = { }; -STATIC MP_DEFINE_CONST_DICT(mp_module_hash_globals, mp_module_hash_globals_table); +static MP_DEFINE_CONST_DICT(mp_module_hash_globals, mp_module_hash_globals_table); const mp_obj_module_t mp_module_hash = { .base = { &mp_type_module }, .globals = (mp_obj_dict_t *)&mp_module_hash_globals, diff --git a/ngu/hdnode.c b/ngu/hdnode.c index 7253d59..8fe3926 100644 --- a/ngu/hdnode.c +++ b/ngu/hdnode.c @@ -30,7 +30,7 @@ typedef struct { #endif } mp_obj_hdnode_t; -STATIC const mp_obj_type_t s_hdnode_type; +static const mp_obj_type_t s_hdnode_type; static inline uint8_t *write_be32(uint8_t *p, uint32_t v) { @@ -180,7 +180,7 @@ static uint32_t _calc_my_fp(mp_obj_hdnode_t *self) } // Constructor: makes empty/invalid obj -STATIC mp_obj_t s_hdnode_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *args) { +static mp_obj_t s_hdnode_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_hdnode_t *o = m_new_obj_with_finaliser(mp_obj_hdnode_t); @@ -194,7 +194,7 @@ STATIC mp_obj_t s_hdnode_make_new(const mp_obj_type_t *type, size_t n_args, size // METHODS -STATIC mp_obj_t s_hdnode_copy(mp_obj_t self_in) { +static mp_obj_t s_hdnode_copy(mp_obj_t self_in) { mp_obj_hdnode_t *self = MP_OBJ_TO_PTR(self_in); raise_on_invalid(self); // debatable, but isolates faults faster @@ -204,9 +204,9 @@ STATIC mp_obj_t s_hdnode_copy(mp_obj_t self_in) { return MP_OBJ_FROM_PTR(rv); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(s_hdnode_copy_obj, s_hdnode_copy); +static MP_DEFINE_CONST_FUN_OBJ_1(s_hdnode_copy_obj, s_hdnode_copy); -STATIC mp_obj_t s_hdnode_blank(mp_obj_t self_in) { +static mp_obj_t s_hdnode_blank(mp_obj_t self_in) { mp_obj_hdnode_t *self = MP_OBJ_TO_PTR(self_in); memset(self, 0, sizeof(mp_obj_hdnode_t)); @@ -215,9 +215,9 @@ STATIC mp_obj_t s_hdnode_blank(mp_obj_t self_in) { return MP_OBJ_FROM_PTR(self); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(s_hdnode_blank_obj, s_hdnode_blank); +static MP_DEFINE_CONST_FUN_OBJ_1(s_hdnode_blank_obj, s_hdnode_blank); -STATIC mp_obj_t s_hdnode_privkey(mp_obj_t self_in) { +static mp_obj_t s_hdnode_privkey(mp_obj_t self_in) { mp_obj_hdnode_t *self = MP_OBJ_TO_PTR(self_in); raise_on_invalid(self); @@ -231,10 +231,10 @@ STATIC mp_obj_t s_hdnode_privkey(mp_obj_t self_in) { return mp_obj_new_str_from_vstr(&mp_type_bytes, &vstr); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(s_hdnode_privkey_obj, s_hdnode_privkey); +static MP_DEFINE_CONST_FUN_OBJ_1(s_hdnode_privkey_obj, s_hdnode_privkey); -STATIC mp_obj_t s_hdnode_pubkey(mp_obj_t self_in) { +static mp_obj_t s_hdnode_pubkey(mp_obj_t self_in) { mp_obj_hdnode_t *self = MP_OBJ_TO_PTR(self_in); raise_on_invalid(self); @@ -246,9 +246,9 @@ STATIC mp_obj_t s_hdnode_pubkey(mp_obj_t self_in) { return mp_obj_new_str_from_vstr(&mp_type_bytes, &vstr); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(s_hdnode_pubkey_obj, s_hdnode_pubkey); +static MP_DEFINE_CONST_FUN_OBJ_1(s_hdnode_pubkey_obj, s_hdnode_pubkey); -STATIC mp_obj_t s_hdnode_addr_help(size_t n_args, const mp_obj_t *args) { +static mp_obj_t s_hdnode_addr_help(size_t n_args, const mp_obj_t *args) { mp_obj_hdnode_t *self = MP_OBJ_TO_PTR(args[0]); raise_on_invalid(self); @@ -270,9 +270,9 @@ STATIC mp_obj_t s_hdnode_addr_help(size_t n_args, const mp_obj_t *args) { } return mp_obj_new_str(tmp, len_out-1); } -STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(s_hdnode_addr_help_obj, 1, 2, s_hdnode_addr_help); +static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(s_hdnode_addr_help_obj, 1, 2, s_hdnode_addr_help); -STATIC mp_obj_t s_hdnode_serialize(mp_obj_t self_in, mp_obj_t version_in, mp_obj_t want_private_in) { +static mp_obj_t s_hdnode_serialize(mp_obj_t self_in, mp_obj_t version_in, mp_obj_t want_private_in) { // output BIP32 bytes // version bytes: uint32 w/ first 4 bytes (giving xpub/Zpub/etc) // private: flag, exporting private key else public part @@ -323,9 +323,9 @@ printf("\n"); return mp_obj_new_str(tmp, len_out-1); } -STATIC MP_DEFINE_CONST_FUN_OBJ_3(s_hdnode_serialize_obj, s_hdnode_serialize); +static MP_DEFINE_CONST_FUN_OBJ_3(s_hdnode_serialize_obj, s_hdnode_serialize); -STATIC mp_obj_t s_hdnode_deserialize(mp_obj_t self_in, mp_obj_t encoded) { +static mp_obj_t s_hdnode_deserialize(mp_obj_t self_in, mp_obj_t encoded) { // deserialize into self, works from base58; returns version observed mp_obj_hdnode_t *self = MP_OBJ_TO_PTR(self_in); @@ -340,9 +340,9 @@ STATIC mp_obj_t s_hdnode_deserialize(mp_obj_t self_in, mp_obj_t encoded) { return hdnode_deserialize_bytes(self, tmp); } -STATIC MP_DEFINE_CONST_FUN_OBJ_2(s_hdnode_deserialize_obj, s_hdnode_deserialize); +static MP_DEFINE_CONST_FUN_OBJ_2(s_hdnode_deserialize_obj, s_hdnode_deserialize); -STATIC mp_obj_t s_hdnode_deser_bytes(mp_obj_t self_in, mp_obj_t bytes) { +static mp_obj_t s_hdnode_deser_bytes(mp_obj_t self_in, mp_obj_t bytes) { // deserialize into self, works from base58; returns version observed mp_obj_hdnode_t *self = MP_OBJ_TO_PTR(self_in); @@ -354,9 +354,9 @@ STATIC mp_obj_t s_hdnode_deser_bytes(mp_obj_t self_in, mp_obj_t bytes) { return hdnode_deserialize_bytes(self, buf.buf); } -STATIC MP_DEFINE_CONST_FUN_OBJ_2(s_hdnode_deser_bytes_obj, s_hdnode_deser_bytes); +static MP_DEFINE_CONST_FUN_OBJ_2(s_hdnode_deser_bytes_obj, s_hdnode_deser_bytes); -STATIC mp_obj_t s_hdnode_from_master(mp_obj_t self_in, mp_obj_t master_secret_in) { +static mp_obj_t s_hdnode_from_master(mp_obj_t self_in, mp_obj_t master_secret_in) { mp_obj_hdnode_t *self = MP_OBJ_TO_PTR(self_in); mp_buffer_info_t buf; @@ -383,9 +383,9 @@ STATIC mp_obj_t s_hdnode_from_master(mp_obj_t self_in, mp_obj_t master_secret_in return MP_OBJ_FROM_PTR(self); } -STATIC MP_DEFINE_CONST_FUN_OBJ_2(s_hdnode_from_master_obj, s_hdnode_from_master); +static MP_DEFINE_CONST_FUN_OBJ_2(s_hdnode_from_master_obj, s_hdnode_from_master); -STATIC mp_obj_t s_hdnode_from_chaincode_privkey(mp_obj_t self_in, mp_obj_t chain_code_in, mp_obj_t privkey_in) { +static mp_obj_t s_hdnode_from_chaincode_privkey(mp_obj_t self_in, mp_obj_t chain_code_in, mp_obj_t privkey_in) { mp_obj_hdnode_t *self = MP_OBJ_TO_PTR(self_in); mp_buffer_info_t cc, pk; @@ -416,10 +416,10 @@ STATIC mp_obj_t s_hdnode_from_chaincode_privkey(mp_obj_t self_in, mp_obj_t chain return MP_OBJ_FROM_PTR(self); } -STATIC MP_DEFINE_CONST_FUN_OBJ_3(s_hdnode_from_chaincode_privkey_obj, s_hdnode_from_chaincode_privkey); +static MP_DEFINE_CONST_FUN_OBJ_3(s_hdnode_from_chaincode_privkey_obj, s_hdnode_from_chaincode_privkey); -STATIC mp_obj_t s_hdnode_from_chaincode_pubkey(mp_obj_t self_in, mp_obj_t chain_code_in, mp_obj_t pubkey_in) { +static mp_obj_t s_hdnode_from_chaincode_pubkey(mp_obj_t self_in, mp_obj_t chain_code_in, mp_obj_t pubkey_in) { mp_obj_hdnode_t *self = MP_OBJ_TO_PTR(self_in); mp_buffer_info_t cc, pk; @@ -452,9 +452,9 @@ STATIC mp_obj_t s_hdnode_from_chaincode_pubkey(mp_obj_t self_in, mp_obj_t chain_ return MP_OBJ_FROM_PTR(self); } -STATIC MP_DEFINE_CONST_FUN_OBJ_3(s_hdnode_from_chaincode_pubkey_obj, s_hdnode_from_chaincode_pubkey); +static MP_DEFINE_CONST_FUN_OBJ_3(s_hdnode_from_chaincode_pubkey_obj, s_hdnode_from_chaincode_pubkey); -STATIC mp_obj_t s_hdnode_censor(mp_obj_t self_in) { +static mp_obj_t s_hdnode_censor(mp_obj_t self_in) { mp_obj_hdnode_t *self = MP_OBJ_TO_PTR(self_in); raise_on_invalid(self); @@ -468,10 +468,10 @@ STATIC mp_obj_t s_hdnode_censor(mp_obj_t self_in) { return MP_OBJ_FROM_PTR(self); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(s_hdnode_censor_obj, s_hdnode_censor); +static MP_DEFINE_CONST_FUN_OBJ_1(s_hdnode_censor_obj, s_hdnode_censor); -STATIC mp_obj_t s_hdnode_derive(mp_obj_t self_in, mp_obj_t next_child_in, mp_obj_t hard_in) { +static mp_obj_t s_hdnode_derive(mp_obj_t self_in, mp_obj_t next_child_in, mp_obj_t hard_in) { mp_obj_hdnode_t *self = MP_OBJ_TO_PTR(self_in); raise_on_invalid(self); @@ -551,27 +551,27 @@ STATIC mp_obj_t s_hdnode_derive(mp_obj_t self_in, mp_obj_t next_child_in, mp_obj mp_raise_ValueError(MP_ERROR_TEXT("bip32 lottery won")); return 0; // not reached } -STATIC MP_DEFINE_CONST_FUN_OBJ_3(s_hdnode_derive_obj, s_hdnode_derive); +static MP_DEFINE_CONST_FUN_OBJ_3(s_hdnode_derive_obj, s_hdnode_derive); // Accessors -STATIC mp_obj_t s_hdnode_depth(mp_obj_t self_in) { +static mp_obj_t s_hdnode_depth(mp_obj_t self_in) { mp_obj_hdnode_t *self = MP_OBJ_TO_PTR(self_in); raise_on_invalid(self); return MP_OBJ_NEW_SMALL_INT(self->depth); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(s_hdnode_depth_obj, s_hdnode_depth); +static MP_DEFINE_CONST_FUN_OBJ_1(s_hdnode_depth_obj, s_hdnode_depth); -STATIC mp_obj_t s_hdnode_parent_fp(mp_obj_t self_in) { +static mp_obj_t s_hdnode_parent_fp(mp_obj_t self_in) { mp_obj_hdnode_t *self = MP_OBJ_TO_PTR(self_in); raise_on_invalid(self); return mp_obj_new_int_from_uint(self->parent_fp); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(s_hdnode_parent_fp_obj, s_hdnode_parent_fp); +static MP_DEFINE_CONST_FUN_OBJ_1(s_hdnode_parent_fp_obj, s_hdnode_parent_fp); -STATIC mp_obj_t s_hdnode_my_fp(mp_obj_t self_in) { +static mp_obj_t s_hdnode_my_fp(mp_obj_t self_in) { mp_obj_hdnode_t *self = MP_OBJ_TO_PTR(self_in); raise_on_invalid(self); @@ -579,9 +579,9 @@ STATIC mp_obj_t s_hdnode_my_fp(mp_obj_t self_in) { return mp_obj_new_int_from_uint(rv); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(s_hdnode_my_fp_obj, s_hdnode_my_fp); +static MP_DEFINE_CONST_FUN_OBJ_1(s_hdnode_my_fp_obj, s_hdnode_my_fp); -STATIC mp_obj_t s_hdnode_child_number(mp_obj_t self_in) { +static mp_obj_t s_hdnode_child_number(mp_obj_t self_in) { mp_obj_hdnode_t *self = MP_OBJ_TO_PTR(self_in); raise_on_invalid(self); @@ -591,9 +591,9 @@ STATIC mp_obj_t s_hdnode_child_number(mp_obj_t self_in) { }; return mp_obj_new_tuple(2, rv); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(s_hdnode_child_number_obj, s_hdnode_child_number); +static MP_DEFINE_CONST_FUN_OBJ_1(s_hdnode_child_number_obj, s_hdnode_child_number); -STATIC mp_obj_t s_hdnode_chain_code(mp_obj_t self_in) { +static mp_obj_t s_hdnode_chain_code(mp_obj_t self_in) { mp_obj_hdnode_t *self = MP_OBJ_TO_PTR(self_in); raise_on_invalid(self); @@ -603,10 +603,10 @@ STATIC mp_obj_t s_hdnode_chain_code(mp_obj_t self_in) { return mp_obj_new_str_from_vstr(&mp_type_bytes, &vstr); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(s_hdnode_chain_code_obj, s_hdnode_chain_code); +static MP_DEFINE_CONST_FUN_OBJ_1(s_hdnode_chain_code_obj, s_hdnode_chain_code); #ifdef EXTRA_DEBUG -STATIC void s_hdnode_repr(const mp_print_t *print, mp_obj_t self_in, mp_print_kind_t kind) { +static void s_hdnode_repr(const mp_print_t *print, mp_obj_t self_in, mp_print_kind_t kind) { (void)kind; mp_obj_hdnode_t *self = MP_OBJ_TO_PTR(self_in); @@ -627,7 +627,7 @@ STATIC void s_hdnode_repr(const mp_print_t *print, mp_obj_t self_in, mp_print_ki // member vars -STATIC const mp_rom_map_elem_t s_hdnode_locals_dict_table[] = { +static const mp_rom_map_elem_t s_hdnode_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_privkey), MP_ROM_PTR(&s_hdnode_privkey_obj) }, { MP_ROM_QSTR(MP_QSTR_pubkey), MP_ROM_PTR(&s_hdnode_pubkey_obj) }, { MP_ROM_QSTR(MP_QSTR_serialize), MP_ROM_PTR(&s_hdnode_serialize_obj) }, @@ -651,10 +651,10 @@ STATIC const mp_rom_map_elem_t s_hdnode_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_blank), MP_ROM_PTR(&s_hdnode_blank_obj) }, { MP_ROM_QSTR(MP_QSTR___del__), MP_ROM_PTR(&s_hdnode_blank_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(s_hdnode_locals_dict, s_hdnode_locals_dict_table); +static MP_DEFINE_CONST_DICT(s_hdnode_locals_dict, s_hdnode_locals_dict_table); // class: HDNode -STATIC const mp_obj_type_t s_hdnode_type = { +static const mp_obj_type_t s_hdnode_type = { { &mp_type_type }, .name = MP_QSTR_HDNode, .make_new = s_hdnode_make_new, @@ -664,13 +664,13 @@ STATIC const mp_obj_type_t s_hdnode_type = { .locals_dict = (void *)&s_hdnode_locals_dict, }; -STATIC const mp_rom_map_elem_t globals_table[] = { +static const mp_rom_map_elem_t globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_hdnode) }, { MP_ROM_QSTR(MP_QSTR_HDNode), MP_ROM_PTR(&s_hdnode_type) }, }; -STATIC MP_DEFINE_CONST_DICT(globals_table_obj, globals_table); +static MP_DEFINE_CONST_DICT(globals_table_obj, globals_table); const mp_obj_module_t mp_module_hdnode = { .base = { &mp_type_module }, diff --git a/ngu/hm.c b/ngu/hm.c index c1196a8..1292848 100644 --- a/ngu/hm.c +++ b/ngu/hm.c @@ -24,7 +24,7 @@ # include "cifra/sha3.h" #endif -STATIC mp_obj_t hmac_X(int md_size, mp_obj_t key_in, mp_obj_t msg_in) +static mp_obj_t hmac_X(int md_size, mp_obj_t key_in, mp_obj_t msg_in) { mp_buffer_info_t key, msg; mp_get_buffer_raise(key_in, &key, MP_BUFFER_READ); @@ -78,26 +78,26 @@ STATIC mp_obj_t hmac_X(int md_size, mp_obj_t key_in, mp_obj_t msg_in) return mp_obj_new_str_from_vstr(&mp_type_bytes, &rv_out); } -STATIC mp_obj_t hmac_sha512(mp_obj_t key_in, mp_obj_t msg_in) +static mp_obj_t hmac_sha512(mp_obj_t key_in, mp_obj_t msg_in) { return hmac_X(64, key_in, msg_in); } -STATIC MP_DEFINE_CONST_FUN_OBJ_2(hmac_sha512_obj, hmac_sha512); +static MP_DEFINE_CONST_FUN_OBJ_2(hmac_sha512_obj, hmac_sha512); -STATIC mp_obj_t hmac_sha256(mp_obj_t key_in, mp_obj_t msg_in) +static mp_obj_t hmac_sha256(mp_obj_t key_in, mp_obj_t msg_in) { return hmac_X(32, key_in, msg_in); } -STATIC MP_DEFINE_CONST_FUN_OBJ_2(hmac_sha256_obj, hmac_sha256); +static MP_DEFINE_CONST_FUN_OBJ_2(hmac_sha256_obj, hmac_sha256); -STATIC mp_obj_t hmac_sha1(mp_obj_t key_in, mp_obj_t msg_in) +static mp_obj_t hmac_sha1(mp_obj_t key_in, mp_obj_t msg_in) { return hmac_X(20, key_in, msg_in); } -STATIC MP_DEFINE_CONST_FUN_OBJ_2(hmac_sha1_obj, hmac_sha1); +static MP_DEFINE_CONST_FUN_OBJ_2(hmac_sha1_obj, hmac_sha1); -STATIC const mp_rom_map_elem_t mp_module_hmac_globals_table[] = { +static const mp_rom_map_elem_t mp_module_hmac_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_hmac) }, { MP_ROM_QSTR(MP_QSTR_hmac_sha512), MP_ROM_PTR(&hmac_sha512_obj) }, @@ -105,7 +105,7 @@ STATIC const mp_rom_map_elem_t mp_module_hmac_globals_table[] = { { MP_ROM_QSTR(MP_QSTR_hmac_sha1), MP_ROM_PTR(&hmac_sha1_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(mp_module_hmac_globals, mp_module_hmac_globals_table); +static MP_DEFINE_CONST_DICT(mp_module_hmac_globals, mp_module_hmac_globals_table); const mp_obj_module_t mp_module_hmac = { .base = { &mp_type_module }, diff --git a/ngu/k1.c b/ngu/k1.c index 21fcae9..6158b05 100644 --- a/ngu/k1.c +++ b/ngu/k1.c @@ -75,16 +75,16 @@ typedef struct { } mp_obj_musig_partial_sig_t; -STATIC const mp_obj_type_t s_pubkey_type; -STATIC const mp_obj_type_t s_xonly_pubkey_type; -STATIC const mp_obj_type_t s_sig_type; -STATIC const mp_obj_type_t s_keypair_type; -STATIC const mp_obj_type_t s_musig_pubnonce_type; -STATIC const mp_obj_type_t s_musig_secnonce_type; -STATIC const mp_obj_type_t s_musig_aggnonce_type; -STATIC const mp_obj_type_t s_musig_keyagg_cache_type; -STATIC const mp_obj_type_t s_musig_session_type; -STATIC const mp_obj_type_t s_musig_partial_sig_type; +static const mp_obj_type_t s_pubkey_type; +static const mp_obj_type_t s_xonly_pubkey_type; +static const mp_obj_type_t s_sig_type; +static const mp_obj_type_t s_keypair_type; +static const mp_obj_type_t s_musig_pubnonce_type; +static const mp_obj_type_t s_musig_secnonce_type; +static const mp_obj_type_t s_musig_aggnonce_type; +static const mp_obj_type_t s_musig_keyagg_cache_type; +static const mp_obj_type_t s_musig_session_type; +static const mp_obj_type_t s_musig_partial_sig_type; // Shared context for all major ops. secp256k1_context *lib_ctx; @@ -144,15 +144,15 @@ void sec_setup_ctx(void) // static error callbacks already in place above, no need to setup } -STATIC mp_obj_t s_ctx_rnd(void) { +static mp_obj_t s_ctx_rnd(void) { sec_setup_ctx(); ctx_randomize(); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_0(s_ctx_rnd_obj, s_ctx_rnd); +static MP_DEFINE_CONST_FUN_OBJ_0(s_ctx_rnd_obj, s_ctx_rnd); // Constructor for signature -STATIC mp_obj_t s_sig_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *args) { +static mp_obj_t s_sig_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, 1, 1, false); mp_obj_sig_t *o = m_new_obj(mp_obj_sig_t); @@ -184,7 +184,7 @@ STATIC mp_obj_t s_sig_make_new(const mp_obj_type_t *type, size_t n_args, size_t // Constructor for pubkey -STATIC mp_obj_t s_pubkey_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *args) { +static mp_obj_t s_pubkey_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, 1, 1, false); mp_obj_pubkey_t *o = m_new_obj(mp_obj_pubkey_t); @@ -203,7 +203,7 @@ STATIC mp_obj_t s_pubkey_make_new(const mp_obj_type_t *type, size_t n_args, size } // Constructor for xonly pubkey -STATIC mp_obj_t s_xonly_pubkey_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *args) { +static mp_obj_t s_xonly_pubkey_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, 1, 1, false); mp_obj_xonly_pubkey_t *o = m_new_obj(mp_obj_xonly_pubkey_t); @@ -224,7 +224,7 @@ STATIC mp_obj_t s_xonly_pubkey_make_new(const mp_obj_type_t *type, size_t n_args } // output pubkey -STATIC mp_obj_t s_pubkey_to_bytes(size_t n_args, const mp_obj_t *args) { +static mp_obj_t s_pubkey_to_bytes(size_t n_args, const mp_obj_t *args) { mp_obj_pubkey_t *self = MP_OBJ_TO_PTR(args[0]); vstr_t vstr; @@ -244,10 +244,10 @@ STATIC mp_obj_t s_pubkey_to_bytes(size_t n_args, const mp_obj_t *args) { vstr.len = outlen; return mp_obj_new_str_from_vstr(&mp_type_bytes, &vstr); } -STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(s_pubkey_to_bytes_obj, 1, 2, s_pubkey_to_bytes); +static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(s_pubkey_to_bytes_obj, 1, 2, s_pubkey_to_bytes); -STATIC mp_obj_t s_pubkey_to_xonly(mp_obj_t self_in){ +static mp_obj_t s_pubkey_to_xonly(mp_obj_t self_in){ mp_obj_pubkey_t *self = MP_OBJ_TO_PTR(self_in); mp_obj_xonly_pubkey_t *xonly = m_new_obj(mp_obj_xonly_pubkey_t); @@ -259,11 +259,11 @@ STATIC mp_obj_t s_pubkey_to_xonly(mp_obj_t self_in){ } return MP_OBJ_FROM_PTR(xonly); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(s_pubkey_to_xonly_obj, s_pubkey_to_xonly); +static MP_DEFINE_CONST_FUN_OBJ_1(s_pubkey_to_xonly_obj, s_pubkey_to_xonly); // output xonly pubkey -STATIC mp_obj_t s_xonly_pubkey_to_bytes(size_t n_args, const mp_obj_t *args) { +static mp_obj_t s_xonly_pubkey_to_bytes(size_t n_args, const mp_obj_t *args) { mp_obj_xonly_pubkey_t *self = MP_OBJ_TO_PTR(args[0]); vstr_t vstr; @@ -273,17 +273,17 @@ STATIC mp_obj_t s_xonly_pubkey_to_bytes(size_t n_args, const mp_obj_t *args) { return mp_obj_new_str_from_vstr(&mp_type_bytes, &vstr); } -STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(s_xonly_pubkey_to_bytes_obj, 1, 2, s_xonly_pubkey_to_bytes); +static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(s_xonly_pubkey_to_bytes_obj, 1, 2, s_xonly_pubkey_to_bytes); // output xonly pubkey parity -STATIC mp_obj_t s_xonly_pubkey_parity(mp_obj_t self_in) { +static mp_obj_t s_xonly_pubkey_parity(mp_obj_t self_in) { mp_obj_xonly_pubkey_t *self = MP_OBJ_TO_PTR(self_in); return mp_obj_new_int(self->parity); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(s_xonly_pubkey_parity_obj, s_xonly_pubkey_parity); +static MP_DEFINE_CONST_FUN_OBJ_1(s_xonly_pubkey_parity_obj, s_xonly_pubkey_parity); // add tweak32 to xonly pubkey -STATIC mp_obj_t s_xonly_pubkey_tweak_add(mp_obj_t self_in, mp_obj_t tweak32_in) { +static mp_obj_t s_xonly_pubkey_tweak_add(mp_obj_t self_in, mp_obj_t tweak32_in) { int rc; mp_buffer_info_t tweak32; mp_get_buffer_raise(tweak32_in, &tweak32, MP_BUFFER_READ); @@ -307,10 +307,10 @@ STATIC mp_obj_t s_xonly_pubkey_tweak_add(mp_obj_t self_in, mp_obj_t tweak32_in) return MP_OBJ_FROM_PTR(rv); } -STATIC MP_DEFINE_CONST_FUN_OBJ_2(s_xonly_pubkey_tweak_add_obj, s_xonly_pubkey_tweak_add); +static MP_DEFINE_CONST_FUN_OBJ_2(s_xonly_pubkey_tweak_add_obj, s_xonly_pubkey_tweak_add); // output signature as 65 bytes -STATIC mp_obj_t s_sig_to_bytes(mp_obj_t self_in) { +static mp_obj_t s_sig_to_bytes(mp_obj_t self_in) { mp_obj_sig_t *self = MP_OBJ_TO_PTR(self_in); int recid = 0; @@ -326,10 +326,10 @@ STATIC mp_obj_t s_sig_to_bytes(mp_obj_t self_in) { return mp_obj_new_str_from_vstr(&mp_type_bytes, &vstr); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(s_sig_to_bytes_obj, s_sig_to_bytes); +static MP_DEFINE_CONST_FUN_OBJ_1(s_sig_to_bytes_obj, s_sig_to_bytes); // verify sig (and recovery pubkey) -STATIC mp_obj_t s_sig_verify_recover(mp_obj_t self_in, mp_obj_t digest_in) +static mp_obj_t s_sig_verify_recover(mp_obj_t self_in, mp_obj_t digest_in) { mp_obj_sig_t *self = MP_OBJ_TO_PTR(self_in); @@ -350,10 +350,10 @@ STATIC mp_obj_t s_sig_verify_recover(mp_obj_t self_in, mp_obj_t digest_in) return MP_OBJ_FROM_PTR(rv); } -STATIC MP_DEFINE_CONST_FUN_OBJ_2(s_sig_verify_recover_obj, s_sig_verify_recover); +static MP_DEFINE_CONST_FUN_OBJ_2(s_sig_verify_recover_obj, s_sig_verify_recover); -STATIC mp_obj_t s_sign(mp_obj_t privkey_in, mp_obj_t digest_in, mp_obj_t counter_in) +static mp_obj_t s_sign(mp_obj_t privkey_in, mp_obj_t digest_in, mp_obj_t counter_in) { sec_setup_ctx(); @@ -395,10 +395,10 @@ STATIC mp_obj_t s_sign(mp_obj_t privkey_in, mp_obj_t digest_in, mp_obj_t counter return MP_OBJ_FROM_PTR(rv); } -STATIC MP_DEFINE_CONST_FUN_OBJ_3(s_sign_obj, s_sign); +static MP_DEFINE_CONST_FUN_OBJ_3(s_sign_obj, s_sign); -STATIC mp_obj_t s_verify_schnorr(mp_obj_t compact_sig_in, mp_obj_t digest_in, mp_obj_t xonly_pubkey_in) { +static mp_obj_t s_verify_schnorr(mp_obj_t compact_sig_in, mp_obj_t digest_in, mp_obj_t xonly_pubkey_in) { mp_buffer_info_t compact_sig; mp_get_buffer_raise(compact_sig_in, &compact_sig, MP_BUFFER_READ); if(compact_sig.len != 64) { @@ -422,10 +422,10 @@ STATIC mp_obj_t s_verify_schnorr(mp_obj_t compact_sig_in, mp_obj_t digest_in, mp } return mp_obj_new_int(ok); } -STATIC MP_DEFINE_CONST_FUN_OBJ_3(s_verify_schnorr_obj, s_verify_schnorr); +static MP_DEFINE_CONST_FUN_OBJ_3(s_verify_schnorr_obj, s_verify_schnorr); -STATIC mp_obj_t s_sign_schnorr(mp_obj_t privkey_in, mp_obj_t digest_in, mp_obj_t aux_rand_in) +static mp_obj_t s_sign_schnorr(mp_obj_t privkey_in, mp_obj_t digest_in, mp_obj_t aux_rand_in) { sec_setup_ctx(); @@ -468,12 +468,12 @@ STATIC mp_obj_t s_sign_schnorr(mp_obj_t privkey_in, mp_obj_t digest_in, mp_obj_t return mp_obj_new_str_from_vstr(&mp_type_bytes, &rv); } -STATIC MP_DEFINE_CONST_FUN_OBJ_3(s_sign_schnorr_obj, s_sign_schnorr); +static MP_DEFINE_CONST_FUN_OBJ_3(s_sign_schnorr_obj, s_sign_schnorr); // KEY PAIRS (private key, with public key computed) // Constructor for keypair -STATIC mp_obj_t s_keypair_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *args) { +static mp_obj_t s_keypair_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, 1, false); mp_obj_keypair_t *o = m_new_obj(mp_obj_keypair_t); @@ -513,7 +513,7 @@ STATIC mp_obj_t s_keypair_make_new(const mp_obj_type_t *type, size_t n_args, siz // keypair METHODS -STATIC mp_obj_t s_keypair_privkey(mp_obj_t self_in) { +static mp_obj_t s_keypair_privkey(mp_obj_t self_in) { mp_obj_keypair_t *self = MP_OBJ_TO_PTR(self_in); uint8_t seckey[32]; @@ -521,9 +521,9 @@ STATIC mp_obj_t s_keypair_privkey(mp_obj_t self_in) { return mp_obj_new_bytes(seckey, 32); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(s_keypair_privkey_obj, s_keypair_privkey); +static MP_DEFINE_CONST_FUN_OBJ_1(s_keypair_privkey_obj, s_keypair_privkey); -STATIC mp_obj_t s_keypair_pubkey(mp_obj_t self_in) { +static mp_obj_t s_keypair_pubkey(mp_obj_t self_in) { mp_obj_keypair_t *self = MP_OBJ_TO_PTR(self_in); sec_setup_ctx(); @@ -539,9 +539,9 @@ STATIC mp_obj_t s_keypair_pubkey(mp_obj_t self_in) { return MP_OBJ_FROM_PTR(rv); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(s_keypair_pubkey_obj, s_keypair_pubkey); +static MP_DEFINE_CONST_FUN_OBJ_1(s_keypair_pubkey_obj, s_keypair_pubkey); -STATIC mp_obj_t s_keypair_xonly_pubkey(mp_obj_t self_in) { +static mp_obj_t s_keypair_xonly_pubkey(mp_obj_t self_in) { mp_obj_keypair_t *self = MP_OBJ_TO_PTR(self_in); sec_setup_ctx(); @@ -557,9 +557,9 @@ STATIC mp_obj_t s_keypair_xonly_pubkey(mp_obj_t self_in) { return MP_OBJ_FROM_PTR(rv); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(s_keypair_xonly_pubkey_obj, s_keypair_xonly_pubkey); +static MP_DEFINE_CONST_FUN_OBJ_1(s_keypair_xonly_pubkey_obj, s_keypair_xonly_pubkey); -STATIC mp_obj_t s_keypair_xonly_tweak_add(mp_obj_t self_in, mp_obj_t tweak32_in) { +static mp_obj_t s_keypair_xonly_tweak_add(mp_obj_t self_in, mp_obj_t tweak32_in) { // Tweak a keypair by adding tweak32 to the secret key and updating the public // key accordingly. mp_buffer_info_t tweak32; @@ -590,7 +590,7 @@ STATIC mp_obj_t s_keypair_xonly_tweak_add(mp_obj_t self_in, mp_obj_t tweak32_in) return MP_OBJ_FROM_PTR(rv); } -STATIC MP_DEFINE_CONST_FUN_OBJ_2(s_keypair_xonly_tweak_add_obj, s_keypair_xonly_tweak_add); +static MP_DEFINE_CONST_FUN_OBJ_2(s_keypair_xonly_tweak_add_obj, s_keypair_xonly_tweak_add); static int _my_ecdh_hash(uint8_t *output, const uint8_t *x32, const uint8_t *y32, void *data) { (void)data; @@ -618,7 +618,7 @@ static int _my_ecdh_hash(uint8_t *output, const uint8_t *x32, const uint8_t *y32 return 1; } -STATIC mp_obj_t s_keypair_ecdh_multiply(mp_obj_t self_in, mp_obj_t other_point_in) { +static mp_obj_t s_keypair_ecdh_multiply(mp_obj_t self_in, mp_obj_t other_point_in) { mp_obj_keypair_t *self = MP_OBJ_TO_PTR(self_in); // returns sha256(pubkey64(privkey * other_pubkey_point)) @@ -646,12 +646,12 @@ STATIC mp_obj_t s_keypair_ecdh_multiply(mp_obj_t self_in, mp_obj_t other_point_i return mp_obj_new_str_from_vstr(&mp_type_bytes, &rv); } -STATIC MP_DEFINE_CONST_FUN_OBJ_2(s_keypair_ecdh_multiply_obj, s_keypair_ecdh_multiply); +static MP_DEFINE_CONST_FUN_OBJ_2(s_keypair_ecdh_multiply_obj, s_keypair_ecdh_multiply); // MuSig2 -STATIC mp_obj_t s_musig_keyagg_cache_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *args) { +static mp_obj_t s_musig_keyagg_cache_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_musig_keyagg_cache_t *cache = m_new_obj(mp_obj_musig_keyagg_cache_t); cache->base.type = type; @@ -660,9 +660,9 @@ STATIC mp_obj_t s_musig_keyagg_cache_make_new(const mp_obj_type_t *type, size_t } -STATIC mp_obj_t s_musig_pubkey_agg(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t s_musig_pubkey_agg(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { - STATIC const mp_arg_t allowed_args[] = { + static const mp_arg_t allowed_args[] = { { MP_QSTR_pubkeys, MP_ARG_REQUIRED | MP_ARG_OBJ, {.u_obj = MP_OBJ_NULL} }, { MP_QSTR_keyagg_cache, MP_ARG_OBJ, {.u_obj = mp_const_none} }, { MP_QSTR_sort, MP_ARG_OBJ, {.u_obj = mp_const_true} }, @@ -728,7 +728,7 @@ MP_DEFINE_CONST_FUN_OBJ_KW(s_musig_pubkey_agg_obj, 1, s_musig_pubkey_agg); // when non-xonly aggregate pubkey is needed -STATIC mp_obj_t s_musig_pubkey_get(mp_obj_t keyagg_cache_in){ +static mp_obj_t s_musig_pubkey_get(mp_obj_t keyagg_cache_in){ mp_obj_musig_keyagg_cache_t *cache = MP_OBJ_TO_PTR(keyagg_cache_in); @@ -741,10 +741,10 @@ STATIC mp_obj_t s_musig_pubkey_get(mp_obj_t keyagg_cache_in){ } return MP_OBJ_FROM_PTR(pubkey); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(s_musig_pubkey_get_obj, s_musig_pubkey_get); +static MP_DEFINE_CONST_FUN_OBJ_1(s_musig_pubkey_get_obj, s_musig_pubkey_get); -STATIC mp_obj_t s_musig_pubkey_ec_tweak_add(mp_obj_t keyagg_cache_in, mp_obj_t tweak32_in){ +static mp_obj_t s_musig_pubkey_ec_tweak_add(mp_obj_t keyagg_cache_in, mp_obj_t tweak32_in){ if(mp_obj_get_type(keyagg_cache_in) != &s_musig_keyagg_cache_type) { mp_raise_TypeError(MP_ERROR_TEXT("key aggregation cache type")); @@ -769,10 +769,10 @@ STATIC mp_obj_t s_musig_pubkey_ec_tweak_add(mp_obj_t keyagg_cache_in, mp_obj_t t return MP_OBJ_FROM_PTR(res); } -STATIC MP_DEFINE_CONST_FUN_OBJ_2(s_musig_pubkey_ec_tweak_add_obj, s_musig_pubkey_ec_tweak_add); +static MP_DEFINE_CONST_FUN_OBJ_2(s_musig_pubkey_ec_tweak_add_obj, s_musig_pubkey_ec_tweak_add); -STATIC mp_obj_t s_musig_pubkey_xonly_tweak_add(mp_obj_t keyagg_cache_in, mp_obj_t tweak32_in){ +static mp_obj_t s_musig_pubkey_xonly_tweak_add(mp_obj_t keyagg_cache_in, mp_obj_t tweak32_in){ if(mp_obj_get_type(keyagg_cache_in) != &s_musig_keyagg_cache_type) { mp_raise_TypeError(MP_ERROR_TEXT("key aggregation cache type")); @@ -797,12 +797,12 @@ STATIC mp_obj_t s_musig_pubkey_xonly_tweak_add(mp_obj_t keyagg_cache_in, mp_obj_ return MP_OBJ_FROM_PTR(res); } -STATIC MP_DEFINE_CONST_FUN_OBJ_2(s_musig_pubkey_xonly_tweak_add_obj, s_musig_pubkey_xonly_tweak_add); +static MP_DEFINE_CONST_FUN_OBJ_2(s_musig_pubkey_xonly_tweak_add_obj, s_musig_pubkey_xonly_tweak_add); -STATIC mp_obj_t s_musig_nonce_gen(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t s_musig_nonce_gen(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { - STATIC const mp_arg_t allowed_args[] = { + static const mp_arg_t allowed_args[] = { { MP_QSTR_pubkey, MP_ARG_REQUIRED | MP_ARG_OBJ, {.u_obj = MP_OBJ_NULL} }, { MP_QSTR_secrand, MP_ARG_OBJ, {.u_obj = mp_const_none} }, { MP_QSTR_seckey, MP_ARG_OBJ, {.u_obj = mp_const_none} }, @@ -908,7 +908,7 @@ STATIC mp_obj_t s_musig_nonce_gen(size_t n_args, const mp_obj_t *pos_args, mp_ma MP_DEFINE_CONST_FUN_OBJ_KW(s_musig_nonce_gen_obj, 1, s_musig_nonce_gen); -STATIC mp_obj_t s_pubnonce_to_bytes(mp_obj_t pubnonce_in) { +static mp_obj_t s_pubnonce_to_bytes(mp_obj_t pubnonce_in) { mp_obj_musig_pubnonce_t *self = MP_OBJ_TO_PTR(pubnonce_in); vstr_t vstr; @@ -918,11 +918,11 @@ STATIC mp_obj_t s_pubnonce_to_bytes(mp_obj_t pubnonce_in) { return mp_obj_new_str_from_vstr(&mp_type_bytes, &vstr); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(s_pubnonce_to_bytes_obj, s_pubnonce_to_bytes); +static MP_DEFINE_CONST_FUN_OBJ_1(s_pubnonce_to_bytes_obj, s_pubnonce_to_bytes); // Constructor for pubnonce -STATIC mp_obj_t s_pubnonce_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *args) { +static mp_obj_t s_pubnonce_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, 1, 1, false); mp_obj_musig_pubnonce_t *self = m_new_obj(mp_obj_musig_pubnonce_t); @@ -944,7 +944,7 @@ STATIC mp_obj_t s_pubnonce_make_new(const mp_obj_type_t *type, size_t n_args, si } -STATIC mp_obj_t s_aggnonce_to_bytes(mp_obj_t aggnonce_in) { +static mp_obj_t s_aggnonce_to_bytes(mp_obj_t aggnonce_in) { mp_obj_musig_aggnonce_t *self = MP_OBJ_TO_PTR(aggnonce_in); vstr_t vstr; @@ -954,11 +954,11 @@ STATIC mp_obj_t s_aggnonce_to_bytes(mp_obj_t aggnonce_in) { return mp_obj_new_str_from_vstr(&mp_type_bytes, &vstr); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(s_aggnonce_to_bytes_obj, s_aggnonce_to_bytes); +static MP_DEFINE_CONST_FUN_OBJ_1(s_aggnonce_to_bytes_obj, s_aggnonce_to_bytes); // Constructor for aggregate nonce -STATIC mp_obj_t s_aggnonce_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *args) { +static mp_obj_t s_aggnonce_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, 1, 1, false); mp_obj_musig_aggnonce_t *self = m_new_obj(mp_obj_musig_aggnonce_t); @@ -980,7 +980,7 @@ STATIC mp_obj_t s_aggnonce_make_new(const mp_obj_type_t *type, size_t n_args, si } -STATIC mp_obj_t s_musig_nonce_agg(mp_obj_t pubnonces_in){ +static mp_obj_t s_musig_nonce_agg(mp_obj_t pubnonces_in){ if (!mp_obj_is_type(pubnonces_in, &mp_type_list)) { mp_raise_TypeError(MP_ERROR_TEXT("Expected a list object")); } @@ -1011,10 +1011,10 @@ STATIC mp_obj_t s_musig_nonce_agg(mp_obj_t pubnonces_in){ return MP_OBJ_FROM_PTR(an); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(s_musig_nonce_agg_obj, s_musig_nonce_agg); +static MP_DEFINE_CONST_FUN_OBJ_1(s_musig_nonce_agg_obj, s_musig_nonce_agg); -STATIC mp_obj_t s_musig_nonce_process(mp_obj_t aggnonce_in, mp_obj_t msg32_in, mp_obj_t keyagg_cache_in){ +static mp_obj_t s_musig_nonce_process(mp_obj_t aggnonce_in, mp_obj_t msg32_in, mp_obj_t keyagg_cache_in){ if(mp_obj_get_type(aggnonce_in) != &s_musig_aggnonce_type) { mp_raise_TypeError(MP_ERROR_TEXT("aggnonce type")); @@ -1046,11 +1046,11 @@ STATIC mp_obj_t s_musig_nonce_process(mp_obj_t aggnonce_in, mp_obj_t msg32_in, m return MP_OBJ_FROM_PTR(session); } -STATIC MP_DEFINE_CONST_FUN_OBJ_3(s_musig_nonce_process_obj, s_musig_nonce_process); +static MP_DEFINE_CONST_FUN_OBJ_3(s_musig_nonce_process_obj, s_musig_nonce_process); // Constructor for musig partial signature -STATIC mp_obj_t s_musig_partial_sig_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *args) { +static mp_obj_t s_musig_partial_sig_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, 1, 1, false); mp_obj_musig_partial_sig_t *self = m_new_obj(mp_obj_musig_partial_sig_t); @@ -1070,7 +1070,7 @@ STATIC mp_obj_t s_musig_partial_sig_make_new(const mp_obj_type_t *type, size_t n return MP_OBJ_FROM_PTR(self); } -STATIC mp_obj_t s_musig_partial_sig_to_bytes(mp_obj_t part_sig_in) { +static mp_obj_t s_musig_partial_sig_to_bytes(mp_obj_t part_sig_in) { mp_obj_musig_partial_sig_t *self = MP_OBJ_TO_PTR(part_sig_in); vstr_t vstr; @@ -1080,10 +1080,10 @@ STATIC mp_obj_t s_musig_partial_sig_to_bytes(mp_obj_t part_sig_in) { return mp_obj_new_str_from_vstr(&mp_type_bytes, &vstr); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(s_musig_partial_sig_to_bytes_obj, s_musig_partial_sig_to_bytes); +static MP_DEFINE_CONST_FUN_OBJ_1(s_musig_partial_sig_to_bytes_obj, s_musig_partial_sig_to_bytes); -STATIC mp_obj_t s_musig_partial_sign(size_t n_args, const mp_obj_t *args){ +static mp_obj_t s_musig_partial_sign(size_t n_args, const mp_obj_t *args){ if(mp_obj_get_type(args[0]) != &s_musig_secnonce_type) { mp_raise_TypeError(MP_ERROR_TEXT("secnonce type")); @@ -1120,11 +1120,11 @@ STATIC mp_obj_t s_musig_partial_sign(size_t n_args, const mp_obj_t *args){ return MP_OBJ_FROM_PTR(res); } -STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(s_musig_partial_sign_obj, 4, 4, s_musig_partial_sign); +static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(s_musig_partial_sign_obj, 4, 4, s_musig_partial_sign); // verify musig partial sig -STATIC mp_obj_t s_musig_partial_sig_verify(size_t n_args, const mp_obj_t *args) +static mp_obj_t s_musig_partial_sig_verify(size_t n_args, const mp_obj_t *args) { // no need to verify partial sig type as it this is method of the object if(mp_obj_get_type(args[1]) != &s_musig_pubnonce_type) { @@ -1157,10 +1157,10 @@ STATIC mp_obj_t s_musig_partial_sig_verify(size_t n_args, const mp_obj_t *args) return mp_obj_new_int(ok); } -STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(s_musig_partial_sig_verify_obj, 5, 5, s_musig_partial_sig_verify); +static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(s_musig_partial_sig_verify_obj, 5, 5, s_musig_partial_sig_verify); -STATIC mp_obj_t s_musig_partial_sig_agg(mp_obj_t part_sigs_in, mp_obj_t session_in){ +static mp_obj_t s_musig_partial_sig_agg(mp_obj_t part_sigs_in, mp_obj_t session_in){ if (!mp_obj_is_type(part_sigs_in, &mp_type_list)) { mp_raise_TypeError(MP_ERROR_TEXT("Expected a list object")); @@ -1198,17 +1198,17 @@ STATIC mp_obj_t s_musig_partial_sig_agg(mp_obj_t part_sigs_in, mp_obj_t session_ return mp_obj_new_str_from_vstr(&mp_type_bytes, &res); } -STATIC MP_DEFINE_CONST_FUN_OBJ_2(s_musig_partial_sig_agg_obj, s_musig_partial_sig_agg); +static MP_DEFINE_CONST_FUN_OBJ_2(s_musig_partial_sig_agg_obj, s_musig_partial_sig_agg); // sigs and what you can do with them -STATIC const mp_rom_map_elem_t s_sig_locals_dict_table[] = { +static const mp_rom_map_elem_t s_sig_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_to_bytes), MP_ROM_PTR(&s_sig_to_bytes_obj) }, { MP_ROM_QSTR(MP_QSTR_verify_recover), MP_ROM_PTR(&s_sig_verify_recover_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(s_sig_locals_dict, s_sig_locals_dict_table); +static MP_DEFINE_CONST_DICT(s_sig_locals_dict, s_sig_locals_dict_table); -STATIC const mp_obj_type_t s_sig_type = { +static const mp_obj_type_t s_sig_type = { { &mp_type_type }, .name = MP_QSTR_secp256k1_sig, .make_new = s_sig_make_new, @@ -1216,13 +1216,13 @@ STATIC const mp_obj_type_t s_sig_type = { }; // musig partial signature -STATIC const mp_rom_map_elem_t s_musig_partial_sig_locals_dict_table[] = { +static const mp_rom_map_elem_t s_musig_partial_sig_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_to_bytes), MP_ROM_PTR(&s_musig_partial_sig_to_bytes_obj) }, { MP_ROM_QSTR(MP_QSTR_verify), MP_ROM_PTR(&s_musig_partial_sig_verify_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(s_musig_partial_sig_locals_dict, s_musig_partial_sig_locals_dict_table); +static MP_DEFINE_CONST_DICT(s_musig_partial_sig_locals_dict, s_musig_partial_sig_locals_dict_table); -STATIC const mp_obj_type_t s_musig_partial_sig_type = { +static const mp_obj_type_t s_musig_partial_sig_type = { { &mp_type_type }, .name = MP_QSTR_secp256k1_musig_partial_sig, .make_new = s_musig_partial_sig_make_new, @@ -1230,27 +1230,27 @@ STATIC const mp_obj_type_t s_musig_partial_sig_type = { }; // pubkeys and what you can do with them -STATIC const mp_rom_map_elem_t s_pubkey_locals_dict_table[] = { +static const mp_rom_map_elem_t s_pubkey_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_to_bytes), MP_ROM_PTR(&s_pubkey_to_bytes_obj) }, { MP_ROM_QSTR(MP_QSTR_to_xonly), MP_ROM_PTR(&s_pubkey_to_xonly_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(s_pubkey_locals_dict, s_pubkey_locals_dict_table); +static MP_DEFINE_CONST_DICT(s_pubkey_locals_dict, s_pubkey_locals_dict_table); -STATIC const mp_rom_map_elem_t s_xonly_pubkey_locals_dict_table[] = { +static const mp_rom_map_elem_t s_xonly_pubkey_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_to_bytes), MP_ROM_PTR(&s_xonly_pubkey_to_bytes_obj) }, { MP_ROM_QSTR(MP_QSTR_parity), MP_ROM_PTR(&s_xonly_pubkey_parity_obj) }, { MP_ROM_QSTR(MP_QSTR_tweak_add), MP_ROM_PTR(&s_xonly_pubkey_tweak_add_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(s_xonly_pubkey_locals_dict, s_xonly_pubkey_locals_dict_table); +static MP_DEFINE_CONST_DICT(s_xonly_pubkey_locals_dict, s_xonly_pubkey_locals_dict_table); -STATIC const mp_obj_type_t s_pubkey_type = { +static const mp_obj_type_t s_pubkey_type = { { &mp_type_type }, .name = MP_QSTR_secp256k1_pubkey, .make_new = s_pubkey_make_new, .locals_dict = (void *)&s_pubkey_locals_dict, }; -STATIC const mp_obj_type_t s_xonly_pubkey_type = { +static const mp_obj_type_t s_xonly_pubkey_type = { { &mp_type_type }, .name = MP_QSTR_secp256k1_xonly_pubkey, .make_new = s_xonly_pubkey_make_new, @@ -1258,17 +1258,17 @@ STATIC const mp_obj_type_t s_xonly_pubkey_type = { }; // musig opaque -STATIC const mp_obj_type_t s_musig_session_type = { +static const mp_obj_type_t s_musig_session_type = { { &mp_type_type }, .name = MP_QSTR_secp256k1_musig_session, }; -STATIC const mp_rom_map_elem_t s_musig_keyagg_cache_locals_dict_table[] = { +static const mp_rom_map_elem_t s_musig_keyagg_cache_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_agg_pubkey), MP_ROM_PTR(&s_musig_pubkey_get_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(s_musig_keyagg_cache_locals_dict, s_musig_keyagg_cache_locals_dict_table); +static MP_DEFINE_CONST_DICT(s_musig_keyagg_cache_locals_dict, s_musig_keyagg_cache_locals_dict_table); -STATIC const mp_obj_type_t s_musig_keyagg_cache_type = { +static const mp_obj_type_t s_musig_keyagg_cache_type = { { &mp_type_type }, .name = MP_QSTR_secp256k1_musig_keyagg_cache, .make_new = s_musig_keyagg_cache_make_new, @@ -1276,46 +1276,46 @@ STATIC const mp_obj_type_t s_musig_keyagg_cache_type = { }; // musig nonces -STATIC const mp_rom_map_elem_t s_musig_pubnonce_locals_dict_table[] = { +static const mp_rom_map_elem_t s_musig_pubnonce_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_to_bytes), MP_ROM_PTR(&s_pubnonce_to_bytes_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(s_musig_pubnonce_locals_dict, s_musig_pubnonce_locals_dict_table); +static MP_DEFINE_CONST_DICT(s_musig_pubnonce_locals_dict, s_musig_pubnonce_locals_dict_table); -STATIC const mp_obj_type_t s_musig_pubnonce_type = { +static const mp_obj_type_t s_musig_pubnonce_type = { { &mp_type_type }, .name = MP_QSTR_secp256k1_musig_pubnonce, .make_new = s_pubnonce_make_new, .locals_dict = (void *)&s_musig_pubnonce_locals_dict, }; -STATIC const mp_rom_map_elem_t s_musig_aggnonce_locals_dict_table[] = { +static const mp_rom_map_elem_t s_musig_aggnonce_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_to_bytes), MP_ROM_PTR(&s_aggnonce_to_bytes_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(s_musig_aggnonce_locals_dict, s_musig_aggnonce_locals_dict_table); +static MP_DEFINE_CONST_DICT(s_musig_aggnonce_locals_dict, s_musig_aggnonce_locals_dict_table); -STATIC const mp_obj_type_t s_musig_aggnonce_type = { +static const mp_obj_type_t s_musig_aggnonce_type = { { &mp_type_type }, .name = MP_QSTR_secp256k1_musig_aggnonce, .make_new = s_aggnonce_make_new, .locals_dict = (void *)&s_musig_aggnonce_locals_dict, }; -STATIC const mp_obj_type_t s_musig_secnonce_type = { +static const mp_obj_type_t s_musig_secnonce_type = { { &mp_type_type }, .name = MP_QSTR_secp256k1_musig_secnonce, }; // privkeys and what you can do with them -STATIC const mp_rom_map_elem_t s_keypair_locals_dict_table[] = { +static const mp_rom_map_elem_t s_keypair_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_privkey), MP_ROM_PTR(&s_keypair_privkey_obj) }, { MP_ROM_QSTR(MP_QSTR_pubkey), MP_ROM_PTR(&s_keypair_pubkey_obj) }, { MP_ROM_QSTR(MP_QSTR_xonly_pubkey), MP_ROM_PTR(&s_keypair_xonly_pubkey_obj) }, { MP_ROM_QSTR(MP_QSTR_xonly_tweak_add), MP_ROM_PTR(&s_keypair_xonly_tweak_add_obj) }, { MP_ROM_QSTR(MP_QSTR_ecdh_multiply), MP_ROM_PTR(&s_keypair_ecdh_multiply_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(s_keypair_locals_dict, s_keypair_locals_dict_table); +static MP_DEFINE_CONST_DICT(s_keypair_locals_dict, s_keypair_locals_dict_table); -STATIC const mp_obj_type_t s_keypair_type = { +static const mp_obj_type_t s_keypair_type = { { &mp_type_type }, .name = MP_QSTR_secp256k1_keypair, .make_new = s_keypair_make_new, @@ -1323,7 +1323,7 @@ STATIC const mp_obj_type_t s_keypair_type = { }; -STATIC const mp_rom_map_elem_t globals_table[] = { +static const mp_rom_map_elem_t globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_secp256k1) }, { MP_ROM_QSTR(MP_QSTR_pubkey), MP_ROM_PTR(&s_pubkey_type) }, @@ -1349,7 +1349,7 @@ STATIC const mp_rom_map_elem_t globals_table[] = { { MP_ROM_QSTR(MP_QSTR_musig_partial_sig_agg), MP_ROM_PTR(&s_musig_partial_sig_agg_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(globals_table_obj, globals_table); +static MP_DEFINE_CONST_DICT(globals_table_obj, globals_table); const mp_obj_module_t mp_module_secp256k1 = { .base = { &mp_type_module }, diff --git a/ngu/modngu.c b/ngu/modngu.c index 2390183..4c7580a 100644 --- a/ngu/modngu.c +++ b/ngu/modngu.c @@ -27,7 +27,7 @@ extern const mp_obj_module_t mp_module_cert; extern const mp_obj_module_t mp_module_aes; #endif -STATIC const mp_rom_map_elem_t mp_module_ngu_globals_table[] = { +static const mp_rom_map_elem_t mp_module_ngu_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_ngu) }, // Constants @@ -48,7 +48,7 @@ STATIC const mp_rom_map_elem_t mp_module_ngu_globals_table[] = { #endif }; -STATIC MP_DEFINE_CONST_DICT(mp_module_ngu_globals, mp_module_ngu_globals_table); +static MP_DEFINE_CONST_DICT(mp_module_ngu_globals, mp_module_ngu_globals_table); const mp_obj_module_t mp_module_ngu = { .base = { &mp_type_module }, diff --git a/ngu/random.c b/ngu/random.c index 1fc2232..d7ba498 100644 --- a/ngu/random.c +++ b/ngu/random.c @@ -55,7 +55,7 @@ extern uint32_t rng_get(void); static uint32_t yasmarang_pad = 0x0a8ce26f, yasmarang_n = 69, yasmarang_d = 233; static uint8_t yasmarang_dat = 0; -STATIC uint32_t my_yasmarang(void) { +static uint32_t my_yasmarang(void) { yasmarang_pad += yasmarang_dat + yasmarang_d * yasmarang_n; yasmarang_pad = (yasmarang_pad << 3) + (yasmarang_pad >> 29); yasmarang_n = yasmarang_pad | 2; @@ -88,7 +88,7 @@ void my_random_bytes(uint8_t *dest, uint32_t count) } } -STATIC mp_obj_t random_uint32(void) { +static mp_obj_t random_uint32(void) { // full 32-bit values, not 30 CHIP_TRNG_SETUP(); @@ -98,7 +98,7 @@ STATIC mp_obj_t random_uint32(void) { return mp_obj_new_int_from_uint(rv); } -STATIC MP_DEFINE_CONST_FUN_OBJ_0(random_uint32_obj, random_uint32); +static MP_DEFINE_CONST_FUN_OBJ_0(random_uint32_obj, random_uint32); int _bit_length(uint32_t x) { @@ -134,15 +134,15 @@ int _rand_below(int mx) } } -STATIC mp_obj_t random_uniform(mp_obj_t mx_in) { +static mp_obj_t random_uniform(mp_obj_t mx_in) { int mx = mp_obj_get_int_truncated(mx_in); return mp_obj_new_int_from_uint(_rand_below(mx)); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(random_uniform_obj, random_uniform); +static MP_DEFINE_CONST_FUN_OBJ_1(random_uniform_obj, random_uniform); -STATIC mp_obj_t random_bytes(mp_obj_t count_in) +static mp_obj_t random_bytes(mp_obj_t count_in) { int count = mp_obj_get_int_truncated(count_in); if(count > 4096) { @@ -156,19 +156,19 @@ STATIC mp_obj_t random_bytes(mp_obj_t count_in) return mp_obj_new_str_from_vstr(&mp_type_bytes, &rv); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(random_bytes_obj, random_bytes); +static MP_DEFINE_CONST_FUN_OBJ_1(random_bytes_obj, random_bytes); -STATIC mp_obj_t random_reseed(mp_obj_t arg) +static mp_obj_t random_reseed(mp_obj_t arg) { yasmarang_pad = mp_obj_get_int_truncated(arg); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(random_reseed_obj, random_reseed); +static MP_DEFINE_CONST_FUN_OBJ_1(random_reseed_obj, random_reseed); -STATIC const mp_rom_map_elem_t globals_table[] = { +static const mp_rom_map_elem_t globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_random) }, { MP_ROM_QSTR(MP_QSTR_bytes), MP_ROM_PTR(&random_bytes_obj) }, @@ -177,7 +177,7 @@ STATIC const mp_rom_map_elem_t globals_table[] = { { MP_ROM_QSTR(MP_QSTR_reseed), MP_ROM_PTR(&random_reseed_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(globals_table_obj, globals_table); +static MP_DEFINE_CONST_DICT(globals_table_obj, globals_table); const mp_obj_module_t mp_module_random = { .base = { &mp_type_module }, From a7470a3f1377125153d4aa94bfb31c3c5b05fff0 Mon Sep 17 00:00:00 2001 From: scgbckbone Date: Tue, 21 Apr 2026 11:54:05 +0200 Subject: [PATCH 06/15] DEFINE_CONST_OBJ_TYPE --- ngu/aes.c | 27 +++++------ ngu/cert.c | 15 ++++--- ngu/ec.c | 13 +++--- ngu/hash.c | 13 +++--- ngu/hdnode.c | 15 ++++--- ngu/k1.c | 123 +++++++++++++++++++++++++++------------------------ 6 files changed, 109 insertions(+), 97 deletions(-) diff --git a/ngu/aes.c b/ngu/aes.c index 29d1ad6..51abe71 100644 --- a/ngu/aes.c +++ b/ngu/aes.c @@ -186,12 +186,13 @@ static const mp_rom_map_elem_t s_CBC_locals_dict_table[] = { }; static MP_DEFINE_CONST_DICT(s_CBC_locals_dict, s_CBC_locals_dict_table); -static const mp_obj_type_t s_CBC_type = { - { &mp_type_type }, - .name = MP_QSTR_CBC, - .make_new = s_CBC_make_new, - .locals_dict = (void *)&s_CBC_locals_dict, -}; +static MP_DEFINE_CONST_OBJ_TYPE( + s_CBC_type, + MP_QSTR_CBC, + MP_TYPE_FLAG_NONE, + make_new, s_CBC_make_new, + locals_dict, &s_CBC_locals_dict +); static const mp_rom_map_elem_t s_CTR_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_cipher), MP_ROM_PTR(&s_CTR_cipher_obj) }, @@ -201,13 +202,13 @@ static const mp_rom_map_elem_t s_CTR_locals_dict_table[] = { }; static MP_DEFINE_CONST_DICT(s_CTR_locals_dict, s_CTR_locals_dict_table); -static const mp_obj_type_t s_CTR_type = { - { &mp_type_type }, - .name = MP_QSTR_CTR, - .make_new = s_CTR_make_new, - .locals_dict = (void *)&s_CTR_locals_dict, -}; - +static MP_DEFINE_CONST_OBJ_TYPE( + s_CTR_type, + MP_QSTR_CTR, + MP_TYPE_FLAG_NONE, + make_new, s_CTR_make_new, + locals_dict, &s_CTR_locals_dict +); static const mp_rom_map_elem_t mp_module_aes_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_aes) }, diff --git a/ngu/cert.c b/ngu/cert.c index 706c0aa..a684ec6 100644 --- a/ngu/cert.c +++ b/ngu/cert.c @@ -140,13 +140,14 @@ static const mp_rom_map_elem_t cert_locals_dict_table[] = { }; static MP_DEFINE_CONST_DICT(cert_locals_dict, cert_locals_dict_table); -static const mp_obj_type_t cert_type = { - { &mp_type_type }, - .name = MP_QSTR_x509_cert, - .print = cert_print, - .make_new = cert_make_new, - .locals_dict = (void *)&cert_locals_dict, -}; +static MP_DEFINE_CONST_OBJ_TYPE( + cert_type, + MP_QSTR_x509_cert, + MP_TYPE_FLAG_NONE, + print, cert_print, + make_new, cert_make_new, + locals_dict, &cert_locals_dict +); static const mp_rom_map_elem_t globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_cert) }, diff --git a/ngu/ec.c b/ngu/ec.c index 105b576..8b03ad3 100644 --- a/ngu/ec.c +++ b/ngu/ec.c @@ -165,12 +165,13 @@ static const mp_rom_map_elem_t curve_locals_dict_table[] = { }; static MP_DEFINE_CONST_DICT(curve_locals_dict, curve_locals_dict_table); -static const mp_obj_type_t modngu_ec_curve_type = { - { &mp_type_type }, - .name = MP_QSTR_ec_curve, - .make_new = curve_make_new, - .locals_dict = (void *)&curve_locals_dict, -}; +static MP_DEFINE_CONST_OBJ_TYPE( + modngu_ec_curve_type, + MP_QSTR_ec_curve, + MP_TYPE_FLAG_NONE, + make_new, curve_make_new, + locals_dict, &curve_locals_dict +); static const mp_rom_map_elem_t mp_module_ec_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_ec) }, diff --git a/ngu/hash.c b/ngu/hash.c index 8e08dbe..adc6aa8 100644 --- a/ngu/hash.c +++ b/ngu/hash.c @@ -108,12 +108,13 @@ static const mp_rom_map_elem_t modngu_hash_sha512_locals_dict_table[] = { }; static MP_DEFINE_CONST_DICT(modngu_hash_sha512_locals_dict, modngu_hash_sha512_locals_dict_table); -static const mp_obj_type_t modngu_hash_sha512_type = { - { &mp_type_type }, - .name = MP_QSTR_sha512, - .make_new = modngu_hash_sha512_make_new, - .locals_dict = (void *)&modngu_hash_sha512_locals_dict, -}; +static MP_DEFINE_CONST_OBJ_TYPE( + modngu_hash_sha512_type, + MP_QSTR_sha512, + MP_TYPE_FLAG_NONE, + make_new, modngu_hash_sha512_make_new, + locals_dict, &modngu_hash_sha512_locals_dict +); // Tagged sha256 = SHA256(SHA256(tag)||SHA256(tag)||msg) static mp_obj_t hm_tagged_sha256(size_t n_args, const mp_obj_t *args) { diff --git a/ngu/hdnode.c b/ngu/hdnode.c index 8fe3926..0475589 100644 --- a/ngu/hdnode.c +++ b/ngu/hdnode.c @@ -654,15 +654,16 @@ static const mp_rom_map_elem_t s_hdnode_locals_dict_table[] = { static MP_DEFINE_CONST_DICT(s_hdnode_locals_dict, s_hdnode_locals_dict_table); // class: HDNode -static const mp_obj_type_t s_hdnode_type = { - { &mp_type_type }, - .name = MP_QSTR_HDNode, - .make_new = s_hdnode_make_new, +static MP_DEFINE_CONST_OBJ_TYPE( + s_hdnode_type, + MP_QSTR_HDNode, + MP_TYPE_FLAG_NONE, #ifdef EXTRA_DEBUG - .print = s_hdnode_repr, + print, s_hdnode_repr, #endif - .locals_dict = (void *)&s_hdnode_locals_dict, -}; + make_new, s_hdnode_make_new, + locals_dict, &s_hdnode_locals_dict +); static const mp_rom_map_elem_t globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_hdnode) }, diff --git a/ngu/k1.c b/ngu/k1.c index 6158b05..3be6c5b 100644 --- a/ngu/k1.c +++ b/ngu/k1.c @@ -1208,12 +1208,13 @@ static const mp_rom_map_elem_t s_sig_locals_dict_table[] = { }; static MP_DEFINE_CONST_DICT(s_sig_locals_dict, s_sig_locals_dict_table); -static const mp_obj_type_t s_sig_type = { - { &mp_type_type }, - .name = MP_QSTR_secp256k1_sig, - .make_new = s_sig_make_new, - .locals_dict = (void *)&s_sig_locals_dict, -}; +static MP_DEFINE_CONST_OBJ_TYPE( + s_sig_type, + MP_QSTR_secp256k1_sig, + MP_TYPE_FLAG_NONE, + make_new, s_sig_make_new, + locals_dict, &s_sig_locals_dict +); // musig partial signature static const mp_rom_map_elem_t s_musig_partial_sig_locals_dict_table[] = { @@ -1222,12 +1223,13 @@ static const mp_rom_map_elem_t s_musig_partial_sig_locals_dict_table[] = { }; static MP_DEFINE_CONST_DICT(s_musig_partial_sig_locals_dict, s_musig_partial_sig_locals_dict_table); -static const mp_obj_type_t s_musig_partial_sig_type = { - { &mp_type_type }, - .name = MP_QSTR_secp256k1_musig_partial_sig, - .make_new = s_musig_partial_sig_make_new, - .locals_dict = (void *)&s_musig_partial_sig_locals_dict, -}; +static MP_DEFINE_CONST_OBJ_TYPE( + s_musig_partial_sig_type, + MP_QSTR_secp256k1_musig_partial_sig, + MP_TYPE_FLAG_NONE, + make_new, s_musig_partial_sig_make_new, + locals_dict, &s_musig_partial_sig_locals_dict +); // pubkeys and what you can do with them static const mp_rom_map_elem_t s_pubkey_locals_dict_table[] = { @@ -1243,37 +1245,40 @@ static const mp_rom_map_elem_t s_xonly_pubkey_locals_dict_table[] = { }; static MP_DEFINE_CONST_DICT(s_xonly_pubkey_locals_dict, s_xonly_pubkey_locals_dict_table); -static const mp_obj_type_t s_pubkey_type = { - { &mp_type_type }, - .name = MP_QSTR_secp256k1_pubkey, - .make_new = s_pubkey_make_new, - .locals_dict = (void *)&s_pubkey_locals_dict, -}; - -static const mp_obj_type_t s_xonly_pubkey_type = { - { &mp_type_type }, - .name = MP_QSTR_secp256k1_xonly_pubkey, - .make_new = s_xonly_pubkey_make_new, - .locals_dict = (void *)&s_xonly_pubkey_locals_dict, -}; +static MP_DEFINE_CONST_OBJ_TYPE( + s_pubkey_type, + MP_QSTR_secp256k1_pubkey, + MP_TYPE_FLAG_NONE, + make_new, s_pubkey_make_new, + locals_dict, &s_pubkey_locals_dict +); + +static MP_DEFINE_CONST_OBJ_TYPE( + s_xonly_pubkey_type, + MP_QSTR_secp256k1_xonly_pubkey, + MP_TYPE_FLAG_NONE, + make_new, s_xonly_pubkey_make_new, + locals_dict, &s_xonly_pubkey_locals_dict +); // musig opaque -static const mp_obj_type_t s_musig_session_type = { - { &mp_type_type }, - .name = MP_QSTR_secp256k1_musig_session, -}; +static MP_DEFINE_CONST_OBJ_TYPE( + s_musig_session_type, + MP_QSTR_secp256k1_musig_session, +); static const mp_rom_map_elem_t s_musig_keyagg_cache_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_agg_pubkey), MP_ROM_PTR(&s_musig_pubkey_get_obj) }, }; static MP_DEFINE_CONST_DICT(s_musig_keyagg_cache_locals_dict, s_musig_keyagg_cache_locals_dict_table); -static const mp_obj_type_t s_musig_keyagg_cache_type = { - { &mp_type_type }, - .name = MP_QSTR_secp256k1_musig_keyagg_cache, - .make_new = s_musig_keyagg_cache_make_new, - .locals_dict = (void *)&s_musig_keyagg_cache_locals_dict, -}; +static MP_DEFINE_CONST_OBJ_TYPE( + s_musig_keyagg_cache_type, + MP_QSTR_secp256k1_musig_keyagg_cache, + MP_TYPE_FLAG_NONE, + make_new, s_musig_keyagg_cache_make_new, + locals_dict, &s_musig_keyagg_cache_locals_dict +); // musig nonces static const mp_rom_map_elem_t s_musig_pubnonce_locals_dict_table[] = { @@ -1281,29 +1286,31 @@ static const mp_rom_map_elem_t s_musig_pubnonce_locals_dict_table[] = { }; static MP_DEFINE_CONST_DICT(s_musig_pubnonce_locals_dict, s_musig_pubnonce_locals_dict_table); -static const mp_obj_type_t s_musig_pubnonce_type = { - { &mp_type_type }, - .name = MP_QSTR_secp256k1_musig_pubnonce, - .make_new = s_pubnonce_make_new, - .locals_dict = (void *)&s_musig_pubnonce_locals_dict, -}; +static MP_DEFINE_CONST_OBJ_TYPE( + s_musig_pubnonce_type, + MP_QSTR_secp256k1_musig_pubnonce, + MP_TYPE_FLAG_NONE, + make_new, s_pubnonce_make_new, + locals_dict, &s_musig_pubnonce_locals_dict +); static const mp_rom_map_elem_t s_musig_aggnonce_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_to_bytes), MP_ROM_PTR(&s_aggnonce_to_bytes_obj) }, }; static MP_DEFINE_CONST_DICT(s_musig_aggnonce_locals_dict, s_musig_aggnonce_locals_dict_table); -static const mp_obj_type_t s_musig_aggnonce_type = { - { &mp_type_type }, - .name = MP_QSTR_secp256k1_musig_aggnonce, - .make_new = s_aggnonce_make_new, - .locals_dict = (void *)&s_musig_aggnonce_locals_dict, -}; +static MP_DEFINE_CONST_OBJ_TYPE( + s_musig_aggnonce_type, + MP_QSTR_secp256k1_musig_aggnonce, + MP_TYPE_FLAG_NONE, + make_new, s_aggnonce_make_new, + locals_dict, &s_musig_aggnonce_locals_dict +); -static const mp_obj_type_t s_musig_secnonce_type = { - { &mp_type_type }, - .name = MP_QSTR_secp256k1_musig_secnonce, -}; +static MP_DEFINE_CONST_OBJ_TYPE( + s_musig_secnonce_type, + MP_QSTR_secp256k1_musig_secnonce, +); // privkeys and what you can do with them static const mp_rom_map_elem_t s_keypair_locals_dict_table[] = { @@ -1315,13 +1322,13 @@ static const mp_rom_map_elem_t s_keypair_locals_dict_table[] = { }; static MP_DEFINE_CONST_DICT(s_keypair_locals_dict, s_keypair_locals_dict_table); -static const mp_obj_type_t s_keypair_type = { - { &mp_type_type }, - .name = MP_QSTR_secp256k1_keypair, - .make_new = s_keypair_make_new, - .locals_dict = (void *)&s_keypair_locals_dict, -}; - +static MP_DEFINE_CONST_OBJ_TYPE( + s_keypair_type, + MP_QSTR_secp256k1_keypair, + MP_TYPE_FLAG_NONE, + make_new, s_keypair_make_new, + locals_dict, &s_keypair_locals_dict +); static const mp_rom_map_elem_t globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_secp256k1) }, From 6b80f72bf5a1a63817834331373be9f80316dfcb Mon Sep 17 00:00:00 2001 From: scgbckbone Date: Tue, 21 Apr 2026 13:20:54 +0200 Subject: [PATCH 07/15] get rid of vstr --- ngu/aes.c | 17 ++++++------ ngu/cert.c | 8 +++--- ngu/ec.c | 10 +++---- ngu/hash.c | 54 +++++++++++++++++--------------------- ngu/hdnode.c | 21 +++------------ ngu/hm.c | 9 +++---- ngu/k1.c | 74 +++++++++++++++++++++++----------------------------- ngu/random.c | 7 +++-- 8 files changed, 82 insertions(+), 118 deletions(-) diff --git a/ngu/aes.c b/ngu/aes.c index 51abe71..add42a0 100644 --- a/ngu/aes.c +++ b/ngu/aes.c @@ -99,19 +99,19 @@ static mp_obj_t s_CBC_cipher(mp_obj_t self_in, mp_obj_t buf_in) assert(self->aes_ctx.rounds); - vstr_t rv; - vstr_init_len(&rv, buf.len); + uint8_t rv[buf.len]; + if(buf.len % CF_MAXBLOCK) { // 16 mp_raise_ValueError(NULL); } if(self->is_encrypt) { - cf_cbc_encrypt(&self->mode_ctx, buf.buf, (uint8_t *)rv.buf, buf.len/CF_MAXBLOCK); + cf_cbc_encrypt(&self->mode_ctx, buf.buf, rv, buf.len/CF_MAXBLOCK); } else { - cf_cbc_decrypt(&self->mode_ctx, buf.buf, (uint8_t *)rv.buf, buf.len/CF_MAXBLOCK); + cf_cbc_decrypt(&self->mode_ctx, buf.buf, rv, buf.len/CF_MAXBLOCK); } - return mp_obj_new_str_from_vstr(&mp_type_bytes, &rv); + return mp_obj_new_bytes(rv, buf.len); } static MP_DEFINE_CONST_FUN_OBJ_2(s_CBC_cipher_obj, s_CBC_cipher); @@ -123,13 +123,12 @@ static mp_obj_t s_CTR_cipher(mp_obj_t self_in, mp_obj_t buf_in) assert(self->aes_ctx.rounds); - vstr_t rv; - vstr_init_len(&rv, buf.len); + uint8_t rv[buf.len]; // any size i/o works - cf_ctr_cipher(&self->mode_ctx, buf.buf, (uint8_t *)rv.buf, buf.len); + cf_ctr_cipher(&self->mode_ctx, buf.buf, rv, buf.len); - return mp_obj_new_str_from_vstr(&mp_type_bytes, &rv); + return mp_obj_new_bytes(rv, buf.len); } static MP_DEFINE_CONST_FUN_OBJ_2(s_CTR_cipher_obj, s_CTR_cipher); diff --git a/ngu/cert.c b/ngu/cert.c index a684ec6..c6f8085 100644 --- a/ngu/cert.c +++ b/ngu/cert.c @@ -105,18 +105,16 @@ static mp_obj_t get_ec_pubkey(mp_obj_t self_in) mp_raise_TypeError(MP_ERROR_TEXT("only EC for now")); } - - vstr_t vstr; - vstr_init_len(&vstr, 65); + uint8_t rv[65]; const mbedtls_ecp_keypair *pair = mbedtls_pk_ec(*pk); size_t actual = 0; CHECK_RESULT(mbedtls_ecp_point_write_binary(&pair->grp, &pair->Q, - MBEDTLS_ECP_PF_UNCOMPRESSED, &actual, (uint8_t *)vstr.buf, vstr.len)); + MBEDTLS_ECP_PF_UNCOMPRESSED, &actual, rv, 65)); assert(actual == 65); - return mp_obj_new_str_from_vstr(&mp_type_bytes, &vstr); + return mp_obj_new_bytes(rv, 65); } static MP_DEFINE_CONST_FUN_OBJ_1(get_ec_pubkey_obj, get_ec_pubkey); diff --git a/ngu/ec.c b/ngu/ec.c index 8b03ad3..0314461 100644 --- a/ngu/ec.c +++ b/ngu/ec.c @@ -85,17 +85,15 @@ static mp_obj_t curve_sign(mp_obj_t self_in, mp_obj_t privkey_in, mp_obj_t diges mbedtls_mpi_free(&privkey); // convert (R,S) output pair to 64 bytes - vstr_t vstr; - vstr_init_len(&vstr, 64); + uint8_t result[64]; - uint8_t *result = (uint8_t *)vstr.buf; - CHECK_RESULT(mbedtls_mpi_write_binary(&r, &result[0], 32)); - CHECK_RESULT(mbedtls_mpi_write_binary(&s, &result[32], 32)); + CHECK_RESULT(mbedtls_mpi_write_binary(&r, result, 32)); + CHECK_RESULT(mbedtls_mpi_write_binary(&s, result + 32, 32)); mbedtls_mpi_free(&r); mbedtls_mpi_free(&s); - return mp_obj_new_str_from_vstr(&mp_type_bytes, &vstr); + return mp_obj_new_bytes(result, 64); } static MP_DEFINE_CONST_FUN_OBJ_3(curve_sign_obj, curve_sign); diff --git a/ngu/hash.c b/ngu/hash.c index adc6aa8..4c14afd 100644 --- a/ngu/hash.c +++ b/ngu/hash.c @@ -86,17 +86,16 @@ static mp_obj_t modngu_hash_sha512_update(mp_obj_t self_in, mp_obj_t arg) { static mp_obj_t modngu_hash_sha512_digest(mp_obj_t self_in) { mp_obj_hash_t *self = MP_OBJ_TO_PTR(self_in); - vstr_t vstr; - vstr_init_len(&vstr, 64); + uint8_t rv[64]; #if MICROPY_SSL_MBEDTLS - mbedtls_sha512_finish_ret((mbedtls_sha512_context *)self->state, (byte *)vstr.buf); + mbedtls_sha512_finish_ret((mbedtls_sha512_context *)self->state, rv); mbedtls_sha512_free((mbedtls_sha512_context *)self->state); #else - cf_sha512_digest_final((cf_sha512_context *)self->state, (byte *)vstr.buf); + cf_sha512_digest_final((cf_sha512_context *)self->state, rv; #endif - return mp_obj_new_str_from_vstr(&mp_type_bytes, &vstr); + return mp_obj_new_bytes(rv, 64); } static MP_DEFINE_CONST_FUN_OBJ_2(modngu_hash_sha512_update_obj, modngu_hash_sha512_update); @@ -144,11 +143,11 @@ static mp_obj_t hm_tagged_sha256(size_t n_args, const mp_obj_t *args) { memcpy(ser + 32, s0, 32); memcpy(ser + 64, m.buf, m.len); - vstr_t res; - vstr_init_len(&res, 32); - sha256_single(ser, ser_len, (uint8_t *)res.buf); - return mp_obj_new_str_from_vstr(&mp_type_bytes, &res); + uint8_t res[32]; + sha256_single(ser, ser_len, res); + + return mp_obj_new_bytes(res, 32); } static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(hm_tagged_sha256_obj,2,3, hm_tagged_sha256); @@ -157,12 +156,11 @@ static mp_obj_t hm_double_sha256(mp_obj_t arg) { mp_buffer_info_t inp; mp_get_buffer_raise(arg, &inp, MP_BUFFER_READ); - vstr_t vstr; - vstr_init_len(&vstr, 32); + uint8_t res[32]; - sha256_double(inp.buf, inp.len, (uint8_t *)vstr.buf); + sha256_double(inp.buf, inp.len, res); - return mp_obj_new_str_from_vstr(&mp_type_bytes, &vstr); + return mp_obj_new_bytes(res, 32); } static MP_DEFINE_CONST_FUN_OBJ_1(hm_double_sha256_obj, hm_double_sha256); @@ -172,12 +170,11 @@ static mp_obj_t hm_single_sha256(mp_obj_t arg) { mp_buffer_info_t inp; mp_get_buffer_raise(arg, &inp, MP_BUFFER_READ); - vstr_t vstr; - vstr_init_len(&vstr, 32); + uint8_t res[32]; - sha256_single(inp.buf, inp.len, (uint8_t *)vstr.buf); + sha256_single(inp.buf, inp.len, res); - return mp_obj_new_str_from_vstr(&mp_type_bytes, &vstr); + return mp_obj_new_bytes(res, 32); } static MP_DEFINE_CONST_FUN_OBJ_1(hm_single_sha256_obj, hm_single_sha256); @@ -185,20 +182,19 @@ static mp_obj_t hm_single_ripemd160(mp_obj_t arg) { mp_buffer_info_t inp; mp_get_buffer_raise(arg, &inp, MP_BUFFER_READ); - vstr_t vstr; - vstr_init_len(&vstr, 20); + uint8_t res[20]; #if 0 mbedtls_ripemd160_context ctx; mbedtls_ripemd160_init(&ctx); mbedtls_ripemd160_starts_ret(&ctx); mbedtls_ripemd160_update_ret(&ctx, inp.buf, inp.len); - mbedtls_ripemd160_finish_ret(&ctx, (uint8_t *)vstr.buf); + mbedtls_ripemd160_finish_ret(&ctx, res); mbedtls_ripemd160_free(&ctx); #endif - ripemd160(inp.buf, inp.len, (uint8_t *)vstr.buf); + ripemd160(inp.buf, inp.len, res); - return mp_obj_new_str_from_vstr(&mp_type_bytes, &vstr); + return mp_obj_new_bytes(res, 20); } static MP_DEFINE_CONST_FUN_OBJ_1(hm_single_ripemd160_obj, hm_single_ripemd160); @@ -206,12 +202,11 @@ static mp_obj_t hm_hash160(mp_obj_t arg) { mp_buffer_info_t inp; mp_get_buffer_raise(arg, &inp, MP_BUFFER_READ); - vstr_t vstr; - vstr_init_len(&vstr, 20); + uint8_t res[20]; - hash160(inp.buf, inp.len, (uint8_t *)vstr.buf); + hash160(inp.buf, inp.len, res); - return mp_obj_new_str_from_vstr(&mp_type_bytes, &vstr); + return mp_obj_new_bytes(res, 20); } static MP_DEFINE_CONST_FUN_OBJ_1(hm_hash160_obj, hm_hash160); @@ -227,10 +222,9 @@ static mp_obj_t pbkdf2_sha512(mp_obj_t pass_in, mp_obj_t salt_in, mp_obj_t round const mbedtls_md_info_t *md_algo = mbedtls_md_info_from_type(MBEDTLS_MD_SHA512); #endif - vstr_t key_out; - vstr_init_len(&key_out, H_SIZE); uint32_t key_len = H_SIZE; - uint8_t *key = (uint8_t *)key_out.buf; + uint8_t key_arr[H_SIZE]; + uint8_t *key = key_arr; // Based on https://github.com/openbsd/src/blob/master/lib/libutil/pkcs5_pbkdf2.c @@ -286,7 +280,7 @@ static mp_obj_t pbkdf2_sha512(mp_obj_t pass_in, mp_obj_t salt_in, mp_obj_t round explicit_bzero(obuf, sizeof(obuf)); */ - return mp_obj_new_str_from_vstr(&mp_type_bytes, &key_out); + return mp_obj_new_bytes(key, H_SIZE); } static MP_DEFINE_CONST_FUN_OBJ_3(pbkdf2_sha512_obj, pbkdf2_sha512); diff --git a/ngu/hdnode.c b/ngu/hdnode.c index 0475589..b38bc18 100644 --- a/ngu/hdnode.c +++ b/ngu/hdnode.c @@ -221,30 +221,19 @@ static mp_obj_t s_hdnode_privkey(mp_obj_t self_in) { mp_obj_hdnode_t *self = MP_OBJ_TO_PTR(self_in); raise_on_invalid(self); - vstr_t vstr; - vstr_init_len(&vstr, 32); - if(!self->have_private) { mp_raise_ValueError(MP_ERROR_TEXT("no privkey")); } - memcpy(vstr.buf, self->privkey, 32); - return mp_obj_new_str_from_vstr(&mp_type_bytes, &vstr); + return mp_obj_new_bytes(self->privkey, 32); } static MP_DEFINE_CONST_FUN_OBJ_1(s_hdnode_privkey_obj, s_hdnode_privkey); - static mp_obj_t s_hdnode_pubkey(mp_obj_t self_in) { mp_obj_hdnode_t *self = MP_OBJ_TO_PTR(self_in); raise_on_invalid(self); - vstr_t vstr; - vstr_init_len(&vstr, 33); - - // 33 bytes of pubkey - memcpy(vstr.buf, self->pubkey, sizeof(self->pubkey)); - - return mp_obj_new_str_from_vstr(&mp_type_bytes, &vstr); + return mp_obj_new_bytes(self->pubkey, 33); } static MP_DEFINE_CONST_FUN_OBJ_1(s_hdnode_pubkey_obj, s_hdnode_pubkey); @@ -597,11 +586,7 @@ static mp_obj_t s_hdnode_chain_code(mp_obj_t self_in) { mp_obj_hdnode_t *self = MP_OBJ_TO_PTR(self_in); raise_on_invalid(self); - vstr_t vstr; - vstr_init_len(&vstr, 32); - memcpy(vstr.buf, self->chain_code, 32); - - return mp_obj_new_str_from_vstr(&mp_type_bytes, &vstr); + return mp_obj_new_bytes(self->chain_code, 32); } static MP_DEFINE_CONST_FUN_OBJ_1(s_hdnode_chain_code_obj, s_hdnode_chain_code); diff --git a/ngu/hm.c b/ngu/hm.c index 1292848..bc757e8 100644 --- a/ngu/hm.c +++ b/ngu/hm.c @@ -30,8 +30,7 @@ static mp_obj_t hmac_X(int md_size, mp_obj_t key_in, mp_obj_t msg_in) mp_get_buffer_raise(key_in, &key, MP_BUFFER_READ); mp_get_buffer_raise(msg_in, &msg, MP_BUFFER_READ); - vstr_t rv_out; - vstr_init_len(&rv_out, md_size); + uint8_t rv_out[md_size]; #if MICROPY_SSL_MBEDTLS const mbedtls_md_info_t *algo; @@ -50,7 +49,7 @@ static mp_obj_t hmac_X(int md_size, mp_obj_t key_in, mp_obj_t msg_in) mp_raise_ValueError(NULL); } - int x = mbedtls_md_hmac(algo, key.buf, key.len, msg.buf, msg.len, (uint8_t*)rv_out.buf); + int x = mbedtls_md_hmac(algo, key.buf, key.len, msg.buf, msg.len, rv_out); if(x) { mp_raise_msg(&mp_type_RuntimeError, MP_ERROR_TEXT("mbedtls_md_hmac")); @@ -72,10 +71,10 @@ static mp_obj_t hmac_X(int md_size, mp_obj_t key_in, mp_obj_t msg_in) default: mp_raise_ValueError(NULL); } - cf_hmac(key.buf, key.len, msg.buf, msg.len, (uint8_t*)rv_out.buf, algo); + cf_hmac(key.buf, key.len, msg.buf, msg.len, rv_out, algo); #endif - return mp_obj_new_str_from_vstr(&mp_type_bytes, &rv_out); + return mp_obj_new_bytes(rv_out, md_size); } static mp_obj_t hmac_sha512(mp_obj_t key_in, mp_obj_t msg_in) diff --git a/ngu/k1.c b/ngu/k1.c index 3be6c5b..09b636e 100644 --- a/ngu/k1.c +++ b/ngu/k1.c @@ -227,8 +227,8 @@ static mp_obj_t s_xonly_pubkey_make_new(const mp_obj_type_t *type, size_t n_args static mp_obj_t s_pubkey_to_bytes(size_t n_args, const mp_obj_t *args) { mp_obj_pubkey_t *self = MP_OBJ_TO_PTR(args[0]); - vstr_t vstr; - vstr_init_len(&vstr, 66); + size_t outlen = 66; + uint8_t res[outlen]; // default: compressed, but can pass in true to get uncompressed bool compressed = true; @@ -236,13 +236,11 @@ static mp_obj_t s_pubkey_to_bytes(size_t n_args, const mp_obj_t *args) { compressed = !mp_obj_is_true(args[1]); } - size_t outlen = vstr.len; - secp256k1_ec_pubkey_serialize(secp256k1_context_static, (uint8_t *)vstr.buf, &outlen, + secp256k1_ec_pubkey_serialize(secp256k1_context_static, res, &outlen, &self->pubkey, compressed ? SECP256K1_EC_COMPRESSED: SECP256K1_EC_UNCOMPRESSED ); - vstr.len = outlen; - return mp_obj_new_str_from_vstr(&mp_type_bytes, &vstr); + return mp_obj_new_bytes(res, outlen); } static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(s_pubkey_to_bytes_obj, 1, 2, s_pubkey_to_bytes); @@ -266,12 +264,11 @@ static MP_DEFINE_CONST_FUN_OBJ_1(s_pubkey_to_xonly_obj, s_pubkey_to_xonly); static mp_obj_t s_xonly_pubkey_to_bytes(size_t n_args, const mp_obj_t *args) { mp_obj_xonly_pubkey_t *self = MP_OBJ_TO_PTR(args[0]); - vstr_t vstr; - vstr_init_len(&vstr, 32); + uint8_t res[32]; - secp256k1_xonly_pubkey_serialize(secp256k1_context_static, (uint8_t *)vstr.buf, &self->pubkey); + secp256k1_xonly_pubkey_serialize(secp256k1_context_static, res, &self->pubkey); - return mp_obj_new_str_from_vstr(&mp_type_bytes, &vstr); + return mp_obj_new_bytes(res, 32); } static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(s_xonly_pubkey_to_bytes_obj, 1, 2, s_xonly_pubkey_to_bytes); @@ -314,17 +311,16 @@ static mp_obj_t s_sig_to_bytes(mp_obj_t self_in) { mp_obj_sig_t *self = MP_OBJ_TO_PTR(self_in); int recid = 0; - vstr_t vstr; - vstr_init_len(&vstr, 65); - secp256k1_ecdsa_recoverable_signature_serialize_compact(secp256k1_context_static, - ((uint8_t *)vstr.buf)+1, &recid, &self->sig); + uint8_t res[65]; + + secp256k1_ecdsa_recoverable_signature_serialize_compact(secp256k1_context_static, res+1, &recid, &self->sig); // first byte is bitcoin-specific rec id // - always compressed - vstr.buf[0] = 27 + recid + 4; + res[0] = 27 + recid + 4; - return mp_obj_new_str_from_vstr(&mp_type_bytes, &vstr); + return mp_obj_new_bytes(res, 65); } static MP_DEFINE_CONST_FUN_OBJ_1(s_sig_to_bytes_obj, s_sig_to_bytes); @@ -440,13 +436,12 @@ static mp_obj_t s_sign_schnorr(mp_obj_t privkey_in, mp_obj_t digest_in, mp_obj_t mp_raise_ValueError(MP_ERROR_TEXT("aux rand len != 32")); } - vstr_t rv; - vstr_init_len(&rv, 64); + uint8_t rv[64]; int ok; if(mp_obj_get_type(privkey_in) == &s_keypair_type) { mp_obj_keypair_t *keypair = MP_OBJ_TO_PTR(privkey_in); - ok = secp256k1_schnorrsig_sign32(lib_ctx, (uint8_t *)rv.buf, digest.buf, &keypair->keypair, aux_rand.buf); + ok = secp256k1_schnorrsig_sign32(lib_ctx, rv, digest.buf, &keypair->keypair, aux_rand.buf); } else { // typical: raw privkey mp_buffer_info_t privkey; @@ -460,13 +455,13 @@ static mp_obj_t s_sign_schnorr(mp_obj_t privkey_in, mp_obj_t digest_in, mp_obj_t if (!key_ok) { mp_raise_ValueError(MP_ERROR_TEXT("invalid secret")); } - ok = secp256k1_schnorrsig_sign32(lib_ctx, (uint8_t *)rv.buf, digest.buf, &keypair, aux_rand.buf); + ok = secp256k1_schnorrsig_sign32(lib_ctx, rv, digest.buf, &keypair, aux_rand.buf); } if(!ok) { mp_raise_ValueError(MP_ERROR_TEXT("secp256k1_schnorrsig_sign")); } - return mp_obj_new_str_from_vstr(&mp_type_bytes, &rv); + return mp_obj_new_bytes(rv, 64); } static MP_DEFINE_CONST_FUN_OBJ_3(s_sign_schnorr_obj, s_sign_schnorr); @@ -636,15 +631,14 @@ static mp_obj_t s_keypair_ecdh_multiply(mp_obj_t self_in, mp_obj_t other_point_i uint8_t seckey[32]; secp256k1_keypair_sec(lib_ctx, seckey, &self->keypair); - vstr_t rv; - vstr_init_len(&rv, 32); + uint8_t rv[32]; - ok = secp256k1_ecdh(lib_ctx, (uint8_t *)rv.buf, &other_point, seckey, _my_ecdh_hash, NULL); + ok = secp256k1_ecdh(lib_ctx, rv, &other_point, seckey, _my_ecdh_hash, NULL); if(!ok) { mp_raise_ValueError(MP_ERROR_TEXT("secp256k1_ecdh")); } - return mp_obj_new_str_from_vstr(&mp_type_bytes, &rv); + return mp_obj_new_bytes(rv, 32); } static MP_DEFINE_CONST_FUN_OBJ_2(s_keypair_ecdh_multiply_obj, s_keypair_ecdh_multiply); @@ -911,12 +905,11 @@ MP_DEFINE_CONST_FUN_OBJ_KW(s_musig_nonce_gen_obj, 1, s_musig_nonce_gen); static mp_obj_t s_pubnonce_to_bytes(mp_obj_t pubnonce_in) { mp_obj_musig_pubnonce_t *self = MP_OBJ_TO_PTR(pubnonce_in); - vstr_t vstr; - vstr_init_len(&vstr, 66); + uint8_t rv[66]; - secp256k1_musig_pubnonce_serialize(secp256k1_context_static, (uint8_t *)vstr.buf, &self->pubnonce); + secp256k1_musig_pubnonce_serialize(secp256k1_context_static, rv, &self->pubnonce); - return mp_obj_new_str_from_vstr(&mp_type_bytes, &vstr); + return mp_obj_new_bytes(rv, 66); } static MP_DEFINE_CONST_FUN_OBJ_1(s_pubnonce_to_bytes_obj, s_pubnonce_to_bytes); @@ -947,12 +940,11 @@ static mp_obj_t s_pubnonce_make_new(const mp_obj_type_t *type, size_t n_args, si static mp_obj_t s_aggnonce_to_bytes(mp_obj_t aggnonce_in) { mp_obj_musig_aggnonce_t *self = MP_OBJ_TO_PTR(aggnonce_in); - vstr_t vstr; - vstr_init_len(&vstr, 66); + uint8_t rv[66]; - secp256k1_musig_aggnonce_serialize(secp256k1_context_static, (uint8_t *)vstr.buf, &self->aggnonce); + secp256k1_musig_aggnonce_serialize(secp256k1_context_static, rv, &self->aggnonce); - return mp_obj_new_str_from_vstr(&mp_type_bytes, &vstr); + return mp_obj_new_bytes(rv, 66); } static MP_DEFINE_CONST_FUN_OBJ_1(s_aggnonce_to_bytes_obj, s_aggnonce_to_bytes); @@ -1073,12 +1065,11 @@ static mp_obj_t s_musig_partial_sig_make_new(const mp_obj_type_t *type, size_t n static mp_obj_t s_musig_partial_sig_to_bytes(mp_obj_t part_sig_in) { mp_obj_musig_partial_sig_t *self = MP_OBJ_TO_PTR(part_sig_in); - vstr_t vstr; - vstr_init_len(&vstr, 32); + uint8_t rv[32]; - secp256k1_musig_partial_sig_serialize(secp256k1_context_static, (uint8_t *)vstr.buf, &self->sig); + secp256k1_musig_partial_sig_serialize(secp256k1_context_static, rv, &self->sig); - return mp_obj_new_str_from_vstr(&mp_type_bytes, &vstr); + return mp_obj_new_bytes(rv, 32); } static MP_DEFINE_CONST_FUN_OBJ_1(s_musig_partial_sig_to_bytes_obj, s_musig_partial_sig_to_bytes); @@ -1188,15 +1179,14 @@ static mp_obj_t s_musig_partial_sig_agg(mp_obj_t part_sigs_in, mp_obj_t session_ mp_obj_musig_session_t *session = MP_OBJ_TO_PTR(session_in); - vstr_t res; - vstr_init_len(&res, 64); + uint8_t res[64]; - int ok = secp256k1_musig_partial_sig_agg(lib_ctx, (uint8_t *)res.buf, &session->session, ps, len_part_sigs); + int ok = secp256k1_musig_partial_sig_agg(lib_ctx, res, &session->session, ps, len_part_sigs); if (!ok) { mp_raise_ValueError(MP_ERROR_TEXT("secp256k1_musig_partial_sig_agg invalid arguments")); } - return mp_obj_new_str_from_vstr(&mp_type_bytes, &res); + return mp_obj_new_bytes(res, 64); } static MP_DEFINE_CONST_FUN_OBJ_2(s_musig_partial_sig_agg_obj, s_musig_partial_sig_agg); @@ -1265,6 +1255,7 @@ static MP_DEFINE_CONST_OBJ_TYPE( static MP_DEFINE_CONST_OBJ_TYPE( s_musig_session_type, MP_QSTR_secp256k1_musig_session, + MP_TYPE_FLAG_NONE ); static const mp_rom_map_elem_t s_musig_keyagg_cache_locals_dict_table[] = { @@ -1310,6 +1301,7 @@ static MP_DEFINE_CONST_OBJ_TYPE( static MP_DEFINE_CONST_OBJ_TYPE( s_musig_secnonce_type, MP_QSTR_secp256k1_musig_secnonce, + MP_TYPE_FLAG_NONE ); // privkeys and what you can do with them diff --git a/ngu/random.c b/ngu/random.c index d7ba498..a060c1f 100644 --- a/ngu/random.c +++ b/ngu/random.c @@ -149,12 +149,11 @@ static mp_obj_t random_bytes(mp_obj_t count_in) mp_raise_ValueError(MP_ERROR_TEXT("too many")); } - vstr_t rv; - vstr_init_len(&rv, count); + uint8_t rv[count]; - my_random_bytes((uint8_t *)rv.buf, count); + my_random_bytes(rv, count); - return mp_obj_new_str_from_vstr(&mp_type_bytes, &rv); + return mp_obj_new_bytes(rv, count); } static MP_DEFINE_CONST_FUN_OBJ_1(random_bytes_obj, random_bytes); From 7047d71205d63079a27c66233572fad39bbc8112 Mon Sep 17 00:00:00 2001 From: scgbckbone Date: Tue, 21 Apr 2026 16:13:02 +0200 Subject: [PATCH 08/15] m_new_obj_with_finaliser -> m_malloc_with_finaliser --- ngu/aes.c | 8 ++++---- ngu/cert.c | 2 +- ngu/ec.c | 2 +- ngu/hdnode.c | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/ngu/aes.c b/ngu/aes.c index add42a0..d68f8a5 100644 --- a/ngu/aes.c +++ b/ngu/aes.c @@ -49,7 +49,7 @@ static mp_obj_t s_CBC_make_new(const mp_obj_type_t *type, size_t n_args, size_t // args: is_encrypt, key, iv? mp_arg_check_num(n_args, n_kw, 3, 3, false); - mp_obj_CBC_t *o = m_new_obj_with_finaliser(mp_obj_CBC_t); + mp_obj_CBC_t *o = (mp_obj_CBC_t *)m_malloc_with_finaliser(sizeof(mp_obj_CBC_t)); o->base.type = type; o->is_encrypt = !!mp_obj_get_int_truncated(args[0]); @@ -70,7 +70,7 @@ static mp_obj_t s_CTR_make_new(const mp_obj_type_t *type, size_t n_args, size_t // args: key, nonce mp_arg_check_num(n_args, n_kw, 1, 2, false); - mp_obj_CTR_t *o = m_new_obj_with_finaliser(mp_obj_CTR_t); + mp_obj_CTR_t *o = (mp_obj_CTR_t *)m_malloc_with_finaliser(sizeof(mp_obj_CTR_t)); o->base.type = type; _aes_setup(&o->aes_ctx, args[0]); @@ -146,7 +146,7 @@ static MP_DEFINE_CONST_FUN_OBJ_1(s_CBC_blank_obj, s_CBC_blank); static mp_obj_t s_CBC_copy(mp_obj_t self_in) { mp_obj_CBC_t *self = MP_OBJ_TO_PTR(self_in); - mp_obj_CBC_t *rv = m_new_obj_with_finaliser(mp_obj_CBC_t); + mp_obj_CBC_t *rv = (mp_obj_CBC_t *)m_malloc_with_finaliser(sizeof(mp_obj_CBC_t)); *rv = *self; rv->base.type = &s_CBC_type; @@ -168,7 +168,7 @@ static MP_DEFINE_CONST_FUN_OBJ_1(s_CTR_blank_obj, s_CTR_blank); static mp_obj_t s_CTR_copy(mp_obj_t self_in) { mp_obj_CTR_t *self = MP_OBJ_TO_PTR(self_in); - mp_obj_CTR_t *rv = m_new_obj_with_finaliser(mp_obj_CTR_t); + mp_obj_CTR_t *rv = (mp_obj_CTR_t *)m_malloc_with_finaliser(sizeof(mp_obj_CTR_t)); *rv = *self; rv->base.type = &s_CTR_type; diff --git a/ngu/cert.c b/ngu/cert.c index c6f8085..d27e505 100644 --- a/ngu/cert.c +++ b/ngu/cert.c @@ -31,7 +31,7 @@ typedef struct { static mp_obj_t cert_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_cert_t *o = m_new_obj_with_finaliser(mp_obj_cert_t); + mp_obj_cert_t *o = (mp_obj_cert_t *)m_malloc_with_finaliser(sizeof(mp_obj_cert_t)); o->base.type = type; mbedtls_x509_crt_init(&o->mcert); diff --git a/ngu/ec.c b/ngu/ec.c index 0314461..e1c6eeb 100644 --- a/ngu/ec.c +++ b/ngu/ec.c @@ -35,7 +35,7 @@ typedef struct _mp_obj_curve_t { static mp_obj_t curve_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, 1, 1, false); - mp_obj_curve_t *o = m_new_obj_with_finaliser(mp_obj_curve_t); + mp_obj_curve_t *o = (mp_obj_curve_t *)m_malloc_with_finaliser(sizeof(mp_obj_curve_t)); o->base.type = type; mbedtls_ecp_group_init(&o->grp); diff --git a/ngu/hdnode.c b/ngu/hdnode.c index b38bc18..8cabaea 100644 --- a/ngu/hdnode.c +++ b/ngu/hdnode.c @@ -182,7 +182,7 @@ static uint32_t _calc_my_fp(mp_obj_hdnode_t *self) // Constructor: makes empty/invalid obj static mp_obj_t s_hdnode_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_hdnode_t *o = m_new_obj_with_finaliser(mp_obj_hdnode_t); + mp_obj_hdnode_t *o = (mp_obj_hdnode_t *)m_malloc_with_finaliser(sizeof(mp_obj_hdnode_t)); memset(o, 0, sizeof(mp_obj_hdnode_t)); o->base.type = type; @@ -198,7 +198,7 @@ static mp_obj_t s_hdnode_copy(mp_obj_t self_in) { mp_obj_hdnode_t *self = MP_OBJ_TO_PTR(self_in); raise_on_invalid(self); // debatable, but isolates faults faster - mp_obj_hdnode_t *rv = m_new_obj_with_finaliser(mp_obj_hdnode_t); + mp_obj_hdnode_t *rv = (mp_obj_hdnode_t *)m_malloc_with_finaliser(sizeof(mp_obj_hdnode_t)); *rv = *self; rv->base.type = &s_hdnode_type; From 10b8e3daceffbfca1b0c2757154344b2acf01f31 Mon Sep 17 00:00:00 2001 From: scgbckbone Date: Tue, 21 Apr 2026 16:17:45 +0200 Subject: [PATCH 09/15] mbedtls related fixes --- ngu/cert.c | 9 +++--- ngu/ec.c | 16 ++++++++++- ngu/hash.c | 60 ++++++++++++++++++++-------------------- ngu/k1.c | 11 ++++---- var/mbedtls_config_ngu.h | 7 +++++ var/mpconfigvariant.mk | 3 ++ 6 files changed, 66 insertions(+), 40 deletions(-) create mode 100644 var/mbedtls_config_ngu.h diff --git a/ngu/cert.c b/ngu/cert.c index d27e505..08b8f7d 100644 --- a/ngu/cert.c +++ b/ngu/cert.c @@ -105,16 +105,17 @@ static mp_obj_t get_ec_pubkey(mp_obj_t self_in) mp_raise_TypeError(MP_ERROR_TEXT("only EC for now")); } - uint8_t rv[65]; + unsigned char pk_buf[65]; const mbedtls_ecp_keypair *pair = mbedtls_pk_ec(*pk); size_t actual = 0; - CHECK_RESULT(mbedtls_ecp_point_write_binary(&pair->grp, &pair->Q, - MBEDTLS_ECP_PF_UNCOMPRESSED, &actual, rv, 65)); + + CHECK_RESULT(mbedtls_ecp_point_write_binary(&pair->MBEDTLS_PRIVATE(grp), &pair->MBEDTLS_PRIVATE(Q), + MBEDTLS_ECP_PF_UNCOMPRESSED, &actual, pk_buf, 65)); assert(actual == 65); - return mp_obj_new_bytes(rv, 65); + return mp_obj_new_bytes(pk_buf, 65); } static MP_DEFINE_CONST_FUN_OBJ_1(get_ec_pubkey_obj, get_ec_pubkey); diff --git a/ngu/ec.c b/ngu/ec.c index e1c6eeb..09706bc 100644 --- a/ngu/ec.c +++ b/ngu/ec.c @@ -14,6 +14,9 @@ #include "mbedtls/ecp.h" #include "mbedtls/ecdsa.h" +#include "mbedtls/md.h" +#include "mbedtls/entropy.h" +#include "mbedtls/ctr_drbg.h" #ifndef MBEDTLS_ECP_C # error "requires MBEDTLS_ECP_C" @@ -80,8 +83,19 @@ static mp_obj_t curve_sign(mp_obj_t self_in, mp_obj_t privkey_in, mp_obj_t diges CHECK_RESULT(mbedtls_mpi_read_binary(&privkey, pk_buf.buf, 32)); - CHECK_RESULT(mbedtls_ecdsa_sign_det(&self->grp, &r, &s, &privkey, digest.buf, digest.len, MBEDTLS_MD_SHA256)); + mbedtls_entropy_context entropy; + mbedtls_ctr_drbg_context ctr_drbg; + mbedtls_entropy_init(&entropy); + mbedtls_ctr_drbg_init(&ctr_drbg); + CHECK_RESULT(mbedtls_ctr_drbg_seed(&ctr_drbg, mbedtls_entropy_func, &entropy, NULL, 0)); + CHECK_RESULT(mbedtls_ecdsa_sign_det_ext(&self->grp, &r, &s, &privkey, + digest.buf, digest.len, + MBEDTLS_MD_SHA256, + mbedtls_ctr_drbg_random, &ctr_drbg)); + + mbedtls_ctr_drbg_free(&ctr_drbg); + mbedtls_entropy_free(&entropy); mbedtls_mpi_free(&privkey); // convert (R,S) output pair to 64 bytes diff --git a/ngu/hash.c b/ngu/hash.c index 4c14afd..d798b8b 100644 --- a/ngu/hash.c +++ b/ngu/hash.c @@ -42,6 +42,20 @@ void ripemd160(const uint8_t *msg, int msglen, uint8_t digest[20]); // SHA512 // +static mp_obj_t modngu_hash_sha512_update(mp_obj_t self_in, mp_obj_t arg) { + mp_obj_hash_t *self = MP_OBJ_TO_PTR(self_in); + mp_buffer_info_t bufinfo; + mp_get_buffer_raise(arg, &bufinfo, MP_BUFFER_READ); + +#if MICROPY_SSL_MBEDTLS + mbedtls_sha512_update((mbedtls_sha512_context *)self->state, bufinfo.buf, bufinfo.len); +#else + cf_sha512_update((cf_sha512_context *)self->state, bufinfo.buf, bufinfo.len); +#endif + + return mp_const_none; +} + static mp_obj_t modngu_hash_sha512_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, 1, false); @@ -52,7 +66,7 @@ static mp_obj_t modngu_hash_sha512_make_new(const mp_obj_type_t *type, size_t n_ o->base.type = type; mbedtls_sha512_init((mbedtls_sha512_context *)o->state); - mbedtls_sha512_starts_ret((mbedtls_sha512_context *)o->state, false); + mbedtls_sha512_starts((mbedtls_sha512_context *)o->state, false); #else // Same pattern for the tinycrypt/cf fallback size_t n = (sizeof(cf_sha512_context) + sizeof(uintptr_t) - 1) / sizeof(uintptr_t); @@ -69,30 +83,16 @@ static mp_obj_t modngu_hash_sha512_make_new(const mp_obj_type_t *type, size_t n_ return MP_OBJ_FROM_PTR(o); } -static mp_obj_t modngu_hash_sha512_update(mp_obj_t self_in, mp_obj_t arg) { - mp_obj_hash_t *self = MP_OBJ_TO_PTR(self_in); - mp_buffer_info_t bufinfo; - mp_get_buffer_raise(arg, &bufinfo, MP_BUFFER_READ); - -#if MICROPY_SSL_MBEDTLS - mbedtls_sha512_update_ret((mbedtls_sha512_context *)self->state, bufinfo.buf, bufinfo.len); -#else - cf_sha512_update((cf_sha512_context *)self->state, bufinfo.buf, bufinfo.len); -#endif - - return mp_const_none; -} - static mp_obj_t modngu_hash_sha512_digest(mp_obj_t self_in) { mp_obj_hash_t *self = MP_OBJ_TO_PTR(self_in); uint8_t rv[64]; #if MICROPY_SSL_MBEDTLS - mbedtls_sha512_finish_ret((mbedtls_sha512_context *)self->state, rv); + mbedtls_sha512_finish((mbedtls_sha512_context *)self->state, rv); mbedtls_sha512_free((mbedtls_sha512_context *)self->state); #else - cf_sha512_digest_final((cf_sha512_context *)self->state, rv; + cf_sha512_digest_final((cf_sha512_context *)self->state, rv); #endif return mp_obj_new_bytes(rv, 64); @@ -187,9 +187,9 @@ static mp_obj_t hm_single_ripemd160(mp_obj_t arg) { #if 0 mbedtls_ripemd160_context ctx; mbedtls_ripemd160_init(&ctx); - mbedtls_ripemd160_starts_ret(&ctx); - mbedtls_ripemd160_update_ret(&ctx, inp.buf, inp.len); - mbedtls_ripemd160_finish_ret(&ctx, res); + mbedtls_ripemd160_starts(&ctx); + mbedtls_ripemd160_update(&ctx, inp.buf, inp.len); + mbedtls_ripemd160_finish(&ctx, res); mbedtls_ripemd160_free(&ctx); #endif ripemd160(inp.buf, inp.len, res); @@ -280,7 +280,7 @@ static mp_obj_t pbkdf2_sha512(mp_obj_t pass_in, mp_obj_t salt_in, mp_obj_t round explicit_bzero(obuf, sizeof(obuf)); */ - return mp_obj_new_bytes(key, H_SIZE); + return mp_obj_new_bytes(key_arr, H_SIZE); } static MP_DEFINE_CONST_FUN_OBJ_3(pbkdf2_sha512_obj, pbkdf2_sha512); @@ -345,9 +345,9 @@ void sha256_single(const uint8_t *msg, int msglen, uint8_t digest[32]) #if MICROPY_SSL_MBEDTLS mbedtls_sha256_context ctx; mbedtls_sha256_init(&ctx); - mbedtls_sha256_starts_ret(&ctx, 0); - mbedtls_sha256_update_ret(&ctx, msg, msglen); - mbedtls_sha256_finish_ret(&ctx, digest); + mbedtls_sha256_starts(&ctx, 0); + mbedtls_sha256_update(&ctx, msg, msglen); + mbedtls_sha256_finish(&ctx, digest); mbedtls_sha256_free(&ctx); #elif defined(HASH_DATATYPE_8B) // Hardware Accelerated on this board. @@ -395,13 +395,13 @@ void sha256_double(const uint8_t *msg, int msglen, uint8_t digest[32]) // re-used ctx here (slight savings in stack depth) mbedtls_sha256_context ctx; mbedtls_sha256_init(&ctx); - mbedtls_sha256_starts_ret(&ctx, 0); - mbedtls_sha256_update_ret(&ctx, msg, msglen); - mbedtls_sha256_finish_ret(&ctx, digest); + mbedtls_sha256_starts(&ctx, 0); + mbedtls_sha256_update(&ctx, msg, msglen); + mbedtls_sha256_finish(&ctx, digest); - mbedtls_sha256_starts_ret(&ctx, 0); - mbedtls_sha256_update_ret(&ctx, digest, 32); - mbedtls_sha256_finish_ret(&ctx, digest); + mbedtls_sha256_starts(&ctx, 0); + mbedtls_sha256_update(&ctx, digest, 32); + mbedtls_sha256_finish(&ctx, digest); mbedtls_sha256_free(&ctx); #else sha256_single(msg, msglen, digest); diff --git a/ngu/k1.c b/ngu/k1.c index 09b636e..f9363f1 100644 --- a/ngu/k1.c +++ b/ngu/k1.c @@ -7,6 +7,7 @@ // - see test_k1.py // #include "py/runtime.h" +#include "py/objmodule.h" // needed for mp_obj_module_get_globals #include "py/objlist.h" // For list-related functions #include "random.h" #include @@ -19,7 +20,7 @@ #if MICROPY_SSL_MBEDTLS #include "mbedtls/sha256.h" #else -#include "extmod/crypto-algorithms/sha256.h" +#include "lib/crypto-algorithms/sha256.h" #endif typedef struct { @@ -595,10 +596,10 @@ static int _my_ecdh_hash(uint8_t *output, const uint8_t *x32, const uint8_t *y32 mbedtls_sha256_context ctx; mbedtls_sha256_init(&ctx); - mbedtls_sha256_starts_ret(&ctx, 0); - mbedtls_sha256_update_ret(&ctx, x32, 32); - mbedtls_sha256_update_ret(&ctx, y32, 32); - mbedtls_sha256_finish_ret(&ctx, output); + mbedtls_sha256_starts(&ctx, 0); + mbedtls_sha256_update(&ctx, x32, 32); + mbedtls_sha256_update(&ctx, y32, 32); + mbedtls_sha256_finish(&ctx, output); mbedtls_sha256_free(&ctx); #else diff --git a/var/mbedtls_config_ngu.h b/var/mbedtls_config_ngu.h new file mode 100644 index 0000000..4194861 --- /dev/null +++ b/var/mbedtls_config_ngu.h @@ -0,0 +1,7 @@ +#include "mbedtls/mbedtls_config_port.h" + +#define MBEDTLS_BASE64_C +#define MBEDTLS_PEM_PARSE_C +#define MBEDTLS_HMAC_DRBG_C +#define MBEDTLS_ECDSA_DETERMINISTIC +#define MBEDTLS_ECP_DP_BP256R1_ENABLED diff --git a/var/mpconfigvariant.mk b/var/mpconfigvariant.mk index e9983bf..252036c 100644 --- a/var/mpconfigvariant.mk +++ b/var/mpconfigvariant.mk @@ -9,5 +9,8 @@ PROG = ngu-micropython MICROPY_SSL_AXTLS = 0 MICROPY_SSL_MBEDTLS = 1 +MICROPY_PY_BTREE = 0 + +MBEDTLS_CONFIG_FILE = \"$(VARIANT_DIR)/mbedtls_config_ngu.h\" From 43ab96a086ebd8ea9b57037e54626e9bbf6d4bab Mon Sep 17 00:00:00 2001 From: scgbckbone Date: Tue, 21 Apr 2026 16:18:21 +0200 Subject: [PATCH 10/15] define port mpconfigvariant.h --- var/mpconfigvariant.h | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/var/mpconfigvariant.h b/var/mpconfigvariant.h index bded2a9..0a2d523 100644 --- a/var/mpconfigvariant.h +++ b/var/mpconfigvariant.h @@ -2,3 +2,13 @@ #define MICROPY_PY_BUILTINS_HELP (1) #define MICROPY_HELPER_REPL (1) #define MICROPY_PY_BUILTINS_HELP_MODULES (1) + +#define MICROPY_KBD_EXCEPTION (1) +#define MICROPY_PY_BUILTINS_MEMORYVIEW (1) +#define MICROPY_PY_BINASCII (1) +#define MICROPY_PY_BUILTINS_BYTES_HEX (1) +#define MICROPY_PY_UCTYPES (1) +#define MICROPY_PY_HASHLIB (1) + +#define MICROPY_FLOAT_IMPL (MICROPY_FLOAT_IMPL_DOUBLE) +#define MICROPY_LONGINT_IMPL (MICROPY_LONGINT_IMPL_MPZ) From 53da5dc971d096ce50a90bad2ee684e572d712fe Mon Sep 17 00:00:00 2001 From: scgbckbone Date: Tue, 21 Apr 2026 16:18:47 +0200 Subject: [PATCH 11/15] cert test issue --- ngu/ngu_tests/test_cert.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ngu/ngu_tests/test_cert.py b/ngu/ngu_tests/test_cert.py index 09c93eb..52ff0c3 100644 --- a/ngu/ngu_tests/test_cert.py +++ b/ngu/ngu_tests/test_cert.py @@ -70,7 +70,7 @@ c.parse(unit_cert) #print(repr(c)) assert 'Opendime' in repr(c) -assert 'serialNumber=PEXEVEKLGRIFCICKJIYBCHQC74+cd229fbd8405' in repr(c) +assert 'serialNumber=PEXEVEKLGRIFCICKJIYBCHQC74\+cd229fbd8405' in repr(c) pubkey = c.get_ec_pubkey() assert pubkey[0] == 4 and len(pubkey) == 65 From 5ea42f7021b063f002552db1c02a02b0ccc8a737 Mon Sep 17 00:00:00 2001 From: scgbckbone Date: Tue, 21 Apr 2026 16:22:22 +0200 Subject: [PATCH 12/15] remove mpy.patch --- Makefile | 3 --- 1 file changed, 3 deletions(-) diff --git a/Makefile b/Makefile index a6f036d..383b7a1 100644 --- a/Makefile +++ b/Makefile @@ -4,7 +4,6 @@ S_TOP ?= libs/secp256k1 MBED_TOP ?= $(MPY_TOP)/lib/mbedtls BECH32_PATCH ?= cd libs/bech32; git apply ../../bech32.patch || true -MPY_PATCH ?= cd libs/mpy; git apply ../../mpy.patch || true all: $(TARGET) @@ -36,7 +35,6 @@ K1_CONF_FLAGS = --with-ecmult-window=2 --with-ecmult-gen-kb=2 --enable-module-re one-time: cd $(MPY_TOP); git submodule update $(BECH32_PATCH) - $(MPY_PATCH) cd $(MPY_TOP)/mpy-cross; make cd $(S_TOP); ./autogen.sh && ./configure $(K1_CONF_FLAGS) && make precomp @@ -45,7 +43,6 @@ one-time: min-one-time: cd libs; git submodule update --init bech32 cifra secp256k1 $(BECH32_PATCH) - $(MPY_PATCH) cd $(S_TOP); ./autogen.sh && ./configure $(K1_CONF_FLAGS) && make precomp esp: From 0089f0cac85c905136a2fa0a6d54bcdccb514f90 Mon Sep 17 00:00:00 2001 From: scgbckbone Date: Tue, 21 Apr 2026 17:06:38 +0200 Subject: [PATCH 13/15] with zlib --- var/mpconfigvariant.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/var/mpconfigvariant.h b/var/mpconfigvariant.h index 0a2d523..7514a3c 100644 --- a/var/mpconfigvariant.h +++ b/var/mpconfigvariant.h @@ -9,6 +9,8 @@ #define MICROPY_PY_BUILTINS_BYTES_HEX (1) #define MICROPY_PY_UCTYPES (1) #define MICROPY_PY_HASHLIB (1) +#define MICROPY_PY_DEFLATE (1) +#define MICROPY_PY_DEFLATE_COMPRESS (1) #define MICROPY_FLOAT_IMPL (MICROPY_FLOAT_IMPL_DOUBLE) #define MICROPY_LONGINT_IMPL (MICROPY_LONGINT_IMPL_MPZ) From 61b11d25512b2aa1d181942b7ede2f0a77532ead Mon Sep 17 00:00:00 2001 From: scgbckbone Date: Mon, 4 May 2026 10:50:04 +0200 Subject: [PATCH 14/15] mac compat --- ngu/micropython.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ngu/micropython.mk b/ngu/micropython.mk index baf48c8..f86f865 100644 --- a/ngu/micropython.mk +++ b/ngu/micropython.mk @@ -36,7 +36,7 @@ $(BUILD)/hack_lib_cifra.o: @echo HACKING target: $@ $(RM) -f $(CIFRA_OBJS) (cd $(NGU_TOP_DIR)/libs/cifra/src; $(MAKE) CC=$(CC) CFLAGS="$(CIFRA_CFLAGS)" $(CIFRA_PARTS)) - $(CC) -r -o $@ $(CIFRA_CFLAGS) $(CIFRA_OBJS) + $(CC) -r -nostdlib -o $@ $(CIFRA_CFLAGS) $(CIFRA_OBJS) PY_O += $(BUILD)/hack_lib_cifra.o From b374d6a83610290af28fa8484764e0b8efe01ab7 Mon Sep 17 00:00:00 2001 From: scgbckbone Date: Mon, 4 May 2026 13:35:41 +0200 Subject: [PATCH 15/15] no longer needed --- mpy.patch | 13 ------------- 1 file changed, 13 deletions(-) delete mode 100644 mpy.patch diff --git a/mpy.patch b/mpy.patch deleted file mode 100644 index 4c3844a..0000000 --- a/mpy.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/py/py.mk b/py/py.mk -index bac38f074..2e6f3d9c6 100644 ---- a/py/py.mk -+++ b/py/py.mk -@@ -216,7 +216,7 @@ PY_CORE_O = $(addprefix $(BUILD)/, $(PY_CORE_O_BASENAME)) - PY_EXTMOD_O = $(addprefix $(BUILD)/, $(PY_EXTMOD_O_BASENAME)) - - # this is a convenience variable for ports that want core, extmod and frozen code --PY_O = $(PY_CORE_O) $(PY_EXTMOD_O) -+PY_O += $(PY_CORE_O) $(PY_EXTMOD_O) - - # object file for frozen code specified via a manifest - ifneq ($(FROZEN_MANIFEST),)