Index: chromeos/cryptohome/homedir_methods.cc |
diff --git a/chromeos/cryptohome/homedir_methods.cc b/chromeos/cryptohome/homedir_methods.cc |
index 73a741b51c111289c845252eba7f96420a89beff..3f80453a40206fd190210ef25de1cc42cf67f654 100644 |
--- a/chromeos/cryptohome/homedir_methods.cc |
+++ b/chromeos/cryptohome/homedir_methods.cc |
@@ -44,20 +44,36 @@ void FillKeyProtobuf(const KeyDefinition& key_def, Key* key) { |
PRIV_AUTHORIZED_UPDATE); |
} |
- if (key_def.encryption_key.empty() && key_def.signature_key.empty()) |
- return; |
- |
- KeyAuthorizationData* auth_data = data->add_authorization_data(); |
- auth_data->set_type(KeyAuthorizationData::KEY_AUTHORIZATION_TYPE_HMACSHA256); |
- if (!key_def.encryption_key.empty()) { |
- KeyAuthorizationSecret* secret = auth_data->add_secrets(); |
- secret->mutable_usage()->set_encrypt(true); |
- secret->set_symmetric_key(key_def.encryption_key); |
+ const bool has_auth_data = |
+ !key_def.encryption_key.empty() || !key_def.signature_key.empty(); |
+ if (has_auth_data) { |
+ KeyAuthorizationData* auth_data = data->add_authorization_data(); |
+ auth_data->set_type( |
+ KeyAuthorizationData::KEY_AUTHORIZATION_TYPE_HMACSHA256); |
+ if (!key_def.encryption_key.empty()) { |
+ KeyAuthorizationSecret* secret = auth_data->add_secrets(); |
+ secret->mutable_usage()->set_encrypt(true); |
+ secret->set_symmetric_key(key_def.encryption_key); |
+ } |
+ if (!key_def.signature_key.empty()) { |
+ KeyAuthorizationSecret* secret = auth_data->add_secrets(); |
+ secret->mutable_usage()->set_sign(true); |
+ secret->set_symmetric_key(key_def.signature_key); |
+ } |
} |
Darren Krahn
2014/09/12 16:35:17
Also collides with https://codereview.chromium.org
xiyuan
2014/09/12 19:10:12
Rebased.
|
- if (!key_def.signature_key.empty()) { |
- KeyAuthorizationSecret* secret = auth_data->add_secrets(); |
- secret->mutable_usage()->set_sign(true); |
- secret->set_symmetric_key(key_def.signature_key); |
+ |
+ if (!key_def.provider_data.empty()) { |
+ KeyProviderData* provider_data = data->mutable_provider_data(); |
+ for (size_t i = 0; i < key_def.provider_data.size(); ++i) { |
+ const ProviderDataEntry& entry_data = key_def.provider_data[i]; |
+ |
+ KeyProviderData_Entry* entry = provider_data->add_entry(); |
+ entry->set_name(entry_data.name); |
+ if (entry_data.has_number) |
+ entry->set_number(entry_data.number); |
+ if (entry_data.has_bytes) |
+ entry->set_bytes(entry_data.bytes); |
+ } |
} |
} |
@@ -329,22 +345,20 @@ class HomedirMethodsImpl : public HomedirMethods { |
++provider_data_it) { |
// Extract |name|. |
key_data->provider_data.push_back( |
- new RetrievedKeyData::ProviderData(provider_data_it->name())); |
- RetrievedKeyData::ProviderData* provider_data = |
- key_data->provider_data.back(); |
+ ProviderDataEntry(provider_data_it->name())); |
+ ProviderDataEntry* provider_data = &key_data->provider_data.back(); |
int data_items = 0; |
// Extract |number|. |
if (provider_data_it->has_number()) { |
- provider_data->number.reset(new int64(provider_data_it->number())); |
+ provider_data->SetNumber(provider_data_it->number()); |
++data_items; |
} |
// Extract |bytes|. |
if (provider_data_it->has_bytes()) { |
- provider_data->bytes.reset( |
- new std::string(provider_data_it->bytes())); |
+ provider_data->SetBytes(provider_data_it->bytes()); |
++data_items; |
} |