Skip to content

wolfio.h

Functions

Name
int EmbedReceive(WOLFSSL * ssl, char * buf, int sz, void * ctx)
This function is the receive embedded callback.
int EmbedSend(WOLFSSL * ssl, char * buf, int sz, void * ctx)
This function is the send embedded callback.
int EmbedReceiveFrom(WOLFSSL * ssl, char * buf, int sz, void * ctx)
This function is the receive embedded callback.
int EmbedSendTo(WOLFSSL * ssl, char * buf, int sz, void * ctx)
This function is the send embedded callback.
int EmbedGenerateCookie(WOLFSSL * ssl, byte * buf, int sz, void * ctx)
This function is the DTLS Generate Cookie callback.
void EmbedOcspRespFree(void * ctx, byte * resp)
This function frees the response buffer.
void wolfSSL_CTX_SetIORecv(WOLFSSL_CTX * ctx, CallbackIORecv CBIORecv)
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.
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.
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.
void * wolfSSL_GetIOReadCtx(WOLFSSL * ssl)
This function returns the IOCB_ReadCtx member of the WOLFSSL struct.
void * wolfSSL_GetIOWriteCtx(WOLFSSL * ssl)
This function returns the IOCB_WriteCtx member of the WOLFSSL structure.
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.”
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.”
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.
void wolfSSL_CTX_SetGenCookie(WOLFSSL_CTX * ctx, CallbackGenCookie cb)
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);.
void * wolfSSL_GetCookieCtx(WOLFSSL * ssl)
This function returns the IOCB_CookieCtx member of the WOLFSSL structure.
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)
This function sets up the ISO-TP context if wolfSSL, for use when wolfSSL is compiled with WOLFSSL_ISOTP.
void wolfSSL_SSLDisableRead(WOLFSSL * ssl)
This function disables reading from the IO layer.
void wolfSSL_SSLEnableRead(WOLFSSL * ssl)
This function enables reading from the IO layer. Reading is enabled by default and should be used to undo wolfSSL_SSLDisableRead();.
WOLFSSL_API void wolfSSL_SetRecvFrom(WOLFSSL * ssl, WolfSSLRecvFrom recvFrom)
Set a custom DTLS recvfrom callback for a WOLFSSL session.
WOLFSSL_API void wolfSSL_SetSendTo(WOLFSSL * ssl, WolfSSLSento sendTo)
Set a custom DTLS sendto callback for a WOLFSSL session.
int wolfIO_Select(SOCKET_T sockfd, int to_sec)
Waits for socket to be ready for I/O with timeout.
int wolfIO_TcpConnect(SOCKET_T * sockfd, const char * ip, unsigned short port, int to_sec)
Connects to TCP server with timeout.
int wolfIO_TcpAccept(SOCKET_T sockfd, SOCKADDR * peer_addr, XSOCKLENT * peer_len)
Accepts TCP connection.
int wolfIO_TcpBind(SOCKET_T * sockfd, word16 port)
Binds TCP socket to port.
int wolfIO_Send(SOCKET_T sd, char * buf, int sz, int wrFlags)
Sends data on socket.
int wolfIO_Recv(SOCKET_T sd, char * buf, int sz, int rdFlags)
Receives data from socket.
int wolfIO_SendTo(SOCKET_T sd, WOLFSSL_BIO_ADDR * addr, char * buf, int sz, int wrFlags)
Sends datagram to address.
int wolfIO_RecvFrom(SOCKET_T sd, WOLFSSL_BIO_ADDR * addr, char * buf, int sz, int rdFlags)
Receives datagram from address.
int wolfSSL_BioSend(WOLFSSL * ssl, char * buf, int sz, void * ctx)
BIO send callback.
int wolfSSL_BioReceive(WOLFSSL * ssl, char * buf, int sz, void * ctx)
BIO receive callback.
int EmbedReceiveFromMcast(WOLFSSL * ssl, char * buf, int sz, void * ctx)
Receives multicast datagram.
int wolfIO_HttpBuildRequestOcsp(const char * domainName, const char * path, int ocspReqSz, unsigned char * buf, int bufSize)
Builds HTTP OCSP request.
int wolfIO_HttpProcessResponseOcspGenericIO(WolfSSLGenericIORecvCb ioCb, void * ioCbCtx, unsigned char ** respBuf, unsigned char * httpBuf, int httpBufSz, void * heap)
Processes HTTP OCSP response with generic I/O.
int wolfIO_HttpProcessResponseOcsp(int sfd, unsigned char ** respBuf, unsigned char * httpBuf, int httpBufSz, void * heap)
Processes HTTP OCSP response.
int EmbedOcspLookup(void * ctx, const char * url, int urlSz, byte * ocspReqBuf, int ocspReqSz, byte ** ocspRespBuf)
OCSP lookup callback.
int wolfIO_HttpBuildRequestCrl(const char * url, int urlSz, const char * domainName, unsigned char * buf, int bufSize)
Builds HTTP CRL request.
int wolfIO_HttpProcessResponseCrl(WOLFSSL_CRL * crl, int sfd, unsigned char * httpBuf, int httpBufSz)
Processes HTTP CRL response.
int EmbedCrlLookup(WOLFSSL_CRL * crl, const char * url, int urlSz)
CRL lookup callback.
int wolfIO_DecodeUrl(const char * url, int urlSz, char * outName, char * outPath, unsigned short * outPort)
Decodes URL into components.
int wolfIO_HttpBuildRequest(const char * reqType, const char * domainName, const char * path, int pathLen, int reqSz, const char * contentType, unsigned char * buf, int bufSize)
Builds generic HTTP request.
int wolfIO_HttpProcessResponseGenericIO(WolfSSLGenericIORecvCb ioCb, void * ioCbCtx, const char appStrList, unsigned char respBuf, unsigned char * httpBuf, int httpBufSz, int dynType, void * heap)
Processes HTTP response with generic I/O.
int wolfIO_HttpProcessResponse(int sfd, const char appStrList, unsigned char respBuf, unsigned char * httpBuf, int httpBufSz, int dynType, void * heap)
Processes HTTP response.
void wolfSSL_CTX_SetIOSend(WOLFSSL_CTX * ctx, CallbackIOSend CBIOSend)
Sets I/O send callback for context.
void wolfSSL_SSLSetIORecv(WOLFSSL * ssl, CallbackIORecv CBIORecv)
Sets I/O receive callback for SSL object.
void wolfSSL_SSLSetIOSend(WOLFSSL * ssl, CallbackIOSend CBIOSend)
Sets I/O send callback for SSL object.
void wolfSSL_SetIO_Mynewt(WOLFSSL * ssl, struct mn_socket * mnSocket, struct mn_sockaddr_in * mnSockAddrIn)
Sets I/O for Mynewt platform.
int wolfSSL_SetIO_LwIP(WOLFSSL * ssl, void * pcb, tcp_recv_fn recv, tcp_sent_fn sent, void * arg)
Sets I/O for LwIP platform.
void wolfSSL_SetCookieCtx(WOLFSSL * ssl, void * ctx)
Sets cookie context for DTLS.
void wolfSSL_CTX_SetIOGetPeer(WOLFSSL_CTX * ctx, CallbackGetPeer cb)
Sets get peer callback for context.
void wolfSSL_CTX_SetIOSetPeer(WOLFSSL_CTX * ctx, CallbackSetPeer cb)
Sets set peer callback for context.
int EmbedGetPeer(WOLFSSL * ssl, char * ip, int * ipSz, unsigned short * port, int * fam)
Gets peer information.
int EmbedSetPeer(WOLFSSL * ssl, char * ip, int ipSz, unsigned short port, int fam)
Sets peer information.

