]> git.ipfire.org Git - thirdparty/gnutls.git/log
thirdparty/gnutls.git
8 years agoconstate: added _gnutls_epoch_dup
Nikos Mavrogiannopoulos [Fri, 15 Sep 2017 06:30:52 +0000 (08:30 +0200)] 
constate: added _gnutls_epoch_dup

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agoconstate: indentation fixes
Nikos Mavrogiannopoulos [Fri, 15 Sep 2017 05:59:21 +0000 (07:59 +0200)] 
constate: indentation fixes

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agohandshake: added basic support for TLS 1.3 handshake in client side
Nikos Mavrogiannopoulos [Thu, 14 Sep 2017 08:22:36 +0000 (10:22 +0200)] 
handshake: added basic support for TLS 1.3 handshake in client side

That does not include support for client certificates as it
requires extension handling improvements in order for extensions
to be context sensitive (now they cannot distinguish whether the
parsing routine is called during client hello or certificate request
reading)

This does not include proper parsing of extensions present in
the certificate message.

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agohandshake: added parsing of encrypted extensions
Nikos Mavrogiannopoulos [Wed, 13 Sep 2017 12:19:12 +0000 (14:19 +0200)] 
handshake: added parsing of encrypted extensions

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agocrypto-api: introduce internal version of AEAD API
Nikos Mavrogiannopoulos [Mon, 25 Sep 2017 08:44:43 +0000 (10:44 +0200)] 
crypto-api: introduce internal version of AEAD API

This allows to initialize the TLS 1.3 connection state without
additional allocations as required by the external API.

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agorecord: added TLS 1.3 record parsing and key derivation
Nikos Mavrogiannopoulos [Fri, 11 Aug 2017 13:16:51 +0000 (15:16 +0200)] 
record: added TLS 1.3 record parsing and key derivation

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agohandshake: introduced TLS 1.3 handshake client state machine outline
Nikos Mavrogiannopoulos [Tue, 18 Jul 2017 11:48:13 +0000 (13:48 +0200)] 
handshake: introduced TLS 1.3 handshake client state machine outline

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agoextensions: separate the hello extensions from others
Nikos Mavrogiannopoulos [Wed, 20 Sep 2017 09:56:28 +0000 (11:56 +0200)] 
extensions: separate the hello extensions from others

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agohello_ext.h: removed non-existant function definition
Nikos Mavrogiannopoulos [Wed, 20 Sep 2017 09:51:10 +0000 (11:51 +0200)] 
hello_ext.h: removed non-existant function definition

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agoextensions: files renamed to hello_ext
Nikos Mavrogiannopoulos [Wed, 20 Sep 2017 09:48:30 +0000 (11:48 +0200)] 
extensions: files renamed to hello_ext

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agoextensions: renamed hello extension handling functions appropriately
Nikos Mavrogiannopoulos [Wed, 20 Sep 2017 09:46:55 +0000 (11:46 +0200)] 
extensions: renamed hello extension handling functions appropriately

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agoextensions: simplified semantics of store and check functions
Nikos Mavrogiannopoulos [Wed, 20 Sep 2017 09:40:54 +0000 (11:40 +0200)] 
extensions: simplified semantics of store and check functions

That is, _gnutls_extension_list_check was made a boolean function,
and both were renamed to more appropriate names such as,
_gnutls_hello_ext_is_present, _gnutls_hello_ext_save.

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agoextension: renamed functions to reflect purpose
Nikos Mavrogiannopoulos [Wed, 20 Sep 2017 09:30:12 +0000 (11:30 +0200)] 
extension: renamed functions to reflect purpose

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agoextensions: use the low-level extension parsing code for hello parsing
Nikos Mavrogiannopoulos [Wed, 20 Sep 2017 08:05:53 +0000 (10:05 +0200)] 
extensions: use the low-level extension parsing code for hello parsing

That's a step towards unification of TLS-type extension handling
for TLS 1.3.

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agoextv: introduced a low-level extension parsing code
Nikos Mavrogiannopoulos [Wed, 20 Sep 2017 07:46:34 +0000 (09:46 +0200)] 
extv: introduced a low-level extension parsing code

