From ab6e3fce040f9ad27cbce44e9038a24f15b601c8 Mon Sep 17 00:00:00 2001 From: Matthieu Patou Date: Sun, 15 Aug 2010 18:31:28 +0400 Subject: s4:heimdal: import lorikeet-heimdal-201009250123 (commit 42cabfb5b683dbcb97d583c397b897507689e382) I based this on Matthieu's import of lorikeet-heimdal, and then updated it to this commit. Andrew Bartlett --- source4/heimdal/lib/hcrypto/evp.c | 74 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 73 insertions(+), 1 deletion(-) (limited to 'source4/heimdal/lib/hcrypto/evp.c') diff --git a/source4/heimdal/lib/hcrypto/evp.c b/source4/heimdal/lib/hcrypto/evp.c index 72787e185f..da1a8940be 100644 --- a/source4/heimdal/lib/hcrypto/evp.c +++ b/source4/heimdal/lib/hcrypto/evp.c @@ -356,6 +356,7 @@ EVP_Digest(const void *data, size_t dsize, void *hash, unsigned int *hsize, const EVP_MD * EVP_sha256(void) { + hcrypto_validate(); return EVP_DEF_OP(HCRYPTO_DEF_PROVIDER, sha256); } @@ -370,6 +371,7 @@ EVP_sha256(void) const EVP_MD * EVP_sha1(void) { + hcrypto_validate(); return EVP_DEF_OP(HCRYPTO_DEF_PROVIDER, sha1); } @@ -385,6 +387,7 @@ const EVP_MD * EVP_sha(void) HC_DEPRECATED { + hcrypto_validate(); return EVP_sha1(); } @@ -399,6 +402,7 @@ EVP_sha(void) HC_DEPRECATED const EVP_MD * EVP_md5(void) HC_DEPRECATED_CRYPTO { + hcrypto_validate(); return EVP_DEF_OP(HCRYPTO_DEF_PROVIDER, md5); } @@ -413,6 +417,7 @@ EVP_md5(void) HC_DEPRECATED_CRYPTO const EVP_MD * EVP_md4(void) HC_DEPRECATED_CRYPTO { + hcrypto_validate(); return EVP_DEF_OP(HCRYPTO_DEF_PROVIDER, md4); } @@ -427,6 +432,7 @@ EVP_md4(void) HC_DEPRECATED_CRYPTO const EVP_MD * EVP_md2(void) HC_DEPRECATED_CRYPTO { + hcrypto_validate(); return EVP_DEF_OP(HCRYPTO_DEF_PROVIDER, md2); } @@ -768,6 +774,10 @@ EVP_CipherInit_ex(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *c, ENGINE *engine, case EVP_CIPH_STREAM_CIPHER: break; + case EVP_CIPH_CFB8_MODE: + if (iv) + memcpy(ctx->iv, iv, EVP_CIPHER_CTX_iv_length(ctx)); + break; default: return 0; @@ -996,6 +1006,7 @@ EVP_enc_null(void) const EVP_CIPHER * EVP_rc2_cbc(void) { + hcrypto_validate(); return EVP_DEF_OP(HCRYPTO_DEF_PROVIDER, rc2_cbc); } @@ -1010,6 +1021,7 @@ EVP_rc2_cbc(void) const EVP_CIPHER * EVP_rc2_40_cbc(void) { + hcrypto_validate(); return EVP_DEF_OP(HCRYPTO_DEF_PROVIDER, rc2_40_cbc); } @@ -1024,6 +1036,7 @@ EVP_rc2_40_cbc(void) const EVP_CIPHER * EVP_rc2_64_cbc(void) { + hcrypto_validate(); return EVP_DEF_OP(HCRYPTO_DEF_PROVIDER, rc2_64_cbc); } @@ -1038,6 +1051,7 @@ EVP_rc2_64_cbc(void) const EVP_CIPHER * EVP_rc4(void) { + hcrypto_validate(); return EVP_DEF_OP(HCRYPTO_DEF_PROVIDER, rc4); } @@ -1052,6 +1066,7 @@ EVP_rc4(void) const EVP_CIPHER * EVP_rc4_40(void) { + hcrypto_validate(); return EVP_DEF_OP(HCRYPTO_DEF_PROVIDER, rc4_40); } @@ -1066,6 +1081,7 @@ EVP_rc4_40(void) const EVP_CIPHER * EVP_des_cbc(void) { + hcrypto_validate(); return EVP_DEF_OP(HCRYPTO_DEF_PROVIDER, des_cbc); } @@ -1080,6 +1096,7 @@ EVP_des_cbc(void) const EVP_CIPHER * EVP_des_ede3_cbc(void) { + hcrypto_validate(); return EVP_DEF_OP(HCRYPTO_DEF_PROVIDER, des_ede3_cbc); } @@ -1094,6 +1111,7 @@ EVP_des_ede3_cbc(void) const EVP_CIPHER * EVP_aes_128_cbc(void) { + hcrypto_validate(); return EVP_DEF_OP(HCRYPTO_DEF_PROVIDER, aes_128_cbc); } @@ -1108,6 +1126,7 @@ EVP_aes_128_cbc(void) const EVP_CIPHER * EVP_aes_192_cbc(void) { + hcrypto_validate(); return EVP_DEF_OP(HCRYPTO_DEF_PROVIDER, aes_192_cbc); } @@ -1122,9 +1141,55 @@ EVP_aes_192_cbc(void) const EVP_CIPHER * EVP_aes_256_cbc(void) { + hcrypto_validate(); return EVP_DEF_OP(HCRYPTO_DEF_PROVIDER, aes_256_cbc); } +/** + * The AES-128 cipher type + * + * @return the AES-128 EVP_CIPHER pointer. + * + * @ingroup hcrypto_evp + */ + +const EVP_CIPHER * +EVP_aes_128_cfb8(void) +{ + hcrypto_validate(); + return EVP_DEF_OP(HCRYPTO_DEF_PROVIDER, aes_128_cfb8); +} + +/** + * The AES-192 cipher type + * + * @return the AES-192 EVP_CIPHER pointer. + * + * @ingroup hcrypto_evp + */ + +const EVP_CIPHER * +EVP_aes_192_cfb8(void) +{ + hcrypto_validate(); + return EVP_DEF_OP(HCRYPTO_DEF_PROVIDER, aes_192_cfb8); +} + +/** + * The AES-256 cipher type + * + * @return the AES-256 EVP_CIPHER pointer. + * + * @ingroup hcrypto_evp + */ + +const EVP_CIPHER * +EVP_aes_256_cfb8(void) +{ + hcrypto_validate(); + return EVP_DEF_OP(HCRYPTO_DEF_PROVIDER, aes_256_cfb8); +} + /** * The Camellia-128 cipher type * @@ -1136,6 +1201,7 @@ EVP_aes_256_cbc(void) const EVP_CIPHER * EVP_camellia_128_cbc(void) { + hcrypto_validate(); return EVP_DEF_OP(HCRYPTO_DEF_PROVIDER, camellia_128_cbc); } @@ -1150,6 +1216,7 @@ EVP_camellia_128_cbc(void) const EVP_CIPHER * EVP_camellia_192_cbc(void) { + hcrypto_validate(); return EVP_DEF_OP(HCRYPTO_DEF_PROVIDER, camellia_192_cbc); } @@ -1164,6 +1231,7 @@ EVP_camellia_192_cbc(void) const EVP_CIPHER * EVP_camellia_256_cbc(void) { + hcrypto_validate(); return EVP_DEF_OP(HCRYPTO_DEF_PROVIDER, camellia_256_cbc); } @@ -1179,6 +1247,9 @@ static const struct cipher_name { { "aes-128-cbc", EVP_aes_128_cbc }, { "aes-192-cbc", EVP_aes_192_cbc }, { "aes-256-cbc", EVP_aes_256_cbc }, + { "aes-128-cfb8", EVP_aes_128_cfb8 }, + { "aes-192-cfb8", EVP_aes_192_cfb8 }, + { "aes-256-cfb8", EVP_aes_256_cfb8 }, { "camellia-128-cbc", EVP_camellia_128_cbc }, { "camellia-192-cbc", EVP_camellia_192_cbc }, { "camellia-256-cbc", EVP_camellia_256_cbc } @@ -1243,7 +1314,8 @@ EVP_BytesToKey(const EVP_CIPHER *type, void *keydata, void *ivdata) { - int ivlen, keylen, first = 0; + unsigned int ivlen, keylen; + int first = 0; unsigned int mds = 0, i; unsigned char *key = keydata; unsigned char *iv = ivdata; -- cgit