コンテンツにスキップ

wolfSSLコンテキストとセッションのセットアップ

Functions

Name
WOLFSSL_METHOD * wolfSSLv23_method(void )
この関数はwolfSSLv23_client_methodに似たWOLFSSL_METHODを返しますが、どちら側(サーバ/クライアント)であるかがまだ決定されていない点が異なります。
WOLFSSL_METHOD * wolfSSLv3_server_method(void )
wolfSSLv3_server_method()関数は、アプリケーションがサーバであり、SSL 3.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がDTLSv1.3サポートを有効にしてコンパイルされている場合にのみ使用可能です(–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がDTLSv1.3サポートを有効にしてコンパイルされている場合にのみ使用可能です(–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構築の最初のリリースと新しいバージョンの間にはいくつかの違いがあるため、古いバージョンを使用するサーバー/クライアントと通信するためのオプションを追加しました。デフォルトでは、wolfSSLは新しいバージョンを使用します。
int wolfSSL_CTX_trust_peer_cert(WOLFSSL_CTX * ctx, const char * file, int type)
この関数は、TLS/SSLハンドシェイクを実行する際にピアを検証するために使用する証明書を読み込みます。ハンドシェイク中に送信されるピア証明書は、利用可能な場合はSKIDを使用し、署名を使用して比較されます。これら2つが一致しない場合は、読み込まれたCAが使用されます。この機能はマクロWOLFSSL_TRUST_PEER_CERTを定義することで有効になります。適切な使用方法については、examplesを参照してください。
long wolfSSL_CTX_get_verify_depth(WOLFSSL_CTX * ctx)
この関数は、CTX構造体を使用して証明書チェーンの深度を取得します。
WOLFSSL_CTX * wolfSSL_CTX_new(WOLFSSL_METHOD * )
この関数は、入力として希望するSSL/TLSプロトコルメソッドを取り、新しいSSLコンテキストを作成します。
WOLFSSL * wolfSSL_new(WOLFSSL_CTX * )
この関数は、既に作成されたSSLコンテキストを入力として取り、新しいSSLセッションを作成します。
int wolfSSL_set_fd(WOLFSSL * ssl, int fd)
この関数は、ファイルディスクリプタ(fd)をSSL接続の入出力機能として割り当てます。通常、これはソケットファイルディスクリプタになります。
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クライアントhelloに対するコールバックを設定できます。クッキー交換メカニズム(DTLS 1.2のHelloVerifyRequestまたはクッキー拡張を伴うDTLS 1.3のHelloRetryRequest)を使用する場合、このコールバックはクッキー交換が成功した後に呼び出されます。これは、1つのWOLFSSLオブジェクトを新しい接続のリスナーとして使用し、ClientHelloが検証された後(クッキー交換を通じて、またはClientHelloが正しい形式であるかをチェックするだけで)にWOLFSSLオブジェクトを分離できるようにするのに役立ちます。 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
void wolfSSL_set_using_nonblock(WOLFSSL * ssl, int nonblock)
この関数は、WOLFSSLオブジェクトに対して、下層のI/Oがノンブロッキングであることを通知します。アプリケーションがWOLFSSLオブジェクトを作成した後、それをノンブロッキングソケットと共に使用する場合は、wolfSSL_set_using_nonblock()を呼び出してください。これにより、WOLFSSLオブジェクトは、EWOULDBLOCKを受け取ることがタイムアウトではなく、recvfrom呼び出しがブロックすることを意味すると認識できます。
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()によって返されたオブジェクトは、アプリケーションが使用を終えた後、wolfSSL_SESSION_free()を呼び出して解放する必要があります。
void wolfSSL_CTX_set_verify(WOLFSSL_CTX * ctx, int mode, VerifyCallback verify_callback)
この関数はリモートピアの検証方法を設定し、また検証コールバックをSSLコンテキストに登録できるようにします。検証コールバックは検証失敗が発生した場合にのみ呼び出されます。検証コールバックが不要な場合は、verify_callbackにNULLポインタを使用できます。ピア証明書の検証モードは論理OR演算されたフラグのリストです。可能なフラグ値は以下の通りです。SSL_VERIFY_NONE クライアントモード:クライアントはサーバーから受信した証明書を検証せず、ハンドシェイクは通常通り続行されます。サーバーモード:サーバーはクライアントに証明書要求を送信しません。したがって、クライアント検証は有効になりません。SSL_VERIFY_PEER クライアントモード:クライアントはハンドシェイク中にサーバーから受信した証明書を検証します。これはwolfSSLではデフォルトで有効になっているため、このオプションを使用しても効果はありません。サーバーモード:サーバーはクライアントに証明書要求を送信し、受信したクライアント証明書を検証します。SSL_VERIFY_FAIL_IF_NO_PEER_CERT クライアントモード:クライアント側で使用しても効果はありません。サーバーモード:クライアントが要求されたときに証明書の送信に失敗した場合(SSLサーバーでSSL_VERIFY_PEERを使用している場合)、サーバー側で検証が失敗します。SSL_VERIFY_FAIL_EXCEPT_PSK クライアントモード:クライアント側で使用しても効果はありません。サーバーモード:検証はSSL_VERIFY_FAIL_IF_NO_PEER_CERTと同じですが、PSK接続の場合を除きます。PSK接続が行われている場合、接続はピア証明書なしで続行されます。
void wolfSSL_set_verify(WOLFSSL * ssl, int mode, VerifyCallback verify_callback)
この関数はリモートピアの検証方法を設定し、また検証コールバックをSSLセッションに登録できるようにします。検証コールバックは検証失敗が発生した場合にのみ呼び出されます。検証コールバックが不要な場合は、verify_callbackにNULLポインタを使用できます。ピア証明書の検証モードは論理OR演算されたフラグのリストです。可能なフラグ値は以下の通りです。SSL_VERIFY_NONE クライアントモード:クライアントはサーバーから受信した証明書を検証せず、ハンドシェイクは通常通り続行されます。サーバーモード:サーバーはクライアントに証明書要求を送信しません。したがって、クライアント検証は有効になりません。SSL_VERIFY_PEER クライアントモード:クライアントはハンドシェイク中にサーバーから受信した証明書を検証します。これはwolfSSLではデフォルトで有効になっているため、このオプションを使用しても効果はありません。サーバーモード:サーバーはクライアントに証明書要求を送信し、受信したクライアント証明書を検証します。SSL_VERIFY_FAIL_IF_NO_PEER_CERT クライアントモード:クライアント側で使用しても効果はありません。サーバーモード:クライアントが要求されたときに証明書の送信に失敗した場合(SSLサーバーでSSL_VERIFY_PEERを使用している場合)、サーバー側で検証が失敗します。SSL_VERIFY_FAIL_EXCEPT_PSK クライアントモード:クライアント側で使用しても効果はありません。サーバーモード:検証はSSL_VERIFY_FAIL_IF_NO_PEER_CERTと同じですが、PSK接続の場合を除きます。PSK接続が行われている場合、接続はピア証明書なしで続行されます。
long wolfSSL_CTX_set_session_cache_mode(WOLFSSL_CTX * ctx, long mode)
この関数はSSLセッションキャッシングを有効または無効にします。動作はmodeに使用される値に依存します。modeに使用できる値は以下の通りです。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コンテキストの暗号スイートリストが提供されたリストにリセットされます。暗号スイートリストであるlistは、nullで終端されたテキスト文字列であり、コロン区切りのリストです。例えば、listの1つの値は「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セッション)に対する暗号スイートリストを設定します。リスト内の暗号は、優先度の高い順から低い順に並べる必要があります。wolfSSL_set_cipher_list()を呼び出すたびに、関数が呼び出されるたびに、特定のSSLセッションの暗号スイートリストが提供されたリストにリセットされます。暗号スイートリストであるlistは、nullで終端されたテキスト文字列であり、コロン区切りのリストです。例えば、listの1つの値は「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()の呼び出しでオブジェクトからセッションIDを保存する必要があります、これはセッションへのポインタを返します。後で、アプリケーションは新しいWOLFSSLオブジェクトを作成し、wolfSSL_set_session()で保存されたセッションを割り当てる必要があります。この時点で、アプリケーションはwolfSSL_connect()を呼び出すことができ、wolfSSLはセッションの再開を試みます。wolfSSLサーバーコードはデフォルトでセッション再開を許可します。wolfSSL_get1_session()によって返されたオブジェクトは、アプリケーションが使用を終えた後、wolfSSL_SESSION_free()を呼び出すことによって解放する必要があります。
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構造体からリードアヘッドフラグを取得して返します。
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、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 * )
この関数は、コンパイル時にHAVE_ANONが定義されている場合、CTX構造体のhavAnonメンバを有効にします。
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)
これは、WOLFSSL構造体の内部エラー状態を取得するために使用されます。
int wolfSSL_check_domain_name(WOLFSSL * ssl, const char * dn)
wolfSSLはデフォルトでピア証明書の有効な日付範囲と検証済み署名をチェックします。wolfSSL_connect()またはwolfSSL_accept()の前にこの関数を呼び出すと、実行するチェックのリストにドメイン名チェックが追加されます。dnは、受信したピア証明書に対してチェックするドメイン名を保持します。
int wolfSSL_set_compression(WOLFSSL * ssl)
SSL接続で圧縮を使用する機能をオンにします。両側で圧縮をオンにする必要があります。そうでない場合、圧縮は使用されません。zlibライブラリが実際のデータ圧縮を実行します。ライブラリにコンパイルするには、configureシステムで–with-libzを使用し、HAVE_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_UnloadIntermediateCerts(WOLFSSL_CTX * 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ハンドシェイクを実行する際にピアを検証するために使用する証明書をロードします。ハンドシェイク中に送信されるピア証明書は、利用可能な場合はSKIDと署名を使用して比較されます。これら2つが一致しない場合は、ロードされたCAが使用されます。ファイルではなくバッファからの入力である点を除いて、wolfSSL_CTX_trust_peer_certと同じ機能です。この機能は、マクロWOLFSSL_TRUST_PEER_CERTを定義することで有効になります。適切な使用方法については例を参照してください。
int wolfSSL_CTX_set_group_messages(WOLFSSL_CTX * ctx)
この関数は、可能な場合にハンドシェイクメッセージのグループ化をオンにします。
int wolfSSL_set_group_messages(WOLFSSL * ssl)
この関数は、可能な場合にハンドシェイクメッセージのグループ化をオンにします。
int wolfSSL_CTX_SetMinVersion(WOLFSSL_CTX * ctx, int version)
この関数は、許可される最小ダウングレードバージョンを設定します。ダウングレードを許可する接続(wolfSSLv23_client_methodまたはwolfSSLv23_server_method)を使用する場合にのみ適用されます。
int wolfSSL_SetVersion(WOLFSSL * ssl, int version)
この関数は、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)
ハンドシェイク中に使用するWOLFSSL構造体の証明書を設定するために使用されます。DER形式のバッファが必要です。
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)
ctxのWOLFSSL_X509_STORE構造体のsetter関数です。
WOLFSSL_X509_STORE * wolfSSL_CTX_get_cert_store(WOLFSSL_CTX * ctx)
ctxのWOLFSSL_X509_STORE構造体のgetter関数です。
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内に設定されたパスワードコールバックのgetter関数です。
void * wolfSSL_CTX_get_default_passwd_cb_userdata(WOLFSSL_CTX * ctx)
ctx内に設定されたパスワードコールバックユーザーデータのgetter関数です。
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を含める必要があることを示すために、サーバ側で呼び出されます。また、プロトコルDTLS v1.3を使用する場合、ハンドシェイクには常にCookie交換が含まれることを示します。プロトコルDTLS v1.3を使用する場合、Cookie交換はデフォルトで有効になっていることに注意してください。Cookieは現在のトランスクリプトのハッシュを保持しており、別のサーバプロセスが応答のClientHelloを処理できるようにします。secretは、Cookieデータの完全性チェックを生成する際に使用されます。
int wolfSSL_disable_hrr_cookie(WOLFSSL * ssl)
この関数は、HelloRetryRequestメッセージにCookieを含めてはならないこと、およびプロトコルDTLS v1.3を使用している場合、ハンドシェイクにCookie交換を含めないことを示すために、サーバ側で呼び出されます。プロトコルDTLS v1.3を使用する際にCookie交換を行わないと、サーバがDoS/増幅攻撃に対して脆弱になる可能性があることに注意してください。
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)
この関数は、事前共有鍵を認証に使用するハンドシェイクの際に、Diffie_Hellman(DH)スタイルの鍵交換を禁止するために、TLS v1.3 wolfSSLコンテキストで呼び出されます。
int wolfSSL_no_dhe_psk(WOLFSSL * ssl)
この関数は、事前共有鍵を認証に使用するハンドシェイクの際に、Diffie_Hellman(DH)スタイルの鍵交換を禁止するために、TLS v1.3クライアントまたはサーバwolfSSLで呼び出されます。
int wolfSSL_CTX_allow_post_handshake_auth(WOLFSSL_CTX * ctx)
この関数は、サーバからの要求に応じてクライアント証明書をハンドシェイク後に送信できるようにするために、TLS v1.3クライアントwolfSSLコンテキストで呼び出されます。これは、クライアント認証が必要なページとそうでないページを持つWebサーバに接続する際に便利です。
int wolfSSL_allow_post_handshake_auth(WOLFSSL * ssl)
この関数は、サーバからの要求に応じてクライアント証明書をハンドシェイク後に送信できるようにするために、TLS v1.3クライアントwolfSSLで呼び出されます。Post-Handshake Client Authentication拡張がClientHelloで送信されます。これは、クライアント認証が必要なページとそうでないページを持つWebサーバに接続する際に便利です。
int wolfSSL_CTX_set1_groups_list(WOLFSSL_CTX * ctx, char * list)
この関数は、wolfSSLコンテキストで優先順位に従って許可する楕円曲線グループのリストを設定します。リストはnull終端のテキスト文字列で、コロン区切りのリストです。TLS v1.3接続で使用する鍵交換楕円曲線パラメータを設定するには、この関数を呼び出してください。
int wolfSSL_set1_groups_list(WOLFSSL * ssl, char * list)
この関数は、wolfSSLで優先順位に従って許可する楕円曲線グループのリストを設定します。リストはnull終端のテキスト文字列で、コロン区切りのリストです。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)
この関数は、TLS v1.3クライアントまたはサーバがwolfSSLコンテキストを使用して交換する意思のある早期データの最大量を設定します。リプレイ攻撃を軽減するために処理する早期データの量を制限するには、この関数を呼び出してください。早期データは、セッションチケットが送信された接続の鍵から派生した鍵によって保護されるため、セッションチケットが再開に使用されるたびに同じになります。この値は再開用のセッションチケットに含まれます。サーバの値がゼロの場合、セッションチケットを使用してクライアントが早期データを送信しないことを示します。クライアントの値がゼロの場合、クライアントが早期データを送信しないことを示します。早期データのバイト数は、アプリケーションで実用的に可能な限り低く保つことをお勧めします。
int wolfSSL_set_max_early_data(WOLFSSL * ssl, unsigned int sz)
この関数は、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構造体のoptionsフィールドの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)
この関数がクライアント側で呼び出された場合、ピアに送信できる証明書タイプを設定します。サーバー側で呼び出された場合、ピアから受け入れ可能な証明書タイプを設定します。優先順位の高い順にバッファに証明書タイプを格納します。設定をデフォルトにリセットするには、bufにNULLを渡すか、lenに0を渡します。デフォルトでは、証明書タイプはX509のみです。両側が"Raw public key"証明書を送信または受け入れることを意図している場合、WOLFSSL_CERT_TYPE_RPKをバッファに含めて設定する必要があります。
int wolfSSL_CTX_set_server_cert_type(WOLFSSL_CTX * ctx, const char * buf, int len)
この関数がサーバー側で呼び出された場合、ピアに送信できる証明書タイプを設定します。クライアント側で呼び出された場合、ピアから受け入れ可能な証明書タイプを設定します。優先順位の高い順にバッファに証明書タイプを格納します。設定をデフォルトにリセットするには、bufにNULLを渡すか、lenに0を渡します。デフォルトでは、証明書タイプはX509のみです。両側が"Raw public key"証明書を送信または受け入れることを意図している場合、WOLFSSL_CERT_TYPE_RPKをバッファに含めて設定する必要があります。
int wolfSSL_set_client_cert_type(WOLFSSL * ssl, const char * buf, int len)
この関数がクライアント側で呼び出された場合、ピアに送信できる証明書タイプを設定します。サーバー側で呼び出された場合、ピアから受け入れ可能な証明書タイプを設定します。優先順位の高い順にバッファに証明書タイプを格納します。設定をデフォルトにリセットするには、bufにNULLを渡すか、lenに0を渡します。デフォルトでは、証明書タイプはX509のみです。両側が"Raw public key"証明書を送信または受け入れることを意図している場合、WOLFSSL_CERT_TYPE_RPKをバッファに含めて設定する必要があります。
int wolfSSL_set_server_cert_type(WOLFSSL * ssl, const char * buf, int len)
この関数がサーバー側で呼び出された場合、ピアに送信できる証明書タイプを設定します。クライアント側で呼び出された場合、ピアから受け入れ可能な証明書タイプを設定します。優先順位の高い順にバッファに証明書タイプを格納します。設定をデフォルトにリセットするには、bufにNULLを渡すか、lenに0を渡します。デフォルトでは、証明書タイプはX509のみです。両側が"Raw public key"証明書を送信または受け入れることを意図している場合、WOLFSSL_CERT_TYPE_RPKをバッファに含めて設定する必要があります。
int wolfSSL_CTX_clear_group_messages(WOLFSSL_CTX * ctx)
指定されたWOLFSSL_CTXコンテキストに対してハンドシェイクメッセージグループ化を無効にします。
int wolfSSL_clear_group_messages(WOLFSSL * ssl)
指定されたWOLFSSLオブジェクトに対してハンドシェイクメッセージグループ化を無効にします。
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コンテキストを設定します。
void wolfSSL_SSLDisableRead(WOLFSSL * ssl)
この関数はIOレイヤーからの読み取りを無効にします。
void wolfSSL_SSLEnableRead(WOLFSSL * ssl)
この関数はIOレイヤーからの読み取りを有効にします。 読み取りはデフォルトで有効になっており、wolfSSL_SSLDisableRead()を元に戻すために使用する必要があります。

