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

Side by Side Diff: webrtc/base/sslidentity_unittest.cc

Issue 1898383003: RTCCertificate serialization. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Rebase with master (std::unique_ptr) Created 4 years, 7 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
« no previous file with comments | « webrtc/base/sslidentity.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2011 The WebRTC Project Authors. All rights reserved. 2 * Copyright 2011 The WebRTC Project Authors. All rights reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
(...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after
167 167
168 ASSERT_TRUE(expected_len <= sizeof(DigestType)); 168 ASSERT_TRUE(expected_len <= sizeof(DigestType));
169 169
170 rv = test_cert_->ComputeDigest(algorithm, digest, sizeof(digest), 170 rv = test_cert_->ComputeDigest(algorithm, digest, sizeof(digest),
171 &digest_len); 171 &digest_len);
172 EXPECT_TRUE(rv); 172 EXPECT_TRUE(rv);
173 EXPECT_EQ(expected_len, digest_len); 173 EXPECT_EQ(expected_len, digest_len);
174 EXPECT_EQ(0, memcmp(digest, expected_digest, expected_len)); 174 EXPECT_EQ(0, memcmp(digest, expected_digest, expected_len));
175 } 175 }
176 176
177 private: 177 void TestCloningIdentity(const SSLIdentity& identity) {
178 // Convert |identity| to PEM strings and create a new identity by converting
179 // back from the string format.
180 std::string priv_pem = identity.PrivateKeyToPEMString();
181 std::string publ_pem = identity.PublicKeyToPEMString();
182 std::string cert_pem = identity.certificate().ToPEMString();
183 std::unique_ptr<SSLIdentity> clone(
184 SSLIdentity::FromPEMStrings(priv_pem, cert_pem));
185 EXPECT_TRUE(clone);
186
187 // Make sure the clone is identical to the original.
188 EXPECT_TRUE(identity == *clone);
189 ASSERT_EQ(identity.certificate().CertificateExpirationTime(),
190 clone->certificate().CertificateExpirationTime());
191
192 // At this point we are confident that the identities are identical. To be
193 // extra sure, we compare PEM strings of the clone with the original. Note
194 // that the PEM strings of two identities are not strictly guaranteed to be
195 // equal (they describe structs whose members could be listed in a different
196 // order, for example). But because the same function is used to produce
197 // both PEMs, its a good enough bet that this comparison will work. If the
198 // assumption stops holding in the future we can always remove this from the
199 // unittest.
200 std::string clone_priv_pem = clone->PrivateKeyToPEMString();
201 std::string clone_publ_pem = clone->PublicKeyToPEMString();
202 std::string clone_cert_pem = clone->certificate().ToPEMString();
203 ASSERT_EQ(priv_pem, clone_priv_pem);
204 ASSERT_EQ(publ_pem, clone_publ_pem);
205 ASSERT_EQ(cert_pem, clone_cert_pem);
206 }
207
208 protected:
178 std::unique_ptr<SSLIdentity> identity_rsa1_; 209 std::unique_ptr<SSLIdentity> identity_rsa1_;
179 std::unique_ptr<SSLIdentity> identity_rsa2_; 210 std::unique_ptr<SSLIdentity> identity_rsa2_;
180 std::unique_ptr<SSLIdentity> identity_ecdsa1_; 211 std::unique_ptr<SSLIdentity> identity_ecdsa1_;
181 std::unique_ptr<SSLIdentity> identity_ecdsa2_; 212 std::unique_ptr<SSLIdentity> identity_ecdsa2_;
182 std::unique_ptr<rtc::SSLCertificate> test_cert_; 213 std::unique_ptr<rtc::SSLCertificate> test_cert_;
183 }; 214 };
184 215
185 TEST_F(SSLIdentityTest, FixedDigestSHA1) { 216 TEST_F(SSLIdentityTest, FixedDigestSHA1) {
186 TestDigestForFixedCert(rtc::DIGEST_SHA_1, 20, kTestCertSha1); 217 TestDigestForFixedCert(rtc::DIGEST_SHA_1, 20, kTestCertSha1);
187 } 218 }
(...skipping 25 matching lines...) Expand all
213 } 244 }
214 245
215 TEST_F(SSLIdentityTest, DigestSHA384) { 246 TEST_F(SSLIdentityTest, DigestSHA384) {
216 TestDigestForGeneratedCert(rtc::DIGEST_SHA_384, 48); 247 TestDigestForGeneratedCert(rtc::DIGEST_SHA_384, 48);
217 } 248 }
218 249
219 TEST_F(SSLIdentityTest, DigestSHA512) { 250 TEST_F(SSLIdentityTest, DigestSHA512) {
220 TestDigestForGeneratedCert(rtc::DIGEST_SHA_512, 64); 251 TestDigestForGeneratedCert(rtc::DIGEST_SHA_512, 64);
221 } 252 }
222 253
254 TEST_F(SSLIdentityTest, IdentityComparison) {
255 EXPECT_TRUE(*identity_rsa1_ == *identity_rsa1_);
256 EXPECT_FALSE(*identity_rsa1_ == *identity_rsa2_);
257 EXPECT_FALSE(*identity_rsa1_ == *identity_ecdsa1_);
258 EXPECT_FALSE(*identity_rsa1_ == *identity_ecdsa2_);
259
260 EXPECT_TRUE(*identity_rsa2_ == *identity_rsa2_);
261 EXPECT_FALSE(*identity_rsa2_ == *identity_ecdsa1_);
262 EXPECT_FALSE(*identity_rsa2_ == *identity_ecdsa2_);
263
264 EXPECT_TRUE(*identity_ecdsa1_ == *identity_ecdsa1_);
265 EXPECT_FALSE(*identity_ecdsa1_ == *identity_ecdsa2_);
266 }
267
223 TEST_F(SSLIdentityTest, FromPEMStringsRSA) { 268 TEST_F(SSLIdentityTest, FromPEMStringsRSA) {
269 // These PEM strings were created by generating an identity with
270 // |SSLIdentity::Generate| and invoking |identity->PrivateKeyToPEMString()|,
271 // |identity->PublicKeyToPEMString()| and
272 // |identity->certificate().ToPEMString()|. If the crypto library is updated,
273 // and the update changes the string form of the keys, these will have to be
274 // updated too.
224 static const char kRSA_PRIVATE_KEY_PEM[] = 275 static const char kRSA_PRIVATE_KEY_PEM[] =
225 "-----BEGIN RSA PRIVATE KEY-----\n" 276 "-----BEGIN PRIVATE KEY-----\n"
226 "MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAMYRkbhmI7kVA/rM\n" 277 "MIICdQIBADANBgkqhkiG9w0BAQEFAASCAl8wggJbAgEAAoGBAMQPqDStRlYeDpkX\n"
227 "czsZ+6JDhDvnkF+vn6yCAGuRPV03zuRqZtDy4N4to7PZu9PjqrRl7nDMXrG3YG9y\n" 278 "erRmv+a1naM8vSVSY0gG2plnrnofViWRW3MRqWC+020MsIj3hPZeSAnt/y/FL/nr\n"
228 "rlIAZ72KjcKKFAJxQyAKLCIdawKRyp8RdK3LEySWEZb0AV58IadqPZDTNHHRX8dz\n" 279 "4Ea7NXcwdRo1/1xEK7U/f/cjSg1aunyvHCHwcFcMr31HLFvHr0ZgcFwbgIuFLNEl\n"
229 "5aTSMsbbkZ+C/OzTnbiMqLL/vg6jAgMBAAECgYAvgOs4FJcgvp+TuREx7YtiYVsH\n" 280 "7kK5HMO9APz1ntUjek8BmBj8yMl9AgMBAAECgYA8FWBC5GcNtSBcIinkZyigF0A7\n"
230 "mwQPTum2z/8VzWGwR8BBHBvIpVe1MbD/Y4seyI2aco/7UaisatSgJhsU46/9Y4fq\n" 281 "6j081sa+J/uNz4xUuI257ZXM6biygUhhvuXK06/XoIULJfhyN0fAm1yb0HtNhiUs\n"
231 "2TwXH9QANf4at4d9n/R6rzwpAJOpgwZgKvdQjkfrKTtgLV+/dawvpxUYkRH4JZM1\n" 282 "kMOYeon6b8FqFaPjrQf7Gr9FMiIHXNK19uegTMKztXyPZoUWlX84X0iawY95x0Y3\n"
232 "CVGukMfKNrSVH4Ap4QJBAOJmGV1ASPnB4r4nc99at7JuIJmd7fmuVUwUgYi4XgaR\n" 283 "73f6P2rN2UOjlVVjAQJBAOKy3l2w3Zj2w0oAJox0eMwl+RxBNt1C42SHrob2mFUT\n"
233 "WhScBsgYwZ/JoywdyZJgnbcrTDuVcWG56B3vXbhdpMsCQQDf9zeJrjnPZ3Cqm79y\n" 284 "rytpVVYOasr8CoDI0kjacjI94sLum+buJoXXX6YTGO0CQQDdZwlYIEkoS3ftfxPa\n"
234 "kdqANep0uwZciiNiWxsQrCHztywOvbFhdp8iYVFG9EK8DMY41Y5TxUwsHD+67zao\n" 285 "Ai0YTBzAWvHJg0r8Gk/TkHo6IM+LSsZ9ZYUv/vBe4BKLw1I4hZ+bQvBiq+f8ROtk\n"
235 "ZNqJAkEA1suLUP/GvL8IwuRneQd2tWDqqRQ/Td3qq03hP7e77XtF/buya3Ghclo5\n" 286 "+TDRAkAPL3ghwoU1h+IRBO2QHwUwd6K2N9AbBi4BP+168O3HVSg4ujeTKigRLMzv\n"
236 "54czUR89QyVfJEC6278nzA7n2h1uVQJAcG6mztNL6ja/dKZjYZye2CY44QjSlLo0\n" 287 "T4R2iNt5bhfQgvdCgtVlxcWMdF8JAkBwDCg3eEdt5BuyjwBt8XH+/O4ED0KUWCTH\n"
237 "MTgTSjdfg/28fFn2Jjtqf9Pi/X+50LWI/RcYMC2no606wRk9kyOuIQJBAK6VSAim\n" 288 "x00k5dZlupsuhE5Fwe4QpzXg3gekwdnHjyCCQ/NCDHvgOMTkmhQxAkA9V03KRX9b\n"
238 "1pOEjsYQn0X5KEIrz1G3bfCbB848Ime3U2/FWlCHMr6ch8kCZ5d1WUeJD3LbwMNG\n" 289 "bhvEzY/fu8gEp+EzsER96/D79az5z1BaMGL5OPM2xHBPJATKlswnAa7Lp3QKGZGk\n"
239 "UCXiYxSsu20QNVw=\n" 290 "TxslfL18J71s\n"
240 "-----END RSA PRIVATE KEY-----\n"; 291 "-----END PRIVATE KEY-----\n";
241 292 static const char kRSA_PUBLIC_KEY_PEM[] =
293 "-----BEGIN PUBLIC KEY-----\n"
294 "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDED6g0rUZWHg6ZF3q0Zr/mtZ2j\n"
295 "PL0lUmNIBtqZZ656H1YlkVtzEalgvtNtDLCI94T2XkgJ7f8vxS/56+BGuzV3MHUa\n"
296 "Nf9cRCu1P3/3I0oNWrp8rxwh8HBXDK99Ryxbx69GYHBcG4CLhSzRJe5CuRzDvQD8\n"
297 "9Z7VI3pPAZgY/MjJfQIDAQAB\n"
298 "-----END PUBLIC KEY-----\n";
242 static const char kCERT_PEM[] = 299 static const char kCERT_PEM[] =
243 "-----BEGIN CERTIFICATE-----\n" 300 "-----BEGIN CERTIFICATE-----\n"
244 "MIIBmTCCAQKgAwIBAgIEbzBSAjANBgkqhkiG9w0BAQsFADARMQ8wDQYDVQQDEwZX\n" 301 "MIIBnDCCAQWgAwIBAgIJAOEHLgeWYwrpMA0GCSqGSIb3DQEBCwUAMBAxDjAMBgNV\n"
245 "ZWJSVEMwHhcNMTQwMTAyMTgyNDQ3WhcNMTQwMjAxMTgyNDQ3WjARMQ8wDQYDVQQD\n" 302 "BAMMBXRlc3QxMB4XDTE2MDQyNDE4MTAyMloXDTE2MDUyNTE4MTAyMlowEDEOMAwG\n"
246 "EwZXZWJSVEMwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMYRkbhmI7kVA/rM\n" 303 "A1UEAwwFdGVzdDEwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMQPqDStRlYe\n"
247 "czsZ+6JDhDvnkF+vn6yCAGuRPV03zuRqZtDy4N4to7PZu9PjqrRl7nDMXrG3YG9y\n" 304 "DpkXerRmv+a1naM8vSVSY0gG2plnrnofViWRW3MRqWC+020MsIj3hPZeSAnt/y/F\n"
248 "rlIAZ72KjcKKFAJxQyAKLCIdawKRyp8RdK3LEySWEZb0AV58IadqPZDTNHHRX8dz\n" 305 "L/nr4Ea7NXcwdRo1/1xEK7U/f/cjSg1aunyvHCHwcFcMr31HLFvHr0ZgcFwbgIuF\n"
249 "5aTSMsbbkZ+C/OzTnbiMqLL/vg6jAgMBAAEwDQYJKoZIhvcNAQELBQADgYEAUflI\n" 306 "LNEl7kK5HMO9APz1ntUjek8BmBj8yMl9AgMBAAEwDQYJKoZIhvcNAQELBQADgYEA\n"
250 "VUe5Krqf5RVa5C3u/UTAOAUJBiDS3VANTCLBxjuMsvqOG0WvaYWP3HYPgrz0jXK2\n" 307 "C3ehaZFl+oEYN069C2ht/gMzuC77L854RF/x7xRtNZzkcg9TVgXXdM3auUvJi8dx\n"
251 "LJE/mGw3MyFHEqi81jh95J+ypl6xKW6Rm8jKLR87gUvCaVYn/Z4/P3AqcQTB7wOv\n" 308 "yTpU3ixErjQvoZew5ngXTEvTY8BSQUijJEaLWh8n6NDKRbEGTdAk8nPAmq9hdCFq\n"
252 "UD0A8qfhfDM+LK6rPAnCsVN0NRDY3jvd6rzix9M=\n" 309 "e3UkexqNHm3g/VxG4NUC1Y+w29ai0/Rgh+VvgbDwK+Q=\n"
253 "-----END CERTIFICATE-----\n"; 310 "-----END CERTIFICATE-----\n";
254 311
255 std::unique_ptr<SSLIdentity> identity( 312 std::unique_ptr<SSLIdentity> identity(
256 SSLIdentity::FromPEMStrings(kRSA_PRIVATE_KEY_PEM, kCERT_PEM)); 313 SSLIdentity::FromPEMStrings(kRSA_PRIVATE_KEY_PEM, kCERT_PEM));
257 EXPECT_TRUE(identity); 314 EXPECT_TRUE(identity);
315 EXPECT_EQ(kRSA_PRIVATE_KEY_PEM, identity->PrivateKeyToPEMString());
316 EXPECT_EQ(kRSA_PUBLIC_KEY_PEM, identity->PublicKeyToPEMString());
258 EXPECT_EQ(kCERT_PEM, identity->certificate().ToPEMString()); 317 EXPECT_EQ(kCERT_PEM, identity->certificate().ToPEMString());
259 } 318 }
260 319
261 TEST_F(SSLIdentityTest, FromPEMStringsEC) { 320 TEST_F(SSLIdentityTest, FromPEMStringsEC) {
262 static const char kRSA_PRIVATE_KEY_PEM[] = 321 // These PEM strings were created by generating an identity with
263 "-----BEGIN EC PRIVATE KEY-----\n" 322 // |SSLIdentity::Generate| and invoking |identity->PrivateKeyToPEMString()|,
264 "MHcCAQEEIKkIztWLPbs4Y2zWv7VW2Ov4is2ifleCuPgRB8fRv3IkoAoGCCqGSM49\n" 323 // |identity->PublicKeyToPEMString()| and
265 "AwEHoUQDQgAEDPV33NrhSdhg9cBRkUWUXnVMXc3h17i9ARbSmNgminKcBXb8/y8L\n" 324 // |identity->certificate().ToPEMString()|. If the crypto library is updated,
266 "A76cMWQPPM0ybHO8OS7ZVg2U/m+TwE1M2g==\n" 325 // and the update changes the string form of the keys, these will have to be
267 "-----END EC PRIVATE KEY-----\n"; 326 // updated too.
327 static const char kECDSA_PRIVATE_KEY_PEM[] =
328 "-----BEGIN PRIVATE KEY-----\n"
329 "MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQg/AkEA2hklq7dQ2rN\n"
330 "ZxYL6hOUACL4pn7P4FYlA3ZQhIChRANCAAR7YgdO3utP/8IqVRq8G4VZKreMAxeN\n"
331 "rUa12twthv4uFjuHAHa9D9oyAjncmn+xvZZRyVmKrA56jRzENcEEHoAg\n"
332 "-----END PRIVATE KEY-----\n";
333 static const char kECDSA_PUBLIC_KEY_PEM[] =
334 "-----BEGIN PUBLIC KEY-----\n"
335 "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEe2IHTt7rT//CKlUavBuFWSq3jAMX\n"
336 "ja1GtdrcLYb+LhY7hwB2vQ/aMgI53Jp/sb2WUclZiqwOeo0cxDXBBB6AIA==\n"
337 "-----END PUBLIC KEY-----\n";
268 static const char kCERT_PEM[] = 338 static const char kCERT_PEM[] =
269 "-----BEGIN CERTIFICATE-----\n" 339 "-----BEGIN CERTIFICATE-----\n"
270 "MIIB0jCCAXmgAwIBAgIJAMCjpFt9t6LMMAoGCCqGSM49BAMCMEUxCzAJBgNVBAYT\n" 340 "MIIBFDCBu6ADAgECAgkArpkxjw62sW4wCgYIKoZIzj0EAwIwEDEOMAwGA1UEAwwF\n"
271 "AkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBXaWRn\n" 341 "dGVzdDMwHhcNMTYwNDI0MTgxNDM4WhcNMTYwNTI1MTgxNDM4WjAQMQ4wDAYDVQQD\n"
272 "aXRzIFB0eSBMdGQwIBcNMTUwNjMwMTMwMTIyWhgPMjI4OTA0MTMxMzAxMjJaMEUx\n" 342 "DAV0ZXN0MzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABHtiB07e60//wipVGrwb\n"
273 "CzAJBgNVBAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRl\n" 343 "hVkqt4wDF42tRrXa3C2G/i4WO4cAdr0P2jICOdyaf7G9llHJWYqsDnqNHMQ1wQQe\n"
274 "cm5ldCBXaWRnaXRzIFB0eSBMdGQwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQM\n" 344 "gCAwCgYIKoZIzj0EAwIDSAAwRQIhANyreQ/K5yuPPpirsd0e/4WGLHou6bIOSQks\n"
275 "9Xfc2uFJ2GD1wFGRRZRedUxdzeHXuL0BFtKY2CaKcpwFdvz/LwsDvpwxZA88zTJs\n" 345 "DYzo56NmAiAKOr3u8ol3LmygbUCwEvtWrS8QcJDygxHPACo99hkekw==\n"
276 "c7w5LtlWDZT+b5PATUzao1AwTjAdBgNVHQ4EFgQUYHq6nxNNIE832ZmaHc/noODO\n"
277 "rtAwHwYDVR0jBBgwFoAUYHq6nxNNIE832ZmaHc/noODOrtAwDAYDVR0TBAUwAwEB\n"
278 "/zAKBggqhkjOPQQDAgNHADBEAiAQRojsTyZG0BlKoU7gOt5h+yAMLl2cxmDtOIQr\n"
279 "GWP/PwIgJynB4AUDsPT0DWmethOXYijB5sY5UPd9DvgmiS/Mr6s=\n"
280 "-----END CERTIFICATE-----\n"; 346 "-----END CERTIFICATE-----\n";
281 347
282 std::unique_ptr<SSLIdentity> identity( 348 std::unique_ptr<SSLIdentity> identity(
283 SSLIdentity::FromPEMStrings(kRSA_PRIVATE_KEY_PEM, kCERT_PEM)); 349 SSLIdentity::FromPEMStrings(kECDSA_PRIVATE_KEY_PEM, kCERT_PEM));
284 EXPECT_TRUE(identity); 350 EXPECT_TRUE(identity);
351 EXPECT_EQ(kECDSA_PRIVATE_KEY_PEM, identity->PrivateKeyToPEMString());
352 EXPECT_EQ(kECDSA_PUBLIC_KEY_PEM, identity->PublicKeyToPEMString());
285 EXPECT_EQ(kCERT_PEM, identity->certificate().ToPEMString()); 353 EXPECT_EQ(kCERT_PEM, identity->certificate().ToPEMString());
286 } 354 }
287 355
356 TEST_F(SSLIdentityTest, CloneIdentityRSA) {
357 TestCloningIdentity(*identity_rsa1_);
358 TestCloningIdentity(*identity_rsa2_);
359 }
360
361 TEST_F(SSLIdentityTest, CloneIdentityECDSA) {
362 TestCloningIdentity(*identity_ecdsa1_);
363 TestCloningIdentity(*identity_ecdsa2_);
364 }
365
288 TEST_F(SSLIdentityTest, PemDerConversion) { 366 TEST_F(SSLIdentityTest, PemDerConversion) {
289 std::string der; 367 std::string der;
290 EXPECT_TRUE(SSLIdentity::PemToDer("CERTIFICATE", kTestCertificate, &der)); 368 EXPECT_TRUE(SSLIdentity::PemToDer("CERTIFICATE", kTestCertificate, &der));
291 369
292 EXPECT_EQ(kTestCertificate, SSLIdentity::DerToPem( 370 EXPECT_EQ(kTestCertificate, SSLIdentity::DerToPem(
293 "CERTIFICATE", 371 "CERTIFICATE",
294 reinterpret_cast<const unsigned char*>(der.data()), der.length())); 372 reinterpret_cast<const unsigned char*>(der.data()), der.length()));
295 } 373 }
296 374
297 TEST_F(SSLIdentityTest, GetSignatureDigestAlgorithm) { 375 TEST_F(SSLIdentityTest, GetSignatureDigestAlgorithm) {
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after
409 } 487 }
410 }; 488 };
411 489
412 TEST_F(SSLIdentityExpirationTest, TestASN1TimeToSec) { 490 TEST_F(SSLIdentityExpirationTest, TestASN1TimeToSec) {
413 TestASN1TimeToSec(); 491 TestASN1TimeToSec();
414 } 492 }
415 493
416 TEST_F(SSLIdentityExpirationTest, TestExpireTime) { 494 TEST_F(SSLIdentityExpirationTest, TestExpireTime) {
417 TestExpireTime(500); 495 TestExpireTime(500);
418 } 496 }
OLDNEW
« no previous file with comments | « webrtc/base/sslidentity.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698