Commit c170175b authored by Shaojiang's avatar Shaojiang Committed by Commit Bot

Cryptohome: add MassRemoveKeys() API on Chrome browswer side.

CQ-DEPEND=chromium:1698490

Change-Id: I15d3ee4e0e5425c34fbbbccff63c937af2e1e4ea
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1733712
Commit-Queue: Shaojiang Zhong <sjzhong@google.com>
Reviewed-by: default avatarRyo Hashimoto <hashimoto@chromium.org>
Cr-Commit-Position: refs/heads/master@{#686473}
parent ddf8dfc2
...@@ -70,6 +70,16 @@ class HomedirMethodsImpl : public HomedirMethods { ...@@ -70,6 +70,16 @@ class HomedirMethodsImpl : public HomedirMethods {
weak_ptr_factory_.GetWeakPtr(), callback)); weak_ptr_factory_.GetWeakPtr(), callback));
} }
void MassRemoveKeys(const Identification& id,
const AuthorizationRequest& auth,
const MassRemoveKeysRequest& request,
const Callback& callback) override {
chromeos::CryptohomeClient::Get()->MassRemoveKeys(
CreateAccountIdentifierFromIdentification(id), auth, request,
base::BindOnce(&HomedirMethodsImpl::OnBaseReplyCallback,
weak_ptr_factory_.GetWeakPtr(), callback));
}
private: private:
void OnBaseReplyCallback(const Callback& callback, void OnBaseReplyCallback(const Callback& callback,
base::Optional<BaseReply> reply) { base::Optional<BaseReply> reply) {
......
...@@ -62,6 +62,13 @@ class COMPONENT_EXPORT(CHROMEOS_CRYPTOHOME) HomedirMethods { ...@@ -62,6 +62,13 @@ class COMPONENT_EXPORT(CHROMEOS_CRYPTOHOME) HomedirMethods {
const RemoveKeyRequest& request, const RemoveKeyRequest& request,
const Callback& callback) = 0; const Callback& callback) = 0;
// Asks cryptohomed to remove all keys except those whose labels are exempted
// in MassRemoveKeysRequest, for the user identified by |id| using |auth|.
virtual void MassRemoveKeys(const Identification& id,
const AuthorizationRequest& auth,
const MassRemoveKeysRequest& request,
const Callback& callback) = 0;
// Creates the global HomedirMethods instance. // Creates the global HomedirMethods instance.
static void Initialize(); static void Initialize();
......
...@@ -907,6 +907,24 @@ class CryptohomeClientImpl : public CryptohomeClient { ...@@ -907,6 +907,24 @@ class CryptohomeClientImpl : public CryptohomeClient {
weak_ptr_factory_.GetWeakPtr(), std::move(callback))); weak_ptr_factory_.GetWeakPtr(), std::move(callback)));
} }
void MassRemoveKeys(
const cryptohome::AccountIdentifier& id,
const cryptohome::AuthorizationRequest& auth,
const cryptohome::MassRemoveKeysRequest& request,
DBusMethodCallback<cryptohome::BaseReply> callback) override {
const char* method_name = cryptohome::kCryptohomeMassRemoveKeys;
dbus::MethodCall method_call(cryptohome::kCryptohomeInterface, method_name);
dbus::MessageWriter writer(&method_call);
writer.AppendProtoAsArrayOfBytes(id);
writer.AppendProtoAsArrayOfBytes(auth);
writer.AppendProtoAsArrayOfBytes(request);
proxy_->CallMethod(
&method_call, kTpmDBusTimeoutMs,
base::BindOnce(&CryptohomeClientImpl::OnBaseReplyMethod,
weak_ptr_factory_.GetWeakPtr(), std::move(callback)));
}
void GetBootAttribute( void GetBootAttribute(
const cryptohome::GetBootAttributeRequest& request, const cryptohome::GetBootAttributeRequest& request,
DBusMethodCallback<cryptohome::BaseReply> callback) override { DBusMethodCallback<cryptohome::BaseReply> callback) override {
......
...@@ -30,6 +30,7 @@ class GetKeyDataRequest; ...@@ -30,6 +30,7 @@ class GetKeyDataRequest;
class GetSupportedKeyPoliciesRequest; class GetSupportedKeyPoliciesRequest;
class GetTpmStatusRequest; class GetTpmStatusRequest;
class LockToSingleUserMountUntilRebootRequest; class LockToSingleUserMountUntilRebootRequest;
class MassRemoveKeysRequest;
class MigrateKeyRequest; class MigrateKeyRequest;
class MigrateToDircryptoRequest; class MigrateToDircryptoRequest;
class MountGuestRequest; class MountGuestRequest;
...@@ -563,6 +564,16 @@ class COMPONENT_EXPORT(CRYPTOHOME_CLIENT) CryptohomeClient { ...@@ -563,6 +564,16 @@ class COMPONENT_EXPORT(CRYPTOHOME_CLIENT) CryptohomeClient {
const cryptohome::RemoveKeyRequest& request, const cryptohome::RemoveKeyRequest& request,
DBusMethodCallback<cryptohome::BaseReply> callback) = 0; DBusMethodCallback<cryptohome::BaseReply> callback) = 0;
// Asynchronously calls MassRemoveKeys method. |callback| is called after
// method call, and with reply protobuf.
// MassRemoveKeys removes all keys except those whose labels are exempted
// in MassRemoveKeysRequest.
virtual void MassRemoveKeys(
const cryptohome::AccountIdentifier& id,
const cryptohome::AuthorizationRequest& auth,
const cryptohome::MassRemoveKeysRequest& request,
DBusMethodCallback<cryptohome::BaseReply> callback) = 0;
// Asynchronously calls GetBootAttribute method. |callback| is called after // Asynchronously calls GetBootAttribute method. |callback| is called after
// method call, and with reply protobuf. // method call, and with reply protobuf.
// GetBootAttribute gets the value of the specified boot attribute. // GetBootAttribute gets the value of the specified boot attribute.
......
...@@ -668,6 +668,14 @@ void FakeCryptohomeClient::UpdateKeyEx( ...@@ -668,6 +668,14 @@ void FakeCryptohomeClient::UpdateKeyEx(
ReturnProtobufMethodCallback(cryptohome::BaseReply(), std::move(callback)); ReturnProtobufMethodCallback(cryptohome::BaseReply(), std::move(callback));
} }
void FakeCryptohomeClient::MassRemoveKeys(
const cryptohome::AccountIdentifier& cryptohome_id,
const cryptohome::AuthorizationRequest& auth,
const cryptohome::MassRemoveKeysRequest& request,
DBusMethodCallback<cryptohome::BaseReply> callback) {
ReturnProtobufMethodCallback(cryptohome::BaseReply(), std::move(callback));
}
void FakeCryptohomeClient::GetBootAttribute( void FakeCryptohomeClient::GetBootAttribute(
const cryptohome::GetBootAttributeRequest& request, const cryptohome::GetBootAttributeRequest& request,
DBusMethodCallback<cryptohome::BaseReply> callback) { DBusMethodCallback<cryptohome::BaseReply> callback) {
......
...@@ -206,6 +206,11 @@ class COMPONENT_EXPORT(CRYPTOHOME_CLIENT) FakeCryptohomeClient ...@@ -206,6 +206,11 @@ class COMPONENT_EXPORT(CRYPTOHOME_CLIENT) FakeCryptohomeClient
const cryptohome::AuthorizationRequest& auth, const cryptohome::AuthorizationRequest& auth,
const cryptohome::RemoveKeyRequest& request, const cryptohome::RemoveKeyRequest& request,
DBusMethodCallback<cryptohome::BaseReply> callback) override; DBusMethodCallback<cryptohome::BaseReply> callback) override;
void MassRemoveKeys(
const cryptohome::AccountIdentifier& cryptohome_id,
const cryptohome::AuthorizationRequest& auth,
const cryptohome::MassRemoveKeysRequest& request,
DBusMethodCallback<cryptohome::BaseReply> callback) override;
void GetBootAttribute( void GetBootAttribute(
const cryptohome::GetBootAttributeRequest& request, const cryptohome::GetBootAttributeRequest& request,
DBusMethodCallback<cryptohome::BaseReply> callback) override; DBusMethodCallback<cryptohome::BaseReply> callback) override;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment