ssl.h
Functions
| Name | |
|---|---|
| WOLFSSL_METHOD * | wolfDTLSv1_2_client_method_ex(void * heap) この関数はDTLS v1.2クライアントメソッドを初期化します。 |
| 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を定義することによって)。 |
| WOLFSSL_METHOD * | wolfDTLSv1_2_server_method(void ) この関数は、サーバー側用のWOLFSSL_METHODを作成し、初期化します。 |
| int | wolfSSL_use_old_poly(WOLFSSL * ssl, int value) chacha-poly AEAD構築の最初のリリースと新しいバージョンの間にはいくつかの違いがあるため、古いバージョンを使用するサーバー/クライアントと通信するためのオプションを追加しました。デフォルトでは、wolfSSLは新しいバージョンを使用します。 |
| int | wolfSSL_dtls_import(WOLFSSL * ssl, unsigned char * buf, unsigned int sz) wolfSSL_dtls_import()関数は、シリアル化されたセッション状態を解析するために使用されます。これにより、ハンドシェイクが完了した後に接続を再開できます。 |
| int | wolfSSL_tls_import(WOLFSSL * ssl, const unsigned char * buf, unsigned int sz) シリアル化されたTLSセッションをインポートするために使用されます。この関数は、接続の状態をインポートするためのものです。警告:bufには状態に関する機密情報が含まれており、保存する場合は暗号化してから保存するのが最善です。マクロWOLFSSL_SESSION_EXPORT_DEBUGを定義することで、追加のデバッグ情報を表示できます。 |
| int | wolfSSL_CTX_dtls_set_export(WOLFSSL_CTX * ctx, wc_dtls_export func) wolfSSL_CTX_dtls_set_export()関数は、セッションをエクスポートするためのコールバック関数を設定するために使用されます。以前に保存されたエクスポート関数をクリアするために、パラメータfuncとしてNULLを渡すことができます。サーバー側で使用され、ハンドシェイクが完了した直後に呼び出されます。 |
| int | wolfSSL_dtls_set_export(WOLFSSL * ssl, wc_dtls_export func) wolfSSL_dtls_set_export()関数は、セッションをエクスポートするためのコールバック関数を設定するために使用されます。以前に保存されたエクスポート関数をクリアするために、パラメータfuncとしてNULLを渡すことができます。サーバー側で使用され、ハンドシェイクが完了した直後に呼び出されます。 |
| int | wolfSSL_dtls_export(WOLFSSL * ssl, unsigned char * buf, unsigned int * sz) wolfSSL_dtls_export()関数は、WOLFSSLセッションを提供されたバッファにシリアライズするために使用されます。セッションを送信するための関数コールバックを使用するよりもメモリオーバーヘッドが少なく、セッションをシリアライズするタイミングを選択できます。関数に渡されたときにbufferがNULLの場合、szはWOLFSSLセッションをシリアライズするために必要なバッファのサイズに設定されます。 |
| int | wolfSSL_tls_export(WOLFSSL * ssl, unsigned char * buf, unsigned int * sz) シリアライズされたTLSセッションをエクスポートするために使用されます。この関数は接続のシリアライズされた状態をエクスポートするためのものです。 ほとんどの場合、wolfSSL_tls_exportの代わりにwolfSSL_get1_sessionを使用する必要があります。 追加のデバッグ情報は、マクロWOLFSSL_SESSION_EXPORT_DEBUGが定義されている場合に表示できます。 警告: bufには状態に関する機密情報が含まれているため、保存する場合は暗号化してから保存することが最善です。 |
| int | wolfSSL_CTX_load_static_memory(WOLFSSL_CTX * ctx, wolfSSL_method_func method, unsigned char * buf, unsigned int sz, int flag, int max) この関数は、CTX用の静的メモリを確保するために使用されます。確保されたメモリは、CTXのライフタイム中およびCTXから作成されたSSLオブジェクトに使用されます。NULLのctxポインタとwolfSSL_method_func関数を渡すことで、CTX自体の作成も静的メモリを使用します。wolfSSL_method_funcは、WOLFSSL_METHOD (wolfSSL_method_func)(void heap);という関数シグネチャを持ちます。maxに0を渡すと、設定されていないかのように動作し、最大同時使用制限は適用されません。渡されたflag値は、メモリの使用方法と動作中の挙動を決定します。利用可能なフラグは次のとおりです: 0 - デフォルトの一般メモリ、WOLFMEM_IO_POOL - メッセージの送受信時の入出力バッファに使用され、一般メモリをオーバーライドするため、渡されたバッファ内のすべてのメモリがIOに使用されます、WOLFMEM_IO_FIXED - WOLFMEM_IO_POOLと同じですが、各SSLがライフタイム中に2つのバッファを保持します、WOLFMEM_TRACK_STATS - 各SSLが実行中にメモリ統計を追跡します。 |
| int | wolfSSL_CTX_is_static_memory(WOLFSSL_CTX * ctx, WOLFSSL_MEM_STATS * mem_stats) この関数は接続の動作を変更せず、静的メモリの使用状況に関する情報を収集するためにのみ使用されます。 |
| int | wolfSSL_is_static_memory(WOLFSSL * ssl, WOLFSSL_MEM_CONN_STATS * mem_stats) wolfSSL_is_static_memoryは、SSLの静的メモリ使用状況に関する情報を収集するために使用されます。戻り値は静的メモリが使用されているかどうかを示し、WOLFSSL_MEM_CONN_STATSは、静的メモリをロードする際に親CTXにWOLFMEM_TRACK_STATSフラグが渡された場合にのみ入力されます。 |
| int | wolfSSL_CTX_use_certificate_file(WOLFSSL_CTX * ctx, const char * file, int format) この関数は、証明書ファイルをSSLコンテキスト(WOLFSSL_CTX)にロードします。ファイルはfile引数によって提供されます。format引数はファイルのフォーマットタイプを指定します。SSL_FILETYPE_ASN1またはSSL_FILETYPE_PEMのいずれかです。適切な使用方法については、exampleを参照してください。 |
| int | wolfSSL_CTX_use_PrivateKey_file(WOLFSSL_CTX * ctx, const char * file, int format) この関数は、秘密鍵ファイルをSSLコンテキスト(WOLFSSL_CTX)にロードします。ファイルはfile引数によって提供されます。format引数はファイルのフォーマットタイプを指定します - SSL_FILETYPE_ASN1またはSSL_FILETYPE_PEM。適切な使用方法については、exampleを参照してください。 |
| int | wolfSSL_CTX_load_verify_locations(WOLFSSL_CTX * ctx, const char * file, const char * path) この関数は、PEM形式のCA証明書ファイルをSSLコンテキスト(WOLFSSL_CTX)にロードします。これらの証明書は信頼されたルート証明書として扱われ、SSLハンドシェイク中にピアから受信した証明書を検証するために使用されます。file引数によって提供されるルート証明書ファイルは、単一の証明書または複数の証明書を含むファイルである場合があります。 同じファイルに複数のCA証明書が含まれている場合、wolfSSLはファイル内に提示された順序でそれらをロードします。path引数は、信頼されたルートCAの証明書を含むディレクトリの名前へのポインタです。fileの値がNULLでない場合、必要でなければpathをNULLとして指定できます。pathが指定され、ライブラリのビルド時にNO_WOLFSSL_DIRが定義されていない場合、wolfSSLは指定されたディレクトリにあるすべてのCA証明書をロードします。この関数はディレクトリ内のすべてのファイルをロードしようとします。この関数は、ヘッダー"-----BEGIN CERTIFICATE-----"を持つPEM形式のCERT_TYPEファイルを想定しています。 |
| int | wolfSSL_CTX_load_verify_locations_ex(WOLFSSL_CTX * ctx, const char * file, const char * path, unsigned int flags) この関数は、PEM形式のCA証明書ファイルをSSLコンテキスト(WOLFSSL_CTX)にロードします。これらの証明書は信頼されたルート証明書として扱われ、SSLハンドシェイク中にピアから受信した証明書を検証するために使用されます。file引数によって提供されるルート証明書ファイルは、単一の証明書または複数の証明書を含むファイルである場合があります。 同じファイルに複数のCA証明書が含まれている場合、wolfSSLはファイル内に提示された順序でそれらをロードします。path引数は、信頼されたルートCAの証明書を含むディレクトリの名前へのポインタです。fileの値がNULLでない場合、必要でなければpathをNULLとして指定できます。pathが指定され、ライブラリのビルド時にNO_WOLFSSL_DIRが定義されていない場合、wolfSSLは指定されたディレクトリにあるすべてのCA証明書をロードします。この関数は、指定されたフラグに基づいてディレクトリ内のすべてのファイルをロードしようとします。この関数は、ヘッダー"-----BEGIN CERTIFICATE-----"を持つPEM形式のCERT_TYPEファイルを想定しています。 |
| const char ** | wolfSSL_get_system_CA_dirs(word32 * num) この関数は、wolfSSL_CTX_load_system_CA_certsが呼び出されたときにwolfSSLがシステムCA証明書を検索するディレクトリを表す文字列の配列へのポインタを返します。証明書をアクセス可能なシステムディレクトリに保存しないシステム(Appleプラットフォームなど)では、この関数は常にNULLを返します。 |
| int | wolfSSL_CTX_load_system_CA_certs(WOLFSSL_CTX * ctx) ほとんどのプラットフォーム(LinuxおよびWindowsを含む)において、この関数はOS依存のCA証明書ストアからWOLFSSL_CTXへCA証明書を読み込もうと試みます。読み込まれた証明書は信頼されます。 |
| int | wolfSSL_CTX_trust_peer_cert(WOLFSSL_CTX * ctx, const char * file, int type) この関数は、TLS/SSLハンドシェイクを実行する際にピアを検証するために使用する証明書を読み込みます。ハンドシェイク中に送信されるピア証明書は、利用可能な場合はSKIDを使用し、署名を使用して比較されます。これら2つが一致しない場合は、読み込まれたCAが使用されます。この機能はマクロWOLFSSL_TRUST_PEER_CERTを定義することで有効になります。適切な使用方法については、examplesを参照してください。 |
| int | wolfSSL_CTX_use_certificate_chain_file(WOLFSSL_CTX * ctx, const char * file) この関数は、証明書チェーンをSSLコンテキスト(WOLFSSL_CTX)に読み込みます。証明書チェーンを含むファイルはfile引数によって提供され、PEM形式の証明書を含む必要があります。この関数は、MAX_CHAIN_DEPTH(デフォルト = 9、internal.hで定義)個までの証明書と、サブジェクト証明書を処理します。 |
| int | wolfSSL_CTX_use_RSAPrivateKey_file(WOLFSSL_CTX * ctx, const char * file, int format) この関数は、SSL接続で使用されるプライベートRSA鍵をSSLコンテキスト(WOLFSSL_CTX)に読み込みます。この関数は、wolfSSLがOpenSSL互換レイヤーを有効にしてコンパイルされた場合(–enable_opensslExtra、#define OPENSSL_EXTRA)にのみ利用可能であり、より一般的に使用されるwolfSSL_CTX_use_PrivateKey_file()関数と同一です。file引数には、format引数で指定された形式のRSAプライベート鍵ファイルへのポインタが含まれます。 |
| long | wolfSSL_get_verify_depth(WOLFSSL * ssl) この関数は、有効なセッション(つまり、非NULLのセッションオブジェクト(ssl)が存在する場合)に対して許可される最大チェーン深度を返します。デフォルトは9です。 |
| long | wolfSSL_CTX_get_verify_depth(WOLFSSL_CTX * ctx) この関数は、CTX構造体を使用して証明書チェーンの深度を取得します。 |
| int | wolfSSL_use_certificate_file(WOLFSSL * ssl, const char * file, int format) この関数は、証明書ファイルをSSLセッション(WOLFSSL構造体)に読み込みます。証明書ファイルはfile引数によって提供されます。format引数は、ファイルの形式タイプ(SSL_FILETYPE_ASN1またはSSL_FILETYPE_PEM)を指定します。 |
| int | wolfSSL_use_PrivateKey_file(WOLFSSL * ssl, const char * file, int format) この関数は、プライベート鍵ファイルをSSLセッション(WOLFSSL構造体)に読み込みます。鍵ファイルはfile引数によって提供されます。format引数は、ファイルの形式タイプ(SSL_FILETYPE_ASN1またはSSL_FILETYPE_PEM)を指定します。 |
| int | wolfSSL_use_certificate_chain_file(WOLFSSL * ssl, const char * file) この関数は、証明書のチェーンをSSLセッション(WOLFSSL構造体)にロードします。証明書チェーンを含むファイルはfile引数で指定され、PEM形式の証明書を含んでいる必要があります。この関数は、MAX_CHAIN_DEPTH(デフォルト = 9、internal.hで定義)個までの証明書と、サブジェクト証明書を処理します。 |
| int | wolfSSL_use_RSAPrivateKey_file(WOLFSSL * ssl, const char * file, int format) この関数は、SSL接続で使用されるプライベートRSA鍵をSSLセッション(WOLFSSL構造体)にロードします。この関数は、wolfSSLがOpenSSL互換レイヤーを有効にしてコンパイルされている場合(–enable_opensslExtra、#define OPENSSL_EXTRA)にのみ利用可能であり、より一般的に使用されるwolfSSL_use_PrivateKey_file()関数と同一です。file引数は、formatで指定された形式のRSAプライベート鍵ファイルへのポインタを含みます。 |
| int | wolfSSL_CTX_der_load_verify_locations(WOLFSSL_CTX * ctx, const char * file, int format) この関数はwolfSSL_CTX_load_verify_locationsに似ていますが、DER形式のCAファイルをSSLコンテキスト(WOLFSSL_CTX)にロードできます。PEM形式のCAファイルをロードするためにも使用できます。これらの証明書は信頼されたルート証明書として扱われ、SSLハンドシェイク中にピアから受信した証明書を検証するために使用されます。file引数で指定されるルート証明書ファイルは、単一の証明書または複数の証明書を含むファイルである可能性があります。複数のCA証明書が同じファイルに含まれている場合、wolfSSLはファイル内で提示された順序でそれらをロードします。format引数は、証明書の形式がSSL_FILETYPE_PEMまたはSSL_FILETYPE_ASN1(DER)のいずれかであることを指定します。wolfSSL_CTX_load_verify_locationsとは異なり、この関数は指定されたディレクトリパスからのCA証明書のロードを許可しません。この関数は、wolfSSLライブラリがWOLFSSL_DER_LOADを定義してコンパイルされている場合にのみ利用可能です。 |
| 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 |
| char * | wolfSSL_get_cipher_list(int priority) 渡された優先度レベルでの暗号の名前を取得します。 |
| int | wolfSSL_get_ciphers(char * buf, int len) この関数は、wolfSSLで有効になっている暗号を取得します。 |
| const char * | wolfSSL_get_cipher_name(WOLFSSL * ssl) この関数は、引数をwolfSSL_get_cipher_name_internalに渡すことによって、DHE-RSA形式で暗号名を取得します。 |
| int | wolfSSL_get_fd(const WOLFSSL * ) この関数は、SSL接続の入力機能として使用される読み取りファイル記述子(fd)を返します。通常、これはソケットファイル記述子になります。 |
| int | wolfSSL_get_wfd(const WOLFSSL * ) この関数は、SSL接続の出力機能として使用される書き込みファイルディスクリプタ(fd)を返します。通常はソケットファイルディスクリプタになります。 |
| void | wolfSSL_set_using_nonblock(WOLFSSL * ssl, int nonblock) この関数は、WOLFSSLオブジェクトに対して、下層のI/Oがノンブロッキングであることを通知します。アプリケーションがWOLFSSLオブジェクトを作成した後、それをノンブロッキングソケットと共に使用する場合は、wolfSSL_set_using_nonblock()を呼び出してください。これにより、WOLFSSLオブジェクトは、EWOULDBLOCKを受け取ることがタイムアウトではなく、recvfrom呼び出しがブロックすることを意味すると認識できます。 |
| int | wolfSSL_get_using_nonblock(WOLFSSL * ) この関数により、アプリケーションはwolfSSLがノンブロッキングI/Oを使用しているかどうかを判定できます。wolfSSLがノンブロッキングI/Oを使用している場合、この関数は1を返し、それ以外の場合は0を返します。アプリケーションがWOLFSSLオブジェクトを作成した後、それをノンブロッキングソケットと共に使用する場合は、wolfSSL_set_using_nonblock()を呼び出してください。これにより、WOLFSSLオブジェクトは、EWOULDBLOCKを受け取ることがタイムアウトではなく、recvfrom呼び出しがブロックすることを意味すると認識できます。 |
| int | wolfSSL_write(WOLFSSL * ssl, const void * data, int sz) この関数は、バッファdataからszバイトをSSL接続sslに書き込みます。必要に応じて、wolfSSL_connect()またはwolfSSL_accept()によってハンドシェイクがまだ実行されていない場合、wolfSSL_write()はSSL/TLSセッションをネゴシエートします。(D)TLSv1.3を使用していてearly data機能がコンパイルされている場合、この関数はデータ送信が可能になるまでハンドシェイクを進めます。次のwolfSSL_Connect()、wolfSSL_Accept()、wolfSSL_read()の呼び出しでハンドシェイクが完了します。wolfSSL_write()は、ブロッキングとノンブロッキングの両方のI/Oで動作します。下層のI/Oがノンブロッキングの場合、wolfSSL_write()は、下層のI/OがwolfSSL_write()を継続するために必要な要求を満たせなくなった時点で返されます。この場合、wolfSSL_get_error()を呼び出すと、SSL_ERROR_WANT_READまたはSSL_ERROR_WANT_WRITEのいずれかが返されます。呼び出し側プロセスは、下層のI/Oの準備ができたら、wolfSSL_write()の呼び出しを繰り返す必要があります。下層のI/Oがブロッキングの場合、wolfSSL_write()は、サイズszのバッファデータが完全に書き込まれるか、エラーが発生するまで返されません。 |
| int | wolfSSL_read(WOLFSSL * ssl, void * data, int sz) この関数は、SSLセッション(ssl)の内部読み取りバッファからszバイトをバッファdataに読み込みます。読み取られたバイトは内部受信バッファから削除されます。必要に応じて、wolfSSL_connect()またはwolfSSL_accept()によってハンドシェイクがまだ実行されていない場合、wolfSSL_read()はSSL/TLSセッションをネゴシエートします。SSL/TLSプロトコルは、最大サイズが16kBのSSLレコードを使用します(最大レコードサイズは、 |
| int | wolfSSL_peek(WOLFSSL * ssl, void * data, int sz) この関数は、SSLセッション(ssl)の内部読み取りバッファからszバイトをバッファdataにコピーします。この関数は、内部SSLセッション受信バッファ内のデータが削除または変更されない点を除いて、wolfSSL_read()と同じです。wolfSSL_read()と同様に、必要に応じて、wolfSSL_connect()またはwolfSSL_accept()によってハンドシェイクがまだ実行されていない場合、wolfSSL_peek()はSSL/TLSセッションをネゴシエートします。SSL/TLSプロトコルは、最大サイズが16kBのSSLレコードを使用します(最大レコードサイズは、 |
| int | wolfSSL_accept(WOLFSSL * ) この関数はサーバ側で呼び出され、SSLクライアントがSSL/TLSハンドシェイクを開始するのを待機します。この関数が呼び出されるとき、下層の通信チャネルはすでに設定されています。wolfSSL_accept()は、ブロッキングとノンブロッキングの両方のI/Oで動作します。下層のI/Oがノンブロッキングの場合、wolfSSL_accept()は、下層のI/OがwolfSSL_acceptがハンドシェイクを継続するために必要な要求を満たせなくなった時点で返されます。この場合、wolfSSL_get_error()を呼び出すと、SSL_ERROR_WANT_READまたはSSL_ERROR_WANT_WRITEのいずれかが返されます。呼び出し側プロセスは、データの読み取りが可能になったらwolfSSL_accept()の呼び出しを繰り返す必要があり、wolfSSLは中断した箇所から再開します。ノンブロッキングソケットを使用する場合、何もする必要はありませんが、select()を使用して必要な条件を確認できます。下層のI/Oがブロッキングの場合、wolfSSL_accept()は、ハンドシェイクが完了するか、エラーが発生するまで返されません。 |
| int | wolfDTLS_accept_stateless(WOLFSSL * ssl) この関数はサーバ側で呼び出され、SSLクライアントがDTLSハンドシェイクを開始するのをステートレスに待機します。 |
| void | wolfSSL_CTX_free(WOLFSSL_CTX * ) この関数は、割り当てられたWOLFSSL_CTXオブジェクトを解放します。この関数はCTX参照カウントをデクリメントし、参照カウントが0になった場合にのみコンテキストを解放します。 |
| void | wolfSSL_free(WOLFSSL * ) この関数は、割り当てられたwolfSSLオブジェクトを解放します。 |
| int | wolfSSL_shutdown(WOLFSSL * ) この関数は、SSLセッションsslを使用してアクティブなSSL/TLS接続をシャットダウンします。この関数は、ピアに「close notify」アラートを送信しようと試みます。呼び出し側のアプリケーションは、ピアからの応答として「close notify」アラートが送信されるのを待つか、wolfSSL_shutdown()を直接呼び出した後に基盤となる接続をシャットダウンするか(リソースを節約するため)を選択できます。TLS仕様では、どちらのオプションも許可されています。基盤となる接続を将来再び使用する場合は、ピア間の同期を維持するために、完全な双方向シャットダウン手順を実行する必要があります。wolfSSL_shutdown()は、ブロッキングI/OとノンブロッキングI/Oの両方で動作します。基盤となるI/Oがノンブロッキングの場合、基盤となるI/OがwolfSSL_shutdown()の継続に必要な要求を満たせなかった場合、wolfSSL_shutdown()はエラーを返します。この場合、wolfSSL_get_error()を呼び出すと、SSL_ERROR_WANT_READまたはSSL_ERROR_WANT_WRITEのいずれかが返されます。呼び出し側プロセスは、基盤となるI/Oの準備ができたときに、wolfSSL_shutdown()の呼び出しを繰り返す必要があります。 |
| int | wolfSSL_send(WOLFSSL * ssl, const void * data, int sz, int flags) この関数は、指定されたフラグを使用して、バッファdataからszバイトをSSL接続sslに書き込みます。必要に応じて、wolfSSL_connect()またはwolfSSL_accept()によってハンドシェイクがまだ実行されていない場合、wolfSSL_send()はSSL/TLSセッションをネゴシエートします。wolfSSL_send()は、ブロッキングI/OとノンブロッキングI/Oの両方で動作します。基盤となるI/Oがノンブロッキングの場合、基盤となるI/OがwolfSSL_sendの継続に必要な要求を満たせなかった場合、wolfSSL_send()は戻ります。この場合、wolfSSL_get_error()を呼び出すと、SSL_ERROR_WANT_READまたはSSL_ERROR_WANT_WRITEのいずれかが返されます。呼び出し側プロセスは、基盤となるI/Oの準備ができたときに、wolfSSL_send()の呼び出しを繰り返す必要があります。基盤となるI/Oがブロッキングの場合、wolfSSL_send()は、サイズszのバッファdataが完全に書き込まれるか、エラーが発生するまで戻りません。 |
| int | wolfSSL_recv(WOLFSSL * ssl, void * data, int sz, int flags) この関数は、指定されたフラグを使用して、SSLセッション(ssl)の内部読み取りバッファからszバイトをバッファdataに読み込みます。読み取られたバイトは、内部受信バッファから削除されます。この関数は、基盤となる読み取り操作のrecvフラグをアプリケーションが設定できる点を除いて、wolfSSL_read()と同じです。必要に応じて、wolfSSL_connect()またはwolfSSL_accept()によってハンドシェイクがまだ実行されていない場合、wolfSSL_recv()はSSL/TLSセッションをネゴシエートします。SSL/TLSプロトコルは、最大サイズ16kBのSSLレコードを使用します(最大レコードサイズは、 |
| int | wolfSSL_get_error(WOLFSSL * ssl, int ret) この関数は、前回のAPI関数呼び出し(wolfSSL_connect、wolfSSL_accept、wolfSSL_read、wolfSSL_write等)がエラーリターンコード(SSL_FAILURE)になった理由を説明する一意のエラーコードを返します。前回の関数の戻り値は、retを通じてwolfSSL_get_errorに渡されます。wolfSSL_get_errorが呼び出されて一意のエラーコードを返した後、wolfSSL_ERR_error_string()を呼び出して、人間が読めるエラー文字列を取得できます。詳細については、wolfSSL_ERR_error_string()を参照してください。 |
| int | wolfSSL_get_alert_history(WOLFSSL * ssl, WOLFSSL_ALERT_HISTORY * h) この関数はアラート履歴を取得します。 |
| 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()を呼び出して解放する必要があります。 |
| WOLFSSL_SESSION * | wolfSSL_get_session(WOLFSSL * ssl) NO_SESSION_CACHE_REFが定義されている場合、この関数はsslで使用されている現在のセッション(WOLFSSL_SESSION)へのポインタを返します。この関数は、WOLFSSL_SESSIONオブジェクトへの非永続的なポインタを返します。返されたポインタは、wolfSSL_freeが呼び出されたときに解放されます。この呼び出しは、現在のセッションを検査または変更するためにのみ使用する必要があります。セッション再開には、wolfSSL_get1_session()を使用することをお勧めします。後方互換性のため、NO_SESSION_CACHE_REFが定義されていない場合、この関数はローカルキャッシュに格納されている永続的なセッションオブジェクトポインタを返します。キャッシュサイズは有限であり、アプリケーションがwolfSSL_set_session()を呼び出すまでに、別のssl接続によってセッションオブジェクトが上書きされるリスクがあります。アプリケーションでNO_SESSION_CACHE_REFを定義し、セッション再開にwolfSSL_get1_session()を使用することをお勧めします。 |
| void | wolfSSL_flush_sessions(WOLFSSL_CTX * ctx, long tm) この関数は、期限切れのセッションをセッションキャッシュからフラッシュします。時刻tmは、時刻比較に使用されます。wolfSSLは現在セッションに静的テーブルを使用しているため、フラッシュは不要です。そのため、この関数は現在スタブにすぎません。この関数は、wolfSSLがOpenSSL互換レイヤーでコンパイルされている場合、OpenSSL互換性(SSL_flush_sessions)を提供します。 |
| int | wolfSSL_SetServerID(WOLFSSL * ssl, const unsigned char * id, int len, int newSession) この関数は、クライアントセッションをサーバーIDに関連付けます。newSessionフラグがオンの場合、既存のセッションは再利用されません。 |
| int | wolfSSL_GetSessionIndex(WOLFSSL * ssl) この関数は、WOLFSSL構造体のセッションインデックスを取得します。 |
| int | wolfSSL_GetSessionAtIndex(int idx, WOLFSSL_SESSION * session) この関数はセッションキャッシュの指定されたインデックスにあるセッションを取得し、メモリにコピーします。WOLFSSL_SESSION構造体はセッション情報を保持します。 |
| WOLFSSL_X509_CHAIN * | wolfSSL_SESSION_get_peer_chain(WOLFSSL_SESSION * session) WOLFSSL_SESSION構造体からピア証明書チェーンを返します。 |
| 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接続が行われている場合、接続はピア証明書なしで続行されます。 |
| void | wolfSSL_SetCertCbCtx(WOLFSSL * ssl, void * ctx) この関数は検証コールバック用のユーザーCTXオブジェクト情報を格納します。 |
| void | wolfSSL_CTX_SetCertCbCtx(WOLFSSL_CTX * ctx, void * userCtx) この関数は検証コールバック用のユーザーCTXオブジェクト情報を格納します。 |
| int | wolfSSL_pending(WOLFSSL * ) この関数はSSLオブジェクト内でバッファリングされ、wolfSSL_read()によって読み取り可能な利用可能なバイト数を返します。 |
| void | wolfSSL_load_error_strings(void ) この関数はOpenSSL互換性(SSL_load_error_string)のためのものであり、何も動作を行いません。 |
| int | wolfSSL_library_init(void ) この関数はwolfSSL_CTX_new()内で内部的に呼び出されます。この関数はwolfSSL_Init()のラッパーであり、wolfSSLがOpenSSL互換性レイヤーでコンパイルされた場合のOpenSSL互換性(SSL_library_init)のために存在します。wolfSSL_Init()は、より一般的に使用されるwolfSSL初期化関数です。 |
| int | wolfSSL_SetDevId(WOLFSSL * ssl, int devId) この関数はWOLFSSLセッションレベルでDevice Idを設定します。 |
| int | wolfSSL_CTX_SetDevId(WOLFSSL_CTX * ctx, int devId) この関数はWOLFSSL_CTXコンテキストレベルでDevice Idを設定します。 |
| int | wolfSSL_CTX_GetDevId(WOLFSSL_CTX * ctx, WOLFSSL * ssl) この関数はDevice Idを取得します。 |
| 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_set_session_secret_cb(WOLFSSL * ssl, SessionSecretCb cb, void * ctx) この関数は、セッションシークレットコールバック関数を設定します。SessionSecretCb型は次のシグネチャを持ちます:int (SessionSecretCb)(WOLFSSL ssl, void secret, int secretSz, void* ctx)。WOLFSSL構造体のsessionSecretCbメンバが、パラメータcbに設定されます。 |
| int | wolfSSL_save_session_cache(const char * fname) この関数は、セッションキャッシュをファイルに永続化します。追加のメモリ使用量のため、memsaveは使用しません。 |
| int | wolfSSL_restore_session_cache(const char * fname) この関数は、永続的なセッションキャッシュをファイルから復元します。追加のメモリ使用量のため、memstoreは使用しません。 |
| int | wolfSSL_memsave_session_cache(void * mem, int sz) この関数は、セッションキャッシュをメモリに永続化します。 |
| int | wolfSSL_memrestore_session_cache(const void * mem, int sz) この関数は、永続的なセッションキャッシュをメモリから復元します。 |
| int | wolfSSL_get_session_cache_memsize(void ) この関数は、セッションキャッシュの保存バッファがどのくらい大きくあるべきかを返します。 |
| int | wolfSSL_CTX_save_cert_cache(WOLFSSL_CTX * ctx, const char * fname) この関数は、証明書キャッシュをメモリからファイルに書き込みます。 |
| int | wolfSSL_CTX_restore_cert_cache(WOLFSSL_CTX * ctx, const char * fname) この関数は、証明書キャッシュをファイルから永続化します。 |
| int | wolfSSL_CTX_memsave_cert_cache(WOLFSSL_CTX * ctx, void * mem, int sz, int * used) この関数は、証明書キャッシュをメモリに永続化します。 |
| int | wolfSSL_CTX_memrestore_cert_cache(WOLFSSL_CTX * ctx, const void * mem, int sz) この関数は、証明書キャッシュをメモリから復元します。 |
| int | wolfSSL_CTX_get_cert_cache_memsize(WOLFSSL_CTX * ctx) 証明書キャッシュの保存バッファに必要なサイズを返します。 |
| int | wolfSSL_CTX_set_cipher_list(WOLFSSL_CTX * ctx, const char * list) この関数は、指定されたWOLFSSL_CTXに対する暗号スイートリストを設定します。この暗号スイートリストは、このコンテキストを使用して作成された新しいSSLセッション(WOLFSSL)のデフォルトリストになります。リスト内の暗号は、優先度の高い順から低い順に並べる必要があります。wolfSSL_CTX_set_cipher_list()を呼び出すたびに、関数が呼び出されるたびに、特定のSSLコンテキストの暗号スイートリストが提供されたリストにリセットされます。暗号スイートリストであるlistは、nullで終端されたテキスト文字列であり、コロン区切りのリストです。例えば、listの1つの値は「DHE_RSA_AES256_SHA256:DHE_RSA_AES128_SHA256:AES256_SHA256」となる可能性があります。有効な暗号値は、src/internal.cのcipher_names[]配列からの完全な名前値です(有効な暗号値の明確なリストについては、src/internal.cを確認してください)。 |
| int | wolfSSL_set_cipher_list(WOLFSSL * ssl, const char * list) この関数は、指定されたWOLFSSLオブジェクト(SSLセッション)に対する暗号スイートリストを設定します。リスト内の暗号は、優先度の高い順から低い順に並べる必要があります。wolfSSL_set_cipher_list()を呼び出すたびに、関数が呼び出されるたびに、特定のSSLセッションの暗号スイートリストが提供されたリストにリセットされます。暗号スイートリストであるlistは、nullで終端されたテキスト文字列であり、コロン区切りのリストです。例えば、listの1つの値は「DHE_RSA_AES256_SHA256:DHE_RSA_AES128_SHA256:AES256_SHA256」となる可能性があります。有効な暗号値は、src/internal.cのcipher_names[]配列からの完全な名前値です(有効な暗号値の明確なリストについては、src/internal.cを確認してください)。 |
| void | wolfSSL_dtls_set_using_nonblock(WOLFSSL * ssl, int nonblock) この関数は、WOLFSSL DTLSオブジェクトに対して、下層のUDP I/Oがノンブロッキングであることを通知します。アプリケーションがWOLFSSLオブジェクトを作成した後、それをノンブロッキングUDPソケットと共に使用する場合は、wolfSSL_dtls_set_using_nonblock()を呼び出してください。これにより、WOLFSSLオブジェクトは、EWOULDBLOCKを受け取ることがタイムアウトではなく、recvfrom呼び出しがブロックすることを意味すると認識できます。 |
| int | wolfSSL_dtls_get_using_nonblock(WOLFSSL * ssl) この関数により、アプリケーションはwolfSSLがUDPでノンブロッキングI/Oを使用しているかどうかを判定できます。wolfSSLがノンブロッキングI/Oを使用している場合、この関数は1を返し、それ以外の場合は0を返します。アプリケーションがWOLFSSLオブジェクトを作成した後、それをノンブロッキングUDPソケットと共に使用する場合は、wolfSSL_dtls_set_using_nonblock()を呼び出してください。これにより、WOLFSSLオブジェクトは、EWOULDBLOCKを受け取ることがタイムアウトではなく、recvfrom呼び出しがブロックすることを意味すると認識できます。この関数はDTLSセッションにのみ意味があります。 |
| int | wolfSSL_dtls_get_current_timeout(WOLFSSL * ssl) この関数は、WOLFSSLオブジェクトの現在のタイムアウト値を秒単位で返します。ノンブロッキングソケットを使用する場合、ユーザコード内の何かが、利用可能な受信データをいつチェックするか、およびどのくらい待機しているかを決定する必要があります。この関数が返す値は、アプリケーションがどのくらい待機すべきかを示します。 |
| int | wolfSSL_dtls13_use_quick_timeout(WOLFSSL * ssl) この関数は、アプリケーションがより短いタイムアウトを設定すべき場合にtrueを返します。ノンブロッキングソケットを使用する場合、ユーザコード内の何かが、利用可能なデータをいつチェックするか、およびどのくらい待機する必要があるかを決定する必要があります。この関数がtrueを返す場合、ライブラリはすでに通信の中断を検出していますが、他のピアからのメッセージがまだ転送中である可能性に備えて、もう少し待機したいことを意味します。このタイマーの値を微調整するのはアプリケーション次第であり、適切な値はdtls_get_current_timeout() / 4かもしれません。 |
| void | wolfSSL_dtls13_set_send_more_acks(WOLFSSL * ssl, int value) この関数は、中断を検出したときにライブラリがACKを他のピアに即座に送信すべきかどうかを設定します。ACKを即座に送信すると最小のレイテンシが保証されますが、必要以上に帯域幅を消費する可能性があります。アプリケーションが自分でタイマーを管理し、このオプションが0に設定されている場合、アプリケーションコードはwolfSSL_dtls13_use_quick_timeout()を使用して、これらの遅延ACKを送信するためにより短いタイムアウトを設定すべきかどうかを判定できます。 |
| int | wolfSSL_dtls_set_timeout_init(WOLFSSL * ssl, int ) この関数はdtlsタイムアウトを設定します。 |
| int | wolfSSL_dtls_set_timeout_max(WOLFSSL * ssl, int ) この関数は最大dtlsタイムアウトを設定します。 |
| int | wolfSSL_dtls_got_timeout(WOLFSSL * ssl) DTLSでノンブロッキングソケットを使用する場合、制御コードが送信がタイムアウトしたと判断したときに、この関数をWOLFSSLオブジェクトに対して呼び出す必要があります。この関数は、タイムアウト値の調整を含め、最後の送信を再試行するために必要なアクションを実行します。時間が経過しすぎた場合、失敗が返されます。 |
| int | wolfSSL_dtls_retransmit(WOLFSSL * ssl) DTLSでノンブロッキングソケットを使用する場合、この関数は予想されるタイムアウト値と再送信カウントを無視して、最後のハンドシェイクフライトを再送信します。これは、DTLSを使用していて、タイムアウトと再試行回数さえも管理する必要があるアプリケーションに役立ちます。 |
| int | wolfSSL_dtls(WOLFSSL * ssl) この関数は、SSLセッションがDTLSを使用するように設定されているかどうかを判定するために使用されます。 |
| int | wolfSSL_dtls_set_peer(WOLFSSL * ssl, void * peer, unsigned int peerSz) この関数は、DTLSピアpeer(sockaddr_in)をサイズpeerSzで設定します。 |
| int | wolfSSL_dtls_set_pending_peer(WOLFSSL * ssl, void * peer, unsigned int peerSz) この関数は、保留中のDTLSピアpeer(sockaddr_in)をサイズpeerSzで設定します。これにより、次のレコードの保護を正常に解除したときに通常のピアにアップグレードされる保留中のピアが設定されます。これは、ピアのアドレスが変更される可能性があるシナリオで、オフパス攻撃者がピアアドレスを変更するのを防ぐのに役立ちます。これは、新しいピアアドレスへのシームレスで安全な移行を可能にするために、Connection IDと共に使用する必要があります。 |
| int | wolfSSL_dtls_get_peer(WOLFSSL * ssl, void * peer, unsigned int * peerSz) この関数は、現在のDTLSピアのsockaddr_in(サイズpeerSz)を取得します。この関数はpeerSzを、SSLセッションに格納されている実際のDTLSピアサイズと比較します。ピアがpeerに収まる場合、ピアのsockaddr_inがpeerにコピーされ、peerSzがpeerのサイズに設定されます。 |
| int | wolfSSL_dtls_get0_peer(WOLFSSL * ssl, const void ** peer, unsigned int * peerSz) この関数は現在のDTLSピアのsockaddr_in(サイズpeerSz)を取得します。これはwolfSSL_dtls_get_peer()のゼロコピー代替です。 |
| char * | wolfSSL_ERR_error_string(unsigned long errNumber, char * data) この関数はwolfSSL_get_error()によって返されたエラーコードを、より人間が読みやすいエラー文字列に変換します。errNumberはwolfSSL_get_error()によって返されたエラーコードであり、dataはエラー文字列が配置される格納バッファです。dataの最大長はデフォルトで80文字であり、wolfssl/wolfcrypt/error.hのMAX_ERROR_SZで定義されています。 |
| void | wolfSSL_ERR_error_string_n(unsigned long e, char * buf, unsigned long len) この関数はwolfSSL_ERR_error_string()のバージョンであり、lenはbufに書き込まれる最大文字数を指定します。wolfSSL_ERR_error_string()と同様に、この関数はwolfSSL_get_error()から返されたエラーコードをより人間が読みやすいエラー文字列に変換します。人間が読みやすい文字列はbufに配置されます。 |
| int | wolfSSL_get_shutdown(const WOLFSSL * ssl) この関数はOptions構造体のcloseNotify、connReset、またはsentNotifyメンバのシャットダウン条件をチェックします。Options構造体はWOLFSSL構造体内にあります。 |
| int | wolfSSL_session_reused(WOLFSSL * ssl) この関数はoptions構造体のresumingメンバを返します。このフラグはセッションを再利用するかどうかを示します。再利用しない場合、新しいセッションを確立する必要があります。 |
| int | wolfSSL_is_init_finished(WOLFSSL * ssl) この関数は接続が確立されているかどうかをチェックします。 |
| const char * | wolfSSL_get_version(WOLFSSL * ssl) 使用されているSSLバージョンを文字列として返します。 |
| int | wolfSSL_get_current_cipher_suite(WOLFSSL * ssl) sslセッションが使用している現在の暗号スイートを返します。 |
| WOLFSSL_CIPHER * | wolfSSL_get_current_cipher(WOLFSSL * ssl) この関数はsslセッション内の現在の暗号へのポインタを返します。 |
| const char * | wolfSSL_CIPHER_get_name(const WOLFSSL_CIPHER * cipher) この関数はSSLオブジェクト内の暗号スイートを利用可能なスイートと照合し、文字列表現を返します。 |
| const char * | wolfSSL_get_cipher(WOLFSSL * ) この関数はSSLオブジェクト内の暗号スイートを利用可能なスイートと照合します。 |
| 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までを実行しているサーバに接続できます。 |
| int | wolfSSL_BIO_get_mem_data(WOLFSSL_BIO * bio, void * p) これは、内部メモリバッファの先頭にバイトポインタを設定するために使用されます。 |
| long | wolfSSL_BIO_set_fd(WOLFSSL_BIO * b, int fd, int flag) bioが使用するファイルディスクリプタを設定します。 |
| int | wolfSSL_BIO_set_close(WOLFSSL_BIO * b, long flag) クローズフラグを設定します。これは、BIOが解放される際にI/Oストリームをクローズすべきかを示すために使用されます。 |
| WOLFSSL_BIO_METHOD * | wolfSSL_BIO_s_socket(void ) これは、BIO_SOCKETタイプのWOLFSSL_BIO_METHODを取得するために使用されます。 |
| int | wolfSSL_BIO_set_write_buf_size(WOLFSSL_BIO * b, long size) これは、WOLFSSL_BIOの書き込みバッファのサイズを設定するために使用されます。書き込みバッファが以前に設定されていた場合、この関数はサイズをリセットする際にそれを解放します。これは、読み取りと書き込みのインデックスを0にリセットする点でwolfSSL_BIO_resetに似ています。 |
| int | wolfSSL_BIO_make_bio_pair(WOLFSSL_BIO * b1, WOLFSSL_BIO * b2) これは、2つのbioをペアにするために使用されます。ペアになったbioは双方向パイプのように動作し、一方への書き込みはもう一方から読み取ることができ、その逆も同様です。両方のbioが同じスレッドにあることが期待されます。この関数はスレッドセーフではありません。2つのbioのうちの1つを解放すると、両方のペアが解除されます。いずれかのbioに書き込みバッファサイズが以前に設定されていなかった場合、ペアになる前にデフォルトサイズの17000(WOLFSSL_BIO_SIZE)に設定されます。 |
| int | wolfSSL_BIO_ctrl_reset_read_request(WOLFSSL_BIO * bio) これは、読み取り要求フラグを0に戻すために使用されます。 |
| int | wolfSSL_BIO_nread0(WOLFSSL_BIO * bio, char ** buf) これは、読み取り用のバッファポインタを取得するために使用されます。wolfSSL_BIO_nreadとは異なり、内部読み取りインデックスは関数呼び出しから返される数だけ進められません。返される値を超えて読み取ると、配列の境界外を読み取る結果になる可能性があります。 |
| int | wolfSSL_BIO_nread(WOLFSSL_BIO * bio, char ** buf, int num) これは、読み取り用のバッファポインタを取得するために使用されます。内部読み取りインデックスは、関数呼び出しから返される数だけ進められ、bufは読み取るバッファの先頭を指します。読み取りバッファ内のバイト数がnumで要求された値より少ない場合、より小さい値が返されます。返される値を超えて読み取ると、配列の境界外を読み取る結果になる可能性があります。 |
| int | wolfSSL_BIO_nwrite(WOLFSSL_BIO * bio, char ** buf, int num) 関数が返す数だけのバイトを書き込むためのバッファへのポインタを取得します。返される値よりも多くのバイトを返されたポインタに書き込むと、境界外への書き込みになる可能性があります。 |
| int | wolfSSL_BIO_reset(WOLFSSL_BIO * bio) bioを初期状態にリセットします。例えば、BIO_BIOタイプの場合、これは読み取りと書き込みのインデックスをリセットします。 |
| int | wolfSSL_BIO_seek(WOLFSSL_BIO * bio, int ofs) この関数は、ファイルポインタを指定されたオフセットに調整します。これはファイルの先頭からのオフセットです。 |
| int | wolfSSL_BIO_write_filename(WOLFSSL_BIO * bio, char * name) ファイルを設定し、書き込むために使用されます。ファイル内の既存データを上書きし、bioが解放される際にファイルを閉じるよう設定されます。 |
| long | wolfSSL_BIO_set_mem_eof_return(WOLFSSL_BIO * bio, int v) ファイル終端値を設定するために使用されます。一般的な値は-1で、期待される正の値と混同しないようにします。 |
| long | wolfSSL_BIO_get_mem_ptr(WOLFSSL_BIO * bio, WOLFSSL_BUF_MEM ** m) WOLFSSL_BIOメモリポインタのgetter関数です。 |
| char * | wolfSSL_X509_NAME_oneline(WOLFSSL_X509_NAME * name, char * in, int sz) この関数はx509の名前をバッファにコピーします。 |
| WOLFSSL_X509_NAME * | wolfSSL_X509_get_issuer_name(WOLFSSL_X509 * cert) この関数は証明書の発行者名を返します。 |
| WOLFSSL_X509_NAME * | wolfSSL_X509_get_subject_name(WOLFSSL_X509 * cert) この関数はWOLFSSL_X509構造体のsubjectメンバーを返します。 |
| int | wolfSSL_X509_get_isCA(WOLFSSL_X509 * cert) WOLFSSL_X509構造体のisCaメンバーをチェックし、その値を返します。 |
| int | wolfSSL_X509_NAME_get_text_by_NID(WOLFSSL_X509_NAME * name, int nid, char * buf, int len) この関数は渡されたNID値に関連するテキストを取得します。 |
| int | wolfSSL_X509_get_signature_type(WOLFSSL_X509 * cert) この関数はWOLFSSL_X509構造体のsigOIDメンバーに格納されている値を返します。 |
| void | wolfSSL_X509_free(WOLFSSL_X509 * x509) この関数はWOLFSSL_X509構造体を解放します。 |
| int | wolfSSL_X509_get_signature(WOLFSSL_X509 * x509, unsigned char * buf, int * bufSz) X509署名を取得し、バッファに格納します。 |
| int | wolfSSL_X509_STORE_add_cert(WOLFSSL_X509_STORE * store, WOLFSSL_X509 * x509) この関数はWOLFSSL_X509_STORE構造体に証明書を追加します。 |
| WOLFSSL_STACK * | wolfSSL_X509_STORE_CTX_get_chain(WOLFSSL_X509_STORE_CTX * ctx) この関数はWOLFSSL_X509_STORE_CTX構造体のchain変数のgetter関数です。現在、chainは入力されていません。 |
| int | wolfSSL_X509_STORE_set_flags(WOLFSSL_X509_STORE * store, unsigned long flag) この関数は渡されたWOLFSSL_X509_STORE構造体の動作を変更するためのフラグを受け取ります。使用されるフラグの例としてWOLFSSL_CRL_CHECKがあります。 |
| const byte * | wolfSSL_X509_notBefore(WOLFSSL_X509 * x509) この関数は、バイト配列としてエンコードされた証明書の「not before」有効期限を返します。 |
| const byte * | wolfSSL_X509_notAfter(WOLFSSL_X509 * x509) この関数は、バイト配列としてエンコードされた証明書の「not after」有効期限を返します。 |
| 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で使用するオプション引数を設定します。 |
| void | wolfSSL_CTX_set_client_cert_cb(WOLFSSL_CTX * ctx, client_cert_cb cb) クライアント証明書と秘密鍵を選択するコールバックを設定します。 |
| void | wolfSSL_CTX_set_cert_cb(WOLFSSL_CTX * ctx, CertSetupCallback cb, void * arg) 汎用証明書セットアップコールバックを設定します。 |
| int | wolfSSL_CTX_set_tlsext_status_cb(WOLFSSL_CTX * ctx, tlsextStatusCb cb) OCSPステータス要求(OCSPステープリング)を処理するために使用されるコールバックを設定します。 |
| int | wolfSSL_CTX_get_tlsext_status_cb(WOLFSSL_CTX * ctx, tlsextStatusCb * cb) コンテキストに現在設定されているOCSPステータスコールバックを取得します。 |
| long | wolfSSL_get_tlsext_status_ocsp_resp(WOLFSSL * ssl, unsigned char ** resp) ピアに送信(ステープル)されるOCSPレスポンスを取得します。 |
| long | wolfSSL_set_tlsext_status_ocsp_resp(WOLFSSL * ssl, unsigned char * resp, int len) ピアに送信(ステープル)されるOCSPレスポンスを設定します。 |
| int | wolfSSL_set_tlsext_status_ocsp_resp_multi(WOLFSSL * ssl, unsigned char * resp, int len, word32 idx) TLSマルチ証明書チェーン用の複数のOCSPレスポンスを設定します。 |
| void | wolfSSL_CTX_set_ocsp_status_verify_cb(WOLFSSL_CTX * ctx, ocspVerifyStatusCb cb, void * cbArg) OCSPステータスレスポンスを検証するコールバックを設定します。 |
| long | wolfSSL_CTX_set_tlsext_opaque_prf_input_callback_arg(WOLFSSL_CTX * ctx, void * arg) この関数は、PRFコールバックに渡されるオプション引数を設定します。 |
| long | wolfSSL_set_options(WOLFSSL * s, long op) この関数は、ssl内のオプションマスクを設定します。有効なオプションには、SSL_OP_ALL、SSL_OP_COOKIE_EXCHANGE、SSL_OP_NO_SSLv2、SSL_OP_NO_SSLv3、SSL_OP_NO_TLSv1、SSL_OP_NO_TLSv1_1、SSL_OP_NO_TLSv1_2、SSL_OP_NO_COMPRESSIONがあります。 |
| long | wolfSSL_get_options(const WOLFSSL * ssl) この関数は、現在のオプションマスクを返します。 |
| long | wolfSSL_set_tlsext_debug_arg(WOLFSSL * ssl, void * arg) これは、渡されるデバッグ引数を設定するために使用されます。 |
| long | wolfSSL_set_tlsext_status_type(WOLFSSL * s, int type) この関数は、クライアントアプリケーションがサーバにOCSPステータスレスポンス(OCSPステープリングとも呼ばれます)を返送するよう要求する際に呼び出されます。現在、サポートされている唯一のタイプはTLSEXT_STATUSTYPE_ocspです。 |
| long | wolfSSL_get_verify_result(const WOLFSSL * ssl) これは、ピアの証明書の検証を試みた後の結果を取得するために使用されます。 |
| void | wolfSSL_ERR_print_errors_fp(XFILE fp, int err) この関数は、wolfSSL_get_error()によって返されたエラーコードを、より人間が読みやすいエラー文字列に変換し、その文字列を出力ファイルfpに出力します。errはwolfSSL_get_error()によって返されたエラーコードであり、fpはエラー文字列が配置されるファイルです。 |
| void | wolfSSL_ERR_print_errors_cb(int()(const char str, size_t len, void *u) cb, void * u) この関数は、提供されたコールバックを使用してエラーレポートを処理します。コールバック関数は、各エラー行に対して実行されます。文字列、長さ、およびユーザデータがコールバックパラメータに渡されます。 |
| void | wolfSSL_CTX_set_psk_client_callback(WOLFSSL_CTX * ctx, wc_psk_client_callback cb) この関数は、WOLFSSL_CTX構造体のclient_psk_cbメンバを設定します。 |
| void | wolfSSL_set_psk_client_callback(WOLFSSL * ssl, wc_psk_client_callback ) PSKクライアント側コールバックを設定します。 |
| const char * | wolfSSL_get_psk_identity_hint(const WOLFSSL * ) この関数は、PSKアイデンティティヒントを返します。 |
| const char * | wolfSSL_get_psk_identity(const WOLFSSL * ) この関数は、Arrays構造体のclient_identityメンバへの定数ポインタを返します。 |
| int | wolfSSL_CTX_use_psk_identity_hint(WOLFSSL_CTX * ctx, const char * hint) この関数は、hint引数をWOLFSSL_CTX構造体のserver_hintメンバに格納します。 |
| int | wolfSSL_use_psk_identity_hint(WOLFSSL * ssl, const char * hint) この関数は、hint引数をWOLFSSL構造体内のArrays構造体のserver_hintメンバに格納します。 |
| void | wolfSSL_CTX_set_psk_server_callback(WOLFSSL_CTX * ctx, wc_psk_server_callback cb) この関数は、WOLFSSL_CTX構造体にサーバ側のpskコールバックを設定します。 |
| void | wolfSSL_set_psk_server_callback(WOLFSSL * ssl, wc_psk_server_callback cb) WOLFSSL構造体のoptionsメンバを設定することにより、サーバ側のpskコールバックを設定します。 |
| int | wolfSSL_set_psk_callback_ctx(WOLFSSL * ssl, void * psk_ctx) WOLFSSL構造体のoptionsメンバにPSKユーザコンテキストを設定します。 |
| int | wolfSSL_CTX_set_psk_callback_ctx(WOLFSSL_CTX * ctx, void * psk_ctx) WOLFSSL_CTX構造体にPSKユーザコンテキストを設定します。 |
| void * | wolfSSL_get_psk_callback_ctx(WOLFSSL * ssl) WOLFSSL構造体のoptionsメンバからPSKユーザコンテキストを取得します。 |
| void * | wolfSSL_CTX_get_psk_callback_ctx(WOLFSSL_CTX * ctx) WOLFSSL_CTX構造体からPSKユーザコンテキストを取得します。 |
| int | wolfSSL_CTX_allow_anon_cipher(WOLFSSL_CTX * ) この関数は、コンパイル時にHAVE_ANONが定義されている場合、CTX構造体のhavAnonメンバを有効にします。 |
| WOLFSSL_METHOD * | wolfSSLv23_server_method(void ) wolfSSLv23_server_method()関数は、アプリケーションがサーバであり、SSL 3.0からTLS 1.3までのプロトコルバージョンで接続するクライアントをサポートすることを示すために使用されます。この関数は、wolfSSL_CTX_new()でSSL/TLSコンテキストを作成する際に使用される新しいWOLFSSL_METHOD構造体のためのメモリを割り当て、初期化します。 |
| int | wolfSSL_state(WOLFSSL * ssl) これは、WOLFSSL構造体の内部エラー状態を取得するために使用されます。 |
| WOLFSSL_X509 * | wolfSSL_get_peer_certificate(WOLFSSL * ssl) この関数は、ピアの証明書を取得します。 |
| int | wolfSSL_want_read(WOLFSSL * ) この関数は、wolfSSL_get_error()を呼び出してSSL_ERROR_WANT_READが返される場合と同様です。基礎となるエラー状態がSSL_ERROR_WANT_READの場合、この関数は1を返し、それ以外の場合は0を返します。 |
| int | wolfSSL_want_write(WOLFSSL * ) この関数は、wolfSSL_get_error()を呼び出してSSL_ERROR_WANT_WRITEが返される場合と同様です。基礎となるエラー状態がSSL_ERROR_WANT_WRITEの場合、この関数は1を返し、それ以外の場合は0を返します。 |
| int | wolfSSL_check_domain_name(WOLFSSL * ssl, const char * dn) wolfSSLはデフォルトでピア証明書の有効な日付範囲と検証済み署名をチェックします。wolfSSL_connect()またはwolfSSL_accept()の前にこの関数を呼び出すと、実行するチェックのリストにドメイン名チェックが追加されます。dnは、受信したピア証明書に対してチェックするドメイン名を保持します。 |
| int | wolfSSL_Init(void ) 使用するためにwolfSSLライブラリを初期化します。アプリケーションごとに1回、ライブラリへの他の呼び出しの前に呼び出す必要があります。 |
| int | wolfSSL_Cleanup(void ) wolfSSLライブラリをこれ以上使用しないように初期化を解除します。呼び出す必要はありませんが、ライブラリが使用したリソースを解放します。 |
| const char * | wolfSSL_lib_version(void ) この関数は現在のライブラリバージョンを返します。 |
| word32 | wolfSSL_lib_version_hex(void ) この関数は現在のライブラリバージョンを16進表記で返します。 |
| int | wolfSSL_negotiate(WOLFSSL * ssl) SSLメソッドの側面に基づいて実際の接続または受け入れを実行します。クライアント側から呼び出された場合はwolfSSL_connect()が実行され、サーバー側から呼び出された場合はwolfSSL_accept()が実行されます。 |
| 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セッションのタイムアウト値を秒単位で設定します。 |
| WOLFSSL_X509_CHAIN * | wolfSSL_get_peer_chain(WOLFSSL * ssl) ピアの証明書チェーンを取得します。 |
| int | wolfSSL_get_chain_count(WOLFSSL_X509_CHAIN * chain) ピアの証明書チェーン数を取得します。 |
| int | wolfSSL_get_chain_length(WOLFSSL_X509_CHAIN * chain, int idx) インデックス(idx)におけるピアのASN1.DER証明書の長さをバイト単位で取得します。 |
| unsigned char * | wolfSSL_get_chain_cert(WOLFSSL_X509_CHAIN * chain, int idx) インデックス(idx)におけるピアのASN1.DER証明書を取得します。 |
| WOLFSSL_X509 * | wolfSSL_get_chain_X509(WOLFSSL_X509_CHAIN * chain, int idx) この関数は証明書チェーンからインデックス(idx)にあるピアのwolfSSL_X509_certificateを取得します。 |
| int | wolfSSL_get_chain_cert_pem(WOLFSSL_X509_CHAIN * chain, int idx, unsigned char * buf, int inLen, int * outLen) インデックス(idx)におけるピアのPEM証明書を取得します。 |
| const unsigned char * | wolfSSL_get_sessionID(const WOLFSSL_SESSION * s) セッションIDを取得します。セッションIDは常に32バイト長です。 |
| int | wolfSSL_X509_get_serial_number(WOLFSSL_X509 * x509, unsigned char * in, int * inOutSz) ピアの証明書シリアル番号を取得します。シリアル番号バッファ(in)は少なくとも32バイト長であり、入力としてinOutSz引数として提供される必要があります。関数を呼び出した後、inOutSzにはinバッファに書き込まれた実際の長さ(バイト単位)が保持されます。 |
| char * | wolfSSL_X509_get_subjectCN(WOLFSSL_X509 * ) 証明書からサブジェクトのコモンネームを返します。 |
| const unsigned char * | wolfSSL_X509_get_der(WOLFSSL_X509 * x509, int * outSz) この関数は、WOLFSSL_X509構造体内のDERエンコードされた証明書を取得します。 |
| WOLFSSL_ASN1_TIME * | wolfSSL_X509_get_notAfter(WOLFSSL_X509 * ) この関数は、x509がNULLであるかどうかをチェックし、そうでない場合はx509構造体のnotAfterメンバを返します。 |
| int | wolfSSL_X509_version(WOLFSSL_X509 * ) この関数は、X509証明書のバージョンを取得します。 |
| WOLFSSL_X509 * | wolfSSL_X509_d2i_fp(WOLFSSL_X509 ** x509, FILE * file) NO_STDIO_FILESYSTEMが定義されている場合、この関数はヒープメモリを割り当て、WOLFSSL_X509構造体を初期化し、そのポインタを返します。 |
| WOLFSSL_X509 * | wolfSSL_X509_load_certificate_file(const char * fname, int format) この関数は、x509証明書をメモリにロードします。 |
| unsigned char * | wolfSSL_X509_get_device_type(WOLFSSL_X509 * x509, unsigned char * in, int * inOutSz) この関数は、x509構造体からデバイスタイプをバッファにコピーします。 |
| unsigned char * | wolfSSL_X509_get_hw_type(WOLFSSL_X509 * x509, unsigned char * in, int * inOutSz) この関数は、WOLFSSL_X509構造体のhwTypeメンバをバッファにコピーします。 |
| unsigned char * | wolfSSL_X509_get_hw_serial_number(WOLFSSL_X509 * x509, unsigned char * in, int * inOutSz) この関数は、x509オブジェクトのhwSerialNumメンバを返します。 |
| int | wolfSSL_connect_cert(WOLFSSL * ssl) この関数はクライアント側で呼び出され、ピアの証明書チェーンを取得するのに十分な長さだけサーバーとのSSL/TLSハンドシェイクを開始します。この関数が呼び出されるとき、基礎となる通信チャネルはすでに設定されています。wolfSSL_connect_cert()は、ブロッキングI/Oと非ブロッキングI/Oの両方で動作します。基礎となるI/Oが非ブロッキングの場合、wolfSSL_connect_cert()は、基礎となるI/OがwolfSSL_connect_cert()がハンドシェイクを続行するために必要な処理を満たせないときに戻ります。この場合、wolfSSL_get_error()の呼び出しはSSL_ERROR_WANT_READまたはSSL_ERROR_WANT_WRITEのいずれかを生成します。呼び出しプロセスは、基礎となるI/Oが準備できたときにwolfSSL_connect_cert()の呼び出しを繰り返す必要があり、wolfSSLは中断した場所から再開します。非ブロッキングソケットを使用する場合、何もする必要はありませんが、select()を使用して必要な条件をチェックできます。基礎となるI/OがブロッキングI/Oの場合、wolfSSL_connect_cert()はピアの証明書チェーンが受信されたときにのみ戻ります。 |
| WC_PKCS12 * | wolfSSL_d2i_PKCS12_bio(WOLFSSL_BIO * bio, WC_PKCS12 ** pkcs12) wolfSSL_d2i_PKCS12_bio(d2i_PKCS12_bio)は、WOLFSSL_BIOからWC_PKCS12構造体へPKCS12情報をコピーします。情報は、構造体内でコンテンツ情報のリストとして分割され、オプションのMAC情報を保持する構造体も含まれます。情報がWC_PKCS12構造体内でチャンク(ただし復号されていない)に分割された後、呼び出すことによって解析および復号できます。 |
| WC_PKCS12 * | wolfSSL_i2d_PKCS12_bio(WOLFSSL_BIO * bio, WC_PKCS12 * pkcs12) wolfSSL_i2d_PKCS12_bio(i2d_PKCS12_bio)は、WC_PKCS12構造体からWOLFSSL_BIOへ証明書情報をコピーします。 |
| int | wolfSSL_PKCS12_parse(WC_PKCS12 * pkcs12, const char * psw, WOLFSSL_EVP_PKEY pkey, WOLFSSL_X509 cert, WOLF_STACK_OF(WOLFSSL_X509) ** ca) PKCS12は、configureコマンドに–enable_opensslextraを追加することで有効にできます。復号にトリプルDESとRC4を使用できるため、opensslextraを有効にする際にこれらの機能も有効にすることを推奨します(–enable_des3 –enable_arc4)。wolfSSLは現在RC2をサポートしていないため、RC2での復号は現在利用できません。これは、OpenSSLコマンドラインで.p12ファイルを作成する際に使用されるデフォルトの暗号化スキームで顕著になる可能性があります。wolfSSL_PKCS12_parse(PKCS12_parse)。この関数が最初に行うことは、存在する場合にMACが正しいかどうかを確認することです。MACが失敗した場合、関数は返され、保存されているコンテンツ情報の復号を試みません。この関数は、各コンテンツ情報を解析してバッグタイプを探し、バッグタイプが既知の場合、必要に応じて復号され、構築中の証明書リストまたは見つかった鍵として保存されます。すべてのバッグを解析した後、見つかった鍵は証明書リストと比較され、一致するペアが見つかります。この一致するペアは、鍵と証明書として返されます。オプションで、見つかった証明書リストはSTACK_OFの証明書として返されます。現時点では、CRL、Secret、またはSafeContentsバッグはスキップされ、解析されません。これらまたは他の「不明な」バッグがスキップされているかどうかは、デバッグ出力を表示することで確認できます。フレンドリ名などの追加属性は、PKCS12ファイルを解析する際にスキップされます。 |
| int | wolfSSL_SetTmpDH(WOLFSSL * ssl, const unsigned char * p, int pSz, const unsigned char * g, int gSz) サーバDiffie-Hellmanエフェメラルパラメータの設定。この関数は、サーバがDHEを使用する暗号スイートをネゴシエートする場合に使用されるグループパラメータを設定します。 |
| int | wolfSSL_SetTmpDH_buffer(WOLFSSL * ssl, const unsigned char * b, long sz, int format) この関数は、Diffie-HellmanパラメータのラッパーであるwolfSSL_SetTMpDH_buffer_wrapperを呼び出します。 |
| int | wolfSSL_SetTmpDH_file(WOLFSSL * ssl, const char * f, int format) この関数は、wolfSSL_SetTmpDH_file_wrapperを呼び出してサーバDiffie-Hellmanパラメータを設定します。 |
| int | wolfSSL_CTX_SetTmpDH(WOLFSSL_CTX * ctx, const unsigned char * p, int pSz, const unsigned char * g, int gSz) サーバCTX Diffie-Hellmanのパラメータを設定します。 |
| int | wolfSSL_CTX_SetTmpDH_buffer(WOLFSSL_CTX * ctx, const unsigned char * b, long sz, int format) wolfSSL_SetTmpDH_buffer_wrapperを呼び出すラッパー関数です。 |
| int | wolfSSL_CTX_SetTmpDH_file(WOLFSSL_CTX * ctx, const char * f, int format) この関数は、wolfSSL_SetTmpDH_file_wrapperを呼び出してサーバDiffie-Hellmanパラメータを設定します。 |
| int | wolfSSL_CTX_SetMinDhKey_Sz(WOLFSSL_CTX * ctx, word16 ) この関数は、WOLFSSL_CTX構造体のminDhKeySzメンバにアクセスして、Diffie_Hellman鍵サイズの最小サイズ(ビット単位)を設定します。 |
| int | wolfSSL_SetMinDhKey_Sz(WOLFSSL * ssl, word16 keySz_bits) WOLFSSL構造体内のDiffie_Hellman鍵の最小サイズ(ビット単位)を設定します。 |
| int | wolfSSL_CTX_SetMaxDhKey_Sz(WOLFSSL_CTX * ctx, word16 keySz_bits) この関数は、WOLFSSL_CTX構造体のmaxDhKeySzメンバにアクセスして、Diffie_Hellman鍵サイズの最大サイズ(ビット単位)を設定します。 |
| int | wolfSSL_SetMaxDhKey_Sz(WOLFSSL * ssl, word16 keySz_bits) WOLFSSL構造体内のDiffie_Hellman鍵の最大サイズ(ビット単位)を設定します。 |
| int | wolfSSL_GetDhKey_Sz(WOLFSSL * ) options構造体のメンバであるdhKeySzの値(ビット単位)を返します。この値は、Diffie-Hellman鍵サイズをバイト単位で表します。 |
| int | wolfSSL_CTX_SetMinRsaKey_Sz(WOLFSSL_CTX * ctx, short keySz) WOLFSSL_CTX構造体とWOLFSSL_CERT_MANAGER構造体の両方で最小RSA鍵サイズを設定します。 |
| int | wolfSSL_SetMinRsaKey_Sz(WOLFSSL * ssl, short keySz) WOLFSSL構造体にあるRSAの最小許容鍵サイズをビット単位で設定します。 |
| int | wolfSSL_CTX_SetMinEccKey_Sz(WOLFSSL_CTX * ssl, short keySz) WOLF_CTX構造体とWOLFSSL_CERT_MANAGER構造体でECC鍵の最小サイズをビット単位で設定します。 |
| int | wolfSSL_SetMinEccKey_Sz(WOLFSSL * ssl, short keySz) options構造体のminEccKeySzメンバの値を設定します。options構造体はWOLFSSL構造体のメンバであり、sslパラメータを通じてアクセスされます。 |
| int | wolfSSL_make_eap_keys(WOLFSSL * ssl, void * key, unsigned int len, const char * label) この関数は、マスターシークレットから鍵材料を導出するためにEAP_TLSとEAP-TTLSによって使用されます。 |
| int | wolfSSL_writev(WOLFSSL * ssl, const struct iovec * iov, int iovcnt) writevのセマンティクスをシミュレートしますが、SSL_write()の動作とフロント追加が小さい場合があるため、実際には一度にブロック単位では行いません。writevを使用するソフトウェアへの移植を容易にします。 |
| int | wolfSSL_CTX_UnloadCAs(WOLFSSL_CTX * ) この関数は、CA署名者リストをアンロードし、署名者テーブル全体を解放します。 |
| int | wolfSSL_CTX_UnloadIntermediateCerts(WOLFSSL_CTX * ctx) この関数は、CA署名者リストに追加された中間証明書をアンロードし、解放します。 |
| int | wolfSSL_CTX_Unload_trust_peers(WOLFSSL_CTX * ) この関数は以前にロードされたすべての信頼されたピア証明書をアンロードするために使用されます。この機能は、マクロWOLFSSL_TRUST_PEER_CERTを定義することで有効になります。 |
| int | wolfSSL_CTX_trust_peer_buffer(WOLFSSL_CTX * ctx, const unsigned char * in, long sz, int format) この関数は、TLS/SSLハンドシェイクを実行する際にピアを検証するために使用する証明書をロードします。ハンドシェイク中に送信されるピア証明書は、利用可能な場合はSKIDと署名を使用して比較されます。これら2つが一致しない場合は、ロードされたCAが使用されます。ファイルではなくバッファからの入力である点を除いて、wolfSSL_CTX_trust_peer_certと同じ機能です。この機能は、マクロWOLFSSL_TRUST_PEER_CERTを定義することで有効になります。適切な使用方法については例を参照してください。 |
| int | wolfSSL_CTX_load_verify_buffer(WOLFSSL_CTX * ctx, const unsigned char * in, long sz, int format) この関数はCA証明書バッファをWOLFSSLコンテキストにロードします。バッファ非対応版と同様に動作しますが、ファイルの代わりにバッファを入力として呼び出せる点が異なります。バッファはサイズszのin引数によって提供されます。formatはバッファの形式タイプを指定します。SSL_FILETYPE_ASN1またはSSL_FILETYPE_PEMです。形式がPEMであれば、1つのバッファに複数のCA証明書をロードできます。適切な使用方法については例を参照してください。 |
| int | wolfSSL_CTX_load_verify_buffer_ex(WOLFSSL_CTX * ctx, const unsigned char * in, long sz, int format, int userChain, word32 flags) この関数はCA証明書バッファをWOLFSSLコンテキストにロードします。バッファ非対応版と同様に動作しますが、ファイルの代わりにバッファを入力として呼び出せる点が異なります。バッファはサイズszのin引数によって提供されます。formatはバッファの形式タイプを指定します。SSL_FILETYPE_ASN1またはSSL_FILETYPE_PEMです。形式がPEMであれば、1つのバッファに複数のCA証明書をロードできます。_ex版はPR 2413で追加され、userChainとflagsの追加引数をサポートします。 |
| int | wolfSSL_CTX_load_verify_chain_buffer_format(WOLFSSL_CTX * ctx, const unsigned char * in, long sz, int format) この関数はCA証明書チェーンバッファをWOLFSSLコンテキストにロードします。バッファ非対応版と同様に動作しますが、ファイルの代わりにバッファを入力として呼び出せる点が異なります。バッファはサイズszのin引数によって提供されます。formatはバッファの形式タイプを指定します。SSL_FILETYPE_ASN1またはSSL_FILETYPE_PEMです。形式がPEMであれば、1つのバッファに複数のCA証明書をロードできます。適切な使用方法については例を参照してください。 |
| int | wolfSSL_CTX_use_certificate_buffer(WOLFSSL_CTX * ctx, const unsigned char * in, long sz, int format) この関数は証明書バッファをWOLFSSLコンテキストにロードします。バッファ非対応版と同様に動作しますが、ファイルの代わりにバッファを入力として呼び出せる点が異なります。バッファはサイズszのin引数によって提供されます。formatはバッファの形式タイプを指定します。SSL_FILETYPE_ASN1またはSSL_FILETYPE_PEMです。適切な使用方法については例を参照してください。 |
| int | wolfSSL_CTX_use_PrivateKey_buffer(WOLFSSL_CTX * ctx, const unsigned char * in, long sz, int format) この関数は秘密鍵バッファをSSLコンテキストにロードします。バッファ非対応版と同様に動作しますが、ファイルの代わりにバッファを入力として呼び出せる点が異なります。バッファはサイズszのin引数によって提供されます。formatはバッファの形式タイプを指定します。SSL_FILETYPE_ASN1またはSSL_FILETYPE_PEMです。適切な使用方法については例を参照してください。 |
| int | wolfSSL_CTX_use_certificate_chain_buffer(WOLFSSL_CTX * ctx, const unsigned char * in, long sz) この関数は証明書チェーンバッファをWOLFSSLコンテキストにロードします。バッファ非対応版と同様に動作しますが、ファイルの代わりにバッファを入力として呼び出せる点が異なります。バッファはサイズszのin引数によって提供されます。バッファはPEM形式で、サブジェクトの証明書から始まり、ルート証明書で終わる必要があります。適切な使用方法については例を参照してください。 |
| int | wolfSSL_use_certificate_buffer(WOLFSSL * ssl, const unsigned char * in, long sz, int format) この関数は、証明書バッファをWOLFSSLオブジェクトにロードします。バッファなしバージョンと同様に動作しますが、ファイルの代わりにバッファを入力として呼び出すことができる点が異なります。バッファはサイズszのin引数によって提供されます。formatはバッファのフォーマットタイプを指定します。SSL_FILETYPE_ASN1またはSSL_FILETYPE_PEMです。適切な使用方法については例を参照してください。 |
| int | wolfSSL_use_PrivateKey_buffer(WOLFSSL * ssl, const unsigned char * in, long sz, int format) この関数は、秘密鍵バッファをWOLFSSLオブジェクトにロードします。バッファなしバージョンと同様に動作しますが、ファイルの代わりにバッファを入力として呼び出すことができる点が異なります。バッファはサイズszのin引数によって提供されます。formatはバッファのフォーマットタイプを指定します。SSL_FILETYPE_ASN1またはSSL_FILETYPE_PEMです。適切な使用方法については例を参照してください。 |
| int | wolfSSL_use_certificate_chain_buffer(WOLFSSL * ssl, const unsigned char * in, long sz) この関数は、証明書チェーンバッファをWOLFSSLオブジェクトにロードします。バッファなしバージョンと同様に動作しますが、ファイルの代わりにバッファを入力として呼び出すことができる点が異なります。バッファはサイズszのin引数によって提供されます。バッファはPEMフォーマットである必要があり、サブジェクトの証明書から始まり、ルート証明書で終わる必要があります。適切な使用方法については例を参照してください。 |
| int | wolfSSL_UnloadCertsKeys(WOLFSSL * ) この関数は、SSLが所有する証明書または鍵をアンロードします。 |
| int | wolfSSL_CTX_set_group_messages(WOLFSSL_CTX * ctx) この関数は、可能な場合にハンドシェイクメッセージのグループ化をオンにします。 |
| int | wolfSSL_set_group_messages(WOLFSSL * ssl) この関数は、可能な場合にハンドシェイクメッセージのグループ化をオンにします。 |
| void | wolfSSL_SetFuzzerCb(WOLFSSL * ssl, CallbackFuzzer cbf, void * fCtx) この関数はファザーコールバックを設定します。 |
| int | wolfSSL_DTLS_SetCookieSecret(WOLFSSL * ssl, const unsigned char * secret, unsigned int secretSz) この関数は新しいdtls cookieシークレットを設定します。 |
| WC_RNG * | wolfSSL_GetRNG(WOLFSSL * ssl) この関数は乱数を取得します。 |
| int | wolfSSL_CTX_SetMinVersion(WOLFSSL_CTX * ctx, int version) この関数は、許可される最小ダウングレードバージョンを設定します。ダウングレードを許可する接続(wolfSSLv23_client_methodまたはwolfSSLv23_server_method)を使用する場合にのみ適用されます。 |
| int | wolfSSL_SetMinVersion(WOLFSSL * ssl, int version) この関数は、許可される最小ダウングレードバージョンを設定します。ダウングレードを許可する接続(wolfSSLv23_client_methodまたはwolfSSLv23_server_method)を使用する場合にのみ適用されます。 |
| int | wolfSSL_GetObjectSize(void ) この関数はWOLFSSLオブジェクトのサイズを返し、ビルドオプションと設定に依存します。wolfSSLをビルドする際にSHOW_SIZESが定義されている場合、この関数はWOLFSSLオブジェクト内の個々のオブジェクト(Suites、Ciphersなど)のサイズもstdoutに出力します。 |
| int | wolfSSL_GetOutputSize(WOLFSSL * ssl, int inSz) 平文入力のレコード層サイズを返します。これは、アプリケーションが指定された平文入力サイズに対して、トランスポート層を介して送信されるバイト数を知りたい場合に役立ちます。この関数は、SSL/TLSハンドシェイクが完了した後に呼び出す必要があります。 |
| int | wolfSSL_GetMaxOutputSize(WOLFSSL * ) 平文データの最大レコード層サイズを返します。これは、プロトコル標準で指定されている最大SSL/TLSレコードサイズ、またはTLS最大フラグメント長拡張によって設定された最大TLSフラグメントサイズのいずれかに対応します。この関数は、アプリケーションがwolfSSL_GetOutputSize()を呼び出してINPUT_SIZE_Eエラーを受け取った場合に役立ちます。この関数は、SSL/TLSハンドシェイクが完了した後に呼び出す必要があります。 |
| int | wolfSSL_SetVersion(WOLFSSL * ssl, int version) この関数は、versionで指定されたバージョンを使用して、指定されたSSLセッション(WOLFSSLオブジェクト)のSSL/TLSプロトコルバージョンを設定します。これにより、SSLセッション(ssl)のプロトコル設定が上書きされます。これは元々SSLコンテキスト(wolfSSL_CTX_new())のメソッドタイプによって定義および設定されたものです。 |
| void | wolfSSL_CTX_SetMacEncryptCb(WOLFSSL_CTX * ctx, CallbackMacEncrypti cb) 呼び出し元がアトミックユーザレコード処理Mac/暗号化コールバックを設定できるようにします。コールバックは、成功時には0、エラー時には<0を返す必要があります。sslとctxポインタは、ユーザの利便性のために利用可能です。macOutは、macの結果を格納する出力バッファです。macInはmac入力バッファであり、macInSzはバッファのサイズを示します。macContentとmacVerifyは、wolfSSL_SetTlsHmacInner()に必要であり、そのまま渡す必要があります。encOutは、暗号化の結果を格納する出力バッファです。encInは暗号化する入力バッファであり、encSzは入力のサイズです。コールバックの例は、wolfssl/test.hのmyMacEncryptCb()にあります。 |
| void | wolfSSL_SetMacEncryptCtx(WOLFSSL * ssl, void * ctx) 呼び出し元がアトミックユーザレコード処理Mac/暗号化コールバックコンテキストをctxに設定できるようにします。 |
| void * | wolfSSL_GetMacEncryptCtx(WOLFSSL * ssl) 呼び出し元が、wolfSSL_SetMacEncryptCtx()で以前に保存されたアトミックユーザレコード処理Mac/暗号化コールバックコンテキストを取得できるようにします。 |
| void | wolfSSL_CTX_SetDecryptVerifyCb(WOLFSSL_CTX * ctx, CallbackDecryptVerify cb) 呼び出し元がアトミックユーザレコード処理復号/検証コールバックを設定できるようにします。コールバックは、成功時には0、エラー時には<0を返す必要があります。sslとctxポインタは、ユーザの利便性のために利用可能です。decOutは、復号の結果を格納する出力バッファです。decInは暗号化された入力バッファであり、decInSzはバッファのサイズを示します。contentとverifyは、wolfSSL_SetTlsHmacInner()に必要であり、そのまま渡す必要があります。padSzは、パディングの合計値を設定する必要がある出力変数です。つまり、macサイズに加えて、パディングとパディングバイトです。コールバックの例は、wolfssl/test.hのmyDecryptVerifyCb()にあります。 |
| void | wolfSSL_SetDecryptVerifyCtx(WOLFSSL * ssl, void * ctx) 呼び出し元がアトミックユーザレコード処理復号/検証コールバックコンテキストをctxに設定できるようにします。 |
| void * | wolfSSL_GetDecryptVerifyCtx(WOLFSSL * ssl) 呼び出し元が、wolfSSL_SetDecryptVerifyCtx()で以前に保存されたアトミックユーザレコード処理復号/検証コールバックコンテキストを取得できるようにします。 |
| const unsigned char * | wolfSSL_GetMacSecret(WOLFSSL * ssl, int verify) ハンドシェイクプロセスからHmac/Macシークレットの取得を可能にします。verifyパラメータは、これがピアメッセージの検証用であるかどうかを指定します。 |
| const unsigned char * | wolfSSL_GetClientWriteKey(WOLFSSL * ) ハンドシェイクプロセスからクライアント書き込み鍵の取得を可能にします。 |
| const unsigned char * | wolfSSL_GetClientWriteIV(WOLFSSL * ) ハンドシェイクプロセスからクライアント書き込みIV(初期化ベクトル)の取得を可能にします。 |
| const unsigned char * | wolfSSL_GetServerWriteKey(WOLFSSL * ) ハンドシェイクプロセスからサーバ書き込み鍵の取得を可能にします。 |
| const unsigned char * | wolfSSL_GetServerWriteIV(WOLFSSL * ) ハンドシェイクプロセスからサーバ書き込みIV(初期化ベクトル)の取得を可能にします。 |
| int | wolfSSL_GetKeySize(WOLFSSL * ) ハンドシェイクプロセスから鍵サイズの取得を可能にします。 |
| int | wolfSSL_GetIVSize(WOLFSSL * ) WOLFSSL構造体に保持されているspecs構造体のiv_sizeメンバを返します。 |
| int | wolfSSL_GetSide(WOLFSSL * ) このWOLFSSL接続のサイド(側)の取得を可能にします。 |
| int | wolfSSL_IsTLSv1_1(WOLFSSL * ) 呼び出し元が、ネゴシエートされたプロトコルバージョンが少なくともTLSバージョン1.1以上であるかどうかを判断できるようにします。 |
| int | wolfSSL_GetBulkCipher(WOLFSSL * ) 呼び出し元がハンドシェイクからネゴシエートされたバルク暗号アルゴリズムを判定できるようにします。 |
| int | wolfSSL_GetCipherBlockSize(WOLFSSL * ) 呼び出し元がハンドシェイクからネゴシエートされた暗号ブロックサイズを判定できるようにします。 |
| int | wolfSSL_GetAeadMacSize(WOLFSSL * ) 呼び出し元がハンドシェイクからネゴシエートされたaead macサイズを判定できるようにします。暗号タイプWOLFSSL_AEAD_TYPE用。 |
| int | wolfSSL_GetHmacSize(WOLFSSL * ) 呼び出し元がハンドシェイクからネゴシエートされた(h)macサイズを判定できるようにします。WOLFSSL_AEAD_TYPE以外の暗号タイプ用。 |
| int | wolfSSL_GetHmacType(WOLFSSL * ) 呼び出し元がハンドシェイクからネゴシエートされた(h)macタイプを判定できるようにします。WOLFSSL_AEAD_TYPE以外の暗号タイプ用。 |
| int | wolfSSL_GetCipherType(WOLFSSL * ) 呼び出し元がハンドシェイクからネゴシエートされた暗号タイプを判定できるようにします。 |
| int | wolfSSL_SetTlsHmacInner(WOLFSSL * ssl, byte * inner, word32 sz, int content, int verify) 呼び出し元がメッセージの送受信のためにHmac Innerベクトルを設定できるようにします。結果はinnerに書き込まれ、少なくともwolfSSL_GetHmacSize()バイトである必要があります。メッセージのサイズはszで指定され、contentはメッセージのタイプ、verifyはこれがピアメッセージの検証であるかを指定します。WOLFSSL_AEAD_TYPEを除く暗号タイプで有効です。 |
| void | wolfSSL_CTX_SetEccSignCb(WOLFSSL_CTX * ctx, CallbackEccSign cb) 呼び出し元がECC署名用の公開鍵コールバックを設定できるようにします。コールバックは成功時に0、エラー時に0未満を返す必要があります。sslとctxポインタはユーザの便宜のために利用可能です。inは署名する入力バッファで、inSzは入力の長さを示します。outは署名の結果を格納する出力バッファです。outSzは入出力変数で、呼び出し時の出力バッファのサイズを指定し、返す前に署名の実際のサイズをそこに格納する必要があります。keyDerはASN1形式のECC秘密鍵で、keySzは鍵の長さをバイト単位で表します。コールバックの例はwolfssl/test.h myEccSign()にあります。 |
| void | wolfSSL_SetEccSignCtx(WOLFSSL * ssl, void * ctx) 呼び出し元が公開鍵ECC署名コールバックコンテキストをctxに設定できるようにします。 |
| void * | wolfSSL_GetEccSignCtx(WOLFSSL * ssl) 呼び出し元が以前にwolfSSL_SetEccSignCtx()で格納された公開鍵ECC署名コールバックコンテキストを取得できるようにします。 |
| void | wolfSSL_CTX_SetEccSignCtx(WOLFSSL_CTX * ctx, void * userCtx) 呼び出し元が公開鍵ECC署名コールバックコンテキストをctxに設定できるようにします。 |
| void * | wolfSSL_CTX_GetEccSignCtx(WOLFSSL_CTX * ctx) 呼び出し元が以前にwolfSSL_SetEccSignCtx()で格納された公開鍵ECC署名コールバックコンテキストを取得できるようにします。 |
| void | wolfSSL_CTX_SetEccVerifyCb(WOLFSSL_CTX * ctx, CallbackEccVerify cb) 呼び出し元がECC検証用の公開鍵コールバックを設定できるようにします。コールバックは成功時に0、エラー時に0未満を返す必要があります。sslとctxポインタはユーザの便宜のために利用可能です。sigは検証する署名で、sigSzは署名の長さを示します。hashはメッセージのダイジェストを含む入力バッファで、hashSzはハッシュの長さをバイト単位で示します。resultは検証の結果を格納する出力変数で、成功時は1、失敗時は0です。keyDerはASN1形式のECC秘密鍵で、keySzは鍵の長さをバイト単位で表します。コールバックの例はwolfssl/test.h myEccVerify()にあります。 |
| void | wolfSSL_SetEccVerifyCtx(WOLFSSL * ssl, void * ctx) 呼び出し元が公開鍵ECC検証コールバックコンテキストをctxに設定できるようにします。 |
| void * | wolfSSL_GetEccVerifyCtx(WOLFSSL * ssl) 呼び出し元が以前にwolfSSL_SetEccVerifyCtx()で格納された公開鍵ECC検証コールバックコンテキストを取得できるようにします。 |
| void | wolfSSL_CTX_SetRsaSignCb(WOLFSSL_CTX * ctx, CallbackRsaSign cb) 呼び出し元がRSA署名用の公開鍵コールバックを設定できるようにします。コールバックは成功時に0、エラー時に0未満を返す必要があります。sslとctxポインタはユーザの便宜のために利用可能です。inは署名する入力バッファで、inSzは入力の長さを示します。outは署名の結果を格納する出力バッファです。outSzは入出力変数で、呼び出し時の出力バッファのサイズを指定し、返す前に署名の実際のサイズをそこに格納する必要があります。keyDerはASN1形式のRSA秘密鍵で、keySzは鍵の長さをバイト単位で表します。コールバックの例はwolfssl/test.h myRsaSign()にあります。 |
| void | wolfSSL_SetRsaSignCtx(WOLFSSL * ssl, void * ctx) 呼び出し元が公開鍵RSA署名コールバックコンテキストをctxに設定できるようにします。 |
| void * | wolfSSL_GetRsaSignCtx(WOLFSSL * ssl) 呼び出し元が以前にwolfSSL_SetRsaSignCtx()で格納された公開鍵RSA署名コールバックコンテキストを取得できるようにします。 |
| void | wolfSSL_CTX_SetRsaVerifyCb(WOLFSSL_CTX * ctx, CallbackRsaVerify cb) 呼び出し元がRSA検証用の公開鍵コールバックを設定できるようにします。コールバックは成功時に平文のバイト数、エラー時に0未満を返す必要があります。sslとctxポインタはユーザの便宜のために利用可能です。sigは検証する署名で、sigSzは署名の長さを示します。outは復号プロセスとパディングの後、検証バッファの先頭に設定する必要があります。keyDerはASN1形式のRSA公開鍵で、keySzは鍵の長さをバイト単位で表します。コールバックの例はwolfssl/test.h myRsaVerify()にあります。 |
| void | wolfSSL_SetRsaVerifyCtx(WOLFSSL * ssl, void * ctx) 呼び出し元が公開鍵RSA検証コールバックコンテキストをctxに設定できるようにします。 |
| void * | wolfSSL_GetRsaVerifyCtx(WOLFSSL * ssl) 呼び出し元がwolfSSL_SetRsaVerifyCtx()で以前に保存された公開鍵RSA検証コールバックコンテキストを取得できるようにします。 |
| void | wolfSSL_CTX_SetRsaEncCb(WOLFSSL_CTX * ctx, CallbackRsaEnc cb) 呼び出し元がRSA公開暗号化のための公開鍵コールバックを設定できるようにします。コールバックは成功の場合は0を、エラーの場合は0未満を返す必要があります。sslとctxポインタはユーザーの利便性のために利用可能です。inは暗号化する入力バッファで、inSzは入力の長さを示します。outは暗号化の結果を格納する出力バッファです。outSzは入出力変数で、呼び出し時に出力バッファのサイズを指定し、戻る前に暗号化の実際のサイズを格納する必要があります。keyDerはASN1形式のRSA公開鍵で、keySzはバイト単位の鍵の長さです。コールバックの例はwolfssl/test.hのmyRsaEnc()にあります。 |
| void | wolfSSL_SetRsaEncCtx(WOLFSSL * ssl, void * ctx) 呼び出し元が公開鍵RSA公開暗号化コールバックコンテキストをctxに設定できるようにします。 |
| void * | wolfSSL_GetRsaEncCtx(WOLFSSL * ssl) 呼び出し元がwolfSSL_SetRsaEncCtx()で以前に保存された公開鍵RSA公開暗号化コールバックコンテキストを取得できるようにします。 |
| void | wolfSSL_CTX_SetRsaDecCb(WOLFSSL_CTX * ctx, CallbackRsaDec cb) 呼び出し元がRSA秘密復号のための公開鍵コールバックを設定できるようにします。コールバックは成功の場合は平文のバイト数を、エラーの場合は0未満を返す必要があります。sslとctxポインタはユーザーの利便性のために利用可能です。inは復号する入力バッファで、inSzは入力の長さを示します。outは復号処理とパディングの後、復号バッファの先頭に設定する必要があります。keyDerはASN1形式のRSA秘密鍵で、keySzはバイト単位の鍵の長さです。コールバックの例はwolfssl/test.hのmyRsaDec()にあります。 |
| void | wolfSSL_SetRsaDecCtx(WOLFSSL * ssl, void * ctx) 呼び出し元が公開鍵RSA秘密復号コールバックコンテキストをctxに設定できるようにします。 |
| void * | wolfSSL_GetRsaDecCtx(WOLFSSL * ssl) 呼び出し元がwolfSSL_SetRsaDecCtx()で以前に保存された公開鍵RSA秘密復号コールバックコンテキストを取得できるようにします。 |
| void | wolfSSL_CTX_SetCACb(WOLFSSL_CTX * ctx, CallbackCACache cb) この関数は、新しいCA証明書がwolfSSLにロードされたときに呼び出されるコールバックをSSLコンテキスト(WOLFSSL_CTX)に登録します。コールバックにはDERエンコードされた証明書を含むバッファが渡されます。 |
| WOLFSSL_CERT_MANAGER * | wolfSSL_CertManagerNew_ex(void * heap) 新しい証明書マネージャーコンテキストを割り当て、初期化します。このコンテキストはSSLの必要性とは独立して使用できます。証明書のロード、証明書の検証、失効ステータスのチェックに使用できます。 |
| WOLFSSL_CERT_MANAGER * | wolfSSL_CertManagerNew(void ) 新しい証明書マネージャーコンテキストを割り当て、初期化します。このコンテキストはSSLの必要性とは独立して使用できます。証明書のロード、証明書の検証、失効ステータスのチェックに使用できます。 |
| void | wolfSSL_CertManagerFree(WOLFSSL_CERT_MANAGER * ) 証明書マネージャーコンテキストに関連するすべてのリソースを解放します。証明書マネージャーを使用する必要がなくなったときにこれを呼び出します。 |
| int | wolfSSL_CertManagerLoadCA(WOLFSSL_CERT_MANAGER * cm, const char * f, const char * d) マネージャーコンテキストへのCA証明書ロードの場所を指定します。PEM証明書CAfileには複数の信頼されたCA証明書を含めることができます。CApathがNULLでない場合、PEM形式のCA証明書を含むディレクトリを指定します。 |
| int | wolfSSL_CertManagerLoadCABuffer(WOLFSSL_CERT_MANAGER * cm, const unsigned char * in, long sz, int format) wolfSSL_CTX_load_verify_bufferを呼び出し、関数に渡されたcmの情報を失わないように一時的なcmを使用してその結果を返すことで、CAバッファをロードします。 |
| int | wolfSSL_CertManagerUnloadCAs(WOLFSSL_CERT_MANAGER * cm) この関数はCA署名者リストをアンロードします。 |
| int | wolfSSL_CertManagerUnloadIntermediateCerts(WOLFSSL_CERT_MANAGER * cm) この関数はCA署名者リストに追加された中間証明書をアンロードします。 |
| int | wolfSSL_CertManagerUnload_trust_peers(WOLFSSL_CERT_MANAGER * cm) この関数は、Trusted Peerリンクリストを解放し、トラステッドピアリストのロックを解除します。 |
| int | wolfSSL_CertManagerVerify(WOLFSSL_CERT_MANAGER * cm, const char * f, int format) Certificate Managerコンテキストで検証する証明書を指定します。フォーマットはSSL_FILETYPE_PEMまたはSSL_FILETYPE_ASN1を指定できます。 |
| int | wolfSSL_CertManagerVerifyBuffer(WOLFSSL_CERT_MANAGER * cm, const unsigned char * buff, long sz, int format) Certificate Managerコンテキストで検証する証明書バッファを指定します。フォーマットはSSL_FILETYPE_PEMまたはSSL_FILETYPE_ASN1を指定できます。 |
| void | wolfSSL_CertManagerSetVerify(WOLFSSL_CERT_MANAGER * cm, VerifyCallback verify_callback) この関数は、Certificate Manager内にverifyCallback関数を設定します。存在する場合、ロードされた各証明書に対して呼び出されます。検証エラーがある場合、verify callbackを使用してエラーをオーバーライドできます。 |
| int | wolfSSL_CertManagerCheckCRL(WOLFSSL_CERT_MANAGER * cm, unsigned char * der, int sz) オプションが有効な場合、CRLをチェックし、証明書をCRLリストと比較します。 |
| int | wolfSSL_CertManagerEnableCRL(WOLFSSL_CERT_MANAGER * cm, int options) Certificate Managerで証明書を検証する際に、Certificate Revocation Listチェックをオンにします。デフォルトでは、CRLチェックはオフです。optionsには、リーフ証明書のみ(デフォルト)ではなくチェーン内の各証明書に対してCRLチェックを実行するWOLFSSL_CRL_CHECKALLが含まれます。 |
| int | wolfSSL_CertManagerDisableCRL(WOLFSSL_CERT_MANAGER * ) Certificate Managerで証明書を検証する際に、Certificate Revocation Listチェックをオフにします。デフォルトでは、CRLチェックはオフです。この関数を使用して、以前にCRLチェックを有効にしていたこのCertificate Managerコンテキストに対して、CRLチェックを一時的または永続的に無効にできます。 |
| int | wolfSSL_CertManagerLoadCRL(WOLFSSL_CERT_MANAGER * cm, const char * path, int type, int monitor) エラーチェックを行い、LoadCRL()に渡して失効チェックのためにCRLに証明書をロードします。更新されたCRLをロードするには、まずwolfSSL_CertManagerFreeCRLを呼び出してから、新しいCRLをロードします。 |
| int | wolfSSL_CertManagerLoadCRLBuffer(WOLFSSL_CERT_MANAGER * cm, const unsigned char * buff, long sz, int type) この関数は、BufferLoadCRLを呼び出してCRLファイルをロードします。 |
| int | wolfSSL_CertManagerSetCRL_Cb(WOLFSSL_CERT_MANAGER * cm, CbMissingCRL cb) この関数は、CRL Certificate Managerコールバックを設定します。HAVE_CRLが定義されており、一致するCRLレコードが見つからない場合、cbMissingCRLが呼び出されます(wolfSSL_CertManagerSetCRL_Cbで設定)。これにより、外部からCRLを取得してロードできます。 |
| int | wolfSSL_CertManagerSetCRLUpdate_Cb(WOLFSSL_CERT_MANAGER * cm, CbUpdateCRL cb) この関数は、CRL更新コールバックを設定します。HAVE_CRLとHAVE_CRL_UPDATE_CBが定義されており、CRLが追加されるときに同じ発行者でより低いCRL番号を持つエントリが存在する場合、既存のエントリと、それを置き換える新しいエントリの詳細と共にCbUpdateCRLが呼び出されます。 |
| int | wolfSSL_CertManagerGetCRLInfo(WOLFSSL_CERT_MANAGER * cm, CrlInfo * info, const byte * buff, long sz, int type) この関数は、エンコードされたCRLバッファから解析されたCRL情報を含む構造体を生成します。 |
| int | wolfSSL_CertManagerCheckOCSP(WOLFSSL_CERT_MANAGER * cm, unsigned char * der, int sz) この関数は、WOLFSSL_CERT_MANAGERのメンバであるocspEnabledを有効にして、OCSPチェックオプションが有効になっていることを示します。 |
| int | wolfSSL_CertManagerEnableOCSP(WOLFSSL_CERT_MANAGER * cm, int options) OCSPがオフになっている場合にオンにし、設定オプションでコンパイルされている場合に有効にします。 |
| int | wolfSSL_CertManagerDisableOCSP(WOLFSSL_CERT_MANAGER * ) OCSP証明書失効を無効にします。 |
| int | wolfSSL_CertManagerSetOCSPOverrideURL(WOLFSSL_CERT_MANAGER * cm, const char * url) この関数は、URLをWOLFSSL_CERT_MANAGER構造体のocspOverrideURLメンバにコピーします。 |
| int | wolfSSL_CertManagerSetOCSP_Cb(WOLFSSL_CERT_MANAGER * cm, CbOCSPIO ioCb, CbOCSPRespFree respFreeCb, void * ioCbCtx) この関数は、WOLFSSL_CERT_MANAGER内のOCSPコールバックを設定します。 |
| int | wolfSSL_CertManagerEnableOCSPStapling(WOLFSSL_CERT_MANAGER * cm) この関数は、OCSPステープリングがオンになっていない場合にオンにし、オプションを設定します。 |
| int | wolfSSL_EnableCRL(WOLFSSL * ssl, int options) CRL証明書失効を有効にします。 |
| int | wolfSSL_DisableCRL(WOLFSSL * ssl) CRL証明書失効を無効にします。 |
| int | wolfSSL_LoadCRL(WOLFSSL * ssl, const char * path, int type, int monitor) 失効チェックのための証明書を読み込むためにLoadCRLを最終的に呼び出すラッパー関数です。 |
| int | wolfSSL_SetCRL_Cb(WOLFSSL * ssl, CbMissingCRL cb) WOLFSSL_CERT_MANAGER構造体内のCRLコールバックを設定します。 |
| int | wolfSSL_EnableOCSP(WOLFSSL * ssl, int options) この関数は、OCSP証明書検証を有効にします。optionsの値は、以下のオプションの1つ以上をOR演算することで形成されます。 WOLFSSL_OCSP_URL_OVERRIDE _ 証明書内のURLの代わりにオーバーライドURLを使用します。オーバーライドURLはwolfSSL_CTX_SetOCSP_OverrideURL()関数を使用して指定されます。 WOLFSSL_OCSP_CHECKALL - すべてのOCSPチェックをオンに設定します。 WOLFSSL_OCSP_NO_NONCE - OCSP要求作成時のnonceオプションを設定します。 |
| int | wolfSSL_DisableOCSP(WOLFSSL * ) OCSP証明書失効オプションを無効にします。 |
| int | wolfSSL_SetOCSP_OverrideURL(WOLFSSL * ssl, const char * url) この関数は、WOLFSSL_CERT_MANAGER構造体のocspOverrideURLメンバを設定します。 |
| int | wolfSSL_SetOCSP_Cb(WOLFSSL * ssl, CbOCSPIO ioCb, CbOCSPRespFree respFreeCb, void * ioCbCtx) この関数は、WOLFSSL_CERT_MANAGER構造体にOCSPコールバックを設定します。 |
| int | wolfSSL_CTX_EnableCRL(WOLFSSL_CTX * ctx, int options) CTXを通じてCRL証明書検証を有効にします。 |
| int | wolfSSL_CTX_DisableCRL(WOLFSSL_CTX * ctx) この関数は、CTX構造体でCRL検証を無効にします。 |
| int | wolfSSL_CTX_LoadCRL(WOLFSSL_CTX * ctx, const char * path, int type, int monitor) この関数は、wolfSSL_CertManagerLoadCRL()を通じてCRLをWOLFSSL_CTX構造体にロードします。 |
| int | wolfSSL_CTX_SetCRL_Cb(WOLFSSL_CTX * ctx, CbMissingCRL cb) この関数は、wolfSSL_CertManagerSetCRL_Cbを呼び出すことにより、コールバック引数をWOLFSSL_CERT_MANAGER構造体のcbMissingCRLメンバに設定します。 |
| int | wolfSSL_CTX_EnableOCSP(WOLFSSL_CTX * ctx, int options) この関数は、wolfSSLのOCSP機能の動作を設定するオプションを設定します。optionsの値は、以下のオプションの1つ以上をOR演算することで形成されます。 WOLFSSL_OCSP_URL_OVERRIDE _ 証明書内のURLの代わりにオーバーライドURLを使用します。オーバーライドURLはwolfSSL_CTX_SetOCSP_OverrideURL()関数を使用して指定されます。 WOLFSSL_OCSP_CHECKALL - すべてのOCSPチェックをオンに設定します。 WOLFSSL_OCSP_NO_NONCE - OCSP要求作成時のnonceオプションを設定します。 |
| int | wolfSSL_CTX_DisableOCSP(WOLFSSL_CTX * ) この関数は、WOLFSSL_CERT_MANAGER構造体のocspEnabledメンバに影響を与えることにより、OCSP証明書失効チェックを無効にします。 |
| int | wolfSSL_CTX_SetOCSP_OverrideURL(WOLFSSL_CTX * ctx, const char * url) この関数は、OCSPが使用するURLを手動で設定します。デフォルトでは、wolfSSL_CTX_EnableOCSPを使用してWOLFSSL_OCSP_URL_OVERRIDEオプションが設定されていない限り、OCSPは個々の証明書で見つかったURLを使用します。 |
| int | wolfSSL_CTX_SetOCSP_Cb(WOLFSSL_CTX * ctx, CbOCSPIO ioCb, CbOCSPRespFree respFreeCb, void * ioCbCtx) WOLFSSL_CTX構造体にOCSPのコールバックを設定します。 |
| int | wolfSSL_CTX_EnableOCSPStapling(WOLFSSL_CTX * ) この関数は、wolfSSL_CertManagerEnableOCSPStapling()を呼び出してOCSPステープリングを有効にします。 |
| void | wolfSSL_KeepArrays(WOLFSSL * ) 通常、SSLハンドシェイクの終了時に、wolfSSLは一時配列を解放します。ハンドシェイクが始まる前にこの関数を呼び出すと、wolfSSLは一時配列を解放しなくなります。一時配列はwolfSSL_get_keys()やPSKヒントなどに必要になる場合があります。ユーザーが一時配列を使い終わったら、wolfSSL_FreeArrays()を呼び出してリソースを即座に解放するか、あるいは関連するSSLオブジェクトが解放されるときにリソースが解放されます。 |
| void | wolfSSL_FreeArrays(WOLFSSL * ) 通常、SSLハンドシェイクの終了時に、wolfSSLは一時配列を解放します。ハンドシェイクの前にwolfSSL_KeepArrays()が呼び出されていた場合、wolfSSLは一時配列を解放しません。この関数は一時配列を明示的に解放し、ユーザーが一時配列を使い終わり、SSLオブジェクトが解放されるのを待たずにこれらのリソースを解放したい場合に呼び出す必要があります。 |
| int | wolfSSL_UseSNI(WOLFSSL * ssl, unsigned char type, const void * data, unsigned short size) この関数は、'ssl'パラメータで渡されたSSLオブジェクトでServer Name Indicationの使用を有効にします。つまり、wolfSSLクライアントはClientHelloでSNI拡張を送信し、wolfSSLサーバーはSNI不一致の場合、ClientHello + SNIに対してServerHello + 空のSNIまたはfatalアラートで応答します。 |
| int | wolfSSL_CTX_UseSNI(WOLFSSL_CTX * ctx, unsigned char type, const void * data, unsigned short size) この関数は、'ctx'パラメータで渡されたSSLコンテキストから作成されたSSLオブジェクトに対してServer Name Indicationの使用を有効にします。つまり、wolfSSLクライアントはClientHelloでSNI拡張を送信し、wolfSSLサーバーはSNI不一致の場合、ClientHello + SNIに対してServerHello + 空のSNIまたはfatalアラートで応答します。 |
| void | wolfSSL_SNI_SetOptions(WOLFSSL * ssl, unsigned char type, unsigned char options) この関数は、'ssl'パラメータで渡されたSSLオブジェクトでServer Name Indicationを使用するSSLセッションの動作を設定するために、サーバー側で呼び出されます。オプションについては以下で説明します。 |
| void | wolfSSL_CTX_SNI_SetOptions(WOLFSSL_CTX * ctx, unsigned char type, unsigned char options) この関数は、'ctx'パラメータで渡されたSSLコンテキストから作成されたSSLオブジェクトに対してServer Name Indicationを使用するSSLセッションの動作を設定するために、サーバー側で呼び出されます。オプションについては以下で説明します。 |
| int | wolfSSL_SNI_GetFromBuffer(const unsigned char * clientHello, unsigned int helloSz, unsigned char type, unsigned char * sni, unsigned int * inOutSz) この関数は、クライアントがセッションを開始するために送信したClient Helloメッセージからクライアントによって提供されたServer Name Indicationを取得するために、サーバー側で呼び出されます。SNIを取得するためにコンテキストやセッションのセットアップは必要ありません。 |
| unsigned char | wolfSSL_SNI_Status(WOLFSSL * ssl, unsigned char type) この関数はSNIオブジェクトのステータスを取得します。 |
| unsigned short | wolfSSL_SNI_GetRequest(WOLFSSL * ssl, unsigned char type, void ** data) この関数は、SSLセッションでクライアントによって提供されたServer Name Indicationを取得するために、サーバー側で呼び出されます。 |
| int | wolfSSL_UseALPN(WOLFSSL * ssl, char * protocol_name_list, unsigned int protocol_name_listSz, unsigned char options) wolfSSLセッションでALPNの使用をセットアップします。 |
| int | wolfSSL_ALPN_GetProtocol(WOLFSSL * ssl, char ** protocol_name, unsigned short * size) この関数は、サーバーによって設定されたプロトコル名を取得します。 |
| int | wolfSSL_ALPN_GetPeerProtocol(WOLFSSL * ssl, char ** list, unsigned short * listSz) この関数は、SSLオブジェクトからalpn_client_listデータをバッファにコピーします。 |
| int | wolfSSL_UseMaxFragment(WOLFSSL * ssl, unsigned char mfl) この関数は、'ssl'パラメータで渡されたSSLオブジェクトでMaximum Fragment Lengthの使用を有効にするために、クライアント側で呼び出されます。これは、wolfSSLクライアントによってClientHelloでMaximum Fragment Length拡張が送信されることを意味します。 |
| int | wolfSSL_CTX_UseMaxFragment(WOLFSSL_CTX * ctx, unsigned char mfl) この関数は、'ctx'パラメータで渡されたSSLコンテキストから作成されたSSLオブジェクトに対してMaximum Fragment Lengthの使用を有効にするために、クライアント側で呼び出されます。これは、wolfSSLクライアントによってClientHelloでMaximum Fragment Length拡張が送信されることを意味します。 |
| int | wolfSSL_UseTruncatedHMAC(WOLFSSL * ssl) この関数は、'ssl'パラメータで渡されたSSLオブジェクトでTruncated HMACの使用を有効にするために、クライアント側で呼び出されます。これは、wolfSSLクライアントによってClientHelloでTruncated HMAC拡張が送信されることを意味します。 |
| int | wolfSSL_CTX_UseTruncatedHMAC(WOLFSSL_CTX * ctx) この関数は、'ctx'パラメータで渡されたSSLコンテキストから作成されたSSLオブジェクトに対してTruncated HMACの使用を有効にするために、クライアント側で呼び出されます。これは、wolfSSLクライアントによってClientHelloでTruncated HMAC拡張が送信されることを意味します。 |
| int | wolfSSL_UseOCSPStapling(WOLFSSL * ssl, unsigned char status_type, unsigned char options) ステープリングはCAに連絡する必要性を排除します。ステープリングは、OCSPで提示される証明書失効チェックのコストを削減します。 |
| int | wolfSSL_CTX_UseOCSPStapling(WOLFSSL_CTX * ctx, unsigned char status_type, unsigned char options) この関数は、ハンドシェイク中に証明書ステータスを要求します。 |
| int | wolfSSL_UseOCSPStaplingV2(WOLFSSL * ssl, unsigned char status_type, unsigned char options) この関数は、OCSPのステータスタイプとオプションを設定します。 |
| int | wolfSSL_CTX_UseOCSPStaplingV2(WOLFSSL_CTX * ctx, unsigned char status_type, unsigned char options) OCSPステープリング用の証明書ステータス要求を作成して初期化します。 |
| int | wolfSSL_UseSupportedCurve(WOLFSSL * ssl, word16 name) この関数は、'ssl'パラメータで渡されたSSLオブジェクトでSupported Elliptic Curves拡張の使用を有効にするために、クライアント側で呼び出されます。これは、wolfSSLクライアントによってClientHelloで有効化されたサポートされる曲線が送信されることを意味します。この関数は、複数の曲線を有効にするために複数回呼び出すことができます。 |
| int | wolfSSL_CTX_UseSupportedCurve(WOLFSSL_CTX * ctx, word16 name) この関数は、ctxパラメータで渡されたSSLコンテキストから作成されたSSLオブジェクトに対して、サポートされる楕円曲線拡張の使用を有効にするためにクライアント側で呼び出されます。これは、有効にされたサポートされる曲線がwolfSSLクライアントによってClientHelloで送信されることを意味します。この関数は、複数の曲線を有効にするために複数回呼び出すことができます。 |
| int | wolfSSL_UseSecureRenegotiation(WOLFSSL * ssl) この関数は、提供されたWOLFSSL構造体に対して安全な再ネゴシエーションを強制します。これは推奨されません。 |
| int | wolfSSL_Rehandshake(WOLFSSL * ssl) この関数は安全な再ネゴシエーションハンドシェイクを実行します。wolfSSLはこの機能を推奨していないため、これはユーザが強制するものです。 |
| int | wolfSSL_UseSessionTicket(WOLFSSL * ssl) 提供されたWOLFSSL構造体にセッションチケットを使用するよう強制します。定数HAVE_SESSION_TICKETが定義されており、定数NO_WOLFSSL_CLIENTが定義されていない必要があります。 |
| int | wolfSSL_CTX_UseSessionTicket(WOLFSSL_CTX * ctx) この関数は、wolfSSLコンテキストにセッションチケットを使用するよう設定します。 |
| int | wolfSSL_get_SessionTicket(WOLFSSL * ssl, unsigned char * buf, word32 * bufSz) この関数は、Session構造体のticketメンバをバッファにコピーします。bufがNULLでbufSzが非NULLの場合、bufSzはチケット長に設定されます。 |
| int | wolfSSL_set_SessionTicket(WOLFSSL * ssl, const unsigned char * buf, word32 bufSz) この関数は、WOLFSSL構造体内のWOLFSSL_SESSION構造体のticketメンバを設定します。関数に渡されたバッファはメモリにコピーされます。 |
| int | wolfSSL_set_SessionTicket_cb(WOLFSSL * ssl, CallbackSessionTicket cb, void * ctx) この関数は、セッションチケットコールバックを設定します。CallbackSessionTicket型は、次のシグネチャを持つ関数ポインタです: int (CallbackSessionTicket)(WOLFSSL, const unsigned char, int, void) |
| int | wolfSSL_send_SessionTicket(WOLFSSL * ssl) この関数は、TLS v1.3ハンドシェイクが確立された後、クライアントにセッションチケットを送信します。 |
| int | wolfSSL_CTX_set_TicketEncCb(WOLFSSL_CTX * ctx, SessionTicketEncCb ) この関数は、RFC 5077で規定されているセッションチケットをサポートするサーバのセッションチケット鍵暗号化コールバック関数を設定します。 |
| int | wolfSSL_CTX_set_TicketHint(WOLFSSL_CTX * ctx, int ) この関数は、クライアントに中継されるセッションチケットヒントを設定します。サーバ側での使用。 |
| int | wolfSSL_CTX_set_TicketEncCtx(WOLFSSL_CTX * ctx, void * ) この関数は、コールバック用のセッションチケット暗号化ユーザコンテキストを設定します。サーバ側で使用します。 |
| void * | wolfSSL_CTX_get_TicketEncCtx(WOLFSSL_CTX * ctx) この関数は、コールバック用のセッションチケット暗号化ユーザコンテキストを取得します。サーバ側で使用します。 |
| int | wolfSSL_SetHsDoneCb(WOLFSSL * ssl, HandShakeDoneCb cb, void * user_ctx) この関数は、ハンドシェイク完了コールバックを設定します。WOLFSSL構造体のhsDoneCbとhsDoneCtxメンバがこの関数で設定されます。 |
| int | wolfSSL_PrintSessionStats(void ) この関数は、セッションの統計情報を出力します。 |
| int | wolfSSL_get_session_stats(unsigned int * active, unsigned int * total, unsigned int * peak, unsigned int * maxSessions) この関数は、セッションの統計情報を取得します。 |
| int | wolfSSL_MakeTlsMasterSecret(unsigned char * ms, word32 msLen, const unsigned char * pms, word32 pmsLen, const unsigned char * cr, const unsigned char * sr, int tls1_2, int hash_type) この関数は、crとsrの値をコピーし、wc_PRF(疑似乱数関数)に渡し、その値を返します。 |
| int | wolfSSL_DeriveTlsKeys(unsigned char * key_data, word32 keyLen, const unsigned char * ms, word32 msLen, const unsigned char * sr, const unsigned char * cr, int tls1_2, int hash_type) TLS鍵を導出するための外部向けラッパー。 |
| int | wolfSSL_connect_ex(WOLFSSL * ssl, HandShakeCallBack hsCb, TimeoutCallBack toCb, WOLFSSL_TIMEVAL timeout) wolfSSL_connect_ex()は、HandShakeコールバックを設定できる拡張です。これは、デバッガが利用できず、スニッフィングが実用的でない場合に、組み込みシステムのデバッグサポートに役立ちます。HandShakeコールバックは、ハンドシェイクエラーが発生したかどうかに関わらず呼び出されます。SSLパケットの最大数が既知であるため、動的メモリは使用されません。パケット名はpacketNames[]を通じてアクセスできます。接続拡張はまた、タイムアウト値と共にTimeoutコールバックを設定できます。これは、ユーザがTCPスタックのタイムアウトを待ちたくない場合に便利です。この拡張は、いずれか、両方、またはどちらのコールバックもなしで呼び出すことができます。 |
| int | wolfSSL_accept_ex(WOLFSSL * ssl, HandShakeCallBacki hsCb, TimeoutCallBack toCb, WOLFSSL_TIMEVAL timeout) wolfSSL_accept_ex()は、HandShakeコールバックを設定できる拡張です。これは、デバッガが利用できず、スニッフィングが実用的でない場合に、組み込みシステムのデバッグサポートに役立ちます。HandShakeコールバックは、ハンドシェイクエラーが発生したかどうかに関わらず呼び出されます。SSLパケットの最大数が既知であるため、動的メモリは使用されません。パケット名はpacketNames[]を通じてアクセスできます。接続拡張はまた、タイムアウト値と共にTimeoutコールバックを設定できます。これは、ユーザがTCPスタックのタイムアウトを待ちたくない場合に便利です。この拡張は、いずれか、両方、またはどちらのコールバックもなしで呼び出すことができます。 |
| long | wolfSSL_BIO_set_fp(WOLFSSL_BIO * bio, XFILE fp, int c) これは、BIOの内部ファイルポインタを設定するために使用されます。 |
| long | wolfSSL_BIO_get_fp(WOLFSSL_BIO * bio, XFILE * fp) これは、BIOの内部ファイルポインタを取得するために使用されます。 |
| int | wolfSSL_check_private_key(const WOLFSSL * ssl) この関数は、秘密鍵が使用されている証明書と一致していることを確認します。 |
| int | wolfSSL_X509_get_ext_by_NID(const WOLFSSL_X509 * x509, int nid, int lastPos) この関数は、渡されたNID値に一致する拡張インデックスを検索して返します。 |
| void * | wolfSSL_X509_get_ext_d2i(const WOLFSSL_X509 * x509, int nid, int * c, int * idx) この関数は渡されたNID値に一致する拡張を検索して返します。 |
| int | wolfSSL_X509_digest(const WOLFSSL_X509 * x509, const WOLFSSL_EVP_MD * digest, unsigned char * buf, unsigned int * len) この関数はDER証明書のハッシュを返します。 |
| int | wolfSSL_use_certificate(WOLFSSL * ssl, WOLFSSL_X509 * x509) ハンドシェイク中に使用するWOLFSSL構造体の証明書を設定するために使用されます。 |
| int | wolfSSL_use_certificate_ASN1(WOLFSSL * ssl, unsigned char * der, int derSz) ハンドシェイク中に使用するWOLFSSL構造体の証明書を設定するために使用されます。DER形式のバッファが必要です。 |
| int | wolfSSL_use_PrivateKey(WOLFSSL * ssl, WOLFSSL_EVP_PKEY * pkey) WOLFSSL構造体の秘密鍵を設定するために使用されます。 |
| int | wolfSSL_use_PrivateKey_ASN1(int pri, WOLFSSL * ssl, unsigned char * der, long derSz) WOLFSSL構造体の秘密鍵を設定するために使用されます。DER形式の鍵バッファが必要です。 |
| int | wolfSSL_use_RSAPrivateKey_ASN1(WOLFSSL * ssl, unsigned char * der, long derSz) WOLFSSL構造体の秘密鍵を設定するために使用されます。DER形式のRSA鍵バッファが必要です。 |
| WOLFSSL_DH * | wolfSSL_DSA_dup_DH(const WOLFSSL_DSA * r) この関数はdsaのパラメータを新しく作成されたWOLFSSL_DH構造体に複製します。 |
| 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 * | wolfSSL_d2i_X509_bio(WOLFSSL_BIO * bio, WOLFSSL_X509 ** x509) この関数はbioからDERバッファを取得し、それをWOLFSSL_X509構造体に変換します。 |
| WOLFSSL_X509_STORE * | wolfSSL_CTX_get_cert_store(WOLFSSL_CTX * ctx) ctxのWOLFSSL_X509_STORE構造体のgetter関数です。 |
| size_t | wolfSSL_BIO_ctrl_pending(WOLFSSL_BIO * b) 読み取り保留中のバイト数を取得します。BIOタイプがBIO_BIOの場合、ペアから読み取るバイト数です。BIOがSSLオブジェクトを含む場合、SSLオブジェクトからの保留中のデータです(wolfSSL_pending(ssl))。BIO_MEMORYタイプの場合、メモリバッファのサイズを返します。 |
| 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関数です。 |
| WOLFSSL_X509 * | wolfSSL_PEM_read_bio_X509_AUX(WOLFSSL_BIO * bp, WOLFSSL_X509 ** x, wc_pem_password_cb * cb, void * u) この関数はwolfSSL_PEM_read_bio_X509と同じように動作します。AUXは、信頼された/拒否されたユースケースや人間が読みやすいフレンドリ名などの追加情報を含むことを意味します。 |
| long | wolfSSL_CTX_set_tmp_dh(WOLFSSL_CTX * ctx, WOLFSSL_DH * dh) WOLFSSL_CTX構造体のdhメンバをDiffie-Hellmanパラメータで初期化します。 |
| WOLFSSL_DSA * | wolfSSL_PEM_read_bio_DSAparams(WOLFSSL_BIO * bp, WOLFSSL_DSA ** x, wc_pem_password_cb * cb, void * u) この関数は、bio内のPEMバッファからDSAパラメータを取得します。 |
| unsigned long | wolfSSL_ERR_peek_last_error(void ) この関数は、WOLFSSL_ERRORから発生した最後のエラーの絶対値を返します。 |
| WOLF_STACK_OF(WOLFSSL_X509 ) const この関数は、ピアの証明書チェーンを取得します。 |
|
| long | wolfSSL_CTX_clear_options(WOLFSSL_CTX * ctx, long opt) この関数は、WOLFSSL_CTXオブジェクトのオプションビットをリセットします。 |
| int | wolfSSL_set_jobject(WOLFSSL * ssl, void * objPtr) この関数は、WOLFSSL構造体のjObjectRefメンバを設定します。 |
| void * | wolfSSL_get_jobject(WOLFSSL * ssl) この関数は、WOLFSSL構造体のjObjectRefメンバを返します。 |
| 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内に関連するコールバックコンテキスト値を設定します。値はコールバック引数に渡されます。 |
| char * | wolfSSL_X509_get_next_altname(WOLFSSL_X509 * ) この関数は、ピア証明書から次の代替名(もしあれば)を返します。 |
| WOLFSSL_ASN1_TIME * | wolfSSL_X509_get_notBefore(WOLFSSL_X509 * ) この関数は、x509がNULLかどうかを確認し、NULLでない場合はx509構造体のnotBeforeメンバを返します。 |
| int | wolfSSL_connect(WOLFSSL * ssl) この関数はクライアント側で呼び出され、サーバとのSSL/TLSハンドシェイクを開始します。この関数が呼び出されるとき、基礎となる通信チャネルはすでに設定されています。wolfSSL_connect()は、ブロッキングI/Oと非ブロッキングI/Oの両方で動作します。基礎となるI/Oが非ブロッキングの場合、wolfSSL_connect()は、基礎となるI/OがwolfSSL_connect()がハンドシェイクを続行するために必要とするものを満たすことができないときに返されます。この場合、wolfSSL_get_error()の呼び出しはSSL_ERROR_WANT_READまたはSSL_ERROR_WANT_WRITEを返します。呼び出しプロセスは、基礎となるI/Oの準備ができたときにwolfSSL_connect()の呼び出しを繰り返す必要があり、wolfSSLは中断したところから再開します。非ブロッキングソケットを使用する場合、何もする必要はありませんが、select()を使用して必要な条件を確認できます。基礎となるI/Oがブロッキングの場合、wolfSSL_connect()はハンドシェイクが完了するかエラーが発生するまで返されません。wolfSSLは、OpenSSLとは異なるアプローチで証明書検証を行います。クライアントのデフォルトポリシーはサーバを検証することです。つまり、サーバを検証するためのCAを読み込まない場合、接続エラー、検証不可(_155)が発生します。サーバの検証が失敗してもSSL_connectが成功し、セキュリティを低下させるOpenSSLの動作を模倣したい場合は、SSL_new()を呼び出す前にSSL_CTX_set_verify(ctx, SSL_VERIFY_NONE, 0);を呼び出すことでこれを実現できます。ただし、推奨されません。 |
| 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_update_keys(WOLFSSL * ssl) この関数は、鍵のロールオーバーを強制するために、TLS v1.3クライアントまたはサーバwolfSSLで呼び出されます。KeyUpdateメッセージがピアに送信され、暗号化用の新しい鍵が計算されます。ピアはKeyUpdateメッセージを送り返し、その後新しい復号鍵が計算されます。この関数は、ハンドシェイクが完了した後にのみ呼び出すことができます。 |
| int | wolfSSL_key_update_response(WOLFSSL * ssl, int * required) この関数は、鍵のロールオーバーが進行中かどうかを判断するために、TLS v1.3クライアントまたはサーバwolfSSLで呼び出されます。wolfSSL_update_keys()が呼び出されると、KeyUpdateメッセージが送信され、暗号化鍵が更新されます。復号鍵は、応答を受信したときに更新されます。 |
| 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_request_certificate(WOLFSSL * ssl) この関数は、TLS v1.3クライアントからクライアント証明書を要求します。これは、Webサーバがクライアント認証を必要とするページと必要としないページの両方を提供している場合に便利です。接続上で最大256回の要求を送信できます。 |
| int | wolfSSL_CTX_set1_groups_list(WOLFSSL_CTX * ctx, char * list) この関数は、wolfSSLコンテキストで優先順位に従って許可する楕円曲線グループのリストを設定します。リストはnull終端のテキスト文字列で、コロン区切りのリストです。TLS v1.3接続で使用する鍵交換楕円曲線パラメータを設定するには、この関数を呼び出してください。 |
| int | wolfSSL_set1_groups_list(WOLFSSL * ssl, char * list) この関数は、wolfSSLで優先順位に従って許可する楕円曲線グループのリストを設定します。リストはnull終端のテキスト文字列で、コロン区切りのリストです。TLS v1.3接続で使用する鍵交換楕円曲線パラメータを設定するには、この関数を呼び出してください。 |
| int | wolfSSL_preferred_group(WOLFSSL * ssl) この関数は、TLS v1.3ハンドシェイクでクライアントが優先的に使用したい鍵交換グループを返します。ハンドシェイク完了後にこの関数を呼び出して、サーバが優先するグループを判定し、この情報を将来の接続で使用して鍵交換用の鍵ペアを事前生成できます。 |
| int | wolfSSL_CTX_set_groups(WOLFSSL_CTX * ctx, int * groups, int count) この関数は、wolfSSLコンテキストで優先順位に従って許可する楕円曲線グループのリストを設定します。リストはグループ識別子の配列で、識別子の数はcountで指定されます。TLS v1.3接続で使用する鍵交換楕円曲線パラメータを設定するには、この関数を呼び出してください。 |
| int | wolfSSL_set_groups(WOLFSSL * ssl, int * groups, int count) この関数は、wolfSSLで許可する楕円曲線グループのリストを設定します。リストはグループ識別子の配列で、識別子の数はcountで指定されます。TLS v1.3接続で使用する鍵交換楕円曲線パラメータを設定するには、この関数を呼び出してください。 |
| int | wolfSSL_connect_TLSv13(WOLFSSL * ) この関数はクライアント側で呼び出され、サーバとのTLS v1.3ハンドシェイクを開始します。この関数が呼び出されるとき、基礎となる通信チャネルはすでに設定されています。wolfSSL_connect()はブロッキングI/Oと非ブロッキングI/Oの両方で動作します。基礎となるI/Oが非ブロッキングの場合、基礎となるI/OがwolfSSL_connect()がハンドシェイクを続行するために必要なものを満たせない場合、wolfSSL_connect()は返されます。この場合、wolfSSL_get_error()を呼び出すとSSL_ERROR_WANT_READまたはSSL_ERROR_WANT_WRITEのいずれかが返されます。呼び出し側プロセスは、基礎となるI/Oの準備ができたときにwolfSSL_connect()の呼び出しを繰り返す必要があり、wolfSSLは中断したところから再開します。非ブロッキングソケットを使用する場合、何もする必要はありませんが、select()を使用して必要な条件を確認できます。基礎となるI/OがブロッキングI/Oの場合、wolfSSL_connect()はハンドシェイクが完了するかエラーが発生するまで返されません。wolfSSLは証明書検証にOpenSSLとは異なるアプローチを取ります。クライアントのデフォルトポリシーはサーバを検証することです。つまり、サーバを検証するためのCAをロードしない場合、接続エラー「検証できません(_155)」が発生します。サーバの検証が失敗してもSSL_connectが成功するというOpenSSLの動作を模倣し、セキュリティを低下させたい場合は、SSL_new()を呼び出す前にSSL_CTX_set_verify(ctx, SSL_VERIFY_NONE, 0)を呼び出すことでこれを行うことができます。ただし、これは推奨されません。 |
| wolfSSL_accept_TLSv13(WOLFSSL * ssl) この関数はサーバ側で呼び出され、SSL/TLSクライアントがSSL/TLSハンドシェイクを開始するのを待ちます。この関数が呼び出されるとき、基礎となる通信チャネルはすでに設定されています。wolfSSL_accept()はブロッキングI/Oと非ブロッキングI/Oの両方で動作します。基礎となるI/Oが非ブロッキングの場合、基礎となるI/OがwolfSSL_accept()がハンドシェイクを続行するために必要なものを満たせない場合、wolfSSL_accept()は返されます。この場合、wolfSSL_get_error()を呼び出すとSSL_ERROR_WANT_READまたはSSL_ERROR_WANT_WRITEのいずれかが返されます。呼び出し側プロセスは、データが読み取り可能になったときにwolfSSL_acceptの呼び出しを繰り返す必要があり、wolfSSLは中断したところから再開します。非ブロッキングソケットを使用する場合、何もする必要はありませんが、select()を使用して必要な条件を確認できます。基礎となるI/OがブロッキングI/Oの場合、wolfSSL_accept()はハンドシェイクが完了するかエラーが発生するまで返されません。TLS v1.3接続を期待する場合にこの関数を呼び出してください。ただし、古いバージョンのClientHelloメッセージもサポートされています。 |
|
| 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クライアントまたはサーバが交換する意思のある早期データの最大量を設定します。リプレイ攻撃を軽減するために処理する早期データの量を制限するには、この関数を呼び出してください。早期データは、セッションチケットが送信された接続の鍵から派生した鍵によって保護されるため、セッションチケットが再開に使用されるたびに同じになります。この値は再開用のセッションチケットに含まれます。サーバの値がゼロの場合、セッションチケットを使用してクライアントが早期データを送信しないことを示します。クライアントの値がゼロの場合、クライアントが早期データを送信しないことを示します。早期データのバイト数は、アプリケーションで実用的に可能な限り低く保つことをお勧めします。 |
| int | wolfSSL_write_early_data(WOLFSSL * ssl, const void * data, int sz, int * outSz) この関数は再開時にサーバーにアーリーデータを書き込みます。サーバーに接続してハンドシェイクでデータを送信するには、wolfSSL_connect()またはwolfSSL_connect_TLSv13()の代わりにこの関数を呼び出します。この関数はクライアントでのみ使用されます。 |
| int | wolfSSL_read_early_data(WOLFSSL * ssl, void * data, int sz, int * outSz) この関数は再開時にクライアントからのアーリーデータを読み取ります。クライアントを受け入れ、ハンドシェイクでアーリーデータを読み取るには、wolfSSL_accept()またはwolfSSL_accept_TLSv13()の代わりにこの関数を呼び出します。wolfSSL_is_init_finished()がtrueを返すまで関数を呼び出す必要があります。アーリーデータは複数のメッセージでクライアントから送信される場合があります。アーリーデータがない場合、ハンドシェイクは通常通り処理されます。この関数はサーバーでのみ使用されます。 |
| int | wolfSSL_inject(WOLFSSL * ssl, const void * data, int sz) この関数はWOLFSSLオブジェクトにデータを注入するために呼び出されます。これは、データを単一の場所から読み取り、複数の接続に分割する必要がある場合に便利です。呼び出し元はwolfSSL_read()を呼び出してWOLFSSLオブジェクトから平文データを抽出する必要があります。 |
| 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_ephemeral_key(WOLFSSL_CTX * ctx, int keyAlgo, const char * key, unsigned int keySz, int format) この関数は、テスト専用の固定/静的エフェメラル鍵を設定します。 |
| int | wolfSSL_set_ephemeral_key(WOLFSSL * ssl, int keyAlgo, const char * key, unsigned int keySz, int format) この関数は、テスト専用の固定/静的エフェメラル鍵を設定します。 |
| int | wolfSSL_CTX_get_ephemeral_key(WOLFSSL_CTX * ctx, int keyAlgo, const unsigned char ** key, unsigned int * keySz) この関数は、ASN.1/DERとしてロードされた鍵へのポインタを返します。 |
| int | wolfSSL_get_ephemeral_key(WOLFSSL * ssl, int keyAlgo, const unsigned char ** key, unsigned int * keySz) この関数は、ASN.1/DERとしてロードされた鍵へのポインタを返します。 |
| int | wolfSSL_RSA_sign_generic_padding(int type, const unsigned char * m, unsigned int mLen, unsigned char * sigRet, unsigned int * sigLen, WOLFSSL_RSA * rsa, int flag, int padding) 選択したメッセージダイジェスト、パディング、およびRSA鍵でメッセージに署名します。 |
| int | wolfSSL_dtls13_has_pending_msg(WOLFSSL * ssl) DTLSv1.3スタックが送信したが、まだ他のピアから確認応答されていないメッセージがあるかどうかをチェックします。 |
| unsigned int | wolfSSL_SESSION_get_max_early_data(const WOLFSSL_SESSION * s) セッションからEarly Dataの最大サイズを取得します。 |
| int | wolfSSL_CRYPTO_get_ex_new_index(int , void * , void * , void * , void * ) 外部データ用の新しいインデックスを取得します。このエントリは以下のAPIにも適用されます: |
| 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オブジェクトに対してハンドシェイクメッセージグループ化を無効にします。 |
| int | wolfSSL_get_negotiated_client_cert_type(WOLFSSL * ssl, int * tp) この関数は、ClientHelloとServerHelloで行われたクライアント証明書タイプネゴシエーションの結果を返します。ネゴシエーションが発生しなかった場合、戻り値としてWOLFSSL_SUCCESSが返され、証明書タイプとしてWOLFSSL_CERT_TYPE_UNKNOWNが返されます。 |
| int | wolfSSL_get_negotiated_server_cert_type(WOLFSSL * ssl, int * tp) この関数は、ClientHelloとServerHelloで行われたサーバ証明書タイプネゴシエーションの結果を返します。ネゴシエーションが発生しなかった場合、戻り値としてWOLFSSL_SUCCESSが返され、証明書タイプとしてWOLFSSL_CERT_TYPE_UNKNOWNが返されます。 |
| int | wolfSSL_dtls_cid_use(WOLFSSL * ssl) SSLオブジェクトに対してConnectionID拡張の使用を有効にします。RFC 9146およびRFC 9147を参照してください。 |
| int | wolfSSL_dtls_cid_is_enabled(WOLFSSL * ssl) ハンドシェイク完了後に呼び出された場合、SSLオブジェクトに対してConnectionIDが正常にネゴシエートされたかどうかを確認します。RFC 9146およびRFC 9147を参照してください。 |
| int | wolfSSL_dtls_cid_set(WOLFSSL * ssl, unsigned char * cid, unsigned int size) この接続でレコードを送信する際に相手ピアが使用するConnectionIDを設定します。RFC 9146およびRFC 9147を参照してください。ConnectionIDは最大DTLS_CID_MAX_SIZE(調整可能なコンパイル時定義)である必要があり、255バイトを超えることはできません。 |
| int | wolfSSL_dtls_cid_get_rx_size(WOLFSSL * ssl, unsigned int * size) この接続でレコードを送信する際に相手ピアが使用するConnectionIDのサイズを取得します。RFC 9146およびRFC 9147を参照してください。サイズはパラメータsizeに格納されます。 |
| int | wolfSSL_dtls_cid_get_rx(WOLFSSL * ssl, unsigned char * buffer, unsigned int bufferSz) この接続でレコードを送信する際に相手ピアが使用するConnectionIDを、パラメータbufferが指すバッファにコピーします。RFC 9146およびRFC 9147を参照してください。bufferSzでバッファ内の利用可能なスペースを提供する必要があります。 |
| int | wolfSSL_dtls_cid_get0_rx(WOLFSSL * ssl, unsigned char ** cid) 相手ピアが使用するConnectionIDを取得します。RFC 9146およびRFC 9147を参照してください。 |
| int | wolfSSL_dtls_cid_get_tx_size(WOLFSSL * ssl, unsigned int * size) この接続でレコードを送信する際に使用するConnectionIDのサイズを取得します。RFC 9146およびRFC 9147を参照してください。サイズはパラメータsizeに格納されます。 |
| int | wolfSSL_dtls_cid_get_tx(WOLFSSL * ssl, unsigned char * buffer, unsigned int bufferSz) この接続でレコードを送信する際に使用するConnectionIDを、パラメータbufferが指すバッファにコピーします。RFC 9146およびRFC 9147を参照してください。bufferSzで利用可能なサイズを提供する必要があります。 |
| int | wolfSSL_dtls_cid_get0_tx(WOLFSSL * ssl, unsigned char ** cid) この接続でレコードを送信する際に使用するConnectionIDを取得します。RFC 9146およびRFC 9147を参照してください。 |
| const unsigned char * | wolfSSL_dtls_cid_parse(const unsigned char * msg, unsigned int msgSz, unsigned int cidSz) レコードデータグラム/メッセージからConnectionIDを抽出します。RFC 9146およびRFC 9147を参照してください。 |
| void | wolfSSL_CTX_set_client_CA_list(WOLFSSL_CTX * ctx, WOLF_STACK_OF(WOLFSSL_X509_NAME) * names) サーバ側では、この関数は証明書要求でクライアントに送信されるCA名のリストを設定します。これは、サーバがサポートするCAのヒントとして機能します。 |
| WOLFSSL_STACK * | wolfSSL_CTX_get_client_CA_list(const WOLFSSL_CTX * ctx) これは、wolfSSL_CTX_set_client_CA_listを介して以前に設定されたリストを取得します。リストが設定されていない場合はNULLを返します。 |
| void | wolfSSL_set_client_CA_list(WOLFSSL * ssl, WOLF_STACK_OF(WOLFSSL_X509_NAME) * names) wolfSSL_CTX_set_client_CA_listと同じですが、セッション固有です。CAリストがコンテキストとセッションの両方に設定されている場合、セッション上のリストが使用されます。 |
| WOLFSSL_STACK * | wolfSSL_get_client_CA_list(const WOLFSSL * ssl) サーバ側では、wolfSSL_set_client_CA_listを介して以前に設定されたリストを取得します。何も設定されていない場合は、wolfSSL_CTX_set_client_CA_listを介して以前に設定されたリストを返します。リストが全く設定されていない場合は、NULLを返します。 |
| void | wolfSSL_CTX_set0_CA_list(WOLFSSL_CTX * ctx, WOLF_STACK_OF(WOLFSSL_X509_NAME) * names) この関数は、ピアの認証でサポートされているCAのヒントとしてピアに送信されるCA名のリストを設定します。 |
| WOLFSSL_STACK * | wolfSSL_CTX_get0_CA_list(const WOLFSSL_CTX * ctx) これは、wolfSSL_CTX_set0_CA_listを介して以前に設定されたリストを取得します。リストが設定されていない場合はNULLを返します。 |
| void | wolfSSL_set0_CA_list(WOLFSSL * ssl, WOLF_STACK_OF(WOLFSSL_X509_NAME) * names) wolfSSL_CTX_set0_CA_listと同じですが、セッション固有です。CAリストがコンテキストとセッションの両方に設定されている場合、セッション上のリストが使用されます。 |
| WOLFSSL_STACK * | wolfSSL_get0_CA_list(const WOLFSSL * ssl) これは、wolfSSL_set0_CA_listを介して以前に設定されたリストを取得します。何も設定されていない場合は、wolfSSL_CTX_set0_CA_listを介して以前に設定されたリストを返します。リストが全く設定されていない場合は、NULLを返します。 |
| WOLFSSL_STACK * | wolfSSL_get0_peer_CA_list(const WOLFSSL * ssl) これは、ピアから受信したCAリストを返します。 |
| void | wolfSSL_CTX_set_cert_cb(WOLFSSL_CTX * ctx, int()(WOLFSSL , void *) cb, void * arg) この関数は、証明書が使用される直前に呼び出されるコールバックを設定し、アプリケーションが証明書を検査、設定、またはクリアできるようにします。例えば、ピアから送信されたCAリストに反応することができます。 |
| int | wolfSSL_get_client_suites_sigalgs(const WOLFSSL * ssl, const byte suites, word16 * suiteSz, const byte hashSigAlgo, word16 * hashSigAlgoSz) この関数は、クライアントが提供する暗号スイートと署名アルゴリズムの生のリストを返します。リストは、wolfSSL_CTX_set_cert_cb()で設定されたコールバック内でのみ保存され、返されます。これは、利用可能な暗号スイートと署名アルゴリズムに基づいて証明書と鍵を動的にロードできるようにするのに便利です。 |
| WOLFSSL_CIPHERSUITE_INFO | wolfSSL_get_ciphersuite_info(byte first, byte second) これは、生の暗号スイートバイトから直接暗号スイートに関する情報を返します。 |
| int | wolfSSL_get_sigalg_info(byte first, byte second, int * hashAlgo, int * sigAlgo) これは、生の暗号スイートバイトから直接ハッシュおよび署名アルゴリズムに関する情報を返します。 |
Functions Documentation
function wolfDTLSv1_2_client_method_ex
WOLFSSL_METHOD * wolfDTLSv1_2_client_method_ex(
void * heap
)
この関数はDTLS v1.2クライアントメソッドを初期化します。
Parameters:
- none パラメータはありません。
See:
Return: pointer この関数は新しいWOLFSSL_METHOD構造体へのポインタを返します。
Example
wolfSSL_Init();
WOLFSSL_CTX* ctx = wolfSSL_CTX_new(wolfDTLSv1_2_client_method());
…
WOLFSSL* ssl = wolfSSL_new(ctx);
…
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 wolfDTLSv1_2_server_method
WOLFSSL_METHOD * wolfDTLSv1_2_server_method(
void
)
この関数は、サーバー側用のWOLFSSL_METHODを作成し、初期化します。
Parameters:
- none パラメータはありません。
See: wolfSSL_CTX_new
Return: この関数はWOLFSSL_METHODポインタを返します。
Example
WOLFSSL_CTX* ctx = wolfSSL_CTX_new(wolfDTLSv1_2_server_method());
WOLFSSL* ssl = WOLFSSL_new(ctx);
…
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_dtls_import
int wolfSSL_dtls_import(
WOLFSSL * ssl,
unsigned char * buf,
unsigned int sz
)
wolfSSL_dtls_import()関数は、シリアル化されたセッション状態を解析するために使用されます。これにより、ハンドシェイクが完了した後に接続を再開できます。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
- buf インポートするシリアル化されたセッション。
- sz シリアル化されたセッションバッファのサイズ。
See:
Return:
- Success 成功した場合、読み取られたバッファの量が返されます。
- Failure すべての失敗した戻り値は0未満になります。
- VERSION_ERROR バージョンの不一致が見つかった場合、つまりDTLS v1でctxがDTLS v1.2用に設定されている場合、VERSION_ERRORが返されます。
Example
WOLFSSL* ssl;
int ret;
unsigned char buf[MAX];
bufSz = MAX;
...
// wc_dtls_export関数から送信された情報を取得し、bufに配置します
fread(buf, 1, bufSz, input);
ret = wolfSSL_dtls_import(ssl, buf, bufSz);
if (ret < 0) {
// エラーケースを処理します
}
// ハンドシェイクが既に完了しているため、wolfSSL_acceptは不要です
...
ret = wolfSSL_write(ssl) および wolfSSL_read(ssl);
...
function wolfSSL_tls_import
int wolfSSL_tls_import(
WOLFSSL * ssl,
const unsigned char * buf,
unsigned int sz
)
シリアル化されたTLSセッションをインポートするために使用されます。この関数は、接続の状態をインポートするためのものです。警告:bufには状態に関する機密情報が含まれており、保存する場合は暗号化してから保存するのが最善です。マクロWOLFSSL_SESSION_EXPORT_DEBUGを定義することで、追加のデバッグ情報を表示できます。
Parameters:
- ssl セッションをインポートするWOLFSSL構造体
- buf シリアル化されたセッション
- sz バッファ'buf'のサイズ
See:
Return: バッファ'buf'から読み取られたバイト数
function wolfSSL_CTX_dtls_set_export
int wolfSSL_CTX_dtls_set_export(
WOLFSSL_CTX * ctx,
wc_dtls_export func
)
wolfSSL_CTX_dtls_set_export()関数は、セッションをエクスポートするためのコールバック関数を設定するために使用されます。以前に保存されたエクスポート関数をクリアするために、パラメータfuncとしてNULLを渡すことができます。サーバー側で使用され、ハンドシェイクが完了した直後に呼び出されます。
Parameters:
- ctx wolfSSL_CTX_new()で作成されたWOLFSSL_CTX構造体へのポインタ。
- func セッションをエクスポートする際に使用するwc_dtls_export関数。
See:
- wolfSSL_new
- wolfSSL_CTX_new
- wolfSSL_dtls_set_export
- Static buffer use
Return:
- SSL_SUCCESS 成功時。
- BAD_FUNC_ARG nullまたは期待されない引数が渡された場合
Example
int send_session(WOLFSSL* ssl, byte* buf, word32 sz, void* userCtx);
// buf(シリアル化されたセッション)を宛先に渡すsend session(wc_dtls_export)の本体
WOLFSSL_CTX* ctx;
int ret;
...
ret = wolfSSL_CTX_dtls_set_export(ctx, send_session);
if (ret != SSL_SUCCESS) {
// エラーケースを処理します
}
...
ret = wolfSSL_accept(ssl);
...
function wolfSSL_dtls_set_export
int wolfSSL_dtls_set_export(
WOLFSSL * ssl,
wc_dtls_export func
)
wolfSSL_dtls_set_export()関数は、セッションをエクスポートするためのコールバック関数を設定するために使用されます。以前に保存されたエクスポート関数をクリアするために、パラメータfuncとしてNULLを渡すことができます。サーバー側で使用され、ハンドシェイクが完了した直後に呼び出されます。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
- func セッションをエクスポートする際に使用するwc_dtls_export関数。
See:
Return:
- SSL_SUCCESS 成功時。
- BAD_FUNC_ARG nullまたは期待されない引数が渡された場合
Example
int send_session(WOLFSSL* ssl, byte* buf, word32 sz, void* userCtx);
// send sessionの本体(wc_dtls_export)
// buf(シリアライズされたセッション)を宛先に渡す
WOLFSSL* ssl;
int ret;
...
ret = wolfSSL_dtls_set_export(ssl, send_session);
if (ret != SSL_SUCCESS) {
// エラーケースの処理
}
...
ret = wolfSSL_accept(ssl);
...
function wolfSSL_dtls_export
int wolfSSL_dtls_export(
WOLFSSL * ssl,
unsigned char * buf,
unsigned int * sz
)
wolfSSL_dtls_export()関数は、WOLFSSLセッションを提供されたバッファにシリアライズするために使用されます。セッションを送信するための関数コールバックを使用するよりもメモリオーバーヘッドが少なく、セッションをシリアライズするタイミングを選択できます。関数に渡されたときにbufferがNULLの場合、szはWOLFSSLセッションをシリアライズするために必要なバッファのサイズに設定されます。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
- buf シリアライズされたセッションを保持するバッファ。
- sz バッファのサイズ。
See:
Return:
- Success 成功した場合、使用されたバッファの量が返されます。
- Failure すべての失敗時の戻り値は0未満になります。
Example
WOLFSSL* ssl;
int ret;
unsigned char buf[MAX];
bufSz = MAX;
...
ret = wolfSSL_dtls_export(ssl, buf, bufSz);
if (ret < 0) {
// エラーケースの処理
}
...
function wolfSSL_tls_export
int wolfSSL_tls_export(
WOLFSSL * ssl,
unsigned char * buf,
unsigned int * sz
)
シリアライズされたTLSセッションをエクスポートするために使用されます。この関数は接続のシリアライズされた状態をエクスポートするためのものです。 ほとんどの場合、wolfSSL_tls_exportの代わりにwolfSSL_get1_sessionを使用する必要があります。 追加のデバッグ情報は、マクロWOLFSSL_SESSION_EXPORT_DEBUGが定義されている場合に表示できます。 警告: bufには状態に関する機密情報が含まれているため、保存する場合は暗号化してから保存することが最善です。
Parameters:
- ssl セッションをエクスポートするWOLFSSL構造体
- buf シリアライズされたセッションの出力
- sz 'buf'に設定されたバイト単位のサイズ
See:
Return: バッファ'buf'に書き込まれたバイト数
function wolfSSL_CTX_load_static_memory
int wolfSSL_CTX_load_static_memory(
WOLFSSL_CTX ** ctx,
wolfSSL_method_func method,
unsigned char * buf,
unsigned int sz,
int flag,
int max
)
この関数は、CTX用の静的メモリを確保するために使用されます。確保されたメモリは、CTXのライフタイム中およびCTXから作成されたSSLオブジェクトに使用されます。NULLのctxポインタとwolfSSL_method_func関数を渡すことで、CTX自体の作成も静的メモリを使用します。wolfSSL_method_funcは、WOLFSSL_METHOD* (wolfSSL_method_func)(void heap);という関数シグネチャを持ちます。maxに0を渡すと、設定されていないかのように動作し、最大同時使用制限は適用されません。渡されたflag値は、メモリの使用方法と動作中の挙動を決定します。利用可能なフラグは次のとおりです: 0 - デフォルトの一般メモリ、WOLFMEM_IO_POOL - メッセージの送受信時の入出力バッファに使用され、一般メモリをオーバーライドするため、渡されたバッファ内のすべてのメモリがIOに使用されます、WOLFMEM_IO_FIXED - WOLFMEM_IO_POOLと同じですが、各SSLがライフタイム中に2つのバッファを保持します、WOLFMEM_TRACK_STATS - 各SSLが実行中にメモリ統計を追跡します。
Parameters:
- ctx WOLFSSL_CTX構造体へのポインタのアドレス。
- method プロトコルを作成する関数。(ctxもNULLでない場合はNULLであるべきです)
- buf すべての操作に使用するメモリ。
- sz 渡されるメモリバッファのサイズ。
- flag メモリのタイプ。
- max 最大同時操作数。
See:
Return:
- SSL_SUCCESS 成功時。
- SSL_FAILURE 失敗時。
Example
WOLFSSL_CTX* ctx;
WOLFSSL* ssl;
int ret;
unsigned char memory[MAX];
int memorySz = MAX;
unsigned char IO[MAX];
int IOSz = MAX;
int flag = WOLFMEM_IO_FIXED | WOLFMEM_TRACK_STATS;
...
// 静的メモリを使用してctxも作成、使用する一般メモリから開始
ctx = NULL:
ret = wolfSSL_CTX_load_static_memory(&ctx, wolfSSLv23_server_method_ex,
memory, memorySz, 0, MAX_CONCURRENT_HANDSHAKES);
if (ret != SSL_SUCCESS) {
// エラーケースの処理
}
// IOで使用するメモリをロード
ret = wolfSSL_CTX_load_static_memory(&ctx, NULL, IO, IOSz, flag,
MAX_CONCURRENT_IO);
if (ret != SSL_SUCCESS) {
// エラーケースの処理
}
...
function wolfSSL_CTX_is_static_memory
int wolfSSL_CTX_is_static_memory(
WOLFSSL_CTX * ctx,
WOLFSSL_MEM_STATS * mem_stats
)
この関数は接続の動作を変更せず、静的メモリの使用状況に関する情報を収集するためにのみ使用されます。
Parameters:
- ctx wolfSSL_CTX_new()を使用して作成されたWOLFSSL_CTX構造体へのポインタ。
- mem_stats 静的メモリの使用状況に関する情報を保持する構造体。
See:
Return:
- 1 CTXが静的メモリを使用している場合にtrueとして返されます。
- 0 静的メモリを使用していない場合に返されます。
Example
WOLFSSL_CTX* ctx;
int ret;
WOLFSSL_MEM_STATS mem_stats;
...
//CTXによる静的メモリに関する情報を取得
ret = wolfSSL_CTX_is_static_memory(ctx, &mem_stats);
if (ret == 1) {
// 静的メモリを使用しているケースの処理
// mem_statsの要素を出力または検査
}
if (ret == 0) {
//ctxが静的メモリを使用していないケースの処理
}
…
function wolfSSL_is_static_memory
int wolfSSL_is_static_memory(
WOLFSSL * ssl,
WOLFSSL_MEM_CONN_STATS * mem_stats
)
wolfSSL_is_static_memoryは、SSLの静的メモリ使用状況に関する情報を収集するために使用されます。戻り値は静的メモリが使用されているかどうかを示し、WOLFSSL_MEM_CONN_STATSは、静的メモリをロードする際に親CTXにWOLFMEM_TRACK_STATSフラグが渡された場合にのみ入力されます。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
- mem_stats 静的メモリの使用状況を含む構造体。
See:
Return:
- 1 CTXが静的メモリを使用している場合にtrueとして返されます。
- 0 静的メモリを使用していない場合に返されます。
Example
WOLFSSL* ssl;
int ret;
WOLFSSL_MEM_CONN_STATS mem_stats;
...
ret = wolfSSL_is_static_memory(ssl, mem_stats);
if (ret == 1) {
// 静的メモリの場合のケースを処理
// WOLFMEM_TRACK_STATSフラグがある場合、mem_stats内の要素を調査
}
...
function wolfSSL_CTX_use_certificate_file
int wolfSSL_CTX_use_certificate_file(
WOLFSSL_CTX * ctx,
const char * file,
int format
)
この関数は、証明書ファイルをSSLコンテキスト(WOLFSSL_CTX)にロードします。ファイルはfile引数によって提供されます。format引数はファイルのフォーマットタイプを指定します。SSL_FILETYPE_ASN1またはSSL_FILETYPE_PEMのいずれかです。適切な使用方法については、exampleを参照してください。
Parameters:
- ctx wolfSSL_CTX_new()を使用して作成されたWOLFSSL_CTX構造体へのポインタ
- file wolfSSL SSLコンテキストにロードされる証明書を含むファイルの名前へのポインタ。
- format - fileが指す証明書のフォーマット。可能なオプションはSSL_FILETYPE_ASN1またはSSL_FILETYPE_PEMです。
See:
Return:
- SSL_SUCCESS 成功時。
- SSL_FAILURE 関数呼び出しが失敗した場合、考えられる原因には、ファイルが間違ったフォーマットである、または"format"引数を使用して間違ったフォーマットが指定されている、ファイルが存在しない、読み取れない、または破損している、メモリ不足の状態が発生している、ファイルのBase16デコードが失敗したことなどが含まれます。
Example
int ret = 0;
WOLFSSL_CTX* ctx;
...
ret = wolfSSL_CTX_use_certificate_file(ctx, "./client-cert.pem",
SSL_FILETYPE_PEM);
if (ret != SSL_SUCCESS) {
// 証明書ファイルのロードエラー
}
...
function wolfSSL_CTX_use_PrivateKey_file
int wolfSSL_CTX_use_PrivateKey_file(
WOLFSSL_CTX * ctx,
const char * file,
int format
)
この関数は、秘密鍵ファイルをSSLコンテキスト(WOLFSSL_CTX)にロードします。ファイルはfile引数によって提供されます。format引数はファイルのフォーマットタイプを指定します - SSL_FILETYPE_ASN1またはSSL_FILETYPE_PEM。適切な使用方法については、exampleを参照してください。
Parameters:
- none パラメータなし。
See:
- wolfSSL_CTX_use_PrivateKey_buffer
- wolfSSL_use_PrivateKey_file
- wolfSSL_use_PrivateKey_buffer
- wc_CryptoCb_RegisterDevice
- wolfSSL_CTX_SetDevId
Return:
- SSL_SUCCESS 成功時。
- SSL_FAILURE ファイルが間違ったフォーマットである、または"format"引数を使用して間違ったフォーマットが指定されている。ファイルが存在しない、読み取れない、または破損している。メモリ不足の状態が発生している。ファイルのBase16デコードが失敗した。キーファイルが暗号化されているが、パスワードが提供されていない。
外部キーストアを使用していて秘密鍵を持っていない場合、代わりに公開鍵を提供し、署名を処理するための暗号コールバックを登録できます。これには、暗号コールバックまたはPKコールバックのいずれかでビルドできます。暗号コールバックを有効にするには、–enable-cryptocbまたはWOLF_CRYPTO_CBでビルドし、wc_CryptoCb_RegisterDeviceを使用して暗号コールバックを登録し、wolfSSL_CTX_SetDevIdを使用して関連するdevIdを設定します。
Example
int ret = 0;
WOLFSSL_CTX* ctx;
...
ret = wolfSSL_CTX_use_PrivateKey_file(ctx, "./server-key.pem",
SSL_FILETYPE_PEM);
if (ret != SSL_SUCCESS) {
// 鍵ファイルのロードエラー
}
...
function wolfSSL_CTX_load_verify_locations
int wolfSSL_CTX_load_verify_locations(
WOLFSSL_CTX * ctx,
const char * file,
const char * path
)
この関数は、PEM形式のCA証明書ファイルをSSLコンテキスト(WOLFSSL_CTX)にロードします。これらの証明書は信頼されたルート証明書として扱われ、SSLハンドシェイク中にピアから受信した証明書を検証するために使用されます。file引数によって提供されるルート証明書ファイルは、単一の証明書または複数の証明書を含むファイルである場合があります。 同じファイルに複数のCA証明書が含まれている場合、wolfSSLはファイル内に提示された順序でそれらをロードします。path引数は、信頼されたルートCAの証明書を含むディレクトリの名前へのポインタです。fileの値がNULLでない場合、必要でなければpathをNULLとして指定できます。pathが指定され、ライブラリのビルド時にNO_WOLFSSL_DIRが定義されていない場合、wolfSSLは指定されたディレクトリにあるすべてのCA証明書をロードします。この関数はディレクトリ内のすべてのファイルをロードしようとします。この関数は、ヘッダー"-----BEGIN CERTIFICATE-----"を持つPEM形式のCERT_TYPEファイルを想定しています。
Parameters:
- ctx wolfSSL_CTX_new()で作成されたSSLコンテキストへのポインタ。
- file PEM形式のCA証明書を含むファイルの名前へのポインタ。
- path PEM形式の証明書をロードするディレクトリの名前へのポインタ。
See:
- wolfSSL_CTX_load_verify_locations_ex
- wolfSSL_CTX_load_verify_buffer
- wolfSSL_CTX_use_certificate_file
- wolfSSL_CTX_use_PrivateKey_file
- wolfSSL_CTX_use_certificate_chain_file
- wolfSSL_use_certificate_file
- wolfSSL_use_PrivateKey_file
- wolfSSL_use_certificate_chain_file
Return:
- SSL_SUCCESS 成功時。
- SSL_FAILURE ctxがNULLの場合、またはfileとpathの両方がNULLの場合に返されます。
- SSL_BAD_FILETYPE ファイルが間違ったフォーマットの場合に返されます。
- SSL_BAD_FILE ファイルが存在しない、読み取れない、または破損している場合に返されます。
- MEMORY_E メモリ不足の状態が発生した場合に返されます。
- ASN_INPUT_E ファイルのBase16デコードが失敗した場合に返されます。
- ASN_BEFORE_DATE_E 現在の日付がbefore dateより前の場合に返されます。
- ASN_AFTER_DATE_E 現在の日付がafter dateより後の場合に返されます。
- BUFFER_E チェーンバッファが受信バッファより大きい場合に返されます。
- BAD_PATH_ERROR pathを開こうとしたときにopendir()が失敗した場合に返されます。
Example
int ret = 0;
WOLFSSL_CTX* ctx;
...
ret = wolfSSL_CTX_load_verify_locations(ctx, "./ca-cert.pem", NULL);
if (ret != WOLFSSL_SUCCESS) {
// CA証明書のロードエラー
}
...
function wolfSSL_CTX_load_verify_locations_ex
int wolfSSL_CTX_load_verify_locations_ex(
WOLFSSL_CTX * ctx,
const char * file,
const char * path,
unsigned int flags
)
この関数は、PEM形式のCA証明書ファイルをSSLコンテキスト(WOLFSSL_CTX)にロードします。これらの証明書は信頼されたルート証明書として扱われ、SSLハンドシェイク中にピアから受信した証明書を検証するために使用されます。file引数によって提供されるルート証明書ファイルは、単一の証明書または複数の証明書を含むファイルである場合があります。 同じファイルに複数のCA証明書が含まれている場合、wolfSSLはファイル内に提示された順序でそれらをロードします。path引数は、信頼されたルートCAの証明書を含むディレクトリの名前へのポインタです。fileの値がNULLでない場合、必要でなければpathをNULLとして指定できます。pathが指定され、ライブラリのビルド時にNO_WOLFSSL_DIRが定義されていない場合、wolfSSLは指定されたディレクトリにあるすべてのCA証明書をロードします。この関数は、指定されたフラグに基づいてディレクトリ内のすべてのファイルをロードしようとします。この関数は、ヘッダー"-----BEGIN CERTIFICATE-----"を持つPEM形式のCERT_TYPEファイルを想定しています。
Parameters:
- ctx wolfSSL_CTX_new()で作成されたSSLコンテキストへのポインタ。
- file PEM形式のCA証明書を含むファイル名へのポインタ。
- path PEM形式の証明書を読み込むディレクトリ名へのポインタ。
- flags 指定可能なマスク値: WOLFSSL_LOAD_FLAG_IGNORE_ERR、 WOLFSSL_LOAD_FLAG_DATE_ERR_OKAY、WOLFSSL_LOAD_FLAG_PEM_CA_ONLY
See:
- wolfSSL_CTX_load_verify_locations
- wolfSSL_CTX_load_verify_buffer
- wolfSSL_CTX_use_certificate_file
- wolfSSL_CTX_use_PrivateKey_file
- wolfSSL_CTX_use_certificate_chain_file
- wolfSSL_use_certificate_file
- wolfSSL_use_PrivateKey_file
- wolfSSL_use_certificate_chain_file
Return:
- SSL_SUCCESS 成功時。
- SSL_FAILURE ctxがNULLの場合、またはfileとpathの両方がNULLの場合に返されます。少なくとも1つの証明書が正常にロードされたが、1つ以上が失敗した場合もこれが返されます。理由についてはエラースタックを確認してください。
- SSL_BAD_FILETYPE ファイルが間違ったフォーマットの場合に返されます。
- SSL_BAD_FILE ファイルが存在しない、読み取れない、または破損している場合に返されます。
- MEMORY_E メモリ不足の状態が発生した場合に返されます。
- ASN_INPUT_E ファイルのBase16デコードが失敗した場合に返されます。
- BUFFER_E チェーンバッファが受信バッファより大きい場合に返されます。
- BAD_PATH_ERROR pathを開こうとしたときにopendir()が失敗した場合に返されます。
Example
int ret = 0;
WOLFSSL_CTX* ctx;
...
ret = wolfSSL_CTX_load_verify_locations_ex(ctx, NULL, "./certs/external",
WOLFSSL_LOAD_FLAG_PEM_CA_ONLY);
if (ret != WOLFSSL_SUCCESS) {
// CA証明書の読み込みエラー
}
...
function wolfSSL_get_system_CA_dirs
const char ** wolfSSL_get_system_CA_dirs(
word32 * num
)
この関数は、wolfSSL_CTX_load_system_CA_certsが呼び出されたときにwolfSSLがシステムCA証明書を検索するディレクトリを表す文字列の配列へのポインタを返します。証明書をアクセス可能なシステムディレクトリに保存しないシステム(Appleプラットフォームなど)では、この関数は常にNULLを返します。
Parameters:
- num 文字列配列の長さが格納されるword32へのポインタ。
See:
- wolfSSL_CTX_load_system_CA_certs
- wolfSSL_CTX_load_verify_locations
- wolfSSL_CTX_load_verify_locations_ex
Return:
- 成功時は有効なポインタ。
- 失敗時はNULLポインタ。
Example
WOLFSSL_CTX* ctx;
const char** dirs;
word32 numDirs;
dirs = wolfSSL_get_system_CA_dirs(&numDirs);
for (int i = 0; i < numDirs; ++i) {
printf("Potential system CA dir: %s\n", dirs[i]);
}
...
function wolfSSL_CTX_load_system_CA_certs
int wolfSSL_CTX_load_system_CA_certs(
WOLFSSL_CTX * ctx
)
ほとんどのプラットフォーム(LinuxおよびWindowsを含む)において、この関数はOS依存のCA証明書ストアからWOLFSSL_CTXへCA証明書を読み込もうと試みます。読み込まれた証明書は信頼されます。
Parameters:
- ctx wolfSSL_CTX_new()で作成されたSSLコンテキストへのポインタ。
See:
Return:
- 成功時はWOLFSSL_SUCCESS。
- システムCA証明書が読み込まれなかった場合はWOLFSSL_BAD_PATH。
- その他の失敗タイプの場合はWOLFSSL_FAILURE(例: Windows証明書ストアが適切に閉じられなかった場合)。
Appleプラットフォーム(macOSを除く)では、証明書をシステムから取得できないため、wolfSSL証明書マネージャに読み込むことができません。これらのプラットフォームでは、この関数は、WOLFSSL_CTXにバインドされたTLS接続において、ユーザーによって読み込まれた証明書に対してピア証明書の信頼性を最初に認証できない場合に、ネイティブシステムの信頼APIを使用してピア証明書チェーンの信頼性を検証できるようにします。
サポートおよびテストされているプラットフォームは、Linux(Debian、Ubuntu、 Gentoo、Fedora、RHEL)、Windows 10/11、Android、macOS、およびiOSです。
Example
int ret = 0;
WOLFSSL_CTX* ctx;
...
ret = wolfSSL_CTX_load_system_CA_certs(ctx,);
if (ret != WOLFSSL_SUCCESS) {
// システムCA証明書の読み込みエラー
}
...
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_use_certificate_chain_file
int wolfSSL_CTX_use_certificate_chain_file(
WOLFSSL_CTX * ctx,
const char * file
)
この関数は、証明書チェーンをSSLコンテキスト(WOLFSSL_CTX)に読み込みます。証明書チェーンを含むファイルはfile引数によって提供され、PEM形式の証明書を含む必要があります。この関数は、MAX_CHAIN_DEPTH(デフォルト = 9、internal.hで定義)個までの証明書と、サブジェクト証明書を処理します。
Parameters:
- ctx wolfSSL_CTX_new()を使用して作成されたWOLFSSL_CTX構造体へのポインタ。
- file wolfSSL SSLコンテキストに読み込まれる証明書チェーンを含むファイルの名前へのポインタ。証明書はPEM形式である必要があります。
See:
- wolfSSL_CTX_use_certificate_file
- wolfSSL_CTX_use_certificate_buffer
- wolfSSL_use_certificate_file
- wolfSSL_use_certificate_buffer
Return:
- 成功時はSSL_SUCCESS。
- 関数呼び出しが失敗した場合はSSL_FAILURE。考えられる原因には、ファイルの形式が間違っている、または「format」引数を使用して間違った形式が指定されている、ファイルが存在しない、読み取れない、または破損している、メモリ不足状態が発生した、などがあります。
Example
int ret = 0;
WOLFSSL_CTX* ctx;
...
ret = wolfSSL_CTX_use_certificate_chain_file(ctx, "./cert-chain.pem");
if (ret != SSL_SUCCESS) {
// 証明書ファイルの読み込みエラー
}
...
function wolfSSL_CTX_use_RSAPrivateKey_file
int wolfSSL_CTX_use_RSAPrivateKey_file(
WOLFSSL_CTX * ctx,
const char * file,
int format
)
この関数は、SSL接続で使用されるプライベートRSA鍵をSSLコンテキスト(WOLFSSL_CTX)に読み込みます。この関数は、wolfSSLがOpenSSL互換レイヤーを有効にしてコンパイルされた場合(–enable-opensslExtra、#define OPENSSL_EXTRA)にのみ利用可能であり、より一般的に使用されるwolfSSL_CTX_use_PrivateKey_file()関数と同一です。file引数には、format引数で指定された形式のRSAプライベート鍵ファイルへのポインタが含まれます。
Parameters:
- ctx wolfSSL_CTX_new()を使用して作成されたWOLFSSL_CTX構造体へのポインタ。
- file wolfSSL SSLコンテキストに読み込まれるRSAプライベート鍵を含むファイルの名前へのポインタ。形式はformat引数で指定されます。
- format file引数で指定されたRSAプライベート鍵のエンコーディングタイプ。指定可能な値には、SSL_FILETYPE_PEMおよびSSL_FILETYPE_ASN1が含まれます。
See:
- wolfSSL_CTX_use_PrivateKey_buffer
- wolfSSL_CTX_use_PrivateKey_file
- wolfSSL_use_RSAPrivateKey_file
- wolfSSL_use_PrivateKey_buffer
- wolfSSL_use_PrivateKey_file
Return:
- 成功時はSSL_SUCCESS。
- 関数呼び出しが失敗した場合はSSL_FAILURE。考えられる原因には、入力鍵ファイルの形式が間違っている、または「format」引数を使用して間違った形式が指定されている、ファイルが存在しない、読み取れない、または破損している、メモリ不足状態が発生した、などがあります。
Example
int ret = 0;
WOLFSSL_CTX* ctx;
...
ret = wolfSSL_CTX_use_RSAPrivateKey_file(ctx, "./server-key.pem",
SSL_FILETYPE_PEM);
if (ret != SSL_SUCCESS) {
// プライベート鍵ファイルの読み込みエラー
}
...
function wolfSSL_get_verify_depth
long wolfSSL_get_verify_depth(
WOLFSSL * ssl
)
この関数は、有効なセッション(つまり、非NULLのセッションオブジェクト(ssl)が存在する場合)に対して許可される最大チェーン深度を返します。デフォルトは9です。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
See: wolfSSL_CTX_get_verify_depth
Return:
- WOLFSSL構造体がNULLでない場合はMAX_CHAIN_DEPTHが返されます。デフォルトでは値は9です。
- WOLFSSL構造体がNULLの場合はBAD_FUNC_ARGが返されます。
Example
WOLFSSL_CTX* ctx = wolfSSL_CTX_new( protocol method );
WOLFSSL* ssl = wolfSSL_new(ctx);
...
long sslDep = wolfSSL_get_verify_depth(ssl);
if(sslDep > EXPECTED){
// 検証された深度は期待値よりも大きい
} else {
// 検証された深度は期待値以下
}
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_use_certificate_file
int wolfSSL_use_certificate_file(
WOLFSSL * ssl,
const char * file,
int format
)
この関数は、証明書ファイルをSSLセッション(WOLFSSL構造体)に読み込みます。証明書ファイルはfile引数によって提供されます。format引数は、ファイルの形式タイプ(SSL_FILETYPE_ASN1またはSSL_FILETYPE_PEM)を指定します。
Parameters:
- ssl wolfSSL_new()で作成されたWOLFSSL構造体へのポインタ。
- file wolfSSL SSLセッションに読み込まれる証明書を含むファイルの名前へのポインタ。形式はformat引数で指定されます。
- format file引数で指定された証明書のエンコーディングタイプ。指定可能な値には、SSL_FILETYPE_PEMおよびSSL_FILETYPE_ASN1が含まれます。
See:
Return:
- 成功時はSSL_SUCCESS。
- 関数呼び出しが失敗した場合はSSL_FAILURE。考えられる原因には、ファイルの形式が間違っている、または「format」引数を使用して間違った形式が指定されている、ファイルが存在しない、読み取れない、または破損している、メモリ不足状態が発生した、ファイルに対するBase16デコードが失敗した、などがあります。
Example
int ret = 0;
WOLFSSL* ssl;
...
ret = wolfSSL_use_certificate_file(ssl, "./client-cert.pem",
SSL_FILETYPE_PEM);
if (ret != SSL_SUCCESS) {
// 証明書ファイルの読み込みエラー
}
...
function wolfSSL_use_PrivateKey_file
int wolfSSL_use_PrivateKey_file(
WOLFSSL * ssl,
const char * file,
int format
)
この関数は、プライベート鍵ファイルをSSLセッション(WOLFSSL構造体)に読み込みます。鍵ファイルはfile引数によって提供されます。format引数は、ファイルの形式タイプ(SSL_FILETYPE_ASN1またはSSL_FILETYPE_PEM)を指定します。
Parameters:
- ssl wolfSSL_new()で作成されたWOLFSSL構造体へのポインタ。
- file wolfSSL SSLセッションに読み込まれる鍵ファイルを含むファイルの名前へのポインタ。形式はformat引数で指定されます。
- format file引数で指定された鍵のエンコーディングタイプ。指定可能な値には、SSL_FILETYPE_PEMおよびSSL_FILETYPE_ASN1が含まれます。
See:
- wolfSSL_CTX_use_PrivateKey_buffer
- wolfSSL_CTX_use_PrivateKey_file
- wolfSSL_use_PrivateKey_buffer
- wc_CryptoCb_RegisterDevice
- wolfSSL_SetDevId
Return:
- 成功時はSSL_SUCCESS。
- 関数呼び出しが失敗した場合はSSL_FAILURE。考えられる原因には、ファイルの形式が間違っている、または「format」引数を使用して間違った形式が指定されている、ファイルが存在しない、読み取れない、または破損している、メモリ不足状態が発生した、ファイルに対するBase16デコードが失敗した、鍵ファイルが暗号化されているがパスワードが提供されていない、などがあります。
外部鍵ストアを使用していてプライベート鍵を持っていない場合は、代わりに公開鍵を提供し、署名を処理するための暗号コールバックを登録することができます。これには、暗号コールバックまたはPKコールバックのいずれかを有効にしてビルドします。暗号コールバックを有効にするには、–enable-cryptocbまたはWOLF_CRYPTO_CBを使用し、wc_CryptoCb_RegisterDeviceを使用して暗号コールバックを登録し、wolfSSL_SetDevIdを使用して関連するdevIdを設定します。
Example
int ret = 0;
WOLFSSL* ssl;
...
ret = wolfSSL_use_PrivateKey_file(ssl, "./server-key.pem",
SSL_FILETYPE_PEM);
if (ret != SSL_SUCCESS) {
// 鍵ファイルの読み込みエラー
}
...
function wolfSSL_use_certificate_chain_file
int wolfSSL_use_certificate_chain_file(
WOLFSSL * ssl,
const char * file
)
この関数は、証明書のチェーンをSSLセッション(WOLFSSL構造体)にロードします。証明書チェーンを含むファイルはfile引数で指定され、PEM形式の証明書を含んでいる必要があります。この関数は、MAX_CHAIN_DEPTH(デフォルト = 9、internal.hで定義)個までの証明書と、サブジェクト証明書を処理します。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ
- file wolfSSL SSLセッションにロードする証明書のチェーンを含むファイルの名前へのポインタ。証明書はPEM形式でなければなりません。
See:
- wolfSSL_CTX_use_certificate_chain_file
- wolfSSL_CTX_use_certificate_chain_buffer
- wolfSSL_use_certificate_chain_buffer
Return:
- SSL_SUCCESS 成功時。
- SSL_FAILURE 関数呼び出しが失敗した場合、考えられる原因は次のとおりです:ファイルの形式が間違っている、または"format"引数で与えられた形式が間違っている、ファイルが存在しない、読み取れない、または破損している、メモリ不足の状態が発生した
Example
int ret = 0;
WOLFSSL* ctx;
...
ret = wolfSSL_use_certificate_chain_file(ssl, "./cert-chain.pem");
if (ret != SSL_SUCCESS) {
// 証明書ファイルのロードエラー
}
...
function wolfSSL_use_RSAPrivateKey_file
int wolfSSL_use_RSAPrivateKey_file(
WOLFSSL * ssl,
const char * file,
int format
)
この関数は、SSL接続で使用されるプライベートRSA鍵をSSLセッション(WOLFSSL構造体)にロードします。この関数は、wolfSSLがOpenSSL互換レイヤーを有効にしてコンパイルされている場合(–enable-opensslExtra、#define OPENSSL_EXTRA)にのみ利用可能であり、より一般的に使用されるwolfSSL_use_PrivateKey_file()関数と同一です。file引数は、formatで指定された形式のRSAプライベート鍵ファイルへのポインタを含みます。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ
- file wolfSSL SSLセッションにロードするRSAプライベート鍵を含むファイルの名前へのポインタ、形式はformatで指定されます。
- format fileで指定されたRSAプライベート鍵のエンコーディングタイプ。指定可能な値はSSL_FILETYPE_PEMとSSL_FILETYPE_ASN1です。
See:
- wolfSSL_CTX_use_RSAPrivateKey_file
- wolfSSL_CTX_use_PrivateKey_buffer
- wolfSSL_CTX_use_PrivateKey_file
- wolfSSL_use_PrivateKey_buffer
- wolfSSL_use_PrivateKey_file
Return:
- SSL_SUCCESS 成功時
- SSL_FAILURE 関数呼び出しが失敗した場合、考えられる原因は次のとおりです:入力鍵ファイルの形式が間違っている、または"format"引数で与えられた形式が間違っている、ファイルが存在しない、読み取れない、または破損している、メモリ不足の状態が発生した
Example
int ret = 0;
WOLFSSL* ssl;
...
ret = wolfSSL_use_RSAPrivateKey_file(ssl, "./server-key.pem",
SSL_FILETYPE_PEM);
if (ret != SSL_SUCCESS) {
// プライベート鍵ファイルのロードエラー
}
...
function wolfSSL_CTX_der_load_verify_locations
int wolfSSL_CTX_der_load_verify_locations(
WOLFSSL_CTX * ctx,
const char * file,
int format
)
この関数はwolfSSL_CTX_load_verify_locationsに似ていますが、DER形式のCAファイルをSSLコンテキスト(WOLFSSL_CTX)にロードできます。PEM形式のCAファイルをロードするためにも使用できます。これらの証明書は信頼されたルート証明書として扱われ、SSLハンドシェイク中にピアから受信した証明書を検証するために使用されます。file引数で指定されるルート証明書ファイルは、単一の証明書または複数の証明書を含むファイルである可能性があります。複数のCA証明書が同じファイルに含まれている場合、wolfSSLはファイル内で提示された順序でそれらをロードします。format引数は、証明書の形式がSSL_FILETYPE_PEMまたはSSL_FILETYPE_ASN1(DER)のいずれかであることを指定します。wolfSSL_CTX_load_verify_locationsとは異なり、この関数は指定されたディレクトリパスからのCA証明書のロードを許可しません。この関数は、wolfSSLライブラリがWOLFSSL_DER_LOADを定義してコンパイルされている場合にのみ利用可能です。
Parameters:
- ctx wolfSSL_CTX_new()を使用して作成されたWOLFSSL_CTX構造体へのポインタ
- file wolfSSL SSLコンテキストにロードするCA証明書を含むファイルの名前へのポインタ、形式はformatで指定されます。
- format fileで指定された証明書のエンコーディングタイプ。指定可能な値はSSL_FILETYPE_PEMとSSL_FILETYPE_ASN1です。
See:
Return:
- SSL_SUCCESS 成功時。
- SSL_FAILURE 失敗時。
Example
int ret = 0;
WOLFSSL_CTX* ctx;
...
ret = wolfSSL_CTX_der_load_verify_locations(ctx, "./ca-cert.der",
SSL_FILETYPE_ASN1);
if (ret != SSL_SUCCESS) {
// CA証明書のロードエラー
}
...
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_get_cipher_list
char * wolfSSL_get_cipher_list(
int priority
)
渡された優先度レベルでの暗号の名前を取得します。
Parameters:
- priority 暗号の優先度レベルを表す整数。
See:
Return:
- string 成功
- 0 優先度が範囲外または無効です。
Example
printf("The cipher at 1 is %s", wolfSSL_get_cipher_list(1));
function wolfSSL_get_ciphers
int wolfSSL_get_ciphers(
char * buf,
int len
)
この関数は、wolfSSLで有効になっている暗号を取得します。
Parameters:
- buf バッファを表すcharポインタ。
- len バッファの長さ。
See:
- GetCipherNames
- wolfSSL_get_cipher_list
- ShowCiphers
Return:
- SSL_SUCCESS 関数がエラーなく実行された場合に返されます。
- BAD_FUNC_ARG bufパラメータがNULLまたはlen引数がゼロ以下の場合に返されます。
- BUFFER_E バッファが十分に大きくなくオーバーフローする場合に返されます。
Example
static void ShowCiphers(void){
char* ciphers;
int ret = wolfSSL_get_ciphers(ciphers, (int)sizeof(ciphers));
if(ret == SSL_SUCCESS){
printf("%s\n", ciphers);
}
}
function wolfSSL_get_cipher_name
const char * wolfSSL_get_cipher_name(
WOLFSSL * ssl
)
この関数は、引数をwolfSSL_get_cipher_name_internalに渡すことによって、DHE-RSA形式で暗号名を取得します。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
See:
- wolfSSL_CIPHER_get_name
- wolfSSL_get_current_cipher
- wolfSSL_get_cipher_name_internal
Return:
- string この関数は、マッチした暗号スイートの文字列表現を返します。
- NULL エラーまたは暗号が見つかりません。
Example
WOLFSSL_CTX* ctx = wolfSSL_CTX_new( protocol method );
WOLFSSL* ssl = wolfSSL_new(ctx);
…
char* cipher = wolfSSL_get_cipher_name(ssl);
if(cipher == NULL){
// 暗号スイートがマッチしませんでした
} else {
// 暗号スイートがマッチしました
printf("%s\n", cipherS);
}
function wolfSSL_get_fd
int wolfSSL_get_fd(
const WOLFSSL *
)
この関数は、SSL接続の入力機能として使用される読み取りファイル記述子(fd)を返します。通常、これはソケットファイル記述子になります。
Parameters:
- ssl wolfSSL_new()で作成されたSSLセッションへのポインタ。
See:
- wolfSSL_set_fd
- wolfSSL_set_read_fd
- wolfSSL_set_write_fd
Return: fd 成功した場合、この関数はSSLセッションファイルディスクリプタを返します。
Example
int sockfd;
WOLFSSL* ssl = 0;
...
sockfd = wolfSSL_get_fd(ssl);
...
function wolfSSL_get_wfd
int wolfSSL_get_wfd(
const WOLFSSL *
)
この関数は、SSL接続の出力機能として使用される書き込みファイルディスクリプタ(fd)を返します。通常はソケットファイルディスクリプタになります。
Parameters:
- ssl wolfSSL_new()で作成されたSSLセッションへのポインタ。
See:
- wolfSSL_set_fd
- wolfSSL_set_read_fd
- wolfSSL_set_write_fd
Return: fd 成功した場合、この関数はSSLセッションファイルディスクリプタを返します。
Example
int sockfd;
WOLFSSL* ssl = 0;
...
sockfd = wolfSSL_get_wfd(ssl);
...
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_get_using_nonblock
int wolfSSL_get_using_nonblock(
WOLFSSL *
)
この関数により、アプリケーションはwolfSSLがノンブロッキングI/Oを使用しているかどうかを判定できます。wolfSSLがノンブロッキングI/Oを使用している場合、この関数は1を返し、それ以外の場合は0を返します。アプリケーションがWOLFSSLオブジェクトを作成した後、それをノンブロッキングソケットと共に使用する場合は、wolfSSL_set_using_nonblock()を呼び出してください。これにより、WOLFSSLオブジェクトは、EWOULDBLOCKを受け取ることがタイムアウトではなく、recvfrom呼び出しがブロックすることを意味すると認識できます。
Parameters:
- ssl wolfSSL_new()で作成されたSSLセッションへのポインタ。
See: wolfSSL_set_session
Return:
- 0 下層のI/Oがブロッキングです。
- 1 下層のI/Oがノンブロッキングです。
Example
int ret = 0;
WOLFSSL* ssl = 0;
...
ret = wolfSSL_get_using_nonblock(ssl);
if (ret == 1) {
// 下層のI/Oはノンブロッキング
}
...
function wolfSSL_write
int wolfSSL_write(
WOLFSSL * ssl,
const void * data,
int sz
)
この関数は、バッファdataからszバイトをSSL接続sslに書き込みます。必要に応じて、wolfSSL_connect()またはwolfSSL_accept()によってハンドシェイクがまだ実行されていない場合、wolfSSL_write()はSSL/TLSセッションをネゴシエートします。(D)TLSv1.3を使用していてearly data機能がコンパイルされている場合、この関数はデータ送信が可能になるまでハンドシェイクを進めます。次のwolfSSL_Connect()、wolfSSL_Accept()、wolfSSL_read()の呼び出しでハンドシェイクが完了します。wolfSSL_write()は、ブロッキングとノンブロッキングの両方のI/Oで動作します。下層のI/Oがノンブロッキングの場合、wolfSSL_write()は、下層のI/OがwolfSSL_write()を継続するために必要な要求を満たせなくなった時点で返されます。この場合、wolfSSL_get_error()を呼び出すと、SSL_ERROR_WANT_READまたはSSL_ERROR_WANT_WRITEのいずれかが返されます。呼び出し側プロセスは、下層のI/Oの準備ができたら、wolfSSL_write()の呼び出しを繰り返す必要があります。下層のI/Oがブロッキングの場合、wolfSSL_write()は、サイズszのバッファデータが完全に書き込まれるか、エラーが発生するまで返されません。
Parameters:
- ssl wolfSSL_new()で作成されたSSLセッションへのポインタ。
- data ピアに送信されるデータバッファ。
- sz ピアに送信するデータ(data)のサイズ(バイト単位)。
See:
Return:
- >0 成功時に書き込まれたバイト数。
- 0 失敗時に返されます。具体的なエラーコードについては、wolfSSL_get_error()を呼び出してください。
- SSL_FATAL_ERROR エラーが発生した場合、またはノンブロッキングソケットを使用している場合にSSL_ERROR_WANT_READまたはSSL_ERROR_WANT_WRITEエラーを受け取り、アプリケーションがwolfSSL_write()を再度呼び出す必要がある場合に返されます。具体的なエラーコードを取得するには、wolfSSL_get_error()を使用してください。
Example
WOLFSSL* ssl = 0;
char msg[64] = "hello wolfssl!";
int msgSz = (int)strlen(msg);
int flags;
int ret;
...
ret = wolfSSL_write(ssl, msg, msgSz);
if (ret <= 0) {
// wolfSSL_write()が失敗、wolfSSL_get_error()を呼び出す
}
function wolfSSL_read
int wolfSSL_read(
WOLFSSL * ssl,
void * data,
int sz
)
この関数は、SSLセッション(ssl)の内部読み取りバッファからszバイトをバッファdataに読み込みます。読み取られたバイトは内部受信バッファから削除されます。必要に応じて、wolfSSL_connect()またはwolfSSL_accept()によってハンドシェイクがまだ実行されていない場合、wolfSSL_read()はSSL/TLSセッションをネゴシエートします。SSL/TLSプロトコルは、最大サイズが16kBのSSLレコードを使用します(最大レコードサイズは、
Parameters:
- ssl wolfSSL_new()で作成されたSSLセッションへのポインタ。
- data wolfSSL_read()が読み取ったデータを格納するバッファ。
- sz dataに読み込むバイト数。
See:
Return:
- >0 成功時に読み取られたバイト数。
- 0 失敗時に返されます。これは、クリーンシャットダウン(close notifyアラート)またはピアが接続を閉じたことが原因である可能性があります。具体的なエラーコードについては、wolfSSL_get_error()を呼び出してください。
- SSL_FATAL_ERROR エラーが発生した場合、またはノンブロッキングソケットを使用している場合にSSL_ERROR_WANT_READまたはSSL_ERROR_WANT_WRITEエラーを受け取り、アプリケーションがwolfSSL_read()を再度呼び出す必要がある場合に返されます。具体的なエラーコードを取得するには、wolfSSL_get_error()を使用してください。
Example
WOLFSSL* ssl = 0;
char reply[1024];
...
input = wolfSSL_read(ssl, reply, sizeof(reply));
if (input > 0) {
// バッファ"reply"に"input"バイトが返された
}
wolfSSL_read()のより完全な例については、wolfSSLの例(client、server、echoclient、echoserver)を参照してください。
function wolfSSL_peek
int wolfSSL_peek(
WOLFSSL * ssl,
void * data,
int sz
)
この関数は、SSLセッション(ssl)の内部読み取りバッファからszバイトをバッファdataにコピーします。この関数は、内部SSLセッション受信バッファ内のデータが削除または変更されない点を除いて、wolfSSL_read()と同じです。wolfSSL_read()と同様に、必要に応じて、wolfSSL_connect()またはwolfSSL_accept()によってハンドシェイクがまだ実行されていない場合、wolfSSL_peek()はSSL/TLSセッションをネゴシエートします。SSL/TLSプロトコルは、最大サイズが16kBのSSLレコードを使用します(最大レコードサイズは、
Parameters:
- ssl wolfSSL_new()で作成されたSSLセッションへのポインタ。
- data wolfSSL_peek()が読み取ったデータを格納するバッファ。
- sz dataに読み込むバイト数。
See: wolfSSL_read
Return:
- >0 成功時に読み取られたバイト数。
- 0 失敗時に返されます。これは、クリーンシャットダウン(close notifyアラート)またはピアが接続を閉じたことが原因である可能性があります。具体的なエラーコードについては、wolfSSL_get_error()を呼び出してください。
- SSL_FATAL_ERROR エラーが発生した場合、またはノンブロッキングソケットを使用している場合にSSL_ERROR_WANT_READまたはSSL_ERROR_WANT_WRITEエラーを受け取り、アプリケーションがwolfSSL_peek()を再度呼び出す必要がある場合に返されます。具体的なエラーコードを取得するには、wolfSSL_get_error()を使用してください。
Example
WOLFSSL* ssl = 0;
char reply[1024];
...
input = wolfSSL_peek(ssl, reply, sizeof(reply));
if (input > 0) {
// バッファ"reply"に"input"バイトが返された
}
function wolfSSL_accept
int wolfSSL_accept(
WOLFSSL *
)
この関数はサーバ側で呼び出され、SSLクライアントがSSL/TLSハンドシェイクを開始するのを待機します。この関数が呼び出されるとき、下層の通信チャネルはすでに設定されています。wolfSSL_accept()は、ブロッキングとノンブロッキングの両方のI/Oで動作します。下層のI/Oがノンブロッキングの場合、wolfSSL_accept()は、下層のI/OがwolfSSL_acceptがハンドシェイクを継続するために必要な要求を満たせなくなった時点で返されます。この場合、wolfSSL_get_error()を呼び出すと、SSL_ERROR_WANT_READまたはSSL_ERROR_WANT_WRITEのいずれかが返されます。呼び出し側プロセスは、データの読み取りが可能になったらwolfSSL_accept()の呼び出しを繰り返す必要があり、wolfSSLは中断した箇所から再開します。ノンブロッキングソケットを使用する場合、何もする必要はありませんが、select()を使用して必要な条件を確認できます。下層のI/Oがブロッキングの場合、wolfSSL_accept()は、ハンドシェイクが完了するか、エラーが発生するまで返されません。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
See:
Return:
- SSL_SUCCESS 成功時。
- SSL_FATAL_ERROR エラーが発生した場合に返されます。より詳細なエラーコードを取得するには、wolfSSL_get_error()を呼び出してください。
Example
int ret = 0;
int err = 0;
WOLFSSL* ssl;
char buffer[80];
...
ret = wolfSSL_accept(ssl);
if (ret != SSL_SUCCESS) {
err = wolfSSL_get_error(ssl, ret);
printf("error = %d, %s\n", err, wolfSSL_ERR_error_string(err, buffer));
}
function wolfDTLS_accept_stateless
int wolfDTLS_accept_stateless(
WOLFSSL * ssl
)
この関数はサーバ側で呼び出され、SSLクライアントがDTLSハンドシェイクを開始するのをステートレスに待機します。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
See:
Return:
- WOLFSSL_SUCCESS 有効なクッキーを含むClientHelloが受信されました。wolfSSL_accept()で接続を続行できます。
- WOLFSSL_FAILURE I/O層がWANT_READを返しました。これは、読み取るデータがなくノンブロッキングソケットを使用しているか、クッキーリクエストを送信して応答を待っているためです。ユーザは、I/O層でデータが利用可能になった後、wolfDTLS_accept_statelessを再度呼び出す必要があります。
- WOLFSSL_FATAL_ERROR 致命的なエラーが発生しました。sslオブジェクトを解放して再割り当てしてから続行する必要があります。
Example
int ret = 0;
int err = 0;
WOLFSSL* ssl;
...
do {
ret = wolfDTLS_accept_stateless(ssl);
if (ret == WOLFSSL_FATAL_ERROR)
// wolfSSL_free()とwolfSSL_new()でsslオブジェクトを再割り当て
} while (ret != WOLFSSL_SUCCESS);
ret = wolfSSL_accept(ssl);
if (ret != SSL_SUCCESS) {
err = wolfSSL_get_error(ssl, ret);
printf("error = %d, %s\n", err, wolfSSL_ERR_error_string(err, buffer));
}
function wolfSSL_CTX_free
void wolfSSL_CTX_free(
WOLFSSL_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 *
)
この関数は、割り当てられたwolfSSLオブジェクトを解放します。
Parameters:
- ssl wolfSSL_new()で作成されたSSLオブジェクトへのポインタ。
See:
Return: none 戻り値はありません。
Example
#include <wolfssl/ssl.h>
WOLFSSL* ssl = 0;
...
wolfSSL_free(ssl);
function wolfSSL_shutdown
int wolfSSL_shutdown(
WOLFSSL *
)
この関数は、SSLセッションsslを使用してアクティブなSSL/TLS接続をシャットダウンします。この関数は、ピアに「close notify」アラートを送信しようと試みます。呼び出し側のアプリケーションは、ピアからの応答として「close notify」アラートが送信されるのを待つか、wolfSSL_shutdown()を直接呼び出した後に基盤となる接続をシャットダウンするか(リソースを節約するため)を選択できます。TLS仕様では、どちらのオプションも許可されています。基盤となる接続を将来再び使用する場合は、ピア間の同期を維持するために、完全な双方向シャットダウン手順を実行する必要があります。wolfSSL_shutdown()は、ブロッキングI/OとノンブロッキングI/Oの両方で動作します。基盤となるI/Oがノンブロッキングの場合、基盤となるI/OがwolfSSL_shutdown()の継続に必要な要求を満たせなかった場合、wolfSSL_shutdown()はエラーを返します。この場合、wolfSSL_get_error()を呼び出すと、SSL_ERROR_WANT_READまたはSSL_ERROR_WANT_WRITEのいずれかが返されます。呼び出し側プロセスは、基盤となるI/Oの準備ができたときに、wolfSSL_shutdown()の呼び出しを繰り返す必要があります。
Parameters:
- ssl wolfSSL_new()で作成されたSSLセッションへのポインタ。
See:
Return:
- SSL_SUCCESSが成功時に返されます。
- SSL_SHUTDOWN_NOT_DONEは、シャットダウンが完了していない場合に返され、関数を再度呼び出す必要があります。
- SSL_FATAL_ERRORは、失敗時に返されます。より具体的なエラーコードについては、wolfSSL_get_error()を呼び出してください。
Example
#include <wolfssl/ssl.h>
int ret = 0;
WOLFSSL* ssl = 0;
...
ret = wolfSSL_shutdown(ssl);
if (ret != 0) {
// SSL接続のシャットダウンに失敗しました
}
function wolfSSL_send
int wolfSSL_send(
WOLFSSL * ssl,
const void * data,
int sz,
int flags
)
この関数は、指定されたフラグを使用して、バッファdataからszバイトをSSL接続sslに書き込みます。必要に応じて、wolfSSL_connect()またはwolfSSL_accept()によってハンドシェイクがまだ実行されていない場合、wolfSSL_send()はSSL/TLSセッションをネゴシエートします。wolfSSL_send()は、ブロッキングI/OとノンブロッキングI/Oの両方で動作します。基盤となるI/Oがノンブロッキングの場合、基盤となるI/OがwolfSSL_sendの継続に必要な要求を満たせなかった場合、wolfSSL_send()は戻ります。この場合、wolfSSL_get_error()を呼び出すと、SSL_ERROR_WANT_READまたはSSL_ERROR_WANT_WRITEのいずれかが返されます。呼び出し側プロセスは、基盤となるI/Oの準備ができたときに、wolfSSL_send()の呼び出しを繰り返す必要があります。基盤となるI/Oがブロッキングの場合、wolfSSL_send()は、サイズszのバッファdataが完全に書き込まれるか、エラーが発生するまで戻りません。
Parameters:
- ssl wolfSSL_new()で作成されたSSLセッションへのポインタ。
- data ピアに送信するデータバッファ。
- sz ピアに送信するデータのサイズ(バイト単位)。
- flags 基盤となる送信操作に使用する送信フラグ。
See:
Return:
- >0は、成功時に書き込まれたバイト数です。
- 0は、失敗時に返されます。具体的なエラーコードについては、wolfSSL_get_error()を呼び出してください。
- SSL_FATAL_ERRORは、エラーが発生した場合、またはノンブロッキングソケットを使用している場合にSSL_ERROR_WANT_READまたはSSL_ERROR_WANT_WRITEエラーが発生し、アプリケーションがwolfSSL_send()を再度呼び出す必要がある場合に返されます。具体的なエラーコードを取得するには、wolfSSL_get_error()を使用してください。
Example
WOLFSSL* ssl = 0;
char msg[64] = "hello wolfssl!";
int msgSz = (int)strlen(msg);
int flags = ... ;
...
input = wolfSSL_send(ssl, msg, msgSz, flags);
if (input != msgSz) {
// wolfSSL_send()が失敗しました
}
function wolfSSL_recv
int wolfSSL_recv(
WOLFSSL * ssl,
void * data,
int sz,
int flags
)
この関数は、指定されたフラグを使用して、SSLセッション(ssl)の内部読み取りバッファからszバイトをバッファdataに読み込みます。読み取られたバイトは、内部受信バッファから削除されます。この関数は、基盤となる読み取り操作のrecvフラグをアプリケーションが設定できる点を除いて、wolfSSL_read()と同じです。必要に応じて、wolfSSL_connect()またはwolfSSL_accept()によってハンドシェイクがまだ実行されていない場合、wolfSSL_recv()はSSL/TLSセッションをネゴシエートします。SSL/TLSプロトコルは、最大サイズ16kBのSSLレコードを使用します(最大レコードサイズは、
Parameters:
- ssl wolfSSL_new()で作成されたSSLセッションへのポインタ。
- data wolfSSL_recv()が読み取ったデータを配置するバッファ。
- sz dataに読み込むバイト数。
- flags 基盤となる受信操作に使用する受信フラグ。
See:
Return:
- >0は、成功時に読み取られたバイト数です。
- 0は、失敗時に返されます。これは、クリーンな(close notifyアラート)シャットダウンによって引き起こされる場合もあれば、単にピアが接続を閉じた場合もあります。具体的なエラーコードについては、wolfSSL_get_error()を呼び出してください。
- SSL_FATAL_ERRORは、エラーが発生した場合、またはノンブロッキングソケットを使用している場合にSSL_ERROR_WANT_READまたはSSL_ERROR_WANT_WRITEエラーが発生し、アプリケーションがwolfSSL_recv()を再度呼び出す必要がある場合に返されます。具体的なエラーコードを取得するには、wolfSSL_get_error()を使用してください。
Example
WOLFSSL* ssl = 0;
char reply[1024];
int flags = ... ;
...
input = wolfSSL_recv(ssl, reply, sizeof(reply), flags);
if (input > 0) {
// バッファ"reply"に"input"バイトが返されました
}
function wolfSSL_get_error
int wolfSSL_get_error(
WOLFSSL * ssl,
int ret
)
この関数は、前回のAPI関数呼び出し(wolfSSL_connect、wolfSSL_accept、wolfSSL_read、wolfSSL_write等)がエラーリターンコード(SSL_FAILURE)になった理由を説明する一意のエラーコードを返します。前回の関数の戻り値は、retを通じてwolfSSL_get_errorに渡されます。wolfSSL_get_errorが呼び出されて一意のエラーコードを返した後、wolfSSL_ERR_error_string()を呼び出して、人間が読めるエラー文字列を取得できます。詳細については、wolfSSL_ERR_error_string()を参照してください。
Parameters:
- ssl wolfSSL_new()で作成されたSSLオブジェクトへのポインタ。
- ret エラーリターンコードになった前回の関数の戻り値。
See:
- wolfSSL_ERR_error_string
- wolfSSL_ERR_error_string_n
- wolfSSL_ERR_print_errors_fp
- wolfSSL_load_error_strings
Return:
- 正常に完了した場合、この関数は前回のAPI関数が失敗した理由を説明する一意のエラーコードを返します。
- SSL_ERROR_NONEは、ret > 0の場合に返されます。ret <= 0の場合、前回のAPIがエラーコードを返したように見えても実際にはエラーが発生していなかった場合に、この値が返されることがあります。例えば、szパラメータがゼロのwolfSSL_read()を呼び出した場合です。wolfSSL_read()からの0の戻り値は通常エラーを示しますが、この場合はエラーは発生していません。その後wolfSSL_get_error()を呼び出すと、SSL_ERROR_NONEが返されます。
Example
int err = 0;
WOLFSSL* ssl;
char buffer[80];
...
err = wolfSSL_get_error(ssl, 0);
wolfSSL_ERR_error_string(err, buffer);
printf("err = %d, %s\n", err, buffer);
function wolfSSL_get_alert_history
int wolfSSL_get_alert_history(
WOLFSSL * ssl,
WOLFSSL_ALERT_HISTORY * h
)
この関数はアラート履歴を取得します。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
- h WOLFSSL構造体のalert_historyメンバーの値を保持するWOLFSSL_ALERT_HISTORY構造体へのポインタ。
See: wolfSSL_get_error
Return: SSL_SUCCESSは、関数が正常に完了したときに返されます。アラート履歴があってもなくても、いずれの場合も戻り値はSSL_SUCCESSです。
Example
WOLFSSL_CTX* ctx = wolfSSL_CTX_new(protocol method);
WOLFSSL* ssl = wolfSSL_new(ctx);
WOLFSSL_ALERT_HISTORY* h;
...
wolfSSL_get_alert_history(ssl, h);
// hにssl->alert_historyの内容のコピーが格納されました
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_get_session
WOLFSSL_SESSION * wolfSSL_get_session(
WOLFSSL * ssl
)
NO_SESSION_CACHE_REFが定義されている場合、この関数はsslで使用されている現在のセッション(WOLFSSL_SESSION)へのポインタを返します。この関数は、WOLFSSL_SESSIONオブジェクトへの非永続的なポインタを返します。返されたポインタは、wolfSSL_freeが呼び出されたときに解放されます。この呼び出しは、現在のセッションを検査または変更するためにのみ使用する必要があります。セッション再開には、wolfSSL_get1_session()を使用することをお勧めします。後方互換性のため、NO_SESSION_CACHE_REFが定義されていない場合、この関数はローカルキャッシュに格納されている永続的なセッションオブジェクトポインタを返します。キャッシュサイズは有限であり、アプリケーションがwolfSSL_set_session()を呼び出すまでに、別のssl接続によってセッションオブジェクトが上書きされるリスクがあります。アプリケーションでNO_SESSION_CACHE_REFを定義し、セッション再開にwolfSSL_get1_session()を使用することをお勧めします。
Parameters:
- ssl wolfSSL_new()で作成されたSSLセッションへのポインタ。
See:
Return:
- pointer 呼び出しが成功した場合、現在のSSLセッションオブジェクトへのポインタを返します。
- NULLは、sslがNULLの場合、SSLセッションキャッシュが無効になっている場合、wolfSSLがセッションIDを利用できない場合、またはミューテックス関数が失敗した場合に返されます。
Example
WOLFSSL* ssl;
WOLFSSL_SESSION* session;
...
session = wolfSSL_get_session(ssl);
if (session == NULL) {
// セッションポインタの取得に失敗しました
}
...
function wolfSSL_flush_sessions
void wolfSSL_flush_sessions(
WOLFSSL_CTX * ctx,
long tm
)
この関数は、期限切れのセッションをセッションキャッシュからフラッシュします。時刻tmは、時刻比較に使用されます。wolfSSLは現在セッションに静的テーブルを使用しているため、フラッシュは不要です。そのため、この関数は現在スタブにすぎません。この関数は、wolfSSLがOpenSSL互換レイヤーでコンパイルされている場合、OpenSSL互換性(SSL_flush_sessions)を提供します。
Parameters:
- ctx wolfSSL_CTX_new()を使用して作成されたWOLFSSL_CTX構造体へのポインタ。
- tm セッション有効期限比較に使用される時刻。
See:
Return: none 戻り値はありません。
Example
WOLFSSL_CTX* ssl;
...
wolfSSL_flush_sessions(ctx, time(0));
function wolfSSL_SetServerID
int wolfSSL_SetServerID(
WOLFSSL * ssl,
const unsigned char * id,
int len,
int newSession
)
この関数は、クライアントセッションをサーバーIDに関連付けます。newSessionフラグがオンの場合、既存のセッションは再利用されません。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
- id WOLFSSL_SESSION構造体のserverIDメンバーにコピーされる定数バイトポインタ。
- len セッションidパラメータの長さを表すint型。
- newSession セッションを再利用するかどうかを示すフラグを表すint型。
See: wolfSSL_set_session
Return:
- SSL_SUCCESSは、関数がエラーなく実行された場合に返されます。
- BAD_FUNC_ARGは、WOLFSSL構造体またはidパラメータがNULLの場合、またはlenが0より大きくない場合に返されます。
Example
WOLFSSL_CTX* ctx = wolfSSL_CTX_new( protocol );
WOLFSSL* ssl = WOLFSSL_new(ctx);
const byte id[MAX_SIZE]; // または動的にスペースを作成
int len = 0; // 長さを初期化
int newSession = 0; // 許可するフラグ
…
int ret = wolfSSL_SetServerID(ssl, id, len, newSession);
if (ret == WOLFSSL_SUCCESS) {
// IDが正常に設定されました
}
function wolfSSL_GetSessionIndex
int wolfSSL_GetSessionIndex(
WOLFSSL * ssl
)
この関数は、WOLFSSL構造体のセッションインデックスを取得します。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
See: wolfSSL_GetSessionAtIndex
Return: int この関数は、WOLFSSL構造体内のsessionIndexを表すint型を返します。
Example
WOLFSSL_CTX_new( protocol method );
WOLFSSL* ssl = WOLFSSL_new(ctx);
...
int sesIdx = wolfSSL_GetSessionIndex(ssl);
if(sesIdx < 0 || sesIdx > sizeof(ssl->sessionIndex)/sizeof(int)){
// インデックス番号が範囲外であり、何かが正しくありません。
}
function wolfSSL_GetSessionAtIndex
int wolfSSL_GetSessionAtIndex(
int idx,
WOLFSSL_SESSION * session
)
この関数はセッションキャッシュの指定されたインデックスにあるセッションを取得し、メモリにコピーします。WOLFSSL_SESSION構造体はセッション情報を保持します。
Parameters:
- idx セッションインデックスを表すint型。
- session WOLFSSL_SESSION構造体へのポインタ。
See:
- UnLockMutex
- LockMutex
- wolfSSL_GetSessionIndex
Return:
- SSL_SUCCESS 関数が正常に実行され、エラーが発生しなかった場合に返されます。
- BAD_MUTEX_E mutexのアンロックまたはロックエラーがあった場合に返されます。
- SSL_FAILURE 関数が正常に実行されなかった場合に返されます。
Example
int idx; // セッションを特定するインデックス。
WOLFSSL_SESSION* session; // コピー先のバッファ。
...
if(wolfSSL_GetSessionAtIndex(idx, session) != SSL_SUCCESS){
// 失敗ケース。
}
function wolfSSL_SESSION_get_peer_chain
WOLFSSL_X509_CHAIN * wolfSSL_SESSION_get_peer_chain(
WOLFSSL_SESSION * session
)
WOLFSSL_SESSION構造体からピア証明書チェーンを返します。
Parameters:
- session WOLFSSL_SESSION構造体へのポインタ。
See:
- wolfSSL_GetSessionAtIndex
- wolfSSL_GetSessionIndex
- AddSession
Return: pointer ピア証明書チェーンを含むWOLFSSL_X509_CHAIN構造体へのポインタ。
Example
WOLFSSL_SESSION* session;
WOLFSSL_X509_CHAIN* chain;
...
chain = wolfSSL_SESSION_get_peer_chain(session);
if(!chain){
// チェーンがありませんでした。失敗ケース。
}
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_SetCertCbCtx
void wolfSSL_SetCertCbCtx(
WOLFSSL * ssl,
void * ctx
)
この関数は検証コールバック用のユーザーCTXオブジェクト情報を格納します。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
- ctx WOLFSSL構造体のverifyCbCtxメンバの値に設定されるvoidポインタ。
See:
Return: none 返り値はありません。
Example
WOLFSSL_CTX* ctx = wolfSSL_CTX_new( method );
WOLFSSL* ssl = wolfSSL_new(ctx);
(void*)ctx;
...
if(ssl != NULL){
wolfSSL_SetCertCbCtx(ssl, ctx);
} else {
// エラーケース、SSLが適切に初期化されていません。
}
function wolfSSL_CTX_SetCertCbCtx
void wolfSSL_CTX_SetCertCbCtx(
WOLFSSL_CTX * ctx,
void * userCtx
)
この関数は検証コールバック用のユーザーCTXオブジェクト情報を格納します。
Parameters:
- ctx WOLFSSL_CTX構造体へのポインタ。
- userCtx WOLFSSL_CTX構造体のverifyCbCtxメンバの値を設定するために使用されるvoidポインタ。
See:
Return: none 返り値はありません。
Example
WOLFSSL_CTX* ctx = wolfSSL_CTX_new( method );
void* userCtx = NULL; // ユーザー定義のコンテキストを割り当て
...
if(ctx != NULL){
wolfSSL_SetCertCbCtx(ctx, userCtx);
} else {
// エラーケース、SSLが適切に初期化されていません。
}
function wolfSSL_pending
int wolfSSL_pending(
WOLFSSL *
)
この関数はSSLオブジェクト内でバッファリングされ、wolfSSL_read()によって読み取り可能な利用可能なバイト数を返します。
Parameters:
- ssl wolfSSL_new()で作成されたSSLセッションへのポインタ。
See:
Return: int この関数は保留中のバイト数を返します。
Example
int pending = 0;
WOLFSSL* ssl = 0;
...
pending = wolfSSL_pending(ssl);
printf("バッファリングされ読み取り可能な%dバイトがあります", pending);
function wolfSSL_load_error_strings
void wolfSSL_load_error_strings(
void
)
この関数はOpenSSL互換性(SSL_load_error_string)のためのものであり、何も動作を行いません。
Parameters:
- none パラメータはありません。
See:
- wolfSSL_get_error
- wolfSSL_ERR_error_string
- wolfSSL_ERR_error_string_n
- wolfSSL_ERR_print_errors_fp
- wolfSSL_load_error_strings
Return: none 返り値はありません。
Example
wolfSSL_load_error_strings();
function wolfSSL_library_init
int wolfSSL_library_init(
void
)
この関数はwolfSSL_CTX_new()内で内部的に呼び出されます。この関数はwolfSSL_Init()のラッパーであり、wolfSSLがOpenSSL互換性レイヤーでコンパイルされた場合のOpenSSL互換性(SSL_library_init)のために存在します。wolfSSL_Init()は、より一般的に使用されるwolfSSL初期化関数です。
Parameters:
- none パラメータはありません。
See:
Return:
- SSL_SUCCESS 呼び出しが成功した場合に返されます。
- SSL_FATAL_ERROR 失敗時に返されます。
Example
int ret = 0;
ret = wolfSSL_library_init();
if (ret != SSL_SUCCESS) {
// wolfSSLの初期化に失敗しました
}
...
function wolfSSL_SetDevId
int wolfSSL_SetDevId(
WOLFSSL * ssl,
int devId
)
この関数はWOLFSSLセッションレベルでDevice Idを設定します。
Parameters:
- ssl wolfSSL_new()で作成されたSSLオブジェクトへのポインタ。
- devId 暗号コールバックまたは非同期ハードウェアで使用するID。使用しない場合はINVALID_DEVID(-2)に設定します。
See:
Return:
- WOLFSSL_SUCCESS 成功時。
- BAD_FUNC_ARG sslがNULLの場合。
Example
WOLFSSL* ssl;
int DevId = -2;
wolfSSL_SetDevId(ssl, devId);
function wolfSSL_CTX_SetDevId
int wolfSSL_CTX_SetDevId(
WOLFSSL_CTX * ctx,
int devId
)
この関数はWOLFSSL_CTXコンテキストレベルでDevice Idを設定します。
Parameters:
- ctx wolfSSL_CTX_new()で作成されたSSLコンテキストへのポインタ。
- devId 暗号コールバックまたは非同期ハードウェアで使用するID。使用しない場合はINVALID_DEVID(-2)に設定します。
See:
Return:
- WOLFSSL_SUCCESS 成功時。
- BAD_FUNC_ARG sslがNULLの場合。
Example
WOLFSSL_CTX* ctx;
int DevId = -2;
wolfSSL_CTX_SetDevId(ctx, devId);
function wolfSSL_CTX_GetDevId
int wolfSSL_CTX_GetDevId(
WOLFSSL_CTX * ctx,
WOLFSSL * ssl
)
この関数はDevice Idを取得します。
Parameters:
- ctx wolfSSL_CTX_new()で作成されたSSLコンテキストへのポインタ。
- ssl wolfSSL_new()で作成されたSSLオブジェクトへのポインタ。
See:
Return:
- devId 成功時。
- INVALID_DEVID sslとctxの両方がNULLの場合。
Example
WOLFSSL_CTX* ctx;
wolfSSL_CTX_GetDevId(ctx, ssl);
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_set_session_secret_cb
int wolfSSL_set_session_secret_cb(
WOLFSSL * ssl,
SessionSecretCb cb,
void * ctx
)
この関数は、セッションシークレットコールバック関数を設定します。SessionSecretCb型は次のシグネチャを持ちます:int (SessionSecretCb)(WOLFSSL ssl, void secret, int secretSz, void* ctx)。WOLFSSL構造体のsessionSecretCbメンバが、パラメータcbに設定されます。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
- cb 上記のシグネチャを持つ関数ポインタであるSessionSecretCb型。
- ctx 保存されるユーザコンテキストへのポインタ。
See: SessionSecretCb
Return:
- SSL_SUCCESS 関数の実行がエラーを返さなかった場合に返されます。
- SSL_FATAL_ERROR WOLFSSL構造体がNULLの場合に返されます。
Example
WOLFSSL_CTX* ctx = wolfSSL_CTX_new( method );
WOLFSSL* ssl = wolfSSL_new(ctx);
// SessionSecretCbのシグネチャ
int SessionSecretCB (WOLFSSL* ssl, void* secret, int* secretSz,
void* ctx) = SessionSecretCb;
…
int wolfSSL_set_session_secret_cb(ssl, SessionSecretCB, (void*)ssl->ctx){
// 関数本体。
}
function wolfSSL_save_session_cache
int wolfSSL_save_session_cache(
const char * fname
)
この関数は、セッションキャッシュをファイルに永続化します。追加のメモリ使用量のため、memsaveは使用しません。
Parameters:
- fname 書き込み用ファイルを指す定数char型ポインタ。
See:
Return:
- SSL_SUCCESS 関数がエラーなく実行された場合に返されます。セッションキャッシュがファイルに書き込まれました。
- SSL_BAD_FILE fnameを開くことができないか、またはそれ以外の理由で破損している場合に返されます。
- FWRITE_ERROR XFWRITEがファイルへの書き込みに失敗した場合に返されます。
- BAD_MUTEX_E mutexロックの失敗があった場合に返されます。
Example
const char* fname;
...
if(wolfSSL_save_session_cache(fname) != SSL_SUCCESS){
// ファイルへの書き込みに失敗しました。
}
function wolfSSL_restore_session_cache
int wolfSSL_restore_session_cache(
const char * fname
)
この関数は、永続的なセッションキャッシュをファイルから復元します。追加のメモリ使用量のため、memstoreは使用しません。
Parameters:
- fname 読み取られる定数char型ポインタファイル入力。
See:
- XFREAD
- XFOPEN
Return:
- SSL_SUCCESS 関数がエラーなく実行された場合に返されます。
- SSL_BAD_FILE 関数に渡されたファイルが破損しており、XFOPENで開くことができなかった場合に返されます。
- FREAD_ERROR ファイルがXFREADからの読み取りエラーを持っていた場合に返されます。
- CACHE_MATCH_ERROR セッションキャッシュヘッダのマッチングに失敗した場合に返されます。
- BAD_MUTEX_E mutexロックの失敗があった場合に返されます。
Example
const char *fname;
...
if(wolfSSL_restore_session_cache(fname) != SSL_SUCCESS){
// 失敗ケースです。関数はSSL_SUCCESSを返しませんでした。
}
function wolfSSL_memsave_session_cache
int wolfSSL_memsave_session_cache(
void * mem,
int sz
)
この関数は、セッションキャッシュをメモリに永続化します。
Parameters:
- mem メモリコピーXMEMCPY()の宛先を表すvoid型ポインタ。
- sz memのサイズを表すint型。
See:
Return:
- SSL_SUCCESS 関数がエラーなく実行された場合に返されます。セッションキャッシュがメモリに正常に永続化されました。
- BAD_MUTEX_E mutexロックエラーがあった場合に返されます。
- BUFFER_E バッファサイズが小さすぎた場合に返されます。
Example
void* mem;
int sz; // メモリバッファの最大サイズ。
…
if(wolfSSL_memsave_session_cache(mem, sz) != SSL_SUCCESS){
// 失敗ケースです。セッションキャッシュをメモリに永続化できませんでした。
}
function wolfSSL_memrestore_session_cache
int wolfSSL_memrestore_session_cache(
const void * mem,
int sz
)
この関数は、永続的なセッションキャッシュをメモリから復元します。
Parameters:
- mem 復元のソースを含む定数void型ポインタ。
- sz メモリバッファのサイズを表す整数。
See: wolfSSL_save_session_cache
Return:
- SSL_SUCCESS 関数がエラーなく実行された場合に返されます。
- BUFFER_E メモリバッファが小さすぎる場合に返されます。
- BAD_MUTEX_E セッションキャッシュのmutexロックに失敗した場合に返されます。
- CACHE_MATCH_ERROR セッションキャッシュヘッダのマッチングに失敗した場合に返されます。
Example
const void* memoryFile;
int szMf;
...
if(wolfSSL_memrestore_session_cache(memoryFile, szMf) != SSL_SUCCESS){
// 失敗ケースです。SSL_SUCCESSが返されませんでした。
}
function wolfSSL_get_session_cache_memsize
int wolfSSL_get_session_cache_memsize(
void
)
この関数は、セッションキャッシュの保存バッファがどのくらい大きくあるべきかを返します。
Parameters:
- none パラメータなし。
See: wolfSSL_memrestore_session_cache
Return: int この関数は、セッションキャッシュの保存バッファのサイズを表す整数を返します。
Example
int sz = // エラーチェックのための最小サイズ;
...
if(sz < wolfSSL_get_session_cache_memsize()){
// メモリバッファが小さすぎます。
}
function wolfSSL_CTX_save_cert_cache
int wolfSSL_CTX_save_cert_cache(
WOLFSSL_CTX * ctx,
const char * fname
)
この関数は、証明書キャッシュをメモリからファイルに書き込みます。
Parameters:
- ctx 証明書情報を保持するWOLFSSL_CTX構造体へのポインタ。
- fname 書き込み用ファイルを指す定数char型ポインタ。
See:
- CM_SaveCertCache
- DoMemSaveCertCache
Return:
- SSL_SUCCESS CM_SaveCertCacheが正常に終了した場合に返されます。
- BAD_FUNC_ARG いずれかの引数がNULLの場合に返されます。
- SSL_BAD_FILE 証明書キャッシュ保存ファイルを開くことができなかった場合に返されます。
- BAD_MUTEX_E ロックmutexが失敗した場合に返されます。
- MEMORY_E メモリの割り当てに失敗した場合に返されます。
- FWRITE_ERROR 証明書キャッシュファイルの書き込みに失敗しました。
Example
WOLFSSL_CTX* ctx = WOLFSSL_CTX_new( protocol def );
const char* fname;
...
if(wolfSSL_CTX_save_cert_cache(ctx, fname)){
// ファイルが書き込まれました。
}
function wolfSSL_CTX_restore_cert_cache
int wolfSSL_CTX_restore_cert_cache(
WOLFSSL_CTX * ctx,
const char * fname
)
この関数は、証明書キャッシュをファイルから永続化します。
Parameters:
- ctx 証明書情報を保持するWOLFSSL_CTX構造体へのポインタ。
- fname 読み取り用ファイルを指す定数char型ポインタ。
See:
- CM_RestoreCertCache
- XFOPEN
Return:
- SSL_SUCCESS 関数CM_RestoreCertCacheが正常に実行された場合に返されます。
- SSL_BAD_FILE XFOPENがXBADFILEを返した場合に返されます。ファイルが破損しています。
- MEMORY_E 一時バッファに割り当てられたメモリが失敗した場合に返されます。
- BAD_FUNC_ARG fnameまたはctxがNULL値を持つ場合に返されます。
Example
WOLFSSL_CTX* ctx = wolfSSL_CTX_new( protocol method );
WOLFSSL* ssl = wolfSSL_new(ctx);
const char* fname = "ファイルへのパス";
...
if(wolfSSL_CTX_restore_cert_cache(ctx, fname)){
// 実行が成功したかどうかを確認します。
}
function wolfSSL_CTX_memsave_cert_cache
int wolfSSL_CTX_memsave_cert_cache(
WOLFSSL_CTX * ctx,
void * mem,
int sz,
int * used
)
この関数は、証明書キャッシュをメモリに永続化します。
Parameters:
- ctx wolfSSL_CTX_new()を使用して作成されたWOLFSSL_CTX構造体へのポインタ。
- mem 宛先(出力バッファ)へのvoid型ポインタ。
- sz 出力バッファのサイズ。
- used 証明書キャッシュヘッダのサイズへのポインタ。
See:
- DoMemSaveCertCache
- GetCertCacheMemSize
- CM_MemRestoreCertCache
- CM_GetCertCacheMemSize
Return:
- SSL_SUCCESS 関数の実行が成功し、エラーが発生しなかった場合に返されます。
- BAD_MUTEX_E WOLFSSL_CERT_MANAGERメンバcaLockが0(ゼロ)でなかったmutexエラー。
- BAD_FUNC_ARG ctx、mem、またはusedがNULLの場合、またはszが0(ゼロ)以下の場合に返されます。
- BUFFER_E 出力バッファmemが小さすぎました。
Example
WOLFSSL_CTX* ctx = WOLFSSL_CTX_new( protocol );
void* mem;
int sz;
int* used;
...
if(wolfSSL_CTX_memsave_cert_cache(ctx, mem, sz, used) != SSL_SUCCESS){
// 関数がエラーを返しました。
}
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_get_cert_cache_memsize
int wolfSSL_CTX_get_cert_cache_memsize(
WOLFSSL_CTX * ctx
)
証明書キャッシュの保存バッファに必要なサイズを返します。
Parameters:
- ctx wolfSSL_CTX_new()を使用して作成されたwolfSSL_CTX構造体へのポインタ。
See: CM_GetCertCacheMemSize
Return:
- int 成功時にメモリサイズを表す整数値が返されます。
- BAD_FUNC_ARG WOLFSSL_CTX構造体がNULLの場合に返されます。
- BAD_MUTEX_E mutexロックエラーがあった場合に返されます。
Example
WOLFSSL_CTX* ctx = WOLFSSL_CTX_new(protocol);
...
int certCacheSize = wolfSSL_CTX_get_cert_cache_memsize(ctx);
if(certCacheSize != BAD_FUNC_ARG || certCacheSize != BAD_MUTEX_E){
// メモリサイズの取得に成功しました。
}
function wolfSSL_CTX_set_cipher_list
int wolfSSL_CTX_set_cipher_list(
WOLFSSL_CTX * ctx,
const char * list
)
この関数は、指定されたWOLFSSL_CTXに対する暗号スイートリストを設定します。この暗号スイートリストは、このコンテキストを使用して作成された新しいSSLセッション(WOLFSSL)のデフォルトリストになります。リスト内の暗号は、優先度の高い順から低い順に並べる必要があります。wolfSSL_CTX_set_cipher_list()を呼び出すたびに、関数が呼び出されるたびに、特定のSSLコンテキストの暗号スイートリストが提供されたリストにリセットされます。暗号スイートリストであるlistは、nullで終端されたテキスト文字列であり、コロン区切りのリストです。例えば、listの1つの値は「DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:AES256-SHA256」となる可能性があります。有効な暗号値は、src/internal.cのcipher_names[]配列からの完全な名前値です(有効な暗号値の明確なリストについては、src/internal.cを確認してください)。
Parameters:
- ctx wolfSSL_CTX_new()で作成されたSSLコンテキストへのポインタ。
- list 指定されたSSLコンテキストで使用する暗号スイートのnullで終端されたテキスト文字列およびコロン区切りリスト。
See:
Return:
- SSL_SUCCESS 関数の実行が成功した場合に返されます。
- SSL_FAILURE 失敗した場合に返されます。
Example
WOLFSSL_CTX* ctx = 0;
...
ret = wolfSSL_CTX_set_cipher_list(ctx,
"DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:AES256-SHA256");
if (ret != SSL_SUCCESS) {
// 暗号スイートリストの設定に失敗しました。
}
function wolfSSL_set_cipher_list
int wolfSSL_set_cipher_list(
WOLFSSL * ssl,
const char * list
)
この関数は、指定されたWOLFSSLオブジェクト(SSLセッション)に対する暗号スイートリストを設定します。リスト内の暗号は、優先度の高い順から低い順に並べる必要があります。wolfSSL_set_cipher_list()を呼び出すたびに、関数が呼び出されるたびに、特定のSSLセッションの暗号スイートリストが提供されたリストにリセットされます。暗号スイートリストであるlistは、nullで終端されたテキスト文字列であり、コロン区切りのリストです。例えば、listの1つの値は「DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:AES256-SHA256」となる可能性があります。有効な暗号値は、src/internal.cのcipher_names[]配列からの完全な名前値です(有効な暗号値の明確なリストについては、src/internal.cを確認してください)。
Parameters:
- ssl wolfSSL_new()で作成されたSSLセッションへのポインタ。
- list null終端テキスト文字列であり、指定されたSSLセッションで使用する暗号スイートのコロン区切りリスト。
See:
Return:
- SSL_SUCCESS 関数が正常に完了すると返されます。
- SSL_FAILURE 失敗時に返されます。
Example
int ret = 0;
WOLFSSL* ssl = 0;
...
ret = wolfSSL_set_cipher_list(ssl,
"DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:AES256-SHA256");
if (ret != SSL_SUCCESS) {
// 暗号スイートリストの設定に失敗
}
function wolfSSL_dtls_set_using_nonblock
void wolfSSL_dtls_set_using_nonblock(
WOLFSSL * ssl,
int nonblock
)
この関数は、WOLFSSL DTLSオブジェクトに対して、下層のUDP I/Oがノンブロッキングであることを通知します。アプリケーションがWOLFSSLオブジェクトを作成した後、それをノンブロッキングUDPソケットと共に使用する場合は、wolfSSL_dtls_set_using_nonblock()を呼び出してください。これにより、WOLFSSLオブジェクトは、EWOULDBLOCKを受け取ることがタイムアウトではなく、recvfrom呼び出しがブロックすることを意味すると認識できます。
Parameters:
- ssl wolfSSL_new()で作成されたDTLSセッションへのポインタ。
- nonblock WOLFSSLオブジェクトのノンブロッキングフラグを設定するための値。ノンブロッキングを指定する場合は1を、そうでない場合は0を使用してください。
See:
Return: none 戻り値はありません。
Example
WOLFSSL* ssl = 0;
...
wolfSSL_dtls_set_using_nonblock(ssl, 1);
function wolfSSL_dtls_get_using_nonblock
int wolfSSL_dtls_get_using_nonblock(
WOLFSSL * ssl
)
この関数により、アプリケーションはwolfSSLがUDPでノンブロッキングI/Oを使用しているかどうかを判定できます。wolfSSLがノンブロッキングI/Oを使用している場合、この関数は1を返し、それ以外の場合は0を返します。アプリケーションがWOLFSSLオブジェクトを作成した後、それをノンブロッキングUDPソケットと共に使用する場合は、wolfSSL_dtls_set_using_nonblock()を呼び出してください。これにより、WOLFSSLオブジェクトは、EWOULDBLOCKを受け取ることがタイムアウトではなく、recvfrom呼び出しがブロックすることを意味すると認識できます。この関数はDTLSセッションにのみ意味があります。
Parameters:
- ssl wolfSSL_new()で作成されたDTLSセッションへのポインタ。
See:
Return:
- 0 下層のI/Oがブロッキングです。
- 1 下層のI/Oがノンブロッキングです。
Example
int ret = 0;
WOLFSSL* ssl = 0;
...
ret = wolfSSL_dtls_get_using_nonblock(ssl);
if (ret == 1) {
// 下層のI/Oはノンブロッキング
}
...
function wolfSSL_dtls_get_current_timeout
int wolfSSL_dtls_get_current_timeout(
WOLFSSL * ssl
)
この関数は、WOLFSSLオブジェクトの現在のタイムアウト値を秒単位で返します。ノンブロッキングソケットを使用する場合、ユーザコード内の何かが、利用可能な受信データをいつチェックするか、およびどのくらい待機しているかを決定する必要があります。この関数が返す値は、アプリケーションがどのくらい待機すべきかを示します。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
See:
Return:
- seconds 現在のDTLSタイムアウト値(秒単位)。
- NOT_COMPILED_IN wolfSSLがDTLSサポート付きでビルドされていない場合。
Example
int timeout = 0;
WOLFSSL* ssl;
...
timeout = wolfSSL_get_dtls_current_timeout(ssl);
printf("DTLS timeout (sec) = %d\n", timeout);
function wolfSSL_dtls13_use_quick_timeout
int wolfSSL_dtls13_use_quick_timeout(
WOLFSSL * ssl
)
この関数は、アプリケーションがより短いタイムアウトを設定すべき場合にtrueを返します。ノンブロッキングソケットを使用する場合、ユーザコード内の何かが、利用可能なデータをいつチェックするか、およびどのくらい待機する必要があるかを決定する必要があります。この関数がtrueを返す場合、ライブラリはすでに通信の中断を検出していますが、他のピアからのメッセージがまだ転送中である可能性に備えて、もう少し待機したいことを意味します。このタイマーの値を微調整するのはアプリケーション次第であり、適切な値はdtls_get_current_timeout() / 4かもしれません。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
See:
- wolfSSL_dtls
- wolfSSL_dtls_get_peer
- wolfSSL_dtls_got_timeout
- wolfSSL_dtls_set_peer
- wolfSSL_dtls13_set_send_more_acks
Return: true アプリケーションコードがより短いタイムアウトを設定すべき場合。
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
)
この関数は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_dtls_set_timeout_max
int wolfSSL_dtls_set_timeout_max(
WOLFSSL * ssl,
int
)
この関数は最大dtlsタイムアウトを設定します。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
- timeout dtls最大タイムアウトを表すint型の値。
See:
Return:
- SSL_SUCCESS 関数がエラーなく実行された場合に返されます。
- BAD_FUNC_ARG WOLFSSL構造体がNULLであるか、timeout引数が0より大きくないか、またはWOLFSSL構造体のdtls_timeout_initメンバより小さい場合に返されます。
Example
WOLFSSL_CTX* ctx = wolfSSL_CTX_new( method );
WOLFSSL* ssl = wolfSSL_new(ctx);
int timeout = TIMEOUTVAL;
...
int ret = wolfSSL_dtls_set_timeout_max(ssl);
if(!ret){
// 最大タイムアウトの設定に失敗
}
function wolfSSL_dtls_got_timeout
int wolfSSL_dtls_got_timeout(
WOLFSSL * ssl
)
DTLSでノンブロッキングソケットを使用する場合、制御コードが送信がタイムアウトしたと判断したときに、この関数をWOLFSSLオブジェクトに対して呼び出す必要があります。この関数は、タイムアウト値の調整を含め、最後の送信を再試行するために必要なアクションを実行します。時間が経過しすぎた場合、失敗が返されます。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
See:
Return:
- SSL_SUCCESS 成功時に返されます。
- SSL_FATAL_ERROR ピアからの応答なしで再送信またはタイムアウトが多すぎた場合に返されます。
- NOT_COMPILED_IN wolfSSLがDTLSサポート付きでコンパイルされていない場合に返されます。
Example
使用例については以下のファイルを参照してください:
<wolfssl_root>/examples/client/client.c
<wolfssl_root>/examples/server/server.c
function wolfSSL_dtls_retransmit
int wolfSSL_dtls_retransmit(
WOLFSSL * ssl
)
DTLSでノンブロッキングソケットを使用する場合、この関数は予想されるタイムアウト値と再送信カウントを無視して、最後のハンドシェイクフライトを再送信します。これは、DTLSを使用していて、タイムアウトと再試行回数さえも管理する必要があるアプリケーションに役立ちます。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
See:
Return:
- SSL_SUCCESS 成功時に返されます。
- SSL_FATAL_ERROR ピアからの応答なしで再送信またはタイムアウトが多すぎた場合に返されます。
Example
int ret = 0;
WOLFSSL* ssl;
...
ret = wolfSSL_dtls_retransmit(ssl);
function wolfSSL_dtls
int wolfSSL_dtls(
WOLFSSL * ssl
)
この関数は、SSLセッションがDTLSを使用するように設定されているかどうかを判定するために使用されます。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
See:
- wolfSSL_dtls_get_current_timeout
- wolfSSL_dtls_get_peer
- wolfSSL_dtls_got_timeout
- wolfSSL_dtls_set_peer
Return:
- 1 SSLセッション(ssl)がDTLSを使用するように設定されている場合、この関数は1を返します。
- 0 それ以外の場合。
Example
int ret = 0;
WOLFSSL* ssl;
...
ret = wolfSSL_dtls(ssl);
if (ret) {
// SSLセッションはDTLSを使用するように設定されている
}
function wolfSSL_dtls_set_peer
int wolfSSL_dtls_set_peer(
WOLFSSL * ssl,
void * peer,
unsigned int peerSz
)
この関数は、DTLSピアpeer(sockaddr_in)をサイズpeerSzで設定します。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
- peer ピアのsockaddr_in構造体へのポインタ。NULLの場合、ssl内のピア情報がクリアされます。
- peerSz peerが指すsockaddr_in構造体のサイズ。0の場合、ssl内のピア情報がクリアされます。
See:
- wolfSSL_dtls_get_current_timeout
- wolfSSL_dtls_set_pending_peer
- wolfSSL_dtls_get_peer
- wolfSSL_dtls_got_timeout
- wolfSSL_dtls
Return:
- SSL_SUCCESS 成功時に返されます。
- SSL_FAILURE 失敗時に返されます。
- SSL_NOT_IMPLEMENTED wolfSSLがDTLSサポート付きでコンパイルされていない場合に返されます。
Example
int ret = 0;
WOLFSSL* ssl;
sockaddr_in addr;
...
ret = wolfSSL_dtls_set_peer(ssl, &addr, sizeof(addr));
if (ret != SSL_SUCCESS) {
// DTLSピアの設定に失敗
}
function wolfSSL_dtls_set_pending_peer
int wolfSSL_dtls_set_pending_peer(
WOLFSSL * ssl,
void * peer,
unsigned int peerSz
)
この関数は、保留中のDTLSピアpeer(sockaddr_in)をサイズpeerSzで設定します。これにより、次のレコードの保護を正常に解除したときに通常のピアにアップグレードされる保留中のピアが設定されます。これは、ピアのアドレスが変更される可能性があるシナリオで、オフパス攻撃者がピアアドレスを変更するのを防ぐのに役立ちます。これは、新しいピアアドレスへのシームレスで安全な移行を可能にするために、Connection IDと共に使用する必要があります。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
- peer ピアのsockaddr_in構造体へのポインタ。NULLの場合、ssl内のピア情報がクリアされます。
- peerSz peerが指すsockaddr_in構造体のサイズ。0の場合、ssl内のピア情報がクリアされます。
See:
- wolfSSL_dtls_get_current_timeout
- wolfSSL_dtls_set_peer
- wolfSSL_dtls_get_peer
- wolfSSL_dtls_got_timeout
- wolfSSL_dtls
Return:
- SSL_SUCCESS 成功時に返されます。
- SSL_FAILURE 失敗時に返されます。
- SSL_NOT_IMPLEMENTED wolfSSLがDTLSサポート付きでコンパイルされていない場合に返されます。
Example
int ret = 0;
WOLFSSL* ssl;
sockaddr_in addr;
...
ret = wolfSSL_dtls_set_pending_peer(ssl, &addr, sizeof(addr));
if (ret != SSL_SUCCESS) {
// DTLSピアの設定に失敗
}
function wolfSSL_dtls_get_peer
int wolfSSL_dtls_get_peer(
WOLFSSL * ssl,
void * peer,
unsigned int * peerSz
)
この関数は、現在のDTLSピアのsockaddr_in(サイズpeerSz)を取得します。この関数はpeerSzを、SSLセッションに格納されている実際のDTLSピアサイズと比較します。ピアがpeerに収まる場合、ピアのsockaddr_inがpeerにコピーされ、peerSzがpeerのサイズに設定されます。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
- peer ピアのsockaddr_in構造体を格納するメモリ位置へのポインタ。
- peerSz 入出力サイズ。入力として、peerが指す割り当てられたメモリのサイズ。出力として、peerが指す実際のsockaddr_in構造体のサイズ。
See:
Return:
- SSL_SUCCESS 成功時に返されます。
- SSL_FAILURE 失敗時に返されます。
- SSL_NOT_IMPLEMENTED wolfSSLがDTLSサポート付きでコンパイルされていない場合に返されます。
Example
int ret = 0;
WOLFSSL* ssl;
sockaddr_in addr;
... ret = wolfSSL_dtls_get_peer(ssl, &addr, sizeof(addr));
if (ret != SSL_SUCCESS) {
// DTLSピアの取得に失敗しました
}
function wolfSSL_dtls_get0_peer
int wolfSSL_dtls_get0_peer(
WOLFSSL * ssl,
const void ** peer,
unsigned int * peerSz
)
この関数は現在のDTLSピアのsockaddr_in(サイズpeerSz)を取得します。これはwolfSSL_dtls_get_peer()のゼロコピー代替です。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
- peer ピアアドレスを保持する内部バッファを返すためのポインタ。
- peerSz peerが指す実際のsockaddr_in構造体のサイズを出力します。
See:
Return:
- SSL_SUCCESS 成功時に返されます。
- SSL_FAILURE 失敗時に返されます。
- SSL_NOT_IMPLEMENTED wolfSSLがDTLSサポートでコンパイルされていない場合に返されます。
Example
int ret = 0;
WOLFSSL* ssl;
sockaddr_in* addr;
unsigned int addrSz;
...
ret = wolfSSL_dtls_get_peer(ssl, &addr, &addrSz);
if (ret != SSL_SUCCESS) {
// DTLSピアの取得に失敗しました
}
function wolfSSL_ERR_error_string
char * wolfSSL_ERR_error_string(
unsigned long errNumber,
char * data
)
この関数はwolfSSL_get_error()によって返されたエラーコードを、より人間が読みやすいエラー文字列に変換します。errNumberはwolfSSL_get_error()によって返されたエラーコードであり、dataはエラー文字列が配置される格納バッファです。dataの最大長はデフォルトで80文字であり、wolfssl/wolfcrypt/error.hのMAX_ERROR_SZで定義されています。
Parameters:
- errNumber wolfSSL_get_error()によって返されたエラーコード。
- data errNumberに一致する人間が読みやすいエラー文字列を含む出力バッファ。
See:
Return:
- success 正常に完了した場合、この関数はdataで返されるのと同じ文字列を返します。
- failure 失敗時には、この関数は適切な失敗理由msgを含む文字列を返します。
Example
int err = 0;
WOLFSSL* ssl;
char buffer[80];
...
err = wolfSSL_get_error(ssl, 0);
wolfSSL_ERR_error_string(err, buffer);
printf("err = %d, %s\n", err, buffer);
function wolfSSL_ERR_error_string_n
void wolfSSL_ERR_error_string_n(
unsigned long e,
char * buf,
unsigned long len
)
この関数はwolfSSL_ERR_error_string()のバージョンであり、lenはbufに書き込まれる最大文字数を指定します。wolfSSL_ERR_error_string()と同様に、この関数はwolfSSL_get_error()から返されたエラーコードをより人間が読みやすいエラー文字列に変換します。人間が読みやすい文字列はbufに配置されます。
Parameters:
- e wolfSSL_get_error()によって返されたエラーコード。
- buff eに一致する人間が読みやすいエラー文字列を含む出力バッファ。
- len bufに書き込まれる最大文字数。
See:
Return: none 返り値はありません。
Example
int err = 0;
WOLFSSL* ssl;
char buffer[80];
...
err = wolfSSL_get_error(ssl, 0);
wolfSSL_ERR_error_string_n(err, buffer, 80);
printf("err = %d, %s\n", err, buffer);
function wolfSSL_get_shutdown
int wolfSSL_get_shutdown(
const WOLFSSL * ssl
)
この関数はOptions構造体のcloseNotify、connReset、またはsentNotifyメンバのシャットダウン条件をチェックします。Options構造体はWOLFSSL構造体内にあります。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体への定数ポインタ。
See: wolfSSL_SESSION_free
Return:
- 1 SSL_SENT_SHUTDOWNが返されます。
- 2 SSL_RECEIVED_SHUTDOWNが返されます。
Example
#include <wolfssl/ssl.h>
WOLFSSL_CTX* ctx = WOLFSSL_CTX_new( protocol method );
WOLFSSL* ssl = WOLFSSL_new(ctx);
…
int ret;
ret = wolfSSL_get_shutdown(ssl);
if(ret == 1){
// SSL_SENT_SHUTDOWN
} else if(ret == 2){
// SSL_RECEIVED_SHUTDOWN
} else {
// 致命的エラー。
}
function wolfSSL_session_reused
int wolfSSL_session_reused(
WOLFSSL * ssl
)
この関数はoptions構造体のresumingメンバを返します。このフラグはセッションを再利用するかどうかを示します。再利用しない場合、新しいセッションを確立する必要があります。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
See:
- wolfSSL_SESSION_free
- wolfSSL_GetSessionIndex
- wolfSSL_memsave_session_cache
Return: この関数はセッション再利用のフラグを表すOptions構造体に保持されたint型を返します。
Example
WOLFSSL* ssl = wolfSSL_new(ctx);
…
if(!wolfSSL_session_reused(sslResume)){
// セッション再利用は許可されていません。
}
function wolfSSL_is_init_finished
int wolfSSL_is_init_finished(
WOLFSSL * ssl
)
この関数は接続が確立されているかどうかをチェックします。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
See:
- wolfSSL_set_accept_state
- wolfSSL_get_keys
- wolfSSL_set_shutdown
Return:
- 0 接続が確立されていない場合に返されます、つまりWOLFSSL構造体がNULLまたはハンドシェイクが完了していない場合。
- 1 接続が確立されている場合に返されます、つまりWOLFSSLハンドシェイクが完了している場合。
EXAMPLE
#include <wolfssl/ssl.h>
WOLFSSL_CTX* ctx = wolfSSL_CTX_new( protocol method );
WOLFSSL* ssl = wolfSSL_new(ctx);
...
if(wolfSSL_is_init_finished(ssl)){
// ハンドシェイクが完了し、接続が確立されています
}
function wolfSSL_get_version
const char * wolfSSL_get_version(
WOLFSSL * ssl
)
使用されているSSLバージョンを文字列として返します。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
See: wolfSSL_lib_version
Return:
- "SSLv3" SSLv3を使用しています
- "TLSv1" TLSv1を使用しています
- "TLSv1.1" TLSv1.1を使用しています
- "TLSv1.2" TLSv1.2を使用しています
- "TLSv1.3" TLSv1.3を使用しています
- "DTLS" DTLSを使用しています
- "DTLSv1.2" DTLSv1.2を使用しています
- "unknown" 使用されているTLSのバージョンを判定する際に問題が発生しました。
Example
wolfSSL_Init();
WOLFSSL_CTX* ctx;
WOLFSSL* ssl;
WOLFSSL_METHOD method = // 何らかのwolfSSLメソッド
ctx = wolfSSL_CTX_new(method);
ssl = wolfSSL_new(ctx);
printf(wolfSSL_get_version("Using version: %s", ssl));
function wolfSSL_get_current_cipher_suite
int wolfSSL_get_current_cipher_suite(
WOLFSSL * ssl
)
sslセッションが使用している現在の暗号スイートを返します。
Parameters:
- ssl チェックするSSLセッション。
See:
Return:
- ssl->options.cipherSuite 現在の暗号スイートを表す整数。
- 0 提供されたsslセッションがnullです。
Example
wolfSSL_Init();
WOLFSSL_CTX* ctx;
WOLFSSL* ssl;
WOLFSSL_METHOD method = // 何らかのwolfSSLメソッド
ctx = wolfSSL_CTX_new(method);
ssl = wolfSSL_new(ctx);
if(wolfSSL_get_current_cipher_suite(ssl) == 0)
{
// 暗号スイートの取得エラー
}
function wolfSSL_get_current_cipher
WOLFSSL_CIPHER * wolfSSL_get_current_cipher(
WOLFSSL * ssl
)
この関数はsslセッション内の現在の暗号へのポインタを返します。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
See:
- wolfSSL_get_cipher
- wolfSSL_get_cipher_name_internal
- wolfSSL_get_cipher_name
Return:
- この関数はWOLFSSL構造体のcipherメンバのアドレスを返します。これはWOLFSSL_CIPHER構造体へのポインタです。
- NULL WOLFSSL構造体がNULLの場合に返されます。
Example
WOLFSSL_CTX* ctx = wolfSSL_CTX_new( protocol method );
WOLFSSL* ssl = wolfSSL_new(ctx);
…
WOLFSSL_CIPHER* cipherCurr = wolfSSL_get_current_cipher;
if(!cipherCurr){
// 失敗ケース。
} else {
// 暗号がcipherCurrに返されました
}
function wolfSSL_CIPHER_get_name
const char * wolfSSL_CIPHER_get_name(
const WOLFSSL_CIPHER * cipher
)
この関数はSSLオブジェクト内の暗号スイートを利用可能なスイートと照合し、文字列表現を返します。
Parameters:
- cipher WOLFSSL_CIPHER構造体への定数ポインタ。
See:
- wolfSSL_get_cipher
- wolfSSL_get_current_cipher
- wolfSSL_get_cipher_name_internal
- wolfSSL_get_cipher_name
Return:
- string この関数は一致した暗号スイートの文字列表現を返します。
- none 一致するスイートがない場合は"None"を返します。
Example
// DHE_RSA ...の形式で暗号名を取得します
const char* wolfSSL_get_cipher_name_internal(WOLFSSL* ssl){
WOLFSSL_CIPHER* cipher;
const char* fullName;
…
cipher = wolfSSL_get_curent_cipher(ssl);
fullName = wolfSSL_CIPHER_get_name(cipher);
if(fullName){
// 返された暗号の健全性チェック
}
function wolfSSL_get_cipher
const char * wolfSSL_get_cipher(
WOLFSSL *
)
この関数はSSLオブジェクト内の暗号スイートを利用可能なスイートと照合します。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
See:
Return: この関数は一致したスイートの文字列値を返します。一致するスイートがない場合は"None"を返します。
Example
#ifdef WOLFSSL_DTLS
…
// 有効なスイートが使用されていることを確認
if(wolfSSL_get_cipher(ssl) == NULL){
WOLFSSL_MSG("インポートされた暗号スイートと一致しません");
return MATCH_SUITE_ERROR;
}
…
#endif // WOLFSSL_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_BIO_get_mem_data
int wolfSSL_BIO_get_mem_data(
WOLFSSL_BIO * bio,
void * p
)
これは、内部メモリバッファの先頭にバイトポインタを設定するために使用されます。
Parameters:
- bio メモリバッファを取得するWOLFSSL_BIO構造体。
- p メモリバッファに設定するバイトポインタ。
See:
- wolfSSL_BIO_new
- wolfSSL_BIO_s_mem
- wolfSSL_BIO_set_fp
- wolfSSL_BIO_free
Return:
- size 成功時、バッファのサイズが返されます。
- SSL_FATAL_ERROR エラーケースが発生した場合。
Example
WOLFSSL_BIO* bio;
const byte* p;
int ret;
bio = wolfSSL_BIO_new(wolfSSL_BIO_s_mem());
ret = wolfSSL_BIO_get_mem_data(bio, &p);
// ret値を確認
function wolfSSL_BIO_set_fd
long wolfSSL_BIO_set_fd(
WOLFSSL_BIO * b,
int fd,
int flag
)
bioが使用するファイルディスクリプタを設定します。
Parameters:
- bio fdを設定するWOLFSSL_BIO構造体。
- fd 使用するファイルディスクリプタ。
- closeF fdをクローズする際の動作フラグ。
See:
- wolfSSL_BIO_new
- wolfSSL_BIO_free
Return: SSL_SUCCESS(1) 成功時。
Example
WOLFSSL_BIO* bio;
int fd;
// bioをセットアップ
wolfSSL_BIO_set_fd(bio, fd, BIO_NOCLOSE);
function wolfSSL_BIO_set_close
int wolfSSL_BIO_set_close(
WOLFSSL_BIO * b,
long flag
)
クローズフラグを設定します。これは、BIOが解放される際にI/Oストリームをクローズすべきかを示すために使用されます。
Parameters:
- bio WOLFSSL_BIO構造体。
- flag I/Oストリームをクローズする際の動作フラグ。
See:
- wolfSSL_BIO_new
- wolfSSL_BIO_free
Return: SSL_SUCCESS(1) 成功時。
Example
WOLFSSL_BIO* bio;
// bioをセットアップ
wolfSSL_BIO_set_close(bio, BIO_NOCLOSE);
function wolfSSL_BIO_s_socket
WOLFSSL_BIO_METHOD * wolfSSL_BIO_s_socket(
void
)
これは、BIO_SOCKETタイプのWOLFSSL_BIO_METHODを取得するために使用されます。
Parameters:
- none パラメータなし。
See:
- wolfSSL_BIO_new
- wolfSSL_BIO_s_mem
Return: WOLFSSL_BIO_METHOD ソケットタイプであるWOLFSSL_BIO_METHOD構造体へのポインタ。
Example
WOLFSSL_BIO* bio;
bio = wolfSSL_BIO_new(wolfSSL_BIO_s_socket);
function wolfSSL_BIO_set_write_buf_size
int wolfSSL_BIO_set_write_buf_size(
WOLFSSL_BIO * b,
long size
)
これは、WOLFSSL_BIOの書き込みバッファのサイズを設定するために使用されます。書き込みバッファが以前に設定されていた場合、この関数はサイズをリセットする際にそれを解放します。これは、読み取りと書き込みのインデックスを0にリセットする点でwolfSSL_BIO_resetに似ています。
Parameters:
- bio fdを設定するWOLFSSL_BIO構造体。
- size 割り当てるバッファのサイズ。
See:
- wolfSSL_BIO_new
- wolfSSL_BIO_s_mem
- wolfSSL_BIO_free
Return:
- SSL_SUCCESS 書き込みバッファの設定に成功した場合。
- SSL_FAILURE エラーケースが発生した場合。
Example
WOLFSSL_BIO* bio;
int ret;
bio = wolfSSL_BIO_new(wolfSSL_BIO_s_mem());
ret = wolfSSL_BIO_set_write_buf_size(bio, 15000);
// 戻り値を確認
function wolfSSL_BIO_make_bio_pair
int wolfSSL_BIO_make_bio_pair(
WOLFSSL_BIO * b1,
WOLFSSL_BIO * b2
)
これは、2つのbioをペアにするために使用されます。ペアになったbioは双方向パイプのように動作し、一方への書き込みはもう一方から読み取ることができ、その逆も同様です。両方のbioが同じスレッドにあることが期待されます。この関数はスレッドセーフではありません。2つのbioのうちの1つを解放すると、両方のペアが解除されます。いずれかのbioに書き込みバッファサイズが以前に設定されていなかった場合、ペアになる前にデフォルトサイズの17000(WOLFSSL_BIO_SIZE)に設定されます。
Parameters:
- b1 ペアを設定するWOLFSSL_BIO構造体。
- b2 ペアを完成させる2番目のWOLFSSL_BIO構造体。
See:
- wolfSSL_BIO_new
- wolfSSL_BIO_s_mem
- wolfSSL_BIO_free
Return:
- SSL_SUCCESS 2つのbioのペア化に成功した場合。
- SSL_FAILURE エラーケースが発生した場合。
Example
WOLFSSL_BIO* bio;
WOLFSSL_BIO* bio2;
int ret;
bio = wolfSSL_BIO_new(wolfSSL_BIO_s_bio());
bio2 = wolfSSL_BIO_new(wolfSSL_BIO_s_bio());
ret = wolfSSL_BIO_make_bio_pair(bio, bio2);
// ret値を確認
function wolfSSL_BIO_ctrl_reset_read_request
int wolfSSL_BIO_ctrl_reset_read_request(
WOLFSSL_BIO * bio
)
これは、読み取り要求フラグを0に戻すために使用されます。
Parameters:
- bio 読み取り要求フラグを設定するWOLFSSL_BIO構造体。
See:
- wolfSSL_BIO_new, wolfSSL_BIO_s_mem
- wolfSSL_BIO_new, wolfSSL_BIO_free
Return:
- SSL_SUCCESS 値の設定に成功した場合。
- SSL_FAILURE エラーケースが発生した場合。
Example
WOLFSSL_BIO* bio;
int ret;
...
ret = wolfSSL_BIO_ctrl_reset_read_request(bio);
// ret値を確認
function wolfSSL_BIO_nread0
int wolfSSL_BIO_nread0(
WOLFSSL_BIO * bio,
char ** buf
)
これは、読み取り用のバッファポインタを取得するために使用されます。wolfSSL_BIO_nreadとは異なり、内部読み取りインデックスは関数呼び出しから返される数だけ進められません。返される値を超えて読み取ると、配列の境界外を読み取る結果になる可能性があります。
Parameters:
- bio 読み取るWOLFSSL_BIO構造体。
- buf 読み取り配列の先頭に設定するポインタ。
See:
- wolfSSL_BIO_new
- wolfSSL_BIO_nwrite0
Return: >=0 成功時、読み取るバイト数を返します。
Example
WOLFSSL_BIO* bio;
char* bufPt;
int ret;
// bioをセットアップ
ret = wolfSSL_BIO_nread0(bio, &bufPt); // 可能な限り多くのバイトを読み取り
// 負のret値を確認
// bufPtからretバイトを読み取り
function wolfSSL_BIO_nread
int wolfSSL_BIO_nread(
WOLFSSL_BIO * bio,
char ** buf,
int num
)
これは、読み取り用のバッファポインタを取得するために使用されます。内部読み取りインデックスは、関数呼び出しから返される数だけ進められ、bufは読み取るバッファの先頭を指します。読み取りバッファ内のバイト数がnumで要求された値より少ない場合、より小さい値が返されます。返される値を超えて読み取ると、配列の境界外を読み取る結果になる可能性があります。
Parameters:
- bio 読み取るWOLFSSL_BIO構造体。
- buf 読み取り配列の先頭に設定するポインタ。
- num 読み取りを試みるバイト数。
See:
- wolfSSL_BIO_new
- wolfSSL_BIO_nwrite
Return:
- >=0 成功時、読み取るバイト数を返します。
- WOLFSSL_BIO_ERROR(-1) 読み取るものがない場合のエラーケースで-1を返します。
Example
WOLFSSL_BIO* bio;
char* bufPt;
int ret;
// bioをセットアップ
ret = wolfSSL_BIO_nread(bio, &bufPt, 10); // 10バイトの読み取りを試行
// 負のret値を確認
// bufPtからretバイトを読み取り
function wolfSSL_BIO_nwrite
int wolfSSL_BIO_nwrite(
WOLFSSL_BIO * bio,
char ** buf,
int num
)
関数が返す数だけのバイトを書き込むためのバッファへのポインタを取得します。返される値よりも多くのバイトを返されたポインタに書き込むと、境界外への書き込みになる可能性があります。
Parameters:
- bio 書き込むWOLFSSL_BIO構造体。
- buf 書き込むバッファへのポインタ。
- num 書き込みたいバイト数。
See:
- wolfSSL_BIO_new
- wolfSSL_BIO_free
- wolfSSL_BIO_nread
Return:
- int バッファポインタに書き込むことができるバイト数を返します。
- WOLFSSL_BIO_UNSET(-2) bioペアの一部ではない場合。
- WOLFSSL_BIO_ERROR(-1) 書き込むスペースがこれ以上ない場合。
Example
WOLFSSL_BIO* bio;
char* bufPt;
int ret;
// bioをセットアップ
ret = wolfSSL_BIO_nwrite(bio, &bufPt, 10); // 10バイトの書き込みを試行
// 負のret値を確認
// bufPtにretバイトを書き込み
function wolfSSL_BIO_reset
int wolfSSL_BIO_reset(
WOLFSSL_BIO * bio
)
bioを初期状態にリセットします。例えば、BIO_BIOタイプの場合、これは読み取りと書き込みのインデックスをリセットします。
Parameters:
- bio リセットするWOLFSSL_BIO構造体。
See:
- wolfSSL_BIO_new
- wolfSSL_BIO_free
Return:
- 0 bioのリセットに成功した場合。
- WOLFSSL_BIO_ERROR(-1) 不正な入力またはリセットに失敗した場合に返されます。
Example
WOLFSSL_BIO* bio;
// bioをセットアップ
wolfSSL_BIO_reset(bio);
//ptを使用
function wolfSSL_BIO_seek
int wolfSSL_BIO_seek(
WOLFSSL_BIO * bio,
int ofs
)
この関数は、ファイルポインタを指定されたオフセットに調整します。これはファイルの先頭からのオフセットです。
Parameters:
- bio 設定するWOLFSSL_BIO構造体。
- ofs ファイルへのオフセット。
See:
- wolfSSL_BIO_new
- wolfSSL_BIO_s_mem
- wolfSSL_BIO_set_fp
- wolfSSL_BIO_free
Return:
- 0 シークに成功した場合。
- -1 エラーケースが発生した場合。
Example
WOLFSSL_BIO* bio;
XFILE fp;
int ret;
bio = wolfSSL_BIO_new(wolfSSL_BIO_s_file());
ret = wolfSSL_BIO_set_fp(bio, &fp);
// ret値を確認
ret = wolfSSL_BIO_seek(bio, 3);
// ret値を確認
function wolfSSL_BIO_write_filename
int wolfSSL_BIO_write_filename(
WOLFSSL_BIO * bio,
char * name
)
ファイルを設定し、書き込むために使用されます。ファイル内の既存データを上書きし、bioが解放される際にファイルを閉じるよう設定されます。
Parameters:
- bio ファイルを設定するWOLFSSL_BIO構造体。
- name 書き込み先のファイル名。
See:
- wolfSSL_BIO_new
- wolfSSL_BIO_s_file
- wolfSSL_BIO_set_fp
- wolfSSL_BIO_free
Return:
- SSL_SUCCESS ファイルのオープンと設定が成功した場合。
- SSL_FAILURE エラーが発生した場合。
Example
WOLFSSL_BIO* bio;
int ret;
bio = wolfSSL_BIO_new(wolfSSL_BIO_s_file());
ret = wolfSSL_BIO_write_filename(bio, "test.txt");
// ret値を確認
function wolfSSL_BIO_set_mem_eof_return
long wolfSSL_BIO_set_mem_eof_return(
WOLFSSL_BIO * bio,
int v
)
ファイル終端値を設定するために使用されます。一般的な値は-1で、期待される正の値と混同しないようにします。
Parameters:
- bio ファイル終端値を設定するWOLFSSL_BIO構造体。
- v bioに設定する値。
See:
- wolfSSL_BIO_new
- wolfSSL_BIO_s_mem
- wolfSSL_BIO_set_fp
- wolfSSL_BIO_free
Return: 0 完了時に返されます。
Example
WOLFSSL_BIO* bio;
int ret;
bio = wolfSSL_BIO_new(wolfSSL_BIO_s_mem());
ret = wolfSSL_BIO_set_mem_eof_return(bio, -1);
// ret値を確認
function wolfSSL_BIO_get_mem_ptr
long wolfSSL_BIO_get_mem_ptr(
WOLFSSL_BIO * bio,
WOLFSSL_BUF_MEM ** m
)
WOLFSSL_BIOメモリポインタのgetter関数です。
Parameters:
- bio メモリポインタを取得するためのWOLFSSL_BIO構造体へのポインタ。
- ptr 現在char*である構造体。bioのメモリを指すように設定されます。
See:
- wolfSSL_BIO_new
- wolfSSL_BIO_s_mem
Return:
- SSL_SUCCESS ポインタの取得に成功した場合、SSL_SUCCESSが返されます(現在の値は1)。
- SSL_FAILURE NULL引数が渡された場合に返されます(現在の値は0)。
Example
WOLFSSL_BIO* bio;
WOLFSSL_BUF_MEM* pt;
// bioをセットアップ
wolfSSL_BIO_get_mem_ptr(bio, &pt);
// ptを使用
function wolfSSL_X509_NAME_oneline
char * wolfSSL_X509_NAME_oneline(
WOLFSSL_X509_NAME * name,
char * in,
int sz
)
この関数はx509の名前をバッファにコピーします。
Parameters:
- name WOLFSSL_X509構造体へのポインタ。
- in WOLFSSL_X509_NAME構造体からコピーされた名前を保持するバッファ。
- sz バッファの最大サイズ。
See:
- wolfSSL_X509_get_subject_name
- wolfSSL_X509_get_issuer_name
- wolfSSL_X509_get_isCA
- wolfSSL_get_peer_certificate
- wolfSSL_X509_version
Return: 関数が正常に実行された場合、WOLFSSL_X509_NAME構造体のnameメンバーのデータを持つバッファへのcharポインタが返されます。
Example
WOLFSSL_X509 x509;
char* name;
...
name = wolfSSL_X509_NAME_oneline(wolfSSL_X509_get_issuer_name(x509), 0, 0);
if(name <= 0){
// バッファに何もありません
}
function wolfSSL_X509_get_issuer_name
WOLFSSL_X509_NAME * wolfSSL_X509_get_issuer_name(
WOLFSSL_X509 * cert
)
この関数は証明書の発行者名を返します。
Parameters:
- cert WOLFSSL_X509構造体へのポインタ。
See:
- wolfSSL_X509_get_subject_name
- wolfSSL_X509_get_isCA
- wolfSSL_get_peer_certificate
- wolfSSL_X509_NAME_oneline
Return:
- point 渡されたcertがNULLでない場合、WOLFSSL_X509構造体のissuerメンバーへのポインタが返されます。
- NULL 渡されたcertがNULLの場合。
Example
WOLFSSL_X509* x509;
WOLFSSL_X509_NAME issuer;
...
issuer = wolfSSL_X509_NAME_oneline(wolfSSL_X509_get_issuer_name(x509), 0, 0);
if(!issuer){
// NULLが返されました
} else {
// issuerは証明書の発行者名を保持しています
}
function wolfSSL_X509_get_subject_name
WOLFSSL_X509_NAME * wolfSSL_X509_get_subject_name(
WOLFSSL_X509 * cert
)
この関数はWOLFSSL_X509構造体のsubjectメンバーを返します。
Parameters:
- cert WOLFSSL_X509構造体へのポインタ。
See:
Return: pointer WOLFSSL_X509_NAME構造体へのポインタ。WOLFSSL_X509構造体がNULLの場合、または構造体のsubjectメンバーがNULLの場合、ポインタはNULLになる可能性があります。
Example
WOLFSSL_X509* cert;
WOLFSSL_X509_NAME name;
…
name = wolfSSL_X509_get_subject_name(cert);
if(name == NULL){
// NULLケースを処理
}
function wolfSSL_X509_get_isCA
int wolfSSL_X509_get_isCA(
WOLFSSL_X509 * cert
)
WOLFSSL_X509構造体のisCaメンバーをチェックし、その値を返します。
Parameters:
- cert WOLFSSL_X509構造体へのポインタ。
See:
Return:
- isCA WOLFSSL_X509構造体のisCaメンバーの値が返されます。
- 0 有効なx509構造体が渡されなかった場合に返されます。
Example
WOLFSSL* ssl;
...
WOLFSSL_CTX* ctx = wolfSSL_CTX_new( method );
WOLFSSL* ssl = wolfSSL_new(ctx);
...
if(wolfSSL_X509_get_isCA(ssl)){
// これはCAです
}else {
// 失敗ケース
}
function wolfSSL_X509_NAME_get_text_by_NID
int wolfSSL_X509_NAME_get_text_by_NID(
WOLFSSL_X509_NAME * name,
int nid,
char * buf,
int len
)
この関数は渡されたNID値に関連するテキストを取得します。
Parameters:
- name テキストを検索するWOLFSSL_X509_NAME。
- nid 検索するNID。
- buf 見つかったテキストを保持するバッファ。
- len バッファの長さ。
See: none
Return: int テキストバッファのサイズを返します。
Example
WOLFSSL_X509_NAME* name;
char buffer[100];
int bufferSz;
int ret;
// WOLFSSL_X509_NAMEを取得
ret = wolfSSL_X509_NAME_get_text_by_NID(name, NID_commonName,
buffer, bufferSz);
// ret値を確認
function wolfSSL_X509_get_signature_type
int wolfSSL_X509_get_signature_type(
WOLFSSL_X509 * cert
)
この関数はWOLFSSL_X509構造体のsigOIDメンバーに格納されている値を返します。
Parameters:
- cert WOLFSSL_X509構造体へのポインタ。
See:
- wolfSSL_X509_get_signature
- wolfSSL_X509_version
- wolfSSL_X509_get_der
- wolfSSL_X509_get_serial_number
- wolfSSL_X509_notBefore
- wolfSSL_X509_notAfter
- wolfSSL_X509_free
Return:
- 0 WOLFSSL_X509構造体がNULLの場合に返されます。
- int x509オブジェクトから取得された整数値が返されます。
Example
WOLFSSL_X509 x509 = (WOLFSSL_X509*)XMALLOC(sizeof(WOLFSSL_X509), NULL,
DYNAMIC_TYPE_X509);
...
int x509SigType = wolfSSL_X509_get_signature_type(x509);
if(x509SigType != EXPECTED){
// 予期しない値を処理
}
function wolfSSL_X509_free
void wolfSSL_X509_free(
WOLFSSL_X509 * x509
)
この関数はWOLFSSL_X509構造体を解放します。
Parameters:
- x509 WOLFSSL_X509構造体へのポインタ。
See:
- wolfSSL_X509_get_signature
- wolfSSL_X509_version
- wolfSSL_X509_get_der
- wolfSSL_X509_get_serial_number
- wolfSSL_X509_notBefore
- wolfSSL_X509_notAfter
Example
WOLFSSL_X509* x509 = (WOLFSSL_X509*)XMALOC(sizeof(WOLFSSL_X509), NULL,
DYNAMIC_TYPE_X509) ;
wolfSSL_X509_free(x509);
function wolfSSL_X509_get_signature
int wolfSSL_X509_get_signature(
WOLFSSL_X509 * x509,
unsigned char * buf,
int * bufSz
)
X509署名を取得し、バッファに格納します。
Parameters:
- x509 WOLFSSL_X509構造体へのポインタ。
- buf バッファへのcharポインタ。
- bufSz バッファのサイズへの整数ポインタ。
See:
Return:
- SSL_SUCCESS 関数が正常に実行された場合に返されます。署名はバッファに読み込まれます。
- SSL_FATAL_ERRROR x509構造体またはbufSzメンバーがNULLの場合に返されます。sig構造体のlengthメンバー(sigはx509のメンバー)のチェックもあります。
Example
WOLFSSL_X509* x509 = (WOLFSSL_X509)XMALOC(sizeof(WOLFSSL_X509), NULL,
DYNAMIC_TYPE_X509);
unsigned char* buf; // 初期化
int* bufSz = sizeof(buf)/sizeof(unsigned char);
...
if(wolfSSL_X509_get_signature(x509, buf, bufSz) != SSL_SUCCESS){
// 関数は正常に実行されませんでした
} else{
// バッファは正しく書き込まれました
}
function wolfSSL_X509_STORE_add_cert
int wolfSSL_X509_STORE_add_cert(
WOLFSSL_X509_STORE * store,
WOLFSSL_X509 * x509
)
この関数はWOLFSSL_X509_STORE構造体に証明書を追加します。
Parameters:
- str 証明書を追加する証明書ストア。
- x509 追加する証明書。
See: wolfSSL_X509_free
Return:
- SSL_SUCCESS 証明書が正常に追加された場合。
- SSL_FATAL_ERROR 証明書が正常に追加されなかった場合。
Example
WOLFSSL_X509_STORE* str;
WOLFSSL_X509* x509;
int ret;
ret = wolfSSL_X509_STORE_add_cert(str, x509);
// ret値を確認
function wolfSSL_X509_STORE_CTX_get_chain
WOLFSSL_STACK * wolfSSL_X509_STORE_CTX_get_chain(
WOLFSSL_X509_STORE_CTX * ctx
)
この関数はWOLFSSL_X509_STORE_CTX構造体のchain変数のgetter関数です。現在、chainは入力されていません。
Parameters:
- ctx 解析チェーンを取得する証明書ストアコンテキスト。
See: wolfSSL_sk_X509_free
Return:
- pointer 成功した場合、WOLFSSL_STACK(STACK_OF(WOLFSSL_X509)と同じ)ポインタを返します。
- Null 失敗時。
Example
WOLFSSL_STACK* sk;
WOLFSSL_X509_STORE_CTX* ctx;
sk = wolfSSL_X509_STORE_CTX_get_chain(ctx);
// skがNULLでないか確認してから使用。使用後はskを解放する必要があります
function wolfSSL_X509_STORE_set_flags
int wolfSSL_X509_STORE_set_flags(
WOLFSSL_X509_STORE * store,
unsigned long flag
)
この関数は渡されたWOLFSSL_X509_STORE構造体の動作を変更するためのフラグを受け取ります。使用されるフラグの例としてWOLFSSL_CRL_CHECKがあります。
Parameters:
- str フラグを設定する証明書ストア。
- flag 動作のためのフラグ。
See:
- wolfSSL_X509_STORE_new
- wolfSSL_X509_STORE_free
Return:
- SSL_SUCCESS フラグの設定時にエラーが発生しなかった場合。
- <0 失敗時に負の値が返されます。
Example
WOLFSSL_X509_STORE* str;
int ret;
// strを作成して設定
ret = wolfSSL_X509_STORE_set_flags(str, WOLFSSL_CRL_CHECKALL);
if (ret != SSL_SUCCESS) {
//ret値を確認してエラーケースを処理する
}
function wolfSSL_X509_notBefore
const byte * wolfSSL_X509_notBefore(
WOLFSSL_X509 * x509
)
この関数は、バイト配列としてエンコードされた証明書の「not before」有効期限を返します。
Parameters:
- x509 WOLFSSL_X509構造体へのポインタ。
See:
- wolfSSL_X509_get_signature
- wolfSSL_X509_version
- wolfSSL_X509_get_der
- wolfSSL_X509_get_serial_number
- wolfSSL_X509_notAfter
- wolfSSL_X509_free
Return:
- NULL WOLFSSL_X509構造体がNULLの場合に返されます。
- byte notBeforeDataを含むバイトが返されます。
Example
WOLFSSL_X509* x509 = (WOLFSSL_X509*)XMALLOC(sizeof(WOLFSSL_X509), NULL,
DYNAMIC_TYPE_X509);
...
byte* notBeforeData = wolfSSL_X509_notBefore(x509);
function wolfSSL_X509_notAfter
const byte * wolfSSL_X509_notAfter(
WOLFSSL_X509 * x509
)
この関数は、バイト配列としてエンコードされた証明書の「not after」有効期限を返します。
Parameters:
- x509 WOLFSSL_X509構造体へのポインタ。
See:
- wolfSSL_X509_get_signature
- wolfSSL_X509_version
- wolfSSL_X509_get_der
- wolfSSL_X509_get_serial_number
- wolfSSL_X509_notBefore
- wolfSSL_X509_free
Return:
- NULL WOLFSSL_X509構造体がNULLの場合に返されます。
- byte notAfterDataを含むバイトが返されます。
Example
WOLFSSL_X509* x509 = (WOLFSSL_X509*)XMALLOC(sizeof(WOLFSSL_X509), NULL,
DYNAMIC_TYPE_X509);
...
byte* notAfterData = wolfSSL_X509_notAfter(x509);
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_client_cert_cb
void wolfSSL_CTX_set_client_cert_cb(
WOLFSSL_CTX * ctx,
client_cert_cb cb
)
クライアント証明書と秘密鍵を選択するコールバックを設定します。
Parameters:
- ctx WOLFSSL_CTXオブジェクト。
- cb クライアント証明書と鍵を選択するコールバック関数。
Return: void
この関数は、ハンドシェイク中にクライアント証明書が要求されたときに呼び出されるコールバックをアプリケーションが登録できるようにします。コールバックは、使用する証明書と鍵を選択して提供できます。
Example
int my_client_cert_cb(WOLFSSL *ssl, WOLFSSL_X509 **x509, WOLFSSL_EVP_PKEY **pkey) { ... }
wolfSSL_CTX_set_client_cert_cb(ctx, my_client_cert_cb);
function wolfSSL_CTX_set_cert_cb
void wolfSSL_CTX_set_cert_cb(
WOLFSSL_CTX * ctx,
CertSetupCallback cb,
void * arg
)
汎用証明書セットアップコールバックを設定します。
Parameters:
- ctx WOLFSSL_CTXオブジェクト。
- cb 証明書セットアップ用のコールバック関数。
- arg コールバックに渡すユーザー引数。
See: wolfSSL_CTX_set_client_cert_cb
Return: void
この関数は、証明書セットアップ中に呼び出されるコールバックをアプリケーションが登録できるようにします。コールバックは、カスタム証明書選択またはロードロジックを実行できます。
Example
int my_cert_setup_cb(WOLFSSL* ssl, void* arg) { ... }
wolfSSL_CTX_set_cert_cb(ctx, my_cert_setup_cb, NULL);
function wolfSSL_CTX_set_tlsext_status_cb
int wolfSSL_CTX_set_tlsext_status_cb(
WOLFSSL_CTX * ctx,
tlsextStatusCb cb
)
OCSPステータス要求(OCSPステープリング)を処理するために使用されるコールバックを設定します。
Parameters:
- ctx WOLFSSL_CTXオブジェクト。
- cb OCSPステータス要求を処理するコールバック関数。
See:
Return: SSL_SUCCESS 成功時、それ以外の場合はSSL_FAILURE。
この関数は、TLSハンドシェイク中にOCSPステータス要求を受信したときに呼び出されるコールバックをアプリケーションが登録できるようにします。コールバックは、ハンドシェイクにステープルされるOCSPレスポンスを提供できます。このAPIはサーバー側でのみ有用です。
Example
int my_ocsp_status_cb(WOLFSSL* ssl, void* arg) { ... }
wolfSSL_CTX_set_tlsext_status_cb(ctx, my_ocsp_status_cb);
function wolfSSL_CTX_get_tlsext_status_cb
int wolfSSL_CTX_get_tlsext_status_cb(
WOLFSSL_CTX * ctx,
tlsextStatusCb * cb
)
コンテキストに現在設定されているOCSPステータスコールバックを取得します。
Parameters:
- ctx WOLFSSL_CTXオブジェクト。
- cb コールバック関数を受け取るポインタ。
See: wolfSSL_CTX_set_tlsext_status_cb
Return: SSL_SUCCESS 成功時、それ以外の場合はSSL_FAILURE。
function wolfSSL_get_tlsext_status_ocsp_resp
long wolfSSL_get_tlsext_status_ocsp_resp(
WOLFSSL * ssl,
unsigned char ** resp
)
ピアに送信(ステープル)されるOCSPレスポンスを取得します。
Parameters:
- ssl WOLFSSLセッション。
- resp レスポンスバッファを受け取るポインタ。
See: wolfSSL_set_tlsext_status_ocsp_resp
Return: Length レスポンスの長さ、またはエラー時は負の値。
function wolfSSL_set_tlsext_status_ocsp_resp
long wolfSSL_set_tlsext_status_ocsp_resp(
WOLFSSL * ssl,
unsigned char * resp,
int len
)
ピアに送信(ステープル)されるOCSPレスポンスを設定します。
Parameters:
- ssl WOLFSSLセッション。
- resp レスポンスバッファへのポインタ。
- len レスポンスバッファの長さ。
See: wolfSSL_get_tlsext_status_ocsp_resp
Return: SSL_SUCCESS 成功時、それ以外の場合はSSL_FAILURE。
respのバッファはwolfSSLによって所有され、wolfSSLによって解放されます。アプリケーションは、この関数を呼び出した後、バッファを解放してはいけません。
function wolfSSL_set_tlsext_status_ocsp_resp_multi
int wolfSSL_set_tlsext_status_ocsp_resp_multi(
WOLFSSL * ssl,
unsigned char * resp,
int len,
word32 idx
)
TLSマルチ証明書チェーン用の複数のOCSPレスポンスを設定します。
Parameters:
- ssl WOLFSSLセッション。
- resp レスポンスバッファへのポインタ。
- len レスポンスバッファの長さ。
- idx 証明書チェーンのインデックス。
Return: SSL_SUCCESS 成功時、それ以外の場合はSSL_FAILURE。
respのバッファはwolfSSLによって所有され、wolfSSLによって解放されます。アプリケーションは、この関数を呼び出した後、バッファを解放してはいけません。
function wolfSSL_CTX_set_ocsp_status_verify_cb
void wolfSSL_CTX_set_ocsp_status_verify_cb(
WOLFSSL_CTX * ctx,
ocspVerifyStatusCb cb,
void * cbArg
)
OCSPステータスレスポンスを検証するコールバックを設定します。
Parameters:
- ctx WOLFSSL_CTXオブジェクト。
- cb コールバック関数。
- cbArg コールバックに渡すユーザー引数。
Return: void
OCSP検証中にピアの証明書チェーンにアクセスできるようにするため、SESSION_CERTSを有効にすることを推奨します。
Example
void my_ocsp_verify_cb(WOLFSSL* ssl, int err, byte* resp, word32 respSz, word32 idx, void* arg)
{
(void)arg;
if (err == 0 && staple && stapleSz > 0) {
printf("Client: OCSP staple received, size=%u\n", stapleSz);
return 0;
}
// err != 0の場合、手動OCSPステープル検証
if (err != 0 && staple && stapleSz > 0) {
WOLFSSL_CERT_MANAGER* cm = NULL;
DecodedCert cert;
byte certInit = 0;
WOLFSSL_OCSP* ocsp = NULL;
WOLFSSL_X509_CHAIN* peerCerts;
int i;
cm = wolfSSL_CertManagerNew();
if (cm == NULL)
goto cleanup;
if (wolfSSL_CertManagerLoadCA(cm, CA_CERT, NULL) != WOLFSSL_SUCCESS)
goto cleanup;
peerCerts = wolfSSL_get_peer_chain(ssl);
if (peerCerts == NULL || wolfSSL_get_chain_count(peerCerts) <= (int)idx)
goto cleanup;
for (i = idx + 1; i < wolfSSL_get_chain_count(peerCerts); i++) {
if (wolfSSL_CertManagerLoadCABuffer(cm, wolfSSL_get_chain_cert(peerCerts, i),
wolfSSL_get_chain_length(peerCerts, i), WOLFSSL_FILETYPE_ASN1) != WOLFSSL_SUCCESS)
goto cleanup;
}
wc_InitDecodedCert(&cert, wolfSSL_get_chain_cert(peerCerts, idx), wolfSSL_get_chain_length(peerCerts, idx), NULL);
certInit = 1;
if (wc_ParseCert(&cert, CERT_TYPE, VERIFY, cm) != 0)
goto cleanup;
if ((ocsp = wc_NewOCSP(cm)) == NULL)
goto cleanup;
if (wc_CheckCertOcspResponse(ocsp, &cert, staple, stapleSz, NULL) != 0)
goto cleanup;
printf("Client: Manual OCSP staple verification succeeded for idx=%u\n", idx);
err = 0;
cleanup:
wc_FreeOCSP(ocsp);
if (certInit)
wc_FreeDecodedCert(&cert);
wolfSSL_CertManagerFree(cm);
if (err == 0)
return 0;
printf("Client: Manual OCSP staple verification failed for idx=%u\n", idx);
}
printf("Client: OCSP staple verify error=%d\n", err);
return err;
}
wolfSSL_CTX_set_ocsp_status_verify_cb(ctx, my_ocsp_verify_cb, NULL);
function wolfSSL_CTX_set_tlsext_opaque_prf_input_callback_arg
long wolfSSL_CTX_set_tlsext_opaque_prf_input_callback_arg(
WOLFSSL_CTX * ctx,
void * arg
)
この関数は、PRFコールバックに渡されるオプション引数を設定します。
Parameters:
- ctx ユーザ引数を設定するWOLFSSL_CTX構造体。
- arg ユーザ引数。
See:
Return:
- SSL_FAILURE ctxがNULLの場合。
- SSL_SUCCESS 正常に設定された場合。
Example
WOLFSSL_CTX* ctx;
void* data;
int ret;
// ctxをセットアップ
ret = wolfSSL_CTX_set_tlsext_opaques_prf_input_callback_arg(ctx, data);
//ret値を確認
function wolfSSL_set_options
long wolfSSL_set_options(
WOLFSSL * s,
long op
)
この関数は、ssl内のオプションマスクを設定します。有効なオプションには、SSL_OP_ALL、SSL_OP_COOKIE_EXCHANGE、SSL_OP_NO_SSLv2、SSL_OP_NO_SSLv3、SSL_OP_NO_TLSv1、SSL_OP_NO_TLSv1_1、SSL_OP_NO_TLSv1_2、SSL_OP_NO_COMPRESSIONがあります。
Parameters:
- s オプションマスクを設定するWOLFSSL構造体。
- op この関数は、ssl内のオプションマスクを設定します。有効なオプションには以下が含まれます: SSL_OP_ALL SSL_OP_COOKIE_EXCHANGE SSL_OP_NO_SSLv2 SSL_OP_NO_SSLv3 SSL_OP_NO_TLSv1 SSL_OP_NO_TLSv1_1 SSL_OP_NO_TLSv1_2 SSL_OP_NO_COMPRESSION
See:
Return: val sslに格納されている更新されたオプションマスク値を返します。
Example
WOLFSSL* ssl;
unsigned long mask;
mask = SSL_OP_NO_TLSv1
mask = wolfSSL_set_options(ssl, mask);
// maskを確認
function wolfSSL_get_options
long wolfSSL_get_options(
const WOLFSSL * ssl
)
この関数は、現在のオプションマスクを返します。
Parameters:
- ssl オプションマスクを取得するWOLFSSL構造体。
See:
Return: val sslに格納されているマスク値を返します。
Example
WOLFSSL* ssl;
unsigned long mask;
mask = wolfSSL_get_options(ssl);
// maskを確認
function wolfSSL_set_tlsext_debug_arg
long wolfSSL_set_tlsext_debug_arg(
WOLFSSL * ssl,
void * arg
)
これは、渡されるデバッグ引数を設定するために使用されます。
Parameters:
- ssl 引数を設定するWOLFSSL構造体。
- arg 使用する引数。
See:
Return:
- SSL_SUCCESS 引数の設定に成功した場合。
- SSL_FAILURE NULLのsslが渡された場合。
Example
WOLFSSL* ssl;
void* args;
int ret;
// sslオブジェクトを作成
ret = wolfSSL_set_tlsext_debug_arg(ssl, args);
// ret値を確認
function wolfSSL_set_tlsext_status_type
long wolfSSL_set_tlsext_status_type(
WOLFSSL * s,
int type
)
この関数は、クライアントアプリケーションがサーバにOCSPステータスレスポンス(OCSPステープリングとも呼ばれます)を返送するよう要求する際に呼び出されます。現在、サポートされている唯一のタイプはTLSEXT_STATUSTYPE_ocspです。
Parameters:
- s SSL_new()関数によって作成されたWOLFSSL構造体へのポインタ。
- type TLSEXT_STATUSTYPE_ocspのみがサポートされているSSL拡張タイプ。
See:
Return:
- 1 成功時。
- 0 エラー時。
Example
WOLFSSL *ssl;
WOLFSSL_CTX *ctx;
int ret;
ctx = wolfSSL_CTX_new(wolfSSLv23_server_method());
ssl = wolfSSL_new(ctx);
ret = WolfSSL_set_tlsext_status_type(ssl,TLSEXT_STATUSTYPE_ocsp);
wolfSSL_free(ssl);
wolfSSL_CTX_free(ctx);
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_ERR_print_errors_fp
void wolfSSL_ERR_print_errors_fp(
XFILE fp,
int err
)
この関数は、wolfSSL_get_error()によって返されたエラーコードを、より人間が読みやすいエラー文字列に変換し、その文字列を出力ファイルfpに出力します。errはwolfSSL_get_error()によって返されたエラーコードであり、fpはエラー文字列が配置されるファイルです。
Parameters:
- fp 人間が読みやすいエラー文字列が書き込まれる出力ファイル。
- err wolfSSL_get_error()によって返されたエラーコード。
See:
Return: none 戻り値なし。
Example
int err = 0;
WOLFSSL* ssl;
FILE* fp = ...
...
err = wolfSSL_get_error(ssl, 0);
wolfSSL_ERR_print_errors_fp(fp, err);
function wolfSSL_ERR_print_errors_cb
void wolfSSL_ERR_print_errors_cb(
int(*)(const char *str, size_t len, void *u) cb,
void * u
)
この関数は、提供されたコールバックを使用してエラーレポートを処理します。コールバック関数は、各エラー行に対して実行されます。文字列、長さ、およびユーザデータがコールバックパラメータに渡されます。
Parameters:
- cb コールバック関数。
- u コールバック関数に渡すユーザデータ。
See:
Return: none 戻り値なし。
Example
int error_cb(const char *str, size_t len, void *u)
{ fprintf((FILE*)u, "%-*.*s\n", (int)len, (int)len, str); return 0; }
...
FILE* fp = ...
wolfSSL_ERR_print_errors_cb(error_cb, fp);
function wolfSSL_CTX_set_psk_client_callback
void wolfSSL_CTX_set_psk_client_callback(
WOLFSSL_CTX * ctx,
wc_psk_client_callback cb
)
この関数は、WOLFSSL_CTX構造体のclient_psk_cbメンバを設定します。
Parameters:
- ctx wolfSSL_CTX_new()を使用して作成されたWOLFSSL_CTX構造体へのポインタ。
- cb WOLFSSL_CTX構造体に格納される関数ポインタであるwc_psk_client_callback。戻り値は、成功時には鍵の長さ、エラー時にはゼロです。 unsigned int (wc_psk_client_callback) PSKクライアントコールバックのパラメータ: WOLFSSL ssl - wolfSSL構造体へのポインタ const char hint - ユーザへのヒントを表示するために使用できる格納された文字列。 char identity - IDがここに格納されます。 unsigned int id_max_len - IDバッファのサイズ。 unsigned char* key - 鍵がここに格納されます。 unsigned int key_max_len - 鍵の最大サイズ。
See:
- wolfSSL_set_psk_client_callback
- wolfSSL_set_psk_server_callback
- wolfSSL_CTX_set_psk_server_callback
- wolfSSL_CTX_set_psk_client_callback
Return: none 戻り値なし。
Example
WOLFSSL_CTX* ctx = WOLFSSL_CTX_new( protocol def );
…
static WC_INLINE unsigned int my_psk_client_cb(WOLFSSL* ssl, const char* hint,
char* identity, unsigned int id_max_len, unsigned char* key,
Unsigned int key_max_len){
…
wolfSSL_CTX_set_psk_client_callback(ctx, my_psk_client_cb);
function wolfSSL_set_psk_client_callback
void wolfSSL_set_psk_client_callback(
WOLFSSL * ssl,
wc_psk_client_callback
)
PSKクライアント側コールバックを設定します。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
- cb wc_psk_client_callback型への関数ポインタ。戻り値は、成功時には鍵の長さ、エラー時にはゼロです。 unsigned int (wc_psk_client_callback) PSKクライアントコールバックのパラメータ: WOLFSSL ssl - wolfSSL構造体へのポインタ const char hint - ユーザへのヒントを表示するために使用できる格納された文字列。 char identity - IDがここに格納されます。 unsigned int id_max_len - IDバッファのサイズ。 unsigned char* key - 鍵がここに格納されます。 unsigned int key_max_len - 鍵の最大サイズ。
See:
- wolfSSL_CTX_set_psk_client_callback
- wolfSSL_CTX_set_psk_server_callback
- wolfSSL_set_psk_server_callback
Return: none 戻り値なし。
Example
WOLFSSL* ssl;
static WC_INLINE unsigned int my_psk_client_cb(WOLFSSL* ssl, const char* hint,
char* identity, unsigned int id_max_len, unsigned char* key,
Unsigned int key_max_len){
…
if(ssl){
wolfSSL_set_psk_client_callback(ssl, my_psk_client_cb);
} else {
// コールバックを設定できませんでした。
}
function wolfSSL_get_psk_identity_hint
const char * wolfSSL_get_psk_identity_hint(
const WOLFSSL *
)
この関数は、PSKアイデンティティヒントを返します。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
Return:
- pointer WOLFSSL構造体のarraysメンバに格納されていた値へのconst char型ポインタが返されます。
- NULL WOLFSSLまたはArrays構造体がNULLの場合に返されます。
Example
WOLFSSL* ssl = wolfSSL_new(ctx);
char* idHint;
...
idHint = wolfSSL_get_psk_identity_hint(ssl);
if(idHint){
// ヒントが取得されました。
return idHint;
} else {
// ヒントの取得に成功しませんでした。
}
function wolfSSL_get_psk_identity
const char * wolfSSL_get_psk_identity(
const WOLFSSL *
)
この関数は、Arrays構造体のclient_identityメンバへの定数ポインタを返します。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
See:
Return:
- string Arrays構造体のclient_identityメンバの文字列値。
- NULL WOLFSSL構造体がNULL、またはWOLFSSL構造体のArraysメンバがNULLの場合。
Example
WOLFSSL_CTX* ctx = wolfSSL_CTX_new( method );
WOLFSSL* ssl = wolfSSL_new(ctx); const char* pskID;
...
pskID = wolfSSL_get_psk_identity(ssl);
if(pskID == NULL){
// pskIDに値がありません
}
function wolfSSL_CTX_use_psk_identity_hint
int wolfSSL_CTX_use_psk_identity_hint(
WOLFSSL_CTX * ctx,
const char * hint
)
この関数は、hint引数をWOLFSSL_CTX構造体のserver_hintメンバに格納します。
Parameters:
- ctx wolfSSL_CTX_new()を使用して作成されたWOLFSSL_CTX構造体へのポインタ。
- hint WOLFSSL_CTX構造体にコピーされる定数charポインタ。
See: wolfSSL_use_psk_identity_hint
Return: SSL_SUCCESS 関数の実行が成功した場合に返されます。
Example
WOLFSSL_CTX* ctx = wolfSSL_CTX_new( protocol method );
const char* hint;
int ret;
…
ret = wolfSSL_CTX_use_psk_identity_hint(ctx, hint);
if(ret == SSL_SUCCESS){
// 関数は成功しました
return ret;
} else {
// 失敗ケース
}
function wolfSSL_use_psk_identity_hint
int wolfSSL_use_psk_identity_hint(
WOLFSSL * ssl,
const char * hint
)
この関数は、hint引数をWOLFSSL構造体内のArrays構造体のserver_hintメンバに格納します。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
- hint メモリに保存されるヒントを保持する定数文字ポインタ。
See: wolfSSL_CTX_use_psk_identity_hint
Return:
- SSL_SUCCESS hintがWOLFSSL構造体に正常に格納された場合に返されます。
- SSL_FAILURE WOLFSSLまたはArrays構造体がNULLの場合に返されます。
Example
WOLFSSL* ssl = wolfSSL_new(ctx);
const char* hint;
...
if(wolfSSL_use_psk_identity_hint(ssl, hint) != SSL_SUCCESS){
// 失敗ケースを処理
}
function wolfSSL_CTX_set_psk_server_callback
void wolfSSL_CTX_set_psk_server_callback(
WOLFSSL_CTX * ctx,
wc_psk_server_callback cb
)
この関数は、WOLFSSL_CTX構造体にサーバ側のpskコールバックを設定します。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
- cb コールバック用の関数ポインタで、WOLFSSL_CTX構造体に格納されます。戻り値は成功時は鍵の長さ、エラー時は0です。 unsigned int (wc_psk_server_callback) PSKサーバコールバックのパラメータ WOLFSSL ssl - wolfSSL構造体へのポインタ char identity - IDがここに格納されます unsigned char key - 鍵がここに格納されます unsigned int key_max_len - 鍵の最大サイズ
See:
- wc_psk_server_callback
- wolfSSL_set_psk_client_callback
- wolfSSL_set_psk_server_callback
- wolfSSL_CTX_set_psk_client_callback
Return: none 戻り値なし。
Example
WOLFSSL_CTX* ctx = wolfSSL_CTX_new( protocol method );
WOLFSSL* ssl = wolfSSL_new(ctx);
…
static unsigned int my_psk_server_cb(WOLFSSL* ssl, const char* identity,
unsigned char* key, unsigned int key_max_len)
{
// 関数本体
}
…
if(ctx != NULL){
wolfSSL_CTX_set_psk_server_callback(ctx, my_psk_server_cb);
} else {
// CTXオブジェクトが適切に初期化されませんでした
}
function wolfSSL_set_psk_server_callback
void wolfSSL_set_psk_server_callback(
WOLFSSL * ssl,
wc_psk_server_callback cb
)
WOLFSSL構造体のoptionsメンバを設定することにより、サーバ側のpskコールバックを設定します。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
- cb コールバック用の関数ポインタで、WOLFSSL構造体に格納されます。戻り値は成功時は鍵の長さ、エラー時は0です。 unsigned int (wc_psk_server_callback) PSKサーバコールバックのパラメータ WOLFSSL ssl - wolfSSL構造体へのポインタ char identity - IDがここに格納されます unsigned char key - 鍵がここに格納されます unsigned int key_max_len - 鍵の最大サイズ
See:
- wolfSSL_set_psk_client_callback
- wolfSSL_CTX_set_psk_server_callback
- wolfSSL_CTX_set_psk_client_callback
- wolfSSL_get_psk_identity_hint
- wc_psk_server_callback
- InitSuites
Return: none 戻り値なし。
Example
WOLFSSL_CTX* ctx;
WOLFSSL* ssl;
…
static unsigned int my_psk_server_cb(WOLFSSL* ssl, const char* identity,
unsigned char* key, unsigned int key_max_len)
{
// 関数本体
}
…
if(ssl != NULL && cb != NULL){
wolfSSL_set_psk_server_callback(ssl, my_psk_server_cb);
}
function wolfSSL_set_psk_callback_ctx
int wolfSSL_set_psk_callback_ctx(
WOLFSSL * ssl,
void * psk_ctx
)
WOLFSSL構造体のoptionsメンバにPSKユーザコンテキストを設定します。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
- psk_ctx ユーザPSKコンテキストへのvoidポインタ。
See:
Return: WOLFSSL_SUCCESSまたはWOLFSSL_FAILURE
function wolfSSL_CTX_set_psk_callback_ctx
int wolfSSL_CTX_set_psk_callback_ctx(
WOLFSSL_CTX * ctx,
void * psk_ctx
)
WOLFSSL_CTX構造体にPSKユーザコンテキストを設定します。
Parameters:
- ctx wolfSSL_CTX_new()を使用して作成されたWOLFSSL_CTX構造体へのポインタ。
- psk_ctx ユーザPSKコンテキストへのvoidポインタ。
See:
Return: WOLFSSL_SUCCESSまたはWOLFSSL_FAILURE
function wolfSSL_get_psk_callback_ctx
void * wolfSSL_get_psk_callback_ctx(
WOLFSSL * ssl
)
WOLFSSL構造体のoptionsメンバからPSKユーザコンテキストを取得します。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
See:
Return: ユーザPSKコンテキストへのvoidポインタ。
function wolfSSL_CTX_get_psk_callback_ctx
void * wolfSSL_CTX_get_psk_callback_ctx(
WOLFSSL_CTX * ctx
)
WOLFSSL_CTX構造体からPSKユーザコンテキストを取得します。
Parameters:
- ctx wolfSSL_CTX_new()を使用して作成されたWOLFSSL_CTX構造体へのポインタ。
See:
Return: ユーザPSKコンテキストへのvoidポインタ。
function wolfSSL_CTX_allow_anon_cipher
int wolfSSL_CTX_allow_anon_cipher(
WOLFSSL_CTX *
)
この関数は、コンパイル時にHAVE_ANONが定義されている場合、CTX構造体のhavAnonメンバを有効にします。
Parameters:
- ctx wolfSSL_CTX_new()を使用して作成されたWOLFSSL_CTX構造体へのポインタ。
See: none
Return:
- SSL_SUCCESS 関数が正常に実行され、CTXのhaveAnnonメンバが1に設定された場合に返されます。
- SSL_FAILURE CTX構造体がNULLの場合に返されます。
Example
WOLFSSL_CTX* ctx = wolfSSL_CTX_new( protocol method );
WOLFSSL* ssl = wolfSSL_new(ctx);
...
#ifdef HAVE_ANON
if(cipherList == NULL){
wolfSSL_CTX_allow_anon_cipher(ctx);
if(wolfSSL_CTX_set_cipher_list(ctx, "ADH_AES128_SHA") != SSL_SUCCESS){
// 失敗ケース
}
}
#endif
function wolfSSLv23_server_method
WOLFSSL_METHOD * wolfSSLv23_server_method(
void
)
wolfSSLv23_server_method()関数は、アプリケーションがサーバであり、SSL 3.0からTLS 1.3までのプロトコルバージョンで接続するクライアントをサポートすることを示すために使用されます。この関数は、wolfSSL_CTX_new()でSSL/TLSコンテキストを作成する際に使用される新しいWOLFSSL_METHOD構造体のためのメモリを割り当て、初期化します。
Parameters:
- none パラメータなし。
See:
- 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_get_peer_certificate
WOLFSSL_X509 * wolfSSL_get_peer_certificate(
WOLFSSL * ssl
)
この関数は、ピアの証明書を取得します。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
See:
Return:
- pointer 存在する場合、WOLFSSL_X509構造体のpeerCertメンバへのポインタ。
- 0 ピア証明書発行者のサイズが定義されていない場合に返されます。
Example
WOLFSSL_CTX* ctx = wolfSSL_CTX_new( method );
WOLFSSL* ssl = wolfSSL_new(ctx);
...
WOLFSSL_X509* peerCert = wolfSSL_get_peer_certificate(ssl);
if(peerCert){
// ピア証明書へのポインタpeerCertがあります
}
function wolfSSL_want_read
int wolfSSL_want_read(
WOLFSSL *
)
この関数は、wolfSSL_get_error()を呼び出してSSL_ERROR_WANT_READが返される場合と同様です。基礎となるエラー状態がSSL_ERROR_WANT_READの場合、この関数は1を返し、それ以外の場合は0を返します。
Parameters:
- ssl wolfSSL_new()で作成されたSSLセッションへのポインタ。
See:
Return:
- 1 wolfSSL_get_error()がSSL_ERROR_WANT_READを返す場合。基礎となるI/Oに読み取り可能なデータがあります。
- 0 SSL_ERROR_WANT_READエラー状態がない場合。
Example
int ret;
WOLFSSL* ssl = 0;
...
ret = wolfSSL_want_read(ssl);
if (ret == 1) {
// 基礎となるI/Oに読み取り可能なデータがあります(SSL_ERROR_WANT_READ)
}
function wolfSSL_want_write
int wolfSSL_want_write(
WOLFSSL *
)
この関数は、wolfSSL_get_error()を呼び出してSSL_ERROR_WANT_WRITEが返される場合と同様です。基礎となるエラー状態がSSL_ERROR_WANT_WRITEの場合、この関数は1を返し、それ以外の場合は0を返します。
Parameters:
- ssl wolfSSL_new()で作成されたSSLセッションへのポインタ。
See:
Return:
- 1 wolfSSL_get_error()がSSL_ERROR_WANT_WRITEを返す場合。基礎となるSSL接続で進行するために、基礎となるI/Oにデータを書き込む必要があります。
- 0 SSL_ERROR_WANT_WRITEエラー状態がない場合。
Example
int ret;
WOLFSSL* ssl = 0;
...
ret = wolfSSL_want_write(ssl);
if (ret == 1) {
// 基礎となるI/Oにデータを書き込む必要があります(SSL_ERROR_WANT_WRITE)
}
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_Init
int wolfSSL_Init(
void
)
使用するためにwolfSSLライブラリを初期化します。アプリケーションごとに1回、ライブラリへの他の呼び出しの前に呼び出す必要があります。
See: wolfSSL_Cleanup
Return:
- SSL_SUCCESS 成功した場合に返されます。
- BAD_MUTEX_E 返される可能性のあるエラーです。
- WC_INIT_E wolfCrypt初期化エラーが返されます。
Example
int ret = 0;
ret = wolfSSL_Init();
if (ret != SSL_SUCCESS) {
wolfSSLライブラリの初期化に失敗しました
}
function wolfSSL_Cleanup
int wolfSSL_Cleanup(
void
)
wolfSSLライブラリをこれ以上使用しないように初期化を解除します。呼び出す必要はありませんが、ライブラリが使用したリソースを解放します。
See: wolfSSL_Init
Return:
- SSL_SUCCESS エラーなしで返されます。
- BAD_MUTEX_E mutexエラーが返されます。
Example
wolfSSL_Cleanup();
function wolfSSL_lib_version
const char * wolfSSL_lib_version(
void
)
この関数は現在のライブラリバージョンを返します。
Parameters:
- none パラメータなし。
See: word32_wolfSSL_lib_version_hex
Return: LIBWOLFSSL_VERSION_STRING バージョンを定義するconst charポインタ。
Example
char version[MAXSIZE];
version = wolfSSL_KeepArrays();
…
if(version != ExpectedVersion){
// 不一致ケースを処理
}
function wolfSSL_lib_version_hex
word32 wolfSSL_lib_version_hex(
void
)
この関数は現在のライブラリバージョンを16進表記で返します。
Parameters:
- none パラメータなし。
See: wolfSSL_lib_version
Return: LILBWOLFSSL_VERSION_HEX wolfssl/version.hで定義された16進バージョンを返します。
Example
word32 libV;
libV = wolfSSL_lib_version_hex();
if(libV != EXPECTED_HEX){
// 予期しない値の処理方法
} else {
// libVの期待される結果
}
function wolfSSL_negotiate
int wolfSSL_negotiate(
WOLFSSL * ssl
)
SSLメソッドの側面に基づいて実際の接続または受け入れを実行します。クライアント側から呼び出された場合はwolfSSL_connect()が実行され、サーバー側から呼び出された場合はwolfSSL_accept()が実行されます。
Parameters:
- ssl wolfSSL_new()で作成されたSSLセッションへのポインタ。
See:
- SSL_connect
- SSL_accept
Return:
- SSL_SUCCESS 成功した場合に返されます(注:古いバージョンでは0が返されます)。
- SSL_FATAL_ERROR 基礎となる呼び出しがエラーになった場合に返されます。特定のエラーコードを取得するにはwolfSSL_get_error()を使用してください。
Example
int ret = SSL_FATAL_ERROR;
WOLFSSL* ssl = 0;
...
ret = wolfSSL_negotiate(ssl);
if (ret == SSL_FATAL_ERROR) {
// SSL確立に失敗しました
int error_code = wolfSSL_get_error(ssl);
...
}
...
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_get_peer_chain
WOLFSSL_X509_CHAIN * wolfSSL_get_peer_chain(
WOLFSSL * ssl
)
ピアの証明書チェーンを取得します。
Parameters:
- ssl 有効なWOLFSSL構造体へのポインタ。
See:
Return:
- chain 成功した場合、呼び出しはピアの証明書チェーンを返します。
- 0 無効なWOLFSSLポインタが関数に渡された場合に返されます。
Example
none
function wolfSSL_get_chain_count
int wolfSSL_get_chain_count(
WOLFSSL_X509_CHAIN * chain
)
ピアの証明書チェーン数を取得します。
Parameters:
- chain 有効なWOLFSSL_X509_CHAIN構造体へのポインタ。
See:
Return:
- Success 成功した場合、呼び出しはピアの証明書チェーン数を返します。
- 0 無効なchainポインタが関数に渡された場合に返されます。
Example
none
function wolfSSL_get_chain_length
int wolfSSL_get_chain_length(
WOLFSSL_X509_CHAIN * chain,
int idx
)
インデックス(idx)におけるピアのASN1.DER証明書の長さをバイト単位で取得します。
Parameters:
- chain 有効なWOLFSSL_X509_CHAIN構造体へのポインタ。
- idx チェーンの開始インデックス。
See:
Return:
- Success 成功した場合、呼び出しはインデックスによるピアの証明書の長さをバイト単位で返します。
- 0 無効なchainポインタが関数に渡された場合に返されます。
Example
none
function wolfSSL_get_chain_cert
unsigned char * wolfSSL_get_chain_cert(
WOLFSSL_X509_CHAIN * chain,
int idx
)
インデックス(idx)におけるピアのASN1.DER証明書を取得します。
Parameters:
- chain 有効なWOLFSSL_X509_CHAIN構造体へのポインタ。
- idx チェーンの開始インデックス。
See:
Return:
- Success 成功した場合、呼び出しはインデックスによるピアの証明書を返します。
- 0 無効なchainポインタが関数に渡された場合に返されます。
Example
none
function wolfSSL_get_chain_X509
WOLFSSL_X509 * wolfSSL_get_chain_X509(
WOLFSSL_X509_CHAIN * chain,
int idx
)
この関数は証明書チェーンからインデックス(idx)にあるピアのwolfSSL_X509_certificateを取得します。
Parameters:
- chain 動的メモリを使用しないSESSION_CACHEに使用されるWOLFSSL_X509_CHAINへのポインタ。
- idx WOLFSSL_X509証明書のインデックス。
See:
- InitDecodedCert
- ParseCertRelative
- CopyDecodedToX509
Return: pointer WOLFSSL_X509構造体へのポインタを返します。
返されたメモリをwolfSSL_FreeX509()を呼び出して解放することはユーザーの責任です。
Example
WOLFSSL_X509_CHAIN* chain = &session->chain;
int idx = 999; // idxを設定
...
WOLFSSL_X509_CHAIN ptr;
prt = wolfSSL_get_chain_X509(chain, idx);
if(ptr != NULL){
// ptrは指定されたインデックスの証明書を含みます
wolfSSL_FreeX509(ptr);
} else {
// ptrはNULLです
}
function wolfSSL_get_chain_cert_pem
int wolfSSL_get_chain_cert_pem(
WOLFSSL_X509_CHAIN * chain,
int idx,
unsigned char * buf,
int inLen,
int * outLen
)
インデックス(idx)におけるピアのPEM証明書を取得します。
Parameters:
- chain 有効なWOLFSSL_X509_CHAIN構造体へのポインタ。
- idx チェーンの開始インデックス。
See:
Return:
- Success 成功した場合、呼び出しはインデックスによるピアの証明書を返します。
- 0 無効なchainポインタが関数に渡された場合に返されます。
Example
none
function wolfSSL_get_sessionID
const unsigned char * wolfSSL_get_sessionID(
const WOLFSSL_SESSION * s
)
セッションIDを取得します。セッションIDは常に32バイト長です。
Parameters:
- session 有効なwolfsslセッションへのポインタ。
See: SSL_get_session
Return: id セッションID。
Example
none
function wolfSSL_X509_get_serial_number
int wolfSSL_X509_get_serial_number(
WOLFSSL_X509 * x509,
unsigned char * in,
int * inOutSz
)
ピアの証明書シリアル番号を取得します。シリアル番号バッファ(in)は少なくとも32バイト長であり、入力としてinOutSz引数として提供される必要があります。関数を呼び出した後、inOutSzにはinバッファに書き込まれた実際の長さ(バイト単位)が保持されます。
Parameters:
- in シリアル番号バッファで、少なくとも32バイト長である必要があります。
- inOutSz inバッファに書き込まれた実際の長さ(バイト単位)を保持します。
See: SSL_get_peer_certificate
Return:
- SSL_SUCCESS 成功時。
- BAD_FUNC_ARG 不正な関数引数が検出された場合に返されます。
Example
none
function wolfSSL_X509_get_subjectCN
char * wolfSSL_X509_get_subjectCN(
WOLFSSL_X509 *
)
証明書からサブジェクトのコモンネームを返します。
Parameters:
- x509 証明書情報を含むWOLFSSL_X509構造体へのポインタ。
See:
- wolfSSL_X509_Name_get_entry
- wolfSSL_X509_get_next_altname
- wolfSSL_X509_get_issuer_name
- wolfSSL_X509_get_subject_name
Return:
- NULL x509構造体がnullの場合に返されます。
- string 成功時にはサブジェクトのコモンネームの文字列表現が返されます。
Example
WOLFSSL_X509 x509 = (WOLFSSL_X509*)XMALLOC(sizeof(WOLFSSL_X509), NULL,
DYNAMIC_TYPE_X509);
...
int x509Cn = wolfSSL_X509_get_subjectCN(x509);
if(x509Cn == NULL){
// NULLケースを処理
} else {
// x509Cnにはコモンネームが含まれる
}
function wolfSSL_X509_get_der
const unsigned char * wolfSSL_X509_get_der(
WOLFSSL_X509 * x509,
int * outSz
)
この関数は、WOLFSSL_X509構造体内のDERエンコードされた証明書を取得します。
Parameters:
- x509 証明書情報を含むWOLFSSL_X509構造体へのポインタ。
- outSz WOLFSSL_X509構造体のderBufferメンバの長さ。
See:
- wolfSSL_X509_version
- wolfSSL_X509_Name_get_entry
- wolfSSL_X509_get_next_altname
- wolfSSL_X509_get_issuer_name
- wolfSSL_X509_get_subject_name
Return:
- buffer この関数は、DerBuffer構造体のbufferメンバを返します。これはbyte型です。
- NULL x509またはoutSzパラメータがNULLの場合に返されます。
Example
WOLFSSL_X509 x509 = (WOLFSSL_X509*)XMALLOC(sizeof(WOLFSSL_X509), NULL,
DYNAMIC_TYPE_X509);
int* outSz; // 初期化
...
byte* x509Der = wolfSSL_X509_get_der(x509, outSz);
if(x509Der == NULL){
// 失敗ケース、パラメータの1つがNULLだった
}
function wolfSSL_X509_get_notAfter
WOLFSSL_ASN1_TIME * wolfSSL_X509_get_notAfter(
WOLFSSL_X509 *
)
この関数は、x509がNULLであるかどうかをチェックし、そうでない場合はx509構造体のnotAfterメンバを返します。
Parameters:
- x509 WOLFSSL_X509構造体へのポインタ。
See: wolfSSL_X509_get_notBefore
Return:
- pointer x509構造体のnotAfterメンバへのASN1_TIMEを持つ構造体へのポインタ。
- NULL x509オブジェクトがNULLの場合に返されます。
Example
WOLFSSL_X509* x509 = (WOLFSSL_X509)XMALOC(sizeof(WOLFSSL_X509), NULL,
DYNAMIC_TYPE_X509) ;
...
const WOLFSSL_ASN1_TIME* notAfter = wolfSSL_X509_get_notAfter(x509);
if(notAfter == NULL){
// 失敗ケース、x509オブジェクトがnull
}
function wolfSSL_X509_version
int wolfSSL_X509_version(
WOLFSSL_X509 *
)
この関数は、X509証明書のバージョンを取得します。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
See:
- wolfSSL_X509_get_subject_name
- wolfSSL_X509_get_issuer_name
- wolfSSL_X509_get_isCA
- wolfSSL_get_peer_certificate
Return:
- 0 x509構造体がNULLの場合に返されます。
- version x509構造体に格納されているバージョンが返されます。
Example
WOLFSSL_X509* x509;
int version;
...
version = wolfSSL_X509_version(x509);
if(!version){
// 関数は0を返した、失敗ケース
}
function wolfSSL_X509_d2i_fp
WOLFSSL_X509 * wolfSSL_X509_d2i_fp(
WOLFSSL_X509 ** x509,
FILE * file
)
NO_STDIO_FILESYSTEMが定義されている場合、この関数はヒープメモリを割り当て、WOLFSSL_X509構造体を初期化し、そのポインタを返します。
Parameters:
- x509 WOLFSSL_X509ポインタへのポインタ。
- file FILEへのポインタである定義された型。
See:
- wolfSSL_X509_d2i
- XFTELL
- XREWIND
- XFSEEK
Return:
- *WOLFSSL_X509 関数が正常に実行された場合、WOLFSSL_X509構造体ポインタが返されます。
- NULL XFTELLマクロの呼び出しが負の値を返した場合。
Example
WOLFSSL_X509* x509a = (WOLFSSL_X509*)XMALLOC(sizeof(WOLFSSL_X509), NULL,
DYNAMIC_TYPE_X509);
WOLFSSL_X509** x509 = x509a;
XFILE file; // (struct fs_file*にマップされる)
...
WOLFSSL_X509* newX509 = wolfSSL_X509_d2i_fp(x509, file);
if(newX509 == NULL){
// 関数はNULLを返した
}
function wolfSSL_X509_load_certificate_file
WOLFSSL_X509 * wolfSSL_X509_load_certificate_file(
const char * fname,
int format
)
この関数は、x509証明書をメモリにロードします。
Parameters:
- fname ロードする証明書ファイル。
- format 証明書のフォーマット。
See:
- InitDecodedCert
- PemToDer
- wolfSSL_get_certificate
- AssertNotNull
Return:
- pointer 正常に実行されると、WOLFSSL_X509構造体へのポインタが返されます。
- NULL 証明書を書き込むことができなかった場合に返されます。
Example
#define cliCert "certs/client-cert.pem"
…
X509* x509;
…
x509 = wolfSSL_X509_load_certificate_file(cliCert, SSL_FILETYPE_PEM);
AssertNotNull(x509);
function wolfSSL_X509_get_device_type
unsigned char * wolfSSL_X509_get_device_type(
WOLFSSL_X509 * x509,
unsigned char * in,
int * inOutSz
)
この関数は、x509構造体からデバイスタイプをバッファにコピーします。
Parameters:
- x509 WOLFSSL_X509_new()で作成されたWOLFSSL_X509構造体へのポインタ。
- in デバイスタイプ(バッファ)を保持するバイト型へのポインタ。
- inOutSz パラメータinOutSzまたはx509構造体のdeviceTypeSzメンバのいずれか小さい方。
See:
- wolfSSL_X509_get_hw_type
- wolfSSL_X509_get_hw_serial_number
- wolfSSL_X509_d2i
Return:
- pointer x509構造体からデバイスタイプを保持するバイトポインタが返されます。
- NULL バッファサイズがNULLの場合に返されます。
Example
WOLFSSL_X509* x509 = (WOLFSSL_X509)XMALOC(sizeof(WOLFSSL_X509), NULL,
DYNAMIC_TYPE_X509);
byte* in;
int* inOutSz;
...
byte* deviceType = wolfSSL_X509_get_device_type(x509, in, inOutSz);
if(!deviceType){
// 失敗ケース、NULLが返された
}
function wolfSSL_X509_get_hw_type
unsigned char * wolfSSL_X509_get_hw_type(
WOLFSSL_X509 * x509,
unsigned char * in,
int * inOutSz
)
この関数は、WOLFSSL_X509構造体のhwTypeメンバをバッファにコピーします。
Parameters:
- x509 証明書情報を含むWOLFSSL_X509構造体へのポインタ。
- in バッファを表すbyte型へのポインタ。
- inOutSz バッファのサイズを表すint型へのポインタ。
See:
Return:
- byte 関数は、以前にWOLFSSL_X509構造体のhwTypeメンバに保持されていたデータのバイト型を返します。
- NULL inOutSzがNULLの場合に返されます。
Example
WOLFSSL_X509* x509; // X509証明書
byte* in; // バッファを初期化
int* inOutSz; // バッファのサイズを保持
...
byte* hwType = wolfSSL_X509_get_hw_type(x509, in, inOutSz);
if(hwType == NULL){
// 失敗ケース、関数はNULLを返した
}
function wolfSSL_X509_get_hw_serial_number
unsigned char * wolfSSL_X509_get_hw_serial_number(
WOLFSSL_X509 * x509,
unsigned char * in,
int * inOutSz
)
この関数は、x509オブジェクトのhwSerialNumメンバを返します。
Parameters:
- x509 証明書情報を含むWOLFSSL_X509構造体へのポインタ。
- in コピー先のバッファへのポインタ。
- inOutSz バッファのサイズへのポインタ。
See:
- wolfSSL_X509_get_subject_name
- wolfSSL_X509_get_issuer_name
- wolfSSL_X509_get_isCA
- wolfSSL_get_peer_certificate
- wolfSSL_X509_version
Return: pointer 関数は、x509オブジェクトからロードされたシリアル番号を含むinバッファへのバイトポインタを返します。
Example
char* serial;
byte* in;
int* inOutSz;
WOLFSSL_X509 x509;
...
serial = wolfSSL_X509_get_hw_serial_number(x509, in, inOutSz);
if(serial == NULL || serial <= 0){
// 失敗ケース
}
function wolfSSL_connect_cert
int wolfSSL_connect_cert(
WOLFSSL * ssl
)
この関数はクライアント側で呼び出され、ピアの証明書チェーンを取得するのに十分な長さだけサーバーとのSSL/TLSハンドシェイクを開始します。この関数が呼び出されるとき、基礎となる通信チャネルはすでに設定されています。wolfSSL_connect_cert()は、ブロッキングI/Oと非ブロッキングI/Oの両方で動作します。基礎となるI/Oが非ブロッキングの場合、wolfSSL_connect_cert()は、基礎となるI/OがwolfSSL_connect_cert()がハンドシェイクを続行するために必要な処理を満たせないときに戻ります。この場合、wolfSSL_get_error()の呼び出しはSSL_ERROR_WANT_READまたはSSL_ERROR_WANT_WRITEのいずれかを生成します。呼び出しプロセスは、基礎となるI/Oが準備できたときにwolfSSL_connect_cert()の呼び出しを繰り返す必要があり、wolfSSLは中断した場所から再開します。非ブロッキングソケットを使用する場合、何もする必要はありませんが、select()を使用して必要な条件をチェックできます。基礎となるI/OがブロッキングI/Oの場合、wolfSSL_connect_cert()はピアの証明書チェーンが受信されたときにのみ戻ります。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
See:
Return:
- SSL_SUCCESS 成功時。
- SSL_FAILURE SSLセッションパラメータがNULLの場合に返されます。
- SSL_FATAL_ERROR エラーが発生した場合に返されます。より詳細なエラーコードを取得するには、wolfSSL_get_error()を呼び出してください。
Example
int ret = 0;
int err = 0;
WOLFSSL* ssl;
char buffer[80];
...
ret = wolfSSL_connect_cert(ssl);
if (ret != SSL_SUCCESS) {
err = wolfSSL_get_error(ssl, ret);
printf("error = %d, %s\n", err, wolfSSL_ERR_error_string(err, buffer));
}
function wolfSSL_d2i_PKCS12_bio
WC_PKCS12 * wolfSSL_d2i_PKCS12_bio(
WOLFSSL_BIO * bio,
WC_PKCS12 ** pkcs12
)
wolfSSL_d2i_PKCS12_bio(d2i_PKCS12_bio)は、WOLFSSL_BIOからWC_PKCS12構造体へPKCS12情報をコピーします。情報は、構造体内でコンテンツ情報のリストとして分割され、オプションのMAC情報を保持する構造体も含まれます。情報がWC_PKCS12構造体内でチャンク(ただし復号されていない)に分割された後、呼び出すことによって解析および復号できます。
Parameters:
- bio PKCS12バッファを読み取るWOLFSSL_BIO構造体。
- pkcs12 作成された新しいPKCS12構造体用のWC_PKCS12構造体ポインタ。NULLでも可。
See:
- wolfSSL_PKCS12_parse
- wc_PKCS12_free
Return:
- WC_PKCS12 WC_PKCS12構造体へのポインタ。
- Failure 関数が失敗した場合、NULLを返します。
Example
WC_PKCS12* pkcs;
WOLFSSL_BIO* bio;
WOLFSSL_X509* cert;
WOLFSSL_EVP_PKEY* pkey;
STACK_OF(X509) certs;
//bioはPKCS12ファイルを読み込みます。
wolfSSL_d2i_PKCS12_bio(bio, &pkcs);
wolfSSL_PKCS12_parse(pkcs, "a password", &pkey, &cert, &certs)
wc_PKCS12_free(pkcs)
//cert、pkey、およびオプションでcertsスタックを使用します。
function wolfSSL_i2d_PKCS12_bio
WC_PKCS12 * wolfSSL_i2d_PKCS12_bio(
WOLFSSL_BIO * bio,
WC_PKCS12 * pkcs12
)
wolfSSL_i2d_PKCS12_bio(i2d_PKCS12_bio)は、WC_PKCS12構造体からWOLFSSL_BIOへ証明書情報をコピーします。
Parameters:
- bio PKCS12バッファを書き込むWOLFSSL_BIO構造体。
- pkcs12 入力としてのPKCS12構造体用のWC_PKCS12構造体。
See:
- wolfSSL_PKCS12_parse
- wc_PKCS12_free
Return:
- 1 成功時。
- Failure 0。
Example
WC_PKCS12 pkcs12;
FILE *f;
byte buffer[5300];
char file[] = "./test.p12";
int bytes;
WOLFSSL_BIO* bio;
pkcs12 = wc_PKCS12_new();
f = fopen(file, "rb");
bytes = (int)fread(buffer, 1, sizeof(buffer), f);
fclose(f);
//DERファイルを内部構造に変換します。
wc_d2i_PKCS12(buffer, bytes, pkcs12);
bio = wolfSSL_BIO_new(wolfSSL_BIO_s_mem());
//PKCS12構造体をbioに変換します。
wolfSSL_i2d_PKCS12_bio(bio, pkcs12);
wc_PKCS12_free(pkcs)
//bioを使用します。
function wolfSSL_PKCS12_parse
int wolfSSL_PKCS12_parse(
WC_PKCS12 * pkcs12,
const char * psw,
WOLFSSL_EVP_PKEY ** pkey,
WOLFSSL_X509 ** cert,
WOLF_STACK_OF(WOLFSSL_X509) ** ca
)
PKCS12は、configureコマンドに–enable-opensslextraを追加することで有効にできます。復号にトリプルDESとRC4を使用できるため、opensslextraを有効にする際にこれらの機能も有効にすることを推奨します(–enable-des3 –enable-arc4)。wolfSSLは現在RC2をサポートしていないため、RC2での復号は現在利用できません。これは、OpenSSLコマンドラインで.p12ファイルを作成する際に使用されるデフォルトの暗号化スキームで顕著になる可能性があります。wolfSSL_PKCS12_parse(PKCS12_parse)。この関数が最初に行うことは、存在する場合にMACが正しいかどうかを確認することです。MACが失敗した場合、関数は返され、保存されているコンテンツ情報の復号を試みません。この関数は、各コンテンツ情報を解析してバッグタイプを探し、バッグタイプが既知の場合、必要に応じて復号され、構築中の証明書リストまたは見つかった鍵として保存されます。すべてのバッグを解析した後、見つかった鍵は証明書リストと比較され、一致するペアが見つかります。この一致するペアは、鍵と証明書として返されます。オプションで、見つかった証明書リストはSTACK_OFの証明書として返されます。現時点では、CRL、Secret、またはSafeContentsバッグはスキップされ、解析されません。これらまたは他の「不明な」バッグがスキップされているかどうかは、デバッグ出力を表示することで確認できます。フレンドリ名などの追加属性は、PKCS12ファイルを解析する際にスキップされます。
Parameters:
- pkcs12 解析するWC_PKCS12構造体。
- paswd PKCS12を復号するためのパスワード。
- pkey PKCS12から復号された秘密鍵を保持する構造体。
- cert PKCS12から復号された証明書を保持する構造体。
- stack 追加の証明書のオプションスタック。
See:
- wolfSSL_d2i_PKCS12_bio
- wc_PKCS12_free
Return:
- SSL_SUCCESS PKCS12の解析が成功した場合。
- SSL_FAILURE エラーケースに遭遇した場合。
Example
WC_PKCS12* pkcs;
WOLFSSL_BIO* bio;
WOLFSSL_X509* cert;
WOLFSSL_EVP_PKEY* pkey;
STACK_OF(X509) certs;
//bioはPKCS12ファイルを読み込みます。
wolfSSL_d2i_PKCS12_bio(bio, &pkcs);
wolfSSL_PKCS12_parse(pkcs, "a password", &pkey, &cert, &certs)
wc_PKCS12_free(pkcs)
//cert、pkey、およびオプションでcertsスタックを使用します。
function wolfSSL_SetTmpDH
int wolfSSL_SetTmpDH(
WOLFSSL * ssl,
const unsigned char * p,
int pSz,
const unsigned char * g,
int gSz
)
サーバDiffie-Hellmanエフェメラルパラメータの設定。この関数は、サーバがDHEを使用する暗号スイートをネゴシエートする場合に使用されるグループパラメータを設定します。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
- p Diffie-Hellman素数パラメータ。
- pSz pのサイズ。
- g Diffie-Hellman「生成元」パラメータ。
- gSz gのサイズ。
See: SSL_accept
Return:
- SSL_SUCCESS 成功時。
- MEMORY_ERROR メモリエラーが発生した場合に返されます。
- SIDE_ERROR この関数がSSLサーバではなくSSLクライアントで呼び出された場合に返されます。
Example
WOLFSSL* ssl;
static unsigned char p[] = {...};
static unsigned char g[] = {...};
...
wolfSSL_SetTmpDH(ssl, p, sizeof(p), g, sizeof(g));
function wolfSSL_SetTmpDH_buffer
int wolfSSL_SetTmpDH_buffer(
WOLFSSL * ssl,
const unsigned char * b,
long sz,
int format
)
この関数は、Diffie-HellmanパラメータのラッパーであるwolfSSL_SetTMpDH_buffer_wrapperを呼び出します。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
- buf wolfSSL_SetTMpDH_file_wrapperから渡される割り当てられたバッファ。
- sz ファイル(wolfSSL_SetTmpDH_file_wrapper内のfname)のサイズを保持するlong int型。
- format wolfSSL_SetTmpDH_file_wrapper()から渡される証明書形式の表現である整数型。
See:
- wolfSSL_SetTmpDH_buffer_wrapper
- wc_DhParamsLoad
- wolfSSL_SetTmpDH
- PemToDer
- wolfSSL_CTX_SetTmpDH
- wolfSSL_CTX_SetTmpDH_file
Return:
- SSL_SUCCESS 実行が成功した場合。
- SSL_BAD_FILETYPE ファイルタイプがPEMでなく、ASN.1でもない場合。また、wc_DhParamsLoadが正常に返されなかった場合にも返されます。
- SSL_NO_PEM_HEADER PEMヘッダが存在しない場合、PemToDerから返されます。
- SSL_BAD_FILE PemToDerでファイルエラーがあった場合に返されます。
- SSL_FATAL_ERROR コピーエラーがあった場合、PemToDerから返されます。
- MEMORY_E メモリ割り当てエラーがあった場合。
- BAD_FUNC_ARG WOLFSSL構造体がNULLの場合、またはサブルーチンにNULL引数が渡された場合に返されます。
- DH_KEY_SIZE_E wolfSSL_SetTmpDH()またはwolfSSL_CTX_SetTmpDH()でキーサイズエラーがある場合に返されます。
- SIDE_ERROR wolfSSL_SetTmpDHでサーバ側でない場合に返されます。
Example
Static int wolfSSL_SetTmpDH_file_wrapper(WOLFSSL_CTX* ctx, WOLFSSL* ssl,
Const char* fname, int format);
long sz = 0;
byte* myBuffer = staticBuffer[FILE_BUFFER_SIZE];
…
if(ssl)
ret = wolfSSL_SetTmpDH_buffer(ssl, myBuffer, sz, format);
function wolfSSL_SetTmpDH_file
int wolfSSL_SetTmpDH_file(
WOLFSSL * ssl,
const char * f,
int format
)
この関数は、wolfSSL_SetTmpDH_file_wrapperを呼び出してサーバDiffie-Hellmanパラメータを設定します。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
- fname 証明書を保持する定数char型ポインタ。
- format 証明書の形式を保持する整数型。
See:
- wolfSSL_CTX_SetTmpDH_file
- wolfSSL_SetTmpDH_file_wrapper
- wolfSSL_SetTmpDH_buffer
- wolfSSL_CTX_SetTmpDH_buffer
- wolfSSL_SetTmpDH_buffer_wrapper
- wolfSSL_SetTmpDH
- wolfSSL_CTX_SetTmpDH
Return:
- SSL_SUCCESS この関数とそのサブルーチンが正常に完了した場合に返されます。
- MEMORY_E この関数またはサブルーチンでメモリ割り当てが失敗した場合に返されます。
- SIDE_ERROR WOLFSSL構造体内のOptions構造体のsideメンバがサーバ側でない場合。
- SSL_BAD_FILETYPE 証明書が一連のチェックに失敗した場合に返されます。
- DH_KEY_SIZE_E DHパラメータの鍵サイズがWOLFSSL構造体のminDhKeySzメンバの値より小さい場合に返されます。
- DH_KEY_SIZE_E DHパラメータの鍵サイズがWOLFSSL構造体のmaxDhKeySzメンバの値より大きい場合に返されます。
- BAD_FUNC_ARG WOLFSSL構造体など、許可されていない引数値がNULLの場合に返されます。
Example
WOLFSSL* ssl = wolfSSL_new(ctx);
const char* dhParam;
…
AssertIntNE(SSL_SUCCESS,
wolfSSL_SetTmpDH_file(ssl, dhParam, SSL_FILETYPE_PEM));
function wolfSSL_CTX_SetTmpDH
int wolfSSL_CTX_SetTmpDH(
WOLFSSL_CTX * ctx,
const unsigned char * p,
int pSz,
const unsigned char * g,
int gSz
)
サーバCTX Diffie-Hellmanのパラメータを設定します。
Parameters:
- ctx wolfSSL_CTX_new()を使用して作成されたWOLFSSL_CTX構造体へのポインタ。
- p serverDH_P構造体のbufferメンバに読み込まれる定数unsigned char型ポインタ。
- pSz pのサイズを表すint型で、MAX_DH_SIZEに初期化されます。
- g serverDH_G構造体のbufferメンバに読み込まれる定数unsigned char型ポインタ。
- gSz gのサイズを表すint型で、MAX_DH_SIZEに初期化されます。
See:
Return:
- SSL_SUCCESS 関数とすべてのサブルーチンがエラーなく返された場合に返されます。
- BAD_FUNC_ARG CTX、pまたはgパラメータがNULLの場合に返されます。
- DH_KEY_SIZE_E DHパラメータの鍵サイズがWOLFSSL_CTX構造体のminDhKeySzメンバの値より小さい場合に返されます。
- DH_KEY_SIZE_E DHパラメータの鍵サイズがWOLFSSL_CTX構造体のmaxDhKeySzメンバの値より大きい場合に返されます。
- MEMORY_E この関数またはサブルーチンでメモリ割り当てが失敗した場合に返されます。
Exmaple
WOLFSSL_CTX* ctx = WOLFSSL_CTX_new( protocol );
byte* p;
byte* g;
word32 pSz = (word32)sizeof(p)/sizeof(byte);
word32 gSz = (word32)sizeof(g)/sizeof(byte);
…
int ret = wolfSSL_CTX_SetTmpDH(ctx, p, pSz, g, gSz);
if(ret != SSL_SUCCESS){
// 失敗ケース
}
function wolfSSL_CTX_SetTmpDH_buffer
int wolfSSL_CTX_SetTmpDH_buffer(
WOLFSSL_CTX * ctx,
const unsigned char * b,
long sz,
int format
)
wolfSSL_SetTmpDH_buffer_wrapperを呼び出すラッパー関数です。
Parameters:
- ctx wolfSSL_CTX_new()を使用して作成されたWOLFSSL構造体へのポインタ。
- buf バッファとして割り当てられ、wolfSSL_SetTmpDH_buffer_wrapperに渡される定数unsigned char型へのポインタ。
- sz wolfSSL_SetTmpDH_file_wrapper()のfnameパラメータから導出されるlong整数型。
- format wolfSSL_SetTmpDH_file_wrapper()から渡される整数型。
See:
- wolfSSL_SetTmpDH_buffer_wrapper
- wolfSSL_SetTMpDH_buffer
- wolfSSL_SetTmpDH_file_wrapper
- wolfSSL_CTX_SetTmpDH_file
Return:
- 0 実行が成功した場合に返されます。
- BAD_FUNC_ARG ctxまたはbufパラメータがNULLの場合に返されます。
- MEMORY_E メモリ割り当てエラーがある場合。
- SSL_BAD_FILETYPE formatが正しくない場合に返されます。
Example
static int wolfSSL_SetTmpDH_file_wrapper(WOLFSSL_CTX* ctx, WOLFSSL* ssl,
Const char* fname, int format);
#ifdef WOLFSSL_SMALL_STACK
byte staticBuffer[1]; // ヒープ使用を強制
#else
byte* staticBuffer;
long sz = 0;
…
if(ssl){
ret = wolfSSL_SetTmpDH_buffer(ssl, myBuffer, sz, format);
} else {
ret = wolfSSL_CTX_SetTmpDH_buffer(ctx, myBuffer, sz, format);
}
function wolfSSL_CTX_SetTmpDH_file
int wolfSSL_CTX_SetTmpDH_file(
WOLFSSL_CTX * ctx,
const char * f,
int format
)
この関数は、wolfSSL_SetTmpDH_file_wrapperを呼び出してサーバDiffie-Hellmanパラメータを設定します。
Parameters:
- ctx wolfSSL_CTX_new()を使用して作成されたWOLFSSL_CTX構造体へのポインタ。
- fname 証明書ファイルへの定数文字ポインタ。
- format 証明書形式の表現である、wolfSSL_SetTmpDH_file_wrapper()から渡される整数型。
See:
- wolfSSL_SetTmpDH_buffer_wrapper
- wolfSSL_SetTmpDH
- wolfSSL_CTX_SetTmpDH
- wolfSSL_SetTmpDH_buffer
- wolfSSL_CTX_SetTmpDH_buffer
- wolfSSL_SetTmpDH_file_wrapper
- AllocDer
- PemToDer
Return:
- SSL_SUCCESS wolfSSL_SetTmpDH_file_wrapperまたはそのサブルーチンのいずれかが正常に返された場合に返されます。
- MEMORY_E サブルーチンで動的メモリの割り当てが失敗した場合に返されます。
- BAD_FUNC_ARG ctxまたはfnameパラメータがNULLの場合、またはサブルーチンにNULL引数が渡された場合に返されます。
- SSL_BAD_FILE 証明書ファイルを開けない場合、またはwolfSSL_SetTmpDH_file_wrapperからのファイルに対する一連のチェックが失敗した場合に返されます。
- SSL_BAD_FILETYPE wolfSSL_SetTmpDH_buffer_wrapper()から、形式がPEMでもASN.1でもない場合に返されます。
- DH_KEY_SIZE_E DHパラメータの鍵サイズがWOLFSSL_CTX構造体のminDhKeySzメンバの値より小さい場合に返されます。
- DH_KEY_SIZE_E DHパラメータの鍵サイズがWOLFSSL_CTX構造体のmaxDhKeySzメンバの値より大きい場合に返されます。
- SIDE_ERROR サーバ側でない場合、wolfSSL_SetTmpDH()で返されます。
- SSL_NO_PEM_HEADER PEMヘッダがない場合、PemToDerから返されます。
- SSL_FATAL_ERROR メモリコピーの失敗がある場合、PemToDerから返されます。
Example
#define dhParam "certs/dh2048.pem"
#DEFINE aSSERTiNTne(x, y) AssertInt(x, y, !=, ==)
WOLFSSL_CTX* ctx;
…
AssertNotNull(ctx = wolfSSL_CTX_new(wolfSSLv23_client_method()))
…
AssertIntNE(SSL_SUCCESS, wolfSSL_CTX_SetTmpDH_file(NULL, dhParam,
SSL_FILETYPE_PEM));
function wolfSSL_CTX_SetMinDhKey_Sz
int wolfSSL_CTX_SetMinDhKey_Sz(
WOLFSSL_CTX * ctx,
word16
)
この関数は、WOLFSSL_CTX構造体のminDhKeySzメンバにアクセスして、Diffie-Hellman鍵サイズの最小サイズ(ビット単位)を設定します。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
- keySz_bits 最小DH鍵サイズをビット単位で設定するために使用されるword16型。WOLFSSL_CTX構造体はこの情報をminDhKeySzメンバに保持します。
See:
- wolfSSL_SetMinDhKey_Sz
- wolfSSL_CTX_SetMaxDhKey_Sz
- wolfSSL_SetMaxDhKey_Sz
- wolfSSL_GetDhKey_Sz
- wolfSSL_CTX_SetTMpDH_file
Return:
- SSL_SUCCESS 関数が正常に完了した場合に返されます。
- BAD_FUNC_ARG WOLFSSL_CTX構造体がNULLの場合、またはkeySz_bitsが16,000より大きいか8で割り切れない場合に返されます。
Example
public static int CTX_SetMinDhKey_Sz(IntPtr ctx, short minDhKey){
…
return wolfSSL_CTX_SetMinDhKey_Sz(local_ctx, minDhKeyBits);
function wolfSSL_SetMinDhKey_Sz
int wolfSSL_SetMinDhKey_Sz(
WOLFSSL * ssl,
word16 keySz_bits
)
WOLFSSL構造体内のDiffie-Hellman鍵の最小サイズ(ビット単位)を設定します。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
- keySz_bits 最小DH鍵サイズをビット単位で設定するために使用されるword16型。WOLFSSL_CTX構造体はこの情報をminDhKeySzメンバに保持します。
See:
Return:
- SSL_SUCCESS 最小サイズが正常に設定されました。
- BAD_FUNC_ARG WOLFSSL構造体がNULLの場合、またはkeySz_bitsが16,000より大きいか8で割り切れない場合。
Example
WOLFSSL* ssl = wolfSSL_new(ctx);
word16 keySz_bits;
...
if(wolfSSL_SetMinDhKey_Sz(ssl, keySz_bits) != SSL_SUCCESS){
// 設定に失敗しました
}
function wolfSSL_CTX_SetMaxDhKey_Sz
int wolfSSL_CTX_SetMaxDhKey_Sz(
WOLFSSL_CTX * ctx,
word16 keySz_bits
)
この関数は、WOLFSSL_CTX構造体のmaxDhKeySzメンバにアクセスして、Diffie-Hellman鍵サイズの最大サイズ(ビット単位)を設定します。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
- keySz_bits 最大DH鍵サイズをビット単位で設定するために使用されるword16型。WOLFSSL_CTX構造体はこの情報をmaxDhKeySzメンバに保持します。
See:
- wolfSSL_SetMinDhKey_Sz
- wolfSSL_CTX_SetMinDhKey_Sz
- wolfSSL_SetMaxDhKey_Sz
- wolfSSL_GetDhKey_Sz
- wolfSSL_CTX_SetTMpDH_file
Return:
- SSL_SUCCESS 関数が正常に完了した場合に返されます。
- BAD_FUNC_ARG WOLFSSL_CTX構造体がNULLの場合、またはkeySz_bitsが16,000より大きいか8で割り切れない場合に返されます。
Example
public static int CTX_SetMaxDhKey_Sz(IntPtr ctx, short maxDhKey){
…
return wolfSSL_CTX_SetMaxDhKey_Sz(local_ctx, keySz_bits);
function wolfSSL_SetMaxDhKey_Sz
int wolfSSL_SetMaxDhKey_Sz(
WOLFSSL * ssl,
word16 keySz_bits
)
WOLFSSL構造体内のDiffie-Hellman鍵の最大サイズ(ビット単位)を設定します。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
- keySz 最大DH鍵のビットサイズを表すword16型。
See:
Return:
- SSL_SUCCESS 最大サイズが正常に設定されました。
- BAD_FUNC_ARG WOLFSSL構造体がNULLの場合、またはkeySzパラメータが許容サイズより大きいか8で割り切れない場合。
Example
WOLFSSL* ssl = wolfSSL_new(ctx);
word16 keySz;
...
if(wolfSSL_SetMaxDhKey(ssl, keySz) != SSL_SUCCESS){
// 設定に失敗しました
}
function wolfSSL_GetDhKey_Sz
int wolfSSL_GetDhKey_Sz(
WOLFSSL *
)
options構造体のメンバであるdhKeySzの値(ビット単位)を返します。この値は、Diffie-Hellman鍵サイズをバイト単位で表します。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
See:
- wolfSSL_SetMinDhKey_sz
- wolfSSL_CTX_SetMinDhKey_Sz
- wolfSSL_CTX_SetTmpDH
- wolfSSL_SetTmpDH
- wolfSSL_CTX_SetTmpDH_file
Return:
- dhKeySz ssl->options.dhKeySzに保持されている値を返します。これはビット単位のサイズを表す整数値です。
- BAD_FUNC_ARG WOLFSSL構造体がNULLの場合に返されます。
Example
WOLFSSL_CTX* ctx = wolfSSL_CTX_new( protocol method );
WOLFSSL* ssl = wolfSSL_new(ctx);
int dhKeySz;
...
dhKeySz = wolfSSL_GetDhKey_Sz(ssl);
if(dhKeySz == BAD_FUNC_ARG || dhKeySz <= 0){
// 失敗ケース
} else {
// dhKeySzは鍵のサイズを保持しています
}
function wolfSSL_CTX_SetMinRsaKey_Sz
int wolfSSL_CTX_SetMinRsaKey_Sz(
WOLFSSL_CTX * ctx,
short keySz
)
WOLFSSL_CTX構造体とWOLFSSL_CERT_MANAGER構造体の両方で最小RSA鍵サイズを設定します。
Parameters:
- ctx wolfSSL_CTX_new()を使用して作成されたWOLFSSL_CTX構造体へのポインタ。
- keySz ctx構造体とcm構造体のminRsaKeySzに格納され、バイトに変換されるshort整数型。
Return:
- SSL_SUCCESS 関数の実行が成功した場合に返されます。
- BAD_FUNC_ARG ctx構造体がNULLの場合、またはkeySzがゼロ未満か8で割り切れない場合に返されます。
Example
WOLFSSL_CTX* ctx = SSL_CTX_new(method);
(void)minDhKeyBits;
ourCert = myoptarg;
…
minDhKeyBits = atoi(myoptarg);
…
if(wolfSSL_CTX_SetMinRsaKey_Sz(ctx, minRsaKeyBits) != SSL_SUCCESS){
…
function wolfSSL_SetMinRsaKey_Sz
int wolfSSL_SetMinRsaKey_Sz(
WOLFSSL * ssl,
short keySz
)
WOLFSSL構造体にあるRSAの最小許容鍵サイズをビット単位で設定します。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
- keySz 最小鍵をビット単位で表すshort整数値。
See: wolfSSL_CTX_SetMinRsaKey_Sz
Return:
- SSL_SUCCESS 最小値が正常に設定されました。
- BAD_FUNC_ARG ssl構造体がNULLの場合、またはksySzがゼロ未満か8で割り切れない場合に返されます。
Example
WOLFSSL* ssl = wolfSSL_new(ctx);
short keySz;
…
int isSet = wolfSSL_SetMinRsaKey_Sz(ssl, keySz);
if(isSet != SSL_SUCCESS){
設定に失敗しました
}
function wolfSSL_CTX_SetMinEccKey_Sz
int wolfSSL_CTX_SetMinEccKey_Sz(
WOLFSSL_CTX * ssl,
short keySz
)
WOLF_CTX構造体とWOLFSSL_CERT_MANAGER構造体でECC鍵の最小サイズをビット単位で設定します。
Parameters:
- ctx wolfSSL_CTX_new()を使用して作成されたWOLFSSL_CTX構造体へのポインタ。
- keySz 最小ECC鍵サイズをビット単位で表すshort整数型。
Return:
- SSL_SUCCESS 実行が成功し、minEccKeySzメンバが設定された場合に返されます。
- BAD_FUNC_ARG WOLFSSL_CTX構造体がNULLの場合、またはkeySzが負の値か8で割り切れない場合に返されます。
Example
WOLFSSL_CTX* ctx = wolfSSL_CTX_new( protocol method );
short keySz; // 最小鍵サイズ
…
if(wolfSSL_CTX_SetMinEccKey(ctx, keySz) != SSL_SUCCESS){
// 最小鍵サイズの設定に失敗しました
}
function wolfSSL_SetMinEccKey_Sz
int wolfSSL_SetMinEccKey_Sz(
WOLFSSL * ssl,
short keySz
)
options構造体のminEccKeySzメンバの値を設定します。options構造体はWOLFSSL構造体のメンバであり、sslパラメータを通じてアクセスされます。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
- keySz 最小ECC鍵サイズを設定するために使用される値。options構造体に値を設定します。
See:
Return:
- SSL_SUCCESS 関数がoptions構造体のminEccKeySzメンバを正常に設定した場合。
- BAD_FUNC_ARG WOLFSSL_CTX構造体がNULLの場合、または鍵サイズ(keySz)が0未満か8で割り切れない場合。
Example
WOLFSSL* ssl = wolfSSL_new(ctx); // 新しいセッション
short keySz = 999; // 許容される最小鍵サイズに設定すべきです
...
if(wolfSSL_SetMinEccKey_Sz(ssl, keySz) != SSL_SUCCESS){
// 失敗ケース
}
function wolfSSL_make_eap_keys
int wolfSSL_make_eap_keys(
WOLFSSL * ssl,
void * key,
unsigned int len,
const char * label
)
この関数は、マスターシークレットから鍵材料を導出するためにEAP_TLSとEAP-TTLSによって使用されます。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
- key p_hash関数の結果を保持するvoidポインタ変数。
- len key変数の長さを表すunsigned整数。
- label wc_PRF()でコピーされる定数charポインタ。
See:
- wc_PRF
- wc_HmacFinal
- wc_HmacUpdate
Return:
- BUFFER_E バッファの実際のサイズが許容される最大サイズを超えた場合に返されます。
- MEMORY_E メモリ割り当てでエラーが発生した場合に返されます。
Example
WOLFSSL* ssl = wolfSSL_new(ctx);;
void* key;
unsigned int len;
const char* label;
…
return wolfSSL_make_eap_keys(ssl, key, len, label);
function wolfSSL_writev
int wolfSSL_writev(
WOLFSSL * ssl,
const struct iovec * iov,
int iovcnt
)
writevのセマンティクスをシミュレートしますが、SSL_write()の動作とフロント追加が小さい場合があるため、実際には一度にブロック単位では行いません。writevを使用するソフトウェアへの移植を容易にします。
Parameters:
- ssl wolfSSL_new()で作成されたSSLセッションへのポインタ。
- iov 書き込むI/Oベクトルの配列。
- iovcnt iov配列内のベクトル数。
See: wolfSSL_write
Return:
- >0 成功時、書き込まれたバイト数。
- 0 失敗時に返されます。wolfSSL_get_error()を呼び出して特定のエラーコードを取得してください。
- MEMORY_ERROR メモリエラーが発生した場合に返されます。
- SSL_FATAL_ERROR エラーが発生した場合、またはノンブロッキングソケットを使用しているときにSSL_ERROR_WANT_READまたはSSL_ERROR_WANT_WRITEエラーを受信し、アプリケーションがwolfSSL_write()を再度呼び出す必要がある場合に返されます。wolfSSL_get_error()を使用して特定のエラーコードを取得してください。
Example
WOLFSSL* ssl = 0;
char *bufA = "hello\n";
char *bufB = "hello world\n";
int iovcnt;
struct iovec iov[2];
iov[0].iov_base = buffA;
iov[0].iov_len = strlen(buffA);
iov[1].iov_base = buffB;
iov[1].iov_len = strlen(buffB);
iovcnt = 2;
...
ret = wolfSSL_writev(ssl, iov, iovcnt);
// "ret"バイトを書き込みました。または<=0の場合はエラー
function wolfSSL_CTX_UnloadCAs
int wolfSSL_CTX_UnloadCAs(
WOLFSSL_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 *
)
この関数は以前にロードされたすべての信頼されたピア証明書をアンロードするために使用されます。この機能は、マクロ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_load_verify_buffer
int wolfSSL_CTX_load_verify_buffer(
WOLFSSL_CTX * ctx,
const unsigned char * in,
long sz,
int format
)
この関数はCA証明書バッファをWOLFSSLコンテキストにロードします。バッファ非対応版と同様に動作しますが、ファイルの代わりにバッファを入力として呼び出せる点が異なります。バッファはサイズszのin引数によって提供されます。formatはバッファの形式タイプを指定します。SSL_FILETYPE_ASN1またはSSL_FILETYPE_PEMです。形式がPEMであれば、1つのバッファに複数のCA証明書をロードできます。適切な使用方法については例を参照してください。
Parameters:
- ctx wolfSSL_CTX_new()で作成されたSSLコンテキストへのポインタ。
- in CA証明書バッファへのポインタ。
- sz 入力CA証明書バッファ(in)のサイズ。
- format バッファ証明書の形式、SSL_FILETYPE_ASN1またはSSL_FILETYPE_PEM。
See:
- wolfSSL_CTX_load_verify_locations
- wolfSSL_CTX_use_certificate_buffer
- wolfSSL_CTX_use_PrivateKey_buffer
- wolfSSL_CTX_use_certificate_chain_buffer
- wolfSSL_use_certificate_buffer
- wolfSSL_use_PrivateKey_buffer
- wolfSSL_use_certificate_chain_buffer
Return:
- SSL_SUCCESS 成功時。
- SSL_BAD_FILETYPE ファイルの形式が間違っている場合に返されます。
- SSL_BAD_FILE ファイルが存在しない、読み取れない、または破損している場合に返されます。
- MEMORY_E メモリ不足の状態が発生した場合に返されます。
- ASN_INPUT_E ファイルのBase16デコードが失敗した場合に返されます。
- BUFFER_E チェーンバッファが受信バッファより大きい場合に返されます。
Example
int ret = 0;
WOLFSSL_CTX* ctx;
byte certBuff[...];
long sz = sizeof(certBuff);
...
ret = wolfSSL_CTX_load_verify_buffer(ctx, certBuff, sz, SSL_FILETYPE_PEM);
if (ret != SSL_SUCCESS) {
// バッファからのCA証明書のロードエラー
}
...
function wolfSSL_CTX_load_verify_buffer_ex
int wolfSSL_CTX_load_verify_buffer_ex(
WOLFSSL_CTX * ctx,
const unsigned char * in,
long sz,
int format,
int userChain,
word32 flags
)
この関数はCA証明書バッファをWOLFSSLコンテキストにロードします。バッファ非対応版と同様に動作しますが、ファイルの代わりにバッファを入力として呼び出せる点が異なります。バッファはサイズszのin引数によって提供されます。formatはバッファの形式タイプを指定します。SSL_FILETYPE_ASN1またはSSL_FILETYPE_PEMです。形式がPEMであれば、1つのバッファに複数のCA証明書をロードできます。_ex版はPR 2413で追加され、userChainとflagsの追加引数をサポートします。
Parameters:
- ctx wolfSSL_CTX_new()で作成されたSSLコンテキストへのポインタ。
- in CA証明書バッファへのポインタ。
- sz 入力CA証明書バッファ(in)のサイズ。
- format バッファ証明書の形式、SSL_FILETYPE_ASN1またはSSL_FILETYPE_PEM。
- userChain 形式WOLFSSL_FILETYPE_ASN1を使用している場合、これを非ゼロに設定すると、DERのチェーンが提示されていることを示します。
- flags ssl.hのWOLFSSL_LOAD_VERIFY_DEFAULT_FLAGS付近を参照してください。
See:
- wolfSSL_CTX_load_verify_buffer
- wolfSSL_CTX_load_verify_locations
- wolfSSL_CTX_use_certificate_buffer
- wolfSSL_CTX_use_PrivateKey_buffer
- wolfSSL_CTX_use_certificate_chain_buffer
- wolfSSL_use_certificate_buffer
- wolfSSL_use_PrivateKey_buffer
- wolfSSL_use_certificate_chain_buffer
Return:
- SSL_SUCCESS 成功時。
- SSL_BAD_FILETYPE ファイルの形式が間違っている場合に返されます。
- SSL_BAD_FILE ファイルが存在しない、読み取れない、または破損している場合に返されます。
- MEMORY_E メモリ不足の状態が発生した場合に返されます。
- ASN_INPUT_E ファイルのBase16デコードが失敗した場合に返されます。
- BUFFER_E チェーンバッファが受信バッファより大きい場合に返されます。
Example
int ret = 0;
WOLFSSL_CTX* ctx;
byte certBuff[...];
long sz = sizeof(certBuff);
...
// 期限切れ証明書を強制的にロードする例
ret = wolfSSL_CTX_load_verify_buffer_ex(ctx, certBuff, sz, SSL_FILETYPE_PEM,
0, (WOLFSSL_LOAD_FLAG_DATE_ERR_OKAY));
if (ret != SSL_SUCCESS) {
// バッファからのCA証明書のロードエラー
}
...
function wolfSSL_CTX_load_verify_chain_buffer_format
int wolfSSL_CTX_load_verify_chain_buffer_format(
WOLFSSL_CTX * ctx,
const unsigned char * in,
long sz,
int format
)
この関数はCA証明書チェーンバッファをWOLFSSLコンテキストにロードします。バッファ非対応版と同様に動作しますが、ファイルの代わりにバッファを入力として呼び出せる点が異なります。バッファはサイズszのin引数によって提供されます。formatはバッファの形式タイプを指定します。SSL_FILETYPE_ASN1またはSSL_FILETYPE_PEMです。形式がPEMであれば、1つのバッファに複数のCA証明書をロードできます。適切な使用方法については例を参照してください。
Parameters:
- ctx wolfSSL_CTX_new()で作成されたSSLコンテキストへのポインタ。
- in CA証明書バッファへのポインタ。
- sz 入力CA証明書バッファ(in)のサイズ。
- format バッファ証明書の形式、SSL_FILETYPE_ASN1またはSSL_FILETYPE_PEM。
See:
- wolfSSL_CTX_load_verify_locations
- wolfSSL_CTX_use_certificate_buffer
- wolfSSL_CTX_use_PrivateKey_buffer
- wolfSSL_CTX_use_certificate_chain_buffer
- wolfSSL_use_certificate_buffer
- wolfSSL_use_PrivateKey_buffer
- wolfSSL_use_certificate_chain_buffer
Return:
- SSL_SUCCESS 成功時。
- SSL_BAD_FILETYPE ファイルの形式が間違っている場合に返されます。
- SSL_BAD_FILE ファイルが存在しない、読み取れない、または破損している場合に返されます。
- MEMORY_E メモリ不足の状態が発生した場合に返されます。
- ASN_INPUT_E ファイルのBase16デコードが失敗した場合に返されます。
- BUFFER_E チェーンバッファが受信バッファより大きい場合に返されます。
Example
int ret = 0;
WOLFSSL_CTX* ctx;
byte certBuff[...];
long sz = sizeof(certBuff);
...
ret = wolfSSL_CTX_load_verify_chain_buffer_format(ctx,
certBuff, sz, WOLFSSL_FILETYPE_ASN1);
if (ret != SSL_SUCCESS) {
// バッファからのCA証明書のロードエラー
}
...
function wolfSSL_CTX_use_certificate_buffer
int wolfSSL_CTX_use_certificate_buffer(
WOLFSSL_CTX * ctx,
const unsigned char * in,
long sz,
int format
)
この関数は証明書バッファをWOLFSSLコンテキストにロードします。バッファ非対応版と同様に動作しますが、ファイルの代わりにバッファを入力として呼び出せる点が異なります。バッファはサイズszのin引数によって提供されます。formatはバッファの形式タイプを指定します。SSL_FILETYPE_ASN1またはSSL_FILETYPE_PEMです。適切な使用方法については例を参照してください。
Parameters:
- ctx wolfSSL_CTX_new()で作成されたSSLコンテキストへのポインタ。
- in ロードする証明書を含む入力バッファ。
- sz 入力バッファのサイズ。
- format 入力バッファ(in)に格納されている証明書の形式。指定可能な値はSSL_FILETYPE_ASN1またはSSL_FILETYPE_PEMです。
See:
- wolfSSL_CTX_load_verify_buffer
- wolfSSL_CTX_use_PrivateKey_buffer
- wolfSSL_CTX_use_certificate_chain_buffer
- wolfSSL_use_certificate_buffer
- wolfSSL_use_PrivateKey_buffer
- wolfSSL_use_certificate_chain_buffer
Return:
- SSL_SUCCESS 成功時。
- SSL_BAD_FILETYPE ファイルの形式が間違っている場合に返されます。
- SSL_BAD_FILE ファイルが存在しない、読み取れない、または破損している場合に返されます。
- MEMORY_E メモリ不足の状態が発生した場合に返されます。
- ASN_INPUT_E ファイルのBase16デコードが失敗した場合に返されます。
Example
int ret = 0;
WOLFSSL_CTX* ctx;
byte certBuff[...];
long sz = sizeof(certBuff);
...
ret = wolfSSL_CTX_use_certificate_buffer(ctx, certBuff, sz, SSL_FILETYPE_PEM);
if (ret != SSL_SUCCESS) {
// バッファからの証明書のロードエラー
}
...
function wolfSSL_CTX_use_PrivateKey_buffer
int wolfSSL_CTX_use_PrivateKey_buffer(
WOLFSSL_CTX * ctx,
const unsigned char * in,
long sz,
int format
)
この関数は秘密鍵バッファをSSLコンテキストにロードします。バッファ非対応版と同様に動作しますが、ファイルの代わりにバッファを入力として呼び出せる点が異なります。バッファはサイズszのin引数によって提供されます。formatはバッファの形式タイプを指定します。SSL_FILETYPE_ASN1またはSSL_FILETYPE_PEMです。適切な使用方法については例を参照してください。
Parameters:
- ctx wolfSSL_CTX_new()で作成されたSSLコンテキストへのポインタ。
- in ロードする秘密鍵を含む入力バッファ。
- sz 入力バッファのサイズ。
- format 入力バッファ(in)に格納されている秘密鍵の形式。指定可能な値はSSL_FILETYPE_ASN1またはSSL_FILETYPE_PEMです。
See:
- wolfSSL_CTX_load_verify_buffer
- wolfSSL_CTX_use_certificate_buffer
- wolfSSL_CTX_use_certificate_chain_buffer
- wolfSSL_use_certificate_buffer
- wolfSSL_use_PrivateKey_buffer
- wolfSSL_use_certificate_chain_buffer
Return:
- SSL_SUCCESS 成功時。
- SSL_BAD_FILETYPE ファイルの形式が間違っている場合に返されます。
- SSL_BAD_FILE ファイルが存在しない、読み取れない、または破損している場合に返されます。
- MEMORY_E メモリ不足の状態が発生した場合に返されます。
- ASN_INPUT_E ファイルのBase16デコードが失敗した場合に返されます。
- NO_PASSWORD 鍵ファイルが暗号化されているがパスワードが提供されていない場合に返されます。
Example
int ret = 0;
WOLFSSL_CTX* ctx;
byte keyBuff[...];
long sz = sizeof(certBuff);
...
ret = wolfSSL_CTX_use_PrivateKey_buffer(ctx, keyBuff, sz, SSL_FILETYPE_PEM);
if (ret != SSL_SUCCESS) {
// バッファからの秘密鍵のロードエラー
}
...
function wolfSSL_CTX_use_certificate_chain_buffer
int wolfSSL_CTX_use_certificate_chain_buffer(
WOLFSSL_CTX * ctx,
const unsigned char * in,
long sz
)
この関数は証明書チェーンバッファをWOLFSSLコンテキストにロードします。バッファ非対応版と同様に動作しますが、ファイルの代わりにバッファを入力として呼び出せる点が異なります。バッファはサイズszのin引数によって提供されます。バッファはPEM形式で、サブジェクトの証明書から始まり、ルート証明書で終わる必要があります。適切な使用方法については例を参照してください。
Parameters:
- ctx wolfSSL_CTX_new()で作成されたSSLコンテキストへのポインタ。
- in ロードするPEM形式の証明書チェーンを含む入力バッファ。
- sz 入力バッファのサイズ。
See:
- wolfSSL_CTX_load_verify_buffer
- wolfSSL_CTX_use_certificate_buffer
- wolfSSL_CTX_use_PrivateKey_buffer
- wolfSSL_use_certificate_buffer
- wolfSSL_use_PrivateKey_buffer
- wolfSSL_use_certificate_chain_buffer
Return:
- SSL_SUCCESS 成功時。
- SSL_BAD_FILETYPE ファイルの形式が間違っている場合に返されます。
- SSL_BAD_FILE ファイルが存在しない、読み取れない、または破損している場合に返されます。
- MEMORY_E メモリ不足の状態が発生した場合に返されます。
- ASN_INPUT_E ファイルのBase16デコードが失敗した場合に返されます。
- BUFFER_E チェーンバッファが受信バッファより大きい場合に返されます。
Example
int ret = 0;
WOLFSSL_CTX* ctx;
byte certChainBuff[...];
long sz = sizeof(certBuff);
...
ret = wolfSSL_CTX_use_certificate_chain_buffer(ctx, certChainBuff, sz);
if (ret != SSL_SUCCESS) {
// バッファから証明書チェーンの読み込みに失敗
}
...
function wolfSSL_use_certificate_buffer
int wolfSSL_use_certificate_buffer(
WOLFSSL * ssl,
const unsigned char * in,
long sz,
int format
)
この関数は、証明書バッファをWOLFSSLオブジェクトにロードします。バッファなしバージョンと同様に動作しますが、ファイルの代わりにバッファを入力として呼び出すことができる点が異なります。バッファはサイズszのin引数によって提供されます。formatはバッファのフォーマットタイプを指定します。SSL_FILETYPE_ASN1またはSSL_FILETYPE_PEMです。適切な使用方法については例を参照してください。
Parameters:
- ssl wolfSSL_new()で作成されたSSLセッションへのポインタ。
- in ロードする証明書を含むバッファ。
- sz バッファ内の証明書のサイズ。
- format ロードする証明書のフォーマット。指定可能な値はSSL_FILETYPE_ASN1またはSSL_FILETYPE_PEMです。
See:
- wolfSSL_CTX_load_verify_buffer
- wolfSSL_CTX_use_certificate_buffer
- wolfSSL_CTX_use_PrivateKey_buffer
- wolfSSL_CTX_use_certificate_chain_buffer
- wolfSSL_use_PrivateKey_buffer
- wolfSSL_use_certificate_chain_buffer
Return:
- SSL_SUCCESS 成功時。
- SSL_BAD_FILETYPE ファイルのフォーマットが間違っている場合に返されます。
- SSL_BAD_FILE ファイルが存在しない、読み取れない、または破損している場合に返されます。
- MEMORY_E メモリ不足状態が発生した場合に返されます。
- ASN_INPUT_E ファイルのBase16デコードに失敗した場合に返されます。
Example
int ret;
byte certBuff[...];
WOLFSSL* ssl = 0;
long buffSz = sizeof(certBuff);
...
ret = wolfSSL_use_certificate_buffer(ssl, certBuff, buffSz, SSL_FILETYPE_PEM);
if (ret != SSL_SUCCESS) {
// バッファから証明書の読み込みに失敗
}
function wolfSSL_use_PrivateKey_buffer
int wolfSSL_use_PrivateKey_buffer(
WOLFSSL * ssl,
const unsigned char * in,
long sz,
int format
)
この関数は、秘密鍵バッファをWOLFSSLオブジェクトにロードします。バッファなしバージョンと同様に動作しますが、ファイルの代わりにバッファを入力として呼び出すことができる点が異なります。バッファはサイズszのin引数によって提供されます。formatはバッファのフォーマットタイプを指定します。SSL_FILETYPE_ASN1またはSSL_FILETYPE_PEMです。適切な使用方法については例を参照してください。
Parameters:
- ssl wolfSSL_new()で作成されたSSLセッションへのポインタ。
- in ロードする秘密鍵を含むバッファ。
- sz バッファ内の秘密鍵のサイズ。
- format ロードする秘密鍵のフォーマット。指定可能な値はSSL_FILETYPE_ASN1またはSSL_FILETYPE_PEMです。
See:
- wolfSSL_use_PrivateKey
- wolfSSL_CTX_load_verify_buffer
- wolfSSL_CTX_use_certificate_buffer
- wolfSSL_CTX_use_PrivateKey_buffer
- wolfSSL_CTX_use_certificate_chain_buffer
- wolfSSL_use_certificate_buffer
- wolfSSL_use_certificate_chain_buffer
Return:
- SSL_SUCCESS 成功時。
- SSL_BAD_FILETYPE ファイルのフォーマットが間違っている場合に返されます。
- SSL_BAD_FILE ファイルが存在しない、読み取れない、または破損している場合に返されます。
- MEMORY_E メモリ不足状態が発生した場合に返されます。
- ASN_INPUT_E ファイルのBase16デコードに失敗した場合に返されます。
- NO_PASSWORD 鍵ファイルが暗号化されているがパスワードが提供されていない場合に返されます。
Example
int ret;
byte keyBuff[...];
WOLFSSL* ssl = 0;
long buffSz = sizeof(certBuff);
...
ret = wolfSSL_use_PrivateKey_buffer(ssl, keyBuff, buffSz, SSL_FILETYPE_PEM);
if (ret != SSL_SUCCESS) {
// バッファから秘密鍵の読み込みに失敗
}
function wolfSSL_use_certificate_chain_buffer
int wolfSSL_use_certificate_chain_buffer(
WOLFSSL * ssl,
const unsigned char * in,
long sz
)
この関数は、証明書チェーンバッファをWOLFSSLオブジェクトにロードします。バッファなしバージョンと同様に動作しますが、ファイルの代わりにバッファを入力として呼び出すことができる点が異なります。バッファはサイズszのin引数によって提供されます。バッファはPEMフォーマットである必要があり、サブジェクトの証明書から始まり、ルート証明書で終わる必要があります。適切な使用方法については例を参照してください。
Parameters:
- ssl wolfSSL_new()で作成されたSSLセッションへのポインタ。
- in ロードする証明書を含むバッファ。
- sz バッファ内の証明書のサイズ。
See:
- wolfSSL_CTX_load_verify_buffer
- wolfSSL_CTX_use_certificate_buffer
- wolfSSL_CTX_use_PrivateKey_buffer
- wolfSSL_CTX_use_certificate_chain_buffer
- wolfSSL_use_certificate_buffer
- wolfSSL_use_PrivateKey_buffer
Return:
- SSL_SUCCES 成功時。
- SSL_BAD_FILETYPE ファイルのフォーマットが間違っている場合に返されます。
- SSL_BAD_FILE ファイルが存在しない、読み取れない、または破損している場合に返されます。
- MEMORY_E メモリ不足状態が発生した場合に返されます。
- ASN_INPUT_E ファイルのBase16デコードに失敗した場合に返されます。
- BUFFER_E チェーンバッファが受信バッファより大きい場合に返されます。
Example
int ret;
byte certChainBuff[...];
WOLFSSL* ssl = 0;
long buffSz = sizeof(certBuff);
...
ret = wolfSSL_use_certificate_chain_buffer(ssl, certChainBuff, buffSz);
if (ret != SSL_SUCCESS) {
// バッファから証明書チェーンの読み込みに失敗
}
function wolfSSL_UnloadCertsKeys
int wolfSSL_UnloadCertsKeys(
WOLFSSL *
)
この関数は、SSLが所有する証明書または鍵をアンロードします。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
Return:
- SSL_SUCCESS 関数が正常に実行された場合に返されます。
- BAD_FUNC_ARG WOLFSSLオブジェクトがNULLの場合に返されます。
Example
WOLFSSL* ssl = wolfSSL_new(ctx);
...
int unloadKeys = wolfSSL_UnloadCertsKeys(ssl);
if(unloadKeys != 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_SetFuzzerCb
void wolfSSL_SetFuzzerCb(
WOLFSSL * ssl,
CallbackFuzzer cbf,
void * fCtx
)
この関数はファザーコールバックを設定します。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
- cbf 次の形式の関数ポインタであるCallbackFuzzer型: int (CallbackFuzzer)(WOLFSSL ssl, const unsigned char buf, int sz, int type, void fuzzCtx);
- fCtx WOLFSSL構造体のfuzzerCtxメンバに設定されるvoidポインタ型。
See: CallbackFuzzer
Return: none 戻り値はありません。
Example
WOLFSSL_CTX* ctx = wolfSSL_CTX_new( method );
WOLFSSL* ssl = wolfSSL_new(ctx);
void* fCtx;
int callbackFuzzerCB(WOLFSSL* ssl, const unsigned char* buf, int sz,
int type, void* fuzzCtx){
// 関数定義
}
…
wolfSSL_SetFuzzerCb(ssl, callbackFuzzerCB, fCtx);
function wolfSSL_DTLS_SetCookieSecret
int wolfSSL_DTLS_SetCookieSecret(
WOLFSSL * ssl,
const unsigned char * secret,
unsigned int secretSz
)
この関数は新しいdtls cookieシークレットを設定します。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
- secret シークレットバッファを表す定数バイトポインタ。
- secretSz バッファのサイズ。
See:
- ForceZero
- wc_RNG_GenerateBlock
Return:
- 0 関数がエラーなく実行された場合に返されます。
- BAD_FUNC_ARG 関数に許容できない値を持つ引数が渡された場合に返されます。
- COOKIE_SECRET_SZ シークレットサイズが0の場合に返されます。
- MEMORY_ERROR 新しいcookieシークレット用のメモリ割り当てに問題があった場合に返されます。
Example
WOLFSSL_CTX* ctx = wolfSSL_CTX_new( method );
WOLFSSL* ssl = wolfSSL_new(ctx);
const* byte secret;
word32 secretSz; // secretのサイズ
…
if(!wolfSSL_DTLS_SetCookieSecret(ssl, secret, secretSz)){
// DTLSクッキーシークレットの設定失敗のコードブロック
} else {
// 成功!クッキーシークレットが設定されました
}
function wolfSSL_GetRNG
WC_RNG * wolfSSL_GetRNG(
WOLFSSL * ssl
)
この関数は乱数を取得します。
Parameters:
- ssl wolfSSL_new()で作成されたSSLオブジェクトへのポインタ。
See: wolfSSL_CTX_new_rng
Return:
- rng 成功時。
- NULL sslがNULLの場合。
Example
WOLFSSL* ssl;
wolfSSL_GetRNG(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_SetMinVersion
int wolfSSL_SetMinVersion(
WOLFSSL * ssl,
int version
)
この関数は、許可される最小ダウングレードバージョンを設定します。ダウングレードを許可する接続(wolfSSLv23_client_methodまたはwolfSSLv23_server_method)を使用する場合にのみ適用されます。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
- version 最小値として設定されるバージョンの整数表現: WOLFSSL_SSLV3 = 0、WOLFSSL_TLSV1 = 1、WOLFSSL_TLSV1_1 = 2、またはWOLFSSL_TLSV1_2 = 3。
See: SetMinVersionHelper
Return:
- SSL_SUCCESS この関数とそのサブルーチンがエラーなく実行された場合に返されます。
- BAD_FUNC_ARG SSLオブジェクトが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_GetObjectSize
int wolfSSL_GetObjectSize(
void
)
この関数はWOLFSSLオブジェクトのサイズを返し、ビルドオプションと設定に依存します。wolfSSLをビルドする際にSHOW_SIZESが定義されている場合、この関数はWOLFSSLオブジェクト内の個々のオブジェクト(Suites、Ciphersなど)のサイズもstdoutに出力します。
Parameters:
- none パラメータはありません。
See: wolfSSL_new
Return: size この関数はWOLFSSLオブジェクトのサイズを返します。
Example
int size = 0;
size = wolfSSL_GetObjectSize();
printf("sizeof(WOLFSSL) = %d\n", size);
function wolfSSL_GetOutputSize
int wolfSSL_GetOutputSize(
WOLFSSL * ssl,
int inSz
)
平文入力のレコード層サイズを返します。これは、アプリケーションが指定された平文入力サイズに対して、トランスポート層を介して送信されるバイト数を知りたい場合に役立ちます。この関数は、SSL/TLSハンドシェイクが完了した後に呼び出す必要があります。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSLオブジェクトへのポインタ。
- inSz 平文データのサイズ。
Return:
- size 成功時には、要求されたサイズが返されます。
- INPUT_SIZE_E 入力サイズが最大TLSフラグメントサイズより大きい場合に返されます(wolfSSL_GetMaxOutputSize()を参照)。
- BAD_FUNC_ARG 無効な関数引数が渡された場合、またはSSL/TLSハンドシェイクがまだ完了していない場合に返されます。
Example
none
function wolfSSL_GetMaxOutputSize
int wolfSSL_GetMaxOutputSize(
WOLFSSL *
)
平文データの最大レコード層サイズを返します。これは、プロトコル標準で指定されている最大SSL/TLSレコードサイズ、またはTLS最大フラグメント長拡張によって設定された最大TLSフラグメントサイズのいずれかに対応します。この関数は、アプリケーションがwolfSSL_GetOutputSize()を呼び出してINPUT_SIZE_Eエラーを受け取った場合に役立ちます。この関数は、SSL/TLSハンドシェイクが完了した後に呼び出す必要があります。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSLオブジェクトへのポインタ。
Return:
- size 成功時には、最大出力サイズが返されます。
- BAD_FUNC_ARG 無効な関数引数が渡された場合、またはSSL/TLSハンドシェイクがまだ完了していない場合に返されます。
Example
none
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_CTX_SetMacEncryptCb
void wolfSSL_CTX_SetMacEncryptCb(
WOLFSSL_CTX * ctx,
CallbackMacEncrypti cb
)
呼び出し元がアトミックユーザレコード処理Mac/暗号化コールバックを設定できるようにします。コールバックは、成功時には0、エラー時には<0を返す必要があります。sslとctxポインタは、ユーザの利便性のために利用可能です。macOutは、macの結果を格納する出力バッファです。macInはmac入力バッファであり、macInSzはバッファのサイズを示します。macContentとmacVerifyは、wolfSSL_SetTlsHmacInner()に必要であり、そのまま渡す必要があります。encOutは、暗号化の結果を格納する出力バッファです。encInは暗号化する入力バッファであり、encSzは入力のサイズです。コールバックの例は、wolfssl/test.hのmyMacEncryptCb()にあります。
Parameters:
- No パラメータなし。
See:
Return: none 戻り値なし。
Example
none
function wolfSSL_SetMacEncryptCtx
void wolfSSL_SetMacEncryptCtx(
WOLFSSL * ssl,
void * ctx
)
呼び出し元がアトミックユーザレコード処理Mac/暗号化コールバックコンテキストをctxに設定できるようにします。
Parameters:
- none パラメータなし。
See:
Return: none 戻り値なし。
Example
none
function wolfSSL_GetMacEncryptCtx
void * wolfSSL_GetMacEncryptCtx(
WOLFSSL * ssl
)
呼び出し元が、wolfSSL_SetMacEncryptCtx()で以前に保存されたアトミックユーザレコード処理Mac/暗号化コールバックコンテキストを取得できるようにします。
Parameters:
- none パラメータなし。
See:
Return:
- pointer 成功した場合、呼び出しはコンテキストへの有効なポインタを返します。
- NULL 空のコンテキストの場合に返されます。
Example
none
function wolfSSL_CTX_SetDecryptVerifyCb
void wolfSSL_CTX_SetDecryptVerifyCb(
WOLFSSL_CTX * ctx,
CallbackDecryptVerify cb
)
呼び出し元がアトミックユーザレコード処理復号/検証コールバックを設定できるようにします。コールバックは、成功時には0、エラー時には<0を返す必要があります。sslとctxポインタは、ユーザの利便性のために利用可能です。decOutは、復号の結果を格納する出力バッファです。decInは暗号化された入力バッファであり、decInSzはバッファのサイズを示します。contentとverifyは、wolfSSL_SetTlsHmacInner()に必要であり、そのまま渡す必要があります。padSzは、パディングの合計値を設定する必要がある出力変数です。つまり、macサイズに加えて、パディングとパディングバイトです。コールバックの例は、wolfssl/test.hのmyDecryptVerifyCb()にあります。
Parameters:
- none パラメータなし。
See:
Return: none 戻り値なし。
Example
none
function wolfSSL_SetDecryptVerifyCtx
void wolfSSL_SetDecryptVerifyCtx(
WOLFSSL * ssl,
void * ctx
)
呼び出し元がアトミックユーザレコード処理復号/検証コールバックコンテキストをctxに設定できるようにします。
Parameters:
- none パラメータなし。
See:
Return: none 戻り値なし。
Example
none
function wolfSSL_GetDecryptVerifyCtx
void * wolfSSL_GetDecryptVerifyCtx(
WOLFSSL * ssl
)
呼び出し元が、wolfSSL_SetDecryptVerifyCtx()で以前に保存されたアトミックユーザレコード処理復号/検証コールバックコンテキストを取得できるようにします。
Parameters:
- none パラメータなし。
See:
Return:
- pointer 成功した場合、呼び出しはコンテキストへの有効なポインタを返します。
- NULL 空のコンテキストの場合に返されます。
Example
none
function wolfSSL_GetMacSecret
const unsigned char * wolfSSL_GetMacSecret(
WOLFSSL * ssl,
int verify
)
ハンドシェイクプロセスからHmac/Macシークレットの取得を可能にします。verifyパラメータは、これがピアメッセージの検証用であるかどうかを指定します。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSLオブジェクトへのポインタ。
- verify これがピアメッセージの検証用であるかどうかを指定します。
See: wolfSSL_GetHmacSize
Return:
- pointer 成功した場合、呼び出しはシークレットへの有効なポインタを返します。シークレットのサイズは、wolfSSL_GetHmacSize()から取得できます。
- NULL エラー状態の場合に返されます。
Example
none
function wolfSSL_GetClientWriteKey
const unsigned char * wolfSSL_GetClientWriteKey(
WOLFSSL *
)
ハンドシェイクプロセスからクライアント書き込み鍵の取得を可能にします。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSLオブジェクトへのポインタ。
See:
Return:
- pointer 成功した場合、呼び出しは鍵への有効なポインタを返します。鍵のサイズは、wolfSSL_GetKeySize()から取得できます。
- NULL エラー状態の場合に返されます。
Example
none
function wolfSSL_GetClientWriteIV
const unsigned char * wolfSSL_GetClientWriteIV(
WOLFSSL *
)
ハンドシェイクプロセスからクライアント書き込みIV(初期化ベクトル)の取得を可能にします。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSLオブジェクトへのポインタ。
See:
Return:
- pointer 成功した場合、呼び出しはIVへの有効なポインタを返します。IVのサイズは、wolfSSL_GetCipherBlockSize()から取得できます。
- NULL エラー状態の場合に返されます。
Example
none
function wolfSSL_GetServerWriteKey
const unsigned char * wolfSSL_GetServerWriteKey(
WOLFSSL *
)
ハンドシェイクプロセスからサーバ書き込み鍵の取得を可能にします。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSLオブジェクトへのポインタ。
See:
Return:
- pointer 成功した場合、呼び出しは鍵への有効なポインタを返します。鍵のサイズは、wolfSSL_GetKeySize()から取得できます。
- NULL エラー状態の場合に返されます。
Example
none
function wolfSSL_GetServerWriteIV
const unsigned char * wolfSSL_GetServerWriteIV(
WOLFSSL *
)
ハンドシェイクプロセスからサーバ書き込みIV(初期化ベクトル)の取得を可能にします。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSLオブジェクトへのポインタ。
See:
Return:
- pointer 成功した場合、呼び出しはIVへの有効なポインタを返します。IVのサイズは、wolfSSL_GetCipherBlockSize()から取得できます。
- NULL エラー状態の場合に返されます。
function wolfSSL_GetKeySize
int wolfSSL_GetKeySize(
WOLFSSL *
)
ハンドシェイクプロセスから鍵サイズの取得を可能にします。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSLオブジェクトへのポインタ。
See:
Return:
- size 成功した場合、呼び出しは鍵サイズをバイト単位で返します。
- BAD_FUNC_ARG エラー状態の場合に返されます。
Example
none
function wolfSSL_GetIVSize
int wolfSSL_GetIVSize(
WOLFSSL *
)
WOLFSSL構造体に保持されているspecs構造体のiv_sizeメンバを返します。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
See:
Return:
- iv_size ssl->specs.iv_sizeに保持されている値を返します。
- BAD_FUNC_ARG WOLFSSL構造体がNULLの場合に返されます。
Example
WOLFSSL_CTX* ctx = wolfSSL_CTX_new( method );
WOLFSSL* ssl = wolfSSL_new(ctx);
int ivSize;
...
ivSize = wolfSSL_GetIVSize(ssl);
if(ivSize > 0){
// ivSizeはspecs.iv_size値を保持しています。
}
function wolfSSL_GetSide
int wolfSSL_GetSide(
WOLFSSL *
)
このWOLFSSL接続のサイド(側)の取得を可能にします。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSLオブジェクトへのポインタ。
See:
Return:
- success 成功した場合、呼び出しはWOLFSSLオブジェクトのサイドに応じて、WOLFSSL_SERVER_ENDまたはWOLFSSL_CLIENT_ENDのいずれかを返します。
- BAD_FUNC_ARG エラー状態の場合に返されます。
Example
none
function wolfSSL_IsTLSv1_1
int wolfSSL_IsTLSv1_1(
WOLFSSL *
)
呼び出し元が、ネゴシエートされたプロトコルバージョンが少なくともTLSバージョン1.1以上であるかどうかを判断できるようにします。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSLオブジェクトへのポインタ。
See: wolfSSL_GetSide
Return:
- true/false 成功した場合、呼び出しは真の場合は1、偽の場合は0を返します。
- BAD_FUNC_ARG エラー状態の場合に返されます。
Example
none
function wolfSSL_GetBulkCipher
int wolfSSL_GetBulkCipher(
WOLFSSL *
)
呼び出し元がハンドシェイクからネゴシエートされたバルク暗号アルゴリズムを判定できるようにします。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSLオブジェクトへのポインタ。
See:
Return:
- 成功時、以下のいずれかを返します。 wolfssl_cipher_null、wolfssl_des、wolfssl_triple_des、wolfssl_aes、 wolfssl_aes_gcm、wolfssl_aes_ccm、wolfssl_camellia。
- BAD_FUNC_ARG エラー状態の場合に返されます。
Example
none
function wolfSSL_GetCipherBlockSize
int wolfSSL_GetCipherBlockSize(
WOLFSSL *
)
呼び出し元がハンドシェイクからネゴシエートされた暗号ブロックサイズを判定できるようにします。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSLオブジェクトへのポインタ。
See:
Return:
- size 成功時、暗号ブロックサイズのバイト数を返します。
- BAD_FUNC_ARG エラー状態の場合に返されます。
Example
none
function wolfSSL_GetAeadMacSize
int wolfSSL_GetAeadMacSize(
WOLFSSL *
)
呼び出し元がハンドシェイクからネゴシエートされたaead macサイズを判定できるようにします。暗号タイプWOLFSSL_AEAD_TYPE用。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSLオブジェクトへのポインタ。
See:
Return:
- size 成功時、aead macサイズのバイト数を返します。
- BAD_FUNC_ARG エラー状態の場合に返されます。
Example
none
function wolfSSL_GetHmacSize
int wolfSSL_GetHmacSize(
WOLFSSL *
)
呼び出し元がハンドシェイクからネゴシエートされた(h)macサイズを判定できるようにします。WOLFSSL_AEAD_TYPE以外の暗号タイプ用。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSLオブジェクトへのポインタ。
See:
Return:
- size 成功時、(h)macサイズのバイト数を返します。
- BAD_FUNC_ARG エラー状態の場合に返されます。
Example
none
function wolfSSL_GetHmacType
int wolfSSL_GetHmacType(
WOLFSSL *
)
呼び出し元がハンドシェイクからネゴシエートされた(h)macタイプを判定できるようにします。WOLFSSL_AEAD_TYPE以外の暗号タイプ用。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSLオブジェクトへのポインタ。
See:
Return:
- 成功時、以下のいずれかを返します。 MD5、SHA、SHA256、SHA384。
- BAD_FUNC_ARG エラー状態の場合に返される可能性があります。
- SSL_FATAL_ERROR エラー状態の場合に返される可能性があります。
Example
none
function wolfSSL_GetCipherType
int wolfSSL_GetCipherType(
WOLFSSL *
)
呼び出し元がハンドシェイクからネゴシエートされた暗号タイプを判定できるようにします。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSLオブジェクトへのポインタ。
See:
Return:
- 成功時、以下のいずれかを返します。 WOLFSSL_BLOCK_TYPE、WOLFSSL_STREAM_TYPE、WOLFSSL_AEAD_TYPE。
- BAD_FUNC_ARG エラー状態の場合に返されます。
Example
none
function wolfSSL_SetTlsHmacInner
int wolfSSL_SetTlsHmacInner(
WOLFSSL * ssl,
byte * inner,
word32 sz,
int content,
int verify
)
呼び出し元がメッセージの送受信のためにHmac Innerベクトルを設定できるようにします。結果はinnerに書き込まれ、少なくともwolfSSL_GetHmacSize()バイトである必要があります。メッセージのサイズはszで指定され、contentはメッセージのタイプ、verifyはこれがピアメッセージの検証であるかを指定します。WOLFSSL_AEAD_TYPEを除く暗号タイプで有効です。
Parameters:
- none パラメータなし。
See:
Return:
- 1 成功時。
- BAD_FUNC_ARG エラー状態の場合に返されます。
Example
none
function wolfSSL_CTX_SetEccSignCb
void wolfSSL_CTX_SetEccSignCb(
WOLFSSL_CTX * ctx,
CallbackEccSign cb
)
呼び出し元がECC署名用の公開鍵コールバックを設定できるようにします。コールバックは成功時に0、エラー時に0未満を返す必要があります。sslとctxポインタはユーザの便宜のために利用可能です。inは署名する入力バッファで、inSzは入力の長さを示します。outは署名の結果を格納する出力バッファです。outSzは入出力変数で、呼び出し時の出力バッファのサイズを指定し、返す前に署名の実際のサイズをそこに格納する必要があります。keyDerはASN1形式のECC秘密鍵で、keySzは鍵の長さをバイト単位で表します。コールバックの例はwolfssl/test.h myEccSign()にあります。
Parameters:
- none パラメータなし。
See:
Return: none 戻り値なし。
Example
none
function wolfSSL_SetEccSignCtx
void wolfSSL_SetEccSignCtx(
WOLFSSL * ssl,
void * ctx
)
呼び出し元が公開鍵ECC署名コールバックコンテキストをctxに設定できるようにします。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSLオブジェクトへのポインタ。
- ctx 格納するユーザコンテキストへのポインタ。
See:
Return: none 戻り値なし。
Example
none
function wolfSSL_GetEccSignCtx
void * wolfSSL_GetEccSignCtx(
WOLFSSL * ssl
)
呼び出し元が以前にwolfSSL_SetEccSignCtx()で格納された公開鍵ECC署名コールバックコンテキストを取得できるようにします。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSLオブジェクトへのポインタ。
See:
Return:
- pointer 成功時、コンテキストへの有効なポインタを返します。
- NULL 空のコンテキストの場合に返されます。
Example
none
function wolfSSL_CTX_SetEccSignCtx
void wolfSSL_CTX_SetEccSignCtx(
WOLFSSL_CTX * ctx,
void * userCtx
)
呼び出し元が公開鍵ECC署名コールバックコンテキストをctxに設定できるようにします。
Parameters:
- ctx wolfSSL_CTX_new()で作成されたWOLFSSL_CTX構造体へのポインタ。
- ctx 格納するユーザコンテキストへのポインタ。
See:
Return: none 戻り値なし。
Example
none
function wolfSSL_CTX_GetEccSignCtx
void * wolfSSL_CTX_GetEccSignCtx(
WOLFSSL_CTX * ctx
)
呼び出し元が以前にwolfSSL_SetEccSignCtx()で格納された公開鍵ECC署名コールバックコンテキストを取得できるようにします。
Parameters:
- ctx wolfSSL_CTX_new()で作成されたWOLFSSL_CTX構造体へのポインタ。
See:
Return:
- pointer 成功時、コンテキストへの有効なポインタを返します。
- NULL 空のコンテキストの場合に返されます。
Example
none
function wolfSSL_CTX_SetEccVerifyCb
void wolfSSL_CTX_SetEccVerifyCb(
WOLFSSL_CTX * ctx,
CallbackEccVerify cb
)
呼び出し元がECC検証用の公開鍵コールバックを設定できるようにします。コールバックは成功時に0、エラー時に0未満を返す必要があります。sslとctxポインタはユーザの便宜のために利用可能です。sigは検証する署名で、sigSzは署名の長さを示します。hashはメッセージのダイジェストを含む入力バッファで、hashSzはハッシュの長さをバイト単位で示します。resultは検証の結果を格納する出力変数で、成功時は1、失敗時は0です。keyDerはASN1形式のECC秘密鍵で、keySzは鍵の長さをバイト単位で表します。コールバックの例はwolfssl/test.h myEccVerify()にあります。
Parameters:
- none パラメータなし。
See:
Return: none 戻り値なし。
Example
none
function wolfSSL_SetEccVerifyCtx
void wolfSSL_SetEccVerifyCtx(
WOLFSSL * ssl,
void * ctx
)
呼び出し元が公開鍵ECC検証コールバックコンテキストをctxに設定できるようにします。
Parameters:
- none パラメータなし。
See:
Return: none 戻り値なし。
Example
none
function wolfSSL_GetEccVerifyCtx
void * wolfSSL_GetEccVerifyCtx(
WOLFSSL * ssl
)
呼び出し元が以前にwolfSSL_SetEccVerifyCtx()で格納された公開鍵ECC検証コールバックコンテキストを取得できるようにします。
Parameters:
- none パラメータなし。
See:
Return:
- pointer 成功時、コンテキストへの有効なポインタを返します。
- NULL 空のコンテキストの場合に返されます。
Example
none
function wolfSSL_CTX_SetRsaSignCb
void wolfSSL_CTX_SetRsaSignCb(
WOLFSSL_CTX * ctx,
CallbackRsaSign cb
)
呼び出し元がRSA署名用の公開鍵コールバックを設定できるようにします。コールバックは成功時に0、エラー時に0未満を返す必要があります。sslとctxポインタはユーザの便宜のために利用可能です。inは署名する入力バッファで、inSzは入力の長さを示します。outは署名の結果を格納する出力バッファです。outSzは入出力変数で、呼び出し時の出力バッファのサイズを指定し、返す前に署名の実際のサイズをそこに格納する必要があります。keyDerはASN1形式のRSA秘密鍵で、keySzは鍵の長さをバイト単位で表します。コールバックの例はwolfssl/test.h myRsaSign()にあります。
Parameters:
- none パラメータなし。
See:
Return: none 戻り値なし。
Example
none
function wolfSSL_SetRsaSignCtx
void wolfSSL_SetRsaSignCtx(
WOLFSSL * ssl,
void * ctx
)
呼び出し元が公開鍵RSA署名コールバックコンテキストをctxに設定できるようにします。
Parameters:
- none パラメータなし。
See:
Return: none 戻り値なし。
Example
none
function wolfSSL_GetRsaSignCtx
void * wolfSSL_GetRsaSignCtx(
WOLFSSL * ssl
)
呼び出し元が以前にwolfSSL_SetRsaSignCtx()で格納された公開鍵RSA署名コールバックコンテキストを取得できるようにします。
Parameters:
- none パラメータなし。
- none パラメータなし。
See:
Return:
- pointer 成功時、コンテキストへの有効なポインタを返します。
- NULL 空のコンテキストの場合に返されます。
Example
none
function wolfSSL_CTX_SetRsaVerifyCb
void wolfSSL_CTX_SetRsaVerifyCb(
WOLFSSL_CTX * ctx,
CallbackRsaVerify cb
)
呼び出し元がRSA検証用の公開鍵コールバックを設定できるようにします。コールバックは成功時に平文のバイト数、エラー時に0未満を返す必要があります。sslとctxポインタはユーザの便宜のために利用可能です。sigは検証する署名で、sigSzは署名の長さを示します。outは復号プロセスとパディングの後、検証バッファの先頭に設定する必要があります。keyDerはASN1形式のRSA公開鍵で、keySzは鍵の長さをバイト単位で表します。コールバックの例はwolfssl/test.h myRsaVerify()にあります。
Parameters:
- none パラメータなし。
See:
Return: none 戻り値なし。
function wolfSSL_SetRsaVerifyCtx
void wolfSSL_SetRsaVerifyCtx(
WOLFSSL * ssl,
void * ctx
)
呼び出し元が公開鍵RSA検証コールバックコンテキストをctxに設定できるようにします。
Parameters:
- none パラメータなし。
See:
Return: none 戻り値なし。
Example
none
function wolfSSL_GetRsaVerifyCtx
void * wolfSSL_GetRsaVerifyCtx(
WOLFSSL * ssl
)
呼び出し元がwolfSSL_SetRsaVerifyCtx()で以前に保存された公開鍵RSA検証コールバックコンテキストを取得できるようにします。
Parameters:
- none パラメータなし。
See:
Return:
- pointer 成功した場合、呼び出しはコンテキストへの有効なポインタを返します。
- NULL 空のコンテキストに対して返されます。
Example
none
function wolfSSL_CTX_SetRsaEncCb
void wolfSSL_CTX_SetRsaEncCb(
WOLFSSL_CTX * ctx,
CallbackRsaEnc cb
)
呼び出し元がRSA公開暗号化のための公開鍵コールバックを設定できるようにします。コールバックは成功の場合は0を、エラーの場合は0未満を返す必要があります。sslとctxポインタはユーザーの利便性のために利用可能です。inは暗号化する入力バッファで、inSzは入力の長さを示します。outは暗号化の結果を格納する出力バッファです。outSzは入出力変数で、呼び出し時に出力バッファのサイズを指定し、戻る前に暗号化の実際のサイズを格納する必要があります。keyDerはASN1形式のRSA公開鍵で、keySzはバイト単位の鍵の長さです。コールバックの例はwolfssl/test.hのmyRsaEnc()にあります。
Parameters:
- none パラメータなし。
See:
Return: none 戻り値なし。
Examples
none
function wolfSSL_SetRsaEncCtx
void wolfSSL_SetRsaEncCtx(
WOLFSSL * ssl,
void * ctx
)
呼び出し元が公開鍵RSA公開暗号化コールバックコンテキストをctxに設定できるようにします。
Parameters:
- none パラメータなし。
See:
Return: none 戻り値なし。
Example
none
function wolfSSL_GetRsaEncCtx
void * wolfSSL_GetRsaEncCtx(
WOLFSSL * ssl
)
呼び出し元がwolfSSL_SetRsaEncCtx()で以前に保存された公開鍵RSA公開暗号化コールバックコンテキストを取得できるようにします。
Parameters:
- none パラメータなし。
See:
Return:
- pointer 成功した場合、呼び出しはコンテキストへの有効なポインタを返します。
- NULL 空のコンテキストに対して返されます。
Example
none
function wolfSSL_CTX_SetRsaDecCb
void wolfSSL_CTX_SetRsaDecCb(
WOLFSSL_CTX * ctx,
CallbackRsaDec cb
)
呼び出し元がRSA秘密復号のための公開鍵コールバックを設定できるようにします。コールバックは成功の場合は平文のバイト数を、エラーの場合は0未満を返す必要があります。sslとctxポインタはユーザーの利便性のために利用可能です。inは復号する入力バッファで、inSzは入力の長さを示します。outは復号処理とパディングの後、復号バッファの先頭に設定する必要があります。keyDerはASN1形式のRSA秘密鍵で、keySzはバイト単位の鍵の長さです。コールバックの例はwolfssl/test.hのmyRsaDec()にあります。
Parameters:
- none パラメータなし。
See:
Return: none 戻り値なし。
Example
none
function wolfSSL_SetRsaDecCtx
void wolfSSL_SetRsaDecCtx(
WOLFSSL * ssl,
void * ctx
)
呼び出し元が公開鍵RSA秘密復号コールバックコンテキストをctxに設定できるようにします。
Parameters:
- none パラメータなし。
See:
Return: none 戻り値なし。
Example
none
function wolfSSL_GetRsaDecCtx
void * wolfSSL_GetRsaDecCtx(
WOLFSSL * ssl
)
呼び出し元がwolfSSL_SetRsaDecCtx()で以前に保存された公開鍵RSA秘密復号コールバックコンテキストを取得できるようにします。
Parameters:
- none パラメータなし。
See:
Return:
- pointer 成功した場合、呼び出しはコンテキストへの有効なポインタを返します。
- NULL 空のコンテキストに対して返されます。
Example
none
function wolfSSL_CTX_SetCACb
void wolfSSL_CTX_SetCACb(
WOLFSSL_CTX * ctx,
CallbackCACache cb
)
この関数は、新しいCA証明書がwolfSSLにロードされたときに呼び出されるコールバックをSSLコンテキスト(WOLFSSL_CTX)に登録します。コールバックにはDERエンコードされた証明書を含むバッファが渡されます。
Parameters:
- ctx wolfSSL_CTX_new()で作成されたSSLコンテキストへのポインタ。
- callback wolfSSLコンテキストctxのCAコールバックとして登録される関数。この関数のシグネチャは、上記の概要セクションに示されているものに従う必要があります。
See: wolfSSL_CTX_load_verify_locations
Return: none 戻り値なし。
Example
WOLFSSL_CTX* ctx = 0;
// CAコールバックのプロトタイプ
int MyCACallback(unsigned char *der, int sz, int type);
// SSLコンテキストにカスタムCAコールバックを登録
wolfSSL_CTX_SetCACb(ctx, MyCACallback);
int MyCACallback(unsigned char* der, int sz, int type)
{
// カスタムCAコールバック関数、DERエンコードされた証明書は
// サイズszの"der"に格納され、タイプは"type"
}
function wolfSSL_CertManagerNew_ex
WOLFSSL_CERT_MANAGER * wolfSSL_CertManagerNew_ex(
void * heap
)
新しい証明書マネージャーコンテキストを割り当て、初期化します。このコンテキストはSSLの必要性とは独立して使用できます。証明書のロード、証明書の検証、失効ステータスのチェックに使用できます。
Parameters:
- none パラメータなし。
Return:
- WOLFSSL_CERT_MANAGER 成功した場合、呼び出しは有効なWOLFSSL_CERT_MANAGERポインタを返します。
- NULL エラー状態の場合に返されます。
function wolfSSL_CertManagerNew
WOLFSSL_CERT_MANAGER * wolfSSL_CertManagerNew(
void
)
新しい証明書マネージャーコンテキストを割り当て、初期化します。このコンテキストはSSLの必要性とは独立して使用できます。証明書のロード、証明書の検証、失効ステータスのチェックに使用できます。
Parameters:
- none パラメータなし。
Return:
- WOLFSSL_CERT_MANAGER 成功した場合、呼び出しは有効なWOLFSSL_CERT_MANAGERポインタを返します。
- NULL エラー状態の場合に返されます。
Example
#import <wolfssl/ssl.h>
WOLFSSL_CERT_MANAGER* cm;
cm = wolfSSL_CertManagerNew();
if (cm == NULL) {
// 新しい証明書マネージャーの作成エラー
}
function wolfSSL_CertManagerFree
void wolfSSL_CertManagerFree(
WOLFSSL_CERT_MANAGER *
)
証明書マネージャーコンテキストに関連するすべてのリソースを解放します。証明書マネージャーを使用する必要がなくなったときにこれを呼び出します。
Parameters:
- cm wolfSSL_CertManagerNew()を使用して作成されたWOLFSSL_CERT_MANAGER構造体へのポインタ。
Return: none 戻り値なし。
Example
#include <wolfssl/ssl.h>
WOLFSSL_CERT_MANAGER* cm;
...
wolfSSL_CertManagerFree(cm);
function wolfSSL_CertManagerLoadCA
int wolfSSL_CertManagerLoadCA(
WOLFSSL_CERT_MANAGER * cm,
const char * f,
const char * d
)
マネージャーコンテキストへのCA証明書ロードの場所を指定します。PEM証明書CAfileには複数の信頼されたCA証明書を含めることができます。CApathがNULLでない場合、PEM形式のCA証明書を含むディレクトリを指定します。
Parameters:
- cm wolfSSL_CertManagerNew()を使用して作成されたWOLFSSL_CERT_MANAGER構造体へのポインタ。
- file ロードするCA証明書を含むファイル名へのポインタ。
- path ロードするCA証明書を含むディレクトリパスの名前へのポインタ。証明書ディレクトリが不要な場合はNULLポインタを使用できます。
See: wolfSSL_CertManagerVerify
Return:
- SSL_SUCCESS 成功した場合に返されます。
- SSL_BAD_FILETYPE ファイルの形式が間違っている場合に返されます。
- SSL_BAD_FILE ファイルが存在しない、読み取れない、または破損している場合に返されます。
- MEMORY_E メモリ不足の状態が発生した場合に返されます。
- ASN_INPUT_E ファイルのBase16デコードが失敗した場合に返されます。
- BAD_FUNC_ARG ポインタが提供されていない場合に返されるエラーです。
- SSL_FATAL_ERROR 失敗時に返されます。
Example
#include <wolfssl/ssl.h>
int ret = 0;
WOLFSSL_CERT_MANAGER* cm;
...
ret = wolfSSL_CertManagerLoadCA(cm, "path/to/cert-file.pem", 0);
if (ret != SSL_SUCCESS) {
// 証明書マネージャーへのCA証明書のロードエラー
}
function wolfSSL_CertManagerLoadCABuffer
int wolfSSL_CertManagerLoadCABuffer(
WOLFSSL_CERT_MANAGER * cm,
const unsigned char * in,
long sz,
int format
)
wolfSSL_CTX_load_verify_bufferを呼び出し、関数に渡されたcmの情報を失わないように一時的なcmを使用してその結果を返すことで、CAバッファをロードします。
Parameters:
- cm wolfSSL_CertManagerNew()を使用して作成されたWOLFSSL_CERT_MANAGER構造体へのポインタ。
- in 証明書情報のバッファ。
- sz バッファの長さ。
- format 証明書の形式、PEMまたはDER。
See:
- wolfSSL_CTX_load_verify_buffer
- ProcessChainBuffer
- ProcessBuffer
- cm_pick_method
Return:
- SSL_FATAL_ERROR WOLFSSL_CERT_MANAGER構造体がNULL、またはwolfSSL_CTX_new()がNULLを返した場合に返されます。
- SSL_SUCCESS 正常に実行された場合に返されます。
Example
WOLFSSL_CERT_MANAGER* cm = (WOLFSSL_CERT_MANAGER*)vp;
…
const unsigned char* in;
long sz;
int format;
…
if(wolfSSL_CertManagerLoadCABuffer(vp, sz, format) != SSL_SUCCESS){
// エラーが返されました。失敗ケースのコードブロック。
}
function wolfSSL_CertManagerUnloadCAs
int wolfSSL_CertManagerUnloadCAs(
WOLFSSL_CERT_MANAGER * cm
)
この関数はCA署名者リストをアンロードします。
Parameters:
- cm wolfSSL_CertManagerNew()を使用して作成されたWOLFSSL_CERT_MANAGER構造体へのポインタ。
See: UnlockMutex
Return:
- SSL_SUCCESS 関数の正常な実行時に返されます。
- BAD_FUNC_ARG WOLFSSL_CERT_MANAGERがNULLの場合に返されます。
- BAD_MUTEX_E mutexエラーが発生した場合に返されます。
Example
#include <wolfssl/ssl.h>
WOLFSSL_CTX* ctx = wolfSSL_CTX_new(protocol method);
WOLFSSL_CERT_MANAGER* cm = wolfSSL_CTX_GetCertManager(ctx);
...
if(wolfSSL_CertManagerUnloadCAs(cm) != SSL_SUCCESS){
// 失敗ケース。
}
function wolfSSL_CertManagerUnloadIntermediateCerts
int wolfSSL_CertManagerUnloadIntermediateCerts(
WOLFSSL_CERT_MANAGER * cm
)
この関数はCA署名者リストに追加された中間証明書をアンロードします。
Parameters:
- cm wolfSSL_CertManagerNew()を使用して作成されたWOLFSSL_CERT_MANAGER構造体へのポインタ。
See: UnlockMutex
Return:
- SSL_SUCCESS 関数の正常な実行時に返されます。
- BAD_FUNC_ARG WOLFSSL_CERT_MANAGERがNULLの場合に返されます。
- BAD_MUTEX_E mutexエラーが発生した場合に返されます。
Example
#include <wolfssl/ssl.h>
WOLFSSL_CTX* ctx = wolfSSL_CTX_new(protocol method);
WOLFSSL_CERT_MANAGER* cm = wolfSSL_CTX_GetCertManager(ctx);
...
if(wolfSSL_CertManagerUnloadIntermediateCerts(cm) != SSL_SUCCESS){
// 失敗ケース。
}
function wolfSSL_CertManagerUnload_trust_peers
int wolfSSL_CertManagerUnload_trust_peers(
WOLFSSL_CERT_MANAGER * cm
)
この関数は、Trusted Peerリンクリストを解放し、トラステッドピアリストのロックを解除します。
Parameters:
- cm wolfSSL_CertManagerNew()を使用して作成されたWOLFSSL_CERT_MANAGER構造体へのポインタ。
See: UnLockMutex
Return:
- SSL_SUCCESS 関数が正常に完了した場合。
- BAD_FUNC_ARG WOLFSSL_CERT_MANAGERがNULLの場合。
- BAD_MUTEX_E WOLFSSL_CERT_MANAGER構造体のメンバであるtpLockが0(null)の場合、mutexエラー。
Example
#include <wolfssl/ssl.h>
WOLFSSL_CTX* ctx = WOLFSSL_CTX_new(Protocol define);
WOLFSSL_CERT_MANAGER* cm = wolfSSL_CertManagerNew();
...
if(wolfSSL_CertManagerUnload_trust_peers(cm) != SSL_SUCCESS){
// 関数は正常に実行されませんでした。
}
function wolfSSL_CertManagerVerify
int wolfSSL_CertManagerVerify(
WOLFSSL_CERT_MANAGER * cm,
const char * f,
int format
)
Certificate Managerコンテキストで検証する証明書を指定します。フォーマットはSSL_FILETYPE_PEMまたはSSL_FILETYPE_ASN1を指定できます。
Parameters:
- cm wolfSSL_CertManagerNew()を使用して作成されたWOLFSSL_CERT_MANAGER構造体へのポインタ。
- fname 検証する証明書を含むファイルの名前へのポインタ。
- format 検証する証明書のフォーマット - SSL_FILETYPE_ASN1またはSSL_FILETYPE_PEM。
See:
Return:
- SSL_SUCCESS 成功時。
- ASN_SIG_CONFIRM_E 署名を検証できなかった場合に返されます。
- ASN_SIG_OID_E 署名タイプがサポートされていない場合に返されます。
- CRL_CERT_REVOKED この証明書が失効している場合に返されるエラー。
- CRL_MISSING 現在の発行者CRLが利用できない場合に返されるエラー。
- ASN_BEFORE_DATE_E 現在の日付がbefore dateより前の場合に返されます。
- ASN_AFTER_DATE_E 現在の日付がafter dateより後の場合に返されます。
- SSL_BAD_FILETYPE ファイルのフォーマットが間違っている場合に返されます。
- SSL_BAD_FILE ファイルが存在しない、読み取れない、または破損している場合に返されます。
- MEMORY_E メモリ不足状態が発生した場合に返されます。
- ASN_INPUT_E ファイルのBase16デコードに失敗した場合に返されます。
- BAD_FUNC_ARG ポインタが提供されていない場合に返されるエラー。
Example
int ret = 0;
WOLFSSL_CERT_MANAGER* cm;
...
ret = wolfSSL_CertManagerVerify(cm, "path/to/cert-file.pem",
SSL_FILETYPE_PEM);
if (ret != SSL_SUCCESS) {
// 証明書の検証エラー
}
function wolfSSL_CertManagerVerifyBuffer
int wolfSSL_CertManagerVerifyBuffer(
WOLFSSL_CERT_MANAGER * cm,
const unsigned char * buff,
long sz,
int format
)
Certificate Managerコンテキストで検証する証明書バッファを指定します。フォーマットはSSL_FILETYPE_PEMまたはSSL_FILETYPE_ASN1を指定できます。
Parameters:
- cm wolfSSL_CertManagerNew()を使用して作成されたWOLFSSL_CERT_MANAGER構造体へのポインタ。
- buff 検証する証明書を含むバッファ。
- sz バッファbufのサイズ。
- format buf内にある検証する証明書のフォーマット - SSL_FILETYPE_ASN1またはSSL_FILETYPE_PEM。
See:
Return:
- SSL_SUCCESS 成功時。
- ASN_SIG_CONFIRM_E 署名を検証できなかった場合に返されます。
- ASN_SIG_OID_E 署名タイプがサポートされていない場合に返されます。
- CRL_CERT_REVOKED この証明書が失効している場合に返されるエラー。
- CRL_MISSING 現在の発行者CRLが利用できない場合に返されるエラー。
- ASN_BEFORE_DATE_E 現在の日付がbefore dateより前の場合に返されます。
- ASN_AFTER_DATE_E 現在の日付がafter dateより後の場合に返されます。
- SSL_BAD_FILETYPE ファイルのフォーマットが間違っている場合に返されます。
- SSL_BAD_FILE ファイルが存在しない、読み取れない、または破損している場合に返されます。
- MEMORY_E メモリ不足状態が発生した場合に返されます。
- ASN_INPUT_E ファイルのBase16デコードに失敗した場合に返されます。
- BAD_FUNC_ARG ポインタが提供されていない場合に返されるエラー。
Example
#include <wolfssl/ssl.h>
int ret = 0;
int sz = 0;
WOLFSSL_CERT_MANAGER* cm;
byte certBuff[...];
...
ret = wolfSSL_CertManagerVerifyBuffer(cm, certBuff, sz, SSL_FILETYPE_PEM);
if (ret != SSL_SUCCESS) {
// 証明書の検証エラー
}
function wolfSSL_CertManagerSetVerify
void wolfSSL_CertManagerSetVerify(
WOLFSSL_CERT_MANAGER * cm,
VerifyCallback verify_callback
)
この関数は、Certificate Manager内にverifyCallback関数を設定します。存在する場合、ロードされた各証明書に対して呼び出されます。検証エラーがある場合、verify callbackを使用してエラーをオーバーライドできます。
Parameters:
- cm wolfSSL_CertManagerNew()を使用して作成されたWOLFSSL_CERT_MANAGER構造体へのポインタ。
- verify_callback コールバックルーチンへのVerifyCallback関数ポインタ。
See: wolfSSL_CertManagerVerify
Return: none 戻り値はありません。
Example
#include <wolfssl/ssl.h>
int myVerify(int preverify, WOLFSSL_X509_STORE_CTX* store)
{ // 証明書のカスタム検証を実行 }
WOLFSSL_CTX* ctx = WOLFSSL_CTX_new(Protocol define);
WOLFSSL_CERT_MANAGER* cm = wolfSSL_CertManagerNew();
...
wolfSSL_CertManagerSetVerify(cm, myVerify);
function wolfSSL_CertManagerCheckCRL
int wolfSSL_CertManagerCheckCRL(
WOLFSSL_CERT_MANAGER * cm,
unsigned char * der,
int sz
)
オプションが有効な場合、CRLをチェックし、証明書をCRLリストと比較します。
Parameters:
- cm WOLFSSL_CERT_MANAGER構造体へのポインタ。
- der DERフォーマットの証明書へのポインタ。
- sz 証明書のサイズ。
See:
- CheckCertCRL
- ParseCertRelative
- wolfSSL_CertManagerSetCRL_CB
- InitDecodedCert
Return:
- SSL_SUCCESS 関数が期待どおりに戻った場合に返されます。WOLFSSL_CERT_MANAGER構造体のcrlEnabledメンバがオンになっている場合。
- MEMORY_E 割り当てられたメモリが失敗した場合に返されます。
- BAD_FUNC_ARG WOLFSSL_CERT_MANAGERがNULLの場合。
Example
WOLFSSL_CERT_MANAGER* cm;
byte* der;
int sz; // derのサイズ
...
if(wolfSSL_CertManagerCheckCRL(cm, der, sz) != SSL_SUCCESS){
// エラーが返されました。失敗ケースを処理。
}
function wolfSSL_CertManagerEnableCRL
int wolfSSL_CertManagerEnableCRL(
WOLFSSL_CERT_MANAGER * cm,
int options
)
Certificate Managerで証明書を検証する際に、Certificate Revocation Listチェックをオンにします。デフォルトでは、CRLチェックはオフです。optionsには、リーフ証明書のみ(デフォルト)ではなくチェーン内の各証明書に対してCRLチェックを実行するWOLFSSL_CRL_CHECKALLが含まれます。
Parameters:
- cm wolfSSL_CertManagerNew()を使用して作成されたWOLFSSL_CERT_MANAGER構造体へのポインタ。
- options Certification Manager(cm)を有効にする際に使用するオプション。
See: wolfSSL_CertManagerDisableCRL
Return:
- SSL_SUCCESS 成功した場合、呼び出しは戻ります。
- NOT_COMPILED_IN wolfSSLがCRLを有効にしてビルドされていない場合に返されます。
- MEMORY_E メモリ不足状態が発生した場合に返されます。
- BAD_FUNC_ARG ポインタが提供されていない場合に返されるエラー。
- SSL_FAILURE CRLコンテキストを適切に初期化できない場合に返されます。
Example
#include <wolfssl/ssl.h>
int ret = 0;
WOLFSSL_CERT_MANAGER* cm;
...
ret = wolfSSL_CertManagerEnableCRL(cm, 0);
if (ret != SSL_SUCCESS) {
// cert managerの有効化エラー
}
...
function wolfSSL_CertManagerDisableCRL
int wolfSSL_CertManagerDisableCRL(
WOLFSSL_CERT_MANAGER *
)
Certificate Managerで証明書を検証する際に、Certificate Revocation Listチェックをオフにします。デフォルトでは、CRLチェックはオフです。この関数を使用して、以前にCRLチェックを有効にしていたこのCertificate Managerコンテキストに対して、CRLチェックを一時的または永続的に無効にできます。
Parameters:
- cm wolfSSL_CertManagerNew()を使用して作成されたWOLFSSL_CERT_MANAGER構造体へのポインタ。
See: wolfSSL_CertManagerEnableCRL
Return:
- SSL_SUCCESS 成功した場合、呼び出しは戻ります。
- BAD_FUNC_ARG 関数ポインタが提供されていない場合に返されるエラー。
Example
#include <wolfssl/ssl.h>
int ret = 0;
WOLFSSL_CERT_MANAGER* cm;
...
ret = wolfSSL_CertManagerDisableCRL(cm);
if (ret != SSL_SUCCESS) {
// cert managerの無効化エラー
}
...
function wolfSSL_CertManagerLoadCRL
int wolfSSL_CertManagerLoadCRL(
WOLFSSL_CERT_MANAGER * cm,
const char * path,
int type,
int monitor
)
エラーチェックを行い、LoadCRL()に渡して失効チェックのためにCRLに証明書をロードします。更新されたCRLをロードするには、まずwolfSSL_CertManagerFreeCRLを呼び出してから、新しいCRLをロードします。
Parameters:
- cm wolfSSL_CertManagerNew()を使用して作成されたWOLFSSL_CERT_MANAGER構造体へのポインタ。
- path CRLパスを保持する定数char型ポインタ。
- type ロードする証明書のタイプ。
- monitor LoadCRL()での監視を要求します。
See:
- wolfSSL_CertManagerEnableCRL
- wolfSSL_LoadCRL
- wolfSSL_CertManagerFreeCRL
Return:
- SSL_SUCCESS wolfSSL_CertManagerLoadCRLにエラーがなく、LoadCRLが正常に戻った場合。
- BAD_FUNC_ARG WOLFSSL_CERT_MANAGER構造体がNULLの場合。
- SSL_FATAL_ERROR wolfSSL_CertManagerEnableCRLがSSL_SUCCESS以外を返した場合。
- BAD_PATH_ERROR pathがNULLの場合。
- MEMORY_E LoadCRLがヒープメモリの割り当てに失敗した場合。
Example
#include <wolfssl/ssl.h>
int wolfSSL_LoadCRL(WOLFSSL* ssl, const char* path, int type,
int monitor);
…
wolfSSL_CertManagerLoadCRL(SSL_CM(ssl), path, type, monitor);
function wolfSSL_CertManagerLoadCRLBuffer
int wolfSSL_CertManagerLoadCRLBuffer(
WOLFSSL_CERT_MANAGER * cm,
const unsigned char * buff,
long sz,
int type
)
この関数は、BufferLoadCRLを呼び出してCRLファイルをロードします。
Parameters:
- cm WOLFSSL_CERT_MANAGER構造体へのポインタ。
- buff 定数byte型でバッファです。
- sz バッファのサイズを表すlong int型。
- type 証明書タイプを保持するlong integer型。
See:
- BufferLoadCRL
- wolfSSL_CertManagerEnableCRL
Return:
- SSL_SUCCESS 関数がエラーなく完了した場合に返されます。
- BAD_FUNC_ARG WOLFSSL_CERT_MANAGERがNULLの場合に返されます。
- SSL_FATAL_ERROR WOLFSSL_CERT_MANAGERに関連するエラーがある場合に返されます。
Example
#include <wolfssl/ssl.h>
WOLFSSL_CERT_MANAGER* cm;
const unsigned char* buff;
long sz; バッファのサイズ
int type; 証明書タイプ
...
int ret = wolfSSL_CertManagerLoadCRLBuffer(cm, buff, sz, type);
if(ret == SSL_SUCCESS){
return ret;
} else {
// 失敗ケース。
}
function wolfSSL_CertManagerSetCRL_Cb
int wolfSSL_CertManagerSetCRL_Cb(
WOLFSSL_CERT_MANAGER * cm,
CbMissingCRL cb
)
この関数は、CRL Certificate Managerコールバックを設定します。HAVE_CRLが定義されており、一致するCRLレコードが見つからない場合、cbMissingCRLが呼び出されます(wolfSSL_CertManagerSetCRL_Cbで設定)。これにより、外部からCRLを取得してロードできます。
Parameters:
- cm 証明書の情報を保持するWOLFSSL_CERT_MANAGER構造体。
- cb WOLFSSL_CERT_MANAGERのcbMissingCRLメンバに設定される(*CbMissingCRL)への関数ポインタ。
See:
- CbMissingCRL
- wolfSSL_SetCRL_Cb
Return:
- SSL_SUCCESS 関数とサブルーチンの実行が成功した場合に返されます。
- BAD_FUNC_ARG WOLFSSL_CERT_MANAGER構造体がNULLの場合に返されます。
Example
#include <wolfssl/ssl.h>
WOLFSSL_CTX* ctx = wolfSSL_CTX_new(protocol method);
WOLFSSL* ssl = wolfSSL_new(ctx);
…
void cb(const char* url){
// 関数本体。
}
…
CbMissingCRL cb = CbMissingCRL;
…
if(ctx){
return wolfSSL_CertManagerSetCRL_Cb(SSL_CM(ssl), cb);
}
function wolfSSL_CertManagerSetCRLUpdate_Cb
int wolfSSL_CertManagerSetCRLUpdate_Cb(
WOLFSSL_CERT_MANAGER * cm,
CbUpdateCRL cb
)
この関数は、CRL更新コールバックを設定します。HAVE_CRLとHAVE_CRL_UPDATE_CBが定義されており、CRLが追加されるときに同じ発行者でより低いCRL番号を持つエントリが存在する場合、既存のエントリと、それを置き換える新しいエントリの詳細と共にCbUpdateCRLが呼び出されます。
Parameters:
- cm 証明書の情報を保持するWOLFSSL_CERT_MANAGER構造体。
- cb WOLFSSL_CERT_MANAGERのcbUpdateCRLメンバに設定される(CbUpdateCRL)への関数ポインタ。 シグネチャ要件: void (CbUpdateCRL)(CrlInfo old, CrlInfo new);
See: CbUpdateCRL
Return:
- SSL_SUCCESS 関数とサブルーチンが正常に実行された場合に返されます。
- BAD_FUNC_ARG WOLFSSL_CERT_MANAGER構造体がNULLの場合に返されます。
Example
#include <wolfssl/ssl.h>
WOLFSSL_CTX* ctx = wolfSSL_CTX_new(protocol method);
WOLFSSL* ssl = wolfSSL_new(ctx);
…
void cb(CrlInfo *old, CrlInfo *new){
// 関数本体。
}
…
CbUpdateCRL cb = CbUpdateCRL;
…
if(ctx){
return wolfSSL_CertManagerSetCRLUpdate_Cb(SSL_CM(ssl), cb);
}
function wolfSSL_CertManagerGetCRLInfo
int wolfSSL_CertManagerGetCRLInfo(
WOLFSSL_CERT_MANAGER * cm,
CrlInfo * info,
const byte * buff,
long sz,
int type
)
この関数は、エンコードされたCRLバッファから解析されたCRL情報を含む構造体を生成します。
Parameters:
- cm WOLFSSL_CERT_MANAGER構造体。
- info CRL情報を受け取る呼び出し元管理のCrlInfo構造体へのポインタ。
- buff エンコードされたCRLを含む入力バッファ。
- sz buff内の入力CRLデータの長さ(バイト単位)。
- type WOLFSSL_FILETYPE_PEMまたはWOLFSSL_FILETYPE_DER
- cm wolfSSL_CertManagerNew()を使用して作成されたWOLFSSL_CERT_MANAGER構造体へのポインタ。
See:
- CbUpdateCRL
- wolfSSL_SetCRL_Cb
- wolfSSL_CertManagerLoadCRL
Return:
- SSL_SUCCESS 関数とサブルーチンが正常に実行された場合に返されます。
- BAD_FUNC_ARG WOLFSSL_CERT_MANAGER構造体がNULLの場合に返されます。
- SSL_SUCCESS 関数とサブルーチンが正常に実行された場合に返されます。
- BAD_FUNC_ARG WOLFSSL_CERT_MANAGER構造体がNULLの場合に返されます。
Example
#include <wolfssl/ssl.h>
CrlInfo info;
WOLFSSL_CERT_MANAGER* cm = NULL;
cm = wolfSSL_CertManagerNew();
// ファイルからバッファへcrlデータを読み込む
wolfSSL_CertManagerGetCRLInfo(cm, &info, crlData, crlDataLen,
WOLFSSL_FILETYPE_PEM);
この関数は、証明書マネージャに保存されているCRLを解放します。アプリケーションは、wolfSSL_CertManagerFreeCRLを呼び出してから新しいCRLを読み込むことで、CRLを更新できます。
Example
#include <wolfssl/ssl.h>
const char* crl1 = "./certs/crl/crl.pem";
WOLFSSL_CERT_MANAGER* cm = NULL;
cm = wolfSSL_CertManagerNew();
wolfSSL_CertManagerLoadCRL(cm, crl1, WOLFSSL_FILETYPE_PEM, 0);
…
wolfSSL_CertManagerFreeCRL(cm);
function wolfSSL_CertManagerCheckOCSP
int wolfSSL_CertManagerCheckOCSP(
WOLFSSL_CERT_MANAGER * cm,
unsigned char * der,
int sz
)
この関数は、WOLFSSL_CERT_MANAGERのメンバであるocspEnabledを有効にして、OCSPチェックオプションが有効になっていることを示します。
Parameters:
- cm wolfSSL_CertManagerNew()を使用して作成されたWOLFSSL_CERT_MANAGER構造体へのポインタ。
- der 証明書へのbyteポインタ。
- sz DER証明書のサイズを表すint型。
See:
- ParseCertRelative
- CheckCertOCSP
Return:
- SSL_SUCCESS 関数の実行が成功した場合に返されます。WOLFSSL_CERT_MANAGERのocspEnabledメンバが有効になります。
- BAD_FUNC_ARG WOLFSSL_CERT_MANAGER構造体がNULLの場合、またはサブルーチンに許可されていない引数値が渡された場合に返されます。
- MEMORY_E この関数またはサブルーチン内でメモリの割り当てにエラーがある場合に返されます。
Example
#import <wolfssl/ssl.h>
WOLFSSL* ssl = wolfSSL_new(ctx);
byte* der;
int sz; // derのサイズ
...
if(wolfSSL_CertManagerCheckOCSP(cm, der, sz) != SSL_SUCCESS){
// 失敗ケース。
}
function wolfSSL_CertManagerEnableOCSP
int wolfSSL_CertManagerEnableOCSP(
WOLFSSL_CERT_MANAGER * cm,
int options
)
OCSPがオフになっている場合にオンにし、設定オプションでコンパイルされている場合に有効にします。
Parameters:
- cm wolfSSL_CertManagerNew()を使用して作成されたWOLFSSL_CERT_MANAGER構造体へのポインタ。
- options WOLFSSL_CERT_MANAGER構造体の値を設定するために使用されます。
Return:
- SSL_SUCCESS 関数呼び出しが成功した場合に返されます。
- BAD_FUNC_ARG cm構造体がNULLの場合。
- MEMORY_E WOLFSSL_OCSP構造体の値がNULLの場合。
- SSL_FAILURE WOLFSSL_OCSP構造体の初期化が失敗した場合。
- NOT_COMPILED_IN 正しい機能を有効にしてコンパイルされていないビルド。
Example
#include <wolfssl/ssl.h>
WOLFSSL_CTX* ctx = wolfSSL_CTX_new(protocol method);
WOLFSSL* ssl = wolfSSL_new(ctx);
WOLFSSL_CERT_MANAGER* cm = wolfSSL_CertManagerNew();
int options;
…
if(wolfSSL_CertManagerEnableOCSP(SSL_CM(ssl), options) != SSL_SUCCESS){
// 失敗ケース。
}
function wolfSSL_CertManagerDisableOCSP
int wolfSSL_CertManagerDisableOCSP(
WOLFSSL_CERT_MANAGER *
)
OCSP証明書失効を無効にします。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
See: wolfSSL_DisableCRL
Return:
- SSL_SUCCESS wolfSSL_CertMangerDisableCRLがWOLFSSL_CERT_MANAGER構造体のcrlEnabledメンバを正常に無効にしました。
- BAD_FUNC_ARG WOLFSSL構造体がNULLでした。
Example
#include <wolfssl/ssl.h>
WOLFSSL_CTX* ctx = wolfSSL_CTX_new(method);
WOLFSSL* ssl = wolfSSL_new(ctx);
...
if(wolfSSL_CertManagerDisableOCSP(ssl) != SSL_SUCCESS){
// 失敗ケース。
}
function wolfSSL_CertManagerSetOCSPOverrideURL
int wolfSSL_CertManagerSetOCSPOverrideURL(
WOLFSSL_CERT_MANAGER * cm,
const char * url
)
この関数は、URLをWOLFSSL_CERT_MANAGER構造体のocspOverrideURLメンバにコピーします。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
See:
- ocspOverrideURL
- wolfSSL_SetOCSP_OverrideURL
Return:
- SSL_SUCCESS 関数が期待通りに実行できた場合。
- BAD_FUNC_ARG WOLFSSL_CERT_MANAGER構造体がNULLの場合。
- MEMEORY_E 証明書マネージャのocspOverrideURLメンバにメモリを割り当てることができなかった場合。
Example
#include <wolfssl/ssl.h>
WOLFSSL_CERT_MANAGER* cm = wolfSSL_CertManagerNew();
const char* url;
…
int wolfSSL_SetOCSP_OverrideURL(WOLFSSL* ssl, const char* url)
…
if(wolfSSL_CertManagerSetOCSPOverrideURL(SSL_CM(ssl), url) != SSL_SUCCESS){
// 失敗ケース。
}
function wolfSSL_CertManagerSetOCSP_Cb
int wolfSSL_CertManagerSetOCSP_Cb(
WOLFSSL_CERT_MANAGER * cm,
CbOCSPIO ioCb,
CbOCSPRespFree respFreeCb,
void * ioCbCtx
)
この関数は、WOLFSSL_CERT_MANAGER内のOCSPコールバックを設定します。
Parameters:
- cm WOLFSSL_CERT_MANAGER構造体へのポインタ。
- ioCb CbOCSPIO型の関数ポインタ。
- respFreeCb CbOCSPRespFree型の関数ポインタ。
- ioCbCtx I/Oコールバックユーザ登録コンテキストへのvoidポインタ変数。
See:
- wolfSSL_CertManagerSetOCSPOverrideURL
- wolfSSL_CertManagerCheckOCSP
- wolfSSL_CertManagerEnableOCSPStapling
- wolfSSL_EnableOCSP
- wolfSSL_DisableOCSP
- wolfSSL_SetOCSP_Cb
Return:
- SSL_SUCCESS 実行が成功した場合に返されます。引数はWOLFSSL_CERT_MANAGER構造体に保存されます。
- BAD_FUNC_ARG WOLFSSL_CERT_MANAGERがNULLの場合に返されます。
Example
#include <wolfssl/ssl.h>
wolfSSL_SetOCSP_Cb(WOLFSSL* ssl, CbOCSPIO ioCb,
CbOCSPRespFree respFreeCb, void* ioCbCtx){
…
return wolfSSL_CertManagerSetOCSP_Cb(SSL_CM(ssl), ioCb, respFreeCb, ioCbCtx);
function wolfSSL_CertManagerEnableOCSPStapling
int wolfSSL_CertManagerEnableOCSPStapling(
WOLFSSL_CERT_MANAGER * cm
)
この関数は、OCSPステープリングがオンになっていない場合にオンにし、オプションを設定します。
Parameters:
- cm WOLFSSL_CTX構造体のメンバであるWOLFSSL_CERT_MANAGER構造体へのポインタ。
See: wolfSSL_CTX_EnableOCSPStapling
Return:
- SSL_SUCCESS エラーがなく、関数が正常に実行された場合に返されます。
- BAD_FUNC_ARG WOLFSSL_CERT_MANAGER構造体がNULLの場合、またはサブルーチンに許可されていない引数値が渡された場合に返されます。
- MEMORY_E メモリの割り当てに問題があった場合に返されます。
- SSL_FAILURE OCSP構造体の初期化が失敗した場合に返されます。
- NOT_COMPILED_IN wolfSSLがHAVE_CERTIFICATE_STATUS_REQUESTオプションでコンパイルされていない場合に返されます。
Example
int wolfSSL_CTX_EnableOCSPStapling(WOLFSSL_CTX* ctx){
…
return wolfSSL_CertManagerEnableOCSPStapling(ctx->cm);
function wolfSSL_EnableCRL
int wolfSSL_EnableCRL(
WOLFSSL * ssl,
int options
)
CRL証明書失効を有効にします。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
- options WOLFSSL_CERT_MANAGER構造体のcrlCheckAllメンバの設定を決定するために使用される整数。
See:
- wolfSSL_CertManagerEnableCRL
- InitCRL
Return:
- SSL_SUCCESS 関数とサブルーチンがエラーなく返された場合。
- BAD_FUNC_ARG WOLFSSL構造体がNULLの場合に返されます。
- MEMORY_E メモリの割り当てが失敗した場合に返されます。
- SSL_FAILURE InitCRL関数が正常に返されなかった場合に返されます。
- NOT_COMPILED_IN コンパイル時にHAVE_CRLが有効になっていませんでした。
Example
WOLFSSL* ssl = wolfSSL_new(ctx);
…
if (wolfSSL_EnableCRL(ssl, WOLFSSL_CRL_CHECKALL) != SSL_SUCCESS){
// 失敗ケース。この関数またはサブルーチンがSSL_SUCCESSを返しませんでした。
}
function wolfSSL_DisableCRL
int wolfSSL_DisableCRL(
WOLFSSL * ssl
)
CRL証明書失効を無効にします。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
See:
Return:
- SSL_SUCCESS wolfSSL_CertMangerDisableCRLがWOLFSSL_CERT_MANAGER構造体のcrlEnabledメンバを正常に無効にしました。
- BAD_FUNC_ARG WOLFSSL構造体がNULLでした。
Example
WOLFSSL_CTX* ctx = wolfSSL_CTX_new( method );
WOLFSSL* ssl = wolfSSL_new(ctx);
...
if(wolfSSL_DisableCRL(ssl) != SSL_SUCCESS){
// 失敗ケース
}
function wolfSSL_LoadCRL
int wolfSSL_LoadCRL(
WOLFSSL * ssl,
const char * path,
int type,
int monitor
)
失効チェックのための証明書を読み込むためにLoadCRLを最終的に呼び出すラッパー関数です。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
- path crlファイルへのパスを保持する定数文字ポインタ。
- type 証明書のタイプを表す整数。
- monitor 要求された場合にモニタパスを検証するために使用される整数変数。
See:
Return:
- WOLFSSL_SUCCESS 関数とすべてのサブルーチンがエラーなく実行された場合に返されます。
- SSL_FATAL_ERROR サブルーチンの1つが正常に返されなかった場合に返されます。
- BAD_FUNC_ARG WOLFSSL_CERT_MANAGERまたはWOLFSSL構造体がNULLの場合。
Example
WOLFSSL* ssl = wolfSSL_new(ctx);
const char* crlPemDir;
…
if(wolfSSL_LoadCRL(ssl, crlPemDir, SSL_FILETYPE_PEM, 0) != SSL_SUCCESS){
// 失敗ケース。SSL_SUCCESSを返しませんでした。
}
function wolfSSL_SetCRL_Cb
int wolfSSL_SetCRL_Cb(
WOLFSSL * ssl,
CbMissingCRL cb
)
WOLFSSL_CERT_MANAGER構造体内のCRLコールバックを設定します。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
- cb CbMissingCRLへの関数ポインタ。
See:
- CbMissingCRL
- wolfSSL_CertManagerSetCRL_Cb
Return:
- SSL_SUCCESS 関数またはサブルーチンがエラーなく実行された場合に返されます。WOLFSSL_CERT_MANAGERのcbMissingCRLメンバが設定されます。
- BAD_FUNC_ARG WOLFSSLまたはWOLFSSL_CERT_MANAGER構造体がNULLの場合に返されます。
Example
WOLFSSL_CTX* ctx = wolfSSL_CTX_new( protocol method );
WOLFSSL* ssl = wolfSSL_new(ctx);
…
void cb(const char* url) // 必要なシグネチャ
{
// 関数本体
}
…
int crlCb = wolfSSL_SetCRL_Cb(ssl, cb);
if(crlCb != SSL_SUCCESS){
// コールバックが正しく設定されませんでした
}
function wolfSSL_EnableOCSP
int wolfSSL_EnableOCSP(
WOLFSSL * ssl,
int options
)
この関数は、OCSP証明書検証を有効にします。optionsの値は、以下のオプションの1つ以上をOR演算することで形成されます。 WOLFSSL_OCSP_URL_OVERRIDE - 証明書内のURLの代わりにオーバーライドURLを使用します。オーバーライドURLはwolfSSL_CTX_SetOCSP_OverrideURL()関数を使用して指定されます。 WOLFSSL_OCSP_CHECKALL - すべてのOCSPチェックをオンに設定します。 WOLFSSL_OCSP_NO_NONCE - OCSP要求作成時のnonceオプションを設定します。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
- options 設定チェックに使用されるwolfSSL_CertMangerENableOCSP()に渡される整数型。
See: wolfSSL_CertManagerEnableOCSP
Return:
- SSL_SUCCESS 関数とサブルーチンがエラーなしで実行された場合に返されます。
- BAD_FUNC_ARG この関数またはサブルーチンの引数が無効な引数値を受け取った場合に返されます。
- MEMORY_E 構造体または他の変数のメモリ割り当てでエラーが発生した場合に返されます。
- NOT_COMPILED_IN wolfSSLがHAVE_OCSPオプション付きでコンパイルされていない場合に返されます。
Example
WOLFSSL_CTX* ctx = wolfSSL_CTX_new( method );
WOLFSSL* ssl = wolfSSL_new(ctx);
int options; // オプション定数で初期化
…
int ret = wolfSSL_EnableOCSP(ssl, options);
if(ret != SSL_SUCCESS){
// OCSPが有効になっていません
}
function wolfSSL_DisableOCSP
int wolfSSL_DisableOCSP(
WOLFSSL *
)
OCSP証明書失効オプションを無効にします。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
See: wolfSSL_CertManagerDisableOCSP
Return:
- SSL_SUCCESS 関数とそのサブルーチンがエラーなしで返された場合に返されます。WOLFSSL_CERT_MANAGER構造体のocspEnabledメンバが正常に設定されました。
- BAD_FUNC_ARG WOLFSSL構造体がNULLの場合に返されます。
Example
WOLFSSL* ssl = wolfSSL_new(ctx);
…
if(wolfSSL_DisableOCSP(ssl) != SSL_SUCCESS){
// エラーで返されました。このブロック内が失敗ケースです
}
function wolfSSL_SetOCSP_OverrideURL
int wolfSSL_SetOCSP_OverrideURL(
WOLFSSL * ssl,
const char * url
)
この関数は、WOLFSSL_CERT_MANAGER構造体のocspOverrideURLメンバを設定します。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
- url WOLFSSL_CERT_MANAGER構造体のocspOverrideURLメンバに格納されるURLへの定数charポインタ。
See: wolfSSL_CertManagerSetOCSPOverrideURL
Return:
- SSL_SUCCESS 関数の実行が成功した場合に返されます。
- BAD_FUNC_ARG WOLFSSL構造体がNULLの場合、またはサブルーチンに許可されていない引数が渡された場合に返されます。
- MEMORY_E サブルーチンでメモリ割り当てエラーが発生した場合に返されます。
Example
WOLFSSL_CTX* ctx = wolfSSL_CTX_new( method );
WOLFSSL* ssl = wolfSSL_new(ctx);
char url[URLSZ];
...
if(wolfSSL_SetOCSP_OverrideURL(ssl, url)){
// オーバーライドURLが新しい値に設定されました
}
function wolfSSL_SetOCSP_Cb
int wolfSSL_SetOCSP_Cb(
WOLFSSL * ssl,
CbOCSPIO ioCb,
CbOCSPRespFree respFreeCb,
void * ioCbCtx
)
この関数は、WOLFSSL_CERT_MANAGER構造体にOCSPコールバックを設定します。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
- ioCb CbOCSPIO型への関数ポインタ。
- respFreeCb CbOCSPRespFree型への関数ポインタで、レスポンスメモリを解放する呼び出しです。
- ioCbCtx CMのocspIOCtxメンバに保持されるvoidポインタ。
See:
- wolfSSL_CertManagerSetOCSP_Cb
- CbOCSPIO
- CbOCSPRespFree
Return:
- SSL_SUCCESS 関数がエラーなしで実行された場合に返されます。CMのocspIOCb、ocspRespFreeCb、ocspIOCtxメンバが設定されます。
- BAD_FUNC_ARG WOLFSSLまたはWOLFSSL_CERT_MANAGER構造体がNULLの場合に返されます。
Example
WOLFSSL* ssl = wolfSSL_new(ctx);
…
int OCSPIO_CB(void* , const char*, int , unsigned char* , int,
unsigned char**){ // このシグネチャが必要です
// 関数本体
}
…
void OCSPRespFree_CB(void* , unsigned char* ){ // このシグネチャが必要です
// 関数本体
}
…
void* ioCbCtx;
CbOCSPRespFree CB_OCSPRespFree;
if(wolfSSL_SetOCSP_Cb(ssl, OCSPIO_CB( pass args ), CB_OCSPRespFree,
ioCbCtx) != SSL_SUCCESS){
// コールバックが設定されませんでした
}
function wolfSSL_CTX_EnableCRL
int wolfSSL_CTX_EnableCRL(
WOLFSSL_CTX * ctx,
int options
)
CTXを通じてCRL証明書検証を有効にします。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
See:
Return:
- SSL_SUCCESS この関数とそのサブルーチンがエラーなしで実行された場合に返されます。
- BAD_FUNC_ARG CTX構造体がNULLの場合、またはサブルーチンで無効な引数が渡された場合に返されます。
- MEMORY_E 関数の実行中にメモリ割り当てエラーが発生した場合に返されます。
- SSL_FAILURE WOLFSSL_CERT_MANAGERのcrlメンバが正しく初期化できなかった場合に返されます。
- NOT_COMPILED_IN wolfSSLがHAVE_CRLオプション付きでコンパイルされていません。
Example
WOLFSSL_CTX* ctx = wolfSSL_CTX_new( method );
WOLFSSL* ssl = wolfSSL_new(ctx);
...
if(wolfSSL_CTX_EnableCRL(ssl->ctx, options) != SSL_SUCCESS){
// 関数が失敗しました
}
function wolfSSL_CTX_DisableCRL
int wolfSSL_CTX_DisableCRL(
WOLFSSL_CTX * ctx
)
この関数は、CTX構造体でCRL検証を無効にします。
Parameters:
- ctx wolfSSL_CTX_new()を使用して作成されたWOLFSSL_CTX構造体へのポインタ。
See: wolfSSL_CertManagerDisableCRL
Return:
- SSL_SUCCESS 関数がエラーなしで実行された場合に返されます。WOLFSSL_CERT_MANAGER構造体のcrlEnabledメンバが0に設定されます。
- BAD_FUNC_ARG CTX構造体またはCM構造体のいずれかがNULL値の場合に返されます。
Example
WOLFSSL_CTX* ctx = wolfSSL_CTX_new( method );
WOLFSSL* ssl = wolfSSL_new(ctx);
...
if(wolfSSL_CTX_DisableCRL(ssl->ctx) != SSL_SUCCESS){
// 失敗ケース
}
function wolfSSL_CTX_LoadCRL
int wolfSSL_CTX_LoadCRL(
WOLFSSL_CTX * ctx,
const char * path,
int type,
int monitor
)
この関数は、wolfSSL_CertManagerLoadCRL()を通じてCRLをWOLFSSL_CTX構造体にロードします。
Parameters:
- ctx wolfSSL_CTX_new()を使用して作成されたWOLFSSL_CTX構造体へのポインタ。
- path 証明書へのパス。
- type 証明書のタイプを保持する整数変数。
- monitor モニタパスが要求されているかを判定するために使用される整数変数。
See:
- wolfSSL_CertManagerLoadCRL
- LoadCRL
Return:
- SSL_SUCCESS - 関数とそのサブルーチンがエラーなしで実行された場合に返されます。
- BAD_FUNC_ARG - この関数またはサブルーチンにNULL構造体が渡された場合に返されます。
- BAD_PATH_ERROR - path変数がNULLとして開かれた場合に返されます。
- MEMORY_E - メモリの割り当てが失敗した場合に返されます。
Example
WOLFSSL_CTX* ctx;
const char* path;
…
return wolfSSL_CTX_LoadCRL(ctx, path, SSL_FILETYPE_PEM, 0);
function wolfSSL_CTX_SetCRL_Cb
int wolfSSL_CTX_SetCRL_Cb(
WOLFSSL_CTX * ctx,
CbMissingCRL cb
)
この関数は、wolfSSL_CertManagerSetCRL_Cbを呼び出すことにより、コールバック引数をWOLFSSL_CERT_MANAGER構造体のcbMissingCRLメンバに設定します。
Parameters:
- ctx wolfSSL_CTX_new()で作成されたWOLFSSL_CTX構造体へのポインタ。
- cb CbMissingCRL型のコールバック関数へのポインタ。 シグネチャ要件: void (CbMissingCRL)(const char url);
See:
- wolfSSL_CertManagerSetCRL_Cb
- CbMissingCRL
Return:
- SSL_SUCCESS 実行が成功した場合に返されます。WOLFSSL_CERT_MANAGER構造体のメンバcbMssingCRLがcbに正常に設定されました。
- BAD_FUNC_ARG WOLFSSL_CTXまたはWOLFSSL_CERT_MANAGERがNULLの場合に返されます。
Example
WOLFSSL_CTX* ctx = wolfSSL_CTX_new( protocol method );
…
void cb(const char* url) // 必要なシグネチャ
{
// 関数本体
}
…
if (wolfSSL_CTX_SetCRL_Cb(ctx, cb) != SSL_SUCCESS){
// 失敗ケース、cbが正しく設定されませんでした
}
function wolfSSL_CTX_EnableOCSP
int wolfSSL_CTX_EnableOCSP(
WOLFSSL_CTX * ctx,
int options
)
この関数は、wolfSSLのOCSP機能の動作を設定するオプションを設定します。optionsの値は、以下のオプションの1つ以上をOR演算することで形成されます。 WOLFSSL_OCSP_URL_OVERRIDE - 証明書内のURLの代わりにオーバーライドURLを使用します。オーバーライドURLはwolfSSL_CTX_SetOCSP_OverrideURL()関数を使用して指定されます。 WOLFSSL_OCSP_CHECKALL - すべてのOCSPチェックをオンに設定します。 WOLFSSL_OCSP_NO_NONCE - OCSP要求作成時のnonceオプションを設定します。
Parameters:
- ctx wolfSSL_CTX_new()で作成されたSSLコンテキストへのポインタ。
- options OCSPオプションを設定するために使用される値。
See:
Return:
- SSL_SUCCESS 成功時に返されます。
- SSL_FAILURE 失敗時に返されます。
- NOT_COMPILED_IN この関数が呼び出されたが、wolfSSLのコンパイル時にOCSPサポートが有効になっていなかった場合に返されます。
この関数は、wolfSSLがOCSPサポート付きでコンパイルされている場合(–enable-ocsp、#define HAVE_OCSP)にのみOCSPオプションを設定します。
Example
WOLFSSL_CTX* ctx = wolfSSL_CTX_new( method );
int options; // オプション定数で初期化
…
int ret = wolfSSL_CTX_EnableOCSP(ctx, options);
if(ret != SSL_SUCCESS){
// OCSPが有効になっていません
}
function wolfSSL_CTX_DisableOCSP
int wolfSSL_CTX_DisableOCSP(
WOLFSSL_CTX *
)
この関数は、WOLFSSL_CERT_MANAGER構造体のocspEnabledメンバに影響を与えることにより、OCSP証明書失効チェックを無効にします。
Parameters:
- ctx wolfSSL_CTX_new()を使用して作成されたWOLFSSL_CTX構造体へのポインタ。
See:
Return:
- SSL_SUCCESS 関数がエラーなしで実行された場合に返されます。CMのocspEnabledメンバが無効にされました。
- BAD_FUNC_ARG WOLFSSL_CTX構造体がNULLの場合に返されます。
Example
WOLFSSL_CTX* ctx = wolfSSL_CTX_new( method );
WOLFSSL* ssl = wolfSSL_new(ctx);
...
if(!wolfSSL_CTX_DisableOCSP(ssl->ctx)){
// OCSPが無効になっていません
}
function wolfSSL_CTX_SetOCSP_OverrideURL
int wolfSSL_CTX_SetOCSP_OverrideURL(
WOLFSSL_CTX * ctx,
const char * url
)
この関数は、OCSPが使用するURLを手動で設定します。デフォルトでは、wolfSSL_CTX_EnableOCSPを使用してWOLFSSL_OCSP_URL_OVERRIDEオプションが設定されていない限り、OCSPは個々の証明書で見つかったURLを使用します。
Parameters:
- ctx wolfSSL_CTX_new()で作成されたSSLコンテキストへのポインタ。
- url wolfSSLが使用するOCSP URLへのポインタ。
See: wolfSSL_CTX_OCSP_set_options
Return:
- SSL_SUCCESS 成功時に返されます。
- SSL_FAILURE 失敗時に返されます。
- NOT_COMPILED_IN この関数が呼び出されたが、wolfSSLのコンパイル時にOCSPサポートが有効になっていなかった場合に返されます。
Example
WOLFSSL_CTX* ctx = 0;
...
wolfSSL_CTX_OCSP_set_override_url(ctx, "custom-url-here");
function wolfSSL_CTX_SetOCSP_Cb
int wolfSSL_CTX_SetOCSP_Cb(
WOLFSSL_CTX * ctx,
CbOCSPIO ioCb,
CbOCSPRespFree respFreeCb,
void * ioCbCtx
)
WOLFSSL_CTX構造体にOCSPのコールバックを設定します。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
- ioCb 関数ポインタであるCbOCSPIO型。
- respFreeCb 関数ポインタであるCbOCSPRespFree型。
- ioCbCtx WOLFSSL_CERT_MANAGERに保持されるvoidポインタ。
See:
- wolfSSL_CertManagerSetOCSP_Cb
- CbOCSPIO
- CbOCSPRespFree
Return:
- SSL_SUCCESS 関数が正常に実行された場合に返されます。CM内のocspIOCb、ocspRespFreeCb、ocspIOCtxメンバが正常に設定されました。
- BAD_FUNC_ARG WOLFSSL_CTXまたはWOLFSSL_CERT_MANAGER構造体がNULLの場合に返されます。
Example
WOLFSSL_CTX* ctx = wolfSSL_CTX_new( protocol method );
…
CbOCSPIO ocspIOCb;
CbOCSPRespFree ocspRespFreeCb;
…
void* ioCbCtx;
int isSetOCSP = wolfSSL_CTX_SetOCSP_Cb(ctx, ocspIOCb,
ocspRespFreeCb, ioCbCtx);
if(isSetOCSP != SSL_SUCCESS){
// 関数が正常に返されませんでした
}
function wolfSSL_CTX_EnableOCSPStapling
int wolfSSL_CTX_EnableOCSPStapling(
WOLFSSL_CTX *
)
この関数は、wolfSSL_CertManagerEnableOCSPStapling()を呼び出してOCSPステープリングを有効にします。
Parameters:
- ctx wolfSSL_CTX_new()を使用して作成されたWOLFSSL_CTX構造体へのポインタ。
See:
Return:
- SSL_SUCCESS エラーがなく、関数が正常に実行された場合に返されます。
- BAD_FUNC_ARG WOLFSSL_CTX構造体がNULL、またはサブルーチンに許可されていない引数値が渡された場合に返されます。
- MEMORY_E メモリの割り当てに問題があった場合に返されます。
- SSL_FAILURE OCSP構造体の初期化が失敗した場合に返されます。
- NOT_COMPILED_IN wolfSSLがHAVE_CERTIFICATE_STATUS_REQUESTオプション付きでコンパイルされていない場合に返されます。
Example
WOLFSSL* ssl = WOLFSSL_new();
ssl->method.version; // 希望するプロトコルに設定
...
if(!wolfSSL_CTX_EnableOCSPStapling(ssl->ctx)){
// OCSPステープリングが有効になっていません
}
function wolfSSL_KeepArrays
void wolfSSL_KeepArrays(
WOLFSSL *
)
通常、SSLハンドシェイクの終了時に、wolfSSLは一時配列を解放します。ハンドシェイクが始まる前にこの関数を呼び出すと、wolfSSLは一時配列を解放しなくなります。一時配列はwolfSSL_get_keys()やPSKヒントなどに必要になる場合があります。ユーザーが一時配列を使い終わったら、wolfSSL_FreeArrays()を呼び出してリソースを即座に解放するか、あるいは関連するSSLオブジェクトが解放されるときにリソースが解放されます。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
See: wolfSSL_FreeArrays
Return: none 戻り値なし。
Example
WOLFSSL* ssl;
...
wolfSSL_KeepArrays(ssl);
function wolfSSL_FreeArrays
void wolfSSL_FreeArrays(
WOLFSSL *
)
通常、SSLハンドシェイクの終了時に、wolfSSLは一時配列を解放します。ハンドシェイクの前にwolfSSL_KeepArrays()が呼び出されていた場合、wolfSSLは一時配列を解放しません。この関数は一時配列を明示的に解放し、ユーザーが一時配列を使い終わり、SSLオブジェクトが解放されるのを待たずにこれらのリソースを解放したい場合に呼び出す必要があります。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
See: wolfSSL_KeepArrays
Return: none 戻り値なし。
Example
WOLFSSL* ssl;
...
wolfSSL_FreeArrays(ssl);
function wolfSSL_UseSNI
int wolfSSL_UseSNI(
WOLFSSL * ssl,
unsigned char type,
const void * data,
unsigned short size
)
この関数は、'ssl'パラメータで渡されたSSLオブジェクトでServer Name Indicationの使用を有効にします。つまり、wolfSSLクライアントはClientHelloでSNI拡張を送信し、wolfSSLサーバーはSNI不一致の場合、ClientHello + SNIに対してServerHello + 空のSNIまたはfatalアラートで応答します。
Parameters:
- ssl wolfSSL_new()で作成されたSSLオブジェクトへのポインタ。
- type dataで渡されるサーバー名のタイプを示します。既知のタイプは、enum { WOLFSSL_SNI_HOST_NAME = 0 }です。
- data サーバー名データへのポインタ。
- size サーバー名データのサイズ。
See:
Return:
- WOLFSSL_SUCCESS 成功時。
- BAD_FUNC_ARG 次のいずれかの場合に返されるエラーです。sslがNULL、dataがNULL、typeが未知の値(以下を参照)。
- MEMORY_E メモリが不足している場合に返されるエラーです。
Example
int ret = 0;
WOLFSSL_CTX* ctx = 0;
WOLFSSL* ssl = 0;
ctx = wolfSSL_CTX_new(method);
if (ctx == NULL) {
// コンテキスト作成失敗
}
ssl = wolfSSL_new(ctx);
if (ssl == NULL) {
// ssl作成失敗
}
ret = wolfSSL_UseSNI(ssl, WOLFSSL_SNI_HOST_NAME, "www.yassl.com",
strlen("www.yassl.com"));
if (ret != WOLFSSL_SUCCESS) {
// sni使用失敗
}
function wolfSSL_CTX_UseSNI
int wolfSSL_CTX_UseSNI(
WOLFSSL_CTX * ctx,
unsigned char type,
const void * data,
unsigned short size
)
この関数は、'ctx'パラメータで渡されたSSLコンテキストから作成されたSSLオブジェクトに対してServer Name Indicationの使用を有効にします。つまり、wolfSSLクライアントはClientHelloでSNI拡張を送信し、wolfSSLサーバーはSNI不一致の場合、ClientHello + SNIに対してServerHello + 空のSNIまたはfatalアラートで応答します。
Parameters:
- ctx wolfSSL_CTX_new()で作成されたSSLコンテキストへのポインタ。
- type dataで渡されるサーバー名のタイプを示します。既知のタイプは、enum { WOLFSSL_SNI_HOST_NAME = 0 }です。
- data サーバー名データへのポインタ。
- size サーバー名データのサイズ。
See:
Return:
- WOLFSSL_SUCCESS 成功時。
- BAD_FUNC_ARG 次のいずれかの場合に返されるエラーです。ctxがNULL、dataがNULL、typeが未知の値(以下を参照)。
- MEMORY_E メモリが不足している場合に返されるエラーです。
Example
int ret = 0;
WOLFSSL_CTX* ctx = 0;
ctx = wolfSSL_CTX_new(method);
if (ctx == NULL) {
// コンテキスト作成失敗
}
ret = wolfSSL_CTX_UseSNI(ctx, WOLFSSL_SNI_HOST_NAME, "www.yassl.com",
strlen("www.yassl.com"));
if (ret != WOLFSSL_SUCCESS) {
// sni使用失敗
}
function wolfSSL_SNI_SetOptions
void wolfSSL_SNI_SetOptions(
WOLFSSL * ssl,
unsigned char type,
unsigned char options
)
この関数は、'ssl'パラメータで渡されたSSLオブジェクトでServer Name Indicationを使用するSSLセッションの動作を設定するために、サーバー側で呼び出されます。オプションについては以下で説明します。
Parameters:
- ssl wolfSSL_new()で作成されたSSLオブジェクトへのポインタ。
- type dataで渡されるサーバー名のタイプを示します。既知のタイプは、enum { WOLFSSL_SNI_HOST_NAME = 0 }です。
- options 選択されたオプションを含むビット単位のセマフォ。利用可能なオプションは、enum { WOLFSSL_SNI_CONTINUE_ON_MISMATCH = 0x01, WOLFSSL_SNI_ANSWER_ON_MISMATCH = 0x02 }です。通常、クライアントから提供されたホスト名がサーバーと一致しない場合、サーバーはfatalレベルのunrecognized_name(112)アラートを送信してハンドシェイクを中止します。
- WOLFSSL_SNI_CONTINUE_ON_MISMATCH このオプションが設定されている場合、サーバーはセッションを中止する代わりにSNI応答を送信しません。
- WOLFSSL_SNI_ANSWER_ON_MISMATCH このオプションが設定されている場合、サーバーはセッションを中止する代わりに、ホスト名が一致しているかのようにSNI応答を送信します。
See:
Return: none 戻り値なし。
Example
int ret = 0;
WOLFSSL_CTX* ctx = 0;
WOLFSSL* ssl = 0;
ctx = wolfSSL_CTX_new(method);
if (ctx == NULL) {
// コンテキスト作成失敗
}
ssl = wolfSSL_new(ctx);
if (ssl == NULL) {
// ssl作成失敗
}
ret = wolfSSL_UseSNI(ssl, 0, "www.yassl.com", strlen("www.yassl.com"));
if (ret != WOLFSSL_SUCCESS) {
// sni使用失敗
}
wolfSSL_SNI_SetOptions(ssl, WOLFSSL_SNI_HOST_NAME,
WOLFSSL_SNI_CONTINUE_ON_MISMATCH);
function wolfSSL_CTX_SNI_SetOptions
void wolfSSL_CTX_SNI_SetOptions(
WOLFSSL_CTX * ctx,
unsigned char type,
unsigned char options
)
この関数は、'ctx'パラメータで渡されたSSLコンテキストから作成されたSSLオブジェクトに対してServer Name Indicationを使用するSSLセッションの動作を設定するために、サーバー側で呼び出されます。オプションについては以下で説明します。
Parameters:
- ctx wolfSSL_CTX_new()で作成されたSSLコンテキストへのポインタ。
- type dataで渡されるサーバー名のタイプを示します。既知のタイプは、enum { WOLFSSL_SNI_HOST_NAME = 0 }です。
- options 選択されたオプションを含むビット単位のセマフォ。利用可能なオプションは、enum { WOLFSSL_SNI_CONTINUE_ON_MISMATCH = 0x01, WOLFSSL_SNI_ANSWER_ON_MISMATCH = 0x02 }です。通常、クライアントから提供されたホスト名がサーバーと一致しない場合、サーバーはfatalレベルのunrecognized_name(112)アラートを送信してハンドシェイクを中止します。
- WOLFSSL_SNI_CONTINUE_ON_MISMATCH このオプションが設定されている場合、サーバーはセッションを中止する代わりにSNI応答を送信しません。
- WOLFSSL_SNI_ANSWER_ON_MISMATCH このオプションが設定されている場合、サーバーはセッションを中止する代わりに、ホスト名が一致しているかのようにSNI応答を送信します。
See:
Return: none 戻り値なし。
Example
int ret = 0;
WOLFSSL_CTX* ctx = 0;
ctx = wolfSSL_CTX_new(method);
if (ctx == NULL) {
// コンテキスト作成失敗
}
ret = wolfSSL_CTX_UseSNI(ctx, 0, "www.yassl.com", strlen("www.yassl.com"));
if (ret != WOLFSSL_SUCCESS) {
// sni使用失敗
}
wolfSSL_CTX_SNI_SetOptions(ctx, WOLFSSL_SNI_HOST_NAME,
WOLFSSL_SNI_CONTINUE_ON_MISMATCH);
function wolfSSL_SNI_GetFromBuffer
int wolfSSL_SNI_GetFromBuffer(
const unsigned char * clientHello,
unsigned int helloSz,
unsigned char type,
unsigned char * sni,
unsigned int * inOutSz
)
この関数は、クライアントがセッションを開始するために送信したClient Helloメッセージからクライアントによって提供されたServer Name Indicationを取得するために、サーバー側で呼び出されます。SNIを取得するためにコンテキストやセッションのセットアップは必要ありません。
Parameters:
- buffer クライアントから提供されたデータ(Client Hello)へのポインタ。
- bufferSz Client Helloメッセージのサイズ。
- type bufferから取得されるサーバー名のタイプを示します。既知のタイプは、enum { WOLFSSL_SNI_HOST_NAME = 0 }です。
- sni 出力が格納される場所へのポインタ。
- inOutSz 出力サイズへのポインタ。この値はMIN("SNIの長さ", inOutSz)に更新されます。
See:
Return:
- WOLFSSL_SUCCESS 成功時。
- BAD_FUNC_ARG 次のいずれかの場合に返されるエラーです。bufferがNULL、bufferSz <= 0、sniがNULL、inOutSzがNULLまたは<= 0。
- BUFFER_ERROR 不正な形式のClient Helloメッセージがある場合に返されるエラーです。
- INCOMPLETE_DATA 抽出を完了するのに十分なデータがない場合に返されるエラーです。
Example
unsigned char buffer[1024] = {0};
unsigned char result[32] = {0};
int length = 32;
// Client Helloをbufferに読み込み...
ret = wolfSSL_SNI_GetFromBuffer(buffer, sizeof(buffer), 0, result, &length);
if (ret != WOLFSSL_SUCCESS) {
// sni取得失敗
}
function wolfSSL_SNI_Status
unsigned char wolfSSL_SNI_Status(
WOLFSSL * ssl,
unsigned char type
)
この関数はSNIオブジェクトのステータスを取得します。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
- type SNIタイプ。
See:
- TLSX_SNI_Status
- TLSX_SNI_find
- TLSX_Find
Return:
- value SNIがNULLでない場合、この関数はSNI構造体のstatusメンバーのバイト値を返します。
- 0 SNIオブジェクトがNULLの場合。
Example
WOLFSSL_CTX* ctx = wolfSSL_CTX_new( protocol method );
WOLFSSL* ssl = wolfSSL_new(ctx);
…
#define AssertIntEQ(x, y) AssertInt(x, y, ==, !=)
…
Byte type = WOLFSSL_SNI_HOST_NAME;
char* request = (char*)&type;
AssertIntEQ(WOLFSSL_SNI_NO_MATCH, wolfSSL_SNI_Status(ssl, type));
…
function wolfSSL_SNI_GetRequest
unsigned short wolfSSL_SNI_GetRequest(
WOLFSSL * ssl,
unsigned char type,
void ** data
)
この関数は、SSLセッションでクライアントによって提供されたServer Name Indicationを取得するために、サーバー側で呼び出されます。
Parameters:
- ssl wolfSSL_new()で作成されたSSLオブジェクトへのポインタ。
- type dataで取得されるサーバー名のタイプを示します。既知のタイプは、enum { WOLFSSL_SNI_HOST_NAME = 0 }です。
- data クライアントから提供されたデータへのポインタ。
See:
Return: size 提供されたSNIデータのサイズ。
Example
int ret = 0;
WOLFSSL_CTX* ctx = 0;
WOLFSSL* ssl = 0;
ctx = wolfSSL_CTX_new(method);
if (ctx == NULL) {
// コンテキスト作成失敗
}
ssl = wolfSSL_new(ctx);
if (ssl == NULL) {
// ssl作成失敗
}
ret = wolfSSL_UseSNI(ssl, 0, "www.yassl.com", strlen("www.yassl.com"));
if (ret != WOLFSSL_SUCCESS) {
// sni使用失敗
}
if (wolfSSL_accept(ssl) == SSL_SUCCESS) {
void *data = NULL;
unsigned short size = wolfSSL_SNI_GetRequest(ssl, 0, &data);
}
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_ALPN_GetProtocol
int wolfSSL_ALPN_GetProtocol(
WOLFSSL * ssl,
char ** protocol_name,
unsigned short * size
)
この関数は、サーバーによって設定されたプロトコル名を取得します。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
- protocol_name プロトコル名を表し、ALPN構造体に保持されるcharへのポインタ。
- size protocol_nameのサイズを表すword16型。
See:
- TLSX_ALPN_GetRequest
- TLSX_Find
Return:
- SSL_SUCCESS エラーがスローされずに正常に実行された場合に返されます。
- SSL_FATAL_ERROR 拡張が見つからなかった場合、またはピアとのプロトコルマッチがなかった場合に返されます。また、受け入れられたプロトコル名が複数ある場合にもエラーがスローされます。
- SSL_ALPN_NOT_FOUND ピアとのプロトコルマッチが見つからなかったことを示して返されます。
- BAD_FUNC_ARG 関数にNULL引数が渡された場合に返されます。
Example
WOLFSSL_CTX* ctx = WOLFSSL_CTX_new( protocol method );
WOLFSSL* ssl = WOLFSSL_new(ctx);
...
int err;
char* protocol_name = NULL;
Word16 protocol_nameSz = 0;
err = wolfSSL_ALPN_GetProtocol(ssl, &protocol_name, &protocol_nameSz);
if(err == SSL_SUCCESS){
// ALPNプロトコルを送信
}
function wolfSSL_ALPN_GetPeerProtocol
int wolfSSL_ALPN_GetPeerProtocol(
WOLFSSL * ssl,
char ** list,
unsigned short * listSz
)
この関数は、SSLオブジェクトからalpn_client_listデータをバッファにコピーします。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
- list バッファへのポインタ。SSLオブジェクトからのデータがここにコピーされます。
- listSz バッファサイズ。
See: wolfSSL_UseALPN
Return:
- SSL_SUCCESS 関数がエラーなく実行された場合に返されます。SSLオブジェクトのalpn_client_listメンバがlistパラメータにコピーされました。
- BAD_FUNC_ARG listまたはlistSzパラメータがNULLの場合に返されます。
- BUFFER_ERROR listバッファに問題がある場合に返されます(NULLであるか、サイズが0の場合)。
- MEMORY_ERROR メモリの動的割り当てに問題があった場合に返されます。
Example
#import <wolfssl/ssl.h>
WOLFSSL_CTX* ctx = wolfSSL_CTX_new( protocol method);
WOLFSSL* ssl = wolfSSL_new(ctx);
…
#ifdef HAVE_ALPN
char* list = NULL;
word16 listSz = 0;
…
err = wolfSSL_ALPN_GetPeerProtocol(ssl, &list, &listSz);
if(err == SSL_SUCCESS){
// クライアントが送信したプロトコル名のリスト
}
function wolfSSL_UseMaxFragment
int wolfSSL_UseMaxFragment(
WOLFSSL * ssl,
unsigned char mfl
)
この関数は、'ssl'パラメータで渡されたSSLオブジェクトでMaximum Fragment Lengthの使用を有効にするために、クライアント側で呼び出されます。これは、wolfSSLクライアントによってClientHelloでMaximum Fragment Length拡張が送信されることを意味します。
Parameters:
- ssl wolfSSL_new()で作成されたSSLオブジェクトへのポインタ。
- mfl セッションに要求されるMaximum Fragment Lengthを示します。利用可能なオプションは: enum { WOLFSSL_MFL_2_9 = 1, 512バイト WOLFSSL_MFL_2_10 = 2, 1024バイト WOLFSSL_MFL_2_11 = 3, 2048バイト WOLFSSL_MFL_2_12 = 4, 4096バイト WOLFSSL_MFL_2_13 = 5, 8192バイト wolfSSL専用!!! };
See:
Return:
- SSL_SUCCESS 成功時。
- BAD_FUNC_ARG 次のいずれかの場合に返されるエラー: sslがNULL、mflが範囲外。
- MEMORY_E メモリが不足している場合に返されるエラー。
Example
int ret = 0;
WOLFSSL_CTX* ctx = 0;
WOLFSSL* ssl = 0;
ctx = wolfSSL_CTX_new(method);
if (ctx == NULL) {
// コンテキストの作成に失敗
}
ssl = wolfSSL_new(ctx);
if (ssl == NULL) {
// sslの作成に失敗
}
ret = wolfSSL_UseMaxFragment(ssl, WOLFSSL_MFL_2_11);
if (ret != 0) {
// max fragmentの使用に失敗
}
function wolfSSL_CTX_UseMaxFragment
int wolfSSL_CTX_UseMaxFragment(
WOLFSSL_CTX * ctx,
unsigned char mfl
)
この関数は、'ctx'パラメータで渡されたSSLコンテキストから作成されたSSLオブジェクトに対してMaximum Fragment Lengthの使用を有効にするために、クライアント側で呼び出されます。これは、wolfSSLクライアントによってClientHelloでMaximum Fragment Length拡張が送信されることを意味します。
Parameters:
- ctx wolfSSL_CTX_new()で作成されたSSLコンテキストへのポインタ。
- mfl セッションに要求されるMaximum Fragment Lengthを示します。利用可能なオプションは: enum { WOLFSSL_MFL_2_9 = 1 512バイト、WOLFSSL_MFL_2_10 = 2 1024バイト、WOLFSSL_MFL_2_11 = 3 2048バイト WOLFSSL_MFL_2_12 = 4 4096バイト、WOLFSSL_MFL_2_13 = 5 8192バイト wolfSSL専用!!!、WOLFSSL_MFL_2_13 = 6 256バイト wolfSSL専用!!! };
See:
Return:
- SSL_SUCCESS 成功時。
- BAD_FUNC_ARG 次のいずれかの場合に返されるエラー: ctxがNULL、mflが範囲外。
- MEMORY_E メモリが不足している場合に返されるエラー。
Example
int ret = 0;
WOLFSSL_CTX* ctx = 0;
ctx = wolfSSL_CTX_new(method);
if (ctx == NULL) {
// コンテキストの作成に失敗
}
ret = wolfSSL_CTX_UseMaxFragment(ctx, WOLFSSL_MFL_2_11);
if (ret != 0) {
// max fragmentの使用に失敗
}
function wolfSSL_UseTruncatedHMAC
int wolfSSL_UseTruncatedHMAC(
WOLFSSL * ssl
)
この関数は、'ssl'パラメータで渡されたSSLオブジェクトでTruncated HMACの使用を有効にするために、クライアント側で呼び出されます。これは、wolfSSLクライアントによってClientHelloでTruncated HMAC拡張が送信されることを意味します。
Parameters:
- ssl wolfSSL_new()で作成されたSSLオブジェクトへのポインタ。
See:
Return:
- SSL_SUCCESS 成功時。
- BAD_FUNC_ARG 次のいずれかの場合に返されるエラー: sslがNULL。
- MEMORY_E メモリが不足している場合に返されるエラー。
Example
int ret = 0;
WOLFSSL_CTX* ctx = 0;
WOLFSSL* ssl = 0;
ctx = wolfSSL_CTX_new(method);
if (ctx == NULL) {
// コンテキストの作成に失敗
}
ssl = wolfSSL_new(ctx);
if (ssl == NULL) {
// sslの作成に失敗
}
ret = wolfSSL_UseTruncatedHMAC(ssl);
if (ret != 0) {
// truncated HMACの使用に失敗
}
function wolfSSL_CTX_UseTruncatedHMAC
int wolfSSL_CTX_UseTruncatedHMAC(
WOLFSSL_CTX * ctx
)
この関数は、'ctx'パラメータで渡されたSSLコンテキストから作成されたSSLオブジェクトに対してTruncated HMACの使用を有効にするために、クライアント側で呼び出されます。これは、wolfSSLクライアントによってClientHelloでTruncated HMAC拡張が送信されることを意味します。
Parameters:
- ctx wolfSSL_CTX_new()で作成されたSSLコンテキストへのポインタ。
See:
Return:
- SSL_SUCCESS 成功時。
- BAD_FUNC_ARG 次のいずれかの場合に返されるエラー: ctxがNULL。
- MEMORY_E メモリが不足している場合に返されるエラー。
Example
int ret = 0;
WOLFSSL_CTX* ctx = 0;
ctx = wolfSSL_CTX_new(method);
if (ctx == NULL) {
// コンテキストの作成に失敗
}
ret = wolfSSL_CTX_UseTruncatedHMAC(ctx);
if (ret != 0) {
// truncated HMACの使用に失敗
}
function wolfSSL_UseOCSPStapling
int wolfSSL_UseOCSPStapling(
WOLFSSL * ssl,
unsigned char status_type,
unsigned char options
)
ステープリングはCAに連絡する必要性を排除します。ステープリングは、OCSPで提示される証明書失効チェックのコストを削減します。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
- status_type TLSX_UseCertificateStatusRequest()に渡され、CertificateStatusRequest構造体に格納されるバイト型。
- options TLSX_UseCertificateStatusRequest()に渡され、CertificateStatusRequest構造体に格納されるバイト型。
See:
- TLSX_UseCertificateStatusRequest
- wolfSSL_CTX_UseOCSPStapling
Return:
- SSL_SUCCESS TLSX_UseCertificateStatusRequestがエラーなく実行された場合に返されます。
- MEMORY_E メモリの割り当てにエラーがある場合に返されます。
- BAD_FUNC_ARG 関数に渡された引数がNULLまたは許容できない値である場合に返されます。
Example
WOLFSSL* ssl = wolfSSL_new(ctx);
…
if (wolfSSL_UseOCSPStapling(ssl, WOLFSSL_CSR2_OCSP,
WOLFSSL_CSR2_OCSP_USE_NONCE) != SSL_SUCCESS){
// 失敗ケース
}
function wolfSSL_CTX_UseOCSPStapling
int wolfSSL_CTX_UseOCSPStapling(
WOLFSSL_CTX * ctx,
unsigned char status_type,
unsigned char options
)
この関数は、ハンドシェイク中に証明書ステータスを要求します。
Parameters:
- ctx wolfSSL_CTX_new()を使用して作成されたWOLFSSL_CTX構造体へのポインタ。
- status_type TLSX_UseCertificateStatusRequest()に渡され、CertificateStatusRequest構造体に格納されるバイト型。
- options TLSX_UseCertificateStatusRequest()に渡され、CertificateStatusRequest構造体に格納されるバイト型。
See:
- wolfSSL_UseOCSPStapingV2
- wolfSSL_UseOCSPStapling
- TLSX_UseCertificateStatusRequest
Return:
- SSL_SUCCESS 関数とサブルーチンがエラーなく実行された場合に返されます。
- BAD_FUNC_ARG WOLFSSL_CTX構造体がNULLの場合、またはサブルーチンに許可されていない値が渡された場合に返されます。
- MEMORY_E 関数またはサブルーチンがメモリの適切な割り当てに失敗した場合に返されます。
Example
WOLFSSL_CTX* ctx = wolfSSL_CTX_new( method );
WOLFSSL* ssl = wolfSSL_new(ctx);
byte statusRequest = 0; // ステータスリクエストを初期化
…
switch(statusRequest){
case WOLFSSL_CSR_OCSP:
if(wolfSSL_CTX_UseOCSPStapling(ssl->ctx, WOLFSSL_CSR_OCSP,
WOLF_CSR_OCSP_USE_NONCE) != SSL_SUCCESS){
// UseCertificateStatusRequestが失敗
}
// switchケースを続ける
function wolfSSL_UseOCSPStaplingV2
int wolfSSL_UseOCSPStaplingV2(
WOLFSSL * ssl,
unsigned char status_type,
unsigned char options
)
この関数は、OCSPのステータスタイプとオプションを設定します。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
- status_type OCSPステータスタイプをロードするバイト型。
- options wolfSSL_SNI_SetOptions()とwolfSSL_CTX_SNI_SetOptions()で設定されるOCSPオプションを保持するバイト型。
See:
- TLSX_UseCertificatStatusRequestV2
- wolfSSL_SNI_SetOptions
- wolfSSL_CTX_SNI_SetOptions
Return:
- SSL_SUCCESS 関数とサブルーチンがエラーなく実行された場合に返されます。
- MEMORY_E メモリ割り当てエラーがあった場合に返されます。
- BAD_FUNC_ARG 関数またはサブルーチンにNULLまたは許容されない引数が渡された場合に返されます。
Example
WOLFSSL* ssl = wolfSSL_new(ctx);
...
if (wolfSSL_UseOCSPStaplingV2(ssl, WOLFSSL_CSR2_OCSP_MULTI, 0) != SSL_SUCCESS){
// 正しく実行されませんでした。失敗ケースのコードブロック
}
function wolfSSL_CTX_UseOCSPStaplingV2
int wolfSSL_CTX_UseOCSPStaplingV2(
WOLFSSL_CTX * ctx,
unsigned char status_type,
unsigned char options
)
OCSPステープリング用の証明書ステータス要求を作成して初期化します。
Parameters:
- ctx wolfSSL_CTX_new()を使用して作成されたWOLFSSL_CTX構造体へのポインタ。
- status_type CertificatStatusRequest構造体にあるバイト型で、WOLFSSL_CSR2_OCSPまたはWOLFSSL_CSR2_OCSP_MULTIのいずれかである必要があります。
- options CertificateStatusRequestItemV2構造体に保持されるバイト型。
See:
- TLSX_UseCertificateStatusRequestV2
- wc_RNG_GenerateBlock
- TLSX_Push
Return:
- SSL_SUCCESS 関数とサブルーチンがエラーなく実行された場合。
- BAD_FUNC_ARG WOLFSSL_CTX構造体がNULL、またはside変数がクライアント側でない場合に返されます。
- MEMORY_E メモリの割り当てに失敗した場合に返されます。
Example
WOLFSSL_CTX* ctx = wolfSSL_CTX_new( protocol method );
byte status_type;
byte options;
...
if(wolfSSL_CTX_UseOCSPStaplingV2(ctx, status_type, options); != SSL_SUCCESS){
// 失敗ケース
}
function wolfSSL_UseSupportedCurve
int wolfSSL_UseSupportedCurve(
WOLFSSL * ssl,
word16 name
)
この関数は、'ssl'パラメータで渡されたSSLオブジェクトでSupported Elliptic Curves拡張の使用を有効にするために、クライアント側で呼び出されます。これは、wolfSSLクライアントによってClientHelloで有効化されたサポートされる曲線が送信されることを意味します。この関数は、複数の曲線を有効にするために複数回呼び出すことができます。
Parameters:
- ssl wolfSSL_new()で作成されたSSLオブジェクトへのポインタ。
- name セッションでサポートされる曲線を示します。利用可能なオプションは以下の通りです: enum { WOLFSSL_ECC_SECP160R1 = 0x10, WOLFSSL_ECC_SECP192R1 = 0x13, WOLFSSL_ECC_SECP224R1 = 0x15, WOLFSSL_ECC_SECP256R1 = 0x17, WOLFSSL_ECC_SECP384R1 = 0x18, WOLFSSL_ECC_SECP521R1 = 0x19 };
See:
Return:
- SSL_SUCCESS 成功時。
- BAD_FUNC_ARG 次のいずれかの場合に返されるエラー: sslがNULL、nameが不明な値(下記参照)。
- MEMORY_E メモリが不足している場合に返されるエラー。
Example
int ret = 0;
WOLFSSL_CTX* ctx = 0;
WOLFSSL* ssl = 0;
ctx = wolfSSL_CTX_new(method);
if (ctx == NULL) {
// コンテキストの作成に失敗しました。
}
ssl = wolfSSL_new(ctx);
if (ssl == NULL) {
// sslの作成に失敗しました。
}
ret = wolfSSL_UseSupportedCurve(ssl, WOLFSSL_ECC_SECP256R1);
if (ret != 0) {
// 楕円曲線拡張の使用に失敗しました。
}
function wolfSSL_CTX_UseSupportedCurve
int wolfSSL_CTX_UseSupportedCurve(
WOLFSSL_CTX * ctx,
word16 name
)
この関数は、ctxパラメータで渡されたSSLコンテキストから作成されたSSLオブジェクトに対して、サポートされる楕円曲線拡張の使用を有効にするためにクライアント側で呼び出されます。これは、有効にされたサポートされる曲線がwolfSSLクライアントによってClientHelloで送信されることを意味します。この関数は、複数の曲線を有効にするために複数回呼び出すことができます。
Parameters:
- ctx wolfSSL_CTX_new()で作成されたSSLコンテキストへのポインタ。
- name セッションでサポートされる曲線を示します。利用可能なオプションは以下の通りです: enum { WOLFSSL_ECC_SECP160R1 = 0x10, WOLFSSL_ECC_SECP192R1 = 0x13, WOLFSSL_ECC_SECP224R1 = 0x15, WOLFSSL_ECC_SECP256R1 = 0x17, WOLFSSL_ECC_SECP384R1 = 0x18, WOLFSSL_ECC_SECP521R1 = 0x19 };
See:
Return:
- SSL_SUCCESS 成功時。
- BAD_FUNC_ARG 次のいずれかの場合に返されるエラー: ctxがNULL、nameが不明な値(下記参照)。
- MEMORY_E メモリが不足している場合に返されるエラー。
Example
int ret = 0;
WOLFSSL_CTX* ctx = 0;
ctx = wolfSSL_CTX_new(method);
if (ctx == NULL) {
// コンテキストの作成に失敗しました。
}
ret = wolfSSL_CTX_UseSupportedCurve(ctx, WOLFSSL_ECC_SECP256R1);
if (ret != 0) {
// 楕円曲線拡張の使用に失敗しました。
}
function wolfSSL_UseSecureRenegotiation
int wolfSSL_UseSecureRenegotiation(
WOLFSSL * ssl
)
この関数は、提供されたWOLFSSL構造体に対して安全な再ネゴシエーションを強制します。これは推奨されません。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
See:
- TLSX_Find
- TLSX_UseSecureRenegotiation
Return:
- SSL_SUCCESS 安全な再ネゴシエーションの設定に成功しました。
- BAD_FUNC_ARG sslがNULLの場合にエラーを返します。
- MEMORY_E 安全な再ネゴシエーション用のメモリを割り当てできない場合にエラーを返します。
Example
wolfSSL_Init();
WOLFSSL_CTX* ctx;
WOLFSSL* ssl;
WOLFSSL_METHOD method = // 何らかのwolfSSLメソッド
ctx = wolfSSL_CTX_new(method);
ssl = wolfSSL_new(ctx);
if(wolfSSL_UseSecureRenegotiation(ssl) != SSL_SUCCESS)
{
// 安全な再ネゴシエーションの設定エラー
}
function wolfSSL_Rehandshake
int wolfSSL_Rehandshake(
WOLFSSL * ssl
)
この関数は安全な再ネゴシエーションハンドシェイクを実行します。wolfSSLはこの機能を推奨していないため、これはユーザが強制するものです。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
See:
Return:
- SSL_SUCCESS 関数がエラーなく実行された場合に返されます。
- BAD_FUNC_ARG WOLFSSL構造体がNULLの場合、またはサブルーチンで受け入れられない引数が渡された場合に返されます。
- SECURE_RENEGOTIATION_E ハンドシェイクの再ネゴシエーションでエラーがあった場合に返されます。
- SSL_FATAL_ERROR サーバまたはクライアント設定にエラーがあり、再ネゴシエーションを完了できなかった場合に返されます。wolfSSL_negotiate()を参照してください。
Example
WOLFSSL* ssl = wolfSSL_new(ctx);
...
if(wolfSSL_Rehandshake(ssl) != SSL_SUCCESS){
// エラーが発生し、再ハンドシェイクは成功しませんでした。
}
function wolfSSL_UseSessionTicket
int wolfSSL_UseSessionTicket(
WOLFSSL * ssl
)
提供されたWOLFSSL構造体にセッションチケットを使用するよう強制します。定数HAVE_SESSION_TICKETが定義されており、定数NO_WOLFSSL_CLIENTが定義されていない必要があります。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
See: TLSX_UseSessionTicket
Return:
- SSL_SUCCESS セッションチケットの使用設定に成功しました。
- BAD_FUNC_ARG sslがNULLの場合に返されます。
- MEMORY_E セッションチケット設定のためのメモリ割り当てエラー。
Example
wolfSSL_Init();
WOLFSSL_CTX* ctx;
WOLFSSL* ssl;
WOLFSSL_METHOD method = // 何らかのwolfSSLメソッド
ctx = wolfSSL_CTX_new(method);
ssl = wolfSSL_new(ctx);
if(wolfSSL_UseSessionTicket(ssl) != SSL_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_get_SessionTicket
int wolfSSL_get_SessionTicket(
WOLFSSL * ssl,
unsigned char * buf,
word32 * bufSz
)
この関数は、Session構造体のticketメンバをバッファにコピーします。bufがNULLでbufSzが非NULLの場合、bufSzはチケット長に設定されます。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
- buf メモリバッファを表すbyteポインタ。
- bufSz バッファサイズを表すword32ポインタ。
See:
Return:
- SSL_SUCCESS 関数がエラーなく実行された場合に返されます。
- BAD_FUNC_ARG sslまたはbufSzがNULLの場合、またはbufSzが非NULLでbufがNULLの場合に返されます。
Example
WOLFSSL_CTX* ctx = wolfSSL_CTX_new( protocol method );
WOLFSSL* ssl = wolfSSL_new(ctx);
byte* buf;
word32 bufSz; // bufサイズで初期化
…
if(wolfSSL_get_SessionTicket(ssl, buf, bufSz) <= 0){
// バッファに何も書き込まれませんでした。
} else {
// バッファはssl->session->ticketの内容を保持しています。
}
function wolfSSL_set_SessionTicket
int wolfSSL_set_SessionTicket(
WOLFSSL * ssl,
const unsigned char * buf,
word32 bufSz
)
この関数は、WOLFSSL構造体内のWOLFSSL_SESSION構造体のticketメンバを設定します。関数に渡されたバッファはメモリにコピーされます。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
- buf セッション構造体のticketメンバに読み込まれるbyteポインタ。
- bufSz バッファのサイズを表すword32型。
See: wolfSSL_set_SessionTicket_cb
Return:
- SSL_SUCCESS 関数の実行が成功した場合に返されます。関数はエラーなく返されました。
- BAD_FUNC_ARG WOLFSSL構造体がNULLの場合に返されます。bufSz引数がゼロでないのにbuf引数がNULLの場合にも返されます。
Example
WOLFSSL_CTX* ctx = wolfSSL_CTX_new( protocol method );
WOLFSSL* ssl = wolfSSL_new(ctx);
byte* buffer; // 読み込むファイル
word32 bufSz;
...
if(wolfSSL_KeepArrays(ssl, buffer, bufSz) != SSL_SUCCESS){
// バッファをメモリに読み込む際にエラーが発生しました。
}
function wolfSSL_set_SessionTicket_cb
int wolfSSL_set_SessionTicket_cb(
WOLFSSL * ssl,
CallbackSessionTicket cb,
void * ctx
)
この関数は、セッションチケットコールバックを設定します。CallbackSessionTicket型は、次のシグネチャを持つ関数ポインタです: int (CallbackSessionTicket)(WOLFSSL, const unsigned char, int, void)
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
- cb CallbackSessionTicket型への関数ポインタ。
- ctx WOLFSSL構造体のsession_ticket_ctxメンバへのvoidポインタ。
See:
- wolfSSL_get_SessionTicket
- CallbackSessionTicket
- sessionTicketCB
Return:
- SSL_SUCCESS 関数がエラーなく実行された場合に返されます。
- BAD_FUNC_ARG WOLFSSL構造体がNULLの場合に返されます。
Example
WOLFSSL_CTX* ctx = wolfSSL_CTX_new( method );
WOLFSSL* ssl = wolfSSL_new(ctx);
…
int sessionTicketCB(WOLFSSL* ssl, const unsigned char* ticket, int ticketSz,
void* ctx){ … }
wolfSSL_set_SessionTicket_cb(ssl, sessionTicketCB, (void*)"initial session");
function wolfSSL_send_SessionTicket
int wolfSSL_send_SessionTicket(
WOLFSSL * ssl
)
この関数は、TLS v1.3ハンドシェイクが確立された後、クライアントにセッションチケットを送信します。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
See:
- wolfSSL_get_SessionTicket
- CallbackSessionTicket
- sessionTicketCB
Return:
- WOLFSSL_SUCCESS 新しいセッションチケットが送信された場合に返されます。
- BAD_FUNC_ARG WOLFSSL構造体がNULL、またはTLS v1.3を使用していない場合に返されます。
- SIDE_ERROR サーバでない場合に返されます。
- NOT_READY_ERROR ハンドシェイクが完了していない場合に返されます。
- WOLFSSL_FATAL_ERROR メッセージの作成または送信に失敗した場合に返されます。
Example
int ret;
WOLFSSL_CTX* ctx = wolfSSL_CTX_new( method );
WOLFSSL* ssl = wolfSSL_new(ctx);
…
ret = wolfSSL_send_SessionTicket(ssl);
if (ret != WOLFSSL_SUCCESS) {
// 新しいセッションチケットが送信されませんでした。
}
function wolfSSL_CTX_set_TicketEncCb
int wolfSSL_CTX_set_TicketEncCb(
WOLFSSL_CTX * ctx,
SessionTicketEncCb
)
この関数は、RFC 5077で規定されているセッションチケットをサポートするサーバのセッションチケット鍵暗号化コールバック関数を設定します。
Parameters:
- ctx wolfSSL_CTX_new()で作成されたWOLFSSL_CTXオブジェクトへのポインタ。
- cb セッションチケットを暗号化/復号するユーザコールバック関数
- ssl(Callback) wolfSSL_new()で作成されたWOLFSSLオブジェクトへのポインタ
- key_name(Callback) このチケットコンテキスト用の一意の鍵名、ランダムに生成されるべきです
- iv(Callback) このチケット用の一意のIV、最大128ビット、ランダムに生成されるべきです
- mac(Callback) このチケット用の最大256ビットのmac
- enc(Callback) この暗号化パラメータがtrueの場合、ユーザはkey_name、iv、macを入力し、長さinLenのチケットをインプレースで暗号化し、結果の出力長をoutLenに設定する必要があります。WOLFSSL_TICKET_RET_OKを返すことで、wolfSSLに暗号化が成功したことを伝えます。この暗号化パラメータがfalseの場合、ユーザはkey_name、iv、macを使用して長さinLenのチケットのインプレース復号を実行する必要があります。結果の復号長はoutLenに設定する必要があります。WOLFSSL_TICKET_RET_OKを返すことで、wolfSSLに復号されたチケットを使用して続行するよう伝えます。WOLFSSL_TICKET_RET_CREATEを返すことで、wolfSSLに復号されたチケットを使用するが、クライアントに送信する新しいチケットも生成するよう伝えます。これは最近鍵をロールした場合に完全なハンドシェイクを強制したくない場合に役立ちます。WOLFSSL_TICKET_RET_REJECTを返すことで、wolfSSLにこのチケットを拒否し、完全なハンドシェイクを実行し、通常のセッション再開用の新しい標準セッションIDを作成するよう伝えます。WOLFSSL_TICKET_RET_FATALを返すことで、wolfSSLに致命的エラーで接続試行を終了するよう伝えます。
- ticket(Callback) 暗号化されたチケットの入出力バッファ。encパラメータを参照してください。
- inLen(Callback) ticketパラメータの入力長。
- outLen(Callback) ticketパラメータの結果出力長。コールバックに入るとき、outLenはticketバッファで利用可能な最大サイズを示します。
- userCtx(Callback) wolfSSL_CTX_set_TicketEncCtx()で設定されたユーザコンテキスト
See:
Return:
- SSL_SUCCESS セッションの設定に成功した場合に返されます。
- BAD_FUNC_ARG 失敗時に返されます。これは、関数に無効な引数が渡された場合に発生します。
Example
wolfssl/test.hのmyTicketEncCb()を参照してください。
サンプルサーバとサンプルechoserverで使用されています。
function wolfSSL_CTX_set_TicketHint
int wolfSSL_CTX_set_TicketHint(
WOLFSSL_CTX * ctx,
int
)
この関数は、クライアントに中継されるセッションチケットヒントを設定します。サーバ側での使用。
Parameters:
- ctx wolfSSL_CTX_new()で作成されたWOLFSSL_CTXオブジェクトへのポインタ。
- hint チケットが有効である可能性がある秒数。クライアントへのヒント。
See: wolfSSL_CTX_set_TicketEncCb
Return:
- SSL_SUCCESS セッションの設定に成功した場合に返されます。
- BAD_FUNC_ARG 失敗時に返されます。これは、関数に無効な引数が渡された場合に発生します。
Example
none
function wolfSSL_CTX_set_TicketEncCtx
int wolfSSL_CTX_set_TicketEncCtx(
WOLFSSL_CTX * ctx,
void *
)
この関数は、コールバック用のセッションチケット暗号化ユーザコンテキストを設定します。サーバ側で使用します。
Parameters:
- ctx wolfSSL_CTX_new()で作成されたWOLFSSL_CTXオブジェクトへのポインタ。
- userCtx コールバック用のユーザコンテキスト。
See: wolfSSL_CTX_set_TicketEncCb
Return:
- SSL_SUCCESS セッションの設定に成功した場合に返されます。
- BAD_FUNC_ARG 失敗時に返されます。これは関数に無効な引数が渡されたことが原因です。
Example
none
function wolfSSL_CTX_get_TicketEncCtx
void * wolfSSL_CTX_get_TicketEncCtx(
WOLFSSL_CTX * ctx
)
この関数は、コールバック用のセッションチケット暗号化ユーザコンテキストを取得します。サーバ側で使用します。
Parameters:
- ctx wolfSSL_CTX_new()で作成されたWOLFSSL_CTXオブジェクトへのポインタ。
See: wolfSSL_CTX_set_TicketEncCtx
Return:
- userCtx セッションの取得に成功した場合に返されます。
- NULL 失敗時に返されます。これは関数に無効な引数が渡された場合、またはユーザコンテキストが設定されていない場合に発生します。
Example
none
function wolfSSL_SetHsDoneCb
int wolfSSL_SetHsDoneCb(
WOLFSSL * ssl,
HandShakeDoneCb cb,
void * user_ctx
)
この関数は、ハンドシェイク完了コールバックを設定します。WOLFSSL構造体のhsDoneCbとhsDoneCtxメンバがこの関数で設定されます。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
- cb HandShakeDoneCb型の関数ポインタで、次の形式のシグネチャを持ちます: int (HandShakeDoneCb)(WOLFSSL, void*);
- user_ctx ユーザ登録コンテキストへのvoidポインタ。
See: HandShakeDoneCb
Return:
- SSL_SUCCESS 関数がエラーなしで実行された場合に返されます。WOLFSSL構造体のhsDoneCbとhsDoneCtxメンバが設定されます。
- BAD_FUNC_ARG WOLFSSL構造体がNULLの場合に返されます。
Example
WOLFSSL_CTX* ctx = wolfSSL_CTX_new( method );
WOLFSSL* ssl = wolfSSL_new(ctx);
…
int myHsDoneCb(WOLFSSL* ssl, void* user_ctx){
// コールバック関数
}
…
wolfSSL_SetHsDoneCb(ssl, myHsDoneCb, NULL);
function wolfSSL_PrintSessionStats
int wolfSSL_PrintSessionStats(
void
)
この関数は、セッションの統計情報を出力します。
Parameters:
- none パラメータなし。
See: wolfSSL_get_session_stats
Return:
- SSL_SUCCESS 関数とサブルーチンがエラーなしで返された場合に返されます。セッション統計が正常に取得され、出力されました。
- BAD_FUNC_ARG サブルーチンwolfSSL_get_session_stats()に許容できない引数が渡された場合に返されます。
- BAD_MUTEX_E サブルーチンでmutexエラーが発生した場合に返されます。
Example
// 統計を取得するためのセッションオブジェクトが必要です
if(wolfSSL_PrintSessionStats(void) != SSL_SUCCESS){
// セッション統計を出力しませんでした
}
function wolfSSL_get_session_stats
int wolfSSL_get_session_stats(
unsigned int * active,
unsigned int * total,
unsigned int * peak,
unsigned int * maxSessions
)
この関数は、セッションの統計情報を取得します。
Parameters:
- active 総現在セッション数を表すword32ポインタ。
- total 総セッション数を表すword32ポインタ。
- peak ピークセッション数を表すword32ポインタ。
- maxSessions 最大セッション数を表すword32ポインタ。
See: wolfSSL_PrintSessionStats
Return:
- SSL_SUCCESS 関数とサブルーチンがエラーなしで返された場合に返されます。セッション統計が正常に取得され、出力されました。
- BAD_FUNC_ARG サブルーチンwolfSSL_get_session_stats()に許容できない引数が渡された場合に返されます。
- BAD_MUTEX_E サブルーチンでmutexエラーが発生した場合に返されます。
Example
int wolfSSL_PrintSessionStats(void){
…
ret = wolfSSL_get_session_stats(&totalSessionsNow,
&totalSessionsSeen, &peak, &maxSessions);
…
return ret;
function wolfSSL_MakeTlsMasterSecret
int wolfSSL_MakeTlsMasterSecret(
unsigned char * ms,
word32 msLen,
const unsigned char * pms,
word32 pmsLen,
const unsigned char * cr,
const unsigned char * sr,
int tls1_2,
int hash_type
)
この関数は、crとsrの値をコピーし、wc_PRF(疑似乱数関数)に渡し、その値を返します。
Parameters:
- ms Arrays構造体に保持されているマスターシークレット。
- msLen マスターシークレットの長さ。
- pms Arrays構造体に保持されているプリマスターシークレット。
- pmsLen プリマスターシークレットの長さ。
- cr クライアントランダム。
- sr サーバランダム。
- tls1_2 バージョンが少なくともTLSバージョン1.2であることを示します。
- hash_type ハッシュタイプを示します。
See:
- wc_PRF
- MakeTlsMasterSecret
Return:
- 0 成功時。
- BUFFER_E バッファのサイズでエラーが発生する場合に返されます。
- MEMORY_E サブルーチンが動的メモリの割り当てに失敗した場合に返されます。
Example
WOLFSSL* ssl;
MakeTlsMasterSecretで呼び出され、以下のように必要な情報を取得します:
int MakeTlsMasterSecret(WOLFSSL* ssl){
int ret;
ret = wolfSSL_makeTlsMasterSecret(ssl->arrays->masterSecret, SECRET_LEN,
ssl->arrays->preMasterSecret, ssl->arrays->preMasterSz,
ssl->arrays->clientRandom, ssl->arrays->serverRandom,
IsAtLeastTLSv1_2(ssl), ssl->specs.mac_algorithm);
…
return ret;
}
function wolfSSL_DeriveTlsKeys
int wolfSSL_DeriveTlsKeys(
unsigned char * key_data,
word32 keyLen,
const unsigned char * ms,
word32 msLen,
const unsigned char * sr,
const unsigned char * cr,
int tls1_2,
int hash_type
)
TLS鍵を導出するための外部向けラッパー。
Parameters:
- key_data DeriveTlsKeysで割り当てられ、最終ハッシュを保持するためにwc_PRFに渡されるバイトポインタ。
- keyLen DeriveTlsKeysでWOLFSSL構造体のspecsメンバから導出されるword32型。
- ms WOLFSSL構造体内のarrays構造体に保持されているマスターシークレットを保持する定数ポインタ型。
- msLen 列挙定義SECRET_LENでマスターシークレットの長さを保持するword32型。
- sr WOLFSSL構造体内のarrays構造体のserverRandomメンバへの定数バイトポインタ。
- cr WOLFSSL構造体内のarrays構造体のclientRandomメンバへの定数バイトポインタ。
- tls1_2 IsAtLeastTLSv1_2()から返される整数型。
- hash_type WOLFSSL構造体に保持されている整数型。
See:
- wc_PRF
- DeriveTlsKeys
- IsAtLeastTLSv1_2
Return:
- 0 成功時に返されます。
- BUFFER_E labLenとseedLenの合計(合計サイズを計算)が最大サイズを超えた場合に返されます。
- MEMORY_E メモリの割り当てに失敗した場合に返されます。
Example
int DeriveTlsKeys(WOLFSSL* ssl){
int ret;
…
ret = wolfSSL_DeriveTlsKeys(key_data, length, ssl->arrays->masterSecret,
SECRET_LEN, ssl->arrays->clientRandom,
IsAtLeastTLSv1_2(ssl), ssl->specs.mac_algorithm);
…
}
function wolfSSL_connect_ex
int wolfSSL_connect_ex(
WOLFSSL * ssl,
HandShakeCallBack hsCb,
TimeoutCallBack toCb,
WOLFSSL_TIMEVAL timeout
)
wolfSSL_connect_ex()は、HandShakeコールバックを設定できる拡張です。これは、デバッガが利用できず、スニッフィングが実用的でない場合に、組み込みシステムのデバッグサポートに役立ちます。HandShakeコールバックは、ハンドシェイクエラーが発生したかどうかに関わらず呼び出されます。SSLパケットの最大数が既知であるため、動的メモリは使用されません。パケット名はpacketNames[]を通じてアクセスできます。接続拡張はまた、タイムアウト値と共にTimeoutコールバックを設定できます。これは、ユーザがTCPスタックのタイムアウトを待ちたくない場合に便利です。この拡張は、いずれか、両方、またはどちらのコールバックもなしで呼び出すことができます。
Parameters:
- none パラメータなし。
See: wolfSSL_accept_ex
Return:
- SSL_SUCCESS 成功時。
- GETTIME_ERROR gettimeofday()がエラーに遭遇した場合に返されます。
- SETITIMER_ERROR setitimer()がエラーに遭遇した場合に返されます。
- SIGACT_ERROR sigaction()がエラーに遭遇した場合に返されます。
- SSL_FATAL_ERROR 基礎となるSSL_connect()呼び出しがエラーに遭遇した場合に返されます。
Example
none
function wolfSSL_accept_ex
int wolfSSL_accept_ex(
WOLFSSL * ssl,
HandShakeCallBacki hsCb,
TimeoutCallBack toCb,
WOLFSSL_TIMEVAL timeout
)
wolfSSL_accept_ex()は、HandShakeコールバックを設定できる拡張です。これは、デバッガが利用できず、スニッフィングが実用的でない場合に、組み込みシステムのデバッグサポートに役立ちます。HandShakeコールバックは、ハンドシェイクエラーが発生したかどうかに関わらず呼び出されます。SSLパケットの最大数が既知であるため、動的メモリは使用されません。パケット名はpacketNames[]を通じてアクセスできます。接続拡張はまた、タイムアウト値と共にTimeoutコールバックを設定できます。これは、ユーザがTCPスタックのタイムアウトを待ちたくない場合に便利です。この拡張は、いずれか、両方、またはどちらのコールバックもなしで呼び出すことができます。
Parameters:
- none パラメータなし。
See: wolfSSL_connect_ex
Return:
- SSL_SUCCESS 成功時。
- GETTIME_ERROR gettimeofday()がエラーに遭遇した場合に返されます。
- SETITIMER_ERROR setitimer()がエラーに遭遇した場合に返されます。
- SIGACT_ERROR sigaction()がエラーに遭遇した場合に返されます。
- SSL_FATAL_ERROR 基礎となるSSL_accept()呼び出しがエラーに遭遇した場合に返されます。
Example
none
function wolfSSL_BIO_set_fp
long wolfSSL_BIO_set_fp(
WOLFSSL_BIO * bio,
XFILE fp,
int c
)
これは、BIOの内部ファイルポインタを設定するために使用されます。
Parameters:
- bio ペアを設定するWOLFSSL_BIO構造体。
- fp bioに設定するファイルポインタ。
- c ファイルクローズ動作フラグ。
See:
- wolfSSL_BIO_new
- wolfSSL_BIO_s_mem
- wolfSSL_BIO_get_fp
- wolfSSL_BIO_free
Return:
- SSL_SUCCESS ファイルポインタの設定に成功した場合。
- SSL_FAILURE エラーケースが発生した場合。
Example
WOLFSSL_BIO* bio;
XFILE fp;
int ret;
bio = wolfSSL_BIO_new(wolfSSL_BIO_s_file());
ret = wolfSSL_BIO_set_fp(bio, fp, BIO_CLOSE);
// ret値を確認
function wolfSSL_BIO_get_fp
long wolfSSL_BIO_get_fp(
WOLFSSL_BIO * bio,
XFILE * fp
)
これは、BIOの内部ファイルポインタを取得するために使用されます。
Parameters:
- bio ペアを設定するWOLFSSL_BIO構造体。
- fp bioに設定するファイルポインタ。
See:
- wolfSSL_BIO_new
- wolfSSL_BIO_s_mem
- wolfSSL_BIO_set_fp
- wolfSSL_BIO_free
Return:
- SSL_SUCCESS ファイルポインタの取得に成功した場合。
- SSL_FAILURE エラーケースが発生した場合。
Example
WOLFSSL_BIO* bio;
XFILE fp;
int ret;
bio = wolfSSL_BIO_new(wolfSSL_BIO_s_file());
ret = wolfSSL_BIO_get_fp(bio, &fp);
// ret値を確認
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_X509_get_ext_by_NID
int wolfSSL_X509_get_ext_by_NID(
const WOLFSSL_X509 * x509,
int nid,
int lastPos
)
この関数は、渡されたNID値に一致する拡張インデックスを検索して返します。
Parameters:
- x509 拡張を検索するために解析する証明書。
- nid 見つける拡張OID。
- lastPos lastPos以降の拡張から検索を開始します。 最初は-1に設定します。
Return:
- >= 0 成功時、拡張インデックスが返されます。
- -1 拡張が見つからない場合、またはエラーが発生した場合。
Example
const WOLFSSL_X509* x509;
int lastPos = -1;
int idx;
idx = wolfSSL_X509_get_ext_by_NID(x509, NID_basic_constraints, lastPos);
function wolfSSL_X509_get_ext_d2i
void * wolfSSL_X509_get_ext_d2i(
const WOLFSSL_X509 * x509,
int nid,
int * c,
int * idx
)
この関数は渡されたNID値に一致する拡張を検索して返します。
Parameters:
- x509 拡張を解析する証明書。
- nid 検索する拡張OID。
- c NULLでない場合、複数の拡張が見つかった場合は-2、見つからなかった場合は-1、見つかってクリティカルでない場合は0、見つかってクリティカルな場合は1に設定されます。
- idx NULLの場合は最初に一致した拡張を返します。それ以外の場合、x509に格納されていなければidxから開始します。
See: wolfSSL_sk_ASN1_OBJECT_free
Return:
- pointer 成功した場合、STACK_OF(WOLFSSL_ASN1_OBJECT)ポインタが返されます。
- NULL 拡張が見つからない、またはエラーが発生した場合。
Example
const WOLFSSL_X509* x509;
int c;
int idx = 0;
STACK_OF(WOLFSSL_ASN1_OBJECT)* sk;
sk = wolfSSL_X509_get_ext_d2i(x509, NID_basic_constraints, &c, &idx);
// skがNULLでないか確認してから使用。使用後はskを解放する必要があります
function wolfSSL_X509_digest
int wolfSSL_X509_digest(
const WOLFSSL_X509 * x509,
const WOLFSSL_EVP_MD * digest,
unsigned char * buf,
unsigned int * len
)
この関数はDER証明書のハッシュを返します。
Parameters:
- x509 ハッシュを取得する証明書。
- digest 使用するハッシュアルゴリズム。
- buf ハッシュを保持するバッファ。
- len バッファの長さ。
See: none
Return:
- SSL_SUCCESS ハッシュの作成に成功した場合。
- SSL_FAILURE 不正な入力またはハッシュ失敗時に返されます。
Example
WOLFSSL_X509* x509;
unsigned char buffer[64];
unsigned int bufferSz;
int ret;
ret = wolfSSL_X509_digest(x509, wolfSSL_EVP_sha256(), buffer, &bufferSz);
// ret値を確認
function wolfSSL_use_certificate
int wolfSSL_use_certificate(
WOLFSSL * ssl,
WOLFSSL_X509 * x509
)
ハンドシェイク中に使用するWOLFSSL構造体の証明書を設定するために使用されます。
Parameters:
- ssl 証明書を設定するWOLFSSL構造体。
- x509 使用する証明書。
See:
Return:
- SSL_SUCCESS 引数の設定に成功した場合。
- SSL_FAILURE NULL引数が渡された場合。
Example
WOLFSSL* ssl;
WOLFSSL_X509* x509
int ret;
// sslオブジェクトとx509を作成
ret = wolfSSL_use_certificate(ssl, x509);
// ret値を確認
function wolfSSL_use_certificate_ASN1
int wolfSSL_use_certificate_ASN1(
WOLFSSL * ssl,
unsigned char * der,
int derSz
)
ハンドシェイク中に使用するWOLFSSL構造体の証明書を設定するために使用されます。DER形式のバッファが必要です。
Parameters:
- ssl 証明書を設定するWOLFSSL構造体。
- der 使用するDER証明書。
- derSz 渡されたDERバッファのサイズ。
See:
Return:
- SSL_SUCCESS 引数の設定に成功した場合。
- SSL_FAILURE NULL引数が渡された場合。
Example
WOLFSSL* ssl;
unsigned char* der;
int derSz;
int ret;
// sslオブジェクトを作成してDER変数を設定
ret = wolfSSL_use_certificate_ASN1(ssl, der, derSz);
// ret値を確認
function wolfSSL_use_PrivateKey
int wolfSSL_use_PrivateKey(
WOLFSSL * ssl,
WOLFSSL_EVP_PKEY * pkey
)
WOLFSSL構造体の秘密鍵を設定するために使用されます。
Parameters:
- ssl 引数を設定するWOLFSSL構造体。
- pkey 使用する秘密鍵。
See:
Return:
- SSL_SUCCESS 引数の設定に成功した場合。
- SSL_FAILURE NULLのsslが渡された場合。すべてのエラーケースは負の値になります。
Example
WOLFSSL* ssl;
WOLFSSL_EVP_PKEY* pkey;
int ret;
// sslオブジェクトを作成して秘密鍵をセットアップ
ret = wolfSSL_use_PrivateKey(ssl, pkey);
// ret値を確認
function wolfSSL_use_PrivateKey_ASN1
int wolfSSL_use_PrivateKey_ASN1(
int pri,
WOLFSSL * ssl,
unsigned char * der,
long derSz
)
WOLFSSL構造体の秘密鍵を設定するために使用されます。DER形式の鍵バッファが必要です。
Parameters:
- pri 秘密鍵のタイプ。
- ssl 引数を設定するWOLFSSL構造体。
- der DER鍵を保持するバッファ。
- derSz derバッファのサイズ。
See:
Return:
- SSL_SUCCESS 秘密鍵の解析と設定に成功した場合。
- SSL_FAILURE NULLのsslが渡された場合。すべてのエラーケースは負の値になります。
Example
WOLFSSL* ssl;
unsigned char* pkey;
long pkeySz;
int ret;
// sslオブジェクトを作成して秘密鍵をセットアップ
ret = wolfSSL_use_PrivateKey_ASN1(1, ssl, pkey, pkeySz);
// ret値を確認
function wolfSSL_use_RSAPrivateKey_ASN1
int wolfSSL_use_RSAPrivateKey_ASN1(
WOLFSSL * ssl,
unsigned char * der,
long derSz
)
WOLFSSL構造体の秘密鍵を設定するために使用されます。DER形式のRSA鍵バッファが必要です。
Parameters:
- ssl 引数を設定するWOLFSSL構造体。
- der DER鍵を保持するバッファ。
- derSz derバッファのサイズ。
See:
Return:
- SSL_SUCCESS 秘密鍵の解析と設定に成功した場合。
- SSL_FAILURE NULLのsslが渡された場合。すべてのエラーケースは負の値になります。
Example
WOLFSSL* ssl;
unsigned char* pkey;
long pkeySz;
int ret;
// sslオブジェクトを作成してRSA秘密鍵をセットアップ
ret = wolfSSL_use_RSAPrivateKey_ASN1(ssl, pkey, pkeySz);
// ret値を確認
function wolfSSL_DSA_dup_DH
WOLFSSL_DH * wolfSSL_DSA_dup_DH(
const WOLFSSL_DSA * r
)
この関数はdsaのパラメータを新しく作成されたWOLFSSL_DH構造体に複製します。
Parameters:
- dsa 複製するWOLFSSL_DSA構造体。
See: none
Return:
- WOLFSSL_DH 複製に成功した場合、WOLFSSL_DH構造体を返します。
- NULL 失敗時。
Example
WOLFSSL_DH* dh;
WOLFSSL_DSA* dsa;
// dsaをセットアップ
dh = wolfSSL_DSA_dup_DH(dsa);
// dhがnullでないか確認
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_d2i_X509_bio
WOLFSSL_X509 * wolfSSL_d2i_X509_bio(
WOLFSSL_BIO * bio,
WOLFSSL_X509 ** x509
)
この関数はbioからDERバッファを取得し、それをWOLFSSL_X509構造体に変換します。
Parameters:
- bio DER証明書バッファを持つWOLFSSL_BIO構造体へのポインタ。
- x509 作成された新しいWOLFSSL_X509構造体に設定されるポインタ。
See: none
Return:
- pointer 成功時にWOLFSSL_X509構造体ポインタを返します。
- Null 失敗時にNULLを返します。
Example
WOLFSSL_BIO* bio;
WOLFSSL_X509* x509;
// DERをbioにロード
x509 = wolfSSL_d2i_X509_bio(bio, NULL);
// または
wolfSSL_d2i_X509_bio(bio, &x509);
// 返されたx509を使用(NULLをチェック)
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_BIO_ctrl_pending
size_t wolfSSL_BIO_ctrl_pending(
WOLFSSL_BIO * b
)
読み取り保留中のバイト数を取得します。BIOタイプがBIO_BIOの場合、ペアから読み取るバイト数です。BIOがSSLオブジェクトを含む場合、SSLオブジェクトからの保留中のデータです(wolfSSL_pending(ssl))。BIO_MEMORYタイプの場合、メモリバッファのサイズを返します。
Parameters:
- bio すでに作成されているWOLFSSL_BIO構造体へのポインタ。
See:
- wolfSSL_BIO_make_bio_pair
- wolfSSL_BIO_new
Return: >=0 保留中のバイト数。
Example
WOLFSSL_BIO* bio; int pending;
bio = wolfSSL_BIO_new();
…
pending = wolfSSL_BIO_ctrl_pending(bio);
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_PEM_read_bio_X509_AUX
WOLFSSL_X509 * wolfSSL_PEM_read_bio_X509_AUX(
WOLFSSL_BIO * bp,
WOLFSSL_X509 ** x,
wc_pem_password_cb * cb,
void * u
)
この関数はwolfSSL_PEM_read_bio_X509と同じように動作します。AUXは、信頼された/拒否されたユースケースや人間が読みやすいフレンドリ名などの追加情報を含むことを意味します。
Parameters:
- bp PEMバッファを取得するWOLFSSL_BIO構造体。
- x 関数の副作用によってWOLFSSL_X509を設定する場合。
- cb パスワードコールバック。
- u NULL終端のユーザーパスワード。
See: wolfSSL_PEM_read_bio_X509
Return:
- WOLFSSL_X509 PEMバッファの解析に成功した場合、WOLFSSL_X509構造体が返されます。
- Null PEMバッファの解析に失敗した場合。
Example
WOLFSSL_BIO* bio;
WOLFSSL_X509* x509;
// bioをセットアップ
X509 = wolfSSL_PEM_read_bio_X509_AUX(bio, NULL, NULL, NULL);
//x509がnullでないことを確認してから使用
function wolfSSL_CTX_set_tmp_dh
long wolfSSL_CTX_set_tmp_dh(
WOLFSSL_CTX * ctx,
WOLFSSL_DH * dh
)
WOLFSSL_CTX構造体のdhメンバをDiffie-Hellmanパラメータで初期化します。
Parameters:
- ctx wolfSSL_CTX_new()を使用して作成されたWOLFSSL_CTX構造体へのポインタ。
- dh WOLFSSL_DH構造体へのポインタ。
See: wolfSSL_BN_bn2bin
Return:
- SSL_SUCCESS 関数が正常に実行された場合に返されます。
- BAD_FUNC_ARG ctxまたはdh構造体がNULLの場合に返されます。
- SSL_FATAL_ERROR 構造体の値の設定にエラーがあった場合に返されます。
- MEMORY_E メモリの割り当てに失敗した場合に返されます。
Example
WOLFSSL_CTX* ctx = wolfSSL_CTX_new( protocol method );
WOLFSSL_DH* dh;
…
return wolfSSL_CTX_set_tmp_dh(ctx, dh);
function wolfSSL_PEM_read_bio_DSAparams
WOLFSSL_DSA * wolfSSL_PEM_read_bio_DSAparams(
WOLFSSL_BIO * bp,
WOLFSSL_DSA ** x,
wc_pem_password_cb * cb,
void * u
)
この関数は、bio内のPEMバッファからDSAパラメータを取得します。
Parameters:
- bio PEMメモリポインタを取得するためのWOLFSSL_BIO構造体へのポインタ。
- x 新しいWOLFSSL_DSA構造体に設定されるポインタ。
- cb パスワードコールバック関数。
- u null終端のパスワード文字列。
See: none
Return:
- WOLFSSL_DSA PEMバッファの解析に成功した場合、WOLFSSL_DSA構造体が作成されて返されます。
- Null PEMバッファの解析に失敗した場合。
Example
WOLFSSL_BIO* bio;
WOLFSSL_DSA* dsa;
// bioをセットアップ
dsa = wolfSSL_PEM_read_bio_DSAparams(bio, NULL, NULL, NULL);
// dsaがNULLでないことを確認してからdsaを使用
function wolfSSL_ERR_peek_last_error
unsigned long wolfSSL_ERR_peek_last_error(
void
)
この関数は、WOLFSSL_ERRORから発生した最後のエラーの絶対値を返します。
Parameters:
- none パラメータはありません。
See: wolfSSL_ERR_print_errors_fp
Return: error 最後のエラーの絶対値を返します。
Example
unsigned long err;
...
err = wolfSSL_ERR_peek_last_error();
// err値を検査
function WOLF_STACK_OF
WOLF_STACK_OF(
WOLFSSL_X509
) const
この関数は、ピアの証明書チェーンを取得します。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
See:
Return:
- pointer ピアのCertificateスタックへのポインタを返します。
- NULL ピア証明書がない場合に返されます。
Example
WOLFSSL_CTX* ctx = wolfSSL_CTX_new( method );
WOLFSSL* ssl = wolfSSL_new(ctx);
...
wolfSSL_connect(ssl);
STACK_OF(WOLFSSL_X509)* chain = wolfSSL_get_peer_cert_chain(ssl);
if(chain){
// ピア証明書チェーンへのポインタがあります
}
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_jobject
int wolfSSL_set_jobject(
WOLFSSL * ssl,
void * objPtr
)
この関数は、WOLFSSL構造体のjObjectRefメンバを設定します。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
- objPtr jObjectRefに設定されるvoidポインタ。
See: wolfSSL_get_jobject
Return:
- SSL_SUCCESS jObjectRefがobjPtrに適切に設定された場合に返されます。
- SSL_FAILURE 関数が適切に実行されず、jObjectRefが設定されていない場合に返されます。
Example
WOLFSSL_CTX* ctx = wolfSSL_CTX_new( protocol method );
WOLFSSL* ssl = WOLFSSL_new();
void* objPtr = &obj;
...
if(wolfSSL_set_jobject(ssl, objPtr)){
// 成功ケース
}
function wolfSSL_get_jobject
void * wolfSSL_get_jobject(
WOLFSSL * ssl
)
この関数は、WOLFSSL構造体のjObjectRefメンバを返します。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
See: wolfSSL_set_jobject
Return:
- value WOLFSSL構造体がNULLでない場合、関数はjObjectRef値を返します。
- NULL WOLFSSL構造体がNULLの場合に返されます。
Example
WOLFSSL_CTX* ctx = wolfSSL_CTX_new( protocol method );
WOLFSSL* ssl = wolfSSL(ctx);
...
void* jobject = wolfSSL_get_jobject(ssl);
if(jobject != NULL){
// 成功ケース
}
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_X509_get_next_altname
char * wolfSSL_X509_get_next_altname(
WOLFSSL_X509 *
)
この関数は、ピア証明書から次の代替名(もしあれば)を返します。
Parameters:
- cert wolfSSL_X509構造体へのポインタ。
See:
Return:
- NULL 次の代替名がない場合。
- cert->altNamesNext->name WOLFSSL_X509構造体から返されます。 altNameリストからの文字列値が存在する場合に返されます。
Example
WOLFSSL_X509 x509 = (WOLFSSL_X509*)XMALLOC(sizeof(WOLFSSL_X509), NULL,
DYNAMIC_TYPE_X509);
…
int x509NextAltName = wolfSSL_X509_get_next_altname(x509);
if(x509NextAltName == NULL){
//別のalt nameはありません。
}
function wolfSSL_X509_get_notBefore
WOLFSSL_ASN1_TIME * wolfSSL_X509_get_notBefore(
WOLFSSL_X509 *
)
この関数は、x509がNULLかどうかを確認し、NULLでない場合はx509構造体のnotBeforeメンバを返します。
Parameters:
- x509 WOLFSSL_X509構造体へのポインタ。
See: wolfSSL_X509_get_notAfter
Return:
- pointer x509構造体のnotBeforeメンバへのASN1_TIMEを持つ構造体へのポインタ。
- NULL x509構造体がNULLの場合、関数はNULLを返します。
Example
WOLFSSL_X509* x509 = (WOLFSSL_X509)XMALLOC(sizeof(WOLFSSL_X509), NULL,
DYNAMIC_TYPE_X509) ;
…
const WOLFSSL_ASN1_TIME* notAfter = wolfSSL_X509_get_notBefore(x509);
if(notAfter == NULL){
//x509オブジェクトがNULLでした。
}
function wolfSSL_connect
int wolfSSL_connect(
WOLFSSL * ssl
)
この関数はクライアント側で呼び出され、サーバとのSSL/TLSハンドシェイクを開始します。この関数が呼び出されるとき、基礎となる通信チャネルはすでに設定されています。wolfSSL_connect()は、ブロッキングI/Oと非ブロッキングI/Oの両方で動作します。基礎となるI/Oが非ブロッキングの場合、wolfSSL_connect()は、基礎となるI/OがwolfSSL_connect()がハンドシェイクを続行するために必要とするものを満たすことができないときに返されます。この場合、wolfSSL_get_error()の呼び出しはSSL_ERROR_WANT_READまたはSSL_ERROR_WANT_WRITEを返します。呼び出しプロセスは、基礎となるI/Oの準備ができたときにwolfSSL_connect()の呼び出しを繰り返す必要があり、wolfSSLは中断したところから再開します。非ブロッキングソケットを使用する場合、何もする必要はありませんが、select()を使用して必要な条件を確認できます。基礎となるI/Oがブロッキングの場合、wolfSSL_connect()はハンドシェイクが完了するかエラーが発生するまで返されません。wolfSSLは、OpenSSLとは異なるアプローチで証明書検証を行います。クライアントのデフォルトポリシーはサーバを検証することです。つまり、サーバを検証するためのCAを読み込まない場合、接続エラー、検証不可(-155)が発生します。サーバの検証が失敗してもSSL_connectが成功し、セキュリティを低下させるOpenSSLの動作を模倣したい場合は、SSL_new()を呼び出す前にSSL_CTX_set_verify(ctx, SSL_VERIFY_NONE, 0);を呼び出すことでこれを実現できます。ただし、推奨されません。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
See:
Return:
- SSL_SUCCESS 成功した場合。
- SSL_FATAL_ERROR エラーが発生した場合に返されます。より詳細なエラーコードを取得するには、wolfSSL_get_error()を呼び出してください。
Example
int ret = 0;
int err = 0;
WOLFSSL* ssl;
char buffer[80];
...
ret = wolfSSL_connect(ssl);
if (ret != SSL_SUCCESS) {
err = wolfSSL_get_error(ssl, ret);
printf("error = %d, %s\n", err, wolfSSL_ERR_error_string(err, buffer));
}
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_update_keys
int wolfSSL_update_keys(
WOLFSSL * ssl
)
この関数は、鍵のロールオーバーを強制するために、TLS v1.3クライアントまたはサーバwolfSSLで呼び出されます。KeyUpdateメッセージがピアに送信され、暗号化用の新しい鍵が計算されます。ピアはKeyUpdateメッセージを送り返し、その後新しい復号鍵が計算されます。この関数は、ハンドシェイクが完了した後にのみ呼び出すことができます。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
See: wolfSSL_write
Return:
- BAD_FUNC_ARG sslがNULLまたはTLS v1.3を使用していない場合。
- WANT_WRITE 書き込みの準備ができていない場合。
- WOLFSSL_SUCCESS 成功した場合。
Example
int ret;
WOLFSSL* ssl;
...
ret = wolfSSL_update_keys(ssl);
if (ret == WANT_WRITE) {
// I/Oの準備ができたら再度呼び出す必要があります。
}
else if (ret != WOLFSSL_SUCCESS) {
// 鍵更新の送信に失敗しました。
}
function wolfSSL_key_update_response
int wolfSSL_key_update_response(
WOLFSSL * ssl,
int * required
)
この関数は、鍵のロールオーバーが進行中かどうかを判断するために、TLS v1.3クライアントまたはサーバwolfSSLで呼び出されます。wolfSSL_update_keys()が呼び出されると、KeyUpdateメッセージが送信され、暗号化鍵が更新されます。復号鍵は、応答を受信したときに更新されます。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
- required 鍵更新応答が不要な場合は0。鍵更新応答が必要な場合は1。
See: wolfSSL_update_keys
Return:
- 0 成功した場合。
- BAD_FUNC_ARG sslがNULLまたはTLS v1.3を使用していない場合。
Example
int ret;
WOLFSSL* ssl;
int required;
...
ret = wolfSSL_key_update_response(ssl, &required);
if (ret != 0) {
// 不正なパラメータ
}
if (required) {
// 暗号化鍵が更新され、復号鍵を変更するための応答を待っています。
}
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_request_certificate
int wolfSSL_request_certificate(
WOLFSSL * ssl
)
この関数は、TLS v1.3クライアントからクライアント証明書を要求します。これは、Webサーバがクライアント認証を必要とするページと必要としないページの両方を提供している場合に便利です。接続上で最大256回の要求を送信できます。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
See:
Return:
- BAD_FUNC_ARG sslがNULLの場合、またはTLS v1.3を使用していない場合。
- WANT_WRITE 書き込みの準備ができていない場合。
- SIDE_ERROR クライアントで呼び出された場合。
- NOT_READY_ERROR ハンドシェイクが完了していないときに呼び出された場合。
- POST_HAND_AUTH_ERROR ポストハンドシェイク認証が許可されていない場合。
- MEMORY_E 動的メモリ割り当てが失敗した場合。
- WOLFSSL_SUCCESS 成功時。
Example
int ret;
WOLFSSL* ssl;
...
ret = wolfSSL_request_certificate(ssl);
if (ret == WANT_WRITE) {
// I/Oの準備ができたら再度呼び出す必要があります
}
else if (ret != WOLFSSL_SUCCESS) {
// クライアント証明書の要求に失敗しました
}
function wolfSSL_CTX_set1_groups_list
int wolfSSL_CTX_set1_groups_list(
WOLFSSL_CTX * ctx,
char * list
)
この関数は、wolfSSLコンテキストで優先順位に従って許可する楕円曲線グループのリストを設定します。リストはnull終端のテキスト文字列で、コロン区切りのリストです。TLS v1.3接続で使用する鍵交換楕円曲線パラメータを設定するには、この関数を呼び出してください。
Parameters:
- ctx wolfSSL_CTX_new()で作成されたWOLFSSL_CTX構造体へのポインタ。
- list 楕円曲線グループのコロン区切りリストである文字列。
See:
- 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 成功時。
Example
int ret;
WOLFSSL_CTX* ctx;
const char* list = "P-384:P-256";
...
ret = wolfSSL_CTX_set1_groups_list(ctx, list);
if (ret != WOLFSSL_SUCCESS) {
// グループリストの設定に失敗しました
}
function wolfSSL_set1_groups_list
int wolfSSL_set1_groups_list(
WOLFSSL * ssl,
char * list
)
この関数は、wolfSSLで優先順位に従って許可する楕円曲線グループのリストを設定します。リストはnull終端のテキスト文字列で、コロン区切りのリストです。TLS v1.3接続で使用する鍵交換楕円曲線パラメータを設定するには、この関数を呼び出してください。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
- list 鍵交換グループのコロン区切りリストである文字列。
See:
- 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_preferred_group
int wolfSSL_preferred_group(
WOLFSSL * ssl
)
この関数は、TLS v1.3ハンドシェイクでクライアントが優先的に使用したい鍵交換グループを返します。ハンドシェイク完了後にこの関数を呼び出して、サーバが優先するグループを判定し、この情報を将来の接続で使用して鍵交換用の鍵ペアを事前生成できます。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
See:
- wolfSSL_UseKeyShare
- wolfSSL_CTX_set_groups
- wolfSSL_set_groups
- wolfSSL_CTX_set1_groups_list
- wolfSSL_set1_groups_list
Return:
- BAD_FUNC_ARG sslがNULLの場合、またはTLS v1.3を使用していない場合。
- SIDE_ERROR サーバで呼び出された場合。
- NOT_READY_ERROR ハンドシェイク完了前に呼び出された場合。
- Group identifier 成功時、グループ識別子。
Example
int ret;
int group;
WOLFSSL* ssl;
...
ret = wolfSSL_CTX_set1_groups_list(ssl)
if (ret < 0) {
// グループの取得に失敗しました
}
group = ret;
function wolfSSL_CTX_set_groups
int wolfSSL_CTX_set_groups(
WOLFSSL_CTX * ctx,
int * groups,
int count
)
この関数は、wolfSSLコンテキストで優先順位に従って許可する楕円曲線グループのリストを設定します。リストはグループ識別子の配列で、識別子の数はcountで指定されます。TLS v1.3接続で使用する鍵交換楕円曲線パラメータを設定するには、この関数を呼び出してください。
Parameters:
- ctx wolfSSL_CTX_new()で作成されたWOLFSSL_CTX構造体へのポインタ。
- groups 識別子による鍵交換グループのリスト。
- count groups内の鍵交換グループの数。
See:
- wolfSSL_set_groups
- wolfSSL_UseKeyShare
- wolfSSL_CTX_set_groups
- wolfSSL_set_groups
- wolfSSL_CTX_set1_groups_list
- wolfSSL_set1_groups_list
- wolfSSL_preferred_group
Return:
- BAD_FUNC_ARG ポインタパラメータがnullの場合、グループ数がWOLFSSL_MAX_GROUP_COUNTを超える場合、またはTLS v1.3を使用していない場合。
- WOLFSSL_SUCCESS 成功時。
Example
int ret;
WOLFSSL_CTX* ctx;
int* groups = { WOLFSSL_ECC_X25519, WOLFSSL_ECC_SECP256R1 };
int count = 2;
...
ret = wolfSSL_CTX_set1_groups_list(ctx, groups, count);
if (ret != WOLFSSL_SUCCESS) {
// グループリストの設定に失敗しました
}
function wolfSSL_set_groups
int wolfSSL_set_groups(
WOLFSSL * ssl,
int * groups,
int count
)
この関数は、wolfSSLで許可する楕円曲線グループのリストを設定します。リストはグループ識別子の配列で、識別子の数はcountで指定されます。TLS v1.3接続で使用する鍵交換楕円曲線パラメータを設定するには、この関数を呼び出してください。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
- groups 識別子による鍵交換グループのリスト。
- count groups内の鍵交換グループの数。
See:
- wolfSSL_CTX_set_groups
- wolfSSL_UseKeyShare
- wolfSSL_CTX_set_groups
- wolfSSL_set_groups
- wolfSSL_CTX_set1_groups_list
- wolfSSL_set1_groups_list
- wolfSSL_preferred_group
Return:
- BAD_FUNC_ARG ポインタパラメータがnullの場合、グループ数がWOLFSSL_MAX_GROUP_COUNTを超える場合、識別子のいずれかが認識されない場合、またはTLS v1.3を使用していない場合。
- WOLFSSL_SUCCESS 成功時。
Example
int ret;
WOLFSSL* ssl;
int* groups = { WOLFSSL_ECC_X25519, WOLFSSL_ECC_SECP256R1 };
int count = 2;
...
ret = wolfSSL_set_groups(ssl, groups, count);
if (ret != WOLFSSL_SUCCESS) {
// グループリストの設定に失敗しました
}
function wolfSSL_connect_TLSv13
int wolfSSL_connect_TLSv13(
WOLFSSL *
)
この関数はクライアント側で呼び出され、サーバとのTLS v1.3ハンドシェイクを開始します。この関数が呼び出されるとき、基礎となる通信チャネルはすでに設定されています。wolfSSL_connect()はブロッキングI/Oと非ブロッキングI/Oの両方で動作します。基礎となるI/Oが非ブロッキングの場合、基礎となるI/OがwolfSSL_connect()がハンドシェイクを続行するために必要なものを満たせない場合、wolfSSL_connect()は返されます。この場合、wolfSSL_get_error()を呼び出すとSSL_ERROR_WANT_READまたはSSL_ERROR_WANT_WRITEのいずれかが返されます。呼び出し側プロセスは、基礎となるI/Oの準備ができたときにwolfSSL_connect()の呼び出しを繰り返す必要があり、wolfSSLは中断したところから再開します。非ブロッキングソケットを使用する場合、何もする必要はありませんが、select()を使用して必要な条件を確認できます。基礎となるI/OがブロッキングI/Oの場合、wolfSSL_connect()はハンドシェイクが完了するかエラーが発生するまで返されません。wolfSSLは証明書検証にOpenSSLとは異なるアプローチを取ります。クライアントのデフォルトポリシーはサーバを検証することです。つまり、サーバを検証するためのCAをロードしない場合、接続エラー「検証できません(-155)」が発生します。サーバの検証が失敗してもSSL_connectが成功するというOpenSSLの動作を模倣し、セキュリティを低下させたい場合は、SSL_new()を呼び出す前にSSL_CTX_set_verify(ctx, SSL_VERIFY_NONE, 0)を呼び出すことでこれを行うことができます。ただし、これは推奨されません。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
See:
Return:
- SSL_SUCCESS 成功時。
- SSL_FATAL_ERROR エラーが発生した場合に返されます。より詳細なエラーコードを取得するには、wolfSSL_get_error()を呼び出してください。
Example
int ret = 0;
int err = 0;
WOLFSSL* ssl;
char buffer[80];
...
ret = wolfSSL_connect_TLSv13(ssl);
if (ret != SSL_SUCCESS) {
err = wolfSSL_get_error(ssl, ret);
printf("error = %d, %s\n", err, wolfSSL_ERR_error_string(err, buffer));
}
function wolfSSL_accept_TLSv13
wolfSSL_accept_TLSv13(
WOLFSSL * ssl
)
この関数はサーバ側で呼び出され、SSL/TLSクライアントがSSL/TLSハンドシェイクを開始するのを待ちます。この関数が呼び出されるとき、基礎となる通信チャネルはすでに設定されています。wolfSSL_accept()はブロッキングI/Oと非ブロッキングI/Oの両方で動作します。基礎となるI/Oが非ブロッキングの場合、基礎となるI/OがwolfSSL_accept()がハンドシェイクを続行するために必要なものを満たせない場合、wolfSSL_accept()は返されます。この場合、wolfSSL_get_error()を呼び出すとSSL_ERROR_WANT_READまたはSSL_ERROR_WANT_WRITEのいずれかが返されます。呼び出し側プロセスは、データが読み取り可能になったときにwolfSSL_acceptの呼び出しを繰り返す必要があり、wolfSSLは中断したところから再開します。非ブロッキングソケットを使用する場合、何もする必要はありませんが、select()を使用して必要な条件を確認できます。基礎となるI/OがブロッキングI/Oの場合、wolfSSL_accept()はハンドシェイクが完了するかエラーが発生するまで返されません。TLS v1.3接続を期待する場合にこの関数を呼び出してください。ただし、古いバージョンのClientHelloメッセージもサポートされています。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
See:
Return:
- SSL_SUCCESS 成功時。
- SSL_FATAL_ERROR エラーが発生した場合に返されます。より詳細なエラーコードを取得するには、wolfSSL_get_error()を呼び出してください。
Example
int ret = 0;
int err = 0;
WOLFSSL* ssl;
char buffer[80];
...
ret = wolfSSL_accept_TLSv13(ssl);
if (ret != SSL_SUCCESS) {
err = wolfSSL_get_error(ssl, ret);
printf("error = %d, %s\n", err, wolfSSL_ERR_error_string(err, buffer));
}
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_write_early_data
int wolfSSL_write_early_data(
WOLFSSL * ssl,
const void * data,
int sz,
int * outSz
)
この関数は再開時にサーバーにアーリーデータを書き込みます。サーバーに接続してハンドシェイクでデータを送信するには、wolfSSL_connect()またはwolfSSL_connect_TLSv13()の代わりにこの関数を呼び出します。この関数はクライアントでのみ使用されます。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
- data サーバーに書き込むアーリーデータを保持するバッファ。
- sz 書き込むアーリーデータの量(バイト単位)。
- outSz 書き込まれたアーリーデータの量(バイト単位)。
See:
Return:
- BAD_FUNC_ARG ポインタパラメータがNULL、szが0未満、またはTLSv1.3を使用していない場合。
- SIDE_ERROR サーバーで呼び出された場合。
- WOLFSSL_FATAL_ERROR 接続が確立されなかった場合。
- WOLFSSL_SUCCESS 成功した場合。
Example
int ret = 0;
int err = 0;
WOLFSSL* ssl;
byte earlyData[] = { early data };
int outSz;
char buffer[80];
...
ret = wolfSSL_write_early_data(ssl, earlyData, sizeof(earlyData), &outSz);
if (ret != WOLFSSL_SUCCESS) {
err = wolfSSL_get_error(ssl, ret);
printf("error = %d, %s\n", err, wolfSSL_ERR_error_string(err, buffer));
goto err_label;
}
if (outSz < sizeof(earlyData)) {
// すべてのアーリーデータが送信されませんでした
}
ret = wolfSSL_connect_TLSv13(ssl);
if (ret != SSL_SUCCESS) {
err = wolfSSL_get_error(ssl, ret);
printf("error = %d, %s\n", err, wolfSSL_ERR_error_string(err, buffer));
}
function wolfSSL_read_early_data
int wolfSSL_read_early_data(
WOLFSSL * ssl,
void * data,
int sz,
int * outSz
)
この関数は再開時にクライアントからのアーリーデータを読み取ります。クライアントを受け入れ、ハンドシェイクでアーリーデータを読み取るには、wolfSSL_accept()またはwolfSSL_accept_TLSv13()の代わりにこの関数を呼び出します。wolfSSL_is_init_finished()がtrueを返すまで関数を呼び出す必要があります。アーリーデータは複数のメッセージでクライアントから送信される場合があります。アーリーデータがない場合、ハンドシェイクは通常通り処理されます。この関数はサーバーでのみ使用されます。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
- data クライアントから読み取ったアーリーデータを保持するバッファ。
- sz バッファのサイズ(バイト単位)。
- outSz 読み取ったアーリーデータのバイト数。
See:
Return:
- BAD_FUNC_ARG ポインタパラメータがNULL、szが0未満、またはTLSv1.3を使用していない場合。
- SIDE_ERROR クライアントで呼び出された場合。
- WOLFSSL_FATAL_ERROR 接続の受け入れが失敗した場合。
- 読み取ったアーリーデータのバイト数(ゼロの場合もあります)。
Example
int ret = 0;
int err = 0;
WOLFSSL* ssl;
byte earlyData[128];
int outSz;
char buffer[80];
...
do {
ret = wolfSSL_read_early_data(ssl, earlyData, sizeof(earlyData), &outSz);
if (ret < 0) {
err = wolfSSL_get_error(ssl, ret);
printf("error = %d, %s\n", err, wolfSSL_ERR_error_string(err, buffer));
}
if (outSz > 0) {
// アーリーデータが利用可能
}
} while (!wolfSSL_is_init_finished(ssl));
function wolfSSL_inject
int wolfSSL_inject(
WOLFSSL * ssl,
const void * data,
int sz
)
この関数はWOLFSSLオブジェクトにデータを注入するために呼び出されます。これは、データを単一の場所から読み取り、複数の接続に分割する必要がある場合に便利です。呼び出し元はwolfSSL_read()を呼び出してWOLFSSLオブジェクトから平文データを抽出する必要があります。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
- data sslオブジェクトに注入するデータ。
- sz 注入するデータのバイト数。
See: wolfSSL_read
Return:
- BAD_FUNC_ARG いずれかのポインタパラメータがNULLまたはsz <= 0の場合。
- APP_DATA_READY 読み取るべきアプリケーションデータが残っている場合。
- MEMORY_E 割り当てが失敗した場合。
- WOLFSSL_SUCCESS 成功時。
Example
byte buf[2000]
sz = recv(fd, buf, sizeof(buf), 0);
if (sz <= 0)
// エラー
if (wolfSSL_inject(ssl, buf, sz) != WOLFSSL_SUCCESS)
// エラー
sz = wolfSSL_read(ssl, buf, sizeof(buf);
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_ephemeral_key
int wolfSSL_CTX_set_ephemeral_key(
WOLFSSL_CTX * ctx,
int keyAlgo,
const char * key,
unsigned int keySz,
int format
)
この関数は、テスト専用の固定/静的エフェメラル鍵を設定します。
Parameters:
- ctx WOLFSSL_CTXコンテキストポインタ。
- keyAlgo WC_PK_TYPE_DHやWC_PK_TYPE_ECDHなどのenum wc_PkType。
- key 鍵ファイルパス(keySz == 0の場合)または実際の鍵バッファ(PEMまたはASN.1)。
- keySz 鍵サイズ("key"引数がファイルパスの場合は0である必要があります)。
- format WOLFSSL_FILETYPE_ASN1またはWOLFSSL_FILETYPE_PEM。
See: wolfSSL_CTX_get_ephemeral_key
Return: 0 鍵が正常にロードされました。
function wolfSSL_set_ephemeral_key
int wolfSSL_set_ephemeral_key(
WOLFSSL * ssl,
int keyAlgo,
const char * key,
unsigned int keySz,
int format
)
この関数は、テスト専用の固定/静的エフェメラル鍵を設定します。
Parameters:
- ssl WOLFSSLオブジェクトポインタ。
- keyAlgo WC_PK_TYPE_DHやWC_PK_TYPE_ECDHなどのenum wc_PkType。
- key 鍵ファイルパス(keySz == 0の場合)または実際の鍵バッファ(PEMまたはASN.1)。
- keySz 鍵サイズ("key"引数がファイルパスの場合は0である必要があります)。
- format WOLFSSL_FILETYPE_ASN1またはWOLFSSL_FILETYPE_PEM。
See: wolfSSL_get_ephemeral_key
Return: 0 鍵が正常にロードされました。
function wolfSSL_CTX_get_ephemeral_key
int wolfSSL_CTX_get_ephemeral_key(
WOLFSSL_CTX * ctx,
int keyAlgo,
const unsigned char ** key,
unsigned int * keySz
)
この関数は、ASN.1/DERとしてロードされた鍵へのポインタを返します。
Parameters:
- ctx WOLFSSL_CTXコンテキストポインタ。
- keyAlgo WC_PK_TYPE_DHやWC_PK_TYPE_ECDHなどのenum wc_PkType。
- key 鍵バッファポインタ。
- keySz 鍵サイズポインタ。
See: wolfSSL_CTX_set_ephemeral_key
Return: 0 鍵が正常に返されました。
function wolfSSL_get_ephemeral_key
int wolfSSL_get_ephemeral_key(
WOLFSSL * ssl,
int keyAlgo,
const unsigned char ** key,
unsigned int * keySz
)
この関数は、ASN.1/DERとしてロードされた鍵へのポインタを返します。
Parameters:
- ssl WOLFSSLオブジェクトポインタ。
- keyAlgo WC_PK_TYPE_DHやWC_PK_TYPE_ECDHなどのenum wc_PkType。
- key 鍵バッファポインタ。
- keySz 鍵サイズポインタ。
See: wolfSSL_set_ephemeral_key
Return: 0 鍵が正常に返されました。
function wolfSSL_RSA_sign_generic_padding
int wolfSSL_RSA_sign_generic_padding(
int type,
const unsigned char * m,
unsigned int mLen,
unsigned char * sigRet,
unsigned int * sigLen,
WOLFSSL_RSA * rsa,
int flag,
int padding
)
選択したメッセージダイジェスト、パディング、およびRSA鍵でメッセージに署名します。
Parameters:
- type ハッシュNID。
- m 署名するメッセージ。おそらくこれは署名するメッセージのダイジェストになります。
- mLen 署名するメッセージの長さ。
- sigRet 出力バッファ。
- sigLen 入力時: sigRetバッファの長さ、出力時: sigRetに書き込まれたデータの長さ。
- rsa 入力の署名に使用されるRSA鍵。
- flag 1: 署名を出力、0: パディングされていない署名と比較すべき値を出力。注意: RSA_PKCS1_PSS_PADDINGの場合、Verify関数の出力をチェックするためにwc_RsaPSS_CheckPadding_ex関数を使用する必要があります。
- padding 使用するパディング。現在、署名にはRSA_PKCS1_PSS_PADDINGとRSA_PKCS1_PADDINGのみがサポートされています。
Return: WOLFSSL_SUCCESS 成功時、エラー時はc。
function wolfSSL_dtls13_has_pending_msg
int wolfSSL_dtls13_has_pending_msg(
WOLFSSL * ssl
)
DTLSv1.3スタックが送信したが、まだ他のピアから確認応答されていないメッセージがあるかどうかをチェックします。
Parameters:
- ssl WOLFSSLオブジェクトポインタ。
Return: 1 保留中のメッセージがある場合、それ以外は0。
function wolfSSL_SESSION_get_max_early_data
unsigned int wolfSSL_SESSION_get_max_early_data(
const WOLFSSL_SESSION * s
)
セッションからEarly Dataの最大サイズを取得します。
Parameters:
- s WOLFSSL_SESSIONインスタンス。
See:
Return: セッションが派生したWOLFSSL*で設定されたmax_early_dataの値。
function wolfSSL_CRYPTO_get_ex_new_index
int wolfSSL_CRYPTO_get_ex_new_index(
int ,
void * ,
void * ,
void * ,
void *
)
外部データ用の新しいインデックスを取得します。このエントリは以下のAPIにも適用されます:
Parameters:
- すべての入力パラメータは無視されます。コールバック関数はwolfSSLではサポートされていません。
Return: このオブジェクトクラスの外部データAPIで使用される新しいインデックス値。
- wolfSSL_CTX_get_ex_new_index
- wolfSSL_get_ex_new_index
- wolfSSL_SESSION_get_ex_new_index
- wolfSSL_X509_get_ex_new_index
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_get_negotiated_client_cert_type
int wolfSSL_get_negotiated_client_cert_type(
WOLFSSL * ssl,
int * tp
)
この関数は、ClientHelloとServerHelloで行われたクライアント証明書タイプネゴシエーションの結果を返します。ネゴシエーションが発生しなかった場合、戻り値としてWOLFSSL_SUCCESSが返され、証明書タイプとしてWOLFSSL_CERT_TYPE_UNKNOWNが返されます。
Parameters:
- ssl WOLFSSLオブジェクトポインタ。
- tp 証明書タイプが返されるバッファ。次の3つの証明書タイプのいずれかが返されます:WOLFSSL_CERT_TYPE_RPK、WOLFSSL_CERT_TYPE_X509、またはWOLFSSL_CERT_TYPE_UNKNOWN。
See:
- wolfSSL_set_client_cert_type
- wolfSSL_CTX_set_client_cert_type
- wolfSSL_set_server_cert_type
- wolfSSL_CTX_set_server_cert_type
- wolfSSL_get_negotiated_server_cert_type
Return:
- WOLFSSL_SUCCESS ネゴシエートされた証明書タイプを取得できた場合。
- BAD_FUNC_ARG ctxまたはtpにNULLが渡された場合。
Example
int ret;
WOLFSSL* ssl;
int tp;
...
ret = wolfSSL_get_negotiated_client_cert_type(ssl, &tp);
function wolfSSL_get_negotiated_server_cert_type
int wolfSSL_get_negotiated_server_cert_type(
WOLFSSL * ssl,
int * tp
)
この関数は、ClientHelloとServerHelloで行われたサーバ証明書タイプネゴシエーションの結果を返します。ネゴシエーションが発生しなかった場合、戻り値としてWOLFSSL_SUCCESSが返され、証明書タイプとしてWOLFSSL_CERT_TYPE_UNKNOWNが返されます。
Parameters:
- ssl WOLFSSLオブジェクトポインタ。
- tp 証明書タイプが返されるバッファ。次の3つの証明書タイプのいずれかが返されます:WOLFSSL_CERT_TYPE_RPK、WOLFSSL_CERT_TYPE_X509、またはWOLFSSL_CERT_TYPE_UNKNOWN。 Example
int ret;
WOLFSSL* ssl;
int tp;
...
ret = wolfSSL_get_negotiated_server_cert_type(ssl, &tp);
See:
- wolfSSL_set_client_cert_type
- wolfSSL_CTX_set_client_cert_type
- wolfSSL_set_server_cert_type
- wolfSSL_CTX_set_server_cert_type
- wolfSSL_get_negotiated_client_cert_type
Return:
- WOLFSSL_SUCCESS ネゴシエートされた証明書タイプを取得できた場合。
- BAD_FUNC_ARG ctxまたはtpにNULLが渡された場合。
function wolfSSL_dtls_cid_use
int wolfSSL_dtls_cid_use(
WOLFSSL * ssl
)
SSLオブジェクトに対してConnectionID拡張の使用を有効にします。RFC 9146およびRFC 9147を参照してください。
Parameters:
- ssl WOLFSSLオブジェクトポインタ。
See:
- wolfSSL_dtls_cid_is_enabled
- wolfSSL_dtls_cid_set
- wolfSSL_dtls_cid_get_rx_size
- wolfSSL_dtls_cid_get_rx
- wolfSSL_dtls_cid_get_tx_size
- wolfSSL_dtls_cid_get_tx
Return: WOLFSSL_SUCCESS 成功時、それ以外の場合はエラーコード。
function wolfSSL_dtls_cid_is_enabled
int wolfSSL_dtls_cid_is_enabled(
WOLFSSL * ssl
)
ハンドシェイク完了後に呼び出された場合、SSLオブジェクトに対してConnectionIDが正常にネゴシエートされたかどうかを確認します。RFC 9146およびRFC 9147を参照してください。
Parameters:
- ssl WOLFSSLオブジェクトポインタ。
See:
- wolfSSL_dtls_cid_use
- wolfSSL_dtls_cid_set
- wolfSSL_dtls_cid_get_rx_size
- wolfSSL_dtls_cid_get_rx
- wolfSSL_dtls_cid_get_tx_size
- wolfSSL_dtls_cid_get_tx
Return: 1 ConnectionIDが正しくネゴシエートされた場合、それ以外は0。
function wolfSSL_dtls_cid_set
int wolfSSL_dtls_cid_set(
WOLFSSL * ssl,
unsigned char * cid,
unsigned int size
)
この接続でレコードを送信する際に相手ピアが使用するConnectionIDを設定します。RFC 9146およびRFC 9147を参照してください。ConnectionIDは最大DTLS_CID_MAX_SIZE(調整可能なコンパイル時定義)である必要があり、255バイトを超えることはできません。
Parameters:
- ssl WOLFSSLオブジェクトポインタ。
- cid 使用するConnectionID。
- size 提供されたConnectionIDのサイズ。
See:
- wolfSSL_dtls_cid_use
- wolfSSL_dtls_cid_is_enabled
- wolfSSL_dtls_cid_get_rx_size
- wolfSSL_dtls_cid_get_rx
- wolfSSL_dtls_cid_get_tx_size
- wolfSSL_dtls_cid_get_tx
Return: WOLFSSL_SUCCESS ConnectionIDが正しく設定された場合、それ以外の場合はエラーコード。
function wolfSSL_dtls_cid_get_rx_size
int wolfSSL_dtls_cid_get_rx_size(
WOLFSSL * ssl,
unsigned int * size
)
この接続でレコードを送信する際に相手ピアが使用するConnectionIDのサイズを取得します。RFC 9146およびRFC 9147を参照してください。サイズはパラメータsizeに格納されます。
Parameters:
- ssl WOLFSSLオブジェクトポインタ。
- size サイズが格納される符号なしint型へのポインタ。
See:
- wolfSSL_dtls_cid_use
- wolfSSL_dtls_cid_is_enabled
- wolfSSL_dtls_cid_set
- wolfSSL_dtls_cid_get_rx
- wolfSSL_dtls_cid_get_tx_size
- wolfSSL_dtls_cid_get_tx
Return: WOLFSSL_SUCCESS ConnectionIDが正しくネゴシエートされた場合、それ以外の場合はエラーコード。
function wolfSSL_dtls_cid_get_rx
int wolfSSL_dtls_cid_get_rx(
WOLFSSL * ssl,
unsigned char * buffer,
unsigned int bufferSz
)
この接続でレコードを送信する際に相手ピアが使用するConnectionIDを、パラメータbufferが指すバッファにコピーします。RFC 9146およびRFC 9147を参照してください。bufferSzでバッファ内の利用可能なスペースを提供する必要があります。
Parameters:
- ssl WOLFSSLオブジェクトポインタ。
- buffer ConnectionIDがコピーされるバッファ。
- bufferSz buffer内の利用可能なスペース。
See:
- wolfSSL_dtls_cid_get0_rx
- wolfSSL_dtls_cid_use
- wolfSSL_dtls_cid_is_enabled
- wolfSSL_dtls_cid_set
- wolfSSL_dtls_cid_get_rx_size
- wolfSSL_dtls_cid_get_tx_size
- wolfSSL_dtls_cid_get_tx
Return: WOLFSSL_SUCCESS ConnectionIDが正しくコピーされた場合、それ以外の場合はエラーコード。
function wolfSSL_dtls_cid_get0_rx
int wolfSSL_dtls_cid_get0_rx(
WOLFSSL * ssl,
unsigned char ** cid
)
相手ピアが使用するConnectionIDを取得します。RFC 9146およびRFC 9147を参照してください。
Parameters:
- ssl WOLFSSLオブジェクトポインタ。
- cid CIDを保持する内部メモリに設定されるポインタ。
See:
- wolfSSL_dtls_cid_get_rx
- wolfSSL_dtls_cid_use
- wolfSSL_dtls_cid_is_enabled
- wolfSSL_dtls_cid_set
- wolfSSL_dtls_cid_get_rx_size
- wolfSSL_dtls_cid_get_tx_size
- wolfSSL_dtls_cid_get_tx
Return: WOLFSSL_SUCCESS ConnectionIDがcidに正しく設定された場合。
function wolfSSL_dtls_cid_get_tx_size
int wolfSSL_dtls_cid_get_tx_size(
WOLFSSL * ssl,
unsigned int * size
)
この接続でレコードを送信する際に使用するConnectionIDのサイズを取得します。RFC 9146およびRFC 9147を参照してください。サイズはパラメータsizeに格納されます。
Parameters:
- ssl WOLFSSLオブジェクトポインタ。
- size サイズが格納される符号なしint型へのポインタ。
See:
- wolfSSL_dtls_cid_use
- wolfSSL_dtls_cid_is_enabled
- wolfSSL_dtls_cid_set
- wolfSSL_dtls_cid_get_rx_size
- wolfSSL_dtls_cid_get_rx
- wolfSSL_dtls_cid_get_tx
Return: WOLFSSL_SUCCESS ConnectionIDサイズが正しく格納された場合、それ以外の場合はエラーコード。
function wolfSSL_dtls_cid_get_tx
int wolfSSL_dtls_cid_get_tx(
WOLFSSL * ssl,
unsigned char * buffer,
unsigned int bufferSz
)
この接続でレコードを送信する際に使用するConnectionIDを、パラメータbufferが指すバッファにコピーします。RFC 9146およびRFC 9147を参照してください。bufferSzで利用可能なサイズを提供する必要があります。
Parameters:
- ssl WOLFSSLオブジェクトポインタ。
- buffer ConnectionIDがコピーされるバッファ。
- bufferSz buffer内の利用可能なスペース。
See:
- wolfSSL_dtls_cid_get0_tx
- wolfSSL_dtls_cid_use
- wolfSSL_dtls_cid_is_enabled
- wolfSSL_dtls_cid_set
- wolfSSL_dtls_cid_get_rx_size
- wolfSSL_dtls_cid_get_rx
- wolfSSL_dtls_cid_get_tx_size
Return: WOLFSSL_SUCCESS ConnectionIDが正しくコピーされた場合、それ以外の場合はエラーコード。
function wolfSSL_dtls_cid_get0_tx
int wolfSSL_dtls_cid_get0_tx(
WOLFSSL * ssl,
unsigned char ** cid
)
この接続でレコードを送信する際に使用するConnectionIDを取得します。RFC 9146およびRFC 9147を参照してください。
Parameters:
- ssl WOLFSSLオブジェクトポインタ。
- cid CIDを保持する内部メモリに設定されるポインタ。
See:
- wolfSSL_dtls_cid_get_tx
- wolfSSL_dtls_cid_use
- wolfSSL_dtls_cid_is_enabled
- wolfSSL_dtls_cid_set
- wolfSSL_dtls_cid_get_rx_size
- wolfSSL_dtls_cid_get_rx
- wolfSSL_dtls_cid_get_tx_size
Return: WOLFSSL_SUCCESS ConnectionIDが正しく取得された場合、それ以外の場合はエラーコード。
function wolfSSL_dtls_cid_parse
const unsigned char * wolfSSL_dtls_cid_parse(
const unsigned char * msg,
unsigned int msgSz,
unsigned int cidSz
)
レコードデータグラム/メッセージからConnectionIDを抽出します。RFC 9146およびRFC 9147を参照してください。
Parameters:
- msg ネットワークから読み取られたデータグラムを保持するバッファ。
- msgSz msgのサイズ(バイト単位)。
- cid msgバッファ内のCIDの開始位置へのポインタ。
- cidSz 期待されるCIDのサイズ。レコード層にはCIDサイズフィールドがないため、CIDのサイズを事前に知っている必要があります。すべての接続に定数CIDを使用することを推奨します。
See:
- wolfSSL_dtls_cid_get_tx
- wolfSSL_dtls_cid_use
- wolfSSL_dtls_cid_is_enabled
- wolfSSL_dtls_cid_set
- wolfSSL_dtls_cid_get_rx_size
- wolfSSL_dtls_cid_get_rx
- wolfSSL_dtls_cid_get_tx_size
function wolfSSL_CTX_set_client_CA_list
void wolfSSL_CTX_set_client_CA_list(
WOLFSSL_CTX * ctx,
WOLF_STACK_OF(WOLFSSL_X509_NAME) * names
)
サーバ側では、この関数は証明書要求でクライアントに送信されるCA名のリストを設定します。これは、サーバがサポートするCAのヒントとして機能します。
Parameters:
- ctx wolfSSLコンテキストへのポインタ。
- names 設定される名前のリスト。
See:
- wolfSSL_set_client_CA_list
- wolfSSL_CTX_get_client_CA_list
- wolfSSL_get_client_CA_list
- wolfSSL_CTX_set0_CA_list
- wolfSSL_set0_CA_list
- wolfSSL_CTX_get0_CA_list
- wolfSSL_get0_CA_list
- wolfSSL_get0_peer_CA_list
クライアント側では、この関数は効果がありません。
function wolfSSL_CTX_get_client_CA_list
WOLFSSL_STACK * wolfSSL_CTX_get_client_CA_list(
const WOLFSSL_CTX * ctx
)
これは、wolfSSL_CTX_set_client_CA_listを介して以前に設定されたリストを取得します。リストが設定されていない場合はNULLを返します。
Parameters:
- ctx wolfSSLコンテキストへのポインタ。
See:
- wolfSSL_set_client_CA_list
- wolfSSL_CTX_set_client_CA_list
- wolfSSL_get_client_CA_list
- wolfSSL_CTX_set0_CA_list
- wolfSSL_set0_CA_list
- wolfSSL_CTX_get0_CA_list
- wolfSSL_get0_CA_list
- wolfSSL_get0_peer_CA_list
Return: CA名を含むWOLFSSL_X509_NAMEのスタック。
function wolfSSL_set_client_CA_list
void wolfSSL_set_client_CA_list(
WOLFSSL * ssl,
WOLF_STACK_OF(WOLFSSL_X509_NAME) * names
)
wolfSSL_CTX_set_client_CA_listと同じですが、セッション固有です。CAリストがコンテキストとセッションの両方に設定されている場合、セッション上のリストが使用されます。
Parameters:
- ssl WOLFSSLオブジェクトへのポインタ。
- names 設定する名前のリスト。
See:
- wolfSSL_CTX_set_client_CA_list
- wolfSSL_CTX_get_client_CA_list
- wolfSSL_get_client_CA_list
- wolfSSL_CTX_set0_CA_list
- wolfSSL_set0_CA_list
- wolfSSL_CTX_get0_CA_list
- wolfSSL_get0_CA_list
- wolfSSL_get0_peer_CA_list
function wolfSSL_get_client_CA_list
WOLFSSL_STACK * wolfSSL_get_client_CA_list(
const WOLFSSL * ssl
)
サーバ側では、wolfSSL_set_client_CA_listを介して以前に設定されたリストを取得します。何も設定されていない場合は、wolfSSL_CTX_set_client_CA_listを介して以前に設定されたリストを返します。リストが全く設定されていない場合は、NULLを返します。
Parameters:
- ssl WOLFSSLオブジェクトへのポインタ。
See:
- wolfSSL_CTX_set_cert_cb
- wolfSSL_CTX_set_client_CA_list
- wolfSSL_CTX_get_client_CA_list
- wolfSSL_get_client_CA_list
- wolfSSL_CTX_set0_CA_list
- wolfSSL_set0_CA_list
- wolfSSL_CTX_get0_CA_list
- wolfSSL_get0_CA_list
- wolfSSL_get0_peer_CA_list
Return: CA名を含むWOLFSSL_X509_NAMEのスタック。
クライアント側では、サーバから受信したリストを取得します。何も受信していない場合はNULLを返します。wolfSSL_CTX_set_cert_cbを使用して、サーバから証明書要求を受信したときに証明書を動的にロードするコールバックを登録できます。
function wolfSSL_CTX_set0_CA_list
void wolfSSL_CTX_set0_CA_list(
WOLFSSL_CTX * ctx,
WOLF_STACK_OF(WOLFSSL_X509_NAME) * names
)
この関数は、ピアの認証でサポートされているCAのヒントとしてピアに送信されるCA名のリストを設定します。
Parameters:
- ctx wolfSSLコンテキストへのポインタ。
- names 設定する名前のリスト。
See:
- wolfSSL_CTX_set_client_CA_list
- wolfSSL_set_client_CA_list
- wolfSSL_CTX_get_client_CA_list
- wolfSSL_get_client_CA_list
- wolfSSL_set0_CA_list
- wolfSSL_CTX_get0_CA_list
- wolfSSL_get0_CA_list
- wolfSSL_get0_peer_CA_list
TLS >= 1.3では、これはクライアントとサーバ間の両方向でサポートされています。サーバ側では、CA名はCertificateRequestの一部として送信されるため、この関数は*_set_client_CA_listと同等です。クライアント側では、これらはClientHelloの一部として送信されます。
TLS < 1.3では、クライアントからサーバへのCA名の送信はサポートされていないため、この関数はwolfSSL_CTX_set_client_CA_listと同等です。
_set_client_CA_listと_set0_CA_listを介して設定されたリストは内部的に別々であることに注意してください。つまり、_get_client_CA_listを呼び出しても_set0_CA_listを介して設定されたリストは取得されず、その逆も同様です。両方が設定されている場合、サーバはクライアントにCA名を送信する際に_set0_CA_listを無視します。
function wolfSSL_CTX_get0_CA_list
WOLFSSL_STACK * wolfSSL_CTX_get0_CA_list(
const WOLFSSL_CTX * ctx
)
これは、wolfSSL_CTX_set0_CA_listを介して以前に設定されたリストを取得します。リストが設定されていない場合はNULLを返します。
Parameters:
- ctx wolfSSLコンテキストへのポインタ。
See:
- wolfSSL_CTX_set_client_CA_list
- wolfSSL_set_client_CA_list
- wolfSSL_CTX_get_client_CA_list
- wolfSSL_get_client_CA_list
- wolfSSL_CTX_set0_CA_list
- wolfSSL_set0_CA_list
- wolfSSL_get0_CA_list
- wolfSSL_get0_peer_CA_list
Return: CA名を含むWOLFSSL_X509_NAMEのスタック。
function wolfSSL_set0_CA_list
void wolfSSL_set0_CA_list(
WOLFSSL * ssl,
WOLF_STACK_OF(WOLFSSL_X509_NAME) * names
)
wolfSSL_CTX_set0_CA_listと同じですが、セッション固有です。CAリストがコンテキストとセッションの両方に設定されている場合、セッション上のリストが使用されます。
Parameters:
- ssl WOLFSSLオブジェクトへのポインタ。
- names 設定する名前のリスト。
See:
- wolfSSL_CTX_set_client_CA_list
- wolfSSL_set_client_CA_list
- wolfSSL_CTX_get_client_CA_list
- wolfSSL_get_client_CA_list
- wolfSSL_CTX_set0_CA_list
- wolfSSL_CTX_get0_CA_list
- wolfSSL_get0_CA_list
- wolfSSL_get0_peer_CA_list
function wolfSSL_get0_CA_list
WOLFSSL_STACK * wolfSSL_get0_CA_list(
const WOLFSSL * ssl
)
これは、wolfSSL_set0_CA_listを介して以前に設定されたリストを取得します。何も設定されていない場合は、wolfSSL_CTX_set0_CA_listを介して以前に設定されたリストを返します。リストが全く設定されていない場合は、NULLを返します。
Parameters:
- ssl WOLFSSLオブジェクトへのポインタ。
See:
- wolfSSL_CTX_set_client_CA_list
- wolfSSL_set_client_CA_list
- wolfSSL_CTX_get_client_CA_list
- wolfSSL_get_client_CA_list
- wolfSSL_CTX_set0_CA_list
- wolfSSL_set0_CA_list
- wolfSSL_CTX_get0_CA_list
- wolfSSL_get0_peer_CA_list
Return: CA名を含むWOLFSSL_X509_NAMEのスタック。
function wolfSSL_get0_peer_CA_list
WOLFSSL_STACK * wolfSSL_get0_peer_CA_list(
const WOLFSSL * ssl
)
これは、ピアから受信したCAリストを返します。
Parameters:
- ssl WOLFSSLオブジェクトへのポインタ。
See:
- wolfSSL_CTX_set_cert_cb
- wolfSSL_CTX_set_client_CA_list
- wolfSSL_set_client_CA_list
- wolfSSL_CTX_get_client_CA_list
- wolfSSL_get_client_CA_list
- wolfSSL_CTX_set0_CA_list
- wolfSSL_set0_CA_list
- wolfSSL_CTX_get0_CA_list
- wolfSSL_get0_CA_list
Return: CA名を含むWOLFSSL_X509_NAMEのスタック。
クライアント側では、これはサーバがCertificateRequestで送信したリストであり、この関数はwolfSSL_get_client_CA_listと同等です。
サーバ側では、これはTLS >= 1.3でクライアントがClientHelloメッセージで送信したリストです。TLS < 1.3では、この関数はサーバ側で常にNULLを返します。
wolfSSL_CTX_set_cert_cbを使用して、ピアからCAリストを受信したときに証明書を動的にロードするコールバックを登録できます。
function wolfSSL_CTX_set_cert_cb
void wolfSSL_CTX_set_cert_cb(
WOLFSSL_CTX * ctx,
int(*)(WOLFSSL *, void *) cb,
void * arg
)
この関数は、証明書が使用される直前に呼び出されるコールバックを設定し、アプリケーションが証明書を検査、設定、またはクリアできるようにします。例えば、ピアから送信されたCAリストに反応することができます。
Parameters:
- ctx wolfSSLコンテキストへのポインタ。
- cb コールバックへの関数ポインタ。
- arg コールバックに渡されるポインタ。
See:
function wolfSSL_get_client_suites_sigalgs
int wolfSSL_get_client_suites_sigalgs(
const WOLFSSL * ssl,
const byte ** suites,
word16 * suiteSz,
const byte ** hashSigAlgo,
word16 * hashSigAlgoSz
)
この関数は、クライアントが提供する暗号スイートと署名アルゴリズムの生のリストを返します。リストは、wolfSSL_CTX_set_cert_cb()で設定されたコールバック内でのみ保存され、返されます。これは、利用可能な暗号スイートと署名アルゴリズムに基づいて証明書と鍵を動的にロードできるようにするのに便利です。
Parameters:
- ssl リストを抽出するWOLFSSLオブジェクト。
- optional suites クライアント暗号スイートの生の未フィルタリストリスト。
- optional suiteSz suitesのサイズ(バイト単位)。
- optional hashSigAlgo クライアント署名アルゴリズムの生の未フィルタリストリスト。
- optional hashSigAlgoSz hashSigAlgoのサイズ(バイト単位)。
See:
Return:
- WOLFSSL_SUCCESS スイートが利用可能な場合。
- WOLFSSL_FAILURE スイートが利用できない場合。
Example
int certCB(WOLFSSL* ssl, void* arg)
{
const byte* suites = NULL;
word16 suiteSz = 0;
const byte* hashSigAlgo = NULL;
word16 hashSigAlgoSz = 0;
wolfSSL_get_client_suites_sigalgs(ssl, &suites, &suiteSz, &hashSigAlgo,
&hashSigAlgoSz);
// 暗号スイートとsigalgsに基づいてロードする証明書を選択
}
WOLFSSL* ctx;
ctx = wolfSSL_CTX_new(wolfTLSv1_3_method_ex(NULL));
wolfSSL_CTX_set_cert_cb(ctx, certCB, NULL);
function wolfSSL_get_ciphersuite_info
WOLFSSL_CIPHERSUITE_INFO wolfSSL_get_ciphersuite_info(
byte first,
byte second
)
これは、生の暗号スイートバイトから直接暗号スイートに関する情報を返します。
Parameters:
- first 暗号スイートの最初のバイト。
- second 暗号スイートの2番目のバイト。
See:
Return: WOLFSSL_CIPHERSUITE_INFO 暗号スイートで使用される認証のタイプに関する情報を含む構造体。
Example
WOLFSSL_CIPHERSUITE_INFO info =
wolfSSL_get_ciphersuite_info(suites[0], suites[1]);
if (info.rsaAuth)
haveRSA = 1;
else if (info.eccAuth)
haveECC = 1;
function wolfSSL_get_sigalg_info
int wolfSSL_get_sigalg_info(
byte first,
byte second,
int * hashAlgo,
int * sigAlgo
)
これは、生の暗号スイートバイトから直接ハッシュおよび署名アルゴリズムに関する情報を返します。
Parameters:
- first ハッシュおよび署名アルゴリズムの最初のバイト。
- second ハッシュおよび署名アルゴリズムの2番目のバイト。
- hashAlgo MACアルゴリズムのenum wc_HashType。
- sigAlgo 認証アルゴリズムのenum Key_Sum。
See:
Return:
- 0 情報が正しく設定された場合。
- BAD_FUNC_ARG 入力パラメータのいずれかがNULLの場合、またはバイトが認識されるsigalgスイートでない場合。
Example
enum wc_HashType hashAlgo;
enum Key_Sum sigAlgo;
wolfSSL_get_sigalg_info(hashSigAlgo[idx+0], hashSigAlgo[idx+1],
&hashAlgo, &sigAlgo);
if (sigAlgo == RSAk || sigAlgo == RSAPSSk)
haveRSA = 1;
else if (sigAlgo == ECDSAk)
haveECC = 1;
Source code
WOLFSSL_METHOD *wolfDTLSv1_2_client_method_ex(void* heap);
WOLFSSL_METHOD *wolfSSLv23_method(void);
WOLFSSL_METHOD *wolfSSLv3_server_method(void);
WOLFSSL_METHOD *wolfSSLv3_client_method(void);
WOLFSSL_METHOD *wolfTLSv1_server_method(void);
WOLFSSL_METHOD *wolfTLSv1_client_method(void);
WOLFSSL_METHOD *wolfTLSv1_1_server_method(void);
WOLFSSL_METHOD *wolfTLSv1_1_client_method(void);
WOLFSSL_METHOD *wolfTLSv1_2_server_method(void);
WOLFSSL_METHOD *wolfTLSv1_2_client_method(void);
WOLFSSL_METHOD *wolfDTLSv1_client_method(void);
WOLFSSL_METHOD *wolfDTLSv1_server_method(void);
WOLFSSL_METHOD *wolfDTLSv1_3_server_method(void);
WOLFSSL_METHOD* wolfDTLSv1_3_client_method(void);
WOLFSSL_METHOD *wolfDTLS_server_method(void);
WOLFSSL_METHOD *wolfDTLS_client_method(void);
WOLFSSL_METHOD *wolfDTLSv1_2_server_method(void);
int wolfSSL_use_old_poly(WOLFSSL* ssl, int value);
int wolfSSL_dtls_import(WOLFSSL* ssl, unsigned char* buf,
unsigned int sz);
int wolfSSL_tls_import(WOLFSSL* ssl, const unsigned char* buf,
unsigned int sz);
int wolfSSL_CTX_dtls_set_export(WOLFSSL_CTX* ctx,
wc_dtls_export func);
int wolfSSL_dtls_set_export(WOLFSSL* ssl, wc_dtls_export func);
int wolfSSL_dtls_export(WOLFSSL* ssl, unsigned char* buf,
unsigned int* sz);
int wolfSSL_tls_export(WOLFSSL* ssl, unsigned char* buf,
unsigned int* sz);
int wolfSSL_CTX_load_static_memory(WOLFSSL_CTX** ctx,
wolfSSL_method_func method,
unsigned char* buf, unsigned int sz,
int flag, int max);
int wolfSSL_CTX_is_static_memory(WOLFSSL_CTX* ctx,
WOLFSSL_MEM_STATS* mem_stats);
int wolfSSL_is_static_memory(WOLFSSL* ssl,
WOLFSSL_MEM_CONN_STATS* mem_stats);
int wolfSSL_CTX_use_certificate_file(WOLFSSL_CTX* ctx, const char* file,
int format);
int wolfSSL_CTX_use_PrivateKey_file(WOLFSSL_CTX* ctx, const char* file, int format);
int wolfSSL_CTX_load_verify_locations(WOLFSSL_CTX* ctx, const char* file,
const char* path);
int wolfSSL_CTX_load_verify_locations_ex(WOLFSSL_CTX* ctx, const char* file,
const char* path, unsigned int flags);
const char** wolfSSL_get_system_CA_dirs(word32* num);
int wolfSSL_CTX_load_system_CA_certs(WOLFSSL_CTX* ctx);
int wolfSSL_CTX_trust_peer_cert(WOLFSSL_CTX* ctx, const char* file, int type);
int wolfSSL_CTX_use_certificate_chain_file(WOLFSSL_CTX *ctx,
const char *file);
int wolfSSL_CTX_use_RSAPrivateKey_file(WOLFSSL_CTX* ctx, const char* file, int format);
long wolfSSL_get_verify_depth(WOLFSSL* ssl);
long wolfSSL_CTX_get_verify_depth(WOLFSSL_CTX* ctx);
int wolfSSL_use_certificate_file(WOLFSSL* ssl, const char* file, int format);
int wolfSSL_use_PrivateKey_file(WOLFSSL* ssl, const char* file, int format);
int wolfSSL_use_certificate_chain_file(WOLFSSL* ssl, const char *file);
int wolfSSL_use_RSAPrivateKey_file(WOLFSSL* ssl, const char* file, int format);
int wolfSSL_CTX_der_load_verify_locations(WOLFSSL_CTX* ctx,
const char* file, int format);
WOLFSSL_CTX* wolfSSL_CTX_new(WOLFSSL_METHOD*);
WOLFSSL* wolfSSL_new(WOLFSSL_CTX*);
int wolfSSL_set_fd(WOLFSSL* ssl, int fd);
int wolfSSL_set_dtls_fd_connected(WOLFSSL* ssl, int fd);
int wolfDTLS_SetChGoodCb(WOLFSSL* ssl, ClientHelloGoodCb cb, void* user_ctx);
char* wolfSSL_get_cipher_list(int priority);
int wolfSSL_get_ciphers(char* buf, int len);
const char* wolfSSL_get_cipher_name(WOLFSSL* ssl);
int wolfSSL_get_fd(const WOLFSSL*);
int wolfSSL_get_wfd(const WOLFSSL*);
void wolfSSL_set_using_nonblock(WOLFSSL* ssl, int nonblock);
int wolfSSL_get_using_nonblock(WOLFSSL*);
int wolfSSL_write(WOLFSSL* ssl, const void* data, int sz);
int wolfSSL_read(WOLFSSL* ssl, void* data, int sz);
int wolfSSL_peek(WOLFSSL* ssl, void* data, int sz);
int wolfSSL_accept(WOLFSSL*);
int wolfDTLS_accept_stateless(WOLFSSL* ssl);
void wolfSSL_CTX_free(WOLFSSL_CTX*);
void wolfSSL_free(WOLFSSL*);
int wolfSSL_shutdown(WOLFSSL*);
int wolfSSL_send(WOLFSSL* ssl, const void* data, int sz, int flags);
int wolfSSL_recv(WOLFSSL* ssl, void* data, int sz, int flags);
int wolfSSL_get_error(WOLFSSL* ssl, int ret);
int wolfSSL_get_alert_history(WOLFSSL* ssl, WOLFSSL_ALERT_HISTORY *h);
int wolfSSL_set_session(WOLFSSL* ssl, WOLFSSL_SESSION* session);
WOLFSSL_SESSION* wolfSSL_get_session(WOLFSSL* ssl);
void wolfSSL_flush_sessions(WOLFSSL_CTX* ctx, long tm);
int wolfSSL_SetServerID(WOLFSSL* ssl, const unsigned char* id,
int len, int newSession);
int wolfSSL_GetSessionIndex(WOLFSSL* ssl);
int wolfSSL_GetSessionAtIndex(int idx, WOLFSSL_SESSION* session);
WOLFSSL_X509_CHAIN* wolfSSL_SESSION_get_peer_chain(WOLFSSL_SESSION* session);
void wolfSSL_CTX_set_verify(WOLFSSL_CTX* ctx, int mode,
VerifyCallback verify_callback);
void wolfSSL_set_verify(WOLFSSL* ssl, int mode, VerifyCallback verify_callback);
void wolfSSL_SetCertCbCtx(WOLFSSL* ssl, void* ctx);
void wolfSSL_CTX_SetCertCbCtx(WOLFSSL_CTX* ctx, void* userCtx);
int wolfSSL_pending(WOLFSSL*);
void wolfSSL_load_error_strings(void);
int wolfSSL_library_init(void);
int wolfSSL_SetDevId(WOLFSSL* ssl, int devId);
int wolfSSL_CTX_SetDevId(WOLFSSL_CTX* ctx, int devId);
int wolfSSL_CTX_GetDevId(WOLFSSL_CTX* ctx, WOLFSSL* ssl);
long wolfSSL_CTX_set_session_cache_mode(WOLFSSL_CTX* ctx, long mode);
int wolfSSL_set_session_secret_cb(WOLFSSL* ssl, SessionSecretCb cb, void* ctx);
int wolfSSL_save_session_cache(const char* fname);
int wolfSSL_restore_session_cache(const char* fname);
int wolfSSL_memsave_session_cache(void* mem, int sz);
int wolfSSL_memrestore_session_cache(const void* mem, int sz);
int wolfSSL_get_session_cache_memsize(void);
int wolfSSL_CTX_save_cert_cache(WOLFSSL_CTX* ctx, const char* fname);
int wolfSSL_CTX_restore_cert_cache(WOLFSSL_CTX* ctx, const char* fname);
int wolfSSL_CTX_memsave_cert_cache(WOLFSSL_CTX* ctx, void* mem, int sz, int* used);
int wolfSSL_CTX_memrestore_cert_cache(WOLFSSL_CTX* ctx, const void* mem, int sz);
int wolfSSL_CTX_get_cert_cache_memsize(WOLFSSL_CTX* ctx);
int wolfSSL_CTX_set_cipher_list(WOLFSSL_CTX* ctx, const char* list);
int wolfSSL_set_cipher_list(WOLFSSL* ssl, const char* list);
void wolfSSL_dtls_set_using_nonblock(WOLFSSL* ssl, int nonblock);
int wolfSSL_dtls_get_using_nonblock(WOLFSSL* ssl);
int wolfSSL_dtls_get_current_timeout(WOLFSSL* ssl);
int wolfSSL_dtls13_use_quick_timeout(WOLFSSL *ssl);
void wolfSSL_dtls13_set_send_more_acks(WOLFSSL *ssl, int value);
int wolfSSL_dtls_set_timeout_init(WOLFSSL* ssl, int);
int wolfSSL_dtls_set_timeout_max(WOLFSSL* ssl, int);
int wolfSSL_dtls_got_timeout(WOLFSSL* ssl);
int wolfSSL_dtls_retransmit(WOLFSSL* ssl);
int wolfSSL_dtls(WOLFSSL* ssl);
int wolfSSL_dtls_set_peer(WOLFSSL* ssl, void* peer, unsigned int peerSz);
int wolfSSL_dtls_set_pending_peer(WOLFSSL* ssl, void* peer,
unsigned int peerSz);
int wolfSSL_dtls_get_peer(WOLFSSL* ssl, void* peer, unsigned int* peerSz);
int wolfSSL_dtls_get0_peer(WOLFSSL* ssl, const void** peer,
unsigned int* peerSz);
char* wolfSSL_ERR_error_string(unsigned long errNumber, char* data);
void wolfSSL_ERR_error_string_n(unsigned long e, char* buf,
unsigned long len);
int wolfSSL_get_shutdown(const WOLFSSL* ssl);
int wolfSSL_session_reused(WOLFSSL* ssl);
int wolfSSL_is_init_finished(WOLFSSL* ssl);
const char* wolfSSL_get_version(WOLFSSL* ssl);
int wolfSSL_get_current_cipher_suite(WOLFSSL* ssl);
WOLFSSL_CIPHER* wolfSSL_get_current_cipher(WOLFSSL* ssl);
const char* wolfSSL_CIPHER_get_name(const WOLFSSL_CIPHER* cipher);
const char* wolfSSL_get_cipher(WOLFSSL*);
WOLFSSL_SESSION* wolfSSL_get1_session(WOLFSSL* ssl);
WOLFSSL_METHOD* wolfSSLv23_client_method(void);
int wolfSSL_BIO_get_mem_data(WOLFSSL_BIO* bio,void* p);
long wolfSSL_BIO_set_fd(WOLFSSL_BIO* b, int fd, int flag);
int wolfSSL_BIO_set_close(WOLFSSL_BIO *b, long flag);
WOLFSSL_BIO_METHOD *wolfSSL_BIO_s_socket(void);
int wolfSSL_BIO_set_write_buf_size(WOLFSSL_BIO *b, long size);
int wolfSSL_BIO_make_bio_pair(WOLFSSL_BIO *b1, WOLFSSL_BIO *b2);
int wolfSSL_BIO_ctrl_reset_read_request(WOLFSSL_BIO *bio);
int wolfSSL_BIO_nread0(WOLFSSL_BIO *bio, char **buf);
int wolfSSL_BIO_nread(WOLFSSL_BIO *bio, char **buf, int num);
int wolfSSL_BIO_nwrite(WOLFSSL_BIO *bio, char **buf, int num);
int wolfSSL_BIO_reset(WOLFSSL_BIO *bio);
int wolfSSL_BIO_seek(WOLFSSL_BIO *bio, int ofs);
int wolfSSL_BIO_write_filename(WOLFSSL_BIO *bio, char *name);
long wolfSSL_BIO_set_mem_eof_return(WOLFSSL_BIO *bio, int v);
long wolfSSL_BIO_get_mem_ptr(WOLFSSL_BIO *bio, WOLFSSL_BUF_MEM **m);
char* wolfSSL_X509_NAME_oneline(WOLFSSL_X509_NAME* name, char* in, int sz);
WOLFSSL_X509_NAME* wolfSSL_X509_get_issuer_name(WOLFSSL_X509* cert);
WOLFSSL_X509_NAME* wolfSSL_X509_get_subject_name(WOLFSSL_X509* cert);
int wolfSSL_X509_get_isCA(WOLFSSL_X509* cert);
int wolfSSL_X509_NAME_get_text_by_NID(WOLFSSL_X509_NAME* name, int nid,
char* buf, int len);
int wolfSSL_X509_get_signature_type(WOLFSSL_X509* cert);
void wolfSSL_X509_free(WOLFSSL_X509* x509);
int wolfSSL_X509_get_signature(WOLFSSL_X509* x509, unsigned char* buf, int* bufSz);
int wolfSSL_X509_STORE_add_cert(WOLFSSL_X509_STORE* store, WOLFSSL_X509* x509);
WOLFSSL_STACK* wolfSSL_X509_STORE_CTX_get_chain(
WOLFSSL_X509_STORE_CTX* ctx);
int wolfSSL_X509_STORE_set_flags(WOLFSSL_X509_STORE* store,
unsigned long flag);
const byte* wolfSSL_X509_notBefore(WOLFSSL_X509* x509);
const byte* wolfSSL_X509_notAfter(WOLFSSL_X509* x509);
WOLFSSL_BIGNUM *wolfSSL_ASN1_INTEGER_to_BN(const WOLFSSL_ASN1_INTEGER *ai,
WOLFSSL_BIGNUM *bn);
long wolfSSL_CTX_add_extra_chain_cert(WOLFSSL_CTX* ctx, WOLFSSL_X509* x509);
int wolfSSL_CTX_get_read_ahead(WOLFSSL_CTX* ctx);
int wolfSSL_CTX_set_read_ahead(WOLFSSL_CTX* ctx, int v);
long wolfSSL_CTX_set_tlsext_status_arg(WOLFSSL_CTX* ctx, void* arg);
void wolfSSL_CTX_set_client_cert_cb(WOLFSSL_CTX *ctx, client_cert_cb cb);
void wolfSSL_CTX_set_cert_cb(WOLFSSL_CTX* ctx, CertSetupCallback cb, void *arg);
int wolfSSL_CTX_set_tlsext_status_cb(WOLFSSL_CTX* ctx, tlsextStatusCb cb);
int wolfSSL_CTX_get_tlsext_status_cb(WOLFSSL_CTX* ctx, tlsextStatusCb* cb);
long wolfSSL_CTX_set_tlsext_status_arg(WOLFSSL_CTX* ctx, void* arg);
long wolfSSL_get_tlsext_status_ocsp_resp(WOLFSSL *ssl, unsigned char **resp);
long wolfSSL_set_tlsext_status_ocsp_resp(WOLFSSL *ssl, unsigned char *resp, int len);
int wolfSSL_set_tlsext_status_ocsp_resp_multi(WOLFSSL* ssl, unsigned char *resp, int len, word32 idx);
void wolfSSL_CTX_set_ocsp_status_verify_cb(WOLFSSL_CTX* ctx, ocspVerifyStatusCb cb, void* cbArg);
long wolfSSL_CTX_set_tlsext_opaque_prf_input_callback_arg(
WOLFSSL_CTX* ctx, void* arg);
long wolfSSL_set_options(WOLFSSL *s, long op);
long wolfSSL_get_options(const WOLFSSL *ssl);
long wolfSSL_set_tlsext_debug_arg(WOLFSSL *ssl, void *arg);
long wolfSSL_set_tlsext_status_type(WOLFSSL *s, int type);
long wolfSSL_get_verify_result(const WOLFSSL *ssl);
void wolfSSL_ERR_print_errors_fp(XFILE fp, int err);
void wolfSSL_ERR_print_errors_cb (
int (*cb)(const char *str, size_t len, void *u), void *u);
void wolfSSL_CTX_set_psk_client_callback(WOLFSSL_CTX* ctx,
wc_psk_client_callback cb);
void wolfSSL_set_psk_client_callback(WOLFSSL* ssl,
wc_psk_client_callback);
const char* wolfSSL_get_psk_identity_hint(const WOLFSSL*);
const char* wolfSSL_get_psk_identity(const WOLFSSL*);
int wolfSSL_CTX_use_psk_identity_hint(WOLFSSL_CTX* ctx, const char* hint);
int wolfSSL_use_psk_identity_hint(WOLFSSL* ssl, const char* hint);
void wolfSSL_CTX_set_psk_server_callback(WOLFSSL_CTX* ctx,
wc_psk_server_callback cb);
void wolfSSL_set_psk_server_callback(WOLFSSL* ssl,
wc_psk_server_callback cb);
int wolfSSL_set_psk_callback_ctx(WOLFSSL* ssl, void* psk_ctx);
int wolfSSL_CTX_set_psk_callback_ctx(WOLFSSL_CTX* ctx, void* psk_ctx);
void* wolfSSL_get_psk_callback_ctx(WOLFSSL* ssl);
void* wolfSSL_CTX_get_psk_callback_ctx(WOLFSSL_CTX* ctx);
int wolfSSL_CTX_allow_anon_cipher(WOLFSSL_CTX*);
WOLFSSL_METHOD *wolfSSLv23_server_method(void);
int wolfSSL_state(WOLFSSL* ssl);
WOLFSSL_X509* wolfSSL_get_peer_certificate(WOLFSSL* ssl);
int wolfSSL_want_read(WOLFSSL*);
int wolfSSL_want_write(WOLFSSL*);
int wolfSSL_check_domain_name(WOLFSSL* ssl, const char* dn);
int wolfSSL_Init(void);
int wolfSSL_Cleanup(void);
const char* wolfSSL_lib_version(void);
word32 wolfSSL_lib_version_hex(void);
int wolfSSL_negotiate(WOLFSSL* ssl);
int wolfSSL_set_compression(WOLFSSL* ssl);
int wolfSSL_set_timeout(WOLFSSL* ssl, unsigned int to);
int wolfSSL_CTX_set_timeout(WOLFSSL_CTX* ctx, unsigned int to);
WOLFSSL_X509_CHAIN* wolfSSL_get_peer_chain(WOLFSSL* ssl);
int wolfSSL_get_chain_count(WOLFSSL_X509_CHAIN* chain);
int wolfSSL_get_chain_length(WOLFSSL_X509_CHAIN* chain, int idx);
unsigned char* wolfSSL_get_chain_cert(WOLFSSL_X509_CHAIN* chain, int idx);
WOLFSSL_X509* wolfSSL_get_chain_X509(WOLFSSL_X509_CHAIN* chain, int idx);
int wolfSSL_get_chain_cert_pem(WOLFSSL_X509_CHAIN* chain, int idx,
unsigned char* buf, int inLen, int* outLen);
const unsigned char* wolfSSL_get_sessionID(const WOLFSSL_SESSION* s);
int wolfSSL_X509_get_serial_number(WOLFSSL_X509* x509, unsigned char* in,
int* inOutSz);
char* wolfSSL_X509_get_subjectCN(WOLFSSL_X509*);
const unsigned char* wolfSSL_X509_get_der(WOLFSSL_X509* x509, int* outSz);
WOLFSSL_ASN1_TIME* wolfSSL_X509_get_notAfter(WOLFSSL_X509*);
int wolfSSL_X509_version(WOLFSSL_X509*);
WOLFSSL_X509*
wolfSSL_X509_d2i_fp(WOLFSSL_X509** x509, FILE* file);
WOLFSSL_X509*
wolfSSL_X509_load_certificate_file(const char* fname, int format);
unsigned char*
wolfSSL_X509_get_device_type(WOLFSSL_X509* x509, unsigned char* in,
int* inOutSz);
unsigned char*
wolfSSL_X509_get_hw_type(WOLFSSL_X509* x509, unsigned char* in,
int* inOutSz);
unsigned char*
wolfSSL_X509_get_hw_serial_number(WOLFSSL_X509* x509,
unsigned char* in, int* inOutSz);
int wolfSSL_connect_cert(WOLFSSL* ssl);
WC_PKCS12* wolfSSL_d2i_PKCS12_bio(WOLFSSL_BIO* bio,
WC_PKCS12** pkcs12);
WC_PKCS12* wolfSSL_i2d_PKCS12_bio(WOLFSSL_BIO* bio,
WC_PKCS12* pkcs12);
int wolfSSL_PKCS12_parse(WC_PKCS12* pkcs12, const char* psw,
WOLFSSL_EVP_PKEY** pkey, WOLFSSL_X509** cert, WOLF_STACK_OF(WOLFSSL_X509)** ca);
int wolfSSL_SetTmpDH(WOLFSSL* ssl, const unsigned char* p, int pSz,
const unsigned char* g, int gSz);
int wolfSSL_SetTmpDH_buffer(WOLFSSL* ssl, const unsigned char* b, long sz,
int format);
int wolfSSL_SetTmpDH_file(WOLFSSL* ssl, const char* f, int format);
int wolfSSL_CTX_SetTmpDH(WOLFSSL_CTX* ctx, const unsigned char* p,
int pSz, const unsigned char* g, int gSz);
int wolfSSL_CTX_SetTmpDH_buffer(WOLFSSL_CTX* ctx, const unsigned char* b,
long sz, int format);
int wolfSSL_CTX_SetTmpDH_file(WOLFSSL_CTX* ctx, const char* f,
int format);
int wolfSSL_CTX_SetMinDhKey_Sz(WOLFSSL_CTX* ctx, word16);
int wolfSSL_SetMinDhKey_Sz(WOLFSSL* ssl, word16 keySz_bits);
int wolfSSL_CTX_SetMaxDhKey_Sz(WOLFSSL_CTX* ctx, word16 keySz_bits);
int wolfSSL_SetMaxDhKey_Sz(WOLFSSL* ssl, word16 keySz_bits);
int wolfSSL_GetDhKey_Sz(WOLFSSL*);
int wolfSSL_CTX_SetMinRsaKey_Sz(WOLFSSL_CTX* ctx, short keySz);
int wolfSSL_SetMinRsaKey_Sz(WOLFSSL* ssl, short keySz);
int wolfSSL_CTX_SetMinEccKey_Sz(WOLFSSL_CTX* ssl, short keySz);
int wolfSSL_SetMinEccKey_Sz(WOLFSSL* ssl, short keySz);
int wolfSSL_make_eap_keys(WOLFSSL* ssl, void* key, unsigned int len,
const char* label);
int wolfSSL_writev(WOLFSSL* ssl, const struct iovec* iov,
int iovcnt);
int wolfSSL_CTX_UnloadCAs(WOLFSSL_CTX*);
int wolfSSL_CTX_UnloadIntermediateCerts(WOLFSSL_CTX* ctx);
int wolfSSL_CTX_Unload_trust_peers(WOLFSSL_CTX*);
int wolfSSL_CTX_trust_peer_buffer(WOLFSSL_CTX* ctx, const unsigned char* in,
long sz, int format);
int wolfSSL_CTX_load_verify_buffer(WOLFSSL_CTX* ctx, const unsigned char* in,
long sz, int format);
int wolfSSL_CTX_load_verify_buffer_ex(WOLFSSL_CTX* ctx,
const unsigned char* in, long sz,
int format, int userChain, word32 flags);
int wolfSSL_CTX_load_verify_chain_buffer_format(WOLFSSL_CTX* ctx,
const unsigned char* in,
long sz, int format);
int wolfSSL_CTX_use_certificate_buffer(WOLFSSL_CTX* ctx,
const unsigned char* in, long sz,
int format);
int wolfSSL_CTX_use_PrivateKey_buffer(WOLFSSL_CTX* ctx,
const unsigned char* in, long sz,
int format);
int wolfSSL_CTX_use_certificate_chain_buffer(WOLFSSL_CTX* ctx,
const unsigned char* in, long sz);
int wolfSSL_use_certificate_buffer(WOLFSSL* ssl, const unsigned char* in,
long sz, int format);
int wolfSSL_use_PrivateKey_buffer(WOLFSSL* ssl, const unsigned char* in,
long sz, int format);
int wolfSSL_use_certificate_chain_buffer(WOLFSSL* ssl,
const unsigned char* in, long sz);
int wolfSSL_UnloadCertsKeys(WOLFSSL*);
int wolfSSL_CTX_set_group_messages(WOLFSSL_CTX*);
int wolfSSL_set_group_messages(WOLFSSL*);
void wolfSSL_SetFuzzerCb(WOLFSSL* ssl, CallbackFuzzer cbf, void* fCtx);
int wolfSSL_DTLS_SetCookieSecret(WOLFSSL* ssl,
const unsigned char* secret,
unsigned int secretSz);
WC_RNG* wolfSSL_GetRNG(WOLFSSL* ssl);
int wolfSSL_CTX_SetMinVersion(WOLFSSL_CTX* ctx, int version);
int wolfSSL_SetMinVersion(WOLFSSL* ssl, int version);
int wolfSSL_GetObjectSize(void); /* ビルドに基づくオブジェクトサイズ */
int wolfSSL_GetOutputSize(WOLFSSL* ssl, int inSz);
int wolfSSL_GetMaxOutputSize(WOLFSSL*);
int wolfSSL_SetVersion(WOLFSSL* ssl, int version);
void wolfSSL_CTX_SetMacEncryptCb(WOLFSSL_CTX* ctx, CallbackMacEncrypti cb);
void wolfSSL_SetMacEncryptCtx(WOLFSSL* ssl, void *ctx);
void* wolfSSL_GetMacEncryptCtx(WOLFSSL* ssl);
void wolfSSL_CTX_SetDecryptVerifyCb(WOLFSSL_CTX* ctx,
CallbackDecryptVerify cb);
void wolfSSL_SetDecryptVerifyCtx(WOLFSSL* ssl, void *ctx);
void* wolfSSL_GetDecryptVerifyCtx(WOLFSSL* ssl);
const unsigned char* wolfSSL_GetMacSecret(WOLFSSL* ssl, int verify);
const unsigned char* wolfSSL_GetClientWriteKey(WOLFSSL*);
const unsigned char* wolfSSL_GetClientWriteIV(WOLFSSL*);
const unsigned char* wolfSSL_GetServerWriteKey(WOLFSSL*);
const unsigned char* wolfSSL_GetServerWriteIV(WOLFSSL*);
int wolfSSL_GetKeySize(WOLFSSL*);
int wolfSSL_GetIVSize(WOLFSSL*);
int wolfSSL_GetSide(WOLFSSL*);
int wolfSSL_IsTLSv1_1(WOLFSSL*);
int wolfSSL_GetBulkCipher(WOLFSSL*);
int wolfSSL_GetCipherBlockSize(WOLFSSL*);
int wolfSSL_GetAeadMacSize(WOLFSSL*);
int wolfSSL_GetHmacSize(WOLFSSL*);
int wolfSSL_GetHmacType(WOLFSSL*);
int wolfSSL_GetCipherType(WOLFSSL*);
int wolfSSL_SetTlsHmacInner(WOLFSSL* ssl, byte* inner,
word32 sz, int content, int verify);
void wolfSSL_CTX_SetEccSignCb(WOLFSSL_CTX* ctx, CallbackEccSign cb);
void wolfSSL_SetEccSignCtx(WOLFSSL* ssl, void *ctx);
void* wolfSSL_GetEccSignCtx(WOLFSSL* ssl);
void wolfSSL_CTX_SetEccSignCtx(WOLFSSL_CTX* ctx, void *userCtx);
void* wolfSSL_CTX_GetEccSignCtx(WOLFSSL_CTX* ctx);
void wolfSSL_CTX_SetEccVerifyCb(WOLFSSL_CTX* ctx, CallbackEccVerify cb);
void wolfSSL_SetEccVerifyCtx(WOLFSSL* ssl, void *ctx);
void* wolfSSL_GetEccVerifyCtx(WOLFSSL* ssl);
void wolfSSL_CTX_SetRsaSignCb(WOLFSSL_CTX* ctx, CallbackRsaSign cb);
void wolfSSL_SetRsaSignCtx(WOLFSSL* ssl, void *ctx);
void* wolfSSL_GetRsaSignCtx(WOLFSSL* ssl);
void wolfSSL_CTX_SetRsaVerifyCb(WOLFSSL_CTX* ctx, CallbackRsaVerify cb);
void wolfSSL_SetRsaVerifyCtx(WOLFSSL* ssl, void *ctx);
void* wolfSSL_GetRsaVerifyCtx(WOLFSSL* ssl);
void wolfSSL_CTX_SetRsaEncCb(WOLFSSL_CTX* ctx, CallbackRsaEnc cb);
void wolfSSL_SetRsaEncCtx(WOLFSSL* ssl, void *ctx);
void* wolfSSL_GetRsaEncCtx(WOLFSSL* ssl);
void wolfSSL_CTX_SetRsaDecCb(WOLFSSL_CTX* ctx, CallbackRsaDec cb);
void wolfSSL_SetRsaDecCtx(WOLFSSL* ssl, void *ctx);
void* wolfSSL_GetRsaDecCtx(WOLFSSL* ssl);
void wolfSSL_CTX_SetCACb(WOLFSSL_CTX* ctx, CallbackCACache cb);
WOLFSSL_CERT_MANAGER* wolfSSL_CertManagerNew_ex(void* heap);
WOLFSSL_CERT_MANAGER* wolfSSL_CertManagerNew(void);
void wolfSSL_CertManagerFree(WOLFSSL_CERT_MANAGER*);
int wolfSSL_CertManagerLoadCA(WOLFSSL_CERT_MANAGER* cm, const char* f,
const char* d);
int wolfSSL_CertManagerLoadCABuffer(WOLFSSL_CERT_MANAGER* cm,
const unsigned char* in, long sz, int format);
int wolfSSL_CertManagerUnloadCAs(WOLFSSL_CERT_MANAGER* cm);
int wolfSSL_CertManagerUnloadIntermediateCerts(WOLFSSL_CERT_MANAGER* cm);
int wolfSSL_CertManagerUnload_trust_peers(WOLFSSL_CERT_MANAGER* cm);
int wolfSSL_CertManagerVerify(WOLFSSL_CERT_MANAGER* cm, const char* f,
int format);
int wolfSSL_CertManagerVerifyBuffer(WOLFSSL_CERT_MANAGER* cm,
const unsigned char* buff, long sz, int format);
void wolfSSL_CertManagerSetVerify(WOLFSSL_CERT_MANAGER* cm,
VerifyCallback verify_callback);
int wolfSSL_CertManagerCheckCRL(WOLFSSL_CERT_MANAGER* cm,
unsigned char* der, int sz);
int wolfSSL_CertManagerEnableCRL(WOLFSSL_CERT_MANAGER* cm,
int options);
int wolfSSL_CertManagerDisableCRL(WOLFSSL_CERT_MANAGER*);
int wolfSSL_CertManagerLoadCRL(WOLFSSL_CERT_MANAGER* cm,
const char* path, int type, int monitor);
int wolfSSL_CertManagerLoadCRLBuffer(WOLFSSL_CERT_MANAGER* cm,
const unsigned char* buff, long sz,
int type);
int wolfSSL_CertManagerSetCRL_Cb(WOLFSSL_CERT_MANAGER* cm,
CbMissingCRL cb);
int wolfSSL_CertManagerSetCRLUpdate_Cb(WOLFSSL_CERT_MANAGER* cm,
CbUpdateCRL cb);
int wolfSSL_CertManagerGetCRLInfo(WOLFSSL_CERT_MANAGER* cm, CrlInfo* info,
const byte* buff, long sz, int type)
int wolfSSL_CertManagerFreeCRL(WOLFSSL_CERT_MANAGER* cm);
int wolfSSL_CertManagerCheckOCSP(WOLFSSL_CERT_MANAGER* cm,
unsigned char* der, int sz);
int wolfSSL_CertManagerEnableOCSP(WOLFSSL_CERT_MANAGER* cm,
int options);
int wolfSSL_CertManagerDisableOCSP(WOLFSSL_CERT_MANAGER*);
int wolfSSL_CertManagerSetOCSPOverrideURL(WOLFSSL_CERT_MANAGER* cm,
const char* url);
int wolfSSL_CertManagerSetOCSP_Cb(WOLFSSL_CERT_MANAGER* cm,
CbOCSPIO ioCb, CbOCSPRespFree respFreeCb,
void* ioCbCtx);
int wolfSSL_CertManagerEnableOCSPStapling(
WOLFSSL_CERT_MANAGER* cm);
int wolfSSL_EnableCRL(WOLFSSL* ssl, int options);
int wolfSSL_DisableCRL(WOLFSSL* ssl);
int wolfSSL_LoadCRL(WOLFSSL* ssl, const char* path, int type, int monitor);
int wolfSSL_SetCRL_Cb(WOLFSSL* ssl, CbMissingCRL cb);
int wolfSSL_EnableOCSP(WOLFSSL* ssl, int options);
int wolfSSL_DisableOCSP(WOLFSSL*);
int wolfSSL_SetOCSP_OverrideURL(WOLFSSL* ssl, const char* url);
int wolfSSL_SetOCSP_Cb(WOLFSSL* ssl, CbOCSPIO ioCb, CbOCSPRespFree respFreeCb,
void* ioCbCtx);
int wolfSSL_CTX_EnableCRL(WOLFSSL_CTX* ctx, int options);
int wolfSSL_CTX_DisableCRL(WOLFSSL_CTX* ctx);
int wolfSSL_CTX_LoadCRL(WOLFSSL_CTX* ctx, const char* path, int type, int monitor);
int wolfSSL_CTX_SetCRL_Cb(WOLFSSL_CTX* ctx, CbMissingCRL cb);
int wolfSSL_CTX_EnableOCSP(WOLFSSL_CTX* ctx, int options);
int wolfSSL_CTX_DisableOCSP(WOLFSSL_CTX*);
int wolfSSL_CTX_SetOCSP_OverrideURL(WOLFSSL_CTX* ctx, const char* url);
int wolfSSL_CTX_SetOCSP_Cb(WOLFSSL_CTX* ctx,
CbOCSPIO ioCb, CbOCSPRespFree respFreeCb,
void* ioCbCtx);
int wolfSSL_CTX_EnableOCSPStapling(WOLFSSL_CTX*);
void wolfSSL_KeepArrays(WOLFSSL*);
void wolfSSL_FreeArrays(WOLFSSL*);
int wolfSSL_UseSNI(WOLFSSL* ssl, unsigned char type,
const void* data, unsigned short size);
int wolfSSL_CTX_UseSNI(WOLFSSL_CTX* ctx, unsigned char type,
const void* data, unsigned short size);
void wolfSSL_SNI_SetOptions(WOLFSSL* ssl, unsigned char type,
unsigned char options);
void wolfSSL_CTX_SNI_SetOptions(WOLFSSL_CTX* ctx,
unsigned char type, unsigned char options);
int wolfSSL_SNI_GetFromBuffer(
const unsigned char* clientHello, unsigned int helloSz,
unsigned char type, unsigned char* sni, unsigned int* inOutSz);
unsigned char wolfSSL_SNI_Status(WOLFSSL* ssl, unsigned char type);
unsigned short wolfSSL_SNI_GetRequest(WOLFSSL *ssl,
unsigned char type, void** data);
int wolfSSL_UseALPN(WOLFSSL* ssl, char *protocol_name_list,
unsigned int protocol_name_listSz,
unsigned char options);
int wolfSSL_ALPN_GetProtocol(WOLFSSL* ssl, char **protocol_name,
unsigned short *size);
int wolfSSL_ALPN_GetPeerProtocol(WOLFSSL* ssl, char **list,
unsigned short *listSz);
int wolfSSL_UseMaxFragment(WOLFSSL* ssl, unsigned char mfl);
int wolfSSL_CTX_UseMaxFragment(WOLFSSL_CTX* ctx, unsigned char mfl);
int wolfSSL_UseTruncatedHMAC(WOLFSSL* ssl);
int wolfSSL_CTX_UseTruncatedHMAC(WOLFSSL_CTX* ctx);
int wolfSSL_UseOCSPStapling(WOLFSSL* ssl,
unsigned char status_type, unsigned char options);
int wolfSSL_CTX_UseOCSPStapling(WOLFSSL_CTX* ctx,
unsigned char status_type, unsigned char options);
int wolfSSL_UseOCSPStaplingV2(WOLFSSL* ssl,
unsigned char status_type, unsigned char options);
int wolfSSL_CTX_UseOCSPStaplingV2(WOLFSSL_CTX* ctx,
unsigned char status_type, unsigned char options);
int wolfSSL_UseSupportedCurve(WOLFSSL* ssl, word16 name);
int wolfSSL_CTX_UseSupportedCurve(WOLFSSL_CTX* ctx,
word16 name);
int wolfSSL_UseSecureRenegotiation(WOLFSSL* ssl);
int wolfSSL_Rehandshake(WOLFSSL* ssl);
int wolfSSL_UseSessionTicket(WOLFSSL* ssl);
int wolfSSL_CTX_UseSessionTicket(WOLFSSL_CTX* ctx);
int wolfSSL_get_SessionTicket(WOLFSSL* ssl, unsigned char* buf, word32* bufSz);
int wolfSSL_set_SessionTicket(WOLFSSL* ssl, const unsigned char* buf,
word32 bufSz);
int wolfSSL_set_SessionTicket_cb(WOLFSSL* ssl,
CallbackSessionTicket cb, void* ctx);
int wolfSSL_send_SessionTicket(WOLFSSL* ssl);
int wolfSSL_CTX_set_TicketEncCb(WOLFSSL_CTX* ctx,
SessionTicketEncCb);
int wolfSSL_CTX_set_TicketHint(WOLFSSL_CTX* ctx, int);
int wolfSSL_CTX_set_TicketEncCtx(WOLFSSL_CTX* ctx, void*);
void* wolfSSL_CTX_get_TicketEncCtx(WOLFSSL_CTX* ctx);
int wolfSSL_SetHsDoneCb(WOLFSSL* ssl, HandShakeDoneCb cb, void* user_ctx);
int wolfSSL_PrintSessionStats(void);
int wolfSSL_get_session_stats(unsigned int* active,
unsigned int* total,
unsigned int* peak,
unsigned int* maxSessions);
int wolfSSL_MakeTlsMasterSecret(unsigned char* ms, word32 msLen,
const unsigned char* pms, word32 pmsLen,
const unsigned char* cr, const unsigned char* sr,
int tls1_2, int hash_type);
int wolfSSL_DeriveTlsKeys(unsigned char* key_data, word32 keyLen,
const unsigned char* ms, word32 msLen,
const unsigned char* sr, const unsigned char* cr,
int tls1_2, int hash_type);
int wolfSSL_connect_ex(WOLFSSL* ssl, HandShakeCallBack hsCb,
TimeoutCallBack toCb, WOLFSSL_TIMEVAL timeout);
int wolfSSL_accept_ex(WOLFSSL* ssl, HandShakeCallBacki hsCb,
TimeoutCallBack toCb, WOLFSSL_TIMEVAL timeout);
long wolfSSL_BIO_set_fp(WOLFSSL_BIO *bio, XFILE fp, int c);
long wolfSSL_BIO_get_fp(WOLFSSL_BIO *bio, XFILE* fp);
int wolfSSL_check_private_key(const WOLFSSL* ssl);
int wolfSSL_X509_get_ext_by_NID(const WOLFSSL_X509* x509,
int nid, int lastPos);
void* wolfSSL_X509_get_ext_d2i(const WOLFSSL_X509* x509,
int nid, int* c, int* idx);
int wolfSSL_X509_digest(const WOLFSSL_X509* x509,
const WOLFSSL_EVP_MD* digest, unsigned char* buf, unsigned int* len);
int wolfSSL_use_certificate(WOLFSSL* ssl, WOLFSSL_X509* x509);
int wolfSSL_use_certificate_ASN1(WOLFSSL* ssl, unsigned char* der,
int derSz);
int wolfSSL_use_PrivateKey(WOLFSSL* ssl, WOLFSSL_EVP_PKEY* pkey);
int wolfSSL_use_PrivateKey_ASN1(int pri, WOLFSSL* ssl,
unsigned char* der, long derSz);
int wolfSSL_use_RSAPrivateKey_ASN1(WOLFSSL* ssl, unsigned char* der,
long derSz);
WOLFSSL_DH *wolfSSL_DSA_dup_DH(const WOLFSSL_DSA *r);
int wolfSSL_SESSION_get_master_key(const WOLFSSL_SESSION* ses,
unsigned char* out, int outSz);
int wolfSSL_SESSION_get_master_key_length(const WOLFSSL_SESSION* ses);
void wolfSSL_CTX_set_cert_store(WOLFSSL_CTX* ctx,
WOLFSSL_X509_STORE* str);
WOLFSSL_X509* wolfSSL_d2i_X509_bio(WOLFSSL_BIO* bio, WOLFSSL_X509** x509);
WOLFSSL_X509_STORE* wolfSSL_CTX_get_cert_store(WOLFSSL_CTX* ctx);
size_t wolfSSL_BIO_ctrl_pending(WOLFSSL_BIO *b);
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);
void *wolfSSL_CTX_get_default_passwd_cb_userdata(WOLFSSL_CTX *ctx);
WOLFSSL_X509 *wolfSSL_PEM_read_bio_X509_AUX
(WOLFSSL_BIO *bp, WOLFSSL_X509 **x, wc_pem_password_cb *cb, void *u);
long wolfSSL_CTX_set_tmp_dh(WOLFSSL_CTX* ctx, WOLFSSL_DH* dh);
WOLFSSL_DSA *wolfSSL_PEM_read_bio_DSAparams(WOLFSSL_BIO *bp,
WOLFSSL_DSA **x, wc_pem_password_cb *cb, void *u);
unsigned long wolfSSL_ERR_peek_last_error(void);
WOLF_STACK_OF(WOLFSSL_X509)* wolfSSL_get_peer_cert_chain(const WOLFSSL*);
long wolfSSL_CTX_clear_options(WOLFSSL_CTX* ctx, long opt);
int wolfSSL_set_jobject(WOLFSSL* ssl, void* objPtr);
void* wolfSSL_get_jobject(WOLFSSL* ssl);
int wolfSSL_set_msg_callback(WOLFSSL *ssl, SSL_Msg_Cb cb);
int wolfSSL_set_msg_callback_arg(WOLFSSL *ssl, void* arg);
char* wolfSSL_X509_get_next_altname(WOLFSSL_X509*);
WOLFSSL_ASN1_TIME* wolfSSL_X509_get_notBefore(WOLFSSL_X509*);
int wolfSSL_connect(WOLFSSL* ssl);
int wolfSSL_send_hrr_cookie(WOLFSSL* ssl,
const unsigned char* secret, unsigned int secretSz);
int wolfSSL_disable_hrr_cookie(WOLFSSL* ssl);
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);
int wolfSSL_no_dhe_psk(WOLFSSL* ssl);
int wolfSSL_update_keys(WOLFSSL* ssl);
int wolfSSL_key_update_response(WOLFSSL* ssl, int* required);
int wolfSSL_CTX_allow_post_handshake_auth(WOLFSSL_CTX* ctx);
int wolfSSL_allow_post_handshake_auth(WOLFSSL* ssl);
int wolfSSL_request_certificate(WOLFSSL* ssl);
int wolfSSL_CTX_set1_groups_list(WOLFSSL_CTX *ctx, char *list);
int wolfSSL_set1_groups_list(WOLFSSL *ssl, char *list);
int wolfSSL_preferred_group(WOLFSSL* ssl);
int wolfSSL_CTX_set_groups(WOLFSSL_CTX* ctx, int* groups,
int count);
int wolfSSL_set_groups(WOLFSSL* ssl, int* groups, int count);
int wolfSSL_connect_TLSv13(WOLFSSL*);
wolfSSL_accept_TLSv13(WOLFSSL* ssl);
int wolfSSL_CTX_set_max_early_data(WOLFSSL_CTX* ctx,
unsigned int sz);
int wolfSSL_set_max_early_data(WOLFSSL* ssl, unsigned int sz);
int wolfSSL_write_early_data(WOLFSSL* ssl, const void* data,
int sz, int* outSz);
int wolfSSL_read_early_data(WOLFSSL* ssl, void* data, int sz,
int* outSz);
int wolfSSL_inject(WOLFSSL* ssl, const void* data, int sz);
void wolfSSL_CTX_set_psk_client_tls13_callback(WOLFSSL_CTX* ctx,
wc_psk_client_tls13_callback cb);
void wolfSSL_set_psk_client_tls13_callback(WOLFSSL* ssl,
wc_psk_client_tls13_callback cb);
void wolfSSL_CTX_set_psk_server_tls13_callback(WOLFSSL_CTX* ctx,
wc_psk_server_tls13_callback cb);
void wolfSSL_set_psk_server_tls13_callback(WOLFSSL* ssl,
wc_psk_server_tls13_callback cb);
int wolfSSL_UseKeyShare(WOLFSSL* ssl, word16 group);
int wolfSSL_NoKeyShares(WOLFSSL* ssl);
WOLFSSL_METHOD *wolfTLSv1_3_server_method_ex(void* heap);
WOLFSSL_METHOD *wolfTLSv1_3_client_method_ex(void* heap);
WOLFSSL_METHOD *wolfTLSv1_3_server_method(void);
WOLFSSL_METHOD *wolfTLSv1_3_client_method(void);
WOLFSSL_METHOD *wolfTLSv1_3_method_ex(void* heap);
WOLFSSL_METHOD *wolfTLSv1_3_method(void);
int wolfSSL_CTX_set_ephemeral_key(WOLFSSL_CTX* ctx, int keyAlgo, const char* key, unsigned int keySz, int format);
int wolfSSL_set_ephemeral_key(WOLFSSL* ssl, int keyAlgo, const char* key, unsigned int keySz, int format);
int wolfSSL_CTX_get_ephemeral_key(WOLFSSL_CTX* ctx, int keyAlgo,
const unsigned char** key, unsigned int* keySz);
int wolfSSL_get_ephemeral_key(WOLFSSL* ssl, int keyAlgo,
const unsigned char** key, unsigned int* keySz);
int wolfSSL_RSA_sign_generic_padding(int type, const unsigned char* m,
unsigned int mLen, unsigned char* sigRet,
unsigned int* sigLen, WOLFSSL_RSA* rsa,
int flag, int padding);
int wolfSSL_dtls13_has_pending_msg(WOLFSSL *ssl);
unsigned int wolfSSL_SESSION_get_max_early_data(const WOLFSSL_SESSION *s);
int wolfSSL_CRYPTO_get_ex_new_index(int, void*, void*, void*, void*);
int wolfSSL_CTX_set_client_cert_type(WOLFSSL_CTX* ctx, const char* buf, int len);
int wolfSSL_CTX_set_server_cert_type(WOLFSSL_CTX* ctx, const char* buf, int len);
int wolfSSL_set_client_cert_type(WOLFSSL* ssl, const char* buf, int len);
int wolfSSL_set_server_cert_type(WOLFSSL* ssl, const char* buf, int len);
int wolfSSL_CTX_set_group_messages(WOLFSSL_CTX* ctx);
int wolfSSL_CTX_clear_group_messages(WOLFSSL_CTX* ctx);
int wolfSSL_set_group_messages(WOLFSSL* ssl);
int wolfSSL_clear_group_messages(WOLFSSL* ssl);
int wolfSSL_get_negotiated_client_cert_type(WOLFSSL* ssl, int* tp);
int wolfSSL_get_negotiated_server_cert_type(WOLFSSL* ssl, int* tp);
int wolfSSL_dtls_cid_use(WOLFSSL* ssl);
int wolfSSL_dtls_cid_is_enabled(WOLFSSL* ssl);
int wolfSSL_dtls_cid_set(WOLFSSL* ssl, unsigned char* cid,
unsigned int size);
int wolfSSL_dtls_cid_get_rx_size(WOLFSSL* ssl,
unsigned int* size);
int wolfSSL_dtls_cid_get_rx(WOLFSSL* ssl, unsigned char* buffer,
unsigned int bufferSz);
int wolfSSL_dtls_cid_get0_rx(WOLFSSL* ssl, unsigned char** cid);
int wolfSSL_dtls_cid_get_tx_size(WOLFSSL* ssl, unsigned int* size);
int wolfSSL_dtls_cid_get_tx(WOLFSSL* ssl, unsigned char* buffer,
unsigned int bufferSz);
int wolfSSL_dtls_cid_get0_tx(WOLFSSL* ssl, unsigned char** cid);
const unsigned char* wolfSSL_dtls_cid_parse(const unsigned char* msg,
unsigned int msgSz, unsigned int cidSz);
void wolfSSL_CTX_set_client_CA_list(WOLFSSL_CTX* ctx,
WOLF_STACK_OF(WOLFSSL_X509_NAME)* names);
WOLFSSL_STACK *wolfSSL_CTX_get_client_CA_list(
const WOLFSSL_CTX *ctx);
void wolfSSL_set_client_CA_list(WOLFSSL* ssl,
WOLF_STACK_OF(WOLFSSL_X509_NAME)* names);
WOLFSSL_STACK* wolfSSL_get_client_CA_list(
const WOLFSSL* ssl);
void wolfSSL_CTX_set0_CA_list(WOLFSSL_CTX *ctx,
WOLF_STACK_OF(WOLFSSL_X509_NAME)* names);
WOLFSSL_STACK *wolfSSL_CTX_get0_CA_list(
const WOLFSSL_CTX *ctx);
void wolfSSL_set0_CA_list(WOLFSSL *ssl,
WOLF_STACK_OF(WOLFSSL_X509_NAME) *names);
WOLFSSL_STACK *wolfSSL_get0_CA_list(
const WOLFSSL *ssl);
WOLFSSL_STACK *wolfSSL_get0_peer_CA_list(const WOLFSSL *ssl);
void wolfSSL_CTX_set_cert_cb(WOLFSSL_CTX* ctx,
int (*cb)(WOLFSSL *, void *), void *arg);
int wolfSSL_get_client_suites_sigalgs(const WOLFSSL* ssl,
const byte** suites, word16* suiteSz,
const byte** hashSigAlgo, word16* hashSigAlgoSz);
WOLFSSL_CIPHERSUITE_INFO wolfSSL_get_ciphersuite_info(byte first,
byte second);
int wolfSSL_get_sigalg_info(byte first, byte second,
int* hashAlgo, int* sigAlgo);
Updated on 2025-12-12 at 03:08:17 +0000