1*91f16700Schasinglulu /* 2*91f16700Schasinglulu * Copyright (c) 2022, Arm Ltd. All rights reserved. 3*91f16700Schasinglulu * 4*91f16700Schasinglulu * SPDX-License-Identifier: BSD-3-Clause 5*91f16700Schasinglulu */ 6*91f16700Schasinglulu 7*91f16700Schasinglulu #include <stdarg.h> 8*91f16700Schasinglulu #include <stdbool.h> 9*91f16700Schasinglulu #include <stdio.h> 10*91f16700Schasinglulu 11*91f16700Schasinglulu #include <delegated_attestation.h> 12*91f16700Schasinglulu #include <measured_boot.h> 13*91f16700Schasinglulu #include <psa/error.h> 14*91f16700Schasinglulu 15*91f16700Schasinglulu 16*91f16700Schasinglulu psa_status_t 17*91f16700Schasinglulu tfm_measured_boot_extend_measurement(uint8_t index, 18*91f16700Schasinglulu const uint8_t *signer_id, 19*91f16700Schasinglulu size_t signer_id_size, 20*91f16700Schasinglulu const uint8_t *version, 21*91f16700Schasinglulu size_t version_size, 22*91f16700Schasinglulu uint32_t measurement_algo, 23*91f16700Schasinglulu const uint8_t *sw_type, 24*91f16700Schasinglulu size_t sw_type_size, 25*91f16700Schasinglulu const uint8_t *measurement_value, 26*91f16700Schasinglulu size_t measurement_value_size, 27*91f16700Schasinglulu bool lock_measurement) 28*91f16700Schasinglulu { 29*91f16700Schasinglulu return rss_measured_boot_extend_measurement(index, 30*91f16700Schasinglulu signer_id, 31*91f16700Schasinglulu signer_id_size, 32*91f16700Schasinglulu version, 33*91f16700Schasinglulu version_size, 34*91f16700Schasinglulu measurement_algo, 35*91f16700Schasinglulu sw_type, 36*91f16700Schasinglulu sw_type_size, 37*91f16700Schasinglulu measurement_value, 38*91f16700Schasinglulu measurement_value_size, 39*91f16700Schasinglulu lock_measurement); 40*91f16700Schasinglulu } 41*91f16700Schasinglulu 42*91f16700Schasinglulu psa_status_t 43*91f16700Schasinglulu tfm_measured_boot_read_measurement(uint8_t index, 44*91f16700Schasinglulu uint8_t *signer_id, 45*91f16700Schasinglulu size_t signer_id_size, 46*91f16700Schasinglulu size_t *signer_id_len, 47*91f16700Schasinglulu uint8_t *version, 48*91f16700Schasinglulu size_t version_size, 49*91f16700Schasinglulu size_t *version_len, 50*91f16700Schasinglulu uint32_t *measurement_algo, 51*91f16700Schasinglulu uint8_t *sw_type, 52*91f16700Schasinglulu size_t sw_type_size, 53*91f16700Schasinglulu size_t *sw_type_len, 54*91f16700Schasinglulu uint8_t *measurement_value, 55*91f16700Schasinglulu size_t measurement_value_size, 56*91f16700Schasinglulu size_t *measurement_value_len, 57*91f16700Schasinglulu bool *is_locked) 58*91f16700Schasinglulu { 59*91f16700Schasinglulu return rss_measured_boot_read_measurement(index, 60*91f16700Schasinglulu signer_id, 61*91f16700Schasinglulu signer_id_size, 62*91f16700Schasinglulu signer_id_len, 63*91f16700Schasinglulu version, 64*91f16700Schasinglulu version_size, 65*91f16700Schasinglulu version_len, 66*91f16700Schasinglulu measurement_algo, 67*91f16700Schasinglulu sw_type, 68*91f16700Schasinglulu sw_type_size, 69*91f16700Schasinglulu sw_type_len, 70*91f16700Schasinglulu measurement_value, 71*91f16700Schasinglulu measurement_value_size, 72*91f16700Schasinglulu measurement_value_len, 73*91f16700Schasinglulu is_locked); 74*91f16700Schasinglulu } 75*91f16700Schasinglulu 76*91f16700Schasinglulu psa_status_t 77*91f16700Schasinglulu tfm_delegated_attest_get_token(const uint8_t *dak_pub_hash, 78*91f16700Schasinglulu size_t dak_pub_hash_size, 79*91f16700Schasinglulu uint8_t *token_buf, 80*91f16700Schasinglulu size_t token_buf_size, 81*91f16700Schasinglulu size_t *token_size) 82*91f16700Schasinglulu { 83*91f16700Schasinglulu return rss_delegated_attest_get_token(dak_pub_hash, 84*91f16700Schasinglulu dak_pub_hash_size, 85*91f16700Schasinglulu token_buf, 86*91f16700Schasinglulu token_buf_size, 87*91f16700Schasinglulu token_size); 88*91f16700Schasinglulu } 89*91f16700Schasinglulu 90*91f16700Schasinglulu psa_status_t 91*91f16700Schasinglulu tfm_delegated_attest_get_delegated_key(uint8_t ecc_curve, 92*91f16700Schasinglulu uint32_t key_bits, 93*91f16700Schasinglulu uint8_t *key_buf, 94*91f16700Schasinglulu size_t key_buf_size, 95*91f16700Schasinglulu size_t *key_size, 96*91f16700Schasinglulu uint32_t hash_algo) 97*91f16700Schasinglulu { 98*91f16700Schasinglulu return rss_delegated_attest_get_delegated_key(ecc_curve, 99*91f16700Schasinglulu key_bits, 100*91f16700Schasinglulu key_buf, 101*91f16700Schasinglulu key_buf_size, 102*91f16700Schasinglulu key_size, 103*91f16700Schasinglulu hash_algo); 104*91f16700Schasinglulu } 105*91f16700Schasinglulu 106*91f16700Schasinglulu int tfm_log_printf(const char *fmt, ...) 107*91f16700Schasinglulu { 108*91f16700Schasinglulu int count; 109*91f16700Schasinglulu va_list ap; 110*91f16700Schasinglulu 111*91f16700Schasinglulu va_start(ap, fmt); 112*91f16700Schasinglulu count = vprintf(fmt, ap); 113*91f16700Schasinglulu va_end(ap); 114*91f16700Schasinglulu 115*91f16700Schasinglulu return count; 116*91f16700Schasinglulu } 117*91f16700Schasinglulu 118*91f16700Schasinglulu void printf_set_color(int color_id) 119*91f16700Schasinglulu { 120*91f16700Schasinglulu (void)color_id; 121*91f16700Schasinglulu } 122