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

Unified Diff: net/base/origin_bound_cert_service.cc

Issue 9617039: Change Origin bound certs -> Domain bound certs. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: explanitory comment Created 8 years, 9 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: net/base/origin_bound_cert_service.cc
diff --git a/net/base/origin_bound_cert_service.cc b/net/base/origin_bound_cert_service.cc
index 8901e26b9c2a031a83fdb283eb4e862b016527c9..1177c396bbe7c0dbc80afb67006d071dd8cf2e6f 100644
--- a/net/base/origin_bound_cert_service.cc
+++ b/net/base/origin_bound_cert_service.cc
@@ -19,6 +19,7 @@
#include "base/stl_util.h"
#include "base/threading/worker_pool.h"
#include "crypto/ec_private_key.h"
+#include "googleurl/src/gurl.h"
#include "net/base/net_errors.h"
#include "net/base/origin_bound_cert_store.h"
#include "net/base/registry_controlled_domain.h"
@@ -98,10 +99,10 @@ class OriginBoundCertServiceRequest {
class OriginBoundCertServiceWorker {
public:
OriginBoundCertServiceWorker(
- const std::string& origin,
+ const std::string& domain,
SSLClientCertType type,
OriginBoundCertService* origin_bound_cert_service)
- : origin_(origin),
+ : domain_(domain),
type_(type),
serial_number_(base::RandInt(0, std::numeric_limits<int>::max())),
origin_loop_(MessageLoop::current()),
@@ -130,7 +131,7 @@ class OriginBoundCertServiceWorker {
private:
void Run() {
// Runs on a worker thread.
- error_ = OriginBoundCertService::GenerateCert(origin_,
+ error_ = OriginBoundCertService::GenerateCert(domain_,
type_,
serial_number_,
&creation_time_,
@@ -161,7 +162,7 @@ class OriginBoundCertServiceWorker {
base::AutoLock locked(lock_);
if (!canceled_) {
origin_bound_cert_service_->HandleResult(
- origin_, error_, type_, creation_time_, expiration_time_,
+ domain_, error_, type_, creation_time_, expiration_time_,
private_key_, cert_);
}
}
@@ -193,7 +194,7 @@ class OriginBoundCertServiceWorker {
delete this;
}
- const std::string origin_;
+ const std::string domain_;
const SSLClientCertType type_;
// Note that serial_number_ must be initialized on a non-worker thread
// (see documentation for OriginBoundCertService::GenerateCert).
@@ -320,6 +321,8 @@ int OriginBoundCertService::GetOriginBoundCert(
return ERR_INVALID_ARGUMENT;
}
+ std::string domain = GetDomainForHost(GURL(origin).host());
wtc 2012/03/08 02:13:45 Should we also check domain.empty()? See the orig
mattm 2012/03/15 01:48:44 Done.
+
SSLClientCertType preferred_type = CLIENT_CERT_INVALID_TYPE;
for (size_t i = 0; i < requested_types.size(); ++i) {
if (IsSupportedCertType(requested_types[i])) {
@@ -334,35 +337,35 @@ int OriginBoundCertService::GetOriginBoundCert(
requests_++;
- // Check if an origin bound cert of an acceptable type already exists for this
- // origin, and that it has not expired.
+ // Check if a domain bound cert of an acceptable type already exists for this
+ // domain, and that it has not expired.
base::Time now = base::Time::Now();
base::Time creation_time;
base::Time expiration_time;
- if (origin_bound_cert_store_->GetOriginBoundCert(origin,
+ if (origin_bound_cert_store_->GetOriginBoundCert(domain,
type,
&creation_time,
&expiration_time,
private_key,
cert)) {
if (expiration_time < now) {
- DVLOG(1) << "Cert store had expired cert for " << origin;
+ DVLOG(1) << "Cert store had expired cert for " << domain;
} else if (!IsSupportedCertType(*type) ||
std::find(requested_types.begin(), requested_types.end(),
*type) == requested_types.end()) {
DVLOG(1) << "Cert store had cert of wrong type " << *type << " for "
- << origin;
+ << domain;
} else {
cert_store_hits_++;
return OK;
}
}
- // |origin_bound_cert_store_| has no cert for this origin. See if an
+ // |origin_bound_cert_store_| has no cert for this domain. See if an
// identical request is currently in flight.
OriginBoundCertServiceJob* job = NULL;
std::map<std::string, OriginBoundCertServiceJob*>::const_iterator j;
- j = inflight_.find(origin);
+ j = inflight_.find(domain);
if (j != inflight_.end()) {
// An identical request is in flight already. We'll just attach our
// callback.
@@ -371,10 +374,10 @@ int OriginBoundCertService::GetOriginBoundCert(
if (std::find(requested_types.begin(), requested_types.end(), job->type())
== requested_types.end()) {
DVLOG(1) << "Found inflight job of wrong type " << job->type()
- << " for " << origin;
+ << " for " << domain;
// If we get here, the server is asking for different types of certs in
// short succession. This probably means the server is broken or
- // misconfigured. Since we only store one type of cert per origin, we
+ // misconfigured. Since we only store one type of cert per domain, we
// are unable to handle this well. Just return an error and let the first
// job finish.
return ERR_ORIGIN_BOUND_CERT_GENERATION_TYPE_MISMATCH;
@@ -383,7 +386,7 @@ int OriginBoundCertService::GetOriginBoundCert(
} else {
// Need to make a new request.
OriginBoundCertServiceWorker* worker = new OriginBoundCertServiceWorker(
- origin,
+ domain,
preferred_type,
this);
job = new OriginBoundCertServiceJob(worker, preferred_type);
@@ -394,7 +397,7 @@ int OriginBoundCertService::GetOriginBoundCert(
LOG(ERROR) << "OriginBoundCertServiceWorker couldn't be started.";
return ERR_INSUFFICIENT_RESOURCES; // Just a guess.
}
- inflight_[origin] = job;
+ inflight_[domain] = job;
}
OriginBoundCertServiceRequest* request =
@@ -409,7 +412,7 @@ OriginBoundCertStore* OriginBoundCertService::GetCertStore() {
}
// static
-int OriginBoundCertService::GenerateCert(const std::string& origin,
+int OriginBoundCertService::GenerateCert(const std::string& domain,
SSLClientCertType type,
uint32 serial_number,
base::Time* creation_time,
@@ -430,7 +433,7 @@ int OriginBoundCertService::GenerateCert(const std::string& origin,
}
if (!x509_util::CreateOriginBoundCertEC(
key.get(),
- origin,
+ domain,
serial_number,
now,
not_valid_after,
@@ -471,7 +474,7 @@ void OriginBoundCertService::CancelRequest(RequestHandle req) {
// HandleResult is called by OriginBoundCertServiceWorker on the origin message
// loop. It deletes OriginBoundCertServiceJob.
-void OriginBoundCertService::HandleResult(const std::string& origin,
+void OriginBoundCertService::HandleResult(const std::string& domain,
int error,
SSLClientCertType type,
base::Time creation_time,
@@ -481,10 +484,10 @@ void OriginBoundCertService::HandleResult(const std::string& origin,
DCHECK(CalledOnValidThread());
origin_bound_cert_store_->SetOriginBoundCert(
- origin, type, creation_time, expiration_time, private_key, cert);
+ domain, type, creation_time, expiration_time, private_key, cert);
std::map<std::string, OriginBoundCertServiceJob*>::iterator j;
- j = inflight_.find(origin);
+ j = inflight_.find(domain);
if (j == inflight_.end()) {
NOTREACHED();
return;

Powered by Google App Engine
This is Rietveld 408576698