Add `gnutls/dtls.h' to the distribution.
[gnutls.git] / doc / announce.txt
blob0e6b61f9ba901a5b7dc495f8161468156949cbec
1 To: help-gnutls@gnu.org, gnutls-devel@gnu.org, info-gnu@gnu.org
2 Subject: GnuTLS 2.10.0 released
3 <#part sign=pgpmime>
4 We are proud to announce a new stable GnuTLS release: Version 2.10.0.
6 GnuTLS is a modern C library that implements the standard network
7 security protocol Transport Layer Security (TLS), for use by network
8 applications.  GnuTLS is developed for GNU/Linux, but works on many
9 Unix-like systems and comes with a binary installer for Windows.
11 The GnuTLS library is distributed under the terms of the GNU Lesser
12 General Public License version 2.1 (or later).  The "extra" GnuTLS
13 library (which contains TLS/IA support, LZO compression and Libgcrypt
14 FIPS-mode handler), the OpenSSL compatibility library, the self tests
15 and the command line tools are all distributed under the GNU General
16 Public License version 3.0 (or later).  The manual is distributed
17 under the GNU Free Documentation License version 1.3 (or later).
19 The project page of the library is available at:
20   http://www.gnu.org/software/gnutls/
22 What's New
23 ==========
25 Version 2.10.0 is the first stable release on the 2.10.x branch and is
26 the result of 11 months of work on the experimental 2.9.x branch.  The
27 GnuTLS 2.10.x branch replaces the GnuTLS 2.8.x branch as the supported
28 stable branch, although we will continue to support GnuTLS 2.8.x for
29 some time.
31 ** libgnutls: Time verification extended to trusted certificate list.
32 Unless new constant GNUTLS_VERIFY_DISABLE_TRUSTED_TIME_CHECKS flag is
33 specified.
35 ** certtool: Display postalCode and Name X.509 DN attributes correctly.
36 Based on patch by Pavan Konjarla.  Adds new constant
37 GNUTLS_OID_X520_POSTALCODE and GNUTLS_OID_X520_NAME.
39 ** libgnutls: Added Steve Dispensa's patch for safe renegotiation (RFC 5746)
40 Solves the issue discussed in:
41 <http://www.ietf.org/mail-archive/web/tls/current/msg03928.html> and
42 <http://www.ietf.org/mail-archive/web/tls/current/msg03948.html>.
43 Note that to allow connecting to unpatched servers the full protection
44 is only enabled if the priority string %SAFE_RENEGOTIATION is
45 specified. You can check whether protection is in place by querying
46 gnutls_safe_renegotiation_status().  New error codes
47 GNUTLS_E_SAFE_RENEGOTIATION_FAILED and
48 GNUTLS_E_UNSAFE_RENEGOTIATION_DENIED added.
50 ** libgnutls: When checking openpgp self signature also check the signatures
51 ** of all subkeys.
52 Ilari Liusvaara noticed and reported the issue and provided test
53 vectors as well.
55 ** libgnutls: Added cryptodev support (/dev/crypto).
56 Tested with http://home.gna.org/cryptodev-linux/.  Added
57 benchmark utility for AES.  Adds new error codes
58 GNUTLS_E_CRYPTODEV_IOCTL_ERROR and GNUTLS_E_CRYPTODEV_DEVICE_ERROR.
60 ** libgnutls: Exported API to access encryption and hash algorithms.
61 The new API functions are gnutls_cipher_decrypt, gnutls_cipher_deinit,
62 gnutls_cipher_encrypt, gnutls_cipher_get_block_size,
63 gnutls_cipher_init, gnutls_hash, gnutls_hash_deinit, gnutls_hash_fast,
64 gnutls_hash_get_len, gnutls_hash_init, gnutls_hash_output,
65 gnutls_hmac, gnutls_hmac_deinit, gnutls_hmac_fast,
66 gnutls_hmac_get_len, gnutls_hmac_init, gnutls_hmac_output.  New API
67 constants are GNUTLS_MAC_SHA224 and GNUTLS_DIG_SHA224.
69 ** libgnutls: Added gnutls_certificate_set_verify_function() to allow
70 verification of certificate upon receipt rather than waiting until the
71 end of the handshake.
73 ** libgnutls: Don't send alerts during handshake.
74 Instead new error code GNUTLS_E_UNKNOWN_SRP_USERNAME is added.
76 ** certtool: Corrected two issues that affected certificate request generation.
77 (1) Null padding is added on integers (found thanks to Wilankar Trupti),
78 (2) In optional SignatureAlgorithm parameters field for DSA keys the DSA
79 parameters were added. Those were rejected by Verisign. Gnutls no longer adds 
80 those parameters there since other implementations don't do either and having 
81 them does not seem to offer anything (anyway you need the signer's certificate
82 to verify thus public key will be available). Found thanks to Boyan Kasarov.
83 This however has the side-effect that public key IDs shown by certtool are
84 now different than previous gnutls releases.
85 (3) the option --pgp-certificate-info will verify self signatures
87 ** certtool: Allow exporting of Certificate requests on DER format.
89 ** certtool: New option --no-crq-extensions to avoid extensions in CSRs.
91 ** gnutls-cli: Handle reading binary data from server.
92 Reported by and tiny patch from Vitaly Mayatskikh
93 <v.mayatskih@gmail.com> in
94 <http://thread.gmane.org/gmane.comp.encryption.gpg.gnutls.devel/4096>.
96 ** minitasn1: Upgraded to libtasn1 version 2.6.
98 ** doc: The GTK-DOC manual is significantly improved.
100 ** libgnutls: Cleanups and several bug fixes.
101 Found by Steve Grubb and Tomas Mraz.
103 ** Link libgcrypt explicitly to certtool, gnutls-cli, gnutls-serv.
105 ** Fix --disable-valgrind-tests.
106 Reported by Ingmar Vanhassel in
107 <https://savannah.gnu.org/support/?107029>.
109 ** libgnutls: Fix for memory leaks on interrupted handshake.
110 Reported by Tang Tong.
112 ** libgnutls: Addition of support for TLS 1.2 signature algorithms
113 ** extension and certificate verify field.
114 This requires changes for TLS 1.2 servers and clients that use
115 callbacks for certificate retrieval.  They are now required to check
116 with gnutls_sign_algorithm_get_requested() whether the certificate
117 they send complies with the peer's preferences in signature
118 algorithms.
120 ** libgnutls: In server side when resuming a session do not overwrite the 
121 ** initial session data with the resumed session data.
123 ** libgnutls: Added support for AES-128, AES-192 and AES-256 in PKCS #8
124 ** encryption.
125 This affects also PKCS #12 encoded files.  This adds the following new
126 enums: GNUTLS_CIPHER_AES_192_CBC, GNUTLS_PKCS_USE_PBES2_AES_128,
127 GNUTLS_PKCS_USE_PBES2_AES_192, GNUTLS_PKCS_USE_PBES2_AES_256.
129 ** libgnutls: Fix PKCS#12 encoding.
130 The error you would get was "The OID is not supported.".  Problem
131 introduced for the v2.8.x branch in 2.7.6.
133 ** certtool: Added the --pkcs-cipher option.
134 To explicitely specify the encryption algorithm to use.
136 ** tests: Added "pkcs12_encode" self-test to check PKCS#12 functions.
138 ** tests: Fix time bomb in chainverify self-test.
139 Reported by Andreas Metzler <ametzler@downhill.at.eu.org> in
140 <http://thread.gmane.org/gmane.comp.encryption.gpg.gnutls.devel/3925>.
142 ** tests: Fix expired cert in chainverify self-test.
144 ** libgnutls: TLS 1.2 server mode fixes.
145 Now interoperates against Opera.  Contributed by Daiki Ueno.
147 ** libgnutlsxx: Fix link problems.
148 Tiny patch from Boyan Kasarov <bkasarov@gmail.com>.
150 ** guile: Compatibility with guile 2.x.
151 By Ludovic Courtes <ludovic.courtes@laas.fr>.
153 ** libgnutls: Enable Camellia ciphers by default.
155 ** libgnutls: Add new functions to extract X.509 Issuer Alternative Names.
156 The new functions are gnutls_x509_crt_get_issuer_alt_name2,
157 gnutls_x509_crt_get_issuer_alt_name, and
158 gnutls_x509_crt_get_issuer_alt_othername_oid.  Contributed by Brad
159 Hards <bradh@frogmouth.net>.
161 ** libgnutls: Client-side TLS 1.2 and SHA-256 ciphersuites now works.
162 The new supported ciphersuites are AES-128/256 in CBC mode with
163 ANON-DH/RSA/DHE-DSS/DHE-RSA.  Contributed by Daiki Ueno.  Further,
164 SHA-256 is now the preferred default MAC (however it is only used with
165 TLS 1.2).
167 ** libgnutls: Make OpenPGP hostname checking work again.
168 The patch to resolve the X.509 CN/SAN issue accidentally broken
169 OpenPGP hostname comparison.
171 ** libgnutls: When printing X.509 certificates, handle XMPP SANs better.
172 Reported by Howard Chu <hyc@symas.com> in
173 <https://savannah.gnu.org/support/?106975>.
175 ** Fix use of deprecated types internally.
176 Use of deprecated types in GnuTLS from now on will lead to a compile
177 error, to prevent this from happening again.
179 ** libgnutls: Support for TLS tickets was contributed by Daiki Ueno.
180 The new APIs are gnutls_session_ticket_enable_client,
181 gnutls_session_ticket_enable_server, and
182 gnutls_session_ticket_key_generate.
184 ** gnutls-cli, gnutls-serv: New parameter --noticket to disable TLS tickets.
186 ** libgnutls: Fix problem with NUL bytes in X.509 CN and SAN fields.
187 By using a NUL byte in CN/SAN fields, it was possible to fool GnuTLS
188 into 1) not printing the entire CN/SAN field value when printing a
189 certificate and 2) cause incorrect positive matches when matching a
190 hostname against a certificate.  Some CAs apparently have poor
191 checking of CN/SAN values and issue these (arguable invalid)
192 certificates.  Combined, this can be used by attackers to become a
193 MITM on server-authenticated TLS sessions.  The problem is mitigated
194 since attackers needs to get one certificate per site they want to
195 attack, and the attacker reveals his tracks by applying for a
196 certificate at the CA.  It does not apply to client authenticated TLS
197 sessions.  Research presented independently by Dan Kaminsky and Moxie
198 Marlinspike at BlackHat09.  Thanks to Tomas Hoger <thoger@redhat.com>
199 for providing one part of the patch.  [GNUTLS-SA-2009-4] [CVE-2009-2730].
201 ** libgnutls: Fix rare failure in gnutls_x509_crt_import.
202 The function may fail incorrectly when an earlier certificate was
203 imported to the same gnutls_x509_crt_t structure.
205 ** libgnutls: Fix return value of gnutls_certificate_client_get_request_status.
206 Before it always returned false.  Reported by Peter Hendrickson
207 <pdh@wiredyne.com> in
208 <http://thread.gmane.org/gmane.comp.encryption.gpg.gnutls.devel/3668>.
210 ** libgnutls: Fix off-by-one size computation error in unknown DN printing.
211 The error resulted in truncated strings when printing unknown OIDs in
212 X.509 certificate DNs.  Reported by Tim Kosse
213 <tim.kosse@filezilla-project.org> in
214 <http://thread.gmane.org/gmane.comp.encryption.gpg.gnutls.devel/3651>.
216 ** libgnutls: Fix PKCS#12 decryption from password.
217 The encryption key derived from the password was incorrect for (on
218 average) 1 in every 128 input for random inputs.  Reported by "Kukosa,
219 Tomas" <tomas.kukosa@siemens-enterprise.com> in
220 <http://permalink.gmane.org/gmane.network.gnutls.general/1663>.
222 ** libgnutls: Return correct bit lengths of some MPIs.
223 gnutls_dh_get_prime_bits, gnutls_rsa_export_get_modulus_bits, and
224 gnutls_dh_get_peers_public_bits.  Before the reported value was
225 overestimated.  Reported by Peter Hendrickson <pdh@wiredyne.com> in
226 <http://thread.gmane.org/gmane.comp.encryption.gpg.gnutls.devel/3607>.
228 ** libgnutls: Avoid internal error when invoked after GNUTLS_E_AGAIN.
229 Report and patch by Tim Kosse <tim.kosse@filezilla-project.org> in
230 <http://permalink.gmane.org/gmane.comp.encryption.gpg.gnutls.devel/3671>
232 <http://permalink.gmane.org/gmane.comp.encryption.gpg.gnutls.devel/3670>.
234 ** libgnutls: Relax checking of required libtasn1/libgcrypt versions.
235 Before we required that the runtime library used the same (or more
236 recent) libgcrypt/libtasn1 as it was compiled with.  Now we just check
237 that the runtime usage is above the minimum required.  Reported by
238 Marco d'Itri <md@linux.it> via Andreas Metzler
239 <ametzler@downhill.at.eu.org> in <http://bugs.debian.org/540449>.
241 ** tests: Added new self-test pkcs12_s2k_pem to detect MPI bit length error.
243 ** tests: Improved test vectors in self-test pkcs12_s2k.
245 ** tests: Added new self-test dn2 to detect off-by-one size error.
247 ** tests: Fix failure in "chainverify" because a certificate have expired.
249 ** libgnutls: Fix crash in gnutls_global_init after earlier init/deinit cycle.
250 Forwarded by Martin von Gagern <Martin.vGagern@gmx.net> from
251 <http://bugs.gentoo.org/272388>.
253 ** Reduce stack usage for some CRQ functions.
255 ** Doc fixes for CRQ functions.
257 TLS Renegotiation Attack
258 ========================
260 This releases supports the new extension that hardens TLS
261 renegotiation, prompted by the recent discovery of a security flaw in
262 the protocol.  We quote the manual which contains a discussion of the
263 problem and how the solution is implemented in GnuTLS:
265 Some application protocols and implementations uses the TLS
266 renegotiation feature in a manner that enables attackers to insert
267 content of his choice in the beginning of a TLS session.
269 The simplest example is HTTP.  For HTTP one attack works by having the
270 attacker simulate a client and connect to a server, with server-only
271 authentication, and send some data intended to cause harm.  When the
272 proper client attempts to contact the server, the attacker hijacks that
273 connection and uses the TLS renegotiation feature with the server and
274 splices in the client connection to the already established connection
275 between the client and server.  The attacker will not be able to read
276 the data exchanged between the client and the server.  However, some
277 server implementations will (incorrectly) assume that the data sent by
278 the attacker was sent by the now authenticated client.  The result is a
279 prefix plain-text injection attack.
281 While fixing these application protocols and implementations would be
282 one natural reaction, an extension to TLS has been designed that
283 cryptographically binds together any renegotiated handshakes with the
284 initial negotiation.  When the extension is used, the attack is
285 detected and the session can be terminated.  The extension is
286 specified in [RFC5746].
288 GnuTLS supports the safe renegotiation extension.  By default, GnuTLS
289 clients will attempt to negotiate the safe renegotiation extension when
290 talking to servers.  Also by default, GnuTLS servers will accept the
291 extension when presented by clients.  However, by default GnuTLS client
292 and servers will not refuse renegotiation attempts when the extension
293 has not been negotiated, as this would break backwards compatibility
294 and cause too much operational problems.  We will likely reconsider
295 these defaults in the future.
297 To modify the default behaviour, we have introduced three new priority
298 strings.  The priority strings can be used by applications
299 (gnutls_priority_set) and end users (e.g., `--priority' parameter to
300 `gnutls-cli' and `gnutls-serv').
302 The `%PARTIAL_RENEGOTIATION' priority string requests what is today the
303 default behaviour, i.e., that handshakes without the safe renegotiation
304 extension is permitted.  To make more use of the extension, you may
305 provide the `%SAFE_RENEGOTIATION' priority string.  In this mode,
306 clients and servers will require that the peer supports the extension for 
307 the initial handshakes.  To allow unsafe rengotiation the 
308 `%UNSAFE_RENEGOTIATION' priority string is available. This will send
309 the extension if supported by peer but will never mandate it.
310 It is possible to disable use of the extension completely by using the
311 `%DISABLE_SAFE_RENEGOTIATION' priority string however this is
312 recommended against except for debugging.
314 For applications we have introduced a new API related to safe
315 renegotiation.  The gnutls_safe_renegotiation_status function is used
316 to check if the extension has been negotiated on a session, and can be
317 used both by clients and servers.
319 API/ABI changes in GnuTLS 2.10
320 ==============================
322 No offically supported interfaces have been modified or removed.  The
323 library should be completely backwards compatible on both the source
324 and binary level.
326 The following symbols have been added to the library:
328 gnutls_certificate_set_verify_function: ADDED.
329 gnutls_cipher_decrypt: ADDED.
330 gnutls_cipher_deinit: ADDED.
331 gnutls_cipher_encrypt: ADDED.
332 gnutls_cipher_get_block_size: ADDED.
333 gnutls_cipher_init: ADDED.
334 gnutls_hash: ADDED.
335 gnutls_hash_deinit: ADDED.
336 gnutls_hash_fast: ADDED.
337 gnutls_hash_get_len: ADDED.
338 gnutls_hash_init: ADDED.
339 gnutls_hash_output: ADDED.
340 gnutls_hmac: ADDED.
341 gnutls_hmac_deinit: ADDED.
342 gnutls_hmac_fast: ADDED.
343 gnutls_hmac_get_len: ADDED.
344 gnutls_hmac_init: ADDED.
345 gnutls_hmac_output: ADDED.
346 gnutls_safe_renegotiation_status: ADDED.
347 gnutls_sign_algorithm_get_requested: ADDED.
349 gnutls_x509_crt_get_issuer_alt_name2: ADDED.
350 gnutls_x509_crt_get_issuer_alt_name: ADDED.
351 gnutls_x509_crt_get_issuer_alt_othername_oid: ADDED.
353 gnutls_session_ticket_key_generate: ADDED.
354 gnutls_session_ticket_enable_client: ADDED.
355 gnutls_session_ticket_enable_server: ADDED.
357 In addition to the functions above, the following non-function
358 definitions have been added to the header files:
360 GNUTLS_DIG_SHA224: ADDED.
361 GNUTLS_E_CRYPTODEV_DEVICE_ERROR: ADDED.
362 GNUTLS_E_CRYPTODEV_IOCTL_ERROR: ADDED.
363 GNUTLS_E_SAFE_RENEGOTIATION_FAILED: ADDED.
364 GNUTLS_E_UNKNOWN_SRP_USERNAME: ADDED.
365 GNUTLS_E_UNSAFE_RENEGOTIATION_DENIED: ADDED.
366 GNUTLS_MAC_SHA224: ADDED.
367 GNUTLS_OID_X520_NAME: ADDED.
368 GNUTLS_OID_X520_POSTALCODE: ADDED.
369 GNUTLS_VERIFY_DISABLE_TRUSTED_TIME_CHECKS: ADDED.
370 GNUTLS_VERSION_MAX: ADDED.
372 GNUTLS_CIPHER_AES_192_CBC: ADDED to gnutls/gnutls.h.
373 GNUTLS_PKCS_USE_PBES2_AES_128: ADDED to gnutls/x509.h.
374 GNUTLS_PKCS_USE_PBES2_AES_192: ADDED to gnutls/x509.h.
375 GNUTLS_PKCS_USE_PBES2_AES_256: ADDED to gnutls/x509.h.
376 GNUTLS_BAG_SECRET: ADDED to gnutls/pkcs12.h.
377 GNUTLS_DIG_UNKNOWN: ADDED to gnutls/gnutls.h.
379 Getting the Software
380 ====================
382 GnuTLS may be downloaded from one of the mirror sites or direct from
383 <ftp://ftp.gnu.org/gnu/gnutls/>.  The list of mirrors can be found at
384 <http://www.gnu.org/software/gnutls/download.html>.
386 Here are the BZIP2 compressed sources (6.0MB):
388   ftp://ftp.gnu.org/gnu/gnutls/gnutls-2.10.0.tar.bz2
389   http://ftp.gnu.org/gnu/gnutls/gnutls-2.10.0.tar.bz2
391 Here are OpenPGP detached signatures signed using key 0xB565716F:
393   ftp://ftp.gnu.org/gnu/gnutls/gnutls-2.10.0.tar.bz2.sig
394   http://ftp.gnu.org/gnu/gnutls/gnutls-2.10.0.tar.bz2.sig
396 Note, that we don't distribute gzip compressed tarballs.
398 In order to check that the version of GnuTLS which you are going to
399 install is an original and unmodified one, you should verify the OpenPGP
400 signature.  You can use the command
402      gpg --verify gnutls-2.10.0.tar.bz2.sig
404 This checks whether the signature file matches the source file.  You
405 should see a message indicating that the signature is good and made by
406 that signing key.  Make sure that you have the right key, either by
407 checking the fingerprint of that key with other sources or by checking
408 that the key has been signed by a trustworthy other key.  The signing
409 key can be identified with the following information:
411 pub   1280R/B565716F 2002-05-05 [expires: 2011-03-30]
412       Key fingerprint = 0424 D4EE 81A0 E3D1 19C6  F835 EDA2 1E94 B565 716F
413 uid                  Simon Josefsson <jas@extundo.com>
414 uid                  Simon Josefsson <simon@josefsson.org>
415 sub   1280R/4D5D40AE 2002-05-05 [expires: 2011-03-30]
417 The key is available from:
418   http://josefsson.org/key.txt
419   dns:b565716f.josefsson.org?TYPE=CERT
421 Alternatively, after successfully verifying the OpenPGP signature of
422 this announcement, you could verify that the files match the following
423 checksum values.  The values are for SHA-1 and SHA-224 respectively:
425 7c102253bb4e817f393b9979a62c647010312eac  gnutls-2.10.0.tar.bz2
427 57ee306f261ed331b8386baf854f737fbf24da7b3bcc32331d34176b  gnutls-2.10.0.tar.bz2
429 Documentation
430 =============
432 The manual is available online at:
434   http://www.gnu.org/software/gnutls/documentation.html
436 In particular the following formats are available:
438  HTML: http://www.gnu.org/software/gnutls/manual/html_node/index.html
439  PDF: http://www.gnu.org/software/gnutls/manual/gnutls.pdf
441 For developers there is a GnuTLS API reference manual formatted using
442 the GTK-DOC tools:
444   http://www.gnu.org/software/gnutls/reference/gnutls-gnutls.html
446 Community
447 =========
449 If you need help to use GnuTLS, or want to help others, you are invited
450 to join our help-gnutls mailing list, see:
452   http://lists.gnu.org/mailman/listinfo/help-gnutls
454 If you wish to participate in the development of GnuTLS, you are invited
455 to join our gnutls-dev mailing list, see:
457   http://lists.gnu.org/mailman/listinfo/gnutls-devel
459 Windows installer
460 =================
462 GnuTLS has been ported to the Windows operating system, and a binary
463 installer is available.  The installer contains DLLs for application
464 development, manuals, examples, and source code.  The installer uses
465 libgpg-error v1.7, libgcrypt v1.4.5, libtasn1 v2.6, and GnuTLS
466 v2.10.0.
468 For more information about GnuTLS for Windows:
469   http://josefsson.org/gnutls4win/
471 The Windows binary installer and PGP signature:
472   http://josefsson.org/gnutls4win/gnutls-2.10.0.exe (15MB)
473   http://josefsson.org/gnutls4win/gnutls-2.10.0.exe.sig
475 The checksum values for SHA-1 and SHA-224 are:
477 8a7965168c542edec3259469b6c0e87a9a2b4626  gnutls-2.10.0.exe
479 5f76c907eac768b714dc7187a17f87c0393439cf1ef44ab145aab6e3  gnutls-2.10.0.exe
481 A ZIP archive containing the Windows binaries:
482   http://josefsson.org/gnutls4win/gnutls-2.10.0.zip (5.3MB)
483   http://josefsson.org/gnutls4win/gnutls-2.10.0.zip.sig
485 A Debian mingw32 package is also available:
486   http://josefsson.org/gnutls4win/mingw32-gnutls_2.7.10-1_all.deb (4.8MB)
488 The checksum values for SHA-1 and SHA-224 are:
490 aca9f9f1adba09b952e095039595d4c5d9e67d46  mingw32-gnutls_2.10.0-1_all.deb
492 269020738a9f36135e3f231a94cdb2cabc0edd3658092d76b87c27dc  mingw32-gnutls_2.10.0-1_all.deb
494 Internationalization
495 ====================
497 The GnuTLS library messages have been translated into Czech, Dutch,
498 French, German, Italian, Malay, Polish, Simplified Chinese, Swedish,
499 and Vietnamese.  We welcome the addition of more translations.
501 Support
502 =======
504 Improving GnuTLS is costly, but you can help!  We are looking for
505 organizations that find GnuTLS useful and wish to contribute back.  You
506 can contribute by reporting bugs, improve the software, or donate money
507 or equipment.
509 Commercial support contracts for GnuTLS are available, and they help
510 finance continued maintenance.  Simon Josefsson Datakonsult AB, a
511 Stockholm based privately held company, is currently funding GnuTLS
512 maintenance.  We are always looking for interesting development
513 projects.  See http://josefsson.org/ for more details.
515 The GnuTLS service directory is available at:
517   http://www.gnu.org/software/gnutls/commercial.html
519 Happy Hacking,
520 Simon