MCPcopy Create free account
hub / github.com/FDio/vpp / verify_sha1_auth

Method verify_sha1_auth

test/test_bfd.py:809–859  ·  view source on GitHub ↗

Verify correctness of authentication in BFD layer.

(self, packet)

Source from the content-addressed store, hash-verified

807 self.test.pg_start()
808
809 def verify_sha1_auth(self, packet):
810 """Verify correctness of authentication in BFD layer."""
811 bfd = packet[BFD]
812 self.test.assert_equal(bfd.auth_len, 28, "Auth section length")
813 self.test.assert_equal(bfd.auth_type, self.sha1_key.auth_type, BFDAuthType)
814 self.test.assert_equal(bfd.auth_key_id, self.bfd_key_id, "Key ID")
815 self.test.assert_equal(bfd.auth_reserved, 0, "Reserved")
816 if self.vpp_seq_number is None:
817 self.vpp_seq_number = bfd.auth_seq_num
818 self.test.logger.debug(
819 "Received initial sequence number: %s" % self.vpp_seq_number
820 )
821 else:
822 recvd_seq_num = bfd.auth_seq_num
823 self.test.logger.debug(
824 "Received followup sequence number: %s" % recvd_seq_num
825 )
826 if self.vpp_seq_number < 0xFFFFFFFF:
827 if self.sha1_key.auth_type == BFDAuthType.meticulous_keyed_sha1:
828 self.test.assert_equal(
829 recvd_seq_num, self.vpp_seq_number + 1, "BFD sequence number"
830 )
831 else:
832 self.test.assert_in_range(
833 recvd_seq_num,
834 self.vpp_seq_number,
835 self.vpp_seq_number + 1,
836 "BFD sequence number",
837 )
838 else:
839 if self.sha1_key.auth_type == BFDAuthType.meticulous_keyed_sha1:
840 self.test.assert_equal(recvd_seq_num, 0, "BFD sequence number")
841 else:
842 self.test.assertIn(
843 recvd_seq_num,
844 (self.vpp_seq_number, 0),
845 "BFD sequence number not one of "
846 "(%s, 0)" % self.vpp_seq_number,
847 )
848 self.vpp_seq_number = recvd_seq_num
849 # last 20 bytes represent the hash - so replace them with the key,
850 # pad the result with zeros and hash the result
851 hash_material = (
852 bfd.original[:-20]
853 + self.sha1_key.key
854 + b"\0" * (20 - len(self.sha1_key.key))
855 )
856 expected_hash = hashlib.sha1(hash_material).hexdigest()
857 self.test.assert_equal(
858 binascii.hexlify(bfd.auth_key_hash), expected_hash.encode(), "Auth key hash"
859 )
860
861 def verify_bfd(self, packet):
862 """Verify correctness of BFD layer."""

Callers 1

verify_bfdMethod · 0.95

Calls 3

assert_equalMethod · 0.45
assert_in_rangeMethod · 0.45
encodeMethod · 0.45

Tested by

no test coverage detected