Index: webrtc/base/rtccertificate.h |
diff --git a/webrtc/base/rtccertificate.h b/webrtc/base/rtccertificate.h |
index 3d4f36e6a3e9886c70ba516bb77225929a1807b9..46d6fd427cf0e09d63e811c91dd22ab12de9c1e1 100644 |
--- a/webrtc/base/rtccertificate.h |
+++ b/webrtc/base/rtccertificate.h |
@@ -20,6 +20,28 @@ |
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. The PEM format is that of |
+// |SSLIdentity::PrivateKeyToPEMString| and |SSLCertificate::ToPEMString|, e.g. |
+// the string representations used by OpenSSL. |
+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. |
@@ -42,6 +64,12 @@ 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); |
+ bool operator==(const RTCCertificate& certificate) const; |
+ bool operator!=(const RTCCertificate& certificate) const; |
+ |
protected: |
explicit RTCCertificate(SSLIdentity* identity); |
~RTCCertificate() override; |