Hello @Harvey021 ,
Thanks for the example, the imx-ele-apps/key-import, helped me verify my implementation, verifying the following are correct:
- NXP product manufact key agreement
- shared secret
- OEM_IMPORT_MK_SK
- OEM_IMPORT_WRAP_SK
- OEM_IMPORT_CMAC_SK
However performing the key-exchange (with the example SW) on an OEM_Closed device crashes the system:
sh run_test_on_board.sh
nxp_prod_ka_puk.bin exists.
oem_public_key.pem exists.
signed_msg.bin exists.
Hello, World! Sep 11 2025:14:50:25 77be1e7
Signed Message: 736 bytes
00e002890200000000000000b[ 281.271513] fsl-se-fw se-fw2: Rx-Msg(0xe1470206): Fatal abort received by hsm1.
Running the same test (with the example SW) on an OEM_Open device results in a invalid signature message:
hsm_open_session success
hsm_open_key_store_service success
hsm_open_key_management_service success
SAB Error: SAB CMD [0x47] Resp [0x1829] - Invalid Signature in SIGNED message.
hsm_key_exchange failed err:0xfe
Key exchange failed: 254
For info, the SRK hash reported by the signed message generation (running the command.sh on host side) for KEY_EXCHANGE_REQ matches the SRKH obtained from the HSM.
1. Is there an expected difference between an OEM_Open and OEM_Closed device ?
2. Why would the signature be reported invalid in the example ?