Custom key wrap option for cms utility.
(cherry picked from commit 5711885a2b
)
This commit is contained in:
parent
3e792793f6
commit
9d1e475db6
18
apps/cms.c
18
apps/cms.c
@ -122,7 +122,7 @@ int MAIN(int argc, char **argv)
|
|||||||
STACK_OF(OPENSSL_STRING) *sksigners = NULL, *skkeys = NULL;
|
STACK_OF(OPENSSL_STRING) *sksigners = NULL, *skkeys = NULL;
|
||||||
char *certfile = NULL, *keyfile = NULL, *contfile=NULL;
|
char *certfile = NULL, *keyfile = NULL, *contfile=NULL;
|
||||||
char *certsoutfile = NULL;
|
char *certsoutfile = NULL;
|
||||||
const EVP_CIPHER *cipher = NULL;
|
const EVP_CIPHER *cipher = NULL, *wrap_cipher = NULL;
|
||||||
CMS_ContentInfo *cms = NULL, *rcms = NULL;
|
CMS_ContentInfo *cms = NULL, *rcms = NULL;
|
||||||
X509_STORE *store = NULL;
|
X509_STORE *store = NULL;
|
||||||
X509 *cert = NULL, *recip = NULL, *signer = NULL;
|
X509 *cert = NULL, *recip = NULL, *signer = NULL;
|
||||||
@ -217,6 +217,8 @@ int MAIN(int argc, char **argv)
|
|||||||
cipher = EVP_des_ede3_cbc();
|
cipher = EVP_des_ede3_cbc();
|
||||||
else if (!strcmp (*args, "-des"))
|
else if (!strcmp (*args, "-des"))
|
||||||
cipher = EVP_des_cbc();
|
cipher = EVP_des_cbc();
|
||||||
|
else if (!strcmp (*args, "-des3-wrap"))
|
||||||
|
wrap_cipher = EVP_des_ede3_wrap();
|
||||||
#endif
|
#endif
|
||||||
#ifndef OPENSSL_NO_SEED
|
#ifndef OPENSSL_NO_SEED
|
||||||
else if (!strcmp (*args, "-seed"))
|
else if (!strcmp (*args, "-seed"))
|
||||||
@ -237,6 +239,12 @@ int MAIN(int argc, char **argv)
|
|||||||
cipher = EVP_aes_192_cbc();
|
cipher = EVP_aes_192_cbc();
|
||||||
else if (!strcmp(*args,"-aes256"))
|
else if (!strcmp(*args,"-aes256"))
|
||||||
cipher = EVP_aes_256_cbc();
|
cipher = EVP_aes_256_cbc();
|
||||||
|
else if (!strcmp(*args,"-aes128-wrap"))
|
||||||
|
wrap_cipher = EVP_aes_128_wrap();
|
||||||
|
else if (!strcmp(*args,"-aes192-wrap"))
|
||||||
|
wrap_cipher = EVP_aes_192_wrap();
|
||||||
|
else if (!strcmp(*args,"-aes256-wrap"))
|
||||||
|
wrap_cipher = EVP_aes_256_wrap();
|
||||||
#endif
|
#endif
|
||||||
#ifndef OPENSSL_NO_CAMELLIA
|
#ifndef OPENSSL_NO_CAMELLIA
|
||||||
else if (!strcmp(*args,"-camellia128"))
|
else if (!strcmp(*args,"-camellia128"))
|
||||||
@ -1005,6 +1013,14 @@ int MAIN(int argc, char **argv)
|
|||||||
if (!cms_set_pkey_param(pctx, kparam->param))
|
if (!cms_set_pkey_param(pctx, kparam->param))
|
||||||
goto end;
|
goto end;
|
||||||
}
|
}
|
||||||
|
if (CMS_RecipientInfo_type(ri) == CMS_RECIPINFO_AGREE
|
||||||
|
&& wrap_cipher)
|
||||||
|
{
|
||||||
|
EVP_CIPHER_CTX *wctx;
|
||||||
|
wctx = CMS_RecipientInfo_kari_get0_ctx(ri);
|
||||||
|
EVP_EncryptInit_ex(wctx, wrap_cipher,
|
||||||
|
NULL, NULL, NULL);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (secret_key)
|
if (secret_key)
|
||||||
|
Loading…
Reference in New Issue
Block a user