dav/config.c

changeset 147
458a8dc68048
parent 142
0c0ccb7f71ba
child 150
37fb12574acd
equal deleted inserted replaced
146:e48048334602 147:458a8dc68048
319 } else if(xstreq(node->name, "type")) { 319 } else if(xstreq(node->name, "type")) {
320 if(!strcmp(value, "aes128")) { 320 if(!strcmp(value, "aes128")) {
321 key->type = KEY_AES128; 321 key->type = KEY_AES128;
322 } else if(!strcmp(value, "aes256")) { 322 } else if(!strcmp(value, "aes256")) {
323 key->type = KEY_AES256; 323 key->type = KEY_AES256;
324 } else if(!strcmp(value, "password")) {
325 key->type = KEY_PASSWORD;
324 } 326 }
325 } 327 }
326 328
327 } 329 }
328 node = node->next; 330 node = node->next;
329 } 331 }
330 332
331 if(key->name) { 333 if(key->name) {
332 if(key->type == KEY_AES128) { 334 if(key->type == KEY_AES128) {
333 if(key->length < 16) { 335 if(key->length < 16) {
336 fprintf(
337 stderr,
338 "Error: Key %s is too small (%d < 16)\n",
339 key->name,
340 key->length);
334 return; 341 return;
335 } 342 }
336 key->length = 16; 343 key->length = 16;
337 } 344 }
338 if(key->type == KEY_AES256) { 345 if(key->type == KEY_AES256) {
339 if(key->length < 32) { 346 if(key->length < 32) {
347 fprintf(
348 stderr,
349 "Error: Key %s is too small (%d < 32)\n",
350 key->name,
351 key->length);
340 return; 352 return;
341 } 353 }
342 key->length = 32; 354 key->length = 32;
355 }
356 if(key->type == KEY_PASSWORD) {
357 key->length = 0;
358 if(key->data) {
359 // make sure the pw-key is not loaded from a file
360 free(key->data);
361 key->data = NULL;
362 }
343 } 363 }
344 ucx_map_cstr_put(keys, key->name, key); 364 ucx_map_cstr_put(keys, key->name, key);
345 dav_context_add_key(context, key); 365 dav_context_add_key(context, key);
346 } else { 366 } else {
347 // TODO: free 367 if(key->data) {
368 free(key->data);
369 free(key);
370 }
348 } 371 }
349 } 372 }
350 373
351 sstr_t load_key_file(char *filename) { 374 sstr_t load_key_file(char *filename) {
352 sstr_t k; 375 sstr_t k;

mercurial