Functions Documentation

function EmbedReceive

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

This function is the receive embedded callback.

Parameters:

  • ssl a pointer to a WOLFSSL structure, created using wolfSSL_new().
  • buf a char pointer representation of the buffer.
  • sz the size of the buffer.
  • ctx a void pointer to user registered context. In the default case the ctx is a socket descriptor pointer.

See:

Return:

  • 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” message 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.

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.
}

function EmbedSend

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

This function is the send embedded callback.

Parameters:

  • ssl a pointer to a WOLFSSL structure, created using wolfSSL_new().
  • buf a char pointer representing the buffer.
  • sz the size of the buffer.
  • ctx a void pointer to user registered context.

See:

Return:

  • 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.

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.
}

function EmbedReceiveFrom

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

This function is the receive embedded callback.

Parameters:

  • ssl a pointer to a WOLFSSL structure, created using wolfSSL_new().
  • buf a constant char pointer to the buffer.
  • sz an int type representing the size of the buffer.
  • ctx a void pointer to the WOLFSSL_CTX context.

See:

Return:

  • 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.

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
}

function EmbedSendTo

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

This function is the send embedded callback.

Parameters:

  • ssl a pointer to a WOLFSSL structure, created using wolfSSL_new().
  • buf a char pointer representing the buffer.
  • sz the size of the buffer.
  • ctx a void pointer to the user registered context. The default case is a WOLFSSL_DTLS_CTX structure.

See:

Return:

  • 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.

Example

WOLFSSL* ssl;
…
char* buf;
int sz;
void* ctx;

int sEmbed = EmbedSendto(ssl, buf, sz, ctx);
if(sEmbed <= 0){
    // No bytes sent. Failure case.
}

function EmbedGenerateCookie

int EmbedGenerateCookie(
    WOLFSSL * ssl,
    byte * buf,
    int sz,
    void * ctx
)

This function is the DTLS Generate Cookie callback.

Parameters:

  • ssl a pointer to a WOLFSSL structure, created using wolfSSL_new().
  • buf byte pointer representing the buffer. It is the destination from XMEMCPY().
  • sz the size of the buffer.
  • ctx a void pointer to user registered context.

See: wolfSSL_CTX_SetGenCookie

Return:

  • Success This function returns the number of bytes copied into the buffer.
  • GEN_COOKIE_E returned if the getpeername failed in EmbedGenerateCookie.

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
}

function EmbedOcspRespFree

void EmbedOcspRespFree(
    void * ctx,
    byte * resp
)

This function frees the response buffer.

Parameters:

  • ctx a void pointer to heap hint.
  • resp a byte pointer representing the response.

See:

Return: none No returns.

Example

void* ctx;
byte* resp; // Response buffer.
…
EmbedOcspRespFree(ctx, resp);

function wolfSSL_CTX_SetIORecv

void wolfSSL_CTX_SetIORecv(
    WOLFSSL_CTX * ctx,
    CallbackIORecv CBIORecv
)

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.

Parameters:

  • ctx pointer to the SSL context, created with wolfSSL_CTX_new().
  • callback function 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.

See:

