env: Implement support for encrypting environment
Add function which allows encrypting the whole environment block with AES-128-CBC. The key for the environment is retrieved by env_aes_cbc_get_key() function, which must be implemented on a per-board basis. Signed-off-by: Marek Vasut <marex@denx.de>
This commit is contained in:
@@ -146,7 +146,12 @@ extern unsigned long nand_env_oob_offset;
|
||||
extern char *env_name_spec;
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_ENV_AES
|
||||
/* Make sure the payload is multiple of AES block size */
|
||||
#define ENV_SIZE ((CONFIG_ENV_SIZE - ENV_HEADER_SIZE) & ~(16 - 1))
|
||||
#else
|
||||
#define ENV_SIZE (CONFIG_ENV_SIZE - ENV_HEADER_SIZE)
|
||||
#endif
|
||||
|
||||
typedef struct environment_s {
|
||||
uint32_t crc; /* CRC32 over data bytes */
|
||||
@@ -154,7 +159,12 @@ typedef struct environment_s {
|
||||
unsigned char flags; /* active/obsolete flags */
|
||||
#endif
|
||||
unsigned char data[ENV_SIZE]; /* Environment data */
|
||||
} env_t;
|
||||
} env_t
|
||||
#ifdef CONFIG_ENV_AES
|
||||
/* Make sure the env is aligned to block size. */
|
||||
__attribute__((aligned(16)))
|
||||
#endif
|
||||
;
|
||||
|
||||
#ifdef ENV_IS_EMBEDDED
|
||||
extern env_t environment;
|
||||
|
||||
Reference in New Issue
Block a user