#include 'common.wml' page="News"

<p>This page started as a comparison of different free software TLS implementations,
and has now evolved to a <a href="http://en.wikipedia.org/w/index.php?title=Comparison_of_TLS_Implementations">Wikipedia article</a>,
that anyone can update. 

</p>
<!---
<p>The colors <font color="lightgreen">green</font> and <font
color="red">red</font> indicates good and bad situations.  Some of these
choices may be somewhat subjective.  Based on your feedback, we'd
might consider to change specific items to yellow.

<p>We compare stable versions for each software.  The software
compared includes <a
href="http://www.gnu.org/software/gnutls/">GnuTLS</a> 2.10.x, <a
href="http://www.openssl.org/">OpenSSL</a> 0.9.8k, <a
href="http://www.mozilla.org/projects/security/pki/nss/">NSS</a>
3.12.4, <a href="http://yassl.com/">YaSSL</a> 1.9.6 and
<a href="http://polarssl.org/">PolarSSL</a> 0.99-pre1.

<h1>Protocol support</h1>

<table>

  <tr bgcolor=$(TABLE_HDCOLOR)>
    <th></th>
    <th><b>SSLv2.0</b> [1]</th>
    <th><b>SSLv3.0</b></th>
    <th><b>TLSv1.0</b></th>
    <th><b>TLSv1.1</b></th>
    <th><b>TLSv1.2</b></th>
  </tr>

  <tr bgcolor=$(TABLE_BGCOLOR)>
    <td bgcolor=$(TABLE_BGCOLOR2)><b>GnuTLS</b></td>
    <td bgcolor="lightgreen">No</td>
    <td bgcolor="lightgreen">Yes</td>
    <td bgcolor="lightgreen">Yes</td>
    <td bgcolor="lightgreen">Yes</td>
    <td bgcolor="lightgreen">Yes</td>
  </tr>

  <tr bgcolor=$(TABLE_BGCOLOR)>
    <td bgcolor=$(TABLE_BGCOLOR2)><b>OpenSSL</b></td>
    <td bgcolor="red">Yes</td>
    <td bgcolor="lightgreen">Yes</td>
    <td bgcolor="lightgreen">Yes</td>
    <td bgcolor="red">No</td>
    <td bgcolor="red">No</td>
  </tr>

  <tr bgcolor=$(TABLE_BGCOLOR)>
    <td bgcolor=$(TABLE_BGCOLOR2)><b>NSS</b></td>
    <td bgcolor="lightgreen">Yes, off by default</td>
    <td bgcolor="lightgreen">Yes</td>
    <td bgcolor="lightgreen">Yes</td>
    <td bgcolor="red">No?</td>
    <td bgcolor="red">No?</td>
  </tr>

  <tr bgcolor=$(TABLE_BGCOLOR)>
    <td bgcolor=$(TABLE_BGCOLOR2)><b>yaSSL</b></td>
    <td bgcolor="lightgreen">No</td>
    <td bgcolor="lightgreen">Yes</td>
    <td bgcolor="lightgreen">Yes</td>
    <td bgcolor="lightgreen">Yes</td>
    <td bgcolor="lightgreen">Yes</td>
  </tr>

  <tr bgcolor=$(TABLE_BGCOLOR)>
    <td bgcolor=$(TABLE_BGCOLOR2)><b>PolarSSL</b></td>
    <td bgcolor="lightgreen">No</td>
    <td bgcolor="lightgreen">Yes</td>
    <td bgcolor="lightgreen">Yes</td>
    <td bgcolor="lightgreen">Yes</td>
    <td bgcolor="red">No</td>
  </tr>

</table>

<table>
<tr><td>Notes:</td></tr>

<tr><td>[1]: <a href="manual/html_node/On-SSL-2-and-older-protocols.html">SSLv2 is insecure</a>.</td></tr>

</table>

<h1>Key exchange algorithms</h1>