Functions Documentation

function wolfSSLv23_method

WOLFSSL_METHOD * wolfSSLv23_method(
    void 
)

この関数はwolfSSLv23_client_methodに似たWOLFSSL_METHODを返しますが、どちら側(サーバ/クライアント)であるかがまだ決定されていない点が異なります。

Parameters:

  • none パラメータはありません。

See:

Return:

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

Example

WOLFSSL* ctx;
ctx  = wolfSSL_CTX_new(wolfSSLv23_method());
// ret値をチェック

function wolfSSLv3_server_method

WOLFSSL_METHOD * wolfSSLv3_server_method(
    void 
)

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

Parameters:

  • none パラメータはありません。

See:

Return:

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

Example

#include <wolfssl/ssl.h>

WOLFSSL_METHOD* method;
WOLFSSL_CTX* ctx;

method = wolfSSLv3_server_method();
if (method == NULL) {
    メソッドを取得できません
}

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構造体のためのメモリを割り当てて初期化します。

Parameters:

  • none パラメータはありません。

See:

Return:

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

Example

#include <wolfssl/ssl.h>

WOLFSSL_METHOD* method;
WOLFSSL_CTX* ctx;

method = wolfSSLv3_client_method();
if (method == NULL) {
    メソッドを取得できません
}

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構造体のためのメモリを割り当てて初期化します。

Parameters:

  • none パラメータはありません。

See:

Return:

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

Example

#include <wolfssl/ssl.h>

WOLFSSL_METHOD* method;
WOLFSSL_CTX* ctx;

method = wolfTLSv1_server_method();
if (method == NULL) {
    メソッドを取得できません
}

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構造体のためのメモリを割り当てて初期化します。

Parameters:

  • none パラメータはありません。

See:

Return:

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

Example

#include <wolfssl/ssl.h>

WOLFSSL_METHOD* method;
WOLFSSL_CTX* ctx;

