mirror of
https://github.com/signalwire/freeswitch.git
synced 2026-07-24 21:22:09 +00:00
update libsrtp to use openssl
This commit is contained in:
@@ -88,6 +88,13 @@ extern "C" {
|
||||
*/
|
||||
#define SRTP_MAX_TRAILER_LEN SRTP_MAX_TAG_LEN
|
||||
|
||||
/*
|
||||
* SRTP_AEAD_SALT_LEN is the length of the SALT values used with
|
||||
* GCM mode. GCM mode requires an IV. The SALT value is used
|
||||
* as part of the IV formation logic applied to each RTP packet.
|
||||
*/
|
||||
#define SRTP_AEAD_SALT_LEN 12
|
||||
|
||||
/*
|
||||
* nota bene: since libSRTP doesn't support the use of the MKI, the
|
||||
* SRTP_MAX_TRAILER_LEN value is just the maximum tag length
|
||||
@@ -663,6 +670,130 @@ void crypto_policy_set_aes_cm_256_hmac_sha1_80(crypto_policy_t *p);
|
||||
void
|
||||
crypto_policy_set_aes_cm_256_hmac_sha1_32(crypto_policy_t *p);
|
||||
|
||||
/**
|
||||
* @brief crypto_policy_set_aes_cm_256_null_auth() sets a crypto
|
||||
* policy structure to an encryption-only policy
|
||||
*
|
||||
* @param p is a pointer to the policy structure to be set
|
||||
*
|
||||
* The function call crypto_policy_set_aes_cm_256_null_auth(&p) sets
|
||||
* the crypto_policy_t at location p to use the SRTP default cipher
|
||||
* (AES-256 Counter Mode), but to use no authentication method. This
|
||||
* policy is NOT RECOMMENDED unless it is unavoidable; see Section 7.5
|
||||
* of RFC 3711 (http://www.ietf.org/rfc/rfc3711.txt).
|
||||
*
|
||||
* This function is a convenience that helps to avoid dealing directly
|
||||
* with the policy data structure. You are encouraged to initialize
|
||||
* policy elements with this function call. Doing so may allow your
|
||||
* code to be forward compatible with later versions of libSRTP that
|
||||
* include more elements in the crypto_policy_t datatype.
|
||||
*
|
||||
* @warning This policy is NOT RECOMMENDED for SRTP unless it is
|
||||
* unavoidable, and it is NOT RECOMMENDED at all for SRTCP; see
|
||||
* Section 7.5 of RFC 3711 (http://www.ietf.org/rfc/rfc3711.txt).
|
||||
*
|
||||
* @return void.
|
||||
*
|
||||
*/
|
||||
void
|
||||
crypto_policy_set_aes_cm_256_null_auth(crypto_policy_t *p);
|
||||
|
||||
/**
|
||||
* @brief crypto_policy_set_aes_gcm_128_8_auth() sets a crypto
|
||||
* policy structure to an AEAD encryption policy.
|
||||
*
|
||||
* @param p is a pointer to the policy structure to be set
|
||||
*
|
||||
* The function call crypto_policy_set_aes_gcm_128_8_auth(&p) sets
|
||||
* the crypto_policy_t at location p to use the SRTP default cipher
|
||||
* (AES-128 Galois Counter Mode) with 8 octet auth tag. This
|
||||
* policy applies confidentiality and authentication to both the
|
||||
* RTP and RTCP packets.
|
||||
*
|
||||
* This function is a convenience that helps to avoid dealing directly
|
||||
* with the policy data structure. You are encouraged to initialize
|
||||
* policy elements with this function call. Doing so may allow your
|
||||
* code to be forward compatible with later versions of libSRTP that
|
||||
* include more elements in the crypto_policy_t datatype.
|
||||
*
|
||||
* @return void.
|
||||
*
|
||||
*/
|
||||
void
|
||||
crypto_policy_set_aes_gcm_128_8_auth(crypto_policy_t *p);
|
||||
|
||||
/**
|
||||
* @brief crypto_policy_set_aes_gcm_256_8_auth() sets a crypto
|
||||
* policy structure to an AEAD encryption policy
|
||||
*
|
||||
* @param p is a pointer to the policy structure to be set
|
||||
*
|
||||
* The function call crypto_policy_set_aes_gcm_256_8_auth(&p) sets
|
||||
* the crypto_policy_t at location p to use the SRTP default cipher
|
||||
* (AES-256 Galois Counter Mode) with 8 octet auth tag. This
|
||||
* policy applies confidentiality and authentication to both the
|
||||
* RTP and RTCP packets.
|
||||
*
|
||||
* This function is a convenience that helps to avoid dealing directly
|
||||
* with the policy data structure. You are encouraged to initialize
|
||||
* policy elements with this function call. Doing so may allow your
|
||||
* code to be forward compatible with later versions of libSRTP that
|
||||
* include more elements in the crypto_policy_t datatype.
|
||||
*
|
||||
* @return void.
|
||||
*
|
||||
*/
|
||||
void
|
||||
crypto_policy_set_aes_gcm_256_8_auth(crypto_policy_t *p);
|
||||
|
||||
/**
|
||||
* @brief crypto_policy_set_aes_gcm_128_8_only_auth() sets a crypto
|
||||
* policy structure to an AEAD authentication-only policy
|
||||
*
|
||||
* @param p is a pointer to the policy structure to be set
|
||||
*
|
||||
* The function call crypto_policy_set_aes_gcm_128_8_only_auth(&p) sets
|
||||
* the crypto_policy_t at location p to use the SRTP default cipher
|
||||
* (AES-128 Galois Counter Mode) with 8 octet auth tag. This policy
|
||||
* applies confidentiality and authentication to the RTP packets,
|
||||
* but only authentication to the RTCP packets.
|
||||
*
|
||||
* This function is a convenience that helps to avoid dealing directly
|
||||
* with the policy data structure. You are encouraged to initialize
|
||||
* policy elements with this function call. Doing so may allow your
|
||||
* code to be forward compatible with later versions of libSRTP that
|
||||
* include more elements in the crypto_policy_t datatype.
|
||||
*
|
||||
* @return void.
|
||||
*
|
||||
*/
|
||||
void
|
||||
crypto_policy_set_aes_gcm_128_8_only_auth(crypto_policy_t *p);
|
||||
|
||||
/**
|
||||
* @brief crypto_policy_set_aes_gcm_256_8_only_auth() sets a crypto
|
||||
* policy structure to an AEAD authentication-only policy
|
||||
*
|
||||
* @param p is a pointer to the policy structure to be set
|
||||
*
|
||||
* The function call crypto_policy_set_aes_gcm_256_8_only_auth(&p) sets
|
||||
* the crypto_policy_t at location p to use the SRTP default cipher
|
||||
* (AES-256 Galois Counter Mode) with 8 octet auth tag. This policy
|
||||
* applies confidentiality and authentication to the RTP packets,
|
||||
* but only authentication to the RTCP packets.
|
||||
*
|
||||
* This function is a convenience that helps to avoid dealing directly
|
||||
* with the policy data structure. You are encouraged to initialize
|
||||
* policy elements with this function call. Doing so may allow your
|
||||
* code to be forward compatible with later versions of libSRTP that
|
||||
* include more elements in the crypto_policy_t datatype.
|
||||
*
|
||||
* @return void.
|
||||
*
|
||||
*/
|
||||
void
|
||||
crypto_policy_set_aes_gcm_256_8_only_auth(crypto_policy_t *p);
|
||||
|
||||
|
||||
/**
|
||||
* @brief srtp_dealloc() deallocates storage for an SRTP session
|
||||
|
||||
@@ -77,7 +77,7 @@ typedef struct {
|
||||
unsigned m:1; /* marker bit */
|
||||
unsigned seq:16; /* sequence number */
|
||||
unsigned ts:32; /* timestamp */
|
||||
unsigned ssrc:32; /* synchronization source */
|
||||
uint32_t ssrc; /* synchronization source */
|
||||
} srtp_hdr_t;
|
||||
|
||||
#else /* BIG_ENDIAN */
|
||||
@@ -91,7 +91,7 @@ typedef struct {
|
||||
unsigned pt:7; /* payload type */
|
||||
unsigned seq:16; /* sequence number */
|
||||
unsigned ts:32; /* timestamp */
|
||||
unsigned ssrc:32; /* synchronization source */
|
||||
uint32_t ssrc; /* synchronization source */
|
||||
} srtp_hdr_t;
|
||||
|
||||
#endif
|
||||
@@ -117,7 +117,7 @@ typedef struct {
|
||||
unsigned version:2; /* protocol version */
|
||||
unsigned pt:8; /* payload type */
|
||||
unsigned len:16; /* length */
|
||||
unsigned ssrc:32; /* synchronization source */
|
||||
uint32_t ssrc; /* synchronization source */
|
||||
} srtcp_hdr_t;
|
||||
|
||||
typedef struct {
|
||||
@@ -220,6 +220,8 @@ typedef struct srtp_stream_ctx_t {
|
||||
direction_t direction;
|
||||
int allow_repeat_tx;
|
||||
ekt_stream_t ekt;
|
||||
uint8_t salt[SRTP_AEAD_SALT_LEN]; /* used with GCM mode for SRTP */
|
||||
uint8_t c_salt[SRTP_AEAD_SALT_LEN]; /* used with GCM mode for SRTCP */
|
||||
struct srtp_stream_ctx_t *next; /* linked list of streams */
|
||||
} srtp_stream_ctx_t;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user