<table>

  <tr bgcolor=$(TABLE_HDCOLOR)>
    <th></th>
    <th><b>Anonymous</b></th>
    <th><b>RSA</b></th>
    <th><b>RSA-EXPORT</b></th>
    <th><b>DHE-RSA</b></th>
    <th><b>DHE-DSS</b></th>
    <th><b>SRP-DSS</b></th>
    <th><b>SRP-RSA</b></th>
    <th><b>SRP</b></th>
    <th><b>PSK</b></th>
    <th><b>DHE-PSK</b></th>
    <th><b>ECC</b></th>
  </tr>

  <tr bgcolor=$(TABLE_BGCOLOR)>
    <td bgcolor=$(TABLE_BGCOLOR2)><b>GnuTLS</b></td>
    <td bgcolor="lightgreen">Yes</td>
    <td bgcolor="lightgreen">Yes</td>
    <td bgcolor="lightgreen">Yes</td>
    <td bgcolor="lightgreen">Yes</td>
    <td bgcolor="lightgreen">Yes</td>
    <td bgcolor="lightgreen">Yes</td>
    <td bgcolor="lightgreen">Yes</td>
    <td bgcolor="lightgreen">Yes</td>
    <td bgcolor="lightgreen">Yes</td>
    <td bgcolor="lightgreen">Yes</td>
    <td bgcolor="red">No</td>
  </tr>

  <tr bgcolor=$(TABLE_BGCOLOR)>
    <td bgcolor=$(TABLE_BGCOLOR2)><b>OpenSSL</b></td>
    <td bgcolor="lightgreen">Yes</td>
    <td bgcolor="lightgreen">Yes</td>
    <td bgcolor="lightgreen">Yes</td>
    <td bgcolor="lightgreen">Yes</td>
    <td bgcolor="lightgreen">Yes</td>
    <td bgcolor="red">No</td>
    <td bgcolor="red">No</td>
    <td bgcolor="red">No</td>
    <td bgcolor="red">No</td>
    <td bgcolor="red">No</td>
    <td bgcolor="lightgreen">Yes</td>
  </tr>

  <tr bgcolor=$(TABLE_BGCOLOR)>
    <td bgcolor=$(TABLE_BGCOLOR2)><b>NSS</b></td>
    <td bgcolor="lightgreen">Yes</td>
    <td bgcolor="lightgreen">Yes</td>
    <td bgcolor="lightgreen">Yes</td>
    <td bgcolor="lightgreen">Yes</td>
    <td bgcolor="lightgreen">Yes</td>
    <td bgcolor="red">No</td>
    <td bgcolor="red">No</td>
    <td bgcolor="red">No</td>
    <td bgcolor="red">No</td>
    <td bgcolor="red">No</td>
    <td bgcolor="lightgreen">Yes</td>
  </tr>

  <tr bgcolor=$(TABLE_BGCOLOR)>
    <td bgcolor=$(TABLE_BGCOLOR2)><b>YaSSL</b></td>
    <td bgcolor="lightgreen">Yes</td>
    <td bgcolor="lightgreen">Yes</td>
    <td bgcolor="lightgreen">Yes</td>
    <td bgcolor="lightgreen">Yes</td>
    <td bgcolor="lightgreen">Yes</td>
    <td bgcolor="red">No</td>
    <td bgcolor="red">No</td>
    <td bgcolor="red">No</td>
    <td bgcolor="lightgreen">Yes</td>
    <td bgcolor="lightgreen">Yes</td>
    <td bgcolor="red">No</td>
  </tr>

  <tr bgcolor=$(TABLE_BGCOLOR)>
    <td bgcolor=$(TABLE_BGCOLOR2)><b>PolarSSL</b></td>
    <td bgcolor="lightgreen">Yes</td>
    <td bgcolor="lightgreen">Yes</td>
    <td bgcolor="lightgreen">Yes</td>
    <td bgcolor="lightgreen">Yes</td>
    <td bgcolor="red">No</td>
    <td bgcolor="red">No</td>
    <td bgcolor="red">No</td>
    <td bgcolor="red">No</td>
    <td bgcolor="red">No</td>
    <td bgcolor="red">No</td>
    <td bgcolor="red">No</td>
  </tr>

</table>

<h1>Encryption algorithms</h1>

