Data Structures | Typedefs | Functions | Variables
wolfio.h File Reference

Go to the source code of this file.

Data Structures

struct  uip_wolfssl_ctx
 
union  uip_wolfssl_ctx::socket_connector
 

Typedefs

typedef unsigned int SOCKET_T
 
typedef struct sockaddr SOCKADDR
 
typedef struct sockaddr_storage SOCKADDR_S
 
typedef struct sockaddr_in SOCKADDR_IN
 
typedef struct sockaddr_in6 SOCKADDR_IN6
 
typedef struct hostent HOSTENT
 
typedef struct addrinfo ADDRINFO
 
typedef int(* CallbackIORecv) (WOLFSSL *ssl, char *buf, int sz, void *ctx)
 
typedef int(* CallbackIOSend) (WOLFSSL *ssl, char *buf, int sz, void *ctx)
 
typedef struct uip_wolfssl_ctx uip_wolfssl_ctx
 
typedef int(* CallbackGenCookie) (WOLFSSL *ssl, unsigned char *buf, int sz, void *ctx)
 
typedef int(* CallbackGetPeer) (WOLFSSL *ssl, char *ip, int *ipSz, unsigned short *port, int *fam)
 
typedef int(* CallbackSetPeer) (WOLFSSL *ssl, char *ip, int ipSz, unsigned short port, int fam)
 

Functions

int net_recv (int, void *, int, unsigned int)
 
WOLFSSL_API int wolfIO_SetBlockingMode (SOCKET_T sockfd, int non_blocking)
 
WOLFSSL_API void wolfIO_SetTimeout (int to_sec)
 
WOLFSSL_API int wolfIO_Select (SOCKET_T sockfd, int to_sec)
 
WOLFSSL_API int wolfIO_TcpConnect (SOCKET_T *sockfd, const char *ip, unsigned short port, int to_sec)
 
WOLFSSL_API int wolfIO_Send (SOCKET_T sd, char *buf, int sz, int wrFlags)
 
WOLFSSL_API int wolfIO_Recv (SOCKET_T sd, char *buf, int sz, int rdFlags)
 
int closesocket (int)
 
int close (int)
 
WOLFSSL_API int BioSend (WOLFSSL *ssl, char *buf, int sz, void *ctx)
 
WOLFSSL_API int BioReceive (WOLFSSL *ssl, char *buf, int sz, void *ctx)
 
WOLFSSL_API int EmbedReceive (WOLFSSL *ssl, char *buf, int sz, void *ctx)
 This function is the receive embedded callback. More...
 
WOLFSSL_API int EmbedSend (WOLFSSL *ssl, char *buf, int sz, void *ctx)
 This function is the send embedded callback. More...
 
WOLFSSL_API int EmbedReceiveFrom (WOLFSSL *ssl, char *buf, int sz, void *)
 This function is the receive embedded callback. More...
 
WOLFSSL_API int EmbedSendTo (WOLFSSL *ssl, char *buf, int sz, void *ctx)
 This function is the send embedded callback. More...
 
WOLFSSL_API int EmbedGenerateCookie (WOLFSSL *ssl, unsigned char *buf, int sz, void *)
 This function is the DTLS Generate Cookie callback. More...
 
WOLFSSL_API int EmbedReceiveFromMcast (WOLFSSL *ssl, char *buf, int sz, void *)
 
WOLFSSL_API int EmbedGetPeer (WOLFSSL *ssl, char *ip, int *ipSz, unsigned short *port, int *fam)
 
WOLFSSL_API int EmbedSetPeer (WOLFSSL *ssl, char *ip, int ipSz, unsigned short port, int fam)
 
WOLFSSL_API int wolfIO_HttpBuildRequestOcsp (const char *domainName, const char *path, int ocspReqSz, unsigned char *buf, int bufSize)
 
WOLFSSL_API int wolfIO_HttpProcessResponseOcsp (int sfd, unsigned char **respBuf, unsigned char *httpBuf, int httpBufSz, void *heap)
 
WOLFSSL_API int EmbedOcspLookup (void *, const char *, int, unsigned char *, int, unsigned char **)
 
WOLFSSL_API void EmbedOcspRespFree (void *, unsigned char *)
 This function frees the response buffer. More...
 
WOLFSSL_API int wolfIO_HttpBuildRequestCrl (const char *url, int urlSz, const char *domainName, unsigned char *buf, int bufSize)
 
