MCPcopy Create free account
hub / github.com/SIPp/sipp / extractAuthenticationTag

Method extractAuthenticationTag

src/jlsrtp.cpp:735–839  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

733}
734
735int JLSRTP::extractAuthenticationTag(std::vector<unsigned char> srtp_packet, std::vector<unsigned char> &hash)
736{
737 int retVal = -1;
738 std::vector<unsigned char>::iterator it = srtp_packet.begin();
739 int authtag_pos = 0;
740
741 assert(!_session_auth_key.empty());
742 if (!_session_auth_key.empty())
743 {
744 switch (_active_crypto)
745 {
746 case PRIMARY_CRYPTO:
747 {
748 switch (_primary_crypto.hmac_algorithm)
749 {
750 case HMAC_SHA1_80:
751 if (srtp_packet.size() >= JLSRTP_AUTHENTICATION_TAG_SIZE_SHA1_80)
752 {
753 authtag_pos = srtp_packet.size() - 10;
754 std::advance(it, authtag_pos);
755 hash.assign(it, srtp_packet.end()); // Fetch trailing 10 bytes (80 bits / 8 bits/byte = 10 bytes)
756 retVal = 0;
757 }
758 else
759 {
760 retVal = -2;
761 }
762 break;
763
764 case HMAC_SHA1_32:
765 if (srtp_packet.size() >= JLSRTP_AUTHENTICATION_TAG_SIZE_SHA1_32)
766 {
767 authtag_pos = srtp_packet.size() - 4;
768 std::advance(it, authtag_pos);
769 hash.assign(it, srtp_packet.end()); // Fetch trailing 4 bytes (32 bits / 8 bits/byte = 4 bytes)
770 retVal = 0;
771 }
772 else
773 {
774 retVal = -2;
775 }
776 break;
777
778 default:
779 // Unrecognized input value -- NO-OP...
780 retVal = -3;
781 break;
782 }
783 }
784 break;
785
786 case SECONDARY_CRYPTO:
787 {
788 switch (_secondary_crypto.hmac_algorithm)
789 {
790 case HMAC_SHA1_80:
791 if (srtp_packet.size() >= JLSRTP_AUTHENTICATION_TAG_SIZE_SHA1_80)
792 {

Callers

nothing calls this directly

Calls 2

emptyMethod · 0.80
sizeMethod · 0.80

Tested by

no test coverage detected