<table>

  <tr bgcolor=$(TABLE_HDCOLOR)>
    <th></th>
    <th><b>AES-CBC</b></th>
    <th><b>AES-GCM</b></th>
    <th><b>3DES-CBC</b></th>
    <th><b>DES-CBC</b></th>
    <th><b>RC4-128 CBC</b></th>
    <th><b>RC4-40 [1]</b></th>
    <th><b>CAMELLIA-CBC</b></th>
  </tr>

  <tr bgcolor=$(TABLE_BGCOLOR)>
    <td bgcolor=$(TABLE_BGCOLOR2)><b>GnuTLS</b></td>
    <td bgcolor="lightgreen">Yes</td>
    <td bgcolor="red">No</td>
    <td bgcolor="lightgreen">Yes</td>
    <td bgcolor="lightgreen">Yes</td>
    <td bgcolor="lightgreen">Yes</td>
    <td bgcolor="lightgreen">Yes</td>
    <td bgcolor="lightgreen">Yes</td>
  </tr>

  <tr bgcolor=$(TABLE_BGCOLOR)>
    <td bgcolor=$(TABLE_BGCOLOR2)><b>OpenSSL</b></td>
    <td bgcolor="lightgreen">Yes</td>
    <td bgcolor="red">No</td>
    <td bgcolor="lightgreen">Yes</td>
    <td bgcolor="lightgreen">Yes</td>
    <td bgcolor="lightgreen">Yes</td>
    <td bgcolor="lightgreen">Yes</td>
    <td bgcolor="lightgreen">Yes</td>
  </tr>

  <tr bgcolor=$(TABLE_BGCOLOR)>
    <td bgcolor=$(TABLE_BGCOLOR2)><b>NSS</b></td>
    <td bgcolor="lightgreen">Yes</td>
    <td bgcolor="red">No?</td>
    <td bgcolor="lightgreen">Yes</td>
    <td bgcolor="lightgreen">Yes</td>
    <td bgcolor="lightgreen">Yes</td>
    <td bgcolor="lightgreen">Yes</td>
    <td bgcolor="lightgreen">Yes</td>
  </tr>

  <tr bgcolor=$(TABLE_BGCOLOR)>
    <td bgcolor=$(TABLE_BGCOLOR2)><b>YaSSL</b></td>
    <td bgcolor="lightgreen">Yes</td>
    <td bgcolor="red">No?</td>
    <td bgcolor="lightgreen">Yes</td>
    <td bgcolor="lightgreen">Yes</td>
    <td bgcolor="lightgreen">Yes</td>
    <td bgcolor="lightgreen">Yes</td>
    <td bgcolor="red">No</td>
  </tr>

  <tr bgcolor=$(TABLE_BGCOLOR)>
    <td bgcolor=$(TABLE_BGCOLOR2)><b>PolarSSL</b></td>
    <td bgcolor="lightgreen">Yes</td>
    <td bgcolor="red">No?</td>
    <td bgcolor="lightgreen">Yes</td>
    <td bgcolor="lightgreen">Yes</td>
    <td bgcolor="lightgreen">Yes</td>
    <td bgcolor="red">No</td>
    <td bgcolor="lightgreen">Yes</td>
  </tr>

</table>

<table>
<tr><td>Notes:</td></tr>

<tr><td>[1]: 40-bit encryption is insecure.</td></tr>

</table>

<h1>Compression</h1>

<table>

  <tr bgcolor=$(TABLE_HDCOLOR)>
    <th></th>
    <th><b>ZLIB</b></th>
    <th><b>LZO [1]</b></th>
  </tr>

  <tr bgcolor=$(TABLE_BGCOLOR)>
    <td bgcolor=$(TABLE_BGCOLOR2)><b>GnuTLS</b></td>
    <td bgcolor="lightgreen">Yes</td>
    <td bgcolor="lightgreen">Yes, off by default</td>
  </tr>

  <tr bgcolor=$(TABLE_BGCOLOR)>
    <td bgcolor=$(TABLE_BGCOLOR2)><b>OpenSSL</b></td>
    <td bgcolor="lightgreen">Yes</td>
    <td bgcolor="red">No</td>
  </tr>

  <tr bgcolor=$(TABLE_BGCOLOR)>
    <td bgcolor=$(TABLE_BGCOLOR2)><b>NSS</b></td>
    <td bgcolor="red">No?</td>
    <td bgcolor="red">No</td>
  </tr>

  <tr bgcolor=$(TABLE_BGCOLOR)>
    <td bgcolor=$(TABLE_BGCOLOR2)><b>YaSSL</b></td>
    <td bgcolor="lightgreen">Yes</td>
    <td bgcolor="red">No</td>
  </tr>

  <tr bgcolor=$(TABLE_BGCOLOR)>
    <td bgcolor=$(TABLE_BGCOLOR2)><b>PolarSSL</b></td>
    <td bgcolor="red">No</td>
    <td bgcolor="red">No</td>
  </tr>

