Use correct pointer types for various functions.
[openssl.git] / crypto / pkcs7 / pk7_smime.c
index 4312d8d4bf73fd0bae797f32c1a836946c934bf4..718f0db0ef634512d0051bc4cda7e8e32a83afe7 100644 (file)
@@ -98,6 +98,9 @@ PKCS7 *PKCS7_sign(X509 *signcert, EVP_PKEY *pkey, STACK_OF(X509) *certs,
                        }
                }
 
+       if(flags & PKCS7_DETACHED)
+               PKCS7_set_detached(p7, 1);
+
        if (flags & (PKCS7_STREAM|PKCS7_PARTIAL))
                return p7;
 
@@ -123,8 +126,6 @@ int PKCS7_final(PKCS7 *p7, BIO *data, int flags)
 
        BIO_flush(p7bio);
 
-       if(PKCS7_type_is_signed(p7) && (flags & PKCS7_DETACHED))
-               PKCS7_set_detached(p7, 1);
 
         if (!PKCS7_dataFinal(p7,p7bio))
                {
@@ -150,6 +151,13 @@ static int add_cipher_smcap(STACK_OF(X509_ALGOR) *sk, int nid, int arg)
        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)
@@ -194,7 +202,12 @@ PKCS7_SIGNER_INFO *PKCS7_sign_add_signer(PKCS7 *p7, X509 *signcert,
                                        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)