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