@@ -8,11 +8,12 @@ PROGEXT = .elf | |||||
SRCS = main.c | SRCS = main.c | ||||
SRCS+= strobe_rng_init.c | SRCS+= strobe_rng_init.c | ||||
CFLAGS+= -I$(.CURDIR) | |||||
CFLAGS+= -DNDEBUG | CFLAGS+= -DNDEBUG | ||||
# Strobe | # Strobe | ||||
.PATH: $(.CURDIR)/strobe | .PATH: $(.CURDIR)/strobe | ||||
CFLAGS = -I$(.CURDIR)/strobe | |||||
CFLAGS+= -I$(.CURDIR)/strobe | |||||
SRCS+= strobe.c \ | SRCS+= strobe.c \ | ||||
x25519.c | x25519.c | ||||
@@ -28,6 +29,7 @@ CFLAGS+= -I$(STM32)/l151ccux | |||||
CFLAGS+= -DSTM32L151xC | CFLAGS+= -DSTM32L151xC | ||||
OBJS = $(SRCS:C/.c$/.o/) | OBJS = $(SRCS:C/.c$/.o/) | ||||
CFLAGS+= -Werror -Wall | |||||
.PHONY: all | .PHONY: all | ||||
all: $(PROG)$(PROGEXT) $(PROG).list | all: $(PROG)$(PROGEXT) $(PROG).list | ||||
@@ -2,7 +2,7 @@ | |||||
#include <strobe_rng_init.h> | #include <strobe_rng_init.h> | ||||
extern char rng_save; | |||||
extern uint8_t rng_save; | |||||
extern int rng_save_len; | extern int rng_save_len; | ||||
void | void | ||||
@@ -10,7 +10,16 @@ strobe_rng_init(void) | |||||
{ | { | ||||
int r; | int r; | ||||
/* | |||||
* Seed RNG | |||||
* On first boot, SRAM is uninitialized and randomness from | |||||
* it is used. On reset, the previously saved state is used. | |||||
*/ | |||||
strobe_seed_prng(&rng_save, 2*1024); | strobe_seed_prng(&rng_save, 2*1024); | ||||
/* | |||||
* Save entropy for next reset. | |||||
*/ | |||||
r = strobe_randomize(&rng_save, rng_save_len); | r = strobe_randomize(&rng_save, rng_save_len); | ||||
(void)r; | |||||
} | } |