Files
wolfssl/doc/dox_comments/header_files-ja/wolfio.h

399 lines
19 KiB
C
Raw Normal View History

/*!
\brief
\return Success
\return WOLFSSL_CBIO_ERR_WANT_READ socket_ewouldbolcokまたはsocket_eagainであれば
\return WOLFSSL_CBIO_ERR_TIMEOUT "Socket Timeout"
\return WOLFSSL_CBIO_ERR_CONN_RST socket_econnresetの場合 "Connection Reset"
\return WOLFSSL_CBIO_ERR_ISR socket_eintrの場合 "Socket Interrupted"
\return WOLFSSL_CBIO_ERR_WANT_READ socket_econneRefusedの場合
\return WOLFSSL_CBIO_ERR_CONN_CLOSE SOCKET_ECONNABORTEDの場合
\return WOLFSSL_CBIO_ERR_GENERAL
\param ssl wolfssl_new使WolfSSL構造へのポインタ
\param buf
\param sz
_Example_
\code
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){
// There were no bytes read. Failure case.
}
\endcode
\sa EmbedSend
\sa wolfSSL_CTX_SetIORecv
\sa wolfSSL_SSLSetIORecv
*/
int EmbedReceive(WOLFSSL* ssl, char* buf, int sz, void* ctx);
/*!
\brief
\return Success
\return WOLFSSL_CBIO_ERR_WANT_WRITE socket_ewouldblockまたはsocket_eagainであれば "Block"
\return WOLFSSL_CBIO_ERR_CONN_RST socket_econnresetの場合 "Connection Reset"
\return WOLFSSL_CBIO_ERR_ISR socket_eintrの場合 "Socket Interrupted"
\return WOLFSSL_CBIO_ERR_CONN_CLOSE socket_epipeの場合 "Socket Epipe"
\return WOLFSSL_CBIO_ERR_GENERAL
\param ssl wolfssl_new使WolfSSL構造へのポインタ
\param buf
\param sz
_Example_
\code
WOLFSSL* ssl = wolfSSL_new(ctx);
char* buf;
int sz;
void* ctx;
int dSent = EmbedSend(ssl, buf, sz, ctx);
if(dSent <= 0){
// No byes sent. Failure case.
}
\endcode
\sa EmbedReceive
\sa wolfSSL_CTX_SetIOSend
\sa wolfSSL_SSLSetIOSend
*/
int EmbedSend(WOLFSSL* ssl, char* buf, int sz, void* ctx);
/*!
\brief
\return Success NBバイトを返します
\return WOLFSSL_CBIO_ERR_WANT_READ
\return WOLFSSL_CBIO_ERR_TIMEOUT
\return WOLFSSL_CBIO_ERR_CONN_RST
\return WOLFSSL_CBIO_ERR_ISR
\return WOLFSSL_CBIO_ERR_GENERAL
\param ssl wolfssl_new使WolfSSL構造へのポインタ
\param buf
\param sz int型
_Example_
\code
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 is the number of bytes written and is positive
}
\endcode
\sa EmbedSendTo
\sa wolfSSL_CTX_SetIORecv
\sa wolfSSL_SSLSetIORecv
\sa wolfSSL_dtls_get_current_timeout
*/
int EmbedReceiveFrom(WOLFSSL* ssl, char* buf, int sz, void*);
/*!
\brief
\return Success
\return WOLFSSL_CBIO_ERR_WANT_WRITE socket_ewouldblockまたはsocket_eagainエラーの場合 "Block"
\return WOLFSSL_CBIO_ERR_CONN_RST socket_econnresetの場合 "Connection Reset"
\return WOLFSSL_CBIO_ERR_ISR socket_eintrの場合 "Socket Interrupted"
\return WOLFSSL_CBIO_ERR_CONN_CLOSE wolfssl_cbio_err_conn_croseの場合 "Socket Epipe"
\return WOLFSSL_CBIO_ERR_GENERAL
\param ssl wolfssl_new使WolfSSL構造へのポインタ
\param buf
\param sz
_Example_
\code
WOLFSSL* ssl;
char* buf;
int sz;
void* ctx;
int sEmbed = EmbedSendto(ssl, buf, sz, ctx);
if(sEmbed <= 0){
// No bytes sent. Failure case.
}
\endcode
\sa EmbedReceiveFrom
\sa wolfSSL_CTX_SetIOSend
\sa wolfSSL_SSLSetIOSend
*/
int EmbedSendTo(WOLFSSL* ssl, char* buf, int sz, void* ctx);
/*!
\brief
\return Success
\return GEN_COOKIE_E getPeernameがEmbedGenerateCookieに失敗した場合に返されます
\param ssl wolfssl_new使WolfSSL構造へのポインタ
\param buf xmemcpy
\param sz
_Example_
\code
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 code block for success
}
\endcode
\sa wolfSSL_CTX_SetGenCookie
*/
int EmbedGenerateCookie(WOLFSSL* ssl, unsigned char* buf,
int sz, void*);
/*!
\brief
\return none
\param ctx voidポインタ
_Example_
\code
void* ctx;
byte* resp; // Response buffer.
EmbedOcspRespFree(ctx, resp);
\endcode
\sa wolfSSL_CertManagerSetOCSP_Cb
\sa wolfSSL_CertManagerEnableOCSPStapling
\sa wolfSSL_CertManagerEnableOCSP
*/
void EmbedOcspRespFree(void* ctx, byte* resp);
/*!
\brief WolfSSLはシステムのTCP RECV使EmbedReceive使src / io.cの埋め込みReceiveIO_ERR_WANT_READを非ブロック受信用に返す必要があります
\return none
\param ctx wolfssl_ctx_newSSLコンテキストへのポインタ
_Example_
\code
WOLFSSL_CTX* ctx = 0;
// Receive callback prototype
int MyEmbedReceive(WOLFSSL* ssl, char* buf, int sz, void* ctx);
// Register the custom receive callback with wolfSSL
wolfSSL_CTX_SetIORecv(ctx, MyEmbedReceive);
int MyEmbedReceive(WOLFSSL* ssl, char* buf, int sz, void* ctx)
{
// custom EmbedReceive function
}
\endcode
\sa wolfSSL_CTX_SetIOSend
\sa wolfSSL_SetIOReadCtx
\sa wolfSSL_SetIOWriteCtx
*/
void wolfSSL_CTX_SetIORecv(WOLFSSL_CTX* ctx, CallbackIORecv CBIORecv);
/*!
\brief WolfSSLはWolfSSLがシステムのTCPライブラリを使用している場合wolfssl_set_fd使
\return none
\param ssl wolfssl_newSSLセッションへのポインタ
_Example_
\code
int sockfd;
WOLFSSL* ssl = 0;
...
// Manually setting the socket fd as the receive CTX, for example
wolfSSL_SetIOReadCtx(ssl, &sockfd);
...
\endcode
\sa wolfSSL_CTX_SetIORecv
\sa wolfSSL_CTX_SetIOSend
\sa wolfSSL_SetIOWriteCtx
*/
void wolfSSL_SetIOReadCtx( WOLFSSL* ssl, void *ctx);
/*!
\brief WolfSSLはWolfSSLがシステムのTCPライブラリを使用している場合wolfssl_set_fd使
\return none
\param ssl wolfssl_newSSLセッションへのポインタ
_Example_
\code
int sockfd;
WOLFSSL* ssl = 0;
...
// Manually setting the socket fd as the send CTX, for example
wolfSSL_SetIOWriteCtx(ssl, &sockfd);
...
\endcode
\sa wolfSSL_CTX_SetIORecv
\sa wolfSSL_CTX_SetIOSend
\sa wolfSSL_SetIOReadCtx
*/
void wolfSSL_SetIOWriteCtx(WOLFSSL* ssl, void *ctx);
/*!
\ingroup IO
\brief WolfSSL構造体のIOCB_READCTXメンバーを返します
\return pointer wolfssl構造体のiocb_readctxメンバーへのvoidポインタを返します
\return NULL wolfssl構造体がNULLの場合に返されます
_Example_
\code
WOLFSSL* ssl = wolfSSL_new(ctx);
void* ioRead;
...
ioRead = wolfSSL_GetIOReadCtx(ssl);
if(ioRead == NULL){
// Failure case. The ssl object was NULL.
}
\endcode
\sa wolfSSL_GetIOWriteCtx
\sa wolfSSL_SetIOReadFlags
\sa wolfSSL_SetIOWriteCtx
\sa wolfSSL_SetIOReadCtx
\sa wolfSSL_CTX_SetIOSend
*/
void* wolfSSL_GetIOReadCtx( WOLFSSL* ssl);
/*!
\ingroup IO
\brief WolfSSL構造のIOCB_WRITECTXメンバーを返します
\return pointer WolfSSL構造のIOCB_WRITECTXメンバーへのvoidポインタを返します
\return NULL wolfssl構造体がNULLの場合に返されます
_Example_
\code
WOLFSSL* ssl;
void* ioWrite;
...
ioWrite = wolfSSL_GetIOWriteCtx(ssl);
if(ioWrite == NULL){
// The function returned NULL.
}
\endcode
\sa wolfSSL_GetIOReadCtx
\sa wolfSSL_SetIOWriteCtx
\sa wolfSSL_SetIOReadCtx
\sa wolfSSL_CTX_SetIOSend
*/
void* wolfSSL_GetIOWriteCtx(WOLFSSL* ssl);
/*!
\brief SSLセッション受信コールバックはwolfssl埋め込み受信コールバックwolfssl_ctx_setiorecvを参照WolfSSLによってwolfsslによって0の値に設定されますWolfSSL受信コールバックはRECV使 RecvRecvflags引数は1OR処理するかMSG_OOBプロセス帯域外データMSG_PEEK PEEKMSG_PEEK PEEKMSG_WAITALLがフルを待っています要求またはエラー MSG_OOBフラグは使 MSG_PEEKフラグは MSG_WAITALLフラグは
\return none
\param ssl wolfssl_newSSLセッションへのポインタ
_Example_
\code
WOLFSSL* ssl = 0;
...
// Manually setting recv flags to 0
wolfSSL_SetIOReadFlags(ssl, 0);
...
\endcode
\sa wolfSSL_CTX_SetIORecv
\sa wolfSSL_CTX_SetIOSend
\sa wolfSSL_SetIOReadCtx
*/
void wolfSSL_SetIOReadFlags( WOLFSSL* ssl, int flags);
/*!
\brief SSLセッションを考えると送信コールバックはWolfSSL EmbedEndコールバックWolfSSL_CTX_SetiosEndを参照wolfsslによって0の値に設定されますWolfSSL Send Callbackはsend使sendmanページから "flagsパラメータには、次のうち1つ以上が含まれていてもよい。フラグMSG_OOBは、この概念例えばSOCK_STREAMをサポートするソケットに「帯域外」データを送信するために使用される。基礎となるプロトコルは、「帯域外」のデータもサポートする必要があります。MSG_DONTROUTEは通常、診断プログラムまたはルーティングプログラムによってのみ使用されます。」
\return none
\param ssl wolfssl_newSSLセッションへのポインタ
_Example_
\code
WOLFSSL* ssl = 0;
...
// Manually setting send flags to 0
wolfSSL_SetIOWriteFlags(ssl, 0);
...
\endcode
\sa wolfSSL_CTX_SetIORecv
\sa wolfSSL_CTX_SetIOSend
\sa wolfSSL_SetIOReadCtx
*/
void wolfSSL_SetIOWriteFlags(WOLFSSL* ssl, int flags);
/*!
\ingroup IO
\brief wolfssl構造内のnxctx構造体のNxSocketメンバーとNXWAITメンバーを設定します
\return none
\param ssl wolfssl_new使WolfSSL構造へのポインタ
\param nxSocket NXCTX構造のNXSOCTOCKメンバーに設定されているNX_TCP_SOCKETを入力するためのポインタ
_Example_
\code
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 {
// You need to pass in good parameters.
}
\endcode
\sa set_fd
\sa NetX_Send
\sa NetX_Receive
*/
void wolfSSL_SetIO_NetX(WOLFSSL* ssl, NX_TCP_SOCKET* nxsocket,
ULONG waitoption);
/*!
\brief wolfssl_ctx構造CallBackGencookie Typeは関数ポインタでint* callbackgencookiewolfssl * sslunsigned char * bufint szvoid * ctx
\return none
\param ssl wolfssl_new使WolfSSL構造へのポインタ
_Example_
\code
WOLFSSL_CTX* ctx = wolfSSL_CTX_new( method );
WOLFSSL* ssl = wolfSSL_new(ctx);
int SetGenCookieCB(WOLFSSL* ssl, unsigned char* buf, int sz, void* ctx){
// Callback function body.
}
wolfSSL_CTX_SetGenCookie(ssl->ctx, SetGenCookieCB);
\endcode
\sa CallbackGenCookie
*/
void wolfSSL_CTX_SetGenCookie(WOLFSSL_CTX* ctx, CallbackGenCookie cb);
/*!
\ingroup Setup
\brief WolfSSL構造のIOCB_COOKIECTXメンバーを返します
\return pointer iocb_cookiectxに格納されているvoidポインタ値を返します
\return NULL WolfSSL構造体がNULLの場合
_Example_
\code
WOLFSSL_CTX* ctx = wolfSSL_CTX_new( method );
WOLFSSL* ssl = wolfSSL_new(ctx);
void* cookie;
...
cookie = wolfSSL_GetCookieCtx(ssl);
if(cookie != NULL){
// You have the cookie
}
\endcode
\sa wolfSSL_SetCookieCtx
\sa wolfSSL_CTX_SetGenCookie
*/
void* wolfSSL_GetCookieCtx(WOLFSSL* ssl);
/*!
\ingroup Setup
\brief WolfSSLがWolfSSL_ISOTPでコンパイルされている場合に使用する場合はWolfSSLの場合はISO-TPコンテキストを設定します
\return 0 wolfssl_cbio_err_general
\param ssl wolfsslコンテキスト
\param ctx ISOTPコンテキストを作成しました
\param recv_fn
\param send_fn
\param delay_fn
\param receive_delay CANバスパケットを遅らせるためのマイクロ秒のセット数
\param receive_buffer ISOTP_DEFAULT_BUFFER_SIZEバイトに割り当てられていることをお勧めします
\param receive_buffer_size - receive_bufferのサイズ
_Example_
\code
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);
\endcode
*/
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);