| Index: webrtc/base/sslstreamadapter.h
|
| diff --git a/webrtc/base/sslstreamadapter.h b/webrtc/base/sslstreamadapter.h
|
| index a7ef23fc79935aeefef6773cc8d0fc8725152a94..2b99f00cb307eed1aaa3aa210eae8aebe299fd8d 100644
|
| --- a/webrtc/base/sslstreamadapter.h
|
| +++ b/webrtc/base/sslstreamadapter.h
|
| @@ -106,6 +106,12 @@ enum SSLProtocolVersion {
|
| SSL_PROTOCOL_DTLS_10 = SSL_PROTOCOL_TLS_11,
|
| SSL_PROTOCOL_DTLS_12 = SSL_PROTOCOL_TLS_12,
|
| };
|
| +enum class SSLPeerCertificateDigestError {
|
| + NONE,
|
| + UNKNOWN_ALGORITHM,
|
| + INVALID_LENGTH,
|
| + VERIFICATION_FAILED,
|
| +};
|
|
|
| // Errors for Read -- in the high range so no conflict with OpenSSL.
|
| enum { SSE_MSG_TRUNC = 0xff0001 };
|
| @@ -173,9 +179,14 @@ class SSLStreamAdapter : public StreamAdapterInterface {
|
| // certificate is assumed to have been obtained through some other secure
|
| // channel (such as the signaling channel). This must specify the terminal
|
| // certificate, not just a CA. SSLStream makes a copy of the digest value.
|
| - virtual bool SetPeerCertificateDigest(const std::string& digest_alg,
|
| - const unsigned char* digest_val,
|
| - size_t digest_len) = 0;
|
| + //
|
| + // Returns true if successful.
|
| + // |error| is optional and provides more information about the failure.
|
| + virtual bool SetPeerCertificateDigest(
|
| + const std::string& digest_alg,
|
| + const unsigned char* digest_val,
|
| + size_t digest_len,
|
| + SSLPeerCertificateDigestError* error = nullptr) = 0;
|
|
|
| // Retrieves the peer's X.509 certificate, if a connection has been
|
| // established. It returns the transmitted over SSL, including the entire
|
| @@ -211,6 +222,12 @@ class SSLStreamAdapter : public StreamAdapterInterface {
|
| virtual bool SetDtlsSrtpCryptoSuites(const std::vector<int>& crypto_suites);
|
| virtual bool GetDtlsSrtpCryptoSuite(int* crypto_suite);
|
|
|
| + // Returns true if a TLS connection has been established.
|
| + // The only difference between this and "GetState() == SE_OPEN" is that if
|
| + // the peer certificate digest hasn't been verified, the state will still be
|
| + // SS_OPENING but IsTlsConnected should return true.
|
| + virtual bool IsTlsConnected() = 0;
|
| +
|
| // Capabilities testing
|
| static bool HaveDtls();
|
| static bool HaveDtlsSrtp();
|
|
|