コンテンツにスキップ

quic.h

Functions

Name
int wolfSSL_CTX_set_quic_method(WOLFSSL_CTX * ctx, const WOLFSSL_QUIC_METHOD * quic_method)
WOLFSSL_CTX および派生したすべての WOLFSSL インスタンスに対して QUIC プロトコルを有効にします 必要な 4 つのコールバックを提供します。 CTX は TLSv1.3 である必要があります。
int wolfSSL_set_quic_method(WOLFSSL * ssl, const WOLFSSL_QUIC_METHOD * quic_method)
を提供して、WOLFSSL インスタンスの QUIC プロトコルを有効にします。 4 つのコールバックが必要です。 WOLFSSL は TLSv1.3 である必要があります。
int wolfSSL_is_quic(WOLFSSL * ssl)
QUIC が WOLFSSL インスタンスでアクティブ化されているかどうかを確認します。
WOLFSSL_ENCRYPTION_LEVEL wolfSSL_quic_read_level(const WOLFSSL * ssl)
現在使用中の読み取りの暗号化レベルを決定します。 場合にのみ意味があります。 WOLFSSL インスタンスは QUIC を使用しています。
WOLFSSL_ENCRYPTION_LEVEL wolfSSL_quic_write_level(const WOLFSSL * ssl)
現在使用中の書き込みの暗号化レベルを決定します。 場合にのみ意味があります。 WOLFSSL インスタンスは QUIC を使用しています。
void wolfSSL_set_quic_use_legacy_codepoint(WOLFSSL * ssl, int use_legacy)
どの QUIC バージョンを使用するかを設定します。 これを呼ばずに、 WOLFSSL は両方 (draft_27 と v1) をサーバーに提供します。 受け入れる クライアントからの両方と、最新のものをネゴシエートします。
void wolfSSL_set_quic_transport_version(WOLFSSL * ssl, int バージョン)
どの QUIC バージョンを使用するかを設定します。
int wolfSSL_get_quic_transport_version(const WOLFSSL * ssl)
構成された QUIC バージョンを取得します。
int wolfSSL_set_quic_transport_params(WOLFSSL * ssl, const uint8_t * params, size_t params_len)
使用する QUIC トランスポート パラメータを設定します。
int wolfSSL_get_peer_quic_transport_version(const WOLFSSL * ssl)
ネゴシエートされた QUIC トランスポート バージョンを取得します。 これは与えるだけです それぞれの TLS 拡張機能が有効になった後に呼び出されると、意味のある結果が得られます。 ピアから見られました。
void wolfSSL_get_peer_quic_transport_params(const WOLFSSL * ssl, const uint8_t ** out_params, size_t * out_params_len)
ネゴシエートされた QUIC トランスポート パラメータを取得します。 これは与えるだけです それぞれの TLS 拡張機能が有効になった後に呼び出されると、意味のある結果が得られます。 ピアから見られました。
void wolfSSL_set_quic_early_data_enabled(WOLFSSL * ssl, int enabled)
初期データを有効にするかどうかを構成します。 サーバーがシグナルを送ることを目的としています これをクライアントに。
size_t wolfSSL_quic_max_handshake_flight_len(const WOLFSSL * ssl, WOLFSSL_ENCRYPTION_LEVEL レベル)
「飛行中」のデータ量についてアドバイスを得る。 未承認 指定された暗号化レベルで。 これはWOLFSSLインスタンスのデータ量です バッファする準備ができています。
int wolfSSL_provide_quic_data(WOLFSSL * ssl, WOLFSSL_ENCRYPTION_LEVEL レベル, const uint8_t * data, size_t len)
復号化された CRYPTO データを、さらに処理するために WOLFSSL インスタンスに渡します。 通話間の暗号化レベルは、すべて増加することが許可されており、 また、暗号化の変更前にデータレコードが完全であることを確認しました レベルが受け入れられます。
WOLFSSL_API int wolfSSL_process_quic_post_handshake(WOLFSSL * ssl)
ハンドシェイク後に提供されたすべての CRYPTO レコードを処理します 完了しました。 それより前に呼び出すと失敗します。
int wolfSSL_quic_read_write(WOLFSSL * ssl)
ハンドシェイク中またはハンドシェイク後に提供されたすべての CRYPTO レコードを処理します。 ハンドシェイクがまだ完了していない場合は進行し、そうでない場合は次のように機能します wolfSSL_process_quic_post_handshake()
const WOLFSSL_EVP_CIPHER * wolfSSL_quic_get_aad(WOLFSSL * ssl)
TLS ハンドシェイクでネゴシエートされた AEAD 暗号を取得します。
int wolfSSL_quic_aead_is_gcm(const WOLFSSL_EVP_CIPHER * aead_cipher)
AEAD 暗号が GCM かどうかを確認します。
int wolfSSL_quic_aead_is_ccm(const WOLFSSL_EVP_CIPHER * aead_cipher)
AEAD 暗号が CCM かどうかを確認します。
int wolfSSL_quic_aead_is_chacha20(const WOLFSSL_EVP_CIPHER * aead_cipher)
AEAD 暗号が CHACHA20 かどうかを確認します。
WOLFSSL_API size_t wolfSSL_quic_get_aead_tag_len(const WOLFSSL_EVP_CIPHER * aead_cipher)
AEAD 暗号のタグの長さを決定します。
WOLFSSL_API const WOLFSSL_EVP_MD * wolfSSL_quic_get_md(WOLFSSL * ssl)
TLS ハンドシェイクでネゴシエートされたメッセージ ダイジェストを決定します。
const WOLFSSL_EVP_CIPHER * wolfSSL_quic_get_hp(WOLFSSL * ssl)
TLS ハンドシェイクでネゴシエートされたヘッダー保護暗号を決定します。
WOLFSSL_EVP_CIPHER_CTX * wolfSSL_quic_crypt_new(const WOLFSSL_EVP_CIPHER * cipher, const uint8_t * key, const uint8_t * iv, int encrypt)
暗号化/復号化のための暗号コンテキストを作成します。
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)
指定されたコンテキストでプレーン テキストを暗号化します。
int wolfSSL_quic_aad_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)
指定されたコンテキストで暗号文を復号化します。
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)
擬似乱数キーを抽出します。
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)
疑似ランダム キーを新しいキーに展開します。
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)
疑似乱数キーを展開して抽出します。

