My Project
Loading...
Searching...
No Matches
quic.h
Go to the documentation of this file.
1
22int (*set_encryption_secrets)(WOLFSSL *ssl, WOLFSSL_ENCRYPTION_LEVEL level,
23 const uint8_t *read_secret,
24 const uint8_t *write_secret, size_t secret_len);
25
48int (*add_handshake_data)(WOLFSSL *ssl, WOLFSSL_ENCRYPTION_LEVEL level,
49 const uint8_t *data, size_t len);
50
62int (*flush_flight)(WOLFSSL *ssl);
63
77int (*send_alert)(WOLFSSL *ssl, WOLFSSL_ENCRYPTION_LEVEL level, uint8_t alert);
78
96int wolfSSL_CTX_set_quic_method(WOLFSSL_CTX *ctx, const WOLFSSL_QUIC_METHOD *quic_method);
97
115int wolfSSL_set_quic_method(WOLFSSL *ssl, const WOLFSSL_QUIC_METHOD *quic_method);
116
129int wolfSSL_is_quic(WOLFSSL *ssl);
130
147WOLFSSL_ENCRYPTION_LEVEL wolfSSL_quic_read_level(const WOLFSSL *ssl);
148
165WOLFSSL_ENCRYPTION_LEVEL wolfSSL_quic_write_level(const WOLFSSL *ssl);
166
167
182void wolfSSL_set_quic_use_legacy_codepoint(WOLFSSL *ssl, int use_legacy);
183
196void wolfSSL_set_quic_transport_version(WOLFSSL *ssl, int version);
197
211
226int wolfSSL_set_quic_transport_params(WOLFSSL *ssl, const uint8_t *params, size_t params_len);
227
243
257void wolfSSL_get_peer_quic_transport_params(const WOLFSSL *ssl, const uint8_t **out_params, size_t *out_params_len);
258
259
270void wolfSSL_set_quic_early_data_enabled(WOLFSSL *ssl, int enabled);
271
285size_t wolfSSL_quic_max_handshake_flight_len(const WOLFSSL *ssl, WOLFSSL_ENCRYPTION_LEVEL level);
286
287
308int wolfSSL_provide_quic_data(WOLFSSL *ssl, WOLFSSL_ENCRYPTION_LEVEL level, const uint8_t *data, size_t len);
309
325WOLFSSL_API int wolfSSL_process_quic_post_handshake(WOLFSSL *ssl);
326
343int wolfSSL_quic_read_write(WOLFSSL *ssl);
344
364const WOLFSSL_EVP_CIPHER *wolfSSL_quic_get_aead(WOLFSSL *ssl);
365
385int wolfSSL_quic_aead_is_gcm(const WOLFSSL_EVP_CIPHER *aead_cipher);
386
406int wolfSSL_quic_aead_is_ccm(const WOLFSSL_EVP_CIPHER *aead_cipher);
407
427int wolfSSL_quic_aead_is_chacha20(const WOLFSSL_EVP_CIPHER *aead_cipher);
428
440WOLFSSL_API size_t wolfSSL_quic_get_aead_tag_len(const WOLFSSL_EVP_CIPHER *aead_cipher);
441
454WOLFSSL_API const WOLFSSL_EVP_MD *wolfSSL_quic_get_md(WOLFSSL *ssl);
455
468const WOLFSSL_EVP_CIPHER *wolfSSL_quic_get_hp(WOLFSSL *ssl);
469
487WOLFSSL_EVP_CIPHER_CTX *wolfSSL_quic_crypt_new(const WOLFSSL_EVP_CIPHER *cipher,
488 const uint8_t *key, const uint8_t *iv, int encrypt);
489
510int wolfSSL_quic_aead_encrypt(uint8_t *dest, WOLFSSL_EVP_CIPHER_CTX *aead_ctx,
511 const uint8_t *plain, size_t plainlen,
512 const uint8_t *iv, const uint8_t *aad, size_t aadlen);
513
534int wolfSSL_quic_aead_decrypt(uint8_t *dest, WOLFSSL_EVP_CIPHER_CTX *ctx,
535 const uint8_t *enc, size_t enclen,
536 const uint8_t *iv, const uint8_t *aad, size_t aadlen);
537
555int wolfSSL_quic_hkdf_extract(uint8_t *dest, const WOLFSSL_EVP_MD *md,
556 const uint8_t *secret, size_t secretlen,
557 const uint8_t *salt, size_t saltlen);
558
577int wolfSSL_quic_hkdf_expand(uint8_t *dest, size_t destlen,
578 const WOLFSSL_EVP_MD *md,
579 const uint8_t *secret, size_t secretlen,
580 const uint8_t *info, size_t infolen);
581
602int wolfSSL_quic_hkdf(uint8_t *dest, size_t destlen,
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);
const WOLFSSL_EVP_CIPHER * wolfSSL_quic_get_hp(WOLFSSL *ssl)
Determine the header protection cipher negotiated in the TLS handshake.
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...
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.
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...
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 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.
WOLFSSL_API const WOLFSSL_EVP_MD * wolfSSL_quic_get_md(WOLFSSL *ssl)
Determine the message digest negotiated in the TLS handshake.
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...
const WOLFSSL_EVP_CIPHER * wolfSSL_quic_get_aead(WOLFSSL *ssl)
Get the AEAD cipher negotiated in the TLS handshake.
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....