summaryrefslogtreecommitdiffstats
path: root/net/socket/ssl_client_socket_nss.cc
diff options
context:
space:
mode:
Diffstat (limited to 'net/socket/ssl_client_socket_nss.cc')
-rw-r--r--net/socket/ssl_client_socket_nss.cc18
1 files changed, 18 insertions, 0 deletions
diff --git a/net/socket/ssl_client_socket_nss.cc b/net/socket/ssl_client_socket_nss.cc
index 0a28439..eddac5c 100644
--- a/net/socket/ssl_client_socket_nss.cc
+++ b/net/socket/ssl_client_socket_nss.cc
@@ -523,6 +523,24 @@ void SSLClientSocketNSS::GetSSLCertRequestInfo(
LeaveFunction(cert_request_info->client_certs.size());
}
+int SSLClientSocketNSS::ExportKeyingMaterial(const base::StringPiece& label,
+ const base::StringPiece& context,
+ unsigned char *out,
+ unsigned int outlen) {
+ if (!IsConnected())
+ return ERR_SOCKET_NOT_CONNECTED;
+ std::string label_string(label.data(), label.length());
+ SECStatus result = SSL_ExportKeyingMaterial(
+ nss_fd_, label_string.c_str(),
+ reinterpret_cast<const unsigned char*>(context.data()),
+ context.length(), out, outlen);
+ if (result != SECSuccess) {
+ LogFailedNSSFunction(net_log_, "SSL_ExportKeyingMaterial", "");
+ return MapNSSError(PORT_GetError());
+ }
+ return OK;
+}
+
SSLClientSocket::NextProtoStatus
SSLClientSocketNSS::GetNextProto(std::string* proto) {
#if defined(SSL_NEXT_PROTO_NEGOTIATED)