Attributes

Name
int()(WOLFSSL ssl, WOLFSSL_ENCRYPTION_LEVEL レベル, const uint8_t read_secret, const uint8_t write_secret, size_t secret_len) set_encryption_secrets
ハンドシェイク中にシークレットが生成されたときに呼び出されるコールバック。 QUIC プロトコル ハンドラはパケットの暗号化/復号化を実行するため、 レベル Early_data/handshake/application のネゴシエートされたシークレットが必要です。
int()(WOLFSSL ssl, WOLFSSL_ENCRYPTION_LEVEL レベル, const uint8_t *data, size_t len) add_handshake_data
ハンドシェイク CRYPTO データをピアに転送するために呼び出されるコールバック。 この方法で転送されるデータは暗号化されません。 QUICの仕事です これを行うためのプロトコル実装。 どのシークレットを使用するか 指定された暗号化レベルによって決まります。
int()(WOLFSSL ssl) flush_flight
送信するデータのアドバイザリ フラッシュのために呼び出されるコールバック。
int()(WOLFSSL ssl, WOLFSSL_ENCRYPTION_LEVEL レベル, uint8_t アラート) send_alert
処理中に SSL アラートが発生したときに呼び出されるコールバック。

Functions Documentation

function wolfSSL_CTX_set_quic_method

int wolfSSL_CTX_set_quic_method(
    WOLFSSL_CTX * ctx,
    const WOLFSSL_QUIC_METHOD * quic_method
)

WOLFSSL_CTX および派生したすべての WOLFSSL インスタンスに対して QUIC プロトコルを有効にします 必要な 4 つのコールバックを提供します。 CTX は TLSv1.3 である必要があります。

Parameters:

  • ctx - wolfSSL_CTX_new() を使用して作成された WOLFSSL_CTX 構造体へのポインター。
  • quic_method - コールバック構造

See:

Return: WOLFSSL_SUCCESS 成功した場合。

渡された quic_method には、SSL インスタンスよりも長い寿命が必要です。 コピーされません。 すべてのコールバックを提供する必要があります。

function wolfSSL_set_quic_method

int wolfSSL_set_quic_method(
    WOLFSSL * ssl,
    const WOLFSSL_QUIC_METHOD * quic_method
)

