]>
Commit | Line | Data |
---|---|---|
e33ffaca DSH |
1 | =pod |
2 | ||
3 | =head1 NAME | |
4 | ||
bb9ad09e | 5 | SMIME_read_CMS - parse S/MIME message |
e33ffaca DSH |
6 | |
7 | =head1 SYNOPSIS | |
8 | ||
9 | #include <openssl/cms.h> | |
10 | ||
11 | CMS_ContentInfo *SMIME_read_CMS(BIO *in, BIO **bcont); | |
12 | ||
13 | =head1 DESCRIPTION | |
14 | ||
15 | SMIME_read_CMS() parses a message in S/MIME format. | |
16 | ||
17 | B<in> is a BIO to read the message from. | |
18 | ||
38d3a738 DSH |
19 | If cleartext signing is used then the content is saved in a memory bio which is |
20 | written to B<*bcont>, otherwise B<*bcont> is set to NULL. | |
e33ffaca | 21 | |
38d3a738 | 22 | The parsed CMS_ContentInfo structure is returned or NULL if an |
e33ffaca DSH |
23 | error occurred. |
24 | ||
25 | =head1 NOTES | |
26 | ||
38d3a738 DSH |
27 | If B<*bcont> is not NULL then the message is clear text signed. B<*bcont> can |
28 | then be passed to CMS_verify() with the B<CMS_DETACHED> flag set. | |
e33ffaca DSH |
29 | |
30 | Otherwise the type of the returned structure can be determined | |
31 | using CMS_get0_type(). | |
32 | ||
38d3a738 DSH |
33 | To support future functionality if B<bcont> is not NULL B<*bcont> should be |
34 | initialized to NULL. For example: | |
e33ffaca DSH |
35 | |
36 | BIO *cont = NULL; | |
37 | CMS_ContentInfo *cms; | |
38 | ||
39 | cms = SMIME_read_CMS(in, &cont); | |
40 | ||
41 | =head1 BUGS | |
42 | ||
38d3a738 DSH |
43 | The MIME parser used by SMIME_read_CMS() is somewhat primitive. While it will |
44 | handle most S/MIME messages more complex compound formats may not work. | |
e33ffaca | 45 | |
38d3a738 DSH |
46 | The parser assumes that the CMS_ContentInfo structure is always base64 encoded |
47 | and will not handle the case where it is in binary format or uses quoted | |
48 | printable format. | |
e33ffaca | 49 | |
38d3a738 DSH |
50 | The use of a memory BIO to hold the signed content limits the size of message |
51 | which can be processed due to memory restraints: a streaming single pass option | |
52 | should be available. | |
e33ffaca DSH |
53 | |
54 | =head1 RETURN VALUES | |
55 | ||
56 | SMIME_read_CMS() returns a valid B<CMS_ContentInfo> structure or B<NULL> | |
57 | if an error occurred. The error can be obtained from ERR_get_error(3). | |
58 | ||
59 | =head1 SEE ALSO | |
60 | ||
b97fdb57 | 61 | L<ERR_get_error(3)>, L<CMS_type(3)>, |
9b86974e | 62 | L<SMIME_read_CMS(3)>, L<CMS_sign(3)>, |
b97fdb57 | 63 | L<CMS_verify(3)>, L<CMS_encrypt(3)>, |
9b86974e | 64 | L<CMS_decrypt(3)> |
e33ffaca | 65 | |
e2f92610 RS |
66 | =head1 COPYRIGHT |
67 | ||
68 | Copyright 2008-2016 The OpenSSL Project Authors. All Rights Reserved. | |
69 | ||
70 | Licensed under the OpenSSL license (the "License"). You may not use | |
71 | this file except in compliance with the License. You can obtain a copy | |
72 | in the file LICENSE in the source distribution or at | |
73 | L<https://www.openssl.org/source/license.html>. | |
74 | ||
75 | =cut |