23                               const uint8_t *read_secret,
 
   24                               const uint8_t *write_secret, 
size_t secret_len);
 
   49                           const uint8_t *data, 
size_t len);
 
   77 int (*
send_alert)(WOLFSSL *ssl, WOLFSSL_ENCRYPTION_LEVEL level, uint8_t alert);
 
  488                                                const uint8_t *key, 
const uint8_t *iv, 
int encrypt);
 
  511                               const uint8_t *plain, 
size_t plainlen,
 
  512                               const uint8_t *iv, 
const uint8_t *aad, 
size_t aadlen);
 
  535                               const uint8_t *enc, 
size_t enclen,
 
  536                               const uint8_t *iv, 
const uint8_t *aad, 
size_t aadlen);
 
  556                               const uint8_t *secret, 
size_t secretlen,
 
  557                               const uint8_t *salt, 
size_t saltlen);
 
  578                              const WOLFSSL_EVP_MD *md,
 
  579                              const uint8_t *secret, 
size_t secretlen,
 
  580                              const uint8_t *info, 
size_t infolen);
 
  603                       const WOLFSSL_EVP_MD *md,
 
  604                       const uint8_t *secret, 
size_t secretlen,
 
  605                       const uint8_t *salt, 
size_t saltlen,
 
  606                       const uint8_t *info, 
size_t infolen);
 
