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

Side by Side Diff: chrome/browser/chromeos/platform_keys/platform_keys_service.cc

Issue 884073002: Implement chrome.platformKeys.getKeyPair(). (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@cert_impl2
Patch Set: Rebased. Created 5 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 unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/chromeos/platform_keys/platform_keys_service.h" 5 #include "chrome/browser/chromeos/platform_keys/platform_keys_service.h"
6 6
7 #include "base/base64.h" 7 #include "base/base64.h"
8 #include "base/callback.h" 8 #include "base/callback.h"
9 #include "base/values.h" 9 #include "base/values.h"
10 #include "chrome/browser/chromeos/platform_keys/platform_keys.h" 10 #include "chrome/browser/chromeos/platform_keys/platform_keys.h"
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
63 browser_context); 63 browser_context);
64 } 64 }
65 65
66 } // namespace 66 } // namespace
67 67
68 PlatformKeysService::PlatformKeysService( 68 PlatformKeysService::PlatformKeysService(
69 content::BrowserContext* browser_context, 69 content::BrowserContext* browser_context,
70 extensions::StateStore* state_store) 70 extensions::StateStore* state_store)
71 : browser_context_(browser_context), 71 : browser_context_(browser_context),
72 state_store_(state_store), 72 state_store_(state_store),
73 permission_check_disabled_(false),
73 weak_factory_(this) { 74 weak_factory_(this) {
74 DCHECK(state_store); 75 DCHECK(state_store);
75 } 76 }
76 77
77 PlatformKeysService::~PlatformKeysService() { 78 PlatformKeysService::~PlatformKeysService() {
78 } 79 }
79 80
81 void PlatformKeysService::DisablePermissionCheckForTesting() {
82 permission_check_disabled_ = true;
83 }
84
80 void PlatformKeysService::GenerateRSAKey(const std::string& token_id, 85 void PlatformKeysService::GenerateRSAKey(const std::string& token_id,
81 unsigned int modulus_length, 86 unsigned int modulus_length,
82 const std::string& extension_id, 87 const std::string& extension_id,
83 const GenerateKeyCallback& callback) { 88 const GenerateKeyCallback& callback) {
84 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 89 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
85 90
86 platform_keys::subtle::GenerateRSAKey( 91 platform_keys::subtle::GenerateRSAKey(
87 token_id, 92 token_id,
88 modulus_length, 93 modulus_length,
89 base::Bind(&PlatformKeysService::GenerateRSAKeyCallback, 94 base::Bind(&PlatformKeysService::GenerateRSAKeyCallback,
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after
206 211
207 void PlatformKeysService::InvalidateKey( 212 void PlatformKeysService::InvalidateKey(
208 const std::string& extension_id, 213 const std::string& extension_id,
209 const std::string& public_key_spki_der, 214 const std::string& public_key_spki_der,
210 const base::Callback<void(bool)>& callback, 215 const base::Callback<void(bool)>& callback,
211 scoped_ptr<base::ListValue> platform_keys) { 216 scoped_ptr<base::ListValue> platform_keys) {
212 scoped_ptr<base::StringValue> key_value( 217 scoped_ptr<base::StringValue> key_value(
213 GetPublicKeyValue(public_key_spki_der)); 218 GetPublicKeyValue(public_key_spki_der));
214 219
215 size_t index = 0; 220 size_t index = 0;
216 if (!platform_keys->Remove(*key_value, &index)) { 221 if (!platform_keys->Remove(*key_value, &index) &&
222 !permission_check_disabled_) {
Ryan Sleevi 2015/02/03 01:44:50 I've read this code multiple times and I'm still c
pneubeck (no reviews) 2015/02/03 20:15:00 reordered to make it clearer.
217 // The key is not found, so it's not valid to use it for signing. 223 // The key is not found, so it's not valid to use it for signing.
218 callback.Run(false); 224 callback.Run(false);
219 return; 225 return;
220 } 226 }
221 227
222 SetPlatformKeysOfExtension(extension_id, platform_keys.Pass()); 228 SetPlatformKeysOfExtension(extension_id, platform_keys.Pass());
223 callback.Run(true); 229 callback.Run(true);
224 } 230 }
225 231
226 void PlatformKeysService::GotPlatformKeysOfExtension( 232 void PlatformKeysService::GotPlatformKeysOfExtension(
227 const std::string& extension_id, 233 const std::string& extension_id,
228 const GetPlatformKeysCallback& callback, 234 const GetPlatformKeysCallback& callback,
229 scoped_ptr<base::Value> value) { 235 scoped_ptr<base::Value> value) {
230 if (!value) 236 if (!value)
231 value.reset(new base::ListValue); 237 value.reset(new base::ListValue);
232 238
233 base::ListValue* keys = NULL; 239 base::ListValue* keys = NULL;
234 if (!value->GetAsList(&keys)) { 240 if (!value->GetAsList(&keys)) {
235 LOG(ERROR) << "Found a value of wrong type."; 241 LOG(ERROR) << "Found a value of wrong type.";
236 242
237 keys = new base::ListValue; 243 keys = new base::ListValue;
238 value.reset(keys); 244 value.reset(keys);
239 } 245 }
240 246
241 ignore_result(value.release()); 247 ignore_result(value.release());
242 callback.Run(make_scoped_ptr(keys)); 248 callback.Run(make_scoped_ptr(keys));
243 } 249 }
244 250
245 } // namespace chromeos 251 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698