168
168
static char *smb_traffic_analyzer_encrypt( TALLOC_CTX *ctx,
169
169
const char *akey, const char *str, size_t *len)
173
173
unsigned char filler[17]= "................";
175
unsigned char crypted[18];
176
175
if (akey == NULL) return NULL;
177
176
samba_AES_set_encrypt_key((unsigned char *) akey, 128, &key);
178
177
s1 = strlen(str) / 16;
179
178
s2 = strlen(str) % 16;
180
for (h = 0; h < s2; h++) *(filler+h)=*(str+(s1*16)+h);
179
memcpy(filler, str + (s1*16), s2);
181
180
DEBUG(10, ("smb_traffic_analyzer_send_data_socket: created %s"
182
181
" as filling block.\n", filler));
183
output = talloc_array(ctx, char, (s1*16)+17 );
183
*len = ((s1 + 1)*16);
184
output = talloc_array(ctx, char, *len);
185
185
for (h = 0; h < s1; h++) {
186
samba_AES_encrypt((unsigned char *) str+(16*h), crypted, &key);
187
for (d = 0; d<16; d++) output[d+(16*h)]=crypted[d];
186
samba_AES_encrypt((unsigned char *) str+(16*h), output+16*h,
189
samba_AES_encrypt( (unsigned char *) str+(16*h), filler, &key );
190
for (d = 0;d < 16; d++) output[d+(16*h)]=*(filler+d);
189
samba_AES_encrypt(filler, (unsigned char *)(output+(16*h)), &key);
191
190
*len = (s1*16)+16;