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)); |