xref: /optee_os/core/include/drivers/caam_extension.h (revision fbe66cf83199aa6a2aca9f93384cf1ad9185a5f6)
1d538d293SClement Faure /* SPDX-License-Identifier: BSD-2-Clause */
2d538d293SClement Faure /*
3d538d293SClement Faure  * Copyright 2023 NXP
4d538d293SClement Faure  */
5d538d293SClement Faure #ifndef __DRIVERS_CAAM_EXTENSION_H__
6d538d293SClement Faure #define __DRIVERS_CAAM_EXTENSION_H__
7d538d293SClement Faure 
8d538d293SClement Faure #include <tee_api_defines.h>
9d538d293SClement Faure #include <tee_api_types.h>
10d538d293SClement Faure #include <types_ext.h>
11d538d293SClement Faure 
12d538d293SClement Faure #ifdef CFG_NXP_CAAM_MP_DRV
13d538d293SClement Faure /*
14d538d293SClement Faure  * Export the MPMR content.
15d538d293SClement Faure  * We assume that it is filled with message given in parameter.
16d538d293SClement Faure  * It contains 32 registers of 8 bits (32 bytes).
17d538d293SClement Faure  *
18d538d293SClement Faure  * @mpmr  [out] MPMR buffer read
19d538d293SClement Faure  * @size  [in/out] MPMR buffer size exported
20d538d293SClement Faure  */
21d538d293SClement Faure TEE_Result caam_mp_export_mpmr(uint8_t *mpmr, size_t *size);
22d538d293SClement Faure 
23d538d293SClement Faure /*
24d538d293SClement Faure  * Export the Manufacturing Protection Public Key.
25d538d293SClement Faure  *
26d538d293SClement Faure  * @pubkey [out] Public key read
27d538d293SClement Faure  * @size   [in/out] Public key size exported
28d538d293SClement Faure  */
29d538d293SClement Faure TEE_Result caam_mp_export_publickey(uint8_t *pubkey, size_t *size);
30d538d293SClement Faure 
31d538d293SClement Faure /*
32d538d293SClement Faure  * MPSign function.
33d538d293SClement Faure  * This function takes the value in the MPMR if it exists
34d538d293SClement Faure  * and concatenates any additional data (certificate).
35d538d293SClement Faure  * The signature over the message is done with the private key.
36d538d293SClement Faure  *
37d538d293SClement Faure  * @data	[in] Data to sign
38d538d293SClement Faure  * @data_size	[in] Data size to sign
39d538d293SClement Faure  * @sig		[out] Signature
40d538d293SClement Faure  * @sig_size	[in/out] Signature size
41d538d293SClement Faure  */
42d538d293SClement Faure TEE_Result caam_mp_sign(uint8_t *data, size_t *data_size, uint8_t *sig,
43d538d293SClement Faure 			size_t *sig_size);
44d538d293SClement Faure #endif /* CFG_NXP_CAAM_MP_DRV */
45280dd882SClement Faure 
46280dd882SClement Faure #ifdef CFG_NXP_CAAM_DEK_DRV
47280dd882SClement Faure /*
48280dd882SClement Faure  * Data encryption key generation using CAAM Secure Memory.
49280dd882SClement Faure  *
50280dd882SClement Faure  * @blob_data  [in/out] Blob data
51280dd882SClement Faure  */
52280dd882SClement Faure TEE_Result caam_dek_generate(const uint8_t *payload, size_t payload_size,
53280dd882SClement Faure 			     uint8_t *dek, size_t dek_size);
54280dd882SClement Faure #endif /* CFG_NXP_CAAM_DEK_DRV */
55*fbe66cf8SEtienne Carriere #endif /* __DRIVERS_CAAM_EXTENSION_H__ */
56