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....