This will simplify the parsing and handling of extensions throughout
the TLS 1.3 message contents.

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agoextensions: simplified the extension tracking
Nikos Mavrogiannopoulos [Tue, 19 Sep 2017 10:58:56 +0000 (12:58 +0200)] 
extensions: simplified the extension tracking

Instead of keep a list of the received TLS extension IDs, use the bits
in a variable to mark the received extensions. That reduces the
overall memory usage due to extension tracking.

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agoextensions: use an internal extension ID independent of the TLS id
Nikos Mavrogiannopoulos [Tue, 19 Sep 2017 10:48:14 +0000 (12:48 +0200)] 
extensions: use an internal extension ID independent of the TLS id

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agostr: rename _gnutls_buffer_pop_prefix to _gnutls_buffer_pop_prefix32
Nikos Mavrogiannopoulos [Fri, 15 Sep 2017 12:46:13 +0000 (14:46 +0200)] 
str: rename _gnutls_buffer_pop_prefix to _gnutls_buffer_pop_prefix32

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agostr: rename _gnutls_buffer_pop_datum_prefix to _gnutls_buffer_pop_datum_prefix32
Nikos Mavrogiannopoulos [Fri, 15 Sep 2017 12:45:20 +0000 (14:45 +0200)] 
str: rename _gnutls_buffer_pop_datum_prefix to _gnutls_buffer_pop_datum_prefix32

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agosecurity params: store PRF when packing session
Nikos Mavrogiannopoulos [Thu, 14 Sep 2017 12:10:14 +0000 (14:10 +0200)] 
security params: store PRF when packing session

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agohandshake: simplify by storing a pointer to PRF mac entry
Nikos Mavrogiannopoulos [Thu, 14 Sep 2017 12:03:43 +0000 (14:03 +0200)] 
handshake: simplify by storing a pointer to PRF mac entry

That way, we avoid multiple function calls to obtain information
such as hash size, and other MAC properties.

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agoext/signature: improved TLS 1.3 signature algorithm negotiation
Nikos Mavrogiannopoulos [Thu, 14 Sep 2017 10:13:09 +0000 (12:13 +0200)] 
ext/signature: improved TLS 1.3 signature algorithm negotiation

That is, we introduce a simpler way to handle multiple versions
of a single signature algorithm.

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agostr: added helper functions to read prefixed data with 8 or 16-bit headers
Nikos Mavrogiannopoulos [Thu, 14 Sep 2017 09:21:51 +0000 (11:21 +0200)] 
str: added helper functions to read prefixed data with 8 or 16-bit headers

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agoecc: do not warn on receiving extension on client side
Nikos Mavrogiannopoulos [Thu, 14 Sep 2017 07:44:58 +0000 (09:44 +0200)] 
ecc: do not warn on receiving extension on client side

This extension can be received used under TLS 1.3 on the client side.

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agoAdded TLS 1.3 HKDF key derivation functionality
Nikos Mavrogiannopoulos [Mon, 14 Aug 2017 12:30:07 +0000 (14:30 +0200)] 
Added TLS 1.3 HKDF key derivation functionality

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agoextensions: include extension number in debugging message
Nikos Mavrogiannopoulos [Tue, 12 Sep 2017 08:30:59 +0000 (10:30 +0200)] 
extensions: include extension number in debugging message

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agotests: check behavior on the extension hello flags
Nikos Mavrogiannopoulos [Tue, 12 Sep 2017 08:12:41 +0000 (10:12 +0200)] 
tests: check behavior on the extension hello flags

That is, verify whether the various combinations of
GNUTLS_EXT_FLAG_CLIENT_HELLO,
GNUTLS_EXT_FLAG_TLS12_SERVER_HELLO,
GNUTLS_EXT_FLAG_TLS13_SERVER_HELLO
work as expected with regards to sending and receiving
extensions.

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agoextensions: apply extension msg type restrictions
Nikos Mavrogiannopoulos [Mon, 11 Sep 2017 08:26:44 +0000 (10:26 +0200)] 
extensions: apply extension msg type restrictions

That is, on the extension parsing functions ensure that
no extension which are not valid for the currently
received message are parsed.