Return: none no Returns.

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
}

function wolfSSL_SetIOReadCtx

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.

Parameters:

  • ssl pointer to the SSL session, created with wolfSSL_new().
  • rctx pointer to the context to be registered with the SSL session’s (ssl) receive callback function.

See:

Return: none No returns.

Example

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

function wolfSSL_SetIOWriteCtx

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.

Parameters:

  • ssl pointer to the SSL session, created with wolfSSL_new().
  • wctx pointer to the context to be registered with the SSL session’s (ssl) send callback function.

See:

Return: none No returns.

Example

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

function wolfSSL_GetIOReadCtx

void * wolfSSL_GetIOReadCtx(
    WOLFSSL * ssl
)

This function returns the IOCB_ReadCtx member of the WOLFSSL struct.

Parameters:

  • ssl a pointer to a WOLFSSL structure, created using wolfSSL_new().

See:

Return:

  • pointer This function returns a void pointer to the IOCB_ReadCtx member of the WOLFSSL structure.
  • NULL returned if the WOLFSSL struct is NULL.

Example

WOLFSSL* ssl = wolfSSL_new(ctx);
void* ioRead;
...
ioRead = wolfSSL_GetIOReadCtx(ssl);
if(ioRead == NULL){
    // Failure case. The ssl object was NULL.
}

function wolfSSL_GetIOWriteCtx

void * wolfSSL_GetIOWriteCtx(
    WOLFSSL * ssl
)

This function returns the IOCB_WriteCtx member of the WOLFSSL structure.

Parameters:

  • ssl a pointer to a WOLFSSL structure, created using wolfSSL_new().

See:

Return:

  • pointer This function returns a void pointer to the IOCB_WriteCtx member of the WOLFSSL structure.
  • NULL returned if the WOLFSSL struct is NULL.

Example

WOLFSSL* ssl;
void* ioWrite;
...
ioWrite = wolfSSL_GetIOWriteCtx(ssl);
if(ioWrite == NULL){
    // The function returned NULL.
}

function wolfSSL_SetIOReadFlags

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.”

Parameters:

  • ssl pointer to the SSL session, created with wolfSSL_new().
  • flags value of the I/O read flags for the specified SSL session (ssl).

See:

Return: none No returns.

Example

WOLFSSL* ssl = 0;
...
// Manually setting recv flags to 0
wolfSSL_SetIOReadFlags(ssl, 0);
...

function wolfSSL_SetIOWriteFlags

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.”

Parameters:

  • ssl pointer to the SSL session, created with wolfSSL_new().
  • flags value of the I/O send flags for the specified SSL session (ssl).

See:

Return: none No returns.

Example

WOLFSSL* ssl = 0;
...
// Manually setting send flags to 0
wolfSSL_SetIOWriteFlags(ssl, 0);
...

function wolfSSL_SetIO_NetX

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.

Parameters:

  • ssl a pointer to a WOLFSSL structure, created using wolfSSL_new().
  • nxSocket a pointer to type NX_TCP_SOCKET that is set to the nxSocket member of the nxCTX structure.
  • waitOption a ULONG type that is set to the nxWait member of the nxCtx structure.

See:

  • set_fd
  • NetX_Send
  • NetX_Receive

Return: none No returns.

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 {
    // You need to pass in good parameters.
}

function wolfSSL_CTX_SetGenCookie

void wolfSSL_CTX_SetGenCookie(
    WOLFSSL_CTX * ctx,
    CallbackGenCookie cb
)

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);.

Parameters:

  • ssl a pointer to a WOLFSSL structure, created using wolfSSL_new().
  • cb a CallbackGenCookie type function pointer with the signature of CallbackGenCookie.

See: CallbackGenCookie

Return: none No returns.

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);

function wolfSSL_GetCookieCtx

void * wolfSSL_GetCookieCtx(
    WOLFSSL * ssl
)

This function returns the IOCB_CookieCtx member of the WOLFSSL structure.

Parameters:

  • ssl a pointer to a WOLFSSL structure, created using wolfSSL_new().
  • ssl SSL object

See:

Return:

  • pointer The function returns a void pointer value stored in the IOCB_CookieCtx.
  • NULL if the WOLFSSL struct is NULL
  • Cookie context pointer

Gets cookie context for DTLS.

Example

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
}

Example

WOLFSSL* ssl;
void* ctx = wolfSSL_GetCookieCtx(ssl);

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
)

This function sets up the ISO-TP context if wolfSSL, for use when wolfSSL is compiled with WOLFSSL_ISOTP.

Parameters:

  • ssl the wolfSSL context
  • ctx a user created ISOTP context which this function initializes
  • recv_fn a user CAN bus receive callback
  • send_fn a user CAN bus send callback
  • delay_fn a user microsecond granularity delay function
  • receive_delay a set amount of microseconds to delay each CAN bus packet
  • receive_buffer a user supplied buffer to receive data, recommended that is allocated to ISOTP_DEFAULT_BUFFER_SIZE bytes
  • receive_buffer_size - The size of receive_buffer
  • arg an arbitrary pointer sent to recv_fn and send_fn

Return: 0 on success, WOLFSSL_CBIO_ERR_GENERAL on failure

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
)

This function disables reading from the IO layer.

Parameters:

  • ssl the wolfSSL context

See:

Example

WOLFSSL_CTX* ctx = wolfSSL_CTX_new(method);
WOLFSSL* ssl = wolfSSL_new(ctx);
wolfSSL_SSLDisableRead(ssl);

