View Source ExLibSRTP (ExLibSRTP v0.6.0)

libsrtp bindings for Elixir.

The workflow goes as follows:

Link to this section Summary

Types

Type describing possible errors that might be returned by ExLibSRTP functions.

t()

Link to this section Types

@type libsrtp_error_t() ::
  :fail
  | :bad_param
  | :alloc_fail
  | :dealloc_fail
  | :init_fail
  | :terminus
  | :auth_fail
  | :cipher_fail
  | :replay_fail
  | :replay_old
  | :algo_fail
  | :no_such_op
  | :no_ctx
  | :cant_check
  | :key_expired
  | :socket_err
  | :signal_err
  | :nonce_bad
  | :read_fail
  | :write_fail
  | :parse_err
  | :encode_err
  | :semaphore_err
  | :pfkey_err
  | :bad_mki
  | :pkt_idx_old

Type describing possible errors that might be returned by ExLibSRTP functions.

Meaning of these might vary depending on the function. For explanation, please refer to appropriate documentation.

This type is based on srtp_err_status_t enum.

@type ssrc_t() :: 0..4_294_967_295
@opaque t()

Link to this section Functions

Link to this function

add_stream(srtp, policy)

View Source
@spec add_stream(t(), policy :: ExLibSRTP.Policy.t()) :: :ok
@spec new() :: t()
Link to this function

protect(srtp, unprotected, mki_index \\ nil)

View Source
@spec protect(t(), unprotected :: binary(), mki_index :: pos_integer() | nil) ::
  {:ok, protected :: binary()} | {:error, libsrtp_error_t()}

Protect RTP packet.

Most common errors:

  • :replay_fail - packet has either a duplicate sequence number or its sequence number has an old rollover counter (roc)
  • :replay_old - packet has a sequence number with current roc, but it is older than the beginning of the encryption window.
  • :bad_mki - provided MKI is not a known MKI id

Other errors indicate a failure in cryptographic mechanisms, please refer to libsrtp documentation

Link to this function

protect_rtcp(srtp, unprotected, mki_index \\ nil)

View Source
@spec protect_rtcp(t(), unprotected :: binary(), mki_index :: pos_integer() | nil) ::
  {:ok, protected :: binary()} | {:error, libsrtp_error_t()}

Protect RTCP packet.

All errors indicate an error in the cryptographic mechanisms.

Link to this function

remove_stream(srtp, ssrc)

View Source
@spec remove_stream(t(), ssrc :: ssrc_t()) :: :ok
Link to this function

unprotect(srtp, protected, use_mki \\ false)

View Source
@spec unprotect(t(), protected :: binary(), use_mki :: boolean()) ::
  {:ok, unprotected :: binary()} | {:error, libsrtp_error_t()}

Unprotect RTP packet.

Most common errors:

  • :replay_fail - packet has either a duplicate sequence number or its sequence number has an old rollover counter (roc)
  • :replay_old - packet has a sequence number with current roc, but it is older than the beginning of the decryption window.
  • :auth_fail - packet has failed the message authentication check

Other errors indicate a failure in cryptographic mechanisms, please refer to libsrtp documentation

Link to this function

unprotect_rtcp(srtp, protected, use_mki \\ false)

View Source
@spec unprotect_rtcp(t(), protected :: binary(), use_mki :: boolean()) ::
  {:ok, unprotected :: binary()} | {:error, libsrtp_error_t()}

Unprotect RTCP packet.

Expected errors:

  • :auth_fail - SRTCP message has failed the message authentication check.
  • :replay_fail - SRTCP message is a duplicate
  • :bad_mki - provided MKI is not a known MKI id

Other errors indicate issues in the cryptographic mechanisms.

@spec update(t(), policy :: ExLibSRTP.Policy.t()) :: :ok