WOLFSSL_API int wolfIO_HttpProcessResponseCrl (WOLFSSL_CRL *crl, int sfd, unsigned char *httpBuf, int httpBufSz)
 
WOLFSSL_API int EmbedCrlLookup (WOLFSSL_CRL *crl, const char *url, int urlSz)
 
WOLFSSL_API int wolfIO_DecodeUrl (const char *url, int urlSz, char *outName, char *outPath, unsigned short *outPort)
 
WOLFSSL_API int wolfIO_HttpBuildRequest (const char *reqType, const char *domainName, const char *path, int pathLen, int reqSz, const char *contentType, unsigned char *buf, int bufSize)
 
WOLFSSL_LOCAL int wolfIO_HttpBuildRequest_ex (const char *reqType, const char *domainName, const char *path, int pathLen, int reqSz, const char *contentType, const char *exHdrs, unsigned char *buf, int bufSize)
 
WOLFSSL_API int wolfIO_HttpProcessResponse (int sfd, const char **appStrList, unsigned char **respBuf, unsigned char *httpBuf, int httpBufSz, int dynType, void *heap)
 
WOLFSSL_API void wolfSSL_CTX_SetIORecv (WOLFSSL_CTX *, CallbackIORecv)
 This function registers a receive callback for wolfSSL to get input data. By default, wolfSSL uses EmbedReceive() as the callback which uses the system’s TCP recv() function. The user can register a function to get input from memory, some other network module, or from anywhere. Please see the EmbedReceive() function in src/io.c as a guide for how the function should work and for error codes. In particular, IO_ERR_WANT_READ should be returned for non blocking receive when no data is ready. More...
 
WOLFSSL_API void wolfSSL_CTX_SetIOSend (WOLFSSL_CTX *, CallbackIOSend)
 
WOLFSSL_API void wolfSSL_SetIOReadCtx (WOLFSSL *ssl, void *ctx)
 This function registers a context for the SSL session’s receive callback function. By default, wolfSSL sets the file descriptor passed to wolfSSL_set_fd() as the context when wolfSSL is using the system’s TCP library. If you’ve registered your own receive callback you may want to set a specific context for the session. For example, if you’re using memory buffers the context may be a pointer to a structure describing where and how to access the memory buffers. More...
 
WOLFSSL_API void wolfSSL_SetIOWriteCtx (WOLFSSL *ssl, void *ctx)
 This function registers a context for the SSL session’s send callback function. By default, wolfSSL sets the file descriptor passed to wolfSSL_set_fd() as the context when wolfSSL is using the system’s TCP library. If you’ve registered your own send callback you may want to set a specific context for the session. For example, if you’re using memory buffers the context may be a pointer to a structure describing where and how to access the memory buffers. More...
 
WOLFSSL_API void * wolfSSL_GetIOReadCtx (WOLFSSL *ssl)
 This function returns the IOCB_ReadCtx member of the WOLFSSL struct. More...
 
WOLFSSL_API void * wolfSSL_GetIOWriteCtx (WOLFSSL *ssl)
 This function returns the IOCB_WriteCtx member of the WOLFSSL structure. More...
 
WOLFSSL_API void wolfSSL_SetIOReadFlags (WOLFSSL *ssl, int flags)
 This function sets the flags for the receive callback to use for the given SSL session. The receive callback could be either the default wolfSSL EmbedReceive callback, or a custom callback specified by the user (see wolfSSL_CTX_SetIORecv). The default flag value is set internally by wolfSSL to the value of 0. The default wolfSSL receive callback uses the recv() function to receive data from the socket. From the recv() man page: “The flags argument to a recv() function is formed by or'ing one or more of the values: MSG_OOB process out-of-band data, MSG_PEEK peek at incoming message, MSG_WAITALL wait for full request or error. The MSG_OOB flag requests receipt of out-of-band data that would not be received in the normal data stream. Some protocols place expedited data at the head of the normal data queue, and thus this flag cannot be used with such protocols. The MSG_PEEK flag causes the receive operation to return data from the beginning of the receive queue without removing that data from the queue. Thus, a subsequent receive call will return the same data. The MSG_WAITALL flag requests that the operation block until the full request is satisfied. However, the call may still return less data than requested if a signal is caught, an error or disconnect occurs, or the next data to be received is of a different type than that returned.” More...
 
