blob: d8355f0a2cb766ede461eee47d3f699faa646646 [file] [log] [blame]
/*
* Copyright (c) 2021, Arm Limited. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*
*/
#include <stddef.h>
#include <stdint.h>
#include <psa/error.h>
#ifndef ATTEST_PROVISION_H
#define ATTEST_PROVISION_H
/**
* A provisioning client API for perfoming one-off provisioning
* operations related to the attestation service. This API will typically
* be used by a special factory application during device manufacture.
*/
#ifdef __cplusplus
extern "C" {
#endif
/**
* \brief Export IAK public key
*
* Used to retrieve the IAK public key that corresponds to the key-pair
* that was generated or provisioned for the device. The public key
* may be used by a remote verifier as an identifier for the device.
*
* \param[out] data Buffer where the key data is to be written.
* \param data_size Size of the \p data buffer in bytes.
* \param[out] data_length On success, the number of bytes
* that make up the key data.
*
* \return Returns error code as specified in \ref psa_status_t
*/
psa_status_t attest_provision_export_iak_public_key(
uint8_t *data,
size_t data_size,
size_t *data_length);
/**
* \brief Import IAK
*
* Used during device manufacture to provision the IAK. Two IAK
* provisioning strategies are supported 1) Externally generated
* key-pair that is provisioned using this interface. 2) Self
* generated where the IAK is generated by the device autonomously.
* If a key is to be imported, the operation must be performed before
* any other operation related to the attestation service. This
* operation may only be performed once for a device. An attempt
* to repeat the operation will be rejected.
*
* \param[in] data Buffer containing the key data.
* \param[in] data_length Size of the \p data buffer in bytes.
*
* \return Returns error code as specified in \ref psa_status_t
*/
psa_status_t attest_provision_import_iak(
const uint8_t *data,
size_t data_length);
#ifdef __cplusplus
}
#endif
#endif /* ATTEST_PROVISION_H */