erps v0.4.2 Erps.Transport.Tls View Source

implements a two-way TLS transport strategy.

this transport is useful when you have trusted clients and servers that are authenticated against each other and must have an encrypted channel over WAN.

extra options:

Link to this section Summary

Functions

Callback implementation for Erps.Transport.Api.accept/2.

(server) a specialized function that generates a match function option used to verify that the incoming client is bound to a single ip address.

(server) opens a TCP port to listen for incoming connection requests.

Callback implementation for Erps.Transport.Api.recv/2, via :ssl.recv/2.

Callback implementation for Erps.Transport.Api.send/2, via :ssl.send/2.

(client) responds to a server TLS handshake/2 request, by upgrading to an encrypted connection. Verifies the identity of the server CA, and reject if it's not a valid peer.

Link to this section Types

Link to this section Functions

Link to this function

accept(sock, timeout) View Source
accept(socket(), timeout()) :: {:ok, socket()} | {:error, term()}

Callback implementation for Erps.Transport.Api.accept/2.

Link to this function

connect(host, port, opts) View Source
connect(term(), :inet.port_number(), keyword()) ::
  {:ok, socket()} | {:error, term()}

Callback implementation for Erps.Transport.Api.connect/3.

Link to this function

handshake(socket, tls_opts!) View Source
handshake(:inet.socket(), keyword()) ::
  {:ok, Erps.Transport.Api.socket()} | {:error, any()}

(server) a specialized function that generates a match function option used to verify that the incoming client is bound to a single ip address.

Link to this function

listen(port, opts) View Source
listen(:inet.port_number(), keyword()) ::
  {:ok, :inet.socket()} | {:error, any()}

(server) opens a TCP port to listen for incoming connection requests.

Verifies that the tls options :cacertfile, :certfile, and :keyfile exist under the keyword :tls_opts, and point to existing files (but not the validity of their authority chain or their crytographic signing).

Callback implementation for Erps.Transport.Api.listen/2.

Link to this function

recv(sock, length) View Source
recv(socket(), non_neg_integer()) :: {:ok, binary()} | {:error, term()}

Callback implementation for Erps.Transport.Api.recv/2, via :ssl.recv/2.

Link to this function

recv(sock, length, timeout) View Source
recv(socket(), non_neg_integer(), timeout()) ::
  {:ok, binary()} | {:error, term()}

Callback implementation for Erps.Transport.Api.recv/3, via :ssl.recv/3.

Link to this function

send(sock, content) View Source
send(socket(), iodata()) :: :ok | {:error, term()}

Callback implementation for Erps.Transport.Api.send/2, via :ssl.send/2.

Link to this function

upgrade(socket, tls_opts) View Source
upgrade(socket(), keyword()) :: {:ok, :ssl.socket()} | {:error, term()}

(client) responds to a server TLS handshake/2 request, by upgrading to an encrypted connection. Verifies the identity of the server CA, and reject if it's not a valid peer.

Callback implementation for Erps.Transport.Api.upgrade/2.