</table>

<table>
<tr><td>Notes:</td></tr>

<tr><td>[1]: LZO compression is non-standard.</td></tr>

</table>

<h1>Cryptographic module/token support</h1>

<table>

  <tr bgcolor=$(TABLE_HDCOLOR)>
    <th></th>
    <th><b>PKCS #11</b></th>
    <th><b>Reference to<br>PKCS #11 objects</b></th>
  </tr>

  <tr bgcolor=$(TABLE_BGCOLOR)>
    <td bgcolor=$(TABLE_BGCOLOR2)><b>GnuTLS</b></td>
    <td bgcolor="lightgreen">Yes (2.11.x)</td>
    <td bgcolor="lightgreen">PKCS #11 URLs</td>
  </tr>

  <tr bgcolor=$(TABLE_BGCOLOR)>
    <td bgcolor=$(TABLE_BGCOLOR2)><b>OpenSSL</b></td>
    <td bgcolor="red">Via third party module?</td>
    <td bgcolor="lightgreen">PKCS #11 URLs via Oracle PKCS #11 module</td>
  </tr>

  <tr bgcolor=$(TABLE_BGCOLOR)>
    <td bgcolor=$(TABLE_BGCOLOR2)><b>NSS</b></td>
    <td bgcolor="lightgreen">Yes</td>
    <td bgcolor="lightgreen">Custom</td>
  </tr>

  <tr bgcolor=$(TABLE_BGCOLOR)>
    <td bgcolor=$(TABLE_BGCOLOR2)><b>YaSSL</b></td>
    <td bgcolor="red">No?</td>
    <td bgcolor="red">N/A</td>
  </tr>

  <tr bgcolor=$(TABLE_BGCOLOR)>
    <td bgcolor=$(TABLE_BGCOLOR2)><b>PolarSSL</b></td>
    <td bgcolor="lightgreen">Yes (via pkcs11-helper)</td>
    <td bgcolor="lightgreen">Custom</td>
  </tr>

</table>


<h1>Extensions</h1>

<table>

  <tr bgcolor=$(TABLE_HDCOLOR)>
    <th></th>
    <th><b>OpenPGP</b><br>(RFC 6091)</th>
    <th><b>SRP</b><br>(RFC 5054)</th>
    <th><b>PSK</b><br>(RFC 4279)</th>
    <th><b>TLS/IA</b></th>
    <th><b>Supplemental Data</b></th>
    <th><b>Session Ticket</b><br>(RFC 5077)</th>
    <th><b>Keying Material Exporter</b><br>(RFC 5705)</th>
    <th><b>Maximum Fragment Length</b><br>(RFC 4366)</th>
    <th><b>Truncated HMAC</b><br>(RFC 4366)</th>
    <th><b>Server Name Indication</b><br>(RFC 4366)</th>
  </tr>

  <tr bgcolor=$(TABLE_BGCOLOR)>
    <td bgcolor=$(TABLE_BGCOLOR2)><b>GnuTLS</b></td>
    <td bgcolor="lightgreen">Yes</td>
    <td bgcolor="lightgreen">Yes</td>
    <td bgcolor="lightgreen">Yes</td>
    <td bgcolor="lightgreen">Yes</td>
    <td bgcolor="lightgreen">Yes</td>
    <td bgcolor="lightgreen">Yes</td>
    <td bgcolor="lightgreen">Yes</td>
    <td bgcolor="lightgreen">Yes</td>
    <td bgcolor="red">No</td>
    <td bgcolor="lightgreen">Yes</td>
  </tr>

  <tr bgcolor=$(TABLE_BGCOLOR)>
    <td bgcolor=$(TABLE_BGCOLOR2)><b>OpenSSL</b></td>
    <td bgcolor="red">No</td>
    <td bgcolor="red">No</td>
    <td bgcolor="red">No</td>
    <td bgcolor="red">No?</td>
    <td bgcolor="red">No?</td>
    <td bgcolor="lightgreen">Yes</td>
    <td bgcolor="lightgreen">Yes?</td>
    <td bgcolor="red">No?</td>
    <td bgcolor="red">No</td>
    <td bgcolor="lightgreen">Yes?</td>
  </tr>

  <tr bgcolor=$(TABLE_BGCOLOR)>
    <td bgcolor=$(TABLE_BGCOLOR2)><b>NSS</b></td>
    <td bgcolor="red">No</td>
    <td bgcolor="red">No</td>
    <td bgcolor="red">No</td>
    <td bgcolor="red">No</td>
    <td bgcolor="red">No?</td>
    <td bgcolor="lightgreen">Yes</td>
    <td bgcolor="red">No?</td>
    <td bgcolor="red">No?</td>
    <td bgcolor="red">No</td>
    <td bgcolor="lightgreen">Yes</td>
  </tr>

  <tr bgcolor=$(TABLE_BGCOLOR)>
    <td bgcolor=$(TABLE_BGCOLOR2)><b>YaSSL</b></td>
    <td bgcolor="red">No</td>
    <td bgcolor="red">No</td>
    <td bgcolor="lightgreen">Yes</td>
    <td bgcolor="red">No</td>
    <td bgcolor="red">No</td>
    <td bgcolor="lightgreen">Yes</td>
    <td bgcolor="red">No?</td>
    <td bgcolor="red">No?</td>
    <td bgcolor="red">No</td>
    <td bgcolor="red">No?</td>
  </tr>

  <tr bgcolor=$(TABLE_BGCOLOR)>
    <td bgcolor=$(TABLE_BGCOLOR2)><b>PolarSSL</b></td>
    <td bgcolor="red">No</td>
    <td bgcolor="red">No</td>
    <td bgcolor="red">No</td>
    <td bgcolor="red">No</td>
    <td bgcolor="red">No</td>
    <td bgcolor="red">No</td>
    <td bgcolor="red">No</td>
    <td bgcolor="red">No</td>
    <td bgcolor="red">No</td>
    <td bgcolor="red">No</td>
  </tr>

