Add components for attestation service

In preparation for implementing the attestation service provider,
building block components have been add.  This includes the
service access protocol definition, an external cbor library,
generic claim model and a concrete claim source for extracting
claims from a TCG event log.

This commit contains derived work, the following files are copied
from other projects:

components/service/attestation/claims/sources/event_log/tcg.h
   Origin:
        https://git.trustedfirmware.org/TF-A/trusted-firmware-a.git
        include/drivers/measured_boot/tcg.h
        #a5394205e94b70faf7ddd34841528ec631711d1a

components/service/attestation/include/psa/initial_attestation.h
   Origin:
        https://git.trustedfirmware.org/TF-M/trusted-firmware-m.git
        interface/include/psa/initial_attestation.h
        #9280ae9d898bffbb889e4796e51aab35a392ef82

Signed-off-by: Julian Hall <julian.hall@arm.com>
Change-Id: I5ed3e4ef7111a19b29643538ef3c47b3b6e1dd5c
diff --git a/components/service/attestation/claims/claim_source.h b/components/service/attestation/claims/claim_source.h
new file mode 100644
index 0000000..5c28c47
--- /dev/null
+++ b/components/service/attestation/claims/claim_source.h
@@ -0,0 +1,47 @@
+/*
+ * Copyright (c) 2021, Arm Limited and Contributors. All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+#ifndef CLAIM_SOURCE_H
+#define CLAIM_SOURCE_H
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct claim;
+
+/**
+ * An abstract interface for getting a claim from some source.  The source
+ * may return any type of claim variant so it could be a single claim or a
+ * collection.
+ */
+struct claim_source
+{
+    bool (*get_claim)(void *context, struct claim *claim);
+    void *context;
+
+    /* Generic claim source properties to be added */
+};
+
+/**
+ * \brief Get a claim from the claim source
+ *
+ * \param[in] cs         The claim source
+ * \param[out] claim     The returned claim
+ *
+ * \return Returns true if a claim is returned.
+ */
+static inline bool claim_source_get_claim(struct claim_source *cs, struct claim *claim)
+{
+    return cs->get_claim(cs->context, claim);
+}
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* CLAIM_SOURCE_H */