を提供して、WOLFSSL インスタンスの QUIC プロトコルを有効にします。 4 つのコールバックが必要です。 WOLFSSL は TLSv1.3 である必要があります。

Parameters:

  • ssl - wolfSSL_new() を使用して作成された WOLFSSL 構造体へのポインタ。
  • quic_method - コールバック構造

See:

Return: WOLFSSL_SUCCESS 成功した場合。

渡された quic_method には、SSL インスタンスよりも長い寿命が必要です。 コピーされません。 すべてのコールバックを提供する必要があります。

function wolfSSL_is_quic

int wolfSSL_is_quic(
    WOLFSSL * ssl
)

QUIC が WOLFSSL インスタンスでアクティブ化されているかどうかを確認します。

Parameters:

  • ssl - wolfSSL_new() を使用して作成された WOLFSSL 構造体へのポインタ。

See:

Return: WOLFSSL が QUIC を使用している場合は 1 を返します。

function wolfSSL_quic_read_level

WOLFSSL_ENCRYPTION_LEVEL wolfSSL_quic_read_level(
    const WOLFSSL * ssl
)

現在使用中の読み取りの暗号化レベルを決定します。 場合にのみ意味があります。 WOLFSSL インスタンスは QUIC を使用しています。

Parameters:

  • ssl - wolfSSL_new() を使用して作成された WOLFSSL 構造体へのポインタ。

See: wolfSSL_quic_write_level

Return: 暗号化レベル。

有効レベルは、データを返すときは常にパラメーターであることに注意してください。 前方へ。 ピアからのデータは、これを介して報告される以外のレベルで到着する可能性があります 関数。

function wolfSSL_quic_write_level

WOLFSSL_ENCRYPTION_LEVEL wolfSSL_quic_write_level(
    const WOLFSSL * ssl
)

現在使用中の書き込みの暗号化レベルを決定します。 場合にのみ意味があります。 WOLFSSL インスタンスは QUIC を使用しています。

Parameters:

  • ssl - wolfSSL_new() を使用して作成された WOLFSSL 構造体へのポインタ。

See: wolfSSL_quic_read_level

Return: 暗号化レベル。

有効レベルは、データを返すときは常にパラメーターであることに注意してください。 前方へ。 ピアからのデータは、これを介して報告される以外のレベルで到着する可能性があります 関数。

function wolfSSL_set_quic_use_legacy_codepoint

void wolfSSL_set_quic_use_legacy_codepoint(
    WOLFSSL * ssl,
    int use_legacy
)

どの QUIC バージョンを使用するかを設定します。 これを呼ばずに、 WOLFSSL は両方 (draft-27 と v1) をサーバーに提供します。 受け入れる クライアントからの両方と、最新のものをネゴシエートします。

Parameters:

  • ssl - wolfSSL_new() を使用して作成された WOLFSSL 構造体へのポインタ。
  • use_legacy - ドラフト 27 を使用する場合は true、QUICv1 のみを使用する場合は 0。

See: wolfSSL_set_quic_transport_version

Return: WOLFSSL_SUCCESS 成功した場合。

function wolfSSL_set_quic_transport_version

void wolfSSL_set_quic_transport_version(
    WOLFSSL * ssl,
    int バージョン
)

どの QUIC バージョンを使用するかを設定します。

Parameters:

  • ssl - wolfSSL_new() を使用して作成された WOLFSSL 構造体へのポインタ。
  • version - QUIC バージョン用に定義された TLS 拡張。

See: wolfSSL_set_quic_use_legacy_codepoint

Return: WOLFSSL_SUCCESS 成功した場合。

function wolfSSL_get_quic_transport_version

int wolfSSL_get_quic_transport_version(
    const WOLFSSL * ssl
)

構成された QUIC バージョンを取得します。

Parameters:

  • ssl - wolfSSL_new() を使用して作成された WOLFSSL 構造体へのポインタ。

See:

Return: 構成されたバージョンの TLS 拡張。

function wolfSSL_set_quic_transport_params

int wolfSSL_set_quic_transport_params(
    WOLFSSL * ssl,
    const uint8_t * params,
    size_t params_len
)

使用する QUIC トランスポート パラメータを設定します。

Parameters:

  • ssl - wolfSSL_new() を使用して作成された WOLFSSL 構造体へのポインタ。
  • params - 使用するパラメータ バイト ·param params_len - パラメータの長さ

