| 
									
										
										
										
											2020-08-06 11:56:57 +08:00
										 |  |  | =pod | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =head1 NAME | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-09-24 17:42:23 +08:00
										 |  |  | SMIME_write_ASN1_ex, SMIME_write_ASN1 | 
					
						
							| 
									
										
										
										
											2020-08-06 11:56:57 +08:00
										 |  |  | - convert structure to S/MIME format | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =head1 SYNOPSIS | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |  #include <openssl/asn1.h> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-09-24 17:42:23 +08:00
										 |  |  |  int SMIME_write_ASN1_ex(BIO *out, ASN1_VALUE *val, BIO *data, int flags, | 
					
						
							|  |  |  |                          int ctype_nid, int econt_nid, | 
					
						
							|  |  |  |                          STACK_OF(X509_ALGOR) *mdalgs, const ASN1_ITEM *it, | 
					
						
							| 
									
										
										
										
											2020-10-15 17:55:50 +08:00
										 |  |  |                          OSSL_LIB_CTX *libctx, const char *propq); | 
					
						
							| 
									
										
										
										
											2020-08-06 11:56:57 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |  int SMIME_write_ASN1(BIO *out, | 
					
						
							|  |  |  |      ASN1_VALUE *val, BIO *data, int flags, int ctype_nid, int econt_nid, | 
					
						
							|  |  |  |      STACK_OF(X509_ALGOR) *mdalgs, const ASN1_ITEM *it); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =head1 DESCRIPTION | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-09-24 17:42:23 +08:00
										 |  |  | SMIME_write_ASN1_ex() adds the appropriate MIME headers to an object | 
					
						
							| 
									
										
										
										
											2020-08-06 11:56:57 +08:00
										 |  |  | structure to produce an S/MIME message. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | I<out> is the BIO to write the data to. I<value> is the appropriate ASN1_VALUE | 
					
						
							|  |  |  | structure (either CMS_ContentInfo or PKCS7). If streaming is enabled then the | 
					
						
							|  |  |  | content must be supplied via I<data>. | 
					
						
							|  |  |  | I<flags> is an optional set of flags. I<ctype_nid> is the NID of the content | 
					
						
							|  |  |  | type, I<econt_nid> is the NID of the embedded content type and I<mdalgs> is a | 
					
						
							|  |  |  | list of signed data digestAlgorithms. Valid values that can be used by the | 
					
						
							|  |  |  | ASN.1 structure I<it> are ASN1_ITEM_rptr(PKCS7) or ASN1_ITEM_rptr(CMS_ContentInfo). | 
					
						
							|  |  |  | The library context I<libctx> and the property query I<propq> are used when | 
					
						
							|  |  |  | retrieving algorithms from providers. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =head1 NOTES | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The higher level functions L<SMIME_write_CMS(3)> and | 
					
						
							|  |  |  | L<SMIME_write_PKCS7(3)> should be used instead of SMIME_write_ASN1(). | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The following flags can be passed in the B<flags> parameter. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | If B<CMS_DETACHED> is set then cleartext signing will be used, this option only | 
					
						
							|  |  |  | makes sense for SignedData where B<CMS_DETACHED> is also set when the sign() | 
					
						
							|  |  |  | method is called. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | If the B<CMS_TEXT> flag is set MIME headers for type B<text/plain> are added to | 
					
						
							|  |  |  | the content, this only makes sense if B<CMS_DETACHED> is also set. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | If the B<CMS_STREAM> flag is set streaming is performed. This flag should only | 
					
						
							|  |  |  | be set if B<CMS_STREAM> was also set in the previous call to a CMS_ContentInfo | 
					
						
							|  |  |  | or PKCS7 creation function. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | If cleartext signing is being used and B<CMS_STREAM> not set then the data must | 
					
						
							|  |  |  | be read twice: once to compute the signature in sign method and once to output | 
					
						
							|  |  |  | the S/MIME message. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | If streaming is performed the content is output in BER format using indefinite | 
					
						
							|  |  |  | length constructed encoding except in the case of signed data with detached | 
					
						
							|  |  |  | content where the content is absent and DER format is used. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =head1 RETURN VALUES | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-09-24 17:42:23 +08:00
										 |  |  | SMIME_write_ASN1_ex() and SMIME_write_ASN1() return 1 for success or | 
					
						
							| 
									
										
										
										
											2020-08-06 11:56:57 +08:00
										 |  |  | 0 for failure. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =head1 SEE ALSO | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | L<ERR_get_error(3)>, | 
					
						
							|  |  |  | L<SMIME_write_CMS(3)>, | 
					
						
							|  |  |  | L<SMIME_write_PKCS7(3)> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =head1 COPYRIGHT | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Copyright 2020 The OpenSSL Project Authors. All Rights Reserved. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Licensed under the Apache License 2.0 (the "License").  You may not use | 
					
						
							|  |  |  | this file except in compliance with the License.  You can obtain a copy | 
					
						
							|  |  |  | in the file LICENSE in the source distribution or at | 
					
						
							|  |  |  | L<https://www.openssl.org/source/license.html>. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =cut |