1c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org/* crypto/x509/x509.h */ 2c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 3c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * All rights reserved. 4c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * 5c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * This package is an SSL implementation written 6c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * by Eric Young (eay@cryptsoft.com). 7c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * The implementation was written so as to conform with Netscapes SSL. 8c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * 9c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * This library is free for commercial and non-commercial use as long as 10c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * the following conditions are aheared to. The following conditions 11c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * apply to all code found in this distribution, be it the RC4, RSA, 12c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * lhash, DES, etc., code; not just the SSL code. The SSL documentation 13c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * included with this distribution is covered by the same copyright terms 14c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * except that the holder is Tim Hudson (tjh@cryptsoft.com). 15c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * 16c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * Copyright remains Eric Young's, and as such any Copyright notices in 17c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * the code are not to be removed. 18c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * If this package is used in a product, Eric Young should be given attribution 19c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * as the author of the parts of the library used. 20c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * This can be in the form of a textual message at program startup or 21c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * in documentation (online or textual) provided with the package. 22c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * 23c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * Redistribution and use in source and binary forms, with or without 24c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * modification, are permitted provided that the following conditions 25c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * are met: 26c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * 1. Redistributions of source code must retain the copyright 27c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * notice, this list of conditions and the following disclaimer. 28c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * 2. Redistributions in binary form must reproduce the above copyright 29c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * notice, this list of conditions and the following disclaimer in the 30c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * documentation and/or other materials provided with the distribution. 31c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * 3. All advertising materials mentioning features or use of this software 32c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * must display the following acknowledgement: 33c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * "This product includes cryptographic software written by 34c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * Eric Young (eay@cryptsoft.com)" 35c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * The word 'cryptographic' can be left out if the rouines from the library 36c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * being used are not cryptographic related :-). 37c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * 4. If you include any Windows specific code (or a derivative thereof) from 38c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * the apps directory (application code) you must include an acknowledgement: 39c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" 40c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * 41c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND 42c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 43c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 44c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 45c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 46c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 47c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 48c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 49c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 50c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 51c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * SUCH DAMAGE. 52c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * 53c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * The licence and distribution terms for any publically available version or 54c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * derivative of this code cannot be changed. i.e. this code cannot simply be 55c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * copied and put under another distribution licence 56c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * [including the GNU Public Licence.] 57c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org */ 58c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org/* ==================================================================== 59c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED. 60c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * ECDH support in OpenSSL originally developed by 61c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * SUN MICROSYSTEMS, INC., and contributed to the OpenSSL project. 62c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org */ 63c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 64c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#ifndef HEADER_X509_H 65c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define HEADER_X509_H 66c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 67c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#include <openssl/e_os2.h> 68c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#include <openssl/symhacks.h> 69c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#ifndef OPENSSL_NO_BUFFER 70c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#include <openssl/buffer.h> 71c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#endif 72c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#ifndef OPENSSL_NO_EVP 73c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#include <openssl/evp.h> 74c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#endif 75c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#ifndef OPENSSL_NO_BIO 76c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#include <openssl/bio.h> 77c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#endif 78c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#include <openssl/stack.h> 79c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#include <openssl/asn1.h> 80c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#include <openssl/safestack.h> 81c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 82c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#ifndef OPENSSL_NO_EC 83c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#include <openssl/ec.h> 84c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#endif 85c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 86c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#ifndef OPENSSL_NO_ECDSA 87c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#include <openssl/ecdsa.h> 88c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#endif 89c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 90c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#ifndef OPENSSL_NO_ECDH 91c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#include <openssl/ecdh.h> 92c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#endif 93c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 94c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#ifndef OPENSSL_NO_DEPRECATED 95c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#ifndef OPENSSL_NO_RSA 96c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#include <openssl/rsa.h> 97c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#endif 98c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#ifndef OPENSSL_NO_DSA 99c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#include <openssl/dsa.h> 100c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#endif 101c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#ifndef OPENSSL_NO_DH 102c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#include <openssl/dh.h> 103c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#endif 104c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#endif 105c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 106c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#ifndef OPENSSL_NO_SHA 107c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#include <openssl/sha.h> 108c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#endif 109c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#include <openssl/ossl_typ.h> 110c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 111c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#ifdef __cplusplus 112c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgextern "C" { 113c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#endif 114c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 115c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#ifdef OPENSSL_SYS_WIN32 116c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org/* Under Win32 these are defined in wincrypt.h */ 117c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#undef X509_NAME 118c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#undef X509_CERT_PAIR 119c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#undef X509_EXTENSIONS 120c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#endif 121c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 122c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_FILETYPE_PEM 1 123c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_FILETYPE_ASN1 2 124c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_FILETYPE_DEFAULT 3 125c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 126c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509v3_KU_DIGITAL_SIGNATURE 0x0080 127c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509v3_KU_NON_REPUDIATION 0x0040 128c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509v3_KU_KEY_ENCIPHERMENT 0x0020 129c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509v3_KU_DATA_ENCIPHERMENT 0x0010 130c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509v3_KU_KEY_AGREEMENT 0x0008 131c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509v3_KU_KEY_CERT_SIGN 0x0004 132c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509v3_KU_CRL_SIGN 0x0002 133c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509v3_KU_ENCIPHER_ONLY 0x0001 134c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509v3_KU_DECIPHER_ONLY 0x8000 135c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509v3_KU_UNDEF 0xffff 136c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 137c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgtypedef struct X509_objects_st 138c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org { 139c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org int nid; 140c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org int (*a2i)(void); 141c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org int (*i2a)(void); 142c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org } X509_OBJECTS; 143c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 144c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgstruct X509_algor_st 145c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org { 146c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org ASN1_OBJECT *algorithm; 147c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org ASN1_TYPE *parameter; 148c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org } /* X509_ALGOR */; 149c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 150c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgDECLARE_ASN1_SET_OF(X509_ALGOR) 151c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 152c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgtypedef STACK_OF(X509_ALGOR) X509_ALGORS; 153c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 154c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgtypedef struct X509_val_st 155c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org { 156c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org ASN1_TIME *notBefore; 157c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org ASN1_TIME *notAfter; 158c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org } X509_VAL; 159c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 160480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.orgstruct X509_pubkey_st 161c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org { 162c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org X509_ALGOR *algor; 163c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org ASN1_BIT_STRING *public_key; 164c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org EVP_PKEY *pkey; 165480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org }; 166c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 167c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgtypedef struct X509_sig_st 168c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org { 169c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org X509_ALGOR *algor; 170c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org ASN1_OCTET_STRING *digest; 171c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org } X509_SIG; 172c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 173c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgtypedef struct X509_name_entry_st 174c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org { 175c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org ASN1_OBJECT *object; 176c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org ASN1_STRING *value; 177c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org int set; 178c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org int size; /* temp variable */ 179c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org } X509_NAME_ENTRY; 180c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 181c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgDECLARE_STACK_OF(X509_NAME_ENTRY) 182c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgDECLARE_ASN1_SET_OF(X509_NAME_ENTRY) 183c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 184c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org/* we always keep X509_NAMEs in 2 forms. */ 185c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgstruct X509_name_st 186c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org { 187c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org STACK_OF(X509_NAME_ENTRY) *entries; 188c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org int modified; /* true if 'bytes' needs to be built */ 189c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#ifndef OPENSSL_NO_BUFFER 190c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org BUF_MEM *bytes; 191c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#else 192c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org char *bytes; 193c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#endif 194480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org/* unsigned long hash; Keep the hash around for lookups */ 195480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org unsigned char *canon_enc; 196480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org int canon_enclen; 197c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org } /* X509_NAME */; 198c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 199c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgDECLARE_STACK_OF(X509_NAME) 200c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 201c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_EX_V_NETSCAPE_HACK 0x8000 202c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_EX_V_INIT 0x0001 203c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgtypedef struct X509_extension_st 204c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org { 205c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org ASN1_OBJECT *object; 206c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org ASN1_BOOLEAN critical; 207c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org ASN1_OCTET_STRING *value; 208c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org } X509_EXTENSION; 209c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 210c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgtypedef STACK_OF(X509_EXTENSION) X509_EXTENSIONS; 211c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 212c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgDECLARE_STACK_OF(X509_EXTENSION) 213c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgDECLARE_ASN1_SET_OF(X509_EXTENSION) 214c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 215c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org/* a sequence of these are used */ 216c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgtypedef struct x509_attributes_st 217c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org { 218c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org ASN1_OBJECT *object; 219c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org int single; /* 0 for a set, 1 for a single item (which is wrong) */ 220c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org union { 221c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org char *ptr; 222c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org/* 0 */ STACK_OF(ASN1_TYPE) *set; 223c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org/* 1 */ ASN1_TYPE *single; 224c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org } value; 225c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org } X509_ATTRIBUTE; 226c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 227c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgDECLARE_STACK_OF(X509_ATTRIBUTE) 228c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgDECLARE_ASN1_SET_OF(X509_ATTRIBUTE) 229c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 230c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 231c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgtypedef struct X509_req_info_st 232c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org { 233c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org ASN1_ENCODING enc; 234c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org ASN1_INTEGER *version; 235c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org X509_NAME *subject; 236c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org X509_PUBKEY *pubkey; 237c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org /* d=2 hl=2 l= 0 cons: cont: 00 */ 238c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org STACK_OF(X509_ATTRIBUTE) *attributes; /* [ 0 ] */ 239c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org } X509_REQ_INFO; 240c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 241c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgtypedef struct X509_req_st 242c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org { 243c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org X509_REQ_INFO *req_info; 244c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org X509_ALGOR *sig_alg; 245c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org ASN1_BIT_STRING *signature; 246c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org int references; 247c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org } X509_REQ; 248c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 249c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgtypedef struct x509_cinf_st 250c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org { 251c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org ASN1_INTEGER *version; /* [ 0 ] default of v1 */ 252c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org ASN1_INTEGER *serialNumber; 253c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org X509_ALGOR *signature; 254c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org X509_NAME *issuer; 255c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org X509_VAL *validity; 256c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org X509_NAME *subject; 257c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org X509_PUBKEY *key; 258c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org ASN1_BIT_STRING *issuerUID; /* [ 1 ] optional in v2 */ 259c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org ASN1_BIT_STRING *subjectUID; /* [ 2 ] optional in v2 */ 260c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org STACK_OF(X509_EXTENSION) *extensions; /* [ 3 ] optional in v3 */ 261480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org ASN1_ENCODING enc; 262c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org } X509_CINF; 263c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 264c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org/* This stuff is certificate "auxiliary info" 265c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * it contains details which are useful in certificate 266c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * stores and databases. When used this is tagged onto 267c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * the end of the certificate itself 268c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org */ 269c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 270c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgtypedef struct x509_cert_aux_st 271c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org { 272c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org STACK_OF(ASN1_OBJECT) *trust; /* trusted uses */ 273c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org STACK_OF(ASN1_OBJECT) *reject; /* rejected uses */ 274c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org ASN1_UTF8STRING *alias; /* "friendly name" */ 275c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org ASN1_OCTET_STRING *keyid; /* key id of private key */ 276c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org STACK_OF(X509_ALGOR) *other; /* other unspecified info */ 277c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org } X509_CERT_AUX; 278c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 279c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgstruct x509_st 280c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org { 281c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org X509_CINF *cert_info; 282c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org X509_ALGOR *sig_alg; 283c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org ASN1_BIT_STRING *signature; 284c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org int valid; 285c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org int references; 286c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org char *name; 287c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org CRYPTO_EX_DATA ex_data; 288c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org /* These contain copies of various extension values */ 289c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org long ex_pathlen; 290c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org long ex_pcpathlen; 291c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org unsigned long ex_flags; 292c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org unsigned long ex_kusage; 293c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org unsigned long ex_xkusage; 294c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org unsigned long ex_nscert; 295c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org ASN1_OCTET_STRING *skid; 296480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org AUTHORITY_KEYID *akid; 297c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org X509_POLICY_CACHE *policy_cache; 298480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org STACK_OF(DIST_POINT) *crldp; 299480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org STACK_OF(GENERAL_NAME) *altname; 300480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org NAME_CONSTRAINTS *nc; 301c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#ifndef OPENSSL_NO_RFC3779 302c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org STACK_OF(IPAddressFamily) *rfc3779_addr; 303c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org struct ASIdentifiers_st *rfc3779_asid; 304c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#endif 305c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#ifndef OPENSSL_NO_SHA 306c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org unsigned char sha1_hash[SHA_DIGEST_LENGTH]; 307c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#endif 308c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org X509_CERT_AUX *aux; 309c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org } /* X509 */; 310c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 311c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgDECLARE_STACK_OF(X509) 312c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgDECLARE_ASN1_SET_OF(X509) 313c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 314c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org/* This is used for a table of trust checking functions */ 315c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 316c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgtypedef struct x509_trust_st { 317c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org int trust; 318c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org int flags; 319c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org int (*check_trust)(struct x509_trust_st *, X509 *, int); 320c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org char *name; 321c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org int arg1; 322c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org void *arg2; 323c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org} X509_TRUST; 324c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 325c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgDECLARE_STACK_OF(X509_TRUST) 326c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 327c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgtypedef struct x509_cert_pair_st { 328c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org X509 *forward; 329c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org X509 *reverse; 330c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org} X509_CERT_PAIR; 331c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 332c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org/* standard trust ids */ 333c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 334c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_TRUST_DEFAULT -1 /* Only valid in purpose settings */ 335c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 336c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_TRUST_COMPAT 1 337c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_TRUST_SSL_CLIENT 2 338c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_TRUST_SSL_SERVER 3 339c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_TRUST_EMAIL 4 340c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_TRUST_OBJECT_SIGN 5 341c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_TRUST_OCSP_SIGN 6 342c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_TRUST_OCSP_REQUEST 7 343480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org#define X509_TRUST_TSA 8 344c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 345c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org/* Keep these up to date! */ 346c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_TRUST_MIN 1 347480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org#define X509_TRUST_MAX 8 348c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 349c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 350c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org/* trust_flags values */ 351c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_TRUST_DYNAMIC 1 352c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_TRUST_DYNAMIC_NAME 2 353c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 354c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org/* check_trust return codes */ 355c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 356c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_TRUST_TRUSTED 1 357c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_TRUST_REJECTED 2 358c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_TRUST_UNTRUSTED 3 359c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 360c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org/* Flags for X509_print_ex() */ 361c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 362c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_FLAG_COMPAT 0 363c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_FLAG_NO_HEADER 1L 364c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_FLAG_NO_VERSION (1L << 1) 365c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_FLAG_NO_SERIAL (1L << 2) 366c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_FLAG_NO_SIGNAME (1L << 3) 367c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_FLAG_NO_ISSUER (1L << 4) 368c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_FLAG_NO_VALIDITY (1L << 5) 369c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_FLAG_NO_SUBJECT (1L << 6) 370c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_FLAG_NO_PUBKEY (1L << 7) 371c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_FLAG_NO_EXTENSIONS (1L << 8) 372c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_FLAG_NO_SIGDUMP (1L << 9) 373c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_FLAG_NO_AUX (1L << 10) 374c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_FLAG_NO_ATTRIBUTES (1L << 11) 375c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 376c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org/* Flags specific to X509_NAME_print_ex() */ 377c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 378c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org/* The field separator information */ 379c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 380c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define XN_FLAG_SEP_MASK (0xf << 16) 381c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 382c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define XN_FLAG_COMPAT 0 /* Traditional SSLeay: use old X509_NAME_print */ 383c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define XN_FLAG_SEP_COMMA_PLUS (1 << 16) /* RFC2253 ,+ */ 384c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define XN_FLAG_SEP_CPLUS_SPC (2 << 16) /* ,+ spaced: more readable */ 385c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define XN_FLAG_SEP_SPLUS_SPC (3 << 16) /* ;+ spaced */ 386c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define XN_FLAG_SEP_MULTILINE (4 << 16) /* One line per field */ 387c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 388c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define XN_FLAG_DN_REV (1 << 20) /* Reverse DN order */ 389c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 390c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org/* How the field name is shown */ 391c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 392c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define XN_FLAG_FN_MASK (0x3 << 21) 393c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 394c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define XN_FLAG_FN_SN 0 /* Object short name */ 395c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define XN_FLAG_FN_LN (1 << 21) /* Object long name */ 396c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define XN_FLAG_FN_OID (2 << 21) /* Always use OIDs */ 397c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define XN_FLAG_FN_NONE (3 << 21) /* No field names */ 398c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 399c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define XN_FLAG_SPC_EQ (1 << 23) /* Put spaces round '=' */ 400c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 401c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org/* This determines if we dump fields we don't recognise: 402c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * RFC2253 requires this. 403c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org */ 404c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 405c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define XN_FLAG_DUMP_UNKNOWN_FIELDS (1 << 24) 406c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 407c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define XN_FLAG_FN_ALIGN (1 << 25) /* Align field names to 20 characters */ 408c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 409c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org/* Complete set of RFC2253 flags */ 410c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 411c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define XN_FLAG_RFC2253 (ASN1_STRFLGS_RFC2253 | \ 412c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org XN_FLAG_SEP_COMMA_PLUS | \ 413c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org XN_FLAG_DN_REV | \ 414c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org XN_FLAG_FN_SN | \ 415c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org XN_FLAG_DUMP_UNKNOWN_FIELDS) 416c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 417c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org/* readable oneline form */ 418c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 419c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define XN_FLAG_ONELINE (ASN1_STRFLGS_RFC2253 | \ 420c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org ASN1_STRFLGS_ESC_QUOTE | \ 421c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org XN_FLAG_SEP_CPLUS_SPC | \ 422c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org XN_FLAG_SPC_EQ | \ 423c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org XN_FLAG_FN_SN) 424c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 425c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org/* readable multiline form */ 426c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 427c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define XN_FLAG_MULTILINE (ASN1_STRFLGS_ESC_CTRL | \ 428c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org ASN1_STRFLGS_ESC_MSB | \ 429c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org XN_FLAG_SEP_MULTILINE | \ 430c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org XN_FLAG_SPC_EQ | \ 431c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org XN_FLAG_FN_LN | \ 432c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org XN_FLAG_FN_ALIGN) 433c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 434480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.orgstruct x509_revoked_st 435c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org { 436c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org ASN1_INTEGER *serialNumber; 437c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org ASN1_TIME *revocationDate; 438c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org STACK_OF(X509_EXTENSION) /* optional */ *extensions; 439480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org /* Set up if indirect CRL */ 440480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org STACK_OF(GENERAL_NAME) *issuer; 441480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org /* Revocation reason */ 442480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org int reason; 443c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org int sequence; /* load sequence */ 444480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org }; 445c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 446c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgDECLARE_STACK_OF(X509_REVOKED) 447c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgDECLARE_ASN1_SET_OF(X509_REVOKED) 448c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 449c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgtypedef struct X509_crl_info_st 450c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org { 451c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org ASN1_INTEGER *version; 452c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org X509_ALGOR *sig_alg; 453c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org X509_NAME *issuer; 454c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org ASN1_TIME *lastUpdate; 455c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org ASN1_TIME *nextUpdate; 456c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org STACK_OF(X509_REVOKED) *revoked; 457c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org STACK_OF(X509_EXTENSION) /* [0] */ *extensions; 458c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org ASN1_ENCODING enc; 459c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org } X509_CRL_INFO; 460c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 461c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgstruct X509_crl_st 462c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org { 463c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org /* actual signature */ 464c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org X509_CRL_INFO *crl; 465c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org X509_ALGOR *sig_alg; 466c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org ASN1_BIT_STRING *signature; 467c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org int references; 468480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org int flags; 469480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org /* Copies of various extensions */ 470480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org AUTHORITY_KEYID *akid; 471480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org ISSUING_DIST_POINT *idp; 472480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org /* Convenient breakdown of IDP */ 473480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org int idp_flags; 474480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org int idp_reasons; 475480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org /* CRL and base CRL numbers for delta processing */ 476480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org ASN1_INTEGER *crl_number; 477480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org ASN1_INTEGER *base_crl_number; 478480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org#ifndef OPENSSL_NO_SHA 479480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org unsigned char sha1_hash[SHA_DIGEST_LENGTH]; 480480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org#endif 481480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org STACK_OF(GENERAL_NAMES) *issuers; 482480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org const X509_CRL_METHOD *meth; 483480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org void *meth_data; 484c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org } /* X509_CRL */; 485c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 486c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgDECLARE_STACK_OF(X509_CRL) 487c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgDECLARE_ASN1_SET_OF(X509_CRL) 488c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 489c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgtypedef struct private_key_st 490c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org { 491c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org int version; 492c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org /* The PKCS#8 data types */ 493c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org X509_ALGOR *enc_algor; 494c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org ASN1_OCTET_STRING *enc_pkey; /* encrypted pub key */ 495c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 496c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org /* When decrypted, the following will not be NULL */ 497c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org EVP_PKEY *dec_pkey; 498c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 499c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org /* used to encrypt and decrypt */ 500c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org int key_length; 501c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org char *key_data; 502c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org int key_free; /* true if we should auto free key_data */ 503c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 504c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org /* expanded version of 'enc_algor' */ 505c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org EVP_CIPHER_INFO cipher; 506c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 507c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org int references; 508c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org } X509_PKEY; 509c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 510c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#ifndef OPENSSL_NO_EVP 511c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgtypedef struct X509_info_st 512c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org { 513c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org X509 *x509; 514c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org X509_CRL *crl; 515c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org X509_PKEY *x_pkey; 516c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 517c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org EVP_CIPHER_INFO enc_cipher; 518c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org int enc_len; 519c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org char *enc_data; 520c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 521c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org int references; 522c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org } X509_INFO; 523c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 524c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgDECLARE_STACK_OF(X509_INFO) 525c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#endif 526c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 527c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org/* The next 2 structures and their 8 routines were sent to me by 528c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * Pat Richard <patr@x509.com> and are used to manipulate 529c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * Netscapes spki structures - useful if you are writing a CA web page 530c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org */ 531c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgtypedef struct Netscape_spkac_st 532c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org { 533c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org X509_PUBKEY *pubkey; 534c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org ASN1_IA5STRING *challenge; /* challenge sent in atlas >= PR2 */ 535c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org } NETSCAPE_SPKAC; 536c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 537c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgtypedef struct Netscape_spki_st 538c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org { 539c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org NETSCAPE_SPKAC *spkac; /* signed public key and challenge */ 540c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org X509_ALGOR *sig_algor; 541c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org ASN1_BIT_STRING *signature; 542c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org } NETSCAPE_SPKI; 543c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 544c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org/* Netscape certificate sequence structure */ 545c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgtypedef struct Netscape_certificate_sequence 546c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org { 547c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org ASN1_OBJECT *type; 548c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org STACK_OF(X509) *certs; 549c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org } NETSCAPE_CERT_SEQUENCE; 550c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 551c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org/* Unused (and iv length is wrong) 552c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgtypedef struct CBCParameter_st 553c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org { 554c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org unsigned char iv[8]; 555c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org } CBC_PARAM; 556c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org*/ 557c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 558c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org/* Password based encryption structure */ 559c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 560c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgtypedef struct PBEPARAM_st { 561c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgASN1_OCTET_STRING *salt; 562c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgASN1_INTEGER *iter; 563c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org} PBEPARAM; 564c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 565c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org/* Password based encryption V2 structures */ 566c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 567c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgtypedef struct PBE2PARAM_st { 568c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgX509_ALGOR *keyfunc; 569c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgX509_ALGOR *encryption; 570c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org} PBE2PARAM; 571c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 572c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgtypedef struct PBKDF2PARAM_st { 573c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgASN1_TYPE *salt; /* Usually OCTET STRING but could be anything */ 574c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgASN1_INTEGER *iter; 575c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgASN1_INTEGER *keylength; 576c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgX509_ALGOR *prf; 577c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org} PBKDF2PARAM; 578c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 579c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 580c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org/* PKCS#8 private key info structure */ 581c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 582480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.orgstruct pkcs8_priv_key_info_st 583c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org { 584c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org int broken; /* Flag for various broken formats */ 585c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define PKCS8_OK 0 586c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define PKCS8_NO_OCTET 1 587c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define PKCS8_EMBEDDED_PARAM 2 588c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define PKCS8_NS_DB 3 589480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org#define PKCS8_NEG_PRIVKEY 4 590c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org ASN1_INTEGER *version; 591c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org X509_ALGOR *pkeyalg; 592c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org ASN1_TYPE *pkey; /* Should be OCTET STRING but some are broken */ 593c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org STACK_OF(X509_ATTRIBUTE) *attributes; 594480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org }; 595c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 596c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#ifdef __cplusplus 597c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org} 598c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#endif 599c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 600c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#include <openssl/x509_vfy.h> 601c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#include <openssl/pkcs7.h> 602c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 603c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#ifdef __cplusplus 604c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgextern "C" { 605c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#endif 606c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 607c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_EXT_PACK_UNKNOWN 1 608c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_EXT_PACK_STRING 2 609c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 610c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_get_version(x) ASN1_INTEGER_get((x)->cert_info->version) 611c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org/* #define X509_get_serialNumber(x) ((x)->cert_info->serialNumber) */ 612c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_get_notBefore(x) ((x)->cert_info->validity->notBefore) 613c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_get_notAfter(x) ((x)->cert_info->validity->notAfter) 614c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_extract_key(x) X509_get_pubkey(x) /*****/ 615c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_REQ_get_version(x) ASN1_INTEGER_get((x)->req_info->version) 616c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_REQ_get_subject_name(x) ((x)->req_info->subject) 617c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_REQ_extract_key(a) X509_REQ_get_pubkey(a) 618c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_name_cmp(a,b) X509_NAME_cmp((a),(b)) 619c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_get_signature_type(x) EVP_PKEY_type(OBJ_obj2nid((x)->sig_alg->algorithm)) 620c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 621c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_CRL_get_version(x) ASN1_INTEGER_get((x)->crl->version) 622c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_CRL_get_lastUpdate(x) ((x)->crl->lastUpdate) 623c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_CRL_get_nextUpdate(x) ((x)->crl->nextUpdate) 624c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_CRL_get_issuer(x) ((x)->crl->issuer) 625c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_CRL_get_REVOKED(x) ((x)->crl->revoked) 626c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 627480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.orgvoid X509_CRL_set_default_method(const X509_CRL_METHOD *meth); 628480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.orgX509_CRL_METHOD *X509_CRL_METHOD_new( 629480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org int (*crl_init)(X509_CRL *crl), 630480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org int (*crl_free)(X509_CRL *crl), 631480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org int (*crl_lookup)(X509_CRL *crl, X509_REVOKED **ret, 632480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org ASN1_INTEGER *ser, X509_NAME *issuer), 633480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org int (*crl_verify)(X509_CRL *crl, EVP_PKEY *pk)); 634480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.orgvoid X509_CRL_METHOD_free(X509_CRL_METHOD *m); 635480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org 636480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.orgvoid X509_CRL_set_meth_data(X509_CRL *crl, void *dat); 637480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.orgvoid *X509_CRL_get_meth_data(X509_CRL *crl); 638480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org 639c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org/* This one is only used so that a binary form can output, as in 640c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * i2d_X509_NAME(X509_get_X509_PUBKEY(x),&buf) */ 641c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_get_X509_PUBKEY(x) ((x)->cert_info->key) 642c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 643c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 644c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgconst char *X509_verify_cert_error_string(long n); 645c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 646c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#ifndef OPENSSL_NO_EVP 647c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_verify(X509 *a, EVP_PKEY *r); 648c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 649c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_REQ_verify(X509_REQ *a, EVP_PKEY *r); 650c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_CRL_verify(X509_CRL *a, EVP_PKEY *r); 651c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint NETSCAPE_SPKI_verify(NETSCAPE_SPKI *a, EVP_PKEY *r); 652c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 653c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgNETSCAPE_SPKI * NETSCAPE_SPKI_b64_decode(const char *str, int len); 654c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgchar * NETSCAPE_SPKI_b64_encode(NETSCAPE_SPKI *x); 655c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgEVP_PKEY *NETSCAPE_SPKI_get_pubkey(NETSCAPE_SPKI *x); 656c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint NETSCAPE_SPKI_set_pubkey(NETSCAPE_SPKI *x, EVP_PKEY *pkey); 657c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 658c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint NETSCAPE_SPKI_print(BIO *out, NETSCAPE_SPKI *spki); 659c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 6602c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.orgint X509_signature_dump(BIO *bp,const ASN1_STRING *sig, int indent); 661c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_signature_print(BIO *bp,X509_ALGOR *alg, ASN1_STRING *sig); 662c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 663c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_sign(X509 *x, EVP_PKEY *pkey, const EVP_MD *md); 6642c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.orgint X509_sign_ctx(X509 *x, EVP_MD_CTX *ctx); 665c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_REQ_sign(X509_REQ *x, EVP_PKEY *pkey, const EVP_MD *md); 6662c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.orgint X509_REQ_sign_ctx(X509_REQ *x, EVP_MD_CTX *ctx); 667c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_CRL_sign(X509_CRL *x, EVP_PKEY *pkey, const EVP_MD *md); 6682c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.orgint X509_CRL_sign_ctx(X509_CRL *x, EVP_MD_CTX *ctx); 669c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint NETSCAPE_SPKI_sign(NETSCAPE_SPKI *x, EVP_PKEY *pkey, const EVP_MD *md); 670c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 671c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_pubkey_digest(const X509 *data,const EVP_MD *type, 672c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org unsigned char *md, unsigned int *len); 673c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_digest(const X509 *data,const EVP_MD *type, 674c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org unsigned char *md, unsigned int *len); 675c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_CRL_digest(const X509_CRL *data,const EVP_MD *type, 676c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org unsigned char *md, unsigned int *len); 677c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_REQ_digest(const X509_REQ *data,const EVP_MD *type, 678c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org unsigned char *md, unsigned int *len); 679c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_NAME_digest(const X509_NAME *data,const EVP_MD *type, 680c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org unsigned char *md, unsigned int *len); 681c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#endif 682c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 683c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#ifndef OPENSSL_NO_FP_API 684c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgX509 *d2i_X509_fp(FILE *fp, X509 **x509); 685c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint i2d_X509_fp(FILE *fp,X509 *x509); 686c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgX509_CRL *d2i_X509_CRL_fp(FILE *fp,X509_CRL **crl); 687c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint i2d_X509_CRL_fp(FILE *fp,X509_CRL *crl); 688c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgX509_REQ *d2i_X509_REQ_fp(FILE *fp,X509_REQ **req); 689c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint i2d_X509_REQ_fp(FILE *fp,X509_REQ *req); 690c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#ifndef OPENSSL_NO_RSA 691c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgRSA *d2i_RSAPrivateKey_fp(FILE *fp,RSA **rsa); 692c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint i2d_RSAPrivateKey_fp(FILE *fp,RSA *rsa); 693c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgRSA *d2i_RSAPublicKey_fp(FILE *fp,RSA **rsa); 694c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint i2d_RSAPublicKey_fp(FILE *fp,RSA *rsa); 695c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgRSA *d2i_RSA_PUBKEY_fp(FILE *fp,RSA **rsa); 696c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint i2d_RSA_PUBKEY_fp(FILE *fp,RSA *rsa); 697c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#endif 698c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#ifndef OPENSSL_NO_DSA 699c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgDSA *d2i_DSA_PUBKEY_fp(FILE *fp, DSA **dsa); 700c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint i2d_DSA_PUBKEY_fp(FILE *fp, DSA *dsa); 701c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgDSA *d2i_DSAPrivateKey_fp(FILE *fp, DSA **dsa); 702c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint i2d_DSAPrivateKey_fp(FILE *fp, DSA *dsa); 703c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#endif 704c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#ifndef OPENSSL_NO_EC 705c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgEC_KEY *d2i_EC_PUBKEY_fp(FILE *fp, EC_KEY **eckey); 706c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint i2d_EC_PUBKEY_fp(FILE *fp, EC_KEY *eckey); 707c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgEC_KEY *d2i_ECPrivateKey_fp(FILE *fp, EC_KEY **eckey); 708c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint i2d_ECPrivateKey_fp(FILE *fp, EC_KEY *eckey); 709c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#endif 710c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgX509_SIG *d2i_PKCS8_fp(FILE *fp,X509_SIG **p8); 711c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint i2d_PKCS8_fp(FILE *fp,X509_SIG *p8); 712c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgPKCS8_PRIV_KEY_INFO *d2i_PKCS8_PRIV_KEY_INFO_fp(FILE *fp, 713c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org PKCS8_PRIV_KEY_INFO **p8inf); 714c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint i2d_PKCS8_PRIV_KEY_INFO_fp(FILE *fp,PKCS8_PRIV_KEY_INFO *p8inf); 715c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint i2d_PKCS8PrivateKeyInfo_fp(FILE *fp, EVP_PKEY *key); 716c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint i2d_PrivateKey_fp(FILE *fp, EVP_PKEY *pkey); 717c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgEVP_PKEY *d2i_PrivateKey_fp(FILE *fp, EVP_PKEY **a); 718c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint i2d_PUBKEY_fp(FILE *fp, EVP_PKEY *pkey); 719c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgEVP_PKEY *d2i_PUBKEY_fp(FILE *fp, EVP_PKEY **a); 720c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#endif 721c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 722c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#ifndef OPENSSL_NO_BIO 723c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgX509 *d2i_X509_bio(BIO *bp,X509 **x509); 724c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint i2d_X509_bio(BIO *bp,X509 *x509); 725c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgX509_CRL *d2i_X509_CRL_bio(BIO *bp,X509_CRL **crl); 726c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint i2d_X509_CRL_bio(BIO *bp,X509_CRL *crl); 727c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgX509_REQ *d2i_X509_REQ_bio(BIO *bp,X509_REQ **req); 728c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint i2d_X509_REQ_bio(BIO *bp,X509_REQ *req); 729c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#ifndef OPENSSL_NO_RSA 730c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgRSA *d2i_RSAPrivateKey_bio(BIO *bp,RSA **rsa); 731c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint i2d_RSAPrivateKey_bio(BIO *bp,RSA *rsa); 732c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgRSA *d2i_RSAPublicKey_bio(BIO *bp,RSA **rsa); 733c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint i2d_RSAPublicKey_bio(BIO *bp,RSA *rsa); 734c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgRSA *d2i_RSA_PUBKEY_bio(BIO *bp,RSA **rsa); 735c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint i2d_RSA_PUBKEY_bio(BIO *bp,RSA *rsa); 736c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#endif 737c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#ifndef OPENSSL_NO_DSA 738c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgDSA *d2i_DSA_PUBKEY_bio(BIO *bp, DSA **dsa); 739c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint i2d_DSA_PUBKEY_bio(BIO *bp, DSA *dsa); 740c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgDSA *d2i_DSAPrivateKey_bio(BIO *bp, DSA **dsa); 741c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint i2d_DSAPrivateKey_bio(BIO *bp, DSA *dsa); 742c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#endif 743c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#ifndef OPENSSL_NO_EC 744c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgEC_KEY *d2i_EC_PUBKEY_bio(BIO *bp, EC_KEY **eckey); 745c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint i2d_EC_PUBKEY_bio(BIO *bp, EC_KEY *eckey); 746c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgEC_KEY *d2i_ECPrivateKey_bio(BIO *bp, EC_KEY **eckey); 747c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint i2d_ECPrivateKey_bio(BIO *bp, EC_KEY *eckey); 748c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#endif 749c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgX509_SIG *d2i_PKCS8_bio(BIO *bp,X509_SIG **p8); 750c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint i2d_PKCS8_bio(BIO *bp,X509_SIG *p8); 751c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgPKCS8_PRIV_KEY_INFO *d2i_PKCS8_PRIV_KEY_INFO_bio(BIO *bp, 752c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org PKCS8_PRIV_KEY_INFO **p8inf); 753c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint i2d_PKCS8_PRIV_KEY_INFO_bio(BIO *bp,PKCS8_PRIV_KEY_INFO *p8inf); 754c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint i2d_PKCS8PrivateKeyInfo_bio(BIO *bp, EVP_PKEY *key); 755c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint i2d_PrivateKey_bio(BIO *bp, EVP_PKEY *pkey); 756c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgEVP_PKEY *d2i_PrivateKey_bio(BIO *bp, EVP_PKEY **a); 757c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint i2d_PUBKEY_bio(BIO *bp, EVP_PKEY *pkey); 758c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgEVP_PKEY *d2i_PUBKEY_bio(BIO *bp, EVP_PKEY **a); 759c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#endif 760c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 761c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgX509 *X509_dup(X509 *x509); 762c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgX509_ATTRIBUTE *X509_ATTRIBUTE_dup(X509_ATTRIBUTE *xa); 763c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgX509_EXTENSION *X509_EXTENSION_dup(X509_EXTENSION *ex); 764c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgX509_CRL *X509_CRL_dup(X509_CRL *crl); 765c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgX509_REQ *X509_REQ_dup(X509_REQ *req); 766c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgX509_ALGOR *X509_ALGOR_dup(X509_ALGOR *xn); 767c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_ALGOR_set0(X509_ALGOR *alg, ASN1_OBJECT *aobj, int ptype, void *pval); 768c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgvoid X509_ALGOR_get0(ASN1_OBJECT **paobj, int *pptype, void **ppval, 769c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org X509_ALGOR *algor); 7702c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.orgvoid X509_ALGOR_set_md(X509_ALGOR *alg, const EVP_MD *md); 771c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 772c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgX509_NAME *X509_NAME_dup(X509_NAME *xn); 773c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgX509_NAME_ENTRY *X509_NAME_ENTRY_dup(X509_NAME_ENTRY *ne); 774c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 775480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.orgint X509_cmp_time(const ASN1_TIME *s, time_t *t); 776480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.orgint X509_cmp_current_time(const ASN1_TIME *s); 777c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgASN1_TIME * X509_time_adj(ASN1_TIME *s, long adj, time_t *t); 778480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.orgASN1_TIME * X509_time_adj_ex(ASN1_TIME *s, 779480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org int offset_day, long offset_sec, time_t *t); 780c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgASN1_TIME * X509_gmtime_adj(ASN1_TIME *s, long adj); 781c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 782c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgconst char * X509_get_default_cert_area(void ); 783c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgconst char * X509_get_default_cert_dir(void ); 784c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgconst char * X509_get_default_cert_file(void ); 785c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgconst char * X509_get_default_cert_dir_env(void ); 786c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgconst char * X509_get_default_cert_file_env(void ); 787c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgconst char * X509_get_default_private_dir(void ); 788c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 789c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgX509_REQ * X509_to_X509_REQ(X509 *x, EVP_PKEY *pkey, const EVP_MD *md); 790c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgX509 * X509_REQ_to_X509(X509_REQ *r, int days,EVP_PKEY *pkey); 791c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 792c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgDECLARE_ASN1_FUNCTIONS(X509_ALGOR) 793c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgDECLARE_ASN1_ENCODE_FUNCTIONS(X509_ALGORS, X509_ALGORS, X509_ALGORS) 794c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgDECLARE_ASN1_FUNCTIONS(X509_VAL) 795c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 796c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgDECLARE_ASN1_FUNCTIONS(X509_PUBKEY) 797c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 798c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_PUBKEY_set(X509_PUBKEY **x, EVP_PKEY *pkey); 799c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgEVP_PKEY * X509_PUBKEY_get(X509_PUBKEY *key); 800c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_get_pubkey_parameters(EVP_PKEY *pkey, 801c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org STACK_OF(X509) *chain); 802c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint i2d_PUBKEY(EVP_PKEY *a,unsigned char **pp); 803c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgEVP_PKEY * d2i_PUBKEY(EVP_PKEY **a,const unsigned char **pp, 804c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org long length); 805c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#ifndef OPENSSL_NO_RSA 806c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint i2d_RSA_PUBKEY(RSA *a,unsigned char **pp); 807c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgRSA * d2i_RSA_PUBKEY(RSA **a,const unsigned char **pp, 808c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org long length); 809c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#endif 810c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#ifndef OPENSSL_NO_DSA 811c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint i2d_DSA_PUBKEY(DSA *a,unsigned char **pp); 812c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgDSA * d2i_DSA_PUBKEY(DSA **a,const unsigned char **pp, 813c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org long length); 814c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#endif 815c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#ifndef OPENSSL_NO_EC 816c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint i2d_EC_PUBKEY(EC_KEY *a, unsigned char **pp); 817c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgEC_KEY *d2i_EC_PUBKEY(EC_KEY **a, const unsigned char **pp, 818c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org long length); 819c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#endif 820c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 821c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgDECLARE_ASN1_FUNCTIONS(X509_SIG) 822c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgDECLARE_ASN1_FUNCTIONS(X509_REQ_INFO) 823c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgDECLARE_ASN1_FUNCTIONS(X509_REQ) 824c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 825c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgDECLARE_ASN1_FUNCTIONS(X509_ATTRIBUTE) 826c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgX509_ATTRIBUTE *X509_ATTRIBUTE_create(int nid, int atrtype, void *value); 827c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 828c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgDECLARE_ASN1_FUNCTIONS(X509_EXTENSION) 829c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgDECLARE_ASN1_ENCODE_FUNCTIONS(X509_EXTENSIONS, X509_EXTENSIONS, X509_EXTENSIONS) 830c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 831c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgDECLARE_ASN1_FUNCTIONS(X509_NAME_ENTRY) 832c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 833c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgDECLARE_ASN1_FUNCTIONS(X509_NAME) 834c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 835c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_NAME_set(X509_NAME **xn, X509_NAME *name); 836c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 837c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgDECLARE_ASN1_FUNCTIONS(X509_CINF) 838c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 839c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgDECLARE_ASN1_FUNCTIONS(X509) 840c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgDECLARE_ASN1_FUNCTIONS(X509_CERT_AUX) 841c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 842c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgDECLARE_ASN1_FUNCTIONS(X509_CERT_PAIR) 843c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 844c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new *new_func, 845c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func); 846c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_set_ex_data(X509 *r, int idx, void *arg); 847c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgvoid *X509_get_ex_data(X509 *r, int idx); 848c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint i2d_X509_AUX(X509 *a,unsigned char **pp); 849c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgX509 * d2i_X509_AUX(X509 **a,const unsigned char **pp,long length); 850c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 851c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_alias_set1(X509 *x, unsigned char *name, int len); 852c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_keyid_set1(X509 *x, unsigned char *id, int len); 853c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgunsigned char * X509_alias_get0(X509 *x, int *len); 854c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgunsigned char * X509_keyid_get0(X509 *x, int *len); 855c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint (*X509_TRUST_set_default(int (*trust)(int , X509 *, int)))(int, X509 *, int); 856c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_TRUST_set(int *t, int trust); 857c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_add1_trust_object(X509 *x, ASN1_OBJECT *obj); 858c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_add1_reject_object(X509 *x, ASN1_OBJECT *obj); 859c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgvoid X509_trust_clear(X509 *x); 860c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgvoid X509_reject_clear(X509 *x); 861c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 862c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgDECLARE_ASN1_FUNCTIONS(X509_REVOKED) 863c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgDECLARE_ASN1_FUNCTIONS(X509_CRL_INFO) 864c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgDECLARE_ASN1_FUNCTIONS(X509_CRL) 865c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 866c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_CRL_add0_revoked(X509_CRL *crl, X509_REVOKED *rev); 867480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.orgint X509_CRL_get0_by_serial(X509_CRL *crl, 868480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org X509_REVOKED **ret, ASN1_INTEGER *serial); 869480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.orgint X509_CRL_get0_by_cert(X509_CRL *crl, X509_REVOKED **ret, X509 *x); 870c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 871c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgX509_PKEY * X509_PKEY_new(void ); 872c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgvoid X509_PKEY_free(X509_PKEY *a); 873c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint i2d_X509_PKEY(X509_PKEY *a,unsigned char **pp); 874c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgX509_PKEY * d2i_X509_PKEY(X509_PKEY **a,const unsigned char **pp,long length); 875c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 876c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgDECLARE_ASN1_FUNCTIONS(NETSCAPE_SPKI) 877c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgDECLARE_ASN1_FUNCTIONS(NETSCAPE_SPKAC) 878c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgDECLARE_ASN1_FUNCTIONS(NETSCAPE_CERT_SEQUENCE) 879c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 880c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#ifndef OPENSSL_NO_EVP 881c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgX509_INFO * X509_INFO_new(void); 882c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgvoid X509_INFO_free(X509_INFO *a); 883c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgchar * X509_NAME_oneline(X509_NAME *a,char *buf,int size); 884c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 885c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint ASN1_verify(i2d_of_void *i2d, X509_ALGOR *algor1, 886c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org ASN1_BIT_STRING *signature,char *data,EVP_PKEY *pkey); 887c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 888c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint ASN1_digest(i2d_of_void *i2d,const EVP_MD *type,char *data, 889c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org unsigned char *md,unsigned int *len); 890c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 891c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint ASN1_sign(i2d_of_void *i2d, X509_ALGOR *algor1, 892c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org X509_ALGOR *algor2, ASN1_BIT_STRING *signature, 893c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org char *data,EVP_PKEY *pkey, const EVP_MD *type); 894c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 895c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint ASN1_item_digest(const ASN1_ITEM *it,const EVP_MD *type,void *data, 896c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org unsigned char *md,unsigned int *len); 897c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 898c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint ASN1_item_verify(const ASN1_ITEM *it, X509_ALGOR *algor1, 899c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org ASN1_BIT_STRING *signature,void *data,EVP_PKEY *pkey); 900c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 901c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint ASN1_item_sign(const ASN1_ITEM *it, X509_ALGOR *algor1, X509_ALGOR *algor2, 902c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org ASN1_BIT_STRING *signature, 903c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org void *data, EVP_PKEY *pkey, const EVP_MD *type); 9042c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.orgint ASN1_item_sign_ctx(const ASN1_ITEM *it, 9052c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org X509_ALGOR *algor1, X509_ALGOR *algor2, 9062c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org ASN1_BIT_STRING *signature, void *asn, EVP_MD_CTX *ctx); 907c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#endif 908c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 909c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_set_version(X509 *x,long version); 910c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_set_serialNumber(X509 *x, ASN1_INTEGER *serial); 911c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgASN1_INTEGER * X509_get_serialNumber(X509 *x); 912c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_set_issuer_name(X509 *x, X509_NAME *name); 913c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgX509_NAME * X509_get_issuer_name(X509 *a); 914c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_set_subject_name(X509 *x, X509_NAME *name); 915c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgX509_NAME * X509_get_subject_name(X509 *a); 916480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.orgint X509_set_notBefore(X509 *x, const ASN1_TIME *tm); 917480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.orgint X509_set_notAfter(X509 *x, const ASN1_TIME *tm); 918c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_set_pubkey(X509 *x, EVP_PKEY *pkey); 919c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgEVP_PKEY * X509_get_pubkey(X509 *x); 920c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgASN1_BIT_STRING * X509_get0_pubkey_bitstr(const X509 *x); 921c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_certificate_type(X509 *x,EVP_PKEY *pubkey /* optional */); 922c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 923c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_REQ_set_version(X509_REQ *x,long version); 924c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_REQ_set_subject_name(X509_REQ *req,X509_NAME *name); 925c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_REQ_set_pubkey(X509_REQ *x, EVP_PKEY *pkey); 926c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgEVP_PKEY * X509_REQ_get_pubkey(X509_REQ *req); 927c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_REQ_extension_nid(int nid); 928c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint * X509_REQ_get_extension_nids(void); 929c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgvoid X509_REQ_set_extension_nids(int *nids); 930c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgSTACK_OF(X509_EXTENSION) *X509_REQ_get_extensions(X509_REQ *req); 931c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_REQ_add_extensions_nid(X509_REQ *req, STACK_OF(X509_EXTENSION) *exts, 932c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org int nid); 933c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_REQ_add_extensions(X509_REQ *req, STACK_OF(X509_EXTENSION) *exts); 934c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_REQ_get_attr_count(const X509_REQ *req); 935c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_REQ_get_attr_by_NID(const X509_REQ *req, int nid, 936c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org int lastpos); 937c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_REQ_get_attr_by_OBJ(const X509_REQ *req, ASN1_OBJECT *obj, 938c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org int lastpos); 939c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgX509_ATTRIBUTE *X509_REQ_get_attr(const X509_REQ *req, int loc); 940c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgX509_ATTRIBUTE *X509_REQ_delete_attr(X509_REQ *req, int loc); 941c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_REQ_add1_attr(X509_REQ *req, X509_ATTRIBUTE *attr); 942c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_REQ_add1_attr_by_OBJ(X509_REQ *req, 943c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org const ASN1_OBJECT *obj, int type, 944c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org const unsigned char *bytes, int len); 945c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_REQ_add1_attr_by_NID(X509_REQ *req, 946c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org int nid, int type, 947c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org const unsigned char *bytes, int len); 948c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_REQ_add1_attr_by_txt(X509_REQ *req, 949c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org const char *attrname, int type, 950c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org const unsigned char *bytes, int len); 951c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 952c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_CRL_set_version(X509_CRL *x, long version); 953c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_CRL_set_issuer_name(X509_CRL *x, X509_NAME *name); 954480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.orgint X509_CRL_set_lastUpdate(X509_CRL *x, const ASN1_TIME *tm); 955480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.orgint X509_CRL_set_nextUpdate(X509_CRL *x, const ASN1_TIME *tm); 956c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_CRL_sort(X509_CRL *crl); 957c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 958c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_REVOKED_set_serialNumber(X509_REVOKED *x, ASN1_INTEGER *serial); 959c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_REVOKED_set_revocationDate(X509_REVOKED *r, ASN1_TIME *tm); 960c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 961c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_REQ_check_private_key(X509_REQ *x509,EVP_PKEY *pkey); 962c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 963c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_check_private_key(X509 *x509,EVP_PKEY *pkey); 964c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 965c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_issuer_and_serial_cmp(const X509 *a, const X509 *b); 966c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgunsigned long X509_issuer_and_serial_hash(X509 *a); 967c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 968c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_issuer_name_cmp(const X509 *a, const X509 *b); 969c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgunsigned long X509_issuer_name_hash(X509 *a); 970c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 971c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_subject_name_cmp(const X509 *a, const X509 *b); 972c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgunsigned long X509_subject_name_hash(X509 *x); 973c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 974480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org#ifndef OPENSSL_NO_MD5 975480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.orgunsigned long X509_issuer_name_hash_old(X509 *a); 976480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.orgunsigned long X509_subject_name_hash_old(X509 *x); 977480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org#endif 978480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org 979c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_cmp(const X509 *a, const X509 *b); 980c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_NAME_cmp(const X509_NAME *a, const X509_NAME *b); 981c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgunsigned long X509_NAME_hash(X509_NAME *x); 982480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.orgunsigned long X509_NAME_hash_old(X509_NAME *x); 983c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 984c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_CRL_cmp(const X509_CRL *a, const X509_CRL *b); 985480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.orgint X509_CRL_match(const X509_CRL *a, const X509_CRL *b); 986c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#ifndef OPENSSL_NO_FP_API 987c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_print_ex_fp(FILE *bp,X509 *x, unsigned long nmflag, unsigned long cflag); 988c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_print_fp(FILE *bp,X509 *x); 989c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_CRL_print_fp(FILE *bp,X509_CRL *x); 990c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_REQ_print_fp(FILE *bp,X509_REQ *req); 991c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_NAME_print_ex_fp(FILE *fp, X509_NAME *nm, int indent, unsigned long flags); 992c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#endif 993c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 994c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#ifndef OPENSSL_NO_BIO 995c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_NAME_print(BIO *bp, X509_NAME *name, int obase); 996c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_NAME_print_ex(BIO *out, X509_NAME *nm, int indent, unsigned long flags); 997c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_print_ex(BIO *bp,X509 *x, unsigned long nmflag, unsigned long cflag); 998c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_print(BIO *bp,X509 *x); 999c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_ocspid_print(BIO *bp,X509 *x); 1000c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_CERT_AUX_print(BIO *bp,X509_CERT_AUX *x, int indent); 1001c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_CRL_print(BIO *bp,X509_CRL *x); 1002c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_REQ_print_ex(BIO *bp, X509_REQ *x, unsigned long nmflag, unsigned long cflag); 1003c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_REQ_print(BIO *bp,X509_REQ *req); 1004c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#endif 1005c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 1006c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_NAME_entry_count(X509_NAME *name); 1007c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_NAME_get_text_by_NID(X509_NAME *name, int nid, 1008c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org char *buf,int len); 1009c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_NAME_get_text_by_OBJ(X509_NAME *name, ASN1_OBJECT *obj, 1010c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org char *buf,int len); 1011c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 1012c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org/* NOTE: you should be passsing -1, not 0 as lastpos. The functions that use 1013c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * lastpos, search after that position on. */ 1014c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_NAME_get_index_by_NID(X509_NAME *name,int nid,int lastpos); 1015c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_NAME_get_index_by_OBJ(X509_NAME *name,ASN1_OBJECT *obj, 1016c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org int lastpos); 1017c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgX509_NAME_ENTRY *X509_NAME_get_entry(X509_NAME *name, int loc); 1018c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgX509_NAME_ENTRY *X509_NAME_delete_entry(X509_NAME *name, int loc); 1019c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_NAME_add_entry(X509_NAME *name,X509_NAME_ENTRY *ne, 1020c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org int loc, int set); 1021c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_NAME_add_entry_by_OBJ(X509_NAME *name, ASN1_OBJECT *obj, int type, 1022c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org unsigned char *bytes, int len, int loc, int set); 1023c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_NAME_add_entry_by_NID(X509_NAME *name, int nid, int type, 1024c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org unsigned char *bytes, int len, int loc, int set); 1025c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgX509_NAME_ENTRY *X509_NAME_ENTRY_create_by_txt(X509_NAME_ENTRY **ne, 1026c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org const char *field, int type, const unsigned char *bytes, int len); 1027c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgX509_NAME_ENTRY *X509_NAME_ENTRY_create_by_NID(X509_NAME_ENTRY **ne, int nid, 1028c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org int type,unsigned char *bytes, int len); 1029c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_NAME_add_entry_by_txt(X509_NAME *name, const char *field, int type, 1030c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org const unsigned char *bytes, int len, int loc, int set); 1031c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgX509_NAME_ENTRY *X509_NAME_ENTRY_create_by_OBJ(X509_NAME_ENTRY **ne, 1032c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org ASN1_OBJECT *obj, int type,const unsigned char *bytes, 1033c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org int len); 1034c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_NAME_ENTRY_set_object(X509_NAME_ENTRY *ne, 1035c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org ASN1_OBJECT *obj); 1036c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_NAME_ENTRY_set_data(X509_NAME_ENTRY *ne, int type, 1037c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org const unsigned char *bytes, int len); 1038c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgASN1_OBJECT * X509_NAME_ENTRY_get_object(X509_NAME_ENTRY *ne); 1039c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgASN1_STRING * X509_NAME_ENTRY_get_data(X509_NAME_ENTRY *ne); 1040c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 1041c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509v3_get_ext_count(const STACK_OF(X509_EXTENSION) *x); 1042c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509v3_get_ext_by_NID(const STACK_OF(X509_EXTENSION) *x, 1043c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org int nid, int lastpos); 1044c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509v3_get_ext_by_OBJ(const STACK_OF(X509_EXTENSION) *x, 1045c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org ASN1_OBJECT *obj,int lastpos); 1046c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509v3_get_ext_by_critical(const STACK_OF(X509_EXTENSION) *x, 1047c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org int crit, int lastpos); 1048c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgX509_EXTENSION *X509v3_get_ext(const STACK_OF(X509_EXTENSION) *x, int loc); 1049c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgX509_EXTENSION *X509v3_delete_ext(STACK_OF(X509_EXTENSION) *x, int loc); 1050c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgSTACK_OF(X509_EXTENSION) *X509v3_add_ext(STACK_OF(X509_EXTENSION) **x, 1051c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org X509_EXTENSION *ex, int loc); 1052c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 1053c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_get_ext_count(X509 *x); 1054c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_get_ext_by_NID(X509 *x, int nid, int lastpos); 1055c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_get_ext_by_OBJ(X509 *x,ASN1_OBJECT *obj,int lastpos); 1056c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_get_ext_by_critical(X509 *x, int crit, int lastpos); 1057c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgX509_EXTENSION *X509_get_ext(X509 *x, int loc); 1058c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgX509_EXTENSION *X509_delete_ext(X509 *x, int loc); 1059c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_add_ext(X509 *x, X509_EXTENSION *ex, int loc); 1060c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgvoid * X509_get_ext_d2i(X509 *x, int nid, int *crit, int *idx); 1061c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_add1_ext_i2d(X509 *x, int nid, void *value, int crit, 1062c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org unsigned long flags); 1063c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 1064c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_CRL_get_ext_count(X509_CRL *x); 1065c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_CRL_get_ext_by_NID(X509_CRL *x, int nid, int lastpos); 1066c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_CRL_get_ext_by_OBJ(X509_CRL *x,ASN1_OBJECT *obj,int lastpos); 1067c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_CRL_get_ext_by_critical(X509_CRL *x, int crit, int lastpos); 1068c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgX509_EXTENSION *X509_CRL_get_ext(X509_CRL *x, int loc); 1069c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgX509_EXTENSION *X509_CRL_delete_ext(X509_CRL *x, int loc); 1070c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_CRL_add_ext(X509_CRL *x, X509_EXTENSION *ex, int loc); 1071c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgvoid * X509_CRL_get_ext_d2i(X509_CRL *x, int nid, int *crit, int *idx); 1072c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_CRL_add1_ext_i2d(X509_CRL *x, int nid, void *value, int crit, 1073c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org unsigned long flags); 1074c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 1075c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_REVOKED_get_ext_count(X509_REVOKED *x); 1076c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_REVOKED_get_ext_by_NID(X509_REVOKED *x, int nid, int lastpos); 1077c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_REVOKED_get_ext_by_OBJ(X509_REVOKED *x,ASN1_OBJECT *obj,int lastpos); 1078c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_REVOKED_get_ext_by_critical(X509_REVOKED *x, int crit, int lastpos); 1079c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgX509_EXTENSION *X509_REVOKED_get_ext(X509_REVOKED *x, int loc); 1080c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgX509_EXTENSION *X509_REVOKED_delete_ext(X509_REVOKED *x, int loc); 1081c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_REVOKED_add_ext(X509_REVOKED *x, X509_EXTENSION *ex, int loc); 1082c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgvoid * X509_REVOKED_get_ext_d2i(X509_REVOKED *x, int nid, int *crit, int *idx); 1083c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_REVOKED_add1_ext_i2d(X509_REVOKED *x, int nid, void *value, int crit, 1084c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org unsigned long flags); 1085c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 1086c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgX509_EXTENSION *X509_EXTENSION_create_by_NID(X509_EXTENSION **ex, 1087c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org int nid, int crit, ASN1_OCTET_STRING *data); 1088c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgX509_EXTENSION *X509_EXTENSION_create_by_OBJ(X509_EXTENSION **ex, 1089c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org ASN1_OBJECT *obj,int crit,ASN1_OCTET_STRING *data); 1090c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_EXTENSION_set_object(X509_EXTENSION *ex,ASN1_OBJECT *obj); 1091c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_EXTENSION_set_critical(X509_EXTENSION *ex, int crit); 1092c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_EXTENSION_set_data(X509_EXTENSION *ex, 1093c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org ASN1_OCTET_STRING *data); 1094c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgASN1_OBJECT * X509_EXTENSION_get_object(X509_EXTENSION *ex); 1095c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgASN1_OCTET_STRING *X509_EXTENSION_get_data(X509_EXTENSION *ne); 1096c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_EXTENSION_get_critical(X509_EXTENSION *ex); 1097c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 1098c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509at_get_attr_count(const STACK_OF(X509_ATTRIBUTE) *x); 1099c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509at_get_attr_by_NID(const STACK_OF(X509_ATTRIBUTE) *x, int nid, 1100c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org int lastpos); 1101c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509at_get_attr_by_OBJ(const STACK_OF(X509_ATTRIBUTE) *sk, ASN1_OBJECT *obj, 1102c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org int lastpos); 1103c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgX509_ATTRIBUTE *X509at_get_attr(const STACK_OF(X509_ATTRIBUTE) *x, int loc); 1104c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgX509_ATTRIBUTE *X509at_delete_attr(STACK_OF(X509_ATTRIBUTE) *x, int loc); 1105c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgSTACK_OF(X509_ATTRIBUTE) *X509at_add1_attr(STACK_OF(X509_ATTRIBUTE) **x, 1106c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org X509_ATTRIBUTE *attr); 1107c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgSTACK_OF(X509_ATTRIBUTE) *X509at_add1_attr_by_OBJ(STACK_OF(X509_ATTRIBUTE) **x, 1108c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org const ASN1_OBJECT *obj, int type, 1109c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org const unsigned char *bytes, int len); 1110c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgSTACK_OF(X509_ATTRIBUTE) *X509at_add1_attr_by_NID(STACK_OF(X509_ATTRIBUTE) **x, 1111c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org int nid, int type, 1112c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org const unsigned char *bytes, int len); 1113c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgSTACK_OF(X509_ATTRIBUTE) *X509at_add1_attr_by_txt(STACK_OF(X509_ATTRIBUTE) **x, 1114c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org const char *attrname, int type, 1115c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org const unsigned char *bytes, int len); 1116c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgvoid *X509at_get0_data_by_OBJ(STACK_OF(X509_ATTRIBUTE) *x, 1117c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org ASN1_OBJECT *obj, int lastpos, int type); 1118c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgX509_ATTRIBUTE *X509_ATTRIBUTE_create_by_NID(X509_ATTRIBUTE **attr, int nid, 1119c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org int atrtype, const void *data, int len); 1120c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgX509_ATTRIBUTE *X509_ATTRIBUTE_create_by_OBJ(X509_ATTRIBUTE **attr, 1121c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org const ASN1_OBJECT *obj, int atrtype, const void *data, int len); 1122c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgX509_ATTRIBUTE *X509_ATTRIBUTE_create_by_txt(X509_ATTRIBUTE **attr, 1123c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org const char *atrname, int type, const unsigned char *bytes, int len); 1124c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_ATTRIBUTE_set1_object(X509_ATTRIBUTE *attr, const ASN1_OBJECT *obj); 1125c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_ATTRIBUTE_set1_data(X509_ATTRIBUTE *attr, int attrtype, const void *data, int len); 1126c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgvoid *X509_ATTRIBUTE_get0_data(X509_ATTRIBUTE *attr, int idx, 1127c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org int atrtype, void *data); 1128c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_ATTRIBUTE_count(X509_ATTRIBUTE *attr); 1129c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgASN1_OBJECT *X509_ATTRIBUTE_get0_object(X509_ATTRIBUTE *attr); 1130c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgASN1_TYPE *X509_ATTRIBUTE_get0_type(X509_ATTRIBUTE *attr, int idx); 1131c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 1132c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint EVP_PKEY_get_attr_count(const EVP_PKEY *key); 1133c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint EVP_PKEY_get_attr_by_NID(const EVP_PKEY *key, int nid, 1134c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org int lastpos); 1135c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint EVP_PKEY_get_attr_by_OBJ(const EVP_PKEY *key, ASN1_OBJECT *obj, 1136c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org int lastpos); 1137c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgX509_ATTRIBUTE *EVP_PKEY_get_attr(const EVP_PKEY *key, int loc); 1138c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgX509_ATTRIBUTE *EVP_PKEY_delete_attr(EVP_PKEY *key, int loc); 1139c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint EVP_PKEY_add1_attr(EVP_PKEY *key, X509_ATTRIBUTE *attr); 1140c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint EVP_PKEY_add1_attr_by_OBJ(EVP_PKEY *key, 1141c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org const ASN1_OBJECT *obj, int type, 1142c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org const unsigned char *bytes, int len); 1143c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint EVP_PKEY_add1_attr_by_NID(EVP_PKEY *key, 1144c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org int nid, int type, 1145c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org const unsigned char *bytes, int len); 1146c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint EVP_PKEY_add1_attr_by_txt(EVP_PKEY *key, 1147c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org const char *attrname, int type, 1148c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org const unsigned char *bytes, int len); 1149c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 1150c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_verify_cert(X509_STORE_CTX *ctx); 1151c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 1152c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org/* lookup a cert from a X509 STACK */ 1153c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgX509 *X509_find_by_issuer_and_serial(STACK_OF(X509) *sk,X509_NAME *name, 1154c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org ASN1_INTEGER *serial); 1155c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgX509 *X509_find_by_subject(STACK_OF(X509) *sk,X509_NAME *name); 1156c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 1157c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgDECLARE_ASN1_FUNCTIONS(PBEPARAM) 1158c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgDECLARE_ASN1_FUNCTIONS(PBE2PARAM) 1159c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgDECLARE_ASN1_FUNCTIONS(PBKDF2PARAM) 1160c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 1161480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.orgint PKCS5_pbe_set0_algor(X509_ALGOR *algor, int alg, int iter, 1162480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org const unsigned char *salt, int saltlen); 1163480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org 1164480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.orgX509_ALGOR *PKCS5_pbe_set(int alg, int iter, 1165480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org const unsigned char *salt, int saltlen); 1166c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgX509_ALGOR *PKCS5_pbe2_set(const EVP_CIPHER *cipher, int iter, 1167c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org unsigned char *salt, int saltlen); 1168480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.orgX509_ALGOR *PKCS5_pbe2_set_iv(const EVP_CIPHER *cipher, int iter, 1169480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org unsigned char *salt, int saltlen, 1170480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org unsigned char *aiv, int prf_nid); 1171c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 11722c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.orgX509_ALGOR *PKCS5_pbkdf2_set(int iter, unsigned char *salt, int saltlen, 11732c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org int prf_nid, int keylen); 11742c4508dfe2bc5b6296c01114ed11ddc64b7718c6digit@chromium.org 1175c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org/* PKCS#8 utilities */ 1176c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 1177c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgDECLARE_ASN1_FUNCTIONS(PKCS8_PRIV_KEY_INFO) 1178c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 1179c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgEVP_PKEY *EVP_PKCS82PKEY(PKCS8_PRIV_KEY_INFO *p8); 1180c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgPKCS8_PRIV_KEY_INFO *EVP_PKEY2PKCS8(EVP_PKEY *pkey); 1181c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgPKCS8_PRIV_KEY_INFO *EVP_PKEY2PKCS8_broken(EVP_PKEY *pkey, int broken); 1182c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgPKCS8_PRIV_KEY_INFO *PKCS8_set_broken(PKCS8_PRIV_KEY_INFO *p8, int broken); 1183c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 1184480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.orgint PKCS8_pkey_set0(PKCS8_PRIV_KEY_INFO *priv, ASN1_OBJECT *aobj, 1185480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org int version, int ptype, void *pval, 1186480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org unsigned char *penc, int penclen); 1187480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.orgint PKCS8_pkey_get0(ASN1_OBJECT **ppkalg, 1188480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org const unsigned char **pk, int *ppklen, 1189480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org X509_ALGOR **pa, 1190480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org PKCS8_PRIV_KEY_INFO *p8); 1191480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org 1192480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.orgint X509_PUBKEY_set0_param(X509_PUBKEY *pub, ASN1_OBJECT *aobj, 1193480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org int ptype, void *pval, 1194480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org unsigned char *penc, int penclen); 1195480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.orgint X509_PUBKEY_get0_param(ASN1_OBJECT **ppkalg, 1196480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org const unsigned char **pk, int *ppklen, 1197480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org X509_ALGOR **pa, 1198480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org X509_PUBKEY *pub); 1199480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org 1200c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_check_trust(X509 *x, int id, int flags); 1201c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_TRUST_get_count(void); 1202c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgX509_TRUST * X509_TRUST_get0(int idx); 1203c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_TRUST_get_by_id(int id); 1204c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_TRUST_add(int id, int flags, int (*ck)(X509_TRUST *, X509 *, int), 1205c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org char *name, int arg1, void *arg2); 1206c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgvoid X509_TRUST_cleanup(void); 1207c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_TRUST_get_flags(X509_TRUST *xp); 1208c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgchar *X509_TRUST_get0_name(X509_TRUST *xp); 1209c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgint X509_TRUST_get_trust(X509_TRUST *xp); 1210c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 1211c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org/* BEGIN ERROR CODES */ 1212c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org/* The following lines are auto generated by the script mkerr.pl. Any changes 1213c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org * made after this point may be overwritten when the script is next run. 1214c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org */ 1215c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.orgvoid ERR_load_X509_strings(void); 1216c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 1217c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org/* Error codes for the X509 functions. */ 1218c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 1219c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org/* Function codes. */ 1220c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_F_ADD_CERT_DIR 100 1221c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_F_BY_FILE_CTRL 101 1222c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_F_CHECK_POLICY 145 1223c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_F_DIR_CTRL 102 1224c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_F_GET_CERT_BY_SUBJECT 103 1225c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_F_NETSCAPE_SPKI_B64_DECODE 129 1226c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_F_NETSCAPE_SPKI_B64_ENCODE 130 1227c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_F_X509AT_ADD1_ATTR 135 1228c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_F_X509V3_ADD_EXT 104 1229c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_F_X509_ATTRIBUTE_CREATE_BY_NID 136 1230c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_F_X509_ATTRIBUTE_CREATE_BY_OBJ 137 1231c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_F_X509_ATTRIBUTE_CREATE_BY_TXT 140 1232c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_F_X509_ATTRIBUTE_GET0_DATA 139 1233c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_F_X509_ATTRIBUTE_SET1_DATA 138 1234c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_F_X509_CHECK_PRIVATE_KEY 128 1235c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_F_X509_CRL_PRINT_FP 147 1236c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_F_X509_EXTENSION_CREATE_BY_NID 108 1237c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_F_X509_EXTENSION_CREATE_BY_OBJ 109 1238c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_F_X509_GET_PUBKEY_PARAMETERS 110 1239c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_F_X509_LOAD_CERT_CRL_FILE 132 1240c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_F_X509_LOAD_CERT_FILE 111 1241c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_F_X509_LOAD_CRL_FILE 112 1242c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_F_X509_NAME_ADD_ENTRY 113 1243c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_F_X509_NAME_ENTRY_CREATE_BY_NID 114 1244c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_F_X509_NAME_ENTRY_CREATE_BY_TXT 131 1245c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_F_X509_NAME_ENTRY_SET_OBJECT 115 1246c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_F_X509_NAME_ONELINE 116 1247c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_F_X509_NAME_PRINT 117 1248c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_F_X509_PRINT_EX_FP 118 1249c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_F_X509_PUBKEY_GET 119 1250c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_F_X509_PUBKEY_SET 120 1251c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_F_X509_REQ_CHECK_PRIVATE_KEY 144 1252c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_F_X509_REQ_PRINT_EX 121 1253c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_F_X509_REQ_PRINT_FP 122 1254c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_F_X509_REQ_TO_X509 123 1255c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_F_X509_STORE_ADD_CERT 124 1256c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_F_X509_STORE_ADD_CRL 125 1257c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_F_X509_STORE_CTX_GET1_ISSUER 146 1258c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_F_X509_STORE_CTX_INIT 143 1259c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_F_X509_STORE_CTX_NEW 142 1260c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_F_X509_STORE_CTX_PURPOSE_INHERIT 134 1261c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_F_X509_TO_X509_REQ 126 1262c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_F_X509_TRUST_ADD 133 1263c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_F_X509_TRUST_SET 141 1264c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_F_X509_VERIFY_CERT 127 1265c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 1266c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org/* Reason codes. */ 1267c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_R_BAD_X509_FILETYPE 100 1268c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_R_BASE64_DECODE_ERROR 118 1269c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_R_CANT_CHECK_DH_KEY 114 1270c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_R_CERT_ALREADY_IN_HASH_TABLE 101 1271c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_R_ERR_ASN1_LIB 102 1272c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_R_INVALID_DIRECTORY 113 1273c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_R_INVALID_FIELD_NAME 119 1274c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_R_INVALID_TRUST 123 1275c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_R_KEY_TYPE_MISMATCH 115 1276c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_R_KEY_VALUES_MISMATCH 116 1277c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_R_LOADING_CERT_DIR 103 1278c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_R_LOADING_DEFAULTS 104 1279480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org#define X509_R_METHOD_NOT_SUPPORTED 124 1280c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_R_NO_CERT_SET_FOR_US_TO_VERIFY 105 1281480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org#define X509_R_PUBLIC_KEY_DECODE_ERROR 125 1282480da75abf485e7e2a6be5acc0f71842368792c0jnd@chromium.org#define X509_R_PUBLIC_KEY_ENCODE_ERROR 126 1283c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_R_SHOULD_RETRY 106 1284c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_R_UNABLE_TO_FIND_PARAMETERS_IN_CHAIN 107 1285c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_R_UNABLE_TO_GET_CERTS_PUBLIC_KEY 108 1286c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_R_UNKNOWN_KEY_TYPE 117 1287c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_R_UNKNOWN_NID 109 1288c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_R_UNKNOWN_PURPOSE_ID 121 1289c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_R_UNKNOWN_TRUST_ID 120 1290c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_R_UNSUPPORTED_ALGORITHM 111 1291c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_R_WRONG_LOOKUP_TYPE 112 1292c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#define X509_R_WRONG_TYPE 122 1293c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org 1294c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#ifdef __cplusplus 1295c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org} 1296c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#endif 1297c9490d33b98b7affb729b5f1db13cb0a348471aagl@chromium.org#endif 1298