xref: /optee_os/core/pta/veraison_attestation/cbor.h (revision 900bf7c6b0b2a2dc120a1286c5efa414974078f9)
1*900bf7c6SYuichi Sugiyama /* SPDX-License-Identifier: BSD-2-Clause */
2*900bf7c6SYuichi Sugiyama /*
3*900bf7c6SYuichi Sugiyama  * Copyright (C) 2024, Institute of Information Security (IISEC)
4*900bf7c6SYuichi Sugiyama  */
5*900bf7c6SYuichi Sugiyama 
6*900bf7c6SYuichi Sugiyama #ifndef PTA_VERAISON_ATTESTATION_CBOR_H
7*900bf7c6SYuichi Sugiyama #define PTA_VERAISON_ATTESTATION_CBOR_H
8*900bf7c6SYuichi Sugiyama 
9*900bf7c6SYuichi Sugiyama #include <qcbor.h>
10*900bf7c6SYuichi Sugiyama #include <stddef.h>
11*900bf7c6SYuichi Sugiyama #include <stdint.h>
12*900bf7c6SYuichi Sugiyama 
13*900bf7c6SYuichi Sugiyama /* PSA claim keys */
14*900bf7c6SYuichi Sugiyama /* https://datatracker.ietf.org/doc/draft-tschofenig-rats-psa-token/13/ */
15*900bf7c6SYuichi Sugiyama #define PSA_NONCE 10
16*900bf7c6SYuichi Sugiyama #define PSA_INSTANCE_ID 256
17*900bf7c6SYuichi Sugiyama #define PSA_PROFILE_DEFINITION 265
18*900bf7c6SYuichi Sugiyama #define PSA_ARM_RANGE_BASE (2393)
19*900bf7c6SYuichi Sugiyama #define PSA_CLIENT_ID (PSA_ARM_RANGE_BASE + 1)
20*900bf7c6SYuichi Sugiyama #define PSA_SECURITY_LIFECYCLE (PSA_ARM_RANGE_BASE + 2)
21*900bf7c6SYuichi Sugiyama #define PSA_IMPLEMENTATION_ID (PSA_ARM_RANGE_BASE + 3)
22*900bf7c6SYuichi Sugiyama #define PSA_BOOT_SEED (PSA_ARM_RANGE_BASE + 4)
23*900bf7c6SYuichi Sugiyama #define PSA_CERTIFICATION_REFERENCE (PSA_ARM_RANGE_BASE + 5)
24*900bf7c6SYuichi Sugiyama #define PSA_SW_COMPONENTS (PSA_ARM_RANGE_BASE + 6)
25*900bf7c6SYuichi Sugiyama #define PSA_VERIFICATION_SERVICE (PSA_ARM_RANGE_BASE + 7)
26*900bf7c6SYuichi Sugiyama 
27*900bf7c6SYuichi Sugiyama #define PSA_SW_COMPONENT_MEASUREMENT_TYPE (1)
28*900bf7c6SYuichi Sugiyama #define PSA_SW_COMPONENT_MEASUREMENT_VALUE (2)
29*900bf7c6SYuichi Sugiyama #define PSA_SW_COMPONENT_VERSION (4)
30*900bf7c6SYuichi Sugiyama #define PSA_SW_COMPONENT_SIGNER_ID (5)
31*900bf7c6SYuichi Sugiyama #define PSA_SW_COMPONENT_MEASUREMENT_DESC (6)
32*900bf7c6SYuichi Sugiyama 
33*900bf7c6SYuichi Sugiyama #define COSE_HEADER_PARAM_ALG 1
34*900bf7c6SYuichi Sugiyama #define COSE_ALGORITHM_ES256 -7
35*900bf7c6SYuichi Sugiyama #define COSE_SIG_CONTEXT_STRING_SIGNATURE1 "Signature1"
36*900bf7c6SYuichi Sugiyama 
37*900bf7c6SYuichi Sugiyama UsefulBufC generate_cbor_evidence(const char *eat_profile,
38*900bf7c6SYuichi Sugiyama 				  int psa_client_id,
39*900bf7c6SYuichi Sugiyama 				  int psa_security_lifecycle,
40*900bf7c6SYuichi Sugiyama 				  const uint8_t *psa_implementation_id,
41*900bf7c6SYuichi Sugiyama 				  size_t psa_implementation_id_len,
42*900bf7c6SYuichi Sugiyama 				  const char *measurement_type,
43*900bf7c6SYuichi Sugiyama 				  const uint8_t *signer_id,
44*900bf7c6SYuichi Sugiyama 				  size_t signer_id_len,
45*900bf7c6SYuichi Sugiyama 				  const uint8_t *psa_instance_id,
46*900bf7c6SYuichi Sugiyama 				  size_t psa_instance_id_len,
47*900bf7c6SYuichi Sugiyama 				  const uint8_t *psa_nonce,
48*900bf7c6SYuichi Sugiyama 				  size_t psa_nonce_len,
49*900bf7c6SYuichi Sugiyama 				  const uint8_t *measurement_value,
50*900bf7c6SYuichi Sugiyama 				  size_t measurement_value_len);
51*900bf7c6SYuichi Sugiyama 
52*900bf7c6SYuichi Sugiyama UsefulBufC generate_cose_evidence(UsefulBufC ubc_cbor_evidence);
53*900bf7c6SYuichi Sugiyama 
54*900bf7c6SYuichi Sugiyama #endif /* PTA_VERAISON_ATTESTATION_CBOR_H */
55