See:

Return: WOLFSSL_SUCCESS 成功した場合。

function wolfSSL_get_peer_quic_transport_version

int wolfSSL_get_peer_quic_transport_version(
    const WOLFSSL * ssl
)

ネゴシエートされた QUIC トランスポート バージョンを取得します。 これは与えるだけです それぞれの TLS 拡張機能が有効になった後に呼び出されると、意味のある結果が得られます。 ピアから見られました。

Parameters:

  • ssl - wolfSSL_new() を使用して作成された WOLFSSL 構造体へのポインタ。

See:

Return: ネゴシエートされたバージョンまたは -1 を返します。

function wolfSSL_get_peer_quic_transport_params

void wolfSSL_get_peer_quic_transport_params(
    const WOLFSSL * ssl,
    const uint8_t ** out_params,
    size_t * out_params_len
)

ネゴシエートされた QUIC トランスポート パラメータを取得します。 これは与えるだけです それぞれの TLS 拡張機能が有効になった後に呼び出されると、意味のある結果が得られます。 ピアから見られました。

Parameters:

  • ssl - wolfSSL_new() を使用して作成された WOLFSSL 構造体へのポインタ。
  • out_params - ピアに送信されるパラメーター。利用できない場合は NULL に設定されます。
  • out_params_len - ピアに送信されるパラメータの長さ。利用できない場合は 0 に設定

See: wolfSSL_get_peer_quic_transport_version

function wolfSSL_set_quic_early_data_enabled

void wolfSSL_set_quic_early_data_enabled(
    WOLFSSL * ssl,
    int enabled
)

初期データを有効にするかどうかを構成します。 サーバーがシグナルを送ることを目的としています これをクライアントに。

Parameters:

  • ssl - wolfSSL_new() を使用して作成された WOLFSSL 構造体へのポインタ。
  • enabled - != 初期データが有効な場合は 0

function wolfSSL_quic_max_handshake_flight_len

size_t wolfSSL_quic_max_handshake_flight_len(
    const WOLFSSL * ssl,
    WOLFSSL_ENCRYPTION_LEVEL レベル
)

「飛行中」のデータ量についてアドバイスを得る。 未承認 指定された暗号化レベルで。 これはWOLFSSLインスタンスのデータ量です バッファする準備ができています。

Parameters:

  • ssl - wolfSSL_new() を使用して作成された WOLFSSL 構造体へのポインタ。
  • level - 問い合わせる暗号化レベル

Return: 飛行中の推奨最大データを返す

function wolfSSL_provide_quic_data

int wolfSSL_provide_quic_data(
    WOLFSSL * ssl,
    WOLFSSL_ENCRYPTION_LEVEL レベル,
    const uint8_t * data,
    size_t len
)

復号化された CRYPTO データを、さらに処理するために WOLFSSL インスタンスに渡します。 通話間の暗号化レベルは、すべて増加することが許可されており、 また、暗号化の変更前にデータレコードが完全であることを確認しました レベルが受け入れられます。

Parameters:

  • ssl - wolfSSL_new() を使用して作成された WOLFSSL 構造体へのポインタ。
  • level - データが暗号化されたレベル
  • data - データ自体
  • len - データの長さ

See: wolfSSL_process_quic_post_handshake

Return: WOLFSSL_SUCCESS 成功した場合。

function wolfSSL_process_quic_post_handshake

WOLFSSL_API int wolfSSL_process_quic_post_handshake(
    WOLFSSL * ssl
)

ハンドシェイク後に提供されたすべての CRYPTO レコードを処理します 完了しました。 それより前に呼び出すと失敗します。

Parameters:

  • ssl - wolfSSL_new() を使用して作成された WOLFSSL 構造体へのポインタ。

See:

Return: WOLFSSL_SUCCESS 成功した場合。

function wolfSSL_quic_read_write

int wolfSSL_quic_read_write(
    WOLFSSL * ssl
)

ハンドシェイク中またはハンドシェイク後に提供されたすべての CRYPTO レコードを処理します。 ハンドシェイクがまだ完了していない場合は進行し、そうでない場合は次のように機能します wolfSSL_process_quic_post_handshake()

Parameters:

  • ssl - wolfSSL_new() を使用して作成された WOLFSSL 構造体へのポインタ。

See:

