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

Unified Diff: chrome/renderer/origin_trials/origin_trial_key_manager.cc

Issue 1737693002: Allow command-line arguments to override EF public key (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix use-after-free due to StringPiece shared state Created 4 years, 10 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
Index: chrome/renderer/origin_trials/origin_trial_key_manager.cc
diff --git a/chrome/renderer/origin_trials/origin_trial_key_manager.cc b/chrome/renderer/origin_trials/origin_trial_key_manager.cc
index e074f40af6a0e872d56f0867998f1cdc5d932d91..8f6beb5ac0a95ef411803122d4f67ef2d5f9d4ca 100644
--- a/chrome/renderer/origin_trials/origin_trial_key_manager.cc
+++ b/chrome/renderer/origin_trials/origin_trial_key_manager.cc
@@ -6,18 +6,35 @@
#include <stdint.h>
+#include "base/base64.h"
+
// This is the default public key used for validating signatures.
// TODO(iclelland): Provide a mechanism to allow for multiple signing keys.
// https://crbug.com/584737
-// TODO(iclelland): Provide a mechanism to override, replace or disable this key
-// with field trials.
-static const uint8_t kPublicKey[] = {
+static const uint8_t kDefaultPublicKey[] = {
0x7c, 0xc4, 0xb8, 0x9a, 0x93, 0xba, 0x6e, 0xe2, 0xd0, 0xfd, 0x03,
0x1d, 0xfb, 0x32, 0x66, 0xc7, 0x3b, 0x72, 0xfd, 0x54, 0x3a, 0x07,
0x51, 0x14, 0x66, 0xaa, 0x02, 0x53, 0x4e, 0x33, 0xa1, 0x15,
};
-base::StringPiece OriginTrialKeyManager::GetPublicKey() {
- return base::StringPiece(reinterpret_cast<const char*>(kPublicKey),
- arraysize(kPublicKey));
+OriginTrialKeyManager::OriginTrialKeyManager()
+ : public_key_(std::string(reinterpret_cast<const char*>(kDefaultPublicKey),
+ arraysize(kDefaultPublicKey))) {}
+
+OriginTrialKeyManager::~OriginTrialKeyManager() {}
+
+bool OriginTrialKeyManager::SetPublicKeyFromASCIIString(
+ const std::string& ascii_public_key) {
+ // Base64-decode the incoming string. Set the key if it is correctly formatted
+ std::string new_public_key;
+ if (!base::Base64Decode(ascii_public_key, &new_public_key))
+ return false;
+ if (new_public_key.size() != 32)
+ return false;
+ public_key_.swap(new_public_key);
+ return true;
+}
+
+base::StringPiece OriginTrialKeyManager::GetPublicKey() const {
+ return base::StringPiece(public_key_);
}

Powered by Google App Engine
This is Rietveld 408576698