Reported by: Dmitry Belyavsky <beldmit@gmail.com>

If resigning with detached content in CMS just copy data across.
This commit is contained in:
Dr. Stephen Henson 2012-02-29 14:01:53 +00:00
parent 33a688e806
commit a8595879ec

View File

@ -377,8 +377,12 @@ static int asn1_output_data(BIO *out, BIO *data, ASN1_VALUE *val, int flags,
BIO *tmpbio; BIO *tmpbio;
const ASN1_AUX *aux = it->funcs; const ASN1_AUX *aux = it->funcs;
ASN1_STREAM_ARG sarg; ASN1_STREAM_ARG sarg;
int rv = 1;
if (!(flags & SMIME_DETACHED)) /* If data is not deteched or resigning then the output BIO is
* already set up to finalise when it is written through.
*/
if (!(flags & SMIME_DETACHED) || (flags & PKCS7_REUSE_DIGEST))
{ {
SMIME_crlf_copy(data, out, flags); SMIME_crlf_copy(data, out, flags);
return 1; return 1;
@ -405,7 +409,7 @@ static int asn1_output_data(BIO *out, BIO *data, ASN1_VALUE *val, int flags,
/* Finalize structure */ /* Finalize structure */
if (aux->asn1_cb(ASN1_OP_DETACHED_POST, &val, it, &sarg) <= 0) if (aux->asn1_cb(ASN1_OP_DETACHED_POST, &val, it, &sarg) <= 0)
return 0; rv = 0;
/* Now remove any digests prepended to the BIO */ /* Now remove any digests prepended to the BIO */
@ -416,7 +420,7 @@ static int asn1_output_data(BIO *out, BIO *data, ASN1_VALUE *val, int flags,
sarg.ndef_bio = tmpbio; sarg.ndef_bio = tmpbio;
} }
return 1; return rv;
} }