@@ -99,8 +99,6 @@ srtp_err_status_t srtp_test_get_roc(void);
99
99
100
100
srtp_err_status_t srtp_test_set_receiver_roc (void );
101
101
102
- srtp_err_status_t srtp_test_set_receiver_roc_then_rollover (void );
103
-
104
102
srtp_err_status_t srtp_test_set_sender_roc (void );
105
103
106
104
double srtp_bits_per_second (int msg_len_octets , const srtp_policy_t * policy );
@@ -588,14 +586,6 @@ int main(int argc, char *argv[])
588
586
exit (1 );
589
587
}
590
588
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
-
599
589
printf ("testing srtp_test_set_sender_roc()..." );
600
590
if (srtp_test_set_sender_roc () == srtp_err_status_ok ) {
601
591
printf ("passed\n" );
@@ -3483,6 +3473,7 @@ static srtp_err_status_t test_set_receiver_roc(uint32_t packets,
3483
3473
uint32_t i ;
3484
3474
uint32_t ts ;
3485
3475
uint16_t seq ;
3476
+ uint16_t stride ;
3486
3477
3487
3478
int msg_len_octets = 32 ;
3488
3479
int protected_msg_len_octets_1 ;
@@ -3509,9 +3500,11 @@ static srtp_err_status_t test_set_receiver_roc(uint32_t packets,
3509
3500
}
3510
3501
3511
3502
/* Create and protect packets */
3503
+ i = 0 ;
3512
3504
seq = 0 ;
3513
3505
ts = 0 ;
3514
- for (i = 0 ; i < packets ; i ++ ) {
3506
+ stride = 0x4000 ;
3507
+ while (i < packets ) {
3515
3508
srtp_hdr_t * tmp_pkt ;
3516
3509
int tmp_len ;
3517
3510
@@ -3523,7 +3516,12 @@ static srtp_err_status_t test_set_receiver_roc(uint32_t packets,
3523
3516
return status ;
3524
3517
}
3525
3518
3526
- seq ++ ;
3519
+ while (stride > (packets - i ) && stride > 1 ) {
3520
+ stride >>= 1 ;
3521
+ }
3522
+
3523
+ i += stride ;
3524
+ seq += stride ;
3527
3525
ts ++ ;
3528
3526
}
3529
3527
@@ -3789,183 +3787,11 @@ srtp_err_status_t srtp_test_set_receiver_roc()
3789
3787
return status ;
3790
3788
}
3791
3789
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 );
3861
3791
if (status ) {
3862
3792
return status ;
3863
3793
}
3864
3794
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
-
3969
3795
return srtp_err_status_ok ;
3970
3796
}
3971
3797
0 commit comments