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