src/event/quic/ngx_event_quic_openssl_compat.h - nginx

Data types defined

Macros defined

Source code


  1. /*
  2. * Copyright (C) Nginx, Inc.
  3. */


  4. #ifndef _NGX_EVENT_QUIC_OPENSSL_COMPAT_H_INCLUDED_
  5. #define _NGX_EVENT_QUIC_OPENSSL_COMPAT_H_INCLUDED_


  6. #include <ngx_config.h>
  7. #include <ngx_core.h>


  8. typedef struct ngx_quic_compat_s  ngx_quic_compat_t;


  9. enum ssl_encryption_level_t {
  10.     ssl_encryption_initial = 0,
  11.     ssl_encryption_early_data,
  12.     ssl_encryption_handshake,
  13.     ssl_encryption_application
  14. };


  15. typedef struct ssl_quic_method_st {
  16.     int (*set_read_secret)(SSL *ssl, enum ssl_encryption_level_t level,
  17.                            const SSL_CIPHER *cipher,
  18.                            const uint8_t *rsecret, size_t secret_len);
  19.     int (*set_write_secret)(SSL *ssl, enum ssl_encryption_level_t level,
  20.                             const SSL_CIPHER *cipher,
  21.                             const uint8_t *wsecret, size_t secret_len);
  22.     int (*add_handshake_data)(SSL *ssl, enum ssl_encryption_level_t level,
  23.                               const uint8_t *data, size_t len);
  24.     int (*flush_flight)(SSL *ssl);
  25.     int (*send_alert)(SSL *ssl, enum ssl_encryption_level_t level,
  26.                       uint8_t alert);
  27. } SSL_QUIC_METHOD;


  28. ngx_int_t ngx_quic_compat_init(ngx_conf_t *cf, SSL_CTX *ctx);

  29. int SSL_set_quic_method(SSL *ssl, const SSL_QUIC_METHOD *quic_method);
  30. int SSL_provide_quic_data(SSL *ssl, enum ssl_encryption_level_t level,
  31.     const uint8_t *data, size_t len);
  32. int SSL_set_quic_transport_params(SSL *ssl, const uint8_t *params,
  33.     size_t params_len);
  34. void SSL_get_peer_quic_transport_params(const SSL *ssl,
  35.     const uint8_t **out_params, size_t *out_params_len);

  36. #endif /* _NGX_EVENT_QUIC_OPENSSL_COMPAT_H_INCLUDED_ */