コンテンツにスキップ

wolfSSL Context and Session Set Up

Functions

Name
WOLFSSL_METHOD * wolfSSLv23_method(void )
この関数は、wolfSSLv23_client_methodと同様にWOLFSSL_METHODを返します(サーバー/クライアント)。
WOLFSSL_METHOD * wolfSSLv3_server_method(void )
wolfSSLv3_server_method()関数は、アプリケーションがサーバーであることを示すために使用され、SSL3.0プロトコルのみをサポートします。 この関数は、wolfSSL_CTX_new()を使用してSSL/TLSコンテキストを作成するときに使用される新しいWOLFSSL_METHOD構造体のメモリを割り当てて初期化します。
WOLFSSL_METHOD * wolfSSLv3_client_method(void )
wolfSSLv3_client_method()関数は、アプリケーションがクライアントであり、SSL 3.0プロトコルのみをサポートすることを示すために使用されます。 この関数は、wolfSSL_CTX_new()を使用してSSL/TLSコンテキストを作成するときに使用される新しいWOLFSSL_METHOD構造体のメモリを割り当てて初期化します。
WOLFSSL_METHOD * wolfTLSv1_server_method(void )
wolfTLSv1_server_method()関数は、アプリケーションがサーバーであることを示すために使用され、TLS 1.0プロトコルのみをサポートします。 この関数は、wolfSSL_ctx_new()を使用してSSL/TLSコンテキストを作成するときに使用される新しいWOLFSSL_METHOD構造体のメモリを割り当てて初期化します。
WOLFSSL_METHOD * wolfTLSv1_client_method(void )
wolftlsv1_client_method()関数は、アプリケーションがクライアントであり、TLS 1.0プロトコルのみをサポートすることを示すために使用されます。 この関数は、wolfSSL_ctx_new()を使用してSSL/TLSコンテキストを作成するときに使用される新しいWOLFSSL_METHOD構造体のメモリを割り当てて初期化します。
WOLFSSL_METHOD * wolfTLSv1_1_server_method(void )
wolfTLSv1_1_server_method()関数は、アプリケーションがサーバーであることを示すために使用され、TLS 1.1プロトコルのみをサポートします。 この関数は、wolfSSL_ctx_new()を使用してSSL/TLSコンテキストを作成するときに使用される新しいWOLFSSL_METHOD構造体のメモリを割り当てて初期化します。
WOLFSSL_METHOD * wolfTLSv1_1_client_method(void )
wolfTLSv1_1_client_method()関数は、アプリケーションがクライアントであり、TLS 1.0プロトコルのみをサポートすることを示すために使用されます。 この関数は、wolfSSL_ctx_new()を使用してSSL/TLSコンテキストを作成するときに使用される新しいWOLFSSL_METHOD構造体のメモリを割り当てて初期化します。
WOLFSSL_METHOD * wolfTLSv1_2_server_method(void )
wolfTLSv1_2_server_method()関数は、アプリケーションがサーバーであることを示すために使用され、TLS 1.2プロトコルのみをサポートします。 この関数は、wolfSSL_ctx_new()を使用してSSL/TLSコンテキストを作成するときに使用される新しいWOLFSSL_METHOD構造体のメモリを割り当てて初期化します。
WOLFSSL_METHOD * wolfTLSv1_2_client_method(void )
wolfTLSv1_2_client_method()関数は、アプリケーションがクライアントであり、TLS 1.2プロトコルのみをサポートすることを示すために使用されます。 この関数は、wolfSSL_ctx_new()を使用してSSL/TLSコンテキストを作成するときに使用される新しいWolfssl_method構造体のメモリを割り当てて初期化します。
WOLFSSL_METHOD * wolfDTLSv1_client_method(void )
wolfdtlsv1_client_method()関数は、アプリケーションがクライアントであり、DTLS 1.0プロトコルのみをサポートすることを示すために使用されます。 この関数は、wolfSSL_ctx_new()を使用してSSL/TLSコンテキストを作成するときに使用される新しいWOLFSSL_METHOD構造体のメモリを割り当てて初期化します。 この関数は、WolfSSLがDTLSサポート(–enable-dtls、またはWOLFSSL_DTLSを定義することによって)ビルドされている場合にのみ使用できます。
WOLFSSL_METHOD * wolfDTLSv1_server_method(void )
wolfDTLSv1_server_method()関数は、アプリケーションがサーバーであることを示すために使用され、DTLS 1.0プロトコルのみをサポートします。 この関数は、wolfSSL_ctx_new()を使用してSSL/TLSコンテキストを作成するときに使用される新しいWOLFSSL_METHOD構造体のメモリを割り当てて初期化します。 この関数は、WolfSSLがDTLSサポート(–enable-dtls、またはWOLFSSL_DTLSマクロを定義することによって)ビルドされている場合にのみ使用できます。
WOLFSSL_METHOD * wolfDTLSv1_3_server_method(void )
wolfDTLSv1_3_server_method()関数はアプリケーションがサーバーであることを示すために使用され、DTLS 1.3プロトコルのみをサポートします。 この関数は、wolfSSL_ctx_new()を使用してSSL/TLSコンテキストを作成するときに使用される新しいWOLFSSL_METHOD構造体のメモリを割り当てて初期化します。 この関数は、WolfSSLがDTLSサポート(–enable-dtls13、またはWOLFSSL_DTLS13を定義することによって)ビルドされている場合にのみ使用できます。
WOLFSSL_METHOD * wolfDTLSv1_3_client_method(void )
wolfDTLSv1_3_client_method()関数はアプリケーションがクライアントであることを示すために使用され、DTLS 1.3プロトコルのみをサポートします。 この関数は、wolfSSL_ctx_new()を使用してSSL/TLSコンテキストを作成するときに使用される新しいWOLFSSL_METHOD構造体のメモリを割り当てて初期化します。 この関数は、WolfSSLがDTLSサポート(–enable-dtls13、またはWOLFSSL_DTLS13を定義することによって)ビルドされている場合にのみ使用できます。
WOLFSSL_METHOD * wolfDTLS_server_method(void )
wolfDTLS_server_method()関数はアプリケーションがサーバーであることを示すために使用され、 可能な限り高いバージョン最小バージョンのDTLSプロトコルをサポートします。 デフォルトの最小バージョンはWOLFSSL_MIN_DTLS_DOWNGRADEマクロでの指定をもとにしていて、 実行時にwolfSSL_SetMinVersion()で変更することができます。 この関数は、wolfSSL_ctx_new()を使用してSSL/TLSコンテキストを作成するときに使用される新しいWOLFSSL_METHOD構造体のメモリを割り当てて初期化します。 この関数は、WolfSSLがDTLSサポート(–enable-dtls、またはWOLFSSL_DTLSを定義することによって)ビルドされている場合にのみ使用できます。
WOLFSSL_METHOD * wolfDTLS_client_method(void )
wolfDTLS_client_method()関数は アプリケーションがクライアントであることを示すために使用され、 可能な限り高いバージョン最小バージョンのDTLSプロトコルをサポートします。 デフォルトの最小バージョンはWOLFSSL_MIN_DTLS_DOWNGRADEマクロでの指定をもとにしていて、 実行時にwolfSSL_SetMinVersion()で変更することができます。 この関数は、wolfSSL_ctx_new()を使用してSSL/TLSコンテキストを作成するときに使用される新しいWOLFSSL_METHOD構造体のメモリを割り当てて初期化します。 この関数は、wolfSSLがDTLSサポート(–enable-dtls、またはWOLFSSL_DTLSを定義することによって)ビルドされている場合にのみ使用できます。
int wolfSSL_use_old_poly(WOLFSSL * ssl, int value)
Chacha-Poly Aead Constructionの最初のリリースと新しいバージョンの間にいくつかの違いがあるため、 古いバージョンを使用してサーバー/クライアントと通信するオプションを追加しました。 デフォルトでは、wolfSSLは新しいバージョンを使用します。
int wolfSSL_CTX_trust_peer_cert(WOLFSSL_CTX * ctx, const char * file, int type)
この関数は、TLS/SSLハンドシェイクを実行するときにピアを検証するために使用する証明書をロードします。 ハンドシェイク中に送信されたピア証明書は、この関数で指定された証明書のSKIDと署名を比較することによって検証されます。 これら2つのことが一致しない場合は、ピア証明書の検証にはロードされたCA証明書が使用されます。 この機能はWOLFSSL_TRUST_PEER_CERTマクロを定義することで機能を有効にできます。 適切な使用法は例をご覧ください。
long wolfSSL_CTX_get_verify_depth(WOLFSSL_CTX * ctx)
この関数は、WOLFSSL_CTX構造体構造を使用して証明書チェーン深度を取得します。
WOLFSSL_CTX * wolfSSL_CTX_new(WOLFSSL_METHOD * )
この関数は、所望のSSL/TLSプロトコル用メソッド構造体を引数に取って、新しいSSLコンテキストを作成します。
WOLFSSL * wolfSSL_new(WOLFSSL_CTX * )
この関数はすでに作成されたSSLコンテキスト(WOLFSSL_CTX)を入力として、新しいSSLセッション(WOLFSSL)を作成します。
int wolfSSL_set_fd(WOLFSSL * ssl, int fd)
この関数は、SSL接続の入出力機能としてファイル記述子(fd)を割り当てます。通常これはソケットファイル記述子になります。
int wolfSSL_set_dtls_fd_connected(WOLFSSL * ssl, int fd)
この関数はファイルディスクリプタ(fd)をSSLコネクションの入出力手段として設定します。 通常はソケットファイルディスクリプタが指定されます。この関数はDTLS専用のAPIであり、ソケットは接続済みとマークされます。 したがって、与えられたfdに対するrecvfromとsendto呼び出しでのaddrとaddr_lenはNULLに設定されます。
int wolfDTLS_SetChGoodCb(WOLFSSL * ssl, ClientHelloGoodCb cb, void * user_ctx)
この関数はDTLS ClientHelloメッセージが正しく処理できた際に呼び出されるコールバック関数を設定します。 クッキー交換メカニズムを使用する場合(DTLS1.2のHelloVerifyRequest か DTLS1.3のクッキー拡張を伴ったHelloRetryRequestのいずれかを使用する場合)には、 クッキー交換が成功した時点でこのコールバック関数が呼び出されます。 この機能はひとつのWOLFSSLオブジェクトを新たな接続を待ち受けるリスナーとして使い, ClientHelloが検証されたWOLFSSLオブジェクトから絶縁させることができます。 この場合の検証はクッキー交換かClientHelloが正しいフォーマットになっているかのチェックによってなされます。
void wolfSSL_set_using_nonblock(WOLFSSL * ssl, int nonblock)
この関数は、WOLFSSLオブジェクトに基礎となるI/Oがノンブロックであることを通知します。 アプリケーションがWOLFSSLオブジェクトを作成した後、ブロッキング以外のソケットで使用する場合は、 wolfssl_set_using_nonblock()を呼び出します。 これにより、wolfsslオブジェクトは、EWOULDBLOCKを受信することを意味します。
void wolfSSL_CTX_free(WOLFSSL_CTX * )
この関数は、割り当てられたWOLFSSL_CTXオブジェクトを解放します。 この関数はCTX参照数を減らし、参照カウントが0に達したときにのみコンテキストを解放します。
void wolfSSL_free(WOLFSSL * )
この関数は割り当てられたWOLFSSLオブジェクトを解放します。
int wolfSSL_set_session(WOLFSSL * ssl, WOLFSSL_SESSION * session)
この関数は、SSLオブジェクトSSLがSSL/TLS接続を確立する目的で使用するセッションを設定します。 セッション再開を行う場合、wolfSSL_shutdown()を呼び出す前にwolfSSL_get1_session()を呼び出してセッションオブジェクトを取得し、セッションIDを保存しておく必要があります。 後で、アプリケーションは新しいWOLFSSLオブジェクトを作成し、保存したセッションをwolfSSL_set_session()に渡す必要があります。 その後アプリケーションはwolfSSL_connect()を呼び出し、wolfSSLはセッション再開を試みます。 wolfSSLサーバーコードでは、デフォルトでセッション再開を許可します。 wolfSSL_get1_session()によって返されたオブジェクトは、アプリケーションが使用後に解放する必要があります。
void wolfSSL_CTX_set_verify(WOLFSSL_CTX * ctx, int mode, VerifyCallback verify_callback)
この関数はリモートピアの検証方法を設定し、また証明書検証コールバック関数をSSLコンテキストに登録することもできます。 検証コールバックは、検証障害が発生した場合にのみ呼び出されます。 検証コールバックが必要な場合は、NULLポインタをverify_callbackに使用できます。 ピア証明書の検証モードは、論理的またはフラグのリストです。 可能なフラグ値は次のとおりです: SSL_VERIFY_NONE -クライアントモード:クライアントはサーバーから受信した証明書を検証せず、ハンドシェイクは通常どおり続きます。 -サーバーモード:サーバーはクライアントに証明書要求を送信しません。そのため、クライアント検証は有効になりません。 SSL_VERIFY_PEER -クライアントモード:クライアントはハンドシェイク中にサーバーから受信した証明書を検証します。これはwolfSSLではデフォルトでオンにされます。したがって、このオプションを使用すると効果がありません。 -サーバーモード:サーバーは証明書要求をクライアントに送信し、受信したクライアント証明書を確認します。 SSL_VERIFY_FAIL_IF_NO_PEER_CERT -クライアントモード:クライアント側で使用されていない場合は効果がありません。 -サーバーモード:要求されたときにクライアントが証明書の送信に失敗した場合は、サーバー側で検証が失敗します(SSLサーバーのSSL_VERIFY_PEERを使用する場合)。 SSL_VERIFY_FAIL_EXCEPT_PSK -クライアントモード:クライアント側で使用されていない場合は効果がありません。 -サーバーモード:PSK接続の場合を除き、検証はSSL_VERIFY_FAIL_IF_NO_PEER_CERTと同じです。 PSK接続が行われている場合、接続はピア証明書なしで通過します。
void wolfSSL_set_verify(WOLFSSL * ssl, int mode, VerifyCallback verify_callback)
この関数はリモートピアの検証方法を設定し、また証明書検証コールバック関数をWOLFSSLオブジェクトに登録することもできます。 検証コールバックは、検証障害が発生した場合にのみ呼び出されます。 検証コールバックが必要な場合は、NULLポインタをverify_callbackに使用できます。 ピア証明書の検証モードは、論理的またはフラグのリストです。 可能なフラグ値は次のとおりです: SSL_VERIFY_NONE -クライアントモード:クライアントはサーバーから受信した証明書を検証せず、ハンドシェイクは通常どおり続きます。 -サーバーモード:サーバーはクライアントに証明書要求を送信しません。そのため、クライアント検証は有効になりません。 SSL_VERIFY_PEER -クライアントモード:クライアントはハンドシェイク中にサーバーから受信した証明書を検証します。これはwolfSSLではデフォルトでオンにされます。したがって、このオプションを使用すると効果がありません。 -サーバーモード:サーバーは証明書要求をクライアントに送信し、受信したクライアント証明書を確認します。 SSL_VERIFY_FAIL_IF_NO_PEER_CERT -クライアントモード:クライアント側で使用されていない場合は効果がありません。 -サーバーモード:要求されたときにクライアントが証明書の送信に失敗した場合は、サーバー側で検証が失敗します(SSLサーバーのSSL_VERIFY_PEERを使用する場合)。 SSL_VERIFY_FAIL_EXCEPT_PSK -クライアントモード:クライアント側で使用されていない場合は効果がありません。 -サーバーモード:PSK接続の場合を除き、検証はSSL_VERIFY_FAIL_IF_NO_PEER_CERTと同じです。 PSK接続が行われている場合、接続はピア証明書なしで通過します。
long wolfSSL_CTX_set_session_cache_mode(WOLFSSL_CTX * ctx, long mode)
この関数はSSLセッションキャッシュ機能を有効または無効にします。 動作はモードに使用される値によって異なります。 モードの値は次のとおりです: SSL_SESS_CACHE_OFF - セッションキャッシングを無効にします。デフォルトでセッションキャッシングがオンになっています。 SSL_SESS_CACHE_NO_AUTO_CLEAR - セッションキャッシュのオートフラッシュを無効にします。デフォルトで自動フラッシングはオンになっています。
int wolfSSL_CTX_memrestore_cert_cache(WOLFSSL_CTX * ctx, const void * mem, int sz)
この関数は証明書キャッシュをメモリから復元します。
int wolfSSL_CTX_set_cipher_list(WOLFSSL_CTX * ctx, const char * list)
この関数は、与えられたWOLFSSL_CTXに暗号スイートリストを設定します。 この暗号スイートリストは、このコンテキストを使用して作成された新しいSSLセッション(WolfSSL)のデフォルトリストになります。 リスト内の暗号は、優先度の高いものの順に順にソートされるべきです。 wolfSSL_CTX_set_cipher_list()が呼び出される都度、特定のSSLコンテキストの暗号スイートリストを提供されたリストにリセットします。 暗号スイートリストはヌル終端されたコロン区切りリストです。 たとえば、リストの値が「DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:AES256-SHA256」有効な暗号値は、src/internal.cのcipher_names []配列のフルネーム値です。 (有効な暗号化値の明確なリストの場合はsrc/internal.cをチェックしてください)
int wolfSSL_set_cipher_list(WOLFSSL * ssl, const char * list)
この関数は、特定のWolfSSLオブジェクト(SSLセッション)の暗号スイートリストを設定します。 この暗号スイートリストは、このコンテキストを使用して作成された新しいSSLセッション(WolfSSL)のデフォルトリストになります。 リスト内の暗号は、優先度の高いものの順に順にソートされるべきです。 wolfSSL_CTX_set_cipher_list()が呼び出される都度、特定のSSLコンテキストの暗号スイートリストを提供されたリストにリセットします。 暗号スイートリストはヌル終端されたコロン区切りリストです。 たとえば、リストの値が「DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:AES256-SHA256」有効な暗号値は、src/internal.cのcipher_names []配列のフルネーム値です。 (有効な暗号化値の明確なリストの場合はsrc/internal.cをチェックしてください)
void wolfSSL_dtls13_set_send_more_acks(WOLFSSL * ssl, int value)
この関数は、ライブラリが中断を検出したときにすぐに他のピアにACKを送信するかどうかを設定します。 ACKをすぐに送信すると、遅延は最小限に抑えられますが、必要以上に多くの帯域幅が消費される可能性があります。 アプリケーションが独自にタイマーを管理しており、このオプションが0に設定されている場合、 アプリケーションコードはwolfSSL_dtls13_use_quick_timeout()を使用して、 遅延したACKを送信するためにより速いタイムアウトを設定する必要があるかどうかを判断できます。
int wolfSSL_dtls_set_timeout_init(WOLFSSL * ssl, int )
この関数はDTLSタイムアウトを設定します。
WOLFSSL_SESSION * wolfSSL_get1_session(WOLFSSL * ssl)
この関数は、WOLFSSL構造体からWOLFSSL_SESSIONを参照型として返します。 これには、wolfSSL_SESSION_freeを呼び出してセッション参照を解除する必要があります。 WOLFSSL_SESSIONは、セッションの再開を実行するために必要なすべての必要な情報を含み、新しいハンドシェイクなしで接続を再確立します。 セッションの再開の場合、wolfSSL_shutdown()をセッションオブジェクトに呼び出す前に、アプリケーションはオブジェクトからwolfssl_get1_session()を呼び出して保存する必要があります。 これはセッションへのポインタを返します。 その後、アプリケーションは新しいWOLFSSLオブジェクトを作成し、保存したセッションをwolfssl_set_session()に割り当てる必要があります。 この時点で、アプリケーションはwolfssl_connect()を呼び出し、WolfSSLはセッションを再開しようとします。 WolfSSLサーバーコードでは、デフォルトでセッションの再開を許可します。 wolfssl_get1_session()によって返されたオブジェクトは、アプリケーションが使用後は解放される必要があります。
WOLFSSL_METHOD * wolfSSLv23_client_method(void )
wolfsslv23_client_method()関数は、アプリケーションがクライアントであることを示すために使用され、SSL 3.0~TLS 1.3の間でサーバーでサポートされている最高のプロトコルバージョンをサポートします。この関数は、wolfSSL_CTX_new()を使用してSSL / TLSコンテキストを作成するときに使用される新しいWolfssl_method構造体のメモリを割り当てて初期化します。WolfSSLクライアントとサーバーの両方が堅牢なバージョンのダウングレード機能を持っています。特定のプロトコルバージョンメソッドがどちらの側で使用されている場合は、そのバージョンのみがネゴシエートされたり、エラーが返されます。たとえば、TLSV1を使用し、SSLv3のみに接続しようとするクライアントは、TLSV1.1に接続しても失敗します。この問題を解決するために、wolfsslv23_client_method()関数を使用するクライアントは、サーバーでサポートされている最高のプロトコルバージョンを使用し、必要に応じてSSLv3にダウングレードします。この場合、クライアントはSSLv3 - TLSv1.3を実行しているサーバーに接続できるようになります。
WOLFSSL_BIGNUM * wolfSSL_ASN1_INTEGER_to_BN(const WOLFSSL_ASN1_INTEGER * ai, WOLFSSL_BIGNUM * bn)
この関数は、WOLFSSL_ASN1_INTEGER値をWOLFSSL_BIGNUM構造体にコピーするために使用されます。
long wolfSSL_CTX_add_extra_chain_cert(WOLFSSL_CTX * ctx, WOLFSSL_X509 * x509)
この関数は、WOLFSSL_CTX構造で構築されている内部チェーンに証明書を追加します。
int wolfSSL_CTX_get_read_ahead(WOLFSSL_CTX * ctx)
この関数は、WOLFSSL_CTX構造からGet Read Hapeフラグを返します。
int wolfSSL_CTX_set_read_ahead(WOLFSSL_CTX * ctx, int v)
この関数は、WOLFSSL_CTX構造内の読み出し先のフラグを設定します。
long wolfSSL_CTX_set_tlsext_status_arg(WOLFSSL_CTX * ctx, void * arg)
この関数はOCSPで使用するオプション引数を設定します。
long wolfSSL_CTX_set_tlsext_opaque_prf_input_callback_arg(WOLFSSL_CTX * ctx, void * arg)
この関数は、PRFコールバックに渡すオプションの引数を設定します。
long wolfSSL_set_options(WOLFSSL * s, long op)
この関数は、SSLのオプションマスクを設定します。 いくつかの有効なオプションは、ssl_op_all、ssl_op_cookie_exchange、ssl_op_no_sslv2、ssl_op_no_sslv3、ssl_op_no_tlsv1_1、ssl_op_no_tlsv1_2、ssl_op_no_compressionです。
long wolfSSL_get_options(const WOLFSSL * ssl)
この関数は現在のオプションマスクを返します。
long wolfSSL_set_tlsext_debug_arg(WOLFSSL * ssl, void * arg)
この関数は、渡されたデバッグ引数を設定するために使用されます。
long wolfSSL_get_verify_result(const WOLFSSL * ssl)
int wolfSSL_CTX_allow_anon_cipher(WOLFSSL_CTX * )
この機能により、CTX構造のHAVAnonメンバーがコンパイル中に定義されている場合は、CTX構造のHABANONメンバーを有効にします。
WOLFSSL_METHOD * wolfSSLv23_server_method(void )
wolfsslv23_server_method()関数は、アプリケーションがサーバーであることを示すために使用され、SSL 3.0 _ TLS 1.3からプロトコルバージョンと接続するクライアントをサポートします。この関数は、wolfSSL_CTX_new()を使用してSSL / TLSコンテキストを作成するときに使用される新しいWolfssl_method構造体のメモリを割り当てて初期化します。
int wolfSSL_state(WOLFSSL * ssl)
int wolfSSL_check_domain_name(WOLFSSL * ssl, const char * dn)
wolfsslデフォルトでは、有効な日付範囲と検証済みの署名のためにピア証明書をチェックします。wolfssl_connect()またはwolfssl_accept()の前にこの関数を呼び出すと、実行するチェックのリストにドメイン名チェックが追加されます。DN受信時にピア証明書を確認するためのドメイン名を保持します。
int wolfSSL_set_compression(WOLFSSL * ssl)
SSL接続に圧縮を使用する機能をオンにします。両側には圧縮がオンになっている必要があります。そうでなければ圧縮は使用されません。ZLIBライブラリは実際のデータ圧縮を実行します。ライブラリにコンパイルするには、システムの設定システムに–with-libzを使用し、そうでない場合はhand_libzを定義します。送受信されるメッセージの実際のサイズを減らす前にデータを圧縮している間に、圧縮によって保存されたデータの量は通常、ネットワークの遅いすべてのネットワークを除いたものよりも分析に時間がかかります。
int wolfSSL_set_timeout(WOLFSSL * ssl, unsigned int to)
この関数はSSLセッションタイムアウト値を秒単位で設定します。
int wolfSSL_CTX_set_timeout(WOLFSSL_CTX * ctx, unsigned int to)
この関数は、指定されたSSLコンテキストに対して、SSLセッションのタイムアウト値を秒単位で設定します。
int wolfSSL_CTX_UnloadCAs(WOLFSSL_CTX * )
この関数はCA署名者リストをアンロードし、署名者全体のテーブルを解放します。
int wolfSSL_CTX_Unload_trust_peers(WOLFSSL_CTX * )
この関数は、以前にロードされたすべての信頼できるピア証明書をアンロードするために使用されます。マクロwolfssl_trust_peer_certを定義することで機能が有効になっています。
int wolfSSL_CTX_trust_peer_buffer(WOLFSSL_CTX * ctx, const unsigned char * in, long sz, int format)
この関数は、TLS / SSLハンドシェイクを実行するときにピアを検証するために使用する証明書をロードします。ハンドシェイク中に送信されたピア証明書は、使用可能なときにスキッドを使用することによって比較されます。これら2つのことが一致しない場合は、ロードされたCASが使用されます。ファイルの代わりにバッファーの場合は、wolfssl_ctx_trust_peer_certと同じ機能です。特徴はマクロwolfssl_trust_peer_certを定義することによって有効になっています適切な使用法の例を参照してください。
int wolfSSL_CTX_set_group_messages(WOLFSSL_CTX * )
この機能は、可能な限りハンドシェイクメッセージのグループ化をオンにします。
int wolfSSL_set_group_messages(WOLFSSL * )
この機能は、可能な限りハンドシェイクメッセージのグループ化をオンにします。
int wolfSSL_CTX_SetMinVersion(WOLFSSL_CTX * ctx, int version)
この関数は、許可されている最小のダウングレードバージョンを設定します。接続が(wolfsslv23_client_methodまたはwolfsslv23_server_method)を使用して、接続がダウングレードできる場合にのみ適用されます。
int wolfSSL_SetVersion(WOLFSSL * ssl, int version)
この関数は、バージョンで指定されたバージョンを使用して、指定されたSSLセッション(WolfSSLオブジェクト)のSSL/TLSプロトコルバージョンを設定します。これにより、SSLセッション(SSL)のプロトコル設定が最初に定義され、SSLコンテキスト(wolfSSL_CTX_new())メソッドの種類によって上書きされます。
int wolfSSL_UseALPN(WOLFSSL * ssl, char * protocol_name_list, unsigned int protocol_name_listSz, unsigned char options)
wolfsslセッションにALPNを設定します。
int wolfSSL_CTX_UseSessionTicket(WOLFSSL_CTX * ctx)
この関数は、セッションチケットを使用するようにWolfSSLコンテキストを設定します。
int wolfSSL_check_private_key(const WOLFSSL * ssl)
この関数は、秘密鍵が使用されている証明書との一致であることを確認します。
int wolfSSL_use_certificate(WOLFSSL * ssl, WOLFSSL_X509 * x509)
ハンドシェイク中に使用するために、WolfSSL構造の証明書を設定するために使用されます。
int wolfSSL_use_certificate_ASN1(WOLFSSL * ssl, unsigned char * der, int derSz)
int wolfSSL_SESSION_get_master_key(const WOLFSSL_SESSION * ses, unsigned char * out, int outSz)
これはハンドシェイクを完了した後にマスターキーを取得するために使用されます。
int wolfSSL_SESSION_get_master_key_length(const WOLFSSL_SESSION * ses)
これはマスター秘密鍵の長さを取得するために使用されます。
void wolfSSL_CTX_set_cert_store(WOLFSSL_CTX * ctx, WOLFSSL_X509_STORE * str)
WOLFSSL_X509_STORE * wolfSSL_CTX_get_cert_store(WOLFSSL_CTX * ctx)
size_t wolfSSL_get_server_random(const WOLFSSL * ssl, unsigned char * out, size_t outlen)
size_t wolfSSL_get_client_random(const WOLFSSL * ssl, unsigned char * out, size_t outSz)
wc_pem_password_cb * wolfSSL_CTX_get_default_passwd_cb(WOLFSSL_CTX * ctx)
これはCTXで設定されたパスワードコールバックのゲッター関数です。
void * wolfSSL_CTX_get_default_passwd_cb_userdata(WOLFSSL_CTX * ctx)
long wolfSSL_CTX_clear_options(WOLFSSL_CTX * ctx, long opt)
この関数は、WOLFSSL_CTXオブジェクトのオプションビットをリセットします。
int wolfSSL_set_msg_callback(WOLFSSL * ssl, SSL_Msg_Cb cb)
この関数はSSL内のコールバックを設定します。コールバックはハンドシェイクメッセージを観察することです。CBのNULL値はコールバックをリセットします。
int wolfSSL_set_msg_callback_arg(WOLFSSL * ssl, void * arg)
この関数は、SSL内の関連コールバックコンテキスト値を設定します。値はコールバック引数に渡されます。
int wolfSSL_send_hrr_cookie(WOLFSSL * ssl, const unsigned char * secret, unsigned int secretSz)
この関数はサーバー側で呼び出されて、HellORetryRequestメッセージにCookieを含める必要があることを示します。Cookieは現在のトランスクリプトのハッシュを保持しているので、別のサーバープロセスは応答でClientHelloを処理できます。秘密はCookieデータの整合性チェックをGenertingするときに使用されます。
int wolfSSL_disable_hrr_cookie(WOLFSSL * ssl)
この関数はサーバー側で呼び出され、HelloRetryRequestメッセージがクッキーを含んではならないこと、 DTLSv1.3が使用されている場合にはクッキーの交換がハンドシェークに含まれないことを表明します。 DTLSv1.3ではクッキー交換を行わないとサーバーがDoS/Amplification攻撃を受けやすくなる可能性があることに留意してください。
int wolfSSL_CTX_no_ticket_TLSv13(WOLFSSL_CTX * ctx)
この関数はサーバー上で呼び出され、ハンドシェイク完了時にセッション再開のためのセッションチケットの送信を行わないようにします。
int wolfSSL_no_ticket_TLSv13(WOLFSSL * ssl)
ハンドシェイクが完了すると、この関数はサーバー上で再開セッションチケットの送信を停止するように呼び出されます。
int wolfSSL_CTX_no_dhe_psk(WOLFSSL_CTX * ctx)
この関数は、Authenticationにプリシェアキーを使用している場合、DIFFIE-HELLMAN(DH)スタイルのキー交換を許可するTLS V1.3 WolfSSLコンテキストで呼び出されます。
int wolfSSL_no_dhe_psk(WOLFSSL * ssl)
この関数は、事前共有鍵を使用しているTLS V1.3クライアントまたはサーバーで、にDiffie-Hellman(DH)スタイルの鍵交換を許可しないように設定します。
int wolfSSL_CTX_allow_post_handshake_auth(WOLFSSL_CTX * ctx)
この関数は、TLS v1.3クライアントのWolfSSLコンテキストで呼び出され、クライアントはサーバーからの要求に応じてPost Handshakeを送信できるようにします。これは、クライアント認証などを必要としないページを持つWebサーバーに接続するときに役立ちます。
int wolfSSL_allow_post_handshake_auth(WOLFSSL * ssl)
この関数は、TLS V1.3クライアントWolfSSLで呼び出され、クライアントはサーバーからの要求に応じてハンドシェイクを送ります。handshakeクライアント認証拡張機能はClientHelloで送信されます。これは、クライアント認証などを必要としないページを持つWebサーバーに接続するときに役立ちます。
int wolfSSL_CTX_set1_groups_list(WOLFSSL_CTX * ctx, char * list)
この関数は楕円曲線グループのリストを設定して、WolfSSLコンテキストを希望の順に設定します。リストはヌル終了したテキスト文字列、およびコロン区切りリストです。この関数を呼び出して、TLS v1.3接続で使用する鍵交換楕円曲線パラメータを設定します。
int wolfSSL_set1_groups_list(WOLFSSL * ssl, char * list)
この関数は楕円曲線グループのリストを設定して、WolfSSLを希望の順に設定します。リストはヌル終了したテキスト文字列、およびコロン区切りリストです。この関数を呼び出して、TLS v1.3接続で使用する鍵交換楕円曲線パラメータを設定します。
int wolfSSL_CTX_set_groups(WOLFSSL_CTX * ctx, int * groups, int count)
この関数は楕円曲線グループのリストを設定して、WolfSSLコンテキストを希望の順に設定します。リストは、Countで指定された識別子の数を持つグループ識別子の配列です。この関数を呼び出して、TLS v1.3接続で使用する鍵交換楕円曲線パラメータを設定します。
int wolfSSL_set_groups(WOLFSSL * ssl, int * groups, int count)
この関数は、wolfsslを許すために楕円曲線グループのリストを設定します。リストは、Countで指定された識別子の数を持つグループ識別子の配列です。この関数を呼び出して、TLS v1.3接続で使用する鍵交換楕円曲線パラメータを設定します。
int wolfSSL_CTX_set_max_early_data(WOLFSSL_CTX * ctx, unsigned int sz)
この関数は、WolfSSLコンテキストを使用してTLS V1.3サーバーによって受け入れられるアーリーデータの最大量を設定します。 この関数を呼び出して、再生攻撃を軽減するためのプロセスへのアーリーデータの量を制限します。 初期のデータは、セッションチケットが送信されたこと、したがってセッションチケットが再開されるたびに同じ接続の鍵から派生した鍵によって保護されます。 値は再開のためにセッションチケットに含まれています。 ゼロの値は、セッションチケットを使用してクライアントによってアーリーデータを送信することを示します。 アーリーデータバイト数をアプリケーションで実際には可能な限り低く保つことをお勧めします。
int wolfSSL_set_max_early_data(WOLFSSL * ssl, unsigned int sz)
この関数は、WolfSSLコンテキストを使用してTLS V1.3サーバーによって受け入れられるアーリーデータの最大量を設定します。 この関数を呼び出して、再生攻撃を軽減するためプロセスへのアーリーデータの量を制限します。 初期のデータは、セッションチケットが送信されたこと、したがってセッションチケットが再開されるたびに同じ接続の鍵から派生した鍵によって保護されます。 値は再開のためにセッションチケットに含まれています。 ゼロの値は、セッションチケットを使用してクライアントによってアーリーデータを送信することを示します。 アーリーデータバイト数をアプリケーションで実際には可能な限り低く保つことをお勧めします。
void wolfSSL_CTX_set_psk_client_tls13_callback(WOLFSSL_CTX * ctx, wc_psk_client_tls13_callback cb)
この関数は、TLS v1.3接続のプレシェア鍵(PSK)クライアント側コールバックを設定します。コールバックはPSKアイデンティティを見つけ、そのキーと、ハンドシェイクに使用する暗号の名前を返します。この関数は、WOLFSSL_CTX構造体のclient_psk_tls13_cbメンバーを設定します。
void wolfSSL_set_psk_client_tls13_callback(WOLFSSL * ssl, wc_psk_client_tls13_callback cb)
この関数は、TLS v1.3接続のプレシェアキー(PSK)クライアント側コールバックを設定します。コールバックはPSKアイデンティティを見つけ、そのキーと、ハンドシェイクに使用する暗号の名前を返します。この関数は、wolfssl構造体のOptionsフィールドのclient_psk_tls13_cbメンバーを設定します。
void wolfSSL_CTX_set_psk_server_tls13_callback(WOLFSSL_CTX * ctx, wc_psk_server_tls13_callback cb)
この関数は、TLS v1.3接続用の事前共有鍵(PSK)サーバ側コールバックを設定します。コールバックはPSKアイデンティティを見つけ、そのキーと、ハンドシェイクに使用する暗号の名前を返します。この関数は、wolfssl_ctx構造体のserver_psk_tls13_cbメンバーを設定します。
void wolfSSL_set_psk_server_tls13_callback(WOLFSSL * ssl, wc_psk_server_tls13_callback cb)
この関数は、TLS v1.3接続用の事前共有鍵(PSK)サーバ側コールバックを設定します。コールバックはPSKアイデンティティを見つけ、そのキーと、ハンドシェイクに使用する暗号の名前を返します。この関数は、wolfssl構造体のオプションフィールドのserver_psk_tls13_cbメンバーを設定します。
int wolfSSL_UseKeyShare(WOLFSSL * ssl, word16 group)
この関数は、キーペアの生成を含むグループからキーシェアエントリを作成します。Keyshareエクステンションには、鍵交換のための生成されたすべての公開鍵が含まれています。この関数が呼び出されると、指定されたグループのみが含まれます。優先グループがサーバーに対して以前に確立されているときにこの関数を呼び出します。
int wolfSSL_NoKeyShares(WOLFSSL * ssl)
この関数は、ClientHelloで鍵共有が送信されないように呼び出されます。これにより、ハンドシェイクに鍵交換が必要な場合は、サーバーがHelloretryRequestで応答するように強制します。予想される鍵交換グループが知られておらず、キーの生成を不必要に回避するときにこの機能を呼び出します。鍵交換が必要なときにハンドシェイクを完了するために追加の往復が必要になることに注意してください。
WOLFSSL_METHOD * wolfTLSv1_3_server_method_ex(void * heap)
この関数は、アプリケーションがサーバーであることを示すために使用され、TLS 1.3プロトコルのみをサポートします。この関数は、wolfSSL_CTX_new()を使用してSSL / TLSコンテキストを作成するときに使用される新しいWolfssl_method構造体のメモリを割り当てて初期化します。
WOLFSSL_METHOD * wolfTLSv1_3_client_method_ex(void * heap)
この関数は、アプリケーションがクライアントであることを示すために使用され、TLS 1.3プロトコルのみをサポートします。この関数は、wolfSSL_CTX_new()を使用してSSL / TLSコンテキストを作成するときに使用される新しいWolfssl_method構造体のメモリを割り当てて初期化します。
WOLFSSL_METHOD * wolfTLSv1_3_server_method(void )
この関数は、アプリケーションがサーバーであることを示すために使用され、TLS 1.3プロトコルのみをサポートします。この関数は、wolfSSL_CTX_new()を使用してSSL / TLSコンテキストを作成するときに使用される新しいWolfssl_method構造体のメモリを割り当てて初期化します。
WOLFSSL_METHOD * wolfTLSv1_3_client_method(void )
この関数は、アプリケーションがクライアントであることを示すために使用され、TLS 1.3プロトコルのみをサポートします。この関数は、wolfSSL_CTX_new()を使用してSSL / TLSコンテキストを作成するときに使用される新しいWolfssl_method構造体のメモリを割り当てて初期化します。
WOLFSSL_METHOD * wolfTLSv1_3_method_ex(void * heap)
この関数は、まだどちらの側(サーバ/クライアント)を決定していないことを除いて、Wolftlsv1_3_client_methodと同様のwolfssl_methodを返します。
WOLFSSL_METHOD * wolfTLSv1_3_method(void )
この関数は、まだどちらの側(サーバ/クライアント)を決定していないことを除いて、Wolftlsv1_3_client_methodと同様のwolfssl_methodを返します。
int wolfSSL_CTX_set_client_cert_type(WOLFSSL_CTX * ctx, const char * buf, int len)
この関数はクライアント側で呼び出される場合には、サーバー側にCertificateメッセージで送信できる証明書タイプを設定します。 サーバー側で呼び出される場合には、受入れ可能なクライアント証明書タイプを設定します。 Raw Public Key 証明書を送受信したい場合にはこの関数を使って証明書タイプを設定しなければなりません。 設定する証明書タイプは優先度順に格納したバイト配列として渡します。 設定するバッファアドレスにNULLを渡すか、あるいはバッファサイズに0を渡すと規定値にもどすことができます。 規定値はX509証明書(WOLFSSL_CERT_TYPE_X509)のみを扱う設定となっています。
int wolfSSL_CTX_set_server_cert_type(WOLFSSL_CTX * ctx, const char * buf, int len)
この関数はサーバー側で呼び出される場合には、クライアント側にCertificateメッセージで送信できる証明書タイプを設定します。 クライアント側で呼び出される場合には、受入れ可能なサーバー証明書タイプを設定します。 Raw Public Key 証明書を送受信したい場合にはこの関数を使って証明書タイプを設定しなければなりません。 設定する証明書タイプは優先度順に格納したバイト配列として渡します。 設定するバッファアドレスにNULLを渡すか、あるいはバッファサイズに0を渡すと規定値にもどすことができます。 規定値はX509証明書(WOLFSSL_CERT_TYPE_X509)のみを扱う設定となっています。
int wolfSSL_set_client_cert_type(WOLFSSL * ssl, const char * buf, int len)
この関数はクライアント側で呼び出される場合には、サーバー側にCertificateメッセージで送信できる証明書タイプを設定します。 サーバー側で呼び出される場合には、受入れ可能なクライアント証明書タイプを設定します。 Raw Public Key 証明書を送受信したい場合にはこの関数を使って証明書タイプを設定しなければなりません。 設定する証明書タイプは優先度順に格納したバイト配列として渡します。 設定するバッファアドレスにNULLを渡すか、あるいはバッファサイズに0を渡すと規定値にもどすことができます。 規定値はX509証明書(WOLFSSL_CERT_TYPE_X509)のみを扱う設定となっています。
int wolfSSL_set_server_cert_type(WOLFSSL * ssl, const char * buf, int len)
この関数はサーバー側で呼び出される場合には、クライアント側にCertificateメッセージで送信できる証明書タイプを設定します。 クライアント側で呼び出される場合には、受入れ可能なサーバー証明書タイプを設定します。 Raw Public Key 証明書を送受信したい場合にはこの関数を使って証明書タイプを設定しなければなりません。 設定する証明書タイプは優先度順に格納したバイト配列として渡します。 設定するバッファアドレスにNULLを渡すか、あるいはバッファサイズに0を渡すと規定値にもどすことができます。 規定値はX509証明書(WOLFSSL_CERT_TYPE_X509)のみを扱う設定となっています。
void * wolfSSL_GetCookieCtx(WOLFSSL * ssl)
この関数は、WolfSSL構造のIOCB_COOKIECTXメンバーを返します。
int wolfSSL_SetIO_ISOTP(WOLFSSL * ssl, isotp_wolfssl_ctx * ctx, can_recv_fn recv_fn, can_send_fn send_fn, can_delay_fn delay_fn, word32 receive_delay, char * receive_buffer, int receive_buffer_size, void * arg)
この関数は、WolfSSLがWolfSSL_ISOTPでコンパイルされている場合に使用する場合は、WolfSSLの場合はISO-TPコンテキストを設定します。