WOLFSSL_API void wolfSSL_SetIOWriteFlags (WOLFSSL *ssl, int flags)
 This function sets the flags for the send callback to use for the given SSL session. The send callback could be either the default wolfSSL EmbedSend callback, or a custom callback specified by the user (see wolfSSL_CTX_SetIOSend). The default flag value is set internally by wolfSSL to the value of 0. The default wolfSSL send callback uses the send() function to send data from the socket. From the send() man page: “The flags parameter may include one or more of the following: #define MSG_OOB 0x1 // process out-of-band data, #define MSG_DONTROUTE 0x4 // bypass routing, use direct interface. The flag MSG_OOB is used to send `‘out-of-band’' data on sockets that support this notion (e.g. SOCK_STREAM); the underlying protocol must also support `‘out-of-band’' data. MSG_DONTROUTE is usually used only by diagnostic or routing programs.” More...
 
WOLFSSL_LOCAL int NetX_Receive (WOLFSSL *ssl, char *buf, int sz, void *ctx)
 
WOLFSSL_LOCAL int NetX_Send (WOLFSSL *ssl, char *buf, int sz, void *ctx)
 
WOLFSSL_API void wolfSSL_SetIO_NetX (WOLFSSL *ssl, NX_TCP_SOCKET *nxsocket, ULONG waitoption)
 This function sets the nxSocket and nxWait members of the nxCtx struct within the WOLFSSL structure. More...
 
WOLFSSL_LOCAL int MicriumSend (WOLFSSL *ssl, char *buf, int sz, void *ctx)
 
WOLFSSL_LOCAL int MicriumReceive (WOLFSSL *ssl, char *buf, int sz, void *ctx)
 
WOLFSSL_LOCAL int MicriumReceiveFrom (WOLFSSL *ssl, char *buf, int sz, void *ctx)
 
WOLFSSL_LOCAL int MicriumSendTo (WOLFSSL *ssl, char *buf, int sz, void *ctx)
 
WOLFSSL_LOCAL int Mynewt_Receive (WOLFSSL *ssl, char *buf, int sz, void *ctx)
 
WOLFSSL_LOCAL int Mynewt_Send (WOLFSSL *ssl, char *buf, int sz, void *ctx)
 
WOLFSSL_API void wolfSSL_SetIO_Mynewt (WOLFSSL *ssl, struct mn_socket *mnSocket, struct mn_sockaddr_in *mnSockAddrIn)
 
WOLFSSL_LOCAL int uIPSend (WOLFSSL *ssl, char *buf, int sz, void *ctx)
 
WOLFSSL_LOCAL int uIPReceive (WOLFSSL *ssl, char *buf, int sz, void *ctx)
 
WOLFSSL_LOCAL int uIPReceiveFrom (WOLFSSL *ssl, char *buf, int sz, void *ctx)
 
WOLFSSL_LOCAL int uIPSendTo (WOLFSSL *ssl, char *buf, int sz, void *ctx)
 
WOLFSSL_API void wolfSSL_CTX_SetGenCookie (WOLFSSL_CTX *, CallbackGenCookie)
 This function sets the callback for the CBIOCookie member of the WOLFSSL_CTX structure. The CallbackGenCookie type is a function pointer and has the signature: int (CallbackGenCookie)(WOLFSSL ssl, unsigned char* buf, int sz, void* ctx);. More...
 
WOLFSSL_API void wolfSSL_SetCookieCtx (WOLFSSL *ssl, void *ctx)
 
WOLFSSL_API void * wolfSSL_GetCookieCtx (WOLFSSL *ssl)
 This function returns the IOCB_CookieCtx member of the WOLFSSL structure. More...
 
WOLFSSL_API void wolfSSL_CTX_SetIOGetPeer (WOLFSSL_CTX *, CallbackGetPeer)
 
WOLFSSL_API void wolfSSL_CTX_SetIOSetPeer (WOLFSSL_CTX *, CallbackSetPeer)
 

Variables

 C
 

Function Documentation

◆ EmbedGenerateCookie()

WOLFSSL_API int EmbedGenerateCookie ( WOLFSSL ssl,
unsigned char *  buf,
int  sz,
void *   
)

This function is the DTLS Generate Cookie callback.

