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