Skip to content

Commit 8974bab

Browse files
authored
Merge pull request #596 from bifurcation/faster-test
Speed up SRTP driver tests
2 parents 86872f3 + 94e7d40 commit 8974bab

File tree

1 file changed

+11
-185
lines changed

1 file changed

+11
-185
lines changed

test/srtp_driver.c

Lines changed: 11 additions & 185 deletions
Original file line numberDiff line numberDiff line change
@@ -99,8 +99,6 @@ srtp_err_status_t srtp_test_get_roc(void);
9999

100100
srtp_err_status_t srtp_test_set_receiver_roc(void);
101101

102-
srtp_err_status_t srtp_test_set_receiver_roc_then_rollover(void);
103-
104102
srtp_err_status_t srtp_test_set_sender_roc(void);
105103

106104
double srtp_bits_per_second(int msg_len_octets, const srtp_policy_t *policy);
@@ -588,14 +586,6 @@ int main(int argc, char *argv[])
588586
exit(1);
589587
}
590588

591-
printf("testing srtp_test_set_receiver_roc_then_rollover()...");
592-
if (srtp_test_set_receiver_roc_then_rollover() == srtp_err_status_ok) {
593-
printf("passed\n");
594-
} else {
595-
printf("failed\n");
596-
exit(1);
597-
}
598-
599589
printf("testing srtp_test_set_sender_roc()...");
600590
if (srtp_test_set_sender_roc() == srtp_err_status_ok) {
601591
printf("passed\n");
@@ -3483,6 +3473,7 @@ static srtp_err_status_t test_set_receiver_roc(uint32_t packets,
34833473
uint32_t i;
34843474
uint32_t ts;
34853475
uint16_t seq;
3476+
uint16_t stride;
34863477

34873478
int msg_len_octets = 32;
34883479
int protected_msg_len_octets_1;
@@ -3509,9 +3500,11 @@ static srtp_err_status_t test_set_receiver_roc(uint32_t packets,
35093500
}
35103501

35113502
/* Create and protect packets */
3503+
i = 0;
35123504
seq = 0;
35133505
ts = 0;
3514-
for (i = 0; i < packets; i++) {
3506+
stride = 0x4000;
3507+
while (i < packets) {
35153508
srtp_hdr_t *tmp_pkt;
35163509
int tmp_len;
35173510

@@ -3523,7 +3516,12 @@ static srtp_err_status_t test_set_receiver_roc(uint32_t packets,
35233516
return status;
35243517
}
35253518

3526-
seq++;
3519+
while (stride > (packets - i) && stride > 1) {
3520+
stride >>= 1;
3521+
}
3522+
3523+
i += stride;
3524+
seq += stride;
35273525
ts++;
35283526
}
35293527

@@ -3789,183 +3787,11 @@ srtp_err_status_t srtp_test_set_receiver_roc()
37893787
return status;
37903788
}
37913789

3792-
return srtp_err_status_ok;
3793-
}
3794-
3795-
srtp_err_status_t srtp_test_set_receiver_roc_then_rollover()
3796-
{
3797-
srtp_err_status_t status;
3798-
3799-
srtp_policy_t sender_policy;
3800-
srtp_t sender_session;
3801-
3802-
srtp_policy_t receiver_policy;
3803-
srtp_t receiver_session;
3804-
3805-
srtp_hdr_t *pkt_1;
3806-
unsigned char *recv_pkt_1;
3807-
3808-
srtp_hdr_t *pkt_2;
3809-
unsigned char *recv_pkt_2;
3810-
3811-
uint32_t i;
3812-
uint32_t ts;
3813-
uint16_t seq;
3814-
uint32_t sender_roc;
3815-
3816-
int msg_len_octets = 32;
3817-
int protected_msg_len_octets_1;
3818-
int protected_msg_len_octets_2;
3819-
3820-
/* Create sender */
3821-
memset(&sender_policy, 0, sizeof(sender_policy));
3822-
#ifdef GCM
3823-
srtp_crypto_policy_set_aes_gcm_128_16_auth(&sender_policy.rtp);
3824-
srtp_crypto_policy_set_aes_gcm_128_16_auth(&sender_policy.rtcp);
3825-
sender_policy.key = test_key_gcm;
3826-
#else
3827-
srtp_crypto_policy_set_rtp_default(&sender_policy.rtp);
3828-
srtp_crypto_policy_set_rtcp_default(&sender_policy.rtcp);
3829-
sender_policy.key = test_key;
3830-
#endif
3831-
sender_policy.ssrc.type = ssrc_specific;
3832-
sender_policy.ssrc.value = 0xcafebabe;
3833-
sender_policy.window_size = 128;
3834-
3835-
status = srtp_create(&sender_session, &sender_policy);
3836-
if (status) {
3837-
return status;
3838-
}
3839-
3840-
/* Create and protect packets to get to seq 65536 and roc == 1 */
3841-
seq = 65535;
3842-
ts = 0;
3843-
for (i = 0; i < 65535; i++) {
3844-
srtp_hdr_t *tmp_pkt;
3845-
int tmp_len;
3846-
3847-
tmp_pkt = srtp_create_test_packet_extended(
3848-
msg_len_octets, sender_policy.ssrc.value, seq, ts, &tmp_len);
3849-
status = srtp_protect(sender_session, tmp_pkt, &tmp_len);
3850-
free(tmp_pkt);
3851-
if (status) {
3852-
return status;
3853-
}
3854-
3855-
seq++;
3856-
ts++;
3857-
}
3858-
3859-
status = srtp_get_stream_roc(sender_session, sender_policy.ssrc.value,
3860-
&sender_roc);
3790+
status = test_set_receiver_roc(packets + 65535, roc);
38613791
if (status) {
38623792
return status;
38633793
}
38643794

3865-
if (sender_roc != 1) {
3866-
return srtp_err_status_fail;
3867-
}
3868-
3869-
/* Create the first packet to decrypt and test for ROC change */
3870-
pkt_1 = srtp_create_test_packet_extended(msg_len_octets,
3871-
sender_policy.ssrc.value, 65535,
3872-
ts, &protected_msg_len_octets_1);
3873-
status = srtp_protect(sender_session, pkt_1, &protected_msg_len_octets_1);
3874-
if (status) {
3875-
return status;
3876-
}
3877-
3878-
/* Create the second packet to decrypt and test for ROC change */
3879-
ts++;
3880-
pkt_2 = srtp_create_test_packet_extended(msg_len_octets,
3881-
sender_policy.ssrc.value, 0, ts,
3882-
&protected_msg_len_octets_2);
3883-
status = srtp_protect(sender_session, pkt_2, &protected_msg_len_octets_2);
3884-
if (status) {
3885-
return status;
3886-
}
3887-
3888-
status = srtp_get_stream_roc(sender_session, sender_policy.ssrc.value,
3889-
&sender_roc);
3890-
if (status) {
3891-
return status;
3892-
}
3893-
3894-
if (sender_roc != 2) {
3895-
return srtp_err_status_fail;
3896-
}
3897-
3898-
/* Create the receiver */
3899-
memset(&receiver_policy, 0, sizeof(receiver_policy));
3900-
#ifdef GCM
3901-
srtp_crypto_policy_set_aes_gcm_128_16_auth(&receiver_policy.rtp);
3902-
srtp_crypto_policy_set_aes_gcm_128_16_auth(&receiver_policy.rtcp);
3903-
receiver_policy.key = test_key_gcm;
3904-
#else
3905-
srtp_crypto_policy_set_rtp_default(&receiver_policy.rtp);
3906-
srtp_crypto_policy_set_rtcp_default(&receiver_policy.rtcp);
3907-
receiver_policy.key = test_key;
3908-
#endif
3909-
receiver_policy.ssrc.type = ssrc_specific;
3910-
receiver_policy.ssrc.value = sender_policy.ssrc.value;
3911-
receiver_policy.window_size = 128;
3912-
3913-
status = srtp_create(&receiver_session, &receiver_policy);
3914-
if (status) {
3915-
return status;
3916-
}
3917-
3918-
/* Make a copy of the first sent protected packet */
3919-
recv_pkt_1 = malloc(protected_msg_len_octets_1);
3920-
if (recv_pkt_1 == NULL) {
3921-
return srtp_err_status_fail;
3922-
}
3923-
memcpy(recv_pkt_1, pkt_1, protected_msg_len_octets_1);
3924-
3925-
/* Make a copy of the second sent protected packet */
3926-
recv_pkt_2 = malloc(protected_msg_len_octets_2);
3927-
if (recv_pkt_2 == NULL) {
3928-
return srtp_err_status_fail;
3929-
}
3930-
memcpy(recv_pkt_2, pkt_2, protected_msg_len_octets_2);
3931-
3932-
/* Set the ROC to the wanted value */
3933-
status =
3934-
srtp_set_stream_roc(receiver_session, receiver_policy.ssrc.value, 1);
3935-
if (status) {
3936-
return status;
3937-
}
3938-
3939-
/* Unprotect the first packet */
3940-
status = srtp_unprotect(receiver_session, recv_pkt_1,
3941-
&protected_msg_len_octets_1);
3942-
if (status) {
3943-
return status;
3944-
}
3945-
3946-
/* Unprotect the second packet */
3947-
status = srtp_unprotect(receiver_session, recv_pkt_2,
3948-
&protected_msg_len_octets_2);
3949-
if (status) {
3950-
return status;
3951-
}
3952-
3953-
/* Cleanup */
3954-
status = srtp_dealloc(sender_session);
3955-
if (status) {
3956-
return status;
3957-
}
3958-
3959-
status = srtp_dealloc(receiver_session);
3960-
if (status) {
3961-
return status;
3962-
}
3963-
3964-
free(pkt_1);
3965-
free(recv_pkt_1);
3966-
free(pkt_2);
3967-
free(recv_pkt_2);
3968-
39693795
return srtp_err_status_ok;
39703796
}
39713797

0 commit comments

Comments
 (0)