5.9. ssl — Secure socket layer

SSL/TLS based on mbedTLS. Server side sockets works, but not client side.


Source code: src/inet/ssl.h, src/inet/ssl.c

Test code: tst/inet/ssl/main.c,

Test coverage: src/inet/ssl.c

Example code: examples/ssl/main.c


Enums

enum type ssl_protocol_t

Values:

enum type ssl_socket_mode_t

Values:

= 0

Functions

int ssl_module_init(void)

Initialize the SSL module. This function must be called before calling any other function in this module.

The module will only be initialized once even if this function is called multiple times.

Return
zero(0) or negative error code.

int ssl_context_init(struct ssl_context_t *self_p, enum ssl_protocol_t protocol)

Initialize given SSL context. A SSL context contains settings that lives longer than a socket.

Return
zero(0) or negative error code.
Parameters
  • self_p: SSL context to initialize.

int ssl_context_destroy(struct ssl_context_t *self_p)

Destroy given SSL context. The context may not be used after it has been destroyed.

Return
zero(0) or negative error code.
Parameters
  • self_p: SSL context to destroy.

int ssl_context_load_cert_chain(struct ssl_context_t *self_p, const char *cert_p, const char *key_p)

Load given certificate chain into given contextx.

Return
zero(0) or negative error code.
Parameters
  • self_p: SSL context.
  • self_p: Certificate to load.
  • self_p: Optional key to load. May be NULL.

int ssl_socket_open(struct ssl_socket_t *self_p, struct ssl_context_t *context_p, void *socket_p, enum ssl_socket_mode_t mode)

Initialize given SSL socket with given socket and SSL context. Performs the SSL handshake.

Return
zero(0) or negative error code.
Parameters
  • self_p: SSL socket to initialize.
  • context_p: SSL context to execute in.
  • socket_p: Socket to wrap in the SSL socket.
  • mode: Server or client side socket mode.

int ssl_socket_close(struct ssl_socket_t *self_p)

Close given SSL socket.

Return
zero(0) or negative error code.
Parameters
  • self_p: Opened SSL socket.

ssize_t ssl_socket_write(struct ssl_socket_t *self_p, const void *buf_p, size_t size)

Write data to given SSL socket.

Return
Number of written bytes or negative error code.
Parameters
  • self_p: SSL socket.
  • buf_p: Buffer to send.
  • size: Numer of bytes to send.

ssize_t ssl_socket_read(struct ssl_socket_t *self_p, void *buf_p, size_t size)

Read data from given SSL socket.

Return
Number of read bytes or negative error code.
Parameters
  • self_p: SSL socket.
  • buf_p: Buffer to read into.
  • size: Number of bytes to read.

ssize_t ssl_socket_size(struct ssl_socket_t *self_p)

Get the number of input bytes currently stored in the SSL socket.

Return
Number of input bytes in the SSL socket.
Parameters
  • self_p: SSL socket.

struct

Public Members

ssl_protocol_t ssl_context_t::protocol
void *ssl_context_t::conf_p
struct

Public Members

struct chan_t ssl_socket_t::base
void *ssl_socket_t::ssl_p
void *ssl_socket_t::socket_p