1 /* 2 * Copyright (c) 2021-2022, Arm Limited and Contributors. All rights reserved. 3 * 4 * SPDX-License-Identifier: BSD-3-Clause 5 */ 6 7 #include <string.h> 8 #include <service/attestation/claims/claim.h> 9 #include "implementation_id_claim_source.h" 10 11 static bool get_claim(void *context, struct claim *claim); 12 implementation_id_claim_source_init(struct implementation_id_claim_source * instance,const char * id_string)13struct claim_source *implementation_id_claim_source_init( 14 struct implementation_id_claim_source *instance, 15 const char *id_string) 16 { 17 instance->base.get_claim = get_claim; 18 instance->base.context = instance; 19 20 instance->id_string = id_string; 21 22 return &instance->base; 23 } 24 get_claim(void * context,struct claim * claim)25static bool get_claim(void *context, struct claim *claim) 26 { 27 struct implementation_id_claim_source *instance = (struct implementation_id_claim_source*)context; 28 29 if (instance->id_string) { 30 31 claim->category = CLAIM_CATEGORY_DEVICE; 32 claim->subject_id = CLAIM_SUBJECT_ID_IMPLEMENTATION_ID; 33 claim->variant_id = CLAIM_VARIANT_ID_BYTE_STRING; 34 claim->raw_data = NULL; 35 36 claim->variant.byte_string.bytes = (const uint8_t*)instance->id_string; 37 claim->variant.byte_string.len = strlen(instance->id_string); 38 } 39 40 return instance->id_string; 41 } 42