Signed-off-by: Nikos Mavrogiannopoulos <nmav@gnutls.org>
8 years agoextensions: mark the message validity of each supported extension
Nikos Mavrogiannopoulos [Mon, 11 Sep 2017 08:13:07 +0000 (10:13 +0200)] 
extensions: mark the message validity of each supported extension

Signed-off-by: Nikos Mavrogiannopoulos <nmav@gnutls.org>
8 years agoextensions: type renamed to id for clarity
Nikos Mavrogiannopoulos [Mon, 11 Sep 2017 07:50:58 +0000 (09:50 +0200)] 
extensions: type renamed to id for clarity

We were previously using the variable named 'type' to indicate the
extension ID. With TLS 1.3, extensions are also given an applicability
type (which message the extension applies to), and thus renamed the
variable for clarity.

Signed-off-by: Nikos Mavrogiannopoulos <nmav@gnutls.org>
8 years agotests: guile: don't use VERS-TLS-ALL
Nikos Mavrogiannopoulos [Tue, 12 Sep 2017 06:03:59 +0000 (08:03 +0200)] 
tests: guile: don't use VERS-TLS-ALL

That is, avoid enabling experimental protocols.

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years ago.gitlab-ci.yml: abi-coverage: include guile logs
Nikos Mavrogiannopoulos [Tue, 12 Sep 2017 06:00:00 +0000 (08:00 +0200)] 
.gitlab-ci.yml: abi-coverage: include guile logs

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agonettle: added HKDF functions
Nikos Mavrogiannopoulos [Mon, 14 Aug 2017 07:20:25 +0000 (09:20 +0200)] 
nettle: added HKDF functions

They are being included conditionally depending on the RSA-PSS feature
(RSA-PSS and HKDF are expected to be introduced at the same version).

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agognutls-cli-debug: use explicit TLS versions rather than TLS-ALL
Nikos Mavrogiannopoulos [Mon, 11 Sep 2017 13:54:40 +0000 (15:54 +0200)] 
gnutls-cli-debug: use explicit TLS versions rather than TLS-ALL

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years ago_gnutls_server_select_suite: don't set auth callbacks for TLS 1.3
Nikos Mavrogiannopoulos [Tue, 15 Aug 2017 13:37:04 +0000 (15:37 +0200)] 
_gnutls_server_select_suite: don't set auth callbacks for TLS 1.3

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agosupported_versions: print negotiated protocol
Nikos Mavrogiannopoulos [Tue, 15 Aug 2017 09:00:27 +0000 (11:00 +0200)] 
supported_versions: print negotiated protocol

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agoNegotiate draft-TLS1.3
Nikos Mavrogiannopoulos [Tue, 18 Jul 2017 13:35:21 +0000 (15:35 +0200)] 
Negotiate draft-TLS1.3

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agohandshake: added the TLS 1.3 ciphersuites
Nikos Mavrogiannopoulos [Tue, 18 Jul 2017 12:14:58 +0000 (14:14 +0200)] 
handshake: added the TLS 1.3 ciphersuites

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agohandshake: print negotiated version after its negotiation (for TLS1.3)
Nikos Mavrogiannopoulos [Mon, 11 Sep 2017 09:45:39 +0000 (11:45 +0200)] 
handshake: print negotiated version after its negotiation (for TLS1.3)

Signed-off-by: Nikos Mavrogiannopoulos <nmav@gnutls.org>
8 years agotests: fix TLS version to 1.2 for tests which used VERS-TLS-ALL
Nikos Mavrogiannopoulos [Mon, 11 Sep 2017 09:33:31 +0000 (11:33 +0200)] 
tests: fix TLS version to 1.2 for tests which used VERS-TLS-ALL

This allows the test suite to run, even when TLS1.3 is still
experimental.

Signed-off-by: Nikos Mavrogiannopoulos <nmav@gnutls.org>
8 years agoAdded support for key share extension
Nikos Mavrogiannopoulos [Fri, 14 Jul 2017 07:34:05 +0000 (09:34 +0200)] 
Added support for key share extension

This enables TLS 1.3 key exchange based on the key share extension.

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agohandshake: always accept TLS 1.2 in client hello if we have later protocols enabled
Nikos Mavrogiannopoulos [Tue, 18 Jul 2017 07:23:53 +0000 (09:23 +0200)] 
handshake: always accept TLS 1.2 in client hello if we have later protocols enabled

