root/trunk/thirdparty/cl+ssl/index.html

Revision 2698, 7.4 kB (checked in by hans, 10 months ago)

updated cl+ssl from CVS trunk - now with deadlines

Line 
1 <?xml version="1.0" encoding="iso-8859-1"?>
2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
4   <head>
5     <title>CL+SSL</title>
6     <link rel="stylesheet" type="text/css" href="index.css"/>
7   </head>
8   <body>
9     <h1>CL+SSL</h1>
10
11     <p>
12       A Common Lisp interface to OpenSSL.
13     </p>
14
15     <h3>About</h3>
16
17     <p>
18       This library is a fork
19       of <a href="http://www.cliki.net/SSL-CMUCL">SSL-CMUCL</a>.  The
20       original SSL-CMUCL source code was written by Eric Marsden and
21       includes contributions by Jochen Schmidt. Development into CL+SSL
22       was done by David Lichteblau.  License: MIT-style.
23     </p>
24
25     <p>
26       Distinguishing features: CL+SSL is portable code based on CFFI and
27       gray streams.  It defines its own libssl BIO method, so that SSL
28       I/O can be written over portable Lisp streams instead of bypassing
29       the streams and sending data over Unix file descriptors directly.
30       (But the traditional approach is still used if possible.)
31     </p>
32
33     <h3>Download</h3>
34     <p>
35       Anonymous CVS (<a href="http://common-lisp.net/cgi-bin/viewcvs.cgi/?cvsroot=cl-plus-ssl">browse</a>):
36     </p>
37     <pre>$ cvs -d :pserver:anonymous:anonymous@common-lisp.net:/project/cl-plus-ssl/cvsroot cl+ssl</pre>
38     <p>
39       <a
40       href="http://common-lisp.net/project/cl-plus-ssl/download/">Tarballs</a>
41       are also available (but not always up-to-date).
42     </p>
43     <p>
44       Note that you need the <tt>libssl-dev</tt> package on Debian to
45       load this package without manual configuration.
46     </p>
47
48     <p>
49       Send bug reports to <a
50       href="mailto:cl-plus-ssl-devel@common-lisp.net">cl-plus-ssl-devel@common-lisp.net</a>
51       (<a
52       href="http://common-lisp.net/cgi-bin/mailman/listinfo/cl-plus-ssl-devel">list
53       information</a>).
54     </p>
55
56 <!--
57     <p>
58       Comparison chart:
59     </p>
60     <table border="1" cellpadding="2" cellspacing="0">
61       <thead>
62         <tr>
63           <th></th>
64           <th><b>FFI</b></th>
65           <th><b>Streams</b></th>
66           <th><b>Lisp-BIO</b></th>
67         </tr>
68       </thead>
69       <tr>
70         <td>CL+SSL</td>
71         <td>CFFI</td>
72         <td>gray<sup>1</sup>, buffering output</td>
73         <td>yes</td>
74       </tr>
75       <tr>
76         <td>CL-SSL</td>
77         <td>UFFI</td>
78         <td>gray, buffering I/O [<em>part of ACL-COMPAT</em>]</td>
79         <td>no</td>
80       </tr>
81       <tr>
82         <td>SSL-CMUCL</td>
83         <td>CMUCL/ALIEN</td>
84         <td>CMUCL, non-buffering</td>
85         <td>no</td>
86       </tr>
87     </table>
88     <p>
89       <sup>1</sup>&nbsp;Character I/O and external formats in CL+SSL
90       are provided
91       using <a href="http://weitz.de/flexi-streams/">flexi-streams</a>.
92     </p>
93 -->
94
95     <h3>API functions</h3>
96     <p>
97       <div class="def">Function CL+SSL:MAKE-SSL-CLIENT-STREAM (fd-or-stream &amp;key external-format certificate key close-callback (unwrap-streams-p t))<br/><br/>
98       Function CL+SSL:MAKE-SSL-SERVER-STREAM (fd-or-stream &amp;key external-format certificate key close-callback (unwrap-streams-p t))</div>
99       Return an SSL stream for the client (server)
100       socket <tt>fd-or-stream</tt>.  All reads and writes to this
101       stream will be pushed through the OpenSSL library.
102     </p>
103     <p>
104       Keyword arguments:
105     </p>
106     <p>
107       If <tt>fd-or-stream</tt> is a lisp stream, the SSL stream will
108       close it automatically.  File descriptors are not closed
109       automatically.  However, if <tt>close-callback</tt> is non-nil, it
110       will be called with zero arguments when the SSL stream is closed.
111     </p>
112     <p>
113       If <tt>unwrap-stream-p</tt> is true (the default), a stream for a
114       file descriptor will be replaced by that file descriptor
115       automatically.  This is similar to passing the result
116       of <tt>stream-fd</tt> as an argument, except that a deadline
117       associated with the stream object will be taken into account, and
118       that the stream will be closed automatically.  As with file
119       descriptor arguments, no I/O will actually be done on the stream
120       object.
121     </p>
122     <p>
123       <tt>certificate</tt> is the path to a file containing the PEM-encoded
124       certificate for your client. <tt>key</tt> is the path to the PEM-encoded
125       key for the client, which must not be associated with a passphrase.
126     </p>
127     <p>
128       If <tt>external-format</tt> is <tt>nil</tt> (the default), a plain
129       <tt>(unsigned-byte 8)</tt> SSL stream is returned.  With a
130       non-null <tt>external-format</tt>, a flexi-stream capable of
131       character I/O will be returned instead, with the specified value
132       as its initial external format.
133     </p>
134     <p>
135       <div class="def">Function CL+SSL:RELOAD ()</div>
136       Reload <tt>libssl</tt>.  Call this function after restarting a Lisp
137       core with CL+SSL dumped into it on Lisp implementations that do
138       not reload shared libraries automatically.
139     </p>
140     <p>
141       <div class="def">Function CL+SSL:STREAM-FD (stream)</div>
142       Return <tt>stream</tt>'s file descriptor as an integer, if known.
143       Otherwise return <tt>stream</tt> itself.  The result of this
144       function can be passed to <tt>make-ssl-client-stream</tt>
145       and <tt>make-ssl-server-stream</tt>.
146     </p>
147
148     <h3>Portability</h3>
149     <p>
150       CL+SSL requires CFFI with callback support.
151     </p>
152     <p>
153       Test results for Linux/x86, except OpenMCL which was tested on
154       Linux/PPC:
155     </p>
156     <table border="1" cellpadding="2" cellspacing="0">
157       <thead>
158         <tr>
159           <th><b>Lisp Implementation</b></th>
160           <th><b>Status</b></th>
161           <th><b>Comments</b></th>
162         </tr>
163       </thead>
164       <tr><td>OpenMCL</td><td class="working">Working</td></tr>
165       <tr><td>SBCL</td><td class="working">Working</td></tr>
166       <tr><td>CMU CL</td><td class="working">Working</td></tr>
167       <tr><td>CLISP</td><td class="working">Working</td></tr>
168       <tr><td>LispWorks</td><td class="working">Working</td></tr>
169       <tr>
170         <td>Allegro</td>
171         <td class="broken">Broken</td>
172         <td>segfault</td>
173       </tr>
174       <tr><td>Corman CL</td><td class="unknown">Unknown</td></tr>
175       <tr><td>Digitool MCL</td><td class="unknown">Unknown</td></tr>
176       <tr><td>Scieneer CL</td><td class="unknown">Unknown</td></tr>
177       <tr><td>ECL</td><td class="unknown">Unknown</td></tr>
178       <tr><td>GCL</td><td class="unknown">Unknown</td></tr>
179     </table>
180
181     <h3>TODO</h3>
182     <ul>
183       <li>CNAME checking</li>
184       <li>session caching</li>
185       <li>The FFI code for all platforms except clisp needs to be
186       rewritten.</li>
187     </ul>
188
189     <h3>News</h3>
190     <p>
191       2008-xx-yy
192     </p>
193     <ul>
194       <li>
195         Support for I/O deadlines (Clozure CL and SBCL).
196       </li>
197     </ul>
198     <p>
199       2007-xx-yy
200     </p>
201     <ul>
202       <li>
203         Fixed windows support, thanks to Matthew Kennedy and Vodonosov Anton.
204       </li>
205     </ul>
206     <p>
207       2007-07-07
208     </p>
209     <ul>
210       <li>
211         Improved clisp support, thanks
212         to <a
213               href="http://web.kepibu.org/code/lisp/cl+ssl/">Pixel
214           // pinterface</a>, as well as client certificate support.
215       </li>
216       <li>
217         Re-introduced support for direct access to file descriptors as
218         an optimization.  New function <tt>stream-fd</tt>.  New keyword
219         argument <tt>close-callback</tt>.
220       </li>
221     </ul>
222     <p>
223       2007-01-16: CL+SSL is now available under an MIT-style license.
224     </p>
225   </body>
226 </html>
Note: See TracBrowser for help on using the browser.