method = wolfTLSv1_client_method();
if (method == NULL) {
    メソッドを取得できません
}

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構造体のためのメモリを割り当てて初期化します。

Parameters:

  • none パラメータはありません。

See:

Return:

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

Example

#include <wolfssl/ssl.h>

WOLFSSL_METHOD* method;
WOLFSSL_CTX* ctx;

method = wolfTLSv1_1_server_method();
if (method == NULL) {
    // メソッドを取得できません
}

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構造体のためのメモリを割り当てて初期化します。

Parameters:

  • none パラメータはありません。

See:

Return:

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

Example

#include <wolfssl/ssl.h>

WOLFSSL_METHOD* method;
WOLFSSL_CTX* ctx;

method = wolfTLSv1_1_client_method();
if (method == NULL) {
    // メソッドを取得できません
}

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構造体のためのメモリを割り当てて初期化します。

Parameters:

  • none パラメータはありません。

See:

Return:

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

Example

#include <wolfssl/ssl.h>

WOLFSSL_METHOD* method;
WOLFSSL_CTX* ctx;

method = wolfTLSv1_2_server_method();
if (method == NULL) {
    // メソッドを取得できません
}

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構造体のためのメモリを割り当てて初期化します。

Parameters:

  • none パラメータはありません。

See:

Return:

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

Example

#include <wolfssl/ssl.h>

WOLFSSL_METHOD* method;
WOLFSSL_CTX* ctx;

method = wolfTLSv1_2_client_method();
if (method == NULL) {
    // メソッドを取得できません
}

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を定義することによって)にのみ利用可能です。

Parameters:

  • none パラメータはありません。

See:

Return:

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

Example

WOLFSSL_METHOD* method;
WOLFSSL_CTX* ctx;

method = wolfDTLSv1_client_method();
if (method == NULL) {
    // メソッドを取得できません
}

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を定義することによって)。

Parameters:

  • none パラメータはありません。

See:

Return:

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

Example

WOLFSSL_METHOD* method;
WOLFSSL_CTX* ctx;

method = wolfDTLSv1_server_method();
if (method == NULL) {
    // メソッドを取得できません
}

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がDTLSv1.3サポートを有効にしてコンパイルされている場合にのみ使用可能です(–enable-dtls13、またはwolfSSL_DTLS13を定義することによって)。

Parameters:

  • none パラメータはありません。

See: wolfDTLSv1_3_client_method

Return:

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

Example

WOLFSSL_METHOD* method;
WOLFSSL_CTX* ctx;

method = wolfDTLSv1_3_server_method();
if (method == NULL) {
    // メソッドを取得できません
}

ctx = wolfSSL_CTX_new(method);
...

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がDTLSv1.3サポートを有効にしてコンパイルされている場合にのみ使用可能です(–enable-dtls13、またはwolfSSL_DTLS13を定義することによって)。

Parameters:

  • none パラメータはありません。

See: wolfDTLSv1_3_server_method

Return:

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

Example

WOLFSSL_METHOD* method;
WOLFSSL_CTX* ctx;

method = wolfDTLSv1_3_client_method();
if (method == NULL) {
    // メソッドを取得できません
}

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:

  • none パラメータはありません。

See:

Return:

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

Example

WOLFSSL_METHOD* method;
WOLFSSL_CTX* ctx;

method = wolfDTLS_server_method();
if (method == NULL) {
    // メソッドを取得できません
}

ctx = wolfSSL_CTX_new(method);
...

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:

  • none パラメータはありません。

See:

Return:

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

Example

WOLFSSL_METHOD* method;
WOLFSSL_CTX* ctx;

method = wolfDTLS_client_method();
if (method == NULL) {
    // メソッドを取得できません
}

ctx = wolfSSL_CTX_new(method);
...

function wolfSSL_use_old_poly

int wolfSSL_use_old_poly(
    WOLFSSL * ssl,
    int value
)

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

Parameters:

  • ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
  • value poly1305の情報を設定する際に古いバージョンを使用するかどうか。フラグ値1を渡すと古いpoly AEADを使用することを示し、新しいバージョンの使用に戻すにはフラグ値0を渡します。

See: none

Return: 0 成功時

Example

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

ret = wolfSSL_use_old_poly(ssl, 1);
if (ret != 0) {
    // poly1305 AEADバージョンの設定に失敗しました
}

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を定義することで有効になります。適切な使用方法については、examplesを参照してください。

Parameters:

  • ctx wolfSSL_CTX_new()で作成されたSSLコンテキストへのポインタ。
  • file 証明書を含むファイル名へのポインタ。
  • type 読み込まれる証明書のタイプ、すなわちSSL_FILETYPE_ASN1 またはSSL_FILETYPE_PEM。

See:

Return:

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

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) {
    // 信頼されたピア証明書の読み込みエラー
}
...

function wolfSSL_CTX_get_verify_depth

long wolfSSL_CTX_get_verify_depth(
    WOLFSSL_CTX * ctx
)

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

Parameters:

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

See:

Return:

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

Example

WOLFSSL_METHOD method; // プロトコルメソッド
WOLFSSL_CTX* ctx = WOLFSSL_CTX_new(method);
…
long ret = wolfSSL_CTX_get_verify_depth(ctx);

if(ret == EXPECTED){
    //  期待値を取得しました
} else {
    //  予期しない深度を処理
}

function wolfSSL_CTX_new

WOLFSSL_CTX * wolfSSL_CTX_new(
    WOLFSSL_METHOD * 
)

この関数は、入力として希望するSSL/TLSプロトコルメソッドを取り、新しいSSLコンテキストを作成します。

Parameters:

  • method SSLコンテキストに使用する希望のWOLFSSL_METHODへのポインタ。これは、SSL/TLS/DTLSプロトコルレベルを指定するためのwolfSSLvXX_XXXX_method()関数のいずれかを使用して作成されます。

See: wolfSSL_new

Return:

  • pointer 成功した場合、呼び出しは新しく作成されたWOLFSSL_CTXへのポインタを返します。
  • NULL 失敗時。

Example

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

method = wolfSSLv3_client_method();
if (method == NULL) {
    // メソッドを取得できません
}

ctx = wolfSSL_CTX_new(method);
if (ctx == NULL) {
    // コンテキストの作成に失敗しました
}

function wolfSSL_new

WOLFSSL * wolfSSL_new(
    WOLFSSL_CTX * 
)

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

Parameters:

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) {
    // コンテキストの作成に失敗しました
}

ssl = wolfSSL_new(ctx);
if (ssl == NULL) {
    // SSLオブジェクトの作成に失敗しました
}

function wolfSSL_set_fd

int wolfSSL_set_fd(
    WOLFSSL * ssl,
    int fd
)

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

Parameters:

  • ssl wolfSSL_new()で作成されたSSLセッションへのポインタ。
  • 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) {
    // SSLファイルディスクリプタの設定に失敗しました
}

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()で作成されたSSLセッションへのポインタ。
  • 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) {
    // 接続エラーを処理
}
...
ret = wolfSSL_set_dtls_fd_connected(ssl, sockfd);
if (ret != SSL_SUCCESS) {
    // SSLファイルディスクリプタの設定に失敗しました
}

function wolfDTLS_SetChGoodCb

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

正しく処理および検証されたDTLSクライアントhelloに対するコールバックを設定できます。クッキー交換メカニズム(DTLS 1.2のHelloVerifyRequestまたはクッキー拡張を伴うDTLS 1.3のHelloRetryRequest)を使用する場合、このコールバックはクッキー交換が成功した後に呼び出されます。これは、1つのWOLFSSLオブジェクトを新しい接続のリスナーとして使用し、ClientHelloが検証された後(クッキー交換を通じて、またはClientHelloが正しい形式であるかをチェックするだけで)にWOLFSSLオブジェクトを分離できるようにするのに役立ちます。 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

Parameters:

  • ssl wolfSSL_new()で作成されたSSLセッションへのポインタ。
  • fd SSL/TLS接続で使用するファイルディスクリプタ。

See: wolfSSL_set_dtls_fd_connected

Return:

  • SSL_SUCCESS 成功時。
  • BAD_FUNC_ARG 失敗時。

Example

// 接続を検証したときに呼び出されます
static int chGoodCb(WOLFSSL* ssl, void* arg)
{
    // ピアとファイルディスクリプタを設定

}

if (wolfDTLS_SetChGoodCb(ssl, chGoodCb, NULL) != WOLFSSL_SUCCESS) {
     // コールバック設定エラー
}

function wolfSSL_set_using_nonblock

void wolfSSL_set_using_nonblock(
    WOLFSSL * ssl,
    int nonblock
)

この関数は、WOLFSSLオブジェクトに対して、下層のI/Oがノンブロッキングであることを通知します。アプリケーションがWOLFSSLオブジェクトを作成した後、それをノンブロッキングソケットと共に使用する場合は、wolfSSL_set_using_nonblock()を呼び出してください。これにより、WOLFSSLオブジェクトは、EWOULDBLOCKを受け取ることがタイムアウトではなく、recvfrom呼び出しがブロックすることを意味すると認識できます。

Parameters:

  • ssl wolfSSL_new()で作成されたSSLセッションへのポインタ。
  • nonblock WOLFSSLオブジェクトのノンブロッキングフラグを設定するための値。ノンブロッキングを指定する場合は1を、そうでない場合は0を使用してください。

See:

Return: none 戻り値はありません。

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:

See:

Return: none 戻り値はありません。

Example

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

function wolfSSL_free

void wolfSSL_free(
    WOLFSSL * 
)

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

Parameters:

  • ssl wolfSSL_new()で作成されたSSLオブジェクトへのポインタ。

See:

Return: none 戻り値はありません。

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()によって返されたオブジェクトは、アプリケーションが使用を終えた後、wolfSSL_SESSION_free()を呼び出して解放する必要があります。

Parameters:

  • ssl wolfSSL_new()で作成されたSSLオブジェクトへのポインタ。
  • session sslのセッションを設定するために使用される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) {
    // sslオブジェクトからセッションオブジェクトの取得に失敗しました
}
...
ret = wolfSSL_set_session(ssl, session);
if (ret != SSL_SUCCESS) {
    // SSLセッションの設定に失敗しました
}
wolfSSL_SESSION_free(session);
...

