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