Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(71)

Unified Diff: chromeos/dbus/cryptohome_client.cc

Issue 13818032: Added dbus bindings for new cryptohomed attestation APIs. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chromeos/dbus/cryptohome_client.h ('k') | chromeos/dbus/mock_cryptohome_client.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chromeos/dbus/cryptohome_client.cc
diff --git a/chromeos/dbus/cryptohome_client.cc b/chromeos/dbus/cryptohome_client.cc
index 27e8af0591d41101af51de748cbe577b1e29af4a..7bcbc4a338322360ecf7c93e424f25c5c2684537 100644
--- a/chromeos/dbus/cryptohome_client.cc
+++ b/chromeos/dbus/cryptohome_client.cc
@@ -530,10 +530,12 @@ class CryptohomeClientImpl : public CryptohomeClient {
writer.AppendBool(is_user_specific);
writer.AppendString(key_name);
writer.AppendString(domain);
- writer.AppendString(device_id);
+ writer.AppendArrayOfBytes(reinterpret_cast<const uint8*>(device_id.data()),
+ device_id.size());
bool include_signed_public_key = (options & INCLUDE_SIGNED_PUBLIC_KEY);
writer.AppendBool(include_signed_public_key);
- writer.AppendString(challenge);
+ writer.AppendArrayOfBytes(reinterpret_cast<const uint8*>(challenge.data()),
+ challenge.size());
proxy_->CallMethod(&method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT,
base::Bind(&CryptohomeClientImpl::OnAsyncMethodCall,
weak_ptr_factory_.GetWeakPtr(),
@@ -553,13 +555,50 @@ class CryptohomeClientImpl : public CryptohomeClient {
bool is_user_specific = (key_type == USER_KEY);
writer.AppendBool(is_user_specific);
writer.AppendString(key_name);
- writer.AppendString(challenge);
+ writer.AppendArrayOfBytes(reinterpret_cast<const uint8*>(challenge.data()),
+ challenge.size());
proxy_->CallMethod(&method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT,
base::Bind(&CryptohomeClientImpl::OnAsyncMethodCall,
weak_ptr_factory_.GetWeakPtr(),
callback));
}
+ // CryptohomeClient override.
+ virtual void TpmAttestationGetKeyPayload(
+ AttestationKeyType key_type,
+ const std::string& key_name,
+ const DataMethodCallback& callback) OVERRIDE {
+ dbus::MethodCall method_call(
+ cryptohome::kCryptohomeInterface,
+ cryptohome::kCryptohomeTpmAttestationGetKeyPayload);
+ dbus::MessageWriter writer(&method_call);
+ bool is_user_specific = (key_type == USER_KEY);
+ writer.AppendBool(is_user_specific);
+ writer.AppendString(key_name);
+ proxy_->CallMethod(&method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT,
+ base::Bind(&CryptohomeClientImpl::OnDataMethod,
+ weak_ptr_factory_.GetWeakPtr(),
+ callback));
+ }
+
+ // CryptohomeClient override.
+ virtual void TpmAttestationSetKeyPayload(
+ AttestationKeyType key_type,
+ const std::string& key_name,
+ const std::string& payload,
+ const BoolDBusMethodCallback& callback) OVERRIDE {
+ dbus::MethodCall method_call(
+ cryptohome::kCryptohomeInterface,
+ cryptohome::kCryptohomeTpmAttestationSetKeyPayload);
+ dbus::MessageWriter writer(&method_call);
+ bool is_user_specific = (key_type == USER_KEY);
+ writer.AppendBool(is_user_specific);
+ writer.AppendString(key_name);
+ writer.AppendArrayOfBytes(reinterpret_cast<const uint8*>(payload.data()),
+ payload.size());
+ CallBoolMethod(&method_call, callback);
+ }
+
private:
// Handles the result of AsyncXXX methods.
void OnAsyncMethodCall(const AsyncMethodCallback& callback,
@@ -654,16 +693,15 @@ class CryptohomeClientImpl : public CryptohomeClient {
return;
}
dbus::MessageReader reader(response);
+ uint8* data_buffer = NULL;
+ size_t data_length = 0;
bool result = false;
- if (!reader.PopBool(&result)) {
- callback.Run(DBUS_METHOD_CALL_FAILURE, false, std::string());
- return;
- }
- std::string data;
- if (!reader.PopString(&data)) {
+ if (!reader.PopArrayOfBytes(&data_buffer, &data_length) ||
+ !reader.PopBool(&result)) {
callback.Run(DBUS_METHOD_CALL_FAILURE, false, std::string());
return;
}
+ std::string data(reinterpret_cast<char*>(data_buffer), data_length);
callback.Run(DBUS_METHOD_CALL_SUCCESS, result, data);
}
@@ -1070,6 +1108,26 @@ class CryptohomeClientStubImpl : public CryptohomeClient {
ReturnAsyncMethodResult(callback, true);
}
+ virtual void TpmAttestationGetKeyPayload(
+ AttestationKeyType key_type,
+ const std::string& key_name,
+ const DataMethodCallback& callback) OVERRIDE {
+ MessageLoop::current()->PostTask(
+ FROM_HERE,
+ base::Bind(callback, DBUS_METHOD_CALL_SUCCESS, false, std::string()));
+ }
+
+ virtual void TpmAttestationSetKeyPayload(
+ AttestationKeyType key_type,
+ const std::string& key_name,
+ const std::string& payload,
+ const BoolDBusMethodCallback& callback) OVERRIDE {
+ MessageLoop::current()->PostTask(
+ FROM_HERE,
+ base::Bind(callback, DBUS_METHOD_CALL_SUCCESS, false));
+ }
+
+
private:
// Posts tasks which return fake results to the UI thread.
void ReturnAsyncMethodResult(const AsyncMethodCallback& callback,
« no previous file with comments | « chromeos/dbus/cryptohome_client.h ('k') | chromeos/dbus/mock_cryptohome_client.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698