Returns
Success This function returns the number of bytes copied into the buffer.
GEN_COOKIE_E returned if the getpeername failed in EmbedGenerateCookie.
Parameters
ssla pointer to a WOLFSSL structure, created using wolfSSL_new().
bufbyte pointer representing the buffer. It is the destination from XMEMCPY().
szthe size of the buffer.
ctxa void pointer to user registered context.

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 code block for success
}
See also
wc_ShaHash
EmbedGenerateCookie
XMEMCPY
XMEMSET

◆ EmbedOcspRespFree()

WOLFSSL_API void EmbedOcspRespFree ( void *  ,
unsigned char *   
)

This function frees the response buffer.

Returns
none No returns.
Parameters
ctxa void pointer to heap hint.
respa byte pointer representing the response.

Example

void* ctx;
byte* resp; // Response buffer.
EmbedOcspRespFree(ctx, resp);
See also
XFREE

◆ EmbedReceive()

WOLFSSL_API int EmbedReceive ( WOLFSSL ssl,
char *  buf,
int  sz,
void *  ctx 
)

This function is the receive embedded callback.

Returns
Success This function returns the number of bytes read.
WOLFSSL_CBIO_ERR_WANT_READ returned with a “Would block” message if the last error was SOCKET_EWOULDBLCOK or SOCKET_EAGAIN.
WOLFSSL_CBIO_ERR_TIMEOUT returned with a “Socket timeout” message.
WOLFSSL_CBIO_ERR_CONN_RST returned with a “Connection reset” message if the last error was SOCKET_ECONNRESET.
WOLFSSL_CBIO_ERR_ISR returned with a “Socket interrupted” message if the last error was SOCKET_EINTR.
WOLFSSL_CBIO_ERR_WANT_READ returned with a “Connection refused” messag if the last error was SOCKET_ECONNREFUSED.
WOLFSSL_CBIO_ERR_CONN_CLOSE returned with a “Connection aborted” message if the last error was SOCKET_ECONNABORTED.
WOLFSSL_CBIO_ERR_GENERAL returned with a “General error” message if the last error was not specified.
Parameters
ssla pointer to a WOLFSSL structure, created using wolfSSL_new().
bufa char pointer representation of the buffer.
szthe size of the buffer.
ctxa void pointer to user registered context. In the default case the ctx is a socket descriptor pointer.

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){
// There were no bytes read. Failure case.
}
See also
wolfSSL_dtls_get_current_timeout
TranslateReturnCode
RECV_FUNCTION

◆ EmbedReceiveFrom()

WOLFSSL_API int EmbedReceiveFrom ( WOLFSSL ssl,
char *  buf,
int  sz,
void *   
)

This function is the receive embedded callback.

Returns
Success This function returns the nb bytes read if the execution was successful.
WOLFSSL_CBIO_ERR_WANT_READ if the connection refused or if a ‘would block’ error was thrown in the function.
WOLFSSL_CBIO_ERR_TIMEOUT returned if the socket timed out.
WOLFSSL_CBIO_ERR_CONN_RST returned if the connection reset.
WOLFSSL_CBIO_ERR_ISR returned if the socket was interrupted.
WOLFSSL_CBIO_ERR_GENERAL returned if there was a general error.
Parameters
ssla pointer to a WOLFSSL structure, created using wolfSSL_new().
bufa constant char pointer to the buffer.
szan int type representing the size of the buffer.
ctxa void pointer to the WOLFSSL_CTX context.

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 is the number of bytes written and is positive
}
See also
TranslateReturnCode
RECVFROM_FUNCTION
Setsockopt

◆ EmbedSend()

WOLFSSL_API int EmbedSend ( WOLFSSL ssl,
char *  buf,
int  sz,
void *  ctx 
)

This function is the send embedded callback.

Returns
Success This function returns the number of bytes sent.
WOLFSSL_CBIO_ERR_WANT_WRITE returned with a “Would block” message if the last error was SOCKET_EWOULDBLOCK or SOCKET_EAGAIN.
WOLFSSL_CBIO_ERR_CONN_RST returned with a “Connection reset” message if the last error was SOCKET_ECONNRESET.
WOLFSSL_CBIO_ERR_ISR returned with a “Socket interrupted” message if the last error was SOCKET_EINTR.
WOLFSSL_CBIO_ERR_CONN_CLOSE returned with a “Socket EPIPE” message if the last error was SOCKET_EPIPE.
WOLFSSL_CBIO_ERR_GENERAL returned with a “General error” message if the last error was not specified.
Parameters
ssla pointer to a WOLFSSL structure, created using wolfSSL_new().
bufa char pointer representing the buffer.
szthe size of the buffer.
ctxa void pointer to user registered context.

