@@ -309,6 +309,11 @@ if (TFM_DUMMY_PROVISIONING)
309
309
${TFM_BL2_ENCRYPTION_KEY_PATH}
310
310
)
311
311
312
+ set (DM_BUNDLE_SCRIPT_DEPS
313
+ $< $< BOOL:${RSE_OTP_HAS_ROUTING_TABLES} > :routing_tables_pickle>
314
+ $< $< BOOL:${RSE_OTP_HAS_ROUTING_TABLES} > :${CMAKE_CURRENT_BINARY_DIR} /../../config/routing_tables.pickle>
315
+ )
316
+
312
317
set (DM_BUNDLE_SCRIPT_ARGS
313
318
$< $< EQUAL:${TFM_BL1_2_SIGNER_AMOUNT} ,2> :--non_secret_dm:dm.rotpk_areas_0.rotpk_0=${TFM_BL1_2_DM_SIGNING_KEY_PATH} >
314
319
$< $< EQUAL:${TFM_BL1_2_SIGNER_AMOUNT} ,2> :--non_secret_dm:dm.rotpk_areas_0.rotpk_policy_0=RSE_ROTPK_POLICY_SIG_OPTIONAL>
@@ -319,6 +324,8 @@ if (TFM_DUMMY_PROVISIONING)
319
324
--non_secret_dm:dm.rotpk_areas_0.rotpk_policy_1 RSE_ROTPK_POLICY_SIG_REQUIRED
320
325
--non_secret_dm:dm.rotpk_areas_0.rotpk_type_1 RSE_ROTPK_TYPE_${MCUBOOT_ROTPK_TYPE}
321
326
--non_secret_dm:dm.rotpk_areas_0.rotpk_hash_alg_1 RSE_ROTPK_HASH_ALG_${MCUBOOT_ROTPK_HASH_ALG}
327
+
328
+ $< $< BOOL:${RSE_OTP_HAS_ROUTING_TABLES} > :--routing_tables=${CMAKE_CURRENT_BINARY_DIR} /../../config/routing_tables.pickle>
322
329
)
323
330
324
331
if (RSE_DM_CHAINED_PROVISIONING )
@@ -331,41 +338,83 @@ if (TFM_DUMMY_PROVISIONING)
331
338
endif ()
332
339
endif ()
333
340
334
- generate_provisioning_bundle (
335
- cm_provisioning # bundle type
336
- ${CMAKE_CURRENT_SOURCE_DIR} /../../scripts/create_cm_provisioning_bundle.py # script
337
- cm_provisioning_code # cmake executable target
338
- "${RSE_CM_BLOB_VERSION} " # blob version
339
- "CM" # valid LCS states
340
- "${RSE_SYMMETRIC_PROVISIONING} " # symmetric provisioning enabled
341
- "${RSE_PROVISIONING_CM_SIGNATURE_CONFIG} " # signature config
342
- "${RSE_CM_PROVISIONING_SIGNING_KEY} " # signature key (if asymmetric)
343
- ${CMAKE_BINARY_DIR} /bin/keys/kprov_cm.bin # encryption key
344
- "" # PK not in ROM configuration (not for CM)
345
- "" # CM ROTPK index if PK not in ROM == CM_ROTPK (not for CM)
346
- "${RSE_PROVISIONING_CM_ENCRYPT_CODE_DATA} " # encrypt code and data
347
- ON # encrypt secret values
348
- "${CM_BUNDLE_SCRIPT_ARGS} " # OTP values args
349
- "${CM_BUNDLE_SCRIPT_DEPS} " # script specific CMake dependencies
350
- )
341
+ if (NOT RSE_OTP_HAS_RSE_ID AND NOT RSE_OTP_HAS_ROUTING_TABLES )
342
+ set (RSE_REQUIRES_UNIQUE_BUNDLES OFF )
343
+ set (RSE_AMOUNT_LOOP_RANGE 0 )
344
+ else ()
345
+ set (RSE_REQUIRES_UNIQUE_BUNDLES ON )
346
+ math (EXPR RSE_AMOUNT_LOOP_RANGE "${RSE_AMOUNT} - 1" )
347
+ endif ()
351
348
352
- generate_provisioning_bundle (
353
- dm_provisioning # bundle type
354
- ${CMAKE_CURRENT_SOURCE_DIR} /../../scripts/create_dm_provisioning_bundle.py # script
355
- dm_provisioning_code # cmake executable target
356
- "${RSE_DM_BLOB_VERSION} " # blob version
357
- "DM" # valid LCS states
358
- "${RSE_SYMMETRIC_PROVISIONING} " # symmetric provisioning enabled
359
- "${MAIN_DM_BUNDLE_SIGNATURE_CONFIG} " # signature config
360
- "${RSE_CM_PROVISIONING_SIGNING_KEY} " # signature key (if asymmetric)
361
- ${CMAKE_BINARY_DIR} /bin/keys/kprov_dm.bin # encryption key
362
- "${MAIN_DM_BUNDLE_NOT_IN_ROM_SIGNATURE_CONFIG} " # PK not in ROM configuration
363
- "${RSE_PROVISIONING_DM_SIGN_KEY_CM_ROTPK_IDX} " # CM ROTPK index if PK not in ROM == CM_ROTPK
364
- "${RSE_PROVISIONING_DM_ENCRYPT_CODE_DATA} " # encrypt code and data
365
- ON # encrypt secret values
366
- "${DM_BUNDLE_SCRIPT_ARGS} " # OTP values args
367
- "" # No additional dependencies
349
+ foreach (RSE_ID RANGE ${RSE_AMOUNT_LOOP_RANGE} )
350
+ if (RSE_REQUIRES_UNIQUE_BUNDLES )
351
+ set (BUNDLE_SUFFIX "_${RSE_ID} " )
352
+ else ()
353
+ set (BUNDLE_SUFFIX "" )
354
+ endif ()
355
+ set (CM_BUNDLE_SCRIPT_ARGS_TEMP
356
+ ${CM_BUNDLE_SCRIPT_ARGS}
357
+ $< $< BOOL:${RSE_OTP_HAS_RSE_ID} > :--non_secret_cm:cm.rse_id=${RSE_ID} >
358
+ )
359
+ set (DM_BUNDLE_SCRIPT_ARGS_TEMP
360
+ ${DM_BUNDLE_SCRIPT_ARGS}
361
+ $< $< BOOL:${RSE_OTP_HAS_ROUTING_TABLES} > :--routing_tables_idx=${RSE_ID} >
362
+ )
363
+
364
+ generate_provisioning_bundle (
365
+ "cm_provisioning${BUNDLE_SUFFIX} " # bundle type
366
+ ${CMAKE_CURRENT_SOURCE_DIR} /../../scripts/create_cm_provisioning_bundle.py # script
367
+ cm_provisioning_code # cmake executable target
368
+ "${RSE_CM_BLOB_VERSION} " # blob version
369
+ "CM" # valid LCS states
370
+ "${RSE_SYMMETRIC_PROVISIONING} " # symmetric provisioning enabled
371
+ "${RSE_PROVISIONING_CM_SIGNATURE_CONFIG} " # signature config
372
+ "${RSE_CM_PROVISIONING_SIGNING_KEY} " # signature key (if asymmetric)
373
+ ${CMAKE_BINARY_DIR} /bin/keys/kprov_cm.bin # encryption key
374
+ "" # PK not in ROM configuration (not for CM)
375
+ "" # CM ROTPK index if PK not in ROM == CM_ROTPK (not for CM)
376
+ "${RSE_PROVISIONING_CM_ENCRYPT_CODE_DATA} " # encrypt code and data
377
+ ON # encrypt secret values
378
+ "${CM_BUNDLE_SCRIPT_ARGS_TEMP} " # OTP values args
379
+ "${CM_BUNDLE_SCRIPT_DEPS} " # script specific CMake dependencies
380
+ )
381
+
382
+ generate_provisioning_bundle (
383
+ "dm_provisioning${BUNDLE_SUFFIX} " # bundle type
384
+ ${CMAKE_CURRENT_SOURCE_DIR} /../../scripts/create_dm_provisioning_bundle.py # script
385
+ dm_provisioning_code # cmake executable target
386
+ "${RSE_DM_BLOB_VERSION} " # blob version
387
+ "DM" # valid LCS states
388
+ "${RSE_SYMMETRIC_PROVISIONING} " # symmetric provisioning enabled
389
+ "${MAIN_DM_BUNDLE_SIGNATURE_CONFIG} " # signature config
390
+ "${RSE_CM_PROVISIONING_SIGNING_KEY} " # signature key (if asymmetric)
391
+ ${CMAKE_BINARY_DIR} /bin/keys/kprov_dm.bin # encryption key
392
+ "${MAIN_DM_BUNDLE_NOT_IN_ROM_SIGNATURE_CONFIG} " # PK not in ROM configuration
393
+ "${RSE_PROVISIONING_DM_SIGN_KEY_CM_ROTPK_IDX} " # CM ROTPK index if PK not in ROM == CM_ROTPK
394
+ "${RSE_PROVISIONING_DM_ENCRYPT_CODE_DATA} " # encrypt code and data
395
+ ON # encrypt secret values
396
+ "${DM_BUNDLE_SCRIPT_ARGS_TEMP} " # OTP values args
397
+ "" # No additional dependencies
398
+ )
399
+
400
+ generate_provisioning_bundle (
401
+ "combined_provisioning${BUNDLE_SUFFIX} " # bundle type
402
+ ${CMAKE_CURRENT_SOURCE_DIR} /../../scripts/create_combined_provisioning_bundle.py # script
403
+ combined_provisioning_code # cmake executable target
404
+ "${RSE_CM_BLOB_VERSION} " # blob version
405
+ "CM;DM" # valid LCS states
406
+ "${RSE_SYMMETRIC_PROVISIONING} " # symmetric provisioning enabled
407
+ "${RSE_PROVISIONING_DM_SIGNATURE_CONFIG} " # signature config
408
+ "${RSE_CM_PROVISIONING_SIGNING_KEY} " # signature key (if asymmetric)
409
+ ${CMAKE_BINARY_DIR} /bin/keys/kprov_cm.bin # encryption key
410
+ "CM_ROTPK" # PK not in ROM configuration
411
+ "${RSE_PROVISIONING_DM_SIGN_KEY_CM_ROTPK_IDX} " # CM ROTPK index if PK not in ROM == CM_ROTPK
412
+ "${RSE_PROVISIONING_CM_ENCRYPT_CODE_DATA} " # encrypt code and data
413
+ ON # encrypt secret values
414
+ "${CM_BUNDLE_SCRIPT_ARGS_TEMP} ;${DM_BUNDLE_SCRIPT_ARGS_TEMP} " # OTP values args
415
+ "${CM_BUNDLE_SCRIPT_DEPS} " # script specific CMake dependencies
368
416
)
417
+ endforeach ()
369
418
370
419
if (RSE_DM_CHAINED_PROVISIONING )
371
420
generate_provisioning_bundle (
@@ -387,24 +436,6 @@ if (TFM_DUMMY_PROVISIONING)
387
436
)
388
437
endif ()
389
438
390
- generate_provisioning_bundle (
391
- combined_provisioning # bundle type
392
- ${CMAKE_CURRENT_SOURCE_DIR} /../../scripts/create_combined_provisioning_bundle.py # script
393
- combined_provisioning_code # cmake executable target
394
- "${RSE_CM_BLOB_VERSION} " # blob version
395
- "CM;DM" # valid LCS states
396
- "${RSE_SYMMETRIC_PROVISIONING} " # symmetric provisioning enabled
397
- "${RSE_PROVISIONING_DM_SIGNATURE_CONFIG} " # signature config
398
- "${RSE_CM_PROVISIONING_SIGNING_KEY} " # signature key (if asymmetric)
399
- ${CMAKE_BINARY_DIR} /bin/keys/kprov_cm.bin # encryption key
400
- "CM_ROTPK" # PK not in ROM configuration
401
- "${RSE_PROVISIONING_DM_SIGN_KEY_CM_ROTPK_IDX} " # CM ROTPK index if PK not in ROM == CM_ROTPK
402
- "${RSE_PROVISIONING_CM_ENCRYPT_CODE_DATA} " # encrypt code and data
403
- ON # encrypt secret values
404
- "${CM_BUNDLE_SCRIPT_ARGS} ;${DM_BUNDLE_SCRIPT_ARGS} " # OTP values args
405
- "${CM_BUNDLE_SCRIPT_DEPS} " # script specific CMake dependencies
406
- )
407
-
408
439
if (RSE_NON_ENDORSED_DM_PROVISIONING )
409
440
generate_provisioning_bundle (
410
441
plain_data_handler_provisioning # bundle type
0 commit comments