]> git.ipfire.org Git - thirdparty/gnutls.git/log
thirdparty/gnutls.git
8 years agopo: lib/x509/ocsp.c added to translatable files
Nikos Mavrogiannopoulos [Sat, 27 Jan 2018 15:38:14 +0000 (16:38 +0100)] 
po: lib/x509/ocsp.c added to translatable files

Signed-off-by: Nikos Mavrogiannopoulos <nmav@gnutls.org>
8 years agotests: corrected various typos
Nikos Mavrogiannopoulos [Thu, 4 Jan 2018 16:32:58 +0000 (17:32 +0100)] 
tests: corrected various typos

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agodoc: use 3.6.xx to be consistent with other version references
Nikos Mavrogiannopoulos [Thu, 4 Jan 2018 16:26:54 +0000 (17:26 +0100)] 
doc: use 3.6.xx to be consistent with other version references

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agodoc update
Nikos Mavrogiannopoulos [Tue, 2 Jan 2018 11:44:15 +0000 (12:44 +0100)] 
doc update

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agodoc: getfuncs.pl: distinguish between different typedef types
Nikos Mavrogiannopoulos [Wed, 13 Dec 2017 09:11:57 +0000 (10:11 +0100)] 
doc: getfuncs.pl: distinguish between different typedef types

That allows to properly distinguish a struct from a one liner
typedef.

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agocheck_ocsp_response: print OCSP response actual error on debug log
Nikos Mavrogiannopoulos [Wed, 13 Dec 2017 07:00:38 +0000 (08:00 +0100)] 
check_ocsp_response: print OCSP response actual error on debug log

Signed-off-by: Nikos Mavrogiannopoulos <nmav@gnutls.org>
8 years agox509/cert: reorganized
Nikos Mavrogiannopoulos [Tue, 12 Dec 2017 13:55:29 +0000 (14:55 +0100)] 
x509/cert: reorganized

Split functionality related to certificate credentials and
session certificate handling in cert-cred.c and cert-session.c

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agotests: added unit test for gnutls_ocsp_resp_list_import2
Nikos Mavrogiannopoulos [Wed, 29 Nov 2017 15:19:56 +0000 (16:19 +0100)] 
tests: added unit test for gnutls_ocsp_resp_list_import2

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agodoc: updated
Nikos Mavrogiannopoulos [Wed, 18 Oct 2017 08:35:53 +0000 (10:35 +0200)] 
doc: updated

* document the new behavior of gnutls_certificate_set_ocsp_status_request_file
* updated text on OCSP stapled responses

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agotests: added ocsptool sanity check program
Nikos Mavrogiannopoulos [Tue, 21 Nov 2017 15:31:02 +0000 (16:31 +0100)] 
tests: added ocsptool sanity check program

This checks its functionality in loading and exporting PEM
and DER structures.

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agotests: enhanced OCSP tests
Nikos Mavrogiannopoulos [Mon, 16 Oct 2017 14:05:15 +0000 (16:05 +0200)] 
tests: enhanced OCSP tests

* Run tests under TLS1.2 and TLS1.3
* Verify whether multiple OCSP responses are received in client
  side, under TLS1.3.
* Verify that OCSP status responses can be sent by
  client under TLS1.3
* Verify operation of gnutls_certificate_retrieve_function3
* Verify operation when multiple OCSP responses by file are set

Resolves #307
Resolves #291

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agocert auth: use a single callback to call for OCSP
Nikos Mavrogiannopoulos [Tue, 12 Dec 2017 07:47:00 +0000 (08:47 +0100)] 
cert auth: use a single callback to call for OCSP

That is, when selecting the certificate to use, point to
the callback to use as well (whether it being the global or
a specific) one, for OCSP.

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agoocsp: introduced gnutls_certificate_get_ocsp_expiration()
Nikos Mavrogiannopoulos [Wed, 22 Nov 2017 09:32:04 +0000 (10:32 +0100)] 
ocsp: introduced gnutls_certificate_get_ocsp_expiration()

This is a function to allow obtaining the validity of the OCSP responses
already set in the credential structures.

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agoocsp: enhanced the OCSP response loading APIs
Nikos Mavrogiannopoulos [Fri, 8 Dec 2017 12:45:24 +0000 (13:45 +0100)] 
ocsp: enhanced the OCSP response loading APIs

