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 * ctx) この関数は、割り当てられたWOLFSSL_CTXオブジェクトを解放します。この関数はCTX参照カウントをデクリメントし、参照カウントが0になった場合にのみコンテキストを解放します。 |
| void | wolfSSL_free(WOLFSSL * ssl) この関数は、割り当てられた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 に対する暗号スイートリストを設定します。設定したリストは、本コンテキストから新規に作成されるすべての WOLFSSL セッションのデフォルトリストとなり、文字列内の順序がそのまま優先順位(高い順から低い順)として用いられます。本関数を呼び出すたびに前回のリストは置き換えられます。リストは null 終端のテキスト文字列で、暗号スイート名および/または OpenSSL 互換のキーワードをコロンで区切って指定します(例: "TLS13-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-SHA256")。 |
| int | wolfSSL_set_cipher_list(WOLFSSL * ssl, const char * list) この関数は、指定された WOLFSSL セッション(SSL セッション)に対する暗号スイートリストを設定します。リストの形式、認識される暗号スイート名およびキーワードは wolfSSL_CTX_set_cipher_list() と同一です。利用可能なキーワード/スイート一覧および必要なビルドオプションについては wolfSSL_CTX_set_cipher_list() の説明を参照してください。本関数を呼び出すたびに、当該セッションのリストは置き換えられます。 |
| 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 timeout) この関数は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_CTX_set_options(WOLFSSL_CTX * ctx, long opt) この関数は、指定された WOLFSSL_CTX のオプションマスクに opt のビットを OR で追加します。設定したオプションマスクは、本コンテキストから後に作成されるすべての WOLFSSL セッションに継承されます。ビットは累積されるため、特定のオプションを解除するには wolfSSL_CTX_clear_options() を使用してください。OpenSSL 形式の "SSL_OP_" マクロは対応する "WOLFSSL_OP_" 値の別名であり、どちらの表記でも使用できます。 |
| long | wolfSSL_set_options(WOLFSSL * s, long op) この関数は、指定された WOLFSSL セッションのオプションマスクに op のビットを OR で追加します。認識される "SSL_OP_" / "WOLFSSL_OP_" フラグの集合は wolfSSL_CTX_set_options() と同一です。各フラグの効果および必要なビルドオプションについては wolfSSL_CTX_set_options() の説明を参照してください。親 WOLFSSL_CTX から継承したフラグはそのまま保持されます。本関数で SSL_OP_NO_TLSv1_3 を設定した場合、当該セッションのネゴシエーション可能なバージョンは TLS 1.2 まで引き下げられます。 |
| long | wolfSSL_get_options(const WOLFSSL * s) この関数は、現在のオプションマスクを返します。 |
| long | wolfSSL_set_tlsext_debug_arg(WOLFSSL * s, void * arg) これは、渡されるデバッグ引数を設定するために使用されます。 |
| long | wolfSSL_get_verify_result(const WOLFSSL * ssl) これは、ピアの証明書の検証を試みた後の結果を取得するために使用されます。 |
| int | wolfSSL_CTX_allow_anon_cipher(WOLFSSL_CTX * 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_check_ip_address(WOLFSSL * ssl, const char * ipaddr) wolfSSL_connect() または wolfSSL_accept() の前にこの関数を呼ぶと、 ピア証明書の SAN iPAddress エントリに対する IP アドレス検証を追加します。 |
| 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 * ctx) この関数は、CA署名者リストをアンロードし、署名者テーブル全体を解放します。 |
| int | wolfSSL_CTX_UnloadIntermediateCerts(WOLFSSL_CTX * ctx) この関数は、CA署名者リストに追加された中間証明書をアンロードし、解放します。 |
| int | wolfSSL_CTX_Unload_trust_peers(WOLFSSL_CTX * 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, const 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_sigalgs_list(WOLFSSL_CTX * ctx, const char * list) この関数は、wolfSSLコンテキストで優先順位に従って許可する署名アルゴリズムのリストを設定します。リストはnull終端のテキスト文字列で、コロン区切りのリストです。各要素は "<公開鍵アルゴリズム>+<ハッシュ>" の形式(例: "RSA-PSS+SHA256:ECDSA+SHA384")で指定します。Edwards曲線アルゴリズムである "ED25519" および "ED448" はハッシュがアルゴリズムに内包されるため、サフィックスを付けずに記述します。コンテキストに既に保持されているリストは置き換えられます。 |
| int | wolfSSL_set1_sigalgs_list(WOLFSSL * ssl, const char * list) この関数は、wolfSSLセッションで優先順位に従って許可する署名アルゴリズムのリストを設定します。リストの形式、認識される公開鍵トークンおよびハッシュトークンは wolfSSL_CTX_set1_sigalgs_list() と同一です。トークン一覧および TLS 1.3 における注意事項については wolfSSL_CTX_set1_sigalgs_list() の説明を参照してください。セッションに既に保持されているリストは置き換えられます。 |
| int | wolfSSL_CTX_set1_groups_list(WOLFSSL_CTX * ctx, const char * list) この関数は、wolfSSLコンテキストで優先順位に従って許可する鍵交換グループ(名前付き楕円曲線および KEM)のリストを設定します。リストはnull終端のテキスト文字列で、グループ名をコロンで区切って指定します(例: "P-384:P-256:X25519")。TLS v1.3 接続で使用する鍵交換パラメータを設定するために本関数を呼び出します(本関数は HAVE_ECC、WOLFSSL_TLS13、HAVE_SUPPORTED_CURVES がすべて定義された場合にのみ提供されます)。 |
| int | wolfSSL_set1_groups_list(WOLFSSL * ssl, const char * list) この関数は、wolfSSLセッションで優先順位に従って許可する鍵交換グループ(名前付き楕円曲線および KEM)のリストを設定します。リストの形式および認識されるグループ名は wolfSSL_CTX_set1_groups_list() と同一です。利用可能な名前一覧および必要なビルドオプションについては wolfSSL_CTX_set1_groups_list() の説明を参照してください。 |
| int | wolfSSL_CTX_set_groups(WOLFSSL_CTX * ctx, int * groups, int count) この関数は、wolfSSLコンテキストで優先順位に従って許可する鍵交換グループ(名前付き楕円曲線および KEM)のリストを設定します。リストは名前付きグループ識別子(下表参照)の配列で、 count に配列内の識別子数を指定します。TLS v1.3 接続で使用する鍵交換パラメータを設定するために本関数を呼び出します。配列の順序がそのまま KeyShare の優先順位として用いられます。 |
| int | wolfSSL_set_groups(WOLFSSL * ssl, int * groups, int count) この関数は、wolfSSLセッションで優先順位に従って許可する鍵交換グループ(名前付き楕円曲線および KEM)のリストを設定します。配列の形式および認識される識別子は wolfSSL_CTX_set_groups() と同一です。利用可能な識別子一覧および必要なビルドオプションについては wolfSSL_CTX_set_groups() の説明を参照してください。 |
| 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:
- wolfTLSv1_server_method
- wolfTLSv1_1_server_method
- wolfTLSv1_2_server_method
- wolfTLSv1_3_server_method
- wolfDTLSv1_server_method
- wolfSSLv23_server_method
- wolfSSL_CTX_new
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:
- wolfTLSv1_client_method
- wolfTLSv1_1_client_method
- wolfTLSv1_2_client_method
- wolfTLSv1_3_client_method
- wolfDTLSv1_client_method
- wolfSSLv23_client_method
- wolfSSL_CTX_new
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:
- wolfSSLv3_server_method
- wolfTLSv1_1_server_method
- wolfTLSv1_2_server_method
- wolfTLSv1_3_server_method
- wolfDTLSv1_server_method
- wolfSSLv23_server_method
- wolfSSL_CTX_new
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:
- wolfSSLv3_client_method
- wolfTLSv1_1_client_method
- wolfTLSv1_2_client_method
- wolfTLSv1_3_client_method
- wolfDTLSv1_client_method
- wolfSSLv23_client_method
- wolfSSL_CTX_new
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:
- wolfSSLv3_server_method
- wolfTLSv1_server_method
- wolfTLSv1_2_server_method
- wolfTLSv1_3_server_method
- wolfDTLSv1_server_method
- wolfSSLv23_server_method
- wolfSSL_CTX_new
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:
- wolfSSLv3_client_method
- wolfTLSv1_client_method
- wolfTLSv1_2_client_method
- wolfTLSv1_3_client_method
- wolfDTLSv1_client_method
- wolfSSLv23_client_method
- wolfSSL_CTX_new
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:
- wolfSSLv3_server_method
- wolfTLSv1_server_method
- wolfTLSv1_1_server_method
- wolfTLSv1_3_server_method
- wolfDTLSv1_server_method
- wolfSSLv23_server_method
- wolfSSL_CTX_new
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:
- wolfSSLv3_client_method
- wolfTLSv1_client_method
- wolfTLSv1_1_client_method
- wolfTLSv1_3_client_method
- wolfDTLSv1_client_method
- wolfSSLv23_client_method
- wolfSSL_CTX_new
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:
- wolfSSLv3_client_method
- wolfTLSv1_client_method
- wolfTLSv1_1_client_method
- wolfTLSv1_2_client_method
- wolfTLSv1_3_client_method
- wolfSSLv23_client_method
- wolfSSL_CTX_new
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:
- wolfSSLv3_server_method
- wolfTLSv1_server_method
- wolfTLSv1_1_server_method
- wolfTLSv1_2_server_method
- wolfTLSv1_3_server_method
- wolfSSLv23_server_method
- wolfSSL_CTX_new
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:
- wolfSSL_CTX_load_verify_buffer
- wolfSSL_CTX_use_certificate_file
- wolfSSL_CTX_use_PrivateKey_file
- wolfSSL_CTX_use_certificate_chain_file
- wolfSSL_CTX_trust_peer_buffer
- wolfSSL_CTX_Unload_trust_peers
- wolfSSL_use_certificate_file
- wolfSSL_use_PrivateKey_file
- wolfSSL_use_certificate_chain_file
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:
- ctx wolfSSL_CTX_new()で作成されたSSLコンテキストへのポインタ。
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:
- wolfSSL_CTX_SetIOSend
- wolfSSL_CTX_SetIORecv
- wolfSSL_SetIOReadCtx
- wolfSSL_SetIOWriteCtx
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:
- wolfSSL_CTX_SetIOSend
- wolfSSL_CTX_SetIORecv
- wolfSSL_SetIOReadCtx
- wolfSSL_SetIOWriteCtx
- wolfDTLS_SetChGoodCb
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 * ctx
)
この関数は、割り当てられたWOLFSSL_CTXオブジェクトを解放します。この関数はCTX参照カウントをデクリメントし、参照カウントが0になった場合にのみコンテキストを解放します。
Parameters:
- ctx wolfSSL_CTX_new()で作成されたSSLコンテキストへのポインタ。
See:
Return: none 戻り値はありません。
Example
WOLFSSL_CTX* ctx = 0;
...
wolfSSL_CTX_free(ctx);
function wolfSSL_free
void wolfSSL_free(
WOLFSSL * ssl
)
この関数は、割り当てられた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ポインタを使用できます。
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:
- wolfSSL_flush_sessions
- wolfSSL_get1_session
- wolfSSL_set_session
- wolfSSL_get_sessionID
- wolfSSL_CTX_set_timeout
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 に対する暗号スイートリストを設定します。設定したリストは、本コンテキストから新規に作成されるすべての WOLFSSL セッションのデフォルトリストとなり、文字列内の順序がそのまま優先順位(高い順から低い順)として用いられます。本関数を呼び出すたびに前回のリストは置き換えられます。リストは null 終端のテキスト文字列で、暗号スイート名および/または OpenSSL 互換のキーワードをコロンで区切って指定します(例: "TLS13-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-SHA256")。
Parameters:
- ctx wolfSSL_CTX_new()で作成されたSSLコンテキストへのポインタ。
- list 指定された SSL コンテキストで使用する暗号スイートおよび/またはキーワードの null 終端テキスト文字列(コロン区切り)。
See:
Return:
- WOLFSSL_SUCCESS 関数が正常に完了した場合に返されます。
- WOLFSSL_FAILURE 失敗した場合に返されます。
リスト中の各トークンには次のいずれかを指定できます。
- 個別の暗号スイート名。wolfSSL は独自の短縮名と IANA 名(WOLFSSL_NO_ERROR_STRINGS が定義されていない場合)の両方を受理します。たとえば "ECDHE-RSA-AES128-GCM-SHA256" と "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256" は等価です。受理される名前の完全なリストは src/internal.c の cipher_names[] 配列にあります。実行時に現在のビルドに含まれるスイートを列挙するには wolfSSL_get_ciphers() を使用してください。
- OpenSSL 互換のキーワード(下表参照)。スイート群を一括で選択したり、特定クラスを on/off するために使用します。一部のキーワードには OPENSSL_EXTRA または OPENSSL_ALL の定義が必要です。
- 否定キーワード "!keyword"(OPENSSL_EXTRA または OPENSSL_ALL が必要)。例: "HIGH:!aNULL"。
"+" 演算子(例: "ECDHE+AESGCM")は、先頭の公開鍵ファミリトークン("ECDHE", "RSA", "DHE")の抽出にのみ使用されます。"+" の後の部分は wolfSSL では無視されます。特定のスイートを指定したい場合は完全なスイート名を直接指定してください。
OpenSSL 互換のグループキーワード:
| キーワード | 効果 | 必要なビルドオプション |
|---|---|---|
| DEFAULT / ALL | ビルドされている全スイートを含める。"ALL" は匿名(aNULL)も有効化 | OPENSSL_EXTRA / OPENSSL_ALL(他トークンを伴わない単独指定も可) |
| HIGH | 静的・匿名・NULL を除く全スイート | OPENSSL_EXTRA / OPENSSL_ALL(単独指定も可) |
| LOW / MEDIUM | 受理されるが鍵長による制限はかからず "RSA" 相当として扱われる | OPENSSL_EXTRA / OPENSSL_ALL |
| aNULL | 匿名(認証なし)スイート | OPENSSL_EXTRA / OPENSSL_ALL(スイート自体は HAVE_ANON が必要) |
| eNULL / NULL | NULL 暗号化スイート | OPENSSL_EXTRA / OPENSSL_ALL(スイート自体は HAVE_NULL_CIPHER が必要) |
| kDH | 静的 DH 鍵交換 | OPENSSL_EXTRA / OPENSSL_ALL |
| DHE / EDH | エフェメラル DH 鍵交換 | OPENSSL_EXTRA / OPENSSL_ALL(スイート自体は !NO_DH が必要) |
| ECDHE / EECDH | エフェメラル ECDH 鍵交換 | OPENSSL_EXTRA / OPENSSL_ALL(スイート自体は HAVE_ECC が必要) |
| kRSA / RSA | 静的 RSA 鍵交換 | OPENSSL_EXTRA / OPENSSL_ALL(スイート自体は !NO_RSA が必要) |
| PSK | PSK スイート | OPENSSL_EXTRA / OPENSSL_ALL(スイート自体は !NO_PSK が必要) |
| DSS | 黙って無視される(wolfSSL は DSA スイート非対応) | OPENSSL_EXTRA / OPENSSL_ALL |
| EXP / EXPORT | 黙って無視される(export 等級は非対応) | OPENSSL_EXTRA / OPENSSL_ALL |
| AES128 / SHA1 / RC4 | 否定指定("!AES128" 等)でそのクラスを無効化 | WOLFSSL_SYS_CRYPTO_POLICY |
| @SECLEVEL=n | OpenSSL 互換のセキュリティレベル設定 | WOLFSSL_SYS_CRYPTO_POLICY |
代表的な TLS 1.3 暗号スイート名(各々個別の BUILD_* マクロでガードされる。多くは –enable-tls13 で自動有効化):
| 名前(wolfSSL) | IANA 名 | 必要なビルドオプション |
|---|---|---|
| TLS13-AES128-GCM-SHA256 | TLS_AES_128_GCM_SHA256 | BUILD_TLS_AES_128_GCM_SHA256(TLS 1.3 既定) |
| TLS13-AES256-GCM-SHA384 | TLS_AES_256_GCM_SHA384 | BUILD_TLS_AES_256_GCM_SHA384 |
| TLS13-CHACHA20-POLY1305-SHA256 | TLS_CHACHA20_POLY1305_SHA256 | BUILD_TLS_CHACHA20_POLY1305_SHA256(HAVE_CHACHA + HAVE_POLY1305) |
| TLS13-AES128-CCM-SHA256 | TLS_AES_128_CCM_SHA256 | BUILD_TLS_AES_128_CCM_SHA256(HAVE_AESCCM) |
| TLS13-AES128-CCM-8-SHA256 | TLS_AES_128_CCM_8_SHA256 | BUILD_TLS_AES_128_CCM_8_SHA256(HAVE_AESCCM) |
| TLS13-SM4-GCM-SM3 | TLS_SM4_GCM_SM3 | BUILD_TLS_SM4_GCM_SM3(WOLFSSL_SM4_GCM + WOLFSSL_SM3) |
| TLS13-SM4-CCM-SM3 | TLS_SM4_CCM_SM3 | BUILD_TLS_SM4_CCM_SM3(WOLFSSL_SM4_CCM + WOLFSSL_SM3) |
| TLS13-SHA256-SHA256 | TLS_SHA256_SHA256 | BUILD_TLS_SHA256_SHA256(integrity-only) |
| TLS13-SHA384-SHA384 | TLS_SHA384_SHA384 | BUILD_TLS_SHA384_SHA384 |
代表的な TLS 1.2 暗号スイート名のファミリ(各スイートは IANA 名から派生する個別の BUILD_* マクロでガードされる):
| スイート名のファミリ/例 | 一般的な必要オプション |
|---|---|
| ECDHE-ECDSA-AES128-GCM-SHA256, ECDHE-ECDSA-AES256-GCM-SHA384, ECDHE-ECDSA-CHACHA20-POLY1305 | HAVE_ECC, HAVE_AESGCM(または HAVE_CHACHA + HAVE_POLY1305) |
| ECDHE-RSA-AES128-GCM-SHA256, ECDHE-RSA-AES256-GCM-SHA384, ECDHE-RSA-CHACHA20-POLY1305 | HAVE_ECC, !NO_RSA, HAVE_AESGCM(または HAVE_CHACHA + HAVE_POLY1305) |
| DHE-RSA-AES128-GCM-SHA256, DHE-RSA-AES256-GCM-SHA384, DHE-RSA-CHACHA20-POLY1305 | !NO_DH, !NO_RSA, HAVE_AESGCM(または HAVE_CHACHA + HAVE_POLY1305) |
| AES128-SHA, AES256-SHA, AES128-SHA256, AES256-SHA256, AES128-GCM-SHA256, AES256-GCM-SHA384(静的 RSA) | !NO_RSA, !NO_AES_CBC および/または HAVE_AESGCM |
| DES-CBC3-SHA, RC4-SHA, RC4-MD5 | レガシー: !NO_DES3 / !NO_RC4, !NO_OLD_TLS |
| NULL-SHA, NULL-SHA256, NULL-MD5 | HAVE_NULL_CIPHER |
| PSK-AES128-CBC-SHA256, PSK-AES256-GCM-SHA384, ECDHE-PSK-AES128-CBC-SHA256, DHE-PSK-AES256-GCM-SHA384 | !NO_PSK(ECDHE-PSK は HAVE_ECC、DHE-PSK は !NO_DH も必要) |
| ADH-AES128-SHA, ADH-AES256-SHA | HAVE_ANON |
| ECDHE-ECDSA-SM4-GCM-SM3, ECDHE-ECDSA-SM4-CCM-SM3 | WOLFSSL_SM2, WOLFSSL_SM3, WOLFSSL_SM4_GCM/WOLFSSL_SM4_CCM |
注意事項:
- TLS 1.3 と TLS 1.2 のスイート名は同一リスト内で混在指定できます。wolfSSL は内部でバージョンごとに振り分けます。
- DTLS では、リスト中の RC4 ベースのストリーム暗号は黙って除外されます。
- リスト全体が "DEFAULT"、"ALL"、"HIGH"、または空文字列の場合、wolfSSL は組み込みのデフォルトスイートリストを設定して成功を返し、それ以上のトークン解析は行いません。
Example
WOLFSSL_CTX* ctx = 0;
...
ret = wolfSSL_CTX_set_cipher_list(ctx,
"TLS13-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:"
"DHE-RSA-AES256-SHA256");
if (ret != WOLFSSL_SUCCESS) {
// 暗号スイートリストの設定に失敗しました。
}
function wolfSSL_set_cipher_list
int wolfSSL_set_cipher_list(
WOLFSSL * ssl,
const char * list
)
この関数は、指定された WOLFSSL セッション(SSL セッション)に対する暗号スイートリストを設定します。リストの形式、認識される暗号スイート名およびキーワードは wolfSSL_CTX_set_cipher_list() と同一です。利用可能なキーワード/スイート一覧および必要なビルドオプションについては wolfSSL_CTX_set_cipher_list() の説明を参照してください。本関数を呼び出すたびに、当該セッションのリストは置き換えられます。
Parameters:
- ssl wolfSSL_new()で作成されたSSLセッションへのポインタ。
- list 指定された SSL セッションで使用する暗号スイートおよび/またはキーワードの null 終端テキスト文字列(コロン区切り)。
See:
Return:
- WOLFSSL_SUCCESS 関数が正常に完了すると返されます。
- WOLFSSL_FAILURE 失敗時に返されます。
Example
int ret = 0;
WOLFSSL* ssl = 0;
...
ret = wolfSSL_set_cipher_list(ssl,
"TLS13-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:"
"DHE-RSA-AES256-SHA256");
if (ret != WOLFSSL_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:
- wolfSSL_dtls
- wolfSSL_dtls_get_peer
- wolfSSL_dtls_got_timeout
- wolfSSL_dtls_set_peer
- wolfSSL_dtls13_use_quick_timeout
function wolfSSL_dtls_set_timeout_init
int wolfSSL_dtls_set_timeout_init(
WOLFSSL * ssl,
int timeout
)
この関数は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:
- wolfSSL_new
- wolfSSL_free
- wolfSSL_SESSION_free
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:
- wolfSSLv3_client_method
- wolfTLSv1_client_method
- wolfTLSv1_1_client_method
- wolfTLSv1_2_client_method
- wolfTLSv1_3_client_method
- wolfDTLSv1_client_method
- wolfSSL_CTX_new
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_CTX_set_options
long wolfSSL_CTX_set_options(
WOLFSSL_CTX * ctx,
long opt
)
この関数は、指定された WOLFSSL_CTX のオプションマスクに opt のビットを OR で追加します。設定したオプションマスクは、本コンテキストから後に作成されるすべての WOLFSSL セッションに継承されます。ビットは累積されるため、特定のオプションを解除するには wolfSSL_CTX_clear_options() を使用してください。OpenSSL 形式の "SSL_OP_" マクロは対応する "WOLFSSL_OP_" 値の別名であり、どちらの表記でも使用できます。
Parameters:
- ctx オプションマスクを設定する WOLFSSL_CTX 構造体。
- opt 現在のマスクに OR で追加する SSL_OP_ / WOLFSSL_OP_ フラグのビットマスク。
See:
- wolfSSL_CTX_clear_options
- wolfSSL_CTX_get_options
- wolfSSL_set_options
- wolfSSL_get_options
Return:
- BAD_FUNC_ARG
ctxが NULL の場合。 - 成功時、
ctxに格納された更新後のオプションマスク値。
実効を持つオプション:
| マクロ | 効果 |
|---|---|
| SSL_OP_NO_SSLv2 | SSLv2 を無効化(wolfSSL は SSLv2 を一切サポートしない。OpenSSL 互換のため受け付けるのみ) |
| SSL_OP_NO_SSLv3 | SSLv3 を無効化 |
| SSL_OP_NO_TLSv1 | TLS 1.0 を無効化 |
| SSL_OP_NO_TLSv1_1 | TLS 1.1 を無効化 |
| SSL_OP_NO_TLSv1_2 | TLS 1.2 を無効化 |
| SSL_OP_NO_TLSv1_3 | TLS 1.3 を無効化(WOLFSSL_TLS13 が必要) |
| SSL_OP_NO_COMPRESSION | レコード層圧縮を無効化(HAVE_LIBZ 未定義時は何もしない) |
| SSL_OP_NO_TICKET | RFC 5077 セッションチケットを無効化(TLS 1.2 のみ。TLS 1.3 では本フラグは無視される)。HAVE_SESSION_TICKET と OPENSSL_EXTRA/HAVE_WEBSERVER/WOLFSSL_WPAS_SMALL のいずれかが必要 |
| SSL_OP_NO_RENEGOTIATION | 相手主導の再ネゴシエーションを拒否 |
| SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION | 再ネゴシエーション時のセッション再利用を無効化 |
| SSL_OP_COOKIE_EXCHANGE | HelloVerifyRequest クッキー交換を有効化(DTLS では既定で有効) |
| SSL_OP_NO_QUERY_MTU | DTLS: 経路 MTU を問い合わせない |
| SSL_OP_CIPHER_SERVER_PREFERENCE | サーバ側の暗号スイート優先順位をクライアントの順序より優先 |
| SSL_OP_SINGLE_DH_USE | ハンドシェイクごとに新しい DH 鍵を生成 |
| SSL_OP_SINGLE_ECDH_USE | ハンドシェイクごとに新しい ECDH 鍵を生成 |
| SSL_OP_EPHEMERAL_RSA | エフェメラル RSA を使用(レガシー。OpenSSL 互換のため受け付けるのみ) |
| SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS | レコード前の空フラグメント挿入を抑制(CBC BEAST 回避策) |
| SSL_OP_PKCS1_CHECK_1 / _2 | OpenSSL 互換のため受け付けるのみ |
| SSL_OP_LEGACY_SERVER_CONNECT | 安全でない初回接続を常に許可。定義値は 0 のため実質無効化(openssl/ssl.h 互換ヘッダが必要) |
便宜マクロ・バグ回避フラグ(すべて SSL_OP_ALL の構成要素。OpenSSL 互換のため受け付けるが wolfSSL では実質 no-op):
- SSL_OP_ALL(下記バグ回避フラグのビット OR)
- SSL_OP_MICROSOFT_SESS_ID_BUG
- SSL_OP_NETSCAPE_CHALLENGE_BUG
- SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG
- SSL_OP_SSLREF2_REUSE_CERT_TYPE_BUG
- SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER
- SSL_OP_MSIE_SSLV2_RSA_PADDING
- SSL_OP_SSLEAY_080_CLIENT_DH_BUG
- SSL_OP_TLS_D5_BUG
- SSL_OP_TLS_BLOCK_PADDING_BUG
- SSL_OP_TLS_ROLLBACK_BUG
- SSL_OP_NETSCAPE_CA_DN_BUG
- SSL_OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUG
複合マクロ:
- SSL_OP_NO_SSL_MASK = SSL_OP_NO_SSLv3 | SSL_OP_NO_TLSv1 | SSL_OP_NO_TLSv1_1 | SSL_OP_NO_TLSv1_2 | SSL_OP_NO_TLSv1_3
Example
WOLFSSL_CTX* ctx;
long mask;
mask = wolfSSL_CTX_set_options(ctx,
SSL_OP_NO_SSLv3 | SSL_OP_NO_TLSv1 | SSL_OP_NO_TLSv1_1 |
SSL_OP_NO_COMPRESSION | SSL_OP_CIPHER_SERVER_PREFERENCE);
// mask には ctx に蓄積されたオプション値が反映される
function wolfSSL_set_options
long wolfSSL_set_options(
WOLFSSL * s,
long op
)
この関数は、指定された WOLFSSL セッションのオプションマスクに op のビットを OR で追加します。認識される "SSL_OP_" / "WOLFSSL_OP_" フラグの集合は wolfSSL_CTX_set_options() と同一です。各フラグの効果および必要なビルドオプションについては wolfSSL_CTX_set_options() の説明を参照してください。親 WOLFSSL_CTX から継承したフラグはそのまま保持されます。本関数で SSL_OP_NO_TLSv1_3 を設定した場合、当該セッションのネゴシエーション可能なバージョンは TLS 1.2 まで引き下げられます。
Parameters:
- s オプションマスクを設定する WOLFSSL セッション。
- op 現在のマスクに OR で追加する SSL_OP_ / WOLFSSL_OP_ フラグのビットマスク。
See:
- wolfSSL_CTX_set_options
- wolfSSL_clear_options
- wolfSSL_get_options
- wolfSSL_new
- wolfSSL_free
Return: 成功時、s に格納された更新後のオプションマスク値。s が NULL の場合は 0 を返します。
Example
WOLFSSL* ssl;
long mask;
mask = wolfSSL_set_options(ssl, SSL_OP_NO_TLSv1_3);
// mask には ssl に蓄積されたオプション値が反映される
function wolfSSL_get_options
long wolfSSL_get_options(
const WOLFSSL * s
)
この関数は、現在のオプションマスクを返します。
Parameters:
- s オプションマスクを取得する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 * s,
void * arg
)
これは、渡されるデバッグ引数を設定するために使用されます。
Parameters:
- s 引数を設定する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 * 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:
- wolfSSLv3_server_method
- wolfTLSv1_server_method
- wolfTLSv1_1_server_method
- wolfTLSv1_2_server_method
- wolfTLSv1_3_server_method
- wolfDTLSv1_server_method
- wolfSSL_CTX_new
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_check_ip_address
int wolfSSL_check_ip_address(
WOLFSSL * ssl,
const char * ipaddr
)
wolfSSL_connect() または wolfSSL_accept() の前にこの関数を呼ぶと、 ピア証明書の SAN iPAddress エントリに対する IP アドレス検証を追加します。
Parameters:
- ssl wolfSSL_new() で作成された WOLFSSL 構造体へのポインタ。
- ipaddr 検証する NULL 終端 ASCII IP アドレス文字列。
See: wolfSSL_check_domain_name
Return:
- SSL_SUCCESS 成功。
- SSL_FAILURE パラメータ不正またはメモリ確保失敗。
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:
- wolfSSL_flush_sessions
- wolfSSL_get1_session
- wolfSSL_set_session
- wolfSSL_get_sessionID
- wolfSSL_CTX_set_session_cache_mode
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 * ctx
)
この関数は、CA署名者リストをアンロードし、署名者テーブル全体を解放します。
Parameters:
- ctx wolfSSL_CTX_new()を使用して作成されたWOLFSSL_CTX構造体へのポインタ。
See:
- wolfSSL_CertManagerUnloadCAs
- LockMutex
- UnlockMutex
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 * ctx
)
この関数は以前にロードされたすべての信頼されたピア証明書をアンロードするために使用されます。この機能は、マクロWOLFSSL_TRUST_PEER_CERTを定義することで有効になります。
Parameters:
- ctx wolfSSL_CTX_new()で作成されたSSLコンテキストへのポインタ。
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:
- wolfSSL_CTX_load_verify_buffer
- wolfSSL_CTX_use_certificate_file
- wolfSSL_CTX_use_PrivateKey_file
- wolfSSL_CTX_use_certificate_chain_file
- wolfSSL_CTX_trust_peer_cert
- wolfSSL_CTX_Unload_trust_peers
- wolfSSL_use_certificate_file
- wolfSSL_use_PrivateKey_file
- wolfSSL_use_certificate_chain_file
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:
- wolfSSL_set_group_messages
- wolfSSL_CTX_new
- wolfSSL_CTX_clear_group_messages
- wolfSSL_set_group_messages
- wolfSSL_clear_group_messages
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:
- wolfSSL_CTX_set_group_messages
- wolfSSL_new
- wolfSSL_clear_group_messages
- wolfSSL_CTX_set_group_messages
- wolfSSL_CTX_clear_group_messages
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,
const 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構造体。
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);
function wolfSSL_send_hrr_cookie
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の使用設定に失敗しました。
}
function wolfSSL_disable_hrr_cookie
int wolfSSL_disable_hrr_cookie(
WOLFSSL * ssl
)
この関数は、HelloRetryRequestメッセージにCookieを含めてはならないこと、およびプロトコルDTLS v1.3を使用している場合、ハンドシェイクにCookie交換を含めないことを示すために、サーバ側で呼び出されます。プロトコルDTLS v1.3を使用する際にCookie交換を行わないと、サーバがDoS/増幅攻撃に対して脆弱になる可能性があることに注意してください。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
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:
- ctx wolfSSL_CTX_new()で作成されたWOLFSSL_CTX構造体へのポインタ。
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:
- ctx wolfSSL_CTX_new()で作成されたWOLFSSL_CTX構造体へのポインタ。
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構造体へのポインタ。
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:
- ctx wolfSSL_CTX_new()で作成されたWOLFSSL_CTX構造体へのポインタ。
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_sigalgs_list
int wolfSSL_CTX_set1_sigalgs_list(
WOLFSSL_CTX * ctx,
const char * list
)
この関数は、wolfSSLコンテキストで優先順位に従って許可する署名アルゴリズムのリストを設定します。リストはnull終端のテキスト文字列で、コロン区切りのリストです。各要素は "<公開鍵アルゴリズム>+<ハッシュ>" の形式(例: "RSA-PSS+SHA256:ECDSA+SHA384")で指定します。Edwards曲線アルゴリズムである "ED25519" および "ED448" はハッシュがアルゴリズムに内包されるため、サフィックスを付けずに記述します。コンテキストに既に保持されているリストは置き換えられます。
Parameters:
- ctx wolfSSL_CTX_new()で作成されたWOLFSSL_CTX構造体へのポインタ。
- list "<公開鍵アルゴリズム>+<ハッシュ>" 要素(または digest を伴わない "ED25519" / "ED448")のコロン区切りリスト。
See:
Return:
- WOLFSSL_SUCCESS 成功時。
- WOLFSSL_FAILURE ポインタパラメータがNULLの場合、suites 構造体の確保に失敗した場合、またはリスト中のいずれかのトークンが認識されないか現在のビルドでサポートされていない場合。
認識される公開鍵トークンとハッシュトークン、および各トークンを利用するために必要なビルドオプションを以下の表に示します。
公開鍵トークン:
| トークン | 必要なビルドオプション |
|---|---|
| RSA | !NO_RSA |
| RSA-PSS / PSS | !NO_RSA かつ WC_RSA_PSS |
| ECDSA | HAVE_ECC |
| ED25519 | HAVE_ED25519(ハッシュ指定不要) |
| ED448 | HAVE_ED448 (ハッシュ指定不要) |
| DSA | !NO_DSA |
| SM2 | WOLFSSL_SM2 かつ WOLFSSL_SM3(ハッシュは SM3 固定) |
ハッシュトークン:
| トークン | 必要なビルドオプション |
|---|---|
| SHA256 | !NO_SHA256 |
| SHA384 | WOLFSSL_SHA384 |
| SHA512 | WOLFSSL_SHA512 |
| SHA224 | WOLFSSL_SHA224 |
| SM3 | WOLFSSL_SM3 |
| SHA1 | !NO_SHA かつ(!NO_OLD_TLS または WOLFSSL_ALLOW_TLS_SHA1) |
TLS 1.3 における注意事項: RFC 8446 の規定により、RSA PKCS#1 v1.5、DSA、SHA-1、SHA-224 はハンドシェイク署名としては使用できず、リストに含まれていてもネゴシエーション時に除外されます。"RSA-PSS+SHAxxx" を指定した場合は rsa_pss_rsae_shaxxx と rsa_pss_pss_shaxxx の両方のスキームが追加されます。Brainpool ECDSA 署名スキーム(RFC 8734)は本文字列インタフェースでは選択できず、HAVE_ECC_BRAINPOOL が有効な場合に自動でネゴシエーションされます。
Example
int ret;
WOLFSSL_CTX* ctx;
const char* list = "RSA-PSS+SHA256:ECDSA+SHA384:ED25519";
...
ret = wolfSSL_CTX_set1_sigalgs_list(ctx, list);
if (ret != WOLFSSL_SUCCESS) {
// 署名アルゴリズムリストの設定に失敗しました
}
function wolfSSL_set1_sigalgs_list
int wolfSSL_set1_sigalgs_list(
WOLFSSL * ssl,
const char * list
)
この関数は、wolfSSLセッションで優先順位に従って許可する署名アルゴリズムのリストを設定します。リストの形式、認識される公開鍵トークンおよびハッシュトークンは wolfSSL_CTX_set1_sigalgs_list() と同一です。トークン一覧および TLS 1.3 における注意事項については wolfSSL_CTX_set1_sigalgs_list() の説明を参照してください。セッションに既に保持されているリストは置き換えられます。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
- list "<公開鍵アルゴリズム>+<ハッシュ>" 要素(または digest を伴わない "ED25519" / "ED448")のコロン区切りリスト。
See:
Return:
- WOLFSSL_SUCCESS 成功時。
- WOLFSSL_FAILURE ポインタパラメータがNULLの場合、suites 構造体の確保に失敗した場合、またはリスト中のいずれかのトークンが認識されないか現在のビルドでサポートされていない場合。
Example
int ret;
WOLFSSL* ssl;
const char* list = "RSA-PSS+SHA256:ECDSA+SHA384:ED25519";
...
ret = wolfSSL_set1_sigalgs_list(ssl, list);
if (ret != WOLFSSL_SUCCESS) {
// 署名アルゴリズムリストの設定に失敗しました
}
function wolfSSL_CTX_set1_groups_list
int wolfSSL_CTX_set1_groups_list(
WOLFSSL_CTX * ctx,
const char * list
)
この関数は、wolfSSLコンテキストで優先順位に従って許可する鍵交換グループ(名前付き楕円曲線および KEM)のリストを設定します。リストはnull終端のテキスト文字列で、グループ名をコロンで区切って指定します(例: "P-384:P-256:X25519")。TLS v1.3 接続で使用する鍵交換パラメータを設定するために本関数を呼び出します(本関数は HAVE_ECC、WOLFSSL_TLS13、HAVE_SUPPORTED_CURVES がすべて定義された場合にのみ提供されます)。
Parameters:
- ctx wolfSSL_CTX_new()で作成されたWOLFSSL_CTX構造体へのポインタ。
- list 鍵交換グループ名のコロン区切りリストである文字列。
See:
- wolfSSL_set1_groups_list
- wolfSSL_CTX_set_groups
- wolfSSL_set_groups
- wolfSSL_UseKeyShare
- wolfSSL_preferred_group
Return:
- WOLFSSL_FAILURE ポインタパラメータがNULLの場合、グループがWOLFSSL_MAX_GROUP_COUNTを超える場合、グループ名が認識されない場合、またはTLS v1.3を使用していない場合。
- WOLFSSL_SUCCESS 成功時。
認識されるグループ名と必要なビルドオプションを以下に示します。名前は表とケースセンシティブに比較されます。
NIST / SEC 曲線(HAVE_ECC が必要):
| 名前 | 曲線 / グループ |
|---|---|
| P-160 | secp160r1 |
| P-160-2 | secp160r2 |
| P-192 | secp192r1 (prime192v1) |
| P-224 | secp224r1 |
| P-256 | secp256r1 (prime256v1) — "prime256v1" / "secp256r1" でも指定可 |
| P-384 | secp384r1 — "secp384r1" でも指定可 |
| P-521 | secp521r1 — "secp521r1" でも指定可 |
| K-160 | secp160k1 |
| K-192 | secp192k1 |
| K-224 | secp224k1 |
| K-256 | secp256k1 |
Brainpool 曲線(HAVE_ECC に加えて WOLFSSL_CUSTOM_CURVES と HAVE_ECC_BRAINPOOL が必要。通常は –enable-ecccustcurves=all で有効化):
| 名前 | 曲線 |
|---|---|
| B-256 | brainpoolP256r1 |
| B-384 | brainpoolP384r1 |
| B-512 | brainpoolP512r1 |
Edwards / Montgomery 曲線:
| 名前 | 必要なビルドオプション |
|---|---|
| X25519 | HAVE_CURVE25519 |
| X448 | HAVE_CURVE448 |
SM2(WOLFSSL_SM2 が必要):
| 名前 | グループ |
|---|---|
| SM2 | sm2p256v1 |
| sm2p256v1 | sm2p256v1(別名) |
ML-KEM(耐量子)グループ(WOLFSSL_HAVE_MLKEM かつ !WOLFSSL_NO_ML_KEM が必要):
| 名前 |
|---|
| ML_KEM_512 |
| ML_KEM_768 |
| ML_KEM_1024 |
ML-KEM ハイブリッドグループは、上記に加えて HAVE_ECC、および WOLFSSL_WC_MLKEM または HAVE_LIBOQS、さらに WOLFSSL_PQC_HYBRIDS("extra" セットには WOLFSSL_EXTRA_PQC_HYBRIDS)が必要です:
| 名前 | 必要なハイブリッドフラグ |
|---|---|
| SecP256r1MLKEM768 | WOLFSSL_PQC_HYBRIDS |
| SecP384r1MLKEM1024 | WOLFSSL_PQC_HYBRIDS |
| X25519MLKEM768 | WOLFSSL_PQC_HYBRIDS |
| SecP256r1MLKEM512 | WOLFSSL_EXTRA_PQC_HYBRIDS |
| SecP384r1MLKEM768 | WOLFSSL_EXTRA_PQC_HYBRIDS |
| SecP521r1MLKEM1024 | WOLFSSL_EXTRA_PQC_HYBRIDS |
| X25519MLKEM512 | WOLFSSL_EXTRA_PQC_HYBRIDS |
| X448MLKEM768 | WOLFSSL_EXTRA_PQC_HYBRIDS |
レガシー Kyber グループ(WOLFSSL_MLKEM_KYBER が必要。ハイブリッドはさらに HAVE_ECC と、WOLFSSL_WC_MLKEM または HAVE_LIBOQS が必要):
| 名前 |
|---|
| KYBER_LEVEL1 |
| KYBER_LEVEL3 |
| KYBER_LEVEL5 |
| P256_KYBER_LEVEL1 |
| P256_KYBER_LEVEL3 |
| P384_KYBER_LEVEL3 |
| P521_KYBER_LEVEL5 |
| X25519_KYBER_LEVEL1 |
| X25519_KYBER_LEVEL3 |
| X448_KYBER_LEVEL3 |
上記の名前に加え、HAVE_FIPS および HAVE_SELFTEST が定義されていないビルドでは、wolfCrypt に登録されている任意の曲線名(wc_ecc_get_curve_idx_from_name() で参照、例: "brainpoolP256r1")も受理されます。
リストに指定した名前の順序はそのまま保持され、TLS 1.3 における KeyShare の優先順位として使用されます。
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,
const char * list
)
この関数は、wolfSSLセッションで優先順位に従って許可する鍵交換グループ(名前付き楕円曲線および KEM)のリストを設定します。リストの形式および認識されるグループ名は wolfSSL_CTX_set1_groups_list() と同一です。利用可能な名前一覧および必要なビルドオプションについては wolfSSL_CTX_set1_groups_list() の説明を参照してください。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
- list 鍵交換グループのコロン区切りリストである文字列。
See:
- wolfSSL_CTX_set1_groups_list
- wolfSSL_CTX_set_groups
- wolfSSL_set_groups
- wolfSSL_UseKeyShare
- wolfSSL_preferred_group
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コンテキストで優先順位に従って許可する鍵交換グループ(名前付き楕円曲線および KEM)のリストを設定します。リストは名前付きグループ識別子(下表参照)の配列で、count に配列内の識別子数を指定します。TLS v1.3 接続で使用する鍵交換パラメータを設定するために本関数を呼び出します。配列の順序がそのまま KeyShare の優先順位として用いられます。
Parameters:
- ctx wolfSSL_CTX_new()で作成されたWOLFSSL_CTX構造体へのポインタ。
- groups 識別子による鍵交換グループのリスト。
- count
groups内の識別子数(WOLFSSL_MAX_GROUP_COUNT を超えてはならない)。
See:
- wolfSSL_set_groups
- wolfSSL_UseKeyShare
- wolfSSL_CTX_set1_groups_list
- wolfSSL_set1_groups_list
- wolfSSL_preferred_group
Return:
- BAD_FUNC_ARG ポインタパラメータが NULL の場合、
countが WOLFSSL_MAX_GROUP_COUNT を超える場合、または基底メソッドが TLS メソッドでない場合。 - WOLFSSL_SUCCESS 成功時。
認識される識別子と必要なビルドオプションを以下に示します。識別子は
NIST / SEC 曲線(HAVE_ECC が必要):
| 識別子 | 曲線 / グループ |
|---|---|
| WOLFSSL_ECC_SECP160K1 | secp160k1 |
| WOLFSSL_ECC_SECP160R1 | secp160r1 |
| WOLFSSL_ECC_SECP160R2 | secp160r2 |
| WOLFSSL_ECC_SECP192K1 | secp192k1 |
| WOLFSSL_ECC_SECP192R1 | secp192r1 (prime192v1) |
| WOLFSSL_ECC_SECP224K1 | secp224k1 |
| WOLFSSL_ECC_SECP224R1 | secp224r1 |
| WOLFSSL_ECC_SECP256K1 | secp256k1 |
| WOLFSSL_ECC_SECP256R1 | secp256r1 (prime256v1) |
| WOLFSSL_ECC_SECP384R1 | secp384r1 |
| WOLFSSL_ECC_SECP521R1 | secp521r1 |
Brainpool 曲線(HAVE_ECC に加えて WOLFSSL_CUSTOM_CURVES と HAVE_ECC_BRAINPOOL が必要。通常は –enable-ecccustcurves=all で有効化):
| 識別子 | 曲線 | 備考 |
|---|---|---|
| WOLFSSL_ECC_BRAINPOOLP256R1 | brainpoolP256r1 | TLS 1.2 グループ ID 26 |
| WOLFSSL_ECC_BRAINPOOLP384R1 | brainpoolP384r1 | TLS 1.2 グループ ID 27 |
| WOLFSSL_ECC_BRAINPOOLP512R1 | brainpoolP512r1 | TLS 1.2 グループ ID 28 |
| WOLFSSL_ECC_BRAINPOOLP256R1TLS13 | brainpoolP256r1 | RFC 8734 TLS 1.3 ID |
| WOLFSSL_ECC_BRAINPOOLP384R1TLS13 | brainpoolP384r1 | RFC 8734 TLS 1.3 ID |
| WOLFSSL_ECC_BRAINPOOLP512R1TLS13 | brainpoolP512r1 | RFC 8734 TLS 1.3 ID |
Edwards / Montgomery 曲線:
| 識別子 | 必要なビルドオプション |
|---|---|
| WOLFSSL_ECC_X25519 | HAVE_CURVE25519 |
| WOLFSSL_ECC_X448 | HAVE_CURVE448 |
SM2(WOLFSSL_SM2 が必要):
| 識別子 | グループ |
|---|---|
| WOLFSSL_ECC_SM2P256V1 | sm2p256v1 |
有限体 DH(RFC 7919)グループ(HAVE_FFDHE および各サイズに対応する HAVE_FFDHE_NNNN マクロが必要):
| 識別子 | グループ |
|---|---|
| WOLFSSL_FFDHE_2048 | ffdhe2048 |
| WOLFSSL_FFDHE_3072 | ffdhe3072 |
| WOLFSSL_FFDHE_4096 | ffdhe4096 |
| WOLFSSL_FFDHE_6144 | ffdhe6144 |
| WOLFSSL_FFDHE_8192 | ffdhe8192 |
ML-KEM(耐量子)グループ(HAVE_PQC、WOLFSSL_HAVE_MLKEM、!WOLFSSL_NO_ML_KEM が必要):
| 識別子 |
|---|
| WOLFSSL_ML_KEM_512 |
| WOLFSSL_ML_KEM_768 |
| WOLFSSL_ML_KEM_1024 |
ML-KEM ハイブリッドグループは、上記に加えて HAVE_ECC、および WOLFSSL_WC_MLKEM または HAVE_LIBOQS、さらに WOLFSSL_PQC_HYBRIDS("extra" セットには WOLFSSL_EXTRA_PQC_HYBRIDS)が必要です:
| 識別子 | 必要なハイブリッドフラグ |
|---|---|
| WOLFSSL_SECP256R1MLKEM768 | WOLFSSL_PQC_HYBRIDS |
| WOLFSSL_X25519MLKEM768 | WOLFSSL_PQC_HYBRIDS |
| WOLFSSL_SECP384R1MLKEM1024 | WOLFSSL_PQC_HYBRIDS |
| WOLFSSL_SECP256R1MLKEM512 | WOLFSSL_EXTRA_PQC_HYBRIDS |
| WOLFSSL_SECP384R1MLKEM768 | WOLFSSL_EXTRA_PQC_HYBRIDS |
| WOLFSSL_SECP521R1MLKEM1024 | WOLFSSL_EXTRA_PQC_HYBRIDS |
| WOLFSSL_X25519MLKEM512 | WOLFSSL_EXTRA_PQC_HYBRIDS |
| WOLFSSL_X448MLKEM768 | WOLFSSL_EXTRA_PQC_HYBRIDS |
レガシー Kyber グループ(HAVE_PQC と WOLFSSL_MLKEM_KYBER が必要。ハイブリッドはさらに HAVE_ECC と、WOLFSSL_WC_MLKEM または HAVE_LIBOQS が必要):
| 識別子 |
|---|
| WOLFSSL_KYBER_LEVEL1 |
| WOLFSSL_KYBER_LEVEL3 |
| WOLFSSL_KYBER_LEVEL5 |
| WOLFSSL_P256_KYBER_LEVEL1 |
| WOLFSSL_P256_KYBER_LEVEL3 |
| WOLFSSL_P384_KYBER_LEVEL3 |
| WOLFSSL_P521_KYBER_LEVEL5 |
| WOLFSSL_X25519_KYBER_LEVEL1 |
| WOLFSSL_X25519_KYBER_LEVEL3 |
| WOLFSSL_X448_KYBER_LEVEL3 |
Example
int ret;
WOLFSSL_CTX* ctx;
int groups[] = { WOLFSSL_ECC_X25519, WOLFSSL_ECC_SECP256R1 };
int count = sizeof(groups) / sizeof(groups[0]);
...
ret = wolfSSL_CTX_set_groups(ctx, groups, count);
if (ret != WOLFSSL_SUCCESS) {
// グループリストの設定に失敗しました
}
function wolfSSL_set_groups
int wolfSSL_set_groups(
WOLFSSL * ssl,
int * groups,
int count
)
この関数は、wolfSSLセッションで優先順位に従って許可する鍵交換グループ(名前付き楕円曲線および KEM)のリストを設定します。配列の形式および認識される識別子は wolfSSL_CTX_set_groups() と同一です。利用可能な識別子一覧および必要なビルドオプションについては wolfSSL_CTX_set_groups() の説明を参照してください。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
- groups 識別子による鍵交換グループのリスト。
- count
groups内の識別子数(WOLFSSL_MAX_GROUP_COUNT を超えてはならない)。
See:
- wolfSSL_CTX_set_groups
- wolfSSL_UseKeyShare
- wolfSSL_CTX_set1_groups_list
- wolfSSL_set1_groups_list
- wolfSSL_preferred_group
Return:
- BAD_FUNC_ARG ポインタパラメータが NULL の場合、
countが WOLFSSL_MAX_GROUP_COUNT を超える場合、識別子のいずれかが認識されない場合、または基底メソッドが TLS メソッドでない場合。 - WOLFSSL_SUCCESS 成功時。
Example
int ret;
WOLFSSL* ssl;
int groups[] = { WOLFSSL_ECC_X25519, WOLFSSL_ECC_SECP256R1 };
int count = sizeof(groups) / sizeof(groups[0]);
...
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:
- wolfSSL_set_psk_client_tls13_callback
- wolfSSL_CTX_set_psk_server_tls13_callback
- wolfSSL_set_psk_server_tls13_callback
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:
- wolfSSL_CTX_set_psk_client_tls13_callback
- wolfSSL_CTX_set_psk_server_tls13_callback
- wolfSSL_set_psk_server_tls13_callback
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:
- wolfSSL_CTX_set_psk_client_tls13_callback
- wolfSSL_set_psk_client_tls13_callback
- wolfSSL_set_psk_server_tls13_callback
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:
- wolfSSL_CTX_set_psk_client_tls13_callback
- wolfSSL_set_psk_client_tls13_callback
- wolfSSL_CTX_set_psk_server_tls13_callback
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:
- wolfSSL_preferred_group
- wolfSSL_CTX_set1_groups_list
- wolfSSL_set1_groups_list
- wolfSSL_CTX_set_groups
- wolfSSL_set_groups
- wolfSSL_NoKeyShares
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:
- wolfSSLv3_server_method
- wolfTLSv1_server_method
- wolfTLSv1_1_server_method
- wolfTLSv1_2_server_method
- wolfTLSv1_3_server_method
- wolfDTLSv1_server_method
- wolfSSLv23_server_method
- wolfSSL_CTX_new
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:
- wolfSSLv3_client_method
- wolfTLSv1_client_method
- wolfTLSv1_1_client_method
- wolfTLSv1_2_client_method
- wolfTLSv1_3_client_method
- wolfDTLSv1_client_method
- wolfSSLv23_client_method
- wolfSSL_CTX_new
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:
- wolfSSLv3_server_method
- wolfTLSv1_server_method
- wolfTLSv1_1_server_method
- wolfTLSv1_2_server_method
- wolfTLSv1_3_server_method_ex
- wolfDTLSv1_server_method
- wolfSSLv23_server_method
- wolfSSL_CTX_new
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:
- wolfSSLv3_client_method
- wolfTLSv1_client_method
- wolfTLSv1_1_client_method
- wolfTLSv1_2_client_method
- wolfTLSv1_3_client_method_ex
- wolfDTLSv1_client_method
- wolfSSLv23_client_method
- wolfSSL_CTX_new
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:
- wolfSSL_set_client_cert_type
- wolfSSL_CTX_set_server_cert_type
- wolfSSL_set_server_cert_type
- wolfSSL_get_negotiated_client_cert_type
- wolfSSL_get_negotiated_server_cert_type
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:
- wolfSSL_set_client_cert_type
- wolfSSL_CTX_set_client_cert_type
- wolfSSL_set_server_cert_type
- wolfSSL_get_negotiated_client_cert_type
- wolfSSL_get_negotiated_server_cert_type
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:
- wolfSSL_CTX_set_client_cert_type
- wolfSSL_CTX_set_server_cert_type
- wolfSSL_set_server_cert_type
- wolfSSL_get_negotiated_client_cert_type
- wolfSSL_get_negotiated_server_cert_type
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:
- wolfSSL_set_client_cert_type
- wolfSSL_CTX_set_server_cert_type
- wolfSSL_set_server_cert_type
- wolfSSL_get_negotiated_client_cert_type
- wolfSSL_get_negotiated_server_cert_type
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:
- wolfSSL_SetCookieCtx
- wolfSSL_CTX_SetGenCookie
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:
- wolfSSL_CTX_SetIORecv
- wolfSSL_SSLSetIORecv
- wolfSSL_SSLEnableRead
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:
- wolfSSL_CTX_SetIORecv
- wolfSSL_SSLSetIORecv
- wolfSSL_SSLEnableRead
Example
WOLFSSL_CTX* ctx = wolfSSL_CTX_new(method);
WOLFSSL* ssl = wolfSSL_new(ctx);
wolfSSL_SSLDisableRead(ssl);
...
wolfSSL_SSLEnableRead(ssl);
Updated on 2026-05-14 at 13:47:35 +0000