SMIME_read_CMS.pod revision 290135
1208963Srdivacky=pod 2208963Srdivacky 3310618Sdim=head1 NAME 4310618Sdim 5310618Sdim SMIME_read_CMS - parse S/MIME message. 6310618Sdim 7335875Sdim=head1 SYNOPSIS 8276783Sdim 9335875Sdim #include <openssl/cms.h> 10335875Sdim 11218893Sdim CMS_ContentInfo *SMIME_read_CMS(BIO *in, BIO **bcont); 12335875Sdim 13346296Sdim=head1 DESCRIPTION 14346296Sdim 15346296SdimSMIME_read_CMS() parses a message in S/MIME format. 16335875Sdim 17210299SedB<in> is a BIO to read the message from. 18335875Sdim 19335875SdimIf cleartext signing is used then the content is saved in a memory bio which is 20210299Sedwritten to B<*bcont>, otherwise B<*bcont> is set to NULL. 21335875Sdim 22346891SmhorneThe parsed CMS_ContentInfo structure is returned or NULL if an 23346891Smhorneerror occurred. 24346891Smhorne 25335875Sdim=head1 NOTES 26262613Sdim 27335875SdimIf B<*bcont> is not NULL then the message is clear text signed. B<*bcont> can 28335875Sdimthen be passed to CMS_verify() with the B<CMS_DETACHED> flag set. 29210299Sed 30335875SdimOtherwise the type of the returned structure can be determined 31208963Srdivackyusing CMS_get0_type(). 32208963Srdivacky 33To support future functionality if B<bcont> is not NULL B<*bcont> should be 34initialized to NULL. For example: 35 36 BIO *cont = NULL; 37 CMS_ContentInfo *cms; 38 39 cms = SMIME_read_CMS(in, &cont); 40 41=head1 BUGS 42 43The MIME parser used by SMIME_read_CMS() is somewhat primitive. While it will 44handle most S/MIME messages more complex compound formats may not work. 45 46The parser assumes that the CMS_ContentInfo structure is always base64 encoded 47and will not handle the case where it is in binary format or uses quoted 48printable format. 49 50The use of a memory BIO to hold the signed content limits the size of message 51which can be processed due to memory restraints: a streaming single pass option 52should be available. 53 54=head1 RETURN VALUES 55 56SMIME_read_CMS() returns a valid B<CMS_ContentInfo> structure or B<NULL> 57if an error occurred. The error can be obtained from ERR_get_error(3). 58 59=head1 SEE ALSO 60 61L<ERR_get_error(3)|ERR_get_error(3)>, L<CMS_type(3)|CMS_type(3)> 62L<SMIME_read_CMS(3)|SMIME_read_CMS(3)>, L<CMS_sign(3)|CMS_sign(3)>, 63L<CMS_verify(3)|CMS_verify(3)>, L<CMS_encrypt(3)|CMS_encrypt(3)> 64L<CMS_decrypt(3)|CMS_decrypt(3)> 65 66=head1 HISTORY 67 68SMIME_read_CMS() was added to OpenSSL 0.9.8 69 70=cut 71