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

Unified Diff: chromeos/cryptohome/cryptohome_parameters.cc

Issue 526353002: Merge cryptohome::RetrievedKeyData with cryptohome::KeyDefinition (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@d_2_367847_add_get_key_data_ex_to_mount_flow
Patch Set: Rebased. Created 6 years, 3 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/cryptohome/cryptohome_parameters.h ('k') | chromeos/cryptohome/homedir_methods.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chromeos/cryptohome/cryptohome_parameters.cc
diff --git a/chromeos/cryptohome/cryptohome_parameters.cc b/chromeos/cryptohome/cryptohome_parameters.cc
index 41246f37e0e8640ba0cba2a94caa0bd0d31a85bd..d784d4e22265c68d7a24ddd0a014f591400dc035 100644
--- a/chromeos/cryptohome/cryptohome_parameters.cc
+++ b/chromeos/cryptohome/cryptohome_parameters.cc
@@ -15,25 +15,135 @@ bool Identification::operator==(const Identification& other) const {
return user_id == other.user_id;
}
-KeyDefinition::KeyDefinition(const std::string& key,
+KeyDefinition::AuthorizationData::Secret::Secret() : encrypt(false),
+ sign(false),
+ wrapped(false) {
+}
+
+KeyDefinition::AuthorizationData::Secret::Secret(
+ bool encrypt,
+ bool sign,
+ const std::string& symmetric_key,
+ const std::string& public_key,
+ bool wrapped)
+ : encrypt(encrypt),
+ sign(sign),
+ symmetric_key(symmetric_key),
+ public_key(public_key),
+ wrapped(wrapped) {
+}
+
+bool KeyDefinition::AuthorizationData::Secret::operator==(
+ const Secret& other) const {
+ return encrypt == other.encrypt &&
+ sign == other.sign &&
+ symmetric_key == other.symmetric_key &&
+ public_key == other.public_key &&
+ wrapped == other.wrapped;
+}
+
+KeyDefinition::AuthorizationData::AuthorizationData() : type(TYPE_HMACSHA256) {
+}
+
+KeyDefinition::AuthorizationData::AuthorizationData(
+ bool encrypt,
+ bool sign,
+ const std::string& symmetric_key) : type(TYPE_HMACSHA256) {
+ secrets.push_back(Secret(encrypt,
+ sign,
+ symmetric_key,
+ std::string() /* public_key */,
+ false /* wrapped */));
+}
+
+
+KeyDefinition::AuthorizationData::~AuthorizationData() {
+}
+
+bool KeyDefinition::AuthorizationData::operator==(
+ const AuthorizationData& other) const {
+ if (type != other.type || secrets.size() != other.secrets.size())
+ return false;
+ for (size_t i = 0; i < secrets.size(); ++i) {
+ if (!(secrets[i] == other.secrets[i]))
+ return false;
+ }
+ return true;
+}
+
+KeyDefinition::ProviderData::ProviderData() {
+}
+
+KeyDefinition::ProviderData::ProviderData(const std::string& name)
+ : name(name) {
+}
+
+KeyDefinition::ProviderData::ProviderData(const ProviderData& other)
+ : name(other.name) {
+ if (other.number)
+ number.reset(new int64(*other.number));
+ if (other.bytes)
+ bytes.reset(new std::string(*other.bytes));
+}
+
+void KeyDefinition::ProviderData::operator=(const ProviderData& other) {
+ name = other.name;
+ number.reset(other.number ? new int64(*other.number) : NULL);
+ bytes.reset(other.bytes ? new std::string(*other.bytes) : NULL);
+}
+
+KeyDefinition::ProviderData::~ProviderData() {
+}
+
+bool KeyDefinition::ProviderData::operator==(const ProviderData& other) const {
+ const bool has_number = number;
+ const bool other_has_number = other.number;
+ const bool has_bytes = bytes;
+ const bool other_has_bytes = other.bytes;
+ return name == other.name &&
+ has_number == other_has_number &&
+ has_bytes == other_has_bytes &&
+ (!has_number || (*number == *other.number)) &&
+ (!has_bytes || (*bytes == *other.bytes));
+}
+
+KeyDefinition::KeyDefinition() : type(TYPE_PASSWORD),
+ privileges(0),
+ revision(0) {
+}
+
+KeyDefinition::KeyDefinition(const std::string& secret,
const std::string& label,
int /*AuthKeyPrivileges*/ privileges)
- : label(label),
- revision(1),
- key(key),
- privileges(privileges) {
+ : type(TYPE_PASSWORD),
+ label(label),
+ privileges(privileges),
+ revision(0),
+ secret(secret) {
}
KeyDefinition::~KeyDefinition() {
}
bool KeyDefinition::operator==(const KeyDefinition& other) const {
- return label == other.label &&
- revision == other.revision &&
- key == other.key &&
- encryption_key == other.encryption_key &&
- signature_key == other.signature_key &&
- privileges == other.privileges;
+ if (type != other.type ||
+ label != other.label ||
+ privileges != other.privileges ||
+ revision != other.revision ||
+ authorization_data.size() != other.authorization_data.size() ||
+ provider_data.size() != other.provider_data.size()) {
+ return false;
+ }
+
+ for (size_t i = 0; i < authorization_data.size(); ++i) {
+ if (!(authorization_data[i] == other.authorization_data[i]))
+ return false;
+ }
+ for (size_t i = 0; i < provider_data.size(); ++i) {
+ if (!(provider_data[i] == other.provider_data[i]))
+ return false;
+ }
+ return true;
}
Authorization::Authorization(const std::string& key, const std::string& label)
@@ -42,7 +152,7 @@ Authorization::Authorization(const std::string& key, const std::string& label)
}
Authorization::Authorization(const KeyDefinition& key_def)
- : key(key_def.key),
+ : key(key_def.secret),
label(key_def.label) {
}
@@ -50,24 +160,6 @@ bool Authorization::operator==(const Authorization& other) const {
return key == other.key && label == other.label;
}
-RetrievedKeyData::ProviderData::ProviderData(const std::string& name)
- : name(name) {
-}
-
-RetrievedKeyData::ProviderData::~ProviderData() {
-}
-
-RetrievedKeyData::RetrievedKeyData(Type type,
- const std::string& label,
- int64 revision) : type(type),
- label(label),
- privileges(0),
- revision(revision) {
-}
-
-RetrievedKeyData::~RetrievedKeyData() {
-}
-
MountParameters::MountParameters(bool ephemeral) : ephemeral(ephemeral) {
}
« no previous file with comments | « chromeos/cryptohome/cryptohome_parameters.h ('k') | chromeos/cryptohome/homedir_methods.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698