function wolfSSL_CTX_set_verify

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

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

Parameters:

  • ctx wolfSSL_CTX_new()で作成されたSSLコンテキストへのポインタ。
  • mode ピアの証明書の検証モードを示すフラグ。
  • verify_callback 検証が失敗したときに呼び出されるコールバック。コールバックが不要な場合は、verify_callbackにNULLポインタを使用できます。

See: wolfSSL_set_verify

Return: none 返り値はありません。

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
)

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

Parameters:

  • ssl wolfSSL_new()で作成されたSSLセッションへのポインタ。
  • mode ピアの証明書の検証モードを示すフラグ。
  • verify_callback 検証が失敗したときに呼び出されるコールバック。コールバックが不要な場合は、verify_callbackにNULLポインタを使用できます。

See: wolfSSL_CTX_set_verify

Return: none 返り値はありません。

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セッションキャッシングを有効または無効にします。動作はmodeに使用される値に依存します。modeに使用できる値は以下の通りです。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) {
    // SSLセッションキャッシングをオフにすることができませんでした。
}

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 証明書キャッシュに復元される値を持つvoid型ポインタ。
  • sz memパラメータのサイズを表すint型。

See: CM_MemRestoreCertCache

Return:

  • SSL_SUCCESS 関数とサブルーチンがエラーなく実行された場合に返されます。
  • BAD_FUNC_ARG ctxまたはmemパラメータがNULLの場合、またはszパラメータが0以下の場合に返されます。
  • BUFFER_E 証明書キャッシュのメモリバッファが小さすぎる場合に返されます。
  • CACHE_MATCH_ERROR 証明書キャッシュヘッダの不一致があった場合に返されます。
  • BAD_MUTEX_E ロックmutexが失敗した場合に返されます。

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)){
    // 成功ケース
}

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コンテキストの暗号スイートリストが提供されたリストにリセットされます。暗号スイートリストであるlistは、nullで終端されたテキスト文字列であり、コロン区切りのリストです。例えば、listの1つの値は「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 指定されたSSLコンテキストで使用する暗号スイートのnullで終端されたテキスト文字列およびコロン区切りリスト。

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) {
    // 暗号スイートリストの設定に失敗しました。
}

function wolfSSL_set_cipher_list

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

この関数は、指定されたWOLFSSLオブジェクト(SSLセッション)に対する暗号スイートリストを設定します。リスト内の暗号は、優先度の高い順から低い順に並べる必要があります。wolfSSL_set_cipher_list()を呼び出すたびに、関数が呼び出されるたびに、特定のSSLセッションの暗号スイートリストが提供されたリストにリセットされます。暗号スイートリストであるlistは、nullで終端されたテキスト文字列であり、コロン区切りのリストです。例えば、listの1つの値は「DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:AES256-SHA256」となる可能性があります。有効な暗号値は、src/internal.cのcipher_names[]配列からの完全な名前値です(有効な暗号値の明確なリストについては、src/internal.cを確認してください)。

Parameters:

  • ssl wolfSSL_new()で作成されたSSLセッションへのポインタ。
  • list null終端テキスト文字列であり、指定されたSSLセッションで使用する暗号スイートのコロン区切りリスト。

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) {
    // 暗号スイートリストの設定に失敗
}

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構造体へのポインタ。
  • timeout WOLFSSL構造体のdtls_timeout_initメンバに設定されるint型の値。

See:

Return:

  • SSL_SUCCESS 関数がエラーなく実行された場合に返されます。SSLのdtls_timeout_initおよびdtls_timeoutメンバが設定されています。
  • BAD_FUNC_ARG WOLFSSL構造体がNULLであるか、またはタイムアウトが0より大きくない場合に返されます。また、timeout引数が許容される最大値を超える場合にも返されます。

Example

WOLFSSL_CTX* ctx = wolfSSL_CTX_new( method );
WOLFSSL* ssl = wolfSSL_new(ctx);
int timeout = TIMEOUT;
...
if(wolfSSL_dtls_set_timeout_init(ssl, timeout)){
    // dtlsタイムアウトが設定された
} else {
    // DTLSタイムアウトの設定に失敗
}

function wolfSSL_get1_session

WOLFSSL_SESSION * wolfSSL_get1_session(
    WOLFSSL * ssl
)

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

Parameters:

  • ssl セッションを取得するWOLFSSL構造体。

See:

Return:

  • WOLFSSL_SESSION 成功時にセッションポインタを返します。
  • NULL sslがNULL、SSLセッションキャッシュが無効、wolfSSLがセッションIDを利用できない、またはmutex関数が失敗した場合に返されます。

Example

WOLFSSL* ssl;
WOLFSSL_SESSION* ses;    // ハンドシェイクを試行/完了
wolfSSL_connect(ssl);
ses  = wolfSSL_get1_session(ssl);
// ses情報を確認
// 切断/新しいSSLインスタンスをセットアップ
wolfSSL_set_session(ssl, ses);
// ハンドシェイクを試行/再開
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までを実行しているサーバに接続できます。

Parameters:

  • none パラメータなし。

See:

Return:

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

Example

WOLFSSL_METHOD* method;
WOLFSSL_CTX* ctx;
method = wolfSSLv23_client_method();
if (method == NULL) {
    // メソッドを取得できませんでした
}

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 失敗時にはNullが返されます。

Example

WOLFSSL_ASN1_INTEGER* ai;
WOLFSSL_BIGNUM* bn;
// aiを作成
bn = wolfSSL_ASN1_INTEGER_to_BN(ai, NULL);

// または既にbnを作成済みで構造体を再利用したい場合
// wolfSSL_ASN1_INTEGER_to_BN(ai, bn);
// bnまたは戻り値が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 チェーンに追加する証明書。

See:

Return:

  • SSL_SUCCESS 証明書の追加に成功した後に返されます。
  • SSL_FAILURE 証明書のチェーンへの追加に失敗した場合に返されます。

Example

WOLFSSL_CTX* ctx;
WOLFSSL_X509* x509;
int ret;
// ctxを作成
ret = wolfSSL_CTX_add_extra_chain_cert(ctx, x509);
// ret値を確認

function wolfSSL_CTX_get_read_ahead

int wolfSSL_CTX_get_read_ahead(
    WOLFSSL_CTX * ctx
)

この関数は、WOLFSSL_CTX構造体からリードアヘッドフラグを取得して返します。

Parameters:

  • ctx リードアヘッドフラグを取得するWOLFSSL_CTX構造体。

See:

Return:

  • flag 成功時にはリードアヘッドフラグが返されます。
  • SSL_FAILURE ctxがNULLの場合、SSL_FAILUREが返されます。

Example

WOLFSSL_CTX* ctx;
int flag;
// ctxをセットアップ
flag = wolfSSL_CTX_get_read_ahead(ctx);
//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の場合、SSL_FAILUREが返されます。

Example

WOLFSSL_CTX* ctx;
int flag;
int ret;
// ctxをセットアップ
ret = wolfSSL_CTX_set_read_ahead(ctx, flag);
// 戻り値を確認

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 ユーザー引数。
  • ctx WOLFSSL_CTXオブジェクト。
  • arg コールバックに渡すユーザー引数。

See:

Return:

  • SSL_FAILURE ctxまたはその証明書マネージャがNULLの場合。
  • SSL_SUCCESS 正常に設定された場合。
  • SSL_SUCCESS 成功時、それ以外の場合はSSL_FAILURE。

OCSPステータスコールバックに渡される引数を設定します。

Example

WOLFSSL_CTX* ctx;
void* data;
int ret;
// ctxをセットアップ
ret = wolfSSL_CTX_set_tlsext_status_arg(ctx, data);

//ret値を確認

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;
// ctxをセットアップ
ret = wolfSSL_CTX_set_tlsext_opaques_prf_input_callback_arg(ctx, data);
//ret値を確認

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、SSL_OP_NO_TLSv1_1、SSL_OP_NO_TLSv1_2、SSL_OP_NO_COMPRESSIONがあります。

Parameters:

  • s オプションマスクを設定するWOLFSSL構造体。
  • op この関数は、ssl内のオプションマスクを設定します。有効なオプションには以下が含まれます: 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);
// 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);
// 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;
// sslオブジェクトを作成
ret  = wolfSSL_set_tlsext_debug_arg(ssl, args);
// ret値を確認

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が渡された場合。

Example

WOLFSSL* ssl;
long ret;
// ハンドシェイクを試行/完了
ret  = wolfSSL_get_verify_result(ssl);
// ret値を確認

function wolfSSL_CTX_allow_anon_cipher

int wolfSSL_CTX_allow_anon_cipher(
    WOLFSSL_CTX * 
)

この関数は、コンパイル時にHAVE_ANONが定義されている場合、CTX構造体のhavAnonメンバを有効にします。

Parameters:

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

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){
        // 失敗ケース
    }
}
#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構造体のためのメモリを割り当て、初期化します。

Parameters:

  • none パラメータなし。

See:

Return:

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

Example

WOLFSSL_METHOD* method;
WOLFSSL_CTX* ctx;

method = wolfSSLv23_server_method();
if (method == NULL) {
    // メソッドを取得できませんでした
}

ctx = wolfSSL_CTX_new(method);
...

function wolfSSL_state

int wolfSSL_state(
    WOLFSSL * ssl
)

これは、WOLFSSL構造体の内部エラー状態を取得するために使用されます。

See:

Return:

  • wolfssl_error sslエラー状態を返します。通常は負の値です。
  • BAD_FUNC_ARG sslがNULLの場合。
  • ssl 状態を取得するWOLFSSL構造体。

Example

WOLFSSL* ssl;
int ret;
// sslオブジェクトを作成
ret  = wolfSSL_state(ssl);
// ret値を確認

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構造体へのポインタ。
  • dn 受信したピア証明書に対してチェックするドメイン名。

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) {
   // ドメイン名チェックの有効化に失敗しました
}

function wolfSSL_set_compression

int wolfSSL_set_compression(
    WOLFSSL * ssl
)

