OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 "chrome/browser/chromeos/cros/onc_network_parser.h" | 5 #include "chrome/browser/chromeos/cros/onc_network_parser.h" |
6 | 6 |
7 #include <cert.h> | 7 #include <cert.h> |
| 8 #include <keyhi.h> |
8 #include <pk11pub.h> | 9 #include <pk11pub.h> |
9 | 10 |
10 #include "base/lazy_instance.h" | 11 #include "base/lazy_instance.h" |
11 #include "base/scoped_temp_dir.h" | 12 #include "base/scoped_temp_dir.h" |
12 #include "base/values.h" | 13 #include "base/values.h" |
13 #include "chrome/browser/chromeos/cros/network_library.h" | 14 #include "chrome/browser/chromeos/cros/network_library.h" |
| 15 #include "chrome/browser/chromeos/system/runtime_environment.h" |
14 #include "crypto/nss_util.h" | 16 #include "crypto/nss_util.h" |
15 #include "net/base/cert_database.h" | 17 #include "net/base/cert_database.h" |
16 #include "net/base/crypto_module.h" | 18 #include "net/base/crypto_module.h" |
17 #include "net/base/x509_certificate.h" | 19 #include "net/base/x509_certificate.h" |
| 20 #include "net/base/x509_util_nss.h" |
18 #include "testing/gtest/include/gtest/gtest.h" | 21 #include "testing/gtest/include/gtest/gtest.h" |
19 | 22 |
20 namespace chromeos { | 23 namespace chromeos { |
21 | 24 |
| 25 namespace { |
| 26 const char g_token_name[] = "OncNetworkParserTest token"; |
| 27 } |
| 28 |
22 class OncNetworkParserTest : public testing::Test { | 29 class OncNetworkParserTest : public testing::Test { |
23 public: | 30 public: |
24 static void SetUpTestCase() { | 31 static void SetUpTestCase() { |
25 ASSERT_TRUE(temp_db_dir_.Get().CreateUniqueTempDir()); | 32 ASSERT_TRUE(temp_db_dir_.Get().CreateUniqueTempDir()); |
26 // Ideally, we'd open a test DB for each test case, and close it | 33 // Ideally, we'd open a test DB for each test case, and close it |
27 // again, removing the temp dir, but unfortunately, there's a | 34 // again, removing the temp dir, but unfortunately, there's a |
28 // bug in NSS that prevents this from working, so we just open | 35 // bug in NSS that prevents this from working, so we just open |
29 // it once, and empty it for each test case. Here's the bug: | 36 // it once, and empty it for each test case. Here's the bug: |
30 // https://bugzilla.mozilla.org/show_bug.cgi?id=588269 | 37 // https://bugzilla.mozilla.org/show_bug.cgi?id=588269 |
31 ASSERT_TRUE( | 38 ASSERT_TRUE( |
32 crypto::OpenTestNSSDB(temp_db_dir_.Get().path(), | 39 crypto::OpenTestNSSDB(temp_db_dir_.Get().path(), g_token_name)); |
33 "OncNetworkParserTest db")); | |
34 } | 40 } |
35 | 41 |
36 static void TearDownTestCase() { | 42 static void TearDownTestCase() { |
37 ASSERT_TRUE(temp_db_dir_.Get().Delete()); | 43 ASSERT_TRUE(temp_db_dir_.Get().Delete()); |
38 } | 44 } |
39 | 45 |
40 virtual void SetUp() { | 46 virtual void SetUp() { |
41 slot_ = cert_db_.GetPublicModule(); | 47 slot_ = cert_db_.GetPublicModule(); |
42 | 48 |
43 // Don't run the test if the setup failed. | 49 // Don't run the test if the setup failed. |
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
185 EXPECT_EQ(wifi->encryption(), chromeos::SECURITY_8021X); | 191 EXPECT_EQ(wifi->encryption(), chromeos::SECURITY_8021X); |
186 EXPECT_EQ(wifi->name(), "ssid"); | 192 EXPECT_EQ(wifi->name(), "ssid"); |
187 EXPECT_EQ(wifi->auto_connect(), false); | 193 EXPECT_EQ(wifi->auto_connect(), false); |
188 EXPECT_EQ(wifi->eap_method(), EAP_METHOD_LEAP); | 194 EXPECT_EQ(wifi->eap_method(), EAP_METHOD_LEAP); |
189 EXPECT_EQ(wifi->eap_use_system_cas(), true); | 195 EXPECT_EQ(wifi->eap_use_system_cas(), true); |
190 EXPECT_EQ(wifi->eap_identity(), "user"); | 196 EXPECT_EQ(wifi->eap_identity(), "user"); |
191 EXPECT_EQ(wifi->eap_passphrase(), "pass"); | 197 EXPECT_EQ(wifi->eap_passphrase(), "pass"); |
192 EXPECT_EQ(wifi->eap_anonymous_identity(), "anon"); | 198 EXPECT_EQ(wifi->eap_anonymous_identity(), "anon"); |
193 } | 199 } |
194 | 200 |
| 201 TEST_F(OncNetworkParserTest, TestAddClientCertificate) { |
| 202 std::string test_blob( |
| 203 "{" |
| 204 " \"Certificates\": [" |
| 205 " {" |
| 206 " \"GUID\": \"{f998f760-272b-6939-4c2beffe428697ac}\"," |
| 207 " \"Type\": \"Client\"," |
| 208 " \"PKCS12\": \"MIIGUQIBAzCCBhcGCSqGSIb3DQEHAaCCBggEggYEMII" |
| 209 "GADCCAv8GCSqGSIb3DQEHBqCCAvAwggLsAgEAMIIC5QYJKoZIhvcNAQcBMBwGCiqGSIb3" |
| 210 "DQEMAQYwDgQIHnFaWM2Y0BgCAggAgIICuG4ou9mxkhpus8WictLJe+JOnSQrdNXV3FMQr" |
| 211 "4pPJ6aJJFBMKZ80W2GpR8XNY/SSKkdaNr1puDm1bDBFGaHQuCKXYcWO8ynBQ1uoZaFaTT" |
| 212 "FxWbbHo89Jrvw+gIrgpoOHQ0KECEbh5vOZCjGHoaQb4QZOkw/6Cuc4QRoCPJAI3pbSPG4" |
| 213 "4kRbOuOaTZvBHSIPkGf3+R6byTvZ3Yiuw7IIzxUp2fYjtpCWd/NvtI70heJCWdb5hwCeN" |
| 214 "afIEpX+MTVuhUegysIFkOMMlUBIQSI5ky8kjx0Yi82BT/dpz9QgrqFL8NnTMXp0JlKFGL" |
| 215 "QwsIQhvGjw/E52fEWRy85B5eezgNsD4QOLeZkF0bQAz8kXfLi+0djxsHvH9W9X2pwaFiA" |
| 216 "veXR15/v+wfCwQGSsRhISGLzg/gO1agbQdaexI9GlEeZW0FEY7TblarKh8TVGNrauU7GC" |
| 217 "GDmD2w7wx2HTXfo9SbViFoYVKuxcrpHGGEtBffnIeAwN6BBee4v11jxv0i/QUdK5G6FbH" |
| 218 "qlD1AhHsm0YvidYKqJ0cnN262xIJH7dhKq/qUiAT+qk3+d3/obqxbvVY+bDoJQ10Gzj1A" |
| 219 "SMy4zcSL7KW1l99xxMr6OlKr4Sr23oGw4BIN73FB8S8qMzz/VzL4azDUyGpPkzWl0yXPs" |
| 220 "HpFWh1nZlsQehyknyWDH/waKrrG8tVWxHZLgq+zrFxQTh63UHXSD+TXB+AQg2xmQMeWlf" |
| 221 "vRcsKL8titZ6PnWCHTmZY+3ibv5avDsg7He6OcZOi9ZmYMx82QHuzb4aZ/T+OC05oA97n" |
| 222 "VNbTN6t8okkRtBamMvVhtTJANVpsdPi8saEaVF8e9liwmpq2w7pqXnzgdzvjSUpPAa4dZ" |
| 223 "BjWnZJvFOHuxZqiRzQdZbeh9+bXwsQJhRNe+d4EgFwuqebQOczeUi4NVTHTFiuPEjCCAv" |
| 224 "kGCSqGSIb3DQEHAaCCAuoEggLmMIIC4jCCAt4GCyqGSIb3DQEMCgECoIICpjCCAqIwHAY" |
| 225 "KKoZIhvcNAQwBAzAOBAi0znbEekG/MgICCAAEggKAJfFPaQyYYLohEA1ruAZfepwMVrR8" |
| 226 "eLMx00kkfXN9EoZeFPj2q7TGdqmbkUSqXnZK1ums7pFCPLgP1CsPlsq/4ZPDT2LLVFZNL" |
| 227 "OgmdQBOSTvycfsj0iKYrwRC55wJI2OXsc062sT7oa99apkgrEyHq7JbOhszfnv5+aVy/6" |
| 228 "O115dncqFPW2ei4CBzLEZyYa+Mka6CGqSdm97WVmv0emDKTFEP/FN4TH/tS8Qm6Y7DTKG" |
| 229 "CujC+hb6lTRFYJAD4uld132dv0xQFkwDZGfdnuGJuNZBDC0gZk3BYvOaCUD8Y9UB5IjfG" |
| 230 "Jax2yrurY1wSGSlTurafDTPrKqIdBovwCPsad2xz1YHC2Yy0h1FyR+2uitDyNfTiETfug" |
| 231 "3bFbjwodu9wmt31A2ZFn4JpUrTYoZ3LZXngC3nNTayU0Tkd1ICMep2GbCReL3ajOlgOKG" |
| 232 "FVoOm/qDnhiH6W/ebtAQXqVpuKut8uY0X0Ocmx7mTpmxlfDSRiBY9rvnrGfnpfLMxtFeF" |
| 233 "9jv3n8vSwvA0Xn0okAv1FWYLStiCpNxnD6lmXQvcmL/skAlJJpHY9/58qt/e5sGYrkKBw" |
| 234 "3jnX40zaK4W7GeJvhij0MRr6yUL2lvaEcWDnK6K1F90G/ybKRCTHBCJzyBe7yHhZCc+Zc" |
| 235 "vKK6DTi83fELTyupy08BkXt7oPdapxmKlZxTldo9FpPXSqrdRtAWhDkEkIEf8dMf8QrQr" |
| 236 "3glCWfbcQ047URYX45AHRnLTLLkJfdY8+Y3KsHoqL2UrOrct+J1u0mmnLbonN3pB2B4nd" |
| 237 "9X9vf9/uSFrgvk0iPO0Ro3UPRUIIYEP2Kx51pZZVDd++hl5gXtqe0NIpphGhxLycIdzEl" |
| 238 "MCMGCSqGSIb3DQEJFTEWBBR1uVpGjHRddIEYuJhz/FgG4Onh6jAxMCEwCQYFKw4DAhoFA" |
| 239 "AQU1M+0WRDkoVGbGg1jj7q2fI67qHIECBzRYESpgt5iAgIIAA==\"" |
| 240 " }" |
| 241 " ]," |
| 242 "}"); |
| 243 std::string test_guid("{f998f760-272b-6939-4c2beffe428697ac}"); |
| 244 OncNetworkParser parser(test_blob); |
| 245 ASSERT_EQ(1, parser.GetCertificatesSize()); |
| 246 |
| 247 scoped_refptr<net::X509Certificate> cert = parser.ParseCertificate(0).get(); |
| 248 EXPECT_TRUE(cert.get() != NULL); |
| 249 EXPECT_EQ(net::USER_CERT, net::x509_util::GetCertType(cert.get())); |
| 250 |
| 251 // We use the system NSS to set the label, and unless we're actually running |
| 252 // on a ChromeOS system with a patched NSS, it won't work. |
| 253 if (system::runtime_environment::IsRunningOnChromeOS()) { |
| 254 EXPECT_STREQ(test_guid.c_str(), |
| 255 net::x509_util::GetLabel(cert.get()).c_str()); |
| 256 net::CertificateList result_list; |
| 257 OncNetworkParser::ListCertsWithLabel(test_guid, &result_list); |
| 258 ASSERT_EQ(1ul, result_list.size()); |
| 259 EXPECT_EQ(net::USER_CERT, |
| 260 net::x509_util::GetCertType(result_list[0].get())); |
| 261 } |
| 262 SECKEYPublicKeyList* pubkey_list = |
| 263 PK11_ListPublicKeysInSlot(slot_->os_module_handle(), NULL); |
| 264 EXPECT_TRUE(pubkey_list); |
| 265 if (pubkey_list) { |
| 266 SECKEYPublicKeyListNode* node = PUBKEY_LIST_HEAD(pubkey_list); |
| 267 while (!PUBKEY_LIST_END(node, pubkey_list)) { |
| 268 EXPECT_STREQ(test_guid.c_str(), PK11_GetPublicKeyNickname(node->key)); |
| 269 node = PUBKEY_LIST_NEXT(node); |
| 270 } |
| 271 } |
| 272 SECKEY_DestroyPublicKeyList(pubkey_list); |
| 273 |
| 274 SECKEYPrivateKeyList* privkey_list = |
| 275 PK11_ListPrivKeysInSlot(slot_->os_module_handle(), NULL, NULL); |
| 276 EXPECT_TRUE(privkey_list); |
| 277 if (privkey_list) { |
| 278 SECKEYPrivateKeyListNode* node = PRIVKEY_LIST_HEAD(privkey_list); |
| 279 while (!PRIVKEY_LIST_END(node, privkey_list)) { |
| 280 EXPECT_STREQ(test_guid.c_str(), PK11_GetPrivateKeyNickname(node->key)); |
| 281 node = PRIVKEY_LIST_NEXT(node); |
| 282 } |
| 283 } |
| 284 SECKEY_DestroyPrivateKeyList(privkey_list); |
| 285 } |
| 286 |
195 TEST_F(OncNetworkParserTest, TestAddServerCertificate) { | 287 TEST_F(OncNetworkParserTest, TestAddServerCertificate) { |
196 std::string test_blob( | 288 std::string test_blob( |
197 "{" | 289 "{" |
198 " \"Certificates\": [" | 290 " \"Certificates\": [" |
199 " {" | 291 " {" |
200 " \"GUID\": \"{f998f760-272b-6939-4c2beffe428697aa}\"," | 292 " \"GUID\": \"{f998f760-272b-6939-4c2beffe428697aa}\"," |
201 " \"Type\": \"Server\"," | 293 " \"Type\": \"Server\"," |
202 " \"X509\": \"MIICWDCCAcECAxAAATANBgkqhkiG9w0BAQQFADCBkzEVM" | 294 " \"X509\": \"MIICWDCCAcECAxAAATANBgkqhkiG9w0BAQQFADCBkzEVM" |
203 "BMGA1UEChMMR29vZ2xlLCBJbmMuMREwDwYDVQQLEwhDaHJvbWVPUzEiMCAGCSqGSIb3DQ" | 295 "BMGA1UEChMMR29vZ2xlLCBJbmMuMREwDwYDVQQLEwhDaHJvbWVPUzEiMCAGCSqGSIb3DQ" |
204 "EJARYTZ3NwZW5jZXJAZ29vZ2xlLmNvbTEaMBgGA1UEBxMRTW91bnRhaW4gVmlldywgQ0E" | 296 "EJARYTZ3NwZW5jZXJAZ29vZ2xlLmNvbTEaMBgGA1UEBxMRTW91bnRhaW4gVmlldywgQ0E" |
205 "xCzAJBgNVBAgTAkNBMQswCQYDVQQGEwJVUzENMAsGA1UEAxMEbG1hbzAeFw0xMTAzMTYy" | 297 "xCzAJBgNVBAgTAkNBMQswCQYDVQQGEwJVUzENMAsGA1UEAxMEbG1hbzAeFw0xMTAzMTYy" |
206 "MzQ5MzhaFw0xMjAzMTUyMzQ5MzhaMFMxCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJDQTEVM" | 298 "MzQ5MzhaFw0xMjAzMTUyMzQ5MzhaMFMxCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJDQTEVM" |
207 "BMGA1UEChMMR29vZ2xlLCBJbmMuMREwDwYDVQQLEwhDaHJvbWVPUzENMAsGA1UEAxMEbG" | 299 "BMGA1UEChMMR29vZ2xlLCBJbmMuMREwDwYDVQQLEwhDaHJvbWVPUzENMAsGA1UEAxMEbG" |
208 "1hbzCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA31WiJ9LvprrhKtDlW0RdLFAO7Qj" | 300 "1hbzCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA31WiJ9LvprrhKtDlW0RdLFAO7Qj" |
209 "kvs+sG6j2Vp2aBSrlhALG/0BVHUhWi4F/HHJho+ncLHAg5AGO0sdAjYUdQG6tfPqjLsIA" | 301 "kvs+sG6j2Vp2aBSrlhALG/0BVHUhWi4F/HHJho+ncLHAg5AGO0sdAjYUdQG6tfPqjLsIA" |
210 "LtoKEZZdFe/JhmqOEaxWsSdu2S2RdPgCQOsP79EH58gXwu2gejCkJDmU22WL4YLuqOc17" | 302 "LtoKEZZdFe/JhmqOEaxWsSdu2S2RdPgCQOsP79EH58gXwu2gejCkJDmU22WL4YLuqOc17" |
211 "nxbDC8CAwEAATANBgkqhkiG9w0BAQQFAAOBgQCv4vMD+PMlfnftu4/6Yf/oMLE8yCOqZT" | 303 "nxbDC8CAwEAATANBgkqhkiG9w0BAQQFAAOBgQCv4vMD+PMlfnftu4/6Yf/oMLE8yCOqZT" |
212 "Q/dWCxB9PiJnOefiBeSzSZE6Uv3G7qnblZPVZaFeJMd+ostt0viCyPucFsFgLMyyoV1dM" | 304 "Q/dWCxB9PiJnOefiBeSzSZE6Uv3G7qnblZPVZaFeJMd+ostt0viCyPucFsFgLMyyoV1dM" |
213 "VPVwJT5Iq1AHehWXnTBbxUK9wioA5jOEKdroKjuSSsg/Q8Wx6cpJmttQz5olGPgstmACR" | 305 "VPVwJT5Iq1AHehWXnTBbxUK9wioA5jOEKdroKjuSSsg/Q8Wx6cpJmttQz5olGPgstmACR" |
214 "WA==\"" | 306 "WA==\"" |
215 " }" | 307 " }" |
216 " ]," | 308 " ]," |
217 "}"); | 309 "}"); |
| 310 std::string test_guid("{f998f760-272b-6939-4c2beffe428697aa}"); |
218 OncNetworkParser parser(test_blob); | 311 OncNetworkParser parser(test_blob); |
| 312 ASSERT_EQ(1, parser.GetCertificatesSize()); |
219 | 313 |
220 EXPECT_EQ(1, parser.GetCertificatesSize()); | 314 scoped_refptr<net::X509Certificate> cert = parser.ParseCertificate(0).get(); |
221 EXPECT_TRUE(parser.ParseCertificate(0)); | 315 EXPECT_TRUE(cert.get() != NULL); |
| 316 EXPECT_EQ(net::SERVER_CERT, net::x509_util::GetCertType(cert.get())); |
| 317 |
| 318 // We use the system NSS to set the label, and unless we're actually running |
| 319 // on a ChromeOS system with a patched NSS, it won't work. |
| 320 if (system::runtime_environment::IsRunningOnChromeOS()) { |
| 321 EXPECT_STREQ(test_guid.c_str(), |
| 322 net::x509_util::GetLabel(cert.get()).c_str()); |
| 323 net::CertificateList result_list; |
| 324 OncNetworkParser::ListCertsWithLabel(test_guid, &result_list); |
| 325 ASSERT_EQ(1ul, result_list.size()); |
| 326 EXPECT_EQ(net::SERVER_CERT, |
| 327 net::x509_util::GetCertType(result_list[0].get())); |
| 328 } |
| 329 |
| 330 SECKEYPrivateKeyList* privkey_list = |
| 331 PK11_ListPrivKeysInSlot(slot_->os_module_handle(), NULL, NULL); |
| 332 EXPECT_FALSE(privkey_list); |
| 333 |
| 334 SECKEYPublicKeyList* pubkey_list = |
| 335 PK11_ListPublicKeysInSlot(slot_->os_module_handle(), NULL); |
| 336 EXPECT_FALSE(pubkey_list); |
| 337 |
222 } | 338 } |
223 | 339 |
224 TEST_F(OncNetworkParserTest, TestAddAuthorityCertificate) { | 340 TEST_F(OncNetworkParserTest, TestAddAuthorityCertificate) { |
225 const std::string test_blob("{" | 341 const std::string test_blob("{" |
226 " \"Certificates\": [" | 342 " \"Certificates\": [" |
227 " {" | 343 " {" |
228 " \"GUID\": \"{f998f760-272b-6939-4c2beffe428697ab}\"," | 344 " \"GUID\": \"{f998f760-272b-6939-4c2beffe428697ab}\"," |
229 " \"Type\": \"Authority\"," | 345 " \"Type\": \"Authority\"," |
230 " \"Trust\": [\"Web\"]," | 346 " \"Trust\": [\"Web\"]," |
231 " \"X509\": \"MIIDojCCAwugAwIBAgIJAKGvi5ZgEWDVMA0GCSqGSIb3D" | 347 " \"X509\": \"MIIDojCCAwugAwIBAgIJAKGvi5ZgEWDVMA0GCSqGSIb3D" |
(...skipping 11 matching lines...) Expand all Loading... |
243 "bSkl4kpjCNuxoezFGupA97WhgZmkgZYwgZMxFTATBgNVBAoTDEdvb2dsZSwgSW5jLjERM" | 359 "bSkl4kpjCNuxoezFGupA97WhgZmkgZYwgZMxFTATBgNVBAoTDEdvb2dsZSwgSW5jLjERM" |
244 "A8GA1UECxMIQ2hyb21lT1MxIjAgBgkqhkiG9w0BCQEWE2dzcGVuY2VyQGdvb2dsZS5jb2" | 360 "A8GA1UECxMIQ2hyb21lT1MxIjAgBgkqhkiG9w0BCQEWE2dzcGVuY2VyQGdvb2dsZS5jb2" |
245 "0xGjAYBgNVBAcTEU1vdW50YWluIFZpZXcsIENBMQswCQYDVQQIEwJDQTELMAkGA1UEBhM" | 361 "0xGjAYBgNVBAcTEU1vdW50YWluIFZpZXcsIENBMQswCQYDVQQIEwJDQTELMAkGA1UEBhM" |
246 "CVVMxDTALBgNVBAMTBGxtYW+CCQChr4uWYBFg1TANBgkqhkiG9w0BAQQFAAOBgQCDq9wi" | 362 "CVVMxDTALBgNVBAMTBGxtYW+CCQChr4uWYBFg1TANBgkqhkiG9w0BAQQFAAOBgQCDq9wi" |
247 "Q4uVuf1CQU3sXfXCy1yqi5m8AsO9FxHvah5/SVFNwKllqTfedpCaWEswJ55YAojW9e+pY" | 363 "Q4uVuf1CQU3sXfXCy1yqi5m8AsO9FxHvah5/SVFNwKllqTfedpCaWEswJ55YAojW9e+pY" |
248 "2Fh3Fo/Y9YkF88KCtLuBjjqDKCRLxF4LycjHODKyQQ7mN/t5AtP9yKOsNvWF+M4IfReg5" | 364 "2Fh3Fo/Y9YkF88KCtLuBjjqDKCRLxF4LycjHODKyQQ7mN/t5AtP9yKOsNvWF+M4IfReg5" |
249 "1kohau6FauQx87by5NIRPdkNPvkQ==\"" | 365 "1kohau6FauQx87by5NIRPdkNPvkQ==\"" |
250 " }" | 366 " }" |
251 " ]," | 367 " ]," |
252 "}"); | 368 "}"); |
| 369 std::string test_guid("{f998f760-272b-6939-4c2beffe428697ab}"); |
253 OncNetworkParser parser(test_blob); | 370 OncNetworkParser parser(test_blob); |
| 371 ASSERT_EQ(1, parser.GetCertificatesSize()); |
254 | 372 |
255 EXPECT_EQ(1, parser.GetCertificatesSize()); | 373 scoped_refptr<net::X509Certificate> cert = parser.ParseCertificate(0).get(); |
256 EXPECT_TRUE(parser.ParseCertificate(0)); | 374 EXPECT_TRUE(cert.get() != NULL); |
257 } | 375 EXPECT_EQ(net::CA_CERT, net::x509_util::GetCertType(cert.get())); |
258 | 376 |
259 TEST_F(OncNetworkParserTest, TestAddClientCertificate) { | 377 // We use the system NSS to set the label, and unless we're actually running |
260 std::string test_blob( | 378 // on a ChromeOS system with a patched NSS, it won't work. |
261 "{" | 379 if (system::runtime_environment::IsRunningOnChromeOS()) { |
262 " \"Certificates\": [" | 380 EXPECT_STREQ(test_guid.c_str(), |
263 " {" | 381 net::x509_util::GetLabel(cert.get()).c_str()); |
264 " \"GUID\": \"{f998f760-272b-6939-4c2beffe428697ac}\"," | 382 net::CertificateList result_list; |
265 " \"Type\": \"Client\"," | 383 OncNetworkParser::ListCertsWithLabel(test_guid, &result_list); |
266 " \"PKCS12\": \"MIIGUQIBAzCCBhcGCSqGSIb3DQEHAaCCBggEggYEMII" | 384 ASSERT_EQ(1ul, result_list.size()); |
267 "GADCCAv8GCSqGSIb3DQEHBqCCAvAwggLsAgEAMIIC5QYJKoZIhvcNAQcBMBwGCiqGSIb3" | 385 EXPECT_EQ(net::CA_CERT, net::x509_util::GetCertType(result_list[0].get())); |
268 "DQEMAQYwDgQIHnFaWM2Y0BgCAggAgIICuG4ou9mxkhpus8WictLJe+JOnSQrdNXV3FMQr" | 386 } |
269 "4pPJ6aJJFBMKZ80W2GpR8XNY/SSKkdaNr1puDm1bDBFGaHQuCKXYcWO8ynBQ1uoZaFaTT" | |
270 "FxWbbHo89Jrvw+gIrgpoOHQ0KECEbh5vOZCjGHoaQb4QZOkw/6Cuc4QRoCPJAI3pbSPG4" | |
271 "4kRbOuOaTZvBHSIPkGf3+R6byTvZ3Yiuw7IIzxUp2fYjtpCWd/NvtI70heJCWdb5hwCeN" | |
272 "afIEpX+MTVuhUegysIFkOMMlUBIQSI5ky8kjx0Yi82BT/dpz9QgrqFL8NnTMXp0JlKFGL" | |
273 "QwsIQhvGjw/E52fEWRy85B5eezgNsD4QOLeZkF0bQAz8kXfLi+0djxsHvH9W9X2pwaFiA" | |
274 "veXR15/v+wfCwQGSsRhISGLzg/gO1agbQdaexI9GlEeZW0FEY7TblarKh8TVGNrauU7GC" | |
275 "GDmD2w7wx2HTXfo9SbViFoYVKuxcrpHGGEtBffnIeAwN6BBee4v11jxv0i/QUdK5G6FbH" | |
276 "qlD1AhHsm0YvidYKqJ0cnN262xIJH7dhKq/qUiAT+qk3+d3/obqxbvVY+bDoJQ10Gzj1A" | |
277 "SMy4zcSL7KW1l99xxMr6OlKr4Sr23oGw4BIN73FB8S8qMzz/VzL4azDUyGpPkzWl0yXPs" | |
278 "HpFWh1nZlsQehyknyWDH/waKrrG8tVWxHZLgq+zrFxQTh63UHXSD+TXB+AQg2xmQMeWlf" | |
279 "vRcsKL8titZ6PnWCHTmZY+3ibv5avDsg7He6OcZOi9ZmYMx82QHuzb4aZ/T+OC05oA97n" | |
280 "VNbTN6t8okkRtBamMvVhtTJANVpsdPi8saEaVF8e9liwmpq2w7pqXnzgdzvjSUpPAa4dZ" | |
281 "BjWnZJvFOHuxZqiRzQdZbeh9+bXwsQJhRNe+d4EgFwuqebQOczeUi4NVTHTFiuPEjCCAv" | |
282 "kGCSqGSIb3DQEHAaCCAuoEggLmMIIC4jCCAt4GCyqGSIb3DQEMCgECoIICpjCCAqIwHAY" | |
283 "KKoZIhvcNAQwBAzAOBAi0znbEekG/MgICCAAEggKAJfFPaQyYYLohEA1ruAZfepwMVrR8" | |
284 "eLMx00kkfXN9EoZeFPj2q7TGdqmbkUSqXnZK1ums7pFCPLgP1CsPlsq/4ZPDT2LLVFZNL" | |
285 "OgmdQBOSTvycfsj0iKYrwRC55wJI2OXsc062sT7oa99apkgrEyHq7JbOhszfnv5+aVy/6" | |
286 "O115dncqFPW2ei4CBzLEZyYa+Mka6CGqSdm97WVmv0emDKTFEP/FN4TH/tS8Qm6Y7DTKG" | |
287 "CujC+hb6lTRFYJAD4uld132dv0xQFkwDZGfdnuGJuNZBDC0gZk3BYvOaCUD8Y9UB5IjfG" | |
288 "Jax2yrurY1wSGSlTurafDTPrKqIdBovwCPsad2xz1YHC2Yy0h1FyR+2uitDyNfTiETfug" | |
289 "3bFbjwodu9wmt31A2ZFn4JpUrTYoZ3LZXngC3nNTayU0Tkd1ICMep2GbCReL3ajOlgOKG" | |
290 "FVoOm/qDnhiH6W/ebtAQXqVpuKut8uY0X0Ocmx7mTpmxlfDSRiBY9rvnrGfnpfLMxtFeF" | |
291 "9jv3n8vSwvA0Xn0okAv1FWYLStiCpNxnD6lmXQvcmL/skAlJJpHY9/58qt/e5sGYrkKBw" | |
292 "3jnX40zaK4W7GeJvhij0MRr6yUL2lvaEcWDnK6K1F90G/ybKRCTHBCJzyBe7yHhZCc+Zc" | |
293 "vKK6DTi83fELTyupy08BkXt7oPdapxmKlZxTldo9FpPXSqrdRtAWhDkEkIEf8dMf8QrQr" | |
294 "3glCWfbcQ047URYX45AHRnLTLLkJfdY8+Y3KsHoqL2UrOrct+J1u0mmnLbonN3pB2B4nd" | |
295 "9X9vf9/uSFrgvk0iPO0Ro3UPRUIIYEP2Kx51pZZVDd++hl5gXtqe0NIpphGhxLycIdzEl" | |
296 "MCMGCSqGSIb3DQEJFTEWBBR1uVpGjHRddIEYuJhz/FgG4Onh6jAxMCEwCQYFKw4DAhoFA" | |
297 "AQU1M+0WRDkoVGbGg1jj7q2fI67qHIECBzRYESpgt5iAgIIAA==\"" | |
298 " }" | |
299 " ]," | |
300 "}"); | |
301 OncNetworkParser parser(test_blob); | |
302 | 387 |
303 EXPECT_EQ(1, parser.GetCertificatesSize()); | 388 SECKEYPrivateKeyList* privkey_list = |
304 EXPECT_TRUE(parser.ParseCertificate(0)); | 389 PK11_ListPrivKeysInSlot(slot_->os_module_handle(), NULL, NULL); |
| 390 EXPECT_FALSE(privkey_list); |
| 391 |
| 392 SECKEYPublicKeyList* pubkey_list = |
| 393 PK11_ListPublicKeysInSlot(slot_->os_module_handle(), NULL); |
| 394 EXPECT_FALSE(pubkey_list); |
| 395 |
305 } | 396 } |
306 | 397 |
307 } // namespace chromeos | 398 } // namespace chromeos |
OLD | NEW |