always call cipher-init so that we can reset IV when caller wants too

This commit is contained in:
Love Hornquist Astrand
2009-08-21 07:43:50 -07:00
parent 2b6a34e132
commit 796a522b46

View File

@@ -95,6 +95,14 @@ init_cc_key(int encp, CCAlgorithm alg, const void *key,
CCOperation op = encp ? kCCEncrypt : kCCDecrypt; CCOperation op = encp ? kCCEncrypt : kCCDecrypt;
CCCryptorStatus ret; CCCryptorStatus ret;
if (*ref) {
if (key == NULL && iv) {
CCCryptorReset(*ref, iv);
return 1;
}
CCCryptorRelease(*ref);
}
ret = CCCryptorCreate(op, alg, 0, key, keylen, iv, ref); ret = CCCryptorCreate(op, alg, 0, key, keylen, iv, ref);
if (ret) if (ret)
return 0; return 0;
@@ -127,7 +135,7 @@ EVP_cc_des_ede3_cbc(void)
8, 8,
24, 24,
8, 8,
EVP_CIPH_CBC_MODE, EVP_CIPH_CBC_MODE|EVP_CIPH_ALWAYS_CALL_INIT,
cc_des_ede3_cbc_init, cc_des_ede3_cbc_init,
cc_do_cipher, cc_do_cipher,
cc_cleanup, cc_cleanup,
@@ -170,7 +178,7 @@ EVP_cc_des_cbc(void)
kCCBlockSizeDES, kCCBlockSizeDES,
kCCBlockSizeDES, kCCBlockSizeDES,
kCCBlockSizeDES, kCCBlockSizeDES,
EVP_CIPH_CBC_MODE, EVP_CIPH_CBC_MODE|EVP_CIPH_ALWAYS_CALL_INIT,
cc_des_cbc_init, cc_des_cbc_init,
cc_do_cipher, cc_do_cipher,
cc_cleanup, cc_cleanup,
@@ -213,7 +221,7 @@ EVP_cc_aes_128_cbc(void)
kCCBlockSizeAES128, kCCBlockSizeAES128,
kCCKeySizeAES128, kCCKeySizeAES128,
kCCBlockSizeAES128, kCCBlockSizeAES128,
EVP_CIPH_CBC_MODE, EVP_CIPH_CBC_MODE|EVP_CIPH_ALWAYS_CALL_INIT,
cc_aes_cbc_init, cc_aes_cbc_init,
cc_do_cipher, cc_do_cipher,
cc_cleanup, cc_cleanup,
@@ -242,7 +250,7 @@ EVP_cc_aes_192_cbc(void)
kCCBlockSizeAES128, kCCBlockSizeAES128,
kCCKeySizeAES192, kCCKeySizeAES192,
kCCBlockSizeAES128, kCCBlockSizeAES128,
EVP_CIPH_CBC_MODE, EVP_CIPH_CBC_MODE|EVP_CIPH_ALWAYS_CALL_INIT,
cc_aes_cbc_init, cc_aes_cbc_init,
cc_do_cipher, cc_do_cipher,
cc_cleanup, cc_cleanup,
@@ -271,7 +279,7 @@ EVP_cc_aes_256_cbc(void)
kCCBlockSizeAES128, kCCBlockSizeAES128,
kCCKeySizeAES256, kCCKeySizeAES256,
kCCBlockSizeAES128, kCCBlockSizeAES128,
EVP_CIPH_CBC_MODE, EVP_CIPH_CBC_MODE|EVP_CIPH_ALWAYS_CALL_INIT,
cc_aes_cbc_init, cc_aes_cbc_init,
cc_do_cipher, cc_do_cipher,
cc_cleanup, cc_cleanup,
@@ -315,7 +323,7 @@ EVP_cc_rc2_cbc(void)
kCCBlockSizeRC2, kCCBlockSizeRC2,
16, 16,
kCCBlockSizeRC2, kCCBlockSizeRC2,
EVP_CIPH_CBC_MODE, EVP_CIPH_CBC_MODE|EVP_CIPH_ALWAYS_CALL_INIT,
cc_rc2_cbc_init, cc_rc2_cbc_init,
cc_do_cipher, cc_do_cipher,
cc_cleanup, cc_cleanup,
@@ -345,7 +353,7 @@ EVP_cc_rc2_40_cbc(void)
kCCBlockSizeRC2, kCCBlockSizeRC2,
5, 5,
kCCBlockSizeRC2, kCCBlockSizeRC2,
EVP_CIPH_CBC_MODE, EVP_CIPH_CBC_MODE|EVP_CIPH_ALWAYS_CALL_INIT,
cc_rc2_cbc_init, cc_rc2_cbc_init,
cc_do_cipher, cc_do_cipher,
cc_cleanup, cc_cleanup,
@@ -376,7 +384,7 @@ EVP_cc_rc2_64_cbc(void)
kCCBlockSizeRC2, kCCBlockSizeRC2,
8, 8,
kCCBlockSizeRC2, kCCBlockSizeRC2,
EVP_CIPH_CBC_MODE, EVP_CIPH_CBC_MODE|EVP_CIPH_ALWAYS_CALL_INIT,
cc_rc2_cbc_init, cc_rc2_cbc_init,
cc_do_cipher, cc_do_cipher,
cc_cleanup, cc_cleanup,