always call cipher-init so that we can reset IV when caller wants too
This commit is contained in:
@@ -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,
|
||||||
|
Reference in New Issue
Block a user