1*1dcdf01fSchristos=pod
2*1dcdf01fSchristos
3*1dcdf01fSchristos=head1 NAME
4*1dcdf01fSchristos
5*1dcdf01fSchristosPEM_read_bio_ex, PEM_FLAG_SECURE, PEM_FLAG_EAY_COMPATIBLE,
6*1dcdf01fSchristosPEM_FLAG_ONLY_B64 - read PEM format files with custom processing
7*1dcdf01fSchristos
8*1dcdf01fSchristos=head1 SYNOPSIS
9*1dcdf01fSchristos
10*1dcdf01fSchristos #include <openssl/pem.h>
11*1dcdf01fSchristos
12*1dcdf01fSchristos #define PEM_FLAG_SECURE             0x1
13*1dcdf01fSchristos #define PEM_FLAG_EAY_COMPATIBLE     0x2
14*1dcdf01fSchristos #define PEM_FLAG_ONLY_B64           0x4
15*1dcdf01fSchristos int PEM_read_bio_ex(BIO *in, char **name, char **header,
16*1dcdf01fSchristos                     unsigned char **data, long *len, unsigned int flags);
17*1dcdf01fSchristos
18*1dcdf01fSchristos=head1 DESCRIPTION
19*1dcdf01fSchristos
20*1dcdf01fSchristosPEM_read_bio_ex() reads in PEM formatted data from an input BIO, outputting
21*1dcdf01fSchristosthe name of the type of contained data, the header information regarding
22*1dcdf01fSchristosthe possibly encrypted data, and the binary data payload (after base64 decoding).
23*1dcdf01fSchristosIt should generally only be used to implement PEM_read_bio_-family functions
24*1dcdf01fSchristosfor specific data types or other usage, but is exposed to allow greater flexibility
25*1dcdf01fSchristosover how processing is performed, if needed.
26*1dcdf01fSchristos
27*1dcdf01fSchristosIf PEM_FLAG_SECURE is set, the intermediate buffers used to read in lines of
28*1dcdf01fSchristosinput are allocated from the secure heap.
29*1dcdf01fSchristos
30*1dcdf01fSchristosIf PEM_FLAG_EAY_COMPATIBLE is set, a simple algorithm is used to remove whitespace
31*1dcdf01fSchristosand control characters from the end of each line, so as to be compatible with
32*1dcdf01fSchristosthe historical behavior of PEM_read_bio().
33*1dcdf01fSchristos
34*1dcdf01fSchristosIf PEM_FLAG_ONLY_B64 is set, all characters are required to be valid base64
35*1dcdf01fSchristoscharacters (or newlines); non-base64 characters are treated as end of input.
36*1dcdf01fSchristos
37*1dcdf01fSchristosIf neither PEM_FLAG_EAY_COMPATIBLE or PEM_FLAG_ONLY_B64 is set, control characters
38*1dcdf01fSchristosare ignored.
39*1dcdf01fSchristos
40*1dcdf01fSchristosIf both PEM_FLAG_EAY_COMPATIBLE and PEM_FLAG_ONLY_B64 are set, an error is returned;
41*1dcdf01fSchristosthese options are not compatible with each other.
42*1dcdf01fSchristos
43*1dcdf01fSchristos=head1 NOTES
44*1dcdf01fSchristos
45*1dcdf01fSchristosThe caller must release the storage allocated for *name, *header, and *data.
46*1dcdf01fSchristosIf PEM_FLAG_SECURE was set, use OPENSSL_secure_free(); otherwise,
47*1dcdf01fSchristosOPENSSL_free() is used.
48*1dcdf01fSchristos
49*1dcdf01fSchristos=head1 RETURN VALUES
50*1dcdf01fSchristos
51*1dcdf01fSchristosPEM_read_bio_ex() returns 1 for success or 0 for failure.
52*1dcdf01fSchristos
53*1dcdf01fSchristos=head1 SEE ALSO
54*1dcdf01fSchristos
55*1dcdf01fSchristosL<PEM_bytes_read_bio(3)>
56*1dcdf01fSchristos
57*1dcdf01fSchristos=head1 HISTORY
58*1dcdf01fSchristos
59*1dcdf01fSchristosThe PEM_read_bio_ex() function was added in OpenSSL 1.1.1.
60*1dcdf01fSchristos
61*1dcdf01fSchristos=head1 COPYRIGHT
62*1dcdf01fSchristos
63*1dcdf01fSchristosCopyright 2017 The OpenSSL Project Authors. All Rights Reserved.
64*1dcdf01fSchristos
65*1dcdf01fSchristosLicensed under the OpenSSL license (the "License").  You may not use
66*1dcdf01fSchristosthis file except in compliance with the License.  You can obtain a copy
67*1dcdf01fSchristosin the file LICENSE in the source distribution or at
68*1dcdf01fSchristosL<https://www.openssl.org/source/license.html>.
69*1dcdf01fSchristos
70*1dcdf01fSchristos=cut
71