| OLD | NEW |
| 1 /* | 1 /* |
| 2 * libjingle | 2 * libjingle |
| 3 * Copyright 2004 Google Inc. | 3 * Copyright 2004 Google Inc. |
| 4 * | 4 * |
| 5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
| 6 * modification, are permitted provided that the following conditions are met: | 6 * modification, are permitted provided that the following conditions are met: |
| 7 * | 7 * |
| 8 * 1. Redistributions of source code must retain the above copyright notice, | 8 * 1. Redistributions of source code must retain the above copyright notice, |
| 9 * this list of conditions and the following disclaimer. | 9 * this list of conditions and the following disclaimer. |
| 10 * 2. Redistributions in binary form must reproduce the above copyright notice, | 10 * 2. Redistributions in binary form must reproduce the above copyright notice, |
| (...skipping 490 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 501 // Complete the negotiation. | 501 // Complete the negotiation. |
| 502 EXPECT_TRUE(f2_.SetAnswer(answer, CS_LOCAL)); | 502 EXPECT_TRUE(f2_.SetAnswer(answer, CS_LOCAL)); |
| 503 EXPECT_TRUE(f1_.SetAnswer(answer, CS_REMOTE)); | 503 EXPECT_TRUE(f1_.SetAnswer(answer, CS_REMOTE)); |
| 504 | 504 |
| 505 EXPECT_FALSE(f1_.IsActive()); | 505 EXPECT_FALSE(f1_.IsActive()); |
| 506 EXPECT_FALSE(f2_.IsActive()); | 506 EXPECT_FALSE(f2_.IsActive()); |
| 507 } | 507 } |
| 508 | 508 |
| 509 // Test directly setting the params with AES_CM_128_HMAC_SHA1_80 | 509 // Test directly setting the params with AES_CM_128_HMAC_SHA1_80 |
| 510 TEST_F(SrtpFilterTest, TestProtect_SetParamsDirect_AES_CM_128_HMAC_SHA1_80) { | 510 TEST_F(SrtpFilterTest, TestProtect_SetParamsDirect_AES_CM_128_HMAC_SHA1_80) { |
| 511 EXPECT_TRUE(f1_.SetRtpParams(CS_AES_CM_128_HMAC_SHA1_80, | 511 EXPECT_TRUE(f1_.SetRtpParams(rtc::SRTP_AES128_CM_SHA1_80, kTestKey1, |
| 512 kTestKey1, kTestKeyLen, | 512 kTestKeyLen, rtc::SRTP_AES128_CM_SHA1_80, |
| 513 CS_AES_CM_128_HMAC_SHA1_80, | |
| 514 kTestKey2, kTestKeyLen)); | 513 kTestKey2, kTestKeyLen)); |
| 515 EXPECT_TRUE(f2_.SetRtpParams(CS_AES_CM_128_HMAC_SHA1_80, | 514 EXPECT_TRUE(f2_.SetRtpParams(rtc::SRTP_AES128_CM_SHA1_80, kTestKey2, |
| 516 kTestKey2, kTestKeyLen, | 515 kTestKeyLen, rtc::SRTP_AES128_CM_SHA1_80, |
| 517 CS_AES_CM_128_HMAC_SHA1_80, | |
| 518 kTestKey1, kTestKeyLen)); | 516 kTestKey1, kTestKeyLen)); |
| 519 EXPECT_TRUE(f1_.SetRtcpParams(CS_AES_CM_128_HMAC_SHA1_80, | 517 EXPECT_TRUE(f1_.SetRtcpParams(rtc::SRTP_AES128_CM_SHA1_80, kTestKey1, |
| 520 kTestKey1, kTestKeyLen, | 518 kTestKeyLen, rtc::SRTP_AES128_CM_SHA1_80, |
| 521 CS_AES_CM_128_HMAC_SHA1_80, | |
| 522 kTestKey2, kTestKeyLen)); | 519 kTestKey2, kTestKeyLen)); |
| 523 EXPECT_TRUE(f2_.SetRtcpParams(CS_AES_CM_128_HMAC_SHA1_80, | 520 EXPECT_TRUE(f2_.SetRtcpParams(rtc::SRTP_AES128_CM_SHA1_80, kTestKey2, |
| 524 kTestKey2, kTestKeyLen, | 521 kTestKeyLen, rtc::SRTP_AES128_CM_SHA1_80, |
| 525 CS_AES_CM_128_HMAC_SHA1_80, | |
| 526 kTestKey1, kTestKeyLen)); | 522 kTestKey1, kTestKeyLen)); |
| 527 EXPECT_TRUE(f1_.IsActive()); | 523 EXPECT_TRUE(f1_.IsActive()); |
| 528 EXPECT_TRUE(f2_.IsActive()); | 524 EXPECT_TRUE(f2_.IsActive()); |
| 529 TestProtectUnprotect(CS_AES_CM_128_HMAC_SHA1_80, CS_AES_CM_128_HMAC_SHA1_80); | 525 TestProtectUnprotect(CS_AES_CM_128_HMAC_SHA1_80, CS_AES_CM_128_HMAC_SHA1_80); |
| 530 } | 526 } |
| 531 | 527 |
| 532 // Test directly setting the params with AES_CM_128_HMAC_SHA1_32 | 528 // Test directly setting the params with AES_CM_128_HMAC_SHA1_32 |
| 533 TEST_F(SrtpFilterTest, TestProtect_SetParamsDirect_AES_CM_128_HMAC_SHA1_32) { | 529 TEST_F(SrtpFilterTest, TestProtect_SetParamsDirect_AES_CM_128_HMAC_SHA1_32) { |
| 534 EXPECT_TRUE(f1_.SetRtpParams(CS_AES_CM_128_HMAC_SHA1_32, | 530 EXPECT_TRUE(f1_.SetRtpParams(rtc::SRTP_AES128_CM_SHA1_32, kTestKey1, |
| 535 kTestKey1, kTestKeyLen, | 531 kTestKeyLen, rtc::SRTP_AES128_CM_SHA1_32, |
| 536 CS_AES_CM_128_HMAC_SHA1_32, | |
| 537 kTestKey2, kTestKeyLen)); | 532 kTestKey2, kTestKeyLen)); |
| 538 EXPECT_TRUE(f2_.SetRtpParams(CS_AES_CM_128_HMAC_SHA1_32, | 533 EXPECT_TRUE(f2_.SetRtpParams(rtc::SRTP_AES128_CM_SHA1_32, kTestKey2, |
| 539 kTestKey2, kTestKeyLen, | 534 kTestKeyLen, rtc::SRTP_AES128_CM_SHA1_32, |
| 540 CS_AES_CM_128_HMAC_SHA1_32, | |
| 541 kTestKey1, kTestKeyLen)); | 535 kTestKey1, kTestKeyLen)); |
| 542 EXPECT_TRUE(f1_.SetRtcpParams(CS_AES_CM_128_HMAC_SHA1_32, | 536 EXPECT_TRUE(f1_.SetRtcpParams(rtc::SRTP_AES128_CM_SHA1_32, kTestKey1, |
| 543 kTestKey1, kTestKeyLen, | 537 kTestKeyLen, rtc::SRTP_AES128_CM_SHA1_32, |
| 544 CS_AES_CM_128_HMAC_SHA1_32, | |
| 545 kTestKey2, kTestKeyLen)); | 538 kTestKey2, kTestKeyLen)); |
| 546 EXPECT_TRUE(f2_.SetRtcpParams(CS_AES_CM_128_HMAC_SHA1_32, | 539 EXPECT_TRUE(f2_.SetRtcpParams(rtc::SRTP_AES128_CM_SHA1_32, kTestKey2, |
| 547 kTestKey2, kTestKeyLen, | 540 kTestKeyLen, rtc::SRTP_AES128_CM_SHA1_32, |
| 548 CS_AES_CM_128_HMAC_SHA1_32, | |
| 549 kTestKey1, kTestKeyLen)); | 541 kTestKey1, kTestKeyLen)); |
| 550 EXPECT_TRUE(f1_.IsActive()); | 542 EXPECT_TRUE(f1_.IsActive()); |
| 551 EXPECT_TRUE(f2_.IsActive()); | 543 EXPECT_TRUE(f2_.IsActive()); |
| 552 TestProtectUnprotect(CS_AES_CM_128_HMAC_SHA1_32, CS_AES_CM_128_HMAC_SHA1_32); | 544 TestProtectUnprotect(CS_AES_CM_128_HMAC_SHA1_32, CS_AES_CM_128_HMAC_SHA1_32); |
| 553 } | 545 } |
| 554 | 546 |
| 555 // Test directly setting the params with bogus keys | 547 // Test directly setting the params with bogus keys |
| 556 TEST_F(SrtpFilterTest, TestSetParamsKeyTooShort) { | 548 TEST_F(SrtpFilterTest, TestSetParamsKeyTooShort) { |
| 557 EXPECT_FALSE(f1_.SetRtpParams(CS_AES_CM_128_HMAC_SHA1_80, | 549 EXPECT_FALSE(f1_.SetRtpParams(rtc::SRTP_AES128_CM_SHA1_80, kTestKey1, |
| 558 kTestKey1, kTestKeyLen - 1, | 550 kTestKeyLen - 1, rtc::SRTP_AES128_CM_SHA1_80, |
| 559 CS_AES_CM_128_HMAC_SHA1_80, | |
| 560 kTestKey1, kTestKeyLen - 1)); | 551 kTestKey1, kTestKeyLen - 1)); |
| 561 EXPECT_FALSE(f1_.SetRtcpParams(CS_AES_CM_128_HMAC_SHA1_80, | 552 EXPECT_FALSE(f1_.SetRtcpParams(rtc::SRTP_AES128_CM_SHA1_80, kTestKey1, |
| 562 kTestKey1, kTestKeyLen - 1, | 553 kTestKeyLen - 1, rtc::SRTP_AES128_CM_SHA1_80, |
| 563 CS_AES_CM_128_HMAC_SHA1_80, | |
| 564 kTestKey1, kTestKeyLen - 1)); | 554 kTestKey1, kTestKeyLen - 1)); |
| 565 } | 555 } |
| 566 | 556 |
| 567 #if defined(ENABLE_EXTERNAL_AUTH) | 557 #if defined(ENABLE_EXTERNAL_AUTH) |
| 568 TEST_F(SrtpFilterTest, TestGetSendAuthParams) { | 558 TEST_F(SrtpFilterTest, TestGetSendAuthParams) { |
| 569 EXPECT_TRUE(f1_.SetRtpParams(CS_AES_CM_128_HMAC_SHA1_32, | 559 EXPECT_TRUE(f1_.SetRtpParams(rtc::SRTP_AES128_CM_SHA1_32, kTestKey1, |
| 570 kTestKey1, kTestKeyLen, | 560 kTestKeyLen, rtc::SRTP_AES128_CM_SHA1_32, |
| 571 CS_AES_CM_128_HMAC_SHA1_32, | |
| 572 kTestKey2, kTestKeyLen)); | 561 kTestKey2, kTestKeyLen)); |
| 573 EXPECT_TRUE(f1_.SetRtcpParams(CS_AES_CM_128_HMAC_SHA1_32, | 562 EXPECT_TRUE(f1_.SetRtcpParams(rtc::SRTP_AES128_CM_SHA1_32, kTestKey1, |
| 574 kTestKey1, kTestKeyLen, | 563 kTestKeyLen, rtc::SRTP_AES128_CM_SHA1_32, |
| 575 CS_AES_CM_128_HMAC_SHA1_32, | |
| 576 kTestKey2, kTestKeyLen)); | 564 kTestKey2, kTestKeyLen)); |
| 577 uint8_t* auth_key = NULL; | 565 uint8_t* auth_key = NULL; |
| 578 int auth_key_len = 0, auth_tag_len = 0; | 566 int auth_key_len = 0, auth_tag_len = 0; |
| 579 EXPECT_TRUE(f1_.GetRtpAuthParams(&auth_key, &auth_key_len, &auth_tag_len)); | 567 EXPECT_TRUE(f1_.GetRtpAuthParams(&auth_key, &auth_key_len, &auth_tag_len)); |
| 580 EXPECT_TRUE(auth_key != NULL); | 568 EXPECT_TRUE(auth_key != NULL); |
| 581 EXPECT_EQ(20, auth_key_len); | 569 EXPECT_EQ(20, auth_key_len); |
| 582 EXPECT_EQ(4, auth_tag_len); | 570 EXPECT_EQ(4, auth_tag_len); |
| 583 } | 571 } |
| 584 #endif | 572 #endif |
| 585 | 573 |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 622 cricket::SrtpSession s1_; | 610 cricket::SrtpSession s1_; |
| 623 cricket::SrtpSession s2_; | 611 cricket::SrtpSession s2_; |
| 624 char rtp_packet_[sizeof(kPcmuFrame) + 10]; | 612 char rtp_packet_[sizeof(kPcmuFrame) + 10]; |
| 625 char rtcp_packet_[sizeof(kRtcpReport) + 4 + 10]; | 613 char rtcp_packet_[sizeof(kRtcpReport) + 4 + 10]; |
| 626 int rtp_len_; | 614 int rtp_len_; |
| 627 int rtcp_len_; | 615 int rtcp_len_; |
| 628 }; | 616 }; |
| 629 | 617 |
| 630 // Test that we can set up the session and keys properly. | 618 // Test that we can set up the session and keys properly. |
| 631 TEST_F(SrtpSessionTest, TestGoodSetup) { | 619 TEST_F(SrtpSessionTest, TestGoodSetup) { |
| 632 EXPECT_TRUE(s1_.SetSend(CS_AES_CM_128_HMAC_SHA1_80, kTestKey1, kTestKeyLen)); | 620 EXPECT_TRUE(s1_.SetSend(rtc::SRTP_AES128_CM_SHA1_80, kTestKey1, kTestKeyLen)); |
| 633 EXPECT_TRUE(s2_.SetRecv(CS_AES_CM_128_HMAC_SHA1_80, kTestKey1, kTestKeyLen)); | 621 EXPECT_TRUE(s2_.SetRecv(rtc::SRTP_AES128_CM_SHA1_80, kTestKey1, kTestKeyLen)); |
| 634 } | 622 } |
| 635 | 623 |
| 636 // Test that we can't change the keys once set. | 624 // Test that we can't change the keys once set. |
| 637 TEST_F(SrtpSessionTest, TestBadSetup) { | 625 TEST_F(SrtpSessionTest, TestBadSetup) { |
| 638 EXPECT_TRUE(s1_.SetSend(CS_AES_CM_128_HMAC_SHA1_80, kTestKey1, kTestKeyLen)); | 626 EXPECT_TRUE(s1_.SetSend(rtc::SRTP_AES128_CM_SHA1_80, kTestKey1, kTestKeyLen)); |
| 639 EXPECT_TRUE(s2_.SetRecv(CS_AES_CM_128_HMAC_SHA1_80, kTestKey1, kTestKeyLen)); | 627 EXPECT_TRUE(s2_.SetRecv(rtc::SRTP_AES128_CM_SHA1_80, kTestKey1, kTestKeyLen)); |
| 640 EXPECT_FALSE(s1_.SetSend(CS_AES_CM_128_HMAC_SHA1_80, kTestKey2, kTestKeyLen)); | 628 EXPECT_FALSE( |
| 641 EXPECT_FALSE(s2_.SetRecv(CS_AES_CM_128_HMAC_SHA1_80, kTestKey2, kTestKeyLen)); | 629 s1_.SetSend(rtc::SRTP_AES128_CM_SHA1_80, kTestKey2, kTestKeyLen)); |
| 630 EXPECT_FALSE( |
| 631 s2_.SetRecv(rtc::SRTP_AES128_CM_SHA1_80, kTestKey2, kTestKeyLen)); |
| 642 } | 632 } |
| 643 | 633 |
| 644 // Test that we fail keys of the wrong length. | 634 // Test that we fail keys of the wrong length. |
| 645 TEST_F(SrtpSessionTest, TestKeysTooShort) { | 635 TEST_F(SrtpSessionTest, TestKeysTooShort) { |
| 646 EXPECT_FALSE(s1_.SetSend(CS_AES_CM_128_HMAC_SHA1_80, kTestKey1, 1)); | 636 EXPECT_FALSE(s1_.SetSend(rtc::SRTP_AES128_CM_SHA1_80, kTestKey1, 1)); |
| 647 EXPECT_FALSE(s2_.SetRecv(CS_AES_CM_128_HMAC_SHA1_80, kTestKey1, 1)); | 637 EXPECT_FALSE(s2_.SetRecv(rtc::SRTP_AES128_CM_SHA1_80, kTestKey1, 1)); |
| 648 } | 638 } |
| 649 | 639 |
| 650 // Test that we can encrypt and decrypt RTP/RTCP using AES_CM_128_HMAC_SHA1_80. | 640 // Test that we can encrypt and decrypt RTP/RTCP using AES_CM_128_HMAC_SHA1_80. |
| 651 TEST_F(SrtpSessionTest, TestProtect_AES_CM_128_HMAC_SHA1_80) { | 641 TEST_F(SrtpSessionTest, TestProtect_AES_CM_128_HMAC_SHA1_80) { |
| 652 EXPECT_TRUE(s1_.SetSend(CS_AES_CM_128_HMAC_SHA1_80, kTestKey1, kTestKeyLen)); | 642 EXPECT_TRUE(s1_.SetSend(rtc::SRTP_AES128_CM_SHA1_80, kTestKey1, kTestKeyLen)); |
| 653 EXPECT_TRUE(s2_.SetRecv(CS_AES_CM_128_HMAC_SHA1_80, kTestKey1, kTestKeyLen)); | 643 EXPECT_TRUE(s2_.SetRecv(rtc::SRTP_AES128_CM_SHA1_80, kTestKey1, kTestKeyLen)); |
| 654 TestProtectRtp(CS_AES_CM_128_HMAC_SHA1_80); | 644 TestProtectRtp(CS_AES_CM_128_HMAC_SHA1_80); |
| 655 TestProtectRtcp(CS_AES_CM_128_HMAC_SHA1_80); | 645 TestProtectRtcp(CS_AES_CM_128_HMAC_SHA1_80); |
| 656 TestUnprotectRtp(CS_AES_CM_128_HMAC_SHA1_80); | 646 TestUnprotectRtp(CS_AES_CM_128_HMAC_SHA1_80); |
| 657 TestUnprotectRtcp(CS_AES_CM_128_HMAC_SHA1_80); | 647 TestUnprotectRtcp(CS_AES_CM_128_HMAC_SHA1_80); |
| 658 } | 648 } |
| 659 | 649 |
| 660 // Test that we can encrypt and decrypt RTP/RTCP using AES_CM_128_HMAC_SHA1_32. | 650 // Test that we can encrypt and decrypt RTP/RTCP using AES_CM_128_HMAC_SHA1_32. |
| 661 TEST_F(SrtpSessionTest, TestProtect_AES_CM_128_HMAC_SHA1_32) { | 651 TEST_F(SrtpSessionTest, TestProtect_AES_CM_128_HMAC_SHA1_32) { |
| 662 EXPECT_TRUE(s1_.SetSend(CS_AES_CM_128_HMAC_SHA1_32, kTestKey1, kTestKeyLen)); | 652 EXPECT_TRUE(s1_.SetSend(rtc::SRTP_AES128_CM_SHA1_32, kTestKey1, kTestKeyLen)); |
| 663 EXPECT_TRUE(s2_.SetRecv(CS_AES_CM_128_HMAC_SHA1_32, kTestKey1, kTestKeyLen)); | 653 EXPECT_TRUE(s2_.SetRecv(rtc::SRTP_AES128_CM_SHA1_32, kTestKey1, kTestKeyLen)); |
| 664 TestProtectRtp(CS_AES_CM_128_HMAC_SHA1_32); | 654 TestProtectRtp(CS_AES_CM_128_HMAC_SHA1_32); |
| 665 TestProtectRtcp(CS_AES_CM_128_HMAC_SHA1_32); | 655 TestProtectRtcp(CS_AES_CM_128_HMAC_SHA1_32); |
| 666 TestUnprotectRtp(CS_AES_CM_128_HMAC_SHA1_32); | 656 TestUnprotectRtp(CS_AES_CM_128_HMAC_SHA1_32); |
| 667 TestUnprotectRtcp(CS_AES_CM_128_HMAC_SHA1_32); | 657 TestUnprotectRtcp(CS_AES_CM_128_HMAC_SHA1_32); |
| 668 } | 658 } |
| 669 | 659 |
| 670 TEST_F(SrtpSessionTest, TestGetSendStreamPacketIndex) { | 660 TEST_F(SrtpSessionTest, TestGetSendStreamPacketIndex) { |
| 671 EXPECT_TRUE(s1_.SetSend(CS_AES_CM_128_HMAC_SHA1_32, kTestKey1, kTestKeyLen)); | 661 EXPECT_TRUE(s1_.SetSend(rtc::SRTP_AES128_CM_SHA1_32, kTestKey1, kTestKeyLen)); |
| 672 int64_t index; | 662 int64_t index; |
| 673 int out_len = 0; | 663 int out_len = 0; |
| 674 EXPECT_TRUE(s1_.ProtectRtp(rtp_packet_, rtp_len_, | 664 EXPECT_TRUE(s1_.ProtectRtp(rtp_packet_, rtp_len_, |
| 675 sizeof(rtp_packet_), &out_len, &index)); | 665 sizeof(rtp_packet_), &out_len, &index)); |
| 676 // |index| will be shifted by 16. | 666 // |index| will be shifted by 16. |
| 677 int64_t be64_index = static_cast<int64_t>(rtc::NetworkToHost64(1 << 16)); | 667 int64_t be64_index = static_cast<int64_t>(rtc::NetworkToHost64(1 << 16)); |
| 678 EXPECT_EQ(be64_index, index); | 668 EXPECT_EQ(be64_index, index); |
| 679 } | 669 } |
| 680 | 670 |
| 681 // Test that we fail to unprotect if someone tampers with the RTP/RTCP paylaods. | 671 // Test that we fail to unprotect if someone tampers with the RTP/RTCP paylaods. |
| 682 TEST_F(SrtpSessionTest, TestTamperReject) { | 672 TEST_F(SrtpSessionTest, TestTamperReject) { |
| 683 int out_len; | 673 int out_len; |
| 684 EXPECT_TRUE(s1_.SetSend(CS_AES_CM_128_HMAC_SHA1_80, kTestKey1, kTestKeyLen)); | 674 EXPECT_TRUE(s1_.SetSend(rtc::SRTP_AES128_CM_SHA1_80, kTestKey1, kTestKeyLen)); |
| 685 EXPECT_TRUE(s2_.SetRecv(CS_AES_CM_128_HMAC_SHA1_80, kTestKey1, kTestKeyLen)); | 675 EXPECT_TRUE(s2_.SetRecv(rtc::SRTP_AES128_CM_SHA1_80, kTestKey1, kTestKeyLen)); |
| 686 TestProtectRtp(CS_AES_CM_128_HMAC_SHA1_80); | 676 TestProtectRtp(CS_AES_CM_128_HMAC_SHA1_80); |
| 687 TestProtectRtcp(CS_AES_CM_128_HMAC_SHA1_80); | 677 TestProtectRtcp(CS_AES_CM_128_HMAC_SHA1_80); |
| 688 rtp_packet_[0] = 0x12; | 678 rtp_packet_[0] = 0x12; |
| 689 rtcp_packet_[1] = 0x34; | 679 rtcp_packet_[1] = 0x34; |
| 690 EXPECT_FALSE(s2_.UnprotectRtp(rtp_packet_, rtp_len_, &out_len)); | 680 EXPECT_FALSE(s2_.UnprotectRtp(rtp_packet_, rtp_len_, &out_len)); |
| 691 EXPECT_FALSE(s2_.UnprotectRtcp(rtcp_packet_, rtcp_len_, &out_len)); | 681 EXPECT_FALSE(s2_.UnprotectRtcp(rtcp_packet_, rtcp_len_, &out_len)); |
| 692 } | 682 } |
| 693 | 683 |
| 694 // Test that we fail to unprotect if the payloads are not authenticated. | 684 // Test that we fail to unprotect if the payloads are not authenticated. |
| 695 TEST_F(SrtpSessionTest, TestUnencryptReject) { | 685 TEST_F(SrtpSessionTest, TestUnencryptReject) { |
| 696 int out_len; | 686 int out_len; |
| 697 EXPECT_TRUE(s1_.SetSend(CS_AES_CM_128_HMAC_SHA1_80, kTestKey1, kTestKeyLen)); | 687 EXPECT_TRUE(s1_.SetSend(rtc::SRTP_AES128_CM_SHA1_80, kTestKey1, kTestKeyLen)); |
| 698 EXPECT_TRUE(s2_.SetRecv(CS_AES_CM_128_HMAC_SHA1_80, kTestKey1, kTestKeyLen)); | 688 EXPECT_TRUE(s2_.SetRecv(rtc::SRTP_AES128_CM_SHA1_80, kTestKey1, kTestKeyLen)); |
| 699 EXPECT_FALSE(s2_.UnprotectRtp(rtp_packet_, rtp_len_, &out_len)); | 689 EXPECT_FALSE(s2_.UnprotectRtp(rtp_packet_, rtp_len_, &out_len)); |
| 700 EXPECT_FALSE(s2_.UnprotectRtcp(rtcp_packet_, rtcp_len_, &out_len)); | 690 EXPECT_FALSE(s2_.UnprotectRtcp(rtcp_packet_, rtcp_len_, &out_len)); |
| 701 } | 691 } |
| 702 | 692 |
| 703 // Test that we fail when using buffers that are too small. | 693 // Test that we fail when using buffers that are too small. |
| 704 TEST_F(SrtpSessionTest, TestBuffersTooSmall) { | 694 TEST_F(SrtpSessionTest, TestBuffersTooSmall) { |
| 705 int out_len; | 695 int out_len; |
| 706 EXPECT_TRUE(s1_.SetSend(CS_AES_CM_128_HMAC_SHA1_80, kTestKey1, kTestKeyLen)); | 696 EXPECT_TRUE(s1_.SetSend(rtc::SRTP_AES128_CM_SHA1_80, kTestKey1, kTestKeyLen)); |
| 707 EXPECT_FALSE(s1_.ProtectRtp(rtp_packet_, rtp_len_, | 697 EXPECT_FALSE(s1_.ProtectRtp(rtp_packet_, rtp_len_, |
| 708 sizeof(rtp_packet_) - 10, &out_len)); | 698 sizeof(rtp_packet_) - 10, &out_len)); |
| 709 EXPECT_FALSE(s1_.ProtectRtcp(rtcp_packet_, rtcp_len_, | 699 EXPECT_FALSE(s1_.ProtectRtcp(rtcp_packet_, rtcp_len_, |
| 710 sizeof(rtcp_packet_) - 14, &out_len)); | 700 sizeof(rtcp_packet_) - 14, &out_len)); |
| 711 } | 701 } |
| 712 | 702 |
| 713 TEST_F(SrtpSessionTest, TestReplay) { | 703 TEST_F(SrtpSessionTest, TestReplay) { |
| 714 static const uint16_t kMaxSeqnum = static_cast<uint16_t>(-1); | 704 static const uint16_t kMaxSeqnum = static_cast<uint16_t>(-1); |
| 715 static const uint16_t seqnum_big = 62275; | 705 static const uint16_t seqnum_big = 62275; |
| 716 static const uint16_t seqnum_small = 10; | 706 static const uint16_t seqnum_small = 10; |
| 717 static const uint16_t replay_window = 1024; | 707 static const uint16_t replay_window = 1024; |
| 718 int out_len; | 708 int out_len; |
| 719 | 709 |
| 720 EXPECT_TRUE(s1_.SetSend(CS_AES_CM_128_HMAC_SHA1_80, kTestKey1, kTestKeyLen)); | 710 EXPECT_TRUE(s1_.SetSend(rtc::SRTP_AES128_CM_SHA1_80, kTestKey1, kTestKeyLen)); |
| 721 EXPECT_TRUE(s2_.SetRecv(CS_AES_CM_128_HMAC_SHA1_80, kTestKey1, kTestKeyLen)); | 711 EXPECT_TRUE(s2_.SetRecv(rtc::SRTP_AES128_CM_SHA1_80, kTestKey1, kTestKeyLen)); |
| 722 | 712 |
| 723 // Initial sequence number. | 713 // Initial sequence number. |
| 724 rtc::SetBE16(reinterpret_cast<uint8_t*>(rtp_packet_) + 2, seqnum_big); | 714 rtc::SetBE16(reinterpret_cast<uint8_t*>(rtp_packet_) + 2, seqnum_big); |
| 725 EXPECT_TRUE(s1_.ProtectRtp(rtp_packet_, rtp_len_, sizeof(rtp_packet_), | 715 EXPECT_TRUE(s1_.ProtectRtp(rtp_packet_, rtp_len_, sizeof(rtp_packet_), |
| 726 &out_len)); | 716 &out_len)); |
| 727 | 717 |
| 728 // Replay within the 1024 window should succeed. | 718 // Replay within the 1024 window should succeed. |
| 729 rtc::SetBE16(reinterpret_cast<uint8_t*>(rtp_packet_) + 2, | 719 rtc::SetBE16(reinterpret_cast<uint8_t*>(rtp_packet_) + 2, |
| 730 seqnum_big - replay_window + 1); | 720 seqnum_big - replay_window + 1); |
| 731 EXPECT_TRUE(s1_.ProtectRtp(rtp_packet_, rtp_len_, sizeof(rtp_packet_), | 721 EXPECT_TRUE(s1_.ProtectRtp(rtp_packet_, rtp_len_, sizeof(rtp_packet_), |
| (...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 926 srtp_stat_.AddUnprotectRtcpResult(err_status_fail); | 916 srtp_stat_.AddUnprotectRtcpResult(err_status_fail); |
| 927 EXPECT_EQ(-1, mode_); | 917 EXPECT_EQ(-1, mode_); |
| 928 EXPECT_EQ(cricket::SrtpFilter::ERROR_NONE, error_); | 918 EXPECT_EQ(cricket::SrtpFilter::ERROR_NONE, error_); |
| 929 // Now the error will be triggered again. | 919 // Now the error will be triggered again. |
| 930 Reset(); | 920 Reset(); |
| 931 rtc::Thread::Current()->SleepMs(210); | 921 rtc::Thread::Current()->SleepMs(210); |
| 932 srtp_stat_.AddUnprotectRtcpResult(err_status_fail); | 922 srtp_stat_.AddUnprotectRtcpResult(err_status_fail); |
| 933 EXPECT_EQ(cricket::SrtpFilter::UNPROTECT, mode_); | 923 EXPECT_EQ(cricket::SrtpFilter::UNPROTECT, mode_); |
| 934 EXPECT_EQ(cricket::SrtpFilter::ERROR_FAIL, error_); | 924 EXPECT_EQ(cricket::SrtpFilter::ERROR_FAIL, error_); |
| 935 } | 925 } |
| OLD | NEW |