Functions Documentation

function wolfSSLv23_method

WOLFSSL_METHOD * wolfSSLv23_method(
    void 
)

この関数は、wolfSSLv23_client_methodと同様にWOLFSSL_METHODを返します(サーバー/クライアント)。

See:

Return:

  • 作成に成功した場合は、WOLFSSL_METHODポインタを返します。
  • メモリ割り当てエラーまたはメソッドの作成の失敗の場合はNULLを返します。

Example

WOLFSSL* ctx;
ctx  = wolfSSL_CTX_new(wolfSSLv23_method());
// check ret value

function wolfSSLv3_server_method

WOLFSSL_METHOD * wolfSSLv3_server_method(
    void 
)

wolfSSLv3_server_method()関数は、アプリケーションがサーバーであることを示すために使用され、SSL3.0プロトコルのみをサポートします。 この関数は、wolfSSL_CTX_new()を使用してSSL/TLSコンテキストを作成するときに使用される新しいWOLFSSL_METHOD構造体のメモリを割り当てて初期化します。

See:

Return:

  • 成功した場合、新しく作成されたWOLFSSL_METHOD構造体へのポインタを返します。
  • XMALLOCを呼び出すときにメモリ割り当てが失敗した場合、基礎となるMalloc()実装の失敗値が返されます(通常はerrnoがENOMEMに設定されます)。

