1109998Smarkm/* ====================================================================
2109998Smarkm * Copyright (c) 1998-2001 The OpenSSL Project.  All rights reserved.
3109998Smarkm *
4109998Smarkm * Redistribution and use in source and binary forms, with or without
5109998Smarkm * modification, are permitted provided that the following conditions
6109998Smarkm * are met:
7109998Smarkm *
8109998Smarkm * 1. Redistributions of source code must retain the above copyright
9280304Sjkim *    notice, this list of conditions and the following disclaimer.
10109998Smarkm *
11109998Smarkm * 2. Redistributions in binary form must reproduce the above copyright
12109998Smarkm *    notice, this list of conditions and the following disclaimer in
13109998Smarkm *    the documentation and/or other materials provided with the
14109998Smarkm *    distribution.
15109998Smarkm *
16109998Smarkm * 3. All advertising materials mentioning features or use of this
17109998Smarkm *    software must display the following acknowledgment:
18109998Smarkm *    "This product includes software developed by the OpenSSL Project
19109998Smarkm *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
20109998Smarkm *
21109998Smarkm * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
22109998Smarkm *    endorse or promote products derived from this software without
23109998Smarkm *    prior written permission. For written permission, please contact
24109998Smarkm *    openssl-core@openssl.org.
25109998Smarkm *
26109998Smarkm * 5. Products derived from this software may not be called "OpenSSL"
27109998Smarkm *    nor may "OpenSSL" appear in their names without prior written
28109998Smarkm *    permission of the OpenSSL Project.
29109998Smarkm *
30109998Smarkm * 6. Redistributions of any form whatsoever must retain the following
31109998Smarkm *    acknowledgment:
32109998Smarkm *    "This product includes software developed by the OpenSSL Project
33109998Smarkm *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
34109998Smarkm *
35109998Smarkm * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
36109998Smarkm * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
37109998Smarkm * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
38109998Smarkm * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
39109998Smarkm * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
40109998Smarkm * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
41109998Smarkm * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
42109998Smarkm * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
43109998Smarkm * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
44109998Smarkm * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
45109998Smarkm * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
46109998Smarkm * OF THE POSSIBILITY OF SUCH DAMAGE.
47109998Smarkm * ====================================================================
48109998Smarkm *
49109998Smarkm * This product includes cryptographic software written by Eric Young
50109998Smarkm * (eay@cryptsoft.com).  This product includes software written by Tim
51109998Smarkm * Hudson (tjh@cryptsoft.com).
52109998Smarkm *
53109998Smarkm */
54109998Smarkm
55109998Smarkm#ifndef HEADER_OPENSSL_TYPES_H
56280304Sjkim# define HEADER_OPENSSL_TYPES_H
57109998Smarkm
58273149Sjkim#ifdef  __cplusplus
59273149Sjkimextern "C" {
60273149Sjkim#endif
61273149Sjkim
62280304Sjkim# include <openssl/e_os2.h>
63109998Smarkm
64280304Sjkim# ifdef NO_ASN1_TYPEDEFS
65280304Sjkim#  define ASN1_INTEGER            ASN1_STRING
66280304Sjkim#  define ASN1_ENUMERATED         ASN1_STRING
67280304Sjkim#  define ASN1_BIT_STRING         ASN1_STRING
68280304Sjkim#  define ASN1_OCTET_STRING       ASN1_STRING
69280304Sjkim#  define ASN1_PRINTABLESTRING    ASN1_STRING
70280304Sjkim#  define ASN1_T61STRING          ASN1_STRING
71280304Sjkim#  define ASN1_IA5STRING          ASN1_STRING
72280304Sjkim#  define ASN1_UTCTIME            ASN1_STRING
73280304Sjkim#  define ASN1_GENERALIZEDTIME    ASN1_STRING
74280304Sjkim#  define ASN1_TIME               ASN1_STRING
75280304Sjkim#  define ASN1_GENERALSTRING      ASN1_STRING
76280304Sjkim#  define ASN1_UNIVERSALSTRING    ASN1_STRING
77280304Sjkim#  define ASN1_BMPSTRING          ASN1_STRING
78280304Sjkim#  define ASN1_VISIBLESTRING      ASN1_STRING
79280304Sjkim#  define ASN1_UTF8STRING         ASN1_STRING
80280304Sjkim#  define ASN1_BOOLEAN            int
81280304Sjkim#  define ASN1_NULL               int
82280304Sjkim# else
83109998Smarkmtypedef struct asn1_string_st ASN1_INTEGER;
84109998Smarkmtypedef struct asn1_string_st ASN1_ENUMERATED;
85109998Smarkmtypedef struct asn1_string_st ASN1_BIT_STRING;
86109998Smarkmtypedef struct asn1_string_st ASN1_OCTET_STRING;
87109998Smarkmtypedef struct asn1_string_st ASN1_PRINTABLESTRING;
88109998Smarkmtypedef struct asn1_string_st ASN1_T61STRING;
89109998Smarkmtypedef struct asn1_string_st ASN1_IA5STRING;
90109998Smarkmtypedef struct asn1_string_st ASN1_GENERALSTRING;
91109998Smarkmtypedef struct asn1_string_st ASN1_UNIVERSALSTRING;
92109998Smarkmtypedef struct asn1_string_st ASN1_BMPSTRING;
93109998Smarkmtypedef struct asn1_string_st ASN1_UTCTIME;
94109998Smarkmtypedef struct asn1_string_st ASN1_TIME;
95109998Smarkmtypedef struct asn1_string_st ASN1_GENERALIZEDTIME;
96109998Smarkmtypedef struct asn1_string_st ASN1_VISIBLESTRING;
97109998Smarkmtypedef struct asn1_string_st ASN1_UTF8STRING;
98238405Sjkimtypedef struct asn1_string_st ASN1_STRING;
99109998Smarkmtypedef int ASN1_BOOLEAN;
100109998Smarkmtypedef int ASN1_NULL;
101280304Sjkim# endif
102109998Smarkm
103238405Sjkimtypedef struct ASN1_ITEM_st ASN1_ITEM;
104238405Sjkimtypedef struct asn1_pctx_st ASN1_PCTX;
105238405Sjkim
106280304Sjkim# ifdef OPENSSL_SYS_WIN32
107280304Sjkim#  undef X509_NAME
108280304Sjkim#  undef X509_EXTENSIONS
109280304Sjkim#  undef X509_CERT_PAIR
110280304Sjkim#  undef PKCS7_ISSUER_AND_SERIAL
111280304Sjkim#  undef OCSP_REQUEST
112280304Sjkim#  undef OCSP_RESPONSE
113280304Sjkim# endif
114109998Smarkm
115280304Sjkim# ifdef BIGNUM
116280304Sjkim#  undef BIGNUM
117280304Sjkim# endif
118160814Ssimontypedef struct bignum_st BIGNUM;
119160814Ssimontypedef struct bignum_ctx BN_CTX;
120160814Ssimontypedef struct bn_blinding_st BN_BLINDING;
121160814Ssimontypedef struct bn_mont_ctx_st BN_MONT_CTX;
122160814Ssimontypedef struct bn_recp_ctx_st BN_RECP_CTX;
123160814Ssimontypedef struct bn_gencb_st BN_GENCB;
124160814Ssimon
125160814Ssimontypedef struct buf_mem_st BUF_MEM;
126160814Ssimon
127109998Smarkmtypedef struct evp_cipher_st EVP_CIPHER;
128109998Smarkmtypedef struct evp_cipher_ctx_st EVP_CIPHER_CTX;
129109998Smarkmtypedef struct env_md_st EVP_MD;
130109998Smarkmtypedef struct env_md_ctx_st EVP_MD_CTX;
131109998Smarkmtypedef struct evp_pkey_st EVP_PKEY;
132109998Smarkm
133238405Sjkimtypedef struct evp_pkey_asn1_method_st EVP_PKEY_ASN1_METHOD;
134238405Sjkim
135238405Sjkimtypedef struct evp_pkey_method_st EVP_PKEY_METHOD;
136238405Sjkimtypedef struct evp_pkey_ctx_st EVP_PKEY_CTX;
137238405Sjkim
138160814Ssimontypedef struct dh_st DH;
139160814Ssimontypedef struct dh_method DH_METHOD;
140160814Ssimon
141160814Ssimontypedef struct dsa_st DSA;
142160814Ssimontypedef struct dsa_method DSA_METHOD;
143160814Ssimon
144160814Ssimontypedef struct rsa_st RSA;
145160814Ssimontypedef struct rsa_meth_st RSA_METHOD;
146160814Ssimon
147160814Ssimontypedef struct rand_meth_st RAND_METHOD;
148160814Ssimon
149160814Ssimontypedef struct ecdh_method ECDH_METHOD;
150160814Ssimontypedef struct ecdsa_method ECDSA_METHOD;
151160814Ssimon
152109998Smarkmtypedef struct x509_st X509;
153109998Smarkmtypedef struct X509_algor_st X509_ALGOR;
154109998Smarkmtypedef struct X509_crl_st X509_CRL;
155238405Sjkimtypedef struct x509_crl_method_st X509_CRL_METHOD;
156238405Sjkimtypedef struct x509_revoked_st X509_REVOKED;
157109998Smarkmtypedef struct X509_name_st X509_NAME;
158238405Sjkimtypedef struct X509_pubkey_st X509_PUBKEY;
159109998Smarkmtypedef struct x509_store_st X509_STORE;
160109998Smarkmtypedef struct x509_store_ctx_st X509_STORE_CTX;
161109998Smarkm
162238405Sjkimtypedef struct pkcs8_priv_key_info_st PKCS8_PRIV_KEY_INFO;
163238405Sjkim
164160814Ssimontypedef struct v3_ext_ctx X509V3_CTX;
165160814Ssimontypedef struct conf_st CONF;
166160814Ssimon
167160814Ssimontypedef struct store_st STORE;
168160814Ssimontypedef struct store_method_st STORE_METHOD;
169160814Ssimon
170160814Ssimontypedef struct ui_st UI;
171160814Ssimontypedef struct ui_method_st UI_METHOD;
172160814Ssimon
173160814Ssimontypedef struct st_ERR_FNS ERR_FNS;
174160814Ssimon
175109998Smarkmtypedef struct engine_st ENGINE;
176238405Sjkimtypedef struct ssl_st SSL;
177238405Sjkimtypedef struct ssl_ctx_st SSL_CTX;
178109998Smarkm
179160814Ssimontypedef struct X509_POLICY_NODE_st X509_POLICY_NODE;
180160814Ssimontypedef struct X509_POLICY_LEVEL_st X509_POLICY_LEVEL;
181160814Ssimontypedef struct X509_POLICY_TREE_st X509_POLICY_TREE;
182160814Ssimontypedef struct X509_POLICY_CACHE_st X509_POLICY_CACHE;
183160814Ssimon
184238405Sjkimtypedef struct AUTHORITY_KEYID_st AUTHORITY_KEYID;
185238405Sjkimtypedef struct DIST_POINT_st DIST_POINT;
186238405Sjkimtypedef struct ISSUING_DIST_POINT_st ISSUING_DIST_POINT;
187238405Sjkimtypedef struct NAME_CONSTRAINTS_st NAME_CONSTRAINTS;
188238405Sjkim
189109998Smarkm  /* If placed in pkcs12.h, we end up with a circular depency with pkcs7.h */
190280304Sjkim# define DECLARE_PKCS12_STACK_OF(type)/* Nothing */
191280304Sjkim# define IMPLEMENT_PKCS12_STACK_OF(type)/* Nothing */
192109998Smarkm
193160814Ssimontypedef struct crypto_ex_data_st CRYPTO_EX_DATA;
194160814Ssimon/* Callback types for crypto.h */
195280304Sjkimtypedef int CRYPTO_EX_new (void *parent, void *ptr, CRYPTO_EX_DATA *ad,
196280304Sjkim                           int idx, long argl, void *argp);
197280304Sjkimtypedef void CRYPTO_EX_free (void *parent, void *ptr, CRYPTO_EX_DATA *ad,
198280304Sjkim                             int idx, long argl, void *argp);
199280304Sjkimtypedef int CRYPTO_EX_dup (CRYPTO_EX_DATA *to, CRYPTO_EX_DATA *from,
200280304Sjkim                           void *from_d, int idx, long argl, void *argp);
201160814Ssimon
202194206Ssimontypedef struct ocsp_req_ctx_st OCSP_REQ_CTX;
203194206Ssimontypedef struct ocsp_response_st OCSP_RESPONSE;
204194206Ssimontypedef struct ocsp_responder_id_st OCSP_RESPID;
205194206Ssimon
206273149Sjkim#ifdef  __cplusplus
207273149Sjkim}
208273149Sjkim#endif
209280304Sjkim#endif                          /* def HEADER_OPENSSL_TYPES_H */
210