From bf7729ab9f937c093c15d7b87da616cc4300d2ee Mon Sep 17 00:00:00 2001 From: Jan Pochyla Date: Wed, 16 May 2018 14:42:41 +0200 Subject: [PATCH] embed/extmod: use trezor_obj_get_uint{8} where it makes sense --- embed/extmod/modtrezorconfig/modtrezorconfig.c | 18 ++++++++++-------- .../modtrezorcrypto/modtrezorcrypto-blake2b.h | 6 ++++-- .../modtrezorcrypto/modtrezorcrypto-blake2s.h | 6 ++++-- .../modtrezorcrypto/modtrezorcrypto-pbkdf2.h | 2 +- .../modtrezorcrypto/modtrezorcrypto-random.h | 2 +- embed/extmod/modtrezorio/modtrezorio-flash.h | 14 ++++++++------ embed/extmod/modtrezorio/modtrezorio-poll.h | 2 +- embed/extmod/modtrezorio/modtrezorio-sdcard.h | 8 ++++++-- embed/extmod/modtrezorutils/modtrezorutils.c | 18 ++++++------------ 9 files changed, 41 insertions(+), 35 deletions(-) diff --git a/embed/extmod/modtrezorconfig/modtrezorconfig.c b/embed/extmod/modtrezorconfig/modtrezorconfig.c index 0f50612ca..c45dafab5 100644 --- a/embed/extmod/modtrezorconfig/modtrezorconfig.c +++ b/embed/extmod/modtrezorconfig/modtrezorconfig.c @@ -23,6 +23,8 @@ #if MICROPY_PY_TREZORCONFIG +#include "embed/extmod/trezorobj.h" + #include "norcow.h" #include "storage.h" @@ -46,7 +48,7 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_0(mod_trezorconfig_init_obj, mod_trezorconfig_ini /// Check the given PIN. Returns True on success, False on failure. /// ''' STATIC mp_obj_t mod_trezorconfig_check_pin(mp_obj_t pin, mp_obj_t waitcallback) { - uint32_t pin_i = mp_obj_get_int(pin); + uint32_t pin_i = trezor_obj_get_uint(pin); if (sectrue != storage_check_pin(pin_i, waitcallback)) { return mp_const_false; } @@ -60,7 +62,7 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_2(mod_trezorconfig_check_pin_obj, mod_trezorconfi /// success, False on failure. /// ''' STATIC mp_obj_t mod_trezorconfig_unlock(mp_obj_t pin, mp_obj_t waitcallback) { - uint32_t pin_i = mp_obj_get_int(pin); + uint32_t pin_i = trezor_obj_get_uint(pin); if (sectrue != storage_unlock(pin_i, waitcallback)) { return mp_const_false; } @@ -85,8 +87,8 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_0(mod_trezorconfig_has_pin_obj, mod_trezorconfig_ /// Change PIN. Returns True on success, False on failure. /// ''' STATIC mp_obj_t mod_trezorconfig_change_pin(mp_obj_t pin, mp_obj_t newpin, mp_obj_t waitcallback) { - uint32_t pin_i = mp_obj_get_int(pin); - uint32_t newpin_i = mp_obj_get_int(newpin); + uint32_t pin_i = trezor_obj_get_uint(pin); + uint32_t newpin_i = trezor_obj_get_uint(newpin); if (sectrue != storage_change_pin(pin_i, newpin_i, waitcallback)) { return mp_const_false; } @@ -99,8 +101,8 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_3(mod_trezorconfig_change_pin_obj, mod_trezorconf /// Gets a value of given key for given app (or empty bytes if not set). /// ''' STATIC mp_obj_t mod_trezorconfig_get(size_t n_args, const mp_obj_t *args) { - uint8_t app = mp_obj_get_int(args[0]) & 0x7F; - uint8_t key = mp_obj_get_int(args[1]); + uint8_t app = trezor_obj_get_uint8(args[0]) & 0x7F; + uint8_t key = trezor_obj_get_uint8(args[1]); if (n_args > 2 && args[2] == mp_const_true) { app |= 0x80; } @@ -119,8 +121,8 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(mod_trezorconfig_get_obj, 2, 3, mod_t /// Sets a value of given key for given app. /// ''' STATIC mp_obj_t mod_trezorconfig_set(size_t n_args, const mp_obj_t *args) { - uint8_t app = mp_obj_get_int(args[0]) & 0x7F; - uint8_t key = mp_obj_get_int(args[1]); + uint8_t app = trezor_obj_get_uint8(args[0]) & 0x7F; + uint8_t key = trezor_obj_get_uint8(args[1]); if (n_args > 3 && args[3] == mp_const_true) { app |= 0x80; } diff --git a/embed/extmod/modtrezorcrypto/modtrezorcrypto-blake2b.h b/embed/extmod/modtrezorcrypto/modtrezorcrypto-blake2b.h index a686508a3..a8d88e193 100644 --- a/embed/extmod/modtrezorcrypto/modtrezorcrypto-blake2b.h +++ b/embed/extmod/modtrezorcrypto/modtrezorcrypto-blake2b.h @@ -19,6 +19,8 @@ #include "py/objstr.h" +#include "embed/extmod/trezorobj.h" + #include "blake2b.h" #include "memzero.h" @@ -44,12 +46,12 @@ STATIC mp_obj_t mod_trezorcrypto_Blake2b_make_new(const mp_obj_type_t *type, siz int res = 0; // constructor called with key argument set if (n_args == 3) { - size_t outlen = mp_obj_get_int(args[1]); + size_t outlen = trezor_obj_get_uint(args[1]); mp_buffer_info_t key; mp_get_buffer_raise(args[2], &key, MP_BUFFER_READ); res = blake2b_InitKey(&(o->ctx), outlen, key.buf, key.len); } else if (n_args == 2) { - size_t outlen = mp_obj_get_int(args[1]); + size_t outlen = trezor_obj_get_uint(args[1]); res = blake2b_Init(&(o->ctx), outlen); } else { res = blake2b_Init(&(o->ctx), BLAKE2B_DIGEST_LENGTH); diff --git a/embed/extmod/modtrezorcrypto/modtrezorcrypto-blake2s.h b/embed/extmod/modtrezorcrypto/modtrezorcrypto-blake2s.h index 79ce0f326..1f30c8d34 100644 --- a/embed/extmod/modtrezorcrypto/modtrezorcrypto-blake2s.h +++ b/embed/extmod/modtrezorcrypto/modtrezorcrypto-blake2s.h @@ -19,6 +19,8 @@ #include "py/objstr.h" +#include "embed/extmod/trezorobj.h" + #include "blake2s.h" #include "memzero.h" @@ -44,12 +46,12 @@ STATIC mp_obj_t mod_trezorcrypto_Blake2s_make_new(const mp_obj_type_t *type, siz int res = 0; // constructor called with key argument set if (n_args == 3) { - size_t outlen = mp_obj_get_int(args[1]); + size_t outlen = trezor_obj_get_uint(args[1]); mp_buffer_info_t key; mp_get_buffer_raise(args[2], &key, MP_BUFFER_READ); res = blake2s_InitKey(&(o->ctx), outlen, key.buf, key.len); } else if (n_args == 2) { - size_t outlen = mp_obj_get_int(args[1]); + size_t outlen = trezor_obj_get_uint(args[1]); res = blake2s_Init(&(o->ctx), outlen); } else { res = blake2s_Init(&(o->ctx), BLAKE2S_DIGEST_LENGTH); diff --git a/embed/extmod/modtrezorcrypto/modtrezorcrypto-pbkdf2.h b/embed/extmod/modtrezorcrypto/modtrezorcrypto-pbkdf2.h index 6448f25fd..eb678189d 100644 --- a/embed/extmod/modtrezorcrypto/modtrezorcrypto-pbkdf2.h +++ b/embed/extmod/modtrezorcrypto/modtrezorcrypto-pbkdf2.h @@ -85,7 +85,7 @@ STATIC mp_obj_t mod_trezorcrypto_Pbkdf2_make_new(const mp_obj_type_t *type, size /// ''' STATIC mp_obj_t mod_trezorcrypto_Pbkdf2_update(mp_obj_t self, mp_obj_t iterations) { mp_obj_Pbkdf2_t *o = MP_OBJ_TO_PTR(self); - uint32_t iter = mp_obj_get_int(iterations); + uint32_t iter = trezor_obj_get_uint(iterations); if (o->prf == 256) { pbkdf2_hmac_sha256_Update(&(o->ctx256), iter); } diff --git a/embed/extmod/modtrezorcrypto/modtrezorcrypto-random.h b/embed/extmod/modtrezorcrypto/modtrezorcrypto-random.h index 4484dae7e..288d8cbac 100644 --- a/embed/extmod/modtrezorcrypto/modtrezorcrypto-random.h +++ b/embed/extmod/modtrezorcrypto/modtrezorcrypto-random.h @@ -41,7 +41,7 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_1(mod_trezorcrypto_random_uniform_obj, mod_trezor /// Generate random bytes sequence of length len. /// ''' STATIC mp_obj_t mod_trezorcrypto_random_bytes(mp_obj_t len) { - uint32_t l = mp_obj_get_int(len); + uint32_t l = trezor_obj_get_uint(len); if (l > 1024) { mp_raise_ValueError("Maximum requested size is 1024"); } diff --git a/embed/extmod/modtrezorio/modtrezorio-flash.h b/embed/extmod/modtrezorio/modtrezorio-flash.h index d0ff43800..07bf94995 100644 --- a/embed/extmod/modtrezorio/modtrezorio-flash.h +++ b/embed/extmod/modtrezorio/modtrezorio-flash.h @@ -19,6 +19,8 @@ #include "flash.h" +#include "embed/extmod/trezorobj.h" + /// class FlashOTP: /// ''' /// ''' @@ -41,8 +43,8 @@ STATIC mp_obj_t mod_trezorio_FlashOTP_make_new(const mp_obj_type_t *type, size_t /// Writes data to OTP flash /// ''' STATIC mp_obj_t mod_trezorio_FlashOTP_write(size_t n_args, const mp_obj_t *args) { - uint8_t block = mp_obj_get_int(args[1]); - uint8_t offset = mp_obj_get_int(args[2]); + uint8_t block = trezor_obj_get_uint8(args[1]); + uint8_t offset = trezor_obj_get_uint8(args[2]); mp_buffer_info_t data; mp_get_buffer_raise(args[3], &data, MP_BUFFER_READ); if (sectrue != flash_otp_write(block, offset, data.buf, data.len)) { @@ -57,8 +59,8 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(mod_trezorio_FlashOTP_write_obj, 4, 4 /// Reads data from OTP flash /// ''' STATIC mp_obj_t mod_trezorio_FlashOTP_read(size_t n_args, const mp_obj_t *args) { - uint8_t block = mp_obj_get_int(args[1]); - uint8_t offset = mp_obj_get_int(args[2]); + uint8_t block = trezor_obj_get_uint8(args[1]); + uint8_t offset = trezor_obj_get_uint8(args[2]); mp_buffer_info_t data; mp_get_buffer_raise(args[3], &data, MP_BUFFER_WRITE); if (sectrue != flash_otp_read(block, offset, data.buf, data.len)) { @@ -73,7 +75,7 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(mod_trezorio_FlashOTP_read_obj, 4, 4, /// Lock OTP flash block /// ''' STATIC mp_obj_t mod_trezorio_FlashOTP_lock(mp_obj_t self, mp_obj_t block) { - uint8_t b = mp_obj_get_int(block); + uint8_t b = trezor_obj_get_uint8(block); if (sectrue != flash_otp_lock(b)) { mp_raise_ValueError("lock failed"); } @@ -86,7 +88,7 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_2(mod_trezorio_FlashOTP_lock_obj, mod_trezorio_Fl /// Is OTP flash block locked? /// ''' STATIC mp_obj_t mod_trezorio_FlashOTP_is_locked(mp_obj_t self, mp_obj_t block) { - uint8_t b = mp_obj_get_int(block); + uint8_t b = trezor_obj_get_uint8(block); return flash_otp_is_locked(b) ? mp_const_true : mp_const_false; } STATIC MP_DEFINE_CONST_FUN_OBJ_2(mod_trezorio_FlashOTP_is_locked_obj, mod_trezorio_FlashOTP_is_locked); diff --git a/embed/extmod/modtrezorio/modtrezorio-poll.h b/embed/extmod/modtrezorio/modtrezorio-poll.h index 67fbd3f54..1b121f3bf 100644 --- a/embed/extmod/modtrezorio/modtrezorio-poll.h +++ b/embed/extmod/modtrezorio/modtrezorio-poll.h @@ -51,7 +51,7 @@ STATIC mp_obj_t mod_trezorio_poll(mp_obj_t ifaces, mp_obj_t list_ref, mp_obj_t t mp_raise_TypeError("invalid list_ref"); } - const mp_uint_t timeout = mp_obj_get_int(timeout_us); + const mp_uint_t timeout = trezor_obj_get_uint(timeout_us); const mp_uint_t deadline = mp_hal_ticks_us() + timeout; mp_obj_iter_buf_t iterbuf; diff --git a/embed/extmod/modtrezorio/modtrezorio-sdcard.h b/embed/extmod/modtrezorio/modtrezorio-sdcard.h index 635b7853a..b5ef5af19 100644 --- a/embed/extmod/modtrezorio/modtrezorio-sdcard.h +++ b/embed/extmod/modtrezorio/modtrezorio-sdcard.h @@ -19,6 +19,8 @@ #include "sdcard.h" +#include "embed/extmod/trezorobj.h" + /// class SDCard: /// ''' /// ''' @@ -79,9 +81,10 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_1(mod_trezorio_SDCard_capacity_obj, mod_trezorio_ /// Returns True if in case of success, False otherwise. /// ''' STATIC mp_obj_t mod_trezorio_SDCard_read(mp_obj_t self, mp_obj_t block_num, mp_obj_t buf) { + uint32_t block = trezor_obj_get_uint(block_num); mp_buffer_info_t bufinfo; mp_get_buffer_raise(buf, &bufinfo, MP_BUFFER_WRITE); - return mp_obj_new_bool(sdcard_read_blocks(bufinfo.buf, mp_obj_get_int(block_num), bufinfo.len / SDCARD_BLOCK_SIZE)); + return mp_obj_new_bool(sdcard_read_blocks(bufinfo.buf, block, bufinfo.len / SDCARD_BLOCK_SIZE)); } STATIC MP_DEFINE_CONST_FUN_OBJ_3(mod_trezorio_SDCard_read_obj, mod_trezorio_SDCard_read); @@ -92,9 +95,10 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_3(mod_trezorio_SDCard_read_obj, mod_trezorio_SDCa /// Returns True if in case of success, False otherwise. /// ''' STATIC mp_obj_t mod_trezorio_SDCard_write(mp_obj_t self, mp_obj_t block_num, mp_obj_t buf) { + uint32_t block = trezor_obj_get_uint(block_num); mp_buffer_info_t bufinfo; mp_get_buffer_raise(buf, &bufinfo, MP_BUFFER_READ); - return mp_obj_new_bool(sdcard_write_blocks(bufinfo.buf, mp_obj_get_int(block_num), bufinfo.len / SDCARD_BLOCK_SIZE)); + return mp_obj_new_bool(sdcard_write_blocks(bufinfo.buf, block, bufinfo.len / SDCARD_BLOCK_SIZE)); } STATIC MP_DEFINE_CONST_FUN_OBJ_3(mod_trezorio_SDCard_write_obj, mod_trezorio_SDCard_write); diff --git a/embed/extmod/modtrezorutils/modtrezorutils.c b/embed/extmod/modtrezorutils/modtrezorutils.c index d609c0315..ca33c3e26 100644 --- a/embed/extmod/modtrezorutils/modtrezorutils.c +++ b/embed/extmod/modtrezorutils/modtrezorutils.c @@ -23,6 +23,8 @@ #if MICROPY_PY_TREZORUTILS +#include "embed/extmod/trezorobj.h" + #include #include "common.h" @@ -67,22 +69,14 @@ STATIC mp_obj_t mod_trezorutils_memcpy(size_t n_args, const mp_obj_t *args) { mp_buffer_info_t dst; mp_get_buffer_raise(args[0], &dst, MP_BUFFER_WRITE); - int dst_ofs = mp_obj_get_int(args[1]); - if (dst_ofs < 0) { - mp_raise_ValueError("Invalid dst offset (has to be >= 0)"); - } + uint32_t dst_ofs = trezor_obj_get_uint(args[1]); mp_buffer_info_t src; mp_get_buffer_raise(args[2], &src, MP_BUFFER_READ); - int src_ofs = mp_obj_get_int(args[3]); - if (src_ofs < 0) { - mp_raise_ValueError("Invalid src offset (has to be >= 0)"); - } + uint32_t src_ofs = trezor_obj_get_uint(args[3]); + + uint32_t n = trezor_obj_get_uint(args[4]); - int n = mp_obj_get_int(args[4]); - if (n < 0) { - mp_raise_ValueError("Invalid byte count (has to be >= 0)"); - } size_t dst_rem = (dst_ofs < dst.len) ? dst.len - dst_ofs : 0; size_t src_rem = (src_ofs < src.len) ? src.len - src_ofs : 0; size_t ncpy = MIN(n, MIN(src_rem, dst_rem));