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