SSL接続で圧縮を使用する機能をオンにします。両側で圧縮をオンにする必要があります。そうでない場合、圧縮は使用されません。zlibライブラリが実際のデータ圧縮を実行します。ライブラリにコンパイルするには、configureシステムで–with-libzを使用し、HAVE_LIBZを定義してください。送信前にデータを圧縮すると送受信されるメッセージの実際のサイズは減少しますが、圧縮によって節約されるデータの量は、最も遅いネットワークを除いて、生データで送信するよりも解析に時間がかかることに注意してください。

Parameters:

  • ssl wolfSSL_new()で作成されたSSLセッションへのポインタ。

See: none

Return:

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

Example

int ret = 0;
WOLFSSL* ssl = 0;
...
ret = wolfSSL_set_compression(ssl);
if (ret == SSL_SUCCESS) {
    // SSLセッションの圧縮を正常に有効化しました
}

function wolfSSL_set_timeout

int wolfSSL_set_timeout(
    WOLFSSL * ssl,
    unsigned int to
)

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

Parameters:

  • ssl wolfSSL_new()で作成されたSSLオブジェクトへのポインタ。
  • to SSLセッションタイムアウトの設定に使用される秒単位の値。

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) {
    // セッションタイムアウト値の設定に失敗しました
}
...

function wolfSSL_CTX_set_timeout

int wolfSSL_CTX_set_timeout(
    WOLFSSL_CTX * ctx,
    unsigned int to
)

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

Parameters:

  • ctx wolfSSL_CTX_new()で作成されたSSLコンテキストへのポインタ。
  • to セッションタイムアウト値(秒単位)。

See:

Return:

  • WOLFSSL_ERROR_CODE_OPENSSLが定義されている場合、成功時に以前のタイムアウト値が返されます。定義されていない場合、SSL_SUCCESSが返されます。
  • BAD_FUNC_ARG 入力コンテキスト(ctx)がnullの場合に返されます。

Example

WOLFSSL_CTX*    ctx    = 0;
...
ret = wolfSSL_CTX_set_timeout(ctx, 500);
if (ret != SSL_SUCCESS) {
    // セッションタイムアウト値の設定に失敗しました
}

function wolfSSL_CTX_UnloadCAs

int wolfSSL_CTX_UnloadCAs(
    WOLFSSL_CTX * 
)

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

Parameters:

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

See:

Return:

  • SSL_SUCCESS 関数の実行が成功した場合に返されます。
  • BAD_FUNC_ARG WOLFSSL_CTX構造体がNULLの場合、またはサブルーチンで許可されない引数値が渡された場合に返されます。
  • BAD_MUTEX_E mutexエラーが発生した場合に返されます。LockMutex()が0を返しませんでした。

Example

WOLFSSL_METHOD method = wolfTLSv1_2_client_method();
WOLFSSL_CTX* ctx = WOLFSSL_CTX_new(method);
…
if(wolfSSL_CTX_UnloadCAs(ctx) != SSL_SUCCESS){
    // 関数はCAをアンロードしませんでした
}

function wolfSSL_CTX_UnloadIntermediateCerts

int wolfSSL_CTX_UnloadIntermediateCerts(
    WOLFSSL_CTX * ctx
)

この関数は、CA署名者リストに追加された中間証明書をアンロードし、解放します。

Parameters:

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

See:

Return:

  • SSL_SUCCESS 関数の実行が成功した場合に返されます。
  • BAD_FUNC_ARG WOLFSSL_CTX構造体がNULLの場合、またはサブルーチンで許可されない引数値が渡された場合に返されます。
  • BAD_STATE_E WOLFSSL_CTXの参照カウントが1より大きい場合に返されます。
  • BAD_MUTEX_E mutexエラーが発生した場合に返されます。LockMutex()が0を返しませんでした。

Example

WOLFSSL_METHOD method = wolfTLSv1_2_client_method();
WOLFSSL_CTX* ctx = WOLFSSL_CTX_new(method);
…
if(wolfSSL_CTX_UnloadIntermediateCerts(ctx) != NULL){
    // 関数はCAをアンロードしませんでした
}

function wolfSSL_CTX_Unload_trust_peers

int wolfSSL_CTX_Unload_trust_peers(
    WOLFSSL_CTX * 
)

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

Parameters:

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) {
    // 信頼されたピア証明書のアンロードエラー
}
...

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ハンドシェイクを実行する際にピアを検証するために使用する証明書をロードします。ハンドシェイク中に送信されるピア証明書は、利用可能な場合はSKIDと署名を使用して比較されます。これら2つが一致しない場合は、ロードされたCAが使用されます。ファイルではなくバッファからの入力である点を除いて、wolfSSL_CTX_trust_peer_certと同じ機能です。この機能は、マクロWOLFSSL_TRUST_PEER_CERTを定義することで有効になります。適切な使用方法については例を参照してください。

Parameters:

  • ctx wolfSSL_CTX_new()で作成されたSSLコンテキストへのポインタ。
  • buffer 証明書を含むバッファへのポインタ。
  • sz 入力バッファの長さ。
  • type ロードされる証明書のタイプ、すなわちSSL_FILETYPE_ASN1またはSSL_FILETYPE_PEM。

See:

Return:

  • SSL_SUCCESS 成功時。
  • SSL_FAILURE ctxがNULL、またはfileとtypeの両方が無効な場合に返されます。
  • 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) {
    // 信頼されたピア証明書のロードエラー
}
...

function wolfSSL_CTX_set_group_messages

int wolfSSL_CTX_set_group_messages(
    WOLFSSL_CTX * ctx
)

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

Parameters:

  • ctx wolfSSL_CTX_new()で作成されたSSLコンテキストへのポインタ。
  • ctx WOLFSSL_CTX構造体へのポインタ。

See:

Return:

  • SSL_SUCCESS 成功時に返されます。
  • BAD_FUNC_ARG 入力コンテキストがnullの場合に返されます。
  • WOLFSSL_SUCCESS 成功時。
  • BAD_FUNC_ARG ctxがNULLの場合。

指定されたWOLFSSL_CTXコンテキストに対してハンドシェイクメッセージグループ化を有効にします。

Example

WOLFSSL_CTX* ctx = 0;
...
ret = wolfSSL_CTX_set_group_messages(ctx);
if (ret != SSL_SUCCESS) {
    // ハンドシェイクメッセージのグループ化の設定に失敗
}

この関数は、指定されたコンテキストから作成されたすべてのSSLオブジェクトに対してハンドシェイクメッセージグループ化をオンにします。

Example

WOLFSSL_CTX* ctx = wolfSSL_CTX_new(wolfTLSv1_2_client_method());
wolfSSL_CTX_set_group_messages(ctx);

function wolfSSL_set_group_messages

int wolfSSL_set_group_messages(
    WOLFSSL * ssl
)

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

Parameters:

  • ssl wolfSSL_new()で作成されたSSLセッションへのポインタ。
  • ssl WOLFSSL構造体へのポインタ。

See:

Return:

  • SSL_SUCCESS 成功時に返されます。
  • BAD_FUNC_ARG 入力コンテキストがnullの場合に返されます。
  • WOLFSSL_SUCCESS 成功時。
  • BAD_FUNC_ARG sslがNULLの場合。

指定されたWOLFSSLオブジェクトに対してハンドシェイクメッセージグループ化を有効にします。

Example

WOLFSSL* ssl = 0;
...
ret = wolfSSL_set_group_messages(ssl);
if (ret != SSL_SUCCESS) {
    // ハンドシェイクメッセージのグループ化の設定に失敗
}

この関数は、指定されたSSLオブジェクトに対してハンドシェイクメッセージグループ化をオンにします。

Example

WOLFSSL* ssl = wolfSSL_new(ctx);
wolfSSL_set_group_messages(ssl);

function wolfSSL_CTX_SetMinVersion

int wolfSSL_CTX_SetMinVersion(
    WOLFSSL_CTX * ctx,
    int version
)

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

Parameters:

  • ctx wolfSSL_CTX_new()を使用して作成されたWOLFSSL_CTX構造体へのポインタ。
  • version 最小値として設定されるバージョンの整数表現: WOLFSSL_SSLV3 = 0、WOLFSSL_TLSV1 = 1、WOLFSSL_TLSV1_1 = 2、またはWOLFSSL_TLSV1_2 = 3。

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; // マクロ表現
…
if(wolfSSL_CTX_SetMinVersion(ssl->ctx, version) != SSL_SUCCESS){
    // 最小バージョンの設定に失敗
}

function wolfSSL_SetVersion

int wolfSSL_SetVersion(
    WOLFSSL * ssl,
    int version
)

この関数は、versionで指定されたバージョンを使用して、指定されたSSLセッション(WOLFSSLオブジェクト)のSSL/TLSプロトコルバージョンを設定します。これにより、SSLセッション(ssl)のプロトコル設定が上書きされます。これは元々SSLコンテキスト(wolfSSL_CTX_new())のメソッドタイプによって定義および設定されたものです。

Parameters:

  • ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
  • version SSL/TLSプロトコルバージョン。指定可能な値には、WOLFSSL_SSLV3、WOLFSSL_TLSV1、WOLFSSL_TLSV1_1、WOLFSSL_TLSV1_2があります。

See: wolfSSL_CTX_new

Return:

  • SSL_SUCCESS 成功時。
  • BAD_FUNC_ARG 入力されたSSLオブジェクトがNULLの場合、またはversionに不正なプロトコルバージョンが指定された場合に返されます。

Example

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

ret = wolfSSL_SetVersion(ssl, WOLFSSL_TLSV1);
if (ret != SSL_SUCCESS) {
    // SSLセッションのプロトコルバージョンの設定に失敗しました。
}

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 プロトコル名リストのサイズ。
  • options WOLFSSL_ALPN_CONTINUE_ON_MISMATCHまたはWOLFSSL_ALPN_FAILED_ON_MISMATCH。

See: TLSX_UseALPN

Return:

  • WOLFSSL_SUCCESS 成功時。
  • BAD_FUNC_ARG sslまたはprotocol_name_listがnull、またはprotocol_name_listSzが大きすぎる、またはoptionsがサポートされていない何かを含む場合に返されます。
  • MEMORY_ERROR プロトコルリストのメモリ割り当てエラー。
  • SSL_FAILURE 失敗時。

Example

