Support for smime-type MIME parameter.
This commit is contained in:
parent
081057c3ff
commit
05338b58ce
4
CHANGES
4
CHANGES
@ -794,6 +794,10 @@
|
|||||||
|
|
||||||
Changes between 0.9.7g and 0.9.7h [XX xxx XXXX]
|
Changes between 0.9.7g and 0.9.7h [XX xxx XXXX]
|
||||||
|
|
||||||
|
*) Add support for smime-type MIME parameter in S/MIME messages which some
|
||||||
|
clients need.
|
||||||
|
[Steve Henson]
|
||||||
|
|
||||||
*) New function BN_MONT_CTX_set_locked() to set montgomery parameters in
|
*) New function BN_MONT_CTX_set_locked() to set montgomery parameters in
|
||||||
a threadsafe manner. Modify rsa code to use new function and add calls
|
a threadsafe manner. Modify rsa code to use new function and add calls
|
||||||
to dsa and dh code (which had race conditions before).
|
to dsa and dh code (which had race conditions before).
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
* project.
|
* project.
|
||||||
*/
|
*/
|
||||||
/* ====================================================================
|
/* ====================================================================
|
||||||
* Copyright (c) 1999-2003 The OpenSSL Project. All rights reserved.
|
* Copyright (c) 1999-2005 The OpenSSL Project. All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions
|
* modification, are permitted provided that the following conditions
|
||||||
@ -150,11 +150,12 @@ int SMIME_write_PKCS7(BIO *bio, PKCS7 *p7, BIO *data, int flags)
|
|||||||
{
|
{
|
||||||
char bound[33], c;
|
char bound[33], c;
|
||||||
int i;
|
int i;
|
||||||
char *mime_prefix, *mime_eol;
|
char *mime_prefix, *mime_eol, *msg_type=NULL;
|
||||||
if (flags & PKCS7_NOOLDMIMETYPE)
|
if (flags & PKCS7_NOOLDMIMETYPE)
|
||||||
mime_prefix = "application/pkcs7-";
|
mime_prefix = "application/pkcs7-";
|
||||||
else
|
else
|
||||||
mime_prefix = "application/x-pkcs7-";
|
mime_prefix = "application/x-pkcs7-";
|
||||||
|
|
||||||
if (flags & PKCS7_CRLFEOL)
|
if (flags & PKCS7_CRLFEOL)
|
||||||
mime_eol = "\r\n";
|
mime_eol = "\r\n";
|
||||||
else
|
else
|
||||||
@ -196,11 +197,30 @@ int SMIME_write_PKCS7(BIO *bio, PKCS7 *p7, BIO *data, int flags)
|
|||||||
mime_eol, mime_eol);
|
mime_eol, mime_eol);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Determine smime-type header */
|
||||||
|
|
||||||
|
if (PKCS7_type_is_enveloped(p7))
|
||||||
|
msg_type = "enveloped-data";
|
||||||
|
else if (PKCS7_type_is_signed(p7))
|
||||||
|
{
|
||||||
|
/* If we have any signers it is signed-data othewise
|
||||||
|
* certs-only.
|
||||||
|
*/
|
||||||
|
STACK_OF(PKCS7_SIGNER_INFO) *sinfos;
|
||||||
|
sinfos = PKCS7_get_signer_info(p7);
|
||||||
|
if (sk_PKCS7_SIGNER_INFO_num(sinfos) > 0)
|
||||||
|
msg_type = "signed-data";
|
||||||
|
else
|
||||||
|
msg_type = "certs-only";
|
||||||
|
}
|
||||||
/* MIME headers */
|
/* MIME headers */
|
||||||
BIO_printf(bio, "MIME-Version: 1.0%s", mime_eol);
|
BIO_printf(bio, "MIME-Version: 1.0%s", mime_eol);
|
||||||
BIO_printf(bio, "Content-Disposition: attachment;");
|
BIO_printf(bio, "Content-Disposition: attachment;");
|
||||||
BIO_printf(bio, " filename=\"smime.p7m\"%s", mime_eol);
|
BIO_printf(bio, " filename=\"smime.p7m\"%s", mime_eol);
|
||||||
BIO_printf(bio, "Content-Type: %smime;", mime_prefix);
|
BIO_printf(bio, "Content-Type: %smime;", mime_prefix);
|
||||||
|
if (msg_type)
|
||||||
|
BIO_printf(bio, " smime-type=%s;", msg_type);
|
||||||
BIO_printf(bio, " name=\"smime.p7m\"%s", mime_eol);
|
BIO_printf(bio, " name=\"smime.p7m\"%s", mime_eol);
|
||||||
BIO_printf(bio, "Content-Transfer-Encoding: base64%s%s",
|
BIO_printf(bio, "Content-Transfer-Encoding: base64%s%s",
|
||||||
mime_eol, mime_eol);
|
mime_eol, mime_eol);
|
||||||
|
Loading…
Reference in New Issue
Block a user