Example

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.
}
See also
TranslateReturnCode
SEND_FUNCTION
LastError
InitSSL_Ctx
LastError

◆ EmbedSendTo()

WOLFSSL_API int EmbedSendTo ( WOLFSSL ssl,
char *  buf,
int  sz,
void *  ctx 
)

This function is the send embedded callback.

Returns
Success This function returns the number of bytes sent.
WOLFSSL_CBIO_ERR_WANT_WRITE returned with a “Would Block” message if the last error was either SOCKET_EWOULDBLOCK or SOCKET_EAGAIN error.
WOLFSSL_CBIO_ERR_CONN_RST returned with a “Connection reset” message if the last error was SOCKET_ECONNRESET.
WOLFSSL_CBIO_ERR_ISR returned with a “Socket interrupted” message if the last error was SOCKET_EINTR.
WOLFSSL_CBIO_ERR_CONN_CLOSE returned with a “Socket EPIPE” message if the last error was WOLFSSL_CBIO_ERR_CONN_CLOSE.
WOLFSSL_CBIO_ERR_GENERAL returned with a “General error” message if the last error was not specified.
Parameters
ssla pointer to a WOLFSSL structure, created using wolfSSL_new().
bufa char pointer representing the buffer.
szthe size of the buffer.
ctxa void pointer to the user registered context. The default case is a WOLFSSL_DTLS_CTX structure.

Example

WOLFSSL* ssl;
char* buf;
int sz;
void* ctx;
int sEmbed = EmbedSendto(ssl, buf, sz, ctx);
if(sEmbed <= 0){
// No bytes sent. Failure case.
}
See also
LastError
EmbedSend
EmbedReceive

◆ wolfSSL_CTX_SetGenCookie()

WOLFSSL_API void wolfSSL_CTX_SetGenCookie ( WOLFSSL_CTX ,
CallbackGenCookie   
)

This function sets the callback for the CBIOCookie member of the WOLFSSL_CTX structure. The CallbackGenCookie type is a function pointer and has the signature: int (CallbackGenCookie)(WOLFSSL ssl, unsigned char* buf, int sz, void* ctx);.

Returns
none No returns.
Parameters
ssla pointer to a WOLFSSL structure, created using wolfSSL_new().
cba CallbackGenCookie type function pointer with the signature of CallbackGenCookie.

Example

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);
See also
CallbackGenCookie

◆ wolfSSL_CTX_SetIORecv()

WOLFSSL_API void wolfSSL_CTX_SetIORecv ( WOLFSSL_CTX ,
CallbackIORecv   
)

This function registers a receive callback for wolfSSL to get input data. By default, wolfSSL uses EmbedReceive() as the callback which uses the system’s TCP recv() function. The user can register a function to get input from memory, some other network module, or from anywhere. Please see the EmbedReceive() function in src/io.c as a guide for how the function should work and for error codes. In particular, IO_ERR_WANT_READ should be returned for non blocking receive when no data is ready.

Returns
none no Returns.
Parameters
ctxpointer to the SSL context, created with wolfSSL_CTX_new().
callbackfunction to be registered as the receive callback for the wolfSSL context, ctx. The signature of this function must follow that as shown above in the Synopsis section.

Example

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
}
See also
wolfSSL_CTX_SetIOSend
wolfSSL_SetIOReadCtx
wolfSSL_SetIOWriteCtx

◆ wolfSSL_SetIOReadCtx()

WOLFSSL_API void wolfSSL_SetIOReadCtx ( WOLFSSL ssl,
void *  ctx 
)

This function registers a context for the SSL session’s receive callback function. By default, wolfSSL sets the file descriptor passed to wolfSSL_set_fd() as the context when wolfSSL is using the system’s TCP library. If you’ve registered your own receive callback you may want to set a specific context for the session. For example, if you’re using memory buffers the context may be a pointer to a structure describing where and how to access the memory buffers.

Returns
none No returns.
Parameters
sslpointer to the SSL session, created with wolfSSL_new().
rctxpointer to the context to be registered with the SSL session’s (ssl) receive callback function.

Example