That is because after TLS 1.3 there is no negotiation of the version using
the Client Hello field, but with an extension.

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agorequire nettle 3.3 or later
Nikos Mavrogiannopoulos [Tue, 18 Jul 2017 06:23:01 +0000 (08:23 +0200)] 
require nettle 3.3 or later

This will simplify handling of the x25519 key exchange.

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agostr: added function to append fixed-size MPI
Nikos Mavrogiannopoulos [Fri, 14 Jul 2017 07:10:11 +0000 (09:10 +0200)] 
str: added function to append fixed-size MPI

This is used in TLS 1.3 which introduces a new MPI over-the-wire
format.

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agotests: resumption tests were restricted to TLS 1.2
Nikos Mavrogiannopoulos [Thu, 13 Jul 2017 09:57:26 +0000 (11:57 +0200)] 
tests: resumption tests were restricted to TLS 1.2

TLS 1.3 implements resumption is a different way, so we should
introduce new resumption tests once that support is in place.

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agoext/post_handshake: restrict the use of this extension to TLS 1.3 or later
Nikos Mavrogiannopoulos [Thu, 13 Jul 2017 09:52:07 +0000 (11:52 +0200)] 
ext/post_handshake: restrict the use of this extension to TLS 1.3 or later

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agohandshake: optimizations and enhancements in session version handling
Nikos Mavrogiannopoulos [Thu, 13 Jul 2017 09:46:29 +0000 (11:46 +0200)] 
handshake: optimizations and enhancements in session version handling

This introduces the following new functions:
const version_entry_st *_gnutls_legacy_version_max(gnutls_session_t session);
const version_entry_st *_gnutls_version_max(gnutls_session_t session);

which replace their previous counterparts.

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agotests: check for post-handshake extension in TLS 1.2-only sessions
Nikos Mavrogiannopoulos [Thu, 13 Jul 2017 09:21:24 +0000 (11:21 +0200)] 
tests: check for post-handshake extension in TLS 1.2-only sessions

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agotests: added unit tests for post-handshake-auth extension
Nikos Mavrogiannopoulos [Thu, 13 Jul 2017 09:14:56 +0000 (11:14 +0200)] 
tests: added unit tests for post-handshake-auth extension

These test whether this extension is seen under TLS 1.3 in client
hello, and whether it is not present in server hello.

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agohandshake: send client and server hellos according to TLS 1.3
Nikos Mavrogiannopoulos [Thu, 13 Jul 2017 08:33:18 +0000 (10:33 +0200)] 
handshake: send client and server hellos according to TLS 1.3

That is, when TLS 1.3 is negotiated the compression algorithms and
session ID fields are no longer sent.

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agoAdded support for post handshake auth extension
Nikos Mavrogiannopoulos [Thu, 13 Jul 2017 07:44:28 +0000 (09:44 +0200)] 
Added support for post handshake auth extension

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agotests: updated for new behavior of disabling protocols on missing signature algorithms
Nikos Mavrogiannopoulos [Wed, 12 Jul 2017 11:40:19 +0000 (13:40 +0200)] 
tests: updated for new behavior of disabling protocols on missing signature algorithms

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agotests: verify that no signature algorithms with (D)TLS 1.2 will cause an error
Nikos Mavrogiannopoulos [Wed, 12 Jul 2017 11:38:39 +0000 (13:38 +0200)] 
tests: verify that no signature algorithms with (D)TLS 1.2 will cause an error

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agopriorities: when no signature algorithms eliminate (D)TLS 1.2 or later
Nikos Mavrogiannopoulos [Wed, 12 Jul 2017 11:33:46 +0000 (13:33 +0200)] 
priorities: when no signature algorithms eliminate (D)TLS 1.2 or later

If an application intentionally disables all signature algorithms, ensure
that we can operate by eliminating protocol options which require these
signature algorithms to be set.

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agotests: safer use of gnutls_bye in _test_cli_serv()
Nikos Mavrogiannopoulos [Wed, 12 Jul 2017 11:16:10 +0000 (13:16 +0200)] 
tests: safer use of gnutls_bye in _test_cli_serv()

