<head>
<title>pushtls(3) - Plan 9 from User Space</title>
<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
</head>
<body bgcolor=#ffffff>
<table border=0 cellpadding=0 cellspacing=0 width=100%>
<tr height=10><td>
<tr><td width=20><td>
<tr><td width=20><td><b>PUSHTLS(3)</b><td align=right><b>PUSHTLS(3)</b>
<tr><td width=20><td colspan=2>
    <br>
<p><font size=+1><b>NAME     </b></font><br>

<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>

    pushtls, tlsClient, tlsServer, initThumbprints, freeThumbprints,
    okThumbprint, readcert, readcertchain &ndash; attach TLS1 or SSL3 encryption
    to a communication channel<br>
    
</table>
<p><font size=+1><b>SYNOPSIS     </b></font><br>

<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>

    <tt><font size=+1>#include &lt;u.h&gt;<br>
    #include &lt;libc.h&gt; 
    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
    </font></tt>
    <tt><font size=+1>int   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pushtls(int fd, char *hashalg, char *encalg,<br>
       
    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>

        
        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>

            int isclient, char *secret, char *dir) 
            <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
            
        </table>
        
    </table>
    </font></tt>
    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>

        
        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>

            
            
        </table>
        
    </table>
    <tt><font size=+1>#include &lt;mp.h&gt;<br>
    #include &lt;libsec.h&gt; 
    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
    </font></tt>
    <tt><font size=+1>int   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tlsClient(int fd, TLSconn *conn) 
    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
    </font></tt>
    <tt><font size=+1>int   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tlsServer(int fd, TLSconn *conn) 
    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
    </font></tt>
    <tt><font size=+1>uchar  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*readcert(char *filename, int *pcertlen) 
    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
    </font></tt>
    <tt><font size=+1>PEMchain  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*readcertchain(char *filename) 
    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
    </font></tt>
    <tt><font size=+1>Thumbprint* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;initThumbprints(char *ok, char *crl) 
    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
    </font></tt>
    <tt><font size=+1>void   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;freeThumbprints(Thumbprint *table) 
    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
    </font></tt>
    <tt><font size=+1>int   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;okThumbprint(uchar *hash, Thumbprint *table)<br>
    </font></tt>
</table>
<p><font size=+1><b>DESCRIPTION     </b></font><br>

