summaryrefslogtreecommitdiffstats
path: root/net/ssl/server_bound_cert_service.cc
diff options
context:
space:
mode:
Diffstat (limited to 'net/ssl/server_bound_cert_service.cc')
-rw-r--r--net/ssl/server_bound_cert_service.cc69
1 files changed, 24 insertions, 45 deletions
diff --git a/net/ssl/server_bound_cert_service.cc b/net/ssl/server_bound_cert_service.cc
index bf77719..bed97cf 100644
--- a/net/ssl/server_bound_cert_service.cc
+++ b/net/ssl/server_bound_cert_service.cc
@@ -46,27 +46,11 @@ bool IsSupportedCertType(uint8 type) {
switch(type) {
case CLIENT_CERT_ECDSA_SIGN:
return true;
- // If we add any more supported types, CertIsValid will need to be updated
- // to check that the returned type matches one of the requested types.
default:
return false;
}
}
-bool CertIsValid(const std::string& domain,
- SSLClientCertType type,
- base::Time expiration_time) {
- if (expiration_time < base::Time::Now()) {
- DVLOG(1) << "Cert store had expired cert for " << domain;
- return false;
- } else if (!IsSupportedCertType(type)) {
- DVLOG(1) << "Cert store had cert of wrong type " << type << " for "
- << domain;
- return false;
- }
- return true;
-}
-
// Used by the GetDomainBoundCertResult histogram to record the final
// outcome of each GetDomainBoundCert call. Do not re-use values.
enum GetCertResult {
@@ -415,7 +399,7 @@ ServerBoundCertService::ServerBoundCertService(
inflight_joins_(0) {
base::Time start = base::Time::Now();
base::Time end = start + base::TimeDelta::FromDays(
- kValidityPeriodInDays + kSystemTimeValidityBufferInDays);
+ kValidityPeriodInDays + kSystemTimeValidityBufferInDays);
is_system_time_valid_ = x509_util::IsSupportedValidityRange(start, end);
}
@@ -507,32 +491,30 @@ int ServerBoundCertService::GetDomainBoundCert(
}
// Check if a domain bound cert of an acceptable type already exists for this
- // domain, and that it has not expired.
+ // domain. Note that |expiration_time| is ignored, and expired certs are
+ // considered valid.
base::Time expiration_time;
if (server_bound_cert_store_->GetServerBoundCert(
domain,
type,
- &expiration_time,
+ &expiration_time /* ignored */,
private_key,
cert,
base::Bind(&ServerBoundCertService::GotServerBoundCert,
weak_ptr_factory_.GetWeakPtr()))) {
- if (*type != CLIENT_CERT_INVALID_TYPE) {
- // Sync lookup found a cert.
- if (CertIsValid(domain, *type, expiration_time)) {
- DVLOG(1) << "Cert store had valid cert for " << domain
- << " of type " << *type;
- cert_store_hits_++;
- RecordGetDomainBoundCertResult(SYNC_SUCCESS);
- base::TimeDelta request_time = base::TimeTicks::Now() - request_start;
- UMA_HISTOGRAM_TIMES("DomainBoundCerts.GetCertTimeSync", request_time);
- RecordGetCertTime(request_time);
- return OK;
- }
+ if (IsSupportedCertType(*type)) {
+ // Sync lookup found a valid cert.
+ DVLOG(1) << "Cert store had valid cert for " << domain
+ << " of type " << *type;
+ cert_store_hits_++;
+ RecordGetDomainBoundCertResult(SYNC_SUCCESS);
+ base::TimeDelta request_time = base::TimeTicks::Now() - request_start;
+ UMA_HISTOGRAM_TIMES("DomainBoundCerts.GetCertTimeSync", request_time);
+ RecordGetCertTime(request_time);
+ return OK;
}
- // Sync lookup did not find a cert, or it found an expired one. Start
- // generating a new one.
+ // Sync lookup did not find a valid cert. Start generating a new one.
ServerBoundCertServiceWorker* worker = new ServerBoundCertServiceWorker(
domain,
preferred_type,
@@ -577,20 +559,17 @@ void ServerBoundCertService::GotServerBoundCert(
}
ServerBoundCertServiceJob* job = j->second;
- if (type != CLIENT_CERT_INVALID_TYPE) {
- // Async DB lookup found a cert.
- if (CertIsValid(server_identifier, type, expiration_time)) {
- DVLOG(1) << "Cert store had valid cert for " << server_identifier
- << " of type " << type;
- cert_store_hits_++;
- // ServerBoundCertServiceRequest::Post will do the histograms and stuff.
- HandleResult(OK, server_identifier, type, key, cert);
- return;
- }
+ if (IsSupportedCertType(type)) {
+ // Async DB lookup found a valid cert.
+ DVLOG(1) << "Cert store had valid cert for " << server_identifier
+ << " of type " << type;
+ cert_store_hits_++;
+ // ServerBoundCertServiceRequest::Post will do the histograms and stuff.
+ HandleResult(OK, server_identifier, type, key, cert);
+ return;
}
- // Async lookup did not find a cert, or it found an expired one. Start
- // generating a new one.
+ // Async lookup did not find a valid cert. Start generating a new one.
ServerBoundCertServiceWorker* worker = new ServerBoundCertServiceWorker(
server_identifier,
job->type(),