17453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org/* crypto/pem/pem.h */
27453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org/* Copyright (C) 1995-1997 Eric Young (eay@cryptsoft.com)
37453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org * All rights reserved.
47453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org *
57453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org * This package is an SSL implementation written
67453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org * by Eric Young (eay@cryptsoft.com).
77453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org * The implementation was written so as to conform with Netscapes SSL.
87453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org *
97453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org * This library is free for commercial and non-commercial use as long as
107453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org * the following conditions are aheared to.  The following conditions
117453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org * apply to all code found in this distribution, be it the RC4, RSA,
127453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
137453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org * included with this distribution is covered by the same copyright terms
147453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org * except that the holder is Tim Hudson (tjh@cryptsoft.com).
157453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org *
167453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org * Copyright remains Eric Young's, and as such any Copyright notices in
177453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org * the code are not to be removed.
187453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org * If this package is used in a product, Eric Young should be given attribution
197453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org * as the author of the parts of the library used.
207453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org * This can be in the form of a textual message at program startup or
217453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org * in documentation (online or textual) provided with the package.
227453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org *
237453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org * Redistribution and use in source and binary forms, with or without
247453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org * modification, are permitted provided that the following conditions
257453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org * are met:
267453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org * 1. Redistributions of source code must retain the copyright
277453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org *    notice, this list of conditions and the following disclaimer.
287453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org * 2. Redistributions in binary form must reproduce the above copyright
297453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org *    notice, this list of conditions and the following disclaimer in the
307453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org *    documentation and/or other materials provided with the distribution.
317453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org * 3. All advertising materials mentioning features or use of this software
327453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org *    must display the following acknowledgement:
337453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org *    "This product includes cryptographic software written by
347453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org *     Eric Young (eay@cryptsoft.com)"
357453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org *    The word 'cryptographic' can be left out if the rouines from the library
367453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org *    being used are not cryptographic related :-).
377453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org * 4. If you include any Windows specific code (or a derivative thereof) from
387453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org *    the apps directory (application code) you must include an acknowledgement:
397453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
407453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org *
417453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
427453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
437453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
447453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
457453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
467453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
477453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
487453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
497453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
507453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
517453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org * SUCH DAMAGE.
527453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org *
537453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org * The licence and distribution terms for any publically available version or
547453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org * derivative of this code cannot be changed.  i.e. this code cannot simply be
557453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org * copied and put under another distribution licence
567453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org * [including the GNU Public Licence.]
577453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org */
587453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
597453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#ifndef HEADER_PEM_H
607453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define HEADER_PEM_H
617453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
627453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#include <openssl/e_os2.h>
637453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#ifndef OPENSSL_NO_BIO
647453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#include <openssl/bio.h>
657453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#endif
667453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#ifndef OPENSSL_NO_STACK
677453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#include <openssl/stack.h>
687453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#endif
697453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#include <openssl/evp.h>
707453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#include <openssl/x509.h>
717453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#include <openssl/pem2.h>
727453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
737453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#ifdef  __cplusplus
747453c6c0666947e06d87565404f4397a4b387f91digit@chromium.orgextern "C" {
757453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#endif
767453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
777453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_BUFSIZE		1024
787453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
797453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_OBJ_UNDEF		0
807453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_OBJ_X509		1
817453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_OBJ_X509_REQ	2
827453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_OBJ_CRL		3
837453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_OBJ_SSL_SESSION	4
847453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_OBJ_PRIV_KEY	10
857453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_OBJ_PRIV_RSA	11
867453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_OBJ_PRIV_DSA	12
877453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_OBJ_PRIV_DH		13
887453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_OBJ_PUB_RSA		14
897453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_OBJ_PUB_DSA		15
907453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_OBJ_PUB_DH		16
917453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_OBJ_DHPARAMS	17
927453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_OBJ_DSAPARAMS	18
937453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_OBJ_PRIV_RSA_PUBLIC	19
947453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_OBJ_PRIV_ECDSA	20
957453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_OBJ_PUB_ECDSA	21
967453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_OBJ_ECPARAMETERS	22
977453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
987453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_ERROR		30
997453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_DEK_DES_CBC         40
1007453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_DEK_IDEA_CBC        45
1017453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_DEK_DES_EDE         50
1027453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_DEK_DES_ECB         60
1037453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_DEK_RSA             70
1047453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_DEK_RSA_MD2         80
1057453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_DEK_RSA_MD5         90
1067453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
1077453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_MD_MD2		NID_md2
1087453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_MD_MD5		NID_md5
1097453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_MD_SHA		NID_sha
1107453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_MD_MD2_RSA		NID_md2WithRSAEncryption
1117453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_MD_MD5_RSA		NID_md5WithRSAEncryption
1127453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_MD_SHA_RSA		NID_sha1WithRSAEncryption
1137453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
1147453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_STRING_X509_OLD	"X509 CERTIFICATE"
1157453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_STRING_X509		"CERTIFICATE"
1167453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_STRING_X509_PAIR	"CERTIFICATE PAIR"
1177453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_STRING_X509_TRUSTED	"TRUSTED CERTIFICATE"
1187453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_STRING_X509_REQ_OLD	"NEW CERTIFICATE REQUEST"
1197453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_STRING_X509_REQ	"CERTIFICATE REQUEST"
1207453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_STRING_X509_CRL	"X509 CRL"
1217453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_STRING_EVP_PKEY	"ANY PRIVATE KEY"
1227453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_STRING_PUBLIC	"PUBLIC KEY"
1237453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_STRING_RSA		"RSA PRIVATE KEY"
1247453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_STRING_RSA_PUBLIC	"RSA PUBLIC KEY"
1257453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_STRING_DSA		"DSA PRIVATE KEY"
1267453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_STRING_DSA_PUBLIC	"DSA PUBLIC KEY"
1277453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_STRING_PKCS7	"PKCS7"
1287453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_STRING_PKCS7_SIGNED	"PKCS #7 SIGNED DATA"
1297453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_STRING_PKCS8	"ENCRYPTED PRIVATE KEY"
1307453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_STRING_PKCS8INF	"PRIVATE KEY"
1317453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_STRING_DHPARAMS	"DH PARAMETERS"
1327453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_STRING_SSL_SESSION	"SSL SESSION PARAMETERS"
1337453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_STRING_DSAPARAMS	"DSA PARAMETERS"
1347453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_STRING_ECDSA_PUBLIC "ECDSA PUBLIC KEY"
1357453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_STRING_ECPARAMETERS "EC PARAMETERS"
1367453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_STRING_ECPRIVATEKEY	"EC PRIVATE KEY"
1377453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_STRING_PARAMETERS	"PARAMETERS"
1387453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_STRING_CMS		"CMS"
1397453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
1407453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org  /* Note that this structure is initialised by PEM_SealInit and cleaned up
1417453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org     by PEM_SealFinal (at least for now) */
1427453c6c0666947e06d87565404f4397a4b387f91digit@chromium.orgtypedef struct PEM_Encode_Seal_st
1437453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org	{
1447453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org	EVP_ENCODE_CTX encode;
1457453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org	EVP_MD_CTX md;
1467453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org	EVP_CIPHER_CTX cipher;
1477453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org	} PEM_ENCODE_SEAL_CTX;
1487453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
1497453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org/* enc_type is one off */
1507453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_TYPE_ENCRYPTED      10
1517453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_TYPE_MIC_ONLY       20
1527453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_TYPE_MIC_CLEAR      30
1537453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_TYPE_CLEAR		40
1547453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
1557453c6c0666947e06d87565404f4397a4b387f91digit@chromium.orgtypedef struct pem_recip_st
1567453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org	{
1577453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org	char *name;
1587453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org	X509_NAME *dn;
1597453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
1607453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org	int cipher;
1617453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org	int key_enc;
1627453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org	/*	char iv[8]; unused and wrong size */
1637453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org	} PEM_USER;
1647453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
1657453c6c0666947e06d87565404f4397a4b387f91digit@chromium.orgtypedef struct pem_ctx_st
1667453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org	{
1677453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org	int type;		/* what type of object */
1687453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
1697453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org	struct	{
1707453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org		int version;
1717453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org		int mode;
1727453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org		} proc_type;
1737453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
1747453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org	char *domain;
1757453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
1767453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org	struct	{
1777453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org		int cipher;
1787453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org	/* unused, and wrong size
1797453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org	   unsigned char iv[8]; */
1807453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org		} DEK_info;
1817453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
1827453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org	PEM_USER *originator;
1837453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
1847453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org	int num_recipient;
1857453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org	PEM_USER **recipient;
1867453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
1877453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org	/* XXX(ben): don#t think this is used!
1887453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org		STACK *x509_chain;	/ * certificate chain */
1897453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org	EVP_MD *md;		/* signature type */
1907453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
1917453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org	int md_enc;		/* is the md encrypted or not? */
1927453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org	int md_len;		/* length of md_data */
1937453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org	char *md_data;		/* message digest, could be pkey encrypted */
1947453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
1957453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org	EVP_CIPHER *dec;	/* date encryption cipher */
1967453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org	int key_len;		/* key length */
1977453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org	unsigned char *key;	/* key */
1987453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org	/* unused, and wrong size
1997453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org	   unsigned char iv[8]; */
2007453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
2017453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
2027453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org	int  data_enc;		/* is the data encrypted */
2037453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org	int data_len;
2047453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org	unsigned char *data;
2057453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org	} PEM_CTX;
2067453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
2077453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org/* These macros make the PEM_read/PEM_write functions easier to maintain and
2087453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org * write. Now they are all implemented with either:
2097453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org * IMPLEMENT_PEM_rw(...) or IMPLEMENT_PEM_rw_cb(...)
2107453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org */
2117453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
2127453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#ifdef OPENSSL_NO_FP_API
2137453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
2147453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define IMPLEMENT_PEM_read_fp(name, type, str, asn1) /**/
2157453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define IMPLEMENT_PEM_write_fp(name, type, str, asn1) /**/
2167453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define IMPLEMENT_PEM_write_fp_const(name, type, str, asn1) /**/
2177453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define IMPLEMENT_PEM_write_cb_fp(name, type, str, asn1) /**/
2187453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define IMPLEMENT_PEM_write_cb_fp_const(name, type, str, asn1) /**/
2197453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
2207453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#else
2217453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
2227453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define IMPLEMENT_PEM_read_fp(name, type, str, asn1) \
2237453c6c0666947e06d87565404f4397a4b387f91digit@chromium.orgtype *PEM_read_##name(FILE *fp, type **x, pem_password_cb *cb, void *u)\
2247453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org{ \
2257453c6c0666947e06d87565404f4397a4b387f91digit@chromium.orgreturn PEM_ASN1_read((d2i_of_void *)d2i_##asn1, str,fp,(void **)x,cb,u); \
2267453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org}
2277453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
2287453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define IMPLEMENT_PEM_write_fp(name, type, str, asn1) \
2297453c6c0666947e06d87565404f4397a4b387f91digit@chromium.orgint PEM_write_##name(FILE *fp, type *x) \
2307453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org{ \
2317453c6c0666947e06d87565404f4397a4b387f91digit@chromium.orgreturn PEM_ASN1_write((i2d_of_void *)i2d_##asn1,str,fp,x,NULL,NULL,0,NULL,NULL); \
2327453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org}
2337453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
2347453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define IMPLEMENT_PEM_write_fp_const(name, type, str, asn1) \
2357453c6c0666947e06d87565404f4397a4b387f91digit@chromium.orgint PEM_write_##name(FILE *fp, const type *x) \
2367453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org{ \
2377453c6c0666947e06d87565404f4397a4b387f91digit@chromium.orgreturn PEM_ASN1_write((i2d_of_void *)i2d_##asn1,str,fp,(void *)x,NULL,NULL,0,NULL,NULL); \
2387453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org}
2397453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
2407453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define IMPLEMENT_PEM_write_cb_fp(name, type, str, asn1) \
2417453c6c0666947e06d87565404f4397a4b387f91digit@chromium.orgint PEM_write_##name(FILE *fp, type *x, const EVP_CIPHER *enc, \
2427453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org	     unsigned char *kstr, int klen, pem_password_cb *cb, \
2437453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org		  void *u) \
2447453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org	{ \
2457453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org	return PEM_ASN1_write((i2d_of_void *)i2d_##asn1,str,fp,x,enc,kstr,klen,cb,u); \
2467453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org	}
2477453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
2487453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define IMPLEMENT_PEM_write_cb_fp_const(name, type, str, asn1) \
2497453c6c0666947e06d87565404f4397a4b387f91digit@chromium.orgint PEM_write_##name(FILE *fp, type *x, const EVP_CIPHER *enc, \
2507453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org	     unsigned char *kstr, int klen, pem_password_cb *cb, \
2517453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org		  void *u) \
2527453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org	{ \
2537453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org	return PEM_ASN1_write((i2d_of_void *)i2d_##asn1,str,fp,x,enc,kstr,klen,cb,u); \
2547453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org	}
2557453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
2567453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#endif
2577453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
2587453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define IMPLEMENT_PEM_read_bio(name, type, str, asn1) \
2597453c6c0666947e06d87565404f4397a4b387f91digit@chromium.orgtype *PEM_read_bio_##name(BIO *bp, type **x, pem_password_cb *cb, void *u)\
2607453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org{ \
2617453c6c0666947e06d87565404f4397a4b387f91digit@chromium.orgreturn PEM_ASN1_read_bio((d2i_of_void *)d2i_##asn1, str,bp,(void **)x,cb,u); \
2627453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org}
2637453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
2647453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define IMPLEMENT_PEM_write_bio(name, type, str, asn1) \
2657453c6c0666947e06d87565404f4397a4b387f91digit@chromium.orgint PEM_write_bio_##name(BIO *bp, type *x) \
2667453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org{ \
2677453c6c0666947e06d87565404f4397a4b387f91digit@chromium.orgreturn PEM_ASN1_write_bio((i2d_of_void *)i2d_##asn1,str,bp,x,NULL,NULL,0,NULL,NULL); \
2687453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org}
2697453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
2707453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define IMPLEMENT_PEM_write_bio_const(name, type, str, asn1) \
2717453c6c0666947e06d87565404f4397a4b387f91digit@chromium.orgint PEM_write_bio_##name(BIO *bp, const type *x) \
2727453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org{ \
2737453c6c0666947e06d87565404f4397a4b387f91digit@chromium.orgreturn PEM_ASN1_write_bio((i2d_of_void *)i2d_##asn1,str,bp,(void *)x,NULL,NULL,0,NULL,NULL); \
2747453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org}
2757453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
2767453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define IMPLEMENT_PEM_write_cb_bio(name, type, str, asn1) \
2777453c6c0666947e06d87565404f4397a4b387f91digit@chromium.orgint PEM_write_bio_##name(BIO *bp, type *x, const EVP_CIPHER *enc, \
2787453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org	     unsigned char *kstr, int klen, pem_password_cb *cb, void *u) \
2797453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org	{ \
2807453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org	return PEM_ASN1_write_bio((i2d_of_void *)i2d_##asn1,str,bp,x,enc,kstr,klen,cb,u); \
2817453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org	}
2827453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
2837453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define IMPLEMENT_PEM_write_cb_bio_const(name, type, str, asn1) \
2847453c6c0666947e06d87565404f4397a4b387f91digit@chromium.orgint PEM_write_bio_##name(BIO *bp, type *x, const EVP_CIPHER *enc, \
2857453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org	     unsigned char *kstr, int klen, pem_password_cb *cb, void *u) \
2867453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org	{ \
2877453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org	return PEM_ASN1_write_bio((i2d_of_void *)i2d_##asn1,str,bp,(void *)x,enc,kstr,klen,cb,u); \
2887453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org	}
2897453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
2907453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define IMPLEMENT_PEM_write(name, type, str, asn1) \
2917453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org	IMPLEMENT_PEM_write_bio(name, type, str, asn1) \
2927453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org	IMPLEMENT_PEM_write_fp(name, type, str, asn1)
2937453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
2947453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define IMPLEMENT_PEM_write_const(name, type, str, asn1) \
2957453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org	IMPLEMENT_PEM_write_bio_const(name, type, str, asn1) \
2967453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org	IMPLEMENT_PEM_write_fp_const(name, type, str, asn1)
2977453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
2987453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define IMPLEMENT_PEM_write_cb(name, type, str, asn1) \
2997453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org	IMPLEMENT_PEM_write_cb_bio(name, type, str, asn1) \
3007453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org	IMPLEMENT_PEM_write_cb_fp(name, type, str, asn1)
3017453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
3027453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define IMPLEMENT_PEM_write_cb_const(name, type, str, asn1) \
3037453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org	IMPLEMENT_PEM_write_cb_bio_const(name, type, str, asn1) \
3047453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org	IMPLEMENT_PEM_write_cb_fp_const(name, type, str, asn1)
3057453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
3067453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define IMPLEMENT_PEM_read(name, type, str, asn1) \
3077453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org	IMPLEMENT_PEM_read_bio(name, type, str, asn1) \
3087453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org	IMPLEMENT_PEM_read_fp(name, type, str, asn1)
3097453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
3107453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define IMPLEMENT_PEM_rw(name, type, str, asn1) \
3117453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org	IMPLEMENT_PEM_read(name, type, str, asn1) \
3127453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org	IMPLEMENT_PEM_write(name, type, str, asn1)
3137453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
3147453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define IMPLEMENT_PEM_rw_const(name, type, str, asn1) \
3157453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org	IMPLEMENT_PEM_read(name, type, str, asn1) \
3167453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org	IMPLEMENT_PEM_write_const(name, type, str, asn1)
3177453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
3187453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define IMPLEMENT_PEM_rw_cb(name, type, str, asn1) \
3197453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org	IMPLEMENT_PEM_read(name, type, str, asn1) \
3207453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org	IMPLEMENT_PEM_write_cb(name, type, str, asn1)
3217453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
3227453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org/* These are the same except they are for the declarations */
3237453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
3247453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#if defined(OPENSSL_NO_FP_API)
3257453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
3267453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define DECLARE_PEM_read_fp(name, type) /**/
3277453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define DECLARE_PEM_write_fp(name, type) /**/
3287453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define DECLARE_PEM_write_cb_fp(name, type) /**/
3297453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
3307453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#else
3317453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
3327453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define DECLARE_PEM_read_fp(name, type) \
3337453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org	type *PEM_read_##name(FILE *fp, type **x, pem_password_cb *cb, void *u);
3347453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
3357453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define DECLARE_PEM_write_fp(name, type) \
3367453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org	int PEM_write_##name(FILE *fp, type *x);
3377453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
3387453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define DECLARE_PEM_write_fp_const(name, type) \
3397453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org	int PEM_write_##name(FILE *fp, const type *x);
3407453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
3417453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define DECLARE_PEM_write_cb_fp(name, type) \
3427453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org	int PEM_write_##name(FILE *fp, type *x, const EVP_CIPHER *enc, \
3437453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org	     unsigned char *kstr, int klen, pem_password_cb *cb, void *u);
3447453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
3457453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#endif
3467453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
3477453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#ifndef OPENSSL_NO_BIO
3487453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define DECLARE_PEM_read_bio(name, type) \
3497453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org	type *PEM_read_bio_##name(BIO *bp, type **x, pem_password_cb *cb, void *u);
3507453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
3517453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define DECLARE_PEM_write_bio(name, type) \
3527453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org	int PEM_write_bio_##name(BIO *bp, type *x);
3537453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
3547453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define DECLARE_PEM_write_bio_const(name, type) \
3557453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org	int PEM_write_bio_##name(BIO *bp, const type *x);
3567453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
3577453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define DECLARE_PEM_write_cb_bio(name, type) \
3587453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org	int PEM_write_bio_##name(BIO *bp, type *x, const EVP_CIPHER *enc, \
3597453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org	     unsigned char *kstr, int klen, pem_password_cb *cb, void *u);
3607453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
3617453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#else
3627453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
3637453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define DECLARE_PEM_read_bio(name, type) /**/
3647453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define DECLARE_PEM_write_bio(name, type) /**/
3657453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define DECLARE_PEM_write_bio_const(name, type) /**/
3667453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define DECLARE_PEM_write_cb_bio(name, type) /**/
3677453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
3687453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#endif
3697453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
3707453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define DECLARE_PEM_write(name, type) \
3717453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org	DECLARE_PEM_write_bio(name, type) \
3727453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org	DECLARE_PEM_write_fp(name, type)
3737453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
3747453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define DECLARE_PEM_write_const(name, type) \
3757453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org	DECLARE_PEM_write_bio_const(name, type) \
3767453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org	DECLARE_PEM_write_fp_const(name, type)
3777453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
3787453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define DECLARE_PEM_write_cb(name, type) \
3797453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org	DECLARE_PEM_write_cb_bio(name, type) \
3807453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org	DECLARE_PEM_write_cb_fp(name, type)
3817453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
3827453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define DECLARE_PEM_read(name, type) \
3837453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org	DECLARE_PEM_read_bio(name, type) \
3847453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org	DECLARE_PEM_read_fp(name, type)
3857453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
3867453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define DECLARE_PEM_rw(name, type) \
3877453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org	DECLARE_PEM_read(name, type) \
3887453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org	DECLARE_PEM_write(name, type)
3897453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
3907453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define DECLARE_PEM_rw_const(name, type) \
3917453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org	DECLARE_PEM_read(name, type) \
3927453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org	DECLARE_PEM_write_const(name, type)
3937453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
3947453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define DECLARE_PEM_rw_cb(name, type) \
3957453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org	DECLARE_PEM_read(name, type) \
3967453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org	DECLARE_PEM_write_cb(name, type)
3977453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
3987453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#if 1
3997453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org/* "userdata": new with OpenSSL 0.9.4 */
4007453c6c0666947e06d87565404f4397a4b387f91digit@chromium.orgtypedef int pem_password_cb(char *buf, int size, int rwflag, void *userdata);
4017453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#else
4027453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org/* OpenSSL 0.9.3, 0.9.3a */
4037453c6c0666947e06d87565404f4397a4b387f91digit@chromium.orgtypedef int pem_password_cb(char *buf, int size, int rwflag);
4047453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#endif
4057453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
4067453c6c0666947e06d87565404f4397a4b387f91digit@chromium.orgint	PEM_get_EVP_CIPHER_INFO(char *header, EVP_CIPHER_INFO *cipher);
4077453c6c0666947e06d87565404f4397a4b387f91digit@chromium.orgint	PEM_do_header (EVP_CIPHER_INFO *cipher, unsigned char *data,long *len,
4087453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org	pem_password_cb *callback,void *u);
4097453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
4107453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#ifndef OPENSSL_NO_BIO
4117453c6c0666947e06d87565404f4397a4b387f91digit@chromium.orgint	PEM_read_bio(BIO *bp, char **name, char **header,
4127453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org		unsigned char **data,long *len);
4137453c6c0666947e06d87565404f4397a4b387f91digit@chromium.orgint	PEM_write_bio(BIO *bp,const char *name,char *hdr,unsigned char *data,
4147453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org		long len);
4157453c6c0666947e06d87565404f4397a4b387f91digit@chromium.orgint PEM_bytes_read_bio(unsigned char **pdata, long *plen, char **pnm, const char *name, BIO *bp,
4167453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org	     pem_password_cb *cb, void *u);
4177453c6c0666947e06d87565404f4397a4b387f91digit@chromium.orgvoid *	PEM_ASN1_read_bio(d2i_of_void *d2i, const char *name, BIO *bp,
4187453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org			  void **x, pem_password_cb *cb, void *u);
4197453c6c0666947e06d87565404f4397a4b387f91digit@chromium.orgint	PEM_ASN1_write_bio(i2d_of_void *i2d,const char *name,BIO *bp, void *x,
4207453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org			   const EVP_CIPHER *enc,unsigned char *kstr,int klen,
4217453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org			   pem_password_cb *cb, void *u);
4227453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
4237453c6c0666947e06d87565404f4397a4b387f91digit@chromium.orgSTACK_OF(X509_INFO) *	PEM_X509_INFO_read_bio(BIO *bp, STACK_OF(X509_INFO) *sk, pem_password_cb *cb, void *u);
4247453c6c0666947e06d87565404f4397a4b387f91digit@chromium.orgint	PEM_X509_INFO_write_bio(BIO *bp,X509_INFO *xi, EVP_CIPHER *enc,
4257453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org		unsigned char *kstr, int klen, pem_password_cb *cd, void *u);
4267453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#endif
4277453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
4287453c6c0666947e06d87565404f4397a4b387f91digit@chromium.orgint	PEM_read(FILE *fp, char **name, char **header,
4297453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org		unsigned char **data,long *len);
4307453c6c0666947e06d87565404f4397a4b387f91digit@chromium.orgint	PEM_write(FILE *fp,char *name,char *hdr,unsigned char *data,long len);
4317453c6c0666947e06d87565404f4397a4b387f91digit@chromium.orgvoid *  PEM_ASN1_read(d2i_of_void *d2i, const char *name, FILE *fp, void **x,
4327453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org		      pem_password_cb *cb, void *u);
4337453c6c0666947e06d87565404f4397a4b387f91digit@chromium.orgint	PEM_ASN1_write(i2d_of_void *i2d,const char *name,FILE *fp,
4347453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org		       void *x,const EVP_CIPHER *enc,unsigned char *kstr,
4357453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org		       int klen,pem_password_cb *callback, void *u);
4367453c6c0666947e06d87565404f4397a4b387f91digit@chromium.orgSTACK_OF(X509_INFO) *	PEM_X509_INFO_read(FILE *fp, STACK_OF(X509_INFO) *sk,
4377453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org	pem_password_cb *cb, void *u);
4387453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
4397453c6c0666947e06d87565404f4397a4b387f91digit@chromium.orgint	PEM_SealInit(PEM_ENCODE_SEAL_CTX *ctx, EVP_CIPHER *type,
4407453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org		EVP_MD *md_type, unsigned char **ek, int *ekl,
4417453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org		unsigned char *iv, EVP_PKEY **pubk, int npubk);
4427453c6c0666947e06d87565404f4397a4b387f91digit@chromium.orgvoid	PEM_SealUpdate(PEM_ENCODE_SEAL_CTX *ctx, unsigned char *out, int *outl,
4437453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org		unsigned char *in, int inl);
4447453c6c0666947e06d87565404f4397a4b387f91digit@chromium.orgint	PEM_SealFinal(PEM_ENCODE_SEAL_CTX *ctx, unsigned char *sig,int *sigl,
4457453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org		unsigned char *out, int *outl, EVP_PKEY *priv);
4467453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
4477453c6c0666947e06d87565404f4397a4b387f91digit@chromium.orgvoid    PEM_SignInit(EVP_MD_CTX *ctx, EVP_MD *type);
4487453c6c0666947e06d87565404f4397a4b387f91digit@chromium.orgvoid    PEM_SignUpdate(EVP_MD_CTX *ctx,unsigned char *d,unsigned int cnt);
4497453c6c0666947e06d87565404f4397a4b387f91digit@chromium.orgint	PEM_SignFinal(EVP_MD_CTX *ctx, unsigned char *sigret,
4507453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org		unsigned int *siglen, EVP_PKEY *pkey);
4517453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
4527453c6c0666947e06d87565404f4397a4b387f91digit@chromium.orgint	PEM_def_callback(char *buf, int num, int w, void *key);
4537453c6c0666947e06d87565404f4397a4b387f91digit@chromium.orgvoid	PEM_proc_type(char *buf, int type);
4547453c6c0666947e06d87565404f4397a4b387f91digit@chromium.orgvoid	PEM_dek_info(char *buf, const char *type, int len, char *str);
4557453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
4567453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
4577453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#include <openssl/symhacks.h>
4587453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
4597453c6c0666947e06d87565404f4397a4b387f91digit@chromium.orgDECLARE_PEM_rw(X509, X509)
4607453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
4617453c6c0666947e06d87565404f4397a4b387f91digit@chromium.orgDECLARE_PEM_rw(X509_AUX, X509)
4627453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
4637453c6c0666947e06d87565404f4397a4b387f91digit@chromium.orgDECLARE_PEM_rw(X509_CERT_PAIR, X509_CERT_PAIR)
4647453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
4657453c6c0666947e06d87565404f4397a4b387f91digit@chromium.orgDECLARE_PEM_rw(X509_REQ, X509_REQ)
4667453c6c0666947e06d87565404f4397a4b387f91digit@chromium.orgDECLARE_PEM_write(X509_REQ_NEW, X509_REQ)
4677453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
4687453c6c0666947e06d87565404f4397a4b387f91digit@chromium.orgDECLARE_PEM_rw(X509_CRL, X509_CRL)
4697453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
4707453c6c0666947e06d87565404f4397a4b387f91digit@chromium.orgDECLARE_PEM_rw(PKCS7, PKCS7)
4717453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
4727453c6c0666947e06d87565404f4397a4b387f91digit@chromium.orgDECLARE_PEM_rw(NETSCAPE_CERT_SEQUENCE, NETSCAPE_CERT_SEQUENCE)
4737453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
4747453c6c0666947e06d87565404f4397a4b387f91digit@chromium.orgDECLARE_PEM_rw(PKCS8, X509_SIG)
4757453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
4767453c6c0666947e06d87565404f4397a4b387f91digit@chromium.orgDECLARE_PEM_rw(PKCS8_PRIV_KEY_INFO, PKCS8_PRIV_KEY_INFO)
4777453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
4787453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#ifndef OPENSSL_NO_RSA
4797453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
4807453c6c0666947e06d87565404f4397a4b387f91digit@chromium.orgDECLARE_PEM_rw_cb(RSAPrivateKey, RSA)
4817453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
4827453c6c0666947e06d87565404f4397a4b387f91digit@chromium.orgDECLARE_PEM_rw_const(RSAPublicKey, RSA)
4837453c6c0666947e06d87565404f4397a4b387f91digit@chromium.orgDECLARE_PEM_rw(RSA_PUBKEY, RSA)
4847453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
4857453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#endif
4867453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
4877453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#ifndef OPENSSL_NO_DSA
4887453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
4897453c6c0666947e06d87565404f4397a4b387f91digit@chromium.orgDECLARE_PEM_rw_cb(DSAPrivateKey, DSA)
4907453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
4917453c6c0666947e06d87565404f4397a4b387f91digit@chromium.orgDECLARE_PEM_rw(DSA_PUBKEY, DSA)
4927453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
4937453c6c0666947e06d87565404f4397a4b387f91digit@chromium.orgDECLARE_PEM_rw_const(DSAparams, DSA)
4947453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
4957453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#endif
4967453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
4977453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#ifndef OPENSSL_NO_EC
4987453c6c0666947e06d87565404f4397a4b387f91digit@chromium.orgDECLARE_PEM_rw_const(ECPKParameters, EC_GROUP)
4997453c6c0666947e06d87565404f4397a4b387f91digit@chromium.orgDECLARE_PEM_rw_cb(ECPrivateKey, EC_KEY)
5007453c6c0666947e06d87565404f4397a4b387f91digit@chromium.orgDECLARE_PEM_rw(EC_PUBKEY, EC_KEY)
5017453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#endif
5027453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
5037453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#ifndef OPENSSL_NO_DH
5047453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
5057453c6c0666947e06d87565404f4397a4b387f91digit@chromium.orgDECLARE_PEM_rw_const(DHparams, DH)
5067453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
5077453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#endif
5087453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
5097453c6c0666947e06d87565404f4397a4b387f91digit@chromium.orgDECLARE_PEM_rw_cb(PrivateKey, EVP_PKEY)
5107453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
5117453c6c0666947e06d87565404f4397a4b387f91digit@chromium.orgDECLARE_PEM_rw(PUBKEY, EVP_PKEY)
5127453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
5137453c6c0666947e06d87565404f4397a4b387f91digit@chromium.orgint PEM_write_bio_PKCS8PrivateKey_nid(BIO *bp, EVP_PKEY *x, int nid,
5147453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org				  char *kstr, int klen,
5157453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org				  pem_password_cb *cb, void *u);
5167453c6c0666947e06d87565404f4397a4b387f91digit@chromium.orgint PEM_write_bio_PKCS8PrivateKey(BIO *, EVP_PKEY *, const EVP_CIPHER *,
5177453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org                                  char *, int, pem_password_cb *, void *);
5187453c6c0666947e06d87565404f4397a4b387f91digit@chromium.orgint i2d_PKCS8PrivateKey_bio(BIO *bp, EVP_PKEY *x, const EVP_CIPHER *enc,
5197453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org				  char *kstr, int klen,
5207453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org				  pem_password_cb *cb, void *u);
5217453c6c0666947e06d87565404f4397a4b387f91digit@chromium.orgint i2d_PKCS8PrivateKey_nid_bio(BIO *bp, EVP_PKEY *x, int nid,
5227453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org				  char *kstr, int klen,
5237453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org				  pem_password_cb *cb, void *u);
5247453c6c0666947e06d87565404f4397a4b387f91digit@chromium.orgEVP_PKEY *d2i_PKCS8PrivateKey_bio(BIO *bp, EVP_PKEY **x, pem_password_cb *cb, void *u);
5257453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
5267453c6c0666947e06d87565404f4397a4b387f91digit@chromium.orgint i2d_PKCS8PrivateKey_fp(FILE *fp, EVP_PKEY *x, const EVP_CIPHER *enc,
5277453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org				  char *kstr, int klen,
5287453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org				  pem_password_cb *cb, void *u);
5297453c6c0666947e06d87565404f4397a4b387f91digit@chromium.orgint i2d_PKCS8PrivateKey_nid_fp(FILE *fp, EVP_PKEY *x, int nid,
5307453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org				  char *kstr, int klen,
5317453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org				  pem_password_cb *cb, void *u);
5327453c6c0666947e06d87565404f4397a4b387f91digit@chromium.orgint PEM_write_PKCS8PrivateKey_nid(FILE *fp, EVP_PKEY *x, int nid,
5337453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org				  char *kstr, int klen,
5347453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org				  pem_password_cb *cb, void *u);
5357453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
5367453c6c0666947e06d87565404f4397a4b387f91digit@chromium.orgEVP_PKEY *d2i_PKCS8PrivateKey_fp(FILE *fp, EVP_PKEY **x, pem_password_cb *cb, void *u);
5377453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
5387453c6c0666947e06d87565404f4397a4b387f91digit@chromium.orgint PEM_write_PKCS8PrivateKey(FILE *fp,EVP_PKEY *x,const EVP_CIPHER *enc,
5397453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org			      char *kstr,int klen, pem_password_cb *cd, void *u);
5407453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
5417453c6c0666947e06d87565404f4397a4b387f91digit@chromium.orgEVP_PKEY *PEM_read_bio_Parameters(BIO *bp, EVP_PKEY **x);
5427453c6c0666947e06d87565404f4397a4b387f91digit@chromium.orgint PEM_write_bio_Parameters(BIO *bp, EVP_PKEY *x);
5437453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
5447453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
5457453c6c0666947e06d87565404f4397a4b387f91digit@chromium.orgEVP_PKEY *b2i_PrivateKey(const unsigned char **in, long length);
5467453c6c0666947e06d87565404f4397a4b387f91digit@chromium.orgEVP_PKEY *b2i_PublicKey(const unsigned char **in, long length);
5477453c6c0666947e06d87565404f4397a4b387f91digit@chromium.orgEVP_PKEY *b2i_PrivateKey_bio(BIO *in);
5487453c6c0666947e06d87565404f4397a4b387f91digit@chromium.orgEVP_PKEY *b2i_PublicKey_bio(BIO *in);
5497453c6c0666947e06d87565404f4397a4b387f91digit@chromium.orgint i2b_PrivateKey_bio(BIO *out, EVP_PKEY *pk);
5507453c6c0666947e06d87565404f4397a4b387f91digit@chromium.orgint i2b_PublicKey_bio(BIO *out, EVP_PKEY *pk);
5517453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#ifndef OPENSSL_NO_RC4
5527453c6c0666947e06d87565404f4397a4b387f91digit@chromium.orgEVP_PKEY *b2i_PVK_bio(BIO *in, pem_password_cb *cb, void *u);
5537453c6c0666947e06d87565404f4397a4b387f91digit@chromium.orgint i2b_PVK_bio(BIO *out, EVP_PKEY *pk, int enclevel,
5547453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org		pem_password_cb *cb, void *u);
5557453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#endif
5567453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
5577453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
5587453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org/* BEGIN ERROR CODES */
5597453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org/* The following lines are auto generated by the script mkerr.pl. Any changes
5607453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org * made after this point may be overwritten when the script is next run.
5617453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org */
5627453c6c0666947e06d87565404f4397a4b387f91digit@chromium.orgvoid ERR_load_PEM_strings(void);
5637453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
5647453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org/* Error codes for the PEM functions. */
5657453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
5667453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org/* Function codes. */
5677453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_F_B2I_DSS					 127
5687453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_F_B2I_PVK_BIO				 128
5697453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_F_B2I_RSA					 129
5707453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_F_CHECK_BITLEN_DSA				 130
5717453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_F_CHECK_BITLEN_RSA				 131
5727453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_F_D2I_PKCS8PRIVATEKEY_BIO			 120
5737453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_F_D2I_PKCS8PRIVATEKEY_FP			 121
5747453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_F_DO_B2I					 132
5757453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_F_DO_B2I_BIO				 133
5767453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_F_DO_BLOB_HEADER				 134
5777453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_F_DO_PK8PKEY				 126
5787453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_F_DO_PK8PKEY_FP				 125
5797453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_F_DO_PVK_BODY				 135
5807453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_F_DO_PVK_HEADER				 136
5817453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_F_I2B_PVK					 137
5827453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_F_I2B_PVK_BIO				 138
5837453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_F_LOAD_IV					 101
5847453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_F_PEM_ASN1_READ				 102
5857453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_F_PEM_ASN1_READ_BIO				 103
5867453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_F_PEM_ASN1_WRITE				 104
5877453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_F_PEM_ASN1_WRITE_BIO			 105
5887453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_F_PEM_DEF_CALLBACK				 100
5897453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_F_PEM_DO_HEADER				 106
5907453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_F_PEM_F_PEM_WRITE_PKCS8PRIVATEKEY		 118
5917453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_F_PEM_GET_EVP_CIPHER_INFO			 107
5927453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_F_PEM_PK8PKEY				 119
5937453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_F_PEM_READ					 108
5947453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_F_PEM_READ_BIO				 109
5957453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_F_PEM_READ_BIO_PARAMETERS			 140
5967453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_F_PEM_READ_BIO_PRIVATEKEY			 123
5977453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_F_PEM_READ_PRIVATEKEY			 124
5987453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_F_PEM_SEALFINAL				 110
5997453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_F_PEM_SEALINIT				 111
6007453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_F_PEM_SIGNFINAL				 112
6017453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_F_PEM_WRITE					 113
6027453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_F_PEM_WRITE_BIO				 114
6037453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_F_PEM_WRITE_PRIVATEKEY			 139
6047453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_F_PEM_X509_INFO_READ			 115
6057453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_F_PEM_X509_INFO_READ_BIO			 116
6067453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_F_PEM_X509_INFO_WRITE_BIO			 117
6077453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
6087453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org/* Reason codes. */
6097453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_R_BAD_BASE64_DECODE				 100
6107453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_R_BAD_DECRYPT				 101
6117453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_R_BAD_END_LINE				 102
6127453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_R_BAD_IV_CHARS				 103
6137453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_R_BAD_MAGIC_NUMBER				 116
6147453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_R_BAD_PASSWORD_READ				 104
6157453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_R_BAD_VERSION_NUMBER			 117
6167453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_R_BIO_WRITE_FAILURE				 118
6177453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_R_CIPHER_IS_NULL				 127
6187453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_R_ERROR_CONVERTING_PRIVATE_KEY		 115
6197453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_R_EXPECTING_PRIVATE_KEY_BLOB		 119
6207453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_R_EXPECTING_PUBLIC_KEY_BLOB			 120
6217453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_R_INCONSISTENT_HEADER			 121
6227453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_R_KEYBLOB_HEADER_PARSE_ERROR		 122
6237453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_R_KEYBLOB_TOO_SHORT				 123
6247453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_R_NOT_DEK_INFO				 105
6257453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_R_NOT_ENCRYPTED				 106
6267453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_R_NOT_PROC_TYPE				 107
6277453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_R_NO_START_LINE				 108
6287453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_R_PROBLEMS_GETTING_PASSWORD			 109
6297453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_R_PUBLIC_KEY_NO_RSA				 110
6307453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_R_PVK_DATA_TOO_SHORT			 124
6317453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_R_PVK_TOO_SHORT				 125
6327453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_R_READ_KEY					 111
6337453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_R_SHORT_HEADER				 112
6347453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_R_UNSUPPORTED_CIPHER			 113
6357453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_R_UNSUPPORTED_ENCRYPTION			 114
6367453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#define PEM_R_UNSUPPORTED_KEY_COMPONENTS		 126
6377453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org
6387453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#ifdef  __cplusplus
6397453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org}
6407453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#endif
6417453c6c0666947e06d87565404f4397a4b387f91digit@chromium.org#endif
642