206 out = malloc(outlen + ivl); |
206 out = malloc(outlen + ivl); |
207 if(ivl > 0) { |
207 if(ivl > 0) { |
208 memcpy(out, enc->iv, ivl); |
208 memcpy(out, enc->iv, ivl); |
209 } |
209 } |
210 EVP_EncryptUpdate(enc->ctx, out + ivl, &outlen, in, in_len); |
210 EVP_EncryptUpdate(enc->ctx, out + ivl, &outlen, in, in_len); |
|
211 // I think we don't need this |
|
212 /* |
211 if(in_len != len) { |
213 if(in_len != len) { |
212 int newoutlen = 16; |
214 int newoutlen = 16; |
213 EVP_EncryptFinal_ex(enc->ctx, out + ivl + outlen, &newoutlen); |
215 EVP_EncryptFinal_ex(enc->ctx, out + ivl + outlen, &newoutlen); |
214 outlen += newoutlen; |
216 outlen += newoutlen; |
215 enc->end = 1; |
217 enc->end = 1; |
216 } |
218 } |
|
219 */ |
217 } else { |
220 } else { |
218 out = malloc(16); |
221 out = malloc(16); |
219 EVP_EncryptFinal_ex(enc->ctx, out, &outlen); |
222 EVP_EncryptFinal_ex(enc->ctx, out, &outlen); |
220 enc->end = 1; |
223 enc->end = 1; |
221 } |
224 } |
639 } |
642 } |
640 |
643 |
641 CCCryptorStatus status; |
644 CCCryptorStatus status; |
642 size_t avail = outlen; |
645 size_t avail = outlen; |
643 status = CCCryptorUpdate(enc->ctx, in, in_len, out + ivl, avail, &outlen); |
646 status = CCCryptorUpdate(enc->ctx, in, in_len, out + ivl, avail, &outlen); |
|
647 // TODO: check if this still works |
|
648 /* |
644 if(in_len != len) { |
649 if(in_len != len) { |
645 size_t newoutlen = 16; |
650 size_t newoutlen = 16; |
646 status = CCCryptorFinal(enc->ctx, out + ivl + outlen, 16, &newoutlen); |
651 status = CCCryptorFinal(enc->ctx, out + ivl + outlen, 16, &newoutlen); |
647 outlen += newoutlen; |
652 outlen += newoutlen; |
648 enc->end = 1; |
653 enc->end = 1; |
649 } |
654 } |
|
655 */ |
650 } else { |
656 } else { |
651 out = malloc(32); |
657 out = malloc(32); |
652 CCCryptorStatus status; |
658 CCCryptorStatus status; |
653 size_t avail = outlen; |
659 size_t avail = outlen; |
654 status = CCCryptorFinal(enc->ctx, out, 32, &outlen); |
660 status = CCCryptorFinal(enc->ctx, out, 32, &outlen); |