mirror of
https://github.com/ARM-software/arm-trusted-firmware.git
synced 2025-04-27 15:24:54 +00:00

Since FVP does not support RSS, RSS APIs used to provide the hardcoded platform token and attestation key. However, that seems to be causing un-necessary mandating of some PSA crypto definitions, that doesn't seem appropriate. Hence to retrieve platform token and realm attestation key, these RSS APIs calls have been replaced with hardcoded information. Change-Id: I5fd091025e3444a698b9d387763ce20db6b13ae1 Signed-off-by: Manish V Badarkhe <Manish.Badarkhe@arm.com>
73 lines
1.6 KiB
C
73 lines
1.6 KiB
C
/*
|
|
* Copyright (c) 2022-2023, Arm Limited. All rights reserved.
|
|
*
|
|
* SPDX-License-Identifier: BSD-3-Clause
|
|
*
|
|
*/
|
|
|
|
#include <delegated_attestation.h>
|
|
#include <psa/client.h>
|
|
#include <psa_manifest/sid.h>
|
|
|
|
psa_status_t
|
|
rss_delegated_attest_get_delegated_key(uint8_t ecc_curve,
|
|
uint32_t key_bits,
|
|
uint8_t *key_buf,
|
|
size_t key_buf_size,
|
|
size_t *key_size,
|
|
uint32_t hash_algo)
|
|
{
|
|
psa_status_t status;
|
|
psa_invec in_vec[] = {
|
|
{&ecc_curve, sizeof(ecc_curve)},
|
|
{&key_bits, sizeof(key_bits)},
|
|
{&hash_algo, sizeof(hash_algo)}
|
|
};
|
|
psa_outvec out_vec[] = {
|
|
{key_buf, key_buf_size}
|
|
};
|
|
|
|
if (key_size == NULL) {
|
|
return PSA_ERROR_INVALID_ARGUMENT;
|
|
}
|
|
|
|
status = psa_call(RSS_DELEGATED_SERVICE_HANDLE,
|
|
RSS_DELEGATED_ATTEST_GET_DELEGATED_KEY,
|
|
in_vec, IOVEC_LEN(in_vec),
|
|
out_vec, IOVEC_LEN(out_vec));
|
|
if (status == PSA_SUCCESS) {
|
|
*key_size = out_vec[0].len;
|
|
}
|
|
|
|
return status;
|
|
}
|
|
|
|
psa_status_t
|
|
rss_delegated_attest_get_token(const uint8_t *dak_pub_hash,
|
|
size_t dak_pub_hash_size,
|
|
uint8_t *token_buf,
|
|
size_t token_buf_size,
|
|
size_t *token_size)
|
|
{
|
|
psa_status_t status;
|
|
psa_invec in_vec[] = {
|
|
{dak_pub_hash, dak_pub_hash_size}
|
|
};
|
|
psa_outvec out_vec[] = {
|
|
{token_buf, token_buf_size}
|
|
};
|
|
|
|
if (token_size == NULL) {
|
|
return PSA_ERROR_INVALID_ARGUMENT;
|
|
}
|
|
|
|
status = psa_call(RSS_DELEGATED_SERVICE_HANDLE,
|
|
RSS_DELEGATED_ATTEST_GET_PLATFORM_TOKEN,
|
|
in_vec, IOVEC_LEN(in_vec),
|
|
out_vec, IOVEC_LEN(out_vec));
|
|
if (status == PSA_SUCCESS) {
|
|
*token_size = out_vec[0].len;
|
|
}
|
|
|
|
return status;
|
|
}
|