</table>

<h1>Code size</h1>

<table>

  <tr bgcolor=$(TABLE_HDCOLOR)>
    <th></th>
    <th><b>kLOC</b></th>
    <th><b>Debian etch x86</b></th>
    <th><b>OpenWRT 2008-05-11 [1]</b></th>
  </tr>

  <tr bgcolor=$(TABLE_BGCOLOR)>
    <td bgcolor=$(TABLE_BGCOLOR2)><b>GnuTLS</b></td>
    <td>60kLoc (core library)</td>
    <td>Total 944kb-1250kb<br>
      445kb (libgnutls)<br>
      327kb (libgcrypt)<br>
      73kb (libtasn1)<br>
      11kb (libgpg-error)<br>
      78kb (libz, optional)<br>
      53kb (libgnutls-extra, optional)<br>
      129kb (libopencdk, optional)<br>
      124kb (liblzo, optional)</td>
    <td>Total 323kb<br>
      153kb (libgnutls)<br>
      104kb (libgcrypt)<br>
      26kb (libtasn1)<br>
      5kb (libgpg-error)<br>
      35kb (zlib)</td>
  </tr>

  <tr bgcolor=$(TABLE_BGCOLOR)>
    <td bgcolor=$(TABLE_BGCOLOR2)><b>OpenSSL</b></td>
    <td>?</td>
    <td>Total 1649kb<br>
      252kb (libssl)<br>
      1319kb (libcrypto)<br>
      78kb (libz)</td>
    <td>Total 506kb<br>
      471kb (libopenssl)<br>
      35kb (zlib)</td>
  </tr>

  <tr bgcolor=$(TABLE_BGCOLOR)>
    <td bgcolor=$(TABLE_BGCOLOR2)><b>NSS</b></td>
    <td>?</td>
    <td>Total 1136kb<br>
      152kb (libssl3)<br>
      462kb (libnss3)<br>
      193kb (libnspr4)<br>
      307kb (libsoftokn3)<br>
      14kb (libplc4)<br>
      8kb (libplds4)<br>
    </td>
    <td>Not ported</td>
  </tr>

  <tr bgcolor=$(TABLE_BGCOLOR)>
    <td bgcolor=$(TABLE_BGCOLOR2)><b>YaSSL</b></td>
    <td>15kLoc</td>
    <td>Total 90kb</td>
    <td>Total 60kb</td>
  </tr>

  <tr bgcolor=$(TABLE_BGCOLOR)>
    <td bgcolor=$(TABLE_BGCOLOR2)><b>PolarSSL</b></td>
    <td>14kLoc</td>
    <td>Total 220kb</td>
    <td>Total 96kb</td>
  </tr>

</table>

