68 #define SRTP_MASTER_KEY_LEN 30 73 #define SRTP_MAX_KEY_LEN 64 79 #define SRTP_MAX_TAG_LEN 16 85 #define SRTP_MAX_MKI_LEN 128 96 #define SRTP_MAX_TRAILER_LEN (SRTP_MAX_TAG_LEN + SRTP_MAX_MKI_LEN) 103 #define SRTP_MAX_NUM_MASTER_KEYS 16 105 #define SRTP_SALT_LEN 14 111 #define SRTP_AEAD_SALT_LEN 12 113 #define SRTP_AES_128_KEY_LEN 16 114 #define SRTP_AES_192_KEY_LEN 24 115 #define SRTP_AES_256_KEY_LEN 32 117 #define SRTP_AES_ICM_128_KEY_LEN_WSALT (SRTP_SALT_LEN + SRTP_AES_128_KEY_LEN) 118 #define SRTP_AES_ICM_192_KEY_LEN_WSALT (SRTP_SALT_LEN + SRTP_AES_192_KEY_LEN) 119 #define SRTP_AES_ICM_256_KEY_LEN_WSALT (SRTP_SALT_LEN + SRTP_AES_256_KEY_LEN) 121 #define SRTP_AES_GCM_128_KEY_LEN_WSALT (SRTP_AEAD_SALT_LEN + SRTP_AES_128_KEY_LEN) 122 #define SRTP_AES_GCM_192_KEY_LEN_WSALT (SRTP_AEAD_SALT_LEN + SRTP_AES_192_KEY_LEN) 123 #define SRTP_AES_GCM_256_KEY_LEN_WSALT (SRTP_AEAD_SALT_LEN + SRTP_AES_256_KEY_LEN) 193 typedef struct srtp_ctx_t_ srtp_ctx_t;
289 unsigned char *mki_id;
290 unsigned int mki_size;
475 int *pkt_octet_len,
unsigned int use_mki,
476 unsigned int mki_index);
568 unsigned int use_mki);
745 #define srtp_crypto_policy_set_aes_cm_128_hmac_sha1_80(p) srtp_crypto_policy_set_rtp_default(p) 1205 srtp_profile_reserved = 0,
1206 srtp_profile_aes128_cm_sha1_80 = 1,
1207 srtp_profile_aes128_cm_sha1_32 = 2,
1208 srtp_profile_null_sha1_80 = 5,
1209 srtp_profile_null_sha1_32 = 6,
1210 srtp_profile_aead_aes_128_gcm = 7,
1211 srtp_profile_aead_aes_256_gcm = 8,
1295 unsigned char *salt,
unsigned int bytes_in_salt);
1412 unsigned int use_mki,
unsigned int mki_index);
1501 unsigned int use_mki);
1736 uint32_t mki_index, uint32_t *length);
1748 uint32_t mki_index, uint32_t *length);
1778 #define SRTCP_E_BIT 0x80000000 1780 #define SRTCP_E_BYTE_BIT 0x80 1781 #define SRTCP_INDEX_MASK 0x7fffffff
srtp_err_status_t srtp_set_stream_roc(srtp_t session, uint32_t ssrc, uint32_t roc)
srtp_set_stream_roc(session, ssrc, roc)
uint32_t ssrc
Definition: srtp.h:1625
void srtp_append_salt_to_key(unsigned char *key, unsigned int bytes_in_key, unsigned char *salt, unsigned int bytes_in_salt)
appends the salt to the key
srtp_t session
Definition: srtp.h:1624
struct srtp_ekt_policy_ctx_t * srtp_ekt_policy_t
points to an EKT policy
Definition: srtp.h:273
srtp_err_status_t srtp_dealloc(srtp_t s)
srtp_dealloc() deallocates storage for an SRTP session context.
srtp_err_status_t srtp_protect_rtcp_mki(srtp_t ctx, void *rtcp_hdr, int *pkt_octet_len, unsigned int use_mki, unsigned int mki_index)
srtp_protect_rtcp_mki() is the Secure RTCP sender-side packet processing function that can utilize mk...
srtp_crypto_policy_t describes a particular crypto policy that can be applied to an SRTP stream...
Definition: srtp.h:220
int cipher_key_len
Definition: srtp.h:223
srtp_err_status_t srtp_shutdown(void)
srtp_shutdown() de-initializes the srtp library.
srtp_ssrc_type_t type
Definition: srtp.h:265
srtp_err_status_t srtp_install_log_handler(srtp_log_handler_func_t func, void *data)
sets the log handler to the function supplied by the caller.
int * enc_xtn_hdr
Definition: srtp.h:342
struct srtp_crypto_policy_t srtp_crypto_policy_t
srtp_crypto_policy_t describes a particular crypto policy that can be applied to an SRTP stream...
unsigned int srtp_get_version(void)
Returns the numeric representation of the library version.
void srtp_crypto_policy_set_null_cipher_hmac_null(srtp_crypto_policy_t *p)
srtp_crypto_policy_set_null_cipher_hmac_null() sets a crypto policy structure to use no encryption or...
srtp_crypto_policy_t rtcp
Definition: srtp.h:327
void srtp_crypto_policy_set_aes_cm_192_null_auth(srtp_crypto_policy_t *p)
srtp_crypto_policy_set_aes_cm_192_null_auth() sets a crypto policy structure to an encryption-only po...
struct srtp_policy_t * next
Definition: srtp.h:344
srtp_event_t event
Definition: srtp.h:1626
void srtp_crypto_policy_set_aes_gcm_128_16_auth(srtp_crypto_policy_t *p)
srtp_crypto_policy_set_aes_gcm_128_16_auth() sets a crypto policy structure to an AEAD encryption pol...
srtp_master_key_t represents a master key. There will be a Master Key Index and the Master Key associ...
Definition: srtp.h:287
uint32_t srtp_cipher_type_id_t
A srtp_cipher_type_id_t is an identifier for a particular cipher type.
Definition: srtp.h:137
void srtp_crypto_policy_set_aes_cm_192_hmac_sha1_32(srtp_crypto_policy_t *p)
srtp_crypto_policy_set_aes_cm_192_hmac_sha1_32() sets a crypto policy structure to a short-authentica...
srtp_err_status_t srtp_update_stream(srtp_t session, const srtp_policy_t *policy)
srtp_update_stream() udpates a SRTP stream.
srtp_log_level_t
srtp_log_level_t defines log levels.
Definition: srtp.h:1692
void srtp_crypto_policy_set_aes_cm_128_hmac_sha1_32(srtp_crypto_policy_t *p)
srtp_crypto_policy_set_aes_cm_128_hmac_sha1_32() sets a crypto policy structure to a short-authentica...
srtp_err_status_t srtp_list_debug_modules(void)
srtp_list_debug_modules() outputs a list of debugging modules
struct srtp_master_key_t srtp_master_key_t
srtp_master_key_t represents a master key. There will be a Master Key Index and the Master Key associ...
srtp_err_status_t srtp_crypto_policy_set_from_profile_for_rtcp(srtp_crypto_policy_t *policy, srtp_profile_t profile)
srtp_crypto_policy_set_from_profile_for_rtcp() sets a crypto policy structure to the appropriate valu...
void srtp_crypto_policy_set_aes_gcm_128_8_auth(srtp_crypto_policy_t *p)
srtp_crypto_policy_set_aes_gcm_128_8_auth() sets a crypto policy structure to an AEAD encryption poli...
srtp_err_status_t srtp_get_stream_roc(srtp_t session, uint32_t ssrc, uint32_t *roc)
srtp_get_stream_roc(session, ssrc, roc)
void srtp_crypto_policy_set_aes_cm_192_hmac_sha1_80(srtp_crypto_policy_t *p)
srtp_crypto_policy_set_aes_cm_192_hmac_sha1_80() sets a crypto policy structure to a encryption and a...
srtp_ekt_policy_t ekt
Definition: srtp.h:332
int auth_tag_len
Definition: srtp.h:229
struct srtp_event_data_t srtp_event_data_t
srtp_event_data_t is the structure passed as a callback to the event handler function ...
srtp_err_status_t srtp_create(srtp_t *session, const srtp_policy_t *policy)
srtp_create() allocates and initializes an SRTP session.
struct srtp_policy_t srtp_policy_t
represents the policy for an SRTP session.
void srtp_crypto_policy_set_null_cipher_hmac_sha1_80(srtp_crypto_policy_t *p)
srtp_crypto_policy_set_null_cipher_hmac_sha1_80() sets a crypto policy structure to an authentication...
unsigned char * key
Definition: srtp.h:328
srtp_event_data_t is the structure passed as a callback to the event handler function ...
Definition: srtp.h:1623
srtp_err_status_t srtp_crypto_policy_set_from_profile_for_rtp(srtp_crypto_policy_t *policy, srtp_profile_t profile)
srtp_crypto_policy_set_from_profile_for_rtp() sets a crypto policy structure to the appropriate value...
srtp_event_t
srtp_event_t defines events that need to be handled
Definition: srtp.h:1600
srtp_err_status_t srtp_get_protect_rtcp_trailer_length(srtp_t session, uint32_t use_mki, uint32_t mki_index, uint32_t *length)
srtp_get_protect_rtcp_trailer_length(session, use_mki, mki_index, length)
unsigned int srtp_profile_get_master_key_length(srtp_profile_t profile)
returns the master key length for a given SRTP profile
void srtp_crypto_policy_set_aes_cm_128_null_auth(srtp_crypto_policy_t *p)
srtp_crypto_policy_set_aes_cm_128_null_auth() sets a crypto policy structure to an encryption-only po...
srtp_err_status_t srtp_set_debug_module(const char *mod_name, int v)
srtp_set_debug_module(mod_name, v)
srtp_cipher_type_id_t cipher_type
Definition: srtp.h:221
srtp_crypto_policy_t rtp
Definition: srtp.h:326
srtp_err_status_t srtp_unprotect_rtcp_mki(srtp_t ctx, void *srtcp_hdr, int *pkt_octet_len, unsigned int use_mki)
srtp_unprotect_rtcp() is the Secure RTCP receiver-side packet processing function.
srtp_ssrc_type_t
srtp_ssrc_type_t describes the type of an SSRC.
Definition: srtp.h:243
srtp_err_status_t srtp_install_event_handler(srtp_event_handler_func_t func)
sets the event handler to the function supplied by the caller.
void() srtp_event_handler_func_t(srtp_event_data_t *data)
srtp_event_handler_func_t is the function prototype for the event handler.
Definition: srtp.h:1640
unsigned long num_master_keys
Definition: srtp.h:331
uint32_t srtp_auth_type_id_t
An srtp_auth_type_id_t is an identifier for a particular authentication function. ...
Definition: srtp.h:151
srtp_err_status_t srtp_protect_mki(srtp_ctx_t *ctx, void *rtp_hdr, int *pkt_octet_len, unsigned int use_mki, unsigned int mki_index)
srtp_protect_mki() is the Secure RTP sender-side packet processing function that can utilize MKI...
void srtp_crypto_policy_set_aes_gcm_256_16_auth(srtp_crypto_policy_t *p)
srtp_crypto_policy_set_aes_gcm_256_16_auth() sets a crypto policy structure to an AEAD encryption pol...
srtp_err_status_t srtp_protect_rtcp(srtp_t ctx, void *rtcp_hdr, int *pkt_octet_len)
srtp_protect_rtcp() is the Secure RTCP sender-side packet processing function.
srtp_ssrc_t ssrc
Definition: srtp.h:321
void srtp_crypto_policy_set_aes_gcm_256_8_only_auth(srtp_crypto_policy_t *p)
srtp_crypto_policy_set_aes_gcm_256_8_only_auth() sets a crypto policy structure to an AEAD authentica...
int enc_xtn_hdr_count
Definition: srtp.h:343
void srtp_crypto_policy_set_aes_gcm_256_8_auth(srtp_crypto_policy_t *p)
srtp_crypto_policy_set_aes_gcm_256_8_auth() sets a crypto policy structure to an AEAD encryption poli...
srtp_err_status_t srtp_unprotect_mki(srtp_t ctx, void *srtp_hdr, int *len_ptr, unsigned int use_mki)
srtp_unprotect_mki() is the Secure RTP receiver-side packet processing function that checks for MKI...
void() srtp_log_handler_func_t(srtp_log_level_t level, const char *msg, void *data)
srtp_log_handler_func_t is the function prototype for the log handler.
Definition: srtp.h:1709
srtp_err_status_t
srtp_err_status_t defines error codes.
Definition: srtp.h:161
srtp_auth_type_id_t auth_type
Definition: srtp.h:225
unsigned int srtp_profile_get_master_salt_length(srtp_profile_t profile)
returns the master salt length for a given SRTP profile
srtp_ctx_t * srtp_t
An srtp_t points to an SRTP session structure.
Definition: srtp.h:363
srtp_err_status_t srtp_unprotect_rtcp(srtp_t ctx, void *srtcp_hdr, int *pkt_octet_len)
srtp_unprotect_rtcp() is the Secure RTCP receiver-side packet processing function.
void * srtp_get_user_data(srtp_t ctx)
srtp_get_user_data() retrieves the pointer to the custom data previously stored with srtp_set_user_da...
void srtp_crypto_policy_set_rtcp_default(srtp_crypto_policy_t *p)
srtp_crypto_policy_set_rtcp_default() sets a crypto policy structure to the SRTP default policy for R...
srtp_sec_serv_t
srtp_sec_serv_t describes a set of security services.
Definition: srtp.h:203
void srtp_crypto_policy_set_aes_gcm_128_8_only_auth(srtp_crypto_policy_t *p)
srtp_crypto_policy_set_aes_gcm_128_8_only_auth() sets a crypto policy structure to an AEAD authentica...
srtp_err_status_t srtp_init(void)
srtp_init() initializes the srtp library.
const char * srtp_get_version_string(void)
Returns the version string of the library.
unsigned int value
Definition: srtp.h:266
struct srtp_ekt_stream_ctx_t * srtp_ekt_stream_t
points to EKT stream data
Definition: srtp.h:279
unsigned long window_size
Definition: srtp.h:334
represents the policy for an SRTP session.
Definition: srtp.h:320
srtp_err_status_t srtp_unprotect(srtp_t ctx, void *srtp_hdr, int *len_ptr)
srtp_unprotect() is the Secure RTP receiver-side packet processing function.
void srtp_crypto_policy_set_aes_cm_256_null_auth(srtp_crypto_policy_t *p)
srtp_crypto_policy_set_aes_cm_256_null_auth() sets a crypto policy structure to an encryption-only po...
srtp_err_status_t srtp_get_protect_trailer_length(srtp_t session, uint32_t use_mki, uint32_t mki_index, uint32_t *length)
srtp_get_protect_trailer_length(session, use_mki, mki_index, length)
int allow_repeat_tx
Definition: srtp.h:336
void srtp_crypto_policy_set_aes_cm_256_hmac_sha1_32(srtp_crypto_policy_t *p)
srtp_crypto_policy_set_aes_cm_256_hmac_sha1_32() sets a crypto policy structure to a short-authentica...
srtp_sec_serv_t sec_serv
Definition: srtp.h:231
srtp_err_status_t srtp_remove_stream(srtp_t session, unsigned int ssrc)
srtp_remove_stream() deallocates an SRTP stream.
void srtp_set_user_data(srtp_t ctx, void *data)
srtp_set_user_data() stores the given pointer into the SRTP session for later retrieval.
void srtp_crypto_policy_set_rtp_default(srtp_crypto_policy_t *p)
srtp_crypto_policy_set_rtp_default() sets a crypto policy structure to the SRTP default policy for RT...
srtp_err_status_t srtp_add_stream(srtp_t session, const srtp_policy_t *policy)
srtp_add_stream() allocates and initializes an SRTP stream within a given SRTP session.
int auth_key_len
Definition: srtp.h:227
void srtp_crypto_policy_set_aes_cm_256_hmac_sha1_80(srtp_crypto_policy_t *p)
srtp_crypto_policy_set_aes_cm_256_hmac_sha1_80() sets a crypto policy structure to a encryption and a...
srtp_err_status_t srtp_protect(srtp_t ctx, void *rtp_hdr, int *len_ptr)
srtp_protect() is the Secure RTP sender-side packet processing function.
srtp_err_status_t srtp_update(srtp_t session, const srtp_policy_t *policy)
srtp_update() udpates all streams in the session.
An srtp_ssrc_t represents a particular SSRC value, or a `wildcard' SSRC.
Definition: srtp.h:264