Hugo Landau
3b1ab5a3a0
Enhance quic_tserver test to fully test thread assisted mode
...
Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/20348 )
2023-03-30 11:14:09 +01:00
Hugo Landau
b212d554e7
QUIC CHANNEL: Allow time source to be overridden
...
Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/20348 )
2023-03-30 11:14:09 +01:00
Hugo Landau
ffce2946c7
Switch to using ossl_crypto_mutex from CRYPTO_RWLOCK
...
Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/20348 )
2023-03-30 11:14:08 +01:00
Hugo Landau
ccd3103771
Add channel-only tick mode and use it for thread assisted mode
...
Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/20348 )
2023-03-30 11:14:08 +01:00
Hugo Landau
f2f7c4f15a
Front End for QUIC Thread Assisted Mode
...
Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/20348 )
2023-03-30 11:14:08 +01:00
Hugo Landau
4a530180e5
Fix handshake locking
...
Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/20348 )
2023-03-30 11:14:08 +01:00
Hugo Landau
a8489257e6
Add locking to QUIC front-end
...
Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/20348 )
2023-03-30 11:14:07 +01:00
Hugo Landau
4847599b54
Move channel mutex out of QUIC_CHANNEL for init/teardown flexibility
...
Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/20348 )
2023-03-30 11:14:07 +01:00
Hugo Landau
d7b1faddab
Annotate functions needing locking
...
Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/20348 )
2023-03-30 11:14:07 +01:00
Hugo Landau
c019e1efe9
QUIC Reactor: Allow a mutex to be released during waits
...
Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/20348 )
2023-03-30 11:14:07 +01:00
Hugo Landau
553a4e00aa
QUIC: Add support for datagram injection
...
Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Paul Dale <pauli@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/20451 )
2023-03-22 10:14:25 +11:00
Matt Caswell
4e15b44864
Fix seg fault when calling SSL_shutdown() for a QUIC connection
...
Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Paul Dale <pauli@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/20514 )
2023-03-20 09:35:38 +11:00
Matt Caswell
560470b5d9
Fix SSL_has_pending() for QUIC connections
...
Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Paul Dale <pauli@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/20514 )
2023-03-20 09:35:38 +11:00
Matt Caswell
44a1ac5de0
Provide better errors for some QUIC failures
...
For example if would be helpful if we got more useful information if the
caller forgot to set the peer address.
Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Paul Dale <pauli@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/20514 )
2023-03-20 09:35:38 +11:00
Matt Caswell
f8ffab0d52
Defer unknown QUIC ctrls to the SSL object for TLS
...
If the QUIC oject receives a ctrl it does not recognise, the chances are
it is intended for the underlying SSL object - so we forward unknown ctrls
there.
Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Paul Dale <pauli@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/20514 )
2023-03-20 09:35:38 +11:00
Matt Caswell
d518854cef
Don't send ciphersuites twice in QUIC
...
QUIC TLS was sending some ciphersuites twice in the ClientHello. This
was due to us declaring some TLSv1.3 ciphersuites in the list intended to
describe the TLSv1.2 ciphersuites supported by the SSL_METHOD.
Reviewed-by: Hugo Landau <hlandau@openssl.org>
Reviewed-by: Paul Dale <pauli@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/20148 )
2023-02-23 18:31:44 +11:00
Matt Caswell
c12e111336
Rename various functions OSSL_QUIC_FAULT -> QTEST_FAULT
...
Reviewed-by: Hugo Landau <hlandau@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/20030 )
2023-02-22 05:34:06 +00:00
Matt Caswell
149a8e6c0a
Enable QUIC test server to find out the termination reason
...
We enable querying of the termination reason which is useful for tests.
Reviewed-by: Hugo Landau <hlandau@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/20030 )
2023-02-22 05:34:03 +00:00
Hugo Landau
1d40b151e2
QUIC FIN Support: Various fixes
...
Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/19897 )
2023-01-27 14:19:15 +00:00
Hugo Landau
a9979965bf
QUIC Front End I/O API: Add support for signalling and detecting end-of-stream
...
Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/19897 )
2023-01-27 14:19:15 +00:00
Hugo Landau
e8043229ea
QUIC: Refine SSL_shutdown and begin to implement SSL_shutdown_ex
...
Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/19897 )
2023-01-27 14:19:14 +00:00
Matt Caswell
e95d6e1eec
Remove the user_ssl field
...
The user_ssl field in an SSL_CONNECTION is no longer used - so remove it.
Reviewed-by: Hugo Landau <hlandau@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/19748 )
2023-01-24 17:16:29 +00:00
Matt Caswell
4e3a55fd14
Add QUIC-TLS server support
...
Reviewed-by: Hugo Landau <hlandau@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/19748 )
2023-01-24 17:16:29 +00:00
Matt Caswell
2723d705b5
Replace use of the Dummy Handshake Layer with the real one
...
We start using the QUIC TLS implementation rather than the dummy one.
Reviewed-by: Hugo Landau <hlandau@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/19748 )
2023-01-24 17:16:29 +00:00
Matt Caswell
a7f41885b3
Create the SSL object for QUIC-TLS
...
The "user" SSL object which represents the QUIC connection should have an
"inner" SSL object to represent the TLS connection.
Reviewed-by: Hugo Landau <hlandau@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/19748 )
2023-01-24 17:16:29 +00:00
Hugo Landau
af8b52cffe
QUIC Front-End I/O API: Fix WANT_READ signalling for SSL_read
...
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/19734 )
2023-01-19 13:17:39 +00:00
Hugo Landau
b639475a94
QUIC API: Rename want_net_read and want_net_write
...
Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/19703 )
2023-01-13 13:20:38 +00:00
Hugo Landau
75b2920a21
QUIC CSM: Minor style fixes
...
Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/19703 )
2023-01-13 13:20:35 +00:00
Hugo Landau
c41c7ee976
QUIC: Add TODO for CCM support
...
Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/19703 )
2023-01-13 13:20:22 +00:00
Hugo Landau
3f0c310b80
QUIC Front-End I/O API: Determine read completion correctly
...
Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/19703 )
2023-01-13 13:20:22 +00:00
Hugo Landau
81b6b43c4a
QUIC: Minor comment and editorial fixes
...
Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/19703 )
2023-01-13 13:20:22 +00:00
Hugo Landau
dfc227bd24
QUIC Front End I/O API: Don't allow EPW to be enabled during AON
...
Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/19703 )
2023-01-13 13:20:21 +00:00
Hugo Landau
ca41f6b7e9
QUIC Front End I/O API: Tweaks to handshake processing
...
Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/19703 )
2023-01-13 13:20:21 +00:00
Hugo Landau
a1660c9422
QUIC Front End I/O API: Remove unnecessary code from SSL_get_tick_timeout
...
Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/19703 )
2023-01-13 13:20:20 +00:00
Hugo Landau
d50e750e13
QUIC: Style fixes
...
Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/19703 )
2023-01-13 13:20:20 +00:00
Hugo Landau
8a1a6d6d9e
QUIC Front End I/O API: Wire up SSL_CTX ctrls and remove unneeded functions
...
Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/19703 )
2023-01-13 13:20:19 +00:00
Hugo Landau
c8b3fdc2e4
QUIC: Revise and add some TODO lines
...
Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/19703 )
2023-01-13 13:20:19 +00:00
Hugo Landau
d1ac77b1a5
QUIC Front-End I/O API: Ensure BIOs are reffed and freed correctly
...
Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/19703 )
2023-01-13 13:20:17 +00:00
Hugo Landau
22d53c8883
QUIC Front-End I/O API
...
Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/19703 )
2023-01-13 13:20:15 +00:00
Tomas Mraz
a17c713a7a
Plug the QUIC_RSTREAM to the RX depacketizer
...
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Hugo Landau <hlandau@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/19351 )
2022-11-14 08:01:57 +00:00
Richard Levitte
d5ab48a192
Move the QUIC_CONNECTION typedef to internal headers
...
Also add internal functionality to get a QUIC_CONNECTION pointer from
an SSL pointer, and setters / getters for the GQX and ACKM fields.
Reviewed-by: Hugo Landau <hlandau@openssl.org>
Reviewed-by: Paul Dale <pauli@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/18838 )
2022-09-23 17:48:54 +02:00
Pauli
f0131dc04a
ssl: modify libssl so that it uses OSSL_TIME
...
This is instead of time_t and struct timeval. Some public APIs mandate a
presence of these two types, but they are converted to OSSL_TIME internally.
Reviewed-by: Todd Short <todd.short@me.com>
Reviewed-by: Richard Levitte <levitte@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/19082 )
2022-09-13 21:13:22 +10:00
Matt Caswell
bfc0f10d06
Remove some remaining SSL object references from DTLS record layer
...
Reviewed-by: Hugo Landau <hlandau@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/18132 )
2022-08-18 16:38:13 +01:00
Tomas Mraz
38b051a1fe
SSL object refactoring using SSL_CONNECTION object
...
Make the SSL object polymorphic based on whether this is
a traditional SSL connection, QUIC connection, or later
to be implemented a QUIC stream.
It requires adding if after every SSL_CONNECTION_FROM_SSL() call
which itself has to be added to almost every public SSL_ API call.
Reviewed-by: Richard Levitte <levitte@openssl.org>
Reviewed-by: Hugo Landau <hlandau@openssl.org>
Reviewed-by: Paul Dale <pauli@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/18612 )
2022-07-28 10:04:28 +01:00
Tomas Mraz
08e4901298
Add a test_ssl_new testcase
...
This requires some code being pulled into the empty protocol
implementation so the state machinery works.
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Paul Dale <pauli@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/18307 )
2022-06-03 12:07:18 +10:00
Tomas Mraz
e44795bd5d
First working empty protocol test
...
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Paul Dale <pauli@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/18307 )
2022-06-03 12:07:18 +10:00
Tomas Mraz
99e1cc7bca
Add empty implementations of quic method functions
...
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Paul Dale <pauli@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/18307 )
2022-06-03 12:07:17 +10:00