BIO_get_cipher_ctx(btmp, &ctx);
keylen=EVP_CIPHER_key_length(evp_cipher);
ivlen=EVP_CIPHER_iv_length(evp_cipher);
- RAND_bytes(key,keylen);
+ if (RAND_bytes(key,keylen) <= 0)
+ goto err;
xalg->algorithm = OBJ_nid2obj(EVP_CIPHER_type(evp_cipher));
- if (ivlen > 0) RAND_bytes(iv,ivlen);
+ if (ivlen > 0) RAND_pseudo_bytes(iv,ivlen);
EVP_CipherInit(ctx, evp_cipher, key, iv, 1);
if (ivlen > 0) {
STACK_OF(PKCS7_RECIP_INFO) *rsk=NULL;
X509_ALGOR *xalg=NULL;
PKCS7_RECIP_INFO *ri=NULL;
+#ifndef NO_RC2
char is_rc2 = 0;
+#endif
/* EVP_PKEY *pkey; */
#if 0
X509_STORE_CTX s_ctx;
goto err;
}
- if(EVP_CIPHER_nid(evp_cipher) == NID_rc2_cbc) is_rc2 = 1;
+ if(EVP_CIPHER_nid(evp_cipher) == NID_rc2_cbc)
+ {
+#ifndef NO_RC2
+ is_rc2 = 1;
+#else
+ PKCS7err(PKCS7_F_PKCS7_DATADECODE,PKCS7_R_UNSUPPORTED_CIPHER_TYPE);
+ goto err;
+#endif
+ }
/* We will be checking the signature */
if (md_sk != NULL)
* because we currently can't do this with the EVP
* interface.
*/
+#ifndef NO_RC2
if(is_rc2) RC2_set_key(&(evp_ctx->c.rc2_ks),jj, tmp,
EVP_CIPHER_CTX_key_length(evp_ctx)*8);
- else {
-
+ else
+#endif
+ {
PKCS7err(PKCS7_F_PKCS7_DATADECODE,
PKCS7_R_DECRYPTED_KEY_IS_WRONG_LENGTH);
goto err;
- }
+ }
} else EVP_CipherInit(evp_ctx,NULL,tmp,NULL,0);
memset(tmp,0,jj);
PKCS7err(PKCS7_F_PKCS7_DATASIGN,PKCS7_R_INTERNAL_ERROR);
goto err;
}
- if (EVP_MD_type(EVP_MD_CTX_type(mdc)) == j)
+ if (EVP_MD_CTX_type(mdc) == j)
break;
else
btmp=btmp->next_bio;
V_ASN1_UTCTIME,sign_time);
/* Add digest */
- md_tmp=EVP_MD_CTX_type(&ctx_tmp);
+ md_tmp=EVP_MD_CTX_md(&ctx_tmp);
EVP_DigestFinal(&ctx_tmp,md_data,&md_len);
digest=M_ASN1_OCTET_STRING_new();
M_ASN1_OCTET_STRING_set(digest,md_data,md_len);
PKCS7_R_INTERNAL_ERROR);
goto err;
}
- if (EVP_MD_type(EVP_MD_CTX_type(mdc)) == md_type)
+ if (EVP_MD_CTX_type(mdc) == md_type)
break;
btmp=btmp->next_bio;
}