import socket from scapy.layers.ipsec import ESP from scapy.layers.inet import IP, ICMP, UDP from scapy.layers.inet6 import IPv6 from scapy.layers.l2 import Ether from scapy.packet import Raw from template_ipsec import ( IpsecTra46Tests, IpsecTun46Tests, TemplateIpsec, IpsecTcpTests, IpsecTra4Tests, config_tra_params, config_tun_params, IPsecIPv4Params, IPsecIPv6Params, IpsecTra4, IpsecTun4, IpsecTra6, IpsecTun6, IpsecTun6HandoffTests, IpsecTun4HandoffTests, IpsecTra6ExtTests, ) from vpp_ipsec import VppIpsecSpd, VppIpsecSpdEntry, VppIpsecSA, VppIpsecSpdItfBinding from vpp_ip_route import VppIpRoute, VppRoutePath from vpp_ip import DpoProto from vpp_papi import VppEnum NUM_PKTS = 67 engines_supporting_chain_bufs = ["openssl", "async"] engines = ["ia32", "ipsecmb", "openssl"] class ConfigIpsecESP(TemplateIpsec): encryption_type = ESP tra4_encrypt_node_name = "esp4-encrypt" tra4_decrypt_node_name = ["esp4-decrypt", "esp4-decrypt-post"] tra6_encrypt_node_name = "esp6-encrypt" tra6_decrypt_node_name = ["esp6-decrypt", "esp6-decrypt-post"] tun4_encrypt_node_name = "esp4-encrypt" tun4_decrypt_node_name = ["esp4-decrypt", "esp4-decrypt-post"] tun6_encrypt_node_name = "esp6-encrypt" tun6_decrypt_node_name = ["esp6-decrypt", "esp6-decrypt-post"] @classmethod def setUpClass(cls): super(ConfigIpsecESP, cls).setUpClass() @classmethod def tearDownClass(cls): super(ConfigIpsecESP, cls).tearDownClass() def setUp(self): super(ConfigIpsecESP, self).setUp() def tearDown(self): super(ConfigIpsecESP, self).tearDown() def config_anti_replay(self, params, anti_replay_window_size=64): saf = VppEnum.vl_api_ipsec_sad_flags_t for p in params: p.flags |= saf.IPSEC_API_SAD_FLAG_USE_ANTI_REPLAY p.anti_replay_window_size = anti_replay_window_size def config_network(self, params): self.net_objs = [] self.tun_if = self.pg0 self.tra_if = self.pg2 self.logger.info(self.vapi.ppcli("show int addr")) self.tra_spd = VppIpsecSpd(self, self.tra_spd_id) self.tra_spd.add_vpp_config() self.net_objs.append(self.tra_spd) self.tun_spd = VppIpsecSpd(self, self.tun_spd_id) self.tun_spd.add_vpp_config() self.net_objs.append(self.tun_spd) b = VppIpsecSpdItfBinding(self, self.tun_spd, self.tun_if) b.add_vpp_config() self.net_objs.append(b) b = VppIpsecSpdItfBinding(self, self.tra_spd, self.tra_if) b.add_vpp_config() self.net_objs.append(b) for p in params: self.config_esp_tra(p) config_tra_params(p, self.encryption_type) for p in params: self.config_esp_tun(p) config_tun_params(p, self.encryption_type, self.tun_if) for p in params: d = DpoProto.DPO_PROTO_IP6 if p.is_ipv6 else DpoProto.DPO_PROTO_IP4 r = VppIpRoute( self, p.remote_tun_if_host, p.addr_len, [ VppRoutePath( self.tun_if.remote_addr[p.addr_type], 0xFFFFFFFF, proto=d ) ], ) r.add_vpp_config() self.net_objs.append(r) self.logger.info(self.vapi.ppcli("show ipsec all")) def unconfig_network(self): for o in reversed(self.net_objs): o.remove_vpp_config() self.net_objs = [] def config_esp_tun(self, params): addr_type = params.addr_type scapy_tun_sa_id = params.scapy_tun_sa_id scapy_tun_spi = params.scapy_tun_spi vpp_tun_sa_id = params.vpp_tun_sa_id vpp_tun_spi = params.vpp_tun_spi auth_algo_vpp_id = params.auth_algo_vpp_id auth_key = params.auth_key crypt_algo_vpp_id = params.crypt_algo_vpp_id crypt_key = params.crypt_key remote_tun_if_host = params.remote_tun_if_host addr_any = params.addr_any addr_bcast = params.addr_bcast e = VppEnum.vl_api_ipsec_spd_action_t flags = params.flags tun_flags = params.tun_flags salt = params.salt anti_replay_window_size = params.anti_replay_window_size objs = [] params.tun_sa_in = VppIpsecSA( self, scapy_tun_sa_id, scapy_tun_spi, auth_algo_vpp_id, auth_key, crypt_algo_vpp_id, crypt_key, self.vpp_esp_protocol, self.tun_if.remote_addr[addr_type], self.tun_if.local_addr[addr_type], tun_flags=tun_flags, dscp=params.dscp, flags=flags, salt=salt, hop_limit=params.outer_hop_limit, anti_replay_window_size=anti_replay_window_size, ) params.tun_sa_out = VppIpsecSA( self, vpp_tun_sa_id, vpp_tun_spi, auth_algo_vpp_id, auth_key, crypt_algo_vpp_id, crypt_key, self.vpp_esp_protocol, self.tun_if.local_addr[addr_type], self.tun_if.remote_addr[addr_type], tun_flags=tun_flags, dscp=params.dscp, flags=flags, salt=salt, hop_limit=params.outer_hop_limit, anti_replay_window_size=anti_replay_window_size, ) objs.append(params.tun_sa_in) objs.append(params.tun_sa_out) params.spd_policy_in_any = VppIpsecSpdEntry( self, self.tun_spd, scapy_tun_sa_id, addr_any, addr_bcast, addr_any, addr_bcast, socket.IPPROTO_ESP, ) params.spd_policy_out_any = VppIpsecSpdEntry( self, self.tun_spd, scapy_tun_sa_id, addr_any, addr_bcast, addr_any, addr_bcast, socket.IPPROTO_ESP, is_outbound=0, ) objs.append(params.spd_policy_out_any) objs.append(params.spd_policy_in_any) objs.append( VppIpsecSpdEntry( self, self.tun_spd, scapy_tun_sa_id, remote_tun_if_host, remote_tun_if_host, self.pg1.remote_addr[addr_type], self.pg1.remote_addr[addr_type], socket.IPPROTO_RAW, priority=10, policy=e.IPSEC_API_SPD_ACTION_PROTECT, is_outbound=0, ) ) objs.append( VppIpsecSpdEntry( self, self.tun_spd, vpp_tun_sa_id, self.pg1.remote_addr[addr_type], self.pg1.remote_addr[addr_type], remote_tun_if_host, remote_tun_if_host, socket.IPPROTO_RAW, policy=e.IPSEC_API_SPD_ACTION_PROTECT, priority=10, ) ) objs.append( VppIpsecSpdEntry( self, self.tun_spd, scapy_tun_sa_id, remote_tun_if_host, remote_tun_if_host, self.pg0.local_addr[addr_type], self.pg0.local_addr[addr_type], socket.IPPROTO_RAW, priority=20, policy=e.IPSEC_API_SPD_ACTION_PROTECT, is_outbound=0, ) ) objs.append( VppIpsecSpdEntry( self, self.tun_spd, vpp_tun_sa_id, self.pg0.local_addr[addr_type], self.pg0.local_addr[addr_type], remote_tun_if_host, remote_tun_if_host, socket.IPPROTO_RAW, policy=e.IPSEC_API_SPD_ACTION_PROTECT, priority=20, ) ) for o in objs: o.add_vpp_config() self.net_objs = self.net_objs + objs def config_esp_tra(self, params): addr_type = params.addr_type scapy_tra_sa_id = params.scapy_tra_sa_id scapy_tra_spi = params.scapy_tra_spi vpp_tra_sa_id = params.vpp_tra_sa_id vpp_tra_spi = params.vpp_tra_spi auth_algo_vpp_id = params.auth_algo_vpp_id auth_key = params.auth_key crypt_algo_vpp_id = params.crypt_algo_vpp_id crypt_key = params.crypt_key addr_any = params.addr_any addr_bcast = params.addr_bcast e = VppEnum.vl_api_ipsec_spd_action_t flags = params.flags salt = params.salt anti_replay_window_size = params.anti_replay_window_size objs = [] params.tra_sa_in = VppIpsecSA( self, scapy_tra_sa_id, scapy_tra_spi, auth_algo_vpp_id, auth_key, crypt_algo_vpp_id, crypt_key, self.vpp_esp_protocol, flags=flags, salt=salt, anti_replay_window_size=anti_replay_window_size, ) params.tra_sa_out = VppIpsecSA( self, vpp_tra_sa_id, vpp_tra_spi, auth_algo_vpp_id, auth_key, crypt_algo_vpp_id, crypt_key, self.vpp_esp_protocol, flags=flags, salt=salt, anti_replay_window_size=anti_replay_window_size, ) objs.append(params.tra_sa_in) objs.append(params.tra_sa_out) objs.append( VppIpsecSpdEntry( self, self.tra_spd, vpp_tra_sa_id, addr_any, addr_bcast, addr_any, addr_bcast, socket.IPPROTO_ESP, ) ) objs.append( VppIpsecSpdEntry( self, self.tra_spd, vpp_tra_sa_id, addr_any, addr_bcast, addr_any, addr_bcast, socket.IPPROTO_ESP, is_outbound=0, ) ) objs.append( VppIpsecSpdEntry( self, self.tra_spd, scapy_tra_sa_id, self.tra_if.local_addr[addr_type], self.tra_if.local_addr[addr_type], self.tra_if.remote_addr[addr_type], self.tra_if.remote_addr[addr_type], socket.IPPROTO_RAW, priority=10, policy=e.IPSEC_API_SPD_ACTION_PROTECT, is_outbound=0, ) ) objs.append( VppIpsecSpdEntry( self, self.tra_spd, vpp_tra_sa_id, self.tra_if.local_addr[addr_type], self.tra_if.local_addr[addr_type], self.tra_if.remote_addr[addr_type], self.tra_if.remote_addr[addr_type], socket.IPPROTO_RAW, policy=e.IPSEC_API_SPD_ACTION_PROTECT, priority=10, ) ) for o in objs: o.add_vpp_config() self.net_objs = self.net_objs + objs class TemplateIpsecEsp(ConfigIpsecESP): """ Basic test for ipsec esp sanity - tunnel and transport modes. Below 4 cases are covered as part of this test #. ipsec esp v4 transport basic test - IPv4 Transport mode scenario using HMAC-SHA1-96 integrity algo #. ipsec esp v4 transport burst test Above test for 257 pkts #. ipsec esp 4o4 tunnel basic test - IPv4 Tunnel mode scenario using HMAC-SHA1-96 integrity algo #. ipsec esp 4o4 tunnel burst test Above test for 257 pkts TRANSPORT MODE:: --- encrypt --- |pg2| <-------> |VPP| --- decrypt --- TUNNEL MODE:: --- encrypt --- plain --- |pg0| <------- |VPP| <------ |pg1| --- --- --- --- decrypt --- plain --- |pg0| -------> |VPP| ------> |pg1| --- --- --- """ @classmethod def setUpClass(cls): super(TemplateIpsecEsp, cls).setUpClass() @classmethod def tearDownClass(cls): super(TemplateIpsecEsp, cls).tearDownClass() def setUp(self): super(TemplateIpsecEsp, self).setUp() self.config_anti_replay(self.params.values()) self.config_network(self.params.values()) def tearDown(self): self.unconfig_network() super(TemplateIpsecEsp, self).tearDown() class TestIpsecEsp1( TemplateIpsecEsp, IpsecTra46Tests, IpsecTun46Tests, IpsecTra6ExtTests ): """Ipsec ESP - TUN & TRA tests""" @classmethod def setUpClass(cls): super(TestIpsecEsp1, cls).setUpClass() @classmethod def tearDownClass(cls): super(TestIpsecEsp1, cls).tearDownClass() def setUp(self): super(TestIpsecEsp1, self).setUp() def tearDown(self): super(TestIpsecEsp1, self).tearDown() def test_tun_46(self): """ipsec 4o6 tunnel""" # add an SPD entry to direct 2.2.2.2 to the v6 tunnel SA p6 = self.ipv6_params p4 = self.ipv4_params p6.remote_tun_if_host4 = "2.2.2.2" e = VppEnum.vl_api_ipsec_spd_action_t VppIpsecSpdEntry( self, self.tun_spd, p6.vpp_tun_sa_id, self.pg1.remote_addr[p4.addr_type], self.pg1.remote_addr[p4.addr_type], p6.remote_tun_if_host4, p6.remote_tun_if_host4, socket.IPPROTO_RAW, priority=10, policy=e.IPSEC_API_SPD_ACTION_PROTECT, is_outbound=1, ).add_vpp_config() VppIpRoute( self, p6.remote_tun_if_host4, p4.addr_len, [VppRoutePath(self.tun_if.remote_addr[p4.addr_type], 0xFFFFFFFF)], ).add_vpp_config() old_name = self.tun6_encrypt_node_name self.tun6_encrypt_node_name = "esp4-encrypt" self.verify_tun_46(p6, count=63) self.tun6_encrypt_node_name = old_name def test_tun_64(self): """ipsec 6o4 tunnel""" # add an SPD entry to direct 4444::4 to the v4 tunnel SA p6 = self.ipv6_params p4 = self.ipv4_params p4.remote_tun_if_host6 = "4444::4" e = VppEnum.vl_api_ipsec_spd_action_t VppIpsecSpdEntry( self, self.tun_spd, p4.vpp_tun_sa_id, self.pg1.remote_addr[p6.addr_type], self.pg1.remote_addr[p6.addr_type], p4.remote_tun_if_host6, p4.remote_tun_if_host6, socket.IPPROTO_RAW, priority=10, policy=e.IPSEC_API_SPD_ACTION_PROTECT, is_outbound=1, ).add_vpp_config() d = DpoProto.DPO_PROTO_IP6 VppIpRoute( self, p4.remote_tun_if_host6, p6.addr_len, [VppRoutePath(self.tun_if.remote_addr[p6.addr_type], 0xFFFFFFFF, proto=d)], ).add_vpp_config() old_name = self.tun4_encrypt_node_name self.tun4_encrypt_node_name = "esp6-encrypt" self.verify_tun_64(p4, count=63) self.tun4_encrypt_node_name = old_name class TestIpsecEspTun(TemplateIpsecEsp, IpsecTun46Tests): """Ipsec ESP - TUN encap tests""" def setUp(self): self.ipv4_params = IPsecIPv4Params() self.ipv6_params = IPsecIPv6Params() c = ( VppEnum.vl_api_tunnel_encap_decap_flags_t.TUNNEL_API_ENCAP_DECAP_FLAG_ENCAP_COPY_DSCP ) c1 = c | ( VppEnum.vl_api_tunnel_encap_decap_flags_t.TUNNEL_API_ENCAP_DECAP_FLAG_ENCAP_COPY_ECN ) self.ipv4_params.tun_flags = c self.ipv6_params.tun_flags = c1 super(TestIpsecEspTun, self).setUp() def gen_pkts(self, sw_intf, src, dst, count=1, payload_size=54): # set the DSCP + ECN - flags are set to copy only DSCP return [ Ether(src=sw_intf.remote_mac, dst=sw_intf.local_mac) / IP(src=src, dst=dst, tos=5) / UDP(sport=4444, dport=4444) / Raw(b"X" * payload_size) for i in range(count) ] def gen_pkts6(self, p, sw_intf, src, dst, count=1, payload_size=54): # set the DSCP + ECN - flags are set to copy both return [ Ether(src=sw_intf.remote_mac, dst=sw_intf.local_mac) / IPv6(src=src, dst=dst, tc=5) / UDP(sport=4444, dport=4444) / Raw(b"X" * payload_size) for i in range(count) ] def verify_encrypted(self, p, sa, rxs): # just check that only the DSCP is copied for rx in rxs: self.assertEqual(rx[IP].tos, 4) def verify_encrypted6(self, p, sa, rxs): # just check that the DSCP & ECN are copied for rx in rxs: self.assertEqual(rx[IPv6].tc, 5) class TestIpsecEspTun2(TemplateIpsecEsp, IpsecTun46Tests): """Ipsec ESP - TUN DSCP tests""" def setUp(self): self.ipv4_params = IPsecIPv4Params() self.ipv6_params = IPsecIPv6Params() self.ipv4_params.dscp = VppEnum.vl_api_ip_dscp_t.IP_API_DSCP_EF self.ipv6_params.dscp = VppEnum.vl_api_ip_dscp_t.IP_API_DSCP_AF11 super(TestIpsecEspTun2, self).setUp() def gen_pkts(self, sw_intf, src, dst, count=1, payload_size=54): return [ Ether(src=sw_intf.remote_mac, dst=sw_intf.local_mac) / IP(src=src, dst=dst) / UDP(sport=4444, dport=4444) / Raw(b"X" * payload_size) for i in range(count) ] def gen_pkts6(self, p, sw_intf, src, dst, count=1, payload_size=54): return [ Ether(src=sw_intf.remote_mac, dst=sw_intf.local_mac) / IPv6(src=src, dst=dst) / UDP(sport=4444, dport=4444) / Raw(b"X" * payload_size) for i in range(count) ] def verify_encrypted(self, p, sa, rxs): # just check that only the DSCP is set for rx in rxs: self.assertEqual(rx[IP].tos, VppEnum.vl_api_ip_dscp_t.IP_API_DSCP_EF << 2) def verify_encrypted6(self, p, sa, rxs): # just check that the DSCP is set for rx in rxs: self.assertEqual( rx[IPv6].tc, VppEnum.vl_api_ip_dscp_t.IP_API_DSCP_AF11 << 2 ) class TestIpsecEsp2(TemplateIpsecEsp, IpsecTcpTests): """Ipsec ESP - TCP tests""" pass class TestIpsecEspAsync(TemplateIpsecEsp): """Ipsec ESP - Aysnc tests""" vpp_worker_count = 2 def setUp(self): super(TestIpsecEspAsync, self).setUp() self.p_sync = IPsecIPv4Params() self.p_sync.crypt_algo_vpp_id = ( VppEnum.vl_api_ipsec_crypto_alg_t.IPSEC_API_CRYPTO_ALG_AES_CBC_256 ) self.p_sync.crypt_algo = "AES-CBC" # scapy name self.p_sync.crypt_key = b"JPjyOWBeVEQiMe7hJPjyOWBeVEQiMe7h" self.p_sync.scapy_tun_sa_id += 0xF0000 self.p_sync.scapy_tun_spi += 0xF0000 self.p_sync.vpp_tun_sa_id += 0xF0000 self.p_sync.vpp_tun_spi += 0xF0000 self.p_sync.remote_tun_if_host = "2.2.2.2" e = VppEnum.vl_api_ipsec_spd_action_t self.p_sync.sa = VppIpsecSA( self, self.p_sync.vpp_tun_sa_id, self.p_sync.vpp_tun_spi, self.p_sync.auth_algo_vpp_id, self.p_sync.auth_key, self.p_sync.crypt_algo_vpp_id, self.p_sync.crypt_key, self.vpp_esp_protocol, self.tun_if.local_addr[self.p_sync.addr_type], self.tun_if.remote_addr[self.p_sync.addr_type], ).add_vpp_config() self.p_sync.spd = VppIpsecSpdEntry( self, self.tun_spd, self.p_sync.vpp_tun_sa_id, self.pg1.remote_addr[self.p_sync.addr_type], self.pg1.remote_addr[self.p_sync.addr_type], self.p_sync.remote_tun_if_host, self.p_sync.remote_tun_if_host, socket.IPPROTO_RAW, priority=1, policy=e.IPSEC_API_SPD_ACTION_PROTECT, is_outbound=1, ).add_vpp_config() VppIpRoute( self, self.p_sync.remote_tun_if_host, self.p_sync.addr_len, [VppRoutePath(self.tun_if.remote_addr[self.p_sync.addr_type], 0xFFFFFFFF)], ).add_vpp_config() config_tun_params(self.p_sync, self.encryption_type, self.tun_if) self.p_async = IPsecIPv4Params() self.p_async.crypt_algo_vpp_id = ( VppEnum.vl_api_ipsec_crypto_alg_t.IPSEC_API_CRYPTO_ALG_AES_GCM_256 ) self.p_async.auth_algo_vpp_id = ( VppEnum.vl_api_ipsec_integ_alg_t.IPSEC_API_INTEG_ALG_NONE ) self.p_async.crypt_algo = "AES-GCM" # scapy name self.p_async.crypt_key = b"JPjyOWBeVEQiMe7hJPjyOWBeVEQiMe7h" self.p_async.auth_algo = "NULL" self.p_async.scapy_tun_sa_id += 0xE0000 self.p_async.scapy_tun_spi += 0xE0000 self.p_async.vpp_tun_sa_id += 0xE0000 self.p_async.vpp_tun_spi += 0xE0000 self.p_async.remote_tun_if_host = "2.2.2.3" iflags = VppEnum.vl_api_ipsec_sad_flags_t self.p_async.flags = ( iflags.IPSEC_API_SAD_FLAG_USE_ESN | iflags.IPSEC_API_SAD_FLAG_USE_ANTI_REPLAY | iflags.IPSEC_API_SAD_FLAG_ASYNC ) self.p_async.sa = VppIpsecSA( self, self.p_async.vpp_tun_sa_id, self.p_async.vpp_tun_spi, self.p_async.auth_algo_vpp_id, self.p_async.auth_key, self.p_async.crypt_algo_vpp_id, self.p_async.crypt_key, self.vpp_esp_protocol, self.tun_if.local_addr[self.p_async.addr_type], self.tun_if.remote_addr[self.p_async.addr_type], flags=self.p_async.flags, ).add_vpp_config() self.p_async.spd = VppIpsecSpdEntry( self, self.tun_spd, self.p_async.vpp_tun_sa_id, self.pg1.remote_addr[self.p_async.addr_type], self.pg1.remote_addr[self.p_async.addr_type], self.p_async.remote_tun_if_host, self.p_async.remote_tun_if_host, socket.IPPROTO_RAW, priority=2, policy=e.IPSEC_API_SPD_ACTION_PROTECT, is_outbound=1, ).add_vpp_config() VppIpRoute( self, self.p_async.remote_tun_if_host, self.p_async.addr_len, [VppRoutePath(self.tun_if.remote_addr[self.p_async.addr_type], 0xFFFFFFFF)], ).add_vpp_config() config_tun_params(self.p_async, self.encryption_type, self.tun_if) def test_dual_stream(self): """Alternating SAs""" p = self.params[self.p_sync.addr_type] self.vapi.ipsec_set_async_mode(async_enable=True) pkts = [ ( Ether(src=self.pg1.remote_mac, dst=self.pg1.local_mac) / IP(src=self.pg1.remote_ip4, dst=self.p_sync.remote_tun_if_host) / UDP(sport=4444, dport=4444) / Raw(b"0x0" * 200) ), ( Ether(src=self.pg1.remote_mac, dst=self.pg1.local_mac) / IP(src=self.pg1.remote_ip4, dst=p.remote_tun_if_host) / UDP(sport=4444, dport=4444) / Raw(b"0x0" * 200) ), ] pkts *= 1023 rxs = self.send_and_expect(self.pg1, pkts, self.pg0) self.assertEqual(len(rxs), len(pkts)) for rx in rxs: if rx[ESP].spi == p.vpp_tun_spi: decrypted = p.vpp_tun_sa.decrypt(rx[IP]) elif rx[ESP].spi == self.p_sync.vpp_tun_spi: decrypted = self.p_sync.vpp_tun_sa.decrypt(rx[IP]) else: rx.show() self.assertTrue(False) self.p_sync.spd.remove_vpp_config() self.p_sync.sa.remove_vpp_config() self.p_async.spd.remove_vpp_config() self.p_async.sa.remove_vpp_config() self.vapi.ipsec_set_async_mode(async_enable=False) def test_sync_async_noop_stream(self): """Alternating SAs sync/async/noop""" p = self.params[self.p_sync.addr_type] # first pin the default/noop SA to worker 0 pkts = [ ( Ether(src=self.pg1.remote_mac, dst=self.pg1.local_mac) / IP(src=self.pg1.remote_ip4, dst=p.remote_tun_if_host) / UDP(sport=4444, dport=4444) / Raw(b"0x0" * 200) ) ] rxs = self.send_and_expect(self.pg1, pkts, self.pg0, worker=0) self.logger.info(self.vapi.cli("sh ipsec sa")) self.logger.info(self.vapi.cli("sh crypto async status")) # then use all the other SAs on worker 1. # some will handoff, other take the sync and async paths pkts = [ ( Ether(src=self.pg1.remote_mac, dst=self.pg1.local_mac) / IP(src=self.pg1.remote_ip4, dst=self.p_sync.remote_tun_if_host) / UDP(sport=4444, dport=4444) / Raw(b"0x0" * 200) ), ( Ether(src=self.pg1.remote_mac, dst=self.pg1.local_mac) / IP(src=self.pg1.remote_ip4, dst=p.remote_tun_if_host) / UDP(sport=4444, dport=4444) / Raw(b"0x0" * 200) ), ( Ether(src=self.pg1.remote_mac, dst=self.pg1.local_mac) / IP(src=self.pg1.remote_ip4, dst=self.p_async.remote_tun_if_host) / UDP(sport=4444, dport=4444) / Raw(b"0x0" * 200) ), ] pkts *= 1023 rxs = self.send_and_expect(self.pg1, pkts, self.pg0, worker=1) self.assertEqual(len(rxs), len(pkts)) for rx in rxs: if rx[ESP].spi == p.vpp_tun_spi: decrypted = p.vpp_tun_sa.decrypt(rx[IP]) elif rx[ESP].spi == self.p_sync.vpp_tun_spi: decrypted = self.p_sync.vpp_tun_sa.decrypt(rx[IP]) elif rx[ESP].spi == self.p_async.vpp_tun_spi: decrypted = self.p_async.vpp_tun_sa.decrypt(rx[IP]) else: rx.show() self.assertTrue(False) self.p_sync.spd.remove_vpp_config() self.p_sync.sa.remove_vpp_config() self.p_async.spd.remove_vpp_config() self.p_async.sa.remove_vpp_config() class TestIpsecEspHandoff( TemplateIpsecEsp, IpsecTun6HandoffTests, IpsecTun4HandoffTests ): """Ipsec ESP - handoff tests""" pass class TemplateIpsecEspUdp(ConfigIpsecESP): """ UDP encapped ESP """ @classmethod def setUpClass(cls): super(TemplateIpsecEspUdp, cls).setUpClass() @classmethod def tearDownClass(cls): super(TemplateIpsecEspUdp, cls).tearDownClass() def setUp(self): super(TemplateIpsecEspUdp, self).setUp() self.net_objs = [] self.tun_if = self.pg0 self.tra_if = self.pg2 self.logger.info(self.vapi.ppcli("show int addr")) p = self.ipv4_params p.flags = ( VppEnum.vl_api_ipsec_sad_flags_t.IPSEC_API_SAD_FLAG_UDP_ENCAP | VppEnum.vl_api_ipsec_sad_flags_t.IPSEC_API_SAD_FLAG_USE_ANTI_REPLAY ) p.nat_header = UDP(sport=5454, dport=4500) self.tra_spd = VppIpsecSpd(self, self.tra_spd_id) self.tra_spd.add_vpp_config() VppIpsecSpdItfBinding(self, self.tra_spd, self.tra_if).add_vpp_config() self.config_esp_tra(p) config_tra_params(p, self.encryption_type) self.tun_spd = VppIpsecSpd(self, self.tun_spd_id) self.tun_spd.add_vpp_config() VppIpsecSpdItfBinding(self, self.tun_spd, self.tun_if).add_vpp_config() self.config_esp_tun(p) self.logger.info(self.vapi.ppcli("show ipsec all")) d = DpoProto.DPO_PROTO_IP4 VppIpRoute( self, p.remote_tun_if_host, p.addr_len, [VppRoutePath(self.tun_if.remote_addr[p.addr_type], 0xFFFFFFFF, proto=d)], ).add_vpp_config() def tearDown(self): super(TemplateIpsecEspUdp, self).tearDown() def show_commands_at_teardown(self): self.logger.info(self.vapi.cli("show hardware")) class TestIpsecEspUdp(TemplateIpsecEspUdp, IpsecTra4Tests): """Ipsec NAT-T ESP UDP tests""" pass class MyParameters: def __init__(self): saf = VppEnum.vl_api_ipsec_sad_flags_t flag_esn = saf.IPSEC_API_SAD_FLAG_USE_ESN flag_ar = saf.IPSEC_API_SAD_FLAG_USE_ANTI_REPLAY self.flags = [0, flag_esn, flag_ar] # foreach crypto algorithm self.algos = { "AES-GCM-128/NONE": { "vpp-crypto": ( VppEnum.vl_api_ipsec_crypto_alg_t.IPSEC_API_CRYPTO_ALG_AES_GCM_128 ), "vpp-integ": ( VppEnum.vl_api_ipsec_integ_alg_t.IPSEC_API_INTEG_ALG_NONE ), "scapy-crypto": "AES-GCM", "scapy-integ": "NULL", "key": b"JPjyOWBeVEQiMe7h", "salt": 0, }, "AES-GCM-192/NONE": { "vpp-crypto": ( VppEnum.vl_api_ipsec_crypto_alg_t.IPSEC_API_CRYPTO_ALG_AES_GCM_192 ), "vpp-integ": ( VppEnum.vl_api_ipsec_integ_alg_t.IPSEC_API_INTEG_ALG_NONE ), "scapy-crypto": "AES-GCM", "scapy-integ": "NULL", "key": b"JPjyOWBeVEQiMe7h01234567", "salt": 1010, }, "AES-GCM-256/NONE": { "vpp-crypto": ( VppEnum.vl_api_ipsec_crypto_alg_t.IPSEC_API_CRYPTO_ALG_AES_GCM_256 ), "vpp-integ": ( VppEnum.vl_api_ipsec_integ_alg_t.IPSEC_API_INTEG_ALG_NONE ), "scapy-crypto": "AES-GCM", "scapy-integ": "NULL", "key": b"JPjyOWBeVEQiMe7h0123456787654321", "salt": 2020, }, "AES-CBC-128/MD5-96": { "vpp-crypto": ( VppEnum.vl_api_ipsec_crypto_alg_t.IPSEC_API_CRYPTO_ALG_AES_CBC_128 ), "vpp-integ": ( VppEnum.vl_api_ipsec_integ_alg_t.IPSEC_API_INTEG_ALG_MD5_96 ), "scapy-crypto": "AES-CBC", "scapy-integ": "HMAC-MD5-96", "salt": 0, "key": b"JPjyOWBeVEQiMe7h", }, "AES-CBC-192/SHA1-96": { "vpp-crypto": ( VppEnum.vl_api_ipsec_crypto_alg_t.IPSEC_API_CRYPTO_ALG_AES_CBC_192 ), "vpp-integ": ( VppEnum.vl_api_ipsec_integ_alg_t.IPSEC_API_INTEG_ALG_SHA1_96 ), "scapy-crypto": "AES-CBC", "scapy-integ": "HMAC-SHA1-96", "salt": 0, "key": b"JPjyOWBeVEQiMe7hJPjyOWBe", }, "AES-CBC-256/SHA1-96": { "vpp-crypto": ( VppEnum.vl_api_ipsec_crypto_alg_t.IPSEC_API_CRYPTO_ALG_AES_CBC_256 ), "vpp-integ": ( VppEnum.vl_api_ipsec_integ_alg_t.IPSEC_API_INTEG_ALG_SHA1_96 ), "scapy-crypto": "AES-CBC", "scapy-integ": "HMAC-SHA1-96", "salt": 0, "key": b"JPjyOWBeVEQiMe7hJPjyOWBeVEQiMe7h", }, "3DES-CBC/SHA1-96": { "vpp-crypto": ( VppEnum.vl_api_ipsec_crypto_alg_t.IPSEC_API_CRYPTO_ALG_3DES_CBC ), "vpp-integ": ( VppEnum.vl_api_ipsec_integ_alg_t.IPSEC_API_INTEG_ALG_SHA1_96 ), "scapy-crypto": "3DES", "scapy-integ": "HMAC-SHA1-96", "salt": 0, "key": b"JPjyOWBeVEQiMe7h00112233", }, "NONE/SHA1-96": { "vpp-crypto": ( VppEnum.vl_api_ipsec_crypto_alg_t.IPSEC_API_CRYPTO_ALG_NONE ), "vpp-integ": ( VppEnum.vl_api_ipsec_integ_alg_t.IPSEC_API_INTEG_ALG_SHA1_96 ), "scapy-crypto": "NULL", "scapy-integ": "HMAC-SHA1-96", "salt": 0, "key": b"JPjyOWBeVEQiMe7h00112233", }, "AES-CTR-128/SHA1-96": { "vpp-crypto": ( VppEnum.vl_api_ipsec_crypto_alg_t.IPSEC_API_CRYPTO_ALG_AES_CTR_128 ), "vpp-integ": ( VppEnum.vl_api_ipsec_integ_alg_t.IPSEC_API_INTEG_ALG_SHA1_96 ), "scapy-crypto": "AES-CTR", "scapy-integ": "HMAC-SHA1-96", "salt": 0, "key": b"JPjyOWBeVEQiMe7h", }, "AES-CTR-192/SHA1-96": { "vpp-crypto": ( VppEnum.vl_api_ipsec_crypto_alg_t.IPSEC_API_CRYPTO_ALG_AES_CTR_192 ), "vpp-integ": ( VppEnum.vl_api_ipsec_integ_alg_t.IPSEC_API_INTEG_ALG_SHA1_96 ), "scapy-crypto": "AES-CTR", "scapy-integ": "HMAC-SHA1-96", "salt": 1010, "key": b"JPjyOWBeVEQiMe7hJPjyOWBe", }, "AES-CTR-256/SHA1-96": { "vpp-crypto": ( VppEnum.vl_api_ipsec_crypto_alg_t.IPSEC_API_CRYPTO_ALG_AES_CTR_256 ), "vpp-integ": ( VppEnum.vl_api_ipsec_integ_alg_t.IPSEC_API_INTEG_ALG_SHA1_96 ), "scapy-crypto": "AES-CTR", "scapy-integ": "HMAC-SHA1-96", "salt": 2020, "key": b"JPjyOWBeVEQiMe7hJPjyOWBeVEQiMe7h", }, "AES-NULL-GMAC-128/NONE": { "vpp-crypto": ( VppEnum.vl_api_ipsec_crypto_alg_t.IPSEC_API_CRYPTO_ALG_AES_NULL_GMAC_128 ), "vpp-integ": ( VppEnum.vl_api_ipsec_integ_alg_t.IPSEC_API_INTEG_ALG_NONE ), "scapy-crypto": "AES-NULL-GMAC", "scapy-integ": "NULL", "key": b"JPjyOWBeVEQiMe7h", "salt": 0, }, "AES-NULL-GMAC-192/NONE": { "vpp-crypto": ( VppEnum.vl_api_ipsec_crypto_alg_t.IPSEC_API_CRYPTO_ALG_AES_NULL_GMAC_192 ), "vpp-integ": ( VppEnum.vl_api_ipsec_integ_alg_t.IPSEC_API_INTEG_ALG_NONE ), "scapy-crypto": "AES-NULL-GMAC", "scapy-integ": "NULL", "key": b"JPjyOWBeVEQiMe7h01234567", "salt": 1010, }, "AES-NULL-GMAC-256/NONE": { "vpp-crypto": ( VppEnum.vl_api_ipsec_crypto_alg_t.IPSEC_API_CRYPTO_ALG_AES_NULL_GMAC_256 ), "vpp-integ": ( VppEnum.vl_api_ipsec_integ_alg_t.IPSEC_API_INTEG_ALG_NONE ), "scapy-crypto": "AES-NULL-GMAC", "scapy-integ": "NULL", "key": b"JPjyOWBeVEQiMe7h0123456787654321", "salt": 2020, }, } class RunTestIpsecEspAll(ConfigIpsecESP, IpsecTra4, IpsecTra6, IpsecTun4, IpsecTun6): """Ipsec ESP all Algos""" @classmethod def setUpConstants(cls): test_args = str.split(cls.__doc__, " ") engine = test_args[0] if engine == "async": cls.vpp_worker_count = 2 super(RunTestIpsecEspAll, cls).setUpConstants() def setUp(self): super(RunTestIpsecEspAll, self).setUp() test_args = str.split(self.__doc__, " ") params = MyParameters() self.engine = test_args[0] self.flag = params.flags[0] if test_args[1] == "ESNon": self.flag |= params.flags[1] if test_args[2] == "ARon": self.flag |= params.flags[2] self.algo = params.algos[test_args[3]] self.async_mode = False if self.engine == "async": self.async_mode = True def tearDown(self): super(RunTestIpsecEspAll, self).tearDown() def run_test(self): self.run_a_test(self.engine, self.flag, self.algo) def run_a_test(self, engine, flag, algo, payload_size=None): if self.async_mode: self.vapi.cli("set ipsec async mode on") else: self.vapi.cli("set crypto handler all %s" % engine) self.logger.info(self.vapi.cli("show crypto async status")) self.ipv4_params = IPsecIPv4Params() self.ipv6_params = IPsecIPv6Params() self.params = { self.ipv4_params.addr_type: self.ipv4_params, self.ipv6_params.addr_type: self.ipv6_params, } for _, p in self.params.items(): p.auth_algo_vpp_id = algo["vpp-integ"] p.crypt_algo_vpp_id = algo["vpp-crypto"] p.crypt_algo = algo["scapy-crypto"] p.auth_algo = algo["scapy-integ"] p.crypt_key = algo["key"] p.salt = algo["salt"] p.flags = flag p.outer_flow_label = 243224 p.async_mode = self.async_mode self.reporter.send_keep_alive(self) # # configure the SPDs. SAs, etc # self.config_network(self.params.values()) # # run some traffic. # An exhautsive 4o6, 6o4 is not necessary # for each algo # self.verify_tra_basic6(count=NUM_PKTS) self.verify_tra_basic4(count=NUM_PKTS) self.verify_tun_66(self.params[socket.AF_INET6], count=NUM_PKTS) # # Use an odd-byte payload size to check for correct padding. # # 49 + 2 == 51 which should pad +1 to 52 for 4 byte alignment, +5 # to 56 for 8 byte alignment, and +13 to 64 for 64 byte alignment. # This should catch bugs where the code is incorrectly over-padding # for algorithms that don't require it psz = 49 - len(IP() / ICMP()) if payload_size is None else payload_size self.verify_tun_44( self.params[socket.AF_INET], count=NUM_PKTS, payload_size=psz ) LARGE_PKT_SZ = [ 1970, # results in 2 chained buffers entering decrypt node # but leaving as simple buffer due to ICV removal (tra4) 2004, # footer+ICV will be added to 2nd buffer (tun4) 4010, # ICV ends up splitted across 2 buffers in esp_decrypt # for transport4; transport6 takes normal path 4020, # same as above but tra4 and tra6 are switched ] if self.engine in engines_supporting_chain_bufs: for sz in LARGE_PKT_SZ: self.verify_tra_basic4(count=NUM_PKTS, payload_size=sz) self.verify_tra_basic6(count=NUM_PKTS, payload_size=sz) self.verify_tun_66( self.params[socket.AF_INET6], count=NUM_PKTS, payload_size=sz ) self.verify_tun_44( self.params[socket.AF_INET], count=NUM_PKTS, payload_size=sz ) # # reconfigure the network and SA to run the # anti replay tests # saf = VppEnum.vl_api_ipsec_sad_flags_t if flag & saf.IPSEC_API_SAD_FLAG_USE_ANTI_REPLAY: for anti_replay_window_size in ( 64, 131072, ): self.unconfig_network() self.config_anti_replay(self.params.values(), anti_replay_window_size) self.config_network(self.params.values()) self.verify_tra_anti_replay() self.verify_tra_anti_replay_algorithm() self.config_anti_replay(self.params.values()) self.unconfig_network() self.config_network(self.params.values()) self.verify_hi_seq_num() self.unconfig_network() self.config_network(self.params.values()) self.verify_tra_lost() # # swap the handlers while SAs are up # self.unconfig_network() self.config_network(self.params.values()) for e in engines: if e != engine: self.vapi.cli("set crypto handler all %s" % e) self.verify_tra_basic4(count=NUM_PKTS) self.unconfig_network() # # To generate test classes, do: # grep '# GEN' test_ipsec_esp.py | sed -e 's/# GEN //g' | bash # # GEN for ENG in native ipsecmb openssl; do \ # GEN for ESN in ESNon ESNoff; do for AR in ARon ARoff; do \ # GEN for ALG in AES-GCM-128/NONE \ # GEN AES-GCM-192/NONE AES-GCM-256/NONE AES-CBC-128/MD5-96 \ # GEN AES-CBC-192/SHA1-96 AES-CBC-256/SHA1-96 \ # GEN 3DES-CBC/SHA1-96 NONE/SHA1-96 \ # GEN AES-CTR-128/SHA1-96 AES-CTR-192/SHA1-96 AES-CTR-256/SHA1-96 \ # GEN AES-NULL-GMAC-128/NONE AES-NULL-GMAC-192/NONE AES-NULL-GMAC-256/NONE; do \ # GEN echo -en "\n\nclass " # GEN echo -e "Test_${ENG}_${ESN}_${AR}_${ALG}(RunTestIpsecEspAll):" | # GEN sed -e 's/-/_/g' -e 's#/#_#g' ; # GEN echo ' """'$ENG $ESN $AR $ALG IPSec test'"""' ; # GEN echo " def test_ipsec(self):"; # GEN echo ' """'$ENG $ESN $AR $ALG IPSec test'"""' ; # GEN echo " self.run_test()"; # GEN done; done; done; done # # GEN for ESN in ESNon ESNoff; do for AR in ARon ARoff; do \ # GEN for ALG in \ # GEN AES-GCM-128/NONE AES-GCM-192/NONE AES-GCM-256/NONE \ # GEN AES-CBC-192/SHA1-96 AES-CBC-256/SHA1-96; do \ # GEN echo -en "\n\nclass " # GEN echo -e "Test_async_${ESN}_${AR}_${ALG}(RunTestIpsecEspAll):" | # GEN sed -e 's/-/_/g' -e 's#/#_#g' ; # GEN echo ' """'async $ESN $AR $ALG IPSec test'"""' ; # GEN echo " def test_ipsec(self):"; # GEN echo ' """'async $ESN $AR $ALG IPSec test'"""' ; # GEN echo " self.run_test()"; # GEN done; done; done; class Test_native_ESNon_ARon_AES_GCM_128_NONE(RunTestIpsecEspAll): """native ESNon ARon AES-GCM-128/NONE IPSec test""" def test_ipsec(self): """native ESNon ARon AES-GCM-128/NONE IPSec test""" self.run_test() class Test_native_ESNon_ARon_AES_GCM_192_NONE(RunTestIpsecEspAll): """native ESNon ARon AES-GCM-192/NONE IPSec test""" def test_ipsec(self): """native ESNon ARon AES-GCM-192/NONE IPSec test""" self.run_test() class Test_native_ESNon_ARon_AES_GCM_256_NONE(RunTestIpsecEspAll): """native ESNon ARon AES-GCM-256/NONE IPSec test""" def test_ipsec(self): """native ESNon ARon AES-GCM-256/NONE IPSec test""" self.run_test() class Test_native_ESNon_ARon_AES_CBC_128_MD5_96(RunTestIpsecEspAll): """native ESNon ARon AES-CBC-128/MD5-96 IPSec test""" def test_ipsec(self): """native ESNon ARon AES-CBC-128/MD5-96 IPSec test""" self.run_test() class Test_native_ESNon_ARon_AES_CBC_192_SHA1_96(RunTestIpsecEspAll): """native ESNon ARon AES-CBC-192/SHA1-96 IPSec test""" def test_ipsec(self): """native ESNon ARon AES-CBC-192/SHA1-96 IPSec test""" self.run_test() class Test_native_ESNon_ARon_AES_CBC_256_SHA1_96(RunTestIpsecEspAll): """native ESNon ARon AES-CBC-256/SHA1-96 IPSec test""" def test_ipsec(self): """native ESNon ARon AES-CBC-256/SHA1-96 IPSec test""" self.run_test() class Test_native_ESNon_ARon_3DES_CBC_SHA1_96(RunTestIpsecEspAll): """native ESNon ARon 3DES-CBC/SHA1-96 IPSec test""" def test_ipsec(self): """native ESNon ARon 3DES-CBC/SHA1-96 IPSec test""" self.run_test() class Test_native_ESNon_ARon_NONE_SHA1_96(RunTestIpsecEspAll): """native ESNon ARon NONE/SHA1-96 IPSec test""" def test_ipsec(self): """native ESNon ARon NONE/SHA1-96 IPSec test""" self.run_test() class Test_native_ESNon_ARon_AES_CTR_128_SHA1_96(RunTestIpsecEspAll): """native ESNon ARon AES-CTR-128/SHA1-96 IPSec test""" def test_ipsec(self): """native ESNon ARon AES-CTR-128/SHA1-96 IPSec test""" self.run_test() class Test_native_ESNon_ARon_AES_CTR_192_SHA1_96(RunTestIpsecEspAll): """native ESNon ARon AES-CTR-192/SHA1-96 IPSec test""" def test_ipsec(self): """native ESNon ARon AES-CTR-192/SHA1-96 IPSec test""" self.run_test() class Test_native_ESNon_ARon_AES_CTR_256_SHA1_96(RunTestIpsecEspAll): """native ESNon ARon AES-CTR-256/SHA1-96 IPSec test""" def test_ipsec(self): """native ESNon ARon AES-CTR-256/SHA1-96 IPSec test""" self.run_test() class Test_native_ESNon_ARoff_AES_GCM_128_NONE(RunTestIpsecEspAll): """native ESNon ARoff AES-GCM-128/NONE IPSec test""" def test_ipsec(self): """native ESNon ARoff AES-GCM-128/NONE IPSec test""" self.run_test() class Test_native_ESNon_ARoff_AES_GCM_192_NONE(RunTestIpsecEspAll): """native ESNon ARoff AES-GCM-192/NONE IPSec test""" def test_ipsec(self): """native ESNon ARoff AES-GCM-192/NONE IPSec test""" self.run_test() class Test_native_ESNon_ARoff_AES_GCM_256_NONE(RunTestIpsecEspAll): """native ESNon ARoff AES-GCM-256/NONE IPSec test""" def test_ipsec(self): """native ESNon ARoff AES-GCM-256/NONE IPSec test""" self.run_test() class Test_native_ESNon_ARoff_AES_CBC_128_MD5_96(RunTestIpsecEspAll): """native ESNon ARoff AES-CBC-128/MD5-96 IPSec test""" def test_ipsec(self): """native ESNon ARoff AES-CBC-128/MD5-96 IPSec test""" self.run_test() class Test_native_ESNon_ARoff_AES_CBC_192_SHA1_96(RunTestIpsecEspAll): """native ESNon ARoff AES-CBC-192/SHA1-96 IPSec test""" def test_ipsec(self): """native ESNon ARoff AES-CBC-192/SHA1-96 IPSec test""" self.run_test() class Test_native_ESNon_ARoff_AES_CBC_256_SHA1_96(RunTestIpsecEspAll): """native ESNon ARoff AES-CBC-256/SHA1-96 IPSec test""" def test_ipsec(self): """native ESNon ARoff AES-CBC-256/SHA1-96 IPSec test""" self.run_test() class Test_native_ESNon_ARoff_3DES_CBC_SHA1_96(RunTestIpsecEspAll): """native ESNon ARoff 3DES-CBC/SHA1-96 IPSec test""" def test_ipsec(self): """native ESNon ARoff 3DES-CBC/SHA1-96 IPSec test""" self.run_test() class Test_native_ESNon_ARoff_NONE_SHA1_96(RunTestIpsecEspAll): """native ESNon ARoff NONE/SHA1-96 IPSec test""" def test_ipsec(self): """native ESNon ARoff NONE/SHA1-96 IPSec test""" self.run_test() class Test_native_ESNon_ARoff_AES_CTR_128_SHA1_96(RunTestIpsecEspAll): """native ESNon ARoff AES-CTR-128/SHA1-96 IPSec test""" def test_ipsec(self): """native ESNon ARoff AES-CTR-128/SHA1-96 IPSec test""" self.run_test() class Test_native_ESNon_ARoff_AES_CTR_192_SHA1_96(RunTestIpsecEspAll): """native ESNon ARoff AES-CTR-192/SHA1-96 IPSec test""" def test_ipsec(self): """native ESNon ARoff AES-CTR-192/SHA1-96 IPSec test""" self.run_test() class Test_native_ESNon_ARoff_AES_CTR_256_SHA1_96(RunTestIpsecEspAll): """native ESNon ARoff AES-CTR-256/SHA1-96 IPSec test""" def test_ipsec(self): """native ESNon ARoff AES-CTR-256/SHA1-96 IPSec test""" self.run_test() class Test_native_ESNoff_ARon_AES_GCM_128_NONE(RunTestIpsecEspAll): """native ESNoff ARon AES-GCM-128/NONE IPSec test""" def test_ipsec(self): """native ESNoff ARon AES-GCM-128/NONE IPSec test""" self.run_test() class Test_native_ESNoff_ARon_AES_GCM_192_NONE(RunTestIpsecEspAll): """native ESNoff ARon AES-GCM-192/NONE IPSec test""" def test_ipsec(self): """native ESNoff ARon AES-GCM-192/NONE IPSec test""" self.run_test() class Test_native_ESNoff_ARon_AES_GCM_256_NONE(RunTestIpsecEspAll): """native ESNoff ARon AES-GCM-256/NONE IPSec test""" def test_ipsec(self): """native ESNoff ARon AES-GCM-256/NONE IPSec test""" self.run_test() class Test_native_ESNoff_ARon_AES_CBC_128_MD5_96(RunTestIpsecEspAll): """native ESNoff ARon AES-CBC-128/MD5-96 IPSec test""" def test_ipsec(self): """native ESNoff ARon AES-CBC-128/MD5-96 IPSec test""" self.run_test() class Test_native_ESNoff_ARon_AES_CBC_192_SHA1_96(RunTestIpsecEspAll): """native ESNoff ARon AES-CBC-192/SHA1-96 IPSec test""" def test_ipsec(self): """native ESNoff ARon AES-CBC-192/SHA1-96 IPSec test""" self.run_test() class Test_native_ESNoff_ARon_AES_CBC_256_SHA1_96(RunTestIpsecEspAll): """native ESNoff ARon AES-CBC-256/SHA1-96 IPSec test""" def test_ipsec(self): """native ESNoff ARon AES-CBC-256/SHA1-96 IPSec test""" self.run_test() class Test_native_ESNoff_ARon_3DES_CBC_SHA1_96(RunTestIpsecEspAll): """native ESNoff ARon 3DES-CBC/SHA1-96 IPSec test""" def test_ipsec(self): """native ESNoff ARon 3DES-CBC/SHA1-96 IPSec test""" self.run_test() class Test_native_ESNoff_ARon_NONE_SHA1_96(RunTestIpsecEspAll): """native ESNoff ARon NONE/SHA1-96 IPSec test""" def test_ipsec(self): """native ESNoff ARon NONE/SHA1-96 IPSec test""" self.run_test() class Test_native_ESNoff_ARon_AES_CTR_128_SHA1_96(RunTestIpsecEspAll): """native ESNoff ARon AES-CTR-128/SHA1-96 IPSec test""" def test_ipsec(self): """native ESNoff ARon AES-CTR-128/SHA1-96 IPSec test""" self.run_test() class Test_native_ESNoff_ARon_AES_CTR_192_SHA1_96(RunTestIpsecEspAll): """native ESNoff ARon AES-CTR-192/SHA1-96 IPSec test""" def test_ipsec(self): """native ESNoff ARon AES-CTR-192/SHA1-96 IPSec test""" self.run_test() class Test_native_ESNoff_ARon_AES_CTR_256_SHA1_96(RunTestIpsecEspAll): """native ESNoff ARon AES-CTR-256/SHA1-96 IPSec test""" def test_ipsec(self): """native ESNoff ARon AES-CTR-256/SHA1-96 IPSec test""" self.run_test() class Test_native_ESNoff_ARoff_AES_GCM_128_NONE(RunTestIpsecEspAll): """native ESNoff ARoff AES-GCM-128/NONE IPSec test""" def test_ipsec(self): """native ESNoff ARoff AES-GCM-128/NONE IPSec test""" self.run_test() class Test_native_ESNoff_ARoff_AES_GCM_192_NONE(RunTestIpsecEspAll): """native ESNoff ARoff AES-GCM-192/NONE IPSec test""" def test_ipsec(self): """native ESNoff ARoff AES-GCM-192/NONE IPSec test""" self.run_test() class Test_native_ESNoff_ARoff_AES_GCM_256_NONE(RunTestIpsecEspAll): """native ESNoff ARoff AES-GCM-256/NONE IPSec test""" def test_ipsec(self): """native ESNoff ARoff AES-GCM-256/NONE IPSec test""" self.run_test() class Test_native_ESNoff_ARoff_AES_CBC_128_MD5_96(RunTestIpsecEspAll): """native ESNoff ARoff AES-CBC-128/MD5-96 IPSec test""" def test_ipsec(self): """native ESNoff ARoff AES-CBC-128/MD5-96 IPSec test""" self.run_test() class Test_native_ESNoff_ARoff_AES_CBC_192_SHA1_96(RunTestIpsecEspAll): """native ESNoff ARoff AES-CBC-192/SHA1-96 IPSec test""" def test_ipsec(self): """native ESNoff ARoff AES-CBC-192/SHA1-96 IPSec test""" self.run_test() class Test_native_ESNoff_ARoff_AES_CBC_256_SHA1_96(RunTestIpsecEspAll): """native ESNoff ARoff AES-CBC-256/SHA1-96 IPSec test""" def test_ipsec(self): """native ESNoff ARoff AES-CBC-256/SHA1-96 IPSec test""" self.run_test() class Test_native_ESNoff_ARoff_3DES_CBC_SHA1_96(RunTestIpsecEspAll): """native ESNoff ARoff 3DES-CBC/SHA1-96 IPSec test""" def test_ipsec(self): """native ESNoff ARoff 3DES-CBC/SHA1-96 IPSec test""" self.run_test() class Test_native_ESNoff_ARoff_NONE_SHA1_96(RunTestIpsecEspAll): """native ESNoff ARoff NONE/SHA1-96 IPSec test""" def test_ipsec(self): """native ESNoff ARoff NONE/SHA1-96 IPSec test""" self.run_test() class Test_native_ESNoff_ARoff_AES_CTR_128_SHA1_96(RunTestIpsecEspAll): """native ESNoff ARoff AES-CTR-128/SHA1-96 IPSec test""" def test_ipsec(self): """native ESNoff ARoff AES-CTR-128/SHA1-96 IPSec test""" self.run_test() class Test_native_ESNoff_ARoff_AES_CTR_192_SHA1_96(RunTestIpsecEspAll): """native ESNoff ARoff AES-CTR-192/SHA1-96 IPSec test""" def test_ipsec(self): """native ESNoff ARoff AES-CTR-192/SHA1-96 IPSec test""" self.run_test() class Test_native_ESNoff_ARoff_AES_CTR_256_SHA1_96(RunTestIpsecEspAll): """native ESNoff ARoff AES-CTR-256/SHA1-96 IPSec test""" def test_ipsec(self): """native ESNoff ARoff AES-CTR-256/SHA1-96 IPSec test""" self.run_test() class Test_ipsecmb_ESNon_ARon_AES_GCM_128_NONE(RunTestIpsecEspAll): """ipsecmb ESNon ARon AES-GCM-128/NONE IPSec test""" def test_ipsec(self): """ipsecmb ESNon ARon AES-GCM-128/NONE IPSec test""" self.run_test() class Test_ipsecmb_ESNon_ARon_AES_GCM_192_NONE(RunTestIpsecEspAll): """ipsecmb ESNon ARon AES-GCM-192/NONE IPSec test""" def test_ipsec(self): """ipsecmb ESNon ARon AES-GCM-192/NONE IPSec test""" self.run_test() class Test_ipsecmb_ESNon_ARon_AES_GCM_256_NONE(RunTestIpsecEspAll): """ipsecmb ESNon ARon AES-GCM-256/NONE IPSec test""" def test_ipsec(self): """ipsecmb ESNon ARon AES-GCM-256/NONE IPSec test""" self.run_test() class Test_ipsecmb_ESNon_ARon_AES_CBC_128_MD5_96(RunTestIpsecEspAll): """ipsecmb ESNon ARon AES-CBC-128/MD5-96 IPSec test""" def test_ipsec(self): """ipsecmb ESNon ARon AES-CBC-128/MD5-96 IPSec test""" self.run_test() class Test_ipsecmb_ESNon_ARon_AES_CBC_192_SHA1_96(RunTestIpsecEspAll): """ipsecmb ESNon ARon AES-CBC-192/SHA1-96 IPSec test""" def test_ipsec(self): """ipsecmb ESNon ARon AES-CBC-192/SHA1-96 IPSec test""" self.run_test() class Test_ipsecmb_ESNon_ARon_AES_CBC_256_SHA1_96(RunTestIpsecEspAll): """ipsecmb ESNon ARon AES-CBC-256/SHA1-96 IPSec test""" def test_ipsec(self): """ipsecmb ESNon ARon AES-CBC-256/SHA1-96 IPSec test""" self.run_test() class Test_ipsecmb_ESNon_ARon_3DES_CBC_SHA1_96(RunTestIpsecEspAll): """ipsecmb ESNon ARon 3DES-CBC/SHA1-96 IPSec test""" def test_ipsec(self): """ipsecmb ESNon ARon 3DES-CBC/SHA1-96 IPSec test""" self.run_test() class Test_ipsecmb_ESNon_ARon_NONE_SHA1_96(RunTestIpsecEspAll): """ipsecmb ESNon ARon NONE/SHA1-96 IPSec test""" def test_ipsec(self): """ipsecmb ESNon ARon NONE/SHA1-96 IPSec test""" self.run_test() class Test_ipsecmb_ESNon_ARon_AES_CTR_128_SHA1_96(RunTestIpsecEspAll): """ipsecmb ESNon ARon AES-CTR-128/SHA1-96 IPSec test""" def test_ipsec(self): """ipsecmb ESNon ARon AES-CTR-128/SHA1-96 IPSec test""" self.run_test() class Test_ipsecmb_ESNon_ARon_AES_CTR_192_SHA1_96(RunTestIpsecEspAll): """ipsecmb ESNon ARon AES-CTR-192/SHA1-96 IPSec test""" def test_ipsec(self): """ipsecmb ESNon ARon AES-CTR-192/SHA1-96 IPSec test""" self.run_test() class Test_ipsecmb_ESNon_ARon_AES_CTR_256_SHA1_96(RunTestIpsecEspAll): """ipsecmb ESNon ARon AES-CTR-256/SHA1-96 IPSec test""" def test_ipsec(self): """ipsecmb ESNon ARon AES-CTR-256/SHA1-96 IPSec test""" self.run_test() class Test_ipsecmb_ESNon_ARoff_AES_GCM_128_NONE(RunTestIpsecEspAll): """ipsecmb ESNon ARoff AES-GCM-128/NONE IPSec test""" def test_ipsec(self): """ipsecmb ESNon ARoff AES-GCM-128/NONE IPSec test""" self.run_test() class Test_ipsecmb_ESNon_ARoff_AES_GCM_192_NONE(RunTestIpsecEspAll): """ipsecmb ESNon ARoff AES-GCM-192/NONE IPSec test""" def test_ipsec(self): """ipsecmb ESNon ARoff AES-GCM-192/NONE IPSec test""" self.run_test() class Test_ipsecmb_ESNon_ARoff_AES_GCM_256_NONE(RunTestIpsecEspAll): """ipsecmb ESNon ARoff AES-GCM-256/NONE IPSec test""" def test_ipsec(self): """ipsecmb ESNon ARoff AES-GCM-256/NONE IPSec test""" self.run_test() class Test_ipsecmb_ESNon_ARoff_AES_CBC_128_MD5_96(RunTestIpsecEspAll): """ipsecmb ESNon ARoff AES-CBC-128/MD5-96 IPSec test""" def test_ipsec(self): """ipsecmb ESNon ARoff AES-CBC-128/MD5-96 IPSec test""" self.run_test() class Test_ipsecmb_ESNon_ARoff_AES_CBC_192_SHA1_96(RunTestIpsecEspAll): """ipsecmb ESNon ARoff AES-CBC-192/SHA1-96 IPSec test""" def test_ipsec(self): """ipsecmb ESNon ARoff AES-CBC-192/SHA1-96 IPSec test""" self.run_test() class Test_ipsecmb_ESNon_ARoff_AES_CBC_256_SHA1_96(RunTestIpsecEspAll): """ipsecmb ESNon ARoff AES-CBC-256/SHA1-96 IPSec test""" def test_ipsec(self): """ipsecmb ESNon ARoff AES-CBC-256/SHA1-96 IPSec test""" self.run_test() class Test_ipsecmb_ESNon_ARoff_3DES_CBC_SHA1_96(RunTestIpsecEspAll): """ipsecmb ESNon ARoff 3DES-CBC/SHA1-96 IPSec test""" def test_ipsec(self): """ipsecmb ESNon ARoff 3DES-CBC/SHA1-96 IPSec test""" self.run_test() class Test_ipsecmb_ESNon_ARoff_NONE_SHA1_96(RunTestIpsecEspAll): """ipsecmb ESNon ARoff NONE/SHA1-96 IPSec test""" def test_ipsec(self): """ipsecmb ESNon ARoff NONE/SHA1-96 IPSec test""" self.run_test() class Test_ipsecmb_ESNon_ARoff_AES_CTR_128_SHA1_96(RunTestIpsecEspAll): """ipsecmb ESNon ARoff AES-CTR-128/SHA1-96 IPSec test""" def test_ipsec(self): """ipsecmb ESNon ARoff AES-CTR-128/SHA1-96 IPSec test""" self.run_test() class Test_ipsecmb_ESNon_ARoff_AES_CTR_192_SHA1_96(RunTestIpsecEspAll): """ipsecmb ESNon ARoff AES-CTR-192/SHA1-96 IPSec test""" def test_ipsec(self): """ipsecmb ESNon ARoff AES-CTR-192/SHA1-96 IPSec test""" self.run_test() class Test_ipsecmb_ESNon_ARoff_AES_CTR_256_SHA1_96(RunTestIpsecEspAll): """ipsecmb ESNon ARoff AES-CTR-256/SHA1-96 IPSec test""" def test_ipsec(self): """ipsecmb ESNon ARoff AES-CTR-256/SHA1-96 IPSec test""" self.run_test() class Test_ipsecmb_ESNoff_ARon_AES_GCM_128_NONE(RunTestIpsecEspAll): """ipsecmb ESNoff ARon AES-GCM-128/NONE IPSec test""" def test_ipsec(self): """ipsecmb ESNoff ARon AES-GCM-128/NONE IPSec test""" self.run_test() class Test_ipsecmb_ESNoff_ARon_AES_GCM_192_NONE(RunTestIpsecEspAll): """ipsecmb ESNoff ARon AES-GCM-192/NONE IPSec test""" def test_ipsec(self): """ipsecmb ESNoff ARon AES-GCM-192/NONE IPSec test""" self.run_test() class Test_ipsecmb_ESNoff_ARon_AES_GCM_256_NONE(RunTestIpsecEspAll): """ipsecmb ESNoff ARon AES-GCM-256/NONE IPSec test""" def test_ipsec(self): """ipsecmb ESNoff ARon AES-GCM-256/NONE IPSec test""" self.run_test() class Test_ipsecmb_ESNoff_ARon_AES_CBC_128_MD5_96(RunTestIpsecEspAll): """ipsecmb ESNoff ARon AES-CBC-128/MD5-96 IPSec test""" def test_ipsec(self): """ipsecmb ESNoff ARon AES-CBC-128/MD5-96 IPSec test""" self.run_test() class Test_ipsecmb_ESNoff_ARon_AES_CBC_192_SHA1_96(RunTestIpsecEspAll): """ipsecmb ESNoff ARon AES-CBC-192/SHA1-96 IPSec test""" def test_ipsec(self): """ipsecmb ESNoff ARon AES-CBC-192/SHA1-96 IPSec test""" self.run_test() class Test_ipsecmb_ESNoff_ARon_AES_CBC_256_SHA1_96(RunTestIpsecEspAll): """ipsecmb ESNoff ARon AES-CBC-256/SHA1-96 IPSec test""" def test_ipsec(self): """ipsecmb ESNoff ARon AES-CBC-256/SHA1-96 IPSec test""" self.run_test() class Test_ipsecmb_ESNoff_ARon_3DES_CBC_SHA1_96(RunTestIpsecEspAll): """ipsecmb ESNoff ARon 3DES-CBC/SHA1-96 IPSec test""" def test_ipsec(self): """ipsecmb ESNoff ARon 3DES-CBC/SHA1-96 IPSec test""" self.run_test() class Test_ipsecmb_ESNoff_ARon_NONE_SHA1_96(RunTestIpsecEspAll): """ipsecmb ESNoff ARon NONE/SHA1-96 IPSec test""" def test_ipsec(self): """ipsecmb ESNoff ARon NONE/SHA1-96 IPSec test""" self.run_test() class Test_ipsecmb_ESNoff_ARon_AES_CTR_128_SHA1_96(RunTestIpsecEspAll): """ipsecmb ESNoff ARon AES-CTR-128/SHA1-96 IPSec test""" def test_ipsec(self): """ipsecmb ESNoff ARon AES-CTR-128/SHA1-96 IPSec test""" self.run_test() class Test_ipsecmb_ESNoff_ARon_AES_CTR_192_SHA1_96(RunTestIpsecEspAll): """ipsecmb ESNoff ARon AES-CTR-192/SHA1-96 IPSec test""" def test_ipsec(self): """ipsecmb ESNoff ARon AES-CTR-192/SHA1-96 IPSec test""" self.run_test() class Test_ipsecmb_ESNoff_ARon_AES_CTR_256_SHA1_96(RunTestIpsecEspAll): """ipsecmb ESNoff ARon AES-CTR-256/SHA1-96 IPSec test""" def test_ipsec(self): """ipsecmb ESNoff ARon AES-CTR-256/SHA1-96 IPSec test""" self.run_test() class Test_ipsecmb_ESNoff_ARoff_AES_GCM_128_NONE(RunTestIpsecEspAll): """ipsecmb ESNoff ARoff AES-GCM-128/NONE IPSec test""" def test_ipsec(self): """ipsecmb ESNoff ARoff AES-GCM-128/NONE IPSec test""" self.run_test() class Test_ipsecmb_ESNoff_ARoff_AES_GCM_192_NONE(RunTestIpsecEspAll): """ipsecmb ESNoff ARoff AES-GCM-192/NONE IPSec test""" def test_ipsec(self): """ipsecmb ESNoff ARoff AES-GCM-192/NONE IPSec test""" self.run_test() class Test_ipsecmb_ESNoff_ARoff_AES_GCM_256_NONE(RunTestIpsecEspAll): """ipsecmb ESNoff ARoff AES-GCM-256/NONE IPSec test""" def test_ipsec(self): """ipsecmb ESNoff ARoff AES-GCM-256/NONE IPSec test""" self.run_test() class Test_ipsecmb_ESNoff_ARoff_AES_CBC_128_MD5_96(RunTestIpsecEspAll): """ipsecmb ESNoff ARoff AES-CBC-128/MD5-96 IPSec test""" def test_ipsec(self): """ipsecmb ESNoff ARoff AES-CBC-128/MD5-96 IPSec test""" self.run_test() class Test_ipsecmb_ESNoff_ARoff_AES_CBC_192_SHA1_96(RunTestIpsecEspAll): """ipsecmb ESNoff ARoff AES-CBC-192/SHA1-96 IPSec test""" def test_ipsec(self): """ipsecmb ESNoff ARoff AES-CBC-192/SHA1-96 IPSec test""" self.run_test() class Test_ipsecmb_ESNoff_ARoff_AES_CBC_256_SHA1_96(RunTestIpsecEspAll): """ipsecmb ESNoff ARoff AES-CBC-256/SHA1-96 IPSec test""" def test_ipsec(self): """ipsecmb ESNoff ARoff AES-CBC-256/SHA1-96 IPSec test""" self.run_test() class Test_ipsecmb_ESNoff_ARoff_3DES_CBC_SHA1_96(RunTestIpsecEspAll): """ipsecmb ESNoff ARoff 3DES-CBC/SHA1-96 IPSec test""" def test_ipsec(self): """ipsecmb ESNoff ARoff 3DES-CBC/SHA1-96 IPSec test""" self.run_test() class Test_ipsecmb_ESNoff_ARoff_NONE_SHA1_96(RunTestIpsecEspAll): """ipsecmb ESNoff ARoff NONE/SHA1-96 IPSec test""" def test_ipsec(self): """ipsecmb ESNoff ARoff NONE/SHA1-96 IPSec test""" self.run_test() class Test_ipsecmb_ESNoff_ARoff_AES_CTR_128_SHA1_96(RunTestIpsecEspAll): """ipsecmb ESNoff ARoff AES-CTR-128/SHA1-96 IPSec test""" def test_ipsec(self): """ipsecmb ESNoff ARoff AES-CTR-128/SHA1-96 IPSec test""" self.run_test() class Test_ipsecmb_ESNoff_ARoff_AES_CTR_192_SHA1_96(RunTestIpsecEspAll): """ipsecmb ESNoff ARoff AES-CTR-192/SHA1-96 IPSec test""" def test_ipsec(self): """ipsecmb ESNoff ARoff AES-CTR-192/SHA1-96 IPSec test""" self.run_test() class Test_ipsecmb_ESNoff_ARoff_AES_CTR_256_SHA1_96(RunTestIpsecEspAll): """ipsecmb ESNoff ARoff AES-CTR-256/SHA1-96 IPSec test""" def test_ipsec(self): """ipsecmb ESNoff ARoff AES-CTR-256/SHA1-96 IPSec test""" self.run_test() class Test_openssl_ESNon_ARon_AES_GCM_128_NONE(RunTestIpsecEspAll): """openssl ESNon ARon AES-GCM-128/NONE IPSec test""" def test_ipsec(self): """openssl ESNon ARon AES-GCM-128/NONE IPSec test""" self.run_test() class Test_openssl_ESNon_ARon_AES_GCM_192_NONE(RunTestIpsecEspAll): """openssl ESNon ARon AES-GCM-192/NONE IPSec test""" def test_ipsec(self): """openssl ESNon ARon AES-GCM-192/NONE IPSec test""" self.run_test() class Test_openssl_ESNon_ARon_AES_GCM_256_NONE(RunTestIpsecEspAll): """openssl ESNon ARon AES-GCM-256/NONE IPSec test""" def test_ipsec(self): """openssl ESNon ARon AES-GCM-256/NONE IPSec test""" self.run_test() class Test_openssl_ESNon_ARon_AES_CBC_128_MD5_96(RunTestIpsecEspAll): """openssl ESNon ARon AES-CBC-128/MD5-96 IPSec test""" def test_ipsec(self): """openssl ESNon ARon AES-CBC-128/MD5-96 IPSec test""" self.run_test() class Test_openssl_ESNon_ARon_AES_CBC_192_SHA1_96(RunTestIpsecEspAll): """openssl ESNon ARon AES-CBC-192/SHA1-96 IPSec test""" def test_ipsec(self): """openssl ESNon ARon AES-CBC-192/SHA1-96 IPSec test""" self.run_test() class Test_openssl_ESNon_ARon_AES_CBC_256_SHA1_96(RunTestIpsecEspAll): """openssl ESNon ARon AES-CBC-256/SHA1-96 IPSec test""" def test_ipsec(self): """openssl ESNon ARon AES-CBC-256/SHA1-96 IPSec test""" self.run_test() class Test_openssl_ESNon_ARon_3DES_CBC_SHA1_96(RunTestIpsecEspAll): """openssl ESNon ARon 3DES-CBC/SHA1-96 IPSec test""" def test_ipsec(self): """openssl ESNon ARon 3DES-CBC/SHA1-96 IPSec test""" self.run_test() class Test_openssl_ESNon_ARon_NONE_SHA1_96(RunTestIpsecEspAll): """openssl ESNon ARon NONE/SHA1-96 IPSec test""" def test_ipsec(self): """openssl ESNon ARon NONE/SHA1-96 IPSec test""" self.run_test() class Test_openssl_ESNon_ARon_AES_CTR_128_SHA1_96(RunTestIpsecEspAll): """openssl ESNon ARon AES-CTR-128/SHA1-96 IPSec test""" def test_ipsec(self): """openssl ESNon ARon AES-CTR-128/SHA1-96 IPSec test""" self.run_test() class Test_openssl_ESNon_ARon_AES_CTR_192_SHA1_96(RunTestIpsecEspAll): """openssl ESNon ARon AES-CTR-192/SHA1-96 IPSec test""" def test_ipsec(self): """openssl ESNon ARon AES-CTR-192/SHA1-96 IPSec test""" self.run_test() class Test_openssl_ESNon_ARon_AES_CTR_256_SHA1_96(RunTestIpsecEspAll): """openssl ESNon ARon AES-CTR-256/SHA1-96 IPSec test""" def test_ipsec(self): """openssl ESNon ARon AES-CTR-256/SHA1-96 IPSec test""" self.run_test() class Test_openssl_ESNon_ARon_AES_NULL_GMAC_128_NONE(RunTestIpsecEspAll): """openssl ESNon ARon AES-NULL-GMAC-128/NONE IPSec test""" def test_ipsec(self): """openssl ESNon ARon AES-NULL-GMAC-128/NONE IPSec test""" self.run_test() class Test_openssl_ESNon_ARon_AES_NULL_GMAC_192_NONE(RunTestIpsecEspAll): """openssl ESNon ARon AES-NULL-GMAC-192/NONE IPSec test""" def test_ipsec(self): """openssl ESNon ARon AES-NULL-GMAC-192/NONE IPSec test""" self.run_test() class Test_openssl_ESNon_ARon_AES_NULL_GMAC_256_NONE(RunTestIpsecEspAll): """openssl ESNon ARon AES-NULL-GMAC-256/NONE IPSec test""" def test_ipsec(self): """openssl ESNon ARon AES-NULL-GMAC-256/NONE IPSec test""" self.run_test() class Test_openssl_ESNon_ARoff_AES_GCM_128_NONE(RunTestIpsecEspAll): """openssl ESNon ARoff AES-GCM-128/NONE IPSec test""" def test_ipsec(self): """openssl ESNon ARoff AES-GCM-128/NONE IPSec test""" self.run_test() class Test_openssl_ESNon_ARoff_AES_GCM_192_NONE(RunTestIpsecEspAll): """openssl ESNon ARoff AES-GCM-192/NONE IPSec test""" def test_ipsec(self): """openssl ESNon ARoff AES-GCM-192/NONE IPSec test""" self.run_test() class Test_openssl_ESNon_ARoff_AES_GCM_256_NONE(RunTestIpsecEspAll): """openssl ESNon ARoff AES-GCM-256/NONE IPSec test""" def test_ipsec(self): """openssl ESNon ARoff AES-GCM-256/NONE IPSec test""" self.run_test() class Test_openssl_ESNon_ARoff_AES_CBC_128_MD5_96(RunTestIpsecEspAll): """openssl ESNon ARoff AES-CBC-128/MD5-96 IPSec test""" def test_ipsec(self): """openssl ESNon ARoff AES-CBC-128/MD5-96 IPSec test""" self.run_test() class Test_openssl_ESNon_ARoff_AES_CBC_192_SHA1_96(RunTestIpsecEspAll): """openssl ESNon ARoff AES-CBC-192/SHA1-96 IPSec test""" def test_ipsec(self): """openssl ESNon ARoff AES-CBC-192/SHA1-96 IPSec test""" self.run_test() class Test_openssl_ESNon_ARoff_AES_CBC_256_SHA1_96(RunTestIpsecEspAll): """openssl ESNon ARoff AES-CBC-256/SHA1-96 IPSec test""" def test_ipsec(self): """openssl ESNon ARoff AES-CBC-256/SHA1-96 IPSec test""" self.run_test() class Test_openssl_ESNon_ARoff_3DES_CBC_SHA1_96(RunTestIpsecEspAll): """openssl ESNon ARoff 3DES-CBC/SHA1-96 IPSec test""" def test_ipsec(self): """openssl ESNon ARoff 3DES-CBC/SHA1-96 IPSec test""" self.run_test() class Test_openssl_ESNon_ARoff_NONE_SHA1_96(RunTestIpsecEspAll): """openssl ESNon ARoff NONE/SHA1-96 IPSec test""" def test_ipsec(self): """openssl ESNon ARoff NONE/SHA1-96 IPSec test""" self.run_test() class Test_openssl_ESNon_ARoff_AES_CTR_128_SHA1_96(RunTestIpsecEspAll): """openssl ESNon ARoff AES-CTR-128/SHA1-96 IPSec test""" def test_ipsec(self): """openssl ESNon ARoff AES-CTR-128/SHA1-96 IPSec test""" self.run_test() class Test_openssl_ESNon_ARoff_AES_CTR_192_SHA1_96(RunTestIpsecEspAll): """openssl ESNon ARoff AES-CTR-192/SHA1-96 IPSec test""" def test_ipsec(self): """openssl ESNon ARoff AES-CTR-192/SHA1-96 IPSec test""" self.run_test() class Test_openssl_ESNon_ARoff_AES_CTR_256_SHA1_96(RunTestIpsecEspAll): """openssl ESNon ARoff AES-CTR-256/SHA1-96 IPSec test""" def test_ipsec(self): """openssl ESNon ARoff AES-CTR-256/SHA1-96 IPSec test""" self.run_test() class Test_openssl_ESNon_ARoff_AES_NULL_GMAC_128_NONE(RunTestIpsecEspAll): """openssl ESNon ARoff AES-NULL-GMAC-128/NONE IPSec test""" def test_ipsec(self): """openssl ESNon ARoff AES-NULL-GMAC-128/NONE IPSec test""" self.run_test() class Test_openssl_ESNon_ARoff_AES_NULL_GMAC_192_NONE(RunTestIpsecEspAll): """openssl ESNon ARoff AES-NULL-GMAC-192/NONE IPSec test""" def test_ipsec(self): """openssl ESNon ARoff AES-NULL-GMAC-192/NONE IPSec test""" self.run_test() class Test_openssl_ESNon_ARoff_AES_NULL_GMAC_256_NONE(RunTestIpsecEspAll): """openssl ESNon ARoff AES-NULL-GMAC-256/NONE IPSec test""" def test_ipsec(self): """openssl ESNon ARoff AES-NULL-GMAC-256/NONE IPSec test""" self.run_test() class Test_openssl_ESNoff_ARon_AES_GCM_128_NONE(RunTestIpsecEspAll): """openssl ESNoff ARon AES-GCM-128/NONE IPSec test""" def test_ipsec(self): """openssl ESNoff ARon AES-GCM-128/NONE IPSec test""" self.run_test() class Test_openssl_ESNoff_ARon_AES_GCM_192_NONE(RunTestIpsecEspAll): """openssl ESNoff ARon AES-GCM-192/NONE IPSec test""" def test_ipsec(self): """openssl ESNoff ARon AES-GCM-192/NONE IPSec test""" self.run_test() class Test_openssl_ESNoff_ARon_AES_GCM_256_NONE(RunTestIpsecEspAll): """openssl ESNoff ARon AES-GCM-256/NONE IPSec test""" def test_ipsec(self): """openssl ESNoff ARon AES-GCM-256/NONE IPSec test""" self.run_test() class Test_openssl_ESNoff_ARon_AES_CBC_128_MD5_96(RunTestIpsecEspAll): """openssl ESNoff ARon AES-CBC-128/MD5-96 IPSec test""" def test_ipsec(self): """openssl ESNoff ARon AES-CBC-128/MD5-96 IPSec test""" self.run_test() class Test_openssl_ESNoff_ARon_AES_CBC_192_SHA1_96(RunTestIpsecEspAll): """openssl ESNoff ARon AES-CBC-192/SHA1-96 IPSec test""" def test_ipsec(self): """openssl ESNoff ARon AES-CBC-192/SHA1-96 IPSec test""" self.run_test() class Test_openssl_ESNoff_ARon_AES_CBC_256_SHA1_96(RunTestIpsecEspAll): """openssl ESNoff ARon AES-CBC-256/SHA1-96 IPSec test""" def test_ipsec(self): """openssl ESNoff ARon AES-CBC-256/SHA1-96 IPSec test""" self.run_test() class Test_openssl_ESNoff_ARon_3DES_CBC_SHA1_96(RunTestIpsecEspAll): """openssl ESNoff ARon 3DES-CBC/SHA1-96 IPSec test""" def test_ipsec(self): """openssl ESNoff ARon 3DES-CBC/SHA1-96 IPSec test""" self.run_test() class Test_openssl_ESNoff_ARon_NONE_SHA1_96(RunTestIpsecEspAll): """openssl ESNoff ARon NONE/SHA1-96 IPSec test""" def test_ipsec(self): """openssl ESNoff ARon NONE/SHA1-96 IPSec test""" self.run_test() class Test_openssl_ESNoff_ARon_AES_CTR_128_SHA1_96(RunTestIpsecEspAll): """openssl ESNoff ARon AES-CTR-128/SHA1-96 IPSec test""" def test_ipsec(self): """openssl ESNoff ARon AES-CTR-128/SHA1-96 IPSec test""" self.run_test() class Test_openssl_ESNoff_ARon_AES_CTR_192_SHA1_96(RunTestIpsecEspAll): """openssl ESNoff ARon AES-CTR-192/SHA1-96 IPSec test""" def test_ipsec(self): """openssl ESNoff ARon AES-CTR-192/SHA1-96 IPSec test""" self.run_test() class Test_openssl_ESNoff_ARon_AES_CTR_256_SHA1_96(RunTestIpsecEspAll): """openssl ESNoff ARon AES-CTR-256/SHA1-96 IPSec test""" def test_ipsec(self): """openssl ESNoff ARon AES-CTR-256/SHA1-96 IPSec test""" self.run_test() class Test_openssl_ESNoff_ARon_AES_NULL_GMAC_128_NONE(RunTestIpsecEspAll): """openssl ESNoff ARon AES-NULL-GMAC-128/NONE IPSec test""" def test_ipsec(self): """openssl ESNoff ARon AES-NULL-GMAC-128/NONE IPSec test""" self.run_test() class Test_openssl_ESNoff_ARon_AES_NULL_GMAC_192_NONE(RunTestIpsecEspAll): """openssl ESNoff ARon AES-NULL-GMAC-192/NONE IPSec test""" def test_ipsec(self): """openssl ESNoff ARon AES-NULL-GMAC-192/NONE IPSec test""" self.run_test() class Test_openssl_ESNoff_ARon_AES_NULL_GMAC_256_NONE(RunTestIpsecEspAll): """openssl ESNoff ARon AES-NULL-GMAC-256/NONE IPSec test""" def test_ipsec(self): """openssl ESNoff ARon AES-NULL-GMAC-256/NONE IPSec test""" self.run_test() class Test_openssl_ESNoff_ARoff_AES_GCM_128_NONE(RunTestIpsecEspAll): """openssl ESNoff ARoff AES-GCM-128/NONE IPSec test""" def test_ipsec(self): """openssl ESNoff ARoff AES-GCM-128/NONE IPSec test""" self.run_test() class Test_openssl_ESNoff_ARoff_AES_GCM_192_NONE(RunTestIpsecEspAll): """openssl ESNoff ARoff AES-GCM-192/NONE IPSec test""" def test_ipsec(self): """openssl ESNoff ARoff AES-GCM-192/NONE IPSec test""" self.run_test() class Test_openssl_ESNoff_ARoff_AES_GCM_256_NONE(RunTestIpsecEspAll): """openssl ESNoff ARoff AES-GCM-256/NONE IPSec test""" def test_ipsec(self): """openssl ESNoff ARoff AES-GCM-256/NONE IPSec test""" self.run_test() class Test_openssl_ESNoff_ARoff_AES_CBC_128_MD5_96(RunTestIpsecEspAll): """openssl ESNoff ARoff AES-CBC-128/MD5-96 IPSec test""" def test_ipsec(self): """openssl ESNoff ARoff AES-CBC-128/MD5-96 IPSec test""" self.run_test() class Test_openssl_ESNoff_ARoff_AES_CBC_192_SHA1_96(RunTestIpsecEspAll): """openssl ESNoff ARoff AES-CBC-192/SHA1-96 IPSec test""" def test_ipsec(self): """openssl ESNoff ARoff AES-CBC-192/SHA1-96 IPSec test""" self.run_test() class Test_openssl_ESNoff_ARoff_AES_CBC_256_SHA1_96(RunTestIpsecEspAll): """openssl ESNoff ARoff AES-CBC-256/SHA1-96 IPSec test""" def test_ipsec(self): """openssl ESNoff ARoff AES-CBC-256/SHA1-96 IPSec test""" self.run_test() class Test_openssl_ESNoff_ARoff_3DES_CBC_SHA1_96(RunTestIpsecEspAll): """openssl ESNoff ARoff 3DES-CBC/SHA1-96 IPSec test""" def test_ipsec(self): """openssl ESNoff ARoff 3DES-CBC/SHA1-96 IPSec test""" self.run_test() class Test_openssl_ESNoff_ARoff_NONE_SHA1_96(RunTestIpsecEspAll): """openssl ESNoff ARoff NONE/SHA1-96 IPSec test""" def test_ipsec(self): """openssl ESNoff ARoff NONE/SHA1-96 IPSec test""" self.run_test() class Test_openssl_ESNoff_ARoff_AES_CTR_128_SHA1_96(RunTestIpsecEspAll): """openssl ESNoff ARoff AES-CTR-128/SHA1-96 IPSec test""" def test_ipsec(self): """openssl ESNoff ARoff AES-CTR-128/SHA1-96 IPSec test""" self.run_test() class Test_openssl_ESNoff_ARoff_AES_CTR_192_SHA1_96(RunTestIpsecEspAll): """openssl ESNoff ARoff AES-CTR-192/SHA1-96 IPSec test""" def test_ipsec(self): """openssl ESNoff ARoff AES-CTR-192/SHA1-96 IPSec test""" self.run_test() class Test_openssl_ESNoff_ARoff_AES_CTR_256_SHA1_96(RunTestIpsecEspAll): """openssl ESNoff ARoff AES-CTR-256/SHA1-96 IPSec test""" def test_ipsec(self): """openssl ESNoff ARoff AES-CTR-256/SHA1-96 IPSec test""" self.run_test() class Test_openssl_ESNoff_ARoff_AES_NULL_GMAC_128_NONE(RunTestIpsecEspAll): """openssl ESNoff ARoff AES-NULL-GMAC-128/NONE IPSec test""" def test_ipsec(self): """openssl ESNoff ARoff AES-NULL-GMAC-128/NONE IPSec test""" self.run_test() class Test_openssl_ESNoff_ARoff_AES_NULL_GMAC_192_NONE(RunTestIpsecEspAll): """openssl ESNoff ARoff AES-NULL-GMAC-192/NONE IPSec test""" def test_ipsec(self): """openssl ESNoff ARoff AES-NULL-GMAC-192/NONE IPSec test""" self.run_test() class Test_openssl_ESNoff_ARoff_AES_NULL_GMAC_256_NONE(RunTestIpsecEspAll): """openssl ESNoff ARoff AES-NULL-GMAC-256/NONE IPSec test""" def test_ipsec(self): """openssl ESNoff ARoff AES-NULL-GMAC-256/NONE IPSec test""" self.run_test() class Test_async_ESNon_ARon_AES_GCM_128_NONE(RunTestIpsecEspAll): """async ESNon ARon AES-GCM-128/NONE IPSec test""" def test_ipsec(self): """async ESNon ARon AES-GCM-128/NONE IPSec test""" self.run_test() class Test_async_ESNon_ARon_AES_GCM_192_NONE(RunTestIpsecEspAll): """async ESNon ARon AES-GCM-192/NONE IPSec test""" def test_ipsec(self): """async ESNon ARon AES-GCM-192/NONE IPSec test""" self.run_test() class Test_async_ESNon_ARon_AES_GCM_256_NONE(RunTestIpsecEspAll): """async ESNon ARon AES-GCM-256/NONE IPSec test""" def test_ipsec(self): """async ESNon ARon AES-GCM-256/NONE IPSec test""" self.run_test() class Test_async_ESNon_ARon_AES_CBC_192_SHA1_96(RunTestIpsecEspAll): """async ESNon ARon AES-CBC-192/SHA1-96 IPSec test""" def test_ipsec(self): """async ESNon ARon AES-CBC-192/SHA1-96 IPSec test""" self.run_test() class Test_async_ESNon_ARon_AES_CBC_256_SHA1_96(RunTestIpsecEspAll): """async ESNon ARon AES-CBC-256/SHA1-96 IPSec test""" def test_ipsec(self): """async ESNon ARon AES-CBC-256/SHA1-96 IPSec test""" self.run_test() class Test_async_ESNon_ARoff_AES_GCM_128_NONE(RunTestIpsecEspAll): """async ESNon ARoff AES-GCM-128/NONE IPSec test""" def test_ipsec(self): """async ESNon ARoff AES-GCM-128/NONE IPSec test""" self.run_test() class Test_async_ESNon_ARoff_AES_GCM_192_NONE(RunTestIpsecEspAll): """async ESNon ARoff AES-GCM-192/NONE IPSec test""" def test_ipsec(self): """async ESNon ARoff AES-GCM-192/NONE IPSec test""" self.run_test() class Test_async_ESNon_ARoff_AES_GCM_256_NONE(RunTestIpsecEspAll): """async ESNon ARoff AES-GCM-256/NONE IPSec test""" def test_ipsec(self): """async ESNon ARoff AES-GCM-256/NONE IPSec test""" self.run_test() class Test_async_ESNon_ARoff_AES_CBC_192_SHA1_96(RunTestIpsecEspAll): """async ESNon ARoff AES-CBC-192/SHA1-96 IPSec test""" def test_ipsec(self): """async ESNon ARoff AES-CBC-192/SHA1-96 IPSec test""" self.run_test() class Test_async_ESNon_ARoff_AES_CBC_256_SHA1_96(RunTestIpsecEspAll): """async ESNon ARoff AES-CBC-256/SHA1-96 IPSec test""" def test_ipsec(self): """async ESNon ARoff AES-CBC-256/SHA1-96 IPSec test""" self.run_test() class Test_async_ESNoff_ARon_AES_GCM_128_NONE(RunTestIpsecEspAll): """async ESNoff ARon AES-GCM-128/NONE IPSec test""" def test_ipsec(self): """async ESNoff ARon AES-GCM-128/NONE IPSec test""" self.run_test() class Test_async_ESNoff_ARon_AES_GCM_192_NONE(RunTestIpsecEspAll): """async ESNoff ARon AES-GCM-192/NONE IPSec test""" def test_ipsec(self): """async ESNoff ARon AES-GCM-192/NONE IPSec test""" self.run_test() class Test_async_ESNoff_ARon_AES_GCM_256_NONE(RunTestIpsecEspAll): """async ESNoff ARon AES-GCM-256/NONE IPSec test""" def test_ipsec(self): """async ESNoff ARon AES-GCM-256/NONE IPSec test""" self.run_test() class Test_async_ESNoff_ARon_AES_CBC_192_SHA1_96(RunTestIpsecEspAll): """async ESNoff ARon AES-CBC-192/SHA1-96 IPSec test""" def test_ipsec(self): """async ESNoff ARon AES-CBC-192/SHA1-96 IPSec test""" self.run_test() class Test_async_ESNoff_ARon_AES_CBC_256_SHA1_96(RunTestIpsecEspAll): """async ESNoff ARon AES-CBC-256/SHA1-96 IPSec test""" def test_ipsec(self): """async ESNoff ARon AES-CBC-256/SHA1-96 IPSec test""" self.run_test() class Test_async_ESNoff_ARoff_AES_GCM_128_NONE(RunTestIpsecEspAll): """async ESNoff ARoff AES-GCM-128/NONE IPSec test""" def test_ipsec(self): """async ESNoff ARoff AES-GCM-128/NONE IPSec test""" self.run_test() class Test_async_ESNoff_ARoff_AES_GCM_192_NONE(RunTestIpsecEspAll): """async ESNoff ARoff AES-GCM-192/NONE IPSec test""" def test_ipsec(self): """async ESNoff ARoff AES-GCM-192/NONE IPSec test""" self.run_test() class Test_async_ESNoff_ARoff_AES_GCM_256_NONE(RunTestIpsecEspAll): """async ESNoff ARoff AES-GCM-256/NONE IPSec test""" def test_ipsec(self): """async ESNoff ARoff AES-GCM-256/NONE IPSec test""" self.run_test() class Test_async_ESNoff_ARoff_AES_CBC_192_SHA1_96(RunTestIpsecEspAll): """async ESNoff ARoff AES-CBC-192/SHA1-96 IPSec test""" def test_ipsec(self): """async ESNoff ARoff AES-CBC-192/SHA1-96 IPSec test""" self.run_test() class Test_async_ESNoff_ARoff_AES_CBC_256_SHA1_96(RunTestIpsecEspAll): """async ESNoff ARoff AES-CBC-256/SHA1-96 IPSec test""" def test_ipsec(self): """async ESNoff ARoff AES-CBC-256/SHA1-96 IPSec test""" self.run_test()