In addition make sure we check gnutls_priority_set() for errors.

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agotests: added checks for special signature algorithms
Nikos Mavrogiannopoulos [Wed, 12 Jul 2017 07:40:46 +0000 (09:40 +0200)] 
tests: added checks for special signature algorithms

This tests the behavior when signature algorithms only available
under TLS1.3 are present in a TLS 1.2 session.

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agotests: verify that +SIGN-ECDSA-SECP256R1-SHA256 has no effect when combined with...
Nikos Mavrogiannopoulos [Wed, 12 Jul 2017 07:38:26 +0000 (09:38 +0200)] 
tests: verify that +SIGN-ECDSA-SECP256R1-SHA256 has no effect when combined with TLS1.2

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agotests: added signature tests for ECDSA-SECP256R1-SHA256
Nikos Mavrogiannopoulos [Wed, 12 Jul 2017 06:56:18 +0000 (08:56 +0200)] 
tests: added signature tests for ECDSA-SECP256R1-SHA256

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agopriority: do not include signature algorithms that apply to different TLS version
Nikos Mavrogiannopoulos [Wed, 12 Jul 2017 07:19:16 +0000 (09:19 +0200)] 
priority: do not include signature algorithms that apply to different TLS version

That is, when a signature algorithm that is only applicable
to specific TLS protocol semantics (e.g., ECDSA-SECP256R1-SHA256)
is enabled, under TLS 1.2, it will result to no code points being
added. That prevents connection errors due to "wrong" code
points being added that do not correspond to a usable signature
algorithm under the protocol.

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agotests: updated for the new behavior of handshake
Nikos Mavrogiannopoulos [Tue, 11 Jul 2017 12:07:43 +0000 (14:07 +0200)] 
tests: updated for the new behavior of handshake

Previously at handshake we would negotiate a ciphersuite and certificate
and later figure out a signature algorithm. Now we negotiate all at once,
so we no longer reach situations where mid-way of handshake we figure we
have no signature algorithm to use. Update the test cases relying on that
behavior to account the new one.

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agopubkey: enforce TLS 1.3 signature restrictions on verification
Nikos Mavrogiannopoulos [Tue, 11 Jul 2017 09:09:51 +0000 (11:09 +0200)] 
pubkey: enforce TLS 1.3 signature restrictions on verification

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agoext/signature: added TLS 1.3 signature algorithm negotiation
Nikos Mavrogiannopoulos [Mon, 10 Jul 2017 14:43:51 +0000 (16:43 +0200)] 
ext/signature: added TLS 1.3 signature algorithm negotiation

That patch adds the signature algorithms:
 - GNUTLS_SIGN_ECDSA_SECP256R1_SHA256
 - GNUTLS_SIGN_ECDSA_SECP384R1_SHA384
 - GNUTLS_SIGN_ECDSA_SECP521R1_SHA512

and enables them for the default TLS priority strings.
In addition it allows negotiating signature algorithms sharing
the same TLS IDs, but which have different semantics between TLS
versions (e.g., 6,4 maps to GNUTLS_SIGN_ECDSA_SHA512 under TLS 1.2
but to GNUTLS_SIGN_ECDSA_SECP521R1_SHA512 under TLS 1.3).

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agotests: added unit test for TLS 1.3 version negotiation
Nikos Mavrogiannopoulos [Mon, 19 Jun 2017 13:20:00 +0000 (15:20 +0200)] 
tests: added unit test for TLS 1.3 version negotiation

This checks whether the Client Hello and Server Hello packets
contain the expected values.

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agohandshake: added support for negotiating version using extension
Nikos Mavrogiannopoulos [Mon, 19 Jun 2017 12:17:40 +0000 (14:17 +0200)] 
handshake: added support for negotiating version using extension

That is, introduced the TLS 1.3 supported_versions extension. It is currently
only being used if negotiating TLS 1.3 or later.

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agohandshake: legacy version negotiation is not used for TLS 1.3
Nikos Mavrogiannopoulos [Mon, 19 Jun 2017 11:30:46 +0000 (13:30 +0200)] 
handshake: legacy version negotiation is not used for TLS 1.3

