Index: webrtc/base/rtccertificate.h |
diff --git a/webrtc/base/rtccertificate.h b/webrtc/base/rtccertificate.h |
index 600739bc86a9211172337e3b88d189f95835b839..214485a6f7a8a432ff56e3630defb4f791449780 100644 |
--- a/webrtc/base/rtccertificate.h |
+++ b/webrtc/base/rtccertificate.h |
@@ -19,6 +19,26 @@ |
namespace rtc { |
+// This class contains PEM strings of an RTCCertificate's private key and |
+// certificate and acts as a text representation of RTCCertificate. Certificates |
+// can be serialized and deserialized to and from this format, which allows for |
+// cloning and storing of certificates to disk. |
+class RTCCertificatePem { |
+ public: |
+ RTCCertificatePem( |
+ const std::string& private_key, |
+ const std::string& certificate) |
+ : private_key_(private_key), |
+ certificate_(certificate) {} |
+ |
+ const std::string& private_key() const { return private_key_; } |
+ const std::string& certificate() const { return certificate_; } |
+ |
+ private: |
+ std::string private_key_; |
+ std::string certificate_; |
+}; |
+ |
// A thin abstraction layer between "lower level crypto stuff" like |
// SSLCertificate and WebRTC usage. Takes ownership of some lower level objects, |
// reference counting protects these from premature destruction. |
@@ -40,6 +60,10 @@ class RTCCertificate : public RefCountInterface { |
// However, some places might need SSLIdentity* for its public/private key... |
SSLIdentity* identity() const { return identity_.get(); } |
+ // To/from PEM, a text representation of the RTCCertificate. |
+ RTCCertificatePem ToPem() const; |
+ static scoped_refptr<RTCCertificate> FromPem(const RTCCertificatePem& pem); |
+ |
protected: |
explicit RTCCertificate(SSLIdentity* identity); |
~RTCCertificate() override; |