Return: WOLFSSL_SUCCESS 成功した場合。

function wolfSSL_quic_get_aad

const WOLFSSL_EVP_CIPHER * wolfSSL_quic_get_aad(
    WOLFSSL * ssl
)

TLS ハンドシェイクでネゴシエートされた AEAD 暗号を取得します。

Parameters:

  • ssl - wolfSSL_new() を使用して作成された WOLFSSL 構造体へのポインタ。

See:

Return: ネゴシエートされた暗号、または決定されない場合は NULL を返します。

function wolfSSL_quic_aead_is_gcm

int wolfSSL_quic_aead_is_gcm(
    const WOLFSSL_EVP_CIPHER * aead_cipher
)

AEAD 暗号が GCM かどうかを確認します。

Parameters:

  • cipher - 暗号

See:

Return: != 0 (AEAD 暗号が GCM の場合)。

function wolfSSL_quic_aead_is_ccm

int wolfSSL_quic_aead_is_ccm(
    const WOLFSSL_EVP_CIPHER * aead_cipher
)

AEAD 暗号が CCM かどうかを確認します。

Parameters:

  • cipher - 暗号

See:

Return: != 0 AEAD 暗号が CCM の場合。

function wolfSSL_quic_aead_is_chacha20

int wolfSSL_quic_aead_is_chacha20(
    const WOLFSSL_EVP_CIPHER * aead_cipher
)

AEAD 暗号が CHACHA20 かどうかを確認します。

Parameters:

  • cipher - 暗号

See:

Return: != 0 は、AEAD 暗号が CHACHA20 の場合です。

function wolfSSL_quic_get_aead_tag_len

WOLFSSL_API size_t wolfSSL_quic_get_aead_tag_len(
    const WOLFSSL_EVP_CIPHER * aead_cipher
)

AEAD 暗号のタグの長さを決定します。

Parameters:

  • cipher - 暗号

See: wolfSSL_quic_get_aad

Return: AEAD 暗号のタグ長。

function wolfSSL_quic_get_md

WOLFSSL_API const WOLFSSL_EVP_MD * wolfSSL_quic_get_md(
    WOLFSSL * ssl
)

TLS ハンドシェイクでネゴシエートされたメッセージ ダイジェストを決定します。

Parameters:

  • ssl - wolfSSL_new() を使用して作成された WOLFSSL 構造体へのポインタ。

See:

Return: TLS ハンドシェイクでネゴシエートされたメッセージ ダイジェストを返す

function wolfSSL_quic_get_hp

const WOLFSSL_EVP_CIPHER * wolfSSL_quic_get_hp(
    WOLFSSL * ssl
)

TLS ハンドシェイクでネゴシエートされたヘッダー保護暗号を決定します。

Parameters:

  • ssl - wolfSSL_new() を使用して作成された WOLFSSL 構造体へのポインタ。

See:

Return: TLS ハンドシェイクでネゴシエートされたヘッダー保護暗号を返します

function wolfSSL_quic_crypt_new

WOLFSSL_EVP_CIPHER_CTX * wolfSSL_quic_crypt_new(
    const WOLFSSL_EVP_CIPHER * cipher,
    const uint8_t * key,
    const uint8_t * iv,
    int encrypt
)

暗号化/復号化のための暗号コンテキストを作成します。

Parameters:

  • cipher - コンテキストで使用する暗号。
  • key - コンテキストで使用するキー。
  • iv - コンテキストで使用する iv。
  • encrypt - 暗号化の場合は != 0、それ以外の場合は復号化

See:

Return: エラーの場合は、作成されたコンテキストまたは NULL を返します。

function wolfSSL_quic_aead_encrypt

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
)

指定されたコンテキストでプレーン テキストを暗号化します。

Parameters:

  • dest - 暗号化されたデータの書き込み先
  • aead_ctx - 使用する暗号コンテキスト
  • plain - 暗号化するプレーン データ
  • plainlen - プレーン データの長さ
  • iv - 使用する iv
  • aad - 使用する追加
  • aadlen - aad の長さ

See:

Return: WOLFSSL_SUCCESS 成功した場合。

function wolfSSL_quic_aad_decrypt

int wolfSSL_quic_aad_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
)

指定されたコンテキストで暗号文を復号化します。

