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