We are proud to announce a new stable GnuTLS release: Version 2.12.0. GnuTLS is a modern C library that implements the standard network security protocol Transport Layer Security (TLS), for use by network applications. GnuTLS is developed for GNU/Linux, but works on many Unix-like systems and comes with a binary installer for Windows.
The GnuTLS library is distributed under the terms of the GNU Lesser General Public License version 2.1 (or later). The "extra" GnuTLS library (which contains TLS/IA support, LZO compression and Libgcrypt FIPS-mode handler), the OpenSSL compatibility library, the self tests and the command line tools are all distributed under the GNU General Public License version 3.0 (or later). The manual is distributed under the GNU Free Documentation License version 1.3 (or later). The project page of the library is available at: http://www.gnu.org/software/gnutls/ What's New ========== Version 2.12.0 is the first stable release on the 2.12.x branch and is the result of 12 months of work on the experimental 2.11.x branch. The GnuTLS 2.12.x branch replaces the GnuTLS 2.10.x branch as the supported stable branch, although we will continue to support GnuTLS 2.10.x for some time. ** libgnutls: Nettle is the default crypto back end. Use --with-libgcrypt to use the libgcrypt back end. ** libgnutls: Added PKCS #11 support and an API to access objects in gnutls/pkcs11.h. Certificates and public keys can be imported from tokens, and operations can be performed on private keys. ** p11tool: Introduced. It allows manipulating pkcs 11 tokens. ** libgnutls: Added an abstract interface to access public keys and private keys in gnutls/abstract.h. It allows easy handling of private keys and public keys of all subsystems such as pkcs11, openpgp and x509. ** libgnutls: Added functions to ease selection of bit length in public key algorithm key generation. Those are gnutls_sec_param_to_pk_bits(), gnutls_pk_bits_to_sec_param(), and gnutls_sec_param_get_name(). ** libgnutls: Add new API gnutls_session_channel_binding. The function is used to get the channel binding data. Currently only the "tls-unique" (RFC 5929) channel binding type is supported, through the GNUTLS_CB_TLS_UNIQUE type. See new section "Channel Bindings" in the manual. ** libgnutls: Removed support for opaque PRF (it was disabled by default in previous gnutls versions) ** libgnutls: Added gnutls_global_set_mutex() to allow setting alternative locking procedures. By default the system available locking is used. In *NIX pthreads are used and in windows the critical section API. This follows a different approach than the previous versions that depended on libgcrypt initialization. The locks are now set by default in systems that support it. Programs that used gcry_control() to set thread locks should insert it into a block of #if GNUTLS_VERSION_NUMBER <= 0x020b00 gcry_control(...) #endif ** libgnutls: Added support for reading DN from EV-certificates. New DN values: jurisdictionOfIncorporationLocalityName, jurisdictionOfIncorporationStateOrProvinceName, jurisdictionOfIncorporationCountryName ** gnutls-cli, gnutls-serv: Print 'tls-unique' Channel Bindings. ** libgnutls: Added RSA_NULL_SHA1 and SHA256 ciphersuites. ** libgnutls: Is now more liberal in the PEM decoding. That is spaces and tabs are being skipped. ** libgnutls: The %COMPAT flag now allows larger records that violate the TLS spec. ** libgnutls: Corrected signature generation and verification in the Certificate Verify message when in TLS 1.2. Reported by Todd A. Ouska. ** libgnutls: gnutls_x509_privkey_import() will fallback to gnutls_x509_privkey_import_pkcs8() without a password, if it is unable to decode the key. ** libgnutls: HMAC-MD5 no longer used by default. ** libgnutls: Corrected issue in DHE-PSK ciphersuites that ignored the PSK callback. ** libgnutls: SRP and PSK are no longer set on the default priorities. They have to be explicitly set. ** libgnutls: During TLS 1.2 handshake message verification using DSS use the hash algorithm required by it. In TLS 1.0, 1.1 and SSL 3.0 SHA-1 is used always. ** libgnutls: gnutls_x509_privkey_sign_hash() is deprecated. Use gnutls_privkey_sign_hash() instead. ** libgnutls: gnutls_pubkey_verify_data, gnutls_pubkey_verify_hash, gnutls_x509_privkey_verify_data, gnutls_x509_crt_verify_data, gnutls_x509_crt_verify_hash return the negative error code GNUTLS_E_PK_SIG_VERIFY_FAILED if verification fails to simplify error checking. ** libgnutls: Added helper functions for signature verification: gnutls_pubkey_verify_data() and gnutls_pubkey_import_privkey(). ** gnutls_x509_crl_privkey_sign2(), gnutls_x509_crq_sign2() gnutls_x509_privkey_sign_hash(), gnutls_x509_privkey_sign_data(), gnutls_x509_crt_verify_hash(), gnutls_x509_crt_verify_data(), were deprecated for gnutls_x509_crl_privkey_sign(), gnutls_x509_crq_privkey_sign(), gnutls_privkey_sign_hash(), gnutls_privkey_sign_data(), gnutls_pubkey_verify_hash() gnutls_pubkey_verify_data() respectively. ** libgnutls: gnutls_*_export_raw() functions now add leading zero in integers. ** libgnutls: Added gnutls_transport_set_vec_push_function() that can be used to specify a writev() like function. Using that gnutls can provide more efficient writes to network layer in systems that support it. ** libgnutls: Record version of Client Hellos is now set by default to SSL 3.0. To restore the previous default behavior use %LATEST_RECORD_VERSION priority string. ** libgnutls: Use ASN1_NULL when writing parameters for RSA signatures. This makes us comply with RFC3279. Reported by Michael Rommel. ** gnutls-serv: Corrected a buffer overflow. Reported and patch by Tomas Mraz. ** libgnutls: Reverted default behavior for verification and introduced GNUTLS_VERIFY_DO_NOT_ALLOW_X509_V1_CA_CRT. Thus by default V1 trusted CAs are allowed, unless the new flag is specified. ** libgnutls: Correctly add leading zero to PKCS #8 encoded DSA key. Reported by Jeffrey Walton. ** libgnutls: Added SIGN-ALL, CTYPE-ALL, COMP-ALL, and VERS-TLS-ALL as priority strings. Those allow to set all the supported algorithms at once. ** libgnutls: Added support for DSA signing/verifying with bit length over 1024. ** libgnutls-extra: When in FIPS mode gnutls_global_init_extra() has to be called to register any required md5 handlers. API/ABI changes in GnuTLS 2.12 ============================== No offically supported interfaces have been modified or removed. The library should be completely backwards compatible on both the source and binary level. The following symbols have been added to the library: gnutls_transport_set_vec_push_function: ADDED gnutls_x509_crl_get_raw_issuer_dn: ADDED gnutls_session_channel_binding: New function. gnutls_channel_binding_t: New enumeration. gnutls_pkcs11_token_init: New function gnutls_pkcs11_token_set_pin: New function gnutls_x509_crt_get_subject_unique_id: ADDED. gnutls_x509_crt_get_issuer_unique_id: ADDED. gnutls_x509_crt_get_preferred_hash_algorithm: ADDED gnutls_x509_privkey_export_rsa_raw2: ADDED gnutls_openpgp_privkey_sec_param: ADDED gnutls_x509_privkey_sec_param: ADDED gnutls_global_set_mutex: ADDED gnutls_rnd: ADDED gnutls_sec_param_to_pk_bits: ADDED gnutls_pk_bits_to_sec_param: ADDED gnutls_sec_param_get_name: ADDED gnutls_certificate_set_retrieve_function: ADDED gnutls_pkcs11_type_get_name: ADDED gnutls_pkcs11_init: ADDED gnutls_pkcs11_deinit: ADDED gnutls_pkcs11_set_pin_function: ADDED gnutls_pkcs11_set_token_function: ADDED gnutls_pkcs11_add_provider: ADDED gnutls_pkcs11_obj_init: ADDED gnutls_pkcs11_obj_import_url: ADDED gnutls_pkcs11_obj_export_url: ADDED gnutls_pkcs11_obj_deinit: ADDED gnutls_pkcs11_obj_export: ADDED gnutls_pkcs11_obj_list_import_url: ADDED gnutls_pkcs11_obj_export: ADDED gnutls_pkcs11_obj_get_type: ADDED gnutls_pkcs11_obj_get_info: ADDED gnutls_pkcs11_token_get_info: ADDED gnutls_pkcs11_token_get_url: ADDED gnutls_pkcs11_privkey_init: ADDED gnutls_pkcs11_privkey_deinit: ADDED gnutls_pkcs11_privkey_get_pk_algorithm: ADDED gnutls_pkcs11_privkey_get_info: ADDED gnutls_pkcs11_privkey_import_url: ADDED gnutls_pkcs11_privkey_sign_data: ADDED gnutls_pkcs11_privkey_sign_hash: ADDED gnutls_pkcs11_privkey_decrypt_data: ADDED gnutls_x509_crt_import_pkcs11: ADDED gnutls_x509_crt_list_import_pkcs11: ADDED gnutls_x509_crt_import_pkcs11_url: ADDED gnutls_privkey_init: ADDED gnutls_privkey_sign_hash: ADDED gnutls_privkey_sign_data: ADDED gnutls_privkey_deinit: ADDED gnutls_privkey_get_pk_algorithm: ADDED gnutls_privkey_get_type: ADDED gnutls_privkey_import_pkcs11: ADDED gnutls_privkey_import_x509: ADDED gnutls_privkey_import_openpgp: ADDED gnutls_privkey_sign_data: ADDED gnutls_privkey_sign_hash: ADDED gnutls_privkey_decrypt_data: ADDED gnutls_pkcs11_privkey_export_url: ADDED gnutls_x509_crq_privkey_sign: ADDED gnutls_x509_crl_privkey_sign: ADDED gnutls_x509_crt_privkey_sign: ADDED gnutls_pubkey_init: ADDED gnutls_pubkey_import_privkey: ADDED gnutls_pubkey_verify_data: ADDED gnutls_pubkey_get_preferred_hash_algorithm: ADDED gnutls_pubkey_deinit: ADDED gnutls_pubkey_get_pk_algorithm: ADDED gnutls_pubkey_import_x509: ADDED gnutls_pubkey_import_openpgp: ADDED gnutls_pubkey_get_pk_rsa_raw: ADDED gnutls_pubkey_get_pk_dsa_raw: ADDED gnutls_pubkey_export: ADDED gnutls_pubkey_get_key_id: ADDED gnutls_pubkey_get_key_usage: ADDED gnutls_pubkey_verify_hash: ADDED gnutls_pubkey_get_verify_algorithm: ADDED gnutls_pkcs11_type_get_name: ADDED gnutls_pubkey_import_pkcs11_url: ADDED gnutls_pubkey_import: ADDED gnutls_pubkey_import_pkcs11: ADDED gnutls_pubkey_import_dsa_raw: ADDED gnutls_pubkey_import_rsa_raw: ADDED gnutls_x509_crt_set_pubkey: ADDED gnutls_x509_crq_set_pubkey: ADDED gnutls_pkcs11_copy_x509_crt: ADDED gnutls_pkcs11_copy_x509_privkey: ADDED gnutls_pkcs11_delete_url: ADDED The following symbols were deprecated because have been replaced by newer functions: gnutls_cipher_set_priority: DEPRECATED (use: gnutls_priority_set_direct) gnutls_mac_set_priority: DEPRECATED (use: gnutls_priority_set_direct) gnutls_compression_set_priority: DEPRECATED (use: gnutls_priority_set_direct) gnutls_kx_set_priority: DEPRECATED (use: gnutls_priority_set_direct) gnutls_protocol_set_priority: DEPRECATED (use: gnutls_priority_set_direct) gnutls_certificate_type_set_priority: DEPRECATED (use: gnutls_priority_set_direct) gnutls_certificate_client_retrieve_function: DEPRECATED (use: gnutls_certificate_set_retrieve_function) gnutls_certificate_server_retrieve_function: DEPRECATED (use: gnutls_certificate_set_retrieve_function) gnutls_certificate_verify_peers: DEPRECATED (use: gnutls_certificate_verify_peers2) gnutls_x509_crl_sign: DEPRECATED (use: gnutls_x509_crl_privkey_sign) gnutls_x509_crl_sign2: DEPRECATED (use: gnutls_x509_crl_privkey_sign) gnutls_x509_privkey_sign_data: DEPRECATED (use: gnutls_privkey_sign_data) gnutls_x509_privkey_verify_data: DEPRECATED (use: gnutls_pubkey_verify_data) gnutls_x509_crt_verify_data: DEPRECATED (use: gnutls_pubkey_verify_data) gnutls_x509_crt_verify_hash: DEPRECATED (use: gnutls_pubkey_verify_hash) gnutls_x509_crt_get_verify_algorithm: DEPRECATED (use: gnutls_pubkey_get_verify_algorithm) gnutls_x509_privkey_sign_hash: DEPRECATED (use: gnutls_privkey_sign_hash) gnutls_x509_crq_sign2: DEPRECATED (use: gnutls_x509_crq_privkey_sign) gnutls_x509_crq_sign: DEPRECATED (use: gnutls_x509_crq_privkey_sign) gnutls_openpgp_privkey_sign_hash: DEPRECATED (use: gnutls_privkey_sign_hash) Symbols deprecated because they exported internal structures, making modification of gnutls' inner workings hard: gnutls_session_get_server_random: DEPRECATED gnutls_session_get_client_random: DEPRECATED gnutls_session_get_master_secret: DEPRECATED gnutls_session_set_finished_function: DEPRECATED gnutls_certificate_get_x509_cas: DEPRECATED gnutls_certificate_get_x509_crls: DEPRECATED gnutls_certificate_get_openpgp_keyring: DEPRECATED Deprecated symbols because functionality will not be supported in the future: gnutls_session_set_finished_function: DEPRECATED gnutls_transport_set_lowat: DEPRECATED gnutls_psk_netconf_derive_key: DEPRECATED In addition to the functions above, the following non-function definitions have been added to the header files: GNUTLS_CB_TLS_UNIQUE: New gnutls_channel_binding_t enum member. GNUTLS_E_CHANNEL_BINDING_NOT_AVAILABLE: New error code. GNUTLS_E_OPENPGP_PREFERRED_KEY_ERROR: New error code. GNUTLS_E_INCOMPAT_DSA_KEY_WITH_TLS_PROTOCOL: New error code. GNUTLS_E_PKCS11_ERROR: New error code. GNUTLS_E_PKCS11_LOAD_ERROR: New error code. GNUTLS_E_PARSING_ERROR: New error code. GNUTLS_E_PKCS11_PIN_ERROR: New error code. GNUTLS_E_PKCS11_SLOT_ERROR: New error code. GNUTLS_E_LOCKING_ERROR: New error code. GNUTLS_E_PKCS11_ATTRIBUTE_ERROR: New error code. GNUTLS_E_PKCS11_DEVICE_ERROR: New error code. GNUTLS_E_PKCS11_DATA_ERROR: New error code. GNUTLS_E_PKCS11_UNSUPPORTED_FEATURE_ERROR: New error code. GNUTLS_E_PKCS11_KEY_ERROR: New error code. GNUTLS_E_PKCS11_PIN_EXPIRED: New error code. GNUTLS_E_PKCS11_PIN_LOCKED: New error code. GNUTLS_E_PKCS11_SESSION_ERROR: New error code. GNUTLS_E_PKCS11_SIGNATURE_ERROR: New error code. GNUTLS_E_PKCS11_TOKEN_ERROR: New error code. GNUTLS_E_PKCS11_USER_ERROR: New error code. GNUTLS_E_CRYPTO_INIT_FAILED: New error code. Getting the Software ==================== GnuTLS may be downloaded from one of the mirror sites or direct from <ftp://ftp.gnu.org/gnu/gnutls/>. The list of mirrors can be found at <http://www.gnu.org/software/gnutls/download.html>. Here are the BZIP2 compressed sources (6.0MB): ftp://ftp.gnu.org/gnu/gnutls/gnutls-2.12.0.tar.bz2 http://ftp.gnu.org/gnu/gnutls/gnutls-2.12.0.tar.bz2 Here are OpenPGP detached signatures signed using key 0xB565716F: ftp://ftp.gnu.org/gnu/gnutls/gnutls-2.12.0.tar.bz2.sig http://ftp.gnu.org/gnu/gnutls/gnutls-2.12.0.tar.bz2.sig Note, that we don't distribute gzip compressed tarballs. In order to check that the version of GnuTLS which you are going to install is an original and unmodified one, you should verify the OpenPGP signature. You can use the command gpg --verify gnutls-2.12.0.tar.bz2.sig This checks whether the signature file matches the source file. You should see a message indicating that the signature is good and made by that signing key. Make sure that you have the right key, either by checking the fingerprint of that key with other sources or by checking that the key has been signed by a trustworthy other key. The signing key can be identified with the following information: pub 3104R/96865171 2008-05-04 [expires: 2028-04-29] Key fingerprint = 1F42 4189 05D8 206A A754 CCDC 29EE 58B9 9686 5171 uid Nikos Mavrogiannopoulos <[email protected]> uid Nikos Mavrogiannopoulos <[email protected]> sub 2048R/9013B842 2008-05-04 [expires: 2018-05-02] sub 2048R/1404A91D 2008-05-04 [expires: 2018-05-02] The key is available from: http://members.hellug.gr/nmav/pgpkeys.asc Alternatively, after successfully verifying the OpenPGP signature of this announcement, you could verify that the files match the following checksum values. The value is for SHA-1: 48f27df66c7a721c5ce2b690ab936a3c9162c40a gnutls-2.12.0.tar.bz2 Documentation ============= The manual is available online at: http://www.gnu.org/software/gnutls/documentation.html In particular the following formats are available: HTML: http://www.gnu.org/software/gnutls/manual/html_node/index.html PDF: http://www.gnu.org/software/gnutls/manual/gnutls.pdf For developers there is a GnuTLS API reference manual formatted using the GTK-DOC tools: http://www.gnu.org/software/gnutls/reference/gnutls-gnutls.html Community ========= If you need help to use GnuTLS, or want to help others, you are invited to join our help-gnutls mailing list, see: http://lists.gnu.org/mailman/listinfo/help-gnutls If you wish to participate in the development of GnuTLS, you are invited to join our gnutls-dev mailing list, see: http://lists.gnu.org/mailman/listinfo/gnutls-devel Internationalization ==================== The GnuTLS library messages have been translated into Czech, Dutch, French, German, Italian, Malay, Polish, Simplified Chinese, Swedish, and Vietnamese. We welcome the addition of more translations. regards, Nikos _______________________________________________ Help-gnutls mailing list [email protected] http://lists.gnu.org/mailman/listinfo/help-gnutls
