|
|
|
@@ -243,8 +243,8 @@ int ff_srtp_encrypt(struct SRTPContext *s, const uint8_t *in, int len, |
|
|
|
int rtcp, hmac_size, padding; |
|
|
|
uint8_t *buf; |
|
|
|
|
|
|
|
if (len < 12) |
|
|
|
return 0; |
|
|
|
if (len < 8) |
|
|
|
return AVERROR_INVALIDDATA; |
|
|
|
|
|
|
|
rtcp = RTP_PT_IS_RTCP(in[1]); |
|
|
|
hmac_size = rtcp ? s->rtcp_hmac_size : s->rtp_hmac_size; |
|
|
|
@@ -267,6 +267,10 @@ int ff_srtp_encrypt(struct SRTPContext *s, const uint8_t *in, int len, |
|
|
|
} else { |
|
|
|
int ext, csrc; |
|
|
|
int seq = AV_RB16(buf + 2); |
|
|
|
|
|
|
|
if (len < 12) |
|
|
|
return AVERROR_INVALIDDATA; |
|
|
|
|
|
|
|
ssrc = AV_RB32(buf + 8); |
|
|
|
|
|
|
|
if (seq < s->seq_largest) |
|
|
|
@@ -326,9 +330,7 @@ static const char *aes128_80_key = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmn"; |
|
|
|
|
|
|
|
static const uint8_t rtp_aes128_80[] = { |
|
|
|
// RTP header |
|
|
|
0x80, 0xe0, 0x12, 0x34, |
|
|
|
0x12, 0x34, 0x56, 0x78, |
|
|
|
0x12, 0x34, 0x56, 0x78, |
|
|
|
0x80, 0xe0, 0x12, 0x34, 0x12, 0x34, 0x56, 0x78, 0x12, 0x34, 0x56, 0x78, |
|
|
|
// encrypted payload |
|
|
|
0x62, 0x69, 0x76, 0xca, 0xc5, |
|
|
|
// HMAC |
|
|
|
@@ -337,15 +339,10 @@ static const uint8_t rtp_aes128_80[] = { |
|
|
|
|
|
|
|
static const uint8_t rtcp_aes128_80[] = { |
|
|
|
// RTCP header |
|
|
|
0x81, 0xc9, 0x00, 0x07, |
|
|
|
0x12, 0x34, 0x56, 0x78, |
|
|
|
0x81, 0xc9, 0x00, 0x07, 0x12, 0x34, 0x56, 0x78, |
|
|
|
// encrypted payload |
|
|
|
0x8a, 0xac, 0xdc, 0xa5, |
|
|
|
0x4c, 0xf6, 0x78, 0xa6, |
|
|
|
0x62, 0x8f, 0x24, 0xda, |
|
|
|
0x6c, 0x09, 0x3f, 0xa9, |
|
|
|
0x28, 0x7a, 0xb5, 0x7f, |
|
|
|
0x1f, 0x0f, 0xc9, 0x35, |
|
|
|
0x8a, 0xac, 0xdc, 0xa5, 0x4c, 0xf6, 0x78, 0xa6, 0x62, 0x8f, 0x24, 0xda, |
|
|
|
0x6c, 0x09, 0x3f, 0xa9, 0x28, 0x7a, 0xb5, 0x7f, 0x1f, 0x0f, 0xc9, 0x35, |
|
|
|
// RTCP index |
|
|
|
0x80, 0x00, 0x00, 0x03, |
|
|
|
// HMAC |
|
|
|
@@ -356,9 +353,7 @@ static const char *aes128_32_key = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmn"; |
|
|
|
|
|
|
|
static const uint8_t rtp_aes128_32[] = { |
|
|
|
// RTP header |
|
|
|
0x80, 0xe0, 0x12, 0x34, |
|
|
|
0x12, 0x34, 0x56, 0x78, |
|
|
|
0x12, 0x34, 0x56, 0x78, |
|
|
|
0x80, 0xe0, 0x12, 0x34, 0x12, 0x34, 0x56, 0x78, 0x12, 0x34, 0x56, 0x78, |
|
|
|
// encrypted payload |
|
|
|
0x62, 0x69, 0x76, 0xca, 0xc5, |
|
|
|
// HMAC |
|
|
|
@@ -367,15 +362,10 @@ static const uint8_t rtp_aes128_32[] = { |
|
|
|
|
|
|
|
static const uint8_t rtcp_aes128_32[] = { |
|
|
|
// RTCP header |
|
|
|
0x81, 0xc9, 0x00, 0x07, |
|
|
|
0x12, 0x34, 0x56, 0x78, |
|
|
|
0x81, 0xc9, 0x00, 0x07, 0x12, 0x34, 0x56, 0x78, |
|
|
|
// encrypted payload |
|
|
|
0x35, 0xe9, 0xb5, 0xff, |
|
|
|
0x0d, 0xd1, 0xde, 0x70, |
|
|
|
0x74, 0x10, 0xaa, 0x1b, |
|
|
|
0xb2, 0x8d, 0xf0, 0x20, |
|
|
|
0x02, 0x99, 0x6b, 0x1b, |
|
|
|
0x0b, 0xd0, 0x47, 0x34, |
|
|
|
0x35, 0xe9, 0xb5, 0xff, 0x0d, 0xd1, 0xde, 0x70, 0x74, 0x10, 0xaa, 0x1b, |
|
|
|
0xb2, 0x8d, 0xf0, 0x20, 0x02, 0x99, 0x6b, 0x1b, 0x0b, 0xd0, 0x47, 0x34, |
|
|
|
// RTCP index |
|
|
|
0x80, 0x00, 0x00, 0x04, |
|
|
|
// HMAC |
|
|
|
|