dav/crypto.c

changeset 9
6aec77cfa95b
parent 5
88625853ae74
child 10
e6d0fbe0ebd9
equal deleted inserted replaced
8:4503498deb22 9:6aec77cfa95b
49 return dec; 49 return dec;
50 } 50 }
51 51
52 size_t aes_write(const void *buf, size_t s, size_t n, AESDecrypter *dec) { 52 size_t aes_write(const void *buf, size_t s, size_t n, AESDecrypter *dec) {
53 int len = s*n; 53 int len = s*n;
54 int outlen = len + AES_BLOCK_SIZE; 54 int outlen = len + 16;
55 unsigned char *out = malloc(outlen); 55 unsigned char *out = malloc(outlen);
56 EVP_DecryptUpdate(&dec->ctx, out, &len, buf, len); 56 EVP_DecryptUpdate(&dec->ctx, out, &len, buf, len);
57 dec->write(out, 1, len, dec->stream); 57 dec->write(out, 1, len, dec->stream);
58 free(out); 58 free(out);
59 return (s*n) / s; 59 return (s*n) / s;
115 size_t in_len = enc->read(in, 1, len, enc->stream); 115 size_t in_len = enc->read(in, 1, len, enc->stream);
116 116
117 void *out = NULL; 117 void *out = NULL;
118 int outlen = 0; 118 int outlen = 0;
119 if(in_len != 0) { 119 if(in_len != 0) {
120 outlen = len + AES_BLOCK_SIZE; 120 outlen = len + 16;
121 out = malloc(outlen); 121 out = malloc(outlen);
122 EVP_EncryptUpdate(&enc->ctx, out, &outlen, in, in_len); 122 EVP_EncryptUpdate(&enc->ctx, out, &outlen, in, in_len);
123 //out = (char*)aes_encrypt(enc->ctx, (unsigned char*)in, (int*)&in_len); 123 //out = (char*)aes_encrypt(enc->ctx, (unsigned char*)in, (int*)&in_len);
124 } else { 124 } else {
125 out = malloc(AES_BLOCK_SIZE); 125 out = malloc(16);
126 EVP_EncryptFinal_ex(&enc->ctx, out, &outlen); 126 EVP_EncryptFinal_ex(&enc->ctx, out, &outlen);
127 enc->end = 1; 127 enc->end = 1;
128 } 128 }
129 enc->tmp = out; 129 enc->tmp = out;
130 enc->tmplen = outlen; 130 enc->tmplen = outlen;

mercurial