Chromium Code Reviews| Index: webrtc/base/sslidentity_unittest.cc |
| diff --git a/webrtc/base/sslidentity_unittest.cc b/webrtc/base/sslidentity_unittest.cc |
| index f110f76861ed1794f704ccd24e39d8843df34a51..910035d9c834eebc35a47d423ea4ef75cf1f3370 100644 |
| --- a/webrtc/base/sslidentity_unittest.cc |
| +++ b/webrtc/base/sslidentity_unittest.cc |
| @@ -173,7 +173,25 @@ class SSLIdentityTest : public testing::Test { |
| EXPECT_EQ(0, memcmp(digest, expected_digest, expected_len)); |
| } |
| - private: |
| + void TestCloningIdentity(const SSLIdentity& identity) { |
| + // To PEM strings. |
| + std::string priv_pem = identity.PrivateKeyToPemString(); |
| + std::string cert_pem = identity.certificate().ToPEMString(); |
| + // Clone from PEM strings. |
| + rtc::scoped_ptr<SSLIdentity> clone( |
| + SSLIdentity::FromPEMStrings(priv_pem, cert_pem)); |
| + EXPECT_TRUE(clone); |
| + // Back to PEM strings. |
| + std::string clone_priv_pem = clone->PrivateKeyToPemString(); |
| + std::string clone_cert_pem = clone->certificate().ToPEMString(); |
| + ASSERT_EQ(priv_pem, clone_priv_pem); |
| + ASSERT_EQ(cert_pem, clone_cert_pem); |
| + // Make sure the expiration time is the same. |
| + ASSERT_EQ(identity.certificate().CertificateExpirationTime(), |
| + clone->certificate().CertificateExpirationTime()); |
| + } |
| + |
| + protected: |
| rtc::scoped_ptr<SSLIdentity> identity_rsa1_; |
| rtc::scoped_ptr<SSLIdentity> identity_rsa2_; |
| rtc::scoped_ptr<SSLIdentity> identity_ecdsa1_; |
| @@ -221,69 +239,76 @@ TEST_F(SSLIdentityTest, DigestSHA512) { |
| TEST_F(SSLIdentityTest, FromPEMStringsRSA) { |
| static const char kRSA_PRIVATE_KEY_PEM[] = |
| - "-----BEGIN RSA PRIVATE KEY-----\n" |
|
nisse-webrtc
2016/04/22 11:38:25
It might be appropriate with a comment saying how
hbos
2016/04/22 13:19:29
It's not obvious to me either, but torbjorng expla
|
| - "MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAMYRkbhmI7kVA/rM\n" |
| - "czsZ+6JDhDvnkF+vn6yCAGuRPV03zuRqZtDy4N4to7PZu9PjqrRl7nDMXrG3YG9y\n" |
| - "rlIAZ72KjcKKFAJxQyAKLCIdawKRyp8RdK3LEySWEZb0AV58IadqPZDTNHHRX8dz\n" |
| - "5aTSMsbbkZ+C/OzTnbiMqLL/vg6jAgMBAAECgYAvgOs4FJcgvp+TuREx7YtiYVsH\n" |
| - "mwQPTum2z/8VzWGwR8BBHBvIpVe1MbD/Y4seyI2aco/7UaisatSgJhsU46/9Y4fq\n" |
| - "2TwXH9QANf4at4d9n/R6rzwpAJOpgwZgKvdQjkfrKTtgLV+/dawvpxUYkRH4JZM1\n" |
| - "CVGukMfKNrSVH4Ap4QJBAOJmGV1ASPnB4r4nc99at7JuIJmd7fmuVUwUgYi4XgaR\n" |
| - "WhScBsgYwZ/JoywdyZJgnbcrTDuVcWG56B3vXbhdpMsCQQDf9zeJrjnPZ3Cqm79y\n" |
| - "kdqANep0uwZciiNiWxsQrCHztywOvbFhdp8iYVFG9EK8DMY41Y5TxUwsHD+67zao\n" |
| - "ZNqJAkEA1suLUP/GvL8IwuRneQd2tWDqqRQ/Td3qq03hP7e77XtF/buya3Ghclo5\n" |
| - "54czUR89QyVfJEC6278nzA7n2h1uVQJAcG6mztNL6ja/dKZjYZye2CY44QjSlLo0\n" |
| - "MTgTSjdfg/28fFn2Jjtqf9Pi/X+50LWI/RcYMC2no606wRk9kyOuIQJBAK6VSAim\n" |
| - "1pOEjsYQn0X5KEIrz1G3bfCbB848Ime3U2/FWlCHMr6ch8kCZ5d1WUeJD3LbwMNG\n" |
| - "UCXiYxSsu20QNVw=\n" |
| - "-----END RSA PRIVATE KEY-----\n"; |
| - |
| + "-----BEGIN PRIVATE KEY-----\n" |
| + "MIICdQIBADANBgkqhkiG9w0BAQEFAASCAl8wggJbAgEAAoGBALNu2P74IZBlpZ9g\n" |
| + "jdedrLDYoC6cstPFdqa5gXK+PQERy48oAOsw4jyAyuY9/37XDdIC/mGdKpd6xPAN\n" |
| + "7CvG2HEX/LFojIWnxlJPbRfCYFAwh1IKyGCTmhrv0zHphqlbiGAMDLerJcYhg5At\n" |
| + "oTADgf0Q3O6QQPhEQb25h6nO/zNhAgMBAAECgYBmgxPSR2zVlF0VOxKOdvSsbHbH\n" |
| + "apr4Rj5Nbno4VduAeuwzM4Wi2ODH9ET3WcBYdQDeVPuERUiKFofhJfMh547LyP/M\n" |
| + "laF0cqC0zJ1L7TB/z84eMYn+vQOI9fBAg98nUJ36CJboDCBYqH5mYLAqEjNhgg9f\n" |
| + "dF0YxByC2UQXekKoYQJBAN3fCCa6XvV0jaChnLJXHPqnK5sZ8MuV9VoRYqqHkDZH\n" |
| + "ZfVJOxjECeD98HY0mikq5dClzeGre+03CPe76Wqp3h0CQQDPCKj1zd7ZqquGwVuf\n" |
| + "JnFi4Ph6iaL/wGPSN6O0p2xJtv82heRzJYVwYBvcFO0+d/BdS4GGxhO8UeqN0BFN\n" |
| + "KvcVAkAhtXICmEw3FKcz4XnyKoQPnPhmDzHjbHwjXALWj9QcOwrFkoO1BovNsCcp\n" |
| + "fmJxoL/bzGUURT6F0te888LJ3tcNAkByaS2+ENP7Y+bAZHB2he8ZHowSY6dxQGep\n" |
| + "j1fniLI+FmP5RIrX2z9ft60NtX7aC7wIQqbEzQexBW/iiL5W78x1AkAjpkCJVyKh\n" |
| + "YNr8DZgwY5RsN1O5KnKvHhNivgnwh6ND7mj3LzcUKKUQ8nnxK5QQ0HdD4DN8fcif\n" |
| + "jcZp1fF/IoAm\n" |
| + "-----END PRIVATE KEY-----\n"; |
| static const char kCERT_PEM[] = |
| "-----BEGIN CERTIFICATE-----\n" |
| - "MIIBmTCCAQKgAwIBAgIEbzBSAjANBgkqhkiG9w0BAQsFADARMQ8wDQYDVQQDEwZX\n" |
| - "ZWJSVEMwHhcNMTQwMTAyMTgyNDQ3WhcNMTQwMjAxMTgyNDQ3WjARMQ8wDQYDVQQD\n" |
| - "EwZXZWJSVEMwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMYRkbhmI7kVA/rM\n" |
| - "czsZ+6JDhDvnkF+vn6yCAGuRPV03zuRqZtDy4N4to7PZu9PjqrRl7nDMXrG3YG9y\n" |
| - "rlIAZ72KjcKKFAJxQyAKLCIdawKRyp8RdK3LEySWEZb0AV58IadqPZDTNHHRX8dz\n" |
| - "5aTSMsbbkZ+C/OzTnbiMqLL/vg6jAgMBAAEwDQYJKoZIhvcNAQELBQADgYEAUflI\n" |
| - "VUe5Krqf5RVa5C3u/UTAOAUJBiDS3VANTCLBxjuMsvqOG0WvaYWP3HYPgrz0jXK2\n" |
| - "LJE/mGw3MyFHEqi81jh95J+ypl6xKW6Rm8jKLR87gUvCaVYn/Z4/P3AqcQTB7wOv\n" |
| - "UD0A8qfhfDM+LK6rPAnCsVN0NRDY3jvd6rzix9M=\n" |
| + "MIIBnDCCAQWgAwIBAgIJAOoVB4d2ANmKMA0GCSqGSIb3DQEBCwUAMBAxDjAMBgNV\n" |
| + "BAMMBXRlc3QxMB4XDTE2MDQxOTE0MjkyOVoXDTE2MDUyMDE0MjkyOVowEDEOMAwG\n" |
| + "A1UEAwwFdGVzdDEwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBALNu2P74IZBl\n" |
| + "pZ9gjdedrLDYoC6cstPFdqa5gXK+PQERy48oAOsw4jyAyuY9/37XDdIC/mGdKpd6\n" |
| + "xPAN7CvG2HEX/LFojIWnxlJPbRfCYFAwh1IKyGCTmhrv0zHphqlbiGAMDLerJcYh\n" |
| + "g5AtoTADgf0Q3O6QQPhEQb25h6nO/zNhAgMBAAEwDQYJKoZIhvcNAQELBQADgYEA\n" |
| + "hjEs1dqYyw5wM0W8uZVzh2d91d4Liw0esMLw0yoPMe77nlBrNyJEDwDsiYMDAGmM\n" |
| + "l/iF3KYb2s+JHuEjqc7LDT/vWn9h5dnuqUwKvDfxE1LFtToOdYBFfHSqNi3OeYAH\n" |
| + "bMN9f0lmbtRKvMKV0FciIlUpT2vfkRD8Dtz1S1EC3hw=\n" |
| "-----END CERTIFICATE-----\n"; |
| rtc::scoped_ptr<SSLIdentity> identity( |
| SSLIdentity::FromPEMStrings(kRSA_PRIVATE_KEY_PEM, kCERT_PEM)); |
| EXPECT_TRUE(identity); |
| + EXPECT_EQ(kRSA_PRIVATE_KEY_PEM, identity->PrivateKeyToPemString()); |
| EXPECT_EQ(kCERT_PEM, identity->certificate().ToPEMString()); |
| } |
| TEST_F(SSLIdentityTest, FromPEMStringsEC) { |
| - static const char kRSA_PRIVATE_KEY_PEM[] = |
| - "-----BEGIN EC PRIVATE KEY-----\n" |
| - "MHcCAQEEIKkIztWLPbs4Y2zWv7VW2Ov4is2ifleCuPgRB8fRv3IkoAoGCCqGSM49\n" |
| - "AwEHoUQDQgAEDPV33NrhSdhg9cBRkUWUXnVMXc3h17i9ARbSmNgminKcBXb8/y8L\n" |
| - "A76cMWQPPM0ybHO8OS7ZVg2U/m+TwE1M2g==\n" |
| - "-----END EC PRIVATE KEY-----\n"; |
| + static const char kECDSA_PRIVATE_KEY_PEM[] = |
| + "-----BEGIN PRIVATE KEY-----\n" |
| + "MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgMLDPZD/SzV5hyG31\n" |
| + "avokBljFHTA4glgp+xnWCEOUKk6hRANCAATgH/3UTWsznXg2bHiDyLasfzDuDbIs\n" |
| + "+gGfmo80ahvYe9F8ErC0N8RZve0GAzSrWSfoKosc9nA3KTTe3VxYTT34\n" |
| + "-----END PRIVATE KEY-----\n"; |
| static const char kCERT_PEM[] = |
| "-----BEGIN CERTIFICATE-----\n" |
| - "MIIB0jCCAXmgAwIBAgIJAMCjpFt9t6LMMAoGCCqGSM49BAMCMEUxCzAJBgNVBAYT\n" |
| - "AkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBXaWRn\n" |
| - "aXRzIFB0eSBMdGQwIBcNMTUwNjMwMTMwMTIyWhgPMjI4OTA0MTMxMzAxMjJaMEUx\n" |
| - "CzAJBgNVBAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRl\n" |
| - "cm5ldCBXaWRnaXRzIFB0eSBMdGQwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQM\n" |
| - "9Xfc2uFJ2GD1wFGRRZRedUxdzeHXuL0BFtKY2CaKcpwFdvz/LwsDvpwxZA88zTJs\n" |
| - "c7w5LtlWDZT+b5PATUzao1AwTjAdBgNVHQ4EFgQUYHq6nxNNIE832ZmaHc/noODO\n" |
| - "rtAwHwYDVR0jBBgwFoAUYHq6nxNNIE832ZmaHc/noODOrtAwDAYDVR0TBAUwAwEB\n" |
| - "/zAKBggqhkjOPQQDAgNHADBEAiAQRojsTyZG0BlKoU7gOt5h+yAMLl2cxmDtOIQr\n" |
| - "GWP/PwIgJynB4AUDsPT0DWmethOXYijB5sY5UPd9DvgmiS/Mr6s=\n" |
| + "MIIBFDCBu6ADAgECAgkA+w+/nByFy7EwCgYIKoZIzj0EAwIwEDEOMAwGA1UEAwwF\n" |
| + "dGVzdDMwHhcNMTYwNDE5MTQxNjAyWhcNMTYwNTIwMTQxNjAyWjAQMQ4wDAYDVQQD\n" |
| + "DAV0ZXN0MzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABOAf/dRNazOdeDZseIPI\n" |
| + "tqx/MO4Nsiz6AZ+ajzRqG9h70XwSsLQ3xFm97QYDNKtZJ+gqixz2cDcpNN7dXFhN\n" |
| + "PfgwCgYIKoZIzj0EAwIDSAAwRQIgbLGkSJZ3uJ2uAOrz8lIqWKUiHXe8ejBPG57P\n" |
| + "vxegTWICIQCN34hvg8yXgcytAUrkW78KFcRS4RNL1TJ7NAg+JbJGnQ==\n" |
| "-----END CERTIFICATE-----\n"; |
| rtc::scoped_ptr<SSLIdentity> identity( |
| - SSLIdentity::FromPEMStrings(kRSA_PRIVATE_KEY_PEM, kCERT_PEM)); |
| + SSLIdentity::FromPEMStrings(kECDSA_PRIVATE_KEY_PEM, kCERT_PEM)); |
| EXPECT_TRUE(identity); |
| + EXPECT_EQ(kECDSA_PRIVATE_KEY_PEM, identity->PrivateKeyToPemString()); |
| EXPECT_EQ(kCERT_PEM, identity->certificate().ToPEMString()); |
| } |
| +TEST_F(SSLIdentityTest, CloneIdentityRSA) { |
| + TestCloningIdentity(*identity_rsa1_); |
| + TestCloningIdentity(*identity_rsa2_); |
| +} |
| + |
| +TEST_F(SSLIdentityTest, CloneIdentityECDSA) { |
| + TestCloningIdentity(*identity_ecdsa1_); |
| + TestCloningIdentity(*identity_ecdsa2_); |
| +} |
| + |
| TEST_F(SSLIdentityTest, PemDerConversion) { |
| std::string der; |
| EXPECT_TRUE(SSLIdentity::PemToDer("CERTIFICATE", kTestCertificate, &der)); |