<table>
<tr><td>Notes:</td></tr>

<tr><td>[1]: Build tree available
from <a href="http://josefsson.org/openwrt/">http://josefsson.org/openwrt/</a>.
Built using default settings for all packages for a Asus WL-500gP as
per 2008-05-11.</td></tr>

</table>

<h1>Development environment</h1>

<table>

  <tr bgcolor=$(TABLE_HDCOLOR)>
    <th></th>
    <th><b>Namespace</b></th>
    <th><b>Build tools</b></th>
    <th><b>API manual</b></th>
    <th><b>Crypto library</b></th>
    <th><b>ASN.1 library</b></th>
    <th><b>X.509 library</b></th>
    <th><b>OpenPGP library</b></th>
  </tr>

  <tr bgcolor=$(TABLE_BGCOLOR)>
    <td bgcolor=$(TABLE_BGCOLOR2)><b>GnuTLS</b></td>
    <td>gnutls_*</td>
    <td>Autoconf, automake, libtool</td>
    <td>Texinfo (HTML, PDF, etc),<br> GTK-DOC, Devhelp</td>
    <td>External, libgcrypt</td>
    <td>External, libtasn1</td>
    <td>Included, monolithic</td>
    <td>External, OpenCDK</td>
  </tr>

  <tr bgcolor=$(TABLE_BGCOLOR)>
    <td bgcolor=$(TABLE_BGCOLOR2)><b>OpenSSL</b></td>
    <td>SSL_*<br>
      SHA1_*<br>
      MD5_*<br>
      EVP_*<br>
      ...</td>
    <td>Makefile</td>
    <td>Man pages</td>
    <td>Included, monolithic</td>
    <td>Included, monolithic</td>
    <td>Included, monolithic</td>
    <td>Not applicable</td>
  </tr>

  <tr bgcolor=$(TABLE_BGCOLOR)>
    <td bgcolor=$(TABLE_BGCOLOR2)><b>NSS</b></td>
    <td>CERT_*<br>
      SEC_*<br>
      SECKEY_*<br>
      NSS_*<br>
      PK11_*<br>
      ...</td>
    <td>Makefile</td>
    <td>Online Manual</td>
    <td>Included, PKCS#11 based [1]</td>
    <td>Included, monolithic</td>
    <td>Included, monolithic</td>
    <td>Not applicable</td>
  </tr>

  <tr bgcolor=$(TABLE_BGCOLOR)>
    <td bgcolor=$(TABLE_BGCOLOR2)><b>YaSSL</b></td>
    <td>yaSSL_*, CyaSSL_*, SSL_*</td>
    <td>Autoconf, automake, libtool,<br>
      MSVC project workspaces, XCode projects</td>
    <td>Online manual</td>
    <td>Included, monolithic</td>
    <td>Included, monolithic</td>
    <td>Included, monolithic</td>
    <td>Not applicable</td>
  </tr>

  <tr bgcolor=$(TABLE_BGCOLOR)>
    <td bgcolor=$(TABLE_BGCOLOR2)><b>PolarSSL</b></td>
    <td>None</td>
    <td>Makefile, CMake, MSVC Project workspaces</td>
    <td>Online Manual</td>
    <td>Included, monolithic</td>
    <td>Included, monolithic</td>
    <td>Included, monolithic</td>
    <td>Not applicable</td>
  </tr>

</table>

<table>
<tr><td>Notes:</td></tr>

<tr><td>[1]: On the fly replaceable/augmentable.</td></tr>

</table>

<h1>Portability concerns</h1>

