@@ -26375,6 +26375,61 @@ WOLFSSL_TEST_SUBROUTINE wc_test_ret_t srtpkdf_test(void)
2637526375 0xe1, 0x29, 0x4f, 0x61, 0x30, 0x3c, 0x4d, 0x46,
2637626376 0x5f, 0x5c, 0x81, 0x3c, 0x38, 0xb6
2637726377 };
26378+
26379+ /* SRTCP w/ 48-bit idx - KDR 0 (-1) */
26380+ WOLFSSL_SMALL_STACK_STATIC const byte mk48_1[] = {
26381+ 0xFF, 0xB6, 0xCB, 0x09, 0x71, 0x3F, 0x63, 0x4D,
26382+ 0x7F, 0x42, 0xED, 0xA8, 0x12, 0x81, 0x50, 0xE6
26383+ };
26384+ WOLFSSL_SMALL_STACK_STATIC const byte ms48_1[] = {
26385+ 0x1F, 0x04, 0x76, 0xC8, 0x7F, 0x58, 0x23, 0xEF,
26386+ 0xD3, 0x57, 0xB2, 0xBD, 0xF1, 0x32
26387+ };
26388+ WOLFSSL_SMALL_STACK_STATIC const byte srtcp48idx_1[] = {
26389+ 0x00, 0x00, 0x08, 0x56, 0xBC, 0x39
26390+ };
26391+ WOLFSSL_SMALL_STACK_STATIC const byte srtcpKe_48_1[] = {
26392+ 0xD2, 0xC3, 0xF3, 0x49, 0x00, 0x1A, 0x18, 0x0F,
26393+ 0xB6, 0x05, 0x5A, 0x5A, 0x67, 0x8E, 0xE5, 0xB2
26394+ };
26395+ WOLFSSL_SMALL_STACK_STATIC const byte srtcpKa_48_1[] = {
26396+ 0x8D, 0x54, 0xBE, 0xB5, 0x7B, 0x7F, 0x7A, 0xAB,
26397+ 0xF5, 0x46, 0xCE, 0x5B, 0x45, 0x69, 0x4A, 0x75,
26398+ 0x81, 0x2A, 0xE2, 0xCB
26399+ };
26400+ WOLFSSL_SMALL_STACK_STATIC const byte srtcpKs_48_1[] = {
26401+ 0x76, 0x3C, 0x97, 0x6A, 0x45, 0x31, 0xA7, 0x79,
26402+ 0x3C, 0x28, 0x4A, 0xA6, 0x82, 0x03
26403+ };
26404+
26405+ /* SRTCP w/ 48-bit idx - KDR 19 */
26406+ WOLFSSL_SMALL_STACK_STATIC const byte mk48_2[] = {
26407+ 0xBD, 0x1D, 0x71, 0x6B, 0xDA, 0x28, 0xE3, 0xFC,
26408+ 0xA5, 0xA0, 0x66, 0x3F, 0x2E, 0x34, 0xA8, 0x58
26409+ };
26410+ WOLFSSL_SMALL_STACK_STATIC const byte ms48_2[] = {
26411+ 0x79, 0x06, 0xE5, 0xAB, 0x5C, 0x2B, 0x1B, 0x69,
26412+ 0xFA, 0xEE, 0xD2, 0x29, 0x57, 0x3C
26413+ };
26414+ WOLFSSL_SMALL_STACK_STATIC const byte srtcp48idx_2[] = {
26415+ 0x00, 0x00, 0x59, 0xD0, 0xC2, 0xE8
26416+ };
26417+ WOLFSSL_SMALL_STACK_STATIC const byte srtcpKe_48_2[] = {
26418+ 0xB9, 0xD7, 0xAD, 0xD8, 0x90, 0x94, 0xC2, 0x92,
26419+ 0xA5, 0x04, 0x87, 0xC4, 0x8C, 0xEF, 0xE2, 0xA3
26420+ };
26421+ WOLFSSL_SMALL_STACK_STATIC const byte srtcpKa_48_2[] = {
26422+ 0x07, 0xD5, 0xC4, 0xD2, 0x06, 0xFB, 0x63, 0x15,
26423+ 0xC2, 0x9C, 0x7F, 0x55, 0xD1, 0x16, 0x5C, 0xB5,
26424+ 0xB7, 0x44, 0x54, 0xBD
26425+ };
26426+ WOLFSSL_SMALL_STACK_STATIC const byte srtcpKs_48_2[] = {
26427+ 0x0C, 0x5E, 0x53, 0xC1, 0xD0, 0x75, 0xAD, 0x65,
26428+ 0xBF, 0x51, 0x74, 0x50, 0x89, 0xD7
26429+ };
26430+ int kdr_48_1 = -1;
26431+ int kdr_48_2 = 19;
26432+
2637826433 #define SRTP_TV_CNT 4
2637926434 Srtp_Kdf_Tv tv[SRTP_TV_CNT] = {
2638026435 { key_0, (word32)sizeof(key_0), salt_0, (word32)sizeof(salt_0), -1,
@@ -26614,6 +26669,37 @@ WOLFSSL_TEST_SUBROUTINE wc_test_ret_t srtpkdf_test(void)
2661426669 return WC_TEST_RET_ENC_NC;
2661526670 }
2661626671
26672+ /* SRTCP w/ 48-bit IDX, 128-bit key test */
26673+ if (i == 0) {
26674+ ret = wc_SRTCP_KDF_ex(mk48_1, (word32)sizeof(mk48_1),
26675+ ms48_1, (word32)sizeof(ms48_1),
26676+ kdr_48_1, srtcp48idx_1, keyE, tv[i].keSz,
26677+ keyA, tv[i].kaSz, keyS, tv[i].ksSz,
26678+ WC_SRTCP_48BIT_IDX);
26679+ if (ret != 0)
26680+ return WC_TEST_RET_ENC_EC(ret);
26681+ if (XMEMCMP(keyE, srtcpKe_48_1, tv[i].keSz) != 0)
26682+ return WC_TEST_RET_ENC_NC;
26683+ if (XMEMCMP(keyA, srtcpKa_48_1, tv[i].kaSz) != 0)
26684+ return WC_TEST_RET_ENC_NC;
26685+ if (XMEMCMP(keyS, srtcpKs_48_1, tv[i].ksSz) != 0)
26686+ return WC_TEST_RET_ENC_NC;
26687+
26688+ ret = wc_SRTCP_KDF_ex(mk48_2, (word32)sizeof(mk48_2),
26689+ ms48_2, (word32)sizeof(ms48_2),
26690+ kdr_48_2, srtcp48idx_2, keyE, tv[i].keSz,
26691+ keyA, tv[i].kaSz, keyS, tv[i].ksSz,
26692+ WC_SRTCP_48BIT_IDX);
26693+ if (ret != 0)
26694+ return WC_TEST_RET_ENC_EC(ret);
26695+ if (XMEMCMP(keyE, srtcpKe_48_2, tv[i].keSz) != 0)
26696+ return WC_TEST_RET_ENC_NC;
26697+ if (XMEMCMP(keyA, srtcpKa_48_2, tv[i].kaSz) != 0)
26698+ return WC_TEST_RET_ENC_NC;
26699+ if (XMEMCMP(keyS, srtcpKs_48_2, tv[i].ksSz) != 0)
26700+ return WC_TEST_RET_ENC_NC;
26701+ }
26702+
2661726703 return 0;
2661826704}
2661926705#endif
0 commit comments