Introduced gnutls_certificate_set_ocsp_status_request_file2() and
gnutls_certificate_set_ocsp_status_request_mem(). These functions
behave as the equivalent certificate loading functions and pre-load
the OCSP response provided as a file, either in DER or in PEM form.

In addition, ensure that if the server is provided a problematic OCSP
response, or the OCSP response is not renewed before it is invalid, we
will not provide it to the clients.

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agognutls-serv: allow loading multiple OCSP responses
Nikos Mavrogiannopoulos [Wed, 18 Oct 2017 09:26:55 +0000 (11:26 +0200)] 
gnutls-serv: allow loading multiple OCSP responses

That is, allow specifying multiple 'ocsp-response' options on
command line. In addition introduce the option 'ignore-ocsp-response-errors'
which will set the GNUTLS_CERTIFICATE_SKIP_OCSP_RESPONSE_CHECK flag
prior to importing the response.

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agocert: introduced flag GNUTLS_CERTIFICATE_SKIP_OCSP_RESPONSE_CHECK
Nikos Mavrogiannopoulos [Wed, 18 Oct 2017 08:32:20 +0000 (10:32 +0200)] 
cert: introduced flag GNUTLS_CERTIFICATE_SKIP_OCSP_RESPONSE_CHECK

This allows reverting the new semantics of checking the loaded
OCSP response against the certificates present and return
to the 3.5.x semantics.

That option is also useful for debugging as it allows setting
an arbitrary response and checking gnutls' client behavior with that.

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agognutls_certificate_set_ocsp_status_request_file: match input response to certificates
Nikos Mavrogiannopoulos [Thu, 7 Dec 2017 15:16:55 +0000 (16:16 +0100)] 
gnutls_certificate_set_ocsp_status_request_file: match input response to certificates

That is, iterate through the certificate chain to figure to which
certificate the response corresponds to, and assign it to it.
That allows for applications to re-use this function to set
multiple responses when available.

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agoocsp: moved non-extension related functions to ocsp-api.c
Nikos Mavrogiannopoulos [Wed, 6 Dec 2017 12:51:52 +0000 (13:51 +0100)] 
ocsp: moved non-extension related functions to ocsp-api.c

That keeps ext/status_response.c clear of items that are
not related with the extension handling.

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agognutls_ocsp_status_request_get2: allow operation under TLS1.3 for server side
Nikos Mavrogiannopoulos [Tue, 17 Oct 2017 07:59:53 +0000 (09:59 +0200)] 
gnutls_ocsp_status_request_get2: allow operation under TLS1.3 for server side

Under TLS1.3 it is possible for both client and server to send the
status request extension in certificate message.

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agoselect_sign_algorithm: check KX type only on pre-TLS1.3
Nikos Mavrogiannopoulos [Tue, 17 Oct 2017 06:32:09 +0000 (08:32 +0200)] 
select_sign_algorithm: check KX type only on pre-TLS1.3

That, when selecting a certificate under TLS1.3, considers
the negotiated signature algorithms for compatibility with the
certificate to be selected.

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agorename _gnutls_selected_certs_set -> selected_certs_set
Nikos Mavrogiannopoulos [Wed, 6 Dec 2017 12:45:21 +0000 (13:45 +0100)] 
rename _gnutls_selected_certs_set -> selected_certs_set

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agoocsp: send all the OCSP responses under TLS1.3
Nikos Mavrogiannopoulos [Wed, 6 Dec 2017 12:32:28 +0000 (13:32 +0100)] 
ocsp: send all the OCSP responses under TLS1.3

That is, any responses set by the caller application (directly
or via a callback), will be sent to the peer.

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agointroduced gnutls_certificate_retrieve_function3
Nikos Mavrogiannopoulos [Wed, 6 Dec 2017 12:18:16 +0000 (13:18 +0100)] 
introduced gnutls_certificate_retrieve_function3

That allows a certificate callback to provide OCSP responses in addition
to certificates. That also introduces a flags option which currently
accepts GNUTLS_CERT_RETR_DEINIT_ALL which allows the callback to
specify whether the provided data should be deinitialized.

