summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* _gnutls_parse_hello_extensions: enforce that pre-shared-key extension is lasttmp-fix-order-extensionsNikos Mavrogiannopoulos2018-06-123-4/+16
| | | | | | | | | | This is a requirement in draft-ietf-tls-tls13-28 4.2.11 section: The "pre_shared_key" extension MUST be the last extension in the ClientHello (this facilitates implementation as described below). Servers MUST check that it is the last extension and otherwise fail the handshake with an "illegal_parameter" alert. Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
* tests: check whether we send the pre-shared key extension after dumbfwNikos Mavrogiannopoulos2018-06-123-0/+380
| | | | Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
* tests: corrected typo in commentNikos Mavrogiannopoulos2018-06-121-1/+1
| | | | Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
* extensions: corrected order of pre-shared-key and dumbfwNikos Mavrogiannopoulos2018-06-121-3/+2
| | | | | | | | | The pre-shared-key MUST always be last under TLS1.3 while the dumbfw extension should be last in order to do proper evaluation of extension size (gnutls requirement). As such the protocol requirement takes precedence. Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
* Fix warnings seen on OpenCSW Solaris 10Tim Rühsen2018-06-106-7/+12
| | | | | Signed-off-by: Tim Rühsen <tim.ruehsen@gmx.de> Signed-off-by: Nikos Mavrogiannopoulos <nmav@gnutls.org>
* gnutls_session_get_data2: harmonize documentation with practiceNikos Mavrogiannopoulos2018-06-081-1/+1
| | | | Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
* Merge branch 'fix-overflow' into 'master'Nikos Mavrogiannopoulos2018-06-061-2/+5
|\ | | | | | | | | | | | | Fix variable overflow in TLS1.3 session ticket code Closes #471 See merge request gnutls/gnutls!656
| * Fix variable overflow in TLS1.3 session ticket codeTim Rühsen2018-06-061-2/+5
|/
* Merge branch 'tmp-session-ticket-incompatible' into 'master'Nikos Mavrogiannopoulos2018-06-055-40/+37
|\ | | | | | | | | TLS 1.3 session ticket: don't send ticket when no common KE modes See merge request gnutls/gnutls!652
| * tls13/session_ticket: don't send ticket when no common KE modesDaiki Ueno2018-06-053-13/+27
| | | | | | | | | | | | | | | | When the server had received psk_key_exchange_modes extension which doesn't have any overlap with the server configuration, omit to send NewSessionTicket. Signed-off-by: Daiki Ueno <dueno@redhat.com>
| * ext/psk_ke_modes: always send extension unless disabled in configDaiki Ueno2018-06-053-27/+10
|/ | | | | | | | | | | | | | With the psk_key_exchange_modes extension, clients can restrict the key exchange modes for use with resumption and in that case the server shouldn't send NewSessionTicket. This patch makes use of it to avoid receiving useless tickets, by sending the psk_key_exchange_modes extension unless PSK is completely disabled. A couple of tests need to be adjusted: tls13/prf to take into account of the psk_key_exchange_modes extension sent, and tls13/no-psk-exts to not treat the presence of the extension as error. Signed-off-by: Daiki Ueno <dueno@redhat.com>
* Merge branch 'fix-tests' into 'master'Nikos Mavrogiannopoulos2018-06-024-2/+4
|\ | | | | | | | | Fix tests See merge request gnutls/gnutls!646
| * Add --enable-doc to DISTCHECK_CONFIGURE_FLAGSTim Rühsen2018-06-011-1/+1
| | | | | | | | | | | | | | Make sure that 'make distcheck' works even if './configure --disable-doc' has been used in the project dir. Signed-off-by: Tim Rühsen <tim.ruehsen@gmx.de>
| * Fix tests 'ocsp-must-staple-connection' and 'ocsp-tls-connection'Tim Rühsen2018-06-012-0/+2
| | | | | | | | Signed-off-by: Tim Rühsen <tim.ruehsen@gmx.de>
| * Fix tests/cert-tests/template-test for 'make distcheck'Tim Rühsen2018-06-011-1/+1
|/ | | | Signed-off-by: Tim Rühsen <tim.ruehsen@gmx.de>
* Merge branch 'tmp-session-ticket-key-name' into 'master'Nikos Mavrogiannopoulos2018-06-013-47/+30
|\ | | | | | | | | | | | | psk: add deterministic detection of session tickets Closes #450 See merge request gnutls/gnutls!651
| * ext/pre_shared_key: make PSK identity parsing robustertmp-session-ticket-key-nameDaiki Ueno2018-06-012-38/+23
| | | | | | | | | | | | | | | | | | | | | | | | Previously, to determine whether a PSK identity is a ticket or a PSK username, it relied on PskIdentity.obfuscated_ticket_age, which "SHOULD" be 0 if the identity is a PSK username. This patch instead checks the key name of the ticket first and then check the constraints of the PSK username. That way, it can distinguish tickets and PSK usernames in a more realible manner. Signed-off-by: Daiki Ueno <dueno@redhat.com>
| * _gnutls_decrypt_session_ticket: fail early on key name mismatchDaiki Ueno2018-06-011-9/+7
|/ | | | | | | If the key name of the ticket doesn't match, we don't need to parse the entire ticket. Signed-off-by: Daiki Ueno <dueno@redhat.com>
* Merge branch 'tmp_rename_ecc_extensions' into 'master'Nikos Mavrogiannopoulos2018-05-3112-158/+217
|\ | | | | | | | | | | | | Renamed extension supported ECC to supported groups. Closes #451 and #454 See merge request gnutls/gnutls!649
| * Renamed extension supported ECC to supported groups. Fixes #451.Tom Vrancken2018-05-2912-158/+217
|/ | | | | | Split combined ECC extensions into different files. Signed-off-by: Tom Vrancken <dev@tomvrancken.nl>
* Merge branch 'fix-warnings' into 'master'Nikos Mavrogiannopoulos2018-05-2610-18/+41
|\ | | | | | | | | Fix some warnings in test suite See merge request gnutls/gnutls!647
| * Fix more warnings in tests/Tim Rühsen2018-05-264-1/+32
| | | | | | | | | | | | | | | | | | To not introduce larger code changes, these bugs are mostly fixed by #pragma understood by gcc and clang. A check for the minimal gcc/clang version prevents warnings about unknown pragmas with other or older compilers. Signed-off-by: Tim Rühsen <tim.ruehsen@gmx.de>
| * Fix warnings in test suiteTim Rühsen2018-05-266-17/+9
|/ | | | | | | | | | | | | | | | | | | Fixes: tls-ext-register.c:238:11: warning: unused variable 'i' [-Wunused-variable] record-retvals.c:118:14: warning: unused variable 'vers' [-Wunused-variable] record-retvals.c:347:1: warning: label 'next' defined but not used [-Wunused-label] alerts.c:71:14: warning: unused variable 'vers' [-Wunused-variable] alerts.c:71:11: warning: unused variable 'i' [-Wunused-variable] alerts.c:160:11: warning: unused variable 'i' [-Wunused-variable] send-client-cert.c:176:6: warning: no previous prototype for 'start' [-Wmissing-prototypes] tls-session-supplemental.c:186:6: warning: unused variable 'optval' [-Wunused-variable] tls-session-supplemental.c:184:7: warning: unused variable 'topbuf' [-Wunused-variable] tls-session-supplemental.c:183:6: warning: unused variable 'err' [-Wunused-variable] x509self.c:211:6: warning: unused variable 'optval' [-Wunused-variable] x509self.c:208:7: warning: unused variable 'topbuf' [-Wunused-variable] x509self.c:207:6: warning: unused variable 'err' [-Wunused-variable] Signed-off-by: Tim Rühsen <tim.ruehsen@gmx.de>
* Merge branch 'tmp-session-resumption2' into 'master'Nikos Mavrogiannopoulos2018-05-2648-875/+2528
|\ | | | | | | | | | | | | TLS 1.3 session resumption Closes #441 and #290 See merge request gnutls/gnutls!638
| * tests: resume: check whether PSK username matches on resumptionNikos Mavrogiannopoulos2018-05-261-2/+14
| | | | | | | | Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
| * resumption: reduce session parameters stored under TLS1.3Nikos Mavrogiannopoulos2018-05-261-162/+131
| | | | | | | | | | | | | | That is, do not store extensions or security parameters which depend on extension negotiation. Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
| * session_ticket: use random noncesNikos Mavrogiannopoulos2018-05-261-4/+1
| | | | | | | | | | | | | | Avoid using any time values in plain as this could allow association of clients. Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
| * updated auto-generated filesNikos Mavrogiannopoulos2018-05-263-0/+4
| | | | | | | | Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
| * doc: mention changes under TLS 1.3Nikos Mavrogiannopoulos2018-05-261-0/+9
| | | | | | | | Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
| * tests: added main use-case test for gnutls_session_ticket_send()Nikos Mavrogiannopoulos2018-05-262-1/+361
| | | | | | | | | | | | | | | | | | It verifies whether a server can use gnutls_session_ticket_send() to send a ticket after re-authentication, and whether a client can receive that ticket and re-authenticate with it, while its certificate is made available to server. Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
| * handshake: do not include async messages into transcriptNikos Mavrogiannopoulos2018-05-261-34/+38
| | | | | | | | | | | | | | This prevents the session tickets to affect re-authentication or other operations that require the transcript. Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
| * gnutls_session_ticket_send: new functionNikos Mavrogiannopoulos2018-05-265-1/+57
| | | | | | | | | | | | | | Introduced in order for a server to be able to send an arbitrary amount of tickets, at any time. Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
| * handshake: store session parameters in TLS1.3 ticketNikos Mavrogiannopoulos2018-05-266-26/+77
| | | | | | | | | | | | | | This allows a TLS1.3 server to obtain certificate or other information from the client on a resumed session. Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
| * handshake: TLS1.3 async messages trigger the handshake hookNikos Mavrogiannopoulos2018-05-264-19/+78
| | | | | | | | | | | | | | | | | | | | That is, the callback set with gnutls_handshake_set_hook_function() is now called even on the async handshake messages received under TLS1.3, such as key update, etc. Resolves #441 Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
| * tests: check various parameters on resumptionNikos Mavrogiannopoulos2018-05-264-60/+158
| | | | | | | | | | | | | | | | | | | | | | | | That is, check gnutls_session_is_resumed() is functional on server side, whether PRF is respected on resumption, whether gnutls_certificate_get_peers() and gnutls_certificate_get_ours() operate as expected, and whether session resumption fails with tickets after expiration time has passed. In addition improve function documentation by documenting the current semantics for the functions above. Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
| * tests: exercise TLS 1.3 session resumptionDaiki Ueno2018-05-264-2/+69
| | | | | | | | | | | | | | | | | | | | This requires a few changes to the resume.c test: because NewSessionTicket is a post-handshake message, gnutls_session_get_data2() needs to be called after sending the first application data. Also, when GNUTLS_E_AGAIN, gnutls_record_recv() needs to retry. Signed-off-by: Daiki Ueno <dueno@redhat.com>
| * gnutls-cli: ignore E_AGAIN to accommodate async handshake messageDaiki Ueno2018-05-261-1/+1
| | | | | | | | | | | | | | | | | | When an async handshake message has arrived while no application data is available, gnutls_record_recv() returns GNUTLS_E_AGAIN and the loop in socket_recv() blocks. Since socket_recv() is guarded by select(), it should be safe to ignore GNUTLS_E_AGAIN. Signed-off-by: Daiki Ueno <dueno@redhat.com>
| * gnutls_auth_get_type: simplifiedNikos Mavrogiannopoulos2018-05-261-16/+4
| | | | | | | | Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
| * TLS 1.3: Introduced TLS 1.3 session resumptionAnder Juaristi2018-05-2630-373/+1266
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This introduces session resumption under TLS 1.3. For that, it enables the psk_ke_modes extension when we enable session tickets. It enables sending session tickets in addition to PSK usernames. The detection of resumption vs pure PSK is done by comparing the indexes sent with the index received by the server. TLS 1.3 session tickets are always sent to the peer unless the GNUTLS_NO_TICKETS is specified. Resolves #290 Signed-off-by: Ander Juaristi <a@juaristi.eus> Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com> Signed-off-by: Daiki Ueno <dueno@redhat.com>
| * psk_ke_modes: introduce psk_ke_modes_is_required() and update docNikos Mavrogiannopoulos2018-05-261-6/+22
| | | | | | | | | | | | | | | | This adds a helper function to be extended when session resumption is added, and clarifies why we send a prioritized list on ke modes. Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com> Signed-off-by: Ander Juaristi <a@juaristi.eus>
| * session tickets: expose {encrypt,decrypt}_ticket as internal APIAnder Juaristi2018-05-264-247/+274
| | | | | | | | | | | | | | | | To reuse the same ticket construction in any TLS versions, expose the private functions in ext/session_ticket.c. Signed-off-by: Ander Juaristi <a@juaristi.eus> Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
| * ext/pre_shared_key: fix binder calculation when HRR is sentDaiki Ueno2018-05-263-14/+48
| | | | | | | | | | | | | | In that case, ClientHello1 and HelloRetryRequest are included in the PSK binder computation, not only the truncated ClientHello2. Signed-off-by: Daiki Ueno <dueno@redhat.com>
| * handshake: record transcript offset of client FinishedDaiki Ueno2018-05-262-0/+9
|/ | | | | | | This is for deriving resumption_master_secret, whose value is calculated over ClientHello...client Finished. Signed-off-by: Daiki Ueno <dueno@redhat.com>
* Merge branch 'fix-testdane' into 'master'Nikos Mavrogiannopoulos2018-05-241-2/+2
|\ | | | | | | | | Fix testdane by removing www.kumari.net See merge request gnutls/gnutls!648
| * Fix testdane by removing www.kumari.netTim Rühsen2018-05-241-2/+2
|/ | | | | | | danetool --check www.kumari.net: Verification: Verification failed. The certificate differs. Signed-off-by: Tim Rühsen <tim.ruehsen@gmx.de>
* Merge branch 'docs-fix' into 'master'Nikos Mavrogiannopoulos2018-05-232-167/+164
|\ | | | | | | | | | | | | Updated documentation on Hello extensions. Closes #437 See merge request gnutls/gnutls!644
| * Fixed some spelling issues. [ci skip]Tom Vrancken2018-05-231-2/+2
| | | | | | | | Signed-off-by: Tom Vrancken <dev@tomvrancken.nl>
| * Added extra extension flag to docs.Tom Vrancken2018-05-231-1/+7
| | | | | | | | | | | | Added description of default pack and unpack functions. Signed-off-by: Tom Vrancken <dev@tomvrancken.nl>
| * Removed section about Heartbleed.Tom Vrancken2018-05-231-29/+2
| | | | | | | | | | | | Referenced new functions _gnutls_hello_ext_set_datum / _gnutls_hello_ext_get_datum for manipulation extension data. Signed-off-by: Tom Vrancken <dev@tomvrancken.nl>
| * Fixed typo and incorrect function references.Tom Vrancken2018-05-231-26/+26
| | | | | | | | Signed-off-by: Tom Vrancken <dev@tomvrancken.nl>