/* Set if this is the QUIC handshake layer */
# define TLS1_FLAGS_QUIC 0x2000
+/* Set if this is our QUIC handshake layer */
+# define TLS1_FLAGS_QUIC_INTERNAL 0x4000
#endif
# define TLS1_FLAGS_REQUIRED_EXTMS 0x1000
/* 0x2000 is reserved for TLS1_FLAGS_QUIC (internal) */
+/* 0x4000 is reserved for TLS1_FLAGS_QUIC_INTERNAL (internal) */
# define SSL3_MT_HELLO_REQUEST 0
# define SSL3_MT_CLIENT_HELLO 1
}
/* override the user_ssl of the inner connection */
- sc->s3.flags |= TLS1_FLAGS_QUIC;
+ sc->s3.flags |= TLS1_FLAGS_QUIC | TLS1_FLAGS_QUIC_INTERNAL;
/* Restrict options derived from the SSL_CTX. */
sc->options &= OSSL_QUIC_PERMITTED_OPTIONS_CONN;
QUIC_RAISE_NON_NORMAL_ERROR(NULL, ERR_R_INTERNAL_ERROR, NULL);
goto err;
}
- sc->s3.flags |= TLS1_FLAGS_QUIC;
+ sc->s3.flags |= TLS1_FLAGS_QUIC | TLS1_FLAGS_QUIC_INTERNAL;
qc->default_ssl_options = OSSL_QUIC_PERMITTED_OPTIONS;
qc->last_error = SSL_ERROR_NONE;
}
/* Override the user_ssl of the inner connection. */
- tls_conn->s3.flags |= TLS1_FLAGS_QUIC;
+ tls_conn->s3.flags |= TLS1_FLAGS_QUIC | TLS1_FLAGS_QUIC_INTERNAL;
/* Restrict options derived from the SSL_CTX. */
tls_conn->options &= OSSL_QUIC_PERMITTED_OPTIONS_CONN;
if (!ossl_quic_tls_configure(qtls))
return RAISE_INTERNAL_ERROR(qtls);
+ sc->s3.flags |= TLS1_FLAGS_QUIC_INTERNAL;
+
if (qtls->args.is_server)
SSL_set_accept_state(qtls->args.s);
else
* NULL/zero-out everything in the s3 struct, but remember if we are doing
* QUIC.
*/
- flags = sc->s3.flags & TLS1_FLAGS_QUIC;
+ flags = sc->s3.flags & (TLS1_FLAGS_QUIC | TLS1_FLAGS_QUIC_INTERNAL);
memset(&sc->s3, 0, sizeof(sc->s3));
sc->s3.flags |= flags;
# define SSL_WRITE_ETM(s) (s->s3.flags & TLS1_FLAGS_ENCRYPT_THEN_MAC_WRITE)
# define SSL_IS_QUIC_HANDSHAKE(s) (((s)->s3.flags & TLS1_FLAGS_QUIC) != 0)
+# define SSL_IS_QUIC_INT_HANDSHAKE(s) (((s)->s3.flags & TLS1_FLAGS_QUIC_INTERNAL) != 0)
/* no end of early data */
# define SSL_NO_EOED(s) SSL_IS_QUIC_HANDSHAKE(s)
if (s->s3.tmp.max_ver == 0)
return 1;
- if (SSL_IS_QUIC_HANDSHAKE(s))
+ if (SSL_IS_QUIC_INT_HANDSHAKE(s))
/* For QUIC, only allow these ciphersuites. */
switch (SSL_CIPHER_get_id(c)) {
case TLS1_3_CK_AES_128_GCM_SHA256: