Index: remoting/host/token_validator_base.cc |
diff --git a/remoting/host/token_validator_base.cc b/remoting/host/token_validator_base.cc |
index 41aeec5516df4e4600d98822bba95d29fa1fb77b..be12f6aaf185a619fcf796abc56ffdd1c05820a0 100644 |
--- a/remoting/host/token_validator_base.cc |
+++ b/remoting/host/token_validator_base.cc |
@@ -30,7 +30,6 @@ |
#include "net/ssl/client_cert_store_mac.h" |
#endif |
#include "net/ssl/ssl_cert_request_info.h" |
-#include "net/ssl/ssl_platform_key.h" |
#include "net/ssl/ssl_private_key.h" |
#include "net/url_request/redirect_info.h" |
#include "net/url_request/url_request.h" |
@@ -50,7 +49,7 @@ const char kCertIssuerWildCard[] = "*"; |
// * |now| is within [valid_start, valid_expiry]. |
bool IsCertificateValid(const std::string& issuer, |
const base::Time& now, |
- const scoped_refptr<net::X509Certificate>& cert) { |
+ const net::X509Certificate* cert) { |
return (issuer == kCertIssuerWildCard || |
issuer == cert->issuer().common_name) && |
cert->valid_start() <= now && cert->valid_expiry() > now; |
@@ -67,8 +66,11 @@ bool IsCertificateValid(const std::string& issuer, |
// |valid_expiry| is worse. |
bool WorseThan(const std::string& issuer, |
const base::Time& now, |
- const scoped_refptr<net::X509Certificate>& c1, |
- const scoped_refptr<net::X509Certificate>& c2) { |
+ const std::unique_ptr<net::ClientCertIdentity>& i1, |
+ const std::unique_ptr<net::ClientCertIdentity>& i2) { |
+ net::X509Certificate* c1 = i1->certificate(); |
+ net::X509Certificate* c2 = i2->certificate(); |
+ |
if (!IsCertificateValid(issuer, now, c2)) |
return false; |
@@ -210,7 +212,7 @@ void TokenValidatorBase::OnCertificateRequested( |
void TokenValidatorBase::OnCertificatesSelected( |
net::ClientCertStore* unused, |
- net::CertificateList selected_certs) { |
+ net::ClientCertIdentityList selected_certs) { |
const std::string& issuer = |
third_party_auth_config_.token_validation_cert_issuer; |
@@ -222,18 +224,21 @@ void TokenValidatorBase::OnCertificatesSelected( |
std::placeholders::_2)); |
if (best_match_position == selected_certs.end() || |
- !IsCertificateValid(issuer, now, *best_match_position)) { |
+ !IsCertificateValid(issuer, now, (*best_match_position)->certificate())) { |
ContinueWithCertificate(nullptr, nullptr); |
} else { |
- ContinueWithCertificate( |
- best_match_position->get(), |
- net::FetchClientCertPrivateKey(best_match_position->get()).get()); |
+ scoped_refptr<net::X509Certificate> cert = |
+ (*best_match_position)->certificate(); |
+ net::ClientCertIdentity::SelfOwningAcquirePrivateKey( |
+ std::move(*best_match_position), |
+ base::Bind(&TokenValidatorBase::ContinueWithCertificate, |
+ weak_factory_.GetWeakPtr(), std::move(cert))); |
} |
} |
void TokenValidatorBase::ContinueWithCertificate( |
- net::X509Certificate* client_cert, |
- net::SSLPrivateKey* client_private_key) { |
+ scoped_refptr<net::X509Certificate> client_cert, |
+ scoped_refptr<net::SSLPrivateKey> client_private_key) { |
if (request_) { |
if (client_cert) { |
HOST_LOG << "Using certificate issued by: '" |
@@ -242,7 +247,8 @@ void TokenValidatorBase::ContinueWithCertificate( |
<< client_cert->valid_expiry() << "'"; |
} |
- request_->ContinueWithCertificate(client_cert, client_private_key); |
+ request_->ContinueWithCertificate(std::move(client_cert), |
+ std::move(client_private_key)); |
} |
} |