To simplify the certificate callback code, all previous (now legacy)
callbacks are implemented as wrappers over the new callback function.

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agognutls_ocsp_resp_list_import2: introduced
Nikos Mavrogiannopoulos [Wed, 29 Nov 2017 13:27:44 +0000 (14:27 +0100)] 
gnutls_ocsp_resp_list_import2: introduced

That is, introduced function to to import multiple OCSP PEM
responses into a list.

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agoocsptool: import and export OCSP responses in PEM format
Nikos Mavrogiannopoulos [Tue, 21 Nov 2017 15:20:48 +0000 (16:20 +0100)] 
ocsptool: import and export OCSP responses in PEM format

That also modifies the 'request-info' and 'response-info' commands
to check the 'outfile' parameter and if set, to store the corresponding
structure into that file. Currently for OCSP requests there is no
printing of PEM data.

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agoocsp: introduced gnutls_ocsp_resp_import2 and gnutls_ocsp_resp_export2
Nikos Mavrogiannopoulos [Tue, 21 Nov 2017 13:59:31 +0000 (14:59 +0100)] 
ocsp: introduced gnutls_ocsp_resp_import2 and gnutls_ocsp_resp_export2

These allow importing and exporting an OCSP response to PEM format,
in addition to DER.

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years ago_gnutls_x509_cert_verify_peers: verify all received OCSP responses
Nikos Mavrogiannopoulos [Fri, 13 Oct 2017 07:36:38 +0000 (09:36 +0200)] 
_gnutls_x509_cert_verify_peers: verify all received OCSP responses

That is, when verifying the server's certificate, take into account
all present OCSP responses.

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agognutls_ocsp_status_request_get2: added function
Nikos Mavrogiannopoulos [Fri, 13 Oct 2017 07:31:58 +0000 (09:31 +0200)] 
gnutls_ocsp_status_request_get2: added function

The function extends gnutls_ocsp_status_request_get() to
retrieve more than a single responses.

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agotls13/certificate: parse OCSP status response and save responses in auth info struct
Nikos Mavrogiannopoulos [Tue, 10 Oct 2017 08:21:19 +0000 (10:21 +0200)] 
tls13/certificate: parse OCSP status response and save responses in auth info struct

That provides support of OCSP status response under TLS 1.3.

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agoext/status_request: allow more than a single OCSP response to be received
Nikos Mavrogiannopoulos [Tue, 10 Oct 2017 09:14:19 +0000 (11:14 +0200)] 
ext/status_request: allow more than a single OCSP response to be received

That change allows for arbitrary number of OCSP responses
which is required in TLS1.3. The received list is now stored
in auth structure, and thus packed with it on resumption data.
The status response extension data, are now only used on server
side, when temporarily storing the OCSP response to send.

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years ago_gnutls_copy_certificate_auth_info: simplified and avoid multiple allocations
Nikos Mavrogiannopoulos [Tue, 10 Oct 2017 07:59:17 +0000 (09:59 +0200)] 
_gnutls_copy_certificate_auth_info: simplified and avoid multiple allocations

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agotests: updated to account for HMAC-SHA384 and CAMELLIA removal
Nikos Mavrogiannopoulos [Tue, 19 Dec 2017 15:16:29 +0000 (16:16 +0100)] 
tests: updated to account for HMAC-SHA384 and CAMELLIA removal

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agopriorities: provide a more consistent "story" for default cipher settings
Nikos Mavrogiannopoulos [Tue, 19 Dec 2017 15:00:45 +0000 (16:00 +0100)] 
priorities: provide a more consistent "story" for default cipher settings

Current settings in NORMAL priorities which were affected:
 * Enabled ciphers:
  - AES-GCM
  - CHACHA20-POLY1305
  - AES-CCM
  - AES-CBC

 * Enabled signature algorithms:
  - RSA-SHA256
  - RSA-PSS-SHA256
  - ECDSA-SHA256 / ECDSA-SECP256R1-SHA256
  - EDDSA-ED25519
  - RSA-SHA384
  - RSA-PSS-SHA384
  - ECDSA-SHA384 / ECDSA-SECP384R1-SHA384
  - RSA-SHA512
  - RSA-PSS-SHA512
  - ECDSA-SHA512 / ECDSA-SECP521R1-SHA512
  - RSA-SHA1
  - ECDSA-SHA1

