ADAC: Add stub close session functionality

Add stub implementation of the psa_adac_close_session command for the
platforms to implement custom terminate session functionality.

Signed-off-by: Maulik Patel <maulik.patel@arm.com>
Change-Id: Id584ee3b6c5f7d177fe38584f266b1f057b690dc
diff --git a/psa-adac/core/include/psa_adac.h b/psa-adac/core/include/psa_adac.h
index 1ed4d5a..2330c5c 100644
--- a/psa-adac/core/include/psa_adac.h
+++ b/psa-adac/core/include/psa_adac.h
@@ -121,6 +121,7 @@
     ADAC_DISCOVERY_CMD = 0x01,      /**< `Discovery` command */
     ADAC_AUTH_START_CMD = 0x02,     /**< `Start Authentication` command */
     ADAC_AUTH_RESPONSE_CMD = 0x03,  /**< `Authentication Response` command */
+    ADAC_CLOSE_SESSION_CMD = 0x04,     /**< `Close Session` command */
     ADAC_RESUME_CMD = 0x05,         /**< `Resume` command */
     ADAC_LOCK_DEBUG_CMD = 0x06,     /**< `Lock Debug` command */
     ADAC_LCS_CHANGE = 0x100,        /**< `Change Life-cycle State` command */
diff --git a/psa-adac/sda/src/psa_adac_sda.c b/psa-adac/sda/src/psa_adac_sda.c
index cfeaba2..d8de906 100644
--- a/psa-adac/sda/src/psa_adac_sda.c
+++ b/psa-adac/sda/src/psa_adac_sda.c
@@ -382,13 +382,14 @@
                 ret = authenticator_send_response(auth_ctx, response);
                 break;
 
-                /* Send success status but otherwise do nothing. */
-            case ADAC_LOCK_DEBUG_CMD:
-                PSA_ADAC_LOG_DEBUG("auth", "Lock debug\r\n");
+                /* Send success status and terminate command loop. */
+            case ADAC_CLOSE_SESSION_CMD:
+                PSA_ADAC_LOG_DEBUG("auth", "Terminate session \r\n");
                 (void) authenticator_request_packet_release(auth_ctx, request);
-                psa_adac_platform_lock();
+                psa_adac_close_session();
                 response = authenticator_response_packet_build(auth_ctx, ADAC_SUCCESS, NULL, 0);
                 ret = authenticator_send_response(auth_ctx, response);
+                done = 1;
                 break;
 
                 /* Send success status and terminate command loop. */
@@ -401,6 +402,15 @@
                 done = 1;
                 break;
 
+                /* Send success status but otherwise do nothing. */
+            case ADAC_LOCK_DEBUG_CMD:
+                PSA_ADAC_LOG_DEBUG("auth", "Lock debug\r\n");
+                (void) authenticator_request_packet_release(auth_ctx, request);
+                psa_adac_platform_lock();
+                response = authenticator_response_packet_build(auth_ctx, ADAC_SUCCESS, NULL, 0);
+                ret = authenticator_send_response(auth_ctx, response);
+                break;
+
             case ADAC_LCS_CHANGE:
                 PSA_ADAC_LOG_DEBUG("auth", "Change LCS \n");
                 response = authentication_change_lcs(auth_ctx, request);
diff --git a/target/trusted-firmware-m/platform/arm/corstone1000/corstone1000.c b/target/trusted-firmware-m/platform/arm/corstone1000/corstone1000.c
index 9891713..80cccdd 100644
--- a/target/trusted-firmware-m/platform/arm/corstone1000/corstone1000.c
+++ b/target/trusted-firmware-m/platform/arm/corstone1000/corstone1000.c
@@ -30,7 +30,7 @@
     return 0;
 }
 
-void psa_adac_platform_lock(void)
+void psa_adac_close_session(void)
 {
     /* TODO: Code me */
 }
@@ -40,6 +40,11 @@
     /* TODO: Code me */
 }
 
