From f44dca97c495ae8fad0cdcde4cb010b70cb24d5a Mon Sep 17 00:00:00 2001 From: Mazet Laurent Date: Tue, 13 May 2025 17:04:46 +0200 Subject: [PATCH] update for protocol V1 --- cryptomod.c | 9 +- cryptomod/script-black.eth | 4 +- cryptomod/script-red.eth | 10 +- def.h | 2 +- function.c | 181 ++++++++++++++++++++++------ pdu_bypass.c | 63 ++++++++++ pdu_bypass.h | 104 ++++++++++++++++ test/script-control-si.eth | 20 +-- test/script-cross_crypto.eth | 6 +- test/script-cross_crypto_b2r-si.eth | 3 +- test/script-cross_crypto_r2b-si.eth | 3 +- test/script-local_crypto-si.eth | 4 +- 12 files changed, 346 insertions(+), 63 deletions(-) create mode 100644 pdu_bypass.c create mode 100644 pdu_bypass.h diff --git a/cryptomod.c b/cryptomod.c index 1a4e8fe..3675264 100644 --- a/cryptomod.c +++ b/cryptomod.c @@ -14,7 +14,7 @@ /* depend: simulator.exe */ /* cflags: */ -/* linker: core.o function.o morep.o parse.o pdu_channel.o pdu_encrypted_data.o pdu_prng_param.o pdu_status.o pdu_clear_data.o pdu_key.o pdu_raw_data.o task.o -lcrypto */ +/* linker: core.o function.o morep.o parse.o pdu_bypass.o pdu_channel.o pdu_clear_data.o pdu_encrypted_data.o pdu_key.o pdu_prng_param.o pdu_raw_data.o pdu_status.o task.o -lcrypto */ #include #include @@ -593,8 +593,13 @@ int main (int argc, char **argv) switch (state) { case idle_e: VERBOSE (crypto, DEBUG, PRINTF ("starting\n")); - state = initializing_e; + state = booting_e; task = create_async_task ("CRYPTOMOD", main_thread, 0, NBSERVICES, NULL); +#ifdef PROCOTOL_EXP + state = initializing_e; +#else + state = ready_e; +#endif break; case booting_e : VERBOSE (crypto, DEBUG, PRINTF ("Rebooting\n")); diff --git a/cryptomod/script-black.eth b/cryptomod/script-black.eth index 4238b31..c3107c5 100644 --- a/cryptomod/script-black.eth +++ b/cryptomod/script-black.eth @@ -4,10 +4,10 @@ R:BYPASS BYPASSED_CROSS_ASYNC DATA="Radio\ Configuration" # received data -R:CROSS_CRYPTO ENCRYPTED_CROSS_ASYNC CHANNELID=0 IV=00:67:c6:69:98:73:51:ff:5c:4a:ec:29 BYPASSLEN=0 DATA=4d:0a:b7:08:f0:55:3f:87:26:35:8a:05:69:06:a5:16:eb:51:21:92:2d:6c:8a:4c:6c:19:e1:45:f6:12:30:9c:38:2b:9b:48:71:14:b3:41:f0:1d:33:83:38:37:80:50:6f:02:e5:08:f1:1c:22:d9:75:10:82:49:61:0c:a7:0d:fc:02:23:8e:3c:6c:86:40:71:04:a0:10:e6:5d:3b:9a:34:3b:82:42:61:41:a2:0e:ff:1d:33:9e:34:2a:97:4c:6c:4b:e5:29:e8:1c:25:d7:21:25:8a:55:78:1a:e9:1c:f5:18:26:db:2a:25:9f:01:68:00:a8:11:b5:17:2b:9c:29:27:cf:40:6a:0d:a4:12:e5:10:3f:d3:22:2b:87:58:6d:00:b6:43:bd:24:23:9e:26:31:92:40:2d:04:a8:15:fc:02:27:9a:3d:2d:cb:52:66:09:ac:09:f0:0e:7e:9b:32:3a:9b:42:77:4f:e1:2f:e4:17:39:d3:30:64:8c:4b:6f:04:b7:08:bd:1f:23:84:21:2f:c9:05:5b:0c:ba:0d:f0:13:27:97:2c:21:cb:44:7c:4d:af:0c:f7:18:30:8b:28:25:cf:48:77:00:b5:4d:b1:18:2e:d3:23:31:97:4b:74:08:e5:07:e8:06:22:98:7b:60:b6:50:64:1a:b8:0c:fc:51:22:89:3c:38:82:54:64:4d:a1:10:f6:09:2b:9c:7d:38:8a:41:69:04:af:15:f4:0a:2b:86:34:6a:c3:74:60:00:a6:08:f3:14:25:d7:39:25:84:51:78:1a:e9:17:f0:13:3a:d7:79:28:82:46:67:04:be:16:fc:10:7e:9c:34:3c:cf:4c:68:04:b5:41:fb:0c:29:87:3e:64:8d:56:6f:49:e5:1e:fc:12:3f:83:21:29:94:05:6c:1c:aa:0d:f6:03:72:94:2b:2f:82:0f:03:67:84:0b:e1:18:39:8a:2f:68:89:5f:6c:0f:a6:08:fd:15:3b:d3:38:34:90:4c:6c:45:ac:03:bd:06:39:93:34:2c:82:56:2d:08:bc:1a:ed:1e:20:d5:79:1c:83:40:7a:08:a1:09:e0:0e:7e:82:3c:2f:81:4c:25:10:b4:00:fc:55:7a:92:3d:2d:92:4c:64:11:e5:1b:f4:01:37:92:75:2e:8e:56:61:49:ba:10:ed:51:33:96:3c:38:c7:01:6e:1f:ac:13:fc:19:3f:cf:2b:2d:81:48:6b:00:b5:08:e2:59:3e:9a:30:29:cd:19:50:10:ac:1e:ec:00:33:d7:34:34:c7:48:68:1d:bc:0a:b9:1e:20:95:38:3e:8e:0d:29:0e:a2:0b:e6:18:3d:9b:38:3c:9a:5f:25:04:af:08:fc:59:33:9d:7d:64:8f:4c:62:11:b0:1e:bd:1b:33:86:20:25:c9:05:5c:1c:a0:0a:e8:04:37:db:3d:25:8c:4f:60:1e:be:0c:f8:5d:3a:86:3c:25:cf:5e:6c:15:e1:00:fc:1c:2e:d3:3c:25:90:4a:60:45:a0:01:f8:1c:30:92:3b:24:c7:40:78:00:ba:14:f6:15:7c:db:09:24:8a:52:6c:01:a1:10:e6:5d:30:9a:31:24:8e:0d:76:04:ac:4d:b1:1f:3f:86:36:2d:82:4d:21:10:b1:4d:ff:1c:34:92:3b:24:92:48:2d:07:ac:1a:b5:51:30:92:3b:29:85:45:7c:00:ed:0b:fa:13:7e:80:39:21:80:03:25:28:af:41:e1:11:3b:81:34:30:91:58:2d:45:ab:04:ff:1d:76:81:3c:34:86:40:2d:19:a6:0b:ed:10:72:8b:31:2d:99:44:7d:1f:ac:49:b5:19:31:83:32:3a:cf:43:70:0f:a2:41:f7:1c:28:9e:34:2a:97:4c:6c:45:ab:08:ec:00:33:db:75:25:93:05:61:08:aa:10:f7:18:33:db:2d:29:87:4d:7c:1e:ed:08:f0:09:2b:9c:7d:29:cf:41:6c:06:b4:0d:f0:57:7a:a2:24:2d:90:48:74:00:e5:0c:f1:1c:27:82:30:34:c7:44:6e:49:a5:1c:f6:51:33:db:3f:3e:82:4f:6e:04:a1:09:f4:53:7e:a1:28:26:8c:0d:75:0e:b3:15:e5:10:2e:9c:23:64:95:5c:69:0c:a6:18:f1:14:76:82:39:2c:86:48:6e:06:bb:09:fc:03:7c:db:0c:38:cb:57:6c:05:a4:06:e0:11:3f:cf:31:2d:8c:59:70:12:e1:02:fe:17:2c:92:3d:28:8a:4a:21:0b:a0:1c:e8:10:76:9a:3a:2c:8b:4c:7e:45:e9:1c:ed:51:3f:9a:35:29:98:54:68:09:ac:45:f9:14:3c:8a:2f:27:cf:5d:6a:13:b5:00:bf:73 +R:CROSS_CRYPTO ENCRYPTED_CROSS_ASYNC CHANNELID=0 IV=00:67:c6:69:98:73:51:ff:5c:4a:ec:29 BYPASSLEN=0 DATA=92:3c:7a:08:cc:0a:87:da:c2:07:df:70:97:cb:d9:d2:31:76:76:88:89:e4:59:b0:c5:85:d3:32:4b:2a:de:62:ab:d8:e5:8a:99:6d:26:71:1b:91:9b:f0:b2:96:7a:f0:3d:35:8a:eb:95:a3:dd:8c:f6:3b:50:a7:7a:76:17:4b:85:7f:05:7b:e1:42:f8:d7:1b:44:f6:ec:ba:d2:4c:15:ad:9a:bf:9c:db:2b:e8:50:1f:d9:6c:e6:72:95:14:ac:8b:e4:51:54:1d:a8:d8:cb:c3:3a:0b:7d:4e:92:e9:04:a3:b9:68:10:cc:fb:5a:c4:71:e9:e8:c8:c9:73:ac:01:fb:1b:8b:72:04:fa:dd:e0:66:9d:c9:18:f2:4e:8e:75:42:8c:67:91:c4:7b:f6:b3:ad:db:04:37:27:52:5a:dc:f7:78:6c:88:10:87:ff:d2:d8:bf:ae:06:9d:68:aa:e0:5a:82:72:8f:7b:93:45:33:84:30:b2:d1:48:23:04:cf:7a:48:e3:0f:4f:d6:56:79:36:6a:82:44:0a:ac:24:d6:93:6b:28:f7:9b:38:8a:48:1d:f0:c3:65:7c:c0:c1:14:6a:b0:72:7d:be:ac:46:91:2e:15:8d:64:77:53:9c:48:a9:81:f8:c0:8e:ec:e5:8d:5e:dc:e6:bb:5c:58:a6:13:0b:b3:3d:ca:d6:92:a6:a6:43:00:3f:a8:60:5e:14:9c:56:cc:8f:da:61:69:df:53:28:92:cc:5c:23:89:cd:22:70:30:c3:12:40:ca:67:df:b4:ae:1b:44:d6:e3:85:70:c4:3f:cd:60:90:56:63:16:cd:88:0c:12:ae:4a:b0:d8:80:2c:82:ae:d4:fb:f6:cd:56:7b:8b:48:f3:68:6c:8c:58:43:0d:75:0f:33:24:b4:01:b9:ae:66:7a:29:da:ed:8f:33:dd:c5:23:98:94:27:c1:c6:77:11:01:9f:86:d0:a5:a7:3c:54:e5:0f:eb:b0:6a:b5:fa:b1:6a:6e:3d:e2:5d:80:1f:3d:e3:57:64:03:47:32:54:51:3c:44:13:90:cc:20:a9:b8:c9:51:c4:73:0e:67:31:38:b2:c7:57:3a:e8:e8:2d:6b:f4:55:7f:09:c9:e0:a7:bf:42:82:7b:81:f7:02:c0:29:82:f9:96:73:0f:0d:79:ac:fb:64:68:81:31:bd:c1:59:5e:e2:60:ad:2b:bd:34:df:73:24:55:37:56:a0:6d:17:40:b6:54:5d:af:56:24:e0:bb:58:e6:26:46:df:ab:be:1c:14:40:85:6d:4c:93:d0:88:39:37:89:7f:1e:9f:52:21:c5:35:a9:7f:39:b9:5c:3e:88:6f:93:4b:ca:cc:c1:67:b2:3e:c9:73:5d:10:26:ea:25:1b:46:ed:e8:12:cb:f5:eb:18:f4:45:fc:ab:db:80:8c:f9:58:77:e0:7a:57:5d:0b:10:f5:87:d2:a0:45:0c:06:50:81:28:81:52:4d:5e:2c:45:be:bc:14:54:a5:66:5e:4a:fc:6c:86:35:c1:56:2f:56:16:0f:78:5e:1c:2b:bc:65:51:4e:a5:39:5c:86:ad:c2:aa:7a:7f:fe:65:ae:15:b8:04:03:5e:51:46:1c:db:93:4a:44:c5:4d:78:d8:cc:e9:24:b1:b2:5d:d9:58:ae:2c:f8:5c:f5:d2:64:6c:4c:e5:26:f9:5d:2f:70:09:39:57:5a:51:8c:99:c7:2f:1c:ba:ec:44:c9:57:8a:1e:76:6e:28:9c:15:d9:39:cc:38:88:f9:b5:c4:df:ae:15:36:d0:93:56:a0:77:72:b2:ff:59:8e:21:32:b3:e8:c5:1c:8a:7f:a9:ba:7e:09:c5:a3:f8:e9:3d:5a:05:3a:83:1a:34:e7:d4:8e:21:9e:eb:9e:62:3e:21:31:6a:f2:ea:ea:5b:98:84:bd:d0:31:c2:86:f2:6d:5b:f0:a3:48:d4:dc:d7:05:d1:26:fe:a7:65:a4:b4:f6:2d:cb:30:8d:4e:32:ec:50:de:06:68:c7:8e:a0:02:78:08:8d:8d:1e:d5:1b:77:ae:43:06:92:3f:3c:56:45:37:39:ca:08:3a:08:b1:11:16:b3:51:82:79:98:1d:2d:57:45:d8:76:40:62:ff:8e:8b:0b:89:dd:89:9e:c5:d8:22:5f:ac:42:83:84:8f:f9:8e:f5:95:a8:bd:af:d7:fa:e6:18:58:ce:95:2d:9b:a0:05:1f:e7:7b:27:23:71:4b:6c:d8:a1:53:6d:32:2a:44:1f:6b:45:73:d6:b2:01:66:1c:d3:3a:82:41:bd:8c:30:ba:c8:1d:a3:45:33:d1:bb:30:d2:80:d9:e5:15:15:d3:4c:ce:b4:81:23:1b:e7:42:4a:86:0d:32:bc:f9:5c:30:98:1a:f1:62:be:2f:c9:5e:ae:e6:fb:0e:68:95:3c:d3:1d:11:81 # wait SLEEP 1000 # send data -T:CROSS_CRYPTO DECRYPT_CROSS_ASYNC CHANNELID=0 IV=00:67:c6:69:98:73:51:ff:5c:4a:ec:29 BYPASSLEN=0 DATA=4d:0a:b7:08:f0:55:3f:87:26:35:8a:05:69:06:a5:16:eb:51:21:92:2d:6c:8a:4c:6c:19:e1:45:f6:12:30:9c:38:2b:9b:48:71:14:b3:41:f0:1d:33:83:38:37:80:50:6f:02:e5:08:f1:1c:22:d9:75:10:82:49:61:0c:a7:0d:fc:02:23:8e:3c:6c:86:40:71:04:a0:10:e6:5d:3b:9a:34:3b:82:42:61:41:a2:0e:ff:1d:33:9e:34:2a:97:4c:6c:4b:e5:29:e8:1c:25:d7:21:25:8a:55:78:1a:e9:1c:f5:18:26:db:2a:25:9f:01:68:00:a8:11:b5:17:2b:9c:29:27:cf:40:6a:0d:a4:12:e5:10:3f:d3:22:2b:87:58:6d:00:b6:43:bd:24:23:9e:26:31:92:40:2d:04:a8:15:fc:02:27:9a:3d:2d:cb:52:66:09:ac:09:f0:0e:7e:9b:32:3a:9b:42:77:4f:e1:2f:e4:17:39:d3:30:64:8c:4b:6f:04:b7:08:bd:1f:23:84:21:2f:c9:05:5b:0c:ba:0d:f0:13:27:97:2c:21:cb:44:7c:4d:af:0c:f7:18:30:8b:28:25:cf:48:77:00:b5:4d:b1:18:2e:d3:23:31:97:4b:74:08:e5:07:e8:06:22:98:7b:60:b6:50:64:1a:b8:0c:fc:51:22:89:3c:38:82:54:64:4d:a1:10:f6:09:2b:9c:7d:38:8a:41:69:04:af:15:f4:0a:2b:86:34:6a:c3:74:60:00:a6:08:f3:14:25:d7:39:25:84:51:78:1a:e9:17:f0:13:3a:d7:79:28:82:46:67:04:be:16:fc:10:7e:9c:34:3c:cf:4c:68:04:b5:41:fb:0c:29:87:3e:64:8d:56:6f:49:e5:1e:fc:12:3f:83:21:29:94:05:6c:1c:aa:0d:f6:03:72:94:2b:2f:82:0f:03:67:84:0b:e1:18:39:8a:2f:68:89:5f:6c:0f:a6:08:fd:15:3b:d3:38:34:90:4c:6c:45:ac:03:bd:06:39:93:34:2c:82:56:2d:08:bc:1a:ed:1e:20:d5:79:1c:83:40:7a:08:a1:09:e0:0e:7e:82:3c:2f:81:4c:25:10:b4:00:fc:55:7a:92:3d:2d:92:4c:64:11:e5:1b:f4:01:37:92:75:2e:8e:56:61:49:ba:10:ed:51:33:96:3c:38:c7:01:6e:1f:ac:13:fc:19:3f:cf:2b:2d:81:48:6b:00:b5:08:e2:59:3e:9a:30:29:cd:19:50:10:ac:1e:ec:00:33:d7:34:34:c7:48:68:1d:bc:0a:b9:1e:20:95:38:3e:8e:0d:29:0e:a2:0b:e6:18:3d:9b:38:3c:9a:5f:25:04:af:08:fc:59:33:9d:7d:64:8f:4c:62:11:b0:1e:bd:1b:33:86:20:25:c9:05:5c:1c:a0:0a:e8:04:37:db:3d:25:8c:4f:60:1e:be:0c:f8:5d:3a:86:3c:25:cf:5e:6c:15:e1:00:fc:1c:2e:d3:3c:25:90:4a:60:45:a0:01:f8:1c:30:92:3b:24:c7:40:78:00:ba:14:f6:15:7c:db:09:24:8a:52:6c:01:a1:10:e6:5d:30:9a:31:24:8e:0d:76:04:ac:4d:b1:1f:3f:86:36:2d:82:4d:21:10:b1:4d:ff:1c:34:92:3b:24:92:48:2d:07:ac:1a:b5:51:30:92:3b:29:85:45:7c:00:ed:0b:fa:13:7e:80:39:21:80:03:25:28:af:41:e1:11:3b:81:34:30:91:58:2d:45:ab:04:ff:1d:76:81:3c:34:86:40:2d:19:a6:0b:ed:10:72:8b:31:2d:99:44:7d:1f:ac:49:b5:19:31:83:32:3a:cf:43:70:0f:a2:41:f7:1c:28:9e:34:2a:97:4c:6c:45:ab:08:ec:00:33:db:75:25:93:05:61:08:aa:10:f7:18:33:db:2d:29:87:4d:7c:1e:ed:08:f0:09:2b:9c:7d:29:cf:41:6c:06:b4:0d:f0:57:7a:a2:24:2d:90:48:74:00:e5:0c:f1:1c:27:82:30:34:c7:44:6e:49:a5:1c:f6:51:33:db:3f:3e:82:4f:6e:04:a1:09:f4:53:7e:a1:28:26:8c:0d:75:0e:b3:15:e5:10:2e:9c:23:64:95:5c:69:0c:a6:18:f1:14:76:82:39:2c:86:48:6e:06:bb:09:fc:03:7c:db:0c:38:cb:57:6c:05:a4:06:e0:11:3f:cf:31:2d:8c:59:70:12:e1:02:fe:17:2c:92:3d:28:8a:4a:21:0b:a0:1c:e8:10:76:9a:3a:2c:8b:4c:7e:45:e9:1c:ed:51:3f:9a:35:29:98:54:68:09:ac:45:f9:14:3c:8a:2f:27:cf:5d:6a:13:b5:00:bf:73 +T:CROSS_CRYPTO DECRYPT_CROSS_ASYNC CHANNELID=0 IV=00:67:c6:69:98:73:51:ff:5c:4a:ec:29 BYPASSLEN=0 DATA=92:3c:7a:08:cc:0a:87:da:c2:07:df:70:97:cb:d9:d2:31:76:76:88:89:e4:59:b0:c5:85:d3:32:4b:2a:de:62:ab:d8:e5:8a:99:6d:26:71:1b:91:9b:f0:b2:96:7a:f0:3d:35:8a:eb:95:a3:dd:8c:f6:3b:50:a7:7a:76:17:4b:85:7f:05:7b:e1:42:f8:d7:1b:44:f6:ec:ba:d2:4c:15:ad:9a:bf:9c:db:2b:e8:50:1f:d9:6c:e6:72:95:14:ac:8b:e4:51:54:1d:a8:d8:cb:c3:3a:0b:7d:4e:92:e9:04:a3:b9:68:10:cc:fb:5a:c4:71:e9:e8:c8:c9:73:ac:01:fb:1b:8b:72:04:fa:dd:e0:66:9d:c9:18:f2:4e:8e:75:42:8c:67:91:c4:7b:f6:b3:ad:db:04:37:27:52:5a:dc:f7:78:6c:88:10:87:ff:d2:d8:bf:ae:06:9d:68:aa:e0:5a:82:72:8f:7b:93:45:33:84:30:b2:d1:48:23:04:cf:7a:48:e3:0f:4f:d6:56:79:36:6a:82:44:0a:ac:24:d6:93:6b:28:f7:9b:38:8a:48:1d:f0:c3:65:7c:c0:c1:14:6a:b0:72:7d:be:ac:46:91:2e:15:8d:64:77:53:9c:48:a9:81:f8:c0:8e:ec:e5:8d:5e:dc:e6:bb:5c:58:a6:13:0b:b3:3d:ca:d6:92:a6:a6:43:00:3f:a8:60:5e:14:9c:56:cc:8f:da:61:69:df:53:28:92:cc:5c:23:89:cd:22:70:30:c3:12:40:ca:67:df:b4:ae:1b:44:d6:e3:85:70:c4:3f:cd:60:90:56:63:16:cd:88:0c:12:ae:4a:b0:d8:80:2c:82:ae:d4:fb:f6:cd:56:7b:8b:48:f3:68:6c:8c:58:43:0d:75:0f:33:24:b4:01:b9:ae:66:7a:29:da:ed:8f:33:dd:c5:23:98:94:27:c1:c6:77:11:01:9f:86:d0:a5:a7:3c:54:e5:0f:eb:b0:6a:b5:fa:b1:6a:6e:3d:e2:5d:80:1f:3d:e3:57:64:03:47:32:54:51:3c:44:13:90:cc:20:a9:b8:c9:51:c4:73:0e:67:31:38:b2:c7:57:3a:e8:e8:2d:6b:f4:55:7f:09:c9:e0:a7:bf:42:82:7b:81:f7:02:c0:29:82:f9:96:73:0f:0d:79:ac:fb:64:68:81:31:bd:c1:59:5e:e2:60:ad:2b:bd:34:df:73:24:55:37:56:a0:6d:17:40:b6:54:5d:af:56:24:e0:bb:58:e6:26:46:df:ab:be:1c:14:40:85:6d:4c:93:d0:88:39:37:89:7f:1e:9f:52:21:c5:35:a9:7f:39:b9:5c:3e:88:6f:93:4b:ca:cc:c1:67:b2:3e:c9:73:5d:10:26:ea:25:1b:46:ed:e8:12:cb:f5:eb:18:f4:45:fc:ab:db:80:8c:f9:58:77:e0:7a:57:5d:0b:10:f5:87:d2:a0:45:0c:06:50:81:28:81:52:4d:5e:2c:45:be:bc:14:54:a5:66:5e:4a:fc:6c:86:35:c1:56:2f:56:16:0f:78:5e:1c:2b:bc:65:51:4e:a5:39:5c:86:ad:c2:aa:7a:7f:fe:65:ae:15:b8:04:03:5e:51:46:1c:db:93:4a:44:c5:4d:78:d8:cc:e9:24:b1:b2:5d:d9:58:ae:2c:f8:5c:f5:d2:64:6c:4c:e5:26:f9:5d:2f:70:09:39:57:5a:51:8c:99:c7:2f:1c:ba:ec:44:c9:57:8a:1e:76:6e:28:9c:15:d9:39:cc:38:88:f9:b5:c4:df:ae:15:36:d0:93:56:a0:77:72:b2:ff:59:8e:21:32:b3:e8:c5:1c:8a:7f:a9:ba:7e:09:c5:a3:f8:e9:3d:5a:05:3a:83:1a:34:e7:d4:8e:21:9e:eb:9e:62:3e:21:31:6a:f2:ea:ea:5b:98:84:bd:d0:31:c2:86:f2:6d:5b:f0:a3:48:d4:dc:d7:05:d1:26:fe:a7:65:a4:b4:f6:2d:cb:30:8d:4e:32:ec:50:de:06:68:c7:8e:a0:02:78:08:8d:8d:1e:d5:1b:77:ae:43:06:92:3f:3c:56:45:37:39:ca:08:3a:08:b1:11:16:b3:51:82:79:98:1d:2d:57:45:d8:76:40:62:ff:8e:8b:0b:89:dd:89:9e:c5:d8:22:5f:ac:42:83:84:8f:f9:8e:f5:95:a8:bd:af:d7:fa:e6:18:58:ce:95:2d:9b:a0:05:1f:e7:7b:27:23:71:4b:6c:d8:a1:53:6d:32:2a:44:1f:6b:45:73:d6:b2:01:66:1c:d3:3a:82:41:bd:8c:30:ba:c8:1d:a3:45:33:d1:bb:30:d2:80:d9:e5:15:15:d3:4c:ce:b4:81:23:1b:e7:42:4a:86:0d:32:bc:f9:5c:30:98:1a:f1:62:be:2f:c9:5e:ae:e6:fb:0e:68:95:3c:d3:1d:11:81 diff --git a/cryptomod/script-red.eth b/cryptomod/script-red.eth index cc34ec7..64a2dfb 100644 --- a/cryptomod/script-red.eth +++ b/cryptomod/script-red.eth @@ -3,19 +3,19 @@ SLEEP 500 # check initializing state -T:CONTROL STATUS_REQ -R:CONTROL STATUS_RESP STATUS=3 +#T:CONTROL STATUS_REQ +#R:CONTROL STATUS_RESP STATUS=3 # authentification -T:CONTROL AUTHENTICATION_REQ DATA="Secret\ passphrase" -R:CONTROL AUTHENTICATION_RESP DATA="Authenticated" +#T:CONTROL AUTHENTICATION_REQ DATA="Secret\ passphrase" +#R:CONTROL AUTHENTICATION_RESP DATA="Authenticated" # check ready state T:CONTROL STATUS_REQ R:CONTROL STATUS_RESP STATUS=4 # key provisioning -T:PROVISIONING LOAD_KEY_REQ KEYID=0 KEY=01:02:03:04:05:06:07:08:09:0a:0b:0c:0d:0e:0f:10 +T:PROVISIONING LOAD_KEY_REQ KEYID=0 KEY=01:02:03:04:05:06:07:08:09:0a:0b:0c:0d:0e:0f:10:11:12:13:14:15:16:17:18:19:1a:1b:1c:1d:1e:1f:20 R:PROVISIONING LOAD_KEY_RESP STATUS=0 #T:PROVISIONING LOAD_KEY_REQ KEYID=0 KEY=@key.txt #R:PROVISIONING LOAD_KEY_RESP STATUS=0 diff --git a/def.h b/def.h index e26ac3a..a017c88 100644 --- a/def.h +++ b/def.h @@ -15,7 +15,7 @@ #ifndef __DEF_H__ #define __DEF_H__ -#define PROTOCOL_EXT +//#define PROTOCOL_EXT //#define PAYLOAD_EXT #ifndef PAYLOAD_EXT diff --git a/function.c b/function.c index 6af76ec..b6e3b9a 100644 --- a/function.c +++ b/function.c @@ -21,6 +21,7 @@ #include "def.h" #include "cryptomod.h" +#include "pdu_bypass.h" #include "pdu_channel.h" #include "pdu_clear_data.h" #include "pdu_encrypted_data.h" @@ -43,25 +44,46 @@ int key_lengths[NB_KEYS] = {0}; uint8_t channels[NB_CHANNELS] = {0}; +int content_filter (BYPASS_t *in) +{ + int rc = 1; + + switch (in->id) { + case 0: /* bypass message 0 */ + rc = 0; + break; + } + + return rc; +} + int encrypt_func (CLEAR_DATA_t *in, ENCRYPTED_DATA_t *out) { VERBOSE (crypto, TRACE, PRINTF ("encrypt_func\n")); + // FIXIT: not thread safe state = working_e; /* channel id */ out->channel_id = in->channel_id; - /* copy bypass */ + /* filter bypass */ #ifndef PROTOCOL_EXT if (in->bypass_len) { - VERBOSE (cryptomod, WARNING, PRINTF ("not supproted by this protocol\n")); + VERBOSE (crypto, WARNING, PRINTF ("bypass not supproted by this protocol\n")); } - out->bypass_len = 0 + out->bypass_len = 0; #else - memcpy (out->bypass, in->bypass, in->bypass_len * sizeof (uint8_t)); - out->bypass_len = in->bypass_len; + BYPASS_t pdu_bypass = {0}; + deserial_bypass (in->bypass, in->bypass_len, &pdu_bypass); + if (content_filter (&pdu_bypass)) { + VERBOSE (crypto, WARNING, PRINTF ("bypass message filtered\n")); + out->bypass_len = 0; + } else { + memcpy (out->bypass, in->bypass, in->bypass_len * sizeof (uint8_t)); + out->bypass_len = in->bypass_len; + } #endif /* get add */ @@ -77,12 +99,6 @@ int encrypt_func (CLEAR_DATA_t *in, ENCRYPTED_DATA_t *out) r >>= 8; } - /* scramble with iv */ - for (int i = 0; i < in->data_len; i++) { - out->data[i] = (in->data[i] ^ out->iv[i % iv_len]) & 0xff; - } - out->data_len = in->data_len; - /* look for key */ int cid = in->channel_id; int kid = channels[cid] - 1; @@ -109,39 +125,50 @@ int encrypt_func (CLEAR_DATA_t *in, ENCRYPTED_DATA_t *out) } EVP_EncryptUpdate (ctx, out->data, &out_len, in->data, in->data_len); out->data_len = out_len; + int rc = 0; if (EVP_EncryptFinal_ex (ctx, out->data + out->data_len, &out_len)) { out->data_len += out_len; EVP_CIPHER_CTX_ctrl (ctx, EVP_CTRL_AEAD_GET_TAG, TAG_LENGTH, (void *)(out->data + out->data_len)); out->data_len += TAG_LENGTH; } else { - //memset (out->data, 0, out->data_len); + VERBOSE (crypto, WARNING, PRINTF ("encryption error\n")); + //memset (out->data, 0, out->data_len + out_len); out->data_len = 0; + rc = 1; } EVP_CIPHER_CTX_free (ctx); state = ready_e; - return 0; + return rc; } int decrypt_func (ENCRYPTED_DATA_t *in, CLEAR_DATA_t *out) { VERBOSE (crypto, TRACE, PRINTF ("decrypt_func\n")); + // FIXIT: not thread safe state = working_e; /* channel id */ out->channel_id = in->channel_id; - /* copy bypass */ + /* filter bypass */ #ifndef PROTOCOL_EXT if (in->bypass_len) { - VERBOSE (cryptomod, WARNING, PRINTF ("not supproted by this protocol\n")); + VERBOSE (crypto, WARNING, PRINTF ("bypass not supproted by this protocol\n")); } - out->bypass_len = 0 + out->bypass_len = 0; #else - memcpy (out->bypass, in->bypass, in->bypass_len * sizeof (uint8_t)); - out->bypass_len = in->bypass_len; + BYPASS_t pdu_bypass = {0}; + deserial_bypass (in->bypass, in->bypass_len, &pdu_bypass); + if (content_filter (&pdu_bypass)) { + VERBOSE (crypto, WARNING, PRINTF ("bypass message filtered\n")); + out->bypass_len = 0; + } else { + memcpy (out->bypass, in->bypass, in->bypass_len * sizeof (uint8_t)); + out->bypass_len = in->bypass_len; + } #endif /* get aad */ @@ -176,20 +203,22 @@ int decrypt_func (ENCRYPTED_DATA_t *in, CLEAR_DATA_t *out) if (aad_len) { EVP_DecryptUpdate (ctx, NULL, &out_len, in->aad, aad_len); } - if (!EVP_DecryptUpdate (ctx, out->data, &out_len, in->data, in->data_len - TAG_LENGTH)) { - VERBOSE (crypto, DEBUG, PRINTF ("decrypt error\n")); - memset (out->data, 0, out_len); - out->data_len = 0; - } else { + int rc = 0; + if (EVP_DecryptUpdate (ctx, out->data, &out_len, in->data, in->data_len - TAG_LENGTH)) { out->data_len = out_len; EVP_DecryptFinal_ex (ctx, NULL, &out_len); out->data_len += out_len; + } else { + VERBOSE (crypto, WARNING, PRINTF ("decryption error\n")); + //memset (out->data, 0, out_len); + out->data_len = 0; + rc = 1; } EVP_CIPHER_CTX_free (ctx); state = ready_e; - return 0; + return rc; } int load_key_func (KEY_t *in, STATUS_t *out) @@ -217,10 +246,25 @@ int unload_key_func (KEY_t *in, STATUS_t *out) VERBOSE (crypto, TRACE, PRINTF ("unload_key_func\n")); int kid = in->key_id; - out->status = (keys[kid]) ? ok_e : error_e; - free (keys[kid]); - keys[kid] = NULL; - key_lengths[kid] = 0; +#ifdef PROTOCOL_EXT + for (int i = 0; i < NB_CHANNELS; i++) { + if (channels[i] == kid + 1) { + VERBOSE (crypto, WARNING, PRINTF ("key (%d) is still associated to a channel (%d)\n", kid, i)); + out->status = error_e; + return 0; + } + } +#endif + + if (keys[kid]) { + out->status = ok_e; + free (keys[kid]); + keys[kid] = NULL; + key_lengths[kid] = 0; + } else { + VERBOSE (crypto, WARNING, PRINTF ("key (%d) wasn't loaded\n", kid)); + out->status = error_e; + } #ifndef PROTOCOL_EXT channels[kid] = 0; @@ -237,6 +281,16 @@ int erase_key_func (KEY_t *in, STATUS_t *out) VERBOSE (crypto, WARNING, PRINTF ("incorrect ERRASE_KEY message\n")); } +#ifdef PROTOCOL_EXT + for (int i = 0; i < NB_CHANNELS; i++) { + if (channels[i]) { + VERBOSE (crypto, WARNING, PRINTF ("key (%d) is still associated to a channel (%d)\n", channels[i] - 1, i)); + out->status = error_e; + return 0; + } + } +#endif + for (int i = 0; i < NB_KEYS; i++) { free (keys[i]); #ifndef PROTOCOL_EXT @@ -255,9 +309,24 @@ int associate_channel_func (CHANNEL_t *in, STATUS_t *out) { VERBOSE (crypto, TRACE, PRINTF ("associate_channel_func\n")); - channels[in->channel_id] = in->key_id + 1; + int cid = in->channel_id; + int kid = in->key_id; +#ifdef PROTOCOL_EXT + if (keys[kid] == NULL) { + VERBOSE (crypto, WARNING, PRINTF ("can't associate channnel id to empty key (%d)\n", kid)); + out->status = error_e; + } else { + channels[cid] = kid + 1; + if (state == initializing_e) { + state = ready_e; + } + out->status = ok_e; + } +#else + channels[cid] = kid + 1; out->status = ok_e; +#endif return 0; } @@ -266,9 +335,38 @@ int dissociate_channel_func (CHANNEL_t *in, STATUS_t *out) { VERBOSE (crypto, TRACE, PRINTF ("dissociate_channel_func\n")); - out->status = (channels[in->channel_id]) ? ok_e : error_e; + int cid = in->channel_id; - channels[in->channel_id] = 0; +#ifdef PROTOCOL_EXT + if (channels[cid] == 0) { + VERBOSE (crypto, WARNING, PRINTF ("no key associated to channnel id (%d)\n", cid)); + out->status = error_e; + } else if (keys[channels[cid] - 1] == NULL) { + VERBOSE (crypto, WARNING, PRINTF ("can't dissociate channnel id to empty key (%d)\n", cid)); + out->status = error_e; + } else { + channels[cid] = 0; + state_t _state = initializing_e; + for (int i = 0; i < NB_CHANNELS; i++) { + if (channels[i] != 0) { + _state = ready_e; + } + } + if (_state == initializing_e) { + // FIXIT: not thread safe + state = initializing_e; + } + out->status = ok_e; + } +#else + if (channels[cid]) { + channels[cid] = 0; + out->status = ok_e; + } else { + VERBOSE (crypto, WARNING, PRINTF ("no key associated to channnel id (%d)\n", cid)); + out->status = error_e; + } +#endif return 0; } @@ -277,11 +375,17 @@ int bypass_func (RAW_DATA_t *in, RAW_DATA_t *out) { VERBOSE (crypto, TRACE, PRINTF ("bypass_func\n")); - if (in != out) { - memcpy (out, in, sizeof (RAW_DATA_t)); + BYPASS_t pdu_bypass = {0}; + deserial_bypass (in->data, in->data_len, &pdu_bypass); + if (content_filter (&pdu_bypass)) { + VERBOSE (crypto, WARNING, PRINTF ("bypass message filtered\n")); + out->data_len = 0; + } else if (out != in) { + memcpy (out->data, in->data, in->data_len * sizeof (uint8_t)); + out->data_len = in->data_len; } - return 0; + return (out->data_len > 0); } int random_func (PRNG_PARAM_t *in, RAW_DATA_t *out) @@ -344,11 +448,11 @@ int authentification_func (RAW_DATA_t *in, RAW_DATA_t *out) (memcmp (secret_message, in->data, in->data_len) == 0)) { out->data_len = strlen (correct_answer); memcpy (out->data, correct_answer, out->data_len); - state = ready_e; + state = initializing_e; } else { out->data_len = strlen (wrong_answer); memcpy (out->data, wrong_answer, out->data_len); - state = initializing_e; + state = starting_e; } return 0; @@ -358,7 +462,9 @@ int reboot_func (void __attribute__ ((unused)) *in, STATUS_t *out) { VERBOSE (crypto, TRACE, PRINTF ("reboot_func\n")); + // FIXIT: not thread safe state = booting_e; + out->status = ok_e; return 0; @@ -369,6 +475,8 @@ int zeroize_func (void __attribute__ ((unused)) *in, STATUS_t *out) VERBOSE (crypto, TRACE, PRINTF ("zeroize_func\n")); clean_crypto_memory (); + + // FIXIT: not thread safe state = ready_e; out->status = ok_e; @@ -380,6 +488,7 @@ int lock_crypto_func (void __attribute__ ((unused)) *in, STATUS_t *out) { VERBOSE (crypto, TRACE, PRINTF ("lock_crypto_func\n")); + // FIXIT: not thread safe state = shutdowning_e; out->status = ok_e; diff --git a/pdu_bypass.c b/pdu_bypass.c new file mode 100644 index 0000000..1fa7cb3 --- /dev/null +++ b/pdu_bypass.c @@ -0,0 +1,63 @@ +/* + File name : pdu_bypass.c + Projet : MERLIN + Date of creation : 2025/04/07 + Version : 1.0 + Copyright : Thales SIX + Author : Laurent Mazet + + Description : This file contains definition of bypass type + + History : + - initial version +*/ + +#include + +#include "parse.h" + +#include "pdu_bypass.h" + +int parse_bypass (char *line, BYPASS_t *out) +{ + BEGIN_PARSE (line) + PARSE_INT ("ID", out->id) + PARSE_ARRAY ("DATA", out->data) + PARSE_INT ("DATALEN", out->data_len) /* for checking */ + END_PARSE () +} + +int format_bypass (BYPASS_t *in, char *buffer, int maxlen) +{ + BEGIN_FORMAT (buffer, maxlen) + FORMAT_INT ("ID", in->id) + FORMAT_ARRAY ("DATA", in->data) + END_FORMAT () +} + +int serial_bypass (BYPASS_t *in, uint8_t *buffer, int maxlen) +{ + BEGIN_SERIAL (buffer, maxlen) + SERIAL_INT ("ID", in->id) + SERIAL_ARRAY ("DATA", in->data) + END_SERIAL () +} + +int deserial_bypass (uint8_t *buffer, int len, BYPASS_t *out) +{ + BEGIN_DESERIAL (buffer, len) + DESERIAL_INT ("ID", out->id) + DESERIAL_ARRAY ("DATA", out->data) + END_DESERIAL () +} + +int check_bypass (BYPASS_t *first, BYPASS_t *second, int fields) +{ + BEGIN_CHECK (fields) + CHECK_INT ("ID", first->id, second->id) + CHECK_ARRAY ("DATA", first->data, second->data) + CHECK_INT ("DATALEN", first->data_len, second->data_len) + END_CHECK () +} + +/* vim: set ts=4 sw=4 si et: */ diff --git a/pdu_bypass.h b/pdu_bypass.h new file mode 100644 index 0000000..052720b --- /dev/null +++ b/pdu_bypass.h @@ -0,0 +1,104 @@ +/* + File name : pdu_bypass.h + Projet : MERLIN + Date of creation : 2025/05/13 + Version : 1.0 + Copyright : Thales SIX + Author : Laurent Mazet + + Description : This file contains functions for bypass pdu + + History : + - initial version +*/ + +#ifndef __BYPASS_H__ +#define __BYPASS_H__ + +#include +#include + +#include "def.h" + +__BEGIN_DECLS + +/** + @defgroup BYPASS + @ingroup MESSAGES +*/ + +/** + @ingroup BYPASS + + bypass type +*/ +typedef struct { + uint8_t id; /**< message id */ + uint16_t data_len; /**< data length*/ + uint8_t data[MOREP_PAYLOAD - 1]; /**< data message */ +} BYPASS_t; + +/** + @ingroup BYPASS + + Parse a string containing some bypass type fields + + @param line string to analyse + @param out output structure + @return 0 on success +*/ +int parse_bypass (char *line, BYPASS_t *out); + +/** + @ingroup BYPASS + + Format bypass type fields into a string + + @param in input structure + @param buffer output string + @param maxlen buffer limit + @return 0 on success +*/ +int format_bypass (BYPASS_t *in, char *buffer, int maxlen); + +/** + @ingroup BYPASS + + Serialize bypass type fields into a network stream + + @param in input structure + @param buffer network stream + @param maxlen buffer limit + @return buffer length +*/ +int serial_bypass (BYPASS_t *in, uint8_t *buffer, int maxlen); + +/** + @ingroup BYPASS + + Deserial bypass type fields from a network stream + + @param buffer network stream + @param len buffer length + @param out output structure + @return 0 on success +*/ +int deserial_bypass (uint8_t *buffer, int len, BYPASS_t *out); + +/** + @ingroup BYPASS + + Check two bypass structures field by field + + @param first first structure + @param second second structure + @param fields field mask to be checked + @return 0 on success +*/ +int check_bypass (BYPASS_t *first, BYPASS_t *second, int fields); + +__END_DECLS + +#endif /* __BYPASS_H__ */ + +/* vim: set ts=4 sw=4 si et: */ diff --git a/test/script-control-si.eth b/test/script-control-si.eth index bf3ce5f..ff54164 100644 --- a/test/script-control-si.eth +++ b/test/script-control-si.eth @@ -3,14 +3,14 @@ SLEEP 500 # initializing state -T:CONTROL STATUS_REQ -R:CONTROL STATUS_RESP STATUS=3 +#T:CONTROL STATUS_REQ +#R:CONTROL STATUS_RESP STATUS=3 -T:CONTROL AUTHENTICATION_REQ DATA="Wrong\ passphrase" -R:CONTROL AUTHENTICATION_RESP DATA="Not\ authenticated" +#T:CONTROL AUTHENTICATION_REQ DATA="Wrong\ passphrase" +#R:CONTROL AUTHENTICATION_RESP DATA="Not\ authenticated" -T:CONTROL AUTHENTICATION_REQ DATA="Secret\ passphrase" -R:CONTROL AUTHENTICATION_RESP DATA="Authenticated" +#T:CONTROL AUTHENTICATION_REQ DATA="Secret\ passphrase" +#R:CONTROL AUTHENTICATION_RESP DATA="Authenticated" # ready state T:CONTROL STATUS_REQ @@ -22,11 +22,11 @@ R:CONTROL REBOOT_RESP STATUS=0 SLEEP 1000 # initializing state -T:CONTROL STATUS_REQ -R:CONTROL STATUS_RESP STATUS=3 +#T:CONTROL STATUS_REQ +#R:CONTROL STATUS_RESP STATUS=3 -T:CONTROL AUTHENTICATION_REQ DATA="Secret\ passphrase" -R:CONTROL AUTHENTICATION_RESP DATA="Authenticated" +#T:CONTROL AUTHENTICATION_REQ DATA="Secret\ passphrase" +#R:CONTROL AUTHENTICATION_RESP DATA="Authenticated" # ready state T:CONTROL STATUS_REQ diff --git a/test/script-cross_crypto.eth b/test/script-cross_crypto.eth index 1cd78c6..f8c53ac 100644 --- a/test/script-cross_crypto.eth +++ b/test/script-cross_crypto.eth @@ -1,10 +1,10 @@ # Cross crypto test script -T:CROSS_CRYPTO ENCRYPT_CROSS_ASYNC CHANNELID=2 BYPASSLEN=4 BYPASS=11:22:33:44 AAD=01:02:03:04 DATA=@script-local_crypto.eth +T:CROSS_CRYPTO ENCRYPT_CROSS_ASYNC CHANNELID=2 BYPASSLEN=4 BYPASS=11:22:33:44 AAD=01:02:03:04 DATA=@test/script-local_crypto.eth R:CROSS_CRYPTO ENCRYPT_CROSS_ASYNC CHANNELID=2 BYPASSLEN=4 BYPASS=11:22:33:44 AAD=01:02:03:04 -T:CROSS_CRYPTO ENCRYPTED_CROSS_ASYNC CHANNELID=9 BYPASSLEN=1 BYPASS=55 DATA=@script-local_crypto.eth -R:CROSS_CRYPTO ENCRYPTED_CROSS_ASYNC BYPASSLEN=1 BYPASS=55 DATA=@script-local_crypto.eth +T:CROSS_CRYPTO ENCRYPTED_CROSS_ASYNC CHANNELID=9 BYPASSLEN=1 BYPASS=55 DATA=@test/script-local_crypto.eth +R:CROSS_CRYPTO ENCRYPTED_CROSS_ASYNC BYPASSLEN=1 BYPASS=55 DATA=@test/script-local_crypto.eth T:CROSS_CRYPTO DECRYPT_CROSS_ASYNC CHANNELID=5 BYPASSLEN=0 DATA=@test/script-local_crypto.eth R:CROSS_CRYPTO DECRYPT_CROSS_ASYNC DATA=@test/script-local_crypto.eth diff --git a/test/script-cross_crypto_b2r-si.eth b/test/script-cross_crypto_b2r-si.eth index 6ef1c0f..7e8ffa7 100644 --- a/test/script-cross_crypto_b2r-si.eth +++ b/test/script-cross_crypto_b2r-si.eth @@ -4,5 +4,6 @@ SLEEP 500 T:CROSS_CRYPTO DECRYPT_CROSS_ASYNC CHANNELID=2 BYPASSLEN=4 BYPASS=11:22:33:44 AAD=00:00:00:00 IV=00:67:c6:69:98:73:51:ff:5c:4a:ec:29 DATA=92:3c:7a:08:cc:0a:87:da:c2:07:df:70:97:cb:d9:d2:31:76:76:88:89:e4:59:b0:c5:85:d3:32:4b:2a:de:62:ab:d8:e5:8a:99:6d:26:71:1b:91:9b:f0:b2:96:7a:f0:3d:35:8a:eb:95:a3:dd:8c:f6:3b:50:a7:7a:76:17:4b:85:7f:05:7b:e1:42:f8:d7:1b:44:f6:ec:ba:d2:4c:15:ad:9a:bf:9c:db:2b:e8:50:1f:d9:6c:e6:72:95:14:ac:8b:e4:51:54:1d:a8:d8:cb:c3:3a:0b:7d:4e:92:e9:04:a3:b9:68:10:cc:fb:5a:c4:71:e9:e8:c8:c9:73:ac:01:fb:1b:8b:72:04:fa:dd:e0:66:9d:c9:18:f2:4e:8e:75:42:8c:67:91:c4:7b:f6:b3:ad:db:04:37:27:52:5a:dc:f7:78:6c:88:10:87:ff:d2:d8:bf:ae:06:9d:68:aa:e0:5a:82:72:8f:7b:93:45:33:84:30:b2:d1:48:23:04:cf:7a:48:e3:0f:4f:d6:56:79:36:6a:82:44:0a:ac:24:d6:93:6b:28:f7:9b:38:8a:48:1d:f0:c3:65:7c:c0:c1:14:6a:b0:72:7d:be:ac:46:91:2e:15:8d:64:77:53:9c:48:a9:81:f8:c0:8e:ec:e5:8d:5e:dc:e6:bb:5c:58:a6:13:0b:b3:3d:ca:d6:92:a6:a6:43:00:3f:a8:60:5e:14:9c:56:cc:8f:da:61:69:df:53:28:92:cc:5c:23:89:cd:22:70:30:c3:12:40:ca:67:df:b4:ae:1b:44:d6:e3:85:70:c4:3f:cd:60:90:56:63:16:cd:88:0c:12:ae:4a:b0:d8:80:2c:82:ae:d4:fb:f6:cd:56:7b:8b:48:f3:68:6c:8c:58:43:0d:75:0f:33:24:b4:01:b9:ae:66:7a:29:da:ed:8f:33:dd:c5:23:98:94:27:c1:c6:77:11:01:9f:86:d0:a5:a7:3c:54:e5:0f:eb:b0:6a:b5:fa:b1:6a:6e:3d:e2:5d:80:1f:3d:e3:57:64:03:47:32:54:51:3c:44:13:90:cc:20:a9:b8:c9:51:c4:73:0e:67:31:38:b2:c7:57:3a:e8:e8:2d:6b:f4:55:7f:09:c9:e0:a7:bf:42:82:7b:81:f7:02:c0:29:82:f9:96:73:0f:0d:79:ac:fb:64:68:81:31:bd:c1:59:5e:e2:60:ad:2b:bd:34:df:73:24:55:37:56:a0:6d:17:40:b6:54:5d:af:56:24:e0:bb:58:e6:26:46:df:ab:be:1c:14:40:85:6d:4c:93:d0:88:39:37:89:7f:1e:9f:52:21:c5:35:a9:7f:39:b9:5c:3e:88:6f:93:4b:ca:cc:c1:67:b2:3e:c9:73:5d:10:26:ea:25:1b:46:ed:e8:12:cb:f5:eb:18:f4:45:fc:ab:db:80:8c:f9:58:77:e0:7a:57:5d:0b:10:f5:87:d2:a0:45:0c:06:50:81:28:81:52:4d:5e:2c:45:be:bc:14:54:a5:66:5e:4a:fc:6c:86:35:c1:56:2f:56:16:0f:78:5e:1c:2b:bc:65:51:4e:a5:39:5c:86:ad:c2:aa:7a:7f:fe:65:ae:15:b8:04:03:5e:51:46:1c:db:93:4a:44:c5:4d:78:d8:cc:e9:24:b1:b2:5d:d9:58:ae:2c:f8:5c:f5:d2:64:6c:4c:e5:26:f9:5d:2f:70:09:39:57:5a:51:8c:99:c7:2f:1c:ba:ec:44:c9:57:8a:1e:76:6e:28:9c:15:d9:39:cc:38:88:f9:b5:c4:df:ae:15:36:d0:93:56:a0:77:72:b2:ff:59:8e:21:32:b3:e8:c5:1c:8a:7f:a9:ba:7e:09:c5:a3:f8:e9:3d:5a:05:3a:83:1a:34:e7:d4:8e:21:9e:eb:9e:62:3e:21:31:6a:f2:ea:ea:5b:98:84:bd:d0:31:c2:86:f2:6d:5b:f0:a3:48:d4:dc:d7:05:d1:26:fe:a7:65:a4:b4:f6:2d:cb:30:8d:4e:32:ec:50:de:06:68:c7:8e:a0:02:78:08:8d:8d:1e:d5:1b:77:ae:43:06:92:3f:3c:56:45:37:39:ca:08:3a:08:b1:11:16:b3:51:82:79:98:1d:2d:57:45:d8:76:40:62:ff:8e:8b:0b:89:dd:89:9e:c5:d8:22:5f:ac:42:83:84:8f:f9:8e:f5:95:a8:bd:af:d7:fa:e6:18:58:ce:95:2d:9b:a0:05:1f:e7:7b:27:23:71:4b:6c:d8:a1:53:6d:32:2a:44:1f:6b:45:73:d6:b2:01:66:1c:d3:3a:82:41:bd:8c:30:ba:c8:1d:a3:45:33:d1:bb:30:d2:80:d9:e5:15:15:d3:4c:ce:b4:81:23:1b:e7:42:4a:86:0d:32:bc:f9:5c:30:98:1a:f1:62:be:2f:c9:5e:ae:e6:fb:0e:68:95:3c:d3:1d:11:81 -R:CROSS_CRYPTO DECRYPTED_CROSS_ASYNC CHANNELID=2 BYPASSLEN=4 BYPASS=11:22:33:44 AAD=00:00:00:00 DATA=@simulator/plaintext.txt +#R:CROSS_CRYPTO DECRYPTED_CROSS_ASYNC CHANNELID=2 BYPASSLEN=4 BYPASS=11:22:33:44 AAD=00:00:00:00 DATA=@simulator/plaintext.txt +R:CROSS_CRYPTO DECRYPTED_CROSS_ASYNC CHANNELID=2 BYPASSLEN=0 AAD=00:00:00:00 DATA=@simulator/plaintext.txt diff --git a/test/script-cross_crypto_r2b-si.eth b/test/script-cross_crypto_r2b-si.eth index e1df633..90dcc84 100644 --- a/test/script-cross_crypto_r2b-si.eth +++ b/test/script-cross_crypto_r2b-si.eth @@ -4,4 +4,5 @@ SLEEP 500 T:CROSS_CRYPTO ENCRYPT_CROSS_ASYNC CHANNELID=2 BYPASSLEN=4 BYPASS=11:22:33:44 DATA=@simulator/plaintext.txt -R:CROSS_CRYPTO ENCRYPTED_CROSS_ASYNC CHANNELID=2 BYPASSLEN=4 BYPASS=11:22:33:44 AAD=00:00:00:00 IV=00:67:c6:69:98:73:51:ff:5c:4a:ec:29 DATA=92:3c:7a:08:cc:0a:87:da:c2:07:df:70:97:cb:d9:d2:31:76:76:88:89:e4:59:b0:c5:85:d3:32:4b:2a:de:62:ab:d8:e5:8a:99:6d:26:71:1b:91:9b:f0:b2:96:7a:f0:3d:35:8a:eb:95:a3:dd:8c:f6:3b:50:a7:7a:76:17:4b:85:7f:05:7b:e1:42:f8:d7:1b:44:f6:ec:ba:d2:4c:15:ad:9a:bf:9c:db:2b:e8:50:1f:d9:6c:e6:72:95:14:ac:8b:e4:51:54:1d:a8:d8:cb:c3:3a:0b:7d:4e:92:e9:04:a3:b9:68:10:cc:fb:5a:c4:71:e9:e8:c8:c9:73:ac:01:fb:1b:8b:72:04:fa:dd:e0:66:9d:c9:18:f2:4e:8e:75:42:8c:67:91:c4:7b:f6:b3:ad:db:04:37:27:52:5a:dc:f7:78:6c:88:10:87:ff:d2:d8:bf:ae:06:9d:68:aa:e0:5a:82:72:8f:7b:93:45:33:84:30:b2:d1:48:23:04:cf:7a:48:e3:0f:4f:d6:56:79:36:6a:82:44:0a:ac:24:d6:93:6b:28:f7:9b:38:8a:48:1d:f0:c3:65:7c:c0:c1:14:6a:b0:72:7d:be:ac:46:91:2e:15:8d:64:77:53:9c:48:a9:81:f8:c0:8e:ec:e5:8d:5e:dc:e6:bb:5c:58:a6:13:0b:b3:3d:ca:d6:92:a6:a6:43:00:3f:a8:60:5e:14:9c:56:cc:8f:da:61:69:df:53:28:92:cc:5c:23:89:cd:22:70:30:c3:12:40:ca:67:df:b4:ae:1b:44:d6:e3:85:70:c4:3f:cd:60:90:56:63:16:cd:88:0c:12:ae:4a:b0:d8:80:2c:82:ae:d4:fb:f6:cd:56:7b:8b:48:f3:68:6c:8c:58:43:0d:75:0f:33:24:b4:01:b9:ae:66:7a:29:da:ed:8f:33:dd:c5:23:98:94:27:c1:c6:77:11:01:9f:86:d0:a5:a7:3c:54:e5:0f:eb:b0:6a:b5:fa:b1:6a:6e:3d:e2:5d:80:1f:3d:e3:57:64:03:47:32:54:51:3c:44:13:90:cc:20:a9:b8:c9:51:c4:73:0e:67:31:38:b2:c7:57:3a:e8:e8:2d:6b:f4:55:7f:09:c9:e0:a7:bf:42:82:7b:81:f7:02:c0:29:82:f9:96:73:0f:0d:79:ac:fb:64:68:81:31:bd:c1:59:5e:e2:60:ad:2b:bd:34:df:73:24:55:37:56:a0:6d:17:40:b6:54:5d:af:56:24:e0:bb:58:e6:26:46:df:ab:be:1c:14:40:85:6d:4c:93:d0:88:39:37:89:7f:1e:9f:52:21:c5:35:a9:7f:39:b9:5c:3e:88:6f:93:4b:ca:cc:c1:67:b2:3e:c9:73:5d:10:26:ea:25:1b:46:ed:e8:12:cb:f5:eb:18:f4:45:fc:ab:db:80:8c:f9:58:77:e0:7a:57:5d:0b:10:f5:87:d2:a0:45:0c:06:50:81:28:81:52:4d:5e:2c:45:be:bc:14:54:a5:66:5e:4a:fc:6c:86:35:c1:56:2f:56:16:0f:78:5e:1c:2b:bc:65:51:4e:a5:39:5c:86:ad:c2:aa:7a:7f:fe:65:ae:15:b8:04:03:5e:51:46:1c:db:93:4a:44:c5:4d:78:d8:cc:e9:24:b1:b2:5d:d9:58:ae:2c:f8:5c:f5:d2:64:6c:4c:e5:26:f9:5d:2f:70:09:39:57:5a:51:8c:99:c7:2f:1c:ba:ec:44:c9:57:8a:1e:76:6e:28:9c:15:d9:39:cc:38:88:f9:b5:c4:df:ae:15:36:d0:93:56:a0:77:72:b2:ff:59:8e:21:32:b3:e8:c5:1c:8a:7f:a9:ba:7e:09:c5:a3:f8:e9:3d:5a:05:3a:83:1a:34:e7:d4:8e:21:9e:eb:9e:62:3e:21:31:6a:f2:ea:ea:5b:98:84:bd:d0:31:c2:86:f2:6d:5b:f0:a3:48:d4:dc:d7:05:d1:26:fe:a7:65:a4:b4:f6:2d:cb:30:8d:4e:32:ec:50:de:06:68:c7:8e:a0:02:78:08:8d:8d:1e:d5:1b:77:ae:43:06:92:3f:3c:56:45:37:39:ca:08:3a:08:b1:11:16:b3:51:82:79:98:1d:2d:57:45:d8:76:40:62:ff:8e:8b:0b:89:dd:89:9e:c5:d8:22:5f:ac:42:83:84:8f:f9:8e:f5:95:a8:bd:af:d7:fa:e6:18:58:ce:95:2d:9b:a0:05:1f:e7:7b:27:23:71:4b:6c:d8:a1:53:6d:32:2a:44:1f:6b:45:73:d6:b2:01:66:1c:d3:3a:82:41:bd:8c:30:ba:c8:1d:a3:45:33:d1:bb:30:d2:80:d9:e5:15:15:d3:4c:ce:b4:81:23:1b:e7:42:4a:86:0d:32:bc:f9:5c:30:98:1a:f1:62:be:2f:c9:5e:ae:e6:fb:0e:68:95:3c:d3:1d:11:81 +#R:CROSS_CRYPTO ENCRYPTED_CROSS_ASYNC CHANNELID=2 BYPASSLEN=4 BYPASS=11:22:33:44 AAD=00:00:00:00 IV=00:67:c6:69:98:73:51:ff:5c:4a:ec:29 DATA=92:3c:7a:08:cc:0a:87:da:c2:07:df:70:97:cb:d9:d2:31:76:76:88:89:e4:59:b0:c5:85:d3:32:4b:2a:de:62:ab:d8:e5:8a:99:6d:26:71:1b:91:9b:f0:b2:96:7a:f0:3d:35:8a:eb:95:a3:dd:8c:f6:3b:50:a7:7a:76:17:4b:85:7f:05:7b:e1:42:f8:d7:1b:44:f6:ec:ba:d2:4c:15:ad:9a:bf:9c:db:2b:e8:50:1f:d9:6c:e6:72:95:14:ac:8b:e4:51:54:1d:a8:d8:cb:c3:3a:0b:7d:4e:92:e9:04:a3:b9:68:10:cc:fb:5a:c4:71:e9:e8:c8:c9:73:ac:01:fb:1b:8b:72:04:fa:dd:e0:66:9d:c9:18:f2:4e:8e:75:42:8c:67:91:c4:7b:f6:b3:ad:db:04:37:27:52:5a:dc:f7:78:6c:88:10:87:ff:d2:d8:bf:ae:06:9d:68:aa:e0:5a:82:72:8f:7b:93:45:33:84:30:b2:d1:48:23:04:cf:7a:48:e3:0f:4f:d6:56:79:36:6a:82:44:0a:ac:24:d6:93:6b:28:f7:9b:38:8a:48:1d:f0:c3:65:7c:c0:c1:14:6a:b0:72:7d:be:ac:46:91:2e:15:8d:64:77:53:9c:48:a9:81:f8:c0:8e:ec:e5:8d:5e:dc:e6:bb:5c:58:a6:13:0b:b3:3d:ca:d6:92:a6:a6:43:00:3f:a8:60:5e:14:9c:56:cc:8f:da:61:69:df:53:28:92:cc:5c:23:89:cd:22:70:30:c3:12:40:ca:67:df:b4:ae:1b:44:d6:e3:85:70:c4:3f:cd:60:90:56:63:16:cd:88:0c:12:ae:4a:b0:d8:80:2c:82:ae:d4:fb:f6:cd:56:7b:8b:48:f3:68:6c:8c:58:43:0d:75:0f:33:24:b4:01:b9:ae:66:7a:29:da:ed:8f:33:dd:c5:23:98:94:27:c1:c6:77:11:01:9f:86:d0:a5:a7:3c:54:e5:0f:eb:b0:6a:b5:fa:b1:6a:6e:3d:e2:5d:80:1f:3d:e3:57:64:03:47:32:54:51:3c:44:13:90:cc:20:a9:b8:c9:51:c4:73:0e:67:31:38:b2:c7:57:3a:e8:e8:2d:6b:f4:55:7f:09:c9:e0:a7:bf:42:82:7b:81:f7:02:c0:29:82:f9:96:73:0f:0d:79:ac:fb:64:68:81:31:bd:c1:59:5e:e2:60:ad:2b:bd:34:df:73:24:55:37:56:a0:6d:17:40:b6:54:5d:af:56:24:e0:bb:58:e6:26:46:df:ab:be:1c:14:40:85:6d:4c:93:d0:88:39:37:89:7f:1e:9f:52:21:c5:35:a9:7f:39:b9:5c:3e:88:6f:93:4b:ca:cc:c1:67:b2:3e:c9:73:5d:10:26:ea:25:1b:46:ed:e8:12:cb:f5:eb:18:f4:45:fc:ab:db:80:8c:f9:58:77:e0:7a:57:5d:0b:10:f5:87:d2:a0:45:0c:06:50:81:28:81:52:4d:5e:2c:45:be:bc:14:54:a5:66:5e:4a:fc:6c:86:35:c1:56:2f:56:16:0f:78:5e:1c:2b:bc:65:51:4e:a5:39:5c:86:ad:c2:aa:7a:7f:fe:65:ae:15:b8:04:03:5e:51:46:1c:db:93:4a:44:c5:4d:78:d8:cc:e9:24:b1:b2:5d:d9:58:ae:2c:f8:5c:f5:d2:64:6c:4c:e5:26:f9:5d:2f:70:09:39:57:5a:51:8c:99:c7:2f:1c:ba:ec:44:c9:57:8a:1e:76:6e:28:9c:15:d9:39:cc:38:88:f9:b5:c4:df:ae:15:36:d0:93:56:a0:77:72:b2:ff:59:8e:21:32:b3:e8:c5:1c:8a:7f:a9:ba:7e:09:c5:a3:f8:e9:3d:5a:05:3a:83:1a:34:e7:d4:8e:21:9e:eb:9e:62:3e:21:31:6a:f2:ea:ea:5b:98:84:bd:d0:31:c2:86:f2:6d:5b:f0:a3:48:d4:dc:d7:05:d1:26:fe:a7:65:a4:b4:f6:2d:cb:30:8d:4e:32:ec:50:de:06:68:c7:8e:a0:02:78:08:8d:8d:1e:d5:1b:77:ae:43:06:92:3f:3c:56:45:37:39:ca:08:3a:08:b1:11:16:b3:51:82:79:98:1d:2d:57:45:d8:76:40:62:ff:8e:8b:0b:89:dd:89:9e:c5:d8:22:5f:ac:42:83:84:8f:f9:8e:f5:95:a8:bd:af:d7:fa:e6:18:58:ce:95:2d:9b:a0:05:1f:e7:7b:27:23:71:4b:6c:d8:a1:53:6d:32:2a:44:1f:6b:45:73:d6:b2:01:66:1c:d3:3a:82:41:bd:8c:30:ba:c8:1d:a3:45:33:d1:bb:30:d2:80:d9:e5:15:15:d3:4c:ce:b4:81:23:1b:e7:42:4a:86:0d:32:bc:f9:5c:30:98:1a:f1:62:be:2f:c9:5e:ae:e6:fb:0e:68:95:3c:d3:1d:11:81 +R:CROSS_CRYPTO ENCRYPTED_CROSS_ASYNC CHANNELID=2 BYPASSLEN=0 AAD=00:00:00:00 IV=00:67:c6:69:98:73:51:ff:5c:4a:ec:29 DATA=92:3c:7a:08:cc:0a:87:da:c2:07:df:70:97:cb:d9:d2:31:76:76:88:89:e4:59:b0:c5:85:d3:32:4b:2a:de:62:ab:d8:e5:8a:99:6d:26:71:1b:91:9b:f0:b2:96:7a:f0:3d:35:8a:eb:95:a3:dd:8c:f6:3b:50:a7:7a:76:17:4b:85:7f:05:7b:e1:42:f8:d7:1b:44:f6:ec:ba:d2:4c:15:ad:9a:bf:9c:db:2b:e8:50:1f:d9:6c:e6:72:95:14:ac:8b:e4:51:54:1d:a8:d8:cb:c3:3a:0b:7d:4e:92:e9:04:a3:b9:68:10:cc:fb:5a:c4:71:e9:e8:c8:c9:73:ac:01:fb:1b:8b:72:04:fa:dd:e0:66:9d:c9:18:f2:4e:8e:75:42:8c:67:91:c4:7b:f6:b3:ad:db:04:37:27:52:5a:dc:f7:78:6c:88:10:87:ff:d2:d8:bf:ae:06:9d:68:aa:e0:5a:82:72:8f:7b:93:45:33:84:30:b2:d1:48:23:04:cf:7a:48:e3:0f:4f:d6:56:79:36:6a:82:44:0a:ac:24:d6:93:6b:28:f7:9b:38:8a:48:1d:f0:c3:65:7c:c0:c1:14:6a:b0:72:7d:be:ac:46:91:2e:15:8d:64:77:53:9c:48:a9:81:f8:c0:8e:ec:e5:8d:5e:dc:e6:bb:5c:58:a6:13:0b:b3:3d:ca:d6:92:a6:a6:43:00:3f:a8:60:5e:14:9c:56:cc:8f:da:61:69:df:53:28:92:cc:5c:23:89:cd:22:70:30:c3:12:40:ca:67:df:b4:ae:1b:44:d6:e3:85:70:c4:3f:cd:60:90:56:63:16:cd:88:0c:12:ae:4a:b0:d8:80:2c:82:ae:d4:fb:f6:cd:56:7b:8b:48:f3:68:6c:8c:58:43:0d:75:0f:33:24:b4:01:b9:ae:66:7a:29:da:ed:8f:33:dd:c5:23:98:94:27:c1:c6:77:11:01:9f:86:d0:a5:a7:3c:54:e5:0f:eb:b0:6a:b5:fa:b1:6a:6e:3d:e2:5d:80:1f:3d:e3:57:64:03:47:32:54:51:3c:44:13:90:cc:20:a9:b8:c9:51:c4:73:0e:67:31:38:b2:c7:57:3a:e8:e8:2d:6b:f4:55:7f:09:c9:e0:a7:bf:42:82:7b:81:f7:02:c0:29:82:f9:96:73:0f:0d:79:ac:fb:64:68:81:31:bd:c1:59:5e:e2:60:ad:2b:bd:34:df:73:24:55:37:56:a0:6d:17:40:b6:54:5d:af:56:24:e0:bb:58:e6:26:46:df:ab:be:1c:14:40:85:6d:4c:93:d0:88:39:37:89:7f:1e:9f:52:21:c5:35:a9:7f:39:b9:5c:3e:88:6f:93:4b:ca:cc:c1:67:b2:3e:c9:73:5d:10:26:ea:25:1b:46:ed:e8:12:cb:f5:eb:18:f4:45:fc:ab:db:80:8c:f9:58:77:e0:7a:57:5d:0b:10:f5:87:d2:a0:45:0c:06:50:81:28:81:52:4d:5e:2c:45:be:bc:14:54:a5:66:5e:4a:fc:6c:86:35:c1:56:2f:56:16:0f:78:5e:1c:2b:bc:65:51:4e:a5:39:5c:86:ad:c2:aa:7a:7f:fe:65:ae:15:b8:04:03:5e:51:46:1c:db:93:4a:44:c5:4d:78:d8:cc:e9:24:b1:b2:5d:d9:58:ae:2c:f8:5c:f5:d2:64:6c:4c:e5:26:f9:5d:2f:70:09:39:57:5a:51:8c:99:c7:2f:1c:ba:ec:44:c9:57:8a:1e:76:6e:28:9c:15:d9:39:cc:38:88:f9:b5:c4:df:ae:15:36:d0:93:56:a0:77:72:b2:ff:59:8e:21:32:b3:e8:c5:1c:8a:7f:a9:ba:7e:09:c5:a3:f8:e9:3d:5a:05:3a:83:1a:34:e7:d4:8e:21:9e:eb:9e:62:3e:21:31:6a:f2:ea:ea:5b:98:84:bd:d0:31:c2:86:f2:6d:5b:f0:a3:48:d4:dc:d7:05:d1:26:fe:a7:65:a4:b4:f6:2d:cb:30:8d:4e:32:ec:50:de:06:68:c7:8e:a0:02:78:08:8d:8d:1e:d5:1b:77:ae:43:06:92:3f:3c:56:45:37:39:ca:08:3a:08:b1:11:16:b3:51:82:79:98:1d:2d:57:45:d8:76:40:62:ff:8e:8b:0b:89:dd:89:9e:c5:d8:22:5f:ac:42:83:84:8f:f9:8e:f5:95:a8:bd:af:d7:fa:e6:18:58:ce:95:2d:9b:a0:05:1f:e7:7b:27:23:71:4b:6c:d8:a1:53:6d:32:2a:44:1f:6b:45:73:d6:b2:01:66:1c:d3:3a:82:41:bd:8c:30:ba:c8:1d:a3:45:33:d1:bb:30:d2:80:d9:e5:15:15:d3:4c:ce:b4:81:23:1b:e7:42:4a:86:0d:32:bc:f9:5c:30:98:1a:f1:62:be:2f:c9:5e:ae:e6:fb:0e:68:95:3c:d3:1d:11:81 diff --git a/test/script-local_crypto-si.eth b/test/script-local_crypto-si.eth index 1fee90b..0a07a0a 100644 --- a/test/script-local_crypto-si.eth +++ b/test/script-local_crypto-si.eth @@ -4,8 +4,8 @@ SLEEP 500 T:LOCAL_CRYPTO ENCRYPT_LOCAL_REQ CHANNELID=2 BYPASSLEN=4 BYPASS=11:22:33:44 DATA=@simulator/plaintext.txt -R:LOCAL_CRYPTO ENCRYPTED_LOCAL_RESP CHANNELID=2 BYPASSLEN=4 BYPASS=11:22:33:44 AAD=00:00:00:00 IV=00:67:c6:69:98:73:51:ff:5c:4a:ec:29 DATA=92:3c:7a:08:cc:0a:87:da:c2:07:df:70:97:cb:d9:d2:31:76:76:88:89:e4:59:b0:c5:85:d3:32:4b:2a:de:62:ab:d8:e5:8a:99:6d:26:71:1b:91:9b:f0:b2:96:7a:f0:3d:35:8a:eb:95:a3:dd:8c:f6:3b:50:a7:7a:76:17:4b:85:7f:05:7b:e1:42:f8:d7:1b:44:f6:ec:ba:d2:4c:15:ad:9a:bf:9c:db:2b:e8:50:1f:d9:6c:e6:72:95:14:ac:8b:e4:51:54:1d:a8:d8:cb:c3:3a:0b:7d:4e:92:e9:04:a3:b9:68:10:cc:fb:5a:c4:71:e9:e8:c8:c9:73:ac:01:fb:1b:8b:72:04:fa:dd:e0:66:9d:c9:18:f2:4e:8e:75:42:8c:67:91:c4:7b:f6:b3:ad:db:04:37:27:52:5a:dc:f7:78:6c:88:10:87:ff:d2:d8:bf:ae:06:9d:68:aa:e0:5a:82:72:8f:7b:93:45:33:84:30:b2:d1:48:23:04:cf:7a:48:e3:0f:4f:d6:56:79:36:6a:82:44:0a:ac:24:d6:93:6b:28:f7:9b:38:8a:48:1d:f0:c3:65:7c:c0:c1:14:6a:b0:72:7d:be:ac:46:91:2e:15:8d:64:77:53:9c:48:a9:81:f8:c0:8e:ec:e5:8d:5e:dc:e6:bb:5c:58:a6:13:0b:b3:3d:ca:d6:92:a6:a6:43:00:3f:a8:60:5e:14:9c:56:cc:8f:da:61:69:df:53:28:92:cc:5c:23:89:cd:22:70:30:c3:12:40:ca:67:df:b4:ae:1b:44:d6:e3:85:70:c4:3f:cd:60:90:56:63:16:cd:88:0c:12:ae:4a:b0:d8:80:2c:82:ae:d4:fb:f6:cd:56:7b:8b:48:f3:68:6c:8c:58:43:0d:75:0f:33:24:b4:01:b9:ae:66:7a:29:da:ed:8f:33:dd:c5:23:98:94:27:c1:c6:77:11:01:9f:86:d0:a5:a7:3c:54:e5:0f:eb:b0:6a:b5:fa:b1:6a:6e:3d:e2:5d:80:1f:3d:e3:57:64:03:47:32:54:51:3c:44:13:90:cc:20:a9:b8:c9:51:c4:73:0e:67:31:38:b2:c7:57:3a:e8:e8:2d:6b:f4:55:7f:09:c9:e0:a7:bf:42:82:7b:81:f7:02:c0:29:82:f9:96:73:0f:0d:79:ac:fb:64:68:81:31:bd:c1:59:5e:e2:60:ad:2b:bd:34:df:73:24:55:37:56:a0:6d:17:40:b6:54:5d:af:56:24:e0:bb:58:e6:26:46:df:ab:be:1c:14:40:85:6d:4c:93:d0:88:39:37:89:7f:1e:9f:52:21:c5:35:a9:7f:39:b9:5c:3e:88:6f:93:4b:ca:cc:c1:67:b2:3e:c9:73:5d:10:26:ea:25:1b:46:ed:e8:12:cb:f5:eb:18:f4:45:fc:ab:db:80:8c:f9:58:77:e0:7a:57:5d:0b:10:f5:87:d2:a0:45:0c:06:50:81:28:81:52:4d:5e:2c:45:be:bc:14:54:a5:66:5e:4a:fc:6c:86:35:c1:56:2f:56:16:0f:78:5e:1c:2b:bc:65:51:4e:a5:39:5c:86:ad:c2:aa:7a:7f:fe:65:ae:15:b8:04:03:5e:51:46:1c:db:93:4a:44:c5:4d:78:d8:cc:e9:24:b1:b2:5d:d9:58:ae:2c:f8:5c:f5:d2:64:6c:4c:e5:26:f9:5d:2f:70:09:39:57:5a:51:8c:99:c7:2f:1c:ba:ec:44:c9:57:8a:1e:76:6e:28:9c:15:d9:39:cc:38:88:f9:b5:c4:df:ae:15:36:d0:93:56:a0:77:72:b2:ff:59:8e:21:32:b3:e8:c5:1c:8a:7f:a9:ba:7e:09:c5:a3:f8:e9:3d:5a:05:3a:83:1a:34:e7:d4:8e:21:9e:eb:9e:62:3e:21:31:6a:f2:ea:ea:5b:98:84:bd:d0:31:c2:86:f2:6d:5b:f0:a3:48:d4:dc:d7:05:d1:26:fe:a7:65:a4:b4:f6:2d:cb:30:8d:4e:32:ec:50:de:06:68:c7:8e:a0:02:78:08:8d:8d:1e:d5:1b:77:ae:43:06:92:3f:3c:56:45:37:39:ca:08:3a:08:b1:11:16:b3:51:82:79:98:1d:2d:57:45:d8:76:40:62:ff:8e:8b:0b:89:dd:89:9e:c5:d8:22:5f:ac:42:83:84:8f:f9:8e:f5:95:a8:bd:af:d7:fa:e6:18:58:ce:95:2d:9b:a0:05:1f:e7:7b:27:23:71:4b:6c:d8:a1:53:6d:32:2a:44:1f:6b:45:73:d6:b2:01:66:1c:d3:3a:82:41:bd:8c:30:ba:c8:1d:a3:45:33:d1:bb:30:d2:80:d9:e5:15:15:d3:4c:ce:b4:81:23:1b:e7:42:4a:86:0d:32:bc:f9:5c:30:98:1a:f1:62:be:2f:c9:5e:ae:e6:fb:0e:68:95:3c:d3:1d:11:81 +R:LOCAL_CRYPTO ENCRYPTED_LOCAL_RESP CHANNELID=2 BYPASSLEN=0 AAD=00:00:00:00 IV=00:67:c6:69:98:73:51:ff:5c:4a:ec:29 DATA=92:3c:7a:08:cc:0a:87:da:c2:07:df:70:97:cb:d9:d2:31:76:76:88:89:e4:59:b0:c5:85:d3:32:4b:2a:de:62:ab:d8:e5:8a:99:6d:26:71:1b:91:9b:f0:b2:96:7a:f0:3d:35:8a:eb:95:a3:dd:8c:f6:3b:50:a7:7a:76:17:4b:85:7f:05:7b:e1:42:f8:d7:1b:44:f6:ec:ba:d2:4c:15:ad:9a:bf:9c:db:2b:e8:50:1f:d9:6c:e6:72:95:14:ac:8b:e4:51:54:1d:a8:d8:cb:c3:3a:0b:7d:4e:92:e9:04:a3:b9:68:10:cc:fb:5a:c4:71:e9:e8:c8:c9:73:ac:01:fb:1b:8b:72:04:fa:dd:e0:66:9d:c9:18:f2:4e:8e:75:42:8c:67:91:c4:7b:f6:b3:ad:db:04:37:27:52:5a:dc:f7:78:6c:88:10:87:ff:d2:d8:bf:ae:06:9d:68:aa:e0:5a:82:72:8f:7b:93:45:33:84:30:b2:d1:48:23:04:cf:7a:48:e3:0f:4f:d6:56:79:36:6a:82:44:0a:ac:24:d6:93:6b:28:f7:9b:38:8a:48:1d:f0:c3:65:7c:c0:c1:14:6a:b0:72:7d:be:ac:46:91:2e:15:8d:64:77:53:9c:48:a9:81:f8:c0:8e:ec:e5:8d:5e:dc:e6:bb:5c:58:a6:13:0b:b3:3d:ca:d6:92:a6:a6:43:00:3f:a8:60:5e:14:9c:56:cc:8f:da:61:69:df:53:28:92:cc:5c:23:89:cd:22:70:30:c3:12:40:ca:67:df:b4:ae:1b:44:d6:e3:85:70:c4:3f:cd:60:90:56:63:16:cd:88:0c:12:ae:4a:b0:d8:80:2c:82:ae:d4:fb:f6:cd:56:7b:8b:48:f3:68:6c:8c:58:43:0d:75:0f:33:24:b4:01:b9:ae:66:7a:29:da:ed:8f:33:dd:c5:23:98:94:27:c1:c6:77:11:01:9f:86:d0:a5:a7:3c:54:e5:0f:eb:b0:6a:b5:fa:b1:6a:6e:3d:e2:5d:80:1f:3d:e3:57:64:03:47:32:54:51:3c:44:13:90:cc:20:a9:b8:c9:51:c4:73:0e:67:31:38:b2:c7:57:3a:e8:e8:2d:6b:f4:55:7f:09:c9:e0:a7:bf:42:82:7b:81:f7:02:c0:29:82:f9:96:73:0f:0d:79:ac:fb:64:68:81:31:bd:c1:59:5e:e2:60:ad:2b:bd:34:df:73:24:55:37:56:a0:6d:17:40:b6:54:5d:af:56:24:e0:bb:58:e6:26:46:df:ab:be:1c:14:40:85:6d:4c:93:d0:88:39:37:89:7f:1e:9f:52:21:c5:35:a9:7f:39:b9:5c:3e:88:6f:93:4b:ca:cc:c1:67:b2:3e:c9:73:5d:10:26:ea:25:1b:46:ed:e8:12:cb:f5:eb:18:f4:45:fc:ab:db:80:8c:f9:58:77:e0:7a:57:5d:0b:10:f5:87:d2:a0:45:0c:06:50:81:28:81:52:4d:5e:2c:45:be:bc:14:54:a5:66:5e:4a:fc:6c:86:35:c1:56:2f:56:16:0f:78:5e:1c:2b:bc:65:51:4e:a5:39:5c:86:ad:c2:aa:7a:7f:fe:65:ae:15:b8:04:03:5e:51:46:1c:db:93:4a:44:c5:4d:78:d8:cc:e9:24:b1:b2:5d:d9:58:ae:2c:f8:5c:f5:d2:64:6c:4c:e5:26:f9:5d:2f:70:09:39:57:5a:51:8c:99:c7:2f:1c:ba:ec:44:c9:57:8a:1e:76:6e:28:9c:15:d9:39:cc:38:88:f9:b5:c4:df:ae:15:36:d0:93:56:a0:77:72:b2:ff:59:8e:21:32:b3:e8:c5:1c:8a:7f:a9:ba:7e:09:c5:a3:f8:e9:3d:5a:05:3a:83:1a:34:e7:d4:8e:21:9e:eb:9e:62:3e:21:31:6a:f2:ea:ea:5b:98:84:bd:d0:31:c2:86:f2:6d:5b:f0:a3:48:d4:dc:d7:05:d1:26:fe:a7:65:a4:b4:f6:2d:cb:30:8d:4e:32:ec:50:de:06:68:c7:8e:a0:02:78:08:8d:8d:1e:d5:1b:77:ae:43:06:92:3f:3c:56:45:37:39:ca:08:3a:08:b1:11:16:b3:51:82:79:98:1d:2d:57:45:d8:76:40:62:ff:8e:8b:0b:89:dd:89:9e:c5:d8:22:5f:ac:42:83:84:8f:f9:8e:f5:95:a8:bd:af:d7:fa:e6:18:58:ce:95:2d:9b:a0:05:1f:e7:7b:27:23:71:4b:6c:d8:a1:53:6d:32:2a:44:1f:6b:45:73:d6:b2:01:66:1c:d3:3a:82:41:bd:8c:30:ba:c8:1d:a3:45:33:d1:bb:30:d2:80:d9:e5:15:15:d3:4c:ce:b4:81:23:1b:e7:42:4a:86:0d:32:bc:f9:5c:30:98:1a:f1:62:be:2f:c9:5e:ae:e6:fb:0e:68:95:3c:d3:1d:11:81 T:LOCAL_CRYPTO DECRYPT_LOCAL_REQ CHANNELID=3 BYPASSLEN=2 BYPASS=55:66 AAD=00:00:00:00 IV=00:67:c6:69:98:73:51:ff:5c:4a:ec:29 DATA=92:3c:7a:08:cc:0a:87:da:c2:07:df:70:97:cb:d9:d2:31:76:76:88:89:e4:59:b0:c5:85:d3:32:4b:2a:de:62:ab:d8:e5:8a:99:6d:26:71:1b:91:9b:f0:b2:96:7a:f0:3d:35:8a:eb:95:a3:dd:8c:f6:3b:50:a7:7a:76:17:4b:85:7f:05:7b:e1:42:f8:d7:1b:44:f6:ec:ba:d2:4c:15:ad:9a:bf:9c:db:2b:e8:50:1f:d9:6c:e6:72:95:14:ac:8b:e4:51:54:1d:a8:d8:cb:c3:3a:0b:7d:4e:92:e9:04:a3:b9:68:10:cc:fb:5a:c4:71:e9:e8:c8:c9:73:ac:01:fb:1b:8b:72:04:fa:dd:e0:66:9d:c9:18:f2:4e:8e:75:42:8c:67:91:c4:7b:f6:b3:ad:db:04:37:27:52:5a:dc:f7:78:6c:88:10:87:ff:d2:d8:bf:ae:06:9d:68:aa:e0:5a:82:72:8f:7b:93:45:33:84:30:b2:d1:48:23:04:cf:7a:48:e3:0f:4f:d6:56:79:36:6a:82:44:0a:ac:24:d6:93:6b:28:f7:9b:38:8a:48:1d:f0:c3:65:7c:c0:c1:14:6a:b0:72:7d:be:ac:46:91:2e:15:8d:64:77:53:9c:48:a9:81:f8:c0:8e:ec:e5:8d:5e:dc:e6:bb:5c:58:a6:13:0b:b3:3d:ca:d6:92:a6:a6:43:00:3f:a8:60:5e:14:9c:56:cc:8f:da:61:69:df:53:28:92:cc:5c:23:89:cd:22:70:30:c3:12:40:ca:67:df:b4:ae:1b:44:d6:e3:85:70:c4:3f:cd:60:90:56:63:16:cd:88:0c:12:ae:4a:b0:d8:80:2c:82:ae:d4:fb:f6:cd:56:7b:8b:48:f3:68:6c:8c:58:43:0d:75:0f:33:24:b4:01:b9:ae:66:7a:29:da:ed:8f:33:dd:c5:23:98:94:27:c1:c6:77:11:01:9f:86:d0:a5:a7:3c:54:e5:0f:eb:b0:6a:b5:fa:b1:6a:6e:3d:e2:5d:80:1f:3d:e3:57:64:03:47:32:54:51:3c:44:13:90:cc:20:a9:b8:c9:51:c4:73:0e:67:31:38:b2:c7:57:3a:e8:e8:2d:6b:f4:55:7f:09:c9:e0:a7:bf:42:82:7b:81:f7:02:c0:29:82:f9:96:73:0f:0d:79:ac:fb:64:68:81:31:bd:c1:59:5e:e2:60:ad:2b:bd:34:df:73:24:55:37:56:a0:6d:17:40:b6:54:5d:af:56:24:e0:bb:58:e6:26:46:df:ab:be:1c:14:40:85:6d:4c:93:d0:88:39:37:89:7f:1e:9f:52:21:c5:35:a9:7f:39:b9:5c:3e:88:6f:93:4b:ca:cc:c1:67:b2:3e:c9:73:5d:10:26:ea:25:1b:46:ed:e8:12:cb:f5:eb:18:f4:45:fc:ab:db:80:8c:f9:58:77:e0:7a:57:5d:0b:10:f5:87:d2:a0:45:0c:06:50:81:28:81:52:4d:5e:2c:45:be:bc:14:54:a5:66:5e:4a:fc:6c:86:35:c1:56:2f:56:16:0f:78:5e:1c:2b:bc:65:51:4e:a5:39:5c:86:ad:c2:aa:7a:7f:fe:65:ae:15:b8:04:03:5e:51:46:1c:db:93:4a:44:c5:4d:78:d8:cc:e9:24:b1:b2:5d:d9:58:ae:2c:f8:5c:f5:d2:64:6c:4c:e5:26:f9:5d:2f:70:09:39:57:5a:51:8c:99:c7:2f:1c:ba:ec:44:c9:57:8a:1e:76:6e:28:9c:15:d9:39:cc:38:88:f9:b5:c4:df:ae:15:36:d0:93:56:a0:77:72:b2:ff:59:8e:21:32:b3:e8:c5:1c:8a:7f:a9:ba:7e:09:c5:a3:f8:e9:3d:5a:05:3a:83:1a:34:e7:d4:8e:21:9e:eb:9e:62:3e:21:31:6a:f2:ea:ea:5b:98:84:bd:d0:31:c2:86:f2:6d:5b:f0:a3:48:d4:dc:d7:05:d1:26:fe:a7:65:a4:b4:f6:2d:cb:30:8d:4e:32:ec:50:de:06:68:c7:8e:a0:02:78:08:8d:8d:1e:d5:1b:77:ae:43:06:92:3f:3c:56:45:37:39:ca:08:3a:08:b1:11:16:b3:51:82:79:98:1d:2d:57:45:d8:76:40:62:ff:8e:8b:0b:89:dd:89:9e:c5:d8:22:5f:ac:42:83:84:8f:f9:8e:f5:95:a8:bd:af:d7:fa:e6:18:58:ce:95:2d:9b:a0:05:1f:e7:7b:27:23:71:4b:6c:d8:a1:53:6d:32:2a:44:1f:6b:45:73:d6:b2:01:66:1c:d3:3a:82:41:bd:8c:30:ba:c8:1d:a3:45:33:d1:bb:30:d2:80:d9:e5:15:15:d3:4c:ce:b4:81:23:1b:e7:42:4a:86:0d:32:bc:f9:5c:30:98:1a:f1:62:be:2f:c9:5e:ae:e6:fb:0e:68:95:3c:d3:1d:11:81 -R:LOCAL_CRYPTO DECRYPTED_LOCAL_RESP CHANNELID=3 BYPASSLEN=2 BYPASS=55:66 DATA=@simulator/plaintext.txt +R:LOCAL_CRYPTO DECRYPTED_LOCAL_RESP CHANNELID=3 BYPASSLEN=0 DATA=@simulator/plaintext.txt -- 2.30.2