Removed:
 * Ciphersuites utilizing HMAC-SHA384. That MAC is only used on "legacy"
   type of ciphersuites, and doesn't provide any advantage over HMAC-SHA256.
 * Ciphersuites utilizing CAMELLIA were removed. TLS1.3 doesn't define any
   CAMELLIA ciphersuites, and thus provide consistent defaults across
   protocols.

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agocertificate request: corrected parsing of signature algorithms
Nikos Mavrogiannopoulos [Tue, 17 Oct 2017 07:27:36 +0000 (09:27 +0200)] 
certificate request: corrected parsing of signature algorithms

That fixes an issue in TLS 1.3 certificate request message parsing.

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agotlsfuzzer: updated to latest master
Nikos Mavrogiannopoulos [Mon, 4 Dec 2017 17:22:54 +0000 (18:22 +0100)] 
tlsfuzzer: updated to latest master

Signed-off-by: Nikos Mavrogiannopoulos <nmav@gnutls.org>
8 years agodoc: documented hsk_flags "lifetime" and its reset
Nikos Mavrogiannopoulos [Sat, 9 Dec 2017 10:23:24 +0000 (11:23 +0100)] 
doc: documented hsk_flags "lifetime" and its reset

Signed-off-by: Nikos Mavrogiannopoulos <nmav@gnutls.org>
8 years agosession state: TLS1.2 and TLS1.3 state is stored as union
Nikos Mavrogiannopoulos [Wed, 8 Nov 2017 12:13:31 +0000 (13:13 +0100)] 
session state: TLS1.2 and TLS1.3 state is stored as union

That is, to reduce memory usage as these protocol cannot be used
in parallel.

Relates: #281

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agosession state: organized key exchange keys into structures
Nikos Mavrogiannopoulos [Wed, 8 Nov 2017 12:08:02 +0000 (13:08 +0100)] 
session state: organized key exchange keys into structures

That is, with the view of separating the data needed for
TLS1.2 and earlier and TLS1.3.

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agorecord state: avoid memory allocations for stored keys
Nikos Mavrogiannopoulos [Tue, 7 Nov 2017 15:52:21 +0000 (16:52 +0100)] 
record state: avoid memory allocations for stored keys

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agohandshake: ffdhe flags merged with handshake flags
Nikos Mavrogiannopoulos [Tue, 7 Nov 2017 15:25:31 +0000 (16:25 +0100)] 
handshake: ffdhe flags merged with handshake flags

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agohandshake: false start flag merged with hsk_flags
Nikos Mavrogiannopoulos [Tue, 7 Nov 2017 15:09:12 +0000 (16:09 +0100)] 
handshake: false start flag merged with hsk_flags

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agohandshake: use hsk_flags in TLS1.2 and TLS1.3
Nikos Mavrogiannopoulos [Tue, 7 Nov 2017 14:36:01 +0000 (15:36 +0100)] 
handshake: use hsk_flags in TLS1.2 and TLS1.3

The flags provide a more transparent view of the received
and expected messages.

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agodoc: added text on TLS1.3 rekey and reauthentication
Nikos Mavrogiannopoulos [Tue, 5 Dec 2017 08:01:56 +0000 (09:01 +0100)] 
doc: added text on TLS1.3 rekey and reauthentication

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agoupdated auto-generated files
Nikos Mavrogiannopoulos [Mon, 4 Dec 2017 16:45:11 +0000 (17:45 +0100)] 
updated auto-generated files

Signed-off-by: Nikos Mavrogiannopoulos <nmav@gnutls.org>
8 years agotests: re-enabled post-handshake auth tests
Nikos Mavrogiannopoulos [Thu, 2 Nov 2017 14:30:43 +0000 (15:30 +0100)] 
tests: re-enabled post-handshake auth tests

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agohandshake: added support for post-handshake authentication
Nikos Mavrogiannopoulos [Thu, 2 Nov 2017 14:19:10 +0000 (15:19 +0100)] 
handshake: added support for post-handshake authentication

That is:
 * introduced a gnutls_init() flag for clients to enable post-handshake
   authentication
 * introduced gnutls_reauth() function, to be called by servers to request
   authentication, and by clients to perform authentication

