blob: 3d6c95da7ab8956482efd72c66d64d709bf0cdb7 [file] [log] [blame]
laurenw-arm00b7e0b2023-06-13 16:43:39 -05001/*
Yann Gautier5b46aac2024-10-04 18:49:35 +02002 * Copyright (c) 2023-2025, Arm Limited and Contributors. All rights reserved.
laurenw-arm00b7e0b2023-06-13 16:43:39 -05003 *
4 * SPDX-License-Identifier: BSD-3-Clause
5 */
6
7#include <stdint.h>
8#include <stdio.h>
9
laurenw-arm00b7e0b2023-06-13 16:43:39 -050010#include <plat/common/platform.h>
Tamas Ban7f8589c2024-02-22 11:35:28 +010011#include <rse_platform_api.h>
laurenw-arm00b7e0b2023-06-13 16:43:39 -050012#include <tc_plat.h>
Yann Gautier5b46aac2024-10-04 18:49:35 +020013#include <tc_rse_comms.h>
laurenw-arm00b7e0b2023-06-13 16:43:39 -050014
15static void print_hex(const char *key_id_name, size_t key_size, const uint8_t *key_buf)
16{
17 printf("%s = ", key_id_name);
18 for (int i = 0; i < key_size; i++) {
19 printf("%02x", key_buf[i]);
20 }
21 printf("\n\n");
22}
23
24int rotpk_test(void)
25{
26 psa_status_t status;
27 uint8_t key_buf[128];
28 size_t key_size;
29
30 struct key_id_info key_ids[3] = {
Tamas Ban7f8589c2024-02-22 11:35:28 +010031 {.key_id = RSE_BUILTIN_KEY_ID_HOST_S_ROTPK, .key_id_name = "Secure-ROTPK"},
32 {.key_id = RSE_BUILTIN_KEY_ID_HOST_NS_ROTPK, .key_id_name = "NS-ROTPK"},
33 {.key_id = RSE_BUILTIN_KEY_ID_HOST_CCA_ROTPK, .key_id_name = "CCA-ROTPK"}
laurenw-arm00b7e0b2023-06-13 16:43:39 -050034 };
35
Yann Gautier5b46aac2024-10-04 18:49:35 +020036 status = plat_rse_comms_init();
laurenw-arm00b7e0b2023-06-13 16:43:39 -050037 if (status != PSA_SUCCESS) {
Yann Gautier5b46aac2024-10-04 18:49:35 +020038 printf("Failed to initialize RSE communication channel - psa_status = %d\n",
39 status);
laurenw-arm00b7e0b2023-06-13 16:43:39 -050040 return -1;
41 }
42
43 for (int i = 0; i < ARRAY_SIZE(key_ids); i++) {
Tamas Ban7f8589c2024-02-22 11:35:28 +010044 status = rse_platform_key_read(key_ids[i].key_id, key_buf,
laurenw-arm00b7e0b2023-06-13 16:43:39 -050045 sizeof(key_buf), &key_size);
46 if (status != PSA_SUCCESS) {
Yann Gautier5b46aac2024-10-04 18:49:35 +020047 printf("Failed to retrieve %s - psa_status = %d\n", key_ids[i].key_id_name,
48 status);
laurenw-arm00b7e0b2023-06-13 16:43:39 -050049 return -1;
50 }
51 print_hex(key_ids[i].key_id_name, key_size, key_buf);
52 }
53
54 printf("Passed rotpk_test\n");
55
56 return 0;
57}