| 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 "chrome/common/net/x509_certificate_model.h" | 5 #include "chrome/common/net/x509_certificate_model.h" |
| 6 | 6 |
| 7 #include "base/file_path.h" | 7 #include "base/file_path.h" |
| 8 #include "base/file_util.h" | 8 #include "base/file_util.h" |
| 9 #include "base/path_service.h" | 9 #include "base/path_service.h" |
| 10 #include "net/base/cert_database.h" | |
| 11 #include "net/base/cert_test_util.h" | 10 #include "net/base/cert_test_util.h" |
| 11 #include "net/base/nss_cert_database.h" |
| 12 #include "testing/gtest/include/gtest/gtest.h" | 12 #include "testing/gtest/include/gtest/gtest.h" |
| 13 | 13 |
| 14 TEST(X509CertificateModelTest, GetTypeCA) { | 14 TEST(X509CertificateModelTest, GetTypeCA) { |
| 15 scoped_refptr<net::X509Certificate> cert( | 15 scoped_refptr<net::X509Certificate> cert( |
| 16 net::ImportCertFromFile(net::GetTestCertsDirectory(), | 16 net::ImportCertFromFile(net::GetTestCertsDirectory(), |
| 17 "root_ca_cert.crt")); | 17 "root_ca_cert.crt")); |
| 18 ASSERT_TRUE(cert.get()); | 18 ASSERT_TRUE(cert.get()); |
| 19 | 19 |
| 20 #if defined(USE_OPENSSL) | 20 #if defined(USE_OPENSSL) |
| 21 // Remove this when OpenSSL build implements the necessary functions. | 21 // Remove this when OpenSSL build implements the necessary functions. |
| 22 EXPECT_EQ(net::UNKNOWN_CERT, | 22 EXPECT_EQ(net::UNKNOWN_CERT, |
| 23 x509_certificate_model::GetType(cert->os_cert_handle())); | 23 x509_certificate_model::GetType(cert->os_cert_handle())); |
| 24 #else | 24 #else |
| 25 EXPECT_EQ(net::CA_CERT, | 25 EXPECT_EQ(net::CA_CERT, |
| 26 x509_certificate_model::GetType(cert->os_cert_handle())); | 26 x509_certificate_model::GetType(cert->os_cert_handle())); |
| 27 | 27 |
| 28 // Test that explicitly distrusted CA certs are still returned as CA_CERT | 28 // Test that explicitly distrusted CA certs are still returned as CA_CERT |
| 29 // type. See http://crbug.com/96654. | 29 // type. See http://crbug.com/96654. |
| 30 net::CertDatabase cert_db; | 30 net::NSSCertDatabase cert_db; |
| 31 EXPECT_TRUE(cert_db.SetCertTrust(cert, net::CA_CERT, | 31 EXPECT_TRUE(cert_db.SetCertTrust(cert, net::CA_CERT, |
| 32 net::CertDatabase::DISTRUSTED_SSL)); | 32 net::NSSCertDatabase::DISTRUSTED_SSL)); |
| 33 | 33 |
| 34 EXPECT_EQ(net::CA_CERT, | 34 EXPECT_EQ(net::CA_CERT, |
| 35 x509_certificate_model::GetType(cert->os_cert_handle())); | 35 x509_certificate_model::GetType(cert->os_cert_handle())); |
| 36 #endif | 36 #endif |
| 37 } | 37 } |
| 38 | 38 |
| 39 TEST(X509CertificateModelTest, GetTypeServer) { | 39 TEST(X509CertificateModelTest, GetTypeServer) { |
| 40 scoped_refptr<net::X509Certificate> cert( | 40 scoped_refptr<net::X509Certificate> cert( |
| 41 net::ImportCertFromFile(net::GetTestCertsDirectory(), | 41 net::ImportCertFromFile(net::GetTestCertsDirectory(), |
| 42 "google.single.der")); | 42 "google.single.der")); |
| 43 ASSERT_TRUE(cert.get()); | 43 ASSERT_TRUE(cert.get()); |
| 44 | 44 |
| 45 #if defined(USE_OPENSSL) | 45 #if defined(USE_OPENSSL) |
| 46 // Remove this when OpenSSL build implements the necessary functions. | 46 // Remove this when OpenSSL build implements the necessary functions. |
| 47 EXPECT_EQ(net::UNKNOWN_CERT, | 47 EXPECT_EQ(net::UNKNOWN_CERT, |
| 48 x509_certificate_model::GetType(cert->os_cert_handle())); | 48 x509_certificate_model::GetType(cert->os_cert_handle())); |
| 49 #else | 49 #else |
| 50 // Test mozilla_security_manager::GetCertType with server certs and default | 50 // Test mozilla_security_manager::GetCertType with server certs and default |
| 51 // trust. Currently this doesn't work. | 51 // trust. Currently this doesn't work. |
| 52 // TODO(mattm): make mozilla_security_manager::GetCertType smarter so we can | 52 // TODO(mattm): make mozilla_security_manager::GetCertType smarter so we can |
| 53 // tell server certs even if they have no trust bits set. | 53 // tell server certs even if they have no trust bits set. |
| 54 EXPECT_EQ(net::UNKNOWN_CERT, | 54 EXPECT_EQ(net::UNKNOWN_CERT, |
| 55 x509_certificate_model::GetType(cert->os_cert_handle())); | 55 x509_certificate_model::GetType(cert->os_cert_handle())); |
| 56 | 56 |
| 57 net::CertDatabase cert_db; | 57 net::NSSCertDatabase cert_db; |
| 58 // Test GetCertType with server certs and explicit trust. | 58 // Test GetCertType with server certs and explicit trust. |
| 59 EXPECT_TRUE(cert_db.SetCertTrust(cert, net::SERVER_CERT, | 59 EXPECT_TRUE(cert_db.SetCertTrust(cert, net::SERVER_CERT, |
| 60 net::CertDatabase::TRUSTED_SSL)); | 60 net::NSSCertDatabase::TRUSTED_SSL)); |
| 61 | 61 |
| 62 EXPECT_EQ(net::SERVER_CERT, | 62 EXPECT_EQ(net::SERVER_CERT, |
| 63 x509_certificate_model::GetType(cert->os_cert_handle())); | 63 x509_certificate_model::GetType(cert->os_cert_handle())); |
| 64 | 64 |
| 65 // Test GetCertType with server certs and explicit distrust. | 65 // Test GetCertType with server certs and explicit distrust. |
| 66 EXPECT_TRUE(cert_db.SetCertTrust(cert, net::SERVER_CERT, | 66 EXPECT_TRUE(cert_db.SetCertTrust(cert, net::SERVER_CERT, |
| 67 net::CertDatabase::DISTRUSTED_SSL)); | 67 net::NSSCertDatabase::DISTRUSTED_SSL)); |
| 68 | 68 |
| 69 EXPECT_EQ(net::SERVER_CERT, | 69 EXPECT_EQ(net::SERVER_CERT, |
| 70 x509_certificate_model::GetType(cert->os_cert_handle())); | 70 x509_certificate_model::GetType(cert->os_cert_handle())); |
| 71 #endif | 71 #endif |
| 72 } | 72 } |
| 73 | 73 |
| 74 // An X.509 v1 certificate with the version field omitted should get | 74 // An X.509 v1 certificate with the version field omitted should get |
| 75 // the default value v1. | 75 // the default value v1. |
| 76 TEST(X509CertificateModelTest, GetVersionOmitted) { | 76 TEST(X509CertificateModelTest, GetVersionOmitted) { |
| 77 scoped_refptr<net::X509Certificate> cert( | 77 scoped_refptr<net::X509Certificate> cert( |
| 78 net::ImportCertFromFile(net::GetTestCertsDirectory(), | 78 net::ImportCertFromFile(net::GetTestCertsDirectory(), |
| 79 "ndn.ca.crt")); | 79 "ndn.ca.crt")); |
| 80 ASSERT_TRUE(cert.get()); | 80 ASSERT_TRUE(cert.get()); |
| 81 | 81 |
| 82 EXPECT_EQ("1", x509_certificate_model::GetVersion(cert->os_cert_handle())); | 82 EXPECT_EQ("1", x509_certificate_model::GetVersion(cert->os_cert_handle())); |
| 83 } | 83 } |
| OLD | NEW |