|  | =pod | 
|  |  | 
|  | =head1 NAME | 
|  |  | 
|  | SMIME_read_PKCS7 - parse S/MIME message. | 
|  |  | 
|  | =head1 SYNOPSIS | 
|  |  | 
|  | PKCS7 *SMIME_read_PKCS7(BIO *in, BIO **bcont); | 
|  |  | 
|  | =head1 DESCRIPTION | 
|  |  | 
|  | SMIME_read_PKCS7() parses a message in S/MIME format. | 
|  |  | 
|  | B<in> is a BIO to read the message from. | 
|  |  | 
|  | If cleartext signing is used then the content is saved in | 
|  | a memory bio which is written to B<*bcont>, otherwise | 
|  | B<*bcont> is set to B<NULL>. | 
|  |  | 
|  | The parsed PKCS#7 structure is returned or B<NULL> if an | 
|  | error occurred. | 
|  |  | 
|  | =head1 NOTES | 
|  |  | 
|  | If B<*bcont> is not B<NULL> then the message is clear text | 
|  | signed. B<*bcont> can then be passed to PKCS7_verify() with | 
|  | the B<PKCS7_DETACHED> flag set. | 
|  |  | 
|  | Otherwise the type of the returned structure can be determined | 
|  | using PKCS7_type(). | 
|  |  | 
|  | To support future functionality if B<bcont> is not B<NULL> | 
|  | B<*bcont> should be initialized to B<NULL>. For example: | 
|  |  | 
|  | BIO *cont = NULL; | 
|  | PKCS7 *p7; | 
|  |  | 
|  | p7 = SMIME_read_PKCS7(in, &cont); | 
|  |  | 
|  | =head1 BUGS | 
|  |  | 
|  | The MIME parser used by SMIME_read_PKCS7() is somewhat primitive. | 
|  | While it will handle most S/MIME messages more complex compound | 
|  | formats may not work. | 
|  |  | 
|  | The parser assumes that the PKCS7 structure is always base64 | 
|  | encoded and will not handle the case where it is in binary format | 
|  | or uses quoted printable format. | 
|  |  | 
|  | The use of a memory BIO to hold the signed content limits the size | 
|  | of message which can be processed due to memory restraints: a | 
|  | streaming single pass option should be available. | 
|  |  | 
|  | =head1 RETURN VALUES | 
|  |  | 
|  | SMIME_read_PKCS7() returns a valid B<PKCS7> structure or B<NULL> | 
|  | is an error occurred. The error can be obtained from ERR_get_error(3). | 
|  |  | 
|  | =head1 SEE ALSO | 
|  |  | 
|  | L<ERR_get_error(3)|ERR_get_error(3)>, L<PKCS7_type(3)|PKCS7_type(3)> | 
|  | L<SMIME_read_PKCS7(3)|SMIME_read_PKCS7(3)>, L<PKCS7_sign(3)|PKCS7_sign(3)>, | 
|  | L<PKCS7_verify(3)|PKCS7_verify(3)>, L<PKCS7_encrypt(3)|PKCS7_encrypt(3)> | 
|  | L<PKCS7_decrypt(3)|PKCS7_decrypt(3)> | 
|  |  | 
|  | =head1 HISTORY | 
|  |  | 
|  | SMIME_read_PKCS7() was added to OpenSSL 0.9.5 | 
|  |  | 
|  | =cut |