function wolfSSL_SSLEnableRead

void wolfSSL_SSLEnableRead(
    WOLFSSL * ssl
)

This function enables reading from the IO layer. Reading is enabled by default and should be used to undo wolfSSL_SSLDisableRead();.

Parameters:

  • ssl the wolfSSL context

See:

Example

WOLFSSL_CTX* ctx = wolfSSL_CTX_new(method);
WOLFSSL* ssl = wolfSSL_new(ctx);
wolfSSL_SSLDisableRead(ssl);
...
wolfSSL_SSLEnableRead(ssl);

function wolfSSL_SetRecvFrom

WOLFSSL_API void wolfSSL_SetRecvFrom(
    WOLFSSL * ssl,
    WolfSSLRecvFrom recvFrom
)

Set a custom DTLS recvfrom callback for a WOLFSSL session.

Parameters:

  • ssl A pointer to a WOLFSSL structure, created using wolfSSL_new().
  • recvFrom The custom callback function to use for DTLS datagram receive.

See:

This function allows you to specify a custom callback function for receiving datagrams (DTLS) using the recvfrom-style interface. The callback must match the WolfSSLRecvFrom function pointer type and is expected to behave like the POSIX recvfrom() function, including its return values and error handling.

Example

wolfSSL_SetRecvFrom(ssl, my_recvfrom_cb);

function wolfSSL_SetSendTo

WOLFSSL_API void wolfSSL_SetSendTo(
    WOLFSSL * ssl,
    WolfSSLSento sendTo
)

Set a custom DTLS sendto callback for a WOLFSSL session.

Parameters:

  • ssl A pointer to a WOLFSSL structure, created using wolfSSL_new().
  • sendTo The custom callback function to use for DTLS datagram send.

See:

This function allows you to specify a custom callback function for sending datagrams (DTLS) using the sendto-style interface. The callback must match the WolfSSLSento function pointer type and is expected to behave like the POSIX sendto() function, including its return values and error handling.

Example

wolfSSL_SetSendTo(ssl, my_sendto_cb);

function wolfIO_Select

int wolfIO_Select(
    SOCKET_T sockfd,
    int to_sec
)

Waits for socket to be ready for I/O with timeout.

Parameters:

  • sockfd Socket file descriptor
  • to_sec Timeout in seconds

See: wolfIO_TcpConnect

Return:

  • 0 on success
  • negative on error

Example

SOCKET_T sockfd;
int ret = wolfIO_Select(sockfd, 5);

function wolfIO_TcpConnect

int wolfIO_TcpConnect(
    SOCKET_T * sockfd,
    const char * ip,
    unsigned short port,
    int to_sec
)

Connects to TCP server with timeout.

Parameters:

  • sockfd Pointer to socket file descriptor
  • ip IP address string
  • port Port number
  • to_sec Timeout in seconds

See: wolfIO_TcpBind

Return:

  • 0 on success
  • negative on error

Example

SOCKET_T sockfd;
int ret = wolfIO_TcpConnect(&sockfd, "127.0.0.1", 443, 5);

function wolfIO_TcpAccept

int wolfIO_TcpAccept(
    SOCKET_T sockfd,
    SOCKADDR * peer_addr,
    XSOCKLENT * peer_len
)

Accepts TCP connection.

Parameters:

  • sockfd Socket file descriptor
  • peer_addr Peer address structure
  • peer_len Peer address length

See: wolfIO_TcpBind

Return:

  • Socket descriptor on success
  • negative on error

Example

SOCKET_T sockfd;
SOCKADDR peer;
XSOCKLENT len = sizeof(peer);
int ret = wolfIO_TcpAccept(sockfd, &peer, &len);

function wolfIO_TcpBind

int wolfIO_TcpBind(
    SOCKET_T * sockfd,
    word16 port
)

Binds TCP socket to port.

Parameters:

  • sockfd Pointer to socket file descriptor
  • port Port number

See: wolfIO_TcpAccept

Return:

  • 0 on success
  • negative on error

Example

SOCKET_T sockfd;
int ret = wolfIO_TcpBind(&sockfd, 443);

function wolfIO_Send

int wolfIO_Send(
    SOCKET_T sd,
    char * buf,
    int sz,
    int wrFlags
)

Sends data on socket.

Parameters:

  • sd Socket descriptor
  • buf Buffer to send
  • sz Buffer size
  • wrFlags Write flags

See: wolfIO_Recv

Return:

  • Number of bytes sent on success
  • negative on error

Example

SOCKET_T sd;
char buf[100];
int ret = wolfIO_Send(sd, buf, sizeof(buf), 0);

function wolfIO_Recv

int wolfIO_Recv(
    SOCKET_T sd,
    char * buf,
    int sz,
    int rdFlags
)

Receives data from socket.

Parameters:

  • sd Socket descriptor
  • buf Buffer to receive into
  • sz Buffer size
  • rdFlags Read flags

See: wolfIO_Send

Return:

  • Number of bytes received on success
  • negative on error

Example

SOCKET_T sd;
char buf[100];
int ret = wolfIO_Recv(sd, buf, sizeof(buf), 0);

function wolfIO_SendTo

int wolfIO_SendTo(
    SOCKET_T sd,
    WOLFSSL_BIO_ADDR * addr,
    char * buf,
    int sz,
    int wrFlags
)

Sends datagram to address.

