@@ -7,6 +7,8 @@ use wolfssl_wolfcrypt::hmac::HMAC;
77use wolfssl_wolfcrypt:: kdf:: * ;
88#[ cfg( all( hmac, kdf_tls13) ) ]
99use wolfssl_wolfcrypt:: sha:: SHA256 ;
10+ #[ cfg( kdf_srtp) ]
11+ use wolfssl_wolfcrypt:: sys;
1012
1113#[ test]
1214#[ cfg( all( hmac, kdf_pbkdf2) ) ]
@@ -251,6 +253,66 @@ fn test_srtcp_kdf() {
251253 assert_eq ! ( key_s, expected_ks) ;
252254}
253255
256+ #[ test]
257+ #[ cfg( kdf_srtp) ]
258+ fn test_srtp_kdf_invalid_kdr_index ( ) {
259+ common:: setup ( ) ;
260+
261+ let key = [
262+ 0xc4u8 , 0x80 , 0x9f , 0x6d , 0x36 , 0x98 , 0x88 , 0x72 ,
263+ 0x8e , 0x26 , 0xad , 0xb5 , 0x32 , 0x12 , 0x98 , 0x90
264+ ] ;
265+ let salt = [
266+ 0x0eu8 , 0x23 , 0x00 , 0x6c , 0x6c , 0x04 , 0x4f , 0x56 ,
267+ 0x62 , 0x40 , 0x0e , 0x9d , 0x1b , 0xd6
268+ ] ;
269+ let index = [
270+ 0x48u8 , 0x71 , 0x65 , 0x64 , 0x9c , 0xca
271+ ] ;
272+ let max_valid = ( index. len ( ) * 8 ) as i32 ;
273+ let mut key_e = [ 0u8 ; 16 ] ;
274+ let mut key_a = [ 0u8 ; 20 ] ;
275+ let mut key_s = [ 0u8 ; 14 ] ;
276+
277+ let rc = srtp_kdf ( & key, & salt, -2 , & index, & mut key_e, & mut key_a, & mut key_s)
278+ . expect_err ( "srtp_kdf() should fail for kdr_index = -2" ) ;
279+ assert_eq ! ( rc, sys:: wolfCrypt_ErrorCodes_BAD_FUNC_ARG) ;
280+
281+ let rc = srtp_kdf ( & key, & salt, max_valid + 1 , & index, & mut key_e, & mut key_a, & mut key_s)
282+ . expect_err ( "srtp_kdf() should fail for too-large kdr_index" ) ;
283+ assert_eq ! ( rc, sys:: wolfCrypt_ErrorCodes_BAD_FUNC_ARG) ;
284+ }
285+
286+ #[ test]
287+ #[ cfg( kdf_srtp) ]
288+ fn test_srtcp_kdf_invalid_kdr_index ( ) {
289+ common:: setup ( ) ;
290+
291+ let key = [
292+ 0xc4u8 , 0x80 , 0x9f , 0x6d , 0x36 , 0x98 , 0x88 , 0x72 ,
293+ 0x8e , 0x26 , 0xad , 0xb5 , 0x32 , 0x12 , 0x98 , 0x90
294+ ] ;
295+ let salt = [
296+ 0x0eu8 , 0x23 , 0x00 , 0x6c , 0x6c , 0x04 , 0x4f , 0x56 ,
297+ 0x62 , 0x40 , 0x0e , 0x9d , 0x1b , 0xd6
298+ ] ;
299+ let index = [
300+ 0x56u8 , 0xf3 , 0xf1 , 0x97
301+ ] ;
302+ let max_valid = ( index. len ( ) * 8 ) as i32 ;
303+ let mut key_e = [ 0u8 ; 16 ] ;
304+ let mut key_a = [ 0u8 ; 20 ] ;
305+ let mut key_s = [ 0u8 ; 14 ] ;
306+
307+ let rc = srtcp_kdf ( & key, & salt, -2 , & index, & mut key_e, & mut key_a, & mut key_s)
308+ . expect_err ( "srtcp_kdf() should fail for kdr_index = -2" ) ;
309+ assert_eq ! ( rc, sys:: wolfCrypt_ErrorCodes_BAD_FUNC_ARG) ;
310+
311+ let rc = srtcp_kdf ( & key, & salt, max_valid + 1 , & index, & mut key_e, & mut key_a, & mut key_s)
312+ . expect_err ( "srtcp_kdf() should fail for too-large kdr_index" ) ;
313+ assert_eq ! ( rc, sys:: wolfCrypt_ErrorCodes_BAD_FUNC_ARG) ;
314+ }
315+
254316#[ test]
255317#[ cfg( kdf_srtp) ]
256318fn test_srtp_kdr_to_idx ( ) {
0 commit comments