Example

#include <wolfssl/ssl.h>

WOLFSSL_METHOD* method;
WOLFSSL_CTX* ctx;

method = wolfSSLv3_server_method();
if (method == NULL) {
    unable to get method
}

ctx = wolfSSL_CTX_new(method);
...

function wolfSSLv3_client_method

WOLFSSL_METHOD * wolfSSLv3_client_method(
    void 
)

wolfSSLv3_client_method()関数は、アプリケーションがクライアントであり、SSL 3.0プロトコルのみをサポートすることを示すために使用されます。 この関数は、wolfSSL_CTX_new()を使用してSSL/TLSコンテキストを作成するときに使用される新しいWOLFSSL_METHOD構造体のメモリを割り当てて初期化します。

See:

Return:

  • 成功した場合、新しく作成されたWOLFSSL_METHOD構造体へのポインタを返します。
  • XMALLOCを呼び出すときにメモリ割り当てが失敗した場合、基礎となるMalloc()実装の失敗値が返されます(通常はerrnoがENOMEMに設定されます)。

Example

#include <wolfssl/ssl.h>

WOLFSSL_METHOD* method;
WOLFSSL_CTX* ctx;

method = wolfSSLv3_client_method();
if (method == NULL) {
    unable to get method
}

ctx = wolfSSL_CTX_new(method);
...

function wolfTLSv1_server_method

WOLFSSL_METHOD * wolfTLSv1_server_method(
    void 
)

wolfTLSv1_server_method()関数は、アプリケーションがサーバーであることを示すために使用され、TLS 1.0プロトコルのみをサポートします。 この関数は、wolfSSL_ctx_new()を使用してSSL/TLSコンテキストを作成するときに使用される新しいWOLFSSL_METHOD構造体のメモリを割り当てて初期化します。

See:

Return:

  • 成功した場合、新しく作成されたWOLFSSL_METHOD構造体へのポインタを返します。
  • XMALLOCを呼び出すときにメモリ割り当てが失敗した場合、基礎となるMalloc()実装の失敗値が返されます(通常はerrnoがENOMEMに設定されます)。

Example

#include <wolfssl/ssl.h>

WOLFSSL_METHOD* method;
WOLFSSL_CTX* ctx;

method = wolfTLSv1_server_method();
if (method == NULL) {
    unable to get method
}

ctx = wolfSSL_CTX_new(method);
...

function wolfTLSv1_client_method

WOLFSSL_METHOD * wolfTLSv1_client_method(
    void 
)

wolftlsv1_client_method()関数は、アプリケーションがクライアントであり、TLS 1.0プロトコルのみをサポートすることを示すために使用されます。 この関数は、wolfSSL_ctx_new()を使用してSSL/TLSコンテキストを作成するときに使用される新しいWOLFSSL_METHOD構造体のメモリを割り当てて初期化します。

See:

Return:

  • 成功した場合、新しく作成されたWOLFSSL_METHOD構造体へのポインタを返します。
  • XMALLOCを呼び出すときにメモリ割り当てが失敗した場合、基礎となるMalloc()実装の失敗値が返されます(通常はerrnoがENOMEMに設定されます)。

Example

#include <wolfssl/ssl.h>

WOLFSSL_METHOD* method;
WOLFSSL_CTX* ctx;

method = wolfTLSv1_client_method();
if (method == NULL) {
    unable to get method
}

ctx = wolfSSL_CTX_new(method);
...

function wolfTLSv1_1_server_method

WOLFSSL_METHOD * wolfTLSv1_1_server_method(
    void 
)

wolfTLSv1_1_server_method()関数は、アプリケーションがサーバーであることを示すために使用され、TLS 1.1プロトコルのみをサポートします。 この関数は、wolfSSL_ctx_new()を使用してSSL/TLSコンテキストを作成するときに使用される新しいWOLFSSL_METHOD構造体のメモリを割り当てて初期化します。

See:

Return:

  • 成功した場合、新しく作成されたWOLFSSL_METHOD構造体へのポインタを返します。
  • XMALLOCを呼び出すときにメモリ割り当てが失敗した場合、基礎となるMalloc()実装の失敗値が返されます(通常はerrnoがENOMEMに設定されます)。

Example

#include <wolfssl/ssl.h>

WOLFSSL_METHOD* method;
WOLFSSL_CTX* ctx;

method = wolfTLSv1_1_server_method();
if (method == NULL) {
    // unable to get method
}

ctx = wolfSSL_CTX_new(method);
...

function wolfTLSv1_1_client_method

WOLFSSL_METHOD * wolfTLSv1_1_client_method(
    void 
)

wolfTLSv1_1_client_method()関数は、アプリケーションがクライアントであり、TLS 1.0プロトコルのみをサポートすることを示すために使用されます。 この関数は、wolfSSL_ctx_new()を使用してSSL/TLSコンテキストを作成するときに使用される新しいWOLFSSL_METHOD構造体のメモリを割り当てて初期化します。

See:

Return:

  • 成功した場合、新しく作成されたWOLFSSL_METHOD構造体へのポインタを返します。
  • XMALLOCを呼び出すときにメモリ割り当てが失敗した場合、基礎となるMalloc()実装の失敗値が返されます(通常はerrnoがENOMEMに設定されます)。

Example

#include <wolfssl/ssl.h>

WOLFSSL_METHOD* method;
WOLFSSL_CTX* ctx;

method = wolfTLSv1_1_client_method();
if (method == NULL) {
    // unable to get method
}

ctx = wolfSSL_CTX_new(method);
...

function wolfTLSv1_2_server_method

WOLFSSL_METHOD * wolfTLSv1_2_server_method(
    void 
)

wolfTLSv1_2_server_method()関数は、アプリケーションがサーバーであることを示すために使用され、TLS 1.2プロトコルのみをサポートします。 この関数は、wolfSSL_ctx_new()を使用してSSL/TLSコンテキストを作成するときに使用される新しいWOLFSSL_METHOD構造体のメモリを割り当てて初期化します。

See:

Return:

  • 成功した場合、新しく作成されたWOLFSSL_METHOD構造体へのポインタを返します。
  • XMALLOCを呼び出すときにメモリ割り当てが失敗した場合、基礎となるMalloc()実装の失敗値が返されます(通常はerrnoがENOMEMに設定されます)。

Example

#include <wolfssl/ssl.h>

WOLFSSL_METHOD* method;
WOLFSSL_CTX* ctx;

method = wolfTLSv1_2_server_method();
if (method == NULL) {
    // unable to get method
}

ctx = wolfSSL_CTX_new(method);
...

function wolfTLSv1_2_client_method

WOLFSSL_METHOD * wolfTLSv1_2_client_method(
    void 
)

wolfTLSv1_2_client_method()関数は、アプリケーションがクライアントであり、TLS 1.2プロトコルのみをサポートすることを示すために使用されます。 この関数は、wolfSSL_ctx_new()を使用してSSL/TLSコンテキストを作成するときに使用される新しいWolfssl_method構造体のメモリを割り当てて初期化します。

See:

Return:

  • 成功した場合、新しく作成されたWOLFSSL_METHOD構造体へのポインタを返します。
  • XMALLOCを呼び出すときにメモリ割り当てが失敗した場合、基礎となるMalloc()実装の失敗値が返されます(通常はerrnoがENOMEMに設定されます)。

Example

#include <wolfssl/ssl.h>

WOLFSSL_METHOD* method;
WOLFSSL_CTX* ctx;

method = wolfTLSv1_2_client_method();
if (method == NULL) {
    // unable to get method
}

ctx = wolfSSL_CTX_new(method);
...

function wolfDTLSv1_client_method

WOLFSSL_METHOD * wolfDTLSv1_client_method(
    void 
)

wolfdtlsv1_client_method()関数は、アプリケーションがクライアントであり、DTLS 1.0プロトコルのみをサポートすることを示すために使用されます。 この関数は、wolfSSL_ctx_new()を使用してSSL/TLSコンテキストを作成するときに使用される新しいWOLFSSL_METHOD構造体のメモリを割り当てて初期化します。 この関数は、WolfSSLがDTLSサポート(–enable-dtls、またはWOLFSSL_DTLSを定義することによって)ビルドされている場合にのみ使用できます。

See:

Return:

  • 成功した場合、新しく作成されたWOLFSSL_METHOD構造体へのポインタを返します。
  • XMALLOCを呼び出すときにメモリ割り当てが失敗した場合、基礎となるMalloc()実装の失敗値が返されます(通常はerrnoがENOMEMに設定されます)。

Example

WOLFSSL_METHOD* method;
WOLFSSL_CTX* ctx;

method = wolfDTLSv1_client_method();
if (method == NULL) {
    // unable to get method
}

ctx = wolfSSL_CTX_new(method);
...

function wolfDTLSv1_server_method

WOLFSSL_METHOD * wolfDTLSv1_server_method(
    void 
)

wolfDTLSv1_server_method()関数は、アプリケーションがサーバーであることを示すために使用され、DTLS 1.0プロトコルのみをサポートします。 この関数は、wolfSSL_ctx_new()を使用してSSL/TLSコンテキストを作成するときに使用される新しいWOLFSSL_METHOD構造体のメモリを割り当てて初期化します。 この関数は、WolfSSLがDTLSサポート(–enable-dtls、またはWOLFSSL_DTLSマクロを定義することによって)ビルドされている場合にのみ使用できます。

See:

Return:

  • 成功した場合、新しく作成されたWOLFSSL_METHOD構造体へのポインタを返します。
  • XMALLOCを呼び出すときにメモリ割り当てが失敗した場合、基礎となるMalloc()実装の失敗値が返されます(通常はerrnoがENOMEMに設定されます)。

Example

WOLFSSL_METHOD* method;
WOLFSSL_CTX* ctx;

method = wolfDTLSv1_server_method();
if (method == NULL) {
    // unable to get method
}

ctx = wolfSSL_CTX_new(method);
...

function wolfDTLSv1_3_server_method

WOLFSSL_METHOD * wolfDTLSv1_3_server_method(
    void 
)

wolfDTLSv1_3_server_method()関数はアプリケーションがサーバーであることを示すために使用され、DTLS 1.3プロトコルのみをサポートします。 この関数は、wolfSSL_ctx_new()を使用してSSL/TLSコンテキストを作成するときに使用される新しいWOLFSSL_METHOD構造体のメモリを割り当てて初期化します。 この関数は、WolfSSLがDTLSサポート(–enable-dtls13、またはWOLFSSL_DTLS13を定義することによって)ビルドされている場合にのみ使用できます。

Parameters:

  • なし Example
WOLFSSL_METHOD* method;
WOLFSSL_CTX* ctx;

method = wolfDTLSv1_3_server_method();
if (method == NULL) {
    // unable to get method
}

ctx = wolfSSL_CTX_new(method);
...

See: wolfDTLSv1_3_client_method

Return:

  • 成功した場合、新しく作成されたWOLFSSL_METHOD構造体へのポインタを返します。
  • XMALLOCを呼び出すときにメモリ割り当てが失敗した場合、基礎となるMalloc()実装の失敗値が返されます(通常はerrnoがENOMEMに設定されます)。

function wolfDTLSv1_3_client_method

WOLFSSL_METHOD * wolfDTLSv1_3_client_method(
    void 
)

wolfDTLSv1_3_client_method()関数はアプリケーションがクライアントであることを示すために使用され、DTLS 1.3プロトコルのみをサポートします。 この関数は、wolfSSL_ctx_new()を使用してSSL/TLSコンテキストを作成するときに使用される新しいWOLFSSL_METHOD構造体のメモリを割り当てて初期化します。 この関数は、WolfSSLがDTLSサポート(–enable-dtls13、またはWOLFSSL_DTLS13を定義することによって)ビルドされている場合にのみ使用できます。

Parameters:

  • なし

See: wolfDTLSv1_3_server_method