Parameters:

  • sd Socket descriptor
  • addr Destination address
  • buf Buffer to send
  • sz Buffer size
  • wrFlags Write flags

See: wolfIO_RecvFrom

Return:

  • Number of bytes sent on success
  • negative on error

Example

SOCKET_T sd;
WOLFSSL_BIO_ADDR addr;
char buf[100];
int ret = wolfIO_SendTo(sd, &addr, buf, sizeof(buf), 0);

function wolfIO_RecvFrom

int wolfIO_RecvFrom(
    SOCKET_T sd,
    WOLFSSL_BIO_ADDR * addr,
    char * buf,
    int sz,
    int rdFlags
)

Receives datagram from address.

Parameters:

  • sd Socket descriptor
  • addr Source address
  • buf Buffer to receive into
  • sz Buffer size
  • rdFlags Read flags

See: wolfIO_SendTo

Return:

  • Number of bytes received on success
  • negative on error

Example

SOCKET_T sd;
WOLFSSL_BIO_ADDR addr;
char buf[100];
int ret = wolfIO_RecvFrom(sd, &addr, buf, sizeof(buf), 0);

function wolfSSL_BioSend

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

BIO send callback.

Parameters:

  • ssl SSL object
  • buf Buffer to send
  • sz Buffer size
  • ctx Context pointer

See: wolfSSL_BioReceive

Return:

  • Number of bytes sent on success
  • negative on error

Example

WOLFSSL* ssl;
char buf[100];
int ret = wolfSSL_BioSend(ssl, buf, sizeof(buf), NULL);

function wolfSSL_BioReceive

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

BIO receive callback.

Parameters:

  • ssl SSL object
  • buf Buffer to receive into
  • sz Buffer size
  • ctx Context pointer

See: wolfSSL_BioSend

Return:

  • Number of bytes received on success
  • negative on error

Example

WOLFSSL* ssl;
char buf[100];
int ret = wolfSSL_BioReceive(ssl, buf, sizeof(buf), NULL);

function EmbedReceiveFromMcast

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

Receives multicast datagram.

Parameters:

  • ssl SSL object
  • buf Buffer to receive into
  • sz Buffer size
  • ctx Context pointer

See: EmbedReceiveFrom

Return:

  • Number of bytes received on success
  • negative on error

Example

WOLFSSL* ssl;
char buf[100];
int ret = EmbedReceiveFromMcast(ssl, buf, sizeof(buf), NULL);

function wolfIO_HttpBuildRequestOcsp

int wolfIO_HttpBuildRequestOcsp(
    const char * domainName,
    const char * path,
    int ocspReqSz,
    unsigned char * buf,
    int bufSize
)

Builds HTTP OCSP request.

Parameters:

  • domainName Domain name
  • path URL path
  • ocspReqSz OCSP request size
  • buf Output buffer
  • bufSize Buffer size

See: wolfIO_HttpProcessResponseOcsp

Return:

  • Request size on success
  • negative on error

Example

char buf[1024];
int ret = wolfIO_HttpBuildRequestOcsp("example.com", "/ocsp", 100,
                                      (unsigned char*)buf, sizeof(buf));

function wolfIO_HttpProcessResponseOcspGenericIO

int wolfIO_HttpProcessResponseOcspGenericIO(
    WolfSSLGenericIORecvCb ioCb,
    void * ioCbCtx,
    unsigned char ** respBuf,
    unsigned char * httpBuf,
    int httpBufSz,
    void * heap
)

Processes HTTP OCSP response with generic I/O.

Parameters:

  • ioCb I/O callback
  • ioCbCtx I/O callback context
  • respBuf Response buffer pointer
  • httpBuf HTTP buffer
  • httpBufSz HTTP buffer size
  • heap Heap hint

See: wolfIO_HttpProcessResponseOcsp

Return:

  • 0 on success
  • negative on error

Example

unsigned char* resp = NULL;
unsigned char httpBuf[1024];
int ret = wolfIO_HttpProcessResponseOcspGenericIO(myIoCb, ctx, &resp,
                                                  httpBuf,
                                                  sizeof(httpBuf), NULL);

function wolfIO_HttpProcessResponseOcsp

int wolfIO_HttpProcessResponseOcsp(
    int sfd,
    unsigned char ** respBuf,
    unsigned char * httpBuf,
    int httpBufSz,
    void * heap
)

Processes HTTP OCSP response.

Parameters:

  • sfd Socket file descriptor
  • respBuf Response buffer pointer
  • httpBuf HTTP buffer
  • httpBufSz HTTP buffer size
  • heap Heap hint

See: wolfIO_HttpBuildRequestOcsp

Return:

  • 0 on success
  • negative on error

Example

int sfd;
unsigned char* resp = NULL;
unsigned char httpBuf[1024];
int ret = wolfIO_HttpProcessResponseOcsp(sfd, &resp, httpBuf,
                                         sizeof(httpBuf), NULL);

function EmbedOcspLookup

int EmbedOcspLookup(
    void * ctx,
    const char * url,
    int urlSz,
    byte * ocspReqBuf,
    int ocspReqSz,
    byte ** ocspRespBuf
)

OCSP lookup callback.

Parameters:

  • ctx Context pointer
  • url URL string
  • urlSz URL size
  • ocspReqBuf OCSP request buffer
  • ocspReqSz OCSP request size
  • ocspRespBuf OCSP response buffer pointer

