libidav/crypto.c

changeset 747
efbd59642577
parent 728
35a421f441d5
child 789
378b5ab86f77
equal deleted inserted replaced
746:a569148841ff 747:efbd59642577
1485 } 1485 }
1486 #endif 1486 #endif
1487 1487
1488 1488
1489 1489
1490 UcxBuffer* aes_encrypt_buffer(UcxBuffer *in, DavKey *key) { 1490 CxBuffer* aes_encrypt_buffer(CxBuffer *in, DavKey *key) {
1491 UcxBuffer *encbuf = ucx_buffer_new( 1491 CxBuffer *encbuf = cxBufferCreate(NULL, in->size, cxDefaultAllocator, CX_BUFFER_FREE_CONTENTS|CX_BUFFER_AUTO_EXTEND);
1492 NULL, 1492 if(!encbuf) {
1493 in->size+16, 1493 return NULL;
1494 UCX_BUFFER_AUTOEXTEND); 1494 }
1495 1495
1496 AESEncrypter *enc = aes_encrypter_new( 1496 AESEncrypter *enc = aes_encrypter_new(
1497 key, 1497 key,
1498 in, 1498 in,
1499 (dav_read_func)ucx_buffer_read, 1499 (dav_read_func)cxBufferRead,
1500 NULL); 1500 NULL);
1501 if(!enc) { 1501 if(!enc) {
1502 ucx_buffer_free(encbuf); 1502 cxBufferFree(encbuf);
1503 return NULL; 1503 return NULL;
1504 } 1504 }
1505 1505
1506 char buf[1024]; 1506 char buf[1024];
1507 size_t r; 1507 size_t r;
1508 while((r = aes_read(buf, 1, 1024, enc)) > 0) { 1508 while((r = aes_read(buf, 1, 1024, enc)) > 0) {
1509 ucx_buffer_write(buf, 1, r, encbuf); 1509 cxBufferWrite(buf, 1, r, encbuf);
1510 } 1510 }
1511 aes_encrypter_close(enc); 1511 aes_encrypter_close(enc);
1512 1512
1513 encbuf->pos = 0; 1513 encbuf->pos = 0;
1514 return encbuf; 1514 return encbuf;
1515 } 1515 }
1516 1516
1517 UcxBuffer* aes_decrypt_buffer(UcxBuffer *in, DavKey *key) { 1517 CxBuffer* aes_decrypt_buffer(CxBuffer *in, DavKey *key) {
1518 UcxBuffer *decbuf = ucx_buffer_new( 1518 CxBuffer *decbuf = cxBufferCreate(NULL, in->size, cxDefaultAllocator, CX_BUFFER_FREE_CONTENTS|CX_BUFFER_AUTO_EXTEND);
1519 NULL, 1519 if(!decbuf) {
1520 in->size, 1520 return NULL;
1521 UCX_BUFFER_AUTOEXTEND); 1521 }
1522 AESDecrypter *dec = aes_decrypter_new( 1522 AESDecrypter *dec = aes_decrypter_new(
1523 key, 1523 key,
1524 decbuf, 1524 decbuf,
1525 (dav_write_func)ucx_buffer_write); 1525 (dav_write_func)cxBufferWrite);
1526 if(!dec) {
1527 cxBufferFree(decbuf);
1528 return NULL;
1529 }
1526 1530
1527 aes_write(in->space, 1, in->size, dec); 1531 aes_write(in->space, 1, in->size, dec);
1528 aes_decrypter_shutdown(dec); 1532 aes_decrypter_shutdown(dec);
1529 aes_decrypter_close(dec); 1533 aes_decrypter_close(dec);
1530 decbuf->pos = 0; 1534 decbuf->pos = 0;

mercurial