View Source ExLibSRTP (ExLibSRTP v0.7.2)
libsrtp bindings for Elixir.
The workflow goes as follows:
- create ExLibSRTP instance with
new/0
- add streams with
add_stream/2
- protect or unprotect packets with
protect/3
,unprotect/3
,protect_rtcp/3
,unprotect_rtcp/3
- remove streams with
remove_stream/2
Summary
Types
Type describing possible errors that might be returned by ExLibSRTP functions.
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()
Functions
@spec add_stream(t(), policy :: ExLibSRTP.Policy.t()) :: :ok
@spec new() :: t()
@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
@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.
@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
@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