Chromium Code Reviews| 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; |
| } |