diff options
Diffstat (limited to 'include/rsa.h')
-rw-r--r-- | include/rsa.h | 30 |
1 files changed, 29 insertions, 1 deletions
diff --git a/include/rsa.h b/include/rsa.h index ab45695910..2fb896c652 100644 --- a/include/rsa.h +++ b/include/rsa.h @@ -12,7 +12,7 @@ #define CONFIG_RSA_KEY_SIZE 2048 /* default to 2048-bit key length */ #endif -#define RSANUMBYTES ((CONFIG_RSA_KEY_SIZE)/8) +#define RSANUMBYTES ((CONFIG_RSA_KEY_SIZE) / 8) #define RSANUMWORDS (RSANUMBYTES / sizeof(uint32_t)) #ifdef CONFIG_RSA /* reserve space for public key only if used */ @@ -53,4 +53,32 @@ void check_rw_signature(void); #endif /* !__ASSEMBLER__ */ +/* + * The signer puts the public key and signature into the RO and RW images + * (respectively) at known locations after the complete image is assembled. But + * since we compile the RO & RW images separately, the other image's addresses + * can't be computed by the linker. So we just hardcode the addresses here. + * These can be overridden in board.h files if desired. + */ + +/* The pubkey goes at the end of the first half of flash */ +#ifndef CONFIG_RO_PUBKEY_SIZE +#define CONFIG_RO_PUBKEY_SIZE RSA_PUBLIC_KEY_SIZE +#endif +#ifndef CONFIG_RO_PUBKEY_ADDR +#define CONFIG_RO_PUBKEY_ADDR (CONFIG_PROGRAM_MEMORY_BASE \ + + (CONFIG_FLASH_SIZE / 2) \ + - CONFIG_RO_PUBKEY_SIZE) +#endif + +/* The signature goes at the end of the second half of flash */ +#ifndef CONFIG_RW_SIG_SIZE +#define CONFIG_RW_SIG_SIZE RSANUMBYTES +#endif +#ifndef CONFIG_RW_SIG_ADDR +#define CONFIG_RW_SIG_ADDR (CONFIG_PROGRAM_MEMORY_BASE \ + + CONFIG_FLASH_SIZE \ + - CONFIG_RW_SIG_SIZE) +#endif + #endif /* __CROS_EC_RSA_H */ |