Return:

  • 成功した場合、新しく作成されたWOLFSSL_METHOD構造体へのポインタを返します。
  • XMALLOCを呼び出すときにメモリ割り当てが失敗した場合、基礎となるMalloc()実装の失敗値が返されます(通常はerrnoがENOMEMに設定されます)。

Example

WOLFSSL_METHOD* method;
WOLFSSL_CTX* ctx;

method = wolfDTLSv1_3_client_method();
if (method == NULL) {
    // unable to get method
}

ctx = wolfSSL_CTX_new(method);
...

function wolfDTLS_server_method

WOLFSSL_METHOD * wolfDTLS_server_method(
    void 
)

wolfDTLS_server_method()関数はアプリケーションがサーバーであることを示すために使用され、 可能な限り高いバージョン最小バージョンのDTLSプロトコルをサポートします。 デフォルトの最小バージョンはWOLFSSL_MIN_DTLS_DOWNGRADEマクロでの指定をもとにしていて、 実行時にwolfSSL_SetMinVersion()で変更することができます。 この関数は、wolfSSL_ctx_new()を使用してSSL/TLSコンテキストを作成するときに使用される新しいWOLFSSL_METHOD構造体のメモリを割り当てて初期化します。 この関数は、WolfSSLがDTLSサポート(–enable-dtls、またはWOLFSSL_DTLSを定義することによって)ビルドされている場合にのみ使用できます。

Parameters:

  • なし Example
WOLFSSL_METHOD* method;
WOLFSSL_CTX* ctx;

method = wolfDTLS_server_method();
if (method == NULL) {
    // unable to get method
}

ctx = wolfSSL_CTX_new(method);
...

See:

Return:

  • 成功した場合、新しく作成されたWOLFSSL_METHOD構造体へのポインタを返します。
  • XMALLOCを呼び出すときにメモリ割り当てが失敗した場合、基礎となるMalloc()実装の失敗値が返されます(通常はerrnoがENOMEMに設定されます)。

function wolfDTLS_client_method

WOLFSSL_METHOD * wolfDTLS_client_method(
    void 
)

wolfDTLS_client_method()関数は アプリケーションがクライアントであることを示すために使用され、 可能な限り高いバージョン最小バージョンのDTLSプロトコルをサポートします。 デフォルトの最小バージョンはWOLFSSL_MIN_DTLS_DOWNGRADEマクロでの指定をもとにしていて、 実行時にwolfSSL_SetMinVersion()で変更することができます。 この関数は、wolfSSL_ctx_new()を使用してSSL/TLSコンテキストを作成するときに使用される新しいWOLFSSL_METHOD構造体のメモリを割り当てて初期化します。 この関数は、wolfSSLがDTLSサポート(–enable-dtls、またはWOLFSSL_DTLSを定義することによって)ビルドされている場合にのみ使用できます。

Parameters:

  • なし

See:

Return:

  • 成功した場合、新しく作成されたWOLFSSL_METHOD構造体へのポインタを返します。
  • XMALLOCを呼び出すときにメモリ割り当てが失敗した場合、基礎となるMalloc()実装の失敗値が返されます(通常はerrnoがENOMEMに設定されます)。

Example

WOLFSSL_METHOD* method;
WOLFSSL_CTX* ctx;

method = wolfDTLS_client_method();
if (method == NULL) {
    // unable to get method
}

ctx = wolfSSL_CTX_new(method);
...

function wolfSSL_use_old_poly

int wolfSSL_use_old_poly(
    WOLFSSL * ssl,
    int value
)

Chacha-Poly Aead Constructionの最初のリリースと新しいバージョンの間にいくつかの違いがあるため、 古いバージョンを使用してサーバー/クライアントと通信するオプションを追加しました。 デフォルトでは、wolfSSLは新しいバージョンを使用します。

Parameters:

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

See: none

Return: 0 成功の場合に返されます。

Example

int ret = 0;
WOLFSSL* ssl;
...

ret = wolfSSL_use_old_poly(ssl, 1);
if (ret != 0) {
    // failed to set poly1305 AEAD version
}

function wolfSSL_CTX_trust_peer_cert

int wolfSSL_CTX_trust_peer_cert(
    WOLFSSL_CTX * ctx,
    const char * file,
    int type
)

この関数は、TLS/SSLハンドシェイクを実行するときにピアを検証するために使用する証明書をロードします。 ハンドシェイク中に送信されたピア証明書は、この関数で指定された証明書のSKIDと署名を比較することによって検証されます。 これら2つのことが一致しない場合は、ピア証明書の検証にはロードされたCA証明書が使用されます。 この機能はWOLFSSL_TRUST_PEER_CERTマクロを定義することで機能を有効にできます。 適切な使用法は例をご覧ください。

Parameters:

  • ctx wolfSSL_CTX_new()で生成されたWOLFSSL_CTX構造体へのポインタ。
  • file 証明書を含むファイルの名前へのポインタ

See:

Return:

  • SSL_SUCCES 成功時に返されます。
  • SSL_FAILURE CTXがNULLの場合、または両方のファイルと種類が無効な場合に返されます。
  • SSL_BAD_FILETYPE ファイルが間違った形式である場合に返されます。
  • SSL_BAD_FILE ファイルが存在しない場合に返されます。読み込め、または破損していません。
  • MEMORY_E メモリ不足状態が発生した場合に返されます。
  • ASN_INPUT_E base16デコードがファイルに対して失敗した場合に返されます。

Example

int ret = 0;
WOLFSSL_CTX* ctx = wolfSSL_CTX_new( protocol method );
...

ret = wolfSSL_CTX_trust_peer_cert(ctx, “./peer-cert.pem”,
SSL_FILETYPE_PEM);
if (ret != SSL_SUCCESS) {
    // error loading trusted peer cert
}
...

function wolfSSL_CTX_get_verify_depth

long wolfSSL_CTX_get_verify_depth(
    WOLFSSL_CTX * ctx
)

この関数は、WOLFSSL_CTX構造体構造を使用して証明書チェーン深度を取得します。

See:

Return:

  • MAX_CHAIN_DEPTH WOLFSSL_CTX構造体がNULLではない場合に返されます。最大証明書チェーンピア深度の定数表現。
  • BAD_FUNC_ARG WOLFSSL_CTX構造体がNULLの場合に返されます。

Example

WOLFSSL_METHOD method; // protocol method
WOLFSSL_CTX* ctx = WOLFSSL_CTX_new(method);
…
long ret = wolfSSL_CTX_get_verify_depth(ctx);

if(ret == EXPECTED){
    //  You have the expected value
} else {
    //  Handle an unexpected depth
}

function wolfSSL_CTX_new

WOLFSSL_CTX * wolfSSL_CTX_new(
    WOLFSSL_METHOD * 
)

この関数は、所望のSSL/TLSプロトコル用メソッド構造体を引数に取って、新しいSSLコンテキストを作成します。

See: wolfSSL_new

Return:

  • pointer 成功した場合、新しく作成されたWOLFSSL_CTX構造体へのポインタを返します。
  • NULL 失敗時に返されます。

Example

WOLFSSL_CTX*    ctx    = 0;
WOLFSSL_METHOD* method = 0;

method = wolfSSLv3_client_method();
if (method == NULL) {
    // unable to get method
}

ctx = wolfSSL_CTX_new(method);
if (ctx == NULL) {
    // context creation failed
}

function wolfSSL_new

WOLFSSL * wolfSSL_new(
    WOLFSSL_CTX * 
)

この関数はすでに作成されたSSLコンテキスト(WOLFSSL_CTX)を入力として、新しいSSLセッション(WOLFSSL)を作成します。

See: wolfSSL_CTX_new

Return:

  • 成功した場合、新しく作成されたWOLFSSL構造体へのポインタを返します。
  • NULL 失敗時に返されます。

Example

#include <wolfssl/ssl.h>

WOLFSSL*     ssl = NULL;
WOLFSSL_CTX* ctx = 0;

ctx = wolfSSL_CTX_new(method);
if (ctx == NULL) {
    // context creation failed
}

ssl = wolfSSL_new(ctx);
if (ssl == NULL) {
    // SSL object creation failed
}

function wolfSSL_set_fd

int wolfSSL_set_fd(
    WOLFSSL * ssl,
    int fd
)

この関数は、SSL接続の入出力機能としてファイル記述子(fd)を割り当てます。通常これはソケットファイル記述子になります。

Parameters:

  • ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ
  • fd SSL/TLS接続に使用するファイルディスクリプタ

See:

Return:

  • SSL_SUCCESS 成功時に返されます。
  • BAD_FUNC_ARG 失敗時に返されます。

Example

int sockfd;
WOLFSSL* ssl = 0;
...

ret = wolfSSL_set_fd(ssl, sockfd);
if (ret != SSL_SUCCESS) {
    // failed to set SSL file descriptor
}

function wolfSSL_set_dtls_fd_connected

int wolfSSL_set_dtls_fd_connected(
    WOLFSSL * ssl,
    int fd
)

この関数はファイルディスクリプタ(fd)をSSLコネクションの入出力手段として設定します。 通常はソケットファイルディスクリプタが指定されます。この関数はDTLS専用のAPIであり、ソケットは接続済みとマークされます。 したがって、与えられたfdに対するrecvfromとsendto呼び出しでのaddrとaddr_lenはNULLに設定されます。

Parameters:

  • ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ
  • fd SSL/TLSコネクションに使用するファイルディスクリプタ。

See:

Return:

  • SSL_SUCCESS 成功時に返されます。
  • BAD_FUNC_ARG 失敗時に返されます。

Example

int sockfd;
WOLFSSL* ssl = 0;
...
if (connect(sockfd, peer_addr, peer_addr_len) != 0) {
    // handle connect error
}
...
ret = wolfSSL_set_dtls_fd_connected(ssl, sockfd);
if (ret != SSL_SUCCESS) {
    // failed to set SSL file descriptor
}

function wolfDTLS_SetChGoodCb

int wolfDTLS_SetChGoodCb(
    WOLFSSL * ssl,
    ClientHelloGoodCb cb,
    void * user_ctx
)

この関数はDTLS ClientHelloメッセージが正しく処理できた際に呼び出されるコールバック関数を設定します。 クッキー交換メカニズムを使用する場合(DTLS1.2のHelloVerifyRequest か DTLS1.3のクッキー拡張を伴ったHelloRetryRequestのいずれかを使用する場合)には、 クッキー交換が成功した時点でこのコールバック関数が呼び出されます。 この機能はひとつのWOLFSSLオブジェクトを新たな接続を待ち受けるリスナーとして使い, ClientHelloが検証されたWOLFSSLオブジェクトから絶縁させることができます。 この場合の検証はクッキー交換かClientHelloが正しいフォーマットになっているかのチェックによってなされます。

Parameters:

  • ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ
  • fd SSL/TLSコネクションに使用するファイルディスクリプタ。

See: wolfSSL_set_dtls_fd_connected

Return:

  • SSL_SUCCESS 成功時に返されます。
  • BAD_FUNC_ARG 失敗時に返されます。

DTLS 1.2: https://datatracker.ietf.org/doc/html/rfc6347#section-4.2.1 DTLS 1.3: https://www.rfc-editor.org/rfc/rfc8446#section-4.2.2

Example

// Called when we have verified a connection
static int chGoodCb(WOLFSSL* ssl, void* arg)
{
    // setup peer and file descriptors

}

if (wolfDTLS_SetChGoodCb(ssl, chGoodCb, NULL) != WOLFSSL_SUCCESS) {
     // error setting callback
}

function wolfSSL_set_using_nonblock

void wolfSSL_set_using_nonblock(
    WOLFSSL * ssl,
    int nonblock
)

この関数は、WOLFSSLオブジェクトに基礎となるI/Oがノンブロックであることを通知します。 アプリケーションがWOLFSSLオブジェクトを作成した後、ブロッキング以外のソケットで使用する場合は、 wolfssl_set_using_nonblock()を呼び出します。 これにより、wolfsslオブジェクトは、EWOULDBLOCKを受信することを意味します。

Parameters:

  • ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ
  • nonblock WOLFSSLオブジェクトにノンブロッキングI/Oを使用することを通知するフラグ。 1を指定することでノンブロッキングI/Oを使用することを指定する。

See:

Return: なし

Example

WOLFSSL* ssl = 0;
...
wolfSSL_set_using_nonblock(ssl, 1);

function wolfSSL_CTX_free

void wolfSSL_CTX_free(
    WOLFSSL_CTX * 
)

この関数は、割り当てられたWOLFSSL_CTXオブジェクトを解放します。 この関数はCTX参照数を減らし、参照カウントが0に達したときにのみコンテキストを解放します。

Parameters:

  • ctx wolfSSL_CTX_new()を使用して作成されたWOLFSSL_CTX構造体へのポインタ

See:

Return: なし

Example

WOLFSSL_CTX* ctx = 0;
...
wolfSSL_CTX_free(ctx);

function wolfSSL_free

void wolfSSL_free(
    WOLFSSL * 
)

この関数は割り当てられたWOLFSSLオブジェクトを解放します。

Parameters:

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

See:

Return: なし

Example

#include <wolfssl/ssl.h>

WOLFSSL* ssl = 0;
...
wolfSSL_free(ssl);

function wolfSSL_set_session

int wolfSSL_set_session(
    WOLFSSL * ssl,
    WOLFSSL_SESSION * session
)

この関数は、SSLオブジェクトSSLがSSL/TLS接続を確立する目的で使用するセッションを設定します。 セッション再開を行う場合、wolfSSL_shutdown()を呼び出す前にwolfSSL_get1_session()を呼び出してセッションオブジェクトを取得し、セッションIDを保存しておく必要があります。 後で、アプリケーションは新しいWOLFSSLオブジェクトを作成し、保存したセッションをwolfSSL_set_session()に渡す必要があります。 その後アプリケーションはwolfSSL_connect()を呼び出し、wolfSSLはセッション再開を試みます。 wolfSSLサーバーコードでは、デフォルトでセッション再開を許可します。 wolfSSL_get1_session()によって返されたオブジェクトは、アプリケーションが使用後に解放する必要があります。

Parameters:

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

See: wolfSSL_get1_session

Return:

  • SSL_SUCCESS セッションを正常に設定すると返されます。
  • SSL_FAILURE 失敗した場合に返されます。これはセッションキャッシュが無効になっている、またはセッションがタイムアウトした場合によって発生する可能性があります。
  • OPENSSL_EXTRAとWOLFSSL_ERROR_CODE_OPENSSLが定義されている場合には、セッションがタイムアウトしていてもSSL_SUCCESSが返されます。

Example

int ret;
WOLFSSL* ssl;
WOLFSSL_SESSION* session;
...
session = wolfSSL_get1_session(ssl);
if (session == NULL) {
    // failed to get session object from ssl object
}
...
ret = wolfSSL_set_session(ssl, session);
if (ret != SSL_SUCCESS) {
    // failed to set the SSL session
}
wolfSSL_SESSION_free(session);
...

function wolfSSL_CTX_set_verify

void wolfSSL_CTX_set_verify(
    WOLFSSL_CTX * ctx,
    int mode,
    VerifyCallback verify_callback
)

この関数はリモートピアの検証方法を設定し、また証明書検証コールバック関数をSSLコンテキストに登録することもできます。 検証コールバックは、検証障害が発生した場合にのみ呼び出されます。 検証コールバックが必要な場合は、NULLポインタをverify_callbackに使用できます。 ピア証明書の検証モードは、論理的またはフラグのリストです。 可能なフラグ値は次のとおりです: SSL_VERIFY_NONE -クライアントモード:クライアントはサーバーから受信した証明書を検証せず、ハンドシェイクは通常どおり続きます。 -サーバーモード:サーバーはクライアントに証明書要求を送信しません。そのため、クライアント検証は有効になりません。 SSL_VERIFY_PEER -クライアントモード:クライアントはハンドシェイク中にサーバーから受信した証明書を検証します。これはwolfSSLではデフォルトでオンにされます。したがって、このオプションを使用すると効果がありません。 -サーバーモード:サーバーは証明書要求をクライアントに送信し、受信したクライアント証明書を確認します。 SSL_VERIFY_FAIL_IF_NO_PEER_CERT -クライアントモード:クライアント側で使用されていない場合は効果がありません。 -サーバーモード:要求されたときにクライアントが証明書の送信に失敗した場合は、サーバー側で検証が失敗します(SSLサーバーのSSL_VERIFY_PEERを使用する場合)。 SSL_VERIFY_FAIL_EXCEPT_PSK -クライアントモード:クライアント側で使用されていない場合は効果がありません。 -サーバーモード:PSK接続の場合を除き、検証はSSL_VERIFY_FAIL_IF_NO_PEER_CERTと同じです。 PSK接続が行われている場合、接続はピア証明書なしで通過します。

Parameters:

  • ctx wolfSSL_CTX_new()で作成されたSSLコンテキストへのポインタ。
  • mode ピアの証明書をどのように検証するかを示すフラグ値
  • verify_callback 証明書検証が失敗した際に呼び出されるコールバック関数。必要がないならNULLを指定すること。

See: wolfSSL_set_verify

Return: なし

Example

WOLFSSL_CTX*    ctx    = 0;
...
wolfSSL_CTX_set_verify(ctx, (WOLFSSL_VERIFY_PEER |
                       WOLFSSL_VERIFY_FAIL_IF_NO_PEER_CERT), NULL);

function wolfSSL_set_verify

void wolfSSL_set_verify(
    WOLFSSL * ssl,
    int mode,
    VerifyCallback verify_callback
)

この関数はリモートピアの検証方法を設定し、また証明書検証コールバック関数をWOLFSSLオブジェクトに登録することもできます。 検証コールバックは、検証障害が発生した場合にのみ呼び出されます。 検証コールバックが必要な場合は、NULLポインタをverify_callbackに使用できます。 ピア証明書の検証モードは、論理的またはフラグのリストです。 可能なフラグ値は次のとおりです: SSL_VERIFY_NONE -クライアントモード:クライアントはサーバーから受信した証明書を検証せず、ハンドシェイクは通常どおり続きます。 -サーバーモード:サーバーはクライアントに証明書要求を送信しません。そのため、クライアント検証は有効になりません。 SSL_VERIFY_PEER -クライアントモード:クライアントはハンドシェイク中にサーバーから受信した証明書を検証します。これはwolfSSLではデフォルトでオンにされます。したがって、このオプションを使用すると効果がありません。 -サーバーモード:サーバーは証明書要求をクライアントに送信し、受信したクライアント証明書を確認します。 SSL_VERIFY_FAIL_IF_NO_PEER_CERT -クライアントモード:クライアント側で使用されていない場合は効果がありません。 -サーバーモード:要求されたときにクライアントが証明書の送信に失敗した場合は、サーバー側で検証が失敗します(SSLサーバーのSSL_VERIFY_PEERを使用する場合)。 SSL_VERIFY_FAIL_EXCEPT_PSK -クライアントモード:クライアント側で使用されていない場合は効果がありません。 -サーバーモード:PSK接続の場合を除き、検証はSSL_VERIFY_FAIL_IF_NO_PEER_CERTと同じです。 PSK接続が行われている場合、接続はピア証明書なしで通過します。