That is, ensure that the functions used for TLS 1.2 and earlier
negotiation cannot be used with TLS 1.3. That is because TLS 1.3
is negotiated using a TLS extension.

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agoAdded TLS 1.3 Hello message random generation
Nikos Mavrogiannopoulos [Mon, 19 Jun 2017 09:57:22 +0000 (11:57 +0200)] 
Added TLS 1.3 Hello message random generation

That is, added check for TLS 1.3 random value requirements in client side,
and generation according to TLS 1.3 requirements for server and
client side.

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agoRevert "priority: disable the enabled by default RSA-PSS signature algorithms"
Nikos Mavrogiannopoulos [Mon, 19 Feb 2018 13:57:55 +0000 (14:57 +0100)] 
Revert "priority: disable the enabled by default RSA-PSS signature algorithms"

This reverts commit ef44477127952c13e93d7ea88f7b549bf36602f5.

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agoupdated auto-generated files
Nikos Mavrogiannopoulos [Sat, 10 Feb 2018 10:13:57 +0000 (11:13 +0100)] 
updated auto-generated files

Signed-off-by: Nikos Mavrogiannopoulos <nmav@gnutls.org>
8 years agodoc update
Nikos Mavrogiannopoulos [Mon, 22 Jan 2018 10:52:19 +0000 (11:52 +0100)] 
doc update

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agotests: check gnutls_fips140_set_mode operation per thread
Nikos Mavrogiannopoulos [Tue, 30 Jan 2018 06:41:26 +0000 (07:41 +0100)] 
tests: check gnutls_fips140_set_mode operation per thread

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agotests: added unit test of gnutls_fips140_set_mode
Nikos Mavrogiannopoulos [Sun, 21 Jan 2018 14:49:42 +0000 (15:49 +0100)] 
tests: added unit test of gnutls_fips140_set_mode

Also ensure that 512-bit keys cannot be generated
in FIPS140-2 mode

Signed-off-by: Nikos Mavrogiannopoulos <nmav@gnutls.org>
8 years agotests: gnutls_hmac_fast: explicitly enable MD5 use under FIPS140-2 mode
Nikos Mavrogiannopoulos [Mon, 22 Jan 2018 10:40:42 +0000 (11:40 +0100)] 
tests: gnutls_hmac_fast: explicitly enable MD5 use under FIPS140-2 mode

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agotests: gc.c -> gnutls_hmac_fast.c
Nikos Mavrogiannopoulos [Thu, 21 Dec 2017 11:38:29 +0000 (12:38 +0100)] 
tests: gc.c -> gnutls_hmac_fast.c

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agodoc: documented gnutls_fips140_set_mode and gnutls_fips_mode_t
Nikos Mavrogiannopoulos [Mon, 22 Jan 2018 08:15:03 +0000 (09:15 +0100)] 
doc: documented gnutls_fips140_set_mode and gnutls_fips_mode_t

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agofips140: added function for applications to switch the FIPS140-2 mode
Nikos Mavrogiannopoulos [Sun, 21 Jan 2018 14:07:00 +0000 (15:07 +0100)] 
fips140: added function for applications to switch the FIPS140-2 mode

That would allow FIPS140-2 compliant applications to use forbidden
algorithms by switching to a lax FIPS140-2 mode.

Resolves #352
Resolves #353

Signed-off-by: Nikos Mavrogiannopoulos <nmav@gnutls.org>
8 years agofips140: enforcement of allowed ciphers moved to crypto-api.c and cipher_int.c
Nikos Mavrogiannopoulos [Sun, 21 Jan 2018 13:01:17 +0000 (14:01 +0100)] 
fips140: enforcement of allowed ciphers moved to crypto-api.c and cipher_int.c

Signed-off-by: Nikos Mavrogiannopoulos <nmav@gnutls.org>
8 years agofips140: enforcement of hash and MACs use moved to crypto-api.c and hash_int.c
Nikos Mavrogiannopoulos [Wed, 20 Dec 2017 14:36:59 +0000 (15:36 +0100)] 
fips140: enforcement of hash and MACs use moved to crypto-api.c and hash_int.c

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agotests: srp: increased timeout to 40secs [ci skip]
Nikos Mavrogiannopoulos [Mon, 19 Feb 2018 07:38:35 +0000 (08:38 +0100)] 
tests: srp: increased timeout to 40secs [ci skip]

