{
char *filename = NULL;
char *logname = NULL;
+ char *servname = NULL;
+ char *tmp = NULL;
char *url = NULL;
int mode = -1;
int nbcomms = 0;
url = arg;
mode = 0;
break;
+ case 's':
+ arg = (arg[2]) ? arg + 2 : (--argc > 0) ? *(++argv) : NULL;
+ if (arg == NULL) {
+ VERBOSE (morep, ERROR, PRINTF ("%s: service not specified\n", progname));
+ return 1;
+ }
+ servname = arg;
+ break;
case 't':
arg = (arg[2]) ? arg + 2 : (--argc > 0) ? *(++argv) : NULL;
if (arg == NULL) {
break;
case 'h':
default:
- printf ("usage: %s [-h] [-l log] [-r url] [-t url] [-v level] [file]\n", progname);
+ printf ("usage: %s [-h] [-l log] [-r url] [-s serv] [-t url] [-v level] [file]\n", progname);
return (c != 'h');
}
(comm_list + nbcomms)->morep = morep;
(comm_list + nbcomms)->mode = mode;
(comm_list + nbcomms)->etype = strrchr (url, '/') + 1;
+ for (int i = 0; (service_list + i)->service_id != noserv_e; i++) {
+ service_t *s = service_list + i;
+ if (strcmp (s->name, servname) == 0) {
+ memcpy (mode ? &(s->rx) : &(s->tx), comm_list + nbcomms, sizeof (comm_t));
+ break;
+ }
+ }
nbcomms++;
} else {
VERBOSE (morep, ERROR, PRINTF ("can't connect on url '%s'\n", url));
}
int offset = 1;
+ /* skip space */
+ tmp = line + offset;
+ TEST_CHARS (tmp, " \t:", 0);
+ offset = tmp - line;
+
comm_t *comm = NULL;
service_t *serv = NULL;
/* find MOREP by service name */
VERBOSE (morep, DEBUG, PRINTF ("work with %c[%s]\n", comm->mode ? 'T' : 'R', serv->name));
/* skip space */
- char *tmp = line + offset;
+ tmp = line + offset;
TEST_CHARS (tmp, " \t", 0);
offset = tmp - line;
}
/* test: morep_simulator.exe -h | grep usage */
+/* test: morep_simulator.exe -l 2>&1 | grep 'log file not specified' */
/* test: morep_simulator.exe -r 2>&1 | grep 'url not specified' */
+/* test: morep_simulator.exe -s 2>&1 | grep 'service not specified' */
/* test: morep_simulator.exe -t 2>&1 | grep 'url not specified' */
-/* test: morep_simulator.exe -l 2>&1 | grep 'log file not specified' */
-/* test: morep_simulator.exe -l - -t lo://00:00:00:00:00:00/0808 -v 4 script-lo.eth */
-/* test: morep_simulator.exe -l script.log -t lo://00:00:00:00:00:00/0808 -r lo://00:00:00:00:00:00/0808 script-lo.eth */
+/* test: morep_simulator.exe -l - -t lo://00:00:00:00:00:00/0809 -v 4 script-l0.eth */
+/* test: morep_simulator.exe -l script-cross_crypto.log -s CROSS_CRYPTO -t lo://00:00:00:00:00:00/0808 -r lo://00:00:00:00:00:00/0808 script-cross_crypto.eth */
+/* test: morep_simulator.exe -l script-local_crypto.log -s LOCAL_CRYPTO -t lo://00:00:00:00:00:00/0808 -r lo://00:00:00:00:00:00/0808 script-local_crypto.eth */
+/* 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 */
/* vim: set ts=4 sw=4 si et: */
/* string payload: "..." (space must be protected by '\') */
if ((*str == '"') && (slen > 1)) {
+ if (maxlen < slen - 2) slen = maxlen + 2;
if (str[slen - 1] == '"') {
len = slen - 2;
if (len > maxlen) {
}
/* hexa payload: xxxxxx [0-9a-fA-F] */
- else if (slen % 2 == 0) {
- len = slen / 2;
- if (len > maxlen) {
- VERBOSE (morep, WARNING, PRINTF ("string too large (%d > %d) for '%s'\n", len, maxlen, str));
- len = maxlen;
- }
- int i;
- for (i = 0; i < len; i++) {
- char digit[3] = {0};
- char *ptr = NULL;
- digit[0] = str[2 * i];
- digit[1] = str[2 * i + 1];
- buffer[i] = strtol (digit, &ptr, 16);
- if (*ptr != '\0') {
- VERBOSE (morep, ERROR, PRINTF ("unrecognize hexa-string (%d) '%s'\n", 2 * i, str));
- break;
+ else {
+ if (maxlen * 2 < slen) slen = maxlen * 2;
+ if (slen % 2 == 0) {
+ len = slen / 2;
+ if (len > maxlen) {
+ VERBOSE (morep, WARNING, PRINTF ("string too large (%d > %d) for '%s'\n", len, maxlen, str));
+ len = maxlen;
+ }
+ for (int i = 0; i < len; i++) {
+ char digit[3] = {0};
+ char *ptr = NULL;
+ digit[0] = str[3 * i];
+ digit[1] = str[3 * i + 1];
+ buffer[i] = strtol (digit, &ptr, 16);
+ if ((*ptr != '\0') && (*ptr != ' ') && (*ptr != '\t')) {
+ VERBOSE (morep, ERROR, PRINTF ("unrecognize hexa-string (%d) '%s'|%s\n", 2 * i, str, ptr));
+ break;
+ }
}
}
- }
- /* unrecognize format */
- else {
- VERBOSE (morep, WARNING, PRINTF ("can't parse buffer '%s'\n", str));
+ /* unrecognize format */
+ else {
+ VERBOSE (morep, WARNING, PRINTF ("can't parse buffer '%s'\n", str));
+ }
}
-
return len;
}
@param name field name
@param buf preallocated storage
*/
-#define PARSE_ARRAY(name, buf) \
- else if (strcmp (var, name) == 0) { \
- buf##_len = parse_array (val, buf, sizeof (buf)); \
+#define PARSE_ARRAY(name, buf) \
+ else if (strcmp (var, name) == 0) { \
+ buf##_len = parse_array (val, buf, (buf##_len) ? buf##_len : (int)sizeof (buf)); \
}
/**
--- /dev/null
+# Test script
+
+TCROSS_CRYPTO ENCRYPT_CROSS_ASYNC CHANNELID=2 BYPASSLEN=4 BYPASS=11:22:33:44 DATA=@script-cross_crypto.eth
+RCROSS_CRYPTO ENCRYPT_CROSS_ASYNC CHANNELID=2 BYPASSLEN=4 BYPASS=11:22:33:44 DATA=@script-cross_crypto.eth
+
+TCROSS_CRYPTO ENCRYPTED_CROSS_ASYNC CHANNELID=9 BYPASSLEN=0 DATA=@script-local_crypto.eth
+RCROSS_CRYPTO ENCRYPTED_CROSS_ASYNC CHANNELID=9 BYPASSLEN=0 DATA=@script-local_crypto.eth
+
+TCROSS_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
+
+TCROSS_CRYPTO DECRYPTED_CROSS_ASYNC CHANNELID=0 BYPASSLEN=4 BYPASS=11:22:33:44 DATA=@script-cross_crypto.eth
+RCROSS_CRYPTO DECRYPTED_CROSS_ASYNC CHANNELID=0 BYPASSLEN=4 BYPASS=11:22:33:44 DATA=@script-cross_crypto.eth
--- /dev/null
+# 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
+
+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
+
+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
+
+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