Parameters:

  • ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ
  • mode ピアの証明書をどのように検証するかを示すフラグ値
  • verify_callback 証明書検証が失敗した際に呼び出されるコールバック関数。必要がないならNULLを指定すること。

See: wolfSSL_CTX_set_verify

Return: なし

Example

WOLFSSL* ssl = 0;
...
wolfSSL_set_verify(ssl, SSL_VERIFY_PEER | SSL_VERIFY_FAIL_IF_NO_PEER_CERT, 0);

function wolfSSL_CTX_set_session_cache_mode

long wolfSSL_CTX_set_session_cache_mode(
    WOLFSSL_CTX * ctx,
    long mode
)

この関数はSSLセッションキャッシュ機能を有効または無効にします。 動作はモードに使用される値によって異なります。 モードの値は次のとおりです: SSL_SESS_CACHE_OFF - セッションキャッシングを無効にします。デフォルトでセッションキャッシングがオンになっています。 SSL_SESS_CACHE_NO_AUTO_CLEAR - セッションキャッシュのオートフラッシュを無効にします。デフォルトで自動フラッシングはオンになっています。

Parameters:

  • ctx wolfSSL_CTX_new()で作成されたSSLコンテキストへのポインタ。
  • mode セッションキャッシュの振る舞いを変更する為に使用します。

See:

Return: SSL_SUCCESS 成功に戻ります。

Example

WOLFSSL_CTX* ctx = 0;
...
ret = wolfSSL_CTX_set_session_cache_mode(ctx, SSL_SESS_CACHE_OFF);
if (ret != SSL_SUCCESS) {
    // failed to turn SSL session caching off
}

function wolfSSL_CTX_memrestore_cert_cache

int wolfSSL_CTX_memrestore_cert_cache(
    WOLFSSL_CTX * ctx,
    const void * mem,
    int sz
)

この関数は証明書キャッシュをメモリから復元します。

Parameters:

  • ctx wolfSSL_CTX_new()を使用して作成されたWOLFSSL_CTX構造体へのポインタ。
  • mem 証明書キャッシュに復元される値を保持しているバッファへのポインタ。
  • sz バッファのサイズ

See: CM_MemRestoreCertCache

Return:

  • SSL_SUCCESS 関数とサブルーチンがエラーなしで実行された場合に返されます。
  • BAD_FUNC_ARG CTXまたはMEMパラメータがNULLまたはSZパラメータがゼロ以下の場合に返されます。
  • BUFFER_E CERTキャッシュメモリバッファが小さすぎると戻ります。
  • CACHE_MATCH_ERROR CERTキャッシュヘッダーの不一致があった場合に返されます。
  • BAD_MUTEX_E ロックミューテックスが失敗した場合に返されます。

Example

WOLFSSL_CTX* ctx = WOLFSSL_CTX_new( protocol method );
WOLFSSL* ssl = WOLFSSL_new(ctx);
void* mem;
int sz = (*int) sizeof(mem);
…
if(wolfSSL_CTX_memrestore_cert_cache(ssl->ctx, mem, sz)){
    // The success case
}

function wolfSSL_CTX_set_cipher_list

int wolfSSL_CTX_set_cipher_list(
    WOLFSSL_CTX * ctx,
    const char * list
)

この関数は、与えられたWOLFSSL_CTXに暗号スイートリストを設定します。 この暗号スイートリストは、このコンテキストを使用して作成された新しいSSLセッション(WolfSSL)のデフォルトリストになります。 リスト内の暗号は、優先度の高いものの順に順にソートされるべきです。 wolfSSL_CTX_set_cipher_list()が呼び出される都度、特定のSSLコンテキストの暗号スイートリストを提供されたリストにリセットします。 暗号スイートリストはヌル終端されたコロン区切りリストです。 たとえば、リストの値が「DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:AES256-SHA256」有効な暗号値は、src/internal.cのcipher_names []配列のフルネーム値です。 (有効な暗号化値の明確なリストの場合はsrc/internal.cをチェックしてください)

Parameters:

  • ctx wolfSSL_CTX_new()で作成されたSSLコンテキストへのポインタ。
  • list ヌル終端されたコロン区切りの暗号スイートリスト文字列へのポインタ。

See:

Return:

  • SSL_SUCCESS 成功時に返されます。
  • SSL_FAILURE 失敗した場合に返されます。

Example

WOLFSSL_CTX* ctx = 0;
...
ret = wolfSSL_CTX_set_cipher_list(ctx,
“DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:AES256-SHA256”);
if (ret != SSL_SUCCESS) {
    // failed to set cipher suite list
}

function wolfSSL_set_cipher_list

int wolfSSL_set_cipher_list(
    WOLFSSL * ssl,
    const char * list
)

この関数は、特定のWolfSSLオブジェクト(SSLセッション)の暗号スイートリストを設定します。 この暗号スイートリストは、このコンテキストを使用して作成された新しいSSLセッション(WolfSSL)のデフォルトリストになります。 リスト内の暗号は、優先度の高いものの順に順にソートされるべきです。 wolfSSL_CTX_set_cipher_list()が呼び出される都度、特定のSSLコンテキストの暗号スイートリストを提供されたリストにリセットします。 暗号スイートリストはヌル終端されたコロン区切りリストです。 たとえば、リストの値が「DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:AES256-SHA256」有効な暗号値は、src/internal.cのcipher_names []配列のフルネーム値です。 (有効な暗号化値の明確なリストの場合はsrc/internal.cをチェックしてください)

Parameters:

  • ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ
  • list ヌル終端されたコロン区切りの暗号スイートリスト文字列へのポインタ。

See:

Return:

  • SSL_SUCCESS 機能完了に成功したときに返されます。
  • SSL_FAILURE 失敗した場合に返されます。

Example

int ret = 0;
WOLFSSL* ssl = 0;
...
ret = wolfSSL_set_cipher_list(ssl,
“DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:AES256-SHA256”);
if (ret != SSL_SUCCESS) {
    // failed to set cipher suite list
}

function wolfSSL_dtls13_set_send_more_acks

void wolfSSL_dtls13_set_send_more_acks(
    WOLFSSL * ssl,
    int value
)

この関数は、ライブラリが中断を検出したときにすぐに他のピアにACKを送信するかどうかを設定します。 ACKをすぐに送信すると、遅延は最小限に抑えられますが、必要以上に多くの帯域幅が消費される可能性があります。 アプリケーションが独自にタイマーを管理しており、このオプションが0に設定されている場合、 アプリケーションコードはwolfSSL_dtls13_use_quick_timeout()を使用して、 遅延したACKを送信するためにより速いタイムアウトを設定する必要があるかどうかを判断できます。

Parameters:

  • ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ
  • value 設定を行う場合には1を行わない場合には0を設定します。

See:

function wolfSSL_dtls_set_timeout_init

int wolfSSL_dtls_set_timeout_init(
    WOLFSSL * ssl,
    int 
)

この関数はDTLSタイムアウトを設定します。

Parameters:

  • ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ
  • value タイムアウトオプションを有効にする場合には1を指定し、無効にする場合には0を指定します。

See:

Return:

  • SSL_SUCCESS 関数がエラーなしで実行された場合に返されます。SSLのDTLS_TIMEOUT_INITとDTLS_TIMEOUTメンバーが設定されています。
  • BAD_FUNC_ARG 引数sslがNULLの場合、またはタイムアウトが0以下の場合に返されます。タイムアウト引数が許可されている最大値を超えている場合にも返されます。

Example

WOLFSSL_CTX* ctx = wolfSSL_CTX_new( method );
WOLFSSL* ssl = wolfSSL_new(ctx);
int timeout = TIMEOUT;
...
if(wolfSSL_dtls_set_timeout_init(ssl, timeout)){
    // the dtls timeout was set
} else {
    // Failed to set DTLS timeout.
}

function wolfSSL_get1_session

WOLFSSL_SESSION * wolfSSL_get1_session(
    WOLFSSL * ssl
)

この関数は、WOLFSSL構造体からWOLFSSL_SESSIONを参照型として返します。 これには、wolfSSL_SESSION_freeを呼び出してセッション参照を解除する必要があります。 WOLFSSL_SESSIONは、セッションの再開を実行するために必要なすべての必要な情報を含み、新しいハンドシェイクなしで接続を再確立します。 セッションの再開の場合、wolfSSL_shutdown()をセッションオブジェクトに呼び出す前に、アプリケーションはオブジェクトからwolfssl_get1_session()を呼び出して保存する必要があります。 これはセッションへのポインタを返します。 その後、アプリケーションは新しいWOLFSSLオブジェクトを作成し、保存したセッションをwolfssl_set_session()に割り当てる必要があります。 この時点で、アプリケーションはwolfssl_connect()を呼び出し、WolfSSLはセッションを再開しようとします。 WolfSSLサーバーコードでは、デフォルトでセッションの再開を許可します。 wolfssl_get1_session()によって返されたオブジェクトは、アプリケーションが使用後は解放される必要があります。

Parameters:

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

See:

Return:

  • WOLFSSL_SESSION 成功の場合はセッションポインタを返します。
  • NULL sslがNULLの場合、SSLセッションキャッシュが無効になっている場合、WolfSSLはセッションIDを使用できない、またはミューテックス関数が失敗します。

Example

WOLFSSL* ssl;
WOLFSSL_SESSION* ses;
// attempt/complete handshake
wolfSSL_connect(ssl);
ses  = wolfSSL_get1_session(ssl);
// check ses information
// disconnect / setup new SSL instance
wolfSSL_set_session(ssl, ses);
// attempt/resume handshake
wolfSSL_SESSION_free(ses);

function wolfSSLv23_client_method

WOLFSSL_METHOD * wolfSSLv23_client_method(
    void 
)

wolfsslv23_client_method()関数は、アプリケーションがクライアントであることを示すために使用され、SSL 3.0~TLS 1.3の間でサーバーでサポートされている最高のプロトコルバージョンをサポートします。この関数は、wolfSSL_CTX_new()を使用してSSL / TLSコンテキストを作成するときに使用される新しいWolfssl_method構造体のメモリを割り当てて初期化します。WolfSSLクライアントとサーバーの両方が堅牢なバージョンのダウングレード機能を持っています。特定のプロトコルバージョンメソッドがどちらの側で使用されている場合は、そのバージョンのみがネゴシエートされたり、エラーが返されます。たとえば、TLSV1を使用し、SSLv3のみに接続しようとするクライアントは、TLSV1.1に接続しても失敗します。この問題を解決するために、wolfsslv23_client_method()関数を使用するクライアントは、サーバーでサポートされている最高のプロトコルバージョンを使用し、必要に応じてSSLv3にダウングレードします。この場合、クライアントはSSLv3 - TLSv1.3を実行しているサーバーに接続できるようになります。

See:

Return:

  • pointer 成功すると、wolfssl_methodへのポインタが返されます。
  • Failure xmallocを呼び出すときにメモリ割り当てが失敗した場合、基礎となるMalloc()実装の失敗値が返されます(通常はerrnoがENOMEMに設定されます)。

Example

WOLFSSL_METHOD* method;
WOLFSSL_CTX* ctx;
method = wolfSSLv23_client_method();
if (method == NULL) {
// unable to get method
}

ctx = wolfSSL_CTX_new(method);
...

function wolfSSL_ASN1_INTEGER_to_BN

WOLFSSL_BIGNUM * wolfSSL_ASN1_INTEGER_to_BN(
    const WOLFSSL_ASN1_INTEGER * ai,
    WOLFSSL_BIGNUM * bn
)

この関数は、WOLFSSL_ASN1_INTEGER値をWOLFSSL_BIGNUM構造体にコピーするために使用されます。

Parameters:

  • ai WOLFSSL_ASN1_INTEGER構造体へのポインタ
  • bn もし、既存のWOLFSSL_BIGNUM構造体にコピーしたい場合そのポインタをこの引数で指定します。 NULLを指定すると新たにWOLFSSL_BIGNUM構造体が生成されて使用されます。

See: none

Return:

  • pointer WOLFSSL_ASN1_INTEGER値を正常にコピーすると、WOLFSSL_BIGNUMポインタが返されます。
  • Null 失敗時に返されます。

Example

WOLFSSL_ASN1_INTEGER* ai;
WOLFSSL_BIGNUM* bn;
// create ai
bn = wolfSSL_ASN1_INTEGER_to_BN(ai, NULL);

// or if having already created bn and wanting to reuse structure
// wolfSSL_ASN1_INTEGER_to_BN(ai, bn);
// check bn is or return value is not NULL

function wolfSSL_CTX_add_extra_chain_cert

long wolfSSL_CTX_add_extra_chain_cert(
    WOLFSSL_CTX * ctx,
    WOLFSSL_X509 * x509
)

この関数は、WOLFSSL_CTX構造で構築されている内部チェーンに証明書を追加します。

Parameters:

  • ctx 証明書を追加するためのWOLFSSL_CTX構造。
  • x509 WOLFSSL_X509構造体へのポインタ。

See:

Return:

  • SSL_SUCCESS 証明書の追加に成功したら。
  • SSL_FAILURE チェーンに証明書を追加することが失敗した場合。

Example

WOLFSSL_CTX* ctx;
WOLFSSL_X509* x509;
int ret;
// create ctx
ret = wolfSSL_CTX_add_extra_chain_cert(ctx, x509);
// check ret value

function wolfSSL_CTX_get_read_ahead

int wolfSSL_CTX_get_read_ahead(
    WOLFSSL_CTX * ctx
)

この関数は、WOLFSSL_CTX構造からGet Read Hapeフラグを返します。

Parameters:

  • ctx WOLFSSL_CTX構造体へのポインタ

See:

Return:

  • flag 成功すると、読み取り先のフラグを返します。
  • SSL_FAILURE ctxがnullの場合、ssl_failureが返されます。

Example

WOLFSSL_CTX* ctx;
int flag;
// setup ctx
flag = wolfSSL_CTX_get_read_ahead(ctx);
//check flag

function wolfSSL_CTX_set_read_ahead

int wolfSSL_CTX_set_read_ahead(
    WOLFSSL_CTX * ctx,
    int v
)

この関数は、WOLFSSL_CTX構造内の読み出し先のフラグを設定します。

Parameters:

  • ctx WOLFSSL_CTX構造体へのポインタ
  • v 先読みフラグ

See:

Return:

  • SSL_SUCCESS ctxが先読みフラグを設定した場合。
  • SSL_FAILURE ctxがNULLの場合に返されます。

Example

WOLFSSL_CTX* ctx;
int flag;
int ret;
// setup ctx
ret = wolfSSL_CTX_set_read_ahead(ctx, flag);
// check return value

function wolfSSL_CTX_set_tlsext_status_arg

long wolfSSL_CTX_set_tlsext_status_arg(
    WOLFSSL_CTX * ctx,
    void * arg
)

この関数はOCSPで使用するオプション引数を設定します。

Parameters:

  • ctx WOLFSSL_CTX構造へのポインタ
  • arg ユーザー引数

See:

Return:

  • SSL_FAILURE CTXまたはITのCERT ManagerがNULLの場合。
  • SSL_SUCCESS 正常に設定されている場合。

Example

WOLFSSL_CTX* ctx;
void* data;
int ret;
// setup ctx
ret = wolfSSL_CTX_set_tlsext_status_arg(ctx, data);

//check ret value

function wolfSSL_CTX_set_tlsext_opaque_prf_input_callback_arg

long wolfSSL_CTX_set_tlsext_opaque_prf_input_callback_arg(
    WOLFSSL_CTX * ctx,
    void * arg
)

この関数は、PRFコールバックに渡すオプションの引数を設定します。

Parameters:

  • ctx WOLFSSL_CTX構造へのポインタ
  • arg ユーザー引数

See:

Return:

  • SSL_FAILURE CTXがNULLの場合
  • SSL_SUCCESS 正常に設定されている場合。

Example

WOLFSSL_CTX* ctx;
void* data;
int ret;
// setup ctx
ret = wolfSSL_CTX_set_tlsext_opaques_prf_input_callback_arg(ctx, data);
//check ret value

function wolfSSL_set_options

long wolfSSL_set_options(
    WOLFSSL * s,
    long op
)

この関数は、SSLのオプションマスクを設定します。 いくつかの有効なオプションは、ssl_op_all、ssl_op_cookie_exchange、ssl_op_no_sslv2、ssl_op_no_sslv3、ssl_op_no_tlsv1_1、ssl_op_no_tlsv1_2、ssl_op_no_compressionです。

Parameters:

  • s オプションマスクを設定するためのWolfSSL構造。
  • op オプションマスク。以下の値が指定可能です:

SSL_OP_ALL

SSL_OP_COOKIE_EXCHANGE

SSL_OP_NO_SSLv2

SSL_OP_NO_SSLv3

SSL_OP_NO_TLSv1

SSL_OP_NO_TLSv1_1

SSL_OP_NO_TLSv1_2

SSL_OP_NO_COMPRESSION

See:

Return: val SSLに格納されている更新されたオプションマスク値を返します。

Example

WOLFSSL* ssl;
unsigned long mask;
mask = SSL_OP_NO_TLSv1
mask  = wolfSSL_set_options(ssl, mask);
// check mask

function wolfSSL_get_options

long wolfSSL_get_options(
    const WOLFSSL * ssl
)

この関数は現在のオプションマスクを返します。

Parameters:

  • ssl WOLFSSL構造体へのポインタ

See:

Return: val SSLに格納されているマスク値を返します。

Example

WOLFSSL* ssl;
unsigned long mask;
mask  = wolfSSL_get_options(ssl);
// check mask

function wolfSSL_set_tlsext_debug_arg

long wolfSSL_set_tlsext_debug_arg(
    WOLFSSL * ssl,
    void * arg
)

この関数は、渡されたデバッグ引数を設定するために使用されます。

Parameters:

  • ssl 引数を設定するためのWolfSSL構造。
  • arg デバッグ引数

See:

Return:

  • SSL_SUCCESS 成功時に返されます。
  • SSL_FAILURE NULL SSLが渡された場合。

Example

WOLFSSL* ssl;
void* args;
int ret;
// create ssl object
ret  = wolfSSL_set_tlsext_debug_arg(ssl, args);
// check ret value

function wolfSSL_get_verify_result

long wolfSSL_get_verify_result(
    const WOLFSSL * ssl
)

Parameters:

  • ssl WOLFSSL 構造体へのポインタ

See:

Return:

  • X509_V_OK 成功した検証について
  • SSL_FAILURE NULL SSLが渡された場合。

\bri f この関数は、れは、ピアの証明書を確認しようとした後に結果を取得するために使用されます。 Example