int sockfd;
WOLFSSL* ssl = 0;
...
// Manually setting the socket fd as the receive CTX, for example
wolfSSL_SetIOReadCtx(ssl, &sockfd);
...
See also
wolfSSL_CTX_SetIORecv
wolfSSL_CTX_SetIOSend
wolfSSL_SetIOWriteCtx

◆ wolfSSL_SetIOReadFlags()

WOLFSSL_API void wolfSSL_SetIOReadFlags ( WOLFSSL ssl,
int  flags 
)

This function sets the flags for the receive callback to use for the given SSL session. The receive callback could be either the default wolfSSL EmbedReceive callback, or a custom callback specified by the user (see wolfSSL_CTX_SetIORecv). The default flag value is set internally by wolfSSL to the value of 0. The default wolfSSL receive callback uses the recv() function to receive data from the socket. From the recv() man page: “The flags argument to a recv() function is formed by or'ing one or more of the values: MSG_OOB process out-of-band data, MSG_PEEK peek at incoming message, MSG_WAITALL wait for full request or error. The MSG_OOB flag requests receipt of out-of-band data that would not be received in the normal data stream. Some protocols place expedited data at the head of the normal data queue, and thus this flag cannot be used with such protocols. The MSG_PEEK flag causes the receive operation to return data from the beginning of the receive queue without removing that data from the queue. Thus, a subsequent receive call will return the same data. The MSG_WAITALL flag requests that the operation block until the full request is satisfied. However, the call may still return less data than requested if a signal is caught, an error or disconnect occurs, or the next data to be received is of a different type than that returned.”

Returns
none No returns.
Parameters
sslpointer to the SSL session, created with wolfSSL_new().
flagsvalue of the I/O read flags for the specified SSL session (ssl).

Example

WOLFSSL* ssl = 0;
...
// Manually setting recv flags to 0
wolfSSL_SetIOReadFlags(ssl, 0);
...
See also
wolfSSL_CTX_SetIORecv
wolfSSL_CTX_SetIOSend
wolfSSL_SetIOReadCtx

◆ wolfSSL_SetIOWriteCtx()

WOLFSSL_API void wolfSSL_SetIOWriteCtx ( WOLFSSL ssl,
void *  ctx 
)

This function registers a context for the SSL session’s send callback function. By default, wolfSSL sets the file descriptor passed to wolfSSL_set_fd() as the context when wolfSSL is using the system’s TCP library. If you’ve registered your own send callback you may want to set a specific context for the session. For example, if you’re using memory buffers the context may be a pointer to a structure describing where and how to access the memory buffers.

Returns
none No returns.
Parameters
sslpointer to the SSL session, created with wolfSSL_new().
wctxpointer to the context to be registered with the SSL session’s (ssl) send callback function.

Example

int sockfd;
WOLFSSL* ssl = 0;
...
// Manually setting the socket fd as the send CTX, for example
wolfSSL_SetIOWriteCtx(ssl, &sockfd);
...
See also
wolfSSL_CTX_SetIORecv
wolfSSL_CTX_SetIOSend
wolfSSL_SetIOReadCtx

◆ wolfSSL_SetIOWriteFlags()

WOLFSSL_API void wolfSSL_SetIOWriteFlags ( WOLFSSL ssl,
int  flags 
)

This function sets the flags for the send callback to use for the given SSL session. The send callback could be either the default wolfSSL EmbedSend callback, or a custom callback specified by the user (see wolfSSL_CTX_SetIOSend). The default flag value is set internally by wolfSSL to the value of 0. The default wolfSSL send callback uses the send() function to send data from the socket. From the send() man page: “The flags parameter may include one or more of the following: #define MSG_OOB 0x1 // process out-of-band data, #define MSG_DONTROUTE 0x4 // bypass routing, use direct interface. The flag MSG_OOB is used to send `‘out-of-band’' data on sockets that support this notion (e.g. SOCK_STREAM); the underlying protocol must also support `‘out-of-band’' data. MSG_DONTROUTE is usually used only by diagnostic or routing programs.”

Returns
none No returns.
Parameters
sslpointer to the SSL session, created with wolfSSL_new().
flagsvalue of the I/O send flags for the specified SSL session (ssl).

Example

WOLFSSL* ssl = 0;
...
// Manually setting send flags to 0
wolfSSL_SetIOWriteFlags(ssl, 0);
...
See also
wolfSSL_CTX_SetIORecv
wolfSSL_CTX_SetIOSend
wolfSSL_SetIOReadCtx