Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(43)

Side by Side Diff: content/common/ssl_status_serialization_unittest.cc

Issue 1313363003: Expose OpenSSL's key_exchange_info in the content API (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Review fixups: Renumber enum, add tests Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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/common/ssl_status_serialization.h" 5 #include "content/common/ssl_status_serialization.h"
6 6
7 #include "net/ssl/ssl_connection_status_flags.h" 7 #include "net/ssl/ssl_connection_status_flags.h"
8 #include "testing/gtest/include/gtest/gtest.h" 8 #include "testing/gtest/include/gtest/gtest.h"
9 9
10 namespace content { 10 namespace content {
11 11
12 namespace {
13
14 void InitializeSSLStatus(SSLStatus* status) {
15 status->security_style = SECURITY_STYLE_AUTHENTICATED;
16 status->cert_id = 1;
17 status->cert_status = net::CERT_STATUS_DATE_INVALID;
18 status->security_bits = 80;
19 status->key_exchange_info = 23;
20 status->connection_status = net::SSL_CONNECTION_VERSION_TLS1_2;
21 status->signed_certificate_timestamp_ids.push_back(
22 SignedCertificateTimestampIDAndStatus(1, net::ct::SCT_STATUS_OK));
23 }
24
25 void VerifyEqual(SSLStatus* const a, SSLStatus* const b) {
Ryan Sleevi 2015/09/02 01:37:07 I'm not sure why you re-invent SSLStatus::Equals.
Ryan Sleevi 2015/09/02 01:37:07 Both of these should be passed as const-ref, not c
26 EXPECT_EQ(a->security_style, b->security_style);
27 EXPECT_EQ(a->cert_id, b->cert_id);
28 EXPECT_EQ(a->cert_status, b->cert_status);
29 EXPECT_EQ(a->security_bits, b->security_bits);
30 EXPECT_EQ(a->key_exchange_info, b->key_exchange_info);
31 EXPECT_EQ(a->connection_status, b->connection_status);
32 EXPECT_EQ(a->content_status, b->content_status);
33 EXPECT_EQ(a->signed_certificate_timestamp_ids.size(),
34 b->signed_certificate_timestamp_ids.size());
35 }
36
37 } // namespace
38
12 // Test that a valid serialized SSLStatus returns true on 39 // Test that a valid serialized SSLStatus returns true on
13 // deserialization and deserializes correctly. 40 // deserialization and deserializes correctly.
14 TEST(SSLStatusSerializationTest, DeserializeSerializedStatus) { 41 TEST(SSLStatusSerializationTest, DeserializeSerializedStatus) {
15 // Serialize dummy data and test that it deserializes properly. 42 // Serialize dummy data and test that it deserializes properly.
16 SSLStatus status; 43 SSLStatus status, deserialized;
Ryan Sleevi 2015/09/02 01:37:07 Style wise, the original form was more consistent
sigbjorn 2015/09/02 13:42:14 Done.
17 status.security_style = SECURITY_STYLE_AUTHENTICATED; 44 InitializeSSLStatus(&status);
Ryan Sleevi 2015/09/02 01:37:07 Naming wise, this might be better renamed, as an S
sigbjorn 2015/09/02 13:42:14 Done.
18 status.cert_id = 1;
19 status.cert_status = net::CERT_STATUS_DATE_INVALID;
20 status.security_bits = 80;
21 status.connection_status = net::SSL_CONNECTION_VERSION_TLS1_2;
22 SignedCertificateTimestampIDAndStatus sct(1, net::ct::SCT_STATUS_OK);
23 status.signed_certificate_timestamp_ids.push_back(sct);
24
25 std::string serialized = SerializeSecurityInfo(status); 45 std::string serialized = SerializeSecurityInfo(status);
26
27 SSLStatus deserialized;
28 ASSERT_TRUE(DeserializeSecurityInfo(serialized, &deserialized)); 46 ASSERT_TRUE(DeserializeSecurityInfo(serialized, &deserialized));
29 EXPECT_EQ(status.security_style, deserialized.security_style); 47 VerifyEqual(&status, &deserialized);
30 EXPECT_EQ(status.cert_id, deserialized.cert_id); 48 EXPECT_EQ(SignedCertificateTimestampIDAndStatus(1, net::ct::SCT_STATUS_OK),
31 EXPECT_EQ(status.cert_status, deserialized.cert_status); 49 deserialized.signed_certificate_timestamp_ids[0]);
32 EXPECT_EQ(status.security_bits, deserialized.security_bits);
33 EXPECT_EQ(status.connection_status, deserialized.connection_status);
34 EXPECT_EQ(status.signed_certificate_timestamp_ids.size(),
35 deserialized.signed_certificate_timestamp_ids.size());
36 EXPECT_EQ(sct, deserialized.signed_certificate_timestamp_ids[0]);
37 // Test that |content_status| has the default (initialized) value. 50 // Test that |content_status| has the default (initialized) value.
38 EXPECT_EQ(SSLStatus::NORMAL_CONTENT, deserialized.content_status); 51 EXPECT_EQ(SSLStatus::NORMAL_CONTENT, deserialized.content_status);
39 } 52 }
40 53
41 // Test that an invalid serialized SSLStatus returns false on 54 // Test that an invalid serialized SSLStatus returns false on
42 // deserialization. 55 // deserialization.
43 TEST(SSLStatusSerializationTest, DeserializeBogusStatus) { 56 TEST(SSLStatusSerializationTest, DeserializeBogusStatus) {
44 // Test that a failure to deserialize returns false and returns 57 // Test that a failure to deserialize returns false and returns
45 // initialized, default data. 58 // initialized, default data.
46 SSLStatus invalid_deserialized; 59 SSLStatus default_ssl_status, invalid_deserialized;
47 ASSERT_FALSE( 60 ASSERT_FALSE(
48 DeserializeSecurityInfo("not an SSLStatus", &invalid_deserialized)); 61 DeserializeSecurityInfo("not an SSLStatus", &invalid_deserialized));
62 VerifyEqual(&default_ssl_status, &invalid_deserialized);
Ryan Sleevi 2015/09/02 01:37:07 Use of a temp seems unnecessary
sigbjorn 2015/09/02 13:42:14 Done.
63 }
49 64
50 SSLStatus default_ssl_status; 65 // Serialize a status with a bad |security_bits| value and test that
51 EXPECT_EQ(default_ssl_status.security_style, 66 // deserializing it fails.
52 invalid_deserialized.security_style); 67 TEST(SSLStatusSerializationTest, DeserializeBogusSecurityBits) {
53 EXPECT_EQ(default_ssl_status.cert_id, invalid_deserialized.cert_id); 68 SSLStatus status, default_ssl_status, invalid_deserialized;
54 EXPECT_EQ(default_ssl_status.cert_status, invalid_deserialized.cert_status); 69 InitializeSSLStatus(&status);
55 EXPECT_EQ(default_ssl_status.security_bits,
56 invalid_deserialized.security_bits);
57 EXPECT_EQ(default_ssl_status.connection_status,
58 invalid_deserialized.connection_status);
59 EXPECT_EQ(default_ssl_status.content_status,
60 invalid_deserialized.content_status);
61 EXPECT_EQ(0u, invalid_deserialized.signed_certificate_timestamp_ids.size());
62
63 // Serialize a status with a bad |security_bits| value and test that
64 // deserializing it fails.
65 SSLStatus status;
66 status.security_style = SECURITY_STYLE_AUTHENTICATED;
67 status.cert_id = 1;
68 status.cert_status = net::CERT_STATUS_DATE_INVALID;
69 // |security_bits| must be <-1. (-1 means the strength is unknown, and 70 // |security_bits| must be <-1. (-1 means the strength is unknown, and
70 // |0 means the connection is not encrypted). 71 // |0 means the connection is not encrypted).
71 status.security_bits = -5; 72 status.security_bits = -5;
72 status.connection_status = net::SSL_CONNECTION_VERSION_TLS1_2;
73 SignedCertificateTimestampIDAndStatus sct(1, net::ct::SCT_STATUS_OK);
74 status.signed_certificate_timestamp_ids.push_back(sct);
75
76 std::string serialized = SerializeSecurityInfo(status); 73 std::string serialized = SerializeSecurityInfo(status);
77 ASSERT_FALSE(DeserializeSecurityInfo(serialized, &invalid_deserialized)); 74 ASSERT_FALSE(DeserializeSecurityInfo(serialized, &invalid_deserialized));
75 VerifyEqual(&default_ssl_status, &invalid_deserialized);
76 }
78 77
79 EXPECT_EQ(default_ssl_status.security_style, 78 // Serialize a status with a bad |key_exchange_info| value and test that
80 invalid_deserialized.security_style); 79 // deserializing it fails.
81 EXPECT_EQ(default_ssl_status.cert_id, invalid_deserialized.cert_id); 80 TEST(SSLStatusSerializationTest, DeserializeBogusKeyExchangeInfo) {
82 EXPECT_EQ(default_ssl_status.cert_status, invalid_deserialized.cert_status); 81 SSLStatus status, default_ssl_status, invalid_deserialized;
83 EXPECT_EQ(default_ssl_status.security_bits, 82 InitializeSSLStatus(&status);
84 invalid_deserialized.security_bits); 83 status.key_exchange_info = -1;
85 EXPECT_EQ(default_ssl_status.connection_status, 84 std::string serialized = SerializeSecurityInfo(status);
86 invalid_deserialized.connection_status); 85 ASSERT_FALSE(DeserializeSecurityInfo(serialized, &invalid_deserialized));
87 EXPECT_EQ(default_ssl_status.content_status, 86 VerifyEqual(&default_ssl_status, &invalid_deserialized);
88 invalid_deserialized.content_status); 87 }
89 EXPECT_EQ(0u, invalid_deserialized.signed_certificate_timestamp_ids.size());
90 88
91 // Now serialize a status with a bad |security_style| value and test 89 // Serialize a status with a bad |security_style| value and test that
92 // that deserializing fails. 90 // deserializing it fails.
93 status.security_bits = 128; 91 TEST(SSLStatusSerializationTest, DeserializeBogusSecurityStyle) {
92 SSLStatus status, default_ssl_status, invalid_deserialized;
Ryan Sleevi 2015/09/02 01:37:07 This sort of rewrite seems inconsistent with the s
sigbjorn 2015/09/02 13:42:14 Done.
93 InitializeSSLStatus(&status);
94 status.security_style = static_cast<SecurityStyle>(100); 94 status.security_style = static_cast<SecurityStyle>(100);
95 serialized = SerializeSecurityInfo(status); 95 std::string serialized = SerializeSecurityInfo(status);
96 ASSERT_FALSE(DeserializeSecurityInfo(serialized, &invalid_deserialized)); 96 ASSERT_FALSE(DeserializeSecurityInfo(serialized, &invalid_deserialized));
97 97 VerifyEqual(&default_ssl_status, &invalid_deserialized);
98 EXPECT_EQ(default_ssl_status.security_style,
99 invalid_deserialized.security_style);
100 EXPECT_EQ(default_ssl_status.cert_id, invalid_deserialized.cert_id);
101 EXPECT_EQ(default_ssl_status.cert_status, invalid_deserialized.cert_status);
102 EXPECT_EQ(default_ssl_status.security_bits,
103 invalid_deserialized.security_bits);
104 EXPECT_EQ(default_ssl_status.connection_status,
105 invalid_deserialized.connection_status);
106 EXPECT_EQ(default_ssl_status.content_status,
107 invalid_deserialized.content_status);
108 EXPECT_EQ(0u, invalid_deserialized.signed_certificate_timestamp_ids.size());
109 } 98 }
110 99
111 } // namespace 100 } // namespace
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698