WOLFSSL* ssl;
long ret;
// attempt/complete handshake
ret  = wolfSSL_get_verify_result(ssl);
// check ret value

function wolfSSL_CTX_allow_anon_cipher

int wolfSSL_CTX_allow_anon_cipher(
    WOLFSSL_CTX * 
)

この機能により、CTX構造のHAVAnonメンバーがコンパイル中に定義されている場合は、CTX構造のHABANONメンバーを有効にします。

See: none

Return:

  • SSL_SUCCESS 機能が正常に実行され、CTXのHaveannonメンバーが1に設定されている場合に返されます。
  • SSL_FAILURE CTX構造がNULLの場合に返されます。

Example

WOLFSSL_CTX* ctx = wolfSSL_CTX_new( protocol method );
WOLFSSL* ssl = wolfSSL_new(ctx);
...
#ifdef HAVE_ANON
if(cipherList == NULL){
    wolfSSL_CTX_allow_anon_cipher(ctx);
    if(wolfSSL_CTX_set_cipher_list(ctx, “ADH_AES128_SHA”) != SSL_SUCCESS){
        // failure case
    }
}
#endif

function wolfSSLv23_server_method

WOLFSSL_METHOD * wolfSSLv23_server_method(
    void 
)

wolfsslv23_server_method()関数は、アプリケーションがサーバーであることを示すために使用され、SSL 3.0 - TLS 1.3からプロトコルバージョンと接続するクライアントをサポートします。この関数は、wolfSSL_CTX_new()を使用してSSL / TLSコンテキストを作成するときに使用される新しいWolfssl_method構造体のメモリを割り当てて初期化します。

See:

Return:

  • pointer 成功した場合、呼び出しは新しく作成されたwolfssl_method構造へのポインタを返します。
  • Failure xmallocを呼び出すときにメモリ割り当てが失敗した場合、基礎となるMalloc()実装の失敗値が返されます(通常はerrnoがenomeemに設定されます)。

Example

WOLFSSL_METHOD* method;
WOLFSSL_CTX* ctx;

method = wolfSSLv23_server_method();
if (method == NULL) {
    // unable to get method
}

ctx = wolfSSL_CTX_new(method);
...

function wolfSSL_state

int wolfSSL_state(
    WOLFSSL * ssl
)

See:

Return:

  • wolfssl_error SSLエラー状態、通常はマイナスを返します
  • BAD_FUNC_ARG sslがNULLの場合

\bri f この関数は、れは、WolfSSL構造体の内部エラー状態を取得するために使用されます。 Example

WOLFSSL* ssl;
int ret;
// create ssl object
ret  = wolfSSL_state(ssl);
// check ret value

function wolfSSL_check_domain_name

int wolfSSL_check_domain_name(
    WOLFSSL * ssl,
    const char * dn
)

wolfsslデフォルトでは、有効な日付範囲と検証済みの署名のためにピア証明書をチェックします。wolfssl_connect()またはwolfssl_accept()の前にこの関数を呼び出すと、実行するチェックのリストにドメイン名チェックが追加されます。DN受信時にピア証明書を確認するためのドメイン名を保持します。

Parameters:

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

See: none

Return:

  • SSL_SUCCESS 成功時に返されます。
  • SSL_FAILURE メモリエラーが発生した場合に返されます。

Example

int ret = 0;
WOLFSSL* ssl;
char* domain = (char*) “www.yassl.com”;
...

ret = wolfSSL_check_domain_name(ssl, domain);
if (ret != SSL_SUCCESS) {
   // failed to enable domain name check
}

function wolfSSL_set_compression

int wolfSSL_set_compression(
    WOLFSSL * ssl
)

SSL接続に圧縮を使用する機能をオンにします。両側には圧縮がオンになっている必要があります。そうでなければ圧縮は使用されません。ZLIBライブラリは実際のデータ圧縮を実行します。ライブラリにコンパイルするには、システムの設定システムに–with-libzを使用し、そうでない場合はhand_libzを定義します。送受信されるメッセージの実際のサイズを減らす前にデータを圧縮している間に、圧縮によって保存されたデータの量は通常、ネットワークの遅いすべてのネットワークを除いたものよりも分析に時間がかかります。

See: none

Return:

  • SSL_SUCCESS 成功時に返されます。
  • NOT_COMPILED_IN 圧縮サポートがライブラリに組み込まれていない場合に返されます。

Example

int ret = 0;
WOLFSSL* ssl = 0;
...
ret = wolfSSL_set_compression(ssl);
if (ret == SSL_SUCCESS) {
    // successfully enabled compression for SSL session
}

function wolfSSL_set_timeout

int wolfSSL_set_timeout(
    WOLFSSL * ssl,
    unsigned int to
)

この関数はSSLセッションタイムアウト値を秒単位で設定します。

Parameters:

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

See:

Return:

  • SSL_SUCCESS セッションを正常に設定すると返されます。
  • BAD_FUNC_ARG sslがNULLの場合に返されます。

Example

int ret = 0;
WOLFSSL* ssl = 0;
...

ret = wolfSSL_set_timeout(ssl, 500);
if (ret != SSL_SUCCESS) {
    // failed to set session timeout value
}
...

function wolfSSL_CTX_set_timeout

int wolfSSL_CTX_set_timeout(
    WOLFSSL_CTX * ctx,
    unsigned int to
)

この関数は、指定されたSSLコンテキストに対して、SSLセッションのタイムアウト値を秒単位で設定します。

Parameters:

See:

Return:

  • the wolfssl_error_code_opensslの場合、以前のタイムアウト値
  • defined 成功しています。定義されていない場合、SSL_SUCCESSは返されます。
  • BAD_FUNC_ARG 入力コンテキスト(CTX)がNULLのときに返されます。

Example

WOLFSSL_CTX*    ctx    = 0;
...
ret = wolfSSL_CTX_set_timeout(ctx, 500);
if (ret != SSL_SUCCESS) {
    // failed to set session timeout value
}

function wolfSSL_CTX_UnloadCAs

int wolfSSL_CTX_UnloadCAs(
    WOLFSSL_CTX * 
)

この関数はCA署名者リストをアンロードし、署名者全体のテーブルを解放します。

See:

Return:

  • SSL_SUCCESS 機能の実行に成功したことに戻ります。
  • BAD_FUNC_ARG WOLFSSL_CTX構造体がnullの場合、または他の方法では未解決の引数値がサブルーチンに渡された場合に返されます。
  • BAD_MUTEX_E ミューテックスエラーが発生した場合に返されます。lockmutex()は0を返しませんでした。

Example

WOLFSSL_METHOD method = wolfTLSv1_2_client_method();
WOLFSSL_CTX* ctx = wolfSSL_CTX_new(method);
…
if(!wolfSSL_CTX_UnloadCAs(ctx)){
    // The function did not unload CAs
}

function wolfSSL_CTX_Unload_trust_peers

int wolfSSL_CTX_Unload_trust_peers(
    WOLFSSL_CTX * 
)

この関数は、以前にロードされたすべての信頼できるピア証明書をアンロードするために使用されます。マクロwolfssl_trust_peer_certを定義することで機能が有効になっています。

See:

Return:

  • SSL_SUCCESS 成功時に返されます。
  • BAD_FUNC_ARG CTXがNULLの場合に返されます。
  • SSL_BAD_FILE ファイルが存在しない場合に返されます。読み込め、または破損していません。
  • MEMORY_E メモリ不足状態が発生した場合に返されます。

Example

int ret = 0;
WOLFSSL_CTX* ctx;
...
ret = wolfSSL_CTX_Unload_trust_peers(ctx);
if (ret != SSL_SUCCESS) {
    // error unloading trusted peer certs
}
...

function wolfSSL_CTX_trust_peer_buffer

int wolfSSL_CTX_trust_peer_buffer(
    WOLFSSL_CTX * ctx,
    const unsigned char * in,
    long sz,
    int format
)

この関数は、TLS / SSLハンドシェイクを実行するときにピアを検証するために使用する証明書をロードします。ハンドシェイク中に送信されたピア証明書は、使用可能なときにスキッドを使用することによって比較されます。これら2つのことが一致しない場合は、ロードされたCASが使用されます。ファイルの代わりにバッファーの場合は、wolfssl_ctx_trust_peer_certと同じ機能です。特徴はマクロwolfssl_trust_peer_certを定義することによって有効になっています適切な使用法の例を参照してください。

Parameters:

  • ctx wolfSSL_CTX_new()で作成されたSSLコンテキストへのポインタ。
  • buffer 証明書を含むバッファへのポインタ。
  • sz バッファ入力の長さ。

See:

Return:

  • SSL_SUCCESS 成功すると
  • SSL_FAILURE CTXがNULLの場合、または両方のファイルと種類が無効な場合に返されます。
  • SSL_BAD_FILETYPE ファイルが間違った形式である場合に返されます。
  • SSL_BAD_FILE ファイルが存在しない場合に返されます。読み込め、または破損していません。
  • MEMORY_E メモリ不足状態が発生した場合に返されます。
  • ASN_INPUT_E base16デコードがファイルに対して失敗した場合に返されます。

Example

int ret = 0;
WOLFSSL_CTX* ctx;
...

ret = wolfSSL_CTX_trust_peer_buffer(ctx, bufferPtr, bufferSz,
SSL_FILETYPE_PEM);
if (ret != SSL_SUCCESS) {
// error loading trusted peer cert
}
...

function wolfSSL_CTX_set_group_messages

int wolfSSL_CTX_set_group_messages(
    WOLFSSL_CTX * 
)

この機能は、可能な限りハンドシェイクメッセージのグループ化をオンにします。

See:

Return:

  • SSL_SUCCESS 成功に戻ります。
  • BAD_FUNC_ARG 入力コンテキストがNULLの場合、返されます。

Example

WOLFSSL_CTX* ctx = 0;
...
ret = wolfSSL_CTX_set_group_messages(ctx);
if (ret != SSL_SUCCESS) {
    // failed to set handshake message grouping
}

function wolfSSL_set_group_messages

int wolfSSL_set_group_messages(
    WOLFSSL * 
)

この機能は、可能な限りハンドシェイクメッセージのグループ化をオンにします。

Parameters:

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

See:

Return:

  • SSL_SUCCESS 成功に戻ります。
  • BAD_FUNC_ARG 入力コンテキストがNULLの場合、返されます。

Example

WOLFSSL* ssl = 0;
...
ret = wolfSSL_set_group_messages(ssl);
if (ret != SSL_SUCCESS) {
// failed to set handshake message grouping
}

function wolfSSL_CTX_SetMinVersion

int wolfSSL_CTX_SetMinVersion(
    WOLFSSL_CTX * ctx,
    int version
)

この関数は、許可されている最小のダウングレードバージョンを設定します。接続が(wolfsslv23_client_methodまたはwolfsslv23_server_method)を使用して、接続がダウングレードできる場合にのみ適用されます。

Parameters:

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

See: SetMinVersionHelper

Return:

  • SSL_SUCCESS エラーなしで返された関数と最小バージョンが設定されている場合に返されます。
  • BAD_FUNC_ARG WOLFSSL_CTX構造がNULLの場合、または最小バージョンがサポートされていない場合に返されます。

Example

WOLFSSL_CTX* ctx = wolfSSL_CTX_new( protocol method );
WOLFSSL* ssl = WOLFSSL_new(ctx);
int version; // macrop representation
…
if(wolfSSL_CTX_SetMinVersion(ssl->ctx, version) != SSL_SUCCESS){
    // Failed to set min version
}

function wolfSSL_SetVersion

int wolfSSL_SetVersion(
    WOLFSSL * ssl,
    int version
)

この関数は、バージョンで指定されたバージョンを使用して、指定されたSSLセッション(WolfSSLオブジェクト)のSSL/TLSプロトコルバージョンを設定します。これにより、SSLセッション(SSL)のプロトコル設定が最初に定義され、SSLコンテキスト(wolfSSL_CTX_new())メソッドの種類によって上書きされます。

Parameters:

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

See: wolfSSL_CTX_new

Return:

  • SSL_SUCCESS 成功時に返されます。
  • BAD_FUNC_ARG 入力SSLオブジェクトがNULLまたは誤ったプロトコルバージョンがバージョンで指定されている場合に返されます。

Example

int ret = 0;
WOLFSSL* ssl;
...

ret = wolfSSL_SetVersion(ssl, WOLFSSL_TLSV1);
if (ret != SSL_SUCCESS) {
    // failed to set SSL session protocol version
}

function wolfSSL_UseALPN

int wolfSSL_UseALPN(
    WOLFSSL * ssl,
    char * protocol_name_list,
    unsigned int protocol_name_listSz,
    unsigned char options
)

wolfsslセッションにALPNを設定します。

Parameters:

  • ssl 使用するWolfSSLセッション。
  • protocol_name_list 使用するプロトコル名のリスト。カンマ区切り文字列が必要です。
  • protocol_name_listSz プロトコル名のリストのサイズ。

See: TLSX_UseALPN

Return:

  • WOLFSSL_SUCCESS: 成功時に返されます。
  • BAD_FUNC_ARG SSLまたはPROTOCOL_NAME_LISTがNULLまたはPROTOCOL_NAME_LISTSZが大きすぎたり、オプションがサポートされていないものを含みます。
  • MEMORY_ERROR プロトコルリストのメモリの割り当て中にエラーが発生しました。
  • SSL_FAILURE 失敗時に返されます。

Example

wolfSSL_Init();
WOLFSSL_CTX* ctx;
WOLFSSL* ssl;
WOLFSSL_METHOD method = // Some wolfSSL method
ctx = wolfSSL_CTX_new(method);
ssl = wolfSSL_new(ctx);

char alpn_list[] = {};

if (wolfSSL_UseALPN(ssl, alpn_list, sizeof(alpn_list),
    WOLFSSL_APN_FAILED_ON_MISMATCH) != WOLFSSL_SUCCESS)
{
   // Error setting session ticket
}

function wolfSSL_CTX_UseSessionTicket

int wolfSSL_CTX_UseSessionTicket(
    WOLFSSL_CTX * ctx
)

この関数は、セッションチケットを使用するようにWolfSSLコンテキストを設定します。

See: TLSX_UseSessionTicket

Return:

  • SSL_SUCCESS 関数は正常に実行されます。
  • BAD_FUNC_ARG CTXがNULLの場合に返されます。
  • MEMORY_E 内部関数内のメモリの割り当て中にエラーが発生しました。

Example

wolfSSL_Init();
WOLFSSL_CTX* ctx;
WOLFSSL_METHOD method = // Some wolfSSL method ;
ctx = wolfSSL_CTX_new(method);

if(wolfSSL_CTX_UseSessionTicket(ctx) != SSL_SUCCESS)
{
    // Error setting session ticket
}

function wolfSSL_check_private_key

int wolfSSL_check_private_key(
    const WOLFSSL * ssl
)

この関数は、秘密鍵が使用されている証明書との一致であることを確認します。

See:

Return:

  • SSL_SUCCESS うまく一致します。
  • SSL_FAILURE エラーケースに遭遇した場合
  • <0 ssl_failure以外のすべてのエラーケースは負の値です。

Example

WOLFSSL* ssl;
int ret;
// create and set up ssl
ret  = wolfSSL_check_private_key(ssl);
// check ret value

function wolfSSL_use_certificate

int wolfSSL_use_certificate(
    WOLFSSL * ssl,
    WOLFSSL_X509 * x509
)

ハンドシェイク中に使用するために、WolfSSL構造の証明書を設定するために使用されます。

Parameters:

  • ssl 証明書を設定するためのWolfSSL構造。

See:

Return:

  • SSL_SUCCESS 設定の成功した引数について。
  • SSL_FAILURE NULL引数が渡された場合。

Example

 WOLFSSL* ssl;
WOLFSSL_X509* x509
int ret;
// create ssl object and x509
ret  = wolfSSL_use_certificate(ssl, x509);
// check ret value

function wolfSSL_use_certificate_ASN1

int wolfSSL_use_certificate_ASN1(
    WOLFSSL * ssl,
    unsigned char * der,
    int derSz
)

Parameters:

  • ssl 証明書を設定するためのWolfSSL構造。
  • der 使用する証明書。

See:

Return:

  • SSL_SUCCESS 設定の成功した引数について。
  • SSL_FAILURE NULL引数が渡された場合。

\biiこfは、この関数は、handshakeの間に使用するためにWolfSSL構造の証明書を設定するために使用されます。DERフォーマットバッファが予想されます。 Example

WOLFSSL* ssl;
unsigned char* der;
int derSz;
int ret;
// create ssl object and set DER variables
ret  = wolfSSL_use_certificate_ASN1(ssl, der, derSz);
// check ret value

function wolfSSL_SESSION_get_master_key

int wolfSSL_SESSION_get_master_key(
    const WOLFSSL_SESSION * ses,
    unsigned char * out,
    int outSz
)

これはハンドシェイクを完了した後にマスターキーを取得するために使用されます。

Parameters:

  • ses マスターシークレットバッファを取得するためのWolfSSL_SESSION構造。
  • out データを保持するためのバッファ。

See:

Return:

  • 0 データの取得に成功した場合、0より大きい値を返します。

  • 0 ランダムなデータバッファまたはエラー状態が返されない場合は0
  • max 渡されたOUTSZが0の場合、必要な最大バッファサイズが返されます。

Example

WOLFSSL_SESSION ssl;
unsigned char* buffer;
size_t bufferSz;
size_t ret;
// complete handshake and get session structure
bufferSz  = wolfSSL_SESSION_get_master_secret(ses, NULL, 0);
buffer = malloc(bufferSz);
ret  = wolfSSL_SESSION_get_master_secret(ses, buffer, bufferSz);
// check ret value

function wolfSSL_SESSION_get_master_key_length

int wolfSSL_SESSION_get_master_key_length(
    const WOLFSSL_SESSION * ses
)

これはマスター秘密鍵の長さを取得するために使用されます。

See:

Return: size マスターシークレットキーサイズを返します。

Example

WOLFSSL_SESSION ssl;
unsigned char* buffer;
size_t bufferSz;
size_t ret;
// complete handshake and get session structure
bufferSz  = wolfSSL_SESSION_get_master_secret_length(ses);
buffer = malloc(bufferSz);
// check ret value

function wolfSSL_CTX_set_cert_store

void wolfSSL_CTX_set_cert_store(
    WOLFSSL_CTX * ctx,
    WOLFSSL_X509_STORE * str
)

Parameters:

  • ctx Cert Storeポインタを設定するためのWolfSSL_CTX構造体へのポインタ。

See:

Return: none 返品不可。

\bri f この関数は、れは、CTXのWOLFSSL_X509_STORE構造の設定機能です。 Example

WOLFSSL_CTX ctx;
WOLFSSL_X509_STORE* st;
// setup ctx and st
st = wolfSSL_CTX_set_cert_store(ctx, st);
//use st