Resolves #562

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agognutls_record_set_state: use const for seq_number
Nikos Mavrogiannopoulos [Tue, 21 Nov 2017 10:12:14 +0000 (11:12 +0100)] 
gnutls_record_set_state: use const for seq_number

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agotests: added test suite on key limits
Nikos Mavrogiannopoulos [Mon, 20 Nov 2017 15:56:12 +0000 (16:56 +0100)] 
tests: added test suite on key limits

This checks whether key update occurs for the expected ciphersuites.

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agognutls_record_get_state: doc update
Nikos Mavrogiannopoulos [Mon, 20 Nov 2017 15:52:58 +0000 (16:52 +0100)] 
gnutls_record_get_state: doc update

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agoIntroduce key usage limits under TLS1.3
Nikos Mavrogiannopoulos [Mon, 20 Nov 2017 15:01:29 +0000 (16:01 +0100)] 
Introduce key usage limits under TLS1.3

That introduces a transparent key update for sending key after
the safety limit is reached.

Resolves #130

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agoupdated auto-generated files
Nikos Mavrogiannopoulos [Mon, 20 Nov 2017 12:08:18 +0000 (13:08 +0100)] 
updated auto-generated files

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agotests: removed unused variables and introduced temporal vars in macros
Nikos Mavrogiannopoulos [Mon, 30 Oct 2017 07:59:17 +0000 (08:59 +0100)] 
tests: removed unused variables and introduced temporal vars in macros

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agotests: check gnutls_rehandshake() and gnutls_handshake() under TLS1.3
Nikos Mavrogiannopoulos [Mon, 30 Oct 2017 07:51:06 +0000 (08:51 +0100)] 
tests: check gnutls_rehandshake() and gnutls_handshake() under TLS1.3

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agognutls_*handshake: wrap gnutls_session_key_update under TLS 1.3
Nikos Mavrogiannopoulos [Sat, 28 Oct 2017 10:38:52 +0000 (12:38 +0200)] 
gnutls_*handshake: wrap gnutls_session_key_update under TLS 1.3

The semantics of the gnutls_handshake() and gnutls_rehandshake() functions
were tied to TLS 1.2 and earlier behavior. This patch attempts to merge
the two different semantics as follows:

TLS1.2:
 * gnutls_rehandshake: sends a hello request message (asks the peer for a re-handshake)
                       in server side; invalid to be called in client side.

 * gnutls_handshake: performs a re-handshake in either client or server side;
                     in server side it is expected to be called after
                     gnutls_rehandshake().

TLS1.3:
 * gnutls_rehandshake: in server side sends a key update and asks the peer to re-key
                       as well; remains invalid to be called in client side.

 * gnutls_handshake: sends a key update and asks the peer to re-key as well;
                     in client side; is a no-op when called in server side.

Relates #131

Signed-off-by: Nikos Mavrogiannopoulos <nmav@gnutls.org>
8 years agotests: added unit tests with TLS1.3 key update
Nikos Mavrogiannopoulos [Thu, 19 Oct 2017 14:45:18 +0000 (16:45 +0200)] 
tests: added unit tests with TLS1.3 key update

Relates #131

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agohandshake: introduced gnutls_session_key_update()
Nikos Mavrogiannopoulos [Thu, 19 Oct 2017 14:27:30 +0000 (16:27 +0200)] 
handshake: introduced gnutls_session_key_update()

This function allows updating keys of the session and notifying
the peer.

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agohandshake: added TLS1.3 passive key update
Nikos Mavrogiannopoulos [Thu, 19 Oct 2017 12:52:03 +0000 (14:52 +0200)] 
handshake: added TLS1.3 passive key update

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agokeylogfile: write TLS 1.3 secrets
Daiki Ueno [Wed, 29 Nov 2017 10:18:40 +0000 (11:18 +0100)] 
keylogfile: write TLS 1.3 secrets

Signed-off-by: Daiki Ueno <dueno@redhat.com>
8 years ago_gnutls_nss_keylog_write: define new internal API
Daiki Ueno [Tue, 28 Nov 2017 17:28:19 +0000 (18:28 +0100)] 
_gnutls_nss_keylog_write: define new internal API

This patch turns the write_nss_key_log function to an internal
API (with a different name) so that it can be called from other places
implementing TLS 1.3 key scheduling.

Signed-off-by: Daiki Ueno <dueno@redhat.com>
8 years agotls-fuzzer: enabled the large hello checks
Nikos Mavrogiannopoulos [Mon, 27 Nov 2017 10:27:12 +0000 (11:27 +0100)] 
tls-fuzzer: enabled the large hello checks

