Implement DeleteUser/DeleteAllUsers am: 8d7cafed36 am: cd38d34d68

Original change: https://android-review.googlesource.com/c/platform/system/gatekeeper/+/1567641

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: I22412cf9ed203646a9e7856150f75fe0f24741d3
diff --git a/gatekeeper.cpp b/gatekeeper.cpp
index 436ae81..57be100 100644
--- a/gatekeeper.cpp
+++ b/gatekeeper.cpp
@@ -163,13 +163,18 @@
     }
 }
 
-void GateKeeper::DeleteUser(const DeleteUserRequest &/*request*/, DeleteUserResponse *response) {
-    response->error = ERROR_NOT_IMPLEMENTED;
+void GateKeeper::DeleteUser(const DeleteUserRequest &request, DeleteUserResponse *response) {
+    if (response == nullptr) return;
+
+    uint32_t uid = request.user_id;
+    response->error = RemoveUser(uid);
 }
 
 void GateKeeper::DeleteAllUsers(const DeleteAllUsersRequest &/*request*/,
         DeleteAllUsersResponse *response) {
-    response->error = ERROR_NOT_IMPLEMENTED;
+    if (response == nullptr) return;
+
+    response->error = RemoveAllUsers();
 }
 
 bool GateKeeper::CreatePasswordHandle(SizedBuffer *password_handle_buffer, salt_t salt,
diff --git a/include/gatekeeper/gatekeeper.h b/include/gatekeeper/gatekeeper.h
index 9f70d6f..62f0b34 100644
--- a/include/gatekeeper/gatekeeper.h
+++ b/include/gatekeeper/gatekeeper.h
@@ -117,6 +117,20 @@
     virtual uint64_t GetMillisecondsSinceBoot() const = 0;
 
     /**
+     * Removes all records for the given user.
+     *
+     * Returns true if the user's records were successfully deleted.
+     */
+    virtual gatekeeper_error_t RemoveUser(uint32_t /* uid */) { return ERROR_NOT_IMPLEMENTED; }
+
+    /**
+     * Removes all records.
+     *
+     * Returns true if the records were successfully deleted.
+     */
+    virtual gatekeeper_error_t RemoveAllUsers() { return ERROR_NOT_IMPLEMENTED; }
+
+    /**
      * Returns the value of the current failure record for the user.
      *
      * The failure record should be written to hardware-backed secure storage, such as