summaryrefslogtreecommitdiffstats
path: root/net/third_party/nss/ssl/sslinfo.c
diff options
context:
space:
mode:
authoragl@chromium.org <agl@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-02-11 15:20:12 +0000
committeragl@chromium.org <agl@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-02-11 15:20:12 +0000
commita121c90cf3279e6001d0f91472b74b02699e2976 (patch)
tree691ab98c9033861131d1f2efe3343b93bc53f611 /net/third_party/nss/ssl/sslinfo.c
parentc5b97aac8117ffac51a2cf3cc7a1070ab5ff6e93 (diff)
downloadchromium_src-a121c90cf3279e6001d0f91472b74b02699e2976.zip
chromium_src-a121c90cf3279e6001d0f91472b74b02699e2976.tar.gz
chromium_src-a121c90cf3279e6001d0f91472b74b02699e2976.tar.bz2
Update our copy of libssl from NSS CVS.
http://codereview.chromium.org/596013 BUG=none TEST=none git-svn-id: svn://svn.chromium.org/chrome/trunk/src@38773 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/third_party/nss/ssl/sslinfo.c')
-rw-r--r--net/third_party/nss/ssl/sslinfo.c42
1 files changed, 41 insertions, 1 deletions
diff --git a/net/third_party/nss/ssl/sslinfo.c b/net/third_party/nss/ssl/sslinfo.c
index baa1ab3..e4ee35f 100644
--- a/net/third_party/nss/ssl/sslinfo.c
+++ b/net/third_party/nss/ssl/sslinfo.c
@@ -34,7 +34,7 @@
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
-/* $Id: sslinfo.c,v 1.21 2009/11/09 22:00:18 wtc%google.com Exp $ */
+/* $Id: sslinfo.c,v 1.23 2010/01/15 01:49:33 alexei.volkov.bugs%sun.com Exp $ */
#include "ssl.h"
#include "sslimpl.h"
#include "sslproto.h"
@@ -307,3 +307,43 @@ SSL_IsExportCipherSuite(PRUint16 cipherSuite)
}
return PR_FALSE;
}
+
+SECItem*
+SSL_GetNegotiatedHostInfo(PRFileDesc *fd)
+{
+ SECItem *sniName = NULL;
+ sslSocket *ss;
+ char *name = NULL;
+
+ ss = ssl_FindSocket(fd);
+ if (!ss) {
+ SSL_DBG(("%d: SSL[%d]: bad socket in SSL_GetNegotiatedHostInfo",
+ SSL_GETPID(), fd));
+ return NULL;
+ }
+
+ if (ss->sec.isServer) {
+ if (ss->version > SSL_LIBRARY_VERSION_3_0 &&
+ ss->ssl3.initialized) { /* TLS */
+ SECItem *crsName;
+ ssl_GetSpecReadLock(ss); /*********************************/
+ crsName = &ss->ssl3.crSpec->srvVirtName;
+ if (crsName->data) {
+ sniName = SECITEM_DupItem(crsName);
+ }
+ ssl_ReleaseSpecReadLock(ss); /*----------------------------*/
+ }
+ return sniName;
+ }
+ name = SSL_RevealURL(fd);
+ if (name) {
+ sniName = PORT_ZNew(SECItem);
+ if (!sniName) {
+ PORT_Free(name);
+ return NULL;
+ }
+ sniName->data = (void*)name;
+ sniName->len = PORT_Strlen(name);
+ }
+ return sniName;
+}