See: EmbedOcspRespFree

Return:

  • 0 on success
  • negative on error

Example

byte* resp = NULL;
byte req[100];
int ret = EmbedOcspLookup(NULL, "http://example.com/ocsp", 25, req,
                          sizeof(req), &resp);

function wolfIO_HttpBuildRequestCrl

int wolfIO_HttpBuildRequestCrl(
    const char * url,
    int urlSz,
    const char * domainName,
    unsigned char * buf,
    int bufSize
)

Builds HTTP CRL request.

Parameters:

  • url URL string
  • urlSz URL size
  • domainName Domain name
  • buf Output buffer
  • bufSize Buffer size

See: wolfIO_HttpProcessResponseCrl

Return:

  • Request size on success
  • negative on error

Example

char buf[1024];
int ret = wolfIO_HttpBuildRequestCrl("http://example.com/crl", 22,
                                     "example.com",
                                     (unsigned char*)buf, sizeof(buf));

function wolfIO_HttpProcessResponseCrl

int wolfIO_HttpProcessResponseCrl(
    WOLFSSL_CRL * crl,
    int sfd,
    unsigned char * httpBuf,
    int httpBufSz
)

Processes HTTP CRL response.

Parameters:

  • crl CRL object
  • sfd Socket file descriptor
  • httpBuf HTTP buffer
  • httpBufSz HTTP buffer size

See: wolfIO_HttpBuildRequestCrl

Return:

  • 0 on success
  • negative on error

Example

WOLFSSL_CRL crl;
int sfd;
unsigned char httpBuf[1024];
int ret = wolfIO_HttpProcessResponseCrl(&crl, sfd, httpBuf,
                                        sizeof(httpBuf));

function EmbedCrlLookup

int EmbedCrlLookup(
    WOLFSSL_CRL * crl,
    const char * url,
    int urlSz
)

CRL lookup callback.

Parameters:

  • crl CRL object
  • url URL string
  • urlSz URL size

See: wolfIO_HttpBuildRequestCrl

Return:

  • 0 on success
  • negative on error

Example

WOLFSSL_CRL crl;
int ret = EmbedCrlLookup(&crl, "http://example.com/crl", 22);

function wolfIO_DecodeUrl

int wolfIO_DecodeUrl(
    const char * url,
    int urlSz,
    char * outName,
    char * outPath,
    unsigned short * outPort
)

Decodes URL into components.

Parameters:

  • url URL string
  • urlSz URL size
  • outName Output domain name
  • outPath Output path
  • outPort Output port

See: wolfIO_HttpBuildRequest

Return:

  • 0 on success
  • negative on error

Example

char name[256], path[256];
unsigned short port;
int ret = wolfIO_DecodeUrl("http://example.com:443/path", 28, name,
                           path, &port);

function wolfIO_HttpBuildRequest

int wolfIO_HttpBuildRequest(
    const char * reqType,
    const char * domainName,
    const char * path,
    int pathLen,
    int reqSz,
    const char * contentType,
    unsigned char * buf,
    int bufSize
)

Builds generic HTTP request.

Parameters:

  • reqType Request type (GET, POST, etc.)
  • domainName Domain name
  • path URL path
  • pathLen Path length
  • reqSz Request body size
  • contentType Content type
  • buf Output buffer
  • bufSize Buffer size

See: wolfIO_HttpProcessResponse

Return:

  • Request size on success
  • negative on error

Example

char buf[1024];
int ret = wolfIO_HttpBuildRequest("POST", "example.com", "/api", 4,
                                  100, "application/json",
                                  (unsigned char*)buf, sizeof(buf));

function wolfIO_HttpProcessResponseGenericIO

int wolfIO_HttpProcessResponseGenericIO(
    WolfSSLGenericIORecvCb ioCb,
    void * ioCbCtx,
    const char ** appStrList,
    unsigned char ** respBuf,
    unsigned char * httpBuf,
    int httpBufSz,
    int dynType,
    void * heap
)

Processes HTTP response with generic I/O.

Parameters:

  • ioCb I/O callback
  • ioCbCtx I/O callback context
  • appStrList Application string list
  • respBuf Response buffer pointer
  • httpBuf HTTP buffer
  • httpBufSz HTTP buffer size
  • dynType Dynamic type
  • heap Heap hint

See: wolfIO_HttpProcessResponse

Return:

  • 0 on success
  • negative on error

Example

unsigned char* resp = NULL;
unsigned char httpBuf[1024];
const char* appStrs[] = {"200 OK", NULL};
int ret = wolfIO_HttpProcessResponseGenericIO(myIoCb, ctx, appStrs,
                                              &resp, httpBuf,
                                              sizeof(httpBuf), 0, NULL);

function wolfIO_HttpProcessResponse

int wolfIO_HttpProcessResponse(
    int sfd,
    const char ** appStrList,
    unsigned char ** respBuf,
    unsigned char * httpBuf,
    int httpBufSz,
    int dynType,
    void * heap
)

Processes HTTP response.

Parameters:

  • sfd Socket file descriptor
  • appStrList Application string list
  • respBuf Response buffer pointer
  • httpBuf HTTP buffer
  • httpBufSz HTTP buffer size
  • dynType Dynamic type
  • heap Heap hint

See: wolfIO_HttpBuildRequest

Return:

  • 0 on success
  • negative on error

Example

