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