diff options
-rw-r--r-- | net/base/x509_certificate.h | 6 | ||||
-rw-r--r-- | net/http/http_network_transaction.cc | 4 |
2 files changed, 7 insertions, 3 deletions
diff --git a/net/base/x509_certificate.h b/net/base/x509_certificate.h index cdadf54..b50a406 100644 --- a/net/base/x509_certificate.h +++ b/net/base/x509_certificate.h @@ -5,6 +5,8 @@ #ifndef NET_BASE_X509_CERTIFICATE_H_ #define NET_BASE_X509_CERTIFICATE_H_ +#include <string.h> + #include <map> #include <set> #include <string> @@ -36,6 +38,10 @@ class X509Certificate : public base::RefCountedThreadSafe<X509Certificate> { public: // SHA-1 fingerprint (160 bits) of a certificate. struct Fingerprint { + bool operator==(const Fingerprint& other) const { + return memcmp(data, other.data, sizeof(data)) == 0; + } + unsigned char data[20]; }; diff --git a/net/http/http_network_transaction.cc b/net/http/http_network_transaction.cc index 3d7b700..c1a654f 100644 --- a/net/http/http_network_transaction.cc +++ b/net/http/http_network_transaction.cc @@ -1342,9 +1342,7 @@ int HttpNetworkTransaction::HandleCertificateRequest(int error) { const std::vector<scoped_refptr<X509Certificate> >& client_certs = response_.cert_request_info->client_certs; for (size_t i = 0; i < client_certs.size(); ++i) { - if (memcmp(&client_cert->fingerprint(), - &client_certs[i]->fingerprint(), - sizeof(X509Certificate::Fingerprint)) == 0) { + if (client_cert->fingerprint() == client_certs[i]->fingerprint()) { ssl_config_.client_cert = client_cert; ssl_config_.send_client_cert = true; next_state_ = STATE_INIT_CONNECTION; |