These were previously not working because tls-fuzzer was not TLS1.3-ready.
This is addressed at the current update, and as such we enable them.

That commit also enables the SNI resumption tests.

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agohkdf: refer to nettle's hkdf.h when available
Nikos Mavrogiannopoulos [Wed, 29 Nov 2017 15:21:45 +0000 (16:21 +0100)] 
hkdf: refer to nettle's hkdf.h when available

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agodoc update
Nikos Mavrogiannopoulos [Wed, 29 Nov 2017 13:04:30 +0000 (14:04 +0100)] 
doc update

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agognutls_prf_rfc5705: apply the context limits only under TLS1.2 or earlier
Nikos Mavrogiannopoulos [Mon, 27 Nov 2017 10:07:40 +0000 (11:07 +0100)] 
gnutls_prf_rfc5705: apply the context limits only under TLS1.2 or earlier

These limits do not exist under TLS1.3.

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agognutls_prf_raw: fail under TLS1.3
Nikos Mavrogiannopoulos [Mon, 27 Nov 2017 10:04:59 +0000 (11:04 +0100)] 
gnutls_prf_raw: fail under TLS1.3

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agotests: included behavioral test of gnutls_prf under TLS1.3
Nikos Mavrogiannopoulos [Mon, 27 Nov 2017 08:10:24 +0000 (09:10 +0100)] 
tests: included behavioral test of gnutls_prf under TLS1.3

Resolves #330

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agognutls_prf: prevent usage under TLS1.3
Nikos Mavrogiannopoulos [Mon, 27 Nov 2017 08:03:31 +0000 (09:03 +0100)] 
gnutls_prf: prevent usage under TLS1.3

Only allow its use when it is documented to have the same output
as gnutls_rfc5705() and in that case make it a wrapper to it.

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agognutls_prf_rfc5705: calculate exporter using HKDF if TLS 1.3
Daiki Ueno [Fri, 24 Nov 2017 10:07:20 +0000 (11:07 +0100)] 
gnutls_prf_rfc5705: calculate exporter using HKDF if TLS 1.3

Signed-off-by: Daiki Ueno <dueno@redhat.com>
8 years agohandshake-tls13: derive and store exporter_master_secret
Daiki Ueno [Fri, 24 Nov 2017 09:55:43 +0000 (10:55 +0100)] 
handshake-tls13: derive and store exporter_master_secret

Signed-off-by: Daiki Ueno <dueno@redhat.com>
8 years ago_tls13_derive_secret: define secret argument
Daiki Ueno [Fri, 24 Nov 2017 09:34:26 +0000 (10:34 +0100)] 
_tls13_derive_secret: define secret argument

TLS 1.3 exporters need to derive a secret from exporter_master_secret
or early_exporter_master_secret, not the handshake or application
secret stored in temp_secret.  Add a new argument @secret to
_tls13_derive_secret to specify any secret.

Signed-off-by: Daiki Ueno <dueno@redhat.com>
8 years agosession state: combined srp and dh prime bits variables
Nikos Mavrogiannopoulos [Wed, 8 Nov 2017 10:45:25 +0000 (11:45 +0100)] 
session state: combined srp and dh prime bits variables

They were being used for the same purpose, and SRP as well as
DH, do not overlap to require two different variables.

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agosession state: mark mod_auth_st_int as constant
Nikos Mavrogiannopoulos [Wed, 8 Nov 2017 10:41:59 +0000 (11:41 +0100)] 
session state: mark mod_auth_st_int as constant

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agodtls: cookie is stored dynamically when needed rather than in pre-allocated size
Nikos Mavrogiannopoulos [Wed, 8 Nov 2017 10:39:53 +0000 (11:39 +0100)] 
dtls: cookie is stored dynamically when needed rather than in pre-allocated size

That reduces the number of bytes used in cases where DTLS is not in use or
we are in server-side.

Relates #281

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agoremoved legacy/unused rsa-related structures/functions
Nikos Mavrogiannopoulos [Tue, 10 Oct 2017 07:54:13 +0000 (09:54 +0200)] 
removed legacy/unused rsa-related structures/functions

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agolib: simplify adding groups according to prioritites
Dmitry Eremin-Solenikov [Sat, 23 Sep 2017 18:43:45 +0000 (21:43 +0300)] 
lib: simplify adding groups according to prioritites

