vold: add support for clear key

Add support for clearing key in trustzone and ICE
when a user is deleted.

CRs-Fixed: 2334473
Change-Id: I5fd75aaa3b35145b744bed384dc3c842185ff267
diff --git a/Ext4Crypt.cpp b/Ext4Crypt.cpp
index 4b3aeb3..6b5c74d 100644
--- a/Ext4Crypt.cpp
+++ b/Ext4Crypt.cpp
@@ -483,7 +483,6 @@
 }
 
 static bool evict_ce_key(userid_t user_id) {
-    s_ce_keys.erase(user_id);
     bool success = true;
     std::string raw_ref;
     // If we haven't loaded the CE key, no need to evict it.
@@ -491,6 +490,23 @@
         success &= android::vold::evictKey(raw_ref);
         drop_caches();
     }
+
+    if(is_wrapped_key_supported()) {
+        KeyBuffer key;
+        key = s_ce_keys[user_id];
+
+        std::string keystr(key.data(), key.size());
+        Keymaster keymaster;
+
+        if (!keymaster) {
+            s_ce_keys.erase(user_id);
+            s_ce_key_raw_refs.erase(user_id);
+            return false;
+        }
+        keymaster.deleteKey(keystr);
+    }
+
+    s_ce_keys.erase(user_id);
     s_ce_key_raw_refs.erase(user_id);
     return success;
 }