platform: msm_shared: Add delete keys command support
When userdata partition is wiped out or flashed it is necessary
to send a delete keys command to tz.
Change-Id: Ia346fb11246ec020993e01dae09ba7476e3da0b7
diff --git a/include/km_main.h b/include/km_main.h
index 6df90d8..42920d1 100644
--- a/include/km_main.h
+++ b/include/km_main.h
@@ -140,4 +140,27 @@
int status;
}__attribute__ ((packed)) km_set_milestone_rsp_t;
+/*
+ * Structures for delete_all cmd
+ */
+/*
+ @brief
+ Data structure
+
+ @param[in] cmd_id Requested command
+*/
+typedef struct _key_op_delete_all_req_t {
+ uint32 cmd_id;
+}__attribute__ ((packed)) key_op_delete_all_req_t;
+
+/*
+ @brief
+ Data structure
+
+ @param[out] status Status of the request
+*/
+typedef struct _key_op_delete_all_rsp_t {
+ int status;
+}__attribute__ ((packed)) key_op_delete_all_rsp_t;
+
#endif /* KM_MAIN_H */
diff --git a/platform/msm_shared/include/secapp_loader.h b/platform/msm_shared/include/secapp_loader.h
index b92832f..0949562 100644
--- a/platform/msm_shared/include/secapp_loader.h
+++ b/platform/msm_shared/include/secapp_loader.h
@@ -58,5 +58,6 @@
int load_sec_app();
int get_secapp_handle();
int send_milestone_call_to_tz();
+int send_delete_keys_to_tz();
#endif /* SAL_MAIN_H */
diff --git a/platform/msm_shared/secapp_loader.c b/platform/msm_shared/secapp_loader.c
index 5538672..ad9cffd 100644
--- a/platform/msm_shared/secapp_loader.c
+++ b/platform/msm_shared/secapp_loader.c
@@ -55,6 +55,25 @@
return app_handle;
}
+int send_delete_keys_to_tz()
+{
+ int ret = 0;
+ key_op_delete_all_req_t req = {0};
+ key_op_delete_all_rsp_t rsp = {0};
+ req.cmd_id = KEYMASTER_DELETE_ALL_KEYS;
+
+ // send delete all keys command
+ ret = qseecom_send_command(app_handle, (void *)&req, sizeof(req), (void *)&rsp, sizeof(rsp));
+
+ if (ret < 0 || rsp.status < 0)
+ {
+ dprintf(CRITICAL, "Failed to send delete keys command: Error: %x\n", rsp.status);
+ return -1;
+ }
+
+ return 0;
+}
+
int send_milestone_call_to_tz()
{
int ret = 0;