+void psa_adac_platform_lock(void)
+{
+    /* TODO: Code me */
+}
+
 adac_status_t psa_adac_change_life_cycle_state(uint8_t *input, size_t input_size)
 {
     /* TODO: Code me */
diff --git a/target/trusted-firmware-m/platform/arm/corstone1000/include/platform/platform.h b/target/trusted-firmware-m/platform/arm/corstone1000/include/platform/platform.h
index 9172b8f..e99d0d5 100644
--- a/target/trusted-firmware-m/platform/arm/corstone1000/include/platform/platform.h
+++ b/target/trusted-firmware-m/platform/arm/corstone1000/include/platform/platform.h
@@ -28,8 +28,9 @@
 
 void platform_init(void);
 adac_status_t psa_adac_change_life_cycle_state(uint8_t *input, size_t input_size);
-void psa_adac_platform_lock(void);
+void psa_adac_close_session(void);
 void psa_adac_resume(void);
+void psa_adac_platform_lock(void);
 void psa_adac_platform_init(void);
 int psa_adac_detect_debug_request(void);
 void psa_adac_acknowledge_debug_request(void);
diff --git a/target/trusted-firmware-m/platform/arm/musca_b1/include/platform/platform.h b/target/trusted-firmware-m/platform/arm/musca_b1/include/platform/platform.h
index 9c13106..100e774 100644
--- a/target/trusted-firmware-m/platform/arm/musca_b1/include/platform/platform.h
+++ b/target/trusted-firmware-m/platform/arm/musca_b1/include/platform/platform.h
@@ -28,8 +28,9 @@
 
 void platform_init(void);
 adac_status_t psa_adac_change_life_cycle_state(uint8_t *input, size_t input_size);
-void psa_adac_platform_lock(void);
+void psa_adac_close_session(void);
 void psa_adac_resume(void);
+void psa_adac_platform_lock(void);
 int psa_adac_platform_check_token(uint8_t *token, size_t token_size);
 int psa_adac_platform_check_certificate(uint8_t *crt, size_t crt_size);
 void psa_adac_platform_init(void);
diff --git a/target/trusted-firmware-m/platform/arm/musca_b1/psa_adac_platform.c b/target/trusted-firmware-m/platform/arm/musca_b1/psa_adac_platform.c
index 156feb2..0556bb9 100644
--- a/target/trusted-firmware-m/platform/arm/musca_b1/psa_adac_platform.c
+++ b/target/trusted-firmware-m/platform/arm/musca_b1/psa_adac_platform.c
@@ -46,7 +46,7 @@
     return 0;
 }
 
-void psa_adac_platform_lock(void)
+void psa_adac_close_session(void)
 {
     /* TODO: Code me */
 }
@@ -56,6 +56,11 @@
     /* TODO: Code me */
 }
 
+void psa_adac_platform_lock(void)
+{
+    /* TODO: Code me */
+}
+
 adac_status_t psa_adac_change_life_cycle_state(uint8_t *input, size_t input_size)
 {
     /* TODO: Code me */
diff --git a/target/trusted-firmware-m/platform/arm/rse/common/include/platform/platform.h b/target/trusted-firmware-m/platform/arm/rse/common/include/platform/platform.h
index 44ab710..57044f0 100644
--- a/target/trusted-firmware-m/platform/arm/rse/common/include/platform/platform.h
+++ b/target/trusted-firmware-m/platform/arm/rse/common/include/platform/platform.h
@@ -27,8 +27,9 @@
 
 void platform_init(void);
 adac_status_t psa_adac_change_life_cycle_state(uint8_t *input, size_t input_size);
-void psa_adac_platform_lock(void);
+void psa_adac_close_session(void);
 void psa_adac_resume(void);
+void psa_adac_platform_lock(void);
 int psa_adac_platform_check_token(uint8_t *token, size_t token_size);
 int psa_adac_platform_check_certificate(uint8_t *crt, size_t crt_size);
 void psa_adac_platform_init(void);
diff --git a/target/trusted-firmware-m/platform/arm/rse/common/psa_adac_platform.c b/target/trusted-firmware-m/platform/arm/rse/common/psa_adac_platform.c
index bc75846..2712cf9 100644
--- a/target/trusted-firmware-m/platform/arm/rse/common/psa_adac_platform.c
+++ b/target/trusted-firmware-m/platform/arm/rse/common/psa_adac_platform.c
@@ -58,7 +58,7 @@
     return ADAC_UNSUPPORTED;
 }
 
-void psa_adac_platform_lock(void)
+void psa_adac_close_session(void)
 {
     /* TODO: Code me */
 }
@@ -68,6 +68,11 @@
     /* TODO: Code me */
 }
 
+void psa_adac_platform_lock(void)
+{
+    /* TODO: Code me */
+}
+
 int psa_adac_platform_check_token(uint8_t *token, size_t token_size)
 {
     /* TODO: Code me */
diff --git a/template_hal_files/target_name.c b/template_hal_files/target_name.c
index eb70cab..8704bd3 100644
--- a/template_hal_files/target_name.c
+++ b/template_hal_files/target_name.c
@@ -28,7 +28,7 @@
     return ADAC_UNSUPPORTED;
 }
 
-void psa_adac_platform_lock(void)
+void psa_adac_close_session(void)
 {
     /* TODO: Code me */
 }
@@ -38,6 +38,11 @@
     /* TODO: Code me */
 }
 
+void psa_adac_platform_lock(void)
+{
+    /* TODO: Code me */
+}
+
 int psa_adac_platform_check_token(uint8_t *token, size_t token_size)
 {
     /* TODO: Code me */