| OLD | NEW |
| 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 "chromeos/network/onc/onc_certificate_importer.h" | 5 #include "chromeos/network/onc/onc_certificate_importer.h" |
| 6 | 6 |
| 7 #include <cert.h> | 7 #include <cert.h> |
| 8 #include <certdb.h> | 8 #include <certdb.h> |
| 9 #include <keyhi.h> | 9 #include <keyhi.h> |
| 10 #include <pk11pub.h> | 10 #include <pk11pub.h> |
| (...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 216 | 216 |
| 217 SECKEYPrivateKeyList* privkey_list = | 217 SECKEYPrivateKeyList* privkey_list = |
| 218 PK11_ListPrivKeysInSlot(slot_->os_module_handle(), NULL, NULL); | 218 PK11_ListPrivKeysInSlot(slot_->os_module_handle(), NULL, NULL); |
| 219 EXPECT_FALSE(privkey_list); | 219 EXPECT_FALSE(privkey_list); |
| 220 | 220 |
| 221 SECKEYPublicKeyList* pubkey_list = | 221 SECKEYPublicKeyList* pubkey_list = |
| 222 PK11_ListPublicKeysInSlot(slot_->os_module_handle(), NULL); | 222 PK11_ListPublicKeysInSlot(slot_->os_module_handle(), NULL); |
| 223 EXPECT_FALSE(pubkey_list); | 223 EXPECT_FALSE(pubkey_list); |
| 224 } | 224 } |
| 225 | 225 |
| 226 struct CertParam { |
| 227 CertParam(net::CertType certificate_type, |
| 228 const char* original_filename, |
| 229 const char* update_filename) |
| 230 : cert_type(certificate_type), |
| 231 original_file(original_filename), |
| 232 update_file(update_filename) {} |
| 233 |
| 234 net::CertType cert_type; |
| 235 const char* original_file; |
| 236 const char* update_file; |
| 237 }; |
| 238 |
| 226 class ONCCertificateImporterTestWithParam : | 239 class ONCCertificateImporterTestWithParam : |
| 227 public ONCCertificateImporterTest, | 240 public ONCCertificateImporterTest, |
| 228 public testing::WithParamInterface< | 241 public testing::WithParamInterface<CertParam> { |
| 229 std::pair<net::CertType, std::pair<const char*, const char*> > > { | |
| 230 protected: | |
| 231 net::CertType GetCertTypeParam() { | |
| 232 return GetParam().first; | |
| 233 } | |
| 234 | |
| 235 std::string GetOriginalFilename() { | |
| 236 return GetParam().second.first; | |
| 237 } | |
| 238 | |
| 239 std::string GetUpdatedFilename() { | |
| 240 return GetParam().second.second; | |
| 241 } | |
| 242 }; | 242 }; |
| 243 | 243 |
| 244 TEST_P(ONCCertificateImporterTestWithParam, UpdateCertificate) { | 244 TEST_P(ONCCertificateImporterTestWithParam, UpdateCertificate) { |
| 245 // First we import a certificate. | 245 // First we import a certificate. |
| 246 { | 246 { |
| 247 SCOPED_TRACE("Import original certificate"); | 247 SCOPED_TRACE("Import original certificate"); |
| 248 std::string guid_original; | 248 std::string guid_original; |
| 249 AddCertificateFromFile(GetOriginalFilename(), GetCertTypeParam(), | 249 AddCertificateFromFile(GetParam().original_file, GetParam().cert_type, |
| 250 &guid_original); | 250 &guid_original); |
| 251 } | 251 } |
| 252 | 252 |
| 253 // Now we import the same certificate with a different GUID. The cert should | 253 // Now we import the same certificate with a different GUID. The cert should |
| 254 // be retrievable via the new GUID. | 254 // be retrievable via the new GUID. |
| 255 { | 255 { |
| 256 SCOPED_TRACE("Import updated certificate"); | 256 SCOPED_TRACE("Import updated certificate"); |
| 257 std::string guid_updated; | 257 std::string guid_updated; |
| 258 AddCertificateFromFile(GetUpdatedFilename(), GetCertTypeParam(), | 258 AddCertificateFromFile(GetParam().update_file, GetParam().cert_type, |
| 259 &guid_updated); | 259 &guid_updated); |
| 260 } | 260 } |
| 261 } | 261 } |
| 262 | 262 |
| 263 TEST_P(ONCCertificateImporterTestWithParam, ReimportCertificate) { | 263 TEST_P(ONCCertificateImporterTestWithParam, ReimportCertificate) { |
| 264 // Verify that reimporting a client certificate works. | 264 // Verify that reimporting a client certificate works. |
| 265 for (int i = 0; i < 2; ++i) { | 265 for (int i = 0; i < 2; ++i) { |
| 266 SCOPED_TRACE("Import certificate, iteration " + base::IntToString(i)); | 266 SCOPED_TRACE("Import certificate, iteration " + base::IntToString(i)); |
| 267 | 267 |
| 268 std::string guid_original; | 268 std::string guid_original; |
| 269 AddCertificateFromFile(GetOriginalFilename(), GetCertTypeParam(), | 269 AddCertificateFromFile(GetParam().original_file, GetParam().cert_type, |
| 270 &guid_original); | 270 &guid_original); |
| 271 } | 271 } |
| 272 } | 272 } |
| 273 | 273 |
| 274 INSTANTIATE_TEST_CASE_P( | 274 INSTANTIATE_TEST_CASE_P( |
| 275 ONCCertificateImporterTestWithParam, | 275 ONCCertificateImporterTestWithParam, |
| 276 ONCCertificateImporterTestWithParam, | 276 ONCCertificateImporterTestWithParam, |
| 277 ::testing::Values( | 277 ::testing::Values( |
| 278 std::make_pair(net::USER_CERT, | 278 CertParam(net::USER_CERT, |
| 279 std::make_pair("certificate-client.onc", | 279 "certificate-client.onc", |
| 280 "certificate-client-update.onc")), | 280 "certificate-client-update.onc"), |
| 281 std::make_pair(net::SERVER_CERT, | 281 CertParam(net::SERVER_CERT, |
| 282 std::make_pair("certificate-server.onc", | 282 "certificate-server.onc", |
| 283 "certificate-server-update.onc")), | 283 "certificate-server-update.onc"), |
| 284 std::make_pair( | 284 CertParam(net::CA_CERT, |
| 285 net::CA_CERT, | 285 "certificate-web-authority.onc", |
| 286 std::make_pair("certificate-web-authority.onc", | 286 "certificate-web-authority-update.onc"))); |
| 287 "certificate-web-authority-update.onc")))); | |
| 288 | 287 |
| 289 } // namespace onc | 288 } // namespace onc |
| 290 } // namespace chromeos | 289 } // namespace chromeos |
| OLD | NEW |