Home | History | Annotate | Download | only in ssl
      1 /*
      2  * Accessor functions for SSLSocket private members.
      3  *
      4  * ***** BEGIN LICENSE BLOCK *****
      5  * Version: MPL 1.1/GPL 2.0/LGPL 2.1
      6  *
      7  * The contents of this file are subject to the Mozilla Public License Version
      8  * 1.1 (the "License"); you may not use this file except in compliance with
      9  * the License. You may obtain a copy of the License at
     10  * http://www.mozilla.org/MPL/
     11  *
     12  * Software distributed under the License is distributed on an "AS IS" basis,
     13  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
     14  * for the specific language governing rights and limitations under the
     15  * License.
     16  *
     17  * The Original Code is the Netscape security libraries.
     18  *
     19  * The Initial Developer of the Original Code is
     20  * Netscape Communications Corporation.
     21  * Portions created by the Initial Developer are Copyright (C) 1994-2000
     22  * the Initial Developer. All Rights Reserved.
     23  *
     24  * Contributor(s):
     25  *
     26  * Alternatively, the contents of this file may be used under the terms of
     27  * either the GNU General Public License Version 2 or later (the "GPL"), or
     28  * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
     29  * in which case the provisions of the GPL or the LGPL are applicable instead
     30  * of those above. If you wish to allow use of your version of this file only
     31  * under the terms of either the GPL or the LGPL, and not to allow others to
     32  * use your version of this file under the terms of the MPL, indicate your
     33  * decision by deleting the provisions above and replace them with the notice
     34  * and other provisions required by the GPL or the LGPL. If you do not delete
     35  * the provisions above, a recipient may use your version of this file under
     36  * the terms of any one of the MPL, the GPL or the LGPL.
     37  *
     38  * ***** END LICENSE BLOCK ***** */
     39 /* $Id: sslreveal.c,v 1.4 2004/04/27 23:04:39 gerv%gerv.net Exp $ */
     40 
     41 #include "cert.h"
     42 #include "ssl.h"
     43 #include "certt.h"
     44 #include "sslimpl.h"
     45 
     46 /* given PRFileDesc, returns a copy of certificate associated with the socket
     47  * the caller should delete the cert when done with SSL_DestroyCertificate
     48  */
     49 CERTCertificate *
     50 SSL_RevealCert(PRFileDesc * fd)
     51 {
     52   CERTCertificate * cert = NULL;
     53   sslSocket * sslsocket = NULL;
     54 
     55   sslsocket = ssl_FindSocket(fd);
     56 
     57   /* CERT_DupCertificate increases reference count and returns pointer to
     58    * the same cert
     59    */
     60   if (sslsocket && sslsocket->sec.peerCert)
     61     cert = CERT_DupCertificate(sslsocket->sec.peerCert);
     62 
     63   return cert;
     64 }
     65 
     66 /* given PRFileDesc, returns a pointer to PinArg associated with the socket
     67  */
     68 void *
     69 SSL_RevealPinArg(PRFileDesc * fd)
     70 {
     71   sslSocket * sslsocket = NULL;
     72   void * PinArg = NULL;
     73 
     74   sslsocket = ssl_FindSocket(fd);
     75 
     76   /* is pkcs11PinArg part of the sslSocket or sslSecurityInfo ? */
     77   if (sslsocket)
     78     PinArg = sslsocket->pkcs11PinArg;
     79 
     80   return PinArg;
     81 }
     82 
     83 
     84 /* given PRFileDesc, returns a pointer to the URL associated with the socket
     85  * the caller should free url when done
     86  */
     87 char *
     88 SSL_RevealURL(PRFileDesc * fd)
     89 {
     90   sslSocket * sslsocket = NULL;
     91   char * url = NULL;
     92 
     93   sslsocket = ssl_FindSocket(fd);
     94 
     95   if (sslsocket && sslsocket->url)
     96     url = PL_strdup(sslsocket->url);
     97 
     98   return url;
     99 }
    100 
    101