[gnutls-help] Reliable way to check if there is %NO_TICKETS in the current configured priority

Oto Šťáva oto.stava at nic.cz
Mon Jan 29 12:01:52 CET 2024


Hello Daiki,

Just to clarify something I seem to have failed to mention in my 
original e-mail: my application is client-side. I'm sorry about any 
possible confusion that may have caused.

In the end, the actual error seemed to be in my incorrect use of ngtcp2, 
although I was only ever able to reproduce it in the specific case of 
having "%NO_TICKETS" in the priority string and passing the 
GNUTLS_ENABLE_EARLY_DATA flag to gnutls_init() at the same time. Even 
after correcting the use of ngtcp2's API, I still get errors while 
trying to send early data, though (I have not yet found out what the 
actual errors are, since the calls are "hidden away" in ngtcp2's crypto 
library and not propagated outside), so it might still be worth adding a 
reliable way of detecting this misconfiguration and maybe falling back 
to disabling 0-RTT, as you mentioned.

Best regards
Oto Šťáva

On 1/29/24 06:16, Daiki Ueno wrote:
> Hello Oto,
>
> Sorry for the late response.
>
> Oto Šťáva <oto.stava at nic.cz> writes:
>
>> I have an application that allows the user to set their own priority
>> string for GnuTLS, including the %NO_TICKETS keyword, which disables
>> TLS resumption. That same application also supports QUIC via the
>> ngtcp2 library. There is an edge-case where if I set %NO_TICKETS and
>> attempt to use 0-RTT functions of the ngtcp2 library, the QUIC
>> connection gets into an invalid state and eventually crashes with an
>> assertion error. Is there some API through which I can reliably check
>> whether tickets are enabled for a session so as to avoid calling the
>> 0-RTT-related functions in such a case? I tried via
>> (gnutls_session_get_flags(...) & GNUTLS_SFLAGS_SESSION_TICKET), but
>> that returns true even when %NO_TICKETS is present in the priority
>> string. Would I have to parse the priority string manually?
> Right, GNUTLS_SFLAGS_SESSION_TICKET can only be used to check whether a
> session ticket is received.  There is currently no API that returns the
> settings of the use of session tickets, and I generally agree that it
> would make sense to have one like gnutls_session_ticket_enabled_server.
>
> I haven't looked into the actual error when used with ngtcp2, but does
> it happen around (or inside) the call to GnuTLS API
> gnutls_record_*_early_data?  If so, we might rather want to add a
> fallback behavior (i.e., disabling 0-RTT) rather than erroring out.
>
> Regards,



More information about the Gnutls-help mailing list