}
}
+ if(flags & PKCS7_DETACHED)
+ PKCS7_set_detached(p7, 1);
+
if (flags & (PKCS7_STREAM|PKCS7_PARTIAL))
return p7;
BIO_flush(p7bio);
- if(PKCS7_type_is_signed(p7) && (flags & PKCS7_DETACHED))
- PKCS7_set_detached(p7, 1);
if (!PKCS7_dataFinal(p7,p7bio))
{
return 1;
}
+static int add_digest_smcap(STACK_OF(X509_ALGOR) *sk, int nid, int arg)
+ {
+ if (EVP_get_digestbynid(nid))
+ return PKCS7_simple_smimecap(sk, nid, arg);
+ return 1;
+ }
+
PKCS7_SIGNER_INFO *PKCS7_sign_add_signer(PKCS7 *p7, X509 *signcert,
EVP_PKEY *pkey, const EVP_MD *md,
int flags)
ERR_R_MALLOC_FAILURE);
goto err;
}
- if (!add_cipher_smcap(smcap, NID_des_ede3_cbc, -1)
+ if (!add_cipher_smcap(smcap, NID_aes_256_cbc, -1)
+ || !add_digest_smcap(smcap, NID_id_GostR3411_94, -1)
+ || !add_cipher_smcap(smcap, NID_id_Gost28147_89, -1)
+ || !add_cipher_smcap(smcap, NID_aes_192_cbc, -1)
+ || !add_cipher_smcap(smcap, NID_aes_128_cbc, -1)
+ || !add_cipher_smcap(smcap, NID_des_ede3_cbc, -1)
|| !add_cipher_smcap(smcap, NID_rc2_cbc, 128)
|| !add_cipher_smcap(smcap, NID_rc2_cbc, 64)
|| !add_cipher_smcap(smcap, NID_des_cbc, -1)