printf("0x%02x ", sec_encrypt_key[i]);
printf("\n");
}
+
+ g_encryption = 1;
}
static uint8 pad_54[40] = {
use_count = 0;
}
+ printf("RC4-ing %u bytes with DECRYPT, uc=%u\n", length, use_count);
+
RC4(&rc4_decrypt_key, length, data, data);
use_count++;
}
hdrlen = (flags & SEC_ENCRYPT) ? 12 : 4;
else
hdrlen = (flags & SEC_ENCRYPT) ? 12 : 0;
+ printf("HDRLEN is %u\n", hdrlen);
s = mcs_init(maxlen + hdrlen);
s_push_layer(s, sec_hdr, hdrlen);
uint16 channel;
STREAM s;
- while ((s = mcs_recv(&channel)) != NULL)
+ if ((s = mcs_recv(&channel)) != NULL)
{
if (/*g_encryption || !g_licence_issued*/ 1)
{
if (tag == LICENCE_TAG_PRESENT) {
process_presented_license(s);
- s = sec_init(sizeof(result_license), SEC_LICENCE_NEG);
- out_uint8p(s, result_license, sizeof(result_license));
- s_mark_end(s);
- sec_send(s, SEC_LICENCE_NEG);
-
- //g_licence_issued = 1;
+ {
+ STREAM s;
+ s = sec_init(SEC_LICENCE_NEG, sizeof(result_license));
+ out_uint8p(s, result_license, sizeof(result_license));
+ s_mark_end(s);
+ sec_send(s, SEC_LICENCE_NEG);
+ }
- printf("Sending DEMAND_ACTIVE (0x%x bytes)\n", sizeof(demand_active));
- s = sec_init(sizeof(demand_active), SEC_ENCRYPT);
- out_uint8p(s, demand_active, sizeof(demand_active));
- s_mark_end(s);
- sec_send(s, SEC_ENCRYPT);
+ {
+ STREAM s;
+ printf("Sending DEMAND_ACTIVE (0x%x bytes)\n", sizeof(demand_active));
+ s = sec_init(SEC_ENCRYPT, sizeof(demand_active));
+ out_uint8p(s, demand_active, sizeof(demand_active));
+ s_mark_end(s);
+ sec_send(s, SEC_ENCRYPT);
+ }
}
- continue;
+ return NULL;
}
if (sec_flags & SEC_LOGON_INFO)
{
STREAM s;
- s = sec_init(sizeof(demand_license), SEC_LICENCE_NEG);
+ s = sec_init(SEC_LICENCE_NEG, sizeof(demand_license));
out_uint8p(s, demand_license, sizeof(demand_license));
s_mark_end(s);
sec_send(s, SEC_LICENCE_NEG);
}
- continue;
+ return NULL;
}
if (sec_flags & SEC_CLIENT_RANDOM) {
// now we can generate the keys
sec_generate_keys(inr + SEC_RANDOM_SIZE, cacert, 1);
- continue;
+ return NULL;
}
}
if (channel != MCS_GLOBAL_CHANNEL)
{
channel_process(s, channel);
- continue;
+ return NULL;
}
return s;