From 815e11c028a972f07ae57bdd38b31d05b19dfb30 Mon Sep 17 00:00:00 2001 From: Mazet Laurent Date: Tue, 8 Apr 2025 19:37:20 +0200 Subject: [PATCH] add lot of tests --- morep_simulator.c | 13 ++++++++++--- parse.h | 6 +++--- pdu_encrypted_data.h | 2 +- script-bypass.eth | 7 +++++++ script-control.eth | 31 +++++++++++++++++++++++++++++++ script-cross_crypto.eth | 6 +++--- script-local_crypto.eth | 8 ++++---- script-prng.eth | 7 +++++++ script-provisioning.eth | 31 +++++++++++++++++++++++++++++++ 9 files changed, 97 insertions(+), 14 deletions(-) create mode 100644 script-bypass.eth create mode 100644 script-control.eth create mode 100644 script-prng.eth create mode 100644 script-provisioning.eth diff --git a/morep_simulator.c b/morep_simulator.c index 30c0592..1a76d84 100644 --- a/morep_simulator.c +++ b/morep_simulator.c @@ -77,6 +77,10 @@ message_t message_list[] = { {"BYPASS_CROSS_ASYNC", bypass_e, 0x00, raw_data_e}, {"BYPASSED_CROSS_ASYNC", bypass_e, 0x01, raw_data_e}, + /* PRNG service */ + {"RANDOM_REQ", prng_e, 0x00, prng_param_e}, + {"RANDOM_RESP", prng_e, 0x01, status_e}, + /* Control service */ {"STATUS_REQ", control_e, 0x00, nopdu_e}, {"STATUS_RESP", control_e, 0x01, status_e}, @@ -416,6 +420,7 @@ int main (int argc, char **argv) VERBOSE (morep, WARNING, PRINTF ("message %s is not allowed for service %s (line '%s')\n", msg->name, serv->name, line)); continue; } + VERBOSE (morep, DEBUG, PRINTF ("work with message %s\n", msg->name)); CHANNEL_t msg_channel = {0}; CLEAR_DATA_t msg_clear_data = {0}; @@ -496,10 +501,12 @@ int main (int argc, char **argv) /* check pdu type */ pdu = undef_pdu_e; + msg = NULL; for (int i = 0; ((message_list + i)->service_id) && (pdu == undef_pdu_e); i++) { message_t *m = message_list + i; if ((m->service_id == serv->service_id) && (m->msgtype == msgtype)) { pdu = m->pdu; + msg = m; } } @@ -540,8 +547,8 @@ int main (int argc, char **argv) /* log message */ if (log) { - fprintf (log, "%c%s[%s] SEG=%d MSG=%d LEN=%d %s ", mode ? 'T' : 'R', serv->name, - comm->etype, seqnum, msg->msgtype, len, msg->name); + fprintf (log, "%c:%s[%s] [SEG=%d MSG=%d LEN=%d PDU=%d] %s", mode ? 'T' : 'R', + serv->name, comm->etype, seqnum, msg->msgtype, len, pdu, msg->name); char buffer[1496 * 3 + 256] = {0}; switch (pdu) { case channel_e: @@ -595,6 +602,6 @@ int main (int argc, char **argv) /* test: morep_simulator.exe -l script-provisioning.log -s PROVISIONING -t lo://00:00:00:00:00:00/0808 -r lo://00:00:00:00:00:00/0808 script-provisioning.eth */ /* test: morep_simulator.exe -l script-prng.log -s PRNG -t lo://00:00:00:00:00:00/0808 -r lo://00:00:00:00:00:00/0808 script-prng.eth */ /* test: morep_simulator.exe -l script-bypass.log -s BYPASS -t lo://00:00:00:00:00:00/0808 -r lo://00:00:00:00:00:00/0808 script-bypass.eth */ -/* test: morep_simulator.exe -l script-control.log -s CONTROL -t lo://00:00:00:00:00:00/0808 -r lo://00:00:00:00:00:00/0808 script-control.eth */ +/* test: morep_simulator.exe -l script-control.log -s CONTROL -t lo://00:00:00:00:00:00/0808 -r lo://00:00:00:00:00:00/0808 script-control.eth -v 4 */ /* vim: set ts=4 sw=4 si et: */ diff --git a/parse.h b/parse.h index e09d9f6..fd94ad4 100644 --- a/parse.h +++ b/parse.h @@ -117,9 +117,9 @@ __BEGIN_DECLS @param buf preallocated storage @param optinal parameter to use defined length */ -#define PARSE_ARRAY(name, buf, ...) \ - else if (strcmp (var, name) == 0) { \ - buf##_len = parse_array (val, buf, (1 == __VA_ARGS__ + 0) ? buf##_len : (int)sizeof (buf)); \ +#define PARSE_ARRAY(name, buf, ...) \ + else if (strcmp (var, name) == 0) { \ + buf##_len = parse_array (val, buf, (__VA_ARGS__ + 0) ? buf##_len : (int)sizeof (buf)); \ } /** diff --git a/pdu_encrypted_data.h b/pdu_encrypted_data.h index 40f8040..1cf841d 100644 --- a/pdu_encrypted_data.h +++ b/pdu_encrypted_data.h @@ -30,7 +30,7 @@ typedef struct { uint8_t iv[12]; /**< initial vector */ uint8_t bypass_len; /**< attached bypass message length */ uint8_t bypass[255]; /**< attached bypass message */ - uint8_t data_len; /**< data length (must be aligned to 16 bytes) */ + uint16_t data_len; /**< data length (must be aligned to 16 bytes) */ uint8_t data[1472]; /**< data message */ } ENCRYPTED_DATA_t; diff --git a/script-bypass.eth b/script-bypass.eth new file mode 100644 index 0000000..83eed3b --- /dev/null +++ b/script-bypass.eth @@ -0,0 +1,7 @@ +# Bypass test script + +T:BYPASS BYPASS_CROSS_ASYNC DATA=@makefile +R:BYPASS BYPASS_CROSS_ASYNC + +T:BYPASS BYPASSED_CROSS_ASYNC DATA=@makefile +R:BYPASS BYPASSED_CROSS_ASYNC diff --git a/script-control.eth b/script-control.eth new file mode 100644 index 0000000..6dd8096 --- /dev/null +++ b/script-control.eth @@ -0,0 +1,31 @@ +# Provisioning test script + +T:CONTROL STATUS_REQ +R:CONTROL STATUS_REQ + +T:CONTROL STATUS_RESP STATUS=4 +R:CONTROL STATUS_RESP + +T:CONTROL AUTHENTIFICATION_REQ DATA="This is an authentification phrase" +R:CONTROL AUTHENTIFICATION_REQ + +T:CONTROL AUTHENTIFICATION_RESP DATA="Authentification completed" +R:CONTROL AUTHENTIFICATION_RESP + +T:CONTROL REBOOT_REQ +R:CONTROL REBOOT_REQ + +T:CONTROL REBOOT_RESP STATUS=0 +R:CONTROL REBOOT_RESP + +T:CONTROL ZEROISE_REQ +R:CONTROL ZEROISE_REQ + +T:CONTROL ZEROISE_RESP STATUS=0xFF +R:CONTROL ZEROISE_RESP + +T:CONTROL LOCK_CRYPTO_REQ +R:CONTROL LOCK_CRYPTO_REQ + +T:CONTROL LOCK_CRYPTO_RESP STATUS=0 +R:CONTROL LOCK_CRYPTO_RESP diff --git a/script-cross_crypto.eth b/script-cross_crypto.eth index 1efb78b..90edfae 100644 --- a/script-cross_crypto.eth +++ b/script-cross_crypto.eth @@ -4,10 +4,10 @@ T:CROSS_CRYPTO ENCRYPT_CROSS_ASYNC CHANNELID=2 BYPASSLEN=4 BYPASS=11223344 DATA= R:CROSS_CRYPTO ENCRYPT_CROSS_ASYNC T:CROSS_CRYPTO ENCRYPTED_CROSS_ASYNC CHANNELID=9 BYPASSLEN=1 BYPASS=55 DATA=@script-local_crypto.eth -RCROSS_CRYPTO ENCRYPTED_CROSS_ASYNC +R:CROSS_CRYPTO ENCRYPTED_CROSS_ASYNC T:CROSS_CRYPTO DECRYPT_CROSS_ASYNC CHANNELID=5 BYPASSLEN=0 DATA=@script-local_crypto.eth -RCROSS_CRYPTO DECRYPT_CROSS_ASYNC CHANNELID=5 BYPASSLEN=0 DATA=@script-local_crypto.eth +R:CROSS_CRYPTO DECRYPT_CROSS_ASYNC T:CROSS_CRYPTO DECRYPTED_CROSS_ASYNC CHANNELID=0 BYPASSLEN=4 BYPASS=11223344 DATA=@script-cross_crypto.eth -R:CROSS_CRYPTO DECRYPTED_CROSS_ASYNC CHANNELID=0 BYPASSLEN=4 BYPASS=11223344 DATA=@script-cross_crypto.eth +R:CROSS_CRYPTO DECRYPTED_CROSS_ASYNC diff --git a/script-local_crypto.eth b/script-local_crypto.eth index b1fd5d1..875757a 100644 --- a/script-local_crypto.eth +++ b/script-local_crypto.eth @@ -1,13 +1,13 @@ # Local crypto test script T:LOCAL_CRYPTO ENCRYPT_LOCAL_ASYNC CHANNELID=2 BYPASSLEN=4 BYPASS=11:22:33:44 DATA=@script-cross_crypto.eth -R:LOCAL_CRYPTO ENCRYPT_LOCAL_ASYNC CHANNELID=2 BYPASSLEN=4 BYPASS=11:22:33:44 DATA=@script-cross_crypto.eth +R:LOCAL_CRYPTO ENCRYPT_LOCAL_ASYNC T:LOCAL_CRYPTO ENCRYPTED_LOCAL_ASYNC CHANNELID=9 BYPASSLEN=0 DATA=@script-local_crypto.eth -R:LOCAL_CRYPTO ENCRYPTED_LOCAL_ASYNC CHANNELID=9 BYPASSLEN=0 DATA=@script-local_crypto.eth +R:LOCAL_CRYPTO ENCRYPTED_LOCAL_ASYNC T:LOCAL_CRYPTO DECRYPT_LOCAL_ASYNC CHANNELID=5 BYPASSLEN=0 DATA=@script-local_crypto.eth -R:LOCAL_CRYPTO DECRYPT_LOCAL_ASYNC CHANNELID=5 BYPASSLEN=0 DATA=@script-local_crypto.eth +R:LOCAL_CRYPTO DECRYPT_LOCAL_ASYNC T:LOCAL_CRYPTO DECRYPTED_LOCAL_ASYNC CHANNELID=0 BYPASSLEN=4 BYPASS=11:22:33:44 DATA=@script-cross_crypto.eth -R:LOCAL_CRYPTO DECRYPTED_LOCAL_ASYNC CHANNELID=0 BYPASSLEN=4 BYPASS=11:22:33:44 DATA=@script-cross_crypto.eth +R:LOCAL_CRYPTO DECRYPTED_LOCAL_ASYNC diff --git a/script-prng.eth b/script-prng.eth new file mode 100644 index 0000000..2145b51 --- /dev/null +++ b/script-prng.eth @@ -0,0 +1,7 @@ +# PRNG test script + +T:PRNG RANDOM_REQ PRNGID=0 SEQLEN=64 SEED=0102030405060708090A0B0C0D0E0F10 +R:PRNG RANDOM_REQ + +T:PRNG RANDOM_RESP DATA=@makefile +R:PRNG RANDOM_RESP diff --git a/script-provisioning.eth b/script-provisioning.eth new file mode 100644 index 0000000..cbcb1a1 --- /dev/null +++ b/script-provisioning.eth @@ -0,0 +1,31 @@ +# Provisioning test script + +T:PROVISIONING LOAD_KEY_REQ KEYID=2 KEY=0102030405060708090A0B0C0D0E0F10 +R:PROVISIONING LOAD_KEY_REQ + +T:PROVISIONING LOAD_KEY_RESP STATUS=0 +T:PROVISIONING LOAD_KEY_RESP + +T:PROVISIONING UNLOAD_KEY_REQ KEYID=42 +R:PROVISIONING UNLOAD_KEY_REQ + +T:PROVISIONING UNLOAD_KEY_RESP STATUS=0xFF +R:PROVISIONING UNLOAD_KEY_RESP + +T:PROVISIONING ERASE_KEY_REQ KEYID=255 +R:PROVISIONING ERASE_KEY_REQ + +T:PROVISIONING ERASE_KEY_RESP STATUS=0 +R:PROVISIONING ERASE_KEY_RESP + +T:PROVISIONING ASSOCIATE_CHANNEL_REQ CHANNELID=0 KEYID=2 +R:PROVISIONING ASSOCIATE_CHANNEL_REQ + +T:PROVISIONING ASSOCIATE_CHANNEL_RESP STATUS=0 +R:PROVISIONING ASSOCIATE_CHANNEL_RESP + +T:PROVISIONING DISSOCIATE_CHANNEL_REQ CHANNELID=0 KEYID=255 +R:PROVISIONING DISSOCIATE_CHANNEL_REQ + +T:PROVISIONING DISSOCIATE_CHANNEL_RESP STATUS=0 +R:PROVISIONING DISSOCIATE_CHANNEL_RESP -- 2.30.2