summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--net/base/x509_certificate.h6
-rw-r--r--net/http/http_network_transaction.cc4
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;