Index: net/socket/ssl_client_socket_nss.cc |
diff --git a/net/socket/ssl_client_socket_nss.cc b/net/socket/ssl_client_socket_nss.cc |
index 9d0eea2a070398024e9dd5e34283ce1e2971e930..46facf10c96a4554f051ef5ff2a0aada4bb1e423 100644 |
--- a/net/socket/ssl_client_socket_nss.cc |
+++ b/net/socket/ssl_client_socket_nss.cc |
@@ -2824,6 +2824,22 @@ int SSLClientSocketNSS::ExportKeyingMaterial(const base::StringPiece& label, |
return OK; |
} |
+int SSLClientSocketNSS::GetTLSUniqueChannelBinding(std::string* out) { |
+ if (!IsConnected()) |
+ return ERR_SOCKET_NOT_CONNECTED; |
+ unsigned char buf[64]; |
+ unsigned int len; |
+ SECStatus result = SSL_GetChannelBinding(nss_fd_, |
+ SSL_CHANNEL_BINDING_TLS_UNIQUE, |
+ buf, &len, arraysize(buf)); |
+ if (result != SECSuccess) { |
+ LogFailedNSSFunction(net_log_, "SSL_GetChannelBinding", ""); |
+ return MapNSSError(PORT_GetError()); |
+ } |
+ out->assign(reinterpret_cast<char*>(buf), len); |
+ return OK; |
+} |
+ |
SSLClientSocket::NextProtoStatus |
SSLClientSocketNSS::GetNextProto(std::string* proto, |
std::string* server_protos) { |