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

Side by Side Diff: net/ssl/client_cert_store_impl_nss.cc

Issue 42773002: Get ClientCertStore through ResourceContext. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: changes for comment #7 Created 7 years, 1 month 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "net/ssl/client_cert_store_impl.h" 5 #include "net/ssl/client_cert_store_impl.h"
6 6
7 #include <nss.h> 7 #include <nss.h>
8 #include <ssl.h> 8 #include <ssl.h>
9 9
10 #include "base/callback.h"
10 #include "base/logging.h" 11 #include "base/logging.h"
11 #include "net/cert/x509_util.h" 12 #include "net/cert/x509_util.h"
12 13
13 namespace net { 14 namespace net {
14 15
15 namespace { 16 namespace {
16 17
17 // Examines the certificates in |cert_list| to find all certificates that match 18 // Examines the certificates in |cert_list| to find all certificates that match
18 // the client certificate request in |request|, storing the matching 19 // the client certificate request in |request|, storing the matching
19 // certificates in |selected_certs|. 20 // certificates in |selected_certs|.
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
70 } 71 }
71 } 72 }
72 73
73 std::sort(selected_certs->begin(), selected_certs->end(), 74 std::sort(selected_certs->begin(), selected_certs->end(),
74 x509_util::ClientCertSorter()); 75 x509_util::ClientCertSorter());
75 return true; 76 return true;
76 } 77 }
77 78
78 } // namespace 79 } // namespace
79 80
80 bool ClientCertStoreImpl::GetClientCerts(const SSLCertRequestInfo& request, 81 void ClientCertStoreImpl::GetClientCerts(const SSLCertRequestInfo& request,
81 CertificateList* selected_certs) { 82 CertificateList* selected_certs,
83 const base::Closure& callback) {
82 CERTCertList* client_certs = CERT_FindUserCertsByUsage( 84 CERTCertList* client_certs = CERT_FindUserCertsByUsage(
83 CERT_GetDefaultCertDB(), certUsageSSLClient, 85 CERT_GetDefaultCertDB(), certUsageSSLClient,
84 PR_FALSE, PR_FALSE, NULL); 86 PR_FALSE, PR_FALSE, NULL);
85 // It is ok for a user not to have any client certs. 87 // It is ok for a user not to have any client certs.
86 if (!client_certs) 88 if (!client_certs) {
87 return true; 89 selected_certs->clear();
90 callback.Run();
91 return;
92 }
88 93
89 bool rv = GetClientCertsImpl(client_certs, request, true, selected_certs); 94 GetClientCertsImpl(client_certs, request, true, selected_certs);
90 CERT_DestroyCertList(client_certs); 95 CERT_DestroyCertList(client_certs);
91 return rv; 96 callback.Run();
92 } 97 }
93 98
94 bool ClientCertStoreImpl::SelectClientCertsForTesting( 99 bool ClientCertStoreImpl::SelectClientCertsForTesting(
95 const CertificateList& input_certs, 100 const CertificateList& input_certs,
96 const SSLCertRequestInfo& request, 101 const SSLCertRequestInfo& request,
97 CertificateList* selected_certs) { 102 CertificateList* selected_certs) {
98 CERTCertList* cert_list = CERT_NewCertList(); 103 CERTCertList* cert_list = CERT_NewCertList();
99 if (!cert_list) 104 if (!cert_list)
100 return false; 105 return false;
101 for (size_t i = 0; i < input_certs.size(); ++i) { 106 for (size_t i = 0; i < input_certs.size(); ++i) {
102 CERT_AddCertToListTail( 107 CERT_AddCertToListTail(
103 cert_list, CERT_DupCertificate(input_certs[i]->os_cert_handle())); 108 cert_list, CERT_DupCertificate(input_certs[i]->os_cert_handle()));
104 } 109 }
105 110
106 bool rv = GetClientCertsImpl(cert_list, request, false, selected_certs); 111 bool rv = GetClientCertsImpl(cert_list, request, false, selected_certs);
107 CERT_DestroyCertList(cert_list); 112 CERT_DestroyCertList(cert_list);
108 return rv; 113 return rv;
109 } 114 }
110 115
111 } // namespace net 116 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698