Since we increased the maximum parameters to 8k, ensure
that slower systems have enough time to complete the handshake.

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agodoc: updates NEWS entry for 3.6.2 adding ABI changes [ci skip]
Nikos Mavrogiannopoulos [Sun, 18 Feb 2018 19:58:07 +0000 (20:58 +0100)] 
doc: updates NEWS entry for 3.6.2 adding ABI changes [ci skip]

Signed-off-by: Nikos Mavrogiannopoulos <nmav@gnutls.org>
8 years agolatex: introduced functionWarning macro
Nikos Mavrogiannopoulos [Fri, 16 Feb 2018 07:54:26 +0000 (08:54 +0100)] 
latex: introduced functionWarning macro

Signed-off-by: Nikos Mavrogiannopoulos <nmav@gnutls.org>
8 years agobumped version gnutls_3_6_2
Nikos Mavrogiannopoulos [Fri, 16 Feb 2018 07:27:56 +0000 (08:27 +0100)] 
bumped version

Signed-off-by: Nikos Mavrogiannopoulos <nmav@gnutls.org>
8 years agotests: check whether gnutls_credentials_set() can be set in an hsk hook
Nikos Mavrogiannopoulos [Tue, 13 Feb 2018 15:34:09 +0000 (16:34 +0100)] 
tests: check whether gnutls_credentials_set() can be set in an hsk hook

This is useful when these are set during the handshake process
on the handshake hook before client hello is parsed.

Relates #382

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agodoc: documented how to set the credentials late in certain vhost scenarios
Nikos Mavrogiannopoulos [Tue, 13 Feb 2018 15:47:16 +0000 (16:47 +0100)] 
doc: documented how to set the credentials late in certain vhost scenarios

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agodoc: updated text on gnutls_handshake_set_hook_function
Nikos Mavrogiannopoulos [Tue, 13 Feb 2018 15:21:52 +0000 (16:21 +0100)] 
doc: updated text on gnutls_handshake_set_hook_function

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agodoc update [ci skip]
Nikos Mavrogiannopoulos [Tue, 13 Feb 2018 10:12:09 +0000 (11:12 +0100)] 
doc update [ci skip]

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agopriority: disable the enabled by default RSA-PSS signature algorithms
Nikos Mavrogiannopoulos [Mon, 12 Feb 2018 10:18:06 +0000 (11:18 +0100)] 
priority: disable the enabled by default RSA-PSS signature algorithms

They have been modified in the latest (yet unsupported) TLS 1.3
drafts, so prevent causes interoperability failures by keeping them
on.

Signed-off-by: Nikos Mavrogiannopoulos <nmav@gnutls.org>
8 years agotests: cipher-openssl-compat: extend to include CCM tests
Nikos Mavrogiannopoulos [Mon, 12 Feb 2018 08:20:17 +0000 (09:20 +0100)] 
tests: cipher-openssl-compat: extend to include CCM tests

Signed-off-by: Nikos Mavrogiannopoulos <nmav@gnutls.org>
8 years agoImprove documentation of gnutls_x509_trust_list_iter_get_ca [ci skip]
Michael Catanzaro [Fri, 9 Feb 2018 16:22:24 +0000 (10:22 -0600)] 
Improve documentation of gnutls_x509_trust_list_iter_get_ca [ci skip]

The documentation is confusing because it implies that
gnutls_x509_trust_list_iter_deinit() should be called after using this
function, but in fact it is generally not necessary.

Also, there was a typo here ("usin").

Signed-off-by: Michael Catanzaro <mcatanzaro@igalia.com>
8 years ago.gitlab-ci.yml: run the fuzz testsuite under various CPU capabilities
Nikos Mavrogiannopoulos [Wed, 7 Feb 2018 17:59:39 +0000 (18:59 +0100)] 
.gitlab-ci.yml: run the fuzz testsuite under various CPU capabilities

Signed-off-by: Nikos Mavrogiannopoulos <nmav@gnutls.org>
8 years agoaccelerated: make explicit key size check to all accelerated ciphers
Nikos Mavrogiannopoulos [Wed, 7 Feb 2018 08:24:18 +0000 (09:24 +0100)] 
accelerated: make explicit key size check to all accelerated ciphers

