Skip to content

Commit eaa59f2

Browse files
Improve TLV control under ALLOW_ROGUE_TLVS switch
The list of allowed unprotected tlvs is limited to expected TLV only, depending on crypto scheme configuration. The original implementation allows many additional TLV (related to other crypto schemes). The allow_unprot_tlvs[] array changes requires the move of EXPECTED_ENC_TLV definitions from encrypted.c to enc_key_public.h file. Signed-off-by: Stephane Le Roy <[email protected]>
1 parent 256a02c commit eaa59f2

File tree

3 files changed

+34
-36
lines changed

3 files changed

+34
-36
lines changed

Diff for: boot/bootutil/include/bootutil/enc_key_public.h

+22
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,28 @@ extern "C" {
5959
#define BOOT_ENC_TLV_SIZE TLV_ENC_KW_SZ
6060
#endif
6161

62+
#define EXPECTED_ENC_LEN BOOT_ENC_TLV_SIZE
63+
64+
#if defined(MCUBOOT_ENCRYPT_RSA)
65+
# define EXPECTED_ENC_TLV IMAGE_TLV_ENC_RSA2048
66+
#elif defined(MCUBOOT_ENCRYPT_KW)
67+
# define EXPECTED_ENC_TLV IMAGE_TLV_ENC_KW
68+
#elif defined(MCUBOOT_ENCRYPT_EC256)
69+
# define EXPECTED_ENC_TLV IMAGE_TLV_ENC_EC256
70+
# define EC_PUBK_INDEX (0)
71+
# define EC_TAG_INDEX (65)
72+
# define EC_CIPHERKEY_INDEX (65 + 32)
73+
_Static_assert(EC_CIPHERKEY_INDEX + BOOT_ENC_KEY_SIZE == EXPECTED_ENC_LEN,
74+
"Please fix ECIES-P256 component indexes");
75+
#elif defined(MCUBOOT_ENCRYPT_X25519)
76+
# define EXPECTED_ENC_TLV IMAGE_TLV_ENC_X25519
77+
# define EC_PUBK_INDEX (0)
78+
# define EC_TAG_INDEX (32)
79+
# define EC_CIPHERKEY_INDEX (32 + 32)
80+
_Static_assert(EC_CIPHERKEY_INDEX + BOOT_ENC_KEY_SIZE == EXPECTED_ENC_LEN,
81+
"Please fix ECIES-X25519 component indexes");
82+
#endif
83+
6284
#ifdef __cplusplus
6385
}
6486
#endif

Diff for: boot/bootutil/src/encrypted.c

-22
Original file line numberDiff line numberDiff line change
@@ -383,28 +383,6 @@ boot_enc_set_key(struct enc_key_data *enc_state, uint8_t slot,
383383
return 0;
384384
}
385385

386-
#define EXPECTED_ENC_LEN BOOT_ENC_TLV_SIZE
387-
388-
#if defined(MCUBOOT_ENCRYPT_RSA)
389-
# define EXPECTED_ENC_TLV IMAGE_TLV_ENC_RSA2048
390-
#elif defined(MCUBOOT_ENCRYPT_KW)
391-
# define EXPECTED_ENC_TLV IMAGE_TLV_ENC_KW
392-
#elif defined(MCUBOOT_ENCRYPT_EC256)
393-
# define EXPECTED_ENC_TLV IMAGE_TLV_ENC_EC256
394-
# define EC_PUBK_INDEX (0)
395-
# define EC_TAG_INDEX (65)
396-
# define EC_CIPHERKEY_INDEX (65 + 32)
397-
_Static_assert(EC_CIPHERKEY_INDEX + BOOT_ENC_KEY_SIZE == EXPECTED_ENC_LEN,
398-
"Please fix ECIES-P256 component indexes");
399-
#elif defined(MCUBOOT_ENCRYPT_X25519)
400-
# define EXPECTED_ENC_TLV IMAGE_TLV_ENC_X25519
401-
# define EC_PUBK_INDEX (0)
402-
# define EC_TAG_INDEX (32)
403-
# define EC_CIPHERKEY_INDEX (32 + 32)
404-
_Static_assert(EC_CIPHERKEY_INDEX + BOOT_ENC_KEY_SIZE == EXPECTED_ENC_LEN,
405-
"Please fix ECIES-X25519 component indexes");
406-
#endif
407-
408386
#if ( (defined(MCUBOOT_ENCRYPT_RSA) && defined(MCUBOOT_USE_MBED_TLS) && !defined(MCUBOOT_USE_PSA_CRYPTO)) || \
409387
(defined(MCUBOOT_ENCRYPT_EC256) && defined(MCUBOOT_USE_MBED_TLS)) )
410388
#if MBEDTLS_VERSION_NUMBER >= 0x03000000

Diff for: boot/bootutil/src/image_validate.c

+12-14
Original file line numberDiff line numberDiff line change
@@ -358,20 +358,18 @@ bootutil_get_img_security_cnt(struct image_header *hdr,
358358
* TLV section. All other TLV entries must be in the protected section.
359359
*/
360360
static const uint16_t allowed_unprot_tlvs[] = {
361-
IMAGE_TLV_KEYHASH,
362-
IMAGE_TLV_PUBKEY,
363-
IMAGE_TLV_SHA256,
364-
IMAGE_TLV_SHA384,
365-
IMAGE_TLV_SHA512,
366-
IMAGE_TLV_RSA2048_PSS,
367-
IMAGE_TLV_ECDSA224,
368-
IMAGE_TLV_ECDSA_SIG,
369-
IMAGE_TLV_RSA3072_PSS,
370-
IMAGE_TLV_ED25519,
371-
IMAGE_TLV_ENC_RSA2048,
372-
IMAGE_TLV_ENC_KW,
373-
IMAGE_TLV_ENC_EC256,
374-
IMAGE_TLV_ENC_X25519,
361+
#ifdef EXPECTED_KEY_TLV
362+
EXPECTED_KEY_TLV,
363+
#endif
364+
#ifdef EXPECTED_HASH_TLV
365+
EXPECTED_HASH_TLV,
366+
#endif
367+
#ifdef EXPECTED_SIG_TLV
368+
EXPECTED_SIG_TLV,
369+
#endif
370+
#ifdef EXPECTED_ENC_TLV
371+
EXPECTED_ENC_TLV,
372+
#endif
375373
/* Mark end with ANY. */
376374
IMAGE_TLV_ANY,
377375
};

0 commit comments

Comments
 (0)