int sfd;
unsigned char* resp = NULL;
unsigned char httpBuf[1024];
const char* appStrs[] = {"200 OK", NULL};
int ret = wolfIO_HttpProcessResponse(sfd, appStrs, &resp, httpBuf,
                                     sizeof(httpBuf), 0, NULL);

function wolfSSL_CTX_SetIOSend

void wolfSSL_CTX_SetIOSend(
    WOLFSSL_CTX * ctx,
    CallbackIOSend CBIOSend
)

Sets I/O send callback for context.

Parameters:

  • ctx SSL context
  • CBIOSend Send callback

See: wolfSSL_SSLSetIOSend

Return: none No returns

Example

WOLFSSL_CTX* ctx;
wolfSSL_CTX_SetIOSend(ctx, mySendCallback);

function wolfSSL_SSLSetIORecv

void wolfSSL_SSLSetIORecv(
    WOLFSSL * ssl,
    CallbackIORecv CBIORecv
)

Sets I/O receive callback for SSL object.

Parameters:

  • ssl SSL object
  • CBIORecv Receive callback

See: wolfSSL_CTX_SetIORecv

Return: none No returns

Example

WOLFSSL* ssl;
wolfSSL_SSLSetIORecv(ssl, myRecvCallback);

function wolfSSL_SSLSetIOSend

void wolfSSL_SSLSetIOSend(
    WOLFSSL * ssl,
    CallbackIOSend CBIOSend
)

Sets I/O send callback for SSL object.

Parameters:

  • ssl SSL object
  • CBIOSend Send callback

See: wolfSSL_CTX_SetIOSend

Return: none No returns

Example

WOLFSSL* ssl;
wolfSSL_SSLSetIOSend(ssl, mySendCallback);

function wolfSSL_SetIO_Mynewt

void wolfSSL_SetIO_Mynewt(
    WOLFSSL * ssl,
    struct mn_socket * mnSocket,
    struct mn_sockaddr_in * mnSockAddrIn
)

Sets I/O for Mynewt platform.

Parameters:

  • ssl SSL object
  • mnSocket Mynewt socket
  • mnSockAddrIn Mynewt socket address

See: wolfSSL_SetIO_LwIP

Return: none No returns

Example

WOLFSSL* ssl;
struct mn_socket sock;
struct mn_sockaddr_in addr;
wolfSSL_SetIO_Mynewt(ssl, &sock, &addr);

function wolfSSL_SetIO_LwIP

int wolfSSL_SetIO_LwIP(
    WOLFSSL * ssl,
    void * pcb,
    tcp_recv_fn recv,
    tcp_sent_fn sent,
    void * arg
)

Sets I/O for LwIP platform.

Parameters:

  • ssl SSL object
  • pcb Protocol control block
  • recv Receive callback
  • sent Sent callback
  • arg Argument pointer

See: wolfSSL_SetIO_Mynewt

Return:

  • 0 on success
  • negative on error

Example

WOLFSSL* ssl;
struct tcp_pcb* pcb;
int ret = wolfSSL_SetIO_LwIP(ssl, pcb, myRecv, mySent, NULL);

function wolfSSL_SetCookieCtx

void wolfSSL_SetCookieCtx(
    WOLFSSL * ssl,
    void * ctx
)

Sets cookie context for DTLS.

Parameters:

  • ssl SSL object
  • ctx Cookie context

See: wolfSSL_GetCookieCtx

Return: none No returns

Example

WOLFSSL* ssl;
void* ctx;
wolfSSL_SetCookieCtx(ssl, ctx);

function wolfSSL_CTX_SetIOGetPeer

void wolfSSL_CTX_SetIOGetPeer(
    WOLFSSL_CTX * ctx,
    CallbackGetPeer cb
)

Sets get peer callback for context.

Parameters:

  • ctx SSL context
  • cb Get peer callback

See: wolfSSL_CTX_SetIOSetPeer

Return: none No returns

Example

WOLFSSL_CTX* ctx;
wolfSSL_CTX_SetIOGetPeer(ctx, myGetPeerCallback);

function wolfSSL_CTX_SetIOSetPeer

void wolfSSL_CTX_SetIOSetPeer(
    WOLFSSL_CTX * ctx,
    CallbackSetPeer cb
)

Sets set peer callback for context.

Parameters:

  • ctx SSL context
  • cb Set peer callback

See: wolfSSL_CTX_SetIOGetPeer

Return: none No returns

Example

WOLFSSL_CTX* ctx;
wolfSSL_CTX_SetIOSetPeer(ctx, mySetPeerCallback);

function EmbedGetPeer

int EmbedGetPeer(
    WOLFSSL * ssl,
    char * ip,
    int * ipSz,
    unsigned short * port,
    int * fam
)

Gets peer information.

Parameters:

  • ssl SSL object
  • ip IP address buffer
  • ipSz IP address buffer size pointer
  • port Port number pointer
  • fam Address family pointer

See: EmbedSetPeer

Return:

  • 0 on success
  • negative on error

Example

WOLFSSL* ssl;
char ip[46];
int ipSz = sizeof(ip);
unsigned short port;
int fam;
int ret = EmbedGetPeer(ssl, ip, &ipSz, &port, &fam);

function EmbedSetPeer

int EmbedSetPeer(
    WOLFSSL * ssl,
    char * ip,
    int ipSz,
    unsigned short port,
    int fam
)

Sets peer information.

Parameters:

  • ssl SSL object
  • ip IP address string
  • ipSz IP address string size
  • port Port number
  • fam Address family

