summaryrefslogtreecommitdiff
path: root/testdata
diff options
context:
space:
mode:
authorzhaokun <[email protected]>2023-11-08 13:44:25 +0800
committerzhaokun <[email protected]>2023-11-08 13:44:25 +0800
commit4e683d5703daf29810097b9961b5ce02420202ea (patch)
tree4ad01d46a7417a14a8c8a9045e95d0387cf24388 /testdata
parent44ed57c3f0b5f83e2836aadeea34003f08867b08 (diff)
updatemain
Diffstat (limited to 'testdata')
-rw-r--r--testdata/demo1_data.json15
-rw-r--r--testdata/json_data.json31
-rw-r--r--testdata/ui_data/__init__.py0
-rw-r--r--testdata/ui_data/profiles_data/DoS_detection_profiles.json16
-rw-r--r--testdata/ui_data/profiles_data/__init__.py0
-rw-r--r--testdata/ui_data/profiles_data/dns_records.json184
-rw-r--r--testdata/ui_data/profiles_data/hijack_files.json49
-rw-r--r--testdata/ui_data/profiles_data/insert_scripts.json21
-rw-r--r--testdata/ui_data/profiles_data/response_pages.json17
-rw-r--r--testdata/ui_data/profiles_data/shaping_profiles.json69
-rw-r--r--testdata/ui_data/profiles_data/ssl_decryption_keyrings.json63
-rw-r--r--testdata/ui_data/profiles_data/ssl_decryption_profiles.json64
-rw-r--r--testdata/ui_data/profiles_data/traffic_mirroring_profiles.json44
-rw-r--r--testdata/ui_file/__init__.py0
-rw-r--r--testdata/ui_file/profiles/__init__.py0
-rw-r--r--testdata/ui_file/profiles/hijack_files/__init__.py0
-rw-r--r--testdata/ui_file/profiles/hijack_files/test_apk_1.apkbin0 -> 178037 bytes
-rw-r--r--testdata/ui_file/profiles/hijack_files/test_exe_1.exebin0 -> 76664 bytes
-rw-r--r--testdata/ui_file/profiles/hijack_files/test_gif_1.gifbin0 -> 103503 bytes
-rw-r--r--testdata/ui_file/profiles/hijack_files/test_gif_2.gifbin0 -> 511062 bytes
-rw-r--r--testdata/ui_file/profiles/hijack_files/test_html_1.html185
-rw-r--r--testdata/ui_file/profiles/hijack_files/test_jpeg_1.jpegbin0 -> 178037 bytes
-rw-r--r--testdata/ui_file/profiles/hijack_files/test_png_1.pngbin0 -> 59948 bytes
-rw-r--r--testdata/ui_file/profiles/hijack_files/test_svg_1.svgbin0 -> 76664 bytes
-rw-r--r--testdata/ui_file/profiles/insert_scripts/__init__.py0
-rw-r--r--testdata/ui_file/profiles/insert_scripts/test_css_1.css27
-rw-r--r--testdata/ui_file/profiles/insert_scripts/test_css_2.css3
-rw-r--r--testdata/ui_file/profiles/insert_scripts/test_js_1.js1
-rw-r--r--testdata/ui_file/profiles/insert_scripts/test_js_2.js1
-rw-r--r--testdata/ui_file/profiles/response_pages/__init__.py0
-rw-r--r--testdata/ui_file/profiles/response_pages/testa.html56
-rw-r--r--testdata/ui_file/profiles/response_pages/testb.html56
-rw-r--r--testdata/ui_file/profiles/response_pages/testc.html56
-rw-r--r--testdata/ui_file/profiles/ssl_decryption_keyrings/__init__.py0
-rw-r--r--testdata/ui_file/profiles/ssl_decryption_keyrings/test_end_cert_caentitytest.chain.pem93
-rw-r--r--testdata/ui_file/profiles/ssl_decryption_keyrings/test_end_keycaentitytest.key27
-rw-r--r--testdata/ui_file/profiles/ssl_decryption_keyrings/test_mid_cert_camiddletest.chain.pem100
-rw-r--r--testdata/ui_file/profiles/ssl_decryption_keyrings/test_mid_key_camiddletest.key27
-rw-r--r--testdata/ui_file/profiles/ssl_decryption_keyrings/test_root_cert_catest.cer21
-rw-r--r--testdata/ui_file/profiles/ssl_decryption_keyrings/test_root_key_catest.key27
40 files changed, 1253 insertions, 0 deletions
diff --git a/testdata/demo1_data.json b/testdata/demo1_data.json
new file mode 100644
index 00000000..0dfde25f
--- /dev/null
+++ b/testdata/demo1_data.json
@@ -0,0 +1,15 @@
+{
+ "item":
+ [
+ {
+ "a": 1,
+ "b": 2,
+ "expect": 3
+ },
+ {
+ "a": 3,
+ "b": 4,
+ "expect": 7
+ }
+ ]
+}
diff --git a/testdata/json_data.json b/testdata/json_data.json
new file mode 100644
index 00000000..ffdd918f
--- /dev/null
+++ b/testdata/json_data.json
@@ -0,0 +1,31 @@
+{
+ "item":
+ [
+ {
+ "request":
+ {
+ "url": "http://192.168.44.72/v1/user/login",
+ "body":
+ {
+ "id":"111",
+ "username": "zcw",
+ "password": "Gg1Etyh7fs1y/v/K2XOJDg=="
+ }
+ },
+ "response":"true"
+ },
+ {
+ "request":
+ {
+ "url": "http://192.168.44.72/v1/user/login",
+ "body":
+ {
+ "id":"222",
+ "username": "zcw3",
+ "password": "Gg1Etyh7fs1y/v/K2XOJDg=="
+ }
+ },
+ "response":"true"
+ }
+ ]
+} \ No newline at end of file
diff --git a/testdata/ui_data/__init__.py b/testdata/ui_data/__init__.py
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/testdata/ui_data/__init__.py
diff --git a/testdata/ui_data/profiles_data/DoS_detection_profiles.json b/testdata/ui_data/profiles_data/DoS_detection_profiles.json
new file mode 100644
index 00000000..bc969470
--- /dev/null
+++ b/testdata/ui_data/profiles_data/DoS_detection_profiles.json
@@ -0,0 +1,16 @@
+{
+ "comment": "shaping_profiles参数注解:item中为参数驱动测试,model可选为modify。'->'为创建修改数据分隔符,前为创建数据,后为修改数据。unit分隔符后为空则只创建数据,例如’bps->‘、'543->'。unit分隔符后非空,修改数据。544->表示不修改、654->456表示修改前后数据。",
+ "item":
+ [
+ {
+ "ids": "创建Generic_bps用例",
+ "model": "create",
+ "attack_type": "DNS Flood->",
+ "target_IPs": [
+ "1.1.1.1->"
+ ],
+ "packet_second": "0->",
+ "bits_second": "0->"
+ }
+ ]
+}
diff --git a/testdata/ui_data/profiles_data/__init__.py b/testdata/ui_data/profiles_data/__init__.py
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/testdata/ui_data/profiles_data/__init__.py
diff --git a/testdata/ui_data/profiles_data/dns_records.json b/testdata/ui_data/profiles_data/dns_records.json
new file mode 100644
index 00000000..801ac7b7
--- /dev/null
+++ b/testdata/ui_data/profiles_data/dns_records.json
@@ -0,0 +1,184 @@
+{
+ "comment": "dns_records参数注解:item中为参数驱动测试,model可选为create、modify。type可选为A、AAAA、CNAME 。如果model=modify,例如:modify.'12.12.12.12->34.45.67.54'表示修改前后数据,'->'为前后数据分隔符。在修改中,分隔符前为空表示新增数据。分隔符后为空表示删除数据。其它同理。",
+ "item":
+ [
+ {
+ "ids": "创建单个类型A用例",
+ "model": "create",
+ "type": "A",
+ "values":
+ [
+ "45.23.122.223"
+ ],
+ "description": "test-description45.23.122.223"
+ },
+ {
+ "ids": "创建单个类型A再修改为A用例",
+ "model": "modify",
+ "type": "A->A",
+ "values":
+ [
+ "145.223.172.243->32.124.176.43"
+ ],
+ "description": "test-description32.124.176.43"
+ },
+ {
+ "ids": "创建多个类型A用例",
+ "model": "create",
+ "type": "A",
+ "values":
+ [
+ "2.2.2.2",
+ "3.3.3.3",
+ "4.4.4.4"
+ ],
+ "description": "test-description"
+ },
+ {
+ "ids": "创建多个类型A,再修改为多个类型A用例",
+ "model": "modify",
+ "type": "A->A",
+ "values":
+ [
+ "12.12.12.12->34.45.67.54",
+ "13.13.31.13->",
+ "->65.123.34.56",
+ "14.14.14.41->56.43.46.64",
+ "->165.123.134.56"
+ ],
+ "description": "test-description->tesst modify desc"
+ },
+ {
+ "ids": "创建单个类型AAAA用例",
+ "model": "create",
+ "type": "AAAA",
+ "values":
+ [
+ "32:12aa::34cd"
+ ],
+ "description": "test-32:12aa::34cd"
+ },
+ {
+ "ids": "创建单个类型AAAA,再修改为AAAA用例",
+ "model": "modify",
+ "type": "AAAA->AAAA",
+ "values":
+ [
+ "32:12aa::34cd->1231:3452:5643::aa"
+ ],
+ "description": "test-1231:3452:5643::aa"
+ },
+ {
+ "ids": "创建多个类型AAAA用例",
+ "model": "create",
+ "type": "AAAA",
+ "values":
+ [
+ "32:12aa::34cd",
+ "4265:5688:3345::4325:4456",
+ "1234::3456:53aa"
+ ],
+ "description": "test-sa14265:5688:3345::4325:4456"
+ },
+ {
+
+ "ids": "创建多类型AAAA,再修改为AAAA用例",
+ "model": "modify",
+ "type": "AAAA->AAAA",
+ "values":
+ [
+ "3322:12aa::34cd->1231:3452:5643::aa",
+ "3252:123a::347d->",
+ "3352:127a::844d->1231:3752:9643::86aa",
+ "->1431:7652:5333::64aa"
+ ],
+ "description": "test-ssa1231:3752:9643::86aa"
+ },
+ {
+ "ids": "创建单个类型CNAME用例",
+ "model": "create",
+ "type": "CNAME",
+ "values":
+ [
+ "test.sds.asd.com"
+ ],
+ "description": "test-test.sds.asd.com"
+ },
+ {
+ "ids": "创建单个类型CNAME,再修改为CNAME用例",
+ "model": "modify",
+ "type": "CNAME->CNAME",
+ "values":
+ [
+ "test.sttds.adssd.com->test.sda.ddss.gec.cn"
+ ],
+ "description": "test-test.sda.ddss.gec.cn"
+ },
+ {
+ "ids": "创建多个类型CNAME用例",
+ "model": "create",
+ "type": "CNAME",
+ "values":
+ [
+ "test.sttds.adssd.com",
+ "test.sttsdssds.addfeessd.com",
+ "test.sttee2wads.adsssssd.com"
+ ],
+ "description": "test-sa1test.sttee2wads.adsssssd.com"
+ },
+ {
+ "ids": "创建多类型CNAME,再修改为CNAME用例",
+ "model": "modify",
+ "type": "CNAME->CNAME",
+ "values":
+ [
+ "->test.sddsg.sdsssdd.fco.cn",
+ "test.ssdsdssds.addsd.com->test.sdgoc.sdwa.caom.com",
+ "->test.sddsg.sdsd.fcfgo.cn",
+ "test.sassdo.caom.com->",
+ "test.sdoas.comada.com->test.sodmao.asdo.com",
+ "->test.sddsg.sdsd.fco.cn"
+ ],
+ "description": "test-est.sddsg.sdsd.fco.cn"
+ },
+ {
+ "ids": "创建多类型A,再修改为CNAME用例",
+ "model": "modify",
+ "type": "A->CNAME",
+ "values":
+ [
+ "112.12.32.12->test.sdgoc.sdwa.caom.com",
+ "53.23.234.21->",
+ "12.12.33.45->test.sodmao.asdo.com",
+ "->test.sddsg.sdsd.fco.cn"
+ ],
+ "description": "12.12.33.45->test.sodmao.asdo.com"
+ },
+ {
+ "ids": "创建多类型CNAME,再修改为CNAME用例",
+ "model": "modify",
+ "type": "AAAA->CNAME",
+ "values":
+ [
+ "42::4532:2234->test.sdgoc.sdwa.caom.com",
+ "5342:5322:3234::3213->",
+ "aa11:3214::4521->test.sodmao.asdo.com",
+ "->test.sddsg.sdsd.fco.cn"
+ ],
+ "description": "test-aa11:3214::4521->test.sodmao.asdo.com"
+ },
+ {
+ "ids": "创建多类型CNAME,再修改为A用例",
+ "model": "modify",
+ "type": "CNAME->A",
+ "values":
+ [
+ "test.ssdsdssds.addsd.com->23.42.234.12",
+ "test.sassdo.caom.com->",
+ "test.sdoas.comada.com->53.65.156.176",
+ "->12.45.168.123"
+ ],
+ "description": "test-est.test.sdoas.comada.com->53.65.156.176"
+ }
+ ]
+}
diff --git a/testdata/ui_data/profiles_data/hijack_files.json b/testdata/ui_data/profiles_data/hijack_files.json
new file mode 100644
index 00000000..d65f9b0c
--- /dev/null
+++ b/testdata/ui_data/profiles_data/hijack_files.json
@@ -0,0 +1,49 @@
+{
+ "comment": "标识符'->'参数注解:model可选参数create、modify。标识符'->'为前后数据分隔符,分隔符前为创建数据,后为修改数据。例如:16->7:表示创建及修改;18->不修改:表示只创建不修改;18->删除:表示删除;->18:表示修改为新增(创建时不输入)",
+ "comment2": "1.file:文件名称。2.download_name in (Mirror Server Response, 或者其它输入内容)。3.file_type in (gif,jpeg,png,svg+xml,exe,apk,html)",
+ "item":
+ [
+ {
+ "ids": "创建gif类型hijack_files数据",
+ "model": "create",
+ "file": "test_gif_1.gif->",
+ "download_name": "Mirror Server Response->",
+ "file_type": "gif->"
+ },
+ {
+ "ids": "创建gif类型hijack_files数据再修改数据gif数据",
+ "model": "modify",
+ "file": "test_gif_1.gif->test_gif_2.gif",
+ "download_name": "test_gif_1.gif->Mirror Server Response",
+ "file_type": "gif->不修改"
+ },
+ {
+ "ids": "创建jpeg类型hijack_files数据",
+ "model": "create",
+ "file": "test_jpeg_1.jpeg->",
+ "download_name": "test_jpeg_1.jpeg->",
+ "file_type": "jpeg->"
+ },
+ {
+ "ids": "创建png类型hijack_files数据再修改数据svg+xml数据",
+ "model": "modify",
+ "file": "test_png_1.png->test_svg_1.svg",
+ "download_name": "test_png_1.gif->name_test_svg_1.svg",
+ "file_type": "png->svg+xml"
+ },
+ {
+ "ids": "创建exe类型hijack_files数据",
+ "model": "create",
+ "file": "test_exe_1.exe->",
+ "download_name": "test_name_exe_1.exe->",
+ "file_type": "exe->"
+ },
+ {
+ "ids": "创建apk类型hijack_files数据再修改数据html数据",
+ "model": "modify",
+ "file": "test_apk_1.apk->test_html_1.html",
+ "download_name": "Mirror Server Response->不修改",
+ "file_type": "apk->html"
+ }
+ ]
+}
diff --git a/testdata/ui_data/profiles_data/insert_scripts.json b/testdata/ui_data/profiles_data/insert_scripts.json
new file mode 100644
index 00000000..fab53d86
--- /dev/null
+++ b/testdata/ui_data/profiles_data/insert_scripts.json
@@ -0,0 +1,21 @@
+{
+ "comment": "标识符'->'参数注解:model可选参数create、modify。标识符'->'为前后数据分隔符,分隔符前为创建数据,后为修改数据。例如:16->7:表示创建及修改;18->不修改:表示只创建不修改;18->删除:表示删除;->18:表示修改为新增(创建时不输入)",
+ "comment2": "1.script:文件名称。2.script_type in (js, css)。3.insert_position in (After Page Load, Before Page Load)",
+ "item":
+ [
+ {
+ "ids": "创建js类型insert_files数据11",
+ "model": "create",
+ "script": "test_js_1.js->",
+ "script_type": "js->",
+ "insert_position": "After Page Load->"
+ },
+ {
+ "ids": "创建css类型css数据22",
+ "model": "create",
+ "script": "test_css_1.css->",
+ "script_type": "css->",
+ "insert_position": "->"
+ }
+ ]
+}
diff --git a/testdata/ui_data/profiles_data/response_pages.json b/testdata/ui_data/profiles_data/response_pages.json
new file mode 100644
index 00000000..606a0f17
--- /dev/null
+++ b/testdata/ui_data/profiles_data/response_pages.json
@@ -0,0 +1,17 @@
+{
+ "comment": "Resposne_pages参数注解,model可选参数create、modify。file中'->'为前后数据分隔符,分隔符前为创建数据,后为修改数据。例如:testa.html->表示只创建数据、testa.html->testb.html表示创建和修改数据。",
+
+ "item":
+ [
+ {
+ "ids": "创建respose_page文件11",
+ "model": "create",
+ "file": "testa.html->"
+ },
+ {
+ "ids": "创建respose_page文件再修改",
+ "model": "modify",
+ "file": "testa.html->testb.html"
+ }
+ ]
+}
diff --git a/testdata/ui_data/profiles_data/shaping_profiles.json b/testdata/ui_data/profiles_data/shaping_profiles.json
new file mode 100644
index 00000000..d94dc3fa
--- /dev/null
+++ b/testdata/ui_data/profiles_data/shaping_profiles.json
@@ -0,0 +1,69 @@
+{
+ "comment": "shaping_profiles参数注解:item中为参数驱动测试,model可选为modify。'->'为创建修改数据分隔符,前为创建数据,后为修改数据。unit分隔符后为空则只创建数据,例如’bps->‘、'543->'。unit分隔符后非空,修改数据。544->表示不修改、654->456表示修改前后数据。",
+ "item":
+ [
+ {
+ "ids": "创建Generic_bps用例",
+ "model": "create",
+ "type": "Generic",
+ "argument": "",
+ "unit": "bps->",
+ "incoming": "0->",
+ "outgoing": "0->"
+ },
+ {
+ "ids": "创建Generic_bps用例",
+ "model": "create",
+ "type": "Generic",
+ "argument": "",
+ "unit": "bps->",
+ "incoming": "876->",
+ "outgoing": "543->"
+ },
+ {
+ "ids": "创建Fair_Share_Kbps用例",
+ "model": "create",
+ "type": "Fair Share",
+ "argument": "Max Min Host Fairness",
+ "unit": "Kbps->",
+ "incoming": "345->",
+ "outgoing": "678->"
+ },
+ {
+ "ids": "创建Split_By_Mbps用例",
+ "model": "create",
+ "type": "Split By",
+ "argument": "Local Host",
+ "unit": "Mbps->",
+ "incoming": "678->",
+ "outgoing": "565->"
+ },
+ {
+ "ids": "创建Generic_Gbps再修改为bps带宽",
+ "model": "modify",
+ "type": "Generic",
+ "argument": "",
+ "unit": "Gbps->bps",
+ "incoming": "500->876",
+ "outgoing": "800->543"
+ },
+ {
+ "ids": "创建Fair_Share_bps再修改为Gps带宽",
+ "model": "modify",
+ "type": "Fair Share",
+ "argument": "Max Min Host Fairness",
+ "unit": "bps->Gbps",
+ "incoming": "670->856",
+ "outgoing": "550->543"
+ },
+ {
+ "ids": "创建Split_By_Mps再修改为Mps带宽",
+ "model": "modify",
+ "type": "Split By",
+ "argument": "Local Host",
+ "unit": "Mbps->Mbps",
+ "incoming": "640->576",
+ "outgoing": "250->533"
+ }
+ ]
+}
diff --git a/testdata/ui_data/profiles_data/ssl_decryption_keyrings.json b/testdata/ui_data/profiles_data/ssl_decryption_keyrings.json
new file mode 100644
index 00000000..01623df2
--- /dev/null
+++ b/testdata/ui_data/profiles_data/ssl_decryption_keyrings.json
@@ -0,0 +1,63 @@
+{
+ "comment": "标识符'->'参数注解:model可选参数create、modify。标识符'->'为前后数据分隔符,分隔符前为创建数据,后为修改数据。例如:16->7:表示创建及修改;18->不修改:表示只创建不修改",
+ "comment2": "可选值参考certificate和private_key为文件名称。private_key=‘HSM-***’表示选择HSM格式,private_key=‘PKF-***’上次key文件名称。reissue_expiry_hours=‘MSC’表示默认时间,reissue_expiry_hours=‘C-***表示自定义时间’",
+ "comnent3": "可选值参考:type in (Root-Certificate,Intermediate-Certificate,End-entity)。 public_key_algorithm in (RSA-1024,RSA-2048,SECP-256r1,SECP-384r1)。 include_root in (on,off)",
+ "item":
+ [
+ {
+ "ids": "创建root_根证书PKA设置为RSA-20481",
+ "model": "create",
+ "certificate": "test_root_cert_catest.cer->",
+ "private_key": "PKF-test_root_key_catest.key->",
+ "reissue_expiry_hours": "MSC->",
+ "type": "Root-Certificate->",
+ "public_key_algorithm": "RSA-2048->",
+ "certificate_revocation_list": "http://www.example.ABCD.com->",
+ "include_root": "off->"
+ },
+ {
+ "ids": "创建root_根证书PKA设置为RSA-2048只修改PKA为SECP-384r1",
+ "model": "modify",
+ "certificate": "test_root_cert_catest.cer->不修改",
+ "private_key": "PKF-test_root_key_catest.key->不修改",
+ "reissue_expiry_hours": "MSC->不修改",
+ "type": "Root-Certificate->不修改",
+ "public_key_algorithm": "RSA-2048->SECP-384r1",
+ "certificate_revocation_list": "http://www.example.ABCD.com->不修改",
+ "include_root": "on->off"
+ },
+ {
+ "ids": "创建root_根证书PKA设置为RSA-2048再修改为中间证书PKA设置为RSA-10243",
+ "model": "modify",
+ "certificate": "test_root_cert_catest.cer->test_mid_cert_camiddletest.chain.pem",
+ "private_key": "PKF-test_root_key_catest.key->PKF-test_mid_key_camiddletest.key",
+ "reissue_expiry_hours": "MSC->C-120",
+ "type": "Root-Certificate->Intermediate-Certificate",
+ "public_key_algorithm": "RSA-2048->RSA-1024",
+ "certificate_revocation_list": "->不修改",
+ "include_root": "on->off"
+ },
+ {
+ "ids": "创建mid_中间书PKA设置为SECP-256r1再修改为实体证书PKA设置为SECP-384r1",
+ "model": "modify",
+ "certificate": "test_mid_cert_camiddletest.chain.pem->test_end_cert_caentitytest.chain.pem",
+ "private_key": "PKF-test_mid_key_camiddletest.key->PKF-test_end_keycaentitytest.key",
+ "reissue_expiry_hours": "C400->C-320",
+ "type": "Intermediate-Certificate->End-entity",
+ "public_key_algorithm": "SECP-256r1->SECP-384r1",
+ "certificate_revocation_list": "http://www.example.ABCD.cn.cmo->http://www.TESTAA.abcd.cn.cmo",
+ "include_root": "on->off"
+ },
+ {
+ "ids": "创建mid_中间证书PKA设置为SECP-256r1私钥为HSM",
+ "model": "create",
+ "certificate": "test_mid_cert_camiddletest.chain.pem->",
+ "private_key": "HSM-453->",
+ "reissue_expiry_hours": "MSC->",
+ "type": "Intermediate-Certificate->",
+ "public_key_algorithm": "RSA-2048->",
+ "certificate_revocation_list": "http://www.www.ww->",
+ "include_root": "off->"
+ }
+ ]
+}
diff --git a/testdata/ui_data/profiles_data/ssl_decryption_profiles.json b/testdata/ui_data/profiles_data/ssl_decryption_profiles.json
new file mode 100644
index 00000000..a8ab38ab
--- /dev/null
+++ b/testdata/ui_data/profiles_data/ssl_decryption_profiles.json
@@ -0,0 +1,64 @@
+{
+ "comment": "标识符'->'参数注解:model可选参数create、modify。标识符'->'为前后数据分隔符,分隔符前为创建数据,后为修改数据。例如:16->7:表示创建及修改;18->不修改:表示只创建不修改;18->删除:表示删除;->18:表示修改为新增(创建时不输入)",
+ "comment2": "开关的取值为:1.on、off。2.fail_action in (Fail-close,Pass-through)。3.min_client_version、max_client_version in (SSLv3.0,TLSv1.0,TLSv1.1,TLSv1.2,TLSv1.3)",
+ "item":
+ [
+ {
+ "ids": "创建ssl_decryption_profiles_fail_action_on11",
+ "model": "create",
+ "common_name":"on->",
+ "issuer":"off->",
+ "self_signed":"off->",
+ "expiry_date":"on->",
+ "fail_action":"Pass-through->",
+ "ev_certificate":"on->",
+ "certificate_transparency":"on->",
+ "mutual_authentication":"on->",
+ "protocol_errors":"on->",
+ "certificate_pinning":"on->",
+ "certificate_not_installed":"on->",
+ "mirror_client_versions":"off->",
+ "min_client_version":"TLSv1.0->",
+ "max_client_version":"TLSv1.2->",
+ "allow_HTTP2":"off->"
+ },
+ {
+ "ids": "创建ssl_decryption_profiles_fail_action_on再修改common_name_off22",
+ "model": "modify",
+ "common_name":"on->off",
+ "issuer":"on-off>",
+ "self_signed":"on->不修改",
+ "expiry_date":"on->不修改",
+ "fail_action":"Pass-through->不修改",
+ "ev_certificate":"on->off",
+ "certificate_transparency":"on->不修改",
+ "mutual_authentication":"on->不修改",
+ "protocol_errors":"on->不修改",
+ "certificate_pinning":"on->off",
+ "certificate_not_installed":"on->",
+ "mirror_client_versions":"off->off",
+ "min_client_version":"TLSv1.2->不修改",
+ "max_client_version":"TLSv1.3->不修改",
+ "allow_HTTP2":"off->on"
+ },
+ {
+ "ids": "创建ssl_decryption_profiles_fail_action_on33",
+ "model": "create",
+ "common_name":"on->",
+ "issuer":"on->",
+ "self_signed":"on->",
+ "expiry_date":"on->",
+ "fail_action":"Pass-through->",
+ "ev_certificate":"off->",
+ "certificate_transparency":"off->",
+ "mutual_authentication":"on->",
+ "protocol_errors":"on->",
+ "certificate_pinning":"on->",
+ "certificate_not_installed":"off->",
+ "mirror_client_versions":"on->",
+ "min_client_version":"TLSv1.0->",
+ "max_client_version":"TLSv1.2->",
+ "allow_HTTP2":"on->"
+ }
+ ]
+}
diff --git a/testdata/ui_data/profiles_data/traffic_mirroring_profiles.json b/testdata/ui_data/profiles_data/traffic_mirroring_profiles.json
new file mode 100644
index 00000000..934c3a04
--- /dev/null
+++ b/testdata/ui_data/profiles_data/traffic_mirroring_profiles.json
@@ -0,0 +1,44 @@
+{
+ "comment": "traffic mirroring profiles参数注解,model可选参数create、modify。vlan_id为列表参数,标识符'->'为前后数据分隔符,分隔符前为创建数据,后为修改数据。例如:16->7:表示创建及修改;18->:表示只创建不修改;->23:表示修改中新增",
+
+ "item":
+ [
+ {
+ "ids": "创建traffic_mirroring_profiles_多vlanid",
+ "model": "create",
+ "vlan_id":
+ [
+ "6->",
+ "58->"
+ ]
+ },
+ {
+ "ids": "创建vlanid再修改",
+ "model": "modify",
+ "vlan_id":
+ [
+ "16->7",
+ "18->",
+ "->23",
+ "25->45",
+ "55->55"
+ ]
+ },
+ {
+ "ids": "创建一个vlanid",
+ "model": "create",
+ "vlan_id":
+ [
+ "35->"
+ ]
+ },
+ {
+ "ids": "创建一个vlanid再修改",
+ "model": "create",
+ "vlan_id":
+ [
+ "45->25"
+ ]
+ }
+ ]
+}
diff --git a/testdata/ui_file/__init__.py b/testdata/ui_file/__init__.py
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/testdata/ui_file/__init__.py
diff --git a/testdata/ui_file/profiles/__init__.py b/testdata/ui_file/profiles/__init__.py
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/testdata/ui_file/profiles/__init__.py
diff --git a/testdata/ui_file/profiles/hijack_files/__init__.py b/testdata/ui_file/profiles/hijack_files/__init__.py
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/testdata/ui_file/profiles/hijack_files/__init__.py
diff --git a/testdata/ui_file/profiles/hijack_files/test_apk_1.apk b/testdata/ui_file/profiles/hijack_files/test_apk_1.apk
new file mode 100644
index 00000000..c96c8ce8
--- /dev/null
+++ b/testdata/ui_file/profiles/hijack_files/test_apk_1.apk
Binary files differ
diff --git a/testdata/ui_file/profiles/hijack_files/test_exe_1.exe b/testdata/ui_file/profiles/hijack_files/test_exe_1.exe
new file mode 100644
index 00000000..e33f7250
--- /dev/null
+++ b/testdata/ui_file/profiles/hijack_files/test_exe_1.exe
Binary files differ
diff --git a/testdata/ui_file/profiles/hijack_files/test_gif_1.gif b/testdata/ui_file/profiles/hijack_files/test_gif_1.gif
new file mode 100644
index 00000000..8a8d19e6
--- /dev/null
+++ b/testdata/ui_file/profiles/hijack_files/test_gif_1.gif
Binary files differ
diff --git a/testdata/ui_file/profiles/hijack_files/test_gif_2.gif b/testdata/ui_file/profiles/hijack_files/test_gif_2.gif
new file mode 100644
index 00000000..042ac791
--- /dev/null
+++ b/testdata/ui_file/profiles/hijack_files/test_gif_2.gif
Binary files differ
diff --git a/testdata/ui_file/profiles/hijack_files/test_html_1.html b/testdata/ui_file/profiles/hijack_files/test_html_1.html
new file mode 100644
index 00000000..9cee60cd
--- /dev/null
+++ b/testdata/ui_file/profiles/hijack_files/test_html_1.html
@@ -0,0 +1,185 @@
+<html>
+<head>
+ <title>新建网页</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+ <meta name="description" content=""/>
+ <meta name="keywords" content=""/>
+
+ <script type="text/javascript">
+ //① 绘制地图
+ function Map() {
+ //私有成员(不会随便发生变化)
+ var w = 800;
+ var h = 400;
+
+ //成员方法,绘制地图
+ this.showmap = function () {
+ //创建div、设置css样式、追加给body
+ var tu = document.createElement('div');
+
+ tu.style.width = w + "px";
+ tu.style.height = h + "px";
+ tu.style.backgroundImage = "url(./12.jpg)";
+
+ document.body.appendChild(tu);
+ }
+ }
+
+ //② 绘制食物
+ function Food() {
+ var len = 20;
+ //把食物(权值)坐标声明为公开的,以便在外部访问
+ this.xFood = 0;
+ this.yFood = 0;
+ this.piece = null; //页面上唯一的食物对象
+ //绘制
+ this.showfood = function () {
+ //创建div、设置css样式、追加给body
+ if (this.piece === null) {
+ this.piece = document.createElement('div');
+ this.piece.style.width = this.piece.style.height = len + "px";
+ this.piece.style.backgroundColor = "green";
+ this.piece.style.position = "absolute";
+
+ document.body.appendChild(this.piece);
+ }
+ //食物设置绝对定位(position/left/top)
+ //食物位置“随机”摆放
+ //移动步进值:20px
+ //食物“权值”坐标: X轴(0-39) Y轴(0-19)
+ //食物真实坐标:权值坐标 * 步进值
+ this.xFood = Math.floor(Math.random() * 40); //0-39的随机数
+ this.yFood = Math.floor(Math.random() * 20); //0-19的随机数
+
+ this.piece.style.left = this.xFood * len + "px";
+ this.piece.style.top = this.yFood * len + "px";
+
+ }
+ }
+
+ //③ 小蛇
+ function Snake() {
+ var len = 20;
+ this.redirect = "right"; //默认向右边移动
+ //后期snakebody要变化,因此声明为公开的(每个蛇节:[x坐标,y坐标,颜色,蛇节对象])
+ this.snakebody = [[0, 1, 'green', null], [1, 1, 'green', null], [2, 1, 'green', null], [3, 1, 'red', null]];
+ //a.绘制小蛇
+ this.showsnake = function () {
+ //遍历小蛇的各个蛇节,并依次创建即可
+ for (var i = 0; i < this.snakebody.length; i++) {
+ //this.snakebody[i]//代表每个蛇节
+ //创建蛇节div
+ if (this.snakebody[i][3] === null) {//判断没有创建对应的蛇节
+ this.snakebody[i][3] = document.createElement('div');
+ //设置css样式(宽度、高度、颜色)
+ this.snakebody[i][3].style.width = this.snakebody[i][3].style.height = len + "px";
+ this.snakebody[i][3].style.backgroundColor = this.snakebody[i][2];
+ //绝对定位及位置
+ this.snakebody[i][3].style.position = "absolute";
+ //把蛇节追加给body
+ document.body.appendChild(this.snakebody[i][3]);
+ }
+ this.snakebody[i][3].style.left = this.snakebody[i][0] * len + "px";
+ this.snakebody[i][3].style.top = this.snakebody[i][1] * len + "px";
+ }
+ }
+
+ //b.移动小蛇
+ this.movesnake = function () {
+ //非蛇头蛇节(当前蛇节的新坐标 是"下个蛇节"的旧坐标)
+ for (var i = 0; i < this.snakebody.length - 1; i++) {
+ this.snakebody[i][0] = this.snakebody[i + 1][0];
+ this.snakebody[i][1] = this.snakebody[i + 1][1];
+ }
+ if (this.redirect == "right") {
+ //蛇头x坐标递增
+ this.snakebody[this.snakebody.length - 1][0] += 1;
+ }
+ if (this.redirect == "left") {
+ //蛇头x坐标递减
+ this.snakebody[this.snakebody.length - 1][0] -= 1;
+ }
+ if (this.redirect == "up") {
+ //蛇头y坐标递减
+ this.snakebody[this.snakebody.length - 1][1] -= 1;
+ }
+ if (this.redirect == "down") {
+ //蛇头y坐标递增
+ this.snakebody[this.snakebody.length - 1][1] += 1;
+ }
+
+ //判断蛇头碰到食物
+ //蛇头坐标
+ var xSnake = this.snakebody[this.snakebody.length - 1][0];
+ var ySnake = this.snakebody[this.snakebody.length - 1][1];
+ //食物坐标food.xFood/food.yFood;
+ if (xSnake == food.xFood && ySnake == food.yFood) {
+ //吃食物增加蛇节
+ var newjie = [this.snakebody[0][0], this.snakebody[0][1], 'green', null];
+ this.snakebody.unshift(newjie);//把newjie放到数组的第一个位置去
+
+ //原食物消失,重新生成一个食物
+ food.showfood();
+ }
+
+ //控制小蛇在地图范围内移动
+ if (xSnake < 0 || xSnake > 39 || ySnake < 0 || ySnake > 19) {
+ alert('game over');
+ clearInterval(mytime);
+ return false;
+ }
+ //吃到自己判断(蛇头坐标与其他蛇节坐标一致)
+ for (var k = 0; k < this.snakebody.length - 1; k++) {
+ if (this.snakebody[k][0] == xSnake && this.snakebody[k][1] == ySnake) {
+ alert('game over kill you by yourself');
+ clearInterval(mytime);
+ return false;
+ }
+ }
+
+ //根据新坐标绘制小蛇
+ this.showsnake();
+ }
+ }
+
+ window.onload = function () {
+ var map = new Map();
+ map.showmap();
+
+ food = new Food();//声明为全局的以便在该加载事件函数外部访问
+ food.showfood();
+
+ snake = new Snake();//声明为全局的snake对象
+ snake.showsnake();
+
+ //移动小蛇
+ //setInterval(全局变量,时间)
+ mytime = setInterval("snake.movesnake()", 200);
+
+ //设置键盘事件,控制器小蛇移动方向
+ document.onkeydown = function (evt) {
+ var num = evt.keyCode;//通过事件对象获得数值码,进而知道被触发键子
+ if (num == 38) {
+ snake.redirect = "up";
+ }
+ if (num == 40) {
+ snake.redirect = "down";
+ }
+ if (num == 37) {
+ snake.redirect = "left";
+ }
+ if (num == 39) {
+ snake.redirect = "right";
+ }
+ }
+ }
+ </script>
+<!--
+ <style type="text/css">
+ body {
+ margin: 0;
+ }
+ </style> -->
+</head>
+<body></body>
+</html>
diff --git a/testdata/ui_file/profiles/hijack_files/test_jpeg_1.jpeg b/testdata/ui_file/profiles/hijack_files/test_jpeg_1.jpeg
new file mode 100644
index 00000000..c96c8ce8
--- /dev/null
+++ b/testdata/ui_file/profiles/hijack_files/test_jpeg_1.jpeg
Binary files differ
diff --git a/testdata/ui_file/profiles/hijack_files/test_png_1.png b/testdata/ui_file/profiles/hijack_files/test_png_1.png
new file mode 100644
index 00000000..76e778e0
--- /dev/null
+++ b/testdata/ui_file/profiles/hijack_files/test_png_1.png
Binary files differ
diff --git a/testdata/ui_file/profiles/hijack_files/test_svg_1.svg b/testdata/ui_file/profiles/hijack_files/test_svg_1.svg
new file mode 100644
index 00000000..e33f7250
--- /dev/null
+++ b/testdata/ui_file/profiles/hijack_files/test_svg_1.svg
Binary files differ
diff --git a/testdata/ui_file/profiles/insert_scripts/__init__.py b/testdata/ui_file/profiles/insert_scripts/__init__.py
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/testdata/ui_file/profiles/insert_scripts/__init__.py
diff --git a/testdata/ui_file/profiles/insert_scripts/test_css_1.css b/testdata/ui_file/profiles/insert_scripts/test_css_1.css
new file mode 100644
index 00000000..4b928372
--- /dev/null
+++ b/testdata/ui_file/profiles/insert_scripts/test_css_1.css
@@ -0,0 +1,27 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>菜鸟教程(runoob.com)</title>
+<style>
+body {
+ background-color:red;
+}
+h1 {
+ color:red;
+ text-align:center;
+}
+p {
+ font-family:"Times New Roman";
+ font-size:20px;
+}
+</style>
+</head>
+
+<body>
+
+<h1>CSS 实例!</h1>
+<p>这是一个段落。</p>
+
+</body>
+</html> \ No newline at end of file
diff --git a/testdata/ui_file/profiles/insert_scripts/test_css_2.css b/testdata/ui_file/profiles/insert_scripts/test_css_2.css
new file mode 100644
index 00000000..08fd48b5
--- /dev/null
+++ b/testdata/ui_file/profiles/insert_scripts/test_css_2.css
@@ -0,0 +1,3 @@
+body{
+ background:red !important;
+} \ No newline at end of file
diff --git a/testdata/ui_file/profiles/insert_scripts/test_js_1.js b/testdata/ui_file/profiles/insert_scripts/test_js_1.js
new file mode 100644
index 00000000..4f110c37
--- /dev/null
+++ b/testdata/ui_file/profiles/insert_scripts/test_js_1.js
@@ -0,0 +1 @@
+alert("鎵цjavascript!"); \ No newline at end of file
diff --git a/testdata/ui_file/profiles/insert_scripts/test_js_2.js b/testdata/ui_file/profiles/insert_scripts/test_js_2.js
new file mode 100644
index 00000000..6e7bffe1
--- /dev/null
+++ b/testdata/ui_file/profiles/insert_scripts/test_js_2.js
@@ -0,0 +1 @@
+alert("Hello World"); \ No newline at end of file
diff --git a/testdata/ui_file/profiles/response_pages/__init__.py b/testdata/ui_file/profiles/response_pages/__init__.py
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/testdata/ui_file/profiles/response_pages/__init__.py
diff --git a/testdata/ui_file/profiles/response_pages/testa.html b/testdata/ui_file/profiles/response_pages/testa.html
new file mode 100644
index 00000000..a490e611
--- /dev/null
+++ b/testdata/ui_file/profiles/response_pages/testa.html
@@ -0,0 +1,56 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+
+<meta charset="UTF-8" http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+<title>404-对不起!您访问的页面不存在</title>
+
+<style type="text/css">
+
+.head404{ width:580px; height:234px; margin:50px auto 0 auto; background:url(https://www.daixiaorui.com/Public/images/head404.png) no-repeat; }
+
+.txtbg404{ width:499px; height:169px; margin:10px auto 0 auto; background:url(https://www.daixiaorui.com/Public/images/txtbg404.png) no-repeat;}
+
+.txtbg404 .txtbox{ width:390px; position:relative; top:30px; left:60px;color:#eee; font-size:13px;}
+
+.txtbg404 .txtbox p {margin:5px 0; line-height:18px;}
+
+.txtbg404 .txtbox .paddingbox { padding-top:15px;}
+
+.txtbg404 .txtbox p a { color:#eee; text-decoration:none;}
+
+.txtbg404 .txtbox p a:hover { color:#FC9D1D; text-decoration:underline;}
+
+</style>
+
+</head>
+
+
+
+<body bgcolor="#494949">
+
+ <div class="head404"></div>
+
+ <div class="txtbg404">
+
+ <div class="txtbox">
+
+ <p>对不起,您请求的页面不存在、或已被删除、或暂时不可用</p>
+
+ <p class="paddingbox">请点击以下链接继续浏览网页</p>
+
+ <p>》<a style="cursor:pointer" onclick="history.back()">返回上一页面</a></p>
+
+ <p>》<a href="https://www.daixiaorui.com">返回网站首页</a></p>
+
+ </div>
+
+ </div>
+
+</body>
+
+</html>
+</html>
diff --git a/testdata/ui_file/profiles/response_pages/testb.html b/testdata/ui_file/profiles/response_pages/testb.html
new file mode 100644
index 00000000..9fd8aa96
--- /dev/null
+++ b/testdata/ui_file/profiles/response_pages/testb.html
@@ -0,0 +1,56 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+
+<meta charset="UTF-8" http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+<title>404 sorry! The page you visited does not exist</title>
+
+<style type="text/css">
+
+.head404{ width:580px; height:234px; margin:50px auto 0 auto; background:url(https://www.daixiaorui.com/Public/images/head404.png) no-repeat; }
+
+.txtbg404{ width:499px; height:169px; margin:10px auto 0 auto; background:url(https://www.daixiaorui.com/Public/images/txtbg404.png) no-repeat;}
+
+.txtbg404 .txtbox{ width:390px; position:relative; top:30px; left:60px;color:#eee; font-size:13px;}
+
+.txtbg404 .txtbox p {margin:5px 0; line-height:18px;}
+
+.txtbg404 .txtbox .paddingbox { padding-top:15px;}
+
+.txtbg404 .txtbox p a { color:#eee; text-decoration:none;}
+
+.txtbg404 .txtbox p a:hover { color:#FC9D1D; text-decoration:underline;}
+
+</style>
+
+</head>
+
+
+
+<body bgcolor="#494949">
+
+ <div class="head404"></div>
+
+ <div class="txtbg404">
+
+ <div class="txtbox">
+
+ <p>Sorry, the page you requested does not exist, has been deleted, or is temporarily unavailable</p>
+
+ <p class="paddingbox">Please click the following link to continue browsing</p>
+
+ <p>》<a style="cursor:pointer" onclick="history.back()">Back to previous page</a></p>
+
+ <p>》<a href="https://www.daixiaorui.com">Back to home page</a></p>
+
+ </div>
+
+ </div>
+
+</body>
+
+</html>
+</html>
diff --git a/testdata/ui_file/profiles/response_pages/testc.html b/testdata/ui_file/profiles/response_pages/testc.html
new file mode 100644
index 00000000..21d6fcdc
--- /dev/null
+++ b/testdata/ui_file/profiles/response_pages/testc.html
@@ -0,0 +1,56 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+
+<meta charset="UTF-8" http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+<title> - 404, простите!  страница, к которой вы пришли, не существует </title>
+
+<style type="text/css">
+
+.head404{ width:580px; height:234px; margin:50px auto 0 auto; background:url(https://www.daixiaorui.com/Public/images/head404.png) no-repeat; }
+
+.txtbg404{ width:499px; height:169px; margin:10px auto 0 auto; background:url(https://www.daixiaorui.com/Public/images/txtbg404.png) no-repeat;}
+
+.txtbg404 .txtbox{ width:390px; position:relative; top:30px; left:60px;color:#eee; font-size:13px;}
+
+.txtbg404 .txtbox p {margin:5px 0; line-height:18px;}
+
+.txtbg404 .txtbox .paddingbox { padding-top:15px;}
+
+.txtbg404 .txtbox p a { color:#eee; text-decoration:none;}
+
+.txtbg404 .txtbox p a:hover { color:#FC9D1D; text-decoration:underline;}
+
+</style>
+
+</head>
+
+
+
+<body bgcolor="#494949">
+
+ <div class="head404"></div>
+
+ <div class="txtbg404">
+
+ <div class="txtbox">
+
+ <p> Извините, запрошенная страница не существует или была удалена или временно недоступна </p>
+
+ <p class="paddingbox">Продолжайте просматривать страницы</p>
+
+ <p>》<a style="cursor:pointer" onclick="history.back()">вернуться на предыдущую страницу </a></p>
+
+ <p>》<a href="https://www.daixiaorui.com">вернуться на главную страницу сайта </a></p>
+
+ </div>
+
+ </div>
+
+</body>
+
+</html>
+</html>
diff --git a/testdata/ui_file/profiles/ssl_decryption_keyrings/__init__.py b/testdata/ui_file/profiles/ssl_decryption_keyrings/__init__.py
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/testdata/ui_file/profiles/ssl_decryption_keyrings/__init__.py
diff --git a/testdata/ui_file/profiles/ssl_decryption_keyrings/test_end_cert_caentitytest.chain.pem b/testdata/ui_file/profiles/ssl_decryption_keyrings/test_end_cert_caentitytest.chain.pem
new file mode 100644
index 00000000..730ea47b
--- /dev/null
+++ b/testdata/ui_file/profiles/ssl_decryption_keyrings/test_end_cert_caentitytest.chain.pem
@@ -0,0 +1,93 @@
+Certificate:
+ Data:
+ Version: 3 (0x2)
+ Serial Number:
+ 72:cc:5f:e2:55:f6:e6:f6:c4:bc:7c:6b
+ Signature Algorithm: sha256WithRSAEncryption
+ Issuer: C=CN, ST=BJ, L=BJ, O=NT, OU=NT, CN=CA TRUST1
+ Validity
+ Not Before: Jul 7 11:39:21 2023 GMT
+ Not After : Nov 18 11:39:21 2024 GMT
+ Subject: C=CN, CN=www.bbc.com
+ Subject Public Key Info:
+ Public Key Algorithm: rsaEncryption
+ Public-Key: (2048 bit)
+ Modulus:
+ 00:df:ad:1c:bc:ae:44:16:8a:be:bf:eb:69:06:07:
+ 5e:16:35:3b:e7:41:5d:48:8b:0f:6c:38:ee:7e:97:
+ 0f:43:de:63:27:84:5e:65:bc:28:7c:57:f1:4c:2a:
+ 92:98:e2:73:33:be:39:58:f2:7a:cf:55:45:23:16:
+ f3:c1:e9:fd:3e:f8:a7:a2:02:c6:f1:20:ff:13:dc:
+ f2:0a:31:29:fc:d8:e7:90:2d:ef:8e:44:6d:65:92:
+ fa:3a:a2:73:99:26:ee:e8:35:6f:07:dd:2f:49:61:
+ 11:11:d2:fb:7a:4c:8a:b9:19:ab:e3:99:79:07:ac:
+ fc:dd:62:7b:7f:de:fe:ff:8b:a7:68:8c:61:f8:49:
+ 57:67:8d:a8:23:92:a4:3f:e5:69:0a:6a:38:e3:56:
+ e2:dc:d2:ac:d5:62:6e:16:9e:46:c5:f3:19:c1:85:
+ 95:f2:5c:99:d0:2a:a6:80:64:2c:d2:7e:06:b6:80:
+ fc:48:f0:fc:06:57:c0:89:17:6a:4b:06:c9:26:54:
+ f5:36:59:44:01:89:89:5c:8d:fb:50:d7:10:ca:bc:
+ 3a:76:2a:f5:fa:4d:dc:0f:bc:bc:49:e0:92:8d:1d:
+ 7a:33:42:52:83:dc:ce:78:59:86:31:88:c0:4f:25:
+ f2:4b:7b:6f:18:d8:59:fd:f4:53:1b:fd:b4:95:ad:
+ 99:d3
+ Exponent: 65537 (0x10001)
+ X509v3 extensions:
+ X509v3 Subject Alternative Name:
+ DNS:*.bbc.com, DNS:*.bbc.cn
+ Signature Algorithm: sha256WithRSAEncryption
+ ba:a0:a4:49:aa:7f:04:9d:eb:df:c1:c6:27:27:2e:52:c1:3a:
+ 1d:31:73:be:37:d7:17:6e:7f:1d:ca:f6:f8:24:bb:40:e2:08:
+ aa:13:84:5e:94:c0:e0:7c:80:f2:75:91:2c:cf:b2:31:9c:38:
+ bf:45:63:81:7c:20:60:d0:23:cf:0c:ca:14:41:b4:95:a0:e2:
+ 8f:b7:b8:e9:cb:2e:69:19:f0:53:c6:8f:96:1c:94:bd:41:c2:
+ d6:81:6e:1f:84:45:00:fa:7c:5a:39:3e:fa:14:6d:75:bf:d9:
+ ad:c9:85:58:10:24:3a:38:2a:85:90:a2:0b:58:06:7d:c8:2f:
+ 4a:b8:31:92:8e:c8:3d:21:9d:f6:74:2f:29:57:b2:7b:ee:8e:
+ 90:47:34:69:54:34:af:93:e3:cf:3a:31:56:40:20:03:61:ec:
+ 38:49:5b:e9:5a:e4:23:41:6e:f1:33:64:7f:d6:44:96:7b:e8:
+ 14:79:bf:5e:34:03:d0:63:a0:06:bb:c7:b0:24:8b:87:c6:df:
+ 5e:24:54:2e:35:05:88:f4:36:12:3d:76:8b:92:8f:95:e9:9c:
+ 14:39:0e:8f:e4:50:70:f6:f7:cf:24:01:7b:30:7d:33:43:b0:
+ 20:e1:1c:93:64:15:66:f2:4f:b0:2b:ae:48:18:67:fc:86:fa:
+ b8:f2:5b:ec
+-----BEGIN CERTIFICATE-----
+MIIDIDCCAgigAwIBAgIMcsxf4lX25vbEvHxrMA0GCSqGSIb3DQEBCwUAMFUxCzAJ
+BgNVBAYTAkNOMQswCQYDVQQIDAJCSjELMAkGA1UEBwwCQkoxCzAJBgNVBAoMAk5U
+MQswCQYDVQQLDAJOVDESMBAGA1UEAwwJQ0EgVFJVU1QxMB4XDTIzMDcwNzExMzky
+MVoXDTI0MTExODExMzkyMVowIzELMAkGA1UEBhMCQ04xFDASBgNVBAMMC3d3dy5i
+YmMuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA360cvK5EFoq+
+v+tpBgdeFjU750FdSIsPbDjufpcPQ95jJ4ReZbwofFfxTCqSmOJzM745WPJ6z1VF
+Ixbzwen9PvinogLG8SD/E9zyCjEp/NjnkC3vjkRtZZL6OqJzmSbu6DVvB90vSWER
+EdL7ekyKuRmr45l5B6z83WJ7f97+/4unaIxh+ElXZ42oI5KkP+VpCmo441bi3NKs
+1WJuFp5GxfMZwYWV8lyZ0CqmgGQs0n4GtoD8SPD8BlfAiRdqSwbJJlT1NllEAYmJ
+XI37UNcQyrw6dir1+k3cD7y8SeCSjR16M0JSg9zOeFmGMYjATyXyS3tvGNhZ/fRT
+G/20la2Z0wIDAQABoyIwIDAeBgNVHREEFzAVggkqLmJiYy5jb22CCCouYmJjLmNu
+MA0GCSqGSIb3DQEBCwUAA4IBAQC6oKRJqn8EnevfwcYnJy5SwTodMXO+N9cXbn8d
+yvb4JLtA4giqE4RelMDgfIDydZEsz7IxnDi/RWOBfCBg0CPPDMoUQbSVoOKPt7jp
+yy5pGfBTxo+WHJS9QcLWgW4fhEUA+nxaOT76FG11v9mtyYVYECQ6OCqFkKILWAZ9
+yC9KuDGSjsg9IZ32dC8pV7J77o6QRzRpVDSvk+PPOjFWQCADYew4SVvpWuQjQW7x
+M2R/1kSWe+gUeb9eNAPQY6AGu8ewJIuHxt9eJFQuNQWI9DYSPXaLko+V6ZwUOQ6P
+5FBw9vfPJAF7MH0zQ7Ag4RyTZBVm8k+wK65IGGf8hvq48lvs
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIDfTCCAmWgAwIBAgIJAJnxzpEq+vIfMA0GCSqGSIb3DQEBCwUAMFUxCzAJBgNV
+BAYTAkNOMQswCQYDVQQIDAJCSjELMAkGA1UEBwwCQkoxCzAJBgNVBAoMAk5UMQsw
+CQYDVQQLDAJOVDESMBAGA1UEAwwJQ0EgVFJVU1QxMB4XDTIzMDcwNzExMjk1NVoX
+DTI0MTExODExMjk1NVowVTELMAkGA1UEBhMCQ04xCzAJBgNVBAgMAkJKMQswCQYD
+VQQHDAJCSjELMAkGA1UECgwCTlQxCzAJBgNVBAsMAk5UMRIwEAYDVQQDDAlDQSBU
+UlVTVDEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDO+4rZA65F6tlt
+HEnbFG56FyYs/V9XAM6sSSnnFj8H8MNvxiRQXlaevdK8/7xwtN3udX+x4VdSnmi4
+wPGLhrPWvrrv2ZrDbRlBwNmIosmE+dQdqf9OyN44Pw4/TQoh14CWqjqxQXYLevrn
+45GH1POUR64U6qO5Uq5B83zimTRWTbXertvrYb4plOKNxvav3IKdNEufRJSqxelf
+AUMQnsrH1iO4iMpZHBYSNbfwl6gkgnXxsr8YTZrrQwk9Bcd/0bFQ+v3OiWD5oiYc
+XfcIBTeoy6IIICNc7krfnXRpsXO2oimNgMS6nHPKvXYF5jTbKr0A40ElDEIjtt5T
+Yb4oWNHfAgMBAAGjUDBOMB0GA1UdDgQWBBSD6d3VXldZQOiVGZC0Y3nuANvG2zAf
+BgNVHSMEGDAWgBSD6d3VXldZQOiVGZC0Y3nuANvG2zAMBgNVHRMEBTADAQH/MA0G
+CSqGSIb3DQEBCwUAA4IBAQCM3XHUZ1RwpLtF5DpEKDmC4osIiguk7ENF7Bg+LCQt
+GzIeBkHPZ0sKbqZr0og6a0r0Qn1Xzr5nku9cuFH1Gc9Wwg82i8zXLgD8//VSNy5k
+SLKb7MiAAnUHv6ZkluX8X9bdg32vb+sTwhuFhjbI5LVWvY3dq/Ez+WERFUxgNL3s
+dgiJABkslbkjobgB39m/Lr223P6HwG5n6YukKSmwfiion5QYsTbTpd9AYbAD5UTs
+A5H5pRdk/mxJ7yYsgosu60wAUI/xVAVvsaUDGa+koiVKPhUg4A7Qd/2oDByb/H9J
+atqHkSjkwvhAekC0mOjKh6ED/Nr2tnN5l0GIbwRvj9Xz
+-----END CERTIFICATE-----
diff --git a/testdata/ui_file/profiles/ssl_decryption_keyrings/test_end_keycaentitytest.key b/testdata/ui_file/profiles/ssl_decryption_keyrings/test_end_keycaentitytest.key
new file mode 100644
index 00000000..7683dbe3
--- /dev/null
+++ b/testdata/ui_file/profiles/ssl_decryption_keyrings/test_end_keycaentitytest.key
@@ -0,0 +1,27 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIIEogIBAAKCAQEA360cvK5EFoq+v+tpBgdeFjU750FdSIsPbDjufpcPQ95jJ4Re
+ZbwofFfxTCqSmOJzM745WPJ6z1VFIxbzwen9PvinogLG8SD/E9zyCjEp/NjnkC3v
+jkRtZZL6OqJzmSbu6DVvB90vSWEREdL7ekyKuRmr45l5B6z83WJ7f97+/4unaIxh
++ElXZ42oI5KkP+VpCmo441bi3NKs1WJuFp5GxfMZwYWV8lyZ0CqmgGQs0n4GtoD8
+SPD8BlfAiRdqSwbJJlT1NllEAYmJXI37UNcQyrw6dir1+k3cD7y8SeCSjR16M0JS
+g9zOeFmGMYjATyXyS3tvGNhZ/fRTG/20la2Z0wIDAQABAoIBAFqQNe1zRaA25wq/
+3xMQ0ph9T1bP0Vw46bKwzme08/pPxafPYYUhjObjmJB1QEvkjC5sG74W14CxDsAp
+X+Kowd/IP99J7pDdAkphkCJuS4jTrdZjsvXQYNbajrRE6DcfW2XrlJwDg0zbn1Sv
+LyEScqyFZ2JM1oM0GGHuqQBaIrcGa6c8LgtaxmgVKMGA5EbSL86eZ8s0UNwiQs8Y
+U1GLrb0ecxJxjI7qHkj3e6bzfJ84P+EA97ZwnSEx2xV9ceMYfzo/nUKFo6BZo9Qy
+S1vBbHCs6Pv+1jg5rObI4F+w3Q1xkXDtOo8iGsFjIYvAXVw8k8DeI6hgI1OhF8I1
+Xz/azMkCgYEA8N5JE/u8SVZCfvaHj+e2Orlll+hTvI9GWu7lLYEVd9vdfri31n7v
+hHrcV98JqSBVPiKO78H29kSYWfmLRGMWKHInFfdVmuEOi7Xq3b4yIUk+y308A4qo
+Wx5JppQQ7Ej/9+lO+AF1ru1x4qsvY+XlmfC9l3zYy9G2+TIKe1kzV1UCgYEA7bpW
+tA2ocmeCUWP69dxXwLihsrAMkyIww7DWZHcE2tTH1YxfRdQM4AxrlO2st2aDcP6G
+P74cF6ooyeijZS3825rnZpxdpIjic0k/MwJnkyD2Rf16qXhvvu82pA46uyZ2TBfk
+Z5kFJw2pC6maNhg2OZCHNlWj2Qprr2EdzcdYXIcCgYBvWNK/gifQXyfuOVkBlUQQ
+cZQdXTEYgcMsVjNrjbi259TEt++EILnorEMf++MjY+cECkW5YBkiTyN+tHVE7+lW
+WS7oYKYaKt/mhfpE95+E868rsoEDwh2BwcaaUuhf0n9Bw4DV9RbJ/soe1rPZonU5
+bKi4VuaBkjjbid5+lwW84QKBgEB1aBEGKwhqPJGpFGEZz8l3xpBW3/H9MU++YUN4
+ah6T12N13ldmud7+PyVwlIZeC4HV4bzi5WcdQlYM+FD0+TzqcZgHCfUVEKHF2JcS
+Lddc9qnfoyTUfSg+YIh3O0GHmkfjqpDUkusV7yI0aJYGVp2hLKh07CprgutY3+Xu
+CW19AoGAZzRkQeqrdwLEHOMY4p0GNrwDnubfwBzjEHWt3tBCgRQjPiwpdtXIdXgk
+LDc2ZRUMw38JDELQ/BnzhXZa7JKJJJY6mNFTP/mUiGW959C8axE8csiPbIbQopY2
+wseDiyumC8r2wkhUfFST115LoShLeK/ZoiIA2ThWxCdbm/1PHVg=
+-----END RSA PRIVATE KEY-----
diff --git a/testdata/ui_file/profiles/ssl_decryption_keyrings/test_mid_cert_camiddletest.chain.pem b/testdata/ui_file/profiles/ssl_decryption_keyrings/test_mid_cert_camiddletest.chain.pem
new file mode 100644
index 00000000..c13ccf89
--- /dev/null
+++ b/testdata/ui_file/profiles/ssl_decryption_keyrings/test_mid_cert_camiddletest.chain.pem
@@ -0,0 +1,100 @@
+Certificate:
+ Data:
+ Version: 3 (0x2)
+ Serial Number:
+ 71:d9:ff:18:5a:34:cc:9f:ee:60:0b:bd
+ Signature Algorithm: sha256WithRSAEncryption
+ Issuer: C=CN, ST=BJ, L=BJ, O=NT, OU=NT, CN=CA TRUST1
+ Validity
+ Not Before: Jul 7 11:30:01 2023 GMT
+ Not After : Nov 18 11:30:01 2024 GMT
+ Subject: C=CN, ST=BJ, O=NT, OU=NT, CN=camiddle1
+ Subject Public Key Info:
+ Public Key Algorithm: rsaEncryption
+ Public-Key: (2048 bit)
+ Modulus:
+ 00:cb:5a:af:94:d2:6a:98:91:f1:13:6e:95:9e:ed:
+ 50:96:85:0e:8e:0b:fd:7f:f2:20:b6:88:27:34:91:
+ 9f:b3:c4:27:43:e4:e9:44:80:fd:e2:51:67:d7:f8:
+ 9b:17:16:2c:36:7e:f4:75:29:63:40:ec:9b:29:a7:
+ 4e:a2:d9:e1:ca:1a:51:62:43:5e:af:55:8a:64:b5:
+ 76:ba:a4:78:d6:87:fa:d6:a1:cb:08:67:69:0c:ec:
+ 5a:d9:7b:78:6f:28:d3:1b:14:63:ee:bd:47:92:e1:
+ 57:18:33:bc:99:ba:2f:82:cd:45:15:b2:bd:13:fa:
+ 51:38:bb:2b:68:11:0a:a4:b9:18:88:70:56:5f:89:
+ e1:10:21:79:e9:b1:f4:15:8b:74:10:6f:d8:36:9e:
+ 60:4c:1d:61:63:52:7b:b7:3d:63:8b:65:b3:2f:ed:
+ e7:d4:b5:39:15:32:52:d3:73:ea:c4:85:53:45:ea:
+ 5a:77:67:4c:3c:bb:0a:b8:0b:63:69:39:38:d3:61:
+ 78:16:10:48:e6:40:bf:1a:a9:9b:7a:1c:6f:33:45:
+ c6:f7:71:43:8c:62:27:7b:78:c3:0e:a7:99:c3:46:
+ b0:9a:1a:57:aa:8d:aa:75:b3:3d:66:dc:6e:c2:a1:
+ 04:0c:1e:de:0b:47:22:a9:9e:79:f9:77:b0:4f:02:
+ a4:f9
+ Exponent: 65537 (0x10001)
+ X509v3 extensions:
+ X509v3 Subject Key Identifier:
+ 5D:44:58:02:45:8B:00:5A:DC:03:69:84:EE:70:D6:41:3F:17:C6:10
+ X509v3 Authority Key Identifier:
+ keyid:83:E9:DD:D5:5E:57:59:40:E8:95:19:90:B4:63:79:EE:00:DB:C6:DB
+
+ X509v3 Basic Constraints:
+ CA:TRUE
+ Signature Algorithm: sha256WithRSAEncryption
+ 42:d8:bc:41:ae:5f:f3:3b:49:c0:72:b3:79:d0:68:36:22:82:
+ 14:d6:71:56:2c:d2:85:39:2c:34:7c:0a:2c:d8:88:2b:0e:04:
+ 62:b2:5a:0b:ab:03:df:58:a8:ac:a9:16:a4:81:e8:e4:61:45:
+ 08:2b:82:3c:7c:66:ca:00:04:57:a5:47:7e:15:f4:1b:a8:7d:
+ c0:02:5d:2e:ad:ee:52:03:38:d4:5b:e2:d8:4e:04:7b:c2:cd:
+ 7e:0e:ca:9f:b9:e9:43:1c:25:01:60:2b:91:37:de:de:31:cc:
+ 88:47:88:1f:46:95:49:de:67:35:16:f1:21:77:c3:03:40:56:
+ 6a:ac:dc:49:4c:ba:b4:5a:13:cb:68:97:59:8d:5c:7e:ca:a2:
+ fc:5d:21:95:9f:3c:3f:9b:ea:25:b9:8f:30:6d:68:a6:58:6c:
+ b6:8f:4c:d3:4c:c4:a7:da:04:49:ca:d0:96:81:c3:fb:41:6d:
+ ba:4d:9a:b2:fd:b2:0b:30:7c:1e:da:90:54:d3:ac:e0:ad:e3:
+ 48:9f:ef:51:9e:e4:e8:2e:1d:a5:17:cd:8b:40:94:30:44:e0:
+ 1d:f3:7f:ec:a6:6e:c8:2f:1c:a3:84:17:f9:66:f7:74:f9:8d:
+ b5:59:86:da:36:31:71:14:0f:af:d9:c3:96:92:e2:54:c6:b4:
+ 8b:76:f6:08
+-----BEGIN CERTIFICATE-----
+MIIDczCCAlugAwIBAgIMcdn/GFo0zJ/uYAu9MA0GCSqGSIb3DQEBCwUAMFUxCzAJ
+BgNVBAYTAkNOMQswCQYDVQQIDAJCSjELMAkGA1UEBwwCQkoxCzAJBgNVBAoMAk5U
+MQswCQYDVQQLDAJOVDESMBAGA1UEAwwJQ0EgVFJVU1QxMB4XDTIzMDcwNzExMzAw
+MVoXDTI0MTExODExMzAwMVowSDELMAkGA1UEBhMCQ04xCzAJBgNVBAgMAkJKMQsw
+CQYDVQQKDAJOVDELMAkGA1UECwwCTlQxEjAQBgNVBAMMCWNhbWlkZGxlMTCCASIw
+DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMtar5TSapiR8RNulZ7tUJaFDo4L
+/X/yILaIJzSRn7PEJ0Pk6USA/eJRZ9f4mxcWLDZ+9HUpY0DsmymnTqLZ4coaUWJD
+Xq9VimS1drqkeNaH+tahywhnaQzsWtl7eG8o0xsUY+69R5LhVxgzvJm6L4LNRRWy
+vRP6UTi7K2gRCqS5GIhwVl+J4RAheemx9BWLdBBv2DaeYEwdYWNSe7c9Y4tlsy/t
+59S1ORUyUtNz6sSFU0XqWndnTDy7CrgLY2k5ONNheBYQSOZAvxqpm3ocbzNFxvdx
+Q4xiJ3t4ww6nmcNGsJoaV6qNqnWzPWbcbsKhBAwe3gtHIqmeefl3sE8CpPkCAwEA
+AaNQME4wHQYDVR0OBBYEFF1EWAJFiwBa3ANphO5w1kE/F8YQMB8GA1UdIwQYMBaA
+FIPp3dVeV1lA6JUZkLRjee4A28bbMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEL
+BQADggEBAELYvEGuX/M7ScBys3nQaDYighTWcVYs0oU5LDR8CizYiCsOBGKyWgur
+A99YqKypFqSB6ORhRQgrgjx8ZsoABFelR34V9BuofcACXS6t7lIDONRb4thOBHvC
+zX4Oyp+56UMcJQFgK5E33t4xzIhHiB9GlUneZzUW8SF3wwNAVmqs3ElMurRaE8to
+l1mNXH7KovxdIZWfPD+b6iW5jzBtaKZYbLaPTNNMxKfaBEnK0JaBw/tBbbpNmrL9
+sgswfB7akFTTrOCt40if71Ge5OguHaUXzYtAlDBE4B3zf+ymbsgvHKOEF/lm93T5
+jbVZhto2MXEUD6/Zw5aS4lTGtIt29gg=
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIDfTCCAmWgAwIBAgIJAJnxzpEq+vIfMA0GCSqGSIb3DQEBCwUAMFUxCzAJBgNV
+BAYTAkNOMQswCQYDVQQIDAJCSjELMAkGA1UEBwwCQkoxCzAJBgNVBAoMAk5UMQsw
+CQYDVQQLDAJOVDESMBAGA1UEAwwJQ0EgVFJVU1QxMB4XDTIzMDcwNzExMjk1NVoX
+DTI0MTExODExMjk1NVowVTELMAkGA1UEBhMCQ04xCzAJBgNVBAgMAkJKMQswCQYD
+VQQHDAJCSjELMAkGA1UECgwCTlQxCzAJBgNVBAsMAk5UMRIwEAYDVQQDDAlDQSBU
+UlVTVDEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDO+4rZA65F6tlt
+HEnbFG56FyYs/V9XAM6sSSnnFj8H8MNvxiRQXlaevdK8/7xwtN3udX+x4VdSnmi4
+wPGLhrPWvrrv2ZrDbRlBwNmIosmE+dQdqf9OyN44Pw4/TQoh14CWqjqxQXYLevrn
+45GH1POUR64U6qO5Uq5B83zimTRWTbXertvrYb4plOKNxvav3IKdNEufRJSqxelf
+AUMQnsrH1iO4iMpZHBYSNbfwl6gkgnXxsr8YTZrrQwk9Bcd/0bFQ+v3OiWD5oiYc
+XfcIBTeoy6IIICNc7krfnXRpsXO2oimNgMS6nHPKvXYF5jTbKr0A40ElDEIjtt5T
+Yb4oWNHfAgMBAAGjUDBOMB0GA1UdDgQWBBSD6d3VXldZQOiVGZC0Y3nuANvG2zAf
+BgNVHSMEGDAWgBSD6d3VXldZQOiVGZC0Y3nuANvG2zAMBgNVHRMEBTADAQH/MA0G
+CSqGSIb3DQEBCwUAA4IBAQCM3XHUZ1RwpLtF5DpEKDmC4osIiguk7ENF7Bg+LCQt
+GzIeBkHPZ0sKbqZr0og6a0r0Qn1Xzr5nku9cuFH1Gc9Wwg82i8zXLgD8//VSNy5k
+SLKb7MiAAnUHv6ZkluX8X9bdg32vb+sTwhuFhjbI5LVWvY3dq/Ez+WERFUxgNL3s
+dgiJABkslbkjobgB39m/Lr223P6HwG5n6YukKSmwfiion5QYsTbTpd9AYbAD5UTs
+A5H5pRdk/mxJ7yYsgosu60wAUI/xVAVvsaUDGa+koiVKPhUg4A7Qd/2oDByb/H9J
+atqHkSjkwvhAekC0mOjKh6ED/Nr2tnN5l0GIbwRvj9Xz
+-----END CERTIFICATE-----
diff --git a/testdata/ui_file/profiles/ssl_decryption_keyrings/test_mid_key_camiddletest.key b/testdata/ui_file/profiles/ssl_decryption_keyrings/test_mid_key_camiddletest.key
new file mode 100644
index 00000000..2060cc7d
--- /dev/null
+++ b/testdata/ui_file/profiles/ssl_decryption_keyrings/test_mid_key_camiddletest.key
@@ -0,0 +1,27 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIIEpAIBAAKCAQEAy1qvlNJqmJHxE26Vnu1QloUOjgv9f/IgtognNJGfs8QnQ+Tp
+RID94lFn1/ibFxYsNn70dSljQOybKadOotnhyhpRYkNer1WKZLV2uqR41of61qHL
+CGdpDOxa2Xt4byjTGxRj7r1HkuFXGDO8mbovgs1FFbK9E/pROLsraBEKpLkYiHBW
+X4nhECF56bH0FYt0EG/YNp5gTB1hY1J7tz1ji2WzL+3n1LU5FTJS03PqxIVTRepa
+d2dMPLsKuAtjaTk402F4FhBI5kC/GqmbehxvM0XG93FDjGIne3jDDqeZw0awmhpX
+qo2qdbM9ZtxuwqEEDB7eC0ciqZ55+XewTwKk+QIDAQABAoIBAGHBsaB4WrgHiH3P
+7mtdKB2Dz1Bn4TBtpF47K6Wwz7YqeLnBxIWjAOmYOrRvFZdOmGiGNVxRTh5638hx
+XnMZDNsMNc1oF49wLrxlI7Nrt49iBSrC0oiytaR5xt6/5VCCrqFY9wVgxpSMcUL4
+NBUulQJrTWe16gE9l2gPSjmX36b5XLG6n3wsMCh8yphwwOBg86DjYWVY+q/AKY+j
+emSka2HYNTXOLQw6cBMcx2dKXtz4/XxDEtbhn/Fwd8B4D4n5RsuqDlLe/vLSXoDp
+1IDuK+SsprFZg2O6ss6r9hFEpBtTLYlk9RPlCgtvrMhwCULcRhxoIVxfvL9i+75E
+WT6KoQECgYEA6J8btSUE/bNVgy3mmcTZ9t/ukagg3DOyAR/cojEZB3G4FocGxfI8
+BRWUYL3X4tTibLh222fWQMiJB2nUGCEstPKC4vBuorq8jdmNS4EvT0v7w0MiELrf
+MiBq2vRla74buweIlTO67kXt+2+MsY4H8jkUanj6ajseJYWvPPsEQWECgYEA38qW
+qE7Hc32VlgL00uIYjBGkvfEHDRzwROwTiWMtvqea2WpdR/mBfzrWle4rUXiH9c+A
+GTSh2aBpfEgIqzR5wDASYk4cbgfyl/PjsG0ibCf/auilMeHJXw9RDSdkWnfPmFd/
+633yzsY6aYNNauaxSuTLI09VxX8rVYXYfp2W0pkCgYEAiXFI67SdyFBnXASI1Z3r
+suQIj2MpVzHsIKH0uJgN08orHJRXOimvsMlZS/efUNS7m8U55NTrUIer/wdWW5Nu
+WNNY5kFs/RUcRyudQlln3JBmhq5puDzRl0p0GD6CljBTLiR7XLyd3B7RR9hW5qmm
+pEV5fJdSTeX0H/Nm4L7nesECgYBbTnnnk7TWzw9gFDa1b+AaDfzMLnH1DLCPPk6+
+SEPavOF2AWqrugX21hfFNlZgODAov4+BOTMr6sH/HhjDWXavTi3CBCKfVgjJrI1i
+ZzSbMjqI8QCteHTDnykvl7nfG3EMs+6SM2IEsWYVtKe6jQMbDnw/HNhe6wLQMvrg
+tgVaSQKBgQDRLgTP5YxrUMUT3dq1cyXy3DQoMCPjAka07zXBaAAALtnn57SxR1mN
+kJ4cl4YjhdhRBvGV7KSB4hDBKks+xRuuuQ+Eq+I68a9uWE/k4Sdh3MZpif57lC+L
+edJqQRviqD0xMi+JImb6rUtNCjVJ/OgLc5pGgdeFi/+lRkiX9M8xJA==
+-----END RSA PRIVATE KEY-----
diff --git a/testdata/ui_file/profiles/ssl_decryption_keyrings/test_root_cert_catest.cer b/testdata/ui_file/profiles/ssl_decryption_keyrings/test_root_cert_catest.cer
new file mode 100644
index 00000000..8392b0d6
--- /dev/null
+++ b/testdata/ui_file/profiles/ssl_decryption_keyrings/test_root_cert_catest.cer
@@ -0,0 +1,21 @@
+-----BEGIN CERTIFICATE-----
+MIIDfTCCAmWgAwIBAgIJAJnxzpEq+vIfMA0GCSqGSIb3DQEBCwUAMFUxCzAJBgNV
+BAYTAkNOMQswCQYDVQQIDAJCSjELMAkGA1UEBwwCQkoxCzAJBgNVBAoMAk5UMQsw
+CQYDVQQLDAJOVDESMBAGA1UEAwwJQ0EgVFJVU1QxMB4XDTIzMDcwNzExMjk1NVoX
+DTI0MTExODExMjk1NVowVTELMAkGA1UEBhMCQ04xCzAJBgNVBAgMAkJKMQswCQYD
+VQQHDAJCSjELMAkGA1UECgwCTlQxCzAJBgNVBAsMAk5UMRIwEAYDVQQDDAlDQSBU
+UlVTVDEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDO+4rZA65F6tlt
+HEnbFG56FyYs/V9XAM6sSSnnFj8H8MNvxiRQXlaevdK8/7xwtN3udX+x4VdSnmi4
+wPGLhrPWvrrv2ZrDbRlBwNmIosmE+dQdqf9OyN44Pw4/TQoh14CWqjqxQXYLevrn
+45GH1POUR64U6qO5Uq5B83zimTRWTbXertvrYb4plOKNxvav3IKdNEufRJSqxelf
+AUMQnsrH1iO4iMpZHBYSNbfwl6gkgnXxsr8YTZrrQwk9Bcd/0bFQ+v3OiWD5oiYc
+XfcIBTeoy6IIICNc7krfnXRpsXO2oimNgMS6nHPKvXYF5jTbKr0A40ElDEIjtt5T
+Yb4oWNHfAgMBAAGjUDBOMB0GA1UdDgQWBBSD6d3VXldZQOiVGZC0Y3nuANvG2zAf
+BgNVHSMEGDAWgBSD6d3VXldZQOiVGZC0Y3nuANvG2zAMBgNVHRMEBTADAQH/MA0G
+CSqGSIb3DQEBCwUAA4IBAQCM3XHUZ1RwpLtF5DpEKDmC4osIiguk7ENF7Bg+LCQt
+GzIeBkHPZ0sKbqZr0og6a0r0Qn1Xzr5nku9cuFH1Gc9Wwg82i8zXLgD8//VSNy5k
+SLKb7MiAAnUHv6ZkluX8X9bdg32vb+sTwhuFhjbI5LVWvY3dq/Ez+WERFUxgNL3s
+dgiJABkslbkjobgB39m/Lr223P6HwG5n6YukKSmwfiion5QYsTbTpd9AYbAD5UTs
+A5H5pRdk/mxJ7yYsgosu60wAUI/xVAVvsaUDGa+koiVKPhUg4A7Qd/2oDByb/H9J
+atqHkSjkwvhAekC0mOjKh6ED/Nr2tnN5l0GIbwRvj9Xz
+-----END CERTIFICATE-----
diff --git a/testdata/ui_file/profiles/ssl_decryption_keyrings/test_root_key_catest.key b/testdata/ui_file/profiles/ssl_decryption_keyrings/test_root_key_catest.key
new file mode 100644
index 00000000..a347d61e
--- /dev/null
+++ b/testdata/ui_file/profiles/ssl_decryption_keyrings/test_root_key_catest.key
@@ -0,0 +1,27 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIIEpQIBAAKCAQEAzvuK2QOuRerZbRxJ2xRuehcmLP1fVwDOrEkp5xY/B/DDb8Yk
+UF5Wnr3SvP+8cLTd7nV/seFXUp5ouMDxi4az1r6679maw20ZQcDZiKLJhPnUHan/
+TsjeOD8OP00KIdeAlqo6sUF2C3r65+ORh9TzlEeuFOqjuVKuQfN84pk0Vk213q7b
+62G+KZTijcb2r9yCnTRLn0SUqsXpXwFDEJ7Kx9YjuIjKWRwWEjW38JeoJIJ18bK/
+GE2a60MJPQXHf9GxUPr9zolg+aImHF33CAU3qMuiCCAjXO5K3510abFztqIpjYDE
+upxzyr12BeY02yq9AONBJQxCI7beU2G+KFjR3wIDAQABAoIBAQClBnEhrYmZPTG1
+iMRp49Rhi2tom2sUVxRw0LSUBmyizBdGWthBK7YsQnRvNAbuZYY8xXnWPS/+M0aT
+Z2IuOGvSX6dz7C80eRuWDUhjZEb/uqCgNhXUntpuRff6CFZ3vPZNKdQ511Niu96o
+XAyAHA1IwA3Pp3R6Ia3F73g2wqez1jorYZC14OZl8zv2CMLhZ5ES76gilypRV/g0
+6bBbBrpGZ130Cg+kQ81T+HUZWRgNtByFNwzZfBAu1jcdxQdAR1kMtnCjHtUm/kUX
+z1h3XclM1nuWoLY6bOUttJKWlHz8J6NKb4pO2PGmsWOhZx7JuQcSJE3rfLbG6LiH
+JJSEYB7hAoGBAPCXMUvMwqOsW0uCmsAH1iC1UeNG1lAAgDo49qDeKPoMXLUKmkjw
+s/zcllWH1TawU0M4SpdRLolBFJjkgNZL/woiPJ67mUDFSLeYQ/hrgVdxTzWaUnCG
+5XUyaiCs9C22Pzs+hMIkAgBhf0rh61J0hCNX0UeyrsMG+tG524lrfAfzAoGBANw9
+TRkqoHRPM9GsM1Kme/5WzT89IpQwSYSFI1v07de5GFNnIFzY7/B8wI61vyne5Bwf
+PJmYtdzB4ebU0xJf02QozuKkkYIupju1pDaWctKpgR/0ZYPTh8TAVqjfS0IeOup1
+EVkUSOJffPJuiM6ukuut6e/OTZKI+R4FvDzOolVlAoGAQV3yyNNzNqEHlPaBMRdv
++CcLfqKqa8YXELqVV5PEsltVfOLKlHLBlDwipE5pgZhapvLOYVpvOF90Ry4eSxsO
+yiQPMFlsBAsV/LvkC8S5uZZRnRC2wVgFU9hEuWgEV78iYuhTjaPW31+eBCxpkVeS
+5z9e3woPLXHiB8Vlfmqzoj0CgYEA2hom8MZC8gvBUGHMzYurfRtu1LJxPPl4xLCo
+bJdotlpJ2cZlySzYqHqSooEf15IwqhzRAXa2mvCyCss2X5rgF+9FujKpGpeh7b2a
+6qgg+7f69K8tnNftOw4Sg9fliouvYqIeVO3+o5dWgCqwdqVxP84Rvna6YWQd9/pM
+CJfFMPUCgYEA5v064YjwtVkE5IIZR7b0HMpZKeJMLRhNkSrYGDpt8y/da/GnRpcw
+H8shApl6E+/rTElHPd7o+HTxQ4LdqqgEUDM08sGSFz9R+0DA7YARCPahh5ZIXTqV
+4QNdC8CUu20PR05YuLj0V9UXRaO+njtvr2785iv3AF7kBgl9K90sR5E=
+-----END RSA PRIVATE KEY-----