| @@ -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; | |||||
| } | } | ||||