| Index: openssl/crypto/cms/cms_asn1.c | 
| =================================================================== | 
| --- openssl/crypto/cms/cms_asn1.c	(revision 105093) | 
| +++ openssl/crypto/cms/cms_asn1.c	(working copy) | 
| @@ -87,7 +87,8 @@ | 
| } ASN1_NDEF_SEQUENCE_END(CMS_EncapsulatedContentInfo) | 
|  | 
| /* Minor tweak to operation: free up signer key, cert */ | 
| -static int cms_si_cb(int operation, ASN1_VALUE **pval, const ASN1_ITEM *it) | 
| +static int cms_si_cb(int operation, ASN1_VALUE **pval, const ASN1_ITEM *it, | 
| +							void *exarg) | 
| { | 
| if(operation == ASN1_OP_FREE_POST) | 
| { | 
| @@ -213,7 +214,8 @@ | 
| } ASN1_SEQUENCE_END(CMS_OtherRecipientInfo) | 
|  | 
| /* Free up RecipientInfo additional data */ | 
| -static int cms_ri_cb(int operation, ASN1_VALUE **pval, const ASN1_ITEM *it) | 
| +static int cms_ri_cb(int operation, ASN1_VALUE **pval, const ASN1_ITEM *it, | 
| +							void *exarg) | 
| { | 
| if(operation == ASN1_OP_FREE_PRE) | 
| { | 
| @@ -300,10 +302,42 @@ | 
| ADB_ENTRY(NID_id_smime_ct_compressedData, ASN1_NDEF_EXP(CMS_ContentInfo, d.compressedData, CMS_CompressedData, 0)), | 
| } ASN1_ADB_END(CMS_ContentInfo, 0, contentType, 0, &cms_default_tt, NULL); | 
|  | 
| -ASN1_NDEF_SEQUENCE(CMS_ContentInfo) = { | 
| +/* CMS streaming support */ | 
| +static int cms_cb(int operation, ASN1_VALUE **pval, const ASN1_ITEM *it, | 
| +							void *exarg) | 
| +	{ | 
| +	ASN1_STREAM_ARG *sarg = exarg; | 
| +	CMS_ContentInfo *cms = NULL; | 
| +	if (pval) | 
| +		cms = (CMS_ContentInfo *)*pval; | 
| +	else | 
| +		return 1; | 
| +	switch(operation) | 
| +		{ | 
| + | 
| +		case ASN1_OP_STREAM_PRE: | 
| +		if (CMS_stream(&sarg->boundary, cms) <= 0) | 
| +			return 0; | 
| +		case ASN1_OP_DETACHED_PRE: | 
| +		sarg->ndef_bio = CMS_dataInit(cms, sarg->out); | 
| +		if (!sarg->ndef_bio) | 
| +			return 0; | 
| +		break; | 
| + | 
| +		case ASN1_OP_STREAM_POST: | 
| +		case ASN1_OP_DETACHED_POST: | 
| +		if (CMS_dataFinal(cms, sarg->ndef_bio) <= 0) | 
| +			return 0; | 
| +		break; | 
| + | 
| +		} | 
| +	return 1; | 
| +	} | 
| + | 
| +ASN1_NDEF_SEQUENCE_cb(CMS_ContentInfo, cms_cb) = { | 
| ASN1_SIMPLE(CMS_ContentInfo, contentType, ASN1_OBJECT), | 
| ASN1_ADB_OBJECT(CMS_ContentInfo) | 
| -} ASN1_NDEF_SEQUENCE_END(CMS_ContentInfo) | 
| +} ASN1_NDEF_SEQUENCE_END_cb(CMS_ContentInfo, CMS_ContentInfo) | 
|  | 
| /* Specials for signed attributes */ | 
|  | 
|  |