ipsec: huge anti-replay window support
[vpp.git] / test / test_ipsec_esp.py
1 import socket
2 import unittest
3 from scapy.layers.ipsec import ESP
4 from scapy.layers.inet import IP, ICMP, UDP
5 from scapy.layers.inet6 import IPv6
6 from scapy.layers.l2 import Ether
7 from scapy.packet import Raw
8
9 from parameterized import parameterized
10 from framework import VppTestRunner
11 from template_ipsec import (
12     IpsecTra46Tests,
13     IpsecTun46Tests,
14     TemplateIpsec,
15     IpsecTcpTests,
16     IpsecTun4Tests,
17     IpsecTra4Tests,
18     config_tra_params,
19     config_tun_params,
20     IPsecIPv4Params,
21     IPsecIPv6Params,
22     IpsecTra4,
23     IpsecTun4,
24     IpsecTra6,
25     IpsecTun6,
26     IpsecTun6HandoffTests,
27     IpsecTun4HandoffTests,
28     IpsecTra6ExtTests,
29 )
30 from vpp_ipsec import VppIpsecSpd, VppIpsecSpdEntry, VppIpsecSA, VppIpsecSpdItfBinding
31 from vpp_ip_route import VppIpRoute, VppRoutePath
32 from vpp_ip import DpoProto
33 from vpp_papi import VppEnum
34
35 NUM_PKTS = 67
36 engines_supporting_chain_bufs = ["openssl", "async"]
37 engines = ["ia32", "ipsecmb", "openssl"]
38
39
40 class ConfigIpsecESP(TemplateIpsec):
41     encryption_type = ESP
42     tra4_encrypt_node_name = "esp4-encrypt"
43     tra4_decrypt_node_name = ["esp4-decrypt", "esp4-decrypt-post"]
44     tra6_encrypt_node_name = "esp6-encrypt"
45     tra6_decrypt_node_name = ["esp6-decrypt", "esp6-decrypt-post"]
46     tun4_encrypt_node_name = "esp4-encrypt"
47     tun4_decrypt_node_name = ["esp4-decrypt", "esp4-decrypt-post"]
48     tun6_encrypt_node_name = "esp6-encrypt"
49     tun6_decrypt_node_name = ["esp6-decrypt", "esp6-decrypt-post"]
50
51     @classmethod
52     def setUpClass(cls):
53         super(ConfigIpsecESP, cls).setUpClass()
54
55     @classmethod
56     def tearDownClass(cls):
57         super(ConfigIpsecESP, cls).tearDownClass()
58
59     def setUp(self):
60         super(ConfigIpsecESP, self).setUp()
61
62     def tearDown(self):
63         super(ConfigIpsecESP, self).tearDown()
64
65     def config_anti_replay(self, params, anti_replay_window_size=64):
66         saf = VppEnum.vl_api_ipsec_sad_flags_t
67         for p in params:
68             p.flags |= saf.IPSEC_API_SAD_FLAG_USE_ANTI_REPLAY
69             p.anti_replay_window_size = anti_replay_window_size
70
71     def config_network(self, params):
72         self.net_objs = []
73         self.tun_if = self.pg0
74         self.tra_if = self.pg2
75         self.logger.info(self.vapi.ppcli("show int addr"))
76
77         self.tra_spd = VppIpsecSpd(self, self.tra_spd_id)
78         self.tra_spd.add_vpp_config()
79         self.net_objs.append(self.tra_spd)
80         self.tun_spd = VppIpsecSpd(self, self.tun_spd_id)
81         self.tun_spd.add_vpp_config()
82         self.net_objs.append(self.tun_spd)
83
84         b = VppIpsecSpdItfBinding(self, self.tun_spd, self.tun_if)
85         b.add_vpp_config()
86         self.net_objs.append(b)
87
88         b = VppIpsecSpdItfBinding(self, self.tra_spd, self.tra_if)
89         b.add_vpp_config()
90         self.net_objs.append(b)
91
92         for p in params:
93             self.config_esp_tra(p)
94             config_tra_params(p, self.encryption_type)
95         for p in params:
96             self.config_esp_tun(p)
97             config_tun_params(p, self.encryption_type, self.tun_if)
98
99         for p in params:
100             d = DpoProto.DPO_PROTO_IP6 if p.is_ipv6 else DpoProto.DPO_PROTO_IP4
101             r = VppIpRoute(
102                 self,
103                 p.remote_tun_if_host,
104                 p.addr_len,
105                 [
106                     VppRoutePath(
107                         self.tun_if.remote_addr[p.addr_type], 0xFFFFFFFF, proto=d
108                     )
109                 ],
110             )
111             r.add_vpp_config()
112             self.net_objs.append(r)
113
114         self.logger.info(self.vapi.ppcli("show ipsec all"))
115
116     def unconfig_network(self):
117         for o in reversed(self.net_objs):
118             o.remove_vpp_config()
119         self.net_objs = []
120
121     def config_esp_tun(self, params):
122         addr_type = params.addr_type
123         scapy_tun_sa_id = params.scapy_tun_sa_id
124         scapy_tun_spi = params.scapy_tun_spi
125         vpp_tun_sa_id = params.vpp_tun_sa_id
126         vpp_tun_spi = params.vpp_tun_spi
127         auth_algo_vpp_id = params.auth_algo_vpp_id
128         auth_key = params.auth_key
129         crypt_algo_vpp_id = params.crypt_algo_vpp_id
130         crypt_key = params.crypt_key
131         remote_tun_if_host = params.remote_tun_if_host
132         addr_any = params.addr_any
133         addr_bcast = params.addr_bcast
134         e = VppEnum.vl_api_ipsec_spd_action_t
135         flags = params.flags
136         tun_flags = params.tun_flags
137         salt = params.salt
138         anti_replay_window_size = params.anti_replay_window_size
139         objs = []
140
141         params.tun_sa_in = VppIpsecSA(
142             self,
143             scapy_tun_sa_id,
144             scapy_tun_spi,
145             auth_algo_vpp_id,
146             auth_key,
147             crypt_algo_vpp_id,
148             crypt_key,
149             self.vpp_esp_protocol,
150             self.tun_if.remote_addr[addr_type],
151             self.tun_if.local_addr[addr_type],
152             tun_flags=tun_flags,
153             dscp=params.dscp,
154             flags=flags,
155             salt=salt,
156             hop_limit=params.outer_hop_limit,
157             anti_replay_window_size=anti_replay_window_size,
158         )
159         params.tun_sa_out = VppIpsecSA(
160             self,
161             vpp_tun_sa_id,
162             vpp_tun_spi,
163             auth_algo_vpp_id,
164             auth_key,
165             crypt_algo_vpp_id,
166             crypt_key,
167             self.vpp_esp_protocol,
168             self.tun_if.local_addr[addr_type],
169             self.tun_if.remote_addr[addr_type],
170             tun_flags=tun_flags,
171             dscp=params.dscp,
172             flags=flags,
173             salt=salt,
174             hop_limit=params.outer_hop_limit,
175             anti_replay_window_size=anti_replay_window_size,
176         )
177         objs.append(params.tun_sa_in)
178         objs.append(params.tun_sa_out)
179
180         params.spd_policy_in_any = VppIpsecSpdEntry(
181             self,
182             self.tun_spd,
183             scapy_tun_sa_id,
184             addr_any,
185             addr_bcast,
186             addr_any,
187             addr_bcast,
188             socket.IPPROTO_ESP,
189         )
190         params.spd_policy_out_any = VppIpsecSpdEntry(
191             self,
192             self.tun_spd,
193             scapy_tun_sa_id,
194             addr_any,
195             addr_bcast,
196             addr_any,
197             addr_bcast,
198             socket.IPPROTO_ESP,
199             is_outbound=0,
200         )
201         objs.append(params.spd_policy_out_any)
202         objs.append(params.spd_policy_in_any)
203
204         objs.append(
205             VppIpsecSpdEntry(
206                 self,
207                 self.tun_spd,
208                 scapy_tun_sa_id,
209                 remote_tun_if_host,
210                 remote_tun_if_host,
211                 self.pg1.remote_addr[addr_type],
212                 self.pg1.remote_addr[addr_type],
213                 socket.IPPROTO_RAW,
214                 priority=10,
215                 policy=e.IPSEC_API_SPD_ACTION_PROTECT,
216                 is_outbound=0,
217             )
218         )
219         objs.append(
220             VppIpsecSpdEntry(
221                 self,
222                 self.tun_spd,
223                 vpp_tun_sa_id,
224                 self.pg1.remote_addr[addr_type],
225                 self.pg1.remote_addr[addr_type],
226                 remote_tun_if_host,
227                 remote_tun_if_host,
228                 socket.IPPROTO_RAW,
229                 policy=e.IPSEC_API_SPD_ACTION_PROTECT,
230                 priority=10,
231             )
232         )
233         objs.append(
234             VppIpsecSpdEntry(
235                 self,
236                 self.tun_spd,
237                 scapy_tun_sa_id,
238                 remote_tun_if_host,
239                 remote_tun_if_host,
240                 self.pg0.local_addr[addr_type],
241                 self.pg0.local_addr[addr_type],
242                 socket.IPPROTO_RAW,
243                 priority=20,
244                 policy=e.IPSEC_API_SPD_ACTION_PROTECT,
245                 is_outbound=0,
246             )
247         )
248         objs.append(
249             VppIpsecSpdEntry(
250                 self,
251                 self.tun_spd,
252                 vpp_tun_sa_id,
253                 self.pg0.local_addr[addr_type],
254                 self.pg0.local_addr[addr_type],
255                 remote_tun_if_host,
256                 remote_tun_if_host,
257                 socket.IPPROTO_RAW,
258                 policy=e.IPSEC_API_SPD_ACTION_PROTECT,
259                 priority=20,
260             )
261         )
262         for o in objs:
263             o.add_vpp_config()
264         self.net_objs = self.net_objs + objs
265
266     def config_esp_tra(self, params):
267         addr_type = params.addr_type
268         scapy_tra_sa_id = params.scapy_tra_sa_id
269         scapy_tra_spi = params.scapy_tra_spi
270         vpp_tra_sa_id = params.vpp_tra_sa_id
271         vpp_tra_spi = params.vpp_tra_spi
272         auth_algo_vpp_id = params.auth_algo_vpp_id
273         auth_key = params.auth_key
274         crypt_algo_vpp_id = params.crypt_algo_vpp_id
275         crypt_key = params.crypt_key
276         addr_any = params.addr_any
277         addr_bcast = params.addr_bcast
278         e = VppEnum.vl_api_ipsec_spd_action_t
279         flags = params.flags
280         salt = params.salt
281         anti_replay_window_size = params.anti_replay_window_size
282         objs = []
283
284         params.tra_sa_in = VppIpsecSA(
285             self,
286             scapy_tra_sa_id,
287             scapy_tra_spi,
288             auth_algo_vpp_id,
289             auth_key,
290             crypt_algo_vpp_id,
291             crypt_key,
292             self.vpp_esp_protocol,
293             flags=flags,
294             salt=salt,
295             anti_replay_window_size=anti_replay_window_size,
296         )
297         params.tra_sa_out = VppIpsecSA(
298             self,
299             vpp_tra_sa_id,
300             vpp_tra_spi,
301             auth_algo_vpp_id,
302             auth_key,
303             crypt_algo_vpp_id,
304             crypt_key,
305             self.vpp_esp_protocol,
306             flags=flags,
307             salt=salt,
308             anti_replay_window_size=anti_replay_window_size,
309         )
310         objs.append(params.tra_sa_in)
311         objs.append(params.tra_sa_out)
312
313         objs.append(
314             VppIpsecSpdEntry(
315                 self,
316                 self.tra_spd,
317                 vpp_tra_sa_id,
318                 addr_any,
319                 addr_bcast,
320                 addr_any,
321                 addr_bcast,
322                 socket.IPPROTO_ESP,
323             )
324         )
325         objs.append(
326             VppIpsecSpdEntry(
327                 self,
328                 self.tra_spd,
329                 vpp_tra_sa_id,
330                 addr_any,
331                 addr_bcast,
332                 addr_any,
333                 addr_bcast,
334                 socket.IPPROTO_ESP,
335                 is_outbound=0,
336             )
337         )
338         objs.append(
339             VppIpsecSpdEntry(
340                 self,
341                 self.tra_spd,
342                 scapy_tra_sa_id,
343                 self.tra_if.local_addr[addr_type],
344                 self.tra_if.local_addr[addr_type],
345                 self.tra_if.remote_addr[addr_type],
346                 self.tra_if.remote_addr[addr_type],
347                 socket.IPPROTO_RAW,
348                 priority=10,
349                 policy=e.IPSEC_API_SPD_ACTION_PROTECT,
350                 is_outbound=0,
351             )
352         )
353         objs.append(
354             VppIpsecSpdEntry(
355                 self,
356                 self.tra_spd,
357                 vpp_tra_sa_id,
358                 self.tra_if.local_addr[addr_type],
359                 self.tra_if.local_addr[addr_type],
360                 self.tra_if.remote_addr[addr_type],
361                 self.tra_if.remote_addr[addr_type],
362                 socket.IPPROTO_RAW,
363                 policy=e.IPSEC_API_SPD_ACTION_PROTECT,
364                 priority=10,
365             )
366         )
367         for o in objs:
368             o.add_vpp_config()
369         self.net_objs = self.net_objs + objs
370
371
372 class TemplateIpsecEsp(ConfigIpsecESP):
373     """
374     Basic test for ipsec esp sanity - tunnel and transport modes.
375
376     Below 4 cases are covered as part of this test
377
378     #. ipsec esp v4 transport basic test  - IPv4 Transport mode
379         scenario using HMAC-SHA1-96 integrity algo
380
381     #. ipsec esp v4 transport burst test
382         Above test for 257 pkts
383
384     #. ipsec esp 4o4 tunnel basic test    - IPv4 Tunnel mode
385         scenario using HMAC-SHA1-96 integrity algo
386
387     #. ipsec esp 4o4 tunnel burst test
388         Above test for 257 pkts
389
390     TRANSPORT MODE::
391
392          ---   encrypt   ---
393         |pg2| <-------> |VPP|
394          ---   decrypt   ---
395
396     TUNNEL MODE::
397
398          ---   encrypt   ---   plain   ---
399         |pg0| <-------  |VPP| <------ |pg1|
400          ---             ---           ---
401
402          ---   decrypt   ---   plain   ---
403         |pg0| ------->  |VPP| ------> |pg1|
404          ---             ---           ---
405
406     """
407
408     @classmethod
409     def setUpClass(cls):
410         super(TemplateIpsecEsp, cls).setUpClass()
411
412     @classmethod
413     def tearDownClass(cls):
414         super(TemplateIpsecEsp, cls).tearDownClass()
415
416     def setUp(self):
417         super(TemplateIpsecEsp, self).setUp()
418         self.config_anti_replay(self.params.values())
419         self.config_network(self.params.values())
420
421     def tearDown(self):
422         self.unconfig_network()
423         super(TemplateIpsecEsp, self).tearDown()
424
425
426 class TestIpsecEsp1(
427     TemplateIpsecEsp, IpsecTra46Tests, IpsecTun46Tests, IpsecTra6ExtTests
428 ):
429     """Ipsec ESP - TUN & TRA tests"""
430
431     @classmethod
432     def setUpClass(cls):
433         super(TestIpsecEsp1, cls).setUpClass()
434
435     @classmethod
436     def tearDownClass(cls):
437         super(TestIpsecEsp1, cls).tearDownClass()
438
439     def setUp(self):
440         super(TestIpsecEsp1, self).setUp()
441
442     def tearDown(self):
443         super(TestIpsecEsp1, self).tearDown()
444
445     def test_tun_46(self):
446         """ipsec 4o6 tunnel"""
447         # add an SPD entry to direct 2.2.2.2 to the v6 tunnel SA
448         p6 = self.ipv6_params
449         p4 = self.ipv4_params
450
451         p6.remote_tun_if_host4 = "2.2.2.2"
452         e = VppEnum.vl_api_ipsec_spd_action_t
453
454         VppIpsecSpdEntry(
455             self,
456             self.tun_spd,
457             p6.vpp_tun_sa_id,
458             self.pg1.remote_addr[p4.addr_type],
459             self.pg1.remote_addr[p4.addr_type],
460             p6.remote_tun_if_host4,
461             p6.remote_tun_if_host4,
462             socket.IPPROTO_RAW,
463             priority=10,
464             policy=e.IPSEC_API_SPD_ACTION_PROTECT,
465             is_outbound=1,
466         ).add_vpp_config()
467         VppIpRoute(
468             self,
469             p6.remote_tun_if_host4,
470             p4.addr_len,
471             [VppRoutePath(self.tun_if.remote_addr[p4.addr_type], 0xFFFFFFFF)],
472         ).add_vpp_config()
473
474         old_name = self.tun6_encrypt_node_name
475         self.tun6_encrypt_node_name = "esp4-encrypt"
476
477         self.verify_tun_46(p6, count=63)
478         self.tun6_encrypt_node_name = old_name
479
480     def test_tun_64(self):
481         """ipsec 6o4 tunnel"""
482         # add an SPD entry to direct 4444::4 to the v4 tunnel SA
483         p6 = self.ipv6_params
484         p4 = self.ipv4_params
485
486         p4.remote_tun_if_host6 = "4444::4"
487         e = VppEnum.vl_api_ipsec_spd_action_t
488
489         VppIpsecSpdEntry(
490             self,
491             self.tun_spd,
492             p4.vpp_tun_sa_id,
493             self.pg1.remote_addr[p6.addr_type],
494             self.pg1.remote_addr[p6.addr_type],
495             p4.remote_tun_if_host6,
496             p4.remote_tun_if_host6,
497             socket.IPPROTO_RAW,
498             priority=10,
499             policy=e.IPSEC_API_SPD_ACTION_PROTECT,
500             is_outbound=1,
501         ).add_vpp_config()
502         d = DpoProto.DPO_PROTO_IP6
503         VppIpRoute(
504             self,
505             p4.remote_tun_if_host6,
506             p6.addr_len,
507             [VppRoutePath(self.tun_if.remote_addr[p6.addr_type], 0xFFFFFFFF, proto=d)],
508         ).add_vpp_config()
509
510         old_name = self.tun4_encrypt_node_name
511         self.tun4_encrypt_node_name = "esp6-encrypt"
512         self.verify_tun_64(p4, count=63)
513         self.tun4_encrypt_node_name = old_name
514
515
516 class TestIpsecEspTun(TemplateIpsecEsp, IpsecTun46Tests):
517     """Ipsec ESP - TUN encap tests"""
518
519     def setUp(self):
520         self.ipv4_params = IPsecIPv4Params()
521         self.ipv6_params = IPsecIPv6Params()
522
523         c = (
524             VppEnum.vl_api_tunnel_encap_decap_flags_t.TUNNEL_API_ENCAP_DECAP_FLAG_ENCAP_COPY_DSCP
525         )
526         c1 = c | (
527             VppEnum.vl_api_tunnel_encap_decap_flags_t.TUNNEL_API_ENCAP_DECAP_FLAG_ENCAP_COPY_ECN
528         )
529
530         self.ipv4_params.tun_flags = c
531         self.ipv6_params.tun_flags = c1
532
533         super(TestIpsecEspTun, self).setUp()
534
535     def gen_pkts(self, sw_intf, src, dst, count=1, payload_size=54):
536         # set the DSCP + ECN - flags are set to copy only DSCP
537         return [
538             Ether(src=sw_intf.remote_mac, dst=sw_intf.local_mac)
539             / IP(src=src, dst=dst, tos=5)
540             / UDP(sport=4444, dport=4444)
541             / Raw(b"X" * payload_size)
542             for i in range(count)
543         ]
544
545     def gen_pkts6(self, p, sw_intf, src, dst, count=1, payload_size=54):
546         # set the DSCP + ECN - flags are set to copy both
547         return [
548             Ether(src=sw_intf.remote_mac, dst=sw_intf.local_mac)
549             / IPv6(src=src, dst=dst, tc=5)
550             / UDP(sport=4444, dport=4444)
551             / Raw(b"X" * payload_size)
552             for i in range(count)
553         ]
554
555     def verify_encrypted(self, p, sa, rxs):
556         # just check that only the DSCP is copied
557         for rx in rxs:
558             self.assertEqual(rx[IP].tos, 4)
559
560     def verify_encrypted6(self, p, sa, rxs):
561         # just check that the DSCP & ECN are copied
562         for rx in rxs:
563             self.assertEqual(rx[IPv6].tc, 5)
564
565
566 class TestIpsecEspTun2(TemplateIpsecEsp, IpsecTun46Tests):
567     """Ipsec ESP - TUN DSCP tests"""
568
569     def setUp(self):
570         self.ipv4_params = IPsecIPv4Params()
571         self.ipv6_params = IPsecIPv6Params()
572
573         self.ipv4_params.dscp = VppEnum.vl_api_ip_dscp_t.IP_API_DSCP_EF
574         self.ipv6_params.dscp = VppEnum.vl_api_ip_dscp_t.IP_API_DSCP_AF11
575
576         super(TestIpsecEspTun2, self).setUp()
577
578     def gen_pkts(self, sw_intf, src, dst, count=1, payload_size=54):
579         return [
580             Ether(src=sw_intf.remote_mac, dst=sw_intf.local_mac)
581             / IP(src=src, dst=dst)
582             / UDP(sport=4444, dport=4444)
583             / Raw(b"X" * payload_size)
584             for i in range(count)
585         ]
586
587     def gen_pkts6(self, p, sw_intf, src, dst, count=1, payload_size=54):
588         return [
589             Ether(src=sw_intf.remote_mac, dst=sw_intf.local_mac)
590             / IPv6(src=src, dst=dst)
591             / UDP(sport=4444, dport=4444)
592             / Raw(b"X" * payload_size)
593             for i in range(count)
594         ]
595
596     def verify_encrypted(self, p, sa, rxs):
597         # just check that only the DSCP is set
598         for rx in rxs:
599             self.assertEqual(rx[IP].tos, VppEnum.vl_api_ip_dscp_t.IP_API_DSCP_EF << 2)
600
601     def verify_encrypted6(self, p, sa, rxs):
602         # just check that the DSCP is set
603         for rx in rxs:
604             self.assertEqual(
605                 rx[IPv6].tc, VppEnum.vl_api_ip_dscp_t.IP_API_DSCP_AF11 << 2
606             )
607
608
609 class TestIpsecEsp2(TemplateIpsecEsp, IpsecTcpTests):
610     """Ipsec ESP - TCP tests"""
611
612     pass
613
614
615 class TestIpsecEspAsync(TemplateIpsecEsp):
616     """Ipsec ESP - Aysnc tests"""
617
618     vpp_worker_count = 2
619
620     def setUp(self):
621         super(TestIpsecEspAsync, self).setUp()
622
623         self.p_sync = IPsecIPv4Params()
624
625         self.p_sync.crypt_algo_vpp_id = (
626             VppEnum.vl_api_ipsec_crypto_alg_t.IPSEC_API_CRYPTO_ALG_AES_CBC_256
627         )
628         self.p_sync.crypt_algo = "AES-CBC"  # scapy name
629         self.p_sync.crypt_key = b"JPjyOWBeVEQiMe7hJPjyOWBeVEQiMe7h"
630
631         self.p_sync.scapy_tun_sa_id += 0xF0000
632         self.p_sync.scapy_tun_spi += 0xF0000
633         self.p_sync.vpp_tun_sa_id += 0xF0000
634         self.p_sync.vpp_tun_spi += 0xF0000
635         self.p_sync.remote_tun_if_host = "2.2.2.2"
636         e = VppEnum.vl_api_ipsec_spd_action_t
637
638         self.p_sync.sa = VppIpsecSA(
639             self,
640             self.p_sync.vpp_tun_sa_id,
641             self.p_sync.vpp_tun_spi,
642             self.p_sync.auth_algo_vpp_id,
643             self.p_sync.auth_key,
644             self.p_sync.crypt_algo_vpp_id,
645             self.p_sync.crypt_key,
646             self.vpp_esp_protocol,
647             self.tun_if.local_addr[self.p_sync.addr_type],
648             self.tun_if.remote_addr[self.p_sync.addr_type],
649         ).add_vpp_config()
650         self.p_sync.spd = VppIpsecSpdEntry(
651             self,
652             self.tun_spd,
653             self.p_sync.vpp_tun_sa_id,
654             self.pg1.remote_addr[self.p_sync.addr_type],
655             self.pg1.remote_addr[self.p_sync.addr_type],
656             self.p_sync.remote_tun_if_host,
657             self.p_sync.remote_tun_if_host,
658             socket.IPPROTO_RAW,
659             priority=1,
660             policy=e.IPSEC_API_SPD_ACTION_PROTECT,
661             is_outbound=1,
662         ).add_vpp_config()
663         VppIpRoute(
664             self,
665             self.p_sync.remote_tun_if_host,
666             self.p_sync.addr_len,
667             [VppRoutePath(self.tun_if.remote_addr[self.p_sync.addr_type], 0xFFFFFFFF)],
668         ).add_vpp_config()
669         config_tun_params(self.p_sync, self.encryption_type, self.tun_if)
670
671         self.p_async = IPsecIPv4Params()
672
673         self.p_async.crypt_algo_vpp_id = (
674             VppEnum.vl_api_ipsec_crypto_alg_t.IPSEC_API_CRYPTO_ALG_AES_GCM_256
675         )
676         self.p_async.auth_algo_vpp_id = (
677             VppEnum.vl_api_ipsec_integ_alg_t.IPSEC_API_INTEG_ALG_NONE
678         )
679         self.p_async.crypt_algo = "AES-GCM"  # scapy name
680         self.p_async.crypt_key = b"JPjyOWBeVEQiMe7hJPjyOWBeVEQiMe7h"
681         self.p_async.auth_algo = "NULL"
682
683         self.p_async.scapy_tun_sa_id += 0xE0000
684         self.p_async.scapy_tun_spi += 0xE0000
685         self.p_async.vpp_tun_sa_id += 0xE0000
686         self.p_async.vpp_tun_spi += 0xE0000
687         self.p_async.remote_tun_if_host = "2.2.2.3"
688
689         iflags = VppEnum.vl_api_ipsec_sad_flags_t
690         self.p_async.flags = (
691             iflags.IPSEC_API_SAD_FLAG_USE_ESN
692             | iflags.IPSEC_API_SAD_FLAG_USE_ANTI_REPLAY
693             | iflags.IPSEC_API_SAD_FLAG_ASYNC
694         )
695
696         self.p_async.sa = VppIpsecSA(
697             self,
698             self.p_async.vpp_tun_sa_id,
699             self.p_async.vpp_tun_spi,
700             self.p_async.auth_algo_vpp_id,
701             self.p_async.auth_key,
702             self.p_async.crypt_algo_vpp_id,
703             self.p_async.crypt_key,
704             self.vpp_esp_protocol,
705             self.tun_if.local_addr[self.p_async.addr_type],
706             self.tun_if.remote_addr[self.p_async.addr_type],
707             flags=self.p_async.flags,
708         ).add_vpp_config()
709         self.p_async.spd = VppIpsecSpdEntry(
710             self,
711             self.tun_spd,
712             self.p_async.vpp_tun_sa_id,
713             self.pg1.remote_addr[self.p_async.addr_type],
714             self.pg1.remote_addr[self.p_async.addr_type],
715             self.p_async.remote_tun_if_host,
716             self.p_async.remote_tun_if_host,
717             socket.IPPROTO_RAW,
718             priority=2,
719             policy=e.IPSEC_API_SPD_ACTION_PROTECT,
720             is_outbound=1,
721         ).add_vpp_config()
722         VppIpRoute(
723             self,
724             self.p_async.remote_tun_if_host,
725             self.p_async.addr_len,
726             [VppRoutePath(self.tun_if.remote_addr[self.p_async.addr_type], 0xFFFFFFFF)],
727         ).add_vpp_config()
728         config_tun_params(self.p_async, self.encryption_type, self.tun_if)
729
730     def test_dual_stream(self):
731         """Alternating SAs"""
732         p = self.params[self.p_sync.addr_type]
733         self.vapi.ipsec_set_async_mode(async_enable=True)
734
735         pkts = [
736             (
737                 Ether(src=self.pg1.remote_mac, dst=self.pg1.local_mac)
738                 / IP(src=self.pg1.remote_ip4, dst=self.p_sync.remote_tun_if_host)
739                 / UDP(sport=4444, dport=4444)
740                 / Raw(b"0x0" * 200)
741             ),
742             (
743                 Ether(src=self.pg1.remote_mac, dst=self.pg1.local_mac)
744                 / IP(src=self.pg1.remote_ip4, dst=p.remote_tun_if_host)
745                 / UDP(sport=4444, dport=4444)
746                 / Raw(b"0x0" * 200)
747             ),
748         ]
749         pkts *= 1023
750
751         rxs = self.send_and_expect(self.pg1, pkts, self.pg0)
752
753         self.assertEqual(len(rxs), len(pkts))
754
755         for rx in rxs:
756             if rx[ESP].spi == p.vpp_tun_spi:
757                 decrypted = p.vpp_tun_sa.decrypt(rx[IP])
758             elif rx[ESP].spi == self.p_sync.vpp_tun_spi:
759                 decrypted = self.p_sync.vpp_tun_sa.decrypt(rx[IP])
760             else:
761                 rx.show()
762                 self.assertTrue(False)
763
764         self.p_sync.spd.remove_vpp_config()
765         self.p_sync.sa.remove_vpp_config()
766         self.p_async.spd.remove_vpp_config()
767         self.p_async.sa.remove_vpp_config()
768         self.vapi.ipsec_set_async_mode(async_enable=False)
769
770     def test_sync_async_noop_stream(self):
771         """Alternating SAs sync/async/noop"""
772         p = self.params[self.p_sync.addr_type]
773
774         # first pin the default/noop SA to worker 0
775         pkts = [
776             (
777                 Ether(src=self.pg1.remote_mac, dst=self.pg1.local_mac)
778                 / IP(src=self.pg1.remote_ip4, dst=p.remote_tun_if_host)
779                 / UDP(sport=4444, dport=4444)
780                 / Raw(b"0x0" * 200)
781             )
782         ]
783         rxs = self.send_and_expect(self.pg1, pkts, self.pg0, worker=0)
784
785         self.logger.info(self.vapi.cli("sh ipsec sa"))
786         self.logger.info(self.vapi.cli("sh crypto async status"))
787
788         # then use all the other SAs on worker 1.
789         # some will handoff, other take the sync and async paths
790         pkts = [
791             (
792                 Ether(src=self.pg1.remote_mac, dst=self.pg1.local_mac)
793                 / IP(src=self.pg1.remote_ip4, dst=self.p_sync.remote_tun_if_host)
794                 / UDP(sport=4444, dport=4444)
795                 / Raw(b"0x0" * 200)
796             ),
797             (
798                 Ether(src=self.pg1.remote_mac, dst=self.pg1.local_mac)
799                 / IP(src=self.pg1.remote_ip4, dst=p.remote_tun_if_host)
800                 / UDP(sport=4444, dport=4444)
801                 / Raw(b"0x0" * 200)
802             ),
803             (
804                 Ether(src=self.pg1.remote_mac, dst=self.pg1.local_mac)
805                 / IP(src=self.pg1.remote_ip4, dst=self.p_async.remote_tun_if_host)
806                 / UDP(sport=4444, dport=4444)
807                 / Raw(b"0x0" * 200)
808             ),
809         ]
810         pkts *= 1023
811
812         rxs = self.send_and_expect(self.pg1, pkts, self.pg0, worker=1)
813
814         self.assertEqual(len(rxs), len(pkts))
815
816         for rx in rxs:
817             if rx[ESP].spi == p.vpp_tun_spi:
818                 decrypted = p.vpp_tun_sa.decrypt(rx[IP])
819             elif rx[ESP].spi == self.p_sync.vpp_tun_spi:
820                 decrypted = self.p_sync.vpp_tun_sa.decrypt(rx[IP])
821             elif rx[ESP].spi == self.p_async.vpp_tun_spi:
822                 decrypted = self.p_async.vpp_tun_sa.decrypt(rx[IP])
823             else:
824                 rx.show()
825                 self.assertTrue(False)
826
827         self.p_sync.spd.remove_vpp_config()
828         self.p_sync.sa.remove_vpp_config()
829         self.p_async.spd.remove_vpp_config()
830         self.p_async.sa.remove_vpp_config()
831
832
833 class TestIpsecEspHandoff(
834     TemplateIpsecEsp, IpsecTun6HandoffTests, IpsecTun4HandoffTests
835 ):
836     """Ipsec ESP - handoff tests"""
837
838     pass
839
840
841 class TemplateIpsecEspUdp(ConfigIpsecESP):
842     """
843     UDP encapped ESP
844     """
845
846     @classmethod
847     def setUpClass(cls):
848         super(TemplateIpsecEspUdp, cls).setUpClass()
849
850     @classmethod
851     def tearDownClass(cls):
852         super(TemplateIpsecEspUdp, cls).tearDownClass()
853
854     def setUp(self):
855         super(TemplateIpsecEspUdp, self).setUp()
856         self.net_objs = []
857         self.tun_if = self.pg0
858         self.tra_if = self.pg2
859         self.logger.info(self.vapi.ppcli("show int addr"))
860
861         p = self.ipv4_params
862         p.flags = (
863             VppEnum.vl_api_ipsec_sad_flags_t.IPSEC_API_SAD_FLAG_UDP_ENCAP
864             | VppEnum.vl_api_ipsec_sad_flags_t.IPSEC_API_SAD_FLAG_USE_ANTI_REPLAY
865         )
866         p.nat_header = UDP(sport=5454, dport=4500)
867
868         self.tra_spd = VppIpsecSpd(self, self.tra_spd_id)
869         self.tra_spd.add_vpp_config()
870         VppIpsecSpdItfBinding(self, self.tra_spd, self.tra_if).add_vpp_config()
871
872         self.config_esp_tra(p)
873         config_tra_params(p, self.encryption_type)
874
875         self.tun_spd = VppIpsecSpd(self, self.tun_spd_id)
876         self.tun_spd.add_vpp_config()
877         VppIpsecSpdItfBinding(self, self.tun_spd, self.tun_if).add_vpp_config()
878
879         self.config_esp_tun(p)
880         self.logger.info(self.vapi.ppcli("show ipsec all"))
881
882         d = DpoProto.DPO_PROTO_IP4
883         VppIpRoute(
884             self,
885             p.remote_tun_if_host,
886             p.addr_len,
887             [VppRoutePath(self.tun_if.remote_addr[p.addr_type], 0xFFFFFFFF, proto=d)],
888         ).add_vpp_config()
889
890     def tearDown(self):
891         super(TemplateIpsecEspUdp, self).tearDown()
892
893     def show_commands_at_teardown(self):
894         self.logger.info(self.vapi.cli("show hardware"))
895
896
897 class TestIpsecEspUdp(TemplateIpsecEspUdp, IpsecTra4Tests):
898     """Ipsec NAT-T ESP UDP tests"""
899
900     pass
901
902
903 class MyParameters:
904     def __init__(self):
905         saf = VppEnum.vl_api_ipsec_sad_flags_t
906         flag_esn = saf.IPSEC_API_SAD_FLAG_USE_ESN
907         flag_ar = saf.IPSEC_API_SAD_FLAG_USE_ANTI_REPLAY
908         self.flags = [0, flag_esn, flag_ar]
909         # foreach crypto algorithm
910         self.algos = {
911             "AES-GCM-128/NONE": {
912                 "vpp-crypto": (
913                     VppEnum.vl_api_ipsec_crypto_alg_t.IPSEC_API_CRYPTO_ALG_AES_GCM_128
914                 ),
915                 "vpp-integ": (
916                     VppEnum.vl_api_ipsec_integ_alg_t.IPSEC_API_INTEG_ALG_NONE
917                 ),
918                 "scapy-crypto": "AES-GCM",
919                 "scapy-integ": "NULL",
920                 "key": b"JPjyOWBeVEQiMe7h",
921                 "salt": 0,
922             },
923             "AES-GCM-192/NONE": {
924                 "vpp-crypto": (
925                     VppEnum.vl_api_ipsec_crypto_alg_t.IPSEC_API_CRYPTO_ALG_AES_GCM_192
926                 ),
927                 "vpp-integ": (
928                     VppEnum.vl_api_ipsec_integ_alg_t.IPSEC_API_INTEG_ALG_NONE
929                 ),
930                 "scapy-crypto": "AES-GCM",
931                 "scapy-integ": "NULL",
932                 "key": b"JPjyOWBeVEQiMe7h01234567",
933                 "salt": 1010,
934             },
935             "AES-GCM-256/NONE": {
936                 "vpp-crypto": (
937                     VppEnum.vl_api_ipsec_crypto_alg_t.IPSEC_API_CRYPTO_ALG_AES_GCM_256
938                 ),
939                 "vpp-integ": (
940                     VppEnum.vl_api_ipsec_integ_alg_t.IPSEC_API_INTEG_ALG_NONE
941                 ),
942                 "scapy-crypto": "AES-GCM",
943                 "scapy-integ": "NULL",
944                 "key": b"JPjyOWBeVEQiMe7h0123456787654321",
945                 "salt": 2020,
946             },
947             "AES-CBC-128/MD5-96": {
948                 "vpp-crypto": (
949                     VppEnum.vl_api_ipsec_crypto_alg_t.IPSEC_API_CRYPTO_ALG_AES_CBC_128
950                 ),
951                 "vpp-integ": (
952                     VppEnum.vl_api_ipsec_integ_alg_t.IPSEC_API_INTEG_ALG_MD5_96
953                 ),
954                 "scapy-crypto": "AES-CBC",
955                 "scapy-integ": "HMAC-MD5-96",
956                 "salt": 0,
957                 "key": b"JPjyOWBeVEQiMe7h",
958             },
959             "AES-CBC-192/SHA1-96": {
960                 "vpp-crypto": (
961                     VppEnum.vl_api_ipsec_crypto_alg_t.IPSEC_API_CRYPTO_ALG_AES_CBC_192
962                 ),
963                 "vpp-integ": (
964                     VppEnum.vl_api_ipsec_integ_alg_t.IPSEC_API_INTEG_ALG_SHA1_96
965                 ),
966                 "scapy-crypto": "AES-CBC",
967                 "scapy-integ": "HMAC-SHA1-96",
968                 "salt": 0,
969                 "key": b"JPjyOWBeVEQiMe7hJPjyOWBe",
970             },
971             "AES-CBC-256/SHA1-96": {
972                 "vpp-crypto": (
973                     VppEnum.vl_api_ipsec_crypto_alg_t.IPSEC_API_CRYPTO_ALG_AES_CBC_256
974                 ),
975                 "vpp-integ": (
976                     VppEnum.vl_api_ipsec_integ_alg_t.IPSEC_API_INTEG_ALG_SHA1_96
977                 ),
978                 "scapy-crypto": "AES-CBC",
979                 "scapy-integ": "HMAC-SHA1-96",
980                 "salt": 0,
981                 "key": b"JPjyOWBeVEQiMe7hJPjyOWBeVEQiMe7h",
982             },
983             "3DES-CBC/SHA1-96": {
984                 "vpp-crypto": (
985                     VppEnum.vl_api_ipsec_crypto_alg_t.IPSEC_API_CRYPTO_ALG_3DES_CBC
986                 ),
987                 "vpp-integ": (
988                     VppEnum.vl_api_ipsec_integ_alg_t.IPSEC_API_INTEG_ALG_SHA1_96
989                 ),
990                 "scapy-crypto": "3DES",
991                 "scapy-integ": "HMAC-SHA1-96",
992                 "salt": 0,
993                 "key": b"JPjyOWBeVEQiMe7h00112233",
994             },
995             "NONE/SHA1-96": {
996                 "vpp-crypto": (
997                     VppEnum.vl_api_ipsec_crypto_alg_t.IPSEC_API_CRYPTO_ALG_NONE
998                 ),
999                 "vpp-integ": (
1000                     VppEnum.vl_api_ipsec_integ_alg_t.IPSEC_API_INTEG_ALG_SHA1_96
1001                 ),
1002                 "scapy-crypto": "NULL",
1003                 "scapy-integ": "HMAC-SHA1-96",
1004                 "salt": 0,
1005                 "key": b"JPjyOWBeVEQiMe7h00112233",
1006             },
1007             "AES-CTR-128/SHA1-96": {
1008                 "vpp-crypto": (
1009                     VppEnum.vl_api_ipsec_crypto_alg_t.IPSEC_API_CRYPTO_ALG_AES_CTR_128
1010                 ),
1011                 "vpp-integ": (
1012                     VppEnum.vl_api_ipsec_integ_alg_t.IPSEC_API_INTEG_ALG_SHA1_96
1013                 ),
1014                 "scapy-crypto": "AES-CTR",
1015                 "scapy-integ": "HMAC-SHA1-96",
1016                 "salt": 0,
1017                 "key": b"JPjyOWBeVEQiMe7h",
1018             },
1019             "AES-CTR-192/SHA1-96": {
1020                 "vpp-crypto": (
1021                     VppEnum.vl_api_ipsec_crypto_alg_t.IPSEC_API_CRYPTO_ALG_AES_CTR_192
1022                 ),
1023                 "vpp-integ": (
1024                     VppEnum.vl_api_ipsec_integ_alg_t.IPSEC_API_INTEG_ALG_SHA1_96
1025                 ),
1026                 "scapy-crypto": "AES-CTR",
1027                 "scapy-integ": "HMAC-SHA1-96",
1028                 "salt": 1010,
1029                 "key": b"JPjyOWBeVEQiMe7hJPjyOWBe",
1030             },
1031             "AES-CTR-256/SHA1-96": {
1032                 "vpp-crypto": (
1033                     VppEnum.vl_api_ipsec_crypto_alg_t.IPSEC_API_CRYPTO_ALG_AES_CTR_256
1034                 ),
1035                 "vpp-integ": (
1036                     VppEnum.vl_api_ipsec_integ_alg_t.IPSEC_API_INTEG_ALG_SHA1_96
1037                 ),
1038                 "scapy-crypto": "AES-CTR",
1039                 "scapy-integ": "HMAC-SHA1-96",
1040                 "salt": 2020,
1041                 "key": b"JPjyOWBeVEQiMe7hJPjyOWBeVEQiMe7h",
1042             },
1043             "AES-NULL-GMAC-128/NONE": {
1044                 "vpp-crypto": (
1045                     VppEnum.vl_api_ipsec_crypto_alg_t.IPSEC_API_CRYPTO_ALG_AES_NULL_GMAC_128
1046                 ),
1047                 "vpp-integ": (
1048                     VppEnum.vl_api_ipsec_integ_alg_t.IPSEC_API_INTEG_ALG_NONE
1049                 ),
1050                 "scapy-crypto": "AES-NULL-GMAC",
1051                 "scapy-integ": "NULL",
1052                 "key": b"JPjyOWBeVEQiMe7h",
1053                 "salt": 0,
1054             },
1055             "AES-NULL-GMAC-192/NONE": {
1056                 "vpp-crypto": (
1057                     VppEnum.vl_api_ipsec_crypto_alg_t.IPSEC_API_CRYPTO_ALG_AES_NULL_GMAC_192
1058                 ),
1059                 "vpp-integ": (
1060                     VppEnum.vl_api_ipsec_integ_alg_t.IPSEC_API_INTEG_ALG_NONE
1061                 ),
1062                 "scapy-crypto": "AES-NULL-GMAC",
1063                 "scapy-integ": "NULL",
1064                 "key": b"JPjyOWBeVEQiMe7h01234567",
1065                 "salt": 1010,
1066             },
1067             "AES-NULL-GMAC-256/NONE": {
1068                 "vpp-crypto": (
1069                     VppEnum.vl_api_ipsec_crypto_alg_t.IPSEC_API_CRYPTO_ALG_AES_NULL_GMAC_256
1070                 ),
1071                 "vpp-integ": (
1072                     VppEnum.vl_api_ipsec_integ_alg_t.IPSEC_API_INTEG_ALG_NONE
1073                 ),
1074                 "scapy-crypto": "AES-NULL-GMAC",
1075                 "scapy-integ": "NULL",
1076                 "key": b"JPjyOWBeVEQiMe7h0123456787654321",
1077                 "salt": 2020,
1078             },
1079         }
1080
1081
1082 class RunTestIpsecEspAll(ConfigIpsecESP, IpsecTra4, IpsecTra6, IpsecTun4, IpsecTun6):
1083     """Ipsec ESP all Algos"""
1084
1085     @classmethod
1086     def setUpConstants(cls):
1087         test_args = str.split(cls.__doc__, " ")
1088         engine = test_args[0]
1089         if engine == "async":
1090             cls.vpp_worker_count = 2
1091         super(RunTestIpsecEspAll, cls).setUpConstants()
1092
1093     def setUp(self):
1094         super(RunTestIpsecEspAll, self).setUp()
1095         test_args = str.split(self.__doc__, " ")
1096
1097         params = MyParameters()
1098         self.engine = test_args[0]
1099         self.flag = params.flags[0]
1100         if test_args[1] == "ESNon":
1101             self.flag |= params.flags[1]
1102         if test_args[2] == "ARon":
1103             self.flag |= params.flags[2]
1104
1105         self.algo = params.algos[test_args[3]]
1106         self.async_mode = False
1107         if self.engine == "async":
1108             self.async_mode = True
1109
1110     def tearDown(self):
1111         super(RunTestIpsecEspAll, self).tearDown()
1112
1113     def run_test(self):
1114         self.run_a_test(self.engine, self.flag, self.algo)
1115
1116     def run_a_test(self, engine, flag, algo, payload_size=None):
1117         if self.async_mode:
1118             self.vapi.cli("set ipsec async mode on")
1119         else:
1120             self.vapi.cli("set crypto handler all %s" % engine)
1121
1122         self.logger.info(self.vapi.cli("show crypto async status"))
1123         self.ipv4_params = IPsecIPv4Params()
1124         self.ipv6_params = IPsecIPv6Params()
1125
1126         self.params = {
1127             self.ipv4_params.addr_type: self.ipv4_params,
1128             self.ipv6_params.addr_type: self.ipv6_params,
1129         }
1130
1131         for _, p in self.params.items():
1132             p.auth_algo_vpp_id = algo["vpp-integ"]
1133             p.crypt_algo_vpp_id = algo["vpp-crypto"]
1134             p.crypt_algo = algo["scapy-crypto"]
1135             p.auth_algo = algo["scapy-integ"]
1136             p.crypt_key = algo["key"]
1137             p.salt = algo["salt"]
1138             p.flags = flag
1139             p.outer_flow_label = 243224
1140             p.async_mode = self.async_mode
1141
1142         self.reporter.send_keep_alive(self)
1143
1144         #
1145         # configure the SPDs. SAs, etc
1146         #
1147         self.config_network(self.params.values())
1148
1149         #
1150         # run some traffic.
1151         #  An exhautsive 4o6, 6o4 is not necessary
1152         #  for each algo
1153         #
1154         self.verify_tra_basic6(count=NUM_PKTS)
1155         self.verify_tra_basic4(count=NUM_PKTS)
1156         self.verify_tun_66(self.params[socket.AF_INET6], count=NUM_PKTS)
1157         #
1158         # Use an odd-byte payload size to check for correct padding.
1159         #
1160         # 49 + 2 == 51 which should pad +1 to 52 for 4 byte alignment, +5
1161         # to 56 for 8 byte alignment, and +13 to 64 for 64 byte alignment.
1162         # This should catch bugs where the code is incorrectly over-padding
1163         # for algorithms that don't require it
1164         psz = 49 - len(IP() / ICMP()) if payload_size is None else payload_size
1165         self.verify_tun_44(
1166             self.params[socket.AF_INET], count=NUM_PKTS, payload_size=psz
1167         )
1168
1169         LARGE_PKT_SZ = [
1170             1970,  # results in 2 chained buffers entering decrypt node
1171             # but leaving as simple buffer due to ICV removal (tra4)
1172             2004,  # footer+ICV will be added to 2nd buffer (tun4)
1173             4010,  # ICV ends up splitted across 2 buffers in esp_decrypt
1174             # for transport4; transport6 takes normal path
1175             4020,  # same as above but tra4 and tra6 are switched
1176         ]
1177         if self.engine in engines_supporting_chain_bufs:
1178             for sz in LARGE_PKT_SZ:
1179                 self.verify_tra_basic4(count=NUM_PKTS, payload_size=sz)
1180                 self.verify_tra_basic6(count=NUM_PKTS, payload_size=sz)
1181                 self.verify_tun_66(
1182                     self.params[socket.AF_INET6], count=NUM_PKTS, payload_size=sz
1183                 )
1184                 self.verify_tun_44(
1185                     self.params[socket.AF_INET], count=NUM_PKTS, payload_size=sz
1186                 )
1187
1188         #
1189         # reconfigure the network and SA to run the
1190         # anti replay tests
1191         #
1192         saf = VppEnum.vl_api_ipsec_sad_flags_t
1193         if flag & saf.IPSEC_API_SAD_FLAG_USE_ANTI_REPLAY:
1194             for anti_replay_window_size in (
1195                 64,
1196                 131072,
1197             ):
1198                 self.unconfig_network()
1199                 self.config_anti_replay(self.params.values(), anti_replay_window_size)
1200                 self.config_network(self.params.values())
1201                 self.verify_tra_anti_replay()
1202                 self.verify_tra_anti_replay_algorithm()
1203             self.config_anti_replay(self.params.values())
1204
1205         self.unconfig_network()
1206         self.config_network(self.params.values())
1207         self.verify_hi_seq_num()
1208         self.unconfig_network()
1209         self.config_network(self.params.values())
1210         self.verify_tra_lost()
1211
1212         #
1213         # swap the handlers while SAs are up
1214         #
1215         self.unconfig_network()
1216         self.config_network(self.params.values())
1217         for e in engines:
1218             if e != engine:
1219                 self.vapi.cli("set crypto handler all %s" % e)
1220                 self.verify_tra_basic4(count=NUM_PKTS)
1221
1222         self.unconfig_network()
1223
1224
1225 #
1226 # To generate test classes, do:
1227 #   grep '# GEN' test_ipsec_esp.py | sed -e 's/# GEN //g' | bash
1228 #
1229 # GEN for ENG in native ipsecmb openssl; do \
1230 # GEN   for ESN in ESNon ESNoff; do for AR in ARon ARoff; do \
1231 # GEN   for ALG in AES-GCM-128/NONE \
1232 # GEN     AES-GCM-192/NONE AES-GCM-256/NONE AES-CBC-128/MD5-96 \
1233 # GEN     AES-CBC-192/SHA1-96 AES-CBC-256/SHA1-96 \
1234 # GEN     3DES-CBC/SHA1-96 NONE/SHA1-96 \
1235 # GEN     AES-CTR-128/SHA1-96 AES-CTR-192/SHA1-96 AES-CTR-256/SHA1-96 \
1236 # GEN     AES-NULL-GMAC-128/NONE AES-NULL-GMAC-192/NONE AES-NULL-GMAC-256/NONE; do \
1237 # GEN      echo -en "\n\nclass "
1238 # GEN      echo -e "Test_${ENG}_${ESN}_${AR}_${ALG}(RunTestIpsecEspAll):" |
1239 # GEN             sed -e 's/-/_/g' -e 's#/#_#g' ;
1240 # GEN      echo '    """'$ENG $ESN $AR $ALG IPSec test'"""' ;
1241 # GEN      echo "    def test_ipsec(self):";
1242 # GEN      echo '        """'$ENG $ESN $AR $ALG IPSec test'"""' ;
1243 # GEN      echo "        self.run_test()";
1244 # GEN done; done; done; done
1245 #
1246 # GEN   for ESN in ESNon ESNoff; do for AR in ARon ARoff; do \
1247 # GEN   for ALG in \
1248 # GEN     AES-GCM-128/NONE AES-GCM-192/NONE AES-GCM-256/NONE \
1249 # GEN     AES-CBC-192/SHA1-96 AES-CBC-256/SHA1-96; do \
1250 # GEN      echo -en "\n\nclass "
1251 # GEN      echo -e "Test_async_${ESN}_${AR}_${ALG}(RunTestIpsecEspAll):" |
1252 # GEN             sed -e 's/-/_/g' -e 's#/#_#g' ;
1253 # GEN      echo '    """'async $ESN $AR $ALG IPSec test'"""' ;
1254 # GEN      echo "    def test_ipsec(self):";
1255 # GEN      echo '        """'async $ESN $AR $ALG IPSec test'"""' ;
1256 # GEN      echo "        self.run_test()";
1257 # GEN done; done; done;
1258
1259
1260 class Test_native_ESNon_ARon_AES_GCM_128_NONE(RunTestIpsecEspAll):
1261     """native ESNon ARon AES-GCM-128/NONE IPSec test"""
1262
1263     def test_ipsec(self):
1264         """native ESNon ARon AES-GCM-128/NONE IPSec test"""
1265         self.run_test()
1266
1267
1268 class Test_native_ESNon_ARon_AES_GCM_192_NONE(RunTestIpsecEspAll):
1269     """native ESNon ARon AES-GCM-192/NONE IPSec test"""
1270
1271     def test_ipsec(self):
1272         """native ESNon ARon AES-GCM-192/NONE IPSec test"""
1273         self.run_test()
1274
1275
1276 class Test_native_ESNon_ARon_AES_GCM_256_NONE(RunTestIpsecEspAll):
1277     """native ESNon ARon AES-GCM-256/NONE IPSec test"""
1278
1279     def test_ipsec(self):
1280         """native ESNon ARon AES-GCM-256/NONE IPSec test"""
1281         self.run_test()
1282
1283
1284 class Test_native_ESNon_ARon_AES_CBC_128_MD5_96(RunTestIpsecEspAll):
1285     """native ESNon ARon AES-CBC-128/MD5-96 IPSec test"""
1286
1287     def test_ipsec(self):
1288         """native ESNon ARon AES-CBC-128/MD5-96 IPSec test"""
1289         self.run_test()
1290
1291
1292 class Test_native_ESNon_ARon_AES_CBC_192_SHA1_96(RunTestIpsecEspAll):
1293     """native ESNon ARon AES-CBC-192/SHA1-96 IPSec test"""
1294
1295     def test_ipsec(self):
1296         """native ESNon ARon AES-CBC-192/SHA1-96 IPSec test"""
1297         self.run_test()
1298
1299
1300 class Test_native_ESNon_ARon_AES_CBC_256_SHA1_96(RunTestIpsecEspAll):
1301     """native ESNon ARon AES-CBC-256/SHA1-96 IPSec test"""
1302
1303     def test_ipsec(self):
1304         """native ESNon ARon AES-CBC-256/SHA1-96 IPSec test"""
1305         self.run_test()
1306
1307
1308 class Test_native_ESNon_ARon_3DES_CBC_SHA1_96(RunTestIpsecEspAll):
1309     """native ESNon ARon 3DES-CBC/SHA1-96 IPSec test"""
1310
1311     def test_ipsec(self):
1312         """native ESNon ARon 3DES-CBC/SHA1-96 IPSec test"""
1313         self.run_test()
1314
1315
1316 class Test_native_ESNon_ARon_NONE_SHA1_96(RunTestIpsecEspAll):
1317     """native ESNon ARon NONE/SHA1-96 IPSec test"""
1318
1319     def test_ipsec(self):
1320         """native ESNon ARon NONE/SHA1-96 IPSec test"""
1321         self.run_test()
1322
1323
1324 class Test_native_ESNon_ARon_AES_CTR_128_SHA1_96(RunTestIpsecEspAll):
1325     """native ESNon ARon AES-CTR-128/SHA1-96 IPSec test"""
1326
1327     def test_ipsec(self):
1328         """native ESNon ARon AES-CTR-128/SHA1-96 IPSec test"""
1329         self.run_test()
1330
1331
1332 class Test_native_ESNon_ARon_AES_CTR_192_SHA1_96(RunTestIpsecEspAll):
1333     """native ESNon ARon AES-CTR-192/SHA1-96 IPSec test"""
1334
1335     def test_ipsec(self):
1336         """native ESNon ARon AES-CTR-192/SHA1-96 IPSec test"""
1337         self.run_test()
1338
1339
1340 class Test_native_ESNon_ARon_AES_CTR_256_SHA1_96(RunTestIpsecEspAll):
1341     """native ESNon ARon AES-CTR-256/SHA1-96 IPSec test"""
1342
1343     def test_ipsec(self):
1344         """native ESNon ARon AES-CTR-256/SHA1-96 IPSec test"""
1345         self.run_test()
1346
1347
1348 class Test_native_ESNon_ARoff_AES_GCM_128_NONE(RunTestIpsecEspAll):
1349     """native ESNon ARoff AES-GCM-128/NONE IPSec test"""
1350
1351     def test_ipsec(self):
1352         """native ESNon ARoff AES-GCM-128/NONE IPSec test"""
1353         self.run_test()
1354
1355
1356 class Test_native_ESNon_ARoff_AES_GCM_192_NONE(RunTestIpsecEspAll):
1357     """native ESNon ARoff AES-GCM-192/NONE IPSec test"""
1358
1359     def test_ipsec(self):
1360         """native ESNon ARoff AES-GCM-192/NONE IPSec test"""
1361         self.run_test()
1362
1363
1364 class Test_native_ESNon_ARoff_AES_GCM_256_NONE(RunTestIpsecEspAll):
1365     """native ESNon ARoff AES-GCM-256/NONE IPSec test"""
1366
1367     def test_ipsec(self):
1368         """native ESNon ARoff AES-GCM-256/NONE IPSec test"""
1369         self.run_test()
1370
1371
1372 class Test_native_ESNon_ARoff_AES_CBC_128_MD5_96(RunTestIpsecEspAll):
1373     """native ESNon ARoff AES-CBC-128/MD5-96 IPSec test"""
1374
1375     def test_ipsec(self):
1376         """native ESNon ARoff AES-CBC-128/MD5-96 IPSec test"""
1377         self.run_test()
1378
1379
1380 class Test_native_ESNon_ARoff_AES_CBC_192_SHA1_96(RunTestIpsecEspAll):
1381     """native ESNon ARoff AES-CBC-192/SHA1-96 IPSec test"""
1382
1383     def test_ipsec(self):
1384         """native ESNon ARoff AES-CBC-192/SHA1-96 IPSec test"""
1385         self.run_test()
1386
1387
1388 class Test_native_ESNon_ARoff_AES_CBC_256_SHA1_96(RunTestIpsecEspAll):
1389     """native ESNon ARoff AES-CBC-256/SHA1-96 IPSec test"""
1390
1391     def test_ipsec(self):
1392         """native ESNon ARoff AES-CBC-256/SHA1-96 IPSec test"""
1393         self.run_test()
1394
1395
1396 class Test_native_ESNon_ARoff_3DES_CBC_SHA1_96(RunTestIpsecEspAll):
1397     """native ESNon ARoff 3DES-CBC/SHA1-96 IPSec test"""
1398
1399     def test_ipsec(self):
1400         """native ESNon ARoff 3DES-CBC/SHA1-96 IPSec test"""
1401         self.run_test()
1402
1403
1404 class Test_native_ESNon_ARoff_NONE_SHA1_96(RunTestIpsecEspAll):
1405     """native ESNon ARoff NONE/SHA1-96 IPSec test"""
1406
1407     def test_ipsec(self):
1408         """native ESNon ARoff NONE/SHA1-96 IPSec test"""
1409         self.run_test()
1410
1411
1412 class Test_native_ESNon_ARoff_AES_CTR_128_SHA1_96(RunTestIpsecEspAll):
1413     """native ESNon ARoff AES-CTR-128/SHA1-96 IPSec test"""
1414
1415     def test_ipsec(self):
1416         """native ESNon ARoff AES-CTR-128/SHA1-96 IPSec test"""
1417         self.run_test()
1418
1419
1420 class Test_native_ESNon_ARoff_AES_CTR_192_SHA1_96(RunTestIpsecEspAll):
1421     """native ESNon ARoff AES-CTR-192/SHA1-96 IPSec test"""
1422
1423     def test_ipsec(self):
1424         """native ESNon ARoff AES-CTR-192/SHA1-96 IPSec test"""
1425         self.run_test()
1426
1427
1428 class Test_native_ESNon_ARoff_AES_CTR_256_SHA1_96(RunTestIpsecEspAll):
1429     """native ESNon ARoff AES-CTR-256/SHA1-96 IPSec test"""
1430
1431     def test_ipsec(self):
1432         """native ESNon ARoff AES-CTR-256/SHA1-96 IPSec test"""
1433         self.run_test()
1434
1435
1436 class Test_native_ESNoff_ARon_AES_GCM_128_NONE(RunTestIpsecEspAll):
1437     """native ESNoff ARon AES-GCM-128/NONE IPSec test"""
1438
1439     def test_ipsec(self):
1440         """native ESNoff ARon AES-GCM-128/NONE IPSec test"""
1441         self.run_test()
1442
1443
1444 class Test_native_ESNoff_ARon_AES_GCM_192_NONE(RunTestIpsecEspAll):
1445     """native ESNoff ARon AES-GCM-192/NONE IPSec test"""
1446
1447     def test_ipsec(self):
1448         """native ESNoff ARon AES-GCM-192/NONE IPSec test"""
1449         self.run_test()
1450
1451
1452 class Test_native_ESNoff_ARon_AES_GCM_256_NONE(RunTestIpsecEspAll):
1453     """native ESNoff ARon AES-GCM-256/NONE IPSec test"""
1454
1455     def test_ipsec(self):
1456         """native ESNoff ARon AES-GCM-256/NONE IPSec test"""
1457         self.run_test()
1458
1459
1460 class Test_native_ESNoff_ARon_AES_CBC_128_MD5_96(RunTestIpsecEspAll):
1461     """native ESNoff ARon AES-CBC-128/MD5-96 IPSec test"""
1462
1463     def test_ipsec(self):
1464         """native ESNoff ARon AES-CBC-128/MD5-96 IPSec test"""
1465         self.run_test()
1466
1467
1468 class Test_native_ESNoff_ARon_AES_CBC_192_SHA1_96(RunTestIpsecEspAll):
1469     """native ESNoff ARon AES-CBC-192/SHA1-96 IPSec test"""
1470
1471     def test_ipsec(self):
1472         """native ESNoff ARon AES-CBC-192/SHA1-96 IPSec test"""
1473         self.run_test()
1474
1475
1476 class Test_native_ESNoff_ARon_AES_CBC_256_SHA1_96(RunTestIpsecEspAll):
1477     """native ESNoff ARon AES-CBC-256/SHA1-96 IPSec test"""
1478
1479     def test_ipsec(self):
1480         """native ESNoff ARon AES-CBC-256/SHA1-96 IPSec test"""
1481         self.run_test()
1482
1483
1484 class Test_native_ESNoff_ARon_3DES_CBC_SHA1_96(RunTestIpsecEspAll):
1485     """native ESNoff ARon 3DES-CBC/SHA1-96 IPSec test"""
1486
1487     def test_ipsec(self):
1488         """native ESNoff ARon 3DES-CBC/SHA1-96 IPSec test"""
1489         self.run_test()
1490
1491
1492 class Test_native_ESNoff_ARon_NONE_SHA1_96(RunTestIpsecEspAll):
1493     """native ESNoff ARon NONE/SHA1-96 IPSec test"""
1494
1495     def test_ipsec(self):
1496         """native ESNoff ARon NONE/SHA1-96 IPSec test"""
1497         self.run_test()
1498
1499
1500 class Test_native_ESNoff_ARon_AES_CTR_128_SHA1_96(RunTestIpsecEspAll):
1501     """native ESNoff ARon AES-CTR-128/SHA1-96 IPSec test"""
1502
1503     def test_ipsec(self):
1504         """native ESNoff ARon AES-CTR-128/SHA1-96 IPSec test"""
1505         self.run_test()
1506
1507
1508 class Test_native_ESNoff_ARon_AES_CTR_192_SHA1_96(RunTestIpsecEspAll):
1509     """native ESNoff ARon AES-CTR-192/SHA1-96 IPSec test"""
1510
1511     def test_ipsec(self):
1512         """native ESNoff ARon AES-CTR-192/SHA1-96 IPSec test"""
1513         self.run_test()
1514
1515
1516 class Test_native_ESNoff_ARon_AES_CTR_256_SHA1_96(RunTestIpsecEspAll):
1517     """native ESNoff ARon AES-CTR-256/SHA1-96 IPSec test"""
1518
1519     def test_ipsec(self):
1520         """native ESNoff ARon AES-CTR-256/SHA1-96 IPSec test"""
1521         self.run_test()
1522
1523
1524 class Test_native_ESNoff_ARoff_AES_GCM_128_NONE(RunTestIpsecEspAll):
1525     """native ESNoff ARoff AES-GCM-128/NONE IPSec test"""
1526
1527     def test_ipsec(self):
1528         """native ESNoff ARoff AES-GCM-128/NONE IPSec test"""
1529         self.run_test()
1530
1531
1532 class Test_native_ESNoff_ARoff_AES_GCM_192_NONE(RunTestIpsecEspAll):
1533     """native ESNoff ARoff AES-GCM-192/NONE IPSec test"""
1534
1535     def test_ipsec(self):
1536         """native ESNoff ARoff AES-GCM-192/NONE IPSec test"""
1537         self.run_test()
1538
1539
1540 class Test_native_ESNoff_ARoff_AES_GCM_256_NONE(RunTestIpsecEspAll):
1541     """native ESNoff ARoff AES-GCM-256/NONE IPSec test"""
1542
1543     def test_ipsec(self):
1544         """native ESNoff ARoff AES-GCM-256/NONE IPSec test"""
1545         self.run_test()
1546
1547
1548 class Test_native_ESNoff_ARoff_AES_CBC_128_MD5_96(RunTestIpsecEspAll):
1549     """native ESNoff ARoff AES-CBC-128/MD5-96 IPSec test"""
1550
1551     def test_ipsec(self):
1552         """native ESNoff ARoff AES-CBC-128/MD5-96 IPSec test"""
1553         self.run_test()
1554
1555
1556 class Test_native_ESNoff_ARoff_AES_CBC_192_SHA1_96(RunTestIpsecEspAll):
1557     """native ESNoff ARoff AES-CBC-192/SHA1-96 IPSec test"""
1558
1559     def test_ipsec(self):
1560         """native ESNoff ARoff AES-CBC-192/SHA1-96 IPSec test"""
1561         self.run_test()
1562
1563
1564 class Test_native_ESNoff_ARoff_AES_CBC_256_SHA1_96(RunTestIpsecEspAll):
1565     """native ESNoff ARoff AES-CBC-256/SHA1-96 IPSec test"""
1566
1567     def test_ipsec(self):
1568         """native ESNoff ARoff AES-CBC-256/SHA1-96 IPSec test"""
1569         self.run_test()
1570
1571
1572 class Test_native_ESNoff_ARoff_3DES_CBC_SHA1_96(RunTestIpsecEspAll):
1573     """native ESNoff ARoff 3DES-CBC/SHA1-96 IPSec test"""
1574
1575     def test_ipsec(self):
1576         """native ESNoff ARoff 3DES-CBC/SHA1-96 IPSec test"""
1577         self.run_test()
1578
1579
1580 class Test_native_ESNoff_ARoff_NONE_SHA1_96(RunTestIpsecEspAll):
1581     """native ESNoff ARoff NONE/SHA1-96 IPSec test"""
1582
1583     def test_ipsec(self):
1584         """native ESNoff ARoff NONE/SHA1-96 IPSec test"""
1585         self.run_test()
1586
1587
1588 class Test_native_ESNoff_ARoff_AES_CTR_128_SHA1_96(RunTestIpsecEspAll):
1589     """native ESNoff ARoff AES-CTR-128/SHA1-96 IPSec test"""
1590
1591     def test_ipsec(self):
1592         """native ESNoff ARoff AES-CTR-128/SHA1-96 IPSec test"""
1593         self.run_test()
1594
1595
1596 class Test_native_ESNoff_ARoff_AES_CTR_192_SHA1_96(RunTestIpsecEspAll):
1597     """native ESNoff ARoff AES-CTR-192/SHA1-96 IPSec test"""
1598
1599     def test_ipsec(self):
1600         """native ESNoff ARoff AES-CTR-192/SHA1-96 IPSec test"""
1601         self.run_test()
1602
1603
1604 class Test_native_ESNoff_ARoff_AES_CTR_256_SHA1_96(RunTestIpsecEspAll):
1605     """native ESNoff ARoff AES-CTR-256/SHA1-96 IPSec test"""
1606
1607     def test_ipsec(self):
1608         """native ESNoff ARoff AES-CTR-256/SHA1-96 IPSec test"""
1609         self.run_test()
1610
1611
1612 class Test_ipsecmb_ESNon_ARon_AES_GCM_128_NONE(RunTestIpsecEspAll):
1613     """ipsecmb ESNon ARon AES-GCM-128/NONE IPSec test"""
1614
1615     def test_ipsec(self):
1616         """ipsecmb ESNon ARon AES-GCM-128/NONE IPSec test"""
1617         self.run_test()
1618
1619
1620 class Test_ipsecmb_ESNon_ARon_AES_GCM_192_NONE(RunTestIpsecEspAll):
1621     """ipsecmb ESNon ARon AES-GCM-192/NONE IPSec test"""
1622
1623     def test_ipsec(self):
1624         """ipsecmb ESNon ARon AES-GCM-192/NONE IPSec test"""
1625         self.run_test()
1626
1627
1628 class Test_ipsecmb_ESNon_ARon_AES_GCM_256_NONE(RunTestIpsecEspAll):
1629     """ipsecmb ESNon ARon AES-GCM-256/NONE IPSec test"""
1630
1631     def test_ipsec(self):
1632         """ipsecmb ESNon ARon AES-GCM-256/NONE IPSec test"""
1633         self.run_test()
1634
1635
1636 class Test_ipsecmb_ESNon_ARon_AES_CBC_128_MD5_96(RunTestIpsecEspAll):
1637     """ipsecmb ESNon ARon AES-CBC-128/MD5-96 IPSec test"""
1638
1639     def test_ipsec(self):
1640         """ipsecmb ESNon ARon AES-CBC-128/MD5-96 IPSec test"""
1641         self.run_test()
1642
1643
1644 class Test_ipsecmb_ESNon_ARon_AES_CBC_192_SHA1_96(RunTestIpsecEspAll):
1645     """ipsecmb ESNon ARon AES-CBC-192/SHA1-96 IPSec test"""
1646
1647     def test_ipsec(self):
1648         """ipsecmb ESNon ARon AES-CBC-192/SHA1-96 IPSec test"""
1649         self.run_test()
1650
1651
1652 class Test_ipsecmb_ESNon_ARon_AES_CBC_256_SHA1_96(RunTestIpsecEspAll):
1653     """ipsecmb ESNon ARon AES-CBC-256/SHA1-96 IPSec test"""
1654
1655     def test_ipsec(self):
1656         """ipsecmb ESNon ARon AES-CBC-256/SHA1-96 IPSec test"""
1657         self.run_test()
1658
1659
1660 class Test_ipsecmb_ESNon_ARon_3DES_CBC_SHA1_96(RunTestIpsecEspAll):
1661     """ipsecmb ESNon ARon 3DES-CBC/SHA1-96 IPSec test"""
1662
1663     def test_ipsec(self):
1664         """ipsecmb ESNon ARon 3DES-CBC/SHA1-96 IPSec test"""
1665         self.run_test()
1666
1667
1668 class Test_ipsecmb_ESNon_ARon_NONE_SHA1_96(RunTestIpsecEspAll):
1669     """ipsecmb ESNon ARon NONE/SHA1-96 IPSec test"""
1670
1671     def test_ipsec(self):
1672         """ipsecmb ESNon ARon NONE/SHA1-96 IPSec test"""
1673         self.run_test()
1674
1675
1676 class Test_ipsecmb_ESNon_ARon_AES_CTR_128_SHA1_96(RunTestIpsecEspAll):
1677     """ipsecmb ESNon ARon AES-CTR-128/SHA1-96 IPSec test"""
1678
1679     def test_ipsec(self):
1680         """ipsecmb ESNon ARon AES-CTR-128/SHA1-96 IPSec test"""
1681         self.run_test()
1682
1683
1684 class Test_ipsecmb_ESNon_ARon_AES_CTR_192_SHA1_96(RunTestIpsecEspAll):
1685     """ipsecmb ESNon ARon AES-CTR-192/SHA1-96 IPSec test"""
1686
1687     def test_ipsec(self):
1688         """ipsecmb ESNon ARon AES-CTR-192/SHA1-96 IPSec test"""
1689         self.run_test()
1690
1691
1692 class Test_ipsecmb_ESNon_ARon_AES_CTR_256_SHA1_96(RunTestIpsecEspAll):
1693     """ipsecmb ESNon ARon AES-CTR-256/SHA1-96 IPSec test"""
1694
1695     def test_ipsec(self):
1696         """ipsecmb ESNon ARon AES-CTR-256/SHA1-96 IPSec test"""
1697         self.run_test()
1698
1699
1700 class Test_ipsecmb_ESNon_ARoff_AES_GCM_128_NONE(RunTestIpsecEspAll):
1701     """ipsecmb ESNon ARoff AES-GCM-128/NONE IPSec test"""
1702
1703     def test_ipsec(self):
1704         """ipsecmb ESNon ARoff AES-GCM-128/NONE IPSec test"""
1705         self.run_test()
1706
1707
1708 class Test_ipsecmb_ESNon_ARoff_AES_GCM_192_NONE(RunTestIpsecEspAll):
1709     """ipsecmb ESNon ARoff AES-GCM-192/NONE IPSec test"""
1710
1711     def test_ipsec(self):
1712         """ipsecmb ESNon ARoff AES-GCM-192/NONE IPSec test"""
1713         self.run_test()
1714
1715
1716 class Test_ipsecmb_ESNon_ARoff_AES_GCM_256_NONE(RunTestIpsecEspAll):
1717     """ipsecmb ESNon ARoff AES-GCM-256/NONE IPSec test"""
1718
1719     def test_ipsec(self):
1720         """ipsecmb ESNon ARoff AES-GCM-256/NONE IPSec test"""
1721         self.run_test()
1722
1723
1724 class Test_ipsecmb_ESNon_ARoff_AES_CBC_128_MD5_96(RunTestIpsecEspAll):
1725     """ipsecmb ESNon ARoff AES-CBC-128/MD5-96 IPSec test"""
1726
1727     def test_ipsec(self):
1728         """ipsecmb ESNon ARoff AES-CBC-128/MD5-96 IPSec test"""
1729         self.run_test()
1730
1731
1732 class Test_ipsecmb_ESNon_ARoff_AES_CBC_192_SHA1_96(RunTestIpsecEspAll):
1733     """ipsecmb ESNon ARoff AES-CBC-192/SHA1-96 IPSec test"""
1734
1735     def test_ipsec(self):
1736         """ipsecmb ESNon ARoff AES-CBC-192/SHA1-96 IPSec test"""
1737         self.run_test()
1738
1739
1740 class Test_ipsecmb_ESNon_ARoff_AES_CBC_256_SHA1_96(RunTestIpsecEspAll):
1741     """ipsecmb ESNon ARoff AES-CBC-256/SHA1-96 IPSec test"""
1742
1743     def test_ipsec(self):
1744         """ipsecmb ESNon ARoff AES-CBC-256/SHA1-96 IPSec test"""
1745         self.run_test()
1746
1747
1748 class Test_ipsecmb_ESNon_ARoff_3DES_CBC_SHA1_96(RunTestIpsecEspAll):
1749     """ipsecmb ESNon ARoff 3DES-CBC/SHA1-96 IPSec test"""
1750
1751     def test_ipsec(self):
1752         """ipsecmb ESNon ARoff 3DES-CBC/SHA1-96 IPSec test"""
1753         self.run_test()
1754
1755
1756 class Test_ipsecmb_ESNon_ARoff_NONE_SHA1_96(RunTestIpsecEspAll):
1757     """ipsecmb ESNon ARoff NONE/SHA1-96 IPSec test"""
1758
1759     def test_ipsec(self):
1760         """ipsecmb ESNon ARoff NONE/SHA1-96 IPSec test"""
1761         self.run_test()
1762
1763
1764 class Test_ipsecmb_ESNon_ARoff_AES_CTR_128_SHA1_96(RunTestIpsecEspAll):
1765     """ipsecmb ESNon ARoff AES-CTR-128/SHA1-96 IPSec test"""
1766
1767     def test_ipsec(self):
1768         """ipsecmb ESNon ARoff AES-CTR-128/SHA1-96 IPSec test"""
1769         self.run_test()
1770
1771
1772 class Test_ipsecmb_ESNon_ARoff_AES_CTR_192_SHA1_96(RunTestIpsecEspAll):
1773     """ipsecmb ESNon ARoff AES-CTR-192/SHA1-96 IPSec test"""
1774
1775     def test_ipsec(self):
1776         """ipsecmb ESNon ARoff AES-CTR-192/SHA1-96 IPSec test"""
1777         self.run_test()
1778
1779
1780 class Test_ipsecmb_ESNon_ARoff_AES_CTR_256_SHA1_96(RunTestIpsecEspAll):
1781     """ipsecmb ESNon ARoff AES-CTR-256/SHA1-96 IPSec test"""
1782
1783     def test_ipsec(self):
1784         """ipsecmb ESNon ARoff AES-CTR-256/SHA1-96 IPSec test"""
1785         self.run_test()
1786
1787
1788 class Test_ipsecmb_ESNoff_ARon_AES_GCM_128_NONE(RunTestIpsecEspAll):
1789     """ipsecmb ESNoff ARon AES-GCM-128/NONE IPSec test"""
1790
1791     def test_ipsec(self):
1792         """ipsecmb ESNoff ARon AES-GCM-128/NONE IPSec test"""
1793         self.run_test()
1794
1795
1796 class Test_ipsecmb_ESNoff_ARon_AES_GCM_192_NONE(RunTestIpsecEspAll):
1797     """ipsecmb ESNoff ARon AES-GCM-192/NONE IPSec test"""
1798
1799     def test_ipsec(self):
1800         """ipsecmb ESNoff ARon AES-GCM-192/NONE IPSec test"""
1801         self.run_test()
1802
1803
1804 class Test_ipsecmb_ESNoff_ARon_AES_GCM_256_NONE(RunTestIpsecEspAll):
1805     """ipsecmb ESNoff ARon AES-GCM-256/NONE IPSec test"""
1806
1807     def test_ipsec(self):
1808         """ipsecmb ESNoff ARon AES-GCM-256/NONE IPSec test"""
1809         self.run_test()
1810
1811
1812 class Test_ipsecmb_ESNoff_ARon_AES_CBC_128_MD5_96(RunTestIpsecEspAll):
1813     """ipsecmb ESNoff ARon AES-CBC-128/MD5-96 IPSec test"""
1814
1815     def test_ipsec(self):
1816         """ipsecmb ESNoff ARon AES-CBC-128/MD5-96 IPSec test"""
1817         self.run_test()
1818
1819
1820 class Test_ipsecmb_ESNoff_ARon_AES_CBC_192_SHA1_96(RunTestIpsecEspAll):
1821     """ipsecmb ESNoff ARon AES-CBC-192/SHA1-96 IPSec test"""
1822
1823     def test_ipsec(self):
1824         """ipsecmb ESNoff ARon AES-CBC-192/SHA1-96 IPSec test"""
1825         self.run_test()
1826
1827
1828 class Test_ipsecmb_ESNoff_ARon_AES_CBC_256_SHA1_96(RunTestIpsecEspAll):
1829     """ipsecmb ESNoff ARon AES-CBC-256/SHA1-96 IPSec test"""
1830
1831     def test_ipsec(self):
1832         """ipsecmb ESNoff ARon AES-CBC-256/SHA1-96 IPSec test"""
1833         self.run_test()
1834
1835
1836 class Test_ipsecmb_ESNoff_ARon_3DES_CBC_SHA1_96(RunTestIpsecEspAll):
1837     """ipsecmb ESNoff ARon 3DES-CBC/SHA1-96 IPSec test"""
1838
1839     def test_ipsec(self):
1840         """ipsecmb ESNoff ARon 3DES-CBC/SHA1-96 IPSec test"""
1841         self.run_test()
1842
1843
1844 class Test_ipsecmb_ESNoff_ARon_NONE_SHA1_96(RunTestIpsecEspAll):
1845     """ipsecmb ESNoff ARon NONE/SHA1-96 IPSec test"""
1846
1847     def test_ipsec(self):
1848         """ipsecmb ESNoff ARon NONE/SHA1-96 IPSec test"""
1849         self.run_test()
1850
1851
1852 class Test_ipsecmb_ESNoff_ARon_AES_CTR_128_SHA1_96(RunTestIpsecEspAll):
1853     """ipsecmb ESNoff ARon AES-CTR-128/SHA1-96 IPSec test"""
1854
1855     def test_ipsec(self):
1856         """ipsecmb ESNoff ARon AES-CTR-128/SHA1-96 IPSec test"""
1857         self.run_test()
1858
1859
1860 class Test_ipsecmb_ESNoff_ARon_AES_CTR_192_SHA1_96(RunTestIpsecEspAll):
1861     """ipsecmb ESNoff ARon AES-CTR-192/SHA1-96 IPSec test"""
1862
1863     def test_ipsec(self):
1864         """ipsecmb ESNoff ARon AES-CTR-192/SHA1-96 IPSec test"""
1865         self.run_test()
1866
1867
1868 class Test_ipsecmb_ESNoff_ARon_AES_CTR_256_SHA1_96(RunTestIpsecEspAll):
1869     """ipsecmb ESNoff ARon AES-CTR-256/SHA1-96 IPSec test"""
1870
1871     def test_ipsec(self):
1872         """ipsecmb ESNoff ARon AES-CTR-256/SHA1-96 IPSec test"""
1873         self.run_test()
1874
1875
1876 class Test_ipsecmb_ESNoff_ARoff_AES_GCM_128_NONE(RunTestIpsecEspAll):
1877     """ipsecmb ESNoff ARoff AES-GCM-128/NONE IPSec test"""
1878
1879     def test_ipsec(self):
1880         """ipsecmb ESNoff ARoff AES-GCM-128/NONE IPSec test"""
1881         self.run_test()
1882
1883
1884 class Test_ipsecmb_ESNoff_ARoff_AES_GCM_192_NONE(RunTestIpsecEspAll):
1885     """ipsecmb ESNoff ARoff AES-GCM-192/NONE IPSec test"""
1886
1887     def test_ipsec(self):
1888         """ipsecmb ESNoff ARoff AES-GCM-192/NONE IPSec test"""
1889         self.run_test()
1890
1891
1892 class Test_ipsecmb_ESNoff_ARoff_AES_GCM_256_NONE(RunTestIpsecEspAll):
1893     """ipsecmb ESNoff ARoff AES-GCM-256/NONE IPSec test"""
1894
1895     def test_ipsec(self):
1896         """ipsecmb ESNoff ARoff AES-GCM-256/NONE IPSec test"""
1897         self.run_test()
1898
1899
1900 class Test_ipsecmb_ESNoff_ARoff_AES_CBC_128_MD5_96(RunTestIpsecEspAll):
1901     """ipsecmb ESNoff ARoff AES-CBC-128/MD5-96 IPSec test"""
1902
1903     def test_ipsec(self):
1904         """ipsecmb ESNoff ARoff AES-CBC-128/MD5-96 IPSec test"""
1905         self.run_test()
1906
1907
1908 class Test_ipsecmb_ESNoff_ARoff_AES_CBC_192_SHA1_96(RunTestIpsecEspAll):
1909     """ipsecmb ESNoff ARoff AES-CBC-192/SHA1-96 IPSec test"""
1910
1911     def test_ipsec(self):
1912         """ipsecmb ESNoff ARoff AES-CBC-192/SHA1-96 IPSec test"""
1913         self.run_test()
1914
1915
1916 class Test_ipsecmb_ESNoff_ARoff_AES_CBC_256_SHA1_96(RunTestIpsecEspAll):
1917     """ipsecmb ESNoff ARoff AES-CBC-256/SHA1-96 IPSec test"""
1918
1919     def test_ipsec(self):
1920         """ipsecmb ESNoff ARoff AES-CBC-256/SHA1-96 IPSec test"""
1921         self.run_test()
1922
1923
1924 class Test_ipsecmb_ESNoff_ARoff_3DES_CBC_SHA1_96(RunTestIpsecEspAll):
1925     """ipsecmb ESNoff ARoff 3DES-CBC/SHA1-96 IPSec test"""
1926
1927     def test_ipsec(self):
1928         """ipsecmb ESNoff ARoff 3DES-CBC/SHA1-96 IPSec test"""
1929         self.run_test()
1930
1931
1932 class Test_ipsecmb_ESNoff_ARoff_NONE_SHA1_96(RunTestIpsecEspAll):
1933     """ipsecmb ESNoff ARoff NONE/SHA1-96 IPSec test"""
1934
1935     def test_ipsec(self):
1936         """ipsecmb ESNoff ARoff NONE/SHA1-96 IPSec test"""
1937         self.run_test()
1938
1939
1940 class Test_ipsecmb_ESNoff_ARoff_AES_CTR_128_SHA1_96(RunTestIpsecEspAll):
1941     """ipsecmb ESNoff ARoff AES-CTR-128/SHA1-96 IPSec test"""
1942
1943     def test_ipsec(self):
1944         """ipsecmb ESNoff ARoff AES-CTR-128/SHA1-96 IPSec test"""
1945         self.run_test()
1946
1947
1948 class Test_ipsecmb_ESNoff_ARoff_AES_CTR_192_SHA1_96(RunTestIpsecEspAll):
1949     """ipsecmb ESNoff ARoff AES-CTR-192/SHA1-96 IPSec test"""
1950
1951     def test_ipsec(self):
1952         """ipsecmb ESNoff ARoff AES-CTR-192/SHA1-96 IPSec test"""
1953         self.run_test()
1954
1955
1956 class Test_ipsecmb_ESNoff_ARoff_AES_CTR_256_SHA1_96(RunTestIpsecEspAll):
1957     """ipsecmb ESNoff ARoff AES-CTR-256/SHA1-96 IPSec test"""
1958
1959     def test_ipsec(self):
1960         """ipsecmb ESNoff ARoff AES-CTR-256/SHA1-96 IPSec test"""
1961         self.run_test()
1962
1963
1964 class Test_openssl_ESNon_ARon_AES_GCM_128_NONE(RunTestIpsecEspAll):
1965     """openssl ESNon ARon AES-GCM-128/NONE IPSec test"""
1966
1967     def test_ipsec(self):
1968         """openssl ESNon ARon AES-GCM-128/NONE IPSec test"""
1969         self.run_test()
1970
1971
1972 class Test_openssl_ESNon_ARon_AES_GCM_192_NONE(RunTestIpsecEspAll):
1973     """openssl ESNon ARon AES-GCM-192/NONE IPSec test"""
1974
1975     def test_ipsec(self):
1976         """openssl ESNon ARon AES-GCM-192/NONE IPSec test"""
1977         self.run_test()
1978
1979
1980 class Test_openssl_ESNon_ARon_AES_GCM_256_NONE(RunTestIpsecEspAll):
1981     """openssl ESNon ARon AES-GCM-256/NONE IPSec test"""
1982
1983     def test_ipsec(self):
1984         """openssl ESNon ARon AES-GCM-256/NONE IPSec test"""
1985         self.run_test()
1986
1987
1988 class Test_openssl_ESNon_ARon_AES_CBC_128_MD5_96(RunTestIpsecEspAll):
1989     """openssl ESNon ARon AES-CBC-128/MD5-96 IPSec test"""
1990
1991     def test_ipsec(self):
1992         """openssl ESNon ARon AES-CBC-128/MD5-96 IPSec test"""
1993         self.run_test()
1994
1995
1996 class Test_openssl_ESNon_ARon_AES_CBC_192_SHA1_96(RunTestIpsecEspAll):
1997     """openssl ESNon ARon AES-CBC-192/SHA1-96 IPSec test"""
1998
1999     def test_ipsec(self):
2000         """openssl ESNon ARon AES-CBC-192/SHA1-96 IPSec test"""
2001         self.run_test()
2002
2003
2004 class Test_openssl_ESNon_ARon_AES_CBC_256_SHA1_96(RunTestIpsecEspAll):
2005     """openssl ESNon ARon AES-CBC-256/SHA1-96 IPSec test"""
2006
2007     def test_ipsec(self):
2008         """openssl ESNon ARon AES-CBC-256/SHA1-96 IPSec test"""
2009         self.run_test()
2010
2011
2012 class Test_openssl_ESNon_ARon_3DES_CBC_SHA1_96(RunTestIpsecEspAll):
2013     """openssl ESNon ARon 3DES-CBC/SHA1-96 IPSec test"""
2014
2015     def test_ipsec(self):
2016         """openssl ESNon ARon 3DES-CBC/SHA1-96 IPSec test"""
2017         self.run_test()
2018
2019
2020 class Test_openssl_ESNon_ARon_NONE_SHA1_96(RunTestIpsecEspAll):
2021     """openssl ESNon ARon NONE/SHA1-96 IPSec test"""
2022
2023     def test_ipsec(self):
2024         """openssl ESNon ARon NONE/SHA1-96 IPSec test"""
2025         self.run_test()
2026
2027
2028 class Test_openssl_ESNon_ARon_AES_CTR_128_SHA1_96(RunTestIpsecEspAll):
2029     """openssl ESNon ARon AES-CTR-128/SHA1-96 IPSec test"""
2030
2031     def test_ipsec(self):
2032         """openssl ESNon ARon AES-CTR-128/SHA1-96 IPSec test"""
2033         self.run_test()
2034
2035
2036 class Test_openssl_ESNon_ARon_AES_CTR_192_SHA1_96(RunTestIpsecEspAll):
2037     """openssl ESNon ARon AES-CTR-192/SHA1-96 IPSec test"""
2038
2039     def test_ipsec(self):
2040         """openssl ESNon ARon AES-CTR-192/SHA1-96 IPSec test"""
2041         self.run_test()
2042
2043
2044 class Test_openssl_ESNon_ARon_AES_CTR_256_SHA1_96(RunTestIpsecEspAll):
2045     """openssl ESNon ARon AES-CTR-256/SHA1-96 IPSec test"""
2046
2047     def test_ipsec(self):
2048         """openssl ESNon ARon AES-CTR-256/SHA1-96 IPSec test"""
2049         self.run_test()
2050
2051
2052 class Test_openssl_ESNon_ARon_AES_NULL_GMAC_128_NONE(RunTestIpsecEspAll):
2053     """openssl ESNon ARon AES-NULL-GMAC-128/NONE IPSec test"""
2054
2055     def test_ipsec(self):
2056         """openssl ESNon ARon AES-NULL-GMAC-128/NONE IPSec test"""
2057         self.run_test()
2058
2059
2060 class Test_openssl_ESNon_ARon_AES_NULL_GMAC_192_NONE(RunTestIpsecEspAll):
2061     """openssl ESNon ARon AES-NULL-GMAC-192/NONE IPSec test"""
2062
2063     def test_ipsec(self):
2064         """openssl ESNon ARon AES-NULL-GMAC-192/NONE IPSec test"""
2065         self.run_test()
2066
2067
2068 class Test_openssl_ESNon_ARon_AES_NULL_GMAC_256_NONE(RunTestIpsecEspAll):
2069     """openssl ESNon ARon AES-NULL-GMAC-256/NONE IPSec test"""
2070
2071     def test_ipsec(self):
2072         """openssl ESNon ARon AES-NULL-GMAC-256/NONE IPSec test"""
2073         self.run_test()
2074
2075
2076 class Test_openssl_ESNon_ARoff_AES_GCM_128_NONE(RunTestIpsecEspAll):
2077     """openssl ESNon ARoff AES-GCM-128/NONE IPSec test"""
2078
2079     def test_ipsec(self):
2080         """openssl ESNon ARoff AES-GCM-128/NONE IPSec test"""
2081         self.run_test()
2082
2083
2084 class Test_openssl_ESNon_ARoff_AES_GCM_192_NONE(RunTestIpsecEspAll):
2085     """openssl ESNon ARoff AES-GCM-192/NONE IPSec test"""
2086
2087     def test_ipsec(self):
2088         """openssl ESNon ARoff AES-GCM-192/NONE IPSec test"""
2089         self.run_test()
2090
2091
2092 class Test_openssl_ESNon_ARoff_AES_GCM_256_NONE(RunTestIpsecEspAll):
2093     """openssl ESNon ARoff AES-GCM-256/NONE IPSec test"""
2094
2095     def test_ipsec(self):
2096         """openssl ESNon ARoff AES-GCM-256/NONE IPSec test"""
2097         self.run_test()
2098
2099
2100 class Test_openssl_ESNon_ARoff_AES_CBC_128_MD5_96(RunTestIpsecEspAll):
2101     """openssl ESNon ARoff AES-CBC-128/MD5-96 IPSec test"""
2102
2103     def test_ipsec(self):
2104         """openssl ESNon ARoff AES-CBC-128/MD5-96 IPSec test"""
2105         self.run_test()
2106
2107
2108 class Test_openssl_ESNon_ARoff_AES_CBC_192_SHA1_96(RunTestIpsecEspAll):
2109     """openssl ESNon ARoff AES-CBC-192/SHA1-96 IPSec test"""
2110
2111     def test_ipsec(self):
2112         """openssl ESNon ARoff AES-CBC-192/SHA1-96 IPSec test"""
2113         self.run_test()
2114
2115
2116 class Test_openssl_ESNon_ARoff_AES_CBC_256_SHA1_96(RunTestIpsecEspAll):
2117     """openssl ESNon ARoff AES-CBC-256/SHA1-96 IPSec test"""
2118
2119     def test_ipsec(self):
2120         """openssl ESNon ARoff AES-CBC-256/SHA1-96 IPSec test"""
2121         self.run_test()
2122
2123
2124 class Test_openssl_ESNon_ARoff_3DES_CBC_SHA1_96(RunTestIpsecEspAll):
2125     """openssl ESNon ARoff 3DES-CBC/SHA1-96 IPSec test"""
2126
2127     def test_ipsec(self):
2128         """openssl ESNon ARoff 3DES-CBC/SHA1-96 IPSec test"""
2129         self.run_test()
2130
2131
2132 class Test_openssl_ESNon_ARoff_NONE_SHA1_96(RunTestIpsecEspAll):
2133     """openssl ESNon ARoff NONE/SHA1-96 IPSec test"""
2134
2135     def test_ipsec(self):
2136         """openssl ESNon ARoff NONE/SHA1-96 IPSec test"""
2137         self.run_test()
2138
2139
2140 class Test_openssl_ESNon_ARoff_AES_CTR_128_SHA1_96(RunTestIpsecEspAll):
2141     """openssl ESNon ARoff AES-CTR-128/SHA1-96 IPSec test"""
2142
2143     def test_ipsec(self):
2144         """openssl ESNon ARoff AES-CTR-128/SHA1-96 IPSec test"""
2145         self.run_test()
2146
2147
2148 class Test_openssl_ESNon_ARoff_AES_CTR_192_SHA1_96(RunTestIpsecEspAll):
2149     """openssl ESNon ARoff AES-CTR-192/SHA1-96 IPSec test"""
2150
2151     def test_ipsec(self):
2152         """openssl ESNon ARoff AES-CTR-192/SHA1-96 IPSec test"""
2153         self.run_test()
2154
2155
2156 class Test_openssl_ESNon_ARoff_AES_CTR_256_SHA1_96(RunTestIpsecEspAll):
2157     """openssl ESNon ARoff AES-CTR-256/SHA1-96 IPSec test"""
2158
2159     def test_ipsec(self):
2160         """openssl ESNon ARoff AES-CTR-256/SHA1-96 IPSec test"""
2161         self.run_test()
2162
2163
2164 class Test_openssl_ESNon_ARoff_AES_NULL_GMAC_128_NONE(RunTestIpsecEspAll):
2165     """openssl ESNon ARoff AES-NULL-GMAC-128/NONE IPSec test"""
2166
2167     def test_ipsec(self):
2168         """openssl ESNon ARoff AES-NULL-GMAC-128/NONE IPSec test"""
2169         self.run_test()
2170
2171
2172 class Test_openssl_ESNon_ARoff_AES_NULL_GMAC_192_NONE(RunTestIpsecEspAll):
2173     """openssl ESNon ARoff AES-NULL-GMAC-192/NONE IPSec test"""
2174
2175     def test_ipsec(self):
2176         """openssl ESNon ARoff AES-NULL-GMAC-192/NONE IPSec test"""
2177         self.run_test()
2178
2179
2180 class Test_openssl_ESNon_ARoff_AES_NULL_GMAC_256_NONE(RunTestIpsecEspAll):
2181     """openssl ESNon ARoff AES-NULL-GMAC-256/NONE IPSec test"""
2182
2183     def test_ipsec(self):
2184         """openssl ESNon ARoff AES-NULL-GMAC-256/NONE IPSec test"""
2185         self.run_test()
2186
2187
2188 class Test_openssl_ESNoff_ARon_AES_GCM_128_NONE(RunTestIpsecEspAll):
2189     """openssl ESNoff ARon AES-GCM-128/NONE IPSec test"""
2190
2191     def test_ipsec(self):
2192         """openssl ESNoff ARon AES-GCM-128/NONE IPSec test"""
2193         self.run_test()
2194
2195
2196 class Test_openssl_ESNoff_ARon_AES_GCM_192_NONE(RunTestIpsecEspAll):
2197     """openssl ESNoff ARon AES-GCM-192/NONE IPSec test"""
2198
2199     def test_ipsec(self):
2200         """openssl ESNoff ARon AES-GCM-192/NONE IPSec test"""
2201         self.run_test()
2202
2203
2204 class Test_openssl_ESNoff_ARon_AES_GCM_256_NONE(RunTestIpsecEspAll):
2205     """openssl ESNoff ARon AES-GCM-256/NONE IPSec test"""
2206
2207     def test_ipsec(self):
2208         """openssl ESNoff ARon AES-GCM-256/NONE IPSec test"""
2209         self.run_test()
2210
2211
2212 class Test_openssl_ESNoff_ARon_AES_CBC_128_MD5_96(RunTestIpsecEspAll):
2213     """openssl ESNoff ARon AES-CBC-128/MD5-96 IPSec test"""
2214
2215     def test_ipsec(self):
2216         """openssl ESNoff ARon AES-CBC-128/MD5-96 IPSec test"""
2217         self.run_test()
2218
2219
2220 class Test_openssl_ESNoff_ARon_AES_CBC_192_SHA1_96(RunTestIpsecEspAll):
2221     """openssl ESNoff ARon AES-CBC-192/SHA1-96 IPSec test"""
2222
2223     def test_ipsec(self):
2224         """openssl ESNoff ARon AES-CBC-192/SHA1-96 IPSec test"""
2225         self.run_test()
2226
2227
2228 class Test_openssl_ESNoff_ARon_AES_CBC_256_SHA1_96(RunTestIpsecEspAll):
2229     """openssl ESNoff ARon AES-CBC-256/SHA1-96 IPSec test"""
2230
2231     def test_ipsec(self):
2232         """openssl ESNoff ARon AES-CBC-256/SHA1-96 IPSec test"""
2233         self.run_test()
2234
2235
2236 class Test_openssl_ESNoff_ARon_3DES_CBC_SHA1_96(RunTestIpsecEspAll):
2237     """openssl ESNoff ARon 3DES-CBC/SHA1-96 IPSec test"""
2238
2239     def test_ipsec(self):
2240         """openssl ESNoff ARon 3DES-CBC/SHA1-96 IPSec test"""
2241         self.run_test()
2242
2243
2244 class Test_openssl_ESNoff_ARon_NONE_SHA1_96(RunTestIpsecEspAll):
2245     """openssl ESNoff ARon NONE/SHA1-96 IPSec test"""
2246
2247     def test_ipsec(self):
2248         """openssl ESNoff ARon NONE/SHA1-96 IPSec test"""
2249         self.run_test()
2250
2251
2252 class Test_openssl_ESNoff_ARon_AES_CTR_128_SHA1_96(RunTestIpsecEspAll):
2253     """openssl ESNoff ARon AES-CTR-128/SHA1-96 IPSec test"""
2254
2255     def test_ipsec(self):
2256         """openssl ESNoff ARon AES-CTR-128/SHA1-96 IPSec test"""
2257         self.run_test()
2258
2259
2260 class Test_openssl_ESNoff_ARon_AES_CTR_192_SHA1_96(RunTestIpsecEspAll):
2261     """openssl ESNoff ARon AES-CTR-192/SHA1-96 IPSec test"""
2262
2263     def test_ipsec(self):
2264         """openssl ESNoff ARon AES-CTR-192/SHA1-96 IPSec test"""
2265         self.run_test()
2266
2267
2268 class Test_openssl_ESNoff_ARon_AES_CTR_256_SHA1_96(RunTestIpsecEspAll):
2269     """openssl ESNoff ARon AES-CTR-256/SHA1-96 IPSec test"""
2270
2271     def test_ipsec(self):
2272         """openssl ESNoff ARon AES-CTR-256/SHA1-96 IPSec test"""
2273         self.run_test()
2274
2275
2276 class Test_openssl_ESNoff_ARon_AES_NULL_GMAC_128_NONE(RunTestIpsecEspAll):
2277     """openssl ESNoff ARon AES-NULL-GMAC-128/NONE IPSec test"""
2278
2279     def test_ipsec(self):
2280         """openssl ESNoff ARon AES-NULL-GMAC-128/NONE IPSec test"""
2281         self.run_test()
2282
2283
2284 class Test_openssl_ESNoff_ARon_AES_NULL_GMAC_192_NONE(RunTestIpsecEspAll):
2285     """openssl ESNoff ARon AES-NULL-GMAC-192/NONE IPSec test"""
2286
2287     def test_ipsec(self):
2288         """openssl ESNoff ARon AES-NULL-GMAC-192/NONE IPSec test"""
2289         self.run_test()
2290
2291
2292 class Test_openssl_ESNoff_ARon_AES_NULL_GMAC_256_NONE(RunTestIpsecEspAll):
2293     """openssl ESNoff ARon AES-NULL-GMAC-256/NONE IPSec test"""
2294
2295     def test_ipsec(self):
2296         """openssl ESNoff ARon AES-NULL-GMAC-256/NONE IPSec test"""
2297         self.run_test()
2298
2299
2300 class Test_openssl_ESNoff_ARoff_AES_GCM_128_NONE(RunTestIpsecEspAll):
2301     """openssl ESNoff ARoff AES-GCM-128/NONE IPSec test"""
2302
2303     def test_ipsec(self):
2304         """openssl ESNoff ARoff AES-GCM-128/NONE IPSec test"""
2305         self.run_test()
2306
2307
2308 class Test_openssl_ESNoff_ARoff_AES_GCM_192_NONE(RunTestIpsecEspAll):
2309     """openssl ESNoff ARoff AES-GCM-192/NONE IPSec test"""
2310
2311     def test_ipsec(self):
2312         """openssl ESNoff ARoff AES-GCM-192/NONE IPSec test"""
2313         self.run_test()
2314
2315
2316 class Test_openssl_ESNoff_ARoff_AES_GCM_256_NONE(RunTestIpsecEspAll):
2317     """openssl ESNoff ARoff AES-GCM-256/NONE IPSec test"""
2318
2319     def test_ipsec(self):
2320         """openssl ESNoff ARoff AES-GCM-256/NONE IPSec test"""
2321         self.run_test()
2322
2323
2324 class Test_openssl_ESNoff_ARoff_AES_CBC_128_MD5_96(RunTestIpsecEspAll):
2325     """openssl ESNoff ARoff AES-CBC-128/MD5-96 IPSec test"""
2326
2327     def test_ipsec(self):
2328         """openssl ESNoff ARoff AES-CBC-128/MD5-96 IPSec test"""
2329         self.run_test()
2330
2331
2332 class Test_openssl_ESNoff_ARoff_AES_CBC_192_SHA1_96(RunTestIpsecEspAll):
2333     """openssl ESNoff ARoff AES-CBC-192/SHA1-96 IPSec test"""
2334
2335     def test_ipsec(self):
2336         """openssl ESNoff ARoff AES-CBC-192/SHA1-96 IPSec test"""
2337         self.run_test()
2338
2339
2340 class Test_openssl_ESNoff_ARoff_AES_CBC_256_SHA1_96(RunTestIpsecEspAll):
2341     """openssl ESNoff ARoff AES-CBC-256/SHA1-96 IPSec test"""
2342
2343     def test_ipsec(self):
2344         """openssl ESNoff ARoff AES-CBC-256/SHA1-96 IPSec test"""
2345         self.run_test()
2346
2347
2348 class Test_openssl_ESNoff_ARoff_3DES_CBC_SHA1_96(RunTestIpsecEspAll):
2349     """openssl ESNoff ARoff 3DES-CBC/SHA1-96 IPSec test"""
2350
2351     def test_ipsec(self):
2352         """openssl ESNoff ARoff 3DES-CBC/SHA1-96 IPSec test"""
2353         self.run_test()
2354
2355
2356 class Test_openssl_ESNoff_ARoff_NONE_SHA1_96(RunTestIpsecEspAll):
2357     """openssl ESNoff ARoff NONE/SHA1-96 IPSec test"""
2358
2359     def test_ipsec(self):
2360         """openssl ESNoff ARoff NONE/SHA1-96 IPSec test"""
2361         self.run_test()
2362
2363
2364 class Test_openssl_ESNoff_ARoff_AES_CTR_128_SHA1_96(RunTestIpsecEspAll):
2365     """openssl ESNoff ARoff AES-CTR-128/SHA1-96 IPSec test"""
2366
2367     def test_ipsec(self):
2368         """openssl ESNoff ARoff AES-CTR-128/SHA1-96 IPSec test"""
2369         self.run_test()
2370
2371
2372 class Test_openssl_ESNoff_ARoff_AES_CTR_192_SHA1_96(RunTestIpsecEspAll):
2373     """openssl ESNoff ARoff AES-CTR-192/SHA1-96 IPSec test"""
2374
2375     def test_ipsec(self):
2376         """openssl ESNoff ARoff AES-CTR-192/SHA1-96 IPSec test"""
2377         self.run_test()
2378
2379
2380 class Test_openssl_ESNoff_ARoff_AES_CTR_256_SHA1_96(RunTestIpsecEspAll):
2381     """openssl ESNoff ARoff AES-CTR-256/SHA1-96 IPSec test"""
2382
2383     def test_ipsec(self):
2384         """openssl ESNoff ARoff AES-CTR-256/SHA1-96 IPSec test"""
2385         self.run_test()
2386
2387
2388 class Test_openssl_ESNoff_ARoff_AES_NULL_GMAC_128_NONE(RunTestIpsecEspAll):
2389     """openssl ESNoff ARoff AES-NULL-GMAC-128/NONE IPSec test"""
2390
2391     def test_ipsec(self):
2392         """openssl ESNoff ARoff AES-NULL-GMAC-128/NONE IPSec test"""
2393         self.run_test()
2394
2395
2396 class Test_openssl_ESNoff_ARoff_AES_NULL_GMAC_192_NONE(RunTestIpsecEspAll):
2397     """openssl ESNoff ARoff AES-NULL-GMAC-192/NONE IPSec test"""
2398
2399     def test_ipsec(self):
2400         """openssl ESNoff ARoff AES-NULL-GMAC-192/NONE IPSec test"""
2401         self.run_test()
2402
2403
2404 class Test_openssl_ESNoff_ARoff_AES_NULL_GMAC_256_NONE(RunTestIpsecEspAll):
2405     """openssl ESNoff ARoff AES-NULL-GMAC-256/NONE IPSec test"""
2406
2407     def test_ipsec(self):
2408         """openssl ESNoff ARoff AES-NULL-GMAC-256/NONE IPSec test"""
2409         self.run_test()
2410
2411
2412 class Test_async_ESNon_ARon_AES_GCM_128_NONE(RunTestIpsecEspAll):
2413     """async ESNon ARon AES-GCM-128/NONE IPSec test"""
2414
2415     def test_ipsec(self):
2416         """async ESNon ARon AES-GCM-128/NONE IPSec test"""
2417         self.run_test()
2418
2419
2420 class Test_async_ESNon_ARon_AES_GCM_192_NONE(RunTestIpsecEspAll):
2421     """async ESNon ARon AES-GCM-192/NONE IPSec test"""
2422
2423     def test_ipsec(self):
2424         """async ESNon ARon AES-GCM-192/NONE IPSec test"""
2425         self.run_test()
2426
2427
2428 class Test_async_ESNon_ARon_AES_GCM_256_NONE(RunTestIpsecEspAll):
2429     """async ESNon ARon AES-GCM-256/NONE IPSec test"""
2430
2431     def test_ipsec(self):
2432         """async ESNon ARon AES-GCM-256/NONE IPSec test"""
2433         self.run_test()
2434
2435
2436 class Test_async_ESNon_ARon_AES_CBC_192_SHA1_96(RunTestIpsecEspAll):
2437     """async ESNon ARon AES-CBC-192/SHA1-96 IPSec test"""
2438
2439     def test_ipsec(self):
2440         """async ESNon ARon AES-CBC-192/SHA1-96 IPSec test"""
2441         self.run_test()
2442
2443
2444 class Test_async_ESNon_ARon_AES_CBC_256_SHA1_96(RunTestIpsecEspAll):
2445     """async ESNon ARon AES-CBC-256/SHA1-96 IPSec test"""
2446
2447     def test_ipsec(self):
2448         """async ESNon ARon AES-CBC-256/SHA1-96 IPSec test"""
2449         self.run_test()
2450
2451
2452 class Test_async_ESNon_ARoff_AES_GCM_128_NONE(RunTestIpsecEspAll):
2453     """async ESNon ARoff AES-GCM-128/NONE IPSec test"""
2454
2455     def test_ipsec(self):
2456         """async ESNon ARoff AES-GCM-128/NONE IPSec test"""
2457         self.run_test()
2458
2459
2460 class Test_async_ESNon_ARoff_AES_GCM_192_NONE(RunTestIpsecEspAll):
2461     """async ESNon ARoff AES-GCM-192/NONE IPSec test"""
2462
2463     def test_ipsec(self):
2464         """async ESNon ARoff AES-GCM-192/NONE IPSec test"""
2465         self.run_test()
2466
2467
2468 class Test_async_ESNon_ARoff_AES_GCM_256_NONE(RunTestIpsecEspAll):
2469     """async ESNon ARoff AES-GCM-256/NONE IPSec test"""
2470
2471     def test_ipsec(self):
2472         """async ESNon ARoff AES-GCM-256/NONE IPSec test"""
2473         self.run_test()
2474
2475
2476 class Test_async_ESNon_ARoff_AES_CBC_192_SHA1_96(RunTestIpsecEspAll):
2477     """async ESNon ARoff AES-CBC-192/SHA1-96 IPSec test"""
2478
2479     def test_ipsec(self):
2480         """async ESNon ARoff AES-CBC-192/SHA1-96 IPSec test"""
2481         self.run_test()
2482
2483
2484 class Test_async_ESNon_ARoff_AES_CBC_256_SHA1_96(RunTestIpsecEspAll):
2485     """async ESNon ARoff AES-CBC-256/SHA1-96 IPSec test"""
2486
2487     def test_ipsec(self):
2488         """async ESNon ARoff AES-CBC-256/SHA1-96 IPSec test"""
2489         self.run_test()
2490
2491
2492 class Test_async_ESNoff_ARon_AES_GCM_128_NONE(RunTestIpsecEspAll):
2493     """async ESNoff ARon AES-GCM-128/NONE IPSec test"""
2494
2495     def test_ipsec(self):
2496         """async ESNoff ARon AES-GCM-128/NONE IPSec test"""
2497         self.run_test()
2498
2499
2500 class Test_async_ESNoff_ARon_AES_GCM_192_NONE(RunTestIpsecEspAll):
2501     """async ESNoff ARon AES-GCM-192/NONE IPSec test"""
2502
2503     def test_ipsec(self):
2504         """async ESNoff ARon AES-GCM-192/NONE IPSec test"""
2505         self.run_test()
2506
2507
2508 class Test_async_ESNoff_ARon_AES_GCM_256_NONE(RunTestIpsecEspAll):
2509     """async ESNoff ARon AES-GCM-256/NONE IPSec test"""
2510
2511     def test_ipsec(self):
2512         """async ESNoff ARon AES-GCM-256/NONE IPSec test"""
2513         self.run_test()
2514
2515
2516 class Test_async_ESNoff_ARon_AES_CBC_192_SHA1_96(RunTestIpsecEspAll):
2517     """async ESNoff ARon AES-CBC-192/SHA1-96 IPSec test"""
2518
2519     def test_ipsec(self):
2520         """async ESNoff ARon AES-CBC-192/SHA1-96 IPSec test"""
2521         self.run_test()
2522
2523
2524 class Test_async_ESNoff_ARon_AES_CBC_256_SHA1_96(RunTestIpsecEspAll):
2525     """async ESNoff ARon AES-CBC-256/SHA1-96 IPSec test"""
2526
2527     def test_ipsec(self):
2528         """async ESNoff ARon AES-CBC-256/SHA1-96 IPSec test"""
2529         self.run_test()
2530
2531
2532 class Test_async_ESNoff_ARoff_AES_GCM_128_NONE(RunTestIpsecEspAll):
2533     """async ESNoff ARoff AES-GCM-128/NONE IPSec test"""
2534
2535     def test_ipsec(self):
2536         """async ESNoff ARoff AES-GCM-128/NONE IPSec test"""
2537         self.run_test()
2538
2539
2540 class Test_async_ESNoff_ARoff_AES_GCM_192_NONE(RunTestIpsecEspAll):
2541     """async ESNoff ARoff AES-GCM-192/NONE IPSec test"""
2542
2543     def test_ipsec(self):
2544         """async ESNoff ARoff AES-GCM-192/NONE IPSec test"""
2545         self.run_test()
2546
2547
2548 class Test_async_ESNoff_ARoff_AES_GCM_256_NONE(RunTestIpsecEspAll):
2549     """async ESNoff ARoff AES-GCM-256/NONE IPSec test"""
2550
2551     def test_ipsec(self):
2552         """async ESNoff ARoff AES-GCM-256/NONE IPSec test"""
2553         self.run_test()
2554
2555
2556 class Test_async_ESNoff_ARoff_AES_CBC_192_SHA1_96(RunTestIpsecEspAll):
2557     """async ESNoff ARoff AES-CBC-192/SHA1-96 IPSec test"""
2558
2559     def test_ipsec(self):
2560         """async ESNoff ARoff AES-CBC-192/SHA1-96 IPSec test"""
2561         self.run_test()
2562
2563
2564 class Test_async_ESNoff_ARoff_AES_CBC_256_SHA1_96(RunTestIpsecEspAll):
2565     """async ESNoff ARoff AES-CBC-256/SHA1-96 IPSec test"""
2566
2567     def test_ipsec(self):
2568         """async ESNoff ARoff AES-CBC-256/SHA1-96 IPSec test"""
2569         self.run_test()