function wolfSSL_CTX_get_cert_store

WOLFSSL_X509_STORE * wolfSSL_CTX_get_cert_store(
    WOLFSSL_CTX * ctx
)

See:

Return:

  • WOLFSSL_X509_STORE* ポインタを正常に入手します。
  • NULL NULL引数が渡された場合に返されます。

\bri f この関数は、れは、CTXのWOLFSSL_X509_STORE構造のゲッター関数です。 Example

WOLFSSL_CTX ctx;
WOLFSSL_X509_STORE* st;
// setup ctx
st = wolfSSL_CTX_get_cert_store(ctx);
//use st

function wolfSSL_get_server_random

size_t wolfSSL_get_server_random(
    const WOLFSSL * ssl,
    unsigned char * out,
    size_t outlen
)

Parameters:

  • ssl クライアントのランダムデータバッファを取得するためのWolfSSL構造。
  • out ランダムデータを保持するためのバッファ。

See:

Return:

  • 0 データの取得に成功した場合、0より大きい値を返します。

  • 0 ランダムなデータバッファまたはエラー状態が返されない場合は0
  • max 渡されたOUTSZが0の場合、必要な最大バッファサイズが返されます。

\biiefは、この関数は、ハンドシェイク中にサーバーによって送信されたランダムなデータを取得するために使用されます。 Example

WOLFSSL ssl;
unsigned char* buffer;
size_t bufferSz;
size_t ret;
bufferSz  = wolfSSL_get_server_random(ssl, NULL, 0);
buffer = malloc(bufferSz);
ret  = wolfSSL_get_server_random(ssl, buffer, bufferSz);
// check ret value

function wolfSSL_get_client_random

size_t wolfSSL_get_client_random(
    const WOLFSSL * ssl,
    unsigned char * out,
    size_t outSz
)

Parameters:

  • ssl クライアントのランダムデータバッファを取得するためのWolfSSL構造。
  • out ランダムデータを保持するためのバッファ。

See:

Return:

  • 0 データの取得に成功した場合、0より大きい値を返します。

  • 0 ランダムなデータバッファまたはエラー状態が返されない場合は0
  • max 渡されたOUTSZが0の場合、必要な最大バッファサイズが返されます。

\biiefは、この関数は、ハンドシェイク中にクライアントによって送信されたランダムなデータを取得するために使用されます。 Example

WOLFSSL ssl;
unsigned char* buffer;
size_t bufferSz;
size_t ret;
bufferSz  = wolfSSL_get_client_random(ssl, NULL, 0);
buffer = malloc(bufferSz);
ret  = wolfSSL_get_client_random(ssl, buffer, bufferSz);
// check ret value

function wolfSSL_CTX_get_default_passwd_cb

wc_pem_password_cb * wolfSSL_CTX_get_default_passwd_cb(
    WOLFSSL_CTX * ctx
)

これはCTXで設定されたパスワードコールバックのゲッター関数です。

See:

Return:

  • func 成功すると、コールバック関数を返します。
  • NULL CTXがNULLの場合、NULLが返されます。

Example

WOLFSSL_CTX* ctx;
wc_pem_password_cb cb;
// setup ctx
cb = wolfSSL_CTX_get_default_passwd_cb(ctx);
//use cb

function wolfSSL_CTX_get_default_passwd_cb_userdata

void * wolfSSL_CTX_get_default_passwd_cb_userdata(
    WOLFSSL_CTX * ctx
)

See:

Return:

  • pointer 成功すると、ユーザーデータポインタを返します。
  • NULL CTXがNULLの場合、NULLが返されます。

\bri f この関数は、れは、CTXで設定されているパスワードコールバックユーザーデータの取得機能です。 Example

WOLFSSL_CTX* ctx;
void* data;
// setup ctx
data = wolfSSL_CTX_get_default_passwd_cb(ctx);
//use data

function wolfSSL_CTX_clear_options

long wolfSSL_CTX_clear_options(
    WOLFSSL_CTX * ctx,
    long opt
)

この関数は、WOLFSSL_CTXオブジェクトのオプションビットをリセットします。

See:

Return: option 新しいオプションビット

Example

WOLFSSL_CTX* ctx = 0;
...
wolfSSL_CTX_clear_options(ctx, SSL_OP_NO_TLSv1);

function wolfSSL_set_msg_callback

int wolfSSL_set_msg_callback(
    WOLFSSL * ssl,
    SSL_Msg_Cb cb
)

この関数はSSL内のコールバックを設定します。コールバックはハンドシェイクメッセージを観察することです。CBのNULL値はコールバックをリセットします。

Parameters:

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

See: wolfSSL_set_msg_callback_arg

Return:

  • SSL_SUCCESS 成功しています。
  • SSL_FAILURE NULL SSLが渡された場合。

Example

static cb(int write_p, int version, int content_type,
const void *buf, size_t len, WOLFSSL *ssl, void *arg)
…
WOLFSSL* ssl;
ret  = wolfSSL_set_msg_callback(ssl, cb);
// check ret

function wolfSSL_set_msg_callback_arg

int wolfSSL_set_msg_callback_arg(
    WOLFSSL * ssl,
    void * arg
)

この関数は、SSL内の関連コールバックコンテキスト値を設定します。値はコールバック引数に渡されます。

Parameters:

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

See: wolfSSL_set_msg_callback

Return: none 返品不可。

Example

static cb(int write_p, int version, int content_type,
const void *buf, size_t len, WOLFSSL *ssl, void *arg)
…
WOLFSSL* ssl;
ret  = wolfSSL_set_msg_callback(ssl, cb);
// check ret
wolfSSL_set_msg_callback(ssl, arg);
int wolfSSL_send_hrr_cookie(
    WOLFSSL * ssl,
    const unsigned char * secret,
    unsigned int secretSz
)

この関数はサーバー側で呼び出されて、HellORetryRequestメッセージにCookieを含める必要があることを示します。Cookieは現在のトランスクリプトのハッシュを保持しているので、別のサーバープロセスは応答でClientHelloを処理できます。秘密はCookieデータの整合性チェックをGenertingするときに使用されます。

Parameters:

  • ssl l wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
  • 秘密を保持しているバッファへのポインタを秘密にします。渡すNULLは、新しいランダムシークレットを生成することを示します。
  • シークスのサイズをバイト単位でサイズ。0を渡すと、デフォルトのサイズを使用することを示します.WC_SHA256_DIGEST_SIZE(またはSHA-256が使用できない場合はWC_SHA_DIGEST_SIZE)。

See: wolfSSL_new

Return:

  • BAD_FUNC_ARG sslがNULLの場合、またはTLS v1.3を使用していない場合。
  • SIDE_ERROR クライアントで呼び出された場合。
  • WOLFSSL_SUCCESS 成功した場合に返されます。
  • MEMORY_ERROR 秘密を保存するために動的メモリを割り当てる場合に失敗しました。

Example

int ret;
WOLFSSL* ssl;
char secret[32];
...
ret = wolfSSL__send_hrr_cookie(ssl, secret, sizeof(secret));
if (ret != WOLFSSL_SUCCESS) {
    // failed to set use of Cookie and secret
}
int wolfSSL_disable_hrr_cookie(
    WOLFSSL * ssl
)

この関数はサーバー側で呼び出され、HelloRetryRequestメッセージがクッキーを含んではならないこと、 DTLSv1.3が使用されている場合にはクッキーの交換がハンドシェークに含まれないことを表明します。 DTLSv1.3ではクッキー交換を行わないとサーバーがDoS/Amplification攻撃を受けやすくなる可能性があることに留意してください。

Parameters:

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

See: wolfSSL_send_hrr_cookie

Return:

  • WOLFSSL_SUCCESS 成功時に返されます。
  • BAD_FUNC_ARG sslがNULLあるいはTLS v1.3を使用していない場合に返されます。
  • SIDE_ERROR クライアント側でこの関数が呼び出された場合に返されます。

function wolfSSL_CTX_no_ticket_TLSv13

int wolfSSL_CTX_no_ticket_TLSv13(
    WOLFSSL_CTX * ctx
)

この関数はサーバー上で呼び出され、ハンドシェイク完了時にセッション再開のためのセッションチケットの送信を行わないようにします。

Parameters:

See: wolfSSL_no_ticket_TLSv13

Return:

  • BAD_FUNC_ARG CTXがNULLの場合、またはTLS v1.3を使用していない場合。
  • SIDE_ERROR クライアントで呼び出された場合。

Example

int ret;
WOLFSSL_CTX* ctx;
...
ret = wolfSSL_CTX_no_ticket_TLSv13(ctx);
if (ret != 0) {
    // failed to set no ticket
}

function wolfSSL_no_ticket_TLSv13

int wolfSSL_no_ticket_TLSv13(
    WOLFSSL * ssl
)

ハンドシェイクが完了すると、この関数はサーバー上で再開セッションチケットの送信を停止するように呼び出されます。

Parameters:

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

See: wolfSSL_CTX_no_ticket_TLSv13

Return:

  • BAD_FUNC_ARG sslがNULLの場合、またはTLS v1.3を使用していない場合。
  • SIDE_ERROR クライアントで呼び出された場合。

Example

int ret;
WOLFSSL* ssl;
...
ret = wolfSSL_no_ticket_TLSv13(ssl);
if (ret != 0) {
    // failed to set no ticket
}

function wolfSSL_CTX_no_dhe_psk

int wolfSSL_CTX_no_dhe_psk(
    WOLFSSL_CTX * ctx
)

この関数は、Authenticationにプリシェアキーを使用している場合、DIFFIE-HELLMAN(DH)スタイルのキー交換を許可するTLS V1.3 WolfSSLコンテキストで呼び出されます。

Parameters:

See: wolfSSL_no_dhe_psk

Return: BAD_FUNC_ARG CTXがNULLの場合、またはTLS v1.3を使用していない場合。

Example

int ret;
WOLFSSL_CTX* ctx;
...
ret = wolfSSL_CTX_no_dhe_psk(ctx);
if (ret != 0) {
    // failed to set no DHE for PSK handshakes
}

function wolfSSL_no_dhe_psk

int wolfSSL_no_dhe_psk(
    WOLFSSL * ssl
)

この関数は、事前共有鍵を使用しているTLS V1.3クライアントまたはサーバーで、にDiffie-Hellman(DH)スタイルの鍵交換を許可しないように設定します。

Parameters:

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

See: wolfSSL_CTX_no_dhe_psk

Return: BAD_FUNC_ARG sslがNULLの場合、またはTLS v1.3を使用していない場合。

Example

int ret;
WOLFSSL* ssl;
...
ret = wolfSSL_no_dhe_psk(ssl);
if (ret != 0) {
    // failed to set no DHE for PSK handshakes
}

function wolfSSL_CTX_allow_post_handshake_auth

int wolfSSL_CTX_allow_post_handshake_auth(
    WOLFSSL_CTX * ctx
)

この関数は、TLS v1.3クライアントのWolfSSLコンテキストで呼び出され、クライアントはサーバーからの要求に応じてPost Handshakeを送信できるようにします。これは、クライアント認証などを必要としないページを持つWebサーバーに接続するときに役立ちます。

Parameters:

See:

Return:

  • BAD_FUNC_ARG CTXがNULLの場合、またはTLS v1.3を使用していない場合。
  • SIDE_ERROR サーバーで呼び出された場合。

Example

int ret;
WOLFSSL_CTX* ctx;
...
ret = wolfSSL_allow_post_handshake_auth(ctx);
if (ret != 0) {
    // failed to allow post handshake authentication
}

function wolfSSL_allow_post_handshake_auth

int wolfSSL_allow_post_handshake_auth(
    WOLFSSL * ssl
)

この関数は、TLS V1.3クライアントWolfSSLで呼び出され、クライアントはサーバーからの要求に応じてハンドシェイクを送ります。handshakeクライアント認証拡張機能はClientHelloで送信されます。これは、クライアント認証などを必要としないページを持つWebサーバーに接続するときに役立ちます。

Parameters:

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

See:

Return:

  • BAD_FUNC_ARG sslがNULLの場合、またはTLS v1.3を使用していない場合。
  • SIDE_ERROR サーバーで呼び出された場合。

Example

int ret;
WOLFSSL* ssl;
...
ret = wolfSSL_allow_post_handshake_auth(ssl);
if (ret != 0) {
    // failed to allow post handshake authentication
}

function wolfSSL_CTX_set1_groups_list

int wolfSSL_CTX_set1_groups_list(
    WOLFSSL_CTX * ctx,
    char * list
)

この関数は楕円曲線グループのリストを設定して、WolfSSLコンテキストを希望の順に設定します。リストはヌル終了したテキスト文字列、およびコロン区切りリストです。この関数を呼び出して、TLS v1.3接続で使用する鍵交換楕円曲線パラメータを設定します。

Parameters:

  • ctx wolfSSL_CTX_new()で作成されたWOLFSSL_CTX構造体へのポインタ。
  • list 楕円曲線グループのコロン区切りリストである文字列をリストします。

See:

Return: WOLFSSL_FAILURE ポインタパラメータがNULLの場合、wolfssl_max_group_countグループが多い場合は、グループ名が認識されないか、TLS v1.3を使用していません。

Example

int ret;
WOLFSSL_CTX* ctx;
const char* list = "P-384:P-256";
...
ret = wolfSSL_CTX_set1_groups_list(ctx, list);
if (ret != WOLFSSL_SUCCESS) {
    // failed to set group list
}

function wolfSSL_set1_groups_list

int wolfSSL_set1_groups_list(
    WOLFSSL * ssl,
    char * list
)

この関数は楕円曲線グループのリストを設定して、WolfSSLを希望の順に設定します。リストはヌル終了したテキスト文字列、およびコロン区切りリストです。この関数を呼び出して、TLS v1.3接続で使用する鍵交換楕円曲線パラメータを設定します。

Parameters:

  • ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
  • list 鍵交換グループのコロン区切りリストである文字列をリストします。

See:

Return: WOLFSSL_FAILURE ポインタパラメータがNULLの場合、wolfssl_max_group_countグループが多い場合は、グループ名が認識されないか、TLS v1.3を使用していません。

Example

int ret;
WOLFSSL* ssl;
const char* list = "P-384:P-256";
...
ret = wolfSSL_CTX_set1_groups_list(ssl, list);
if (ret != WOLFSSL_SUCCESS) {
    // failed to set group list
}

function wolfSSL_CTX_set_groups

int wolfSSL_CTX_set_groups(
    WOLFSSL_CTX * ctx,
    int * groups,
    int count
)

この関数は楕円曲線グループのリストを設定して、WolfSSLコンテキストを希望の順に設定します。リストは、Countで指定された識別子の数を持つグループ識別子の配列です。この関数を呼び出して、TLS v1.3接続で使用する鍵交換楕円曲線パラメータを設定します。

Parameters:

  • ctx wolfSSL_CTX_new()で作成されたWOLFSSL_CTX構造体へのポインタ。
  • groups 識別子によって鍵交換グループのリストをグループ化します。
  • count グループ内の鍵交換グループの数を数えます。

See:

Return: BAD_FUNC_ARG ポインタパラメータがNULLの場合、グループ数はwolfssl_max_group_countを超えているか、TLS v1.3を使用していません。

Example

int ret;
WOLFSSL_CTX* ctx;
int* groups = { WOLFSSL_ECC_X25519, WOLFSSL_ECC_SECP256R1 };
int count = 2;
...
ret = wolfSSL_CTX_set1_groups_list(ctx, groups, count);
if (ret != WOLFSSL_SUCCESS) {
    // failed to set group list
}

function wolfSSL_set_groups

int wolfSSL_set_groups(
    WOLFSSL * ssl,
    int * groups,
    int count
)

この関数は、wolfsslを許すために楕円曲線グループのリストを設定します。リストは、Countで指定された識別子の数を持つグループ識別子の配列です。この関数を呼び出して、TLS v1.3接続で使用する鍵交換楕円曲線パラメータを設定します。

Parameters:

  • ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
  • groups 識別子によって鍵交換グループのリストをグループ化します。
  • count グループ内の鍵交換グループの数を数えます。

See:

Return: BAD_FUNC_ARG ポインタパラメータがNULLの場合、グループ数がWolfSSL_MAX_GROUP_COUNTを超えている場合、任意の識別子は認識されないか、TLS v1.3を使用していません。

Example

int ret;
WOLFSSL* ssl;
int* groups = { WOLFSSL_ECC_X25519, WOLFSSL_ECC_SECP256R1 };
int count = 2;
...
ret = wolfSSL_set_groups(ssl, groups, count);
if (ret != WOLFSSL_SUCCESS) {
    // failed to set group list
}

function wolfSSL_CTX_set_max_early_data

int wolfSSL_CTX_set_max_early_data(
    WOLFSSL_CTX * ctx,
    unsigned int sz
)

この関数は、WolfSSLコンテキストを使用してTLS V1.3サーバーによって受け入れられるアーリーデータの最大量を設定します。 この関数を呼び出して、再生攻撃を軽減するためのプロセスへのアーリーデータの量を制限します。 初期のデータは、セッションチケットが送信されたこと、したがってセッションチケットが再開されるたびに同じ接続の鍵から派生した鍵によって保護されます。 値は再開のためにセッションチケットに含まれています。 ゼロの値は、セッションチケットを使用してクライアントによってアーリーデータを送信することを示します。 アーリーデータバイト数をアプリケーションで実際には可能な限り低く保つことをお勧めします。

Parameters:

  • ctx wolfSSL_CTX_new()で作成されたWOLFSSL_CTX構造体へのポインタ。
  • sz バイト単位で受け入れるアーリーデータのサイズ。

See:

Return:

  • BAD_FUNC_ARG CTXがNULLの場合、またはTLS v1.3を使用していない場合。
  • SIDE_ERROR クライアントで呼び出された場合。

Example

int ret;
WOLFSSL_CTX* ctx;
...
ret = wolfSSL_CTX_set_max_early_data(ctx, 128);
if (ret != WOLFSSL_SUCCESS) {
    // failed to set group list
}

function wolfSSL_set_max_early_data

int wolfSSL_set_max_early_data(
    WOLFSSL * ssl,
    unsigned int sz
)

この関数は、WolfSSLコンテキストを使用してTLS V1.3サーバーによって受け入れられるアーリーデータの最大量を設定します。 この関数を呼び出して、再生攻撃を軽減するためプロセスへのアーリーデータの量を制限します。 初期のデータは、セッションチケットが送信されたこと、したがってセッションチケットが再開されるたびに同じ接続の鍵から派生した鍵によって保護されます。 値は再開のためにセッションチケットに含まれています。 ゼロの値は、セッションチケットを使用してクライアントによってアーリーデータを送信することを示します。 アーリーデータバイト数をアプリケーションで実際には可能な限り低く保つことをお勧めします。

Parameters:

  • ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
  • SZクライアントからバイト単位で受け入れるアーリーデータのサイズ。

