diff options
-rw-r--r-- | gatekeeper.cpp | 11 | ||||
-rw-r--r-- | include/gatekeeper/gatekeeper.h | 14 |
2 files changed, 22 insertions, 3 deletions
diff --git a/gatekeeper.cpp b/gatekeeper.cpp index 436ae81..57be100 100644 --- a/gatekeeper.cpp +++ b/gatekeeper.cpp @@ -163,13 +163,18 @@ void GateKeeper::Verify(const VerifyRequest &request, VerifyResponse *response) } } -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 @@ protected: 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 |