wolfSSL_Init();
WOLFSSL_CTX* ctx;
WOLFSSL* ssl;
WOLFSSL_METHOD method = // 任意のwolfSSLメソッド
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)
{
   // セッションチケット設定エラー
}

function wolfSSL_CTX_UseSessionTicket

int wolfSSL_CTX_UseSessionTicket(
    WOLFSSL_CTX * ctx
)

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

Parameters:

  • ctx 使用するWOLFSSL_CTX構造体。

See: TLSX_UseSessionTicket

Return:

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

Example

wolfSSL_Init();
WOLFSSL_CTX* ctx;
WOLFSSL_METHOD method = // 何らかのwolfSSLメソッド ;
ctx = wolfSSL_CTX_new(method);

if(wolfSSL_CTX_UseSessionTicket(ctx) != SSL_SUCCESS)
{
    // セッションチケットの設定エラー
}

function wolfSSL_check_private_key

int wolfSSL_check_private_key(
    const WOLFSSL * ssl
)

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

Parameters:

  • ssl 確認するWOLFSSL構造体。

See:

Return:

  • SSL_SUCCESS 一致に成功した場合。
  • SSL_FAILURE エラーケースが発生した場合。
  • <0 SSL_FAILURE以外のすべてのエラーケースは負の値です。

Example

WOLFSSL* ssl;
int ret;
// sslを作成してセットアップ
ret  = wolfSSL_check_private_key(ssl);
// ret値を確認

function wolfSSL_use_certificate

int wolfSSL_use_certificate(
    WOLFSSL * ssl,
    WOLFSSL_X509 * x509
)

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

Parameters:

  • ssl 証明書を設定するWOLFSSL構造体。
  • x509 使用する証明書。

See:

Return:

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

Example

 WOLFSSL* ssl;
WOLFSSL_X509* x509
int ret;
// sslオブジェクトとx509を作成
ret  = wolfSSL_use_certificate(ssl, x509);
// ret値を確認

function wolfSSL_use_certificate_ASN1

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

ハンドシェイク中に使用するWOLFSSL構造体の証明書を設定するために使用されます。DER形式のバッファが必要です。

Parameters:

  • ssl 証明書を設定するWOLFSSL構造体。
  • der 使用するDER証明書。
  • derSz 渡されたDERバッファのサイズ。

See:

Return:

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

Example

WOLFSSL* ssl;
unsigned char* der;
int derSz;
int ret;
// sslオブジェクトを作成してDER変数を設定
ret  = wolfSSL_use_certificate_ASN1(ssl, der, derSz);
// ret値を確認

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 データを保持するバッファ。
  • outSz 渡されたoutバッファのサイズ(0の場合、関数は必要な最大バッファサイズを返します)。

See:

Return:

  • >0 データの取得に成功した場合、0より大きい値を返します。
  • 0 ランダムデータバッファがない、またはエラー状態の場合は0を返します。
  • max 渡されたoutSzが0の場合、必要な最大バッファサイズが返されます。

Example

WOLFSSL_SESSION ssl;
unsigned char* buffer;
size_t bufferSz;
size_t ret;
// ハンドシェイクを完了してセッション構造体を取得
bufferSz  = wolfSSL_SESSION_get_master_secret(ses, NULL, 0);
buffer = malloc(bufferSz);
ret  = wolfSSL_SESSION_get_master_secret(ses, buffer, bufferSz);
// ret値を確認

function wolfSSL_SESSION_get_master_key_length

int wolfSSL_SESSION_get_master_key_length(
    const WOLFSSL_SESSION * ses
)

マスターシークレットキーの長さを取得するために使用されます。

Parameters:

  • ses マスターシークレットバッファを取得するWOLFSSL_SESSION構造体。

See:

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

Example

WOLFSSL_SESSION ssl;
unsigned char* buffer;
size_t bufferSz;
size_t ret;
// ハンドシェイクを完了してセッション構造体を取得
bufferSz  = wolfSSL_SESSION_get_master_secret_length(ses);
buffer = malloc(bufferSz);
// ret値を確認

function wolfSSL_CTX_set_cert_store

void wolfSSL_CTX_set_cert_store(
    WOLFSSL_CTX * ctx,
    WOLFSSL_X509_STORE * str
)

ctxのWOLFSSL_X509_STORE構造体のsetter関数です。

Parameters:

  • ctx 証明書ストアポインタを設定するWOLFSSL_CTX構造体へのポインタ。
  • str ctxに設定するWOLFSSL_X509_STOREへのポインタ。

See:

Return: none 戻り値なし。

Example

WOLFSSL_CTX ctx;
WOLFSSL_X509_STORE* st;
// ctxとstをセットアップ
st = wolfSSL_CTX_set_cert_store(ctx, st);
// stを使用

function wolfSSL_CTX_get_cert_store

WOLFSSL_X509_STORE * wolfSSL_CTX_get_cert_store(
    WOLFSSL_CTX * ctx
)

ctxのWOLFSSL_X509_STORE構造体のgetter関数です。

Parameters:

  • ctx 証明書ストアポインタを取得するWOLFSSL_CTX構造体へのポインタ。

See:

Return:

  • WOLFSSL_X509_STORE* ポインタの取得に成功した場合。
  • NULL NULL引数が渡された場合に返されます。

Example

WOLFSSL_CTX ctx;
WOLFSSL_X509_STORE* st;
// ctxをセットアップ
st = wolfSSL_CTX_get_cert_store(ctx);
// 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 ランダムデータを保持するバッファ。
  • outSz 渡されたoutバッファのサイズ(0の場合、関数は必要な最大バッファサイズを返します)。

See:

Return:

  • >0 データの取得に成功した場合、0より大きい値を返します。
  • 0 ランダムデータバッファがない場合、またはエラー状態の場合、0を返します。
  • max 渡されたoutSzが0の場合、必要な最大バッファサイズを返します。

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);
// ret値を確認

function wolfSSL_get_client_random

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

ハンドシェイク中にクライアントから送信されたランダムデータを取得するために使用されます。

Parameters:

  • ssl クライアントのランダムデータバッファを取得するWOLFSSL構造体。
  • out ランダムデータを保持するバッファ。
  • outSz 渡されたoutバッファのサイズ(0の場合、関数は必要な最大バッファサイズを返します)。

See:

Return:

  • >0 データの取得に成功した場合、0より大きい値を返します。
  • 0 ランダムデータバッファがない場合、またはエラー状態の場合、0を返します。
  • max 渡されたoutSzが0の場合、必要な最大バッファサイズを返します。

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);
// ret値を確認

function wolfSSL_CTX_get_default_passwd_cb

wc_pem_password_cb * wolfSSL_CTX_get_default_passwd_cb(
    WOLFSSL_CTX * ctx
)

ctx内に設定されたパスワードコールバックのgetter関数です。

Parameters:

  • ctx コールバックを取得するWOLFSSL_CTX構造体。

See:

Return:

  • func 成功時にはコールバック関数を返します。
  • NULL ctxがNULLの場合、NULLを返します。

Example

WOLFSSL_CTX* ctx;
wc_pem_password_cb cb;
// ctxをセットアップ
cb = wolfSSL_CTX_get_default_passwd_cb(ctx);
//cbを使用

function wolfSSL_CTX_get_default_passwd_cb_userdata

void * wolfSSL_CTX_get_default_passwd_cb_userdata(
    WOLFSSL_CTX * ctx
)

ctx内に設定されたパスワードコールバックユーザーデータのgetter関数です。

Parameters:

  • ctx ユーザーデータを取得するWOLFSSL_CTX構造体。

See:

Return:

  • pointer 成功時にはユーザーデータポインタを返します。
  • NULL ctxがNULLの場合、NULLを返します。

Example

WOLFSSL_CTX* ctx;
void* data;
// ctxをセットアップ
data = wolfSSL_CTX_get_default_passwd_cb(ctx);
//dataを使用

function wolfSSL_CTX_clear_options

long wolfSSL_CTX_clear_options(
    WOLFSSL_CTX * ctx,
    long opt
)

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

Parameters:

  • ctx SSLコンテキストへのポインタ。

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構造体。

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);
// retを確認

function wolfSSL_set_msg_callback_arg

int wolfSSL_set_msg_callback_arg(
    WOLFSSL * ssl,
    void * arg
)

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

Parameters:

  • ssl コールバック引数を設定する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);
// retを確認
wolfSSL_set_msg_callback(ssl, arg);
int wolfSSL_send_hrr_cookie(
    WOLFSSL * ssl,
    const unsigned char * secret,
    unsigned int secretSz
)

この関数は、HelloRetryRequestメッセージにCookieを含める必要があることを示すために、サーバ側で呼び出されます。また、プロトコルDTLS v1.3を使用する場合、ハンドシェイクには常にCookie交換が含まれることを示します。プロトコルDTLS v1.3を使用する場合、Cookie交換はデフォルトで有効になっていることに注意してください。Cookieは現在のトランスクリプトのハッシュを保持しており、別のサーバプロセスが応答のClientHelloを処理できるようにします。secretは、Cookieデータの完全性チェックを生成する際に使用されます。

Parameters:

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

See:

Return:

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

Example

int ret;
WOLFSSL* ssl;
char secret[32];
...
ret = wolfSSL__send_hrr_cookie(ssl, secret, sizeof(secret));
if (ret != WOLFSSL_SUCCESS) {
    // Cookieとsecretの使用設定に失敗しました。
}
int wolfSSL_disable_hrr_cookie(
    WOLFSSL * ssl
)

この関数は、HelloRetryRequestメッセージにCookieを含めてはならないこと、およびプロトコルDTLS v1.3を使用している場合、ハンドシェイクにCookie交換を含めないことを示すために、サーバ側で呼び出されます。プロトコルDTLS v1.3を使用する際にCookie交換を行わないと、サーバがDoS/増幅攻撃に対して脆弱になる可能性があることに注意してください。

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 クライアントで呼び出された場合。
  • 0 成功した場合。

Example