See: EmbedGetPeer

Return:

  • 0 on success
  • negative on error

Example

WOLFSSL* ssl;
int ret = EmbedSetPeer(ssl, "127.0.0.1", 9, 443, AF_INET);

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* ctx);

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

int EmbedGenerateCookie(WOLFSSL* ssl, byte* buf,
                                    int sz, void* ctx);

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);

WOLFSSL_API void wolfSSL_SetRecvFrom(WOLFSSL* ssl, WolfSSLRecvFrom recvFrom);

WOLFSSL_API void wolfSSL_SetSendTo(WOLFSSL* ssl, WolfSSLSento sendTo);

int wolfIO_Select(SOCKET_T sockfd, int to_sec);

int wolfIO_TcpConnect(SOCKET_T* sockfd, const char* ip,
                      unsigned short port, int to_sec);

int wolfIO_TcpAccept(SOCKET_T sockfd, SOCKADDR* peer_addr,
                     XSOCKLENT* peer_len);

int wolfIO_TcpBind(SOCKET_T* sockfd, word16 port);

int wolfIO_Send(SOCKET_T sd, char *buf, int sz, int wrFlags);

int wolfIO_Recv(SOCKET_T sd, char *buf, int sz, int rdFlags);

int wolfIO_SendTo(SOCKET_T sd, WOLFSSL_BIO_ADDR *addr, char *buf, int sz,
                  int wrFlags);

int wolfIO_RecvFrom(SOCKET_T sd, WOLFSSL_BIO_ADDR *addr, char *buf, int sz,
                    int rdFlags);

int wolfSSL_BioSend(WOLFSSL* ssl, char *buf, int sz, void *ctx);

int wolfSSL_BioReceive(WOLFSSL* ssl, char* buf, int sz, void* ctx);

int EmbedReceiveFromMcast(WOLFSSL *ssl, char *buf, int sz, void *ctx);

int wolfIO_HttpBuildRequestOcsp(const char* domainName, const char* path,
                                 int ocspReqSz, unsigned char* buf,
                                 int bufSize);

int wolfIO_HttpProcessResponseOcspGenericIO(WolfSSLGenericIORecvCb ioCb,
                                            void* ioCbCtx,
                                            unsigned char** respBuf,
                                            unsigned char* httpBuf,
                                            int httpBufSz, void* heap);

int wolfIO_HttpProcessResponseOcsp(int sfd, unsigned char** respBuf,
                                   unsigned char* httpBuf, int httpBufSz,
                                   void* heap);

int EmbedOcspLookup(void* ctx, const char* url, int urlSz,
                    byte* ocspReqBuf, int ocspReqSz, byte** ocspRespBuf);

int wolfIO_HttpBuildRequestCrl(const char* url, int urlSz,
                                const char* domainName, unsigned char* buf,
                                int bufSize);

int wolfIO_HttpProcessResponseCrl(WOLFSSL_CRL* crl, int sfd,
                                  unsigned char* httpBuf, int httpBufSz);

int EmbedCrlLookup(WOLFSSL_CRL* crl, const char* url, int urlSz);

int wolfIO_DecodeUrl(const char* url, int urlSz, char* outName,
                     char* outPath, unsigned short* outPort);

int wolfIO_HttpBuildRequest(const char* reqType, const char* domainName,
                             const char* path, int pathLen, int reqSz,
                             const char* contentType, unsigned char* buf,
                             int bufSize);

int wolfIO_HttpProcessResponseGenericIO(WolfSSLGenericIORecvCb ioCb,
                                        void* ioCbCtx,
                                        const char** appStrList,
                                        unsigned char** respBuf,
                                        unsigned char* httpBuf,
                                        int httpBufSz, int dynType,
                                        void* heap);

int wolfIO_HttpProcessResponse(int sfd, const char** appStrList,
                               unsigned char** respBuf,
                               unsigned char* httpBuf, int httpBufSz,
                               int dynType, void* heap);

void wolfSSL_CTX_SetIOSend(WOLFSSL_CTX *ctx, CallbackIOSend CBIOSend);

void wolfSSL_SSLSetIORecv(WOLFSSL *ssl, CallbackIORecv CBIORecv);

void wolfSSL_SSLSetIOSend(WOLFSSL *ssl, CallbackIOSend CBIOSend);

void wolfSSL_SetIO_Mynewt(WOLFSSL* ssl, struct mn_socket* mnSocket,
                          struct mn_sockaddr_in* mnSockAddrIn);

int wolfSSL_SetIO_LwIP(WOLFSSL* ssl, void *pcb, tcp_recv_fn recv,
                       tcp_sent_fn sent, void *arg);

void wolfSSL_SetCookieCtx(WOLFSSL* ssl, void *ctx);

void* wolfSSL_GetCookieCtx(WOLFSSL* ssl);

void wolfSSL_CTX_SetIOGetPeer(WOLFSSL_CTX* ctx, CallbackGetPeer cb);

void wolfSSL_CTX_SetIOSetPeer(WOLFSSL_CTX* ctx, CallbackSetPeer cb);

int EmbedGetPeer(WOLFSSL* ssl, char* ip, int* ipSz, unsigned short* port,
                 int* fam);

int EmbedSetPeer(WOLFSSL* ssl, char* ip, int ipSz, unsigned short port,
                 int fam);

Updated on 2025-12-31 at 01:16:04 +0000