From: Laurent Mazet Date: Thu, 8 May 2025 07:10:20 +0000 (+0200) Subject: manage protocol v1 X-Git-Tag: v1.0~28^2^2 X-Git-Url: https://secure.softndesign.org/git/?a=commitdiff_plain;h=394054fc60bdfaa5660cbbb9e558f9748902f19d;p=morep.git manage protocol v1 --- diff --git a/def.h b/def.h index bef4dbd..0ee7011 100644 --- a/def.h +++ b/def.h @@ -15,8 +15,14 @@ #ifndef __DEF_H__ #define __DEF_H__ -#define MOREP_PAYLOAD 1496 -//#define MOREP_PAYLOAD (1496 * 16 - 1) +#define PROTOCOL_EXT +//#define PAYLOAD_EXT + +#ifndef PAYLOAD_EXT +#define MOREP_PAYLOAD (1496 - 1) +#else +#define MOREP_PAYLOAD (1496 * 16 - 1) +#endif #endif /* __DEF_H__ */ diff --git a/function.c b/function.c index 3575d42..5297e96 100644 --- a/function.c +++ b/function.c @@ -60,8 +60,15 @@ int encrypt_func (CLEAR_DATA_t *in, ENCRYPTED_DATA_t *out) } /* copy bypass */ +#ifndef PROTOCOL_EXT + if (in->bypass_len) { + VERBOSE (cryptomod, WARNING, PRINTF ("not supproted by this protocol\n")); + } + out->bypass_len = 0 +#else memcpy (out->bypass, in->bypass, in->bypass_len * sizeof (uint8_t)); out->bypass_len = in->bypass_len; +#endif /* scramble with iv */ for (int i = 0; i < in->data_len; i++) { @@ -73,6 +80,7 @@ int encrypt_func (CLEAR_DATA_t *in, ENCRYPTED_DATA_t *out) int cid = in->channel_id; int kid = channels[cid] - 1; if (kid >= 0) { + // FIXIT: not thread safe uint8_t *key = keys[kid]; int klen = key_lengths[kid]; for (int i = 0; i < out->data_len; i++) { @@ -102,8 +110,15 @@ int decrypt_func (ENCRYPTED_DATA_t *in, CLEAR_DATA_t *out) int iv_len = sizeof (in->iv); /* copy bypass */ +#ifndef PROTOCOL_EXT + if (in->bypass_len) { + VERBOSE (cryptomod, WARNING, PRINTF ("not supproted by this protocol\n")); + } + out->bypass_len = 0 +#else memcpy (out->bypass, in->bypass, in->bypass_len * sizeof (uint8_t)); out->bypass_len = in->bypass_len; +#endif /* scramble with iv */ for (int i = 0; i < in->data_len; i++) { @@ -115,6 +130,7 @@ int decrypt_func (ENCRYPTED_DATA_t *in, CLEAR_DATA_t *out) int cid = in->channel_id; int kid = channels[cid] - 1; if (kid >= 0) { + // FIXIT: not thread safe uint8_t *key = keys[kid]; int klen = key_lengths[kid]; for (int i = 0; i < out->data_len; i++) { @@ -142,6 +158,10 @@ int load_key_func (KEY_t *in, STATUS_t *out) memcpy (keys[in->key_id], in->key, klen); key_lengths[kid] = klen; +#ifndef PROTOCOL_EXT + channels[kid] = kid + 1; +#endif + out->status = ok_e; return 0; @@ -157,6 +177,10 @@ int unload_key_func (KEY_t *in, STATUS_t *out) keys[kid] = NULL; key_lengths[kid] = 0; +#ifndef PROTOCOL_EXT + channels[kid] = 0; +#endif + return 0; } @@ -170,6 +194,9 @@ int erase_key_func (KEY_t *in, STATUS_t *out) for (int i = 0; i < NB_KEYS; i++) { free (keys[i]); +#ifndef PROTOCOL_EXT + channels[i] = 0; +#endif } memset (keys, 0, NB_KEYS * sizeof (uint8_t *)); memset (key_lengths, 0, NB_KEYS * sizeof (int)); diff --git a/morep.c b/morep.c index a75198f..e0997aa 100644 --- a/morep.c +++ b/morep.c @@ -262,7 +262,9 @@ int find_unused_morep () int i; for (i = 0; i < MAX_MOREP_NUMBER; i++) { + // FIXIT: not thread safe if (MOREP_list[i]->used == 0) { + MOREP_list[i]->used = 1; break; } } @@ -270,7 +272,6 @@ int find_unused_morep () VERBOSE (morep, WARNING, PRINTF ("can't find avaliable morep descriptor\n")); return -1; } - MOREP_list[i]->used = 1; VERBOSE (morep, DEBUG, PRINTF ("find morep: %d\n", i));