int ret;
WOLFSSL_CTX* ctx;
...
ret = wolfSSL_CTX_no_ticket_TLSv13(ctx);
if (ret != 0) {
    // 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 クライアントで呼び出された場合。
  • 0 成功した場合。

Example

int ret;
WOLFSSL* ssl;
...
ret = wolfSSL_no_ticket_TLSv13(ssl);
if (ret != 0) {
    // no ticketの設定に失敗しました。
}

function wolfSSL_CTX_no_dhe_psk

int wolfSSL_CTX_no_dhe_psk(
    WOLFSSL_CTX * ctx
)

この関数は、事前共有鍵を認証に使用するハンドシェイクの際に、Diffie-Hellman(DH)スタイルの鍵交換を禁止するために、TLS v1.3 wolfSSLコンテキストで呼び出されます。

Parameters:

See: wolfSSL_no_dhe_psk

Return:

  • BAD_FUNC_ARG ctxがNULLまたはTLS v1.3を使用していない場合。
  • 0 成功した場合。

Example

int ret;
WOLFSSL_CTX* ctx;
...
ret = wolfSSL_CTX_no_dhe_psk(ctx);
if (ret != 0) {
    // PSKハンドシェイクのDHE無効化の設定に失敗しました。
}

function wolfSSL_no_dhe_psk

int wolfSSL_no_dhe_psk(
    WOLFSSL * ssl
)

この関数は、事前共有鍵を認証に使用するハンドシェイクの際に、Diffie-Hellman(DH)スタイルの鍵交換を禁止するために、TLS v1.3クライアントまたはサーバwolfSSLで呼び出されます。

Parameters:

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

See: wolfSSL_CTX_no_dhe_psk

Return:

  • BAD_FUNC_ARG sslがNULLまたはTLS v1.3を使用していない場合。
  • 0 成功した場合。

Example

int ret;
WOLFSSL* ssl;
...
ret = wolfSSL_no_dhe_psk(ssl);
if (ret != 0) {
    // PSKハンドシェイクのDHE無効化の設定に失敗しました。
}

function wolfSSL_CTX_allow_post_handshake_auth

int wolfSSL_CTX_allow_post_handshake_auth(
    WOLFSSL_CTX * ctx
)

この関数は、サーバからの要求に応じてクライアント証明書をハンドシェイク後に送信できるようにするために、TLS v1.3クライアントwolfSSLコンテキストで呼び出されます。これは、クライアント認証が必要なページとそうでないページを持つWebサーバに接続する際に便利です。

Parameters:

See:

Return:

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

Example

int ret;
WOLFSSL_CTX* ctx;
...
ret = wolfSSL_allow_post_handshake_auth(ctx);
if (ret != 0) {
    // ハンドシェイク後認証の許可に失敗しました。
}

function wolfSSL_allow_post_handshake_auth

int wolfSSL_allow_post_handshake_auth(
    WOLFSSL * ssl
)

この関数は、サーバからの要求に応じてクライアント証明書をハンドシェイク後に送信できるようにするために、TLS v1.3クライアントwolfSSLで呼び出されます。Post-Handshake Client Authentication拡張がClientHelloで送信されます。これは、クライアント認証が必要なページとそうでないページを持つWebサーバに接続する際に便利です。

Parameters:

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

See:

Return:

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

Example

int ret;
WOLFSSL* ssl;
...
ret = wolfSSL_allow_post_handshake_auth(ssl);
if (ret != 0) {
    // ハンドシェイク後認証の許可に失敗しました。
}

function wolfSSL_CTX_set1_groups_list

int wolfSSL_CTX_set1_groups_list(
    WOLFSSL_CTX * ctx,
    char * list
)

この関数は、wolfSSLコンテキストで優先順位に従って許可する楕円曲線グループのリストを設定します。リストはnull終端のテキスト文字列で、コロン区切りのリストです。TLS v1.3接続で使用する鍵交換楕円曲線パラメータを設定するには、この関数を呼び出してください。

Parameters:

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

See:

Return:

  • WOLFSSL_FAILURE ポインタパラメータがNULLの場合、グループがWOLFSSL_MAX_GROUP_COUNTを超える場合、グループ名が認識されない場合、またはTLS v1.3を使用していない場合。
  • WOLFSSL_SUCCESS 成功時。

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) {
    // グループリストの設定に失敗しました
}

function wolfSSL_set1_groups_list

int wolfSSL_set1_groups_list(
    WOLFSSL * ssl,
    char * list
)

この関数は、wolfSSLで優先順位に従って許可する楕円曲線グループのリストを設定します。リストはnull終端のテキスト文字列で、コロン区切りのリストです。TLS v1.3接続で使用する鍵交換楕円曲線パラメータを設定するには、この関数を呼び出してください。

Parameters:

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

See:

Return:

  • WOLFSSL_FAILURE ポインタパラメータがNULLの場合、グループがWOLFSSL_MAX_GROUP_COUNTを超える場合、グループ名が認識されない場合、またはTLS v1.3を使用していない場合。
  • WOLFSSL_SUCCESS 成功時。

Example

int ret;
WOLFSSL* ssl;
const char* list = "P-384:P-256";
...
ret = wolfSSL_CTX_set1_groups_list(ssl, list);
if (ret != WOLFSSL_SUCCESS) {
    // グループリストの設定に失敗しました
}

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 groups内の鍵交換グループの数。

See:

Return:

  • BAD_FUNC_ARG ポインタパラメータがnullの場合、グループ数がWOLFSSL_MAX_GROUP_COUNTを超える場合、またはTLS v1.3を使用していない場合。
  • WOLFSSL_SUCCESS 成功時。

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) {
    // グループリストの設定に失敗しました
}

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 groups内の鍵交換グループの数。

See:

Return:

  • BAD_FUNC_ARG ポインタパラメータがnullの場合、グループ数がWOLFSSL_MAX_GROUP_COUNTを超える場合、識別子のいずれかが認識されない場合、またはTLS v1.3を使用していない場合。
  • WOLFSSL_SUCCESS 成功時。

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) {
    // グループリストの設定に失敗しました
}

function wolfSSL_CTX_set_max_early_data

int wolfSSL_CTX_set_max_early_data(
    WOLFSSL_CTX * ctx,
    unsigned int sz
)

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

Parameters:

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

See:

Return:

  • BAD_FUNC_ARG ctxがNULLの場合、またはTLS v1.3を使用していない場合。
  • 0 成功時。

Example

int ret;
WOLFSSL_CTX* ctx;
...
ret = wolfSSL_CTX_set_max_early_data(ctx, 128);
if (ret != WOLFSSL_SUCCESS) {
    // グループリストの設定に失敗しました
}

function wolfSSL_set_max_early_data

int wolfSSL_set_max_early_data(
    WOLFSSL * ssl,
    unsigned int sz
)

この関数は、TLS v1.3クライアントまたはサーバが交換する意思のある早期データの最大量を設定します。リプレイ攻撃を軽減するために処理する早期データの量を制限するには、この関数を呼び出してください。早期データは、セッションチケットが送信された接続の鍵から派生した鍵によって保護されるため、セッションチケットが再開に使用されるたびに同じになります。この値は再開用のセッションチケットに含まれます。サーバの値がゼロの場合、セッションチケットを使用してクライアントが早期データを送信しないことを示します。クライアントの値がゼロの場合、クライアントが早期データを送信しないことを示します。早期データのバイト数は、アプリケーションで実用的に可能な限り低く保つことをお勧めします。

Parameters:

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

See:

Return:

  • BAD_FUNC_ARG sslがNULLの場合、またはTLS v1.3を使用していない場合。
  • 0 成功時。 Example
int ret;
WOLFSSL* ssl;
...
ret = wolfSSL_set_max_early_data(ssl, 128);
if (ret != WOLFSSL_SUCCESS) {
    // グループリストの設定に失敗しました
}

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:

  • ctx wolfSSL_CTX_new()で作成されたWOLFSSL_CTX構造体へのポインタ。
  • cb TLS 1.3クライアント用の事前共有鍵(PSK)コールバック。

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構造体へのポインタ。
  • cb TLS 1.3クライアント用の事前共有鍵(PSK)コールバック。

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:

  • ctx wolfSSL_CTX_new()で作成されたWOLFSSL_CTX構造体へのポインタ。
  • cb TLS 1.3サーバー用の事前共有鍵(PSK)コールバック。

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構造体のoptionsフィールドのserver_psk_tls13_cbメンバーを設定します。

Parameters:

  • ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
  • cb TLS 1.3サーバー用の事前共有鍵(PSK)コールバック。

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構造体へのポインタ。
  • group 鍵交換グループ識別子。

See:

Return:

  • BAD_FUNC_ARG sslがNULLの場合。
  • MEMORY_E 動的メモリ割り当てが失敗した場合。
  • WOLFSSL_SUCCESS 成功した場合。

Example

int ret;
WOLFSSL* ssl;
...
ret = wolfSSL_UseKeyShare(ssl, WOLFSSL_ECC_X25519);
if (ret != WOLFSSL_SUCCESS) {
    // 鍵共有の設定に失敗しました
}

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 サーバーで呼び出された場合。
  • WOLFSSL_SUCCESS 成功した場合。

Example

int ret;
WOLFSSL* ssl;
...
ret = wolfSSL_NoKeyShares(ssl);
if (ret != WOLFSSL_SUCCESS) {
    // 鍵共有なしの設定に失敗しました
}

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:

  • heap 静的メモリアロケータが動的メモリ割り当て時に使用するバッファへのポインタ。

See:

Return:

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

Example

#include <wolfssl/ssl.h>

WOLFSSL_METHOD* method;
WOLFSSL_CTX* ctx;

method = wolfTLSv1_3_server_method_ex(NULL);
if (method == NULL) {
    // メソッドの取得ができません
}

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:

  • heap 静的メモリアロケータが動的メモリ割り当て時に使用するバッファへのポインタ。

See:

Return:

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

Example

#include <wolfssl/ssl.h>

WOLFSSL_METHOD* method;
WOLFSSL_CTX* ctx;    method = wolfTLSv1_3_client_method_ex(NULL);
if (method == NULL) {
    // メソッドを取得できません
}

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:

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

Example

#include <wolfssl/ssl.h>

WOLFSSL_METHOD* method;
WOLFSSL_CTX* ctx;

method = wolfTLSv1_3_server_method();
if (method == NULL) {
    // メソッドを取得できません
}

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:

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

Example

#include <wolfssl/ssl.h>

WOLFSSL_METHOD* method;
WOLFSSL_CTX* ctx;

