Index: chrome/browser/chromeos/certificate_provider/certificate_provider_service_factory.cc |
diff --git a/chrome/browser/chromeos/certificate_provider/certificate_provider_service_factory.cc b/chrome/browser/chromeos/certificate_provider/certificate_provider_service_factory.cc |
index eec8b3bf2483b30e2f303a1158e9857ef021862d..a8b6095b9add9e68b7294763644e846023a75e40 100644 |
--- a/chrome/browser/chromeos/certificate_provider/certificate_provider_service_factory.cc |
+++ b/chrome/browser/chromeos/certificate_provider/certificate_provider_service_factory.cc |
@@ -14,6 +14,7 @@ |
#include "base/memory/ptr_util.h" |
#include "base/memory/ref_counted.h" |
#include "base/memory/singleton.h" |
+#include "base/rand_util.h" |
#include "base/values.h" |
#include "chrome/browser/chromeos/certificate_provider/certificate_provider_service.h" |
#include "chrome/browser/profiles/incognito_helpers.h" |
@@ -112,6 +113,13 @@ bool DefaultDelegate::DispatchSignRequestToExtension( |
return false; |
api_cp::SignRequest request; |
+ uint64_t sign_request_id = base::RandUint64(); |
+ // If we hit the improbable case when generated ID exists already, we |
+ // generate another ID. |
+ while (!service_->AddSignRequestId(sign_request_id)) { |
+ sign_request_id = base::RandUint64(); |
+ } |
stevenjb
2016/08/09 21:04:39
Why use random numbers here instead of an increasi
igorcov1
2016/08/10 18:05:03
Security reasons. If an extension would know what'
|
+ request.sign_request_id = sign_request_id; |
switch (hash) { |
case net::SSLPrivateKey::Hash::MD5_SHA1: |
request.hash = api_cp::HASH_MD5_SHA1; |