<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>

    Transport Layer Security (TLS) comprises a record layer protocol,
    doing message digesting and encrypting in the kernel, and a handshake
    protocol, doing initial authentication and secret creation at
    user level and then starting a data channel in the record protocol.
    TLS is nearly the same as SSL 3.0, and the software
    should interoperate with implementations of either standard. 
    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
    
    To use just the record layer, as described in Plan 9&#8217;s <i>tls</i>(3),
    call <i>pushtls</i> to open the record layer device, connect to the communications
    channel <i>fd</i>, and start up encryption and message authentication
    as specified in <i>hashalg</i>, <i>encalg</i>, and <i>secret</i>. These parameters
    must have been arranged at the two ends of the
    conversation by other means. For example, <i>hashalg</i> could be <tt><font size=+1>sha1</font></tt>,
    <i>encalg</i> could be <tt><font size=+1>rc4_128</font></tt>, and <i>secret</i> could be the base-64 encoding
    of two (client-to-server and server-to-client) 20-byte digest
    keys and two corresponding 16-byte encryption keys. <i>Pushtls</i> returns
    a file descriptor for the TLS data channel.
    Anything written to this descriptor will get encrypted and authenticated
    and then written to the file descriptor, <i>fd</i>. If <i>dir</i> is non-zero,
    the path name of the connection directory is copied into <i>dir</i>.
    This path name is guaranteed to be less than 40 bytes long. 
    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
    
    Alternatively, call <i>tlsClient</i> to speak the full handshake protocol,
    negotiate the algorithms and secrets, and return a new data file
    descriptor for the data channel. <i>Conn</i> points to a (caller-allocated)
    struct<br>
     
    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>

        <tt><font size=+1>typedef struct TLSconn{<br>
         
        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>

            char dir[40]; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// OUT &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;connection directory<br>
             uchar *cert; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// IN/OUT certificate<br>
             uchar *sessionID; // IN/OUT sessionID<br>
             int certlen, sessionIDlen;<br>
             void (*trace)(char*fmt, ...);<br>
             PEMChain *chain;<br>
            
        </table>
         } TLSconn;<br>
        </font></tt>
    </table>
    defined in <i>tls.h</i>. On input, the caller can provide options such
    as <i>cert</i>, the local certificate, and <i>sessionID</i>, used by a client
    to resume a previously negotiated security association. On output,
    the connection directory is set, as with <tt><font size=+1>listen</font></tt> (see <a href="../man3/dial.html"><i>dial</i>(3)</a>).
    The input <i>cert</i> is freed and a freshly allocated copy of the remote&#8217;s
    certificate is returned in <i>conn</i>, to be checked by the caller according
    to its needs. One mechanism is supplied by <i>initThumbprints</i> and
    <i>freeThumbprints</i> which allocate and free, respectively, a table
    of hashes from files of known trusted and revoked certificates.
    <i>okThumbprint</i> confirms that a particular hash is in the
    table, as computed by 
    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
    
     
    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>

        <tt><font size=+1>uchar hash[SHA1dlen];<br>
         conn = (TLSconn*)mallocz(sizeof *conn, 1);<br>
         fd = tlsClient(fd, conn);<br>
         sha1(conn&#8722;&gt;cert, conn&#8722;&gt;certlen, hash, nil);<br>
         if(!okThumbprint(hash,table))<br>
         
        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>

            exits(&quot;suspect server&quot;);<br>
            
        </table>
         ...application begins...<br>
        
        <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
        </font></tt>
        
    </table>
    Call <i>tlsServer</i> to perform the corresponding function on the server
    side: 
    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
    
     
    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>

        <tt><font size=+1>fd = accept(lcfd, ldir);<br>
         conn = (TLSconn*)mallocz(sizeof *conn, 1);<br>
         conn&#8722;&gt;cert = readcert(&quot;cert.pem&quot;, &amp;conn&#8722;&gt;certlen);<br>
         fd = tlsServer(fd, conn);<br>
         ...application begins...<br>
        </font></tt>
    </table>
    The private key corresponding to <i>cert.pem</i> should have been previously
    loaded into factotum. (See <a href="../man3/rsa.html"><i>rsa</i>(3)</a> for more about key generation.)
    By setting<br>
     
    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>

        <tt><font size=+1>conn&#8722;&gt;chain = readcertchain(&quot;intermediate&#8722;certs.pem&quot;);<br>
        </font></tt>
    </table>
    the server can present extra certificate evidence to establish
    the chain of trust to a root authority known to the client. 
    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
    
    <i>Conn</i> is not required for the ongoing conversation and may be freed
    by the application whenever convenient.<br>
    
</table>
<p><font size=+1><b>FILES     </b></font><br>

<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>

    <tt><font size=+1>/sys/lib/tls<br>
    </font></tt>
    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>

        thumbprints of trusted services<br>
        
    </table>
    <tt><font size=+1>/sys/lib/ssl<br>
    </font></tt>
    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>

        PEM certificate files<br>
        
    </table>
    
</table>
<p><font size=+1><b>SOURCE     </b></font><br>

<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>

    <tt><font size=+1>/usr/local/plan9/src/libsec/port<br>
    </font></tt>
</table>
<p><font size=+1><b>SEE ALSO     </b></font><br>

<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>

    <a href="../man3/dial.html"><i>dial</i>(3)</a>, <a href="../man7/thumbprint.html"><i>thumbprint</i>(7)</a>; Plan 9&#8217;s <i>factotum</i>(4) and <i>tls</i>(3)<br>
    
</table>
<p><font size=+1><b>DIAGNOSTICS     </b></font><br>

<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>

    return &ndash;1 on failure.<br>
    
</table>
<p><font size=+1><b>BUGS     </b></font><br>

<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>

    <i>Pushtls</i> is not implemented. 
    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
    
    Client certificates and client sessionIDs are not yet implemented.
    
    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
    
    Note that in the TLS protocol <i>sessionID</i> itself is public; it is
    used as a pointer to secrets stored in factotum.<br>
    
</table>

<td width=20>
<tr height=20><td>
</table>
<!-- TRAILER -->
<table border=0 cellpadding=0 cellspacing=0 width=100%>
<tr height=15><td width=10><td><td width=10>
<tr><td><td>
<center>
<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
</center>
</table>
<!-- TRAILER -->
</body></html>
