diff options
Diffstat (limited to 'lib/crypto/c_src/cipher.c')
-rw-r--r-- | lib/crypto/c_src/cipher.c | 82 |
1 files changed, 42 insertions, 40 deletions
diff --git a/lib/crypto/c_src/cipher.c b/lib/crypto/c_src/cipher.c index 3db2258d5e..f9fac1761a 100644 --- a/lib/crypto/c_src/cipher.c +++ b/lib/crypto/c_src/cipher.c @@ -26,72 +26,74 @@ #define COND_NO_DES_PTR(Ptr) (NULL) #endif +#define NOT_AEAD {{0,0,0}} + static struct cipher_type_t cipher_types[] = { #ifdef HAVE_RC2 - {{"rc2_cbc"}, {&EVP_rc2_cbc}, 0, NO_FIPS_CIPHER}, + {{"rc2_cbc"}, {&EVP_rc2_cbc}, 0, NO_FIPS_CIPHER, NOT_AEAD}, #else - {{"rc2_cbc"}, {NULL}, 0, NO_FIPS_CIPHER}, + {{"rc2_cbc"}, {NULL}, 0, NO_FIPS_CIPHER, NOT_AEAD}, #endif #ifdef HAVE_RC4 - {{"rc4"}, {&EVP_rc4}, 0, NO_FIPS_CIPHER}, + {{"rc4"}, {&EVP_rc4}, 0, NO_FIPS_CIPHER, NOT_AEAD}, #else - {{"rc4"}, {NULL}, 0, NO_FIPS_CIPHER}, + {{"rc4"}, {NULL}, 0, NO_FIPS_CIPHER, NOT_AEAD}, #endif - {{"des_cbc"}, {COND_NO_DES_PTR(&EVP_des_cbc)}, 0, NO_FIPS_CIPHER}, - {{"des_cfb"}, {COND_NO_DES_PTR(&EVP_des_cfb8)}, 0, NO_FIPS_CIPHER}, - {{"des_ecb"}, {COND_NO_DES_PTR(&EVP_des_ecb)}, 0, NO_FIPS_CIPHER | ECB_BUG_0_9_8L}, + {{"des_cbc"}, {COND_NO_DES_PTR(&EVP_des_cbc)}, 0, NO_FIPS_CIPHER, NOT_AEAD}, + {{"des_cfb"}, {COND_NO_DES_PTR(&EVP_des_cfb8)}, 0, NO_FIPS_CIPHER, NOT_AEAD}, + {{"des_ecb"}, {COND_NO_DES_PTR(&EVP_des_ecb)}, 0, NO_FIPS_CIPHER | ECB_BUG_0_9_8L, NOT_AEAD}, - {{"des_ede3_cbc"}, {COND_NO_DES_PTR(&EVP_des_ede3_cbc)}, 0, 0}, + {{"des_ede3_cbc"}, {COND_NO_DES_PTR(&EVP_des_ede3_cbc)}, 0, 0, NOT_AEAD}, #ifdef HAVE_DES_ede3_cfb_encrypt - {{"des_ede3_cfb"}, {COND_NO_DES_PTR(&EVP_des_ede3_cfb8)}, 0, 0}, + {{"des_ede3_cfb"}, {COND_NO_DES_PTR(&EVP_des_ede3_cfb8)}, 0, 0, NOT_AEAD}, #else - {{"des_ede3_cfb"}, {NULL}, 0, 0}, + {{"des_ede3_cfb"}, {NULL}, 0, 0, NOT_AEAD}, #endif #ifdef HAVE_BF - {{"blowfish_cbc"}, {&EVP_bf_cbc}, 0, NO_FIPS_CIPHER}, - {{"blowfish_cfb64"}, {&EVP_bf_cfb64}, 0, NO_FIPS_CIPHER}, - {{"blowfish_ofb64"}, {&EVP_bf_ofb}, 0, NO_FIPS_CIPHER}, - {{"blowfish_ecb"}, {&EVP_bf_ecb}, 0, NO_FIPS_CIPHER | ECB_BUG_0_9_8L}, + {{"blowfish_cbc"}, {&EVP_bf_cbc}, 0, NO_FIPS_CIPHER, NOT_AEAD}, + {{"blowfish_cfb64"}, {&EVP_bf_cfb64}, 0, NO_FIPS_CIPHER, NOT_AEAD}, + {{"blowfish_ofb64"}, {&EVP_bf_ofb}, 0, NO_FIPS_CIPHER, NOT_AEAD}, + {{"blowfish_ecb"}, {&EVP_bf_ecb}, 0, NO_FIPS_CIPHER | ECB_BUG_0_9_8L, NOT_AEAD}, #else - {{"blowfish_cbc"}, {NULL}, 0, 0}, - {{"blowfish_cfb64"}, {NULL}, 0, 0}, - {{"blowfish_ofb64"}, {NULL}, 0, 0}, - {{"blowfish_ecb"}, {NULL}, 0, 0}, + {{"blowfish_cbc"}, {NULL}, 0, 0, NOT_AEAD}, + {{"blowfish_cfb64"}, {NULL}, 0, 0, NOT_AEAD}, + {{"blowfish_ofb64"}, {NULL}, 0, 0, NOT_AEAD}, + {{"blowfish_ecb"}, {NULL}, 0, 0, NOT_AEAD}, #endif - {{"aes_128_cbc"}, {&EVP_aes_128_cbc}, 16, 0}, - {{"aes_192_cbc"}, {&EVP_aes_192_cbc}, 24, 0}, - {{"aes_256_cbc"}, {&EVP_aes_256_cbc}, 32, 0}, + {{"aes_128_cbc"}, {&EVP_aes_128_cbc}, 16, 0, NOT_AEAD}, + {{"aes_192_cbc"}, {&EVP_aes_192_cbc}, 24, 0, NOT_AEAD}, + {{"aes_256_cbc"}, {&EVP_aes_256_cbc}, 32, 0, NOT_AEAD}, - {{"aes_128_cfb8"}, {&EVP_aes_128_cfb8}, 16, AES_CFBx}, - {{"aes_192_cfb8"}, {&EVP_aes_192_cfb8}, 24, AES_CFBx}, - {{"aes_256_cfb8"}, {&EVP_aes_256_cfb8}, 32, AES_CFBx}, + {{"aes_128_cfb8"}, {&EVP_aes_128_cfb8}, 16, AES_CFBx, NOT_AEAD}, + {{"aes_192_cfb8"}, {&EVP_aes_192_cfb8}, 24, AES_CFBx, NOT_AEAD}, + {{"aes_256_cfb8"}, {&EVP_aes_256_cfb8}, 32, AES_CFBx, NOT_AEAD}, - {{"aes_128_cfb128"}, {&EVP_aes_128_cfb128}, 16, AES_CFBx}, - {{"aes_192_cfb128"}, {&EVP_aes_192_cfb128}, 24, AES_CFBx}, - {{"aes_256_cfb128"}, {&EVP_aes_256_cfb128}, 32, AES_CFBx}, + {{"aes_128_cfb128"}, {&EVP_aes_128_cfb128}, 16, AES_CFBx, NOT_AEAD}, + {{"aes_192_cfb128"}, {&EVP_aes_192_cfb128}, 24, AES_CFBx, NOT_AEAD}, + {{"aes_256_cfb128"}, {&EVP_aes_256_cfb128}, 32, AES_CFBx, NOT_AEAD}, - {{"aes_128_ecb"}, {&EVP_aes_128_ecb}, 16, ECB_BUG_0_9_8L}, - {{"aes_192_ecb"}, {&EVP_aes_192_ecb}, 24, ECB_BUG_0_9_8L}, - {{"aes_256_ecb"}, {&EVP_aes_256_ecb}, 32, ECB_BUG_0_9_8L}, + {{"aes_128_ecb"}, {&EVP_aes_128_ecb}, 16, ECB_BUG_0_9_8L, NOT_AEAD}, + {{"aes_192_ecb"}, {&EVP_aes_192_ecb}, 24, ECB_BUG_0_9_8L, NOT_AEAD}, + {{"aes_256_ecb"}, {&EVP_aes_256_ecb}, 32, ECB_BUG_0_9_8L, NOT_AEAD}, #if defined(HAVE_EVP_AES_CTR) - {{"aes_128_ctr"}, {&EVP_aes_128_ctr}, 16, 0}, - {{"aes_192_ctr"}, {&EVP_aes_192_ctr}, 24, 0}, - {{"aes_256_ctr"}, {&EVP_aes_256_ctr}, 32, 0}, + {{"aes_128_ctr"}, {&EVP_aes_128_ctr}, 16, 0, NOT_AEAD}, + {{"aes_192_ctr"}, {&EVP_aes_192_ctr}, 24, 0, NOT_AEAD}, + {{"aes_256_ctr"}, {&EVP_aes_256_ctr}, 32, 0, NOT_AEAD}, #else - {{"aes_128_ctr"}, {NULL}, 16, AES_CTR_COMPAT}, - {{"aes_192_ctr"}, {NULL}, 24, AES_CTR_COMPAT}, - {{"aes_256_ctr"}, {NULL}, 32, AES_CTR_COMPAT}, + {{"aes_128_ctr"}, {NULL}, 16, AES_CTR_COMPAT, NOT_AEAD}, + {{"aes_192_ctr"}, {NULL}, 24, AES_CTR_COMPAT, NOT_AEAD}, + {{"aes_256_ctr"}, {NULL}, 32, AES_CTR_COMPAT, NOT_AEAD}, #endif #if defined(HAVE_CHACHA20) - {{"chacha20"}, {&EVP_chacha20}, 32, NO_FIPS_CIPHER}, + {{"chacha20"}, {&EVP_chacha20}, 32, NO_FIPS_CIPHER, NOT_AEAD}, #else - {{"chacha20"}, {NULL}, 0, NO_FIPS_CIPHER}, + {{"chacha20"}, {NULL}, 0, NO_FIPS_CIPHER, NOT_AEAD}, #endif /*==== AEAD ciphers ====*/ @@ -123,12 +125,12 @@ static struct cipher_type_t cipher_types[] = /*==== Specialy handled ciphers, only for inclusion in algorithm's list ====*/ #ifdef HAVE_AES_IGE - {{"aes_ige256"}, {NULL}, 0, NO_FIPS_CIPHER | NON_EVP_CIPHER}, + {{"aes_ige256"}, {NULL}, 0, NO_FIPS_CIPHER | NON_EVP_CIPHER, NOT_AEAD}, #endif /*==== End of list ==== */ - {{NULL},{NULL},0,0} + {{NULL},{NULL},0,0,NOT_AEAD} }; ErlNifResourceType* evp_cipher_ctx_rtype; |