method = wolfTLSv1_3_client_method();
if (method == NULL) {
    // メソッドを取得できません
}

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:

  • heap 静的メモリアロケータが動的メモリ割り当て中に使用するバッファへのポインタ。

See:

Return:

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

Example

WOLFSSL* ctx;
ctx  = wolfSSL_CTX_new(wolfTLSv1_3_method_ex(NULL));
// ret値を確認

function wolfTLSv1_3_method

WOLFSSL_METHOD * wolfTLSv1_3_method(
    void 
)

この関数は、どちら側(サーバー/クライアント)であるかがまだ決定されていないことを除いて、wolfTLSv1_3_client_methodと同様のWOLFSSL_METHODを返します。

See:

Return:

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

Example

WOLFSSL* ctx;
ctx  = wolfSSL_CTX_new(wolfTLSv1_3_method());
// ret値を確認

function wolfSSL_CTX_set_client_cert_type

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

この関数がクライアント側で呼び出された場合、ピアに送信できる証明書タイプを設定します。サーバー側で呼び出された場合、ピアから受け入れ可能な証明書タイプを設定します。優先順位の高い順にバッファに証明書タイプを格納します。設定をデフォルトにリセットするには、bufにNULLを渡すか、lenに0を渡します。デフォルトでは、証明書タイプはX509のみです。両側が"Raw public key"証明書を送信または受け入れることを意図している場合、WOLFSSL_CERT_TYPE_RPKをバッファに含めて設定する必要があります。

Parameters:

  • ctx WOLFSSL_CTXオブジェクトポインタ。
  • buf 証明書タイプが格納されるバッファ。
  • len bufサイズ(バイト単位)(含まれる証明書タイプの数と同じ)。 Example
int ret;
WOLFSSL_CTX* ctx;
char buf[] = {WOLFSSL_CERT_TYPE_RPK, WOLFSSL_CERT_TYPE_X509};
int len = sizeof(buf)/sizeof(char);
...

ret = wolfSSL_CTX_set_client_cert_type(ctx, buf, len);

See:

Return:

  • WOLFSSL_SUCCESS 証明書タイプが正常に設定された場合。
  • BAD_FUNC_ARG ctxにNULLが渡された場合、証明書タイプとして不正な値が指定された場合、bufサイズがMAX_CLIENT_CERT_TYPE_CNTを超えた場合、またはbuf内に重複する値が見つかった場合。

function wolfSSL_CTX_set_server_cert_type

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

この関数がサーバー側で呼び出された場合、ピアに送信できる証明書タイプを設定します。クライアント側で呼び出された場合、ピアから受け入れ可能な証明書タイプを設定します。優先順位の高い順にバッファに証明書タイプを格納します。設定をデフォルトにリセットするには、bufにNULLを渡すか、lenに0を渡します。デフォルトでは、証明書タイプはX509のみです。両側が"Raw public key"証明書を送信または受け入れることを意図している場合、WOLFSSL_CERT_TYPE_RPKをバッファに含めて設定する必要があります。

Parameters:

  • ctx WOLFSSL_CTXオブジェクトポインタ。
  • buf 証明書タイプが格納されるバッファ。
  • len bufサイズ(バイト単位)(含まれる証明書タイプの数と同じ)。 Example
int ret;
WOLFSSL_CTX* ctx;
char buf[] = {WOLFSSL_CERT_TYPE_RPK, WOLFSSL_CERT_TYPE_X509};
int len = sizeof(buf)/sizeof(char);
...

ret = wolfSSL_CTX_set_server_cert_type(ctx, buf, len);

See:

Return:

  • WOLFSSL_SUCCESS 証明書タイプが正常に設定された場合。
  • BAD_FUNC_ARG ctxにNULLが渡された場合、証明書タイプとして不正な値が指定された場合、bufサイズがMAX_SERVER_CERT_TYPE_CNTを超えた場合、またはbuf内に重複する値が見つかった場合。

function wolfSSL_set_client_cert_type

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

この関数がクライアント側で呼び出された場合、ピアに送信できる証明書タイプを設定します。サーバー側で呼び出された場合、ピアから受け入れ可能な証明書タイプを設定します。優先順位の高い順にバッファに証明書タイプを格納します。設定をデフォルトにリセットするには、bufにNULLを渡すか、lenに0を渡します。デフォルトでは、証明書タイプはX509のみです。両側が"Raw public key"証明書を送信または受け入れることを意図している場合、WOLFSSL_CERT_TYPE_RPKをバッファに含めて設定する必要があります。

Parameters:

  • ssl WOLFSSLオブジェクトポインタ。
  • buf 証明書タイプが格納されるバッファ。
  • len bufサイズ(バイト単位)(含まれる証明書タイプの数と同じ)。 Example
int ret;
WOLFSSL* ssl;
char buf[] = {WOLFSSL_CERT_TYPE_RPK, WOLFSSL_CERT_TYPE_X509};
int len = sizeof(buf)/sizeof(char);
...

ret = wolfSSL_set_client_cert_type(ssl, buf, len);

See:

Return:

  • WOLFSSL_SUCCESS 証明書タイプが正常に設定された場合。
  • BAD_FUNC_ARG ctxにNULLが渡された場合、証明書タイプとして不正な値が指定された場合、bufサイズがMAX_CLIENT_CERT_TYPE_CNTを超えた場合、またはbuf内に重複する値が見つかった場合。

function wolfSSL_set_server_cert_type

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

この関数がサーバー側で呼び出された場合、ピアに送信できる証明書タイプを設定します。クライアント側で呼び出された場合、ピアから受け入れ可能な証明書タイプを設定します。優先順位の高い順にバッファに証明書タイプを格納します。設定をデフォルトにリセットするには、bufにNULLを渡すか、lenに0を渡します。デフォルトでは、証明書タイプはX509のみです。両側が"Raw public key"証明書を送信または受け入れることを意図している場合、WOLFSSL_CERT_TYPE_RPKをバッファに含めて設定する必要があります。

Parameters:

  • ctx WOLFSSL_CTXオブジェクトポインタ。
  • buf 証明書タイプが格納されるバッファ。
  • len bufサイズ(バイト単位)(含まれる証明書タイプの数と同じ)。 Example
int ret;  WOLFSSL* ssl;
char buf[] = {WOLFSSL_CERT_TYPE_RPK, WOLFSSL_CERT_TYPE_X509};
int len = sizeof(buf)/sizeof(char);
...

ret = wolfSSL_set_server_cert_type(ssl, buf, len);

See:

Return:

  • WOLFSSL_SUCCESS 証明書タイプが正常に設定された場合。
  • BAD_FUNC_ARG ctxにNULLが渡された場合、証明書タイプとして不正な値が指定された場合、bufサイズがMAX_SERVER_CERT_TYPE_CNTを超えた場合、またはbuf内に重複する値が見つかった場合。

function wolfSSL_CTX_clear_group_messages

int wolfSSL_CTX_clear_group_messages(
    WOLFSSL_CTX * ctx
)

指定されたWOLFSSL_CTXコンテキストに対してハンドシェイクメッセージグループ化を無効にします。

Parameters:

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

See:

Return:

  • WOLFSSL_SUCCESS 成功時。
  • BAD_FUNC_ARG ctxがNULLの場合。

この関数は、指定されたコンテキストから作成されたすべてのSSLオブジェクトに対してハンドシェイクメッセージグループ化をオフにします。

Example

WOLFSSL_CTX* ctx = wolfSSL_CTX_new(wolfTLSv1_2_client_method());
wolfSSL_CTX_clear_group_messages(ctx);

function wolfSSL_clear_group_messages

int wolfSSL_clear_group_messages(
    WOLFSSL * ssl
)

指定されたWOLFSSLオブジェクトに対してハンドシェイクメッセージグループ化を無効にします。

Parameters:

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

See:

Return:

  • WOLFSSL_SUCCESS 成功時。
  • BAD_FUNC_ARG sslがNULLの場合。

この関数は、指定されたSSLオブジェクトに対してハンドシェイクメッセージグループ化をオフにします。

Example

WOLFSSL* ssl = wolfSSL_new(ctx);
wolfSSL_clear_group_messages(ssl);

function wolfSSL_GetCookieCtx

void * wolfSSL_GetCookieCtx(
    WOLFSSL * ssl
)

この関数はWOLFSSL構造体のIOCB_CookieCtxメンバーを返します。

Parameters:

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

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){
// 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 ユーザーのCANバス受信コールバック。
  • send_fn ユーザーのCANバス送信コールバック。
  • delay_fn ユーザーのマイクロ秒粒度遅延関数。
  • receive_delay 各CANバスパケットを遅延させる設定マイクロ秒数。
  • receive_buffer データを受信するためのユーザー提供バッファ、ISOTP_DEFAULT_BUFFER_SIZEバイトに割り当てることを推奨。
  • receive_buffer_size - receive_bufferのサイズ。
  • arg recv_fnとsend_fnに送信される任意のポインタ。

Return: 0 成功時、WOLFSSL_CBIO_ERR_GENERAL 失敗時。

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

function wolfSSL_SSLDisableRead

void wolfSSL_SSLDisableRead(
    WOLFSSL * ssl
)

この関数はIOレイヤーからの読み取りを無効にします。

Parameters:

  • ssl wolfSSLコンテキスト。

See:

Example

WOLFSSL_CTX* ctx = wolfSSL_CTX_new(method);
WOLFSSL* ssl = wolfSSL_new(ctx);
wolfSSL_SSLDisableRead(ssl);

function wolfSSL_SSLEnableRead

void wolfSSL_SSLEnableRead(
    WOLFSSL * ssl
)

この関数はIOレイヤーからの読み取りを有効にします。 読み取りはデフォルトで有効になっており、wolfSSL_SSLDisableRead()を元に戻すために使用する必要があります。

Parameters:

  • ssl wolfSSLコンテキスト。

See:

Example

WOLFSSL_CTX* ctx = wolfSSL_CTX_new(method);
WOLFSSL* ssl = wolfSSL_new(ctx);
wolfSSL_SSLDisableRead(ssl);
...
wolfSSL_SSLEnableRead(ssl);

Updated on 2025-12-12 at 03:08:16 +0000