From: Dr. Stephen Henson Date: Sat, 15 Mar 2008 00:02:23 +0000 (+0000) Subject: Return error if no cipher set for encrypted data type. X-Git-Tag: OpenSSL_0_9_8k^2~528 X-Git-Url: https://git.openssl.org/?p=openssl.git;a=commitdiff_plain;h=fd47c36136c7ac9b86f14c69b23a7d2df4fce132 Return error if no cipher set for encrypted data type. Update CHANGES. --- diff --git a/CHANGES b/CHANGES index f3d0ed551d..bf448fa029 100644 --- a/CHANGES +++ b/CHANGES @@ -6,9 +6,9 @@ *) Initial support for Cryptographic Message Syntax (aka CMS) based on RFC3850, RFC3851 and RFC3852. New cms directory and cms utility, - support for data, signedData, compressedData types currently included, - more to come. Scripts to check against RFC4134 examples draft and internal - consistency. + support for data, signedData, compressedData, digestedData and + encryptedData types currently included, more to come. Scripts to + check against RFC4134 examples draft. [Steve Henson] *) Zlib compression BIO. This is a filter BIO which compressed and diff --git a/crypto/cms/cms.h b/crypto/cms/cms.h index f10a5817b4..c9801cf293 100644 --- a/crypto/cms/cms.h +++ b/crypto/cms/cms.h @@ -273,6 +273,7 @@ void ERR_load_CMS_strings(void); #define CMS_F_CMS_ENCRYPTEDCONTENT_INIT_BIO 148 #define CMS_F_CMS_ENCRYPTEDCONTENT_TO_BIO 138 #define CMS_F_CMS_ENCRYPTEDDATA_DECRYPT 140 +#define CMS_F_CMS_ENCRYPTEDDATA_ENCRYPT 149 #define CMS_F_CMS_ENCRYPTEDDATA_INIT_BIO 147 #define CMS_F_CMS_ENCRYPTEDDATA_SET1_KEY 141 #define CMS_F_CMS_ENCRYPTED_DATA_DECRYPT 139 @@ -322,6 +323,7 @@ void ERR_load_CMS_strings(void); #define CMS_R_NOT_ENCRYPTED_DATA 143 #define CMS_R_NOT_KEY_TRANSPORT 114 #define CMS_R_NOT_SUPPORTED_FOR_THIS_KEY_TYPE 115 +#define CMS_R_NO_CIPHER 144 #define CMS_R_NO_CONTENT 116 #define CMS_R_NO_DEFAULT_DIGEST 117 #define CMS_R_NO_DIGEST_SET 118 diff --git a/crypto/cms/cms_err.c b/crypto/cms/cms_err.c index 96748033e1..0d142681b4 100644 --- a/crypto/cms/cms_err.c +++ b/crypto/cms/cms_err.c @@ -94,6 +94,7 @@ static ERR_STRING_DATA CMS_str_functs[]= {ERR_FUNC(CMS_F_CMS_ENCRYPTEDCONTENT_INIT_BIO), "CMS_ENCRYPTEDCONTENT_INIT_BIO"}, {ERR_FUNC(CMS_F_CMS_ENCRYPTEDCONTENT_TO_BIO), "CMS_ENCRYPTEDCONTENT_TO_BIO"}, {ERR_FUNC(CMS_F_CMS_ENCRYPTEDDATA_DECRYPT), "CMS_EncryptedData_decrypt"}, +{ERR_FUNC(CMS_F_CMS_ENCRYPTEDDATA_ENCRYPT), "CMS_EncryptedData_encrypt"}, {ERR_FUNC(CMS_F_CMS_ENCRYPTEDDATA_INIT_BIO), "CMS_ENCRYPTEDDATA_INIT_BIO"}, {ERR_FUNC(CMS_F_CMS_ENCRYPTEDDATA_SET1_KEY), "CMS_EncryptedData_set1_key"}, {ERR_FUNC(CMS_F_CMS_ENCRYPTED_DATA_DECRYPT), "CMS_ENCRYPTED_DATA_DECRYPT"}, @@ -146,6 +147,7 @@ static ERR_STRING_DATA CMS_str_reasons[]= {ERR_REASON(CMS_R_NOT_ENCRYPTED_DATA) ,"not encrypted data"}, {ERR_REASON(CMS_R_NOT_KEY_TRANSPORT) ,"not key transport"}, {ERR_REASON(CMS_R_NOT_SUPPORTED_FOR_THIS_KEY_TYPE),"not supported for this key type"}, +{ERR_REASON(CMS_R_NO_CIPHER) ,"no cipher"}, {ERR_REASON(CMS_R_NO_CONTENT) ,"no content"}, {ERR_REASON(CMS_R_NO_DEFAULT_DIGEST) ,"no default digest"}, {ERR_REASON(CMS_R_NO_DIGEST_SET) ,"no digest set"}, diff --git a/crypto/cms/cms_smime.c b/crypto/cms/cms_smime.c index 458efbece8..da0fac0a24 100644 --- a/crypto/cms/cms_smime.c +++ b/crypto/cms/cms_smime.c @@ -227,6 +227,11 @@ CMS_ContentInfo *CMS_EncryptedData_encrypt(BIO *in, const EVP_CIPHER *cipher, unsigned int flags) { CMS_ContentInfo *cms; + if (!cipher) + { + CMSerr(CMS_F_CMS_ENCRYPTEDDATA_ENCRYPT, CMS_R_NO_CIPHER); + return NULL; + } cms = CMS_ContentInfo_new(); if (!cms) return NULL;