There is little point, remembering if EC or DHE came first and then
adding necessary groups checking that flag. Instead just add groups at
the time first EC or DHE ciphersuite is met.

Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
Signed-off-by: Nikos Mavrogiannopoulos <nmav@gnutls.org>
8 years agotests: added unit test for RDNs in cert callback
Nikos Mavrogiannopoulos [Wed, 4 Oct 2017 07:21:06 +0000 (09:21 +0200)] 
tests: added unit test for RDNs in cert callback

This verifies whether the RDNs received at the callbacks under
TLS1.2 and TLS1.3 have the expected values (corresponding to the
certificates used).

Resolves #297

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agognutls_auth*_get_type: use gnutls_kx_get to retrieve key exchange
Nikos Mavrogiannopoulos [Tue, 3 Oct 2017 13:59:14 +0000 (15:59 +0200)] 
gnutls_auth*_get_type: use gnutls_kx_get to retrieve key exchange

That allows the functions to operate under TLS 1.3 which have
no key exchange as part of the ciphersuite.

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agotests: check certificate callbacks under TLS 1.2 and 1.3
Nikos Mavrogiannopoulos [Tue, 3 Oct 2017 13:28:07 +0000 (15:28 +0200)] 
tests: check certificate callbacks under TLS 1.2 and 1.3

Resolves #278

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agotests: added unit tests for client certificate under TLS1.3
Nikos Mavrogiannopoulos [Tue, 3 Oct 2017 12:56:15 +0000 (14:56 +0200)] 
tests: added unit tests for client certificate under TLS1.3

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agohandshake: handle the certificate authorities extension
Nikos Mavrogiannopoulos [Tue, 3 Oct 2017 12:21:33 +0000 (14:21 +0200)] 
handshake: handle the certificate authorities extension

That is, when sending or receiving the certificate request message.

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agohandshake: added support for client certificates
Nikos Mavrogiannopoulos [Tue, 3 Oct 2017 11:59:39 +0000 (13:59 +0200)] 
handshake: added support for client certificates

That is, receive and parse a certificate request, certificate
verify, as well as certificate in server side.

That way, client certificates

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agohandshake: return GNUTLS_E_NO_CERTIFICATE_FOUND when no certificate is found in TLS1.3
Nikos Mavrogiannopoulos [Tue, 3 Oct 2017 09:48:28 +0000 (11:48 +0200)] 
handshake: return GNUTLS_E_NO_CERTIFICATE_FOUND when no certificate is found in TLS1.3

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agohandshake: send certificate request when requested
Nikos Mavrogiannopoulos [Tue, 3 Oct 2017 09:43:45 +0000 (11:43 +0200)] 
handshake: send certificate request when requested

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agotests: added check for client hello random value after HRR
Nikos Mavrogiannopoulos [Fri, 6 Oct 2017 09:00:16 +0000 (11:00 +0200)] 
tests: added check for client hello random value after HRR

That way we ensure that we follow the tls1.3 draft which requires
the second client hello to be identical to the initial one.

Resolves #299

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agohandshake: treat reply to HRR as a reply to hello verify request
Nikos Mavrogiannopoulos [Fri, 6 Oct 2017 09:16:17 +0000 (11:16 +0200)] 
handshake: treat reply to HRR as a reply to hello verify request

That is, re-use the client random value on the client hello which
is a reply to a hello retry request.

Relates #299

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agotests: added key share behavioral test
Nikos Mavrogiannopoulos [Fri, 6 Oct 2017 08:18:33 +0000 (10:18 +0200)] 
tests: added key share behavioral test

This verifies whether the gnutls_init() flags GNUTLS_KEY_SHARE_TOP,
GNUTLS_KEY_SHARE_TOP2, GNUTLS_KEY_SHARE_TOP3 behave as advertized.

Resolves #284

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agokey share: added flags to gnutls_init() to modify its default behavior
Nikos Mavrogiannopoulos [Fri, 6 Oct 2017 07:05:20 +0000 (09:05 +0200)] 
key share: added flags to gnutls_init() to modify its default behavior

That way the application can adjust the range of keys generated
during client hello attempting to guess the server's algorithm.

