From: Hugo Landau Date: Thu, 15 Feb 2024 08:55:24 +0000 (+0000) Subject: QUIC: Make QUIC transport error codes public X-Git-Tag: openssl-3.3.0-alpha1~42 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=02f5ab77854647e4f34cdd340d57bb071afb997d;p=thirdparty%2Fopenssl.git QUIC: Make QUIC transport error codes public Reviewed-by: Matt Caswell Reviewed-by: Tim Hudson (Merged from https://github.com/openssl/openssl/pull/23598) --- diff --git a/include/internal/quic_error.h b/include/internal/quic_error.h index ae195a5f88e..29f5e424f4d 100644 --- a/include/internal/quic_error.h +++ b/include/internal/quic_error.h @@ -11,43 +11,18 @@ # define OSSL_QUIC_ERROR_H # include +# include # ifndef OPENSSL_NO_QUIC -/* RFC 9000 Section 20.1 */ -# define QUIC_ERR_NO_ERROR 0x00 -# define QUIC_ERR_INTERNAL_ERROR 0x01 -# define QUIC_ERR_CONNECTION_REFUSED 0x02 -# define QUIC_ERR_FLOW_CONTROL_ERROR 0x03 -# define QUIC_ERR_STREAM_LIMIT_ERROR 0x04 -# define QUIC_ERR_STREAM_STATE_ERROR 0x05 -# define QUIC_ERR_FINAL_SIZE_ERROR 0x06 -# define QUIC_ERR_FRAME_ENCODING_ERROR 0x07 -# define QUIC_ERR_TRANSPORT_PARAMETER_ERROR 0x08 -# define QUIC_ERR_CONNECTION_ID_LIMIT_ERROR 0x09 -# define QUIC_ERR_PROTOCOL_VIOLATION 0x0A -# define QUIC_ERR_INVALID_TOKEN 0x0B -# define QUIC_ERR_APPLICATION_ERROR 0x0C -# define QUIC_ERR_CRYPTO_BUFFER_EXCEEDED 0x0D -# define QUIC_ERR_KEY_UPDATE_ERROR 0x0E -# define QUIC_ERR_AEAD_LIMIT_REACHED 0x0F -# define QUIC_ERR_NO_VIABLE_PATH 0x10 - -/* Inclusive range for handshake-specific errors. */ -# define QUIC_ERR_CRYPTO_ERR_BEGIN 0x0100 -# define QUIC_ERR_CRYPTO_ERR_END 0x01FF - -# define QUIC_ERR_CRYPTO_ERR(X) \ - (QUIC_ERR_CRYPTO_ERR_BEGIN + (X)) - -# define QUIC_ERR_CRYPTO_UNEXPECTED_MESSAGE \ - QUIC_ERR_CRYPTO_ERR(SSL3_AD_UNEXPECTED_MESSAGE) - -# define QUIC_ERR_CRYPTO_MISSING_EXT \ - QUIC_ERR_CRYPTO_ERR(TLS13_AD_MISSING_EXTENSION) - -# define QUIC_ERR_CRYPTO_NO_APP_PROTO \ - QUIC_ERR_CRYPTO_ERR(TLS1_AD_NO_APPLICATION_PROTOCOL) +# define OSSL_QUIC_ERR_CRYPTO_UNEXPECTED_MESSAGE \ + OSSL_QUIC_ERR_CRYPTO_ERR(SSL3_AD_UNEXPECTED_MESSAGE) + +# define OSSL_QUIC_ERR_CRYPTO_MISSING_EXT \ + OSSL_QUIC_ERR_CRYPTO_ERR(TLS13_AD_MISSING_EXTENSION) + +# define OSSL_QUIC_ERR_CRYPTO_NO_APP_PROTO \ + OSSL_QUIC_ERR_CRYPTO_ERR(TLS1_AD_NO_APPLICATION_PROTOCOL) const char *ossl_quic_err_to_string(uint64_t error_code); diff --git a/include/openssl/quic.h b/include/openssl/quic.h index 74a6345d5df..853b944316e 100644 --- a/include/openssl/quic.h +++ b/include/openssl/quic.h @@ -24,11 +24,40 @@ extern "C" { * Method used for non-thread-assisted QUIC client operation. */ __owur const SSL_METHOD *OSSL_QUIC_client_method(void); + /* * Method used for thread-assisted QUIC client operation. */ __owur const SSL_METHOD *OSSL_QUIC_client_thread_method(void); +/* + * QUIC transport error codes (RFC 9000 s. 20.1) + */ +# define OSSL_QUIC_ERR_NO_ERROR 0x00 +# define OSSL_QUIC_ERR_INTERNAL_ERROR 0x01 +# define OSSL_QUIC_ERR_CONNECTION_REFUSED 0x02 +# define OSSL_QUIC_ERR_FLOW_CONTROL_ERROR 0x03 +# define OSSL_QUIC_ERR_STREAM_LIMIT_ERROR 0x04 +# define OSSL_QUIC_ERR_STREAM_STATE_ERROR 0x05 +# define OSSL_QUIC_ERR_FINAL_SIZE_ERROR 0x06 +# define OSSL_QUIC_ERR_FRAME_ENCODING_ERROR 0x07 +# define OSSL_QUIC_ERR_TRANSPORT_PARAMETER_ERROR 0x08 +# define OSSL_QUIC_ERR_CONNECTION_ID_LIMIT_ERROR 0x09 +# define OSSL_QUIC_ERR_PROTOCOL_VIOLATION 0x0A +# define OSSL_QUIC_ERR_INVALID_TOKEN 0x0B +# define OSSL_QUIC_ERR_APPLICATION_ERROR 0x0C +# define OSSL_QUIC_ERR_CRYPTO_BUFFER_EXCEEDED 0x0D +# define OSSL_QUIC_ERR_KEY_UPDATE_ERROR 0x0E +# define OSSL_QUIC_ERR_AEAD_LIMIT_REACHED 0x0F +# define OSSL_QUIC_ERR_NO_VIABLE_PATH 0x10 + +/* Inclusive range for handshake-specific errors. */ +# define OSSL_QUIC_ERR_CRYPTO_ERR_BEGIN 0x0100 +# define OSSL_QUIC_ERR_CRYPTO_ERR_END 0x01FF + +# define OSSL_QUIC_ERR_CRYPTO_ERR(X) \ + (OSSL_QUIC_ERR_CRYPTO_ERR_BEGIN + (X)) + # ifdef __cplusplus } # endif