See:

Return:

  • BAD_FUNC_ARG sslがNULLの場合、またはTLS v1.3を使用していない場合。
  • SIDE_ERROR クライアントで呼び出された場合。

Example

int ret;
WOLFSSL* ssl;
...
ret = wolfSSL_set_max_early_data(ssl, 128);
if (ret != WOLFSSL_SUCCESS) {
    // failed to set group list
}

function wolfSSL_CTX_set_psk_client_tls13_callback

void wolfSSL_CTX_set_psk_client_tls13_callback(
    WOLFSSL_CTX * ctx,
    wc_psk_client_tls13_callback cb
)

この関数は、TLS v1.3接続のプレシェア鍵(PSK)クライアント側コールバックを設定します。コールバックはPSKアイデンティティを見つけ、そのキーと、ハンドシェイクに使用する暗号の名前を返します。この関数は、WOLFSSL_CTX構造体のclient_psk_tls13_cbメンバーを設定します。

Parameters:

See:

Example

WOLFSSL_CTX* ctx;
...
wolfSSL_CTX_set_psk_client_tls13_callback(ctx, my_psk_client_tls13_cb);

function wolfSSL_set_psk_client_tls13_callback

void wolfSSL_set_psk_client_tls13_callback(
    WOLFSSL * ssl,
    wc_psk_client_tls13_callback cb
)

この関数は、TLS v1.3接続のプレシェアキー(PSK)クライアント側コールバックを設定します。コールバックはPSKアイデンティティを見つけ、そのキーと、ハンドシェイクに使用する暗号の名前を返します。この関数は、wolfssl構造体のOptionsフィールドのclient_psk_tls13_cbメンバーを設定します。

Parameters:

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

See:

Example

WOLFSSL* ssl;
...
wolfSSL_set_psk_client_tls13_callback(ssl, my_psk_client_tls13_cb);

function wolfSSL_CTX_set_psk_server_tls13_callback

void wolfSSL_CTX_set_psk_server_tls13_callback(
    WOLFSSL_CTX * ctx,
    wc_psk_server_tls13_callback cb
)

この関数は、TLS v1.3接続用の事前共有鍵(PSK)サーバ側コールバックを設定します。コールバックはPSKアイデンティティを見つけ、そのキーと、ハンドシェイクに使用する暗号の名前を返します。この関数は、wolfssl_ctx構造体のserver_psk_tls13_cbメンバーを設定します。

Parameters:

See:

Example

WOLFSSL_CTX* ctx;
...
wolfSSL_CTX_set_psk_server_tls13_callback(ctx, my_psk_client_tls13_cb);

function wolfSSL_set_psk_server_tls13_callback

void wolfSSL_set_psk_server_tls13_callback(
    WOLFSSL * ssl,
    wc_psk_server_tls13_callback cb
)

この関数は、TLS v1.3接続用の事前共有鍵(PSK)サーバ側コールバックを設定します。コールバックはPSKアイデンティティを見つけ、そのキーと、ハンドシェイクに使用する暗号の名前を返します。この関数は、wolfssl構造体のオプションフィールドのserver_psk_tls13_cbメンバーを設定します。

Parameters:

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

See:

Example

WOLFSSL* ssl;
...
wolfSSL_set_psk_server_tls13_callback(ssl, my_psk_server_tls13_cb);

function wolfSSL_UseKeyShare

int wolfSSL_UseKeyShare(
    WOLFSSL * ssl,
    word16 group
)

この関数は、キーペアの生成を含むグループからキーシェアエントリを作成します。Keyshareエクステンションには、鍵交換のための生成されたすべての公開鍵が含まれています。この関数が呼び出されると、指定されたグループのみが含まれます。優先グループがサーバーに対して以前に確立されているときにこの関数を呼び出します。

Parameters:

  • ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
  • キー交換グループ識別子をグループ化します。

See:

Return:

  • BAD_FUNC_ARG sslがNULLの場合に返されます。
  • MEMORY_E 動的メモリ割り当てに失敗すると返されます。

Example

int ret;
WOLFSSL* ssl;
...
ret = wolfSSL_UseKeyShare(ssl, WOLFSSL_ECC_X25519);
if (ret != WOLFSSL_SUCCESS) {
    // failed to set key share
}

function wolfSSL_NoKeyShares

int wolfSSL_NoKeyShares(
    WOLFSSL * ssl
)

この関数は、ClientHelloで鍵共有が送信されないように呼び出されます。これにより、ハンドシェイクに鍵交換が必要な場合は、サーバーがHelloretryRequestで応答するように強制します。予想される鍵交換グループが知られておらず、キーの生成を不必要に回避するときにこの機能を呼び出します。鍵交換が必要なときにハンドシェイクを完了するために追加の往復が必要になることに注意してください。

Parameters:

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

See: wolfSSL_UseKeyShare

Return:

  • BAD_FUNC_ARG sslがNULLの場合に返されます。
  • SIDE_ERROR サーバーで呼び出された場合。

Example

int ret;
WOLFSSL* ssl;
...
ret = wolfSSL_NoKeyShares(ssl);
if (ret != WOLFSSL_SUCCESS) {
    // failed to set no key shares
}

function wolfTLSv1_3_server_method_ex

WOLFSSL_METHOD * wolfTLSv1_3_server_method_ex(
    void * heap
)

この関数は、アプリケーションがサーバーであることを示すために使用され、TLS 1.3プロトコルのみをサポートします。この関数は、wolfSSL_CTX_new()を使用してSSL / TLSコンテキストを作成するときに使用される新しいWolfssl_method構造体のメモリを割り当てて初期化します。

Parameters:

  • ヒープ静的メモリ割り当て中に静的メモリ割り当て器が使用するバッファへのポインタを使用します。

See:

Return: 新しく作成されたwWOLFSSL_METHOS構造体へのポインタを返します。

Example

#include <wolfssl/ssl.h>

WOLFSSL_METHOD* method;
WOLFSSL_CTX* ctx;

method = wolfTLSv1_3_server_method_ex(NULL);
if (method == NULL) {
    // unable to get method
}

ctx = wolfSSL_CTX_new(method);
...

function wolfTLSv1_3_client_method_ex

WOLFSSL_METHOD * wolfTLSv1_3_client_method_ex(
    void * heap
)

この関数は、アプリケーションがクライアントであることを示すために使用され、TLS 1.3プロトコルのみをサポートします。この関数は、wolfSSL_CTX_new()を使用してSSL / TLSコンテキストを作成するときに使用される新しいWolfssl_method構造体のメモリを割り当てて初期化します。

Parameters:

  • ヒープ静的メモリ割り当て中に静的メモリ割り当て器が使用するバッファへのポインタを使用します。

See:

Return: 新しく作成されたwWOLFSSL_METHOS構造体へのポインタを返します。

Example

#include <wolfssl/ssl.h>

WOLFSSL_METHOD* method;
WOLFSSL_CTX* ctx;

method = wolfTLSv1_3_client_method_ex(NULL);
if (method == NULL) {
    // unable to get method
}

ctx = wolfSSL_CTX_new(method);
...

function wolfTLSv1_3_server_method

WOLFSSL_METHOD * wolfTLSv1_3_server_method(
    void 
)

この関数は、アプリケーションがサーバーであることを示すために使用され、TLS 1.3プロトコルのみをサポートします。この関数は、wolfSSL_CTX_new()を使用してSSL / TLSコンテキストを作成するときに使用される新しいWolfssl_method構造体のメモリを割り当てて初期化します。

See:

Return: 新しく作成されたwWOLFSSL_METHOS構造体へのポインタを返します。

Example

#include <wolfssl/ssl.h>

WOLFSSL_METHOD* method;
WOLFSSL_CTX* ctx;

method = wolfTLSv1_3_server_method();
if (method == NULL) {
    // unable to get method
}

ctx = wolfSSL_CTX_new(method);
...

function wolfTLSv1_3_client_method

WOLFSSL_METHOD * wolfTLSv1_3_client_method(
    void 
)

この関数は、アプリケーションがクライアントであることを示すために使用され、TLS 1.3プロトコルのみをサポートします。この関数は、wolfSSL_CTX_new()を使用してSSL / TLSコンテキストを作成するときに使用される新しいWolfssl_method構造体のメモリを割り当てて初期化します。

See:

Return: 新しく作成されたwWOLFSSL_METHOS構造体へのポインタを返します。

Example

#include <wolfssl/ssl.h>

WOLFSSL_METHOD* method;
WOLFSSL_CTX* ctx;

method = wolfTLSv1_3_client_method();
if (method == NULL) {
    // unable to get method
}

ctx = wolfSSL_CTX_new(method);
...

function wolfTLSv1_3_method_ex

WOLFSSL_METHOD * wolfTLSv1_3_method_ex(
    void * heap
)

この関数は、まだどちらの側(サーバ/クライアント)を決定していないことを除いて、Wolftlsv1_3_client_methodと同様のwolfssl_methodを返します。

Parameters:

  • ヒープ静的メモリ割り当て中に静的メモリ割り当て器が使用するバッファへのポインタを使用します。

See:

Return: WOLFSSL_METHOD 成功した作成では、wolfssl_methodポインタを返します

Example

WOLFSSL* ctx;
ctx  = wolfSSL_CTX_new(wolfTLSv1_3_method_ex(NULL));
// check ret value

function wolfTLSv1_3_method

WOLFSSL_METHOD * wolfTLSv1_3_method(
    void 
)

この関数は、まだどちらの側(サーバ/クライアント)を決定していないことを除いて、Wolftlsv1_3_client_methodと同様のwolfssl_methodを返します。

See:

Return: WOLFSSL_METHOD 成功した作成では、wolfssl_methodポインタを返します

Example

WOLFSSL* ctx;
ctx  = wolfSSL_CTX_new(wolfTLSv1_3_method());
// check ret value

function wolfSSL_CTX_set_client_cert_type

int wolfSSL_CTX_set_client_cert_type(
    WOLFSSL_CTX * ctx,
    const char * buf,
    int len
)

この関数はクライアント側で呼び出される場合には、サーバー側にCertificateメッセージで送信できる証明書タイプを設定します。 サーバー側で呼び出される場合には、受入れ可能なクライアント証明書タイプを設定します。 Raw Public Key 証明書を送受信したい場合にはこの関数を使って証明書タイプを設定しなければなりません。 設定する証明書タイプは優先度順に格納したバイト配列として渡します。 設定するバッファアドレスにNULLを渡すか、あるいはバッファサイズに0を渡すと規定値にもどすことができます。 規定値はX509証明書(WOLFSSL_CERT_TYPE_X509)のみを扱う設定となっています。

Parameters:

  • ctx wolfssl_ctxコンテキストポインタ
  • ctype 証明書タイプを格納したバッファへのポインタ
  • len 証明書タイプを格納したバッファのサイズ(バイト数) Example
  int ret;
  WOLFSSL_CTX* ctx;
  char ctype[] = {WOLFSSL_CERT_TYPE_RPK, WOLFSSL_CERT_TYPE_X509};
  int len = sizeof(ctype)/sizeof(byte);
 ...

  ret = wolfSSL_CTX_set_client_cert_type(ctx, ctype, len);

See:

Return:

  • WOLFSSL_SUCCESS 成功
  • BAD_FUNC_ARG ctxとしてNULLを渡した、あるいは不正な証明書タイプを指定した、 あるいはMAX_CLIENT_CERT_TYPE_CNT以上のバッファサイズを指定した、あるいは指定の証明書タイプに重複がある

function wolfSSL_CTX_set_server_cert_type

int wolfSSL_CTX_set_server_cert_type(
    WOLFSSL_CTX * ctx,
    const char * buf,
    int len
)

この関数はサーバー側で呼び出される場合には、クライアント側にCertificateメッセージで送信できる証明書タイプを設定します。 クライアント側で呼び出される場合には、受入れ可能なサーバー証明書タイプを設定します。 Raw Public Key 証明書を送受信したい場合にはこの関数を使って証明書タイプを設定しなければなりません。 設定する証明書タイプは優先度順に格納したバイト配列として渡します。 設定するバッファアドレスにNULLを渡すか、あるいはバッファサイズに0を渡すと規定値にもどすことができます。 規定値はX509証明書(WOLFSSL_CERT_TYPE_X509)のみを扱う設定となっています。

Parameters:

  • ctx wolfssl_ctxコンテキストポインタ
  • ctype 証明書タイプを格納したバッファへのポインタ
  • len 証明書タイプを格納したバッファのサイズ(バイト数) Example
  int ret;
  WOLFSSL_CTX* ctx;
  char ctype[] = {WOLFSSL_CERT_TYPE_RPK, WOLFSSL_CERT_TYPE_X509};
  int len = sizeof(ctype)/sizeof(byte);
 ...

  ret = wolfSSL_CTX_set_server_cert_type(ctx, ctype, len);

See:

Return:

  • WOLFSSL_SUCCESS 成功
  • BAD_FUNC_ARG ctxとしてNULLを渡した、あるいは不正な証明書タイプを指定した、 あるいはMAX_SERVER_CERT_TYPE_CNT以上のバッファサイズを指定した、あるいは指定の証明書タイプに重複がある

function wolfSSL_set_client_cert_type

int wolfSSL_set_client_cert_type(
    WOLFSSL * ssl,
    const char * buf,
    int len
)

この関数はクライアント側で呼び出される場合には、サーバー側にCertificateメッセージで送信できる証明書タイプを設定します。 サーバー側で呼び出される場合には、受入れ可能なクライアント証明書タイプを設定します。 Raw Public Key 証明書を送受信したい場合にはこの関数を使って証明書タイプを設定しなければなりません。 設定する証明書タイプは優先度順に格納したバイト配列として渡します。 設定するバッファアドレスにNULLを渡すか、あるいはバッファサイズに0を渡すと規定値にもどすことができます。 規定値はX509証明書(WOLFSSL_CERT_TYPE_X509)のみを扱う設定となっています。

Parameters:

  • ssl WOLFSSL構造体へのポインタ
  • ctype 証明書タイプを格納したバッファへのポインタ
  • len 証明書タイプを格納したバッファのサイズ(バイト数) Example
  int ret;
  WOLFSSL* ssl;
  char ctype[] = {WOLFSSL_CERT_TYPE_RPK, WOLFSSL_CERT_TYPE_X509};
  int len = sizeof(ctype)/sizeof(byte);
 ...

  ret = wolfSSL_set_client_cert_type(ssl, ctype, len);

See:

Return:

  • WOLFSSL_SUCCESS 成功
  • BAD_FUNC_ARG sslとしてNULLを渡した、あるいは不正な証明書タイプを指定した、 あるいはMAX_CLIENT_CERT_TYPE_CNT以上のバッファサイズを指定した、あるいは指定の証明書タイプに重複がある

function wolfSSL_set_server_cert_type

int wolfSSL_set_server_cert_type(
    WOLFSSL * ssl,
    const char * buf,
    int len
)

この関数はサーバー側で呼び出される場合には、クライアント側にCertificateメッセージで送信できる証明書タイプを設定します。 クライアント側で呼び出される場合には、受入れ可能なサーバー証明書タイプを設定します。 Raw Public Key 証明書を送受信したい場合にはこの関数を使って証明書タイプを設定しなければなりません。 設定する証明書タイプは優先度順に格納したバイト配列として渡します。 設定するバッファアドレスにNULLを渡すか、あるいはバッファサイズに0を渡すと規定値にもどすことができます。 規定値はX509証明書(WOLFSSL_CERT_TYPE_X509)のみを扱う設定となっています。

Parameters:

  • ssl WOLFSSL構造体へのポインタ
  • ctype 証明書タイプを格納したバッファへのポインタ
  • len 証明書タイプを格納したバッファのサイズ(バイト数) Example
  int ret;
  WOLFSSL* ssl;
  char ctype[] = {WOLFSSL_CERT_TYPE_RPK, WOLFSSL_CERT_TYPE_X509};
  int len = sizeof(ctype)/sizeof(byte);
 ...

  ret = wolfSSL_set_server_cert_type(ssl, ctype, len);

See:

Return:

  • WOLFSSL_SUCCESS 成功
  • BAD_FUNC_ARG ctxとしてNULLを渡した、あるいは不正な証明書タイプを指定した、 あるいはMAX_SERVER_CERT_TYPE_CNT以上のバッファサイズを指定した、あるいは指定の証明書タイプに重複がある

function wolfSSL_GetCookieCtx

void * wolfSSL_GetCookieCtx(
    WOLFSSL * ssl
)

この関数は、WolfSSL構造のIOCB_COOKIECTXメンバーを返します。

See:

Return:

  • pointer この関数は、iocb_cookiectxに格納されているvoidポインタ値を返します。
  • NULL WolfSSL構造体がNULLの場合 Example
WOLFSSL_CTX* ctx = wolfSSL_CTX_new( method );
WOLFSSL* ssl = wolfSSL_new(ctx);
void* cookie;
...
cookie = wolfSSL_GetCookieCtx(ssl);
if(cookie != NULL){
// You have the cookie
}

function wolfSSL_SetIO_ISOTP

int wolfSSL_SetIO_ISOTP(
    WOLFSSL * ssl,
    isotp_wolfssl_ctx * ctx,
    can_recv_fn recv_fn,
    can_send_fn send_fn,
    can_delay_fn delay_fn,
    word32 receive_delay,
    char * receive_buffer,
    int receive_buffer_size,
    void * arg
)

この関数は、WolfSSLがWolfSSL_ISOTPでコンパイルされている場合に使用する場合は、WolfSSLの場合はISO-TPコンテキストを設定します。

Parameters:

  • ssl wolfsslコンテキスト
  • ctx ユーザーはこの関数が初期化されるISOTPコンテキストを作成しました
  • recv_fn ユーザーはバスを受信できます
  • send_fn ユーザーはバスを送ることができます
  • delay_fn ユーザーマイクロ秒の粒度遅延関数
  • receive_delay 各CANバスパケットを遅らせるためのマイクロ秒のセット数
  • receive_buffer ユーザーがデータを受信するためのバッファーが提供され、ISOTP_DEFAULT_BUFFER_SIZEバイトに割り当てられていることをお勧めします。
  • receive_buffer_size - receive_bufferのサイズ Example
struct can_info can_con_info;
isotp_wolfssl_ctx isotp_ctx;
char *receive_buffer = malloc(ISOTP_DEFAULT_BUFFER_SIZE);
WOLFSSL_CTX* ctx = wolfSSL_CTX_new(method);
WOLFSSL* ssl = wolfSSL_new(ctx);
...
wolfSSL_SetIO_ISOTP(ssl, &isotp_ctx, can_receive, can_send, can_delay, 0,
        receive_buffer, ISOTP_DEFAULT_BUFFER_SIZE, &can_con_info);

Return: 0 成功すると、故障のwolfssl_cbio_err_general


Updated on 2024-04-19 at 02:10:11 +0000