Rename libpsa to libpsats
Instead of using a generic name for the library, give it a TS specific
name to avoid possible naming collisions with other psa libraries in
the future.
Change-Id: Icea9be4d836f7d22300b20c8d6a5f8bd8fae1133
Signed-off-by: Gabor Toth <gabor.toth2@arm.com>
diff --git a/components/common/libpsats/libpsats-attestation.c b/components/common/libpsats/libpsats-attestation.c
new file mode 100644
index 0000000..c67422b
--- /dev/null
+++ b/components/common/libpsats/libpsats-attestation.c
@@ -0,0 +1,78 @@
+/*
+ * Copyright (c) 2023, Arm Limited and Contributors. All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+#include <protocols/rpc/common/packed-c/encoding.h>
+#include <psa/initial_attestation.h>
+#include <service/attestation/client/provision/attest_provision_client.h>
+#include <service/attestation/client/psa/iat_client.h>
+#include <service_locator.h>
+#include <stdio.h>
+
+#include "libpsats.h"
+#include "trace.h"
+
+static struct rpc_caller_session *rpc_session;
+static struct service_context *attestation_service_context;
+
+LIBPSATS_EXPORTED psa_status_t libpsats_init_attestation_context(const char *service_name)
+{
+ psa_status_t result = PSA_ERROR_GENERIC_ERROR;
+ psa_status_t provision_result = PSA_ERROR_GENERIC_ERROR;
+
+ if (rpc_session || attestation_service_context) {
+ EMSG("The client is already initialized\n");
+ return result;
+ }
+
+ service_locator_init();
+
+ attestation_service_context = service_locator_query(service_name);
+
+ if (!attestation_service_context) {
+ EMSG("Failed to discover service\n");
+ return result;
+ }
+
+ rpc_session = service_context_open(attestation_service_context);
+
+ if (!rpc_session) {
+ EMSG("Failed to open rpc session\n");
+ libpsats_deinit_attestation_context();
+ return result;
+ }
+
+ result = psa_iat_client_init(rpc_session);
+
+ if (result) {
+ EMSG("psa_iat_client_init failed\n");
+ return result;
+ }
+
+ provision_result = attest_provision_client_init(rpc_session);
+
+ /* If external IAK is used this call can fail */
+ if (provision_result)
+ EMSG(
+ "attest_provision_client_init failed. Are you using external IAK key?\n");
+
+ return result;
+}
+
+LIBPSATS_EXPORTED void libpsats_deinit_attestation_context(void)
+{
+ psa_iat_client_deinit();
+ attest_provision_client_deinit();
+
+ if (attestation_service_context && rpc_session) {
+ service_context_close(attestation_service_context, rpc_session);
+ rpc_session = NULL;
+ }
+
+ if (attestation_service_context) {
+ service_context_relinquish(attestation_service_context);
+ attestation_service_context = NULL;
+ }
+}