<table>

  <tr bgcolor=$(TABLE_HDCOLOR)>
    <th></th>
    <th><b>Platform requirements</b></th>
    <th><b>Network requirements</b></th>
    <th><b>Thread-safety</b></th>
    <th><b>Random seed</b></th>
  </tr>

  <tr bgcolor=$(TABLE_BGCOLOR)>
    <td bgcolor=$(TABLE_BGCOLOR2)><b>GnuTLS</b></td>
    <td>C89</td>
    <td>POSIX read() and write().  API to supply your own replacement.</td>
    <td>Thread-safe, although libgcrypt needs mutex hooks</td>
    <td>Random seed set through libgcrypt</td>
  </tr>

  <tr bgcolor=$(TABLE_BGCOLOR)>
    <td bgcolor=$(TABLE_BGCOLOR2)><b>OpenSSL</b></td>
    <td>C89?</td>
    <td>?</td>
    <td>Needs mutex callbacks</td>
    <td>Set through native API</td>
  </tr>

  <tr bgcolor=$(TABLE_BGCOLOR)>
    <td bgcolor=$(TABLE_BGCOLOR2)><b>NSS</b></td>
    <td>NSPR [1]</td>
    <td>NSPR [1]</td>
    <td>NSPR [1]</td>
    <td>Platform dependent [2]</td>
  </tr>

  <tr bgcolor=$(TABLE_BGCOLOR)>
    <td bgcolor=$(TABLE_BGCOLOR2)><b>YaSSL</b></td>
    <td>C89</td>
    <td>POSIX send() and recv().  API to supply your own replacement.</td>
    <td>Thread-safe, needs mutex hooks if PThreads or WinThreads not
      available, can be turned off</td>
    <td>Random seed set through TaoCrypt</td>
  </tr>

  <tr bgcolor=$(TABLE_BGCOLOR)>
    <td bgcolor=$(TABLE_BGCOLOR2)><b>YaSSL</b></td>
    <td>C89</td>
    <td>POSIX send() and recv().  API to supply your own replacement.</td>
    <td>Thread-safe</td>
    <td>Random seed set through HAVEGE random engine</td>
  </tr>

</table>

<table>
<tr><td>Notes:</td></tr>

<tr><td>[1]: NSPR (and NSS) has (have) been ported to the following
platforms (that rrelyea@redhat.com know about): AIX, BSD, BeOS, HP-UX,
IRIX, Linux, Mac OS X, Mac OS 9, OS/2, Solaris, OpenVMS, Amiga DE,
Windows, WinCE, Sony playstation.</td></tr>

<tr><td>[2]: For Unix/Linux it uses /dev/urandom if available, for
Windows it uses CAPI.  For all platforms it gets data from clock, and
tries to open system files.  NSS has a set of platform dependent
functions is uses to determine randomness.

</table>

<h1>Project status</h1>

<table>

  <tr bgcolor=$(TABLE_HDCOLOR)>
    <th></th>
    <th><b>License</b></th>
    <th><b>Copyright owner</b></th>
    <th><b>Origin</b></th>
  </tr>

  <tr bgcolor=$(TABLE_BGCOLOR)>
    <td bgcolor=$(TABLE_BGCOLOR2)><b>GnuTLS</b></td>
    <td>LGPLv2.1+ (core library), GPLv3+ (tools)</td>
    <td>FSF</td>
    <td>EU (Greece and Sweden)</td>
  </tr>

  <tr bgcolor=$(TABLE_BGCOLOR)>
    <td bgcolor=$(TABLE_BGCOLOR2)><b>OpenSSL</b></td>
    <td><a href="http://www.openssl.org/source/license.html">OpenSSL license</a>, BSD with <a href="http://www.gnu.org/philosophy/bsd.html">advertising clause</a></td>
    <td>Eric Young, Tim Hudson, Sun, OpenSSL project, ...?</td>
    <td>Australia</td>
  </tr>

  <tr bgcolor=$(TABLE_BGCOLOR)>
    <td bgcolor=$(TABLE_BGCOLOR2)><b>NSS</b></td>
    <td>MPL, GPL or LGPL</td>
    <td>Netscape Inc, Sun, RedHat, RSA Security, ...?</td>
    <td>US</td>
  </tr>

  <tr bgcolor=$(TABLE_BGCOLOR)>
    <td bgcolor=$(TABLE_BGCOLOR2)><b>YaSSL</b></td>
    <td>GPLv2+, Commercial available</td>
    <td>Licenses from yassl.com</td>
    <td>US</td>
  </tr>

  <tr bgcolor=$(TABLE_BGCOLOR)>
    <td bgcolor=$(TABLE_BGCOLOR2)><b>PolarSSL</b></td>
    <td>GPLv2+, Commercial available</td>
    <td>Brainspark B.V.</td>
    <td>NL</td>
  </tr>


</table>

<h1>Request for Help</h2>

<table>

<tr><td>I need your help to maintain this page.  Particular things which
has been suggested to incorporate into this page, but I don't know how
to do include:</td>



<tr><td><ul>
<li>Add table for things like OCSP and CRL processing support.</li>
</ul></td></tr>

</table>
-->

#include 'bottom.wml'