That is, do not rely on checks done on asm level, as they vary and
may change over updates. Also handle consistently invalid key sizes
by returning an error, and eliminate calls to abort().

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agoaccelerated: check keysize in SSSE3 cipher setkey
Vitezslav Cizek [Tue, 6 Feb 2018 15:46:31 +0000 (16:46 +0100)] 
accelerated: check keysize in SSSE3 cipher setkey

aes_ssse3_cipher_setkey() accepted any key size,
which could lead to invalid memory access.

Such as with the oss-fuzz corpora file
fuzz/gnutls_pkcs8_key_parser_fuzzer.in/da59d34eacdf50a0019a457fb7c4916be48c99a5

Signed-off-by: Vitezslav Cizek <vcizek@suse.com>
8 years agop11tool: updated documentation [ci skip]
Nikos Mavrogiannopoulos [Thu, 8 Feb 2018 13:32:42 +0000 (14:32 +0100)] 
p11tool: updated documentation [ci skip]

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agonettle: use the nettle_get_secp API when available
Nikos Mavrogiannopoulos [Wed, 7 Feb 2018 10:34:36 +0000 (11:34 +0100)] 
nettle: use the nettle_get_secp API when available

Resolves #380

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agonettle base64_encode_raw: use cast to avoid warnings
Nikos Mavrogiannopoulos [Wed, 6 Dec 2017 08:46:41 +0000 (09:46 +0100)] 
nettle base64_encode_raw: use cast to avoid warnings

Nettle switched prototypes for base64_encode_raw() as follows:
-base64_encode_raw(uint8_t *dst, size_t length, const uint8_t *src);
+base64_encode_raw(char *dst, size_t length, const uint8_t *src);

That means we need to cast fist param to void if we want to avoid
warnings on different platforms.

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agoaccelerated: x86-common: do not use _xgetbv() with clang
Nikos Mavrogiannopoulos [Tue, 6 Feb 2018 13:40:59 +0000 (14:40 +0100)] 
accelerated: x86-common: do not use _xgetbv() with clang

Resolves #372

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agoconfigure: treat solaris as ELF system
Nikos Mavrogiannopoulos [Tue, 6 Feb 2018 13:37:42 +0000 (14:37 +0100)] 
configure: treat solaris as ELF system

Resolves #376

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agotests: repeat cipher test with multiple keys and nonces
Nikos Mavrogiannopoulos [Tue, 6 Feb 2018 03:03:45 +0000 (04:03 +0100)] 
tests: repeat cipher test with multiple keys and nonces

In addition include chacha20-poly1305 into the tests.

Signed-off-by: Nikos Mavrogiannopoulos <nmav@gnutls.org>
8 years agoaccelerated: aarch64: fix GCM counter increment
Nikos Mavrogiannopoulos [Tue, 6 Feb 2018 02:59:17 +0000 (03:59 +0100)] 
accelerated: aarch64: fix GCM counter increment

Ensure that we restrict the GCM counter to the 4 bytes assigned to it.

Signed-off-by: Nikos Mavrogiannopoulos <nmav@gnutls.org>
8 years agoaccelerated: fix use of SSSE3 vpaes_encrypt
Nikos Mavrogiannopoulos [Tue, 6 Feb 2018 03:39:39 +0000 (04:39 +0100)] 
accelerated: fix use of SSSE3 vpaes_encrypt

Previously we assumed that the nettle GCM internal functions
will use the provided ECB function for single block encryption.
Newer versions no longer operate that way. Ensure that we
are compatible with them.

Signed-off-by: Nikos Mavrogiannopoulos <nmav@gnutls.org>
8 years agoaccelerated: fix use of aesni_ecb_encrypt()
Nikos Mavrogiannopoulos [Mon, 5 Feb 2018 19:25:23 +0000 (20:25 +0100)] 
accelerated: fix use of aesni_ecb_encrypt()

Previously we assumed that the nettle GCM internal functions
will use the provided ECB function for single block encryption.
Newer versions no longer operate that way. Ensure that we
are compatible with them.

Signed-off-by: Nikos Mavrogiannopoulos <nmav@gnutls.org>