void wolfSSL_get_peer_quic_transport_params(const WOLFSSL *ssl, const uint8_t **out_params, size_t *out_params_len)
Get the negotiated QUIC transport parameters. This will only give meaningful results when called afte...
WOLFSSL_ENCRYPTION_LEVEL wolfSSL_quic_write_level(const WOLFSSL *ssl)
Determine the encryption level for writes currently in use. Meaningful only when the WOLFSSL instance...
WOLFSSL_API int wolfSSL_process_quic_post_handshake(WOLFSSL *ssl)
Process any CRYPTO records that have been provided after the handshake has completed....
int wolfSSL_quic_read_write(WOLFSSL *ssl)
Process any CRYPTO records that have been provided during or after the handshake. Will progress the h...
const WOLFSSL_EVP_CIPHER * wolfSSL_quic_get_hp(WOLFSSL *ssl)
Determine the header protection cipher negotiated in the TLS handshake.
int wolfSSL_quic_aead_is_chacha20(const WOLFSSL_EVP_CIPHER *aead_cipher)
Check if the AEAD cipher is CHACHA20.
int wolfSSL_quic_aead_is_gcm(const WOLFSSL_EVP_CIPHER *aead_cipher)
Check if the AEAD cipher is GCM.
const WOLFSSL_EVP_CIPHER * wolfSSL_quic_get_aead(WOLFSSL *ssl)
Get the AEAD cipher negotiated in the TLS handshake.
void wolfSSL_set_quic_transport_version(WOLFSSL *ssl, int version)
Configure which QUIC version shall be used.
size_t wolfSSL_quic_max_handshake_flight_len(const WOLFSSL *ssl, WOLFSSL_ENCRYPTION_LEVEL level)
Get advice on the amount of data that shall be "in flight", e.g. unacknowledged at the given encrypti...
int wolfSSL_quic_aead_decrypt(uint8_t *dest, WOLFSSL_EVP_CIPHER_CTX *ctx, const uint8_t *enc, size_t enclen, const uint8_t *iv, const uint8_t *aad, size_t aadlen)
Decrypt the cipher text in the given context.
int(* send_alert)(WOLFSSL *ssl, WOLFSSL_ENCRYPTION_LEVEL level, uint8_t alert)
Callback invoked when an SSL alert happened during processing.
Definition: quic.h:77
int wolfSSL_quic_aead_encrypt(uint8_t *dest, WOLFSSL_EVP_CIPHER_CTX *aead_ctx, const uint8_t *plain, size_t plainlen, const uint8_t *iv, const uint8_t *aad, size_t aadlen)
Encrypt the plain text in the given context.
int wolfSSL_quic_aead_is_ccm(const WOLFSSL_EVP_CIPHER *aead_cipher)
Check if the AEAD cipher is CCM.
int wolfSSL_quic_hkdf_extract(uint8_t *dest, const WOLFSSL_EVP_MD *md, const uint8_t *secret, size_t secretlen, const uint8_t *salt, size_t saltlen)
Extract a pseudo random key.
int wolfSSL_set_quic_transport_params(WOLFSSL *ssl, const uint8_t *params, size_t params_len)
Set the QUIC transport parameters to use.
WOLFSSL_API size_t wolfSSL_quic_get_aead_tag_len(const WOLFSSL_EVP_CIPHER *aead_cipher)
Determine the tag length for the AEAD cipher.
void wolfSSL_set_quic_early_data_enabled(WOLFSSL *ssl, int enabled)
Configure if Early Data is enabled. Intended for servers to signal this to clients.
int wolfSSL_quic_hkdf_expand(uint8_t *dest, size_t destlen, const WOLFSSL_EVP_MD *md, const uint8_t *secret, size_t secretlen, const uint8_t *info, size_t infolen)
Expand a pseudo random key into a new key.
int wolfSSL_is_quic(WOLFSSL *ssl)
Check if QUIC has been activated in a WOLFSSL instance.
int wolfSSL_CTX_set_quic_method(WOLFSSL_CTX *ctx, const WOLFSSL_QUIC_METHOD *quic_method)
Activate QUIC protocol for a WOLFSSL_CTX and all derived WOLFSSL instances by providing the four call...
int(* add_handshake_data)(WOLFSSL *ssl, WOLFSSL_ENCRYPTION_LEVEL level, const uint8_t *data, size_t len)
Callback invoked for forwarding handshake CRYPTO data to peer. The data forwarded this way is not enc...
Definition: quic.h:48
int wolfSSL_quic_hkdf(uint8_t *dest, size_t destlen, const WOLFSSL_EVP_MD *md, const uint8_t *secret, size_t secretlen, const uint8_t *salt, size_t saltlen, const uint8_t *info, size_t infolen)
Expand and Extract a pseudo random key.
int wolfSSL_get_quic_transport_version(const WOLFSSL *ssl)
Get the configured QUIC version.
WOLFSSL_ENCRYPTION_LEVEL wolfSSL_quic_read_level(const WOLFSSL *ssl)
Determine the encryption level for reads currently in use. Meaningful only when the WOLFSSL instance ...
void wolfSSL_set_quic_use_legacy_codepoint(WOLFSSL *ssl, int use_legacy)
Configure which QUIC version shall be used. Without calling this, the WOLFSSL will offer both (draft-...
int wolfSSL_get_peer_quic_transport_version(const WOLFSSL *ssl)
Get the negotiated QUIC transport version. This will only give meaningful results when called after t...
WOLFSSL_API const WOLFSSL_EVP_MD * wolfSSL_quic_get_md(WOLFSSL *ssl)
Determine the message digest negotiated in the TLS handshake.
WOLFSSL_EVP_CIPHER_CTX * wolfSSL_quic_crypt_new(const WOLFSSL_EVP_CIPHER *cipher, const uint8_t *key, const uint8_t *iv, int encrypt)
Create a cipher context for en-/decryption.
int(* set_encryption_secrets)(WOLFSSL *ssl, WOLFSSL_ENCRYPTION_LEVEL level, const uint8_t *read_secret, const uint8_t *write_secret, size_t secret_len)
Callback invoked when secrets are generated during a handshake. Since QUIC protocol handlers perform ...
Definition: quic.h:22
int wolfSSL_provide_quic_data(WOLFSSL *ssl, WOLFSSL_ENCRYPTION_LEVEL level, const uint8_t *data, size_t len)
Pass decrypted CRYPTO data to the WOLFSSL instance for further processing. The encryption level betwe...
int(* flush_flight)(WOLFSSL *ssl)
Callback invoked for advisory flushing of the data to send.
Definition: quic.h:62
int wolfSSL_set_quic_method(WOLFSSL *ssl, const WOLFSSL_QUIC_METHOD *quic_method)
Activate QUIC protocol for a WOLFSSL instance by providing the four callbacks required....