Parameters:

  • dest - プレーンテキストの書き込み先
  • ctx - 使用する暗号コンテキスト
  • enc - 復号化する暗号化データ
  • envlen - 暗号化されたデータの長さ
  • iv - 使用する iv
  • aad - 使用する追加
  • aadlen - aad の長さ

See:

Return: WOLFSSL_SUCCESS 成功した場合。

function wolfSSL_quic_hkdf_extract

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
)

擬似乱数キーを抽出します。

Parameters:

  • dest - キーの書き込み先
  • md - 使用するメッセージ ダイジェスト
  • secret - 使用するシークレット
  • secretlen - シークレットの長さ
  • salt - 使用するソルト
  • saltlen - ソルトの長さ

See:

Return: WOLFSSL_SUCCESS 成功した場合。

function wolfSSL_quic_hkdf_expand

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
)

疑似ランダム キーを新しいキーに展開します。

Parameters:

  • dest - キーの書き込み先
  • destlen - 展開するキーの長さ
  • md - 使用するメッセージ ダイジェスト
  • secret - 使用するシークレット
  • secretlen - シークレットの長さ
  • info - 使用する情報
  • infolen - 情報の長さ

See:

Return: WOLFSSL_SUCCESS 成功した場合。

function wolfSSL_quic_hkdf

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
)

疑似乱数キーを展開して抽出します。

Parameters:

  • dest - キーの書き込み先
  • destlen - キーの長さ
  • md - 使用するメッセージ ダイジェスト
  • secret - 使用するシークレット
  • secretlen - シークレットの長さ
  • salt - 使用するソルト
  • saltlen - ソルトの長さ
  • info - 使用する情報
  • infolen - 情報の長さ

See:

Return: WOLFSSL_SUCCESS 成功した場合。

Attributes Documentation

variable set_encryption_secrets

int(*)(WOLFSSL *ssl, WOLFSSL_ENCRYPTION_LEVEL レベル, const uint8_t *read_secret, const uint8_t *write_secret, size_t secret_len) set_encryption_secrets;

ハンドシェイク中にシークレットが生成されたときに呼び出されるコールバック。 QUIC プロトコル ハンドラはパケットの暗号化/復号化を実行するため、 レベル Early_data/handshake/application のネゴシエートされたシークレットが必要です。

Parameters:

  • ssl - wolfSSL_new() を使用して作成された WOLFSSL 構造体へのポインタ。
  • level - シークレットの暗号化レベル
  • read_secret - 特定のレベルで復号化に使用されるシークレット。NULL の場合があります。
  • write_secret - 特定のレベルで暗号化に使用されるシークレット。NULL の場合があります。
  • secret_len - シークレットの長さ

See: wolfSSL_set_quic_method

Return: 成功すると 1 を返し、失敗すると 0 を返します。

コールバックは、ハンドシェイク中に数回呼び出されます。 両方のどちらか または、読み取りシークレットまたは書き込みシークレットのみが提供される場合があります。 これは、 指定された暗号化レベルはすでに有効になっています。

variable add_handshake_data

int(*)(WOLFSSL *ssl, WOLFSSL_ENCRYPTION_LEVEL レベル, const uint8_t *data, size_t len) add_handshake_data;

ハンドシェイク CRYPTO データをピアに転送するために呼び出されるコールバック。 この方法で転送されるデータは暗号化されません。 QUICの仕事です これを行うためのプロトコル実装。 どのシークレットを使用するか 指定された暗号化レベルによって決まります。

Parameters:

  • ssl - wolfSSL_new() を使用して作成された WOLFSSL 構造体へのポインタ。
  • level - データの暗号化に使用する暗号化レベル
  • data - データ自体
  • len - データの長さ

See: wolfSSL_set_quic_method

Return: 成功すると 1 を返し、失敗すると 0 を返します。

このコールバックは、ハンドシェイク中またはポスト ハンドシェイク中に数回呼び出される場合があります。 処理。 データは完全な CRYPTO レコードをカバーする場合がありますが、 部分的であること。 ただし、コールバックは以前にすべてのレコード データを受信しています。 別の暗号化レベルを使用しています。

variable flush_flight

int(*)(WOLFSSL *ssl) flush_flight;

送信するデータのアドバイザリ フラッシュのために呼び出されるコールバック。

Parameters:

  • ssl - wolfSSL_new() を使用して作成された WOLFSSL 構造体へのポインタ。

