| Index: content/common/common_param_traits_unittest.cc
|
| diff --git a/content/common/common_param_traits_unittest.cc b/content/common/common_param_traits_unittest.cc
|
| index c9006cf39b5f58573ce1ece582a7ab821903c291..fd6cd2af39f4fe42e9999a59126cf20945ca6af2 100644
|
| --- a/content/common/common_param_traits_unittest.cc
|
| +++ b/content/common/common_param_traits_unittest.cc
|
| @@ -13,10 +13,15 @@
|
| #include "base/macros.h"
|
| #include "base/memory/ptr_util.h"
|
| #include "base/values.h"
|
| +#include "content/common/resource_messages.h"
|
| #include "content/public/common/content_constants.h"
|
| #include "ipc/ipc_message.h"
|
| #include "ipc/ipc_message_utils.h"
|
| #include "net/base/host_port_pair.h"
|
| +#include "net/cert/ct_policy_status.h"
|
| +#include "net/ssl/ssl_info.h"
|
| +#include "net/test/cert_test_util.h"
|
| +#include "net/test/test_data_directory.h"
|
| #include "printing/backend/print_backend.h"
|
| #include "printing/page_range.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
| @@ -150,3 +155,103 @@ TEST(IPCMessageTest, HostPortPair) {
|
| EXPECT_EQ(input.host(), output.host());
|
| EXPECT_EQ(input.port(), output.port());
|
| }
|
| +
|
| +// Tests net::SSLInfo serialization
|
| +TEST(IPCMessageTest, SSLInfo) {
|
| + // Build a SSLInfo. Avoid false for booleans as that's the default value.
|
| + net::SSLInfo in;
|
| + in.cert =
|
| + net::ImportCertFromFile(net::GetTestCertsDirectory(), "ok_cert.pem");
|
| + in.unverified_cert = net::ImportCertFromFile(net::GetTestCertsDirectory(),
|
| + "ok_cert_by_intermediate.pem");
|
| + in.cert_status = net::CERT_STATUS_COMMON_NAME_INVALID;
|
| + in.security_bits = 0x100;
|
| + in.key_exchange_group = 1024;
|
| + in.connection_status = 0x300039; // TLS_DHE_RSA_WITH_AES_256_CBC_SHA
|
| + in.is_issued_by_known_root = true;
|
| + in.pkp_bypassed = true;
|
| + in.client_cert_sent = true;
|
| + in.channel_id_sent = true;
|
| + in.token_binding_negotiated = true;
|
| + in.token_binding_key_param = net::TB_PARAM_ECDSAP256;
|
| + in.handshake_type = net::SSLInfo::HANDSHAKE_FULL;
|
| + const net::SHA256HashValue kCertPublicKeyHashValue = {{0x01, 0x02}};
|
| + in.public_key_hashes.push_back(net::HashValue(kCertPublicKeyHashValue));
|
| + in.pinning_failure_log = "foo";
|
| +
|
| + scoped_refptr<net::ct::SignedCertificateTimestamp> sct(
|
| + new net::ct::SignedCertificateTimestamp());
|
| + sct->version = net::ct::SignedCertificateTimestamp::V1;
|
| + sct->log_id = "unknown_log_id";
|
| + sct->extensions = "extensions";
|
| + sct->timestamp = base::Time::Now();
|
| + sct->signature.hash_algorithm = net::ct::DigitallySigned::HASH_ALGO_MD5;
|
| + sct->signature.signature_algorithm = net::ct::DigitallySigned::SIG_ALGO_RSA;
|
| + sct->signature.signature_data = "signature";
|
| + sct->origin = net::ct::SignedCertificateTimestamp::SCT_EMBEDDED;
|
| + in.signed_certificate_timestamps.push_back(
|
| + net::SignedCertificateTimestampAndStatus(
|
| + sct, net::ct::SCT_STATUS_LOG_UNKNOWN));
|
| +
|
| + in.ct_compliance_details_available = true;
|
| + in.ct_ev_policy_compliance =
|
| + net::ct::EVPolicyCompliance::EV_POLICY_COMPLIES_VIA_WHITELIST;
|
| + in.ct_cert_policy_compliance =
|
| + net::ct::CertPolicyCompliance::CERT_POLICY_NOT_ENOUGH_SCTS;
|
| + in.ocsp_result.response_status = net::OCSPVerifyResult::PROVIDED;
|
| + in.ocsp_result.revocation_status = net::OCSPRevocationStatus::REVOKED;
|
| +
|
| + // Now serialize and deserialize.
|
| + IPC::Message msg(1, 2, IPC::Message::PRIORITY_NORMAL);
|
| + IPC::ParamTraits<net::SSLInfo>::Write(&msg, in);
|
| +
|
| + net::SSLInfo out;
|
| + base::PickleIterator iter(msg);
|
| + EXPECT_TRUE(IPC::ParamTraits<net::SSLInfo>::Read(&msg, &iter, &out));
|
| +
|
| + // Now verify they're equal.
|
| + ASSERT_TRUE(in.cert->Equals(out.cert.get()));
|
| + ASSERT_TRUE(in.unverified_cert->Equals(out.unverified_cert.get()));
|
| + ASSERT_EQ(in.security_bits, out.security_bits);
|
| + ASSERT_EQ(in.key_exchange_group, out.key_exchange_group);
|
| + ASSERT_EQ(in.connection_status, out.connection_status);
|
| + ASSERT_EQ(in.is_issued_by_known_root, out.is_issued_by_known_root);
|
| + ASSERT_EQ(in.pkp_bypassed, out.pkp_bypassed);
|
| + ASSERT_EQ(in.client_cert_sent, out.client_cert_sent);
|
| + ASSERT_EQ(in.channel_id_sent, out.channel_id_sent);
|
| + ASSERT_EQ(in.token_binding_negotiated, out.token_binding_negotiated);
|
| + ASSERT_EQ(in.token_binding_key_param, out.token_binding_key_param);
|
| + ASSERT_EQ(in.handshake_type, out.handshake_type);
|
| + ASSERT_EQ(in.public_key_hashes, out.public_key_hashes);
|
| + ASSERT_EQ(in.pinning_failure_log, out.pinning_failure_log);
|
| +
|
| + ASSERT_EQ(in.signed_certificate_timestamps.size(),
|
| + out.signed_certificate_timestamps.size());
|
| + ASSERT_EQ(in.signed_certificate_timestamps[0].status,
|
| + out.signed_certificate_timestamps[0].status);
|
| + ASSERT_EQ(in.signed_certificate_timestamps[0].sct->version,
|
| + out.signed_certificate_timestamps[0].sct->version);
|
| + ASSERT_EQ(in.signed_certificate_timestamps[0].sct->log_id,
|
| + out.signed_certificate_timestamps[0].sct->log_id);
|
| + ASSERT_EQ(in.signed_certificate_timestamps[0].sct->timestamp,
|
| + out.signed_certificate_timestamps[0].sct->timestamp);
|
| + ASSERT_EQ(in.signed_certificate_timestamps[0].sct->extensions,
|
| + out.signed_certificate_timestamps[0].sct->extensions);
|
| + ASSERT_EQ(in.signed_certificate_timestamps[0].sct->signature.hash_algorithm,
|
| + out.signed_certificate_timestamps[0].sct->signature.hash_algorithm);
|
| + ASSERT_EQ(
|
| + in.signed_certificate_timestamps[0].sct->signature.signature_algorithm,
|
| + out.signed_certificate_timestamps[0].sct->signature.signature_algorithm);
|
| + ASSERT_EQ(in.signed_certificate_timestamps[0].sct->signature.signature_data,
|
| + out.signed_certificate_timestamps[0].sct->signature.signature_data);
|
| + ASSERT_EQ(in.signed_certificate_timestamps[0].sct->origin,
|
| + out.signed_certificate_timestamps[0].sct->origin);
|
| + ASSERT_EQ(in.signed_certificate_timestamps[0].sct->log_description,
|
| + out.signed_certificate_timestamps[0].sct->log_description);
|
| +
|
| + ASSERT_EQ(in.ct_compliance_details_available,
|
| + out.ct_compliance_details_available);
|
| + ASSERT_EQ(in.ct_ev_policy_compliance, out.ct_ev_policy_compliance);
|
| + ASSERT_EQ(in.ct_cert_policy_compliance, out.ct_cert_policy_compliance);
|
| + ASSERT_EQ(in.ocsp_result, out.ocsp_result);
|
| +}
|
|
|