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

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

Issue 2898573002: Refactor client cert private key handling. (Closed)
Patch Set: rebase on https://codereview.chromium.org/2899083006/ Created 3 years, 7 months 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
« no previous file with comments | « net/ssl/client_cert_store_mac.cc ('k') | net/ssl/client_cert_store_nss.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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_mac.h" 5 #include "net/ssl/client_cert_store_mac.h"
6 6
7 #include "base/memory/ptr_util.h"
8 #include "net/ssl/client_cert_identity_test_util.h"
7 #include "net/ssl/client_cert_store_unittest-inl.h" 9 #include "net/ssl/client_cert_store_unittest-inl.h"
8 10
9 namespace net { 11 namespace net {
10 12
11 class ClientCertStoreMacTestDelegate { 13 class ClientCertStoreMacTestDelegate {
12 public: 14 public:
13 bool SelectClientCerts(const CertificateList& input_certs, 15 bool SelectClientCerts(const CertificateList& input_certs,
14 const SSLCertRequestInfo& cert_request_info, 16 const SSLCertRequestInfo& cert_request_info,
15 CertificateList* selected_certs) { 17 ClientCertIdentityList* selected_certs) {
18 ClientCertIdentityList input_identities;
19 for (const auto& cert : input_certs)
20 input_identities.push_back(
21 base::MakeUnique<FakeClientCertIdentity>(cert));
16 return store_.SelectClientCertsForTesting( 22 return store_.SelectClientCertsForTesting(
17 input_certs, cert_request_info, selected_certs); 23 std::move(input_identities), cert_request_info, selected_certs);
18 } 24 }
19 25
20 private: 26 private:
21 ClientCertStoreMac store_; 27 ClientCertStoreMac store_;
22 }; 28 };
23 29
24 INSTANTIATE_TYPED_TEST_CASE_P(Mac, 30 INSTANTIATE_TYPED_TEST_CASE_P(Mac,
25 ClientCertStoreTest, 31 ClientCertStoreTest,
26 ClientCertStoreMacTestDelegate); 32 ClientCertStoreMacTestDelegate);
27 33
28 class ClientCertStoreMacTest : public ::testing::Test { 34 class ClientCertStoreMacTest : public ::testing::Test {
29 protected: 35 protected:
30 bool SelectClientCertsGivenPreferred( 36 bool SelectClientCertsGivenPreferred(
31 const scoped_refptr<X509Certificate>& preferred_cert, 37 const scoped_refptr<X509Certificate>& preferred_cert,
32 const CertificateList& regular_certs, 38 const CertificateList& regular_certs,
33 const SSLCertRequestInfo& request, 39 const SSLCertRequestInfo& request,
34 CertificateList* selected_certs) { 40 ClientCertIdentityList* selected_certs) {
41 std::unique_ptr<ClientCertIdentity> preferred_identity(
42 base::MakeUnique<FakeClientCertIdentity>(preferred_cert));
43
44 ClientCertIdentityList regular_identities;
45 for (const auto& cert : regular_certs)
46 regular_identities.push_back(
47 base::MakeUnique<FakeClientCertIdentity>(cert));
48
35 return store_.SelectClientCertsGivenPreferredForTesting( 49 return store_.SelectClientCertsGivenPreferredForTesting(
36 preferred_cert, regular_certs, request, selected_certs); 50 std::move(preferred_identity), std::move(regular_identities), request,
51 selected_certs);
37 } 52 }
38 53
39 private: 54 private:
40 ClientCertStoreMac store_; 55 ClientCertStoreMac store_;
41 }; 56 };
42 57
43 // Verify that the preferred cert gets filtered out when it doesn't match the 58 // Verify that the preferred cert gets filtered out when it doesn't match the
44 // server criteria. 59 // server criteria.
45 TEST_F(ClientCertStoreMacTest, FilterOutThePreferredCert) { 60 TEST_F(ClientCertStoreMacTest, FilterOutThePreferredCert) {
46 scoped_refptr<X509Certificate> cert_1( 61 scoped_refptr<X509Certificate> cert_1(
47 ImportCertFromFile(GetTestCertsDirectory(), "client_1.pem")); 62 ImportCertFromFile(GetTestCertsDirectory(), "client_1.pem"));
48 ASSERT_TRUE(cert_1.get()); 63 ASSERT_TRUE(cert_1.get());
49 64
50 std::vector<std::string> authority_2( 65 std::vector<std::string> authority_2(
51 1, std::string(reinterpret_cast<const char*>(kAuthority2DN), 66 1, std::string(reinterpret_cast<const char*>(kAuthority2DN),
52 sizeof(kAuthority2DN))); 67 sizeof(kAuthority2DN)));
53 EXPECT_FALSE(cert_1->IsIssuedByEncoded(authority_2)); 68 EXPECT_FALSE(cert_1->IsIssuedByEncoded(authority_2));
54 69
55 std::vector<scoped_refptr<X509Certificate> > certs; 70 std::vector<scoped_refptr<X509Certificate> > certs;
56 scoped_refptr<SSLCertRequestInfo> request(new SSLCertRequestInfo()); 71 scoped_refptr<SSLCertRequestInfo> request(new SSLCertRequestInfo());
57 request->cert_authorities = authority_2; 72 request->cert_authorities = authority_2;
58 73
59 std::vector<scoped_refptr<X509Certificate> > selected_certs; 74 ClientCertIdentityList selected_certs;
60 bool rv = SelectClientCertsGivenPreferred( 75 bool rv = SelectClientCertsGivenPreferred(
61 cert_1, certs, *request.get(), &selected_certs); 76 cert_1, certs, *request.get(), &selected_certs);
62 EXPECT_TRUE(rv); 77 EXPECT_TRUE(rv);
63 EXPECT_EQ(0u, selected_certs.size()); 78 EXPECT_EQ(0u, selected_certs.size());
64 } 79 }
65 80
66 // Verify that the preferred cert takes the first position in the output list, 81 // Verify that the preferred cert takes the first position in the output list,
67 // when it does not get filtered out. 82 // when it does not get filtered out.
68 TEST_F(ClientCertStoreMacTest, PreferredCertGoesFirst) { 83 TEST_F(ClientCertStoreMacTest, PreferredCertGoesFirst) {
69 scoped_refptr<X509Certificate> cert_1( 84 scoped_refptr<X509Certificate> cert_1(
70 ImportCertFromFile(GetTestCertsDirectory(), "client_1.pem")); 85 ImportCertFromFile(GetTestCertsDirectory(), "client_1.pem"));
71 ASSERT_TRUE(cert_1.get()); 86 ASSERT_TRUE(cert_1.get());
72 scoped_refptr<X509Certificate> cert_2( 87 scoped_refptr<X509Certificate> cert_2(
73 ImportCertFromFile(GetTestCertsDirectory(), "client_2.pem")); 88 ImportCertFromFile(GetTestCertsDirectory(), "client_2.pem"));
74 ASSERT_TRUE(cert_2.get()); 89 ASSERT_TRUE(cert_2.get());
75 90
76 std::vector<scoped_refptr<X509Certificate> > certs; 91 std::vector<scoped_refptr<X509Certificate> > certs;
77 certs.push_back(cert_2); 92 certs.push_back(cert_2);
78 scoped_refptr<SSLCertRequestInfo> request(new SSLCertRequestInfo()); 93 scoped_refptr<SSLCertRequestInfo> request(new SSLCertRequestInfo());
79 94
80 std::vector<scoped_refptr<X509Certificate> > selected_certs; 95 ClientCertIdentityList selected_certs;
81 bool rv = SelectClientCertsGivenPreferred( 96 bool rv = SelectClientCertsGivenPreferred(
82 cert_1, certs, *request.get(), &selected_certs); 97 cert_1, certs, *request.get(), &selected_certs);
83 EXPECT_TRUE(rv); 98 EXPECT_TRUE(rv);
84 ASSERT_EQ(2u, selected_certs.size()); 99 ASSERT_EQ(2u, selected_certs.size());
85 EXPECT_TRUE(selected_certs[0]->Equals(cert_1.get())); 100 EXPECT_TRUE(selected_certs[0]->certificate()->Equals(cert_1.get()));
86 EXPECT_TRUE(selected_certs[1]->Equals(cert_2.get())); 101 EXPECT_TRUE(selected_certs[1]->certificate()->Equals(cert_2.get()));
87 } 102 }
88 103
89 } // namespace net 104 } // namespace net
OLDNEW
« no previous file with comments | « net/ssl/client_cert_store_mac.cc ('k') | net/ssl/client_cert_store_nss.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698