Chromium Code Reviews| Index: webrtc/base/opensslidentity.cc |
| diff --git a/webrtc/base/opensslidentity.cc b/webrtc/base/opensslidentity.cc |
| index 9c2112e157c0dc71099b57a764c58c4e48d4c28b..d86974569c40f58948a811e840871d410cc9f3ad 100644 |
| --- a/webrtc/base/opensslidentity.cc |
| +++ b/webrtc/base/opensslidentity.cc |
| @@ -181,6 +181,28 @@ void OpenSSLKeyPair::AddReference() { |
| #endif |
| } |
| +std::string OpenSSLKeyPair::PrivateKeyToPemString() const { |
| + BIO* temp_memory_bio = BIO_new(BIO_s_mem()); |
| + if (!temp_memory_bio) { |
| + LOG_F(LS_ERROR) << "Failed to allocate temporary memory bio"; |
| + RTC_NOTREACHED(); |
| + return ""; |
| + } |
| + if (!PEM_write_bio_PrivateKey( |
| + temp_memory_bio, pkey_, nullptr, nullptr, 0, nullptr, nullptr)) { |
| + LOG_F(LS_ERROR) << "Failed to read private key"; |
|
nisse-webrtc
2016/04/22 11:38:25
s/read/write/ in error message.
hbos
2016/04/22 13:19:29
Done.
|
| + BIO_free(temp_memory_bio); |
| + RTC_NOTREACHED(); |
| + return ""; |
| + } |
| + BIO_write(temp_memory_bio, "\0", 1); |
| + char* buffer; |
| + BIO_get_mem_data(temp_memory_bio, &buffer); |
| + std::string priv_key_str = buffer; |
| + BIO_free(temp_memory_bio); |
| + return priv_key_str; |
| +} |
| + |
| #if !defined(NDEBUG) |
| // Print a certificate to the log, for debugging. |
| static void PrintCert(X509* x509) { |
| @@ -475,6 +497,10 @@ bool OpenSSLIdentity::ConfigureIdentity(SSL_CTX* ctx) { |
| return true; |
| } |
| +std::string OpenSSLIdentity::PrivateKeyToPemString() const { |
| + return key_pair_->PrivateKeyToPemString(); |
| +} |
| + |
| } // namespace rtc |
| #endif // HAVE_OPENSSL_SSL_H |