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 "content/public/common/common_param_traits.h" | 5 #include "content/public/common/common_param_traits.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 #include <string.h> | 8 #include <string.h> |
9 | 9 |
10 #include <memory> | 10 #include <memory> |
11 #include <utility> | 11 #include <utility> |
12 | 12 |
13 #include "base/macros.h" | 13 #include "base/macros.h" |
14 #include "base/memory/ptr_util.h" | 14 #include "base/memory/ptr_util.h" |
15 #include "base/values.h" | 15 #include "base/values.h" |
| 16 #include "content/common/resource_messages.h" |
16 #include "content/public/common/content_constants.h" | 17 #include "content/public/common/content_constants.h" |
17 #include "ipc/ipc_message.h" | 18 #include "ipc/ipc_message.h" |
18 #include "ipc/ipc_message_utils.h" | 19 #include "ipc/ipc_message_utils.h" |
19 #include "net/base/host_port_pair.h" | 20 #include "net/base/host_port_pair.h" |
| 21 #include "net/cert/ct_policy_status.h" |
| 22 #include "net/ssl/ssl_info.h" |
| 23 #include "net/test/cert_test_util.h" |
| 24 #include "net/test/test_data_directory.h" |
20 #include "printing/backend/print_backend.h" | 25 #include "printing/backend/print_backend.h" |
21 #include "printing/page_range.h" | 26 #include "printing/page_range.h" |
22 #include "testing/gtest/include/gtest/gtest.h" | 27 #include "testing/gtest/include/gtest/gtest.h" |
23 #include "third_party/skia/include/core/SkBitmap.h" | 28 #include "third_party/skia/include/core/SkBitmap.h" |
24 #include "ui/gfx/geometry/rect.h" | 29 #include "ui/gfx/geometry/rect.h" |
25 #include "ui/gfx/ipc/gfx_param_traits.h" | 30 #include "ui/gfx/ipc/gfx_param_traits.h" |
26 #include "ui/gfx/ipc/skia/gfx_skia_param_traits.h" | 31 #include "ui/gfx/ipc/skia/gfx_skia_param_traits.h" |
27 | 32 |
28 // Tests std::pair serialization | 33 // Tests std::pair serialization |
29 TEST(IPCMessageTest, Pair) { | 34 TEST(IPCMessageTest, Pair) { |
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
143 | 148 |
144 IPC::Message msg(1, 2, IPC::Message::PRIORITY_NORMAL); | 149 IPC::Message msg(1, 2, IPC::Message::PRIORITY_NORMAL); |
145 IPC::ParamTraits<net::HostPortPair>::Write(&msg, input); | 150 IPC::ParamTraits<net::HostPortPair>::Write(&msg, input); |
146 | 151 |
147 net::HostPortPair output; | 152 net::HostPortPair output; |
148 base::PickleIterator iter(msg); | 153 base::PickleIterator iter(msg); |
149 EXPECT_TRUE(IPC::ParamTraits<net::HostPortPair>::Read(&msg, &iter, &output)); | 154 EXPECT_TRUE(IPC::ParamTraits<net::HostPortPair>::Read(&msg, &iter, &output)); |
150 EXPECT_EQ(input.host(), output.host()); | 155 EXPECT_EQ(input.host(), output.host()); |
151 EXPECT_EQ(input.port(), output.port()); | 156 EXPECT_EQ(input.port(), output.port()); |
152 } | 157 } |
| 158 |
| 159 // Tests net::SSLInfo serialization |
| 160 TEST(IPCMessageTest, SSLInfo) { |
| 161 // Build a SSLInfo. Avoid false for booleans as that's the default value. |
| 162 net::SSLInfo in; |
| 163 in.cert = |
| 164 net::ImportCertFromFile(net::GetTestCertsDirectory(), "ok_cert.pem"); |
| 165 in.unverified_cert = net::ImportCertFromFile(net::GetTestCertsDirectory(), |
| 166 "ok_cert_by_intermediate.pem"); |
| 167 in.cert_status = net::CERT_STATUS_COMMON_NAME_INVALID; |
| 168 in.security_bits = 0x100; |
| 169 in.key_exchange_group = 1024; |
| 170 in.connection_status = 0x300039; // TLS_DHE_RSA_WITH_AES_256_CBC_SHA |
| 171 in.is_issued_by_known_root = true; |
| 172 in.pkp_bypassed = true; |
| 173 in.client_cert_sent = true; |
| 174 in.channel_id_sent = true; |
| 175 in.token_binding_negotiated = true; |
| 176 in.token_binding_key_param = net::TB_PARAM_ECDSAP256; |
| 177 in.handshake_type = net::SSLInfo::HANDSHAKE_FULL; |
| 178 const net::SHA256HashValue kCertPublicKeyHashValue = {{0x01, 0x02}}; |
| 179 in.public_key_hashes.push_back(net::HashValue(kCertPublicKeyHashValue)); |
| 180 in.pinning_failure_log = "foo"; |
| 181 |
| 182 scoped_refptr<net::ct::SignedCertificateTimestamp> sct( |
| 183 new net::ct::SignedCertificateTimestamp()); |
| 184 sct->version = net::ct::SignedCertificateTimestamp::V1; |
| 185 sct->log_id = "unknown_log_id"; |
| 186 sct->extensions = "extensions"; |
| 187 sct->timestamp = base::Time::Now(); |
| 188 sct->signature.hash_algorithm = net::ct::DigitallySigned::HASH_ALGO_MD5; |
| 189 sct->signature.signature_algorithm = net::ct::DigitallySigned::SIG_ALGO_RSA; |
| 190 sct->signature.signature_data = "signature"; |
| 191 sct->origin = net::ct::SignedCertificateTimestamp::SCT_EMBEDDED; |
| 192 in.signed_certificate_timestamps.push_back( |
| 193 net::SignedCertificateTimestampAndStatus( |
| 194 sct, net::ct::SCT_STATUS_LOG_UNKNOWN)); |
| 195 |
| 196 in.ct_compliance_details_available = true; |
| 197 in.ct_ev_policy_compliance = |
| 198 net::ct::EVPolicyCompliance::EV_POLICY_COMPLIES_VIA_WHITELIST; |
| 199 in.ct_cert_policy_compliance = |
| 200 net::ct::CertPolicyCompliance::CERT_POLICY_NOT_ENOUGH_SCTS; |
| 201 in.ocsp_result.response_status = net::OCSPVerifyResult::PROVIDED; |
| 202 in.ocsp_result.revocation_status = net::OCSPRevocationStatus::REVOKED; |
| 203 |
| 204 // Now serialize and deserialize. |
| 205 IPC::Message msg(1, 2, IPC::Message::PRIORITY_NORMAL); |
| 206 IPC::ParamTraits<net::SSLInfo>::Write(&msg, in); |
| 207 |
| 208 net::SSLInfo out; |
| 209 base::PickleIterator iter(msg); |
| 210 EXPECT_TRUE(IPC::ParamTraits<net::SSLInfo>::Read(&msg, &iter, &out)); |
| 211 |
| 212 // Now verify they're equal. |
| 213 ASSERT_TRUE(in.cert->Equals(out.cert.get())); |
| 214 ASSERT_TRUE(in.unverified_cert->Equals(out.unverified_cert.get())); |
| 215 ASSERT_EQ(in.security_bits, out.security_bits); |
| 216 ASSERT_EQ(in.key_exchange_group, out.key_exchange_group); |
| 217 ASSERT_EQ(in.connection_status, out.connection_status); |
| 218 ASSERT_EQ(in.is_issued_by_known_root, out.is_issued_by_known_root); |
| 219 ASSERT_EQ(in.pkp_bypassed, out.pkp_bypassed); |
| 220 ASSERT_EQ(in.client_cert_sent, out.client_cert_sent); |
| 221 ASSERT_EQ(in.channel_id_sent, out.channel_id_sent); |
| 222 ASSERT_EQ(in.token_binding_negotiated, out.token_binding_negotiated); |
| 223 ASSERT_EQ(in.token_binding_key_param, out.token_binding_key_param); |
| 224 ASSERT_EQ(in.handshake_type, out.handshake_type); |
| 225 ASSERT_EQ(in.public_key_hashes, out.public_key_hashes); |
| 226 ASSERT_EQ(in.pinning_failure_log, out.pinning_failure_log); |
| 227 |
| 228 ASSERT_EQ(in.signed_certificate_timestamps.size(), |
| 229 out.signed_certificate_timestamps.size()); |
| 230 ASSERT_EQ(in.signed_certificate_timestamps[0].status, |
| 231 out.signed_certificate_timestamps[0].status); |
| 232 ASSERT_EQ(in.signed_certificate_timestamps[0].sct->version, |
| 233 out.signed_certificate_timestamps[0].sct->version); |
| 234 ASSERT_EQ(in.signed_certificate_timestamps[0].sct->log_id, |
| 235 out.signed_certificate_timestamps[0].sct->log_id); |
| 236 ASSERT_EQ(in.signed_certificate_timestamps[0].sct->timestamp, |
| 237 out.signed_certificate_timestamps[0].sct->timestamp); |
| 238 ASSERT_EQ(in.signed_certificate_timestamps[0].sct->extensions, |
| 239 out.signed_certificate_timestamps[0].sct->extensions); |
| 240 ASSERT_EQ(in.signed_certificate_timestamps[0].sct->signature.hash_algorithm, |
| 241 out.signed_certificate_timestamps[0].sct->signature.hash_algorithm); |
| 242 ASSERT_EQ( |
| 243 in.signed_certificate_timestamps[0].sct->signature.signature_algorithm, |
| 244 out.signed_certificate_timestamps[0].sct->signature.signature_algorithm); |
| 245 ASSERT_EQ(in.signed_certificate_timestamps[0].sct->signature.signature_data, |
| 246 out.signed_certificate_timestamps[0].sct->signature.signature_data); |
| 247 ASSERT_EQ(in.signed_certificate_timestamps[0].sct->origin, |
| 248 out.signed_certificate_timestamps[0].sct->origin); |
| 249 ASSERT_EQ(in.signed_certificate_timestamps[0].sct->log_description, |
| 250 out.signed_certificate_timestamps[0].sct->log_description); |
| 251 |
| 252 ASSERT_EQ(in.ct_compliance_details_available, |
| 253 out.ct_compliance_details_available); |
| 254 ASSERT_EQ(in.ct_ev_policy_compliance, out.ct_ev_policy_compliance); |
| 255 ASSERT_EQ(in.ct_cert_policy_compliance, out.ct_cert_policy_compliance); |
| 256 ASSERT_EQ(in.ocsp_result, out.ocsp_result); |
| 257 } |
OLD | NEW |