diff --git a/Makefile.include b/Makefile.include index 874e6ca..37f9985 100644 --- a/Makefile.include +++ b/Makefile.include @@ -63,12 +63,11 @@ CFLAGS += $(OPTFLAGS) \ $(FPUFLAGS) \ -DSTM32F2 \ -DCONFIDENTIAL='__attribute__((section("confidential")))' \ + -DRAND_PLATFORM_INDEPENDENT=1 \ -I$(TOOLCHAIN_DIR)/include \ -I$(TOP_DIR) \ -I$(TOP_DIR)gen \ -I$(TOP_DIR)vendor/trezor-crypto \ - -I$(TOP_DIR)vendor/trezor-crypto/aes \ - -I$(TOP_DIR)vendor/trezor-crypto/ed25519-donna \ -I$(TOP_DIR)vendor/trezor-qrenc LDFLAGS += -L$(TOP_DIR) \ diff --git a/firmware/Makefile b/firmware/Makefile index 4ba0883..85620ca 100644 --- a/firmware/Makefile +++ b/firmware/Makefile @@ -40,6 +40,7 @@ OBJS += ../vendor/trezor-crypto/ecdsa.o OBJS += ../vendor/trezor-crypto/curves.o OBJS += ../vendor/trezor-crypto/secp256k1.o OBJS += ../vendor/trezor-crypto/nist256p1.o +OBJS += ../vendor/trezor-crypto/rand.o OBJS += ../vendor/trezor-crypto/ed25519-donna/curve25519-donna-32bit.o OBJS += ../vendor/trezor-crypto/ed25519-donna/curve25519-donna-helpers.o diff --git a/firmware/crypto.c b/firmware/crypto.c index 2d12d9b..cdae90e 100644 --- a/firmware/crypto.c +++ b/firmware/crypto.c @@ -22,7 +22,7 @@ #include "sha2.h" #include "ripemd160.h" #include "pbkdf2.h" -#include "aes.h" +#include "aes/aes.h" #include "hmac.h" #include "bip32.h" #include "layout.h" diff --git a/firmware/fsm.c b/firmware/fsm.c index d385787..46b0f9f 100644 --- a/firmware/fsm.c +++ b/firmware/fsm.c @@ -42,7 +42,7 @@ #include "usb.h" #include "util.h" #include "signing.h" -#include "aes.h" +#include "aes/aes.h" #include "hmac.h" #include "crypto.h" #include "base58.h" diff --git a/firmware/nem2.c b/firmware/nem2.c index a2be49c..ebe9073 100644 --- a/firmware/nem2.c +++ b/firmware/nem2.c @@ -19,7 +19,7 @@ #include "nem2.h" -#include "aes.h" +#include "aes/aes.h" #include "fsm.h" #include "gettext.h" #include "layout2.h" diff --git a/firmware/storage.c b/firmware/storage.c index 1d33e48..6ccc91d 100644 --- a/firmware/storage.c +++ b/firmware/storage.c @@ -26,7 +26,7 @@ #include "trezor.h" #include "sha2.h" -#include "aes.h" +#include "aes/aes.h" #include "pbkdf2.h" #include "bip32.h" #include "bip39.h" diff --git a/rng.c b/rng.c index 145f51b..6576d8b 100644 --- a/rng.c +++ b/rng.c @@ -36,31 +36,3 @@ uint32_t random32(void) return new; } #endif - -uint32_t random_uniform(uint32_t n) -{ - uint32_t x, max = 0xFFFFFFFF - (0xFFFFFFFF % n); - while ((x = random32()) >= max); - return x / (max / n); -} - -void random_buffer(uint8_t *buf, size_t len) -{ - uint32_t r = 0; - for (size_t i = 0; i < len; i++) { - if (i % 4 == 0) { - r = random32(); - } - buf[i] = (r >> ((i % 4) * 8)) & 0xFF; - } -} - -void random_permute(char *str, size_t len) -{ - for (int i = len - 1; i >= 1; i--) { - int j = random_uniform(i + 1); - char t = str[j]; - str[j] = str[i]; - str[i] = t; - } -} diff --git a/rng.h b/rng.h index f3fa073..c28ef22 100644 --- a/rng.h +++ b/rng.h @@ -20,12 +20,6 @@ #ifndef __RNG_H__ #define __RNG_H__ -#include -#include - -uint32_t random32(void); -uint32_t random_uniform(uint32_t n); -void random_buffer(uint8_t *buf, size_t len); -void random_permute(char *buf, size_t len); +#include "rand.h" #endif diff --git a/vendor/trezor-crypto b/vendor/trezor-crypto index 74e74f5..0d8a3be 160000 --- a/vendor/trezor-crypto +++ b/vendor/trezor-crypto @@ -1 +1 @@ -Subproject commit 74e74f5eed886ff871dc1fb36088e4b465917689 +Subproject commit 0d8a3beeaf22af837f558a5b5e9ae98cdd47a767