See: wolfSSL_set_quic_method

Return: 成功すると 1 を返し、失敗すると 0 を返します。

variable send_alert

int(*)(WOLFSSL *ssl, WOLFSSL_ENCRYPTION_LEVEL レベル, uint8_t アラート) send_alert;

処理中に SSL アラートが発生したときに呼び出されるコールバック。

Parameters:

  • ssl - wolfSSL_new() を使用して作成された WOLFSSL 構造体へのポインタ。
  • level - アラートが発生したときに有効だった暗号化レベル
  • alert - エラー

See: wolfSSL_set_quic_method

Return: 成功すると 1 を返し、失敗すると 0 を返します。

Source code


int (*set_encryption_secrets)(WOLFSSL *ssl, WOLFSSL_ENCRYPTION_LEVEL レベル,
                               const uint8_t *read_secret,
                               const uint8_t *write_secret, size_t secret_len);

int (*add_handshake_data)(WOLFSSL *ssl, WOLFSSL_ENCRYPTION_LEVEL レベル,
                           const uint8_t *data, size_t len);

int (*flush_flight)(WOLFSSL *ssl);

int (*send_alert)(WOLFSSL *ssl, WOLFSSL_ENCRYPTION_LEVEL レベル, uint8_t アラート);

int wolfSSL_CTX_set_quic_method(WOLFSSL_CTX *ctx, const WOLFSSL_QUIC_METHOD *quic_method);

int wolfSSL_set_quic_method(WOLFSSL *ssl, const WOLFSSL_QUIC_METHOD *quic_method);

int wolfSSL_is_quic(WOLFSSL *ssl);

WOLFSSL_ENCRYPTION_LEVEL wolfSSL_quic_read_level(const WOLFSSL *ssl);

WOLFSSL_ENCRYPTION_LEVEL wolfSSL_quic_write_level(const WOLFSSL *ssl);


void wolfSSL_set_quic_use_legacy_codepoint(WOLFSSL *ssl, int use_legacy);

void wolfSSL_set_quic_transport_version(WOLFSSL *ssl, int バージョン);

int wolfSSL_get_quic_transport_version(const WOLFSSL *ssl);

int wolfSSL_set_quic_transport_params(WOLFSSL *ssl, const uint8_t *params, size_t params_len);

int wolfSSL_get_peer_quic_transport_version(const WOLFSSL *ssl);

void wolfSSL_get_peer_quic_transport_params(const WOLFSSL *ssl, const uint8_t **out_params, size_t *out_params_len);


void wolfSSL_set_quic_early_data_enabled(WOLFSSL *ssl, int enabled);

size_t wolfSSL_quic_max_handshake_flight_len(const WOLFSSL *ssl, WOLFSSL_ENCRYPTION_LEVEL レベル);


int wolfSSL_provide_quic_data(WOLFSSL *ssl, WOLFSSL_ENCRYPTION_LEVEL レベル, const uint8_t *data, size_t len);

WOLFSSL_API int wolfSSL_process_quic_post_handshake(WOLFSSL *ssl);

int wolfSSL_quic_read_write(WOLFSSL *ssl);

const WOLFSSL_EVP_CIPHER *wolfSSL_quic_get_aad(WOLFSSL *ssl);

int wolfSSL_quic_aead_is_gcm(const WOLFSSL_EVP_CIPHER *aead_cipher);

int wolfSSL_quic_aead_is_ccm(const WOLFSSL_EVP_CIPHER *aead_cipher);

int wolfSSL_quic_aead_is_chacha20(const WOLFSSL_EVP_CIPHER *aead_cipher);

WOLFSSL_API size_t wolfSSL_quic_get_aead_tag_len(const WOLFSSL_EVP_CIPHER *aead_cipher);

WOLFSSL_API const WOLFSSL_EVP_MD *wolfSSL_quic_get_md(WOLFSSL *ssl);

const WOLFSSL_EVP_CIPHER *wolfSSL_quic_get_hp(WOLFSSL *ssl);

WOLFSSL_EVP_CIPHER_CTX *wolfSSL_quic_crypt_new(const WOLFSSL_EVP_CIPHER *cipher,
                                                const uint8_t *key, const uint8_t *iv, int encrypt);

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);

int wolfSSL_quic_aad_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);

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);

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);

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);

Updated on 2024-04-26 at 02:56:56 +0000