Applications are intentionally not given the option to select the
algorithm in the key share, but rather chose from the prioritized
list of groups, to avoid a disconnect between the prioritized
groups, and the key share sent.

Relates #284

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agohandshake: initialize buffer prior to use
Nikos Mavrogiannopoulos [Thu, 2 Nov 2017 14:40:24 +0000 (15:40 +0100)] 
handshake: initialize buffer prior to use

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agotests: added tests for TLS1.2- rollback detection
Nikos Mavrogiannopoulos [Wed, 4 Oct 2017 08:55:48 +0000 (10:55 +0200)] 
tests: added tests for TLS1.2- rollback detection

That is, tests which check
 * whether the server's generated values under TLS1.2- match the expected
 * whether the client would fail on negotiation if the rollback values are detected

Resolves #293

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years ago_gnutls_set_server_random: corrected TLS1.2 and TLS1.1 rollback detection
Nikos Mavrogiannopoulos [Wed, 4 Oct 2017 08:33:11 +0000 (10:33 +0200)] 
_gnutls_set_server_random: corrected TLS1.2 and TLS1.1 rollback detection

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agoextensions: renamed _gnutls_hello_ext_*sdata to _gnutls_hello_ext_*priv
Nikos Mavrogiannopoulos [Tue, 3 Oct 2017 09:08:04 +0000 (11:08 +0200)] 
extensions: renamed _gnutls_hello_ext_*sdata to _gnutls_hello_ext_*priv

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agoserver_name: use the new API for ext data setting
Nikos Mavrogiannopoulos [Tue, 3 Oct 2017 07:35:52 +0000 (09:35 +0200)] 
server_name: use the new API for ext data setting

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agoextensions: enhanced extension lib with pack and unpack functions
Nikos Mavrogiannopoulos [Tue, 3 Oct 2017 06:58:59 +0000 (08:58 +0200)] 
extensions: enhanced extension lib with pack and unpack functions

That allows the functionality to be used for the majority of extensions.

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agotests: check the correct handling of cookie extension in client side
Nikos Mavrogiannopoulos [Tue, 3 Oct 2017 06:41:51 +0000 (08:41 +0200)] 
tests: check the correct handling of cookie extension in client side

Resolves #218

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agoextensions: allow receiving and sending extensions which were not advertised by clien...
Nikos Mavrogiannopoulos [Tue, 3 Oct 2017 06:39:58 +0000 (08:39 +0200)] 
extensions: allow receiving and sending extensions which were not advertised by client side

That is needed due to the special treatment of the cookie extension,
which is sent by the server in HRR even if it was not advertised by
the client.

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agoextensions: optimized gid_to_ext_entry() map on known extensions
Nikos Mavrogiannopoulos [Fri, 29 Sep 2017 14:41:09 +0000 (16:41 +0200)] 
extensions: optimized gid_to_ext_entry() map on known extensions

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agoextensions: avoid double loop when parsing received extensions
Nikos Mavrogiannopoulos [Fri, 29 Sep 2017 14:23:10 +0000 (16:23 +0200)] 
extensions: avoid double loop when parsing received extensions

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agoextensions: avoid looping to discover location of saved data
Nikos Mavrogiannopoulos [Fri, 29 Sep 2017 13:40:36 +0000 (15:40 +0200)] 
extensions: avoid looping to discover location of saved data

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agohandshake: added support for reading and sending cookie extension
Nikos Mavrogiannopoulos [Fri, 29 Sep 2017 13:16:04 +0000 (15:16 +0200)] 
handshake: added support for reading and sending cookie extension

That introduces an internal API to associate data to an extension.

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
8 years agodoc: document the GNUTLS_E_NO_COMMON_KEY_SHARE usage
Nikos Mavrogiannopoulos [Mon, 13 Nov 2017 07:45:09 +0000 (08:45 +0100)] 
doc: document the GNUTLS_E_NO_COMMON_KEY_SHARE usage

Signed-off-by: Nikos Mavrogiannopoulos <nmav@gnutls.org>
8 years agotests: added unit test for hello retry request support
Nikos Mavrogiannopoulos [Fri, 29 Sep 2017 09:58:25 +0000 (11:58 +0200)] 
tests: added unit test for hello retry request support

Resolves #285

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>