add lot of tests
authorMazet Laurent <laurent.mazet@thalesgroup.com>
Tue, 8 Apr 2025 17:37:20 +0000 (19:37 +0200)
committerMazet Laurent <laurent.mazet@thalesgroup.com>
Tue, 8 Apr 2025 17:37:20 +0000 (19:37 +0200)
morep_simulator.c
parse.h
pdu_encrypted_data.h
script-bypass.eth [new file with mode: 0644]
script-control.eth [new file with mode: 0644]
script-cross_crypto.eth
script-local_crypto.eth
script-prng.eth [new file with mode: 0644]
script-provisioning.eth [new file with mode: 0644]

index 30c059299be32fe411757fb996e65e8f2d5c7562..1a76d84e2e53c8144da93d06e12b41604dae48e0 100644 (file)
@@ -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 e09d9f6c2d4654998c031ff3444a70b5ff80c65b..fd94ad4277ea3906018a5245bc8d47363f05bead 100644 (file)
--- 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)); \
         }
 
 /**
index 40f8040bbd5972867d68f1227582f554e9281e51..1cf841de418cbf0ff69e797f6921e3f166724036 100644 (file)
@@ -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 (file)
index 0000000..83eed3b
--- /dev/null
@@ -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 (file)
index 0000000..6dd8096
--- /dev/null
@@ -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
index 1efb78b03c562d35b6c1420abd48a25fc21e253a..90edfae73cf85ddedbdc06814b2ddeb839ae3962 100644 (file)
@@ -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
index b1fd5d14386df8f1bf82f0099dcf64ec9d6d16e4..875757a939f7fbd25e8eb7679307894d2f11abdc 100644 (file)
@@ -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 (file)
index 0000000..2145b51
--- /dev/null
@@ -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 (file)
index 0000000..cbcb1a1
--- /dev/null
@@ -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