wolfio.h
Functions
| Name | |
|---|---|
| int | EmbedReceive(WOLFSSL * ssl, char * buf, int sz, void * ctx) この関数は受信埋め込みコールバックです。 |
| int | EmbedSend(WOLFSSL * ssl, char * buf, int sz, void * ctx) この関数は送信埋め込みコールバックです。 |
| int | EmbedReceiveFrom(WOLFSSL * ssl, char * buf, int sz, void * ) この関数は受信埋め込みコールバックです。 |
| int | EmbedSendTo(WOLFSSL * ssl, char * buf, int sz, void * ctx) この関数は送信埋め込みコールバックです。 |
| int | EmbedGenerateCookie(WOLFSSL * ssl, unsigned char * buf, int sz, void * ) この関数はDTLS Generate Cookieコールバックです。 |
| void | EmbedOcspRespFree(void * ctx, byte * resp) この関数は応答バッファを解放します。 |
| void | wolfSSL_CTX_SetIORecv(WOLFSSL_CTX * ctx, CallbackIORecv CBIORecv) この関数は、wolfSSLが入力データを取得するための受信コールバックを登録します。 デフォルトでは、wolfSSLはシステムのTCP recv()関数を使用するコールバックとしてEmbedReceive()を使用します。 ユーザーは、メモリ、他のネットワークモジュール、または任意の場所から入力を取得する関数を登録できます。 関数の動作方法とエラーコードについては、src/io.cのEmbedReceive()関数をガイドとして参照してください。 特に、データの準備ができていないノンブロッキング受信の場合はIO_ERR_WANT_READを返す必要があります。 |
| void | wolfSSL_SetIOReadCtx(WOLFSSL * ssl, void * ctx) この関数は、SSLセッションの受信コールバック関数のコンテキストを登録します。 デフォルトでは、wolfSSLがシステムのTCPライブラリを使用している場合、wolfSSLはwolfSSL_set_fd()に渡されたファイル記述子をコンテキストとして設定します。 独自の受信コールバックを登録した場合、セッションの特定のコンテキストを設定することができます。 たとえば、メモリバッファを使用している場合、コンテキストはメモリバッファへのアクセス方法と場所を記述する構造体へのポインタになる可能性があります。 |
| void | wolfSSL_SetIOWriteCtx(WOLFSSL * ssl, void * ctx) この関数は、SSLセッションの送信コールバック関数のコンテキストを登録します。 デフォルトでは、wolfSSLがシステムのTCPライブラリを使用している場合、wolfSSLはwolfSSL_set_fd()に渡されたファイル記述子をコンテキストとして設定します。 独自の送信コールバックを登録した場合、セッションの特定のコンテキストを設定することができます。 たとえば、メモリバッファを使用している場合、コンテキストはメモリバッファへのアクセス方法と場所を記述する構造体へのポインタになる可能性があります。 |
| void * | wolfSSL_GetIOReadCtx(WOLFSSL * ssl) この関数はWOLFSSL構造体のIOCB_ReadCtxメンバーを返します。 |
| void * | wolfSSL_GetIOWriteCtx(WOLFSSL * ssl) この関数はWOLFSSL構造体のIOCB_WriteCtxメンバーを返します。 |
| void | wolfSSL_SetIOReadFlags(WOLFSSL * ssl, int flags) この関数は、指定されたSSLセッションの受信コールバックで使用するフラグを設定します。 受信コールバックは、デフォルトのwolfSSL EmbedReceiveコールバック、またはユーザーが指定したカスタムコールバックのいずれかです(wolfSSL_CTX_SetIORecvを参照)。 デフォルトのフラグ値は、wolfSSL内部で0の値に設定されます。 デフォルトのwolfSSL受信コールバックは、recv()関数を使用してソケットからデータを受信します。 recv()のmanページより: 「recv()関数のflagsパラメータは、次の値の1つ以上をORして形成されます: MSG_OOB 帯域外データを処理、MSG_PEEK 受信メッセージを覗き見、MSG_WAITALL 完全なリクエストまたはエラーを待機。 MSG_OOBフラグは、通常のデータストリームでは受信されない帯域外データの受信を要求します。 一部のプロトコルは、通常のデータキューの先頭に緊急データを配置するため、このフラグはそのようなプロトコルでは使用できません。 MSG_PEEKフラグは、受信操作が受信キューの先頭からデータを返すようにしますが、そのデータをキューから削除しません。 したがって、後続の受信呼び出しは同じデータを返します。 MSG_WAITALLフラグは、完全なリクエストが満たされるまで操作をブロックするよう要求します。 ただし、シグナルがキャッチされた場合、エラーまたは切断が発生した場合、または次に受信されるデータが返されたデータとは異なるタイプの場合、呼び出しは要求されたデータよりも少ないデータを返す可能性があります。」 |
| void | wolfSSL_SetIOWriteFlags(WOLFSSL * ssl, int flags) この関数は、指定されたSSLセッションの送信コールバックで使用するフラグを設定します。 送信コールバックは、デフォルトのwolfSSL EmbedSendコールバック、またはユーザーが指定したカスタムコールバックのいずれかです(wolfSSL_CTX_SetIOSendを参照)。 デフォルトのフラグ値は、wolfSSL内部で0の値に設定されます。 デフォルトのwolfSSL送信コールバックは、send()関数を使用してソケットからデータを送信します。 send()のmanページより: 「flagsパラメータには、次の1つ以上が含まれる場合があります: #define MSG_OOB 0x1 // 帯域外データを処理、 #define MSG_DONTROUTE 0x4 // ルーティングをバイパス、直接インターフェースを使用。 フラグMSG_OOBは、この概念をサポートするソケット(例:SOCK_STREAM)で「帯域外」データを送信するために使用されます。 基礎となるプロトコルも「帯域外」データをサポートする必要があります。 MSG_DONTROUTEは通常、診断またはルーティングプログラムによってのみ使用されます。」 |
| void | wolfSSL_SetIO_NetX(WOLFSSL * ssl, NX_TCP_SOCKET * nxsocket, ULONG waitoption) この関数は、WOLFSSL構造体内のnxCtx構造体のnxSocketおよびnxWaitメンバーを設定します。 |
| void | wolfSSL_CTX_SetGenCookie(WOLFSSL_CTX * ctx, CallbackGenCookie cb) この関数は、WOLFSSL_CTX構造体のCBIOCookieメンバーのコールバックを設定します。 CallbackGenCookie型は関数ポインタで、次のシグネチャを持ちます: int (CallbackGenCookie)(WOLFSSL ssl, unsigned char buf, int sz, void ctx); |
| void * | wolfSSL_GetCookieCtx(WOLFSSL * ssl) この関数はWOLFSSL構造体のIOCB_CookieCtxメンバーを返します。 |
| int | wolfSSL_SetIO_ISOTP(WOLFSSL * ssl, isotp_wolfssl_ctx * ctx, can_recv_fn recv_fn, can_send_fn send_fn, can_delay_fn delay_fn, word32 receive_delay, char * receive_buffer, int receive_buffer_size, void * arg) この関数は、wolfSSLがWOLFSSL_ISOTPでコンパイルされている場合に使用するために、wolfSSLのISO-TPコンテキストを設定します。 |
| void | wolfSSL_SSLDisableRead(WOLFSSL * ssl) この関数はIOレイヤーからの読み取りを無効にします。 |
| void | wolfSSL_SSLEnableRead(WOLFSSL * ssl) この関数はIOレイヤーからの読み取りを有効にします。 読み取りはデフォルトで有効になっており、wolfSSL_SSLDisableRead()を元に戻すために使用する必要があります。 |
Functions Documentation
function EmbedReceive
int EmbedReceive(
WOLFSSL * ssl,
char * buf,
int sz,
void * ctx
)
この関数は受信埋め込みコールバックです。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
- buf バッファのchar型ポインタ表現。
- sz バッファのサイズ。
- ctx ユーザー登録コンテキストへのvoid型ポインタ。デフォルトの場合、ctxはソケット記述子ポインタです。
See:
- EmbedSend
- wolfSSL_CTX_SetIORecv
- wolfSSL_SSLSetIORecv
Return:
- Success この関数は読み取られたバイト数を返します。
- WOLFSSL_CBIO_ERR_WANT_READ 最後のエラーがSOCKET_EWOULDBLCOKまたはSOCKET_EAGAINの場合、"Would block"メッセージとともに返されます。
- WOLFSSL_CBIO_ERR_TIMEOUT "Socket timeout"メッセージとともに返されます。
- WOLFSSL_CBIO_ERR_CONN_RST 最後のエラーがSOCKET_ECONNRESETの場合、"Connection reset"メッセージとともに返されます。
- WOLFSSL_CBIO_ERR_ISR 最後のエラーがSOCKET_EINTRの場合、"Socket interrupted"メッセージとともに返されます。
- WOLFSSL_CBIO_ERR_WANT_READ 最後のエラーがSOCKET_ECONNREFUSEDの場合、"Connection refused"メッセージとともに返されます。
- WOLFSSL_CBIO_ERR_CONN_CLOSE 最後のエラーがSOCKET_ECONNABORTEDの場合、"Connection aborted"メッセージとともに返されます。
- WOLFSSL_CBIO_ERR_GENERAL 最後のエラーが指定されていない場合、"General error"メッセージとともに返されます。
Example
WOLFSSL_CTX* ctx = wolfSSL_CTX_new( protocol method );
WOLFSSL* ssl = wolfSSL_new(ctx);
char* buf;
int sz;
void* ctx;
int bytesRead = EmbedReceive(ssl, buf, sz, ctx);
if(bytesRead <= 0){
// バイトが読み取られませんでした。失敗ケース。
}
function EmbedSend
int EmbedSend(
WOLFSSL * ssl,
char * buf,
int sz,
void * ctx
)
この関数は送信埋め込みコールバックです。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
- buf バッファを表すchar型ポインタ。
- sz バッファのサイズ。
- ctx ユーザー登録コンテキストへのvoid型ポインタ。
See:
- EmbedReceive
- wolfSSL_CTX_SetIOSend
- wolfSSL_SSLSetIOSend
Return:
- Success この関数は送信されたバイト数を返します。
- WOLFSSL_CBIO_ERR_WANT_WRITE 最後のエラーがSOCKET_EWOULDBLOCKまたはSOCKET_EAGAINの場合、"Would block"メッセージとともに返されます。
- WOLFSSL_CBIO_ERR_CONN_RST 最後のエラーがSOCKET_ECONNRESETの場合、"Connection reset"メッセージとともに返されます。
- WOLFSSL_CBIO_ERR_ISR 最後のエラーがSOCKET_EINTRの場合、"Socket interrupted"メッセージとともに返されます。
- WOLFSSL_CBIO_ERR_CONN_CLOSE 最後のエラーがSOCKET_EPIPEの場合、"Socket EPIPE"メッセージとともに返されます。
- WOLFSSL_CBIO_ERR_GENERAL 最後のエラーが指定されていない場合、"General error"メッセージとともに返されます。
Example
WOLFSSL* ssl = wolfSSL_new(ctx);
char* buf;
int sz;
void* ctx;
int dSent = EmbedSend(ssl, buf, sz, ctx);
if(dSent <= 0){
// バイトが送信されませんでした。失敗ケース。
}
function EmbedReceiveFrom
int EmbedReceiveFrom(
WOLFSSL * ssl,
char * buf,
int sz,
void *
)
この関数は受信埋め込みコールバックです。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
- buf バッファへのconst char型ポインタ。
- sz バッファのサイズを表すint型。
- ctx WOLFSSL_CTXコンテキストへのvoid型ポインタ。
See:
- EmbedSendTo
- wolfSSL_CTX_SetIORecv
- wolfSSL_SSLSetIORecv
- wolfSSL_dtls_get_current_timeout
Return:
- Success 実行が成功した場合、この関数は読み取られたnbバイト数を返します。
- WOLFSSL_CBIO_ERR_WANT_READ 接続が拒否された場合、または関数で'would block'エラーがスローされた場合に返されます。
- WOLFSSL_CBIO_ERR_TIMEOUT ソケットがタイムアウトした場合に返されます。
- WOLFSSL_CBIO_ERR_CONN_RST 接続がリセットされた場合に返されます。
- WOLFSSL_CBIO_ERR_ISR ソケットが中断された場合に返されます。
- WOLFSSL_CBIO_ERR_GENERAL 一般的なエラーがあった場合に返されます。
Example
WOLFSSL_CTX* ctx = wolfSSL_CTX_new( protocol method );
WOLFSSL* ssl = WOLFSSL_new(ctx);
char* buf;
int sz = sizeof(buf)/sizeof(char);
(void*)ctx;
…
int nb = EmbedReceiveFrom(ssl, buf, sz, ctx);
if(nb > 0){
// nbは書き込まれたバイト数で正の値です
}
function EmbedSendTo
int EmbedSendTo(
WOLFSSL * ssl,
char * buf,
int sz,
void * ctx
)
この関数は送信埋め込みコールバックです。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
- buf バッファを表すchar型ポインタ。
- sz バッファのサイズ。
- ctx ユーザー登録コンテキストへのvoid型ポインタ。デフォルトの場合はWOLFSSL_DTLS_CTX構造体です。
See:
- EmbedReceiveFrom
- wolfSSL_CTX_SetIOSend
- wolfSSL_SSLSetIOSend
Return:
- Success この関数は送信されたバイト数を返します。
- WOLFSSL_CBIO_ERR_WANT_WRITE 最後のエラーがSOCKET_EWOULDBLOCKまたはSOCKET_EAGAINエラーの場合、"Would Block"メッセージとともに返されます。
- WOLFSSL_CBIO_ERR_CONN_RST 最後のエラーがSOCKET_ECONNRESETの場合、"Connection reset"メッセージとともに返されます。
- WOLFSSL_CBIO_ERR_ISR 最後のエラーがSOCKET_EINTRの場合、"Socket interrupted"メッセージとともに返されます。
- WOLFSSL_CBIO_ERR_CONN_CLOSE 最後のエラーがWOLFSSL_CBIO_ERR_CONN_CLOSEの場合、"Socket EPIPE"メッセージとともに返されます。
- WOLFSSL_CBIO_ERR_GENERAL 最後のエラーが指定されていない場合、"General error"メッセージとともに返されます。
Example
WOLFSSL* ssl;
…
char* buf;
int sz;
void* ctx;
int sEmbed = EmbedSendto(ssl, buf, sz, ctx);
if(sEmbed <= 0){
// バイトが送信されませんでした。失敗ケース。
}
function EmbedGenerateCookie
int EmbedGenerateCookie(
WOLFSSL * ssl,
unsigned char * buf,
int sz,
void *
)
この関数はDTLS Generate Cookieコールバックです。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
- buf バッファを表すbyte型ポインタ。XMEMCPY()の宛先です。
- sz バッファのサイズ。
- ctx ユーザー登録コンテキストへのvoid型ポインタ。
Return:
- Success この関数はバッファにコピーされたバイト数を返します。
- GEN_COOKIE_E EmbedGenerateCookieでgetpeernameが失敗した場合に返されます。
Example
WOLFSSL_CTX* ctx = wolfSSL_CTX_new( method );
WOLFSSL* ssl = wolfSSL_new(ctx);
byte buffer[BUFFER_SIZE];
int sz = sizeof(buffer)/sizeof(byte);
void* ctx;
…
int ret = EmbedGenerateCookie(ssl, buffer, sz, ctx);
if(ret > 0){
// EmbedGenerateCookieの成功コードブロック
}
function EmbedOcspRespFree
void EmbedOcspRespFree(
void * ctx,
byte * resp
)
この関数は応答バッファを解放します。
Parameters:
- ctx ヒープヒントへのvoid型ポインタ。
- resp 応答を表すbyte型ポインタ。
See:
Return: none 戻り値なし。
Example
void* ctx;
byte* resp; // 応答バッファ
…
EmbedOcspRespFree(ctx, resp);
function wolfSSL_CTX_SetIORecv
void wolfSSL_CTX_SetIORecv(
WOLFSSL_CTX * ctx,
CallbackIORecv CBIORecv
)
この関数は、wolfSSLが入力データを取得するための受信コールバックを登録します。 デフォルトでは、wolfSSLはシステムのTCP recv()関数を使用するコールバックとしてEmbedReceive()を使用します。 ユーザーは、メモリ、他のネットワークモジュール、または任意の場所から入力を取得する関数を登録できます。 関数の動作方法とエラーコードについては、src/io.cのEmbedReceive()関数をガイドとして参照してください。 特に、データの準備ができていないノンブロッキング受信の場合はIO_ERR_WANT_READを返す必要があります。
Parameters:
- ctx wolfSSL_CTX_new()で作成されたSSLコンテキストへのポインタ。
- callback wolfSSLコンテキストctxの受信コールバックとして登録される関数。この関数のシグネチャは、上記のSynopsisセクションに示されているものに従う必要があります。
See:
- wolfSSL_CTX_SetIOSend
- wolfSSL_SetIOReadCtx
- wolfSSL_SetIOWriteCtx
Return: none 戻り値なし。
Example
WOLFSSL_CTX* ctx = 0;
// 受信コールバックのプロトタイプ
int MyEmbedReceive(WOLFSSL* ssl, char* buf, int sz, void* ctx);
// カスタム受信コールバックをwolfSSLに登録
wolfSSL_CTX_SetIORecv(ctx, MyEmbedReceive);
int MyEmbedReceive(WOLFSSL* ssl, char* buf, int sz, void* ctx)
{
// カスタムEmbedReceive関数
}
function wolfSSL_SetIOReadCtx
void wolfSSL_SetIOReadCtx(
WOLFSSL * ssl,
void * ctx
)
この関数は、SSLセッションの受信コールバック関数のコンテキストを登録します。 デフォルトでは、wolfSSLがシステムのTCPライブラリを使用している場合、wolfSSLはwolfSSL_set_fd()に渡されたファイル記述子をコンテキストとして設定します。 独自の受信コールバックを登録した場合、セッションの特定のコンテキストを設定することができます。 たとえば、メモリバッファを使用している場合、コンテキストはメモリバッファへのアクセス方法と場所を記述する構造体へのポインタになる可能性があります。
Parameters:
- ssl wolfSSL_new()で作成されたSSLセッションへのポインタ。
- rctx SSLセッション(ssl)の受信コールバック関数に登録されるコンテキストへのポインタ。
See:
- wolfSSL_CTX_SetIORecv
- wolfSSL_CTX_SetIOSend
- wolfSSL_SetIOWriteCtx
Return: none 戻り値なし。
Example
int sockfd;
WOLFSSL* ssl = 0;
...
// 例として、受信CTXとしてソケットfdを手動で設定
wolfSSL_SetIOReadCtx(ssl, &sockfd);
...
function wolfSSL_SetIOWriteCtx
void wolfSSL_SetIOWriteCtx(
WOLFSSL * ssl,
void * ctx
)
この関数は、SSLセッションの送信コールバック関数のコンテキストを登録します。 デフォルトでは、wolfSSLがシステムのTCPライブラリを使用している場合、wolfSSLはwolfSSL_set_fd()に渡されたファイル記述子をコンテキストとして設定します。 独自の送信コールバックを登録した場合、セッションの特定のコンテキストを設定することができます。 たとえば、メモリバッファを使用している場合、コンテキストはメモリバッファへのアクセス方法と場所を記述する構造体へのポインタになる可能性があります。
Parameters:
- ssl wolfSSL_new()で作成されたSSLセッションへのポインタ。
- wctx SSLセッション(ssl)の送信コールバック関数に登録されるコンテキストへのポインタ。
See:
- wolfSSL_CTX_SetIORecv
- wolfSSL_CTX_SetIOSend
- wolfSSL_SetIOReadCtx
Return: none 戻り値なし。
Example
int sockfd;
WOLFSSL* ssl = 0;
...
// 例として、送信CTXとしてソケットfdを手動で設定
wolfSSL_SetIOWriteCtx(ssl, &sockfd);
...
function wolfSSL_GetIOReadCtx
void * wolfSSL_GetIOReadCtx(
WOLFSSL * ssl
)
この関数はWOLFSSL構造体のIOCB_ReadCtxメンバーを返します。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
See:
- wolfSSL_GetIOWriteCtx
- wolfSSL_SetIOReadFlags
- wolfSSL_SetIOWriteCtx
- wolfSSL_SetIOReadCtx
- wolfSSL_CTX_SetIOSend
Return:
- pointer この関数はWOLFSSL構造体のIOCB_ReadCtxメンバーへのvoid型ポインタを返します。
- NULL WOLFSSL構造体がNULLの場合に返されます。
Example
WOLFSSL* ssl = wolfSSL_new(ctx);
void* ioRead;
...
ioRead = wolfSSL_GetIOReadCtx(ssl);
if(ioRead == NULL){
// 失敗ケース。sslオブジェクトがNULLでした。
}
function wolfSSL_GetIOWriteCtx
void * wolfSSL_GetIOWriteCtx(
WOLFSSL * ssl
)
この関数はWOLFSSL構造体のIOCB_WriteCtxメンバーを返します。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
See:
- wolfSSL_GetIOReadCtx
- wolfSSL_SetIOWriteCtx
- wolfSSL_SetIOReadCtx
- wolfSSL_CTX_SetIOSend
Return:
- pointer この関数はWOLFSSL構造体のIOCB_WriteCtxメンバーへのvoid型ポインタを返します。
- NULL WOLFSSL構造体がNULLの場合に返されます。
Example
WOLFSSL* ssl;
void* ioWrite;
...
ioWrite = wolfSSL_GetIOWriteCtx(ssl);
if(ioWrite == NULL){
// 関数がNULLを返しました。
}
function wolfSSL_SetIOReadFlags
void wolfSSL_SetIOReadFlags(
WOLFSSL * ssl,
int flags
)
この関数は、指定されたSSLセッションの受信コールバックで使用するフラグを設定します。 受信コールバックは、デフォルトのwolfSSL EmbedReceiveコールバック、またはユーザーが指定したカスタムコールバックのいずれかです(wolfSSL_CTX_SetIORecvを参照)。 デフォルトのフラグ値は、wolfSSL内部で0の値に設定されます。 デフォルトのwolfSSL受信コールバックは、recv()関数を使用してソケットからデータを受信します。 recv()のmanページより: 「recv()関数のflagsパラメータは、次の値の1つ以上をORして形成されます: MSG_OOB 帯域外データを処理、MSG_PEEK 受信メッセージを覗き見、MSG_WAITALL 完全なリクエストまたはエラーを待機。 MSG_OOBフラグは、通常のデータストリームでは受信されない帯域外データの受信を要求します。 一部のプロトコルは、通常のデータキューの先頭に緊急データを配置するため、このフラグはそのようなプロトコルでは使用できません。 MSG_PEEKフラグは、受信操作が受信キューの先頭からデータを返すようにしますが、そのデータをキューから削除しません。 したがって、後続の受信呼び出しは同じデータを返します。 MSG_WAITALLフラグは、完全なリクエストが満たされるまで操作をブロックするよう要求します。 ただし、シグナルがキャッチされた場合、エラーまたは切断が発生した場合、または次に受信されるデータが返されたデータとは異なるタイプの場合、呼び出しは要求されたデータよりも少ないデータを返す可能性があります。」
Parameters:
- ssl wolfSSL_new()で作成されたSSLセッションへのポインタ。
- flags 指定されたSSLセッション(ssl)のI/O読み取りフラグの値。
See:
- wolfSSL_CTX_SetIORecv
- wolfSSL_CTX_SetIOSend
- wolfSSL_SetIOReadCtx
Return: none 戻り値なし。
Example
WOLFSSL* ssl = 0;
...
// recvフラグを手動で0に設定
wolfSSL_SetIOReadFlags(ssl, 0);
...
function wolfSSL_SetIOWriteFlags
void wolfSSL_SetIOWriteFlags(
WOLFSSL * ssl,
int flags
)
この関数は、指定されたSSLセッションの送信コールバックで使用するフラグを設定します。 送信コールバックは、デフォルトのwolfSSL EmbedSendコールバック、またはユーザーが指定したカスタムコールバックのいずれかです(wolfSSL_CTX_SetIOSendを参照)。 デフォルトのフラグ値は、wolfSSL内部で0の値に設定されます。 デフォルトのwolfSSL送信コールバックは、send()関数を使用してソケットからデータを送信します。 send()のmanページより: 「flagsパラメータには、次の1つ以上が含まれる場合があります: #define MSG_OOB 0x1 // 帯域外データを処理、 #define MSG_DONTROUTE 0x4 // ルーティングをバイパス、直接インターフェースを使用。 フラグMSG_OOBは、この概念をサポートするソケット(例:SOCK_STREAM)で「帯域外」データを送信するために使用されます。 基礎となるプロトコルも「帯域外」データをサポートする必要があります。 MSG_DONTROUTEは通常、診断またはルーティングプログラムによってのみ使用されます。」
Parameters:
- ssl wolfSSL_new()で作成されたSSLセッションへのポインタ。
- flags 指定されたSSLセッション(ssl)のI/O送信フラグの値。
See:
- wolfSSL_CTX_SetIORecv
- wolfSSL_CTX_SetIOSend
- wolfSSL_SetIOReadCtx
Return: none 戻り値なし。
Example
WOLFSSL* ssl = 0;
...
// 送信フラグを手動で0に設定
wolfSSL_SetIOWriteFlags(ssl, 0);
...
function wolfSSL_SetIO_NetX
void wolfSSL_SetIO_NetX(
WOLFSSL * ssl,
NX_TCP_SOCKET * nxsocket,
ULONG waitoption
)
この関数は、WOLFSSL構造体内のnxCtx構造体のnxSocketおよびnxWaitメンバーを設定します。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
- nxSocket nxCTX構造体のnxSocketメンバーに設定されるNX_TCP_SOCKET型へのポインタ。
- waitOption nxCtx構造体のnxWaitメンバーに設定されるULONG型。
See:
- set_fd
- NetX_Send
- NetX_Receive
Return: none 戻り値なし。
Example
WOLFSSL* ssl = wolfSSL_new(ctx);
NX_TCP_SOCKET* nxSocket;
ULONG waitOption;
…
if(ssl != NULL || nxSocket != NULL || waitOption <= 0){
wolfSSL_SetIO_NetX(ssl, nxSocket, waitOption);
} else {
// 適切なパラメータを渡す必要があります。
}
function wolfSSL_CTX_SetGenCookie
void wolfSSL_CTX_SetGenCookie(
WOLFSSL_CTX * ctx,
CallbackGenCookie cb
)
この関数は、WOLFSSL_CTX構造体のCBIOCookieメンバーのコールバックを設定します。 CallbackGenCookie型は関数ポインタで、次のシグネチャを持ちます: int (CallbackGenCookie)(WOLFSSL ssl, unsigned char buf, int sz, void ctx);
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
- cb CallbackGenCookieのシグネチャを持つCallbackGenCookie型の関数ポインタ。
See: CallbackGenCookie
Return: none 戻り値なし。
Example
WOLFSSL_CTX* ctx = wolfSSL_CTX_new( method );
WOLFSSL* ssl = wolfSSL_new(ctx);
…
int SetGenCookieCB(WOLFSSL* ssl, unsigned char* buf, int sz, void* ctx){
// コールバック関数本体
}
…
wolfSSL_CTX_SetGenCookie(ssl->ctx, SetGenCookieCB);
function wolfSSL_GetCookieCtx
void * wolfSSL_GetCookieCtx(
WOLFSSL * ssl
)
この関数はWOLFSSL構造体のIOCB_CookieCtxメンバーを返します。
Parameters:
- ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
See:
- wolfSSL_SetCookieCtx
- wolfSSL_CTX_SetGenCookie
Return:
- pointer 関数はIOCB_CookieCtxに保存されているvoid型ポインタ値を返します。
- NULL WOLFSSL構造体がNULLの場合。
Example
WOLFSSL_CTX* ctx = wolfSSL_CTX_new( method );
WOLFSSL* ssl = wolfSSL_new(ctx);
void* cookie;
...
cookie = wolfSSL_GetCookieCtx(ssl);
if(cookie != NULL){
// cookieを取得しました
}
function wolfSSL_SetIO_ISOTP
int wolfSSL_SetIO_ISOTP(
WOLFSSL * ssl,
isotp_wolfssl_ctx * ctx,
can_recv_fn recv_fn,
can_send_fn send_fn,
can_delay_fn delay_fn,
word32 receive_delay,
char * receive_buffer,
int receive_buffer_size,
void * arg
)
この関数は、wolfSSLがWOLFSSL_ISOTPでコンパイルされている場合に使用するために、wolfSSLのISO-TPコンテキストを設定します。
Parameters:
- ssl wolfSSLコンテキスト。
- ctx この関数が初期化するユーザー作成のISOTPコンテキスト。
- recv_fn ユーザーのCANバス受信コールバック。
- send_fn ユーザーのCANバス送信コールバック。
- delay_fn ユーザーのマイクロ秒粒度遅延関数。
- receive_delay 各CANバスパケットを遅延させる設定マイクロ秒数。
- receive_buffer データを受信するためのユーザー提供バッファ、ISOTP_DEFAULT_BUFFER_SIZEバイトに割り当てることを推奨。
- receive_buffer_size - receive_bufferのサイズ。
- arg recv_fnとsend_fnに送信される任意のポインタ。
Return: 0 成功時、WOLFSSL_CBIO_ERR_GENERAL 失敗時。
Example
struct can_info can_con_info;
isotp_wolfssl_ctx isotp_ctx;
char *receive_buffer = malloc(ISOTP_DEFAULT_BUFFER_SIZE);
WOLFSSL_CTX* ctx = wolfSSL_CTX_new(method);
WOLFSSL* ssl = wolfSSL_new(ctx);
...
wolfSSL_SetIO_ISOTP(ssl, &isotp_ctx, can_receive, can_send, can_delay, 0,
receive_buffer, ISOTP_DEFAULT_BUFFER_SIZE, &can_con_info);
function wolfSSL_SSLDisableRead
void wolfSSL_SSLDisableRead(
WOLFSSL * ssl
)
この関数はIOレイヤーからの読み取りを無効にします。
Parameters:
- ssl wolfSSLコンテキスト。
See:
- wolfSSL_CTX_SetIORecv
- wolfSSL_SSLSetIORecv
- wolfSSL_SSLEnableRead
Example
WOLFSSL_CTX* ctx = wolfSSL_CTX_new(method);
WOLFSSL* ssl = wolfSSL_new(ctx);
wolfSSL_SSLDisableRead(ssl);
function wolfSSL_SSLEnableRead
void wolfSSL_SSLEnableRead(
WOLFSSL * ssl
)
この関数はIOレイヤーからの読み取りを有効にします。 読み取りはデフォルトで有効になっており、wolfSSL_SSLDisableRead()を元に戻すために使用する必要があります。
Parameters:
- ssl wolfSSLコンテキスト。
See:
- wolfSSL_CTX_SetIORecv
- wolfSSL_SSLSetIORecv
- wolfSSL_SSLEnableRead
Example
WOLFSSL_CTX* ctx = wolfSSL_CTX_new(method);
WOLFSSL* ssl = wolfSSL_new(ctx);
wolfSSL_SSLDisableRead(ssl);
...
wolfSSL_SSLEnableRead(ssl);
Source code
int EmbedReceive(WOLFSSL* ssl, char* buf, int sz, void* ctx);
int EmbedSend(WOLFSSL* ssl, char* buf, int sz, void* ctx);
int EmbedReceiveFrom(WOLFSSL* ssl, char* buf, int sz, void*);
int EmbedSendTo(WOLFSSL* ssl, char* buf, int sz, void* ctx);
int EmbedGenerateCookie(WOLFSSL* ssl, unsigned char* buf,
int sz, void*);
void EmbedOcspRespFree(void* ctx, byte* resp);
void wolfSSL_CTX_SetIORecv(WOLFSSL_CTX* ctx, CallbackIORecv CBIORecv);
void wolfSSL_SetIOReadCtx( WOLFSSL* ssl, void *ctx);
void wolfSSL_SetIOWriteCtx(WOLFSSL* ssl, void *ctx);
void* wolfSSL_GetIOReadCtx( WOLFSSL* ssl);
void* wolfSSL_GetIOWriteCtx(WOLFSSL* ssl);
void wolfSSL_SetIOReadFlags( WOLFSSL* ssl, int flags);
void wolfSSL_SetIOWriteFlags(WOLFSSL* ssl, int flags);
void wolfSSL_SetIO_NetX(WOLFSSL* ssl, NX_TCP_SOCKET* nxsocket,
ULONG waitoption);
void wolfSSL_CTX_SetGenCookie(WOLFSSL_CTX* ctx, CallbackGenCookie cb);
void* wolfSSL_GetCookieCtx(WOLFSSL* ssl);
int wolfSSL_SetIO_ISOTP(WOLFSSL *ssl, isotp_wolfssl_ctx *ctx,
can_recv_fn recv_fn, can_send_fn send_fn, can_delay_fn delay_fn,
word32 receive_delay, char *receive_buffer, int receive_buffer_size,
void *arg);
void wolfSSL_SSLDisableRead(WOLFSSL *ssl);
void wolfSSL_SSLEnableRead(WOLFSSL *ssl);
Updated on 2025-12-12 at 03:08:17 +0000