From 37332904424da325ca4fea8ac2f8998223057b9d Mon Sep 17 00:00:00 2001 From: Andrew Nelless Date: Tue, 3 Jan 2017 23:56:08 +0000 Subject: [PATCH] Remove old OpenSSL binaries for Windows --- ext/openssl-win32/inc32/openssl/asn1.h | 1418 ------ ext/openssl-win32/inc32/openssl/bio.h | 878 ---- ext/openssl-win32/inc32/openssl/bn.h | 934 ---- ext/openssl-win32/inc32/openssl/buffer.h | 119 - ext/openssl-win32/inc32/openssl/comp.h | 79 - ext/openssl-win32/inc32/openssl/crypto.h | 661 --- ext/openssl-win32/inc32/openssl/dh.h | 392 -- ext/openssl-win32/inc32/openssl/dsa.h | 332 -- ext/openssl-win32/inc32/openssl/dtls1.h | 271 -- ext/openssl-win32/inc32/openssl/e_os2.h | 322 -- ext/openssl-win32/inc32/openssl/ec.h | 1281 ----- ext/openssl-win32/inc32/openssl/ecdh.h | 134 - ext/openssl-win32/inc32/openssl/ecdsa.h | 335 -- ext/openssl-win32/inc32/openssl/err.h | 389 -- ext/openssl-win32/inc32/openssl/evp.h | 1519 ------ ext/openssl-win32/inc32/openssl/hmac.h | 109 - ext/openssl-win32/inc32/openssl/kssl.h | 197 - ext/openssl-win32/inc32/openssl/lhash.h | 240 - ext/openssl-win32/inc32/openssl/obj_mac.h | 4194 ----------------- ext/openssl-win32/inc32/openssl/objects.h | 1143 ----- ext/openssl-win32/inc32/openssl/opensslconf.h | 259 - ext/openssl-win32/inc32/openssl/opensslv.h | 97 - ext/openssl-win32/inc32/openssl/ossl_typ.h | 211 - ext/openssl-win32/inc32/openssl/pem.h | 615 --- ext/openssl-win32/inc32/openssl/pem2.h | 70 - ext/openssl-win32/inc32/openssl/pkcs7.h | 481 -- ext/openssl-win32/inc32/openssl/pqueue.h | 99 - ext/openssl-win32/inc32/openssl/rsa.h | 664 --- ext/openssl-win32/inc32/openssl/safestack.h | 2672 ----------- ext/openssl-win32/inc32/openssl/sha.h | 214 - ext/openssl-win32/inc32/openssl/srtp.h | 147 - ext/openssl-win32/inc32/openssl/ssl.h | 3159 ------------- ext/openssl-win32/inc32/openssl/ssl2.h | 265 -- ext/openssl-win32/inc32/openssl/ssl23.h | 84 - ext/openssl-win32/inc32/openssl/ssl3.h | 774 --- ext/openssl-win32/inc32/openssl/stack.h | 107 - ext/openssl-win32/inc32/openssl/symhacks.h | 516 -- ext/openssl-win32/inc32/openssl/tls1.h | 813 ---- ext/openssl-win32/inc32/openssl/x509.h | 1327 ------ ext/openssl-win32/inc32/openssl/x509_vfy.h | 641 --- ext/openssl-win32/out32dll/libeay32.dll | Bin 1265664 -> 0 bytes ext/openssl-win32/out32dll/libeay32.lib | Bin 820100 -> 0 bytes ext/openssl-win32/out32dll/openssl.exe | Bin 443392 -> 0 bytes ext/openssl-win32/out32dll/ssleay32.dll | Bin 293376 -> 0 bytes ext/openssl-win32/out32dll/ssleay32.lib | Bin 77302 -> 0 bytes ext/openssl-win64/inc32/openssl/asn1.h | 1418 ------ ext/openssl-win64/inc32/openssl/bio.h | 878 ---- ext/openssl-win64/inc32/openssl/bn.h | 934 ---- ext/openssl-win64/inc32/openssl/buffer.h | 119 - ext/openssl-win64/inc32/openssl/comp.h | 79 - ext/openssl-win64/inc32/openssl/crypto.h | 661 --- ext/openssl-win64/inc32/openssl/dh.h | 392 -- ext/openssl-win64/inc32/openssl/dsa.h | 332 -- ext/openssl-win64/inc32/openssl/dtls1.h | 271 -- ext/openssl-win64/inc32/openssl/e_os2.h | 322 -- ext/openssl-win64/inc32/openssl/ec.h | 1281 ----- ext/openssl-win64/inc32/openssl/ecdh.h | 134 - ext/openssl-win64/inc32/openssl/ecdsa.h | 335 -- ext/openssl-win64/inc32/openssl/err.h | 389 -- ext/openssl-win64/inc32/openssl/evp.h | 1519 ------ ext/openssl-win64/inc32/openssl/hmac.h | 109 - ext/openssl-win64/inc32/openssl/kssl.h | 197 - ext/openssl-win64/inc32/openssl/lhash.h | 240 - ext/openssl-win64/inc32/openssl/obj_mac.h | 4194 ----------------- ext/openssl-win64/inc32/openssl/objects.h | 1143 ----- ext/openssl-win64/inc32/openssl/opensslconf.h | 259 - ext/openssl-win64/inc32/openssl/opensslv.h | 97 - ext/openssl-win64/inc32/openssl/ossl_typ.h | 211 - ext/openssl-win64/inc32/openssl/pem.h | 615 --- ext/openssl-win64/inc32/openssl/pem2.h | 70 - ext/openssl-win64/inc32/openssl/pkcs7.h | 481 -- ext/openssl-win64/inc32/openssl/pqueue.h | 99 - ext/openssl-win64/inc32/openssl/rsa.h | 664 --- ext/openssl-win64/inc32/openssl/safestack.h | 2672 ----------- ext/openssl-win64/inc32/openssl/sha.h | 214 - ext/openssl-win64/inc32/openssl/srtp.h | 147 - ext/openssl-win64/inc32/openssl/ssl.h | 3159 ------------- ext/openssl-win64/inc32/openssl/ssl2.h | 265 -- ext/openssl-win64/inc32/openssl/ssl23.h | 84 - ext/openssl-win64/inc32/openssl/ssl3.h | 774 --- ext/openssl-win64/inc32/openssl/stack.h | 107 - ext/openssl-win64/inc32/openssl/symhacks.h | 516 -- ext/openssl-win64/inc32/openssl/tls1.h | 813 ---- ext/openssl-win64/inc32/openssl/x509.h | 1327 ------ ext/openssl-win64/inc32/openssl/x509_vfy.h | 641 --- ext/openssl-win64/out32dll/libeay32.dll | Bin 2074624 -> 0 bytes ext/openssl-win64/out32dll/libeay32.lib | Bin 801728 -> 0 bytes ext/openssl-win64/out32dll/openssl.exe | Bin 497664 -> 0 bytes ext/openssl-win64/out32dll/ssleay32.dll | Bin 377856 -> 0 bytes ext/openssl-win64/out32dll/ssleay32.lib | Bin 75730 -> 0 bytes 90 files changed, 56324 deletions(-) delete mode 100644 ext/openssl-win32/inc32/openssl/asn1.h delete mode 100644 ext/openssl-win32/inc32/openssl/bio.h delete mode 100644 ext/openssl-win32/inc32/openssl/bn.h delete mode 100644 ext/openssl-win32/inc32/openssl/buffer.h delete mode 100644 ext/openssl-win32/inc32/openssl/comp.h delete mode 100644 ext/openssl-win32/inc32/openssl/crypto.h delete mode 100644 ext/openssl-win32/inc32/openssl/dh.h delete mode 100644 ext/openssl-win32/inc32/openssl/dsa.h delete mode 100644 ext/openssl-win32/inc32/openssl/dtls1.h delete mode 100644 ext/openssl-win32/inc32/openssl/e_os2.h delete mode 100644 ext/openssl-win32/inc32/openssl/ec.h delete mode 100644 ext/openssl-win32/inc32/openssl/ecdh.h delete mode 100644 ext/openssl-win32/inc32/openssl/ecdsa.h delete mode 100644 ext/openssl-win32/inc32/openssl/err.h delete mode 100644 ext/openssl-win32/inc32/openssl/evp.h delete mode 100644 ext/openssl-win32/inc32/openssl/hmac.h delete mode 100644 ext/openssl-win32/inc32/openssl/kssl.h delete mode 100644 ext/openssl-win32/inc32/openssl/lhash.h delete mode 100644 ext/openssl-win32/inc32/openssl/obj_mac.h delete mode 100644 ext/openssl-win32/inc32/openssl/objects.h delete mode 100644 ext/openssl-win32/inc32/openssl/opensslconf.h delete mode 100644 ext/openssl-win32/inc32/openssl/opensslv.h delete mode 100644 ext/openssl-win32/inc32/openssl/ossl_typ.h delete mode 100644 ext/openssl-win32/inc32/openssl/pem.h delete mode 100644 ext/openssl-win32/inc32/openssl/pem2.h delete mode 100644 ext/openssl-win32/inc32/openssl/pkcs7.h delete mode 100644 ext/openssl-win32/inc32/openssl/pqueue.h delete mode 100644 ext/openssl-win32/inc32/openssl/rsa.h delete mode 100644 ext/openssl-win32/inc32/openssl/safestack.h delete mode 100644 ext/openssl-win32/inc32/openssl/sha.h delete mode 100644 ext/openssl-win32/inc32/openssl/srtp.h delete mode 100644 ext/openssl-win32/inc32/openssl/ssl.h delete mode 100644 ext/openssl-win32/inc32/openssl/ssl2.h delete mode 100644 ext/openssl-win32/inc32/openssl/ssl23.h delete mode 100644 ext/openssl-win32/inc32/openssl/ssl3.h delete mode 100644 ext/openssl-win32/inc32/openssl/stack.h delete mode 100644 ext/openssl-win32/inc32/openssl/symhacks.h delete mode 100644 ext/openssl-win32/inc32/openssl/tls1.h delete mode 100644 ext/openssl-win32/inc32/openssl/x509.h delete mode 100644 ext/openssl-win32/inc32/openssl/x509_vfy.h delete mode 100644 ext/openssl-win32/out32dll/libeay32.dll delete mode 100644 ext/openssl-win32/out32dll/libeay32.lib delete mode 100644 ext/openssl-win32/out32dll/openssl.exe delete mode 100644 ext/openssl-win32/out32dll/ssleay32.dll delete mode 100644 ext/openssl-win32/out32dll/ssleay32.lib delete mode 100644 ext/openssl-win64/inc32/openssl/asn1.h delete mode 100644 ext/openssl-win64/inc32/openssl/bio.h delete mode 100644 ext/openssl-win64/inc32/openssl/bn.h delete mode 100644 ext/openssl-win64/inc32/openssl/buffer.h delete mode 100644 ext/openssl-win64/inc32/openssl/comp.h delete mode 100644 ext/openssl-win64/inc32/openssl/crypto.h delete mode 100644 ext/openssl-win64/inc32/openssl/dh.h delete mode 100644 ext/openssl-win64/inc32/openssl/dsa.h delete mode 100644 ext/openssl-win64/inc32/openssl/dtls1.h delete mode 100644 ext/openssl-win64/inc32/openssl/e_os2.h delete mode 100644 ext/openssl-win64/inc32/openssl/ec.h delete mode 100644 ext/openssl-win64/inc32/openssl/ecdh.h delete mode 100644 ext/openssl-win64/inc32/openssl/ecdsa.h delete mode 100644 ext/openssl-win64/inc32/openssl/err.h delete mode 100644 ext/openssl-win64/inc32/openssl/evp.h delete mode 100644 ext/openssl-win64/inc32/openssl/hmac.h delete mode 100644 ext/openssl-win64/inc32/openssl/kssl.h delete mode 100644 ext/openssl-win64/inc32/openssl/lhash.h delete mode 100644 ext/openssl-win64/inc32/openssl/obj_mac.h delete mode 100644 ext/openssl-win64/inc32/openssl/objects.h delete mode 100644 ext/openssl-win64/inc32/openssl/opensslconf.h delete mode 100644 ext/openssl-win64/inc32/openssl/opensslv.h delete mode 100644 ext/openssl-win64/inc32/openssl/ossl_typ.h delete mode 100644 ext/openssl-win64/inc32/openssl/pem.h delete mode 100644 ext/openssl-win64/inc32/openssl/pem2.h delete mode 100644 ext/openssl-win64/inc32/openssl/pkcs7.h delete mode 100644 ext/openssl-win64/inc32/openssl/pqueue.h delete mode 100644 ext/openssl-win64/inc32/openssl/rsa.h delete mode 100644 ext/openssl-win64/inc32/openssl/safestack.h delete mode 100644 ext/openssl-win64/inc32/openssl/sha.h delete mode 100644 ext/openssl-win64/inc32/openssl/srtp.h delete mode 100644 ext/openssl-win64/inc32/openssl/ssl.h delete mode 100644 ext/openssl-win64/inc32/openssl/ssl2.h delete mode 100644 ext/openssl-win64/inc32/openssl/ssl23.h delete mode 100644 ext/openssl-win64/inc32/openssl/ssl3.h delete mode 100644 ext/openssl-win64/inc32/openssl/stack.h delete mode 100644 ext/openssl-win64/inc32/openssl/symhacks.h delete mode 100644 ext/openssl-win64/inc32/openssl/tls1.h delete mode 100644 ext/openssl-win64/inc32/openssl/x509.h delete mode 100644 ext/openssl-win64/inc32/openssl/x509_vfy.h delete mode 100644 ext/openssl-win64/out32dll/libeay32.dll delete mode 100644 ext/openssl-win64/out32dll/libeay32.lib delete mode 100644 ext/openssl-win64/out32dll/openssl.exe delete mode 100644 ext/openssl-win64/out32dll/ssleay32.dll delete mode 100644 ext/openssl-win64/out32dll/ssleay32.lib diff --git a/ext/openssl-win32/inc32/openssl/asn1.h b/ext/openssl-win32/inc32/openssl/asn1.h deleted file mode 100644 index bb6ac95b..00000000 --- a/ext/openssl-win32/inc32/openssl/asn1.h +++ /dev/null @@ -1,1418 +0,0 @@ -/* crypto/asn1/asn1.h */ -/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) - * All rights reserved. - * - * This package is an SSL implementation written - * by Eric Young (eay@cryptsoft.com). - * The implementation was written so as to conform with Netscapes SSL. - * - * This library is free for commercial and non-commercial use as long as - * the following conditions are aheared to. The following conditions - * apply to all code found in this distribution, be it the RC4, RSA, - * lhash, DES, etc., code; not just the SSL code. The SSL documentation - * included with this distribution is covered by the same copyright terms - * except that the holder is Tim Hudson (tjh@cryptsoft.com). - * - * Copyright remains Eric Young's, and as such any Copyright notices in - * the code are not to be removed. - * If this package is used in a product, Eric Young should be given attribution - * as the author of the parts of the library used. - * This can be in the form of a textual message at program startup or - * in documentation (online or textual) provided with the package. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * "This product includes cryptographic software written by - * Eric Young (eay@cryptsoft.com)" - * The word 'cryptographic' can be left out if the rouines from the library - * being used are not cryptographic related :-). - * 4. If you include any Windows specific code (or a derivative thereof) from - * the apps directory (application code) you must include an acknowledgement: - * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" - * - * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * The licence and distribution terms for any publically available version or - * derivative of this code cannot be changed. i.e. this code cannot simply be - * copied and put under another distribution licence - * [including the GNU Public Licence.] - */ - -#ifndef HEADER_ASN1_H -# define HEADER_ASN1_H - -# include -# include -# ifndef OPENSSL_NO_BIO -# include -# endif -# include -# include - -# include - -# include -# ifndef OPENSSL_NO_DEPRECATED -# include -# endif - -# ifdef OPENSSL_BUILD_SHLIBCRYPTO -# undef OPENSSL_EXTERN -# define OPENSSL_EXTERN OPENSSL_EXPORT -# endif - -#ifdef __cplusplus -extern "C" { -#endif - -# define V_ASN1_UNIVERSAL 0x00 -# define V_ASN1_APPLICATION 0x40 -# define V_ASN1_CONTEXT_SPECIFIC 0x80 -# define V_ASN1_PRIVATE 0xc0 - -# define V_ASN1_CONSTRUCTED 0x20 -# define V_ASN1_PRIMITIVE_TAG 0x1f -# define V_ASN1_PRIMATIVE_TAG 0x1f - -# define V_ASN1_APP_CHOOSE -2/* let the recipient choose */ -# define V_ASN1_OTHER -3/* used in ASN1_TYPE */ -# define V_ASN1_ANY -4/* used in ASN1 template code */ - -# define V_ASN1_NEG 0x100/* negative flag */ - -# define V_ASN1_UNDEF -1 -# define V_ASN1_EOC 0 -# define V_ASN1_BOOLEAN 1 /**/ -# define V_ASN1_INTEGER 2 -# define V_ASN1_NEG_INTEGER (2 | V_ASN1_NEG) -# define V_ASN1_BIT_STRING 3 -# define V_ASN1_OCTET_STRING 4 -# define V_ASN1_NULL 5 -# define V_ASN1_OBJECT 6 -# define V_ASN1_OBJECT_DESCRIPTOR 7 -# define V_ASN1_EXTERNAL 8 -# define V_ASN1_REAL 9 -# define V_ASN1_ENUMERATED 10 -# define V_ASN1_NEG_ENUMERATED (10 | V_ASN1_NEG) -# define V_ASN1_UTF8STRING 12 -# define V_ASN1_SEQUENCE 16 -# define V_ASN1_SET 17 -# define V_ASN1_NUMERICSTRING 18 /**/ -# define V_ASN1_PRINTABLESTRING 19 -# define V_ASN1_T61STRING 20 -# define V_ASN1_TELETEXSTRING 20/* alias */ -# define V_ASN1_VIDEOTEXSTRING 21 /**/ -# define V_ASN1_IA5STRING 22 -# define V_ASN1_UTCTIME 23 -# define V_ASN1_GENERALIZEDTIME 24 /**/ -# define V_ASN1_GRAPHICSTRING 25 /**/ -# define V_ASN1_ISO64STRING 26 /**/ -# define V_ASN1_VISIBLESTRING 26/* alias */ -# define V_ASN1_GENERALSTRING 27 /**/ -# define V_ASN1_UNIVERSALSTRING 28 /**/ -# define V_ASN1_BMPSTRING 30 -/* For use with d2i_ASN1_type_bytes() */ -# define B_ASN1_NUMERICSTRING 0x0001 -# define B_ASN1_PRINTABLESTRING 0x0002 -# define B_ASN1_T61STRING 0x0004 -# define B_ASN1_TELETEXSTRING 0x0004 -# define B_ASN1_VIDEOTEXSTRING 0x0008 -# define B_ASN1_IA5STRING 0x0010 -# define B_ASN1_GRAPHICSTRING 0x0020 -# define B_ASN1_ISO64STRING 0x0040 -# define B_ASN1_VISIBLESTRING 0x0040 -# define B_ASN1_GENERALSTRING 0x0080 -# define B_ASN1_UNIVERSALSTRING 0x0100 -# define B_ASN1_OCTET_STRING 0x0200 -# define B_ASN1_BIT_STRING 0x0400 -# define B_ASN1_BMPSTRING 0x0800 -# define B_ASN1_UNKNOWN 0x1000 -# define B_ASN1_UTF8STRING 0x2000 -# define B_ASN1_UTCTIME 0x4000 -# define B_ASN1_GENERALIZEDTIME 0x8000 -# define B_ASN1_SEQUENCE 0x10000 -/* For use with ASN1_mbstring_copy() */ -# define MBSTRING_FLAG 0x1000 -# define MBSTRING_UTF8 (MBSTRING_FLAG) -# define MBSTRING_ASC (MBSTRING_FLAG|1) -# define MBSTRING_BMP (MBSTRING_FLAG|2) -# define MBSTRING_UNIV (MBSTRING_FLAG|4) -# define SMIME_OLDMIME 0x400 -# define SMIME_CRLFEOL 0x800 -# define SMIME_STREAM 0x1000 - struct X509_algor_st; -DECLARE_STACK_OF(X509_ALGOR) - -# define DECLARE_ASN1_SET_OF(type)/* filled in by mkstack.pl */ -# define IMPLEMENT_ASN1_SET_OF(type)/* nothing, no longer needed */ - -/* - * We MUST make sure that, except for constness, asn1_ctx_st and - * asn1_const_ctx are exactly the same. Fortunately, as soon as the old ASN1 - * parsing macros are gone, we can throw this away as well... - */ -typedef struct asn1_ctx_st { - unsigned char *p; /* work char pointer */ - int eos; /* end of sequence read for indefinite - * encoding */ - int error; /* error code to use when returning an error */ - int inf; /* constructed if 0x20, indefinite is 0x21 */ - int tag; /* tag from last 'get object' */ - int xclass; /* class from last 'get object' */ - long slen; /* length of last 'get object' */ - unsigned char *max; /* largest value of p allowed */ - unsigned char *q; /* temporary variable */ - unsigned char **pp; /* variable */ - int line; /* used in error processing */ -} ASN1_CTX; - -typedef struct asn1_const_ctx_st { - const unsigned char *p; /* work char pointer */ - int eos; /* end of sequence read for indefinite - * encoding */ - int error; /* error code to use when returning an error */ - int inf; /* constructed if 0x20, indefinite is 0x21 */ - int tag; /* tag from last 'get object' */ - int xclass; /* class from last 'get object' */ - long slen; /* length of last 'get object' */ - const unsigned char *max; /* largest value of p allowed */ - const unsigned char *q; /* temporary variable */ - const unsigned char **pp; /* variable */ - int line; /* used in error processing */ -} ASN1_const_CTX; - -/* - * These are used internally in the ASN1_OBJECT to keep track of whether the - * names and data need to be free()ed - */ -# define ASN1_OBJECT_FLAG_DYNAMIC 0x01/* internal use */ -# define ASN1_OBJECT_FLAG_CRITICAL 0x02/* critical x509v3 object id */ -# define ASN1_OBJECT_FLAG_DYNAMIC_STRINGS 0x04/* internal use */ -# define ASN1_OBJECT_FLAG_DYNAMIC_DATA 0x08/* internal use */ -struct asn1_object_st { - const char *sn, *ln; - int nid; - int length; - const unsigned char *data; /* data remains const after init */ - int flags; /* Should we free this one */ -}; - -# define ASN1_STRING_FLAG_BITS_LEFT 0x08/* Set if 0x07 has bits left value */ -/* - * This indicates that the ASN1_STRING is not a real value but just a place - * holder for the location where indefinite length constructed data should be - * inserted in the memory buffer - */ -# define ASN1_STRING_FLAG_NDEF 0x010 - -/* - * This flag is used by the CMS code to indicate that a string is not - * complete and is a place holder for content when it had all been accessed. - * The flag will be reset when content has been written to it. - */ - -# define ASN1_STRING_FLAG_CONT 0x020 -/* - * This flag is used by ASN1 code to indicate an ASN1_STRING is an MSTRING - * type. - */ -# define ASN1_STRING_FLAG_MSTRING 0x040 -/* This is the base type that holds just about everything :-) */ -struct asn1_string_st { - int length; - int type; - unsigned char *data; - /* - * The value of the following field depends on the type being held. It - * is mostly being used for BIT_STRING so if the input data has a - * non-zero 'unused bits' value, it will be handled correctly - */ - long flags; -}; - -/* - * ASN1_ENCODING structure: this is used to save the received encoding of an - * ASN1 type. This is useful to get round problems with invalid encodings - * which can break signatures. - */ - -typedef struct ASN1_ENCODING_st { - unsigned char *enc; /* DER encoding */ - long len; /* Length of encoding */ - int modified; /* set to 1 if 'enc' is invalid */ -} ASN1_ENCODING; - -/* Used with ASN1 LONG type: if a long is set to this it is omitted */ -# define ASN1_LONG_UNDEF 0x7fffffffL - -# define STABLE_FLAGS_MALLOC 0x01 -# define STABLE_NO_MASK 0x02 -# define DIRSTRING_TYPE \ - (B_ASN1_PRINTABLESTRING|B_ASN1_T61STRING|B_ASN1_BMPSTRING|B_ASN1_UTF8STRING) -# define PKCS9STRING_TYPE (DIRSTRING_TYPE|B_ASN1_IA5STRING) - -typedef struct asn1_string_table_st { - int nid; - long minsize; - long maxsize; - unsigned long mask; - unsigned long flags; -} ASN1_STRING_TABLE; - -DECLARE_STACK_OF(ASN1_STRING_TABLE) - -/* size limits: this stuff is taken straight from RFC2459 */ - -# define ub_name 32768 -# define ub_common_name 64 -# define ub_locality_name 128 -# define ub_state_name 128 -# define ub_organization_name 64 -# define ub_organization_unit_name 64 -# define ub_title 64 -# define ub_email_address 128 - -/* - * Declarations for template structures: for full definitions see asn1t.h - */ -typedef struct ASN1_TEMPLATE_st ASN1_TEMPLATE; -typedef struct ASN1_TLC_st ASN1_TLC; -/* This is just an opaque pointer */ -typedef struct ASN1_VALUE_st ASN1_VALUE; - -/* Declare ASN1 functions: the implement macro in in asn1t.h */ - -# define DECLARE_ASN1_FUNCTIONS(type) DECLARE_ASN1_FUNCTIONS_name(type, type) - -# define DECLARE_ASN1_ALLOC_FUNCTIONS(type) \ - DECLARE_ASN1_ALLOC_FUNCTIONS_name(type, type) - -# define DECLARE_ASN1_FUNCTIONS_name(type, name) \ - DECLARE_ASN1_ALLOC_FUNCTIONS_name(type, name) \ - DECLARE_ASN1_ENCODE_FUNCTIONS(type, name, name) - -# define DECLARE_ASN1_FUNCTIONS_fname(type, itname, name) \ - DECLARE_ASN1_ALLOC_FUNCTIONS_name(type, name) \ - DECLARE_ASN1_ENCODE_FUNCTIONS(type, itname, name) - -# define DECLARE_ASN1_ENCODE_FUNCTIONS(type, itname, name) \ - type *d2i_##name(type **a, const unsigned char **in, long len); \ - int i2d_##name(type *a, unsigned char **out); \ - DECLARE_ASN1_ITEM(itname) - -# define DECLARE_ASN1_ENCODE_FUNCTIONS_const(type, name) \ - type *d2i_##name(type **a, const unsigned char **in, long len); \ - int i2d_##name(const type *a, unsigned char **out); \ - DECLARE_ASN1_ITEM(name) - -# define DECLARE_ASN1_NDEF_FUNCTION(name) \ - int i2d_##name##_NDEF(name *a, unsigned char **out); - -# define DECLARE_ASN1_FUNCTIONS_const(name) \ - DECLARE_ASN1_ALLOC_FUNCTIONS(name) \ - DECLARE_ASN1_ENCODE_FUNCTIONS_const(name, name) - -# define DECLARE_ASN1_ALLOC_FUNCTIONS_name(type, name) \ - type *name##_new(void); \ - void name##_free(type *a); - -# define DECLARE_ASN1_PRINT_FUNCTION(stname) \ - DECLARE_ASN1_PRINT_FUNCTION_fname(stname, stname) - -# define DECLARE_ASN1_PRINT_FUNCTION_fname(stname, fname) \ - int fname##_print_ctx(BIO *out, stname *x, int indent, \ - const ASN1_PCTX *pctx); - -# define D2I_OF(type) type *(*)(type **,const unsigned char **,long) -# define I2D_OF(type) int (*)(type *,unsigned char **) -# define I2D_OF_const(type) int (*)(const type *,unsigned char **) - -# define CHECKED_D2I_OF(type, d2i) \ - ((d2i_of_void*) (1 ? d2i : ((D2I_OF(type))0))) -# define CHECKED_I2D_OF(type, i2d) \ - ((i2d_of_void*) (1 ? i2d : ((I2D_OF(type))0))) -# define CHECKED_NEW_OF(type, xnew) \ - ((void *(*)(void)) (1 ? xnew : ((type *(*)(void))0))) -# define CHECKED_PTR_OF(type, p) \ - ((void*) (1 ? p : (type*)0)) -# define CHECKED_PPTR_OF(type, p) \ - ((void**) (1 ? p : (type**)0)) - -# define TYPEDEF_D2I_OF(type) typedef type *d2i_of_##type(type **,const unsigned char **,long) -# define TYPEDEF_I2D_OF(type) typedef int i2d_of_##type(type *,unsigned char **) -# define TYPEDEF_D2I2D_OF(type) TYPEDEF_D2I_OF(type); TYPEDEF_I2D_OF(type) - -TYPEDEF_D2I2D_OF(void); - -/*- - * The following macros and typedefs allow an ASN1_ITEM - * to be embedded in a structure and referenced. Since - * the ASN1_ITEM pointers need to be globally accessible - * (possibly from shared libraries) they may exist in - * different forms. On platforms that support it the - * ASN1_ITEM structure itself will be globally exported. - * Other platforms will export a function that returns - * an ASN1_ITEM pointer. - * - * To handle both cases transparently the macros below - * should be used instead of hard coding an ASN1_ITEM - * pointer in a structure. - * - * The structure will look like this: - * - * typedef struct SOMETHING_st { - * ... - * ASN1_ITEM_EXP *iptr; - * ... - * } SOMETHING; - * - * It would be initialised as e.g.: - * - * SOMETHING somevar = {...,ASN1_ITEM_ref(X509),...}; - * - * and the actual pointer extracted with: - * - * const ASN1_ITEM *it = ASN1_ITEM_ptr(somevar.iptr); - * - * Finally an ASN1_ITEM pointer can be extracted from an - * appropriate reference with: ASN1_ITEM_rptr(X509). This - * would be used when a function takes an ASN1_ITEM * argument. - * - */ - -# ifndef OPENSSL_EXPORT_VAR_AS_FUNCTION - -/* ASN1_ITEM pointer exported type */ -typedef const ASN1_ITEM ASN1_ITEM_EXP; - -/* Macro to obtain ASN1_ITEM pointer from exported type */ -# define ASN1_ITEM_ptr(iptr) (iptr) - -/* Macro to include ASN1_ITEM pointer from base type */ -# define ASN1_ITEM_ref(iptr) (&(iptr##_it)) - -# define ASN1_ITEM_rptr(ref) (&(ref##_it)) - -# define DECLARE_ASN1_ITEM(name) \ - OPENSSL_EXTERN const ASN1_ITEM name##_it; - -# else - -/* - * Platforms that can't easily handle shared global variables are declared as - * functions returning ASN1_ITEM pointers. - */ - -/* ASN1_ITEM pointer exported type */ -typedef const ASN1_ITEM *ASN1_ITEM_EXP (void); - -/* Macro to obtain ASN1_ITEM pointer from exported type */ -# define ASN1_ITEM_ptr(iptr) (iptr()) - -/* Macro to include ASN1_ITEM pointer from base type */ -# define ASN1_ITEM_ref(iptr) (iptr##_it) - -# define ASN1_ITEM_rptr(ref) (ref##_it()) - -# define DECLARE_ASN1_ITEM(name) \ - const ASN1_ITEM * name##_it(void); - -# endif - -/* Parameters used by ASN1_STRING_print_ex() */ - -/* - * These determine which characters to escape: RFC2253 special characters, - * control characters and MSB set characters - */ - -# define ASN1_STRFLGS_ESC_2253 1 -# define ASN1_STRFLGS_ESC_CTRL 2 -# define ASN1_STRFLGS_ESC_MSB 4 - -/* - * This flag determines how we do escaping: normally RC2253 backslash only, - * set this to use backslash and quote. - */ - -# define ASN1_STRFLGS_ESC_QUOTE 8 - -/* These three flags are internal use only. */ - -/* Character is a valid PrintableString character */ -# define CHARTYPE_PRINTABLESTRING 0x10 -/* Character needs escaping if it is the first character */ -# define CHARTYPE_FIRST_ESC_2253 0x20 -/* Character needs escaping if it is the last character */ -# define CHARTYPE_LAST_ESC_2253 0x40 - -/* - * NB the internal flags are safely reused below by flags handled at the top - * level. - */ - -/* - * If this is set we convert all character strings to UTF8 first - */ - -# define ASN1_STRFLGS_UTF8_CONVERT 0x10 - -/* - * If this is set we don't attempt to interpret content: just assume all - * strings are 1 byte per character. This will produce some pretty odd - * looking output! - */ - -# define ASN1_STRFLGS_IGNORE_TYPE 0x20 - -/* If this is set we include the string type in the output */ -# define ASN1_STRFLGS_SHOW_TYPE 0x40 - -/* - * This determines which strings to display and which to 'dump' (hex dump of - * content octets or DER encoding). We can only dump non character strings or - * everything. If we don't dump 'unknown' they are interpreted as character - * strings with 1 octet per character and are subject to the usual escaping - * options. - */ - -# define ASN1_STRFLGS_DUMP_ALL 0x80 -# define ASN1_STRFLGS_DUMP_UNKNOWN 0x100 - -/* - * These determine what 'dumping' does, we can dump the content octets or the - * DER encoding: both use the RFC2253 #XXXXX notation. - */ - -# define ASN1_STRFLGS_DUMP_DER 0x200 - -/* - * All the string flags consistent with RFC2253, escaping control characters - * isn't essential in RFC2253 but it is advisable anyway. - */ - -# define ASN1_STRFLGS_RFC2253 (ASN1_STRFLGS_ESC_2253 | \ - ASN1_STRFLGS_ESC_CTRL | \ - ASN1_STRFLGS_ESC_MSB | \ - ASN1_STRFLGS_UTF8_CONVERT | \ - ASN1_STRFLGS_DUMP_UNKNOWN | \ - ASN1_STRFLGS_DUMP_DER) - -DECLARE_STACK_OF(ASN1_INTEGER) -DECLARE_ASN1_SET_OF(ASN1_INTEGER) - -DECLARE_STACK_OF(ASN1_GENERALSTRING) - -typedef struct asn1_type_st { - int type; - union { - char *ptr; - ASN1_BOOLEAN boolean; - ASN1_STRING *asn1_string; - ASN1_OBJECT *object; - ASN1_INTEGER *integer; - ASN1_ENUMERATED *enumerated; - ASN1_BIT_STRING *bit_string; - ASN1_OCTET_STRING *octet_string; - ASN1_PRINTABLESTRING *printablestring; - ASN1_T61STRING *t61string; - ASN1_IA5STRING *ia5string; - ASN1_GENERALSTRING *generalstring; - ASN1_BMPSTRING *bmpstring; - ASN1_UNIVERSALSTRING *universalstring; - ASN1_UTCTIME *utctime; - ASN1_GENERALIZEDTIME *generalizedtime; - ASN1_VISIBLESTRING *visiblestring; - ASN1_UTF8STRING *utf8string; - /* - * set and sequence are left complete and still contain the set or - * sequence bytes - */ - ASN1_STRING *set; - ASN1_STRING *sequence; - ASN1_VALUE *asn1_value; - } value; -} ASN1_TYPE; - -DECLARE_STACK_OF(ASN1_TYPE) -DECLARE_ASN1_SET_OF(ASN1_TYPE) - -typedef STACK_OF(ASN1_TYPE) ASN1_SEQUENCE_ANY; - -DECLARE_ASN1_ENCODE_FUNCTIONS_const(ASN1_SEQUENCE_ANY, ASN1_SEQUENCE_ANY) -DECLARE_ASN1_ENCODE_FUNCTIONS_const(ASN1_SEQUENCE_ANY, ASN1_SET_ANY) - -typedef struct NETSCAPE_X509_st { - ASN1_OCTET_STRING *header; - X509 *cert; -} NETSCAPE_X509; - -/* This is used to contain a list of bit names */ -typedef struct BIT_STRING_BITNAME_st { - int bitnum; - const char *lname; - const char *sname; -} BIT_STRING_BITNAME; - -# define M_ASN1_STRING_length(x) ((x)->length) -# define M_ASN1_STRING_length_set(x, n) ((x)->length = (n)) -# define M_ASN1_STRING_type(x) ((x)->type) -# define M_ASN1_STRING_data(x) ((x)->data) - -/* Macros for string operations */ -# define M_ASN1_BIT_STRING_new() (ASN1_BIT_STRING *)\ - ASN1_STRING_type_new(V_ASN1_BIT_STRING) -# define M_ASN1_BIT_STRING_free(a) ASN1_STRING_free((ASN1_STRING *)a) -# define M_ASN1_BIT_STRING_dup(a) (ASN1_BIT_STRING *)\ - ASN1_STRING_dup((const ASN1_STRING *)a) -# define M_ASN1_BIT_STRING_cmp(a,b) ASN1_STRING_cmp(\ - (const ASN1_STRING *)a,(const ASN1_STRING *)b) -# define M_ASN1_BIT_STRING_set(a,b,c) ASN1_STRING_set((ASN1_STRING *)a,b,c) - -# define M_ASN1_INTEGER_new() (ASN1_INTEGER *)\ - ASN1_STRING_type_new(V_ASN1_INTEGER) -# define M_ASN1_INTEGER_free(a) ASN1_STRING_free((ASN1_STRING *)a) -# define M_ASN1_INTEGER_dup(a) (ASN1_INTEGER *)\ - ASN1_STRING_dup((const ASN1_STRING *)a) -# define M_ASN1_INTEGER_cmp(a,b) ASN1_STRING_cmp(\ - (const ASN1_STRING *)a,(const ASN1_STRING *)b) - -# define M_ASN1_ENUMERATED_new() (ASN1_ENUMERATED *)\ - ASN1_STRING_type_new(V_ASN1_ENUMERATED) -# define M_ASN1_ENUMERATED_free(a) ASN1_STRING_free((ASN1_STRING *)a) -# define M_ASN1_ENUMERATED_dup(a) (ASN1_ENUMERATED *)\ - ASN1_STRING_dup((const ASN1_STRING *)a) -# define M_ASN1_ENUMERATED_cmp(a,b) ASN1_STRING_cmp(\ - (const ASN1_STRING *)a,(const ASN1_STRING *)b) - -# define M_ASN1_OCTET_STRING_new() (ASN1_OCTET_STRING *)\ - ASN1_STRING_type_new(V_ASN1_OCTET_STRING) -# define M_ASN1_OCTET_STRING_free(a) ASN1_STRING_free((ASN1_STRING *)a) -# define M_ASN1_OCTET_STRING_dup(a) (ASN1_OCTET_STRING *)\ - ASN1_STRING_dup((const ASN1_STRING *)a) -# define M_ASN1_OCTET_STRING_cmp(a,b) ASN1_STRING_cmp(\ - (const ASN1_STRING *)a,(const ASN1_STRING *)b) -# define M_ASN1_OCTET_STRING_set(a,b,c) ASN1_STRING_set((ASN1_STRING *)a,b,c) -# define M_ASN1_OCTET_STRING_print(a,b) ASN1_STRING_print(a,(ASN1_STRING *)b) -# define M_i2d_ASN1_OCTET_STRING(a,pp) \ - i2d_ASN1_bytes((ASN1_STRING *)a,pp,V_ASN1_OCTET_STRING,\ - V_ASN1_UNIVERSAL) - -# define B_ASN1_TIME \ - B_ASN1_UTCTIME | \ - B_ASN1_GENERALIZEDTIME - -# define B_ASN1_PRINTABLE \ - B_ASN1_NUMERICSTRING| \ - B_ASN1_PRINTABLESTRING| \ - B_ASN1_T61STRING| \ - B_ASN1_IA5STRING| \ - B_ASN1_BIT_STRING| \ - B_ASN1_UNIVERSALSTRING|\ - B_ASN1_BMPSTRING|\ - B_ASN1_UTF8STRING|\ - B_ASN1_SEQUENCE|\ - B_ASN1_UNKNOWN - -# define B_ASN1_DIRECTORYSTRING \ - B_ASN1_PRINTABLESTRING| \ - B_ASN1_TELETEXSTRING|\ - B_ASN1_BMPSTRING|\ - B_ASN1_UNIVERSALSTRING|\ - B_ASN1_UTF8STRING - -# define B_ASN1_DISPLAYTEXT \ - B_ASN1_IA5STRING| \ - B_ASN1_VISIBLESTRING| \ - B_ASN1_BMPSTRING|\ - B_ASN1_UTF8STRING - -# define M_ASN1_PRINTABLE_new() ASN1_STRING_type_new(V_ASN1_T61STRING) -# define M_ASN1_PRINTABLE_free(a) ASN1_STRING_free((ASN1_STRING *)a) -# define M_i2d_ASN1_PRINTABLE(a,pp) i2d_ASN1_bytes((ASN1_STRING *)a,\ - pp,a->type,V_ASN1_UNIVERSAL) -# define M_d2i_ASN1_PRINTABLE(a,pp,l) \ - d2i_ASN1_type_bytes((ASN1_STRING **)a,pp,l, \ - B_ASN1_PRINTABLE) - -# define M_DIRECTORYSTRING_new() ASN1_STRING_type_new(V_ASN1_PRINTABLESTRING) -# define M_DIRECTORYSTRING_free(a) ASN1_STRING_free((ASN1_STRING *)a) -# define M_i2d_DIRECTORYSTRING(a,pp) i2d_ASN1_bytes((ASN1_STRING *)a,\ - pp,a->type,V_ASN1_UNIVERSAL) -# define M_d2i_DIRECTORYSTRING(a,pp,l) \ - d2i_ASN1_type_bytes((ASN1_STRING **)a,pp,l, \ - B_ASN1_DIRECTORYSTRING) - -# define M_DISPLAYTEXT_new() ASN1_STRING_type_new(V_ASN1_VISIBLESTRING) -# define M_DISPLAYTEXT_free(a) ASN1_STRING_free((ASN1_STRING *)a) -# define M_i2d_DISPLAYTEXT(a,pp) i2d_ASN1_bytes((ASN1_STRING *)a,\ - pp,a->type,V_ASN1_UNIVERSAL) -# define M_d2i_DISPLAYTEXT(a,pp,l) \ - d2i_ASN1_type_bytes((ASN1_STRING **)a,pp,l, \ - B_ASN1_DISPLAYTEXT) - -# define M_ASN1_PRINTABLESTRING_new() (ASN1_PRINTABLESTRING *)\ - ASN1_STRING_type_new(V_ASN1_PRINTABLESTRING) -# define M_ASN1_PRINTABLESTRING_free(a) ASN1_STRING_free((ASN1_STRING *)a) -# define M_i2d_ASN1_PRINTABLESTRING(a,pp) \ - i2d_ASN1_bytes((ASN1_STRING *)a,pp,V_ASN1_PRINTABLESTRING,\ - V_ASN1_UNIVERSAL) -# define M_d2i_ASN1_PRINTABLESTRING(a,pp,l) \ - (ASN1_PRINTABLESTRING *)d2i_ASN1_type_bytes\ - ((ASN1_STRING **)a,pp,l,B_ASN1_PRINTABLESTRING) - -# define M_ASN1_T61STRING_new() (ASN1_T61STRING *)\ - ASN1_STRING_type_new(V_ASN1_T61STRING) -# define M_ASN1_T61STRING_free(a) ASN1_STRING_free((ASN1_STRING *)a) -# define M_i2d_ASN1_T61STRING(a,pp) \ - i2d_ASN1_bytes((ASN1_STRING *)a,pp,V_ASN1_T61STRING,\ - V_ASN1_UNIVERSAL) -# define M_d2i_ASN1_T61STRING(a,pp,l) \ - (ASN1_T61STRING *)d2i_ASN1_type_bytes\ - ((ASN1_STRING **)a,pp,l,B_ASN1_T61STRING) - -# define M_ASN1_IA5STRING_new() (ASN1_IA5STRING *)\ - ASN1_STRING_type_new(V_ASN1_IA5STRING) -# define M_ASN1_IA5STRING_free(a) ASN1_STRING_free((ASN1_STRING *)a) -# define M_ASN1_IA5STRING_dup(a) \ - (ASN1_IA5STRING *)ASN1_STRING_dup((const ASN1_STRING *)a) -# define M_i2d_ASN1_IA5STRING(a,pp) \ - i2d_ASN1_bytes((ASN1_STRING *)a,pp,V_ASN1_IA5STRING,\ - V_ASN1_UNIVERSAL) -# define M_d2i_ASN1_IA5STRING(a,pp,l) \ - (ASN1_IA5STRING *)d2i_ASN1_type_bytes((ASN1_STRING **)a,pp,l,\ - B_ASN1_IA5STRING) - -# define M_ASN1_UTCTIME_new() (ASN1_UTCTIME *)\ - ASN1_STRING_type_new(V_ASN1_UTCTIME) -# define M_ASN1_UTCTIME_free(a) ASN1_STRING_free((ASN1_STRING *)a) -# define M_ASN1_UTCTIME_dup(a) (ASN1_UTCTIME *)\ - ASN1_STRING_dup((const ASN1_STRING *)a) - -# define M_ASN1_GENERALIZEDTIME_new() (ASN1_GENERALIZEDTIME *)\ - ASN1_STRING_type_new(V_ASN1_GENERALIZEDTIME) -# define M_ASN1_GENERALIZEDTIME_free(a) ASN1_STRING_free((ASN1_STRING *)a) -# define M_ASN1_GENERALIZEDTIME_dup(a) (ASN1_GENERALIZEDTIME *)ASN1_STRING_dup(\ - (const ASN1_STRING *)a) - -# define M_ASN1_TIME_new() (ASN1_TIME *)\ - ASN1_STRING_type_new(V_ASN1_UTCTIME) -# define M_ASN1_TIME_free(a) ASN1_STRING_free((ASN1_STRING *)a) -# define M_ASN1_TIME_dup(a) (ASN1_TIME *)\ - ASN1_STRING_dup((const ASN1_STRING *)a) - -# define M_ASN1_GENERALSTRING_new() (ASN1_GENERALSTRING *)\ - ASN1_STRING_type_new(V_ASN1_GENERALSTRING) -# define M_ASN1_GENERALSTRING_free(a) ASN1_STRING_free((ASN1_STRING *)a) -# define M_i2d_ASN1_GENERALSTRING(a,pp) \ - i2d_ASN1_bytes((ASN1_STRING *)a,pp,V_ASN1_GENERALSTRING,\ - V_ASN1_UNIVERSAL) -# define M_d2i_ASN1_GENERALSTRING(a,pp,l) \ - (ASN1_GENERALSTRING *)d2i_ASN1_type_bytes\ - ((ASN1_STRING **)a,pp,l,B_ASN1_GENERALSTRING) - -# define M_ASN1_UNIVERSALSTRING_new() (ASN1_UNIVERSALSTRING *)\ - ASN1_STRING_type_new(V_ASN1_UNIVERSALSTRING) -# define M_ASN1_UNIVERSALSTRING_free(a) ASN1_STRING_free((ASN1_STRING *)a) -# define M_i2d_ASN1_UNIVERSALSTRING(a,pp) \ - i2d_ASN1_bytes((ASN1_STRING *)a,pp,V_ASN1_UNIVERSALSTRING,\ - V_ASN1_UNIVERSAL) -# define M_d2i_ASN1_UNIVERSALSTRING(a,pp,l) \ - (ASN1_UNIVERSALSTRING *)d2i_ASN1_type_bytes\ - ((ASN1_STRING **)a,pp,l,B_ASN1_UNIVERSALSTRING) - -# define M_ASN1_BMPSTRING_new() (ASN1_BMPSTRING *)\ - ASN1_STRING_type_new(V_ASN1_BMPSTRING) -# define M_ASN1_BMPSTRING_free(a) ASN1_STRING_free((ASN1_STRING *)a) -# define M_i2d_ASN1_BMPSTRING(a,pp) \ - i2d_ASN1_bytes((ASN1_STRING *)a,pp,V_ASN1_BMPSTRING,\ - V_ASN1_UNIVERSAL) -# define M_d2i_ASN1_BMPSTRING(a,pp,l) \ - (ASN1_BMPSTRING *)d2i_ASN1_type_bytes\ - ((ASN1_STRING **)a,pp,l,B_ASN1_BMPSTRING) - -# define M_ASN1_VISIBLESTRING_new() (ASN1_VISIBLESTRING *)\ - ASN1_STRING_type_new(V_ASN1_VISIBLESTRING) -# define M_ASN1_VISIBLESTRING_free(a) ASN1_STRING_free((ASN1_STRING *)a) -# define M_i2d_ASN1_VISIBLESTRING(a,pp) \ - i2d_ASN1_bytes((ASN1_STRING *)a,pp,V_ASN1_VISIBLESTRING,\ - V_ASN1_UNIVERSAL) -# define M_d2i_ASN1_VISIBLESTRING(a,pp,l) \ - (ASN1_VISIBLESTRING *)d2i_ASN1_type_bytes\ - ((ASN1_STRING **)a,pp,l,B_ASN1_VISIBLESTRING) - -# define M_ASN1_UTF8STRING_new() (ASN1_UTF8STRING *)\ - ASN1_STRING_type_new(V_ASN1_UTF8STRING) -# define M_ASN1_UTF8STRING_free(a) ASN1_STRING_free((ASN1_STRING *)a) -# define M_i2d_ASN1_UTF8STRING(a,pp) \ - i2d_ASN1_bytes((ASN1_STRING *)a,pp,V_ASN1_UTF8STRING,\ - V_ASN1_UNIVERSAL) -# define M_d2i_ASN1_UTF8STRING(a,pp,l) \ - (ASN1_UTF8STRING *)d2i_ASN1_type_bytes\ - ((ASN1_STRING **)a,pp,l,B_ASN1_UTF8STRING) - - /* for the is_set parameter to i2d_ASN1_SET */ -# define IS_SEQUENCE 0 -# define IS_SET 1 - -DECLARE_ASN1_FUNCTIONS_fname(ASN1_TYPE, ASN1_ANY, ASN1_TYPE) - -int ASN1_TYPE_get(ASN1_TYPE *a); -void ASN1_TYPE_set(ASN1_TYPE *a, int type, void *value); -int ASN1_TYPE_set1(ASN1_TYPE *a, int type, const void *value); -int ASN1_TYPE_cmp(const ASN1_TYPE *a, const ASN1_TYPE *b); - -ASN1_OBJECT *ASN1_OBJECT_new(void); -void ASN1_OBJECT_free(ASN1_OBJECT *a); -int i2d_ASN1_OBJECT(ASN1_OBJECT *a, unsigned char **pp); -ASN1_OBJECT *c2i_ASN1_OBJECT(ASN1_OBJECT **a, const unsigned char **pp, - long length); -ASN1_OBJECT *d2i_ASN1_OBJECT(ASN1_OBJECT **a, const unsigned char **pp, - long length); - -DECLARE_ASN1_ITEM(ASN1_OBJECT) - -DECLARE_STACK_OF(ASN1_OBJECT) -DECLARE_ASN1_SET_OF(ASN1_OBJECT) - -ASN1_STRING *ASN1_STRING_new(void); -void ASN1_STRING_free(ASN1_STRING *a); -int ASN1_STRING_copy(ASN1_STRING *dst, const ASN1_STRING *str); -ASN1_STRING *ASN1_STRING_dup(const ASN1_STRING *a); -ASN1_STRING *ASN1_STRING_type_new(int type); -int ASN1_STRING_cmp(const ASN1_STRING *a, const ASN1_STRING *b); - /* - * Since this is used to store all sorts of things, via macros, for now, - * make its data void * - */ -int ASN1_STRING_set(ASN1_STRING *str, const void *data, int len); -void ASN1_STRING_set0(ASN1_STRING *str, void *data, int len); -int ASN1_STRING_length(const ASN1_STRING *x); -void ASN1_STRING_length_set(ASN1_STRING *x, int n); -int ASN1_STRING_type(ASN1_STRING *x); -unsigned char *ASN1_STRING_data(ASN1_STRING *x); - -DECLARE_ASN1_FUNCTIONS(ASN1_BIT_STRING) -int i2c_ASN1_BIT_STRING(ASN1_BIT_STRING *a, unsigned char **pp); -ASN1_BIT_STRING *c2i_ASN1_BIT_STRING(ASN1_BIT_STRING **a, - const unsigned char **pp, long length); -int ASN1_BIT_STRING_set(ASN1_BIT_STRING *a, unsigned char *d, int length); -int ASN1_BIT_STRING_set_bit(ASN1_BIT_STRING *a, int n, int value); -int ASN1_BIT_STRING_get_bit(ASN1_BIT_STRING *a, int n); -int ASN1_BIT_STRING_check(ASN1_BIT_STRING *a, - unsigned char *flags, int flags_len); - -# ifndef OPENSSL_NO_BIO -int ASN1_BIT_STRING_name_print(BIO *out, ASN1_BIT_STRING *bs, - BIT_STRING_BITNAME *tbl, int indent); -# endif -int ASN1_BIT_STRING_num_asc(char *name, BIT_STRING_BITNAME *tbl); -int ASN1_BIT_STRING_set_asc(ASN1_BIT_STRING *bs, char *name, int value, - BIT_STRING_BITNAME *tbl); - -int i2d_ASN1_BOOLEAN(int a, unsigned char **pp); -int d2i_ASN1_BOOLEAN(int *a, const unsigned char **pp, long length); - -DECLARE_ASN1_FUNCTIONS(ASN1_INTEGER) -int i2c_ASN1_INTEGER(ASN1_INTEGER *a, unsigned char **pp); -ASN1_INTEGER *c2i_ASN1_INTEGER(ASN1_INTEGER **a, const unsigned char **pp, - long length); -ASN1_INTEGER *d2i_ASN1_UINTEGER(ASN1_INTEGER **a, const unsigned char **pp, - long length); -ASN1_INTEGER *ASN1_INTEGER_dup(const ASN1_INTEGER *x); -int ASN1_INTEGER_cmp(const ASN1_INTEGER *x, const ASN1_INTEGER *y); - -DECLARE_ASN1_FUNCTIONS(ASN1_ENUMERATED) - -int ASN1_UTCTIME_check(const ASN1_UTCTIME *a); -ASN1_UTCTIME *ASN1_UTCTIME_set(ASN1_UTCTIME *s, time_t t); -ASN1_UTCTIME *ASN1_UTCTIME_adj(ASN1_UTCTIME *s, time_t t, - int offset_day, long offset_sec); -int ASN1_UTCTIME_set_string(ASN1_UTCTIME *s, const char *str); -int ASN1_UTCTIME_cmp_time_t(const ASN1_UTCTIME *s, time_t t); -# if 0 -time_t ASN1_UTCTIME_get(const ASN1_UTCTIME *s); -# endif - -int ASN1_GENERALIZEDTIME_check(const ASN1_GENERALIZEDTIME *a); -ASN1_GENERALIZEDTIME *ASN1_GENERALIZEDTIME_set(ASN1_GENERALIZEDTIME *s, - time_t t); -ASN1_GENERALIZEDTIME *ASN1_GENERALIZEDTIME_adj(ASN1_GENERALIZEDTIME *s, - time_t t, int offset_day, - long offset_sec); -int ASN1_GENERALIZEDTIME_set_string(ASN1_GENERALIZEDTIME *s, const char *str); -int ASN1_TIME_diff(int *pday, int *psec, - const ASN1_TIME *from, const ASN1_TIME *to); - -DECLARE_ASN1_FUNCTIONS(ASN1_OCTET_STRING) -ASN1_OCTET_STRING *ASN1_OCTET_STRING_dup(const ASN1_OCTET_STRING *a); -int ASN1_OCTET_STRING_cmp(const ASN1_OCTET_STRING *a, - const ASN1_OCTET_STRING *b); -int ASN1_OCTET_STRING_set(ASN1_OCTET_STRING *str, const unsigned char *data, - int len); - -DECLARE_ASN1_FUNCTIONS(ASN1_VISIBLESTRING) -DECLARE_ASN1_FUNCTIONS(ASN1_UNIVERSALSTRING) -DECLARE_ASN1_FUNCTIONS(ASN1_UTF8STRING) -DECLARE_ASN1_FUNCTIONS(ASN1_NULL) -DECLARE_ASN1_FUNCTIONS(ASN1_BMPSTRING) - -int UTF8_getc(const unsigned char *str, int len, unsigned long *val); -int UTF8_putc(unsigned char *str, int len, unsigned long value); - -DECLARE_ASN1_FUNCTIONS_name(ASN1_STRING, ASN1_PRINTABLE) - -DECLARE_ASN1_FUNCTIONS_name(ASN1_STRING, DIRECTORYSTRING) -DECLARE_ASN1_FUNCTIONS_name(ASN1_STRING, DISPLAYTEXT) -DECLARE_ASN1_FUNCTIONS(ASN1_PRINTABLESTRING) -DECLARE_ASN1_FUNCTIONS(ASN1_T61STRING) -DECLARE_ASN1_FUNCTIONS(ASN1_IA5STRING) -DECLARE_ASN1_FUNCTIONS(ASN1_GENERALSTRING) -DECLARE_ASN1_FUNCTIONS(ASN1_UTCTIME) -DECLARE_ASN1_FUNCTIONS(ASN1_GENERALIZEDTIME) -DECLARE_ASN1_FUNCTIONS(ASN1_TIME) - -DECLARE_ASN1_ITEM(ASN1_OCTET_STRING_NDEF) - -ASN1_TIME *ASN1_TIME_set(ASN1_TIME *s, time_t t); -ASN1_TIME *ASN1_TIME_adj(ASN1_TIME *s, time_t t, - int offset_day, long offset_sec); -int ASN1_TIME_check(ASN1_TIME *t); -ASN1_GENERALIZEDTIME *ASN1_TIME_to_generalizedtime(ASN1_TIME *t, ASN1_GENERALIZEDTIME - **out); -int ASN1_TIME_set_string(ASN1_TIME *s, const char *str); - -int i2d_ASN1_SET(STACK_OF(OPENSSL_BLOCK) *a, unsigned char **pp, - i2d_of_void *i2d, int ex_tag, int ex_class, int is_set); -STACK_OF(OPENSSL_BLOCK) *d2i_ASN1_SET(STACK_OF(OPENSSL_BLOCK) **a, - const unsigned char **pp, - long length, d2i_of_void *d2i, - void (*free_func) (OPENSSL_BLOCK), - int ex_tag, int ex_class); - -# ifndef OPENSSL_NO_BIO -int i2a_ASN1_INTEGER(BIO *bp, ASN1_INTEGER *a); -int a2i_ASN1_INTEGER(BIO *bp, ASN1_INTEGER *bs, char *buf, int size); -int i2a_ASN1_ENUMERATED(BIO *bp, ASN1_ENUMERATED *a); -int a2i_ASN1_ENUMERATED(BIO *bp, ASN1_ENUMERATED *bs, char *buf, int size); -int i2a_ASN1_OBJECT(BIO *bp, ASN1_OBJECT *a); -int a2i_ASN1_STRING(BIO *bp, ASN1_STRING *bs, char *buf, int size); -int i2a_ASN1_STRING(BIO *bp, ASN1_STRING *a, int type); -# endif -int i2t_ASN1_OBJECT(char *buf, int buf_len, ASN1_OBJECT *a); - -int a2d_ASN1_OBJECT(unsigned char *out, int olen, const char *buf, int num); -ASN1_OBJECT *ASN1_OBJECT_create(int nid, unsigned char *data, int len, - const char *sn, const char *ln); - -int ASN1_INTEGER_set(ASN1_INTEGER *a, long v); -long ASN1_INTEGER_get(const ASN1_INTEGER *a); -ASN1_INTEGER *BN_to_ASN1_INTEGER(const BIGNUM *bn, ASN1_INTEGER *ai); -BIGNUM *ASN1_INTEGER_to_BN(const ASN1_INTEGER *ai, BIGNUM *bn); - -int ASN1_ENUMERATED_set(ASN1_ENUMERATED *a, long v); -long ASN1_ENUMERATED_get(ASN1_ENUMERATED *a); -ASN1_ENUMERATED *BN_to_ASN1_ENUMERATED(BIGNUM *bn, ASN1_ENUMERATED *ai); -BIGNUM *ASN1_ENUMERATED_to_BN(ASN1_ENUMERATED *ai, BIGNUM *bn); - -/* General */ -/* given a string, return the correct type, max is the maximum length */ -int ASN1_PRINTABLE_type(const unsigned char *s, int max); - -int i2d_ASN1_bytes(ASN1_STRING *a, unsigned char **pp, int tag, int xclass); -ASN1_STRING *d2i_ASN1_bytes(ASN1_STRING **a, const unsigned char **pp, - long length, int Ptag, int Pclass); -unsigned long ASN1_tag2bit(int tag); -/* type is one or more of the B_ASN1_ values. */ -ASN1_STRING *d2i_ASN1_type_bytes(ASN1_STRING **a, const unsigned char **pp, - long length, int type); - -/* PARSING */ -int asn1_Finish(ASN1_CTX *c); -int asn1_const_Finish(ASN1_const_CTX *c); - -/* SPECIALS */ -int ASN1_get_object(const unsigned char **pp, long *plength, int *ptag, - int *pclass, long omax); -int ASN1_check_infinite_end(unsigned char **p, long len); -int ASN1_const_check_infinite_end(const unsigned char **p, long len); -void ASN1_put_object(unsigned char **pp, int constructed, int length, - int tag, int xclass); -int ASN1_put_eoc(unsigned char **pp); -int ASN1_object_size(int constructed, int length, int tag); - -/* Used to implement other functions */ -void *ASN1_dup(i2d_of_void *i2d, d2i_of_void *d2i, void *x); - -# define ASN1_dup_of(type,i2d,d2i,x) \ - ((type*)ASN1_dup(CHECKED_I2D_OF(type, i2d), \ - CHECKED_D2I_OF(type, d2i), \ - CHECKED_PTR_OF(type, x))) - -# define ASN1_dup_of_const(type,i2d,d2i,x) \ - ((type*)ASN1_dup(CHECKED_I2D_OF(const type, i2d), \ - CHECKED_D2I_OF(type, d2i), \ - CHECKED_PTR_OF(const type, x))) - -void *ASN1_item_dup(const ASN1_ITEM *it, void *x); - -/* ASN1 alloc/free macros for when a type is only used internally */ - -# define M_ASN1_new_of(type) (type *)ASN1_item_new(ASN1_ITEM_rptr(type)) -# define M_ASN1_free_of(x, type) \ - ASN1_item_free(CHECKED_PTR_OF(type, x), ASN1_ITEM_rptr(type)) - -# ifndef OPENSSL_NO_FP_API -void *ASN1_d2i_fp(void *(*xnew) (void), d2i_of_void *d2i, FILE *in, void **x); - -# define ASN1_d2i_fp_of(type,xnew,d2i,in,x) \ - ((type*)ASN1_d2i_fp(CHECKED_NEW_OF(type, xnew), \ - CHECKED_D2I_OF(type, d2i), \ - in, \ - CHECKED_PPTR_OF(type, x))) - -void *ASN1_item_d2i_fp(const ASN1_ITEM *it, FILE *in, void *x); -int ASN1_i2d_fp(i2d_of_void *i2d, FILE *out, void *x); - -# define ASN1_i2d_fp_of(type,i2d,out,x) \ - (ASN1_i2d_fp(CHECKED_I2D_OF(type, i2d), \ - out, \ - CHECKED_PTR_OF(type, x))) - -# define ASN1_i2d_fp_of_const(type,i2d,out,x) \ - (ASN1_i2d_fp(CHECKED_I2D_OF(const type, i2d), \ - out, \ - CHECKED_PTR_OF(const type, x))) - -int ASN1_item_i2d_fp(const ASN1_ITEM *it, FILE *out, void *x); -int ASN1_STRING_print_ex_fp(FILE *fp, ASN1_STRING *str, unsigned long flags); -# endif - -int ASN1_STRING_to_UTF8(unsigned char **out, ASN1_STRING *in); - -# ifndef OPENSSL_NO_BIO -void *ASN1_d2i_bio(void *(*xnew) (void), d2i_of_void *d2i, BIO *in, void **x); - -# define ASN1_d2i_bio_of(type,xnew,d2i,in,x) \ - ((type*)ASN1_d2i_bio( CHECKED_NEW_OF(type, xnew), \ - CHECKED_D2I_OF(type, d2i), \ - in, \ - CHECKED_PPTR_OF(type, x))) - -void *ASN1_item_d2i_bio(const ASN1_ITEM *it, BIO *in, void *x); -int ASN1_i2d_bio(i2d_of_void *i2d, BIO *out, unsigned char *x); - -# define ASN1_i2d_bio_of(type,i2d,out,x) \ - (ASN1_i2d_bio(CHECKED_I2D_OF(type, i2d), \ - out, \ - CHECKED_PTR_OF(type, x))) - -# define ASN1_i2d_bio_of_const(type,i2d,out,x) \ - (ASN1_i2d_bio(CHECKED_I2D_OF(const type, i2d), \ - out, \ - CHECKED_PTR_OF(const type, x))) - -int ASN1_item_i2d_bio(const ASN1_ITEM *it, BIO *out, void *x); -int ASN1_UTCTIME_print(BIO *fp, const ASN1_UTCTIME *a); -int ASN1_GENERALIZEDTIME_print(BIO *fp, const ASN1_GENERALIZEDTIME *a); -int ASN1_TIME_print(BIO *fp, const ASN1_TIME *a); -int ASN1_STRING_print(BIO *bp, const ASN1_STRING *v); -int ASN1_STRING_print_ex(BIO *out, ASN1_STRING *str, unsigned long flags); -int ASN1_bn_print(BIO *bp, const char *number, const BIGNUM *num, - unsigned char *buf, int off); -int ASN1_parse(BIO *bp, const unsigned char *pp, long len, int indent); -int ASN1_parse_dump(BIO *bp, const unsigned char *pp, long len, int indent, - int dump); -# endif -const char *ASN1_tag2str(int tag); - -/* Used to load and write netscape format cert */ - -DECLARE_ASN1_FUNCTIONS(NETSCAPE_X509) - -int ASN1_UNIVERSALSTRING_to_string(ASN1_UNIVERSALSTRING *s); - -int ASN1_TYPE_set_octetstring(ASN1_TYPE *a, unsigned char *data, int len); -int ASN1_TYPE_get_octetstring(ASN1_TYPE *a, unsigned char *data, int max_len); -int ASN1_TYPE_set_int_octetstring(ASN1_TYPE *a, long num, - unsigned char *data, int len); -int ASN1_TYPE_get_int_octetstring(ASN1_TYPE *a, long *num, - unsigned char *data, int max_len); - -STACK_OF(OPENSSL_BLOCK) *ASN1_seq_unpack(const unsigned char *buf, int len, - d2i_of_void *d2i, - void (*free_func) (OPENSSL_BLOCK)); -unsigned char *ASN1_seq_pack(STACK_OF(OPENSSL_BLOCK) *safes, i2d_of_void *i2d, - unsigned char **buf, int *len); -void *ASN1_unpack_string(ASN1_STRING *oct, d2i_of_void *d2i); -void *ASN1_item_unpack(ASN1_STRING *oct, const ASN1_ITEM *it); -ASN1_STRING *ASN1_pack_string(void *obj, i2d_of_void *i2d, - ASN1_OCTET_STRING **oct); - -# define ASN1_pack_string_of(type,obj,i2d,oct) \ - (ASN1_pack_string(CHECKED_PTR_OF(type, obj), \ - CHECKED_I2D_OF(type, i2d), \ - oct)) - -ASN1_STRING *ASN1_item_pack(void *obj, const ASN1_ITEM *it, - ASN1_OCTET_STRING **oct); - -void ASN1_STRING_set_default_mask(unsigned long mask); -int ASN1_STRING_set_default_mask_asc(const char *p); -unsigned long ASN1_STRING_get_default_mask(void); -int ASN1_mbstring_copy(ASN1_STRING **out, const unsigned char *in, int len, - int inform, unsigned long mask); -int ASN1_mbstring_ncopy(ASN1_STRING **out, const unsigned char *in, int len, - int inform, unsigned long mask, - long minsize, long maxsize); - -ASN1_STRING *ASN1_STRING_set_by_NID(ASN1_STRING **out, - const unsigned char *in, int inlen, - int inform, int nid); -ASN1_STRING_TABLE *ASN1_STRING_TABLE_get(int nid); -int ASN1_STRING_TABLE_add(int, long, long, unsigned long, unsigned long); -void ASN1_STRING_TABLE_cleanup(void); - -/* ASN1 template functions */ - -/* Old API compatible functions */ -ASN1_VALUE *ASN1_item_new(const ASN1_ITEM *it); -void ASN1_item_free(ASN1_VALUE *val, const ASN1_ITEM *it); -ASN1_VALUE *ASN1_item_d2i(ASN1_VALUE **val, const unsigned char **in, - long len, const ASN1_ITEM *it); -int ASN1_item_i2d(ASN1_VALUE *val, unsigned char **out, const ASN1_ITEM *it); -int ASN1_item_ndef_i2d(ASN1_VALUE *val, unsigned char **out, - const ASN1_ITEM *it); - -void ASN1_add_oid_module(void); - -ASN1_TYPE *ASN1_generate_nconf(char *str, CONF *nconf); -ASN1_TYPE *ASN1_generate_v3(char *str, X509V3_CTX *cnf); - -/* ASN1 Print flags */ - -/* Indicate missing OPTIONAL fields */ -# define ASN1_PCTX_FLAGS_SHOW_ABSENT 0x001 -/* Mark start and end of SEQUENCE */ -# define ASN1_PCTX_FLAGS_SHOW_SEQUENCE 0x002 -/* Mark start and end of SEQUENCE/SET OF */ -# define ASN1_PCTX_FLAGS_SHOW_SSOF 0x004 -/* Show the ASN1 type of primitives */ -# define ASN1_PCTX_FLAGS_SHOW_TYPE 0x008 -/* Don't show ASN1 type of ANY */ -# define ASN1_PCTX_FLAGS_NO_ANY_TYPE 0x010 -/* Don't show ASN1 type of MSTRINGs */ -# define ASN1_PCTX_FLAGS_NO_MSTRING_TYPE 0x020 -/* Don't show field names in SEQUENCE */ -# define ASN1_PCTX_FLAGS_NO_FIELD_NAME 0x040 -/* Show structure names of each SEQUENCE field */ -# define ASN1_PCTX_FLAGS_SHOW_FIELD_STRUCT_NAME 0x080 -/* Don't show structure name even at top level */ -# define ASN1_PCTX_FLAGS_NO_STRUCT_NAME 0x100 - -int ASN1_item_print(BIO *out, ASN1_VALUE *ifld, int indent, - const ASN1_ITEM *it, const ASN1_PCTX *pctx); -ASN1_PCTX *ASN1_PCTX_new(void); -void ASN1_PCTX_free(ASN1_PCTX *p); -unsigned long ASN1_PCTX_get_flags(ASN1_PCTX *p); -void ASN1_PCTX_set_flags(ASN1_PCTX *p, unsigned long flags); -unsigned long ASN1_PCTX_get_nm_flags(ASN1_PCTX *p); -void ASN1_PCTX_set_nm_flags(ASN1_PCTX *p, unsigned long flags); -unsigned long ASN1_PCTX_get_cert_flags(ASN1_PCTX *p); -void ASN1_PCTX_set_cert_flags(ASN1_PCTX *p, unsigned long flags); -unsigned long ASN1_PCTX_get_oid_flags(ASN1_PCTX *p); -void ASN1_PCTX_set_oid_flags(ASN1_PCTX *p, unsigned long flags); -unsigned long ASN1_PCTX_get_str_flags(ASN1_PCTX *p); -void ASN1_PCTX_set_str_flags(ASN1_PCTX *p, unsigned long flags); - -BIO_METHOD *BIO_f_asn1(void); - -BIO *BIO_new_NDEF(BIO *out, ASN1_VALUE *val, const ASN1_ITEM *it); - -int i2d_ASN1_bio_stream(BIO *out, ASN1_VALUE *val, BIO *in, int flags, - const ASN1_ITEM *it); -int PEM_write_bio_ASN1_stream(BIO *out, ASN1_VALUE *val, BIO *in, int flags, - const char *hdr, const ASN1_ITEM *it); -int SMIME_write_ASN1(BIO *bio, ASN1_VALUE *val, BIO *data, int flags, - int ctype_nid, int econt_nid, - STACK_OF(X509_ALGOR) *mdalgs, const ASN1_ITEM *it); -ASN1_VALUE *SMIME_read_ASN1(BIO *bio, BIO **bcont, const ASN1_ITEM *it); -int SMIME_crlf_copy(BIO *in, BIO *out, int flags); -int SMIME_text(BIO *in, BIO *out); - -/* BEGIN ERROR CODES */ -/* - * The following lines are auto generated by the script mkerr.pl. Any changes - * made after this point may be overwritten when the script is next run. - */ -void ERR_load_ASN1_strings(void); - -/* Error codes for the ASN1 functions. */ - -/* Function codes. */ -# define ASN1_F_A2D_ASN1_OBJECT 100 -# define ASN1_F_A2I_ASN1_ENUMERATED 101 -# define ASN1_F_A2I_ASN1_INTEGER 102 -# define ASN1_F_A2I_ASN1_STRING 103 -# define ASN1_F_APPEND_EXP 176 -# define ASN1_F_ASN1_BIT_STRING_SET_BIT 183 -# define ASN1_F_ASN1_CB 177 -# define ASN1_F_ASN1_CHECK_TLEN 104 -# define ASN1_F_ASN1_COLLATE_PRIMITIVE 105 -# define ASN1_F_ASN1_COLLECT 106 -# define ASN1_F_ASN1_D2I_EX_PRIMITIVE 108 -# define ASN1_F_ASN1_D2I_FP 109 -# define ASN1_F_ASN1_D2I_READ_BIO 107 -# define ASN1_F_ASN1_DIGEST 184 -# define ASN1_F_ASN1_DO_ADB 110 -# define ASN1_F_ASN1_DUP 111 -# define ASN1_F_ASN1_ENUMERATED_SET 112 -# define ASN1_F_ASN1_ENUMERATED_TO_BN 113 -# define ASN1_F_ASN1_EX_C2I 204 -# define ASN1_F_ASN1_FIND_END 190 -# define ASN1_F_ASN1_GENERALIZEDTIME_ADJ 216 -# define ASN1_F_ASN1_GENERALIZEDTIME_SET 185 -# define ASN1_F_ASN1_GENERATE_V3 178 -# define ASN1_F_ASN1_GET_OBJECT 114 -# define ASN1_F_ASN1_HEADER_NEW 115 -# define ASN1_F_ASN1_I2D_BIO 116 -# define ASN1_F_ASN1_I2D_FP 117 -# define ASN1_F_ASN1_INTEGER_SET 118 -# define ASN1_F_ASN1_INTEGER_TO_BN 119 -# define ASN1_F_ASN1_ITEM_D2I_FP 206 -# define ASN1_F_ASN1_ITEM_DUP 191 -# define ASN1_F_ASN1_ITEM_EX_COMBINE_NEW 121 -# define ASN1_F_ASN1_ITEM_EX_D2I 120 -# define ASN1_F_ASN1_ITEM_I2D_BIO 192 -# define ASN1_F_ASN1_ITEM_I2D_FP 193 -# define ASN1_F_ASN1_ITEM_PACK 198 -# define ASN1_F_ASN1_ITEM_SIGN 195 -# define ASN1_F_ASN1_ITEM_SIGN_CTX 220 -# define ASN1_F_ASN1_ITEM_UNPACK 199 -# define ASN1_F_ASN1_ITEM_VERIFY 197 -# define ASN1_F_ASN1_MBSTRING_NCOPY 122 -# define ASN1_F_ASN1_OBJECT_NEW 123 -# define ASN1_F_ASN1_OUTPUT_DATA 214 -# define ASN1_F_ASN1_PACK_STRING 124 -# define ASN1_F_ASN1_PCTX_NEW 205 -# define ASN1_F_ASN1_PKCS5_PBE_SET 125 -# define ASN1_F_ASN1_SEQ_PACK 126 -# define ASN1_F_ASN1_SEQ_UNPACK 127 -# define ASN1_F_ASN1_SIGN 128 -# define ASN1_F_ASN1_STR2TYPE 179 -# define ASN1_F_ASN1_STRING_SET 186 -# define ASN1_F_ASN1_STRING_TABLE_ADD 129 -# define ASN1_F_ASN1_STRING_TYPE_NEW 130 -# define ASN1_F_ASN1_TEMPLATE_EX_D2I 132 -# define ASN1_F_ASN1_TEMPLATE_NEW 133 -# define ASN1_F_ASN1_TEMPLATE_NOEXP_D2I 131 -# define ASN1_F_ASN1_TIME_ADJ 217 -# define ASN1_F_ASN1_TIME_SET 175 -# define ASN1_F_ASN1_TYPE_GET_INT_OCTETSTRING 134 -# define ASN1_F_ASN1_TYPE_GET_OCTETSTRING 135 -# define ASN1_F_ASN1_UNPACK_STRING 136 -# define ASN1_F_ASN1_UTCTIME_ADJ 218 -# define ASN1_F_ASN1_UTCTIME_SET 187 -# define ASN1_F_ASN1_VERIFY 137 -# define ASN1_F_B64_READ_ASN1 209 -# define ASN1_F_B64_WRITE_ASN1 210 -# define ASN1_F_BIO_NEW_NDEF 208 -# define ASN1_F_BITSTR_CB 180 -# define ASN1_F_BN_TO_ASN1_ENUMERATED 138 -# define ASN1_F_BN_TO_ASN1_INTEGER 139 -# define ASN1_F_C2I_ASN1_BIT_STRING 189 -# define ASN1_F_C2I_ASN1_INTEGER 194 -# define ASN1_F_C2I_ASN1_OBJECT 196 -# define ASN1_F_COLLECT_DATA 140 -# define ASN1_F_D2I_ASN1_BIT_STRING 141 -# define ASN1_F_D2I_ASN1_BOOLEAN 142 -# define ASN1_F_D2I_ASN1_BYTES 143 -# define ASN1_F_D2I_ASN1_GENERALIZEDTIME 144 -# define ASN1_F_D2I_ASN1_HEADER 145 -# define ASN1_F_D2I_ASN1_INTEGER 146 -# define ASN1_F_D2I_ASN1_OBJECT 147 -# define ASN1_F_D2I_ASN1_SET 148 -# define ASN1_F_D2I_ASN1_TYPE_BYTES 149 -# define ASN1_F_D2I_ASN1_UINTEGER 150 -# define ASN1_F_D2I_ASN1_UTCTIME 151 -# define ASN1_F_D2I_AUTOPRIVATEKEY 207 -# define ASN1_F_D2I_NETSCAPE_RSA 152 -# define ASN1_F_D2I_NETSCAPE_RSA_2 153 -# define ASN1_F_D2I_PRIVATEKEY 154 -# define ASN1_F_D2I_PUBLICKEY 155 -# define ASN1_F_D2I_RSA_NET 200 -# define ASN1_F_D2I_RSA_NET_2 201 -# define ASN1_F_D2I_X509 156 -# define ASN1_F_D2I_X509_CINF 157 -# define ASN1_F_D2I_X509_PKEY 159 -# define ASN1_F_I2D_ASN1_BIO_STREAM 211 -# define ASN1_F_I2D_ASN1_SET 188 -# define ASN1_F_I2D_ASN1_TIME 160 -# define ASN1_F_I2D_DSA_PUBKEY 161 -# define ASN1_F_I2D_EC_PUBKEY 181 -# define ASN1_F_I2D_PRIVATEKEY 163 -# define ASN1_F_I2D_PUBLICKEY 164 -# define ASN1_F_I2D_RSA_NET 162 -# define ASN1_F_I2D_RSA_PUBKEY 165 -# define ASN1_F_LONG_C2I 166 -# define ASN1_F_OID_MODULE_INIT 174 -# define ASN1_F_PARSE_TAGGING 182 -# define ASN1_F_PKCS5_PBE2_SET_IV 167 -# define ASN1_F_PKCS5_PBE_SET 202 -# define ASN1_F_PKCS5_PBE_SET0_ALGOR 215 -# define ASN1_F_PKCS5_PBKDF2_SET 219 -# define ASN1_F_SMIME_READ_ASN1 212 -# define ASN1_F_SMIME_TEXT 213 -# define ASN1_F_X509_CINF_NEW 168 -# define ASN1_F_X509_CRL_ADD0_REVOKED 169 -# define ASN1_F_X509_INFO_NEW 170 -# define ASN1_F_X509_NAME_ENCODE 203 -# define ASN1_F_X509_NAME_EX_D2I 158 -# define ASN1_F_X509_NAME_EX_NEW 171 -# define ASN1_F_X509_NEW 172 -# define ASN1_F_X509_PKEY_NEW 173 - -/* Reason codes. */ -# define ASN1_R_ADDING_OBJECT 171 -# define ASN1_R_ASN1_PARSE_ERROR 203 -# define ASN1_R_ASN1_SIG_PARSE_ERROR 204 -# define ASN1_R_AUX_ERROR 100 -# define ASN1_R_BAD_CLASS 101 -# define ASN1_R_BAD_OBJECT_HEADER 102 -# define ASN1_R_BAD_PASSWORD_READ 103 -# define ASN1_R_BAD_TAG 104 -# define ASN1_R_BMPSTRING_IS_WRONG_LENGTH 214 -# define ASN1_R_BN_LIB 105 -# define ASN1_R_BOOLEAN_IS_WRONG_LENGTH 106 -# define ASN1_R_BUFFER_TOO_SMALL 107 -# define ASN1_R_CIPHER_HAS_NO_OBJECT_IDENTIFIER 108 -# define ASN1_R_CONTEXT_NOT_INITIALISED 217 -# define ASN1_R_DATA_IS_WRONG 109 -# define ASN1_R_DECODE_ERROR 110 -# define ASN1_R_DECODING_ERROR 111 -# define ASN1_R_DEPTH_EXCEEDED 174 -# define ASN1_R_DIGEST_AND_KEY_TYPE_NOT_SUPPORTED 198 -# define ASN1_R_ENCODE_ERROR 112 -# define ASN1_R_ERROR_GETTING_TIME 173 -# define ASN1_R_ERROR_LOADING_SECTION 172 -# define ASN1_R_ERROR_PARSING_SET_ELEMENT 113 -# define ASN1_R_ERROR_SETTING_CIPHER_PARAMS 114 -# define ASN1_R_EXPECTING_AN_INTEGER 115 -# define ASN1_R_EXPECTING_AN_OBJECT 116 -# define ASN1_R_EXPECTING_A_BOOLEAN 117 -# define ASN1_R_EXPECTING_A_TIME 118 -# define ASN1_R_EXPLICIT_LENGTH_MISMATCH 119 -# define ASN1_R_EXPLICIT_TAG_NOT_CONSTRUCTED 120 -# define ASN1_R_FIELD_MISSING 121 -# define ASN1_R_FIRST_NUM_TOO_LARGE 122 -# define ASN1_R_HEADER_TOO_LONG 123 -# define ASN1_R_ILLEGAL_BITSTRING_FORMAT 175 -# define ASN1_R_ILLEGAL_BOOLEAN 176 -# define ASN1_R_ILLEGAL_CHARACTERS 124 -# define ASN1_R_ILLEGAL_FORMAT 177 -# define ASN1_R_ILLEGAL_HEX 178 -# define ASN1_R_ILLEGAL_IMPLICIT_TAG 179 -# define ASN1_R_ILLEGAL_INTEGER 180 -# define ASN1_R_ILLEGAL_NESTED_TAGGING 181 -# define ASN1_R_ILLEGAL_NULL 125 -# define ASN1_R_ILLEGAL_NULL_VALUE 182 -# define ASN1_R_ILLEGAL_OBJECT 183 -# define ASN1_R_ILLEGAL_OPTIONAL_ANY 126 -# define ASN1_R_ILLEGAL_OPTIONS_ON_ITEM_TEMPLATE 170 -# define ASN1_R_ILLEGAL_TAGGED_ANY 127 -# define ASN1_R_ILLEGAL_TIME_VALUE 184 -# define ASN1_R_INTEGER_NOT_ASCII_FORMAT 185 -# define ASN1_R_INTEGER_TOO_LARGE_FOR_LONG 128 -# define ASN1_R_INVALID_BIT_STRING_BITS_LEFT 220 -# define ASN1_R_INVALID_BMPSTRING_LENGTH 129 -# define ASN1_R_INVALID_DIGIT 130 -# define ASN1_R_INVALID_MIME_TYPE 205 -# define ASN1_R_INVALID_MODIFIER 186 -# define ASN1_R_INVALID_NUMBER 187 -# define ASN1_R_INVALID_OBJECT_ENCODING 216 -# define ASN1_R_INVALID_SEPARATOR 131 -# define ASN1_R_INVALID_TIME_FORMAT 132 -# define ASN1_R_INVALID_UNIVERSALSTRING_LENGTH 133 -# define ASN1_R_INVALID_UTF8STRING 134 -# define ASN1_R_IV_TOO_LARGE 135 -# define ASN1_R_LENGTH_ERROR 136 -# define ASN1_R_LIST_ERROR 188 -# define ASN1_R_MIME_NO_CONTENT_TYPE 206 -# define ASN1_R_MIME_PARSE_ERROR 207 -# define ASN1_R_MIME_SIG_PARSE_ERROR 208 -# define ASN1_R_MISSING_EOC 137 -# define ASN1_R_MISSING_SECOND_NUMBER 138 -# define ASN1_R_MISSING_VALUE 189 -# define ASN1_R_MSTRING_NOT_UNIVERSAL 139 -# define ASN1_R_MSTRING_WRONG_TAG 140 -# define ASN1_R_NESTED_ASN1_STRING 197 -# define ASN1_R_NON_HEX_CHARACTERS 141 -# define ASN1_R_NOT_ASCII_FORMAT 190 -# define ASN1_R_NOT_ENOUGH_DATA 142 -# define ASN1_R_NO_CONTENT_TYPE 209 -# define ASN1_R_NO_DEFAULT_DIGEST 201 -# define ASN1_R_NO_MATCHING_CHOICE_TYPE 143 -# define ASN1_R_NO_MULTIPART_BODY_FAILURE 210 -# define ASN1_R_NO_MULTIPART_BOUNDARY 211 -# define ASN1_R_NO_SIG_CONTENT_TYPE 212 -# define ASN1_R_NULL_IS_WRONG_LENGTH 144 -# define ASN1_R_OBJECT_NOT_ASCII_FORMAT 191 -# define ASN1_R_ODD_NUMBER_OF_CHARS 145 -# define ASN1_R_PRIVATE_KEY_HEADER_MISSING 146 -# define ASN1_R_SECOND_NUMBER_TOO_LARGE 147 -# define ASN1_R_SEQUENCE_LENGTH_MISMATCH 148 -# define ASN1_R_SEQUENCE_NOT_CONSTRUCTED 149 -# define ASN1_R_SEQUENCE_OR_SET_NEEDS_CONFIG 192 -# define ASN1_R_SHORT_LINE 150 -# define ASN1_R_SIG_INVALID_MIME_TYPE 213 -# define ASN1_R_STREAMING_NOT_SUPPORTED 202 -# define ASN1_R_STRING_TOO_LONG 151 -# define ASN1_R_STRING_TOO_SHORT 152 -# define ASN1_R_TAG_VALUE_TOO_HIGH 153 -# define ASN1_R_THE_ASN1_OBJECT_IDENTIFIER_IS_NOT_KNOWN_FOR_THIS_MD 154 -# define ASN1_R_TIME_NOT_ASCII_FORMAT 193 -# define ASN1_R_TOO_LONG 155 -# define ASN1_R_TYPE_NOT_CONSTRUCTED 156 -# define ASN1_R_TYPE_NOT_PRIMITIVE 218 -# define ASN1_R_UNABLE_TO_DECODE_RSA_KEY 157 -# define ASN1_R_UNABLE_TO_DECODE_RSA_PRIVATE_KEY 158 -# define ASN1_R_UNEXPECTED_EOC 159 -# define ASN1_R_UNIVERSALSTRING_IS_WRONG_LENGTH 215 -# define ASN1_R_UNKNOWN_FORMAT 160 -# define ASN1_R_UNKNOWN_MESSAGE_DIGEST_ALGORITHM 161 -# define ASN1_R_UNKNOWN_OBJECT_TYPE 162 -# define ASN1_R_UNKNOWN_PUBLIC_KEY_TYPE 163 -# define ASN1_R_UNKNOWN_SIGNATURE_ALGORITHM 199 -# define ASN1_R_UNKNOWN_TAG 194 -# define ASN1_R_UNKOWN_FORMAT 195 -# define ASN1_R_UNSUPPORTED_ANY_DEFINED_BY_TYPE 164 -# define ASN1_R_UNSUPPORTED_CIPHER 165 -# define ASN1_R_UNSUPPORTED_ENCRYPTION_ALGORITHM 166 -# define ASN1_R_UNSUPPORTED_PUBLIC_KEY_TYPE 167 -# define ASN1_R_UNSUPPORTED_TYPE 196 -# define ASN1_R_WRONG_PUBLIC_KEY_TYPE 200 -# define ASN1_R_WRONG_TAG 168 -# define ASN1_R_WRONG_TYPE 169 - -#ifdef __cplusplus -} -#endif -#endif diff --git a/ext/openssl-win32/inc32/openssl/bio.h b/ext/openssl-win32/inc32/openssl/bio.h deleted file mode 100644 index 60083bfd..00000000 --- a/ext/openssl-win32/inc32/openssl/bio.h +++ /dev/null @@ -1,878 +0,0 @@ -/* crypto/bio/bio.h */ -/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) - * All rights reserved. - * - * This package is an SSL implementation written - * by Eric Young (eay@cryptsoft.com). - * The implementation was written so as to conform with Netscapes SSL. - * - * This library is free for commercial and non-commercial use as long as - * the following conditions are aheared to. The following conditions - * apply to all code found in this distribution, be it the RC4, RSA, - * lhash, DES, etc., code; not just the SSL code. The SSL documentation - * included with this distribution is covered by the same copyright terms - * except that the holder is Tim Hudson (tjh@cryptsoft.com). - * - * Copyright remains Eric Young's, and as such any Copyright notices in - * the code are not to be removed. - * If this package is used in a product, Eric Young should be given attribution - * as the author of the parts of the library used. - * This can be in the form of a textual message at program startup or - * in documentation (online or textual) provided with the package. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * "This product includes cryptographic software written by - * Eric Young (eay@cryptsoft.com)" - * The word 'cryptographic' can be left out if the rouines from the library - * being used are not cryptographic related :-). - * 4. If you include any Windows specific code (or a derivative thereof) from - * the apps directory (application code) you must include an acknowledgement: - * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" - * - * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * The licence and distribution terms for any publically available version or - * derivative of this code cannot be changed. i.e. this code cannot simply be - * copied and put under another distribution licence - * [including the GNU Public Licence.] - */ - -#ifndef HEADER_BIO_H -# define HEADER_BIO_H - -# include - -# ifndef OPENSSL_NO_FP_API -# include -# endif -# include - -# include - -# ifndef OPENSSL_NO_SCTP -# ifndef OPENSSL_SYS_VMS -# include -# else -# include -# endif -# endif - -#ifdef __cplusplus -extern "C" { -#endif - -/* These are the 'types' of BIOs */ -# define BIO_TYPE_NONE 0 -# define BIO_TYPE_MEM (1|0x0400) -# define BIO_TYPE_FILE (2|0x0400) - -# define BIO_TYPE_FD (4|0x0400|0x0100) -# define BIO_TYPE_SOCKET (5|0x0400|0x0100) -# define BIO_TYPE_NULL (6|0x0400) -# define BIO_TYPE_SSL (7|0x0200) -# define BIO_TYPE_MD (8|0x0200)/* passive filter */ -# define BIO_TYPE_BUFFER (9|0x0200)/* filter */ -# define BIO_TYPE_CIPHER (10|0x0200)/* filter */ -# define BIO_TYPE_BASE64 (11|0x0200)/* filter */ -# define BIO_TYPE_CONNECT (12|0x0400|0x0100)/* socket - connect */ -# define BIO_TYPE_ACCEPT (13|0x0400|0x0100)/* socket for accept */ -# define BIO_TYPE_PROXY_CLIENT (14|0x0200)/* client proxy BIO */ -# define BIO_TYPE_PROXY_SERVER (15|0x0200)/* server proxy BIO */ -# define BIO_TYPE_NBIO_TEST (16|0x0200)/* server proxy BIO */ -# define BIO_TYPE_NULL_FILTER (17|0x0200) -# define BIO_TYPE_BER (18|0x0200)/* BER -> bin filter */ -# define BIO_TYPE_BIO (19|0x0400)/* (half a) BIO pair */ -# define BIO_TYPE_LINEBUFFER (20|0x0200)/* filter */ -# define BIO_TYPE_DGRAM (21|0x0400|0x0100) -# ifndef OPENSSL_NO_SCTP -# define BIO_TYPE_DGRAM_SCTP (24|0x0400|0x0100) -# endif -# define BIO_TYPE_ASN1 (22|0x0200)/* filter */ -# define BIO_TYPE_COMP (23|0x0200)/* filter */ - -# define BIO_TYPE_DESCRIPTOR 0x0100/* socket, fd, connect or accept */ -# define BIO_TYPE_FILTER 0x0200 -# define BIO_TYPE_SOURCE_SINK 0x0400 - -/* - * BIO_FILENAME_READ|BIO_CLOSE to open or close on free. - * BIO_set_fp(in,stdin,BIO_NOCLOSE); - */ -# define BIO_NOCLOSE 0x00 -# define BIO_CLOSE 0x01 - -/* - * These are used in the following macros and are passed to BIO_ctrl() - */ -# define BIO_CTRL_RESET 1/* opt - rewind/zero etc */ -# define BIO_CTRL_EOF 2/* opt - are we at the eof */ -# define BIO_CTRL_INFO 3/* opt - extra tit-bits */ -# define BIO_CTRL_SET 4/* man - set the 'IO' type */ -# define BIO_CTRL_GET 5/* man - get the 'IO' type */ -# define BIO_CTRL_PUSH 6/* opt - internal, used to signify change */ -# define BIO_CTRL_POP 7/* opt - internal, used to signify change */ -# define BIO_CTRL_GET_CLOSE 8/* man - set the 'close' on free */ -# define BIO_CTRL_SET_CLOSE 9/* man - set the 'close' on free */ -# define BIO_CTRL_PENDING 10/* opt - is their more data buffered */ -# define BIO_CTRL_FLUSH 11/* opt - 'flush' buffered output */ -# define BIO_CTRL_DUP 12/* man - extra stuff for 'duped' BIO */ -# define BIO_CTRL_WPENDING 13/* opt - number of bytes still to write */ -/* callback is int cb(BIO *bio,state,ret); */ -# define BIO_CTRL_SET_CALLBACK 14/* opt - set callback function */ -# define BIO_CTRL_GET_CALLBACK 15/* opt - set callback function */ - -# define BIO_CTRL_SET_FILENAME 30/* BIO_s_file special */ - -/* dgram BIO stuff */ -# define BIO_CTRL_DGRAM_CONNECT 31/* BIO dgram special */ -# define BIO_CTRL_DGRAM_SET_CONNECTED 32/* allow for an externally connected - * socket to be passed in */ -# define BIO_CTRL_DGRAM_SET_RECV_TIMEOUT 33/* setsockopt, essentially */ -# define BIO_CTRL_DGRAM_GET_RECV_TIMEOUT 34/* getsockopt, essentially */ -# define BIO_CTRL_DGRAM_SET_SEND_TIMEOUT 35/* setsockopt, essentially */ -# define BIO_CTRL_DGRAM_GET_SEND_TIMEOUT 36/* getsockopt, essentially */ - -# define BIO_CTRL_DGRAM_GET_RECV_TIMER_EXP 37/* flag whether the last */ -# define BIO_CTRL_DGRAM_GET_SEND_TIMER_EXP 38/* I/O operation tiemd out */ - -/* #ifdef IP_MTU_DISCOVER */ -# define BIO_CTRL_DGRAM_MTU_DISCOVER 39/* set DF bit on egress packets */ -/* #endif */ - -# define BIO_CTRL_DGRAM_QUERY_MTU 40/* as kernel for current MTU */ -# define BIO_CTRL_DGRAM_GET_FALLBACK_MTU 47 -# define BIO_CTRL_DGRAM_GET_MTU 41/* get cached value for MTU */ -# define BIO_CTRL_DGRAM_SET_MTU 42/* set cached value for MTU. - * want to use this if asking - * the kernel fails */ - -# define BIO_CTRL_DGRAM_MTU_EXCEEDED 43/* check whether the MTU was - * exceed in the previous write - * operation */ - -# define BIO_CTRL_DGRAM_GET_PEER 46 -# define BIO_CTRL_DGRAM_SET_PEER 44/* Destination for the data */ - -# define BIO_CTRL_DGRAM_SET_NEXT_TIMEOUT 45/* Next DTLS handshake timeout - * to adjust socket timeouts */ -# define BIO_CTRL_DGRAM_SET_DONT_FRAG 48 - -# define BIO_CTRL_DGRAM_GET_MTU_OVERHEAD 49 - -# ifndef OPENSSL_NO_SCTP -/* SCTP stuff */ -# define BIO_CTRL_DGRAM_SCTP_SET_IN_HANDSHAKE 50 -# define BIO_CTRL_DGRAM_SCTP_ADD_AUTH_KEY 51 -# define BIO_CTRL_DGRAM_SCTP_NEXT_AUTH_KEY 52 -# define BIO_CTRL_DGRAM_SCTP_AUTH_CCS_RCVD 53 -# define BIO_CTRL_DGRAM_SCTP_GET_SNDINFO 60 -# define BIO_CTRL_DGRAM_SCTP_SET_SNDINFO 61 -# define BIO_CTRL_DGRAM_SCTP_GET_RCVINFO 62 -# define BIO_CTRL_DGRAM_SCTP_SET_RCVINFO 63 -# define BIO_CTRL_DGRAM_SCTP_GET_PRINFO 64 -# define BIO_CTRL_DGRAM_SCTP_SET_PRINFO 65 -# define BIO_CTRL_DGRAM_SCTP_SAVE_SHUTDOWN 70 -# endif - -/* modifiers */ -# define BIO_FP_READ 0x02 -# define BIO_FP_WRITE 0x04 -# define BIO_FP_APPEND 0x08 -# define BIO_FP_TEXT 0x10 - -# define BIO_FLAGS_READ 0x01 -# define BIO_FLAGS_WRITE 0x02 -# define BIO_FLAGS_IO_SPECIAL 0x04 -# define BIO_FLAGS_RWS (BIO_FLAGS_READ|BIO_FLAGS_WRITE|BIO_FLAGS_IO_SPECIAL) -# define BIO_FLAGS_SHOULD_RETRY 0x08 -# ifndef BIO_FLAGS_UPLINK -/* - * "UPLINK" flag denotes file descriptors provided by application. It - * defaults to 0, as most platforms don't require UPLINK interface. - */ -# define BIO_FLAGS_UPLINK 0 -# endif - -/* Used in BIO_gethostbyname() */ -# define BIO_GHBN_CTRL_HITS 1 -# define BIO_GHBN_CTRL_MISSES 2 -# define BIO_GHBN_CTRL_CACHE_SIZE 3 -# define BIO_GHBN_CTRL_GET_ENTRY 4 -# define BIO_GHBN_CTRL_FLUSH 5 - -/* Mostly used in the SSL BIO */ -/*- - * Not used anymore - * #define BIO_FLAGS_PROTOCOL_DELAYED_READ 0x10 - * #define BIO_FLAGS_PROTOCOL_DELAYED_WRITE 0x20 - * #define BIO_FLAGS_PROTOCOL_STARTUP 0x40 - */ - -# define BIO_FLAGS_BASE64_NO_NL 0x100 - -/* - * This is used with memory BIOs: it means we shouldn't free up or change the - * data in any way. - */ -# define BIO_FLAGS_MEM_RDONLY 0x200 - -typedef struct bio_st BIO; - -void BIO_set_flags(BIO *b, int flags); -int BIO_test_flags(const BIO *b, int flags); -void BIO_clear_flags(BIO *b, int flags); - -# define BIO_get_flags(b) BIO_test_flags(b, ~(0x0)) -# define BIO_set_retry_special(b) \ - BIO_set_flags(b, (BIO_FLAGS_IO_SPECIAL|BIO_FLAGS_SHOULD_RETRY)) -# define BIO_set_retry_read(b) \ - BIO_set_flags(b, (BIO_FLAGS_READ|BIO_FLAGS_SHOULD_RETRY)) -# define BIO_set_retry_write(b) \ - BIO_set_flags(b, (BIO_FLAGS_WRITE|BIO_FLAGS_SHOULD_RETRY)) - -/* These are normally used internally in BIOs */ -# define BIO_clear_retry_flags(b) \ - BIO_clear_flags(b, (BIO_FLAGS_RWS|BIO_FLAGS_SHOULD_RETRY)) -# define BIO_get_retry_flags(b) \ - BIO_test_flags(b, (BIO_FLAGS_RWS|BIO_FLAGS_SHOULD_RETRY)) - -/* These should be used by the application to tell why we should retry */ -# define BIO_should_read(a) BIO_test_flags(a, BIO_FLAGS_READ) -# define BIO_should_write(a) BIO_test_flags(a, BIO_FLAGS_WRITE) -# define BIO_should_io_special(a) BIO_test_flags(a, BIO_FLAGS_IO_SPECIAL) -# define BIO_retry_type(a) BIO_test_flags(a, BIO_FLAGS_RWS) -# define BIO_should_retry(a) BIO_test_flags(a, BIO_FLAGS_SHOULD_RETRY) - -/* - * The next three are used in conjunction with the BIO_should_io_special() - * condition. After this returns true, BIO *BIO_get_retry_BIO(BIO *bio, int - * *reason); will walk the BIO stack and return the 'reason' for the special - * and the offending BIO. Given a BIO, BIO_get_retry_reason(bio) will return - * the code. - */ -/* - * Returned from the SSL bio when the certificate retrieval code had an error - */ -# define BIO_RR_SSL_X509_LOOKUP 0x01 -/* Returned from the connect BIO when a connect would have blocked */ -# define BIO_RR_CONNECT 0x02 -/* Returned from the accept BIO when an accept would have blocked */ -# define BIO_RR_ACCEPT 0x03 - -/* These are passed by the BIO callback */ -# define BIO_CB_FREE 0x01 -# define BIO_CB_READ 0x02 -# define BIO_CB_WRITE 0x03 -# define BIO_CB_PUTS 0x04 -# define BIO_CB_GETS 0x05 -# define BIO_CB_CTRL 0x06 - -/* - * The callback is called before and after the underling operation, The - * BIO_CB_RETURN flag indicates if it is after the call - */ -# define BIO_CB_RETURN 0x80 -# define BIO_CB_return(a) ((a)|BIO_CB_RETURN)) -# define BIO_cb_pre(a) (!((a)&BIO_CB_RETURN)) -# define BIO_cb_post(a) ((a)&BIO_CB_RETURN) - -long (*BIO_get_callback(const BIO *b)) (struct bio_st *, int, const char *, - int, long, long); -void BIO_set_callback(BIO *b, - long (*callback) (struct bio_st *, int, const char *, - int, long, long)); -char *BIO_get_callback_arg(const BIO *b); -void BIO_set_callback_arg(BIO *b, char *arg); - -const char *BIO_method_name(const BIO *b); -int BIO_method_type(const BIO *b); - -typedef void bio_info_cb (struct bio_st *, int, const char *, int, long, - long); - -typedef struct bio_method_st { - int type; - const char *name; - int (*bwrite) (BIO *, const char *, int); - int (*bread) (BIO *, char *, int); - int (*bputs) (BIO *, const char *); - int (*bgets) (BIO *, char *, int); - long (*ctrl) (BIO *, int, long, void *); - int (*create) (BIO *); - int (*destroy) (BIO *); - long (*callback_ctrl) (BIO *, int, bio_info_cb *); -} BIO_METHOD; - -struct bio_st { - BIO_METHOD *method; - /* bio, mode, argp, argi, argl, ret */ - long (*callback) (struct bio_st *, int, const char *, int, long, long); - char *cb_arg; /* first argument for the callback */ - int init; - int shutdown; - int flags; /* extra storage */ - int retry_reason; - int num; - void *ptr; - struct bio_st *next_bio; /* used by filter BIOs */ - struct bio_st *prev_bio; /* used by filter BIOs */ - int references; - unsigned long num_read; - unsigned long num_write; - CRYPTO_EX_DATA ex_data; -}; - -DECLARE_STACK_OF(BIO) - -typedef struct bio_f_buffer_ctx_struct { - /*- - * Buffers are setup like this: - * - * <---------------------- size -----------------------> - * +---------------------------------------------------+ - * | consumed | remaining | free space | - * +---------------------------------------------------+ - * <-- off --><------- len -------> - */ - /*- BIO *bio; *//* - * this is now in the BIO struct - */ - int ibuf_size; /* how big is the input buffer */ - int obuf_size; /* how big is the output buffer */ - char *ibuf; /* the char array */ - int ibuf_len; /* how many bytes are in it */ - int ibuf_off; /* write/read offset */ - char *obuf; /* the char array */ - int obuf_len; /* how many bytes are in it */ - int obuf_off; /* write/read offset */ -} BIO_F_BUFFER_CTX; - -/* Prefix and suffix callback in ASN1 BIO */ -typedef int asn1_ps_func (BIO *b, unsigned char **pbuf, int *plen, - void *parg); - -# ifndef OPENSSL_NO_SCTP -/* SCTP parameter structs */ -struct bio_dgram_sctp_sndinfo { - uint16_t snd_sid; - uint16_t snd_flags; - uint32_t snd_ppid; - uint32_t snd_context; -}; - -struct bio_dgram_sctp_rcvinfo { - uint16_t rcv_sid; - uint16_t rcv_ssn; - uint16_t rcv_flags; - uint32_t rcv_ppid; - uint32_t rcv_tsn; - uint32_t rcv_cumtsn; - uint32_t rcv_context; -}; - -struct bio_dgram_sctp_prinfo { - uint16_t pr_policy; - uint32_t pr_value; -}; -# endif - -/* connect BIO stuff */ -# define BIO_CONN_S_BEFORE 1 -# define BIO_CONN_S_GET_IP 2 -# define BIO_CONN_S_GET_PORT 3 -# define BIO_CONN_S_CREATE_SOCKET 4 -# define BIO_CONN_S_CONNECT 5 -# define BIO_CONN_S_OK 6 -# define BIO_CONN_S_BLOCKED_CONNECT 7 -# define BIO_CONN_S_NBIO 8 -/* - * #define BIO_CONN_get_param_hostname BIO_ctrl - */ - -# define BIO_C_SET_CONNECT 100 -# define BIO_C_DO_STATE_MACHINE 101 -# define BIO_C_SET_NBIO 102 -# define BIO_C_SET_PROXY_PARAM 103 -# define BIO_C_SET_FD 104 -# define BIO_C_GET_FD 105 -# define BIO_C_SET_FILE_PTR 106 -# define BIO_C_GET_FILE_PTR 107 -# define BIO_C_SET_FILENAME 108 -# define BIO_C_SET_SSL 109 -# define BIO_C_GET_SSL 110 -# define BIO_C_SET_MD 111 -# define BIO_C_GET_MD 112 -# define BIO_C_GET_CIPHER_STATUS 113 -# define BIO_C_SET_BUF_MEM 114 -# define BIO_C_GET_BUF_MEM_PTR 115 -# define BIO_C_GET_BUFF_NUM_LINES 116 -# define BIO_C_SET_BUFF_SIZE 117 -# define BIO_C_SET_ACCEPT 118 -# define BIO_C_SSL_MODE 119 -# define BIO_C_GET_MD_CTX 120 -# define BIO_C_GET_PROXY_PARAM 121 -# define BIO_C_SET_BUFF_READ_DATA 122/* data to read first */ -# define BIO_C_GET_CONNECT 123 -# define BIO_C_GET_ACCEPT 124 -# define BIO_C_SET_SSL_RENEGOTIATE_BYTES 125 -# define BIO_C_GET_SSL_NUM_RENEGOTIATES 126 -# define BIO_C_SET_SSL_RENEGOTIATE_TIMEOUT 127 -# define BIO_C_FILE_SEEK 128 -# define BIO_C_GET_CIPHER_CTX 129 -# define BIO_C_SET_BUF_MEM_EOF_RETURN 130/* return end of input - * value */ -# define BIO_C_SET_BIND_MODE 131 -# define BIO_C_GET_BIND_MODE 132 -# define BIO_C_FILE_TELL 133 -# define BIO_C_GET_SOCKS 134 -# define BIO_C_SET_SOCKS 135 - -# define BIO_C_SET_WRITE_BUF_SIZE 136/* for BIO_s_bio */ -# define BIO_C_GET_WRITE_BUF_SIZE 137 -# define BIO_C_MAKE_BIO_PAIR 138 -# define BIO_C_DESTROY_BIO_PAIR 139 -# define BIO_C_GET_WRITE_GUARANTEE 140 -# define BIO_C_GET_READ_REQUEST 141 -# define BIO_C_SHUTDOWN_WR 142 -# define BIO_C_NREAD0 143 -# define BIO_C_NREAD 144 -# define BIO_C_NWRITE0 145 -# define BIO_C_NWRITE 146 -# define BIO_C_RESET_READ_REQUEST 147 -# define BIO_C_SET_MD_CTX 148 - -# define BIO_C_SET_PREFIX 149 -# define BIO_C_GET_PREFIX 150 -# define BIO_C_SET_SUFFIX 151 -# define BIO_C_GET_SUFFIX 152 - -# define BIO_C_SET_EX_ARG 153 -# define BIO_C_GET_EX_ARG 154 - -# define BIO_set_app_data(s,arg) BIO_set_ex_data(s,0,arg) -# define BIO_get_app_data(s) BIO_get_ex_data(s,0) - -/* BIO_s_connect() and BIO_s_socks4a_connect() */ -# define BIO_set_conn_hostname(b,name) BIO_ctrl(b,BIO_C_SET_CONNECT,0,(char *)name) -# define BIO_set_conn_port(b,port) BIO_ctrl(b,BIO_C_SET_CONNECT,1,(char *)port) -# define BIO_set_conn_ip(b,ip) BIO_ctrl(b,BIO_C_SET_CONNECT,2,(char *)ip) -# define BIO_set_conn_int_port(b,port) BIO_ctrl(b,BIO_C_SET_CONNECT,3,(char *)port) -# define BIO_get_conn_hostname(b) BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,0) -# define BIO_get_conn_port(b) BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,1) -# define BIO_get_conn_ip(b) BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,2) -# define BIO_get_conn_int_port(b) BIO_int_ctrl(b,BIO_C_GET_CONNECT,3,0) - -# define BIO_set_nbio(b,n) BIO_ctrl(b,BIO_C_SET_NBIO,(n),NULL) - -/* BIO_s_accept_socket() */ -# define BIO_set_accept_port(b,name) BIO_ctrl(b,BIO_C_SET_ACCEPT,0,(char *)name) -# define BIO_get_accept_port(b) BIO_ptr_ctrl(b,BIO_C_GET_ACCEPT,0) -/* #define BIO_set_nbio(b,n) BIO_ctrl(b,BIO_C_SET_NBIO,(n),NULL) */ -# define BIO_set_nbio_accept(b,n) BIO_ctrl(b,BIO_C_SET_ACCEPT,1,(n)?(void *)"a":NULL) -# define BIO_set_accept_bios(b,bio) BIO_ctrl(b,BIO_C_SET_ACCEPT,2,(char *)bio) - -# define BIO_BIND_NORMAL 0 -# define BIO_BIND_REUSEADDR_IF_UNUSED 1 -# define BIO_BIND_REUSEADDR 2 -# define BIO_set_bind_mode(b,mode) BIO_ctrl(b,BIO_C_SET_BIND_MODE,mode,NULL) -# define BIO_get_bind_mode(b,mode) BIO_ctrl(b,BIO_C_GET_BIND_MODE,0,NULL) - -# define BIO_do_connect(b) BIO_do_handshake(b) -# define BIO_do_accept(b) BIO_do_handshake(b) -# define BIO_do_handshake(b) BIO_ctrl(b,BIO_C_DO_STATE_MACHINE,0,NULL) - -/* BIO_s_proxy_client() */ -# define BIO_set_url(b,url) BIO_ctrl(b,BIO_C_SET_PROXY_PARAM,0,(char *)(url)) -# define BIO_set_proxies(b,p) BIO_ctrl(b,BIO_C_SET_PROXY_PARAM,1,(char *)(p)) -/* BIO_set_nbio(b,n) */ -# define BIO_set_filter_bio(b,s) BIO_ctrl(b,BIO_C_SET_PROXY_PARAM,2,(char *)(s)) -/* BIO *BIO_get_filter_bio(BIO *bio); */ -# define BIO_set_proxy_cb(b,cb) BIO_callback_ctrl(b,BIO_C_SET_PROXY_PARAM,3,(void *(*cb)())) -# define BIO_set_proxy_header(b,sk) BIO_ctrl(b,BIO_C_SET_PROXY_PARAM,4,(char *)sk) -# define BIO_set_no_connect_return(b,bool) BIO_int_ctrl(b,BIO_C_SET_PROXY_PARAM,5,bool) - -# define BIO_get_proxy_header(b,skp) BIO_ctrl(b,BIO_C_GET_PROXY_PARAM,0,(char *)skp) -# define BIO_get_proxies(b,pxy_p) BIO_ctrl(b,BIO_C_GET_PROXY_PARAM,1,(char *)(pxy_p)) -# define BIO_get_url(b,url) BIO_ctrl(b,BIO_C_GET_PROXY_PARAM,2,(char *)(url)) -# define BIO_get_no_connect_return(b) BIO_ctrl(b,BIO_C_GET_PROXY_PARAM,5,NULL) - -# define BIO_set_fd(b,fd,c) BIO_int_ctrl(b,BIO_C_SET_FD,c,fd) -# define BIO_get_fd(b,c) BIO_ctrl(b,BIO_C_GET_FD,0,(char *)c) - -# define BIO_set_fp(b,fp,c) BIO_ctrl(b,BIO_C_SET_FILE_PTR,c,(char *)fp) -# define BIO_get_fp(b,fpp) BIO_ctrl(b,BIO_C_GET_FILE_PTR,0,(char *)fpp) - -# define BIO_seek(b,ofs) (int)BIO_ctrl(b,BIO_C_FILE_SEEK,ofs,NULL) -# define BIO_tell(b) (int)BIO_ctrl(b,BIO_C_FILE_TELL,0,NULL) - -/* - * name is cast to lose const, but might be better to route through a - * function so we can do it safely - */ -# ifdef CONST_STRICT -/* - * If you are wondering why this isn't defined, its because CONST_STRICT is - * purely a compile-time kludge to allow const to be checked. - */ -int BIO_read_filename(BIO *b, const char *name); -# else -# define BIO_read_filename(b,name) BIO_ctrl(b,BIO_C_SET_FILENAME, \ - BIO_CLOSE|BIO_FP_READ,(char *)name) -# endif -# define BIO_write_filename(b,name) BIO_ctrl(b,BIO_C_SET_FILENAME, \ - BIO_CLOSE|BIO_FP_WRITE,name) -# define BIO_append_filename(b,name) BIO_ctrl(b,BIO_C_SET_FILENAME, \ - BIO_CLOSE|BIO_FP_APPEND,name) -# define BIO_rw_filename(b,name) BIO_ctrl(b,BIO_C_SET_FILENAME, \ - BIO_CLOSE|BIO_FP_READ|BIO_FP_WRITE,name) - -/* - * WARNING WARNING, this ups the reference count on the read bio of the SSL - * structure. This is because the ssl read BIO is now pointed to by the - * next_bio field in the bio. So when you free the BIO, make sure you are - * doing a BIO_free_all() to catch the underlying BIO. - */ -# define BIO_set_ssl(b,ssl,c) BIO_ctrl(b,BIO_C_SET_SSL,c,(char *)ssl) -# define BIO_get_ssl(b,sslp) BIO_ctrl(b,BIO_C_GET_SSL,0,(char *)sslp) -# define BIO_set_ssl_mode(b,client) BIO_ctrl(b,BIO_C_SSL_MODE,client,NULL) -# define BIO_set_ssl_renegotiate_bytes(b,num) \ - BIO_ctrl(b,BIO_C_SET_SSL_RENEGOTIATE_BYTES,num,NULL); -# define BIO_get_num_renegotiates(b) \ - BIO_ctrl(b,BIO_C_GET_SSL_NUM_RENEGOTIATES,0,NULL); -# define BIO_set_ssl_renegotiate_timeout(b,seconds) \ - BIO_ctrl(b,BIO_C_SET_SSL_RENEGOTIATE_TIMEOUT,seconds,NULL); - -/* defined in evp.h */ -/* #define BIO_set_md(b,md) BIO_ctrl(b,BIO_C_SET_MD,1,(char *)md) */ - -# define BIO_get_mem_data(b,pp) BIO_ctrl(b,BIO_CTRL_INFO,0,(char *)pp) -# define BIO_set_mem_buf(b,bm,c) BIO_ctrl(b,BIO_C_SET_BUF_MEM,c,(char *)bm) -# define BIO_get_mem_ptr(b,pp) BIO_ctrl(b,BIO_C_GET_BUF_MEM_PTR,0,(char *)pp) -# define BIO_set_mem_eof_return(b,v) \ - BIO_ctrl(b,BIO_C_SET_BUF_MEM_EOF_RETURN,v,NULL) - -/* For the BIO_f_buffer() type */ -# define BIO_get_buffer_num_lines(b) BIO_ctrl(b,BIO_C_GET_BUFF_NUM_LINES,0,NULL) -# define BIO_set_buffer_size(b,size) BIO_ctrl(b,BIO_C_SET_BUFF_SIZE,size,NULL) -# define BIO_set_read_buffer_size(b,size) BIO_int_ctrl(b,BIO_C_SET_BUFF_SIZE,size,0) -# define BIO_set_write_buffer_size(b,size) BIO_int_ctrl(b,BIO_C_SET_BUFF_SIZE,size,1) -# define BIO_set_buffer_read_data(b,buf,num) BIO_ctrl(b,BIO_C_SET_BUFF_READ_DATA,num,buf) - -/* Don't use the next one unless you know what you are doing :-) */ -# define BIO_dup_state(b,ret) BIO_ctrl(b,BIO_CTRL_DUP,0,(char *)(ret)) - -# define BIO_reset(b) (int)BIO_ctrl(b,BIO_CTRL_RESET,0,NULL) -# define BIO_eof(b) (int)BIO_ctrl(b,BIO_CTRL_EOF,0,NULL) -# define BIO_set_close(b,c) (int)BIO_ctrl(b,BIO_CTRL_SET_CLOSE,(c),NULL) -# define BIO_get_close(b) (int)BIO_ctrl(b,BIO_CTRL_GET_CLOSE,0,NULL) -# define BIO_pending(b) (int)BIO_ctrl(b,BIO_CTRL_PENDING,0,NULL) -# define BIO_wpending(b) (int)BIO_ctrl(b,BIO_CTRL_WPENDING,0,NULL) -/* ...pending macros have inappropriate return type */ -size_t BIO_ctrl_pending(BIO *b); -size_t BIO_ctrl_wpending(BIO *b); -# define BIO_flush(b) (int)BIO_ctrl(b,BIO_CTRL_FLUSH,0,NULL) -# define BIO_get_info_callback(b,cbp) (int)BIO_ctrl(b,BIO_CTRL_GET_CALLBACK,0, \ - cbp) -# define BIO_set_info_callback(b,cb) (int)BIO_callback_ctrl(b,BIO_CTRL_SET_CALLBACK,cb) - -/* For the BIO_f_buffer() type */ -# define BIO_buffer_get_num_lines(b) BIO_ctrl(b,BIO_CTRL_GET,0,NULL) - -/* For BIO_s_bio() */ -# define BIO_set_write_buf_size(b,size) (int)BIO_ctrl(b,BIO_C_SET_WRITE_BUF_SIZE,size,NULL) -# define BIO_get_write_buf_size(b,size) (size_t)BIO_ctrl(b,BIO_C_GET_WRITE_BUF_SIZE,size,NULL) -# define BIO_make_bio_pair(b1,b2) (int)BIO_ctrl(b1,BIO_C_MAKE_BIO_PAIR,0,b2) -# define BIO_destroy_bio_pair(b) (int)BIO_ctrl(b,BIO_C_DESTROY_BIO_PAIR,0,NULL) -# define BIO_shutdown_wr(b) (int)BIO_ctrl(b, BIO_C_SHUTDOWN_WR, 0, NULL) -/* macros with inappropriate type -- but ...pending macros use int too: */ -# define BIO_get_write_guarantee(b) (int)BIO_ctrl(b,BIO_C_GET_WRITE_GUARANTEE,0,NULL) -# define BIO_get_read_request(b) (int)BIO_ctrl(b,BIO_C_GET_READ_REQUEST,0,NULL) -size_t BIO_ctrl_get_write_guarantee(BIO *b); -size_t BIO_ctrl_get_read_request(BIO *b); -int BIO_ctrl_reset_read_request(BIO *b); - -/* ctrl macros for dgram */ -# define BIO_ctrl_dgram_connect(b,peer) \ - (int)BIO_ctrl(b,BIO_CTRL_DGRAM_CONNECT,0, (char *)peer) -# define BIO_ctrl_set_connected(b, state, peer) \ - (int)BIO_ctrl(b, BIO_CTRL_DGRAM_SET_CONNECTED, state, (char *)peer) -# define BIO_dgram_recv_timedout(b) \ - (int)BIO_ctrl(b, BIO_CTRL_DGRAM_GET_RECV_TIMER_EXP, 0, NULL) -# define BIO_dgram_send_timedout(b) \ - (int)BIO_ctrl(b, BIO_CTRL_DGRAM_GET_SEND_TIMER_EXP, 0, NULL) -# define BIO_dgram_get_peer(b,peer) \ - (int)BIO_ctrl(b, BIO_CTRL_DGRAM_GET_PEER, 0, (char *)peer) -# define BIO_dgram_set_peer(b,peer) \ - (int)BIO_ctrl(b, BIO_CTRL_DGRAM_SET_PEER, 0, (char *)peer) -# define BIO_dgram_get_mtu_overhead(b) \ - (unsigned int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_MTU_OVERHEAD, 0, NULL) - -/* These two aren't currently implemented */ -/* int BIO_get_ex_num(BIO *bio); */ -/* void BIO_set_ex_free_func(BIO *bio,int idx,void (*cb)()); */ -int BIO_set_ex_data(BIO *bio, int idx, void *data); -void *BIO_get_ex_data(BIO *bio, int idx); -int BIO_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new *new_func, - CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func); -unsigned long BIO_number_read(BIO *bio); -unsigned long BIO_number_written(BIO *bio); - -/* For BIO_f_asn1() */ -int BIO_asn1_set_prefix(BIO *b, asn1_ps_func *prefix, - asn1_ps_func *prefix_free); -int BIO_asn1_get_prefix(BIO *b, asn1_ps_func **pprefix, - asn1_ps_func **pprefix_free); -int BIO_asn1_set_suffix(BIO *b, asn1_ps_func *suffix, - asn1_ps_func *suffix_free); -int BIO_asn1_get_suffix(BIO *b, asn1_ps_func **psuffix, - asn1_ps_func **psuffix_free); - -# ifndef OPENSSL_NO_FP_API -BIO_METHOD *BIO_s_file(void); -BIO *BIO_new_file(const char *filename, const char *mode); -BIO *BIO_new_fp(FILE *stream, int close_flag); -# define BIO_s_file_internal BIO_s_file -# endif -BIO *BIO_new(BIO_METHOD *type); -int BIO_set(BIO *a, BIO_METHOD *type); -int BIO_free(BIO *a); -void BIO_vfree(BIO *a); -int BIO_read(BIO *b, void *data, int len); -int BIO_gets(BIO *bp, char *buf, int size); -int BIO_write(BIO *b, const void *data, int len); -int BIO_puts(BIO *bp, const char *buf); -int BIO_indent(BIO *b, int indent, int max); -long BIO_ctrl(BIO *bp, int cmd, long larg, void *parg); -long BIO_callback_ctrl(BIO *b, int cmd, - void (*fp) (struct bio_st *, int, const char *, int, - long, long)); -char *BIO_ptr_ctrl(BIO *bp, int cmd, long larg); -long BIO_int_ctrl(BIO *bp, int cmd, long larg, int iarg); -BIO *BIO_push(BIO *b, BIO *append); -BIO *BIO_pop(BIO *b); -void BIO_free_all(BIO *a); -BIO *BIO_find_type(BIO *b, int bio_type); -BIO *BIO_next(BIO *b); -BIO *BIO_get_retry_BIO(BIO *bio, int *reason); -int BIO_get_retry_reason(BIO *bio); -BIO *BIO_dup_chain(BIO *in); - -int BIO_nread0(BIO *bio, char **buf); -int BIO_nread(BIO *bio, char **buf, int num); -int BIO_nwrite0(BIO *bio, char **buf); -int BIO_nwrite(BIO *bio, char **buf, int num); - -long BIO_debug_callback(BIO *bio, int cmd, const char *argp, int argi, - long argl, long ret); - -BIO_METHOD *BIO_s_mem(void); -BIO *BIO_new_mem_buf(void *buf, int len); -BIO_METHOD *BIO_s_socket(void); -BIO_METHOD *BIO_s_connect(void); -BIO_METHOD *BIO_s_accept(void); -BIO_METHOD *BIO_s_fd(void); -# ifndef OPENSSL_SYS_OS2 -BIO_METHOD *BIO_s_log(void); -# endif -BIO_METHOD *BIO_s_bio(void); -BIO_METHOD *BIO_s_null(void); -BIO_METHOD *BIO_f_null(void); -BIO_METHOD *BIO_f_buffer(void); -# ifdef OPENSSL_SYS_VMS -BIO_METHOD *BIO_f_linebuffer(void); -# endif -BIO_METHOD *BIO_f_nbio_test(void); -# ifndef OPENSSL_NO_DGRAM -BIO_METHOD *BIO_s_datagram(void); -# ifndef OPENSSL_NO_SCTP -BIO_METHOD *BIO_s_datagram_sctp(void); -# endif -# endif - -/* BIO_METHOD *BIO_f_ber(void); */ - -int BIO_sock_should_retry(int i); -int BIO_sock_non_fatal_error(int error); -int BIO_dgram_non_fatal_error(int error); - -int BIO_fd_should_retry(int i); -int BIO_fd_non_fatal_error(int error); -int BIO_dump_cb(int (*cb) (const void *data, size_t len, void *u), - void *u, const char *s, int len); -int BIO_dump_indent_cb(int (*cb) (const void *data, size_t len, void *u), - void *u, const char *s, int len, int indent); -int BIO_dump(BIO *b, const char *bytes, int len); -int BIO_dump_indent(BIO *b, const char *bytes, int len, int indent); -# ifndef OPENSSL_NO_FP_API -int BIO_dump_fp(FILE *fp, const char *s, int len); -int BIO_dump_indent_fp(FILE *fp, const char *s, int len, int indent); -# endif -int BIO_hex_string(BIO *out, int indent, int width, unsigned char *data, - int datalen); - -struct hostent *BIO_gethostbyname(const char *name); -/*- - * We might want a thread-safe interface too: - * struct hostent *BIO_gethostbyname_r(const char *name, - * struct hostent *result, void *buffer, size_t buflen); - * or something similar (caller allocates a struct hostent, - * pointed to by "result", and additional buffer space for the various - * substructures; if the buffer does not suffice, NULL is returned - * and an appropriate error code is set). - */ -int BIO_sock_error(int sock); -int BIO_socket_ioctl(int fd, long type, void *arg); -int BIO_socket_nbio(int fd, int mode); -int BIO_get_port(const char *str, unsigned short *port_ptr); -int BIO_get_host_ip(const char *str, unsigned char *ip); -int BIO_get_accept_socket(char *host_port, int mode); -int BIO_accept(int sock, char **ip_port); -int BIO_sock_init(void); -void BIO_sock_cleanup(void); -int BIO_set_tcp_ndelay(int sock, int turn_on); - -BIO *BIO_new_socket(int sock, int close_flag); -BIO *BIO_new_dgram(int fd, int close_flag); -# ifndef OPENSSL_NO_SCTP -BIO *BIO_new_dgram_sctp(int fd, int close_flag); -int BIO_dgram_is_sctp(BIO *bio); -int BIO_dgram_sctp_notification_cb(BIO *b, - void (*handle_notifications) (BIO *bio, - void - *context, - void *buf), - void *context); -int BIO_dgram_sctp_wait_for_dry(BIO *b); -int BIO_dgram_sctp_msg_waiting(BIO *b); -# endif -BIO *BIO_new_fd(int fd, int close_flag); -BIO *BIO_new_connect(const char *host_port); -BIO *BIO_new_accept(const char *host_port); - -int BIO_new_bio_pair(BIO **bio1, size_t writebuf1, - BIO **bio2, size_t writebuf2); -/* - * If successful, returns 1 and in *bio1, *bio2 two BIO pair endpoints. - * Otherwise returns 0 and sets *bio1 and *bio2 to NULL. Size 0 uses default - * value. - */ - -void BIO_copy_next_retry(BIO *b); - -/* - * long BIO_ghbn_ctrl(int cmd,int iarg,char *parg); - */ - -# ifdef __GNUC__ -# define __bio_h__attr__ __attribute__ -# else -# define __bio_h__attr__(x) -# endif -int BIO_printf(BIO *bio, const char *format, ...) -__bio_h__attr__((__format__(__printf__, 2, 3))); -int BIO_vprintf(BIO *bio, const char *format, va_list args) -__bio_h__attr__((__format__(__printf__, 2, 0))); -int BIO_snprintf(char *buf, size_t n, const char *format, ...) -__bio_h__attr__((__format__(__printf__, 3, 4))); -int BIO_vsnprintf(char *buf, size_t n, const char *format, va_list args) -__bio_h__attr__((__format__(__printf__, 3, 0))); -# undef __bio_h__attr__ - -/* BEGIN ERROR CODES */ -/* - * The following lines are auto generated by the script mkerr.pl. Any changes - * made after this point may be overwritten when the script is next run. - */ -void ERR_load_BIO_strings(void); - -/* Error codes for the BIO functions. */ - -/* Function codes. */ -# define BIO_F_ACPT_STATE 100 -# define BIO_F_BIO_ACCEPT 101 -# define BIO_F_BIO_BER_GET_HEADER 102 -# define BIO_F_BIO_CALLBACK_CTRL 131 -# define BIO_F_BIO_CTRL 103 -# define BIO_F_BIO_GETHOSTBYNAME 120 -# define BIO_F_BIO_GETS 104 -# define BIO_F_BIO_GET_ACCEPT_SOCKET 105 -# define BIO_F_BIO_GET_HOST_IP 106 -# define BIO_F_BIO_GET_PORT 107 -# define BIO_F_BIO_MAKE_PAIR 121 -# define BIO_F_BIO_NEW 108 -# define BIO_F_BIO_NEW_FILE 109 -# define BIO_F_BIO_NEW_MEM_BUF 126 -# define BIO_F_BIO_NREAD 123 -# define BIO_F_BIO_NREAD0 124 -# define BIO_F_BIO_NWRITE 125 -# define BIO_F_BIO_NWRITE0 122 -# define BIO_F_BIO_PUTS 110 -# define BIO_F_BIO_READ 111 -# define BIO_F_BIO_SOCK_INIT 112 -# define BIO_F_BIO_WRITE 113 -# define BIO_F_BUFFER_CTRL 114 -# define BIO_F_CONN_CTRL 127 -# define BIO_F_CONN_STATE 115 -# define BIO_F_DGRAM_SCTP_READ 132 -# define BIO_F_FILE_CTRL 116 -# define BIO_F_FILE_READ 130 -# define BIO_F_LINEBUFFER_CTRL 129 -# define BIO_F_MEM_READ 128 -# define BIO_F_MEM_WRITE 117 -# define BIO_F_SSL_NEW 118 -# define BIO_F_WSASTARTUP 119 - -/* Reason codes. */ -# define BIO_R_ACCEPT_ERROR 100 -# define BIO_R_BAD_FOPEN_MODE 101 -# define BIO_R_BAD_HOSTNAME_LOOKUP 102 -# define BIO_R_BROKEN_PIPE 124 -# define BIO_R_CONNECT_ERROR 103 -# define BIO_R_EOF_ON_MEMORY_BIO 127 -# define BIO_R_ERROR_SETTING_NBIO 104 -# define BIO_R_ERROR_SETTING_NBIO_ON_ACCEPTED_SOCKET 105 -# define BIO_R_ERROR_SETTING_NBIO_ON_ACCEPT_SOCKET 106 -# define BIO_R_GETHOSTBYNAME_ADDR_IS_NOT_AF_INET 107 -# define BIO_R_INVALID_ARGUMENT 125 -# define BIO_R_INVALID_IP_ADDRESS 108 -# define BIO_R_IN_USE 123 -# define BIO_R_KEEPALIVE 109 -# define BIO_R_NBIO_CONNECT_ERROR 110 -# define BIO_R_NO_ACCEPT_PORT_SPECIFIED 111 -# define BIO_R_NO_HOSTNAME_SPECIFIED 112 -# define BIO_R_NO_PORT_DEFINED 113 -# define BIO_R_NO_PORT_SPECIFIED 114 -# define BIO_R_NO_SUCH_FILE 128 -# define BIO_R_NULL_PARAMETER 115 -# define BIO_R_TAG_MISMATCH 116 -# define BIO_R_UNABLE_TO_BIND_SOCKET 117 -# define BIO_R_UNABLE_TO_CREATE_SOCKET 118 -# define BIO_R_UNABLE_TO_LISTEN_SOCKET 119 -# define BIO_R_UNINITIALIZED 120 -# define BIO_R_UNSUPPORTED_METHOD 121 -# define BIO_R_WRITE_TO_READ_ONLY_BIO 126 -# define BIO_R_WSASTARTUP 122 - -#ifdef __cplusplus -} -#endif -#endif diff --git a/ext/openssl-win32/inc32/openssl/bn.h b/ext/openssl-win32/inc32/openssl/bn.h deleted file mode 100644 index 78709d38..00000000 --- a/ext/openssl-win32/inc32/openssl/bn.h +++ /dev/null @@ -1,934 +0,0 @@ -/* crypto/bn/bn.h */ -/* Copyright (C) 1995-1997 Eric Young (eay@cryptsoft.com) - * All rights reserved. - * - * This package is an SSL implementation written - * by Eric Young (eay@cryptsoft.com). - * The implementation was written so as to conform with Netscapes SSL. - * - * This library is free for commercial and non-commercial use as long as - * the following conditions are aheared to. The following conditions - * apply to all code found in this distribution, be it the RC4, RSA, - * lhash, DES, etc., code; not just the SSL code. The SSL documentation - * included with this distribution is covered by the same copyright terms - * except that the holder is Tim Hudson (tjh@cryptsoft.com). - * - * Copyright remains Eric Young's, and as such any Copyright notices in - * the code are not to be removed. - * If this package is used in a product, Eric Young should be given attribution - * as the author of the parts of the library used. - * This can be in the form of a textual message at program startup or - * in documentation (online or textual) provided with the package. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * "This product includes cryptographic software written by - * Eric Young (eay@cryptsoft.com)" - * The word 'cryptographic' can be left out if the rouines from the library - * being used are not cryptographic related :-). - * 4. If you include any Windows specific code (or a derivative thereof) from - * the apps directory (application code) you must include an acknowledgement: - * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" - * - * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * The licence and distribution terms for any publically available version or - * derivative of this code cannot be changed. i.e. this code cannot simply be - * copied and put under another distribution licence - * [including the GNU Public Licence.] - */ -/* ==================================================================== - * Copyright (c) 1998-2006 The OpenSSL Project. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. All advertising materials mentioning features or use of this - * software must display the following acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" - * - * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * openssl-core@openssl.org. - * - * 5. Products derived from this software may not be called "OpenSSL" - * nor may "OpenSSL" appear in their names without prior written - * permission of the OpenSSL Project. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit (http://www.openssl.org/)" - * - * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY - * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * ==================================================================== - * - * This product includes cryptographic software written by Eric Young - * (eay@cryptsoft.com). This product includes software written by Tim - * Hudson (tjh@cryptsoft.com). - * - */ -/* ==================================================================== - * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED. - * - * Portions of the attached software ("Contribution") are developed by - * SUN MICROSYSTEMS, INC., and are contributed to the OpenSSL project. - * - * The Contribution is licensed pursuant to the Eric Young open source - * license provided above. - * - * The binary polynomial arithmetic software is originally written by - * Sheueling Chang Shantz and Douglas Stebila of Sun Microsystems Laboratories. - * - */ - -#ifndef HEADER_BN_H -# define HEADER_BN_H - -# include -# ifndef OPENSSL_NO_FP_API -# include /* FILE */ -# endif -# include -# include - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * These preprocessor symbols control various aspects of the bignum headers - * and library code. They're not defined by any "normal" configuration, as - * they are intended for development and testing purposes. NB: defining all - * three can be useful for debugging application code as well as openssl - * itself. BN_DEBUG - turn on various debugging alterations to the bignum - * code BN_DEBUG_RAND - uses random poisoning of unused words to trip up - * mismanagement of bignum internals. You must also define BN_DEBUG. - */ -/* #define BN_DEBUG */ -/* #define BN_DEBUG_RAND */ - -# ifndef OPENSSL_SMALL_FOOTPRINT -# define BN_MUL_COMBA -# define BN_SQR_COMBA -# define BN_RECURSION -# endif - -/* - * This next option uses the C libraries (2 word)/(1 word) function. If it is - * not defined, I use my C version (which is slower). The reason for this - * flag is that when the particular C compiler library routine is used, and - * the library is linked with a different compiler, the library is missing. - * This mostly happens when the library is built with gcc and then linked - * using normal cc. This would be a common occurrence because gcc normally - * produces code that is 2 times faster than system compilers for the big - * number stuff. For machines with only one compiler (or shared libraries), - * this should be on. Again this in only really a problem on machines using - * "long long's", are 32bit, and are not using my assembler code. - */ -# if defined(OPENSSL_SYS_MSDOS) || defined(OPENSSL_SYS_WINDOWS) || \ - defined(OPENSSL_SYS_WIN32) || defined(linux) -# ifndef BN_DIV2W -# define BN_DIV2W -# endif -# endif - -/* - * assuming long is 64bit - this is the DEC Alpha unsigned long long is only - * 64 bits :-(, don't define BN_LLONG for the DEC Alpha - */ -# ifdef SIXTY_FOUR_BIT_LONG -# define BN_ULLONG unsigned long long -# define BN_ULONG unsigned long -# define BN_LONG long -# define BN_BITS 128 -# define BN_BYTES 8 -# define BN_BITS2 64 -# define BN_BITS4 32 -# define BN_MASK (0xffffffffffffffffffffffffffffffffLL) -# define BN_MASK2 (0xffffffffffffffffL) -# define BN_MASK2l (0xffffffffL) -# define BN_MASK2h (0xffffffff00000000L) -# define BN_MASK2h1 (0xffffffff80000000L) -# define BN_TBIT (0x8000000000000000L) -# define BN_DEC_CONV (10000000000000000000UL) -# define BN_DEC_FMT1 "%lu" -# define BN_DEC_FMT2 "%019lu" -# define BN_DEC_NUM 19 -# define BN_HEX_FMT1 "%lX" -# define BN_HEX_FMT2 "%016lX" -# endif - -/* - * This is where the long long data type is 64 bits, but long is 32. For - * machines where there are 64bit registers, this is the mode to use. IRIX, - * on R4000 and above should use this mode, along with the relevant assembler - * code :-). Do NOT define BN_LLONG. - */ -# ifdef SIXTY_FOUR_BIT -# undef BN_LLONG -# undef BN_ULLONG -# define BN_ULONG unsigned long long -# define BN_LONG long long -# define BN_BITS 128 -# define BN_BYTES 8 -# define BN_BITS2 64 -# define BN_BITS4 32 -# define BN_MASK2 (0xffffffffffffffffLL) -# define BN_MASK2l (0xffffffffL) -# define BN_MASK2h (0xffffffff00000000LL) -# define BN_MASK2h1 (0xffffffff80000000LL) -# define BN_TBIT (0x8000000000000000LL) -# define BN_DEC_CONV (10000000000000000000ULL) -# define BN_DEC_FMT1 "%llu" -# define BN_DEC_FMT2 "%019llu" -# define BN_DEC_NUM 19 -# define BN_HEX_FMT1 "%llX" -# define BN_HEX_FMT2 "%016llX" -# endif - -# ifdef THIRTY_TWO_BIT -# ifdef BN_LLONG -# if defined(_WIN32) && !defined(__GNUC__) -# define BN_ULLONG unsigned __int64 -# define BN_MASK (0xffffffffffffffffI64) -# else -# define BN_ULLONG unsigned long long -# define BN_MASK (0xffffffffffffffffLL) -# endif -# endif -# define BN_ULONG unsigned int -# define BN_LONG int -# define BN_BITS 64 -# define BN_BYTES 4 -# define BN_BITS2 32 -# define BN_BITS4 16 -# define BN_MASK2 (0xffffffffL) -# define BN_MASK2l (0xffff) -# define BN_MASK2h1 (0xffff8000L) -# define BN_MASK2h (0xffff0000L) -# define BN_TBIT (0x80000000L) -# define BN_DEC_CONV (1000000000L) -# define BN_DEC_FMT1 "%u" -# define BN_DEC_FMT2 "%09u" -# define BN_DEC_NUM 9 -# define BN_HEX_FMT1 "%X" -# define BN_HEX_FMT2 "%08X" -# endif - -# define BN_DEFAULT_BITS 1280 - -# define BN_FLG_MALLOCED 0x01 -# define BN_FLG_STATIC_DATA 0x02 - -/* - * avoid leaking exponent information through timing, - * BN_mod_exp_mont() will call BN_mod_exp_mont_consttime, - * BN_div() will call BN_div_no_branch, - * BN_mod_inverse() will call BN_mod_inverse_no_branch. - */ -# define BN_FLG_CONSTTIME 0x04 - -# ifdef OPENSSL_NO_DEPRECATED -/* deprecated name for the flag */ -# define BN_FLG_EXP_CONSTTIME BN_FLG_CONSTTIME -/* - * avoid leaking exponent information through timings - * (BN_mod_exp_mont() will call BN_mod_exp_mont_consttime) - */ -# endif - -# ifndef OPENSSL_NO_DEPRECATED -# define BN_FLG_FREE 0x8000 - /* used for debuging */ -# endif -# define BN_set_flags(b,n) ((b)->flags|=(n)) -# define BN_get_flags(b,n) ((b)->flags&(n)) - -/* - * get a clone of a BIGNUM with changed flags, for *temporary* use only (the - * two BIGNUMs cannot not be used in parallel!) - */ -# define BN_with_flags(dest,b,n) ((dest)->d=(b)->d, \ - (dest)->top=(b)->top, \ - (dest)->dmax=(b)->dmax, \ - (dest)->neg=(b)->neg, \ - (dest)->flags=(((dest)->flags & BN_FLG_MALLOCED) \ - | ((b)->flags & ~BN_FLG_MALLOCED) \ - | BN_FLG_STATIC_DATA \ - | (n))) - -/* Already declared in ossl_typ.h */ -# if 0 -typedef struct bignum_st BIGNUM; -/* Used for temp variables (declaration hidden in bn_lcl.h) */ -typedef struct bignum_ctx BN_CTX; -typedef struct bn_blinding_st BN_BLINDING; -typedef struct bn_mont_ctx_st BN_MONT_CTX; -typedef struct bn_recp_ctx_st BN_RECP_CTX; -typedef struct bn_gencb_st BN_GENCB; -# endif - -struct bignum_st { - BN_ULONG *d; /* Pointer to an array of 'BN_BITS2' bit - * chunks. */ - int top; /* Index of last used d +1. */ - /* The next are internal book keeping for bn_expand. */ - int dmax; /* Size of the d array. */ - int neg; /* one if the number is negative */ - int flags; -}; - -/* Used for montgomery multiplication */ -struct bn_mont_ctx_st { - int ri; /* number of bits in R */ - BIGNUM RR; /* used to convert to montgomery form */ - BIGNUM N; /* The modulus */ - BIGNUM Ni; /* R*(1/R mod N) - N*Ni = 1 (Ni is only - * stored for bignum algorithm) */ - BN_ULONG n0[2]; /* least significant word(s) of Ni; (type - * changed with 0.9.9, was "BN_ULONG n0;" - * before) */ - int flags; -}; - -/* - * Used for reciprocal division/mod functions It cannot be shared between - * threads - */ -struct bn_recp_ctx_st { - BIGNUM N; /* the divisor */ - BIGNUM Nr; /* the reciprocal */ - int num_bits; - int shift; - int flags; -}; - -/* Used for slow "generation" functions. */ -struct bn_gencb_st { - unsigned int ver; /* To handle binary (in)compatibility */ - void *arg; /* callback-specific data */ - union { - /* if(ver==1) - handles old style callbacks */ - void (*cb_1) (int, int, void *); - /* if(ver==2) - new callback style */ - int (*cb_2) (int, int, BN_GENCB *); - } cb; -}; -/* Wrapper function to make using BN_GENCB easier, */ -int BN_GENCB_call(BN_GENCB *cb, int a, int b); -/* Macro to populate a BN_GENCB structure with an "old"-style callback */ -# define BN_GENCB_set_old(gencb, callback, cb_arg) { \ - BN_GENCB *tmp_gencb = (gencb); \ - tmp_gencb->ver = 1; \ - tmp_gencb->arg = (cb_arg); \ - tmp_gencb->cb.cb_1 = (callback); } -/* Macro to populate a BN_GENCB structure with a "new"-style callback */ -# define BN_GENCB_set(gencb, callback, cb_arg) { \ - BN_GENCB *tmp_gencb = (gencb); \ - tmp_gencb->ver = 2; \ - tmp_gencb->arg = (cb_arg); \ - tmp_gencb->cb.cb_2 = (callback); } - -# define BN_prime_checks 0 /* default: select number of iterations based - * on the size of the number */ - -/* - * number of Miller-Rabin iterations for an error rate of less than 2^-80 for - * random 'b'-bit input, b >= 100 (taken from table 4.4 in the Handbook of - * Applied Cryptography [Menezes, van Oorschot, Vanstone; CRC Press 1996]; - * original paper: Damgaard, Landrock, Pomerance: Average case error - * estimates for the strong probable prime test. -- Math. Comp. 61 (1993) - * 177-194) - */ -# define BN_prime_checks_for_size(b) ((b) >= 1300 ? 2 : \ - (b) >= 850 ? 3 : \ - (b) >= 650 ? 4 : \ - (b) >= 550 ? 5 : \ - (b) >= 450 ? 6 : \ - (b) >= 400 ? 7 : \ - (b) >= 350 ? 8 : \ - (b) >= 300 ? 9 : \ - (b) >= 250 ? 12 : \ - (b) >= 200 ? 15 : \ - (b) >= 150 ? 18 : \ - /* b >= 100 */ 27) - -# define BN_num_bytes(a) ((BN_num_bits(a)+7)/8) - -/* Note that BN_abs_is_word didn't work reliably for w == 0 until 0.9.8 */ -# define BN_abs_is_word(a,w) ((((a)->top == 1) && ((a)->d[0] == (BN_ULONG)(w))) || \ - (((w) == 0) && ((a)->top == 0))) -# define BN_is_zero(a) ((a)->top == 0) -# define BN_is_one(a) (BN_abs_is_word((a),1) && !(a)->neg) -# define BN_is_word(a,w) (BN_abs_is_word((a),(w)) && (!(w) || !(a)->neg)) -# define BN_is_odd(a) (((a)->top > 0) && ((a)->d[0] & 1)) - -# define BN_one(a) (BN_set_word((a),1)) -# define BN_zero_ex(a) \ - do { \ - BIGNUM *_tmp_bn = (a); \ - _tmp_bn->top = 0; \ - _tmp_bn->neg = 0; \ - } while(0) -# ifdef OPENSSL_NO_DEPRECATED -# define BN_zero(a) BN_zero_ex(a) -# else -# define BN_zero(a) (BN_set_word((a),0)) -# endif - -const BIGNUM *BN_value_one(void); -char *BN_options(void); -BN_CTX *BN_CTX_new(void); -# ifndef OPENSSL_NO_DEPRECATED -void BN_CTX_init(BN_CTX *c); -# endif -void BN_CTX_free(BN_CTX *c); -void BN_CTX_start(BN_CTX *ctx); -BIGNUM *BN_CTX_get(BN_CTX *ctx); -void BN_CTX_end(BN_CTX *ctx); -int BN_rand(BIGNUM *rnd, int bits, int top, int bottom); -int BN_pseudo_rand(BIGNUM *rnd, int bits, int top, int bottom); -int BN_rand_range(BIGNUM *rnd, const BIGNUM *range); -int BN_pseudo_rand_range(BIGNUM *rnd, const BIGNUM *range); -int BN_num_bits(const BIGNUM *a); -int BN_num_bits_word(BN_ULONG); -BIGNUM *BN_new(void); -void BN_init(BIGNUM *); -void BN_clear_free(BIGNUM *a); -BIGNUM *BN_copy(BIGNUM *a, const BIGNUM *b); -void BN_swap(BIGNUM *a, BIGNUM *b); -BIGNUM *BN_bin2bn(const unsigned char *s, int len, BIGNUM *ret); -int BN_bn2bin(const BIGNUM *a, unsigned char *to); -BIGNUM *BN_mpi2bn(const unsigned char *s, int len, BIGNUM *ret); -int BN_bn2mpi(const BIGNUM *a, unsigned char *to); -int BN_sub(BIGNUM *r, const BIGNUM *a, const BIGNUM *b); -int BN_usub(BIGNUM *r, const BIGNUM *a, const BIGNUM *b); -int BN_uadd(BIGNUM *r, const BIGNUM *a, const BIGNUM *b); -int BN_add(BIGNUM *r, const BIGNUM *a, const BIGNUM *b); -int BN_mul(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx); -int BN_sqr(BIGNUM *r, const BIGNUM *a, BN_CTX *ctx); -/** BN_set_negative sets sign of a BIGNUM - * \param b pointer to the BIGNUM object - * \param n 0 if the BIGNUM b should be positive and a value != 0 otherwise - */ -void BN_set_negative(BIGNUM *b, int n); -/** BN_is_negative returns 1 if the BIGNUM is negative - * \param a pointer to the BIGNUM object - * \return 1 if a < 0 and 0 otherwise - */ -# define BN_is_negative(a) ((a)->neg != 0) - -int BN_div(BIGNUM *dv, BIGNUM *rem, const BIGNUM *m, const BIGNUM *d, - BN_CTX *ctx); -# define BN_mod(rem,m,d,ctx) BN_div(NULL,(rem),(m),(d),(ctx)) -int BN_nnmod(BIGNUM *r, const BIGNUM *m, const BIGNUM *d, BN_CTX *ctx); -int BN_mod_add(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, const BIGNUM *m, - BN_CTX *ctx); -int BN_mod_add_quick(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, - const BIGNUM *m); -int BN_mod_sub(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, const BIGNUM *m, - BN_CTX *ctx); -int BN_mod_sub_quick(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, - const BIGNUM *m); -int BN_mod_mul(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, const BIGNUM *m, - BN_CTX *ctx); -int BN_mod_sqr(BIGNUM *r, const BIGNUM *a, const BIGNUM *m, BN_CTX *ctx); -int BN_mod_lshift1(BIGNUM *r, const BIGNUM *a, const BIGNUM *m, BN_CTX *ctx); -int BN_mod_lshift1_quick(BIGNUM *r, const BIGNUM *a, const BIGNUM *m); -int BN_mod_lshift(BIGNUM *r, const BIGNUM *a, int n, const BIGNUM *m, - BN_CTX *ctx); -int BN_mod_lshift_quick(BIGNUM *r, const BIGNUM *a, int n, const BIGNUM *m); - -BN_ULONG BN_mod_word(const BIGNUM *a, BN_ULONG w); -BN_ULONG BN_div_word(BIGNUM *a, BN_ULONG w); -int BN_mul_word(BIGNUM *a, BN_ULONG w); -int BN_add_word(BIGNUM *a, BN_ULONG w); -int BN_sub_word(BIGNUM *a, BN_ULONG w); -int BN_set_word(BIGNUM *a, BN_ULONG w); -BN_ULONG BN_get_word(const BIGNUM *a); - -int BN_cmp(const BIGNUM *a, const BIGNUM *b); -void BN_free(BIGNUM *a); -int BN_is_bit_set(const BIGNUM *a, int n); -int BN_lshift(BIGNUM *r, const BIGNUM *a, int n); -int BN_lshift1(BIGNUM *r, const BIGNUM *a); -int BN_exp(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx); - -int BN_mod_exp(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, - const BIGNUM *m, BN_CTX *ctx); -int BN_mod_exp_mont(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, - const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx); -int BN_mod_exp_mont_consttime(BIGNUM *rr, const BIGNUM *a, const BIGNUM *p, - const BIGNUM *m, BN_CTX *ctx, - BN_MONT_CTX *in_mont); -int BN_mod_exp_mont_word(BIGNUM *r, BN_ULONG a, const BIGNUM *p, - const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx); -int BN_mod_exp2_mont(BIGNUM *r, const BIGNUM *a1, const BIGNUM *p1, - const BIGNUM *a2, const BIGNUM *p2, const BIGNUM *m, - BN_CTX *ctx, BN_MONT_CTX *m_ctx); -int BN_mod_exp_simple(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, - const BIGNUM *m, BN_CTX *ctx); - -int BN_mask_bits(BIGNUM *a, int n); -# ifndef OPENSSL_NO_FP_API -int BN_print_fp(FILE *fp, const BIGNUM *a); -# endif -# ifdef HEADER_BIO_H -int BN_print(BIO *fp, const BIGNUM *a); -# else -int BN_print(void *fp, const BIGNUM *a); -# endif -int BN_reciprocal(BIGNUM *r, const BIGNUM *m, int len, BN_CTX *ctx); -int BN_rshift(BIGNUM *r, const BIGNUM *a, int n); -int BN_rshift1(BIGNUM *r, const BIGNUM *a); -void BN_clear(BIGNUM *a); -BIGNUM *BN_dup(const BIGNUM *a); -int BN_ucmp(const BIGNUM *a, const BIGNUM *b); -int BN_set_bit(BIGNUM *a, int n); -int BN_clear_bit(BIGNUM *a, int n); -char *BN_bn2hex(const BIGNUM *a); -char *BN_bn2dec(const BIGNUM *a); -int BN_hex2bn(BIGNUM **a, const char *str); -int BN_dec2bn(BIGNUM **a, const char *str); -int BN_asc2bn(BIGNUM **a, const char *str); -int BN_gcd(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx); -int BN_kronecker(const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx); /* returns - * -2 for - * error */ -BIGNUM *BN_mod_inverse(BIGNUM *ret, - const BIGNUM *a, const BIGNUM *n, BN_CTX *ctx); -BIGNUM *BN_mod_sqrt(BIGNUM *ret, - const BIGNUM *a, const BIGNUM *n, BN_CTX *ctx); - -void BN_consttime_swap(BN_ULONG swap, BIGNUM *a, BIGNUM *b, int nwords); - -/* Deprecated versions */ -# ifndef OPENSSL_NO_DEPRECATED -BIGNUM *BN_generate_prime(BIGNUM *ret, int bits, int safe, - const BIGNUM *add, const BIGNUM *rem, - void (*callback) (int, int, void *), void *cb_arg); -int BN_is_prime(const BIGNUM *p, int nchecks, - void (*callback) (int, int, void *), - BN_CTX *ctx, void *cb_arg); -int BN_is_prime_fasttest(const BIGNUM *p, int nchecks, - void (*callback) (int, int, void *), BN_CTX *ctx, - void *cb_arg, int do_trial_division); -# endif /* !defined(OPENSSL_NO_DEPRECATED) */ - -/* Newer versions */ -int BN_generate_prime_ex(BIGNUM *ret, int bits, int safe, const BIGNUM *add, - const BIGNUM *rem, BN_GENCB *cb); -int BN_is_prime_ex(const BIGNUM *p, int nchecks, BN_CTX *ctx, BN_GENCB *cb); -int BN_is_prime_fasttest_ex(const BIGNUM *p, int nchecks, BN_CTX *ctx, - int do_trial_division, BN_GENCB *cb); - -int BN_X931_generate_Xpq(BIGNUM *Xp, BIGNUM *Xq, int nbits, BN_CTX *ctx); - -int BN_X931_derive_prime_ex(BIGNUM *p, BIGNUM *p1, BIGNUM *p2, - const BIGNUM *Xp, const BIGNUM *Xp1, - const BIGNUM *Xp2, const BIGNUM *e, BN_CTX *ctx, - BN_GENCB *cb); -int BN_X931_generate_prime_ex(BIGNUM *p, BIGNUM *p1, BIGNUM *p2, BIGNUM *Xp1, - BIGNUM *Xp2, const BIGNUM *Xp, const BIGNUM *e, - BN_CTX *ctx, BN_GENCB *cb); - -BN_MONT_CTX *BN_MONT_CTX_new(void); -void BN_MONT_CTX_init(BN_MONT_CTX *ctx); -int BN_mod_mul_montgomery(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, - BN_MONT_CTX *mont, BN_CTX *ctx); -# define BN_to_montgomery(r,a,mont,ctx) BN_mod_mul_montgomery(\ - (r),(a),&((mont)->RR),(mont),(ctx)) -int BN_from_montgomery(BIGNUM *r, const BIGNUM *a, - BN_MONT_CTX *mont, BN_CTX *ctx); -void BN_MONT_CTX_free(BN_MONT_CTX *mont); -int BN_MONT_CTX_set(BN_MONT_CTX *mont, const BIGNUM *mod, BN_CTX *ctx); -BN_MONT_CTX *BN_MONT_CTX_copy(BN_MONT_CTX *to, BN_MONT_CTX *from); -BN_MONT_CTX *BN_MONT_CTX_set_locked(BN_MONT_CTX **pmont, int lock, - const BIGNUM *mod, BN_CTX *ctx); - -/* BN_BLINDING flags */ -# define BN_BLINDING_NO_UPDATE 0x00000001 -# define BN_BLINDING_NO_RECREATE 0x00000002 - -BN_BLINDING *BN_BLINDING_new(const BIGNUM *A, const BIGNUM *Ai, BIGNUM *mod); -void BN_BLINDING_free(BN_BLINDING *b); -int BN_BLINDING_update(BN_BLINDING *b, BN_CTX *ctx); -int BN_BLINDING_convert(BIGNUM *n, BN_BLINDING *b, BN_CTX *ctx); -int BN_BLINDING_invert(BIGNUM *n, BN_BLINDING *b, BN_CTX *ctx); -int BN_BLINDING_convert_ex(BIGNUM *n, BIGNUM *r, BN_BLINDING *b, BN_CTX *); -int BN_BLINDING_invert_ex(BIGNUM *n, const BIGNUM *r, BN_BLINDING *b, - BN_CTX *); -# ifndef OPENSSL_NO_DEPRECATED -unsigned long BN_BLINDING_get_thread_id(const BN_BLINDING *); -void BN_BLINDING_set_thread_id(BN_BLINDING *, unsigned long); -# endif -CRYPTO_THREADID *BN_BLINDING_thread_id(BN_BLINDING *); -unsigned long BN_BLINDING_get_flags(const BN_BLINDING *); -void BN_BLINDING_set_flags(BN_BLINDING *, unsigned long); -BN_BLINDING *BN_BLINDING_create_param(BN_BLINDING *b, - const BIGNUM *e, BIGNUM *m, BN_CTX *ctx, - int (*bn_mod_exp) (BIGNUM *r, - const BIGNUM *a, - const BIGNUM *p, - const BIGNUM *m, - BN_CTX *ctx, - BN_MONT_CTX *m_ctx), - BN_MONT_CTX *m_ctx); - -# ifndef OPENSSL_NO_DEPRECATED -void BN_set_params(int mul, int high, int low, int mont); -int BN_get_params(int which); /* 0, mul, 1 high, 2 low, 3 mont */ -# endif - -void BN_RECP_CTX_init(BN_RECP_CTX *recp); -BN_RECP_CTX *BN_RECP_CTX_new(void); -void BN_RECP_CTX_free(BN_RECP_CTX *recp); -int BN_RECP_CTX_set(BN_RECP_CTX *recp, const BIGNUM *rdiv, BN_CTX *ctx); -int BN_mod_mul_reciprocal(BIGNUM *r, const BIGNUM *x, const BIGNUM *y, - BN_RECP_CTX *recp, BN_CTX *ctx); -int BN_mod_exp_recp(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, - const BIGNUM *m, BN_CTX *ctx); -int BN_div_recp(BIGNUM *dv, BIGNUM *rem, const BIGNUM *m, - BN_RECP_CTX *recp, BN_CTX *ctx); - -# ifndef OPENSSL_NO_EC2M - -/* - * Functions for arithmetic over binary polynomials represented by BIGNUMs. - * The BIGNUM::neg property of BIGNUMs representing binary polynomials is - * ignored. Note that input arguments are not const so that their bit arrays - * can be expanded to the appropriate size if needed. - */ - -/* - * r = a + b - */ -int BN_GF2m_add(BIGNUM *r, const BIGNUM *a, const BIGNUM *b); -# define BN_GF2m_sub(r, a, b) BN_GF2m_add(r, a, b) -/* - * r=a mod p - */ -int BN_GF2m_mod(BIGNUM *r, const BIGNUM *a, const BIGNUM *p); -/* r = (a * b) mod p */ -int BN_GF2m_mod_mul(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, - const BIGNUM *p, BN_CTX *ctx); -/* r = (a * a) mod p */ -int BN_GF2m_mod_sqr(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx); -/* r = (1 / b) mod p */ -int BN_GF2m_mod_inv(BIGNUM *r, const BIGNUM *b, const BIGNUM *p, BN_CTX *ctx); -/* r = (a / b) mod p */ -int BN_GF2m_mod_div(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, - const BIGNUM *p, BN_CTX *ctx); -/* r = (a ^ b) mod p */ -int BN_GF2m_mod_exp(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, - const BIGNUM *p, BN_CTX *ctx); -/* r = sqrt(a) mod p */ -int BN_GF2m_mod_sqrt(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, - BN_CTX *ctx); -/* r^2 + r = a mod p */ -int BN_GF2m_mod_solve_quad(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, - BN_CTX *ctx); -# define BN_GF2m_cmp(a, b) BN_ucmp((a), (b)) -/*- - * Some functions allow for representation of the irreducible polynomials - * as an unsigned int[], say p. The irreducible f(t) is then of the form: - * t^p[0] + t^p[1] + ... + t^p[k] - * where m = p[0] > p[1] > ... > p[k] = 0. - */ -/* r = a mod p */ -int BN_GF2m_mod_arr(BIGNUM *r, const BIGNUM *a, const int p[]); -/* r = (a * b) mod p */ -int BN_GF2m_mod_mul_arr(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, - const int p[], BN_CTX *ctx); -/* r = (a * a) mod p */ -int BN_GF2m_mod_sqr_arr(BIGNUM *r, const BIGNUM *a, const int p[], - BN_CTX *ctx); -/* r = (1 / b) mod p */ -int BN_GF2m_mod_inv_arr(BIGNUM *r, const BIGNUM *b, const int p[], - BN_CTX *ctx); -/* r = (a / b) mod p */ -int BN_GF2m_mod_div_arr(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, - const int p[], BN_CTX *ctx); -/* r = (a ^ b) mod p */ -int BN_GF2m_mod_exp_arr(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, - const int p[], BN_CTX *ctx); -/* r = sqrt(a) mod p */ -int BN_GF2m_mod_sqrt_arr(BIGNUM *r, const BIGNUM *a, - const int p[], BN_CTX *ctx); -/* r^2 + r = a mod p */ -int BN_GF2m_mod_solve_quad_arr(BIGNUM *r, const BIGNUM *a, - const int p[], BN_CTX *ctx); -int BN_GF2m_poly2arr(const BIGNUM *a, int p[], int max); -int BN_GF2m_arr2poly(const int p[], BIGNUM *a); - -# endif - -/* - * faster mod functions for the 'NIST primes' 0 <= a < p^2 - */ -int BN_nist_mod_192(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx); -int BN_nist_mod_224(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx); -int BN_nist_mod_256(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx); -int BN_nist_mod_384(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx); -int BN_nist_mod_521(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx); - -const BIGNUM *BN_get0_nist_prime_192(void); -const BIGNUM *BN_get0_nist_prime_224(void); -const BIGNUM *BN_get0_nist_prime_256(void); -const BIGNUM *BN_get0_nist_prime_384(void); -const BIGNUM *BN_get0_nist_prime_521(void); - -/* library internal functions */ - -# define bn_expand(a,bits) ((((((bits+BN_BITS2-1))/BN_BITS2)) <= (a)->dmax)?\ - (a):bn_expand2((a),(bits+BN_BITS2-1)/BN_BITS2)) -# define bn_wexpand(a,words) (((words) <= (a)->dmax)?(a):bn_expand2((a),(words))) -BIGNUM *bn_expand2(BIGNUM *a, int words); -# ifndef OPENSSL_NO_DEPRECATED -BIGNUM *bn_dup_expand(const BIGNUM *a, int words); /* unused */ -# endif - -/*- - * Bignum consistency macros - * There is one "API" macro, bn_fix_top(), for stripping leading zeroes from - * bignum data after direct manipulations on the data. There is also an - * "internal" macro, bn_check_top(), for verifying that there are no leading - * zeroes. Unfortunately, some auditing is required due to the fact that - * bn_fix_top() has become an overabused duct-tape because bignum data is - * occasionally passed around in an inconsistent state. So the following - * changes have been made to sort this out; - * - bn_fix_top()s implementation has been moved to bn_correct_top() - * - if BN_DEBUG isn't defined, bn_fix_top() maps to bn_correct_top(), and - * bn_check_top() is as before. - * - if BN_DEBUG *is* defined; - * - bn_check_top() tries to pollute unused words even if the bignum 'top' is - * consistent. (ed: only if BN_DEBUG_RAND is defined) - * - bn_fix_top() maps to bn_check_top() rather than "fixing" anything. - * The idea is to have debug builds flag up inconsistent bignums when they - * occur. If that occurs in a bn_fix_top(), we examine the code in question; if - * the use of bn_fix_top() was appropriate (ie. it follows directly after code - * that manipulates the bignum) it is converted to bn_correct_top(), and if it - * was not appropriate, we convert it permanently to bn_check_top() and track - * down the cause of the bug. Eventually, no internal code should be using the - * bn_fix_top() macro. External applications and libraries should try this with - * their own code too, both in terms of building against the openssl headers - * with BN_DEBUG defined *and* linking with a version of OpenSSL built with it - * defined. This not only improves external code, it provides more test - * coverage for openssl's own code. - */ - -# ifdef BN_DEBUG - -/* We only need assert() when debugging */ -# include - -# ifdef BN_DEBUG_RAND -/* To avoid "make update" cvs wars due to BN_DEBUG, use some tricks */ -# ifndef RAND_pseudo_bytes -int RAND_pseudo_bytes(unsigned char *buf, int num); -# define BN_DEBUG_TRIX -# endif -# define bn_pollute(a) \ - do { \ - const BIGNUM *_bnum1 = (a); \ - if(_bnum1->top < _bnum1->dmax) { \ - unsigned char _tmp_char; \ - /* We cast away const without the compiler knowing, any \ - * *genuinely* constant variables that aren't mutable \ - * wouldn't be constructed with top!=dmax. */ \ - BN_ULONG *_not_const; \ - memcpy(&_not_const, &_bnum1->d, sizeof(BN_ULONG*)); \ - RAND_pseudo_bytes(&_tmp_char, 1); \ - memset((unsigned char *)(_not_const + _bnum1->top), _tmp_char, \ - (_bnum1->dmax - _bnum1->top) * sizeof(BN_ULONG)); \ - } \ - } while(0) -# ifdef BN_DEBUG_TRIX -# undef RAND_pseudo_bytes -# endif -# else -# define bn_pollute(a) -# endif -# define bn_check_top(a) \ - do { \ - const BIGNUM *_bnum2 = (a); \ - if (_bnum2 != NULL) { \ - assert((_bnum2->top == 0) || \ - (_bnum2->d[_bnum2->top - 1] != 0)); \ - bn_pollute(_bnum2); \ - } \ - } while(0) - -# define bn_fix_top(a) bn_check_top(a) - -# define bn_check_size(bn, bits) bn_wcheck_size(bn, ((bits+BN_BITS2-1))/BN_BITS2) -# define bn_wcheck_size(bn, words) \ - do { \ - const BIGNUM *_bnum2 = (bn); \ - assert((words) <= (_bnum2)->dmax && (words) >= (_bnum2)->top); \ - /* avoid unused variable warning with NDEBUG */ \ - (void)(_bnum2); \ - } while(0) - -# else /* !BN_DEBUG */ - -# define bn_pollute(a) -# define bn_check_top(a) -# define bn_fix_top(a) bn_correct_top(a) -# define bn_check_size(bn, bits) -# define bn_wcheck_size(bn, words) - -# endif - -# define bn_correct_top(a) \ - { \ - BN_ULONG *ftl; \ - int tmp_top = (a)->top; \ - if (tmp_top > 0) \ - { \ - for (ftl= &((a)->d[tmp_top-1]); tmp_top > 0; tmp_top--) \ - if (*(ftl--)) break; \ - (a)->top = tmp_top; \ - } \ - bn_pollute(a); \ - } - -BN_ULONG bn_mul_add_words(BN_ULONG *rp, const BN_ULONG *ap, int num, - BN_ULONG w); -BN_ULONG bn_mul_words(BN_ULONG *rp, const BN_ULONG *ap, int num, BN_ULONG w); -void bn_sqr_words(BN_ULONG *rp, const BN_ULONG *ap, int num); -BN_ULONG bn_div_words(BN_ULONG h, BN_ULONG l, BN_ULONG d); -BN_ULONG bn_add_words(BN_ULONG *rp, const BN_ULONG *ap, const BN_ULONG *bp, - int num); -BN_ULONG bn_sub_words(BN_ULONG *rp, const BN_ULONG *ap, const BN_ULONG *bp, - int num); - -/* Primes from RFC 2409 */ -BIGNUM *get_rfc2409_prime_768(BIGNUM *bn); -BIGNUM *get_rfc2409_prime_1024(BIGNUM *bn); - -/* Primes from RFC 3526 */ -BIGNUM *get_rfc3526_prime_1536(BIGNUM *bn); -BIGNUM *get_rfc3526_prime_2048(BIGNUM *bn); -BIGNUM *get_rfc3526_prime_3072(BIGNUM *bn); -BIGNUM *get_rfc3526_prime_4096(BIGNUM *bn); -BIGNUM *get_rfc3526_prime_6144(BIGNUM *bn); -BIGNUM *get_rfc3526_prime_8192(BIGNUM *bn); - -int BN_bntest_rand(BIGNUM *rnd, int bits, int top, int bottom); - -/* BEGIN ERROR CODES */ -/* - * The following lines are auto generated by the script mkerr.pl. Any changes - * made after this point may be overwritten when the script is next run. - */ -void ERR_load_BN_strings(void); - -/* Error codes for the BN functions. */ - -/* Function codes. */ -# define BN_F_BNRAND 127 -# define BN_F_BN_BLINDING_CONVERT_EX 100 -# define BN_F_BN_BLINDING_CREATE_PARAM 128 -# define BN_F_BN_BLINDING_INVERT_EX 101 -# define BN_F_BN_BLINDING_NEW 102 -# define BN_F_BN_BLINDING_UPDATE 103 -# define BN_F_BN_BN2DEC 104 -# define BN_F_BN_BN2HEX 105 -# define BN_F_BN_CTX_GET 116 -# define BN_F_BN_CTX_NEW 106 -# define BN_F_BN_CTX_START 129 -# define BN_F_BN_DIV 107 -# define BN_F_BN_DIV_NO_BRANCH 138 -# define BN_F_BN_DIV_RECP 130 -# define BN_F_BN_EXP 123 -# define BN_F_BN_EXPAND2 108 -# define BN_F_BN_EXPAND_INTERNAL 120 -# define BN_F_BN_GF2M_MOD 131 -# define BN_F_BN_GF2M_MOD_EXP 132 -# define BN_F_BN_GF2M_MOD_MUL 133 -# define BN_F_BN_GF2M_MOD_SOLVE_QUAD 134 -# define BN_F_BN_GF2M_MOD_SOLVE_QUAD_ARR 135 -# define BN_F_BN_GF2M_MOD_SQR 136 -# define BN_F_BN_GF2M_MOD_SQRT 137 -# define BN_F_BN_MOD_EXP2_MONT 118 -# define BN_F_BN_MOD_EXP_MONT 109 -# define BN_F_BN_MOD_EXP_MONT_CONSTTIME 124 -# define BN_F_BN_MOD_EXP_MONT_WORD 117 -# define BN_F_BN_MOD_EXP_RECP 125 -# define BN_F_BN_MOD_EXP_SIMPLE 126 -# define BN_F_BN_MOD_INVERSE 110 -# define BN_F_BN_MOD_INVERSE_NO_BRANCH 139 -# define BN_F_BN_MOD_LSHIFT_QUICK 119 -# define BN_F_BN_MOD_MUL_RECIPROCAL 111 -# define BN_F_BN_MOD_SQRT 121 -# define BN_F_BN_MPI2BN 112 -# define BN_F_BN_NEW 113 -# define BN_F_BN_RAND 114 -# define BN_F_BN_RAND_RANGE 122 -# define BN_F_BN_USUB 115 - -/* Reason codes. */ -# define BN_R_ARG2_LT_ARG3 100 -# define BN_R_BAD_RECIPROCAL 101 -# define BN_R_BIGNUM_TOO_LONG 114 -# define BN_R_CALLED_WITH_EVEN_MODULUS 102 -# define BN_R_DIV_BY_ZERO 103 -# define BN_R_ENCODING_ERROR 104 -# define BN_R_EXPAND_ON_STATIC_BIGNUM_DATA 105 -# define BN_R_INPUT_NOT_REDUCED 110 -# define BN_R_INVALID_LENGTH 106 -# define BN_R_INVALID_RANGE 115 -# define BN_R_NOT_A_SQUARE 111 -# define BN_R_NOT_INITIALIZED 107 -# define BN_R_NO_INVERSE 108 -# define BN_R_NO_SOLUTION 116 -# define BN_R_P_IS_NOT_PRIME 112 -# define BN_R_TOO_MANY_ITERATIONS 113 -# define BN_R_TOO_MANY_TEMPORARY_VARIABLES 109 - -#ifdef __cplusplus -} -#endif -#endif diff --git a/ext/openssl-win32/inc32/openssl/buffer.h b/ext/openssl-win32/inc32/openssl/buffer.h deleted file mode 100644 index c343dd77..00000000 --- a/ext/openssl-win32/inc32/openssl/buffer.h +++ /dev/null @@ -1,119 +0,0 @@ -/* crypto/buffer/buffer.h */ -/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) - * All rights reserved. - * - * This package is an SSL implementation written - * by Eric Young (eay@cryptsoft.com). - * The implementation was written so as to conform with Netscapes SSL. - * - * This library is free for commercial and non-commercial use as long as - * the following conditions are aheared to. The following conditions - * apply to all code found in this distribution, be it the RC4, RSA, - * lhash, DES, etc., code; not just the SSL code. The SSL documentation - * included with this distribution is covered by the same copyright terms - * except that the holder is Tim Hudson (tjh@cryptsoft.com). - * - * Copyright remains Eric Young's, and as such any Copyright notices in - * the code are not to be removed. - * If this package is used in a product, Eric Young should be given attribution - * as the author of the parts of the library used. - * This can be in the form of a textual message at program startup or - * in documentation (online or textual) provided with the package. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * "This product includes cryptographic software written by - * Eric Young (eay@cryptsoft.com)" - * The word 'cryptographic' can be left out if the rouines from the library - * being used are not cryptographic related :-). - * 4. If you include any Windows specific code (or a derivative thereof) from - * the apps directory (application code) you must include an acknowledgement: - * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" - * - * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * The licence and distribution terms for any publically available version or - * derivative of this code cannot be changed. i.e. this code cannot simply be - * copied and put under another distribution licence - * [including the GNU Public Licence.] - */ - -#ifndef HEADER_BUFFER_H -# define HEADER_BUFFER_H - -# include - -#ifdef __cplusplus -extern "C" { -#endif - -# include - -# if !defined(NO_SYS_TYPES_H) -# include -# endif - -/* Already declared in ossl_typ.h */ -/* typedef struct buf_mem_st BUF_MEM; */ - -struct buf_mem_st { - size_t length; /* current number of bytes */ - char *data; - size_t max; /* size of buffer */ -}; - -BUF_MEM *BUF_MEM_new(void); -void BUF_MEM_free(BUF_MEM *a); -int BUF_MEM_grow(BUF_MEM *str, size_t len); -int BUF_MEM_grow_clean(BUF_MEM *str, size_t len); -size_t BUF_strnlen(const char *str, size_t maxlen); -char *BUF_strdup(const char *str); -char *BUF_strndup(const char *str, size_t siz); -void *BUF_memdup(const void *data, size_t siz); -void BUF_reverse(unsigned char *out, const unsigned char *in, size_t siz); - -/* safe string functions */ -size_t BUF_strlcpy(char *dst, const char *src, size_t siz); -size_t BUF_strlcat(char *dst, const char *src, size_t siz); - -/* BEGIN ERROR CODES */ -/* - * The following lines are auto generated by the script mkerr.pl. Any changes - * made after this point may be overwritten when the script is next run. - */ -void ERR_load_BUF_strings(void); - -/* Error codes for the BUF functions. */ - -/* Function codes. */ -# define BUF_F_BUF_MEMDUP 103 -# define BUF_F_BUF_MEM_GROW 100 -# define BUF_F_BUF_MEM_GROW_CLEAN 105 -# define BUF_F_BUF_MEM_NEW 101 -# define BUF_F_BUF_STRDUP 102 -# define BUF_F_BUF_STRNDUP 104 - -/* Reason codes. */ - -#ifdef __cplusplus -} -#endif -#endif diff --git a/ext/openssl-win32/inc32/openssl/comp.h b/ext/openssl-win32/inc32/openssl/comp.h deleted file mode 100644 index 406c428a..00000000 --- a/ext/openssl-win32/inc32/openssl/comp.h +++ /dev/null @@ -1,79 +0,0 @@ - -#ifndef HEADER_COMP_H -# define HEADER_COMP_H - -# include - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct comp_ctx_st COMP_CTX; - -typedef struct comp_method_st { - int type; /* NID for compression library */ - const char *name; /* A text string to identify the library */ - int (*init) (COMP_CTX *ctx); - void (*finish) (COMP_CTX *ctx); - int (*compress) (COMP_CTX *ctx, - unsigned char *out, unsigned int olen, - unsigned char *in, unsigned int ilen); - int (*expand) (COMP_CTX *ctx, - unsigned char *out, unsigned int olen, - unsigned char *in, unsigned int ilen); - /* - * The following two do NOTHING, but are kept for backward compatibility - */ - long (*ctrl) (void); - long (*callback_ctrl) (void); -} COMP_METHOD; - -struct comp_ctx_st { - COMP_METHOD *meth; - unsigned long compress_in; - unsigned long compress_out; - unsigned long expand_in; - unsigned long expand_out; - CRYPTO_EX_DATA ex_data; -}; - -COMP_CTX *COMP_CTX_new(COMP_METHOD *meth); -void COMP_CTX_free(COMP_CTX *ctx); -int COMP_compress_block(COMP_CTX *ctx, unsigned char *out, int olen, - unsigned char *in, int ilen); -int COMP_expand_block(COMP_CTX *ctx, unsigned char *out, int olen, - unsigned char *in, int ilen); -COMP_METHOD *COMP_rle(void); -COMP_METHOD *COMP_zlib(void); -void COMP_zlib_cleanup(void); - -# ifdef HEADER_BIO_H -# ifdef ZLIB -BIO_METHOD *BIO_f_zlib(void); -# endif -# endif - -/* BEGIN ERROR CODES */ -/* - * The following lines are auto generated by the script mkerr.pl. Any changes - * made after this point may be overwritten when the script is next run. - */ -void ERR_load_COMP_strings(void); - -/* Error codes for the COMP functions. */ - -/* Function codes. */ -# define COMP_F_BIO_ZLIB_FLUSH 99 -# define COMP_F_BIO_ZLIB_NEW 100 -# define COMP_F_BIO_ZLIB_READ 101 -# define COMP_F_BIO_ZLIB_WRITE 102 - -/* Reason codes. */ -# define COMP_R_ZLIB_DEFLATE_ERROR 99 -# define COMP_R_ZLIB_INFLATE_ERROR 100 -# define COMP_R_ZLIB_NOT_SUPPORTED 101 - -#ifdef __cplusplus -} -#endif -#endif diff --git a/ext/openssl-win32/inc32/openssl/crypto.h b/ext/openssl-win32/inc32/openssl/crypto.h deleted file mode 100644 index c450d7a3..00000000 --- a/ext/openssl-win32/inc32/openssl/crypto.h +++ /dev/null @@ -1,661 +0,0 @@ -/* crypto/crypto.h */ -/* ==================================================================== - * Copyright (c) 1998-2006 The OpenSSL Project. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. All advertising materials mentioning features or use of this - * software must display the following acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" - * - * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * openssl-core@openssl.org. - * - * 5. Products derived from this software may not be called "OpenSSL" - * nor may "OpenSSL" appear in their names without prior written - * permission of the OpenSSL Project. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit (http://www.openssl.org/)" - * - * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY - * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * ==================================================================== - * - * This product includes cryptographic software written by Eric Young - * (eay@cryptsoft.com). This product includes software written by Tim - * Hudson (tjh@cryptsoft.com). - * - */ -/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) - * All rights reserved. - * - * This package is an SSL implementation written - * by Eric Young (eay@cryptsoft.com). - * The implementation was written so as to conform with Netscapes SSL. - * - * This library is free for commercial and non-commercial use as long as - * the following conditions are aheared to. The following conditions - * apply to all code found in this distribution, be it the RC4, RSA, - * lhash, DES, etc., code; not just the SSL code. The SSL documentation - * included with this distribution is covered by the same copyright terms - * except that the holder is Tim Hudson (tjh@cryptsoft.com). - * - * Copyright remains Eric Young's, and as such any Copyright notices in - * the code are not to be removed. - * If this package is used in a product, Eric Young should be given attribution - * as the author of the parts of the library used. - * This can be in the form of a textual message at program startup or - * in documentation (online or textual) provided with the package. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * "This product includes cryptographic software written by - * Eric Young (eay@cryptsoft.com)" - * The word 'cryptographic' can be left out if the rouines from the library - * being used are not cryptographic related :-). - * 4. If you include any Windows specific code (or a derivative thereof) from - * the apps directory (application code) you must include an acknowledgement: - * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" - * - * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * The licence and distribution terms for any publically available version or - * derivative of this code cannot be changed. i.e. this code cannot simply be - * copied and put under another distribution licence - * [including the GNU Public Licence.] - */ -/* ==================================================================== - * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED. - * ECDH support in OpenSSL originally developed by - * SUN MICROSYSTEMS, INC., and contributed to the OpenSSL project. - */ - -#ifndef HEADER_CRYPTO_H -# define HEADER_CRYPTO_H - -# include - -# include - -# ifndef OPENSSL_NO_FP_API -# include -# endif - -# include -# include -# include -# include - -# ifdef CHARSET_EBCDIC -# include -# endif - -/* - * Resolve problems on some operating systems with symbol names that clash - * one way or another - */ -# include - -#ifdef __cplusplus -extern "C" { -#endif - -/* Backward compatibility to SSLeay */ -/* - * This is more to be used to check the correct DLL is being used in the MS - * world. - */ -# define SSLEAY_VERSION_NUMBER OPENSSL_VERSION_NUMBER -# define SSLEAY_VERSION 0 -/* #define SSLEAY_OPTIONS 1 no longer supported */ -# define SSLEAY_CFLAGS 2 -# define SSLEAY_BUILT_ON 3 -# define SSLEAY_PLATFORM 4 -# define SSLEAY_DIR 5 - -/* Already declared in ossl_typ.h */ -# if 0 -typedef struct crypto_ex_data_st CRYPTO_EX_DATA; -/* Called when a new object is created */ -typedef int CRYPTO_EX_new (void *parent, void *ptr, CRYPTO_EX_DATA *ad, - int idx, long argl, void *argp); -/* Called when an object is free()ed */ -typedef void CRYPTO_EX_free (void *parent, void *ptr, CRYPTO_EX_DATA *ad, - int idx, long argl, void *argp); -/* Called when we need to dup an object */ -typedef int CRYPTO_EX_dup (CRYPTO_EX_DATA *to, CRYPTO_EX_DATA *from, - void *from_d, int idx, long argl, void *argp); -# endif - -/* A generic structure to pass assorted data in a expandable way */ -typedef struct openssl_item_st { - int code; - void *value; /* Not used for flag attributes */ - size_t value_size; /* Max size of value for output, length for - * input */ - size_t *value_length; /* Returned length of value for output */ -} OPENSSL_ITEM; - -/* - * When changing the CRYPTO_LOCK_* list, be sure to maintin the text lock - * names in cryptlib.c - */ - -# define CRYPTO_LOCK_ERR 1 -# define CRYPTO_LOCK_EX_DATA 2 -# define CRYPTO_LOCK_X509 3 -# define CRYPTO_LOCK_X509_INFO 4 -# define CRYPTO_LOCK_X509_PKEY 5 -# define CRYPTO_LOCK_X509_CRL 6 -# define CRYPTO_LOCK_X509_REQ 7 -# define CRYPTO_LOCK_DSA 8 -# define CRYPTO_LOCK_RSA 9 -# define CRYPTO_LOCK_EVP_PKEY 10 -# define CRYPTO_LOCK_X509_STORE 11 -# define CRYPTO_LOCK_SSL_CTX 12 -# define CRYPTO_LOCK_SSL_CERT 13 -# define CRYPTO_LOCK_SSL_SESSION 14 -# define CRYPTO_LOCK_SSL_SESS_CERT 15 -# define CRYPTO_LOCK_SSL 16 -# define CRYPTO_LOCK_SSL_METHOD 17 -# define CRYPTO_LOCK_RAND 18 -# define CRYPTO_LOCK_RAND2 19 -# define CRYPTO_LOCK_MALLOC 20 -# define CRYPTO_LOCK_BIO 21 -# define CRYPTO_LOCK_GETHOSTBYNAME 22 -# define CRYPTO_LOCK_GETSERVBYNAME 23 -# define CRYPTO_LOCK_READDIR 24 -# define CRYPTO_LOCK_RSA_BLINDING 25 -# define CRYPTO_LOCK_DH 26 -# define CRYPTO_LOCK_MALLOC2 27 -# define CRYPTO_LOCK_DSO 28 -# define CRYPTO_LOCK_DYNLOCK 29 -# define CRYPTO_LOCK_ENGINE 30 -# define CRYPTO_LOCK_UI 31 -# define CRYPTO_LOCK_ECDSA 32 -# define CRYPTO_LOCK_EC 33 -# define CRYPTO_LOCK_ECDH 34 -# define CRYPTO_LOCK_BN 35 -# define CRYPTO_LOCK_EC_PRE_COMP 36 -# define CRYPTO_LOCK_STORE 37 -# define CRYPTO_LOCK_COMP 38 -# define CRYPTO_LOCK_FIPS 39 -# define CRYPTO_LOCK_FIPS2 40 -# define CRYPTO_NUM_LOCKS 41 - -# define CRYPTO_LOCK 1 -# define CRYPTO_UNLOCK 2 -# define CRYPTO_READ 4 -# define CRYPTO_WRITE 8 - -# ifndef OPENSSL_NO_LOCKING -# ifndef CRYPTO_w_lock -# define CRYPTO_w_lock(type) \ - CRYPTO_lock(CRYPTO_LOCK|CRYPTO_WRITE,type,__FILE__,__LINE__) -# define CRYPTO_w_unlock(type) \ - CRYPTO_lock(CRYPTO_UNLOCK|CRYPTO_WRITE,type,__FILE__,__LINE__) -# define CRYPTO_r_lock(type) \ - CRYPTO_lock(CRYPTO_LOCK|CRYPTO_READ,type,__FILE__,__LINE__) -# define CRYPTO_r_unlock(type) \ - CRYPTO_lock(CRYPTO_UNLOCK|CRYPTO_READ,type,__FILE__,__LINE__) -# define CRYPTO_add(addr,amount,type) \ - CRYPTO_add_lock(addr,amount,type,__FILE__,__LINE__) -# endif -# else -# define CRYPTO_w_lock(a) -# define CRYPTO_w_unlock(a) -# define CRYPTO_r_lock(a) -# define CRYPTO_r_unlock(a) -# define CRYPTO_add(a,b,c) ((*(a))+=(b)) -# endif - -/* - * Some applications as well as some parts of OpenSSL need to allocate and - * deallocate locks in a dynamic fashion. The following typedef makes this - * possible in a type-safe manner. - */ -/* struct CRYPTO_dynlock_value has to be defined by the application. */ -typedef struct { - int references; - struct CRYPTO_dynlock_value *data; -} CRYPTO_dynlock; - -/* - * The following can be used to detect memory leaks in the SSLeay library. It - * used, it turns on malloc checking - */ - -# define CRYPTO_MEM_CHECK_OFF 0x0/* an enume */ -# define CRYPTO_MEM_CHECK_ON 0x1/* a bit */ -# define CRYPTO_MEM_CHECK_ENABLE 0x2/* a bit */ -# define CRYPTO_MEM_CHECK_DISABLE 0x3/* an enume */ - -/* - * The following are bit values to turn on or off options connected to the - * malloc checking functionality - */ - -/* Adds time to the memory checking information */ -# define V_CRYPTO_MDEBUG_TIME 0x1/* a bit */ -/* Adds thread number to the memory checking information */ -# define V_CRYPTO_MDEBUG_THREAD 0x2/* a bit */ - -# define V_CRYPTO_MDEBUG_ALL (V_CRYPTO_MDEBUG_TIME | V_CRYPTO_MDEBUG_THREAD) - -/* predec of the BIO type */ -typedef struct bio_st BIO_dummy; - -struct crypto_ex_data_st { - STACK_OF(void) *sk; - /* gcc is screwing up this data structure :-( */ - int dummy; -}; -DECLARE_STACK_OF(void) - -/* - * This stuff is basically class callback functions The current classes are - * SSL_CTX, SSL, SSL_SESSION, and a few more - */ - -typedef struct crypto_ex_data_func_st { - long argl; /* Arbitary long */ - void *argp; /* Arbitary void * */ - CRYPTO_EX_new *new_func; - CRYPTO_EX_free *free_func; - CRYPTO_EX_dup *dup_func; -} CRYPTO_EX_DATA_FUNCS; - -DECLARE_STACK_OF(CRYPTO_EX_DATA_FUNCS) - -/* - * Per class, we have a STACK of CRYPTO_EX_DATA_FUNCS for each CRYPTO_EX_DATA - * entry. - */ - -# define CRYPTO_EX_INDEX_BIO 0 -# define CRYPTO_EX_INDEX_SSL 1 -# define CRYPTO_EX_INDEX_SSL_CTX 2 -# define CRYPTO_EX_INDEX_SSL_SESSION 3 -# define CRYPTO_EX_INDEX_X509_STORE 4 -# define CRYPTO_EX_INDEX_X509_STORE_CTX 5 -# define CRYPTO_EX_INDEX_RSA 6 -# define CRYPTO_EX_INDEX_DSA 7 -# define CRYPTO_EX_INDEX_DH 8 -# define CRYPTO_EX_INDEX_ENGINE 9 -# define CRYPTO_EX_INDEX_X509 10 -# define CRYPTO_EX_INDEX_UI 11 -# define CRYPTO_EX_INDEX_ECDSA 12 -# define CRYPTO_EX_INDEX_ECDH 13 -# define CRYPTO_EX_INDEX_COMP 14 -# define CRYPTO_EX_INDEX_STORE 15 - -/* - * Dynamically assigned indexes start from this value (don't use directly, - * use via CRYPTO_ex_data_new_class). - */ -# define CRYPTO_EX_INDEX_USER 100 - -/* - * This is the default callbacks, but we can have others as well: this is - * needed in Win32 where the application malloc and the library malloc may - * not be the same. - */ -# define CRYPTO_malloc_init() CRYPTO_set_mem_functions(\ - malloc, realloc, free) - -# if defined CRYPTO_MDEBUG_ALL || defined CRYPTO_MDEBUG_TIME || defined CRYPTO_MDEBUG_THREAD -# ifndef CRYPTO_MDEBUG /* avoid duplicate #define */ -# define CRYPTO_MDEBUG -# endif -# endif - -/* - * Set standard debugging functions (not done by default unless CRYPTO_MDEBUG - * is defined) - */ -# define CRYPTO_malloc_debug_init() do {\ - CRYPTO_set_mem_debug_functions(\ - CRYPTO_dbg_malloc,\ - CRYPTO_dbg_realloc,\ - CRYPTO_dbg_free,\ - CRYPTO_dbg_set_options,\ - CRYPTO_dbg_get_options);\ - } while(0) - -int CRYPTO_mem_ctrl(int mode); -int CRYPTO_is_mem_check_on(void); - -/* for applications */ -# define MemCheck_start() CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_ON) -# define MemCheck_stop() CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_OFF) - -/* for library-internal use */ -# define MemCheck_on() CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_ENABLE) -# define MemCheck_off() CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_DISABLE) -# define is_MemCheck_on() CRYPTO_is_mem_check_on() - -# define OPENSSL_malloc(num) CRYPTO_malloc((int)num,__FILE__,__LINE__) -# define OPENSSL_strdup(str) CRYPTO_strdup((str),__FILE__,__LINE__) -# define OPENSSL_realloc(addr,num) \ - CRYPTO_realloc((char *)addr,(int)num,__FILE__,__LINE__) -# define OPENSSL_realloc_clean(addr,old_num,num) \ - CRYPTO_realloc_clean(addr,old_num,num,__FILE__,__LINE__) -# define OPENSSL_remalloc(addr,num) \ - CRYPTO_remalloc((char **)addr,(int)num,__FILE__,__LINE__) -# define OPENSSL_freeFunc CRYPTO_free -# define OPENSSL_free(addr) CRYPTO_free(addr) - -# define OPENSSL_malloc_locked(num) \ - CRYPTO_malloc_locked((int)num,__FILE__,__LINE__) -# define OPENSSL_free_locked(addr) CRYPTO_free_locked(addr) - -const char *SSLeay_version(int type); -unsigned long SSLeay(void); - -int OPENSSL_issetugid(void); - -/* An opaque type representing an implementation of "ex_data" support */ -typedef struct st_CRYPTO_EX_DATA_IMPL CRYPTO_EX_DATA_IMPL; -/* Return an opaque pointer to the current "ex_data" implementation */ -const CRYPTO_EX_DATA_IMPL *CRYPTO_get_ex_data_implementation(void); -/* Sets the "ex_data" implementation to be used (if it's not too late) */ -int CRYPTO_set_ex_data_implementation(const CRYPTO_EX_DATA_IMPL *i); -/* Get a new "ex_data" class, and return the corresponding "class_index" */ -int CRYPTO_ex_data_new_class(void); -/* Within a given class, get/register a new index */ -int CRYPTO_get_ex_new_index(int class_index, long argl, void *argp, - CRYPTO_EX_new *new_func, CRYPTO_EX_dup *dup_func, - CRYPTO_EX_free *free_func); -/* - * Initialise/duplicate/free CRYPTO_EX_DATA variables corresponding to a - * given class (invokes whatever per-class callbacks are applicable) - */ -int CRYPTO_new_ex_data(int class_index, void *obj, CRYPTO_EX_DATA *ad); -int CRYPTO_dup_ex_data(int class_index, CRYPTO_EX_DATA *to, - CRYPTO_EX_DATA *from); -void CRYPTO_free_ex_data(int class_index, void *obj, CRYPTO_EX_DATA *ad); -/* - * Get/set data in a CRYPTO_EX_DATA variable corresponding to a particular - * index (relative to the class type involved) - */ -int CRYPTO_set_ex_data(CRYPTO_EX_DATA *ad, int idx, void *val); -void *CRYPTO_get_ex_data(const CRYPTO_EX_DATA *ad, int idx); -/* - * This function cleans up all "ex_data" state. It mustn't be called under - * potential race-conditions. - */ -void CRYPTO_cleanup_all_ex_data(void); - -int CRYPTO_get_new_lockid(char *name); - -int CRYPTO_num_locks(void); /* return CRYPTO_NUM_LOCKS (shared libs!) */ -void CRYPTO_lock(int mode, int type, const char *file, int line); -void CRYPTO_set_locking_callback(void (*func) (int mode, int type, - const char *file, int line)); -void (*CRYPTO_get_locking_callback(void)) (int mode, int type, - const char *file, int line); -void CRYPTO_set_add_lock_callback(int (*func) - (int *num, int mount, int type, - const char *file, int line)); -int (*CRYPTO_get_add_lock_callback(void)) (int *num, int mount, int type, - const char *file, int line); - -/* Don't use this structure directly. */ -typedef struct crypto_threadid_st { - void *ptr; - unsigned long val; -} CRYPTO_THREADID; -/* Only use CRYPTO_THREADID_set_[numeric|pointer]() within callbacks */ -void CRYPTO_THREADID_set_numeric(CRYPTO_THREADID *id, unsigned long val); -void CRYPTO_THREADID_set_pointer(CRYPTO_THREADID *id, void *ptr); -int CRYPTO_THREADID_set_callback(void (*threadid_func) (CRYPTO_THREADID *)); -void (*CRYPTO_THREADID_get_callback(void)) (CRYPTO_THREADID *); -void CRYPTO_THREADID_current(CRYPTO_THREADID *id); -int CRYPTO_THREADID_cmp(const CRYPTO_THREADID *a, const CRYPTO_THREADID *b); -void CRYPTO_THREADID_cpy(CRYPTO_THREADID *dest, const CRYPTO_THREADID *src); -unsigned long CRYPTO_THREADID_hash(const CRYPTO_THREADID *id); -# ifndef OPENSSL_NO_DEPRECATED -void CRYPTO_set_id_callback(unsigned long (*func) (void)); -unsigned long (*CRYPTO_get_id_callback(void)) (void); -unsigned long CRYPTO_thread_id(void); -# endif - -const char *CRYPTO_get_lock_name(int type); -int CRYPTO_add_lock(int *pointer, int amount, int type, const char *file, - int line); - -int CRYPTO_get_new_dynlockid(void); -void CRYPTO_destroy_dynlockid(int i); -struct CRYPTO_dynlock_value *CRYPTO_get_dynlock_value(int i); -void CRYPTO_set_dynlock_create_callback(struct CRYPTO_dynlock_value - *(*dyn_create_function) (const char - *file, - int line)); -void CRYPTO_set_dynlock_lock_callback(void (*dyn_lock_function) - (int mode, - struct CRYPTO_dynlock_value *l, - const char *file, int line)); -void CRYPTO_set_dynlock_destroy_callback(void (*dyn_destroy_function) - (struct CRYPTO_dynlock_value *l, - const char *file, int line)); -struct CRYPTO_dynlock_value -*(*CRYPTO_get_dynlock_create_callback(void)) (const char *file, int line); -void (*CRYPTO_get_dynlock_lock_callback(void)) (int mode, - struct CRYPTO_dynlock_value - *l, const char *file, - int line); -void (*CRYPTO_get_dynlock_destroy_callback(void)) (struct CRYPTO_dynlock_value - *l, const char *file, - int line); - -/* - * CRYPTO_set_mem_functions includes CRYPTO_set_locked_mem_functions -- call - * the latter last if you need different functions - */ -int CRYPTO_set_mem_functions(void *(*m) (size_t), void *(*r) (void *, size_t), - void (*f) (void *)); -int CRYPTO_set_locked_mem_functions(void *(*m) (size_t), - void (*free_func) (void *)); -int CRYPTO_set_mem_ex_functions(void *(*m) (size_t, const char *, int), - void *(*r) (void *, size_t, const char *, - int), void (*f) (void *)); -int CRYPTO_set_locked_mem_ex_functions(void *(*m) (size_t, const char *, int), - void (*free_func) (void *)); -int CRYPTO_set_mem_debug_functions(void (*m) - (void *, int, const char *, int, int), - void (*r) (void *, void *, int, - const char *, int, int), - void (*f) (void *, int), void (*so) (long), - long (*go) (void)); -void CRYPTO_get_mem_functions(void *(**m) (size_t), - void *(**r) (void *, size_t), - void (**f) (void *)); -void CRYPTO_get_locked_mem_functions(void *(**m) (size_t), - void (**f) (void *)); -void CRYPTO_get_mem_ex_functions(void *(**m) (size_t, const char *, int), - void *(**r) (void *, size_t, const char *, - int), void (**f) (void *)); -void CRYPTO_get_locked_mem_ex_functions(void - *(**m) (size_t, const char *, int), - void (**f) (void *)); -void CRYPTO_get_mem_debug_functions(void (**m) - (void *, int, const char *, int, int), - void (**r) (void *, void *, int, - const char *, int, int), - void (**f) (void *, int), - void (**so) (long), long (**go) (void)); - -void *CRYPTO_malloc_locked(int num, const char *file, int line); -void CRYPTO_free_locked(void *ptr); -void *CRYPTO_malloc(int num, const char *file, int line); -char *CRYPTO_strdup(const char *str, const char *file, int line); -void CRYPTO_free(void *ptr); -void *CRYPTO_realloc(void *addr, int num, const char *file, int line); -void *CRYPTO_realloc_clean(void *addr, int old_num, int num, const char *file, - int line); -void *CRYPTO_remalloc(void *addr, int num, const char *file, int line); - -void OPENSSL_cleanse(void *ptr, size_t len); - -void CRYPTO_set_mem_debug_options(long bits); -long CRYPTO_get_mem_debug_options(void); - -# define CRYPTO_push_info(info) \ - CRYPTO_push_info_(info, __FILE__, __LINE__); -int CRYPTO_push_info_(const char *info, const char *file, int line); -int CRYPTO_pop_info(void); -int CRYPTO_remove_all_info(void); - -/* - * Default debugging functions (enabled by CRYPTO_malloc_debug_init() macro; - * used as default in CRYPTO_MDEBUG compilations): - */ -/*- - * The last argument has the following significance: - * - * 0: called before the actual memory allocation has taken place - * 1: called after the actual memory allocation has taken place - */ -void CRYPTO_dbg_malloc(void *addr, int num, const char *file, int line, - int before_p); -void CRYPTO_dbg_realloc(void *addr1, void *addr2, int num, const char *file, - int line, int before_p); -void CRYPTO_dbg_free(void *addr, int before_p); -/*- - * Tell the debugging code about options. By default, the following values - * apply: - * - * 0: Clear all options. - * V_CRYPTO_MDEBUG_TIME (1): Set the "Show Time" option. - * V_CRYPTO_MDEBUG_THREAD (2): Set the "Show Thread Number" option. - * V_CRYPTO_MDEBUG_ALL (3): 1 + 2 - */ -void CRYPTO_dbg_set_options(long bits); -long CRYPTO_dbg_get_options(void); - -# ifndef OPENSSL_NO_FP_API -void CRYPTO_mem_leaks_fp(FILE *); -# endif -void CRYPTO_mem_leaks(struct bio_st *bio); -/* unsigned long order, char *file, int line, int num_bytes, char *addr */ -typedef void *CRYPTO_MEM_LEAK_CB (unsigned long, const char *, int, int, - void *); -void CRYPTO_mem_leaks_cb(CRYPTO_MEM_LEAK_CB *cb); - -/* die if we have to */ -void OpenSSLDie(const char *file, int line, const char *assertion); -# define OPENSSL_assert(e) (void)((e) ? 0 : (OpenSSLDie(__FILE__, __LINE__, #e),1)) - -unsigned long *OPENSSL_ia32cap_loc(void); -# define OPENSSL_ia32cap (*(OPENSSL_ia32cap_loc())) -int OPENSSL_isservice(void); - -int FIPS_mode(void); -int FIPS_mode_set(int r); - -void OPENSSL_init(void); - -# define fips_md_init(alg) fips_md_init_ctx(alg, alg) - -# ifdef OPENSSL_FIPS -# define fips_md_init_ctx(alg, cx) \ - int alg##_Init(cx##_CTX *c) \ - { \ - if (FIPS_mode()) OpenSSLDie(__FILE__, __LINE__, \ - "Low level API call to digest " #alg " forbidden in FIPS mode!"); \ - return private_##alg##_Init(c); \ - } \ - int private_##alg##_Init(cx##_CTX *c) - -# define fips_cipher_abort(alg) \ - if (FIPS_mode()) OpenSSLDie(__FILE__, __LINE__, \ - "Low level API call to cipher " #alg " forbidden in FIPS mode!") - -# else -# define fips_md_init_ctx(alg, cx) \ - int alg##_Init(cx##_CTX *c) -# define fips_cipher_abort(alg) while(0) -# endif - -/* - * CRYPTO_memcmp returns zero iff the |len| bytes at |a| and |b| are equal. - * It takes an amount of time dependent on |len|, but independent of the - * contents of |a| and |b|. Unlike memcmp, it cannot be used to put elements - * into a defined order as the return value when a != b is undefined, other - * than to be non-zero. - */ -int CRYPTO_memcmp(const void *a, const void *b, size_t len); - -/* BEGIN ERROR CODES */ -/* - * The following lines are auto generated by the script mkerr.pl. Any changes - * made after this point may be overwritten when the script is next run. - */ -void ERR_load_CRYPTO_strings(void); - -/* Error codes for the CRYPTO functions. */ - -/* Function codes. */ -# define CRYPTO_F_CRYPTO_GET_EX_NEW_INDEX 100 -# define CRYPTO_F_CRYPTO_GET_NEW_DYNLOCKID 103 -# define CRYPTO_F_CRYPTO_GET_NEW_LOCKID 101 -# define CRYPTO_F_CRYPTO_SET_EX_DATA 102 -# define CRYPTO_F_DEF_ADD_INDEX 104 -# define CRYPTO_F_DEF_GET_CLASS 105 -# define CRYPTO_F_FIPS_MODE_SET 109 -# define CRYPTO_F_INT_DUP_EX_DATA 106 -# define CRYPTO_F_INT_FREE_EX_DATA 107 -# define CRYPTO_F_INT_NEW_EX_DATA 108 - -/* Reason codes. */ -# define CRYPTO_R_FIPS_MODE_NOT_SUPPORTED 101 -# define CRYPTO_R_NO_DYNLOCK_CREATE_CALLBACK 100 - -#ifdef __cplusplus -} -#endif -#endif diff --git a/ext/openssl-win32/inc32/openssl/dh.h b/ext/openssl-win32/inc32/openssl/dh.h deleted file mode 100644 index 0502f1a9..00000000 --- a/ext/openssl-win32/inc32/openssl/dh.h +++ /dev/null @@ -1,392 +0,0 @@ -/* crypto/dh/dh.h */ -/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) - * All rights reserved. - * - * This package is an SSL implementation written - * by Eric Young (eay@cryptsoft.com). - * The implementation was written so as to conform with Netscapes SSL. - * - * This library is free for commercial and non-commercial use as long as - * the following conditions are aheared to. The following conditions - * apply to all code found in this distribution, be it the RC4, RSA, - * lhash, DES, etc., code; not just the SSL code. The SSL documentation - * included with this distribution is covered by the same copyright terms - * except that the holder is Tim Hudson (tjh@cryptsoft.com). - * - * Copyright remains Eric Young's, and as such any Copyright notices in - * the code are not to be removed. - * If this package is used in a product, Eric Young should be given attribution - * as the author of the parts of the library used. - * This can be in the form of a textual message at program startup or - * in documentation (online or textual) provided with the package. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * "This product includes cryptographic software written by - * Eric Young (eay@cryptsoft.com)" - * The word 'cryptographic' can be left out if the rouines from the library - * being used are not cryptographic related :-). - * 4. If you include any Windows specific code (or a derivative thereof) from - * the apps directory (application code) you must include an acknowledgement: - * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" - * - * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * The licence and distribution terms for any publically available version or - * derivative of this code cannot be changed. i.e. this code cannot simply be - * copied and put under another distribution licence - * [including the GNU Public Licence.] - */ - -#ifndef HEADER_DH_H -# define HEADER_DH_H - -# include - -# ifdef OPENSSL_NO_DH -# error DH is disabled. -# endif - -# ifndef OPENSSL_NO_BIO -# include -# endif -# include -# ifndef OPENSSL_NO_DEPRECATED -# include -# endif - -# ifndef OPENSSL_DH_MAX_MODULUS_BITS -# define OPENSSL_DH_MAX_MODULUS_BITS 10000 -# endif - -# define DH_FLAG_CACHE_MONT_P 0x01 - -/* - * new with 0.9.7h; the built-in DH - * implementation now uses constant time - * modular exponentiation for secret exponents - * by default. This flag causes the - * faster variable sliding window method to - * be used for all exponents. - */ -# define DH_FLAG_NO_EXP_CONSTTIME 0x02 - -/* - * If this flag is set the DH method is FIPS compliant and can be used in - * FIPS mode. This is set in the validated module method. If an application - * sets this flag in its own methods it is its reposibility to ensure the - * result is compliant. - */ - -# define DH_FLAG_FIPS_METHOD 0x0400 - -/* - * If this flag is set the operations normally disabled in FIPS mode are - * permitted it is then the applications responsibility to ensure that the - * usage is compliant. - */ - -# define DH_FLAG_NON_FIPS_ALLOW 0x0400 - -#ifdef __cplusplus -extern "C" { -#endif - -/* Already defined in ossl_typ.h */ -/* typedef struct dh_st DH; */ -/* typedef struct dh_method DH_METHOD; */ - -struct dh_method { - const char *name; - /* Methods here */ - int (*generate_key) (DH *dh); - int (*compute_key) (unsigned char *key, const BIGNUM *pub_key, DH *dh); - /* Can be null */ - int (*bn_mod_exp) (const DH *dh, BIGNUM *r, const BIGNUM *a, - const BIGNUM *p, const BIGNUM *m, BN_CTX *ctx, - BN_MONT_CTX *m_ctx); - int (*init) (DH *dh); - int (*finish) (DH *dh); - int flags; - char *app_data; - /* If this is non-NULL, it will be used to generate parameters */ - int (*generate_params) (DH *dh, int prime_len, int generator, - BN_GENCB *cb); -}; - -struct dh_st { - /* - * This first argument is used to pick up errors when a DH is passed - * instead of a EVP_PKEY - */ - int pad; - int version; - BIGNUM *p; - BIGNUM *g; - long length; /* optional */ - BIGNUM *pub_key; /* g^x */ - BIGNUM *priv_key; /* x */ - int flags; - BN_MONT_CTX *method_mont_p; - /* Place holders if we want to do X9.42 DH */ - BIGNUM *q; - BIGNUM *j; - unsigned char *seed; - int seedlen; - BIGNUM *counter; - int references; - CRYPTO_EX_DATA ex_data; - const DH_METHOD *meth; - ENGINE *engine; -}; - -# define DH_GENERATOR_2 2 -/* #define DH_GENERATOR_3 3 */ -# define DH_GENERATOR_5 5 - -/* DH_check error codes */ -# define DH_CHECK_P_NOT_PRIME 0x01 -# define DH_CHECK_P_NOT_SAFE_PRIME 0x02 -# define DH_UNABLE_TO_CHECK_GENERATOR 0x04 -# define DH_NOT_SUITABLE_GENERATOR 0x08 -# define DH_CHECK_Q_NOT_PRIME 0x10 -# define DH_CHECK_INVALID_Q_VALUE 0x20 -# define DH_CHECK_INVALID_J_VALUE 0x40 - -/* DH_check_pub_key error codes */ -# define DH_CHECK_PUBKEY_TOO_SMALL 0x01 -# define DH_CHECK_PUBKEY_TOO_LARGE 0x02 - -/* - * primes p where (p-1)/2 is prime too are called "safe"; we define this for - * backward compatibility: - */ -# define DH_CHECK_P_NOT_STRONG_PRIME DH_CHECK_P_NOT_SAFE_PRIME - -# define d2i_DHparams_fp(fp,x) (DH *)ASN1_d2i_fp((char *(*)())DH_new, \ - (char *(*)())d2i_DHparams,(fp),(unsigned char **)(x)) -# define i2d_DHparams_fp(fp,x) ASN1_i2d_fp(i2d_DHparams,(fp), \ - (unsigned char *)(x)) -# define d2i_DHparams_bio(bp,x) ASN1_d2i_bio_of(DH,DH_new,d2i_DHparams,bp,x) -# define i2d_DHparams_bio(bp,x) ASN1_i2d_bio_of_const(DH,i2d_DHparams,bp,x) - -DH *DHparams_dup(DH *); - -const DH_METHOD *DH_OpenSSL(void); - -void DH_set_default_method(const DH_METHOD *meth); -const DH_METHOD *DH_get_default_method(void); -int DH_set_method(DH *dh, const DH_METHOD *meth); -DH *DH_new_method(ENGINE *engine); - -DH *DH_new(void); -void DH_free(DH *dh); -int DH_up_ref(DH *dh); -int DH_size(const DH *dh); -int DH_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new *new_func, - CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func); -int DH_set_ex_data(DH *d, int idx, void *arg); -void *DH_get_ex_data(DH *d, int idx); - -/* Deprecated version */ -# ifndef OPENSSL_NO_DEPRECATED -DH *DH_generate_parameters(int prime_len, int generator, - void (*callback) (int, int, void *), void *cb_arg); -# endif /* !defined(OPENSSL_NO_DEPRECATED) */ - -/* New version */ -int DH_generate_parameters_ex(DH *dh, int prime_len, int generator, - BN_GENCB *cb); - -int DH_check(const DH *dh, int *codes); -int DH_check_pub_key(const DH *dh, const BIGNUM *pub_key, int *codes); -int DH_generate_key(DH *dh); -int DH_compute_key(unsigned char *key, const BIGNUM *pub_key, DH *dh); -int DH_compute_key_padded(unsigned char *key, const BIGNUM *pub_key, DH *dh); -DH *d2i_DHparams(DH **a, const unsigned char **pp, long length); -int i2d_DHparams(const DH *a, unsigned char **pp); -DH *d2i_DHxparams(DH **a, const unsigned char **pp, long length); -int i2d_DHxparams(const DH *a, unsigned char **pp); -# ifndef OPENSSL_NO_FP_API -int DHparams_print_fp(FILE *fp, const DH *x); -# endif -# ifndef OPENSSL_NO_BIO -int DHparams_print(BIO *bp, const DH *x); -# else -int DHparams_print(char *bp, const DH *x); -# endif - -/* RFC 5114 parameters */ -DH *DH_get_1024_160(void); -DH *DH_get_2048_224(void); -DH *DH_get_2048_256(void); - -/* RFC2631 KDF */ -int DH_KDF_X9_42(unsigned char *out, size_t outlen, - const unsigned char *Z, size_t Zlen, - ASN1_OBJECT *key_oid, - const unsigned char *ukm, size_t ukmlen, const EVP_MD *md); - -# define EVP_PKEY_CTX_set_dh_paramgen_prime_len(ctx, len) \ - EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DH, EVP_PKEY_OP_PARAMGEN, \ - EVP_PKEY_CTRL_DH_PARAMGEN_PRIME_LEN, len, NULL) - -# define EVP_PKEY_CTX_set_dh_paramgen_subprime_len(ctx, len) \ - EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DH, EVP_PKEY_OP_PARAMGEN, \ - EVP_PKEY_CTRL_DH_PARAMGEN_SUBPRIME_LEN, len, NULL) - -# define EVP_PKEY_CTX_set_dh_paramgen_type(ctx, typ) \ - EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DH, EVP_PKEY_OP_PARAMGEN, \ - EVP_PKEY_CTRL_DH_PARAMGEN_TYPE, typ, NULL) - -# define EVP_PKEY_CTX_set_dh_paramgen_generator(ctx, gen) \ - EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DH, EVP_PKEY_OP_PARAMGEN, \ - EVP_PKEY_CTRL_DH_PARAMGEN_GENERATOR, gen, NULL) - -# define EVP_PKEY_CTX_set_dh_rfc5114(ctx, gen) \ - EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, EVP_PKEY_OP_PARAMGEN, \ - EVP_PKEY_CTRL_DH_RFC5114, gen, NULL) - -# define EVP_PKEY_CTX_set_dhx_rfc5114(ctx, gen) \ - EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, EVP_PKEY_OP_PARAMGEN, \ - EVP_PKEY_CTRL_DH_RFC5114, gen, NULL) - -# define EVP_PKEY_CTX_set_dh_kdf_type(ctx, kdf) \ - EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, \ - EVP_PKEY_OP_DERIVE, \ - EVP_PKEY_CTRL_DH_KDF_TYPE, kdf, NULL) - -# define EVP_PKEY_CTX_get_dh_kdf_type(ctx) \ - EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, \ - EVP_PKEY_OP_DERIVE, \ - EVP_PKEY_CTRL_DH_KDF_TYPE, -2, NULL) - -# define EVP_PKEY_CTX_set0_dh_kdf_oid(ctx, oid) \ - EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, \ - EVP_PKEY_OP_DERIVE, \ - EVP_PKEY_CTRL_DH_KDF_OID, 0, (void *)oid) - -# define EVP_PKEY_CTX_get0_dh_kdf_oid(ctx, poid) \ - EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, \ - EVP_PKEY_OP_DERIVE, \ - EVP_PKEY_CTRL_GET_DH_KDF_OID, 0, (void *)poid) - -# define EVP_PKEY_CTX_set_dh_kdf_md(ctx, md) \ - EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, \ - EVP_PKEY_OP_DERIVE, \ - EVP_PKEY_CTRL_DH_KDF_MD, 0, (void *)md) - -# define EVP_PKEY_CTX_get_dh_kdf_md(ctx, pmd) \ - EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, \ - EVP_PKEY_OP_DERIVE, \ - EVP_PKEY_CTRL_GET_DH_KDF_MD, 0, (void *)pmd) - -# define EVP_PKEY_CTX_set_dh_kdf_outlen(ctx, len) \ - EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, \ - EVP_PKEY_OP_DERIVE, \ - EVP_PKEY_CTRL_DH_KDF_OUTLEN, len, NULL) - -# define EVP_PKEY_CTX_get_dh_kdf_outlen(ctx, plen) \ - EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, \ - EVP_PKEY_OP_DERIVE, \ - EVP_PKEY_CTRL_GET_DH_KDF_OUTLEN, 0, (void *)plen) - -# define EVP_PKEY_CTX_set0_dh_kdf_ukm(ctx, p, plen) \ - EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, \ - EVP_PKEY_OP_DERIVE, \ - EVP_PKEY_CTRL_DH_KDF_UKM, plen, (void *)p) - -# define EVP_PKEY_CTX_get0_dh_kdf_ukm(ctx, p) \ - EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, \ - EVP_PKEY_OP_DERIVE, \ - EVP_PKEY_CTRL_GET_DH_KDF_UKM, 0, (void *)p) - -# define EVP_PKEY_CTRL_DH_PARAMGEN_PRIME_LEN (EVP_PKEY_ALG_CTRL + 1) -# define EVP_PKEY_CTRL_DH_PARAMGEN_GENERATOR (EVP_PKEY_ALG_CTRL + 2) -# define EVP_PKEY_CTRL_DH_RFC5114 (EVP_PKEY_ALG_CTRL + 3) -# define EVP_PKEY_CTRL_DH_PARAMGEN_SUBPRIME_LEN (EVP_PKEY_ALG_CTRL + 4) -# define EVP_PKEY_CTRL_DH_PARAMGEN_TYPE (EVP_PKEY_ALG_CTRL + 5) -# define EVP_PKEY_CTRL_DH_KDF_TYPE (EVP_PKEY_ALG_CTRL + 6) -# define EVP_PKEY_CTRL_DH_KDF_MD (EVP_PKEY_ALG_CTRL + 7) -# define EVP_PKEY_CTRL_GET_DH_KDF_MD (EVP_PKEY_ALG_CTRL + 8) -# define EVP_PKEY_CTRL_DH_KDF_OUTLEN (EVP_PKEY_ALG_CTRL + 9) -# define EVP_PKEY_CTRL_GET_DH_KDF_OUTLEN (EVP_PKEY_ALG_CTRL + 10) -# define EVP_PKEY_CTRL_DH_KDF_UKM (EVP_PKEY_ALG_CTRL + 11) -# define EVP_PKEY_CTRL_GET_DH_KDF_UKM (EVP_PKEY_ALG_CTRL + 12) -# define EVP_PKEY_CTRL_DH_KDF_OID (EVP_PKEY_ALG_CTRL + 13) -# define EVP_PKEY_CTRL_GET_DH_KDF_OID (EVP_PKEY_ALG_CTRL + 14) - -/* KDF types */ -# define EVP_PKEY_DH_KDF_NONE 1 -# define EVP_PKEY_DH_KDF_X9_42 2 - -/* BEGIN ERROR CODES */ -/* - * The following lines are auto generated by the script mkerr.pl. Any changes - * made after this point may be overwritten when the script is next run. - */ -void ERR_load_DH_strings(void); - -/* Error codes for the DH functions. */ - -/* Function codes. */ -# define DH_F_COMPUTE_KEY 102 -# define DH_F_DHPARAMS_PRINT_FP 101 -# define DH_F_DH_BUILTIN_GENPARAMS 106 -# define DH_F_DH_CMS_DECRYPT 117 -# define DH_F_DH_CMS_SET_PEERKEY 118 -# define DH_F_DH_CMS_SET_SHARED_INFO 119 -# define DH_F_DH_COMPUTE_KEY 114 -# define DH_F_DH_GENERATE_KEY 115 -# define DH_F_DH_GENERATE_PARAMETERS_EX 116 -# define DH_F_DH_NEW_METHOD 105 -# define DH_F_DH_PARAM_DECODE 107 -# define DH_F_DH_PRIV_DECODE 110 -# define DH_F_DH_PRIV_ENCODE 111 -# define DH_F_DH_PUB_DECODE 108 -# define DH_F_DH_PUB_ENCODE 109 -# define DH_F_DO_DH_PRINT 100 -# define DH_F_GENERATE_KEY 103 -# define DH_F_GENERATE_PARAMETERS 104 -# define DH_F_PKEY_DH_DERIVE 112 -# define DH_F_PKEY_DH_KEYGEN 113 - -/* Reason codes. */ -# define DH_R_BAD_GENERATOR 101 -# define DH_R_BN_DECODE_ERROR 109 -# define DH_R_BN_ERROR 106 -# define DH_R_DECODE_ERROR 104 -# define DH_R_INVALID_PUBKEY 102 -# define DH_R_KDF_PARAMETER_ERROR 112 -# define DH_R_KEYS_NOT_SET 108 -# define DH_R_KEY_SIZE_TOO_SMALL 110 -# define DH_R_MODULUS_TOO_LARGE 103 -# define DH_R_NON_FIPS_METHOD 111 -# define DH_R_NO_PARAMETERS_SET 107 -# define DH_R_NO_PRIVATE_VALUE 100 -# define DH_R_PARAMETER_ENCODING_ERROR 105 -# define DH_R_PEER_KEY_ERROR 113 -# define DH_R_SHARED_INFO_ERROR 114 - -#ifdef __cplusplus -} -#endif -#endif diff --git a/ext/openssl-win32/inc32/openssl/dsa.h b/ext/openssl-win32/inc32/openssl/dsa.h deleted file mode 100644 index 545358fd..00000000 --- a/ext/openssl-win32/inc32/openssl/dsa.h +++ /dev/null @@ -1,332 +0,0 @@ -/* crypto/dsa/dsa.h */ -/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) - * All rights reserved. - * - * This package is an SSL implementation written - * by Eric Young (eay@cryptsoft.com). - * The implementation was written so as to conform with Netscapes SSL. - * - * This library is free for commercial and non-commercial use as long as - * the following conditions are aheared to. The following conditions - * apply to all code found in this distribution, be it the RC4, RSA, - * lhash, DES, etc., code; not just the SSL code. The SSL documentation - * included with this distribution is covered by the same copyright terms - * except that the holder is Tim Hudson (tjh@cryptsoft.com). - * - * Copyright remains Eric Young's, and as such any Copyright notices in - * the code are not to be removed. - * If this package is used in a product, Eric Young should be given attribution - * as the author of the parts of the library used. - * This can be in the form of a textual message at program startup or - * in documentation (online or textual) provided with the package. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * "This product includes cryptographic software written by - * Eric Young (eay@cryptsoft.com)" - * The word 'cryptographic' can be left out if the rouines from the library - * being used are not cryptographic related :-). - * 4. If you include any Windows specific code (or a derivative thereof) from - * the apps directory (application code) you must include an acknowledgement: - * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" - * - * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * The licence and distribution terms for any publically available version or - * derivative of this code cannot be changed. i.e. this code cannot simply be - * copied and put under another distribution licence - * [including the GNU Public Licence.] - */ - -/* - * The DSS routines are based on patches supplied by - * Steven Schoch . He basically did the - * work and I have just tweaked them a little to fit into my - * stylistic vision for SSLeay :-) */ - -#ifndef HEADER_DSA_H -# define HEADER_DSA_H - -# include - -# ifdef OPENSSL_NO_DSA -# error DSA is disabled. -# endif - -# ifndef OPENSSL_NO_BIO -# include -# endif -# include -# include - -# ifndef OPENSSL_NO_DEPRECATED -# include -# ifndef OPENSSL_NO_DH -# include -# endif -# endif - -# ifndef OPENSSL_DSA_MAX_MODULUS_BITS -# define OPENSSL_DSA_MAX_MODULUS_BITS 10000 -# endif - -# define DSA_FLAG_CACHE_MONT_P 0x01 -/* - * new with 0.9.7h; the built-in DSA implementation now uses constant time - * modular exponentiation for secret exponents by default. This flag causes - * the faster variable sliding window method to be used for all exponents. - */ -# define DSA_FLAG_NO_EXP_CONSTTIME 0x02 - -/* - * If this flag is set the DSA method is FIPS compliant and can be used in - * FIPS mode. This is set in the validated module method. If an application - * sets this flag in its own methods it is its reposibility to ensure the - * result is compliant. - */ - -# define DSA_FLAG_FIPS_METHOD 0x0400 - -/* - * If this flag is set the operations normally disabled in FIPS mode are - * permitted it is then the applications responsibility to ensure that the - * usage is compliant. - */ - -# define DSA_FLAG_NON_FIPS_ALLOW 0x0400 - -#ifdef __cplusplus -extern "C" { -#endif - -/* Already defined in ossl_typ.h */ -/* typedef struct dsa_st DSA; */ -/* typedef struct dsa_method DSA_METHOD; */ - -typedef struct DSA_SIG_st { - BIGNUM *r; - BIGNUM *s; -} DSA_SIG; - -struct dsa_method { - const char *name; - DSA_SIG *(*dsa_do_sign) (const unsigned char *dgst, int dlen, DSA *dsa); - int (*dsa_sign_setup) (DSA *dsa, BN_CTX *ctx_in, BIGNUM **kinvp, - BIGNUM **rp); - int (*dsa_do_verify) (const unsigned char *dgst, int dgst_len, - DSA_SIG *sig, DSA *dsa); - int (*dsa_mod_exp) (DSA *dsa, BIGNUM *rr, BIGNUM *a1, BIGNUM *p1, - BIGNUM *a2, BIGNUM *p2, BIGNUM *m, BN_CTX *ctx, - BN_MONT_CTX *in_mont); - /* Can be null */ - int (*bn_mod_exp) (DSA *dsa, BIGNUM *r, BIGNUM *a, const BIGNUM *p, - const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx); - int (*init) (DSA *dsa); - int (*finish) (DSA *dsa); - int flags; - char *app_data; - /* If this is non-NULL, it is used to generate DSA parameters */ - int (*dsa_paramgen) (DSA *dsa, int bits, - const unsigned char *seed, int seed_len, - int *counter_ret, unsigned long *h_ret, - BN_GENCB *cb); - /* If this is non-NULL, it is used to generate DSA keys */ - int (*dsa_keygen) (DSA *dsa); -}; - -struct dsa_st { - /* - * This first variable is used to pick up errors where a DSA is passed - * instead of of a EVP_PKEY - */ - int pad; - long version; - int write_params; - BIGNUM *p; - BIGNUM *q; /* == 20 */ - BIGNUM *g; - BIGNUM *pub_key; /* y public key */ - BIGNUM *priv_key; /* x private key */ - BIGNUM *kinv; /* Signing pre-calc */ - BIGNUM *r; /* Signing pre-calc */ - int flags; - /* Normally used to cache montgomery values */ - BN_MONT_CTX *method_mont_p; - int references; - CRYPTO_EX_DATA ex_data; - const DSA_METHOD *meth; - /* functional reference if 'meth' is ENGINE-provided */ - ENGINE *engine; -}; - -# define d2i_DSAparams_fp(fp,x) (DSA *)ASN1_d2i_fp((char *(*)())DSA_new, \ - (char *(*)())d2i_DSAparams,(fp),(unsigned char **)(x)) -# define i2d_DSAparams_fp(fp,x) ASN1_i2d_fp(i2d_DSAparams,(fp), \ - (unsigned char *)(x)) -# define d2i_DSAparams_bio(bp,x) ASN1_d2i_bio_of(DSA,DSA_new,d2i_DSAparams,bp,x) -# define i2d_DSAparams_bio(bp,x) ASN1_i2d_bio_of_const(DSA,i2d_DSAparams,bp,x) - -DSA *DSAparams_dup(DSA *x); -DSA_SIG *DSA_SIG_new(void); -void DSA_SIG_free(DSA_SIG *a); -int i2d_DSA_SIG(const DSA_SIG *a, unsigned char **pp); -DSA_SIG *d2i_DSA_SIG(DSA_SIG **v, const unsigned char **pp, long length); - -DSA_SIG *DSA_do_sign(const unsigned char *dgst, int dlen, DSA *dsa); -int DSA_do_verify(const unsigned char *dgst, int dgst_len, - DSA_SIG *sig, DSA *dsa); - -const DSA_METHOD *DSA_OpenSSL(void); - -void DSA_set_default_method(const DSA_METHOD *); -const DSA_METHOD *DSA_get_default_method(void); -int DSA_set_method(DSA *dsa, const DSA_METHOD *); - -DSA *DSA_new(void); -DSA *DSA_new_method(ENGINE *engine); -void DSA_free(DSA *r); -/* "up" the DSA object's reference count */ -int DSA_up_ref(DSA *r); -int DSA_size(const DSA *); - /* next 4 return -1 on error */ -int DSA_sign_setup(DSA *dsa, BN_CTX *ctx_in, BIGNUM **kinvp, BIGNUM **rp); -int DSA_sign(int type, const unsigned char *dgst, int dlen, - unsigned char *sig, unsigned int *siglen, DSA *dsa); -int DSA_verify(int type, const unsigned char *dgst, int dgst_len, - const unsigned char *sigbuf, int siglen, DSA *dsa); -int DSA_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new *new_func, - CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func); -int DSA_set_ex_data(DSA *d, int idx, void *arg); -void *DSA_get_ex_data(DSA *d, int idx); - -DSA *d2i_DSAPublicKey(DSA **a, const unsigned char **pp, long length); -DSA *d2i_DSAPrivateKey(DSA **a, const unsigned char **pp, long length); -DSA *d2i_DSAparams(DSA **a, const unsigned char **pp, long length); - -/* Deprecated version */ -# ifndef OPENSSL_NO_DEPRECATED -DSA *DSA_generate_parameters(int bits, - unsigned char *seed, int seed_len, - int *counter_ret, unsigned long *h_ret, void - (*callback) (int, int, void *), void *cb_arg); -# endif /* !defined(OPENSSL_NO_DEPRECATED) */ - -/* New version */ -int DSA_generate_parameters_ex(DSA *dsa, int bits, - const unsigned char *seed, int seed_len, - int *counter_ret, unsigned long *h_ret, - BN_GENCB *cb); - -int DSA_generate_key(DSA *a); -int i2d_DSAPublicKey(const DSA *a, unsigned char **pp); -int i2d_DSAPrivateKey(const DSA *a, unsigned char **pp); -int i2d_DSAparams(const DSA *a, unsigned char **pp); - -# ifndef OPENSSL_NO_BIO -int DSAparams_print(BIO *bp, const DSA *x); -int DSA_print(BIO *bp, const DSA *x, int off); -# endif -# ifndef OPENSSL_NO_FP_API -int DSAparams_print_fp(FILE *fp, const DSA *x); -int DSA_print_fp(FILE *bp, const DSA *x, int off); -# endif - -# define DSS_prime_checks 50 -/* - * Primality test according to FIPS PUB 186[-1], Appendix 2.1: 50 rounds of - * Rabin-Miller - */ -# define DSA_is_prime(n, callback, cb_arg) \ - BN_is_prime(n, DSS_prime_checks, callback, NULL, cb_arg) - -# ifndef OPENSSL_NO_DH -/* - * Convert DSA structure (key or just parameters) into DH structure (be - * careful to avoid small subgroup attacks when using this!) - */ -DH *DSA_dup_DH(const DSA *r); -# endif - -# define EVP_PKEY_CTX_set_dsa_paramgen_bits(ctx, nbits) \ - EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DSA, EVP_PKEY_OP_PARAMGEN, \ - EVP_PKEY_CTRL_DSA_PARAMGEN_BITS, nbits, NULL) - -# define EVP_PKEY_CTRL_DSA_PARAMGEN_BITS (EVP_PKEY_ALG_CTRL + 1) -# define EVP_PKEY_CTRL_DSA_PARAMGEN_Q_BITS (EVP_PKEY_ALG_CTRL + 2) -# define EVP_PKEY_CTRL_DSA_PARAMGEN_MD (EVP_PKEY_ALG_CTRL + 3) - -/* BEGIN ERROR CODES */ -/* - * The following lines are auto generated by the script mkerr.pl. Any changes - * made after this point may be overwritten when the script is next run. - */ -void ERR_load_DSA_strings(void); - -/* Error codes for the DSA functions. */ - -/* Function codes. */ -# define DSA_F_D2I_DSA_SIG 110 -# define DSA_F_DO_DSA_PRINT 104 -# define DSA_F_DSAPARAMS_PRINT 100 -# define DSA_F_DSAPARAMS_PRINT_FP 101 -# define DSA_F_DSA_BUILTIN_PARAMGEN2 126 -# define DSA_F_DSA_DO_SIGN 112 -# define DSA_F_DSA_DO_VERIFY 113 -# define DSA_F_DSA_GENERATE_KEY 124 -# define DSA_F_DSA_GENERATE_PARAMETERS_EX 123 -# define DSA_F_DSA_NEW_METHOD 103 -# define DSA_F_DSA_PARAM_DECODE 119 -# define DSA_F_DSA_PRINT_FP 105 -# define DSA_F_DSA_PRIV_DECODE 115 -# define DSA_F_DSA_PRIV_ENCODE 116 -# define DSA_F_DSA_PUB_DECODE 117 -# define DSA_F_DSA_PUB_ENCODE 118 -# define DSA_F_DSA_SIGN 106 -# define DSA_F_DSA_SIGN_SETUP 107 -# define DSA_F_DSA_SIG_NEW 109 -# define DSA_F_DSA_SIG_PRINT 125 -# define DSA_F_DSA_VERIFY 108 -# define DSA_F_I2D_DSA_SIG 111 -# define DSA_F_OLD_DSA_PRIV_DECODE 122 -# define DSA_F_PKEY_DSA_CTRL 120 -# define DSA_F_PKEY_DSA_KEYGEN 121 -# define DSA_F_SIG_CB 114 - -/* Reason codes. */ -# define DSA_R_BAD_Q_VALUE 102 -# define DSA_R_BN_DECODE_ERROR 108 -# define DSA_R_BN_ERROR 109 -# define DSA_R_DATA_TOO_LARGE_FOR_KEY_SIZE 100 -# define DSA_R_DECODE_ERROR 104 -# define DSA_R_INVALID_DIGEST_TYPE 106 -# define DSA_R_INVALID_PARAMETERS 112 -# define DSA_R_MISSING_PARAMETERS 101 -# define DSA_R_MODULUS_TOO_LARGE 103 -# define DSA_R_NEED_NEW_SETUP_VALUES 110 -# define DSA_R_NON_FIPS_DSA_METHOD 111 -# define DSA_R_NO_PARAMETERS_SET 107 -# define DSA_R_PARAMETER_ENCODING_ERROR 105 -# define DSA_R_Q_NOT_PRIME 113 - -#ifdef __cplusplus -} -#endif -#endif diff --git a/ext/openssl-win32/inc32/openssl/dtls1.h b/ext/openssl-win32/inc32/openssl/dtls1.h deleted file mode 100644 index 4af7e4a7..00000000 --- a/ext/openssl-win32/inc32/openssl/dtls1.h +++ /dev/null @@ -1,271 +0,0 @@ -/* ssl/dtls1.h */ -/* - * DTLS implementation written by Nagendra Modadugu - * (nagendra@cs.stanford.edu) for the OpenSSL project 2005. - */ -/* ==================================================================== - * Copyright (c) 1999-2005 The OpenSSL Project. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. All advertising materials mentioning features or use of this - * software must display the following acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" - * - * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * openssl-core@OpenSSL.org. - * - * 5. Products derived from this software may not be called "OpenSSL" - * nor may "OpenSSL" appear in their names without prior written - * permission of the OpenSSL Project. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" - * - * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY - * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * ==================================================================== - * - * This product includes cryptographic software written by Eric Young - * (eay@cryptsoft.com). This product includes software written by Tim - * Hudson (tjh@cryptsoft.com). - * - */ - -#ifndef HEADER_DTLS1_H -# define HEADER_DTLS1_H - -# include -# include -# ifdef OPENSSL_SYS_VMS -# include -# include -# endif -# ifdef OPENSSL_SYS_WIN32 -/* Needed for struct timeval */ -# include -# elif defined(OPENSSL_SYS_NETWARE) && !defined(_WINSOCK2API_) -# include -# else -# if defined(OPENSSL_SYS_VXWORKS) -# include -# else -# include -# endif -# endif - -#ifdef __cplusplus -extern "C" { -#endif - -# define DTLS1_VERSION 0xFEFF -# define DTLS1_2_VERSION 0xFEFD -# define DTLS_MAX_VERSION DTLS1_2_VERSION - -# define DTLS1_BAD_VER 0x0100 - -/* Special value for method supporting multiple versions */ -# define DTLS_ANY_VERSION 0x1FFFF - -# if 0 -/* this alert description is not specified anywhere... */ -# define DTLS1_AD_MISSING_HANDSHAKE_MESSAGE 110 -# endif - -/* lengths of messages */ -# define DTLS1_COOKIE_LENGTH 256 - -# define DTLS1_RT_HEADER_LENGTH 13 - -# define DTLS1_HM_HEADER_LENGTH 12 - -# define DTLS1_HM_BAD_FRAGMENT -2 -# define DTLS1_HM_FRAGMENT_RETRY -3 - -# define DTLS1_CCS_HEADER_LENGTH 1 - -# ifdef DTLS1_AD_MISSING_HANDSHAKE_MESSAGE -# define DTLS1_AL_HEADER_LENGTH 7 -# else -# define DTLS1_AL_HEADER_LENGTH 2 -# endif - -# ifndef OPENSSL_NO_SSL_INTERN - -# ifndef OPENSSL_NO_SCTP -# define DTLS1_SCTP_AUTH_LABEL "EXPORTER_DTLS_OVER_SCTP" -# endif - -/* Max MTU overhead we know about so far is 40 for IPv6 + 8 for UDP */ -# define DTLS1_MAX_MTU_OVERHEAD 48 - -typedef struct dtls1_bitmap_st { - unsigned long map; /* track 32 packets on 32-bit systems and 64 - * - on 64-bit systems */ - unsigned char max_seq_num[8]; /* max record number seen so far, 64-bit - * value in big-endian encoding */ -} DTLS1_BITMAP; - -struct dtls1_retransmit_state { - EVP_CIPHER_CTX *enc_write_ctx; /* cryptographic state */ - EVP_MD_CTX *write_hash; /* used for mac generation */ -# ifndef OPENSSL_NO_COMP - COMP_CTX *compress; /* compression */ -# else - char *compress; -# endif - SSL_SESSION *session; - unsigned short epoch; -}; - -struct hm_header_st { - unsigned char type; - unsigned long msg_len; - unsigned short seq; - unsigned long frag_off; - unsigned long frag_len; - unsigned int is_ccs; - struct dtls1_retransmit_state saved_retransmit_state; -}; - -struct ccs_header_st { - unsigned char type; - unsigned short seq; -}; - -struct dtls1_timeout_st { - /* Number of read timeouts so far */ - unsigned int read_timeouts; - /* Number of write timeouts so far */ - unsigned int write_timeouts; - /* Number of alerts received so far */ - unsigned int num_alerts; -}; - -typedef struct record_pqueue_st { - unsigned short epoch; - pqueue q; -} record_pqueue; - -typedef struct hm_fragment_st { - struct hm_header_st msg_header; - unsigned char *fragment; - unsigned char *reassembly; -} hm_fragment; - -typedef struct dtls1_state_st { - unsigned int send_cookie; - unsigned char cookie[DTLS1_COOKIE_LENGTH]; - unsigned char rcvd_cookie[DTLS1_COOKIE_LENGTH]; - unsigned int cookie_len; - /* - * The current data and handshake epoch. This is initially - * undefined, and starts at zero once the initial handshake is - * completed - */ - unsigned short r_epoch; - unsigned short w_epoch; - /* records being received in the current epoch */ - DTLS1_BITMAP bitmap; - /* renegotiation starts a new set of sequence numbers */ - DTLS1_BITMAP next_bitmap; - /* handshake message numbers */ - unsigned short handshake_write_seq; - unsigned short next_handshake_write_seq; - unsigned short handshake_read_seq; - /* save last sequence number for retransmissions */ - unsigned char last_write_sequence[8]; - /* Received handshake records (processed and unprocessed) */ - record_pqueue unprocessed_rcds; - record_pqueue processed_rcds; - /* Buffered handshake messages */ - pqueue buffered_messages; - /* Buffered (sent) handshake records */ - pqueue sent_messages; - /* - * Buffered application records. Only for records between CCS and - * Finished to prevent either protocol violation or unnecessary message - * loss. - */ - record_pqueue buffered_app_data; - /* Is set when listening for new connections with dtls1_listen() */ - unsigned int listen; - unsigned int link_mtu; /* max on-the-wire DTLS packet size */ - unsigned int mtu; /* max DTLS packet size */ - struct hm_header_st w_msg_hdr; - struct hm_header_st r_msg_hdr; - struct dtls1_timeout_st timeout; - /* - * Indicates when the last handshake msg or heartbeat sent will timeout - */ - struct timeval next_timeout; - /* Timeout duration */ - unsigned short timeout_duration; - /* - * storage for Alert/Handshake protocol data received but not yet - * processed by ssl3_read_bytes: - */ - unsigned char alert_fragment[DTLS1_AL_HEADER_LENGTH]; - unsigned int alert_fragment_len; - unsigned char handshake_fragment[DTLS1_HM_HEADER_LENGTH]; - unsigned int handshake_fragment_len; - unsigned int retransmitting; - /* - * Set when the handshake is ready to process peer's ChangeCipherSpec message. - * Cleared after the message has been processed. - */ - unsigned int change_cipher_spec_ok; -# ifndef OPENSSL_NO_SCTP - /* used when SSL_ST_XX_FLUSH is entered */ - int next_state; - int shutdown_received; -# endif -} DTLS1_STATE; - -typedef struct dtls1_record_data_st { - unsigned char *packet; - unsigned int packet_length; - SSL3_BUFFER rbuf; - SSL3_RECORD rrec; -# ifndef OPENSSL_NO_SCTP - struct bio_dgram_sctp_rcvinfo recordinfo; -# endif -} DTLS1_RECORD_DATA; - -# endif - -/* Timeout multipliers (timeout slice is defined in apps/timeouts.h */ -# define DTLS1_TMO_READ_COUNT 2 -# define DTLS1_TMO_WRITE_COUNT 2 - -# define DTLS1_TMO_ALERT_COUNT 12 - -#ifdef __cplusplus -} -#endif -#endif diff --git a/ext/openssl-win32/inc32/openssl/e_os2.h b/ext/openssl-win32/inc32/openssl/e_os2.h deleted file mode 100644 index 613607f8..00000000 --- a/ext/openssl-win32/inc32/openssl/e_os2.h +++ /dev/null @@ -1,322 +0,0 @@ -/* e_os2.h */ -/* ==================================================================== - * Copyright (c) 1998-2000 The OpenSSL Project. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. All advertising materials mentioning features or use of this - * software must display the following acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" - * - * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * openssl-core@openssl.org. - * - * 5. Products derived from this software may not be called "OpenSSL" - * nor may "OpenSSL" appear in their names without prior written - * permission of the OpenSSL Project. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit (http://www.openssl.org/)" - * - * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY - * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * ==================================================================== - * - * This product includes cryptographic software written by Eric Young - * (eay@cryptsoft.com). This product includes software written by Tim - * Hudson (tjh@cryptsoft.com). - * - */ - -#include - -#ifndef HEADER_E_OS2_H -# define HEADER_E_OS2_H - -#ifdef __cplusplus -extern "C" { -#endif - -/****************************************************************************** - * Detect operating systems. This probably needs completing. - * The result is that at least one OPENSSL_SYS_os macro should be defined. - * However, if none is defined, Unix is assumed. - **/ - -# define OPENSSL_SYS_UNIX - -/* ---------------------- Macintosh, before MacOS X ----------------------- */ -# if defined(__MWERKS__) && defined(macintosh) || defined(OPENSSL_SYSNAME_MAC) -# undef OPENSSL_SYS_UNIX -# define OPENSSL_SYS_MACINTOSH_CLASSIC -# endif - -/* ---------------------- NetWare ----------------------------------------- */ -# if defined(NETWARE) || defined(OPENSSL_SYSNAME_NETWARE) -# undef OPENSSL_SYS_UNIX -# define OPENSSL_SYS_NETWARE -# endif - -/* --------------------- Microsoft operating systems ---------------------- */ - -/* - * Note that MSDOS actually denotes 32-bit environments running on top of - * MS-DOS, such as DJGPP one. - */ -# if defined(OPENSSL_SYSNAME_MSDOS) -# undef OPENSSL_SYS_UNIX -# define OPENSSL_SYS_MSDOS -# endif - -/* - * For 32 bit environment, there seems to be the CygWin environment and then - * all the others that try to do the same thing Microsoft does... - */ -# if defined(OPENSSL_SYSNAME_UWIN) -# undef OPENSSL_SYS_UNIX -# define OPENSSL_SYS_WIN32_UWIN -# else -# if defined(__CYGWIN__) || defined(OPENSSL_SYSNAME_CYGWIN) -# undef OPENSSL_SYS_UNIX -# define OPENSSL_SYS_WIN32_CYGWIN -# else -# if defined(_WIN32) || defined(OPENSSL_SYSNAME_WIN32) -# undef OPENSSL_SYS_UNIX -# define OPENSSL_SYS_WIN32 -# endif -# if defined(OPENSSL_SYSNAME_WINNT) -# undef OPENSSL_SYS_UNIX -# define OPENSSL_SYS_WINNT -# endif -# if defined(OPENSSL_SYSNAME_WINCE) -# undef OPENSSL_SYS_UNIX -# define OPENSSL_SYS_WINCE -# endif -# endif -# endif - -/* Anything that tries to look like Microsoft is "Windows" */ -# if defined(OPENSSL_SYS_WIN32) || defined(OPENSSL_SYS_WINNT) || defined(OPENSSL_SYS_WINCE) -# undef OPENSSL_SYS_UNIX -# define OPENSSL_SYS_WINDOWS -# ifndef OPENSSL_SYS_MSDOS -# define OPENSSL_SYS_MSDOS -# endif -# endif - -/* - * DLL settings. This part is a bit tough, because it's up to the - * application implementor how he or she will link the application, so it - * requires some macro to be used. - */ -# ifdef OPENSSL_SYS_WINDOWS -# ifndef OPENSSL_OPT_WINDLL -# if defined(_WINDLL) /* This is used when building OpenSSL to - * indicate that DLL linkage should be used */ -# define OPENSSL_OPT_WINDLL -# endif -# endif -# endif - -/* ------------------------------- OpenVMS -------------------------------- */ -# if defined(__VMS) || defined(VMS) || defined(OPENSSL_SYSNAME_VMS) -# undef OPENSSL_SYS_UNIX -# define OPENSSL_SYS_VMS -# if defined(__DECC) -# define OPENSSL_SYS_VMS_DECC -# elif defined(__DECCXX) -# define OPENSSL_SYS_VMS_DECC -# define OPENSSL_SYS_VMS_DECCXX -# else -# define OPENSSL_SYS_VMS_NODECC -# endif -# endif - -/* -------------------------------- OS/2 ---------------------------------- */ -# if defined(__EMX__) || defined(__OS2__) -# undef OPENSSL_SYS_UNIX -# define OPENSSL_SYS_OS2 -# endif - -/* -------------------------------- Unix ---------------------------------- */ -# ifdef OPENSSL_SYS_UNIX -# if defined(linux) || defined(__linux__) || defined(OPENSSL_SYSNAME_LINUX) -# define OPENSSL_SYS_LINUX -# endif -# ifdef OPENSSL_SYSNAME_MPE -# define OPENSSL_SYS_MPE -# endif -# ifdef OPENSSL_SYSNAME_SNI -# define OPENSSL_SYS_SNI -# endif -# ifdef OPENSSL_SYSNAME_ULTRASPARC -# define OPENSSL_SYS_ULTRASPARC -# endif -# ifdef OPENSSL_SYSNAME_NEWS4 -# define OPENSSL_SYS_NEWS4 -# endif -# ifdef OPENSSL_SYSNAME_MACOSX -# define OPENSSL_SYS_MACOSX -# endif -# ifdef OPENSSL_SYSNAME_MACOSX_RHAPSODY -# define OPENSSL_SYS_MACOSX_RHAPSODY -# define OPENSSL_SYS_MACOSX -# endif -# ifdef OPENSSL_SYSNAME_SUNOS -# define OPENSSL_SYS_SUNOS -# endif -# if defined(_CRAY) || defined(OPENSSL_SYSNAME_CRAY) -# define OPENSSL_SYS_CRAY -# endif -# if defined(_AIX) || defined(OPENSSL_SYSNAME_AIX) -# define OPENSSL_SYS_AIX -# endif -# endif - -/* -------------------------------- VOS ----------------------------------- */ -# if defined(__VOS__) || defined(OPENSSL_SYSNAME_VOS) -# define OPENSSL_SYS_VOS -# ifdef __HPPA__ -# define OPENSSL_SYS_VOS_HPPA -# endif -# ifdef __IA32__ -# define OPENSSL_SYS_VOS_IA32 -# endif -# endif - -/* ------------------------------ VxWorks --------------------------------- */ -# ifdef OPENSSL_SYSNAME_VXWORKS -# define OPENSSL_SYS_VXWORKS -# endif - -/* -------------------------------- BeOS ---------------------------------- */ -# if defined(__BEOS__) -# define OPENSSL_SYS_BEOS -# include -# if defined(BONE_VERSION) -# define OPENSSL_SYS_BEOS_BONE -# else -# define OPENSSL_SYS_BEOS_R5 -# endif -# endif - -/** - * That's it for OS-specific stuff - *****************************************************************************/ - -/* Specials for I/O an exit */ -# ifdef OPENSSL_SYS_MSDOS -# define OPENSSL_UNISTD_IO -# define OPENSSL_DECLARE_EXIT extern void exit(int); -# else -# define OPENSSL_UNISTD_IO OPENSSL_UNISTD -# define OPENSSL_DECLARE_EXIT /* declared in unistd.h */ -# endif - -/*- - * Definitions of OPENSSL_GLOBAL and OPENSSL_EXTERN, to define and declare - * certain global symbols that, with some compilers under VMS, have to be - * defined and declared explicitely with globaldef and globalref. - * Definitions of OPENSSL_EXPORT and OPENSSL_IMPORT, to define and declare - * DLL exports and imports for compilers under Win32. These are a little - * more complicated to use. Basically, for any library that exports some - * global variables, the following code must be present in the header file - * that declares them, before OPENSSL_EXTERN is used: - * - * #ifdef SOME_BUILD_FLAG_MACRO - * # undef OPENSSL_EXTERN - * # define OPENSSL_EXTERN OPENSSL_EXPORT - * #endif - * - * The default is to have OPENSSL_EXPORT, OPENSSL_IMPORT and OPENSSL_GLOBAL - * have some generally sensible values, and for OPENSSL_EXTERN to have the - * value OPENSSL_IMPORT. - */ - -# if defined(OPENSSL_SYS_VMS_NODECC) -# define OPENSSL_EXPORT globalref -# define OPENSSL_IMPORT globalref -# define OPENSSL_GLOBAL globaldef -# elif defined(OPENSSL_SYS_WINDOWS) && defined(OPENSSL_OPT_WINDLL) -# define OPENSSL_EXPORT extern __declspec(dllexport) -# define OPENSSL_IMPORT extern __declspec(dllimport) -# define OPENSSL_GLOBAL -# else -# define OPENSSL_EXPORT extern -# define OPENSSL_IMPORT extern -# define OPENSSL_GLOBAL -# endif -# define OPENSSL_EXTERN OPENSSL_IMPORT - -/*- - * Macros to allow global variables to be reached through function calls when - * required (if a shared library version requires it, for example. - * The way it's done allows definitions like this: - * - * // in foobar.c - * OPENSSL_IMPLEMENT_GLOBAL(int,foobar,0) - * // in foobar.h - * OPENSSL_DECLARE_GLOBAL(int,foobar); - * #define foobar OPENSSL_GLOBAL_REF(foobar) - */ -# ifdef OPENSSL_EXPORT_VAR_AS_FUNCTION -# define OPENSSL_IMPLEMENT_GLOBAL(type,name,value) \ - type *_shadow_##name(void) \ - { static type _hide_##name=value; return &_hide_##name; } -# define OPENSSL_DECLARE_GLOBAL(type,name) type *_shadow_##name(void) -# define OPENSSL_GLOBAL_REF(name) (*(_shadow_##name())) -# else -# define OPENSSL_IMPLEMENT_GLOBAL(type,name,value) OPENSSL_GLOBAL type _shadow_##name=value; -# define OPENSSL_DECLARE_GLOBAL(type,name) OPENSSL_EXPORT type _shadow_##name -# define OPENSSL_GLOBAL_REF(name) _shadow_##name -# endif - -# if defined(OPENSSL_SYS_MACINTOSH_CLASSIC) && macintosh==1 && !defined(MAC_OS_GUSI_SOURCE) -# define ossl_ssize_t long -# endif - -# ifdef OPENSSL_SYS_MSDOS -# define ossl_ssize_t long -# endif - -# if defined(NeXT) || defined(OPENSSL_SYS_NEWS4) || defined(OPENSSL_SYS_SUNOS) -# define ssize_t int -# endif - -# if defined(__ultrix) && !defined(ssize_t) -# define ossl_ssize_t int -# endif - -# ifndef ossl_ssize_t -# define ossl_ssize_t ssize_t -# endif - -#ifdef __cplusplus -} -#endif -#endif diff --git a/ext/openssl-win32/inc32/openssl/ec.h b/ext/openssl-win32/inc32/openssl/ec.h deleted file mode 100644 index 98edfdf8..00000000 --- a/ext/openssl-win32/inc32/openssl/ec.h +++ /dev/null @@ -1,1281 +0,0 @@ -/* crypto/ec/ec.h */ -/* - * Originally written by Bodo Moeller for the OpenSSL project. - */ -/** - * \file crypto/ec/ec.h Include file for the OpenSSL EC functions - * \author Originally written by Bodo Moeller for the OpenSSL project - */ -/* ==================================================================== - * Copyright (c) 1998-2005 The OpenSSL Project. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. All advertising materials mentioning features or use of this - * software must display the following acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" - * - * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * openssl-core@openssl.org. - * - * 5. Products derived from this software may not be called "OpenSSL" - * nor may "OpenSSL" appear in their names without prior written - * permission of the OpenSSL Project. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit (http://www.openssl.org/)" - * - * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY - * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * ==================================================================== - * - * This product includes cryptographic software written by Eric Young - * (eay@cryptsoft.com). This product includes software written by Tim - * Hudson (tjh@cryptsoft.com). - * - */ -/* ==================================================================== - * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED. - * - * Portions of the attached software ("Contribution") are developed by - * SUN MICROSYSTEMS, INC., and are contributed to the OpenSSL project. - * - * The Contribution is licensed pursuant to the OpenSSL open source - * license provided above. - * - * The elliptic curve binary polynomial software is originally written by - * Sheueling Chang Shantz and Douglas Stebila of Sun Microsystems Laboratories. - * - */ - -#ifndef HEADER_EC_H -# define HEADER_EC_H - -# include - -# ifdef OPENSSL_NO_EC -# error EC is disabled. -# endif - -# include -# include -# ifndef OPENSSL_NO_DEPRECATED -# include -# endif - -# ifdef __cplusplus -extern "C" { -# elif defined(__SUNPRO_C) -# if __SUNPRO_C >= 0x520 -# pragma error_messages (off,E_ARRAY_OF_INCOMPLETE_NONAME,E_ARRAY_OF_INCOMPLETE) -# endif -# endif - -# ifndef OPENSSL_ECC_MAX_FIELD_BITS -# define OPENSSL_ECC_MAX_FIELD_BITS 661 -# endif - -/** Enum for the point conversion form as defined in X9.62 (ECDSA) - * for the encoding of a elliptic curve point (x,y) */ -typedef enum { - /** the point is encoded as z||x, where the octet z specifies - * which solution of the quadratic equation y is */ - POINT_CONVERSION_COMPRESSED = 2, - /** the point is encoded as z||x||y, where z is the octet 0x02 */ - POINT_CONVERSION_UNCOMPRESSED = 4, - /** the point is encoded as z||x||y, where the octet z specifies - * which solution of the quadratic equation y is */ - POINT_CONVERSION_HYBRID = 6 -} point_conversion_form_t; - -typedef struct ec_method_st EC_METHOD; - -typedef struct ec_group_st - /*- - EC_METHOD *meth; - -- field definition - -- curve coefficients - -- optional generator with associated information (order, cofactor) - -- optional extra data (precomputed table for fast computation of multiples of generator) - -- ASN1 stuff - */ - EC_GROUP; - -typedef struct ec_point_st EC_POINT; - -/********************************************************************/ -/* EC_METHODs for curves over GF(p) */ -/********************************************************************/ - -/** Returns the basic GFp ec methods which provides the basis for the - * optimized methods. - * \return EC_METHOD object - */ -const EC_METHOD *EC_GFp_simple_method(void); - -/** Returns GFp methods using montgomery multiplication. - * \return EC_METHOD object - */ -const EC_METHOD *EC_GFp_mont_method(void); - -/** Returns GFp methods using optimized methods for NIST recommended curves - * \return EC_METHOD object - */ -const EC_METHOD *EC_GFp_nist_method(void); - -# ifndef OPENSSL_NO_EC_NISTP_64_GCC_128 -/** Returns 64-bit optimized methods for nistp224 - * \return EC_METHOD object - */ -const EC_METHOD *EC_GFp_nistp224_method(void); - -/** Returns 64-bit optimized methods for nistp256 - * \return EC_METHOD object - */ -const EC_METHOD *EC_GFp_nistp256_method(void); - -/** Returns 64-bit optimized methods for nistp521 - * \return EC_METHOD object - */ -const EC_METHOD *EC_GFp_nistp521_method(void); -# endif - -# ifndef OPENSSL_NO_EC2M -/********************************************************************/ -/* EC_METHOD for curves over GF(2^m) */ -/********************************************************************/ - -/** Returns the basic GF2m ec method - * \return EC_METHOD object - */ -const EC_METHOD *EC_GF2m_simple_method(void); - -# endif - -/********************************************************************/ -/* EC_GROUP functions */ -/********************************************************************/ - -/** Creates a new EC_GROUP object - * \param meth EC_METHOD to use - * \return newly created EC_GROUP object or NULL in case of an error. - */ -EC_GROUP *EC_GROUP_new(const EC_METHOD *meth); - -/** Frees a EC_GROUP object - * \param group EC_GROUP object to be freed. - */ -void EC_GROUP_free(EC_GROUP *group); - -/** Clears and frees a EC_GROUP object - * \param group EC_GROUP object to be cleared and freed. - */ -void EC_GROUP_clear_free(EC_GROUP *group); - -/** Copies EC_GROUP objects. Note: both EC_GROUPs must use the same EC_METHOD. - * \param dst destination EC_GROUP object - * \param src source EC_GROUP object - * \return 1 on success and 0 if an error occurred. - */ -int EC_GROUP_copy(EC_GROUP *dst, const EC_GROUP *src); - -/** Creates a new EC_GROUP object and copies the copies the content - * form src to the newly created EC_KEY object - * \param src source EC_GROUP object - * \return newly created EC_GROUP object or NULL in case of an error. - */ -EC_GROUP *EC_GROUP_dup(const EC_GROUP *src); - -/** Returns the EC_METHOD of the EC_GROUP object. - * \param group EC_GROUP object - * \return EC_METHOD used in this EC_GROUP object. - */ -const EC_METHOD *EC_GROUP_method_of(const EC_GROUP *group); - -/** Returns the field type of the EC_METHOD. - * \param meth EC_METHOD object - * \return NID of the underlying field type OID. - */ -int EC_METHOD_get_field_type(const EC_METHOD *meth); - -/** Sets the generator and it's order/cofactor of a EC_GROUP object. - * \param group EC_GROUP object - * \param generator EC_POINT object with the generator. - * \param order the order of the group generated by the generator. - * \param cofactor the index of the sub-group generated by the generator - * in the group of all points on the elliptic curve. - * \return 1 on success and 0 if an error occured - */ -int EC_GROUP_set_generator(EC_GROUP *group, const EC_POINT *generator, - const BIGNUM *order, const BIGNUM *cofactor); - -/** Returns the generator of a EC_GROUP object. - * \param group EC_GROUP object - * \return the currently used generator (possibly NULL). - */ -const EC_POINT *EC_GROUP_get0_generator(const EC_GROUP *group); - -/** Returns the montgomery data for order(Generator) - * \param group EC_GROUP object - * \return the currently used generator (possibly NULL). -*/ -BN_MONT_CTX *EC_GROUP_get_mont_data(const EC_GROUP *group); - -/** Gets the order of a EC_GROUP - * \param group EC_GROUP object - * \param order BIGNUM to which the order is copied - * \param ctx BN_CTX object (optional) - * \return 1 on success and 0 if an error occured - */ -int EC_GROUP_get_order(const EC_GROUP *group, BIGNUM *order, BN_CTX *ctx); - -/** Gets the cofactor of a EC_GROUP - * \param group EC_GROUP object - * \param cofactor BIGNUM to which the cofactor is copied - * \param ctx BN_CTX object (optional) - * \return 1 on success and 0 if an error occured - */ -int EC_GROUP_get_cofactor(const EC_GROUP *group, BIGNUM *cofactor, - BN_CTX *ctx); - -/** Sets the name of a EC_GROUP object - * \param group EC_GROUP object - * \param nid NID of the curve name OID - */ -void EC_GROUP_set_curve_name(EC_GROUP *group, int nid); - -/** Returns the curve name of a EC_GROUP object - * \param group EC_GROUP object - * \return NID of the curve name OID or 0 if not set. - */ -int EC_GROUP_get_curve_name(const EC_GROUP *group); - -void EC_GROUP_set_asn1_flag(EC_GROUP *group, int flag); -int EC_GROUP_get_asn1_flag(const EC_GROUP *group); - -void EC_GROUP_set_point_conversion_form(EC_GROUP *group, - point_conversion_form_t form); -point_conversion_form_t EC_GROUP_get_point_conversion_form(const EC_GROUP *); - -unsigned char *EC_GROUP_get0_seed(const EC_GROUP *x); -size_t EC_GROUP_get_seed_len(const EC_GROUP *); -size_t EC_GROUP_set_seed(EC_GROUP *, const unsigned char *, size_t len); - -/** Sets the parameter of a ec over GFp defined by y^2 = x^3 + a*x + b - * \param group EC_GROUP object - * \param p BIGNUM with the prime number - * \param a BIGNUM with parameter a of the equation - * \param b BIGNUM with parameter b of the equation - * \param ctx BN_CTX object (optional) - * \return 1 on success and 0 if an error occured - */ -int EC_GROUP_set_curve_GFp(EC_GROUP *group, const BIGNUM *p, const BIGNUM *a, - const BIGNUM *b, BN_CTX *ctx); - -/** Gets the parameter of the ec over GFp defined by y^2 = x^3 + a*x + b - * \param group EC_GROUP object - * \param p BIGNUM for the prime number - * \param a BIGNUM for parameter a of the equation - * \param b BIGNUM for parameter b of the equation - * \param ctx BN_CTX object (optional) - * \return 1 on success and 0 if an error occured - */ -int EC_GROUP_get_curve_GFp(const EC_GROUP *group, BIGNUM *p, BIGNUM *a, - BIGNUM *b, BN_CTX *ctx); - -# ifndef OPENSSL_NO_EC2M -/** Sets the parameter of a ec over GF2m defined by y^2 + x*y = x^3 + a*x^2 + b - * \param group EC_GROUP object - * \param p BIGNUM with the polynomial defining the underlying field - * \param a BIGNUM with parameter a of the equation - * \param b BIGNUM with parameter b of the equation - * \param ctx BN_CTX object (optional) - * \return 1 on success and 0 if an error occured - */ -int EC_GROUP_set_curve_GF2m(EC_GROUP *group, const BIGNUM *p, const BIGNUM *a, - const BIGNUM *b, BN_CTX *ctx); - -/** Gets the parameter of the ec over GF2m defined by y^2 + x*y = x^3 + a*x^2 + b - * \param group EC_GROUP object - * \param p BIGNUM for the polynomial defining the underlying field - * \param a BIGNUM for parameter a of the equation - * \param b BIGNUM for parameter b of the equation - * \param ctx BN_CTX object (optional) - * \return 1 on success and 0 if an error occured - */ -int EC_GROUP_get_curve_GF2m(const EC_GROUP *group, BIGNUM *p, BIGNUM *a, - BIGNUM *b, BN_CTX *ctx); -# endif -/** Returns the number of bits needed to represent a field element - * \param group EC_GROUP object - * \return number of bits needed to represent a field element - */ -int EC_GROUP_get_degree(const EC_GROUP *group); - -/** Checks whether the parameter in the EC_GROUP define a valid ec group - * \param group EC_GROUP object - * \param ctx BN_CTX object (optional) - * \return 1 if group is a valid ec group and 0 otherwise - */ -int EC_GROUP_check(const EC_GROUP *group, BN_CTX *ctx); - -/** Checks whether the discriminant of the elliptic curve is zero or not - * \param group EC_GROUP object - * \param ctx BN_CTX object (optional) - * \return 1 if the discriminant is not zero and 0 otherwise - */ -int EC_GROUP_check_discriminant(const EC_GROUP *group, BN_CTX *ctx); - -/** Compares two EC_GROUP objects - * \param a first EC_GROUP object - * \param b second EC_GROUP object - * \param ctx BN_CTX object (optional) - * \return 0 if both groups are equal and 1 otherwise - */ -int EC_GROUP_cmp(const EC_GROUP *a, const EC_GROUP *b, BN_CTX *ctx); - -/* - * EC_GROUP_new_GF*() calls EC_GROUP_new() and EC_GROUP_set_GF*() after - * choosing an appropriate EC_METHOD - */ - -/** Creates a new EC_GROUP object with the specified parameters defined - * over GFp (defined by the equation y^2 = x^3 + a*x + b) - * \param p BIGNUM with the prime number - * \param a BIGNUM with the parameter a of the equation - * \param b BIGNUM with the parameter b of the equation - * \param ctx BN_CTX object (optional) - * \return newly created EC_GROUP object with the specified parameters - */ -EC_GROUP *EC_GROUP_new_curve_GFp(const BIGNUM *p, const BIGNUM *a, - const BIGNUM *b, BN_CTX *ctx); -# ifndef OPENSSL_NO_EC2M -/** Creates a new EC_GROUP object with the specified parameters defined - * over GF2m (defined by the equation y^2 + x*y = x^3 + a*x^2 + b) - * \param p BIGNUM with the polynomial defining the underlying field - * \param a BIGNUM with the parameter a of the equation - * \param b BIGNUM with the parameter b of the equation - * \param ctx BN_CTX object (optional) - * \return newly created EC_GROUP object with the specified parameters - */ -EC_GROUP *EC_GROUP_new_curve_GF2m(const BIGNUM *p, const BIGNUM *a, - const BIGNUM *b, BN_CTX *ctx); -# endif -/** Creates a EC_GROUP object with a curve specified by a NID - * \param nid NID of the OID of the curve name - * \return newly created EC_GROUP object with specified curve or NULL - * if an error occurred - */ -EC_GROUP *EC_GROUP_new_by_curve_name(int nid); - -/********************************************************************/ -/* handling of internal curves */ -/********************************************************************/ - -typedef struct { - int nid; - const char *comment; -} EC_builtin_curve; - -/* - * EC_builtin_curves(EC_builtin_curve *r, size_t size) returns number of all - * available curves or zero if a error occurred. In case r ist not zero - * nitems EC_builtin_curve structures are filled with the data of the first - * nitems internal groups - */ -size_t EC_get_builtin_curves(EC_builtin_curve *r, size_t nitems); - -const char *EC_curve_nid2nist(int nid); -int EC_curve_nist2nid(const char *name); - -/********************************************************************/ -/* EC_POINT functions */ -/********************************************************************/ - -/** Creates a new EC_POINT object for the specified EC_GROUP - * \param group EC_GROUP the underlying EC_GROUP object - * \return newly created EC_POINT object or NULL if an error occurred - */ -EC_POINT *EC_POINT_new(const EC_GROUP *group); - -/** Frees a EC_POINT object - * \param point EC_POINT object to be freed - */ -void EC_POINT_free(EC_POINT *point); - -/** Clears and frees a EC_POINT object - * \param point EC_POINT object to be cleared and freed - */ -void EC_POINT_clear_free(EC_POINT *point); - -/** Copies EC_POINT object - * \param dst destination EC_POINT object - * \param src source EC_POINT object - * \return 1 on success and 0 if an error occured - */ -int EC_POINT_copy(EC_POINT *dst, const EC_POINT *src); - -/** Creates a new EC_POINT object and copies the content of the supplied - * EC_POINT - * \param src source EC_POINT object - * \param group underlying the EC_GROUP object - * \return newly created EC_POINT object or NULL if an error occurred - */ -EC_POINT *EC_POINT_dup(const EC_POINT *src, const EC_GROUP *group); - -/** Returns the EC_METHOD used in EC_POINT object - * \param point EC_POINT object - * \return the EC_METHOD used - */ -const EC_METHOD *EC_POINT_method_of(const EC_POINT *point); - -/** Sets a point to infinity (neutral element) - * \param group underlying EC_GROUP object - * \param point EC_POINT to set to infinity - * \return 1 on success and 0 if an error occured - */ -int EC_POINT_set_to_infinity(const EC_GROUP *group, EC_POINT *point); - -/** Sets the jacobian projective coordinates of a EC_POINT over GFp - * \param group underlying EC_GROUP object - * \param p EC_POINT object - * \param x BIGNUM with the x-coordinate - * \param y BIGNUM with the y-coordinate - * \param z BIGNUM with the z-coordinate - * \param ctx BN_CTX object (optional) - * \return 1 on success and 0 if an error occured - */ -int EC_POINT_set_Jprojective_coordinates_GFp(const EC_GROUP *group, - EC_POINT *p, const BIGNUM *x, - const BIGNUM *y, const BIGNUM *z, - BN_CTX *ctx); - -/** Gets the jacobian projective coordinates of a EC_POINT over GFp - * \param group underlying EC_GROUP object - * \param p EC_POINT object - * \param x BIGNUM for the x-coordinate - * \param y BIGNUM for the y-coordinate - * \param z BIGNUM for the z-coordinate - * \param ctx BN_CTX object (optional) - * \return 1 on success and 0 if an error occured - */ -int EC_POINT_get_Jprojective_coordinates_GFp(const EC_GROUP *group, - const EC_POINT *p, BIGNUM *x, - BIGNUM *y, BIGNUM *z, - BN_CTX *ctx); - -/** Sets the affine coordinates of a EC_POINT over GFp - * \param group underlying EC_GROUP object - * \param p EC_POINT object - * \param x BIGNUM with the x-coordinate - * \param y BIGNUM with the y-coordinate - * \param ctx BN_CTX object (optional) - * \return 1 on success and 0 if an error occured - */ -int EC_POINT_set_affine_coordinates_GFp(const EC_GROUP *group, EC_POINT *p, - const BIGNUM *x, const BIGNUM *y, - BN_CTX *ctx); - -/** Gets the affine coordinates of a EC_POINT over GFp - * \param group underlying EC_GROUP object - * \param p EC_POINT object - * \param x BIGNUM for the x-coordinate - * \param y BIGNUM for the y-coordinate - * \param ctx BN_CTX object (optional) - * \return 1 on success and 0 if an error occured - */ -int EC_POINT_get_affine_coordinates_GFp(const EC_GROUP *group, - const EC_POINT *p, BIGNUM *x, - BIGNUM *y, BN_CTX *ctx); - -/** Sets the x9.62 compressed coordinates of a EC_POINT over GFp - * \param group underlying EC_GROUP object - * \param p EC_POINT object - * \param x BIGNUM with x-coordinate - * \param y_bit integer with the y-Bit (either 0 or 1) - * \param ctx BN_CTX object (optional) - * \return 1 on success and 0 if an error occured - */ -int EC_POINT_set_compressed_coordinates_GFp(const EC_GROUP *group, - EC_POINT *p, const BIGNUM *x, - int y_bit, BN_CTX *ctx); -# ifndef OPENSSL_NO_EC2M -/** Sets the affine coordinates of a EC_POINT over GF2m - * \param group underlying EC_GROUP object - * \param p EC_POINT object - * \param x BIGNUM with the x-coordinate - * \param y BIGNUM with the y-coordinate - * \param ctx BN_CTX object (optional) - * \return 1 on success and 0 if an error occured - */ -int EC_POINT_set_affine_coordinates_GF2m(const EC_GROUP *group, EC_POINT *p, - const BIGNUM *x, const BIGNUM *y, - BN_CTX *ctx); - -/** Gets the affine coordinates of a EC_POINT over GF2m - * \param group underlying EC_GROUP object - * \param p EC_POINT object - * \param x BIGNUM for the x-coordinate - * \param y BIGNUM for the y-coordinate - * \param ctx BN_CTX object (optional) - * \return 1 on success and 0 if an error occured - */ -int EC_POINT_get_affine_coordinates_GF2m(const EC_GROUP *group, - const EC_POINT *p, BIGNUM *x, - BIGNUM *y, BN_CTX *ctx); - -/** Sets the x9.62 compressed coordinates of a EC_POINT over GF2m - * \param group underlying EC_GROUP object - * \param p EC_POINT object - * \param x BIGNUM with x-coordinate - * \param y_bit integer with the y-Bit (either 0 or 1) - * \param ctx BN_CTX object (optional) - * \return 1 on success and 0 if an error occured - */ -int EC_POINT_set_compressed_coordinates_GF2m(const EC_GROUP *group, - EC_POINT *p, const BIGNUM *x, - int y_bit, BN_CTX *ctx); -# endif -/** Encodes a EC_POINT object to a octet string - * \param group underlying EC_GROUP object - * \param p EC_POINT object - * \param form point conversion form - * \param buf memory buffer for the result. If NULL the function returns - * required buffer size. - * \param len length of the memory buffer - * \param ctx BN_CTX object (optional) - * \return the length of the encoded octet string or 0 if an error occurred - */ -size_t EC_POINT_point2oct(const EC_GROUP *group, const EC_POINT *p, - point_conversion_form_t form, - unsigned char *buf, size_t len, BN_CTX *ctx); - -/** Decodes a EC_POINT from a octet string - * \param group underlying EC_GROUP object - * \param p EC_POINT object - * \param buf memory buffer with the encoded ec point - * \param len length of the encoded ec point - * \param ctx BN_CTX object (optional) - * \return 1 on success and 0 if an error occured - */ -int EC_POINT_oct2point(const EC_GROUP *group, EC_POINT *p, - const unsigned char *buf, size_t len, BN_CTX *ctx); - -/* other interfaces to point2oct/oct2point: */ -BIGNUM *EC_POINT_point2bn(const EC_GROUP *, const EC_POINT *, - point_conversion_form_t form, BIGNUM *, BN_CTX *); -EC_POINT *EC_POINT_bn2point(const EC_GROUP *, const BIGNUM *, - EC_POINT *, BN_CTX *); -char *EC_POINT_point2hex(const EC_GROUP *, const EC_POINT *, - point_conversion_form_t form, BN_CTX *); -EC_POINT *EC_POINT_hex2point(const EC_GROUP *, const char *, - EC_POINT *, BN_CTX *); - -/********************************************************************/ -/* functions for doing EC_POINT arithmetic */ -/********************************************************************/ - -/** Computes the sum of two EC_POINT - * \param group underlying EC_GROUP object - * \param r EC_POINT object for the result (r = a + b) - * \param a EC_POINT object with the first summand - * \param b EC_POINT object with the second summand - * \param ctx BN_CTX object (optional) - * \return 1 on success and 0 if an error occured - */ -int EC_POINT_add(const EC_GROUP *group, EC_POINT *r, const EC_POINT *a, - const EC_POINT *b, BN_CTX *ctx); - -/** Computes the double of a EC_POINT - * \param group underlying EC_GROUP object - * \param r EC_POINT object for the result (r = 2 * a) - * \param a EC_POINT object - * \param ctx BN_CTX object (optional) - * \return 1 on success and 0 if an error occured - */ -int EC_POINT_dbl(const EC_GROUP *group, EC_POINT *r, const EC_POINT *a, - BN_CTX *ctx); - -/** Computes the inverse of a EC_POINT - * \param group underlying EC_GROUP object - * \param a EC_POINT object to be inverted (it's used for the result as well) - * \param ctx BN_CTX object (optional) - * \return 1 on success and 0 if an error occured - */ -int EC_POINT_invert(const EC_GROUP *group, EC_POINT *a, BN_CTX *ctx); - -/** Checks whether the point is the neutral element of the group - * \param group the underlying EC_GROUP object - * \param p EC_POINT object - * \return 1 if the point is the neutral element and 0 otherwise - */ -int EC_POINT_is_at_infinity(const EC_GROUP *group, const EC_POINT *p); - -/** Checks whether the point is on the curve - * \param group underlying EC_GROUP object - * \param point EC_POINT object to check - * \param ctx BN_CTX object (optional) - * \return 1 if point if on the curve and 0 otherwise - */ -int EC_POINT_is_on_curve(const EC_GROUP *group, const EC_POINT *point, - BN_CTX *ctx); - -/** Compares two EC_POINTs - * \param group underlying EC_GROUP object - * \param a first EC_POINT object - * \param b second EC_POINT object - * \param ctx BN_CTX object (optional) - * \return 0 if both points are equal and a value != 0 otherwise - */ -int EC_POINT_cmp(const EC_GROUP *group, const EC_POINT *a, const EC_POINT *b, - BN_CTX *ctx); - -int EC_POINT_make_affine(const EC_GROUP *group, EC_POINT *point, BN_CTX *ctx); -int EC_POINTs_make_affine(const EC_GROUP *group, size_t num, - EC_POINT *points[], BN_CTX *ctx); - -/** Computes r = generator * n sum_{i=0}^{num-1} p[i] * m[i] - * \param group underlying EC_GROUP object - * \param r EC_POINT object for the result - * \param n BIGNUM with the multiplier for the group generator (optional) - * \param num number futher summands - * \param p array of size num of EC_POINT objects - * \param m array of size num of BIGNUM objects - * \param ctx BN_CTX object (optional) - * \return 1 on success and 0 if an error occured - */ -int EC_POINTs_mul(const EC_GROUP *group, EC_POINT *r, const BIGNUM *n, - size_t num, const EC_POINT *p[], const BIGNUM *m[], - BN_CTX *ctx); - -/** Computes r = generator * n + q * m - * \param group underlying EC_GROUP object - * \param r EC_POINT object for the result - * \param n BIGNUM with the multiplier for the group generator (optional) - * \param q EC_POINT object with the first factor of the second summand - * \param m BIGNUM with the second factor of the second summand - * \param ctx BN_CTX object (optional) - * \return 1 on success and 0 if an error occured - */ -int EC_POINT_mul(const EC_GROUP *group, EC_POINT *r, const BIGNUM *n, - const EC_POINT *q, const BIGNUM *m, BN_CTX *ctx); - -/** Stores multiples of generator for faster point multiplication - * \param group EC_GROUP object - * \param ctx BN_CTX object (optional) - * \return 1 on success and 0 if an error occured - */ -int EC_GROUP_precompute_mult(EC_GROUP *group, BN_CTX *ctx); - -/** Reports whether a precomputation has been done - * \param group EC_GROUP object - * \return 1 if a pre-computation has been done and 0 otherwise - */ -int EC_GROUP_have_precompute_mult(const EC_GROUP *group); - -/********************************************************************/ -/* ASN1 stuff */ -/********************************************************************/ - -/* - * EC_GROUP_get_basis_type() returns the NID of the basis type used to - * represent the field elements - */ -int EC_GROUP_get_basis_type(const EC_GROUP *); -# ifndef OPENSSL_NO_EC2M -int EC_GROUP_get_trinomial_basis(const EC_GROUP *, unsigned int *k); -int EC_GROUP_get_pentanomial_basis(const EC_GROUP *, unsigned int *k1, - unsigned int *k2, unsigned int *k3); -# endif - -# define OPENSSL_EC_NAMED_CURVE 0x001 - -typedef struct ecpk_parameters_st ECPKPARAMETERS; - -EC_GROUP *d2i_ECPKParameters(EC_GROUP **, const unsigned char **in, long len); -int i2d_ECPKParameters(const EC_GROUP *, unsigned char **out); - -# define d2i_ECPKParameters_bio(bp,x) ASN1_d2i_bio_of(EC_GROUP,NULL,d2i_ECPKParameters,bp,x) -# define i2d_ECPKParameters_bio(bp,x) ASN1_i2d_bio_of_const(EC_GROUP,i2d_ECPKParameters,bp,x) -# define d2i_ECPKParameters_fp(fp,x) (EC_GROUP *)ASN1_d2i_fp(NULL, \ - (char *(*)())d2i_ECPKParameters,(fp),(unsigned char **)(x)) -# define i2d_ECPKParameters_fp(fp,x) ASN1_i2d_fp(i2d_ECPKParameters,(fp), \ - (unsigned char *)(x)) - -# ifndef OPENSSL_NO_BIO -int ECPKParameters_print(BIO *bp, const EC_GROUP *x, int off); -# endif -# ifndef OPENSSL_NO_FP_API -int ECPKParameters_print_fp(FILE *fp, const EC_GROUP *x, int off); -# endif - -/********************************************************************/ -/* EC_KEY functions */ -/********************************************************************/ - -typedef struct ec_key_st EC_KEY; - -/* some values for the encoding_flag */ -# define EC_PKEY_NO_PARAMETERS 0x001 -# define EC_PKEY_NO_PUBKEY 0x002 - -/* some values for the flags field */ -# define EC_FLAG_NON_FIPS_ALLOW 0x1 -# define EC_FLAG_FIPS_CHECKED 0x2 - -/** Creates a new EC_KEY object. - * \return EC_KEY object or NULL if an error occurred. - */ -EC_KEY *EC_KEY_new(void); - -int EC_KEY_get_flags(const EC_KEY *key); - -void EC_KEY_set_flags(EC_KEY *key, int flags); - -void EC_KEY_clear_flags(EC_KEY *key, int flags); - -/** Creates a new EC_KEY object using a named curve as underlying - * EC_GROUP object. - * \param nid NID of the named curve. - * \return EC_KEY object or NULL if an error occurred. - */ -EC_KEY *EC_KEY_new_by_curve_name(int nid); - -/** Frees a EC_KEY object. - * \param key EC_KEY object to be freed. - */ -void EC_KEY_free(EC_KEY *key); - -/** Copies a EC_KEY object. - * \param dst destination EC_KEY object - * \param src src EC_KEY object - * \return dst or NULL if an error occurred. - */ -EC_KEY *EC_KEY_copy(EC_KEY *dst, const EC_KEY *src); - -/** Creates a new EC_KEY object and copies the content from src to it. - * \param src the source EC_KEY object - * \return newly created EC_KEY object or NULL if an error occurred. - */ -EC_KEY *EC_KEY_dup(const EC_KEY *src); - -/** Increases the internal reference count of a EC_KEY object. - * \param key EC_KEY object - * \return 1 on success and 0 if an error occurred. - */ -int EC_KEY_up_ref(EC_KEY *key); - -/** Returns the EC_GROUP object of a EC_KEY object - * \param key EC_KEY object - * \return the EC_GROUP object (possibly NULL). - */ -const EC_GROUP *EC_KEY_get0_group(const EC_KEY *key); - -/** Sets the EC_GROUP of a EC_KEY object. - * \param key EC_KEY object - * \param group EC_GROUP to use in the EC_KEY object (note: the EC_KEY - * object will use an own copy of the EC_GROUP). - * \return 1 on success and 0 if an error occurred. - */ -int EC_KEY_set_group(EC_KEY *key, const EC_GROUP *group); - -/** Returns the private key of a EC_KEY object. - * \param key EC_KEY object - * \return a BIGNUM with the private key (possibly NULL). - */ -const BIGNUM *EC_KEY_get0_private_key(const EC_KEY *key); - -/** Sets the private key of a EC_KEY object. - * \param key EC_KEY object - * \param prv BIGNUM with the private key (note: the EC_KEY object - * will use an own copy of the BIGNUM). - * \return 1 on success and 0 if an error occurred. - */ -int EC_KEY_set_private_key(EC_KEY *key, const BIGNUM *prv); - -/** Returns the public key of a EC_KEY object. - * \param key the EC_KEY object - * \return a EC_POINT object with the public key (possibly NULL) - */ -const EC_POINT *EC_KEY_get0_public_key(const EC_KEY *key); - -/** Sets the public key of a EC_KEY object. - * \param key EC_KEY object - * \param pub EC_POINT object with the public key (note: the EC_KEY object - * will use an own copy of the EC_POINT object). - * \return 1 on success and 0 if an error occurred. - */ -int EC_KEY_set_public_key(EC_KEY *key, const EC_POINT *pub); - -unsigned EC_KEY_get_enc_flags(const EC_KEY *key); -void EC_KEY_set_enc_flags(EC_KEY *eckey, unsigned int flags); -point_conversion_form_t EC_KEY_get_conv_form(const EC_KEY *key); -void EC_KEY_set_conv_form(EC_KEY *eckey, point_conversion_form_t cform); -/* functions to set/get method specific data */ -void *EC_KEY_get_key_method_data(EC_KEY *key, - void *(*dup_func) (void *), - void (*free_func) (void *), - void (*clear_free_func) (void *)); -/** Sets the key method data of an EC_KEY object, if none has yet been set. - * \param key EC_KEY object - * \param data opaque data to install. - * \param dup_func a function that duplicates |data|. - * \param free_func a function that frees |data|. - * \param clear_free_func a function that wipes and frees |data|. - * \return the previously set data pointer, or NULL if |data| was inserted. - */ -void *EC_KEY_insert_key_method_data(EC_KEY *key, void *data, - void *(*dup_func) (void *), - void (*free_func) (void *), - void (*clear_free_func) (void *)); -/* wrapper functions for the underlying EC_GROUP object */ -void EC_KEY_set_asn1_flag(EC_KEY *eckey, int asn1_flag); - -/** Creates a table of pre-computed multiples of the generator to - * accelerate further EC_KEY operations. - * \param key EC_KEY object - * \param ctx BN_CTX object (optional) - * \return 1 on success and 0 if an error occurred. - */ -int EC_KEY_precompute_mult(EC_KEY *key, BN_CTX *ctx); - -/** Creates a new ec private (and optional a new public) key. - * \param key EC_KEY object - * \return 1 on success and 0 if an error occurred. - */ -int EC_KEY_generate_key(EC_KEY *key); - -/** Verifies that a private and/or public key is valid. - * \param key the EC_KEY object - * \return 1 on success and 0 otherwise. - */ -int EC_KEY_check_key(const EC_KEY *key); - -/** Sets a public key from affine coordindates performing - * neccessary NIST PKV tests. - * \param key the EC_KEY object - * \param x public key x coordinate - * \param y public key y coordinate - * \return 1 on success and 0 otherwise. - */ -int EC_KEY_set_public_key_affine_coordinates(EC_KEY *key, BIGNUM *x, - BIGNUM *y); - -/********************************************************************/ -/* de- and encoding functions for SEC1 ECPrivateKey */ -/********************************************************************/ - -/** Decodes a private key from a memory buffer. - * \param key a pointer to a EC_KEY object which should be used (or NULL) - * \param in pointer to memory with the DER encoded private key - * \param len length of the DER encoded private key - * \return the decoded private key or NULL if an error occurred. - */ -EC_KEY *d2i_ECPrivateKey(EC_KEY **key, const unsigned char **in, long len); - -/** Encodes a private key object and stores the result in a buffer. - * \param key the EC_KEY object to encode - * \param out the buffer for the result (if NULL the function returns number - * of bytes needed). - * \return 1 on success and 0 if an error occurred. - */ -int i2d_ECPrivateKey(EC_KEY *key, unsigned char **out); - -/********************************************************************/ -/* de- and encoding functions for EC parameters */ -/********************************************************************/ - -/** Decodes ec parameter from a memory buffer. - * \param key a pointer to a EC_KEY object which should be used (or NULL) - * \param in pointer to memory with the DER encoded ec parameters - * \param len length of the DER encoded ec parameters - * \return a EC_KEY object with the decoded parameters or NULL if an error - * occurred. - */ -EC_KEY *d2i_ECParameters(EC_KEY **key, const unsigned char **in, long len); - -/** Encodes ec parameter and stores the result in a buffer. - * \param key the EC_KEY object with ec paramters to encode - * \param out the buffer for the result (if NULL the function returns number - * of bytes needed). - * \return 1 on success and 0 if an error occurred. - */ -int i2d_ECParameters(EC_KEY *key, unsigned char **out); - -/********************************************************************/ -/* de- and encoding functions for EC public key */ -/* (octet string, not DER -- hence 'o2i' and 'i2o') */ -/********************************************************************/ - -/** Decodes a ec public key from a octet string. - * \param key a pointer to a EC_KEY object which should be used - * \param in memory buffer with the encoded public key - * \param len length of the encoded public key - * \return EC_KEY object with decoded public key or NULL if an error - * occurred. - */ -EC_KEY *o2i_ECPublicKey(EC_KEY **key, const unsigned char **in, long len); - -/** Encodes a ec public key in an octet string. - * \param key the EC_KEY object with the public key - * \param out the buffer for the result (if NULL the function returns number - * of bytes needed). - * \return 1 on success and 0 if an error occurred - */ -int i2o_ECPublicKey(EC_KEY *key, unsigned char **out); - -# ifndef OPENSSL_NO_BIO -/** Prints out the ec parameters on human readable form. - * \param bp BIO object to which the information is printed - * \param key EC_KEY object - * \return 1 on success and 0 if an error occurred - */ -int ECParameters_print(BIO *bp, const EC_KEY *key); - -/** Prints out the contents of a EC_KEY object - * \param bp BIO object to which the information is printed - * \param key EC_KEY object - * \param off line offset - * \return 1 on success and 0 if an error occurred - */ -int EC_KEY_print(BIO *bp, const EC_KEY *key, int off); - -# endif -# ifndef OPENSSL_NO_FP_API -/** Prints out the ec parameters on human readable form. - * \param fp file descriptor to which the information is printed - * \param key EC_KEY object - * \return 1 on success and 0 if an error occurred - */ -int ECParameters_print_fp(FILE *fp, const EC_KEY *key); - -/** Prints out the contents of a EC_KEY object - * \param fp file descriptor to which the information is printed - * \param key EC_KEY object - * \param off line offset - * \return 1 on success and 0 if an error occurred - */ -int EC_KEY_print_fp(FILE *fp, const EC_KEY *key, int off); - -# endif - -# define ECParameters_dup(x) ASN1_dup_of(EC_KEY,i2d_ECParameters,d2i_ECParameters,x) - -# ifndef __cplusplus -# if defined(__SUNPRO_C) -# if __SUNPRO_C >= 0x520 -# pragma error_messages (default,E_ARRAY_OF_INCOMPLETE_NONAME,E_ARRAY_OF_INCOMPLETE) -# endif -# endif -# endif - -# define EVP_PKEY_CTX_set_ec_paramgen_curve_nid(ctx, nid) \ - EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ - EVP_PKEY_OP_PARAMGEN|EVP_PKEY_OP_KEYGEN, \ - EVP_PKEY_CTRL_EC_PARAMGEN_CURVE_NID, nid, NULL) - -# define EVP_PKEY_CTX_set_ec_param_enc(ctx, flag) \ - EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ - EVP_PKEY_OP_PARAMGEN|EVP_PKEY_OP_KEYGEN, \ - EVP_PKEY_CTRL_EC_PARAM_ENC, flag, NULL) - -# define EVP_PKEY_CTX_set_ecdh_cofactor_mode(ctx, flag) \ - EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ - EVP_PKEY_OP_DERIVE, \ - EVP_PKEY_CTRL_EC_ECDH_COFACTOR, flag, NULL) - -# define EVP_PKEY_CTX_get_ecdh_cofactor_mode(ctx) \ - EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ - EVP_PKEY_OP_DERIVE, \ - EVP_PKEY_CTRL_EC_ECDH_COFACTOR, -2, NULL) - -# define EVP_PKEY_CTX_set_ecdh_kdf_type(ctx, kdf) \ - EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ - EVP_PKEY_OP_DERIVE, \ - EVP_PKEY_CTRL_EC_KDF_TYPE, kdf, NULL) - -# define EVP_PKEY_CTX_get_ecdh_kdf_type(ctx) \ - EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ - EVP_PKEY_OP_DERIVE, \ - EVP_PKEY_CTRL_EC_KDF_TYPE, -2, NULL) - -# define EVP_PKEY_CTX_set_ecdh_kdf_md(ctx, md) \ - EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ - EVP_PKEY_OP_DERIVE, \ - EVP_PKEY_CTRL_EC_KDF_MD, 0, (void *)md) - -# define EVP_PKEY_CTX_get_ecdh_kdf_md(ctx, pmd) \ - EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ - EVP_PKEY_OP_DERIVE, \ - EVP_PKEY_CTRL_GET_EC_KDF_MD, 0, (void *)pmd) - -# define EVP_PKEY_CTX_set_ecdh_kdf_outlen(ctx, len) \ - EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ - EVP_PKEY_OP_DERIVE, \ - EVP_PKEY_CTRL_EC_KDF_OUTLEN, len, NULL) - -# define EVP_PKEY_CTX_get_ecdh_kdf_outlen(ctx, plen) \ - EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ - EVP_PKEY_OP_DERIVE, \ - EVP_PKEY_CTRL_GET_EC_KDF_OUTLEN, 0, (void *)plen) - -# define EVP_PKEY_CTX_set0_ecdh_kdf_ukm(ctx, p, plen) \ - EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ - EVP_PKEY_OP_DERIVE, \ - EVP_PKEY_CTRL_EC_KDF_UKM, plen, (void *)p) - -# define EVP_PKEY_CTX_get0_ecdh_kdf_ukm(ctx, p) \ - EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ - EVP_PKEY_OP_DERIVE, \ - EVP_PKEY_CTRL_GET_EC_KDF_UKM, 0, (void *)p) - -# define EVP_PKEY_CTRL_EC_PARAMGEN_CURVE_NID (EVP_PKEY_ALG_CTRL + 1) -# define EVP_PKEY_CTRL_EC_PARAM_ENC (EVP_PKEY_ALG_CTRL + 2) -# define EVP_PKEY_CTRL_EC_ECDH_COFACTOR (EVP_PKEY_ALG_CTRL + 3) -# define EVP_PKEY_CTRL_EC_KDF_TYPE (EVP_PKEY_ALG_CTRL + 4) -# define EVP_PKEY_CTRL_EC_KDF_MD (EVP_PKEY_ALG_CTRL + 5) -# define EVP_PKEY_CTRL_GET_EC_KDF_MD (EVP_PKEY_ALG_CTRL + 6) -# define EVP_PKEY_CTRL_EC_KDF_OUTLEN (EVP_PKEY_ALG_CTRL + 7) -# define EVP_PKEY_CTRL_GET_EC_KDF_OUTLEN (EVP_PKEY_ALG_CTRL + 8) -# define EVP_PKEY_CTRL_EC_KDF_UKM (EVP_PKEY_ALG_CTRL + 9) -# define EVP_PKEY_CTRL_GET_EC_KDF_UKM (EVP_PKEY_ALG_CTRL + 10) -/* KDF types */ -# define EVP_PKEY_ECDH_KDF_NONE 1 -# define EVP_PKEY_ECDH_KDF_X9_62 2 - -/* BEGIN ERROR CODES */ -/* - * The following lines are auto generated by the script mkerr.pl. Any changes - * made after this point may be overwritten when the script is next run. - */ -void ERR_load_EC_strings(void); - -/* Error codes for the EC functions. */ - -/* Function codes. */ -# define EC_F_BN_TO_FELEM 224 -# define EC_F_COMPUTE_WNAF 143 -# define EC_F_D2I_ECPARAMETERS 144 -# define EC_F_D2I_ECPKPARAMETERS 145 -# define EC_F_D2I_ECPRIVATEKEY 146 -# define EC_F_DO_EC_KEY_PRINT 221 -# define EC_F_ECDH_CMS_DECRYPT 238 -# define EC_F_ECDH_CMS_SET_SHARED_INFO 239 -# define EC_F_ECKEY_PARAM2TYPE 223 -# define EC_F_ECKEY_PARAM_DECODE 212 -# define EC_F_ECKEY_PRIV_DECODE 213 -# define EC_F_ECKEY_PRIV_ENCODE 214 -# define EC_F_ECKEY_PUB_DECODE 215 -# define EC_F_ECKEY_PUB_ENCODE 216 -# define EC_F_ECKEY_TYPE2PARAM 220 -# define EC_F_ECPARAMETERS_PRINT 147 -# define EC_F_ECPARAMETERS_PRINT_FP 148 -# define EC_F_ECPKPARAMETERS_PRINT 149 -# define EC_F_ECPKPARAMETERS_PRINT_FP 150 -# define EC_F_ECP_NIST_MOD_192 203 -# define EC_F_ECP_NIST_MOD_224 204 -# define EC_F_ECP_NIST_MOD_256 205 -# define EC_F_ECP_NIST_MOD_521 206 -# define EC_F_EC_ASN1_GROUP2CURVE 153 -# define EC_F_EC_ASN1_GROUP2FIELDID 154 -# define EC_F_EC_ASN1_GROUP2PARAMETERS 155 -# define EC_F_EC_ASN1_GROUP2PKPARAMETERS 156 -# define EC_F_EC_ASN1_PARAMETERS2GROUP 157 -# define EC_F_EC_ASN1_PKPARAMETERS2GROUP 158 -# define EC_F_EC_EX_DATA_SET_DATA 211 -# define EC_F_EC_GF2M_MONTGOMERY_POINT_MULTIPLY 208 -# define EC_F_EC_GF2M_SIMPLE_GROUP_CHECK_DISCRIMINANT 159 -# define EC_F_EC_GF2M_SIMPLE_GROUP_SET_CURVE 195 -# define EC_F_EC_GF2M_SIMPLE_OCT2POINT 160 -# define EC_F_EC_GF2M_SIMPLE_POINT2OCT 161 -# define EC_F_EC_GF2M_SIMPLE_POINT_GET_AFFINE_COORDINATES 162 -# define EC_F_EC_GF2M_SIMPLE_POINT_SET_AFFINE_COORDINATES 163 -# define EC_F_EC_GF2M_SIMPLE_SET_COMPRESSED_COORDINATES 164 -# define EC_F_EC_GFP_MONT_FIELD_DECODE 133 -# define EC_F_EC_GFP_MONT_FIELD_ENCODE 134 -# define EC_F_EC_GFP_MONT_FIELD_MUL 131 -# define EC_F_EC_GFP_MONT_FIELD_SET_TO_ONE 209 -# define EC_F_EC_GFP_MONT_FIELD_SQR 132 -# define EC_F_EC_GFP_MONT_GROUP_SET_CURVE 189 -# define EC_F_EC_GFP_MONT_GROUP_SET_CURVE_GFP 135 -# define EC_F_EC_GFP_NISTP224_GROUP_SET_CURVE 225 -# define EC_F_EC_GFP_NISTP224_POINTS_MUL 228 -# define EC_F_EC_GFP_NISTP224_POINT_GET_AFFINE_COORDINATES 226 -# define EC_F_EC_GFP_NISTP256_GROUP_SET_CURVE 230 -# define EC_F_EC_GFP_NISTP256_POINTS_MUL 231 -# define EC_F_EC_GFP_NISTP256_POINT_GET_AFFINE_COORDINATES 232 -# define EC_F_EC_GFP_NISTP521_GROUP_SET_CURVE 233 -# define EC_F_EC_GFP_NISTP521_POINTS_MUL 234 -# define EC_F_EC_GFP_NISTP521_POINT_GET_AFFINE_COORDINATES 235 -# define EC_F_EC_GFP_NIST_FIELD_MUL 200 -# define EC_F_EC_GFP_NIST_FIELD_SQR 201 -# define EC_F_EC_GFP_NIST_GROUP_SET_CURVE 202 -# define EC_F_EC_GFP_SIMPLE_GROUP_CHECK_DISCRIMINANT 165 -# define EC_F_EC_GFP_SIMPLE_GROUP_SET_CURVE 166 -# define EC_F_EC_GFP_SIMPLE_GROUP_SET_CURVE_GFP 100 -# define EC_F_EC_GFP_SIMPLE_GROUP_SET_GENERATOR 101 -# define EC_F_EC_GFP_SIMPLE_MAKE_AFFINE 102 -# define EC_F_EC_GFP_SIMPLE_OCT2POINT 103 -# define EC_F_EC_GFP_SIMPLE_POINT2OCT 104 -# define EC_F_EC_GFP_SIMPLE_POINTS_MAKE_AFFINE 137 -# define EC_F_EC_GFP_SIMPLE_POINT_GET_AFFINE_COORDINATES 167 -# define EC_F_EC_GFP_SIMPLE_POINT_GET_AFFINE_COORDINATES_GFP 105 -# define EC_F_EC_GFP_SIMPLE_POINT_SET_AFFINE_COORDINATES 168 -# define EC_F_EC_GFP_SIMPLE_POINT_SET_AFFINE_COORDINATES_GFP 128 -# define EC_F_EC_GFP_SIMPLE_SET_COMPRESSED_COORDINATES 169 -# define EC_F_EC_GFP_SIMPLE_SET_COMPRESSED_COORDINATES_GFP 129 -# define EC_F_EC_GROUP_CHECK 170 -# define EC_F_EC_GROUP_CHECK_DISCRIMINANT 171 -# define EC_F_EC_GROUP_COPY 106 -# define EC_F_EC_GROUP_GET0_GENERATOR 139 -# define EC_F_EC_GROUP_GET_COFACTOR 140 -# define EC_F_EC_GROUP_GET_CURVE_GF2M 172 -# define EC_F_EC_GROUP_GET_CURVE_GFP 130 -# define EC_F_EC_GROUP_GET_DEGREE 173 -# define EC_F_EC_GROUP_GET_ORDER 141 -# define EC_F_EC_GROUP_GET_PENTANOMIAL_BASIS 193 -# define EC_F_EC_GROUP_GET_TRINOMIAL_BASIS 194 -# define EC_F_EC_GROUP_NEW 108 -# define EC_F_EC_GROUP_NEW_BY_CURVE_NAME 174 -# define EC_F_EC_GROUP_NEW_FROM_DATA 175 -# define EC_F_EC_GROUP_PRECOMPUTE_MULT 142 -# define EC_F_EC_GROUP_SET_CURVE_GF2M 176 -# define EC_F_EC_GROUP_SET_CURVE_GFP 109 -# define EC_F_EC_GROUP_SET_EXTRA_DATA 110 -# define EC_F_EC_GROUP_SET_GENERATOR 111 -# define EC_F_EC_KEY_CHECK_KEY 177 -# define EC_F_EC_KEY_COPY 178 -# define EC_F_EC_KEY_GENERATE_KEY 179 -# define EC_F_EC_KEY_NEW 182 -# define EC_F_EC_KEY_PRINT 180 -# define EC_F_EC_KEY_PRINT_FP 181 -# define EC_F_EC_KEY_SET_PUBLIC_KEY_AFFINE_COORDINATES 229 -# define EC_F_EC_POINTS_MAKE_AFFINE 136 -# define EC_F_EC_POINT_ADD 112 -# define EC_F_EC_POINT_CMP 113 -# define EC_F_EC_POINT_COPY 114 -# define EC_F_EC_POINT_DBL 115 -# define EC_F_EC_POINT_GET_AFFINE_COORDINATES_GF2M 183 -# define EC_F_EC_POINT_GET_AFFINE_COORDINATES_GFP 116 -# define EC_F_EC_POINT_GET_JPROJECTIVE_COORDINATES_GFP 117 -# define EC_F_EC_POINT_INVERT 210 -# define EC_F_EC_POINT_IS_AT_INFINITY 118 -# define EC_F_EC_POINT_IS_ON_CURVE 119 -# define EC_F_EC_POINT_MAKE_AFFINE 120 -# define EC_F_EC_POINT_MUL 184 -# define EC_F_EC_POINT_NEW 121 -# define EC_F_EC_POINT_OCT2POINT 122 -# define EC_F_EC_POINT_POINT2OCT 123 -# define EC_F_EC_POINT_SET_AFFINE_COORDINATES_GF2M 185 -# define EC_F_EC_POINT_SET_AFFINE_COORDINATES_GFP 124 -# define EC_F_EC_POINT_SET_COMPRESSED_COORDINATES_GF2M 186 -# define EC_F_EC_POINT_SET_COMPRESSED_COORDINATES_GFP 125 -# define EC_F_EC_POINT_SET_JPROJECTIVE_COORDINATES_GFP 126 -# define EC_F_EC_POINT_SET_TO_INFINITY 127 -# define EC_F_EC_PRE_COMP_DUP 207 -# define EC_F_EC_PRE_COMP_NEW 196 -# define EC_F_EC_WNAF_MUL 187 -# define EC_F_EC_WNAF_PRECOMPUTE_MULT 188 -# define EC_F_I2D_ECPARAMETERS 190 -# define EC_F_I2D_ECPKPARAMETERS 191 -# define EC_F_I2D_ECPRIVATEKEY 192 -# define EC_F_I2O_ECPUBLICKEY 151 -# define EC_F_NISTP224_PRE_COMP_NEW 227 -# define EC_F_NISTP256_PRE_COMP_NEW 236 -# define EC_F_NISTP521_PRE_COMP_NEW 237 -# define EC_F_ECP_NISTZ256_GET_AFFINE 240 -# define EC_F_ECP_NISTZ256_POINTS_MUL 241 -# define EC_F_ECP_NISTZ256_WINDOWED_MUL 242 -# define EC_F_ECP_NISTZ256_MULT_PRECOMPUTE 243 -# define EC_F_ECP_NISTZ256_PRE_COMP_NEW 244 -# define EC_F_O2I_ECPUBLICKEY 152 -# define EC_F_OLD_EC_PRIV_DECODE 222 -# define EC_F_PKEY_EC_CTRL 197 -# define EC_F_PKEY_EC_CTRL_STR 198 -# define EC_F_PKEY_EC_DERIVE 217 -# define EC_F_PKEY_EC_KEYGEN 199 -# define EC_F_PKEY_EC_PARAMGEN 219 -# define EC_F_PKEY_EC_SIGN 218 - -/* Reason codes. */ -# define EC_R_ASN1_ERROR 115 -# define EC_R_ASN1_UNKNOWN_FIELD 116 -# define EC_R_BIGNUM_OUT_OF_RANGE 144 -# define EC_R_BUFFER_TOO_SMALL 100 -# define EC_R_COORDINATES_OUT_OF_RANGE 146 -# define EC_R_D2I_ECPKPARAMETERS_FAILURE 117 -# define EC_R_DECODE_ERROR 142 -# define EC_R_DISCRIMINANT_IS_ZERO 118 -# define EC_R_EC_GROUP_NEW_BY_NAME_FAILURE 119 -# define EC_R_FIELD_TOO_LARGE 143 -# define EC_R_GF2M_NOT_SUPPORTED 147 -# define EC_R_GROUP2PKPARAMETERS_FAILURE 120 -# define EC_R_I2D_ECPKPARAMETERS_FAILURE 121 -# define EC_R_INCOMPATIBLE_OBJECTS 101 -# define EC_R_INVALID_ARGUMENT 112 -# define EC_R_INVALID_COMPRESSED_POINT 110 -# define EC_R_INVALID_COMPRESSION_BIT 109 -# define EC_R_INVALID_CURVE 141 -# define EC_R_INVALID_DIGEST 151 -# define EC_R_INVALID_DIGEST_TYPE 138 -# define EC_R_INVALID_ENCODING 102 -# define EC_R_INVALID_FIELD 103 -# define EC_R_INVALID_FORM 104 -# define EC_R_INVALID_GROUP_ORDER 122 -# define EC_R_INVALID_PENTANOMIAL_BASIS 132 -# define EC_R_INVALID_PRIVATE_KEY 123 -# define EC_R_INVALID_TRINOMIAL_BASIS 137 -# define EC_R_KDF_PARAMETER_ERROR 148 -# define EC_R_KEYS_NOT_SET 140 -# define EC_R_MISSING_PARAMETERS 124 -# define EC_R_MISSING_PRIVATE_KEY 125 -# define EC_R_NOT_A_NIST_PRIME 135 -# define EC_R_NOT_A_SUPPORTED_NIST_PRIME 136 -# define EC_R_NOT_IMPLEMENTED 126 -# define EC_R_NOT_INITIALIZED 111 -# define EC_R_NO_FIELD_MOD 133 -# define EC_R_NO_PARAMETERS_SET 139 -# define EC_R_PASSED_NULL_PARAMETER 134 -# define EC_R_PEER_KEY_ERROR 149 -# define EC_R_PKPARAMETERS2GROUP_FAILURE 127 -# define EC_R_POINT_AT_INFINITY 106 -# define EC_R_POINT_IS_NOT_ON_CURVE 107 -# define EC_R_SHARED_INFO_ERROR 150 -# define EC_R_SLOT_FULL 108 -# define EC_R_UNDEFINED_GENERATOR 113 -# define EC_R_UNDEFINED_ORDER 128 -# define EC_R_UNKNOWN_GROUP 129 -# define EC_R_UNKNOWN_ORDER 114 -# define EC_R_UNSUPPORTED_FIELD 131 -# define EC_R_WRONG_CURVE_PARAMETERS 145 -# define EC_R_WRONG_ORDER 130 - -#ifdef __cplusplus -} -#endif -#endif diff --git a/ext/openssl-win32/inc32/openssl/ecdh.h b/ext/openssl-win32/inc32/openssl/ecdh.h deleted file mode 100644 index 25348b30..00000000 --- a/ext/openssl-win32/inc32/openssl/ecdh.h +++ /dev/null @@ -1,134 +0,0 @@ -/* crypto/ecdh/ecdh.h */ -/* ==================================================================== - * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED. - * - * The Elliptic Curve Public-Key Crypto Library (ECC Code) included - * herein is developed by SUN MICROSYSTEMS, INC., and is contributed - * to the OpenSSL project. - * - * The ECC Code is licensed pursuant to the OpenSSL open source - * license provided below. - * - * The ECDH software is originally written by Douglas Stebila of - * Sun Microsystems Laboratories. - * - */ -/* ==================================================================== - * Copyright (c) 2000-2002 The OpenSSL Project. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. All advertising materials mentioning features or use of this - * software must display the following acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" - * - * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * licensing@OpenSSL.org. - * - * 5. Products derived from this software may not be called "OpenSSL" - * nor may "OpenSSL" appear in their names without prior written - * permission of the OpenSSL Project. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" - * - * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY - * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * ==================================================================== - * - * This product includes cryptographic software written by Eric Young - * (eay@cryptsoft.com). This product includes software written by Tim - * Hudson (tjh@cryptsoft.com). - * - */ -#ifndef HEADER_ECDH_H -# define HEADER_ECDH_H - -# include - -# ifdef OPENSSL_NO_ECDH -# error ECDH is disabled. -# endif - -# include -# include -# ifndef OPENSSL_NO_DEPRECATED -# include -# endif - -#ifdef __cplusplus -extern "C" { -#endif - -# define EC_FLAG_COFACTOR_ECDH 0x1000 - -const ECDH_METHOD *ECDH_OpenSSL(void); - -void ECDH_set_default_method(const ECDH_METHOD *); -const ECDH_METHOD *ECDH_get_default_method(void); -int ECDH_set_method(EC_KEY *, const ECDH_METHOD *); - -int ECDH_compute_key(void *out, size_t outlen, const EC_POINT *pub_key, - EC_KEY *ecdh, void *(*KDF) (const void *in, size_t inlen, - void *out, size_t *outlen)); - -int ECDH_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new - *new_func, CRYPTO_EX_dup *dup_func, - CRYPTO_EX_free *free_func); -int ECDH_set_ex_data(EC_KEY *d, int idx, void *arg); -void *ECDH_get_ex_data(EC_KEY *d, int idx); - -int ECDH_KDF_X9_62(unsigned char *out, size_t outlen, - const unsigned char *Z, size_t Zlen, - const unsigned char *sinfo, size_t sinfolen, - const EVP_MD *md); - -/* BEGIN ERROR CODES */ -/* - * The following lines are auto generated by the script mkerr.pl. Any changes - * made after this point may be overwritten when the script is next run. - */ -void ERR_load_ECDH_strings(void); - -/* Error codes for the ECDH functions. */ - -/* Function codes. */ -# define ECDH_F_ECDH_CHECK 102 -# define ECDH_F_ECDH_COMPUTE_KEY 100 -# define ECDH_F_ECDH_DATA_NEW_METHOD 101 - -/* Reason codes. */ -# define ECDH_R_KDF_FAILED 102 -# define ECDH_R_NON_FIPS_METHOD 103 -# define ECDH_R_NO_PRIVATE_VALUE 100 -# define ECDH_R_POINT_ARITHMETIC_FAILURE 101 - -#ifdef __cplusplus -} -#endif -#endif diff --git a/ext/openssl-win32/inc32/openssl/ecdsa.h b/ext/openssl-win32/inc32/openssl/ecdsa.h deleted file mode 100644 index c4016ac3..00000000 --- a/ext/openssl-win32/inc32/openssl/ecdsa.h +++ /dev/null @@ -1,335 +0,0 @@ -/* crypto/ecdsa/ecdsa.h */ -/** - * \file crypto/ecdsa/ecdsa.h Include file for the OpenSSL ECDSA functions - * \author Written by Nils Larsch for the OpenSSL project - */ -/* ==================================================================== - * Copyright (c) 2000-2005 The OpenSSL Project. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. All advertising materials mentioning features or use of this - * software must display the following acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" - * - * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * licensing@OpenSSL.org. - * - * 5. Products derived from this software may not be called "OpenSSL" - * nor may "OpenSSL" appear in their names without prior written - * permission of the OpenSSL Project. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" - * - * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY - * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * ==================================================================== - * - * This product includes cryptographic software written by Eric Young - * (eay@cryptsoft.com). This product includes software written by Tim - * Hudson (tjh@cryptsoft.com). - * - */ -#ifndef HEADER_ECDSA_H -# define HEADER_ECDSA_H - -# include - -# ifdef OPENSSL_NO_ECDSA -# error ECDSA is disabled. -# endif - -# include -# include -# ifndef OPENSSL_NO_DEPRECATED -# include -# endif - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct ECDSA_SIG_st { - BIGNUM *r; - BIGNUM *s; -} ECDSA_SIG; - -/** Allocates and initialize a ECDSA_SIG structure - * \return pointer to a ECDSA_SIG structure or NULL if an error occurred - */ -ECDSA_SIG *ECDSA_SIG_new(void); - -/** frees a ECDSA_SIG structure - * \param sig pointer to the ECDSA_SIG structure - */ -void ECDSA_SIG_free(ECDSA_SIG *sig); - -/** DER encode content of ECDSA_SIG object (note: this function modifies *pp - * (*pp += length of the DER encoded signature)). - * \param sig pointer to the ECDSA_SIG object - * \param pp pointer to a unsigned char pointer for the output or NULL - * \return the length of the DER encoded ECDSA_SIG object or 0 - */ -int i2d_ECDSA_SIG(const ECDSA_SIG *sig, unsigned char **pp); - -/** Decodes a DER encoded ECDSA signature (note: this function changes *pp - * (*pp += len)). - * \param sig pointer to ECDSA_SIG pointer (may be NULL) - * \param pp memory buffer with the DER encoded signature - * \param len length of the buffer - * \return pointer to the decoded ECDSA_SIG structure (or NULL) - */ -ECDSA_SIG *d2i_ECDSA_SIG(ECDSA_SIG **sig, const unsigned char **pp, long len); - -/** Computes the ECDSA signature of the given hash value using - * the supplied private key and returns the created signature. - * \param dgst pointer to the hash value - * \param dgst_len length of the hash value - * \param eckey EC_KEY object containing a private EC key - * \return pointer to a ECDSA_SIG structure or NULL if an error occurred - */ -ECDSA_SIG *ECDSA_do_sign(const unsigned char *dgst, int dgst_len, - EC_KEY *eckey); - -/** Computes ECDSA signature of a given hash value using the supplied - * private key (note: sig must point to ECDSA_size(eckey) bytes of memory). - * \param dgst pointer to the hash value to sign - * \param dgstlen length of the hash value - * \param kinv BIGNUM with a pre-computed inverse k (optional) - * \param rp BIGNUM with a pre-computed rp value (optioanl), - * see ECDSA_sign_setup - * \param eckey EC_KEY object containing a private EC key - * \return pointer to a ECDSA_SIG structure or NULL if an error occurred - */ -ECDSA_SIG *ECDSA_do_sign_ex(const unsigned char *dgst, int dgstlen, - const BIGNUM *kinv, const BIGNUM *rp, - EC_KEY *eckey); - -/** Verifies that the supplied signature is a valid ECDSA - * signature of the supplied hash value using the supplied public key. - * \param dgst pointer to the hash value - * \param dgst_len length of the hash value - * \param sig ECDSA_SIG structure - * \param eckey EC_KEY object containing a public EC key - * \return 1 if the signature is valid, 0 if the signature is invalid - * and -1 on error - */ -int ECDSA_do_verify(const unsigned char *dgst, int dgst_len, - const ECDSA_SIG *sig, EC_KEY *eckey); - -const ECDSA_METHOD *ECDSA_OpenSSL(void); - -/** Sets the default ECDSA method - * \param meth new default ECDSA_METHOD - */ -void ECDSA_set_default_method(const ECDSA_METHOD *meth); - -/** Returns the default ECDSA method - * \return pointer to ECDSA_METHOD structure containing the default method - */ -const ECDSA_METHOD *ECDSA_get_default_method(void); - -/** Sets method to be used for the ECDSA operations - * \param eckey EC_KEY object - * \param meth new method - * \return 1 on success and 0 otherwise - */ -int ECDSA_set_method(EC_KEY *eckey, const ECDSA_METHOD *meth); - -/** Returns the maximum length of the DER encoded signature - * \param eckey EC_KEY object - * \return numbers of bytes required for the DER encoded signature - */ -int ECDSA_size(const EC_KEY *eckey); - -/** Precompute parts of the signing operation - * \param eckey EC_KEY object containing a private EC key - * \param ctx BN_CTX object (optional) - * \param kinv BIGNUM pointer for the inverse of k - * \param rp BIGNUM pointer for x coordinate of k * generator - * \return 1 on success and 0 otherwise - */ -int ECDSA_sign_setup(EC_KEY *eckey, BN_CTX *ctx, BIGNUM **kinv, BIGNUM **rp); - -/** Computes ECDSA signature of a given hash value using the supplied - * private key (note: sig must point to ECDSA_size(eckey) bytes of memory). - * \param type this parameter is ignored - * \param dgst pointer to the hash value to sign - * \param dgstlen length of the hash value - * \param sig memory for the DER encoded created signature - * \param siglen pointer to the length of the returned signature - * \param eckey EC_KEY object containing a private EC key - * \return 1 on success and 0 otherwise - */ -int ECDSA_sign(int type, const unsigned char *dgst, int dgstlen, - unsigned char *sig, unsigned int *siglen, EC_KEY *eckey); - -/** Computes ECDSA signature of a given hash value using the supplied - * private key (note: sig must point to ECDSA_size(eckey) bytes of memory). - * \param type this parameter is ignored - * \param dgst pointer to the hash value to sign - * \param dgstlen length of the hash value - * \param sig buffer to hold the DER encoded signature - * \param siglen pointer to the length of the returned signature - * \param kinv BIGNUM with a pre-computed inverse k (optional) - * \param rp BIGNUM with a pre-computed rp value (optioanl), - * see ECDSA_sign_setup - * \param eckey EC_KEY object containing a private EC key - * \return 1 on success and 0 otherwise - */ -int ECDSA_sign_ex(int type, const unsigned char *dgst, int dgstlen, - unsigned char *sig, unsigned int *siglen, - const BIGNUM *kinv, const BIGNUM *rp, EC_KEY *eckey); - -/** Verifies that the given signature is valid ECDSA signature - * of the supplied hash value using the specified public key. - * \param type this parameter is ignored - * \param dgst pointer to the hash value - * \param dgstlen length of the hash value - * \param sig pointer to the DER encoded signature - * \param siglen length of the DER encoded signature - * \param eckey EC_KEY object containing a public EC key - * \return 1 if the signature is valid, 0 if the signature is invalid - * and -1 on error - */ -int ECDSA_verify(int type, const unsigned char *dgst, int dgstlen, - const unsigned char *sig, int siglen, EC_KEY *eckey); - -/* the standard ex_data functions */ -int ECDSA_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new - *new_func, CRYPTO_EX_dup *dup_func, - CRYPTO_EX_free *free_func); -int ECDSA_set_ex_data(EC_KEY *d, int idx, void *arg); -void *ECDSA_get_ex_data(EC_KEY *d, int idx); - -/** Allocates and initialize a ECDSA_METHOD structure - * \param ecdsa_method pointer to ECDSA_METHOD to copy. (May be NULL) - * \return pointer to a ECDSA_METHOD structure or NULL if an error occurred - */ - -ECDSA_METHOD *ECDSA_METHOD_new(ECDSA_METHOD *ecdsa_method); - -/** frees a ECDSA_METHOD structure - * \param ecdsa_method pointer to the ECDSA_METHOD structure - */ -void ECDSA_METHOD_free(ECDSA_METHOD *ecdsa_method); - -/** Sets application specific data in the ECDSA_METHOD - * \param ecdsa_method pointer to existing ECDSA_METHOD - * \param app application specific data to set - */ - -void ECDSA_METHOD_set_app_data(ECDSA_METHOD *ecdsa_method, void *app); - -/** Returns application specific data from a ECDSA_METHOD structure - * \param ecdsa_method pointer to ECDSA_METHOD structure - * \return pointer to application specific data. - */ - -void *ECDSA_METHOD_get_app_data(ECDSA_METHOD *ecdsa_method); - -/** Set the ECDSA_do_sign function in the ECDSA_METHOD - * \param ecdsa_method pointer to existing ECDSA_METHOD - * \param ecdsa_do_sign a funtion of type ECDSA_do_sign - */ - -void ECDSA_METHOD_set_sign(ECDSA_METHOD *ecdsa_method, - ECDSA_SIG *(*ecdsa_do_sign) (const unsigned char - *dgst, int dgst_len, - const BIGNUM *inv, - const BIGNUM *rp, - EC_KEY *eckey)); - -/** Set the ECDSA_sign_setup function in the ECDSA_METHOD - * \param ecdsa_method pointer to existing ECDSA_METHOD - * \param ecdsa_sign_setup a funtion of type ECDSA_sign_setup - */ - -void ECDSA_METHOD_set_sign_setup(ECDSA_METHOD *ecdsa_method, - int (*ecdsa_sign_setup) (EC_KEY *eckey, - BN_CTX *ctx, - BIGNUM **kinv, - BIGNUM **r)); - -/** Set the ECDSA_do_verify function in the ECDSA_METHOD - * \param ecdsa_method pointer to existing ECDSA_METHOD - * \param ecdsa_do_verify a funtion of type ECDSA_do_verify - */ - -void ECDSA_METHOD_set_verify(ECDSA_METHOD *ecdsa_method, - int (*ecdsa_do_verify) (const unsigned char - *dgst, int dgst_len, - const ECDSA_SIG *sig, - EC_KEY *eckey)); - -void ECDSA_METHOD_set_flags(ECDSA_METHOD *ecdsa_method, int flags); - -/** Set the flags field in the ECDSA_METHOD - * \param ecdsa_method pointer to existing ECDSA_METHOD - * \param flags flags value to set - */ - -void ECDSA_METHOD_set_name(ECDSA_METHOD *ecdsa_method, char *name); - -/** Set the name field in the ECDSA_METHOD - * \param ecdsa_method pointer to existing ECDSA_METHOD - * \param name name to set - */ - -/* BEGIN ERROR CODES */ -/* - * The following lines are auto generated by the script mkerr.pl. Any changes - * made after this point may be overwritten when the script is next run. - */ -void ERR_load_ECDSA_strings(void); - -/* Error codes for the ECDSA functions. */ - -/* Function codes. */ -# define ECDSA_F_ECDSA_CHECK 104 -# define ECDSA_F_ECDSA_DATA_NEW_METHOD 100 -# define ECDSA_F_ECDSA_DO_SIGN 101 -# define ECDSA_F_ECDSA_DO_VERIFY 102 -# define ECDSA_F_ECDSA_METHOD_NEW 105 -# define ECDSA_F_ECDSA_SIGN_SETUP 103 - -/* Reason codes. */ -# define ECDSA_R_BAD_SIGNATURE 100 -# define ECDSA_R_DATA_TOO_LARGE_FOR_KEY_SIZE 101 -# define ECDSA_R_ERR_EC_LIB 102 -# define ECDSA_R_MISSING_PARAMETERS 103 -# define ECDSA_R_NEED_NEW_SETUP_VALUES 106 -# define ECDSA_R_NON_FIPS_METHOD 107 -# define ECDSA_R_RANDOM_NUMBER_GENERATION_FAILED 104 -# define ECDSA_R_SIGNATURE_MALLOC_FAILED 105 - -#ifdef __cplusplus -} -#endif -#endif diff --git a/ext/openssl-win32/inc32/openssl/err.h b/ext/openssl-win32/inc32/openssl/err.h deleted file mode 100644 index 585aa8ba..00000000 --- a/ext/openssl-win32/inc32/openssl/err.h +++ /dev/null @@ -1,389 +0,0 @@ -/* crypto/err/err.h */ -/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) - * All rights reserved. - * - * This package is an SSL implementation written - * by Eric Young (eay@cryptsoft.com). - * The implementation was written so as to conform with Netscapes SSL. - * - * This library is free for commercial and non-commercial use as long as - * the following conditions are aheared to. The following conditions - * apply to all code found in this distribution, be it the RC4, RSA, - * lhash, DES, etc., code; not just the SSL code. The SSL documentation - * included with this distribution is covered by the same copyright terms - * except that the holder is Tim Hudson (tjh@cryptsoft.com). - * - * Copyright remains Eric Young's, and as such any Copyright notices in - * the code are not to be removed. - * If this package is used in a product, Eric Young should be given attribution - * as the author of the parts of the library used. - * This can be in the form of a textual message at program startup or - * in documentation (online or textual) provided with the package. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * "This product includes cryptographic software written by - * Eric Young (eay@cryptsoft.com)" - * The word 'cryptographic' can be left out if the rouines from the library - * being used are not cryptographic related :-). - * 4. If you include any Windows specific code (or a derivative thereof) from - * the apps directory (application code) you must include an acknowledgement: - * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" - * - * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * The licence and distribution terms for any publically available version or - * derivative of this code cannot be changed. i.e. this code cannot simply be - * copied and put under another distribution licence - * [including the GNU Public Licence.] - */ -/* ==================================================================== - * Copyright (c) 1998-2006 The OpenSSL Project. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. All advertising materials mentioning features or use of this - * software must display the following acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" - * - * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * openssl-core@openssl.org. - * - * 5. Products derived from this software may not be called "OpenSSL" - * nor may "OpenSSL" appear in their names without prior written - * permission of the OpenSSL Project. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit (http://www.openssl.org/)" - * - * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY - * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * ==================================================================== - * - * This product includes cryptographic software written by Eric Young - * (eay@cryptsoft.com). This product includes software written by Tim - * Hudson (tjh@cryptsoft.com). - * - */ - -#ifndef HEADER_ERR_H -# define HEADER_ERR_H - -# include - -# ifndef OPENSSL_NO_FP_API -# include -# include -# endif - -# include -# ifndef OPENSSL_NO_BIO -# include -# endif -# ifndef OPENSSL_NO_LHASH -# include -# endif - -#ifdef __cplusplus -extern "C" { -#endif - -# ifndef OPENSSL_NO_ERR -# define ERR_PUT_error(a,b,c,d,e) ERR_put_error(a,b,c,d,e) -# else -# define ERR_PUT_error(a,b,c,d,e) ERR_put_error(a,b,c,NULL,0) -# endif - -# include - -# define ERR_TXT_MALLOCED 0x01 -# define ERR_TXT_STRING 0x02 - -# define ERR_FLAG_MARK 0x01 - -# define ERR_NUM_ERRORS 16 -typedef struct err_state_st { - CRYPTO_THREADID tid; - int err_flags[ERR_NUM_ERRORS]; - unsigned long err_buffer[ERR_NUM_ERRORS]; - char *err_data[ERR_NUM_ERRORS]; - int err_data_flags[ERR_NUM_ERRORS]; - const char *err_file[ERR_NUM_ERRORS]; - int err_line[ERR_NUM_ERRORS]; - int top, bottom; -} ERR_STATE; - -/* library */ -# define ERR_LIB_NONE 1 -# define ERR_LIB_SYS 2 -# define ERR_LIB_BN 3 -# define ERR_LIB_RSA 4 -# define ERR_LIB_DH 5 -# define ERR_LIB_EVP 6 -# define ERR_LIB_BUF 7 -# define ERR_LIB_OBJ 8 -# define ERR_LIB_PEM 9 -# define ERR_LIB_DSA 10 -# define ERR_LIB_X509 11 -/* #define ERR_LIB_METH 12 */ -# define ERR_LIB_ASN1 13 -# define ERR_LIB_CONF 14 -# define ERR_LIB_CRYPTO 15 -# define ERR_LIB_EC 16 -# define ERR_LIB_SSL 20 -/* #define ERR_LIB_SSL23 21 */ -/* #define ERR_LIB_SSL2 22 */ -/* #define ERR_LIB_SSL3 23 */ -/* #define ERR_LIB_RSAREF 30 */ -/* #define ERR_LIB_PROXY 31 */ -# define ERR_LIB_BIO 32 -# define ERR_LIB_PKCS7 33 -# define ERR_LIB_X509V3 34 -# define ERR_LIB_PKCS12 35 -# define ERR_LIB_RAND 36 -# define ERR_LIB_DSO 37 -# define ERR_LIB_ENGINE 38 -# define ERR_LIB_OCSP 39 -# define ERR_LIB_UI 40 -# define ERR_LIB_COMP 41 -# define ERR_LIB_ECDSA 42 -# define ERR_LIB_ECDH 43 -# define ERR_LIB_STORE 44 -# define ERR_LIB_FIPS 45 -# define ERR_LIB_CMS 46 -# define ERR_LIB_TS 47 -# define ERR_LIB_HMAC 48 -# define ERR_LIB_JPAKE 49 - -# define ERR_LIB_USER 128 - -# define SYSerr(f,r) ERR_PUT_error(ERR_LIB_SYS,(f),(r),__FILE__,__LINE__) -# define BNerr(f,r) ERR_PUT_error(ERR_LIB_BN,(f),(r),__FILE__,__LINE__) -# define RSAerr(f,r) ERR_PUT_error(ERR_LIB_RSA,(f),(r),__FILE__,__LINE__) -# define DHerr(f,r) ERR_PUT_error(ERR_LIB_DH,(f),(r),__FILE__,__LINE__) -# define EVPerr(f,r) ERR_PUT_error(ERR_LIB_EVP,(f),(r),__FILE__,__LINE__) -# define BUFerr(f,r) ERR_PUT_error(ERR_LIB_BUF,(f),(r),__FILE__,__LINE__) -# define OBJerr(f,r) ERR_PUT_error(ERR_LIB_OBJ,(f),(r),__FILE__,__LINE__) -# define PEMerr(f,r) ERR_PUT_error(ERR_LIB_PEM,(f),(r),__FILE__,__LINE__) -# define DSAerr(f,r) ERR_PUT_error(ERR_LIB_DSA,(f),(r),__FILE__,__LINE__) -# define X509err(f,r) ERR_PUT_error(ERR_LIB_X509,(f),(r),__FILE__,__LINE__) -# define ASN1err(f,r) ERR_PUT_error(ERR_LIB_ASN1,(f),(r),__FILE__,__LINE__) -# define CONFerr(f,r) ERR_PUT_error(ERR_LIB_CONF,(f),(r),__FILE__,__LINE__) -# define CRYPTOerr(f,r) ERR_PUT_error(ERR_LIB_CRYPTO,(f),(r),__FILE__,__LINE__) -# define ECerr(f,r) ERR_PUT_error(ERR_LIB_EC,(f),(r),__FILE__,__LINE__) -# define SSLerr(f,r) ERR_PUT_error(ERR_LIB_SSL,(f),(r),__FILE__,__LINE__) -# define BIOerr(f,r) ERR_PUT_error(ERR_LIB_BIO,(f),(r),__FILE__,__LINE__) -# define PKCS7err(f,r) ERR_PUT_error(ERR_LIB_PKCS7,(f),(r),__FILE__,__LINE__) -# define X509V3err(f,r) ERR_PUT_error(ERR_LIB_X509V3,(f),(r),__FILE__,__LINE__) -# define PKCS12err(f,r) ERR_PUT_error(ERR_LIB_PKCS12,(f),(r),__FILE__,__LINE__) -# define RANDerr(f,r) ERR_PUT_error(ERR_LIB_RAND,(f),(r),__FILE__,__LINE__) -# define DSOerr(f,r) ERR_PUT_error(ERR_LIB_DSO,(f),(r),__FILE__,__LINE__) -# define ENGINEerr(f,r) ERR_PUT_error(ERR_LIB_ENGINE,(f),(r),__FILE__,__LINE__) -# define OCSPerr(f,r) ERR_PUT_error(ERR_LIB_OCSP,(f),(r),__FILE__,__LINE__) -# define UIerr(f,r) ERR_PUT_error(ERR_LIB_UI,(f),(r),__FILE__,__LINE__) -# define COMPerr(f,r) ERR_PUT_error(ERR_LIB_COMP,(f),(r),__FILE__,__LINE__) -# define ECDSAerr(f,r) ERR_PUT_error(ERR_LIB_ECDSA,(f),(r),__FILE__,__LINE__) -# define ECDHerr(f,r) ERR_PUT_error(ERR_LIB_ECDH,(f),(r),__FILE__,__LINE__) -# define STOREerr(f,r) ERR_PUT_error(ERR_LIB_STORE,(f),(r),__FILE__,__LINE__) -# define FIPSerr(f,r) ERR_PUT_error(ERR_LIB_FIPS,(f),(r),__FILE__,__LINE__) -# define CMSerr(f,r) ERR_PUT_error(ERR_LIB_CMS,(f),(r),__FILE__,__LINE__) -# define TSerr(f,r) ERR_PUT_error(ERR_LIB_TS,(f),(r),__FILE__,__LINE__) -# define HMACerr(f,r) ERR_PUT_error(ERR_LIB_HMAC,(f),(r),__FILE__,__LINE__) -# define JPAKEerr(f,r) ERR_PUT_error(ERR_LIB_JPAKE,(f),(r),__FILE__,__LINE__) - -/* - * Borland C seems too stupid to be able to shift and do longs in the - * pre-processor :-( - */ -# define ERR_PACK(l,f,r) (((((unsigned long)l)&0xffL)*0x1000000)| \ - ((((unsigned long)f)&0xfffL)*0x1000)| \ - ((((unsigned long)r)&0xfffL))) -# define ERR_GET_LIB(l) (int)((((unsigned long)l)>>24L)&0xffL) -# define ERR_GET_FUNC(l) (int)((((unsigned long)l)>>12L)&0xfffL) -# define ERR_GET_REASON(l) (int)((l)&0xfffL) -# define ERR_FATAL_ERROR(l) (int)((l)&ERR_R_FATAL) - -/* OS functions */ -# define SYS_F_FOPEN 1 -# define SYS_F_CONNECT 2 -# define SYS_F_GETSERVBYNAME 3 -# define SYS_F_SOCKET 4 -# define SYS_F_IOCTLSOCKET 5 -# define SYS_F_BIND 6 -# define SYS_F_LISTEN 7 -# define SYS_F_ACCEPT 8 -# define SYS_F_WSASTARTUP 9/* Winsock stuff */ -# define SYS_F_OPENDIR 10 -# define SYS_F_FREAD 11 - -/* reasons */ -# define ERR_R_SYS_LIB ERR_LIB_SYS/* 2 */ -# define ERR_R_BN_LIB ERR_LIB_BN/* 3 */ -# define ERR_R_RSA_LIB ERR_LIB_RSA/* 4 */ -# define ERR_R_DH_LIB ERR_LIB_DH/* 5 */ -# define ERR_R_EVP_LIB ERR_LIB_EVP/* 6 */ -# define ERR_R_BUF_LIB ERR_LIB_BUF/* 7 */ -# define ERR_R_OBJ_LIB ERR_LIB_OBJ/* 8 */ -# define ERR_R_PEM_LIB ERR_LIB_PEM/* 9 */ -# define ERR_R_DSA_LIB ERR_LIB_DSA/* 10 */ -# define ERR_R_X509_LIB ERR_LIB_X509/* 11 */ -# define ERR_R_ASN1_LIB ERR_LIB_ASN1/* 13 */ -# define ERR_R_CONF_LIB ERR_LIB_CONF/* 14 */ -# define ERR_R_CRYPTO_LIB ERR_LIB_CRYPTO/* 15 */ -# define ERR_R_EC_LIB ERR_LIB_EC/* 16 */ -# define ERR_R_SSL_LIB ERR_LIB_SSL/* 20 */ -# define ERR_R_BIO_LIB ERR_LIB_BIO/* 32 */ -# define ERR_R_PKCS7_LIB ERR_LIB_PKCS7/* 33 */ -# define ERR_R_X509V3_LIB ERR_LIB_X509V3/* 34 */ -# define ERR_R_PKCS12_LIB ERR_LIB_PKCS12/* 35 */ -# define ERR_R_RAND_LIB ERR_LIB_RAND/* 36 */ -# define ERR_R_DSO_LIB ERR_LIB_DSO/* 37 */ -# define ERR_R_ENGINE_LIB ERR_LIB_ENGINE/* 38 */ -# define ERR_R_OCSP_LIB ERR_LIB_OCSP/* 39 */ -# define ERR_R_UI_LIB ERR_LIB_UI/* 40 */ -# define ERR_R_COMP_LIB ERR_LIB_COMP/* 41 */ -# define ERR_R_ECDSA_LIB ERR_LIB_ECDSA/* 42 */ -# define ERR_R_ECDH_LIB ERR_LIB_ECDH/* 43 */ -# define ERR_R_STORE_LIB ERR_LIB_STORE/* 44 */ -# define ERR_R_TS_LIB ERR_LIB_TS/* 45 */ - -# define ERR_R_NESTED_ASN1_ERROR 58 -# define ERR_R_BAD_ASN1_OBJECT_HEADER 59 -# define ERR_R_BAD_GET_ASN1_OBJECT_CALL 60 -# define ERR_R_EXPECTING_AN_ASN1_SEQUENCE 61 -# define ERR_R_ASN1_LENGTH_MISMATCH 62 -# define ERR_R_MISSING_ASN1_EOS 63 - -/* fatal error */ -# define ERR_R_FATAL 64 -# define ERR_R_MALLOC_FAILURE (1|ERR_R_FATAL) -# define ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED (2|ERR_R_FATAL) -# define ERR_R_PASSED_NULL_PARAMETER (3|ERR_R_FATAL) -# define ERR_R_INTERNAL_ERROR (4|ERR_R_FATAL) -# define ERR_R_DISABLED (5|ERR_R_FATAL) - -/* - * 99 is the maximum possible ERR_R_... code, higher values are reserved for - * the individual libraries - */ - -typedef struct ERR_string_data_st { - unsigned long error; - const char *string; -} ERR_STRING_DATA; - -void ERR_put_error(int lib, int func, int reason, const char *file, int line); -void ERR_set_error_data(char *data, int flags); - -unsigned long ERR_get_error(void); -unsigned long ERR_get_error_line(const char **file, int *line); -unsigned long ERR_get_error_line_data(const char **file, int *line, - const char **data, int *flags); -unsigned long ERR_peek_error(void); -unsigned long ERR_peek_error_line(const char **file, int *line); -unsigned long ERR_peek_error_line_data(const char **file, int *line, - const char **data, int *flags); -unsigned long ERR_peek_last_error(void); -unsigned long ERR_peek_last_error_line(const char **file, int *line); -unsigned long ERR_peek_last_error_line_data(const char **file, int *line, - const char **data, int *flags); -void ERR_clear_error(void); -char *ERR_error_string(unsigned long e, char *buf); -void ERR_error_string_n(unsigned long e, char *buf, size_t len); -const char *ERR_lib_error_string(unsigned long e); -const char *ERR_func_error_string(unsigned long e); -const char *ERR_reason_error_string(unsigned long e); -void ERR_print_errors_cb(int (*cb) (const char *str, size_t len, void *u), - void *u); -# ifndef OPENSSL_NO_FP_API -void ERR_print_errors_fp(FILE *fp); -# endif -# ifndef OPENSSL_NO_BIO -void ERR_print_errors(BIO *bp); -# endif -void ERR_add_error_data(int num, ...); -void ERR_add_error_vdata(int num, va_list args); -void ERR_load_strings(int lib, ERR_STRING_DATA str[]); -void ERR_unload_strings(int lib, ERR_STRING_DATA str[]); -void ERR_load_ERR_strings(void); -void ERR_load_crypto_strings(void); -void ERR_free_strings(void); - -void ERR_remove_thread_state(const CRYPTO_THREADID *tid); -# ifndef OPENSSL_NO_DEPRECATED -void ERR_remove_state(unsigned long pid); /* if zero we look it up */ -# endif -ERR_STATE *ERR_get_state(void); - -# ifndef OPENSSL_NO_LHASH -LHASH_OF(ERR_STRING_DATA) *ERR_get_string_table(void); -LHASH_OF(ERR_STATE) *ERR_get_err_state_table(void); -void ERR_release_err_state_table(LHASH_OF(ERR_STATE) **hash); -# endif - -int ERR_get_next_error_library(void); - -int ERR_set_mark(void); -int ERR_pop_to_mark(void); - -/* Already defined in ossl_typ.h */ -/* typedef struct st_ERR_FNS ERR_FNS; */ -/* - * An application can use this function and provide the return value to - * loaded modules that should use the application's ERR state/functionality - */ -const ERR_FNS *ERR_get_implementation(void); -/* - * A loaded module should call this function prior to any ERR operations - * using the application's "ERR_FNS". - */ -int ERR_set_implementation(const ERR_FNS *fns); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/ext/openssl-win32/inc32/openssl/evp.h b/ext/openssl-win32/inc32/openssl/evp.h deleted file mode 100644 index 47abbac4..00000000 --- a/ext/openssl-win32/inc32/openssl/evp.h +++ /dev/null @@ -1,1519 +0,0 @@ -/* crypto/evp/evp.h */ -/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) - * All rights reserved. - * - * This package is an SSL implementation written - * by Eric Young (eay@cryptsoft.com). - * The implementation was written so as to conform with Netscapes SSL. - * - * This library is free for commercial and non-commercial use as long as - * the following conditions are aheared to. The following conditions - * apply to all code found in this distribution, be it the RC4, RSA, - * lhash, DES, etc., code; not just the SSL code. The SSL documentation - * included with this distribution is covered by the same copyright terms - * except that the holder is Tim Hudson (tjh@cryptsoft.com). - * - * Copyright remains Eric Young's, and as such any Copyright notices in - * the code are not to be removed. - * If this package is used in a product, Eric Young should be given attribution - * as the author of the parts of the library used. - * This can be in the form of a textual message at program startup or - * in documentation (online or textual) provided with the package. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * "This product includes cryptographic software written by - * Eric Young (eay@cryptsoft.com)" - * The word 'cryptographic' can be left out if the rouines from the library - * being used are not cryptographic related :-). - * 4. If you include any Windows specific code (or a derivative thereof) from - * the apps directory (application code) you must include an acknowledgement: - * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" - * - * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * The licence and distribution terms for any publically available version or - * derivative of this code cannot be changed. i.e. this code cannot simply be - * copied and put under another distribution licence - * [including the GNU Public Licence.] - */ - -#ifndef HEADER_ENVELOPE_H -# define HEADER_ENVELOPE_H - -# ifdef OPENSSL_ALGORITHM_DEFINES -# include -# else -# define OPENSSL_ALGORITHM_DEFINES -# include -# undef OPENSSL_ALGORITHM_DEFINES -# endif - -# include - -# include - -# ifndef OPENSSL_NO_BIO -# include -# endif - -/*- -#define EVP_RC2_KEY_SIZE 16 -#define EVP_RC4_KEY_SIZE 16 -#define EVP_BLOWFISH_KEY_SIZE 16 -#define EVP_CAST5_KEY_SIZE 16 -#define EVP_RC5_32_12_16_KEY_SIZE 16 -*/ -# define EVP_MAX_MD_SIZE 64/* longest known is SHA512 */ -# define EVP_MAX_KEY_LENGTH 64 -# define EVP_MAX_IV_LENGTH 16 -# define EVP_MAX_BLOCK_LENGTH 32 - -# define PKCS5_SALT_LEN 8 -/* Default PKCS#5 iteration count */ -# define PKCS5_DEFAULT_ITER 2048 - -# include - -# define EVP_PK_RSA 0x0001 -# define EVP_PK_DSA 0x0002 -# define EVP_PK_DH 0x0004 -# define EVP_PK_EC 0x0008 -# define EVP_PKT_SIGN 0x0010 -# define EVP_PKT_ENC 0x0020 -# define EVP_PKT_EXCH 0x0040 -# define EVP_PKS_RSA 0x0100 -# define EVP_PKS_DSA 0x0200 -# define EVP_PKS_EC 0x0400 -# define EVP_PKT_EXP 0x1000 /* <= 512 bit key */ - -# define EVP_PKEY_NONE NID_undef -# define EVP_PKEY_RSA NID_rsaEncryption -# define EVP_PKEY_RSA2 NID_rsa -# define EVP_PKEY_DSA NID_dsa -# define EVP_PKEY_DSA1 NID_dsa_2 -# define EVP_PKEY_DSA2 NID_dsaWithSHA -# define EVP_PKEY_DSA3 NID_dsaWithSHA1 -# define EVP_PKEY_DSA4 NID_dsaWithSHA1_2 -# define EVP_PKEY_DH NID_dhKeyAgreement -# define EVP_PKEY_DHX NID_dhpublicnumber -# define EVP_PKEY_EC NID_X9_62_id_ecPublicKey -# define EVP_PKEY_HMAC NID_hmac -# define EVP_PKEY_CMAC NID_cmac - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * Type needs to be a bit field Sub-type needs to be for variations on the - * method, as in, can it do arbitrary encryption.... - */ -struct evp_pkey_st { - int type; - int save_type; - int references; - const EVP_PKEY_ASN1_METHOD *ameth; - ENGINE *engine; - union { - char *ptr; -# ifndef OPENSSL_NO_RSA - struct rsa_st *rsa; /* RSA */ -# endif -# ifndef OPENSSL_NO_DSA - struct dsa_st *dsa; /* DSA */ -# endif -# ifndef OPENSSL_NO_DH - struct dh_st *dh; /* DH */ -# endif -# ifndef OPENSSL_NO_EC - struct ec_key_st *ec; /* ECC */ -# endif - } pkey; - int save_parameters; - STACK_OF(X509_ATTRIBUTE) *attributes; /* [ 0 ] */ -} /* EVP_PKEY */ ; - -# define EVP_PKEY_MO_SIGN 0x0001 -# define EVP_PKEY_MO_VERIFY 0x0002 -# define EVP_PKEY_MO_ENCRYPT 0x0004 -# define EVP_PKEY_MO_DECRYPT 0x0008 - -# ifndef EVP_MD -struct env_md_st { - int type; - int pkey_type; - int md_size; - unsigned long flags; - int (*init) (EVP_MD_CTX *ctx); - int (*update) (EVP_MD_CTX *ctx, const void *data, size_t count); - int (*final) (EVP_MD_CTX *ctx, unsigned char *md); - int (*copy) (EVP_MD_CTX *to, const EVP_MD_CTX *from); - int (*cleanup) (EVP_MD_CTX *ctx); - /* FIXME: prototype these some day */ - int (*sign) (int type, const unsigned char *m, unsigned int m_length, - unsigned char *sigret, unsigned int *siglen, void *key); - int (*verify) (int type, const unsigned char *m, unsigned int m_length, - const unsigned char *sigbuf, unsigned int siglen, - void *key); - int required_pkey_type[5]; /* EVP_PKEY_xxx */ - int block_size; - int ctx_size; /* how big does the ctx->md_data need to be */ - /* control function */ - int (*md_ctrl) (EVP_MD_CTX *ctx, int cmd, int p1, void *p2); -} /* EVP_MD */ ; - -typedef int evp_sign_method(int type, const unsigned char *m, - unsigned int m_length, unsigned char *sigret, - unsigned int *siglen, void *key); -typedef int evp_verify_method(int type, const unsigned char *m, - unsigned int m_length, - const unsigned char *sigbuf, - unsigned int siglen, void *key); - -/* digest can only handle a single block */ -# define EVP_MD_FLAG_ONESHOT 0x0001 - -/* - * digest is a "clone" digest used - * which is a copy of an existing - * one for a specific public key type. - * EVP_dss1() etc - */ -# define EVP_MD_FLAG_PKEY_DIGEST 0x0002 - -/* Digest uses EVP_PKEY_METHOD for signing instead of MD specific signing */ - -# define EVP_MD_FLAG_PKEY_METHOD_SIGNATURE 0x0004 - -/* DigestAlgorithmIdentifier flags... */ - -# define EVP_MD_FLAG_DIGALGID_MASK 0x0018 - -/* NULL or absent parameter accepted. Use NULL */ - -# define EVP_MD_FLAG_DIGALGID_NULL 0x0000 - -/* NULL or absent parameter accepted. Use NULL for PKCS#1 otherwise absent */ - -# define EVP_MD_FLAG_DIGALGID_ABSENT 0x0008 - -/* Custom handling via ctrl */ - -# define EVP_MD_FLAG_DIGALGID_CUSTOM 0x0018 - -/* Note if suitable for use in FIPS mode */ -# define EVP_MD_FLAG_FIPS 0x0400 - -/* Digest ctrls */ - -# define EVP_MD_CTRL_DIGALGID 0x1 -# define EVP_MD_CTRL_MICALG 0x2 - -/* Minimum Algorithm specific ctrl value */ - -# define EVP_MD_CTRL_ALG_CTRL 0x1000 - -# define EVP_PKEY_NULL_method NULL,NULL,{0,0,0,0} - -# ifndef OPENSSL_NO_DSA -# define EVP_PKEY_DSA_method (evp_sign_method *)DSA_sign, \ - (evp_verify_method *)DSA_verify, \ - {EVP_PKEY_DSA,EVP_PKEY_DSA2,EVP_PKEY_DSA3, \ - EVP_PKEY_DSA4,0} -# else -# define EVP_PKEY_DSA_method EVP_PKEY_NULL_method -# endif - -# ifndef OPENSSL_NO_ECDSA -# define EVP_PKEY_ECDSA_method (evp_sign_method *)ECDSA_sign, \ - (evp_verify_method *)ECDSA_verify, \ - {EVP_PKEY_EC,0,0,0} -# else -# define EVP_PKEY_ECDSA_method EVP_PKEY_NULL_method -# endif - -# ifndef OPENSSL_NO_RSA -# define EVP_PKEY_RSA_method (evp_sign_method *)RSA_sign, \ - (evp_verify_method *)RSA_verify, \ - {EVP_PKEY_RSA,EVP_PKEY_RSA2,0,0} -# define EVP_PKEY_RSA_ASN1_OCTET_STRING_method \ - (evp_sign_method *)RSA_sign_ASN1_OCTET_STRING, \ - (evp_verify_method *)RSA_verify_ASN1_OCTET_STRING, \ - {EVP_PKEY_RSA,EVP_PKEY_RSA2,0,0} -# else -# define EVP_PKEY_RSA_method EVP_PKEY_NULL_method -# define EVP_PKEY_RSA_ASN1_OCTET_STRING_method EVP_PKEY_NULL_method -# endif - -# endif /* !EVP_MD */ - -struct env_md_ctx_st { - const EVP_MD *digest; - ENGINE *engine; /* functional reference if 'digest' is - * ENGINE-provided */ - unsigned long flags; - void *md_data; - /* Public key context for sign/verify */ - EVP_PKEY_CTX *pctx; - /* Update function: usually copied from EVP_MD */ - int (*update) (EVP_MD_CTX *ctx, const void *data, size_t count); -} /* EVP_MD_CTX */ ; - -/* values for EVP_MD_CTX flags */ - -# define EVP_MD_CTX_FLAG_ONESHOT 0x0001/* digest update will be - * called once only */ -# define EVP_MD_CTX_FLAG_CLEANED 0x0002/* context has already been - * cleaned */ -# define EVP_MD_CTX_FLAG_REUSE 0x0004/* Don't free up ctx->md_data - * in EVP_MD_CTX_cleanup */ -/* - * FIPS and pad options are ignored in 1.0.0, definitions are here so we - * don't accidentally reuse the values for other purposes. - */ - -# define EVP_MD_CTX_FLAG_NON_FIPS_ALLOW 0x0008/* Allow use of non FIPS - * digest in FIPS mode */ - -/* - * The following PAD options are also currently ignored in 1.0.0, digest - * parameters are handled through EVP_DigestSign*() and EVP_DigestVerify*() - * instead. - */ -# define EVP_MD_CTX_FLAG_PAD_MASK 0xF0/* RSA mode to use */ -# define EVP_MD_CTX_FLAG_PAD_PKCS1 0x00/* PKCS#1 v1.5 mode */ -# define EVP_MD_CTX_FLAG_PAD_X931 0x10/* X9.31 mode */ -# define EVP_MD_CTX_FLAG_PAD_PSS 0x20/* PSS mode */ - -# define EVP_MD_CTX_FLAG_NO_INIT 0x0100/* Don't initialize md_data */ - -struct evp_cipher_st { - int nid; - int block_size; - /* Default value for variable length ciphers */ - int key_len; - int iv_len; - /* Various flags */ - unsigned long flags; - /* init key */ - int (*init) (EVP_CIPHER_CTX *ctx, const unsigned char *key, - const unsigned char *iv, int enc); - /* encrypt/decrypt data */ - int (*do_cipher) (EVP_CIPHER_CTX *ctx, unsigned char *out, - const unsigned char *in, size_t inl); - /* cleanup ctx */ - int (*cleanup) (EVP_CIPHER_CTX *); - /* how big ctx->cipher_data needs to be */ - int ctx_size; - /* Populate a ASN1_TYPE with parameters */ - int (*set_asn1_parameters) (EVP_CIPHER_CTX *, ASN1_TYPE *); - /* Get parameters from a ASN1_TYPE */ - int (*get_asn1_parameters) (EVP_CIPHER_CTX *, ASN1_TYPE *); - /* Miscellaneous operations */ - int (*ctrl) (EVP_CIPHER_CTX *, int type, int arg, void *ptr); - /* Application data */ - void *app_data; -} /* EVP_CIPHER */ ; - -/* Values for cipher flags */ - -/* Modes for ciphers */ - -# define EVP_CIPH_STREAM_CIPHER 0x0 -# define EVP_CIPH_ECB_MODE 0x1 -# define EVP_CIPH_CBC_MODE 0x2 -# define EVP_CIPH_CFB_MODE 0x3 -# define EVP_CIPH_OFB_MODE 0x4 -# define EVP_CIPH_CTR_MODE 0x5 -# define EVP_CIPH_GCM_MODE 0x6 -# define EVP_CIPH_CCM_MODE 0x7 -# define EVP_CIPH_XTS_MODE 0x10001 -# define EVP_CIPH_WRAP_MODE 0x10002 -# define EVP_CIPH_MODE 0xF0007 -/* Set if variable length cipher */ -# define EVP_CIPH_VARIABLE_LENGTH 0x8 -/* Set if the iv handling should be done by the cipher itself */ -# define EVP_CIPH_CUSTOM_IV 0x10 -/* Set if the cipher's init() function should be called if key is NULL */ -# define EVP_CIPH_ALWAYS_CALL_INIT 0x20 -/* Call ctrl() to init cipher parameters */ -# define EVP_CIPH_CTRL_INIT 0x40 -/* Don't use standard key length function */ -# define EVP_CIPH_CUSTOM_KEY_LENGTH 0x80 -/* Don't use standard block padding */ -# define EVP_CIPH_NO_PADDING 0x100 -/* cipher handles random key generation */ -# define EVP_CIPH_RAND_KEY 0x200 -/* cipher has its own additional copying logic */ -# define EVP_CIPH_CUSTOM_COPY 0x400 -/* Allow use default ASN1 get/set iv */ -# define EVP_CIPH_FLAG_DEFAULT_ASN1 0x1000 -/* Buffer length in bits not bytes: CFB1 mode only */ -# define EVP_CIPH_FLAG_LENGTH_BITS 0x2000 -/* Note if suitable for use in FIPS mode */ -# define EVP_CIPH_FLAG_FIPS 0x4000 -/* Allow non FIPS cipher in FIPS mode */ -# define EVP_CIPH_FLAG_NON_FIPS_ALLOW 0x8000 -/* - * Cipher handles any and all padding logic as well as finalisation. - */ -# define EVP_CIPH_FLAG_CUSTOM_CIPHER 0x100000 -# define EVP_CIPH_FLAG_AEAD_CIPHER 0x200000 -# define EVP_CIPH_FLAG_TLS1_1_MULTIBLOCK 0x400000 - -/* - * Cipher context flag to indicate we can handle wrap mode: if allowed in - * older applications it could overflow buffers. - */ - -# define EVP_CIPHER_CTX_FLAG_WRAP_ALLOW 0x1 - -/* ctrl() values */ - -# define EVP_CTRL_INIT 0x0 -# define EVP_CTRL_SET_KEY_LENGTH 0x1 -# define EVP_CTRL_GET_RC2_KEY_BITS 0x2 -# define EVP_CTRL_SET_RC2_KEY_BITS 0x3 -# define EVP_CTRL_GET_RC5_ROUNDS 0x4 -# define EVP_CTRL_SET_RC5_ROUNDS 0x5 -# define EVP_CTRL_RAND_KEY 0x6 -# define EVP_CTRL_PBE_PRF_NID 0x7 -# define EVP_CTRL_COPY 0x8 -# define EVP_CTRL_GCM_SET_IVLEN 0x9 -# define EVP_CTRL_GCM_GET_TAG 0x10 -# define EVP_CTRL_GCM_SET_TAG 0x11 -# define EVP_CTRL_GCM_SET_IV_FIXED 0x12 -# define EVP_CTRL_GCM_IV_GEN 0x13 -# define EVP_CTRL_CCM_SET_IVLEN EVP_CTRL_GCM_SET_IVLEN -# define EVP_CTRL_CCM_GET_TAG EVP_CTRL_GCM_GET_TAG -# define EVP_CTRL_CCM_SET_TAG EVP_CTRL_GCM_SET_TAG -# define EVP_CTRL_CCM_SET_L 0x14 -# define EVP_CTRL_CCM_SET_MSGLEN 0x15 -/* - * AEAD cipher deduces payload length and returns number of bytes required to - * store MAC and eventual padding. Subsequent call to EVP_Cipher even - * appends/verifies MAC. - */ -# define EVP_CTRL_AEAD_TLS1_AAD 0x16 -/* Used by composite AEAD ciphers, no-op in GCM, CCM... */ -# define EVP_CTRL_AEAD_SET_MAC_KEY 0x17 -/* Set the GCM invocation field, decrypt only */ -# define EVP_CTRL_GCM_SET_IV_INV 0x18 - -# define EVP_CTRL_TLS1_1_MULTIBLOCK_AAD 0x19 -# define EVP_CTRL_TLS1_1_MULTIBLOCK_ENCRYPT 0x1a -# define EVP_CTRL_TLS1_1_MULTIBLOCK_DECRYPT 0x1b -# define EVP_CTRL_TLS1_1_MULTIBLOCK_MAX_BUFSIZE 0x1c - -typedef struct { - unsigned char *out; - const unsigned char *inp; - size_t len; - unsigned int interleave; -} EVP_CTRL_TLS1_1_MULTIBLOCK_PARAM; - -/* GCM TLS constants */ -/* Length of fixed part of IV derived from PRF */ -# define EVP_GCM_TLS_FIXED_IV_LEN 4 -/* Length of explicit part of IV part of TLS records */ -# define EVP_GCM_TLS_EXPLICIT_IV_LEN 8 -/* Length of tag for TLS */ -# define EVP_GCM_TLS_TAG_LEN 16 - -typedef struct evp_cipher_info_st { - const EVP_CIPHER *cipher; - unsigned char iv[EVP_MAX_IV_LENGTH]; -} EVP_CIPHER_INFO; - -struct evp_cipher_ctx_st { - const EVP_CIPHER *cipher; - ENGINE *engine; /* functional reference if 'cipher' is - * ENGINE-provided */ - int encrypt; /* encrypt or decrypt */ - int buf_len; /* number we have left */ - unsigned char oiv[EVP_MAX_IV_LENGTH]; /* original iv */ - unsigned char iv[EVP_MAX_IV_LENGTH]; /* working iv */ - unsigned char buf[EVP_MAX_BLOCK_LENGTH]; /* saved partial block */ - int num; /* used by cfb/ofb/ctr mode */ - void *app_data; /* application stuff */ - int key_len; /* May change for variable length cipher */ - unsigned long flags; /* Various flags */ - void *cipher_data; /* per EVP data */ - int final_used; - int block_mask; - unsigned char final[EVP_MAX_BLOCK_LENGTH]; /* possible final block */ -} /* EVP_CIPHER_CTX */ ; - -typedef struct evp_Encode_Ctx_st { - /* number saved in a partial encode/decode */ - int num; - /* - * The length is either the output line length (in input bytes) or the - * shortest input line length that is ok. Once decoding begins, the - * length is adjusted up each time a longer line is decoded - */ - int length; - /* data to encode */ - unsigned char enc_data[80]; - /* number read on current line */ - int line_num; - int expect_nl; -} EVP_ENCODE_CTX; - -/* Password based encryption function */ -typedef int (EVP_PBE_KEYGEN) (EVP_CIPHER_CTX *ctx, const char *pass, - int passlen, ASN1_TYPE *param, - const EVP_CIPHER *cipher, const EVP_MD *md, - int en_de); - -# ifndef OPENSSL_NO_RSA -# define EVP_PKEY_assign_RSA(pkey,rsa) EVP_PKEY_assign((pkey),EVP_PKEY_RSA,\ - (char *)(rsa)) -# endif - -# ifndef OPENSSL_NO_DSA -# define EVP_PKEY_assign_DSA(pkey,dsa) EVP_PKEY_assign((pkey),EVP_PKEY_DSA,\ - (char *)(dsa)) -# endif - -# ifndef OPENSSL_NO_DH -# define EVP_PKEY_assign_DH(pkey,dh) EVP_PKEY_assign((pkey),EVP_PKEY_DH,\ - (char *)(dh)) -# endif - -# ifndef OPENSSL_NO_EC -# define EVP_PKEY_assign_EC_KEY(pkey,eckey) EVP_PKEY_assign((pkey),EVP_PKEY_EC,\ - (char *)(eckey)) -# endif - -/* Add some extra combinations */ -# define EVP_get_digestbynid(a) EVP_get_digestbyname(OBJ_nid2sn(a)) -# define EVP_get_digestbyobj(a) EVP_get_digestbynid(OBJ_obj2nid(a)) -# define EVP_get_cipherbynid(a) EVP_get_cipherbyname(OBJ_nid2sn(a)) -# define EVP_get_cipherbyobj(a) EVP_get_cipherbynid(OBJ_obj2nid(a)) - -int EVP_MD_type(const EVP_MD *md); -# define EVP_MD_nid(e) EVP_MD_type(e) -# define EVP_MD_name(e) OBJ_nid2sn(EVP_MD_nid(e)) -int EVP_MD_pkey_type(const EVP_MD *md); -int EVP_MD_size(const EVP_MD *md); -int EVP_MD_block_size(const EVP_MD *md); -unsigned long EVP_MD_flags(const EVP_MD *md); - -const EVP_MD *EVP_MD_CTX_md(const EVP_MD_CTX *ctx); -# define EVP_MD_CTX_size(e) EVP_MD_size(EVP_MD_CTX_md(e)) -# define EVP_MD_CTX_block_size(e) EVP_MD_block_size(EVP_MD_CTX_md(e)) -# define EVP_MD_CTX_type(e) EVP_MD_type(EVP_MD_CTX_md(e)) - -int EVP_CIPHER_nid(const EVP_CIPHER *cipher); -# define EVP_CIPHER_name(e) OBJ_nid2sn(EVP_CIPHER_nid(e)) -int EVP_CIPHER_block_size(const EVP_CIPHER *cipher); -int EVP_CIPHER_key_length(const EVP_CIPHER *cipher); -int EVP_CIPHER_iv_length(const EVP_CIPHER *cipher); -unsigned long EVP_CIPHER_flags(const EVP_CIPHER *cipher); -# define EVP_CIPHER_mode(e) (EVP_CIPHER_flags(e) & EVP_CIPH_MODE) - -const EVP_CIPHER *EVP_CIPHER_CTX_cipher(const EVP_CIPHER_CTX *ctx); -int EVP_CIPHER_CTX_nid(const EVP_CIPHER_CTX *ctx); -int EVP_CIPHER_CTX_block_size(const EVP_CIPHER_CTX *ctx); -int EVP_CIPHER_CTX_key_length(const EVP_CIPHER_CTX *ctx); -int EVP_CIPHER_CTX_iv_length(const EVP_CIPHER_CTX *ctx); -int EVP_CIPHER_CTX_copy(EVP_CIPHER_CTX *out, const EVP_CIPHER_CTX *in); -void *EVP_CIPHER_CTX_get_app_data(const EVP_CIPHER_CTX *ctx); -void EVP_CIPHER_CTX_set_app_data(EVP_CIPHER_CTX *ctx, void *data); -# define EVP_CIPHER_CTX_type(c) EVP_CIPHER_type(EVP_CIPHER_CTX_cipher(c)) -unsigned long EVP_CIPHER_CTX_flags(const EVP_CIPHER_CTX *ctx); -# define EVP_CIPHER_CTX_mode(e) (EVP_CIPHER_CTX_flags(e) & EVP_CIPH_MODE) - -# define EVP_ENCODE_LENGTH(l) (((l+2)/3*4)+(l/48+1)*2+80) -# define EVP_DECODE_LENGTH(l) ((l+3)/4*3+80) - -# define EVP_SignInit_ex(a,b,c) EVP_DigestInit_ex(a,b,c) -# define EVP_SignInit(a,b) EVP_DigestInit(a,b) -# define EVP_SignUpdate(a,b,c) EVP_DigestUpdate(a,b,c) -# define EVP_VerifyInit_ex(a,b,c) EVP_DigestInit_ex(a,b,c) -# define EVP_VerifyInit(a,b) EVP_DigestInit(a,b) -# define EVP_VerifyUpdate(a,b,c) EVP_DigestUpdate(a,b,c) -# define EVP_OpenUpdate(a,b,c,d,e) EVP_DecryptUpdate(a,b,c,d,e) -# define EVP_SealUpdate(a,b,c,d,e) EVP_EncryptUpdate(a,b,c,d,e) -# define EVP_DigestSignUpdate(a,b,c) EVP_DigestUpdate(a,b,c) -# define EVP_DigestVerifyUpdate(a,b,c) EVP_DigestUpdate(a,b,c) - -# ifdef CONST_STRICT -void BIO_set_md(BIO *, const EVP_MD *md); -# else -# define BIO_set_md(b,md) BIO_ctrl(b,BIO_C_SET_MD,0,(char *)md) -# endif -# define BIO_get_md(b,mdp) BIO_ctrl(b,BIO_C_GET_MD,0,(char *)mdp) -# define BIO_get_md_ctx(b,mdcp) BIO_ctrl(b,BIO_C_GET_MD_CTX,0,(char *)mdcp) -# define BIO_set_md_ctx(b,mdcp) BIO_ctrl(b,BIO_C_SET_MD_CTX,0,(char *)mdcp) -# define BIO_get_cipher_status(b) BIO_ctrl(b,BIO_C_GET_CIPHER_STATUS,0,NULL) -# define BIO_get_cipher_ctx(b,c_pp) BIO_ctrl(b,BIO_C_GET_CIPHER_CTX,0,(char *)c_pp) - -int EVP_Cipher(EVP_CIPHER_CTX *c, - unsigned char *out, const unsigned char *in, unsigned int inl); - -# define EVP_add_cipher_alias(n,alias) \ - OBJ_NAME_add((alias),OBJ_NAME_TYPE_CIPHER_METH|OBJ_NAME_ALIAS,(n)) -# define EVP_add_digest_alias(n,alias) \ - OBJ_NAME_add((alias),OBJ_NAME_TYPE_MD_METH|OBJ_NAME_ALIAS,(n)) -# define EVP_delete_cipher_alias(alias) \ - OBJ_NAME_remove(alias,OBJ_NAME_TYPE_CIPHER_METH|OBJ_NAME_ALIAS); -# define EVP_delete_digest_alias(alias) \ - OBJ_NAME_remove(alias,OBJ_NAME_TYPE_MD_METH|OBJ_NAME_ALIAS); - -void EVP_MD_CTX_init(EVP_MD_CTX *ctx); -int EVP_MD_CTX_cleanup(EVP_MD_CTX *ctx); -EVP_MD_CTX *EVP_MD_CTX_create(void); -void EVP_MD_CTX_destroy(EVP_MD_CTX *ctx); -int EVP_MD_CTX_copy_ex(EVP_MD_CTX *out, const EVP_MD_CTX *in); -void EVP_MD_CTX_set_flags(EVP_MD_CTX *ctx, int flags); -void EVP_MD_CTX_clear_flags(EVP_MD_CTX *ctx, int flags); -int EVP_MD_CTX_test_flags(const EVP_MD_CTX *ctx, int flags); -int EVP_DigestInit_ex(EVP_MD_CTX *ctx, const EVP_MD *type, ENGINE *impl); -int EVP_DigestUpdate(EVP_MD_CTX *ctx, const void *d, size_t cnt); -int EVP_DigestFinal_ex(EVP_MD_CTX *ctx, unsigned char *md, unsigned int *s); -int EVP_Digest(const void *data, size_t count, - unsigned char *md, unsigned int *size, const EVP_MD *type, - ENGINE *impl); - -int EVP_MD_CTX_copy(EVP_MD_CTX *out, const EVP_MD_CTX *in); -int EVP_DigestInit(EVP_MD_CTX *ctx, const EVP_MD *type); -int EVP_DigestFinal(EVP_MD_CTX *ctx, unsigned char *md, unsigned int *s); - -int EVP_read_pw_string(char *buf, int length, const char *prompt, int verify); -int EVP_read_pw_string_min(char *buf, int minlen, int maxlen, - const char *prompt, int verify); -void EVP_set_pw_prompt(const char *prompt); -char *EVP_get_pw_prompt(void); - -int EVP_BytesToKey(const EVP_CIPHER *type, const EVP_MD *md, - const unsigned char *salt, const unsigned char *data, - int datal, int count, unsigned char *key, - unsigned char *iv); - -void EVP_CIPHER_CTX_set_flags(EVP_CIPHER_CTX *ctx, int flags); -void EVP_CIPHER_CTX_clear_flags(EVP_CIPHER_CTX *ctx, int flags); -int EVP_CIPHER_CTX_test_flags(const EVP_CIPHER_CTX *ctx, int flags); - -int EVP_EncryptInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, - const unsigned char *key, const unsigned char *iv); -int EVP_EncryptInit_ex(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, - ENGINE *impl, const unsigned char *key, - const unsigned char *iv); -int EVP_EncryptUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl, - const unsigned char *in, int inl); -int EVP_EncryptFinal_ex(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl); -int EVP_EncryptFinal(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl); - -int EVP_DecryptInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, - const unsigned char *key, const unsigned char *iv); -int EVP_DecryptInit_ex(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, - ENGINE *impl, const unsigned char *key, - const unsigned char *iv); -int EVP_DecryptUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl, - const unsigned char *in, int inl); -int EVP_DecryptFinal(EVP_CIPHER_CTX *ctx, unsigned char *outm, int *outl); -int EVP_DecryptFinal_ex(EVP_CIPHER_CTX *ctx, unsigned char *outm, int *outl); - -int EVP_CipherInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, - const unsigned char *key, const unsigned char *iv, - int enc); -int EVP_CipherInit_ex(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, - ENGINE *impl, const unsigned char *key, - const unsigned char *iv, int enc); -int EVP_CipherUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl, - const unsigned char *in, int inl); -int EVP_CipherFinal(EVP_CIPHER_CTX *ctx, unsigned char *outm, int *outl); -int EVP_CipherFinal_ex(EVP_CIPHER_CTX *ctx, unsigned char *outm, int *outl); - -int EVP_SignFinal(EVP_MD_CTX *ctx, unsigned char *md, unsigned int *s, - EVP_PKEY *pkey); - -int EVP_VerifyFinal(EVP_MD_CTX *ctx, const unsigned char *sigbuf, - unsigned int siglen, EVP_PKEY *pkey); - -int EVP_DigestSignInit(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx, - const EVP_MD *type, ENGINE *e, EVP_PKEY *pkey); -int EVP_DigestSignFinal(EVP_MD_CTX *ctx, - unsigned char *sigret, size_t *siglen); - -int EVP_DigestVerifyInit(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx, - const EVP_MD *type, ENGINE *e, EVP_PKEY *pkey); -int EVP_DigestVerifyFinal(EVP_MD_CTX *ctx, - const unsigned char *sig, size_t siglen); - -int EVP_OpenInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *type, - const unsigned char *ek, int ekl, const unsigned char *iv, - EVP_PKEY *priv); -int EVP_OpenFinal(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl); - -int EVP_SealInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *type, - unsigned char **ek, int *ekl, unsigned char *iv, - EVP_PKEY **pubk, int npubk); -int EVP_SealFinal(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl); - -void EVP_EncodeInit(EVP_ENCODE_CTX *ctx); -void EVP_EncodeUpdate(EVP_ENCODE_CTX *ctx, unsigned char *out, int *outl, - const unsigned char *in, int inl); -void EVP_EncodeFinal(EVP_ENCODE_CTX *ctx, unsigned char *out, int *outl); -int EVP_EncodeBlock(unsigned char *t, const unsigned char *f, int n); - -void EVP_DecodeInit(EVP_ENCODE_CTX *ctx); -int EVP_DecodeUpdate(EVP_ENCODE_CTX *ctx, unsigned char *out, int *outl, - const unsigned char *in, int inl); -int EVP_DecodeFinal(EVP_ENCODE_CTX *ctx, unsigned - char *out, int *outl); -int EVP_DecodeBlock(unsigned char *t, const unsigned char *f, int n); - -void EVP_CIPHER_CTX_init(EVP_CIPHER_CTX *a); -int EVP_CIPHER_CTX_cleanup(EVP_CIPHER_CTX *a); -EVP_CIPHER_CTX *EVP_CIPHER_CTX_new(void); -void EVP_CIPHER_CTX_free(EVP_CIPHER_CTX *a); -int EVP_CIPHER_CTX_set_key_length(EVP_CIPHER_CTX *x, int keylen); -int EVP_CIPHER_CTX_set_padding(EVP_CIPHER_CTX *c, int pad); -int EVP_CIPHER_CTX_ctrl(EVP_CIPHER_CTX *ctx, int type, int arg, void *ptr); -int EVP_CIPHER_CTX_rand_key(EVP_CIPHER_CTX *ctx, unsigned char *key); - -# ifndef OPENSSL_NO_BIO -BIO_METHOD *BIO_f_md(void); -BIO_METHOD *BIO_f_base64(void); -BIO_METHOD *BIO_f_cipher(void); -BIO_METHOD *BIO_f_reliable(void); -void BIO_set_cipher(BIO *b, const EVP_CIPHER *c, const unsigned char *k, - const unsigned char *i, int enc); -# endif - -const EVP_MD *EVP_md_null(void); -# ifndef OPENSSL_NO_MD2 -const EVP_MD *EVP_md2(void); -# endif -# ifndef OPENSSL_NO_MD4 -const EVP_MD *EVP_md4(void); -# endif -# ifndef OPENSSL_NO_MD5 -const EVP_MD *EVP_md5(void); -# endif -# ifndef OPENSSL_NO_SHA -const EVP_MD *EVP_sha(void); -const EVP_MD *EVP_sha1(void); -const EVP_MD *EVP_dss(void); -const EVP_MD *EVP_dss1(void); -const EVP_MD *EVP_ecdsa(void); -# endif -# ifndef OPENSSL_NO_SHA256 -const EVP_MD *EVP_sha224(void); -const EVP_MD *EVP_sha256(void); -# endif -# ifndef OPENSSL_NO_SHA512 -const EVP_MD *EVP_sha384(void); -const EVP_MD *EVP_sha512(void); -# endif -# ifndef OPENSSL_NO_MDC2 -const EVP_MD *EVP_mdc2(void); -# endif -# ifndef OPENSSL_NO_RIPEMD -const EVP_MD *EVP_ripemd160(void); -# endif -# ifndef OPENSSL_NO_WHIRLPOOL -const EVP_MD *EVP_whirlpool(void); -# endif -const EVP_CIPHER *EVP_enc_null(void); /* does nothing :-) */ -# ifndef OPENSSL_NO_DES -const EVP_CIPHER *EVP_des_ecb(void); -const EVP_CIPHER *EVP_des_ede(void); -const EVP_CIPHER *EVP_des_ede3(void); -const EVP_CIPHER *EVP_des_ede_ecb(void); -const EVP_CIPHER *EVP_des_ede3_ecb(void); -const EVP_CIPHER *EVP_des_cfb64(void); -# define EVP_des_cfb EVP_des_cfb64 -const EVP_CIPHER *EVP_des_cfb1(void); -const EVP_CIPHER *EVP_des_cfb8(void); -const EVP_CIPHER *EVP_des_ede_cfb64(void); -# define EVP_des_ede_cfb EVP_des_ede_cfb64 -# if 0 -const EVP_CIPHER *EVP_des_ede_cfb1(void); -const EVP_CIPHER *EVP_des_ede_cfb8(void); -# endif -const EVP_CIPHER *EVP_des_ede3_cfb64(void); -# define EVP_des_ede3_cfb EVP_des_ede3_cfb64 -const EVP_CIPHER *EVP_des_ede3_cfb1(void); -const EVP_CIPHER *EVP_des_ede3_cfb8(void); -const EVP_CIPHER *EVP_des_ofb(void); -const EVP_CIPHER *EVP_des_ede_ofb(void); -const EVP_CIPHER *EVP_des_ede3_ofb(void); -const EVP_CIPHER *EVP_des_cbc(void); -const EVP_CIPHER *EVP_des_ede_cbc(void); -const EVP_CIPHER *EVP_des_ede3_cbc(void); -const EVP_CIPHER *EVP_desx_cbc(void); -const EVP_CIPHER *EVP_des_ede3_wrap(void); -/* - * This should now be supported through the dev_crypto ENGINE. But also, why - * are rc4 and md5 declarations made here inside a "NO_DES" precompiler - * branch? - */ -# if 0 -# ifdef OPENSSL_OPENBSD_DEV_CRYPTO -const EVP_CIPHER *EVP_dev_crypto_des_ede3_cbc(void); -const EVP_CIPHER *EVP_dev_crypto_rc4(void); -const EVP_MD *EVP_dev_crypto_md5(void); -# endif -# endif -# endif -# ifndef OPENSSL_NO_RC4 -const EVP_CIPHER *EVP_rc4(void); -const EVP_CIPHER *EVP_rc4_40(void); -# ifndef OPENSSL_NO_MD5 -const EVP_CIPHER *EVP_rc4_hmac_md5(void); -# endif -# endif -# ifndef OPENSSL_NO_IDEA -const EVP_CIPHER *EVP_idea_ecb(void); -const EVP_CIPHER *EVP_idea_cfb64(void); -# define EVP_idea_cfb EVP_idea_cfb64 -const EVP_CIPHER *EVP_idea_ofb(void); -const EVP_CIPHER *EVP_idea_cbc(void); -# endif -# ifndef OPENSSL_NO_RC2 -const EVP_CIPHER *EVP_rc2_ecb(void); -const EVP_CIPHER *EVP_rc2_cbc(void); -const EVP_CIPHER *EVP_rc2_40_cbc(void); -const EVP_CIPHER *EVP_rc2_64_cbc(void); -const EVP_CIPHER *EVP_rc2_cfb64(void); -# define EVP_rc2_cfb EVP_rc2_cfb64 -const EVP_CIPHER *EVP_rc2_ofb(void); -# endif -# ifndef OPENSSL_NO_BF -const EVP_CIPHER *EVP_bf_ecb(void); -const EVP_CIPHER *EVP_bf_cbc(void); -const EVP_CIPHER *EVP_bf_cfb64(void); -# define EVP_bf_cfb EVP_bf_cfb64 -const EVP_CIPHER *EVP_bf_ofb(void); -# endif -# ifndef OPENSSL_NO_CAST -const EVP_CIPHER *EVP_cast5_ecb(void); -const EVP_CIPHER *EVP_cast5_cbc(void); -const EVP_CIPHER *EVP_cast5_cfb64(void); -# define EVP_cast5_cfb EVP_cast5_cfb64 -const EVP_CIPHER *EVP_cast5_ofb(void); -# endif -# ifndef OPENSSL_NO_RC5 -const EVP_CIPHER *EVP_rc5_32_12_16_cbc(void); -const EVP_CIPHER *EVP_rc5_32_12_16_ecb(void); -const EVP_CIPHER *EVP_rc5_32_12_16_cfb64(void); -# define EVP_rc5_32_12_16_cfb EVP_rc5_32_12_16_cfb64 -const EVP_CIPHER *EVP_rc5_32_12_16_ofb(void); -# endif -# ifndef OPENSSL_NO_AES -const EVP_CIPHER *EVP_aes_128_ecb(void); -const EVP_CIPHER *EVP_aes_128_cbc(void); -const EVP_CIPHER *EVP_aes_128_cfb1(void); -const EVP_CIPHER *EVP_aes_128_cfb8(void); -const EVP_CIPHER *EVP_aes_128_cfb128(void); -# define EVP_aes_128_cfb EVP_aes_128_cfb128 -const EVP_CIPHER *EVP_aes_128_ofb(void); -const EVP_CIPHER *EVP_aes_128_ctr(void); -const EVP_CIPHER *EVP_aes_128_ccm(void); -const EVP_CIPHER *EVP_aes_128_gcm(void); -const EVP_CIPHER *EVP_aes_128_xts(void); -const EVP_CIPHER *EVP_aes_128_wrap(void); -const EVP_CIPHER *EVP_aes_192_ecb(void); -const EVP_CIPHER *EVP_aes_192_cbc(void); -const EVP_CIPHER *EVP_aes_192_cfb1(void); -const EVP_CIPHER *EVP_aes_192_cfb8(void); -const EVP_CIPHER *EVP_aes_192_cfb128(void); -# define EVP_aes_192_cfb EVP_aes_192_cfb128 -const EVP_CIPHER *EVP_aes_192_ofb(void); -const EVP_CIPHER *EVP_aes_192_ctr(void); -const EVP_CIPHER *EVP_aes_192_ccm(void); -const EVP_CIPHER *EVP_aes_192_gcm(void); -const EVP_CIPHER *EVP_aes_192_wrap(void); -const EVP_CIPHER *EVP_aes_256_ecb(void); -const EVP_CIPHER *EVP_aes_256_cbc(void); -const EVP_CIPHER *EVP_aes_256_cfb1(void); -const EVP_CIPHER *EVP_aes_256_cfb8(void); -const EVP_CIPHER *EVP_aes_256_cfb128(void); -# define EVP_aes_256_cfb EVP_aes_256_cfb128 -const EVP_CIPHER *EVP_aes_256_ofb(void); -const EVP_CIPHER *EVP_aes_256_ctr(void); -const EVP_CIPHER *EVP_aes_256_ccm(void); -const EVP_CIPHER *EVP_aes_256_gcm(void); -const EVP_CIPHER *EVP_aes_256_xts(void); -const EVP_CIPHER *EVP_aes_256_wrap(void); -# if !defined(OPENSSL_NO_SHA) && !defined(OPENSSL_NO_SHA1) -const EVP_CIPHER *EVP_aes_128_cbc_hmac_sha1(void); -const EVP_CIPHER *EVP_aes_256_cbc_hmac_sha1(void); -# endif -# ifndef OPENSSL_NO_SHA256 -const EVP_CIPHER *EVP_aes_128_cbc_hmac_sha256(void); -const EVP_CIPHER *EVP_aes_256_cbc_hmac_sha256(void); -# endif -# endif -# ifndef OPENSSL_NO_CAMELLIA -const EVP_CIPHER *EVP_camellia_128_ecb(void); -const EVP_CIPHER *EVP_camellia_128_cbc(void); -const EVP_CIPHER *EVP_camellia_128_cfb1(void); -const EVP_CIPHER *EVP_camellia_128_cfb8(void); -const EVP_CIPHER *EVP_camellia_128_cfb128(void); -# define EVP_camellia_128_cfb EVP_camellia_128_cfb128 -const EVP_CIPHER *EVP_camellia_128_ofb(void); -const EVP_CIPHER *EVP_camellia_192_ecb(void); -const EVP_CIPHER *EVP_camellia_192_cbc(void); -const EVP_CIPHER *EVP_camellia_192_cfb1(void); -const EVP_CIPHER *EVP_camellia_192_cfb8(void); -const EVP_CIPHER *EVP_camellia_192_cfb128(void); -# define EVP_camellia_192_cfb EVP_camellia_192_cfb128 -const EVP_CIPHER *EVP_camellia_192_ofb(void); -const EVP_CIPHER *EVP_camellia_256_ecb(void); -const EVP_CIPHER *EVP_camellia_256_cbc(void); -const EVP_CIPHER *EVP_camellia_256_cfb1(void); -const EVP_CIPHER *EVP_camellia_256_cfb8(void); -const EVP_CIPHER *EVP_camellia_256_cfb128(void); -# define EVP_camellia_256_cfb EVP_camellia_256_cfb128 -const EVP_CIPHER *EVP_camellia_256_ofb(void); -# endif - -# ifndef OPENSSL_NO_SEED -const EVP_CIPHER *EVP_seed_ecb(void); -const EVP_CIPHER *EVP_seed_cbc(void); -const EVP_CIPHER *EVP_seed_cfb128(void); -# define EVP_seed_cfb EVP_seed_cfb128 -const EVP_CIPHER *EVP_seed_ofb(void); -# endif - -void OPENSSL_add_all_algorithms_noconf(void); -void OPENSSL_add_all_algorithms_conf(void); - -# ifdef OPENSSL_LOAD_CONF -# define OpenSSL_add_all_algorithms() \ - OPENSSL_add_all_algorithms_conf() -# else -# define OpenSSL_add_all_algorithms() \ - OPENSSL_add_all_algorithms_noconf() -# endif - -void OpenSSL_add_all_ciphers(void); -void OpenSSL_add_all_digests(void); -# define SSLeay_add_all_algorithms() OpenSSL_add_all_algorithms() -# define SSLeay_add_all_ciphers() OpenSSL_add_all_ciphers() -# define SSLeay_add_all_digests() OpenSSL_add_all_digests() - -int EVP_add_cipher(const EVP_CIPHER *cipher); -int EVP_add_digest(const EVP_MD *digest); - -const EVP_CIPHER *EVP_get_cipherbyname(const char *name); -const EVP_MD *EVP_get_digestbyname(const char *name); -void EVP_cleanup(void); - -void EVP_CIPHER_do_all(void (*fn) (const EVP_CIPHER *ciph, - const char *from, const char *to, void *x), - void *arg); -void EVP_CIPHER_do_all_sorted(void (*fn) - (const EVP_CIPHER *ciph, const char *from, - const char *to, void *x), void *arg); - -void EVP_MD_do_all(void (*fn) (const EVP_MD *ciph, - const char *from, const char *to, void *x), - void *arg); -void EVP_MD_do_all_sorted(void (*fn) - (const EVP_MD *ciph, const char *from, - const char *to, void *x), void *arg); - -int EVP_PKEY_decrypt_old(unsigned char *dec_key, - const unsigned char *enc_key, int enc_key_len, - EVP_PKEY *private_key); -int EVP_PKEY_encrypt_old(unsigned char *enc_key, - const unsigned char *key, int key_len, - EVP_PKEY *pub_key); -int EVP_PKEY_type(int type); -int EVP_PKEY_id(const EVP_PKEY *pkey); -int EVP_PKEY_base_id(const EVP_PKEY *pkey); -int EVP_PKEY_bits(EVP_PKEY *pkey); -int EVP_PKEY_size(EVP_PKEY *pkey); -int EVP_PKEY_set_type(EVP_PKEY *pkey, int type); -int EVP_PKEY_set_type_str(EVP_PKEY *pkey, const char *str, int len); -int EVP_PKEY_assign(EVP_PKEY *pkey, int type, void *key); -void *EVP_PKEY_get0(EVP_PKEY *pkey); - -# ifndef OPENSSL_NO_RSA -struct rsa_st; -int EVP_PKEY_set1_RSA(EVP_PKEY *pkey, struct rsa_st *key); -struct rsa_st *EVP_PKEY_get1_RSA(EVP_PKEY *pkey); -# endif -# ifndef OPENSSL_NO_DSA -struct dsa_st; -int EVP_PKEY_set1_DSA(EVP_PKEY *pkey, struct dsa_st *key); -struct dsa_st *EVP_PKEY_get1_DSA(EVP_PKEY *pkey); -# endif -# ifndef OPENSSL_NO_DH -struct dh_st; -int EVP_PKEY_set1_DH(EVP_PKEY *pkey, struct dh_st *key); -struct dh_st *EVP_PKEY_get1_DH(EVP_PKEY *pkey); -# endif -# ifndef OPENSSL_NO_EC -struct ec_key_st; -int EVP_PKEY_set1_EC_KEY(EVP_PKEY *pkey, struct ec_key_st *key); -struct ec_key_st *EVP_PKEY_get1_EC_KEY(EVP_PKEY *pkey); -# endif - -EVP_PKEY *EVP_PKEY_new(void); -void EVP_PKEY_free(EVP_PKEY *pkey); - -EVP_PKEY *d2i_PublicKey(int type, EVP_PKEY **a, const unsigned char **pp, - long length); -int i2d_PublicKey(EVP_PKEY *a, unsigned char **pp); - -EVP_PKEY *d2i_PrivateKey(int type, EVP_PKEY **a, const unsigned char **pp, - long length); -EVP_PKEY *d2i_AutoPrivateKey(EVP_PKEY **a, const unsigned char **pp, - long length); -int i2d_PrivateKey(EVP_PKEY *a, unsigned char **pp); - -int EVP_PKEY_copy_parameters(EVP_PKEY *to, const EVP_PKEY *from); -int EVP_PKEY_missing_parameters(const EVP_PKEY *pkey); -int EVP_PKEY_save_parameters(EVP_PKEY *pkey, int mode); -int EVP_PKEY_cmp_parameters(const EVP_PKEY *a, const EVP_PKEY *b); - -int EVP_PKEY_cmp(const EVP_PKEY *a, const EVP_PKEY *b); - -int EVP_PKEY_print_public(BIO *out, const EVP_PKEY *pkey, - int indent, ASN1_PCTX *pctx); -int EVP_PKEY_print_private(BIO *out, const EVP_PKEY *pkey, - int indent, ASN1_PCTX *pctx); -int EVP_PKEY_print_params(BIO *out, const EVP_PKEY *pkey, - int indent, ASN1_PCTX *pctx); - -int EVP_PKEY_get_default_digest_nid(EVP_PKEY *pkey, int *pnid); - -int EVP_CIPHER_type(const EVP_CIPHER *ctx); - -/* calls methods */ -int EVP_CIPHER_param_to_asn1(EVP_CIPHER_CTX *c, ASN1_TYPE *type); -int EVP_CIPHER_asn1_to_param(EVP_CIPHER_CTX *c, ASN1_TYPE *type); - -/* These are used by EVP_CIPHER methods */ -int EVP_CIPHER_set_asn1_iv(EVP_CIPHER_CTX *c, ASN1_TYPE *type); -int EVP_CIPHER_get_asn1_iv(EVP_CIPHER_CTX *c, ASN1_TYPE *type); - -/* PKCS5 password based encryption */ -int PKCS5_PBE_keyivgen(EVP_CIPHER_CTX *ctx, const char *pass, int passlen, - ASN1_TYPE *param, const EVP_CIPHER *cipher, - const EVP_MD *md, int en_de); -int PKCS5_PBKDF2_HMAC_SHA1(const char *pass, int passlen, - const unsigned char *salt, int saltlen, int iter, - int keylen, unsigned char *out); -int PKCS5_PBKDF2_HMAC(const char *pass, int passlen, - const unsigned char *salt, int saltlen, int iter, - const EVP_MD *digest, int keylen, unsigned char *out); -int PKCS5_v2_PBE_keyivgen(EVP_CIPHER_CTX *ctx, const char *pass, int passlen, - ASN1_TYPE *param, const EVP_CIPHER *cipher, - const EVP_MD *md, int en_de); - -void PKCS5_PBE_add(void); - -int EVP_PBE_CipherInit(ASN1_OBJECT *pbe_obj, const char *pass, int passlen, - ASN1_TYPE *param, EVP_CIPHER_CTX *ctx, int en_de); - -/* PBE type */ - -/* Can appear as the outermost AlgorithmIdentifier */ -# define EVP_PBE_TYPE_OUTER 0x0 -/* Is an PRF type OID */ -# define EVP_PBE_TYPE_PRF 0x1 - -int EVP_PBE_alg_add_type(int pbe_type, int pbe_nid, int cipher_nid, - int md_nid, EVP_PBE_KEYGEN *keygen); -int EVP_PBE_alg_add(int nid, const EVP_CIPHER *cipher, const EVP_MD *md, - EVP_PBE_KEYGEN *keygen); -int EVP_PBE_find(int type, int pbe_nid, int *pcnid, int *pmnid, - EVP_PBE_KEYGEN **pkeygen); -void EVP_PBE_cleanup(void); - -# define ASN1_PKEY_ALIAS 0x1 -# define ASN1_PKEY_DYNAMIC 0x2 -# define ASN1_PKEY_SIGPARAM_NULL 0x4 - -# define ASN1_PKEY_CTRL_PKCS7_SIGN 0x1 -# define ASN1_PKEY_CTRL_PKCS7_ENCRYPT 0x2 -# define ASN1_PKEY_CTRL_DEFAULT_MD_NID 0x3 -# define ASN1_PKEY_CTRL_CMS_SIGN 0x5 -# define ASN1_PKEY_CTRL_CMS_ENVELOPE 0x7 -# define ASN1_PKEY_CTRL_CMS_RI_TYPE 0x8 - -int EVP_PKEY_asn1_get_count(void); -const EVP_PKEY_ASN1_METHOD *EVP_PKEY_asn1_get0(int idx); -const EVP_PKEY_ASN1_METHOD *EVP_PKEY_asn1_find(ENGINE **pe, int type); -const EVP_PKEY_ASN1_METHOD *EVP_PKEY_asn1_find_str(ENGINE **pe, - const char *str, int len); -int EVP_PKEY_asn1_add0(const EVP_PKEY_ASN1_METHOD *ameth); -int EVP_PKEY_asn1_add_alias(int to, int from); -int EVP_PKEY_asn1_get0_info(int *ppkey_id, int *pkey_base_id, - int *ppkey_flags, const char **pinfo, - const char **ppem_str, - const EVP_PKEY_ASN1_METHOD *ameth); - -const EVP_PKEY_ASN1_METHOD *EVP_PKEY_get0_asn1(EVP_PKEY *pkey); -EVP_PKEY_ASN1_METHOD *EVP_PKEY_asn1_new(int id, int flags, - const char *pem_str, - const char *info); -void EVP_PKEY_asn1_copy(EVP_PKEY_ASN1_METHOD *dst, - const EVP_PKEY_ASN1_METHOD *src); -void EVP_PKEY_asn1_free(EVP_PKEY_ASN1_METHOD *ameth); -void EVP_PKEY_asn1_set_public(EVP_PKEY_ASN1_METHOD *ameth, - int (*pub_decode) (EVP_PKEY *pk, - X509_PUBKEY *pub), - int (*pub_encode) (X509_PUBKEY *pub, - const EVP_PKEY *pk), - int (*pub_cmp) (const EVP_PKEY *a, - const EVP_PKEY *b), - int (*pub_print) (BIO *out, - const EVP_PKEY *pkey, - int indent, ASN1_PCTX *pctx), - int (*pkey_size) (const EVP_PKEY *pk), - int (*pkey_bits) (const EVP_PKEY *pk)); -void EVP_PKEY_asn1_set_private(EVP_PKEY_ASN1_METHOD *ameth, - int (*priv_decode) (EVP_PKEY *pk, - PKCS8_PRIV_KEY_INFO - *p8inf), - int (*priv_encode) (PKCS8_PRIV_KEY_INFO *p8, - const EVP_PKEY *pk), - int (*priv_print) (BIO *out, - const EVP_PKEY *pkey, - int indent, - ASN1_PCTX *pctx)); -void EVP_PKEY_asn1_set_param(EVP_PKEY_ASN1_METHOD *ameth, - int (*param_decode) (EVP_PKEY *pkey, - const unsigned char **pder, - int derlen), - int (*param_encode) (const EVP_PKEY *pkey, - unsigned char **pder), - int (*param_missing) (const EVP_PKEY *pk), - int (*param_copy) (EVP_PKEY *to, - const EVP_PKEY *from), - int (*param_cmp) (const EVP_PKEY *a, - const EVP_PKEY *b), - int (*param_print) (BIO *out, - const EVP_PKEY *pkey, - int indent, - ASN1_PCTX *pctx)); - -void EVP_PKEY_asn1_set_free(EVP_PKEY_ASN1_METHOD *ameth, - void (*pkey_free) (EVP_PKEY *pkey)); -void EVP_PKEY_asn1_set_ctrl(EVP_PKEY_ASN1_METHOD *ameth, - int (*pkey_ctrl) (EVP_PKEY *pkey, int op, - long arg1, void *arg2)); - -# define EVP_PKEY_OP_UNDEFINED 0 -# define EVP_PKEY_OP_PARAMGEN (1<<1) -# define EVP_PKEY_OP_KEYGEN (1<<2) -# define EVP_PKEY_OP_SIGN (1<<3) -# define EVP_PKEY_OP_VERIFY (1<<4) -# define EVP_PKEY_OP_VERIFYRECOVER (1<<5) -# define EVP_PKEY_OP_SIGNCTX (1<<6) -# define EVP_PKEY_OP_VERIFYCTX (1<<7) -# define EVP_PKEY_OP_ENCRYPT (1<<8) -# define EVP_PKEY_OP_DECRYPT (1<<9) -# define EVP_PKEY_OP_DERIVE (1<<10) - -# define EVP_PKEY_OP_TYPE_SIG \ - (EVP_PKEY_OP_SIGN | EVP_PKEY_OP_VERIFY | EVP_PKEY_OP_VERIFYRECOVER \ - | EVP_PKEY_OP_SIGNCTX | EVP_PKEY_OP_VERIFYCTX) - -# define EVP_PKEY_OP_TYPE_CRYPT \ - (EVP_PKEY_OP_ENCRYPT | EVP_PKEY_OP_DECRYPT) - -# define EVP_PKEY_OP_TYPE_NOGEN \ - (EVP_PKEY_OP_SIG | EVP_PKEY_OP_CRYPT | EVP_PKEY_OP_DERIVE) - -# define EVP_PKEY_OP_TYPE_GEN \ - (EVP_PKEY_OP_PARAMGEN | EVP_PKEY_OP_KEYGEN) - -# define EVP_PKEY_CTX_set_signature_md(ctx, md) \ - EVP_PKEY_CTX_ctrl(ctx, -1, EVP_PKEY_OP_TYPE_SIG, \ - EVP_PKEY_CTRL_MD, 0, (void *)md) - -# define EVP_PKEY_CTX_get_signature_md(ctx, pmd) \ - EVP_PKEY_CTX_ctrl(ctx, -1, EVP_PKEY_OP_TYPE_SIG, \ - EVP_PKEY_CTRL_GET_MD, 0, (void *)pmd) - -# define EVP_PKEY_CTRL_MD 1 -# define EVP_PKEY_CTRL_PEER_KEY 2 - -# define EVP_PKEY_CTRL_PKCS7_ENCRYPT 3 -# define EVP_PKEY_CTRL_PKCS7_DECRYPT 4 - -# define EVP_PKEY_CTRL_PKCS7_SIGN 5 - -# define EVP_PKEY_CTRL_SET_MAC_KEY 6 - -# define EVP_PKEY_CTRL_DIGESTINIT 7 - -/* Used by GOST key encryption in TLS */ -# define EVP_PKEY_CTRL_SET_IV 8 - -# define EVP_PKEY_CTRL_CMS_ENCRYPT 9 -# define EVP_PKEY_CTRL_CMS_DECRYPT 10 -# define EVP_PKEY_CTRL_CMS_SIGN 11 - -# define EVP_PKEY_CTRL_CIPHER 12 - -# define EVP_PKEY_CTRL_GET_MD 13 - -# define EVP_PKEY_ALG_CTRL 0x1000 - -# define EVP_PKEY_FLAG_AUTOARGLEN 2 -/* - * Method handles all operations: don't assume any digest related defaults. - */ -# define EVP_PKEY_FLAG_SIGCTX_CUSTOM 4 - -const EVP_PKEY_METHOD *EVP_PKEY_meth_find(int type); -EVP_PKEY_METHOD *EVP_PKEY_meth_new(int id, int flags); -void EVP_PKEY_meth_get0_info(int *ppkey_id, int *pflags, - const EVP_PKEY_METHOD *meth); -void EVP_PKEY_meth_copy(EVP_PKEY_METHOD *dst, const EVP_PKEY_METHOD *src); -void EVP_PKEY_meth_free(EVP_PKEY_METHOD *pmeth); -int EVP_PKEY_meth_add0(const EVP_PKEY_METHOD *pmeth); - -EVP_PKEY_CTX *EVP_PKEY_CTX_new(EVP_PKEY *pkey, ENGINE *e); -EVP_PKEY_CTX *EVP_PKEY_CTX_new_id(int id, ENGINE *e); -EVP_PKEY_CTX *EVP_PKEY_CTX_dup(EVP_PKEY_CTX *ctx); -void EVP_PKEY_CTX_free(EVP_PKEY_CTX *ctx); - -int EVP_PKEY_CTX_ctrl(EVP_PKEY_CTX *ctx, int keytype, int optype, - int cmd, int p1, void *p2); -int EVP_PKEY_CTX_ctrl_str(EVP_PKEY_CTX *ctx, const char *type, - const char *value); - -int EVP_PKEY_CTX_get_operation(EVP_PKEY_CTX *ctx); -void EVP_PKEY_CTX_set0_keygen_info(EVP_PKEY_CTX *ctx, int *dat, int datlen); - -EVP_PKEY *EVP_PKEY_new_mac_key(int type, ENGINE *e, - const unsigned char *key, int keylen); - -void EVP_PKEY_CTX_set_data(EVP_PKEY_CTX *ctx, void *data); -void *EVP_PKEY_CTX_get_data(EVP_PKEY_CTX *ctx); -EVP_PKEY *EVP_PKEY_CTX_get0_pkey(EVP_PKEY_CTX *ctx); - -EVP_PKEY *EVP_PKEY_CTX_get0_peerkey(EVP_PKEY_CTX *ctx); - -void EVP_PKEY_CTX_set_app_data(EVP_PKEY_CTX *ctx, void *data); -void *EVP_PKEY_CTX_get_app_data(EVP_PKEY_CTX *ctx); - -int EVP_PKEY_sign_init(EVP_PKEY_CTX *ctx); -int EVP_PKEY_sign(EVP_PKEY_CTX *ctx, - unsigned char *sig, size_t *siglen, - const unsigned char *tbs, size_t tbslen); -int EVP_PKEY_verify_init(EVP_PKEY_CTX *ctx); -int EVP_PKEY_verify(EVP_PKEY_CTX *ctx, - const unsigned char *sig, size_t siglen, - const unsigned char *tbs, size_t tbslen); -int EVP_PKEY_verify_recover_init(EVP_PKEY_CTX *ctx); -int EVP_PKEY_verify_recover(EVP_PKEY_CTX *ctx, - unsigned char *rout, size_t *routlen, - const unsigned char *sig, size_t siglen); -int EVP_PKEY_encrypt_init(EVP_PKEY_CTX *ctx); -int EVP_PKEY_encrypt(EVP_PKEY_CTX *ctx, - unsigned char *out, size_t *outlen, - const unsigned char *in, size_t inlen); -int EVP_PKEY_decrypt_init(EVP_PKEY_CTX *ctx); -int EVP_PKEY_decrypt(EVP_PKEY_CTX *ctx, - unsigned char *out, size_t *outlen, - const unsigned char *in, size_t inlen); - -int EVP_PKEY_derive_init(EVP_PKEY_CTX *ctx); -int EVP_PKEY_derive_set_peer(EVP_PKEY_CTX *ctx, EVP_PKEY *peer); -int EVP_PKEY_derive(EVP_PKEY_CTX *ctx, unsigned char *key, size_t *keylen); - -typedef int EVP_PKEY_gen_cb (EVP_PKEY_CTX *ctx); - -int EVP_PKEY_paramgen_init(EVP_PKEY_CTX *ctx); -int EVP_PKEY_paramgen(EVP_PKEY_CTX *ctx, EVP_PKEY **ppkey); -int EVP_PKEY_keygen_init(EVP_PKEY_CTX *ctx); -int EVP_PKEY_keygen(EVP_PKEY_CTX *ctx, EVP_PKEY **ppkey); - -void EVP_PKEY_CTX_set_cb(EVP_PKEY_CTX *ctx, EVP_PKEY_gen_cb *cb); -EVP_PKEY_gen_cb *EVP_PKEY_CTX_get_cb(EVP_PKEY_CTX *ctx); - -int EVP_PKEY_CTX_get_keygen_info(EVP_PKEY_CTX *ctx, int idx); - -void EVP_PKEY_meth_set_init(EVP_PKEY_METHOD *pmeth, - int (*init) (EVP_PKEY_CTX *ctx)); - -void EVP_PKEY_meth_set_copy(EVP_PKEY_METHOD *pmeth, - int (*copy) (EVP_PKEY_CTX *dst, - EVP_PKEY_CTX *src)); - -void EVP_PKEY_meth_set_cleanup(EVP_PKEY_METHOD *pmeth, - void (*cleanup) (EVP_PKEY_CTX *ctx)); - -void EVP_PKEY_meth_set_paramgen(EVP_PKEY_METHOD *pmeth, - int (*paramgen_init) (EVP_PKEY_CTX *ctx), - int (*paramgen) (EVP_PKEY_CTX *ctx, - EVP_PKEY *pkey)); - -void EVP_PKEY_meth_set_keygen(EVP_PKEY_METHOD *pmeth, - int (*keygen_init) (EVP_PKEY_CTX *ctx), - int (*keygen) (EVP_PKEY_CTX *ctx, - EVP_PKEY *pkey)); - -void EVP_PKEY_meth_set_sign(EVP_PKEY_METHOD *pmeth, - int (*sign_init) (EVP_PKEY_CTX *ctx), - int (*sign) (EVP_PKEY_CTX *ctx, - unsigned char *sig, size_t *siglen, - const unsigned char *tbs, - size_t tbslen)); - -void EVP_PKEY_meth_set_verify(EVP_PKEY_METHOD *pmeth, - int (*verify_init) (EVP_PKEY_CTX *ctx), - int (*verify) (EVP_PKEY_CTX *ctx, - const unsigned char *sig, - size_t siglen, - const unsigned char *tbs, - size_t tbslen)); - -void EVP_PKEY_meth_set_verify_recover(EVP_PKEY_METHOD *pmeth, - int (*verify_recover_init) (EVP_PKEY_CTX - *ctx), - int (*verify_recover) (EVP_PKEY_CTX - *ctx, - unsigned char - *sig, - size_t *siglen, - const unsigned - char *tbs, - size_t tbslen)); - -void EVP_PKEY_meth_set_signctx(EVP_PKEY_METHOD *pmeth, - int (*signctx_init) (EVP_PKEY_CTX *ctx, - EVP_MD_CTX *mctx), - int (*signctx) (EVP_PKEY_CTX *ctx, - unsigned char *sig, - size_t *siglen, - EVP_MD_CTX *mctx)); - -void EVP_PKEY_meth_set_verifyctx(EVP_PKEY_METHOD *pmeth, - int (*verifyctx_init) (EVP_PKEY_CTX *ctx, - EVP_MD_CTX *mctx), - int (*verifyctx) (EVP_PKEY_CTX *ctx, - const unsigned char *sig, - int siglen, - EVP_MD_CTX *mctx)); - -void EVP_PKEY_meth_set_encrypt(EVP_PKEY_METHOD *pmeth, - int (*encrypt_init) (EVP_PKEY_CTX *ctx), - int (*encryptfn) (EVP_PKEY_CTX *ctx, - unsigned char *out, - size_t *outlen, - const unsigned char *in, - size_t inlen)); - -void EVP_PKEY_meth_set_decrypt(EVP_PKEY_METHOD *pmeth, - int (*decrypt_init) (EVP_PKEY_CTX *ctx), - int (*decrypt) (EVP_PKEY_CTX *ctx, - unsigned char *out, - size_t *outlen, - const unsigned char *in, - size_t inlen)); - -void EVP_PKEY_meth_set_derive(EVP_PKEY_METHOD *pmeth, - int (*derive_init) (EVP_PKEY_CTX *ctx), - int (*derive) (EVP_PKEY_CTX *ctx, - unsigned char *key, - size_t *keylen)); - -void EVP_PKEY_meth_set_ctrl(EVP_PKEY_METHOD *pmeth, - int (*ctrl) (EVP_PKEY_CTX *ctx, int type, int p1, - void *p2), - int (*ctrl_str) (EVP_PKEY_CTX *ctx, - const char *type, - const char *value)); - -void EVP_add_alg_module(void); - -/* BEGIN ERROR CODES */ -/* - * The following lines are auto generated by the script mkerr.pl. Any changes - * made after this point may be overwritten when the script is next run. - */ -void ERR_load_EVP_strings(void); - -/* Error codes for the EVP functions. */ - -/* Function codes. */ -# define EVP_F_AESNI_INIT_KEY 165 -# define EVP_F_AESNI_XTS_CIPHER 176 -# define EVP_F_AES_INIT_KEY 133 -# define EVP_F_AES_T4_INIT_KEY 178 -# define EVP_F_AES_XTS 172 -# define EVP_F_AES_XTS_CIPHER 175 -# define EVP_F_ALG_MODULE_INIT 177 -# define EVP_F_CAMELLIA_INIT_KEY 159 -# define EVP_F_CMAC_INIT 173 -# define EVP_F_CMLL_T4_INIT_KEY 179 -# define EVP_F_D2I_PKEY 100 -# define EVP_F_DO_SIGVER_INIT 161 -# define EVP_F_DSAPKEY2PKCS8 134 -# define EVP_F_DSA_PKEY2PKCS8 135 -# define EVP_F_ECDSA_PKEY2PKCS8 129 -# define EVP_F_ECKEY_PKEY2PKCS8 132 -# define EVP_F_EVP_CIPHERINIT_EX 123 -# define EVP_F_EVP_CIPHER_CTX_COPY 163 -# define EVP_F_EVP_CIPHER_CTX_CTRL 124 -# define EVP_F_EVP_CIPHER_CTX_SET_KEY_LENGTH 122 -# define EVP_F_EVP_DECRYPTFINAL_EX 101 -# define EVP_F_EVP_DIGESTINIT_EX 128 -# define EVP_F_EVP_ENCRYPTFINAL_EX 127 -# define EVP_F_EVP_MD_CTX_COPY_EX 110 -# define EVP_F_EVP_MD_SIZE 162 -# define EVP_F_EVP_OPENINIT 102 -# define EVP_F_EVP_PBE_ALG_ADD 115 -# define EVP_F_EVP_PBE_ALG_ADD_TYPE 160 -# define EVP_F_EVP_PBE_CIPHERINIT 116 -# define EVP_F_EVP_PKCS82PKEY 111 -# define EVP_F_EVP_PKCS82PKEY_BROKEN 136 -# define EVP_F_EVP_PKEY2PKCS8_BROKEN 113 -# define EVP_F_EVP_PKEY_COPY_PARAMETERS 103 -# define EVP_F_EVP_PKEY_CTX_CTRL 137 -# define EVP_F_EVP_PKEY_CTX_CTRL_STR 150 -# define EVP_F_EVP_PKEY_CTX_DUP 156 -# define EVP_F_EVP_PKEY_DECRYPT 104 -# define EVP_F_EVP_PKEY_DECRYPT_INIT 138 -# define EVP_F_EVP_PKEY_DECRYPT_OLD 151 -# define EVP_F_EVP_PKEY_DERIVE 153 -# define EVP_F_EVP_PKEY_DERIVE_INIT 154 -# define EVP_F_EVP_PKEY_DERIVE_SET_PEER 155 -# define EVP_F_EVP_PKEY_ENCRYPT 105 -# define EVP_F_EVP_PKEY_ENCRYPT_INIT 139 -# define EVP_F_EVP_PKEY_ENCRYPT_OLD 152 -# define EVP_F_EVP_PKEY_GET1_DH 119 -# define EVP_F_EVP_PKEY_GET1_DSA 120 -# define EVP_F_EVP_PKEY_GET1_ECDSA 130 -# define EVP_F_EVP_PKEY_GET1_EC_KEY 131 -# define EVP_F_EVP_PKEY_GET1_RSA 121 -# define EVP_F_EVP_PKEY_KEYGEN 146 -# define EVP_F_EVP_PKEY_KEYGEN_INIT 147 -# define EVP_F_EVP_PKEY_NEW 106 -# define EVP_F_EVP_PKEY_PARAMGEN 148 -# define EVP_F_EVP_PKEY_PARAMGEN_INIT 149 -# define EVP_F_EVP_PKEY_SIGN 140 -# define EVP_F_EVP_PKEY_SIGN_INIT 141 -# define EVP_F_EVP_PKEY_VERIFY 142 -# define EVP_F_EVP_PKEY_VERIFY_INIT 143 -# define EVP_F_EVP_PKEY_VERIFY_RECOVER 144 -# define EVP_F_EVP_PKEY_VERIFY_RECOVER_INIT 145 -# define EVP_F_EVP_RIJNDAEL 126 -# define EVP_F_EVP_SIGNFINAL 107 -# define EVP_F_EVP_VERIFYFINAL 108 -# define EVP_F_FIPS_CIPHERINIT 166 -# define EVP_F_FIPS_CIPHER_CTX_COPY 170 -# define EVP_F_FIPS_CIPHER_CTX_CTRL 167 -# define EVP_F_FIPS_CIPHER_CTX_SET_KEY_LENGTH 171 -# define EVP_F_FIPS_DIGESTINIT 168 -# define EVP_F_FIPS_MD_CTX_COPY 169 -# define EVP_F_HMAC_INIT_EX 174 -# define EVP_F_INT_CTX_NEW 157 -# define EVP_F_PKCS5_PBE_KEYIVGEN 117 -# define EVP_F_PKCS5_V2_PBE_KEYIVGEN 118 -# define EVP_F_PKCS5_V2_PBKDF2_KEYIVGEN 164 -# define EVP_F_PKCS8_SET_BROKEN 112 -# define EVP_F_PKEY_SET_TYPE 158 -# define EVP_F_RC2_MAGIC_TO_METH 109 -# define EVP_F_RC5_CTRL 125 - -/* Reason codes. */ -# define EVP_R_AES_IV_SETUP_FAILED 162 -# define EVP_R_AES_KEY_SETUP_FAILED 143 -# define EVP_R_ASN1_LIB 140 -# define EVP_R_BAD_BLOCK_LENGTH 136 -# define EVP_R_BAD_DECRYPT 100 -# define EVP_R_BAD_KEY_LENGTH 137 -# define EVP_R_BN_DECODE_ERROR 112 -# define EVP_R_BN_PUBKEY_ERROR 113 -# define EVP_R_BUFFER_TOO_SMALL 155 -# define EVP_R_CAMELLIA_KEY_SETUP_FAILED 157 -# define EVP_R_CIPHER_PARAMETER_ERROR 122 -# define EVP_R_COMMAND_NOT_SUPPORTED 147 -# define EVP_R_CTRL_NOT_IMPLEMENTED 132 -# define EVP_R_CTRL_OPERATION_NOT_IMPLEMENTED 133 -# define EVP_R_DATA_NOT_MULTIPLE_OF_BLOCK_LENGTH 138 -# define EVP_R_DECODE_ERROR 114 -# define EVP_R_DIFFERENT_KEY_TYPES 101 -# define EVP_R_DIFFERENT_PARAMETERS 153 -# define EVP_R_DISABLED_FOR_FIPS 163 -# define EVP_R_ENCODE_ERROR 115 -# define EVP_R_ERROR_LOADING_SECTION 165 -# define EVP_R_ERROR_SETTING_FIPS_MODE 166 -# define EVP_R_EVP_PBE_CIPHERINIT_ERROR 119 -# define EVP_R_EXPECTING_AN_RSA_KEY 127 -# define EVP_R_EXPECTING_A_DH_KEY 128 -# define EVP_R_EXPECTING_A_DSA_KEY 129 -# define EVP_R_EXPECTING_A_ECDSA_KEY 141 -# define EVP_R_EXPECTING_A_EC_KEY 142 -# define EVP_R_FIPS_MODE_NOT_SUPPORTED 167 -# define EVP_R_INITIALIZATION_ERROR 134 -# define EVP_R_INPUT_NOT_INITIALIZED 111 -# define EVP_R_INVALID_DIGEST 152 -# define EVP_R_INVALID_FIPS_MODE 168 -# define EVP_R_INVALID_KEY_LENGTH 130 -# define EVP_R_INVALID_OPERATION 148 -# define EVP_R_IV_TOO_LARGE 102 -# define EVP_R_KEYGEN_FAILURE 120 -# define EVP_R_MESSAGE_DIGEST_IS_NULL 159 -# define EVP_R_METHOD_NOT_SUPPORTED 144 -# define EVP_R_MISSING_PARAMETERS 103 -# define EVP_R_NO_CIPHER_SET 131 -# define EVP_R_NO_DEFAULT_DIGEST 158 -# define EVP_R_NO_DIGEST_SET 139 -# define EVP_R_NO_DSA_PARAMETERS 116 -# define EVP_R_NO_KEY_SET 154 -# define EVP_R_NO_OPERATION_SET 149 -# define EVP_R_NO_SIGN_FUNCTION_CONFIGURED 104 -# define EVP_R_NO_VERIFY_FUNCTION_CONFIGURED 105 -# define EVP_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE 150 -# define EVP_R_OPERATON_NOT_INITIALIZED 151 -# define EVP_R_PKCS8_UNKNOWN_BROKEN_TYPE 117 -# define EVP_R_PRIVATE_KEY_DECODE_ERROR 145 -# define EVP_R_PRIVATE_KEY_ENCODE_ERROR 146 -# define EVP_R_PUBLIC_KEY_NOT_RSA 106 -# define EVP_R_TOO_LARGE 164 -# define EVP_R_UNKNOWN_CIPHER 160 -# define EVP_R_UNKNOWN_DIGEST 161 -# define EVP_R_UNKNOWN_OPTION 169 -# define EVP_R_UNKNOWN_PBE_ALGORITHM 121 -# define EVP_R_UNSUPORTED_NUMBER_OF_ROUNDS 135 -# define EVP_R_UNSUPPORTED_ALGORITHM 156 -# define EVP_R_UNSUPPORTED_CIPHER 107 -# define EVP_R_UNSUPPORTED_KEYLENGTH 123 -# define EVP_R_UNSUPPORTED_KEY_DERIVATION_FUNCTION 124 -# define EVP_R_UNSUPPORTED_KEY_SIZE 108 -# define EVP_R_UNSUPPORTED_PRF 125 -# define EVP_R_UNSUPPORTED_PRIVATE_KEY_ALGORITHM 118 -# define EVP_R_UNSUPPORTED_SALT_TYPE 126 -# define EVP_R_WRAP_MODE_NOT_ALLOWED 170 -# define EVP_R_WRONG_FINAL_BLOCK_LENGTH 109 -# define EVP_R_WRONG_PUBLIC_KEY_TYPE 110 - -#ifdef __cplusplus -} -#endif -#endif diff --git a/ext/openssl-win32/inc32/openssl/hmac.h b/ext/openssl-win32/inc32/openssl/hmac.h deleted file mode 100644 index b8b55cda..00000000 --- a/ext/openssl-win32/inc32/openssl/hmac.h +++ /dev/null @@ -1,109 +0,0 @@ -/* crypto/hmac/hmac.h */ -/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) - * All rights reserved. - * - * This package is an SSL implementation written - * by Eric Young (eay@cryptsoft.com). - * The implementation was written so as to conform with Netscapes SSL. - * - * This library is free for commercial and non-commercial use as long as - * the following conditions are aheared to. The following conditions - * apply to all code found in this distribution, be it the RC4, RSA, - * lhash, DES, etc., code; not just the SSL code. The SSL documentation - * included with this distribution is covered by the same copyright terms - * except that the holder is Tim Hudson (tjh@cryptsoft.com). - * - * Copyright remains Eric Young's, and as such any Copyright notices in - * the code are not to be removed. - * If this package is used in a product, Eric Young should be given attribution - * as the author of the parts of the library used. - * This can be in the form of a textual message at program startup or - * in documentation (online or textual) provided with the package. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * "This product includes cryptographic software written by - * Eric Young (eay@cryptsoft.com)" - * The word 'cryptographic' can be left out if the rouines from the library - * being used are not cryptographic related :-). - * 4. If you include any Windows specific code (or a derivative thereof) from - * the apps directory (application code) you must include an acknowledgement: - * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" - * - * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * The licence and distribution terms for any publically available version or - * derivative of this code cannot be changed. i.e. this code cannot simply be - * copied and put under another distribution licence - * [including the GNU Public Licence.] - */ -#ifndef HEADER_HMAC_H -# define HEADER_HMAC_H - -# include - -# ifdef OPENSSL_NO_HMAC -# error HMAC is disabled. -# endif - -# include - -# define HMAC_MAX_MD_CBLOCK 128/* largest known is SHA512 */ - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct hmac_ctx_st { - const EVP_MD *md; - EVP_MD_CTX md_ctx; - EVP_MD_CTX i_ctx; - EVP_MD_CTX o_ctx; - unsigned int key_length; - unsigned char key[HMAC_MAX_MD_CBLOCK]; -} HMAC_CTX; - -# define HMAC_size(e) (EVP_MD_size((e)->md)) - -void HMAC_CTX_init(HMAC_CTX *ctx); -void HMAC_CTX_cleanup(HMAC_CTX *ctx); - -/* deprecated */ -# define HMAC_cleanup(ctx) HMAC_CTX_cleanup(ctx) - -/* deprecated */ -int HMAC_Init(HMAC_CTX *ctx, const void *key, int len, const EVP_MD *md); -int HMAC_Init_ex(HMAC_CTX *ctx, const void *key, int len, - const EVP_MD *md, ENGINE *impl); -int HMAC_Update(HMAC_CTX *ctx, const unsigned char *data, size_t len); -int HMAC_Final(HMAC_CTX *ctx, unsigned char *md, unsigned int *len); -unsigned char *HMAC(const EVP_MD *evp_md, const void *key, int key_len, - const unsigned char *d, size_t n, unsigned char *md, - unsigned int *md_len); -int HMAC_CTX_copy(HMAC_CTX *dctx, HMAC_CTX *sctx); - -void HMAC_CTX_set_flags(HMAC_CTX *ctx, unsigned long flags); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/ext/openssl-win32/inc32/openssl/kssl.h b/ext/openssl-win32/inc32/openssl/kssl.h deleted file mode 100644 index 9a576728..00000000 --- a/ext/openssl-win32/inc32/openssl/kssl.h +++ /dev/null @@ -1,197 +0,0 @@ -/* ssl/kssl.h -*- mode: C; c-file-style: "eay" -*- */ -/* - * Written by Vern Staats for the OpenSSL project - * 2000. project 2000. - */ -/* ==================================================================== - * Copyright (c) 2000 The OpenSSL Project. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. All advertising materials mentioning features or use of this - * software must display the following acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" - * - * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * licensing@OpenSSL.org. - * - * 5. Products derived from this software may not be called "OpenSSL" - * nor may "OpenSSL" appear in their names without prior written - * permission of the OpenSSL Project. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" - * - * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY - * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * ==================================================================== - * - * This product includes cryptographic software written by Eric Young - * (eay@cryptsoft.com). This product includes software written by Tim - * Hudson (tjh@cryptsoft.com). - * - */ - -/* - ** 19990701 VRS Started. - */ - -#ifndef KSSL_H -# define KSSL_H - -# include - -# ifndef OPENSSL_NO_KRB5 - -# include -# include -# include -# ifdef OPENSSL_SYS_WIN32 -/* - * These can sometimes get redefined indirectly by krb5 header files after - * they get undefed in ossl_typ.h - */ -# undef X509_NAME -# undef X509_EXTENSIONS -# undef OCSP_REQUEST -# undef OCSP_RESPONSE -# endif - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * Depending on which KRB5 implementation used, some types from - * the other may be missing. Resolve that here and now - */ -# ifdef KRB5_HEIMDAL -typedef unsigned char krb5_octet; -# define FAR -# else - -# ifndef FAR -# define FAR -# endif - -# endif - -/*- - * Uncomment this to debug kssl problems or - * to trace usage of the Kerberos session key - * - * #define KSSL_DEBUG - */ - -# ifndef KRB5SVC -# define KRB5SVC "host" -# endif - -# ifndef KRB5KEYTAB -# define KRB5KEYTAB "/etc/krb5.keytab" -# endif - -# ifndef KRB5SENDAUTH -# define KRB5SENDAUTH 1 -# endif - -# ifndef KRB5CHECKAUTH -# define KRB5CHECKAUTH 1 -# endif - -# ifndef KSSL_CLOCKSKEW -# define KSSL_CLOCKSKEW 300; -# endif - -# define KSSL_ERR_MAX 255 -typedef struct kssl_err_st { - int reason; - char text[KSSL_ERR_MAX + 1]; -} KSSL_ERR; - -/*- Context for passing - * (1) Kerberos session key to SSL, and - * (2) Config data between application and SSL lib - */ -typedef struct kssl_ctx_st { - /* used by: disposition: */ - char *service_name; /* C,S default ok (kssl) */ - char *service_host; /* C input, REQUIRED */ - char *client_princ; /* S output from krb5 ticket */ - char *keytab_file; /* S NULL (/etc/krb5.keytab) */ - char *cred_cache; /* C NULL (default) */ - krb5_enctype enctype; - int length; - krb5_octet FAR *key; -} KSSL_CTX; - -# define KSSL_CLIENT 1 -# define KSSL_SERVER 2 -# define KSSL_SERVICE 3 -# define KSSL_KEYTAB 4 - -# define KSSL_CTX_OK 0 -# define KSSL_CTX_ERR 1 -# define KSSL_NOMEM 2 - -/* Public (for use by applications that use OpenSSL with Kerberos 5 support */ -krb5_error_code kssl_ctx_setstring(KSSL_CTX *kssl_ctx, int which, char *text); -KSSL_CTX *kssl_ctx_new(void); -KSSL_CTX *kssl_ctx_free(KSSL_CTX *kssl_ctx); -void kssl_ctx_show(KSSL_CTX *kssl_ctx); -krb5_error_code kssl_ctx_setprinc(KSSL_CTX *kssl_ctx, int which, - krb5_data *realm, krb5_data *entity, - int nentities); -krb5_error_code kssl_cget_tkt(KSSL_CTX *kssl_ctx, krb5_data **enc_tktp, - krb5_data *authenp, KSSL_ERR *kssl_err); -krb5_error_code kssl_sget_tkt(KSSL_CTX *kssl_ctx, krb5_data *indata, - krb5_ticket_times *ttimes, KSSL_ERR *kssl_err); -krb5_error_code kssl_ctx_setkey(KSSL_CTX *kssl_ctx, krb5_keyblock *session); -void kssl_err_set(KSSL_ERR *kssl_err, int reason, char *text); -void kssl_krb5_free_data_contents(krb5_context context, krb5_data *data); -krb5_error_code kssl_build_principal_2(krb5_context context, - krb5_principal *princ, int rlen, - const char *realm, int slen, - const char *svc, int hlen, - const char *host); -krb5_error_code kssl_validate_times(krb5_timestamp atime, - krb5_ticket_times *ttimes); -krb5_error_code kssl_check_authent(KSSL_CTX *kssl_ctx, krb5_data *authentp, - krb5_timestamp *atimep, - KSSL_ERR *kssl_err); -unsigned char *kssl_skip_confound(krb5_enctype enctype, unsigned char *authn); - -void SSL_set0_kssl_ctx(SSL *s, KSSL_CTX *kctx); -KSSL_CTX *SSL_get0_kssl_ctx(SSL *s); -char *kssl_ctx_get0_client_princ(KSSL_CTX *kctx); - -#ifdef __cplusplus -} -#endif -# endif /* OPENSSL_NO_KRB5 */ -#endif /* KSSL_H */ diff --git a/ext/openssl-win32/inc32/openssl/lhash.h b/ext/openssl-win32/inc32/openssl/lhash.h deleted file mode 100644 index b6c328bf..00000000 --- a/ext/openssl-win32/inc32/openssl/lhash.h +++ /dev/null @@ -1,240 +0,0 @@ -/* crypto/lhash/lhash.h */ -/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) - * All rights reserved. - * - * This package is an SSL implementation written - * by Eric Young (eay@cryptsoft.com). - * The implementation was written so as to conform with Netscapes SSL. - * - * This library is free for commercial and non-commercial use as long as - * the following conditions are aheared to. The following conditions - * apply to all code found in this distribution, be it the RC4, RSA, - * lhash, DES, etc., code; not just the SSL code. The SSL documentation - * included with this distribution is covered by the same copyright terms - * except that the holder is Tim Hudson (tjh@cryptsoft.com). - * - * Copyright remains Eric Young's, and as such any Copyright notices in - * the code are not to be removed. - * If this package is used in a product, Eric Young should be given attribution - * as the author of the parts of the library used. - * This can be in the form of a textual message at program startup or - * in documentation (online or textual) provided with the package. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * "This product includes cryptographic software written by - * Eric Young (eay@cryptsoft.com)" - * The word 'cryptographic' can be left out if the rouines from the library - * being used are not cryptographic related :-). - * 4. If you include any Windows specific code (or a derivative thereof) from - * the apps directory (application code) you must include an acknowledgement: - * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" - * - * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * The licence and distribution terms for any publically available version or - * derivative of this code cannot be changed. i.e. this code cannot simply be - * copied and put under another distribution licence - * [including the GNU Public Licence.] - */ - -/* - * Header for dynamic hash table routines Author - Eric Young - */ - -#ifndef HEADER_LHASH_H -# define HEADER_LHASH_H - -# include -# ifndef OPENSSL_NO_FP_API -# include -# endif - -# ifndef OPENSSL_NO_BIO -# include -# endif - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct lhash_node_st { - void *data; - struct lhash_node_st *next; -# ifndef OPENSSL_NO_HASH_COMP - unsigned long hash; -# endif -} LHASH_NODE; - -typedef int (*LHASH_COMP_FN_TYPE) (const void *, const void *); -typedef unsigned long (*LHASH_HASH_FN_TYPE) (const void *); -typedef void (*LHASH_DOALL_FN_TYPE) (void *); -typedef void (*LHASH_DOALL_ARG_FN_TYPE) (void *, void *); - -/* - * Macros for declaring and implementing type-safe wrappers for LHASH - * callbacks. This way, callbacks can be provided to LHASH structures without - * function pointer casting and the macro-defined callbacks provide - * per-variable casting before deferring to the underlying type-specific - * callbacks. NB: It is possible to place a "static" in front of both the - * DECLARE and IMPLEMENT macros if the functions are strictly internal. - */ - -/* First: "hash" functions */ -# define DECLARE_LHASH_HASH_FN(name, o_type) \ - unsigned long name##_LHASH_HASH(const void *); -# define IMPLEMENT_LHASH_HASH_FN(name, o_type) \ - unsigned long name##_LHASH_HASH(const void *arg) { \ - const o_type *a = arg; \ - return name##_hash(a); } -# define LHASH_HASH_FN(name) name##_LHASH_HASH - -/* Second: "compare" functions */ -# define DECLARE_LHASH_COMP_FN(name, o_type) \ - int name##_LHASH_COMP(const void *, const void *); -# define IMPLEMENT_LHASH_COMP_FN(name, o_type) \ - int name##_LHASH_COMP(const void *arg1, const void *arg2) { \ - const o_type *a = arg1; \ - const o_type *b = arg2; \ - return name##_cmp(a,b); } -# define LHASH_COMP_FN(name) name##_LHASH_COMP - -/* Third: "doall" functions */ -# define DECLARE_LHASH_DOALL_FN(name, o_type) \ - void name##_LHASH_DOALL(void *); -# define IMPLEMENT_LHASH_DOALL_FN(name, o_type) \ - void name##_LHASH_DOALL(void *arg) { \ - o_type *a = arg; \ - name##_doall(a); } -# define LHASH_DOALL_FN(name) name##_LHASH_DOALL - -/* Fourth: "doall_arg" functions */ -# define DECLARE_LHASH_DOALL_ARG_FN(name, o_type, a_type) \ - void name##_LHASH_DOALL_ARG(void *, void *); -# define IMPLEMENT_LHASH_DOALL_ARG_FN(name, o_type, a_type) \ - void name##_LHASH_DOALL_ARG(void *arg1, void *arg2) { \ - o_type *a = arg1; \ - a_type *b = arg2; \ - name##_doall_arg(a, b); } -# define LHASH_DOALL_ARG_FN(name) name##_LHASH_DOALL_ARG - -typedef struct lhash_st { - LHASH_NODE **b; - LHASH_COMP_FN_TYPE comp; - LHASH_HASH_FN_TYPE hash; - unsigned int num_nodes; - unsigned int num_alloc_nodes; - unsigned int p; - unsigned int pmax; - unsigned long up_load; /* load times 256 */ - unsigned long down_load; /* load times 256 */ - unsigned long num_items; - unsigned long num_expands; - unsigned long num_expand_reallocs; - unsigned long num_contracts; - unsigned long num_contract_reallocs; - unsigned long num_hash_calls; - unsigned long num_comp_calls; - unsigned long num_insert; - unsigned long num_replace; - unsigned long num_delete; - unsigned long num_no_delete; - unsigned long num_retrieve; - unsigned long num_retrieve_miss; - unsigned long num_hash_comps; - int error; -} _LHASH; /* Do not use _LHASH directly, use LHASH_OF - * and friends */ - -# define LH_LOAD_MULT 256 - -/* - * Indicates a malloc() error in the last call, this is only bad in - * lh_insert(). - */ -# define lh_error(lh) ((lh)->error) - -_LHASH *lh_new(LHASH_HASH_FN_TYPE h, LHASH_COMP_FN_TYPE c); -void lh_free(_LHASH *lh); -void *lh_insert(_LHASH *lh, void *data); -void *lh_delete(_LHASH *lh, const void *data); -void *lh_retrieve(_LHASH *lh, const void *data); -void lh_doall(_LHASH *lh, LHASH_DOALL_FN_TYPE func); -void lh_doall_arg(_LHASH *lh, LHASH_DOALL_ARG_FN_TYPE func, void *arg); -unsigned long lh_strhash(const char *c); -unsigned long lh_num_items(const _LHASH *lh); - -# ifndef OPENSSL_NO_FP_API -void lh_stats(const _LHASH *lh, FILE *out); -void lh_node_stats(const _LHASH *lh, FILE *out); -void lh_node_usage_stats(const _LHASH *lh, FILE *out); -# endif - -# ifndef OPENSSL_NO_BIO -void lh_stats_bio(const _LHASH *lh, BIO *out); -void lh_node_stats_bio(const _LHASH *lh, BIO *out); -void lh_node_usage_stats_bio(const _LHASH *lh, BIO *out); -# endif - -/* Type checking... */ - -# define LHASH_OF(type) struct lhash_st_##type - -# define DECLARE_LHASH_OF(type) LHASH_OF(type) { int dummy; } - -# define CHECKED_LHASH_OF(type,lh) \ - ((_LHASH *)CHECKED_PTR_OF(LHASH_OF(type),lh)) - -/* Define wrapper functions. */ -# define LHM_lh_new(type, name) \ - ((LHASH_OF(type) *)lh_new(LHASH_HASH_FN(name), LHASH_COMP_FN(name))) -# define LHM_lh_error(type, lh) \ - lh_error(CHECKED_LHASH_OF(type,lh)) -# define LHM_lh_insert(type, lh, inst) \ - ((type *)lh_insert(CHECKED_LHASH_OF(type, lh), \ - CHECKED_PTR_OF(type, inst))) -# define LHM_lh_retrieve(type, lh, inst) \ - ((type *)lh_retrieve(CHECKED_LHASH_OF(type, lh), \ - CHECKED_PTR_OF(type, inst))) -# define LHM_lh_delete(type, lh, inst) \ - ((type *)lh_delete(CHECKED_LHASH_OF(type, lh), \ - CHECKED_PTR_OF(type, inst))) -# define LHM_lh_doall(type, lh,fn) lh_doall(CHECKED_LHASH_OF(type, lh), fn) -# define LHM_lh_doall_arg(type, lh, fn, arg_type, arg) \ - lh_doall_arg(CHECKED_LHASH_OF(type, lh), fn, CHECKED_PTR_OF(arg_type, arg)) -# define LHM_lh_num_items(type, lh) lh_num_items(CHECKED_LHASH_OF(type, lh)) -# define LHM_lh_down_load(type, lh) (CHECKED_LHASH_OF(type, lh)->down_load) -# define LHM_lh_node_stats_bio(type, lh, out) \ - lh_node_stats_bio(CHECKED_LHASH_OF(type, lh), out) -# define LHM_lh_node_usage_stats_bio(type, lh, out) \ - lh_node_usage_stats_bio(CHECKED_LHASH_OF(type, lh), out) -# define LHM_lh_stats_bio(type, lh, out) \ - lh_stats_bio(CHECKED_LHASH_OF(type, lh), out) -# define LHM_lh_free(type, lh) lh_free(CHECKED_LHASH_OF(type, lh)) - -DECLARE_LHASH_OF(OPENSSL_STRING); -DECLARE_LHASH_OF(OPENSSL_CSTRING); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/ext/openssl-win32/inc32/openssl/obj_mac.h b/ext/openssl-win32/inc32/openssl/obj_mac.h deleted file mode 100644 index 779c309b..00000000 --- a/ext/openssl-win32/inc32/openssl/obj_mac.h +++ /dev/null @@ -1,4194 +0,0 @@ -/* crypto/objects/obj_mac.h */ - -/* - * THIS FILE IS GENERATED FROM objects.txt by objects.pl via the following - * command: perl objects.pl objects.txt obj_mac.num obj_mac.h - */ - -/* Copyright (C) 1995-1997 Eric Young (eay@cryptsoft.com) - * All rights reserved. - * - * This package is an SSL implementation written - * by Eric Young (eay@cryptsoft.com). - * The implementation was written so as to conform with Netscapes SSL. - * - * This library is free for commercial and non-commercial use as long as - * the following conditions are aheared to. The following conditions - * apply to all code found in this distribution, be it the RC4, RSA, - * lhash, DES, etc., code; not just the SSL code. The SSL documentation - * included with this distribution is covered by the same copyright terms - * except that the holder is Tim Hudson (tjh@cryptsoft.com). - * - * Copyright remains Eric Young's, and as such any Copyright notices in - * the code are not to be removed. - * If this package is used in a product, Eric Young should be given attribution - * as the author of the parts of the library used. - * This can be in the form of a textual message at program startup or - * in documentation (online or textual) provided with the package. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * "This product includes cryptographic software written by - * Eric Young (eay@cryptsoft.com)" - * The word 'cryptographic' can be left out if the rouines from the library - * being used are not cryptographic related :-). - * 4. If you include any Windows specific code (or a derivative thereof) from - * the apps directory (application code) you must include an acknowledgement: - * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" - * - * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * The licence and distribution terms for any publically available version or - * derivative of this code cannot be changed. i.e. this code cannot simply be - * copied and put under another distribution licence - * [including the GNU Public Licence.] - */ - -#define SN_undef "UNDEF" -#define LN_undef "undefined" -#define NID_undef 0 -#define OBJ_undef 0L - -#define SN_itu_t "ITU-T" -#define LN_itu_t "itu-t" -#define NID_itu_t 645 -#define OBJ_itu_t 0L - -#define NID_ccitt 404 -#define OBJ_ccitt OBJ_itu_t - -#define SN_iso "ISO" -#define LN_iso "iso" -#define NID_iso 181 -#define OBJ_iso 1L - -#define SN_joint_iso_itu_t "JOINT-ISO-ITU-T" -#define LN_joint_iso_itu_t "joint-iso-itu-t" -#define NID_joint_iso_itu_t 646 -#define OBJ_joint_iso_itu_t 2L - -#define NID_joint_iso_ccitt 393 -#define OBJ_joint_iso_ccitt OBJ_joint_iso_itu_t - -#define SN_member_body "member-body" -#define LN_member_body "ISO Member Body" -#define NID_member_body 182 -#define OBJ_member_body OBJ_iso,2L - -#define SN_identified_organization "identified-organization" -#define NID_identified_organization 676 -#define OBJ_identified_organization OBJ_iso,3L - -#define SN_hmac_md5 "HMAC-MD5" -#define LN_hmac_md5 "hmac-md5" -#define NID_hmac_md5 780 -#define OBJ_hmac_md5 OBJ_identified_organization,6L,1L,5L,5L,8L,1L,1L - -#define SN_hmac_sha1 "HMAC-SHA1" -#define LN_hmac_sha1 "hmac-sha1" -#define NID_hmac_sha1 781 -#define OBJ_hmac_sha1 OBJ_identified_organization,6L,1L,5L,5L,8L,1L,2L - -#define SN_certicom_arc "certicom-arc" -#define NID_certicom_arc 677 -#define OBJ_certicom_arc OBJ_identified_organization,132L - -#define SN_international_organizations "international-organizations" -#define LN_international_organizations "International Organizations" -#define NID_international_organizations 647 -#define OBJ_international_organizations OBJ_joint_iso_itu_t,23L - -#define SN_wap "wap" -#define NID_wap 678 -#define OBJ_wap OBJ_international_organizations,43L - -#define SN_wap_wsg "wap-wsg" -#define NID_wap_wsg 679 -#define OBJ_wap_wsg OBJ_wap,1L - -#define SN_selected_attribute_types "selected-attribute-types" -#define LN_selected_attribute_types "Selected Attribute Types" -#define NID_selected_attribute_types 394 -#define OBJ_selected_attribute_types OBJ_joint_iso_itu_t,5L,1L,5L - -#define SN_clearance "clearance" -#define NID_clearance 395 -#define OBJ_clearance OBJ_selected_attribute_types,55L - -#define SN_ISO_US "ISO-US" -#define LN_ISO_US "ISO US Member Body" -#define NID_ISO_US 183 -#define OBJ_ISO_US OBJ_member_body,840L - -#define SN_X9_57 "X9-57" -#define LN_X9_57 "X9.57" -#define NID_X9_57 184 -#define OBJ_X9_57 OBJ_ISO_US,10040L - -#define SN_X9cm "X9cm" -#define LN_X9cm "X9.57 CM ?" -#define NID_X9cm 185 -#define OBJ_X9cm OBJ_X9_57,4L - -#define SN_dsa "DSA" -#define LN_dsa "dsaEncryption" -#define NID_dsa 116 -#define OBJ_dsa OBJ_X9cm,1L - -#define SN_dsaWithSHA1 "DSA-SHA1" -#define LN_dsaWithSHA1 "dsaWithSHA1" -#define NID_dsaWithSHA1 113 -#define OBJ_dsaWithSHA1 OBJ_X9cm,3L - -#define SN_ansi_X9_62 "ansi-X9-62" -#define LN_ansi_X9_62 "ANSI X9.62" -#define NID_ansi_X9_62 405 -#define OBJ_ansi_X9_62 OBJ_ISO_US,10045L - -#define OBJ_X9_62_id_fieldType OBJ_ansi_X9_62,1L - -#define SN_X9_62_prime_field "prime-field" -#define NID_X9_62_prime_field 406 -#define OBJ_X9_62_prime_field OBJ_X9_62_id_fieldType,1L - -#define SN_X9_62_characteristic_two_field "characteristic-two-field" -#define NID_X9_62_characteristic_two_field 407 -#define OBJ_X9_62_characteristic_two_field OBJ_X9_62_id_fieldType,2L - -#define SN_X9_62_id_characteristic_two_basis "id-characteristic-two-basis" -#define NID_X9_62_id_characteristic_two_basis 680 -#define OBJ_X9_62_id_characteristic_two_basis OBJ_X9_62_characteristic_two_field,3L - -#define SN_X9_62_onBasis "onBasis" -#define NID_X9_62_onBasis 681 -#define OBJ_X9_62_onBasis OBJ_X9_62_id_characteristic_two_basis,1L - -#define SN_X9_62_tpBasis "tpBasis" -#define NID_X9_62_tpBasis 682 -#define OBJ_X9_62_tpBasis OBJ_X9_62_id_characteristic_two_basis,2L - -#define SN_X9_62_ppBasis "ppBasis" -#define NID_X9_62_ppBasis 683 -#define OBJ_X9_62_ppBasis OBJ_X9_62_id_characteristic_two_basis,3L - -#define OBJ_X9_62_id_publicKeyType OBJ_ansi_X9_62,2L - -#define SN_X9_62_id_ecPublicKey "id-ecPublicKey" -#define NID_X9_62_id_ecPublicKey 408 -#define OBJ_X9_62_id_ecPublicKey OBJ_X9_62_id_publicKeyType,1L - -#define OBJ_X9_62_ellipticCurve OBJ_ansi_X9_62,3L - -#define OBJ_X9_62_c_TwoCurve OBJ_X9_62_ellipticCurve,0L - -#define SN_X9_62_c2pnb163v1 "c2pnb163v1" -#define NID_X9_62_c2pnb163v1 684 -#define OBJ_X9_62_c2pnb163v1 OBJ_X9_62_c_TwoCurve,1L - -#define SN_X9_62_c2pnb163v2 "c2pnb163v2" -#define NID_X9_62_c2pnb163v2 685 -#define OBJ_X9_62_c2pnb163v2 OBJ_X9_62_c_TwoCurve,2L - -#define SN_X9_62_c2pnb163v3 "c2pnb163v3" -#define NID_X9_62_c2pnb163v3 686 -#define OBJ_X9_62_c2pnb163v3 OBJ_X9_62_c_TwoCurve,3L - -#define SN_X9_62_c2pnb176v1 "c2pnb176v1" -#define NID_X9_62_c2pnb176v1 687 -#define OBJ_X9_62_c2pnb176v1 OBJ_X9_62_c_TwoCurve,4L - -#define SN_X9_62_c2tnb191v1 "c2tnb191v1" -#define NID_X9_62_c2tnb191v1 688 -#define OBJ_X9_62_c2tnb191v1 OBJ_X9_62_c_TwoCurve,5L - -#define SN_X9_62_c2tnb191v2 "c2tnb191v2" -#define NID_X9_62_c2tnb191v2 689 -#define OBJ_X9_62_c2tnb191v2 OBJ_X9_62_c_TwoCurve,6L - -#define SN_X9_62_c2tnb191v3 "c2tnb191v3" -#define NID_X9_62_c2tnb191v3 690 -#define OBJ_X9_62_c2tnb191v3 OBJ_X9_62_c_TwoCurve,7L - -#define SN_X9_62_c2onb191v4 "c2onb191v4" -#define NID_X9_62_c2onb191v4 691 -#define OBJ_X9_62_c2onb191v4 OBJ_X9_62_c_TwoCurve,8L - -#define SN_X9_62_c2onb191v5 "c2onb191v5" -#define NID_X9_62_c2onb191v5 692 -#define OBJ_X9_62_c2onb191v5 OBJ_X9_62_c_TwoCurve,9L - -#define SN_X9_62_c2pnb208w1 "c2pnb208w1" -#define NID_X9_62_c2pnb208w1 693 -#define OBJ_X9_62_c2pnb208w1 OBJ_X9_62_c_TwoCurve,10L - -#define SN_X9_62_c2tnb239v1 "c2tnb239v1" -#define NID_X9_62_c2tnb239v1 694 -#define OBJ_X9_62_c2tnb239v1 OBJ_X9_62_c_TwoCurve,11L - -#define SN_X9_62_c2tnb239v2 "c2tnb239v2" -#define NID_X9_62_c2tnb239v2 695 -#define OBJ_X9_62_c2tnb239v2 OBJ_X9_62_c_TwoCurve,12L - -#define SN_X9_62_c2tnb239v3 "c2tnb239v3" -#define NID_X9_62_c2tnb239v3 696 -#define OBJ_X9_62_c2tnb239v3 OBJ_X9_62_c_TwoCurve,13L - -#define SN_X9_62_c2onb239v4 "c2onb239v4" -#define NID_X9_62_c2onb239v4 697 -#define OBJ_X9_62_c2onb239v4 OBJ_X9_62_c_TwoCurve,14L - -#define SN_X9_62_c2onb239v5 "c2onb239v5" -#define NID_X9_62_c2onb239v5 698 -#define OBJ_X9_62_c2onb239v5 OBJ_X9_62_c_TwoCurve,15L - -#define SN_X9_62_c2pnb272w1 "c2pnb272w1" -#define NID_X9_62_c2pnb272w1 699 -#define OBJ_X9_62_c2pnb272w1 OBJ_X9_62_c_TwoCurve,16L - -#define SN_X9_62_c2pnb304w1 "c2pnb304w1" -#define NID_X9_62_c2pnb304w1 700 -#define OBJ_X9_62_c2pnb304w1 OBJ_X9_62_c_TwoCurve,17L - -#define SN_X9_62_c2tnb359v1 "c2tnb359v1" -#define NID_X9_62_c2tnb359v1 701 -#define OBJ_X9_62_c2tnb359v1 OBJ_X9_62_c_TwoCurve,18L - -#define SN_X9_62_c2pnb368w1 "c2pnb368w1" -#define NID_X9_62_c2pnb368w1 702 -#define OBJ_X9_62_c2pnb368w1 OBJ_X9_62_c_TwoCurve,19L - -#define SN_X9_62_c2tnb431r1 "c2tnb431r1" -#define NID_X9_62_c2tnb431r1 703 -#define OBJ_X9_62_c2tnb431r1 OBJ_X9_62_c_TwoCurve,20L - -#define OBJ_X9_62_primeCurve OBJ_X9_62_ellipticCurve,1L - -#define SN_X9_62_prime192v1 "prime192v1" -#define NID_X9_62_prime192v1 409 -#define OBJ_X9_62_prime192v1 OBJ_X9_62_primeCurve,1L - -#define SN_X9_62_prime192v2 "prime192v2" -#define NID_X9_62_prime192v2 410 -#define OBJ_X9_62_prime192v2 OBJ_X9_62_primeCurve,2L - -#define SN_X9_62_prime192v3 "prime192v3" -#define NID_X9_62_prime192v3 411 -#define OBJ_X9_62_prime192v3 OBJ_X9_62_primeCurve,3L - -#define SN_X9_62_prime239v1 "prime239v1" -#define NID_X9_62_prime239v1 412 -#define OBJ_X9_62_prime239v1 OBJ_X9_62_primeCurve,4L - -#define SN_X9_62_prime239v2 "prime239v2" -#define NID_X9_62_prime239v2 413 -#define OBJ_X9_62_prime239v2 OBJ_X9_62_primeCurve,5L - -#define SN_X9_62_prime239v3 "prime239v3" -#define NID_X9_62_prime239v3 414 -#define OBJ_X9_62_prime239v3 OBJ_X9_62_primeCurve,6L - -#define SN_X9_62_prime256v1 "prime256v1" -#define NID_X9_62_prime256v1 415 -#define OBJ_X9_62_prime256v1 OBJ_X9_62_primeCurve,7L - -#define OBJ_X9_62_id_ecSigType OBJ_ansi_X9_62,4L - -#define SN_ecdsa_with_SHA1 "ecdsa-with-SHA1" -#define NID_ecdsa_with_SHA1 416 -#define OBJ_ecdsa_with_SHA1 OBJ_X9_62_id_ecSigType,1L - -#define SN_ecdsa_with_Recommended "ecdsa-with-Recommended" -#define NID_ecdsa_with_Recommended 791 -#define OBJ_ecdsa_with_Recommended OBJ_X9_62_id_ecSigType,2L - -#define SN_ecdsa_with_Specified "ecdsa-with-Specified" -#define NID_ecdsa_with_Specified 792 -#define OBJ_ecdsa_with_Specified OBJ_X9_62_id_ecSigType,3L - -#define SN_ecdsa_with_SHA224 "ecdsa-with-SHA224" -#define NID_ecdsa_with_SHA224 793 -#define OBJ_ecdsa_with_SHA224 OBJ_ecdsa_with_Specified,1L - -#define SN_ecdsa_with_SHA256 "ecdsa-with-SHA256" -#define NID_ecdsa_with_SHA256 794 -#define OBJ_ecdsa_with_SHA256 OBJ_ecdsa_with_Specified,2L - -#define SN_ecdsa_with_SHA384 "ecdsa-with-SHA384" -#define NID_ecdsa_with_SHA384 795 -#define OBJ_ecdsa_with_SHA384 OBJ_ecdsa_with_Specified,3L - -#define SN_ecdsa_with_SHA512 "ecdsa-with-SHA512" -#define NID_ecdsa_with_SHA512 796 -#define OBJ_ecdsa_with_SHA512 OBJ_ecdsa_with_Specified,4L - -#define OBJ_secg_ellipticCurve OBJ_certicom_arc,0L - -#define SN_secp112r1 "secp112r1" -#define NID_secp112r1 704 -#define OBJ_secp112r1 OBJ_secg_ellipticCurve,6L - -#define SN_secp112r2 "secp112r2" -#define NID_secp112r2 705 -#define OBJ_secp112r2 OBJ_secg_ellipticCurve,7L - -#define SN_secp128r1 "secp128r1" -#define NID_secp128r1 706 -#define OBJ_secp128r1 OBJ_secg_ellipticCurve,28L - -#define SN_secp128r2 "secp128r2" -#define NID_secp128r2 707 -#define OBJ_secp128r2 OBJ_secg_ellipticCurve,29L - -#define SN_secp160k1 "secp160k1" -#define NID_secp160k1 708 -#define OBJ_secp160k1 OBJ_secg_ellipticCurve,9L - -#define SN_secp160r1 "secp160r1" -#define NID_secp160r1 709 -#define OBJ_secp160r1 OBJ_secg_ellipticCurve,8L - -#define SN_secp160r2 "secp160r2" -#define NID_secp160r2 710 -#define OBJ_secp160r2 OBJ_secg_ellipticCurve,30L - -#define SN_secp192k1 "secp192k1" -#define NID_secp192k1 711 -#define OBJ_secp192k1 OBJ_secg_ellipticCurve,31L - -#define SN_secp224k1 "secp224k1" -#define NID_secp224k1 712 -#define OBJ_secp224k1 OBJ_secg_ellipticCurve,32L - -#define SN_secp224r1 "secp224r1" -#define NID_secp224r1 713 -#define OBJ_secp224r1 OBJ_secg_ellipticCurve,33L - -#define SN_secp256k1 "secp256k1" -#define NID_secp256k1 714 -#define OBJ_secp256k1 OBJ_secg_ellipticCurve,10L - -#define SN_secp384r1 "secp384r1" -#define NID_secp384r1 715 -#define OBJ_secp384r1 OBJ_secg_ellipticCurve,34L - -#define SN_secp521r1 "secp521r1" -#define NID_secp521r1 716 -#define OBJ_secp521r1 OBJ_secg_ellipticCurve,35L - -#define SN_sect113r1 "sect113r1" -#define NID_sect113r1 717 -#define OBJ_sect113r1 OBJ_secg_ellipticCurve,4L - -#define SN_sect113r2 "sect113r2" -#define NID_sect113r2 718 -#define OBJ_sect113r2 OBJ_secg_ellipticCurve,5L - -#define SN_sect131r1 "sect131r1" -#define NID_sect131r1 719 -#define OBJ_sect131r1 OBJ_secg_ellipticCurve,22L - -#define SN_sect131r2 "sect131r2" -#define NID_sect131r2 720 -#define OBJ_sect131r2 OBJ_secg_ellipticCurve,23L - -#define SN_sect163k1 "sect163k1" -#define NID_sect163k1 721 -#define OBJ_sect163k1 OBJ_secg_ellipticCurve,1L - -#define SN_sect163r1 "sect163r1" -#define NID_sect163r1 722 -#define OBJ_sect163r1 OBJ_secg_ellipticCurve,2L - -#define SN_sect163r2 "sect163r2" -#define NID_sect163r2 723 -#define OBJ_sect163r2 OBJ_secg_ellipticCurve,15L - -#define SN_sect193r1 "sect193r1" -#define NID_sect193r1 724 -#define OBJ_sect193r1 OBJ_secg_ellipticCurve,24L - -#define SN_sect193r2 "sect193r2" -#define NID_sect193r2 725 -#define OBJ_sect193r2 OBJ_secg_ellipticCurve,25L - -#define SN_sect233k1 "sect233k1" -#define NID_sect233k1 726 -#define OBJ_sect233k1 OBJ_secg_ellipticCurve,26L - -#define SN_sect233r1 "sect233r1" -#define NID_sect233r1 727 -#define OBJ_sect233r1 OBJ_secg_ellipticCurve,27L - -#define SN_sect239k1 "sect239k1" -#define NID_sect239k1 728 -#define OBJ_sect239k1 OBJ_secg_ellipticCurve,3L - -#define SN_sect283k1 "sect283k1" -#define NID_sect283k1 729 -#define OBJ_sect283k1 OBJ_secg_ellipticCurve,16L - -#define SN_sect283r1 "sect283r1" -#define NID_sect283r1 730 -#define OBJ_sect283r1 OBJ_secg_ellipticCurve,17L - -#define SN_sect409k1 "sect409k1" -#define NID_sect409k1 731 -#define OBJ_sect409k1 OBJ_secg_ellipticCurve,36L - -#define SN_sect409r1 "sect409r1" -#define NID_sect409r1 732 -#define OBJ_sect409r1 OBJ_secg_ellipticCurve,37L - -#define SN_sect571k1 "sect571k1" -#define NID_sect571k1 733 -#define OBJ_sect571k1 OBJ_secg_ellipticCurve,38L - -#define SN_sect571r1 "sect571r1" -#define NID_sect571r1 734 -#define OBJ_sect571r1 OBJ_secg_ellipticCurve,39L - -#define OBJ_wap_wsg_idm_ecid OBJ_wap_wsg,4L - -#define SN_wap_wsg_idm_ecid_wtls1 "wap-wsg-idm-ecid-wtls1" -#define NID_wap_wsg_idm_ecid_wtls1 735 -#define OBJ_wap_wsg_idm_ecid_wtls1 OBJ_wap_wsg_idm_ecid,1L - -#define SN_wap_wsg_idm_ecid_wtls3 "wap-wsg-idm-ecid-wtls3" -#define NID_wap_wsg_idm_ecid_wtls3 736 -#define OBJ_wap_wsg_idm_ecid_wtls3 OBJ_wap_wsg_idm_ecid,3L - -#define SN_wap_wsg_idm_ecid_wtls4 "wap-wsg-idm-ecid-wtls4" -#define NID_wap_wsg_idm_ecid_wtls4 737 -#define OBJ_wap_wsg_idm_ecid_wtls4 OBJ_wap_wsg_idm_ecid,4L - -#define SN_wap_wsg_idm_ecid_wtls5 "wap-wsg-idm-ecid-wtls5" -#define NID_wap_wsg_idm_ecid_wtls5 738 -#define OBJ_wap_wsg_idm_ecid_wtls5 OBJ_wap_wsg_idm_ecid,5L - -#define SN_wap_wsg_idm_ecid_wtls6 "wap-wsg-idm-ecid-wtls6" -#define NID_wap_wsg_idm_ecid_wtls6 739 -#define OBJ_wap_wsg_idm_ecid_wtls6 OBJ_wap_wsg_idm_ecid,6L - -#define SN_wap_wsg_idm_ecid_wtls7 "wap-wsg-idm-ecid-wtls7" -#define NID_wap_wsg_idm_ecid_wtls7 740 -#define OBJ_wap_wsg_idm_ecid_wtls7 OBJ_wap_wsg_idm_ecid,7L - -#define SN_wap_wsg_idm_ecid_wtls8 "wap-wsg-idm-ecid-wtls8" -#define NID_wap_wsg_idm_ecid_wtls8 741 -#define OBJ_wap_wsg_idm_ecid_wtls8 OBJ_wap_wsg_idm_ecid,8L - -#define SN_wap_wsg_idm_ecid_wtls9 "wap-wsg-idm-ecid-wtls9" -#define NID_wap_wsg_idm_ecid_wtls9 742 -#define OBJ_wap_wsg_idm_ecid_wtls9 OBJ_wap_wsg_idm_ecid,9L - -#define SN_wap_wsg_idm_ecid_wtls10 "wap-wsg-idm-ecid-wtls10" -#define NID_wap_wsg_idm_ecid_wtls10 743 -#define OBJ_wap_wsg_idm_ecid_wtls10 OBJ_wap_wsg_idm_ecid,10L - -#define SN_wap_wsg_idm_ecid_wtls11 "wap-wsg-idm-ecid-wtls11" -#define NID_wap_wsg_idm_ecid_wtls11 744 -#define OBJ_wap_wsg_idm_ecid_wtls11 OBJ_wap_wsg_idm_ecid,11L - -#define SN_wap_wsg_idm_ecid_wtls12 "wap-wsg-idm-ecid-wtls12" -#define NID_wap_wsg_idm_ecid_wtls12 745 -#define OBJ_wap_wsg_idm_ecid_wtls12 OBJ_wap_wsg_idm_ecid,12L - -#define SN_cast5_cbc "CAST5-CBC" -#define LN_cast5_cbc "cast5-cbc" -#define NID_cast5_cbc 108 -#define OBJ_cast5_cbc OBJ_ISO_US,113533L,7L,66L,10L - -#define SN_cast5_ecb "CAST5-ECB" -#define LN_cast5_ecb "cast5-ecb" -#define NID_cast5_ecb 109 - -#define SN_cast5_cfb64 "CAST5-CFB" -#define LN_cast5_cfb64 "cast5-cfb" -#define NID_cast5_cfb64 110 - -#define SN_cast5_ofb64 "CAST5-OFB" -#define LN_cast5_ofb64 "cast5-ofb" -#define NID_cast5_ofb64 111 - -#define LN_pbeWithMD5AndCast5_CBC "pbeWithMD5AndCast5CBC" -#define NID_pbeWithMD5AndCast5_CBC 112 -#define OBJ_pbeWithMD5AndCast5_CBC OBJ_ISO_US,113533L,7L,66L,12L - -#define SN_id_PasswordBasedMAC "id-PasswordBasedMAC" -#define LN_id_PasswordBasedMAC "password based MAC" -#define NID_id_PasswordBasedMAC 782 -#define OBJ_id_PasswordBasedMAC OBJ_ISO_US,113533L,7L,66L,13L - -#define SN_id_DHBasedMac "id-DHBasedMac" -#define LN_id_DHBasedMac "Diffie-Hellman based MAC" -#define NID_id_DHBasedMac 783 -#define OBJ_id_DHBasedMac OBJ_ISO_US,113533L,7L,66L,30L - -#define SN_rsadsi "rsadsi" -#define LN_rsadsi "RSA Data Security, Inc." -#define NID_rsadsi 1 -#define OBJ_rsadsi OBJ_ISO_US,113549L - -#define SN_pkcs "pkcs" -#define LN_pkcs "RSA Data Security, Inc. PKCS" -#define NID_pkcs 2 -#define OBJ_pkcs OBJ_rsadsi,1L - -#define SN_pkcs1 "pkcs1" -#define NID_pkcs1 186 -#define OBJ_pkcs1 OBJ_pkcs,1L - -#define LN_rsaEncryption "rsaEncryption" -#define NID_rsaEncryption 6 -#define OBJ_rsaEncryption OBJ_pkcs1,1L - -#define SN_md2WithRSAEncryption "RSA-MD2" -#define LN_md2WithRSAEncryption "md2WithRSAEncryption" -#define NID_md2WithRSAEncryption 7 -#define OBJ_md2WithRSAEncryption OBJ_pkcs1,2L - -#define SN_md4WithRSAEncryption "RSA-MD4" -#define LN_md4WithRSAEncryption "md4WithRSAEncryption" -#define NID_md4WithRSAEncryption 396 -#define OBJ_md4WithRSAEncryption OBJ_pkcs1,3L - -#define SN_md5WithRSAEncryption "RSA-MD5" -#define LN_md5WithRSAEncryption "md5WithRSAEncryption" -#define NID_md5WithRSAEncryption 8 -#define OBJ_md5WithRSAEncryption OBJ_pkcs1,4L - -#define SN_sha1WithRSAEncryption "RSA-SHA1" -#define LN_sha1WithRSAEncryption "sha1WithRSAEncryption" -#define NID_sha1WithRSAEncryption 65 -#define OBJ_sha1WithRSAEncryption OBJ_pkcs1,5L - -#define SN_rsaesOaep "RSAES-OAEP" -#define LN_rsaesOaep "rsaesOaep" -#define NID_rsaesOaep 919 -#define OBJ_rsaesOaep OBJ_pkcs1,7L - -#define SN_mgf1 "MGF1" -#define LN_mgf1 "mgf1" -#define NID_mgf1 911 -#define OBJ_mgf1 OBJ_pkcs1,8L - -#define SN_pSpecified "PSPECIFIED" -#define LN_pSpecified "pSpecified" -#define NID_pSpecified 935 -#define OBJ_pSpecified OBJ_pkcs1,9L - -#define SN_rsassaPss "RSASSA-PSS" -#define LN_rsassaPss "rsassaPss" -#define NID_rsassaPss 912 -#define OBJ_rsassaPss OBJ_pkcs1,10L - -#define SN_sha256WithRSAEncryption "RSA-SHA256" -#define LN_sha256WithRSAEncryption "sha256WithRSAEncryption" -#define NID_sha256WithRSAEncryption 668 -#define OBJ_sha256WithRSAEncryption OBJ_pkcs1,11L - -#define SN_sha384WithRSAEncryption "RSA-SHA384" -#define LN_sha384WithRSAEncryption "sha384WithRSAEncryption" -#define NID_sha384WithRSAEncryption 669 -#define OBJ_sha384WithRSAEncryption OBJ_pkcs1,12L - -#define SN_sha512WithRSAEncryption "RSA-SHA512" -#define LN_sha512WithRSAEncryption "sha512WithRSAEncryption" -#define NID_sha512WithRSAEncryption 670 -#define OBJ_sha512WithRSAEncryption OBJ_pkcs1,13L - -#define SN_sha224WithRSAEncryption "RSA-SHA224" -#define LN_sha224WithRSAEncryption "sha224WithRSAEncryption" -#define NID_sha224WithRSAEncryption 671 -#define OBJ_sha224WithRSAEncryption OBJ_pkcs1,14L - -#define SN_pkcs3 "pkcs3" -#define NID_pkcs3 27 -#define OBJ_pkcs3 OBJ_pkcs,3L - -#define LN_dhKeyAgreement "dhKeyAgreement" -#define NID_dhKeyAgreement 28 -#define OBJ_dhKeyAgreement OBJ_pkcs3,1L - -#define SN_pkcs5 "pkcs5" -#define NID_pkcs5 187 -#define OBJ_pkcs5 OBJ_pkcs,5L - -#define SN_pbeWithMD2AndDES_CBC "PBE-MD2-DES" -#define LN_pbeWithMD2AndDES_CBC "pbeWithMD2AndDES-CBC" -#define NID_pbeWithMD2AndDES_CBC 9 -#define OBJ_pbeWithMD2AndDES_CBC OBJ_pkcs5,1L - -#define SN_pbeWithMD5AndDES_CBC "PBE-MD5-DES" -#define LN_pbeWithMD5AndDES_CBC "pbeWithMD5AndDES-CBC" -#define NID_pbeWithMD5AndDES_CBC 10 -#define OBJ_pbeWithMD5AndDES_CBC OBJ_pkcs5,3L - -#define SN_pbeWithMD2AndRC2_CBC "PBE-MD2-RC2-64" -#define LN_pbeWithMD2AndRC2_CBC "pbeWithMD2AndRC2-CBC" -#define NID_pbeWithMD2AndRC2_CBC 168 -#define OBJ_pbeWithMD2AndRC2_CBC OBJ_pkcs5,4L - -#define SN_pbeWithMD5AndRC2_CBC "PBE-MD5-RC2-64" -#define LN_pbeWithMD5AndRC2_CBC "pbeWithMD5AndRC2-CBC" -#define NID_pbeWithMD5AndRC2_CBC 169 -#define OBJ_pbeWithMD5AndRC2_CBC OBJ_pkcs5,6L - -#define SN_pbeWithSHA1AndDES_CBC "PBE-SHA1-DES" -#define LN_pbeWithSHA1AndDES_CBC "pbeWithSHA1AndDES-CBC" -#define NID_pbeWithSHA1AndDES_CBC 170 -#define OBJ_pbeWithSHA1AndDES_CBC OBJ_pkcs5,10L - -#define SN_pbeWithSHA1AndRC2_CBC "PBE-SHA1-RC2-64" -#define LN_pbeWithSHA1AndRC2_CBC "pbeWithSHA1AndRC2-CBC" -#define NID_pbeWithSHA1AndRC2_CBC 68 -#define OBJ_pbeWithSHA1AndRC2_CBC OBJ_pkcs5,11L - -#define LN_id_pbkdf2 "PBKDF2" -#define NID_id_pbkdf2 69 -#define OBJ_id_pbkdf2 OBJ_pkcs5,12L - -#define LN_pbes2 "PBES2" -#define NID_pbes2 161 -#define OBJ_pbes2 OBJ_pkcs5,13L - -#define LN_pbmac1 "PBMAC1" -#define NID_pbmac1 162 -#define OBJ_pbmac1 OBJ_pkcs5,14L - -#define SN_pkcs7 "pkcs7" -#define NID_pkcs7 20 -#define OBJ_pkcs7 OBJ_pkcs,7L - -#define LN_pkcs7_data "pkcs7-data" -#define NID_pkcs7_data 21 -#define OBJ_pkcs7_data OBJ_pkcs7,1L - -#define LN_pkcs7_signed "pkcs7-signedData" -#define NID_pkcs7_signed 22 -#define OBJ_pkcs7_signed OBJ_pkcs7,2L - -#define LN_pkcs7_enveloped "pkcs7-envelopedData" -#define NID_pkcs7_enveloped 23 -#define OBJ_pkcs7_enveloped OBJ_pkcs7,3L - -#define LN_pkcs7_signedAndEnveloped "pkcs7-signedAndEnvelopedData" -#define NID_pkcs7_signedAndEnveloped 24 -#define OBJ_pkcs7_signedAndEnveloped OBJ_pkcs7,4L - -#define LN_pkcs7_digest "pkcs7-digestData" -#define NID_pkcs7_digest 25 -#define OBJ_pkcs7_digest OBJ_pkcs7,5L - -#define LN_pkcs7_encrypted "pkcs7-encryptedData" -#define NID_pkcs7_encrypted 26 -#define OBJ_pkcs7_encrypted OBJ_pkcs7,6L - -#define SN_pkcs9 "pkcs9" -#define NID_pkcs9 47 -#define OBJ_pkcs9 OBJ_pkcs,9L - -#define LN_pkcs9_emailAddress "emailAddress" -#define NID_pkcs9_emailAddress 48 -#define OBJ_pkcs9_emailAddress OBJ_pkcs9,1L - -#define LN_pkcs9_unstructuredName "unstructuredName" -#define NID_pkcs9_unstructuredName 49 -#define OBJ_pkcs9_unstructuredName OBJ_pkcs9,2L - -#define LN_pkcs9_contentType "contentType" -#define NID_pkcs9_contentType 50 -#define OBJ_pkcs9_contentType OBJ_pkcs9,3L - -#define LN_pkcs9_messageDigest "messageDigest" -#define NID_pkcs9_messageDigest 51 -#define OBJ_pkcs9_messageDigest OBJ_pkcs9,4L - -#define LN_pkcs9_signingTime "signingTime" -#define NID_pkcs9_signingTime 52 -#define OBJ_pkcs9_signingTime OBJ_pkcs9,5L - -#define LN_pkcs9_countersignature "countersignature" -#define NID_pkcs9_countersignature 53 -#define OBJ_pkcs9_countersignature OBJ_pkcs9,6L - -#define LN_pkcs9_challengePassword "challengePassword" -#define NID_pkcs9_challengePassword 54 -#define OBJ_pkcs9_challengePassword OBJ_pkcs9,7L - -#define LN_pkcs9_unstructuredAddress "unstructuredAddress" -#define NID_pkcs9_unstructuredAddress 55 -#define OBJ_pkcs9_unstructuredAddress OBJ_pkcs9,8L - -#define LN_pkcs9_extCertAttributes "extendedCertificateAttributes" -#define NID_pkcs9_extCertAttributes 56 -#define OBJ_pkcs9_extCertAttributes OBJ_pkcs9,9L - -#define SN_ext_req "extReq" -#define LN_ext_req "Extension Request" -#define NID_ext_req 172 -#define OBJ_ext_req OBJ_pkcs9,14L - -#define SN_SMIMECapabilities "SMIME-CAPS" -#define LN_SMIMECapabilities "S/MIME Capabilities" -#define NID_SMIMECapabilities 167 -#define OBJ_SMIMECapabilities OBJ_pkcs9,15L - -#define SN_SMIME "SMIME" -#define LN_SMIME "S/MIME" -#define NID_SMIME 188 -#define OBJ_SMIME OBJ_pkcs9,16L - -#define SN_id_smime_mod "id-smime-mod" -#define NID_id_smime_mod 189 -#define OBJ_id_smime_mod OBJ_SMIME,0L - -#define SN_id_smime_ct "id-smime-ct" -#define NID_id_smime_ct 190 -#define OBJ_id_smime_ct OBJ_SMIME,1L - -#define SN_id_smime_aa "id-smime-aa" -#define NID_id_smime_aa 191 -#define OBJ_id_smime_aa OBJ_SMIME,2L - -#define SN_id_smime_alg "id-smime-alg" -#define NID_id_smime_alg 192 -#define OBJ_id_smime_alg OBJ_SMIME,3L - -#define SN_id_smime_cd "id-smime-cd" -#define NID_id_smime_cd 193 -#define OBJ_id_smime_cd OBJ_SMIME,4L - -#define SN_id_smime_spq "id-smime-spq" -#define NID_id_smime_spq 194 -#define OBJ_id_smime_spq OBJ_SMIME,5L - -#define SN_id_smime_cti "id-smime-cti" -#define NID_id_smime_cti 195 -#define OBJ_id_smime_cti OBJ_SMIME,6L - -#define SN_id_smime_mod_cms "id-smime-mod-cms" -#define NID_id_smime_mod_cms 196 -#define OBJ_id_smime_mod_cms OBJ_id_smime_mod,1L - -#define SN_id_smime_mod_ess "id-smime-mod-ess" -#define NID_id_smime_mod_ess 197 -#define OBJ_id_smime_mod_ess OBJ_id_smime_mod,2L - -#define SN_id_smime_mod_oid "id-smime-mod-oid" -#define NID_id_smime_mod_oid 198 -#define OBJ_id_smime_mod_oid OBJ_id_smime_mod,3L - -#define SN_id_smime_mod_msg_v3 "id-smime-mod-msg-v3" -#define NID_id_smime_mod_msg_v3 199 -#define OBJ_id_smime_mod_msg_v3 OBJ_id_smime_mod,4L - -#define SN_id_smime_mod_ets_eSignature_88 "id-smime-mod-ets-eSignature-88" -#define NID_id_smime_mod_ets_eSignature_88 200 -#define OBJ_id_smime_mod_ets_eSignature_88 OBJ_id_smime_mod,5L - -#define SN_id_smime_mod_ets_eSignature_97 "id-smime-mod-ets-eSignature-97" -#define NID_id_smime_mod_ets_eSignature_97 201 -#define OBJ_id_smime_mod_ets_eSignature_97 OBJ_id_smime_mod,6L - -#define SN_id_smime_mod_ets_eSigPolicy_88 "id-smime-mod-ets-eSigPolicy-88" -#define NID_id_smime_mod_ets_eSigPolicy_88 202 -#define OBJ_id_smime_mod_ets_eSigPolicy_88 OBJ_id_smime_mod,7L - -#define SN_id_smime_mod_ets_eSigPolicy_97 "id-smime-mod-ets-eSigPolicy-97" -#define NID_id_smime_mod_ets_eSigPolicy_97 203 -#define OBJ_id_smime_mod_ets_eSigPolicy_97 OBJ_id_smime_mod,8L - -#define SN_id_smime_ct_receipt "id-smime-ct-receipt" -#define NID_id_smime_ct_receipt 204 -#define OBJ_id_smime_ct_receipt OBJ_id_smime_ct,1L - -#define SN_id_smime_ct_authData "id-smime-ct-authData" -#define NID_id_smime_ct_authData 205 -#define OBJ_id_smime_ct_authData OBJ_id_smime_ct,2L - -#define SN_id_smime_ct_publishCert "id-smime-ct-publishCert" -#define NID_id_smime_ct_publishCert 206 -#define OBJ_id_smime_ct_publishCert OBJ_id_smime_ct,3L - -#define SN_id_smime_ct_TSTInfo "id-smime-ct-TSTInfo" -#define NID_id_smime_ct_TSTInfo 207 -#define OBJ_id_smime_ct_TSTInfo OBJ_id_smime_ct,4L - -#define SN_id_smime_ct_TDTInfo "id-smime-ct-TDTInfo" -#define NID_id_smime_ct_TDTInfo 208 -#define OBJ_id_smime_ct_TDTInfo OBJ_id_smime_ct,5L - -#define SN_id_smime_ct_contentInfo "id-smime-ct-contentInfo" -#define NID_id_smime_ct_contentInfo 209 -#define OBJ_id_smime_ct_contentInfo OBJ_id_smime_ct,6L - -#define SN_id_smime_ct_DVCSRequestData "id-smime-ct-DVCSRequestData" -#define NID_id_smime_ct_DVCSRequestData 210 -#define OBJ_id_smime_ct_DVCSRequestData OBJ_id_smime_ct,7L - -#define SN_id_smime_ct_DVCSResponseData "id-smime-ct-DVCSResponseData" -#define NID_id_smime_ct_DVCSResponseData 211 -#define OBJ_id_smime_ct_DVCSResponseData OBJ_id_smime_ct,8L - -#define SN_id_smime_ct_compressedData "id-smime-ct-compressedData" -#define NID_id_smime_ct_compressedData 786 -#define OBJ_id_smime_ct_compressedData OBJ_id_smime_ct,9L - -#define SN_id_ct_asciiTextWithCRLF "id-ct-asciiTextWithCRLF" -#define NID_id_ct_asciiTextWithCRLF 787 -#define OBJ_id_ct_asciiTextWithCRLF OBJ_id_smime_ct,27L - -#define SN_id_smime_aa_receiptRequest "id-smime-aa-receiptRequest" -#define NID_id_smime_aa_receiptRequest 212 -#define OBJ_id_smime_aa_receiptRequest OBJ_id_smime_aa,1L - -#define SN_id_smime_aa_securityLabel "id-smime-aa-securityLabel" -#define NID_id_smime_aa_securityLabel 213 -#define OBJ_id_smime_aa_securityLabel OBJ_id_smime_aa,2L - -#define SN_id_smime_aa_mlExpandHistory "id-smime-aa-mlExpandHistory" -#define NID_id_smime_aa_mlExpandHistory 214 -#define OBJ_id_smime_aa_mlExpandHistory OBJ_id_smime_aa,3L - -#define SN_id_smime_aa_contentHint "id-smime-aa-contentHint" -#define NID_id_smime_aa_contentHint 215 -#define OBJ_id_smime_aa_contentHint OBJ_id_smime_aa,4L - -#define SN_id_smime_aa_msgSigDigest "id-smime-aa-msgSigDigest" -#define NID_id_smime_aa_msgSigDigest 216 -#define OBJ_id_smime_aa_msgSigDigest OBJ_id_smime_aa,5L - -#define SN_id_smime_aa_encapContentType "id-smime-aa-encapContentType" -#define NID_id_smime_aa_encapContentType 217 -#define OBJ_id_smime_aa_encapContentType OBJ_id_smime_aa,6L - -#define SN_id_smime_aa_contentIdentifier "id-smime-aa-contentIdentifier" -#define NID_id_smime_aa_contentIdentifier 218 -#define OBJ_id_smime_aa_contentIdentifier OBJ_id_smime_aa,7L - -#define SN_id_smime_aa_macValue "id-smime-aa-macValue" -#define NID_id_smime_aa_macValue 219 -#define OBJ_id_smime_aa_macValue OBJ_id_smime_aa,8L - -#define SN_id_smime_aa_equivalentLabels "id-smime-aa-equivalentLabels" -#define NID_id_smime_aa_equivalentLabels 220 -#define OBJ_id_smime_aa_equivalentLabels OBJ_id_smime_aa,9L - -#define SN_id_smime_aa_contentReference "id-smime-aa-contentReference" -#define NID_id_smime_aa_contentReference 221 -#define OBJ_id_smime_aa_contentReference OBJ_id_smime_aa,10L - -#define SN_id_smime_aa_encrypKeyPref "id-smime-aa-encrypKeyPref" -#define NID_id_smime_aa_encrypKeyPref 222 -#define OBJ_id_smime_aa_encrypKeyPref OBJ_id_smime_aa,11L - -#define SN_id_smime_aa_signingCertificate "id-smime-aa-signingCertificate" -#define NID_id_smime_aa_signingCertificate 223 -#define OBJ_id_smime_aa_signingCertificate OBJ_id_smime_aa,12L - -#define SN_id_smime_aa_smimeEncryptCerts "id-smime-aa-smimeEncryptCerts" -#define NID_id_smime_aa_smimeEncryptCerts 224 -#define OBJ_id_smime_aa_smimeEncryptCerts OBJ_id_smime_aa,13L - -#define SN_id_smime_aa_timeStampToken "id-smime-aa-timeStampToken" -#define NID_id_smime_aa_timeStampToken 225 -#define OBJ_id_smime_aa_timeStampToken OBJ_id_smime_aa,14L - -#define SN_id_smime_aa_ets_sigPolicyId "id-smime-aa-ets-sigPolicyId" -#define NID_id_smime_aa_ets_sigPolicyId 226 -#define OBJ_id_smime_aa_ets_sigPolicyId OBJ_id_smime_aa,15L - -#define SN_id_smime_aa_ets_commitmentType "id-smime-aa-ets-commitmentType" -#define NID_id_smime_aa_ets_commitmentType 227 -#define OBJ_id_smime_aa_ets_commitmentType OBJ_id_smime_aa,16L - -#define SN_id_smime_aa_ets_signerLocation "id-smime-aa-ets-signerLocation" -#define NID_id_smime_aa_ets_signerLocation 228 -#define OBJ_id_smime_aa_ets_signerLocation OBJ_id_smime_aa,17L - -#define SN_id_smime_aa_ets_signerAttr "id-smime-aa-ets-signerAttr" -#define NID_id_smime_aa_ets_signerAttr 229 -#define OBJ_id_smime_aa_ets_signerAttr OBJ_id_smime_aa,18L - -#define SN_id_smime_aa_ets_otherSigCert "id-smime-aa-ets-otherSigCert" -#define NID_id_smime_aa_ets_otherSigCert 230 -#define OBJ_id_smime_aa_ets_otherSigCert OBJ_id_smime_aa,19L - -#define SN_id_smime_aa_ets_contentTimestamp "id-smime-aa-ets-contentTimestamp" -#define NID_id_smime_aa_ets_contentTimestamp 231 -#define OBJ_id_smime_aa_ets_contentTimestamp OBJ_id_smime_aa,20L - -#define SN_id_smime_aa_ets_CertificateRefs "id-smime-aa-ets-CertificateRefs" -#define NID_id_smime_aa_ets_CertificateRefs 232 -#define OBJ_id_smime_aa_ets_CertificateRefs OBJ_id_smime_aa,21L - -#define SN_id_smime_aa_ets_RevocationRefs "id-smime-aa-ets-RevocationRefs" -#define NID_id_smime_aa_ets_RevocationRefs 233 -#define OBJ_id_smime_aa_ets_RevocationRefs OBJ_id_smime_aa,22L - -#define SN_id_smime_aa_ets_certValues "id-smime-aa-ets-certValues" -#define NID_id_smime_aa_ets_certValues 234 -#define OBJ_id_smime_aa_ets_certValues OBJ_id_smime_aa,23L - -#define SN_id_smime_aa_ets_revocationValues "id-smime-aa-ets-revocationValues" -#define NID_id_smime_aa_ets_revocationValues 235 -#define OBJ_id_smime_aa_ets_revocationValues OBJ_id_smime_aa,24L - -#define SN_id_smime_aa_ets_escTimeStamp "id-smime-aa-ets-escTimeStamp" -#define NID_id_smime_aa_ets_escTimeStamp 236 -#define OBJ_id_smime_aa_ets_escTimeStamp OBJ_id_smime_aa,25L - -#define SN_id_smime_aa_ets_certCRLTimestamp "id-smime-aa-ets-certCRLTimestamp" -#define NID_id_smime_aa_ets_certCRLTimestamp 237 -#define OBJ_id_smime_aa_ets_certCRLTimestamp OBJ_id_smime_aa,26L - -#define SN_id_smime_aa_ets_archiveTimeStamp "id-smime-aa-ets-archiveTimeStamp" -#define NID_id_smime_aa_ets_archiveTimeStamp 238 -#define OBJ_id_smime_aa_ets_archiveTimeStamp OBJ_id_smime_aa,27L - -#define SN_id_smime_aa_signatureType "id-smime-aa-signatureType" -#define NID_id_smime_aa_signatureType 239 -#define OBJ_id_smime_aa_signatureType OBJ_id_smime_aa,28L - -#define SN_id_smime_aa_dvcs_dvc "id-smime-aa-dvcs-dvc" -#define NID_id_smime_aa_dvcs_dvc 240 -#define OBJ_id_smime_aa_dvcs_dvc OBJ_id_smime_aa,29L - -#define SN_id_smime_alg_ESDHwith3DES "id-smime-alg-ESDHwith3DES" -#define NID_id_smime_alg_ESDHwith3DES 241 -#define OBJ_id_smime_alg_ESDHwith3DES OBJ_id_smime_alg,1L - -#define SN_id_smime_alg_ESDHwithRC2 "id-smime-alg-ESDHwithRC2" -#define NID_id_smime_alg_ESDHwithRC2 242 -#define OBJ_id_smime_alg_ESDHwithRC2 OBJ_id_smime_alg,2L - -#define SN_id_smime_alg_3DESwrap "id-smime-alg-3DESwrap" -#define NID_id_smime_alg_3DESwrap 243 -#define OBJ_id_smime_alg_3DESwrap OBJ_id_smime_alg,3L - -#define SN_id_smime_alg_RC2wrap "id-smime-alg-RC2wrap" -#define NID_id_smime_alg_RC2wrap 244 -#define OBJ_id_smime_alg_RC2wrap OBJ_id_smime_alg,4L - -#define SN_id_smime_alg_ESDH "id-smime-alg-ESDH" -#define NID_id_smime_alg_ESDH 245 -#define OBJ_id_smime_alg_ESDH OBJ_id_smime_alg,5L - -#define SN_id_smime_alg_CMS3DESwrap "id-smime-alg-CMS3DESwrap" -#define NID_id_smime_alg_CMS3DESwrap 246 -#define OBJ_id_smime_alg_CMS3DESwrap OBJ_id_smime_alg,6L - -#define SN_id_smime_alg_CMSRC2wrap "id-smime-alg-CMSRC2wrap" -#define NID_id_smime_alg_CMSRC2wrap 247 -#define OBJ_id_smime_alg_CMSRC2wrap OBJ_id_smime_alg,7L - -#define SN_id_alg_PWRI_KEK "id-alg-PWRI-KEK" -#define NID_id_alg_PWRI_KEK 893 -#define OBJ_id_alg_PWRI_KEK OBJ_id_smime_alg,9L - -#define SN_id_smime_cd_ldap "id-smime-cd-ldap" -#define NID_id_smime_cd_ldap 248 -#define OBJ_id_smime_cd_ldap OBJ_id_smime_cd,1L - -#define SN_id_smime_spq_ets_sqt_uri "id-smime-spq-ets-sqt-uri" -#define NID_id_smime_spq_ets_sqt_uri 249 -#define OBJ_id_smime_spq_ets_sqt_uri OBJ_id_smime_spq,1L - -#define SN_id_smime_spq_ets_sqt_unotice "id-smime-spq-ets-sqt-unotice" -#define NID_id_smime_spq_ets_sqt_unotice 250 -#define OBJ_id_smime_spq_ets_sqt_unotice OBJ_id_smime_spq,2L - -#define SN_id_smime_cti_ets_proofOfOrigin "id-smime-cti-ets-proofOfOrigin" -#define NID_id_smime_cti_ets_proofOfOrigin 251 -#define OBJ_id_smime_cti_ets_proofOfOrigin OBJ_id_smime_cti,1L - -#define SN_id_smime_cti_ets_proofOfReceipt "id-smime-cti-ets-proofOfReceipt" -#define NID_id_smime_cti_ets_proofOfReceipt 252 -#define OBJ_id_smime_cti_ets_proofOfReceipt OBJ_id_smime_cti,2L - -#define SN_id_smime_cti_ets_proofOfDelivery "id-smime-cti-ets-proofOfDelivery" -#define NID_id_smime_cti_ets_proofOfDelivery 253 -#define OBJ_id_smime_cti_ets_proofOfDelivery OBJ_id_smime_cti,3L - -#define SN_id_smime_cti_ets_proofOfSender "id-smime-cti-ets-proofOfSender" -#define NID_id_smime_cti_ets_proofOfSender 254 -#define OBJ_id_smime_cti_ets_proofOfSender OBJ_id_smime_cti,4L - -#define SN_id_smime_cti_ets_proofOfApproval "id-smime-cti-ets-proofOfApproval" -#define NID_id_smime_cti_ets_proofOfApproval 255 -#define OBJ_id_smime_cti_ets_proofOfApproval OBJ_id_smime_cti,5L - -#define SN_id_smime_cti_ets_proofOfCreation "id-smime-cti-ets-proofOfCreation" -#define NID_id_smime_cti_ets_proofOfCreation 256 -#define OBJ_id_smime_cti_ets_proofOfCreation OBJ_id_smime_cti,6L - -#define LN_friendlyName "friendlyName" -#define NID_friendlyName 156 -#define OBJ_friendlyName OBJ_pkcs9,20L - -#define LN_localKeyID "localKeyID" -#define NID_localKeyID 157 -#define OBJ_localKeyID OBJ_pkcs9,21L - -#define SN_ms_csp_name "CSPName" -#define LN_ms_csp_name "Microsoft CSP Name" -#define NID_ms_csp_name 417 -#define OBJ_ms_csp_name 1L,3L,6L,1L,4L,1L,311L,17L,1L - -#define SN_LocalKeySet "LocalKeySet" -#define LN_LocalKeySet "Microsoft Local Key set" -#define NID_LocalKeySet 856 -#define OBJ_LocalKeySet 1L,3L,6L,1L,4L,1L,311L,17L,2L - -#define OBJ_certTypes OBJ_pkcs9,22L - -#define LN_x509Certificate "x509Certificate" -#define NID_x509Certificate 158 -#define OBJ_x509Certificate OBJ_certTypes,1L - -#define LN_sdsiCertificate "sdsiCertificate" -#define NID_sdsiCertificate 159 -#define OBJ_sdsiCertificate OBJ_certTypes,2L - -#define OBJ_crlTypes OBJ_pkcs9,23L - -#define LN_x509Crl "x509Crl" -#define NID_x509Crl 160 -#define OBJ_x509Crl OBJ_crlTypes,1L - -#define OBJ_pkcs12 OBJ_pkcs,12L - -#define OBJ_pkcs12_pbeids OBJ_pkcs12,1L - -#define SN_pbe_WithSHA1And128BitRC4 "PBE-SHA1-RC4-128" -#define LN_pbe_WithSHA1And128BitRC4 "pbeWithSHA1And128BitRC4" -#define NID_pbe_WithSHA1And128BitRC4 144 -#define OBJ_pbe_WithSHA1And128BitRC4 OBJ_pkcs12_pbeids,1L - -#define SN_pbe_WithSHA1And40BitRC4 "PBE-SHA1-RC4-40" -#define LN_pbe_WithSHA1And40BitRC4 "pbeWithSHA1And40BitRC4" -#define NID_pbe_WithSHA1And40BitRC4 145 -#define OBJ_pbe_WithSHA1And40BitRC4 OBJ_pkcs12_pbeids,2L - -#define SN_pbe_WithSHA1And3_Key_TripleDES_CBC "PBE-SHA1-3DES" -#define LN_pbe_WithSHA1And3_Key_TripleDES_CBC "pbeWithSHA1And3-KeyTripleDES-CBC" -#define NID_pbe_WithSHA1And3_Key_TripleDES_CBC 146 -#define OBJ_pbe_WithSHA1And3_Key_TripleDES_CBC OBJ_pkcs12_pbeids,3L - -#define SN_pbe_WithSHA1And2_Key_TripleDES_CBC "PBE-SHA1-2DES" -#define LN_pbe_WithSHA1And2_Key_TripleDES_CBC "pbeWithSHA1And2-KeyTripleDES-CBC" -#define NID_pbe_WithSHA1And2_Key_TripleDES_CBC 147 -#define OBJ_pbe_WithSHA1And2_Key_TripleDES_CBC OBJ_pkcs12_pbeids,4L - -#define SN_pbe_WithSHA1And128BitRC2_CBC "PBE-SHA1-RC2-128" -#define LN_pbe_WithSHA1And128BitRC2_CBC "pbeWithSHA1And128BitRC2-CBC" -#define NID_pbe_WithSHA1And128BitRC2_CBC 148 -#define OBJ_pbe_WithSHA1And128BitRC2_CBC OBJ_pkcs12_pbeids,5L - -#define SN_pbe_WithSHA1And40BitRC2_CBC "PBE-SHA1-RC2-40" -#define LN_pbe_WithSHA1And40BitRC2_CBC "pbeWithSHA1And40BitRC2-CBC" -#define NID_pbe_WithSHA1And40BitRC2_CBC 149 -#define OBJ_pbe_WithSHA1And40BitRC2_CBC OBJ_pkcs12_pbeids,6L - -#define OBJ_pkcs12_Version1 OBJ_pkcs12,10L - -#define OBJ_pkcs12_BagIds OBJ_pkcs12_Version1,1L - -#define LN_keyBag "keyBag" -#define NID_keyBag 150 -#define OBJ_keyBag OBJ_pkcs12_BagIds,1L - -#define LN_pkcs8ShroudedKeyBag "pkcs8ShroudedKeyBag" -#define NID_pkcs8ShroudedKeyBag 151 -#define OBJ_pkcs8ShroudedKeyBag OBJ_pkcs12_BagIds,2L - -#define LN_certBag "certBag" -#define NID_certBag 152 -#define OBJ_certBag OBJ_pkcs12_BagIds,3L - -#define LN_crlBag "crlBag" -#define NID_crlBag 153 -#define OBJ_crlBag OBJ_pkcs12_BagIds,4L - -#define LN_secretBag "secretBag" -#define NID_secretBag 154 -#define OBJ_secretBag OBJ_pkcs12_BagIds,5L - -#define LN_safeContentsBag "safeContentsBag" -#define NID_safeContentsBag 155 -#define OBJ_safeContentsBag OBJ_pkcs12_BagIds,6L - -#define SN_md2 "MD2" -#define LN_md2 "md2" -#define NID_md2 3 -#define OBJ_md2 OBJ_rsadsi,2L,2L - -#define SN_md4 "MD4" -#define LN_md4 "md4" -#define NID_md4 257 -#define OBJ_md4 OBJ_rsadsi,2L,4L - -#define SN_md5 "MD5" -#define LN_md5 "md5" -#define NID_md5 4 -#define OBJ_md5 OBJ_rsadsi,2L,5L - -#define SN_md5_sha1 "MD5-SHA1" -#define LN_md5_sha1 "md5-sha1" -#define NID_md5_sha1 114 - -#define LN_hmacWithMD5 "hmacWithMD5" -#define NID_hmacWithMD5 797 -#define OBJ_hmacWithMD5 OBJ_rsadsi,2L,6L - -#define LN_hmacWithSHA1 "hmacWithSHA1" -#define NID_hmacWithSHA1 163 -#define OBJ_hmacWithSHA1 OBJ_rsadsi,2L,7L - -#define LN_hmacWithSHA224 "hmacWithSHA224" -#define NID_hmacWithSHA224 798 -#define OBJ_hmacWithSHA224 OBJ_rsadsi,2L,8L - -#define LN_hmacWithSHA256 "hmacWithSHA256" -#define NID_hmacWithSHA256 799 -#define OBJ_hmacWithSHA256 OBJ_rsadsi,2L,9L - -#define LN_hmacWithSHA384 "hmacWithSHA384" -#define NID_hmacWithSHA384 800 -#define OBJ_hmacWithSHA384 OBJ_rsadsi,2L,10L - -#define LN_hmacWithSHA512 "hmacWithSHA512" -#define NID_hmacWithSHA512 801 -#define OBJ_hmacWithSHA512 OBJ_rsadsi,2L,11L - -#define SN_rc2_cbc "RC2-CBC" -#define LN_rc2_cbc "rc2-cbc" -#define NID_rc2_cbc 37 -#define OBJ_rc2_cbc OBJ_rsadsi,3L,2L - -#define SN_rc2_ecb "RC2-ECB" -#define LN_rc2_ecb "rc2-ecb" -#define NID_rc2_ecb 38 - -#define SN_rc2_cfb64 "RC2-CFB" -#define LN_rc2_cfb64 "rc2-cfb" -#define NID_rc2_cfb64 39 - -#define SN_rc2_ofb64 "RC2-OFB" -#define LN_rc2_ofb64 "rc2-ofb" -#define NID_rc2_ofb64 40 - -#define SN_rc2_40_cbc "RC2-40-CBC" -#define LN_rc2_40_cbc "rc2-40-cbc" -#define NID_rc2_40_cbc 98 - -#define SN_rc2_64_cbc "RC2-64-CBC" -#define LN_rc2_64_cbc "rc2-64-cbc" -#define NID_rc2_64_cbc 166 - -#define SN_rc4 "RC4" -#define LN_rc4 "rc4" -#define NID_rc4 5 -#define OBJ_rc4 OBJ_rsadsi,3L,4L - -#define SN_rc4_40 "RC4-40" -#define LN_rc4_40 "rc4-40" -#define NID_rc4_40 97 - -#define SN_des_ede3_cbc "DES-EDE3-CBC" -#define LN_des_ede3_cbc "des-ede3-cbc" -#define NID_des_ede3_cbc 44 -#define OBJ_des_ede3_cbc OBJ_rsadsi,3L,7L - -#define SN_rc5_cbc "RC5-CBC" -#define LN_rc5_cbc "rc5-cbc" -#define NID_rc5_cbc 120 -#define OBJ_rc5_cbc OBJ_rsadsi,3L,8L - -#define SN_rc5_ecb "RC5-ECB" -#define LN_rc5_ecb "rc5-ecb" -#define NID_rc5_ecb 121 - -#define SN_rc5_cfb64 "RC5-CFB" -#define LN_rc5_cfb64 "rc5-cfb" -#define NID_rc5_cfb64 122 - -#define SN_rc5_ofb64 "RC5-OFB" -#define LN_rc5_ofb64 "rc5-ofb" -#define NID_rc5_ofb64 123 - -#define SN_ms_ext_req "msExtReq" -#define LN_ms_ext_req "Microsoft Extension Request" -#define NID_ms_ext_req 171 -#define OBJ_ms_ext_req 1L,3L,6L,1L,4L,1L,311L,2L,1L,14L - -#define SN_ms_code_ind "msCodeInd" -#define LN_ms_code_ind "Microsoft Individual Code Signing" -#define NID_ms_code_ind 134 -#define OBJ_ms_code_ind 1L,3L,6L,1L,4L,1L,311L,2L,1L,21L - -#define SN_ms_code_com "msCodeCom" -#define LN_ms_code_com "Microsoft Commercial Code Signing" -#define NID_ms_code_com 135 -#define OBJ_ms_code_com 1L,3L,6L,1L,4L,1L,311L,2L,1L,22L - -#define SN_ms_ctl_sign "msCTLSign" -#define LN_ms_ctl_sign "Microsoft Trust List Signing" -#define NID_ms_ctl_sign 136 -#define OBJ_ms_ctl_sign 1L,3L,6L,1L,4L,1L,311L,10L,3L,1L - -#define SN_ms_sgc "msSGC" -#define LN_ms_sgc "Microsoft Server Gated Crypto" -#define NID_ms_sgc 137 -#define OBJ_ms_sgc 1L,3L,6L,1L,4L,1L,311L,10L,3L,3L - -#define SN_ms_efs "msEFS" -#define LN_ms_efs "Microsoft Encrypted File System" -#define NID_ms_efs 138 -#define OBJ_ms_efs 1L,3L,6L,1L,4L,1L,311L,10L,3L,4L - -#define SN_ms_smartcard_login "msSmartcardLogin" -#define LN_ms_smartcard_login "Microsoft Smartcardlogin" -#define NID_ms_smartcard_login 648 -#define OBJ_ms_smartcard_login 1L,3L,6L,1L,4L,1L,311L,20L,2L,2L - -#define SN_ms_upn "msUPN" -#define LN_ms_upn "Microsoft Universal Principal Name" -#define NID_ms_upn 649 -#define OBJ_ms_upn 1L,3L,6L,1L,4L,1L,311L,20L,2L,3L - -#define SN_idea_cbc "IDEA-CBC" -#define LN_idea_cbc "idea-cbc" -#define NID_idea_cbc 34 -#define OBJ_idea_cbc 1L,3L,6L,1L,4L,1L,188L,7L,1L,1L,2L - -#define SN_idea_ecb "IDEA-ECB" -#define LN_idea_ecb "idea-ecb" -#define NID_idea_ecb 36 - -#define SN_idea_cfb64 "IDEA-CFB" -#define LN_idea_cfb64 "idea-cfb" -#define NID_idea_cfb64 35 - -#define SN_idea_ofb64 "IDEA-OFB" -#define LN_idea_ofb64 "idea-ofb" -#define NID_idea_ofb64 46 - -#define SN_bf_cbc "BF-CBC" -#define LN_bf_cbc "bf-cbc" -#define NID_bf_cbc 91 -#define OBJ_bf_cbc 1L,3L,6L,1L,4L,1L,3029L,1L,2L - -#define SN_bf_ecb "BF-ECB" -#define LN_bf_ecb "bf-ecb" -#define NID_bf_ecb 92 - -#define SN_bf_cfb64 "BF-CFB" -#define LN_bf_cfb64 "bf-cfb" -#define NID_bf_cfb64 93 - -#define SN_bf_ofb64 "BF-OFB" -#define LN_bf_ofb64 "bf-ofb" -#define NID_bf_ofb64 94 - -#define SN_id_pkix "PKIX" -#define NID_id_pkix 127 -#define OBJ_id_pkix 1L,3L,6L,1L,5L,5L,7L - -#define SN_id_pkix_mod "id-pkix-mod" -#define NID_id_pkix_mod 258 -#define OBJ_id_pkix_mod OBJ_id_pkix,0L - -#define SN_id_pe "id-pe" -#define NID_id_pe 175 -#define OBJ_id_pe OBJ_id_pkix,1L - -#define SN_id_qt "id-qt" -#define NID_id_qt 259 -#define OBJ_id_qt OBJ_id_pkix,2L - -#define SN_id_kp "id-kp" -#define NID_id_kp 128 -#define OBJ_id_kp OBJ_id_pkix,3L - -#define SN_id_it "id-it" -#define NID_id_it 260 -#define OBJ_id_it OBJ_id_pkix,4L - -#define SN_id_pkip "id-pkip" -#define NID_id_pkip 261 -#define OBJ_id_pkip OBJ_id_pkix,5L - -#define SN_id_alg "id-alg" -#define NID_id_alg 262 -#define OBJ_id_alg OBJ_id_pkix,6L - -#define SN_id_cmc "id-cmc" -#define NID_id_cmc 263 -#define OBJ_id_cmc OBJ_id_pkix,7L - -#define SN_id_on "id-on" -#define NID_id_on 264 -#define OBJ_id_on OBJ_id_pkix,8L - -#define SN_id_pda "id-pda" -#define NID_id_pda 265 -#define OBJ_id_pda OBJ_id_pkix,9L - -#define SN_id_aca "id-aca" -#define NID_id_aca 266 -#define OBJ_id_aca OBJ_id_pkix,10L - -#define SN_id_qcs "id-qcs" -#define NID_id_qcs 267 -#define OBJ_id_qcs OBJ_id_pkix,11L - -#define SN_id_cct "id-cct" -#define NID_id_cct 268 -#define OBJ_id_cct OBJ_id_pkix,12L - -#define SN_id_ppl "id-ppl" -#define NID_id_ppl 662 -#define OBJ_id_ppl OBJ_id_pkix,21L - -#define SN_id_ad "id-ad" -#define NID_id_ad 176 -#define OBJ_id_ad OBJ_id_pkix,48L - -#define SN_id_pkix1_explicit_88 "id-pkix1-explicit-88" -#define NID_id_pkix1_explicit_88 269 -#define OBJ_id_pkix1_explicit_88 OBJ_id_pkix_mod,1L - -#define SN_id_pkix1_implicit_88 "id-pkix1-implicit-88" -#define NID_id_pkix1_implicit_88 270 -#define OBJ_id_pkix1_implicit_88 OBJ_id_pkix_mod,2L - -#define SN_id_pkix1_explicit_93 "id-pkix1-explicit-93" -#define NID_id_pkix1_explicit_93 271 -#define OBJ_id_pkix1_explicit_93 OBJ_id_pkix_mod,3L - -#define SN_id_pkix1_implicit_93 "id-pkix1-implicit-93" -#define NID_id_pkix1_implicit_93 272 -#define OBJ_id_pkix1_implicit_93 OBJ_id_pkix_mod,4L - -#define SN_id_mod_crmf "id-mod-crmf" -#define NID_id_mod_crmf 273 -#define OBJ_id_mod_crmf OBJ_id_pkix_mod,5L - -#define SN_id_mod_cmc "id-mod-cmc" -#define NID_id_mod_cmc 274 -#define OBJ_id_mod_cmc OBJ_id_pkix_mod,6L - -#define SN_id_mod_kea_profile_88 "id-mod-kea-profile-88" -#define NID_id_mod_kea_profile_88 275 -#define OBJ_id_mod_kea_profile_88 OBJ_id_pkix_mod,7L - -#define SN_id_mod_kea_profile_93 "id-mod-kea-profile-93" -#define NID_id_mod_kea_profile_93 276 -#define OBJ_id_mod_kea_profile_93 OBJ_id_pkix_mod,8L - -#define SN_id_mod_cmp "id-mod-cmp" -#define NID_id_mod_cmp 277 -#define OBJ_id_mod_cmp OBJ_id_pkix_mod,9L - -#define SN_id_mod_qualified_cert_88 "id-mod-qualified-cert-88" -#define NID_id_mod_qualified_cert_88 278 -#define OBJ_id_mod_qualified_cert_88 OBJ_id_pkix_mod,10L - -#define SN_id_mod_qualified_cert_93 "id-mod-qualified-cert-93" -#define NID_id_mod_qualified_cert_93 279 -#define OBJ_id_mod_qualified_cert_93 OBJ_id_pkix_mod,11L - -#define SN_id_mod_attribute_cert "id-mod-attribute-cert" -#define NID_id_mod_attribute_cert 280 -#define OBJ_id_mod_attribute_cert OBJ_id_pkix_mod,12L - -#define SN_id_mod_timestamp_protocol "id-mod-timestamp-protocol" -#define NID_id_mod_timestamp_protocol 281 -#define OBJ_id_mod_timestamp_protocol OBJ_id_pkix_mod,13L - -#define SN_id_mod_ocsp "id-mod-ocsp" -#define NID_id_mod_ocsp 282 -#define OBJ_id_mod_ocsp OBJ_id_pkix_mod,14L - -#define SN_id_mod_dvcs "id-mod-dvcs" -#define NID_id_mod_dvcs 283 -#define OBJ_id_mod_dvcs OBJ_id_pkix_mod,15L - -#define SN_id_mod_cmp2000 "id-mod-cmp2000" -#define NID_id_mod_cmp2000 284 -#define OBJ_id_mod_cmp2000 OBJ_id_pkix_mod,16L - -#define SN_info_access "authorityInfoAccess" -#define LN_info_access "Authority Information Access" -#define NID_info_access 177 -#define OBJ_info_access OBJ_id_pe,1L - -#define SN_biometricInfo "biometricInfo" -#define LN_biometricInfo "Biometric Info" -#define NID_biometricInfo 285 -#define OBJ_biometricInfo OBJ_id_pe,2L - -#define SN_qcStatements "qcStatements" -#define NID_qcStatements 286 -#define OBJ_qcStatements OBJ_id_pe,3L - -#define SN_ac_auditEntity "ac-auditEntity" -#define NID_ac_auditEntity 287 -#define OBJ_ac_auditEntity OBJ_id_pe,4L - -#define SN_ac_targeting "ac-targeting" -#define NID_ac_targeting 288 -#define OBJ_ac_targeting OBJ_id_pe,5L - -#define SN_aaControls "aaControls" -#define NID_aaControls 289 -#define OBJ_aaControls OBJ_id_pe,6L - -#define SN_sbgp_ipAddrBlock "sbgp-ipAddrBlock" -#define NID_sbgp_ipAddrBlock 290 -#define OBJ_sbgp_ipAddrBlock OBJ_id_pe,7L - -#define SN_sbgp_autonomousSysNum "sbgp-autonomousSysNum" -#define NID_sbgp_autonomousSysNum 291 -#define OBJ_sbgp_autonomousSysNum OBJ_id_pe,8L - -#define SN_sbgp_routerIdentifier "sbgp-routerIdentifier" -#define NID_sbgp_routerIdentifier 292 -#define OBJ_sbgp_routerIdentifier OBJ_id_pe,9L - -#define SN_ac_proxying "ac-proxying" -#define NID_ac_proxying 397 -#define OBJ_ac_proxying OBJ_id_pe,10L - -#define SN_sinfo_access "subjectInfoAccess" -#define LN_sinfo_access "Subject Information Access" -#define NID_sinfo_access 398 -#define OBJ_sinfo_access OBJ_id_pe,11L - -#define SN_proxyCertInfo "proxyCertInfo" -#define LN_proxyCertInfo "Proxy Certificate Information" -#define NID_proxyCertInfo 663 -#define OBJ_proxyCertInfo OBJ_id_pe,14L - -#define SN_id_qt_cps "id-qt-cps" -#define LN_id_qt_cps "Policy Qualifier CPS" -#define NID_id_qt_cps 164 -#define OBJ_id_qt_cps OBJ_id_qt,1L - -#define SN_id_qt_unotice "id-qt-unotice" -#define LN_id_qt_unotice "Policy Qualifier User Notice" -#define NID_id_qt_unotice 165 -#define OBJ_id_qt_unotice OBJ_id_qt,2L - -#define SN_textNotice "textNotice" -#define NID_textNotice 293 -#define OBJ_textNotice OBJ_id_qt,3L - -#define SN_server_auth "serverAuth" -#define LN_server_auth "TLS Web Server Authentication" -#define NID_server_auth 129 -#define OBJ_server_auth OBJ_id_kp,1L - -#define SN_client_auth "clientAuth" -#define LN_client_auth "TLS Web Client Authentication" -#define NID_client_auth 130 -#define OBJ_client_auth OBJ_id_kp,2L - -#define SN_code_sign "codeSigning" -#define LN_code_sign "Code Signing" -#define NID_code_sign 131 -#define OBJ_code_sign OBJ_id_kp,3L - -#define SN_email_protect "emailProtection" -#define LN_email_protect "E-mail Protection" -#define NID_email_protect 132 -#define OBJ_email_protect OBJ_id_kp,4L - -#define SN_ipsecEndSystem "ipsecEndSystem" -#define LN_ipsecEndSystem "IPSec End System" -#define NID_ipsecEndSystem 294 -#define OBJ_ipsecEndSystem OBJ_id_kp,5L - -#define SN_ipsecTunnel "ipsecTunnel" -#define LN_ipsecTunnel "IPSec Tunnel" -#define NID_ipsecTunnel 295 -#define OBJ_ipsecTunnel OBJ_id_kp,6L - -#define SN_ipsecUser "ipsecUser" -#define LN_ipsecUser "IPSec User" -#define NID_ipsecUser 296 -#define OBJ_ipsecUser OBJ_id_kp,7L - -#define SN_time_stamp "timeStamping" -#define LN_time_stamp "Time Stamping" -#define NID_time_stamp 133 -#define OBJ_time_stamp OBJ_id_kp,8L - -#define SN_OCSP_sign "OCSPSigning" -#define LN_OCSP_sign "OCSP Signing" -#define NID_OCSP_sign 180 -#define OBJ_OCSP_sign OBJ_id_kp,9L - -#define SN_dvcs "DVCS" -#define LN_dvcs "dvcs" -#define NID_dvcs 297 -#define OBJ_dvcs OBJ_id_kp,10L - -#define SN_id_it_caProtEncCert "id-it-caProtEncCert" -#define NID_id_it_caProtEncCert 298 -#define OBJ_id_it_caProtEncCert OBJ_id_it,1L - -#define SN_id_it_signKeyPairTypes "id-it-signKeyPairTypes" -#define NID_id_it_signKeyPairTypes 299 -#define OBJ_id_it_signKeyPairTypes OBJ_id_it,2L - -#define SN_id_it_encKeyPairTypes "id-it-encKeyPairTypes" -#define NID_id_it_encKeyPairTypes 300 -#define OBJ_id_it_encKeyPairTypes OBJ_id_it,3L - -#define SN_id_it_preferredSymmAlg "id-it-preferredSymmAlg" -#define NID_id_it_preferredSymmAlg 301 -#define OBJ_id_it_preferredSymmAlg OBJ_id_it,4L - -#define SN_id_it_caKeyUpdateInfo "id-it-caKeyUpdateInfo" -#define NID_id_it_caKeyUpdateInfo 302 -#define OBJ_id_it_caKeyUpdateInfo OBJ_id_it,5L - -#define SN_id_it_currentCRL "id-it-currentCRL" -#define NID_id_it_currentCRL 303 -#define OBJ_id_it_currentCRL OBJ_id_it,6L - -#define SN_id_it_unsupportedOIDs "id-it-unsupportedOIDs" -#define NID_id_it_unsupportedOIDs 304 -#define OBJ_id_it_unsupportedOIDs OBJ_id_it,7L - -#define SN_id_it_subscriptionRequest "id-it-subscriptionRequest" -#define NID_id_it_subscriptionRequest 305 -#define OBJ_id_it_subscriptionRequest OBJ_id_it,8L - -#define SN_id_it_subscriptionResponse "id-it-subscriptionResponse" -#define NID_id_it_subscriptionResponse 306 -#define OBJ_id_it_subscriptionResponse OBJ_id_it,9L - -#define SN_id_it_keyPairParamReq "id-it-keyPairParamReq" -#define NID_id_it_keyPairParamReq 307 -#define OBJ_id_it_keyPairParamReq OBJ_id_it,10L - -#define SN_id_it_keyPairParamRep "id-it-keyPairParamRep" -#define NID_id_it_keyPairParamRep 308 -#define OBJ_id_it_keyPairParamRep OBJ_id_it,11L - -#define SN_id_it_revPassphrase "id-it-revPassphrase" -#define NID_id_it_revPassphrase 309 -#define OBJ_id_it_revPassphrase OBJ_id_it,12L - -#define SN_id_it_implicitConfirm "id-it-implicitConfirm" -#define NID_id_it_implicitConfirm 310 -#define OBJ_id_it_implicitConfirm OBJ_id_it,13L - -#define SN_id_it_confirmWaitTime "id-it-confirmWaitTime" -#define NID_id_it_confirmWaitTime 311 -#define OBJ_id_it_confirmWaitTime OBJ_id_it,14L - -#define SN_id_it_origPKIMessage "id-it-origPKIMessage" -#define NID_id_it_origPKIMessage 312 -#define OBJ_id_it_origPKIMessage OBJ_id_it,15L - -#define SN_id_it_suppLangTags "id-it-suppLangTags" -#define NID_id_it_suppLangTags 784 -#define OBJ_id_it_suppLangTags OBJ_id_it,16L - -#define SN_id_regCtrl "id-regCtrl" -#define NID_id_regCtrl 313 -#define OBJ_id_regCtrl OBJ_id_pkip,1L - -#define SN_id_regInfo "id-regInfo" -#define NID_id_regInfo 314 -#define OBJ_id_regInfo OBJ_id_pkip,2L - -#define SN_id_regCtrl_regToken "id-regCtrl-regToken" -#define NID_id_regCtrl_regToken 315 -#define OBJ_id_regCtrl_regToken OBJ_id_regCtrl,1L - -#define SN_id_regCtrl_authenticator "id-regCtrl-authenticator" -#define NID_id_regCtrl_authenticator 316 -#define OBJ_id_regCtrl_authenticator OBJ_id_regCtrl,2L - -#define SN_id_regCtrl_pkiPublicationInfo "id-regCtrl-pkiPublicationInfo" -#define NID_id_regCtrl_pkiPublicationInfo 317 -#define OBJ_id_regCtrl_pkiPublicationInfo OBJ_id_regCtrl,3L - -#define SN_id_regCtrl_pkiArchiveOptions "id-regCtrl-pkiArchiveOptions" -#define NID_id_regCtrl_pkiArchiveOptions 318 -#define OBJ_id_regCtrl_pkiArchiveOptions OBJ_id_regCtrl,4L - -#define SN_id_regCtrl_oldCertID "id-regCtrl-oldCertID" -#define NID_id_regCtrl_oldCertID 319 -#define OBJ_id_regCtrl_oldCertID OBJ_id_regCtrl,5L - -#define SN_id_regCtrl_protocolEncrKey "id-regCtrl-protocolEncrKey" -#define NID_id_regCtrl_protocolEncrKey 320 -#define OBJ_id_regCtrl_protocolEncrKey OBJ_id_regCtrl,6L - -#define SN_id_regInfo_utf8Pairs "id-regInfo-utf8Pairs" -#define NID_id_regInfo_utf8Pairs 321 -#define OBJ_id_regInfo_utf8Pairs OBJ_id_regInfo,1L - -#define SN_id_regInfo_certReq "id-regInfo-certReq" -#define NID_id_regInfo_certReq 322 -#define OBJ_id_regInfo_certReq OBJ_id_regInfo,2L - -#define SN_id_alg_des40 "id-alg-des40" -#define NID_id_alg_des40 323 -#define OBJ_id_alg_des40 OBJ_id_alg,1L - -#define SN_id_alg_noSignature "id-alg-noSignature" -#define NID_id_alg_noSignature 324 -#define OBJ_id_alg_noSignature OBJ_id_alg,2L - -#define SN_id_alg_dh_sig_hmac_sha1 "id-alg-dh-sig-hmac-sha1" -#define NID_id_alg_dh_sig_hmac_sha1 325 -#define OBJ_id_alg_dh_sig_hmac_sha1 OBJ_id_alg,3L - -#define SN_id_alg_dh_pop "id-alg-dh-pop" -#define NID_id_alg_dh_pop 326 -#define OBJ_id_alg_dh_pop OBJ_id_alg,4L - -#define SN_id_cmc_statusInfo "id-cmc-statusInfo" -#define NID_id_cmc_statusInfo 327 -#define OBJ_id_cmc_statusInfo OBJ_id_cmc,1L - -#define SN_id_cmc_identification "id-cmc-identification" -#define NID_id_cmc_identification 328 -#define OBJ_id_cmc_identification OBJ_id_cmc,2L - -#define SN_id_cmc_identityProof "id-cmc-identityProof" -#define NID_id_cmc_identityProof 329 -#define OBJ_id_cmc_identityProof OBJ_id_cmc,3L - -#define SN_id_cmc_dataReturn "id-cmc-dataReturn" -#define NID_id_cmc_dataReturn 330 -#define OBJ_id_cmc_dataReturn OBJ_id_cmc,4L - -#define SN_id_cmc_transactionId "id-cmc-transactionId" -#define NID_id_cmc_transactionId 331 -#define OBJ_id_cmc_transactionId OBJ_id_cmc,5L - -#define SN_id_cmc_senderNonce "id-cmc-senderNonce" -#define NID_id_cmc_senderNonce 332 -#define OBJ_id_cmc_senderNonce OBJ_id_cmc,6L - -#define SN_id_cmc_recipientNonce "id-cmc-recipientNonce" -#define NID_id_cmc_recipientNonce 333 -#define OBJ_id_cmc_recipientNonce OBJ_id_cmc,7L - -#define SN_id_cmc_addExtensions "id-cmc-addExtensions" -#define NID_id_cmc_addExtensions 334 -#define OBJ_id_cmc_addExtensions OBJ_id_cmc,8L - -#define SN_id_cmc_encryptedPOP "id-cmc-encryptedPOP" -#define NID_id_cmc_encryptedPOP 335 -#define OBJ_id_cmc_encryptedPOP OBJ_id_cmc,9L - -#define SN_id_cmc_decryptedPOP "id-cmc-decryptedPOP" -#define NID_id_cmc_decryptedPOP 336 -#define OBJ_id_cmc_decryptedPOP OBJ_id_cmc,10L - -#define SN_id_cmc_lraPOPWitness "id-cmc-lraPOPWitness" -#define NID_id_cmc_lraPOPWitness 337 -#define OBJ_id_cmc_lraPOPWitness OBJ_id_cmc,11L - -#define SN_id_cmc_getCert "id-cmc-getCert" -#define NID_id_cmc_getCert 338 -#define OBJ_id_cmc_getCert OBJ_id_cmc,15L - -#define SN_id_cmc_getCRL "id-cmc-getCRL" -#define NID_id_cmc_getCRL 339 -#define OBJ_id_cmc_getCRL OBJ_id_cmc,16L - -#define SN_id_cmc_revokeRequest "id-cmc-revokeRequest" -#define NID_id_cmc_revokeRequest 340 -#define OBJ_id_cmc_revokeRequest OBJ_id_cmc,17L - -#define SN_id_cmc_regInfo "id-cmc-regInfo" -#define NID_id_cmc_regInfo 341 -#define OBJ_id_cmc_regInfo OBJ_id_cmc,18L - -#define SN_id_cmc_responseInfo "id-cmc-responseInfo" -#define NID_id_cmc_responseInfo 342 -#define OBJ_id_cmc_responseInfo OBJ_id_cmc,19L - -#define SN_id_cmc_queryPending "id-cmc-queryPending" -#define NID_id_cmc_queryPending 343 -#define OBJ_id_cmc_queryPending OBJ_id_cmc,21L - -#define SN_id_cmc_popLinkRandom "id-cmc-popLinkRandom" -#define NID_id_cmc_popLinkRandom 344 -#define OBJ_id_cmc_popLinkRandom OBJ_id_cmc,22L - -#define SN_id_cmc_popLinkWitness "id-cmc-popLinkWitness" -#define NID_id_cmc_popLinkWitness 345 -#define OBJ_id_cmc_popLinkWitness OBJ_id_cmc,23L - -#define SN_id_cmc_confirmCertAcceptance "id-cmc-confirmCertAcceptance" -#define NID_id_cmc_confirmCertAcceptance 346 -#define OBJ_id_cmc_confirmCertAcceptance OBJ_id_cmc,24L - -#define SN_id_on_personalData "id-on-personalData" -#define NID_id_on_personalData 347 -#define OBJ_id_on_personalData OBJ_id_on,1L - -#define SN_id_on_permanentIdentifier "id-on-permanentIdentifier" -#define LN_id_on_permanentIdentifier "Permanent Identifier" -#define NID_id_on_permanentIdentifier 858 -#define OBJ_id_on_permanentIdentifier OBJ_id_on,3L - -#define SN_id_pda_dateOfBirth "id-pda-dateOfBirth" -#define NID_id_pda_dateOfBirth 348 -#define OBJ_id_pda_dateOfBirth OBJ_id_pda,1L - -#define SN_id_pda_placeOfBirth "id-pda-placeOfBirth" -#define NID_id_pda_placeOfBirth 349 -#define OBJ_id_pda_placeOfBirth OBJ_id_pda,2L - -#define SN_id_pda_gender "id-pda-gender" -#define NID_id_pda_gender 351 -#define OBJ_id_pda_gender OBJ_id_pda,3L - -#define SN_id_pda_countryOfCitizenship "id-pda-countryOfCitizenship" -#define NID_id_pda_countryOfCitizenship 352 -#define OBJ_id_pda_countryOfCitizenship OBJ_id_pda,4L - -#define SN_id_pda_countryOfResidence "id-pda-countryOfResidence" -#define NID_id_pda_countryOfResidence 353 -#define OBJ_id_pda_countryOfResidence OBJ_id_pda,5L - -#define SN_id_aca_authenticationInfo "id-aca-authenticationInfo" -#define NID_id_aca_authenticationInfo 354 -#define OBJ_id_aca_authenticationInfo OBJ_id_aca,1L - -#define SN_id_aca_accessIdentity "id-aca-accessIdentity" -#define NID_id_aca_accessIdentity 355 -#define OBJ_id_aca_accessIdentity OBJ_id_aca,2L - -#define SN_id_aca_chargingIdentity "id-aca-chargingIdentity" -#define NID_id_aca_chargingIdentity 356 -#define OBJ_id_aca_chargingIdentity OBJ_id_aca,3L - -#define SN_id_aca_group "id-aca-group" -#define NID_id_aca_group 357 -#define OBJ_id_aca_group OBJ_id_aca,4L - -#define SN_id_aca_role "id-aca-role" -#define NID_id_aca_role 358 -#define OBJ_id_aca_role OBJ_id_aca,5L - -#define SN_id_aca_encAttrs "id-aca-encAttrs" -#define NID_id_aca_encAttrs 399 -#define OBJ_id_aca_encAttrs OBJ_id_aca,6L - -#define SN_id_qcs_pkixQCSyntax_v1 "id-qcs-pkixQCSyntax-v1" -#define NID_id_qcs_pkixQCSyntax_v1 359 -#define OBJ_id_qcs_pkixQCSyntax_v1 OBJ_id_qcs,1L - -#define SN_id_cct_crs "id-cct-crs" -#define NID_id_cct_crs 360 -#define OBJ_id_cct_crs OBJ_id_cct,1L - -#define SN_id_cct_PKIData "id-cct-PKIData" -#define NID_id_cct_PKIData 361 -#define OBJ_id_cct_PKIData OBJ_id_cct,2L - -#define SN_id_cct_PKIResponse "id-cct-PKIResponse" -#define NID_id_cct_PKIResponse 362 -#define OBJ_id_cct_PKIResponse OBJ_id_cct,3L - -#define SN_id_ppl_anyLanguage "id-ppl-anyLanguage" -#define LN_id_ppl_anyLanguage "Any language" -#define NID_id_ppl_anyLanguage 664 -#define OBJ_id_ppl_anyLanguage OBJ_id_ppl,0L - -#define SN_id_ppl_inheritAll "id-ppl-inheritAll" -#define LN_id_ppl_inheritAll "Inherit all" -#define NID_id_ppl_inheritAll 665 -#define OBJ_id_ppl_inheritAll OBJ_id_ppl,1L - -#define SN_Independent "id-ppl-independent" -#define LN_Independent "Independent" -#define NID_Independent 667 -#define OBJ_Independent OBJ_id_ppl,2L - -#define SN_ad_OCSP "OCSP" -#define LN_ad_OCSP "OCSP" -#define NID_ad_OCSP 178 -#define OBJ_ad_OCSP OBJ_id_ad,1L - -#define SN_ad_ca_issuers "caIssuers" -#define LN_ad_ca_issuers "CA Issuers" -#define NID_ad_ca_issuers 179 -#define OBJ_ad_ca_issuers OBJ_id_ad,2L - -#define SN_ad_timeStamping "ad_timestamping" -#define LN_ad_timeStamping "AD Time Stamping" -#define NID_ad_timeStamping 363 -#define OBJ_ad_timeStamping OBJ_id_ad,3L - -#define SN_ad_dvcs "AD_DVCS" -#define LN_ad_dvcs "ad dvcs" -#define NID_ad_dvcs 364 -#define OBJ_ad_dvcs OBJ_id_ad,4L - -#define SN_caRepository "caRepository" -#define LN_caRepository "CA Repository" -#define NID_caRepository 785 -#define OBJ_caRepository OBJ_id_ad,5L - -#define OBJ_id_pkix_OCSP OBJ_ad_OCSP - -#define SN_id_pkix_OCSP_basic "basicOCSPResponse" -#define LN_id_pkix_OCSP_basic "Basic OCSP Response" -#define NID_id_pkix_OCSP_basic 365 -#define OBJ_id_pkix_OCSP_basic OBJ_id_pkix_OCSP,1L - -#define SN_id_pkix_OCSP_Nonce "Nonce" -#define LN_id_pkix_OCSP_Nonce "OCSP Nonce" -#define NID_id_pkix_OCSP_Nonce 366 -#define OBJ_id_pkix_OCSP_Nonce OBJ_id_pkix_OCSP,2L - -#define SN_id_pkix_OCSP_CrlID "CrlID" -#define LN_id_pkix_OCSP_CrlID "OCSP CRL ID" -#define NID_id_pkix_OCSP_CrlID 367 -#define OBJ_id_pkix_OCSP_CrlID OBJ_id_pkix_OCSP,3L - -#define SN_id_pkix_OCSP_acceptableResponses "acceptableResponses" -#define LN_id_pkix_OCSP_acceptableResponses "Acceptable OCSP Responses" -#define NID_id_pkix_OCSP_acceptableResponses 368 -#define OBJ_id_pkix_OCSP_acceptableResponses OBJ_id_pkix_OCSP,4L - -#define SN_id_pkix_OCSP_noCheck "noCheck" -#define LN_id_pkix_OCSP_noCheck "OCSP No Check" -#define NID_id_pkix_OCSP_noCheck 369 -#define OBJ_id_pkix_OCSP_noCheck OBJ_id_pkix_OCSP,5L - -#define SN_id_pkix_OCSP_archiveCutoff "archiveCutoff" -#define LN_id_pkix_OCSP_archiveCutoff "OCSP Archive Cutoff" -#define NID_id_pkix_OCSP_archiveCutoff 370 -#define OBJ_id_pkix_OCSP_archiveCutoff OBJ_id_pkix_OCSP,6L - -#define SN_id_pkix_OCSP_serviceLocator "serviceLocator" -#define LN_id_pkix_OCSP_serviceLocator "OCSP Service Locator" -#define NID_id_pkix_OCSP_serviceLocator 371 -#define OBJ_id_pkix_OCSP_serviceLocator OBJ_id_pkix_OCSP,7L - -#define SN_id_pkix_OCSP_extendedStatus "extendedStatus" -#define LN_id_pkix_OCSP_extendedStatus "Extended OCSP Status" -#define NID_id_pkix_OCSP_extendedStatus 372 -#define OBJ_id_pkix_OCSP_extendedStatus OBJ_id_pkix_OCSP,8L - -#define SN_id_pkix_OCSP_valid "valid" -#define NID_id_pkix_OCSP_valid 373 -#define OBJ_id_pkix_OCSP_valid OBJ_id_pkix_OCSP,9L - -#define SN_id_pkix_OCSP_path "path" -#define NID_id_pkix_OCSP_path 374 -#define OBJ_id_pkix_OCSP_path OBJ_id_pkix_OCSP,10L - -#define SN_id_pkix_OCSP_trustRoot "trustRoot" -#define LN_id_pkix_OCSP_trustRoot "Trust Root" -#define NID_id_pkix_OCSP_trustRoot 375 -#define OBJ_id_pkix_OCSP_trustRoot OBJ_id_pkix_OCSP,11L - -#define SN_algorithm "algorithm" -#define LN_algorithm "algorithm" -#define NID_algorithm 376 -#define OBJ_algorithm 1L,3L,14L,3L,2L - -#define SN_md5WithRSA "RSA-NP-MD5" -#define LN_md5WithRSA "md5WithRSA" -#define NID_md5WithRSA 104 -#define OBJ_md5WithRSA OBJ_algorithm,3L - -#define SN_des_ecb "DES-ECB" -#define LN_des_ecb "des-ecb" -#define NID_des_ecb 29 -#define OBJ_des_ecb OBJ_algorithm,6L - -#define SN_des_cbc "DES-CBC" -#define LN_des_cbc "des-cbc" -#define NID_des_cbc 31 -#define OBJ_des_cbc OBJ_algorithm,7L - -#define SN_des_ofb64 "DES-OFB" -#define LN_des_ofb64 "des-ofb" -#define NID_des_ofb64 45 -#define OBJ_des_ofb64 OBJ_algorithm,8L - -#define SN_des_cfb64 "DES-CFB" -#define LN_des_cfb64 "des-cfb" -#define NID_des_cfb64 30 -#define OBJ_des_cfb64 OBJ_algorithm,9L - -#define SN_rsaSignature "rsaSignature" -#define NID_rsaSignature 377 -#define OBJ_rsaSignature OBJ_algorithm,11L - -#define SN_dsa_2 "DSA-old" -#define LN_dsa_2 "dsaEncryption-old" -#define NID_dsa_2 67 -#define OBJ_dsa_2 OBJ_algorithm,12L - -#define SN_dsaWithSHA "DSA-SHA" -#define LN_dsaWithSHA "dsaWithSHA" -#define NID_dsaWithSHA 66 -#define OBJ_dsaWithSHA OBJ_algorithm,13L - -#define SN_shaWithRSAEncryption "RSA-SHA" -#define LN_shaWithRSAEncryption "shaWithRSAEncryption" -#define NID_shaWithRSAEncryption 42 -#define OBJ_shaWithRSAEncryption OBJ_algorithm,15L - -#define SN_des_ede_ecb "DES-EDE" -#define LN_des_ede_ecb "des-ede" -#define NID_des_ede_ecb 32 -#define OBJ_des_ede_ecb OBJ_algorithm,17L - -#define SN_des_ede3_ecb "DES-EDE3" -#define LN_des_ede3_ecb "des-ede3" -#define NID_des_ede3_ecb 33 - -#define SN_des_ede_cbc "DES-EDE-CBC" -#define LN_des_ede_cbc "des-ede-cbc" -#define NID_des_ede_cbc 43 - -#define SN_des_ede_cfb64 "DES-EDE-CFB" -#define LN_des_ede_cfb64 "des-ede-cfb" -#define NID_des_ede_cfb64 60 - -#define SN_des_ede3_cfb64 "DES-EDE3-CFB" -#define LN_des_ede3_cfb64 "des-ede3-cfb" -#define NID_des_ede3_cfb64 61 - -#define SN_des_ede_ofb64 "DES-EDE-OFB" -#define LN_des_ede_ofb64 "des-ede-ofb" -#define NID_des_ede_ofb64 62 - -#define SN_des_ede3_ofb64 "DES-EDE3-OFB" -#define LN_des_ede3_ofb64 "des-ede3-ofb" -#define NID_des_ede3_ofb64 63 - -#define SN_desx_cbc "DESX-CBC" -#define LN_desx_cbc "desx-cbc" -#define NID_desx_cbc 80 - -#define SN_sha "SHA" -#define LN_sha "sha" -#define NID_sha 41 -#define OBJ_sha OBJ_algorithm,18L - -#define SN_sha1 "SHA1" -#define LN_sha1 "sha1" -#define NID_sha1 64 -#define OBJ_sha1 OBJ_algorithm,26L - -#define SN_dsaWithSHA1_2 "DSA-SHA1-old" -#define LN_dsaWithSHA1_2 "dsaWithSHA1-old" -#define NID_dsaWithSHA1_2 70 -#define OBJ_dsaWithSHA1_2 OBJ_algorithm,27L - -#define SN_sha1WithRSA "RSA-SHA1-2" -#define LN_sha1WithRSA "sha1WithRSA" -#define NID_sha1WithRSA 115 -#define OBJ_sha1WithRSA OBJ_algorithm,29L - -#define SN_ripemd160 "RIPEMD160" -#define LN_ripemd160 "ripemd160" -#define NID_ripemd160 117 -#define OBJ_ripemd160 1L,3L,36L,3L,2L,1L - -#define SN_ripemd160WithRSA "RSA-RIPEMD160" -#define LN_ripemd160WithRSA "ripemd160WithRSA" -#define NID_ripemd160WithRSA 119 -#define OBJ_ripemd160WithRSA 1L,3L,36L,3L,3L,1L,2L - -#define SN_sxnet "SXNetID" -#define LN_sxnet "Strong Extranet ID" -#define NID_sxnet 143 -#define OBJ_sxnet 1L,3L,101L,1L,4L,1L - -#define SN_X500 "X500" -#define LN_X500 "directory services (X.500)" -#define NID_X500 11 -#define OBJ_X500 2L,5L - -#define SN_X509 "X509" -#define NID_X509 12 -#define OBJ_X509 OBJ_X500,4L - -#define SN_commonName "CN" -#define LN_commonName "commonName" -#define NID_commonName 13 -#define OBJ_commonName OBJ_X509,3L - -#define SN_surname "SN" -#define LN_surname "surname" -#define NID_surname 100 -#define OBJ_surname OBJ_X509,4L - -#define LN_serialNumber "serialNumber" -#define NID_serialNumber 105 -#define OBJ_serialNumber OBJ_X509,5L - -#define SN_countryName "C" -#define LN_countryName "countryName" -#define NID_countryName 14 -#define OBJ_countryName OBJ_X509,6L - -#define SN_localityName "L" -#define LN_localityName "localityName" -#define NID_localityName 15 -#define OBJ_localityName OBJ_X509,7L - -#define SN_stateOrProvinceName "ST" -#define LN_stateOrProvinceName "stateOrProvinceName" -#define NID_stateOrProvinceName 16 -#define OBJ_stateOrProvinceName OBJ_X509,8L - -#define SN_streetAddress "street" -#define LN_streetAddress "streetAddress" -#define NID_streetAddress 660 -#define OBJ_streetAddress OBJ_X509,9L - -#define SN_organizationName "O" -#define LN_organizationName "organizationName" -#define NID_organizationName 17 -#define OBJ_organizationName OBJ_X509,10L - -#define SN_organizationalUnitName "OU" -#define LN_organizationalUnitName "organizationalUnitName" -#define NID_organizationalUnitName 18 -#define OBJ_organizationalUnitName OBJ_X509,11L - -#define SN_title "title" -#define LN_title "title" -#define NID_title 106 -#define OBJ_title OBJ_X509,12L - -#define LN_description "description" -#define NID_description 107 -#define OBJ_description OBJ_X509,13L - -#define LN_searchGuide "searchGuide" -#define NID_searchGuide 859 -#define OBJ_searchGuide OBJ_X509,14L - -#define LN_businessCategory "businessCategory" -#define NID_businessCategory 860 -#define OBJ_businessCategory OBJ_X509,15L - -#define LN_postalAddress "postalAddress" -#define NID_postalAddress 861 -#define OBJ_postalAddress OBJ_X509,16L - -#define LN_postalCode "postalCode" -#define NID_postalCode 661 -#define OBJ_postalCode OBJ_X509,17L - -#define LN_postOfficeBox "postOfficeBox" -#define NID_postOfficeBox 862 -#define OBJ_postOfficeBox OBJ_X509,18L - -#define LN_physicalDeliveryOfficeName "physicalDeliveryOfficeName" -#define NID_physicalDeliveryOfficeName 863 -#define OBJ_physicalDeliveryOfficeName OBJ_X509,19L - -#define LN_telephoneNumber "telephoneNumber" -#define NID_telephoneNumber 864 -#define OBJ_telephoneNumber OBJ_X509,20L - -#define LN_telexNumber "telexNumber" -#define NID_telexNumber 865 -#define OBJ_telexNumber OBJ_X509,21L - -#define LN_teletexTerminalIdentifier "teletexTerminalIdentifier" -#define NID_teletexTerminalIdentifier 866 -#define OBJ_teletexTerminalIdentifier OBJ_X509,22L - -#define LN_facsimileTelephoneNumber "facsimileTelephoneNumber" -#define NID_facsimileTelephoneNumber 867 -#define OBJ_facsimileTelephoneNumber OBJ_X509,23L - -#define LN_x121Address "x121Address" -#define NID_x121Address 868 -#define OBJ_x121Address OBJ_X509,24L - -#define LN_internationaliSDNNumber "internationaliSDNNumber" -#define NID_internationaliSDNNumber 869 -#define OBJ_internationaliSDNNumber OBJ_X509,25L - -#define LN_registeredAddress "registeredAddress" -#define NID_registeredAddress 870 -#define OBJ_registeredAddress OBJ_X509,26L - -#define LN_destinationIndicator "destinationIndicator" -#define NID_destinationIndicator 871 -#define OBJ_destinationIndicator OBJ_X509,27L - -#define LN_preferredDeliveryMethod "preferredDeliveryMethod" -#define NID_preferredDeliveryMethod 872 -#define OBJ_preferredDeliveryMethod OBJ_X509,28L - -#define LN_presentationAddress "presentationAddress" -#define NID_presentationAddress 873 -#define OBJ_presentationAddress OBJ_X509,29L - -#define LN_supportedApplicationContext "supportedApplicationContext" -#define NID_supportedApplicationContext 874 -#define OBJ_supportedApplicationContext OBJ_X509,30L - -#define SN_member "member" -#define NID_member 875 -#define OBJ_member OBJ_X509,31L - -#define SN_owner "owner" -#define NID_owner 876 -#define OBJ_owner OBJ_X509,32L - -#define LN_roleOccupant "roleOccupant" -#define NID_roleOccupant 877 -#define OBJ_roleOccupant OBJ_X509,33L - -#define SN_seeAlso "seeAlso" -#define NID_seeAlso 878 -#define OBJ_seeAlso OBJ_X509,34L - -#define LN_userPassword "userPassword" -#define NID_userPassword 879 -#define OBJ_userPassword OBJ_X509,35L - -#define LN_userCertificate "userCertificate" -#define NID_userCertificate 880 -#define OBJ_userCertificate OBJ_X509,36L - -#define LN_cACertificate "cACertificate" -#define NID_cACertificate 881 -#define OBJ_cACertificate OBJ_X509,37L - -#define LN_authorityRevocationList "authorityRevocationList" -#define NID_authorityRevocationList 882 -#define OBJ_authorityRevocationList OBJ_X509,38L - -#define LN_certificateRevocationList "certificateRevocationList" -#define NID_certificateRevocationList 883 -#define OBJ_certificateRevocationList OBJ_X509,39L - -#define LN_crossCertificatePair "crossCertificatePair" -#define NID_crossCertificatePair 884 -#define OBJ_crossCertificatePair OBJ_X509,40L - -#define SN_name "name" -#define LN_name "name" -#define NID_name 173 -#define OBJ_name OBJ_X509,41L - -#define SN_givenName "GN" -#define LN_givenName "givenName" -#define NID_givenName 99 -#define OBJ_givenName OBJ_X509,42L - -#define SN_initials "initials" -#define LN_initials "initials" -#define NID_initials 101 -#define OBJ_initials OBJ_X509,43L - -#define LN_generationQualifier "generationQualifier" -#define NID_generationQualifier 509 -#define OBJ_generationQualifier OBJ_X509,44L - -#define LN_x500UniqueIdentifier "x500UniqueIdentifier" -#define NID_x500UniqueIdentifier 503 -#define OBJ_x500UniqueIdentifier OBJ_X509,45L - -#define SN_dnQualifier "dnQualifier" -#define LN_dnQualifier "dnQualifier" -#define NID_dnQualifier 174 -#define OBJ_dnQualifier OBJ_X509,46L - -#define LN_enhancedSearchGuide "enhancedSearchGuide" -#define NID_enhancedSearchGuide 885 -#define OBJ_enhancedSearchGuide OBJ_X509,47L - -#define LN_protocolInformation "protocolInformation" -#define NID_protocolInformation 886 -#define OBJ_protocolInformation OBJ_X509,48L - -#define LN_distinguishedName "distinguishedName" -#define NID_distinguishedName 887 -#define OBJ_distinguishedName OBJ_X509,49L - -#define LN_uniqueMember "uniqueMember" -#define NID_uniqueMember 888 -#define OBJ_uniqueMember OBJ_X509,50L - -#define LN_houseIdentifier "houseIdentifier" -#define NID_houseIdentifier 889 -#define OBJ_houseIdentifier OBJ_X509,51L - -#define LN_supportedAlgorithms "supportedAlgorithms" -#define NID_supportedAlgorithms 890 -#define OBJ_supportedAlgorithms OBJ_X509,52L - -#define LN_deltaRevocationList "deltaRevocationList" -#define NID_deltaRevocationList 891 -#define OBJ_deltaRevocationList OBJ_X509,53L - -#define SN_dmdName "dmdName" -#define NID_dmdName 892 -#define OBJ_dmdName OBJ_X509,54L - -#define LN_pseudonym "pseudonym" -#define NID_pseudonym 510 -#define OBJ_pseudonym OBJ_X509,65L - -#define SN_role "role" -#define LN_role "role" -#define NID_role 400 -#define OBJ_role OBJ_X509,72L - -#define SN_X500algorithms "X500algorithms" -#define LN_X500algorithms "directory services - algorithms" -#define NID_X500algorithms 378 -#define OBJ_X500algorithms OBJ_X500,8L - -#define SN_rsa "RSA" -#define LN_rsa "rsa" -#define NID_rsa 19 -#define OBJ_rsa OBJ_X500algorithms,1L,1L - -#define SN_mdc2WithRSA "RSA-MDC2" -#define LN_mdc2WithRSA "mdc2WithRSA" -#define NID_mdc2WithRSA 96 -#define OBJ_mdc2WithRSA OBJ_X500algorithms,3L,100L - -#define SN_mdc2 "MDC2" -#define LN_mdc2 "mdc2" -#define NID_mdc2 95 -#define OBJ_mdc2 OBJ_X500algorithms,3L,101L - -#define SN_id_ce "id-ce" -#define NID_id_ce 81 -#define OBJ_id_ce OBJ_X500,29L - -#define SN_subject_directory_attributes "subjectDirectoryAttributes" -#define LN_subject_directory_attributes "X509v3 Subject Directory Attributes" -#define NID_subject_directory_attributes 769 -#define OBJ_subject_directory_attributes OBJ_id_ce,9L - -#define SN_subject_key_identifier "subjectKeyIdentifier" -#define LN_subject_key_identifier "X509v3 Subject Key Identifier" -#define NID_subject_key_identifier 82 -#define OBJ_subject_key_identifier OBJ_id_ce,14L - -#define SN_key_usage "keyUsage" -#define LN_key_usage "X509v3 Key Usage" -#define NID_key_usage 83 -#define OBJ_key_usage OBJ_id_ce,15L - -#define SN_private_key_usage_period "privateKeyUsagePeriod" -#define LN_private_key_usage_period "X509v3 Private Key Usage Period" -#define NID_private_key_usage_period 84 -#define OBJ_private_key_usage_period OBJ_id_ce,16L - -#define SN_subject_alt_name "subjectAltName" -#define LN_subject_alt_name "X509v3 Subject Alternative Name" -#define NID_subject_alt_name 85 -#define OBJ_subject_alt_name OBJ_id_ce,17L - -#define SN_issuer_alt_name "issuerAltName" -#define LN_issuer_alt_name "X509v3 Issuer Alternative Name" -#define NID_issuer_alt_name 86 -#define OBJ_issuer_alt_name OBJ_id_ce,18L - -#define SN_basic_constraints "basicConstraints" -#define LN_basic_constraints "X509v3 Basic Constraints" -#define NID_basic_constraints 87 -#define OBJ_basic_constraints OBJ_id_ce,19L - -#define SN_crl_number "crlNumber" -#define LN_crl_number "X509v3 CRL Number" -#define NID_crl_number 88 -#define OBJ_crl_number OBJ_id_ce,20L - -#define SN_crl_reason "CRLReason" -#define LN_crl_reason "X509v3 CRL Reason Code" -#define NID_crl_reason 141 -#define OBJ_crl_reason OBJ_id_ce,21L - -#define SN_invalidity_date "invalidityDate" -#define LN_invalidity_date "Invalidity Date" -#define NID_invalidity_date 142 -#define OBJ_invalidity_date OBJ_id_ce,24L - -#define SN_delta_crl "deltaCRL" -#define LN_delta_crl "X509v3 Delta CRL Indicator" -#define NID_delta_crl 140 -#define OBJ_delta_crl OBJ_id_ce,27L - -#define SN_issuing_distribution_point "issuingDistributionPoint" -#define LN_issuing_distribution_point "X509v3 Issuing Distrubution Point" -#define NID_issuing_distribution_point 770 -#define OBJ_issuing_distribution_point OBJ_id_ce,28L - -#define SN_certificate_issuer "certificateIssuer" -#define LN_certificate_issuer "X509v3 Certificate Issuer" -#define NID_certificate_issuer 771 -#define OBJ_certificate_issuer OBJ_id_ce,29L - -#define SN_name_constraints "nameConstraints" -#define LN_name_constraints "X509v3 Name Constraints" -#define NID_name_constraints 666 -#define OBJ_name_constraints OBJ_id_ce,30L - -#define SN_crl_distribution_points "crlDistributionPoints" -#define LN_crl_distribution_points "X509v3 CRL Distribution Points" -#define NID_crl_distribution_points 103 -#define OBJ_crl_distribution_points OBJ_id_ce,31L - -#define SN_certificate_policies "certificatePolicies" -#define LN_certificate_policies "X509v3 Certificate Policies" -#define NID_certificate_policies 89 -#define OBJ_certificate_policies OBJ_id_ce,32L - -#define SN_any_policy "anyPolicy" -#define LN_any_policy "X509v3 Any Policy" -#define NID_any_policy 746 -#define OBJ_any_policy OBJ_certificate_policies,0L - -#define SN_policy_mappings "policyMappings" -#define LN_policy_mappings "X509v3 Policy Mappings" -#define NID_policy_mappings 747 -#define OBJ_policy_mappings OBJ_id_ce,33L - -#define SN_authority_key_identifier "authorityKeyIdentifier" -#define LN_authority_key_identifier "X509v3 Authority Key Identifier" -#define NID_authority_key_identifier 90 -#define OBJ_authority_key_identifier OBJ_id_ce,35L - -#define SN_policy_constraints "policyConstraints" -#define LN_policy_constraints "X509v3 Policy Constraints" -#define NID_policy_constraints 401 -#define OBJ_policy_constraints OBJ_id_ce,36L - -#define SN_ext_key_usage "extendedKeyUsage" -#define LN_ext_key_usage "X509v3 Extended Key Usage" -#define NID_ext_key_usage 126 -#define OBJ_ext_key_usage OBJ_id_ce,37L - -#define SN_freshest_crl "freshestCRL" -#define LN_freshest_crl "X509v3 Freshest CRL" -#define NID_freshest_crl 857 -#define OBJ_freshest_crl OBJ_id_ce,46L - -#define SN_inhibit_any_policy "inhibitAnyPolicy" -#define LN_inhibit_any_policy "X509v3 Inhibit Any Policy" -#define NID_inhibit_any_policy 748 -#define OBJ_inhibit_any_policy OBJ_id_ce,54L - -#define SN_target_information "targetInformation" -#define LN_target_information "X509v3 AC Targeting" -#define NID_target_information 402 -#define OBJ_target_information OBJ_id_ce,55L - -#define SN_no_rev_avail "noRevAvail" -#define LN_no_rev_avail "X509v3 No Revocation Available" -#define NID_no_rev_avail 403 -#define OBJ_no_rev_avail OBJ_id_ce,56L - -#define SN_anyExtendedKeyUsage "anyExtendedKeyUsage" -#define LN_anyExtendedKeyUsage "Any Extended Key Usage" -#define NID_anyExtendedKeyUsage 910 -#define OBJ_anyExtendedKeyUsage OBJ_ext_key_usage,0L - -#define SN_netscape "Netscape" -#define LN_netscape "Netscape Communications Corp." -#define NID_netscape 57 -#define OBJ_netscape 2L,16L,840L,1L,113730L - -#define SN_netscape_cert_extension "nsCertExt" -#define LN_netscape_cert_extension "Netscape Certificate Extension" -#define NID_netscape_cert_extension 58 -#define OBJ_netscape_cert_extension OBJ_netscape,1L - -#define SN_netscape_data_type "nsDataType" -#define LN_netscape_data_type "Netscape Data Type" -#define NID_netscape_data_type 59 -#define OBJ_netscape_data_type OBJ_netscape,2L - -#define SN_netscape_cert_type "nsCertType" -#define LN_netscape_cert_type "Netscape Cert Type" -#define NID_netscape_cert_type 71 -#define OBJ_netscape_cert_type OBJ_netscape_cert_extension,1L - -#define SN_netscape_base_url "nsBaseUrl" -#define LN_netscape_base_url "Netscape Base Url" -#define NID_netscape_base_url 72 -#define OBJ_netscape_base_url OBJ_netscape_cert_extension,2L - -#define SN_netscape_revocation_url "nsRevocationUrl" -#define LN_netscape_revocation_url "Netscape Revocation Url" -#define NID_netscape_revocation_url 73 -#define OBJ_netscape_revocation_url OBJ_netscape_cert_extension,3L - -#define SN_netscape_ca_revocation_url "nsCaRevocationUrl" -#define LN_netscape_ca_revocation_url "Netscape CA Revocation Url" -#define NID_netscape_ca_revocation_url 74 -#define OBJ_netscape_ca_revocation_url OBJ_netscape_cert_extension,4L - -#define SN_netscape_renewal_url "nsRenewalUrl" -#define LN_netscape_renewal_url "Netscape Renewal Url" -#define NID_netscape_renewal_url 75 -#define OBJ_netscape_renewal_url OBJ_netscape_cert_extension,7L - -#define SN_netscape_ca_policy_url "nsCaPolicyUrl" -#define LN_netscape_ca_policy_url "Netscape CA Policy Url" -#define NID_netscape_ca_policy_url 76 -#define OBJ_netscape_ca_policy_url OBJ_netscape_cert_extension,8L - -#define SN_netscape_ssl_server_name "nsSslServerName" -#define LN_netscape_ssl_server_name "Netscape SSL Server Name" -#define NID_netscape_ssl_server_name 77 -#define OBJ_netscape_ssl_server_name OBJ_netscape_cert_extension,12L - -#define SN_netscape_comment "nsComment" -#define LN_netscape_comment "Netscape Comment" -#define NID_netscape_comment 78 -#define OBJ_netscape_comment OBJ_netscape_cert_extension,13L - -#define SN_netscape_cert_sequence "nsCertSequence" -#define LN_netscape_cert_sequence "Netscape Certificate Sequence" -#define NID_netscape_cert_sequence 79 -#define OBJ_netscape_cert_sequence OBJ_netscape_data_type,5L - -#define SN_ns_sgc "nsSGC" -#define LN_ns_sgc "Netscape Server Gated Crypto" -#define NID_ns_sgc 139 -#define OBJ_ns_sgc OBJ_netscape,4L,1L - -#define SN_org "ORG" -#define LN_org "org" -#define NID_org 379 -#define OBJ_org OBJ_iso,3L - -#define SN_dod "DOD" -#define LN_dod "dod" -#define NID_dod 380 -#define OBJ_dod OBJ_org,6L - -#define SN_iana "IANA" -#define LN_iana "iana" -#define NID_iana 381 -#define OBJ_iana OBJ_dod,1L - -#define OBJ_internet OBJ_iana - -#define SN_Directory "directory" -#define LN_Directory "Directory" -#define NID_Directory 382 -#define OBJ_Directory OBJ_internet,1L - -#define SN_Management "mgmt" -#define LN_Management "Management" -#define NID_Management 383 -#define OBJ_Management OBJ_internet,2L - -#define SN_Experimental "experimental" -#define LN_Experimental "Experimental" -#define NID_Experimental 384 -#define OBJ_Experimental OBJ_internet,3L - -#define SN_Private "private" -#define LN_Private "Private" -#define NID_Private 385 -#define OBJ_Private OBJ_internet,4L - -#define SN_Security "security" -#define LN_Security "Security" -#define NID_Security 386 -#define OBJ_Security OBJ_internet,5L - -#define SN_SNMPv2 "snmpv2" -#define LN_SNMPv2 "SNMPv2" -#define NID_SNMPv2 387 -#define OBJ_SNMPv2 OBJ_internet,6L - -#define LN_Mail "Mail" -#define NID_Mail 388 -#define OBJ_Mail OBJ_internet,7L - -#define SN_Enterprises "enterprises" -#define LN_Enterprises "Enterprises" -#define NID_Enterprises 389 -#define OBJ_Enterprises OBJ_Private,1L - -#define SN_dcObject "dcobject" -#define LN_dcObject "dcObject" -#define NID_dcObject 390 -#define OBJ_dcObject OBJ_Enterprises,1466L,344L - -#define SN_mime_mhs "mime-mhs" -#define LN_mime_mhs "MIME MHS" -#define NID_mime_mhs 504 -#define OBJ_mime_mhs OBJ_Mail,1L - -#define SN_mime_mhs_headings "mime-mhs-headings" -#define LN_mime_mhs_headings "mime-mhs-headings" -#define NID_mime_mhs_headings 505 -#define OBJ_mime_mhs_headings OBJ_mime_mhs,1L - -#define SN_mime_mhs_bodies "mime-mhs-bodies" -#define LN_mime_mhs_bodies "mime-mhs-bodies" -#define NID_mime_mhs_bodies 506 -#define OBJ_mime_mhs_bodies OBJ_mime_mhs,2L - -#define SN_id_hex_partial_message "id-hex-partial-message" -#define LN_id_hex_partial_message "id-hex-partial-message" -#define NID_id_hex_partial_message 507 -#define OBJ_id_hex_partial_message OBJ_mime_mhs_headings,1L - -#define SN_id_hex_multipart_message "id-hex-multipart-message" -#define LN_id_hex_multipart_message "id-hex-multipart-message" -#define NID_id_hex_multipart_message 508 -#define OBJ_id_hex_multipart_message OBJ_mime_mhs_headings,2L - -#define SN_rle_compression "RLE" -#define LN_rle_compression "run length compression" -#define NID_rle_compression 124 -#define OBJ_rle_compression 1L,1L,1L,1L,666L,1L - -#define SN_zlib_compression "ZLIB" -#define LN_zlib_compression "zlib compression" -#define NID_zlib_compression 125 -#define OBJ_zlib_compression OBJ_id_smime_alg,8L - -#define OBJ_csor 2L,16L,840L,1L,101L,3L - -#define OBJ_nistAlgorithms OBJ_csor,4L - -#define OBJ_aes OBJ_nistAlgorithms,1L - -#define SN_aes_128_ecb "AES-128-ECB" -#define LN_aes_128_ecb "aes-128-ecb" -#define NID_aes_128_ecb 418 -#define OBJ_aes_128_ecb OBJ_aes,1L - -#define SN_aes_128_cbc "AES-128-CBC" -#define LN_aes_128_cbc "aes-128-cbc" -#define NID_aes_128_cbc 419 -#define OBJ_aes_128_cbc OBJ_aes,2L - -#define SN_aes_128_ofb128 "AES-128-OFB" -#define LN_aes_128_ofb128 "aes-128-ofb" -#define NID_aes_128_ofb128 420 -#define OBJ_aes_128_ofb128 OBJ_aes,3L - -#define SN_aes_128_cfb128 "AES-128-CFB" -#define LN_aes_128_cfb128 "aes-128-cfb" -#define NID_aes_128_cfb128 421 -#define OBJ_aes_128_cfb128 OBJ_aes,4L - -#define SN_id_aes128_wrap "id-aes128-wrap" -#define NID_id_aes128_wrap 788 -#define OBJ_id_aes128_wrap OBJ_aes,5L - -#define SN_aes_128_gcm "id-aes128-GCM" -#define LN_aes_128_gcm "aes-128-gcm" -#define NID_aes_128_gcm 895 -#define OBJ_aes_128_gcm OBJ_aes,6L - -#define SN_aes_128_ccm "id-aes128-CCM" -#define LN_aes_128_ccm "aes-128-ccm" -#define NID_aes_128_ccm 896 -#define OBJ_aes_128_ccm OBJ_aes,7L - -#define SN_id_aes128_wrap_pad "id-aes128-wrap-pad" -#define NID_id_aes128_wrap_pad 897 -#define OBJ_id_aes128_wrap_pad OBJ_aes,8L - -#define SN_aes_192_ecb "AES-192-ECB" -#define LN_aes_192_ecb "aes-192-ecb" -#define NID_aes_192_ecb 422 -#define OBJ_aes_192_ecb OBJ_aes,21L - -#define SN_aes_192_cbc "AES-192-CBC" -#define LN_aes_192_cbc "aes-192-cbc" -#define NID_aes_192_cbc 423 -#define OBJ_aes_192_cbc OBJ_aes,22L - -#define SN_aes_192_ofb128 "AES-192-OFB" -#define LN_aes_192_ofb128 "aes-192-ofb" -#define NID_aes_192_ofb128 424 -#define OBJ_aes_192_ofb128 OBJ_aes,23L - -#define SN_aes_192_cfb128 "AES-192-CFB" -#define LN_aes_192_cfb128 "aes-192-cfb" -#define NID_aes_192_cfb128 425 -#define OBJ_aes_192_cfb128 OBJ_aes,24L - -#define SN_id_aes192_wrap "id-aes192-wrap" -#define NID_id_aes192_wrap 789 -#define OBJ_id_aes192_wrap OBJ_aes,25L - -#define SN_aes_192_gcm "id-aes192-GCM" -#define LN_aes_192_gcm "aes-192-gcm" -#define NID_aes_192_gcm 898 -#define OBJ_aes_192_gcm OBJ_aes,26L - -#define SN_aes_192_ccm "id-aes192-CCM" -#define LN_aes_192_ccm "aes-192-ccm" -#define NID_aes_192_ccm 899 -#define OBJ_aes_192_ccm OBJ_aes,27L - -#define SN_id_aes192_wrap_pad "id-aes192-wrap-pad" -#define NID_id_aes192_wrap_pad 900 -#define OBJ_id_aes192_wrap_pad OBJ_aes,28L - -#define SN_aes_256_ecb "AES-256-ECB" -#define LN_aes_256_ecb "aes-256-ecb" -#define NID_aes_256_ecb 426 -#define OBJ_aes_256_ecb OBJ_aes,41L - -#define SN_aes_256_cbc "AES-256-CBC" -#define LN_aes_256_cbc "aes-256-cbc" -#define NID_aes_256_cbc 427 -#define OBJ_aes_256_cbc OBJ_aes,42L - -#define SN_aes_256_ofb128 "AES-256-OFB" -#define LN_aes_256_ofb128 "aes-256-ofb" -#define NID_aes_256_ofb128 428 -#define OBJ_aes_256_ofb128 OBJ_aes,43L - -#define SN_aes_256_cfb128 "AES-256-CFB" -#define LN_aes_256_cfb128 "aes-256-cfb" -#define NID_aes_256_cfb128 429 -#define OBJ_aes_256_cfb128 OBJ_aes,44L - -#define SN_id_aes256_wrap "id-aes256-wrap" -#define NID_id_aes256_wrap 790 -#define OBJ_id_aes256_wrap OBJ_aes,45L - -#define SN_aes_256_gcm "id-aes256-GCM" -#define LN_aes_256_gcm "aes-256-gcm" -#define NID_aes_256_gcm 901 -#define OBJ_aes_256_gcm OBJ_aes,46L - -#define SN_aes_256_ccm "id-aes256-CCM" -#define LN_aes_256_ccm "aes-256-ccm" -#define NID_aes_256_ccm 902 -#define OBJ_aes_256_ccm OBJ_aes,47L - -#define SN_id_aes256_wrap_pad "id-aes256-wrap-pad" -#define NID_id_aes256_wrap_pad 903 -#define OBJ_id_aes256_wrap_pad OBJ_aes,48L - -#define SN_aes_128_cfb1 "AES-128-CFB1" -#define LN_aes_128_cfb1 "aes-128-cfb1" -#define NID_aes_128_cfb1 650 - -#define SN_aes_192_cfb1 "AES-192-CFB1" -#define LN_aes_192_cfb1 "aes-192-cfb1" -#define NID_aes_192_cfb1 651 - -#define SN_aes_256_cfb1 "AES-256-CFB1" -#define LN_aes_256_cfb1 "aes-256-cfb1" -#define NID_aes_256_cfb1 652 - -#define SN_aes_128_cfb8 "AES-128-CFB8" -#define LN_aes_128_cfb8 "aes-128-cfb8" -#define NID_aes_128_cfb8 653 - -#define SN_aes_192_cfb8 "AES-192-CFB8" -#define LN_aes_192_cfb8 "aes-192-cfb8" -#define NID_aes_192_cfb8 654 - -#define SN_aes_256_cfb8 "AES-256-CFB8" -#define LN_aes_256_cfb8 "aes-256-cfb8" -#define NID_aes_256_cfb8 655 - -#define SN_aes_128_ctr "AES-128-CTR" -#define LN_aes_128_ctr "aes-128-ctr" -#define NID_aes_128_ctr 904 - -#define SN_aes_192_ctr "AES-192-CTR" -#define LN_aes_192_ctr "aes-192-ctr" -#define NID_aes_192_ctr 905 - -#define SN_aes_256_ctr "AES-256-CTR" -#define LN_aes_256_ctr "aes-256-ctr" -#define NID_aes_256_ctr 906 - -#define SN_aes_128_xts "AES-128-XTS" -#define LN_aes_128_xts "aes-128-xts" -#define NID_aes_128_xts 913 - -#define SN_aes_256_xts "AES-256-XTS" -#define LN_aes_256_xts "aes-256-xts" -#define NID_aes_256_xts 914 - -#define SN_des_cfb1 "DES-CFB1" -#define LN_des_cfb1 "des-cfb1" -#define NID_des_cfb1 656 - -#define SN_des_cfb8 "DES-CFB8" -#define LN_des_cfb8 "des-cfb8" -#define NID_des_cfb8 657 - -#define SN_des_ede3_cfb1 "DES-EDE3-CFB1" -#define LN_des_ede3_cfb1 "des-ede3-cfb1" -#define NID_des_ede3_cfb1 658 - -#define SN_des_ede3_cfb8 "DES-EDE3-CFB8" -#define LN_des_ede3_cfb8 "des-ede3-cfb8" -#define NID_des_ede3_cfb8 659 - -#define OBJ_nist_hashalgs OBJ_nistAlgorithms,2L - -#define SN_sha256 "SHA256" -#define LN_sha256 "sha256" -#define NID_sha256 672 -#define OBJ_sha256 OBJ_nist_hashalgs,1L - -#define SN_sha384 "SHA384" -#define LN_sha384 "sha384" -#define NID_sha384 673 -#define OBJ_sha384 OBJ_nist_hashalgs,2L - -#define SN_sha512 "SHA512" -#define LN_sha512 "sha512" -#define NID_sha512 674 -#define OBJ_sha512 OBJ_nist_hashalgs,3L - -#define SN_sha224 "SHA224" -#define LN_sha224 "sha224" -#define NID_sha224 675 -#define OBJ_sha224 OBJ_nist_hashalgs,4L - -#define OBJ_dsa_with_sha2 OBJ_nistAlgorithms,3L - -#define SN_dsa_with_SHA224 "dsa_with_SHA224" -#define NID_dsa_with_SHA224 802 -#define OBJ_dsa_with_SHA224 OBJ_dsa_with_sha2,1L - -#define SN_dsa_with_SHA256 "dsa_with_SHA256" -#define NID_dsa_with_SHA256 803 -#define OBJ_dsa_with_SHA256 OBJ_dsa_with_sha2,2L - -#define SN_hold_instruction_code "holdInstructionCode" -#define LN_hold_instruction_code "Hold Instruction Code" -#define NID_hold_instruction_code 430 -#define OBJ_hold_instruction_code OBJ_id_ce,23L - -#define OBJ_holdInstruction OBJ_X9_57,2L - -#define SN_hold_instruction_none "holdInstructionNone" -#define LN_hold_instruction_none "Hold Instruction None" -#define NID_hold_instruction_none 431 -#define OBJ_hold_instruction_none OBJ_holdInstruction,1L - -#define SN_hold_instruction_call_issuer "holdInstructionCallIssuer" -#define LN_hold_instruction_call_issuer "Hold Instruction Call Issuer" -#define NID_hold_instruction_call_issuer 432 -#define OBJ_hold_instruction_call_issuer OBJ_holdInstruction,2L - -#define SN_hold_instruction_reject "holdInstructionReject" -#define LN_hold_instruction_reject "Hold Instruction Reject" -#define NID_hold_instruction_reject 433 -#define OBJ_hold_instruction_reject OBJ_holdInstruction,3L - -#define SN_data "data" -#define NID_data 434 -#define OBJ_data OBJ_itu_t,9L - -#define SN_pss "pss" -#define NID_pss 435 -#define OBJ_pss OBJ_data,2342L - -#define SN_ucl "ucl" -#define NID_ucl 436 -#define OBJ_ucl OBJ_pss,19200300L - -#define SN_pilot "pilot" -#define NID_pilot 437 -#define OBJ_pilot OBJ_ucl,100L - -#define LN_pilotAttributeType "pilotAttributeType" -#define NID_pilotAttributeType 438 -#define OBJ_pilotAttributeType OBJ_pilot,1L - -#define LN_pilotAttributeSyntax "pilotAttributeSyntax" -#define NID_pilotAttributeSyntax 439 -#define OBJ_pilotAttributeSyntax OBJ_pilot,3L - -#define LN_pilotObjectClass "pilotObjectClass" -#define NID_pilotObjectClass 440 -#define OBJ_pilotObjectClass OBJ_pilot,4L - -#define LN_pilotGroups "pilotGroups" -#define NID_pilotGroups 441 -#define OBJ_pilotGroups OBJ_pilot,10L - -#define LN_iA5StringSyntax "iA5StringSyntax" -#define NID_iA5StringSyntax 442 -#define OBJ_iA5StringSyntax OBJ_pilotAttributeSyntax,4L - -#define LN_caseIgnoreIA5StringSyntax "caseIgnoreIA5StringSyntax" -#define NID_caseIgnoreIA5StringSyntax 443 -#define OBJ_caseIgnoreIA5StringSyntax OBJ_pilotAttributeSyntax,5L - -#define LN_pilotObject "pilotObject" -#define NID_pilotObject 444 -#define OBJ_pilotObject OBJ_pilotObjectClass,3L - -#define LN_pilotPerson "pilotPerson" -#define NID_pilotPerson 445 -#define OBJ_pilotPerson OBJ_pilotObjectClass,4L - -#define SN_account "account" -#define NID_account 446 -#define OBJ_account OBJ_pilotObjectClass,5L - -#define SN_document "document" -#define NID_document 447 -#define OBJ_document OBJ_pilotObjectClass,6L - -#define SN_room "room" -#define NID_room 448 -#define OBJ_room OBJ_pilotObjectClass,7L - -#define LN_documentSeries "documentSeries" -#define NID_documentSeries 449 -#define OBJ_documentSeries OBJ_pilotObjectClass,9L - -#define SN_Domain "domain" -#define LN_Domain "Domain" -#define NID_Domain 392 -#define OBJ_Domain OBJ_pilotObjectClass,13L - -#define LN_rFC822localPart "rFC822localPart" -#define NID_rFC822localPart 450 -#define OBJ_rFC822localPart OBJ_pilotObjectClass,14L - -#define LN_dNSDomain "dNSDomain" -#define NID_dNSDomain 451 -#define OBJ_dNSDomain OBJ_pilotObjectClass,15L - -#define LN_domainRelatedObject "domainRelatedObject" -#define NID_domainRelatedObject 452 -#define OBJ_domainRelatedObject OBJ_pilotObjectClass,17L - -#define LN_friendlyCountry "friendlyCountry" -#define NID_friendlyCountry 453 -#define OBJ_friendlyCountry OBJ_pilotObjectClass,18L - -#define LN_simpleSecurityObject "simpleSecurityObject" -#define NID_simpleSecurityObject 454 -#define OBJ_simpleSecurityObject OBJ_pilotObjectClass,19L - -#define LN_pilotOrganization "pilotOrganization" -#define NID_pilotOrganization 455 -#define OBJ_pilotOrganization OBJ_pilotObjectClass,20L - -#define LN_pilotDSA "pilotDSA" -#define NID_pilotDSA 456 -#define OBJ_pilotDSA OBJ_pilotObjectClass,21L - -#define LN_qualityLabelledData "qualityLabelledData" -#define NID_qualityLabelledData 457 -#define OBJ_qualityLabelledData OBJ_pilotObjectClass,22L - -#define SN_userId "UID" -#define LN_userId "userId" -#define NID_userId 458 -#define OBJ_userId OBJ_pilotAttributeType,1L - -#define LN_textEncodedORAddress "textEncodedORAddress" -#define NID_textEncodedORAddress 459 -#define OBJ_textEncodedORAddress OBJ_pilotAttributeType,2L - -#define SN_rfc822Mailbox "mail" -#define LN_rfc822Mailbox "rfc822Mailbox" -#define NID_rfc822Mailbox 460 -#define OBJ_rfc822Mailbox OBJ_pilotAttributeType,3L - -#define SN_info "info" -#define NID_info 461 -#define OBJ_info OBJ_pilotAttributeType,4L - -#define LN_favouriteDrink "favouriteDrink" -#define NID_favouriteDrink 462 -#define OBJ_favouriteDrink OBJ_pilotAttributeType,5L - -#define LN_roomNumber "roomNumber" -#define NID_roomNumber 463 -#define OBJ_roomNumber OBJ_pilotAttributeType,6L - -#define SN_photo "photo" -#define NID_photo 464 -#define OBJ_photo OBJ_pilotAttributeType,7L - -#define LN_userClass "userClass" -#define NID_userClass 465 -#define OBJ_userClass OBJ_pilotAttributeType,8L - -#define SN_host "host" -#define NID_host 466 -#define OBJ_host OBJ_pilotAttributeType,9L - -#define SN_manager "manager" -#define NID_manager 467 -#define OBJ_manager OBJ_pilotAttributeType,10L - -#define LN_documentIdentifier "documentIdentifier" -#define NID_documentIdentifier 468 -#define OBJ_documentIdentifier OBJ_pilotAttributeType,11L - -#define LN_documentTitle "documentTitle" -#define NID_documentTitle 469 -#define OBJ_documentTitle OBJ_pilotAttributeType,12L - -#define LN_documentVersion "documentVersion" -#define NID_documentVersion 470 -#define OBJ_documentVersion OBJ_pilotAttributeType,13L - -#define LN_documentAuthor "documentAuthor" -#define NID_documentAuthor 471 -#define OBJ_documentAuthor OBJ_pilotAttributeType,14L - -#define LN_documentLocation "documentLocation" -#define NID_documentLocation 472 -#define OBJ_documentLocation OBJ_pilotAttributeType,15L - -#define LN_homeTelephoneNumber "homeTelephoneNumber" -#define NID_homeTelephoneNumber 473 -#define OBJ_homeTelephoneNumber OBJ_pilotAttributeType,20L - -#define SN_secretary "secretary" -#define NID_secretary 474 -#define OBJ_secretary OBJ_pilotAttributeType,21L - -#define LN_otherMailbox "otherMailbox" -#define NID_otherMailbox 475 -#define OBJ_otherMailbox OBJ_pilotAttributeType,22L - -#define LN_lastModifiedTime "lastModifiedTime" -#define NID_lastModifiedTime 476 -#define OBJ_lastModifiedTime OBJ_pilotAttributeType,23L - -#define LN_lastModifiedBy "lastModifiedBy" -#define NID_lastModifiedBy 477 -#define OBJ_lastModifiedBy OBJ_pilotAttributeType,24L - -#define SN_domainComponent "DC" -#define LN_domainComponent "domainComponent" -#define NID_domainComponent 391 -#define OBJ_domainComponent OBJ_pilotAttributeType,25L - -#define LN_aRecord "aRecord" -#define NID_aRecord 478 -#define OBJ_aRecord OBJ_pilotAttributeType,26L - -#define LN_pilotAttributeType27 "pilotAttributeType27" -#define NID_pilotAttributeType27 479 -#define OBJ_pilotAttributeType27 OBJ_pilotAttributeType,27L - -#define LN_mXRecord "mXRecord" -#define NID_mXRecord 480 -#define OBJ_mXRecord OBJ_pilotAttributeType,28L - -#define LN_nSRecord "nSRecord" -#define NID_nSRecord 481 -#define OBJ_nSRecord OBJ_pilotAttributeType,29L - -#define LN_sOARecord "sOARecord" -#define NID_sOARecord 482 -#define OBJ_sOARecord OBJ_pilotAttributeType,30L - -#define LN_cNAMERecord "cNAMERecord" -#define NID_cNAMERecord 483 -#define OBJ_cNAMERecord OBJ_pilotAttributeType,31L - -#define LN_associatedDomain "associatedDomain" -#define NID_associatedDomain 484 -#define OBJ_associatedDomain OBJ_pilotAttributeType,37L - -#define LN_associatedName "associatedName" -#define NID_associatedName 485 -#define OBJ_associatedName OBJ_pilotAttributeType,38L - -#define LN_homePostalAddress "homePostalAddress" -#define NID_homePostalAddress 486 -#define OBJ_homePostalAddress OBJ_pilotAttributeType,39L - -#define LN_personalTitle "personalTitle" -#define NID_personalTitle 487 -#define OBJ_personalTitle OBJ_pilotAttributeType,40L - -#define LN_mobileTelephoneNumber "mobileTelephoneNumber" -#define NID_mobileTelephoneNumber 488 -#define OBJ_mobileTelephoneNumber OBJ_pilotAttributeType,41L - -#define LN_pagerTelephoneNumber "pagerTelephoneNumber" -#define NID_pagerTelephoneNumber 489 -#define OBJ_pagerTelephoneNumber OBJ_pilotAttributeType,42L - -#define LN_friendlyCountryName "friendlyCountryName" -#define NID_friendlyCountryName 490 -#define OBJ_friendlyCountryName OBJ_pilotAttributeType,43L - -#define LN_organizationalStatus "organizationalStatus" -#define NID_organizationalStatus 491 -#define OBJ_organizationalStatus OBJ_pilotAttributeType,45L - -#define LN_janetMailbox "janetMailbox" -#define NID_janetMailbox 492 -#define OBJ_janetMailbox OBJ_pilotAttributeType,46L - -#define LN_mailPreferenceOption "mailPreferenceOption" -#define NID_mailPreferenceOption 493 -#define OBJ_mailPreferenceOption OBJ_pilotAttributeType,47L - -#define LN_buildingName "buildingName" -#define NID_buildingName 494 -#define OBJ_buildingName OBJ_pilotAttributeType,48L - -#define LN_dSAQuality "dSAQuality" -#define NID_dSAQuality 495 -#define OBJ_dSAQuality OBJ_pilotAttributeType,49L - -#define LN_singleLevelQuality "singleLevelQuality" -#define NID_singleLevelQuality 496 -#define OBJ_singleLevelQuality OBJ_pilotAttributeType,50L - -#define LN_subtreeMinimumQuality "subtreeMinimumQuality" -#define NID_subtreeMinimumQuality 497 -#define OBJ_subtreeMinimumQuality OBJ_pilotAttributeType,51L - -#define LN_subtreeMaximumQuality "subtreeMaximumQuality" -#define NID_subtreeMaximumQuality 498 -#define OBJ_subtreeMaximumQuality OBJ_pilotAttributeType,52L - -#define LN_personalSignature "personalSignature" -#define NID_personalSignature 499 -#define OBJ_personalSignature OBJ_pilotAttributeType,53L - -#define LN_dITRedirect "dITRedirect" -#define NID_dITRedirect 500 -#define OBJ_dITRedirect OBJ_pilotAttributeType,54L - -#define SN_audio "audio" -#define NID_audio 501 -#define OBJ_audio OBJ_pilotAttributeType,55L - -#define LN_documentPublisher "documentPublisher" -#define NID_documentPublisher 502 -#define OBJ_documentPublisher OBJ_pilotAttributeType,56L - -#define SN_id_set "id-set" -#define LN_id_set "Secure Electronic Transactions" -#define NID_id_set 512 -#define OBJ_id_set OBJ_international_organizations,42L - -#define SN_set_ctype "set-ctype" -#define LN_set_ctype "content types" -#define NID_set_ctype 513 -#define OBJ_set_ctype OBJ_id_set,0L - -#define SN_set_msgExt "set-msgExt" -#define LN_set_msgExt "message extensions" -#define NID_set_msgExt 514 -#define OBJ_set_msgExt OBJ_id_set,1L - -#define SN_set_attr "set-attr" -#define NID_set_attr 515 -#define OBJ_set_attr OBJ_id_set,3L - -#define SN_set_policy "set-policy" -#define NID_set_policy 516 -#define OBJ_set_policy OBJ_id_set,5L - -#define SN_set_certExt "set-certExt" -#define LN_set_certExt "certificate extensions" -#define NID_set_certExt 517 -#define OBJ_set_certExt OBJ_id_set,7L - -#define SN_set_brand "set-brand" -#define NID_set_brand 518 -#define OBJ_set_brand OBJ_id_set,8L - -#define SN_setct_PANData "setct-PANData" -#define NID_setct_PANData 519 -#define OBJ_setct_PANData OBJ_set_ctype,0L - -#define SN_setct_PANToken "setct-PANToken" -#define NID_setct_PANToken 520 -#define OBJ_setct_PANToken OBJ_set_ctype,1L - -#define SN_setct_PANOnly "setct-PANOnly" -#define NID_setct_PANOnly 521 -#define OBJ_setct_PANOnly OBJ_set_ctype,2L - -#define SN_setct_OIData "setct-OIData" -#define NID_setct_OIData 522 -#define OBJ_setct_OIData OBJ_set_ctype,3L - -#define SN_setct_PI "setct-PI" -#define NID_setct_PI 523 -#define OBJ_setct_PI OBJ_set_ctype,4L - -#define SN_setct_PIData "setct-PIData" -#define NID_setct_PIData 524 -#define OBJ_setct_PIData OBJ_set_ctype,5L - -#define SN_setct_PIDataUnsigned "setct-PIDataUnsigned" -#define NID_setct_PIDataUnsigned 525 -#define OBJ_setct_PIDataUnsigned OBJ_set_ctype,6L - -#define SN_setct_HODInput "setct-HODInput" -#define NID_setct_HODInput 526 -#define OBJ_setct_HODInput OBJ_set_ctype,7L - -#define SN_setct_AuthResBaggage "setct-AuthResBaggage" -#define NID_setct_AuthResBaggage 527 -#define OBJ_setct_AuthResBaggage OBJ_set_ctype,8L - -#define SN_setct_AuthRevReqBaggage "setct-AuthRevReqBaggage" -#define NID_setct_AuthRevReqBaggage 528 -#define OBJ_setct_AuthRevReqBaggage OBJ_set_ctype,9L - -#define SN_setct_AuthRevResBaggage "setct-AuthRevResBaggage" -#define NID_setct_AuthRevResBaggage 529 -#define OBJ_setct_AuthRevResBaggage OBJ_set_ctype,10L - -#define SN_setct_CapTokenSeq "setct-CapTokenSeq" -#define NID_setct_CapTokenSeq 530 -#define OBJ_setct_CapTokenSeq OBJ_set_ctype,11L - -#define SN_setct_PInitResData "setct-PInitResData" -#define NID_setct_PInitResData 531 -#define OBJ_setct_PInitResData OBJ_set_ctype,12L - -#define SN_setct_PI_TBS "setct-PI-TBS" -#define NID_setct_PI_TBS 532 -#define OBJ_setct_PI_TBS OBJ_set_ctype,13L - -#define SN_setct_PResData "setct-PResData" -#define NID_setct_PResData 533 -#define OBJ_setct_PResData OBJ_set_ctype,14L - -#define SN_setct_AuthReqTBS "setct-AuthReqTBS" -#define NID_setct_AuthReqTBS 534 -#define OBJ_setct_AuthReqTBS OBJ_set_ctype,16L - -#define SN_setct_AuthResTBS "setct-AuthResTBS" -#define NID_setct_AuthResTBS 535 -#define OBJ_setct_AuthResTBS OBJ_set_ctype,17L - -#define SN_setct_AuthResTBSX "setct-AuthResTBSX" -#define NID_setct_AuthResTBSX 536 -#define OBJ_setct_AuthResTBSX OBJ_set_ctype,18L - -#define SN_setct_AuthTokenTBS "setct-AuthTokenTBS" -#define NID_setct_AuthTokenTBS 537 -#define OBJ_setct_AuthTokenTBS OBJ_set_ctype,19L - -#define SN_setct_CapTokenData "setct-CapTokenData" -#define NID_setct_CapTokenData 538 -#define OBJ_setct_CapTokenData OBJ_set_ctype,20L - -#define SN_setct_CapTokenTBS "setct-CapTokenTBS" -#define NID_setct_CapTokenTBS 539 -#define OBJ_setct_CapTokenTBS OBJ_set_ctype,21L - -#define SN_setct_AcqCardCodeMsg "setct-AcqCardCodeMsg" -#define NID_setct_AcqCardCodeMsg 540 -#define OBJ_setct_AcqCardCodeMsg OBJ_set_ctype,22L - -#define SN_setct_AuthRevReqTBS "setct-AuthRevReqTBS" -#define NID_setct_AuthRevReqTBS 541 -#define OBJ_setct_AuthRevReqTBS OBJ_set_ctype,23L - -#define SN_setct_AuthRevResData "setct-AuthRevResData" -#define NID_setct_AuthRevResData 542 -#define OBJ_setct_AuthRevResData OBJ_set_ctype,24L - -#define SN_setct_AuthRevResTBS "setct-AuthRevResTBS" -#define NID_setct_AuthRevResTBS 543 -#define OBJ_setct_AuthRevResTBS OBJ_set_ctype,25L - -#define SN_setct_CapReqTBS "setct-CapReqTBS" -#define NID_setct_CapReqTBS 544 -#define OBJ_setct_CapReqTBS OBJ_set_ctype,26L - -#define SN_setct_CapReqTBSX "setct-CapReqTBSX" -#define NID_setct_CapReqTBSX 545 -#define OBJ_setct_CapReqTBSX OBJ_set_ctype,27L - -#define SN_setct_CapResData "setct-CapResData" -#define NID_setct_CapResData 546 -#define OBJ_setct_CapResData OBJ_set_ctype,28L - -#define SN_setct_CapRevReqTBS "setct-CapRevReqTBS" -#define NID_setct_CapRevReqTBS 547 -#define OBJ_setct_CapRevReqTBS OBJ_set_ctype,29L - -#define SN_setct_CapRevReqTBSX "setct-CapRevReqTBSX" -#define NID_setct_CapRevReqTBSX 548 -#define OBJ_setct_CapRevReqTBSX OBJ_set_ctype,30L - -#define SN_setct_CapRevResData "setct-CapRevResData" -#define NID_setct_CapRevResData 549 -#define OBJ_setct_CapRevResData OBJ_set_ctype,31L - -#define SN_setct_CredReqTBS "setct-CredReqTBS" -#define NID_setct_CredReqTBS 550 -#define OBJ_setct_CredReqTBS OBJ_set_ctype,32L - -#define SN_setct_CredReqTBSX "setct-CredReqTBSX" -#define NID_setct_CredReqTBSX 551 -#define OBJ_setct_CredReqTBSX OBJ_set_ctype,33L - -#define SN_setct_CredResData "setct-CredResData" -#define NID_setct_CredResData 552 -#define OBJ_setct_CredResData OBJ_set_ctype,34L - -#define SN_setct_CredRevReqTBS "setct-CredRevReqTBS" -#define NID_setct_CredRevReqTBS 553 -#define OBJ_setct_CredRevReqTBS OBJ_set_ctype,35L - -#define SN_setct_CredRevReqTBSX "setct-CredRevReqTBSX" -#define NID_setct_CredRevReqTBSX 554 -#define OBJ_setct_CredRevReqTBSX OBJ_set_ctype,36L - -#define SN_setct_CredRevResData "setct-CredRevResData" -#define NID_setct_CredRevResData 555 -#define OBJ_setct_CredRevResData OBJ_set_ctype,37L - -#define SN_setct_PCertReqData "setct-PCertReqData" -#define NID_setct_PCertReqData 556 -#define OBJ_setct_PCertReqData OBJ_set_ctype,38L - -#define SN_setct_PCertResTBS "setct-PCertResTBS" -#define NID_setct_PCertResTBS 557 -#define OBJ_setct_PCertResTBS OBJ_set_ctype,39L - -#define SN_setct_BatchAdminReqData "setct-BatchAdminReqData" -#define NID_setct_BatchAdminReqData 558 -#define OBJ_setct_BatchAdminReqData OBJ_set_ctype,40L - -#define SN_setct_BatchAdminResData "setct-BatchAdminResData" -#define NID_setct_BatchAdminResData 559 -#define OBJ_setct_BatchAdminResData OBJ_set_ctype,41L - -#define SN_setct_CardCInitResTBS "setct-CardCInitResTBS" -#define NID_setct_CardCInitResTBS 560 -#define OBJ_setct_CardCInitResTBS OBJ_set_ctype,42L - -#define SN_setct_MeAqCInitResTBS "setct-MeAqCInitResTBS" -#define NID_setct_MeAqCInitResTBS 561 -#define OBJ_setct_MeAqCInitResTBS OBJ_set_ctype,43L - -#define SN_setct_RegFormResTBS "setct-RegFormResTBS" -#define NID_setct_RegFormResTBS 562 -#define OBJ_setct_RegFormResTBS OBJ_set_ctype,44L - -#define SN_setct_CertReqData "setct-CertReqData" -#define NID_setct_CertReqData 563 -#define OBJ_setct_CertReqData OBJ_set_ctype,45L - -#define SN_setct_CertReqTBS "setct-CertReqTBS" -#define NID_setct_CertReqTBS 564 -#define OBJ_setct_CertReqTBS OBJ_set_ctype,46L - -#define SN_setct_CertResData "setct-CertResData" -#define NID_setct_CertResData 565 -#define OBJ_setct_CertResData OBJ_set_ctype,47L - -#define SN_setct_CertInqReqTBS "setct-CertInqReqTBS" -#define NID_setct_CertInqReqTBS 566 -#define OBJ_setct_CertInqReqTBS OBJ_set_ctype,48L - -#define SN_setct_ErrorTBS "setct-ErrorTBS" -#define NID_setct_ErrorTBS 567 -#define OBJ_setct_ErrorTBS OBJ_set_ctype,49L - -#define SN_setct_PIDualSignedTBE "setct-PIDualSignedTBE" -#define NID_setct_PIDualSignedTBE 568 -#define OBJ_setct_PIDualSignedTBE OBJ_set_ctype,50L - -#define SN_setct_PIUnsignedTBE "setct-PIUnsignedTBE" -#define NID_setct_PIUnsignedTBE 569 -#define OBJ_setct_PIUnsignedTBE OBJ_set_ctype,51L - -#define SN_setct_AuthReqTBE "setct-AuthReqTBE" -#define NID_setct_AuthReqTBE 570 -#define OBJ_setct_AuthReqTBE OBJ_set_ctype,52L - -#define SN_setct_AuthResTBE "setct-AuthResTBE" -#define NID_setct_AuthResTBE 571 -#define OBJ_setct_AuthResTBE OBJ_set_ctype,53L - -#define SN_setct_AuthResTBEX "setct-AuthResTBEX" -#define NID_setct_AuthResTBEX 572 -#define OBJ_setct_AuthResTBEX OBJ_set_ctype,54L - -#define SN_setct_AuthTokenTBE "setct-AuthTokenTBE" -#define NID_setct_AuthTokenTBE 573 -#define OBJ_setct_AuthTokenTBE OBJ_set_ctype,55L - -#define SN_setct_CapTokenTBE "setct-CapTokenTBE" -#define NID_setct_CapTokenTBE 574 -#define OBJ_setct_CapTokenTBE OBJ_set_ctype,56L - -#define SN_setct_CapTokenTBEX "setct-CapTokenTBEX" -#define NID_setct_CapTokenTBEX 575 -#define OBJ_setct_CapTokenTBEX OBJ_set_ctype,57L - -#define SN_setct_AcqCardCodeMsgTBE "setct-AcqCardCodeMsgTBE" -#define NID_setct_AcqCardCodeMsgTBE 576 -#define OBJ_setct_AcqCardCodeMsgTBE OBJ_set_ctype,58L - -#define SN_setct_AuthRevReqTBE "setct-AuthRevReqTBE" -#define NID_setct_AuthRevReqTBE 577 -#define OBJ_setct_AuthRevReqTBE OBJ_set_ctype,59L - -#define SN_setct_AuthRevResTBE "setct-AuthRevResTBE" -#define NID_setct_AuthRevResTBE 578 -#define OBJ_setct_AuthRevResTBE OBJ_set_ctype,60L - -#define SN_setct_AuthRevResTBEB "setct-AuthRevResTBEB" -#define NID_setct_AuthRevResTBEB 579 -#define OBJ_setct_AuthRevResTBEB OBJ_set_ctype,61L - -#define SN_setct_CapReqTBE "setct-CapReqTBE" -#define NID_setct_CapReqTBE 580 -#define OBJ_setct_CapReqTBE OBJ_set_ctype,62L - -#define SN_setct_CapReqTBEX "setct-CapReqTBEX" -#define NID_setct_CapReqTBEX 581 -#define OBJ_setct_CapReqTBEX OBJ_set_ctype,63L - -#define SN_setct_CapResTBE "setct-CapResTBE" -#define NID_setct_CapResTBE 582 -#define OBJ_setct_CapResTBE OBJ_set_ctype,64L - -#define SN_setct_CapRevReqTBE "setct-CapRevReqTBE" -#define NID_setct_CapRevReqTBE 583 -#define OBJ_setct_CapRevReqTBE OBJ_set_ctype,65L - -#define SN_setct_CapRevReqTBEX "setct-CapRevReqTBEX" -#define NID_setct_CapRevReqTBEX 584 -#define OBJ_setct_CapRevReqTBEX OBJ_set_ctype,66L - -#define SN_setct_CapRevResTBE "setct-CapRevResTBE" -#define NID_setct_CapRevResTBE 585 -#define OBJ_setct_CapRevResTBE OBJ_set_ctype,67L - -#define SN_setct_CredReqTBE "setct-CredReqTBE" -#define NID_setct_CredReqTBE 586 -#define OBJ_setct_CredReqTBE OBJ_set_ctype,68L - -#define SN_setct_CredReqTBEX "setct-CredReqTBEX" -#define NID_setct_CredReqTBEX 587 -#define OBJ_setct_CredReqTBEX OBJ_set_ctype,69L - -#define SN_setct_CredResTBE "setct-CredResTBE" -#define NID_setct_CredResTBE 588 -#define OBJ_setct_CredResTBE OBJ_set_ctype,70L - -#define SN_setct_CredRevReqTBE "setct-CredRevReqTBE" -#define NID_setct_CredRevReqTBE 589 -#define OBJ_setct_CredRevReqTBE OBJ_set_ctype,71L - -#define SN_setct_CredRevReqTBEX "setct-CredRevReqTBEX" -#define NID_setct_CredRevReqTBEX 590 -#define OBJ_setct_CredRevReqTBEX OBJ_set_ctype,72L - -#define SN_setct_CredRevResTBE "setct-CredRevResTBE" -#define NID_setct_CredRevResTBE 591 -#define OBJ_setct_CredRevResTBE OBJ_set_ctype,73L - -#define SN_setct_BatchAdminReqTBE "setct-BatchAdminReqTBE" -#define NID_setct_BatchAdminReqTBE 592 -#define OBJ_setct_BatchAdminReqTBE OBJ_set_ctype,74L - -#define SN_setct_BatchAdminResTBE "setct-BatchAdminResTBE" -#define NID_setct_BatchAdminResTBE 593 -#define OBJ_setct_BatchAdminResTBE OBJ_set_ctype,75L - -#define SN_setct_RegFormReqTBE "setct-RegFormReqTBE" -#define NID_setct_RegFormReqTBE 594 -#define OBJ_setct_RegFormReqTBE OBJ_set_ctype,76L - -#define SN_setct_CertReqTBE "setct-CertReqTBE" -#define NID_setct_CertReqTBE 595 -#define OBJ_setct_CertReqTBE OBJ_set_ctype,77L - -#define SN_setct_CertReqTBEX "setct-CertReqTBEX" -#define NID_setct_CertReqTBEX 596 -#define OBJ_setct_CertReqTBEX OBJ_set_ctype,78L - -#define SN_setct_CertResTBE "setct-CertResTBE" -#define NID_setct_CertResTBE 597 -#define OBJ_setct_CertResTBE OBJ_set_ctype,79L - -#define SN_setct_CRLNotificationTBS "setct-CRLNotificationTBS" -#define NID_setct_CRLNotificationTBS 598 -#define OBJ_setct_CRLNotificationTBS OBJ_set_ctype,80L - -#define SN_setct_CRLNotificationResTBS "setct-CRLNotificationResTBS" -#define NID_setct_CRLNotificationResTBS 599 -#define OBJ_setct_CRLNotificationResTBS OBJ_set_ctype,81L - -#define SN_setct_BCIDistributionTBS "setct-BCIDistributionTBS" -#define NID_setct_BCIDistributionTBS 600 -#define OBJ_setct_BCIDistributionTBS OBJ_set_ctype,82L - -#define SN_setext_genCrypt "setext-genCrypt" -#define LN_setext_genCrypt "generic cryptogram" -#define NID_setext_genCrypt 601 -#define OBJ_setext_genCrypt OBJ_set_msgExt,1L - -#define SN_setext_miAuth "setext-miAuth" -#define LN_setext_miAuth "merchant initiated auth" -#define NID_setext_miAuth 602 -#define OBJ_setext_miAuth OBJ_set_msgExt,3L - -#define SN_setext_pinSecure "setext-pinSecure" -#define NID_setext_pinSecure 603 -#define OBJ_setext_pinSecure OBJ_set_msgExt,4L - -#define SN_setext_pinAny "setext-pinAny" -#define NID_setext_pinAny 604 -#define OBJ_setext_pinAny OBJ_set_msgExt,5L - -#define SN_setext_track2 "setext-track2" -#define NID_setext_track2 605 -#define OBJ_setext_track2 OBJ_set_msgExt,7L - -#define SN_setext_cv "setext-cv" -#define LN_setext_cv "additional verification" -#define NID_setext_cv 606 -#define OBJ_setext_cv OBJ_set_msgExt,8L - -#define SN_set_policy_root "set-policy-root" -#define NID_set_policy_root 607 -#define OBJ_set_policy_root OBJ_set_policy,0L - -#define SN_setCext_hashedRoot "setCext-hashedRoot" -#define NID_setCext_hashedRoot 608 -#define OBJ_setCext_hashedRoot OBJ_set_certExt,0L - -#define SN_setCext_certType "setCext-certType" -#define NID_setCext_certType 609 -#define OBJ_setCext_certType OBJ_set_certExt,1L - -#define SN_setCext_merchData "setCext-merchData" -#define NID_setCext_merchData 610 -#define OBJ_setCext_merchData OBJ_set_certExt,2L - -#define SN_setCext_cCertRequired "setCext-cCertRequired" -#define NID_setCext_cCertRequired 611 -#define OBJ_setCext_cCertRequired OBJ_set_certExt,3L - -#define SN_setCext_tunneling "setCext-tunneling" -#define NID_setCext_tunneling 612 -#define OBJ_setCext_tunneling OBJ_set_certExt,4L - -#define SN_setCext_setExt "setCext-setExt" -#define NID_setCext_setExt 613 -#define OBJ_setCext_setExt OBJ_set_certExt,5L - -#define SN_setCext_setQualf "setCext-setQualf" -#define NID_setCext_setQualf 614 -#define OBJ_setCext_setQualf OBJ_set_certExt,6L - -#define SN_setCext_PGWYcapabilities "setCext-PGWYcapabilities" -#define NID_setCext_PGWYcapabilities 615 -#define OBJ_setCext_PGWYcapabilities OBJ_set_certExt,7L - -#define SN_setCext_TokenIdentifier "setCext-TokenIdentifier" -#define NID_setCext_TokenIdentifier 616 -#define OBJ_setCext_TokenIdentifier OBJ_set_certExt,8L - -#define SN_setCext_Track2Data "setCext-Track2Data" -#define NID_setCext_Track2Data 617 -#define OBJ_setCext_Track2Data OBJ_set_certExt,9L - -#define SN_setCext_TokenType "setCext-TokenType" -#define NID_setCext_TokenType 618 -#define OBJ_setCext_TokenType OBJ_set_certExt,10L - -#define SN_setCext_IssuerCapabilities "setCext-IssuerCapabilities" -#define NID_setCext_IssuerCapabilities 619 -#define OBJ_setCext_IssuerCapabilities OBJ_set_certExt,11L - -#define SN_setAttr_Cert "setAttr-Cert" -#define NID_setAttr_Cert 620 -#define OBJ_setAttr_Cert OBJ_set_attr,0L - -#define SN_setAttr_PGWYcap "setAttr-PGWYcap" -#define LN_setAttr_PGWYcap "payment gateway capabilities" -#define NID_setAttr_PGWYcap 621 -#define OBJ_setAttr_PGWYcap OBJ_set_attr,1L - -#define SN_setAttr_TokenType "setAttr-TokenType" -#define NID_setAttr_TokenType 622 -#define OBJ_setAttr_TokenType OBJ_set_attr,2L - -#define SN_setAttr_IssCap "setAttr-IssCap" -#define LN_setAttr_IssCap "issuer capabilities" -#define NID_setAttr_IssCap 623 -#define OBJ_setAttr_IssCap OBJ_set_attr,3L - -#define SN_set_rootKeyThumb "set-rootKeyThumb" -#define NID_set_rootKeyThumb 624 -#define OBJ_set_rootKeyThumb OBJ_setAttr_Cert,0L - -#define SN_set_addPolicy "set-addPolicy" -#define NID_set_addPolicy 625 -#define OBJ_set_addPolicy OBJ_setAttr_Cert,1L - -#define SN_setAttr_Token_EMV "setAttr-Token-EMV" -#define NID_setAttr_Token_EMV 626 -#define OBJ_setAttr_Token_EMV OBJ_setAttr_TokenType,1L - -#define SN_setAttr_Token_B0Prime "setAttr-Token-B0Prime" -#define NID_setAttr_Token_B0Prime 627 -#define OBJ_setAttr_Token_B0Prime OBJ_setAttr_TokenType,2L - -#define SN_setAttr_IssCap_CVM "setAttr-IssCap-CVM" -#define NID_setAttr_IssCap_CVM 628 -#define OBJ_setAttr_IssCap_CVM OBJ_setAttr_IssCap,3L - -#define SN_setAttr_IssCap_T2 "setAttr-IssCap-T2" -#define NID_setAttr_IssCap_T2 629 -#define OBJ_setAttr_IssCap_T2 OBJ_setAttr_IssCap,4L - -#define SN_setAttr_IssCap_Sig "setAttr-IssCap-Sig" -#define NID_setAttr_IssCap_Sig 630 -#define OBJ_setAttr_IssCap_Sig OBJ_setAttr_IssCap,5L - -#define SN_setAttr_GenCryptgrm "setAttr-GenCryptgrm" -#define LN_setAttr_GenCryptgrm "generate cryptogram" -#define NID_setAttr_GenCryptgrm 631 -#define OBJ_setAttr_GenCryptgrm OBJ_setAttr_IssCap_CVM,1L - -#define SN_setAttr_T2Enc "setAttr-T2Enc" -#define LN_setAttr_T2Enc "encrypted track 2" -#define NID_setAttr_T2Enc 632 -#define OBJ_setAttr_T2Enc OBJ_setAttr_IssCap_T2,1L - -#define SN_setAttr_T2cleartxt "setAttr-T2cleartxt" -#define LN_setAttr_T2cleartxt "cleartext track 2" -#define NID_setAttr_T2cleartxt 633 -#define OBJ_setAttr_T2cleartxt OBJ_setAttr_IssCap_T2,2L - -#define SN_setAttr_TokICCsig "setAttr-TokICCsig" -#define LN_setAttr_TokICCsig "ICC or token signature" -#define NID_setAttr_TokICCsig 634 -#define OBJ_setAttr_TokICCsig OBJ_setAttr_IssCap_Sig,1L - -#define SN_setAttr_SecDevSig "setAttr-SecDevSig" -#define LN_setAttr_SecDevSig "secure device signature" -#define NID_setAttr_SecDevSig 635 -#define OBJ_setAttr_SecDevSig OBJ_setAttr_IssCap_Sig,2L - -#define SN_set_brand_IATA_ATA "set-brand-IATA-ATA" -#define NID_set_brand_IATA_ATA 636 -#define OBJ_set_brand_IATA_ATA OBJ_set_brand,1L - -#define SN_set_brand_Diners "set-brand-Diners" -#define NID_set_brand_Diners 637 -#define OBJ_set_brand_Diners OBJ_set_brand,30L - -#define SN_set_brand_AmericanExpress "set-brand-AmericanExpress" -#define NID_set_brand_AmericanExpress 638 -#define OBJ_set_brand_AmericanExpress OBJ_set_brand,34L - -#define SN_set_brand_JCB "set-brand-JCB" -#define NID_set_brand_JCB 639 -#define OBJ_set_brand_JCB OBJ_set_brand,35L - -#define SN_set_brand_Visa "set-brand-Visa" -#define NID_set_brand_Visa 640 -#define OBJ_set_brand_Visa OBJ_set_brand,4L - -#define SN_set_brand_MasterCard "set-brand-MasterCard" -#define NID_set_brand_MasterCard 641 -#define OBJ_set_brand_MasterCard OBJ_set_brand,5L - -#define SN_set_brand_Novus "set-brand-Novus" -#define NID_set_brand_Novus 642 -#define OBJ_set_brand_Novus OBJ_set_brand,6011L - -#define SN_des_cdmf "DES-CDMF" -#define LN_des_cdmf "des-cdmf" -#define NID_des_cdmf 643 -#define OBJ_des_cdmf OBJ_rsadsi,3L,10L - -#define SN_rsaOAEPEncryptionSET "rsaOAEPEncryptionSET" -#define NID_rsaOAEPEncryptionSET 644 -#define OBJ_rsaOAEPEncryptionSET OBJ_rsadsi,1L,1L,6L - -#define SN_ipsec3 "Oakley-EC2N-3" -#define LN_ipsec3 "ipsec3" -#define NID_ipsec3 749 - -#define SN_ipsec4 "Oakley-EC2N-4" -#define LN_ipsec4 "ipsec4" -#define NID_ipsec4 750 - -#define SN_whirlpool "whirlpool" -#define NID_whirlpool 804 -#define OBJ_whirlpool OBJ_iso,0L,10118L,3L,0L,55L - -#define SN_cryptopro "cryptopro" -#define NID_cryptopro 805 -#define OBJ_cryptopro OBJ_member_body,643L,2L,2L - -#define SN_cryptocom "cryptocom" -#define NID_cryptocom 806 -#define OBJ_cryptocom OBJ_member_body,643L,2L,9L - -#define SN_id_GostR3411_94_with_GostR3410_2001 "id-GostR3411-94-with-GostR3410-2001" -#define LN_id_GostR3411_94_with_GostR3410_2001 "GOST R 34.11-94 with GOST R 34.10-2001" -#define NID_id_GostR3411_94_with_GostR3410_2001 807 -#define OBJ_id_GostR3411_94_with_GostR3410_2001 OBJ_cryptopro,3L - -#define SN_id_GostR3411_94_with_GostR3410_94 "id-GostR3411-94-with-GostR3410-94" -#define LN_id_GostR3411_94_with_GostR3410_94 "GOST R 34.11-94 with GOST R 34.10-94" -#define NID_id_GostR3411_94_with_GostR3410_94 808 -#define OBJ_id_GostR3411_94_with_GostR3410_94 OBJ_cryptopro,4L - -#define SN_id_GostR3411_94 "md_gost94" -#define LN_id_GostR3411_94 "GOST R 34.11-94" -#define NID_id_GostR3411_94 809 -#define OBJ_id_GostR3411_94 OBJ_cryptopro,9L - -#define SN_id_HMACGostR3411_94 "id-HMACGostR3411-94" -#define LN_id_HMACGostR3411_94 "HMAC GOST 34.11-94" -#define NID_id_HMACGostR3411_94 810 -#define OBJ_id_HMACGostR3411_94 OBJ_cryptopro,10L - -#define SN_id_GostR3410_2001 "gost2001" -#define LN_id_GostR3410_2001 "GOST R 34.10-2001" -#define NID_id_GostR3410_2001 811 -#define OBJ_id_GostR3410_2001 OBJ_cryptopro,19L - -#define SN_id_GostR3410_94 "gost94" -#define LN_id_GostR3410_94 "GOST R 34.10-94" -#define NID_id_GostR3410_94 812 -#define OBJ_id_GostR3410_94 OBJ_cryptopro,20L - -#define SN_id_Gost28147_89 "gost89" -#define LN_id_Gost28147_89 "GOST 28147-89" -#define NID_id_Gost28147_89 813 -#define OBJ_id_Gost28147_89 OBJ_cryptopro,21L - -#define SN_gost89_cnt "gost89-cnt" -#define NID_gost89_cnt 814 - -#define SN_id_Gost28147_89_MAC "gost-mac" -#define LN_id_Gost28147_89_MAC "GOST 28147-89 MAC" -#define NID_id_Gost28147_89_MAC 815 -#define OBJ_id_Gost28147_89_MAC OBJ_cryptopro,22L - -#define SN_id_GostR3411_94_prf "prf-gostr3411-94" -#define LN_id_GostR3411_94_prf "GOST R 34.11-94 PRF" -#define NID_id_GostR3411_94_prf 816 -#define OBJ_id_GostR3411_94_prf OBJ_cryptopro,23L - -#define SN_id_GostR3410_2001DH "id-GostR3410-2001DH" -#define LN_id_GostR3410_2001DH "GOST R 34.10-2001 DH" -#define NID_id_GostR3410_2001DH 817 -#define OBJ_id_GostR3410_2001DH OBJ_cryptopro,98L - -#define SN_id_GostR3410_94DH "id-GostR3410-94DH" -#define LN_id_GostR3410_94DH "GOST R 34.10-94 DH" -#define NID_id_GostR3410_94DH 818 -#define OBJ_id_GostR3410_94DH OBJ_cryptopro,99L - -#define SN_id_Gost28147_89_CryptoPro_KeyMeshing "id-Gost28147-89-CryptoPro-KeyMeshing" -#define NID_id_Gost28147_89_CryptoPro_KeyMeshing 819 -#define OBJ_id_Gost28147_89_CryptoPro_KeyMeshing OBJ_cryptopro,14L,1L - -#define SN_id_Gost28147_89_None_KeyMeshing "id-Gost28147-89-None-KeyMeshing" -#define NID_id_Gost28147_89_None_KeyMeshing 820 -#define OBJ_id_Gost28147_89_None_KeyMeshing OBJ_cryptopro,14L,0L - -#define SN_id_GostR3411_94_TestParamSet "id-GostR3411-94-TestParamSet" -#define NID_id_GostR3411_94_TestParamSet 821 -#define OBJ_id_GostR3411_94_TestParamSet OBJ_cryptopro,30L,0L - -#define SN_id_GostR3411_94_CryptoProParamSet "id-GostR3411-94-CryptoProParamSet" -#define NID_id_GostR3411_94_CryptoProParamSet 822 -#define OBJ_id_GostR3411_94_CryptoProParamSet OBJ_cryptopro,30L,1L - -#define SN_id_Gost28147_89_TestParamSet "id-Gost28147-89-TestParamSet" -#define NID_id_Gost28147_89_TestParamSet 823 -#define OBJ_id_Gost28147_89_TestParamSet OBJ_cryptopro,31L,0L - -#define SN_id_Gost28147_89_CryptoPro_A_ParamSet "id-Gost28147-89-CryptoPro-A-ParamSet" -#define NID_id_Gost28147_89_CryptoPro_A_ParamSet 824 -#define OBJ_id_Gost28147_89_CryptoPro_A_ParamSet OBJ_cryptopro,31L,1L - -#define SN_id_Gost28147_89_CryptoPro_B_ParamSet "id-Gost28147-89-CryptoPro-B-ParamSet" -#define NID_id_Gost28147_89_CryptoPro_B_ParamSet 825 -#define OBJ_id_Gost28147_89_CryptoPro_B_ParamSet OBJ_cryptopro,31L,2L - -#define SN_id_Gost28147_89_CryptoPro_C_ParamSet "id-Gost28147-89-CryptoPro-C-ParamSet" -#define NID_id_Gost28147_89_CryptoPro_C_ParamSet 826 -#define OBJ_id_Gost28147_89_CryptoPro_C_ParamSet OBJ_cryptopro,31L,3L - -#define SN_id_Gost28147_89_CryptoPro_D_ParamSet "id-Gost28147-89-CryptoPro-D-ParamSet" -#define NID_id_Gost28147_89_CryptoPro_D_ParamSet 827 -#define OBJ_id_Gost28147_89_CryptoPro_D_ParamSet OBJ_cryptopro,31L,4L - -#define SN_id_Gost28147_89_CryptoPro_Oscar_1_1_ParamSet "id-Gost28147-89-CryptoPro-Oscar-1-1-ParamSet" -#define NID_id_Gost28147_89_CryptoPro_Oscar_1_1_ParamSet 828 -#define OBJ_id_Gost28147_89_CryptoPro_Oscar_1_1_ParamSet OBJ_cryptopro,31L,5L - -#define SN_id_Gost28147_89_CryptoPro_Oscar_1_0_ParamSet "id-Gost28147-89-CryptoPro-Oscar-1-0-ParamSet" -#define NID_id_Gost28147_89_CryptoPro_Oscar_1_0_ParamSet 829 -#define OBJ_id_Gost28147_89_CryptoPro_Oscar_1_0_ParamSet OBJ_cryptopro,31L,6L - -#define SN_id_Gost28147_89_CryptoPro_RIC_1_ParamSet "id-Gost28147-89-CryptoPro-RIC-1-ParamSet" -#define NID_id_Gost28147_89_CryptoPro_RIC_1_ParamSet 830 -#define OBJ_id_Gost28147_89_CryptoPro_RIC_1_ParamSet OBJ_cryptopro,31L,7L - -#define SN_id_GostR3410_94_TestParamSet "id-GostR3410-94-TestParamSet" -#define NID_id_GostR3410_94_TestParamSet 831 -#define OBJ_id_GostR3410_94_TestParamSet OBJ_cryptopro,32L,0L - -#define SN_id_GostR3410_94_CryptoPro_A_ParamSet "id-GostR3410-94-CryptoPro-A-ParamSet" -#define NID_id_GostR3410_94_CryptoPro_A_ParamSet 832 -#define OBJ_id_GostR3410_94_CryptoPro_A_ParamSet OBJ_cryptopro,32L,2L - -#define SN_id_GostR3410_94_CryptoPro_B_ParamSet "id-GostR3410-94-CryptoPro-B-ParamSet" -#define NID_id_GostR3410_94_CryptoPro_B_ParamSet 833 -#define OBJ_id_GostR3410_94_CryptoPro_B_ParamSet OBJ_cryptopro,32L,3L - -#define SN_id_GostR3410_94_CryptoPro_C_ParamSet "id-GostR3410-94-CryptoPro-C-ParamSet" -#define NID_id_GostR3410_94_CryptoPro_C_ParamSet 834 -#define OBJ_id_GostR3410_94_CryptoPro_C_ParamSet OBJ_cryptopro,32L,4L - -#define SN_id_GostR3410_94_CryptoPro_D_ParamSet "id-GostR3410-94-CryptoPro-D-ParamSet" -#define NID_id_GostR3410_94_CryptoPro_D_ParamSet 835 -#define OBJ_id_GostR3410_94_CryptoPro_D_ParamSet OBJ_cryptopro,32L,5L - -#define SN_id_GostR3410_94_CryptoPro_XchA_ParamSet "id-GostR3410-94-CryptoPro-XchA-ParamSet" -#define NID_id_GostR3410_94_CryptoPro_XchA_ParamSet 836 -#define OBJ_id_GostR3410_94_CryptoPro_XchA_ParamSet OBJ_cryptopro,33L,1L - -#define SN_id_GostR3410_94_CryptoPro_XchB_ParamSet "id-GostR3410-94-CryptoPro-XchB-ParamSet" -#define NID_id_GostR3410_94_CryptoPro_XchB_ParamSet 837 -#define OBJ_id_GostR3410_94_CryptoPro_XchB_ParamSet OBJ_cryptopro,33L,2L - -#define SN_id_GostR3410_94_CryptoPro_XchC_ParamSet "id-GostR3410-94-CryptoPro-XchC-ParamSet" -#define NID_id_GostR3410_94_CryptoPro_XchC_ParamSet 838 -#define OBJ_id_GostR3410_94_CryptoPro_XchC_ParamSet OBJ_cryptopro,33L,3L - -#define SN_id_GostR3410_2001_TestParamSet "id-GostR3410-2001-TestParamSet" -#define NID_id_GostR3410_2001_TestParamSet 839 -#define OBJ_id_GostR3410_2001_TestParamSet OBJ_cryptopro,35L,0L - -#define SN_id_GostR3410_2001_CryptoPro_A_ParamSet "id-GostR3410-2001-CryptoPro-A-ParamSet" -#define NID_id_GostR3410_2001_CryptoPro_A_ParamSet 840 -#define OBJ_id_GostR3410_2001_CryptoPro_A_ParamSet OBJ_cryptopro,35L,1L - -#define SN_id_GostR3410_2001_CryptoPro_B_ParamSet "id-GostR3410-2001-CryptoPro-B-ParamSet" -#define NID_id_GostR3410_2001_CryptoPro_B_ParamSet 841 -#define OBJ_id_GostR3410_2001_CryptoPro_B_ParamSet OBJ_cryptopro,35L,2L - -#define SN_id_GostR3410_2001_CryptoPro_C_ParamSet "id-GostR3410-2001-CryptoPro-C-ParamSet" -#define NID_id_GostR3410_2001_CryptoPro_C_ParamSet 842 -#define OBJ_id_GostR3410_2001_CryptoPro_C_ParamSet OBJ_cryptopro,35L,3L - -#define SN_id_GostR3410_2001_CryptoPro_XchA_ParamSet "id-GostR3410-2001-CryptoPro-XchA-ParamSet" -#define NID_id_GostR3410_2001_CryptoPro_XchA_ParamSet 843 -#define OBJ_id_GostR3410_2001_CryptoPro_XchA_ParamSet OBJ_cryptopro,36L,0L - -#define SN_id_GostR3410_2001_CryptoPro_XchB_ParamSet "id-GostR3410-2001-CryptoPro-XchB-ParamSet" -#define NID_id_GostR3410_2001_CryptoPro_XchB_ParamSet 844 -#define OBJ_id_GostR3410_2001_CryptoPro_XchB_ParamSet OBJ_cryptopro,36L,1L - -#define SN_id_GostR3410_94_a "id-GostR3410-94-a" -#define NID_id_GostR3410_94_a 845 -#define OBJ_id_GostR3410_94_a OBJ_id_GostR3410_94,1L - -#define SN_id_GostR3410_94_aBis "id-GostR3410-94-aBis" -#define NID_id_GostR3410_94_aBis 846 -#define OBJ_id_GostR3410_94_aBis OBJ_id_GostR3410_94,2L - -#define SN_id_GostR3410_94_b "id-GostR3410-94-b" -#define NID_id_GostR3410_94_b 847 -#define OBJ_id_GostR3410_94_b OBJ_id_GostR3410_94,3L - -#define SN_id_GostR3410_94_bBis "id-GostR3410-94-bBis" -#define NID_id_GostR3410_94_bBis 848 -#define OBJ_id_GostR3410_94_bBis OBJ_id_GostR3410_94,4L - -#define SN_id_Gost28147_89_cc "id-Gost28147-89-cc" -#define LN_id_Gost28147_89_cc "GOST 28147-89 Cryptocom ParamSet" -#define NID_id_Gost28147_89_cc 849 -#define OBJ_id_Gost28147_89_cc OBJ_cryptocom,1L,6L,1L - -#define SN_id_GostR3410_94_cc "gost94cc" -#define LN_id_GostR3410_94_cc "GOST 34.10-94 Cryptocom" -#define NID_id_GostR3410_94_cc 850 -#define OBJ_id_GostR3410_94_cc OBJ_cryptocom,1L,5L,3L - -#define SN_id_GostR3410_2001_cc "gost2001cc" -#define LN_id_GostR3410_2001_cc "GOST 34.10-2001 Cryptocom" -#define NID_id_GostR3410_2001_cc 851 -#define OBJ_id_GostR3410_2001_cc OBJ_cryptocom,1L,5L,4L - -#define SN_id_GostR3411_94_with_GostR3410_94_cc "id-GostR3411-94-with-GostR3410-94-cc" -#define LN_id_GostR3411_94_with_GostR3410_94_cc "GOST R 34.11-94 with GOST R 34.10-94 Cryptocom" -#define NID_id_GostR3411_94_with_GostR3410_94_cc 852 -#define OBJ_id_GostR3411_94_with_GostR3410_94_cc OBJ_cryptocom,1L,3L,3L - -#define SN_id_GostR3411_94_with_GostR3410_2001_cc "id-GostR3411-94-with-GostR3410-2001-cc" -#define LN_id_GostR3411_94_with_GostR3410_2001_cc "GOST R 34.11-94 with GOST R 34.10-2001 Cryptocom" -#define NID_id_GostR3411_94_with_GostR3410_2001_cc 853 -#define OBJ_id_GostR3411_94_with_GostR3410_2001_cc OBJ_cryptocom,1L,3L,4L - -#define SN_id_GostR3410_2001_ParamSet_cc "id-GostR3410-2001-ParamSet-cc" -#define LN_id_GostR3410_2001_ParamSet_cc "GOST R 3410-2001 Parameter Set Cryptocom" -#define NID_id_GostR3410_2001_ParamSet_cc 854 -#define OBJ_id_GostR3410_2001_ParamSet_cc OBJ_cryptocom,1L,8L,1L - -#define SN_camellia_128_cbc "CAMELLIA-128-CBC" -#define LN_camellia_128_cbc "camellia-128-cbc" -#define NID_camellia_128_cbc 751 -#define OBJ_camellia_128_cbc 1L,2L,392L,200011L,61L,1L,1L,1L,2L - -#define SN_camellia_192_cbc "CAMELLIA-192-CBC" -#define LN_camellia_192_cbc "camellia-192-cbc" -#define NID_camellia_192_cbc 752 -#define OBJ_camellia_192_cbc 1L,2L,392L,200011L,61L,1L,1L,1L,3L - -#define SN_camellia_256_cbc "CAMELLIA-256-CBC" -#define LN_camellia_256_cbc "camellia-256-cbc" -#define NID_camellia_256_cbc 753 -#define OBJ_camellia_256_cbc 1L,2L,392L,200011L,61L,1L,1L,1L,4L - -#define SN_id_camellia128_wrap "id-camellia128-wrap" -#define NID_id_camellia128_wrap 907 -#define OBJ_id_camellia128_wrap 1L,2L,392L,200011L,61L,1L,1L,3L,2L - -#define SN_id_camellia192_wrap "id-camellia192-wrap" -#define NID_id_camellia192_wrap 908 -#define OBJ_id_camellia192_wrap 1L,2L,392L,200011L,61L,1L,1L,3L,3L - -#define SN_id_camellia256_wrap "id-camellia256-wrap" -#define NID_id_camellia256_wrap 909 -#define OBJ_id_camellia256_wrap 1L,2L,392L,200011L,61L,1L,1L,3L,4L - -#define OBJ_ntt_ds 0L,3L,4401L,5L - -#define OBJ_camellia OBJ_ntt_ds,3L,1L,9L - -#define SN_camellia_128_ecb "CAMELLIA-128-ECB" -#define LN_camellia_128_ecb "camellia-128-ecb" -#define NID_camellia_128_ecb 754 -#define OBJ_camellia_128_ecb OBJ_camellia,1L - -#define SN_camellia_128_ofb128 "CAMELLIA-128-OFB" -#define LN_camellia_128_ofb128 "camellia-128-ofb" -#define NID_camellia_128_ofb128 766 -#define OBJ_camellia_128_ofb128 OBJ_camellia,3L - -#define SN_camellia_128_cfb128 "CAMELLIA-128-CFB" -#define LN_camellia_128_cfb128 "camellia-128-cfb" -#define NID_camellia_128_cfb128 757 -#define OBJ_camellia_128_cfb128 OBJ_camellia,4L - -#define SN_camellia_192_ecb "CAMELLIA-192-ECB" -#define LN_camellia_192_ecb "camellia-192-ecb" -#define NID_camellia_192_ecb 755 -#define OBJ_camellia_192_ecb OBJ_camellia,21L - -#define SN_camellia_192_ofb128 "CAMELLIA-192-OFB" -#define LN_camellia_192_ofb128 "camellia-192-ofb" -#define NID_camellia_192_ofb128 767 -#define OBJ_camellia_192_ofb128 OBJ_camellia,23L - -#define SN_camellia_192_cfb128 "CAMELLIA-192-CFB" -#define LN_camellia_192_cfb128 "camellia-192-cfb" -#define NID_camellia_192_cfb128 758 -#define OBJ_camellia_192_cfb128 OBJ_camellia,24L - -#define SN_camellia_256_ecb "CAMELLIA-256-ECB" -#define LN_camellia_256_ecb "camellia-256-ecb" -#define NID_camellia_256_ecb 756 -#define OBJ_camellia_256_ecb OBJ_camellia,41L - -#define SN_camellia_256_ofb128 "CAMELLIA-256-OFB" -#define LN_camellia_256_ofb128 "camellia-256-ofb" -#define NID_camellia_256_ofb128 768 -#define OBJ_camellia_256_ofb128 OBJ_camellia,43L - -#define SN_camellia_256_cfb128 "CAMELLIA-256-CFB" -#define LN_camellia_256_cfb128 "camellia-256-cfb" -#define NID_camellia_256_cfb128 759 -#define OBJ_camellia_256_cfb128 OBJ_camellia,44L - -#define SN_camellia_128_cfb1 "CAMELLIA-128-CFB1" -#define LN_camellia_128_cfb1 "camellia-128-cfb1" -#define NID_camellia_128_cfb1 760 - -#define SN_camellia_192_cfb1 "CAMELLIA-192-CFB1" -#define LN_camellia_192_cfb1 "camellia-192-cfb1" -#define NID_camellia_192_cfb1 761 - -#define SN_camellia_256_cfb1 "CAMELLIA-256-CFB1" -#define LN_camellia_256_cfb1 "camellia-256-cfb1" -#define NID_camellia_256_cfb1 762 - -#define SN_camellia_128_cfb8 "CAMELLIA-128-CFB8" -#define LN_camellia_128_cfb8 "camellia-128-cfb8" -#define NID_camellia_128_cfb8 763 - -#define SN_camellia_192_cfb8 "CAMELLIA-192-CFB8" -#define LN_camellia_192_cfb8 "camellia-192-cfb8" -#define NID_camellia_192_cfb8 764 - -#define SN_camellia_256_cfb8 "CAMELLIA-256-CFB8" -#define LN_camellia_256_cfb8 "camellia-256-cfb8" -#define NID_camellia_256_cfb8 765 - -#define SN_kisa "KISA" -#define LN_kisa "kisa" -#define NID_kisa 773 -#define OBJ_kisa OBJ_member_body,410L,200004L - -#define SN_seed_ecb "SEED-ECB" -#define LN_seed_ecb "seed-ecb" -#define NID_seed_ecb 776 -#define OBJ_seed_ecb OBJ_kisa,1L,3L - -#define SN_seed_cbc "SEED-CBC" -#define LN_seed_cbc "seed-cbc" -#define NID_seed_cbc 777 -#define OBJ_seed_cbc OBJ_kisa,1L,4L - -#define SN_seed_cfb128 "SEED-CFB" -#define LN_seed_cfb128 "seed-cfb" -#define NID_seed_cfb128 779 -#define OBJ_seed_cfb128 OBJ_kisa,1L,5L - -#define SN_seed_ofb128 "SEED-OFB" -#define LN_seed_ofb128 "seed-ofb" -#define NID_seed_ofb128 778 -#define OBJ_seed_ofb128 OBJ_kisa,1L,6L - -#define SN_hmac "HMAC" -#define LN_hmac "hmac" -#define NID_hmac 855 - -#define SN_cmac "CMAC" -#define LN_cmac "cmac" -#define NID_cmac 894 - -#define SN_rc4_hmac_md5 "RC4-HMAC-MD5" -#define LN_rc4_hmac_md5 "rc4-hmac-md5" -#define NID_rc4_hmac_md5 915 - -#define SN_aes_128_cbc_hmac_sha1 "AES-128-CBC-HMAC-SHA1" -#define LN_aes_128_cbc_hmac_sha1 "aes-128-cbc-hmac-sha1" -#define NID_aes_128_cbc_hmac_sha1 916 - -#define SN_aes_192_cbc_hmac_sha1 "AES-192-CBC-HMAC-SHA1" -#define LN_aes_192_cbc_hmac_sha1 "aes-192-cbc-hmac-sha1" -#define NID_aes_192_cbc_hmac_sha1 917 - -#define SN_aes_256_cbc_hmac_sha1 "AES-256-CBC-HMAC-SHA1" -#define LN_aes_256_cbc_hmac_sha1 "aes-256-cbc-hmac-sha1" -#define NID_aes_256_cbc_hmac_sha1 918 - -#define SN_aes_128_cbc_hmac_sha256 "AES-128-CBC-HMAC-SHA256" -#define LN_aes_128_cbc_hmac_sha256 "aes-128-cbc-hmac-sha256" -#define NID_aes_128_cbc_hmac_sha256 948 - -#define SN_aes_192_cbc_hmac_sha256 "AES-192-CBC-HMAC-SHA256" -#define LN_aes_192_cbc_hmac_sha256 "aes-192-cbc-hmac-sha256" -#define NID_aes_192_cbc_hmac_sha256 949 - -#define SN_aes_256_cbc_hmac_sha256 "AES-256-CBC-HMAC-SHA256" -#define LN_aes_256_cbc_hmac_sha256 "aes-256-cbc-hmac-sha256" -#define NID_aes_256_cbc_hmac_sha256 950 - -#define SN_dhpublicnumber "dhpublicnumber" -#define LN_dhpublicnumber "X9.42 DH" -#define NID_dhpublicnumber 920 -#define OBJ_dhpublicnumber OBJ_ISO_US,10046L,2L,1L - -#define SN_brainpoolP160r1 "brainpoolP160r1" -#define NID_brainpoolP160r1 921 -#define OBJ_brainpoolP160r1 1L,3L,36L,3L,3L,2L,8L,1L,1L,1L - -#define SN_brainpoolP160t1 "brainpoolP160t1" -#define NID_brainpoolP160t1 922 -#define OBJ_brainpoolP160t1 1L,3L,36L,3L,3L,2L,8L,1L,1L,2L - -#define SN_brainpoolP192r1 "brainpoolP192r1" -#define NID_brainpoolP192r1 923 -#define OBJ_brainpoolP192r1 1L,3L,36L,3L,3L,2L,8L,1L,1L,3L - -#define SN_brainpoolP192t1 "brainpoolP192t1" -#define NID_brainpoolP192t1 924 -#define OBJ_brainpoolP192t1 1L,3L,36L,3L,3L,2L,8L,1L,1L,4L - -#define SN_brainpoolP224r1 "brainpoolP224r1" -#define NID_brainpoolP224r1 925 -#define OBJ_brainpoolP224r1 1L,3L,36L,3L,3L,2L,8L,1L,1L,5L - -#define SN_brainpoolP224t1 "brainpoolP224t1" -#define NID_brainpoolP224t1 926 -#define OBJ_brainpoolP224t1 1L,3L,36L,3L,3L,2L,8L,1L,1L,6L - -#define SN_brainpoolP256r1 "brainpoolP256r1" -#define NID_brainpoolP256r1 927 -#define OBJ_brainpoolP256r1 1L,3L,36L,3L,3L,2L,8L,1L,1L,7L - -#define SN_brainpoolP256t1 "brainpoolP256t1" -#define NID_brainpoolP256t1 928 -#define OBJ_brainpoolP256t1 1L,3L,36L,3L,3L,2L,8L,1L,1L,8L - -#define SN_brainpoolP320r1 "brainpoolP320r1" -#define NID_brainpoolP320r1 929 -#define OBJ_brainpoolP320r1 1L,3L,36L,3L,3L,2L,8L,1L,1L,9L - -#define SN_brainpoolP320t1 "brainpoolP320t1" -#define NID_brainpoolP320t1 930 -#define OBJ_brainpoolP320t1 1L,3L,36L,3L,3L,2L,8L,1L,1L,10L - -#define SN_brainpoolP384r1 "brainpoolP384r1" -#define NID_brainpoolP384r1 931 -#define OBJ_brainpoolP384r1 1L,3L,36L,3L,3L,2L,8L,1L,1L,11L - -#define SN_brainpoolP384t1 "brainpoolP384t1" -#define NID_brainpoolP384t1 932 -#define OBJ_brainpoolP384t1 1L,3L,36L,3L,3L,2L,8L,1L,1L,12L - -#define SN_brainpoolP512r1 "brainpoolP512r1" -#define NID_brainpoolP512r1 933 -#define OBJ_brainpoolP512r1 1L,3L,36L,3L,3L,2L,8L,1L,1L,13L - -#define SN_brainpoolP512t1 "brainpoolP512t1" -#define NID_brainpoolP512t1 934 -#define OBJ_brainpoolP512t1 1L,3L,36L,3L,3L,2L,8L,1L,1L,14L - -#define OBJ_x9_63_scheme 1L,3L,133L,16L,840L,63L,0L - -#define OBJ_secg_scheme OBJ_certicom_arc,1L - -#define SN_dhSinglePass_stdDH_sha1kdf_scheme "dhSinglePass-stdDH-sha1kdf-scheme" -#define NID_dhSinglePass_stdDH_sha1kdf_scheme 936 -#define OBJ_dhSinglePass_stdDH_sha1kdf_scheme OBJ_x9_63_scheme,2L - -#define SN_dhSinglePass_stdDH_sha224kdf_scheme "dhSinglePass-stdDH-sha224kdf-scheme" -#define NID_dhSinglePass_stdDH_sha224kdf_scheme 937 -#define OBJ_dhSinglePass_stdDH_sha224kdf_scheme OBJ_secg_scheme,11L,0L - -#define SN_dhSinglePass_stdDH_sha256kdf_scheme "dhSinglePass-stdDH-sha256kdf-scheme" -#define NID_dhSinglePass_stdDH_sha256kdf_scheme 938 -#define OBJ_dhSinglePass_stdDH_sha256kdf_scheme OBJ_secg_scheme,11L,1L - -#define SN_dhSinglePass_stdDH_sha384kdf_scheme "dhSinglePass-stdDH-sha384kdf-scheme" -#define NID_dhSinglePass_stdDH_sha384kdf_scheme 939 -#define OBJ_dhSinglePass_stdDH_sha384kdf_scheme OBJ_secg_scheme,11L,2L - -#define SN_dhSinglePass_stdDH_sha512kdf_scheme "dhSinglePass-stdDH-sha512kdf-scheme" -#define NID_dhSinglePass_stdDH_sha512kdf_scheme 940 -#define OBJ_dhSinglePass_stdDH_sha512kdf_scheme OBJ_secg_scheme,11L,3L - -#define SN_dhSinglePass_cofactorDH_sha1kdf_scheme "dhSinglePass-cofactorDH-sha1kdf-scheme" -#define NID_dhSinglePass_cofactorDH_sha1kdf_scheme 941 -#define OBJ_dhSinglePass_cofactorDH_sha1kdf_scheme OBJ_x9_63_scheme,3L - -#define SN_dhSinglePass_cofactorDH_sha224kdf_scheme "dhSinglePass-cofactorDH-sha224kdf-scheme" -#define NID_dhSinglePass_cofactorDH_sha224kdf_scheme 942 -#define OBJ_dhSinglePass_cofactorDH_sha224kdf_scheme OBJ_secg_scheme,14L,0L - -#define SN_dhSinglePass_cofactorDH_sha256kdf_scheme "dhSinglePass-cofactorDH-sha256kdf-scheme" -#define NID_dhSinglePass_cofactorDH_sha256kdf_scheme 943 -#define OBJ_dhSinglePass_cofactorDH_sha256kdf_scheme OBJ_secg_scheme,14L,1L - -#define SN_dhSinglePass_cofactorDH_sha384kdf_scheme "dhSinglePass-cofactorDH-sha384kdf-scheme" -#define NID_dhSinglePass_cofactorDH_sha384kdf_scheme 944 -#define OBJ_dhSinglePass_cofactorDH_sha384kdf_scheme OBJ_secg_scheme,14L,2L - -#define SN_dhSinglePass_cofactorDH_sha512kdf_scheme "dhSinglePass-cofactorDH-sha512kdf-scheme" -#define NID_dhSinglePass_cofactorDH_sha512kdf_scheme 945 -#define OBJ_dhSinglePass_cofactorDH_sha512kdf_scheme OBJ_secg_scheme,14L,3L - -#define SN_dh_std_kdf "dh-std-kdf" -#define NID_dh_std_kdf 946 - -#define SN_dh_cofactor_kdf "dh-cofactor-kdf" -#define NID_dh_cofactor_kdf 947 - -#define SN_ct_precert_scts "ct_precert_scts" -#define LN_ct_precert_scts "CT Precertificate SCTs" -#define NID_ct_precert_scts 951 -#define OBJ_ct_precert_scts 1L,3L,6L,1L,4L,1L,11129L,2L,4L,2L - -#define SN_ct_precert_poison "ct_precert_poison" -#define LN_ct_precert_poison "CT Precertificate Poison" -#define NID_ct_precert_poison 952 -#define OBJ_ct_precert_poison 1L,3L,6L,1L,4L,1L,11129L,2L,4L,3L - -#define SN_ct_precert_signer "ct_precert_signer" -#define LN_ct_precert_signer "CT Precertificate Signer" -#define NID_ct_precert_signer 953 -#define OBJ_ct_precert_signer 1L,3L,6L,1L,4L,1L,11129L,2L,4L,4L - -#define SN_ct_cert_scts "ct_cert_scts" -#define LN_ct_cert_scts "CT Certificate SCTs" -#define NID_ct_cert_scts 954 -#define OBJ_ct_cert_scts 1L,3L,6L,1L,4L,1L,11129L,2L,4L,5L - -#define SN_jurisdictionLocalityName "jurisdictionL" -#define LN_jurisdictionLocalityName "jurisdictionLocalityName" -#define NID_jurisdictionLocalityName 955 -#define OBJ_jurisdictionLocalityName 1L,3L,6L,1L,4L,1L,311L,60L,2L,1L,1L - -#define SN_jurisdictionStateOrProvinceName "jurisdictionST" -#define LN_jurisdictionStateOrProvinceName "jurisdictionStateOrProvinceName" -#define NID_jurisdictionStateOrProvinceName 956 -#define OBJ_jurisdictionStateOrProvinceName 1L,3L,6L,1L,4L,1L,311L,60L,2L,1L,2L - -#define SN_jurisdictionCountryName "jurisdictionC" -#define LN_jurisdictionCountryName "jurisdictionCountryName" -#define NID_jurisdictionCountryName 957 -#define OBJ_jurisdictionCountryName 1L,3L,6L,1L,4L,1L,311L,60L,2L,1L,3L diff --git a/ext/openssl-win32/inc32/openssl/objects.h b/ext/openssl-win32/inc32/openssl/objects.h deleted file mode 100644 index b8dafa89..00000000 --- a/ext/openssl-win32/inc32/openssl/objects.h +++ /dev/null @@ -1,1143 +0,0 @@ -/* crypto/objects/objects.h */ -/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) - * All rights reserved. - * - * This package is an SSL implementation written - * by Eric Young (eay@cryptsoft.com). - * The implementation was written so as to conform with Netscapes SSL. - * - * This library is free for commercial and non-commercial use as long as - * the following conditions are aheared to. The following conditions - * apply to all code found in this distribution, be it the RC4, RSA, - * lhash, DES, etc., code; not just the SSL code. The SSL documentation - * included with this distribution is covered by the same copyright terms - * except that the holder is Tim Hudson (tjh@cryptsoft.com). - * - * Copyright remains Eric Young's, and as such any Copyright notices in - * the code are not to be removed. - * If this package is used in a product, Eric Young should be given attribution - * as the author of the parts of the library used. - * This can be in the form of a textual message at program startup or - * in documentation (online or textual) provided with the package. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * "This product includes cryptographic software written by - * Eric Young (eay@cryptsoft.com)" - * The word 'cryptographic' can be left out if the rouines from the library - * being used are not cryptographic related :-). - * 4. If you include any Windows specific code (or a derivative thereof) from - * the apps directory (application code) you must include an acknowledgement: - * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" - * - * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * The licence and distribution terms for any publically available version or - * derivative of this code cannot be changed. i.e. this code cannot simply be - * copied and put under another distribution licence - * [including the GNU Public Licence.] - */ - -#ifndef HEADER_OBJECTS_H -# define HEADER_OBJECTS_H - -# define USE_OBJ_MAC - -# ifdef USE_OBJ_MAC -# include -# else -# define SN_undef "UNDEF" -# define LN_undef "undefined" -# define NID_undef 0 -# define OBJ_undef 0L - -# define SN_Algorithm "Algorithm" -# define LN_algorithm "algorithm" -# define NID_algorithm 38 -# define OBJ_algorithm 1L,3L,14L,3L,2L - -# define LN_rsadsi "rsadsi" -# define NID_rsadsi 1 -# define OBJ_rsadsi 1L,2L,840L,113549L - -# define LN_pkcs "pkcs" -# define NID_pkcs 2 -# define OBJ_pkcs OBJ_rsadsi,1L - -# define SN_md2 "MD2" -# define LN_md2 "md2" -# define NID_md2 3 -# define OBJ_md2 OBJ_rsadsi,2L,2L - -# define SN_md5 "MD5" -# define LN_md5 "md5" -# define NID_md5 4 -# define OBJ_md5 OBJ_rsadsi,2L,5L - -# define SN_rc4 "RC4" -# define LN_rc4 "rc4" -# define NID_rc4 5 -# define OBJ_rc4 OBJ_rsadsi,3L,4L - -# define LN_rsaEncryption "rsaEncryption" -# define NID_rsaEncryption 6 -# define OBJ_rsaEncryption OBJ_pkcs,1L,1L - -# define SN_md2WithRSAEncryption "RSA-MD2" -# define LN_md2WithRSAEncryption "md2WithRSAEncryption" -# define NID_md2WithRSAEncryption 7 -# define OBJ_md2WithRSAEncryption OBJ_pkcs,1L,2L - -# define SN_md5WithRSAEncryption "RSA-MD5" -# define LN_md5WithRSAEncryption "md5WithRSAEncryption" -# define NID_md5WithRSAEncryption 8 -# define OBJ_md5WithRSAEncryption OBJ_pkcs,1L,4L - -# define SN_pbeWithMD2AndDES_CBC "PBE-MD2-DES" -# define LN_pbeWithMD2AndDES_CBC "pbeWithMD2AndDES-CBC" -# define NID_pbeWithMD2AndDES_CBC 9 -# define OBJ_pbeWithMD2AndDES_CBC OBJ_pkcs,5L,1L - -# define SN_pbeWithMD5AndDES_CBC "PBE-MD5-DES" -# define LN_pbeWithMD5AndDES_CBC "pbeWithMD5AndDES-CBC" -# define NID_pbeWithMD5AndDES_CBC 10 -# define OBJ_pbeWithMD5AndDES_CBC OBJ_pkcs,5L,3L - -# define LN_X500 "X500" -# define NID_X500 11 -# define OBJ_X500 2L,5L - -# define LN_X509 "X509" -# define NID_X509 12 -# define OBJ_X509 OBJ_X500,4L - -# define SN_commonName "CN" -# define LN_commonName "commonName" -# define NID_commonName 13 -# define OBJ_commonName OBJ_X509,3L - -# define SN_countryName "C" -# define LN_countryName "countryName" -# define NID_countryName 14 -# define OBJ_countryName OBJ_X509,6L - -# define SN_localityName "L" -# define LN_localityName "localityName" -# define NID_localityName 15 -# define OBJ_localityName OBJ_X509,7L - -/* Postal Address? PA */ - -/* should be "ST" (rfc1327) but MS uses 'S' */ -# define SN_stateOrProvinceName "ST" -# define LN_stateOrProvinceName "stateOrProvinceName" -# define NID_stateOrProvinceName 16 -# define OBJ_stateOrProvinceName OBJ_X509,8L - -# define SN_organizationName "O" -# define LN_organizationName "organizationName" -# define NID_organizationName 17 -# define OBJ_organizationName OBJ_X509,10L - -# define SN_organizationalUnitName "OU" -# define LN_organizationalUnitName "organizationalUnitName" -# define NID_organizationalUnitName 18 -# define OBJ_organizationalUnitName OBJ_X509,11L - -# define SN_rsa "RSA" -# define LN_rsa "rsa" -# define NID_rsa 19 -# define OBJ_rsa OBJ_X500,8L,1L,1L - -# define LN_pkcs7 "pkcs7" -# define NID_pkcs7 20 -# define OBJ_pkcs7 OBJ_pkcs,7L - -# define LN_pkcs7_data "pkcs7-data" -# define NID_pkcs7_data 21 -# define OBJ_pkcs7_data OBJ_pkcs7,1L - -# define LN_pkcs7_signed "pkcs7-signedData" -# define NID_pkcs7_signed 22 -# define OBJ_pkcs7_signed OBJ_pkcs7,2L - -# define LN_pkcs7_enveloped "pkcs7-envelopedData" -# define NID_pkcs7_enveloped 23 -# define OBJ_pkcs7_enveloped OBJ_pkcs7,3L - -# define LN_pkcs7_signedAndEnveloped "pkcs7-signedAndEnvelopedData" -# define NID_pkcs7_signedAndEnveloped 24 -# define OBJ_pkcs7_signedAndEnveloped OBJ_pkcs7,4L - -# define LN_pkcs7_digest "pkcs7-digestData" -# define NID_pkcs7_digest 25 -# define OBJ_pkcs7_digest OBJ_pkcs7,5L - -# define LN_pkcs7_encrypted "pkcs7-encryptedData" -# define NID_pkcs7_encrypted 26 -# define OBJ_pkcs7_encrypted OBJ_pkcs7,6L - -# define LN_pkcs3 "pkcs3" -# define NID_pkcs3 27 -# define OBJ_pkcs3 OBJ_pkcs,3L - -# define LN_dhKeyAgreement "dhKeyAgreement" -# define NID_dhKeyAgreement 28 -# define OBJ_dhKeyAgreement OBJ_pkcs3,1L - -# define SN_des_ecb "DES-ECB" -# define LN_des_ecb "des-ecb" -# define NID_des_ecb 29 -# define OBJ_des_ecb OBJ_algorithm,6L - -# define SN_des_cfb64 "DES-CFB" -# define LN_des_cfb64 "des-cfb" -# define NID_des_cfb64 30 -/* IV + num */ -# define OBJ_des_cfb64 OBJ_algorithm,9L - -# define SN_des_cbc "DES-CBC" -# define LN_des_cbc "des-cbc" -# define NID_des_cbc 31 -/* IV */ -# define OBJ_des_cbc OBJ_algorithm,7L - -# define SN_des_ede "DES-EDE" -# define LN_des_ede "des-ede" -# define NID_des_ede 32 -/* ?? */ -# define OBJ_des_ede OBJ_algorithm,17L - -# define SN_des_ede3 "DES-EDE3" -# define LN_des_ede3 "des-ede3" -# define NID_des_ede3 33 - -# define SN_idea_cbc "IDEA-CBC" -# define LN_idea_cbc "idea-cbc" -# define NID_idea_cbc 34 -# define OBJ_idea_cbc 1L,3L,6L,1L,4L,1L,188L,7L,1L,1L,2L - -# define SN_idea_cfb64 "IDEA-CFB" -# define LN_idea_cfb64 "idea-cfb" -# define NID_idea_cfb64 35 - -# define SN_idea_ecb "IDEA-ECB" -# define LN_idea_ecb "idea-ecb" -# define NID_idea_ecb 36 - -# define SN_rc2_cbc "RC2-CBC" -# define LN_rc2_cbc "rc2-cbc" -# define NID_rc2_cbc 37 -# define OBJ_rc2_cbc OBJ_rsadsi,3L,2L - -# define SN_rc2_ecb "RC2-ECB" -# define LN_rc2_ecb "rc2-ecb" -# define NID_rc2_ecb 38 - -# define SN_rc2_cfb64 "RC2-CFB" -# define LN_rc2_cfb64 "rc2-cfb" -# define NID_rc2_cfb64 39 - -# define SN_rc2_ofb64 "RC2-OFB" -# define LN_rc2_ofb64 "rc2-ofb" -# define NID_rc2_ofb64 40 - -# define SN_sha "SHA" -# define LN_sha "sha" -# define NID_sha 41 -# define OBJ_sha OBJ_algorithm,18L - -# define SN_shaWithRSAEncryption "RSA-SHA" -# define LN_shaWithRSAEncryption "shaWithRSAEncryption" -# define NID_shaWithRSAEncryption 42 -# define OBJ_shaWithRSAEncryption OBJ_algorithm,15L - -# define SN_des_ede_cbc "DES-EDE-CBC" -# define LN_des_ede_cbc "des-ede-cbc" -# define NID_des_ede_cbc 43 - -# define SN_des_ede3_cbc "DES-EDE3-CBC" -# define LN_des_ede3_cbc "des-ede3-cbc" -# define NID_des_ede3_cbc 44 -# define OBJ_des_ede3_cbc OBJ_rsadsi,3L,7L - -# define SN_des_ofb64 "DES-OFB" -# define LN_des_ofb64 "des-ofb" -# define NID_des_ofb64 45 -# define OBJ_des_ofb64 OBJ_algorithm,8L - -# define SN_idea_ofb64 "IDEA-OFB" -# define LN_idea_ofb64 "idea-ofb" -# define NID_idea_ofb64 46 - -# define LN_pkcs9 "pkcs9" -# define NID_pkcs9 47 -# define OBJ_pkcs9 OBJ_pkcs,9L - -# define SN_pkcs9_emailAddress "Email" -# define LN_pkcs9_emailAddress "emailAddress" -# define NID_pkcs9_emailAddress 48 -# define OBJ_pkcs9_emailAddress OBJ_pkcs9,1L - -# define LN_pkcs9_unstructuredName "unstructuredName" -# define NID_pkcs9_unstructuredName 49 -# define OBJ_pkcs9_unstructuredName OBJ_pkcs9,2L - -# define LN_pkcs9_contentType "contentType" -# define NID_pkcs9_contentType 50 -# define OBJ_pkcs9_contentType OBJ_pkcs9,3L - -# define LN_pkcs9_messageDigest "messageDigest" -# define NID_pkcs9_messageDigest 51 -# define OBJ_pkcs9_messageDigest OBJ_pkcs9,4L - -# define LN_pkcs9_signingTime "signingTime" -# define NID_pkcs9_signingTime 52 -# define OBJ_pkcs9_signingTime OBJ_pkcs9,5L - -# define LN_pkcs9_countersignature "countersignature" -# define NID_pkcs9_countersignature 53 -# define OBJ_pkcs9_countersignature OBJ_pkcs9,6L - -# define LN_pkcs9_challengePassword "challengePassword" -# define NID_pkcs9_challengePassword 54 -# define OBJ_pkcs9_challengePassword OBJ_pkcs9,7L - -# define LN_pkcs9_unstructuredAddress "unstructuredAddress" -# define NID_pkcs9_unstructuredAddress 55 -# define OBJ_pkcs9_unstructuredAddress OBJ_pkcs9,8L - -# define LN_pkcs9_extCertAttributes "extendedCertificateAttributes" -# define NID_pkcs9_extCertAttributes 56 -# define OBJ_pkcs9_extCertAttributes OBJ_pkcs9,9L - -# define SN_netscape "Netscape" -# define LN_netscape "Netscape Communications Corp." -# define NID_netscape 57 -# define OBJ_netscape 2L,16L,840L,1L,113730L - -# define SN_netscape_cert_extension "nsCertExt" -# define LN_netscape_cert_extension "Netscape Certificate Extension" -# define NID_netscape_cert_extension 58 -# define OBJ_netscape_cert_extension OBJ_netscape,1L - -# define SN_netscape_data_type "nsDataType" -# define LN_netscape_data_type "Netscape Data Type" -# define NID_netscape_data_type 59 -# define OBJ_netscape_data_type OBJ_netscape,2L - -# define SN_des_ede_cfb64 "DES-EDE-CFB" -# define LN_des_ede_cfb64 "des-ede-cfb" -# define NID_des_ede_cfb64 60 - -# define SN_des_ede3_cfb64 "DES-EDE3-CFB" -# define LN_des_ede3_cfb64 "des-ede3-cfb" -# define NID_des_ede3_cfb64 61 - -# define SN_des_ede_ofb64 "DES-EDE-OFB" -# define LN_des_ede_ofb64 "des-ede-ofb" -# define NID_des_ede_ofb64 62 - -# define SN_des_ede3_ofb64 "DES-EDE3-OFB" -# define LN_des_ede3_ofb64 "des-ede3-ofb" -# define NID_des_ede3_ofb64 63 - -/* I'm not sure about the object ID */ -# define SN_sha1 "SHA1" -# define LN_sha1 "sha1" -# define NID_sha1 64 -# define OBJ_sha1 OBJ_algorithm,26L -/* 28 Jun 1996 - eay */ -/* #define OBJ_sha1 1L,3L,14L,2L,26L,05L <- wrong */ - -# define SN_sha1WithRSAEncryption "RSA-SHA1" -# define LN_sha1WithRSAEncryption "sha1WithRSAEncryption" -# define NID_sha1WithRSAEncryption 65 -# define OBJ_sha1WithRSAEncryption OBJ_pkcs,1L,5L - -# define SN_dsaWithSHA "DSA-SHA" -# define LN_dsaWithSHA "dsaWithSHA" -# define NID_dsaWithSHA 66 -# define OBJ_dsaWithSHA OBJ_algorithm,13L - -# define SN_dsa_2 "DSA-old" -# define LN_dsa_2 "dsaEncryption-old" -# define NID_dsa_2 67 -# define OBJ_dsa_2 OBJ_algorithm,12L - -/* proposed by microsoft to RSA */ -# define SN_pbeWithSHA1AndRC2_CBC "PBE-SHA1-RC2-64" -# define LN_pbeWithSHA1AndRC2_CBC "pbeWithSHA1AndRC2-CBC" -# define NID_pbeWithSHA1AndRC2_CBC 68 -# define OBJ_pbeWithSHA1AndRC2_CBC OBJ_pkcs,5L,11L - -/* - * proposed by microsoft to RSA as pbeWithSHA1AndRC4: it is now defined - * explicitly in PKCS#5 v2.0 as id-PBKDF2 which is something completely - * different. - */ -# define LN_id_pbkdf2 "PBKDF2" -# define NID_id_pbkdf2 69 -# define OBJ_id_pbkdf2 OBJ_pkcs,5L,12L - -# define SN_dsaWithSHA1_2 "DSA-SHA1-old" -# define LN_dsaWithSHA1_2 "dsaWithSHA1-old" -# define NID_dsaWithSHA1_2 70 -/* Got this one from 'sdn706r20.pdf' which is actually an NSA document :-) */ -# define OBJ_dsaWithSHA1_2 OBJ_algorithm,27L - -# define SN_netscape_cert_type "nsCertType" -# define LN_netscape_cert_type "Netscape Cert Type" -# define NID_netscape_cert_type 71 -# define OBJ_netscape_cert_type OBJ_netscape_cert_extension,1L - -# define SN_netscape_base_url "nsBaseUrl" -# define LN_netscape_base_url "Netscape Base Url" -# define NID_netscape_base_url 72 -# define OBJ_netscape_base_url OBJ_netscape_cert_extension,2L - -# define SN_netscape_revocation_url "nsRevocationUrl" -# define LN_netscape_revocation_url "Netscape Revocation Url" -# define NID_netscape_revocation_url 73 -# define OBJ_netscape_revocation_url OBJ_netscape_cert_extension,3L - -# define SN_netscape_ca_revocation_url "nsCaRevocationUrl" -# define LN_netscape_ca_revocation_url "Netscape CA Revocation Url" -# define NID_netscape_ca_revocation_url 74 -# define OBJ_netscape_ca_revocation_url OBJ_netscape_cert_extension,4L - -# define SN_netscape_renewal_url "nsRenewalUrl" -# define LN_netscape_renewal_url "Netscape Renewal Url" -# define NID_netscape_renewal_url 75 -# define OBJ_netscape_renewal_url OBJ_netscape_cert_extension,7L - -# define SN_netscape_ca_policy_url "nsCaPolicyUrl" -# define LN_netscape_ca_policy_url "Netscape CA Policy Url" -# define NID_netscape_ca_policy_url 76 -# define OBJ_netscape_ca_policy_url OBJ_netscape_cert_extension,8L - -# define SN_netscape_ssl_server_name "nsSslServerName" -# define LN_netscape_ssl_server_name "Netscape SSL Server Name" -# define NID_netscape_ssl_server_name 77 -# define OBJ_netscape_ssl_server_name OBJ_netscape_cert_extension,12L - -# define SN_netscape_comment "nsComment" -# define LN_netscape_comment "Netscape Comment" -# define NID_netscape_comment 78 -# define OBJ_netscape_comment OBJ_netscape_cert_extension,13L - -# define SN_netscape_cert_sequence "nsCertSequence" -# define LN_netscape_cert_sequence "Netscape Certificate Sequence" -# define NID_netscape_cert_sequence 79 -# define OBJ_netscape_cert_sequence OBJ_netscape_data_type,5L - -# define SN_desx_cbc "DESX-CBC" -# define LN_desx_cbc "desx-cbc" -# define NID_desx_cbc 80 - -# define SN_id_ce "id-ce" -# define NID_id_ce 81 -# define OBJ_id_ce 2L,5L,29L - -# define SN_subject_key_identifier "subjectKeyIdentifier" -# define LN_subject_key_identifier "X509v3 Subject Key Identifier" -# define NID_subject_key_identifier 82 -# define OBJ_subject_key_identifier OBJ_id_ce,14L - -# define SN_key_usage "keyUsage" -# define LN_key_usage "X509v3 Key Usage" -# define NID_key_usage 83 -# define OBJ_key_usage OBJ_id_ce,15L - -# define SN_private_key_usage_period "privateKeyUsagePeriod" -# define LN_private_key_usage_period "X509v3 Private Key Usage Period" -# define NID_private_key_usage_period 84 -# define OBJ_private_key_usage_period OBJ_id_ce,16L - -# define SN_subject_alt_name "subjectAltName" -# define LN_subject_alt_name "X509v3 Subject Alternative Name" -# define NID_subject_alt_name 85 -# define OBJ_subject_alt_name OBJ_id_ce,17L - -# define SN_issuer_alt_name "issuerAltName" -# define LN_issuer_alt_name "X509v3 Issuer Alternative Name" -# define NID_issuer_alt_name 86 -# define OBJ_issuer_alt_name OBJ_id_ce,18L - -# define SN_basic_constraints "basicConstraints" -# define LN_basic_constraints "X509v3 Basic Constraints" -# define NID_basic_constraints 87 -# define OBJ_basic_constraints OBJ_id_ce,19L - -# define SN_crl_number "crlNumber" -# define LN_crl_number "X509v3 CRL Number" -# define NID_crl_number 88 -# define OBJ_crl_number OBJ_id_ce,20L - -# define SN_certificate_policies "certificatePolicies" -# define LN_certificate_policies "X509v3 Certificate Policies" -# define NID_certificate_policies 89 -# define OBJ_certificate_policies OBJ_id_ce,32L - -# define SN_authority_key_identifier "authorityKeyIdentifier" -# define LN_authority_key_identifier "X509v3 Authority Key Identifier" -# define NID_authority_key_identifier 90 -# define OBJ_authority_key_identifier OBJ_id_ce,35L - -# define SN_bf_cbc "BF-CBC" -# define LN_bf_cbc "bf-cbc" -# define NID_bf_cbc 91 -# define OBJ_bf_cbc 1L,3L,6L,1L,4L,1L,3029L,1L,2L - -# define SN_bf_ecb "BF-ECB" -# define LN_bf_ecb "bf-ecb" -# define NID_bf_ecb 92 - -# define SN_bf_cfb64 "BF-CFB" -# define LN_bf_cfb64 "bf-cfb" -# define NID_bf_cfb64 93 - -# define SN_bf_ofb64 "BF-OFB" -# define LN_bf_ofb64 "bf-ofb" -# define NID_bf_ofb64 94 - -# define SN_mdc2 "MDC2" -# define LN_mdc2 "mdc2" -# define NID_mdc2 95 -# define OBJ_mdc2 2L,5L,8L,3L,101L -/* An alternative? 1L,3L,14L,3L,2L,19L */ - -# define SN_mdc2WithRSA "RSA-MDC2" -# define LN_mdc2WithRSA "mdc2withRSA" -# define NID_mdc2WithRSA 96 -# define OBJ_mdc2WithRSA 2L,5L,8L,3L,100L - -# define SN_rc4_40 "RC4-40" -# define LN_rc4_40 "rc4-40" -# define NID_rc4_40 97 - -# define SN_rc2_40_cbc "RC2-40-CBC" -# define LN_rc2_40_cbc "rc2-40-cbc" -# define NID_rc2_40_cbc 98 - -# define SN_givenName "G" -# define LN_givenName "givenName" -# define NID_givenName 99 -# define OBJ_givenName OBJ_X509,42L - -# define SN_surname "S" -# define LN_surname "surname" -# define NID_surname 100 -# define OBJ_surname OBJ_X509,4L - -# define SN_initials "I" -# define LN_initials "initials" -# define NID_initials 101 -# define OBJ_initials OBJ_X509,43L - -# define SN_uniqueIdentifier "UID" -# define LN_uniqueIdentifier "uniqueIdentifier" -# define NID_uniqueIdentifier 102 -# define OBJ_uniqueIdentifier OBJ_X509,45L - -# define SN_crl_distribution_points "crlDistributionPoints" -# define LN_crl_distribution_points "X509v3 CRL Distribution Points" -# define NID_crl_distribution_points 103 -# define OBJ_crl_distribution_points OBJ_id_ce,31L - -# define SN_md5WithRSA "RSA-NP-MD5" -# define LN_md5WithRSA "md5WithRSA" -# define NID_md5WithRSA 104 -# define OBJ_md5WithRSA OBJ_algorithm,3L - -# define SN_serialNumber "SN" -# define LN_serialNumber "serialNumber" -# define NID_serialNumber 105 -# define OBJ_serialNumber OBJ_X509,5L - -# define SN_title "T" -# define LN_title "title" -# define NID_title 106 -# define OBJ_title OBJ_X509,12L - -# define SN_description "D" -# define LN_description "description" -# define NID_description 107 -# define OBJ_description OBJ_X509,13L - -/* CAST5 is CAST-128, I'm just sticking with the documentation */ -# define SN_cast5_cbc "CAST5-CBC" -# define LN_cast5_cbc "cast5-cbc" -# define NID_cast5_cbc 108 -# define OBJ_cast5_cbc 1L,2L,840L,113533L,7L,66L,10L - -# define SN_cast5_ecb "CAST5-ECB" -# define LN_cast5_ecb "cast5-ecb" -# define NID_cast5_ecb 109 - -# define SN_cast5_cfb64 "CAST5-CFB" -# define LN_cast5_cfb64 "cast5-cfb" -# define NID_cast5_cfb64 110 - -# define SN_cast5_ofb64 "CAST5-OFB" -# define LN_cast5_ofb64 "cast5-ofb" -# define NID_cast5_ofb64 111 - -# define LN_pbeWithMD5AndCast5_CBC "pbeWithMD5AndCast5CBC" -# define NID_pbeWithMD5AndCast5_CBC 112 -# define OBJ_pbeWithMD5AndCast5_CBC 1L,2L,840L,113533L,7L,66L,12L - -/*- - * This is one sun will soon be using :-( - * id-dsa-with-sha1 ID ::= { - * iso(1) member-body(2) us(840) x9-57 (10040) x9cm(4) 3 } - */ -# define SN_dsaWithSHA1 "DSA-SHA1" -# define LN_dsaWithSHA1 "dsaWithSHA1" -# define NID_dsaWithSHA1 113 -# define OBJ_dsaWithSHA1 1L,2L,840L,10040L,4L,3L - -# define NID_md5_sha1 114 -# define SN_md5_sha1 "MD5-SHA1" -# define LN_md5_sha1 "md5-sha1" - -# define SN_sha1WithRSA "RSA-SHA1-2" -# define LN_sha1WithRSA "sha1WithRSA" -# define NID_sha1WithRSA 115 -# define OBJ_sha1WithRSA OBJ_algorithm,29L - -# define SN_dsa "DSA" -# define LN_dsa "dsaEncryption" -# define NID_dsa 116 -# define OBJ_dsa 1L,2L,840L,10040L,4L,1L - -# define SN_ripemd160 "RIPEMD160" -# define LN_ripemd160 "ripemd160" -# define NID_ripemd160 117 -# define OBJ_ripemd160 1L,3L,36L,3L,2L,1L - -/* - * The name should actually be rsaSignatureWithripemd160, but I'm going to - * continue using the convention I'm using with the other ciphers - */ -# define SN_ripemd160WithRSA "RSA-RIPEMD160" -# define LN_ripemd160WithRSA "ripemd160WithRSA" -# define NID_ripemd160WithRSA 119 -# define OBJ_ripemd160WithRSA 1L,3L,36L,3L,3L,1L,2L - -/*- - * Taken from rfc2040 - * RC5_CBC_Parameters ::= SEQUENCE { - * version INTEGER (v1_0(16)), - * rounds INTEGER (8..127), - * blockSizeInBits INTEGER (64, 128), - * iv OCTET STRING OPTIONAL - * } - */ -# define SN_rc5_cbc "RC5-CBC" -# define LN_rc5_cbc "rc5-cbc" -# define NID_rc5_cbc 120 -# define OBJ_rc5_cbc OBJ_rsadsi,3L,8L - -# define SN_rc5_ecb "RC5-ECB" -# define LN_rc5_ecb "rc5-ecb" -# define NID_rc5_ecb 121 - -# define SN_rc5_cfb64 "RC5-CFB" -# define LN_rc5_cfb64 "rc5-cfb" -# define NID_rc5_cfb64 122 - -# define SN_rc5_ofb64 "RC5-OFB" -# define LN_rc5_ofb64 "rc5-ofb" -# define NID_rc5_ofb64 123 - -# define SN_rle_compression "RLE" -# define LN_rle_compression "run length compression" -# define NID_rle_compression 124 -# define OBJ_rle_compression 1L,1L,1L,1L,666L,1L - -# define SN_zlib_compression "ZLIB" -# define LN_zlib_compression "zlib compression" -# define NID_zlib_compression 125 -# define OBJ_zlib_compression 1L,1L,1L,1L,666L,2L - -# define SN_ext_key_usage "extendedKeyUsage" -# define LN_ext_key_usage "X509v3 Extended Key Usage" -# define NID_ext_key_usage 126 -# define OBJ_ext_key_usage OBJ_id_ce,37 - -# define SN_id_pkix "PKIX" -# define NID_id_pkix 127 -# define OBJ_id_pkix 1L,3L,6L,1L,5L,5L,7L - -# define SN_id_kp "id-kp" -# define NID_id_kp 128 -# define OBJ_id_kp OBJ_id_pkix,3L - -/* PKIX extended key usage OIDs */ - -# define SN_server_auth "serverAuth" -# define LN_server_auth "TLS Web Server Authentication" -# define NID_server_auth 129 -# define OBJ_server_auth OBJ_id_kp,1L - -# define SN_client_auth "clientAuth" -# define LN_client_auth "TLS Web Client Authentication" -# define NID_client_auth 130 -# define OBJ_client_auth OBJ_id_kp,2L - -# define SN_code_sign "codeSigning" -# define LN_code_sign "Code Signing" -# define NID_code_sign 131 -# define OBJ_code_sign OBJ_id_kp,3L - -# define SN_email_protect "emailProtection" -# define LN_email_protect "E-mail Protection" -# define NID_email_protect 132 -# define OBJ_email_protect OBJ_id_kp,4L - -# define SN_time_stamp "timeStamping" -# define LN_time_stamp "Time Stamping" -# define NID_time_stamp 133 -# define OBJ_time_stamp OBJ_id_kp,8L - -/* Additional extended key usage OIDs: Microsoft */ - -# define SN_ms_code_ind "msCodeInd" -# define LN_ms_code_ind "Microsoft Individual Code Signing" -# define NID_ms_code_ind 134 -# define OBJ_ms_code_ind 1L,3L,6L,1L,4L,1L,311L,2L,1L,21L - -# define SN_ms_code_com "msCodeCom" -# define LN_ms_code_com "Microsoft Commercial Code Signing" -# define NID_ms_code_com 135 -# define OBJ_ms_code_com 1L,3L,6L,1L,4L,1L,311L,2L,1L,22L - -# define SN_ms_ctl_sign "msCTLSign" -# define LN_ms_ctl_sign "Microsoft Trust List Signing" -# define NID_ms_ctl_sign 136 -# define OBJ_ms_ctl_sign 1L,3L,6L,1L,4L,1L,311L,10L,3L,1L - -# define SN_ms_sgc "msSGC" -# define LN_ms_sgc "Microsoft Server Gated Crypto" -# define NID_ms_sgc 137 -# define OBJ_ms_sgc 1L,3L,6L,1L,4L,1L,311L,10L,3L,3L - -# define SN_ms_efs "msEFS" -# define LN_ms_efs "Microsoft Encrypted File System" -# define NID_ms_efs 138 -# define OBJ_ms_efs 1L,3L,6L,1L,4L,1L,311L,10L,3L,4L - -/* Additional usage: Netscape */ - -# define SN_ns_sgc "nsSGC" -# define LN_ns_sgc "Netscape Server Gated Crypto" -# define NID_ns_sgc 139 -# define OBJ_ns_sgc OBJ_netscape,4L,1L - -# define SN_delta_crl "deltaCRL" -# define LN_delta_crl "X509v3 Delta CRL Indicator" -# define NID_delta_crl 140 -# define OBJ_delta_crl OBJ_id_ce,27L - -# define SN_crl_reason "CRLReason" -# define LN_crl_reason "CRL Reason Code" -# define NID_crl_reason 141 -# define OBJ_crl_reason OBJ_id_ce,21L - -# define SN_invalidity_date "invalidityDate" -# define LN_invalidity_date "Invalidity Date" -# define NID_invalidity_date 142 -# define OBJ_invalidity_date OBJ_id_ce,24L - -# define SN_sxnet "SXNetID" -# define LN_sxnet "Strong Extranet ID" -# define NID_sxnet 143 -# define OBJ_sxnet 1L,3L,101L,1L,4L,1L - -/* PKCS12 and related OBJECT IDENTIFIERS */ - -# define OBJ_pkcs12 OBJ_pkcs,12L -# define OBJ_pkcs12_pbeids OBJ_pkcs12, 1 - -# define SN_pbe_WithSHA1And128BitRC4 "PBE-SHA1-RC4-128" -# define LN_pbe_WithSHA1And128BitRC4 "pbeWithSHA1And128BitRC4" -# define NID_pbe_WithSHA1And128BitRC4 144 -# define OBJ_pbe_WithSHA1And128BitRC4 OBJ_pkcs12_pbeids, 1L - -# define SN_pbe_WithSHA1And40BitRC4 "PBE-SHA1-RC4-40" -# define LN_pbe_WithSHA1And40BitRC4 "pbeWithSHA1And40BitRC4" -# define NID_pbe_WithSHA1And40BitRC4 145 -# define OBJ_pbe_WithSHA1And40BitRC4 OBJ_pkcs12_pbeids, 2L - -# define SN_pbe_WithSHA1And3_Key_TripleDES_CBC "PBE-SHA1-3DES" -# define LN_pbe_WithSHA1And3_Key_TripleDES_CBC "pbeWithSHA1And3-KeyTripleDES-CBC" -# define NID_pbe_WithSHA1And3_Key_TripleDES_CBC 146 -# define OBJ_pbe_WithSHA1And3_Key_TripleDES_CBC OBJ_pkcs12_pbeids, 3L - -# define SN_pbe_WithSHA1And2_Key_TripleDES_CBC "PBE-SHA1-2DES" -# define LN_pbe_WithSHA1And2_Key_TripleDES_CBC "pbeWithSHA1And2-KeyTripleDES-CBC" -# define NID_pbe_WithSHA1And2_Key_TripleDES_CBC 147 -# define OBJ_pbe_WithSHA1And2_Key_TripleDES_CBC OBJ_pkcs12_pbeids, 4L - -# define SN_pbe_WithSHA1And128BitRC2_CBC "PBE-SHA1-RC2-128" -# define LN_pbe_WithSHA1And128BitRC2_CBC "pbeWithSHA1And128BitRC2-CBC" -# define NID_pbe_WithSHA1And128BitRC2_CBC 148 -# define OBJ_pbe_WithSHA1And128BitRC2_CBC OBJ_pkcs12_pbeids, 5L - -# define SN_pbe_WithSHA1And40BitRC2_CBC "PBE-SHA1-RC2-40" -# define LN_pbe_WithSHA1And40BitRC2_CBC "pbeWithSHA1And40BitRC2-CBC" -# define NID_pbe_WithSHA1And40BitRC2_CBC 149 -# define OBJ_pbe_WithSHA1And40BitRC2_CBC OBJ_pkcs12_pbeids, 6L - -# define OBJ_pkcs12_Version1 OBJ_pkcs12, 10L - -# define OBJ_pkcs12_BagIds OBJ_pkcs12_Version1, 1L - -# define LN_keyBag "keyBag" -# define NID_keyBag 150 -# define OBJ_keyBag OBJ_pkcs12_BagIds, 1L - -# define LN_pkcs8ShroudedKeyBag "pkcs8ShroudedKeyBag" -# define NID_pkcs8ShroudedKeyBag 151 -# define OBJ_pkcs8ShroudedKeyBag OBJ_pkcs12_BagIds, 2L - -# define LN_certBag "certBag" -# define NID_certBag 152 -# define OBJ_certBag OBJ_pkcs12_BagIds, 3L - -# define LN_crlBag "crlBag" -# define NID_crlBag 153 -# define OBJ_crlBag OBJ_pkcs12_BagIds, 4L - -# define LN_secretBag "secretBag" -# define NID_secretBag 154 -# define OBJ_secretBag OBJ_pkcs12_BagIds, 5L - -# define LN_safeContentsBag "safeContentsBag" -# define NID_safeContentsBag 155 -# define OBJ_safeContentsBag OBJ_pkcs12_BagIds, 6L - -# define LN_friendlyName "friendlyName" -# define NID_friendlyName 156 -# define OBJ_friendlyName OBJ_pkcs9, 20L - -# define LN_localKeyID "localKeyID" -# define NID_localKeyID 157 -# define OBJ_localKeyID OBJ_pkcs9, 21L - -# define OBJ_certTypes OBJ_pkcs9, 22L - -# define LN_x509Certificate "x509Certificate" -# define NID_x509Certificate 158 -# define OBJ_x509Certificate OBJ_certTypes, 1L - -# define LN_sdsiCertificate "sdsiCertificate" -# define NID_sdsiCertificate 159 -# define OBJ_sdsiCertificate OBJ_certTypes, 2L - -# define OBJ_crlTypes OBJ_pkcs9, 23L - -# define LN_x509Crl "x509Crl" -# define NID_x509Crl 160 -# define OBJ_x509Crl OBJ_crlTypes, 1L - -/* PKCS#5 v2 OIDs */ - -# define LN_pbes2 "PBES2" -# define NID_pbes2 161 -# define OBJ_pbes2 OBJ_pkcs,5L,13L - -# define LN_pbmac1 "PBMAC1" -# define NID_pbmac1 162 -# define OBJ_pbmac1 OBJ_pkcs,5L,14L - -# define LN_hmacWithSHA1 "hmacWithSHA1" -# define NID_hmacWithSHA1 163 -# define OBJ_hmacWithSHA1 OBJ_rsadsi,2L,7L - -/* Policy Qualifier Ids */ - -# define LN_id_qt_cps "Policy Qualifier CPS" -# define SN_id_qt_cps "id-qt-cps" -# define NID_id_qt_cps 164 -# define OBJ_id_qt_cps OBJ_id_pkix,2L,1L - -# define LN_id_qt_unotice "Policy Qualifier User Notice" -# define SN_id_qt_unotice "id-qt-unotice" -# define NID_id_qt_unotice 165 -# define OBJ_id_qt_unotice OBJ_id_pkix,2L,2L - -# define SN_rc2_64_cbc "RC2-64-CBC" -# define LN_rc2_64_cbc "rc2-64-cbc" -# define NID_rc2_64_cbc 166 - -# define SN_SMIMECapabilities "SMIME-CAPS" -# define LN_SMIMECapabilities "S/MIME Capabilities" -# define NID_SMIMECapabilities 167 -# define OBJ_SMIMECapabilities OBJ_pkcs9,15L - -# define SN_pbeWithMD2AndRC2_CBC "PBE-MD2-RC2-64" -# define LN_pbeWithMD2AndRC2_CBC "pbeWithMD2AndRC2-CBC" -# define NID_pbeWithMD2AndRC2_CBC 168 -# define OBJ_pbeWithMD2AndRC2_CBC OBJ_pkcs,5L,4L - -# define SN_pbeWithMD5AndRC2_CBC "PBE-MD5-RC2-64" -# define LN_pbeWithMD5AndRC2_CBC "pbeWithMD5AndRC2-CBC" -# define NID_pbeWithMD5AndRC2_CBC 169 -# define OBJ_pbeWithMD5AndRC2_CBC OBJ_pkcs,5L,6L - -# define SN_pbeWithSHA1AndDES_CBC "PBE-SHA1-DES" -# define LN_pbeWithSHA1AndDES_CBC "pbeWithSHA1AndDES-CBC" -# define NID_pbeWithSHA1AndDES_CBC 170 -# define OBJ_pbeWithSHA1AndDES_CBC OBJ_pkcs,5L,10L - -/* Extension request OIDs */ - -# define LN_ms_ext_req "Microsoft Extension Request" -# define SN_ms_ext_req "msExtReq" -# define NID_ms_ext_req 171 -# define OBJ_ms_ext_req 1L,3L,6L,1L,4L,1L,311L,2L,1L,14L - -# define LN_ext_req "Extension Request" -# define SN_ext_req "extReq" -# define NID_ext_req 172 -# define OBJ_ext_req OBJ_pkcs9,14L - -# define SN_name "name" -# define LN_name "name" -# define NID_name 173 -# define OBJ_name OBJ_X509,41L - -# define SN_dnQualifier "dnQualifier" -# define LN_dnQualifier "dnQualifier" -# define NID_dnQualifier 174 -# define OBJ_dnQualifier OBJ_X509,46L - -# define SN_id_pe "id-pe" -# define NID_id_pe 175 -# define OBJ_id_pe OBJ_id_pkix,1L - -# define SN_id_ad "id-ad" -# define NID_id_ad 176 -# define OBJ_id_ad OBJ_id_pkix,48L - -# define SN_info_access "authorityInfoAccess" -# define LN_info_access "Authority Information Access" -# define NID_info_access 177 -# define OBJ_info_access OBJ_id_pe,1L - -# define SN_ad_OCSP "OCSP" -# define LN_ad_OCSP "OCSP" -# define NID_ad_OCSP 178 -# define OBJ_ad_OCSP OBJ_id_ad,1L - -# define SN_ad_ca_issuers "caIssuers" -# define LN_ad_ca_issuers "CA Issuers" -# define NID_ad_ca_issuers 179 -# define OBJ_ad_ca_issuers OBJ_id_ad,2L - -# define SN_OCSP_sign "OCSPSigning" -# define LN_OCSP_sign "OCSP Signing" -# define NID_OCSP_sign 180 -# define OBJ_OCSP_sign OBJ_id_kp,9L -# endif /* USE_OBJ_MAC */ - -# include -# include - -# define OBJ_NAME_TYPE_UNDEF 0x00 -# define OBJ_NAME_TYPE_MD_METH 0x01 -# define OBJ_NAME_TYPE_CIPHER_METH 0x02 -# define OBJ_NAME_TYPE_PKEY_METH 0x03 -# define OBJ_NAME_TYPE_COMP_METH 0x04 -# define OBJ_NAME_TYPE_NUM 0x05 - -# define OBJ_NAME_ALIAS 0x8000 - -# define OBJ_BSEARCH_VALUE_ON_NOMATCH 0x01 -# define OBJ_BSEARCH_FIRST_VALUE_ON_MATCH 0x02 - - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct obj_name_st { - int type; - int alias; - const char *name; - const char *data; -} OBJ_NAME; - -# define OBJ_create_and_add_object(a,b,c) OBJ_create(a,b,c) - -int OBJ_NAME_init(void); -int OBJ_NAME_new_index(unsigned long (*hash_func) (const char *), - int (*cmp_func) (const char *, const char *), - void (*free_func) (const char *, int, const char *)); -const char *OBJ_NAME_get(const char *name, int type); -int OBJ_NAME_add(const char *name, int type, const char *data); -int OBJ_NAME_remove(const char *name, int type); -void OBJ_NAME_cleanup(int type); /* -1 for everything */ -void OBJ_NAME_do_all(int type, void (*fn) (const OBJ_NAME *, void *arg), - void *arg); -void OBJ_NAME_do_all_sorted(int type, - void (*fn) (const OBJ_NAME *, void *arg), - void *arg); - -ASN1_OBJECT *OBJ_dup(const ASN1_OBJECT *o); -ASN1_OBJECT *OBJ_nid2obj(int n); -const char *OBJ_nid2ln(int n); -const char *OBJ_nid2sn(int n); -int OBJ_obj2nid(const ASN1_OBJECT *o); -ASN1_OBJECT *OBJ_txt2obj(const char *s, int no_name); -int OBJ_obj2txt(char *buf, int buf_len, const ASN1_OBJECT *a, int no_name); -int OBJ_txt2nid(const char *s); -int OBJ_ln2nid(const char *s); -int OBJ_sn2nid(const char *s); -int OBJ_cmp(const ASN1_OBJECT *a, const ASN1_OBJECT *b); -const void *OBJ_bsearch_(const void *key, const void *base, int num, int size, - int (*cmp) (const void *, const void *)); -const void *OBJ_bsearch_ex_(const void *key, const void *base, int num, - int size, - int (*cmp) (const void *, const void *), - int flags); - -# define _DECLARE_OBJ_BSEARCH_CMP_FN(scope, type1, type2, nm) \ - static int nm##_cmp_BSEARCH_CMP_FN(const void *, const void *); \ - static int nm##_cmp(type1 const *, type2 const *); \ - scope type2 * OBJ_bsearch_##nm(type1 *key, type2 const *base, int num) - -# define DECLARE_OBJ_BSEARCH_CMP_FN(type1, type2, cmp) \ - _DECLARE_OBJ_BSEARCH_CMP_FN(static, type1, type2, cmp) -# define DECLARE_OBJ_BSEARCH_GLOBAL_CMP_FN(type1, type2, nm) \ - type2 * OBJ_bsearch_##nm(type1 *key, type2 const *base, int num) - -/*- - * Unsolved problem: if a type is actually a pointer type, like - * nid_triple is, then its impossible to get a const where you need - * it. Consider: - * - * typedef int nid_triple[3]; - * const void *a_; - * const nid_triple const *a = a_; - * - * The assignement discards a const because what you really want is: - * - * const int const * const *a = a_; - * - * But if you do that, you lose the fact that a is an array of 3 ints, - * which breaks comparison functions. - * - * Thus we end up having to cast, sadly, or unpack the - * declarations. Or, as I finally did in this case, delcare nid_triple - * to be a struct, which it should have been in the first place. - * - * Ben, August 2008. - * - * Also, strictly speaking not all types need be const, but handling - * the non-constness means a lot of complication, and in practice - * comparison routines do always not touch their arguments. - */ - -# define IMPLEMENT_OBJ_BSEARCH_CMP_FN(type1, type2, nm) \ - static int nm##_cmp_BSEARCH_CMP_FN(const void *a_, const void *b_) \ - { \ - type1 const *a = a_; \ - type2 const *b = b_; \ - return nm##_cmp(a,b); \ - } \ - static type2 *OBJ_bsearch_##nm(type1 *key, type2 const *base, int num) \ - { \ - return (type2 *)OBJ_bsearch_(key, base, num, sizeof(type2), \ - nm##_cmp_BSEARCH_CMP_FN); \ - } \ - extern void dummy_prototype(void) - -# define IMPLEMENT_OBJ_BSEARCH_GLOBAL_CMP_FN(type1, type2, nm) \ - static int nm##_cmp_BSEARCH_CMP_FN(const void *a_, const void *b_) \ - { \ - type1 const *a = a_; \ - type2 const *b = b_; \ - return nm##_cmp(a,b); \ - } \ - type2 *OBJ_bsearch_##nm(type1 *key, type2 const *base, int num) \ - { \ - return (type2 *)OBJ_bsearch_(key, base, num, sizeof(type2), \ - nm##_cmp_BSEARCH_CMP_FN); \ - } \ - extern void dummy_prototype(void) - -# define OBJ_bsearch(type1,key,type2,base,num,cmp) \ - ((type2 *)OBJ_bsearch_(CHECKED_PTR_OF(type1,key),CHECKED_PTR_OF(type2,base), \ - num,sizeof(type2), \ - ((void)CHECKED_PTR_OF(type1,cmp##_type_1), \ - (void)CHECKED_PTR_OF(type2,cmp##_type_2), \ - cmp##_BSEARCH_CMP_FN))) - -# define OBJ_bsearch_ex(type1,key,type2,base,num,cmp,flags) \ - ((type2 *)OBJ_bsearch_ex_(CHECKED_PTR_OF(type1,key),CHECKED_PTR_OF(type2,base), \ - num,sizeof(type2), \ - ((void)CHECKED_PTR_OF(type1,cmp##_type_1), \ - (void)type_2=CHECKED_PTR_OF(type2,cmp##_type_2), \ - cmp##_BSEARCH_CMP_FN)),flags) - -int OBJ_new_nid(int num); -int OBJ_add_object(const ASN1_OBJECT *obj); -int OBJ_create(const char *oid, const char *sn, const char *ln); -void OBJ_cleanup(void); -int OBJ_create_objects(BIO *in); - -int OBJ_find_sigid_algs(int signid, int *pdig_nid, int *ppkey_nid); -int OBJ_find_sigid_by_algs(int *psignid, int dig_nid, int pkey_nid); -int OBJ_add_sigid(int signid, int dig_id, int pkey_id); -void OBJ_sigid_free(void); - -extern int obj_cleanup_defer; -void check_defer(int nid); - -/* BEGIN ERROR CODES */ -/* - * The following lines are auto generated by the script mkerr.pl. Any changes - * made after this point may be overwritten when the script is next run. - */ -void ERR_load_OBJ_strings(void); - -/* Error codes for the OBJ functions. */ - -/* Function codes. */ -# define OBJ_F_OBJ_ADD_OBJECT 105 -# define OBJ_F_OBJ_CREATE 100 -# define OBJ_F_OBJ_DUP 101 -# define OBJ_F_OBJ_NAME_NEW_INDEX 106 -# define OBJ_F_OBJ_NID2LN 102 -# define OBJ_F_OBJ_NID2OBJ 103 -# define OBJ_F_OBJ_NID2SN 104 - -/* Reason codes. */ -# define OBJ_R_MALLOC_FAILURE 100 -# define OBJ_R_UNKNOWN_NID 101 - -#ifdef __cplusplus -} -#endif -#endif diff --git a/ext/openssl-win32/inc32/openssl/opensslconf.h b/ext/openssl-win32/inc32/openssl/opensslconf.h deleted file mode 100644 index 8f85f844..00000000 --- a/ext/openssl-win32/inc32/openssl/opensslconf.h +++ /dev/null @@ -1,259 +0,0 @@ -/* opensslconf.h */ -/* WARNING: Generated automatically from opensslconf.h.in by Configure. */ - -#ifdef __cplusplus -extern "C" { -#endif -/* OpenSSL was configured with the following options: */ -#ifndef OPENSSL_SYSNAME_WIN32 -# define OPENSSL_SYSNAME_WIN32 -#endif -#ifndef OPENSSL_DOING_MAKEDEPEND - - -#ifndef OPENSSL_NO_EC_NISTP_64_GCC_128 -# define OPENSSL_NO_EC_NISTP_64_GCC_128 -#endif -#ifndef OPENSSL_NO_GMP -# define OPENSSL_NO_GMP -#endif -#ifndef OPENSSL_NO_JPAKE -# define OPENSSL_NO_JPAKE -#endif -#ifndef OPENSSL_NO_KRB5 -# define OPENSSL_NO_KRB5 -#endif -#ifndef OPENSSL_NO_LIBUNBOUND -# define OPENSSL_NO_LIBUNBOUND -#endif -#ifndef OPENSSL_NO_MD2 -# define OPENSSL_NO_MD2 -#endif -#ifndef OPENSSL_NO_RC5 -# define OPENSSL_NO_RC5 -#endif -#ifndef OPENSSL_NO_RFC3779 -# define OPENSSL_NO_RFC3779 -#endif -#ifndef OPENSSL_NO_SCTP -# define OPENSSL_NO_SCTP -#endif -#ifndef OPENSSL_NO_SSL_TRACE -# define OPENSSL_NO_SSL_TRACE -#endif -#ifndef OPENSSL_NO_STORE -# define OPENSSL_NO_STORE -#endif -#ifndef OPENSSL_NO_UNIT_TEST -# define OPENSSL_NO_UNIT_TEST -#endif - -#endif /* OPENSSL_DOING_MAKEDEPEND */ - -#ifndef OPENSSL_THREADS -# define OPENSSL_THREADS -#endif - -/* The OPENSSL_NO_* macros are also defined as NO_* if the application - asks for it. This is a transient feature that is provided for those - who haven't had the time to do the appropriate changes in their - applications. */ -#ifdef OPENSSL_ALGORITHM_DEFINES -# if defined(OPENSSL_NO_EC_NISTP_64_GCC_128) && !defined(NO_EC_NISTP_64_GCC_128) -# define NO_EC_NISTP_64_GCC_128 -# endif -# if defined(OPENSSL_NO_GMP) && !defined(NO_GMP) -# define NO_GMP -# endif -# if defined(OPENSSL_NO_JPAKE) && !defined(NO_JPAKE) -# define NO_JPAKE -# endif -# if defined(OPENSSL_NO_KRB5) && !defined(NO_KRB5) -# define NO_KRB5 -# endif -# if defined(OPENSSL_NO_LIBUNBOUND) && !defined(NO_LIBUNBOUND) -# define NO_LIBUNBOUND -# endif -# if defined(OPENSSL_NO_MD2) && !defined(NO_MD2) -# define NO_MD2 -# endif -# if defined(OPENSSL_NO_RC5) && !defined(NO_RC5) -# define NO_RC5 -# endif -# if defined(OPENSSL_NO_RFC3779) && !defined(NO_RFC3779) -# define NO_RFC3779 -# endif -# if defined(OPENSSL_NO_SCTP) && !defined(NO_SCTP) -# define NO_SCTP -# endif -# if defined(OPENSSL_NO_SSL_TRACE) && !defined(NO_SSL_TRACE) -# define NO_SSL_TRACE -# endif -# if defined(OPENSSL_NO_STORE) && !defined(NO_STORE) -# define NO_STORE -# endif -# if defined(OPENSSL_NO_UNIT_TEST) && !defined(NO_UNIT_TEST) -# define NO_UNIT_TEST -# endif -#endif - -#define OPENSSL_CPUID_OBJ - -/* crypto/opensslconf.h.in */ - -/* Generate 80386 code? */ -#undef I386_ONLY - -#if !(defined(VMS) || defined(__VMS)) /* VMS uses logical names instead */ -#if defined(HEADER_CRYPTLIB_H) && !defined(OPENSSLDIR) -#define ENGINESDIR "/usr/local/ssl/lib/engines" -#define OPENSSLDIR "/usr/local/ssl" -#endif -#endif - -#undef OPENSSL_UNISTD -#define OPENSSL_UNISTD - -#undef OPENSSL_EXPORT_VAR_AS_FUNCTION -#define OPENSSL_EXPORT_VAR_AS_FUNCTION - -#if defined(HEADER_IDEA_H) && !defined(IDEA_INT) -#define IDEA_INT unsigned int -#endif - -#if defined(HEADER_MD2_H) && !defined(MD2_INT) -#define MD2_INT unsigned int -#endif - -#if defined(HEADER_RC2_H) && !defined(RC2_INT) -/* I need to put in a mod for the alpha - eay */ -#define RC2_INT unsigned int -#endif - -#if defined(HEADER_RC4_H) -#if !defined(RC4_INT) -/* using int types make the structure larger but make the code faster - * on most boxes I have tested - up to %20 faster. */ -/* - * I don't know what does "most" mean, but declaring "int" is a must on: - * - Intel P6 because partial register stalls are very expensive; - * - elder Alpha because it lacks byte load/store instructions; - */ -#define RC4_INT unsigned int -#endif -#if !defined(RC4_CHUNK) -/* - * This enables code handling data aligned at natural CPU word - * boundary. See crypto/rc4/rc4_enc.c for further details. - */ -#undef RC4_CHUNK -#endif -#endif - -#if (defined(HEADER_NEW_DES_H) || defined(HEADER_DES_H)) && !defined(DES_LONG) -/* If this is set to 'unsigned int' on a DEC Alpha, this gives about a - * %20 speed up (longs are 8 bytes, int's are 4). */ -#ifndef DES_LONG -#define DES_LONG unsigned long -#endif -#endif - -#if defined(HEADER_BN_H) && !defined(CONFIG_HEADER_BN_H) -#define CONFIG_HEADER_BN_H -#define BN_LLONG - -/* Should we define BN_DIV2W here? */ - -/* Only one for the following should be defined */ -#undef SIXTY_FOUR_BIT_LONG -#undef SIXTY_FOUR_BIT -#define THIRTY_TWO_BIT -#endif - -#if defined(HEADER_RC4_LOCL_H) && !defined(CONFIG_HEADER_RC4_LOCL_H) -#define CONFIG_HEADER_RC4_LOCL_H -/* if this is defined data[i] is used instead of *data, this is a %20 - * speedup on x86 */ -#define RC4_INDEX -#endif - -#if defined(HEADER_BF_LOCL_H) && !defined(CONFIG_HEADER_BF_LOCL_H) -#define CONFIG_HEADER_BF_LOCL_H -#undef BF_PTR -#endif /* HEADER_BF_LOCL_H */ - -#if defined(HEADER_DES_LOCL_H) && !defined(CONFIG_HEADER_DES_LOCL_H) -#define CONFIG_HEADER_DES_LOCL_H -#ifndef DES_DEFAULT_OPTIONS -/* the following is tweaked from a config script, that is why it is a - * protected undef/define */ -#ifndef DES_PTR -#undef DES_PTR -#endif - -/* This helps C compiler generate the correct code for multiple functional - * units. It reduces register dependancies at the expense of 2 more - * registers */ -#ifndef DES_RISC1 -#undef DES_RISC1 -#endif - -#ifndef DES_RISC2 -#undef DES_RISC2 -#endif - -#if defined(DES_RISC1) && defined(DES_RISC2) -YOU SHOULD NOT HAVE BOTH DES_RISC1 AND DES_RISC2 DEFINED!!!!! -#endif - -/* Unroll the inner loop, this sometimes helps, sometimes hinders. - * Very mucy CPU dependant */ -#ifndef DES_UNROLL -#undef DES_UNROLL -#endif - -/* These default values were supplied by - * Peter Gutman - * They are only used if nothing else has been defined */ -#if !defined(DES_PTR) && !defined(DES_RISC1) && !defined(DES_RISC2) && !defined(DES_UNROLL) -/* Special defines which change the way the code is built depending on the - CPU and OS. For SGI machines you can use _MIPS_SZLONG (32 or 64) to find - even newer MIPS CPU's, but at the moment one size fits all for - optimization options. Older Sparc's work better with only UNROLL, but - there's no way to tell at compile time what it is you're running on */ - -#if defined( sun ) /* Newer Sparc's */ -# define DES_PTR -# define DES_RISC1 -# define DES_UNROLL -#elif defined( __ultrix ) /* Older MIPS */ -# define DES_PTR -# define DES_RISC2 -# define DES_UNROLL -#elif defined( __osf1__ ) /* Alpha */ -# define DES_PTR -# define DES_RISC2 -#elif defined ( _AIX ) /* RS6000 */ - /* Unknown */ -#elif defined( __hpux ) /* HP-PA */ - /* Unknown */ -#elif defined( __aux ) /* 68K */ - /* Unknown */ -#elif defined( __dgux ) /* 88K (but P6 in latest boxes) */ -# define DES_UNROLL -#elif defined( __sgi ) /* Newer MIPS */ -# define DES_PTR -# define DES_RISC2 -# define DES_UNROLL -#elif defined(i386) || defined(__i386__) /* x86 boxes, should be gcc */ -# define DES_PTR -# define DES_RISC1 -# define DES_UNROLL -#endif /* Systems-specific speed defines */ -#endif - -#endif /* DES_DEFAULT_OPTIONS */ -#endif /* HEADER_DES_LOCL_H */ -#ifdef __cplusplus -} -#endif diff --git a/ext/openssl-win32/inc32/openssl/opensslv.h b/ext/openssl-win32/inc32/openssl/opensslv.h deleted file mode 100644 index e277caee..00000000 --- a/ext/openssl-win32/inc32/openssl/opensslv.h +++ /dev/null @@ -1,97 +0,0 @@ -#ifndef HEADER_OPENSSLV_H -# define HEADER_OPENSSLV_H - -#ifdef __cplusplus -extern "C" { -#endif - -/*- - * Numeric release version identifier: - * MNNFFPPS: major minor fix patch status - * The status nibble has one of the values 0 for development, 1 to e for betas - * 1 to 14, and f for release. The patch level is exactly that. - * For example: - * 0.9.3-dev 0x00903000 - * 0.9.3-beta1 0x00903001 - * 0.9.3-beta2-dev 0x00903002 - * 0.9.3-beta2 0x00903002 (same as ...beta2-dev) - * 0.9.3 0x0090300f - * 0.9.3a 0x0090301f - * 0.9.4 0x0090400f - * 1.2.3z 0x102031af - * - * For continuity reasons (because 0.9.5 is already out, and is coded - * 0x00905100), between 0.9.5 and 0.9.6 the coding of the patch level - * part is slightly different, by setting the highest bit. This means - * that 0.9.5a looks like this: 0x0090581f. At 0.9.6, we can start - * with 0x0090600S... - * - * (Prior to 0.9.3-dev a different scheme was used: 0.9.2b is 0x0922.) - * (Prior to 0.9.5a beta1, a different scheme was used: MMNNFFRBB for - * major minor fix final patch/beta) - */ -# define OPENSSL_VERSION_NUMBER 0x1000200fL -# ifdef OPENSSL_FIPS -# define OPENSSL_VERSION_TEXT "OpenSSL 1.0.2-fips 22 Jan 2015" -# else -# define OPENSSL_VERSION_TEXT "OpenSSL 1.0.2 22 Jan 2015" -# endif -# define OPENSSL_VERSION_PTEXT " part of " OPENSSL_VERSION_TEXT - -/*- - * The macros below are to be used for shared library (.so, .dll, ...) - * versioning. That kind of versioning works a bit differently between - * operating systems. The most usual scheme is to set a major and a minor - * number, and have the runtime loader check that the major number is equal - * to what it was at application link time, while the minor number has to - * be greater or equal to what it was at application link time. With this - * scheme, the version number is usually part of the file name, like this: - * - * libcrypto.so.0.9 - * - * Some unixen also make a softlink with the major verson number only: - * - * libcrypto.so.0 - * - * On Tru64 and IRIX 6.x it works a little bit differently. There, the - * shared library version is stored in the file, and is actually a series - * of versions, separated by colons. The rightmost version present in the - * library when linking an application is stored in the application to be - * matched at run time. When the application is run, a check is done to - * see if the library version stored in the application matches any of the - * versions in the version string of the library itself. - * This version string can be constructed in any way, depending on what - * kind of matching is desired. However, to implement the same scheme as - * the one used in the other unixen, all compatible versions, from lowest - * to highest, should be part of the string. Consecutive builds would - * give the following versions strings: - * - * 3.0 - * 3.0:3.1 - * 3.0:3.1:3.2 - * 4.0 - * 4.0:4.1 - * - * Notice how version 4 is completely incompatible with version, and - * therefore give the breach you can see. - * - * There may be other schemes as well that I haven't yet discovered. - * - * So, here's the way it works here: first of all, the library version - * number doesn't need at all to match the overall OpenSSL version. - * However, it's nice and more understandable if it actually does. - * The current library version is stored in the macro SHLIB_VERSION_NUMBER, - * which is just a piece of text in the format "M.m.e" (Major, minor, edit). - * For the sake of Tru64, IRIX, and any other OS that behaves in similar ways, - * we need to keep a history of version numbers, which is done in the - * macro SHLIB_VERSION_HISTORY. The numbers are separated by colons and - * should only keep the versions that are binary compatible with the current. - */ -# define SHLIB_VERSION_HISTORY "" -# define SHLIB_VERSION_NUMBER "1.0.0" - - -#ifdef __cplusplus -} -#endif -#endif /* HEADER_OPENSSLV_H */ diff --git a/ext/openssl-win32/inc32/openssl/ossl_typ.h b/ext/openssl-win32/inc32/openssl/ossl_typ.h deleted file mode 100644 index 9144ea2c..00000000 --- a/ext/openssl-win32/inc32/openssl/ossl_typ.h +++ /dev/null @@ -1,211 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1998-2001 The OpenSSL Project. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. All advertising materials mentioning features or use of this - * software must display the following acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" - * - * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * openssl-core@openssl.org. - * - * 5. Products derived from this software may not be called "OpenSSL" - * nor may "OpenSSL" appear in their names without prior written - * permission of the OpenSSL Project. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit (http://www.openssl.org/)" - * - * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY - * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * ==================================================================== - * - * This product includes cryptographic software written by Eric Young - * (eay@cryptsoft.com). This product includes software written by Tim - * Hudson (tjh@cryptsoft.com). - * - */ - -#ifndef HEADER_OPENSSL_TYPES_H -# define HEADER_OPENSSL_TYPES_H - -#ifdef __cplusplus -extern "C" { -#endif - -# include - -# ifdef NO_ASN1_TYPEDEFS -# define ASN1_INTEGER ASN1_STRING -# define ASN1_ENUMERATED ASN1_STRING -# define ASN1_BIT_STRING ASN1_STRING -# define ASN1_OCTET_STRING ASN1_STRING -# define ASN1_PRINTABLESTRING ASN1_STRING -# define ASN1_T61STRING ASN1_STRING -# define ASN1_IA5STRING ASN1_STRING -# define ASN1_UTCTIME ASN1_STRING -# define ASN1_GENERALIZEDTIME ASN1_STRING -# define ASN1_TIME ASN1_STRING -# define ASN1_GENERALSTRING ASN1_STRING -# define ASN1_UNIVERSALSTRING ASN1_STRING -# define ASN1_BMPSTRING ASN1_STRING -# define ASN1_VISIBLESTRING ASN1_STRING -# define ASN1_UTF8STRING ASN1_STRING -# define ASN1_BOOLEAN int -# define ASN1_NULL int -# else -typedef struct asn1_string_st ASN1_INTEGER; -typedef struct asn1_string_st ASN1_ENUMERATED; -typedef struct asn1_string_st ASN1_BIT_STRING; -typedef struct asn1_string_st ASN1_OCTET_STRING; -typedef struct asn1_string_st ASN1_PRINTABLESTRING; -typedef struct asn1_string_st ASN1_T61STRING; -typedef struct asn1_string_st ASN1_IA5STRING; -typedef struct asn1_string_st ASN1_GENERALSTRING; -typedef struct asn1_string_st ASN1_UNIVERSALSTRING; -typedef struct asn1_string_st ASN1_BMPSTRING; -typedef struct asn1_string_st ASN1_UTCTIME; -typedef struct asn1_string_st ASN1_TIME; -typedef struct asn1_string_st ASN1_GENERALIZEDTIME; -typedef struct asn1_string_st ASN1_VISIBLESTRING; -typedef struct asn1_string_st ASN1_UTF8STRING; -typedef struct asn1_string_st ASN1_STRING; -typedef int ASN1_BOOLEAN; -typedef int ASN1_NULL; -# endif - -typedef struct asn1_object_st ASN1_OBJECT; - -typedef struct ASN1_ITEM_st ASN1_ITEM; -typedef struct asn1_pctx_st ASN1_PCTX; - -# ifdef OPENSSL_SYS_WIN32 -# undef X509_NAME -# undef X509_EXTENSIONS -# undef X509_CERT_PAIR -# undef PKCS7_ISSUER_AND_SERIAL -# undef OCSP_REQUEST -# undef OCSP_RESPONSE -# endif - -# ifdef BIGNUM -# undef BIGNUM -# endif -typedef struct bignum_st BIGNUM; -typedef struct bignum_ctx BN_CTX; -typedef struct bn_blinding_st BN_BLINDING; -typedef struct bn_mont_ctx_st BN_MONT_CTX; -typedef struct bn_recp_ctx_st BN_RECP_CTX; -typedef struct bn_gencb_st BN_GENCB; - -typedef struct buf_mem_st BUF_MEM; - -typedef struct evp_cipher_st EVP_CIPHER; -typedef struct evp_cipher_ctx_st EVP_CIPHER_CTX; -typedef struct env_md_st EVP_MD; -typedef struct env_md_ctx_st EVP_MD_CTX; -typedef struct evp_pkey_st EVP_PKEY; - -typedef struct evp_pkey_asn1_method_st EVP_PKEY_ASN1_METHOD; - -typedef struct evp_pkey_method_st EVP_PKEY_METHOD; -typedef struct evp_pkey_ctx_st EVP_PKEY_CTX; - -typedef struct dh_st DH; -typedef struct dh_method DH_METHOD; - -typedef struct dsa_st DSA; -typedef struct dsa_method DSA_METHOD; - -typedef struct rsa_st RSA; -typedef struct rsa_meth_st RSA_METHOD; - -typedef struct rand_meth_st RAND_METHOD; - -typedef struct ecdh_method ECDH_METHOD; -typedef struct ecdsa_method ECDSA_METHOD; - -typedef struct x509_st X509; -typedef struct X509_algor_st X509_ALGOR; -typedef struct X509_crl_st X509_CRL; -typedef struct x509_crl_method_st X509_CRL_METHOD; -typedef struct x509_revoked_st X509_REVOKED; -typedef struct X509_name_st X509_NAME; -typedef struct X509_pubkey_st X509_PUBKEY; -typedef struct x509_store_st X509_STORE; -typedef struct x509_store_ctx_st X509_STORE_CTX; - -typedef struct pkcs8_priv_key_info_st PKCS8_PRIV_KEY_INFO; - -typedef struct v3_ext_ctx X509V3_CTX; -typedef struct conf_st CONF; - -typedef struct store_st STORE; -typedef struct store_method_st STORE_METHOD; - -typedef struct ui_st UI; -typedef struct ui_method_st UI_METHOD; - -typedef struct st_ERR_FNS ERR_FNS; - -typedef struct engine_st ENGINE; -typedef struct ssl_st SSL; -typedef struct ssl_ctx_st SSL_CTX; - -typedef struct X509_POLICY_NODE_st X509_POLICY_NODE; -typedef struct X509_POLICY_LEVEL_st X509_POLICY_LEVEL; -typedef struct X509_POLICY_TREE_st X509_POLICY_TREE; -typedef struct X509_POLICY_CACHE_st X509_POLICY_CACHE; - -typedef struct AUTHORITY_KEYID_st AUTHORITY_KEYID; -typedef struct DIST_POINT_st DIST_POINT; -typedef struct ISSUING_DIST_POINT_st ISSUING_DIST_POINT; -typedef struct NAME_CONSTRAINTS_st NAME_CONSTRAINTS; - - /* If placed in pkcs12.h, we end up with a circular depency with pkcs7.h */ -# define DECLARE_PKCS12_STACK_OF(type)/* Nothing */ -# define IMPLEMENT_PKCS12_STACK_OF(type)/* Nothing */ - -typedef struct crypto_ex_data_st CRYPTO_EX_DATA; -/* Callback types for crypto.h */ -typedef int CRYPTO_EX_new (void *parent, void *ptr, CRYPTO_EX_DATA *ad, - int idx, long argl, void *argp); -typedef void CRYPTO_EX_free (void *parent, void *ptr, CRYPTO_EX_DATA *ad, - int idx, long argl, void *argp); -typedef int CRYPTO_EX_dup (CRYPTO_EX_DATA *to, CRYPTO_EX_DATA *from, - void *from_d, int idx, long argl, void *argp); - -typedef struct ocsp_req_ctx_st OCSP_REQ_CTX; -typedef struct ocsp_response_st OCSP_RESPONSE; -typedef struct ocsp_responder_id_st OCSP_RESPID; - -#ifdef __cplusplus -} -#endif -#endif /* def HEADER_OPENSSL_TYPES_H */ diff --git a/ext/openssl-win32/inc32/openssl/pem.h b/ext/openssl-win32/inc32/openssl/pem.h deleted file mode 100644 index d3b23fc9..00000000 --- a/ext/openssl-win32/inc32/openssl/pem.h +++ /dev/null @@ -1,615 +0,0 @@ -/* crypto/pem/pem.h */ -/* Copyright (C) 1995-1997 Eric Young (eay@cryptsoft.com) - * All rights reserved. - * - * This package is an SSL implementation written - * by Eric Young (eay@cryptsoft.com). - * The implementation was written so as to conform with Netscapes SSL. - * - * This library is free for commercial and non-commercial use as long as - * the following conditions are aheared to. The following conditions - * apply to all code found in this distribution, be it the RC4, RSA, - * lhash, DES, etc., code; not just the SSL code. The SSL documentation - * included with this distribution is covered by the same copyright terms - * except that the holder is Tim Hudson (tjh@cryptsoft.com). - * - * Copyright remains Eric Young's, and as such any Copyright notices in - * the code are not to be removed. - * If this package is used in a product, Eric Young should be given attribution - * as the author of the parts of the library used. - * This can be in the form of a textual message at program startup or - * in documentation (online or textual) provided with the package. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * "This product includes cryptographic software written by - * Eric Young (eay@cryptsoft.com)" - * The word 'cryptographic' can be left out if the rouines from the library - * being used are not cryptographic related :-). - * 4. If you include any Windows specific code (or a derivative thereof) from - * the apps directory (application code) you must include an acknowledgement: - * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" - * - * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * The licence and distribution terms for any publically available version or - * derivative of this code cannot be changed. i.e. this code cannot simply be - * copied and put under another distribution licence - * [including the GNU Public Licence.] - */ - -#ifndef HEADER_PEM_H -# define HEADER_PEM_H - -# include -# ifndef OPENSSL_NO_BIO -# include -# endif -# ifndef OPENSSL_NO_STACK -# include -# endif -# include -# include -# include - -#ifdef __cplusplus -extern "C" { -#endif - -# define PEM_BUFSIZE 1024 - -# define PEM_OBJ_UNDEF 0 -# define PEM_OBJ_X509 1 -# define PEM_OBJ_X509_REQ 2 -# define PEM_OBJ_CRL 3 -# define PEM_OBJ_SSL_SESSION 4 -# define PEM_OBJ_PRIV_KEY 10 -# define PEM_OBJ_PRIV_RSA 11 -# define PEM_OBJ_PRIV_DSA 12 -# define PEM_OBJ_PRIV_DH 13 -# define PEM_OBJ_PUB_RSA 14 -# define PEM_OBJ_PUB_DSA 15 -# define PEM_OBJ_PUB_DH 16 -# define PEM_OBJ_DHPARAMS 17 -# define PEM_OBJ_DSAPARAMS 18 -# define PEM_OBJ_PRIV_RSA_PUBLIC 19 -# define PEM_OBJ_PRIV_ECDSA 20 -# define PEM_OBJ_PUB_ECDSA 21 -# define PEM_OBJ_ECPARAMETERS 22 - -# define PEM_ERROR 30 -# define PEM_DEK_DES_CBC 40 -# define PEM_DEK_IDEA_CBC 45 -# define PEM_DEK_DES_EDE 50 -# define PEM_DEK_DES_ECB 60 -# define PEM_DEK_RSA 70 -# define PEM_DEK_RSA_MD2 80 -# define PEM_DEK_RSA_MD5 90 - -# define PEM_MD_MD2 NID_md2 -# define PEM_MD_MD5 NID_md5 -# define PEM_MD_SHA NID_sha -# define PEM_MD_MD2_RSA NID_md2WithRSAEncryption -# define PEM_MD_MD5_RSA NID_md5WithRSAEncryption -# define PEM_MD_SHA_RSA NID_sha1WithRSAEncryption - -# define PEM_STRING_X509_OLD "X509 CERTIFICATE" -# define PEM_STRING_X509 "CERTIFICATE" -# define PEM_STRING_X509_PAIR "CERTIFICATE PAIR" -# define PEM_STRING_X509_TRUSTED "TRUSTED CERTIFICATE" -# define PEM_STRING_X509_REQ_OLD "NEW CERTIFICATE REQUEST" -# define PEM_STRING_X509_REQ "CERTIFICATE REQUEST" -# define PEM_STRING_X509_CRL "X509 CRL" -# define PEM_STRING_EVP_PKEY "ANY PRIVATE KEY" -# define PEM_STRING_PUBLIC "PUBLIC KEY" -# define PEM_STRING_RSA "RSA PRIVATE KEY" -# define PEM_STRING_RSA_PUBLIC "RSA PUBLIC KEY" -# define PEM_STRING_DSA "DSA PRIVATE KEY" -# define PEM_STRING_DSA_PUBLIC "DSA PUBLIC KEY" -# define PEM_STRING_PKCS7 "PKCS7" -# define PEM_STRING_PKCS7_SIGNED "PKCS #7 SIGNED DATA" -# define PEM_STRING_PKCS8 "ENCRYPTED PRIVATE KEY" -# define PEM_STRING_PKCS8INF "PRIVATE KEY" -# define PEM_STRING_DHPARAMS "DH PARAMETERS" -# define PEM_STRING_DHXPARAMS "X9.42 DH PARAMETERS" -# define PEM_STRING_SSL_SESSION "SSL SESSION PARAMETERS" -# define PEM_STRING_DSAPARAMS "DSA PARAMETERS" -# define PEM_STRING_ECDSA_PUBLIC "ECDSA PUBLIC KEY" -# define PEM_STRING_ECPARAMETERS "EC PARAMETERS" -# define PEM_STRING_ECPRIVATEKEY "EC PRIVATE KEY" -# define PEM_STRING_PARAMETERS "PARAMETERS" -# define PEM_STRING_CMS "CMS" - - /* - * Note that this structure is initialised by PEM_SealInit and cleaned up - * by PEM_SealFinal (at least for now) - */ -typedef struct PEM_Encode_Seal_st { - EVP_ENCODE_CTX encode; - EVP_MD_CTX md; - EVP_CIPHER_CTX cipher; -} PEM_ENCODE_SEAL_CTX; - -/* enc_type is one off */ -# define PEM_TYPE_ENCRYPTED 10 -# define PEM_TYPE_MIC_ONLY 20 -# define PEM_TYPE_MIC_CLEAR 30 -# define PEM_TYPE_CLEAR 40 - -typedef struct pem_recip_st { - char *name; - X509_NAME *dn; - int cipher; - int key_enc; - /* char iv[8]; unused and wrong size */ -} PEM_USER; - -typedef struct pem_ctx_st { - int type; /* what type of object */ - struct { - int version; - int mode; - } proc_type; - - char *domain; - - struct { - int cipher; - /*- - unused, and wrong size - unsigned char iv[8]; */ - } DEK_info; - - PEM_USER *originator; - - int num_recipient; - PEM_USER **recipient; -/*- - XXX(ben): don#t think this is used! - STACK *x509_chain; / * certificate chain */ - EVP_MD *md; /* signature type */ - - int md_enc; /* is the md encrypted or not? */ - int md_len; /* length of md_data */ - char *md_data; /* message digest, could be pkey encrypted */ - - EVP_CIPHER *dec; /* date encryption cipher */ - int key_len; /* key length */ - unsigned char *key; /* key */ - /*- - unused, and wrong size - unsigned char iv[8]; */ - - int data_enc; /* is the data encrypted */ - int data_len; - unsigned char *data; -} PEM_CTX; - -/* - * These macros make the PEM_read/PEM_write functions easier to maintain and - * write. Now they are all implemented with either: IMPLEMENT_PEM_rw(...) or - * IMPLEMENT_PEM_rw_cb(...) - */ - -# ifdef OPENSSL_NO_FP_API - -# define IMPLEMENT_PEM_read_fp(name, type, str, asn1) /**/ -# define IMPLEMENT_PEM_write_fp(name, type, str, asn1) /**/ -# define IMPLEMENT_PEM_write_fp_const(name, type, str, asn1) /**/ -# define IMPLEMENT_PEM_write_cb_fp(name, type, str, asn1) /**/ -# define IMPLEMENT_PEM_write_cb_fp_const(name, type, str, asn1) /**/ -# else - -# define IMPLEMENT_PEM_read_fp(name, type, str, asn1) \ -type *PEM_read_##name(FILE *fp, type **x, pem_password_cb *cb, void *u)\ -{ \ -return PEM_ASN1_read((d2i_of_void *)d2i_##asn1, str,fp,(void **)x,cb,u); \ -} - -# define IMPLEMENT_PEM_write_fp(name, type, str, asn1) \ -int PEM_write_##name(FILE *fp, type *x) \ -{ \ -return PEM_ASN1_write((i2d_of_void *)i2d_##asn1,str,fp,x,NULL,NULL,0,NULL,NULL); \ -} - -# define IMPLEMENT_PEM_write_fp_const(name, type, str, asn1) \ -int PEM_write_##name(FILE *fp, const type *x) \ -{ \ -return PEM_ASN1_write((i2d_of_void *)i2d_##asn1,str,fp,(void *)x,NULL,NULL,0,NULL,NULL); \ -} - -# define IMPLEMENT_PEM_write_cb_fp(name, type, str, asn1) \ -int PEM_write_##name(FILE *fp, type *x, const EVP_CIPHER *enc, \ - unsigned char *kstr, int klen, pem_password_cb *cb, \ - void *u) \ - { \ - return PEM_ASN1_write((i2d_of_void *)i2d_##asn1,str,fp,x,enc,kstr,klen,cb,u); \ - } - -# define IMPLEMENT_PEM_write_cb_fp_const(name, type, str, asn1) \ -int PEM_write_##name(FILE *fp, type *x, const EVP_CIPHER *enc, \ - unsigned char *kstr, int klen, pem_password_cb *cb, \ - void *u) \ - { \ - return PEM_ASN1_write((i2d_of_void *)i2d_##asn1,str,fp,x,enc,kstr,klen,cb,u); \ - } - -# endif - -# define IMPLEMENT_PEM_read_bio(name, type, str, asn1) \ -type *PEM_read_bio_##name(BIO *bp, type **x, pem_password_cb *cb, void *u)\ -{ \ -return PEM_ASN1_read_bio((d2i_of_void *)d2i_##asn1, str,bp,(void **)x,cb,u); \ -} - -# define IMPLEMENT_PEM_write_bio(name, type, str, asn1) \ -int PEM_write_bio_##name(BIO *bp, type *x) \ -{ \ -return PEM_ASN1_write_bio((i2d_of_void *)i2d_##asn1,str,bp,x,NULL,NULL,0,NULL,NULL); \ -} - -# define IMPLEMENT_PEM_write_bio_const(name, type, str, asn1) \ -int PEM_write_bio_##name(BIO *bp, const type *x) \ -{ \ -return PEM_ASN1_write_bio((i2d_of_void *)i2d_##asn1,str,bp,(void *)x,NULL,NULL,0,NULL,NULL); \ -} - -# define IMPLEMENT_PEM_write_cb_bio(name, type, str, asn1) \ -int PEM_write_bio_##name(BIO *bp, type *x, const EVP_CIPHER *enc, \ - unsigned char *kstr, int klen, pem_password_cb *cb, void *u) \ - { \ - return PEM_ASN1_write_bio((i2d_of_void *)i2d_##asn1,str,bp,x,enc,kstr,klen,cb,u); \ - } - -# define IMPLEMENT_PEM_write_cb_bio_const(name, type, str, asn1) \ -int PEM_write_bio_##name(BIO *bp, type *x, const EVP_CIPHER *enc, \ - unsigned char *kstr, int klen, pem_password_cb *cb, void *u) \ - { \ - return PEM_ASN1_write_bio((i2d_of_void *)i2d_##asn1,str,bp,(void *)x,enc,kstr,klen,cb,u); \ - } - -# define IMPLEMENT_PEM_write(name, type, str, asn1) \ - IMPLEMENT_PEM_write_bio(name, type, str, asn1) \ - IMPLEMENT_PEM_write_fp(name, type, str, asn1) - -# define IMPLEMENT_PEM_write_const(name, type, str, asn1) \ - IMPLEMENT_PEM_write_bio_const(name, type, str, asn1) \ - IMPLEMENT_PEM_write_fp_const(name, type, str, asn1) - -# define IMPLEMENT_PEM_write_cb(name, type, str, asn1) \ - IMPLEMENT_PEM_write_cb_bio(name, type, str, asn1) \ - IMPLEMENT_PEM_write_cb_fp(name, type, str, asn1) - -# define IMPLEMENT_PEM_write_cb_const(name, type, str, asn1) \ - IMPLEMENT_PEM_write_cb_bio_const(name, type, str, asn1) \ - IMPLEMENT_PEM_write_cb_fp_const(name, type, str, asn1) - -# define IMPLEMENT_PEM_read(name, type, str, asn1) \ - IMPLEMENT_PEM_read_bio(name, type, str, asn1) \ - IMPLEMENT_PEM_read_fp(name, type, str, asn1) - -# define IMPLEMENT_PEM_rw(name, type, str, asn1) \ - IMPLEMENT_PEM_read(name, type, str, asn1) \ - IMPLEMENT_PEM_write(name, type, str, asn1) - -# define IMPLEMENT_PEM_rw_const(name, type, str, asn1) \ - IMPLEMENT_PEM_read(name, type, str, asn1) \ - IMPLEMENT_PEM_write_const(name, type, str, asn1) - -# define IMPLEMENT_PEM_rw_cb(name, type, str, asn1) \ - IMPLEMENT_PEM_read(name, type, str, asn1) \ - IMPLEMENT_PEM_write_cb(name, type, str, asn1) - -/* These are the same except they are for the declarations */ - -# if defined(OPENSSL_NO_FP_API) - -# define DECLARE_PEM_read_fp(name, type) /**/ -# define DECLARE_PEM_write_fp(name, type) /**/ -# define DECLARE_PEM_write_cb_fp(name, type) /**/ -# else - -# define DECLARE_PEM_read_fp(name, type) \ - type *PEM_read_##name(FILE *fp, type **x, pem_password_cb *cb, void *u); - -# define DECLARE_PEM_write_fp(name, type) \ - int PEM_write_##name(FILE *fp, type *x); - -# define DECLARE_PEM_write_fp_const(name, type) \ - int PEM_write_##name(FILE *fp, const type *x); - -# define DECLARE_PEM_write_cb_fp(name, type) \ - int PEM_write_##name(FILE *fp, type *x, const EVP_CIPHER *enc, \ - unsigned char *kstr, int klen, pem_password_cb *cb, void *u); - -# endif - -# ifndef OPENSSL_NO_BIO -# define DECLARE_PEM_read_bio(name, type) \ - type *PEM_read_bio_##name(BIO *bp, type **x, pem_password_cb *cb, void *u); - -# define DECLARE_PEM_write_bio(name, type) \ - int PEM_write_bio_##name(BIO *bp, type *x); - -# define DECLARE_PEM_write_bio_const(name, type) \ - int PEM_write_bio_##name(BIO *bp, const type *x); - -# define DECLARE_PEM_write_cb_bio(name, type) \ - int PEM_write_bio_##name(BIO *bp, type *x, const EVP_CIPHER *enc, \ - unsigned char *kstr, int klen, pem_password_cb *cb, void *u); - -# else - -# define DECLARE_PEM_read_bio(name, type) /**/ -# define DECLARE_PEM_write_bio(name, type) /**/ -# define DECLARE_PEM_write_bio_const(name, type) /**/ -# define DECLARE_PEM_write_cb_bio(name, type) /**/ -# endif -# define DECLARE_PEM_write(name, type) \ - DECLARE_PEM_write_bio(name, type) \ - DECLARE_PEM_write_fp(name, type) -# define DECLARE_PEM_write_const(name, type) \ - DECLARE_PEM_write_bio_const(name, type) \ - DECLARE_PEM_write_fp_const(name, type) -# define DECLARE_PEM_write_cb(name, type) \ - DECLARE_PEM_write_cb_bio(name, type) \ - DECLARE_PEM_write_cb_fp(name, type) -# define DECLARE_PEM_read(name, type) \ - DECLARE_PEM_read_bio(name, type) \ - DECLARE_PEM_read_fp(name, type) -# define DECLARE_PEM_rw(name, type) \ - DECLARE_PEM_read(name, type) \ - DECLARE_PEM_write(name, type) -# define DECLARE_PEM_rw_const(name, type) \ - DECLARE_PEM_read(name, type) \ - DECLARE_PEM_write_const(name, type) -# define DECLARE_PEM_rw_cb(name, type) \ - DECLARE_PEM_read(name, type) \ - DECLARE_PEM_write_cb(name, type) -# if 1 -/* "userdata": new with OpenSSL 0.9.4 */ -typedef int pem_password_cb (char *buf, int size, int rwflag, void *userdata); -# else -/* OpenSSL 0.9.3, 0.9.3a */ -typedef int pem_password_cb (char *buf, int size, int rwflag); -# endif - -int PEM_get_EVP_CIPHER_INFO(char *header, EVP_CIPHER_INFO *cipher); -int PEM_do_header(EVP_CIPHER_INFO *cipher, unsigned char *data, long *len, - pem_password_cb *callback, void *u); - -# ifndef OPENSSL_NO_BIO -int PEM_read_bio(BIO *bp, char **name, char **header, - unsigned char **data, long *len); -int PEM_write_bio(BIO *bp, const char *name, const char *hdr, - const unsigned char *data, long len); -int PEM_bytes_read_bio(unsigned char **pdata, long *plen, char **pnm, - const char *name, BIO *bp, pem_password_cb *cb, - void *u); -void *PEM_ASN1_read_bio(d2i_of_void *d2i, const char *name, BIO *bp, void **x, - pem_password_cb *cb, void *u); -int PEM_ASN1_write_bio(i2d_of_void *i2d, const char *name, BIO *bp, void *x, - const EVP_CIPHER *enc, unsigned char *kstr, int klen, - pem_password_cb *cb, void *u); - -STACK_OF(X509_INFO) *PEM_X509_INFO_read_bio(BIO *bp, STACK_OF(X509_INFO) *sk, - pem_password_cb *cb, void *u); -int PEM_X509_INFO_write_bio(BIO *bp, X509_INFO *xi, EVP_CIPHER *enc, - unsigned char *kstr, int klen, - pem_password_cb *cd, void *u); -# endif - -int PEM_read(FILE *fp, char **name, char **header, - unsigned char **data, long *len); -int PEM_write(FILE *fp, const char *name, const char *hdr, - const unsigned char *data, long len); -void *PEM_ASN1_read(d2i_of_void *d2i, const char *name, FILE *fp, void **x, - pem_password_cb *cb, void *u); -int PEM_ASN1_write(i2d_of_void *i2d, const char *name, FILE *fp, - void *x, const EVP_CIPHER *enc, unsigned char *kstr, - int klen, pem_password_cb *callback, void *u); -STACK_OF(X509_INFO) *PEM_X509_INFO_read(FILE *fp, STACK_OF(X509_INFO) *sk, - pem_password_cb *cb, void *u); - -int PEM_SealInit(PEM_ENCODE_SEAL_CTX *ctx, EVP_CIPHER *type, - EVP_MD *md_type, unsigned char **ek, int *ekl, - unsigned char *iv, EVP_PKEY **pubk, int npubk); -void PEM_SealUpdate(PEM_ENCODE_SEAL_CTX *ctx, unsigned char *out, int *outl, - unsigned char *in, int inl); -int PEM_SealFinal(PEM_ENCODE_SEAL_CTX *ctx, unsigned char *sig, int *sigl, - unsigned char *out, int *outl, EVP_PKEY *priv); - -void PEM_SignInit(EVP_MD_CTX *ctx, EVP_MD *type); -void PEM_SignUpdate(EVP_MD_CTX *ctx, unsigned char *d, unsigned int cnt); -int PEM_SignFinal(EVP_MD_CTX *ctx, unsigned char *sigret, - unsigned int *siglen, EVP_PKEY *pkey); - -int PEM_def_callback(char *buf, int num, int w, void *key); -void PEM_proc_type(char *buf, int type); -void PEM_dek_info(char *buf, const char *type, int len, char *str); - -# include - -DECLARE_PEM_rw(X509, X509) -DECLARE_PEM_rw(X509_AUX, X509) -DECLARE_PEM_rw(X509_CERT_PAIR, X509_CERT_PAIR) -DECLARE_PEM_rw(X509_REQ, X509_REQ) -DECLARE_PEM_write(X509_REQ_NEW, X509_REQ) -DECLARE_PEM_rw(X509_CRL, X509_CRL) -DECLARE_PEM_rw(PKCS7, PKCS7) -DECLARE_PEM_rw(NETSCAPE_CERT_SEQUENCE, NETSCAPE_CERT_SEQUENCE) -DECLARE_PEM_rw(PKCS8, X509_SIG) -DECLARE_PEM_rw(PKCS8_PRIV_KEY_INFO, PKCS8_PRIV_KEY_INFO) -# ifndef OPENSSL_NO_RSA -DECLARE_PEM_rw_cb(RSAPrivateKey, RSA) -DECLARE_PEM_rw_const(RSAPublicKey, RSA) -DECLARE_PEM_rw(RSA_PUBKEY, RSA) -# endif -# ifndef OPENSSL_NO_DSA -DECLARE_PEM_rw_cb(DSAPrivateKey, DSA) -DECLARE_PEM_rw(DSA_PUBKEY, DSA) -DECLARE_PEM_rw_const(DSAparams, DSA) -# endif -# ifndef OPENSSL_NO_EC -DECLARE_PEM_rw_const(ECPKParameters, EC_GROUP) -DECLARE_PEM_rw_cb(ECPrivateKey, EC_KEY) -DECLARE_PEM_rw(EC_PUBKEY, EC_KEY) -# endif -# ifndef OPENSSL_NO_DH -DECLARE_PEM_rw_const(DHparams, DH) -DECLARE_PEM_write_const(DHxparams, DH) -# endif -DECLARE_PEM_rw_cb(PrivateKey, EVP_PKEY) -DECLARE_PEM_rw(PUBKEY, EVP_PKEY) - -int PEM_write_bio_PKCS8PrivateKey_nid(BIO *bp, EVP_PKEY *x, int nid, - char *kstr, int klen, - pem_password_cb *cb, void *u); -int PEM_write_bio_PKCS8PrivateKey(BIO *, EVP_PKEY *, const EVP_CIPHER *, - char *, int, pem_password_cb *, void *); -int i2d_PKCS8PrivateKey_bio(BIO *bp, EVP_PKEY *x, const EVP_CIPHER *enc, - char *kstr, int klen, - pem_password_cb *cb, void *u); -int i2d_PKCS8PrivateKey_nid_bio(BIO *bp, EVP_PKEY *x, int nid, - char *kstr, int klen, - pem_password_cb *cb, void *u); -EVP_PKEY *d2i_PKCS8PrivateKey_bio(BIO *bp, EVP_PKEY **x, pem_password_cb *cb, - void *u); - -int i2d_PKCS8PrivateKey_fp(FILE *fp, EVP_PKEY *x, const EVP_CIPHER *enc, - char *kstr, int klen, - pem_password_cb *cb, void *u); -int i2d_PKCS8PrivateKey_nid_fp(FILE *fp, EVP_PKEY *x, int nid, - char *kstr, int klen, - pem_password_cb *cb, void *u); -int PEM_write_PKCS8PrivateKey_nid(FILE *fp, EVP_PKEY *x, int nid, - char *kstr, int klen, - pem_password_cb *cb, void *u); - -EVP_PKEY *d2i_PKCS8PrivateKey_fp(FILE *fp, EVP_PKEY **x, pem_password_cb *cb, - void *u); - -int PEM_write_PKCS8PrivateKey(FILE *fp, EVP_PKEY *x, const EVP_CIPHER *enc, - char *kstr, int klen, pem_password_cb *cd, - void *u); - -EVP_PKEY *PEM_read_bio_Parameters(BIO *bp, EVP_PKEY **x); -int PEM_write_bio_Parameters(BIO *bp, EVP_PKEY *x); - -EVP_PKEY *b2i_PrivateKey(const unsigned char **in, long length); -EVP_PKEY *b2i_PublicKey(const unsigned char **in, long length); -EVP_PKEY *b2i_PrivateKey_bio(BIO *in); -EVP_PKEY *b2i_PublicKey_bio(BIO *in); -int i2b_PrivateKey_bio(BIO *out, EVP_PKEY *pk); -int i2b_PublicKey_bio(BIO *out, EVP_PKEY *pk); -# ifndef OPENSSL_NO_RC4 -EVP_PKEY *b2i_PVK_bio(BIO *in, pem_password_cb *cb, void *u); -int i2b_PVK_bio(BIO *out, EVP_PKEY *pk, int enclevel, - pem_password_cb *cb, void *u); -# endif - -/* BEGIN ERROR CODES */ -/* - * The following lines are auto generated by the script mkerr.pl. Any changes - * made after this point may be overwritten when the script is next run. - */ -void ERR_load_PEM_strings(void); - -/* Error codes for the PEM functions. */ - -/* Function codes. */ -# define PEM_F_B2I_DSS 127 -# define PEM_F_B2I_PVK_BIO 128 -# define PEM_F_B2I_RSA 129 -# define PEM_F_CHECK_BITLEN_DSA 130 -# define PEM_F_CHECK_BITLEN_RSA 131 -# define PEM_F_D2I_PKCS8PRIVATEKEY_BIO 120 -# define PEM_F_D2I_PKCS8PRIVATEKEY_FP 121 -# define PEM_F_DO_B2I 132 -# define PEM_F_DO_B2I_BIO 133 -# define PEM_F_DO_BLOB_HEADER 134 -# define PEM_F_DO_PK8PKEY 126 -# define PEM_F_DO_PK8PKEY_FP 125 -# define PEM_F_DO_PVK_BODY 135 -# define PEM_F_DO_PVK_HEADER 136 -# define PEM_F_I2B_PVK 137 -# define PEM_F_I2B_PVK_BIO 138 -# define PEM_F_LOAD_IV 101 -# define PEM_F_PEM_ASN1_READ 102 -# define PEM_F_PEM_ASN1_READ_BIO 103 -# define PEM_F_PEM_ASN1_WRITE 104 -# define PEM_F_PEM_ASN1_WRITE_BIO 105 -# define PEM_F_PEM_DEF_CALLBACK 100 -# define PEM_F_PEM_DO_HEADER 106 -# define PEM_F_PEM_F_PEM_WRITE_PKCS8PRIVATEKEY 118 -# define PEM_F_PEM_GET_EVP_CIPHER_INFO 107 -# define PEM_F_PEM_PK8PKEY 119 -# define PEM_F_PEM_READ 108 -# define PEM_F_PEM_READ_BIO 109 -# define PEM_F_PEM_READ_BIO_DHPARAMS 141 -# define PEM_F_PEM_READ_BIO_PARAMETERS 140 -# define PEM_F_PEM_READ_BIO_PRIVATEKEY 123 -# define PEM_F_PEM_READ_DHPARAMS 142 -# define PEM_F_PEM_READ_PRIVATEKEY 124 -# define PEM_F_PEM_SEALFINAL 110 -# define PEM_F_PEM_SEALINIT 111 -# define PEM_F_PEM_SIGNFINAL 112 -# define PEM_F_PEM_WRITE 113 -# define PEM_F_PEM_WRITE_BIO 114 -# define PEM_F_PEM_WRITE_PRIVATEKEY 139 -# define PEM_F_PEM_X509_INFO_READ 115 -# define PEM_F_PEM_X509_INFO_READ_BIO 116 -# define PEM_F_PEM_X509_INFO_WRITE_BIO 117 - -/* Reason codes. */ -# define PEM_R_BAD_BASE64_DECODE 100 -# define PEM_R_BAD_DECRYPT 101 -# define PEM_R_BAD_END_LINE 102 -# define PEM_R_BAD_IV_CHARS 103 -# define PEM_R_BAD_MAGIC_NUMBER 116 -# define PEM_R_BAD_PASSWORD_READ 104 -# define PEM_R_BAD_VERSION_NUMBER 117 -# define PEM_R_BIO_WRITE_FAILURE 118 -# define PEM_R_CIPHER_IS_NULL 127 -# define PEM_R_ERROR_CONVERTING_PRIVATE_KEY 115 -# define PEM_R_EXPECTING_PRIVATE_KEY_BLOB 119 -# define PEM_R_EXPECTING_PUBLIC_KEY_BLOB 120 -# define PEM_R_INCONSISTENT_HEADER 121 -# define PEM_R_KEYBLOB_HEADER_PARSE_ERROR 122 -# define PEM_R_KEYBLOB_TOO_SHORT 123 -# define PEM_R_NOT_DEK_INFO 105 -# define PEM_R_NOT_ENCRYPTED 106 -# define PEM_R_NOT_PROC_TYPE 107 -# define PEM_R_NO_START_LINE 108 -# define PEM_R_PROBLEMS_GETTING_PASSWORD 109 -# define PEM_R_PUBLIC_KEY_NO_RSA 110 -# define PEM_R_PVK_DATA_TOO_SHORT 124 -# define PEM_R_PVK_TOO_SHORT 125 -# define PEM_R_READ_KEY 111 -# define PEM_R_SHORT_HEADER 112 -# define PEM_R_UNSUPPORTED_CIPHER 113 -# define PEM_R_UNSUPPORTED_ENCRYPTION 114 -# define PEM_R_UNSUPPORTED_KEY_COMPONENTS 126 - -#ifdef __cplusplus -} -#endif -#endif diff --git a/ext/openssl-win32/inc32/openssl/pem2.h b/ext/openssl-win32/inc32/openssl/pem2.h deleted file mode 100644 index 84897d5e..00000000 --- a/ext/openssl-win32/inc32/openssl/pem2.h +++ /dev/null @@ -1,70 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The OpenSSL Project. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. All advertising materials mentioning features or use of this - * software must display the following acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" - * - * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * licensing@OpenSSL.org. - * - * 5. Products derived from this software may not be called "OpenSSL" - * nor may "OpenSSL" appear in their names without prior written - * permission of the OpenSSL Project. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" - * - * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY - * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * ==================================================================== - * - * This product includes cryptographic software written by Eric Young - * (eay@cryptsoft.com). This product includes software written by Tim - * Hudson (tjh@cryptsoft.com). - * - */ - -/* - * This header only exists to break a circular dependency between pem and err - * Ben 30 Jan 1999. - */ - -#ifdef __cplusplus -extern "C" { -#endif - -#ifndef HEADER_PEM_H -void ERR_load_PEM_strings(void); -#endif - -#ifdef __cplusplus -} -#endif diff --git a/ext/openssl-win32/inc32/openssl/pkcs7.h b/ext/openssl-win32/inc32/openssl/pkcs7.h deleted file mode 100644 index b51b3863..00000000 --- a/ext/openssl-win32/inc32/openssl/pkcs7.h +++ /dev/null @@ -1,481 +0,0 @@ -/* crypto/pkcs7/pkcs7.h */ -/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) - * All rights reserved. - * - * This package is an SSL implementation written - * by Eric Young (eay@cryptsoft.com). - * The implementation was written so as to conform with Netscapes SSL. - * - * This library is free for commercial and non-commercial use as long as - * the following conditions are aheared to. The following conditions - * apply to all code found in this distribution, be it the RC4, RSA, - * lhash, DES, etc., code; not just the SSL code. The SSL documentation - * included with this distribution is covered by the same copyright terms - * except that the holder is Tim Hudson (tjh@cryptsoft.com). - * - * Copyright remains Eric Young's, and as such any Copyright notices in - * the code are not to be removed. - * If this package is used in a product, Eric Young should be given attribution - * as the author of the parts of the library used. - * This can be in the form of a textual message at program startup or - * in documentation (online or textual) provided with the package. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * "This product includes cryptographic software written by - * Eric Young (eay@cryptsoft.com)" - * The word 'cryptographic' can be left out if the rouines from the library - * being used are not cryptographic related :-). - * 4. If you include any Windows specific code (or a derivative thereof) from - * the apps directory (application code) you must include an acknowledgement: - * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" - * - * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * The licence and distribution terms for any publically available version or - * derivative of this code cannot be changed. i.e. this code cannot simply be - * copied and put under another distribution licence - * [including the GNU Public Licence.] - */ - -#ifndef HEADER_PKCS7_H -# define HEADER_PKCS7_H - -# include -# include -# include - -# include -# include - -#ifdef __cplusplus -extern "C" { -#endif - -# ifdef OPENSSL_SYS_WIN32 -/* Under Win32 thes are defined in wincrypt.h */ -# undef PKCS7_ISSUER_AND_SERIAL -# undef PKCS7_SIGNER_INFO -# endif - -/*- -Encryption_ID DES-CBC -Digest_ID MD5 -Digest_Encryption_ID rsaEncryption -Key_Encryption_ID rsaEncryption -*/ - -typedef struct pkcs7_issuer_and_serial_st { - X509_NAME *issuer; - ASN1_INTEGER *serial; -} PKCS7_ISSUER_AND_SERIAL; - -typedef struct pkcs7_signer_info_st { - ASN1_INTEGER *version; /* version 1 */ - PKCS7_ISSUER_AND_SERIAL *issuer_and_serial; - X509_ALGOR *digest_alg; - STACK_OF(X509_ATTRIBUTE) *auth_attr; /* [ 0 ] */ - X509_ALGOR *digest_enc_alg; - ASN1_OCTET_STRING *enc_digest; - STACK_OF(X509_ATTRIBUTE) *unauth_attr; /* [ 1 ] */ - /* The private key to sign with */ - EVP_PKEY *pkey; -} PKCS7_SIGNER_INFO; - -DECLARE_STACK_OF(PKCS7_SIGNER_INFO) -DECLARE_ASN1_SET_OF(PKCS7_SIGNER_INFO) - -typedef struct pkcs7_recip_info_st { - ASN1_INTEGER *version; /* version 0 */ - PKCS7_ISSUER_AND_SERIAL *issuer_and_serial; - X509_ALGOR *key_enc_algor; - ASN1_OCTET_STRING *enc_key; - X509 *cert; /* get the pub-key from this */ -} PKCS7_RECIP_INFO; - -DECLARE_STACK_OF(PKCS7_RECIP_INFO) -DECLARE_ASN1_SET_OF(PKCS7_RECIP_INFO) - -typedef struct pkcs7_signed_st { - ASN1_INTEGER *version; /* version 1 */ - STACK_OF(X509_ALGOR) *md_algs; /* md used */ - STACK_OF(X509) *cert; /* [ 0 ] */ - STACK_OF(X509_CRL) *crl; /* [ 1 ] */ - STACK_OF(PKCS7_SIGNER_INFO) *signer_info; - struct pkcs7_st *contents; -} PKCS7_SIGNED; -/* - * The above structure is very very similar to PKCS7_SIGN_ENVELOPE. How about - * merging the two - */ - -typedef struct pkcs7_enc_content_st { - ASN1_OBJECT *content_type; - X509_ALGOR *algorithm; - ASN1_OCTET_STRING *enc_data; /* [ 0 ] */ - const EVP_CIPHER *cipher; -} PKCS7_ENC_CONTENT; - -typedef struct pkcs7_enveloped_st { - ASN1_INTEGER *version; /* version 0 */ - STACK_OF(PKCS7_RECIP_INFO) *recipientinfo; - PKCS7_ENC_CONTENT *enc_data; -} PKCS7_ENVELOPE; - -typedef struct pkcs7_signedandenveloped_st { - ASN1_INTEGER *version; /* version 1 */ - STACK_OF(X509_ALGOR) *md_algs; /* md used */ - STACK_OF(X509) *cert; /* [ 0 ] */ - STACK_OF(X509_CRL) *crl; /* [ 1 ] */ - STACK_OF(PKCS7_SIGNER_INFO) *signer_info; - PKCS7_ENC_CONTENT *enc_data; - STACK_OF(PKCS7_RECIP_INFO) *recipientinfo; -} PKCS7_SIGN_ENVELOPE; - -typedef struct pkcs7_digest_st { - ASN1_INTEGER *version; /* version 0 */ - X509_ALGOR *md; /* md used */ - struct pkcs7_st *contents; - ASN1_OCTET_STRING *digest; -} PKCS7_DIGEST; - -typedef struct pkcs7_encrypted_st { - ASN1_INTEGER *version; /* version 0 */ - PKCS7_ENC_CONTENT *enc_data; -} PKCS7_ENCRYPT; - -typedef struct pkcs7_st { - /* - * The following is non NULL if it contains ASN1 encoding of this - * structure - */ - unsigned char *asn1; - long length; -# define PKCS7_S_HEADER 0 -# define PKCS7_S_BODY 1 -# define PKCS7_S_TAIL 2 - int state; /* used during processing */ - int detached; - ASN1_OBJECT *type; - /* content as defined by the type */ - /* - * all encryption/message digests are applied to the 'contents', leaving - * out the 'type' field. - */ - union { - char *ptr; - /* NID_pkcs7_data */ - ASN1_OCTET_STRING *data; - /* NID_pkcs7_signed */ - PKCS7_SIGNED *sign; - /* NID_pkcs7_enveloped */ - PKCS7_ENVELOPE *enveloped; - /* NID_pkcs7_signedAndEnveloped */ - PKCS7_SIGN_ENVELOPE *signed_and_enveloped; - /* NID_pkcs7_digest */ - PKCS7_DIGEST *digest; - /* NID_pkcs7_encrypted */ - PKCS7_ENCRYPT *encrypted; - /* Anything else */ - ASN1_TYPE *other; - } d; -} PKCS7; - -DECLARE_STACK_OF(PKCS7) -DECLARE_ASN1_SET_OF(PKCS7) -DECLARE_PKCS12_STACK_OF(PKCS7) - -# define PKCS7_OP_SET_DETACHED_SIGNATURE 1 -# define PKCS7_OP_GET_DETACHED_SIGNATURE 2 - -# define PKCS7_get_signed_attributes(si) ((si)->auth_attr) -# define PKCS7_get_attributes(si) ((si)->unauth_attr) - -# define PKCS7_type_is_signed(a) (OBJ_obj2nid((a)->type) == NID_pkcs7_signed) -# define PKCS7_type_is_encrypted(a) (OBJ_obj2nid((a)->type) == NID_pkcs7_encrypted) -# define PKCS7_type_is_enveloped(a) (OBJ_obj2nid((a)->type) == NID_pkcs7_enveloped) -# define PKCS7_type_is_signedAndEnveloped(a) \ - (OBJ_obj2nid((a)->type) == NID_pkcs7_signedAndEnveloped) -# define PKCS7_type_is_data(a) (OBJ_obj2nid((a)->type) == NID_pkcs7_data) -# define PKCS7_type_is_digest(a) (OBJ_obj2nid((a)->type) == NID_pkcs7_digest) - -# define PKCS7_set_detached(p,v) \ - PKCS7_ctrl(p,PKCS7_OP_SET_DETACHED_SIGNATURE,v,NULL) -# define PKCS7_get_detached(p) \ - PKCS7_ctrl(p,PKCS7_OP_GET_DETACHED_SIGNATURE,0,NULL) - -# define PKCS7_is_detached(p7) (PKCS7_type_is_signed(p7) && PKCS7_get_detached(p7)) - -/* S/MIME related flags */ - -# define PKCS7_TEXT 0x1 -# define PKCS7_NOCERTS 0x2 -# define PKCS7_NOSIGS 0x4 -# define PKCS7_NOCHAIN 0x8 -# define PKCS7_NOINTERN 0x10 -# define PKCS7_NOVERIFY 0x20 -# define PKCS7_DETACHED 0x40 -# define PKCS7_BINARY 0x80 -# define PKCS7_NOATTR 0x100 -# define PKCS7_NOSMIMECAP 0x200 -# define PKCS7_NOOLDMIMETYPE 0x400 -# define PKCS7_CRLFEOL 0x800 -# define PKCS7_STREAM 0x1000 -# define PKCS7_NOCRL 0x2000 -# define PKCS7_PARTIAL 0x4000 -# define PKCS7_REUSE_DIGEST 0x8000 - -/* Flags: for compatibility with older code */ - -# define SMIME_TEXT PKCS7_TEXT -# define SMIME_NOCERTS PKCS7_NOCERTS -# define SMIME_NOSIGS PKCS7_NOSIGS -# define SMIME_NOCHAIN PKCS7_NOCHAIN -# define SMIME_NOINTERN PKCS7_NOINTERN -# define SMIME_NOVERIFY PKCS7_NOVERIFY -# define SMIME_DETACHED PKCS7_DETACHED -# define SMIME_BINARY PKCS7_BINARY -# define SMIME_NOATTR PKCS7_NOATTR - -DECLARE_ASN1_FUNCTIONS(PKCS7_ISSUER_AND_SERIAL) - -int PKCS7_ISSUER_AND_SERIAL_digest(PKCS7_ISSUER_AND_SERIAL *data, - const EVP_MD *type, unsigned char *md, - unsigned int *len); -# ifndef OPENSSL_NO_FP_API -PKCS7 *d2i_PKCS7_fp(FILE *fp, PKCS7 **p7); -int i2d_PKCS7_fp(FILE *fp, PKCS7 *p7); -# endif -PKCS7 *PKCS7_dup(PKCS7 *p7); -PKCS7 *d2i_PKCS7_bio(BIO *bp, PKCS7 **p7); -int i2d_PKCS7_bio(BIO *bp, PKCS7 *p7); -int i2d_PKCS7_bio_stream(BIO *out, PKCS7 *p7, BIO *in, int flags); -int PEM_write_bio_PKCS7_stream(BIO *out, PKCS7 *p7, BIO *in, int flags); - -DECLARE_ASN1_FUNCTIONS(PKCS7_SIGNER_INFO) -DECLARE_ASN1_FUNCTIONS(PKCS7_RECIP_INFO) -DECLARE_ASN1_FUNCTIONS(PKCS7_SIGNED) -DECLARE_ASN1_FUNCTIONS(PKCS7_ENC_CONTENT) -DECLARE_ASN1_FUNCTIONS(PKCS7_ENVELOPE) -DECLARE_ASN1_FUNCTIONS(PKCS7_SIGN_ENVELOPE) -DECLARE_ASN1_FUNCTIONS(PKCS7_DIGEST) -DECLARE_ASN1_FUNCTIONS(PKCS7_ENCRYPT) -DECLARE_ASN1_FUNCTIONS(PKCS7) - -DECLARE_ASN1_ITEM(PKCS7_ATTR_SIGN) -DECLARE_ASN1_ITEM(PKCS7_ATTR_VERIFY) - -DECLARE_ASN1_NDEF_FUNCTION(PKCS7) -DECLARE_ASN1_PRINT_FUNCTION(PKCS7) - -long PKCS7_ctrl(PKCS7 *p7, int cmd, long larg, char *parg); - -int PKCS7_set_type(PKCS7 *p7, int type); -int PKCS7_set0_type_other(PKCS7 *p7, int type, ASN1_TYPE *other); -int PKCS7_set_content(PKCS7 *p7, PKCS7 *p7_data); -int PKCS7_SIGNER_INFO_set(PKCS7_SIGNER_INFO *p7i, X509 *x509, EVP_PKEY *pkey, - const EVP_MD *dgst); -int PKCS7_SIGNER_INFO_sign(PKCS7_SIGNER_INFO *si); -int PKCS7_add_signer(PKCS7 *p7, PKCS7_SIGNER_INFO *p7i); -int PKCS7_add_certificate(PKCS7 *p7, X509 *x509); -int PKCS7_add_crl(PKCS7 *p7, X509_CRL *x509); -int PKCS7_content_new(PKCS7 *p7, int nid); -int PKCS7_dataVerify(X509_STORE *cert_store, X509_STORE_CTX *ctx, - BIO *bio, PKCS7 *p7, PKCS7_SIGNER_INFO *si); -int PKCS7_signatureVerify(BIO *bio, PKCS7 *p7, PKCS7_SIGNER_INFO *si, - X509 *x509); - -BIO *PKCS7_dataInit(PKCS7 *p7, BIO *bio); -int PKCS7_dataFinal(PKCS7 *p7, BIO *bio); -BIO *PKCS7_dataDecode(PKCS7 *p7, EVP_PKEY *pkey, BIO *in_bio, X509 *pcert); - -PKCS7_SIGNER_INFO *PKCS7_add_signature(PKCS7 *p7, X509 *x509, - EVP_PKEY *pkey, const EVP_MD *dgst); -X509 *PKCS7_cert_from_signer_info(PKCS7 *p7, PKCS7_SIGNER_INFO *si); -int PKCS7_set_digest(PKCS7 *p7, const EVP_MD *md); -STACK_OF(PKCS7_SIGNER_INFO) *PKCS7_get_signer_info(PKCS7 *p7); - -PKCS7_RECIP_INFO *PKCS7_add_recipient(PKCS7 *p7, X509 *x509); -void PKCS7_SIGNER_INFO_get0_algs(PKCS7_SIGNER_INFO *si, EVP_PKEY **pk, - X509_ALGOR **pdig, X509_ALGOR **psig); -void PKCS7_RECIP_INFO_get0_alg(PKCS7_RECIP_INFO *ri, X509_ALGOR **penc); -int PKCS7_add_recipient_info(PKCS7 *p7, PKCS7_RECIP_INFO *ri); -int PKCS7_RECIP_INFO_set(PKCS7_RECIP_INFO *p7i, X509 *x509); -int PKCS7_set_cipher(PKCS7 *p7, const EVP_CIPHER *cipher); -int PKCS7_stream(unsigned char ***boundary, PKCS7 *p7); - -PKCS7_ISSUER_AND_SERIAL *PKCS7_get_issuer_and_serial(PKCS7 *p7, int idx); -ASN1_OCTET_STRING *PKCS7_digest_from_attributes(STACK_OF(X509_ATTRIBUTE) *sk); -int PKCS7_add_signed_attribute(PKCS7_SIGNER_INFO *p7si, int nid, int type, - void *data); -int PKCS7_add_attribute(PKCS7_SIGNER_INFO *p7si, int nid, int atrtype, - void *value); -ASN1_TYPE *PKCS7_get_attribute(PKCS7_SIGNER_INFO *si, int nid); -ASN1_TYPE *PKCS7_get_signed_attribute(PKCS7_SIGNER_INFO *si, int nid); -int PKCS7_set_signed_attributes(PKCS7_SIGNER_INFO *p7si, - STACK_OF(X509_ATTRIBUTE) *sk); -int PKCS7_set_attributes(PKCS7_SIGNER_INFO *p7si, - STACK_OF(X509_ATTRIBUTE) *sk); - -PKCS7 *PKCS7_sign(X509 *signcert, EVP_PKEY *pkey, STACK_OF(X509) *certs, - BIO *data, int flags); - -PKCS7_SIGNER_INFO *PKCS7_sign_add_signer(PKCS7 *p7, - X509 *signcert, EVP_PKEY *pkey, - const EVP_MD *md, int flags); - -int PKCS7_final(PKCS7 *p7, BIO *data, int flags); -int PKCS7_verify(PKCS7 *p7, STACK_OF(X509) *certs, X509_STORE *store, - BIO *indata, BIO *out, int flags); -STACK_OF(X509) *PKCS7_get0_signers(PKCS7 *p7, STACK_OF(X509) *certs, - int flags); -PKCS7 *PKCS7_encrypt(STACK_OF(X509) *certs, BIO *in, const EVP_CIPHER *cipher, - int flags); -int PKCS7_decrypt(PKCS7 *p7, EVP_PKEY *pkey, X509 *cert, BIO *data, - int flags); - -int PKCS7_add_attrib_smimecap(PKCS7_SIGNER_INFO *si, - STACK_OF(X509_ALGOR) *cap); -STACK_OF(X509_ALGOR) *PKCS7_get_smimecap(PKCS7_SIGNER_INFO *si); -int PKCS7_simple_smimecap(STACK_OF(X509_ALGOR) *sk, int nid, int arg); - -int PKCS7_add_attrib_content_type(PKCS7_SIGNER_INFO *si, ASN1_OBJECT *coid); -int PKCS7_add0_attrib_signing_time(PKCS7_SIGNER_INFO *si, ASN1_TIME *t); -int PKCS7_add1_attrib_digest(PKCS7_SIGNER_INFO *si, - const unsigned char *md, int mdlen); - -int SMIME_write_PKCS7(BIO *bio, PKCS7 *p7, BIO *data, int flags); -PKCS7 *SMIME_read_PKCS7(BIO *bio, BIO **bcont); - -BIO *BIO_new_PKCS7(BIO *out, PKCS7 *p7); - -/* BEGIN ERROR CODES */ -/* - * The following lines are auto generated by the script mkerr.pl. Any changes - * made after this point may be overwritten when the script is next run. - */ -void ERR_load_PKCS7_strings(void); - -/* Error codes for the PKCS7 functions. */ - -/* Function codes. */ -# define PKCS7_F_B64_READ_PKCS7 120 -# define PKCS7_F_B64_WRITE_PKCS7 121 -# define PKCS7_F_DO_PKCS7_SIGNED_ATTRIB 136 -# define PKCS7_F_I2D_PKCS7_BIO_STREAM 140 -# define PKCS7_F_PKCS7_ADD0_ATTRIB_SIGNING_TIME 135 -# define PKCS7_F_PKCS7_ADD_ATTRIB_SMIMECAP 118 -# define PKCS7_F_PKCS7_ADD_CERTIFICATE 100 -# define PKCS7_F_PKCS7_ADD_CRL 101 -# define PKCS7_F_PKCS7_ADD_RECIPIENT_INFO 102 -# define PKCS7_F_PKCS7_ADD_SIGNATURE 131 -# define PKCS7_F_PKCS7_ADD_SIGNER 103 -# define PKCS7_F_PKCS7_BIO_ADD_DIGEST 125 -# define PKCS7_F_PKCS7_COPY_EXISTING_DIGEST 138 -# define PKCS7_F_PKCS7_CTRL 104 -# define PKCS7_F_PKCS7_DATADECODE 112 -# define PKCS7_F_PKCS7_DATAFINAL 128 -# define PKCS7_F_PKCS7_DATAINIT 105 -# define PKCS7_F_PKCS7_DATASIGN 106 -# define PKCS7_F_PKCS7_DATAVERIFY 107 -# define PKCS7_F_PKCS7_DECRYPT 114 -# define PKCS7_F_PKCS7_DECRYPT_RINFO 133 -# define PKCS7_F_PKCS7_ENCODE_RINFO 132 -# define PKCS7_F_PKCS7_ENCRYPT 115 -# define PKCS7_F_PKCS7_FINAL 134 -# define PKCS7_F_PKCS7_FIND_DIGEST 127 -# define PKCS7_F_PKCS7_GET0_SIGNERS 124 -# define PKCS7_F_PKCS7_RECIP_INFO_SET 130 -# define PKCS7_F_PKCS7_SET_CIPHER 108 -# define PKCS7_F_PKCS7_SET_CONTENT 109 -# define PKCS7_F_PKCS7_SET_DIGEST 126 -# define PKCS7_F_PKCS7_SET_TYPE 110 -# define PKCS7_F_PKCS7_SIGN 116 -# define PKCS7_F_PKCS7_SIGNATUREVERIFY 113 -# define PKCS7_F_PKCS7_SIGNER_INFO_SET 129 -# define PKCS7_F_PKCS7_SIGNER_INFO_SIGN 139 -# define PKCS7_F_PKCS7_SIGN_ADD_SIGNER 137 -# define PKCS7_F_PKCS7_SIMPLE_SMIMECAP 119 -# define PKCS7_F_PKCS7_VERIFY 117 -# define PKCS7_F_SMIME_READ_PKCS7 122 -# define PKCS7_F_SMIME_TEXT 123 - -/* Reason codes. */ -# define PKCS7_R_CERTIFICATE_VERIFY_ERROR 117 -# define PKCS7_R_CIPHER_HAS_NO_OBJECT_IDENTIFIER 144 -# define PKCS7_R_CIPHER_NOT_INITIALIZED 116 -# define PKCS7_R_CONTENT_AND_DATA_PRESENT 118 -# define PKCS7_R_CTRL_ERROR 152 -# define PKCS7_R_DECODE_ERROR 130 -# define PKCS7_R_DECRYPTED_KEY_IS_WRONG_LENGTH 100 -# define PKCS7_R_DECRYPT_ERROR 119 -# define PKCS7_R_DIGEST_FAILURE 101 -# define PKCS7_R_ENCRYPTION_CTRL_FAILURE 149 -# define PKCS7_R_ENCRYPTION_NOT_SUPPORTED_FOR_THIS_KEY_TYPE 150 -# define PKCS7_R_ERROR_ADDING_RECIPIENT 120 -# define PKCS7_R_ERROR_SETTING_CIPHER 121 -# define PKCS7_R_INVALID_MIME_TYPE 131 -# define PKCS7_R_INVALID_NULL_POINTER 143 -# define PKCS7_R_INVALID_SIGNED_DATA_TYPE 155 -# define PKCS7_R_MIME_NO_CONTENT_TYPE 132 -# define PKCS7_R_MIME_PARSE_ERROR 133 -# define PKCS7_R_MIME_SIG_PARSE_ERROR 134 -# define PKCS7_R_MISSING_CERIPEND_INFO 103 -# define PKCS7_R_NO_CONTENT 122 -# define PKCS7_R_NO_CONTENT_TYPE 135 -# define PKCS7_R_NO_DEFAULT_DIGEST 151 -# define PKCS7_R_NO_MATCHING_DIGEST_TYPE_FOUND 154 -# define PKCS7_R_NO_MULTIPART_BODY_FAILURE 136 -# define PKCS7_R_NO_MULTIPART_BOUNDARY 137 -# define PKCS7_R_NO_RECIPIENT_MATCHES_CERTIFICATE 115 -# define PKCS7_R_NO_RECIPIENT_MATCHES_KEY 146 -# define PKCS7_R_NO_SIGNATURES_ON_DATA 123 -# define PKCS7_R_NO_SIGNERS 142 -# define PKCS7_R_NO_SIG_CONTENT_TYPE 138 -# define PKCS7_R_OPERATION_NOT_SUPPORTED_ON_THIS_TYPE 104 -# define PKCS7_R_PKCS7_ADD_SIGNATURE_ERROR 124 -# define PKCS7_R_PKCS7_ADD_SIGNER_ERROR 153 -# define PKCS7_R_PKCS7_DATAFINAL 126 -# define PKCS7_R_PKCS7_DATAFINAL_ERROR 125 -# define PKCS7_R_PKCS7_DATASIGN 145 -# define PKCS7_R_PKCS7_PARSE_ERROR 139 -# define PKCS7_R_PKCS7_SIG_PARSE_ERROR 140 -# define PKCS7_R_PRIVATE_KEY_DOES_NOT_MATCH_CERTIFICATE 127 -# define PKCS7_R_SIGNATURE_FAILURE 105 -# define PKCS7_R_SIGNER_CERTIFICATE_NOT_FOUND 128 -# define PKCS7_R_SIGNING_CTRL_FAILURE 147 -# define PKCS7_R_SIGNING_NOT_SUPPORTED_FOR_THIS_KEY_TYPE 148 -# define PKCS7_R_SIG_INVALID_MIME_TYPE 141 -# define PKCS7_R_SMIME_TEXT_ERROR 129 -# define PKCS7_R_UNABLE_TO_FIND_CERTIFICATE 106 -# define PKCS7_R_UNABLE_TO_FIND_MEM_BIO 107 -# define PKCS7_R_UNABLE_TO_FIND_MESSAGE_DIGEST 108 -# define PKCS7_R_UNKNOWN_DIGEST_TYPE 109 -# define PKCS7_R_UNKNOWN_OPERATION 110 -# define PKCS7_R_UNSUPPORTED_CIPHER_TYPE 111 -# define PKCS7_R_UNSUPPORTED_CONTENT_TYPE 112 -# define PKCS7_R_WRONG_CONTENT_TYPE 113 -# define PKCS7_R_WRONG_PKCS7_TYPE 114 - -#ifdef __cplusplus -} -#endif -#endif diff --git a/ext/openssl-win32/inc32/openssl/pqueue.h b/ext/openssl-win32/inc32/openssl/pqueue.h deleted file mode 100644 index d40d9c7d..00000000 --- a/ext/openssl-win32/inc32/openssl/pqueue.h +++ /dev/null @@ -1,99 +0,0 @@ -/* crypto/pqueue/pqueue.h */ -/* - * DTLS implementation written by Nagendra Modadugu - * (nagendra@cs.stanford.edu) for the OpenSSL project 2005. - */ -/* ==================================================================== - * Copyright (c) 1999-2005 The OpenSSL Project. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. All advertising materials mentioning features or use of this - * software must display the following acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" - * - * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * openssl-core@OpenSSL.org. - * - * 5. Products derived from this software may not be called "OpenSSL" - * nor may "OpenSSL" appear in their names without prior written - * permission of the OpenSSL Project. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" - * - * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY - * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * ==================================================================== - * - * This product includes cryptographic software written by Eric Young - * (eay@cryptsoft.com). This product includes software written by Tim - * Hudson (tjh@cryptsoft.com). - * - */ - -#ifndef HEADER_PQUEUE_H -# define HEADER_PQUEUE_H - -# include -# include -# include - -#ifdef __cplusplus -extern "C" { -#endif -typedef struct _pqueue *pqueue; - -typedef struct _pitem { - unsigned char priority[8]; /* 64-bit value in big-endian encoding */ - void *data; - struct _pitem *next; -} pitem; - -typedef struct _pitem *piterator; - -pitem *pitem_new(unsigned char *prio64be, void *data); -void pitem_free(pitem *item); - -pqueue pqueue_new(void); -void pqueue_free(pqueue pq); - -pitem *pqueue_insert(pqueue pq, pitem *item); -pitem *pqueue_peek(pqueue pq); -pitem *pqueue_pop(pqueue pq); -pitem *pqueue_find(pqueue pq, unsigned char *prio64be); -pitem *pqueue_iterator(pqueue pq); -pitem *pqueue_next(piterator *iter); - -void pqueue_print(pqueue pq); -int pqueue_size(pqueue pq); - -#ifdef __cplusplus -} -#endif -#endif /* ! HEADER_PQUEUE_H */ diff --git a/ext/openssl-win32/inc32/openssl/rsa.h b/ext/openssl-win32/inc32/openssl/rsa.h deleted file mode 100644 index d2ee3740..00000000 --- a/ext/openssl-win32/inc32/openssl/rsa.h +++ /dev/null @@ -1,664 +0,0 @@ -/* crypto/rsa/rsa.h */ -/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) - * All rights reserved. - * - * This package is an SSL implementation written - * by Eric Young (eay@cryptsoft.com). - * The implementation was written so as to conform with Netscapes SSL. - * - * This library is free for commercial and non-commercial use as long as - * the following conditions are aheared to. The following conditions - * apply to all code found in this distribution, be it the RC4, RSA, - * lhash, DES, etc., code; not just the SSL code. The SSL documentation - * included with this distribution is covered by the same copyright terms - * except that the holder is Tim Hudson (tjh@cryptsoft.com). - * - * Copyright remains Eric Young's, and as such any Copyright notices in - * the code are not to be removed. - * If this package is used in a product, Eric Young should be given attribution - * as the author of the parts of the library used. - * This can be in the form of a textual message at program startup or - * in documentation (online or textual) provided with the package. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * "This product includes cryptographic software written by - * Eric Young (eay@cryptsoft.com)" - * The word 'cryptographic' can be left out if the rouines from the library - * being used are not cryptographic related :-). - * 4. If you include any Windows specific code (or a derivative thereof) from - * the apps directory (application code) you must include an acknowledgement: - * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" - * - * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * The licence and distribution terms for any publically available version or - * derivative of this code cannot be changed. i.e. this code cannot simply be - * copied and put under another distribution licence - * [including the GNU Public Licence.] - */ - -#ifndef HEADER_RSA_H -# define HEADER_RSA_H - -# include - -# ifndef OPENSSL_NO_BIO -# include -# endif -# include -# include -# ifndef OPENSSL_NO_DEPRECATED -# include -# endif - -# ifdef OPENSSL_NO_RSA -# error RSA is disabled. -# endif - -#ifdef __cplusplus -extern "C" { -#endif - -/* Declared already in ossl_typ.h */ -/* typedef struct rsa_st RSA; */ -/* typedef struct rsa_meth_st RSA_METHOD; */ - -struct rsa_meth_st { - const char *name; - int (*rsa_pub_enc) (int flen, const unsigned char *from, - unsigned char *to, RSA *rsa, int padding); - int (*rsa_pub_dec) (int flen, const unsigned char *from, - unsigned char *to, RSA *rsa, int padding); - int (*rsa_priv_enc) (int flen, const unsigned char *from, - unsigned char *to, RSA *rsa, int padding); - int (*rsa_priv_dec) (int flen, const unsigned char *from, - unsigned char *to, RSA *rsa, int padding); - /* Can be null */ - int (*rsa_mod_exp) (BIGNUM *r0, const BIGNUM *I, RSA *rsa, BN_CTX *ctx); - /* Can be null */ - int (*bn_mod_exp) (BIGNUM *r, const BIGNUM *a, const BIGNUM *p, - const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx); - /* called at new */ - int (*init) (RSA *rsa); - /* called at free */ - int (*finish) (RSA *rsa); - /* RSA_METHOD_FLAG_* things */ - int flags; - /* may be needed! */ - char *app_data; - /* - * New sign and verify functions: some libraries don't allow arbitrary - * data to be signed/verified: this allows them to be used. Note: for - * this to work the RSA_public_decrypt() and RSA_private_encrypt() should - * *NOT* be used RSA_sign(), RSA_verify() should be used instead. Note: - * for backwards compatibility this functionality is only enabled if the - * RSA_FLAG_SIGN_VER option is set in 'flags'. - */ - int (*rsa_sign) (int type, - const unsigned char *m, unsigned int m_length, - unsigned char *sigret, unsigned int *siglen, - const RSA *rsa); - int (*rsa_verify) (int dtype, const unsigned char *m, - unsigned int m_length, const unsigned char *sigbuf, - unsigned int siglen, const RSA *rsa); - /* - * If this callback is NULL, the builtin software RSA key-gen will be - * used. This is for behavioural compatibility whilst the code gets - * rewired, but one day it would be nice to assume there are no such - * things as "builtin software" implementations. - */ - int (*rsa_keygen) (RSA *rsa, int bits, BIGNUM *e, BN_GENCB *cb); -}; - -struct rsa_st { - /* - * The first parameter is used to pickup errors where this is passed - * instead of aEVP_PKEY, it is set to 0 - */ - int pad; - long version; - const RSA_METHOD *meth; - /* functional reference if 'meth' is ENGINE-provided */ - ENGINE *engine; - BIGNUM *n; - BIGNUM *e; - BIGNUM *d; - BIGNUM *p; - BIGNUM *q; - BIGNUM *dmp1; - BIGNUM *dmq1; - BIGNUM *iqmp; - /* be careful using this if the RSA structure is shared */ - CRYPTO_EX_DATA ex_data; - int references; - int flags; - /* Used to cache montgomery values */ - BN_MONT_CTX *_method_mod_n; - BN_MONT_CTX *_method_mod_p; - BN_MONT_CTX *_method_mod_q; - /* - * all BIGNUM values are actually in the following data, if it is not - * NULL - */ - char *bignum_data; - BN_BLINDING *blinding; - BN_BLINDING *mt_blinding; -}; - -# ifndef OPENSSL_RSA_MAX_MODULUS_BITS -# define OPENSSL_RSA_MAX_MODULUS_BITS 16384 -# endif - -# ifndef OPENSSL_RSA_SMALL_MODULUS_BITS -# define OPENSSL_RSA_SMALL_MODULUS_BITS 3072 -# endif -# ifndef OPENSSL_RSA_MAX_PUBEXP_BITS - -/* exponent limit enforced for "large" modulus only */ -# define OPENSSL_RSA_MAX_PUBEXP_BITS 64 -# endif - -# define RSA_3 0x3L -# define RSA_F4 0x10001L - -# define RSA_METHOD_FLAG_NO_CHECK 0x0001/* don't check pub/private - * match */ - -# define RSA_FLAG_CACHE_PUBLIC 0x0002 -# define RSA_FLAG_CACHE_PRIVATE 0x0004 -# define RSA_FLAG_BLINDING 0x0008 -# define RSA_FLAG_THREAD_SAFE 0x0010 -/* - * This flag means the private key operations will be handled by rsa_mod_exp - * and that they do not depend on the private key components being present: - * for example a key stored in external hardware. Without this flag - * bn_mod_exp gets called when private key components are absent. - */ -# define RSA_FLAG_EXT_PKEY 0x0020 - -/* - * This flag in the RSA_METHOD enables the new rsa_sign, rsa_verify - * functions. - */ -# define RSA_FLAG_SIGN_VER 0x0040 - -/* - * new with 0.9.6j and 0.9.7b; the built-in - * RSA implementation now uses blinding by - * default (ignoring RSA_FLAG_BLINDING), - * but other engines might not need it - */ -# define RSA_FLAG_NO_BLINDING 0x0080 -/* - * new with 0.9.8f; the built-in RSA - * implementation now uses constant time - * operations by default in private key operations, - * e.g., constant time modular exponentiation, - * modular inverse without leaking branches, - * division without leaking branches. This - * flag disables these constant time - * operations and results in faster RSA - * private key operations. - */ -# define RSA_FLAG_NO_CONSTTIME 0x0100 -# ifdef OPENSSL_USE_DEPRECATED -/* deprecated name for the flag*/ -/* - * new with 0.9.7h; the built-in RSA - * implementation now uses constant time - * modular exponentiation for secret exponents - * by default. This flag causes the - * faster variable sliding window method to - * be used for all exponents. - */ -# define RSA_FLAG_NO_EXP_CONSTTIME RSA_FLAG_NO_CONSTTIME -# endif - -# define EVP_PKEY_CTX_set_rsa_padding(ctx, pad) \ - EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_RSA, -1, EVP_PKEY_CTRL_RSA_PADDING, \ - pad, NULL) - -# define EVP_PKEY_CTX_get_rsa_padding(ctx, ppad) \ - EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_RSA, -1, \ - EVP_PKEY_CTRL_GET_RSA_PADDING, 0, ppad) - -# define EVP_PKEY_CTX_set_rsa_pss_saltlen(ctx, len) \ - EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_RSA, \ - (EVP_PKEY_OP_SIGN|EVP_PKEY_OP_VERIFY), \ - EVP_PKEY_CTRL_RSA_PSS_SALTLEN, \ - len, NULL) - -# define EVP_PKEY_CTX_get_rsa_pss_saltlen(ctx, plen) \ - EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_RSA, \ - (EVP_PKEY_OP_SIGN|EVP_PKEY_OP_VERIFY), \ - EVP_PKEY_CTRL_GET_RSA_PSS_SALTLEN, \ - 0, plen) - -# define EVP_PKEY_CTX_set_rsa_keygen_bits(ctx, bits) \ - EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_RSA, EVP_PKEY_OP_KEYGEN, \ - EVP_PKEY_CTRL_RSA_KEYGEN_BITS, bits, NULL) - -# define EVP_PKEY_CTX_set_rsa_keygen_pubexp(ctx, pubexp) \ - EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_RSA, EVP_PKEY_OP_KEYGEN, \ - EVP_PKEY_CTRL_RSA_KEYGEN_PUBEXP, 0, pubexp) - -# define EVP_PKEY_CTX_set_rsa_mgf1_md(ctx, md) \ - EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_RSA, \ - EVP_PKEY_OP_TYPE_SIG | EVP_PKEY_OP_TYPE_CRYPT, \ - EVP_PKEY_CTRL_RSA_MGF1_MD, 0, (void *)md) - -# define EVP_PKEY_CTX_set_rsa_oaep_md(ctx, md) \ - EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_RSA, EVP_PKEY_OP_TYPE_CRYPT, \ - EVP_PKEY_CTRL_RSA_OAEP_MD, 0, (void *)md) - -# define EVP_PKEY_CTX_get_rsa_mgf1_md(ctx, pmd) \ - EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_RSA, \ - EVP_PKEY_OP_TYPE_SIG | EVP_PKEY_OP_TYPE_CRYPT, \ - EVP_PKEY_CTRL_GET_RSA_MGF1_MD, 0, (void *)pmd) - -# define EVP_PKEY_CTX_get_rsa_oaep_md(ctx, pmd) \ - EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_RSA, EVP_PKEY_OP_TYPE_CRYPT, \ - EVP_PKEY_CTRL_GET_RSA_OAEP_MD, 0, (void *)pmd) - -# define EVP_PKEY_CTX_set0_rsa_oaep_label(ctx, l, llen) \ - EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_RSA, EVP_PKEY_OP_TYPE_CRYPT, \ - EVP_PKEY_CTRL_RSA_OAEP_LABEL, llen, (void *)l) - -# define EVP_PKEY_CTX_get0_rsa_oaep_label(ctx, l) \ - EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_RSA, EVP_PKEY_OP_TYPE_CRYPT, \ - EVP_PKEY_CTRL_GET_RSA_OAEP_LABEL, 0, (void *)l) - -# define EVP_PKEY_CTRL_RSA_PADDING (EVP_PKEY_ALG_CTRL + 1) -# define EVP_PKEY_CTRL_RSA_PSS_SALTLEN (EVP_PKEY_ALG_CTRL + 2) - -# define EVP_PKEY_CTRL_RSA_KEYGEN_BITS (EVP_PKEY_ALG_CTRL + 3) -# define EVP_PKEY_CTRL_RSA_KEYGEN_PUBEXP (EVP_PKEY_ALG_CTRL + 4) -# define EVP_PKEY_CTRL_RSA_MGF1_MD (EVP_PKEY_ALG_CTRL + 5) - -# define EVP_PKEY_CTRL_GET_RSA_PADDING (EVP_PKEY_ALG_CTRL + 6) -# define EVP_PKEY_CTRL_GET_RSA_PSS_SALTLEN (EVP_PKEY_ALG_CTRL + 7) -# define EVP_PKEY_CTRL_GET_RSA_MGF1_MD (EVP_PKEY_ALG_CTRL + 8) - -# define EVP_PKEY_CTRL_RSA_OAEP_MD (EVP_PKEY_ALG_CTRL + 9) -# define EVP_PKEY_CTRL_RSA_OAEP_LABEL (EVP_PKEY_ALG_CTRL + 10) - -# define EVP_PKEY_CTRL_GET_RSA_OAEP_MD (EVP_PKEY_ALG_CTRL + 11) -# define EVP_PKEY_CTRL_GET_RSA_OAEP_LABEL (EVP_PKEY_ALG_CTRL + 12) - -# define RSA_PKCS1_PADDING 1 -# define RSA_SSLV23_PADDING 2 -# define RSA_NO_PADDING 3 -# define RSA_PKCS1_OAEP_PADDING 4 -# define RSA_X931_PADDING 5 -/* EVP_PKEY_ only */ -# define RSA_PKCS1_PSS_PADDING 6 - -# define RSA_PKCS1_PADDING_SIZE 11 - -# define RSA_set_app_data(s,arg) RSA_set_ex_data(s,0,arg) -# define RSA_get_app_data(s) RSA_get_ex_data(s,0) - -RSA *RSA_new(void); -RSA *RSA_new_method(ENGINE *engine); -int RSA_size(const RSA *rsa); - -/* Deprecated version */ -# ifndef OPENSSL_NO_DEPRECATED -RSA *RSA_generate_key(int bits, unsigned long e, void - (*callback) (int, int, void *), void *cb_arg); -# endif /* !defined(OPENSSL_NO_DEPRECATED) */ - -/* New version */ -int RSA_generate_key_ex(RSA *rsa, int bits, BIGNUM *e, BN_GENCB *cb); - -int RSA_check_key(const RSA *); - /* next 4 return -1 on error */ -int RSA_public_encrypt(int flen, const unsigned char *from, - unsigned char *to, RSA *rsa, int padding); -int RSA_private_encrypt(int flen, const unsigned char *from, - unsigned char *to, RSA *rsa, int padding); -int RSA_public_decrypt(int flen, const unsigned char *from, - unsigned char *to, RSA *rsa, int padding); -int RSA_private_decrypt(int flen, const unsigned char *from, - unsigned char *to, RSA *rsa, int padding); -void RSA_free(RSA *r); -/* "up" the RSA object's reference count */ -int RSA_up_ref(RSA *r); - -int RSA_flags(const RSA *r); - -void RSA_set_default_method(const RSA_METHOD *meth); -const RSA_METHOD *RSA_get_default_method(void); -const RSA_METHOD *RSA_get_method(const RSA *rsa); -int RSA_set_method(RSA *rsa, const RSA_METHOD *meth); - -/* This function needs the memory locking malloc callbacks to be installed */ -int RSA_memory_lock(RSA *r); - -/* these are the actual SSLeay RSA functions */ -const RSA_METHOD *RSA_PKCS1_SSLeay(void); - -const RSA_METHOD *RSA_null_method(void); - -DECLARE_ASN1_ENCODE_FUNCTIONS_const(RSA, RSAPublicKey) -DECLARE_ASN1_ENCODE_FUNCTIONS_const(RSA, RSAPrivateKey) - -typedef struct rsa_pss_params_st { - X509_ALGOR *hashAlgorithm; - X509_ALGOR *maskGenAlgorithm; - ASN1_INTEGER *saltLength; - ASN1_INTEGER *trailerField; -} RSA_PSS_PARAMS; - -DECLARE_ASN1_FUNCTIONS(RSA_PSS_PARAMS) - -typedef struct rsa_oaep_params_st { - X509_ALGOR *hashFunc; - X509_ALGOR *maskGenFunc; - X509_ALGOR *pSourceFunc; -} RSA_OAEP_PARAMS; - -DECLARE_ASN1_FUNCTIONS(RSA_OAEP_PARAMS) - -# ifndef OPENSSL_NO_FP_API -int RSA_print_fp(FILE *fp, const RSA *r, int offset); -# endif - -# ifndef OPENSSL_NO_BIO -int RSA_print(BIO *bp, const RSA *r, int offset); -# endif - -# ifndef OPENSSL_NO_RC4 -int i2d_RSA_NET(const RSA *a, unsigned char **pp, - int (*cb) (char *buf, int len, const char *prompt, - int verify), int sgckey); -RSA *d2i_RSA_NET(RSA **a, const unsigned char **pp, long length, - int (*cb) (char *buf, int len, const char *prompt, - int verify), int sgckey); - -int i2d_Netscape_RSA(const RSA *a, unsigned char **pp, - int (*cb) (char *buf, int len, const char *prompt, - int verify)); -RSA *d2i_Netscape_RSA(RSA **a, const unsigned char **pp, long length, - int (*cb) (char *buf, int len, const char *prompt, - int verify)); -# endif - -/* - * The following 2 functions sign and verify a X509_SIG ASN1 object inside - * PKCS#1 padded RSA encryption - */ -int RSA_sign(int type, const unsigned char *m, unsigned int m_length, - unsigned char *sigret, unsigned int *siglen, RSA *rsa); -int RSA_verify(int type, const unsigned char *m, unsigned int m_length, - const unsigned char *sigbuf, unsigned int siglen, RSA *rsa); - -/* - * The following 2 function sign and verify a ASN1_OCTET_STRING object inside - * PKCS#1 padded RSA encryption - */ -int RSA_sign_ASN1_OCTET_STRING(int type, - const unsigned char *m, unsigned int m_length, - unsigned char *sigret, unsigned int *siglen, - RSA *rsa); -int RSA_verify_ASN1_OCTET_STRING(int type, const unsigned char *m, - unsigned int m_length, unsigned char *sigbuf, - unsigned int siglen, RSA *rsa); - -int RSA_blinding_on(RSA *rsa, BN_CTX *ctx); -void RSA_blinding_off(RSA *rsa); -BN_BLINDING *RSA_setup_blinding(RSA *rsa, BN_CTX *ctx); - -int RSA_padding_add_PKCS1_type_1(unsigned char *to, int tlen, - const unsigned char *f, int fl); -int RSA_padding_check_PKCS1_type_1(unsigned char *to, int tlen, - const unsigned char *f, int fl, - int rsa_len); -int RSA_padding_add_PKCS1_type_2(unsigned char *to, int tlen, - const unsigned char *f, int fl); -int RSA_padding_check_PKCS1_type_2(unsigned char *to, int tlen, - const unsigned char *f, int fl, - int rsa_len); -int PKCS1_MGF1(unsigned char *mask, long len, const unsigned char *seed, - long seedlen, const EVP_MD *dgst); -int RSA_padding_add_PKCS1_OAEP(unsigned char *to, int tlen, - const unsigned char *f, int fl, - const unsigned char *p, int pl); -int RSA_padding_check_PKCS1_OAEP(unsigned char *to, int tlen, - const unsigned char *f, int fl, int rsa_len, - const unsigned char *p, int pl); -int RSA_padding_add_PKCS1_OAEP_mgf1(unsigned char *to, int tlen, - const unsigned char *from, int flen, - const unsigned char *param, int plen, - const EVP_MD *md, const EVP_MD *mgf1md); -int RSA_padding_check_PKCS1_OAEP_mgf1(unsigned char *to, int tlen, - const unsigned char *from, int flen, - int num, const unsigned char *param, - int plen, const EVP_MD *md, - const EVP_MD *mgf1md); -int RSA_padding_add_SSLv23(unsigned char *to, int tlen, - const unsigned char *f, int fl); -int RSA_padding_check_SSLv23(unsigned char *to, int tlen, - const unsigned char *f, int fl, int rsa_len); -int RSA_padding_add_none(unsigned char *to, int tlen, const unsigned char *f, - int fl); -int RSA_padding_check_none(unsigned char *to, int tlen, - const unsigned char *f, int fl, int rsa_len); -int RSA_padding_add_X931(unsigned char *to, int tlen, const unsigned char *f, - int fl); -int RSA_padding_check_X931(unsigned char *to, int tlen, - const unsigned char *f, int fl, int rsa_len); -int RSA_X931_hash_id(int nid); - -int RSA_verify_PKCS1_PSS(RSA *rsa, const unsigned char *mHash, - const EVP_MD *Hash, const unsigned char *EM, - int sLen); -int RSA_padding_add_PKCS1_PSS(RSA *rsa, unsigned char *EM, - const unsigned char *mHash, const EVP_MD *Hash, - int sLen); - -int RSA_verify_PKCS1_PSS_mgf1(RSA *rsa, const unsigned char *mHash, - const EVP_MD *Hash, const EVP_MD *mgf1Hash, - const unsigned char *EM, int sLen); - -int RSA_padding_add_PKCS1_PSS_mgf1(RSA *rsa, unsigned char *EM, - const unsigned char *mHash, - const EVP_MD *Hash, const EVP_MD *mgf1Hash, - int sLen); - -int RSA_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new *new_func, - CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func); -int RSA_set_ex_data(RSA *r, int idx, void *arg); -void *RSA_get_ex_data(const RSA *r, int idx); - -RSA *RSAPublicKey_dup(RSA *rsa); -RSA *RSAPrivateKey_dup(RSA *rsa); - -/* - * If this flag is set the RSA method is FIPS compliant and can be used in - * FIPS mode. This is set in the validated module method. If an application - * sets this flag in its own methods it is its responsibility to ensure the - * result is compliant. - */ - -# define RSA_FLAG_FIPS_METHOD 0x0400 - -/* - * If this flag is set the operations normally disabled in FIPS mode are - * permitted it is then the applications responsibility to ensure that the - * usage is compliant. - */ - -# define RSA_FLAG_NON_FIPS_ALLOW 0x0400 -/* - * Application has decided PRNG is good enough to generate a key: don't - * check. - */ -# define RSA_FLAG_CHECKED 0x0800 - -/* BEGIN ERROR CODES */ -/* - * The following lines are auto generated by the script mkerr.pl. Any changes - * made after this point may be overwritten when the script is next run. - */ -void ERR_load_RSA_strings(void); - -/* Error codes for the RSA functions. */ - -/* Function codes. */ -# define RSA_F_CHECK_PADDING_MD 140 -# define RSA_F_DO_RSA_PRINT 146 -# define RSA_F_INT_RSA_VERIFY 145 -# define RSA_F_MEMORY_LOCK 100 -# define RSA_F_OLD_RSA_PRIV_DECODE 147 -# define RSA_F_PKEY_RSA_CTRL 143 -# define RSA_F_PKEY_RSA_CTRL_STR 144 -# define RSA_F_PKEY_RSA_SIGN 142 -# define RSA_F_PKEY_RSA_VERIFY 154 -# define RSA_F_PKEY_RSA_VERIFYRECOVER 141 -# define RSA_F_RSA_ALGOR_TO_MD 157 -# define RSA_F_RSA_BUILTIN_KEYGEN 129 -# define RSA_F_RSA_CHECK_KEY 123 -# define RSA_F_RSA_CMS_DECRYPT 158 -# define RSA_F_RSA_EAY_PRIVATE_DECRYPT 101 -# define RSA_F_RSA_EAY_PRIVATE_ENCRYPT 102 -# define RSA_F_RSA_EAY_PUBLIC_DECRYPT 103 -# define RSA_F_RSA_EAY_PUBLIC_ENCRYPT 104 -# define RSA_F_RSA_GENERATE_KEY 105 -# define RSA_F_RSA_GENERATE_KEY_EX 155 -# define RSA_F_RSA_ITEM_VERIFY 156 -# define RSA_F_RSA_MEMORY_LOCK 130 -# define RSA_F_RSA_MGF1_TO_MD 159 -# define RSA_F_RSA_NEW_METHOD 106 -# define RSA_F_RSA_NULL 124 -# define RSA_F_RSA_NULL_MOD_EXP 131 -# define RSA_F_RSA_NULL_PRIVATE_DECRYPT 132 -# define RSA_F_RSA_NULL_PRIVATE_ENCRYPT 133 -# define RSA_F_RSA_NULL_PUBLIC_DECRYPT 134 -# define RSA_F_RSA_NULL_PUBLIC_ENCRYPT 135 -# define RSA_F_RSA_PADDING_ADD_NONE 107 -# define RSA_F_RSA_PADDING_ADD_PKCS1_OAEP 121 -# define RSA_F_RSA_PADDING_ADD_PKCS1_OAEP_MGF1 160 -# define RSA_F_RSA_PADDING_ADD_PKCS1_PSS 125 -# define RSA_F_RSA_PADDING_ADD_PKCS1_PSS_MGF1 148 -# define RSA_F_RSA_PADDING_ADD_PKCS1_TYPE_1 108 -# define RSA_F_RSA_PADDING_ADD_PKCS1_TYPE_2 109 -# define RSA_F_RSA_PADDING_ADD_SSLV23 110 -# define RSA_F_RSA_PADDING_ADD_X931 127 -# define RSA_F_RSA_PADDING_CHECK_NONE 111 -# define RSA_F_RSA_PADDING_CHECK_PKCS1_OAEP 122 -# define RSA_F_RSA_PADDING_CHECK_PKCS1_OAEP_MGF1 161 -# define RSA_F_RSA_PADDING_CHECK_PKCS1_TYPE_1 112 -# define RSA_F_RSA_PADDING_CHECK_PKCS1_TYPE_2 113 -# define RSA_F_RSA_PADDING_CHECK_SSLV23 114 -# define RSA_F_RSA_PADDING_CHECK_X931 128 -# define RSA_F_RSA_PRINT 115 -# define RSA_F_RSA_PRINT_FP 116 -# define RSA_F_RSA_PRIVATE_DECRYPT 150 -# define RSA_F_RSA_PRIVATE_ENCRYPT 151 -# define RSA_F_RSA_PRIV_DECODE 137 -# define RSA_F_RSA_PRIV_ENCODE 138 -# define RSA_F_RSA_PSS_TO_CTX 162 -# define RSA_F_RSA_PUBLIC_DECRYPT 152 -# define RSA_F_RSA_PUBLIC_ENCRYPT 153 -# define RSA_F_RSA_PUB_DECODE 139 -# define RSA_F_RSA_SETUP_BLINDING 136 -# define RSA_F_RSA_SIGN 117 -# define RSA_F_RSA_SIGN_ASN1_OCTET_STRING 118 -# define RSA_F_RSA_VERIFY 119 -# define RSA_F_RSA_VERIFY_ASN1_OCTET_STRING 120 -# define RSA_F_RSA_VERIFY_PKCS1_PSS 126 -# define RSA_F_RSA_VERIFY_PKCS1_PSS_MGF1 149 - -/* Reason codes. */ -# define RSA_R_ALGORITHM_MISMATCH 100 -# define RSA_R_BAD_E_VALUE 101 -# define RSA_R_BAD_FIXED_HEADER_DECRYPT 102 -# define RSA_R_BAD_PAD_BYTE_COUNT 103 -# define RSA_R_BAD_SIGNATURE 104 -# define RSA_R_BLOCK_TYPE_IS_NOT_01 106 -# define RSA_R_BLOCK_TYPE_IS_NOT_02 107 -# define RSA_R_DATA_GREATER_THAN_MOD_LEN 108 -# define RSA_R_DATA_TOO_LARGE 109 -# define RSA_R_DATA_TOO_LARGE_FOR_KEY_SIZE 110 -# define RSA_R_DATA_TOO_LARGE_FOR_MODULUS 132 -# define RSA_R_DATA_TOO_SMALL 111 -# define RSA_R_DATA_TOO_SMALL_FOR_KEY_SIZE 122 -# define RSA_R_DIGEST_DOES_NOT_MATCH 166 -# define RSA_R_DIGEST_TOO_BIG_FOR_RSA_KEY 112 -# define RSA_R_DMP1_NOT_CONGRUENT_TO_D 124 -# define RSA_R_DMQ1_NOT_CONGRUENT_TO_D 125 -# define RSA_R_D_E_NOT_CONGRUENT_TO_1 123 -# define RSA_R_FIRST_OCTET_INVALID 133 -# define RSA_R_ILLEGAL_OR_UNSUPPORTED_PADDING_MODE 144 -# define RSA_R_INVALID_DIGEST 160 -# define RSA_R_INVALID_DIGEST_LENGTH 143 -# define RSA_R_INVALID_HEADER 137 -# define RSA_R_INVALID_KEYBITS 145 -# define RSA_R_INVALID_LABEL 161 -# define RSA_R_INVALID_MESSAGE_LENGTH 131 -# define RSA_R_INVALID_MGF1_MD 156 -# define RSA_R_INVALID_OAEP_PARAMETERS 162 -# define RSA_R_INVALID_PADDING 138 -# define RSA_R_INVALID_PADDING_MODE 141 -# define RSA_R_INVALID_PSS_PARAMETERS 149 -# define RSA_R_INVALID_PSS_SALTLEN 146 -# define RSA_R_INVALID_SALT_LENGTH 150 -# define RSA_R_INVALID_TRAILER 139 -# define RSA_R_INVALID_X931_DIGEST 142 -# define RSA_R_IQMP_NOT_INVERSE_OF_Q 126 -# define RSA_R_KEY_SIZE_TOO_SMALL 120 -# define RSA_R_LAST_OCTET_INVALID 134 -# define RSA_R_MODULUS_TOO_LARGE 105 -# define RSA_R_NON_FIPS_RSA_METHOD 157 -# define RSA_R_NO_PUBLIC_EXPONENT 140 -# define RSA_R_NULL_BEFORE_BLOCK_MISSING 113 -# define RSA_R_N_DOES_NOT_EQUAL_P_Q 127 -# define RSA_R_OAEP_DECODING_ERROR 121 -# define RSA_R_OPERATION_NOT_ALLOWED_IN_FIPS_MODE 158 -# define RSA_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE 148 -# define RSA_R_PADDING_CHECK_FAILED 114 -# define RSA_R_PKCS_DECODING_ERROR 159 -# define RSA_R_P_NOT_PRIME 128 -# define RSA_R_Q_NOT_PRIME 129 -# define RSA_R_RSA_OPERATIONS_NOT_SUPPORTED 130 -# define RSA_R_SLEN_CHECK_FAILED 136 -# define RSA_R_SLEN_RECOVERY_FAILED 135 -# define RSA_R_SSLV3_ROLLBACK_ATTACK 115 -# define RSA_R_THE_ASN1_OBJECT_IDENTIFIER_IS_NOT_KNOWN_FOR_THIS_MD 116 -# define RSA_R_UNKNOWN_ALGORITHM_TYPE 117 -# define RSA_R_UNKNOWN_DIGEST 163 -# define RSA_R_UNKNOWN_MASK_DIGEST 151 -# define RSA_R_UNKNOWN_PADDING_TYPE 118 -# define RSA_R_UNKNOWN_PSS_DIGEST 152 -# define RSA_R_UNSUPPORTED_ENCRYPTION_TYPE 164 -# define RSA_R_UNSUPPORTED_LABEL_SOURCE 165 -# define RSA_R_UNSUPPORTED_MASK_ALGORITHM 153 -# define RSA_R_UNSUPPORTED_MASK_PARAMETER 154 -# define RSA_R_UNSUPPORTED_SIGNATURE_TYPE 155 -# define RSA_R_VALUE_MISSING 147 -# define RSA_R_WRONG_SIGNATURE_LENGTH 119 - -#ifdef __cplusplus -} -#endif -#endif diff --git a/ext/openssl-win32/inc32/openssl/safestack.h b/ext/openssl-win32/inc32/openssl/safestack.h deleted file mode 100644 index 1d4f87ea..00000000 --- a/ext/openssl-win32/inc32/openssl/safestack.h +++ /dev/null @@ -1,2672 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The OpenSSL Project. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. All advertising materials mentioning features or use of this - * software must display the following acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" - * - * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * openssl-core@openssl.org. - * - * 5. Products derived from this software may not be called "OpenSSL" - * nor may "OpenSSL" appear in their names without prior written - * permission of the OpenSSL Project. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit (http://www.openssl.org/)" - * - * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY - * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * ==================================================================== - * - * This product includes cryptographic software written by Eric Young - * (eay@cryptsoft.com). This product includes software written by Tim - * Hudson (tjh@cryptsoft.com). - * - */ - -#ifndef HEADER_SAFESTACK_H -# define HEADER_SAFESTACK_H - -# include - -#ifdef __cplusplus -extern "C" { -#endif - -# ifndef CHECKED_PTR_OF -# define CHECKED_PTR_OF(type, p) \ - ((void*) (1 ? p : (type*)0)) -# endif - -/* - * In C++ we get problems because an explicit cast is needed from (void *) we - * use CHECKED_STACK_OF to ensure the correct type is passed in the macros - * below. - */ - -# define CHECKED_STACK_OF(type, p) \ - ((_STACK*) (1 ? p : (STACK_OF(type)*)0)) - -# define CHECKED_SK_COPY_FUNC(type, p) \ - ((void *(*)(void *)) ((1 ? p : (type *(*)(const type *))0))) - -# define CHECKED_SK_FREE_FUNC(type, p) \ - ((void (*)(void *)) ((1 ? p : (void (*)(type *))0))) - -# define CHECKED_SK_CMP_FUNC(type, p) \ - ((int (*)(const void *, const void *)) \ - ((1 ? p : (int (*)(const type * const *, const type * const *))0))) - -# define STACK_OF(type) struct stack_st_##type -# define PREDECLARE_STACK_OF(type) STACK_OF(type); - -# define DECLARE_STACK_OF(type) \ -STACK_OF(type) \ - { \ - _STACK stack; \ - }; -# define DECLARE_SPECIAL_STACK_OF(type, type2) \ -STACK_OF(type) \ - { \ - _STACK stack; \ - }; - -/* nada (obsolete in new safestack approach)*/ -# define IMPLEMENT_STACK_OF(type) - -/*- - * Strings are special: normally an lhash entry will point to a single - * (somewhat) mutable object. In the case of strings: - * - * a) Instead of a single char, there is an array of chars, NUL-terminated. - * b) The string may have be immutable. - * - * So, they need their own declarations. Especially important for - * type-checking tools, such as Deputy. - * - * In practice, however, it appears to be hard to have a const - * string. For now, I'm settling for dealing with the fact it is a - * string at all. - */ -typedef char *OPENSSL_STRING; - -typedef const char *OPENSSL_CSTRING; - -/* - * Confusingly, LHASH_OF(STRING) deals with char ** throughout, but - * STACK_OF(STRING) is really more like STACK_OF(char), only, as mentioned - * above, instead of a single char each entry is a NUL-terminated array of - * chars. So, we have to implement STRING specially for STACK_OF. This is - * dealt with in the autogenerated macros below. - */ - -DECLARE_SPECIAL_STACK_OF(OPENSSL_STRING, char) - -/* - * Similarly, we sometimes use a block of characters, NOT nul-terminated. - * These should also be distinguished from "normal" stacks. - */ -typedef void *OPENSSL_BLOCK; -DECLARE_SPECIAL_STACK_OF(OPENSSL_BLOCK, void) - -/* - * SKM_sk_... stack macros are internal to safestack.h: never use them - * directly, use sk__... instead - */ -# define SKM_sk_new(type, cmp) \ - ((STACK_OF(type) *)sk_new(CHECKED_SK_CMP_FUNC(type, cmp))) -# define SKM_sk_new_null(type) \ - ((STACK_OF(type) *)sk_new_null()) -# define SKM_sk_free(type, st) \ - sk_free(CHECKED_STACK_OF(type, st)) -# define SKM_sk_num(type, st) \ - sk_num(CHECKED_STACK_OF(type, st)) -# define SKM_sk_value(type, st,i) \ - ((type *)sk_value(CHECKED_STACK_OF(type, st), i)) -# define SKM_sk_set(type, st,i,val) \ - sk_set(CHECKED_STACK_OF(type, st), i, CHECKED_PTR_OF(type, val)) -# define SKM_sk_zero(type, st) \ - sk_zero(CHECKED_STACK_OF(type, st)) -# define SKM_sk_push(type, st, val) \ - sk_push(CHECKED_STACK_OF(type, st), CHECKED_PTR_OF(type, val)) -# define SKM_sk_unshift(type, st, val) \ - sk_unshift(CHECKED_STACK_OF(type, st), CHECKED_PTR_OF(type, val)) -# define SKM_sk_find(type, st, val) \ - sk_find(CHECKED_STACK_OF(type, st), CHECKED_PTR_OF(type, val)) -# define SKM_sk_find_ex(type, st, val) \ - sk_find_ex(CHECKED_STACK_OF(type, st), \ - CHECKED_PTR_OF(type, val)) -# define SKM_sk_delete(type, st, i) \ - (type *)sk_delete(CHECKED_STACK_OF(type, st), i) -# define SKM_sk_delete_ptr(type, st, ptr) \ - (type *)sk_delete_ptr(CHECKED_STACK_OF(type, st), CHECKED_PTR_OF(type, ptr)) -# define SKM_sk_insert(type, st,val, i) \ - sk_insert(CHECKED_STACK_OF(type, st), CHECKED_PTR_OF(type, val), i) -# define SKM_sk_set_cmp_func(type, st, cmp) \ - ((int (*)(const type * const *,const type * const *)) \ - sk_set_cmp_func(CHECKED_STACK_OF(type, st), CHECKED_SK_CMP_FUNC(type, cmp))) -# define SKM_sk_dup(type, st) \ - (STACK_OF(type) *)sk_dup(CHECKED_STACK_OF(type, st)) -# define SKM_sk_pop_free(type, st, free_func) \ - sk_pop_free(CHECKED_STACK_OF(type, st), CHECKED_SK_FREE_FUNC(type, free_func)) -# define SKM_sk_deep_copy(type, st, copy_func, free_func) \ - (STACK_OF(type) *)sk_deep_copy(CHECKED_STACK_OF(type, st), CHECKED_SK_COPY_FUNC(type, copy_func), CHECKED_SK_FREE_FUNC(type, free_func)) -# define SKM_sk_shift(type, st) \ - (type *)sk_shift(CHECKED_STACK_OF(type, st)) -# define SKM_sk_pop(type, st) \ - (type *)sk_pop(CHECKED_STACK_OF(type, st)) -# define SKM_sk_sort(type, st) \ - sk_sort(CHECKED_STACK_OF(type, st)) -# define SKM_sk_is_sorted(type, st) \ - sk_is_sorted(CHECKED_STACK_OF(type, st)) -# define SKM_ASN1_SET_OF_d2i(type, st, pp, length, d2i_func, free_func, ex_tag, ex_class) \ - (STACK_OF(type) *)d2i_ASN1_SET( \ - (STACK_OF(OPENSSL_BLOCK) **)CHECKED_PTR_OF(STACK_OF(type)*, st), \ - pp, length, \ - CHECKED_D2I_OF(type, d2i_func), \ - CHECKED_SK_FREE_FUNC(type, free_func), \ - ex_tag, ex_class) -# define SKM_ASN1_SET_OF_i2d(type, st, pp, i2d_func, ex_tag, ex_class, is_set) \ - i2d_ASN1_SET((STACK_OF(OPENSSL_BLOCK) *)CHECKED_STACK_OF(type, st), pp, \ - CHECKED_I2D_OF(type, i2d_func), \ - ex_tag, ex_class, is_set) -# define SKM_ASN1_seq_pack(type, st, i2d_func, buf, len) \ - ASN1_seq_pack(CHECKED_PTR_OF(STACK_OF(type), st), \ - CHECKED_I2D_OF(type, i2d_func), buf, len) -# define SKM_ASN1_seq_unpack(type, buf, len, d2i_func, free_func) \ - (STACK_OF(type) *)ASN1_seq_unpack(buf, len, CHECKED_D2I_OF(type, d2i_func), CHECKED_SK_FREE_FUNC(type, free_func)) -# define SKM_PKCS12_decrypt_d2i(type, algor, d2i_func, free_func, pass, passlen, oct, seq) \ - (STACK_OF(type) *)PKCS12_decrypt_d2i(algor, \ - CHECKED_D2I_OF(type, d2i_func), \ - CHECKED_SK_FREE_FUNC(type, free_func), \ - pass, passlen, oct, seq) -/* - * This block of defines is updated by util/mkstack.pl, please do not touch! - */ -# define sk_ACCESS_DESCRIPTION_new(cmp) SKM_sk_new(ACCESS_DESCRIPTION, (cmp)) -# define sk_ACCESS_DESCRIPTION_new_null() SKM_sk_new_null(ACCESS_DESCRIPTION) -# define sk_ACCESS_DESCRIPTION_free(st) SKM_sk_free(ACCESS_DESCRIPTION, (st)) -# define sk_ACCESS_DESCRIPTION_num(st) SKM_sk_num(ACCESS_DESCRIPTION, (st)) -# define sk_ACCESS_DESCRIPTION_value(st, i) SKM_sk_value(ACCESS_DESCRIPTION, (st), (i)) -# define sk_ACCESS_DESCRIPTION_set(st, i, val) SKM_sk_set(ACCESS_DESCRIPTION, (st), (i), (val)) -# define sk_ACCESS_DESCRIPTION_zero(st) SKM_sk_zero(ACCESS_DESCRIPTION, (st)) -# define sk_ACCESS_DESCRIPTION_push(st, val) SKM_sk_push(ACCESS_DESCRIPTION, (st), (val)) -# define sk_ACCESS_DESCRIPTION_unshift(st, val) SKM_sk_unshift(ACCESS_DESCRIPTION, (st), (val)) -# define sk_ACCESS_DESCRIPTION_find(st, val) SKM_sk_find(ACCESS_DESCRIPTION, (st), (val)) -# define sk_ACCESS_DESCRIPTION_find_ex(st, val) SKM_sk_find_ex(ACCESS_DESCRIPTION, (st), (val)) -# define sk_ACCESS_DESCRIPTION_delete(st, i) SKM_sk_delete(ACCESS_DESCRIPTION, (st), (i)) -# define sk_ACCESS_DESCRIPTION_delete_ptr(st, ptr) SKM_sk_delete_ptr(ACCESS_DESCRIPTION, (st), (ptr)) -# define sk_ACCESS_DESCRIPTION_insert(st, val, i) SKM_sk_insert(ACCESS_DESCRIPTION, (st), (val), (i)) -# define sk_ACCESS_DESCRIPTION_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(ACCESS_DESCRIPTION, (st), (cmp)) -# define sk_ACCESS_DESCRIPTION_dup(st) SKM_sk_dup(ACCESS_DESCRIPTION, st) -# define sk_ACCESS_DESCRIPTION_pop_free(st, free_func) SKM_sk_pop_free(ACCESS_DESCRIPTION, (st), (free_func)) -# define sk_ACCESS_DESCRIPTION_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(ACCESS_DESCRIPTION, (st), (copy_func), (free_func)) -# define sk_ACCESS_DESCRIPTION_shift(st) SKM_sk_shift(ACCESS_DESCRIPTION, (st)) -# define sk_ACCESS_DESCRIPTION_pop(st) SKM_sk_pop(ACCESS_DESCRIPTION, (st)) -# define sk_ACCESS_DESCRIPTION_sort(st) SKM_sk_sort(ACCESS_DESCRIPTION, (st)) -# define sk_ACCESS_DESCRIPTION_is_sorted(st) SKM_sk_is_sorted(ACCESS_DESCRIPTION, (st)) -# define sk_ASIdOrRange_new(cmp) SKM_sk_new(ASIdOrRange, (cmp)) -# define sk_ASIdOrRange_new_null() SKM_sk_new_null(ASIdOrRange) -# define sk_ASIdOrRange_free(st) SKM_sk_free(ASIdOrRange, (st)) -# define sk_ASIdOrRange_num(st) SKM_sk_num(ASIdOrRange, (st)) -# define sk_ASIdOrRange_value(st, i) SKM_sk_value(ASIdOrRange, (st), (i)) -# define sk_ASIdOrRange_set(st, i, val) SKM_sk_set(ASIdOrRange, (st), (i), (val)) -# define sk_ASIdOrRange_zero(st) SKM_sk_zero(ASIdOrRange, (st)) -# define sk_ASIdOrRange_push(st, val) SKM_sk_push(ASIdOrRange, (st), (val)) -# define sk_ASIdOrRange_unshift(st, val) SKM_sk_unshift(ASIdOrRange, (st), (val)) -# define sk_ASIdOrRange_find(st, val) SKM_sk_find(ASIdOrRange, (st), (val)) -# define sk_ASIdOrRange_find_ex(st, val) SKM_sk_find_ex(ASIdOrRange, (st), (val)) -# define sk_ASIdOrRange_delete(st, i) SKM_sk_delete(ASIdOrRange, (st), (i)) -# define sk_ASIdOrRange_delete_ptr(st, ptr) SKM_sk_delete_ptr(ASIdOrRange, (st), (ptr)) -# define sk_ASIdOrRange_insert(st, val, i) SKM_sk_insert(ASIdOrRange, (st), (val), (i)) -# define sk_ASIdOrRange_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(ASIdOrRange, (st), (cmp)) -# define sk_ASIdOrRange_dup(st) SKM_sk_dup(ASIdOrRange, st) -# define sk_ASIdOrRange_pop_free(st, free_func) SKM_sk_pop_free(ASIdOrRange, (st), (free_func)) -# define sk_ASIdOrRange_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(ASIdOrRange, (st), (copy_func), (free_func)) -# define sk_ASIdOrRange_shift(st) SKM_sk_shift(ASIdOrRange, (st)) -# define sk_ASIdOrRange_pop(st) SKM_sk_pop(ASIdOrRange, (st)) -# define sk_ASIdOrRange_sort(st) SKM_sk_sort(ASIdOrRange, (st)) -# define sk_ASIdOrRange_is_sorted(st) SKM_sk_is_sorted(ASIdOrRange, (st)) -# define sk_ASN1_GENERALSTRING_new(cmp) SKM_sk_new(ASN1_GENERALSTRING, (cmp)) -# define sk_ASN1_GENERALSTRING_new_null() SKM_sk_new_null(ASN1_GENERALSTRING) -# define sk_ASN1_GENERALSTRING_free(st) SKM_sk_free(ASN1_GENERALSTRING, (st)) -# define sk_ASN1_GENERALSTRING_num(st) SKM_sk_num(ASN1_GENERALSTRING, (st)) -# define sk_ASN1_GENERALSTRING_value(st, i) SKM_sk_value(ASN1_GENERALSTRING, (st), (i)) -# define sk_ASN1_GENERALSTRING_set(st, i, val) SKM_sk_set(ASN1_GENERALSTRING, (st), (i), (val)) -# define sk_ASN1_GENERALSTRING_zero(st) SKM_sk_zero(ASN1_GENERALSTRING, (st)) -# define sk_ASN1_GENERALSTRING_push(st, val) SKM_sk_push(ASN1_GENERALSTRING, (st), (val)) -# define sk_ASN1_GENERALSTRING_unshift(st, val) SKM_sk_unshift(ASN1_GENERALSTRING, (st), (val)) -# define sk_ASN1_GENERALSTRING_find(st, val) SKM_sk_find(ASN1_GENERALSTRING, (st), (val)) -# define sk_ASN1_GENERALSTRING_find_ex(st, val) SKM_sk_find_ex(ASN1_GENERALSTRING, (st), (val)) -# define sk_ASN1_GENERALSTRING_delete(st, i) SKM_sk_delete(ASN1_GENERALSTRING, (st), (i)) -# define sk_ASN1_GENERALSTRING_delete_ptr(st, ptr) SKM_sk_delete_ptr(ASN1_GENERALSTRING, (st), (ptr)) -# define sk_ASN1_GENERALSTRING_insert(st, val, i) SKM_sk_insert(ASN1_GENERALSTRING, (st), (val), (i)) -# define sk_ASN1_GENERALSTRING_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(ASN1_GENERALSTRING, (st), (cmp)) -# define sk_ASN1_GENERALSTRING_dup(st) SKM_sk_dup(ASN1_GENERALSTRING, st) -# define sk_ASN1_GENERALSTRING_pop_free(st, free_func) SKM_sk_pop_free(ASN1_GENERALSTRING, (st), (free_func)) -# define sk_ASN1_GENERALSTRING_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(ASN1_GENERALSTRING, (st), (copy_func), (free_func)) -# define sk_ASN1_GENERALSTRING_shift(st) SKM_sk_shift(ASN1_GENERALSTRING, (st)) -# define sk_ASN1_GENERALSTRING_pop(st) SKM_sk_pop(ASN1_GENERALSTRING, (st)) -# define sk_ASN1_GENERALSTRING_sort(st) SKM_sk_sort(ASN1_GENERALSTRING, (st)) -# define sk_ASN1_GENERALSTRING_is_sorted(st) SKM_sk_is_sorted(ASN1_GENERALSTRING, (st)) -# define sk_ASN1_INTEGER_new(cmp) SKM_sk_new(ASN1_INTEGER, (cmp)) -# define sk_ASN1_INTEGER_new_null() SKM_sk_new_null(ASN1_INTEGER) -# define sk_ASN1_INTEGER_free(st) SKM_sk_free(ASN1_INTEGER, (st)) -# define sk_ASN1_INTEGER_num(st) SKM_sk_num(ASN1_INTEGER, (st)) -# define sk_ASN1_INTEGER_value(st, i) SKM_sk_value(ASN1_INTEGER, (st), (i)) -# define sk_ASN1_INTEGER_set(st, i, val) SKM_sk_set(ASN1_INTEGER, (st), (i), (val)) -# define sk_ASN1_INTEGER_zero(st) SKM_sk_zero(ASN1_INTEGER, (st)) -# define sk_ASN1_INTEGER_push(st, val) SKM_sk_push(ASN1_INTEGER, (st), (val)) -# define sk_ASN1_INTEGER_unshift(st, val) SKM_sk_unshift(ASN1_INTEGER, (st), (val)) -# define sk_ASN1_INTEGER_find(st, val) SKM_sk_find(ASN1_INTEGER, (st), (val)) -# define sk_ASN1_INTEGER_find_ex(st, val) SKM_sk_find_ex(ASN1_INTEGER, (st), (val)) -# define sk_ASN1_INTEGER_delete(st, i) SKM_sk_delete(ASN1_INTEGER, (st), (i)) -# define sk_ASN1_INTEGER_delete_ptr(st, ptr) SKM_sk_delete_ptr(ASN1_INTEGER, (st), (ptr)) -# define sk_ASN1_INTEGER_insert(st, val, i) SKM_sk_insert(ASN1_INTEGER, (st), (val), (i)) -# define sk_ASN1_INTEGER_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(ASN1_INTEGER, (st), (cmp)) -# define sk_ASN1_INTEGER_dup(st) SKM_sk_dup(ASN1_INTEGER, st) -# define sk_ASN1_INTEGER_pop_free(st, free_func) SKM_sk_pop_free(ASN1_INTEGER, (st), (free_func)) -# define sk_ASN1_INTEGER_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(ASN1_INTEGER, (st), (copy_func), (free_func)) -# define sk_ASN1_INTEGER_shift(st) SKM_sk_shift(ASN1_INTEGER, (st)) -# define sk_ASN1_INTEGER_pop(st) SKM_sk_pop(ASN1_INTEGER, (st)) -# define sk_ASN1_INTEGER_sort(st) SKM_sk_sort(ASN1_INTEGER, (st)) -# define sk_ASN1_INTEGER_is_sorted(st) SKM_sk_is_sorted(ASN1_INTEGER, (st)) -# define sk_ASN1_OBJECT_new(cmp) SKM_sk_new(ASN1_OBJECT, (cmp)) -# define sk_ASN1_OBJECT_new_null() SKM_sk_new_null(ASN1_OBJECT) -# define sk_ASN1_OBJECT_free(st) SKM_sk_free(ASN1_OBJECT, (st)) -# define sk_ASN1_OBJECT_num(st) SKM_sk_num(ASN1_OBJECT, (st)) -# define sk_ASN1_OBJECT_value(st, i) SKM_sk_value(ASN1_OBJECT, (st), (i)) -# define sk_ASN1_OBJECT_set(st, i, val) SKM_sk_set(ASN1_OBJECT, (st), (i), (val)) -# define sk_ASN1_OBJECT_zero(st) SKM_sk_zero(ASN1_OBJECT, (st)) -# define sk_ASN1_OBJECT_push(st, val) SKM_sk_push(ASN1_OBJECT, (st), (val)) -# define sk_ASN1_OBJECT_unshift(st, val) SKM_sk_unshift(ASN1_OBJECT, (st), (val)) -# define sk_ASN1_OBJECT_find(st, val) SKM_sk_find(ASN1_OBJECT, (st), (val)) -# define sk_ASN1_OBJECT_find_ex(st, val) SKM_sk_find_ex(ASN1_OBJECT, (st), (val)) -# define sk_ASN1_OBJECT_delete(st, i) SKM_sk_delete(ASN1_OBJECT, (st), (i)) -# define sk_ASN1_OBJECT_delete_ptr(st, ptr) SKM_sk_delete_ptr(ASN1_OBJECT, (st), (ptr)) -# define sk_ASN1_OBJECT_insert(st, val, i) SKM_sk_insert(ASN1_OBJECT, (st), (val), (i)) -# define sk_ASN1_OBJECT_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(ASN1_OBJECT, (st), (cmp)) -# define sk_ASN1_OBJECT_dup(st) SKM_sk_dup(ASN1_OBJECT, st) -# define sk_ASN1_OBJECT_pop_free(st, free_func) SKM_sk_pop_free(ASN1_OBJECT, (st), (free_func)) -# define sk_ASN1_OBJECT_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(ASN1_OBJECT, (st), (copy_func), (free_func)) -# define sk_ASN1_OBJECT_shift(st) SKM_sk_shift(ASN1_OBJECT, (st)) -# define sk_ASN1_OBJECT_pop(st) SKM_sk_pop(ASN1_OBJECT, (st)) -# define sk_ASN1_OBJECT_sort(st) SKM_sk_sort(ASN1_OBJECT, (st)) -# define sk_ASN1_OBJECT_is_sorted(st) SKM_sk_is_sorted(ASN1_OBJECT, (st)) -# define sk_ASN1_STRING_TABLE_new(cmp) SKM_sk_new(ASN1_STRING_TABLE, (cmp)) -# define sk_ASN1_STRING_TABLE_new_null() SKM_sk_new_null(ASN1_STRING_TABLE) -# define sk_ASN1_STRING_TABLE_free(st) SKM_sk_free(ASN1_STRING_TABLE, (st)) -# define sk_ASN1_STRING_TABLE_num(st) SKM_sk_num(ASN1_STRING_TABLE, (st)) -# define sk_ASN1_STRING_TABLE_value(st, i) SKM_sk_value(ASN1_STRING_TABLE, (st), (i)) -# define sk_ASN1_STRING_TABLE_set(st, i, val) SKM_sk_set(ASN1_STRING_TABLE, (st), (i), (val)) -# define sk_ASN1_STRING_TABLE_zero(st) SKM_sk_zero(ASN1_STRING_TABLE, (st)) -# define sk_ASN1_STRING_TABLE_push(st, val) SKM_sk_push(ASN1_STRING_TABLE, (st), (val)) -# define sk_ASN1_STRING_TABLE_unshift(st, val) SKM_sk_unshift(ASN1_STRING_TABLE, (st), (val)) -# define sk_ASN1_STRING_TABLE_find(st, val) SKM_sk_find(ASN1_STRING_TABLE, (st), (val)) -# define sk_ASN1_STRING_TABLE_find_ex(st, val) SKM_sk_find_ex(ASN1_STRING_TABLE, (st), (val)) -# define sk_ASN1_STRING_TABLE_delete(st, i) SKM_sk_delete(ASN1_STRING_TABLE, (st), (i)) -# define sk_ASN1_STRING_TABLE_delete_ptr(st, ptr) SKM_sk_delete_ptr(ASN1_STRING_TABLE, (st), (ptr)) -# define sk_ASN1_STRING_TABLE_insert(st, val, i) SKM_sk_insert(ASN1_STRING_TABLE, (st), (val), (i)) -# define sk_ASN1_STRING_TABLE_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(ASN1_STRING_TABLE, (st), (cmp)) -# define sk_ASN1_STRING_TABLE_dup(st) SKM_sk_dup(ASN1_STRING_TABLE, st) -# define sk_ASN1_STRING_TABLE_pop_free(st, free_func) SKM_sk_pop_free(ASN1_STRING_TABLE, (st), (free_func)) -# define sk_ASN1_STRING_TABLE_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(ASN1_STRING_TABLE, (st), (copy_func), (free_func)) -# define sk_ASN1_STRING_TABLE_shift(st) SKM_sk_shift(ASN1_STRING_TABLE, (st)) -# define sk_ASN1_STRING_TABLE_pop(st) SKM_sk_pop(ASN1_STRING_TABLE, (st)) -# define sk_ASN1_STRING_TABLE_sort(st) SKM_sk_sort(ASN1_STRING_TABLE, (st)) -# define sk_ASN1_STRING_TABLE_is_sorted(st) SKM_sk_is_sorted(ASN1_STRING_TABLE, (st)) -# define sk_ASN1_TYPE_new(cmp) SKM_sk_new(ASN1_TYPE, (cmp)) -# define sk_ASN1_TYPE_new_null() SKM_sk_new_null(ASN1_TYPE) -# define sk_ASN1_TYPE_free(st) SKM_sk_free(ASN1_TYPE, (st)) -# define sk_ASN1_TYPE_num(st) SKM_sk_num(ASN1_TYPE, (st)) -# define sk_ASN1_TYPE_value(st, i) SKM_sk_value(ASN1_TYPE, (st), (i)) -# define sk_ASN1_TYPE_set(st, i, val) SKM_sk_set(ASN1_TYPE, (st), (i), (val)) -# define sk_ASN1_TYPE_zero(st) SKM_sk_zero(ASN1_TYPE, (st)) -# define sk_ASN1_TYPE_push(st, val) SKM_sk_push(ASN1_TYPE, (st), (val)) -# define sk_ASN1_TYPE_unshift(st, val) SKM_sk_unshift(ASN1_TYPE, (st), (val)) -# define sk_ASN1_TYPE_find(st, val) SKM_sk_find(ASN1_TYPE, (st), (val)) -# define sk_ASN1_TYPE_find_ex(st, val) SKM_sk_find_ex(ASN1_TYPE, (st), (val)) -# define sk_ASN1_TYPE_delete(st, i) SKM_sk_delete(ASN1_TYPE, (st), (i)) -# define sk_ASN1_TYPE_delete_ptr(st, ptr) SKM_sk_delete_ptr(ASN1_TYPE, (st), (ptr)) -# define sk_ASN1_TYPE_insert(st, val, i) SKM_sk_insert(ASN1_TYPE, (st), (val), (i)) -# define sk_ASN1_TYPE_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(ASN1_TYPE, (st), (cmp)) -# define sk_ASN1_TYPE_dup(st) SKM_sk_dup(ASN1_TYPE, st) -# define sk_ASN1_TYPE_pop_free(st, free_func) SKM_sk_pop_free(ASN1_TYPE, (st), (free_func)) -# define sk_ASN1_TYPE_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(ASN1_TYPE, (st), (copy_func), (free_func)) -# define sk_ASN1_TYPE_shift(st) SKM_sk_shift(ASN1_TYPE, (st)) -# define sk_ASN1_TYPE_pop(st) SKM_sk_pop(ASN1_TYPE, (st)) -# define sk_ASN1_TYPE_sort(st) SKM_sk_sort(ASN1_TYPE, (st)) -# define sk_ASN1_TYPE_is_sorted(st) SKM_sk_is_sorted(ASN1_TYPE, (st)) -# define sk_ASN1_UTF8STRING_new(cmp) SKM_sk_new(ASN1_UTF8STRING, (cmp)) -# define sk_ASN1_UTF8STRING_new_null() SKM_sk_new_null(ASN1_UTF8STRING) -# define sk_ASN1_UTF8STRING_free(st) SKM_sk_free(ASN1_UTF8STRING, (st)) -# define sk_ASN1_UTF8STRING_num(st) SKM_sk_num(ASN1_UTF8STRING, (st)) -# define sk_ASN1_UTF8STRING_value(st, i) SKM_sk_value(ASN1_UTF8STRING, (st), (i)) -# define sk_ASN1_UTF8STRING_set(st, i, val) SKM_sk_set(ASN1_UTF8STRING, (st), (i), (val)) -# define sk_ASN1_UTF8STRING_zero(st) SKM_sk_zero(ASN1_UTF8STRING, (st)) -# define sk_ASN1_UTF8STRING_push(st, val) SKM_sk_push(ASN1_UTF8STRING, (st), (val)) -# define sk_ASN1_UTF8STRING_unshift(st, val) SKM_sk_unshift(ASN1_UTF8STRING, (st), (val)) -# define sk_ASN1_UTF8STRING_find(st, val) SKM_sk_find(ASN1_UTF8STRING, (st), (val)) -# define sk_ASN1_UTF8STRING_find_ex(st, val) SKM_sk_find_ex(ASN1_UTF8STRING, (st), (val)) -# define sk_ASN1_UTF8STRING_delete(st, i) SKM_sk_delete(ASN1_UTF8STRING, (st), (i)) -# define sk_ASN1_UTF8STRING_delete_ptr(st, ptr) SKM_sk_delete_ptr(ASN1_UTF8STRING, (st), (ptr)) -# define sk_ASN1_UTF8STRING_insert(st, val, i) SKM_sk_insert(ASN1_UTF8STRING, (st), (val), (i)) -# define sk_ASN1_UTF8STRING_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(ASN1_UTF8STRING, (st), (cmp)) -# define sk_ASN1_UTF8STRING_dup(st) SKM_sk_dup(ASN1_UTF8STRING, st) -# define sk_ASN1_UTF8STRING_pop_free(st, free_func) SKM_sk_pop_free(ASN1_UTF8STRING, (st), (free_func)) -# define sk_ASN1_UTF8STRING_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(ASN1_UTF8STRING, (st), (copy_func), (free_func)) -# define sk_ASN1_UTF8STRING_shift(st) SKM_sk_shift(ASN1_UTF8STRING, (st)) -# define sk_ASN1_UTF8STRING_pop(st) SKM_sk_pop(ASN1_UTF8STRING, (st)) -# define sk_ASN1_UTF8STRING_sort(st) SKM_sk_sort(ASN1_UTF8STRING, (st)) -# define sk_ASN1_UTF8STRING_is_sorted(st) SKM_sk_is_sorted(ASN1_UTF8STRING, (st)) -# define sk_ASN1_VALUE_new(cmp) SKM_sk_new(ASN1_VALUE, (cmp)) -# define sk_ASN1_VALUE_new_null() SKM_sk_new_null(ASN1_VALUE) -# define sk_ASN1_VALUE_free(st) SKM_sk_free(ASN1_VALUE, (st)) -# define sk_ASN1_VALUE_num(st) SKM_sk_num(ASN1_VALUE, (st)) -# define sk_ASN1_VALUE_value(st, i) SKM_sk_value(ASN1_VALUE, (st), (i)) -# define sk_ASN1_VALUE_set(st, i, val) SKM_sk_set(ASN1_VALUE, (st), (i), (val)) -# define sk_ASN1_VALUE_zero(st) SKM_sk_zero(ASN1_VALUE, (st)) -# define sk_ASN1_VALUE_push(st, val) SKM_sk_push(ASN1_VALUE, (st), (val)) -# define sk_ASN1_VALUE_unshift(st, val) SKM_sk_unshift(ASN1_VALUE, (st), (val)) -# define sk_ASN1_VALUE_find(st, val) SKM_sk_find(ASN1_VALUE, (st), (val)) -# define sk_ASN1_VALUE_find_ex(st, val) SKM_sk_find_ex(ASN1_VALUE, (st), (val)) -# define sk_ASN1_VALUE_delete(st, i) SKM_sk_delete(ASN1_VALUE, (st), (i)) -# define sk_ASN1_VALUE_delete_ptr(st, ptr) SKM_sk_delete_ptr(ASN1_VALUE, (st), (ptr)) -# define sk_ASN1_VALUE_insert(st, val, i) SKM_sk_insert(ASN1_VALUE, (st), (val), (i)) -# define sk_ASN1_VALUE_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(ASN1_VALUE, (st), (cmp)) -# define sk_ASN1_VALUE_dup(st) SKM_sk_dup(ASN1_VALUE, st) -# define sk_ASN1_VALUE_pop_free(st, free_func) SKM_sk_pop_free(ASN1_VALUE, (st), (free_func)) -# define sk_ASN1_VALUE_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(ASN1_VALUE, (st), (copy_func), (free_func)) -# define sk_ASN1_VALUE_shift(st) SKM_sk_shift(ASN1_VALUE, (st)) -# define sk_ASN1_VALUE_pop(st) SKM_sk_pop(ASN1_VALUE, (st)) -# define sk_ASN1_VALUE_sort(st) SKM_sk_sort(ASN1_VALUE, (st)) -# define sk_ASN1_VALUE_is_sorted(st) SKM_sk_is_sorted(ASN1_VALUE, (st)) -# define sk_BIO_new(cmp) SKM_sk_new(BIO, (cmp)) -# define sk_BIO_new_null() SKM_sk_new_null(BIO) -# define sk_BIO_free(st) SKM_sk_free(BIO, (st)) -# define sk_BIO_num(st) SKM_sk_num(BIO, (st)) -# define sk_BIO_value(st, i) SKM_sk_value(BIO, (st), (i)) -# define sk_BIO_set(st, i, val) SKM_sk_set(BIO, (st), (i), (val)) -# define sk_BIO_zero(st) SKM_sk_zero(BIO, (st)) -# define sk_BIO_push(st, val) SKM_sk_push(BIO, (st), (val)) -# define sk_BIO_unshift(st, val) SKM_sk_unshift(BIO, (st), (val)) -# define sk_BIO_find(st, val) SKM_sk_find(BIO, (st), (val)) -# define sk_BIO_find_ex(st, val) SKM_sk_find_ex(BIO, (st), (val)) -# define sk_BIO_delete(st, i) SKM_sk_delete(BIO, (st), (i)) -# define sk_BIO_delete_ptr(st, ptr) SKM_sk_delete_ptr(BIO, (st), (ptr)) -# define sk_BIO_insert(st, val, i) SKM_sk_insert(BIO, (st), (val), (i)) -# define sk_BIO_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(BIO, (st), (cmp)) -# define sk_BIO_dup(st) SKM_sk_dup(BIO, st) -# define sk_BIO_pop_free(st, free_func) SKM_sk_pop_free(BIO, (st), (free_func)) -# define sk_BIO_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(BIO, (st), (copy_func), (free_func)) -# define sk_BIO_shift(st) SKM_sk_shift(BIO, (st)) -# define sk_BIO_pop(st) SKM_sk_pop(BIO, (st)) -# define sk_BIO_sort(st) SKM_sk_sort(BIO, (st)) -# define sk_BIO_is_sorted(st) SKM_sk_is_sorted(BIO, (st)) -# define sk_BY_DIR_ENTRY_new(cmp) SKM_sk_new(BY_DIR_ENTRY, (cmp)) -# define sk_BY_DIR_ENTRY_new_null() SKM_sk_new_null(BY_DIR_ENTRY) -# define sk_BY_DIR_ENTRY_free(st) SKM_sk_free(BY_DIR_ENTRY, (st)) -# define sk_BY_DIR_ENTRY_num(st) SKM_sk_num(BY_DIR_ENTRY, (st)) -# define sk_BY_DIR_ENTRY_value(st, i) SKM_sk_value(BY_DIR_ENTRY, (st), (i)) -# define sk_BY_DIR_ENTRY_set(st, i, val) SKM_sk_set(BY_DIR_ENTRY, (st), (i), (val)) -# define sk_BY_DIR_ENTRY_zero(st) SKM_sk_zero(BY_DIR_ENTRY, (st)) -# define sk_BY_DIR_ENTRY_push(st, val) SKM_sk_push(BY_DIR_ENTRY, (st), (val)) -# define sk_BY_DIR_ENTRY_unshift(st, val) SKM_sk_unshift(BY_DIR_ENTRY, (st), (val)) -# define sk_BY_DIR_ENTRY_find(st, val) SKM_sk_find(BY_DIR_ENTRY, (st), (val)) -# define sk_BY_DIR_ENTRY_find_ex(st, val) SKM_sk_find_ex(BY_DIR_ENTRY, (st), (val)) -# define sk_BY_DIR_ENTRY_delete(st, i) SKM_sk_delete(BY_DIR_ENTRY, (st), (i)) -# define sk_BY_DIR_ENTRY_delete_ptr(st, ptr) SKM_sk_delete_ptr(BY_DIR_ENTRY, (st), (ptr)) -# define sk_BY_DIR_ENTRY_insert(st, val, i) SKM_sk_insert(BY_DIR_ENTRY, (st), (val), (i)) -# define sk_BY_DIR_ENTRY_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(BY_DIR_ENTRY, (st), (cmp)) -# define sk_BY_DIR_ENTRY_dup(st) SKM_sk_dup(BY_DIR_ENTRY, st) -# define sk_BY_DIR_ENTRY_pop_free(st, free_func) SKM_sk_pop_free(BY_DIR_ENTRY, (st), (free_func)) -# define sk_BY_DIR_ENTRY_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(BY_DIR_ENTRY, (st), (copy_func), (free_func)) -# define sk_BY_DIR_ENTRY_shift(st) SKM_sk_shift(BY_DIR_ENTRY, (st)) -# define sk_BY_DIR_ENTRY_pop(st) SKM_sk_pop(BY_DIR_ENTRY, (st)) -# define sk_BY_DIR_ENTRY_sort(st) SKM_sk_sort(BY_DIR_ENTRY, (st)) -# define sk_BY_DIR_ENTRY_is_sorted(st) SKM_sk_is_sorted(BY_DIR_ENTRY, (st)) -# define sk_BY_DIR_HASH_new(cmp) SKM_sk_new(BY_DIR_HASH, (cmp)) -# define sk_BY_DIR_HASH_new_null() SKM_sk_new_null(BY_DIR_HASH) -# define sk_BY_DIR_HASH_free(st) SKM_sk_free(BY_DIR_HASH, (st)) -# define sk_BY_DIR_HASH_num(st) SKM_sk_num(BY_DIR_HASH, (st)) -# define sk_BY_DIR_HASH_value(st, i) SKM_sk_value(BY_DIR_HASH, (st), (i)) -# define sk_BY_DIR_HASH_set(st, i, val) SKM_sk_set(BY_DIR_HASH, (st), (i), (val)) -# define sk_BY_DIR_HASH_zero(st) SKM_sk_zero(BY_DIR_HASH, (st)) -# define sk_BY_DIR_HASH_push(st, val) SKM_sk_push(BY_DIR_HASH, (st), (val)) -# define sk_BY_DIR_HASH_unshift(st, val) SKM_sk_unshift(BY_DIR_HASH, (st), (val)) -# define sk_BY_DIR_HASH_find(st, val) SKM_sk_find(BY_DIR_HASH, (st), (val)) -# define sk_BY_DIR_HASH_find_ex(st, val) SKM_sk_find_ex(BY_DIR_HASH, (st), (val)) -# define sk_BY_DIR_HASH_delete(st, i) SKM_sk_delete(BY_DIR_HASH, (st), (i)) -# define sk_BY_DIR_HASH_delete_ptr(st, ptr) SKM_sk_delete_ptr(BY_DIR_HASH, (st), (ptr)) -# define sk_BY_DIR_HASH_insert(st, val, i) SKM_sk_insert(BY_DIR_HASH, (st), (val), (i)) -# define sk_BY_DIR_HASH_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(BY_DIR_HASH, (st), (cmp)) -# define sk_BY_DIR_HASH_dup(st) SKM_sk_dup(BY_DIR_HASH, st) -# define sk_BY_DIR_HASH_pop_free(st, free_func) SKM_sk_pop_free(BY_DIR_HASH, (st), (free_func)) -# define sk_BY_DIR_HASH_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(BY_DIR_HASH, (st), (copy_func), (free_func)) -# define sk_BY_DIR_HASH_shift(st) SKM_sk_shift(BY_DIR_HASH, (st)) -# define sk_BY_DIR_HASH_pop(st) SKM_sk_pop(BY_DIR_HASH, (st)) -# define sk_BY_DIR_HASH_sort(st) SKM_sk_sort(BY_DIR_HASH, (st)) -# define sk_BY_DIR_HASH_is_sorted(st) SKM_sk_is_sorted(BY_DIR_HASH, (st)) -# define sk_CMS_CertificateChoices_new(cmp) SKM_sk_new(CMS_CertificateChoices, (cmp)) -# define sk_CMS_CertificateChoices_new_null() SKM_sk_new_null(CMS_CertificateChoices) -# define sk_CMS_CertificateChoices_free(st) SKM_sk_free(CMS_CertificateChoices, (st)) -# define sk_CMS_CertificateChoices_num(st) SKM_sk_num(CMS_CertificateChoices, (st)) -# define sk_CMS_CertificateChoices_value(st, i) SKM_sk_value(CMS_CertificateChoices, (st), (i)) -# define sk_CMS_CertificateChoices_set(st, i, val) SKM_sk_set(CMS_CertificateChoices, (st), (i), (val)) -# define sk_CMS_CertificateChoices_zero(st) SKM_sk_zero(CMS_CertificateChoices, (st)) -# define sk_CMS_CertificateChoices_push(st, val) SKM_sk_push(CMS_CertificateChoices, (st), (val)) -# define sk_CMS_CertificateChoices_unshift(st, val) SKM_sk_unshift(CMS_CertificateChoices, (st), (val)) -# define sk_CMS_CertificateChoices_find(st, val) SKM_sk_find(CMS_CertificateChoices, (st), (val)) -# define sk_CMS_CertificateChoices_find_ex(st, val) SKM_sk_find_ex(CMS_CertificateChoices, (st), (val)) -# define sk_CMS_CertificateChoices_delete(st, i) SKM_sk_delete(CMS_CertificateChoices, (st), (i)) -# define sk_CMS_CertificateChoices_delete_ptr(st, ptr) SKM_sk_delete_ptr(CMS_CertificateChoices, (st), (ptr)) -# define sk_CMS_CertificateChoices_insert(st, val, i) SKM_sk_insert(CMS_CertificateChoices, (st), (val), (i)) -# define sk_CMS_CertificateChoices_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(CMS_CertificateChoices, (st), (cmp)) -# define sk_CMS_CertificateChoices_dup(st) SKM_sk_dup(CMS_CertificateChoices, st) -# define sk_CMS_CertificateChoices_pop_free(st, free_func) SKM_sk_pop_free(CMS_CertificateChoices, (st), (free_func)) -# define sk_CMS_CertificateChoices_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(CMS_CertificateChoices, (st), (copy_func), (free_func)) -# define sk_CMS_CertificateChoices_shift(st) SKM_sk_shift(CMS_CertificateChoices, (st)) -# define sk_CMS_CertificateChoices_pop(st) SKM_sk_pop(CMS_CertificateChoices, (st)) -# define sk_CMS_CertificateChoices_sort(st) SKM_sk_sort(CMS_CertificateChoices, (st)) -# define sk_CMS_CertificateChoices_is_sorted(st) SKM_sk_is_sorted(CMS_CertificateChoices, (st)) -# define sk_CMS_RecipientEncryptedKey_new(cmp) SKM_sk_new(CMS_RecipientEncryptedKey, (cmp)) -# define sk_CMS_RecipientEncryptedKey_new_null() SKM_sk_new_null(CMS_RecipientEncryptedKey) -# define sk_CMS_RecipientEncryptedKey_free(st) SKM_sk_free(CMS_RecipientEncryptedKey, (st)) -# define sk_CMS_RecipientEncryptedKey_num(st) SKM_sk_num(CMS_RecipientEncryptedKey, (st)) -# define sk_CMS_RecipientEncryptedKey_value(st, i) SKM_sk_value(CMS_RecipientEncryptedKey, (st), (i)) -# define sk_CMS_RecipientEncryptedKey_set(st, i, val) SKM_sk_set(CMS_RecipientEncryptedKey, (st), (i), (val)) -# define sk_CMS_RecipientEncryptedKey_zero(st) SKM_sk_zero(CMS_RecipientEncryptedKey, (st)) -# define sk_CMS_RecipientEncryptedKey_push(st, val) SKM_sk_push(CMS_RecipientEncryptedKey, (st), (val)) -# define sk_CMS_RecipientEncryptedKey_unshift(st, val) SKM_sk_unshift(CMS_RecipientEncryptedKey, (st), (val)) -# define sk_CMS_RecipientEncryptedKey_find(st, val) SKM_sk_find(CMS_RecipientEncryptedKey, (st), (val)) -# define sk_CMS_RecipientEncryptedKey_find_ex(st, val) SKM_sk_find_ex(CMS_RecipientEncryptedKey, (st), (val)) -# define sk_CMS_RecipientEncryptedKey_delete(st, i) SKM_sk_delete(CMS_RecipientEncryptedKey, (st), (i)) -# define sk_CMS_RecipientEncryptedKey_delete_ptr(st, ptr) SKM_sk_delete_ptr(CMS_RecipientEncryptedKey, (st), (ptr)) -# define sk_CMS_RecipientEncryptedKey_insert(st, val, i) SKM_sk_insert(CMS_RecipientEncryptedKey, (st), (val), (i)) -# define sk_CMS_RecipientEncryptedKey_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(CMS_RecipientEncryptedKey, (st), (cmp)) -# define sk_CMS_RecipientEncryptedKey_dup(st) SKM_sk_dup(CMS_RecipientEncryptedKey, st) -# define sk_CMS_RecipientEncryptedKey_pop_free(st, free_func) SKM_sk_pop_free(CMS_RecipientEncryptedKey, (st), (free_func)) -# define sk_CMS_RecipientEncryptedKey_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(CMS_RecipientEncryptedKey, (st), (copy_func), (free_func)) -# define sk_CMS_RecipientEncryptedKey_shift(st) SKM_sk_shift(CMS_RecipientEncryptedKey, (st)) -# define sk_CMS_RecipientEncryptedKey_pop(st) SKM_sk_pop(CMS_RecipientEncryptedKey, (st)) -# define sk_CMS_RecipientEncryptedKey_sort(st) SKM_sk_sort(CMS_RecipientEncryptedKey, (st)) -# define sk_CMS_RecipientEncryptedKey_is_sorted(st) SKM_sk_is_sorted(CMS_RecipientEncryptedKey, (st)) -# define sk_CMS_RecipientInfo_new(cmp) SKM_sk_new(CMS_RecipientInfo, (cmp)) -# define sk_CMS_RecipientInfo_new_null() SKM_sk_new_null(CMS_RecipientInfo) -# define sk_CMS_RecipientInfo_free(st) SKM_sk_free(CMS_RecipientInfo, (st)) -# define sk_CMS_RecipientInfo_num(st) SKM_sk_num(CMS_RecipientInfo, (st)) -# define sk_CMS_RecipientInfo_value(st, i) SKM_sk_value(CMS_RecipientInfo, (st), (i)) -# define sk_CMS_RecipientInfo_set(st, i, val) SKM_sk_set(CMS_RecipientInfo, (st), (i), (val)) -# define sk_CMS_RecipientInfo_zero(st) SKM_sk_zero(CMS_RecipientInfo, (st)) -# define sk_CMS_RecipientInfo_push(st, val) SKM_sk_push(CMS_RecipientInfo, (st), (val)) -# define sk_CMS_RecipientInfo_unshift(st, val) SKM_sk_unshift(CMS_RecipientInfo, (st), (val)) -# define sk_CMS_RecipientInfo_find(st, val) SKM_sk_find(CMS_RecipientInfo, (st), (val)) -# define sk_CMS_RecipientInfo_find_ex(st, val) SKM_sk_find_ex(CMS_RecipientInfo, (st), (val)) -# define sk_CMS_RecipientInfo_delete(st, i) SKM_sk_delete(CMS_RecipientInfo, (st), (i)) -# define sk_CMS_RecipientInfo_delete_ptr(st, ptr) SKM_sk_delete_ptr(CMS_RecipientInfo, (st), (ptr)) -# define sk_CMS_RecipientInfo_insert(st, val, i) SKM_sk_insert(CMS_RecipientInfo, (st), (val), (i)) -# define sk_CMS_RecipientInfo_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(CMS_RecipientInfo, (st), (cmp)) -# define sk_CMS_RecipientInfo_dup(st) SKM_sk_dup(CMS_RecipientInfo, st) -# define sk_CMS_RecipientInfo_pop_free(st, free_func) SKM_sk_pop_free(CMS_RecipientInfo, (st), (free_func)) -# define sk_CMS_RecipientInfo_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(CMS_RecipientInfo, (st), (copy_func), (free_func)) -# define sk_CMS_RecipientInfo_shift(st) SKM_sk_shift(CMS_RecipientInfo, (st)) -# define sk_CMS_RecipientInfo_pop(st) SKM_sk_pop(CMS_RecipientInfo, (st)) -# define sk_CMS_RecipientInfo_sort(st) SKM_sk_sort(CMS_RecipientInfo, (st)) -# define sk_CMS_RecipientInfo_is_sorted(st) SKM_sk_is_sorted(CMS_RecipientInfo, (st)) -# define sk_CMS_RevocationInfoChoice_new(cmp) SKM_sk_new(CMS_RevocationInfoChoice, (cmp)) -# define sk_CMS_RevocationInfoChoice_new_null() SKM_sk_new_null(CMS_RevocationInfoChoice) -# define sk_CMS_RevocationInfoChoice_free(st) SKM_sk_free(CMS_RevocationInfoChoice, (st)) -# define sk_CMS_RevocationInfoChoice_num(st) SKM_sk_num(CMS_RevocationInfoChoice, (st)) -# define sk_CMS_RevocationInfoChoice_value(st, i) SKM_sk_value(CMS_RevocationInfoChoice, (st), (i)) -# define sk_CMS_RevocationInfoChoice_set(st, i, val) SKM_sk_set(CMS_RevocationInfoChoice, (st), (i), (val)) -# define sk_CMS_RevocationInfoChoice_zero(st) SKM_sk_zero(CMS_RevocationInfoChoice, (st)) -# define sk_CMS_RevocationInfoChoice_push(st, val) SKM_sk_push(CMS_RevocationInfoChoice, (st), (val)) -# define sk_CMS_RevocationInfoChoice_unshift(st, val) SKM_sk_unshift(CMS_RevocationInfoChoice, (st), (val)) -# define sk_CMS_RevocationInfoChoice_find(st, val) SKM_sk_find(CMS_RevocationInfoChoice, (st), (val)) -# define sk_CMS_RevocationInfoChoice_find_ex(st, val) SKM_sk_find_ex(CMS_RevocationInfoChoice, (st), (val)) -# define sk_CMS_RevocationInfoChoice_delete(st, i) SKM_sk_delete(CMS_RevocationInfoChoice, (st), (i)) -# define sk_CMS_RevocationInfoChoice_delete_ptr(st, ptr) SKM_sk_delete_ptr(CMS_RevocationInfoChoice, (st), (ptr)) -# define sk_CMS_RevocationInfoChoice_insert(st, val, i) SKM_sk_insert(CMS_RevocationInfoChoice, (st), (val), (i)) -# define sk_CMS_RevocationInfoChoice_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(CMS_RevocationInfoChoice, (st), (cmp)) -# define sk_CMS_RevocationInfoChoice_dup(st) SKM_sk_dup(CMS_RevocationInfoChoice, st) -# define sk_CMS_RevocationInfoChoice_pop_free(st, free_func) SKM_sk_pop_free(CMS_RevocationInfoChoice, (st), (free_func)) -# define sk_CMS_RevocationInfoChoice_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(CMS_RevocationInfoChoice, (st), (copy_func), (free_func)) -# define sk_CMS_RevocationInfoChoice_shift(st) SKM_sk_shift(CMS_RevocationInfoChoice, (st)) -# define sk_CMS_RevocationInfoChoice_pop(st) SKM_sk_pop(CMS_RevocationInfoChoice, (st)) -# define sk_CMS_RevocationInfoChoice_sort(st) SKM_sk_sort(CMS_RevocationInfoChoice, (st)) -# define sk_CMS_RevocationInfoChoice_is_sorted(st) SKM_sk_is_sorted(CMS_RevocationInfoChoice, (st)) -# define sk_CMS_SignerInfo_new(cmp) SKM_sk_new(CMS_SignerInfo, (cmp)) -# define sk_CMS_SignerInfo_new_null() SKM_sk_new_null(CMS_SignerInfo) -# define sk_CMS_SignerInfo_free(st) SKM_sk_free(CMS_SignerInfo, (st)) -# define sk_CMS_SignerInfo_num(st) SKM_sk_num(CMS_SignerInfo, (st)) -# define sk_CMS_SignerInfo_value(st, i) SKM_sk_value(CMS_SignerInfo, (st), (i)) -# define sk_CMS_SignerInfo_set(st, i, val) SKM_sk_set(CMS_SignerInfo, (st), (i), (val)) -# define sk_CMS_SignerInfo_zero(st) SKM_sk_zero(CMS_SignerInfo, (st)) -# define sk_CMS_SignerInfo_push(st, val) SKM_sk_push(CMS_SignerInfo, (st), (val)) -# define sk_CMS_SignerInfo_unshift(st, val) SKM_sk_unshift(CMS_SignerInfo, (st), (val)) -# define sk_CMS_SignerInfo_find(st, val) SKM_sk_find(CMS_SignerInfo, (st), (val)) -# define sk_CMS_SignerInfo_find_ex(st, val) SKM_sk_find_ex(CMS_SignerInfo, (st), (val)) -# define sk_CMS_SignerInfo_delete(st, i) SKM_sk_delete(CMS_SignerInfo, (st), (i)) -# define sk_CMS_SignerInfo_delete_ptr(st, ptr) SKM_sk_delete_ptr(CMS_SignerInfo, (st), (ptr)) -# define sk_CMS_SignerInfo_insert(st, val, i) SKM_sk_insert(CMS_SignerInfo, (st), (val), (i)) -# define sk_CMS_SignerInfo_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(CMS_SignerInfo, (st), (cmp)) -# define sk_CMS_SignerInfo_dup(st) SKM_sk_dup(CMS_SignerInfo, st) -# define sk_CMS_SignerInfo_pop_free(st, free_func) SKM_sk_pop_free(CMS_SignerInfo, (st), (free_func)) -# define sk_CMS_SignerInfo_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(CMS_SignerInfo, (st), (copy_func), (free_func)) -# define sk_CMS_SignerInfo_shift(st) SKM_sk_shift(CMS_SignerInfo, (st)) -# define sk_CMS_SignerInfo_pop(st) SKM_sk_pop(CMS_SignerInfo, (st)) -# define sk_CMS_SignerInfo_sort(st) SKM_sk_sort(CMS_SignerInfo, (st)) -# define sk_CMS_SignerInfo_is_sorted(st) SKM_sk_is_sorted(CMS_SignerInfo, (st)) -# define sk_CONF_IMODULE_new(cmp) SKM_sk_new(CONF_IMODULE, (cmp)) -# define sk_CONF_IMODULE_new_null() SKM_sk_new_null(CONF_IMODULE) -# define sk_CONF_IMODULE_free(st) SKM_sk_free(CONF_IMODULE, (st)) -# define sk_CONF_IMODULE_num(st) SKM_sk_num(CONF_IMODULE, (st)) -# define sk_CONF_IMODULE_value(st, i) SKM_sk_value(CONF_IMODULE, (st), (i)) -# define sk_CONF_IMODULE_set(st, i, val) SKM_sk_set(CONF_IMODULE, (st), (i), (val)) -# define sk_CONF_IMODULE_zero(st) SKM_sk_zero(CONF_IMODULE, (st)) -# define sk_CONF_IMODULE_push(st, val) SKM_sk_push(CONF_IMODULE, (st), (val)) -# define sk_CONF_IMODULE_unshift(st, val) SKM_sk_unshift(CONF_IMODULE, (st), (val)) -# define sk_CONF_IMODULE_find(st, val) SKM_sk_find(CONF_IMODULE, (st), (val)) -# define sk_CONF_IMODULE_find_ex(st, val) SKM_sk_find_ex(CONF_IMODULE, (st), (val)) -# define sk_CONF_IMODULE_delete(st, i) SKM_sk_delete(CONF_IMODULE, (st), (i)) -# define sk_CONF_IMODULE_delete_ptr(st, ptr) SKM_sk_delete_ptr(CONF_IMODULE, (st), (ptr)) -# define sk_CONF_IMODULE_insert(st, val, i) SKM_sk_insert(CONF_IMODULE, (st), (val), (i)) -# define sk_CONF_IMODULE_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(CONF_IMODULE, (st), (cmp)) -# define sk_CONF_IMODULE_dup(st) SKM_sk_dup(CONF_IMODULE, st) -# define sk_CONF_IMODULE_pop_free(st, free_func) SKM_sk_pop_free(CONF_IMODULE, (st), (free_func)) -# define sk_CONF_IMODULE_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(CONF_IMODULE, (st), (copy_func), (free_func)) -# define sk_CONF_IMODULE_shift(st) SKM_sk_shift(CONF_IMODULE, (st)) -# define sk_CONF_IMODULE_pop(st) SKM_sk_pop(CONF_IMODULE, (st)) -# define sk_CONF_IMODULE_sort(st) SKM_sk_sort(CONF_IMODULE, (st)) -# define sk_CONF_IMODULE_is_sorted(st) SKM_sk_is_sorted(CONF_IMODULE, (st)) -# define sk_CONF_MODULE_new(cmp) SKM_sk_new(CONF_MODULE, (cmp)) -# define sk_CONF_MODULE_new_null() SKM_sk_new_null(CONF_MODULE) -# define sk_CONF_MODULE_free(st) SKM_sk_free(CONF_MODULE, (st)) -# define sk_CONF_MODULE_num(st) SKM_sk_num(CONF_MODULE, (st)) -# define sk_CONF_MODULE_value(st, i) SKM_sk_value(CONF_MODULE, (st), (i)) -# define sk_CONF_MODULE_set(st, i, val) SKM_sk_set(CONF_MODULE, (st), (i), (val)) -# define sk_CONF_MODULE_zero(st) SKM_sk_zero(CONF_MODULE, (st)) -# define sk_CONF_MODULE_push(st, val) SKM_sk_push(CONF_MODULE, (st), (val)) -# define sk_CONF_MODULE_unshift(st, val) SKM_sk_unshift(CONF_MODULE, (st), (val)) -# define sk_CONF_MODULE_find(st, val) SKM_sk_find(CONF_MODULE, (st), (val)) -# define sk_CONF_MODULE_find_ex(st, val) SKM_sk_find_ex(CONF_MODULE, (st), (val)) -# define sk_CONF_MODULE_delete(st, i) SKM_sk_delete(CONF_MODULE, (st), (i)) -# define sk_CONF_MODULE_delete_ptr(st, ptr) SKM_sk_delete_ptr(CONF_MODULE, (st), (ptr)) -# define sk_CONF_MODULE_insert(st, val, i) SKM_sk_insert(CONF_MODULE, (st), (val), (i)) -# define sk_CONF_MODULE_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(CONF_MODULE, (st), (cmp)) -# define sk_CONF_MODULE_dup(st) SKM_sk_dup(CONF_MODULE, st) -# define sk_CONF_MODULE_pop_free(st, free_func) SKM_sk_pop_free(CONF_MODULE, (st), (free_func)) -# define sk_CONF_MODULE_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(CONF_MODULE, (st), (copy_func), (free_func)) -# define sk_CONF_MODULE_shift(st) SKM_sk_shift(CONF_MODULE, (st)) -# define sk_CONF_MODULE_pop(st) SKM_sk_pop(CONF_MODULE, (st)) -# define sk_CONF_MODULE_sort(st) SKM_sk_sort(CONF_MODULE, (st)) -# define sk_CONF_MODULE_is_sorted(st) SKM_sk_is_sorted(CONF_MODULE, (st)) -# define sk_CONF_VALUE_new(cmp) SKM_sk_new(CONF_VALUE, (cmp)) -# define sk_CONF_VALUE_new_null() SKM_sk_new_null(CONF_VALUE) -# define sk_CONF_VALUE_free(st) SKM_sk_free(CONF_VALUE, (st)) -# define sk_CONF_VALUE_num(st) SKM_sk_num(CONF_VALUE, (st)) -# define sk_CONF_VALUE_value(st, i) SKM_sk_value(CONF_VALUE, (st), (i)) -# define sk_CONF_VALUE_set(st, i, val) SKM_sk_set(CONF_VALUE, (st), (i), (val)) -# define sk_CONF_VALUE_zero(st) SKM_sk_zero(CONF_VALUE, (st)) -# define sk_CONF_VALUE_push(st, val) SKM_sk_push(CONF_VALUE, (st), (val)) -# define sk_CONF_VALUE_unshift(st, val) SKM_sk_unshift(CONF_VALUE, (st), (val)) -# define sk_CONF_VALUE_find(st, val) SKM_sk_find(CONF_VALUE, (st), (val)) -# define sk_CONF_VALUE_find_ex(st, val) SKM_sk_find_ex(CONF_VALUE, (st), (val)) -# define sk_CONF_VALUE_delete(st, i) SKM_sk_delete(CONF_VALUE, (st), (i)) -# define sk_CONF_VALUE_delete_ptr(st, ptr) SKM_sk_delete_ptr(CONF_VALUE, (st), (ptr)) -# define sk_CONF_VALUE_insert(st, val, i) SKM_sk_insert(CONF_VALUE, (st), (val), (i)) -# define sk_CONF_VALUE_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(CONF_VALUE, (st), (cmp)) -# define sk_CONF_VALUE_dup(st) SKM_sk_dup(CONF_VALUE, st) -# define sk_CONF_VALUE_pop_free(st, free_func) SKM_sk_pop_free(CONF_VALUE, (st), (free_func)) -# define sk_CONF_VALUE_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(CONF_VALUE, (st), (copy_func), (free_func)) -# define sk_CONF_VALUE_shift(st) SKM_sk_shift(CONF_VALUE, (st)) -# define sk_CONF_VALUE_pop(st) SKM_sk_pop(CONF_VALUE, (st)) -# define sk_CONF_VALUE_sort(st) SKM_sk_sort(CONF_VALUE, (st)) -# define sk_CONF_VALUE_is_sorted(st) SKM_sk_is_sorted(CONF_VALUE, (st)) -# define sk_CRYPTO_EX_DATA_FUNCS_new(cmp) SKM_sk_new(CRYPTO_EX_DATA_FUNCS, (cmp)) -# define sk_CRYPTO_EX_DATA_FUNCS_new_null() SKM_sk_new_null(CRYPTO_EX_DATA_FUNCS) -# define sk_CRYPTO_EX_DATA_FUNCS_free(st) SKM_sk_free(CRYPTO_EX_DATA_FUNCS, (st)) -# define sk_CRYPTO_EX_DATA_FUNCS_num(st) SKM_sk_num(CRYPTO_EX_DATA_FUNCS, (st)) -# define sk_CRYPTO_EX_DATA_FUNCS_value(st, i) SKM_sk_value(CRYPTO_EX_DATA_FUNCS, (st), (i)) -# define sk_CRYPTO_EX_DATA_FUNCS_set(st, i, val) SKM_sk_set(CRYPTO_EX_DATA_FUNCS, (st), (i), (val)) -# define sk_CRYPTO_EX_DATA_FUNCS_zero(st) SKM_sk_zero(CRYPTO_EX_DATA_FUNCS, (st)) -# define sk_CRYPTO_EX_DATA_FUNCS_push(st, val) SKM_sk_push(CRYPTO_EX_DATA_FUNCS, (st), (val)) -# define sk_CRYPTO_EX_DATA_FUNCS_unshift(st, val) SKM_sk_unshift(CRYPTO_EX_DATA_FUNCS, (st), (val)) -# define sk_CRYPTO_EX_DATA_FUNCS_find(st, val) SKM_sk_find(CRYPTO_EX_DATA_FUNCS, (st), (val)) -# define sk_CRYPTO_EX_DATA_FUNCS_find_ex(st, val) SKM_sk_find_ex(CRYPTO_EX_DATA_FUNCS, (st), (val)) -# define sk_CRYPTO_EX_DATA_FUNCS_delete(st, i) SKM_sk_delete(CRYPTO_EX_DATA_FUNCS, (st), (i)) -# define sk_CRYPTO_EX_DATA_FUNCS_delete_ptr(st, ptr) SKM_sk_delete_ptr(CRYPTO_EX_DATA_FUNCS, (st), (ptr)) -# define sk_CRYPTO_EX_DATA_FUNCS_insert(st, val, i) SKM_sk_insert(CRYPTO_EX_DATA_FUNCS, (st), (val), (i)) -# define sk_CRYPTO_EX_DATA_FUNCS_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(CRYPTO_EX_DATA_FUNCS, (st), (cmp)) -# define sk_CRYPTO_EX_DATA_FUNCS_dup(st) SKM_sk_dup(CRYPTO_EX_DATA_FUNCS, st) -# define sk_CRYPTO_EX_DATA_FUNCS_pop_free(st, free_func) SKM_sk_pop_free(CRYPTO_EX_DATA_FUNCS, (st), (free_func)) -# define sk_CRYPTO_EX_DATA_FUNCS_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(CRYPTO_EX_DATA_FUNCS, (st), (copy_func), (free_func)) -# define sk_CRYPTO_EX_DATA_FUNCS_shift(st) SKM_sk_shift(CRYPTO_EX_DATA_FUNCS, (st)) -# define sk_CRYPTO_EX_DATA_FUNCS_pop(st) SKM_sk_pop(CRYPTO_EX_DATA_FUNCS, (st)) -# define sk_CRYPTO_EX_DATA_FUNCS_sort(st) SKM_sk_sort(CRYPTO_EX_DATA_FUNCS, (st)) -# define sk_CRYPTO_EX_DATA_FUNCS_is_sorted(st) SKM_sk_is_sorted(CRYPTO_EX_DATA_FUNCS, (st)) -# define sk_CRYPTO_dynlock_new(cmp) SKM_sk_new(CRYPTO_dynlock, (cmp)) -# define sk_CRYPTO_dynlock_new_null() SKM_sk_new_null(CRYPTO_dynlock) -# define sk_CRYPTO_dynlock_free(st) SKM_sk_free(CRYPTO_dynlock, (st)) -# define sk_CRYPTO_dynlock_num(st) SKM_sk_num(CRYPTO_dynlock, (st)) -# define sk_CRYPTO_dynlock_value(st, i) SKM_sk_value(CRYPTO_dynlock, (st), (i)) -# define sk_CRYPTO_dynlock_set(st, i, val) SKM_sk_set(CRYPTO_dynlock, (st), (i), (val)) -# define sk_CRYPTO_dynlock_zero(st) SKM_sk_zero(CRYPTO_dynlock, (st)) -# define sk_CRYPTO_dynlock_push(st, val) SKM_sk_push(CRYPTO_dynlock, (st), (val)) -# define sk_CRYPTO_dynlock_unshift(st, val) SKM_sk_unshift(CRYPTO_dynlock, (st), (val)) -# define sk_CRYPTO_dynlock_find(st, val) SKM_sk_find(CRYPTO_dynlock, (st), (val)) -# define sk_CRYPTO_dynlock_find_ex(st, val) SKM_sk_find_ex(CRYPTO_dynlock, (st), (val)) -# define sk_CRYPTO_dynlock_delete(st, i) SKM_sk_delete(CRYPTO_dynlock, (st), (i)) -# define sk_CRYPTO_dynlock_delete_ptr(st, ptr) SKM_sk_delete_ptr(CRYPTO_dynlock, (st), (ptr)) -# define sk_CRYPTO_dynlock_insert(st, val, i) SKM_sk_insert(CRYPTO_dynlock, (st), (val), (i)) -# define sk_CRYPTO_dynlock_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(CRYPTO_dynlock, (st), (cmp)) -# define sk_CRYPTO_dynlock_dup(st) SKM_sk_dup(CRYPTO_dynlock, st) -# define sk_CRYPTO_dynlock_pop_free(st, free_func) SKM_sk_pop_free(CRYPTO_dynlock, (st), (free_func)) -# define sk_CRYPTO_dynlock_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(CRYPTO_dynlock, (st), (copy_func), (free_func)) -# define sk_CRYPTO_dynlock_shift(st) SKM_sk_shift(CRYPTO_dynlock, (st)) -# define sk_CRYPTO_dynlock_pop(st) SKM_sk_pop(CRYPTO_dynlock, (st)) -# define sk_CRYPTO_dynlock_sort(st) SKM_sk_sort(CRYPTO_dynlock, (st)) -# define sk_CRYPTO_dynlock_is_sorted(st) SKM_sk_is_sorted(CRYPTO_dynlock, (st)) -# define sk_DIST_POINT_new(cmp) SKM_sk_new(DIST_POINT, (cmp)) -# define sk_DIST_POINT_new_null() SKM_sk_new_null(DIST_POINT) -# define sk_DIST_POINT_free(st) SKM_sk_free(DIST_POINT, (st)) -# define sk_DIST_POINT_num(st) SKM_sk_num(DIST_POINT, (st)) -# define sk_DIST_POINT_value(st, i) SKM_sk_value(DIST_POINT, (st), (i)) -# define sk_DIST_POINT_set(st, i, val) SKM_sk_set(DIST_POINT, (st), (i), (val)) -# define sk_DIST_POINT_zero(st) SKM_sk_zero(DIST_POINT, (st)) -# define sk_DIST_POINT_push(st, val) SKM_sk_push(DIST_POINT, (st), (val)) -# define sk_DIST_POINT_unshift(st, val) SKM_sk_unshift(DIST_POINT, (st), (val)) -# define sk_DIST_POINT_find(st, val) SKM_sk_find(DIST_POINT, (st), (val)) -# define sk_DIST_POINT_find_ex(st, val) SKM_sk_find_ex(DIST_POINT, (st), (val)) -# define sk_DIST_POINT_delete(st, i) SKM_sk_delete(DIST_POINT, (st), (i)) -# define sk_DIST_POINT_delete_ptr(st, ptr) SKM_sk_delete_ptr(DIST_POINT, (st), (ptr)) -# define sk_DIST_POINT_insert(st, val, i) SKM_sk_insert(DIST_POINT, (st), (val), (i)) -# define sk_DIST_POINT_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(DIST_POINT, (st), (cmp)) -# define sk_DIST_POINT_dup(st) SKM_sk_dup(DIST_POINT, st) -# define sk_DIST_POINT_pop_free(st, free_func) SKM_sk_pop_free(DIST_POINT, (st), (free_func)) -# define sk_DIST_POINT_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(DIST_POINT, (st), (copy_func), (free_func)) -# define sk_DIST_POINT_shift(st) SKM_sk_shift(DIST_POINT, (st)) -# define sk_DIST_POINT_pop(st) SKM_sk_pop(DIST_POINT, (st)) -# define sk_DIST_POINT_sort(st) SKM_sk_sort(DIST_POINT, (st)) -# define sk_DIST_POINT_is_sorted(st) SKM_sk_is_sorted(DIST_POINT, (st)) -# define sk_ENGINE_new(cmp) SKM_sk_new(ENGINE, (cmp)) -# define sk_ENGINE_new_null() SKM_sk_new_null(ENGINE) -# define sk_ENGINE_free(st) SKM_sk_free(ENGINE, (st)) -# define sk_ENGINE_num(st) SKM_sk_num(ENGINE, (st)) -# define sk_ENGINE_value(st, i) SKM_sk_value(ENGINE, (st), (i)) -# define sk_ENGINE_set(st, i, val) SKM_sk_set(ENGINE, (st), (i), (val)) -# define sk_ENGINE_zero(st) SKM_sk_zero(ENGINE, (st)) -# define sk_ENGINE_push(st, val) SKM_sk_push(ENGINE, (st), (val)) -# define sk_ENGINE_unshift(st, val) SKM_sk_unshift(ENGINE, (st), (val)) -# define sk_ENGINE_find(st, val) SKM_sk_find(ENGINE, (st), (val)) -# define sk_ENGINE_find_ex(st, val) SKM_sk_find_ex(ENGINE, (st), (val)) -# define sk_ENGINE_delete(st, i) SKM_sk_delete(ENGINE, (st), (i)) -# define sk_ENGINE_delete_ptr(st, ptr) SKM_sk_delete_ptr(ENGINE, (st), (ptr)) -# define sk_ENGINE_insert(st, val, i) SKM_sk_insert(ENGINE, (st), (val), (i)) -# define sk_ENGINE_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(ENGINE, (st), (cmp)) -# define sk_ENGINE_dup(st) SKM_sk_dup(ENGINE, st) -# define sk_ENGINE_pop_free(st, free_func) SKM_sk_pop_free(ENGINE, (st), (free_func)) -# define sk_ENGINE_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(ENGINE, (st), (copy_func), (free_func)) -# define sk_ENGINE_shift(st) SKM_sk_shift(ENGINE, (st)) -# define sk_ENGINE_pop(st) SKM_sk_pop(ENGINE, (st)) -# define sk_ENGINE_sort(st) SKM_sk_sort(ENGINE, (st)) -# define sk_ENGINE_is_sorted(st) SKM_sk_is_sorted(ENGINE, (st)) -# define sk_ENGINE_CLEANUP_ITEM_new(cmp) SKM_sk_new(ENGINE_CLEANUP_ITEM, (cmp)) -# define sk_ENGINE_CLEANUP_ITEM_new_null() SKM_sk_new_null(ENGINE_CLEANUP_ITEM) -# define sk_ENGINE_CLEANUP_ITEM_free(st) SKM_sk_free(ENGINE_CLEANUP_ITEM, (st)) -# define sk_ENGINE_CLEANUP_ITEM_num(st) SKM_sk_num(ENGINE_CLEANUP_ITEM, (st)) -# define sk_ENGINE_CLEANUP_ITEM_value(st, i) SKM_sk_value(ENGINE_CLEANUP_ITEM, (st), (i)) -# define sk_ENGINE_CLEANUP_ITEM_set(st, i, val) SKM_sk_set(ENGINE_CLEANUP_ITEM, (st), (i), (val)) -# define sk_ENGINE_CLEANUP_ITEM_zero(st) SKM_sk_zero(ENGINE_CLEANUP_ITEM, (st)) -# define sk_ENGINE_CLEANUP_ITEM_push(st, val) SKM_sk_push(ENGINE_CLEANUP_ITEM, (st), (val)) -# define sk_ENGINE_CLEANUP_ITEM_unshift(st, val) SKM_sk_unshift(ENGINE_CLEANUP_ITEM, (st), (val)) -# define sk_ENGINE_CLEANUP_ITEM_find(st, val) SKM_sk_find(ENGINE_CLEANUP_ITEM, (st), (val)) -# define sk_ENGINE_CLEANUP_ITEM_find_ex(st, val) SKM_sk_find_ex(ENGINE_CLEANUP_ITEM, (st), (val)) -# define sk_ENGINE_CLEANUP_ITEM_delete(st, i) SKM_sk_delete(ENGINE_CLEANUP_ITEM, (st), (i)) -# define sk_ENGINE_CLEANUP_ITEM_delete_ptr(st, ptr) SKM_sk_delete_ptr(ENGINE_CLEANUP_ITEM, (st), (ptr)) -# define sk_ENGINE_CLEANUP_ITEM_insert(st, val, i) SKM_sk_insert(ENGINE_CLEANUP_ITEM, (st), (val), (i)) -# define sk_ENGINE_CLEANUP_ITEM_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(ENGINE_CLEANUP_ITEM, (st), (cmp)) -# define sk_ENGINE_CLEANUP_ITEM_dup(st) SKM_sk_dup(ENGINE_CLEANUP_ITEM, st) -# define sk_ENGINE_CLEANUP_ITEM_pop_free(st, free_func) SKM_sk_pop_free(ENGINE_CLEANUP_ITEM, (st), (free_func)) -# define sk_ENGINE_CLEANUP_ITEM_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(ENGINE_CLEANUP_ITEM, (st), (copy_func), (free_func)) -# define sk_ENGINE_CLEANUP_ITEM_shift(st) SKM_sk_shift(ENGINE_CLEANUP_ITEM, (st)) -# define sk_ENGINE_CLEANUP_ITEM_pop(st) SKM_sk_pop(ENGINE_CLEANUP_ITEM, (st)) -# define sk_ENGINE_CLEANUP_ITEM_sort(st) SKM_sk_sort(ENGINE_CLEANUP_ITEM, (st)) -# define sk_ENGINE_CLEANUP_ITEM_is_sorted(st) SKM_sk_is_sorted(ENGINE_CLEANUP_ITEM, (st)) -# define sk_ESS_CERT_ID_new(cmp) SKM_sk_new(ESS_CERT_ID, (cmp)) -# define sk_ESS_CERT_ID_new_null() SKM_sk_new_null(ESS_CERT_ID) -# define sk_ESS_CERT_ID_free(st) SKM_sk_free(ESS_CERT_ID, (st)) -# define sk_ESS_CERT_ID_num(st) SKM_sk_num(ESS_CERT_ID, (st)) -# define sk_ESS_CERT_ID_value(st, i) SKM_sk_value(ESS_CERT_ID, (st), (i)) -# define sk_ESS_CERT_ID_set(st, i, val) SKM_sk_set(ESS_CERT_ID, (st), (i), (val)) -# define sk_ESS_CERT_ID_zero(st) SKM_sk_zero(ESS_CERT_ID, (st)) -# define sk_ESS_CERT_ID_push(st, val) SKM_sk_push(ESS_CERT_ID, (st), (val)) -# define sk_ESS_CERT_ID_unshift(st, val) SKM_sk_unshift(ESS_CERT_ID, (st), (val)) -# define sk_ESS_CERT_ID_find(st, val) SKM_sk_find(ESS_CERT_ID, (st), (val)) -# define sk_ESS_CERT_ID_find_ex(st, val) SKM_sk_find_ex(ESS_CERT_ID, (st), (val)) -# define sk_ESS_CERT_ID_delete(st, i) SKM_sk_delete(ESS_CERT_ID, (st), (i)) -# define sk_ESS_CERT_ID_delete_ptr(st, ptr) SKM_sk_delete_ptr(ESS_CERT_ID, (st), (ptr)) -# define sk_ESS_CERT_ID_insert(st, val, i) SKM_sk_insert(ESS_CERT_ID, (st), (val), (i)) -# define sk_ESS_CERT_ID_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(ESS_CERT_ID, (st), (cmp)) -# define sk_ESS_CERT_ID_dup(st) SKM_sk_dup(ESS_CERT_ID, st) -# define sk_ESS_CERT_ID_pop_free(st, free_func) SKM_sk_pop_free(ESS_CERT_ID, (st), (free_func)) -# define sk_ESS_CERT_ID_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(ESS_CERT_ID, (st), (copy_func), (free_func)) -# define sk_ESS_CERT_ID_shift(st) SKM_sk_shift(ESS_CERT_ID, (st)) -# define sk_ESS_CERT_ID_pop(st) SKM_sk_pop(ESS_CERT_ID, (st)) -# define sk_ESS_CERT_ID_sort(st) SKM_sk_sort(ESS_CERT_ID, (st)) -# define sk_ESS_CERT_ID_is_sorted(st) SKM_sk_is_sorted(ESS_CERT_ID, (st)) -# define sk_EVP_MD_new(cmp) SKM_sk_new(EVP_MD, (cmp)) -# define sk_EVP_MD_new_null() SKM_sk_new_null(EVP_MD) -# define sk_EVP_MD_free(st) SKM_sk_free(EVP_MD, (st)) -# define sk_EVP_MD_num(st) SKM_sk_num(EVP_MD, (st)) -# define sk_EVP_MD_value(st, i) SKM_sk_value(EVP_MD, (st), (i)) -# define sk_EVP_MD_set(st, i, val) SKM_sk_set(EVP_MD, (st), (i), (val)) -# define sk_EVP_MD_zero(st) SKM_sk_zero(EVP_MD, (st)) -# define sk_EVP_MD_push(st, val) SKM_sk_push(EVP_MD, (st), (val)) -# define sk_EVP_MD_unshift(st, val) SKM_sk_unshift(EVP_MD, (st), (val)) -# define sk_EVP_MD_find(st, val) SKM_sk_find(EVP_MD, (st), (val)) -# define sk_EVP_MD_find_ex(st, val) SKM_sk_find_ex(EVP_MD, (st), (val)) -# define sk_EVP_MD_delete(st, i) SKM_sk_delete(EVP_MD, (st), (i)) -# define sk_EVP_MD_delete_ptr(st, ptr) SKM_sk_delete_ptr(EVP_MD, (st), (ptr)) -# define sk_EVP_MD_insert(st, val, i) SKM_sk_insert(EVP_MD, (st), (val), (i)) -# define sk_EVP_MD_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(EVP_MD, (st), (cmp)) -# define sk_EVP_MD_dup(st) SKM_sk_dup(EVP_MD, st) -# define sk_EVP_MD_pop_free(st, free_func) SKM_sk_pop_free(EVP_MD, (st), (free_func)) -# define sk_EVP_MD_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(EVP_MD, (st), (copy_func), (free_func)) -# define sk_EVP_MD_shift(st) SKM_sk_shift(EVP_MD, (st)) -# define sk_EVP_MD_pop(st) SKM_sk_pop(EVP_MD, (st)) -# define sk_EVP_MD_sort(st) SKM_sk_sort(EVP_MD, (st)) -# define sk_EVP_MD_is_sorted(st) SKM_sk_is_sorted(EVP_MD, (st)) -# define sk_EVP_PBE_CTL_new(cmp) SKM_sk_new(EVP_PBE_CTL, (cmp)) -# define sk_EVP_PBE_CTL_new_null() SKM_sk_new_null(EVP_PBE_CTL) -# define sk_EVP_PBE_CTL_free(st) SKM_sk_free(EVP_PBE_CTL, (st)) -# define sk_EVP_PBE_CTL_num(st) SKM_sk_num(EVP_PBE_CTL, (st)) -# define sk_EVP_PBE_CTL_value(st, i) SKM_sk_value(EVP_PBE_CTL, (st), (i)) -# define sk_EVP_PBE_CTL_set(st, i, val) SKM_sk_set(EVP_PBE_CTL, (st), (i), (val)) -# define sk_EVP_PBE_CTL_zero(st) SKM_sk_zero(EVP_PBE_CTL, (st)) -# define sk_EVP_PBE_CTL_push(st, val) SKM_sk_push(EVP_PBE_CTL, (st), (val)) -# define sk_EVP_PBE_CTL_unshift(st, val) SKM_sk_unshift(EVP_PBE_CTL, (st), (val)) -# define sk_EVP_PBE_CTL_find(st, val) SKM_sk_find(EVP_PBE_CTL, (st), (val)) -# define sk_EVP_PBE_CTL_find_ex(st, val) SKM_sk_find_ex(EVP_PBE_CTL, (st), (val)) -# define sk_EVP_PBE_CTL_delete(st, i) SKM_sk_delete(EVP_PBE_CTL, (st), (i)) -# define sk_EVP_PBE_CTL_delete_ptr(st, ptr) SKM_sk_delete_ptr(EVP_PBE_CTL, (st), (ptr)) -# define sk_EVP_PBE_CTL_insert(st, val, i) SKM_sk_insert(EVP_PBE_CTL, (st), (val), (i)) -# define sk_EVP_PBE_CTL_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(EVP_PBE_CTL, (st), (cmp)) -# define sk_EVP_PBE_CTL_dup(st) SKM_sk_dup(EVP_PBE_CTL, st) -# define sk_EVP_PBE_CTL_pop_free(st, free_func) SKM_sk_pop_free(EVP_PBE_CTL, (st), (free_func)) -# define sk_EVP_PBE_CTL_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(EVP_PBE_CTL, (st), (copy_func), (free_func)) -# define sk_EVP_PBE_CTL_shift(st) SKM_sk_shift(EVP_PBE_CTL, (st)) -# define sk_EVP_PBE_CTL_pop(st) SKM_sk_pop(EVP_PBE_CTL, (st)) -# define sk_EVP_PBE_CTL_sort(st) SKM_sk_sort(EVP_PBE_CTL, (st)) -# define sk_EVP_PBE_CTL_is_sorted(st) SKM_sk_is_sorted(EVP_PBE_CTL, (st)) -# define sk_EVP_PKEY_ASN1_METHOD_new(cmp) SKM_sk_new(EVP_PKEY_ASN1_METHOD, (cmp)) -# define sk_EVP_PKEY_ASN1_METHOD_new_null() SKM_sk_new_null(EVP_PKEY_ASN1_METHOD) -# define sk_EVP_PKEY_ASN1_METHOD_free(st) SKM_sk_free(EVP_PKEY_ASN1_METHOD, (st)) -# define sk_EVP_PKEY_ASN1_METHOD_num(st) SKM_sk_num(EVP_PKEY_ASN1_METHOD, (st)) -# define sk_EVP_PKEY_ASN1_METHOD_value(st, i) SKM_sk_value(EVP_PKEY_ASN1_METHOD, (st), (i)) -# define sk_EVP_PKEY_ASN1_METHOD_set(st, i, val) SKM_sk_set(EVP_PKEY_ASN1_METHOD, (st), (i), (val)) -# define sk_EVP_PKEY_ASN1_METHOD_zero(st) SKM_sk_zero(EVP_PKEY_ASN1_METHOD, (st)) -# define sk_EVP_PKEY_ASN1_METHOD_push(st, val) SKM_sk_push(EVP_PKEY_ASN1_METHOD, (st), (val)) -# define sk_EVP_PKEY_ASN1_METHOD_unshift(st, val) SKM_sk_unshift(EVP_PKEY_ASN1_METHOD, (st), (val)) -# define sk_EVP_PKEY_ASN1_METHOD_find(st, val) SKM_sk_find(EVP_PKEY_ASN1_METHOD, (st), (val)) -# define sk_EVP_PKEY_ASN1_METHOD_find_ex(st, val) SKM_sk_find_ex(EVP_PKEY_ASN1_METHOD, (st), (val)) -# define sk_EVP_PKEY_ASN1_METHOD_delete(st, i) SKM_sk_delete(EVP_PKEY_ASN1_METHOD, (st), (i)) -# define sk_EVP_PKEY_ASN1_METHOD_delete_ptr(st, ptr) SKM_sk_delete_ptr(EVP_PKEY_ASN1_METHOD, (st), (ptr)) -# define sk_EVP_PKEY_ASN1_METHOD_insert(st, val, i) SKM_sk_insert(EVP_PKEY_ASN1_METHOD, (st), (val), (i)) -# define sk_EVP_PKEY_ASN1_METHOD_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(EVP_PKEY_ASN1_METHOD, (st), (cmp)) -# define sk_EVP_PKEY_ASN1_METHOD_dup(st) SKM_sk_dup(EVP_PKEY_ASN1_METHOD, st) -# define sk_EVP_PKEY_ASN1_METHOD_pop_free(st, free_func) SKM_sk_pop_free(EVP_PKEY_ASN1_METHOD, (st), (free_func)) -# define sk_EVP_PKEY_ASN1_METHOD_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(EVP_PKEY_ASN1_METHOD, (st), (copy_func), (free_func)) -# define sk_EVP_PKEY_ASN1_METHOD_shift(st) SKM_sk_shift(EVP_PKEY_ASN1_METHOD, (st)) -# define sk_EVP_PKEY_ASN1_METHOD_pop(st) SKM_sk_pop(EVP_PKEY_ASN1_METHOD, (st)) -# define sk_EVP_PKEY_ASN1_METHOD_sort(st) SKM_sk_sort(EVP_PKEY_ASN1_METHOD, (st)) -# define sk_EVP_PKEY_ASN1_METHOD_is_sorted(st) SKM_sk_is_sorted(EVP_PKEY_ASN1_METHOD, (st)) -# define sk_EVP_PKEY_METHOD_new(cmp) SKM_sk_new(EVP_PKEY_METHOD, (cmp)) -# define sk_EVP_PKEY_METHOD_new_null() SKM_sk_new_null(EVP_PKEY_METHOD) -# define sk_EVP_PKEY_METHOD_free(st) SKM_sk_free(EVP_PKEY_METHOD, (st)) -# define sk_EVP_PKEY_METHOD_num(st) SKM_sk_num(EVP_PKEY_METHOD, (st)) -# define sk_EVP_PKEY_METHOD_value(st, i) SKM_sk_value(EVP_PKEY_METHOD, (st), (i)) -# define sk_EVP_PKEY_METHOD_set(st, i, val) SKM_sk_set(EVP_PKEY_METHOD, (st), (i), (val)) -# define sk_EVP_PKEY_METHOD_zero(st) SKM_sk_zero(EVP_PKEY_METHOD, (st)) -# define sk_EVP_PKEY_METHOD_push(st, val) SKM_sk_push(EVP_PKEY_METHOD, (st), (val)) -# define sk_EVP_PKEY_METHOD_unshift(st, val) SKM_sk_unshift(EVP_PKEY_METHOD, (st), (val)) -# define sk_EVP_PKEY_METHOD_find(st, val) SKM_sk_find(EVP_PKEY_METHOD, (st), (val)) -# define sk_EVP_PKEY_METHOD_find_ex(st, val) SKM_sk_find_ex(EVP_PKEY_METHOD, (st), (val)) -# define sk_EVP_PKEY_METHOD_delete(st, i) SKM_sk_delete(EVP_PKEY_METHOD, (st), (i)) -# define sk_EVP_PKEY_METHOD_delete_ptr(st, ptr) SKM_sk_delete_ptr(EVP_PKEY_METHOD, (st), (ptr)) -# define sk_EVP_PKEY_METHOD_insert(st, val, i) SKM_sk_insert(EVP_PKEY_METHOD, (st), (val), (i)) -# define sk_EVP_PKEY_METHOD_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(EVP_PKEY_METHOD, (st), (cmp)) -# define sk_EVP_PKEY_METHOD_dup(st) SKM_sk_dup(EVP_PKEY_METHOD, st) -# define sk_EVP_PKEY_METHOD_pop_free(st, free_func) SKM_sk_pop_free(EVP_PKEY_METHOD, (st), (free_func)) -# define sk_EVP_PKEY_METHOD_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(EVP_PKEY_METHOD, (st), (copy_func), (free_func)) -# define sk_EVP_PKEY_METHOD_shift(st) SKM_sk_shift(EVP_PKEY_METHOD, (st)) -# define sk_EVP_PKEY_METHOD_pop(st) SKM_sk_pop(EVP_PKEY_METHOD, (st)) -# define sk_EVP_PKEY_METHOD_sort(st) SKM_sk_sort(EVP_PKEY_METHOD, (st)) -# define sk_EVP_PKEY_METHOD_is_sorted(st) SKM_sk_is_sorted(EVP_PKEY_METHOD, (st)) -# define sk_GENERAL_NAME_new(cmp) SKM_sk_new(GENERAL_NAME, (cmp)) -# define sk_GENERAL_NAME_new_null() SKM_sk_new_null(GENERAL_NAME) -# define sk_GENERAL_NAME_free(st) SKM_sk_free(GENERAL_NAME, (st)) -# define sk_GENERAL_NAME_num(st) SKM_sk_num(GENERAL_NAME, (st)) -# define sk_GENERAL_NAME_value(st, i) SKM_sk_value(GENERAL_NAME, (st), (i)) -# define sk_GENERAL_NAME_set(st, i, val) SKM_sk_set(GENERAL_NAME, (st), (i), (val)) -# define sk_GENERAL_NAME_zero(st) SKM_sk_zero(GENERAL_NAME, (st)) -# define sk_GENERAL_NAME_push(st, val) SKM_sk_push(GENERAL_NAME, (st), (val)) -# define sk_GENERAL_NAME_unshift(st, val) SKM_sk_unshift(GENERAL_NAME, (st), (val)) -# define sk_GENERAL_NAME_find(st, val) SKM_sk_find(GENERAL_NAME, (st), (val)) -# define sk_GENERAL_NAME_find_ex(st, val) SKM_sk_find_ex(GENERAL_NAME, (st), (val)) -# define sk_GENERAL_NAME_delete(st, i) SKM_sk_delete(GENERAL_NAME, (st), (i)) -# define sk_GENERAL_NAME_delete_ptr(st, ptr) SKM_sk_delete_ptr(GENERAL_NAME, (st), (ptr)) -# define sk_GENERAL_NAME_insert(st, val, i) SKM_sk_insert(GENERAL_NAME, (st), (val), (i)) -# define sk_GENERAL_NAME_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(GENERAL_NAME, (st), (cmp)) -# define sk_GENERAL_NAME_dup(st) SKM_sk_dup(GENERAL_NAME, st) -# define sk_GENERAL_NAME_pop_free(st, free_func) SKM_sk_pop_free(GENERAL_NAME, (st), (free_func)) -# define sk_GENERAL_NAME_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(GENERAL_NAME, (st), (copy_func), (free_func)) -# define sk_GENERAL_NAME_shift(st) SKM_sk_shift(GENERAL_NAME, (st)) -# define sk_GENERAL_NAME_pop(st) SKM_sk_pop(GENERAL_NAME, (st)) -# define sk_GENERAL_NAME_sort(st) SKM_sk_sort(GENERAL_NAME, (st)) -# define sk_GENERAL_NAME_is_sorted(st) SKM_sk_is_sorted(GENERAL_NAME, (st)) -# define sk_GENERAL_NAMES_new(cmp) SKM_sk_new(GENERAL_NAMES, (cmp)) -# define sk_GENERAL_NAMES_new_null() SKM_sk_new_null(GENERAL_NAMES) -# define sk_GENERAL_NAMES_free(st) SKM_sk_free(GENERAL_NAMES, (st)) -# define sk_GENERAL_NAMES_num(st) SKM_sk_num(GENERAL_NAMES, (st)) -# define sk_GENERAL_NAMES_value(st, i) SKM_sk_value(GENERAL_NAMES, (st), (i)) -# define sk_GENERAL_NAMES_set(st, i, val) SKM_sk_set(GENERAL_NAMES, (st), (i), (val)) -# define sk_GENERAL_NAMES_zero(st) SKM_sk_zero(GENERAL_NAMES, (st)) -# define sk_GENERAL_NAMES_push(st, val) SKM_sk_push(GENERAL_NAMES, (st), (val)) -# define sk_GENERAL_NAMES_unshift(st, val) SKM_sk_unshift(GENERAL_NAMES, (st), (val)) -# define sk_GENERAL_NAMES_find(st, val) SKM_sk_find(GENERAL_NAMES, (st), (val)) -# define sk_GENERAL_NAMES_find_ex(st, val) SKM_sk_find_ex(GENERAL_NAMES, (st), (val)) -# define sk_GENERAL_NAMES_delete(st, i) SKM_sk_delete(GENERAL_NAMES, (st), (i)) -# define sk_GENERAL_NAMES_delete_ptr(st, ptr) SKM_sk_delete_ptr(GENERAL_NAMES, (st), (ptr)) -# define sk_GENERAL_NAMES_insert(st, val, i) SKM_sk_insert(GENERAL_NAMES, (st), (val), (i)) -# define sk_GENERAL_NAMES_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(GENERAL_NAMES, (st), (cmp)) -# define sk_GENERAL_NAMES_dup(st) SKM_sk_dup(GENERAL_NAMES, st) -# define sk_GENERAL_NAMES_pop_free(st, free_func) SKM_sk_pop_free(GENERAL_NAMES, (st), (free_func)) -# define sk_GENERAL_NAMES_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(GENERAL_NAMES, (st), (copy_func), (free_func)) -# define sk_GENERAL_NAMES_shift(st) SKM_sk_shift(GENERAL_NAMES, (st)) -# define sk_GENERAL_NAMES_pop(st) SKM_sk_pop(GENERAL_NAMES, (st)) -# define sk_GENERAL_NAMES_sort(st) SKM_sk_sort(GENERAL_NAMES, (st)) -# define sk_GENERAL_NAMES_is_sorted(st) SKM_sk_is_sorted(GENERAL_NAMES, (st)) -# define sk_GENERAL_SUBTREE_new(cmp) SKM_sk_new(GENERAL_SUBTREE, (cmp)) -# define sk_GENERAL_SUBTREE_new_null() SKM_sk_new_null(GENERAL_SUBTREE) -# define sk_GENERAL_SUBTREE_free(st) SKM_sk_free(GENERAL_SUBTREE, (st)) -# define sk_GENERAL_SUBTREE_num(st) SKM_sk_num(GENERAL_SUBTREE, (st)) -# define sk_GENERAL_SUBTREE_value(st, i) SKM_sk_value(GENERAL_SUBTREE, (st), (i)) -# define sk_GENERAL_SUBTREE_set(st, i, val) SKM_sk_set(GENERAL_SUBTREE, (st), (i), (val)) -# define sk_GENERAL_SUBTREE_zero(st) SKM_sk_zero(GENERAL_SUBTREE, (st)) -# define sk_GENERAL_SUBTREE_push(st, val) SKM_sk_push(GENERAL_SUBTREE, (st), (val)) -# define sk_GENERAL_SUBTREE_unshift(st, val) SKM_sk_unshift(GENERAL_SUBTREE, (st), (val)) -# define sk_GENERAL_SUBTREE_find(st, val) SKM_sk_find(GENERAL_SUBTREE, (st), (val)) -# define sk_GENERAL_SUBTREE_find_ex(st, val) SKM_sk_find_ex(GENERAL_SUBTREE, (st), (val)) -# define sk_GENERAL_SUBTREE_delete(st, i) SKM_sk_delete(GENERAL_SUBTREE, (st), (i)) -# define sk_GENERAL_SUBTREE_delete_ptr(st, ptr) SKM_sk_delete_ptr(GENERAL_SUBTREE, (st), (ptr)) -# define sk_GENERAL_SUBTREE_insert(st, val, i) SKM_sk_insert(GENERAL_SUBTREE, (st), (val), (i)) -# define sk_GENERAL_SUBTREE_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(GENERAL_SUBTREE, (st), (cmp)) -# define sk_GENERAL_SUBTREE_dup(st) SKM_sk_dup(GENERAL_SUBTREE, st) -# define sk_GENERAL_SUBTREE_pop_free(st, free_func) SKM_sk_pop_free(GENERAL_SUBTREE, (st), (free_func)) -# define sk_GENERAL_SUBTREE_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(GENERAL_SUBTREE, (st), (copy_func), (free_func)) -# define sk_GENERAL_SUBTREE_shift(st) SKM_sk_shift(GENERAL_SUBTREE, (st)) -# define sk_GENERAL_SUBTREE_pop(st) SKM_sk_pop(GENERAL_SUBTREE, (st)) -# define sk_GENERAL_SUBTREE_sort(st) SKM_sk_sort(GENERAL_SUBTREE, (st)) -# define sk_GENERAL_SUBTREE_is_sorted(st) SKM_sk_is_sorted(GENERAL_SUBTREE, (st)) -# define sk_IPAddressFamily_new(cmp) SKM_sk_new(IPAddressFamily, (cmp)) -# define sk_IPAddressFamily_new_null() SKM_sk_new_null(IPAddressFamily) -# define sk_IPAddressFamily_free(st) SKM_sk_free(IPAddressFamily, (st)) -# define sk_IPAddressFamily_num(st) SKM_sk_num(IPAddressFamily, (st)) -# define sk_IPAddressFamily_value(st, i) SKM_sk_value(IPAddressFamily, (st), (i)) -# define sk_IPAddressFamily_set(st, i, val) SKM_sk_set(IPAddressFamily, (st), (i), (val)) -# define sk_IPAddressFamily_zero(st) SKM_sk_zero(IPAddressFamily, (st)) -# define sk_IPAddressFamily_push(st, val) SKM_sk_push(IPAddressFamily, (st), (val)) -# define sk_IPAddressFamily_unshift(st, val) SKM_sk_unshift(IPAddressFamily, (st), (val)) -# define sk_IPAddressFamily_find(st, val) SKM_sk_find(IPAddressFamily, (st), (val)) -# define sk_IPAddressFamily_find_ex(st, val) SKM_sk_find_ex(IPAddressFamily, (st), (val)) -# define sk_IPAddressFamily_delete(st, i) SKM_sk_delete(IPAddressFamily, (st), (i)) -# define sk_IPAddressFamily_delete_ptr(st, ptr) SKM_sk_delete_ptr(IPAddressFamily, (st), (ptr)) -# define sk_IPAddressFamily_insert(st, val, i) SKM_sk_insert(IPAddressFamily, (st), (val), (i)) -# define sk_IPAddressFamily_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(IPAddressFamily, (st), (cmp)) -# define sk_IPAddressFamily_dup(st) SKM_sk_dup(IPAddressFamily, st) -# define sk_IPAddressFamily_pop_free(st, free_func) SKM_sk_pop_free(IPAddressFamily, (st), (free_func)) -# define sk_IPAddressFamily_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(IPAddressFamily, (st), (copy_func), (free_func)) -# define sk_IPAddressFamily_shift(st) SKM_sk_shift(IPAddressFamily, (st)) -# define sk_IPAddressFamily_pop(st) SKM_sk_pop(IPAddressFamily, (st)) -# define sk_IPAddressFamily_sort(st) SKM_sk_sort(IPAddressFamily, (st)) -# define sk_IPAddressFamily_is_sorted(st) SKM_sk_is_sorted(IPAddressFamily, (st)) -# define sk_IPAddressOrRange_new(cmp) SKM_sk_new(IPAddressOrRange, (cmp)) -# define sk_IPAddressOrRange_new_null() SKM_sk_new_null(IPAddressOrRange) -# define sk_IPAddressOrRange_free(st) SKM_sk_free(IPAddressOrRange, (st)) -# define sk_IPAddressOrRange_num(st) SKM_sk_num(IPAddressOrRange, (st)) -# define sk_IPAddressOrRange_value(st, i) SKM_sk_value(IPAddressOrRange, (st), (i)) -# define sk_IPAddressOrRange_set(st, i, val) SKM_sk_set(IPAddressOrRange, (st), (i), (val)) -# define sk_IPAddressOrRange_zero(st) SKM_sk_zero(IPAddressOrRange, (st)) -# define sk_IPAddressOrRange_push(st, val) SKM_sk_push(IPAddressOrRange, (st), (val)) -# define sk_IPAddressOrRange_unshift(st, val) SKM_sk_unshift(IPAddressOrRange, (st), (val)) -# define sk_IPAddressOrRange_find(st, val) SKM_sk_find(IPAddressOrRange, (st), (val)) -# define sk_IPAddressOrRange_find_ex(st, val) SKM_sk_find_ex(IPAddressOrRange, (st), (val)) -# define sk_IPAddressOrRange_delete(st, i) SKM_sk_delete(IPAddressOrRange, (st), (i)) -# define sk_IPAddressOrRange_delete_ptr(st, ptr) SKM_sk_delete_ptr(IPAddressOrRange, (st), (ptr)) -# define sk_IPAddressOrRange_insert(st, val, i) SKM_sk_insert(IPAddressOrRange, (st), (val), (i)) -# define sk_IPAddressOrRange_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(IPAddressOrRange, (st), (cmp)) -# define sk_IPAddressOrRange_dup(st) SKM_sk_dup(IPAddressOrRange, st) -# define sk_IPAddressOrRange_pop_free(st, free_func) SKM_sk_pop_free(IPAddressOrRange, (st), (free_func)) -# define sk_IPAddressOrRange_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(IPAddressOrRange, (st), (copy_func), (free_func)) -# define sk_IPAddressOrRange_shift(st) SKM_sk_shift(IPAddressOrRange, (st)) -# define sk_IPAddressOrRange_pop(st) SKM_sk_pop(IPAddressOrRange, (st)) -# define sk_IPAddressOrRange_sort(st) SKM_sk_sort(IPAddressOrRange, (st)) -# define sk_IPAddressOrRange_is_sorted(st) SKM_sk_is_sorted(IPAddressOrRange, (st)) -# define sk_KRB5_APREQBODY_new(cmp) SKM_sk_new(KRB5_APREQBODY, (cmp)) -# define sk_KRB5_APREQBODY_new_null() SKM_sk_new_null(KRB5_APREQBODY) -# define sk_KRB5_APREQBODY_free(st) SKM_sk_free(KRB5_APREQBODY, (st)) -# define sk_KRB5_APREQBODY_num(st) SKM_sk_num(KRB5_APREQBODY, (st)) -# define sk_KRB5_APREQBODY_value(st, i) SKM_sk_value(KRB5_APREQBODY, (st), (i)) -# define sk_KRB5_APREQBODY_set(st, i, val) SKM_sk_set(KRB5_APREQBODY, (st), (i), (val)) -# define sk_KRB5_APREQBODY_zero(st) SKM_sk_zero(KRB5_APREQBODY, (st)) -# define sk_KRB5_APREQBODY_push(st, val) SKM_sk_push(KRB5_APREQBODY, (st), (val)) -# define sk_KRB5_APREQBODY_unshift(st, val) SKM_sk_unshift(KRB5_APREQBODY, (st), (val)) -# define sk_KRB5_APREQBODY_find(st, val) SKM_sk_find(KRB5_APREQBODY, (st), (val)) -# define sk_KRB5_APREQBODY_find_ex(st, val) SKM_sk_find_ex(KRB5_APREQBODY, (st), (val)) -# define sk_KRB5_APREQBODY_delete(st, i) SKM_sk_delete(KRB5_APREQBODY, (st), (i)) -# define sk_KRB5_APREQBODY_delete_ptr(st, ptr) SKM_sk_delete_ptr(KRB5_APREQBODY, (st), (ptr)) -# define sk_KRB5_APREQBODY_insert(st, val, i) SKM_sk_insert(KRB5_APREQBODY, (st), (val), (i)) -# define sk_KRB5_APREQBODY_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(KRB5_APREQBODY, (st), (cmp)) -# define sk_KRB5_APREQBODY_dup(st) SKM_sk_dup(KRB5_APREQBODY, st) -# define sk_KRB5_APREQBODY_pop_free(st, free_func) SKM_sk_pop_free(KRB5_APREQBODY, (st), (free_func)) -# define sk_KRB5_APREQBODY_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(KRB5_APREQBODY, (st), (copy_func), (free_func)) -# define sk_KRB5_APREQBODY_shift(st) SKM_sk_shift(KRB5_APREQBODY, (st)) -# define sk_KRB5_APREQBODY_pop(st) SKM_sk_pop(KRB5_APREQBODY, (st)) -# define sk_KRB5_APREQBODY_sort(st) SKM_sk_sort(KRB5_APREQBODY, (st)) -# define sk_KRB5_APREQBODY_is_sorted(st) SKM_sk_is_sorted(KRB5_APREQBODY, (st)) -# define sk_KRB5_AUTHDATA_new(cmp) SKM_sk_new(KRB5_AUTHDATA, (cmp)) -# define sk_KRB5_AUTHDATA_new_null() SKM_sk_new_null(KRB5_AUTHDATA) -# define sk_KRB5_AUTHDATA_free(st) SKM_sk_free(KRB5_AUTHDATA, (st)) -# define sk_KRB5_AUTHDATA_num(st) SKM_sk_num(KRB5_AUTHDATA, (st)) -# define sk_KRB5_AUTHDATA_value(st, i) SKM_sk_value(KRB5_AUTHDATA, (st), (i)) -# define sk_KRB5_AUTHDATA_set(st, i, val) SKM_sk_set(KRB5_AUTHDATA, (st), (i), (val)) -# define sk_KRB5_AUTHDATA_zero(st) SKM_sk_zero(KRB5_AUTHDATA, (st)) -# define sk_KRB5_AUTHDATA_push(st, val) SKM_sk_push(KRB5_AUTHDATA, (st), (val)) -# define sk_KRB5_AUTHDATA_unshift(st, val) SKM_sk_unshift(KRB5_AUTHDATA, (st), (val)) -# define sk_KRB5_AUTHDATA_find(st, val) SKM_sk_find(KRB5_AUTHDATA, (st), (val)) -# define sk_KRB5_AUTHDATA_find_ex(st, val) SKM_sk_find_ex(KRB5_AUTHDATA, (st), (val)) -# define sk_KRB5_AUTHDATA_delete(st, i) SKM_sk_delete(KRB5_AUTHDATA, (st), (i)) -# define sk_KRB5_AUTHDATA_delete_ptr(st, ptr) SKM_sk_delete_ptr(KRB5_AUTHDATA, (st), (ptr)) -# define sk_KRB5_AUTHDATA_insert(st, val, i) SKM_sk_insert(KRB5_AUTHDATA, (st), (val), (i)) -# define sk_KRB5_AUTHDATA_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(KRB5_AUTHDATA, (st), (cmp)) -# define sk_KRB5_AUTHDATA_dup(st) SKM_sk_dup(KRB5_AUTHDATA, st) -# define sk_KRB5_AUTHDATA_pop_free(st, free_func) SKM_sk_pop_free(KRB5_AUTHDATA, (st), (free_func)) -# define sk_KRB5_AUTHDATA_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(KRB5_AUTHDATA, (st), (copy_func), (free_func)) -# define sk_KRB5_AUTHDATA_shift(st) SKM_sk_shift(KRB5_AUTHDATA, (st)) -# define sk_KRB5_AUTHDATA_pop(st) SKM_sk_pop(KRB5_AUTHDATA, (st)) -# define sk_KRB5_AUTHDATA_sort(st) SKM_sk_sort(KRB5_AUTHDATA, (st)) -# define sk_KRB5_AUTHDATA_is_sorted(st) SKM_sk_is_sorted(KRB5_AUTHDATA, (st)) -# define sk_KRB5_AUTHENTBODY_new(cmp) SKM_sk_new(KRB5_AUTHENTBODY, (cmp)) -# define sk_KRB5_AUTHENTBODY_new_null() SKM_sk_new_null(KRB5_AUTHENTBODY) -# define sk_KRB5_AUTHENTBODY_free(st) SKM_sk_free(KRB5_AUTHENTBODY, (st)) -# define sk_KRB5_AUTHENTBODY_num(st) SKM_sk_num(KRB5_AUTHENTBODY, (st)) -# define sk_KRB5_AUTHENTBODY_value(st, i) SKM_sk_value(KRB5_AUTHENTBODY, (st), (i)) -# define sk_KRB5_AUTHENTBODY_set(st, i, val) SKM_sk_set(KRB5_AUTHENTBODY, (st), (i), (val)) -# define sk_KRB5_AUTHENTBODY_zero(st) SKM_sk_zero(KRB5_AUTHENTBODY, (st)) -# define sk_KRB5_AUTHENTBODY_push(st, val) SKM_sk_push(KRB5_AUTHENTBODY, (st), (val)) -# define sk_KRB5_AUTHENTBODY_unshift(st, val) SKM_sk_unshift(KRB5_AUTHENTBODY, (st), (val)) -# define sk_KRB5_AUTHENTBODY_find(st, val) SKM_sk_find(KRB5_AUTHENTBODY, (st), (val)) -# define sk_KRB5_AUTHENTBODY_find_ex(st, val) SKM_sk_find_ex(KRB5_AUTHENTBODY, (st), (val)) -# define sk_KRB5_AUTHENTBODY_delete(st, i) SKM_sk_delete(KRB5_AUTHENTBODY, (st), (i)) -# define sk_KRB5_AUTHENTBODY_delete_ptr(st, ptr) SKM_sk_delete_ptr(KRB5_AUTHENTBODY, (st), (ptr)) -# define sk_KRB5_AUTHENTBODY_insert(st, val, i) SKM_sk_insert(KRB5_AUTHENTBODY, (st), (val), (i)) -# define sk_KRB5_AUTHENTBODY_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(KRB5_AUTHENTBODY, (st), (cmp)) -# define sk_KRB5_AUTHENTBODY_dup(st) SKM_sk_dup(KRB5_AUTHENTBODY, st) -# define sk_KRB5_AUTHENTBODY_pop_free(st, free_func) SKM_sk_pop_free(KRB5_AUTHENTBODY, (st), (free_func)) -# define sk_KRB5_AUTHENTBODY_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(KRB5_AUTHENTBODY, (st), (copy_func), (free_func)) -# define sk_KRB5_AUTHENTBODY_shift(st) SKM_sk_shift(KRB5_AUTHENTBODY, (st)) -# define sk_KRB5_AUTHENTBODY_pop(st) SKM_sk_pop(KRB5_AUTHENTBODY, (st)) -# define sk_KRB5_AUTHENTBODY_sort(st) SKM_sk_sort(KRB5_AUTHENTBODY, (st)) -# define sk_KRB5_AUTHENTBODY_is_sorted(st) SKM_sk_is_sorted(KRB5_AUTHENTBODY, (st)) -# define sk_KRB5_CHECKSUM_new(cmp) SKM_sk_new(KRB5_CHECKSUM, (cmp)) -# define sk_KRB5_CHECKSUM_new_null() SKM_sk_new_null(KRB5_CHECKSUM) -# define sk_KRB5_CHECKSUM_free(st) SKM_sk_free(KRB5_CHECKSUM, (st)) -# define sk_KRB5_CHECKSUM_num(st) SKM_sk_num(KRB5_CHECKSUM, (st)) -# define sk_KRB5_CHECKSUM_value(st, i) SKM_sk_value(KRB5_CHECKSUM, (st), (i)) -# define sk_KRB5_CHECKSUM_set(st, i, val) SKM_sk_set(KRB5_CHECKSUM, (st), (i), (val)) -# define sk_KRB5_CHECKSUM_zero(st) SKM_sk_zero(KRB5_CHECKSUM, (st)) -# define sk_KRB5_CHECKSUM_push(st, val) SKM_sk_push(KRB5_CHECKSUM, (st), (val)) -# define sk_KRB5_CHECKSUM_unshift(st, val) SKM_sk_unshift(KRB5_CHECKSUM, (st), (val)) -# define sk_KRB5_CHECKSUM_find(st, val) SKM_sk_find(KRB5_CHECKSUM, (st), (val)) -# define sk_KRB5_CHECKSUM_find_ex(st, val) SKM_sk_find_ex(KRB5_CHECKSUM, (st), (val)) -# define sk_KRB5_CHECKSUM_delete(st, i) SKM_sk_delete(KRB5_CHECKSUM, (st), (i)) -# define sk_KRB5_CHECKSUM_delete_ptr(st, ptr) SKM_sk_delete_ptr(KRB5_CHECKSUM, (st), (ptr)) -# define sk_KRB5_CHECKSUM_insert(st, val, i) SKM_sk_insert(KRB5_CHECKSUM, (st), (val), (i)) -# define sk_KRB5_CHECKSUM_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(KRB5_CHECKSUM, (st), (cmp)) -# define sk_KRB5_CHECKSUM_dup(st) SKM_sk_dup(KRB5_CHECKSUM, st) -# define sk_KRB5_CHECKSUM_pop_free(st, free_func) SKM_sk_pop_free(KRB5_CHECKSUM, (st), (free_func)) -# define sk_KRB5_CHECKSUM_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(KRB5_CHECKSUM, (st), (copy_func), (free_func)) -# define sk_KRB5_CHECKSUM_shift(st) SKM_sk_shift(KRB5_CHECKSUM, (st)) -# define sk_KRB5_CHECKSUM_pop(st) SKM_sk_pop(KRB5_CHECKSUM, (st)) -# define sk_KRB5_CHECKSUM_sort(st) SKM_sk_sort(KRB5_CHECKSUM, (st)) -# define sk_KRB5_CHECKSUM_is_sorted(st) SKM_sk_is_sorted(KRB5_CHECKSUM, (st)) -# define sk_KRB5_ENCDATA_new(cmp) SKM_sk_new(KRB5_ENCDATA, (cmp)) -# define sk_KRB5_ENCDATA_new_null() SKM_sk_new_null(KRB5_ENCDATA) -# define sk_KRB5_ENCDATA_free(st) SKM_sk_free(KRB5_ENCDATA, (st)) -# define sk_KRB5_ENCDATA_num(st) SKM_sk_num(KRB5_ENCDATA, (st)) -# define sk_KRB5_ENCDATA_value(st, i) SKM_sk_value(KRB5_ENCDATA, (st), (i)) -# define sk_KRB5_ENCDATA_set(st, i, val) SKM_sk_set(KRB5_ENCDATA, (st), (i), (val)) -# define sk_KRB5_ENCDATA_zero(st) SKM_sk_zero(KRB5_ENCDATA, (st)) -# define sk_KRB5_ENCDATA_push(st, val) SKM_sk_push(KRB5_ENCDATA, (st), (val)) -# define sk_KRB5_ENCDATA_unshift(st, val) SKM_sk_unshift(KRB5_ENCDATA, (st), (val)) -# define sk_KRB5_ENCDATA_find(st, val) SKM_sk_find(KRB5_ENCDATA, (st), (val)) -# define sk_KRB5_ENCDATA_find_ex(st, val) SKM_sk_find_ex(KRB5_ENCDATA, (st), (val)) -# define sk_KRB5_ENCDATA_delete(st, i) SKM_sk_delete(KRB5_ENCDATA, (st), (i)) -# define sk_KRB5_ENCDATA_delete_ptr(st, ptr) SKM_sk_delete_ptr(KRB5_ENCDATA, (st), (ptr)) -# define sk_KRB5_ENCDATA_insert(st, val, i) SKM_sk_insert(KRB5_ENCDATA, (st), (val), (i)) -# define sk_KRB5_ENCDATA_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(KRB5_ENCDATA, (st), (cmp)) -# define sk_KRB5_ENCDATA_dup(st) SKM_sk_dup(KRB5_ENCDATA, st) -# define sk_KRB5_ENCDATA_pop_free(st, free_func) SKM_sk_pop_free(KRB5_ENCDATA, (st), (free_func)) -# define sk_KRB5_ENCDATA_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(KRB5_ENCDATA, (st), (copy_func), (free_func)) -# define sk_KRB5_ENCDATA_shift(st) SKM_sk_shift(KRB5_ENCDATA, (st)) -# define sk_KRB5_ENCDATA_pop(st) SKM_sk_pop(KRB5_ENCDATA, (st)) -# define sk_KRB5_ENCDATA_sort(st) SKM_sk_sort(KRB5_ENCDATA, (st)) -# define sk_KRB5_ENCDATA_is_sorted(st) SKM_sk_is_sorted(KRB5_ENCDATA, (st)) -# define sk_KRB5_ENCKEY_new(cmp) SKM_sk_new(KRB5_ENCKEY, (cmp)) -# define sk_KRB5_ENCKEY_new_null() SKM_sk_new_null(KRB5_ENCKEY) -# define sk_KRB5_ENCKEY_free(st) SKM_sk_free(KRB5_ENCKEY, (st)) -# define sk_KRB5_ENCKEY_num(st) SKM_sk_num(KRB5_ENCKEY, (st)) -# define sk_KRB5_ENCKEY_value(st, i) SKM_sk_value(KRB5_ENCKEY, (st), (i)) -# define sk_KRB5_ENCKEY_set(st, i, val) SKM_sk_set(KRB5_ENCKEY, (st), (i), (val)) -# define sk_KRB5_ENCKEY_zero(st) SKM_sk_zero(KRB5_ENCKEY, (st)) -# define sk_KRB5_ENCKEY_push(st, val) SKM_sk_push(KRB5_ENCKEY, (st), (val)) -# define sk_KRB5_ENCKEY_unshift(st, val) SKM_sk_unshift(KRB5_ENCKEY, (st), (val)) -# define sk_KRB5_ENCKEY_find(st, val) SKM_sk_find(KRB5_ENCKEY, (st), (val)) -# define sk_KRB5_ENCKEY_find_ex(st, val) SKM_sk_find_ex(KRB5_ENCKEY, (st), (val)) -# define sk_KRB5_ENCKEY_delete(st, i) SKM_sk_delete(KRB5_ENCKEY, (st), (i)) -# define sk_KRB5_ENCKEY_delete_ptr(st, ptr) SKM_sk_delete_ptr(KRB5_ENCKEY, (st), (ptr)) -# define sk_KRB5_ENCKEY_insert(st, val, i) SKM_sk_insert(KRB5_ENCKEY, (st), (val), (i)) -# define sk_KRB5_ENCKEY_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(KRB5_ENCKEY, (st), (cmp)) -# define sk_KRB5_ENCKEY_dup(st) SKM_sk_dup(KRB5_ENCKEY, st) -# define sk_KRB5_ENCKEY_pop_free(st, free_func) SKM_sk_pop_free(KRB5_ENCKEY, (st), (free_func)) -# define sk_KRB5_ENCKEY_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(KRB5_ENCKEY, (st), (copy_func), (free_func)) -# define sk_KRB5_ENCKEY_shift(st) SKM_sk_shift(KRB5_ENCKEY, (st)) -# define sk_KRB5_ENCKEY_pop(st) SKM_sk_pop(KRB5_ENCKEY, (st)) -# define sk_KRB5_ENCKEY_sort(st) SKM_sk_sort(KRB5_ENCKEY, (st)) -# define sk_KRB5_ENCKEY_is_sorted(st) SKM_sk_is_sorted(KRB5_ENCKEY, (st)) -# define sk_KRB5_PRINCNAME_new(cmp) SKM_sk_new(KRB5_PRINCNAME, (cmp)) -# define sk_KRB5_PRINCNAME_new_null() SKM_sk_new_null(KRB5_PRINCNAME) -# define sk_KRB5_PRINCNAME_free(st) SKM_sk_free(KRB5_PRINCNAME, (st)) -# define sk_KRB5_PRINCNAME_num(st) SKM_sk_num(KRB5_PRINCNAME, (st)) -# define sk_KRB5_PRINCNAME_value(st, i) SKM_sk_value(KRB5_PRINCNAME, (st), (i)) -# define sk_KRB5_PRINCNAME_set(st, i, val) SKM_sk_set(KRB5_PRINCNAME, (st), (i), (val)) -# define sk_KRB5_PRINCNAME_zero(st) SKM_sk_zero(KRB5_PRINCNAME, (st)) -# define sk_KRB5_PRINCNAME_push(st, val) SKM_sk_push(KRB5_PRINCNAME, (st), (val)) -# define sk_KRB5_PRINCNAME_unshift(st, val) SKM_sk_unshift(KRB5_PRINCNAME, (st), (val)) -# define sk_KRB5_PRINCNAME_find(st, val) SKM_sk_find(KRB5_PRINCNAME, (st), (val)) -# define sk_KRB5_PRINCNAME_find_ex(st, val) SKM_sk_find_ex(KRB5_PRINCNAME, (st), (val)) -# define sk_KRB5_PRINCNAME_delete(st, i) SKM_sk_delete(KRB5_PRINCNAME, (st), (i)) -# define sk_KRB5_PRINCNAME_delete_ptr(st, ptr) SKM_sk_delete_ptr(KRB5_PRINCNAME, (st), (ptr)) -# define sk_KRB5_PRINCNAME_insert(st, val, i) SKM_sk_insert(KRB5_PRINCNAME, (st), (val), (i)) -# define sk_KRB5_PRINCNAME_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(KRB5_PRINCNAME, (st), (cmp)) -# define sk_KRB5_PRINCNAME_dup(st) SKM_sk_dup(KRB5_PRINCNAME, st) -# define sk_KRB5_PRINCNAME_pop_free(st, free_func) SKM_sk_pop_free(KRB5_PRINCNAME, (st), (free_func)) -# define sk_KRB5_PRINCNAME_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(KRB5_PRINCNAME, (st), (copy_func), (free_func)) -# define sk_KRB5_PRINCNAME_shift(st) SKM_sk_shift(KRB5_PRINCNAME, (st)) -# define sk_KRB5_PRINCNAME_pop(st) SKM_sk_pop(KRB5_PRINCNAME, (st)) -# define sk_KRB5_PRINCNAME_sort(st) SKM_sk_sort(KRB5_PRINCNAME, (st)) -# define sk_KRB5_PRINCNAME_is_sorted(st) SKM_sk_is_sorted(KRB5_PRINCNAME, (st)) -# define sk_KRB5_TKTBODY_new(cmp) SKM_sk_new(KRB5_TKTBODY, (cmp)) -# define sk_KRB5_TKTBODY_new_null() SKM_sk_new_null(KRB5_TKTBODY) -# define sk_KRB5_TKTBODY_free(st) SKM_sk_free(KRB5_TKTBODY, (st)) -# define sk_KRB5_TKTBODY_num(st) SKM_sk_num(KRB5_TKTBODY, (st)) -# define sk_KRB5_TKTBODY_value(st, i) SKM_sk_value(KRB5_TKTBODY, (st), (i)) -# define sk_KRB5_TKTBODY_set(st, i, val) SKM_sk_set(KRB5_TKTBODY, (st), (i), (val)) -# define sk_KRB5_TKTBODY_zero(st) SKM_sk_zero(KRB5_TKTBODY, (st)) -# define sk_KRB5_TKTBODY_push(st, val) SKM_sk_push(KRB5_TKTBODY, (st), (val)) -# define sk_KRB5_TKTBODY_unshift(st, val) SKM_sk_unshift(KRB5_TKTBODY, (st), (val)) -# define sk_KRB5_TKTBODY_find(st, val) SKM_sk_find(KRB5_TKTBODY, (st), (val)) -# define sk_KRB5_TKTBODY_find_ex(st, val) SKM_sk_find_ex(KRB5_TKTBODY, (st), (val)) -# define sk_KRB5_TKTBODY_delete(st, i) SKM_sk_delete(KRB5_TKTBODY, (st), (i)) -# define sk_KRB5_TKTBODY_delete_ptr(st, ptr) SKM_sk_delete_ptr(KRB5_TKTBODY, (st), (ptr)) -# define sk_KRB5_TKTBODY_insert(st, val, i) SKM_sk_insert(KRB5_TKTBODY, (st), (val), (i)) -# define sk_KRB5_TKTBODY_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(KRB5_TKTBODY, (st), (cmp)) -# define sk_KRB5_TKTBODY_dup(st) SKM_sk_dup(KRB5_TKTBODY, st) -# define sk_KRB5_TKTBODY_pop_free(st, free_func) SKM_sk_pop_free(KRB5_TKTBODY, (st), (free_func)) -# define sk_KRB5_TKTBODY_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(KRB5_TKTBODY, (st), (copy_func), (free_func)) -# define sk_KRB5_TKTBODY_shift(st) SKM_sk_shift(KRB5_TKTBODY, (st)) -# define sk_KRB5_TKTBODY_pop(st) SKM_sk_pop(KRB5_TKTBODY, (st)) -# define sk_KRB5_TKTBODY_sort(st) SKM_sk_sort(KRB5_TKTBODY, (st)) -# define sk_KRB5_TKTBODY_is_sorted(st) SKM_sk_is_sorted(KRB5_TKTBODY, (st)) -# define sk_MEM_OBJECT_DATA_new(cmp) SKM_sk_new(MEM_OBJECT_DATA, (cmp)) -# define sk_MEM_OBJECT_DATA_new_null() SKM_sk_new_null(MEM_OBJECT_DATA) -# define sk_MEM_OBJECT_DATA_free(st) SKM_sk_free(MEM_OBJECT_DATA, (st)) -# define sk_MEM_OBJECT_DATA_num(st) SKM_sk_num(MEM_OBJECT_DATA, (st)) -# define sk_MEM_OBJECT_DATA_value(st, i) SKM_sk_value(MEM_OBJECT_DATA, (st), (i)) -# define sk_MEM_OBJECT_DATA_set(st, i, val) SKM_sk_set(MEM_OBJECT_DATA, (st), (i), (val)) -# define sk_MEM_OBJECT_DATA_zero(st) SKM_sk_zero(MEM_OBJECT_DATA, (st)) -# define sk_MEM_OBJECT_DATA_push(st, val) SKM_sk_push(MEM_OBJECT_DATA, (st), (val)) -# define sk_MEM_OBJECT_DATA_unshift(st, val) SKM_sk_unshift(MEM_OBJECT_DATA, (st), (val)) -# define sk_MEM_OBJECT_DATA_find(st, val) SKM_sk_find(MEM_OBJECT_DATA, (st), (val)) -# define sk_MEM_OBJECT_DATA_find_ex(st, val) SKM_sk_find_ex(MEM_OBJECT_DATA, (st), (val)) -# define sk_MEM_OBJECT_DATA_delete(st, i) SKM_sk_delete(MEM_OBJECT_DATA, (st), (i)) -# define sk_MEM_OBJECT_DATA_delete_ptr(st, ptr) SKM_sk_delete_ptr(MEM_OBJECT_DATA, (st), (ptr)) -# define sk_MEM_OBJECT_DATA_insert(st, val, i) SKM_sk_insert(MEM_OBJECT_DATA, (st), (val), (i)) -# define sk_MEM_OBJECT_DATA_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(MEM_OBJECT_DATA, (st), (cmp)) -# define sk_MEM_OBJECT_DATA_dup(st) SKM_sk_dup(MEM_OBJECT_DATA, st) -# define sk_MEM_OBJECT_DATA_pop_free(st, free_func) SKM_sk_pop_free(MEM_OBJECT_DATA, (st), (free_func)) -# define sk_MEM_OBJECT_DATA_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(MEM_OBJECT_DATA, (st), (copy_func), (free_func)) -# define sk_MEM_OBJECT_DATA_shift(st) SKM_sk_shift(MEM_OBJECT_DATA, (st)) -# define sk_MEM_OBJECT_DATA_pop(st) SKM_sk_pop(MEM_OBJECT_DATA, (st)) -# define sk_MEM_OBJECT_DATA_sort(st) SKM_sk_sort(MEM_OBJECT_DATA, (st)) -# define sk_MEM_OBJECT_DATA_is_sorted(st) SKM_sk_is_sorted(MEM_OBJECT_DATA, (st)) -# define sk_MIME_HEADER_new(cmp) SKM_sk_new(MIME_HEADER, (cmp)) -# define sk_MIME_HEADER_new_null() SKM_sk_new_null(MIME_HEADER) -# define sk_MIME_HEADER_free(st) SKM_sk_free(MIME_HEADER, (st)) -# define sk_MIME_HEADER_num(st) SKM_sk_num(MIME_HEADER, (st)) -# define sk_MIME_HEADER_value(st, i) SKM_sk_value(MIME_HEADER, (st), (i)) -# define sk_MIME_HEADER_set(st, i, val) SKM_sk_set(MIME_HEADER, (st), (i), (val)) -# define sk_MIME_HEADER_zero(st) SKM_sk_zero(MIME_HEADER, (st)) -# define sk_MIME_HEADER_push(st, val) SKM_sk_push(MIME_HEADER, (st), (val)) -# define sk_MIME_HEADER_unshift(st, val) SKM_sk_unshift(MIME_HEADER, (st), (val)) -# define sk_MIME_HEADER_find(st, val) SKM_sk_find(MIME_HEADER, (st), (val)) -# define sk_MIME_HEADER_find_ex(st, val) SKM_sk_find_ex(MIME_HEADER, (st), (val)) -# define sk_MIME_HEADER_delete(st, i) SKM_sk_delete(MIME_HEADER, (st), (i)) -# define sk_MIME_HEADER_delete_ptr(st, ptr) SKM_sk_delete_ptr(MIME_HEADER, (st), (ptr)) -# define sk_MIME_HEADER_insert(st, val, i) SKM_sk_insert(MIME_HEADER, (st), (val), (i)) -# define sk_MIME_HEADER_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(MIME_HEADER, (st), (cmp)) -# define sk_MIME_HEADER_dup(st) SKM_sk_dup(MIME_HEADER, st) -# define sk_MIME_HEADER_pop_free(st, free_func) SKM_sk_pop_free(MIME_HEADER, (st), (free_func)) -# define sk_MIME_HEADER_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(MIME_HEADER, (st), (copy_func), (free_func)) -# define sk_MIME_HEADER_shift(st) SKM_sk_shift(MIME_HEADER, (st)) -# define sk_MIME_HEADER_pop(st) SKM_sk_pop(MIME_HEADER, (st)) -# define sk_MIME_HEADER_sort(st) SKM_sk_sort(MIME_HEADER, (st)) -# define sk_MIME_HEADER_is_sorted(st) SKM_sk_is_sorted(MIME_HEADER, (st)) -# define sk_MIME_PARAM_new(cmp) SKM_sk_new(MIME_PARAM, (cmp)) -# define sk_MIME_PARAM_new_null() SKM_sk_new_null(MIME_PARAM) -# define sk_MIME_PARAM_free(st) SKM_sk_free(MIME_PARAM, (st)) -# define sk_MIME_PARAM_num(st) SKM_sk_num(MIME_PARAM, (st)) -# define sk_MIME_PARAM_value(st, i) SKM_sk_value(MIME_PARAM, (st), (i)) -# define sk_MIME_PARAM_set(st, i, val) SKM_sk_set(MIME_PARAM, (st), (i), (val)) -# define sk_MIME_PARAM_zero(st) SKM_sk_zero(MIME_PARAM, (st)) -# define sk_MIME_PARAM_push(st, val) SKM_sk_push(MIME_PARAM, (st), (val)) -# define sk_MIME_PARAM_unshift(st, val) SKM_sk_unshift(MIME_PARAM, (st), (val)) -# define sk_MIME_PARAM_find(st, val) SKM_sk_find(MIME_PARAM, (st), (val)) -# define sk_MIME_PARAM_find_ex(st, val) SKM_sk_find_ex(MIME_PARAM, (st), (val)) -# define sk_MIME_PARAM_delete(st, i) SKM_sk_delete(MIME_PARAM, (st), (i)) -# define sk_MIME_PARAM_delete_ptr(st, ptr) SKM_sk_delete_ptr(MIME_PARAM, (st), (ptr)) -# define sk_MIME_PARAM_insert(st, val, i) SKM_sk_insert(MIME_PARAM, (st), (val), (i)) -# define sk_MIME_PARAM_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(MIME_PARAM, (st), (cmp)) -# define sk_MIME_PARAM_dup(st) SKM_sk_dup(MIME_PARAM, st) -# define sk_MIME_PARAM_pop_free(st, free_func) SKM_sk_pop_free(MIME_PARAM, (st), (free_func)) -# define sk_MIME_PARAM_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(MIME_PARAM, (st), (copy_func), (free_func)) -# define sk_MIME_PARAM_shift(st) SKM_sk_shift(MIME_PARAM, (st)) -# define sk_MIME_PARAM_pop(st) SKM_sk_pop(MIME_PARAM, (st)) -# define sk_MIME_PARAM_sort(st) SKM_sk_sort(MIME_PARAM, (st)) -# define sk_MIME_PARAM_is_sorted(st) SKM_sk_is_sorted(MIME_PARAM, (st)) -# define sk_NAME_FUNCS_new(cmp) SKM_sk_new(NAME_FUNCS, (cmp)) -# define sk_NAME_FUNCS_new_null() SKM_sk_new_null(NAME_FUNCS) -# define sk_NAME_FUNCS_free(st) SKM_sk_free(NAME_FUNCS, (st)) -# define sk_NAME_FUNCS_num(st) SKM_sk_num(NAME_FUNCS, (st)) -# define sk_NAME_FUNCS_value(st, i) SKM_sk_value(NAME_FUNCS, (st), (i)) -# define sk_NAME_FUNCS_set(st, i, val) SKM_sk_set(NAME_FUNCS, (st), (i), (val)) -# define sk_NAME_FUNCS_zero(st) SKM_sk_zero(NAME_FUNCS, (st)) -# define sk_NAME_FUNCS_push(st, val) SKM_sk_push(NAME_FUNCS, (st), (val)) -# define sk_NAME_FUNCS_unshift(st, val) SKM_sk_unshift(NAME_FUNCS, (st), (val)) -# define sk_NAME_FUNCS_find(st, val) SKM_sk_find(NAME_FUNCS, (st), (val)) -# define sk_NAME_FUNCS_find_ex(st, val) SKM_sk_find_ex(NAME_FUNCS, (st), (val)) -# define sk_NAME_FUNCS_delete(st, i) SKM_sk_delete(NAME_FUNCS, (st), (i)) -# define sk_NAME_FUNCS_delete_ptr(st, ptr) SKM_sk_delete_ptr(NAME_FUNCS, (st), (ptr)) -# define sk_NAME_FUNCS_insert(st, val, i) SKM_sk_insert(NAME_FUNCS, (st), (val), (i)) -# define sk_NAME_FUNCS_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(NAME_FUNCS, (st), (cmp)) -# define sk_NAME_FUNCS_dup(st) SKM_sk_dup(NAME_FUNCS, st) -# define sk_NAME_FUNCS_pop_free(st, free_func) SKM_sk_pop_free(NAME_FUNCS, (st), (free_func)) -# define sk_NAME_FUNCS_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(NAME_FUNCS, (st), (copy_func), (free_func)) -# define sk_NAME_FUNCS_shift(st) SKM_sk_shift(NAME_FUNCS, (st)) -# define sk_NAME_FUNCS_pop(st) SKM_sk_pop(NAME_FUNCS, (st)) -# define sk_NAME_FUNCS_sort(st) SKM_sk_sort(NAME_FUNCS, (st)) -# define sk_NAME_FUNCS_is_sorted(st) SKM_sk_is_sorted(NAME_FUNCS, (st)) -# define sk_OCSP_CERTID_new(cmp) SKM_sk_new(OCSP_CERTID, (cmp)) -# define sk_OCSP_CERTID_new_null() SKM_sk_new_null(OCSP_CERTID) -# define sk_OCSP_CERTID_free(st) SKM_sk_free(OCSP_CERTID, (st)) -# define sk_OCSP_CERTID_num(st) SKM_sk_num(OCSP_CERTID, (st)) -# define sk_OCSP_CERTID_value(st, i) SKM_sk_value(OCSP_CERTID, (st), (i)) -# define sk_OCSP_CERTID_set(st, i, val) SKM_sk_set(OCSP_CERTID, (st), (i), (val)) -# define sk_OCSP_CERTID_zero(st) SKM_sk_zero(OCSP_CERTID, (st)) -# define sk_OCSP_CERTID_push(st, val) SKM_sk_push(OCSP_CERTID, (st), (val)) -# define sk_OCSP_CERTID_unshift(st, val) SKM_sk_unshift(OCSP_CERTID, (st), (val)) -# define sk_OCSP_CERTID_find(st, val) SKM_sk_find(OCSP_CERTID, (st), (val)) -# define sk_OCSP_CERTID_find_ex(st, val) SKM_sk_find_ex(OCSP_CERTID, (st), (val)) -# define sk_OCSP_CERTID_delete(st, i) SKM_sk_delete(OCSP_CERTID, (st), (i)) -# define sk_OCSP_CERTID_delete_ptr(st, ptr) SKM_sk_delete_ptr(OCSP_CERTID, (st), (ptr)) -# define sk_OCSP_CERTID_insert(st, val, i) SKM_sk_insert(OCSP_CERTID, (st), (val), (i)) -# define sk_OCSP_CERTID_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(OCSP_CERTID, (st), (cmp)) -# define sk_OCSP_CERTID_dup(st) SKM_sk_dup(OCSP_CERTID, st) -# define sk_OCSP_CERTID_pop_free(st, free_func) SKM_sk_pop_free(OCSP_CERTID, (st), (free_func)) -# define sk_OCSP_CERTID_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(OCSP_CERTID, (st), (copy_func), (free_func)) -# define sk_OCSP_CERTID_shift(st) SKM_sk_shift(OCSP_CERTID, (st)) -# define sk_OCSP_CERTID_pop(st) SKM_sk_pop(OCSP_CERTID, (st)) -# define sk_OCSP_CERTID_sort(st) SKM_sk_sort(OCSP_CERTID, (st)) -# define sk_OCSP_CERTID_is_sorted(st) SKM_sk_is_sorted(OCSP_CERTID, (st)) -# define sk_OCSP_ONEREQ_new(cmp) SKM_sk_new(OCSP_ONEREQ, (cmp)) -# define sk_OCSP_ONEREQ_new_null() SKM_sk_new_null(OCSP_ONEREQ) -# define sk_OCSP_ONEREQ_free(st) SKM_sk_free(OCSP_ONEREQ, (st)) -# define sk_OCSP_ONEREQ_num(st) SKM_sk_num(OCSP_ONEREQ, (st)) -# define sk_OCSP_ONEREQ_value(st, i) SKM_sk_value(OCSP_ONEREQ, (st), (i)) -# define sk_OCSP_ONEREQ_set(st, i, val) SKM_sk_set(OCSP_ONEREQ, (st), (i), (val)) -# define sk_OCSP_ONEREQ_zero(st) SKM_sk_zero(OCSP_ONEREQ, (st)) -# define sk_OCSP_ONEREQ_push(st, val) SKM_sk_push(OCSP_ONEREQ, (st), (val)) -# define sk_OCSP_ONEREQ_unshift(st, val) SKM_sk_unshift(OCSP_ONEREQ, (st), (val)) -# define sk_OCSP_ONEREQ_find(st, val) SKM_sk_find(OCSP_ONEREQ, (st), (val)) -# define sk_OCSP_ONEREQ_find_ex(st, val) SKM_sk_find_ex(OCSP_ONEREQ, (st), (val)) -# define sk_OCSP_ONEREQ_delete(st, i) SKM_sk_delete(OCSP_ONEREQ, (st), (i)) -# define sk_OCSP_ONEREQ_delete_ptr(st, ptr) SKM_sk_delete_ptr(OCSP_ONEREQ, (st), (ptr)) -# define sk_OCSP_ONEREQ_insert(st, val, i) SKM_sk_insert(OCSP_ONEREQ, (st), (val), (i)) -# define sk_OCSP_ONEREQ_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(OCSP_ONEREQ, (st), (cmp)) -# define sk_OCSP_ONEREQ_dup(st) SKM_sk_dup(OCSP_ONEREQ, st) -# define sk_OCSP_ONEREQ_pop_free(st, free_func) SKM_sk_pop_free(OCSP_ONEREQ, (st), (free_func)) -# define sk_OCSP_ONEREQ_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(OCSP_ONEREQ, (st), (copy_func), (free_func)) -# define sk_OCSP_ONEREQ_shift(st) SKM_sk_shift(OCSP_ONEREQ, (st)) -# define sk_OCSP_ONEREQ_pop(st) SKM_sk_pop(OCSP_ONEREQ, (st)) -# define sk_OCSP_ONEREQ_sort(st) SKM_sk_sort(OCSP_ONEREQ, (st)) -# define sk_OCSP_ONEREQ_is_sorted(st) SKM_sk_is_sorted(OCSP_ONEREQ, (st)) -# define sk_OCSP_RESPID_new(cmp) SKM_sk_new(OCSP_RESPID, (cmp)) -# define sk_OCSP_RESPID_new_null() SKM_sk_new_null(OCSP_RESPID) -# define sk_OCSP_RESPID_free(st) SKM_sk_free(OCSP_RESPID, (st)) -# define sk_OCSP_RESPID_num(st) SKM_sk_num(OCSP_RESPID, (st)) -# define sk_OCSP_RESPID_value(st, i) SKM_sk_value(OCSP_RESPID, (st), (i)) -# define sk_OCSP_RESPID_set(st, i, val) SKM_sk_set(OCSP_RESPID, (st), (i), (val)) -# define sk_OCSP_RESPID_zero(st) SKM_sk_zero(OCSP_RESPID, (st)) -# define sk_OCSP_RESPID_push(st, val) SKM_sk_push(OCSP_RESPID, (st), (val)) -# define sk_OCSP_RESPID_unshift(st, val) SKM_sk_unshift(OCSP_RESPID, (st), (val)) -# define sk_OCSP_RESPID_find(st, val) SKM_sk_find(OCSP_RESPID, (st), (val)) -# define sk_OCSP_RESPID_find_ex(st, val) SKM_sk_find_ex(OCSP_RESPID, (st), (val)) -# define sk_OCSP_RESPID_delete(st, i) SKM_sk_delete(OCSP_RESPID, (st), (i)) -# define sk_OCSP_RESPID_delete_ptr(st, ptr) SKM_sk_delete_ptr(OCSP_RESPID, (st), (ptr)) -# define sk_OCSP_RESPID_insert(st, val, i) SKM_sk_insert(OCSP_RESPID, (st), (val), (i)) -# define sk_OCSP_RESPID_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(OCSP_RESPID, (st), (cmp)) -# define sk_OCSP_RESPID_dup(st) SKM_sk_dup(OCSP_RESPID, st) -# define sk_OCSP_RESPID_pop_free(st, free_func) SKM_sk_pop_free(OCSP_RESPID, (st), (free_func)) -# define sk_OCSP_RESPID_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(OCSP_RESPID, (st), (copy_func), (free_func)) -# define sk_OCSP_RESPID_shift(st) SKM_sk_shift(OCSP_RESPID, (st)) -# define sk_OCSP_RESPID_pop(st) SKM_sk_pop(OCSP_RESPID, (st)) -# define sk_OCSP_RESPID_sort(st) SKM_sk_sort(OCSP_RESPID, (st)) -# define sk_OCSP_RESPID_is_sorted(st) SKM_sk_is_sorted(OCSP_RESPID, (st)) -# define sk_OCSP_SINGLERESP_new(cmp) SKM_sk_new(OCSP_SINGLERESP, (cmp)) -# define sk_OCSP_SINGLERESP_new_null() SKM_sk_new_null(OCSP_SINGLERESP) -# define sk_OCSP_SINGLERESP_free(st) SKM_sk_free(OCSP_SINGLERESP, (st)) -# define sk_OCSP_SINGLERESP_num(st) SKM_sk_num(OCSP_SINGLERESP, (st)) -# define sk_OCSP_SINGLERESP_value(st, i) SKM_sk_value(OCSP_SINGLERESP, (st), (i)) -# define sk_OCSP_SINGLERESP_set(st, i, val) SKM_sk_set(OCSP_SINGLERESP, (st), (i), (val)) -# define sk_OCSP_SINGLERESP_zero(st) SKM_sk_zero(OCSP_SINGLERESP, (st)) -# define sk_OCSP_SINGLERESP_push(st, val) SKM_sk_push(OCSP_SINGLERESP, (st), (val)) -# define sk_OCSP_SINGLERESP_unshift(st, val) SKM_sk_unshift(OCSP_SINGLERESP, (st), (val)) -# define sk_OCSP_SINGLERESP_find(st, val) SKM_sk_find(OCSP_SINGLERESP, (st), (val)) -# define sk_OCSP_SINGLERESP_find_ex(st, val) SKM_sk_find_ex(OCSP_SINGLERESP, (st), (val)) -# define sk_OCSP_SINGLERESP_delete(st, i) SKM_sk_delete(OCSP_SINGLERESP, (st), (i)) -# define sk_OCSP_SINGLERESP_delete_ptr(st, ptr) SKM_sk_delete_ptr(OCSP_SINGLERESP, (st), (ptr)) -# define sk_OCSP_SINGLERESP_insert(st, val, i) SKM_sk_insert(OCSP_SINGLERESP, (st), (val), (i)) -# define sk_OCSP_SINGLERESP_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(OCSP_SINGLERESP, (st), (cmp)) -# define sk_OCSP_SINGLERESP_dup(st) SKM_sk_dup(OCSP_SINGLERESP, st) -# define sk_OCSP_SINGLERESP_pop_free(st, free_func) SKM_sk_pop_free(OCSP_SINGLERESP, (st), (free_func)) -# define sk_OCSP_SINGLERESP_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(OCSP_SINGLERESP, (st), (copy_func), (free_func)) -# define sk_OCSP_SINGLERESP_shift(st) SKM_sk_shift(OCSP_SINGLERESP, (st)) -# define sk_OCSP_SINGLERESP_pop(st) SKM_sk_pop(OCSP_SINGLERESP, (st)) -# define sk_OCSP_SINGLERESP_sort(st) SKM_sk_sort(OCSP_SINGLERESP, (st)) -# define sk_OCSP_SINGLERESP_is_sorted(st) SKM_sk_is_sorted(OCSP_SINGLERESP, (st)) -# define sk_PKCS12_SAFEBAG_new(cmp) SKM_sk_new(PKCS12_SAFEBAG, (cmp)) -# define sk_PKCS12_SAFEBAG_new_null() SKM_sk_new_null(PKCS12_SAFEBAG) -# define sk_PKCS12_SAFEBAG_free(st) SKM_sk_free(PKCS12_SAFEBAG, (st)) -# define sk_PKCS12_SAFEBAG_num(st) SKM_sk_num(PKCS12_SAFEBAG, (st)) -# define sk_PKCS12_SAFEBAG_value(st, i) SKM_sk_value(PKCS12_SAFEBAG, (st), (i)) -# define sk_PKCS12_SAFEBAG_set(st, i, val) SKM_sk_set(PKCS12_SAFEBAG, (st), (i), (val)) -# define sk_PKCS12_SAFEBAG_zero(st) SKM_sk_zero(PKCS12_SAFEBAG, (st)) -# define sk_PKCS12_SAFEBAG_push(st, val) SKM_sk_push(PKCS12_SAFEBAG, (st), (val)) -# define sk_PKCS12_SAFEBAG_unshift(st, val) SKM_sk_unshift(PKCS12_SAFEBAG, (st), (val)) -# define sk_PKCS12_SAFEBAG_find(st, val) SKM_sk_find(PKCS12_SAFEBAG, (st), (val)) -# define sk_PKCS12_SAFEBAG_find_ex(st, val) SKM_sk_find_ex(PKCS12_SAFEBAG, (st), (val)) -# define sk_PKCS12_SAFEBAG_delete(st, i) SKM_sk_delete(PKCS12_SAFEBAG, (st), (i)) -# define sk_PKCS12_SAFEBAG_delete_ptr(st, ptr) SKM_sk_delete_ptr(PKCS12_SAFEBAG, (st), (ptr)) -# define sk_PKCS12_SAFEBAG_insert(st, val, i) SKM_sk_insert(PKCS12_SAFEBAG, (st), (val), (i)) -# define sk_PKCS12_SAFEBAG_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(PKCS12_SAFEBAG, (st), (cmp)) -# define sk_PKCS12_SAFEBAG_dup(st) SKM_sk_dup(PKCS12_SAFEBAG, st) -# define sk_PKCS12_SAFEBAG_pop_free(st, free_func) SKM_sk_pop_free(PKCS12_SAFEBAG, (st), (free_func)) -# define sk_PKCS12_SAFEBAG_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(PKCS12_SAFEBAG, (st), (copy_func), (free_func)) -# define sk_PKCS12_SAFEBAG_shift(st) SKM_sk_shift(PKCS12_SAFEBAG, (st)) -# define sk_PKCS12_SAFEBAG_pop(st) SKM_sk_pop(PKCS12_SAFEBAG, (st)) -# define sk_PKCS12_SAFEBAG_sort(st) SKM_sk_sort(PKCS12_SAFEBAG, (st)) -# define sk_PKCS12_SAFEBAG_is_sorted(st) SKM_sk_is_sorted(PKCS12_SAFEBAG, (st)) -# define sk_PKCS7_new(cmp) SKM_sk_new(PKCS7, (cmp)) -# define sk_PKCS7_new_null() SKM_sk_new_null(PKCS7) -# define sk_PKCS7_free(st) SKM_sk_free(PKCS7, (st)) -# define sk_PKCS7_num(st) SKM_sk_num(PKCS7, (st)) -# define sk_PKCS7_value(st, i) SKM_sk_value(PKCS7, (st), (i)) -# define sk_PKCS7_set(st, i, val) SKM_sk_set(PKCS7, (st), (i), (val)) -# define sk_PKCS7_zero(st) SKM_sk_zero(PKCS7, (st)) -# define sk_PKCS7_push(st, val) SKM_sk_push(PKCS7, (st), (val)) -# define sk_PKCS7_unshift(st, val) SKM_sk_unshift(PKCS7, (st), (val)) -# define sk_PKCS7_find(st, val) SKM_sk_find(PKCS7, (st), (val)) -# define sk_PKCS7_find_ex(st, val) SKM_sk_find_ex(PKCS7, (st), (val)) -# define sk_PKCS7_delete(st, i) SKM_sk_delete(PKCS7, (st), (i)) -# define sk_PKCS7_delete_ptr(st, ptr) SKM_sk_delete_ptr(PKCS7, (st), (ptr)) -# define sk_PKCS7_insert(st, val, i) SKM_sk_insert(PKCS7, (st), (val), (i)) -# define sk_PKCS7_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(PKCS7, (st), (cmp)) -# define sk_PKCS7_dup(st) SKM_sk_dup(PKCS7, st) -# define sk_PKCS7_pop_free(st, free_func) SKM_sk_pop_free(PKCS7, (st), (free_func)) -# define sk_PKCS7_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(PKCS7, (st), (copy_func), (free_func)) -# define sk_PKCS7_shift(st) SKM_sk_shift(PKCS7, (st)) -# define sk_PKCS7_pop(st) SKM_sk_pop(PKCS7, (st)) -# define sk_PKCS7_sort(st) SKM_sk_sort(PKCS7, (st)) -# define sk_PKCS7_is_sorted(st) SKM_sk_is_sorted(PKCS7, (st)) -# define sk_PKCS7_RECIP_INFO_new(cmp) SKM_sk_new(PKCS7_RECIP_INFO, (cmp)) -# define sk_PKCS7_RECIP_INFO_new_null() SKM_sk_new_null(PKCS7_RECIP_INFO) -# define sk_PKCS7_RECIP_INFO_free(st) SKM_sk_free(PKCS7_RECIP_INFO, (st)) -# define sk_PKCS7_RECIP_INFO_num(st) SKM_sk_num(PKCS7_RECIP_INFO, (st)) -# define sk_PKCS7_RECIP_INFO_value(st, i) SKM_sk_value(PKCS7_RECIP_INFO, (st), (i)) -# define sk_PKCS7_RECIP_INFO_set(st, i, val) SKM_sk_set(PKCS7_RECIP_INFO, (st), (i), (val)) -# define sk_PKCS7_RECIP_INFO_zero(st) SKM_sk_zero(PKCS7_RECIP_INFO, (st)) -# define sk_PKCS7_RECIP_INFO_push(st, val) SKM_sk_push(PKCS7_RECIP_INFO, (st), (val)) -# define sk_PKCS7_RECIP_INFO_unshift(st, val) SKM_sk_unshift(PKCS7_RECIP_INFO, (st), (val)) -# define sk_PKCS7_RECIP_INFO_find(st, val) SKM_sk_find(PKCS7_RECIP_INFO, (st), (val)) -# define sk_PKCS7_RECIP_INFO_find_ex(st, val) SKM_sk_find_ex(PKCS7_RECIP_INFO, (st), (val)) -# define sk_PKCS7_RECIP_INFO_delete(st, i) SKM_sk_delete(PKCS7_RECIP_INFO, (st), (i)) -# define sk_PKCS7_RECIP_INFO_delete_ptr(st, ptr) SKM_sk_delete_ptr(PKCS7_RECIP_INFO, (st), (ptr)) -# define sk_PKCS7_RECIP_INFO_insert(st, val, i) SKM_sk_insert(PKCS7_RECIP_INFO, (st), (val), (i)) -# define sk_PKCS7_RECIP_INFO_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(PKCS7_RECIP_INFO, (st), (cmp)) -# define sk_PKCS7_RECIP_INFO_dup(st) SKM_sk_dup(PKCS7_RECIP_INFO, st) -# define sk_PKCS7_RECIP_INFO_pop_free(st, free_func) SKM_sk_pop_free(PKCS7_RECIP_INFO, (st), (free_func)) -# define sk_PKCS7_RECIP_INFO_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(PKCS7_RECIP_INFO, (st), (copy_func), (free_func)) -# define sk_PKCS7_RECIP_INFO_shift(st) SKM_sk_shift(PKCS7_RECIP_INFO, (st)) -# define sk_PKCS7_RECIP_INFO_pop(st) SKM_sk_pop(PKCS7_RECIP_INFO, (st)) -# define sk_PKCS7_RECIP_INFO_sort(st) SKM_sk_sort(PKCS7_RECIP_INFO, (st)) -# define sk_PKCS7_RECIP_INFO_is_sorted(st) SKM_sk_is_sorted(PKCS7_RECIP_INFO, (st)) -# define sk_PKCS7_SIGNER_INFO_new(cmp) SKM_sk_new(PKCS7_SIGNER_INFO, (cmp)) -# define sk_PKCS7_SIGNER_INFO_new_null() SKM_sk_new_null(PKCS7_SIGNER_INFO) -# define sk_PKCS7_SIGNER_INFO_free(st) SKM_sk_free(PKCS7_SIGNER_INFO, (st)) -# define sk_PKCS7_SIGNER_INFO_num(st) SKM_sk_num(PKCS7_SIGNER_INFO, (st)) -# define sk_PKCS7_SIGNER_INFO_value(st, i) SKM_sk_value(PKCS7_SIGNER_INFO, (st), (i)) -# define sk_PKCS7_SIGNER_INFO_set(st, i, val) SKM_sk_set(PKCS7_SIGNER_INFO, (st), (i), (val)) -# define sk_PKCS7_SIGNER_INFO_zero(st) SKM_sk_zero(PKCS7_SIGNER_INFO, (st)) -# define sk_PKCS7_SIGNER_INFO_push(st, val) SKM_sk_push(PKCS7_SIGNER_INFO, (st), (val)) -# define sk_PKCS7_SIGNER_INFO_unshift(st, val) SKM_sk_unshift(PKCS7_SIGNER_INFO, (st), (val)) -# define sk_PKCS7_SIGNER_INFO_find(st, val) SKM_sk_find(PKCS7_SIGNER_INFO, (st), (val)) -# define sk_PKCS7_SIGNER_INFO_find_ex(st, val) SKM_sk_find_ex(PKCS7_SIGNER_INFO, (st), (val)) -# define sk_PKCS7_SIGNER_INFO_delete(st, i) SKM_sk_delete(PKCS7_SIGNER_INFO, (st), (i)) -# define sk_PKCS7_SIGNER_INFO_delete_ptr(st, ptr) SKM_sk_delete_ptr(PKCS7_SIGNER_INFO, (st), (ptr)) -# define sk_PKCS7_SIGNER_INFO_insert(st, val, i) SKM_sk_insert(PKCS7_SIGNER_INFO, (st), (val), (i)) -# define sk_PKCS7_SIGNER_INFO_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(PKCS7_SIGNER_INFO, (st), (cmp)) -# define sk_PKCS7_SIGNER_INFO_dup(st) SKM_sk_dup(PKCS7_SIGNER_INFO, st) -# define sk_PKCS7_SIGNER_INFO_pop_free(st, free_func) SKM_sk_pop_free(PKCS7_SIGNER_INFO, (st), (free_func)) -# define sk_PKCS7_SIGNER_INFO_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(PKCS7_SIGNER_INFO, (st), (copy_func), (free_func)) -# define sk_PKCS7_SIGNER_INFO_shift(st) SKM_sk_shift(PKCS7_SIGNER_INFO, (st)) -# define sk_PKCS7_SIGNER_INFO_pop(st) SKM_sk_pop(PKCS7_SIGNER_INFO, (st)) -# define sk_PKCS7_SIGNER_INFO_sort(st) SKM_sk_sort(PKCS7_SIGNER_INFO, (st)) -# define sk_PKCS7_SIGNER_INFO_is_sorted(st) SKM_sk_is_sorted(PKCS7_SIGNER_INFO, (st)) -# define sk_POLICYINFO_new(cmp) SKM_sk_new(POLICYINFO, (cmp)) -# define sk_POLICYINFO_new_null() SKM_sk_new_null(POLICYINFO) -# define sk_POLICYINFO_free(st) SKM_sk_free(POLICYINFO, (st)) -# define sk_POLICYINFO_num(st) SKM_sk_num(POLICYINFO, (st)) -# define sk_POLICYINFO_value(st, i) SKM_sk_value(POLICYINFO, (st), (i)) -# define sk_POLICYINFO_set(st, i, val) SKM_sk_set(POLICYINFO, (st), (i), (val)) -# define sk_POLICYINFO_zero(st) SKM_sk_zero(POLICYINFO, (st)) -# define sk_POLICYINFO_push(st, val) SKM_sk_push(POLICYINFO, (st), (val)) -# define sk_POLICYINFO_unshift(st, val) SKM_sk_unshift(POLICYINFO, (st), (val)) -# define sk_POLICYINFO_find(st, val) SKM_sk_find(POLICYINFO, (st), (val)) -# define sk_POLICYINFO_find_ex(st, val) SKM_sk_find_ex(POLICYINFO, (st), (val)) -# define sk_POLICYINFO_delete(st, i) SKM_sk_delete(POLICYINFO, (st), (i)) -# define sk_POLICYINFO_delete_ptr(st, ptr) SKM_sk_delete_ptr(POLICYINFO, (st), (ptr)) -# define sk_POLICYINFO_insert(st, val, i) SKM_sk_insert(POLICYINFO, (st), (val), (i)) -# define sk_POLICYINFO_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(POLICYINFO, (st), (cmp)) -# define sk_POLICYINFO_dup(st) SKM_sk_dup(POLICYINFO, st) -# define sk_POLICYINFO_pop_free(st, free_func) SKM_sk_pop_free(POLICYINFO, (st), (free_func)) -# define sk_POLICYINFO_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(POLICYINFO, (st), (copy_func), (free_func)) -# define sk_POLICYINFO_shift(st) SKM_sk_shift(POLICYINFO, (st)) -# define sk_POLICYINFO_pop(st) SKM_sk_pop(POLICYINFO, (st)) -# define sk_POLICYINFO_sort(st) SKM_sk_sort(POLICYINFO, (st)) -# define sk_POLICYINFO_is_sorted(st) SKM_sk_is_sorted(POLICYINFO, (st)) -# define sk_POLICYQUALINFO_new(cmp) SKM_sk_new(POLICYQUALINFO, (cmp)) -# define sk_POLICYQUALINFO_new_null() SKM_sk_new_null(POLICYQUALINFO) -# define sk_POLICYQUALINFO_free(st) SKM_sk_free(POLICYQUALINFO, (st)) -# define sk_POLICYQUALINFO_num(st) SKM_sk_num(POLICYQUALINFO, (st)) -# define sk_POLICYQUALINFO_value(st, i) SKM_sk_value(POLICYQUALINFO, (st), (i)) -# define sk_POLICYQUALINFO_set(st, i, val) SKM_sk_set(POLICYQUALINFO, (st), (i), (val)) -# define sk_POLICYQUALINFO_zero(st) SKM_sk_zero(POLICYQUALINFO, (st)) -# define sk_POLICYQUALINFO_push(st, val) SKM_sk_push(POLICYQUALINFO, (st), (val)) -# define sk_POLICYQUALINFO_unshift(st, val) SKM_sk_unshift(POLICYQUALINFO, (st), (val)) -# define sk_POLICYQUALINFO_find(st, val) SKM_sk_find(POLICYQUALINFO, (st), (val)) -# define sk_POLICYQUALINFO_find_ex(st, val) SKM_sk_find_ex(POLICYQUALINFO, (st), (val)) -# define sk_POLICYQUALINFO_delete(st, i) SKM_sk_delete(POLICYQUALINFO, (st), (i)) -# define sk_POLICYQUALINFO_delete_ptr(st, ptr) SKM_sk_delete_ptr(POLICYQUALINFO, (st), (ptr)) -# define sk_POLICYQUALINFO_insert(st, val, i) SKM_sk_insert(POLICYQUALINFO, (st), (val), (i)) -# define sk_POLICYQUALINFO_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(POLICYQUALINFO, (st), (cmp)) -# define sk_POLICYQUALINFO_dup(st) SKM_sk_dup(POLICYQUALINFO, st) -# define sk_POLICYQUALINFO_pop_free(st, free_func) SKM_sk_pop_free(POLICYQUALINFO, (st), (free_func)) -# define sk_POLICYQUALINFO_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(POLICYQUALINFO, (st), (copy_func), (free_func)) -# define sk_POLICYQUALINFO_shift(st) SKM_sk_shift(POLICYQUALINFO, (st)) -# define sk_POLICYQUALINFO_pop(st) SKM_sk_pop(POLICYQUALINFO, (st)) -# define sk_POLICYQUALINFO_sort(st) SKM_sk_sort(POLICYQUALINFO, (st)) -# define sk_POLICYQUALINFO_is_sorted(st) SKM_sk_is_sorted(POLICYQUALINFO, (st)) -# define sk_POLICY_MAPPING_new(cmp) SKM_sk_new(POLICY_MAPPING, (cmp)) -# define sk_POLICY_MAPPING_new_null() SKM_sk_new_null(POLICY_MAPPING) -# define sk_POLICY_MAPPING_free(st) SKM_sk_free(POLICY_MAPPING, (st)) -# define sk_POLICY_MAPPING_num(st) SKM_sk_num(POLICY_MAPPING, (st)) -# define sk_POLICY_MAPPING_value(st, i) SKM_sk_value(POLICY_MAPPING, (st), (i)) -# define sk_POLICY_MAPPING_set(st, i, val) SKM_sk_set(POLICY_MAPPING, (st), (i), (val)) -# define sk_POLICY_MAPPING_zero(st) SKM_sk_zero(POLICY_MAPPING, (st)) -# define sk_POLICY_MAPPING_push(st, val) SKM_sk_push(POLICY_MAPPING, (st), (val)) -# define sk_POLICY_MAPPING_unshift(st, val) SKM_sk_unshift(POLICY_MAPPING, (st), (val)) -# define sk_POLICY_MAPPING_find(st, val) SKM_sk_find(POLICY_MAPPING, (st), (val)) -# define sk_POLICY_MAPPING_find_ex(st, val) SKM_sk_find_ex(POLICY_MAPPING, (st), (val)) -# define sk_POLICY_MAPPING_delete(st, i) SKM_sk_delete(POLICY_MAPPING, (st), (i)) -# define sk_POLICY_MAPPING_delete_ptr(st, ptr) SKM_sk_delete_ptr(POLICY_MAPPING, (st), (ptr)) -# define sk_POLICY_MAPPING_insert(st, val, i) SKM_sk_insert(POLICY_MAPPING, (st), (val), (i)) -# define sk_POLICY_MAPPING_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(POLICY_MAPPING, (st), (cmp)) -# define sk_POLICY_MAPPING_dup(st) SKM_sk_dup(POLICY_MAPPING, st) -# define sk_POLICY_MAPPING_pop_free(st, free_func) SKM_sk_pop_free(POLICY_MAPPING, (st), (free_func)) -# define sk_POLICY_MAPPING_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(POLICY_MAPPING, (st), (copy_func), (free_func)) -# define sk_POLICY_MAPPING_shift(st) SKM_sk_shift(POLICY_MAPPING, (st)) -# define sk_POLICY_MAPPING_pop(st) SKM_sk_pop(POLICY_MAPPING, (st)) -# define sk_POLICY_MAPPING_sort(st) SKM_sk_sort(POLICY_MAPPING, (st)) -# define sk_POLICY_MAPPING_is_sorted(st) SKM_sk_is_sorted(POLICY_MAPPING, (st)) -# define sk_SCT_new(cmp) SKM_sk_new(SCT, (cmp)) -# define sk_SCT_new_null() SKM_sk_new_null(SCT) -# define sk_SCT_free(st) SKM_sk_free(SCT, (st)) -# define sk_SCT_num(st) SKM_sk_num(SCT, (st)) -# define sk_SCT_value(st, i) SKM_sk_value(SCT, (st), (i)) -# define sk_SCT_set(st, i, val) SKM_sk_set(SCT, (st), (i), (val)) -# define sk_SCT_zero(st) SKM_sk_zero(SCT, (st)) -# define sk_SCT_push(st, val) SKM_sk_push(SCT, (st), (val)) -# define sk_SCT_unshift(st, val) SKM_sk_unshift(SCT, (st), (val)) -# define sk_SCT_find(st, val) SKM_sk_find(SCT, (st), (val)) -# define sk_SCT_find_ex(st, val) SKM_sk_find_ex(SCT, (st), (val)) -# define sk_SCT_delete(st, i) SKM_sk_delete(SCT, (st), (i)) -# define sk_SCT_delete_ptr(st, ptr) SKM_sk_delete_ptr(SCT, (st), (ptr)) -# define sk_SCT_insert(st, val, i) SKM_sk_insert(SCT, (st), (val), (i)) -# define sk_SCT_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(SCT, (st), (cmp)) -# define sk_SCT_dup(st) SKM_sk_dup(SCT, st) -# define sk_SCT_pop_free(st, free_func) SKM_sk_pop_free(SCT, (st), (free_func)) -# define sk_SCT_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(SCT, (st), (copy_func), (free_func)) -# define sk_SCT_shift(st) SKM_sk_shift(SCT, (st)) -# define sk_SCT_pop(st) SKM_sk_pop(SCT, (st)) -# define sk_SCT_sort(st) SKM_sk_sort(SCT, (st)) -# define sk_SCT_is_sorted(st) SKM_sk_is_sorted(SCT, (st)) -# define sk_SRP_gN_new(cmp) SKM_sk_new(SRP_gN, (cmp)) -# define sk_SRP_gN_new_null() SKM_sk_new_null(SRP_gN) -# define sk_SRP_gN_free(st) SKM_sk_free(SRP_gN, (st)) -# define sk_SRP_gN_num(st) SKM_sk_num(SRP_gN, (st)) -# define sk_SRP_gN_value(st, i) SKM_sk_value(SRP_gN, (st), (i)) -# define sk_SRP_gN_set(st, i, val) SKM_sk_set(SRP_gN, (st), (i), (val)) -# define sk_SRP_gN_zero(st) SKM_sk_zero(SRP_gN, (st)) -# define sk_SRP_gN_push(st, val) SKM_sk_push(SRP_gN, (st), (val)) -# define sk_SRP_gN_unshift(st, val) SKM_sk_unshift(SRP_gN, (st), (val)) -# define sk_SRP_gN_find(st, val) SKM_sk_find(SRP_gN, (st), (val)) -# define sk_SRP_gN_find_ex(st, val) SKM_sk_find_ex(SRP_gN, (st), (val)) -# define sk_SRP_gN_delete(st, i) SKM_sk_delete(SRP_gN, (st), (i)) -# define sk_SRP_gN_delete_ptr(st, ptr) SKM_sk_delete_ptr(SRP_gN, (st), (ptr)) -# define sk_SRP_gN_insert(st, val, i) SKM_sk_insert(SRP_gN, (st), (val), (i)) -# define sk_SRP_gN_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(SRP_gN, (st), (cmp)) -# define sk_SRP_gN_dup(st) SKM_sk_dup(SRP_gN, st) -# define sk_SRP_gN_pop_free(st, free_func) SKM_sk_pop_free(SRP_gN, (st), (free_func)) -# define sk_SRP_gN_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(SRP_gN, (st), (copy_func), (free_func)) -# define sk_SRP_gN_shift(st) SKM_sk_shift(SRP_gN, (st)) -# define sk_SRP_gN_pop(st) SKM_sk_pop(SRP_gN, (st)) -# define sk_SRP_gN_sort(st) SKM_sk_sort(SRP_gN, (st)) -# define sk_SRP_gN_is_sorted(st) SKM_sk_is_sorted(SRP_gN, (st)) -# define sk_SRP_gN_cache_new(cmp) SKM_sk_new(SRP_gN_cache, (cmp)) -# define sk_SRP_gN_cache_new_null() SKM_sk_new_null(SRP_gN_cache) -# define sk_SRP_gN_cache_free(st) SKM_sk_free(SRP_gN_cache, (st)) -# define sk_SRP_gN_cache_num(st) SKM_sk_num(SRP_gN_cache, (st)) -# define sk_SRP_gN_cache_value(st, i) SKM_sk_value(SRP_gN_cache, (st), (i)) -# define sk_SRP_gN_cache_set(st, i, val) SKM_sk_set(SRP_gN_cache, (st), (i), (val)) -# define sk_SRP_gN_cache_zero(st) SKM_sk_zero(SRP_gN_cache, (st)) -# define sk_SRP_gN_cache_push(st, val) SKM_sk_push(SRP_gN_cache, (st), (val)) -# define sk_SRP_gN_cache_unshift(st, val) SKM_sk_unshift(SRP_gN_cache, (st), (val)) -# define sk_SRP_gN_cache_find(st, val) SKM_sk_find(SRP_gN_cache, (st), (val)) -# define sk_SRP_gN_cache_find_ex(st, val) SKM_sk_find_ex(SRP_gN_cache, (st), (val)) -# define sk_SRP_gN_cache_delete(st, i) SKM_sk_delete(SRP_gN_cache, (st), (i)) -# define sk_SRP_gN_cache_delete_ptr(st, ptr) SKM_sk_delete_ptr(SRP_gN_cache, (st), (ptr)) -# define sk_SRP_gN_cache_insert(st, val, i) SKM_sk_insert(SRP_gN_cache, (st), (val), (i)) -# define sk_SRP_gN_cache_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(SRP_gN_cache, (st), (cmp)) -# define sk_SRP_gN_cache_dup(st) SKM_sk_dup(SRP_gN_cache, st) -# define sk_SRP_gN_cache_pop_free(st, free_func) SKM_sk_pop_free(SRP_gN_cache, (st), (free_func)) -# define sk_SRP_gN_cache_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(SRP_gN_cache, (st), (copy_func), (free_func)) -# define sk_SRP_gN_cache_shift(st) SKM_sk_shift(SRP_gN_cache, (st)) -# define sk_SRP_gN_cache_pop(st) SKM_sk_pop(SRP_gN_cache, (st)) -# define sk_SRP_gN_cache_sort(st) SKM_sk_sort(SRP_gN_cache, (st)) -# define sk_SRP_gN_cache_is_sorted(st) SKM_sk_is_sorted(SRP_gN_cache, (st)) -# define sk_SRP_user_pwd_new(cmp) SKM_sk_new(SRP_user_pwd, (cmp)) -# define sk_SRP_user_pwd_new_null() SKM_sk_new_null(SRP_user_pwd) -# define sk_SRP_user_pwd_free(st) SKM_sk_free(SRP_user_pwd, (st)) -# define sk_SRP_user_pwd_num(st) SKM_sk_num(SRP_user_pwd, (st)) -# define sk_SRP_user_pwd_value(st, i) SKM_sk_value(SRP_user_pwd, (st), (i)) -# define sk_SRP_user_pwd_set(st, i, val) SKM_sk_set(SRP_user_pwd, (st), (i), (val)) -# define sk_SRP_user_pwd_zero(st) SKM_sk_zero(SRP_user_pwd, (st)) -# define sk_SRP_user_pwd_push(st, val) SKM_sk_push(SRP_user_pwd, (st), (val)) -# define sk_SRP_user_pwd_unshift(st, val) SKM_sk_unshift(SRP_user_pwd, (st), (val)) -# define sk_SRP_user_pwd_find(st, val) SKM_sk_find(SRP_user_pwd, (st), (val)) -# define sk_SRP_user_pwd_find_ex(st, val) SKM_sk_find_ex(SRP_user_pwd, (st), (val)) -# define sk_SRP_user_pwd_delete(st, i) SKM_sk_delete(SRP_user_pwd, (st), (i)) -# define sk_SRP_user_pwd_delete_ptr(st, ptr) SKM_sk_delete_ptr(SRP_user_pwd, (st), (ptr)) -# define sk_SRP_user_pwd_insert(st, val, i) SKM_sk_insert(SRP_user_pwd, (st), (val), (i)) -# define sk_SRP_user_pwd_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(SRP_user_pwd, (st), (cmp)) -# define sk_SRP_user_pwd_dup(st) SKM_sk_dup(SRP_user_pwd, st) -# define sk_SRP_user_pwd_pop_free(st, free_func) SKM_sk_pop_free(SRP_user_pwd, (st), (free_func)) -# define sk_SRP_user_pwd_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(SRP_user_pwd, (st), (copy_func), (free_func)) -# define sk_SRP_user_pwd_shift(st) SKM_sk_shift(SRP_user_pwd, (st)) -# define sk_SRP_user_pwd_pop(st) SKM_sk_pop(SRP_user_pwd, (st)) -# define sk_SRP_user_pwd_sort(st) SKM_sk_sort(SRP_user_pwd, (st)) -# define sk_SRP_user_pwd_is_sorted(st) SKM_sk_is_sorted(SRP_user_pwd, (st)) -# define sk_SRTP_PROTECTION_PROFILE_new(cmp) SKM_sk_new(SRTP_PROTECTION_PROFILE, (cmp)) -# define sk_SRTP_PROTECTION_PROFILE_new_null() SKM_sk_new_null(SRTP_PROTECTION_PROFILE) -# define sk_SRTP_PROTECTION_PROFILE_free(st) SKM_sk_free(SRTP_PROTECTION_PROFILE, (st)) -# define sk_SRTP_PROTECTION_PROFILE_num(st) SKM_sk_num(SRTP_PROTECTION_PROFILE, (st)) -# define sk_SRTP_PROTECTION_PROFILE_value(st, i) SKM_sk_value(SRTP_PROTECTION_PROFILE, (st), (i)) -# define sk_SRTP_PROTECTION_PROFILE_set(st, i, val) SKM_sk_set(SRTP_PROTECTION_PROFILE, (st), (i), (val)) -# define sk_SRTP_PROTECTION_PROFILE_zero(st) SKM_sk_zero(SRTP_PROTECTION_PROFILE, (st)) -# define sk_SRTP_PROTECTION_PROFILE_push(st, val) SKM_sk_push(SRTP_PROTECTION_PROFILE, (st), (val)) -# define sk_SRTP_PROTECTION_PROFILE_unshift(st, val) SKM_sk_unshift(SRTP_PROTECTION_PROFILE, (st), (val)) -# define sk_SRTP_PROTECTION_PROFILE_find(st, val) SKM_sk_find(SRTP_PROTECTION_PROFILE, (st), (val)) -# define sk_SRTP_PROTECTION_PROFILE_find_ex(st, val) SKM_sk_find_ex(SRTP_PROTECTION_PROFILE, (st), (val)) -# define sk_SRTP_PROTECTION_PROFILE_delete(st, i) SKM_sk_delete(SRTP_PROTECTION_PROFILE, (st), (i)) -# define sk_SRTP_PROTECTION_PROFILE_delete_ptr(st, ptr) SKM_sk_delete_ptr(SRTP_PROTECTION_PROFILE, (st), (ptr)) -# define sk_SRTP_PROTECTION_PROFILE_insert(st, val, i) SKM_sk_insert(SRTP_PROTECTION_PROFILE, (st), (val), (i)) -# define sk_SRTP_PROTECTION_PROFILE_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(SRTP_PROTECTION_PROFILE, (st), (cmp)) -# define sk_SRTP_PROTECTION_PROFILE_dup(st) SKM_sk_dup(SRTP_PROTECTION_PROFILE, st) -# define sk_SRTP_PROTECTION_PROFILE_pop_free(st, free_func) SKM_sk_pop_free(SRTP_PROTECTION_PROFILE, (st), (free_func)) -# define sk_SRTP_PROTECTION_PROFILE_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(SRTP_PROTECTION_PROFILE, (st), (copy_func), (free_func)) -# define sk_SRTP_PROTECTION_PROFILE_shift(st) SKM_sk_shift(SRTP_PROTECTION_PROFILE, (st)) -# define sk_SRTP_PROTECTION_PROFILE_pop(st) SKM_sk_pop(SRTP_PROTECTION_PROFILE, (st)) -# define sk_SRTP_PROTECTION_PROFILE_sort(st) SKM_sk_sort(SRTP_PROTECTION_PROFILE, (st)) -# define sk_SRTP_PROTECTION_PROFILE_is_sorted(st) SKM_sk_is_sorted(SRTP_PROTECTION_PROFILE, (st)) -# define sk_SSL_CIPHER_new(cmp) SKM_sk_new(SSL_CIPHER, (cmp)) -# define sk_SSL_CIPHER_new_null() SKM_sk_new_null(SSL_CIPHER) -# define sk_SSL_CIPHER_free(st) SKM_sk_free(SSL_CIPHER, (st)) -# define sk_SSL_CIPHER_num(st) SKM_sk_num(SSL_CIPHER, (st)) -# define sk_SSL_CIPHER_value(st, i) SKM_sk_value(SSL_CIPHER, (st), (i)) -# define sk_SSL_CIPHER_set(st, i, val) SKM_sk_set(SSL_CIPHER, (st), (i), (val)) -# define sk_SSL_CIPHER_zero(st) SKM_sk_zero(SSL_CIPHER, (st)) -# define sk_SSL_CIPHER_push(st, val) SKM_sk_push(SSL_CIPHER, (st), (val)) -# define sk_SSL_CIPHER_unshift(st, val) SKM_sk_unshift(SSL_CIPHER, (st), (val)) -# define sk_SSL_CIPHER_find(st, val) SKM_sk_find(SSL_CIPHER, (st), (val)) -# define sk_SSL_CIPHER_find_ex(st, val) SKM_sk_find_ex(SSL_CIPHER, (st), (val)) -# define sk_SSL_CIPHER_delete(st, i) SKM_sk_delete(SSL_CIPHER, (st), (i)) -# define sk_SSL_CIPHER_delete_ptr(st, ptr) SKM_sk_delete_ptr(SSL_CIPHER, (st), (ptr)) -# define sk_SSL_CIPHER_insert(st, val, i) SKM_sk_insert(SSL_CIPHER, (st), (val), (i)) -# define sk_SSL_CIPHER_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(SSL_CIPHER, (st), (cmp)) -# define sk_SSL_CIPHER_dup(st) SKM_sk_dup(SSL_CIPHER, st) -# define sk_SSL_CIPHER_pop_free(st, free_func) SKM_sk_pop_free(SSL_CIPHER, (st), (free_func)) -# define sk_SSL_CIPHER_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(SSL_CIPHER, (st), (copy_func), (free_func)) -# define sk_SSL_CIPHER_shift(st) SKM_sk_shift(SSL_CIPHER, (st)) -# define sk_SSL_CIPHER_pop(st) SKM_sk_pop(SSL_CIPHER, (st)) -# define sk_SSL_CIPHER_sort(st) SKM_sk_sort(SSL_CIPHER, (st)) -# define sk_SSL_CIPHER_is_sorted(st) SKM_sk_is_sorted(SSL_CIPHER, (st)) -# define sk_SSL_COMP_new(cmp) SKM_sk_new(SSL_COMP, (cmp)) -# define sk_SSL_COMP_new_null() SKM_sk_new_null(SSL_COMP) -# define sk_SSL_COMP_free(st) SKM_sk_free(SSL_COMP, (st)) -# define sk_SSL_COMP_num(st) SKM_sk_num(SSL_COMP, (st)) -# define sk_SSL_COMP_value(st, i) SKM_sk_value(SSL_COMP, (st), (i)) -# define sk_SSL_COMP_set(st, i, val) SKM_sk_set(SSL_COMP, (st), (i), (val)) -# define sk_SSL_COMP_zero(st) SKM_sk_zero(SSL_COMP, (st)) -# define sk_SSL_COMP_push(st, val) SKM_sk_push(SSL_COMP, (st), (val)) -# define sk_SSL_COMP_unshift(st, val) SKM_sk_unshift(SSL_COMP, (st), (val)) -# define sk_SSL_COMP_find(st, val) SKM_sk_find(SSL_COMP, (st), (val)) -# define sk_SSL_COMP_find_ex(st, val) SKM_sk_find_ex(SSL_COMP, (st), (val)) -# define sk_SSL_COMP_delete(st, i) SKM_sk_delete(SSL_COMP, (st), (i)) -# define sk_SSL_COMP_delete_ptr(st, ptr) SKM_sk_delete_ptr(SSL_COMP, (st), (ptr)) -# define sk_SSL_COMP_insert(st, val, i) SKM_sk_insert(SSL_COMP, (st), (val), (i)) -# define sk_SSL_COMP_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(SSL_COMP, (st), (cmp)) -# define sk_SSL_COMP_dup(st) SKM_sk_dup(SSL_COMP, st) -# define sk_SSL_COMP_pop_free(st, free_func) SKM_sk_pop_free(SSL_COMP, (st), (free_func)) -# define sk_SSL_COMP_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(SSL_COMP, (st), (copy_func), (free_func)) -# define sk_SSL_COMP_shift(st) SKM_sk_shift(SSL_COMP, (st)) -# define sk_SSL_COMP_pop(st) SKM_sk_pop(SSL_COMP, (st)) -# define sk_SSL_COMP_sort(st) SKM_sk_sort(SSL_COMP, (st)) -# define sk_SSL_COMP_is_sorted(st) SKM_sk_is_sorted(SSL_COMP, (st)) -# define sk_STACK_OF_X509_NAME_ENTRY_new(cmp) SKM_sk_new(STACK_OF_X509_NAME_ENTRY, (cmp)) -# define sk_STACK_OF_X509_NAME_ENTRY_new_null() SKM_sk_new_null(STACK_OF_X509_NAME_ENTRY) -# define sk_STACK_OF_X509_NAME_ENTRY_free(st) SKM_sk_free(STACK_OF_X509_NAME_ENTRY, (st)) -# define sk_STACK_OF_X509_NAME_ENTRY_num(st) SKM_sk_num(STACK_OF_X509_NAME_ENTRY, (st)) -# define sk_STACK_OF_X509_NAME_ENTRY_value(st, i) SKM_sk_value(STACK_OF_X509_NAME_ENTRY, (st), (i)) -# define sk_STACK_OF_X509_NAME_ENTRY_set(st, i, val) SKM_sk_set(STACK_OF_X509_NAME_ENTRY, (st), (i), (val)) -# define sk_STACK_OF_X509_NAME_ENTRY_zero(st) SKM_sk_zero(STACK_OF_X509_NAME_ENTRY, (st)) -# define sk_STACK_OF_X509_NAME_ENTRY_push(st, val) SKM_sk_push(STACK_OF_X509_NAME_ENTRY, (st), (val)) -# define sk_STACK_OF_X509_NAME_ENTRY_unshift(st, val) SKM_sk_unshift(STACK_OF_X509_NAME_ENTRY, (st), (val)) -# define sk_STACK_OF_X509_NAME_ENTRY_find(st, val) SKM_sk_find(STACK_OF_X509_NAME_ENTRY, (st), (val)) -# define sk_STACK_OF_X509_NAME_ENTRY_find_ex(st, val) SKM_sk_find_ex(STACK_OF_X509_NAME_ENTRY, (st), (val)) -# define sk_STACK_OF_X509_NAME_ENTRY_delete(st, i) SKM_sk_delete(STACK_OF_X509_NAME_ENTRY, (st), (i)) -# define sk_STACK_OF_X509_NAME_ENTRY_delete_ptr(st, ptr) SKM_sk_delete_ptr(STACK_OF_X509_NAME_ENTRY, (st), (ptr)) -# define sk_STACK_OF_X509_NAME_ENTRY_insert(st, val, i) SKM_sk_insert(STACK_OF_X509_NAME_ENTRY, (st), (val), (i)) -# define sk_STACK_OF_X509_NAME_ENTRY_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(STACK_OF_X509_NAME_ENTRY, (st), (cmp)) -# define sk_STACK_OF_X509_NAME_ENTRY_dup(st) SKM_sk_dup(STACK_OF_X509_NAME_ENTRY, st) -# define sk_STACK_OF_X509_NAME_ENTRY_pop_free(st, free_func) SKM_sk_pop_free(STACK_OF_X509_NAME_ENTRY, (st), (free_func)) -# define sk_STACK_OF_X509_NAME_ENTRY_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(STACK_OF_X509_NAME_ENTRY, (st), (copy_func), (free_func)) -# define sk_STACK_OF_X509_NAME_ENTRY_shift(st) SKM_sk_shift(STACK_OF_X509_NAME_ENTRY, (st)) -# define sk_STACK_OF_X509_NAME_ENTRY_pop(st) SKM_sk_pop(STACK_OF_X509_NAME_ENTRY, (st)) -# define sk_STACK_OF_X509_NAME_ENTRY_sort(st) SKM_sk_sort(STACK_OF_X509_NAME_ENTRY, (st)) -# define sk_STACK_OF_X509_NAME_ENTRY_is_sorted(st) SKM_sk_is_sorted(STACK_OF_X509_NAME_ENTRY, (st)) -# define sk_STORE_ATTR_INFO_new(cmp) SKM_sk_new(STORE_ATTR_INFO, (cmp)) -# define sk_STORE_ATTR_INFO_new_null() SKM_sk_new_null(STORE_ATTR_INFO) -# define sk_STORE_ATTR_INFO_free(st) SKM_sk_free(STORE_ATTR_INFO, (st)) -# define sk_STORE_ATTR_INFO_num(st) SKM_sk_num(STORE_ATTR_INFO, (st)) -# define sk_STORE_ATTR_INFO_value(st, i) SKM_sk_value(STORE_ATTR_INFO, (st), (i)) -# define sk_STORE_ATTR_INFO_set(st, i, val) SKM_sk_set(STORE_ATTR_INFO, (st), (i), (val)) -# define sk_STORE_ATTR_INFO_zero(st) SKM_sk_zero(STORE_ATTR_INFO, (st)) -# define sk_STORE_ATTR_INFO_push(st, val) SKM_sk_push(STORE_ATTR_INFO, (st), (val)) -# define sk_STORE_ATTR_INFO_unshift(st, val) SKM_sk_unshift(STORE_ATTR_INFO, (st), (val)) -# define sk_STORE_ATTR_INFO_find(st, val) SKM_sk_find(STORE_ATTR_INFO, (st), (val)) -# define sk_STORE_ATTR_INFO_find_ex(st, val) SKM_sk_find_ex(STORE_ATTR_INFO, (st), (val)) -# define sk_STORE_ATTR_INFO_delete(st, i) SKM_sk_delete(STORE_ATTR_INFO, (st), (i)) -# define sk_STORE_ATTR_INFO_delete_ptr(st, ptr) SKM_sk_delete_ptr(STORE_ATTR_INFO, (st), (ptr)) -# define sk_STORE_ATTR_INFO_insert(st, val, i) SKM_sk_insert(STORE_ATTR_INFO, (st), (val), (i)) -# define sk_STORE_ATTR_INFO_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(STORE_ATTR_INFO, (st), (cmp)) -# define sk_STORE_ATTR_INFO_dup(st) SKM_sk_dup(STORE_ATTR_INFO, st) -# define sk_STORE_ATTR_INFO_pop_free(st, free_func) SKM_sk_pop_free(STORE_ATTR_INFO, (st), (free_func)) -# define sk_STORE_ATTR_INFO_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(STORE_ATTR_INFO, (st), (copy_func), (free_func)) -# define sk_STORE_ATTR_INFO_shift(st) SKM_sk_shift(STORE_ATTR_INFO, (st)) -# define sk_STORE_ATTR_INFO_pop(st) SKM_sk_pop(STORE_ATTR_INFO, (st)) -# define sk_STORE_ATTR_INFO_sort(st) SKM_sk_sort(STORE_ATTR_INFO, (st)) -# define sk_STORE_ATTR_INFO_is_sorted(st) SKM_sk_is_sorted(STORE_ATTR_INFO, (st)) -# define sk_STORE_OBJECT_new(cmp) SKM_sk_new(STORE_OBJECT, (cmp)) -# define sk_STORE_OBJECT_new_null() SKM_sk_new_null(STORE_OBJECT) -# define sk_STORE_OBJECT_free(st) SKM_sk_free(STORE_OBJECT, (st)) -# define sk_STORE_OBJECT_num(st) SKM_sk_num(STORE_OBJECT, (st)) -# define sk_STORE_OBJECT_value(st, i) SKM_sk_value(STORE_OBJECT, (st), (i)) -# define sk_STORE_OBJECT_set(st, i, val) SKM_sk_set(STORE_OBJECT, (st), (i), (val)) -# define sk_STORE_OBJECT_zero(st) SKM_sk_zero(STORE_OBJECT, (st)) -# define sk_STORE_OBJECT_push(st, val) SKM_sk_push(STORE_OBJECT, (st), (val)) -# define sk_STORE_OBJECT_unshift(st, val) SKM_sk_unshift(STORE_OBJECT, (st), (val)) -# define sk_STORE_OBJECT_find(st, val) SKM_sk_find(STORE_OBJECT, (st), (val)) -# define sk_STORE_OBJECT_find_ex(st, val) SKM_sk_find_ex(STORE_OBJECT, (st), (val)) -# define sk_STORE_OBJECT_delete(st, i) SKM_sk_delete(STORE_OBJECT, (st), (i)) -# define sk_STORE_OBJECT_delete_ptr(st, ptr) SKM_sk_delete_ptr(STORE_OBJECT, (st), (ptr)) -# define sk_STORE_OBJECT_insert(st, val, i) SKM_sk_insert(STORE_OBJECT, (st), (val), (i)) -# define sk_STORE_OBJECT_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(STORE_OBJECT, (st), (cmp)) -# define sk_STORE_OBJECT_dup(st) SKM_sk_dup(STORE_OBJECT, st) -# define sk_STORE_OBJECT_pop_free(st, free_func) SKM_sk_pop_free(STORE_OBJECT, (st), (free_func)) -# define sk_STORE_OBJECT_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(STORE_OBJECT, (st), (copy_func), (free_func)) -# define sk_STORE_OBJECT_shift(st) SKM_sk_shift(STORE_OBJECT, (st)) -# define sk_STORE_OBJECT_pop(st) SKM_sk_pop(STORE_OBJECT, (st)) -# define sk_STORE_OBJECT_sort(st) SKM_sk_sort(STORE_OBJECT, (st)) -# define sk_STORE_OBJECT_is_sorted(st) SKM_sk_is_sorted(STORE_OBJECT, (st)) -# define sk_SXNETID_new(cmp) SKM_sk_new(SXNETID, (cmp)) -# define sk_SXNETID_new_null() SKM_sk_new_null(SXNETID) -# define sk_SXNETID_free(st) SKM_sk_free(SXNETID, (st)) -# define sk_SXNETID_num(st) SKM_sk_num(SXNETID, (st)) -# define sk_SXNETID_value(st, i) SKM_sk_value(SXNETID, (st), (i)) -# define sk_SXNETID_set(st, i, val) SKM_sk_set(SXNETID, (st), (i), (val)) -# define sk_SXNETID_zero(st) SKM_sk_zero(SXNETID, (st)) -# define sk_SXNETID_push(st, val) SKM_sk_push(SXNETID, (st), (val)) -# define sk_SXNETID_unshift(st, val) SKM_sk_unshift(SXNETID, (st), (val)) -# define sk_SXNETID_find(st, val) SKM_sk_find(SXNETID, (st), (val)) -# define sk_SXNETID_find_ex(st, val) SKM_sk_find_ex(SXNETID, (st), (val)) -# define sk_SXNETID_delete(st, i) SKM_sk_delete(SXNETID, (st), (i)) -# define sk_SXNETID_delete_ptr(st, ptr) SKM_sk_delete_ptr(SXNETID, (st), (ptr)) -# define sk_SXNETID_insert(st, val, i) SKM_sk_insert(SXNETID, (st), (val), (i)) -# define sk_SXNETID_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(SXNETID, (st), (cmp)) -# define sk_SXNETID_dup(st) SKM_sk_dup(SXNETID, st) -# define sk_SXNETID_pop_free(st, free_func) SKM_sk_pop_free(SXNETID, (st), (free_func)) -# define sk_SXNETID_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(SXNETID, (st), (copy_func), (free_func)) -# define sk_SXNETID_shift(st) SKM_sk_shift(SXNETID, (st)) -# define sk_SXNETID_pop(st) SKM_sk_pop(SXNETID, (st)) -# define sk_SXNETID_sort(st) SKM_sk_sort(SXNETID, (st)) -# define sk_SXNETID_is_sorted(st) SKM_sk_is_sorted(SXNETID, (st)) -# define sk_UI_STRING_new(cmp) SKM_sk_new(UI_STRING, (cmp)) -# define sk_UI_STRING_new_null() SKM_sk_new_null(UI_STRING) -# define sk_UI_STRING_free(st) SKM_sk_free(UI_STRING, (st)) -# define sk_UI_STRING_num(st) SKM_sk_num(UI_STRING, (st)) -# define sk_UI_STRING_value(st, i) SKM_sk_value(UI_STRING, (st), (i)) -# define sk_UI_STRING_set(st, i, val) SKM_sk_set(UI_STRING, (st), (i), (val)) -# define sk_UI_STRING_zero(st) SKM_sk_zero(UI_STRING, (st)) -# define sk_UI_STRING_push(st, val) SKM_sk_push(UI_STRING, (st), (val)) -# define sk_UI_STRING_unshift(st, val) SKM_sk_unshift(UI_STRING, (st), (val)) -# define sk_UI_STRING_find(st, val) SKM_sk_find(UI_STRING, (st), (val)) -# define sk_UI_STRING_find_ex(st, val) SKM_sk_find_ex(UI_STRING, (st), (val)) -# define sk_UI_STRING_delete(st, i) SKM_sk_delete(UI_STRING, (st), (i)) -# define sk_UI_STRING_delete_ptr(st, ptr) SKM_sk_delete_ptr(UI_STRING, (st), (ptr)) -# define sk_UI_STRING_insert(st, val, i) SKM_sk_insert(UI_STRING, (st), (val), (i)) -# define sk_UI_STRING_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(UI_STRING, (st), (cmp)) -# define sk_UI_STRING_dup(st) SKM_sk_dup(UI_STRING, st) -# define sk_UI_STRING_pop_free(st, free_func) SKM_sk_pop_free(UI_STRING, (st), (free_func)) -# define sk_UI_STRING_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(UI_STRING, (st), (copy_func), (free_func)) -# define sk_UI_STRING_shift(st) SKM_sk_shift(UI_STRING, (st)) -# define sk_UI_STRING_pop(st) SKM_sk_pop(UI_STRING, (st)) -# define sk_UI_STRING_sort(st) SKM_sk_sort(UI_STRING, (st)) -# define sk_UI_STRING_is_sorted(st) SKM_sk_is_sorted(UI_STRING, (st)) -# define sk_X509_new(cmp) SKM_sk_new(X509, (cmp)) -# define sk_X509_new_null() SKM_sk_new_null(X509) -# define sk_X509_free(st) SKM_sk_free(X509, (st)) -# define sk_X509_num(st) SKM_sk_num(X509, (st)) -# define sk_X509_value(st, i) SKM_sk_value(X509, (st), (i)) -# define sk_X509_set(st, i, val) SKM_sk_set(X509, (st), (i), (val)) -# define sk_X509_zero(st) SKM_sk_zero(X509, (st)) -# define sk_X509_push(st, val) SKM_sk_push(X509, (st), (val)) -# define sk_X509_unshift(st, val) SKM_sk_unshift(X509, (st), (val)) -# define sk_X509_find(st, val) SKM_sk_find(X509, (st), (val)) -# define sk_X509_find_ex(st, val) SKM_sk_find_ex(X509, (st), (val)) -# define sk_X509_delete(st, i) SKM_sk_delete(X509, (st), (i)) -# define sk_X509_delete_ptr(st, ptr) SKM_sk_delete_ptr(X509, (st), (ptr)) -# define sk_X509_insert(st, val, i) SKM_sk_insert(X509, (st), (val), (i)) -# define sk_X509_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(X509, (st), (cmp)) -# define sk_X509_dup(st) SKM_sk_dup(X509, st) -# define sk_X509_pop_free(st, free_func) SKM_sk_pop_free(X509, (st), (free_func)) -# define sk_X509_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(X509, (st), (copy_func), (free_func)) -# define sk_X509_shift(st) SKM_sk_shift(X509, (st)) -# define sk_X509_pop(st) SKM_sk_pop(X509, (st)) -# define sk_X509_sort(st) SKM_sk_sort(X509, (st)) -# define sk_X509_is_sorted(st) SKM_sk_is_sorted(X509, (st)) -# define sk_X509V3_EXT_METHOD_new(cmp) SKM_sk_new(X509V3_EXT_METHOD, (cmp)) -# define sk_X509V3_EXT_METHOD_new_null() SKM_sk_new_null(X509V3_EXT_METHOD) -# define sk_X509V3_EXT_METHOD_free(st) SKM_sk_free(X509V3_EXT_METHOD, (st)) -# define sk_X509V3_EXT_METHOD_num(st) SKM_sk_num(X509V3_EXT_METHOD, (st)) -# define sk_X509V3_EXT_METHOD_value(st, i) SKM_sk_value(X509V3_EXT_METHOD, (st), (i)) -# define sk_X509V3_EXT_METHOD_set(st, i, val) SKM_sk_set(X509V3_EXT_METHOD, (st), (i), (val)) -# define sk_X509V3_EXT_METHOD_zero(st) SKM_sk_zero(X509V3_EXT_METHOD, (st)) -# define sk_X509V3_EXT_METHOD_push(st, val) SKM_sk_push(X509V3_EXT_METHOD, (st), (val)) -# define sk_X509V3_EXT_METHOD_unshift(st, val) SKM_sk_unshift(X509V3_EXT_METHOD, (st), (val)) -# define sk_X509V3_EXT_METHOD_find(st, val) SKM_sk_find(X509V3_EXT_METHOD, (st), (val)) -# define sk_X509V3_EXT_METHOD_find_ex(st, val) SKM_sk_find_ex(X509V3_EXT_METHOD, (st), (val)) -# define sk_X509V3_EXT_METHOD_delete(st, i) SKM_sk_delete(X509V3_EXT_METHOD, (st), (i)) -# define sk_X509V3_EXT_METHOD_delete_ptr(st, ptr) SKM_sk_delete_ptr(X509V3_EXT_METHOD, (st), (ptr)) -# define sk_X509V3_EXT_METHOD_insert(st, val, i) SKM_sk_insert(X509V3_EXT_METHOD, (st), (val), (i)) -# define sk_X509V3_EXT_METHOD_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(X509V3_EXT_METHOD, (st), (cmp)) -# define sk_X509V3_EXT_METHOD_dup(st) SKM_sk_dup(X509V3_EXT_METHOD, st) -# define sk_X509V3_EXT_METHOD_pop_free(st, free_func) SKM_sk_pop_free(X509V3_EXT_METHOD, (st), (free_func)) -# define sk_X509V3_EXT_METHOD_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(X509V3_EXT_METHOD, (st), (copy_func), (free_func)) -# define sk_X509V3_EXT_METHOD_shift(st) SKM_sk_shift(X509V3_EXT_METHOD, (st)) -# define sk_X509V3_EXT_METHOD_pop(st) SKM_sk_pop(X509V3_EXT_METHOD, (st)) -# define sk_X509V3_EXT_METHOD_sort(st) SKM_sk_sort(X509V3_EXT_METHOD, (st)) -# define sk_X509V3_EXT_METHOD_is_sorted(st) SKM_sk_is_sorted(X509V3_EXT_METHOD, (st)) -# define sk_X509_ALGOR_new(cmp) SKM_sk_new(X509_ALGOR, (cmp)) -# define sk_X509_ALGOR_new_null() SKM_sk_new_null(X509_ALGOR) -# define sk_X509_ALGOR_free(st) SKM_sk_free(X509_ALGOR, (st)) -# define sk_X509_ALGOR_num(st) SKM_sk_num(X509_ALGOR, (st)) -# define sk_X509_ALGOR_value(st, i) SKM_sk_value(X509_ALGOR, (st), (i)) -# define sk_X509_ALGOR_set(st, i, val) SKM_sk_set(X509_ALGOR, (st), (i), (val)) -# define sk_X509_ALGOR_zero(st) SKM_sk_zero(X509_ALGOR, (st)) -# define sk_X509_ALGOR_push(st, val) SKM_sk_push(X509_ALGOR, (st), (val)) -# define sk_X509_ALGOR_unshift(st, val) SKM_sk_unshift(X509_ALGOR, (st), (val)) -# define sk_X509_ALGOR_find(st, val) SKM_sk_find(X509_ALGOR, (st), (val)) -# define sk_X509_ALGOR_find_ex(st, val) SKM_sk_find_ex(X509_ALGOR, (st), (val)) -# define sk_X509_ALGOR_delete(st, i) SKM_sk_delete(X509_ALGOR, (st), (i)) -# define sk_X509_ALGOR_delete_ptr(st, ptr) SKM_sk_delete_ptr(X509_ALGOR, (st), (ptr)) -# define sk_X509_ALGOR_insert(st, val, i) SKM_sk_insert(X509_ALGOR, (st), (val), (i)) -# define sk_X509_ALGOR_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(X509_ALGOR, (st), (cmp)) -# define sk_X509_ALGOR_dup(st) SKM_sk_dup(X509_ALGOR, st) -# define sk_X509_ALGOR_pop_free(st, free_func) SKM_sk_pop_free(X509_ALGOR, (st), (free_func)) -# define sk_X509_ALGOR_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(X509_ALGOR, (st), (copy_func), (free_func)) -# define sk_X509_ALGOR_shift(st) SKM_sk_shift(X509_ALGOR, (st)) -# define sk_X509_ALGOR_pop(st) SKM_sk_pop(X509_ALGOR, (st)) -# define sk_X509_ALGOR_sort(st) SKM_sk_sort(X509_ALGOR, (st)) -# define sk_X509_ALGOR_is_sorted(st) SKM_sk_is_sorted(X509_ALGOR, (st)) -# define sk_X509_ATTRIBUTE_new(cmp) SKM_sk_new(X509_ATTRIBUTE, (cmp)) -# define sk_X509_ATTRIBUTE_new_null() SKM_sk_new_null(X509_ATTRIBUTE) -# define sk_X509_ATTRIBUTE_free(st) SKM_sk_free(X509_ATTRIBUTE, (st)) -# define sk_X509_ATTRIBUTE_num(st) SKM_sk_num(X509_ATTRIBUTE, (st)) -# define sk_X509_ATTRIBUTE_value(st, i) SKM_sk_value(X509_ATTRIBUTE, (st), (i)) -# define sk_X509_ATTRIBUTE_set(st, i, val) SKM_sk_set(X509_ATTRIBUTE, (st), (i), (val)) -# define sk_X509_ATTRIBUTE_zero(st) SKM_sk_zero(X509_ATTRIBUTE, (st)) -# define sk_X509_ATTRIBUTE_push(st, val) SKM_sk_push(X509_ATTRIBUTE, (st), (val)) -# define sk_X509_ATTRIBUTE_unshift(st, val) SKM_sk_unshift(X509_ATTRIBUTE, (st), (val)) -# define sk_X509_ATTRIBUTE_find(st, val) SKM_sk_find(X509_ATTRIBUTE, (st), (val)) -# define sk_X509_ATTRIBUTE_find_ex(st, val) SKM_sk_find_ex(X509_ATTRIBUTE, (st), (val)) -# define sk_X509_ATTRIBUTE_delete(st, i) SKM_sk_delete(X509_ATTRIBUTE, (st), (i)) -# define sk_X509_ATTRIBUTE_delete_ptr(st, ptr) SKM_sk_delete_ptr(X509_ATTRIBUTE, (st), (ptr)) -# define sk_X509_ATTRIBUTE_insert(st, val, i) SKM_sk_insert(X509_ATTRIBUTE, (st), (val), (i)) -# define sk_X509_ATTRIBUTE_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(X509_ATTRIBUTE, (st), (cmp)) -# define sk_X509_ATTRIBUTE_dup(st) SKM_sk_dup(X509_ATTRIBUTE, st) -# define sk_X509_ATTRIBUTE_pop_free(st, free_func) SKM_sk_pop_free(X509_ATTRIBUTE, (st), (free_func)) -# define sk_X509_ATTRIBUTE_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(X509_ATTRIBUTE, (st), (copy_func), (free_func)) -# define sk_X509_ATTRIBUTE_shift(st) SKM_sk_shift(X509_ATTRIBUTE, (st)) -# define sk_X509_ATTRIBUTE_pop(st) SKM_sk_pop(X509_ATTRIBUTE, (st)) -# define sk_X509_ATTRIBUTE_sort(st) SKM_sk_sort(X509_ATTRIBUTE, (st)) -# define sk_X509_ATTRIBUTE_is_sorted(st) SKM_sk_is_sorted(X509_ATTRIBUTE, (st)) -# define sk_X509_CRL_new(cmp) SKM_sk_new(X509_CRL, (cmp)) -# define sk_X509_CRL_new_null() SKM_sk_new_null(X509_CRL) -# define sk_X509_CRL_free(st) SKM_sk_free(X509_CRL, (st)) -# define sk_X509_CRL_num(st) SKM_sk_num(X509_CRL, (st)) -# define sk_X509_CRL_value(st, i) SKM_sk_value(X509_CRL, (st), (i)) -# define sk_X509_CRL_set(st, i, val) SKM_sk_set(X509_CRL, (st), (i), (val)) -# define sk_X509_CRL_zero(st) SKM_sk_zero(X509_CRL, (st)) -# define sk_X509_CRL_push(st, val) SKM_sk_push(X509_CRL, (st), (val)) -# define sk_X509_CRL_unshift(st, val) SKM_sk_unshift(X509_CRL, (st), (val)) -# define sk_X509_CRL_find(st, val) SKM_sk_find(X509_CRL, (st), (val)) -# define sk_X509_CRL_find_ex(st, val) SKM_sk_find_ex(X509_CRL, (st), (val)) -# define sk_X509_CRL_delete(st, i) SKM_sk_delete(X509_CRL, (st), (i)) -# define sk_X509_CRL_delete_ptr(st, ptr) SKM_sk_delete_ptr(X509_CRL, (st), (ptr)) -# define sk_X509_CRL_insert(st, val, i) SKM_sk_insert(X509_CRL, (st), (val), (i)) -# define sk_X509_CRL_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(X509_CRL, (st), (cmp)) -# define sk_X509_CRL_dup(st) SKM_sk_dup(X509_CRL, st) -# define sk_X509_CRL_pop_free(st, free_func) SKM_sk_pop_free(X509_CRL, (st), (free_func)) -# define sk_X509_CRL_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(X509_CRL, (st), (copy_func), (free_func)) -# define sk_X509_CRL_shift(st) SKM_sk_shift(X509_CRL, (st)) -# define sk_X509_CRL_pop(st) SKM_sk_pop(X509_CRL, (st)) -# define sk_X509_CRL_sort(st) SKM_sk_sort(X509_CRL, (st)) -# define sk_X509_CRL_is_sorted(st) SKM_sk_is_sorted(X509_CRL, (st)) -# define sk_X509_EXTENSION_new(cmp) SKM_sk_new(X509_EXTENSION, (cmp)) -# define sk_X509_EXTENSION_new_null() SKM_sk_new_null(X509_EXTENSION) -# define sk_X509_EXTENSION_free(st) SKM_sk_free(X509_EXTENSION, (st)) -# define sk_X509_EXTENSION_num(st) SKM_sk_num(X509_EXTENSION, (st)) -# define sk_X509_EXTENSION_value(st, i) SKM_sk_value(X509_EXTENSION, (st), (i)) -# define sk_X509_EXTENSION_set(st, i, val) SKM_sk_set(X509_EXTENSION, (st), (i), (val)) -# define sk_X509_EXTENSION_zero(st) SKM_sk_zero(X509_EXTENSION, (st)) -# define sk_X509_EXTENSION_push(st, val) SKM_sk_push(X509_EXTENSION, (st), (val)) -# define sk_X509_EXTENSION_unshift(st, val) SKM_sk_unshift(X509_EXTENSION, (st), (val)) -# define sk_X509_EXTENSION_find(st, val) SKM_sk_find(X509_EXTENSION, (st), (val)) -# define sk_X509_EXTENSION_find_ex(st, val) SKM_sk_find_ex(X509_EXTENSION, (st), (val)) -# define sk_X509_EXTENSION_delete(st, i) SKM_sk_delete(X509_EXTENSION, (st), (i)) -# define sk_X509_EXTENSION_delete_ptr(st, ptr) SKM_sk_delete_ptr(X509_EXTENSION, (st), (ptr)) -# define sk_X509_EXTENSION_insert(st, val, i) SKM_sk_insert(X509_EXTENSION, (st), (val), (i)) -# define sk_X509_EXTENSION_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(X509_EXTENSION, (st), (cmp)) -# define sk_X509_EXTENSION_dup(st) SKM_sk_dup(X509_EXTENSION, st) -# define sk_X509_EXTENSION_pop_free(st, free_func) SKM_sk_pop_free(X509_EXTENSION, (st), (free_func)) -# define sk_X509_EXTENSION_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(X509_EXTENSION, (st), (copy_func), (free_func)) -# define sk_X509_EXTENSION_shift(st) SKM_sk_shift(X509_EXTENSION, (st)) -# define sk_X509_EXTENSION_pop(st) SKM_sk_pop(X509_EXTENSION, (st)) -# define sk_X509_EXTENSION_sort(st) SKM_sk_sort(X509_EXTENSION, (st)) -# define sk_X509_EXTENSION_is_sorted(st) SKM_sk_is_sorted(X509_EXTENSION, (st)) -# define sk_X509_INFO_new(cmp) SKM_sk_new(X509_INFO, (cmp)) -# define sk_X509_INFO_new_null() SKM_sk_new_null(X509_INFO) -# define sk_X509_INFO_free(st) SKM_sk_free(X509_INFO, (st)) -# define sk_X509_INFO_num(st) SKM_sk_num(X509_INFO, (st)) -# define sk_X509_INFO_value(st, i) SKM_sk_value(X509_INFO, (st), (i)) -# define sk_X509_INFO_set(st, i, val) SKM_sk_set(X509_INFO, (st), (i), (val)) -# define sk_X509_INFO_zero(st) SKM_sk_zero(X509_INFO, (st)) -# define sk_X509_INFO_push(st, val) SKM_sk_push(X509_INFO, (st), (val)) -# define sk_X509_INFO_unshift(st, val) SKM_sk_unshift(X509_INFO, (st), (val)) -# define sk_X509_INFO_find(st, val) SKM_sk_find(X509_INFO, (st), (val)) -# define sk_X509_INFO_find_ex(st, val) SKM_sk_find_ex(X509_INFO, (st), (val)) -# define sk_X509_INFO_delete(st, i) SKM_sk_delete(X509_INFO, (st), (i)) -# define sk_X509_INFO_delete_ptr(st, ptr) SKM_sk_delete_ptr(X509_INFO, (st), (ptr)) -# define sk_X509_INFO_insert(st, val, i) SKM_sk_insert(X509_INFO, (st), (val), (i)) -# define sk_X509_INFO_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(X509_INFO, (st), (cmp)) -# define sk_X509_INFO_dup(st) SKM_sk_dup(X509_INFO, st) -# define sk_X509_INFO_pop_free(st, free_func) SKM_sk_pop_free(X509_INFO, (st), (free_func)) -# define sk_X509_INFO_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(X509_INFO, (st), (copy_func), (free_func)) -# define sk_X509_INFO_shift(st) SKM_sk_shift(X509_INFO, (st)) -# define sk_X509_INFO_pop(st) SKM_sk_pop(X509_INFO, (st)) -# define sk_X509_INFO_sort(st) SKM_sk_sort(X509_INFO, (st)) -# define sk_X509_INFO_is_sorted(st) SKM_sk_is_sorted(X509_INFO, (st)) -# define sk_X509_LOOKUP_new(cmp) SKM_sk_new(X509_LOOKUP, (cmp)) -# define sk_X509_LOOKUP_new_null() SKM_sk_new_null(X509_LOOKUP) -# define sk_X509_LOOKUP_free(st) SKM_sk_free(X509_LOOKUP, (st)) -# define sk_X509_LOOKUP_num(st) SKM_sk_num(X509_LOOKUP, (st)) -# define sk_X509_LOOKUP_value(st, i) SKM_sk_value(X509_LOOKUP, (st), (i)) -# define sk_X509_LOOKUP_set(st, i, val) SKM_sk_set(X509_LOOKUP, (st), (i), (val)) -# define sk_X509_LOOKUP_zero(st) SKM_sk_zero(X509_LOOKUP, (st)) -# define sk_X509_LOOKUP_push(st, val) SKM_sk_push(X509_LOOKUP, (st), (val)) -# define sk_X509_LOOKUP_unshift(st, val) SKM_sk_unshift(X509_LOOKUP, (st), (val)) -# define sk_X509_LOOKUP_find(st, val) SKM_sk_find(X509_LOOKUP, (st), (val)) -# define sk_X509_LOOKUP_find_ex(st, val) SKM_sk_find_ex(X509_LOOKUP, (st), (val)) -# define sk_X509_LOOKUP_delete(st, i) SKM_sk_delete(X509_LOOKUP, (st), (i)) -# define sk_X509_LOOKUP_delete_ptr(st, ptr) SKM_sk_delete_ptr(X509_LOOKUP, (st), (ptr)) -# define sk_X509_LOOKUP_insert(st, val, i) SKM_sk_insert(X509_LOOKUP, (st), (val), (i)) -# define sk_X509_LOOKUP_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(X509_LOOKUP, (st), (cmp)) -# define sk_X509_LOOKUP_dup(st) SKM_sk_dup(X509_LOOKUP, st) -# define sk_X509_LOOKUP_pop_free(st, free_func) SKM_sk_pop_free(X509_LOOKUP, (st), (free_func)) -# define sk_X509_LOOKUP_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(X509_LOOKUP, (st), (copy_func), (free_func)) -# define sk_X509_LOOKUP_shift(st) SKM_sk_shift(X509_LOOKUP, (st)) -# define sk_X509_LOOKUP_pop(st) SKM_sk_pop(X509_LOOKUP, (st)) -# define sk_X509_LOOKUP_sort(st) SKM_sk_sort(X509_LOOKUP, (st)) -# define sk_X509_LOOKUP_is_sorted(st) SKM_sk_is_sorted(X509_LOOKUP, (st)) -# define sk_X509_NAME_new(cmp) SKM_sk_new(X509_NAME, (cmp)) -# define sk_X509_NAME_new_null() SKM_sk_new_null(X509_NAME) -# define sk_X509_NAME_free(st) SKM_sk_free(X509_NAME, (st)) -# define sk_X509_NAME_num(st) SKM_sk_num(X509_NAME, (st)) -# define sk_X509_NAME_value(st, i) SKM_sk_value(X509_NAME, (st), (i)) -# define sk_X509_NAME_set(st, i, val) SKM_sk_set(X509_NAME, (st), (i), (val)) -# define sk_X509_NAME_zero(st) SKM_sk_zero(X509_NAME, (st)) -# define sk_X509_NAME_push(st, val) SKM_sk_push(X509_NAME, (st), (val)) -# define sk_X509_NAME_unshift(st, val) SKM_sk_unshift(X509_NAME, (st), (val)) -# define sk_X509_NAME_find(st, val) SKM_sk_find(X509_NAME, (st), (val)) -# define sk_X509_NAME_find_ex(st, val) SKM_sk_find_ex(X509_NAME, (st), (val)) -# define sk_X509_NAME_delete(st, i) SKM_sk_delete(X509_NAME, (st), (i)) -# define sk_X509_NAME_delete_ptr(st, ptr) SKM_sk_delete_ptr(X509_NAME, (st), (ptr)) -# define sk_X509_NAME_insert(st, val, i) SKM_sk_insert(X509_NAME, (st), (val), (i)) -# define sk_X509_NAME_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(X509_NAME, (st), (cmp)) -# define sk_X509_NAME_dup(st) SKM_sk_dup(X509_NAME, st) -# define sk_X509_NAME_pop_free(st, free_func) SKM_sk_pop_free(X509_NAME, (st), (free_func)) -# define sk_X509_NAME_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(X509_NAME, (st), (copy_func), (free_func)) -# define sk_X509_NAME_shift(st) SKM_sk_shift(X509_NAME, (st)) -# define sk_X509_NAME_pop(st) SKM_sk_pop(X509_NAME, (st)) -# define sk_X509_NAME_sort(st) SKM_sk_sort(X509_NAME, (st)) -# define sk_X509_NAME_is_sorted(st) SKM_sk_is_sorted(X509_NAME, (st)) -# define sk_X509_NAME_ENTRY_new(cmp) SKM_sk_new(X509_NAME_ENTRY, (cmp)) -# define sk_X509_NAME_ENTRY_new_null() SKM_sk_new_null(X509_NAME_ENTRY) -# define sk_X509_NAME_ENTRY_free(st) SKM_sk_free(X509_NAME_ENTRY, (st)) -# define sk_X509_NAME_ENTRY_num(st) SKM_sk_num(X509_NAME_ENTRY, (st)) -# define sk_X509_NAME_ENTRY_value(st, i) SKM_sk_value(X509_NAME_ENTRY, (st), (i)) -# define sk_X509_NAME_ENTRY_set(st, i, val) SKM_sk_set(X509_NAME_ENTRY, (st), (i), (val)) -# define sk_X509_NAME_ENTRY_zero(st) SKM_sk_zero(X509_NAME_ENTRY, (st)) -# define sk_X509_NAME_ENTRY_push(st, val) SKM_sk_push(X509_NAME_ENTRY, (st), (val)) -# define sk_X509_NAME_ENTRY_unshift(st, val) SKM_sk_unshift(X509_NAME_ENTRY, (st), (val)) -# define sk_X509_NAME_ENTRY_find(st, val) SKM_sk_find(X509_NAME_ENTRY, (st), (val)) -# define sk_X509_NAME_ENTRY_find_ex(st, val) SKM_sk_find_ex(X509_NAME_ENTRY, (st), (val)) -# define sk_X509_NAME_ENTRY_delete(st, i) SKM_sk_delete(X509_NAME_ENTRY, (st), (i)) -# define sk_X509_NAME_ENTRY_delete_ptr(st, ptr) SKM_sk_delete_ptr(X509_NAME_ENTRY, (st), (ptr)) -# define sk_X509_NAME_ENTRY_insert(st, val, i) SKM_sk_insert(X509_NAME_ENTRY, (st), (val), (i)) -# define sk_X509_NAME_ENTRY_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(X509_NAME_ENTRY, (st), (cmp)) -# define sk_X509_NAME_ENTRY_dup(st) SKM_sk_dup(X509_NAME_ENTRY, st) -# define sk_X509_NAME_ENTRY_pop_free(st, free_func) SKM_sk_pop_free(X509_NAME_ENTRY, (st), (free_func)) -# define sk_X509_NAME_ENTRY_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(X509_NAME_ENTRY, (st), (copy_func), (free_func)) -# define sk_X509_NAME_ENTRY_shift(st) SKM_sk_shift(X509_NAME_ENTRY, (st)) -# define sk_X509_NAME_ENTRY_pop(st) SKM_sk_pop(X509_NAME_ENTRY, (st)) -# define sk_X509_NAME_ENTRY_sort(st) SKM_sk_sort(X509_NAME_ENTRY, (st)) -# define sk_X509_NAME_ENTRY_is_sorted(st) SKM_sk_is_sorted(X509_NAME_ENTRY, (st)) -# define sk_X509_OBJECT_new(cmp) SKM_sk_new(X509_OBJECT, (cmp)) -# define sk_X509_OBJECT_new_null() SKM_sk_new_null(X509_OBJECT) -# define sk_X509_OBJECT_free(st) SKM_sk_free(X509_OBJECT, (st)) -# define sk_X509_OBJECT_num(st) SKM_sk_num(X509_OBJECT, (st)) -# define sk_X509_OBJECT_value(st, i) SKM_sk_value(X509_OBJECT, (st), (i)) -# define sk_X509_OBJECT_set(st, i, val) SKM_sk_set(X509_OBJECT, (st), (i), (val)) -# define sk_X509_OBJECT_zero(st) SKM_sk_zero(X509_OBJECT, (st)) -# define sk_X509_OBJECT_push(st, val) SKM_sk_push(X509_OBJECT, (st), (val)) -# define sk_X509_OBJECT_unshift(st, val) SKM_sk_unshift(X509_OBJECT, (st), (val)) -# define sk_X509_OBJECT_find(st, val) SKM_sk_find(X509_OBJECT, (st), (val)) -# define sk_X509_OBJECT_find_ex(st, val) SKM_sk_find_ex(X509_OBJECT, (st), (val)) -# define sk_X509_OBJECT_delete(st, i) SKM_sk_delete(X509_OBJECT, (st), (i)) -# define sk_X509_OBJECT_delete_ptr(st, ptr) SKM_sk_delete_ptr(X509_OBJECT, (st), (ptr)) -# define sk_X509_OBJECT_insert(st, val, i) SKM_sk_insert(X509_OBJECT, (st), (val), (i)) -# define sk_X509_OBJECT_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(X509_OBJECT, (st), (cmp)) -# define sk_X509_OBJECT_dup(st) SKM_sk_dup(X509_OBJECT, st) -# define sk_X509_OBJECT_pop_free(st, free_func) SKM_sk_pop_free(X509_OBJECT, (st), (free_func)) -# define sk_X509_OBJECT_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(X509_OBJECT, (st), (copy_func), (free_func)) -# define sk_X509_OBJECT_shift(st) SKM_sk_shift(X509_OBJECT, (st)) -# define sk_X509_OBJECT_pop(st) SKM_sk_pop(X509_OBJECT, (st)) -# define sk_X509_OBJECT_sort(st) SKM_sk_sort(X509_OBJECT, (st)) -# define sk_X509_OBJECT_is_sorted(st) SKM_sk_is_sorted(X509_OBJECT, (st)) -# define sk_X509_POLICY_DATA_new(cmp) SKM_sk_new(X509_POLICY_DATA, (cmp)) -# define sk_X509_POLICY_DATA_new_null() SKM_sk_new_null(X509_POLICY_DATA) -# define sk_X509_POLICY_DATA_free(st) SKM_sk_free(X509_POLICY_DATA, (st)) -# define sk_X509_POLICY_DATA_num(st) SKM_sk_num(X509_POLICY_DATA, (st)) -# define sk_X509_POLICY_DATA_value(st, i) SKM_sk_value(X509_POLICY_DATA, (st), (i)) -# define sk_X509_POLICY_DATA_set(st, i, val) SKM_sk_set(X509_POLICY_DATA, (st), (i), (val)) -# define sk_X509_POLICY_DATA_zero(st) SKM_sk_zero(X509_POLICY_DATA, (st)) -# define sk_X509_POLICY_DATA_push(st, val) SKM_sk_push(X509_POLICY_DATA, (st), (val)) -# define sk_X509_POLICY_DATA_unshift(st, val) SKM_sk_unshift(X509_POLICY_DATA, (st), (val)) -# define sk_X509_POLICY_DATA_find(st, val) SKM_sk_find(X509_POLICY_DATA, (st), (val)) -# define sk_X509_POLICY_DATA_find_ex(st, val) SKM_sk_find_ex(X509_POLICY_DATA, (st), (val)) -# define sk_X509_POLICY_DATA_delete(st, i) SKM_sk_delete(X509_POLICY_DATA, (st), (i)) -# define sk_X509_POLICY_DATA_delete_ptr(st, ptr) SKM_sk_delete_ptr(X509_POLICY_DATA, (st), (ptr)) -# define sk_X509_POLICY_DATA_insert(st, val, i) SKM_sk_insert(X509_POLICY_DATA, (st), (val), (i)) -# define sk_X509_POLICY_DATA_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(X509_POLICY_DATA, (st), (cmp)) -# define sk_X509_POLICY_DATA_dup(st) SKM_sk_dup(X509_POLICY_DATA, st) -# define sk_X509_POLICY_DATA_pop_free(st, free_func) SKM_sk_pop_free(X509_POLICY_DATA, (st), (free_func)) -# define sk_X509_POLICY_DATA_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(X509_POLICY_DATA, (st), (copy_func), (free_func)) -# define sk_X509_POLICY_DATA_shift(st) SKM_sk_shift(X509_POLICY_DATA, (st)) -# define sk_X509_POLICY_DATA_pop(st) SKM_sk_pop(X509_POLICY_DATA, (st)) -# define sk_X509_POLICY_DATA_sort(st) SKM_sk_sort(X509_POLICY_DATA, (st)) -# define sk_X509_POLICY_DATA_is_sorted(st) SKM_sk_is_sorted(X509_POLICY_DATA, (st)) -# define sk_X509_POLICY_NODE_new(cmp) SKM_sk_new(X509_POLICY_NODE, (cmp)) -# define sk_X509_POLICY_NODE_new_null() SKM_sk_new_null(X509_POLICY_NODE) -# define sk_X509_POLICY_NODE_free(st) SKM_sk_free(X509_POLICY_NODE, (st)) -# define sk_X509_POLICY_NODE_num(st) SKM_sk_num(X509_POLICY_NODE, (st)) -# define sk_X509_POLICY_NODE_value(st, i) SKM_sk_value(X509_POLICY_NODE, (st), (i)) -# define sk_X509_POLICY_NODE_set(st, i, val) SKM_sk_set(X509_POLICY_NODE, (st), (i), (val)) -# define sk_X509_POLICY_NODE_zero(st) SKM_sk_zero(X509_POLICY_NODE, (st)) -# define sk_X509_POLICY_NODE_push(st, val) SKM_sk_push(X509_POLICY_NODE, (st), (val)) -# define sk_X509_POLICY_NODE_unshift(st, val) SKM_sk_unshift(X509_POLICY_NODE, (st), (val)) -# define sk_X509_POLICY_NODE_find(st, val) SKM_sk_find(X509_POLICY_NODE, (st), (val)) -# define sk_X509_POLICY_NODE_find_ex(st, val) SKM_sk_find_ex(X509_POLICY_NODE, (st), (val)) -# define sk_X509_POLICY_NODE_delete(st, i) SKM_sk_delete(X509_POLICY_NODE, (st), (i)) -# define sk_X509_POLICY_NODE_delete_ptr(st, ptr) SKM_sk_delete_ptr(X509_POLICY_NODE, (st), (ptr)) -# define sk_X509_POLICY_NODE_insert(st, val, i) SKM_sk_insert(X509_POLICY_NODE, (st), (val), (i)) -# define sk_X509_POLICY_NODE_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(X509_POLICY_NODE, (st), (cmp)) -# define sk_X509_POLICY_NODE_dup(st) SKM_sk_dup(X509_POLICY_NODE, st) -# define sk_X509_POLICY_NODE_pop_free(st, free_func) SKM_sk_pop_free(X509_POLICY_NODE, (st), (free_func)) -# define sk_X509_POLICY_NODE_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(X509_POLICY_NODE, (st), (copy_func), (free_func)) -# define sk_X509_POLICY_NODE_shift(st) SKM_sk_shift(X509_POLICY_NODE, (st)) -# define sk_X509_POLICY_NODE_pop(st) SKM_sk_pop(X509_POLICY_NODE, (st)) -# define sk_X509_POLICY_NODE_sort(st) SKM_sk_sort(X509_POLICY_NODE, (st)) -# define sk_X509_POLICY_NODE_is_sorted(st) SKM_sk_is_sorted(X509_POLICY_NODE, (st)) -# define sk_X509_PURPOSE_new(cmp) SKM_sk_new(X509_PURPOSE, (cmp)) -# define sk_X509_PURPOSE_new_null() SKM_sk_new_null(X509_PURPOSE) -# define sk_X509_PURPOSE_free(st) SKM_sk_free(X509_PURPOSE, (st)) -# define sk_X509_PURPOSE_num(st) SKM_sk_num(X509_PURPOSE, (st)) -# define sk_X509_PURPOSE_value(st, i) SKM_sk_value(X509_PURPOSE, (st), (i)) -# define sk_X509_PURPOSE_set(st, i, val) SKM_sk_set(X509_PURPOSE, (st), (i), (val)) -# define sk_X509_PURPOSE_zero(st) SKM_sk_zero(X509_PURPOSE, (st)) -# define sk_X509_PURPOSE_push(st, val) SKM_sk_push(X509_PURPOSE, (st), (val)) -# define sk_X509_PURPOSE_unshift(st, val) SKM_sk_unshift(X509_PURPOSE, (st), (val)) -# define sk_X509_PURPOSE_find(st, val) SKM_sk_find(X509_PURPOSE, (st), (val)) -# define sk_X509_PURPOSE_find_ex(st, val) SKM_sk_find_ex(X509_PURPOSE, (st), (val)) -# define sk_X509_PURPOSE_delete(st, i) SKM_sk_delete(X509_PURPOSE, (st), (i)) -# define sk_X509_PURPOSE_delete_ptr(st, ptr) SKM_sk_delete_ptr(X509_PURPOSE, (st), (ptr)) -# define sk_X509_PURPOSE_insert(st, val, i) SKM_sk_insert(X509_PURPOSE, (st), (val), (i)) -# define sk_X509_PURPOSE_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(X509_PURPOSE, (st), (cmp)) -# define sk_X509_PURPOSE_dup(st) SKM_sk_dup(X509_PURPOSE, st) -# define sk_X509_PURPOSE_pop_free(st, free_func) SKM_sk_pop_free(X509_PURPOSE, (st), (free_func)) -# define sk_X509_PURPOSE_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(X509_PURPOSE, (st), (copy_func), (free_func)) -# define sk_X509_PURPOSE_shift(st) SKM_sk_shift(X509_PURPOSE, (st)) -# define sk_X509_PURPOSE_pop(st) SKM_sk_pop(X509_PURPOSE, (st)) -# define sk_X509_PURPOSE_sort(st) SKM_sk_sort(X509_PURPOSE, (st)) -# define sk_X509_PURPOSE_is_sorted(st) SKM_sk_is_sorted(X509_PURPOSE, (st)) -# define sk_X509_REVOKED_new(cmp) SKM_sk_new(X509_REVOKED, (cmp)) -# define sk_X509_REVOKED_new_null() SKM_sk_new_null(X509_REVOKED) -# define sk_X509_REVOKED_free(st) SKM_sk_free(X509_REVOKED, (st)) -# define sk_X509_REVOKED_num(st) SKM_sk_num(X509_REVOKED, (st)) -# define sk_X509_REVOKED_value(st, i) SKM_sk_value(X509_REVOKED, (st), (i)) -# define sk_X509_REVOKED_set(st, i, val) SKM_sk_set(X509_REVOKED, (st), (i), (val)) -# define sk_X509_REVOKED_zero(st) SKM_sk_zero(X509_REVOKED, (st)) -# define sk_X509_REVOKED_push(st, val) SKM_sk_push(X509_REVOKED, (st), (val)) -# define sk_X509_REVOKED_unshift(st, val) SKM_sk_unshift(X509_REVOKED, (st), (val)) -# define sk_X509_REVOKED_find(st, val) SKM_sk_find(X509_REVOKED, (st), (val)) -# define sk_X509_REVOKED_find_ex(st, val) SKM_sk_find_ex(X509_REVOKED, (st), (val)) -# define sk_X509_REVOKED_delete(st, i) SKM_sk_delete(X509_REVOKED, (st), (i)) -# define sk_X509_REVOKED_delete_ptr(st, ptr) SKM_sk_delete_ptr(X509_REVOKED, (st), (ptr)) -# define sk_X509_REVOKED_insert(st, val, i) SKM_sk_insert(X509_REVOKED, (st), (val), (i)) -# define sk_X509_REVOKED_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(X509_REVOKED, (st), (cmp)) -# define sk_X509_REVOKED_dup(st) SKM_sk_dup(X509_REVOKED, st) -# define sk_X509_REVOKED_pop_free(st, free_func) SKM_sk_pop_free(X509_REVOKED, (st), (free_func)) -# define sk_X509_REVOKED_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(X509_REVOKED, (st), (copy_func), (free_func)) -# define sk_X509_REVOKED_shift(st) SKM_sk_shift(X509_REVOKED, (st)) -# define sk_X509_REVOKED_pop(st) SKM_sk_pop(X509_REVOKED, (st)) -# define sk_X509_REVOKED_sort(st) SKM_sk_sort(X509_REVOKED, (st)) -# define sk_X509_REVOKED_is_sorted(st) SKM_sk_is_sorted(X509_REVOKED, (st)) -# define sk_X509_TRUST_new(cmp) SKM_sk_new(X509_TRUST, (cmp)) -# define sk_X509_TRUST_new_null() SKM_sk_new_null(X509_TRUST) -# define sk_X509_TRUST_free(st) SKM_sk_free(X509_TRUST, (st)) -# define sk_X509_TRUST_num(st) SKM_sk_num(X509_TRUST, (st)) -# define sk_X509_TRUST_value(st, i) SKM_sk_value(X509_TRUST, (st), (i)) -# define sk_X509_TRUST_set(st, i, val) SKM_sk_set(X509_TRUST, (st), (i), (val)) -# define sk_X509_TRUST_zero(st) SKM_sk_zero(X509_TRUST, (st)) -# define sk_X509_TRUST_push(st, val) SKM_sk_push(X509_TRUST, (st), (val)) -# define sk_X509_TRUST_unshift(st, val) SKM_sk_unshift(X509_TRUST, (st), (val)) -# define sk_X509_TRUST_find(st, val) SKM_sk_find(X509_TRUST, (st), (val)) -# define sk_X509_TRUST_find_ex(st, val) SKM_sk_find_ex(X509_TRUST, (st), (val)) -# define sk_X509_TRUST_delete(st, i) SKM_sk_delete(X509_TRUST, (st), (i)) -# define sk_X509_TRUST_delete_ptr(st, ptr) SKM_sk_delete_ptr(X509_TRUST, (st), (ptr)) -# define sk_X509_TRUST_insert(st, val, i) SKM_sk_insert(X509_TRUST, (st), (val), (i)) -# define sk_X509_TRUST_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(X509_TRUST, (st), (cmp)) -# define sk_X509_TRUST_dup(st) SKM_sk_dup(X509_TRUST, st) -# define sk_X509_TRUST_pop_free(st, free_func) SKM_sk_pop_free(X509_TRUST, (st), (free_func)) -# define sk_X509_TRUST_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(X509_TRUST, (st), (copy_func), (free_func)) -# define sk_X509_TRUST_shift(st) SKM_sk_shift(X509_TRUST, (st)) -# define sk_X509_TRUST_pop(st) SKM_sk_pop(X509_TRUST, (st)) -# define sk_X509_TRUST_sort(st) SKM_sk_sort(X509_TRUST, (st)) -# define sk_X509_TRUST_is_sorted(st) SKM_sk_is_sorted(X509_TRUST, (st)) -# define sk_X509_VERIFY_PARAM_new(cmp) SKM_sk_new(X509_VERIFY_PARAM, (cmp)) -# define sk_X509_VERIFY_PARAM_new_null() SKM_sk_new_null(X509_VERIFY_PARAM) -# define sk_X509_VERIFY_PARAM_free(st) SKM_sk_free(X509_VERIFY_PARAM, (st)) -# define sk_X509_VERIFY_PARAM_num(st) SKM_sk_num(X509_VERIFY_PARAM, (st)) -# define sk_X509_VERIFY_PARAM_value(st, i) SKM_sk_value(X509_VERIFY_PARAM, (st), (i)) -# define sk_X509_VERIFY_PARAM_set(st, i, val) SKM_sk_set(X509_VERIFY_PARAM, (st), (i), (val)) -# define sk_X509_VERIFY_PARAM_zero(st) SKM_sk_zero(X509_VERIFY_PARAM, (st)) -# define sk_X509_VERIFY_PARAM_push(st, val) SKM_sk_push(X509_VERIFY_PARAM, (st), (val)) -# define sk_X509_VERIFY_PARAM_unshift(st, val) SKM_sk_unshift(X509_VERIFY_PARAM, (st), (val)) -# define sk_X509_VERIFY_PARAM_find(st, val) SKM_sk_find(X509_VERIFY_PARAM, (st), (val)) -# define sk_X509_VERIFY_PARAM_find_ex(st, val) SKM_sk_find_ex(X509_VERIFY_PARAM, (st), (val)) -# define sk_X509_VERIFY_PARAM_delete(st, i) SKM_sk_delete(X509_VERIFY_PARAM, (st), (i)) -# define sk_X509_VERIFY_PARAM_delete_ptr(st, ptr) SKM_sk_delete_ptr(X509_VERIFY_PARAM, (st), (ptr)) -# define sk_X509_VERIFY_PARAM_insert(st, val, i) SKM_sk_insert(X509_VERIFY_PARAM, (st), (val), (i)) -# define sk_X509_VERIFY_PARAM_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(X509_VERIFY_PARAM, (st), (cmp)) -# define sk_X509_VERIFY_PARAM_dup(st) SKM_sk_dup(X509_VERIFY_PARAM, st) -# define sk_X509_VERIFY_PARAM_pop_free(st, free_func) SKM_sk_pop_free(X509_VERIFY_PARAM, (st), (free_func)) -# define sk_X509_VERIFY_PARAM_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(X509_VERIFY_PARAM, (st), (copy_func), (free_func)) -# define sk_X509_VERIFY_PARAM_shift(st) SKM_sk_shift(X509_VERIFY_PARAM, (st)) -# define sk_X509_VERIFY_PARAM_pop(st) SKM_sk_pop(X509_VERIFY_PARAM, (st)) -# define sk_X509_VERIFY_PARAM_sort(st) SKM_sk_sort(X509_VERIFY_PARAM, (st)) -# define sk_X509_VERIFY_PARAM_is_sorted(st) SKM_sk_is_sorted(X509_VERIFY_PARAM, (st)) -# define sk_nid_triple_new(cmp) SKM_sk_new(nid_triple, (cmp)) -# define sk_nid_triple_new_null() SKM_sk_new_null(nid_triple) -# define sk_nid_triple_free(st) SKM_sk_free(nid_triple, (st)) -# define sk_nid_triple_num(st) SKM_sk_num(nid_triple, (st)) -# define sk_nid_triple_value(st, i) SKM_sk_value(nid_triple, (st), (i)) -# define sk_nid_triple_set(st, i, val) SKM_sk_set(nid_triple, (st), (i), (val)) -# define sk_nid_triple_zero(st) SKM_sk_zero(nid_triple, (st)) -# define sk_nid_triple_push(st, val) SKM_sk_push(nid_triple, (st), (val)) -# define sk_nid_triple_unshift(st, val) SKM_sk_unshift(nid_triple, (st), (val)) -# define sk_nid_triple_find(st, val) SKM_sk_find(nid_triple, (st), (val)) -# define sk_nid_triple_find_ex(st, val) SKM_sk_find_ex(nid_triple, (st), (val)) -# define sk_nid_triple_delete(st, i) SKM_sk_delete(nid_triple, (st), (i)) -# define sk_nid_triple_delete_ptr(st, ptr) SKM_sk_delete_ptr(nid_triple, (st), (ptr)) -# define sk_nid_triple_insert(st, val, i) SKM_sk_insert(nid_triple, (st), (val), (i)) -# define sk_nid_triple_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(nid_triple, (st), (cmp)) -# define sk_nid_triple_dup(st) SKM_sk_dup(nid_triple, st) -# define sk_nid_triple_pop_free(st, free_func) SKM_sk_pop_free(nid_triple, (st), (free_func)) -# define sk_nid_triple_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(nid_triple, (st), (copy_func), (free_func)) -# define sk_nid_triple_shift(st) SKM_sk_shift(nid_triple, (st)) -# define sk_nid_triple_pop(st) SKM_sk_pop(nid_triple, (st)) -# define sk_nid_triple_sort(st) SKM_sk_sort(nid_triple, (st)) -# define sk_nid_triple_is_sorted(st) SKM_sk_is_sorted(nid_triple, (st)) -# define sk_void_new(cmp) SKM_sk_new(void, (cmp)) -# define sk_void_new_null() SKM_sk_new_null(void) -# define sk_void_free(st) SKM_sk_free(void, (st)) -# define sk_void_num(st) SKM_sk_num(void, (st)) -# define sk_void_value(st, i) SKM_sk_value(void, (st), (i)) -# define sk_void_set(st, i, val) SKM_sk_set(void, (st), (i), (val)) -# define sk_void_zero(st) SKM_sk_zero(void, (st)) -# define sk_void_push(st, val) SKM_sk_push(void, (st), (val)) -# define sk_void_unshift(st, val) SKM_sk_unshift(void, (st), (val)) -# define sk_void_find(st, val) SKM_sk_find(void, (st), (val)) -# define sk_void_find_ex(st, val) SKM_sk_find_ex(void, (st), (val)) -# define sk_void_delete(st, i) SKM_sk_delete(void, (st), (i)) -# define sk_void_delete_ptr(st, ptr) SKM_sk_delete_ptr(void, (st), (ptr)) -# define sk_void_insert(st, val, i) SKM_sk_insert(void, (st), (val), (i)) -# define sk_void_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(void, (st), (cmp)) -# define sk_void_dup(st) SKM_sk_dup(void, st) -# define sk_void_pop_free(st, free_func) SKM_sk_pop_free(void, (st), (free_func)) -# define sk_void_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(void, (st), (copy_func), (free_func)) -# define sk_void_shift(st) SKM_sk_shift(void, (st)) -# define sk_void_pop(st) SKM_sk_pop(void, (st)) -# define sk_void_sort(st) SKM_sk_sort(void, (st)) -# define sk_void_is_sorted(st) SKM_sk_is_sorted(void, (st)) -# define sk_OPENSSL_STRING_new(cmp) ((STACK_OF(OPENSSL_STRING) *)sk_new(CHECKED_SK_CMP_FUNC(char, cmp))) -# define sk_OPENSSL_STRING_new_null() ((STACK_OF(OPENSSL_STRING) *)sk_new_null()) -# define sk_OPENSSL_STRING_push(st, val) sk_push(CHECKED_STACK_OF(OPENSSL_STRING, st), CHECKED_PTR_OF(char, val)) -# define sk_OPENSSL_STRING_find(st, val) sk_find(CHECKED_STACK_OF(OPENSSL_STRING, st), CHECKED_PTR_OF(char, val)) -# define sk_OPENSSL_STRING_value(st, i) ((OPENSSL_STRING)sk_value(CHECKED_STACK_OF(OPENSSL_STRING, st), i)) -# define sk_OPENSSL_STRING_num(st) SKM_sk_num(OPENSSL_STRING, st) -# define sk_OPENSSL_STRING_pop_free(st, free_func) sk_pop_free(CHECKED_STACK_OF(OPENSSL_STRING, st), CHECKED_SK_FREE_FUNC(char, free_func)) -# define sk_OPENSSL_STRING_deep_copy(st, copy_func, free_func) ((STACK_OF(OPENSSL_STRING) *)sk_deep_copy(CHECKED_STACK_OF(OPENSSL_STRING, st), CHECKED_SK_COPY_FUNC(char, copy_func), CHECKED_SK_FREE_FUNC(char, free_func))) -# define sk_OPENSSL_STRING_insert(st, val, i) sk_insert(CHECKED_STACK_OF(OPENSSL_STRING, st), CHECKED_PTR_OF(char, val), i) -# define sk_OPENSSL_STRING_free(st) SKM_sk_free(OPENSSL_STRING, st) -# define sk_OPENSSL_STRING_set(st, i, val) sk_set(CHECKED_STACK_OF(OPENSSL_STRING, st), i, CHECKED_PTR_OF(char, val)) -# define sk_OPENSSL_STRING_zero(st) SKM_sk_zero(OPENSSL_STRING, (st)) -# define sk_OPENSSL_STRING_unshift(st, val) sk_unshift(CHECKED_STACK_OF(OPENSSL_STRING, st), CHECKED_PTR_OF(char, val)) -# define sk_OPENSSL_STRING_find_ex(st, val) sk_find_ex((_STACK *)CHECKED_CONST_PTR_OF(STACK_OF(OPENSSL_STRING), st), CHECKED_CONST_PTR_OF(char, val)) -# define sk_OPENSSL_STRING_delete(st, i) SKM_sk_delete(OPENSSL_STRING, (st), (i)) -# define sk_OPENSSL_STRING_delete_ptr(st, ptr) (OPENSSL_STRING *)sk_delete_ptr(CHECKED_STACK_OF(OPENSSL_STRING, st), CHECKED_PTR_OF(char, ptr)) -# define sk_OPENSSL_STRING_set_cmp_func(st, cmp) \ - ((int (*)(const char * const *,const char * const *)) \ - sk_set_cmp_func(CHECKED_STACK_OF(OPENSSL_STRING, st), CHECKED_SK_CMP_FUNC(char, cmp))) -# define sk_OPENSSL_STRING_dup(st) SKM_sk_dup(OPENSSL_STRING, st) -# define sk_OPENSSL_STRING_shift(st) SKM_sk_shift(OPENSSL_STRING, (st)) -# define sk_OPENSSL_STRING_pop(st) (char *)sk_pop(CHECKED_STACK_OF(OPENSSL_STRING, st)) -# define sk_OPENSSL_STRING_sort(st) SKM_sk_sort(OPENSSL_STRING, (st)) -# define sk_OPENSSL_STRING_is_sorted(st) SKM_sk_is_sorted(OPENSSL_STRING, (st)) -# define sk_OPENSSL_BLOCK_new(cmp) ((STACK_OF(OPENSSL_BLOCK) *)sk_new(CHECKED_SK_CMP_FUNC(void, cmp))) -# define sk_OPENSSL_BLOCK_new_null() ((STACK_OF(OPENSSL_BLOCK) *)sk_new_null()) -# define sk_OPENSSL_BLOCK_push(st, val) sk_push(CHECKED_STACK_OF(OPENSSL_BLOCK, st), CHECKED_PTR_OF(void, val)) -# define sk_OPENSSL_BLOCK_find(st, val) sk_find(CHECKED_STACK_OF(OPENSSL_BLOCK, st), CHECKED_PTR_OF(void, val)) -# define sk_OPENSSL_BLOCK_value(st, i) ((OPENSSL_BLOCK)sk_value(CHECKED_STACK_OF(OPENSSL_BLOCK, st), i)) -# define sk_OPENSSL_BLOCK_num(st) SKM_sk_num(OPENSSL_BLOCK, st) -# define sk_OPENSSL_BLOCK_pop_free(st, free_func) sk_pop_free(CHECKED_STACK_OF(OPENSSL_BLOCK, st), CHECKED_SK_FREE_FUNC(void, free_func)) -# define sk_OPENSSL_BLOCK_deep_copy(st, copy_func, free_func) ((STACK_OF(OPENSSL_BLOCK) *)sk_deep_copy(CHECKED_STACK_OF(OPENSSL_BLOCK, st), CHECKED_SK_COPY_FUNC(void, copy_func), CHECKED_SK_FREE_FUNC(void, free_func))) -# define sk_OPENSSL_BLOCK_insert(st, val, i) sk_insert(CHECKED_STACK_OF(OPENSSL_BLOCK, st), CHECKED_PTR_OF(void, val), i) -# define sk_OPENSSL_BLOCK_free(st) SKM_sk_free(OPENSSL_BLOCK, st) -# define sk_OPENSSL_BLOCK_set(st, i, val) sk_set(CHECKED_STACK_OF(OPENSSL_BLOCK, st), i, CHECKED_PTR_OF(void, val)) -# define sk_OPENSSL_BLOCK_zero(st) SKM_sk_zero(OPENSSL_BLOCK, (st)) -# define sk_OPENSSL_BLOCK_unshift(st, val) sk_unshift(CHECKED_STACK_OF(OPENSSL_BLOCK, st), CHECKED_PTR_OF(void, val)) -# define sk_OPENSSL_BLOCK_find_ex(st, val) sk_find_ex((_STACK *)CHECKED_CONST_PTR_OF(STACK_OF(OPENSSL_BLOCK), st), CHECKED_CONST_PTR_OF(void, val)) -# define sk_OPENSSL_BLOCK_delete(st, i) SKM_sk_delete(OPENSSL_BLOCK, (st), (i)) -# define sk_OPENSSL_BLOCK_delete_ptr(st, ptr) (OPENSSL_BLOCK *)sk_delete_ptr(CHECKED_STACK_OF(OPENSSL_BLOCK, st), CHECKED_PTR_OF(void, ptr)) -# define sk_OPENSSL_BLOCK_set_cmp_func(st, cmp) \ - ((int (*)(const void * const *,const void * const *)) \ - sk_set_cmp_func(CHECKED_STACK_OF(OPENSSL_BLOCK, st), CHECKED_SK_CMP_FUNC(void, cmp))) -# define sk_OPENSSL_BLOCK_dup(st) SKM_sk_dup(OPENSSL_BLOCK, st) -# define sk_OPENSSL_BLOCK_shift(st) SKM_sk_shift(OPENSSL_BLOCK, (st)) -# define sk_OPENSSL_BLOCK_pop(st) (void *)sk_pop(CHECKED_STACK_OF(OPENSSL_BLOCK, st)) -# define sk_OPENSSL_BLOCK_sort(st) SKM_sk_sort(OPENSSL_BLOCK, (st)) -# define sk_OPENSSL_BLOCK_is_sorted(st) SKM_sk_is_sorted(OPENSSL_BLOCK, (st)) -# define sk_OPENSSL_PSTRING_new(cmp) ((STACK_OF(OPENSSL_PSTRING) *)sk_new(CHECKED_SK_CMP_FUNC(OPENSSL_STRING, cmp))) -# define sk_OPENSSL_PSTRING_new_null() ((STACK_OF(OPENSSL_PSTRING) *)sk_new_null()) -# define sk_OPENSSL_PSTRING_push(st, val) sk_push(CHECKED_STACK_OF(OPENSSL_PSTRING, st), CHECKED_PTR_OF(OPENSSL_STRING, val)) -# define sk_OPENSSL_PSTRING_find(st, val) sk_find(CHECKED_STACK_OF(OPENSSL_PSTRING, st), CHECKED_PTR_OF(OPENSSL_STRING, val)) -# define sk_OPENSSL_PSTRING_value(st, i) ((OPENSSL_PSTRING)sk_value(CHECKED_STACK_OF(OPENSSL_PSTRING, st), i)) -# define sk_OPENSSL_PSTRING_num(st) SKM_sk_num(OPENSSL_PSTRING, st) -# define sk_OPENSSL_PSTRING_pop_free(st, free_func) sk_pop_free(CHECKED_STACK_OF(OPENSSL_PSTRING, st), CHECKED_SK_FREE_FUNC(OPENSSL_STRING, free_func)) -# define sk_OPENSSL_PSTRING_deep_copy(st, copy_func, free_func) ((STACK_OF(OPENSSL_PSTRING) *)sk_deep_copy(CHECKED_STACK_OF(OPENSSL_PSTRING, st), CHECKED_SK_COPY_FUNC(OPENSSL_STRING, copy_func), CHECKED_SK_FREE_FUNC(OPENSSL_STRING, free_func))) -# define sk_OPENSSL_PSTRING_insert(st, val, i) sk_insert(CHECKED_STACK_OF(OPENSSL_PSTRING, st), CHECKED_PTR_OF(OPENSSL_STRING, val), i) -# define sk_OPENSSL_PSTRING_free(st) SKM_sk_free(OPENSSL_PSTRING, st) -# define sk_OPENSSL_PSTRING_set(st, i, val) sk_set(CHECKED_STACK_OF(OPENSSL_PSTRING, st), i, CHECKED_PTR_OF(OPENSSL_STRING, val)) -# define sk_OPENSSL_PSTRING_zero(st) SKM_sk_zero(OPENSSL_PSTRING, (st)) -# define sk_OPENSSL_PSTRING_unshift(st, val) sk_unshift(CHECKED_STACK_OF(OPENSSL_PSTRING, st), CHECKED_PTR_OF(OPENSSL_STRING, val)) -# define sk_OPENSSL_PSTRING_find_ex(st, val) sk_find_ex((_STACK *)CHECKED_CONST_PTR_OF(STACK_OF(OPENSSL_PSTRING), st), CHECKED_CONST_PTR_OF(OPENSSL_STRING, val)) -# define sk_OPENSSL_PSTRING_delete(st, i) SKM_sk_delete(OPENSSL_PSTRING, (st), (i)) -# define sk_OPENSSL_PSTRING_delete_ptr(st, ptr) (OPENSSL_PSTRING *)sk_delete_ptr(CHECKED_STACK_OF(OPENSSL_PSTRING, st), CHECKED_PTR_OF(OPENSSL_STRING, ptr)) -# define sk_OPENSSL_PSTRING_set_cmp_func(st, cmp) \ - ((int (*)(const OPENSSL_STRING * const *,const OPENSSL_STRING * const *)) \ - sk_set_cmp_func(CHECKED_STACK_OF(OPENSSL_PSTRING, st), CHECKED_SK_CMP_FUNC(OPENSSL_STRING, cmp))) -# define sk_OPENSSL_PSTRING_dup(st) SKM_sk_dup(OPENSSL_PSTRING, st) -# define sk_OPENSSL_PSTRING_shift(st) SKM_sk_shift(OPENSSL_PSTRING, (st)) -# define sk_OPENSSL_PSTRING_pop(st) (OPENSSL_STRING *)sk_pop(CHECKED_STACK_OF(OPENSSL_PSTRING, st)) -# define sk_OPENSSL_PSTRING_sort(st) SKM_sk_sort(OPENSSL_PSTRING, (st)) -# define sk_OPENSSL_PSTRING_is_sorted(st) SKM_sk_is_sorted(OPENSSL_PSTRING, (st)) -# define d2i_ASN1_SET_OF_ACCESS_DESCRIPTION(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \ - SKM_ASN1_SET_OF_d2i(ACCESS_DESCRIPTION, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class)) -# define i2d_ASN1_SET_OF_ACCESS_DESCRIPTION(st, pp, i2d_func, ex_tag, ex_class, is_set) \ - SKM_ASN1_SET_OF_i2d(ACCESS_DESCRIPTION, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set)) -# define ASN1_seq_pack_ACCESS_DESCRIPTION(st, i2d_func, buf, len) \ - SKM_ASN1_seq_pack(ACCESS_DESCRIPTION, (st), (i2d_func), (buf), (len)) -# define ASN1_seq_unpack_ACCESS_DESCRIPTION(buf, len, d2i_func, free_func) \ - SKM_ASN1_seq_unpack(ACCESS_DESCRIPTION, (buf), (len), (d2i_func), (free_func)) -# define d2i_ASN1_SET_OF_ASN1_INTEGER(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \ - SKM_ASN1_SET_OF_d2i(ASN1_INTEGER, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class)) -# define i2d_ASN1_SET_OF_ASN1_INTEGER(st, pp, i2d_func, ex_tag, ex_class, is_set) \ - SKM_ASN1_SET_OF_i2d(ASN1_INTEGER, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set)) -# define ASN1_seq_pack_ASN1_INTEGER(st, i2d_func, buf, len) \ - SKM_ASN1_seq_pack(ASN1_INTEGER, (st), (i2d_func), (buf), (len)) -# define ASN1_seq_unpack_ASN1_INTEGER(buf, len, d2i_func, free_func) \ - SKM_ASN1_seq_unpack(ASN1_INTEGER, (buf), (len), (d2i_func), (free_func)) -# define d2i_ASN1_SET_OF_ASN1_OBJECT(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \ - SKM_ASN1_SET_OF_d2i(ASN1_OBJECT, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class)) -# define i2d_ASN1_SET_OF_ASN1_OBJECT(st, pp, i2d_func, ex_tag, ex_class, is_set) \ - SKM_ASN1_SET_OF_i2d(ASN1_OBJECT, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set)) -# define ASN1_seq_pack_ASN1_OBJECT(st, i2d_func, buf, len) \ - SKM_ASN1_seq_pack(ASN1_OBJECT, (st), (i2d_func), (buf), (len)) -# define ASN1_seq_unpack_ASN1_OBJECT(buf, len, d2i_func, free_func) \ - SKM_ASN1_seq_unpack(ASN1_OBJECT, (buf), (len), (d2i_func), (free_func)) -# define d2i_ASN1_SET_OF_ASN1_TYPE(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \ - SKM_ASN1_SET_OF_d2i(ASN1_TYPE, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class)) -# define i2d_ASN1_SET_OF_ASN1_TYPE(st, pp, i2d_func, ex_tag, ex_class, is_set) \ - SKM_ASN1_SET_OF_i2d(ASN1_TYPE, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set)) -# define ASN1_seq_pack_ASN1_TYPE(st, i2d_func, buf, len) \ - SKM_ASN1_seq_pack(ASN1_TYPE, (st), (i2d_func), (buf), (len)) -# define ASN1_seq_unpack_ASN1_TYPE(buf, len, d2i_func, free_func) \ - SKM_ASN1_seq_unpack(ASN1_TYPE, (buf), (len), (d2i_func), (free_func)) -# define d2i_ASN1_SET_OF_ASN1_UTF8STRING(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \ - SKM_ASN1_SET_OF_d2i(ASN1_UTF8STRING, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class)) -# define i2d_ASN1_SET_OF_ASN1_UTF8STRING(st, pp, i2d_func, ex_tag, ex_class, is_set) \ - SKM_ASN1_SET_OF_i2d(ASN1_UTF8STRING, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set)) -# define ASN1_seq_pack_ASN1_UTF8STRING(st, i2d_func, buf, len) \ - SKM_ASN1_seq_pack(ASN1_UTF8STRING, (st), (i2d_func), (buf), (len)) -# define ASN1_seq_unpack_ASN1_UTF8STRING(buf, len, d2i_func, free_func) \ - SKM_ASN1_seq_unpack(ASN1_UTF8STRING, (buf), (len), (d2i_func), (free_func)) -# define d2i_ASN1_SET_OF_DIST_POINT(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \ - SKM_ASN1_SET_OF_d2i(DIST_POINT, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class)) -# define i2d_ASN1_SET_OF_DIST_POINT(st, pp, i2d_func, ex_tag, ex_class, is_set) \ - SKM_ASN1_SET_OF_i2d(DIST_POINT, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set)) -# define ASN1_seq_pack_DIST_POINT(st, i2d_func, buf, len) \ - SKM_ASN1_seq_pack(DIST_POINT, (st), (i2d_func), (buf), (len)) -# define ASN1_seq_unpack_DIST_POINT(buf, len, d2i_func, free_func) \ - SKM_ASN1_seq_unpack(DIST_POINT, (buf), (len), (d2i_func), (free_func)) -# define d2i_ASN1_SET_OF_ESS_CERT_ID(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \ - SKM_ASN1_SET_OF_d2i(ESS_CERT_ID, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class)) -# define i2d_ASN1_SET_OF_ESS_CERT_ID(st, pp, i2d_func, ex_tag, ex_class, is_set) \ - SKM_ASN1_SET_OF_i2d(ESS_CERT_ID, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set)) -# define ASN1_seq_pack_ESS_CERT_ID(st, i2d_func, buf, len) \ - SKM_ASN1_seq_pack(ESS_CERT_ID, (st), (i2d_func), (buf), (len)) -# define ASN1_seq_unpack_ESS_CERT_ID(buf, len, d2i_func, free_func) \ - SKM_ASN1_seq_unpack(ESS_CERT_ID, (buf), (len), (d2i_func), (free_func)) -# define d2i_ASN1_SET_OF_EVP_MD(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \ - SKM_ASN1_SET_OF_d2i(EVP_MD, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class)) -# define i2d_ASN1_SET_OF_EVP_MD(st, pp, i2d_func, ex_tag, ex_class, is_set) \ - SKM_ASN1_SET_OF_i2d(EVP_MD, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set)) -# define ASN1_seq_pack_EVP_MD(st, i2d_func, buf, len) \ - SKM_ASN1_seq_pack(EVP_MD, (st), (i2d_func), (buf), (len)) -# define ASN1_seq_unpack_EVP_MD(buf, len, d2i_func, free_func) \ - SKM_ASN1_seq_unpack(EVP_MD, (buf), (len), (d2i_func), (free_func)) -# define d2i_ASN1_SET_OF_GENERAL_NAME(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \ - SKM_ASN1_SET_OF_d2i(GENERAL_NAME, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class)) -# define i2d_ASN1_SET_OF_GENERAL_NAME(st, pp, i2d_func, ex_tag, ex_class, is_set) \ - SKM_ASN1_SET_OF_i2d(GENERAL_NAME, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set)) -# define ASN1_seq_pack_GENERAL_NAME(st, i2d_func, buf, len) \ - SKM_ASN1_seq_pack(GENERAL_NAME, (st), (i2d_func), (buf), (len)) -# define ASN1_seq_unpack_GENERAL_NAME(buf, len, d2i_func, free_func) \ - SKM_ASN1_seq_unpack(GENERAL_NAME, (buf), (len), (d2i_func), (free_func)) -# define d2i_ASN1_SET_OF_OCSP_ONEREQ(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \ - SKM_ASN1_SET_OF_d2i(OCSP_ONEREQ, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class)) -# define i2d_ASN1_SET_OF_OCSP_ONEREQ(st, pp, i2d_func, ex_tag, ex_class, is_set) \ - SKM_ASN1_SET_OF_i2d(OCSP_ONEREQ, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set)) -# define ASN1_seq_pack_OCSP_ONEREQ(st, i2d_func, buf, len) \ - SKM_ASN1_seq_pack(OCSP_ONEREQ, (st), (i2d_func), (buf), (len)) -# define ASN1_seq_unpack_OCSP_ONEREQ(buf, len, d2i_func, free_func) \ - SKM_ASN1_seq_unpack(OCSP_ONEREQ, (buf), (len), (d2i_func), (free_func)) -# define d2i_ASN1_SET_OF_OCSP_SINGLERESP(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \ - SKM_ASN1_SET_OF_d2i(OCSP_SINGLERESP, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class)) -# define i2d_ASN1_SET_OF_OCSP_SINGLERESP(st, pp, i2d_func, ex_tag, ex_class, is_set) \ - SKM_ASN1_SET_OF_i2d(OCSP_SINGLERESP, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set)) -# define ASN1_seq_pack_OCSP_SINGLERESP(st, i2d_func, buf, len) \ - SKM_ASN1_seq_pack(OCSP_SINGLERESP, (st), (i2d_func), (buf), (len)) -# define ASN1_seq_unpack_OCSP_SINGLERESP(buf, len, d2i_func, free_func) \ - SKM_ASN1_seq_unpack(OCSP_SINGLERESP, (buf), (len), (d2i_func), (free_func)) -# define d2i_ASN1_SET_OF_PKCS12_SAFEBAG(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \ - SKM_ASN1_SET_OF_d2i(PKCS12_SAFEBAG, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class)) -# define i2d_ASN1_SET_OF_PKCS12_SAFEBAG(st, pp, i2d_func, ex_tag, ex_class, is_set) \ - SKM_ASN1_SET_OF_i2d(PKCS12_SAFEBAG, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set)) -# define ASN1_seq_pack_PKCS12_SAFEBAG(st, i2d_func, buf, len) \ - SKM_ASN1_seq_pack(PKCS12_SAFEBAG, (st), (i2d_func), (buf), (len)) -# define ASN1_seq_unpack_PKCS12_SAFEBAG(buf, len, d2i_func, free_func) \ - SKM_ASN1_seq_unpack(PKCS12_SAFEBAG, (buf), (len), (d2i_func), (free_func)) -# define d2i_ASN1_SET_OF_PKCS7(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \ - SKM_ASN1_SET_OF_d2i(PKCS7, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class)) -# define i2d_ASN1_SET_OF_PKCS7(st, pp, i2d_func, ex_tag, ex_class, is_set) \ - SKM_ASN1_SET_OF_i2d(PKCS7, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set)) -# define ASN1_seq_pack_PKCS7(st, i2d_func, buf, len) \ - SKM_ASN1_seq_pack(PKCS7, (st), (i2d_func), (buf), (len)) -# define ASN1_seq_unpack_PKCS7(buf, len, d2i_func, free_func) \ - SKM_ASN1_seq_unpack(PKCS7, (buf), (len), (d2i_func), (free_func)) -# define d2i_ASN1_SET_OF_PKCS7_RECIP_INFO(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \ - SKM_ASN1_SET_OF_d2i(PKCS7_RECIP_INFO, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class)) -# define i2d_ASN1_SET_OF_PKCS7_RECIP_INFO(st, pp, i2d_func, ex_tag, ex_class, is_set) \ - SKM_ASN1_SET_OF_i2d(PKCS7_RECIP_INFO, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set)) -# define ASN1_seq_pack_PKCS7_RECIP_INFO(st, i2d_func, buf, len) \ - SKM_ASN1_seq_pack(PKCS7_RECIP_INFO, (st), (i2d_func), (buf), (len)) -# define ASN1_seq_unpack_PKCS7_RECIP_INFO(buf, len, d2i_func, free_func) \ - SKM_ASN1_seq_unpack(PKCS7_RECIP_INFO, (buf), (len), (d2i_func), (free_func)) -# define d2i_ASN1_SET_OF_PKCS7_SIGNER_INFO(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \ - SKM_ASN1_SET_OF_d2i(PKCS7_SIGNER_INFO, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class)) -# define i2d_ASN1_SET_OF_PKCS7_SIGNER_INFO(st, pp, i2d_func, ex_tag, ex_class, is_set) \ - SKM_ASN1_SET_OF_i2d(PKCS7_SIGNER_INFO, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set)) -# define ASN1_seq_pack_PKCS7_SIGNER_INFO(st, i2d_func, buf, len) \ - SKM_ASN1_seq_pack(PKCS7_SIGNER_INFO, (st), (i2d_func), (buf), (len)) -# define ASN1_seq_unpack_PKCS7_SIGNER_INFO(buf, len, d2i_func, free_func) \ - SKM_ASN1_seq_unpack(PKCS7_SIGNER_INFO, (buf), (len), (d2i_func), (free_func)) -# define d2i_ASN1_SET_OF_POLICYINFO(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \ - SKM_ASN1_SET_OF_d2i(POLICYINFO, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class)) -# define i2d_ASN1_SET_OF_POLICYINFO(st, pp, i2d_func, ex_tag, ex_class, is_set) \ - SKM_ASN1_SET_OF_i2d(POLICYINFO, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set)) -# define ASN1_seq_pack_POLICYINFO(st, i2d_func, buf, len) \ - SKM_ASN1_seq_pack(POLICYINFO, (st), (i2d_func), (buf), (len)) -# define ASN1_seq_unpack_POLICYINFO(buf, len, d2i_func, free_func) \ - SKM_ASN1_seq_unpack(POLICYINFO, (buf), (len), (d2i_func), (free_func)) -# define d2i_ASN1_SET_OF_POLICYQUALINFO(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \ - SKM_ASN1_SET_OF_d2i(POLICYQUALINFO, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class)) -# define i2d_ASN1_SET_OF_POLICYQUALINFO(st, pp, i2d_func, ex_tag, ex_class, is_set) \ - SKM_ASN1_SET_OF_i2d(POLICYQUALINFO, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set)) -# define ASN1_seq_pack_POLICYQUALINFO(st, i2d_func, buf, len) \ - SKM_ASN1_seq_pack(POLICYQUALINFO, (st), (i2d_func), (buf), (len)) -# define ASN1_seq_unpack_POLICYQUALINFO(buf, len, d2i_func, free_func) \ - SKM_ASN1_seq_unpack(POLICYQUALINFO, (buf), (len), (d2i_func), (free_func)) -# define d2i_ASN1_SET_OF_SXNETID(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \ - SKM_ASN1_SET_OF_d2i(SXNETID, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class)) -# define i2d_ASN1_SET_OF_SXNETID(st, pp, i2d_func, ex_tag, ex_class, is_set) \ - SKM_ASN1_SET_OF_i2d(SXNETID, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set)) -# define ASN1_seq_pack_SXNETID(st, i2d_func, buf, len) \ - SKM_ASN1_seq_pack(SXNETID, (st), (i2d_func), (buf), (len)) -# define ASN1_seq_unpack_SXNETID(buf, len, d2i_func, free_func) \ - SKM_ASN1_seq_unpack(SXNETID, (buf), (len), (d2i_func), (free_func)) -# define d2i_ASN1_SET_OF_X509(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \ - SKM_ASN1_SET_OF_d2i(X509, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class)) -# define i2d_ASN1_SET_OF_X509(st, pp, i2d_func, ex_tag, ex_class, is_set) \ - SKM_ASN1_SET_OF_i2d(X509, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set)) -# define ASN1_seq_pack_X509(st, i2d_func, buf, len) \ - SKM_ASN1_seq_pack(X509, (st), (i2d_func), (buf), (len)) -# define ASN1_seq_unpack_X509(buf, len, d2i_func, free_func) \ - SKM_ASN1_seq_unpack(X509, (buf), (len), (d2i_func), (free_func)) -# define d2i_ASN1_SET_OF_X509_ALGOR(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \ - SKM_ASN1_SET_OF_d2i(X509_ALGOR, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class)) -# define i2d_ASN1_SET_OF_X509_ALGOR(st, pp, i2d_func, ex_tag, ex_class, is_set) \ - SKM_ASN1_SET_OF_i2d(X509_ALGOR, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set)) -# define ASN1_seq_pack_X509_ALGOR(st, i2d_func, buf, len) \ - SKM_ASN1_seq_pack(X509_ALGOR, (st), (i2d_func), (buf), (len)) -# define ASN1_seq_unpack_X509_ALGOR(buf, len, d2i_func, free_func) \ - SKM_ASN1_seq_unpack(X509_ALGOR, (buf), (len), (d2i_func), (free_func)) -# define d2i_ASN1_SET_OF_X509_ATTRIBUTE(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \ - SKM_ASN1_SET_OF_d2i(X509_ATTRIBUTE, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class)) -# define i2d_ASN1_SET_OF_X509_ATTRIBUTE(st, pp, i2d_func, ex_tag, ex_class, is_set) \ - SKM_ASN1_SET_OF_i2d(X509_ATTRIBUTE, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set)) -# define ASN1_seq_pack_X509_ATTRIBUTE(st, i2d_func, buf, len) \ - SKM_ASN1_seq_pack(X509_ATTRIBUTE, (st), (i2d_func), (buf), (len)) -# define ASN1_seq_unpack_X509_ATTRIBUTE(buf, len, d2i_func, free_func) \ - SKM_ASN1_seq_unpack(X509_ATTRIBUTE, (buf), (len), (d2i_func), (free_func)) -# define d2i_ASN1_SET_OF_X509_CRL(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \ - SKM_ASN1_SET_OF_d2i(X509_CRL, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class)) -# define i2d_ASN1_SET_OF_X509_CRL(st, pp, i2d_func, ex_tag, ex_class, is_set) \ - SKM_ASN1_SET_OF_i2d(X509_CRL, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set)) -# define ASN1_seq_pack_X509_CRL(st, i2d_func, buf, len) \ - SKM_ASN1_seq_pack(X509_CRL, (st), (i2d_func), (buf), (len)) -# define ASN1_seq_unpack_X509_CRL(buf, len, d2i_func, free_func) \ - SKM_ASN1_seq_unpack(X509_CRL, (buf), (len), (d2i_func), (free_func)) -# define d2i_ASN1_SET_OF_X509_EXTENSION(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \ - SKM_ASN1_SET_OF_d2i(X509_EXTENSION, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class)) -# define i2d_ASN1_SET_OF_X509_EXTENSION(st, pp, i2d_func, ex_tag, ex_class, is_set) \ - SKM_ASN1_SET_OF_i2d(X509_EXTENSION, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set)) -# define ASN1_seq_pack_X509_EXTENSION(st, i2d_func, buf, len) \ - SKM_ASN1_seq_pack(X509_EXTENSION, (st), (i2d_func), (buf), (len)) -# define ASN1_seq_unpack_X509_EXTENSION(buf, len, d2i_func, free_func) \ - SKM_ASN1_seq_unpack(X509_EXTENSION, (buf), (len), (d2i_func), (free_func)) -# define d2i_ASN1_SET_OF_X509_NAME_ENTRY(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \ - SKM_ASN1_SET_OF_d2i(X509_NAME_ENTRY, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class)) -# define i2d_ASN1_SET_OF_X509_NAME_ENTRY(st, pp, i2d_func, ex_tag, ex_class, is_set) \ - SKM_ASN1_SET_OF_i2d(X509_NAME_ENTRY, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set)) -# define ASN1_seq_pack_X509_NAME_ENTRY(st, i2d_func, buf, len) \ - SKM_ASN1_seq_pack(X509_NAME_ENTRY, (st), (i2d_func), (buf), (len)) -# define ASN1_seq_unpack_X509_NAME_ENTRY(buf, len, d2i_func, free_func) \ - SKM_ASN1_seq_unpack(X509_NAME_ENTRY, (buf), (len), (d2i_func), (free_func)) -# define d2i_ASN1_SET_OF_X509_REVOKED(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \ - SKM_ASN1_SET_OF_d2i(X509_REVOKED, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class)) -# define i2d_ASN1_SET_OF_X509_REVOKED(st, pp, i2d_func, ex_tag, ex_class, is_set) \ - SKM_ASN1_SET_OF_i2d(X509_REVOKED, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set)) -# define ASN1_seq_pack_X509_REVOKED(st, i2d_func, buf, len) \ - SKM_ASN1_seq_pack(X509_REVOKED, (st), (i2d_func), (buf), (len)) -# define ASN1_seq_unpack_X509_REVOKED(buf, len, d2i_func, free_func) \ - SKM_ASN1_seq_unpack(X509_REVOKED, (buf), (len), (d2i_func), (free_func)) -# define PKCS12_decrypt_d2i_PKCS12_SAFEBAG(algor, d2i_func, free_func, pass, passlen, oct, seq) \ - SKM_PKCS12_decrypt_d2i(PKCS12_SAFEBAG, (algor), (d2i_func), (free_func), (pass), (passlen), (oct), (seq)) -# define PKCS12_decrypt_d2i_PKCS7(algor, d2i_func, free_func, pass, passlen, oct, seq) \ - SKM_PKCS12_decrypt_d2i(PKCS7, (algor), (d2i_func), (free_func), (pass), (passlen), (oct), (seq)) -# define lh_ADDED_OBJ_new() LHM_lh_new(ADDED_OBJ,added_obj) -# define lh_ADDED_OBJ_insert(lh,inst) LHM_lh_insert(ADDED_OBJ,lh,inst) -# define lh_ADDED_OBJ_retrieve(lh,inst) LHM_lh_retrieve(ADDED_OBJ,lh,inst) -# define lh_ADDED_OBJ_delete(lh,inst) LHM_lh_delete(ADDED_OBJ,lh,inst) -# define lh_ADDED_OBJ_doall(lh,fn) LHM_lh_doall(ADDED_OBJ,lh,fn) -# define lh_ADDED_OBJ_doall_arg(lh,fn,arg_type,arg) \ - LHM_lh_doall_arg(ADDED_OBJ,lh,fn,arg_type,arg) -# define lh_ADDED_OBJ_error(lh) LHM_lh_error(ADDED_OBJ,lh) -# define lh_ADDED_OBJ_num_items(lh) LHM_lh_num_items(ADDED_OBJ,lh) -# define lh_ADDED_OBJ_down_load(lh) LHM_lh_down_load(ADDED_OBJ,lh) -# define lh_ADDED_OBJ_node_stats_bio(lh,out) \ - LHM_lh_node_stats_bio(ADDED_OBJ,lh,out) -# define lh_ADDED_OBJ_node_usage_stats_bio(lh,out) \ - LHM_lh_node_usage_stats_bio(ADDED_OBJ,lh,out) -# define lh_ADDED_OBJ_stats_bio(lh,out) \ - LHM_lh_stats_bio(ADDED_OBJ,lh,out) -# define lh_ADDED_OBJ_free(lh) LHM_lh_free(ADDED_OBJ,lh) -# define lh_APP_INFO_new() LHM_lh_new(APP_INFO,app_info) -# define lh_APP_INFO_insert(lh,inst) LHM_lh_insert(APP_INFO,lh,inst) -# define lh_APP_INFO_retrieve(lh,inst) LHM_lh_retrieve(APP_INFO,lh,inst) -# define lh_APP_INFO_delete(lh,inst) LHM_lh_delete(APP_INFO,lh,inst) -# define lh_APP_INFO_doall(lh,fn) LHM_lh_doall(APP_INFO,lh,fn) -# define lh_APP_INFO_doall_arg(lh,fn,arg_type,arg) \ - LHM_lh_doall_arg(APP_INFO,lh,fn,arg_type,arg) -# define lh_APP_INFO_error(lh) LHM_lh_error(APP_INFO,lh) -# define lh_APP_INFO_num_items(lh) LHM_lh_num_items(APP_INFO,lh) -# define lh_APP_INFO_down_load(lh) LHM_lh_down_load(APP_INFO,lh) -# define lh_APP_INFO_node_stats_bio(lh,out) \ - LHM_lh_node_stats_bio(APP_INFO,lh,out) -# define lh_APP_INFO_node_usage_stats_bio(lh,out) \ - LHM_lh_node_usage_stats_bio(APP_INFO,lh,out) -# define lh_APP_INFO_stats_bio(lh,out) \ - LHM_lh_stats_bio(APP_INFO,lh,out) -# define lh_APP_INFO_free(lh) LHM_lh_free(APP_INFO,lh) -# define lh_CONF_VALUE_new() LHM_lh_new(CONF_VALUE,conf_value) -# define lh_CONF_VALUE_insert(lh,inst) LHM_lh_insert(CONF_VALUE,lh,inst) -# define lh_CONF_VALUE_retrieve(lh,inst) LHM_lh_retrieve(CONF_VALUE,lh,inst) -# define lh_CONF_VALUE_delete(lh,inst) LHM_lh_delete(CONF_VALUE,lh,inst) -# define lh_CONF_VALUE_doall(lh,fn) LHM_lh_doall(CONF_VALUE,lh,fn) -# define lh_CONF_VALUE_doall_arg(lh,fn,arg_type,arg) \ - LHM_lh_doall_arg(CONF_VALUE,lh,fn,arg_type,arg) -# define lh_CONF_VALUE_error(lh) LHM_lh_error(CONF_VALUE,lh) -# define lh_CONF_VALUE_num_items(lh) LHM_lh_num_items(CONF_VALUE,lh) -# define lh_CONF_VALUE_down_load(lh) LHM_lh_down_load(CONF_VALUE,lh) -# define lh_CONF_VALUE_node_stats_bio(lh,out) \ - LHM_lh_node_stats_bio(CONF_VALUE,lh,out) -# define lh_CONF_VALUE_node_usage_stats_bio(lh,out) \ - LHM_lh_node_usage_stats_bio(CONF_VALUE,lh,out) -# define lh_CONF_VALUE_stats_bio(lh,out) \ - LHM_lh_stats_bio(CONF_VALUE,lh,out) -# define lh_CONF_VALUE_free(lh) LHM_lh_free(CONF_VALUE,lh) -# define lh_ENGINE_PILE_new() LHM_lh_new(ENGINE_PILE,engine_pile) -# define lh_ENGINE_PILE_insert(lh,inst) LHM_lh_insert(ENGINE_PILE,lh,inst) -# define lh_ENGINE_PILE_retrieve(lh,inst) LHM_lh_retrieve(ENGINE_PILE,lh,inst) -# define lh_ENGINE_PILE_delete(lh,inst) LHM_lh_delete(ENGINE_PILE,lh,inst) -# define lh_ENGINE_PILE_doall(lh,fn) LHM_lh_doall(ENGINE_PILE,lh,fn) -# define lh_ENGINE_PILE_doall_arg(lh,fn,arg_type,arg) \ - LHM_lh_doall_arg(ENGINE_PILE,lh,fn,arg_type,arg) -# define lh_ENGINE_PILE_error(lh) LHM_lh_error(ENGINE_PILE,lh) -# define lh_ENGINE_PILE_num_items(lh) LHM_lh_num_items(ENGINE_PILE,lh) -# define lh_ENGINE_PILE_down_load(lh) LHM_lh_down_load(ENGINE_PILE,lh) -# define lh_ENGINE_PILE_node_stats_bio(lh,out) \ - LHM_lh_node_stats_bio(ENGINE_PILE,lh,out) -# define lh_ENGINE_PILE_node_usage_stats_bio(lh,out) \ - LHM_lh_node_usage_stats_bio(ENGINE_PILE,lh,out) -# define lh_ENGINE_PILE_stats_bio(lh,out) \ - LHM_lh_stats_bio(ENGINE_PILE,lh,out) -# define lh_ENGINE_PILE_free(lh) LHM_lh_free(ENGINE_PILE,lh) -# define lh_ERR_STATE_new() LHM_lh_new(ERR_STATE,err_state) -# define lh_ERR_STATE_insert(lh,inst) LHM_lh_insert(ERR_STATE,lh,inst) -# define lh_ERR_STATE_retrieve(lh,inst) LHM_lh_retrieve(ERR_STATE,lh,inst) -# define lh_ERR_STATE_delete(lh,inst) LHM_lh_delete(ERR_STATE,lh,inst) -# define lh_ERR_STATE_doall(lh,fn) LHM_lh_doall(ERR_STATE,lh,fn) -# define lh_ERR_STATE_doall_arg(lh,fn,arg_type,arg) \ - LHM_lh_doall_arg(ERR_STATE,lh,fn,arg_type,arg) -# define lh_ERR_STATE_error(lh) LHM_lh_error(ERR_STATE,lh) -# define lh_ERR_STATE_num_items(lh) LHM_lh_num_items(ERR_STATE,lh) -# define lh_ERR_STATE_down_load(lh) LHM_lh_down_load(ERR_STATE,lh) -# define lh_ERR_STATE_node_stats_bio(lh,out) \ - LHM_lh_node_stats_bio(ERR_STATE,lh,out) -# define lh_ERR_STATE_node_usage_stats_bio(lh,out) \ - LHM_lh_node_usage_stats_bio(ERR_STATE,lh,out) -# define lh_ERR_STATE_stats_bio(lh,out) \ - LHM_lh_stats_bio(ERR_STATE,lh,out) -# define lh_ERR_STATE_free(lh) LHM_lh_free(ERR_STATE,lh) -# define lh_ERR_STRING_DATA_new() LHM_lh_new(ERR_STRING_DATA,err_string_data) -# define lh_ERR_STRING_DATA_insert(lh,inst) LHM_lh_insert(ERR_STRING_DATA,lh,inst) -# define lh_ERR_STRING_DATA_retrieve(lh,inst) LHM_lh_retrieve(ERR_STRING_DATA,lh,inst) -# define lh_ERR_STRING_DATA_delete(lh,inst) LHM_lh_delete(ERR_STRING_DATA,lh,inst) -# define lh_ERR_STRING_DATA_doall(lh,fn) LHM_lh_doall(ERR_STRING_DATA,lh,fn) -# define lh_ERR_STRING_DATA_doall_arg(lh,fn,arg_type,arg) \ - LHM_lh_doall_arg(ERR_STRING_DATA,lh,fn,arg_type,arg) -# define lh_ERR_STRING_DATA_error(lh) LHM_lh_error(ERR_STRING_DATA,lh) -# define lh_ERR_STRING_DATA_num_items(lh) LHM_lh_num_items(ERR_STRING_DATA,lh) -# define lh_ERR_STRING_DATA_down_load(lh) LHM_lh_down_load(ERR_STRING_DATA,lh) -# define lh_ERR_STRING_DATA_node_stats_bio(lh,out) \ - LHM_lh_node_stats_bio(ERR_STRING_DATA,lh,out) -# define lh_ERR_STRING_DATA_node_usage_stats_bio(lh,out) \ - LHM_lh_node_usage_stats_bio(ERR_STRING_DATA,lh,out) -# define lh_ERR_STRING_DATA_stats_bio(lh,out) \ - LHM_lh_stats_bio(ERR_STRING_DATA,lh,out) -# define lh_ERR_STRING_DATA_free(lh) LHM_lh_free(ERR_STRING_DATA,lh) -# define lh_EX_CLASS_ITEM_new() LHM_lh_new(EX_CLASS_ITEM,ex_class_item) -# define lh_EX_CLASS_ITEM_insert(lh,inst) LHM_lh_insert(EX_CLASS_ITEM,lh,inst) -# define lh_EX_CLASS_ITEM_retrieve(lh,inst) LHM_lh_retrieve(EX_CLASS_ITEM,lh,inst) -# define lh_EX_CLASS_ITEM_delete(lh,inst) LHM_lh_delete(EX_CLASS_ITEM,lh,inst) -# define lh_EX_CLASS_ITEM_doall(lh,fn) LHM_lh_doall(EX_CLASS_ITEM,lh,fn) -# define lh_EX_CLASS_ITEM_doall_arg(lh,fn,arg_type,arg) \ - LHM_lh_doall_arg(EX_CLASS_ITEM,lh,fn,arg_type,arg) -# define lh_EX_CLASS_ITEM_error(lh) LHM_lh_error(EX_CLASS_ITEM,lh) -# define lh_EX_CLASS_ITEM_num_items(lh) LHM_lh_num_items(EX_CLASS_ITEM,lh) -# define lh_EX_CLASS_ITEM_down_load(lh) LHM_lh_down_load(EX_CLASS_ITEM,lh) -# define lh_EX_CLASS_ITEM_node_stats_bio(lh,out) \ - LHM_lh_node_stats_bio(EX_CLASS_ITEM,lh,out) -# define lh_EX_CLASS_ITEM_node_usage_stats_bio(lh,out) \ - LHM_lh_node_usage_stats_bio(EX_CLASS_ITEM,lh,out) -# define lh_EX_CLASS_ITEM_stats_bio(lh,out) \ - LHM_lh_stats_bio(EX_CLASS_ITEM,lh,out) -# define lh_EX_CLASS_ITEM_free(lh) LHM_lh_free(EX_CLASS_ITEM,lh) -# define lh_FUNCTION_new() LHM_lh_new(FUNCTION,function) -# define lh_FUNCTION_insert(lh,inst) LHM_lh_insert(FUNCTION,lh,inst) -# define lh_FUNCTION_retrieve(lh,inst) LHM_lh_retrieve(FUNCTION,lh,inst) -# define lh_FUNCTION_delete(lh,inst) LHM_lh_delete(FUNCTION,lh,inst) -# define lh_FUNCTION_doall(lh,fn) LHM_lh_doall(FUNCTION,lh,fn) -# define lh_FUNCTION_doall_arg(lh,fn,arg_type,arg) \ - LHM_lh_doall_arg(FUNCTION,lh,fn,arg_type,arg) -# define lh_FUNCTION_error(lh) LHM_lh_error(FUNCTION,lh) -# define lh_FUNCTION_num_items(lh) LHM_lh_num_items(FUNCTION,lh) -# define lh_FUNCTION_down_load(lh) LHM_lh_down_load(FUNCTION,lh) -# define lh_FUNCTION_node_stats_bio(lh,out) \ - LHM_lh_node_stats_bio(FUNCTION,lh,out) -# define lh_FUNCTION_node_usage_stats_bio(lh,out) \ - LHM_lh_node_usage_stats_bio(FUNCTION,lh,out) -# define lh_FUNCTION_stats_bio(lh,out) \ - LHM_lh_stats_bio(FUNCTION,lh,out) -# define lh_FUNCTION_free(lh) LHM_lh_free(FUNCTION,lh) -# define lh_MEM_new() LHM_lh_new(MEM,mem) -# define lh_MEM_insert(lh,inst) LHM_lh_insert(MEM,lh,inst) -# define lh_MEM_retrieve(lh,inst) LHM_lh_retrieve(MEM,lh,inst) -# define lh_MEM_delete(lh,inst) LHM_lh_delete(MEM,lh,inst) -# define lh_MEM_doall(lh,fn) LHM_lh_doall(MEM,lh,fn) -# define lh_MEM_doall_arg(lh,fn,arg_type,arg) \ - LHM_lh_doall_arg(MEM,lh,fn,arg_type,arg) -# define lh_MEM_error(lh) LHM_lh_error(MEM,lh) -# define lh_MEM_num_items(lh) LHM_lh_num_items(MEM,lh) -# define lh_MEM_down_load(lh) LHM_lh_down_load(MEM,lh) -# define lh_MEM_node_stats_bio(lh,out) \ - LHM_lh_node_stats_bio(MEM,lh,out) -# define lh_MEM_node_usage_stats_bio(lh,out) \ - LHM_lh_node_usage_stats_bio(MEM,lh,out) -# define lh_MEM_stats_bio(lh,out) \ - LHM_lh_stats_bio(MEM,lh,out) -# define lh_MEM_free(lh) LHM_lh_free(MEM,lh) -# define lh_OBJ_NAME_new() LHM_lh_new(OBJ_NAME,obj_name) -# define lh_OBJ_NAME_insert(lh,inst) LHM_lh_insert(OBJ_NAME,lh,inst) -# define lh_OBJ_NAME_retrieve(lh,inst) LHM_lh_retrieve(OBJ_NAME,lh,inst) -# define lh_OBJ_NAME_delete(lh,inst) LHM_lh_delete(OBJ_NAME,lh,inst) -# define lh_OBJ_NAME_doall(lh,fn) LHM_lh_doall(OBJ_NAME,lh,fn) -# define lh_OBJ_NAME_doall_arg(lh,fn,arg_type,arg) \ - LHM_lh_doall_arg(OBJ_NAME,lh,fn,arg_type,arg) -# define lh_OBJ_NAME_error(lh) LHM_lh_error(OBJ_NAME,lh) -# define lh_OBJ_NAME_num_items(lh) LHM_lh_num_items(OBJ_NAME,lh) -# define lh_OBJ_NAME_down_load(lh) LHM_lh_down_load(OBJ_NAME,lh) -# define lh_OBJ_NAME_node_stats_bio(lh,out) \ - LHM_lh_node_stats_bio(OBJ_NAME,lh,out) -# define lh_OBJ_NAME_node_usage_stats_bio(lh,out) \ - LHM_lh_node_usage_stats_bio(OBJ_NAME,lh,out) -# define lh_OBJ_NAME_stats_bio(lh,out) \ - LHM_lh_stats_bio(OBJ_NAME,lh,out) -# define lh_OBJ_NAME_free(lh) LHM_lh_free(OBJ_NAME,lh) -# define lh_OPENSSL_CSTRING_new() LHM_lh_new(OPENSSL_CSTRING,openssl_cstring) -# define lh_OPENSSL_CSTRING_insert(lh,inst) LHM_lh_insert(OPENSSL_CSTRING,lh,inst) -# define lh_OPENSSL_CSTRING_retrieve(lh,inst) LHM_lh_retrieve(OPENSSL_CSTRING,lh,inst) -# define lh_OPENSSL_CSTRING_delete(lh,inst) LHM_lh_delete(OPENSSL_CSTRING,lh,inst) -# define lh_OPENSSL_CSTRING_doall(lh,fn) LHM_lh_doall(OPENSSL_CSTRING,lh,fn) -# define lh_OPENSSL_CSTRING_doall_arg(lh,fn,arg_type,arg) \ - LHM_lh_doall_arg(OPENSSL_CSTRING,lh,fn,arg_type,arg) -# define lh_OPENSSL_CSTRING_error(lh) LHM_lh_error(OPENSSL_CSTRING,lh) -# define lh_OPENSSL_CSTRING_num_items(lh) LHM_lh_num_items(OPENSSL_CSTRING,lh) -# define lh_OPENSSL_CSTRING_down_load(lh) LHM_lh_down_load(OPENSSL_CSTRING,lh) -# define lh_OPENSSL_CSTRING_node_stats_bio(lh,out) \ - LHM_lh_node_stats_bio(OPENSSL_CSTRING,lh,out) -# define lh_OPENSSL_CSTRING_node_usage_stats_bio(lh,out) \ - LHM_lh_node_usage_stats_bio(OPENSSL_CSTRING,lh,out) -# define lh_OPENSSL_CSTRING_stats_bio(lh,out) \ - LHM_lh_stats_bio(OPENSSL_CSTRING,lh,out) -# define lh_OPENSSL_CSTRING_free(lh) LHM_lh_free(OPENSSL_CSTRING,lh) -# define lh_OPENSSL_STRING_new() LHM_lh_new(OPENSSL_STRING,openssl_string) -# define lh_OPENSSL_STRING_insert(lh,inst) LHM_lh_insert(OPENSSL_STRING,lh,inst) -# define lh_OPENSSL_STRING_retrieve(lh,inst) LHM_lh_retrieve(OPENSSL_STRING,lh,inst) -# define lh_OPENSSL_STRING_delete(lh,inst) LHM_lh_delete(OPENSSL_STRING,lh,inst) -# define lh_OPENSSL_STRING_doall(lh,fn) LHM_lh_doall(OPENSSL_STRING,lh,fn) -# define lh_OPENSSL_STRING_doall_arg(lh,fn,arg_type,arg) \ - LHM_lh_doall_arg(OPENSSL_STRING,lh,fn,arg_type,arg) -# define lh_OPENSSL_STRING_error(lh) LHM_lh_error(OPENSSL_STRING,lh) -# define lh_OPENSSL_STRING_num_items(lh) LHM_lh_num_items(OPENSSL_STRING,lh) -# define lh_OPENSSL_STRING_down_load(lh) LHM_lh_down_load(OPENSSL_STRING,lh) -# define lh_OPENSSL_STRING_node_stats_bio(lh,out) \ - LHM_lh_node_stats_bio(OPENSSL_STRING,lh,out) -# define lh_OPENSSL_STRING_node_usage_stats_bio(lh,out) \ - LHM_lh_node_usage_stats_bio(OPENSSL_STRING,lh,out) -# define lh_OPENSSL_STRING_stats_bio(lh,out) \ - LHM_lh_stats_bio(OPENSSL_STRING,lh,out) -# define lh_OPENSSL_STRING_free(lh) LHM_lh_free(OPENSSL_STRING,lh) -# define lh_SSL_SESSION_new() LHM_lh_new(SSL_SESSION,ssl_session) -# define lh_SSL_SESSION_insert(lh,inst) LHM_lh_insert(SSL_SESSION,lh,inst) -# define lh_SSL_SESSION_retrieve(lh,inst) LHM_lh_retrieve(SSL_SESSION,lh,inst) -# define lh_SSL_SESSION_delete(lh,inst) LHM_lh_delete(SSL_SESSION,lh,inst) -# define lh_SSL_SESSION_doall(lh,fn) LHM_lh_doall(SSL_SESSION,lh,fn) -# define lh_SSL_SESSION_doall_arg(lh,fn,arg_type,arg) \ - LHM_lh_doall_arg(SSL_SESSION,lh,fn,arg_type,arg) -# define lh_SSL_SESSION_error(lh) LHM_lh_error(SSL_SESSION,lh) -# define lh_SSL_SESSION_num_items(lh) LHM_lh_num_items(SSL_SESSION,lh) -# define lh_SSL_SESSION_down_load(lh) LHM_lh_down_load(SSL_SESSION,lh) -# define lh_SSL_SESSION_node_stats_bio(lh,out) \ - LHM_lh_node_stats_bio(SSL_SESSION,lh,out) -# define lh_SSL_SESSION_node_usage_stats_bio(lh,out) \ - LHM_lh_node_usage_stats_bio(SSL_SESSION,lh,out) -# define lh_SSL_SESSION_stats_bio(lh,out) \ - LHM_lh_stats_bio(SSL_SESSION,lh,out) -# define lh_SSL_SESSION_free(lh) LHM_lh_free(SSL_SESSION,lh) -#ifdef __cplusplus -} -#endif -#endif /* !defined HEADER_SAFESTACK_H */ diff --git a/ext/openssl-win32/inc32/openssl/sha.h b/ext/openssl-win32/inc32/openssl/sha.h deleted file mode 100644 index e5169e4f..00000000 --- a/ext/openssl-win32/inc32/openssl/sha.h +++ /dev/null @@ -1,214 +0,0 @@ -/* crypto/sha/sha.h */ -/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) - * All rights reserved. - * - * This package is an SSL implementation written - * by Eric Young (eay@cryptsoft.com). - * The implementation was written so as to conform with Netscapes SSL. - * - * This library is free for commercial and non-commercial use as long as - * the following conditions are aheared to. The following conditions - * apply to all code found in this distribution, be it the RC4, RSA, - * lhash, DES, etc., code; not just the SSL code. The SSL documentation - * included with this distribution is covered by the same copyright terms - * except that the holder is Tim Hudson (tjh@cryptsoft.com). - * - * Copyright remains Eric Young's, and as such any Copyright notices in - * the code are not to be removed. - * If this package is used in a product, Eric Young should be given attribution - * as the author of the parts of the library used. - * This can be in the form of a textual message at program startup or - * in documentation (online or textual) provided with the package. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * "This product includes cryptographic software written by - * Eric Young (eay@cryptsoft.com)" - * The word 'cryptographic' can be left out if the rouines from the library - * being used are not cryptographic related :-). - * 4. If you include any Windows specific code (or a derivative thereof) from - * the apps directory (application code) you must include an acknowledgement: - * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" - * - * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * The licence and distribution terms for any publically available version or - * derivative of this code cannot be changed. i.e. this code cannot simply be - * copied and put under another distribution licence - * [including the GNU Public Licence.] - */ - -#ifndef HEADER_SHA_H -# define HEADER_SHA_H - -# include -# include - -#ifdef __cplusplus -extern "C" { -#endif - -# if defined(OPENSSL_NO_SHA) || (defined(OPENSSL_NO_SHA0) && defined(OPENSSL_NO_SHA1)) -# error SHA is disabled. -# endif - -# if defined(OPENSSL_FIPS) -# define FIPS_SHA_SIZE_T size_t -# endif - -/*- - * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - * ! SHA_LONG has to be at least 32 bits wide. If it's wider, then ! - * ! SHA_LONG_LOG2 has to be defined along. ! - * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - */ - -# if defined(__LP32__) -# define SHA_LONG unsigned long -# elif defined(OPENSSL_SYS_CRAY) || defined(__ILP64__) -# define SHA_LONG unsigned long -# define SHA_LONG_LOG2 3 -# else -# define SHA_LONG unsigned int -# endif - -# define SHA_LBLOCK 16 -# define SHA_CBLOCK (SHA_LBLOCK*4)/* SHA treats input data as a - * contiguous array of 32 bit wide - * big-endian values. */ -# define SHA_LAST_BLOCK (SHA_CBLOCK-8) -# define SHA_DIGEST_LENGTH 20 - -typedef struct SHAstate_st { - SHA_LONG h0, h1, h2, h3, h4; - SHA_LONG Nl, Nh; - SHA_LONG data[SHA_LBLOCK]; - unsigned int num; -} SHA_CTX; - -# ifndef OPENSSL_NO_SHA0 -# ifdef OPENSSL_FIPS -int private_SHA_Init(SHA_CTX *c); -# endif -int SHA_Init(SHA_CTX *c); -int SHA_Update(SHA_CTX *c, const void *data, size_t len); -int SHA_Final(unsigned char *md, SHA_CTX *c); -unsigned char *SHA(const unsigned char *d, size_t n, unsigned char *md); -void SHA_Transform(SHA_CTX *c, const unsigned char *data); -# endif -# ifndef OPENSSL_NO_SHA1 -# ifdef OPENSSL_FIPS -int private_SHA1_Init(SHA_CTX *c); -# endif -int SHA1_Init(SHA_CTX *c); -int SHA1_Update(SHA_CTX *c, const void *data, size_t len); -int SHA1_Final(unsigned char *md, SHA_CTX *c); -unsigned char *SHA1(const unsigned char *d, size_t n, unsigned char *md); -void SHA1_Transform(SHA_CTX *c, const unsigned char *data); -# endif - -# define SHA256_CBLOCK (SHA_LBLOCK*4)/* SHA-256 treats input data as a - * contiguous array of 32 bit wide - * big-endian values. */ -# define SHA224_DIGEST_LENGTH 28 -# define SHA256_DIGEST_LENGTH 32 - -typedef struct SHA256state_st { - SHA_LONG h[8]; - SHA_LONG Nl, Nh; - SHA_LONG data[SHA_LBLOCK]; - unsigned int num, md_len; -} SHA256_CTX; - -# ifndef OPENSSL_NO_SHA256 -# ifdef OPENSSL_FIPS -int private_SHA224_Init(SHA256_CTX *c); -int private_SHA256_Init(SHA256_CTX *c); -# endif -int SHA224_Init(SHA256_CTX *c); -int SHA224_Update(SHA256_CTX *c, const void *data, size_t len); -int SHA224_Final(unsigned char *md, SHA256_CTX *c); -unsigned char *SHA224(const unsigned char *d, size_t n, unsigned char *md); -int SHA256_Init(SHA256_CTX *c); -int SHA256_Update(SHA256_CTX *c, const void *data, size_t len); -int SHA256_Final(unsigned char *md, SHA256_CTX *c); -unsigned char *SHA256(const unsigned char *d, size_t n, unsigned char *md); -void SHA256_Transform(SHA256_CTX *c, const unsigned char *data); -# endif - -# define SHA384_DIGEST_LENGTH 48 -# define SHA512_DIGEST_LENGTH 64 - -# ifndef OPENSSL_NO_SHA512 -/* - * Unlike 32-bit digest algorithms, SHA-512 *relies* on SHA_LONG64 - * being exactly 64-bit wide. See Implementation Notes in sha512.c - * for further details. - */ -/* - * SHA-512 treats input data as a - * contiguous array of 64 bit - * wide big-endian values. - */ -# define SHA512_CBLOCK (SHA_LBLOCK*8) -# if (defined(_WIN32) || defined(_WIN64)) && !defined(__MINGW32__) -# define SHA_LONG64 unsigned __int64 -# define U64(C) C##UI64 -# elif defined(__arch64__) -# define SHA_LONG64 unsigned long -# define U64(C) C##UL -# else -# define SHA_LONG64 unsigned long long -# define U64(C) C##ULL -# endif - -typedef struct SHA512state_st { - SHA_LONG64 h[8]; - SHA_LONG64 Nl, Nh; - union { - SHA_LONG64 d[SHA_LBLOCK]; - unsigned char p[SHA512_CBLOCK]; - } u; - unsigned int num, md_len; -} SHA512_CTX; -# endif - -# ifndef OPENSSL_NO_SHA512 -# ifdef OPENSSL_FIPS -int private_SHA384_Init(SHA512_CTX *c); -int private_SHA512_Init(SHA512_CTX *c); -# endif -int SHA384_Init(SHA512_CTX *c); -int SHA384_Update(SHA512_CTX *c, const void *data, size_t len); -int SHA384_Final(unsigned char *md, SHA512_CTX *c); -unsigned char *SHA384(const unsigned char *d, size_t n, unsigned char *md); -int SHA512_Init(SHA512_CTX *c); -int SHA512_Update(SHA512_CTX *c, const void *data, size_t len); -int SHA512_Final(unsigned char *md, SHA512_CTX *c); -unsigned char *SHA512(const unsigned char *d, size_t n, unsigned char *md); -void SHA512_Transform(SHA512_CTX *c, const unsigned char *data); -# endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/ext/openssl-win32/inc32/openssl/srtp.h b/ext/openssl-win32/inc32/openssl/srtp.h deleted file mode 100644 index 2279c32b..00000000 --- a/ext/openssl-win32/inc32/openssl/srtp.h +++ /dev/null @@ -1,147 +0,0 @@ -/* ssl/srtp.h */ -/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) - * All rights reserved. - * - * This package is an SSL implementation written - * by Eric Young (eay@cryptsoft.com). - * The implementation was written so as to conform with Netscapes SSL. - * - * This library is free for commercial and non-commercial use as long as - * the following conditions are aheared to. The following conditions - * apply to all code found in this distribution, be it the RC4, RSA, - * lhash, DES, etc., code; not just the SSL code. The SSL documentation - * included with this distribution is covered by the same copyright terms - * except that the holder is Tim Hudson (tjh@cryptsoft.com). - * - * Copyright remains Eric Young's, and as such any Copyright notices in - * the code are not to be removed. - * If this package is used in a product, Eric Young should be given attribution - * as the author of the parts of the library used. - * This can be in the form of a textual message at program startup or - * in documentation (online or textual) provided with the package. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * "This product includes cryptographic software written by - * Eric Young (eay@cryptsoft.com)" - * The word 'cryptographic' can be left out if the rouines from the library - * being used are not cryptographic related :-). - * 4. If you include any Windows specific code (or a derivative thereof) from - * the apps directory (application code) you must include an acknowledgement: - * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" - * - * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * The licence and distribution terms for any publically available version or - * derivative of this code cannot be changed. i.e. this code cannot simply be - * copied and put under another distribution licence - * [including the GNU Public Licence.] - */ -/* ==================================================================== - * Copyright (c) 1998-2006 The OpenSSL Project. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. All advertising materials mentioning features or use of this - * software must display the following acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" - * - * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * openssl-core@openssl.org. - * - * 5. Products derived from this software may not be called "OpenSSL" - * nor may "OpenSSL" appear in their names without prior written - * permission of the OpenSSL Project. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit (http://www.openssl.org/)" - * - * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY - * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * ==================================================================== - * - * This product includes cryptographic software written by Eric Young - * (eay@cryptsoft.com). This product includes software written by Tim - * Hudson (tjh@cryptsoft.com). - * - */ -/* - * DTLS code by Eric Rescorla - * - * Copyright (C) 2006, Network Resonance, Inc. Copyright (C) 2011, RTFM, Inc. - */ - -#ifndef HEADER_D1_SRTP_H -# define HEADER_D1_SRTP_H - -# include - -#ifdef __cplusplus -extern "C" { -#endif - -# define SRTP_AES128_CM_SHA1_80 0x0001 -# define SRTP_AES128_CM_SHA1_32 0x0002 -# define SRTP_AES128_F8_SHA1_80 0x0003 -# define SRTP_AES128_F8_SHA1_32 0x0004 -# define SRTP_NULL_SHA1_80 0x0005 -# define SRTP_NULL_SHA1_32 0x0006 - -# ifndef OPENSSL_NO_SRTP - -int SSL_CTX_set_tlsext_use_srtp(SSL_CTX *ctx, const char *profiles); -int SSL_set_tlsext_use_srtp(SSL *ctx, const char *profiles); - -STACK_OF(SRTP_PROTECTION_PROFILE) *SSL_get_srtp_profiles(SSL *ssl); -SRTP_PROTECTION_PROFILE *SSL_get_selected_srtp_profile(SSL *s); - -# endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/ext/openssl-win32/inc32/openssl/ssl.h b/ext/openssl-win32/inc32/openssl/ssl.h deleted file mode 100644 index 2b0f6628..00000000 --- a/ext/openssl-win32/inc32/openssl/ssl.h +++ /dev/null @@ -1,3159 +0,0 @@ -/* ssl/ssl.h */ -/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) - * All rights reserved. - * - * This package is an SSL implementation written - * by Eric Young (eay@cryptsoft.com). - * The implementation was written so as to conform with Netscapes SSL. - * - * This library is free for commercial and non-commercial use as long as - * the following conditions are aheared to. The following conditions - * apply to all code found in this distribution, be it the RC4, RSA, - * lhash, DES, etc., code; not just the SSL code. The SSL documentation - * included with this distribution is covered by the same copyright terms - * except that the holder is Tim Hudson (tjh@cryptsoft.com). - * - * Copyright remains Eric Young's, and as such any Copyright notices in - * the code are not to be removed. - * If this package is used in a product, Eric Young should be given attribution - * as the author of the parts of the library used. - * This can be in the form of a textual message at program startup or - * in documentation (online or textual) provided with the package. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * "This product includes cryptographic software written by - * Eric Young (eay@cryptsoft.com)" - * The word 'cryptographic' can be left out if the rouines from the library - * being used are not cryptographic related :-). - * 4. If you include any Windows specific code (or a derivative thereof) from - * the apps directory (application code) you must include an acknowledgement: - * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" - * - * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * The licence and distribution terms for any publically available version or - * derivative of this code cannot be changed. i.e. this code cannot simply be - * copied and put under another distribution licence - * [including the GNU Public Licence.] - */ -/* ==================================================================== - * Copyright (c) 1998-2007 The OpenSSL Project. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. All advertising materials mentioning features or use of this - * software must display the following acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" - * - * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * openssl-core@openssl.org. - * - * 5. Products derived from this software may not be called "OpenSSL" - * nor may "OpenSSL" appear in their names without prior written - * permission of the OpenSSL Project. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit (http://www.openssl.org/)" - * - * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY - * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * ==================================================================== - * - * This product includes cryptographic software written by Eric Young - * (eay@cryptsoft.com). This product includes software written by Tim - * Hudson (tjh@cryptsoft.com). - * - */ -/* ==================================================================== - * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED. - * ECC cipher suite support in OpenSSL originally developed by - * SUN MICROSYSTEMS, INC., and contributed to the OpenSSL project. - */ -/* ==================================================================== - * Copyright 2005 Nokia. All rights reserved. - * - * The portions of the attached software ("Contribution") is developed by - * Nokia Corporation and is licensed pursuant to the OpenSSL open source - * license. - * - * The Contribution, originally written by Mika Kousa and Pasi Eronen of - * Nokia Corporation, consists of the "PSK" (Pre-Shared Key) ciphersuites - * support (see RFC 4279) to OpenSSL. - * - * No patent licenses or other rights except those expressly stated in - * the OpenSSL open source license shall be deemed granted or received - * expressly, by implication, estoppel, or otherwise. - * - * No assurances are provided by Nokia that the Contribution does not - * infringe the patent or other intellectual property rights of any third - * party or that the license provides you with all the necessary rights - * to make use of the Contribution. - * - * THE SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. IN - * ADDITION TO THE DISCLAIMERS INCLUDED IN THE LICENSE, NOKIA - * SPECIFICALLY DISCLAIMS ANY LIABILITY FOR CLAIMS BROUGHT BY YOU OR ANY - * OTHER ENTITY BASED ON INFRINGEMENT OF INTELLECTUAL PROPERTY RIGHTS OR - * OTHERWISE. - */ - -#ifndef HEADER_SSL_H -# define HEADER_SSL_H - -# include - -# ifndef OPENSSL_NO_COMP -# include -# endif -# ifndef OPENSSL_NO_BIO -# include -# endif -# ifndef OPENSSL_NO_DEPRECATED -# ifndef OPENSSL_NO_X509 -# include -# endif -# include -# include -# include -# endif -# include -# include - -# include -# include -# include - -#ifdef __cplusplus -extern "C" { -#endif - -/* SSLeay version number for ASN.1 encoding of the session information */ -/*- - * Version 0 - initial version - * Version 1 - added the optional peer certificate - */ -# define SSL_SESSION_ASN1_VERSION 0x0001 - -/* text strings for the ciphers */ -# define SSL_TXT_NULL_WITH_MD5 SSL2_TXT_NULL_WITH_MD5 -# define SSL_TXT_RC4_128_WITH_MD5 SSL2_TXT_RC4_128_WITH_MD5 -# define SSL_TXT_RC4_128_EXPORT40_WITH_MD5 SSL2_TXT_RC4_128_EXPORT40_WITH_MD5 -# define SSL_TXT_RC2_128_CBC_WITH_MD5 SSL2_TXT_RC2_128_CBC_WITH_MD5 -# define SSL_TXT_RC2_128_CBC_EXPORT40_WITH_MD5 SSL2_TXT_RC2_128_CBC_EXPORT40_WITH_MD5 -# define SSL_TXT_IDEA_128_CBC_WITH_MD5 SSL2_TXT_IDEA_128_CBC_WITH_MD5 -# define SSL_TXT_DES_64_CBC_WITH_MD5 SSL2_TXT_DES_64_CBC_WITH_MD5 -# define SSL_TXT_DES_64_CBC_WITH_SHA SSL2_TXT_DES_64_CBC_WITH_SHA -# define SSL_TXT_DES_192_EDE3_CBC_WITH_MD5 SSL2_TXT_DES_192_EDE3_CBC_WITH_MD5 -# define SSL_TXT_DES_192_EDE3_CBC_WITH_SHA SSL2_TXT_DES_192_EDE3_CBC_WITH_SHA - -/* - * VRS Additional Kerberos5 entries - */ -# define SSL_TXT_KRB5_DES_64_CBC_SHA SSL3_TXT_KRB5_DES_64_CBC_SHA -# define SSL_TXT_KRB5_DES_192_CBC3_SHA SSL3_TXT_KRB5_DES_192_CBC3_SHA -# define SSL_TXT_KRB5_RC4_128_SHA SSL3_TXT_KRB5_RC4_128_SHA -# define SSL_TXT_KRB5_IDEA_128_CBC_SHA SSL3_TXT_KRB5_IDEA_128_CBC_SHA -# define SSL_TXT_KRB5_DES_64_CBC_MD5 SSL3_TXT_KRB5_DES_64_CBC_MD5 -# define SSL_TXT_KRB5_DES_192_CBC3_MD5 SSL3_TXT_KRB5_DES_192_CBC3_MD5 -# define SSL_TXT_KRB5_RC4_128_MD5 SSL3_TXT_KRB5_RC4_128_MD5 -# define SSL_TXT_KRB5_IDEA_128_CBC_MD5 SSL3_TXT_KRB5_IDEA_128_CBC_MD5 - -# define SSL_TXT_KRB5_DES_40_CBC_SHA SSL3_TXT_KRB5_DES_40_CBC_SHA -# define SSL_TXT_KRB5_RC2_40_CBC_SHA SSL3_TXT_KRB5_RC2_40_CBC_SHA -# define SSL_TXT_KRB5_RC4_40_SHA SSL3_TXT_KRB5_RC4_40_SHA -# define SSL_TXT_KRB5_DES_40_CBC_MD5 SSL3_TXT_KRB5_DES_40_CBC_MD5 -# define SSL_TXT_KRB5_RC2_40_CBC_MD5 SSL3_TXT_KRB5_RC2_40_CBC_MD5 -# define SSL_TXT_KRB5_RC4_40_MD5 SSL3_TXT_KRB5_RC4_40_MD5 - -# define SSL_TXT_KRB5_DES_40_CBC_SHA SSL3_TXT_KRB5_DES_40_CBC_SHA -# define SSL_TXT_KRB5_DES_40_CBC_MD5 SSL3_TXT_KRB5_DES_40_CBC_MD5 -# define SSL_TXT_KRB5_DES_64_CBC_SHA SSL3_TXT_KRB5_DES_64_CBC_SHA -# define SSL_TXT_KRB5_DES_64_CBC_MD5 SSL3_TXT_KRB5_DES_64_CBC_MD5 -# define SSL_TXT_KRB5_DES_192_CBC3_SHA SSL3_TXT_KRB5_DES_192_CBC3_SHA -# define SSL_TXT_KRB5_DES_192_CBC3_MD5 SSL3_TXT_KRB5_DES_192_CBC3_MD5 -# define SSL_MAX_KRB5_PRINCIPAL_LENGTH 256 - -# define SSL_MAX_SSL_SESSION_ID_LENGTH 32 -# define SSL_MAX_SID_CTX_LENGTH 32 - -# define SSL_MIN_RSA_MODULUS_LENGTH_IN_BYTES (512/8) -# define SSL_MAX_KEY_ARG_LENGTH 8 -# define SSL_MAX_MASTER_KEY_LENGTH 48 - -/* These are used to specify which ciphers to use and not to use */ - -# define SSL_TXT_EXP40 "EXPORT40" -# define SSL_TXT_EXP56 "EXPORT56" -# define SSL_TXT_LOW "LOW" -# define SSL_TXT_MEDIUM "MEDIUM" -# define SSL_TXT_HIGH "HIGH" -# define SSL_TXT_FIPS "FIPS" - -# define SSL_TXT_kFZA "kFZA"/* unused! */ -# define SSL_TXT_aFZA "aFZA"/* unused! */ -# define SSL_TXT_eFZA "eFZA"/* unused! */ -# define SSL_TXT_FZA "FZA"/* unused! */ - -# define SSL_TXT_aNULL "aNULL" -# define SSL_TXT_eNULL "eNULL" -# define SSL_TXT_NULL "NULL" - -# define SSL_TXT_kRSA "kRSA" -# define SSL_TXT_kDHr "kDHr" -# define SSL_TXT_kDHd "kDHd" -# define SSL_TXT_kDH "kDH" -# define SSL_TXT_kEDH "kEDH" -# define SSL_TXT_kDHE "kDHE"/* alias for kEDH */ -# define SSL_TXT_kKRB5 "kKRB5" -# define SSL_TXT_kECDHr "kECDHr" -# define SSL_TXT_kECDHe "kECDHe" -# define SSL_TXT_kECDH "kECDH" -# define SSL_TXT_kEECDH "kEECDH" -# define SSL_TXT_kECDHE "kECDHE"/* alias for kEECDH */ -# define SSL_TXT_kPSK "kPSK" -# define SSL_TXT_kGOST "kGOST" -# define SSL_TXT_kSRP "kSRP" - -# define SSL_TXT_aRSA "aRSA" -# define SSL_TXT_aDSS "aDSS" -# define SSL_TXT_aDH "aDH" -# define SSL_TXT_aECDH "aECDH" -# define SSL_TXT_aKRB5 "aKRB5" -# define SSL_TXT_aECDSA "aECDSA" -# define SSL_TXT_aPSK "aPSK" -# define SSL_TXT_aGOST94 "aGOST94" -# define SSL_TXT_aGOST01 "aGOST01" -# define SSL_TXT_aGOST "aGOST" -# define SSL_TXT_aSRP "aSRP" - -# define SSL_TXT_DSS "DSS" -# define SSL_TXT_DH "DH" -# define SSL_TXT_EDH "EDH"/* same as "kEDH:-ADH" */ -# define SSL_TXT_DHE "DHE"/* alias for EDH */ -# define SSL_TXT_ADH "ADH" -# define SSL_TXT_RSA "RSA" -# define SSL_TXT_ECDH "ECDH" -# define SSL_TXT_EECDH "EECDH"/* same as "kEECDH:-AECDH" */ -# define SSL_TXT_ECDHE "ECDHE"/* alias for ECDHE" */ -# define SSL_TXT_AECDH "AECDH" -# define SSL_TXT_ECDSA "ECDSA" -# define SSL_TXT_KRB5 "KRB5" -# define SSL_TXT_PSK "PSK" -# define SSL_TXT_SRP "SRP" - -# define SSL_TXT_DES "DES" -# define SSL_TXT_3DES "3DES" -# define SSL_TXT_RC4 "RC4" -# define SSL_TXT_RC2 "RC2" -# define SSL_TXT_IDEA "IDEA" -# define SSL_TXT_SEED "SEED" -# define SSL_TXT_AES128 "AES128" -# define SSL_TXT_AES256 "AES256" -# define SSL_TXT_AES "AES" -# define SSL_TXT_AES_GCM "AESGCM" -# define SSL_TXT_CAMELLIA128 "CAMELLIA128" -# define SSL_TXT_CAMELLIA256 "CAMELLIA256" -# define SSL_TXT_CAMELLIA "CAMELLIA" - -# define SSL_TXT_MD5 "MD5" -# define SSL_TXT_SHA1 "SHA1" -# define SSL_TXT_SHA "SHA"/* same as "SHA1" */ -# define SSL_TXT_GOST94 "GOST94" -# define SSL_TXT_GOST89MAC "GOST89MAC" -# define SSL_TXT_SHA256 "SHA256" -# define SSL_TXT_SHA384 "SHA384" - -# define SSL_TXT_SSLV2 "SSLv2" -# define SSL_TXT_SSLV3 "SSLv3" -# define SSL_TXT_TLSV1 "TLSv1" -# define SSL_TXT_TLSV1_1 "TLSv1.1" -# define SSL_TXT_TLSV1_2 "TLSv1.2" - -# define SSL_TXT_EXP "EXP" -# define SSL_TXT_EXPORT "EXPORT" - -# define SSL_TXT_ALL "ALL" - -/*- - * COMPLEMENTOF* definitions. These identifiers are used to (de-select) - * ciphers normally not being used. - * Example: "RC4" will activate all ciphers using RC4 including ciphers - * without authentication, which would normally disabled by DEFAULT (due - * the "!ADH" being part of default). Therefore "RC4:!COMPLEMENTOFDEFAULT" - * will make sure that it is also disabled in the specific selection. - * COMPLEMENTOF* identifiers are portable between version, as adjustments - * to the default cipher setup will also be included here. - * - * COMPLEMENTOFDEFAULT does not experience the same special treatment that - * DEFAULT gets, as only selection is being done and no sorting as needed - * for DEFAULT. - */ -# define SSL_TXT_CMPALL "COMPLEMENTOFALL" -# define SSL_TXT_CMPDEF "COMPLEMENTOFDEFAULT" - -/* - * The following cipher list is used by default. It also is substituted when - * an application-defined cipher list string starts with 'DEFAULT'. - */ -# define SSL_DEFAULT_CIPHER_LIST "ALL:!aNULL:!eNULL:!SSLv2" -/* - * As of OpenSSL 1.0.0, ssl_create_cipher_list() in ssl/ssl_ciph.c always - * starts with a reasonable order, and all we have to do for DEFAULT is - * throwing out anonymous and unencrypted ciphersuites! (The latter are not - * actually enabled by ALL, but "ALL:RSA" would enable some of them.) - */ - -/* Used in SSL_set_shutdown()/SSL_get_shutdown(); */ -# define SSL_SENT_SHUTDOWN 1 -# define SSL_RECEIVED_SHUTDOWN 2 - -#ifdef __cplusplus -} -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -# if (defined(OPENSSL_NO_RSA) || defined(OPENSSL_NO_MD5)) && !defined(OPENSSL_NO_SSL2) -# define OPENSSL_NO_SSL2 -# endif - -# define SSL_FILETYPE_ASN1 X509_FILETYPE_ASN1 -# define SSL_FILETYPE_PEM X509_FILETYPE_PEM - -/* - * This is needed to stop compilers complaining about the 'struct ssl_st *' - * function parameters used to prototype callbacks in SSL_CTX. - */ -typedef struct ssl_st *ssl_crock_st; -typedef struct tls_session_ticket_ext_st TLS_SESSION_TICKET_EXT; -typedef struct ssl_method_st SSL_METHOD; -typedef struct ssl_cipher_st SSL_CIPHER; -typedef struct ssl_session_st SSL_SESSION; -typedef struct tls_sigalgs_st TLS_SIGALGS; -typedef struct ssl_conf_ctx_st SSL_CONF_CTX; - -DECLARE_STACK_OF(SSL_CIPHER) - -/* SRTP protection profiles for use with the use_srtp extension (RFC 5764)*/ -typedef struct srtp_protection_profile_st { - const char *name; - unsigned long id; -} SRTP_PROTECTION_PROFILE; - -DECLARE_STACK_OF(SRTP_PROTECTION_PROFILE) - -typedef int (*tls_session_ticket_ext_cb_fn) (SSL *s, - const unsigned char *data, - int len, void *arg); -typedef int (*tls_session_secret_cb_fn) (SSL *s, void *secret, - int *secret_len, - STACK_OF(SSL_CIPHER) *peer_ciphers, - SSL_CIPHER **cipher, void *arg); - -# ifndef OPENSSL_NO_TLSEXT - -/* Typedefs for handling custom extensions */ - -typedef int (*custom_ext_add_cb) (SSL *s, unsigned int ext_type, - const unsigned char **out, - size_t *outlen, int *al, void *add_arg); - -typedef void (*custom_ext_free_cb) (SSL *s, unsigned int ext_type, - const unsigned char *out, void *add_arg); - -typedef int (*custom_ext_parse_cb) (SSL *s, unsigned int ext_type, - const unsigned char *in, - size_t inlen, int *al, void *parse_arg); - -# endif - -# ifndef OPENSSL_NO_SSL_INTERN - -/* used to hold info on the particular ciphers used */ -struct ssl_cipher_st { - int valid; - const char *name; /* text name */ - unsigned long id; /* id, 4 bytes, first is version */ - /* - * changed in 0.9.9: these four used to be portions of a single value - * 'algorithms' - */ - unsigned long algorithm_mkey; /* key exchange algorithm */ - unsigned long algorithm_auth; /* server authentication */ - unsigned long algorithm_enc; /* symmetric encryption */ - unsigned long algorithm_mac; /* symmetric authentication */ - unsigned long algorithm_ssl; /* (major) protocol version */ - unsigned long algo_strength; /* strength and export flags */ - unsigned long algorithm2; /* Extra flags */ - int strength_bits; /* Number of bits really used */ - int alg_bits; /* Number of bits for algorithm */ -}; - -/* Used to hold functions for SSLv2 or SSLv3/TLSv1 functions */ -struct ssl_method_st { - int version; - int (*ssl_new) (SSL *s); - void (*ssl_clear) (SSL *s); - void (*ssl_free) (SSL *s); - int (*ssl_accept) (SSL *s); - int (*ssl_connect) (SSL *s); - int (*ssl_read) (SSL *s, void *buf, int len); - int (*ssl_peek) (SSL *s, void *buf, int len); - int (*ssl_write) (SSL *s, const void *buf, int len); - int (*ssl_shutdown) (SSL *s); - int (*ssl_renegotiate) (SSL *s); - int (*ssl_renegotiate_check) (SSL *s); - long (*ssl_get_message) (SSL *s, int st1, int stn, int mt, long - max, int *ok); - int (*ssl_read_bytes) (SSL *s, int type, unsigned char *buf, int len, - int peek); - int (*ssl_write_bytes) (SSL *s, int type, const void *buf_, int len); - int (*ssl_dispatch_alert) (SSL *s); - long (*ssl_ctrl) (SSL *s, int cmd, long larg, void *parg); - long (*ssl_ctx_ctrl) (SSL_CTX *ctx, int cmd, long larg, void *parg); - const SSL_CIPHER *(*get_cipher_by_char) (const unsigned char *ptr); - int (*put_cipher_by_char) (const SSL_CIPHER *cipher, unsigned char *ptr); - int (*ssl_pending) (const SSL *s); - int (*num_ciphers) (void); - const SSL_CIPHER *(*get_cipher) (unsigned ncipher); - const struct ssl_method_st *(*get_ssl_method) (int version); - long (*get_timeout) (void); - struct ssl3_enc_method *ssl3_enc; /* Extra SSLv3/TLS stuff */ - int (*ssl_version) (void); - long (*ssl_callback_ctrl) (SSL *s, int cb_id, void (*fp) (void)); - long (*ssl_ctx_callback_ctrl) (SSL_CTX *s, int cb_id, void (*fp) (void)); -}; - -/*- - * Lets make this into an ASN.1 type structure as follows - * SSL_SESSION_ID ::= SEQUENCE { - * version INTEGER, -- structure version number - * SSLversion INTEGER, -- SSL version number - * Cipher OCTET STRING, -- the 3 byte cipher ID - * Session_ID OCTET STRING, -- the Session ID - * Master_key OCTET STRING, -- the master key - * KRB5_principal OCTET STRING -- optional Kerberos principal - * Key_Arg [ 0 ] IMPLICIT OCTET STRING, -- the optional Key argument - * Time [ 1 ] EXPLICIT INTEGER, -- optional Start Time - * Timeout [ 2 ] EXPLICIT INTEGER, -- optional Timeout ins seconds - * Peer [ 3 ] EXPLICIT X509, -- optional Peer Certificate - * Session_ID_context [ 4 ] EXPLICIT OCTET STRING, -- the Session ID context - * Verify_result [ 5 ] EXPLICIT INTEGER, -- X509_V_... code for `Peer' - * HostName [ 6 ] EXPLICIT OCTET STRING, -- optional HostName from servername TLS extension - * PSK_identity_hint [ 7 ] EXPLICIT OCTET STRING, -- optional PSK identity hint - * PSK_identity [ 8 ] EXPLICIT OCTET STRING, -- optional PSK identity - * Ticket_lifetime_hint [9] EXPLICIT INTEGER, -- server's lifetime hint for session ticket - * Ticket [10] EXPLICIT OCTET STRING, -- session ticket (clients only) - * Compression_meth [11] EXPLICIT OCTET STRING, -- optional compression method - * SRP_username [ 12 ] EXPLICIT OCTET STRING -- optional SRP username - * } - * Look in ssl/ssl_asn1.c for more details - * I'm using EXPLICIT tags so I can read the damn things using asn1parse :-). - */ -struct ssl_session_st { - int ssl_version; /* what ssl version session info is being - * kept in here? */ - /* only really used in SSLv2 */ - unsigned int key_arg_length; - unsigned char key_arg[SSL_MAX_KEY_ARG_LENGTH]; - int master_key_length; - unsigned char master_key[SSL_MAX_MASTER_KEY_LENGTH]; - /* session_id - valid? */ - unsigned int session_id_length; - unsigned char session_id[SSL_MAX_SSL_SESSION_ID_LENGTH]; - /* - * this is used to determine whether the session is being reused in the - * appropriate context. It is up to the application to set this, via - * SSL_new - */ - unsigned int sid_ctx_length; - unsigned char sid_ctx[SSL_MAX_SID_CTX_LENGTH]; -# ifndef OPENSSL_NO_KRB5 - unsigned int krb5_client_princ_len; - unsigned char krb5_client_princ[SSL_MAX_KRB5_PRINCIPAL_LENGTH]; -# endif /* OPENSSL_NO_KRB5 */ -# ifndef OPENSSL_NO_PSK - char *psk_identity_hint; - char *psk_identity; -# endif - /* - * Used to indicate that session resumption is not allowed. Applications - * can also set this bit for a new session via not_resumable_session_cb - * to disable session caching and tickets. - */ - int not_resumable; - /* The cert is the certificate used to establish this connection */ - struct sess_cert_st /* SESS_CERT */ *sess_cert; - /* - * This is the cert for the other end. On clients, it will be the same as - * sess_cert->peer_key->x509 (the latter is not enough as sess_cert is - * not retained in the external representation of sessions, see - * ssl_asn1.c). - */ - X509 *peer; - /* - * when app_verify_callback accepts a session where the peer's - * certificate is not ok, we must remember the error for session reuse: - */ - long verify_result; /* only for servers */ - int references; - long timeout; - long time; - unsigned int compress_meth; /* Need to lookup the method */ - const SSL_CIPHER *cipher; - unsigned long cipher_id; /* when ASN.1 loaded, this needs to be used - * to load the 'cipher' structure */ - STACK_OF(SSL_CIPHER) *ciphers; /* shared ciphers? */ - CRYPTO_EX_DATA ex_data; /* application specific data */ - /* - * These are used to make removal of session-ids more efficient and to - * implement a maximum cache size. - */ - struct ssl_session_st *prev, *next; -# ifndef OPENSSL_NO_TLSEXT - char *tlsext_hostname; -# ifndef OPENSSL_NO_EC - size_t tlsext_ecpointformatlist_length; - unsigned char *tlsext_ecpointformatlist; /* peer's list */ - size_t tlsext_ellipticcurvelist_length; - unsigned char *tlsext_ellipticcurvelist; /* peer's list */ -# endif /* OPENSSL_NO_EC */ - /* RFC4507 info */ - unsigned char *tlsext_tick; /* Session ticket */ - size_t tlsext_ticklen; /* Session ticket length */ - long tlsext_tick_lifetime_hint; /* Session lifetime hint in seconds */ -# endif -# ifndef OPENSSL_NO_SRP - char *srp_username; -# endif -}; - -# endif - -# define SSL_OP_MICROSOFT_SESS_ID_BUG 0x00000001L -# define SSL_OP_NETSCAPE_CHALLENGE_BUG 0x00000002L -/* Allow initial connection to servers that don't support RI */ -# define SSL_OP_LEGACY_SERVER_CONNECT 0x00000004L -# define SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG 0x00000008L -# define SSL_OP_TLSEXT_PADDING 0x00000010L -# define SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER 0x00000020L -# define SSL_OP_SAFARI_ECDHE_ECDSA_BUG 0x00000040L -# define SSL_OP_SSLEAY_080_CLIENT_DH_BUG 0x00000080L -# define SSL_OP_TLS_D5_BUG 0x00000100L -# define SSL_OP_TLS_BLOCK_PADDING_BUG 0x00000200L - -/* Hasn't done anything since OpenSSL 0.9.7h, retained for compatibility */ -# define SSL_OP_MSIE_SSLV2_RSA_PADDING 0x0 -/* Refers to ancient SSLREF and SSLv2, retained for compatibility */ -# define SSL_OP_SSLREF2_REUSE_CERT_TYPE_BUG 0x0 - -/* - * Disable SSL 3.0/TLS 1.0 CBC vulnerability workaround that was added in - * OpenSSL 0.9.6d. Usually (depending on the application protocol) the - * workaround is not needed. Unfortunately some broken SSL/TLS - * implementations cannot handle it at all, which is why we include it in - * SSL_OP_ALL. - */ -/* added in 0.9.6e */ -# define SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS 0x00000800L - -/* - * SSL_OP_ALL: various bug workarounds that should be rather harmless. This - * used to be 0x000FFFFFL before 0.9.7. - */ -# define SSL_OP_ALL 0x80000BFFL - -/* DTLS options */ -# define SSL_OP_NO_QUERY_MTU 0x00001000L -/* Turn on Cookie Exchange (on relevant for servers) */ -# define SSL_OP_COOKIE_EXCHANGE 0x00002000L -/* Don't use RFC4507 ticket extension */ -# define SSL_OP_NO_TICKET 0x00004000L -/* Use Cisco's "speshul" version of DTLS_BAD_VER (as client) */ -# define SSL_OP_CISCO_ANYCONNECT 0x00008000L - -/* As server, disallow session resumption on renegotiation */ -# define SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION 0x00010000L -/* Don't use compression even if supported */ -# define SSL_OP_NO_COMPRESSION 0x00020000L -/* Permit unsafe legacy renegotiation */ -# define SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION 0x00040000L -/* If set, always create a new key when using tmp_ecdh parameters */ -# define SSL_OP_SINGLE_ECDH_USE 0x00080000L -/* If set, always create a new key when using tmp_dh parameters */ -# define SSL_OP_SINGLE_DH_USE 0x00100000L -/* Does nothing: retained for compatibiity */ -# define SSL_OP_EPHEMERAL_RSA 0x0 -/* - * Set on servers to choose the cipher according to the server's preferences - */ -# define SSL_OP_CIPHER_SERVER_PREFERENCE 0x00400000L -/* - * If set, a server will allow a client to issue a SSLv3.0 version number as - * latest version supported in the premaster secret, even when TLSv1.0 - * (version 3.1) was announced in the client hello. Normally this is - * forbidden to prevent version rollback attacks. - */ -# define SSL_OP_TLS_ROLLBACK_BUG 0x00800000L - -# define SSL_OP_NO_SSLv2 0x01000000L -# define SSL_OP_NO_SSLv3 0x02000000L -# define SSL_OP_NO_TLSv1 0x04000000L -# define SSL_OP_NO_TLSv1_2 0x08000000L -# define SSL_OP_NO_TLSv1_1 0x10000000L - -# define SSL_OP_NO_DTLSv1 0x04000000L -# define SSL_OP_NO_DTLSv1_2 0x08000000L - -# define SSL_OP_NO_SSL_MASK (SSL_OP_NO_SSLv2|SSL_OP_NO_SSLv3|\ - SSL_OP_NO_TLSv1|SSL_OP_NO_TLSv1_1|SSL_OP_NO_TLSv1_2) - -/* - * These next two were never actually used for anything since SSLeay zap so - * we have some more flags. - */ -/* - * The next flag deliberately changes the ciphertest, this is a check for the - * PKCS#1 attack - */ -# define SSL_OP_PKCS1_CHECK_1 0x0 -# define SSL_OP_PKCS1_CHECK_2 0x0 - -# define SSL_OP_NETSCAPE_CA_DN_BUG 0x20000000L -# define SSL_OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUG 0x40000000L -/* - * Make server add server-hello extension from early version of cryptopro - * draft, when GOST ciphersuite is negotiated. Required for interoperability - * with CryptoPro CSP 3.x - */ -# define SSL_OP_CRYPTOPRO_TLSEXT_BUG 0x80000000L - -/* - * Allow SSL_write(..., n) to return r with 0 < r < n (i.e. report success - * when just a single record has been written): - */ -# define SSL_MODE_ENABLE_PARTIAL_WRITE 0x00000001L -/* - * Make it possible to retry SSL_write() with changed buffer location (buffer - * contents must stay the same!); this is not the default to avoid the - * misconception that non-blocking SSL_write() behaves like non-blocking - * write(): - */ -# define SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER 0x00000002L -/* - * Never bother the application with retries if the transport is blocking: - */ -# define SSL_MODE_AUTO_RETRY 0x00000004L -/* Don't attempt to automatically build certificate chain */ -# define SSL_MODE_NO_AUTO_CHAIN 0x00000008L -/* - * Save RAM by releasing read and write buffers when they're empty. (SSL3 and - * TLS only.) "Released" buffers are put onto a free-list in the context or - * just freed (depending on the context's setting for freelist_max_len). - */ -# define SSL_MODE_RELEASE_BUFFERS 0x00000010L -/* - * Send the current time in the Random fields of the ClientHello and - * ServerHello records for compatibility with hypothetical implementations - * that require it. - */ -# define SSL_MODE_SEND_CLIENTHELLO_TIME 0x00000020L -# define SSL_MODE_SEND_SERVERHELLO_TIME 0x00000040L -/* - * Send TLS_FALLBACK_SCSV in the ClientHello. To be set only by applications - * that reconnect with a downgraded protocol version; see - * draft-ietf-tls-downgrade-scsv-00 for details. DO NOT ENABLE THIS if your - * application attempts a normal handshake. Only use this in explicit - * fallback retries, following the guidance in - * draft-ietf-tls-downgrade-scsv-00. - */ -# define SSL_MODE_SEND_FALLBACK_SCSV 0x00000080L - -/* Cert related flags */ -/* - * Many implementations ignore some aspects of the TLS standards such as - * enforcing certifcate chain algorithms. When this is set we enforce them. - */ -# define SSL_CERT_FLAG_TLS_STRICT 0x00000001L - -/* Suite B modes, takes same values as certificate verify flags */ -# define SSL_CERT_FLAG_SUITEB_128_LOS_ONLY 0x10000 -/* Suite B 192 bit only mode */ -# define SSL_CERT_FLAG_SUITEB_192_LOS 0x20000 -/* Suite B 128 bit mode allowing 192 bit algorithms */ -# define SSL_CERT_FLAG_SUITEB_128_LOS 0x30000 - -/* Perform all sorts of protocol violations for testing purposes */ -# define SSL_CERT_FLAG_BROKEN_PROTOCOL 0x10000000 - -/* Flags for building certificate chains */ -/* Treat any existing certificates as untrusted CAs */ -# define SSL_BUILD_CHAIN_FLAG_UNTRUSTED 0x1 -/* Don't include root CA in chain */ -# define SSL_BUILD_CHAIN_FLAG_NO_ROOT 0x2 -/* Just check certificates already there */ -# define SSL_BUILD_CHAIN_FLAG_CHECK 0x4 -/* Ignore verification errors */ -# define SSL_BUILD_CHAIN_FLAG_IGNORE_ERROR 0x8 -/* Clear verification errors from queue */ -# define SSL_BUILD_CHAIN_FLAG_CLEAR_ERROR 0x10 - -/* Flags returned by SSL_check_chain */ -/* Certificate can be used with this session */ -# define CERT_PKEY_VALID 0x1 -/* Certificate can also be used for signing */ -# define CERT_PKEY_SIGN 0x2 -/* EE certificate signing algorithm OK */ -# define CERT_PKEY_EE_SIGNATURE 0x10 -/* CA signature algorithms OK */ -# define CERT_PKEY_CA_SIGNATURE 0x20 -/* EE certificate parameters OK */ -# define CERT_PKEY_EE_PARAM 0x40 -/* CA certificate parameters OK */ -# define CERT_PKEY_CA_PARAM 0x80 -/* Signing explicitly allowed as opposed to SHA1 fallback */ -# define CERT_PKEY_EXPLICIT_SIGN 0x100 -/* Client CA issuer names match (always set for server cert) */ -# define CERT_PKEY_ISSUER_NAME 0x200 -/* Cert type matches client types (always set for server cert) */ -# define CERT_PKEY_CERT_TYPE 0x400 -/* Cert chain suitable to Suite B */ -# define CERT_PKEY_SUITEB 0x800 - -# define SSL_CONF_FLAG_CMDLINE 0x1 -# define SSL_CONF_FLAG_FILE 0x2 -# define SSL_CONF_FLAG_CLIENT 0x4 -# define SSL_CONF_FLAG_SERVER 0x8 -# define SSL_CONF_FLAG_SHOW_ERRORS 0x10 -# define SSL_CONF_FLAG_CERTIFICATE 0x20 -/* Configuration value types */ -# define SSL_CONF_TYPE_UNKNOWN 0x0 -# define SSL_CONF_TYPE_STRING 0x1 -# define SSL_CONF_TYPE_FILE 0x2 -# define SSL_CONF_TYPE_DIR 0x3 - -/* - * Note: SSL[_CTX]_set_{options,mode} use |= op on the previous value, they - * cannot be used to clear bits. - */ - -# define SSL_CTX_set_options(ctx,op) \ - SSL_CTX_ctrl((ctx),SSL_CTRL_OPTIONS,(op),NULL) -# define SSL_CTX_clear_options(ctx,op) \ - SSL_CTX_ctrl((ctx),SSL_CTRL_CLEAR_OPTIONS,(op),NULL) -# define SSL_CTX_get_options(ctx) \ - SSL_CTX_ctrl((ctx),SSL_CTRL_OPTIONS,0,NULL) -# define SSL_set_options(ssl,op) \ - SSL_ctrl((ssl),SSL_CTRL_OPTIONS,(op),NULL) -# define SSL_clear_options(ssl,op) \ - SSL_ctrl((ssl),SSL_CTRL_CLEAR_OPTIONS,(op),NULL) -# define SSL_get_options(ssl) \ - SSL_ctrl((ssl),SSL_CTRL_OPTIONS,0,NULL) - -# define SSL_CTX_set_mode(ctx,op) \ - SSL_CTX_ctrl((ctx),SSL_CTRL_MODE,(op),NULL) -# define SSL_CTX_clear_mode(ctx,op) \ - SSL_CTX_ctrl((ctx),SSL_CTRL_CLEAR_MODE,(op),NULL) -# define SSL_CTX_get_mode(ctx) \ - SSL_CTX_ctrl((ctx),SSL_CTRL_MODE,0,NULL) -# define SSL_clear_mode(ssl,op) \ - SSL_ctrl((ssl),SSL_CTRL_CLEAR_MODE,(op),NULL) -# define SSL_set_mode(ssl,op) \ - SSL_ctrl((ssl),SSL_CTRL_MODE,(op),NULL) -# define SSL_get_mode(ssl) \ - SSL_ctrl((ssl),SSL_CTRL_MODE,0,NULL) -# define SSL_set_mtu(ssl, mtu) \ - SSL_ctrl((ssl),SSL_CTRL_SET_MTU,(mtu),NULL) -# define DTLS_set_link_mtu(ssl, mtu) \ - SSL_ctrl((ssl),DTLS_CTRL_SET_LINK_MTU,(mtu),NULL) -# define DTLS_get_link_min_mtu(ssl) \ - SSL_ctrl((ssl),DTLS_CTRL_GET_LINK_MIN_MTU,0,NULL) - -# define SSL_get_secure_renegotiation_support(ssl) \ - SSL_ctrl((ssl), SSL_CTRL_GET_RI_SUPPORT, 0, NULL) - -# ifndef OPENSSL_NO_HEARTBEATS -# define SSL_heartbeat(ssl) \ - SSL_ctrl((ssl),SSL_CTRL_TLS_EXT_SEND_HEARTBEAT,0,NULL) -# endif - -# define SSL_CTX_set_cert_flags(ctx,op) \ - SSL_CTX_ctrl((ctx),SSL_CTRL_CERT_FLAGS,(op),NULL) -# define SSL_set_cert_flags(s,op) \ - SSL_ctrl((s),SSL_CTRL_CERT_FLAGS,(op),NULL) -# define SSL_CTX_clear_cert_flags(ctx,op) \ - SSL_CTX_ctrl((ctx),SSL_CTRL_CLEAR_CERT_FLAGS,(op),NULL) -# define SSL_clear_cert_flags(s,op) \ - SSL_ctrl((s),SSL_CTRL_CLEAR_CERT_FLAGS,(op),NULL) - -void SSL_CTX_set_msg_callback(SSL_CTX *ctx, - void (*cb) (int write_p, int version, - int content_type, const void *buf, - size_t len, SSL *ssl, void *arg)); -void SSL_set_msg_callback(SSL *ssl, - void (*cb) (int write_p, int version, - int content_type, const void *buf, - size_t len, SSL *ssl, void *arg)); -# define SSL_CTX_set_msg_callback_arg(ctx, arg) SSL_CTX_ctrl((ctx), SSL_CTRL_SET_MSG_CALLBACK_ARG, 0, (arg)) -# define SSL_set_msg_callback_arg(ssl, arg) SSL_ctrl((ssl), SSL_CTRL_SET_MSG_CALLBACK_ARG, 0, (arg)) - -# ifndef OPENSSL_NO_SRP - -# ifndef OPENSSL_NO_SSL_INTERN - -typedef struct srp_ctx_st { - /* param for all the callbacks */ - void *SRP_cb_arg; - /* set client Hello login callback */ - int (*TLS_ext_srp_username_callback) (SSL *, int *, void *); - /* set SRP N/g param callback for verification */ - int (*SRP_verify_param_callback) (SSL *, void *); - /* set SRP client passwd callback */ - char *(*SRP_give_srp_client_pwd_callback) (SSL *, void *); - char *login; - BIGNUM *N, *g, *s, *B, *A; - BIGNUM *a, *b, *v; - char *info; - int strength; - unsigned long srp_Mask; -} SRP_CTX; - -# endif - -/* see tls_srp.c */ -int SSL_SRP_CTX_init(SSL *s); -int SSL_CTX_SRP_CTX_init(SSL_CTX *ctx); -int SSL_SRP_CTX_free(SSL *ctx); -int SSL_CTX_SRP_CTX_free(SSL_CTX *ctx); -int SSL_srp_server_param_with_username(SSL *s, int *ad); -int SRP_generate_server_master_secret(SSL *s, unsigned char *master_key); -int SRP_Calc_A_param(SSL *s); -int SRP_generate_client_master_secret(SSL *s, unsigned char *master_key); - -# endif - -# if defined(OPENSSL_SYS_MSDOS) && !defined(OPENSSL_SYS_WIN32) -# define SSL_MAX_CERT_LIST_DEFAULT 1024*30 - /* 30k max cert list :-) */ -# else -# define SSL_MAX_CERT_LIST_DEFAULT 1024*100 - /* 100k max cert list :-) */ -# endif - -# define SSL_SESSION_CACHE_MAX_SIZE_DEFAULT (1024*20) - -/* - * This callback type is used inside SSL_CTX, SSL, and in the functions that - * set them. It is used to override the generation of SSL/TLS session IDs in - * a server. Return value should be zero on an error, non-zero to proceed. - * Also, callbacks should themselves check if the id they generate is unique - * otherwise the SSL handshake will fail with an error - callbacks can do - * this using the 'ssl' value they're passed by; - * SSL_has_matching_session_id(ssl, id, *id_len) The length value passed in - * is set at the maximum size the session ID can be. In SSLv2 this is 16 - * bytes, whereas SSLv3/TLSv1 it is 32 bytes. The callback can alter this - * length to be less if desired, but under SSLv2 session IDs are supposed to - * be fixed at 16 bytes so the id will be padded after the callback returns - * in this case. It is also an error for the callback to set the size to - * zero. - */ -typedef int (*GEN_SESSION_CB) (const SSL *ssl, unsigned char *id, - unsigned int *id_len); - -typedef struct ssl_comp_st SSL_COMP; - -# ifndef OPENSSL_NO_SSL_INTERN - -struct ssl_comp_st { - int id; - const char *name; -# ifndef OPENSSL_NO_COMP - COMP_METHOD *method; -# else - char *method; -# endif -}; - -DECLARE_STACK_OF(SSL_COMP) -DECLARE_LHASH_OF(SSL_SESSION); - -struct ssl_ctx_st { - const SSL_METHOD *method; - STACK_OF(SSL_CIPHER) *cipher_list; - /* same as above but sorted for lookup */ - STACK_OF(SSL_CIPHER) *cipher_list_by_id; - struct x509_store_st /* X509_STORE */ *cert_store; - LHASH_OF(SSL_SESSION) *sessions; - /* - * Most session-ids that will be cached, default is - * SSL_SESSION_CACHE_MAX_SIZE_DEFAULT. 0 is unlimited. - */ - unsigned long session_cache_size; - struct ssl_session_st *session_cache_head; - struct ssl_session_st *session_cache_tail; - /* - * This can have one of 2 values, ored together, SSL_SESS_CACHE_CLIENT, - * SSL_SESS_CACHE_SERVER, Default is SSL_SESSION_CACHE_SERVER, which - * means only SSL_accept which cache SSL_SESSIONS. - */ - int session_cache_mode; - /* - * If timeout is not 0, it is the default timeout value set when - * SSL_new() is called. This has been put in to make life easier to set - * things up - */ - long session_timeout; - /* - * If this callback is not null, it will be called each time a session id - * is added to the cache. If this function returns 1, it means that the - * callback will do a SSL_SESSION_free() when it has finished using it. - * Otherwise, on 0, it means the callback has finished with it. If - * remove_session_cb is not null, it will be called when a session-id is - * removed from the cache. After the call, OpenSSL will - * SSL_SESSION_free() it. - */ - int (*new_session_cb) (struct ssl_st *ssl, SSL_SESSION *sess); - void (*remove_session_cb) (struct ssl_ctx_st *ctx, SSL_SESSION *sess); - SSL_SESSION *(*get_session_cb) (struct ssl_st *ssl, - unsigned char *data, int len, int *copy); - struct { - int sess_connect; /* SSL new conn - started */ - int sess_connect_renegotiate; /* SSL reneg - requested */ - int sess_connect_good; /* SSL new conne/reneg - finished */ - int sess_accept; /* SSL new accept - started */ - int sess_accept_renegotiate; /* SSL reneg - requested */ - int sess_accept_good; /* SSL accept/reneg - finished */ - int sess_miss; /* session lookup misses */ - int sess_timeout; /* reuse attempt on timeouted session */ - int sess_cache_full; /* session removed due to full cache */ - int sess_hit; /* session reuse actually done */ - int sess_cb_hit; /* session-id that was not in the cache was - * passed back via the callback. This - * indicates that the application is - * supplying session-id's from other - * processes - spooky :-) */ - } stats; - - int references; - - /* if defined, these override the X509_verify_cert() calls */ - int (*app_verify_callback) (X509_STORE_CTX *, void *); - void *app_verify_arg; - /* - * before OpenSSL 0.9.7, 'app_verify_arg' was ignored - * ('app_verify_callback' was called with just one argument) - */ - - /* Default password callback. */ - pem_password_cb *default_passwd_callback; - - /* Default password callback user data. */ - void *default_passwd_callback_userdata; - - /* get client cert callback */ - int (*client_cert_cb) (SSL *ssl, X509 **x509, EVP_PKEY **pkey); - - /* cookie generate callback */ - int (*app_gen_cookie_cb) (SSL *ssl, unsigned char *cookie, - unsigned int *cookie_len); - - /* verify cookie callback */ - int (*app_verify_cookie_cb) (SSL *ssl, unsigned char *cookie, - unsigned int cookie_len); - - CRYPTO_EX_DATA ex_data; - - const EVP_MD *rsa_md5; /* For SSLv2 - name is 'ssl2-md5' */ - const EVP_MD *md5; /* For SSLv3/TLSv1 'ssl3-md5' */ - const EVP_MD *sha1; /* For SSLv3/TLSv1 'ssl3->sha1' */ - - STACK_OF(X509) *extra_certs; - STACK_OF(SSL_COMP) *comp_methods; /* stack of SSL_COMP, SSLv3/TLSv1 */ - - /* Default values used when no per-SSL value is defined follow */ - - /* used if SSL's info_callback is NULL */ - void (*info_callback) (const SSL *ssl, int type, int val); - - /* what we put in client cert requests */ - STACK_OF(X509_NAME) *client_CA; - - /* - * Default values to use in SSL structures follow (these are copied by - * SSL_new) - */ - - unsigned long options; - unsigned long mode; - long max_cert_list; - - struct cert_st /* CERT */ *cert; - int read_ahead; - - /* callback that allows applications to peek at protocol messages */ - void (*msg_callback) (int write_p, int version, int content_type, - const void *buf, size_t len, SSL *ssl, void *arg); - void *msg_callback_arg; - - int verify_mode; - unsigned int sid_ctx_length; - unsigned char sid_ctx[SSL_MAX_SID_CTX_LENGTH]; - /* called 'verify_callback' in the SSL */ - int (*default_verify_callback) (int ok, X509_STORE_CTX *ctx); - - /* Default generate session ID callback. */ - GEN_SESSION_CB generate_session_id; - - X509_VERIFY_PARAM *param; - -# if 0 - int purpose; /* Purpose setting */ - int trust; /* Trust setting */ -# endif - - int quiet_shutdown; - - /* - * Maximum amount of data to send in one fragment. actual record size can - * be more than this due to padding and MAC overheads. - */ - unsigned int max_send_fragment; - -# ifndef OPENSSL_NO_ENGINE - /* - * Engine to pass requests for client certs to - */ - ENGINE *client_cert_engine; -# endif - -# ifndef OPENSSL_NO_TLSEXT - /* TLS extensions servername callback */ - int (*tlsext_servername_callback) (SSL *, int *, void *); - void *tlsext_servername_arg; - /* RFC 4507 session ticket keys */ - unsigned char tlsext_tick_key_name[16]; - unsigned char tlsext_tick_hmac_key[16]; - unsigned char tlsext_tick_aes_key[16]; - /* Callback to support customisation of ticket key setting */ - int (*tlsext_ticket_key_cb) (SSL *ssl, - unsigned char *name, unsigned char *iv, - EVP_CIPHER_CTX *ectx, - HMAC_CTX *hctx, int enc); - - /* certificate status request info */ - /* Callback for status request */ - int (*tlsext_status_cb) (SSL *ssl, void *arg); - void *tlsext_status_arg; - - /* draft-rescorla-tls-opaque-prf-input-00.txt information */ - int (*tlsext_opaque_prf_input_callback) (SSL *, void *peerinput, - size_t len, void *arg); - void *tlsext_opaque_prf_input_callback_arg; -# endif - -# ifndef OPENSSL_NO_PSK - char *psk_identity_hint; - unsigned int (*psk_client_callback) (SSL *ssl, const char *hint, - char *identity, - unsigned int max_identity_len, - unsigned char *psk, - unsigned int max_psk_len); - unsigned int (*psk_server_callback) (SSL *ssl, const char *identity, - unsigned char *psk, - unsigned int max_psk_len); -# endif - -# ifndef OPENSSL_NO_BUF_FREELISTS -# define SSL_MAX_BUF_FREELIST_LEN_DEFAULT 32 - unsigned int freelist_max_len; - struct ssl3_buf_freelist_st *wbuf_freelist; - struct ssl3_buf_freelist_st *rbuf_freelist; -# endif -# ifndef OPENSSL_NO_SRP - SRP_CTX srp_ctx; /* ctx for SRP authentication */ -# endif - -# ifndef OPENSSL_NO_TLSEXT - -# ifndef OPENSSL_NO_NEXTPROTONEG - /* Next protocol negotiation information */ - /* (for experimental NPN extension). */ - - /* - * For a server, this contains a callback function by which the set of - * advertised protocols can be provided. - */ - int (*next_protos_advertised_cb) (SSL *s, const unsigned char **buf, - unsigned int *len, void *arg); - void *next_protos_advertised_cb_arg; - /* - * For a client, this contains a callback function that selects the next - * protocol from the list provided by the server. - */ - int (*next_proto_select_cb) (SSL *s, unsigned char **out, - unsigned char *outlen, - const unsigned char *in, - unsigned int inlen, void *arg); - void *next_proto_select_cb_arg; -# endif - /* SRTP profiles we are willing to do from RFC 5764 */ - STACK_OF(SRTP_PROTECTION_PROFILE) *srtp_profiles; - - /* - * ALPN information (we are in the process of transitioning from NPN to - * ALPN.) - */ - - /*- - * For a server, this contains a callback function that allows the - * server to select the protocol for the connection. - * out: on successful return, this must point to the raw protocol - * name (without the length prefix). - * outlen: on successful return, this contains the length of |*out|. - * in: points to the client's list of supported protocols in - * wire-format. - * inlen: the length of |in|. - */ - int (*alpn_select_cb) (SSL *s, - const unsigned char **out, - unsigned char *outlen, - const unsigned char *in, - unsigned int inlen, void *arg); - void *alpn_select_cb_arg; - - /* - * For a client, this contains the list of supported protocols in wire - * format. - */ - unsigned char *alpn_client_proto_list; - unsigned alpn_client_proto_list_len; - -# ifndef OPENSSL_NO_EC - /* EC extension values inherited by SSL structure */ - size_t tlsext_ecpointformatlist_length; - unsigned char *tlsext_ecpointformatlist; - size_t tlsext_ellipticcurvelist_length; - unsigned char *tlsext_ellipticcurvelist; -# endif /* OPENSSL_NO_EC */ -# endif -}; - -# endif - -# define SSL_SESS_CACHE_OFF 0x0000 -# define SSL_SESS_CACHE_CLIENT 0x0001 -# define SSL_SESS_CACHE_SERVER 0x0002 -# define SSL_SESS_CACHE_BOTH (SSL_SESS_CACHE_CLIENT|SSL_SESS_CACHE_SERVER) -# define SSL_SESS_CACHE_NO_AUTO_CLEAR 0x0080 -/* enough comments already ... see SSL_CTX_set_session_cache_mode(3) */ -# define SSL_SESS_CACHE_NO_INTERNAL_LOOKUP 0x0100 -# define SSL_SESS_CACHE_NO_INTERNAL_STORE 0x0200 -# define SSL_SESS_CACHE_NO_INTERNAL \ - (SSL_SESS_CACHE_NO_INTERNAL_LOOKUP|SSL_SESS_CACHE_NO_INTERNAL_STORE) - -LHASH_OF(SSL_SESSION) *SSL_CTX_sessions(SSL_CTX *ctx); -# define SSL_CTX_sess_number(ctx) \ - SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_NUMBER,0,NULL) -# define SSL_CTX_sess_connect(ctx) \ - SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_CONNECT,0,NULL) -# define SSL_CTX_sess_connect_good(ctx) \ - SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_CONNECT_GOOD,0,NULL) -# define SSL_CTX_sess_connect_renegotiate(ctx) \ - SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_CONNECT_RENEGOTIATE,0,NULL) -# define SSL_CTX_sess_accept(ctx) \ - SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_ACCEPT,0,NULL) -# define SSL_CTX_sess_accept_renegotiate(ctx) \ - SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_ACCEPT_RENEGOTIATE,0,NULL) -# define SSL_CTX_sess_accept_good(ctx) \ - SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_ACCEPT_GOOD,0,NULL) -# define SSL_CTX_sess_hits(ctx) \ - SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_HIT,0,NULL) -# define SSL_CTX_sess_cb_hits(ctx) \ - SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_CB_HIT,0,NULL) -# define SSL_CTX_sess_misses(ctx) \ - SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_MISSES,0,NULL) -# define SSL_CTX_sess_timeouts(ctx) \ - SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_TIMEOUTS,0,NULL) -# define SSL_CTX_sess_cache_full(ctx) \ - SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_CACHE_FULL,0,NULL) - -void SSL_CTX_sess_set_new_cb(SSL_CTX *ctx, - int (*new_session_cb) (struct ssl_st *ssl, - SSL_SESSION *sess)); -int (*SSL_CTX_sess_get_new_cb(SSL_CTX *ctx)) (struct ssl_st *ssl, - SSL_SESSION *sess); -void SSL_CTX_sess_set_remove_cb(SSL_CTX *ctx, - void (*remove_session_cb) (struct ssl_ctx_st - *ctx, - SSL_SESSION - *sess)); -void (*SSL_CTX_sess_get_remove_cb(SSL_CTX *ctx)) (struct ssl_ctx_st *ctx, - SSL_SESSION *sess); -void SSL_CTX_sess_set_get_cb(SSL_CTX *ctx, - SSL_SESSION *(*get_session_cb) (struct ssl_st - *ssl, - unsigned char - *data, int len, - int *copy)); -SSL_SESSION *(*SSL_CTX_sess_get_get_cb(SSL_CTX *ctx)) (struct ssl_st *ssl, - unsigned char *Data, - int len, int *copy); -void SSL_CTX_set_info_callback(SSL_CTX *ctx, - void (*cb) (const SSL *ssl, int type, - int val)); -void (*SSL_CTX_get_info_callback(SSL_CTX *ctx)) (const SSL *ssl, int type, - int val); -void SSL_CTX_set_client_cert_cb(SSL_CTX *ctx, - int (*client_cert_cb) (SSL *ssl, X509 **x509, - EVP_PKEY **pkey)); -int (*SSL_CTX_get_client_cert_cb(SSL_CTX *ctx)) (SSL *ssl, X509 **x509, - EVP_PKEY **pkey); -# ifndef OPENSSL_NO_ENGINE -int SSL_CTX_set_client_cert_engine(SSL_CTX *ctx, ENGINE *e); -# endif -void SSL_CTX_set_cookie_generate_cb(SSL_CTX *ctx, - int (*app_gen_cookie_cb) (SSL *ssl, - unsigned char - *cookie, - unsigned int - *cookie_len)); -void SSL_CTX_set_cookie_verify_cb(SSL_CTX *ctx, - int (*app_verify_cookie_cb) (SSL *ssl, - unsigned char - *cookie, - unsigned int - cookie_len)); -# ifndef OPENSSL_NO_NEXTPROTONEG -void SSL_CTX_set_next_protos_advertised_cb(SSL_CTX *s, - int (*cb) (SSL *ssl, - const unsigned char - **out, - unsigned int *outlen, - void *arg), void *arg); -void SSL_CTX_set_next_proto_select_cb(SSL_CTX *s, - int (*cb) (SSL *ssl, - unsigned char **out, - unsigned char *outlen, - const unsigned char *in, - unsigned int inlen, - void *arg), void *arg); -void SSL_get0_next_proto_negotiated(const SSL *s, const unsigned char **data, - unsigned *len); -# endif - -# ifndef OPENSSL_NO_TLSEXT -int SSL_select_next_proto(unsigned char **out, unsigned char *outlen, - const unsigned char *in, unsigned int inlen, - const unsigned char *client, - unsigned int client_len); -# endif - -# define OPENSSL_NPN_UNSUPPORTED 0 -# define OPENSSL_NPN_NEGOTIATED 1 -# define OPENSSL_NPN_NO_OVERLAP 2 - -int SSL_CTX_set_alpn_protos(SSL_CTX *ctx, const unsigned char *protos, - unsigned protos_len); -int SSL_set_alpn_protos(SSL *ssl, const unsigned char *protos, - unsigned protos_len); -void SSL_CTX_set_alpn_select_cb(SSL_CTX *ctx, - int (*cb) (SSL *ssl, - const unsigned char **out, - unsigned char *outlen, - const unsigned char *in, - unsigned int inlen, - void *arg), void *arg); -void SSL_get0_alpn_selected(const SSL *ssl, const unsigned char **data, - unsigned *len); - -# ifndef OPENSSL_NO_PSK -/* - * the maximum length of the buffer given to callbacks containing the - * resulting identity/psk - */ -# define PSK_MAX_IDENTITY_LEN 128 -# define PSK_MAX_PSK_LEN 256 -void SSL_CTX_set_psk_client_callback(SSL_CTX *ctx, - unsigned int (*psk_client_callback) (SSL - *ssl, - const - char - *hint, - char - *identity, - unsigned - int - max_identity_len, - unsigned - char - *psk, - unsigned - int - max_psk_len)); -void SSL_set_psk_client_callback(SSL *ssl, - unsigned int (*psk_client_callback) (SSL - *ssl, - const - char - *hint, - char - *identity, - unsigned - int - max_identity_len, - unsigned - char - *psk, - unsigned - int - max_psk_len)); -void SSL_CTX_set_psk_server_callback(SSL_CTX *ctx, - unsigned int (*psk_server_callback) (SSL - *ssl, - const - char - *identity, - unsigned - char - *psk, - unsigned - int - max_psk_len)); -void SSL_set_psk_server_callback(SSL *ssl, - unsigned int (*psk_server_callback) (SSL - *ssl, - const - char - *identity, - unsigned - char - *psk, - unsigned - int - max_psk_len)); -int SSL_CTX_use_psk_identity_hint(SSL_CTX *ctx, const char *identity_hint); -int SSL_use_psk_identity_hint(SSL *s, const char *identity_hint); -const char *SSL_get_psk_identity_hint(const SSL *s); -const char *SSL_get_psk_identity(const SSL *s); -# endif - -# ifndef OPENSSL_NO_TLSEXT -/* Register callbacks to handle custom TLS Extensions for client or server. */ - -int SSL_CTX_add_client_custom_ext(SSL_CTX *ctx, unsigned int ext_type, - custom_ext_add_cb add_cb, - custom_ext_free_cb free_cb, - void *add_arg, - custom_ext_parse_cb parse_cb, - void *parse_arg); - -int SSL_CTX_add_server_custom_ext(SSL_CTX *ctx, unsigned int ext_type, - custom_ext_add_cb add_cb, - custom_ext_free_cb free_cb, - void *add_arg, - custom_ext_parse_cb parse_cb, - void *parse_arg); - -int SSL_extension_supported(unsigned int ext_type); - -# endif - -# define SSL_NOTHING 1 -# define SSL_WRITING 2 -# define SSL_READING 3 -# define SSL_X509_LOOKUP 4 - -/* These will only be used when doing non-blocking IO */ -# define SSL_want_nothing(s) (SSL_want(s) == SSL_NOTHING) -# define SSL_want_read(s) (SSL_want(s) == SSL_READING) -# define SSL_want_write(s) (SSL_want(s) == SSL_WRITING) -# define SSL_want_x509_lookup(s) (SSL_want(s) == SSL_X509_LOOKUP) - -# define SSL_MAC_FLAG_READ_MAC_STREAM 1 -# define SSL_MAC_FLAG_WRITE_MAC_STREAM 2 - -# ifndef OPENSSL_NO_SSL_INTERN - -struct ssl_st { - /* - * protocol version (one of SSL2_VERSION, SSL3_VERSION, TLS1_VERSION, - * DTLS1_VERSION) - */ - int version; - /* SSL_ST_CONNECT or SSL_ST_ACCEPT */ - int type; - /* SSLv3 */ - const SSL_METHOD *method; - /* - * There are 2 BIO's even though they are normally both the same. This - * is so data can be read and written to different handlers - */ -# ifndef OPENSSL_NO_BIO - /* used by SSL_read */ - BIO *rbio; - /* used by SSL_write */ - BIO *wbio; - /* used during session-id reuse to concatenate messages */ - BIO *bbio; -# else - /* used by SSL_read */ - char *rbio; - /* used by SSL_write */ - char *wbio; - char *bbio; -# endif - /* - * This holds a variable that indicates what we were doing when a 0 or -1 - * is returned. This is needed for non-blocking IO so we know what - * request needs re-doing when in SSL_accept or SSL_connect - */ - int rwstate; - /* true when we are actually in SSL_accept() or SSL_connect() */ - int in_handshake; - int (*handshake_func) (SSL *); - /* - * Imagine that here's a boolean member "init" that is switched as soon - * as SSL_set_{accept/connect}_state is called for the first time, so - * that "state" and "handshake_func" are properly initialized. But as - * handshake_func is == 0 until then, we use this test instead of an - * "init" member. - */ - /* are we the server side? - mostly used by SSL_clear */ - int server; - /* - * Generate a new session or reuse an old one. - * NB: For servers, the 'new' session may actually be a previously - * cached session or even the previous session unless - * SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION is set - */ - int new_session; - /* don't send shutdown packets */ - int quiet_shutdown; - /* we have shut things down, 0x01 sent, 0x02 for received */ - int shutdown; - /* where we are */ - int state; - /* where we are when reading */ - int rstate; - BUF_MEM *init_buf; /* buffer used during init */ - void *init_msg; /* pointer to handshake message body, set by - * ssl3_get_message() */ - int init_num; /* amount read/written */ - int init_off; /* amount read/written */ - /* used internally to point at a raw packet */ - unsigned char *packet; - unsigned int packet_length; - struct ssl2_state_st *s2; /* SSLv2 variables */ - struct ssl3_state_st *s3; /* SSLv3 variables */ - struct dtls1_state_st *d1; /* DTLSv1 variables */ - int read_ahead; /* Read as many input bytes as possible (for - * non-blocking reads) */ - /* callback that allows applications to peek at protocol messages */ - void (*msg_callback) (int write_p, int version, int content_type, - const void *buf, size_t len, SSL *ssl, void *arg); - void *msg_callback_arg; - int hit; /* reusing a previous session */ - X509_VERIFY_PARAM *param; -# if 0 - int purpose; /* Purpose setting */ - int trust; /* Trust setting */ -# endif - /* crypto */ - STACK_OF(SSL_CIPHER) *cipher_list; - STACK_OF(SSL_CIPHER) *cipher_list_by_id; - /* - * These are the ones being used, the ones in SSL_SESSION are the ones to - * be 'copied' into these ones - */ - int mac_flags; - EVP_CIPHER_CTX *enc_read_ctx; /* cryptographic state */ - EVP_MD_CTX *read_hash; /* used for mac generation */ -# ifndef OPENSSL_NO_COMP - COMP_CTX *expand; /* uncompress */ -# else - char *expand; -# endif - EVP_CIPHER_CTX *enc_write_ctx; /* cryptographic state */ - EVP_MD_CTX *write_hash; /* used for mac generation */ -# ifndef OPENSSL_NO_COMP - COMP_CTX *compress; /* compression */ -# else - char *compress; -# endif - /* session info */ - /* client cert? */ - /* This is used to hold the server certificate used */ - struct cert_st /* CERT */ *cert; - /* - * the session_id_context is used to ensure sessions are only reused in - * the appropriate context - */ - unsigned int sid_ctx_length; - unsigned char sid_ctx[SSL_MAX_SID_CTX_LENGTH]; - /* This can also be in the session once a session is established */ - SSL_SESSION *session; - /* Default generate session ID callback. */ - GEN_SESSION_CB generate_session_id; - /* Used in SSL2 and SSL3 */ - /* - * 0 don't care about verify failure. - * 1 fail if verify fails - */ - int verify_mode; - /* fail if callback returns 0 */ - int (*verify_callback) (int ok, X509_STORE_CTX *ctx); - /* optional informational callback */ - void (*info_callback) (const SSL *ssl, int type, int val); - /* error bytes to be written */ - int error; - /* actual code */ - int error_code; -# ifndef OPENSSL_NO_KRB5 - /* Kerberos 5 context */ - KSSL_CTX *kssl_ctx; -# endif /* OPENSSL_NO_KRB5 */ -# ifndef OPENSSL_NO_PSK - unsigned int (*psk_client_callback) (SSL *ssl, const char *hint, - char *identity, - unsigned int max_identity_len, - unsigned char *psk, - unsigned int max_psk_len); - unsigned int (*psk_server_callback) (SSL *ssl, const char *identity, - unsigned char *psk, - unsigned int max_psk_len); -# endif - SSL_CTX *ctx; - /* - * set this flag to 1 and a sleep(1) is put into all SSL_read() and - * SSL_write() calls, good for nbio debuging :-) - */ - int debug; - /* extra application data */ - long verify_result; - CRYPTO_EX_DATA ex_data; - /* for server side, keep the list of CA_dn we can use */ - STACK_OF(X509_NAME) *client_CA; - int references; - /* protocol behaviour */ - unsigned long options; - /* API behaviour */ - unsigned long mode; - long max_cert_list; - int first_packet; - /* what was passed, used for SSLv3/TLS rollback check */ - int client_version; - unsigned int max_send_fragment; -# ifndef OPENSSL_NO_TLSEXT - /* TLS extension debug callback */ - void (*tlsext_debug_cb) (SSL *s, int client_server, int type, - unsigned char *data, int len, void *arg); - void *tlsext_debug_arg; - char *tlsext_hostname; - /*- - * no further mod of servername - * 0 : call the servername extension callback. - * 1 : prepare 2, allow last ack just after in server callback. - * 2 : don't call servername callback, no ack in server hello - */ - int servername_done; - /* certificate status request info */ - /* Status type or -1 if no status type */ - int tlsext_status_type; - /* Expect OCSP CertificateStatus message */ - int tlsext_status_expected; - /* OCSP status request only */ - STACK_OF(OCSP_RESPID) *tlsext_ocsp_ids; - X509_EXTENSIONS *tlsext_ocsp_exts; - /* OCSP response received or to be sent */ - unsigned char *tlsext_ocsp_resp; - int tlsext_ocsp_resplen; - /* RFC4507 session ticket expected to be received or sent */ - int tlsext_ticket_expected; -# ifndef OPENSSL_NO_EC - size_t tlsext_ecpointformatlist_length; - /* our list */ - unsigned char *tlsext_ecpointformatlist; - size_t tlsext_ellipticcurvelist_length; - /* our list */ - unsigned char *tlsext_ellipticcurvelist; -# endif /* OPENSSL_NO_EC */ - /* - * draft-rescorla-tls-opaque-prf-input-00.txt information to be used for - * handshakes - */ - void *tlsext_opaque_prf_input; - size_t tlsext_opaque_prf_input_len; - /* TLS Session Ticket extension override */ - TLS_SESSION_TICKET_EXT *tlsext_session_ticket; - /* TLS Session Ticket extension callback */ - tls_session_ticket_ext_cb_fn tls_session_ticket_ext_cb; - void *tls_session_ticket_ext_cb_arg; - /* TLS pre-shared secret session resumption */ - tls_session_secret_cb_fn tls_session_secret_cb; - void *tls_session_secret_cb_arg; - SSL_CTX *initial_ctx; /* initial ctx, used to store sessions */ -# ifndef OPENSSL_NO_NEXTPROTONEG - /* - * Next protocol negotiation. For the client, this is the protocol that - * we sent in NextProtocol and is set when handling ServerHello - * extensions. For a server, this is the client's selected_protocol from - * NextProtocol and is set when handling the NextProtocol message, before - * the Finished message. - */ - unsigned char *next_proto_negotiated; - unsigned char next_proto_negotiated_len; -# endif -# define session_ctx initial_ctx - /* What we'll do */ - STACK_OF(SRTP_PROTECTION_PROFILE) *srtp_profiles; - /* What's been chosen */ - SRTP_PROTECTION_PROFILE *srtp_profile; - /*- - * Is use of the Heartbeat extension negotiated? - * 0: disabled - * 1: enabled - * 2: enabled, but not allowed to send Requests - */ - unsigned int tlsext_heartbeat; - /* Indicates if a HeartbeatRequest is in flight */ - unsigned int tlsext_hb_pending; - /* HeartbeatRequest sequence number */ - unsigned int tlsext_hb_seq; -# else -# define session_ctx ctx -# endif /* OPENSSL_NO_TLSEXT */ - /*- - * 1 if we are renegotiating. - * 2 if we are a server and are inside a handshake - * (i.e. not just sending a HelloRequest) - */ - int renegotiate; -# ifndef OPENSSL_NO_SRP - /* ctx for SRP authentication */ - SRP_CTX srp_ctx; -# endif -# ifndef OPENSSL_NO_TLSEXT - /* - * For a client, this contains the list of supported protocols in wire - * format. - */ - unsigned char *alpn_client_proto_list; - unsigned alpn_client_proto_list_len; -# endif /* OPENSSL_NO_TLSEXT */ -}; - -# endif - -#ifdef __cplusplus -} -#endif - -# include -# include -# include /* This is mostly sslv3 with a few tweaks */ -# include /* Datagram TLS */ -# include -# include /* Support for the use_srtp extension */ - -#ifdef __cplusplus -extern "C" { -#endif - -/* compatibility */ -# define SSL_set_app_data(s,arg) (SSL_set_ex_data(s,0,(char *)arg)) -# define SSL_get_app_data(s) (SSL_get_ex_data(s,0)) -# define SSL_SESSION_set_app_data(s,a) (SSL_SESSION_set_ex_data(s,0,(char *)a)) -# define SSL_SESSION_get_app_data(s) (SSL_SESSION_get_ex_data(s,0)) -# define SSL_CTX_get_app_data(ctx) (SSL_CTX_get_ex_data(ctx,0)) -# define SSL_CTX_set_app_data(ctx,arg) (SSL_CTX_set_ex_data(ctx,0,(char *)arg)) - -/* - * The following are the possible values for ssl->state are are used to - * indicate where we are up to in the SSL connection establishment. The - * macros that follow are about the only things you should need to use and - * even then, only when using non-blocking IO. It can also be useful to work - * out where you were when the connection failed - */ - -# define SSL_ST_CONNECT 0x1000 -# define SSL_ST_ACCEPT 0x2000 -# define SSL_ST_MASK 0x0FFF -# define SSL_ST_INIT (SSL_ST_CONNECT|SSL_ST_ACCEPT) -# define SSL_ST_BEFORE 0x4000 -# define SSL_ST_OK 0x03 -# define SSL_ST_RENEGOTIATE (0x04|SSL_ST_INIT) - -# define SSL_CB_LOOP 0x01 -# define SSL_CB_EXIT 0x02 -# define SSL_CB_READ 0x04 -# define SSL_CB_WRITE 0x08 -# define SSL_CB_ALERT 0x4000/* used in callback */ -# define SSL_CB_READ_ALERT (SSL_CB_ALERT|SSL_CB_READ) -# define SSL_CB_WRITE_ALERT (SSL_CB_ALERT|SSL_CB_WRITE) -# define SSL_CB_ACCEPT_LOOP (SSL_ST_ACCEPT|SSL_CB_LOOP) -# define SSL_CB_ACCEPT_EXIT (SSL_ST_ACCEPT|SSL_CB_EXIT) -# define SSL_CB_CONNECT_LOOP (SSL_ST_CONNECT|SSL_CB_LOOP) -# define SSL_CB_CONNECT_EXIT (SSL_ST_CONNECT|SSL_CB_EXIT) -# define SSL_CB_HANDSHAKE_START 0x10 -# define SSL_CB_HANDSHAKE_DONE 0x20 - -/* Is the SSL_connection established? */ -# define SSL_get_state(a) SSL_state(a) -# define SSL_is_init_finished(a) (SSL_state(a) == SSL_ST_OK) -# define SSL_in_init(a) (SSL_state(a)&SSL_ST_INIT) -# define SSL_in_before(a) (SSL_state(a)&SSL_ST_BEFORE) -# define SSL_in_connect_init(a) (SSL_state(a)&SSL_ST_CONNECT) -# define SSL_in_accept_init(a) (SSL_state(a)&SSL_ST_ACCEPT) - -/* - * The following 2 states are kept in ssl->rstate when reads fail, you should - * not need these - */ -# define SSL_ST_READ_HEADER 0xF0 -# define SSL_ST_READ_BODY 0xF1 -# define SSL_ST_READ_DONE 0xF2 - -/*- - * Obtain latest Finished message - * -- that we sent (SSL_get_finished) - * -- that we expected from peer (SSL_get_peer_finished). - * Returns length (0 == no Finished so far), copies up to 'count' bytes. - */ -size_t SSL_get_finished(const SSL *s, void *buf, size_t count); -size_t SSL_get_peer_finished(const SSL *s, void *buf, size_t count); - -/* - * use either SSL_VERIFY_NONE or SSL_VERIFY_PEER, the last 2 options are - * 'ored' with SSL_VERIFY_PEER if they are desired - */ -# define SSL_VERIFY_NONE 0x00 -# define SSL_VERIFY_PEER 0x01 -# define SSL_VERIFY_FAIL_IF_NO_PEER_CERT 0x02 -# define SSL_VERIFY_CLIENT_ONCE 0x04 - -# define OpenSSL_add_ssl_algorithms() SSL_library_init() -# define SSLeay_add_ssl_algorithms() SSL_library_init() - -/* this is for backward compatibility */ -# if 0 /* NEW_SSLEAY */ -# define SSL_CTX_set_default_verify(a,b,c) SSL_CTX_set_verify(a,b,c) -# define SSL_set_pref_cipher(c,n) SSL_set_cipher_list(c,n) -# define SSL_add_session(a,b) SSL_CTX_add_session((a),(b)) -# define SSL_remove_session(a,b) SSL_CTX_remove_session((a),(b)) -# define SSL_flush_sessions(a,b) SSL_CTX_flush_sessions((a),(b)) -# endif -/* More backward compatibility */ -# define SSL_get_cipher(s) \ - SSL_CIPHER_get_name(SSL_get_current_cipher(s)) -# define SSL_get_cipher_bits(s,np) \ - SSL_CIPHER_get_bits(SSL_get_current_cipher(s),np) -# define SSL_get_cipher_version(s) \ - SSL_CIPHER_get_version(SSL_get_current_cipher(s)) -# define SSL_get_cipher_name(s) \ - SSL_CIPHER_get_name(SSL_get_current_cipher(s)) -# define SSL_get_time(a) SSL_SESSION_get_time(a) -# define SSL_set_time(a,b) SSL_SESSION_set_time((a),(b)) -# define SSL_get_timeout(a) SSL_SESSION_get_timeout(a) -# define SSL_set_timeout(a,b) SSL_SESSION_set_timeout((a),(b)) - -# define d2i_SSL_SESSION_bio(bp,s_id) ASN1_d2i_bio_of(SSL_SESSION,SSL_SESSION_new,d2i_SSL_SESSION,bp,s_id) -# define i2d_SSL_SESSION_bio(bp,s_id) ASN1_i2d_bio_of(SSL_SESSION,i2d_SSL_SESSION,bp,s_id) - -DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION) -# define SSL_AD_REASON_OFFSET 1000/* offset to get SSL_R_... value - * from SSL_AD_... */ -/* These alert types are for SSLv3 and TLSv1 */ -# define SSL_AD_CLOSE_NOTIFY SSL3_AD_CLOSE_NOTIFY -/* fatal */ -# define SSL_AD_UNEXPECTED_MESSAGE SSL3_AD_UNEXPECTED_MESSAGE -/* fatal */ -# define SSL_AD_BAD_RECORD_MAC SSL3_AD_BAD_RECORD_MAC -# define SSL_AD_DECRYPTION_FAILED TLS1_AD_DECRYPTION_FAILED -# define SSL_AD_RECORD_OVERFLOW TLS1_AD_RECORD_OVERFLOW -/* fatal */ -# define SSL_AD_DECOMPRESSION_FAILURE SSL3_AD_DECOMPRESSION_FAILURE -/* fatal */ -# define SSL_AD_HANDSHAKE_FAILURE SSL3_AD_HANDSHAKE_FAILURE -/* Not for TLS */ -# define SSL_AD_NO_CERTIFICATE SSL3_AD_NO_CERTIFICATE -# define SSL_AD_BAD_CERTIFICATE SSL3_AD_BAD_CERTIFICATE -# define SSL_AD_UNSUPPORTED_CERTIFICATE SSL3_AD_UNSUPPORTED_CERTIFICATE -# define SSL_AD_CERTIFICATE_REVOKED SSL3_AD_CERTIFICATE_REVOKED -# define SSL_AD_CERTIFICATE_EXPIRED SSL3_AD_CERTIFICATE_EXPIRED -# define SSL_AD_CERTIFICATE_UNKNOWN SSL3_AD_CERTIFICATE_UNKNOWN -/* fatal */ -# define SSL_AD_ILLEGAL_PARAMETER SSL3_AD_ILLEGAL_PARAMETER -/* fatal */ -# define SSL_AD_UNKNOWN_CA TLS1_AD_UNKNOWN_CA -/* fatal */ -# define SSL_AD_ACCESS_DENIED TLS1_AD_ACCESS_DENIED -/* fatal */ -# define SSL_AD_DECODE_ERROR TLS1_AD_DECODE_ERROR -# define SSL_AD_DECRYPT_ERROR TLS1_AD_DECRYPT_ERROR -/* fatal */ -# define SSL_AD_EXPORT_RESTRICTION TLS1_AD_EXPORT_RESTRICTION -/* fatal */ -# define SSL_AD_PROTOCOL_VERSION TLS1_AD_PROTOCOL_VERSION -/* fatal */ -# define SSL_AD_INSUFFICIENT_SECURITY TLS1_AD_INSUFFICIENT_SECURITY -/* fatal */ -# define SSL_AD_INTERNAL_ERROR TLS1_AD_INTERNAL_ERROR -# define SSL_AD_USER_CANCELLED TLS1_AD_USER_CANCELLED -# define SSL_AD_NO_RENEGOTIATION TLS1_AD_NO_RENEGOTIATION -# define SSL_AD_UNSUPPORTED_EXTENSION TLS1_AD_UNSUPPORTED_EXTENSION -# define SSL_AD_CERTIFICATE_UNOBTAINABLE TLS1_AD_CERTIFICATE_UNOBTAINABLE -# define SSL_AD_UNRECOGNIZED_NAME TLS1_AD_UNRECOGNIZED_NAME -# define SSL_AD_BAD_CERTIFICATE_STATUS_RESPONSE TLS1_AD_BAD_CERTIFICATE_STATUS_RESPONSE -# define SSL_AD_BAD_CERTIFICATE_HASH_VALUE TLS1_AD_BAD_CERTIFICATE_HASH_VALUE -/* fatal */ -# define SSL_AD_UNKNOWN_PSK_IDENTITY TLS1_AD_UNKNOWN_PSK_IDENTITY -/* fatal */ -# define SSL_AD_INAPPROPRIATE_FALLBACK TLS1_AD_INAPPROPRIATE_FALLBACK -# define SSL_ERROR_NONE 0 -# define SSL_ERROR_SSL 1 -# define SSL_ERROR_WANT_READ 2 -# define SSL_ERROR_WANT_WRITE 3 -# define SSL_ERROR_WANT_X509_LOOKUP 4 -# define SSL_ERROR_SYSCALL 5/* look at error stack/return - * value/errno */ -# define SSL_ERROR_ZERO_RETURN 6 -# define SSL_ERROR_WANT_CONNECT 7 -# define SSL_ERROR_WANT_ACCEPT 8 -# define SSL_CTRL_NEED_TMP_RSA 1 -# define SSL_CTRL_SET_TMP_RSA 2 -# define SSL_CTRL_SET_TMP_DH 3 -# define SSL_CTRL_SET_TMP_ECDH 4 -# define SSL_CTRL_SET_TMP_RSA_CB 5 -# define SSL_CTRL_SET_TMP_DH_CB 6 -# define SSL_CTRL_SET_TMP_ECDH_CB 7 -# define SSL_CTRL_GET_SESSION_REUSED 8 -# define SSL_CTRL_GET_CLIENT_CERT_REQUEST 9 -# define SSL_CTRL_GET_NUM_RENEGOTIATIONS 10 -# define SSL_CTRL_CLEAR_NUM_RENEGOTIATIONS 11 -# define SSL_CTRL_GET_TOTAL_RENEGOTIATIONS 12 -# define SSL_CTRL_GET_FLAGS 13 -# define SSL_CTRL_EXTRA_CHAIN_CERT 14 -# define SSL_CTRL_SET_MSG_CALLBACK 15 -# define SSL_CTRL_SET_MSG_CALLBACK_ARG 16 -/* only applies to datagram connections */ -# define SSL_CTRL_SET_MTU 17 -/* Stats */ -# define SSL_CTRL_SESS_NUMBER 20 -# define SSL_CTRL_SESS_CONNECT 21 -# define SSL_CTRL_SESS_CONNECT_GOOD 22 -# define SSL_CTRL_SESS_CONNECT_RENEGOTIATE 23 -# define SSL_CTRL_SESS_ACCEPT 24 -# define SSL_CTRL_SESS_ACCEPT_GOOD 25 -# define SSL_CTRL_SESS_ACCEPT_RENEGOTIATE 26 -# define SSL_CTRL_SESS_HIT 27 -# define SSL_CTRL_SESS_CB_HIT 28 -# define SSL_CTRL_SESS_MISSES 29 -# define SSL_CTRL_SESS_TIMEOUTS 30 -# define SSL_CTRL_SESS_CACHE_FULL 31 -# define SSL_CTRL_OPTIONS 32 -# define SSL_CTRL_MODE 33 -# define SSL_CTRL_GET_READ_AHEAD 40 -# define SSL_CTRL_SET_READ_AHEAD 41 -# define SSL_CTRL_SET_SESS_CACHE_SIZE 42 -# define SSL_CTRL_GET_SESS_CACHE_SIZE 43 -# define SSL_CTRL_SET_SESS_CACHE_MODE 44 -# define SSL_CTRL_GET_SESS_CACHE_MODE 45 -# define SSL_CTRL_GET_MAX_CERT_LIST 50 -# define SSL_CTRL_SET_MAX_CERT_LIST 51 -# define SSL_CTRL_SET_MAX_SEND_FRAGMENT 52 -/* see tls1.h for macros based on these */ -# ifndef OPENSSL_NO_TLSEXT -# define SSL_CTRL_SET_TLSEXT_SERVERNAME_CB 53 -# define SSL_CTRL_SET_TLSEXT_SERVERNAME_ARG 54 -# define SSL_CTRL_SET_TLSEXT_HOSTNAME 55 -# define SSL_CTRL_SET_TLSEXT_DEBUG_CB 56 -# define SSL_CTRL_SET_TLSEXT_DEBUG_ARG 57 -# define SSL_CTRL_GET_TLSEXT_TICKET_KEYS 58 -# define SSL_CTRL_SET_TLSEXT_TICKET_KEYS 59 -# define SSL_CTRL_SET_TLSEXT_OPAQUE_PRF_INPUT 60 -# define SSL_CTRL_SET_TLSEXT_OPAQUE_PRF_INPUT_CB 61 -# define SSL_CTRL_SET_TLSEXT_OPAQUE_PRF_INPUT_CB_ARG 62 -# define SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB 63 -# define SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB_ARG 64 -# define SSL_CTRL_SET_TLSEXT_STATUS_REQ_TYPE 65 -# define SSL_CTRL_GET_TLSEXT_STATUS_REQ_EXTS 66 -# define SSL_CTRL_SET_TLSEXT_STATUS_REQ_EXTS 67 -# define SSL_CTRL_GET_TLSEXT_STATUS_REQ_IDS 68 -# define SSL_CTRL_SET_TLSEXT_STATUS_REQ_IDS 69 -# define SSL_CTRL_GET_TLSEXT_STATUS_REQ_OCSP_RESP 70 -# define SSL_CTRL_SET_TLSEXT_STATUS_REQ_OCSP_RESP 71 -# define SSL_CTRL_SET_TLSEXT_TICKET_KEY_CB 72 -# define SSL_CTRL_SET_TLS_EXT_SRP_USERNAME_CB 75 -# define SSL_CTRL_SET_SRP_VERIFY_PARAM_CB 76 -# define SSL_CTRL_SET_SRP_GIVE_CLIENT_PWD_CB 77 -# define SSL_CTRL_SET_SRP_ARG 78 -# define SSL_CTRL_SET_TLS_EXT_SRP_USERNAME 79 -# define SSL_CTRL_SET_TLS_EXT_SRP_STRENGTH 80 -# define SSL_CTRL_SET_TLS_EXT_SRP_PASSWORD 81 -# ifndef OPENSSL_NO_HEARTBEATS -# define SSL_CTRL_TLS_EXT_SEND_HEARTBEAT 85 -# define SSL_CTRL_GET_TLS_EXT_HEARTBEAT_PENDING 86 -# define SSL_CTRL_SET_TLS_EXT_HEARTBEAT_NO_REQUESTS 87 -# endif -# endif /* OPENSSL_NO_TLSEXT */ -# define DTLS_CTRL_GET_TIMEOUT 73 -# define DTLS_CTRL_HANDLE_TIMEOUT 74 -# define DTLS_CTRL_LISTEN 75 -# define SSL_CTRL_GET_RI_SUPPORT 76 -# define SSL_CTRL_CLEAR_OPTIONS 77 -# define SSL_CTRL_CLEAR_MODE 78 -# define SSL_CTRL_GET_EXTRA_CHAIN_CERTS 82 -# define SSL_CTRL_CLEAR_EXTRA_CHAIN_CERTS 83 -# define SSL_CTRL_CHAIN 88 -# define SSL_CTRL_CHAIN_CERT 89 -# define SSL_CTRL_GET_CURVES 90 -# define SSL_CTRL_SET_CURVES 91 -# define SSL_CTRL_SET_CURVES_LIST 92 -# define SSL_CTRL_GET_SHARED_CURVE 93 -# define SSL_CTRL_SET_ECDH_AUTO 94 -# define SSL_CTRL_SET_SIGALGS 97 -# define SSL_CTRL_SET_SIGALGS_LIST 98 -# define SSL_CTRL_CERT_FLAGS 99 -# define SSL_CTRL_CLEAR_CERT_FLAGS 100 -# define SSL_CTRL_SET_CLIENT_SIGALGS 101 -# define SSL_CTRL_SET_CLIENT_SIGALGS_LIST 102 -# define SSL_CTRL_GET_CLIENT_CERT_TYPES 103 -# define SSL_CTRL_SET_CLIENT_CERT_TYPES 104 -# define SSL_CTRL_BUILD_CERT_CHAIN 105 -# define SSL_CTRL_SET_VERIFY_CERT_STORE 106 -# define SSL_CTRL_SET_CHAIN_CERT_STORE 107 -# define SSL_CTRL_GET_PEER_SIGNATURE_NID 108 -# define SSL_CTRL_GET_SERVER_TMP_KEY 109 -# define SSL_CTRL_GET_RAW_CIPHERLIST 110 -# define SSL_CTRL_GET_EC_POINT_FORMATS 111 -# define SSL_CTRL_GET_CHAIN_CERTS 115 -# define SSL_CTRL_SELECT_CURRENT_CERT 116 -# define SSL_CTRL_SET_CURRENT_CERT 117 -# define SSL_CTRL_CHECK_PROTO_VERSION 119 -# define DTLS_CTRL_SET_LINK_MTU 120 -# define DTLS_CTRL_GET_LINK_MIN_MTU 121 -# define SSL_CERT_SET_FIRST 1 -# define SSL_CERT_SET_NEXT 2 -# define SSL_CERT_SET_SERVER 3 -# define DTLSv1_get_timeout(ssl, arg) \ - SSL_ctrl(ssl,DTLS_CTRL_GET_TIMEOUT,0, (void *)arg) -# define DTLSv1_handle_timeout(ssl) \ - SSL_ctrl(ssl,DTLS_CTRL_HANDLE_TIMEOUT,0, NULL) -# define DTLSv1_listen(ssl, peer) \ - SSL_ctrl(ssl,DTLS_CTRL_LISTEN,0, (void *)peer) -# define SSL_session_reused(ssl) \ - SSL_ctrl((ssl),SSL_CTRL_GET_SESSION_REUSED,0,NULL) -# define SSL_num_renegotiations(ssl) \ - SSL_ctrl((ssl),SSL_CTRL_GET_NUM_RENEGOTIATIONS,0,NULL) -# define SSL_clear_num_renegotiations(ssl) \ - SSL_ctrl((ssl),SSL_CTRL_CLEAR_NUM_RENEGOTIATIONS,0,NULL) -# define SSL_total_renegotiations(ssl) \ - SSL_ctrl((ssl),SSL_CTRL_GET_TOTAL_RENEGOTIATIONS,0,NULL) -# define SSL_CTX_need_tmp_RSA(ctx) \ - SSL_CTX_ctrl(ctx,SSL_CTRL_NEED_TMP_RSA,0,NULL) -# define SSL_CTX_set_tmp_rsa(ctx,rsa) \ - SSL_CTX_ctrl(ctx,SSL_CTRL_SET_TMP_RSA,0,(char *)rsa) -# define SSL_CTX_set_tmp_dh(ctx,dh) \ - SSL_CTX_ctrl(ctx,SSL_CTRL_SET_TMP_DH,0,(char *)dh) -# define SSL_CTX_set_tmp_ecdh(ctx,ecdh) \ - SSL_CTX_ctrl(ctx,SSL_CTRL_SET_TMP_ECDH,0,(char *)ecdh) -# define SSL_need_tmp_RSA(ssl) \ - SSL_ctrl(ssl,SSL_CTRL_NEED_TMP_RSA,0,NULL) -# define SSL_set_tmp_rsa(ssl,rsa) \ - SSL_ctrl(ssl,SSL_CTRL_SET_TMP_RSA,0,(char *)rsa) -# define SSL_set_tmp_dh(ssl,dh) \ - SSL_ctrl(ssl,SSL_CTRL_SET_TMP_DH,0,(char *)dh) -# define SSL_set_tmp_ecdh(ssl,ecdh) \ - SSL_ctrl(ssl,SSL_CTRL_SET_TMP_ECDH,0,(char *)ecdh) -# define SSL_CTX_add_extra_chain_cert(ctx,x509) \ - SSL_CTX_ctrl(ctx,SSL_CTRL_EXTRA_CHAIN_CERT,0,(char *)x509) -# define SSL_CTX_get_extra_chain_certs(ctx,px509) \ - SSL_CTX_ctrl(ctx,SSL_CTRL_GET_EXTRA_CHAIN_CERTS,0,px509) -# define SSL_CTX_get_extra_chain_certs_only(ctx,px509) \ - SSL_CTX_ctrl(ctx,SSL_CTRL_GET_EXTRA_CHAIN_CERTS,1,px509) -# define SSL_CTX_clear_extra_chain_certs(ctx) \ - SSL_CTX_ctrl(ctx,SSL_CTRL_CLEAR_EXTRA_CHAIN_CERTS,0,NULL) -# define SSL_CTX_set0_chain(ctx,sk) \ - SSL_CTX_ctrl(ctx,SSL_CTRL_CHAIN,0,(char *)sk) -# define SSL_CTX_set1_chain(ctx,sk) \ - SSL_CTX_ctrl(ctx,SSL_CTRL_CHAIN,1,(char *)sk) -# define SSL_CTX_add0_chain_cert(ctx,x509) \ - SSL_CTX_ctrl(ctx,SSL_CTRL_CHAIN_CERT,0,(char *)x509) -# define SSL_CTX_add1_chain_cert(ctx,x509) \ - SSL_CTX_ctrl(ctx,SSL_CTRL_CHAIN_CERT,1,(char *)x509) -# define SSL_CTX_get0_chain_certs(ctx,px509) \ - SSL_CTX_ctrl(ctx,SSL_CTRL_GET_CHAIN_CERTS,0,px509) -# define SSL_CTX_clear_chain_certs(ctx) \ - SSL_CTX_set0_chain(ctx,NULL) -# define SSL_CTX_build_cert_chain(ctx, flags) \ - SSL_CTX_ctrl(ctx,SSL_CTRL_BUILD_CERT_CHAIN, flags, NULL) -# define SSL_CTX_select_current_cert(ctx,x509) \ - SSL_CTX_ctrl(ctx,SSL_CTRL_SELECT_CURRENT_CERT,0,(char *)x509) -# define SSL_CTX_set_current_cert(ctx, op) \ - SSL_CTX_ctrl(ctx,SSL_CTRL_SET_CURRENT_CERT, op, NULL) -# define SSL_CTX_set0_verify_cert_store(ctx,st) \ - SSL_CTX_ctrl(ctx,SSL_CTRL_SET_VERIFY_CERT_STORE,0,(char *)st) -# define SSL_CTX_set1_verify_cert_store(ctx,st) \ - SSL_CTX_ctrl(ctx,SSL_CTRL_SET_VERIFY_CERT_STORE,1,(char *)st) -# define SSL_CTX_set0_chain_cert_store(ctx,st) \ - SSL_CTX_ctrl(ctx,SSL_CTRL_SET_CHAIN_CERT_STORE,0,(char *)st) -# define SSL_CTX_set1_chain_cert_store(ctx,st) \ - SSL_CTX_ctrl(ctx,SSL_CTRL_SET_CHAIN_CERT_STORE,1,(char *)st) -# define SSL_set0_chain(ctx,sk) \ - SSL_ctrl(ctx,SSL_CTRL_CHAIN,0,(char *)sk) -# define SSL_set1_chain(ctx,sk) \ - SSL_ctrl(ctx,SSL_CTRL_CHAIN,1,(char *)sk) -# define SSL_add0_chain_cert(ctx,x509) \ - SSL_ctrl(ctx,SSL_CTRL_CHAIN_CERT,0,(char *)x509) -# define SSL_add1_chain_cert(ctx,x509) \ - SSL_ctrl(ctx,SSL_CTRL_CHAIN_CERT,1,(char *)x509) -# define SSL_get0_chain_certs(ctx,px509) \ - SSL_ctrl(ctx,SSL_CTRL_GET_CHAIN_CERTS,0,px509) -# define SSL_clear_chain_certs(ctx) \ - SSL_set0_chain(ctx,NULL) -# define SSL_build_cert_chain(s, flags) \ - SSL_ctrl(s,SSL_CTRL_BUILD_CERT_CHAIN, flags, NULL) -# define SSL_select_current_cert(ctx,x509) \ - SSL_ctrl(ctx,SSL_CTRL_SELECT_CURRENT_CERT,0,(char *)x509) -# define SSL_set_current_cert(ctx,op) \ - SSL_ctrl(ctx,SSL_CTRL_SET_CURRENT_CERT, op, NULL) -# define SSL_set0_verify_cert_store(s,st) \ - SSL_ctrl(s,SSL_CTRL_SET_VERIFY_CERT_STORE,0,(char *)st) -# define SSL_set1_verify_cert_store(s,st) \ - SSL_ctrl(s,SSL_CTRL_SET_VERIFY_CERT_STORE,1,(char *)st) -# define SSL_set0_chain_cert_store(s,st) \ - SSL_ctrl(s,SSL_CTRL_SET_CHAIN_CERT_STORE,0,(char *)st) -# define SSL_set1_chain_cert_store(s,st) \ - SSL_ctrl(s,SSL_CTRL_SET_CHAIN_CERT_STORE,1,(char *)st) -# define SSL_get1_curves(ctx, s) \ - SSL_ctrl(ctx,SSL_CTRL_GET_CURVES,0,(char *)s) -# define SSL_CTX_set1_curves(ctx, clist, clistlen) \ - SSL_CTX_ctrl(ctx,SSL_CTRL_SET_CURVES,clistlen,(char *)clist) -# define SSL_CTX_set1_curves_list(ctx, s) \ - SSL_CTX_ctrl(ctx,SSL_CTRL_SET_CURVES_LIST,0,(char *)s) -# define SSL_set1_curves(ctx, clist, clistlen) \ - SSL_ctrl(ctx,SSL_CTRL_SET_CURVES,clistlen,(char *)clist) -# define SSL_set1_curves_list(ctx, s) \ - SSL_ctrl(ctx,SSL_CTRL_SET_CURVES_LIST,0,(char *)s) -# define SSL_get_shared_curve(s, n) \ - SSL_ctrl(s,SSL_CTRL_GET_SHARED_CURVE,n,NULL) -# define SSL_CTX_set_ecdh_auto(ctx, onoff) \ - SSL_CTX_ctrl(ctx,SSL_CTRL_SET_ECDH_AUTO,onoff,NULL) -# define SSL_set_ecdh_auto(s, onoff) \ - SSL_ctrl(s,SSL_CTRL_SET_ECDH_AUTO,onoff,NULL) -# define SSL_CTX_set1_sigalgs(ctx, slist, slistlen) \ - SSL_CTX_ctrl(ctx,SSL_CTRL_SET_SIGALGS,slistlen,(int *)slist) -# define SSL_CTX_set1_sigalgs_list(ctx, s) \ - SSL_CTX_ctrl(ctx,SSL_CTRL_SET_SIGALGS_LIST,0,(char *)s) -# define SSL_set1_sigalgs(ctx, slist, slistlen) \ - SSL_ctrl(ctx,SSL_CTRL_SET_SIGALGS,clistlen,(int *)slist) -# define SSL_set1_sigalgs_list(ctx, s) \ - SSL_ctrl(ctx,SSL_CTRL_SET_SIGALGS_LIST,0,(char *)s) -# define SSL_CTX_set1_client_sigalgs(ctx, slist, slistlen) \ - SSL_CTX_ctrl(ctx,SSL_CTRL_SET_CLIENT_SIGALGS,slistlen,(int *)slist) -# define SSL_CTX_set1_client_sigalgs_list(ctx, s) \ - SSL_CTX_ctrl(ctx,SSL_CTRL_SET_CLIENT_SIGALGS_LIST,0,(char *)s) -# define SSL_set1_client_sigalgs(ctx, slist, slistlen) \ - SSL_ctrl(ctx,SSL_CTRL_SET_CLIENT_SIGALGS,clistlen,(int *)slist) -# define SSL_set1_client_sigalgs_list(ctx, s) \ - SSL_ctrl(ctx,SSL_CTRL_SET_CLIENT_SIGALGS_LIST,0,(char *)s) -# define SSL_get0_certificate_types(s, clist) \ - SSL_ctrl(s, SSL_CTRL_GET_CLIENT_CERT_TYPES, 0, (char *)clist) -# define SSL_CTX_set1_client_certificate_types(ctx, clist, clistlen) \ - SSL_CTX_ctrl(ctx,SSL_CTRL_SET_CLIENT_CERT_TYPES,clistlen,(char *)clist) -# define SSL_set1_client_certificate_types(s, clist, clistlen) \ - SSL_ctrl(s,SSL_CTRL_SET_CLIENT_CERT_TYPES,clistlen,(char *)clist) -# define SSL_get_peer_signature_nid(s, pn) \ - SSL_ctrl(s,SSL_CTRL_GET_PEER_SIGNATURE_NID,0,pn) -# define SSL_get_server_tmp_key(s, pk) \ - SSL_ctrl(s,SSL_CTRL_GET_SERVER_TMP_KEY,0,pk) -# define SSL_get0_raw_cipherlist(s, plst) \ - SSL_ctrl(s,SSL_CTRL_GET_RAW_CIPHERLIST,0,(char *)plst) -# define SSL_get0_ec_point_formats(s, plst) \ - SSL_ctrl(s,SSL_CTRL_GET_EC_POINT_FORMATS,0,(char *)plst) -# ifndef OPENSSL_NO_BIO -BIO_METHOD *BIO_f_ssl(void); -BIO *BIO_new_ssl(SSL_CTX *ctx, int client); -BIO *BIO_new_ssl_connect(SSL_CTX *ctx); -BIO *BIO_new_buffer_ssl_connect(SSL_CTX *ctx); -int BIO_ssl_copy_session_id(BIO *to, BIO *from); -void BIO_ssl_shutdown(BIO *ssl_bio); - -# endif - -int SSL_CTX_set_cipher_list(SSL_CTX *, const char *str); -SSL_CTX *SSL_CTX_new(const SSL_METHOD *meth); -void SSL_CTX_free(SSL_CTX *); -long SSL_CTX_set_timeout(SSL_CTX *ctx, long t); -long SSL_CTX_get_timeout(const SSL_CTX *ctx); -X509_STORE *SSL_CTX_get_cert_store(const SSL_CTX *); -void SSL_CTX_set_cert_store(SSL_CTX *, X509_STORE *); -int SSL_want(const SSL *s); -int SSL_clear(SSL *s); - -void SSL_CTX_flush_sessions(SSL_CTX *ctx, long tm); - -const SSL_CIPHER *SSL_get_current_cipher(const SSL *s); -int SSL_CIPHER_get_bits(const SSL_CIPHER *c, int *alg_bits); -char *SSL_CIPHER_get_version(const SSL_CIPHER *c); -const char *SSL_CIPHER_get_name(const SSL_CIPHER *c); -unsigned long SSL_CIPHER_get_id(const SSL_CIPHER *c); - -int SSL_get_fd(const SSL *s); -int SSL_get_rfd(const SSL *s); -int SSL_get_wfd(const SSL *s); -const char *SSL_get_cipher_list(const SSL *s, int n); -char *SSL_get_shared_ciphers(const SSL *s, char *buf, int len); -int SSL_get_read_ahead(const SSL *s); -int SSL_pending(const SSL *s); -# ifndef OPENSSL_NO_SOCK -int SSL_set_fd(SSL *s, int fd); -int SSL_set_rfd(SSL *s, int fd); -int SSL_set_wfd(SSL *s, int fd); -# endif -# ifndef OPENSSL_NO_BIO -void SSL_set_bio(SSL *s, BIO *rbio, BIO *wbio); -BIO *SSL_get_rbio(const SSL *s); -BIO *SSL_get_wbio(const SSL *s); -# endif -int SSL_set_cipher_list(SSL *s, const char *str); -void SSL_set_read_ahead(SSL *s, int yes); -int SSL_get_verify_mode(const SSL *s); -int SSL_get_verify_depth(const SSL *s); -int (*SSL_get_verify_callback(const SSL *s)) (int, X509_STORE_CTX *); -void SSL_set_verify(SSL *s, int mode, - int (*callback) (int ok, X509_STORE_CTX *ctx)); -void SSL_set_verify_depth(SSL *s, int depth); -void SSL_set_cert_cb(SSL *s, int (*cb) (SSL *ssl, void *arg), void *arg); -# ifndef OPENSSL_NO_RSA -int SSL_use_RSAPrivateKey(SSL *ssl, RSA *rsa); -# endif -int SSL_use_RSAPrivateKey_ASN1(SSL *ssl, unsigned char *d, long len); -int SSL_use_PrivateKey(SSL *ssl, EVP_PKEY *pkey); -int SSL_use_PrivateKey_ASN1(int pk, SSL *ssl, const unsigned char *d, - long len); -int SSL_use_certificate(SSL *ssl, X509 *x); -int SSL_use_certificate_ASN1(SSL *ssl, const unsigned char *d, int len); - -# ifndef OPENSSL_NO_TLSEXT -/* Set serverinfo data for the current active cert. */ -int SSL_CTX_use_serverinfo(SSL_CTX *ctx, const unsigned char *serverinfo, - size_t serverinfo_length); -# ifndef OPENSSL_NO_STDIO -int SSL_CTX_use_serverinfo_file(SSL_CTX *ctx, const char *file); -# endif /* NO_STDIO */ - -# endif - -# ifndef OPENSSL_NO_STDIO -int SSL_use_RSAPrivateKey_file(SSL *ssl, const char *file, int type); -int SSL_use_PrivateKey_file(SSL *ssl, const char *file, int type); -int SSL_use_certificate_file(SSL *ssl, const char *file, int type); -int SSL_CTX_use_RSAPrivateKey_file(SSL_CTX *ctx, const char *file, int type); -int SSL_CTX_use_PrivateKey_file(SSL_CTX *ctx, const char *file, int type); -int SSL_CTX_use_certificate_file(SSL_CTX *ctx, const char *file, int type); -/* PEM type */ -int SSL_CTX_use_certificate_chain_file(SSL_CTX *ctx, const char *file); -STACK_OF(X509_NAME) *SSL_load_client_CA_file(const char *file); -int SSL_add_file_cert_subjects_to_stack(STACK_OF(X509_NAME) *stackCAs, - const char *file); -# ifndef OPENSSL_SYS_VMS -/* XXXXX: Better scheme needed! [was: #ifndef MAC_OS_pre_X] */ -# ifndef OPENSSL_SYS_MACINTOSH_CLASSIC -int SSL_add_dir_cert_subjects_to_stack(STACK_OF(X509_NAME) *stackCAs, - const char *dir); -# endif -# endif - -# endif - -void SSL_load_error_strings(void); -const char *SSL_state_string(const SSL *s); -const char *SSL_rstate_string(const SSL *s); -const char *SSL_state_string_long(const SSL *s); -const char *SSL_rstate_string_long(const SSL *s); -long SSL_SESSION_get_time(const SSL_SESSION *s); -long SSL_SESSION_set_time(SSL_SESSION *s, long t); -long SSL_SESSION_get_timeout(const SSL_SESSION *s); -long SSL_SESSION_set_timeout(SSL_SESSION *s, long t); -void SSL_copy_session_id(SSL *to, const SSL *from); -X509 *SSL_SESSION_get0_peer(SSL_SESSION *s); -int SSL_SESSION_set1_id_context(SSL_SESSION *s, const unsigned char *sid_ctx, - unsigned int sid_ctx_len); - -SSL_SESSION *SSL_SESSION_new(void); -const unsigned char *SSL_SESSION_get_id(const SSL_SESSION *s, - unsigned int *len); -unsigned int SSL_SESSION_get_compress_id(const SSL_SESSION *s); -# ifndef OPENSSL_NO_FP_API -int SSL_SESSION_print_fp(FILE *fp, const SSL_SESSION *ses); -# endif -# ifndef OPENSSL_NO_BIO -int SSL_SESSION_print(BIO *fp, const SSL_SESSION *ses); -# endif -void SSL_SESSION_free(SSL_SESSION *ses); -int i2d_SSL_SESSION(SSL_SESSION *in, unsigned char **pp); -int SSL_set_session(SSL *to, SSL_SESSION *session); -int SSL_CTX_add_session(SSL_CTX *s, SSL_SESSION *c); -int SSL_CTX_remove_session(SSL_CTX *, SSL_SESSION *c); -int SSL_CTX_set_generate_session_id(SSL_CTX *, GEN_SESSION_CB); -int SSL_set_generate_session_id(SSL *, GEN_SESSION_CB); -int SSL_has_matching_session_id(const SSL *ssl, const unsigned char *id, - unsigned int id_len); -SSL_SESSION *d2i_SSL_SESSION(SSL_SESSION **a, const unsigned char **pp, - long length); - -# ifdef HEADER_X509_H -X509 *SSL_get_peer_certificate(const SSL *s); -# endif - -STACK_OF(X509) *SSL_get_peer_cert_chain(const SSL *s); - -int SSL_CTX_get_verify_mode(const SSL_CTX *ctx); -int SSL_CTX_get_verify_depth(const SSL_CTX *ctx); -int (*SSL_CTX_get_verify_callback(const SSL_CTX *ctx)) (int, - X509_STORE_CTX *); -void SSL_CTX_set_verify(SSL_CTX *ctx, int mode, - int (*callback) (int, X509_STORE_CTX *)); -void SSL_CTX_set_verify_depth(SSL_CTX *ctx, int depth); -void SSL_CTX_set_cert_verify_callback(SSL_CTX *ctx, - int (*cb) (X509_STORE_CTX *, void *), - void *arg); -void SSL_CTX_set_cert_cb(SSL_CTX *c, int (*cb) (SSL *ssl, void *arg), - void *arg); -# ifndef OPENSSL_NO_RSA -int SSL_CTX_use_RSAPrivateKey(SSL_CTX *ctx, RSA *rsa); -# endif -int SSL_CTX_use_RSAPrivateKey_ASN1(SSL_CTX *ctx, const unsigned char *d, - long len); -int SSL_CTX_use_PrivateKey(SSL_CTX *ctx, EVP_PKEY *pkey); -int SSL_CTX_use_PrivateKey_ASN1(int pk, SSL_CTX *ctx, - const unsigned char *d, long len); -int SSL_CTX_use_certificate(SSL_CTX *ctx, X509 *x); -int SSL_CTX_use_certificate_ASN1(SSL_CTX *ctx, int len, - const unsigned char *d); - -void SSL_CTX_set_default_passwd_cb(SSL_CTX *ctx, pem_password_cb *cb); -void SSL_CTX_set_default_passwd_cb_userdata(SSL_CTX *ctx, void *u); - -int SSL_CTX_check_private_key(const SSL_CTX *ctx); -int SSL_check_private_key(const SSL *ctx); - -int SSL_CTX_set_session_id_context(SSL_CTX *ctx, const unsigned char *sid_ctx, - unsigned int sid_ctx_len); - -SSL *SSL_new(SSL_CTX *ctx); -int SSL_set_session_id_context(SSL *ssl, const unsigned char *sid_ctx, - unsigned int sid_ctx_len); - -int SSL_CTX_set_purpose(SSL_CTX *s, int purpose); -int SSL_set_purpose(SSL *s, int purpose); -int SSL_CTX_set_trust(SSL_CTX *s, int trust); -int SSL_set_trust(SSL *s, int trust); - -int SSL_CTX_set1_param(SSL_CTX *ctx, X509_VERIFY_PARAM *vpm); -int SSL_set1_param(SSL *ssl, X509_VERIFY_PARAM *vpm); - -X509_VERIFY_PARAM *SSL_CTX_get0_param(SSL_CTX *ctx); -X509_VERIFY_PARAM *SSL_get0_param(SSL *ssl); - -# ifndef OPENSSL_NO_SRP -int SSL_CTX_set_srp_username(SSL_CTX *ctx, char *name); -int SSL_CTX_set_srp_password(SSL_CTX *ctx, char *password); -int SSL_CTX_set_srp_strength(SSL_CTX *ctx, int strength); -int SSL_CTX_set_srp_client_pwd_callback(SSL_CTX *ctx, - char *(*cb) (SSL *, void *)); -int SSL_CTX_set_srp_verify_param_callback(SSL_CTX *ctx, - int (*cb) (SSL *, void *)); -int SSL_CTX_set_srp_username_callback(SSL_CTX *ctx, - int (*cb) (SSL *, int *, void *)); -int SSL_CTX_set_srp_cb_arg(SSL_CTX *ctx, void *arg); - -int SSL_set_srp_server_param(SSL *s, const BIGNUM *N, const BIGNUM *g, - BIGNUM *sa, BIGNUM *v, char *info); -int SSL_set_srp_server_param_pw(SSL *s, const char *user, const char *pass, - const char *grp); - -BIGNUM *SSL_get_srp_g(SSL *s); -BIGNUM *SSL_get_srp_N(SSL *s); - -char *SSL_get_srp_username(SSL *s); -char *SSL_get_srp_userinfo(SSL *s); -# endif - -void SSL_certs_clear(SSL *s); -void SSL_free(SSL *ssl); -int SSL_accept(SSL *ssl); -int SSL_connect(SSL *ssl); -int SSL_read(SSL *ssl, void *buf, int num); -int SSL_peek(SSL *ssl, void *buf, int num); -int SSL_write(SSL *ssl, const void *buf, int num); -long SSL_ctrl(SSL *ssl, int cmd, long larg, void *parg); -long SSL_callback_ctrl(SSL *, int, void (*)(void)); -long SSL_CTX_ctrl(SSL_CTX *ctx, int cmd, long larg, void *parg); -long SSL_CTX_callback_ctrl(SSL_CTX *, int, void (*)(void)); - -int SSL_get_error(const SSL *s, int ret_code); -const char *SSL_get_version(const SSL *s); - -/* This sets the 'default' SSL version that SSL_new() will create */ -int SSL_CTX_set_ssl_version(SSL_CTX *ctx, const SSL_METHOD *meth); - -# ifndef OPENSSL_NO_SSL2 -const SSL_METHOD *SSLv2_method(void); /* SSLv2 */ -const SSL_METHOD *SSLv2_server_method(void); /* SSLv2 */ -const SSL_METHOD *SSLv2_client_method(void); /* SSLv2 */ -# endif - -# ifndef OPENSSL_NO_SSL3_METHOD -const SSL_METHOD *SSLv3_method(void); /* SSLv3 */ -const SSL_METHOD *SSLv3_server_method(void); /* SSLv3 */ -const SSL_METHOD *SSLv3_client_method(void); /* SSLv3 */ -# endif - -const SSL_METHOD *SSLv23_method(void); /* Negotiate highest available SSL/TLS - * version */ -const SSL_METHOD *SSLv23_server_method(void); /* Negotiate highest available - * SSL/TLS version */ -const SSL_METHOD *SSLv23_client_method(void); /* Negotiate highest available - * SSL/TLS version */ - -const SSL_METHOD *TLSv1_method(void); /* TLSv1.0 */ -const SSL_METHOD *TLSv1_server_method(void); /* TLSv1.0 */ -const SSL_METHOD *TLSv1_client_method(void); /* TLSv1.0 */ - -const SSL_METHOD *TLSv1_1_method(void); /* TLSv1.1 */ -const SSL_METHOD *TLSv1_1_server_method(void); /* TLSv1.1 */ -const SSL_METHOD *TLSv1_1_client_method(void); /* TLSv1.1 */ - -const SSL_METHOD *TLSv1_2_method(void); /* TLSv1.2 */ -const SSL_METHOD *TLSv1_2_server_method(void); /* TLSv1.2 */ -const SSL_METHOD *TLSv1_2_client_method(void); /* TLSv1.2 */ - -const SSL_METHOD *DTLSv1_method(void); /* DTLSv1.0 */ -const SSL_METHOD *DTLSv1_server_method(void); /* DTLSv1.0 */ -const SSL_METHOD *DTLSv1_client_method(void); /* DTLSv1.0 */ - -const SSL_METHOD *DTLSv1_2_method(void); /* DTLSv1.2 */ -const SSL_METHOD *DTLSv1_2_server_method(void); /* DTLSv1.2 */ -const SSL_METHOD *DTLSv1_2_client_method(void); /* DTLSv1.2 */ - -const SSL_METHOD *DTLS_method(void); /* DTLS 1.0 and 1.2 */ -const SSL_METHOD *DTLS_server_method(void); /* DTLS 1.0 and 1.2 */ -const SSL_METHOD *DTLS_client_method(void); /* DTLS 1.0 and 1.2 */ - -STACK_OF(SSL_CIPHER) *SSL_get_ciphers(const SSL *s); - -int SSL_do_handshake(SSL *s); -int SSL_renegotiate(SSL *s); -int SSL_renegotiate_abbreviated(SSL *s); -int SSL_renegotiate_pending(SSL *s); -int SSL_shutdown(SSL *s); - -const SSL_METHOD *SSL_CTX_get_ssl_method(SSL_CTX *ctx); -const SSL_METHOD *SSL_get_ssl_method(SSL *s); -int SSL_set_ssl_method(SSL *s, const SSL_METHOD *method); -const char *SSL_alert_type_string_long(int value); -const char *SSL_alert_type_string(int value); -const char *SSL_alert_desc_string_long(int value); -const char *SSL_alert_desc_string(int value); - -void SSL_set_client_CA_list(SSL *s, STACK_OF(X509_NAME) *name_list); -void SSL_CTX_set_client_CA_list(SSL_CTX *ctx, STACK_OF(X509_NAME) *name_list); -STACK_OF(X509_NAME) *SSL_get_client_CA_list(const SSL *s); -STACK_OF(X509_NAME) *SSL_CTX_get_client_CA_list(const SSL_CTX *s); -int SSL_add_client_CA(SSL *ssl, X509 *x); -int SSL_CTX_add_client_CA(SSL_CTX *ctx, X509 *x); - -void SSL_set_connect_state(SSL *s); -void SSL_set_accept_state(SSL *s); - -long SSL_get_default_timeout(const SSL *s); - -int SSL_library_init(void); - -char *SSL_CIPHER_description(const SSL_CIPHER *, char *buf, int size); -STACK_OF(X509_NAME) *SSL_dup_CA_list(STACK_OF(X509_NAME) *sk); - -SSL *SSL_dup(SSL *ssl); - -X509 *SSL_get_certificate(const SSL *ssl); -/* - * EVP_PKEY - */ struct evp_pkey_st *SSL_get_privatekey(const SSL *ssl); - -X509 *SSL_CTX_get0_certificate(const SSL_CTX *ctx); -EVP_PKEY *SSL_CTX_get0_privatekey(const SSL_CTX *ctx); - -void SSL_CTX_set_quiet_shutdown(SSL_CTX *ctx, int mode); -int SSL_CTX_get_quiet_shutdown(const SSL_CTX *ctx); -void SSL_set_quiet_shutdown(SSL *ssl, int mode); -int SSL_get_quiet_shutdown(const SSL *ssl); -void SSL_set_shutdown(SSL *ssl, int mode); -int SSL_get_shutdown(const SSL *ssl); -int SSL_version(const SSL *ssl); -int SSL_CTX_set_default_verify_paths(SSL_CTX *ctx); -int SSL_CTX_load_verify_locations(SSL_CTX *ctx, const char *CAfile, - const char *CApath); -# define SSL_get0_session SSL_get_session/* just peek at pointer */ -SSL_SESSION *SSL_get_session(const SSL *ssl); -SSL_SESSION *SSL_get1_session(SSL *ssl); /* obtain a reference count */ -SSL_CTX *SSL_get_SSL_CTX(const SSL *ssl); -SSL_CTX *SSL_set_SSL_CTX(SSL *ssl, SSL_CTX *ctx); -void SSL_set_info_callback(SSL *ssl, - void (*cb) (const SSL *ssl, int type, int val)); -void (*SSL_get_info_callback(const SSL *ssl)) (const SSL *ssl, int type, - int val); -int SSL_state(const SSL *ssl); -void SSL_set_state(SSL *ssl, int state); - -void SSL_set_verify_result(SSL *ssl, long v); -long SSL_get_verify_result(const SSL *ssl); - -int SSL_set_ex_data(SSL *ssl, int idx, void *data); -void *SSL_get_ex_data(const SSL *ssl, int idx); -int SSL_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new *new_func, - CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func); - -int SSL_SESSION_set_ex_data(SSL_SESSION *ss, int idx, void *data); -void *SSL_SESSION_get_ex_data(const SSL_SESSION *ss, int idx); -int SSL_SESSION_get_ex_new_index(long argl, void *argp, - CRYPTO_EX_new *new_func, - CRYPTO_EX_dup *dup_func, - CRYPTO_EX_free *free_func); - -int SSL_CTX_set_ex_data(SSL_CTX *ssl, int idx, void *data); -void *SSL_CTX_get_ex_data(const SSL_CTX *ssl, int idx); -int SSL_CTX_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new *new_func, - CRYPTO_EX_dup *dup_func, - CRYPTO_EX_free *free_func); - -int SSL_get_ex_data_X509_STORE_CTX_idx(void); - -# define SSL_CTX_sess_set_cache_size(ctx,t) \ - SSL_CTX_ctrl(ctx,SSL_CTRL_SET_SESS_CACHE_SIZE,t,NULL) -# define SSL_CTX_sess_get_cache_size(ctx) \ - SSL_CTX_ctrl(ctx,SSL_CTRL_GET_SESS_CACHE_SIZE,0,NULL) -# define SSL_CTX_set_session_cache_mode(ctx,m) \ - SSL_CTX_ctrl(ctx,SSL_CTRL_SET_SESS_CACHE_MODE,m,NULL) -# define SSL_CTX_get_session_cache_mode(ctx) \ - SSL_CTX_ctrl(ctx,SSL_CTRL_GET_SESS_CACHE_MODE,0,NULL) - -# define SSL_CTX_get_default_read_ahead(ctx) SSL_CTX_get_read_ahead(ctx) -# define SSL_CTX_set_default_read_ahead(ctx,m) SSL_CTX_set_read_ahead(ctx,m) -# define SSL_CTX_get_read_ahead(ctx) \ - SSL_CTX_ctrl(ctx,SSL_CTRL_GET_READ_AHEAD,0,NULL) -# define SSL_CTX_set_read_ahead(ctx,m) \ - SSL_CTX_ctrl(ctx,SSL_CTRL_SET_READ_AHEAD,m,NULL) -# define SSL_CTX_get_max_cert_list(ctx) \ - SSL_CTX_ctrl(ctx,SSL_CTRL_GET_MAX_CERT_LIST,0,NULL) -# define SSL_CTX_set_max_cert_list(ctx,m) \ - SSL_CTX_ctrl(ctx,SSL_CTRL_SET_MAX_CERT_LIST,m,NULL) -# define SSL_get_max_cert_list(ssl) \ - SSL_ctrl(ssl,SSL_CTRL_GET_MAX_CERT_LIST,0,NULL) -# define SSL_set_max_cert_list(ssl,m) \ - SSL_ctrl(ssl,SSL_CTRL_SET_MAX_CERT_LIST,m,NULL) - -# define SSL_CTX_set_max_send_fragment(ctx,m) \ - SSL_CTX_ctrl(ctx,SSL_CTRL_SET_MAX_SEND_FRAGMENT,m,NULL) -# define SSL_set_max_send_fragment(ssl,m) \ - SSL_ctrl(ssl,SSL_CTRL_SET_MAX_SEND_FRAGMENT,m,NULL) - - /* NB: the keylength is only applicable when is_export is true */ -# ifndef OPENSSL_NO_RSA -void SSL_CTX_set_tmp_rsa_callback(SSL_CTX *ctx, - RSA *(*cb) (SSL *ssl, int is_export, - int keylength)); - -void SSL_set_tmp_rsa_callback(SSL *ssl, - RSA *(*cb) (SSL *ssl, int is_export, - int keylength)); -# endif -# ifndef OPENSSL_NO_DH -void SSL_CTX_set_tmp_dh_callback(SSL_CTX *ctx, - DH *(*dh) (SSL *ssl, int is_export, - int keylength)); -void SSL_set_tmp_dh_callback(SSL *ssl, - DH *(*dh) (SSL *ssl, int is_export, - int keylength)); -# endif -# ifndef OPENSSL_NO_ECDH -void SSL_CTX_set_tmp_ecdh_callback(SSL_CTX *ctx, - EC_KEY *(*ecdh) (SSL *ssl, int is_export, - int keylength)); -void SSL_set_tmp_ecdh_callback(SSL *ssl, - EC_KEY *(*ecdh) (SSL *ssl, int is_export, - int keylength)); -# endif - -# ifndef OPENSSL_NO_COMP -const COMP_METHOD *SSL_get_current_compression(SSL *s); -const COMP_METHOD *SSL_get_current_expansion(SSL *s); -const char *SSL_COMP_get_name(const COMP_METHOD *comp); -STACK_OF(SSL_COMP) *SSL_COMP_get_compression_methods(void); -STACK_OF(SSL_COMP) *SSL_COMP_set0_compression_methods(STACK_OF(SSL_COMP) - *meths); -void SSL_COMP_free_compression_methods(void); -int SSL_COMP_add_compression_method(int id, COMP_METHOD *cm); -# else -const void *SSL_get_current_compression(SSL *s); -const void *SSL_get_current_expansion(SSL *s); -const char *SSL_COMP_get_name(const void *comp); -void *SSL_COMP_get_compression_methods(void); -int SSL_COMP_add_compression_method(int id, void *cm); -# endif - -const SSL_CIPHER *SSL_CIPHER_find(SSL *ssl, const unsigned char *ptr); - -/* TLS extensions functions */ -int SSL_set_session_ticket_ext(SSL *s, void *ext_data, int ext_len); - -int SSL_set_session_ticket_ext_cb(SSL *s, tls_session_ticket_ext_cb_fn cb, - void *arg); - -/* Pre-shared secret session resumption functions */ -int SSL_set_session_secret_cb(SSL *s, - tls_session_secret_cb_fn tls_session_secret_cb, - void *arg); - -void SSL_set_debug(SSL *s, int debug); -int SSL_cache_hit(SSL *s); -int SSL_is_server(SSL *s); - -SSL_CONF_CTX *SSL_CONF_CTX_new(void); -int SSL_CONF_CTX_finish(SSL_CONF_CTX *cctx); -void SSL_CONF_CTX_free(SSL_CONF_CTX *cctx); -unsigned int SSL_CONF_CTX_set_flags(SSL_CONF_CTX *cctx, unsigned int flags); -unsigned int SSL_CONF_CTX_clear_flags(SSL_CONF_CTX *cctx, unsigned int flags); -int SSL_CONF_CTX_set1_prefix(SSL_CONF_CTX *cctx, const char *pre); - -void SSL_CONF_CTX_set_ssl(SSL_CONF_CTX *cctx, SSL *ssl); -void SSL_CONF_CTX_set_ssl_ctx(SSL_CONF_CTX *cctx, SSL_CTX *ctx); - -int SSL_CONF_cmd(SSL_CONF_CTX *cctx, const char *cmd, const char *value); -int SSL_CONF_cmd_argv(SSL_CONF_CTX *cctx, int *pargc, char ***pargv); -int SSL_CONF_cmd_value_type(SSL_CONF_CTX *cctx, const char *cmd); - -# ifndef OPENSSL_NO_SSL_TRACE -void SSL_trace(int write_p, int version, int content_type, - const void *buf, size_t len, SSL *ssl, void *arg); -const char *SSL_CIPHER_standard_name(const SSL_CIPHER *c); -# endif - -# ifndef OPENSSL_NO_UNIT_TEST -const struct openssl_ssl_test_functions *SSL_test_functions(void); -# endif - -/* BEGIN ERROR CODES */ -/* - * The following lines are auto generated by the script mkerr.pl. Any changes - * made after this point may be overwritten when the script is next run. - */ -void ERR_load_SSL_strings(void); - -/* Error codes for the SSL functions. */ - -/* Function codes. */ -# define SSL_F_CHECK_SUITEB_CIPHER_LIST 331 -# define SSL_F_CLIENT_CERTIFICATE 100 -# define SSL_F_CLIENT_FINISHED 167 -# define SSL_F_CLIENT_HELLO 101 -# define SSL_F_CLIENT_MASTER_KEY 102 -# define SSL_F_D2I_SSL_SESSION 103 -# define SSL_F_DO_DTLS1_WRITE 245 -# define SSL_F_DO_SSL3_WRITE 104 -# define SSL_F_DTLS1_ACCEPT 246 -# define SSL_F_DTLS1_ADD_CERT_TO_BUF 295 -# define SSL_F_DTLS1_BUFFER_RECORD 247 -# define SSL_F_DTLS1_CHECK_TIMEOUT_NUM 316 -# define SSL_F_DTLS1_CLIENT_HELLO 248 -# define SSL_F_DTLS1_CONNECT 249 -# define SSL_F_DTLS1_ENC 250 -# define SSL_F_DTLS1_GET_HELLO_VERIFY 251 -# define SSL_F_DTLS1_GET_MESSAGE 252 -# define SSL_F_DTLS1_GET_MESSAGE_FRAGMENT 253 -# define SSL_F_DTLS1_GET_RECORD 254 -# define SSL_F_DTLS1_HANDLE_TIMEOUT 297 -# define SSL_F_DTLS1_HEARTBEAT 305 -# define SSL_F_DTLS1_OUTPUT_CERT_CHAIN 255 -# define SSL_F_DTLS1_PREPROCESS_FRAGMENT 288 -# define SSL_F_DTLS1_PROCESS_OUT_OF_SEQ_MESSAGE 256 -# define SSL_F_DTLS1_PROCESS_RECORD 257 -# define SSL_F_DTLS1_READ_BYTES 258 -# define SSL_F_DTLS1_READ_FAILED 259 -# define SSL_F_DTLS1_SEND_CERTIFICATE_REQUEST 260 -# define SSL_F_DTLS1_SEND_CLIENT_CERTIFICATE 261 -# define SSL_F_DTLS1_SEND_CLIENT_KEY_EXCHANGE 262 -# define SSL_F_DTLS1_SEND_CLIENT_VERIFY 263 -# define SSL_F_DTLS1_SEND_HELLO_VERIFY_REQUEST 264 -# define SSL_F_DTLS1_SEND_SERVER_CERTIFICATE 265 -# define SSL_F_DTLS1_SEND_SERVER_HELLO 266 -# define SSL_F_DTLS1_SEND_SERVER_KEY_EXCHANGE 267 -# define SSL_F_DTLS1_WRITE_APP_DATA_BYTES 268 -# define SSL_F_GET_CLIENT_FINISHED 105 -# define SSL_F_GET_CLIENT_HELLO 106 -# define SSL_F_GET_CLIENT_MASTER_KEY 107 -# define SSL_F_GET_SERVER_FINISHED 108 -# define SSL_F_GET_SERVER_HELLO 109 -# define SSL_F_GET_SERVER_VERIFY 110 -# define SSL_F_I2D_SSL_SESSION 111 -# define SSL_F_READ_N 112 -# define SSL_F_REQUEST_CERTIFICATE 113 -# define SSL_F_SERVER_FINISH 239 -# define SSL_F_SERVER_HELLO 114 -# define SSL_F_SERVER_VERIFY 240 -# define SSL_F_SSL23_ACCEPT 115 -# define SSL_F_SSL23_CLIENT_HELLO 116 -# define SSL_F_SSL23_CONNECT 117 -# define SSL_F_SSL23_GET_CLIENT_HELLO 118 -# define SSL_F_SSL23_GET_SERVER_HELLO 119 -# define SSL_F_SSL23_PEEK 237 -# define SSL_F_SSL23_READ 120 -# define SSL_F_SSL23_WRITE 121 -# define SSL_F_SSL2_ACCEPT 122 -# define SSL_F_SSL2_CONNECT 123 -# define SSL_F_SSL2_ENC_INIT 124 -# define SSL_F_SSL2_GENERATE_KEY_MATERIAL 241 -# define SSL_F_SSL2_PEEK 234 -# define SSL_F_SSL2_READ 125 -# define SSL_F_SSL2_READ_INTERNAL 236 -# define SSL_F_SSL2_SET_CERTIFICATE 126 -# define SSL_F_SSL2_WRITE 127 -# define SSL_F_SSL3_ACCEPT 128 -# define SSL_F_SSL3_ADD_CERT_TO_BUF 296 -# define SSL_F_SSL3_CALLBACK_CTRL 233 -# define SSL_F_SSL3_CHANGE_CIPHER_STATE 129 -# define SSL_F_SSL3_CHECK_CERT_AND_ALGORITHM 130 -# define SSL_F_SSL3_CHECK_CLIENT_HELLO 304 -# define SSL_F_SSL3_CLIENT_HELLO 131 -# define SSL_F_SSL3_CONNECT 132 -# define SSL_F_SSL3_CTRL 213 -# define SSL_F_SSL3_CTX_CTRL 133 -# define SSL_F_SSL3_DIGEST_CACHED_RECORDS 293 -# define SSL_F_SSL3_DO_CHANGE_CIPHER_SPEC 292 -# define SSL_F_SSL3_ENC 134 -# define SSL_F_SSL3_GENERATE_KEY_BLOCK 238 -# define SSL_F_SSL3_GET_CERTIFICATE_REQUEST 135 -# define SSL_F_SSL3_GET_CERT_STATUS 289 -# define SSL_F_SSL3_GET_CERT_VERIFY 136 -# define SSL_F_SSL3_GET_CLIENT_CERTIFICATE 137 -# define SSL_F_SSL3_GET_CLIENT_HELLO 138 -# define SSL_F_SSL3_GET_CLIENT_KEY_EXCHANGE 139 -# define SSL_F_SSL3_GET_FINISHED 140 -# define SSL_F_SSL3_GET_KEY_EXCHANGE 141 -# define SSL_F_SSL3_GET_MESSAGE 142 -# define SSL_F_SSL3_GET_NEW_SESSION_TICKET 283 -# define SSL_F_SSL3_GET_NEXT_PROTO 306 -# define SSL_F_SSL3_GET_RECORD 143 -# define SSL_F_SSL3_GET_SERVER_CERTIFICATE 144 -# define SSL_F_SSL3_GET_SERVER_DONE 145 -# define SSL_F_SSL3_GET_SERVER_HELLO 146 -# define SSL_F_SSL3_HANDSHAKE_MAC 285 -# define SSL_F_SSL3_NEW_SESSION_TICKET 287 -# define SSL_F_SSL3_OUTPUT_CERT_CHAIN 147 -# define SSL_F_SSL3_PEEK 235 -# define SSL_F_SSL3_READ_BYTES 148 -# define SSL_F_SSL3_READ_N 149 -# define SSL_F_SSL3_SEND_CERTIFICATE_REQUEST 150 -# define SSL_F_SSL3_SEND_CLIENT_CERTIFICATE 151 -# define SSL_F_SSL3_SEND_CLIENT_KEY_EXCHANGE 152 -# define SSL_F_SSL3_SEND_CLIENT_VERIFY 153 -# define SSL_F_SSL3_SEND_SERVER_CERTIFICATE 154 -# define SSL_F_SSL3_SEND_SERVER_HELLO 242 -# define SSL_F_SSL3_SEND_SERVER_KEY_EXCHANGE 155 -# define SSL_F_SSL3_SETUP_KEY_BLOCK 157 -# define SSL_F_SSL3_SETUP_READ_BUFFER 156 -# define SSL_F_SSL3_SETUP_WRITE_BUFFER 291 -# define SSL_F_SSL3_WRITE_BYTES 158 -# define SSL_F_SSL3_WRITE_PENDING 159 -# define SSL_F_SSL_ADD_CERT_CHAIN 318 -# define SSL_F_SSL_ADD_CERT_TO_BUF 319 -# define SSL_F_SSL_ADD_CLIENTHELLO_RENEGOTIATE_EXT 298 -# define SSL_F_SSL_ADD_CLIENTHELLO_TLSEXT 277 -# define SSL_F_SSL_ADD_CLIENTHELLO_USE_SRTP_EXT 307 -# define SSL_F_SSL_ADD_DIR_CERT_SUBJECTS_TO_STACK 215 -# define SSL_F_SSL_ADD_FILE_CERT_SUBJECTS_TO_STACK 216 -# define SSL_F_SSL_ADD_SERVERHELLO_RENEGOTIATE_EXT 299 -# define SSL_F_SSL_ADD_SERVERHELLO_TLSEXT 278 -# define SSL_F_SSL_ADD_SERVERHELLO_USE_SRTP_EXT 308 -# define SSL_F_SSL_BAD_METHOD 160 -# define SSL_F_SSL_BUILD_CERT_CHAIN 332 -# define SSL_F_SSL_BYTES_TO_CIPHER_LIST 161 -# define SSL_F_SSL_CERT_DUP 221 -# define SSL_F_SSL_CERT_INST 222 -# define SSL_F_SSL_CERT_INSTANTIATE 214 -# define SSL_F_SSL_CERT_NEW 162 -# define SSL_F_SSL_CHECK_PRIVATE_KEY 163 -# define SSL_F_SSL_CHECK_SERVERHELLO_TLSEXT 280 -# define SSL_F_SSL_CHECK_SRVR_ECC_CERT_AND_ALG 279 -# define SSL_F_SSL_CIPHER_PROCESS_RULESTR 230 -# define SSL_F_SSL_CIPHER_STRENGTH_SORT 231 -# define SSL_F_SSL_CLEAR 164 -# define SSL_F_SSL_COMP_ADD_COMPRESSION_METHOD 165 -# define SSL_F_SSL_CONF_CMD 334 -# define SSL_F_SSL_CREATE_CIPHER_LIST 166 -# define SSL_F_SSL_CTRL 232 -# define SSL_F_SSL_CTX_CHECK_PRIVATE_KEY 168 -# define SSL_F_SSL_CTX_MAKE_PROFILES 309 -# define SSL_F_SSL_CTX_NEW 169 -# define SSL_F_SSL_CTX_SET_CIPHER_LIST 269 -# define SSL_F_SSL_CTX_SET_CLIENT_CERT_ENGINE 290 -# define SSL_F_SSL_CTX_SET_PURPOSE 226 -# define SSL_F_SSL_CTX_SET_SESSION_ID_CONTEXT 219 -# define SSL_F_SSL_CTX_SET_SSL_VERSION 170 -# define SSL_F_SSL_CTX_SET_TRUST 229 -# define SSL_F_SSL_CTX_USE_CERTIFICATE 171 -# define SSL_F_SSL_CTX_USE_CERTIFICATE_ASN1 172 -# define SSL_F_SSL_CTX_USE_CERTIFICATE_CHAIN_FILE 220 -# define SSL_F_SSL_CTX_USE_CERTIFICATE_FILE 173 -# define SSL_F_SSL_CTX_USE_PRIVATEKEY 174 -# define SSL_F_SSL_CTX_USE_PRIVATEKEY_ASN1 175 -# define SSL_F_SSL_CTX_USE_PRIVATEKEY_FILE 176 -# define SSL_F_SSL_CTX_USE_PSK_IDENTITY_HINT 272 -# define SSL_F_SSL_CTX_USE_RSAPRIVATEKEY 177 -# define SSL_F_SSL_CTX_USE_RSAPRIVATEKEY_ASN1 178 -# define SSL_F_SSL_CTX_USE_RSAPRIVATEKEY_FILE 179 -# define SSL_F_SSL_CTX_USE_SERVERINFO 336 -# define SSL_F_SSL_CTX_USE_SERVERINFO_FILE 337 -# define SSL_F_SSL_DO_HANDSHAKE 180 -# define SSL_F_SSL_GET_NEW_SESSION 181 -# define SSL_F_SSL_GET_PREV_SESSION 217 -# define SSL_F_SSL_GET_SERVER_CERT_INDEX 322 -# define SSL_F_SSL_GET_SERVER_SEND_CERT 182 -# define SSL_F_SSL_GET_SERVER_SEND_PKEY 317 -# define SSL_F_SSL_GET_SIGN_PKEY 183 -# define SSL_F_SSL_INIT_WBIO_BUFFER 184 -# define SSL_F_SSL_LOAD_CLIENT_CA_FILE 185 -# define SSL_F_SSL_NEW 186 -# define SSL_F_SSL_PARSE_CLIENTHELLO_RENEGOTIATE_EXT 300 -# define SSL_F_SSL_PARSE_CLIENTHELLO_TLSEXT 302 -# define SSL_F_SSL_PARSE_CLIENTHELLO_USE_SRTP_EXT 310 -# define SSL_F_SSL_PARSE_SERVERHELLO_RENEGOTIATE_EXT 301 -# define SSL_F_SSL_PARSE_SERVERHELLO_TLSEXT 303 -# define SSL_F_SSL_PARSE_SERVERHELLO_USE_SRTP_EXT 311 -# define SSL_F_SSL_PEEK 270 -# define SSL_F_SSL_PREPARE_CLIENTHELLO_TLSEXT 281 -# define SSL_F_SSL_PREPARE_SERVERHELLO_TLSEXT 282 -# define SSL_F_SSL_READ 223 -# define SSL_F_SSL_RSA_PRIVATE_DECRYPT 187 -# define SSL_F_SSL_RSA_PUBLIC_ENCRYPT 188 -# define SSL_F_SSL_SCAN_CLIENTHELLO_TLSEXT 320 -# define SSL_F_SSL_SCAN_SERVERHELLO_TLSEXT 321 -# define SSL_F_SSL_SESSION_NEW 189 -# define SSL_F_SSL_SESSION_PRINT_FP 190 -# define SSL_F_SSL_SESSION_SET1_ID_CONTEXT 312 -# define SSL_F_SSL_SESS_CERT_NEW 225 -# define SSL_F_SSL_SET_CERT 191 -# define SSL_F_SSL_SET_CIPHER_LIST 271 -# define SSL_F_SSL_SET_FD 192 -# define SSL_F_SSL_SET_PKEY 193 -# define SSL_F_SSL_SET_PURPOSE 227 -# define SSL_F_SSL_SET_RFD 194 -# define SSL_F_SSL_SET_SESSION 195 -# define SSL_F_SSL_SET_SESSION_ID_CONTEXT 218 -# define SSL_F_SSL_SET_SESSION_TICKET_EXT 294 -# define SSL_F_SSL_SET_TRUST 228 -# define SSL_F_SSL_SET_WFD 196 -# define SSL_F_SSL_SHUTDOWN 224 -# define SSL_F_SSL_SRP_CTX_INIT 313 -# define SSL_F_SSL_UNDEFINED_CONST_FUNCTION 243 -# define SSL_F_SSL_UNDEFINED_FUNCTION 197 -# define SSL_F_SSL_UNDEFINED_VOID_FUNCTION 244 -# define SSL_F_SSL_USE_CERTIFICATE 198 -# define SSL_F_SSL_USE_CERTIFICATE_ASN1 199 -# define SSL_F_SSL_USE_CERTIFICATE_FILE 200 -# define SSL_F_SSL_USE_PRIVATEKEY 201 -# define SSL_F_SSL_USE_PRIVATEKEY_ASN1 202 -# define SSL_F_SSL_USE_PRIVATEKEY_FILE 203 -# define SSL_F_SSL_USE_PSK_IDENTITY_HINT 273 -# define SSL_F_SSL_USE_RSAPRIVATEKEY 204 -# define SSL_F_SSL_USE_RSAPRIVATEKEY_ASN1 205 -# define SSL_F_SSL_USE_RSAPRIVATEKEY_FILE 206 -# define SSL_F_SSL_VERIFY_CERT_CHAIN 207 -# define SSL_F_SSL_WRITE 208 -# define SSL_F_TLS12_CHECK_PEER_SIGALG 333 -# define SSL_F_TLS1_CERT_VERIFY_MAC 286 -# define SSL_F_TLS1_CHANGE_CIPHER_STATE 209 -# define SSL_F_TLS1_CHECK_SERVERHELLO_TLSEXT 274 -# define SSL_F_TLS1_ENC 210 -# define SSL_F_TLS1_EXPORT_KEYING_MATERIAL 314 -# define SSL_F_TLS1_GET_CURVELIST 338 -# define SSL_F_TLS1_HEARTBEAT 315 -# define SSL_F_TLS1_PREPARE_CLIENTHELLO_TLSEXT 275 -# define SSL_F_TLS1_PREPARE_SERVERHELLO_TLSEXT 276 -# define SSL_F_TLS1_PRF 284 -# define SSL_F_TLS1_SETUP_KEY_BLOCK 211 -# define SSL_F_TLS1_SET_SERVER_SIGALGS 335 -# define SSL_F_WRITE_PENDING 212 - -/* Reason codes. */ -# define SSL_R_APP_DATA_IN_HANDSHAKE 100 -# define SSL_R_ATTEMPT_TO_REUSE_SESSION_IN_DIFFERENT_CONTEXT 272 -# define SSL_R_BAD_ALERT_RECORD 101 -# define SSL_R_BAD_AUTHENTICATION_TYPE 102 -# define SSL_R_BAD_CHANGE_CIPHER_SPEC 103 -# define SSL_R_BAD_CHECKSUM 104 -# define SSL_R_BAD_DATA 390 -# define SSL_R_BAD_DATA_RETURNED_BY_CALLBACK 106 -# define SSL_R_BAD_DECOMPRESSION 107 -# define SSL_R_BAD_DH_G_LENGTH 108 -# define SSL_R_BAD_DH_PUB_KEY_LENGTH 109 -# define SSL_R_BAD_DH_P_LENGTH 110 -# define SSL_R_BAD_DIGEST_LENGTH 111 -# define SSL_R_BAD_DSA_SIGNATURE 112 -# define SSL_R_BAD_ECC_CERT 304 -# define SSL_R_BAD_ECDSA_SIGNATURE 305 -# define SSL_R_BAD_ECPOINT 306 -# define SSL_R_BAD_HANDSHAKE_LENGTH 332 -# define SSL_R_BAD_HELLO_REQUEST 105 -# define SSL_R_BAD_LENGTH 271 -# define SSL_R_BAD_MAC_DECODE 113 -# define SSL_R_BAD_MAC_LENGTH 333 -# define SSL_R_BAD_MESSAGE_TYPE 114 -# define SSL_R_BAD_PACKET_LENGTH 115 -# define SSL_R_BAD_PROTOCOL_VERSION_NUMBER 116 -# define SSL_R_BAD_PSK_IDENTITY_HINT_LENGTH 316 -# define SSL_R_BAD_RESPONSE_ARGUMENT 117 -# define SSL_R_BAD_RSA_DECRYPT 118 -# define SSL_R_BAD_RSA_ENCRYPT 119 -# define SSL_R_BAD_RSA_E_LENGTH 120 -# define SSL_R_BAD_RSA_MODULUS_LENGTH 121 -# define SSL_R_BAD_RSA_SIGNATURE 122 -# define SSL_R_BAD_SIGNATURE 123 -# define SSL_R_BAD_SRP_A_LENGTH 347 -# define SSL_R_BAD_SRP_B_LENGTH 348 -# define SSL_R_BAD_SRP_G_LENGTH 349 -# define SSL_R_BAD_SRP_N_LENGTH 350 -# define SSL_R_BAD_SRP_PARAMETERS 371 -# define SSL_R_BAD_SRP_S_LENGTH 351 -# define SSL_R_BAD_SRTP_MKI_VALUE 352 -# define SSL_R_BAD_SRTP_PROTECTION_PROFILE_LIST 353 -# define SSL_R_BAD_SSL_FILETYPE 124 -# define SSL_R_BAD_SSL_SESSION_ID_LENGTH 125 -# define SSL_R_BAD_STATE 126 -# define SSL_R_BAD_VALUE 384 -# define SSL_R_BAD_WRITE_RETRY 127 -# define SSL_R_BIO_NOT_SET 128 -# define SSL_R_BLOCK_CIPHER_PAD_IS_WRONG 129 -# define SSL_R_BN_LIB 130 -# define SSL_R_CA_DN_LENGTH_MISMATCH 131 -# define SSL_R_CA_DN_TOO_LONG 132 -# define SSL_R_CCS_RECEIVED_EARLY 133 -# define SSL_R_CERTIFICATE_VERIFY_FAILED 134 -# define SSL_R_CERT_CB_ERROR 377 -# define SSL_R_CERT_LENGTH_MISMATCH 135 -# define SSL_R_CHALLENGE_IS_DIFFERENT 136 -# define SSL_R_CIPHER_CODE_WRONG_LENGTH 137 -# define SSL_R_CIPHER_OR_HASH_UNAVAILABLE 138 -# define SSL_R_CIPHER_TABLE_SRC_ERROR 139 -# define SSL_R_CLIENTHELLO_TLSEXT 226 -# define SSL_R_COMPRESSED_LENGTH_TOO_LONG 140 -# define SSL_R_COMPRESSION_DISABLED 343 -# define SSL_R_COMPRESSION_FAILURE 141 -# define SSL_R_COMPRESSION_ID_NOT_WITHIN_PRIVATE_RANGE 307 -# define SSL_R_COMPRESSION_LIBRARY_ERROR 142 -# define SSL_R_CONNECTION_ID_IS_DIFFERENT 143 -# define SSL_R_CONNECTION_TYPE_NOT_SET 144 -# define SSL_R_COOKIE_MISMATCH 308 -# define SSL_R_DATA_BETWEEN_CCS_AND_FINISHED 145 -# define SSL_R_DATA_LENGTH_TOO_LONG 146 -# define SSL_R_DECRYPTION_FAILED 147 -# define SSL_R_DECRYPTION_FAILED_OR_BAD_RECORD_MAC 281 -# define SSL_R_DH_PUBLIC_VALUE_LENGTH_IS_WRONG 148 -# define SSL_R_DIGEST_CHECK_FAILED 149 -# define SSL_R_DTLS_MESSAGE_TOO_BIG 334 -# define SSL_R_DUPLICATE_COMPRESSION_ID 309 -# define SSL_R_ECC_CERT_NOT_FOR_KEY_AGREEMENT 317 -# define SSL_R_ECC_CERT_NOT_FOR_SIGNING 318 -# define SSL_R_ECC_CERT_SHOULD_HAVE_RSA_SIGNATURE 322 -# define SSL_R_ECC_CERT_SHOULD_HAVE_SHA1_SIGNATURE 323 -# define SSL_R_ECDH_REQUIRED_FOR_SUITEB_MODE 374 -# define SSL_R_ECGROUP_TOO_LARGE_FOR_CIPHER 310 -# define SSL_R_EMPTY_SRTP_PROTECTION_PROFILE_LIST 354 -# define SSL_R_ENCRYPTED_LENGTH_TOO_LONG 150 -# define SSL_R_ERROR_GENERATING_TMP_RSA_KEY 282 -# define SSL_R_ERROR_IN_RECEIVED_CIPHER_LIST 151 -# define SSL_R_EXCESSIVE_MESSAGE_SIZE 152 -# define SSL_R_EXTRA_DATA_IN_MESSAGE 153 -# define SSL_R_GOT_A_FIN_BEFORE_A_CCS 154 -# define SSL_R_GOT_NEXT_PROTO_BEFORE_A_CCS 355 -# define SSL_R_GOT_NEXT_PROTO_WITHOUT_EXTENSION 356 -# define SSL_R_HTTPS_PROXY_REQUEST 155 -# define SSL_R_HTTP_REQUEST 156 -# define SSL_R_ILLEGAL_PADDING 283 -# define SSL_R_ILLEGAL_SUITEB_DIGEST 380 -# define SSL_R_INAPPROPRIATE_FALLBACK 373 -# define SSL_R_INCONSISTENT_COMPRESSION 340 -# define SSL_R_INVALID_CHALLENGE_LENGTH 158 -# define SSL_R_INVALID_COMMAND 280 -# define SSL_R_INVALID_COMPRESSION_ALGORITHM 341 -# define SSL_R_INVALID_NULL_CMD_NAME 385 -# define SSL_R_INVALID_PURPOSE 278 -# define SSL_R_INVALID_SERVERINFO_DATA 388 -# define SSL_R_INVALID_SRP_USERNAME 357 -# define SSL_R_INVALID_STATUS_RESPONSE 328 -# define SSL_R_INVALID_TICKET_KEYS_LENGTH 325 -# define SSL_R_INVALID_TRUST 279 -# define SSL_R_KEY_ARG_TOO_LONG 284 -# define SSL_R_KRB5 285 -# define SSL_R_KRB5_C_CC_PRINC 286 -# define SSL_R_KRB5_C_GET_CRED 287 -# define SSL_R_KRB5_C_INIT 288 -# define SSL_R_KRB5_C_MK_REQ 289 -# define SSL_R_KRB5_S_BAD_TICKET 290 -# define SSL_R_KRB5_S_INIT 291 -# define SSL_R_KRB5_S_RD_REQ 292 -# define SSL_R_KRB5_S_TKT_EXPIRED 293 -# define SSL_R_KRB5_S_TKT_NYV 294 -# define SSL_R_KRB5_S_TKT_SKEW 295 -# define SSL_R_LENGTH_MISMATCH 159 -# define SSL_R_LENGTH_TOO_SHORT 160 -# define SSL_R_LIBRARY_BUG 274 -# define SSL_R_LIBRARY_HAS_NO_CIPHERS 161 -# define SSL_R_MESSAGE_TOO_LONG 296 -# define SSL_R_MISSING_DH_DSA_CERT 162 -# define SSL_R_MISSING_DH_KEY 163 -# define SSL_R_MISSING_DH_RSA_CERT 164 -# define SSL_R_MISSING_DSA_SIGNING_CERT 165 -# define SSL_R_MISSING_ECDH_CERT 382 -# define SSL_R_MISSING_ECDSA_SIGNING_CERT 381 -# define SSL_R_MISSING_EXPORT_TMP_DH_KEY 166 -# define SSL_R_MISSING_EXPORT_TMP_RSA_KEY 167 -# define SSL_R_MISSING_RSA_CERTIFICATE 168 -# define SSL_R_MISSING_RSA_ENCRYPTING_CERT 169 -# define SSL_R_MISSING_RSA_SIGNING_CERT 170 -# define SSL_R_MISSING_SRP_PARAM 358 -# define SSL_R_MISSING_TMP_DH_KEY 171 -# define SSL_R_MISSING_TMP_ECDH_KEY 311 -# define SSL_R_MISSING_TMP_RSA_KEY 172 -# define SSL_R_MISSING_TMP_RSA_PKEY 173 -# define SSL_R_MISSING_VERIFY_MESSAGE 174 -# define SSL_R_MULTIPLE_SGC_RESTARTS 346 -# define SSL_R_NON_SSLV2_INITIAL_PACKET 175 -# define SSL_R_NO_CERTIFICATES_RETURNED 176 -# define SSL_R_NO_CERTIFICATE_ASSIGNED 177 -# define SSL_R_NO_CERTIFICATE_RETURNED 178 -# define SSL_R_NO_CERTIFICATE_SET 179 -# define SSL_R_NO_CERTIFICATE_SPECIFIED 180 -# define SSL_R_NO_CIPHERS_AVAILABLE 181 -# define SSL_R_NO_CIPHERS_PASSED 182 -# define SSL_R_NO_CIPHERS_SPECIFIED 183 -# define SSL_R_NO_CIPHER_LIST 184 -# define SSL_R_NO_CIPHER_MATCH 185 -# define SSL_R_NO_CLIENT_CERT_METHOD 331 -# define SSL_R_NO_CLIENT_CERT_RECEIVED 186 -# define SSL_R_NO_COMPRESSION_SPECIFIED 187 -# define SSL_R_NO_GOST_CERTIFICATE_SENT_BY_PEER 330 -# define SSL_R_NO_METHOD_SPECIFIED 188 -# define SSL_R_NO_PEM_EXTENSIONS 389 -# define SSL_R_NO_PRIVATEKEY 189 -# define SSL_R_NO_PRIVATE_KEY_ASSIGNED 190 -# define SSL_R_NO_PROTOCOLS_AVAILABLE 191 -# define SSL_R_NO_PUBLICKEY 192 -# define SSL_R_NO_RENEGOTIATION 339 -# define SSL_R_NO_REQUIRED_DIGEST 324 -# define SSL_R_NO_SHARED_CIPHER 193 -# define SSL_R_NO_SHARED_SIGATURE_ALGORITHMS 376 -# define SSL_R_NO_SRTP_PROFILES 359 -# define SSL_R_NO_VERIFY_CALLBACK 194 -# define SSL_R_NULL_SSL_CTX 195 -# define SSL_R_NULL_SSL_METHOD_PASSED 196 -# define SSL_R_OLD_SESSION_CIPHER_NOT_RETURNED 197 -# define SSL_R_OLD_SESSION_COMPRESSION_ALGORITHM_NOT_RETURNED 344 -# define SSL_R_ONLY_DTLS_1_2_ALLOWED_IN_SUITEB_MODE 387 -# define SSL_R_ONLY_TLS_1_2_ALLOWED_IN_SUITEB_MODE 379 -# define SSL_R_ONLY_TLS_ALLOWED_IN_FIPS_MODE 297 -# define SSL_R_OPAQUE_PRF_INPUT_TOO_LONG 327 -# define SSL_R_PACKET_LENGTH_TOO_LONG 198 -# define SSL_R_PARSE_TLSEXT 227 -# define SSL_R_PATH_TOO_LONG 270 -# define SSL_R_PEER_DID_NOT_RETURN_A_CERTIFICATE 199 -# define SSL_R_PEER_ERROR 200 -# define SSL_R_PEER_ERROR_CERTIFICATE 201 -# define SSL_R_PEER_ERROR_NO_CERTIFICATE 202 -# define SSL_R_PEER_ERROR_NO_CIPHER 203 -# define SSL_R_PEER_ERROR_UNSUPPORTED_CERTIFICATE_TYPE 204 -# define SSL_R_PEM_NAME_BAD_PREFIX 391 -# define SSL_R_PEM_NAME_TOO_SHORT 392 -# define SSL_R_PRE_MAC_LENGTH_TOO_LONG 205 -# define SSL_R_PROBLEMS_MAPPING_CIPHER_FUNCTIONS 206 -# define SSL_R_PROTOCOL_IS_SHUTDOWN 207 -# define SSL_R_PSK_IDENTITY_NOT_FOUND 223 -# define SSL_R_PSK_NO_CLIENT_CB 224 -# define SSL_R_PSK_NO_SERVER_CB 225 -# define SSL_R_PUBLIC_KEY_ENCRYPT_ERROR 208 -# define SSL_R_PUBLIC_KEY_IS_NOT_RSA 209 -# define SSL_R_PUBLIC_KEY_NOT_RSA 210 -# define SSL_R_READ_BIO_NOT_SET 211 -# define SSL_R_READ_TIMEOUT_EXPIRED 312 -# define SSL_R_READ_WRONG_PACKET_TYPE 212 -# define SSL_R_RECORD_LENGTH_MISMATCH 213 -# define SSL_R_RECORD_TOO_LARGE 214 -# define SSL_R_RECORD_TOO_SMALL 298 -# define SSL_R_RENEGOTIATE_EXT_TOO_LONG 335 -# define SSL_R_RENEGOTIATION_ENCODING_ERR 336 -# define SSL_R_RENEGOTIATION_MISMATCH 337 -# define SSL_R_REQUIRED_CIPHER_MISSING 215 -# define SSL_R_REQUIRED_COMPRESSSION_ALGORITHM_MISSING 342 -# define SSL_R_REUSE_CERT_LENGTH_NOT_ZERO 216 -# define SSL_R_REUSE_CERT_TYPE_NOT_ZERO 217 -# define SSL_R_REUSE_CIPHER_LIST_NOT_ZERO 218 -# define SSL_R_SCSV_RECEIVED_WHEN_RENEGOTIATING 345 -# define SSL_R_SERVERHELLO_TLSEXT 275 -# define SSL_R_SESSION_ID_CONTEXT_UNINITIALIZED 277 -# define SSL_R_SHORT_READ 219 -# define SSL_R_SIGNATURE_ALGORITHMS_ERROR 360 -# define SSL_R_SIGNATURE_FOR_NON_SIGNING_CERTIFICATE 220 -# define SSL_R_SRP_A_CALC 361 -# define SSL_R_SRTP_COULD_NOT_ALLOCATE_PROFILES 362 -# define SSL_R_SRTP_PROTECTION_PROFILE_LIST_TOO_LONG 363 -# define SSL_R_SRTP_UNKNOWN_PROTECTION_PROFILE 364 -# define SSL_R_SSL23_DOING_SESSION_ID_REUSE 221 -# define SSL_R_SSL2_CONNECTION_ID_TOO_LONG 299 -# define SSL_R_SSL3_EXT_INVALID_ECPOINTFORMAT 321 -# define SSL_R_SSL3_EXT_INVALID_SERVERNAME 319 -# define SSL_R_SSL3_EXT_INVALID_SERVERNAME_TYPE 320 -# define SSL_R_SSL3_SESSION_ID_TOO_LONG 300 -# define SSL_R_SSL3_SESSION_ID_TOO_SHORT 222 -# define SSL_R_SSLV3_ALERT_BAD_CERTIFICATE 1042 -# define SSL_R_SSLV3_ALERT_BAD_RECORD_MAC 1020 -# define SSL_R_SSLV3_ALERT_CERTIFICATE_EXPIRED 1045 -# define SSL_R_SSLV3_ALERT_CERTIFICATE_REVOKED 1044 -# define SSL_R_SSLV3_ALERT_CERTIFICATE_UNKNOWN 1046 -# define SSL_R_SSLV3_ALERT_DECOMPRESSION_FAILURE 1030 -# define SSL_R_SSLV3_ALERT_HANDSHAKE_FAILURE 1040 -# define SSL_R_SSLV3_ALERT_ILLEGAL_PARAMETER 1047 -# define SSL_R_SSLV3_ALERT_NO_CERTIFICATE 1041 -# define SSL_R_SSLV3_ALERT_UNEXPECTED_MESSAGE 1010 -# define SSL_R_SSLV3_ALERT_UNSUPPORTED_CERTIFICATE 1043 -# define SSL_R_SSL_CTX_HAS_NO_DEFAULT_SSL_VERSION 228 -# define SSL_R_SSL_HANDSHAKE_FAILURE 229 -# define SSL_R_SSL_LIBRARY_HAS_NO_CIPHERS 230 -# define SSL_R_SSL_SESSION_ID_CALLBACK_FAILED 301 -# define SSL_R_SSL_SESSION_ID_CONFLICT 302 -# define SSL_R_SSL_SESSION_ID_CONTEXT_TOO_LONG 273 -# define SSL_R_SSL_SESSION_ID_HAS_BAD_LENGTH 303 -# define SSL_R_SSL_SESSION_ID_IS_DIFFERENT 231 -# define SSL_R_TLSV1_ALERT_ACCESS_DENIED 1049 -# define SSL_R_TLSV1_ALERT_DECODE_ERROR 1050 -# define SSL_R_TLSV1_ALERT_DECRYPTION_FAILED 1021 -# define SSL_R_TLSV1_ALERT_DECRYPT_ERROR 1051 -# define SSL_R_TLSV1_ALERT_EXPORT_RESTRICTION 1060 -# define SSL_R_TLSV1_ALERT_INAPPROPRIATE_FALLBACK 1086 -# define SSL_R_TLSV1_ALERT_INSUFFICIENT_SECURITY 1071 -# define SSL_R_TLSV1_ALERT_INTERNAL_ERROR 1080 -# define SSL_R_TLSV1_ALERT_NO_RENEGOTIATION 1100 -# define SSL_R_TLSV1_ALERT_PROTOCOL_VERSION 1070 -# define SSL_R_TLSV1_ALERT_RECORD_OVERFLOW 1022 -# define SSL_R_TLSV1_ALERT_UNKNOWN_CA 1048 -# define SSL_R_TLSV1_ALERT_USER_CANCELLED 1090 -# define SSL_R_TLSV1_BAD_CERTIFICATE_HASH_VALUE 1114 -# define SSL_R_TLSV1_BAD_CERTIFICATE_STATUS_RESPONSE 1113 -# define SSL_R_TLSV1_CERTIFICATE_UNOBTAINABLE 1111 -# define SSL_R_TLSV1_UNRECOGNIZED_NAME 1112 -# define SSL_R_TLSV1_UNSUPPORTED_EXTENSION 1110 -# define SSL_R_TLS_CLIENT_CERT_REQ_WITH_ANON_CIPHER 232 -# define SSL_R_TLS_HEARTBEAT_PEER_DOESNT_ACCEPT 365 -# define SSL_R_TLS_HEARTBEAT_PENDING 366 -# define SSL_R_TLS_ILLEGAL_EXPORTER_LABEL 367 -# define SSL_R_TLS_INVALID_ECPOINTFORMAT_LIST 157 -# define SSL_R_TLS_PEER_DID_NOT_RESPOND_WITH_CERTIFICATE_LIST 233 -# define SSL_R_TLS_RSA_ENCRYPTED_VALUE_LENGTH_IS_WRONG 234 -# define SSL_R_TRIED_TO_USE_UNSUPPORTED_CIPHER 235 -# define SSL_R_UNABLE_TO_DECODE_DH_CERTS 236 -# define SSL_R_UNABLE_TO_DECODE_ECDH_CERTS 313 -# define SSL_R_UNABLE_TO_EXTRACT_PUBLIC_KEY 237 -# define SSL_R_UNABLE_TO_FIND_DH_PARAMETERS 238 -# define SSL_R_UNABLE_TO_FIND_ECDH_PARAMETERS 314 -# define SSL_R_UNABLE_TO_FIND_PUBLIC_KEY_PARAMETERS 239 -# define SSL_R_UNABLE_TO_FIND_SSL_METHOD 240 -# define SSL_R_UNABLE_TO_LOAD_SSL2_MD5_ROUTINES 241 -# define SSL_R_UNABLE_TO_LOAD_SSL3_MD5_ROUTINES 242 -# define SSL_R_UNABLE_TO_LOAD_SSL3_SHA1_ROUTINES 243 -# define SSL_R_UNEXPECTED_MESSAGE 244 -# define SSL_R_UNEXPECTED_RECORD 245 -# define SSL_R_UNINITIALIZED 276 -# define SSL_R_UNKNOWN_ALERT_TYPE 246 -# define SSL_R_UNKNOWN_CERTIFICATE_TYPE 247 -# define SSL_R_UNKNOWN_CIPHER_RETURNED 248 -# define SSL_R_UNKNOWN_CIPHER_TYPE 249 -# define SSL_R_UNKNOWN_CMD_NAME 386 -# define SSL_R_UNKNOWN_DIGEST 368 -# define SSL_R_UNKNOWN_KEY_EXCHANGE_TYPE 250 -# define SSL_R_UNKNOWN_PKEY_TYPE 251 -# define SSL_R_UNKNOWN_PROTOCOL 252 -# define SSL_R_UNKNOWN_REMOTE_ERROR_TYPE 253 -# define SSL_R_UNKNOWN_SSL_VERSION 254 -# define SSL_R_UNKNOWN_STATE 255 -# define SSL_R_UNSAFE_LEGACY_RENEGOTIATION_DISABLED 338 -# define SSL_R_UNSUPPORTED_CIPHER 256 -# define SSL_R_UNSUPPORTED_COMPRESSION_ALGORITHM 257 -# define SSL_R_UNSUPPORTED_DIGEST_TYPE 326 -# define SSL_R_UNSUPPORTED_ELLIPTIC_CURVE 315 -# define SSL_R_UNSUPPORTED_PROTOCOL 258 -# define SSL_R_UNSUPPORTED_SSL_VERSION 259 -# define SSL_R_UNSUPPORTED_STATUS_TYPE 329 -# define SSL_R_USE_SRTP_NOT_NEGOTIATED 369 -# define SSL_R_WRITE_BIO_NOT_SET 260 -# define SSL_R_WRONG_CERTIFICATE_TYPE 383 -# define SSL_R_WRONG_CIPHER_RETURNED 261 -# define SSL_R_WRONG_CURVE 378 -# define SSL_R_WRONG_MESSAGE_TYPE 262 -# define SSL_R_WRONG_NUMBER_OF_KEY_BITS 263 -# define SSL_R_WRONG_SIGNATURE_LENGTH 264 -# define SSL_R_WRONG_SIGNATURE_SIZE 265 -# define SSL_R_WRONG_SIGNATURE_TYPE 370 -# define SSL_R_WRONG_SSL_VERSION 266 -# define SSL_R_WRONG_VERSION_NUMBER 267 -# define SSL_R_X509_LIB 268 -# define SSL_R_X509_VERIFICATION_SETUP_PROBLEMS 269 - -#ifdef __cplusplus -} -#endif -#endif diff --git a/ext/openssl-win32/inc32/openssl/ssl2.h b/ext/openssl-win32/inc32/openssl/ssl2.h deleted file mode 100644 index 03c7dd8c..00000000 --- a/ext/openssl-win32/inc32/openssl/ssl2.h +++ /dev/null @@ -1,265 +0,0 @@ -/* ssl/ssl2.h */ -/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) - * All rights reserved. - * - * This package is an SSL implementation written - * by Eric Young (eay@cryptsoft.com). - * The implementation was written so as to conform with Netscapes SSL. - * - * This library is free for commercial and non-commercial use as long as - * the following conditions are aheared to. The following conditions - * apply to all code found in this distribution, be it the RC4, RSA, - * lhash, DES, etc., code; not just the SSL code. The SSL documentation - * included with this distribution is covered by the same copyright terms - * except that the holder is Tim Hudson (tjh@cryptsoft.com). - * - * Copyright remains Eric Young's, and as such any Copyright notices in - * the code are not to be removed. - * If this package is used in a product, Eric Young should be given attribution - * as the author of the parts of the library used. - * This can be in the form of a textual message at program startup or - * in documentation (online or textual) provided with the package. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * "This product includes cryptographic software written by - * Eric Young (eay@cryptsoft.com)" - * The word 'cryptographic' can be left out if the rouines from the library - * being used are not cryptographic related :-). - * 4. If you include any Windows specific code (or a derivative thereof) from - * the apps directory (application code) you must include an acknowledgement: - * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" - * - * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * The licence and distribution terms for any publically available version or - * derivative of this code cannot be changed. i.e. this code cannot simply be - * copied and put under another distribution licence - * [including the GNU Public Licence.] - */ - -#ifndef HEADER_SSL2_H -# define HEADER_SSL2_H - -#ifdef __cplusplus -extern "C" { -#endif - -/* Protocol Version Codes */ -# define SSL2_VERSION 0x0002 -# define SSL2_VERSION_MAJOR 0x00 -# define SSL2_VERSION_MINOR 0x02 -/* #define SSL2_CLIENT_VERSION 0x0002 */ -/* #define SSL2_SERVER_VERSION 0x0002 */ - -/* Protocol Message Codes */ -# define SSL2_MT_ERROR 0 -# define SSL2_MT_CLIENT_HELLO 1 -# define SSL2_MT_CLIENT_MASTER_KEY 2 -# define SSL2_MT_CLIENT_FINISHED 3 -# define SSL2_MT_SERVER_HELLO 4 -# define SSL2_MT_SERVER_VERIFY 5 -# define SSL2_MT_SERVER_FINISHED 6 -# define SSL2_MT_REQUEST_CERTIFICATE 7 -# define SSL2_MT_CLIENT_CERTIFICATE 8 - -/* Error Message Codes */ -# define SSL2_PE_UNDEFINED_ERROR 0x0000 -# define SSL2_PE_NO_CIPHER 0x0001 -# define SSL2_PE_NO_CERTIFICATE 0x0002 -# define SSL2_PE_BAD_CERTIFICATE 0x0004 -# define SSL2_PE_UNSUPPORTED_CERTIFICATE_TYPE 0x0006 - -/* Cipher Kind Values */ -# define SSL2_CK_NULL_WITH_MD5 0x02000000/* v3 */ -# define SSL2_CK_RC4_128_WITH_MD5 0x02010080 -# define SSL2_CK_RC4_128_EXPORT40_WITH_MD5 0x02020080 -# define SSL2_CK_RC2_128_CBC_WITH_MD5 0x02030080 -# define SSL2_CK_RC2_128_CBC_EXPORT40_WITH_MD5 0x02040080 -# define SSL2_CK_IDEA_128_CBC_WITH_MD5 0x02050080 -# define SSL2_CK_DES_64_CBC_WITH_MD5 0x02060040 -# define SSL2_CK_DES_64_CBC_WITH_SHA 0x02060140/* v3 */ -# define SSL2_CK_DES_192_EDE3_CBC_WITH_MD5 0x020700c0 -# define SSL2_CK_DES_192_EDE3_CBC_WITH_SHA 0x020701c0/* v3 */ -# define SSL2_CK_RC4_64_WITH_MD5 0x02080080/* MS hack */ - -# define SSL2_CK_DES_64_CFB64_WITH_MD5_1 0x02ff0800/* SSLeay */ -# define SSL2_CK_NULL 0x02ff0810/* SSLeay */ - -# define SSL2_TXT_DES_64_CFB64_WITH_MD5_1 "DES-CFB-M1" -# define SSL2_TXT_NULL_WITH_MD5 "NULL-MD5" -# define SSL2_TXT_RC4_128_WITH_MD5 "RC4-MD5" -# define SSL2_TXT_RC4_128_EXPORT40_WITH_MD5 "EXP-RC4-MD5" -# define SSL2_TXT_RC2_128_CBC_WITH_MD5 "RC2-CBC-MD5" -# define SSL2_TXT_RC2_128_CBC_EXPORT40_WITH_MD5 "EXP-RC2-CBC-MD5" -# define SSL2_TXT_IDEA_128_CBC_WITH_MD5 "IDEA-CBC-MD5" -# define SSL2_TXT_DES_64_CBC_WITH_MD5 "DES-CBC-MD5" -# define SSL2_TXT_DES_64_CBC_WITH_SHA "DES-CBC-SHA" -# define SSL2_TXT_DES_192_EDE3_CBC_WITH_MD5 "DES-CBC3-MD5" -# define SSL2_TXT_DES_192_EDE3_CBC_WITH_SHA "DES-CBC3-SHA" -# define SSL2_TXT_RC4_64_WITH_MD5 "RC4-64-MD5" - -# define SSL2_TXT_NULL "NULL" - -/* Flags for the SSL_CIPHER.algorithm2 field */ -# define SSL2_CF_5_BYTE_ENC 0x01 -# define SSL2_CF_8_BYTE_ENC 0x02 - -/* Certificate Type Codes */ -# define SSL2_CT_X509_CERTIFICATE 0x01 - -/* Authentication Type Code */ -# define SSL2_AT_MD5_WITH_RSA_ENCRYPTION 0x01 - -# define SSL2_MAX_SSL_SESSION_ID_LENGTH 32 - -/* Upper/Lower Bounds */ -# define SSL2_MAX_MASTER_KEY_LENGTH_IN_BITS 256 -# ifdef OPENSSL_SYS_MPE -# define SSL2_MAX_RECORD_LENGTH_2_BYTE_HEADER 29998u -# else -# define SSL2_MAX_RECORD_LENGTH_2_BYTE_HEADER 32767u - /* 2^15-1 */ -# endif -# define SSL2_MAX_RECORD_LENGTH_3_BYTE_HEADER 16383/* 2^14-1 */ - -# define SSL2_CHALLENGE_LENGTH 16 -/* - * #define SSL2_CHALLENGE_LENGTH 32 - */ -# define SSL2_MIN_CHALLENGE_LENGTH 16 -# define SSL2_MAX_CHALLENGE_LENGTH 32 -# define SSL2_CONNECTION_ID_LENGTH 16 -# define SSL2_MAX_CONNECTION_ID_LENGTH 16 -# define SSL2_SSL_SESSION_ID_LENGTH 16 -# define SSL2_MAX_CERT_CHALLENGE_LENGTH 32 -# define SSL2_MIN_CERT_CHALLENGE_LENGTH 16 -# define SSL2_MAX_KEY_MATERIAL_LENGTH 24 - -# ifndef HEADER_SSL_LOCL_H -# define CERT char -# endif - -# ifndef OPENSSL_NO_SSL_INTERN - -typedef struct ssl2_state_st { - int three_byte_header; - int clear_text; /* clear text */ - int escape; /* not used in SSLv2 */ - int ssl2_rollback; /* used if SSLv23 rolled back to SSLv2 */ - /* - * non-blocking io info, used to make sure the same args were passwd - */ - unsigned int wnum; /* number of bytes sent so far */ - int wpend_tot; - const unsigned char *wpend_buf; - int wpend_off; /* offset to data to write */ - int wpend_len; /* number of bytes passwd to write */ - int wpend_ret; /* number of bytes to return to caller */ - /* buffer raw data */ - int rbuf_left; - int rbuf_offs; - unsigned char *rbuf; - unsigned char *wbuf; - unsigned char *write_ptr; /* used to point to the start due to 2/3 byte - * header. */ - unsigned int padding; - unsigned int rlength; /* passed to ssl2_enc */ - int ract_data_length; /* Set when things are encrypted. */ - unsigned int wlength; /* passed to ssl2_enc */ - int wact_data_length; /* Set when things are decrypted. */ - unsigned char *ract_data; - unsigned char *wact_data; - unsigned char *mac_data; - unsigned char *read_key; - unsigned char *write_key; - /* Stuff specifically to do with this SSL session */ - unsigned int challenge_length; - unsigned char challenge[SSL2_MAX_CHALLENGE_LENGTH]; - unsigned int conn_id_length; - unsigned char conn_id[SSL2_MAX_CONNECTION_ID_LENGTH]; - unsigned int key_material_length; - unsigned char key_material[SSL2_MAX_KEY_MATERIAL_LENGTH * 2]; - unsigned long read_sequence; - unsigned long write_sequence; - struct { - unsigned int conn_id_length; - unsigned int cert_type; - unsigned int cert_length; - unsigned int csl; - unsigned int clear; - unsigned int enc; - unsigned char ccl[SSL2_MAX_CERT_CHALLENGE_LENGTH]; - unsigned int cipher_spec_length; - unsigned int session_id_length; - unsigned int clen; - unsigned int rlen; - } tmp; -} SSL2_STATE; - -# endif - -/* SSLv2 */ -/* client */ -# define SSL2_ST_SEND_CLIENT_HELLO_A (0x10|SSL_ST_CONNECT) -# define SSL2_ST_SEND_CLIENT_HELLO_B (0x11|SSL_ST_CONNECT) -# define SSL2_ST_GET_SERVER_HELLO_A (0x20|SSL_ST_CONNECT) -# define SSL2_ST_GET_SERVER_HELLO_B (0x21|SSL_ST_CONNECT) -# define SSL2_ST_SEND_CLIENT_MASTER_KEY_A (0x30|SSL_ST_CONNECT) -# define SSL2_ST_SEND_CLIENT_MASTER_KEY_B (0x31|SSL_ST_CONNECT) -# define SSL2_ST_SEND_CLIENT_FINISHED_A (0x40|SSL_ST_CONNECT) -# define SSL2_ST_SEND_CLIENT_FINISHED_B (0x41|SSL_ST_CONNECT) -# define SSL2_ST_SEND_CLIENT_CERTIFICATE_A (0x50|SSL_ST_CONNECT) -# define SSL2_ST_SEND_CLIENT_CERTIFICATE_B (0x51|SSL_ST_CONNECT) -# define SSL2_ST_SEND_CLIENT_CERTIFICATE_C (0x52|SSL_ST_CONNECT) -# define SSL2_ST_SEND_CLIENT_CERTIFICATE_D (0x53|SSL_ST_CONNECT) -# define SSL2_ST_GET_SERVER_VERIFY_A (0x60|SSL_ST_CONNECT) -# define SSL2_ST_GET_SERVER_VERIFY_B (0x61|SSL_ST_CONNECT) -# define SSL2_ST_GET_SERVER_FINISHED_A (0x70|SSL_ST_CONNECT) -# define SSL2_ST_GET_SERVER_FINISHED_B (0x71|SSL_ST_CONNECT) -# define SSL2_ST_CLIENT_START_ENCRYPTION (0x80|SSL_ST_CONNECT) -# define SSL2_ST_X509_GET_CLIENT_CERTIFICATE (0x90|SSL_ST_CONNECT) -/* server */ -# define SSL2_ST_GET_CLIENT_HELLO_A (0x10|SSL_ST_ACCEPT) -# define SSL2_ST_GET_CLIENT_HELLO_B (0x11|SSL_ST_ACCEPT) -# define SSL2_ST_GET_CLIENT_HELLO_C (0x12|SSL_ST_ACCEPT) -# define SSL2_ST_SEND_SERVER_HELLO_A (0x20|SSL_ST_ACCEPT) -# define SSL2_ST_SEND_SERVER_HELLO_B (0x21|SSL_ST_ACCEPT) -# define SSL2_ST_GET_CLIENT_MASTER_KEY_A (0x30|SSL_ST_ACCEPT) -# define SSL2_ST_GET_CLIENT_MASTER_KEY_B (0x31|SSL_ST_ACCEPT) -# define SSL2_ST_SEND_SERVER_VERIFY_A (0x40|SSL_ST_ACCEPT) -# define SSL2_ST_SEND_SERVER_VERIFY_B (0x41|SSL_ST_ACCEPT) -# define SSL2_ST_SEND_SERVER_VERIFY_C (0x42|SSL_ST_ACCEPT) -# define SSL2_ST_GET_CLIENT_FINISHED_A (0x50|SSL_ST_ACCEPT) -# define SSL2_ST_GET_CLIENT_FINISHED_B (0x51|SSL_ST_ACCEPT) -# define SSL2_ST_SEND_SERVER_FINISHED_A (0x60|SSL_ST_ACCEPT) -# define SSL2_ST_SEND_SERVER_FINISHED_B (0x61|SSL_ST_ACCEPT) -# define SSL2_ST_SEND_REQUEST_CERTIFICATE_A (0x70|SSL_ST_ACCEPT) -# define SSL2_ST_SEND_REQUEST_CERTIFICATE_B (0x71|SSL_ST_ACCEPT) -# define SSL2_ST_SEND_REQUEST_CERTIFICATE_C (0x72|SSL_ST_ACCEPT) -# define SSL2_ST_SEND_REQUEST_CERTIFICATE_D (0x73|SSL_ST_ACCEPT) -# define SSL2_ST_SERVER_START_ENCRYPTION (0x80|SSL_ST_ACCEPT) -# define SSL2_ST_X509_GET_SERVER_CERTIFICATE (0x90|SSL_ST_ACCEPT) - -#ifdef __cplusplus -} -#endif -#endif diff --git a/ext/openssl-win32/inc32/openssl/ssl23.h b/ext/openssl-win32/inc32/openssl/ssl23.h deleted file mode 100644 index 9de4685a..00000000 --- a/ext/openssl-win32/inc32/openssl/ssl23.h +++ /dev/null @@ -1,84 +0,0 @@ -/* ssl/ssl23.h */ -/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) - * All rights reserved. - * - * This package is an SSL implementation written - * by Eric Young (eay@cryptsoft.com). - * The implementation was written so as to conform with Netscapes SSL. - * - * This library is free for commercial and non-commercial use as long as - * the following conditions are aheared to. The following conditions - * apply to all code found in this distribution, be it the RC4, RSA, - * lhash, DES, etc., code; not just the SSL code. The SSL documentation - * included with this distribution is covered by the same copyright terms - * except that the holder is Tim Hudson (tjh@cryptsoft.com). - * - * Copyright remains Eric Young's, and as such any Copyright notices in - * the code are not to be removed. - * If this package is used in a product, Eric Young should be given attribution - * as the author of the parts of the library used. - * This can be in the form of a textual message at program startup or - * in documentation (online or textual) provided with the package. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * "This product includes cryptographic software written by - * Eric Young (eay@cryptsoft.com)" - * The word 'cryptographic' can be left out if the rouines from the library - * being used are not cryptographic related :-). - * 4. If you include any Windows specific code (or a derivative thereof) from - * the apps directory (application code) you must include an acknowledgement: - * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" - * - * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * The licence and distribution terms for any publically available version or - * derivative of this code cannot be changed. i.e. this code cannot simply be - * copied and put under another distribution licence - * [including the GNU Public Licence.] - */ - -#ifndef HEADER_SSL23_H -# define HEADER_SSL23_H - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * client - */ -/* write to server */ -# define SSL23_ST_CW_CLNT_HELLO_A (0x210|SSL_ST_CONNECT) -# define SSL23_ST_CW_CLNT_HELLO_B (0x211|SSL_ST_CONNECT) -/* read from server */ -# define SSL23_ST_CR_SRVR_HELLO_A (0x220|SSL_ST_CONNECT) -# define SSL23_ST_CR_SRVR_HELLO_B (0x221|SSL_ST_CONNECT) - -/* server */ -/* read from client */ -# define SSL23_ST_SR_CLNT_HELLO_A (0x210|SSL_ST_ACCEPT) -# define SSL23_ST_SR_CLNT_HELLO_B (0x211|SSL_ST_ACCEPT) - -#ifdef __cplusplus -} -#endif -#endif diff --git a/ext/openssl-win32/inc32/openssl/ssl3.h b/ext/openssl-win32/inc32/openssl/ssl3.h deleted file mode 100644 index e681d50a..00000000 --- a/ext/openssl-win32/inc32/openssl/ssl3.h +++ /dev/null @@ -1,774 +0,0 @@ -/* ssl/ssl3.h */ -/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) - * All rights reserved. - * - * This package is an SSL implementation written - * by Eric Young (eay@cryptsoft.com). - * The implementation was written so as to conform with Netscapes SSL. - * - * This library is free for commercial and non-commercial use as long as - * the following conditions are aheared to. The following conditions - * apply to all code found in this distribution, be it the RC4, RSA, - * lhash, DES, etc., code; not just the SSL code. The SSL documentation - * included with this distribution is covered by the same copyright terms - * except that the holder is Tim Hudson (tjh@cryptsoft.com). - * - * Copyright remains Eric Young's, and as such any Copyright notices in - * the code are not to be removed. - * If this package is used in a product, Eric Young should be given attribution - * as the author of the parts of the library used. - * This can be in the form of a textual message at program startup or - * in documentation (online or textual) provided with the package. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * "This product includes cryptographic software written by - * Eric Young (eay@cryptsoft.com)" - * The word 'cryptographic' can be left out if the rouines from the library - * being used are not cryptographic related :-). - * 4. If you include any Windows specific code (or a derivative thereof) from - * the apps directory (application code) you must include an acknowledgement: - * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" - * - * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * The licence and distribution terms for any publically available version or - * derivative of this code cannot be changed. i.e. this code cannot simply be - * copied and put under another distribution licence - * [including the GNU Public Licence.] - */ -/* ==================================================================== - * Copyright (c) 1998-2002 The OpenSSL Project. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. All advertising materials mentioning features or use of this - * software must display the following acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" - * - * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * openssl-core@openssl.org. - * - * 5. Products derived from this software may not be called "OpenSSL" - * nor may "OpenSSL" appear in their names without prior written - * permission of the OpenSSL Project. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit (http://www.openssl.org/)" - * - * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY - * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * ==================================================================== - * - * This product includes cryptographic software written by Eric Young - * (eay@cryptsoft.com). This product includes software written by Tim - * Hudson (tjh@cryptsoft.com). - * - */ -/* ==================================================================== - * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED. - * ECC cipher suite support in OpenSSL originally developed by - * SUN MICROSYSTEMS, INC., and contributed to the OpenSSL project. - */ - -#ifndef HEADER_SSL3_H -# define HEADER_SSL3_H - -# ifndef OPENSSL_NO_COMP -# include -# endif -# include -# include -# include - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * Signalling cipher suite value from RFC 5746 - * (TLS_EMPTY_RENEGOTIATION_INFO_SCSV) - */ -# define SSL3_CK_SCSV 0x030000FF - -/* - * Signalling cipher suite value from draft-ietf-tls-downgrade-scsv-00 - * (TLS_FALLBACK_SCSV) - */ -# define SSL3_CK_FALLBACK_SCSV 0x03005600 - -# define SSL3_CK_RSA_NULL_MD5 0x03000001 -# define SSL3_CK_RSA_NULL_SHA 0x03000002 -# define SSL3_CK_RSA_RC4_40_MD5 0x03000003 -# define SSL3_CK_RSA_RC4_128_MD5 0x03000004 -# define SSL3_CK_RSA_RC4_128_SHA 0x03000005 -# define SSL3_CK_RSA_RC2_40_MD5 0x03000006 -# define SSL3_CK_RSA_IDEA_128_SHA 0x03000007 -# define SSL3_CK_RSA_DES_40_CBC_SHA 0x03000008 -# define SSL3_CK_RSA_DES_64_CBC_SHA 0x03000009 -# define SSL3_CK_RSA_DES_192_CBC3_SHA 0x0300000A - -# define SSL3_CK_DH_DSS_DES_40_CBC_SHA 0x0300000B -# define SSL3_CK_DH_DSS_DES_64_CBC_SHA 0x0300000C -# define SSL3_CK_DH_DSS_DES_192_CBC3_SHA 0x0300000D -# define SSL3_CK_DH_RSA_DES_40_CBC_SHA 0x0300000E -# define SSL3_CK_DH_RSA_DES_64_CBC_SHA 0x0300000F -# define SSL3_CK_DH_RSA_DES_192_CBC3_SHA 0x03000010 - -# define SSL3_CK_EDH_DSS_DES_40_CBC_SHA 0x03000011 -# define SSL3_CK_DHE_DSS_DES_40_CBC_SHA SSL3_CK_EDH_DSS_DES_40_CBC_SHA -# define SSL3_CK_EDH_DSS_DES_64_CBC_SHA 0x03000012 -# define SSL3_CK_DHE_DSS_DES_64_CBC_SHA SSL3_CK_EDH_DSS_DES_64_CBC_SHA -# define SSL3_CK_EDH_DSS_DES_192_CBC3_SHA 0x03000013 -# define SSL3_CK_DHE_DSS_DES_192_CBC3_SHA SSL3_CK_EDH_DSS_DES_192_CBC3_SHA -# define SSL3_CK_EDH_RSA_DES_40_CBC_SHA 0x03000014 -# define SSL3_CK_DHE_RSA_DES_40_CBC_SHA SSL3_CK_EDH_RSA_DES_40_CBC_SHA -# define SSL3_CK_EDH_RSA_DES_64_CBC_SHA 0x03000015 -# define SSL3_CK_DHE_RSA_DES_64_CBC_SHA SSL3_CK_EDH_RSA_DES_64_CBC_SHA -# define SSL3_CK_EDH_RSA_DES_192_CBC3_SHA 0x03000016 -# define SSL3_CK_DHE_RSA_DES_192_CBC3_SHA SSL3_CK_EDH_RSA_DES_192_CBC3_SHA - -# define SSL3_CK_ADH_RC4_40_MD5 0x03000017 -# define SSL3_CK_ADH_RC4_128_MD5 0x03000018 -# define SSL3_CK_ADH_DES_40_CBC_SHA 0x03000019 -# define SSL3_CK_ADH_DES_64_CBC_SHA 0x0300001A -# define SSL3_CK_ADH_DES_192_CBC_SHA 0x0300001B - -# if 0 -# define SSL3_CK_FZA_DMS_NULL_SHA 0x0300001C -# define SSL3_CK_FZA_DMS_FZA_SHA 0x0300001D -# if 0 /* Because it clashes with KRB5, is never - * used any more, and is safe to remove - * according to David Hopwood - * of the - * ietf-tls list */ -# define SSL3_CK_FZA_DMS_RC4_SHA 0x0300001E -# endif -# endif - -/* - * VRS Additional Kerberos5 entries - */ -# define SSL3_CK_KRB5_DES_64_CBC_SHA 0x0300001E -# define SSL3_CK_KRB5_DES_192_CBC3_SHA 0x0300001F -# define SSL3_CK_KRB5_RC4_128_SHA 0x03000020 -# define SSL3_CK_KRB5_IDEA_128_CBC_SHA 0x03000021 -# define SSL3_CK_KRB5_DES_64_CBC_MD5 0x03000022 -# define SSL3_CK_KRB5_DES_192_CBC3_MD5 0x03000023 -# define SSL3_CK_KRB5_RC4_128_MD5 0x03000024 -# define SSL3_CK_KRB5_IDEA_128_CBC_MD5 0x03000025 - -# define SSL3_CK_KRB5_DES_40_CBC_SHA 0x03000026 -# define SSL3_CK_KRB5_RC2_40_CBC_SHA 0x03000027 -# define SSL3_CK_KRB5_RC4_40_SHA 0x03000028 -# define SSL3_CK_KRB5_DES_40_CBC_MD5 0x03000029 -# define SSL3_CK_KRB5_RC2_40_CBC_MD5 0x0300002A -# define SSL3_CK_KRB5_RC4_40_MD5 0x0300002B - -# define SSL3_TXT_RSA_NULL_MD5 "NULL-MD5" -# define SSL3_TXT_RSA_NULL_SHA "NULL-SHA" -# define SSL3_TXT_RSA_RC4_40_MD5 "EXP-RC4-MD5" -# define SSL3_TXT_RSA_RC4_128_MD5 "RC4-MD5" -# define SSL3_TXT_RSA_RC4_128_SHA "RC4-SHA" -# define SSL3_TXT_RSA_RC2_40_MD5 "EXP-RC2-CBC-MD5" -# define SSL3_TXT_RSA_IDEA_128_SHA "IDEA-CBC-SHA" -# define SSL3_TXT_RSA_DES_40_CBC_SHA "EXP-DES-CBC-SHA" -# define SSL3_TXT_RSA_DES_64_CBC_SHA "DES-CBC-SHA" -# define SSL3_TXT_RSA_DES_192_CBC3_SHA "DES-CBC3-SHA" - -# define SSL3_TXT_DH_DSS_DES_40_CBC_SHA "EXP-DH-DSS-DES-CBC-SHA" -# define SSL3_TXT_DH_DSS_DES_64_CBC_SHA "DH-DSS-DES-CBC-SHA" -# define SSL3_TXT_DH_DSS_DES_192_CBC3_SHA "DH-DSS-DES-CBC3-SHA" -# define SSL3_TXT_DH_RSA_DES_40_CBC_SHA "EXP-DH-RSA-DES-CBC-SHA" -# define SSL3_TXT_DH_RSA_DES_64_CBC_SHA "DH-RSA-DES-CBC-SHA" -# define SSL3_TXT_DH_RSA_DES_192_CBC3_SHA "DH-RSA-DES-CBC3-SHA" - -# define SSL3_TXT_DHE_DSS_DES_40_CBC_SHA "EXP-DHE-DSS-DES-CBC-SHA" -# define SSL3_TXT_DHE_DSS_DES_64_CBC_SHA "DHE-DSS-DES-CBC-SHA" -# define SSL3_TXT_DHE_DSS_DES_192_CBC3_SHA "DHE-DSS-DES-CBC3-SHA" -# define SSL3_TXT_DHE_RSA_DES_40_CBC_SHA "EXP-DHE-RSA-DES-CBC-SHA" -# define SSL3_TXT_DHE_RSA_DES_64_CBC_SHA "DHE-RSA-DES-CBC-SHA" -# define SSL3_TXT_DHE_RSA_DES_192_CBC3_SHA "DHE-RSA-DES-CBC3-SHA" - -/* - * This next block of six "EDH" labels is for backward compatibility with - * older versions of OpenSSL. New code should use the six "DHE" labels above - * instead: - */ -# define SSL3_TXT_EDH_DSS_DES_40_CBC_SHA "EXP-EDH-DSS-DES-CBC-SHA" -# define SSL3_TXT_EDH_DSS_DES_64_CBC_SHA "EDH-DSS-DES-CBC-SHA" -# define SSL3_TXT_EDH_DSS_DES_192_CBC3_SHA "EDH-DSS-DES-CBC3-SHA" -# define SSL3_TXT_EDH_RSA_DES_40_CBC_SHA "EXP-EDH-RSA-DES-CBC-SHA" -# define SSL3_TXT_EDH_RSA_DES_64_CBC_SHA "EDH-RSA-DES-CBC-SHA" -# define SSL3_TXT_EDH_RSA_DES_192_CBC3_SHA "EDH-RSA-DES-CBC3-SHA" - -# define SSL3_TXT_ADH_RC4_40_MD5 "EXP-ADH-RC4-MD5" -# define SSL3_TXT_ADH_RC4_128_MD5 "ADH-RC4-MD5" -# define SSL3_TXT_ADH_DES_40_CBC_SHA "EXP-ADH-DES-CBC-SHA" -# define SSL3_TXT_ADH_DES_64_CBC_SHA "ADH-DES-CBC-SHA" -# define SSL3_TXT_ADH_DES_192_CBC_SHA "ADH-DES-CBC3-SHA" - -# if 0 -# define SSL3_TXT_FZA_DMS_NULL_SHA "FZA-NULL-SHA" -# define SSL3_TXT_FZA_DMS_FZA_SHA "FZA-FZA-CBC-SHA" -# define SSL3_TXT_FZA_DMS_RC4_SHA "FZA-RC4-SHA" -# endif - -# define SSL3_TXT_KRB5_DES_64_CBC_SHA "KRB5-DES-CBC-SHA" -# define SSL3_TXT_KRB5_DES_192_CBC3_SHA "KRB5-DES-CBC3-SHA" -# define SSL3_TXT_KRB5_RC4_128_SHA "KRB5-RC4-SHA" -# define SSL3_TXT_KRB5_IDEA_128_CBC_SHA "KRB5-IDEA-CBC-SHA" -# define SSL3_TXT_KRB5_DES_64_CBC_MD5 "KRB5-DES-CBC-MD5" -# define SSL3_TXT_KRB5_DES_192_CBC3_MD5 "KRB5-DES-CBC3-MD5" -# define SSL3_TXT_KRB5_RC4_128_MD5 "KRB5-RC4-MD5" -# define SSL3_TXT_KRB5_IDEA_128_CBC_MD5 "KRB5-IDEA-CBC-MD5" - -# define SSL3_TXT_KRB5_DES_40_CBC_SHA "EXP-KRB5-DES-CBC-SHA" -# define SSL3_TXT_KRB5_RC2_40_CBC_SHA "EXP-KRB5-RC2-CBC-SHA" -# define SSL3_TXT_KRB5_RC4_40_SHA "EXP-KRB5-RC4-SHA" -# define SSL3_TXT_KRB5_DES_40_CBC_MD5 "EXP-KRB5-DES-CBC-MD5" -# define SSL3_TXT_KRB5_RC2_40_CBC_MD5 "EXP-KRB5-RC2-CBC-MD5" -# define SSL3_TXT_KRB5_RC4_40_MD5 "EXP-KRB5-RC4-MD5" - -# define SSL3_SSL_SESSION_ID_LENGTH 32 -# define SSL3_MAX_SSL_SESSION_ID_LENGTH 32 - -# define SSL3_MASTER_SECRET_SIZE 48 -# define SSL3_RANDOM_SIZE 32 -# define SSL3_SESSION_ID_SIZE 32 -# define SSL3_RT_HEADER_LENGTH 5 - -# define SSL3_HM_HEADER_LENGTH 4 - -# ifndef SSL3_ALIGN_PAYLOAD - /* - * Some will argue that this increases memory footprint, but it's not - * actually true. Point is that malloc has to return at least 64-bit aligned - * pointers, meaning that allocating 5 bytes wastes 3 bytes in either case. - * Suggested pre-gaping simply moves these wasted bytes from the end of - * allocated region to its front, but makes data payload aligned, which - * improves performance:-) - */ -# define SSL3_ALIGN_PAYLOAD 8 -# else -# if (SSL3_ALIGN_PAYLOAD&(SSL3_ALIGN_PAYLOAD-1))!=0 -# error "insane SSL3_ALIGN_PAYLOAD" -# undef SSL3_ALIGN_PAYLOAD -# endif -# endif - -/* - * This is the maximum MAC (digest) size used by the SSL library. Currently - * maximum of 20 is used by SHA1, but we reserve for future extension for - * 512-bit hashes. - */ - -# define SSL3_RT_MAX_MD_SIZE 64 - -/* - * Maximum block size used in all ciphersuites. Currently 16 for AES. - */ - -# define SSL_RT_MAX_CIPHER_BLOCK_SIZE 16 - -# define SSL3_RT_MAX_EXTRA (16384) - -/* Maximum plaintext length: defined by SSL/TLS standards */ -# define SSL3_RT_MAX_PLAIN_LENGTH 16384 -/* Maximum compression overhead: defined by SSL/TLS standards */ -# define SSL3_RT_MAX_COMPRESSED_OVERHEAD 1024 - -/* - * The standards give a maximum encryption overhead of 1024 bytes. In - * practice the value is lower than this. The overhead is the maximum number - * of padding bytes (256) plus the mac size. - */ -# define SSL3_RT_MAX_ENCRYPTED_OVERHEAD (256 + SSL3_RT_MAX_MD_SIZE) - -/* - * OpenSSL currently only uses a padding length of at most one block so the - * send overhead is smaller. - */ - -# define SSL3_RT_SEND_MAX_ENCRYPTED_OVERHEAD \ - (SSL_RT_MAX_CIPHER_BLOCK_SIZE + SSL3_RT_MAX_MD_SIZE) - -/* If compression isn't used don't include the compression overhead */ - -# ifdef OPENSSL_NO_COMP -# define SSL3_RT_MAX_COMPRESSED_LENGTH SSL3_RT_MAX_PLAIN_LENGTH -# else -# define SSL3_RT_MAX_COMPRESSED_LENGTH \ - (SSL3_RT_MAX_PLAIN_LENGTH+SSL3_RT_MAX_COMPRESSED_OVERHEAD) -# endif -# define SSL3_RT_MAX_ENCRYPTED_LENGTH \ - (SSL3_RT_MAX_ENCRYPTED_OVERHEAD+SSL3_RT_MAX_COMPRESSED_LENGTH) -# define SSL3_RT_MAX_PACKET_SIZE \ - (SSL3_RT_MAX_ENCRYPTED_LENGTH+SSL3_RT_HEADER_LENGTH) - -# define SSL3_MD_CLIENT_FINISHED_CONST "\x43\x4C\x4E\x54" -# define SSL3_MD_SERVER_FINISHED_CONST "\x53\x52\x56\x52" - -# define SSL3_VERSION 0x0300 -# define SSL3_VERSION_MAJOR 0x03 -# define SSL3_VERSION_MINOR 0x00 - -# define SSL3_RT_CHANGE_CIPHER_SPEC 20 -# define SSL3_RT_ALERT 21 -# define SSL3_RT_HANDSHAKE 22 -# define SSL3_RT_APPLICATION_DATA 23 -# define TLS1_RT_HEARTBEAT 24 - -/* Pseudo content types to indicate additional parameters */ -# define TLS1_RT_CRYPTO 0x1000 -# define TLS1_RT_CRYPTO_PREMASTER (TLS1_RT_CRYPTO | 0x1) -# define TLS1_RT_CRYPTO_CLIENT_RANDOM (TLS1_RT_CRYPTO | 0x2) -# define TLS1_RT_CRYPTO_SERVER_RANDOM (TLS1_RT_CRYPTO | 0x3) -# define TLS1_RT_CRYPTO_MASTER (TLS1_RT_CRYPTO | 0x4) - -# define TLS1_RT_CRYPTO_READ 0x0000 -# define TLS1_RT_CRYPTO_WRITE 0x0100 -# define TLS1_RT_CRYPTO_MAC (TLS1_RT_CRYPTO | 0x5) -# define TLS1_RT_CRYPTO_KEY (TLS1_RT_CRYPTO | 0x6) -# define TLS1_RT_CRYPTO_IV (TLS1_RT_CRYPTO | 0x7) -# define TLS1_RT_CRYPTO_FIXED_IV (TLS1_RT_CRYPTO | 0x8) - -/* Pseudo content type for SSL/TLS header info */ -# define SSL3_RT_HEADER 0x100 - -# define SSL3_AL_WARNING 1 -# define SSL3_AL_FATAL 2 - -# define SSL3_AD_CLOSE_NOTIFY 0 -# define SSL3_AD_UNEXPECTED_MESSAGE 10/* fatal */ -# define SSL3_AD_BAD_RECORD_MAC 20/* fatal */ -# define SSL3_AD_DECOMPRESSION_FAILURE 30/* fatal */ -# define SSL3_AD_HANDSHAKE_FAILURE 40/* fatal */ -# define SSL3_AD_NO_CERTIFICATE 41 -# define SSL3_AD_BAD_CERTIFICATE 42 -# define SSL3_AD_UNSUPPORTED_CERTIFICATE 43 -# define SSL3_AD_CERTIFICATE_REVOKED 44 -# define SSL3_AD_CERTIFICATE_EXPIRED 45 -# define SSL3_AD_CERTIFICATE_UNKNOWN 46 -# define SSL3_AD_ILLEGAL_PARAMETER 47/* fatal */ - -# define TLS1_HB_REQUEST 1 -# define TLS1_HB_RESPONSE 2 - -# ifndef OPENSSL_NO_SSL_INTERN - -typedef struct ssl3_record_st { - /* type of record */ - /* - * r - */ int type; - /* How many bytes available */ - /* - * rw - */ unsigned int length; - /* read/write offset into 'buf' */ - /* - * r - */ unsigned int off; - /* pointer to the record data */ - /* - * rw - */ unsigned char *data; - /* where the decode bytes are */ - /* - * rw - */ unsigned char *input; - /* only used with decompression - malloc()ed */ - /* - * r - */ unsigned char *comp; - /* epoch number, needed by DTLS1 */ - /* - * r - */ unsigned long epoch; - /* sequence number, needed by DTLS1 */ - /* - * r - */ unsigned char seq_num[8]; -} SSL3_RECORD; - -typedef struct ssl3_buffer_st { - /* at least SSL3_RT_MAX_PACKET_SIZE bytes, see ssl3_setup_buffers() */ - unsigned char *buf; - /* buffer size */ - size_t len; - /* where to 'copy from' */ - int offset; - /* how many bytes left */ - int left; -} SSL3_BUFFER; - -# endif - -# define SSL3_CT_RSA_SIGN 1 -# define SSL3_CT_DSS_SIGN 2 -# define SSL3_CT_RSA_FIXED_DH 3 -# define SSL3_CT_DSS_FIXED_DH 4 -# define SSL3_CT_RSA_EPHEMERAL_DH 5 -# define SSL3_CT_DSS_EPHEMERAL_DH 6 -# define SSL3_CT_FORTEZZA_DMS 20 -/* - * SSL3_CT_NUMBER is used to size arrays and it must be large enough to - * contain all of the cert types defined either for SSLv3 and TLSv1. - */ -# define SSL3_CT_NUMBER 9 - -# define SSL3_FLAGS_NO_RENEGOTIATE_CIPHERS 0x0001 -# define SSL3_FLAGS_DELAY_CLIENT_FINISHED 0x0002 -# define SSL3_FLAGS_POP_BUFFER 0x0004 -# define TLS1_FLAGS_TLS_PADDING_BUG 0x0008 -# define TLS1_FLAGS_SKIP_CERT_VERIFY 0x0010 -# define TLS1_FLAGS_KEEP_HANDSHAKE 0x0020 -/* - * Set when the handshake is ready to process peer's ChangeCipherSpec message. - * Cleared after the message has been processed. - */ -# define SSL3_FLAGS_CCS_OK 0x0080 - -/* SSL3_FLAGS_SGC_RESTART_DONE is no longer used */ -# define SSL3_FLAGS_SGC_RESTART_DONE 0x0040 - -# ifndef OPENSSL_NO_SSL_INTERN - -typedef struct ssl3_state_st { - long flags; - int delay_buf_pop_ret; - unsigned char read_sequence[8]; - int read_mac_secret_size; - unsigned char read_mac_secret[EVP_MAX_MD_SIZE]; - unsigned char write_sequence[8]; - int write_mac_secret_size; - unsigned char write_mac_secret[EVP_MAX_MD_SIZE]; - unsigned char server_random[SSL3_RANDOM_SIZE]; - unsigned char client_random[SSL3_RANDOM_SIZE]; - /* flags for countermeasure against known-IV weakness */ - int need_empty_fragments; - int empty_fragment_done; - /* The value of 'extra' when the buffers were initialized */ - int init_extra; - SSL3_BUFFER rbuf; /* read IO goes into here */ - SSL3_BUFFER wbuf; /* write IO goes into here */ - SSL3_RECORD rrec; /* each decoded record goes in here */ - SSL3_RECORD wrec; /* goes out from here */ - /* - * storage for Alert/Handshake protocol data received but not yet - * processed by ssl3_read_bytes: - */ - unsigned char alert_fragment[2]; - unsigned int alert_fragment_len; - unsigned char handshake_fragment[4]; - unsigned int handshake_fragment_len; - /* partial write - check the numbers match */ - unsigned int wnum; /* number of bytes sent so far */ - int wpend_tot; /* number bytes written */ - int wpend_type; - int wpend_ret; /* number of bytes submitted */ - const unsigned char *wpend_buf; - /* used during startup, digest all incoming/outgoing packets */ - BIO *handshake_buffer; - /* - * When set of handshake digests is determined, buffer is hashed and - * freed and MD_CTX-es for all required digests are stored in this array - */ - EVP_MD_CTX **handshake_dgst; - /* - * Set whenever an expected ChangeCipherSpec message is processed. - * Unset when the peer's Finished message is received. - * Unexpected ChangeCipherSpec messages trigger a fatal alert. - */ - int change_cipher_spec; - int warn_alert; - int fatal_alert; - /* - * we allow one fatal and one warning alert to be outstanding, send close - * alert via the warning alert - */ - int alert_dispatch; - unsigned char send_alert[2]; - /* - * This flag is set when we should renegotiate ASAP, basically when there - * is no more data in the read or write buffers - */ - int renegotiate; - int total_renegotiations; - int num_renegotiations; - int in_read_app_data; - /* - * Opaque PRF input as used for the current handshake. These fields are - * used only if TLSEXT_TYPE_opaque_prf_input is defined (otherwise, they - * are merely present to improve binary compatibility) - */ - void *client_opaque_prf_input; - size_t client_opaque_prf_input_len; - void *server_opaque_prf_input; - size_t server_opaque_prf_input_len; - struct { - /* actually only needs to be 16+20 */ - unsigned char cert_verify_md[EVP_MAX_MD_SIZE * 2]; - /* actually only need to be 16+20 for SSLv3 and 12 for TLS */ - unsigned char finish_md[EVP_MAX_MD_SIZE * 2]; - int finish_md_len; - unsigned char peer_finish_md[EVP_MAX_MD_SIZE * 2]; - int peer_finish_md_len; - unsigned long message_size; - int message_type; - /* used to hold the new cipher we are going to use */ - const SSL_CIPHER *new_cipher; -# ifndef OPENSSL_NO_DH - DH *dh; -# endif -# ifndef OPENSSL_NO_ECDH - EC_KEY *ecdh; /* holds short lived ECDH key */ -# endif - /* used when SSL_ST_FLUSH_DATA is entered */ - int next_state; - int reuse_message; - /* used for certificate requests */ - int cert_req; - int ctype_num; - char ctype[SSL3_CT_NUMBER]; - STACK_OF(X509_NAME) *ca_names; - int use_rsa_tmp; - int key_block_length; - unsigned char *key_block; - const EVP_CIPHER *new_sym_enc; - const EVP_MD *new_hash; - int new_mac_pkey_type; - int new_mac_secret_size; -# ifndef OPENSSL_NO_COMP - const SSL_COMP *new_compression; -# else - char *new_compression; -# endif - int cert_request; - } tmp; - - /* Connection binding to prevent renegotiation attacks */ - unsigned char previous_client_finished[EVP_MAX_MD_SIZE]; - unsigned char previous_client_finished_len; - unsigned char previous_server_finished[EVP_MAX_MD_SIZE]; - unsigned char previous_server_finished_len; - int send_connection_binding; /* TODOEKR */ - -# ifndef OPENSSL_NO_NEXTPROTONEG - /* - * Set if we saw the Next Protocol Negotiation extension from our peer. - */ - int next_proto_neg_seen; -# endif - -# ifndef OPENSSL_NO_TLSEXT -# ifndef OPENSSL_NO_EC - /* - * This is set to true if we believe that this is a version of Safari - * running on OS X 10.6 or newer. We wish to know this because Safari on - * 10.8 .. 10.8.3 has broken ECDHE-ECDSA support. - */ - char is_probably_safari; -# endif /* !OPENSSL_NO_EC */ - - /* - * ALPN information (we are in the process of transitioning from NPN to - * ALPN.) - */ - - /* - * In a server these point to the selected ALPN protocol after the - * ClientHello has been processed. In a client these contain the protocol - * that the server selected once the ServerHello has been processed. - */ - unsigned char *alpn_selected; - unsigned alpn_selected_len; -# endif /* OPENSSL_NO_TLSEXT */ -} SSL3_STATE; - -# endif - -/* SSLv3 */ -/* - * client - */ -/* extra state */ -# define SSL3_ST_CW_FLUSH (0x100|SSL_ST_CONNECT) -# ifndef OPENSSL_NO_SCTP -# define DTLS1_SCTP_ST_CW_WRITE_SOCK (0x310|SSL_ST_CONNECT) -# define DTLS1_SCTP_ST_CR_READ_SOCK (0x320|SSL_ST_CONNECT) -# endif -/* write to server */ -# define SSL3_ST_CW_CLNT_HELLO_A (0x110|SSL_ST_CONNECT) -# define SSL3_ST_CW_CLNT_HELLO_B (0x111|SSL_ST_CONNECT) -/* read from server */ -# define SSL3_ST_CR_SRVR_HELLO_A (0x120|SSL_ST_CONNECT) -# define SSL3_ST_CR_SRVR_HELLO_B (0x121|SSL_ST_CONNECT) -# define DTLS1_ST_CR_HELLO_VERIFY_REQUEST_A (0x126|SSL_ST_CONNECT) -# define DTLS1_ST_CR_HELLO_VERIFY_REQUEST_B (0x127|SSL_ST_CONNECT) -# define SSL3_ST_CR_CERT_A (0x130|SSL_ST_CONNECT) -# define SSL3_ST_CR_CERT_B (0x131|SSL_ST_CONNECT) -# define SSL3_ST_CR_KEY_EXCH_A (0x140|SSL_ST_CONNECT) -# define SSL3_ST_CR_KEY_EXCH_B (0x141|SSL_ST_CONNECT) -# define SSL3_ST_CR_CERT_REQ_A (0x150|SSL_ST_CONNECT) -# define SSL3_ST_CR_CERT_REQ_B (0x151|SSL_ST_CONNECT) -# define SSL3_ST_CR_SRVR_DONE_A (0x160|SSL_ST_CONNECT) -# define SSL3_ST_CR_SRVR_DONE_B (0x161|SSL_ST_CONNECT) -/* write to server */ -# define SSL3_ST_CW_CERT_A (0x170|SSL_ST_CONNECT) -# define SSL3_ST_CW_CERT_B (0x171|SSL_ST_CONNECT) -# define SSL3_ST_CW_CERT_C (0x172|SSL_ST_CONNECT) -# define SSL3_ST_CW_CERT_D (0x173|SSL_ST_CONNECT) -# define SSL3_ST_CW_KEY_EXCH_A (0x180|SSL_ST_CONNECT) -# define SSL3_ST_CW_KEY_EXCH_B (0x181|SSL_ST_CONNECT) -# define SSL3_ST_CW_CERT_VRFY_A (0x190|SSL_ST_CONNECT) -# define SSL3_ST_CW_CERT_VRFY_B (0x191|SSL_ST_CONNECT) -# define SSL3_ST_CW_CHANGE_A (0x1A0|SSL_ST_CONNECT) -# define SSL3_ST_CW_CHANGE_B (0x1A1|SSL_ST_CONNECT) -# ifndef OPENSSL_NO_NEXTPROTONEG -# define SSL3_ST_CW_NEXT_PROTO_A (0x200|SSL_ST_CONNECT) -# define SSL3_ST_CW_NEXT_PROTO_B (0x201|SSL_ST_CONNECT) -# endif -# define SSL3_ST_CW_FINISHED_A (0x1B0|SSL_ST_CONNECT) -# define SSL3_ST_CW_FINISHED_B (0x1B1|SSL_ST_CONNECT) -/* read from server */ -# define SSL3_ST_CR_CHANGE_A (0x1C0|SSL_ST_CONNECT) -# define SSL3_ST_CR_CHANGE_B (0x1C1|SSL_ST_CONNECT) -# define SSL3_ST_CR_FINISHED_A (0x1D0|SSL_ST_CONNECT) -# define SSL3_ST_CR_FINISHED_B (0x1D1|SSL_ST_CONNECT) -# define SSL3_ST_CR_SESSION_TICKET_A (0x1E0|SSL_ST_CONNECT) -# define SSL3_ST_CR_SESSION_TICKET_B (0x1E1|SSL_ST_CONNECT) -# define SSL3_ST_CR_CERT_STATUS_A (0x1F0|SSL_ST_CONNECT) -# define SSL3_ST_CR_CERT_STATUS_B (0x1F1|SSL_ST_CONNECT) - -/* server */ -/* extra state */ -# define SSL3_ST_SW_FLUSH (0x100|SSL_ST_ACCEPT) -# ifndef OPENSSL_NO_SCTP -# define DTLS1_SCTP_ST_SW_WRITE_SOCK (0x310|SSL_ST_ACCEPT) -# define DTLS1_SCTP_ST_SR_READ_SOCK (0x320|SSL_ST_ACCEPT) -# endif -/* read from client */ -/* Do not change the number values, they do matter */ -# define SSL3_ST_SR_CLNT_HELLO_A (0x110|SSL_ST_ACCEPT) -# define SSL3_ST_SR_CLNT_HELLO_B (0x111|SSL_ST_ACCEPT) -# define SSL3_ST_SR_CLNT_HELLO_C (0x112|SSL_ST_ACCEPT) -# define SSL3_ST_SR_CLNT_HELLO_D (0x115|SSL_ST_ACCEPT) -/* write to client */ -# define DTLS1_ST_SW_HELLO_VERIFY_REQUEST_A (0x113|SSL_ST_ACCEPT) -# define DTLS1_ST_SW_HELLO_VERIFY_REQUEST_B (0x114|SSL_ST_ACCEPT) -# define SSL3_ST_SW_HELLO_REQ_A (0x120|SSL_ST_ACCEPT) -# define SSL3_ST_SW_HELLO_REQ_B (0x121|SSL_ST_ACCEPT) -# define SSL3_ST_SW_HELLO_REQ_C (0x122|SSL_ST_ACCEPT) -# define SSL3_ST_SW_SRVR_HELLO_A (0x130|SSL_ST_ACCEPT) -# define SSL3_ST_SW_SRVR_HELLO_B (0x131|SSL_ST_ACCEPT) -# define SSL3_ST_SW_CERT_A (0x140|SSL_ST_ACCEPT) -# define SSL3_ST_SW_CERT_B (0x141|SSL_ST_ACCEPT) -# define SSL3_ST_SW_KEY_EXCH_A (0x150|SSL_ST_ACCEPT) -# define SSL3_ST_SW_KEY_EXCH_B (0x151|SSL_ST_ACCEPT) -# define SSL3_ST_SW_CERT_REQ_A (0x160|SSL_ST_ACCEPT) -# define SSL3_ST_SW_CERT_REQ_B (0x161|SSL_ST_ACCEPT) -# define SSL3_ST_SW_SRVR_DONE_A (0x170|SSL_ST_ACCEPT) -# define SSL3_ST_SW_SRVR_DONE_B (0x171|SSL_ST_ACCEPT) -/* read from client */ -# define SSL3_ST_SR_CERT_A (0x180|SSL_ST_ACCEPT) -# define SSL3_ST_SR_CERT_B (0x181|SSL_ST_ACCEPT) -# define SSL3_ST_SR_KEY_EXCH_A (0x190|SSL_ST_ACCEPT) -# define SSL3_ST_SR_KEY_EXCH_B (0x191|SSL_ST_ACCEPT) -# define SSL3_ST_SR_CERT_VRFY_A (0x1A0|SSL_ST_ACCEPT) -# define SSL3_ST_SR_CERT_VRFY_B (0x1A1|SSL_ST_ACCEPT) -# define SSL3_ST_SR_CHANGE_A (0x1B0|SSL_ST_ACCEPT) -# define SSL3_ST_SR_CHANGE_B (0x1B1|SSL_ST_ACCEPT) -# ifndef OPENSSL_NO_NEXTPROTONEG -# define SSL3_ST_SR_NEXT_PROTO_A (0x210|SSL_ST_ACCEPT) -# define SSL3_ST_SR_NEXT_PROTO_B (0x211|SSL_ST_ACCEPT) -# endif -# define SSL3_ST_SR_FINISHED_A (0x1C0|SSL_ST_ACCEPT) -# define SSL3_ST_SR_FINISHED_B (0x1C1|SSL_ST_ACCEPT) -/* write to client */ -# define SSL3_ST_SW_CHANGE_A (0x1D0|SSL_ST_ACCEPT) -# define SSL3_ST_SW_CHANGE_B (0x1D1|SSL_ST_ACCEPT) -# define SSL3_ST_SW_FINISHED_A (0x1E0|SSL_ST_ACCEPT) -# define SSL3_ST_SW_FINISHED_B (0x1E1|SSL_ST_ACCEPT) -# define SSL3_ST_SW_SESSION_TICKET_A (0x1F0|SSL_ST_ACCEPT) -# define SSL3_ST_SW_SESSION_TICKET_B (0x1F1|SSL_ST_ACCEPT) -# define SSL3_ST_SW_CERT_STATUS_A (0x200|SSL_ST_ACCEPT) -# define SSL3_ST_SW_CERT_STATUS_B (0x201|SSL_ST_ACCEPT) - -# define SSL3_MT_HELLO_REQUEST 0 -# define SSL3_MT_CLIENT_HELLO 1 -# define SSL3_MT_SERVER_HELLO 2 -# define SSL3_MT_NEWSESSION_TICKET 4 -# define SSL3_MT_CERTIFICATE 11 -# define SSL3_MT_SERVER_KEY_EXCHANGE 12 -# define SSL3_MT_CERTIFICATE_REQUEST 13 -# define SSL3_MT_SERVER_DONE 14 -# define SSL3_MT_CERTIFICATE_VERIFY 15 -# define SSL3_MT_CLIENT_KEY_EXCHANGE 16 -# define SSL3_MT_FINISHED 20 -# define SSL3_MT_CERTIFICATE_STATUS 22 -# ifndef OPENSSL_NO_NEXTPROTONEG -# define SSL3_MT_NEXT_PROTO 67 -# endif -# define DTLS1_MT_HELLO_VERIFY_REQUEST 3 - -# define SSL3_MT_CCS 1 - -/* These are used when changing over to a new cipher */ -# define SSL3_CC_READ 0x01 -# define SSL3_CC_WRITE 0x02 -# define SSL3_CC_CLIENT 0x10 -# define SSL3_CC_SERVER 0x20 -# define SSL3_CHANGE_CIPHER_CLIENT_WRITE (SSL3_CC_CLIENT|SSL3_CC_WRITE) -# define SSL3_CHANGE_CIPHER_SERVER_READ (SSL3_CC_SERVER|SSL3_CC_READ) -# define SSL3_CHANGE_CIPHER_CLIENT_READ (SSL3_CC_CLIENT|SSL3_CC_READ) -# define SSL3_CHANGE_CIPHER_SERVER_WRITE (SSL3_CC_SERVER|SSL3_CC_WRITE) - -#ifdef __cplusplus -} -#endif -#endif diff --git a/ext/openssl-win32/inc32/openssl/stack.h b/ext/openssl-win32/inc32/openssl/stack.h deleted file mode 100644 index eb072166..00000000 --- a/ext/openssl-win32/inc32/openssl/stack.h +++ /dev/null @@ -1,107 +0,0 @@ -/* crypto/stack/stack.h */ -/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) - * All rights reserved. - * - * This package is an SSL implementation written - * by Eric Young (eay@cryptsoft.com). - * The implementation was written so as to conform with Netscapes SSL. - * - * This library is free for commercial and non-commercial use as long as - * the following conditions are aheared to. The following conditions - * apply to all code found in this distribution, be it the RC4, RSA, - * lhash, DES, etc., code; not just the SSL code. The SSL documentation - * included with this distribution is covered by the same copyright terms - * except that the holder is Tim Hudson (tjh@cryptsoft.com). - * - * Copyright remains Eric Young's, and as such any Copyright notices in - * the code are not to be removed. - * If this package is used in a product, Eric Young should be given attribution - * as the author of the parts of the library used. - * This can be in the form of a textual message at program startup or - * in documentation (online or textual) provided with the package. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * "This product includes cryptographic software written by - * Eric Young (eay@cryptsoft.com)" - * The word 'cryptographic' can be left out if the rouines from the library - * being used are not cryptographic related :-). - * 4. If you include any Windows specific code (or a derivative thereof) from - * the apps directory (application code) you must include an acknowledgement: - * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" - * - * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * The licence and distribution terms for any publically available version or - * derivative of this code cannot be changed. i.e. this code cannot simply be - * copied and put under another distribution licence - * [including the GNU Public Licence.] - */ - -#ifndef HEADER_STACK_H -# define HEADER_STACK_H - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct stack_st { - int num; - char **data; - int sorted; - int num_alloc; - int (*comp) (const void *, const void *); -} _STACK; /* Use STACK_OF(...) instead */ - -# define M_sk_num(sk) ((sk) ? (sk)->num:-1) -# define M_sk_value(sk,n) ((sk) ? (sk)->data[n] : NULL) - -int sk_num(const _STACK *); -void *sk_value(const _STACK *, int); - -void *sk_set(_STACK *, int, void *); - -_STACK *sk_new(int (*cmp) (const void *, const void *)); -_STACK *sk_new_null(void); -void sk_free(_STACK *); -void sk_pop_free(_STACK *st, void (*func) (void *)); -_STACK *sk_deep_copy(_STACK *, void *(*)(void *), void (*)(void *)); -int sk_insert(_STACK *sk, void *data, int where); -void *sk_delete(_STACK *st, int loc); -void *sk_delete_ptr(_STACK *st, void *p); -int sk_find(_STACK *st, void *data); -int sk_find_ex(_STACK *st, void *data); -int sk_push(_STACK *st, void *data); -int sk_unshift(_STACK *st, void *data); -void *sk_shift(_STACK *st); -void *sk_pop(_STACK *st); -void sk_zero(_STACK *st); -int (*sk_set_cmp_func(_STACK *sk, int (*c) (const void *, const void *))) - (const void *, const void *); -_STACK *sk_dup(_STACK *st); -void sk_sort(_STACK *st); -int sk_is_sorted(const _STACK *st); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/ext/openssl-win32/inc32/openssl/symhacks.h b/ext/openssl-win32/inc32/openssl/symhacks.h deleted file mode 100644 index 239fa4fb..00000000 --- a/ext/openssl-win32/inc32/openssl/symhacks.h +++ /dev/null @@ -1,516 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The OpenSSL Project. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. All advertising materials mentioning features or use of this - * software must display the following acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" - * - * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * openssl-core@openssl.org. - * - * 5. Products derived from this software may not be called "OpenSSL" - * nor may "OpenSSL" appear in their names without prior written - * permission of the OpenSSL Project. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit (http://www.openssl.org/)" - * - * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY - * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * ==================================================================== - * - * This product includes cryptographic software written by Eric Young - * (eay@cryptsoft.com). This product includes software written by Tim - * Hudson (tjh@cryptsoft.com). - * - */ - -#ifndef HEADER_SYMHACKS_H -# define HEADER_SYMHACKS_H - -# include - -/* - * Hacks to solve the problem with linkers incapable of handling very long - * symbol names. In the case of VMS, the limit is 31 characters on VMS for - * VAX. - */ -/* - * Note that this affects util/libeay.num and util/ssleay.num... you may - * change those manually, but that's not recommended, as those files are - * controlled centrally and updated on Unix, and the central definition may - * disagree with yours, which in turn may come with shareable library - * incompatibilities. - */ -# ifdef OPENSSL_SYS_VMS - -/* Hack a long name in crypto/ex_data.c */ -# undef CRYPTO_get_ex_data_implementation -# define CRYPTO_get_ex_data_implementation CRYPTO_get_ex_data_impl -# undef CRYPTO_set_ex_data_implementation -# define CRYPTO_set_ex_data_implementation CRYPTO_set_ex_data_impl - -/* Hack a long name in crypto/asn1/a_mbstr.c */ -# undef ASN1_STRING_set_default_mask_asc -# define ASN1_STRING_set_default_mask_asc ASN1_STRING_set_def_mask_asc - -# if 0 /* No longer needed, since safestack macro - * magic does the job */ -/* Hack the names created with DECLARE_ASN1_SET_OF(PKCS7_SIGNER_INFO) */ -# undef i2d_ASN1_SET_OF_PKCS7_SIGNER_INFO -# define i2d_ASN1_SET_OF_PKCS7_SIGNER_INFO i2d_ASN1_SET_OF_PKCS7_SIGINF -# undef d2i_ASN1_SET_OF_PKCS7_SIGNER_INFO -# define d2i_ASN1_SET_OF_PKCS7_SIGNER_INFO d2i_ASN1_SET_OF_PKCS7_SIGINF -# endif - -# if 0 /* No longer needed, since safestack macro - * magic does the job */ -/* Hack the names created with DECLARE_ASN1_SET_OF(PKCS7_RECIP_INFO) */ -# undef i2d_ASN1_SET_OF_PKCS7_RECIP_INFO -# define i2d_ASN1_SET_OF_PKCS7_RECIP_INFO i2d_ASN1_SET_OF_PKCS7_RECINF -# undef d2i_ASN1_SET_OF_PKCS7_RECIP_INFO -# define d2i_ASN1_SET_OF_PKCS7_RECIP_INFO d2i_ASN1_SET_OF_PKCS7_RECINF -# endif - -# if 0 /* No longer needed, since safestack macro - * magic does the job */ -/* Hack the names created with DECLARE_ASN1_SET_OF(ACCESS_DESCRIPTION) */ -# undef i2d_ASN1_SET_OF_ACCESS_DESCRIPTION -# define i2d_ASN1_SET_OF_ACCESS_DESCRIPTION i2d_ASN1_SET_OF_ACC_DESC -# undef d2i_ASN1_SET_OF_ACCESS_DESCRIPTION -# define d2i_ASN1_SET_OF_ACCESS_DESCRIPTION d2i_ASN1_SET_OF_ACC_DESC -# endif - -/* Hack the names created with DECLARE_PEM_rw(NETSCAPE_CERT_SEQUENCE) */ -# undef PEM_read_NETSCAPE_CERT_SEQUENCE -# define PEM_read_NETSCAPE_CERT_SEQUENCE PEM_read_NS_CERT_SEQ -# undef PEM_write_NETSCAPE_CERT_SEQUENCE -# define PEM_write_NETSCAPE_CERT_SEQUENCE PEM_write_NS_CERT_SEQ -# undef PEM_read_bio_NETSCAPE_CERT_SEQUENCE -# define PEM_read_bio_NETSCAPE_CERT_SEQUENCE PEM_read_bio_NS_CERT_SEQ -# undef PEM_write_bio_NETSCAPE_CERT_SEQUENCE -# define PEM_write_bio_NETSCAPE_CERT_SEQUENCE PEM_write_bio_NS_CERT_SEQ -# undef PEM_write_cb_bio_NETSCAPE_CERT_SEQUENCE -# define PEM_write_cb_bio_NETSCAPE_CERT_SEQUENCE PEM_write_cb_bio_NS_CERT_SEQ - -/* Hack the names created with DECLARE_PEM_rw(PKCS8_PRIV_KEY_INFO) */ -# undef PEM_read_PKCS8_PRIV_KEY_INFO -# define PEM_read_PKCS8_PRIV_KEY_INFO PEM_read_P8_PRIV_KEY_INFO -# undef PEM_write_PKCS8_PRIV_KEY_INFO -# define PEM_write_PKCS8_PRIV_KEY_INFO PEM_write_P8_PRIV_KEY_INFO -# undef PEM_read_bio_PKCS8_PRIV_KEY_INFO -# define PEM_read_bio_PKCS8_PRIV_KEY_INFO PEM_read_bio_P8_PRIV_KEY_INFO -# undef PEM_write_bio_PKCS8_PRIV_KEY_INFO -# define PEM_write_bio_PKCS8_PRIV_KEY_INFO PEM_write_bio_P8_PRIV_KEY_INFO -# undef PEM_write_cb_bio_PKCS8_PRIV_KEY_INFO -# define PEM_write_cb_bio_PKCS8_PRIV_KEY_INFO PEM_wrt_cb_bio_P8_PRIV_KEY_INFO - -/* Hack other PEM names */ -# undef PEM_write_bio_PKCS8PrivateKey_nid -# define PEM_write_bio_PKCS8PrivateKey_nid PEM_write_bio_PKCS8PrivKey_nid - -/* Hack some long X509 names */ -# undef X509_REVOKED_get_ext_by_critical -# define X509_REVOKED_get_ext_by_critical X509_REVOKED_get_ext_by_critic -# undef X509_policy_tree_get0_user_policies -# define X509_policy_tree_get0_user_policies X509_pcy_tree_get0_usr_policies -# undef X509_policy_node_get0_qualifiers -# define X509_policy_node_get0_qualifiers X509_pcy_node_get0_qualifiers -# undef X509_STORE_CTX_get_explicit_policy -# define X509_STORE_CTX_get_explicit_policy X509_STORE_CTX_get_expl_policy -# undef X509_STORE_CTX_get0_current_issuer -# define X509_STORE_CTX_get0_current_issuer X509_STORE_CTX_get0_cur_issuer - -/* Hack some long CRYPTO names */ -# undef CRYPTO_set_dynlock_destroy_callback -# define CRYPTO_set_dynlock_destroy_callback CRYPTO_set_dynlock_destroy_cb -# undef CRYPTO_set_dynlock_create_callback -# define CRYPTO_set_dynlock_create_callback CRYPTO_set_dynlock_create_cb -# undef CRYPTO_set_dynlock_lock_callback -# define CRYPTO_set_dynlock_lock_callback CRYPTO_set_dynlock_lock_cb -# undef CRYPTO_get_dynlock_lock_callback -# define CRYPTO_get_dynlock_lock_callback CRYPTO_get_dynlock_lock_cb -# undef CRYPTO_get_dynlock_destroy_callback -# define CRYPTO_get_dynlock_destroy_callback CRYPTO_get_dynlock_destroy_cb -# undef CRYPTO_get_dynlock_create_callback -# define CRYPTO_get_dynlock_create_callback CRYPTO_get_dynlock_create_cb -# undef CRYPTO_set_locked_mem_ex_functions -# define CRYPTO_set_locked_mem_ex_functions CRYPTO_set_locked_mem_ex_funcs -# undef CRYPTO_get_locked_mem_ex_functions -# define CRYPTO_get_locked_mem_ex_functions CRYPTO_get_locked_mem_ex_funcs - -/* Hack some long SSL/TLS names */ -# undef SSL_CTX_set_default_verify_paths -# define SSL_CTX_set_default_verify_paths SSL_CTX_set_def_verify_paths -# undef SSL_get_ex_data_X509_STORE_CTX_idx -# define SSL_get_ex_data_X509_STORE_CTX_idx SSL_get_ex_d_X509_STORE_CTX_idx -# undef SSL_add_file_cert_subjects_to_stack -# define SSL_add_file_cert_subjects_to_stack SSL_add_file_cert_subjs_to_stk -# undef SSL_add_dir_cert_subjects_to_stack -# define SSL_add_dir_cert_subjects_to_stack SSL_add_dir_cert_subjs_to_stk -# undef SSL_CTX_use_certificate_chain_file -# define SSL_CTX_use_certificate_chain_file SSL_CTX_use_cert_chain_file -# undef SSL_CTX_set_cert_verify_callback -# define SSL_CTX_set_cert_verify_callback SSL_CTX_set_cert_verify_cb -# undef SSL_CTX_set_default_passwd_cb_userdata -# define SSL_CTX_set_default_passwd_cb_userdata SSL_CTX_set_def_passwd_cb_ud -# undef SSL_COMP_get_compression_methods -# define SSL_COMP_get_compression_methods SSL_COMP_get_compress_methods -# undef SSL_COMP_set0_compression_methods -# define SSL_COMP_set0_compression_methods SSL_COMP_set0_compress_methods -# undef SSL_COMP_free_compression_methods -# define SSL_COMP_free_compression_methods SSL_COMP_free_compress_methods -# undef ssl_add_clienthello_renegotiate_ext -# define ssl_add_clienthello_renegotiate_ext ssl_add_clienthello_reneg_ext -# undef ssl_add_serverhello_renegotiate_ext -# define ssl_add_serverhello_renegotiate_ext ssl_add_serverhello_reneg_ext -# undef ssl_parse_clienthello_renegotiate_ext -# define ssl_parse_clienthello_renegotiate_ext ssl_parse_clienthello_reneg_ext -# undef ssl_parse_serverhello_renegotiate_ext -# define ssl_parse_serverhello_renegotiate_ext ssl_parse_serverhello_reneg_ext -# undef SSL_srp_server_param_with_username -# define SSL_srp_server_param_with_username SSL_srp_server_param_with_un -# undef SSL_CTX_set_srp_client_pwd_callback -# define SSL_CTX_set_srp_client_pwd_callback SSL_CTX_set_srp_client_pwd_cb -# undef SSL_CTX_set_srp_verify_param_callback -# define SSL_CTX_set_srp_verify_param_callback SSL_CTX_set_srp_vfy_param_cb -# undef SSL_CTX_set_srp_username_callback -# define SSL_CTX_set_srp_username_callback SSL_CTX_set_srp_un_cb -# undef ssl_add_clienthello_use_srtp_ext -# define ssl_add_clienthello_use_srtp_ext ssl_add_clihello_use_srtp_ext -# undef ssl_add_serverhello_use_srtp_ext -# define ssl_add_serverhello_use_srtp_ext ssl_add_serhello_use_srtp_ext -# undef ssl_parse_clienthello_use_srtp_ext -# define ssl_parse_clienthello_use_srtp_ext ssl_parse_clihello_use_srtp_ext -# undef ssl_parse_serverhello_use_srtp_ext -# define ssl_parse_serverhello_use_srtp_ext ssl_parse_serhello_use_srtp_ext -# undef SSL_CTX_set_next_protos_advertised_cb -# define SSL_CTX_set_next_protos_advertised_cb SSL_CTX_set_next_protos_adv_cb -# undef SSL_CTX_set_next_proto_select_cb -# define SSL_CTX_set_next_proto_select_cb SSL_CTX_set_next_proto_sel_cb - -# undef tls1_send_server_supplemental_data -# define tls1_send_server_supplemental_data tls1_send_server_suppl_data -# undef tls1_send_client_supplemental_data -# define tls1_send_client_supplemental_data tls1_send_client_suppl_data -# undef tls1_get_server_supplemental_data -# define tls1_get_server_supplemental_data tls1_get_server_suppl_data -# undef tls1_get_client_supplemental_data -# define tls1_get_client_supplemental_data tls1_get_client_suppl_data - -# undef ssl3_cbc_record_digest_supported -# define ssl3_cbc_record_digest_supported ssl3_cbc_record_digest_support -# undef ssl_check_clienthello_tlsext_late -# define ssl_check_clienthello_tlsext_late ssl_check_clihello_tlsext_late -# undef ssl_check_clienthello_tlsext_early -# define ssl_check_clienthello_tlsext_early ssl_check_clihello_tlsext_early - -/* Hack some RSA long names */ -# undef RSA_padding_check_PKCS1_OAEP_mgf1 -# define RSA_padding_check_PKCS1_OAEP_mgf1 RSA_pad_check_PKCS1_OAEP_mgf1 - -/* Hack some ENGINE long names */ -# undef ENGINE_get_default_BN_mod_exp_crt -# define ENGINE_get_default_BN_mod_exp_crt ENGINE_get_def_BN_mod_exp_crt -# undef ENGINE_set_default_BN_mod_exp_crt -# define ENGINE_set_default_BN_mod_exp_crt ENGINE_set_def_BN_mod_exp_crt -# undef ENGINE_set_load_privkey_function -# define ENGINE_set_load_privkey_function ENGINE_set_load_privkey_fn -# undef ENGINE_get_load_privkey_function -# define ENGINE_get_load_privkey_function ENGINE_get_load_privkey_fn -# undef ENGINE_unregister_pkey_asn1_meths -# define ENGINE_unregister_pkey_asn1_meths ENGINE_unreg_pkey_asn1_meths -# undef ENGINE_register_all_pkey_asn1_meths -# define ENGINE_register_all_pkey_asn1_meths ENGINE_reg_all_pkey_asn1_meths -# undef ENGINE_set_default_pkey_asn1_meths -# define ENGINE_set_default_pkey_asn1_meths ENGINE_set_def_pkey_asn1_meths -# undef ENGINE_get_pkey_asn1_meth_engine -# define ENGINE_get_pkey_asn1_meth_engine ENGINE_get_pkey_asn1_meth_eng -# undef ENGINE_set_load_ssl_client_cert_function -# define ENGINE_set_load_ssl_client_cert_function \ - ENGINE_set_ld_ssl_clnt_cert_fn -# undef ENGINE_get_ssl_client_cert_function -# define ENGINE_get_ssl_client_cert_function ENGINE_get_ssl_client_cert_fn - -/* Hack some long OCSP names */ -# undef OCSP_REQUEST_get_ext_by_critical -# define OCSP_REQUEST_get_ext_by_critical OCSP_REQUEST_get_ext_by_crit -# undef OCSP_BASICRESP_get_ext_by_critical -# define OCSP_BASICRESP_get_ext_by_critical OCSP_BASICRESP_get_ext_by_crit -# undef OCSP_SINGLERESP_get_ext_by_critical -# define OCSP_SINGLERESP_get_ext_by_critical OCSP_SINGLERESP_get_ext_by_crit - -/* Hack some long DES names */ -# undef _ossl_old_des_ede3_cfb64_encrypt -# define _ossl_old_des_ede3_cfb64_encrypt _ossl_odes_ede3_cfb64_encrypt -# undef _ossl_old_des_ede3_ofb64_encrypt -# define _ossl_old_des_ede3_ofb64_encrypt _ossl_odes_ede3_ofb64_encrypt - -/* Hack some long EVP names */ -# undef OPENSSL_add_all_algorithms_noconf -# define OPENSSL_add_all_algorithms_noconf OPENSSL_add_all_algo_noconf -# undef OPENSSL_add_all_algorithms_conf -# define OPENSSL_add_all_algorithms_conf OPENSSL_add_all_algo_conf -# undef EVP_PKEY_meth_set_verify_recover -# define EVP_PKEY_meth_set_verify_recover EVP_PKEY_meth_set_vrfy_recover - -/* Hack some long EC names */ -# undef EC_GROUP_set_point_conversion_form -# define EC_GROUP_set_point_conversion_form EC_GROUP_set_point_conv_form -# undef EC_GROUP_get_point_conversion_form -# define EC_GROUP_get_point_conversion_form EC_GROUP_get_point_conv_form -# undef EC_GROUP_clear_free_all_extra_data -# define EC_GROUP_clear_free_all_extra_data EC_GROUP_clr_free_all_xtra_data -# undef EC_KEY_set_public_key_affine_coordinates -# define EC_KEY_set_public_key_affine_coordinates \ - EC_KEY_set_pub_key_aff_coords -# undef EC_POINT_set_Jprojective_coordinates_GFp -# define EC_POINT_set_Jprojective_coordinates_GFp \ - EC_POINT_set_Jproj_coords_GFp -# undef EC_POINT_get_Jprojective_coordinates_GFp -# define EC_POINT_get_Jprojective_coordinates_GFp \ - EC_POINT_get_Jproj_coords_GFp -# undef EC_POINT_set_affine_coordinates_GFp -# define EC_POINT_set_affine_coordinates_GFp EC_POINT_set_affine_coords_GFp -# undef EC_POINT_get_affine_coordinates_GFp -# define EC_POINT_get_affine_coordinates_GFp EC_POINT_get_affine_coords_GFp -# undef EC_POINT_set_compressed_coordinates_GFp -# define EC_POINT_set_compressed_coordinates_GFp EC_POINT_set_compr_coords_GFp -# undef EC_POINT_set_affine_coordinates_GF2m -# define EC_POINT_set_affine_coordinates_GF2m EC_POINT_set_affine_coords_GF2m -# undef EC_POINT_get_affine_coordinates_GF2m -# define EC_POINT_get_affine_coordinates_GF2m EC_POINT_get_affine_coords_GF2m -# undef EC_POINT_set_compressed_coordinates_GF2m -# define EC_POINT_set_compressed_coordinates_GF2m \ - EC_POINT_set_compr_coords_GF2m -# undef ec_GF2m_simple_group_clear_finish -# define ec_GF2m_simple_group_clear_finish ec_GF2m_simple_grp_clr_finish -# undef ec_GF2m_simple_group_check_discriminant -# define ec_GF2m_simple_group_check_discriminant ec_GF2m_simple_grp_chk_discrim -# undef ec_GF2m_simple_point_clear_finish -# define ec_GF2m_simple_point_clear_finish ec_GF2m_simple_pt_clr_finish -# undef ec_GF2m_simple_point_set_to_infinity -# define ec_GF2m_simple_point_set_to_infinity ec_GF2m_simple_pt_set_to_inf -# undef ec_GF2m_simple_points_make_affine -# define ec_GF2m_simple_points_make_affine ec_GF2m_simple_pts_make_affine -# undef ec_GF2m_simple_point_set_affine_coordinates -# define ec_GF2m_simple_point_set_affine_coordinates \ - ec_GF2m_smp_pt_set_af_coords -# undef ec_GF2m_simple_point_get_affine_coordinates -# define ec_GF2m_simple_point_get_affine_coordinates \ - ec_GF2m_smp_pt_get_af_coords -# undef ec_GF2m_simple_set_compressed_coordinates -# define ec_GF2m_simple_set_compressed_coordinates \ - ec_GF2m_smp_set_compr_coords -# undef ec_GFp_simple_group_set_curve_GFp -# define ec_GFp_simple_group_set_curve_GFp ec_GFp_simple_grp_set_curve_GFp -# undef ec_GFp_simple_group_get_curve_GFp -# define ec_GFp_simple_group_get_curve_GFp ec_GFp_simple_grp_get_curve_GFp -# undef ec_GFp_simple_group_clear_finish -# define ec_GFp_simple_group_clear_finish ec_GFp_simple_grp_clear_finish -# undef ec_GFp_simple_group_set_generator -# define ec_GFp_simple_group_set_generator ec_GFp_simple_grp_set_generator -# undef ec_GFp_simple_group_get0_generator -# define ec_GFp_simple_group_get0_generator ec_GFp_simple_grp_gt0_generator -# undef ec_GFp_simple_group_get_cofactor -# define ec_GFp_simple_group_get_cofactor ec_GFp_simple_grp_get_cofactor -# undef ec_GFp_simple_point_clear_finish -# define ec_GFp_simple_point_clear_finish ec_GFp_simple_pt_clear_finish -# undef ec_GFp_simple_point_set_to_infinity -# define ec_GFp_simple_point_set_to_infinity ec_GFp_simple_pt_set_to_inf -# undef ec_GFp_simple_points_make_affine -# define ec_GFp_simple_points_make_affine ec_GFp_simple_pts_make_affine -# undef ec_GFp_simple_set_Jprojective_coordinates_GFp -# define ec_GFp_simple_set_Jprojective_coordinates_GFp \ - ec_GFp_smp_set_Jproj_coords_GFp -# undef ec_GFp_simple_get_Jprojective_coordinates_GFp -# define ec_GFp_simple_get_Jprojective_coordinates_GFp \ - ec_GFp_smp_get_Jproj_coords_GFp -# undef ec_GFp_simple_point_set_affine_coordinates_GFp -# define ec_GFp_simple_point_set_affine_coordinates_GFp \ - ec_GFp_smp_pt_set_af_coords_GFp -# undef ec_GFp_simple_point_get_affine_coordinates_GFp -# define ec_GFp_simple_point_get_affine_coordinates_GFp \ - ec_GFp_smp_pt_get_af_coords_GFp -# undef ec_GFp_simple_set_compressed_coordinates_GFp -# define ec_GFp_simple_set_compressed_coordinates_GFp \ - ec_GFp_smp_set_compr_coords_GFp -# undef ec_GFp_simple_point_set_affine_coordinates -# define ec_GFp_simple_point_set_affine_coordinates \ - ec_GFp_smp_pt_set_af_coords -# undef ec_GFp_simple_point_get_affine_coordinates -# define ec_GFp_simple_point_get_affine_coordinates \ - ec_GFp_smp_pt_get_af_coords -# undef ec_GFp_simple_set_compressed_coordinates -# define ec_GFp_simple_set_compressed_coordinates \ - ec_GFp_smp_set_compr_coords -# undef ec_GFp_simple_group_check_discriminant -# define ec_GFp_simple_group_check_discriminant ec_GFp_simple_grp_chk_discrim - -/* Hack som long STORE names */ -# undef STORE_method_set_initialise_function -# define STORE_method_set_initialise_function STORE_meth_set_initialise_fn -# undef STORE_method_set_cleanup_function -# define STORE_method_set_cleanup_function STORE_meth_set_cleanup_fn -# undef STORE_method_set_generate_function -# define STORE_method_set_generate_function STORE_meth_set_generate_fn -# undef STORE_method_set_modify_function -# define STORE_method_set_modify_function STORE_meth_set_modify_fn -# undef STORE_method_set_revoke_function -# define STORE_method_set_revoke_function STORE_meth_set_revoke_fn -# undef STORE_method_set_delete_function -# define STORE_method_set_delete_function STORE_meth_set_delete_fn -# undef STORE_method_set_list_start_function -# define STORE_method_set_list_start_function STORE_meth_set_list_start_fn -# undef STORE_method_set_list_next_function -# define STORE_method_set_list_next_function STORE_meth_set_list_next_fn -# undef STORE_method_set_list_end_function -# define STORE_method_set_list_end_function STORE_meth_set_list_end_fn -# undef STORE_method_set_update_store_function -# define STORE_method_set_update_store_function STORE_meth_set_update_store_fn -# undef STORE_method_set_lock_store_function -# define STORE_method_set_lock_store_function STORE_meth_set_lock_store_fn -# undef STORE_method_set_unlock_store_function -# define STORE_method_set_unlock_store_function STORE_meth_set_unlock_store_fn -# undef STORE_method_get_initialise_function -# define STORE_method_get_initialise_function STORE_meth_get_initialise_fn -# undef STORE_method_get_cleanup_function -# define STORE_method_get_cleanup_function STORE_meth_get_cleanup_fn -# undef STORE_method_get_generate_function -# define STORE_method_get_generate_function STORE_meth_get_generate_fn -# undef STORE_method_get_modify_function -# define STORE_method_get_modify_function STORE_meth_get_modify_fn -# undef STORE_method_get_revoke_function -# define STORE_method_get_revoke_function STORE_meth_get_revoke_fn -# undef STORE_method_get_delete_function -# define STORE_method_get_delete_function STORE_meth_get_delete_fn -# undef STORE_method_get_list_start_function -# define STORE_method_get_list_start_function STORE_meth_get_list_start_fn -# undef STORE_method_get_list_next_function -# define STORE_method_get_list_next_function STORE_meth_get_list_next_fn -# undef STORE_method_get_list_end_function -# define STORE_method_get_list_end_function STORE_meth_get_list_end_fn -# undef STORE_method_get_update_store_function -# define STORE_method_get_update_store_function STORE_meth_get_update_store_fn -# undef STORE_method_get_lock_store_function -# define STORE_method_get_lock_store_function STORE_meth_get_lock_store_fn -# undef STORE_method_get_unlock_store_function -# define STORE_method_get_unlock_store_function STORE_meth_get_unlock_store_fn - -/* Hack some long TS names */ -# undef TS_RESP_CTX_set_status_info_cond -# define TS_RESP_CTX_set_status_info_cond TS_RESP_CTX_set_stat_info_cond -# undef TS_RESP_CTX_set_clock_precision_digits -# define TS_RESP_CTX_set_clock_precision_digits TS_RESP_CTX_set_clk_prec_digits -# undef TS_CONF_set_clock_precision_digits -# define TS_CONF_set_clock_precision_digits TS_CONF_set_clk_prec_digits - -/* Hack some long CMS names */ -# undef CMS_RecipientInfo_ktri_get0_algs -# define CMS_RecipientInfo_ktri_get0_algs CMS_RecipInfo_ktri_get0_algs -# undef CMS_RecipientInfo_ktri_get0_signer_id -# define CMS_RecipientInfo_ktri_get0_signer_id CMS_RecipInfo_ktri_get0_sigr_id -# undef CMS_OtherRevocationInfoFormat_it -# define CMS_OtherRevocationInfoFormat_it CMS_OtherRevocInfoFormat_it -# undef CMS_KeyAgreeRecipientIdentifier_it -# define CMS_KeyAgreeRecipientIdentifier_it CMS_KeyAgreeRecipIdentifier_it -# undef CMS_OriginatorIdentifierOrKey_it -# define CMS_OriginatorIdentifierOrKey_it CMS_OriginatorIdOrKey_it -# undef cms_SignerIdentifier_get0_signer_id -# define cms_SignerIdentifier_get0_signer_id cms_SignerId_get0_signer_id -# undef CMS_RecipientInfo_kari_get0_orig_id -# define CMS_RecipientInfo_kari_get0_orig_id CMS_RecipInfo_kari_get0_orig_id -# undef CMS_RecipientInfo_kari_get0_reks -# define CMS_RecipientInfo_kari_get0_reks CMS_RecipInfo_kari_get0_reks -# undef CMS_RecipientEncryptedKey_cert_cmp -# define CMS_RecipientEncryptedKey_cert_cmp CMS_RecipEncryptedKey_cert_cmp -# undef CMS_RecipientInfo_kari_set0_pkey -# define CMS_RecipientInfo_kari_set0_pkey CMS_RecipInfo_kari_set0_pkey -# undef CMS_RecipientEncryptedKey_get0_id -# define CMS_RecipientEncryptedKey_get0_id CMS_RecipEncryptedKey_get0_id -# undef CMS_RecipientInfo_kari_orig_id_cmp -# define CMS_RecipientInfo_kari_orig_id_cmp CMS_RecipInfo_kari_orig_id_cmp - -/* Hack some long DTLS1 names */ -# undef dtls1_retransmit_buffered_messages -# define dtls1_retransmit_buffered_messages dtls1_retransmit_buffered_msgs - -/* Hack some long SRP names */ -# undef SRP_generate_server_master_secret -# define SRP_generate_server_master_secret SRP_gen_server_master_secret -# undef SRP_generate_client_master_secret -# define SRP_generate_client_master_secret SRP_gen_client_master_secret - -/* Hack some long UI names */ -# undef UI_method_get_prompt_constructor -# define UI_method_get_prompt_constructor UI_method_get_prompt_constructr -# undef UI_method_set_prompt_constructor -# define UI_method_set_prompt_constructor UI_method_set_prompt_constructr - -# endif /* defined OPENSSL_SYS_VMS */ - -/* Case insensitive linking causes problems.... */ -# if defined(OPENSSL_SYS_VMS) || defined(OPENSSL_SYS_OS2) -# undef ERR_load_CRYPTO_strings -# define ERR_load_CRYPTO_strings ERR_load_CRYPTOlib_strings -# undef OCSP_crlID_new -# define OCSP_crlID_new OCSP_crlID2_new - -# undef d2i_ECPARAMETERS -# define d2i_ECPARAMETERS d2i_UC_ECPARAMETERS -# undef i2d_ECPARAMETERS -# define i2d_ECPARAMETERS i2d_UC_ECPARAMETERS -# undef d2i_ECPKPARAMETERS -# define d2i_ECPKPARAMETERS d2i_UC_ECPKPARAMETERS -# undef i2d_ECPKPARAMETERS -# define i2d_ECPKPARAMETERS i2d_UC_ECPKPARAMETERS - -/* - * These functions do not seem to exist! However, I'm paranoid... Original - * command in x509v3.h: These functions are being redefined in another - * directory, and clash when the linker is case-insensitive, so let's hide - * them a little, by giving them an extra 'o' at the beginning of the name... - */ -# undef X509v3_cleanup_extensions -# define X509v3_cleanup_extensions oX509v3_cleanup_extensions -# undef X509v3_add_extension -# define X509v3_add_extension oX509v3_add_extension -# undef X509v3_add_netscape_extensions -# define X509v3_add_netscape_extensions oX509v3_add_netscape_extensions -# undef X509v3_add_standard_extensions -# define X509v3_add_standard_extensions oX509v3_add_standard_extensions - -/* This one clashes with CMS_data_create */ -# undef cms_Data_create -# define cms_Data_create priv_cms_Data_create - -# endif - -#endif /* ! defined HEADER_VMS_IDHACKS_H */ diff --git a/ext/openssl-win32/inc32/openssl/tls1.h b/ext/openssl-win32/inc32/openssl/tls1.h deleted file mode 100644 index 5929607f..00000000 --- a/ext/openssl-win32/inc32/openssl/tls1.h +++ /dev/null @@ -1,813 +0,0 @@ -/* ssl/tls1.h */ -/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) - * All rights reserved. - * - * This package is an SSL implementation written - * by Eric Young (eay@cryptsoft.com). - * The implementation was written so as to conform with Netscapes SSL. - * - * This library is free for commercial and non-commercial use as long as - * the following conditions are aheared to. The following conditions - * apply to all code found in this distribution, be it the RC4, RSA, - * lhash, DES, etc., code; not just the SSL code. The SSL documentation - * included with this distribution is covered by the same copyright terms - * except that the holder is Tim Hudson (tjh@cryptsoft.com). - * - * Copyright remains Eric Young's, and as such any Copyright notices in - * the code are not to be removed. - * If this package is used in a product, Eric Young should be given attribution - * as the author of the parts of the library used. - * This can be in the form of a textual message at program startup or - * in documentation (online or textual) provided with the package. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * "This product includes cryptographic software written by - * Eric Young (eay@cryptsoft.com)" - * The word 'cryptographic' can be left out if the rouines from the library - * being used are not cryptographic related :-). - * 4. If you include any Windows specific code (or a derivative thereof) from - * the apps directory (application code) you must include an acknowledgement: - * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" - * - * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * The licence and distribution terms for any publically available version or - * derivative of this code cannot be changed. i.e. this code cannot simply be - * copied and put under another distribution licence - * [including the GNU Public Licence.] - */ -/* ==================================================================== - * Copyright (c) 1998-2006 The OpenSSL Project. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. All advertising materials mentioning features or use of this - * software must display the following acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" - * - * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * openssl-core@openssl.org. - * - * 5. Products derived from this software may not be called "OpenSSL" - * nor may "OpenSSL" appear in their names without prior written - * permission of the OpenSSL Project. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit (http://www.openssl.org/)" - * - * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY - * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * ==================================================================== - * - * This product includes cryptographic software written by Eric Young - * (eay@cryptsoft.com). This product includes software written by Tim - * Hudson (tjh@cryptsoft.com). - * - */ -/* ==================================================================== - * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED. - * - * Portions of the attached software ("Contribution") are developed by - * SUN MICROSYSTEMS, INC., and are contributed to the OpenSSL project. - * - * The Contribution is licensed pursuant to the OpenSSL open source - * license provided above. - * - * ECC cipher suite support in OpenSSL originally written by - * Vipul Gupta and Sumit Gupta of Sun Microsystems Laboratories. - * - */ -/* ==================================================================== - * Copyright 2005 Nokia. All rights reserved. - * - * The portions of the attached software ("Contribution") is developed by - * Nokia Corporation and is licensed pursuant to the OpenSSL open source - * license. - * - * The Contribution, originally written by Mika Kousa and Pasi Eronen of - * Nokia Corporation, consists of the "PSK" (Pre-Shared Key) ciphersuites - * support (see RFC 4279) to OpenSSL. - * - * No patent licenses or other rights except those expressly stated in - * the OpenSSL open source license shall be deemed granted or received - * expressly, by implication, estoppel, or otherwise. - * - * No assurances are provided by Nokia that the Contribution does not - * infringe the patent or other intellectual property rights of any third - * party or that the license provides you with all the necessary rights - * to make use of the Contribution. - * - * THE SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. IN - * ADDITION TO THE DISCLAIMERS INCLUDED IN THE LICENSE, NOKIA - * SPECIFICALLY DISCLAIMS ANY LIABILITY FOR CLAIMS BROUGHT BY YOU OR ANY - * OTHER ENTITY BASED ON INFRINGEMENT OF INTELLECTUAL PROPERTY RIGHTS OR - * OTHERWISE. - */ - -#ifndef HEADER_TLS1_H -# define HEADER_TLS1_H - -# include - -#ifdef __cplusplus -extern "C" { -#endif - -# define TLS1_ALLOW_EXPERIMENTAL_CIPHERSUITES 0 - -# define TLS1_VERSION 0x0301 -# define TLS1_1_VERSION 0x0302 -# define TLS1_2_VERSION 0x0303 -# define TLS_MAX_VERSION TLS1_2_VERSION - -# define TLS1_VERSION_MAJOR 0x03 -# define TLS1_VERSION_MINOR 0x01 - -# define TLS1_1_VERSION_MAJOR 0x03 -# define TLS1_1_VERSION_MINOR 0x02 - -# define TLS1_2_VERSION_MAJOR 0x03 -# define TLS1_2_VERSION_MINOR 0x03 - -# define TLS1_get_version(s) \ - ((s->version >> 8) == TLS1_VERSION_MAJOR ? s->version : 0) - -# define TLS1_get_client_version(s) \ - ((s->client_version >> 8) == TLS1_VERSION_MAJOR ? s->client_version : 0) - -# define TLS1_AD_DECRYPTION_FAILED 21 -# define TLS1_AD_RECORD_OVERFLOW 22 -# define TLS1_AD_UNKNOWN_CA 48/* fatal */ -# define TLS1_AD_ACCESS_DENIED 49/* fatal */ -# define TLS1_AD_DECODE_ERROR 50/* fatal */ -# define TLS1_AD_DECRYPT_ERROR 51 -# define TLS1_AD_EXPORT_RESTRICTION 60/* fatal */ -# define TLS1_AD_PROTOCOL_VERSION 70/* fatal */ -# define TLS1_AD_INSUFFICIENT_SECURITY 71/* fatal */ -# define TLS1_AD_INTERNAL_ERROR 80/* fatal */ -# define TLS1_AD_INAPPROPRIATE_FALLBACK 86/* fatal */ -# define TLS1_AD_USER_CANCELLED 90 -# define TLS1_AD_NO_RENEGOTIATION 100 -/* codes 110-114 are from RFC3546 */ -# define TLS1_AD_UNSUPPORTED_EXTENSION 110 -# define TLS1_AD_CERTIFICATE_UNOBTAINABLE 111 -# define TLS1_AD_UNRECOGNIZED_NAME 112 -# define TLS1_AD_BAD_CERTIFICATE_STATUS_RESPONSE 113 -# define TLS1_AD_BAD_CERTIFICATE_HASH_VALUE 114 -# define TLS1_AD_UNKNOWN_PSK_IDENTITY 115/* fatal */ - -/* ExtensionType values from RFC3546 / RFC4366 / RFC6066 */ -# define TLSEXT_TYPE_server_name 0 -# define TLSEXT_TYPE_max_fragment_length 1 -# define TLSEXT_TYPE_client_certificate_url 2 -# define TLSEXT_TYPE_trusted_ca_keys 3 -# define TLSEXT_TYPE_truncated_hmac 4 -# define TLSEXT_TYPE_status_request 5 -/* ExtensionType values from RFC4681 */ -# define TLSEXT_TYPE_user_mapping 6 -/* ExtensionType values from RFC5878 */ -# define TLSEXT_TYPE_client_authz 7 -# define TLSEXT_TYPE_server_authz 8 -/* ExtensionType values from RFC6091 */ -# define TLSEXT_TYPE_cert_type 9 - -/* ExtensionType values from RFC4492 */ -# define TLSEXT_TYPE_elliptic_curves 10 -# define TLSEXT_TYPE_ec_point_formats 11 - -/* ExtensionType value from RFC5054 */ -# define TLSEXT_TYPE_srp 12 - -/* ExtensionType values from RFC5246 */ -# define TLSEXT_TYPE_signature_algorithms 13 - -/* ExtensionType value from RFC5764 */ -# define TLSEXT_TYPE_use_srtp 14 - -/* ExtensionType value from RFC5620 */ -# define TLSEXT_TYPE_heartbeat 15 - -/* ExtensionType value from draft-ietf-tls-applayerprotoneg-00 */ -# define TLSEXT_TYPE_application_layer_protocol_negotiation 16 - -/* - * ExtensionType value for TLS padding extension. - * http://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml - * http://tools.ietf.org/html/draft-agl-tls-padding-03 - */ -# define TLSEXT_TYPE_padding 21 - -/* ExtensionType value from RFC4507 */ -# define TLSEXT_TYPE_session_ticket 35 - -/* ExtensionType value from draft-rescorla-tls-opaque-prf-input-00.txt */ -# if 0 -/* - * will have to be provided externally for now , - * i.e. build with -DTLSEXT_TYPE_opaque_prf_input=38183 - * using whatever extension number you'd like to try - */ -# define TLSEXT_TYPE_opaque_prf_input ?? -# endif - -/* Temporary extension type */ -# define TLSEXT_TYPE_renegotiate 0xff01 - -# ifndef OPENSSL_NO_NEXTPROTONEG -/* This is not an IANA defined extension number */ -# define TLSEXT_TYPE_next_proto_neg 13172 -# endif - -/* NameType value from RFC 3546 */ -# define TLSEXT_NAMETYPE_host_name 0 -/* status request value from RFC 3546 */ -# define TLSEXT_STATUSTYPE_ocsp 1 - -/* ECPointFormat values from draft-ietf-tls-ecc-12 */ -# define TLSEXT_ECPOINTFORMAT_first 0 -# define TLSEXT_ECPOINTFORMAT_uncompressed 0 -# define TLSEXT_ECPOINTFORMAT_ansiX962_compressed_prime 1 -# define TLSEXT_ECPOINTFORMAT_ansiX962_compressed_char2 2 -# define TLSEXT_ECPOINTFORMAT_last 2 - -/* Signature and hash algorithms from RFC 5246 */ - -# define TLSEXT_signature_anonymous 0 -# define TLSEXT_signature_rsa 1 -# define TLSEXT_signature_dsa 2 -# define TLSEXT_signature_ecdsa 3 - -/* Total number of different signature algorithms */ -# define TLSEXT_signature_num 4 - -# define TLSEXT_hash_none 0 -# define TLSEXT_hash_md5 1 -# define TLSEXT_hash_sha1 2 -# define TLSEXT_hash_sha224 3 -# define TLSEXT_hash_sha256 4 -# define TLSEXT_hash_sha384 5 -# define TLSEXT_hash_sha512 6 - -/* Total number of different digest algorithms */ - -# define TLSEXT_hash_num 7 - -/* Flag set for unrecognised algorithms */ -# define TLSEXT_nid_unknown 0x1000000 - -/* ECC curves */ - -# define TLSEXT_curve_P_256 23 -# define TLSEXT_curve_P_384 24 - -# ifndef OPENSSL_NO_TLSEXT - -# define TLSEXT_MAXLEN_host_name 255 - -const char *SSL_get_servername(const SSL *s, const int type); -int SSL_get_servername_type(const SSL *s); -/* - * SSL_export_keying_material exports a value derived from the master secret, - * as specified in RFC 5705. It writes |olen| bytes to |out| given a label and - * optional context. (Since a zero length context is allowed, the |use_context| - * flag controls whether a context is included.) It returns 1 on success and - * zero otherwise. - */ -int SSL_export_keying_material(SSL *s, unsigned char *out, size_t olen, - const char *label, size_t llen, - const unsigned char *p, size_t plen, - int use_context); - -int SSL_get_sigalgs(SSL *s, int idx, - int *psign, int *phash, int *psignandhash, - unsigned char *rsig, unsigned char *rhash); - -int SSL_get_shared_sigalgs(SSL *s, int idx, - int *psign, int *phash, int *psignandhash, - unsigned char *rsig, unsigned char *rhash); - -int SSL_check_chain(SSL *s, X509 *x, EVP_PKEY *pk, STACK_OF(X509) *chain); - -# define SSL_set_tlsext_host_name(s,name) \ -SSL_ctrl(s,SSL_CTRL_SET_TLSEXT_HOSTNAME,TLSEXT_NAMETYPE_host_name,(char *)name) - -# define SSL_set_tlsext_debug_callback(ssl, cb) \ -SSL_callback_ctrl(ssl,SSL_CTRL_SET_TLSEXT_DEBUG_CB,(void (*)(void))cb) - -# define SSL_set_tlsext_debug_arg(ssl, arg) \ -SSL_ctrl(ssl,SSL_CTRL_SET_TLSEXT_DEBUG_ARG,0, (void *)arg) - -# define SSL_set_tlsext_status_type(ssl, type) \ -SSL_ctrl(ssl,SSL_CTRL_SET_TLSEXT_STATUS_REQ_TYPE,type, NULL) - -# define SSL_get_tlsext_status_exts(ssl, arg) \ -SSL_ctrl(ssl,SSL_CTRL_GET_TLSEXT_STATUS_REQ_EXTS,0, (void *)arg) - -# define SSL_set_tlsext_status_exts(ssl, arg) \ -SSL_ctrl(ssl,SSL_CTRL_SET_TLSEXT_STATUS_REQ_EXTS,0, (void *)arg) - -# define SSL_get_tlsext_status_ids(ssl, arg) \ -SSL_ctrl(ssl,SSL_CTRL_GET_TLSEXT_STATUS_REQ_IDS,0, (void *)arg) - -# define SSL_set_tlsext_status_ids(ssl, arg) \ -SSL_ctrl(ssl,SSL_CTRL_SET_TLSEXT_STATUS_REQ_IDS,0, (void *)arg) - -# define SSL_get_tlsext_status_ocsp_resp(ssl, arg) \ -SSL_ctrl(ssl,SSL_CTRL_GET_TLSEXT_STATUS_REQ_OCSP_RESP,0, (void *)arg) - -# define SSL_set_tlsext_status_ocsp_resp(ssl, arg, arglen) \ -SSL_ctrl(ssl,SSL_CTRL_SET_TLSEXT_STATUS_REQ_OCSP_RESP,arglen, (void *)arg) - -# define SSL_CTX_set_tlsext_servername_callback(ctx, cb) \ -SSL_CTX_callback_ctrl(ctx,SSL_CTRL_SET_TLSEXT_SERVERNAME_CB,(void (*)(void))cb) - -# define SSL_TLSEXT_ERR_OK 0 -# define SSL_TLSEXT_ERR_ALERT_WARNING 1 -# define SSL_TLSEXT_ERR_ALERT_FATAL 2 -# define SSL_TLSEXT_ERR_NOACK 3 - -# define SSL_CTX_set_tlsext_servername_arg(ctx, arg) \ -SSL_CTX_ctrl(ctx,SSL_CTRL_SET_TLSEXT_SERVERNAME_ARG,0, (void *)arg) - -# define SSL_CTX_get_tlsext_ticket_keys(ctx, keys, keylen) \ - SSL_CTX_ctrl((ctx),SSL_CTRL_GET_TLSEXT_TICKET_KEYS,(keylen),(keys)) -# define SSL_CTX_set_tlsext_ticket_keys(ctx, keys, keylen) \ - SSL_CTX_ctrl((ctx),SSL_CTRL_SET_TLSEXT_TICKET_KEYS,(keylen),(keys)) - -# define SSL_CTX_set_tlsext_status_cb(ssl, cb) \ -SSL_CTX_callback_ctrl(ssl,SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB,(void (*)(void))cb) - -# define SSL_CTX_set_tlsext_status_arg(ssl, arg) \ -SSL_CTX_ctrl(ssl,SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB_ARG,0, (void *)arg) - -# define SSL_set_tlsext_opaque_prf_input(s, src, len) \ -SSL_ctrl(s,SSL_CTRL_SET_TLSEXT_OPAQUE_PRF_INPUT, len, src) -# define SSL_CTX_set_tlsext_opaque_prf_input_callback(ctx, cb) \ -SSL_CTX_callback_ctrl(ctx,SSL_CTRL_SET_TLSEXT_OPAQUE_PRF_INPUT_CB, (void (*)(void))cb) -# define SSL_CTX_set_tlsext_opaque_prf_input_callback_arg(ctx, arg) \ -SSL_CTX_ctrl(ctx,SSL_CTRL_SET_TLSEXT_OPAQUE_PRF_INPUT_CB_ARG, 0, arg) - -# define SSL_CTX_set_tlsext_ticket_key_cb(ssl, cb) \ -SSL_CTX_callback_ctrl(ssl,SSL_CTRL_SET_TLSEXT_TICKET_KEY_CB,(void (*)(void))cb) - -# ifndef OPENSSL_NO_HEARTBEATS -# define SSL_TLSEXT_HB_ENABLED 0x01 -# define SSL_TLSEXT_HB_DONT_SEND_REQUESTS 0x02 -# define SSL_TLSEXT_HB_DONT_RECV_REQUESTS 0x04 - -# define SSL_get_tlsext_heartbeat_pending(ssl) \ - SSL_ctrl((ssl),SSL_CTRL_GET_TLS_EXT_HEARTBEAT_PENDING,0,NULL) -# define SSL_set_tlsext_heartbeat_no_requests(ssl, arg) \ - SSL_ctrl((ssl),SSL_CTRL_SET_TLS_EXT_HEARTBEAT_NO_REQUESTS,arg,NULL) -# endif -# endif - -/* PSK ciphersuites from 4279 */ -# define TLS1_CK_PSK_WITH_RC4_128_SHA 0x0300008A -# define TLS1_CK_PSK_WITH_3DES_EDE_CBC_SHA 0x0300008B -# define TLS1_CK_PSK_WITH_AES_128_CBC_SHA 0x0300008C -# define TLS1_CK_PSK_WITH_AES_256_CBC_SHA 0x0300008D - -/* - * Additional TLS ciphersuites from expired Internet Draft - * draft-ietf-tls-56-bit-ciphersuites-01.txt (available if - * TLS1_ALLOW_EXPERIMENTAL_CIPHERSUITES is defined, see s3_lib.c). We - * actually treat them like SSL 3.0 ciphers, which we probably shouldn't. - * Note that the first two are actually not in the IDs. - */ -# define TLS1_CK_RSA_EXPORT1024_WITH_RC4_56_MD5 0x03000060/* not in - * ID */ -# define TLS1_CK_RSA_EXPORT1024_WITH_RC2_CBC_56_MD5 0x03000061/* not in - * ID */ -# define TLS1_CK_RSA_EXPORT1024_WITH_DES_CBC_SHA 0x03000062 -# define TLS1_CK_DHE_DSS_EXPORT1024_WITH_DES_CBC_SHA 0x03000063 -# define TLS1_CK_RSA_EXPORT1024_WITH_RC4_56_SHA 0x03000064 -# define TLS1_CK_DHE_DSS_EXPORT1024_WITH_RC4_56_SHA 0x03000065 -# define TLS1_CK_DHE_DSS_WITH_RC4_128_SHA 0x03000066 - -/* AES ciphersuites from RFC3268 */ - -# define TLS1_CK_RSA_WITH_AES_128_SHA 0x0300002F -# define TLS1_CK_DH_DSS_WITH_AES_128_SHA 0x03000030 -# define TLS1_CK_DH_RSA_WITH_AES_128_SHA 0x03000031 -# define TLS1_CK_DHE_DSS_WITH_AES_128_SHA 0x03000032 -# define TLS1_CK_DHE_RSA_WITH_AES_128_SHA 0x03000033 -# define TLS1_CK_ADH_WITH_AES_128_SHA 0x03000034 - -# define TLS1_CK_RSA_WITH_AES_256_SHA 0x03000035 -# define TLS1_CK_DH_DSS_WITH_AES_256_SHA 0x03000036 -# define TLS1_CK_DH_RSA_WITH_AES_256_SHA 0x03000037 -# define TLS1_CK_DHE_DSS_WITH_AES_256_SHA 0x03000038 -# define TLS1_CK_DHE_RSA_WITH_AES_256_SHA 0x03000039 -# define TLS1_CK_ADH_WITH_AES_256_SHA 0x0300003A - -/* TLS v1.2 ciphersuites */ -# define TLS1_CK_RSA_WITH_NULL_SHA256 0x0300003B -# define TLS1_CK_RSA_WITH_AES_128_SHA256 0x0300003C -# define TLS1_CK_RSA_WITH_AES_256_SHA256 0x0300003D -# define TLS1_CK_DH_DSS_WITH_AES_128_SHA256 0x0300003E -# define TLS1_CK_DH_RSA_WITH_AES_128_SHA256 0x0300003F -# define TLS1_CK_DHE_DSS_WITH_AES_128_SHA256 0x03000040 - -/* Camellia ciphersuites from RFC4132 */ -# define TLS1_CK_RSA_WITH_CAMELLIA_128_CBC_SHA 0x03000041 -# define TLS1_CK_DH_DSS_WITH_CAMELLIA_128_CBC_SHA 0x03000042 -# define TLS1_CK_DH_RSA_WITH_CAMELLIA_128_CBC_SHA 0x03000043 -# define TLS1_CK_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA 0x03000044 -# define TLS1_CK_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA 0x03000045 -# define TLS1_CK_ADH_WITH_CAMELLIA_128_CBC_SHA 0x03000046 - -/* TLS v1.2 ciphersuites */ -# define TLS1_CK_DHE_RSA_WITH_AES_128_SHA256 0x03000067 -# define TLS1_CK_DH_DSS_WITH_AES_256_SHA256 0x03000068 -# define TLS1_CK_DH_RSA_WITH_AES_256_SHA256 0x03000069 -# define TLS1_CK_DHE_DSS_WITH_AES_256_SHA256 0x0300006A -# define TLS1_CK_DHE_RSA_WITH_AES_256_SHA256 0x0300006B -# define TLS1_CK_ADH_WITH_AES_128_SHA256 0x0300006C -# define TLS1_CK_ADH_WITH_AES_256_SHA256 0x0300006D - -/* Camellia ciphersuites from RFC4132 */ -# define TLS1_CK_RSA_WITH_CAMELLIA_256_CBC_SHA 0x03000084 -# define TLS1_CK_DH_DSS_WITH_CAMELLIA_256_CBC_SHA 0x03000085 -# define TLS1_CK_DH_RSA_WITH_CAMELLIA_256_CBC_SHA 0x03000086 -# define TLS1_CK_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA 0x03000087 -# define TLS1_CK_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA 0x03000088 -# define TLS1_CK_ADH_WITH_CAMELLIA_256_CBC_SHA 0x03000089 - -/* SEED ciphersuites from RFC4162 */ -# define TLS1_CK_RSA_WITH_SEED_SHA 0x03000096 -# define TLS1_CK_DH_DSS_WITH_SEED_SHA 0x03000097 -# define TLS1_CK_DH_RSA_WITH_SEED_SHA 0x03000098 -# define TLS1_CK_DHE_DSS_WITH_SEED_SHA 0x03000099 -# define TLS1_CK_DHE_RSA_WITH_SEED_SHA 0x0300009A -# define TLS1_CK_ADH_WITH_SEED_SHA 0x0300009B - -/* TLS v1.2 GCM ciphersuites from RFC5288 */ -# define TLS1_CK_RSA_WITH_AES_128_GCM_SHA256 0x0300009C -# define TLS1_CK_RSA_WITH_AES_256_GCM_SHA384 0x0300009D -# define TLS1_CK_DHE_RSA_WITH_AES_128_GCM_SHA256 0x0300009E -# define TLS1_CK_DHE_RSA_WITH_AES_256_GCM_SHA384 0x0300009F -# define TLS1_CK_DH_RSA_WITH_AES_128_GCM_SHA256 0x030000A0 -# define TLS1_CK_DH_RSA_WITH_AES_256_GCM_SHA384 0x030000A1 -# define TLS1_CK_DHE_DSS_WITH_AES_128_GCM_SHA256 0x030000A2 -# define TLS1_CK_DHE_DSS_WITH_AES_256_GCM_SHA384 0x030000A3 -# define TLS1_CK_DH_DSS_WITH_AES_128_GCM_SHA256 0x030000A4 -# define TLS1_CK_DH_DSS_WITH_AES_256_GCM_SHA384 0x030000A5 -# define TLS1_CK_ADH_WITH_AES_128_GCM_SHA256 0x030000A6 -# define TLS1_CK_ADH_WITH_AES_256_GCM_SHA384 0x030000A7 - -/* - * ECC ciphersuites from draft-ietf-tls-ecc-12.txt with changes soon to be in - * draft 13 - */ -# define TLS1_CK_ECDH_ECDSA_WITH_NULL_SHA 0x0300C001 -# define TLS1_CK_ECDH_ECDSA_WITH_RC4_128_SHA 0x0300C002 -# define TLS1_CK_ECDH_ECDSA_WITH_DES_192_CBC3_SHA 0x0300C003 -# define TLS1_CK_ECDH_ECDSA_WITH_AES_128_CBC_SHA 0x0300C004 -# define TLS1_CK_ECDH_ECDSA_WITH_AES_256_CBC_SHA 0x0300C005 - -# define TLS1_CK_ECDHE_ECDSA_WITH_NULL_SHA 0x0300C006 -# define TLS1_CK_ECDHE_ECDSA_WITH_RC4_128_SHA 0x0300C007 -# define TLS1_CK_ECDHE_ECDSA_WITH_DES_192_CBC3_SHA 0x0300C008 -# define TLS1_CK_ECDHE_ECDSA_WITH_AES_128_CBC_SHA 0x0300C009 -# define TLS1_CK_ECDHE_ECDSA_WITH_AES_256_CBC_SHA 0x0300C00A - -# define TLS1_CK_ECDH_RSA_WITH_NULL_SHA 0x0300C00B -# define TLS1_CK_ECDH_RSA_WITH_RC4_128_SHA 0x0300C00C -# define TLS1_CK_ECDH_RSA_WITH_DES_192_CBC3_SHA 0x0300C00D -# define TLS1_CK_ECDH_RSA_WITH_AES_128_CBC_SHA 0x0300C00E -# define TLS1_CK_ECDH_RSA_WITH_AES_256_CBC_SHA 0x0300C00F - -# define TLS1_CK_ECDHE_RSA_WITH_NULL_SHA 0x0300C010 -# define TLS1_CK_ECDHE_RSA_WITH_RC4_128_SHA 0x0300C011 -# define TLS1_CK_ECDHE_RSA_WITH_DES_192_CBC3_SHA 0x0300C012 -# define TLS1_CK_ECDHE_RSA_WITH_AES_128_CBC_SHA 0x0300C013 -# define TLS1_CK_ECDHE_RSA_WITH_AES_256_CBC_SHA 0x0300C014 - -# define TLS1_CK_ECDH_anon_WITH_NULL_SHA 0x0300C015 -# define TLS1_CK_ECDH_anon_WITH_RC4_128_SHA 0x0300C016 -# define TLS1_CK_ECDH_anon_WITH_DES_192_CBC3_SHA 0x0300C017 -# define TLS1_CK_ECDH_anon_WITH_AES_128_CBC_SHA 0x0300C018 -# define TLS1_CK_ECDH_anon_WITH_AES_256_CBC_SHA 0x0300C019 - -/* SRP ciphersuites from RFC 5054 */ -# define TLS1_CK_SRP_SHA_WITH_3DES_EDE_CBC_SHA 0x0300C01A -# define TLS1_CK_SRP_SHA_RSA_WITH_3DES_EDE_CBC_SHA 0x0300C01B -# define TLS1_CK_SRP_SHA_DSS_WITH_3DES_EDE_CBC_SHA 0x0300C01C -# define TLS1_CK_SRP_SHA_WITH_AES_128_CBC_SHA 0x0300C01D -# define TLS1_CK_SRP_SHA_RSA_WITH_AES_128_CBC_SHA 0x0300C01E -# define TLS1_CK_SRP_SHA_DSS_WITH_AES_128_CBC_SHA 0x0300C01F -# define TLS1_CK_SRP_SHA_WITH_AES_256_CBC_SHA 0x0300C020 -# define TLS1_CK_SRP_SHA_RSA_WITH_AES_256_CBC_SHA 0x0300C021 -# define TLS1_CK_SRP_SHA_DSS_WITH_AES_256_CBC_SHA 0x0300C022 - -/* ECDH HMAC based ciphersuites from RFC5289 */ - -# define TLS1_CK_ECDHE_ECDSA_WITH_AES_128_SHA256 0x0300C023 -# define TLS1_CK_ECDHE_ECDSA_WITH_AES_256_SHA384 0x0300C024 -# define TLS1_CK_ECDH_ECDSA_WITH_AES_128_SHA256 0x0300C025 -# define TLS1_CK_ECDH_ECDSA_WITH_AES_256_SHA384 0x0300C026 -# define TLS1_CK_ECDHE_RSA_WITH_AES_128_SHA256 0x0300C027 -# define TLS1_CK_ECDHE_RSA_WITH_AES_256_SHA384 0x0300C028 -# define TLS1_CK_ECDH_RSA_WITH_AES_128_SHA256 0x0300C029 -# define TLS1_CK_ECDH_RSA_WITH_AES_256_SHA384 0x0300C02A - -/* ECDH GCM based ciphersuites from RFC5289 */ -# define TLS1_CK_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 0x0300C02B -# define TLS1_CK_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 0x0300C02C -# define TLS1_CK_ECDH_ECDSA_WITH_AES_128_GCM_SHA256 0x0300C02D -# define TLS1_CK_ECDH_ECDSA_WITH_AES_256_GCM_SHA384 0x0300C02E -# define TLS1_CK_ECDHE_RSA_WITH_AES_128_GCM_SHA256 0x0300C02F -# define TLS1_CK_ECDHE_RSA_WITH_AES_256_GCM_SHA384 0x0300C030 -# define TLS1_CK_ECDH_RSA_WITH_AES_128_GCM_SHA256 0x0300C031 -# define TLS1_CK_ECDH_RSA_WITH_AES_256_GCM_SHA384 0x0300C032 - -/* - * XXX * Backward compatibility alert: + * Older versions of OpenSSL gave - * some DHE ciphers names with "EDH" + * instead of "DHE". Going forward, we - * should be using DHE + * everywhere, though we may indefinitely maintain - * aliases for users + * or configurations that used "EDH" + - */ -# define TLS1_TXT_RSA_EXPORT1024_WITH_RC4_56_MD5 "EXP1024-RC4-MD5" -# define TLS1_TXT_RSA_EXPORT1024_WITH_RC2_CBC_56_MD5 "EXP1024-RC2-CBC-MD5" -# define TLS1_TXT_RSA_EXPORT1024_WITH_DES_CBC_SHA "EXP1024-DES-CBC-SHA" -# define TLS1_TXT_DHE_DSS_EXPORT1024_WITH_DES_CBC_SHA "EXP1024-DHE-DSS-DES-CBC-SHA" -# define TLS1_TXT_RSA_EXPORT1024_WITH_RC4_56_SHA "EXP1024-RC4-SHA" -# define TLS1_TXT_DHE_DSS_EXPORT1024_WITH_RC4_56_SHA "EXP1024-DHE-DSS-RC4-SHA" -# define TLS1_TXT_DHE_DSS_WITH_RC4_128_SHA "DHE-DSS-RC4-SHA" - -/* AES ciphersuites from RFC3268 */ -# define TLS1_TXT_RSA_WITH_AES_128_SHA "AES128-SHA" -# define TLS1_TXT_DH_DSS_WITH_AES_128_SHA "DH-DSS-AES128-SHA" -# define TLS1_TXT_DH_RSA_WITH_AES_128_SHA "DH-RSA-AES128-SHA" -# define TLS1_TXT_DHE_DSS_WITH_AES_128_SHA "DHE-DSS-AES128-SHA" -# define TLS1_TXT_DHE_RSA_WITH_AES_128_SHA "DHE-RSA-AES128-SHA" -# define TLS1_TXT_ADH_WITH_AES_128_SHA "ADH-AES128-SHA" - -# define TLS1_TXT_RSA_WITH_AES_256_SHA "AES256-SHA" -# define TLS1_TXT_DH_DSS_WITH_AES_256_SHA "DH-DSS-AES256-SHA" -# define TLS1_TXT_DH_RSA_WITH_AES_256_SHA "DH-RSA-AES256-SHA" -# define TLS1_TXT_DHE_DSS_WITH_AES_256_SHA "DHE-DSS-AES256-SHA" -# define TLS1_TXT_DHE_RSA_WITH_AES_256_SHA "DHE-RSA-AES256-SHA" -# define TLS1_TXT_ADH_WITH_AES_256_SHA "ADH-AES256-SHA" - -/* ECC ciphersuites from draft-ietf-tls-ecc-01.txt (Mar 15, 2001) */ -# define TLS1_TXT_ECDH_ECDSA_WITH_NULL_SHA "ECDH-ECDSA-NULL-SHA" -# define TLS1_TXT_ECDH_ECDSA_WITH_RC4_128_SHA "ECDH-ECDSA-RC4-SHA" -# define TLS1_TXT_ECDH_ECDSA_WITH_DES_192_CBC3_SHA "ECDH-ECDSA-DES-CBC3-SHA" -# define TLS1_TXT_ECDH_ECDSA_WITH_AES_128_CBC_SHA "ECDH-ECDSA-AES128-SHA" -# define TLS1_TXT_ECDH_ECDSA_WITH_AES_256_CBC_SHA "ECDH-ECDSA-AES256-SHA" - -# define TLS1_TXT_ECDHE_ECDSA_WITH_NULL_SHA "ECDHE-ECDSA-NULL-SHA" -# define TLS1_TXT_ECDHE_ECDSA_WITH_RC4_128_SHA "ECDHE-ECDSA-RC4-SHA" -# define TLS1_TXT_ECDHE_ECDSA_WITH_DES_192_CBC3_SHA "ECDHE-ECDSA-DES-CBC3-SHA" -# define TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_CBC_SHA "ECDHE-ECDSA-AES128-SHA" -# define TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_CBC_SHA "ECDHE-ECDSA-AES256-SHA" - -# define TLS1_TXT_ECDH_RSA_WITH_NULL_SHA "ECDH-RSA-NULL-SHA" -# define TLS1_TXT_ECDH_RSA_WITH_RC4_128_SHA "ECDH-RSA-RC4-SHA" -# define TLS1_TXT_ECDH_RSA_WITH_DES_192_CBC3_SHA "ECDH-RSA-DES-CBC3-SHA" -# define TLS1_TXT_ECDH_RSA_WITH_AES_128_CBC_SHA "ECDH-RSA-AES128-SHA" -# define TLS1_TXT_ECDH_RSA_WITH_AES_256_CBC_SHA "ECDH-RSA-AES256-SHA" - -# define TLS1_TXT_ECDHE_RSA_WITH_NULL_SHA "ECDHE-RSA-NULL-SHA" -# define TLS1_TXT_ECDHE_RSA_WITH_RC4_128_SHA "ECDHE-RSA-RC4-SHA" -# define TLS1_TXT_ECDHE_RSA_WITH_DES_192_CBC3_SHA "ECDHE-RSA-DES-CBC3-SHA" -# define TLS1_TXT_ECDHE_RSA_WITH_AES_128_CBC_SHA "ECDHE-RSA-AES128-SHA" -# define TLS1_TXT_ECDHE_RSA_WITH_AES_256_CBC_SHA "ECDHE-RSA-AES256-SHA" - -# define TLS1_TXT_ECDH_anon_WITH_NULL_SHA "AECDH-NULL-SHA" -# define TLS1_TXT_ECDH_anon_WITH_RC4_128_SHA "AECDH-RC4-SHA" -# define TLS1_TXT_ECDH_anon_WITH_DES_192_CBC3_SHA "AECDH-DES-CBC3-SHA" -# define TLS1_TXT_ECDH_anon_WITH_AES_128_CBC_SHA "AECDH-AES128-SHA" -# define TLS1_TXT_ECDH_anon_WITH_AES_256_CBC_SHA "AECDH-AES256-SHA" - -/* PSK ciphersuites from RFC 4279 */ -# define TLS1_TXT_PSK_WITH_RC4_128_SHA "PSK-RC4-SHA" -# define TLS1_TXT_PSK_WITH_3DES_EDE_CBC_SHA "PSK-3DES-EDE-CBC-SHA" -# define TLS1_TXT_PSK_WITH_AES_128_CBC_SHA "PSK-AES128-CBC-SHA" -# define TLS1_TXT_PSK_WITH_AES_256_CBC_SHA "PSK-AES256-CBC-SHA" - -/* SRP ciphersuite from RFC 5054 */ -# define TLS1_TXT_SRP_SHA_WITH_3DES_EDE_CBC_SHA "SRP-3DES-EDE-CBC-SHA" -# define TLS1_TXT_SRP_SHA_RSA_WITH_3DES_EDE_CBC_SHA "SRP-RSA-3DES-EDE-CBC-SHA" -# define TLS1_TXT_SRP_SHA_DSS_WITH_3DES_EDE_CBC_SHA "SRP-DSS-3DES-EDE-CBC-SHA" -# define TLS1_TXT_SRP_SHA_WITH_AES_128_CBC_SHA "SRP-AES-128-CBC-SHA" -# define TLS1_TXT_SRP_SHA_RSA_WITH_AES_128_CBC_SHA "SRP-RSA-AES-128-CBC-SHA" -# define TLS1_TXT_SRP_SHA_DSS_WITH_AES_128_CBC_SHA "SRP-DSS-AES-128-CBC-SHA" -# define TLS1_TXT_SRP_SHA_WITH_AES_256_CBC_SHA "SRP-AES-256-CBC-SHA" -# define TLS1_TXT_SRP_SHA_RSA_WITH_AES_256_CBC_SHA "SRP-RSA-AES-256-CBC-SHA" -# define TLS1_TXT_SRP_SHA_DSS_WITH_AES_256_CBC_SHA "SRP-DSS-AES-256-CBC-SHA" - -/* Camellia ciphersuites from RFC4132 */ -# define TLS1_TXT_RSA_WITH_CAMELLIA_128_CBC_SHA "CAMELLIA128-SHA" -# define TLS1_TXT_DH_DSS_WITH_CAMELLIA_128_CBC_SHA "DH-DSS-CAMELLIA128-SHA" -# define TLS1_TXT_DH_RSA_WITH_CAMELLIA_128_CBC_SHA "DH-RSA-CAMELLIA128-SHA" -# define TLS1_TXT_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA "DHE-DSS-CAMELLIA128-SHA" -# define TLS1_TXT_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA "DHE-RSA-CAMELLIA128-SHA" -# define TLS1_TXT_ADH_WITH_CAMELLIA_128_CBC_SHA "ADH-CAMELLIA128-SHA" - -# define TLS1_TXT_RSA_WITH_CAMELLIA_256_CBC_SHA "CAMELLIA256-SHA" -# define TLS1_TXT_DH_DSS_WITH_CAMELLIA_256_CBC_SHA "DH-DSS-CAMELLIA256-SHA" -# define TLS1_TXT_DH_RSA_WITH_CAMELLIA_256_CBC_SHA "DH-RSA-CAMELLIA256-SHA" -# define TLS1_TXT_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA "DHE-DSS-CAMELLIA256-SHA" -# define TLS1_TXT_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA "DHE-RSA-CAMELLIA256-SHA" -# define TLS1_TXT_ADH_WITH_CAMELLIA_256_CBC_SHA "ADH-CAMELLIA256-SHA" - -/* SEED ciphersuites from RFC4162 */ -# define TLS1_TXT_RSA_WITH_SEED_SHA "SEED-SHA" -# define TLS1_TXT_DH_DSS_WITH_SEED_SHA "DH-DSS-SEED-SHA" -# define TLS1_TXT_DH_RSA_WITH_SEED_SHA "DH-RSA-SEED-SHA" -# define TLS1_TXT_DHE_DSS_WITH_SEED_SHA "DHE-DSS-SEED-SHA" -# define TLS1_TXT_DHE_RSA_WITH_SEED_SHA "DHE-RSA-SEED-SHA" -# define TLS1_TXT_ADH_WITH_SEED_SHA "ADH-SEED-SHA" - -/* TLS v1.2 ciphersuites */ -# define TLS1_TXT_RSA_WITH_NULL_SHA256 "NULL-SHA256" -# define TLS1_TXT_RSA_WITH_AES_128_SHA256 "AES128-SHA256" -# define TLS1_TXT_RSA_WITH_AES_256_SHA256 "AES256-SHA256" -# define TLS1_TXT_DH_DSS_WITH_AES_128_SHA256 "DH-DSS-AES128-SHA256" -# define TLS1_TXT_DH_RSA_WITH_AES_128_SHA256 "DH-RSA-AES128-SHA256" -# define TLS1_TXT_DHE_DSS_WITH_AES_128_SHA256 "DHE-DSS-AES128-SHA256" -# define TLS1_TXT_DHE_RSA_WITH_AES_128_SHA256 "DHE-RSA-AES128-SHA256" -# define TLS1_TXT_DH_DSS_WITH_AES_256_SHA256 "DH-DSS-AES256-SHA256" -# define TLS1_TXT_DH_RSA_WITH_AES_256_SHA256 "DH-RSA-AES256-SHA256" -# define TLS1_TXT_DHE_DSS_WITH_AES_256_SHA256 "DHE-DSS-AES256-SHA256" -# define TLS1_TXT_DHE_RSA_WITH_AES_256_SHA256 "DHE-RSA-AES256-SHA256" -# define TLS1_TXT_ADH_WITH_AES_128_SHA256 "ADH-AES128-SHA256" -# define TLS1_TXT_ADH_WITH_AES_256_SHA256 "ADH-AES256-SHA256" - -/* TLS v1.2 GCM ciphersuites from RFC5288 */ -# define TLS1_TXT_RSA_WITH_AES_128_GCM_SHA256 "AES128-GCM-SHA256" -# define TLS1_TXT_RSA_WITH_AES_256_GCM_SHA384 "AES256-GCM-SHA384" -# define TLS1_TXT_DHE_RSA_WITH_AES_128_GCM_SHA256 "DHE-RSA-AES128-GCM-SHA256" -# define TLS1_TXT_DHE_RSA_WITH_AES_256_GCM_SHA384 "DHE-RSA-AES256-GCM-SHA384" -# define TLS1_TXT_DH_RSA_WITH_AES_128_GCM_SHA256 "DH-RSA-AES128-GCM-SHA256" -# define TLS1_TXT_DH_RSA_WITH_AES_256_GCM_SHA384 "DH-RSA-AES256-GCM-SHA384" -# define TLS1_TXT_DHE_DSS_WITH_AES_128_GCM_SHA256 "DHE-DSS-AES128-GCM-SHA256" -# define TLS1_TXT_DHE_DSS_WITH_AES_256_GCM_SHA384 "DHE-DSS-AES256-GCM-SHA384" -# define TLS1_TXT_DH_DSS_WITH_AES_128_GCM_SHA256 "DH-DSS-AES128-GCM-SHA256" -# define TLS1_TXT_DH_DSS_WITH_AES_256_GCM_SHA384 "DH-DSS-AES256-GCM-SHA384" -# define TLS1_TXT_ADH_WITH_AES_128_GCM_SHA256 "ADH-AES128-GCM-SHA256" -# define TLS1_TXT_ADH_WITH_AES_256_GCM_SHA384 "ADH-AES256-GCM-SHA384" - -/* ECDH HMAC based ciphersuites from RFC5289 */ - -# define TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_SHA256 "ECDHE-ECDSA-AES128-SHA256" -# define TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_SHA384 "ECDHE-ECDSA-AES256-SHA384" -# define TLS1_TXT_ECDH_ECDSA_WITH_AES_128_SHA256 "ECDH-ECDSA-AES128-SHA256" -# define TLS1_TXT_ECDH_ECDSA_WITH_AES_256_SHA384 "ECDH-ECDSA-AES256-SHA384" -# define TLS1_TXT_ECDHE_RSA_WITH_AES_128_SHA256 "ECDHE-RSA-AES128-SHA256" -# define TLS1_TXT_ECDHE_RSA_WITH_AES_256_SHA384 "ECDHE-RSA-AES256-SHA384" -# define TLS1_TXT_ECDH_RSA_WITH_AES_128_SHA256 "ECDH-RSA-AES128-SHA256" -# define TLS1_TXT_ECDH_RSA_WITH_AES_256_SHA384 "ECDH-RSA-AES256-SHA384" - -/* ECDH GCM based ciphersuites from RFC5289 */ -# define TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 "ECDHE-ECDSA-AES128-GCM-SHA256" -# define TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 "ECDHE-ECDSA-AES256-GCM-SHA384" -# define TLS1_TXT_ECDH_ECDSA_WITH_AES_128_GCM_SHA256 "ECDH-ECDSA-AES128-GCM-SHA256" -# define TLS1_TXT_ECDH_ECDSA_WITH_AES_256_GCM_SHA384 "ECDH-ECDSA-AES256-GCM-SHA384" -# define TLS1_TXT_ECDHE_RSA_WITH_AES_128_GCM_SHA256 "ECDHE-RSA-AES128-GCM-SHA256" -# define TLS1_TXT_ECDHE_RSA_WITH_AES_256_GCM_SHA384 "ECDHE-RSA-AES256-GCM-SHA384" -# define TLS1_TXT_ECDH_RSA_WITH_AES_128_GCM_SHA256 "ECDH-RSA-AES128-GCM-SHA256" -# define TLS1_TXT_ECDH_RSA_WITH_AES_256_GCM_SHA384 "ECDH-RSA-AES256-GCM-SHA384" - -# define TLS_CT_RSA_SIGN 1 -# define TLS_CT_DSS_SIGN 2 -# define TLS_CT_RSA_FIXED_DH 3 -# define TLS_CT_DSS_FIXED_DH 4 -# define TLS_CT_ECDSA_SIGN 64 -# define TLS_CT_RSA_FIXED_ECDH 65 -# define TLS_CT_ECDSA_FIXED_ECDH 66 -# define TLS_CT_GOST94_SIGN 21 -# define TLS_CT_GOST01_SIGN 22 -/* - * when correcting this number, correct also SSL3_CT_NUMBER in ssl3.h (see - * comment there) - */ -# define TLS_CT_NUMBER 9 - -# define TLS1_FINISH_MAC_LENGTH 12 - -# define TLS_MD_MAX_CONST_SIZE 20 -# define TLS_MD_CLIENT_FINISH_CONST "client finished" -# define TLS_MD_CLIENT_FINISH_CONST_SIZE 15 -# define TLS_MD_SERVER_FINISH_CONST "server finished" -# define TLS_MD_SERVER_FINISH_CONST_SIZE 15 -# define TLS_MD_SERVER_WRITE_KEY_CONST "server write key" -# define TLS_MD_SERVER_WRITE_KEY_CONST_SIZE 16 -# define TLS_MD_KEY_EXPANSION_CONST "key expansion" -# define TLS_MD_KEY_EXPANSION_CONST_SIZE 13 -# define TLS_MD_CLIENT_WRITE_KEY_CONST "client write key" -# define TLS_MD_CLIENT_WRITE_KEY_CONST_SIZE 16 -# define TLS_MD_SERVER_WRITE_KEY_CONST "server write key" -# define TLS_MD_SERVER_WRITE_KEY_CONST_SIZE 16 -# define TLS_MD_IV_BLOCK_CONST "IV block" -# define TLS_MD_IV_BLOCK_CONST_SIZE 8 -# define TLS_MD_MASTER_SECRET_CONST "master secret" -# define TLS_MD_MASTER_SECRET_CONST_SIZE 13 - -# ifdef CHARSET_EBCDIC -# undef TLS_MD_CLIENT_FINISH_CONST -/* - * client finished - */ -# define TLS_MD_CLIENT_FINISH_CONST "\x63\x6c\x69\x65\x6e\x74\x20\x66\x69\x6e\x69\x73\x68\x65\x64" - -# undef TLS_MD_SERVER_FINISH_CONST -/* - * server finished - */ -# define TLS_MD_SERVER_FINISH_CONST "\x73\x65\x72\x76\x65\x72\x20\x66\x69\x6e\x69\x73\x68\x65\x64" - -# undef TLS_MD_SERVER_WRITE_KEY_CONST -/* - * server write key - */ -# define TLS_MD_SERVER_WRITE_KEY_CONST "\x73\x65\x72\x76\x65\x72\x20\x77\x72\x69\x74\x65\x20\x6b\x65\x79" - -# undef TLS_MD_KEY_EXPANSION_CONST -/* - * key expansion - */ -# define TLS_MD_KEY_EXPANSION_CONST "\x6b\x65\x79\x20\x65\x78\x70\x61\x6e\x73\x69\x6f\x6e" - -# undef TLS_MD_CLIENT_WRITE_KEY_CONST -/* - * client write key - */ -# define TLS_MD_CLIENT_WRITE_KEY_CONST "\x63\x6c\x69\x65\x6e\x74\x20\x77\x72\x69\x74\x65\x20\x6b\x65\x79" - -# undef TLS_MD_SERVER_WRITE_KEY_CONST -/* - * server write key - */ -# define TLS_MD_SERVER_WRITE_KEY_CONST "\x73\x65\x72\x76\x65\x72\x20\x77\x72\x69\x74\x65\x20\x6b\x65\x79" - -# undef TLS_MD_IV_BLOCK_CONST -/* - * IV block - */ -# define TLS_MD_IV_BLOCK_CONST "\x49\x56\x20\x62\x6c\x6f\x63\x6b" - -# undef TLS_MD_MASTER_SECRET_CONST -/* - * master secret - */ -# define TLS_MD_MASTER_SECRET_CONST "\x6d\x61\x73\x74\x65\x72\x20\x73\x65\x63\x72\x65\x74" -# endif - -/* TLS Session Ticket extension struct */ -struct tls_session_ticket_ext_st { - unsigned short length; - void *data; -}; - -#ifdef __cplusplus -} -#endif -#endif diff --git a/ext/openssl-win32/inc32/openssl/x509.h b/ext/openssl-win32/inc32/openssl/x509.h deleted file mode 100644 index 99337b84..00000000 --- a/ext/openssl-win32/inc32/openssl/x509.h +++ /dev/null @@ -1,1327 +0,0 @@ -/* crypto/x509/x509.h */ -/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) - * All rights reserved. - * - * This package is an SSL implementation written - * by Eric Young (eay@cryptsoft.com). - * The implementation was written so as to conform with Netscapes SSL. - * - * This library is free for commercial and non-commercial use as long as - * the following conditions are aheared to. The following conditions - * apply to all code found in this distribution, be it the RC4, RSA, - * lhash, DES, etc., code; not just the SSL code. The SSL documentation - * included with this distribution is covered by the same copyright terms - * except that the holder is Tim Hudson (tjh@cryptsoft.com). - * - * Copyright remains Eric Young's, and as such any Copyright notices in - * the code are not to be removed. - * If this package is used in a product, Eric Young should be given attribution - * as the author of the parts of the library used. - * This can be in the form of a textual message at program startup or - * in documentation (online or textual) provided with the package. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * "This product includes cryptographic software written by - * Eric Young (eay@cryptsoft.com)" - * The word 'cryptographic' can be left out if the rouines from the library - * being used are not cryptographic related :-). - * 4. If you include any Windows specific code (or a derivative thereof) from - * the apps directory (application code) you must include an acknowledgement: - * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" - * - * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * The licence and distribution terms for any publically available version or - * derivative of this code cannot be changed. i.e. this code cannot simply be - * copied and put under another distribution licence - * [including the GNU Public Licence.] - */ -/* ==================================================================== - * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED. - * ECDH support in OpenSSL originally developed by - * SUN MICROSYSTEMS, INC., and contributed to the OpenSSL project. - */ - -#ifndef HEADER_X509_H -# define HEADER_X509_H - -# include -# include -# ifndef OPENSSL_NO_BUFFER -# include -# endif -# ifndef OPENSSL_NO_EVP -# include -# endif -# ifndef OPENSSL_NO_BIO -# include -# endif -# include -# include -# include - -# ifndef OPENSSL_NO_EC -# include -# endif - -# ifndef OPENSSL_NO_ECDSA -# include -# endif - -# ifndef OPENSSL_NO_ECDH -# include -# endif - -# ifndef OPENSSL_NO_DEPRECATED -# ifndef OPENSSL_NO_RSA -# include -# endif -# ifndef OPENSSL_NO_DSA -# include -# endif -# ifndef OPENSSL_NO_DH -# include -# endif -# endif - -# ifndef OPENSSL_NO_SHA -# include -# endif -# include - -#ifdef __cplusplus -extern "C" { -#endif - -# ifdef OPENSSL_SYS_WIN32 -/* Under Win32 these are defined in wincrypt.h */ -# undef X509_NAME -# undef X509_CERT_PAIR -# undef X509_EXTENSIONS -# endif - -# define X509_FILETYPE_PEM 1 -# define X509_FILETYPE_ASN1 2 -# define X509_FILETYPE_DEFAULT 3 - -# define X509v3_KU_DIGITAL_SIGNATURE 0x0080 -# define X509v3_KU_NON_REPUDIATION 0x0040 -# define X509v3_KU_KEY_ENCIPHERMENT 0x0020 -# define X509v3_KU_DATA_ENCIPHERMENT 0x0010 -# define X509v3_KU_KEY_AGREEMENT 0x0008 -# define X509v3_KU_KEY_CERT_SIGN 0x0004 -# define X509v3_KU_CRL_SIGN 0x0002 -# define X509v3_KU_ENCIPHER_ONLY 0x0001 -# define X509v3_KU_DECIPHER_ONLY 0x8000 -# define X509v3_KU_UNDEF 0xffff - -typedef struct X509_objects_st { - int nid; - int (*a2i) (void); - int (*i2a) (void); -} X509_OBJECTS; - -struct X509_algor_st { - ASN1_OBJECT *algorithm; - ASN1_TYPE *parameter; -} /* X509_ALGOR */ ; - -DECLARE_ASN1_SET_OF(X509_ALGOR) - -typedef STACK_OF(X509_ALGOR) X509_ALGORS; - -typedef struct X509_val_st { - ASN1_TIME *notBefore; - ASN1_TIME *notAfter; -} X509_VAL; - -struct X509_pubkey_st { - X509_ALGOR *algor; - ASN1_BIT_STRING *public_key; - EVP_PKEY *pkey; -}; - -typedef struct X509_sig_st { - X509_ALGOR *algor; - ASN1_OCTET_STRING *digest; -} X509_SIG; - -typedef struct X509_name_entry_st { - ASN1_OBJECT *object; - ASN1_STRING *value; - int set; - int size; /* temp variable */ -} X509_NAME_ENTRY; - -DECLARE_STACK_OF(X509_NAME_ENTRY) -DECLARE_ASN1_SET_OF(X509_NAME_ENTRY) - -/* we always keep X509_NAMEs in 2 forms. */ -struct X509_name_st { - STACK_OF(X509_NAME_ENTRY) *entries; - int modified; /* true if 'bytes' needs to be built */ -# ifndef OPENSSL_NO_BUFFER - BUF_MEM *bytes; -# else - char *bytes; -# endif -/* unsigned long hash; Keep the hash around for lookups */ - unsigned char *canon_enc; - int canon_enclen; -} /* X509_NAME */ ; - -DECLARE_STACK_OF(X509_NAME) - -# define X509_EX_V_NETSCAPE_HACK 0x8000 -# define X509_EX_V_INIT 0x0001 -typedef struct X509_extension_st { - ASN1_OBJECT *object; - ASN1_BOOLEAN critical; - ASN1_OCTET_STRING *value; -} X509_EXTENSION; - -typedef STACK_OF(X509_EXTENSION) X509_EXTENSIONS; - -DECLARE_STACK_OF(X509_EXTENSION) -DECLARE_ASN1_SET_OF(X509_EXTENSION) - -/* a sequence of these are used */ -typedef struct x509_attributes_st { - ASN1_OBJECT *object; - int single; /* 0 for a set, 1 for a single item (which is - * wrong) */ - union { - char *ptr; - /* - * 0 - */ STACK_OF(ASN1_TYPE) *set; - /* - * 1 - */ ASN1_TYPE *single; - } value; -} X509_ATTRIBUTE; - -DECLARE_STACK_OF(X509_ATTRIBUTE) -DECLARE_ASN1_SET_OF(X509_ATTRIBUTE) - -typedef struct X509_req_info_st { - ASN1_ENCODING enc; - ASN1_INTEGER *version; - X509_NAME *subject; - X509_PUBKEY *pubkey; - /* d=2 hl=2 l= 0 cons: cont: 00 */ - STACK_OF(X509_ATTRIBUTE) *attributes; /* [ 0 ] */ -} X509_REQ_INFO; - -typedef struct X509_req_st { - X509_REQ_INFO *req_info; - X509_ALGOR *sig_alg; - ASN1_BIT_STRING *signature; - int references; -} X509_REQ; - -typedef struct x509_cinf_st { - ASN1_INTEGER *version; /* [ 0 ] default of v1 */ - ASN1_INTEGER *serialNumber; - X509_ALGOR *signature; - X509_NAME *issuer; - X509_VAL *validity; - X509_NAME *subject; - X509_PUBKEY *key; - ASN1_BIT_STRING *issuerUID; /* [ 1 ] optional in v2 */ - ASN1_BIT_STRING *subjectUID; /* [ 2 ] optional in v2 */ - STACK_OF(X509_EXTENSION) *extensions; /* [ 3 ] optional in v3 */ - ASN1_ENCODING enc; -} X509_CINF; - -/* - * This stuff is certificate "auxiliary info" it contains details which are - * useful in certificate stores and databases. When used this is tagged onto - * the end of the certificate itself - */ - -typedef struct x509_cert_aux_st { - STACK_OF(ASN1_OBJECT) *trust; /* trusted uses */ - STACK_OF(ASN1_OBJECT) *reject; /* rejected uses */ - ASN1_UTF8STRING *alias; /* "friendly name" */ - ASN1_OCTET_STRING *keyid; /* key id of private key */ - STACK_OF(X509_ALGOR) *other; /* other unspecified info */ -} X509_CERT_AUX; - -struct x509_st { - X509_CINF *cert_info; - X509_ALGOR *sig_alg; - ASN1_BIT_STRING *signature; - int valid; - int references; - char *name; - CRYPTO_EX_DATA ex_data; - /* These contain copies of various extension values */ - long ex_pathlen; - long ex_pcpathlen; - unsigned long ex_flags; - unsigned long ex_kusage; - unsigned long ex_xkusage; - unsigned long ex_nscert; - ASN1_OCTET_STRING *skid; - AUTHORITY_KEYID *akid; - X509_POLICY_CACHE *policy_cache; - STACK_OF(DIST_POINT) *crldp; - STACK_OF(GENERAL_NAME) *altname; - NAME_CONSTRAINTS *nc; -# ifndef OPENSSL_NO_RFC3779 - STACK_OF(IPAddressFamily) *rfc3779_addr; - struct ASIdentifiers_st *rfc3779_asid; -# endif -# ifndef OPENSSL_NO_SHA - unsigned char sha1_hash[SHA_DIGEST_LENGTH]; -# endif - X509_CERT_AUX *aux; -} /* X509 */ ; - -DECLARE_STACK_OF(X509) -DECLARE_ASN1_SET_OF(X509) - -/* This is used for a table of trust checking functions */ - -typedef struct x509_trust_st { - int trust; - int flags; - int (*check_trust) (struct x509_trust_st *, X509 *, int); - char *name; - int arg1; - void *arg2; -} X509_TRUST; - -DECLARE_STACK_OF(X509_TRUST) - -typedef struct x509_cert_pair_st { - X509 *forward; - X509 *reverse; -} X509_CERT_PAIR; - -/* standard trust ids */ - -# define X509_TRUST_DEFAULT -1/* Only valid in purpose settings */ - -# define X509_TRUST_COMPAT 1 -# define X509_TRUST_SSL_CLIENT 2 -# define X509_TRUST_SSL_SERVER 3 -# define X509_TRUST_EMAIL 4 -# define X509_TRUST_OBJECT_SIGN 5 -# define X509_TRUST_OCSP_SIGN 6 -# define X509_TRUST_OCSP_REQUEST 7 -# define X509_TRUST_TSA 8 - -/* Keep these up to date! */ -# define X509_TRUST_MIN 1 -# define X509_TRUST_MAX 8 - -/* trust_flags values */ -# define X509_TRUST_DYNAMIC 1 -# define X509_TRUST_DYNAMIC_NAME 2 - -/* check_trust return codes */ - -# define X509_TRUST_TRUSTED 1 -# define X509_TRUST_REJECTED 2 -# define X509_TRUST_UNTRUSTED 3 - -/* Flags for X509_print_ex() */ - -# define X509_FLAG_COMPAT 0 -# define X509_FLAG_NO_HEADER 1L -# define X509_FLAG_NO_VERSION (1L << 1) -# define X509_FLAG_NO_SERIAL (1L << 2) -# define X509_FLAG_NO_SIGNAME (1L << 3) -# define X509_FLAG_NO_ISSUER (1L << 4) -# define X509_FLAG_NO_VALIDITY (1L << 5) -# define X509_FLAG_NO_SUBJECT (1L << 6) -# define X509_FLAG_NO_PUBKEY (1L << 7) -# define X509_FLAG_NO_EXTENSIONS (1L << 8) -# define X509_FLAG_NO_SIGDUMP (1L << 9) -# define X509_FLAG_NO_AUX (1L << 10) -# define X509_FLAG_NO_ATTRIBUTES (1L << 11) -# define X509_FLAG_NO_IDS (1L << 12) - -/* Flags specific to X509_NAME_print_ex() */ - -/* The field separator information */ - -# define XN_FLAG_SEP_MASK (0xf << 16) - -# define XN_FLAG_COMPAT 0/* Traditional SSLeay: use old - * X509_NAME_print */ -# define XN_FLAG_SEP_COMMA_PLUS (1 << 16)/* RFC2253 ,+ */ -# define XN_FLAG_SEP_CPLUS_SPC (2 << 16)/* ,+ spaced: more readable */ -# define XN_FLAG_SEP_SPLUS_SPC (3 << 16)/* ;+ spaced */ -# define XN_FLAG_SEP_MULTILINE (4 << 16)/* One line per field */ - -# define XN_FLAG_DN_REV (1 << 20)/* Reverse DN order */ - -/* How the field name is shown */ - -# define XN_FLAG_FN_MASK (0x3 << 21) - -# define XN_FLAG_FN_SN 0/* Object short name */ -# define XN_FLAG_FN_LN (1 << 21)/* Object long name */ -# define XN_FLAG_FN_OID (2 << 21)/* Always use OIDs */ -# define XN_FLAG_FN_NONE (3 << 21)/* No field names */ - -# define XN_FLAG_SPC_EQ (1 << 23)/* Put spaces round '=' */ - -/* - * This determines if we dump fields we don't recognise: RFC2253 requires - * this. - */ - -# define XN_FLAG_DUMP_UNKNOWN_FIELDS (1 << 24) - -# define XN_FLAG_FN_ALIGN (1 << 25)/* Align field names to 20 - * characters */ - -/* Complete set of RFC2253 flags */ - -# define XN_FLAG_RFC2253 (ASN1_STRFLGS_RFC2253 | \ - XN_FLAG_SEP_COMMA_PLUS | \ - XN_FLAG_DN_REV | \ - XN_FLAG_FN_SN | \ - XN_FLAG_DUMP_UNKNOWN_FIELDS) - -/* readable oneline form */ - -# define XN_FLAG_ONELINE (ASN1_STRFLGS_RFC2253 | \ - ASN1_STRFLGS_ESC_QUOTE | \ - XN_FLAG_SEP_CPLUS_SPC | \ - XN_FLAG_SPC_EQ | \ - XN_FLAG_FN_SN) - -/* readable multiline form */ - -# define XN_FLAG_MULTILINE (ASN1_STRFLGS_ESC_CTRL | \ - ASN1_STRFLGS_ESC_MSB | \ - XN_FLAG_SEP_MULTILINE | \ - XN_FLAG_SPC_EQ | \ - XN_FLAG_FN_LN | \ - XN_FLAG_FN_ALIGN) - -struct x509_revoked_st { - ASN1_INTEGER *serialNumber; - ASN1_TIME *revocationDate; - STACK_OF(X509_EXTENSION) /* optional */ *extensions; - /* Set up if indirect CRL */ - STACK_OF(GENERAL_NAME) *issuer; - /* Revocation reason */ - int reason; - int sequence; /* load sequence */ -}; - -DECLARE_STACK_OF(X509_REVOKED) -DECLARE_ASN1_SET_OF(X509_REVOKED) - -typedef struct X509_crl_info_st { - ASN1_INTEGER *version; - X509_ALGOR *sig_alg; - X509_NAME *issuer; - ASN1_TIME *lastUpdate; - ASN1_TIME *nextUpdate; - STACK_OF(X509_REVOKED) *revoked; - STACK_OF(X509_EXTENSION) /* [0] */ *extensions; - ASN1_ENCODING enc; -} X509_CRL_INFO; - -struct X509_crl_st { - /* actual signature */ - X509_CRL_INFO *crl; - X509_ALGOR *sig_alg; - ASN1_BIT_STRING *signature; - int references; - int flags; - /* Copies of various extensions */ - AUTHORITY_KEYID *akid; - ISSUING_DIST_POINT *idp; - /* Convenient breakdown of IDP */ - int idp_flags; - int idp_reasons; - /* CRL and base CRL numbers for delta processing */ - ASN1_INTEGER *crl_number; - ASN1_INTEGER *base_crl_number; -# ifndef OPENSSL_NO_SHA - unsigned char sha1_hash[SHA_DIGEST_LENGTH]; -# endif - STACK_OF(GENERAL_NAMES) *issuers; - const X509_CRL_METHOD *meth; - void *meth_data; -} /* X509_CRL */ ; - -DECLARE_STACK_OF(X509_CRL) -DECLARE_ASN1_SET_OF(X509_CRL) - -typedef struct private_key_st { - int version; - /* The PKCS#8 data types */ - X509_ALGOR *enc_algor; - ASN1_OCTET_STRING *enc_pkey; /* encrypted pub key */ - /* When decrypted, the following will not be NULL */ - EVP_PKEY *dec_pkey; - /* used to encrypt and decrypt */ - int key_length; - char *key_data; - int key_free; /* true if we should auto free key_data */ - /* expanded version of 'enc_algor' */ - EVP_CIPHER_INFO cipher; - int references; -} X509_PKEY; - -# ifndef OPENSSL_NO_EVP -typedef struct X509_info_st { - X509 *x509; - X509_CRL *crl; - X509_PKEY *x_pkey; - EVP_CIPHER_INFO enc_cipher; - int enc_len; - char *enc_data; - int references; -} X509_INFO; - -DECLARE_STACK_OF(X509_INFO) -# endif - -/* - * The next 2 structures and their 8 routines were sent to me by Pat Richard - * and are used to manipulate Netscapes spki structures - - * useful if you are writing a CA web page - */ -typedef struct Netscape_spkac_st { - X509_PUBKEY *pubkey; - ASN1_IA5STRING *challenge; /* challenge sent in atlas >= PR2 */ -} NETSCAPE_SPKAC; - -typedef struct Netscape_spki_st { - NETSCAPE_SPKAC *spkac; /* signed public key and challenge */ - X509_ALGOR *sig_algor; - ASN1_BIT_STRING *signature; -} NETSCAPE_SPKI; - -/* Netscape certificate sequence structure */ -typedef struct Netscape_certificate_sequence { - ASN1_OBJECT *type; - STACK_OF(X509) *certs; -} NETSCAPE_CERT_SEQUENCE; - -/*- Unused (and iv length is wrong) -typedef struct CBCParameter_st - { - unsigned char iv[8]; - } CBC_PARAM; -*/ - -/* Password based encryption structure */ - -typedef struct PBEPARAM_st { - ASN1_OCTET_STRING *salt; - ASN1_INTEGER *iter; -} PBEPARAM; - -/* Password based encryption V2 structures */ - -typedef struct PBE2PARAM_st { - X509_ALGOR *keyfunc; - X509_ALGOR *encryption; -} PBE2PARAM; - -typedef struct PBKDF2PARAM_st { -/* Usually OCTET STRING but could be anything */ - ASN1_TYPE *salt; - ASN1_INTEGER *iter; - ASN1_INTEGER *keylength; - X509_ALGOR *prf; -} PBKDF2PARAM; - -/* PKCS#8 private key info structure */ - -struct pkcs8_priv_key_info_st { - /* Flag for various broken formats */ - int broken; -# define PKCS8_OK 0 -# define PKCS8_NO_OCTET 1 -# define PKCS8_EMBEDDED_PARAM 2 -# define PKCS8_NS_DB 3 -# define PKCS8_NEG_PRIVKEY 4 - ASN1_INTEGER *version; - X509_ALGOR *pkeyalg; - /* Should be OCTET STRING but some are broken */ - ASN1_TYPE *pkey; - STACK_OF(X509_ATTRIBUTE) *attributes; -}; - -#ifdef __cplusplus -} -#endif - -# include -# include - -#ifdef __cplusplus -extern "C" { -#endif - -# define X509_EXT_PACK_UNKNOWN 1 -# define X509_EXT_PACK_STRING 2 - -# define X509_get_version(x) ASN1_INTEGER_get((x)->cert_info->version) -/* #define X509_get_serialNumber(x) ((x)->cert_info->serialNumber) */ -# define X509_get_notBefore(x) ((x)->cert_info->validity->notBefore) -# define X509_get_notAfter(x) ((x)->cert_info->validity->notAfter) -# define X509_extract_key(x) X509_get_pubkey(x)/*****/ -# define X509_REQ_get_version(x) ASN1_INTEGER_get((x)->req_info->version) -# define X509_REQ_get_subject_name(x) ((x)->req_info->subject) -# define X509_REQ_extract_key(a) X509_REQ_get_pubkey(a) -# define X509_name_cmp(a,b) X509_NAME_cmp((a),(b)) -# define X509_get_signature_type(x) EVP_PKEY_type(OBJ_obj2nid((x)->sig_alg->algorithm)) - -# define X509_CRL_get_version(x) ASN1_INTEGER_get((x)->crl->version) -# define X509_CRL_get_lastUpdate(x) ((x)->crl->lastUpdate) -# define X509_CRL_get_nextUpdate(x) ((x)->crl->nextUpdate) -# define X509_CRL_get_issuer(x) ((x)->crl->issuer) -# define X509_CRL_get_REVOKED(x) ((x)->crl->revoked) - -void X509_CRL_set_default_method(const X509_CRL_METHOD *meth); -X509_CRL_METHOD *X509_CRL_METHOD_new(int (*crl_init) (X509_CRL *crl), - int (*crl_free) (X509_CRL *crl), - int (*crl_lookup) (X509_CRL *crl, - X509_REVOKED **ret, - ASN1_INTEGER *ser, - X509_NAME *issuer), - int (*crl_verify) (X509_CRL *crl, - EVP_PKEY *pk)); -void X509_CRL_METHOD_free(X509_CRL_METHOD *m); - -void X509_CRL_set_meth_data(X509_CRL *crl, void *dat); -void *X509_CRL_get_meth_data(X509_CRL *crl); - -/* - * This one is only used so that a binary form can output, as in - * i2d_X509_NAME(X509_get_X509_PUBKEY(x),&buf) - */ -# define X509_get_X509_PUBKEY(x) ((x)->cert_info->key) - -const char *X509_verify_cert_error_string(long n); - -# ifndef OPENSSL_NO_EVP -int X509_verify(X509 *a, EVP_PKEY *r); - -int X509_REQ_verify(X509_REQ *a, EVP_PKEY *r); -int X509_CRL_verify(X509_CRL *a, EVP_PKEY *r); -int NETSCAPE_SPKI_verify(NETSCAPE_SPKI *a, EVP_PKEY *r); - -NETSCAPE_SPKI *NETSCAPE_SPKI_b64_decode(const char *str, int len); -char *NETSCAPE_SPKI_b64_encode(NETSCAPE_SPKI *x); -EVP_PKEY *NETSCAPE_SPKI_get_pubkey(NETSCAPE_SPKI *x); -int NETSCAPE_SPKI_set_pubkey(NETSCAPE_SPKI *x, EVP_PKEY *pkey); - -int NETSCAPE_SPKI_print(BIO *out, NETSCAPE_SPKI *spki); - -int X509_signature_dump(BIO *bp, const ASN1_STRING *sig, int indent); -int X509_signature_print(BIO *bp, X509_ALGOR *alg, ASN1_STRING *sig); - -int X509_sign(X509 *x, EVP_PKEY *pkey, const EVP_MD *md); -int X509_sign_ctx(X509 *x, EVP_MD_CTX *ctx); -int X509_http_nbio(OCSP_REQ_CTX *rctx, X509 **pcert); -int X509_REQ_sign(X509_REQ *x, EVP_PKEY *pkey, const EVP_MD *md); -int X509_REQ_sign_ctx(X509_REQ *x, EVP_MD_CTX *ctx); -int X509_CRL_sign(X509_CRL *x, EVP_PKEY *pkey, const EVP_MD *md); -int X509_CRL_sign_ctx(X509_CRL *x, EVP_MD_CTX *ctx); -int X509_CRL_http_nbio(OCSP_REQ_CTX *rctx, X509_CRL **pcrl); -int NETSCAPE_SPKI_sign(NETSCAPE_SPKI *x, EVP_PKEY *pkey, const EVP_MD *md); - -int X509_pubkey_digest(const X509 *data, const EVP_MD *type, - unsigned char *md, unsigned int *len); -int X509_digest(const X509 *data, const EVP_MD *type, - unsigned char *md, unsigned int *len); -int X509_CRL_digest(const X509_CRL *data, const EVP_MD *type, - unsigned char *md, unsigned int *len); -int X509_REQ_digest(const X509_REQ *data, const EVP_MD *type, - unsigned char *md, unsigned int *len); -int X509_NAME_digest(const X509_NAME *data, const EVP_MD *type, - unsigned char *md, unsigned int *len); -# endif - -# ifndef OPENSSL_NO_FP_API -X509 *d2i_X509_fp(FILE *fp, X509 **x509); -int i2d_X509_fp(FILE *fp, X509 *x509); -X509_CRL *d2i_X509_CRL_fp(FILE *fp, X509_CRL **crl); -int i2d_X509_CRL_fp(FILE *fp, X509_CRL *crl); -X509_REQ *d2i_X509_REQ_fp(FILE *fp, X509_REQ **req); -int i2d_X509_REQ_fp(FILE *fp, X509_REQ *req); -# ifndef OPENSSL_NO_RSA -RSA *d2i_RSAPrivateKey_fp(FILE *fp, RSA **rsa); -int i2d_RSAPrivateKey_fp(FILE *fp, RSA *rsa); -RSA *d2i_RSAPublicKey_fp(FILE *fp, RSA **rsa); -int i2d_RSAPublicKey_fp(FILE *fp, RSA *rsa); -RSA *d2i_RSA_PUBKEY_fp(FILE *fp, RSA **rsa); -int i2d_RSA_PUBKEY_fp(FILE *fp, RSA *rsa); -# endif -# ifndef OPENSSL_NO_DSA -DSA *d2i_DSA_PUBKEY_fp(FILE *fp, DSA **dsa); -int i2d_DSA_PUBKEY_fp(FILE *fp, DSA *dsa); -DSA *d2i_DSAPrivateKey_fp(FILE *fp, DSA **dsa); -int i2d_DSAPrivateKey_fp(FILE *fp, DSA *dsa); -# endif -# ifndef OPENSSL_NO_EC -EC_KEY *d2i_EC_PUBKEY_fp(FILE *fp, EC_KEY **eckey); -int i2d_EC_PUBKEY_fp(FILE *fp, EC_KEY *eckey); -EC_KEY *d2i_ECPrivateKey_fp(FILE *fp, EC_KEY **eckey); -int i2d_ECPrivateKey_fp(FILE *fp, EC_KEY *eckey); -# endif -X509_SIG *d2i_PKCS8_fp(FILE *fp, X509_SIG **p8); -int i2d_PKCS8_fp(FILE *fp, X509_SIG *p8); -PKCS8_PRIV_KEY_INFO *d2i_PKCS8_PRIV_KEY_INFO_fp(FILE *fp, - PKCS8_PRIV_KEY_INFO **p8inf); -int i2d_PKCS8_PRIV_KEY_INFO_fp(FILE *fp, PKCS8_PRIV_KEY_INFO *p8inf); -int i2d_PKCS8PrivateKeyInfo_fp(FILE *fp, EVP_PKEY *key); -int i2d_PrivateKey_fp(FILE *fp, EVP_PKEY *pkey); -EVP_PKEY *d2i_PrivateKey_fp(FILE *fp, EVP_PKEY **a); -int i2d_PUBKEY_fp(FILE *fp, EVP_PKEY *pkey); -EVP_PKEY *d2i_PUBKEY_fp(FILE *fp, EVP_PKEY **a); -# endif - -# ifndef OPENSSL_NO_BIO -X509 *d2i_X509_bio(BIO *bp, X509 **x509); -int i2d_X509_bio(BIO *bp, X509 *x509); -X509_CRL *d2i_X509_CRL_bio(BIO *bp, X509_CRL **crl); -int i2d_X509_CRL_bio(BIO *bp, X509_CRL *crl); -X509_REQ *d2i_X509_REQ_bio(BIO *bp, X509_REQ **req); -int i2d_X509_REQ_bio(BIO *bp, X509_REQ *req); -# ifndef OPENSSL_NO_RSA -RSA *d2i_RSAPrivateKey_bio(BIO *bp, RSA **rsa); -int i2d_RSAPrivateKey_bio(BIO *bp, RSA *rsa); -RSA *d2i_RSAPublicKey_bio(BIO *bp, RSA **rsa); -int i2d_RSAPublicKey_bio(BIO *bp, RSA *rsa); -RSA *d2i_RSA_PUBKEY_bio(BIO *bp, RSA **rsa); -int i2d_RSA_PUBKEY_bio(BIO *bp, RSA *rsa); -# endif -# ifndef OPENSSL_NO_DSA -DSA *d2i_DSA_PUBKEY_bio(BIO *bp, DSA **dsa); -int i2d_DSA_PUBKEY_bio(BIO *bp, DSA *dsa); -DSA *d2i_DSAPrivateKey_bio(BIO *bp, DSA **dsa); -int i2d_DSAPrivateKey_bio(BIO *bp, DSA *dsa); -# endif -# ifndef OPENSSL_NO_EC -EC_KEY *d2i_EC_PUBKEY_bio(BIO *bp, EC_KEY **eckey); -int i2d_EC_PUBKEY_bio(BIO *bp, EC_KEY *eckey); -EC_KEY *d2i_ECPrivateKey_bio(BIO *bp, EC_KEY **eckey); -int i2d_ECPrivateKey_bio(BIO *bp, EC_KEY *eckey); -# endif -X509_SIG *d2i_PKCS8_bio(BIO *bp, X509_SIG **p8); -int i2d_PKCS8_bio(BIO *bp, X509_SIG *p8); -PKCS8_PRIV_KEY_INFO *d2i_PKCS8_PRIV_KEY_INFO_bio(BIO *bp, - PKCS8_PRIV_KEY_INFO **p8inf); -int i2d_PKCS8_PRIV_KEY_INFO_bio(BIO *bp, PKCS8_PRIV_KEY_INFO *p8inf); -int i2d_PKCS8PrivateKeyInfo_bio(BIO *bp, EVP_PKEY *key); -int i2d_PrivateKey_bio(BIO *bp, EVP_PKEY *pkey); -EVP_PKEY *d2i_PrivateKey_bio(BIO *bp, EVP_PKEY **a); -int i2d_PUBKEY_bio(BIO *bp, EVP_PKEY *pkey); -EVP_PKEY *d2i_PUBKEY_bio(BIO *bp, EVP_PKEY **a); -# endif - -X509 *X509_dup(X509 *x509); -X509_ATTRIBUTE *X509_ATTRIBUTE_dup(X509_ATTRIBUTE *xa); -X509_EXTENSION *X509_EXTENSION_dup(X509_EXTENSION *ex); -X509_CRL *X509_CRL_dup(X509_CRL *crl); -X509_REVOKED *X509_REVOKED_dup(X509_REVOKED *rev); -X509_REQ *X509_REQ_dup(X509_REQ *req); -X509_ALGOR *X509_ALGOR_dup(X509_ALGOR *xn); -int X509_ALGOR_set0(X509_ALGOR *alg, ASN1_OBJECT *aobj, int ptype, - void *pval); -void X509_ALGOR_get0(ASN1_OBJECT **paobj, int *pptype, void **ppval, - X509_ALGOR *algor); -void X509_ALGOR_set_md(X509_ALGOR *alg, const EVP_MD *md); -int X509_ALGOR_cmp(const X509_ALGOR *a, const X509_ALGOR *b); - -X509_NAME *X509_NAME_dup(X509_NAME *xn); -X509_NAME_ENTRY *X509_NAME_ENTRY_dup(X509_NAME_ENTRY *ne); - -int X509_cmp_time(const ASN1_TIME *s, time_t *t); -int X509_cmp_current_time(const ASN1_TIME *s); -ASN1_TIME *X509_time_adj(ASN1_TIME *s, long adj, time_t *t); -ASN1_TIME *X509_time_adj_ex(ASN1_TIME *s, - int offset_day, long offset_sec, time_t *t); -ASN1_TIME *X509_gmtime_adj(ASN1_TIME *s, long adj); - -const char *X509_get_default_cert_area(void); -const char *X509_get_default_cert_dir(void); -const char *X509_get_default_cert_file(void); -const char *X509_get_default_cert_dir_env(void); -const char *X509_get_default_cert_file_env(void); -const char *X509_get_default_private_dir(void); - -X509_REQ *X509_to_X509_REQ(X509 *x, EVP_PKEY *pkey, const EVP_MD *md); -X509 *X509_REQ_to_X509(X509_REQ *r, int days, EVP_PKEY *pkey); - -DECLARE_ASN1_FUNCTIONS(X509_ALGOR) -DECLARE_ASN1_ENCODE_FUNCTIONS(X509_ALGORS, X509_ALGORS, X509_ALGORS) -DECLARE_ASN1_FUNCTIONS(X509_VAL) - -DECLARE_ASN1_FUNCTIONS(X509_PUBKEY) - -int X509_PUBKEY_set(X509_PUBKEY **x, EVP_PKEY *pkey); -EVP_PKEY *X509_PUBKEY_get(X509_PUBKEY *key); -int X509_get_pubkey_parameters(EVP_PKEY *pkey, STACK_OF(X509) *chain); -int i2d_PUBKEY(EVP_PKEY *a, unsigned char **pp); -EVP_PKEY *d2i_PUBKEY(EVP_PKEY **a, const unsigned char **pp, long length); -# ifndef OPENSSL_NO_RSA -int i2d_RSA_PUBKEY(RSA *a, unsigned char **pp); -RSA *d2i_RSA_PUBKEY(RSA **a, const unsigned char **pp, long length); -# endif -# ifndef OPENSSL_NO_DSA -int i2d_DSA_PUBKEY(DSA *a, unsigned char **pp); -DSA *d2i_DSA_PUBKEY(DSA **a, const unsigned char **pp, long length); -# endif -# ifndef OPENSSL_NO_EC -int i2d_EC_PUBKEY(EC_KEY *a, unsigned char **pp); -EC_KEY *d2i_EC_PUBKEY(EC_KEY **a, const unsigned char **pp, long length); -# endif - -DECLARE_ASN1_FUNCTIONS(X509_SIG) -DECLARE_ASN1_FUNCTIONS(X509_REQ_INFO) -DECLARE_ASN1_FUNCTIONS(X509_REQ) - -DECLARE_ASN1_FUNCTIONS(X509_ATTRIBUTE) -X509_ATTRIBUTE *X509_ATTRIBUTE_create(int nid, int atrtype, void *value); - -DECLARE_ASN1_FUNCTIONS(X509_EXTENSION) -DECLARE_ASN1_ENCODE_FUNCTIONS(X509_EXTENSIONS, X509_EXTENSIONS, X509_EXTENSIONS) - -DECLARE_ASN1_FUNCTIONS(X509_NAME_ENTRY) - -DECLARE_ASN1_FUNCTIONS(X509_NAME) - -int X509_NAME_set(X509_NAME **xn, X509_NAME *name); - -DECLARE_ASN1_FUNCTIONS(X509_CINF) - -DECLARE_ASN1_FUNCTIONS(X509) -DECLARE_ASN1_FUNCTIONS(X509_CERT_AUX) - -DECLARE_ASN1_FUNCTIONS(X509_CERT_PAIR) - -int X509_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new *new_func, - CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func); -int X509_set_ex_data(X509 *r, int idx, void *arg); -void *X509_get_ex_data(X509 *r, int idx); -int i2d_X509_AUX(X509 *a, unsigned char **pp); -X509 *d2i_X509_AUX(X509 **a, const unsigned char **pp, long length); - -int i2d_re_X509_tbs(X509 *x, unsigned char **pp); - -void X509_get0_signature(ASN1_BIT_STRING **psig, X509_ALGOR **palg, - const X509 *x); -int X509_get_signature_nid(const X509 *x); - -int X509_alias_set1(X509 *x, unsigned char *name, int len); -int X509_keyid_set1(X509 *x, unsigned char *id, int len); -unsigned char *X509_alias_get0(X509 *x, int *len); -unsigned char *X509_keyid_get0(X509 *x, int *len); -int (*X509_TRUST_set_default(int (*trust) (int, X509 *, int))) (int, X509 *, - int); -int X509_TRUST_set(int *t, int trust); -int X509_add1_trust_object(X509 *x, ASN1_OBJECT *obj); -int X509_add1_reject_object(X509 *x, ASN1_OBJECT *obj); -void X509_trust_clear(X509 *x); -void X509_reject_clear(X509 *x); - -DECLARE_ASN1_FUNCTIONS(X509_REVOKED) -DECLARE_ASN1_FUNCTIONS(X509_CRL_INFO) -DECLARE_ASN1_FUNCTIONS(X509_CRL) - -int X509_CRL_add0_revoked(X509_CRL *crl, X509_REVOKED *rev); -int X509_CRL_get0_by_serial(X509_CRL *crl, - X509_REVOKED **ret, ASN1_INTEGER *serial); -int X509_CRL_get0_by_cert(X509_CRL *crl, X509_REVOKED **ret, X509 *x); - -X509_PKEY *X509_PKEY_new(void); -void X509_PKEY_free(X509_PKEY *a); -int i2d_X509_PKEY(X509_PKEY *a, unsigned char **pp); -X509_PKEY *d2i_X509_PKEY(X509_PKEY **a, const unsigned char **pp, - long length); - -DECLARE_ASN1_FUNCTIONS(NETSCAPE_SPKI) -DECLARE_ASN1_FUNCTIONS(NETSCAPE_SPKAC) -DECLARE_ASN1_FUNCTIONS(NETSCAPE_CERT_SEQUENCE) - -# ifndef OPENSSL_NO_EVP -X509_INFO *X509_INFO_new(void); -void X509_INFO_free(X509_INFO *a); -char *X509_NAME_oneline(X509_NAME *a, char *buf, int size); - -int ASN1_verify(i2d_of_void *i2d, X509_ALGOR *algor1, - ASN1_BIT_STRING *signature, char *data, EVP_PKEY *pkey); - -int ASN1_digest(i2d_of_void *i2d, const EVP_MD *type, char *data, - unsigned char *md, unsigned int *len); - -int ASN1_sign(i2d_of_void *i2d, X509_ALGOR *algor1, - X509_ALGOR *algor2, ASN1_BIT_STRING *signature, - char *data, EVP_PKEY *pkey, const EVP_MD *type); - -int ASN1_item_digest(const ASN1_ITEM *it, const EVP_MD *type, void *data, - unsigned char *md, unsigned int *len); - -int ASN1_item_verify(const ASN1_ITEM *it, X509_ALGOR *algor1, - ASN1_BIT_STRING *signature, void *data, EVP_PKEY *pkey); - -int ASN1_item_sign(const ASN1_ITEM *it, X509_ALGOR *algor1, - X509_ALGOR *algor2, ASN1_BIT_STRING *signature, void *data, - EVP_PKEY *pkey, const EVP_MD *type); -int ASN1_item_sign_ctx(const ASN1_ITEM *it, X509_ALGOR *algor1, - X509_ALGOR *algor2, ASN1_BIT_STRING *signature, - void *asn, EVP_MD_CTX *ctx); -# endif - -int X509_set_version(X509 *x, long version); -int X509_set_serialNumber(X509 *x, ASN1_INTEGER *serial); -ASN1_INTEGER *X509_get_serialNumber(X509 *x); -int X509_set_issuer_name(X509 *x, X509_NAME *name); -X509_NAME *X509_get_issuer_name(X509 *a); -int X509_set_subject_name(X509 *x, X509_NAME *name); -X509_NAME *X509_get_subject_name(X509 *a); -int X509_set_notBefore(X509 *x, const ASN1_TIME *tm); -int X509_set_notAfter(X509 *x, const ASN1_TIME *tm); -int X509_set_pubkey(X509 *x, EVP_PKEY *pkey); -EVP_PKEY *X509_get_pubkey(X509 *x); -ASN1_BIT_STRING *X509_get0_pubkey_bitstr(const X509 *x); -int X509_certificate_type(X509 *x, EVP_PKEY *pubkey /* optional */ ); - -int X509_REQ_set_version(X509_REQ *x, long version); -int X509_REQ_set_subject_name(X509_REQ *req, X509_NAME *name); -int X509_REQ_set_pubkey(X509_REQ *x, EVP_PKEY *pkey); -EVP_PKEY *X509_REQ_get_pubkey(X509_REQ *req); -int X509_REQ_extension_nid(int nid); -int *X509_REQ_get_extension_nids(void); -void X509_REQ_set_extension_nids(int *nids); -STACK_OF(X509_EXTENSION) *X509_REQ_get_extensions(X509_REQ *req); -int X509_REQ_add_extensions_nid(X509_REQ *req, STACK_OF(X509_EXTENSION) *exts, - int nid); -int X509_REQ_add_extensions(X509_REQ *req, STACK_OF(X509_EXTENSION) *exts); -int X509_REQ_get_attr_count(const X509_REQ *req); -int X509_REQ_get_attr_by_NID(const X509_REQ *req, int nid, int lastpos); -int X509_REQ_get_attr_by_OBJ(const X509_REQ *req, ASN1_OBJECT *obj, - int lastpos); -X509_ATTRIBUTE *X509_REQ_get_attr(const X509_REQ *req, int loc); -X509_ATTRIBUTE *X509_REQ_delete_attr(X509_REQ *req, int loc); -int X509_REQ_add1_attr(X509_REQ *req, X509_ATTRIBUTE *attr); -int X509_REQ_add1_attr_by_OBJ(X509_REQ *req, - const ASN1_OBJECT *obj, int type, - const unsigned char *bytes, int len); -int X509_REQ_add1_attr_by_NID(X509_REQ *req, - int nid, int type, - const unsigned char *bytes, int len); -int X509_REQ_add1_attr_by_txt(X509_REQ *req, - const char *attrname, int type, - const unsigned char *bytes, int len); - -int X509_CRL_set_version(X509_CRL *x, long version); -int X509_CRL_set_issuer_name(X509_CRL *x, X509_NAME *name); -int X509_CRL_set_lastUpdate(X509_CRL *x, const ASN1_TIME *tm); -int X509_CRL_set_nextUpdate(X509_CRL *x, const ASN1_TIME *tm); -int X509_CRL_sort(X509_CRL *crl); - -int X509_REVOKED_set_serialNumber(X509_REVOKED *x, ASN1_INTEGER *serial); -int X509_REVOKED_set_revocationDate(X509_REVOKED *r, ASN1_TIME *tm); - -X509_CRL *X509_CRL_diff(X509_CRL *base, X509_CRL *newer, - EVP_PKEY *skey, const EVP_MD *md, unsigned int flags); - -int X509_REQ_check_private_key(X509_REQ *x509, EVP_PKEY *pkey); - -int X509_check_private_key(X509 *x509, EVP_PKEY *pkey); -int X509_chain_check_suiteb(int *perror_depth, - X509 *x, STACK_OF(X509) *chain, - unsigned long flags); -int X509_CRL_check_suiteb(X509_CRL *crl, EVP_PKEY *pk, unsigned long flags); -STACK_OF(X509) *X509_chain_up_ref(STACK_OF(X509) *chain); - -int X509_issuer_and_serial_cmp(const X509 *a, const X509 *b); -unsigned long X509_issuer_and_serial_hash(X509 *a); - -int X509_issuer_name_cmp(const X509 *a, const X509 *b); -unsigned long X509_issuer_name_hash(X509 *a); - -int X509_subject_name_cmp(const X509 *a, const X509 *b); -unsigned long X509_subject_name_hash(X509 *x); - -# ifndef OPENSSL_NO_MD5 -unsigned long X509_issuer_name_hash_old(X509 *a); -unsigned long X509_subject_name_hash_old(X509 *x); -# endif - -int X509_cmp(const X509 *a, const X509 *b); -int X509_NAME_cmp(const X509_NAME *a, const X509_NAME *b); -unsigned long X509_NAME_hash(X509_NAME *x); -unsigned long X509_NAME_hash_old(X509_NAME *x); - -int X509_CRL_cmp(const X509_CRL *a, const X509_CRL *b); -int X509_CRL_match(const X509_CRL *a, const X509_CRL *b); -# ifndef OPENSSL_NO_FP_API -int X509_print_ex_fp(FILE *bp, X509 *x, unsigned long nmflag, - unsigned long cflag); -int X509_print_fp(FILE *bp, X509 *x); -int X509_CRL_print_fp(FILE *bp, X509_CRL *x); -int X509_REQ_print_fp(FILE *bp, X509_REQ *req); -int X509_NAME_print_ex_fp(FILE *fp, X509_NAME *nm, int indent, - unsigned long flags); -# endif - -# ifndef OPENSSL_NO_BIO -int X509_NAME_print(BIO *bp, X509_NAME *name, int obase); -int X509_NAME_print_ex(BIO *out, X509_NAME *nm, int indent, - unsigned long flags); -int X509_print_ex(BIO *bp, X509 *x, unsigned long nmflag, - unsigned long cflag); -int X509_print(BIO *bp, X509 *x); -int X509_ocspid_print(BIO *bp, X509 *x); -int X509_CERT_AUX_print(BIO *bp, X509_CERT_AUX *x, int indent); -int X509_CRL_print(BIO *bp, X509_CRL *x); -int X509_REQ_print_ex(BIO *bp, X509_REQ *x, unsigned long nmflag, - unsigned long cflag); -int X509_REQ_print(BIO *bp, X509_REQ *req); -# endif - -int X509_NAME_entry_count(X509_NAME *name); -int X509_NAME_get_text_by_NID(X509_NAME *name, int nid, char *buf, int len); -int X509_NAME_get_text_by_OBJ(X509_NAME *name, ASN1_OBJECT *obj, - char *buf, int len); - -/* - * NOTE: you should be passsing -1, not 0 as lastpos. The functions that use - * lastpos, search after that position on. - */ -int X509_NAME_get_index_by_NID(X509_NAME *name, int nid, int lastpos); -int X509_NAME_get_index_by_OBJ(X509_NAME *name, ASN1_OBJECT *obj, - int lastpos); -X509_NAME_ENTRY *X509_NAME_get_entry(X509_NAME *name, int loc); -X509_NAME_ENTRY *X509_NAME_delete_entry(X509_NAME *name, int loc); -int X509_NAME_add_entry(X509_NAME *name, X509_NAME_ENTRY *ne, - int loc, int set); -int X509_NAME_add_entry_by_OBJ(X509_NAME *name, ASN1_OBJECT *obj, int type, - unsigned char *bytes, int len, int loc, - int set); -int X509_NAME_add_entry_by_NID(X509_NAME *name, int nid, int type, - unsigned char *bytes, int len, int loc, - int set); -X509_NAME_ENTRY *X509_NAME_ENTRY_create_by_txt(X509_NAME_ENTRY **ne, - const char *field, int type, - const unsigned char *bytes, - int len); -X509_NAME_ENTRY *X509_NAME_ENTRY_create_by_NID(X509_NAME_ENTRY **ne, int nid, - int type, unsigned char *bytes, - int len); -int X509_NAME_add_entry_by_txt(X509_NAME *name, const char *field, int type, - const unsigned char *bytes, int len, int loc, - int set); -X509_NAME_ENTRY *X509_NAME_ENTRY_create_by_OBJ(X509_NAME_ENTRY **ne, - ASN1_OBJECT *obj, int type, - const unsigned char *bytes, - int len); -int X509_NAME_ENTRY_set_object(X509_NAME_ENTRY *ne, ASN1_OBJECT *obj); -int X509_NAME_ENTRY_set_data(X509_NAME_ENTRY *ne, int type, - const unsigned char *bytes, int len); -ASN1_OBJECT *X509_NAME_ENTRY_get_object(X509_NAME_ENTRY *ne); -ASN1_STRING *X509_NAME_ENTRY_get_data(X509_NAME_ENTRY *ne); - -int X509v3_get_ext_count(const STACK_OF(X509_EXTENSION) *x); -int X509v3_get_ext_by_NID(const STACK_OF(X509_EXTENSION) *x, - int nid, int lastpos); -int X509v3_get_ext_by_OBJ(const STACK_OF(X509_EXTENSION) *x, - ASN1_OBJECT *obj, int lastpos); -int X509v3_get_ext_by_critical(const STACK_OF(X509_EXTENSION) *x, - int crit, int lastpos); -X509_EXTENSION *X509v3_get_ext(const STACK_OF(X509_EXTENSION) *x, int loc); -X509_EXTENSION *X509v3_delete_ext(STACK_OF(X509_EXTENSION) *x, int loc); -STACK_OF(X509_EXTENSION) *X509v3_add_ext(STACK_OF(X509_EXTENSION) **x, - X509_EXTENSION *ex, int loc); - -int X509_get_ext_count(X509 *x); -int X509_get_ext_by_NID(X509 *x, int nid, int lastpos); -int X509_get_ext_by_OBJ(X509 *x, ASN1_OBJECT *obj, int lastpos); -int X509_get_ext_by_critical(X509 *x, int crit, int lastpos); -X509_EXTENSION *X509_get_ext(X509 *x, int loc); -X509_EXTENSION *X509_delete_ext(X509 *x, int loc); -int X509_add_ext(X509 *x, X509_EXTENSION *ex, int loc); -void *X509_get_ext_d2i(X509 *x, int nid, int *crit, int *idx); -int X509_add1_ext_i2d(X509 *x, int nid, void *value, int crit, - unsigned long flags); - -int X509_CRL_get_ext_count(X509_CRL *x); -int X509_CRL_get_ext_by_NID(X509_CRL *x, int nid, int lastpos); -int X509_CRL_get_ext_by_OBJ(X509_CRL *x, ASN1_OBJECT *obj, int lastpos); -int X509_CRL_get_ext_by_critical(X509_CRL *x, int crit, int lastpos); -X509_EXTENSION *X509_CRL_get_ext(X509_CRL *x, int loc); -X509_EXTENSION *X509_CRL_delete_ext(X509_CRL *x, int loc); -int X509_CRL_add_ext(X509_CRL *x, X509_EXTENSION *ex, int loc); -void *X509_CRL_get_ext_d2i(X509_CRL *x, int nid, int *crit, int *idx); -int X509_CRL_add1_ext_i2d(X509_CRL *x, int nid, void *value, int crit, - unsigned long flags); - -int X509_REVOKED_get_ext_count(X509_REVOKED *x); -int X509_REVOKED_get_ext_by_NID(X509_REVOKED *x, int nid, int lastpos); -int X509_REVOKED_get_ext_by_OBJ(X509_REVOKED *x, ASN1_OBJECT *obj, - int lastpos); -int X509_REVOKED_get_ext_by_critical(X509_REVOKED *x, int crit, int lastpos); -X509_EXTENSION *X509_REVOKED_get_ext(X509_REVOKED *x, int loc); -X509_EXTENSION *X509_REVOKED_delete_ext(X509_REVOKED *x, int loc); -int X509_REVOKED_add_ext(X509_REVOKED *x, X509_EXTENSION *ex, int loc); -void *X509_REVOKED_get_ext_d2i(X509_REVOKED *x, int nid, int *crit, int *idx); -int X509_REVOKED_add1_ext_i2d(X509_REVOKED *x, int nid, void *value, int crit, - unsigned long flags); - -X509_EXTENSION *X509_EXTENSION_create_by_NID(X509_EXTENSION **ex, - int nid, int crit, - ASN1_OCTET_STRING *data); -X509_EXTENSION *X509_EXTENSION_create_by_OBJ(X509_EXTENSION **ex, - ASN1_OBJECT *obj, int crit, - ASN1_OCTET_STRING *data); -int X509_EXTENSION_set_object(X509_EXTENSION *ex, ASN1_OBJECT *obj); -int X509_EXTENSION_set_critical(X509_EXTENSION *ex, int crit); -int X509_EXTENSION_set_data(X509_EXTENSION *ex, ASN1_OCTET_STRING *data); -ASN1_OBJECT *X509_EXTENSION_get_object(X509_EXTENSION *ex); -ASN1_OCTET_STRING *X509_EXTENSION_get_data(X509_EXTENSION *ne); -int X509_EXTENSION_get_critical(X509_EXTENSION *ex); - -int X509at_get_attr_count(const STACK_OF(X509_ATTRIBUTE) *x); -int X509at_get_attr_by_NID(const STACK_OF(X509_ATTRIBUTE) *x, int nid, - int lastpos); -int X509at_get_attr_by_OBJ(const STACK_OF(X509_ATTRIBUTE) *sk, - ASN1_OBJECT *obj, int lastpos); -X509_ATTRIBUTE *X509at_get_attr(const STACK_OF(X509_ATTRIBUTE) *x, int loc); -X509_ATTRIBUTE *X509at_delete_attr(STACK_OF(X509_ATTRIBUTE) *x, int loc); -STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr(STACK_OF(X509_ATTRIBUTE) **x, - X509_ATTRIBUTE *attr); -STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr_by_OBJ(STACK_OF(X509_ATTRIBUTE) - **x, const ASN1_OBJECT *obj, - int type, - const unsigned char *bytes, - int len); -STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr_by_NID(STACK_OF(X509_ATTRIBUTE) - **x, int nid, int type, - const unsigned char *bytes, - int len); -STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr_by_txt(STACK_OF(X509_ATTRIBUTE) - **x, const char *attrname, - int type, - const unsigned char *bytes, - int len); -void *X509at_get0_data_by_OBJ(STACK_OF(X509_ATTRIBUTE) *x, ASN1_OBJECT *obj, - int lastpos, int type); -X509_ATTRIBUTE *X509_ATTRIBUTE_create_by_NID(X509_ATTRIBUTE **attr, int nid, - int atrtype, const void *data, - int len); -X509_ATTRIBUTE *X509_ATTRIBUTE_create_by_OBJ(X509_ATTRIBUTE **attr, - const ASN1_OBJECT *obj, - int atrtype, const void *data, - int len); -X509_ATTRIBUTE *X509_ATTRIBUTE_create_by_txt(X509_ATTRIBUTE **attr, - const char *atrname, int type, - const unsigned char *bytes, - int len); -int X509_ATTRIBUTE_set1_object(X509_ATTRIBUTE *attr, const ASN1_OBJECT *obj); -int X509_ATTRIBUTE_set1_data(X509_ATTRIBUTE *attr, int attrtype, - const void *data, int len); -void *X509_ATTRIBUTE_get0_data(X509_ATTRIBUTE *attr, int idx, int atrtype, - void *data); -int X509_ATTRIBUTE_count(X509_ATTRIBUTE *attr); -ASN1_OBJECT *X509_ATTRIBUTE_get0_object(X509_ATTRIBUTE *attr); -ASN1_TYPE *X509_ATTRIBUTE_get0_type(X509_ATTRIBUTE *attr, int idx); - -int EVP_PKEY_get_attr_count(const EVP_PKEY *key); -int EVP_PKEY_get_attr_by_NID(const EVP_PKEY *key, int nid, int lastpos); -int EVP_PKEY_get_attr_by_OBJ(const EVP_PKEY *key, ASN1_OBJECT *obj, - int lastpos); -X509_ATTRIBUTE *EVP_PKEY_get_attr(const EVP_PKEY *key, int loc); -X509_ATTRIBUTE *EVP_PKEY_delete_attr(EVP_PKEY *key, int loc); -int EVP_PKEY_add1_attr(EVP_PKEY *key, X509_ATTRIBUTE *attr); -int EVP_PKEY_add1_attr_by_OBJ(EVP_PKEY *key, - const ASN1_OBJECT *obj, int type, - const unsigned char *bytes, int len); -int EVP_PKEY_add1_attr_by_NID(EVP_PKEY *key, - int nid, int type, - const unsigned char *bytes, int len); -int EVP_PKEY_add1_attr_by_txt(EVP_PKEY *key, - const char *attrname, int type, - const unsigned char *bytes, int len); - -int X509_verify_cert(X509_STORE_CTX *ctx); - -/* lookup a cert from a X509 STACK */ -X509 *X509_find_by_issuer_and_serial(STACK_OF(X509) *sk, X509_NAME *name, - ASN1_INTEGER *serial); -X509 *X509_find_by_subject(STACK_OF(X509) *sk, X509_NAME *name); - -DECLARE_ASN1_FUNCTIONS(PBEPARAM) -DECLARE_ASN1_FUNCTIONS(PBE2PARAM) -DECLARE_ASN1_FUNCTIONS(PBKDF2PARAM) - -int PKCS5_pbe_set0_algor(X509_ALGOR *algor, int alg, int iter, - const unsigned char *salt, int saltlen); - -X509_ALGOR *PKCS5_pbe_set(int alg, int iter, - const unsigned char *salt, int saltlen); -X509_ALGOR *PKCS5_pbe2_set(const EVP_CIPHER *cipher, int iter, - unsigned char *salt, int saltlen); -X509_ALGOR *PKCS5_pbe2_set_iv(const EVP_CIPHER *cipher, int iter, - unsigned char *salt, int saltlen, - unsigned char *aiv, int prf_nid); - -X509_ALGOR *PKCS5_pbkdf2_set(int iter, unsigned char *salt, int saltlen, - int prf_nid, int keylen); - -/* PKCS#8 utilities */ - -DECLARE_ASN1_FUNCTIONS(PKCS8_PRIV_KEY_INFO) - -EVP_PKEY *EVP_PKCS82PKEY(PKCS8_PRIV_KEY_INFO *p8); -PKCS8_PRIV_KEY_INFO *EVP_PKEY2PKCS8(EVP_PKEY *pkey); -PKCS8_PRIV_KEY_INFO *EVP_PKEY2PKCS8_broken(EVP_PKEY *pkey, int broken); -PKCS8_PRIV_KEY_INFO *PKCS8_set_broken(PKCS8_PRIV_KEY_INFO *p8, int broken); - -int PKCS8_pkey_set0(PKCS8_PRIV_KEY_INFO *priv, ASN1_OBJECT *aobj, - int version, int ptype, void *pval, - unsigned char *penc, int penclen); -int PKCS8_pkey_get0(ASN1_OBJECT **ppkalg, - const unsigned char **pk, int *ppklen, - X509_ALGOR **pa, PKCS8_PRIV_KEY_INFO *p8); - -int X509_PUBKEY_set0_param(X509_PUBKEY *pub, ASN1_OBJECT *aobj, - int ptype, void *pval, - unsigned char *penc, int penclen); -int X509_PUBKEY_get0_param(ASN1_OBJECT **ppkalg, - const unsigned char **pk, int *ppklen, - X509_ALGOR **pa, X509_PUBKEY *pub); - -int X509_check_trust(X509 *x, int id, int flags); -int X509_TRUST_get_count(void); -X509_TRUST *X509_TRUST_get0(int idx); -int X509_TRUST_get_by_id(int id); -int X509_TRUST_add(int id, int flags, int (*ck) (X509_TRUST *, X509 *, int), - char *name, int arg1, void *arg2); -void X509_TRUST_cleanup(void); -int X509_TRUST_get_flags(X509_TRUST *xp); -char *X509_TRUST_get0_name(X509_TRUST *xp); -int X509_TRUST_get_trust(X509_TRUST *xp); - -/* BEGIN ERROR CODES */ -/* - * The following lines are auto generated by the script mkerr.pl. Any changes - * made after this point may be overwritten when the script is next run. - */ -void ERR_load_X509_strings(void); - -/* Error codes for the X509 functions. */ - -/* Function codes. */ -# define X509_F_ADD_CERT_DIR 100 -# define X509_F_BY_FILE_CTRL 101 -# define X509_F_CHECK_POLICY 145 -# define X509_F_DIR_CTRL 102 -# define X509_F_GET_CERT_BY_SUBJECT 103 -# define X509_F_NETSCAPE_SPKI_B64_DECODE 129 -# define X509_F_NETSCAPE_SPKI_B64_ENCODE 130 -# define X509_F_X509AT_ADD1_ATTR 135 -# define X509_F_X509V3_ADD_EXT 104 -# define X509_F_X509_ATTRIBUTE_CREATE_BY_NID 136 -# define X509_F_X509_ATTRIBUTE_CREATE_BY_OBJ 137 -# define X509_F_X509_ATTRIBUTE_CREATE_BY_TXT 140 -# define X509_F_X509_ATTRIBUTE_GET0_DATA 139 -# define X509_F_X509_ATTRIBUTE_SET1_DATA 138 -# define X509_F_X509_CHECK_PRIVATE_KEY 128 -# define X509_F_X509_CRL_DIFF 105 -# define X509_F_X509_CRL_PRINT_FP 147 -# define X509_F_X509_EXTENSION_CREATE_BY_NID 108 -# define X509_F_X509_EXTENSION_CREATE_BY_OBJ 109 -# define X509_F_X509_GET_PUBKEY_PARAMETERS 110 -# define X509_F_X509_LOAD_CERT_CRL_FILE 132 -# define X509_F_X509_LOAD_CERT_FILE 111 -# define X509_F_X509_LOAD_CRL_FILE 112 -# define X509_F_X509_NAME_ADD_ENTRY 113 -# define X509_F_X509_NAME_ENTRY_CREATE_BY_NID 114 -# define X509_F_X509_NAME_ENTRY_CREATE_BY_TXT 131 -# define X509_F_X509_NAME_ENTRY_SET_OBJECT 115 -# define X509_F_X509_NAME_ONELINE 116 -# define X509_F_X509_NAME_PRINT 117 -# define X509_F_X509_PRINT_EX_FP 118 -# define X509_F_X509_PUBKEY_GET 119 -# define X509_F_X509_PUBKEY_SET 120 -# define X509_F_X509_REQ_CHECK_PRIVATE_KEY 144 -# define X509_F_X509_REQ_PRINT_EX 121 -# define X509_F_X509_REQ_PRINT_FP 122 -# define X509_F_X509_REQ_TO_X509 123 -# define X509_F_X509_STORE_ADD_CERT 124 -# define X509_F_X509_STORE_ADD_CRL 125 -# define X509_F_X509_STORE_CTX_GET1_ISSUER 146 -# define X509_F_X509_STORE_CTX_INIT 143 -# define X509_F_X509_STORE_CTX_NEW 142 -# define X509_F_X509_STORE_CTX_PURPOSE_INHERIT 134 -# define X509_F_X509_TO_X509_REQ 126 -# define X509_F_X509_TRUST_ADD 133 -# define X509_F_X509_TRUST_SET 141 -# define X509_F_X509_VERIFY_CERT 127 - -/* Reason codes. */ -# define X509_R_AKID_MISMATCH 110 -# define X509_R_BAD_X509_FILETYPE 100 -# define X509_R_BASE64_DECODE_ERROR 118 -# define X509_R_CANT_CHECK_DH_KEY 114 -# define X509_R_CERT_ALREADY_IN_HASH_TABLE 101 -# define X509_R_CRL_ALREADY_DELTA 127 -# define X509_R_CRL_VERIFY_FAILURE 131 -# define X509_R_ERR_ASN1_LIB 102 -# define X509_R_IDP_MISMATCH 128 -# define X509_R_INVALID_DIRECTORY 113 -# define X509_R_INVALID_FIELD_NAME 119 -# define X509_R_INVALID_TRUST 123 -# define X509_R_ISSUER_MISMATCH 129 -# define X509_R_KEY_TYPE_MISMATCH 115 -# define X509_R_KEY_VALUES_MISMATCH 116 -# define X509_R_LOADING_CERT_DIR 103 -# define X509_R_LOADING_DEFAULTS 104 -# define X509_R_METHOD_NOT_SUPPORTED 124 -# define X509_R_NEWER_CRL_NOT_NEWER 132 -# define X509_R_NO_CERT_SET_FOR_US_TO_VERIFY 105 -# define X509_R_NO_CRL_NUMBER 130 -# define X509_R_PUBLIC_KEY_DECODE_ERROR 125 -# define X509_R_PUBLIC_KEY_ENCODE_ERROR 126 -# define X509_R_SHOULD_RETRY 106 -# define X509_R_UNABLE_TO_FIND_PARAMETERS_IN_CHAIN 107 -# define X509_R_UNABLE_TO_GET_CERTS_PUBLIC_KEY 108 -# define X509_R_UNKNOWN_KEY_TYPE 117 -# define X509_R_UNKNOWN_NID 109 -# define X509_R_UNKNOWN_PURPOSE_ID 121 -# define X509_R_UNKNOWN_TRUST_ID 120 -# define X509_R_UNSUPPORTED_ALGORITHM 111 -# define X509_R_WRONG_LOOKUP_TYPE 112 -# define X509_R_WRONG_TYPE 122 - -#ifdef __cplusplus -} -#endif -#endif diff --git a/ext/openssl-win32/inc32/openssl/x509_vfy.h b/ext/openssl-win32/inc32/openssl/x509_vfy.h deleted file mode 100644 index a6f0df54..00000000 --- a/ext/openssl-win32/inc32/openssl/x509_vfy.h +++ /dev/null @@ -1,641 +0,0 @@ -/* crypto/x509/x509_vfy.h */ -/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) - * All rights reserved. - * - * This package is an SSL implementation written - * by Eric Young (eay@cryptsoft.com). - * The implementation was written so as to conform with Netscapes SSL. - * - * This library is free for commercial and non-commercial use as long as - * the following conditions are aheared to. The following conditions - * apply to all code found in this distribution, be it the RC4, RSA, - * lhash, DES, etc., code; not just the SSL code. The SSL documentation - * included with this distribution is covered by the same copyright terms - * except that the holder is Tim Hudson (tjh@cryptsoft.com). - * - * Copyright remains Eric Young's, and as such any Copyright notices in - * the code are not to be removed. - * If this package is used in a product, Eric Young should be given attribution - * as the author of the parts of the library used. - * This can be in the form of a textual message at program startup or - * in documentation (online or textual) provided with the package. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * "This product includes cryptographic software written by - * Eric Young (eay@cryptsoft.com)" - * The word 'cryptographic' can be left out if the rouines from the library - * being used are not cryptographic related :-). - * 4. If you include any Windows specific code (or a derivative thereof) from - * the apps directory (application code) you must include an acknowledgement: - * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" - * - * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * The licence and distribution terms for any publically available version or - * derivative of this code cannot be changed. i.e. this code cannot simply be - * copied and put under another distribution licence - * [including the GNU Public Licence.] - */ - -#ifndef HEADER_X509_H -# include -/* - * openssl/x509.h ends up #include-ing this file at about the only - * appropriate moment. - */ -#endif - -#ifndef HEADER_X509_VFY_H -# define HEADER_X509_VFY_H - -# include -# ifndef OPENSSL_NO_LHASH -# include -# endif -# include -# include -# include - -#ifdef __cplusplus -extern "C" { -#endif - -# if 0 -/* Outer object */ -typedef struct x509_hash_dir_st { - int num_dirs; - char **dirs; - int *dirs_type; - int num_dirs_alloced; -} X509_HASH_DIR_CTX; -# endif - -typedef struct x509_file_st { - int num_paths; /* number of paths to files or directories */ - int num_alloced; - char **paths; /* the list of paths or directories */ - int *path_type; -} X509_CERT_FILE_CTX; - -/*******************************/ -/*- -SSL_CTX -> X509_STORE - -> X509_LOOKUP - ->X509_LOOKUP_METHOD - -> X509_LOOKUP - ->X509_LOOKUP_METHOD - -SSL -> X509_STORE_CTX - ->X509_STORE - -The X509_STORE holds the tables etc for verification stuff. -A X509_STORE_CTX is used while validating a single certificate. -The X509_STORE has X509_LOOKUPs for looking up certs. -The X509_STORE then calls a function to actually verify the -certificate chain. -*/ - -# define X509_LU_RETRY -1 -# define X509_LU_FAIL 0 -# define X509_LU_X509 1 -# define X509_LU_CRL 2 -# define X509_LU_PKEY 3 - -typedef struct x509_object_st { - /* one of the above types */ - int type; - union { - char *ptr; - X509 *x509; - X509_CRL *crl; - EVP_PKEY *pkey; - } data; -} X509_OBJECT; - -typedef struct x509_lookup_st X509_LOOKUP; - -DECLARE_STACK_OF(X509_LOOKUP) -DECLARE_STACK_OF(X509_OBJECT) - -/* This is a static that defines the function interface */ -typedef struct x509_lookup_method_st { - const char *name; - int (*new_item) (X509_LOOKUP *ctx); - void (*free) (X509_LOOKUP *ctx); - int (*init) (X509_LOOKUP *ctx); - int (*shutdown) (X509_LOOKUP *ctx); - int (*ctrl) (X509_LOOKUP *ctx, int cmd, const char *argc, long argl, - char **ret); - int (*get_by_subject) (X509_LOOKUP *ctx, int type, X509_NAME *name, - X509_OBJECT *ret); - int (*get_by_issuer_serial) (X509_LOOKUP *ctx, int type, X509_NAME *name, - ASN1_INTEGER *serial, X509_OBJECT *ret); - int (*get_by_fingerprint) (X509_LOOKUP *ctx, int type, - unsigned char *bytes, int len, - X509_OBJECT *ret); - int (*get_by_alias) (X509_LOOKUP *ctx, int type, char *str, int len, - X509_OBJECT *ret); -} X509_LOOKUP_METHOD; - -typedef struct X509_VERIFY_PARAM_ID_st X509_VERIFY_PARAM_ID; - -/* - * This structure hold all parameters associated with a verify operation by - * including an X509_VERIFY_PARAM structure in related structures the - * parameters used can be customized - */ - -typedef struct X509_VERIFY_PARAM_st { - char *name; - time_t check_time; /* Time to use */ - unsigned long inh_flags; /* Inheritance flags */ - unsigned long flags; /* Various verify flags */ - int purpose; /* purpose to check untrusted certificates */ - int trust; /* trust setting to check */ - int depth; /* Verify depth */ - STACK_OF(ASN1_OBJECT) *policies; /* Permissible policies */ - X509_VERIFY_PARAM_ID *id; /* opaque ID data */ -} X509_VERIFY_PARAM; - -DECLARE_STACK_OF(X509_VERIFY_PARAM) - -/* - * This is used to hold everything. It is used for all certificate - * validation. Once we have a certificate chain, the 'verify' function is - * then called to actually check the cert chain. - */ -struct x509_store_st { - /* The following is a cache of trusted certs */ - int cache; /* if true, stash any hits */ - STACK_OF(X509_OBJECT) *objs; /* Cache of all objects */ - /* These are external lookup methods */ - STACK_OF(X509_LOOKUP) *get_cert_methods; - X509_VERIFY_PARAM *param; - /* Callbacks for various operations */ - /* called to verify a certificate */ - int (*verify) (X509_STORE_CTX *ctx); - /* error callback */ - int (*verify_cb) (int ok, X509_STORE_CTX *ctx); - /* get issuers cert from ctx */ - int (*get_issuer) (X509 **issuer, X509_STORE_CTX *ctx, X509 *x); - /* check issued */ - int (*check_issued) (X509_STORE_CTX *ctx, X509 *x, X509 *issuer); - /* Check revocation status of chain */ - int (*check_revocation) (X509_STORE_CTX *ctx); - /* retrieve CRL */ - int (*get_crl) (X509_STORE_CTX *ctx, X509_CRL **crl, X509 *x); - /* Check CRL validity */ - int (*check_crl) (X509_STORE_CTX *ctx, X509_CRL *crl); - /* Check certificate against CRL */ - int (*cert_crl) (X509_STORE_CTX *ctx, X509_CRL *crl, X509 *x); - STACK_OF(X509) *(*lookup_certs) (X509_STORE_CTX *ctx, X509_NAME *nm); - STACK_OF(X509_CRL) *(*lookup_crls) (X509_STORE_CTX *ctx, X509_NAME *nm); - int (*cleanup) (X509_STORE_CTX *ctx); - CRYPTO_EX_DATA ex_data; - int references; -} /* X509_STORE */ ; - -int X509_STORE_set_depth(X509_STORE *store, int depth); - -# define X509_STORE_set_verify_cb_func(ctx,func) ((ctx)->verify_cb=(func)) -# define X509_STORE_set_verify_func(ctx,func) ((ctx)->verify=(func)) - -/* This is the functions plus an instance of the local variables. */ -struct x509_lookup_st { - int init; /* have we been started */ - int skip; /* don't use us. */ - X509_LOOKUP_METHOD *method; /* the functions */ - char *method_data; /* method data */ - X509_STORE *store_ctx; /* who owns us */ -} /* X509_LOOKUP */ ; - -/* - * This is a used when verifying cert chains. Since the gathering of the - * cert chain can take some time (and have to be 'retried', this needs to be - * kept and passed around. - */ -struct x509_store_ctx_st { /* X509_STORE_CTX */ - X509_STORE *ctx; - /* used when looking up certs */ - int current_method; - /* The following are set by the caller */ - /* The cert to check */ - X509 *cert; - /* chain of X509s - untrusted - passed in */ - STACK_OF(X509) *untrusted; - /* set of CRLs passed in */ - STACK_OF(X509_CRL) *crls; - X509_VERIFY_PARAM *param; - /* Other info for use with get_issuer() */ - void *other_ctx; - /* Callbacks for various operations */ - /* called to verify a certificate */ - int (*verify) (X509_STORE_CTX *ctx); - /* error callback */ - int (*verify_cb) (int ok, X509_STORE_CTX *ctx); - /* get issuers cert from ctx */ - int (*get_issuer) (X509 **issuer, X509_STORE_CTX *ctx, X509 *x); - /* check issued */ - int (*check_issued) (X509_STORE_CTX *ctx, X509 *x, X509 *issuer); - /* Check revocation status of chain */ - int (*check_revocation) (X509_STORE_CTX *ctx); - /* retrieve CRL */ - int (*get_crl) (X509_STORE_CTX *ctx, X509_CRL **crl, X509 *x); - /* Check CRL validity */ - int (*check_crl) (X509_STORE_CTX *ctx, X509_CRL *crl); - /* Check certificate against CRL */ - int (*cert_crl) (X509_STORE_CTX *ctx, X509_CRL *crl, X509 *x); - int (*check_policy) (X509_STORE_CTX *ctx); - STACK_OF(X509) *(*lookup_certs) (X509_STORE_CTX *ctx, X509_NAME *nm); - STACK_OF(X509_CRL) *(*lookup_crls) (X509_STORE_CTX *ctx, X509_NAME *nm); - int (*cleanup) (X509_STORE_CTX *ctx); - /* The following is built up */ - /* if 0, rebuild chain */ - int valid; - /* index of last untrusted cert */ - int last_untrusted; - /* chain of X509s - built up and trusted */ - STACK_OF(X509) *chain; - /* Valid policy tree */ - X509_POLICY_TREE *tree; - /* Require explicit policy value */ - int explicit_policy; - /* When something goes wrong, this is why */ - int error_depth; - int error; - X509 *current_cert; - /* cert currently being tested as valid issuer */ - X509 *current_issuer; - /* current CRL */ - X509_CRL *current_crl; - /* score of current CRL */ - int current_crl_score; - /* Reason mask */ - unsigned int current_reasons; - /* For CRL path validation: parent context */ - X509_STORE_CTX *parent; - CRYPTO_EX_DATA ex_data; -} /* X509_STORE_CTX */ ; - -void X509_STORE_CTX_set_depth(X509_STORE_CTX *ctx, int depth); - -# define X509_STORE_CTX_set_app_data(ctx,data) \ - X509_STORE_CTX_set_ex_data(ctx,0,data) -# define X509_STORE_CTX_get_app_data(ctx) \ - X509_STORE_CTX_get_ex_data(ctx,0) - -# define X509_L_FILE_LOAD 1 -# define X509_L_ADD_DIR 2 - -# define X509_LOOKUP_load_file(x,name,type) \ - X509_LOOKUP_ctrl((x),X509_L_FILE_LOAD,(name),(long)(type),NULL) - -# define X509_LOOKUP_add_dir(x,name,type) \ - X509_LOOKUP_ctrl((x),X509_L_ADD_DIR,(name),(long)(type),NULL) - -# define X509_V_OK 0 -/* illegal error (for uninitialized values, to avoid X509_V_OK): 1 */ - -# define X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT 2 -# define X509_V_ERR_UNABLE_TO_GET_CRL 3 -# define X509_V_ERR_UNABLE_TO_DECRYPT_CERT_SIGNATURE 4 -# define X509_V_ERR_UNABLE_TO_DECRYPT_CRL_SIGNATURE 5 -# define X509_V_ERR_UNABLE_TO_DECODE_ISSUER_PUBLIC_KEY 6 -# define X509_V_ERR_CERT_SIGNATURE_FAILURE 7 -# define X509_V_ERR_CRL_SIGNATURE_FAILURE 8 -# define X509_V_ERR_CERT_NOT_YET_VALID 9 -# define X509_V_ERR_CERT_HAS_EXPIRED 10 -# define X509_V_ERR_CRL_NOT_YET_VALID 11 -# define X509_V_ERR_CRL_HAS_EXPIRED 12 -# define X509_V_ERR_ERROR_IN_CERT_NOT_BEFORE_FIELD 13 -# define X509_V_ERR_ERROR_IN_CERT_NOT_AFTER_FIELD 14 -# define X509_V_ERR_ERROR_IN_CRL_LAST_UPDATE_FIELD 15 -# define X509_V_ERR_ERROR_IN_CRL_NEXT_UPDATE_FIELD 16 -# define X509_V_ERR_OUT_OF_MEM 17 -# define X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT 18 -# define X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN 19 -# define X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY 20 -# define X509_V_ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE 21 -# define X509_V_ERR_CERT_CHAIN_TOO_LONG 22 -# define X509_V_ERR_CERT_REVOKED 23 -# define X509_V_ERR_INVALID_CA 24 -# define X509_V_ERR_PATH_LENGTH_EXCEEDED 25 -# define X509_V_ERR_INVALID_PURPOSE 26 -# define X509_V_ERR_CERT_UNTRUSTED 27 -# define X509_V_ERR_CERT_REJECTED 28 -/* These are 'informational' when looking for issuer cert */ -# define X509_V_ERR_SUBJECT_ISSUER_MISMATCH 29 -# define X509_V_ERR_AKID_SKID_MISMATCH 30 -# define X509_V_ERR_AKID_ISSUER_SERIAL_MISMATCH 31 -# define X509_V_ERR_KEYUSAGE_NO_CERTSIGN 32 - -# define X509_V_ERR_UNABLE_TO_GET_CRL_ISSUER 33 -# define X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION 34 -# define X509_V_ERR_KEYUSAGE_NO_CRL_SIGN 35 -# define X509_V_ERR_UNHANDLED_CRITICAL_CRL_EXTENSION 36 -# define X509_V_ERR_INVALID_NON_CA 37 -# define X509_V_ERR_PROXY_PATH_LENGTH_EXCEEDED 38 -# define X509_V_ERR_KEYUSAGE_NO_DIGITAL_SIGNATURE 39 -# define X509_V_ERR_PROXY_CERTIFICATES_NOT_ALLOWED 40 - -# define X509_V_ERR_INVALID_EXTENSION 41 -# define X509_V_ERR_INVALID_POLICY_EXTENSION 42 -# define X509_V_ERR_NO_EXPLICIT_POLICY 43 -# define X509_V_ERR_DIFFERENT_CRL_SCOPE 44 -# define X509_V_ERR_UNSUPPORTED_EXTENSION_FEATURE 45 - -# define X509_V_ERR_UNNESTED_RESOURCE 46 - -# define X509_V_ERR_PERMITTED_VIOLATION 47 -# define X509_V_ERR_EXCLUDED_VIOLATION 48 -# define X509_V_ERR_SUBTREE_MINMAX 49 -# define X509_V_ERR_UNSUPPORTED_CONSTRAINT_TYPE 51 -# define X509_V_ERR_UNSUPPORTED_CONSTRAINT_SYNTAX 52 -# define X509_V_ERR_UNSUPPORTED_NAME_SYNTAX 53 -# define X509_V_ERR_CRL_PATH_VALIDATION_ERROR 54 - -/* Suite B mode algorithm violation */ -# define X509_V_ERR_SUITE_B_INVALID_VERSION 56 -# define X509_V_ERR_SUITE_B_INVALID_ALGORITHM 57 -# define X509_V_ERR_SUITE_B_INVALID_CURVE 58 -# define X509_V_ERR_SUITE_B_INVALID_SIGNATURE_ALGORITHM 59 -# define X509_V_ERR_SUITE_B_LOS_NOT_ALLOWED 60 -# define X509_V_ERR_SUITE_B_CANNOT_SIGN_P_384_WITH_P_256 61 - -/* Host, email and IP check errors */ -# define X509_V_ERR_HOSTNAME_MISMATCH 62 -# define X509_V_ERR_EMAIL_MISMATCH 63 -# define X509_V_ERR_IP_ADDRESS_MISMATCH 64 - -/* The application is not happy */ -# define X509_V_ERR_APPLICATION_VERIFICATION 50 - -/* Certificate verify flags */ - -/* Send issuer+subject checks to verify_cb */ -# define X509_V_FLAG_CB_ISSUER_CHECK 0x1 -/* Use check time instead of current time */ -# define X509_V_FLAG_USE_CHECK_TIME 0x2 -/* Lookup CRLs */ -# define X509_V_FLAG_CRL_CHECK 0x4 -/* Lookup CRLs for whole chain */ -# define X509_V_FLAG_CRL_CHECK_ALL 0x8 -/* Ignore unhandled critical extensions */ -# define X509_V_FLAG_IGNORE_CRITICAL 0x10 -/* Disable workarounds for broken certificates */ -# define X509_V_FLAG_X509_STRICT 0x20 -/* Enable proxy certificate validation */ -# define X509_V_FLAG_ALLOW_PROXY_CERTS 0x40 -/* Enable policy checking */ -# define X509_V_FLAG_POLICY_CHECK 0x80 -/* Policy variable require-explicit-policy */ -# define X509_V_FLAG_EXPLICIT_POLICY 0x100 -/* Policy variable inhibit-any-policy */ -# define X509_V_FLAG_INHIBIT_ANY 0x200 -/* Policy variable inhibit-policy-mapping */ -# define X509_V_FLAG_INHIBIT_MAP 0x400 -/* Notify callback that policy is OK */ -# define X509_V_FLAG_NOTIFY_POLICY 0x800 -/* Extended CRL features such as indirect CRLs, alternate CRL signing keys */ -# define X509_V_FLAG_EXTENDED_CRL_SUPPORT 0x1000 -/* Delta CRL support */ -# define X509_V_FLAG_USE_DELTAS 0x2000 -/* Check selfsigned CA signature */ -# define X509_V_FLAG_CHECK_SS_SIGNATURE 0x4000 -/* Use trusted store first */ -# define X509_V_FLAG_TRUSTED_FIRST 0x8000 -/* Suite B 128 bit only mode: not normally used */ -# define X509_V_FLAG_SUITEB_128_LOS_ONLY 0x10000 -/* Suite B 192 bit only mode */ -# define X509_V_FLAG_SUITEB_192_LOS 0x20000 -/* Suite B 128 bit mode allowing 192 bit algorithms */ -# define X509_V_FLAG_SUITEB_128_LOS 0x30000 - -/* Allow partial chains if at least one certificate is in trusted store */ -# define X509_V_FLAG_PARTIAL_CHAIN 0x80000 - -# define X509_VP_FLAG_DEFAULT 0x1 -# define X509_VP_FLAG_OVERWRITE 0x2 -# define X509_VP_FLAG_RESET_FLAGS 0x4 -# define X509_VP_FLAG_LOCKED 0x8 -# define X509_VP_FLAG_ONCE 0x10 - -/* Internal use: mask of policy related options */ -# define X509_V_FLAG_POLICY_MASK (X509_V_FLAG_POLICY_CHECK \ - | X509_V_FLAG_EXPLICIT_POLICY \ - | X509_V_FLAG_INHIBIT_ANY \ - | X509_V_FLAG_INHIBIT_MAP) - -int X509_OBJECT_idx_by_subject(STACK_OF(X509_OBJECT) *h, int type, - X509_NAME *name); -X509_OBJECT *X509_OBJECT_retrieve_by_subject(STACK_OF(X509_OBJECT) *h, - int type, X509_NAME *name); -X509_OBJECT *X509_OBJECT_retrieve_match(STACK_OF(X509_OBJECT) *h, - X509_OBJECT *x); -void X509_OBJECT_up_ref_count(X509_OBJECT *a); -void X509_OBJECT_free_contents(X509_OBJECT *a); -X509_STORE *X509_STORE_new(void); -void X509_STORE_free(X509_STORE *v); - -STACK_OF(X509) *X509_STORE_get1_certs(X509_STORE_CTX *st, X509_NAME *nm); -STACK_OF(X509_CRL) *X509_STORE_get1_crls(X509_STORE_CTX *st, X509_NAME *nm); -int X509_STORE_set_flags(X509_STORE *ctx, unsigned long flags); -int X509_STORE_set_purpose(X509_STORE *ctx, int purpose); -int X509_STORE_set_trust(X509_STORE *ctx, int trust); -int X509_STORE_set1_param(X509_STORE *ctx, X509_VERIFY_PARAM *pm); - -void X509_STORE_set_verify_cb(X509_STORE *ctx, - int (*verify_cb) (int, X509_STORE_CTX *)); - -void X509_STORE_set_lookup_crls_cb(X509_STORE *ctx, - STACK_OF(X509_CRL) *(*cb) (X509_STORE_CTX - *ctx, - X509_NAME *nm)); - -X509_STORE_CTX *X509_STORE_CTX_new(void); - -int X509_STORE_CTX_get1_issuer(X509 **issuer, X509_STORE_CTX *ctx, X509 *x); - -void X509_STORE_CTX_free(X509_STORE_CTX *ctx); -int X509_STORE_CTX_init(X509_STORE_CTX *ctx, X509_STORE *store, - X509 *x509, STACK_OF(X509) *chain); -void X509_STORE_CTX_trusted_stack(X509_STORE_CTX *ctx, STACK_OF(X509) *sk); -void X509_STORE_CTX_cleanup(X509_STORE_CTX *ctx); - -X509_STORE *X509_STORE_CTX_get0_store(X509_STORE_CTX *ctx); - -X509_LOOKUP *X509_STORE_add_lookup(X509_STORE *v, X509_LOOKUP_METHOD *m); - -X509_LOOKUP_METHOD *X509_LOOKUP_hash_dir(void); -X509_LOOKUP_METHOD *X509_LOOKUP_file(void); - -int X509_STORE_add_cert(X509_STORE *ctx, X509 *x); -int X509_STORE_add_crl(X509_STORE *ctx, X509_CRL *x); - -int X509_STORE_get_by_subject(X509_STORE_CTX *vs, int type, X509_NAME *name, - X509_OBJECT *ret); - -int X509_LOOKUP_ctrl(X509_LOOKUP *ctx, int cmd, const char *argc, - long argl, char **ret); - -# ifndef OPENSSL_NO_STDIO -int X509_load_cert_file(X509_LOOKUP *ctx, const char *file, int type); -int X509_load_crl_file(X509_LOOKUP *ctx, const char *file, int type); -int X509_load_cert_crl_file(X509_LOOKUP *ctx, const char *file, int type); -# endif - -X509_LOOKUP *X509_LOOKUP_new(X509_LOOKUP_METHOD *method); -void X509_LOOKUP_free(X509_LOOKUP *ctx); -int X509_LOOKUP_init(X509_LOOKUP *ctx); -int X509_LOOKUP_by_subject(X509_LOOKUP *ctx, int type, X509_NAME *name, - X509_OBJECT *ret); -int X509_LOOKUP_by_issuer_serial(X509_LOOKUP *ctx, int type, X509_NAME *name, - ASN1_INTEGER *serial, X509_OBJECT *ret); -int X509_LOOKUP_by_fingerprint(X509_LOOKUP *ctx, int type, - unsigned char *bytes, int len, - X509_OBJECT *ret); -int X509_LOOKUP_by_alias(X509_LOOKUP *ctx, int type, char *str, int len, - X509_OBJECT *ret); -int X509_LOOKUP_shutdown(X509_LOOKUP *ctx); - -# ifndef OPENSSL_NO_STDIO -int X509_STORE_load_locations(X509_STORE *ctx, - const char *file, const char *dir); -int X509_STORE_set_default_paths(X509_STORE *ctx); -# endif - -int X509_STORE_CTX_get_ex_new_index(long argl, void *argp, - CRYPTO_EX_new *new_func, - CRYPTO_EX_dup *dup_func, - CRYPTO_EX_free *free_func); -int X509_STORE_CTX_set_ex_data(X509_STORE_CTX *ctx, int idx, void *data); -void *X509_STORE_CTX_get_ex_data(X509_STORE_CTX *ctx, int idx); -int X509_STORE_CTX_get_error(X509_STORE_CTX *ctx); -void X509_STORE_CTX_set_error(X509_STORE_CTX *ctx, int s); -int X509_STORE_CTX_get_error_depth(X509_STORE_CTX *ctx); -X509 *X509_STORE_CTX_get_current_cert(X509_STORE_CTX *ctx); -X509 *X509_STORE_CTX_get0_current_issuer(X509_STORE_CTX *ctx); -X509_CRL *X509_STORE_CTX_get0_current_crl(X509_STORE_CTX *ctx); -X509_STORE_CTX *X509_STORE_CTX_get0_parent_ctx(X509_STORE_CTX *ctx); -STACK_OF(X509) *X509_STORE_CTX_get_chain(X509_STORE_CTX *ctx); -STACK_OF(X509) *X509_STORE_CTX_get1_chain(X509_STORE_CTX *ctx); -void X509_STORE_CTX_set_cert(X509_STORE_CTX *c, X509 *x); -void X509_STORE_CTX_set_chain(X509_STORE_CTX *c, STACK_OF(X509) *sk); -void X509_STORE_CTX_set0_crls(X509_STORE_CTX *c, STACK_OF(X509_CRL) *sk); -int X509_STORE_CTX_set_purpose(X509_STORE_CTX *ctx, int purpose); -int X509_STORE_CTX_set_trust(X509_STORE_CTX *ctx, int trust); -int X509_STORE_CTX_purpose_inherit(X509_STORE_CTX *ctx, int def_purpose, - int purpose, int trust); -void X509_STORE_CTX_set_flags(X509_STORE_CTX *ctx, unsigned long flags); -void X509_STORE_CTX_set_time(X509_STORE_CTX *ctx, unsigned long flags, - time_t t); -void X509_STORE_CTX_set_verify_cb(X509_STORE_CTX *ctx, - int (*verify_cb) (int, X509_STORE_CTX *)); - -X509_POLICY_TREE *X509_STORE_CTX_get0_policy_tree(X509_STORE_CTX *ctx); -int X509_STORE_CTX_get_explicit_policy(X509_STORE_CTX *ctx); - -X509_VERIFY_PARAM *X509_STORE_CTX_get0_param(X509_STORE_CTX *ctx); -void X509_STORE_CTX_set0_param(X509_STORE_CTX *ctx, X509_VERIFY_PARAM *param); -int X509_STORE_CTX_set_default(X509_STORE_CTX *ctx, const char *name); - -/* X509_VERIFY_PARAM functions */ - -X509_VERIFY_PARAM *X509_VERIFY_PARAM_new(void); -void X509_VERIFY_PARAM_free(X509_VERIFY_PARAM *param); -int X509_VERIFY_PARAM_inherit(X509_VERIFY_PARAM *to, - const X509_VERIFY_PARAM *from); -int X509_VERIFY_PARAM_set1(X509_VERIFY_PARAM *to, - const X509_VERIFY_PARAM *from); -int X509_VERIFY_PARAM_set1_name(X509_VERIFY_PARAM *param, const char *name); -int X509_VERIFY_PARAM_set_flags(X509_VERIFY_PARAM *param, - unsigned long flags); -int X509_VERIFY_PARAM_clear_flags(X509_VERIFY_PARAM *param, - unsigned long flags); -unsigned long X509_VERIFY_PARAM_get_flags(X509_VERIFY_PARAM *param); -int X509_VERIFY_PARAM_set_purpose(X509_VERIFY_PARAM *param, int purpose); -int X509_VERIFY_PARAM_set_trust(X509_VERIFY_PARAM *param, int trust); -void X509_VERIFY_PARAM_set_depth(X509_VERIFY_PARAM *param, int depth); -void X509_VERIFY_PARAM_set_time(X509_VERIFY_PARAM *param, time_t t); -int X509_VERIFY_PARAM_add0_policy(X509_VERIFY_PARAM *param, - ASN1_OBJECT *policy); -int X509_VERIFY_PARAM_set1_policies(X509_VERIFY_PARAM *param, - STACK_OF(ASN1_OBJECT) *policies); - -int X509_VERIFY_PARAM_set1_host(X509_VERIFY_PARAM *param, - const char *name, size_t namelen); -int X509_VERIFY_PARAM_add1_host(X509_VERIFY_PARAM *param, - const char *name, size_t namelen); -void X509_VERIFY_PARAM_set_hostflags(X509_VERIFY_PARAM *param, - unsigned int flags); -char *X509_VERIFY_PARAM_get0_peername(X509_VERIFY_PARAM *); -int X509_VERIFY_PARAM_set1_email(X509_VERIFY_PARAM *param, - const char *email, size_t emaillen); -int X509_VERIFY_PARAM_set1_ip(X509_VERIFY_PARAM *param, - const unsigned char *ip, size_t iplen); -int X509_VERIFY_PARAM_set1_ip_asc(X509_VERIFY_PARAM *param, - const char *ipasc); - -int X509_VERIFY_PARAM_get_depth(const X509_VERIFY_PARAM *param); -const char *X509_VERIFY_PARAM_get0_name(const X509_VERIFY_PARAM *param); - -int X509_VERIFY_PARAM_add0_table(X509_VERIFY_PARAM *param); -int X509_VERIFY_PARAM_get_count(void); -const X509_VERIFY_PARAM *X509_VERIFY_PARAM_get0(int id); -const X509_VERIFY_PARAM *X509_VERIFY_PARAM_lookup(const char *name); -void X509_VERIFY_PARAM_table_cleanup(void); - -int X509_policy_check(X509_POLICY_TREE **ptree, int *pexplicit_policy, - STACK_OF(X509) *certs, - STACK_OF(ASN1_OBJECT) *policy_oids, unsigned int flags); - -void X509_policy_tree_free(X509_POLICY_TREE *tree); - -int X509_policy_tree_level_count(const X509_POLICY_TREE *tree); -X509_POLICY_LEVEL *X509_policy_tree_get0_level(const X509_POLICY_TREE *tree, - int i); - -STACK_OF(X509_POLICY_NODE) *X509_policy_tree_get0_policies(const - X509_POLICY_TREE - *tree); - -STACK_OF(X509_POLICY_NODE) *X509_policy_tree_get0_user_policies(const - X509_POLICY_TREE - *tree); - -int X509_policy_level_node_count(X509_POLICY_LEVEL *level); - -X509_POLICY_NODE *X509_policy_level_get0_node(X509_POLICY_LEVEL *level, - int i); - -const ASN1_OBJECT *X509_policy_node_get0_policy(const X509_POLICY_NODE *node); - -STACK_OF(POLICYQUALINFO) *X509_policy_node_get0_qualifiers(const - X509_POLICY_NODE - *node); -const X509_POLICY_NODE *X509_policy_node_get0_parent(const X509_POLICY_NODE - *node); - -#ifdef __cplusplus -} -#endif -#endif diff --git a/ext/openssl-win32/out32dll/libeay32.dll b/ext/openssl-win32/out32dll/libeay32.dll deleted file mode 100644 index 135d44d76d654fd98f5779285fab0392835c0cdc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1265664 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 z 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 z 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 z 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

*xJbLtH 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

&)#6pfkV6DMdU$(ov;rHlAfR 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

b9n0oMe5GX{DpM7S_N;w5vYFxk(3! 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℘s_J)rVWNM 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Ȳ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

;Iib=ZQ>U0m#%rjxs7 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

ljG@Ur6@OuJ%lP&R7M`1Or5GM6=9m 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 z z&=8uDV(5tblt^}PFxz5d=!r?eD>h3|8`q&VZVNQ!!>G#VyvrmxZ-d32k%EsU1D_oQ zvJm{cEY7q>;;|AcWZgG=Af3<`dZRE5^+%E#o5FXU!<1QyBDKNaOd4X3e}F{9DV*vn zc$2AYXEEj2NsHmXkWES*by6f~@}W$YLYIu7N_t@1T2g)3YAbw+&LF_P(m?hZM!{XD z@xH=5eC*}q?>9;*yyhm}oBE$u{qEsnybN|s;$R>J!o^SmL_YsNZ~8S1H$y)XFZv~t zF&!Md=QjyGX;ydvSxxc&-4A3gcC+tym~F9h_&C?W4-dGhp-5~bGn*-S$Z?g3l#NJi zJUNj{?Az8Q)72u_vmsE@_XJw{DPE1cLgp(Kr2Ybb zRlL*@FXsclmXgbXvkdY*RpeUiwKS1ip|^HsYd~ZR-I{6Q|@-3Mj>JXUi)JspSN6%XO57L8iSUog$H~wZZg@F+rww z7QX!wy5%}v9NPwS*cbTs=g@Yqvlsk;{uzP^WhP^mhYV2(+;JuOUAm;;Y7M}`kqfk(V50gequVvNZNtP5rPb$Yw zjuGSlYLRtr0>A3O8wNc|&JW}r1K~$bBX2nmJiQ!5y%7yzC%Y4ef^5=7oSa*9wkIeF zF(ggn$eI?=i-E4o>xyoXwy#ENpds^AynxY_EvtUGJ)i4i$S@`8vv~1j37bCa^dE5E zc9Us39K85)nLX3nnzIBSrbE5f^F<;cDm>=ISM38{~F-HLbr zI`iIAUy@S8cz0+5eK^^iXD%Y~zZQ2S1ufwh)P&=tnlG|I7WlGM>$C9GhqCV*SU(FBBv+B=lJ^`VS|7+K~C!Pdk)81iz`xguS^leaDpp_QNU zFM?BVkxzvOt%XB~2atK6Fte0B$bXcO%7R=q9G^;34c;phDKxR&*&S`DKUw^dBtxbI znZ?&TH5vo`)9XMpM_@=Lq;|(k}FbxebO>P2L1Ks zU!6!p6rwh0L|sAC{esQwF_B3irCGddu!N1}b-~*ryV0)?gS5}_%ESN9~8s z`nfs=pH-xK7l3S5lG*qn*e~BlLj43Uz+7fG^>&b|3ZcekMvu)yx~7CymOUg5>{E&C zZ`~l7-wsu%J2UeyRq#* zft{tbya#qrKgqjTmx6b(gic$W?5Bk*B(_o8v7g`5=*v5zqv?igNcn9iA#w<>=oU`; zzp#MZB;m`0FOI>d3du`BL7l@cU9W)ictUHz0^5mk2a8jIRNLmf}fq4H&RQGgLcRvH6m%& zodkz?8+8tU^#;`61J)@L1*z5xG6nH=5xX2d8vl+Wv7tQtBh`E0DfEd0yeUHxS={qb zX8s{u-cbG6zzgZj%}xY2^_K>NoJNw-pTPZ20zJ*a?OjA(ekBNM11}wY5H5-_XnV<7oe&1;mkM%@$8Wn;MSJ_Qp1(U=U_!wz+1P%sUWT= zBxpjBm`Hk1S6n0>+*Ke_1msnQZF30@V1T|7aC&P*>hS(wBf3N@Fjz;j|J&LAI)KBO z%HG!txsa=Mq8n{b4}EP}s)s9@-T41(KO}PwXq;@dx<(F=W2t!Qvtb zs*vAsz~WVy7InP(fjaR&S&sg}i#a2~JiWh5{`giqFt3DS`XlE}93U?#{ICP4D(tT;evP4~psuDHzg7k@~C{a(MnnW#$N)mM>sz}t3s34I@5fvorM^ulf9Z@-= zZba3Hnh_Nv>P1wGs1;EuqE1AWh#C3`wDC zeqn|jXNFv4hTNiho=`n8%#b){hM%o^F+(~sLlT)GgUNP@Ey5&b z$O2}_N@mCp!F%5a@FGr;m%KvqAeHRF3zU-du=jZ0-6_IWA*cMm|NGw)_}>%wzdV8e E2i9mttN;K2 diff --git a/ext/openssl-win32/out32dll/ssleay32.dll b/ext/openssl-win32/out32dll/ssleay32.dll deleted file mode 100644 index db49ae6c8e4119b607647ebb5dcdd77f51c9e7c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 293376 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 diff --git a/ext/openssl-win64/inc32/openssl/asn1.h b/ext/openssl-win64/inc32/openssl/asn1.h deleted file mode 100644 index bb6ac95b..00000000 --- a/ext/openssl-win64/inc32/openssl/asn1.h +++ /dev/null @@ -1,1418 +0,0 @@ -/* crypto/asn1/asn1.h */ -/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) - * All rights reserved. - * - * This package is an SSL implementation written - * by Eric Young (eay@cryptsoft.com). - * The implementation was written so as to conform with Netscapes SSL. - * - * This library is free for commercial and non-commercial use as long as - * the following conditions are aheared to. The following conditions - * apply to all code found in this distribution, be it the RC4, RSA, - * lhash, DES, etc., code; not just the SSL code. The SSL documentation - * included with this distribution is covered by the same copyright terms - * except that the holder is Tim Hudson (tjh@cryptsoft.com). - * - * Copyright remains Eric Young's, and as such any Copyright notices in - * the code are not to be removed. - * If this package is used in a product, Eric Young should be given attribution - * as the author of the parts of the library used. - * This can be in the form of a textual message at program startup or - * in documentation (online or textual) provided with the package. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * "This product includes cryptographic software written by - * Eric Young (eay@cryptsoft.com)" - * The word 'cryptographic' can be left out if the rouines from the library - * being used are not cryptographic related :-). - * 4. If you include any Windows specific code (or a derivative thereof) from - * the apps directory (application code) you must include an acknowledgement: - * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" - * - * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * The licence and distribution terms for any publically available version or - * derivative of this code cannot be changed. i.e. this code cannot simply be - * copied and put under another distribution licence - * [including the GNU Public Licence.] - */ - -#ifndef HEADER_ASN1_H -# define HEADER_ASN1_H - -# include -# include -# ifndef OPENSSL_NO_BIO -# include -# endif -# include -# include - -# include - -# include -# ifndef OPENSSL_NO_DEPRECATED -# include -# endif - -# ifdef OPENSSL_BUILD_SHLIBCRYPTO -# undef OPENSSL_EXTERN -# define OPENSSL_EXTERN OPENSSL_EXPORT -# endif - -#ifdef __cplusplus -extern "C" { -#endif - -# define V_ASN1_UNIVERSAL 0x00 -# define V_ASN1_APPLICATION 0x40 -# define V_ASN1_CONTEXT_SPECIFIC 0x80 -# define V_ASN1_PRIVATE 0xc0 - -# define V_ASN1_CONSTRUCTED 0x20 -# define V_ASN1_PRIMITIVE_TAG 0x1f -# define V_ASN1_PRIMATIVE_TAG 0x1f - -# define V_ASN1_APP_CHOOSE -2/* let the recipient choose */ -# define V_ASN1_OTHER -3/* used in ASN1_TYPE */ -# define V_ASN1_ANY -4/* used in ASN1 template code */ - -# define V_ASN1_NEG 0x100/* negative flag */ - -# define V_ASN1_UNDEF -1 -# define V_ASN1_EOC 0 -# define V_ASN1_BOOLEAN 1 /**/ -# define V_ASN1_INTEGER 2 -# define V_ASN1_NEG_INTEGER (2 | V_ASN1_NEG) -# define V_ASN1_BIT_STRING 3 -# define V_ASN1_OCTET_STRING 4 -# define V_ASN1_NULL 5 -# define V_ASN1_OBJECT 6 -# define V_ASN1_OBJECT_DESCRIPTOR 7 -# define V_ASN1_EXTERNAL 8 -# define V_ASN1_REAL 9 -# define V_ASN1_ENUMERATED 10 -# define V_ASN1_NEG_ENUMERATED (10 | V_ASN1_NEG) -# define V_ASN1_UTF8STRING 12 -# define V_ASN1_SEQUENCE 16 -# define V_ASN1_SET 17 -# define V_ASN1_NUMERICSTRING 18 /**/ -# define V_ASN1_PRINTABLESTRING 19 -# define V_ASN1_T61STRING 20 -# define V_ASN1_TELETEXSTRING 20/* alias */ -# define V_ASN1_VIDEOTEXSTRING 21 /**/ -# define V_ASN1_IA5STRING 22 -# define V_ASN1_UTCTIME 23 -# define V_ASN1_GENERALIZEDTIME 24 /**/ -# define V_ASN1_GRAPHICSTRING 25 /**/ -# define V_ASN1_ISO64STRING 26 /**/ -# define V_ASN1_VISIBLESTRING 26/* alias */ -# define V_ASN1_GENERALSTRING 27 /**/ -# define V_ASN1_UNIVERSALSTRING 28 /**/ -# define V_ASN1_BMPSTRING 30 -/* For use with d2i_ASN1_type_bytes() */ -# define B_ASN1_NUMERICSTRING 0x0001 -# define B_ASN1_PRINTABLESTRING 0x0002 -# define B_ASN1_T61STRING 0x0004 -# define B_ASN1_TELETEXSTRING 0x0004 -# define B_ASN1_VIDEOTEXSTRING 0x0008 -# define B_ASN1_IA5STRING 0x0010 -# define B_ASN1_GRAPHICSTRING 0x0020 -# define B_ASN1_ISO64STRING 0x0040 -# define B_ASN1_VISIBLESTRING 0x0040 -# define B_ASN1_GENERALSTRING 0x0080 -# define B_ASN1_UNIVERSALSTRING 0x0100 -# define B_ASN1_OCTET_STRING 0x0200 -# define B_ASN1_BIT_STRING 0x0400 -# define B_ASN1_BMPSTRING 0x0800 -# define B_ASN1_UNKNOWN 0x1000 -# define B_ASN1_UTF8STRING 0x2000 -# define B_ASN1_UTCTIME 0x4000 -# define B_ASN1_GENERALIZEDTIME 0x8000 -# define B_ASN1_SEQUENCE 0x10000 -/* For use with ASN1_mbstring_copy() */ -# define MBSTRING_FLAG 0x1000 -# define MBSTRING_UTF8 (MBSTRING_FLAG) -# define MBSTRING_ASC (MBSTRING_FLAG|1) -# define MBSTRING_BMP (MBSTRING_FLAG|2) -# define MBSTRING_UNIV (MBSTRING_FLAG|4) -# define SMIME_OLDMIME 0x400 -# define SMIME_CRLFEOL 0x800 -# define SMIME_STREAM 0x1000 - struct X509_algor_st; -DECLARE_STACK_OF(X509_ALGOR) - -# define DECLARE_ASN1_SET_OF(type)/* filled in by mkstack.pl */ -# define IMPLEMENT_ASN1_SET_OF(type)/* nothing, no longer needed */ - -/* - * We MUST make sure that, except for constness, asn1_ctx_st and - * asn1_const_ctx are exactly the same. Fortunately, as soon as the old ASN1 - * parsing macros are gone, we can throw this away as well... - */ -typedef struct asn1_ctx_st { - unsigned char *p; /* work char pointer */ - int eos; /* end of sequence read for indefinite - * encoding */ - int error; /* error code to use when returning an error */ - int inf; /* constructed if 0x20, indefinite is 0x21 */ - int tag; /* tag from last 'get object' */ - int xclass; /* class from last 'get object' */ - long slen; /* length of last 'get object' */ - unsigned char *max; /* largest value of p allowed */ - unsigned char *q; /* temporary variable */ - unsigned char **pp; /* variable */ - int line; /* used in error processing */ -} ASN1_CTX; - -typedef struct asn1_const_ctx_st { - const unsigned char *p; /* work char pointer */ - int eos; /* end of sequence read for indefinite - * encoding */ - int error; /* error code to use when returning an error */ - int inf; /* constructed if 0x20, indefinite is 0x21 */ - int tag; /* tag from last 'get object' */ - int xclass; /* class from last 'get object' */ - long slen; /* length of last 'get object' */ - const unsigned char *max; /* largest value of p allowed */ - const unsigned char *q; /* temporary variable */ - const unsigned char **pp; /* variable */ - int line; /* used in error processing */ -} ASN1_const_CTX; - -/* - * These are used internally in the ASN1_OBJECT to keep track of whether the - * names and data need to be free()ed - */ -# define ASN1_OBJECT_FLAG_DYNAMIC 0x01/* internal use */ -# define ASN1_OBJECT_FLAG_CRITICAL 0x02/* critical x509v3 object id */ -# define ASN1_OBJECT_FLAG_DYNAMIC_STRINGS 0x04/* internal use */ -# define ASN1_OBJECT_FLAG_DYNAMIC_DATA 0x08/* internal use */ -struct asn1_object_st { - const char *sn, *ln; - int nid; - int length; - const unsigned char *data; /* data remains const after init */ - int flags; /* Should we free this one */ -}; - -# define ASN1_STRING_FLAG_BITS_LEFT 0x08/* Set if 0x07 has bits left value */ -/* - * This indicates that the ASN1_STRING is not a real value but just a place - * holder for the location where indefinite length constructed data should be - * inserted in the memory buffer - */ -# define ASN1_STRING_FLAG_NDEF 0x010 - -/* - * This flag is used by the CMS code to indicate that a string is not - * complete and is a place holder for content when it had all been accessed. - * The flag will be reset when content has been written to it. - */ - -# define ASN1_STRING_FLAG_CONT 0x020 -/* - * This flag is used by ASN1 code to indicate an ASN1_STRING is an MSTRING - * type. - */ -# define ASN1_STRING_FLAG_MSTRING 0x040 -/* This is the base type that holds just about everything :-) */ -struct asn1_string_st { - int length; - int type; - unsigned char *data; - /* - * The value of the following field depends on the type being held. It - * is mostly being used for BIT_STRING so if the input data has a - * non-zero 'unused bits' value, it will be handled correctly - */ - long flags; -}; - -/* - * ASN1_ENCODING structure: this is used to save the received encoding of an - * ASN1 type. This is useful to get round problems with invalid encodings - * which can break signatures. - */ - -typedef struct ASN1_ENCODING_st { - unsigned char *enc; /* DER encoding */ - long len; /* Length of encoding */ - int modified; /* set to 1 if 'enc' is invalid */ -} ASN1_ENCODING; - -/* Used with ASN1 LONG type: if a long is set to this it is omitted */ -# define ASN1_LONG_UNDEF 0x7fffffffL - -# define STABLE_FLAGS_MALLOC 0x01 -# define STABLE_NO_MASK 0x02 -# define DIRSTRING_TYPE \ - (B_ASN1_PRINTABLESTRING|B_ASN1_T61STRING|B_ASN1_BMPSTRING|B_ASN1_UTF8STRING) -# define PKCS9STRING_TYPE (DIRSTRING_TYPE|B_ASN1_IA5STRING) - -typedef struct asn1_string_table_st { - int nid; - long minsize; - long maxsize; - unsigned long mask; - unsigned long flags; -} ASN1_STRING_TABLE; - -DECLARE_STACK_OF(ASN1_STRING_TABLE) - -/* size limits: this stuff is taken straight from RFC2459 */ - -# define ub_name 32768 -# define ub_common_name 64 -# define ub_locality_name 128 -# define ub_state_name 128 -# define ub_organization_name 64 -# define ub_organization_unit_name 64 -# define ub_title 64 -# define ub_email_address 128 - -/* - * Declarations for template structures: for full definitions see asn1t.h - */ -typedef struct ASN1_TEMPLATE_st ASN1_TEMPLATE; -typedef struct ASN1_TLC_st ASN1_TLC; -/* This is just an opaque pointer */ -typedef struct ASN1_VALUE_st ASN1_VALUE; - -/* Declare ASN1 functions: the implement macro in in asn1t.h */ - -# define DECLARE_ASN1_FUNCTIONS(type) DECLARE_ASN1_FUNCTIONS_name(type, type) - -# define DECLARE_ASN1_ALLOC_FUNCTIONS(type) \ - DECLARE_ASN1_ALLOC_FUNCTIONS_name(type, type) - -# define DECLARE_ASN1_FUNCTIONS_name(type, name) \ - DECLARE_ASN1_ALLOC_FUNCTIONS_name(type, name) \ - DECLARE_ASN1_ENCODE_FUNCTIONS(type, name, name) - -# define DECLARE_ASN1_FUNCTIONS_fname(type, itname, name) \ - DECLARE_ASN1_ALLOC_FUNCTIONS_name(type, name) \ - DECLARE_ASN1_ENCODE_FUNCTIONS(type, itname, name) - -# define DECLARE_ASN1_ENCODE_FUNCTIONS(type, itname, name) \ - type *d2i_##name(type **a, const unsigned char **in, long len); \ - int i2d_##name(type *a, unsigned char **out); \ - DECLARE_ASN1_ITEM(itname) - -# define DECLARE_ASN1_ENCODE_FUNCTIONS_const(type, name) \ - type *d2i_##name(type **a, const unsigned char **in, long len); \ - int i2d_##name(const type *a, unsigned char **out); \ - DECLARE_ASN1_ITEM(name) - -# define DECLARE_ASN1_NDEF_FUNCTION(name) \ - int i2d_##name##_NDEF(name *a, unsigned char **out); - -# define DECLARE_ASN1_FUNCTIONS_const(name) \ - DECLARE_ASN1_ALLOC_FUNCTIONS(name) \ - DECLARE_ASN1_ENCODE_FUNCTIONS_const(name, name) - -# define DECLARE_ASN1_ALLOC_FUNCTIONS_name(type, name) \ - type *name##_new(void); \ - void name##_free(type *a); - -# define DECLARE_ASN1_PRINT_FUNCTION(stname) \ - DECLARE_ASN1_PRINT_FUNCTION_fname(stname, stname) - -# define DECLARE_ASN1_PRINT_FUNCTION_fname(stname, fname) \ - int fname##_print_ctx(BIO *out, stname *x, int indent, \ - const ASN1_PCTX *pctx); - -# define D2I_OF(type) type *(*)(type **,const unsigned char **,long) -# define I2D_OF(type) int (*)(type *,unsigned char **) -# define I2D_OF_const(type) int (*)(const type *,unsigned char **) - -# define CHECKED_D2I_OF(type, d2i) \ - ((d2i_of_void*) (1 ? d2i : ((D2I_OF(type))0))) -# define CHECKED_I2D_OF(type, i2d) \ - ((i2d_of_void*) (1 ? i2d : ((I2D_OF(type))0))) -# define CHECKED_NEW_OF(type, xnew) \ - ((void *(*)(void)) (1 ? xnew : ((type *(*)(void))0))) -# define CHECKED_PTR_OF(type, p) \ - ((void*) (1 ? p : (type*)0)) -# define CHECKED_PPTR_OF(type, p) \ - ((void**) (1 ? p : (type**)0)) - -# define TYPEDEF_D2I_OF(type) typedef type *d2i_of_##type(type **,const unsigned char **,long) -# define TYPEDEF_I2D_OF(type) typedef int i2d_of_##type(type *,unsigned char **) -# define TYPEDEF_D2I2D_OF(type) TYPEDEF_D2I_OF(type); TYPEDEF_I2D_OF(type) - -TYPEDEF_D2I2D_OF(void); - -/*- - * The following macros and typedefs allow an ASN1_ITEM - * to be embedded in a structure and referenced. Since - * the ASN1_ITEM pointers need to be globally accessible - * (possibly from shared libraries) they may exist in - * different forms. On platforms that support it the - * ASN1_ITEM structure itself will be globally exported. - * Other platforms will export a function that returns - * an ASN1_ITEM pointer. - * - * To handle both cases transparently the macros below - * should be used instead of hard coding an ASN1_ITEM - * pointer in a structure. - * - * The structure will look like this: - * - * typedef struct SOMETHING_st { - * ... - * ASN1_ITEM_EXP *iptr; - * ... - * } SOMETHING; - * - * It would be initialised as e.g.: - * - * SOMETHING somevar = {...,ASN1_ITEM_ref(X509),...}; - * - * and the actual pointer extracted with: - * - * const ASN1_ITEM *it = ASN1_ITEM_ptr(somevar.iptr); - * - * Finally an ASN1_ITEM pointer can be extracted from an - * appropriate reference with: ASN1_ITEM_rptr(X509). This - * would be used when a function takes an ASN1_ITEM * argument. - * - */ - -# ifndef OPENSSL_EXPORT_VAR_AS_FUNCTION - -/* ASN1_ITEM pointer exported type */ -typedef const ASN1_ITEM ASN1_ITEM_EXP; - -/* Macro to obtain ASN1_ITEM pointer from exported type */ -# define ASN1_ITEM_ptr(iptr) (iptr) - -/* Macro to include ASN1_ITEM pointer from base type */ -# define ASN1_ITEM_ref(iptr) (&(iptr##_it)) - -# define ASN1_ITEM_rptr(ref) (&(ref##_it)) - -# define DECLARE_ASN1_ITEM(name) \ - OPENSSL_EXTERN const ASN1_ITEM name##_it; - -# else - -/* - * Platforms that can't easily handle shared global variables are declared as - * functions returning ASN1_ITEM pointers. - */ - -/* ASN1_ITEM pointer exported type */ -typedef const ASN1_ITEM *ASN1_ITEM_EXP (void); - -/* Macro to obtain ASN1_ITEM pointer from exported type */ -# define ASN1_ITEM_ptr(iptr) (iptr()) - -/* Macro to include ASN1_ITEM pointer from base type */ -# define ASN1_ITEM_ref(iptr) (iptr##_it) - -# define ASN1_ITEM_rptr(ref) (ref##_it()) - -# define DECLARE_ASN1_ITEM(name) \ - const ASN1_ITEM * name##_it(void); - -# endif - -/* Parameters used by ASN1_STRING_print_ex() */ - -/* - * These determine which characters to escape: RFC2253 special characters, - * control characters and MSB set characters - */ - -# define ASN1_STRFLGS_ESC_2253 1 -# define ASN1_STRFLGS_ESC_CTRL 2 -# define ASN1_STRFLGS_ESC_MSB 4 - -/* - * This flag determines how we do escaping: normally RC2253 backslash only, - * set this to use backslash and quote. - */ - -# define ASN1_STRFLGS_ESC_QUOTE 8 - -/* These three flags are internal use only. */ - -/* Character is a valid PrintableString character */ -# define CHARTYPE_PRINTABLESTRING 0x10 -/* Character needs escaping if it is the first character */ -# define CHARTYPE_FIRST_ESC_2253 0x20 -/* Character needs escaping if it is the last character */ -# define CHARTYPE_LAST_ESC_2253 0x40 - -/* - * NB the internal flags are safely reused below by flags handled at the top - * level. - */ - -/* - * If this is set we convert all character strings to UTF8 first - */ - -# define ASN1_STRFLGS_UTF8_CONVERT 0x10 - -/* - * If this is set we don't attempt to interpret content: just assume all - * strings are 1 byte per character. This will produce some pretty odd - * looking output! - */ - -# define ASN1_STRFLGS_IGNORE_TYPE 0x20 - -/* If this is set we include the string type in the output */ -# define ASN1_STRFLGS_SHOW_TYPE 0x40 - -/* - * This determines which strings to display and which to 'dump' (hex dump of - * content octets or DER encoding). We can only dump non character strings or - * everything. If we don't dump 'unknown' they are interpreted as character - * strings with 1 octet per character and are subject to the usual escaping - * options. - */ - -# define ASN1_STRFLGS_DUMP_ALL 0x80 -# define ASN1_STRFLGS_DUMP_UNKNOWN 0x100 - -/* - * These determine what 'dumping' does, we can dump the content octets or the - * DER encoding: both use the RFC2253 #XXXXX notation. - */ - -# define ASN1_STRFLGS_DUMP_DER 0x200 - -/* - * All the string flags consistent with RFC2253, escaping control characters - * isn't essential in RFC2253 but it is advisable anyway. - */ - -# define ASN1_STRFLGS_RFC2253 (ASN1_STRFLGS_ESC_2253 | \ - ASN1_STRFLGS_ESC_CTRL | \ - ASN1_STRFLGS_ESC_MSB | \ - ASN1_STRFLGS_UTF8_CONVERT | \ - ASN1_STRFLGS_DUMP_UNKNOWN | \ - ASN1_STRFLGS_DUMP_DER) - -DECLARE_STACK_OF(ASN1_INTEGER) -DECLARE_ASN1_SET_OF(ASN1_INTEGER) - -DECLARE_STACK_OF(ASN1_GENERALSTRING) - -typedef struct asn1_type_st { - int type; - union { - char *ptr; - ASN1_BOOLEAN boolean; - ASN1_STRING *asn1_string; - ASN1_OBJECT *object; - ASN1_INTEGER *integer; - ASN1_ENUMERATED *enumerated; - ASN1_BIT_STRING *bit_string; - ASN1_OCTET_STRING *octet_string; - ASN1_PRINTABLESTRING *printablestring; - ASN1_T61STRING *t61string; - ASN1_IA5STRING *ia5string; - ASN1_GENERALSTRING *generalstring; - ASN1_BMPSTRING *bmpstring; - ASN1_UNIVERSALSTRING *universalstring; - ASN1_UTCTIME *utctime; - ASN1_GENERALIZEDTIME *generalizedtime; - ASN1_VISIBLESTRING *visiblestring; - ASN1_UTF8STRING *utf8string; - /* - * set and sequence are left complete and still contain the set or - * sequence bytes - */ - ASN1_STRING *set; - ASN1_STRING *sequence; - ASN1_VALUE *asn1_value; - } value; -} ASN1_TYPE; - -DECLARE_STACK_OF(ASN1_TYPE) -DECLARE_ASN1_SET_OF(ASN1_TYPE) - -typedef STACK_OF(ASN1_TYPE) ASN1_SEQUENCE_ANY; - -DECLARE_ASN1_ENCODE_FUNCTIONS_const(ASN1_SEQUENCE_ANY, ASN1_SEQUENCE_ANY) -DECLARE_ASN1_ENCODE_FUNCTIONS_const(ASN1_SEQUENCE_ANY, ASN1_SET_ANY) - -typedef struct NETSCAPE_X509_st { - ASN1_OCTET_STRING *header; - X509 *cert; -} NETSCAPE_X509; - -/* This is used to contain a list of bit names */ -typedef struct BIT_STRING_BITNAME_st { - int bitnum; - const char *lname; - const char *sname; -} BIT_STRING_BITNAME; - -# define M_ASN1_STRING_length(x) ((x)->length) -# define M_ASN1_STRING_length_set(x, n) ((x)->length = (n)) -# define M_ASN1_STRING_type(x) ((x)->type) -# define M_ASN1_STRING_data(x) ((x)->data) - -/* Macros for string operations */ -# define M_ASN1_BIT_STRING_new() (ASN1_BIT_STRING *)\ - ASN1_STRING_type_new(V_ASN1_BIT_STRING) -# define M_ASN1_BIT_STRING_free(a) ASN1_STRING_free((ASN1_STRING *)a) -# define M_ASN1_BIT_STRING_dup(a) (ASN1_BIT_STRING *)\ - ASN1_STRING_dup((const ASN1_STRING *)a) -# define M_ASN1_BIT_STRING_cmp(a,b) ASN1_STRING_cmp(\ - (const ASN1_STRING *)a,(const ASN1_STRING *)b) -# define M_ASN1_BIT_STRING_set(a,b,c) ASN1_STRING_set((ASN1_STRING *)a,b,c) - -# define M_ASN1_INTEGER_new() (ASN1_INTEGER *)\ - ASN1_STRING_type_new(V_ASN1_INTEGER) -# define M_ASN1_INTEGER_free(a) ASN1_STRING_free((ASN1_STRING *)a) -# define M_ASN1_INTEGER_dup(a) (ASN1_INTEGER *)\ - ASN1_STRING_dup((const ASN1_STRING *)a) -# define M_ASN1_INTEGER_cmp(a,b) ASN1_STRING_cmp(\ - (const ASN1_STRING *)a,(const ASN1_STRING *)b) - -# define M_ASN1_ENUMERATED_new() (ASN1_ENUMERATED *)\ - ASN1_STRING_type_new(V_ASN1_ENUMERATED) -# define M_ASN1_ENUMERATED_free(a) ASN1_STRING_free((ASN1_STRING *)a) -# define M_ASN1_ENUMERATED_dup(a) (ASN1_ENUMERATED *)\ - ASN1_STRING_dup((const ASN1_STRING *)a) -# define M_ASN1_ENUMERATED_cmp(a,b) ASN1_STRING_cmp(\ - (const ASN1_STRING *)a,(const ASN1_STRING *)b) - -# define M_ASN1_OCTET_STRING_new() (ASN1_OCTET_STRING *)\ - ASN1_STRING_type_new(V_ASN1_OCTET_STRING) -# define M_ASN1_OCTET_STRING_free(a) ASN1_STRING_free((ASN1_STRING *)a) -# define M_ASN1_OCTET_STRING_dup(a) (ASN1_OCTET_STRING *)\ - ASN1_STRING_dup((const ASN1_STRING *)a) -# define M_ASN1_OCTET_STRING_cmp(a,b) ASN1_STRING_cmp(\ - (const ASN1_STRING *)a,(const ASN1_STRING *)b) -# define M_ASN1_OCTET_STRING_set(a,b,c) ASN1_STRING_set((ASN1_STRING *)a,b,c) -# define M_ASN1_OCTET_STRING_print(a,b) ASN1_STRING_print(a,(ASN1_STRING *)b) -# define M_i2d_ASN1_OCTET_STRING(a,pp) \ - i2d_ASN1_bytes((ASN1_STRING *)a,pp,V_ASN1_OCTET_STRING,\ - V_ASN1_UNIVERSAL) - -# define B_ASN1_TIME \ - B_ASN1_UTCTIME | \ - B_ASN1_GENERALIZEDTIME - -# define B_ASN1_PRINTABLE \ - B_ASN1_NUMERICSTRING| \ - B_ASN1_PRINTABLESTRING| \ - B_ASN1_T61STRING| \ - B_ASN1_IA5STRING| \ - B_ASN1_BIT_STRING| \ - B_ASN1_UNIVERSALSTRING|\ - B_ASN1_BMPSTRING|\ - B_ASN1_UTF8STRING|\ - B_ASN1_SEQUENCE|\ - B_ASN1_UNKNOWN - -# define B_ASN1_DIRECTORYSTRING \ - B_ASN1_PRINTABLESTRING| \ - B_ASN1_TELETEXSTRING|\ - B_ASN1_BMPSTRING|\ - B_ASN1_UNIVERSALSTRING|\ - B_ASN1_UTF8STRING - -# define B_ASN1_DISPLAYTEXT \ - B_ASN1_IA5STRING| \ - B_ASN1_VISIBLESTRING| \ - B_ASN1_BMPSTRING|\ - B_ASN1_UTF8STRING - -# define M_ASN1_PRINTABLE_new() ASN1_STRING_type_new(V_ASN1_T61STRING) -# define M_ASN1_PRINTABLE_free(a) ASN1_STRING_free((ASN1_STRING *)a) -# define M_i2d_ASN1_PRINTABLE(a,pp) i2d_ASN1_bytes((ASN1_STRING *)a,\ - pp,a->type,V_ASN1_UNIVERSAL) -# define M_d2i_ASN1_PRINTABLE(a,pp,l) \ - d2i_ASN1_type_bytes((ASN1_STRING **)a,pp,l, \ - B_ASN1_PRINTABLE) - -# define M_DIRECTORYSTRING_new() ASN1_STRING_type_new(V_ASN1_PRINTABLESTRING) -# define M_DIRECTORYSTRING_free(a) ASN1_STRING_free((ASN1_STRING *)a) -# define M_i2d_DIRECTORYSTRING(a,pp) i2d_ASN1_bytes((ASN1_STRING *)a,\ - pp,a->type,V_ASN1_UNIVERSAL) -# define M_d2i_DIRECTORYSTRING(a,pp,l) \ - d2i_ASN1_type_bytes((ASN1_STRING **)a,pp,l, \ - B_ASN1_DIRECTORYSTRING) - -# define M_DISPLAYTEXT_new() ASN1_STRING_type_new(V_ASN1_VISIBLESTRING) -# define M_DISPLAYTEXT_free(a) ASN1_STRING_free((ASN1_STRING *)a) -# define M_i2d_DISPLAYTEXT(a,pp) i2d_ASN1_bytes((ASN1_STRING *)a,\ - pp,a->type,V_ASN1_UNIVERSAL) -# define M_d2i_DISPLAYTEXT(a,pp,l) \ - d2i_ASN1_type_bytes((ASN1_STRING **)a,pp,l, \ - B_ASN1_DISPLAYTEXT) - -# define M_ASN1_PRINTABLESTRING_new() (ASN1_PRINTABLESTRING *)\ - ASN1_STRING_type_new(V_ASN1_PRINTABLESTRING) -# define M_ASN1_PRINTABLESTRING_free(a) ASN1_STRING_free((ASN1_STRING *)a) -# define M_i2d_ASN1_PRINTABLESTRING(a,pp) \ - i2d_ASN1_bytes((ASN1_STRING *)a,pp,V_ASN1_PRINTABLESTRING,\ - V_ASN1_UNIVERSAL) -# define M_d2i_ASN1_PRINTABLESTRING(a,pp,l) \ - (ASN1_PRINTABLESTRING *)d2i_ASN1_type_bytes\ - ((ASN1_STRING **)a,pp,l,B_ASN1_PRINTABLESTRING) - -# define M_ASN1_T61STRING_new() (ASN1_T61STRING *)\ - ASN1_STRING_type_new(V_ASN1_T61STRING) -# define M_ASN1_T61STRING_free(a) ASN1_STRING_free((ASN1_STRING *)a) -# define M_i2d_ASN1_T61STRING(a,pp) \ - i2d_ASN1_bytes((ASN1_STRING *)a,pp,V_ASN1_T61STRING,\ - V_ASN1_UNIVERSAL) -# define M_d2i_ASN1_T61STRING(a,pp,l) \ - (ASN1_T61STRING *)d2i_ASN1_type_bytes\ - ((ASN1_STRING **)a,pp,l,B_ASN1_T61STRING) - -# define M_ASN1_IA5STRING_new() (ASN1_IA5STRING *)\ - ASN1_STRING_type_new(V_ASN1_IA5STRING) -# define M_ASN1_IA5STRING_free(a) ASN1_STRING_free((ASN1_STRING *)a) -# define M_ASN1_IA5STRING_dup(a) \ - (ASN1_IA5STRING *)ASN1_STRING_dup((const ASN1_STRING *)a) -# define M_i2d_ASN1_IA5STRING(a,pp) \ - i2d_ASN1_bytes((ASN1_STRING *)a,pp,V_ASN1_IA5STRING,\ - V_ASN1_UNIVERSAL) -# define M_d2i_ASN1_IA5STRING(a,pp,l) \ - (ASN1_IA5STRING *)d2i_ASN1_type_bytes((ASN1_STRING **)a,pp,l,\ - B_ASN1_IA5STRING) - -# define M_ASN1_UTCTIME_new() (ASN1_UTCTIME *)\ - ASN1_STRING_type_new(V_ASN1_UTCTIME) -# define M_ASN1_UTCTIME_free(a) ASN1_STRING_free((ASN1_STRING *)a) -# define M_ASN1_UTCTIME_dup(a) (ASN1_UTCTIME *)\ - ASN1_STRING_dup((const ASN1_STRING *)a) - -# define M_ASN1_GENERALIZEDTIME_new() (ASN1_GENERALIZEDTIME *)\ - ASN1_STRING_type_new(V_ASN1_GENERALIZEDTIME) -# define M_ASN1_GENERALIZEDTIME_free(a) ASN1_STRING_free((ASN1_STRING *)a) -# define M_ASN1_GENERALIZEDTIME_dup(a) (ASN1_GENERALIZEDTIME *)ASN1_STRING_dup(\ - (const ASN1_STRING *)a) - -# define M_ASN1_TIME_new() (ASN1_TIME *)\ - ASN1_STRING_type_new(V_ASN1_UTCTIME) -# define M_ASN1_TIME_free(a) ASN1_STRING_free((ASN1_STRING *)a) -# define M_ASN1_TIME_dup(a) (ASN1_TIME *)\ - ASN1_STRING_dup((const ASN1_STRING *)a) - -# define M_ASN1_GENERALSTRING_new() (ASN1_GENERALSTRING *)\ - ASN1_STRING_type_new(V_ASN1_GENERALSTRING) -# define M_ASN1_GENERALSTRING_free(a) ASN1_STRING_free((ASN1_STRING *)a) -# define M_i2d_ASN1_GENERALSTRING(a,pp) \ - i2d_ASN1_bytes((ASN1_STRING *)a,pp,V_ASN1_GENERALSTRING,\ - V_ASN1_UNIVERSAL) -# define M_d2i_ASN1_GENERALSTRING(a,pp,l) \ - (ASN1_GENERALSTRING *)d2i_ASN1_type_bytes\ - ((ASN1_STRING **)a,pp,l,B_ASN1_GENERALSTRING) - -# define M_ASN1_UNIVERSALSTRING_new() (ASN1_UNIVERSALSTRING *)\ - ASN1_STRING_type_new(V_ASN1_UNIVERSALSTRING) -# define M_ASN1_UNIVERSALSTRING_free(a) ASN1_STRING_free((ASN1_STRING *)a) -# define M_i2d_ASN1_UNIVERSALSTRING(a,pp) \ - i2d_ASN1_bytes((ASN1_STRING *)a,pp,V_ASN1_UNIVERSALSTRING,\ - V_ASN1_UNIVERSAL) -# define M_d2i_ASN1_UNIVERSALSTRING(a,pp,l) \ - (ASN1_UNIVERSALSTRING *)d2i_ASN1_type_bytes\ - ((ASN1_STRING **)a,pp,l,B_ASN1_UNIVERSALSTRING) - -# define M_ASN1_BMPSTRING_new() (ASN1_BMPSTRING *)\ - ASN1_STRING_type_new(V_ASN1_BMPSTRING) -# define M_ASN1_BMPSTRING_free(a) ASN1_STRING_free((ASN1_STRING *)a) -# define M_i2d_ASN1_BMPSTRING(a,pp) \ - i2d_ASN1_bytes((ASN1_STRING *)a,pp,V_ASN1_BMPSTRING,\ - V_ASN1_UNIVERSAL) -# define M_d2i_ASN1_BMPSTRING(a,pp,l) \ - (ASN1_BMPSTRING *)d2i_ASN1_type_bytes\ - ((ASN1_STRING **)a,pp,l,B_ASN1_BMPSTRING) - -# define M_ASN1_VISIBLESTRING_new() (ASN1_VISIBLESTRING *)\ - ASN1_STRING_type_new(V_ASN1_VISIBLESTRING) -# define M_ASN1_VISIBLESTRING_free(a) ASN1_STRING_free((ASN1_STRING *)a) -# define M_i2d_ASN1_VISIBLESTRING(a,pp) \ - i2d_ASN1_bytes((ASN1_STRING *)a,pp,V_ASN1_VISIBLESTRING,\ - V_ASN1_UNIVERSAL) -# define M_d2i_ASN1_VISIBLESTRING(a,pp,l) \ - (ASN1_VISIBLESTRING *)d2i_ASN1_type_bytes\ - ((ASN1_STRING **)a,pp,l,B_ASN1_VISIBLESTRING) - -# define M_ASN1_UTF8STRING_new() (ASN1_UTF8STRING *)\ - ASN1_STRING_type_new(V_ASN1_UTF8STRING) -# define M_ASN1_UTF8STRING_free(a) ASN1_STRING_free((ASN1_STRING *)a) -# define M_i2d_ASN1_UTF8STRING(a,pp) \ - i2d_ASN1_bytes((ASN1_STRING *)a,pp,V_ASN1_UTF8STRING,\ - V_ASN1_UNIVERSAL) -# define M_d2i_ASN1_UTF8STRING(a,pp,l) \ - (ASN1_UTF8STRING *)d2i_ASN1_type_bytes\ - ((ASN1_STRING **)a,pp,l,B_ASN1_UTF8STRING) - - /* for the is_set parameter to i2d_ASN1_SET */ -# define IS_SEQUENCE 0 -# define IS_SET 1 - -DECLARE_ASN1_FUNCTIONS_fname(ASN1_TYPE, ASN1_ANY, ASN1_TYPE) - -int ASN1_TYPE_get(ASN1_TYPE *a); -void ASN1_TYPE_set(ASN1_TYPE *a, int type, void *value); -int ASN1_TYPE_set1(ASN1_TYPE *a, int type, const void *value); -int ASN1_TYPE_cmp(const ASN1_TYPE *a, const ASN1_TYPE *b); - -ASN1_OBJECT *ASN1_OBJECT_new(void); -void ASN1_OBJECT_free(ASN1_OBJECT *a); -int i2d_ASN1_OBJECT(ASN1_OBJECT *a, unsigned char **pp); -ASN1_OBJECT *c2i_ASN1_OBJECT(ASN1_OBJECT **a, const unsigned char **pp, - long length); -ASN1_OBJECT *d2i_ASN1_OBJECT(ASN1_OBJECT **a, const unsigned char **pp, - long length); - -DECLARE_ASN1_ITEM(ASN1_OBJECT) - -DECLARE_STACK_OF(ASN1_OBJECT) -DECLARE_ASN1_SET_OF(ASN1_OBJECT) - -ASN1_STRING *ASN1_STRING_new(void); -void ASN1_STRING_free(ASN1_STRING *a); -int ASN1_STRING_copy(ASN1_STRING *dst, const ASN1_STRING *str); -ASN1_STRING *ASN1_STRING_dup(const ASN1_STRING *a); -ASN1_STRING *ASN1_STRING_type_new(int type); -int ASN1_STRING_cmp(const ASN1_STRING *a, const ASN1_STRING *b); - /* - * Since this is used to store all sorts of things, via macros, for now, - * make its data void * - */ -int ASN1_STRING_set(ASN1_STRING *str, const void *data, int len); -void ASN1_STRING_set0(ASN1_STRING *str, void *data, int len); -int ASN1_STRING_length(const ASN1_STRING *x); -void ASN1_STRING_length_set(ASN1_STRING *x, int n); -int ASN1_STRING_type(ASN1_STRING *x); -unsigned char *ASN1_STRING_data(ASN1_STRING *x); - -DECLARE_ASN1_FUNCTIONS(ASN1_BIT_STRING) -int i2c_ASN1_BIT_STRING(ASN1_BIT_STRING *a, unsigned char **pp); -ASN1_BIT_STRING *c2i_ASN1_BIT_STRING(ASN1_BIT_STRING **a, - const unsigned char **pp, long length); -int ASN1_BIT_STRING_set(ASN1_BIT_STRING *a, unsigned char *d, int length); -int ASN1_BIT_STRING_set_bit(ASN1_BIT_STRING *a, int n, int value); -int ASN1_BIT_STRING_get_bit(ASN1_BIT_STRING *a, int n); -int ASN1_BIT_STRING_check(ASN1_BIT_STRING *a, - unsigned char *flags, int flags_len); - -# ifndef OPENSSL_NO_BIO -int ASN1_BIT_STRING_name_print(BIO *out, ASN1_BIT_STRING *bs, - BIT_STRING_BITNAME *tbl, int indent); -# endif -int ASN1_BIT_STRING_num_asc(char *name, BIT_STRING_BITNAME *tbl); -int ASN1_BIT_STRING_set_asc(ASN1_BIT_STRING *bs, char *name, int value, - BIT_STRING_BITNAME *tbl); - -int i2d_ASN1_BOOLEAN(int a, unsigned char **pp); -int d2i_ASN1_BOOLEAN(int *a, const unsigned char **pp, long length); - -DECLARE_ASN1_FUNCTIONS(ASN1_INTEGER) -int i2c_ASN1_INTEGER(ASN1_INTEGER *a, unsigned char **pp); -ASN1_INTEGER *c2i_ASN1_INTEGER(ASN1_INTEGER **a, const unsigned char **pp, - long length); -ASN1_INTEGER *d2i_ASN1_UINTEGER(ASN1_INTEGER **a, const unsigned char **pp, - long length); -ASN1_INTEGER *ASN1_INTEGER_dup(const ASN1_INTEGER *x); -int ASN1_INTEGER_cmp(const ASN1_INTEGER *x, const ASN1_INTEGER *y); - -DECLARE_ASN1_FUNCTIONS(ASN1_ENUMERATED) - -int ASN1_UTCTIME_check(const ASN1_UTCTIME *a); -ASN1_UTCTIME *ASN1_UTCTIME_set(ASN1_UTCTIME *s, time_t t); -ASN1_UTCTIME *ASN1_UTCTIME_adj(ASN1_UTCTIME *s, time_t t, - int offset_day, long offset_sec); -int ASN1_UTCTIME_set_string(ASN1_UTCTIME *s, const char *str); -int ASN1_UTCTIME_cmp_time_t(const ASN1_UTCTIME *s, time_t t); -# if 0 -time_t ASN1_UTCTIME_get(const ASN1_UTCTIME *s); -# endif - -int ASN1_GENERALIZEDTIME_check(const ASN1_GENERALIZEDTIME *a); -ASN1_GENERALIZEDTIME *ASN1_GENERALIZEDTIME_set(ASN1_GENERALIZEDTIME *s, - time_t t); -ASN1_GENERALIZEDTIME *ASN1_GENERALIZEDTIME_adj(ASN1_GENERALIZEDTIME *s, - time_t t, int offset_day, - long offset_sec); -int ASN1_GENERALIZEDTIME_set_string(ASN1_GENERALIZEDTIME *s, const char *str); -int ASN1_TIME_diff(int *pday, int *psec, - const ASN1_TIME *from, const ASN1_TIME *to); - -DECLARE_ASN1_FUNCTIONS(ASN1_OCTET_STRING) -ASN1_OCTET_STRING *ASN1_OCTET_STRING_dup(const ASN1_OCTET_STRING *a); -int ASN1_OCTET_STRING_cmp(const ASN1_OCTET_STRING *a, - const ASN1_OCTET_STRING *b); -int ASN1_OCTET_STRING_set(ASN1_OCTET_STRING *str, const unsigned char *data, - int len); - -DECLARE_ASN1_FUNCTIONS(ASN1_VISIBLESTRING) -DECLARE_ASN1_FUNCTIONS(ASN1_UNIVERSALSTRING) -DECLARE_ASN1_FUNCTIONS(ASN1_UTF8STRING) -DECLARE_ASN1_FUNCTIONS(ASN1_NULL) -DECLARE_ASN1_FUNCTIONS(ASN1_BMPSTRING) - -int UTF8_getc(const unsigned char *str, int len, unsigned long *val); -int UTF8_putc(unsigned char *str, int len, unsigned long value); - -DECLARE_ASN1_FUNCTIONS_name(ASN1_STRING, ASN1_PRINTABLE) - -DECLARE_ASN1_FUNCTIONS_name(ASN1_STRING, DIRECTORYSTRING) -DECLARE_ASN1_FUNCTIONS_name(ASN1_STRING, DISPLAYTEXT) -DECLARE_ASN1_FUNCTIONS(ASN1_PRINTABLESTRING) -DECLARE_ASN1_FUNCTIONS(ASN1_T61STRING) -DECLARE_ASN1_FUNCTIONS(ASN1_IA5STRING) -DECLARE_ASN1_FUNCTIONS(ASN1_GENERALSTRING) -DECLARE_ASN1_FUNCTIONS(ASN1_UTCTIME) -DECLARE_ASN1_FUNCTIONS(ASN1_GENERALIZEDTIME) -DECLARE_ASN1_FUNCTIONS(ASN1_TIME) - -DECLARE_ASN1_ITEM(ASN1_OCTET_STRING_NDEF) - -ASN1_TIME *ASN1_TIME_set(ASN1_TIME *s, time_t t); -ASN1_TIME *ASN1_TIME_adj(ASN1_TIME *s, time_t t, - int offset_day, long offset_sec); -int ASN1_TIME_check(ASN1_TIME *t); -ASN1_GENERALIZEDTIME *ASN1_TIME_to_generalizedtime(ASN1_TIME *t, ASN1_GENERALIZEDTIME - **out); -int ASN1_TIME_set_string(ASN1_TIME *s, const char *str); - -int i2d_ASN1_SET(STACK_OF(OPENSSL_BLOCK) *a, unsigned char **pp, - i2d_of_void *i2d, int ex_tag, int ex_class, int is_set); -STACK_OF(OPENSSL_BLOCK) *d2i_ASN1_SET(STACK_OF(OPENSSL_BLOCK) **a, - const unsigned char **pp, - long length, d2i_of_void *d2i, - void (*free_func) (OPENSSL_BLOCK), - int ex_tag, int ex_class); - -# ifndef OPENSSL_NO_BIO -int i2a_ASN1_INTEGER(BIO *bp, ASN1_INTEGER *a); -int a2i_ASN1_INTEGER(BIO *bp, ASN1_INTEGER *bs, char *buf, int size); -int i2a_ASN1_ENUMERATED(BIO *bp, ASN1_ENUMERATED *a); -int a2i_ASN1_ENUMERATED(BIO *bp, ASN1_ENUMERATED *bs, char *buf, int size); -int i2a_ASN1_OBJECT(BIO *bp, ASN1_OBJECT *a); -int a2i_ASN1_STRING(BIO *bp, ASN1_STRING *bs, char *buf, int size); -int i2a_ASN1_STRING(BIO *bp, ASN1_STRING *a, int type); -# endif -int i2t_ASN1_OBJECT(char *buf, int buf_len, ASN1_OBJECT *a); - -int a2d_ASN1_OBJECT(unsigned char *out, int olen, const char *buf, int num); -ASN1_OBJECT *ASN1_OBJECT_create(int nid, unsigned char *data, int len, - const char *sn, const char *ln); - -int ASN1_INTEGER_set(ASN1_INTEGER *a, long v); -long ASN1_INTEGER_get(const ASN1_INTEGER *a); -ASN1_INTEGER *BN_to_ASN1_INTEGER(const BIGNUM *bn, ASN1_INTEGER *ai); -BIGNUM *ASN1_INTEGER_to_BN(const ASN1_INTEGER *ai, BIGNUM *bn); - -int ASN1_ENUMERATED_set(ASN1_ENUMERATED *a, long v); -long ASN1_ENUMERATED_get(ASN1_ENUMERATED *a); -ASN1_ENUMERATED *BN_to_ASN1_ENUMERATED(BIGNUM *bn, ASN1_ENUMERATED *ai); -BIGNUM *ASN1_ENUMERATED_to_BN(ASN1_ENUMERATED *ai, BIGNUM *bn); - -/* General */ -/* given a string, return the correct type, max is the maximum length */ -int ASN1_PRINTABLE_type(const unsigned char *s, int max); - -int i2d_ASN1_bytes(ASN1_STRING *a, unsigned char **pp, int tag, int xclass); -ASN1_STRING *d2i_ASN1_bytes(ASN1_STRING **a, const unsigned char **pp, - long length, int Ptag, int Pclass); -unsigned long ASN1_tag2bit(int tag); -/* type is one or more of the B_ASN1_ values. */ -ASN1_STRING *d2i_ASN1_type_bytes(ASN1_STRING **a, const unsigned char **pp, - long length, int type); - -/* PARSING */ -int asn1_Finish(ASN1_CTX *c); -int asn1_const_Finish(ASN1_const_CTX *c); - -/* SPECIALS */ -int ASN1_get_object(const unsigned char **pp, long *plength, int *ptag, - int *pclass, long omax); -int ASN1_check_infinite_end(unsigned char **p, long len); -int ASN1_const_check_infinite_end(const unsigned char **p, long len); -void ASN1_put_object(unsigned char **pp, int constructed, int length, - int tag, int xclass); -int ASN1_put_eoc(unsigned char **pp); -int ASN1_object_size(int constructed, int length, int tag); - -/* Used to implement other functions */ -void *ASN1_dup(i2d_of_void *i2d, d2i_of_void *d2i, void *x); - -# define ASN1_dup_of(type,i2d,d2i,x) \ - ((type*)ASN1_dup(CHECKED_I2D_OF(type, i2d), \ - CHECKED_D2I_OF(type, d2i), \ - CHECKED_PTR_OF(type, x))) - -# define ASN1_dup_of_const(type,i2d,d2i,x) \ - ((type*)ASN1_dup(CHECKED_I2D_OF(const type, i2d), \ - CHECKED_D2I_OF(type, d2i), \ - CHECKED_PTR_OF(const type, x))) - -void *ASN1_item_dup(const ASN1_ITEM *it, void *x); - -/* ASN1 alloc/free macros for when a type is only used internally */ - -# define M_ASN1_new_of(type) (type *)ASN1_item_new(ASN1_ITEM_rptr(type)) -# define M_ASN1_free_of(x, type) \ - ASN1_item_free(CHECKED_PTR_OF(type, x), ASN1_ITEM_rptr(type)) - -# ifndef OPENSSL_NO_FP_API -void *ASN1_d2i_fp(void *(*xnew) (void), d2i_of_void *d2i, FILE *in, void **x); - -# define ASN1_d2i_fp_of(type,xnew,d2i,in,x) \ - ((type*)ASN1_d2i_fp(CHECKED_NEW_OF(type, xnew), \ - CHECKED_D2I_OF(type, d2i), \ - in, \ - CHECKED_PPTR_OF(type, x))) - -void *ASN1_item_d2i_fp(const ASN1_ITEM *it, FILE *in, void *x); -int ASN1_i2d_fp(i2d_of_void *i2d, FILE *out, void *x); - -# define ASN1_i2d_fp_of(type,i2d,out,x) \ - (ASN1_i2d_fp(CHECKED_I2D_OF(type, i2d), \ - out, \ - CHECKED_PTR_OF(type, x))) - -# define ASN1_i2d_fp_of_const(type,i2d,out,x) \ - (ASN1_i2d_fp(CHECKED_I2D_OF(const type, i2d), \ - out, \ - CHECKED_PTR_OF(const type, x))) - -int ASN1_item_i2d_fp(const ASN1_ITEM *it, FILE *out, void *x); -int ASN1_STRING_print_ex_fp(FILE *fp, ASN1_STRING *str, unsigned long flags); -# endif - -int ASN1_STRING_to_UTF8(unsigned char **out, ASN1_STRING *in); - -# ifndef OPENSSL_NO_BIO -void *ASN1_d2i_bio(void *(*xnew) (void), d2i_of_void *d2i, BIO *in, void **x); - -# define ASN1_d2i_bio_of(type,xnew,d2i,in,x) \ - ((type*)ASN1_d2i_bio( CHECKED_NEW_OF(type, xnew), \ - CHECKED_D2I_OF(type, d2i), \ - in, \ - CHECKED_PPTR_OF(type, x))) - -void *ASN1_item_d2i_bio(const ASN1_ITEM *it, BIO *in, void *x); -int ASN1_i2d_bio(i2d_of_void *i2d, BIO *out, unsigned char *x); - -# define ASN1_i2d_bio_of(type,i2d,out,x) \ - (ASN1_i2d_bio(CHECKED_I2D_OF(type, i2d), \ - out, \ - CHECKED_PTR_OF(type, x))) - -# define ASN1_i2d_bio_of_const(type,i2d,out,x) \ - (ASN1_i2d_bio(CHECKED_I2D_OF(const type, i2d), \ - out, \ - CHECKED_PTR_OF(const type, x))) - -int ASN1_item_i2d_bio(const ASN1_ITEM *it, BIO *out, void *x); -int ASN1_UTCTIME_print(BIO *fp, const ASN1_UTCTIME *a); -int ASN1_GENERALIZEDTIME_print(BIO *fp, const ASN1_GENERALIZEDTIME *a); -int ASN1_TIME_print(BIO *fp, const ASN1_TIME *a); -int ASN1_STRING_print(BIO *bp, const ASN1_STRING *v); -int ASN1_STRING_print_ex(BIO *out, ASN1_STRING *str, unsigned long flags); -int ASN1_bn_print(BIO *bp, const char *number, const BIGNUM *num, - unsigned char *buf, int off); -int ASN1_parse(BIO *bp, const unsigned char *pp, long len, int indent); -int ASN1_parse_dump(BIO *bp, const unsigned char *pp, long len, int indent, - int dump); -# endif -const char *ASN1_tag2str(int tag); - -/* Used to load and write netscape format cert */ - -DECLARE_ASN1_FUNCTIONS(NETSCAPE_X509) - -int ASN1_UNIVERSALSTRING_to_string(ASN1_UNIVERSALSTRING *s); - -int ASN1_TYPE_set_octetstring(ASN1_TYPE *a, unsigned char *data, int len); -int ASN1_TYPE_get_octetstring(ASN1_TYPE *a, unsigned char *data, int max_len); -int ASN1_TYPE_set_int_octetstring(ASN1_TYPE *a, long num, - unsigned char *data, int len); -int ASN1_TYPE_get_int_octetstring(ASN1_TYPE *a, long *num, - unsigned char *data, int max_len); - -STACK_OF(OPENSSL_BLOCK) *ASN1_seq_unpack(const unsigned char *buf, int len, - d2i_of_void *d2i, - void (*free_func) (OPENSSL_BLOCK)); -unsigned char *ASN1_seq_pack(STACK_OF(OPENSSL_BLOCK) *safes, i2d_of_void *i2d, - unsigned char **buf, int *len); -void *ASN1_unpack_string(ASN1_STRING *oct, d2i_of_void *d2i); -void *ASN1_item_unpack(ASN1_STRING *oct, const ASN1_ITEM *it); -ASN1_STRING *ASN1_pack_string(void *obj, i2d_of_void *i2d, - ASN1_OCTET_STRING **oct); - -# define ASN1_pack_string_of(type,obj,i2d,oct) \ - (ASN1_pack_string(CHECKED_PTR_OF(type, obj), \ - CHECKED_I2D_OF(type, i2d), \ - oct)) - -ASN1_STRING *ASN1_item_pack(void *obj, const ASN1_ITEM *it, - ASN1_OCTET_STRING **oct); - -void ASN1_STRING_set_default_mask(unsigned long mask); -int ASN1_STRING_set_default_mask_asc(const char *p); -unsigned long ASN1_STRING_get_default_mask(void); -int ASN1_mbstring_copy(ASN1_STRING **out, const unsigned char *in, int len, - int inform, unsigned long mask); -int ASN1_mbstring_ncopy(ASN1_STRING **out, const unsigned char *in, int len, - int inform, unsigned long mask, - long minsize, long maxsize); - -ASN1_STRING *ASN1_STRING_set_by_NID(ASN1_STRING **out, - const unsigned char *in, int inlen, - int inform, int nid); -ASN1_STRING_TABLE *ASN1_STRING_TABLE_get(int nid); -int ASN1_STRING_TABLE_add(int, long, long, unsigned long, unsigned long); -void ASN1_STRING_TABLE_cleanup(void); - -/* ASN1 template functions */ - -/* Old API compatible functions */ -ASN1_VALUE *ASN1_item_new(const ASN1_ITEM *it); -void ASN1_item_free(ASN1_VALUE *val, const ASN1_ITEM *it); -ASN1_VALUE *ASN1_item_d2i(ASN1_VALUE **val, const unsigned char **in, - long len, const ASN1_ITEM *it); -int ASN1_item_i2d(ASN1_VALUE *val, unsigned char **out, const ASN1_ITEM *it); -int ASN1_item_ndef_i2d(ASN1_VALUE *val, unsigned char **out, - const ASN1_ITEM *it); - -void ASN1_add_oid_module(void); - -ASN1_TYPE *ASN1_generate_nconf(char *str, CONF *nconf); -ASN1_TYPE *ASN1_generate_v3(char *str, X509V3_CTX *cnf); - -/* ASN1 Print flags */ - -/* Indicate missing OPTIONAL fields */ -# define ASN1_PCTX_FLAGS_SHOW_ABSENT 0x001 -/* Mark start and end of SEQUENCE */ -# define ASN1_PCTX_FLAGS_SHOW_SEQUENCE 0x002 -/* Mark start and end of SEQUENCE/SET OF */ -# define ASN1_PCTX_FLAGS_SHOW_SSOF 0x004 -/* Show the ASN1 type of primitives */ -# define ASN1_PCTX_FLAGS_SHOW_TYPE 0x008 -/* Don't show ASN1 type of ANY */ -# define ASN1_PCTX_FLAGS_NO_ANY_TYPE 0x010 -/* Don't show ASN1 type of MSTRINGs */ -# define ASN1_PCTX_FLAGS_NO_MSTRING_TYPE 0x020 -/* Don't show field names in SEQUENCE */ -# define ASN1_PCTX_FLAGS_NO_FIELD_NAME 0x040 -/* Show structure names of each SEQUENCE field */ -# define ASN1_PCTX_FLAGS_SHOW_FIELD_STRUCT_NAME 0x080 -/* Don't show structure name even at top level */ -# define ASN1_PCTX_FLAGS_NO_STRUCT_NAME 0x100 - -int ASN1_item_print(BIO *out, ASN1_VALUE *ifld, int indent, - const ASN1_ITEM *it, const ASN1_PCTX *pctx); -ASN1_PCTX *ASN1_PCTX_new(void); -void ASN1_PCTX_free(ASN1_PCTX *p); -unsigned long ASN1_PCTX_get_flags(ASN1_PCTX *p); -void ASN1_PCTX_set_flags(ASN1_PCTX *p, unsigned long flags); -unsigned long ASN1_PCTX_get_nm_flags(ASN1_PCTX *p); -void ASN1_PCTX_set_nm_flags(ASN1_PCTX *p, unsigned long flags); -unsigned long ASN1_PCTX_get_cert_flags(ASN1_PCTX *p); -void ASN1_PCTX_set_cert_flags(ASN1_PCTX *p, unsigned long flags); -unsigned long ASN1_PCTX_get_oid_flags(ASN1_PCTX *p); -void ASN1_PCTX_set_oid_flags(ASN1_PCTX *p, unsigned long flags); -unsigned long ASN1_PCTX_get_str_flags(ASN1_PCTX *p); -void ASN1_PCTX_set_str_flags(ASN1_PCTX *p, unsigned long flags); - -BIO_METHOD *BIO_f_asn1(void); - -BIO *BIO_new_NDEF(BIO *out, ASN1_VALUE *val, const ASN1_ITEM *it); - -int i2d_ASN1_bio_stream(BIO *out, ASN1_VALUE *val, BIO *in, int flags, - const ASN1_ITEM *it); -int PEM_write_bio_ASN1_stream(BIO *out, ASN1_VALUE *val, BIO *in, int flags, - const char *hdr, const ASN1_ITEM *it); -int SMIME_write_ASN1(BIO *bio, ASN1_VALUE *val, BIO *data, int flags, - int ctype_nid, int econt_nid, - STACK_OF(X509_ALGOR) *mdalgs, const ASN1_ITEM *it); -ASN1_VALUE *SMIME_read_ASN1(BIO *bio, BIO **bcont, const ASN1_ITEM *it); -int SMIME_crlf_copy(BIO *in, BIO *out, int flags); -int SMIME_text(BIO *in, BIO *out); - -/* BEGIN ERROR CODES */ -/* - * The following lines are auto generated by the script mkerr.pl. Any changes - * made after this point may be overwritten when the script is next run. - */ -void ERR_load_ASN1_strings(void); - -/* Error codes for the ASN1 functions. */ - -/* Function codes. */ -# define ASN1_F_A2D_ASN1_OBJECT 100 -# define ASN1_F_A2I_ASN1_ENUMERATED 101 -# define ASN1_F_A2I_ASN1_INTEGER 102 -# define ASN1_F_A2I_ASN1_STRING 103 -# define ASN1_F_APPEND_EXP 176 -# define ASN1_F_ASN1_BIT_STRING_SET_BIT 183 -# define ASN1_F_ASN1_CB 177 -# define ASN1_F_ASN1_CHECK_TLEN 104 -# define ASN1_F_ASN1_COLLATE_PRIMITIVE 105 -# define ASN1_F_ASN1_COLLECT 106 -# define ASN1_F_ASN1_D2I_EX_PRIMITIVE 108 -# define ASN1_F_ASN1_D2I_FP 109 -# define ASN1_F_ASN1_D2I_READ_BIO 107 -# define ASN1_F_ASN1_DIGEST 184 -# define ASN1_F_ASN1_DO_ADB 110 -# define ASN1_F_ASN1_DUP 111 -# define ASN1_F_ASN1_ENUMERATED_SET 112 -# define ASN1_F_ASN1_ENUMERATED_TO_BN 113 -# define ASN1_F_ASN1_EX_C2I 204 -# define ASN1_F_ASN1_FIND_END 190 -# define ASN1_F_ASN1_GENERALIZEDTIME_ADJ 216 -# define ASN1_F_ASN1_GENERALIZEDTIME_SET 185 -# define ASN1_F_ASN1_GENERATE_V3 178 -# define ASN1_F_ASN1_GET_OBJECT 114 -# define ASN1_F_ASN1_HEADER_NEW 115 -# define ASN1_F_ASN1_I2D_BIO 116 -# define ASN1_F_ASN1_I2D_FP 117 -# define ASN1_F_ASN1_INTEGER_SET 118 -# define ASN1_F_ASN1_INTEGER_TO_BN 119 -# define ASN1_F_ASN1_ITEM_D2I_FP 206 -# define ASN1_F_ASN1_ITEM_DUP 191 -# define ASN1_F_ASN1_ITEM_EX_COMBINE_NEW 121 -# define ASN1_F_ASN1_ITEM_EX_D2I 120 -# define ASN1_F_ASN1_ITEM_I2D_BIO 192 -# define ASN1_F_ASN1_ITEM_I2D_FP 193 -# define ASN1_F_ASN1_ITEM_PACK 198 -# define ASN1_F_ASN1_ITEM_SIGN 195 -# define ASN1_F_ASN1_ITEM_SIGN_CTX 220 -# define ASN1_F_ASN1_ITEM_UNPACK 199 -# define ASN1_F_ASN1_ITEM_VERIFY 197 -# define ASN1_F_ASN1_MBSTRING_NCOPY 122 -# define ASN1_F_ASN1_OBJECT_NEW 123 -# define ASN1_F_ASN1_OUTPUT_DATA 214 -# define ASN1_F_ASN1_PACK_STRING 124 -# define ASN1_F_ASN1_PCTX_NEW 205 -# define ASN1_F_ASN1_PKCS5_PBE_SET 125 -# define ASN1_F_ASN1_SEQ_PACK 126 -# define ASN1_F_ASN1_SEQ_UNPACK 127 -# define ASN1_F_ASN1_SIGN 128 -# define ASN1_F_ASN1_STR2TYPE 179 -# define ASN1_F_ASN1_STRING_SET 186 -# define ASN1_F_ASN1_STRING_TABLE_ADD 129 -# define ASN1_F_ASN1_STRING_TYPE_NEW 130 -# define ASN1_F_ASN1_TEMPLATE_EX_D2I 132 -# define ASN1_F_ASN1_TEMPLATE_NEW 133 -# define ASN1_F_ASN1_TEMPLATE_NOEXP_D2I 131 -# define ASN1_F_ASN1_TIME_ADJ 217 -# define ASN1_F_ASN1_TIME_SET 175 -# define ASN1_F_ASN1_TYPE_GET_INT_OCTETSTRING 134 -# define ASN1_F_ASN1_TYPE_GET_OCTETSTRING 135 -# define ASN1_F_ASN1_UNPACK_STRING 136 -# define ASN1_F_ASN1_UTCTIME_ADJ 218 -# define ASN1_F_ASN1_UTCTIME_SET 187 -# define ASN1_F_ASN1_VERIFY 137 -# define ASN1_F_B64_READ_ASN1 209 -# define ASN1_F_B64_WRITE_ASN1 210 -# define ASN1_F_BIO_NEW_NDEF 208 -# define ASN1_F_BITSTR_CB 180 -# define ASN1_F_BN_TO_ASN1_ENUMERATED 138 -# define ASN1_F_BN_TO_ASN1_INTEGER 139 -# define ASN1_F_C2I_ASN1_BIT_STRING 189 -# define ASN1_F_C2I_ASN1_INTEGER 194 -# define ASN1_F_C2I_ASN1_OBJECT 196 -# define ASN1_F_COLLECT_DATA 140 -# define ASN1_F_D2I_ASN1_BIT_STRING 141 -# define ASN1_F_D2I_ASN1_BOOLEAN 142 -# define ASN1_F_D2I_ASN1_BYTES 143 -# define ASN1_F_D2I_ASN1_GENERALIZEDTIME 144 -# define ASN1_F_D2I_ASN1_HEADER 145 -# define ASN1_F_D2I_ASN1_INTEGER 146 -# define ASN1_F_D2I_ASN1_OBJECT 147 -# define ASN1_F_D2I_ASN1_SET 148 -# define ASN1_F_D2I_ASN1_TYPE_BYTES 149 -# define ASN1_F_D2I_ASN1_UINTEGER 150 -# define ASN1_F_D2I_ASN1_UTCTIME 151 -# define ASN1_F_D2I_AUTOPRIVATEKEY 207 -# define ASN1_F_D2I_NETSCAPE_RSA 152 -# define ASN1_F_D2I_NETSCAPE_RSA_2 153 -# define ASN1_F_D2I_PRIVATEKEY 154 -# define ASN1_F_D2I_PUBLICKEY 155 -# define ASN1_F_D2I_RSA_NET 200 -# define ASN1_F_D2I_RSA_NET_2 201 -# define ASN1_F_D2I_X509 156 -# define ASN1_F_D2I_X509_CINF 157 -# define ASN1_F_D2I_X509_PKEY 159 -# define ASN1_F_I2D_ASN1_BIO_STREAM 211 -# define ASN1_F_I2D_ASN1_SET 188 -# define ASN1_F_I2D_ASN1_TIME 160 -# define ASN1_F_I2D_DSA_PUBKEY 161 -# define ASN1_F_I2D_EC_PUBKEY 181 -# define ASN1_F_I2D_PRIVATEKEY 163 -# define ASN1_F_I2D_PUBLICKEY 164 -# define ASN1_F_I2D_RSA_NET 162 -# define ASN1_F_I2D_RSA_PUBKEY 165 -# define ASN1_F_LONG_C2I 166 -# define ASN1_F_OID_MODULE_INIT 174 -# define ASN1_F_PARSE_TAGGING 182 -# define ASN1_F_PKCS5_PBE2_SET_IV 167 -# define ASN1_F_PKCS5_PBE_SET 202 -# define ASN1_F_PKCS5_PBE_SET0_ALGOR 215 -# define ASN1_F_PKCS5_PBKDF2_SET 219 -# define ASN1_F_SMIME_READ_ASN1 212 -# define ASN1_F_SMIME_TEXT 213 -# define ASN1_F_X509_CINF_NEW 168 -# define ASN1_F_X509_CRL_ADD0_REVOKED 169 -# define ASN1_F_X509_INFO_NEW 170 -# define ASN1_F_X509_NAME_ENCODE 203 -# define ASN1_F_X509_NAME_EX_D2I 158 -# define ASN1_F_X509_NAME_EX_NEW 171 -# define ASN1_F_X509_NEW 172 -# define ASN1_F_X509_PKEY_NEW 173 - -/* Reason codes. */ -# define ASN1_R_ADDING_OBJECT 171 -# define ASN1_R_ASN1_PARSE_ERROR 203 -# define ASN1_R_ASN1_SIG_PARSE_ERROR 204 -# define ASN1_R_AUX_ERROR 100 -# define ASN1_R_BAD_CLASS 101 -# define ASN1_R_BAD_OBJECT_HEADER 102 -# define ASN1_R_BAD_PASSWORD_READ 103 -# define ASN1_R_BAD_TAG 104 -# define ASN1_R_BMPSTRING_IS_WRONG_LENGTH 214 -# define ASN1_R_BN_LIB 105 -# define ASN1_R_BOOLEAN_IS_WRONG_LENGTH 106 -# define ASN1_R_BUFFER_TOO_SMALL 107 -# define ASN1_R_CIPHER_HAS_NO_OBJECT_IDENTIFIER 108 -# define ASN1_R_CONTEXT_NOT_INITIALISED 217 -# define ASN1_R_DATA_IS_WRONG 109 -# define ASN1_R_DECODE_ERROR 110 -# define ASN1_R_DECODING_ERROR 111 -# define ASN1_R_DEPTH_EXCEEDED 174 -# define ASN1_R_DIGEST_AND_KEY_TYPE_NOT_SUPPORTED 198 -# define ASN1_R_ENCODE_ERROR 112 -# define ASN1_R_ERROR_GETTING_TIME 173 -# define ASN1_R_ERROR_LOADING_SECTION 172 -# define ASN1_R_ERROR_PARSING_SET_ELEMENT 113 -# define ASN1_R_ERROR_SETTING_CIPHER_PARAMS 114 -# define ASN1_R_EXPECTING_AN_INTEGER 115 -# define ASN1_R_EXPECTING_AN_OBJECT 116 -# define ASN1_R_EXPECTING_A_BOOLEAN 117 -# define ASN1_R_EXPECTING_A_TIME 118 -# define ASN1_R_EXPLICIT_LENGTH_MISMATCH 119 -# define ASN1_R_EXPLICIT_TAG_NOT_CONSTRUCTED 120 -# define ASN1_R_FIELD_MISSING 121 -# define ASN1_R_FIRST_NUM_TOO_LARGE 122 -# define ASN1_R_HEADER_TOO_LONG 123 -# define ASN1_R_ILLEGAL_BITSTRING_FORMAT 175 -# define ASN1_R_ILLEGAL_BOOLEAN 176 -# define ASN1_R_ILLEGAL_CHARACTERS 124 -# define ASN1_R_ILLEGAL_FORMAT 177 -# define ASN1_R_ILLEGAL_HEX 178 -# define ASN1_R_ILLEGAL_IMPLICIT_TAG 179 -# define ASN1_R_ILLEGAL_INTEGER 180 -# define ASN1_R_ILLEGAL_NESTED_TAGGING 181 -# define ASN1_R_ILLEGAL_NULL 125 -# define ASN1_R_ILLEGAL_NULL_VALUE 182 -# define ASN1_R_ILLEGAL_OBJECT 183 -# define ASN1_R_ILLEGAL_OPTIONAL_ANY 126 -# define ASN1_R_ILLEGAL_OPTIONS_ON_ITEM_TEMPLATE 170 -# define ASN1_R_ILLEGAL_TAGGED_ANY 127 -# define ASN1_R_ILLEGAL_TIME_VALUE 184 -# define ASN1_R_INTEGER_NOT_ASCII_FORMAT 185 -# define ASN1_R_INTEGER_TOO_LARGE_FOR_LONG 128 -# define ASN1_R_INVALID_BIT_STRING_BITS_LEFT 220 -# define ASN1_R_INVALID_BMPSTRING_LENGTH 129 -# define ASN1_R_INVALID_DIGIT 130 -# define ASN1_R_INVALID_MIME_TYPE 205 -# define ASN1_R_INVALID_MODIFIER 186 -# define ASN1_R_INVALID_NUMBER 187 -# define ASN1_R_INVALID_OBJECT_ENCODING 216 -# define ASN1_R_INVALID_SEPARATOR 131 -# define ASN1_R_INVALID_TIME_FORMAT 132 -# define ASN1_R_INVALID_UNIVERSALSTRING_LENGTH 133 -# define ASN1_R_INVALID_UTF8STRING 134 -# define ASN1_R_IV_TOO_LARGE 135 -# define ASN1_R_LENGTH_ERROR 136 -# define ASN1_R_LIST_ERROR 188 -# define ASN1_R_MIME_NO_CONTENT_TYPE 206 -# define ASN1_R_MIME_PARSE_ERROR 207 -# define ASN1_R_MIME_SIG_PARSE_ERROR 208 -# define ASN1_R_MISSING_EOC 137 -# define ASN1_R_MISSING_SECOND_NUMBER 138 -# define ASN1_R_MISSING_VALUE 189 -# define ASN1_R_MSTRING_NOT_UNIVERSAL 139 -# define ASN1_R_MSTRING_WRONG_TAG 140 -# define ASN1_R_NESTED_ASN1_STRING 197 -# define ASN1_R_NON_HEX_CHARACTERS 141 -# define ASN1_R_NOT_ASCII_FORMAT 190 -# define ASN1_R_NOT_ENOUGH_DATA 142 -# define ASN1_R_NO_CONTENT_TYPE 209 -# define ASN1_R_NO_DEFAULT_DIGEST 201 -# define ASN1_R_NO_MATCHING_CHOICE_TYPE 143 -# define ASN1_R_NO_MULTIPART_BODY_FAILURE 210 -# define ASN1_R_NO_MULTIPART_BOUNDARY 211 -# define ASN1_R_NO_SIG_CONTENT_TYPE 212 -# define ASN1_R_NULL_IS_WRONG_LENGTH 144 -# define ASN1_R_OBJECT_NOT_ASCII_FORMAT 191 -# define ASN1_R_ODD_NUMBER_OF_CHARS 145 -# define ASN1_R_PRIVATE_KEY_HEADER_MISSING 146 -# define ASN1_R_SECOND_NUMBER_TOO_LARGE 147 -# define ASN1_R_SEQUENCE_LENGTH_MISMATCH 148 -# define ASN1_R_SEQUENCE_NOT_CONSTRUCTED 149 -# define ASN1_R_SEQUENCE_OR_SET_NEEDS_CONFIG 192 -# define ASN1_R_SHORT_LINE 150 -# define ASN1_R_SIG_INVALID_MIME_TYPE 213 -# define ASN1_R_STREAMING_NOT_SUPPORTED 202 -# define ASN1_R_STRING_TOO_LONG 151 -# define ASN1_R_STRING_TOO_SHORT 152 -# define ASN1_R_TAG_VALUE_TOO_HIGH 153 -# define ASN1_R_THE_ASN1_OBJECT_IDENTIFIER_IS_NOT_KNOWN_FOR_THIS_MD 154 -# define ASN1_R_TIME_NOT_ASCII_FORMAT 193 -# define ASN1_R_TOO_LONG 155 -# define ASN1_R_TYPE_NOT_CONSTRUCTED 156 -# define ASN1_R_TYPE_NOT_PRIMITIVE 218 -# define ASN1_R_UNABLE_TO_DECODE_RSA_KEY 157 -# define ASN1_R_UNABLE_TO_DECODE_RSA_PRIVATE_KEY 158 -# define ASN1_R_UNEXPECTED_EOC 159 -# define ASN1_R_UNIVERSALSTRING_IS_WRONG_LENGTH 215 -# define ASN1_R_UNKNOWN_FORMAT 160 -# define ASN1_R_UNKNOWN_MESSAGE_DIGEST_ALGORITHM 161 -# define ASN1_R_UNKNOWN_OBJECT_TYPE 162 -# define ASN1_R_UNKNOWN_PUBLIC_KEY_TYPE 163 -# define ASN1_R_UNKNOWN_SIGNATURE_ALGORITHM 199 -# define ASN1_R_UNKNOWN_TAG 194 -# define ASN1_R_UNKOWN_FORMAT 195 -# define ASN1_R_UNSUPPORTED_ANY_DEFINED_BY_TYPE 164 -# define ASN1_R_UNSUPPORTED_CIPHER 165 -# define ASN1_R_UNSUPPORTED_ENCRYPTION_ALGORITHM 166 -# define ASN1_R_UNSUPPORTED_PUBLIC_KEY_TYPE 167 -# define ASN1_R_UNSUPPORTED_TYPE 196 -# define ASN1_R_WRONG_PUBLIC_KEY_TYPE 200 -# define ASN1_R_WRONG_TAG 168 -# define ASN1_R_WRONG_TYPE 169 - -#ifdef __cplusplus -} -#endif -#endif diff --git a/ext/openssl-win64/inc32/openssl/bio.h b/ext/openssl-win64/inc32/openssl/bio.h deleted file mode 100644 index 60083bfd..00000000 --- a/ext/openssl-win64/inc32/openssl/bio.h +++ /dev/null @@ -1,878 +0,0 @@ -/* crypto/bio/bio.h */ -/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) - * All rights reserved. - * - * This package is an SSL implementation written - * by Eric Young (eay@cryptsoft.com). - * The implementation was written so as to conform with Netscapes SSL. - * - * This library is free for commercial and non-commercial use as long as - * the following conditions are aheared to. The following conditions - * apply to all code found in this distribution, be it the RC4, RSA, - * lhash, DES, etc., code; not just the SSL code. The SSL documentation - * included with this distribution is covered by the same copyright terms - * except that the holder is Tim Hudson (tjh@cryptsoft.com). - * - * Copyright remains Eric Young's, and as such any Copyright notices in - * the code are not to be removed. - * If this package is used in a product, Eric Young should be given attribution - * as the author of the parts of the library used. - * This can be in the form of a textual message at program startup or - * in documentation (online or textual) provided with the package. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * "This product includes cryptographic software written by - * Eric Young (eay@cryptsoft.com)" - * The word 'cryptographic' can be left out if the rouines from the library - * being used are not cryptographic related :-). - * 4. If you include any Windows specific code (or a derivative thereof) from - * the apps directory (application code) you must include an acknowledgement: - * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" - * - * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * The licence and distribution terms for any publically available version or - * derivative of this code cannot be changed. i.e. this code cannot simply be - * copied and put under another distribution licence - * [including the GNU Public Licence.] - */ - -#ifndef HEADER_BIO_H -# define HEADER_BIO_H - -# include - -# ifndef OPENSSL_NO_FP_API -# include -# endif -# include - -# include - -# ifndef OPENSSL_NO_SCTP -# ifndef OPENSSL_SYS_VMS -# include -# else -# include -# endif -# endif - -#ifdef __cplusplus -extern "C" { -#endif - -/* These are the 'types' of BIOs */ -# define BIO_TYPE_NONE 0 -# define BIO_TYPE_MEM (1|0x0400) -# define BIO_TYPE_FILE (2|0x0400) - -# define BIO_TYPE_FD (4|0x0400|0x0100) -# define BIO_TYPE_SOCKET (5|0x0400|0x0100) -# define BIO_TYPE_NULL (6|0x0400) -# define BIO_TYPE_SSL (7|0x0200) -# define BIO_TYPE_MD (8|0x0200)/* passive filter */ -# define BIO_TYPE_BUFFER (9|0x0200)/* filter */ -# define BIO_TYPE_CIPHER (10|0x0200)/* filter */ -# define BIO_TYPE_BASE64 (11|0x0200)/* filter */ -# define BIO_TYPE_CONNECT (12|0x0400|0x0100)/* socket - connect */ -# define BIO_TYPE_ACCEPT (13|0x0400|0x0100)/* socket for accept */ -# define BIO_TYPE_PROXY_CLIENT (14|0x0200)/* client proxy BIO */ -# define BIO_TYPE_PROXY_SERVER (15|0x0200)/* server proxy BIO */ -# define BIO_TYPE_NBIO_TEST (16|0x0200)/* server proxy BIO */ -# define BIO_TYPE_NULL_FILTER (17|0x0200) -# define BIO_TYPE_BER (18|0x0200)/* BER -> bin filter */ -# define BIO_TYPE_BIO (19|0x0400)/* (half a) BIO pair */ -# define BIO_TYPE_LINEBUFFER (20|0x0200)/* filter */ -# define BIO_TYPE_DGRAM (21|0x0400|0x0100) -# ifndef OPENSSL_NO_SCTP -# define BIO_TYPE_DGRAM_SCTP (24|0x0400|0x0100) -# endif -# define BIO_TYPE_ASN1 (22|0x0200)/* filter */ -# define BIO_TYPE_COMP (23|0x0200)/* filter */ - -# define BIO_TYPE_DESCRIPTOR 0x0100/* socket, fd, connect or accept */ -# define BIO_TYPE_FILTER 0x0200 -# define BIO_TYPE_SOURCE_SINK 0x0400 - -/* - * BIO_FILENAME_READ|BIO_CLOSE to open or close on free. - * BIO_set_fp(in,stdin,BIO_NOCLOSE); - */ -# define BIO_NOCLOSE 0x00 -# define BIO_CLOSE 0x01 - -/* - * These are used in the following macros and are passed to BIO_ctrl() - */ -# define BIO_CTRL_RESET 1/* opt - rewind/zero etc */ -# define BIO_CTRL_EOF 2/* opt - are we at the eof */ -# define BIO_CTRL_INFO 3/* opt - extra tit-bits */ -# define BIO_CTRL_SET 4/* man - set the 'IO' type */ -# define BIO_CTRL_GET 5/* man - get the 'IO' type */ -# define BIO_CTRL_PUSH 6/* opt - internal, used to signify change */ -# define BIO_CTRL_POP 7/* opt - internal, used to signify change */ -# define BIO_CTRL_GET_CLOSE 8/* man - set the 'close' on free */ -# define BIO_CTRL_SET_CLOSE 9/* man - set the 'close' on free */ -# define BIO_CTRL_PENDING 10/* opt - is their more data buffered */ -# define BIO_CTRL_FLUSH 11/* opt - 'flush' buffered output */ -# define BIO_CTRL_DUP 12/* man - extra stuff for 'duped' BIO */ -# define BIO_CTRL_WPENDING 13/* opt - number of bytes still to write */ -/* callback is int cb(BIO *bio,state,ret); */ -# define BIO_CTRL_SET_CALLBACK 14/* opt - set callback function */ -# define BIO_CTRL_GET_CALLBACK 15/* opt - set callback function */ - -# define BIO_CTRL_SET_FILENAME 30/* BIO_s_file special */ - -/* dgram BIO stuff */ -# define BIO_CTRL_DGRAM_CONNECT 31/* BIO dgram special */ -# define BIO_CTRL_DGRAM_SET_CONNECTED 32/* allow for an externally connected - * socket to be passed in */ -# define BIO_CTRL_DGRAM_SET_RECV_TIMEOUT 33/* setsockopt, essentially */ -# define BIO_CTRL_DGRAM_GET_RECV_TIMEOUT 34/* getsockopt, essentially */ -# define BIO_CTRL_DGRAM_SET_SEND_TIMEOUT 35/* setsockopt, essentially */ -# define BIO_CTRL_DGRAM_GET_SEND_TIMEOUT 36/* getsockopt, essentially */ - -# define BIO_CTRL_DGRAM_GET_RECV_TIMER_EXP 37/* flag whether the last */ -# define BIO_CTRL_DGRAM_GET_SEND_TIMER_EXP 38/* I/O operation tiemd out */ - -/* #ifdef IP_MTU_DISCOVER */ -# define BIO_CTRL_DGRAM_MTU_DISCOVER 39/* set DF bit on egress packets */ -/* #endif */ - -# define BIO_CTRL_DGRAM_QUERY_MTU 40/* as kernel for current MTU */ -# define BIO_CTRL_DGRAM_GET_FALLBACK_MTU 47 -# define BIO_CTRL_DGRAM_GET_MTU 41/* get cached value for MTU */ -# define BIO_CTRL_DGRAM_SET_MTU 42/* set cached value for MTU. - * want to use this if asking - * the kernel fails */ - -# define BIO_CTRL_DGRAM_MTU_EXCEEDED 43/* check whether the MTU was - * exceed in the previous write - * operation */ - -# define BIO_CTRL_DGRAM_GET_PEER 46 -# define BIO_CTRL_DGRAM_SET_PEER 44/* Destination for the data */ - -# define BIO_CTRL_DGRAM_SET_NEXT_TIMEOUT 45/* Next DTLS handshake timeout - * to adjust socket timeouts */ -# define BIO_CTRL_DGRAM_SET_DONT_FRAG 48 - -# define BIO_CTRL_DGRAM_GET_MTU_OVERHEAD 49 - -# ifndef OPENSSL_NO_SCTP -/* SCTP stuff */ -# define BIO_CTRL_DGRAM_SCTP_SET_IN_HANDSHAKE 50 -# define BIO_CTRL_DGRAM_SCTP_ADD_AUTH_KEY 51 -# define BIO_CTRL_DGRAM_SCTP_NEXT_AUTH_KEY 52 -# define BIO_CTRL_DGRAM_SCTP_AUTH_CCS_RCVD 53 -# define BIO_CTRL_DGRAM_SCTP_GET_SNDINFO 60 -# define BIO_CTRL_DGRAM_SCTP_SET_SNDINFO 61 -# define BIO_CTRL_DGRAM_SCTP_GET_RCVINFO 62 -# define BIO_CTRL_DGRAM_SCTP_SET_RCVINFO 63 -# define BIO_CTRL_DGRAM_SCTP_GET_PRINFO 64 -# define BIO_CTRL_DGRAM_SCTP_SET_PRINFO 65 -# define BIO_CTRL_DGRAM_SCTP_SAVE_SHUTDOWN 70 -# endif - -/* modifiers */ -# define BIO_FP_READ 0x02 -# define BIO_FP_WRITE 0x04 -# define BIO_FP_APPEND 0x08 -# define BIO_FP_TEXT 0x10 - -# define BIO_FLAGS_READ 0x01 -# define BIO_FLAGS_WRITE 0x02 -# define BIO_FLAGS_IO_SPECIAL 0x04 -# define BIO_FLAGS_RWS (BIO_FLAGS_READ|BIO_FLAGS_WRITE|BIO_FLAGS_IO_SPECIAL) -# define BIO_FLAGS_SHOULD_RETRY 0x08 -# ifndef BIO_FLAGS_UPLINK -/* - * "UPLINK" flag denotes file descriptors provided by application. It - * defaults to 0, as most platforms don't require UPLINK interface. - */ -# define BIO_FLAGS_UPLINK 0 -# endif - -/* Used in BIO_gethostbyname() */ -# define BIO_GHBN_CTRL_HITS 1 -# define BIO_GHBN_CTRL_MISSES 2 -# define BIO_GHBN_CTRL_CACHE_SIZE 3 -# define BIO_GHBN_CTRL_GET_ENTRY 4 -# define BIO_GHBN_CTRL_FLUSH 5 - -/* Mostly used in the SSL BIO */ -/*- - * Not used anymore - * #define BIO_FLAGS_PROTOCOL_DELAYED_READ 0x10 - * #define BIO_FLAGS_PROTOCOL_DELAYED_WRITE 0x20 - * #define BIO_FLAGS_PROTOCOL_STARTUP 0x40 - */ - -# define BIO_FLAGS_BASE64_NO_NL 0x100 - -/* - * This is used with memory BIOs: it means we shouldn't free up or change the - * data in any way. - */ -# define BIO_FLAGS_MEM_RDONLY 0x200 - -typedef struct bio_st BIO; - -void BIO_set_flags(BIO *b, int flags); -int BIO_test_flags(const BIO *b, int flags); -void BIO_clear_flags(BIO *b, int flags); - -# define BIO_get_flags(b) BIO_test_flags(b, ~(0x0)) -# define BIO_set_retry_special(b) \ - BIO_set_flags(b, (BIO_FLAGS_IO_SPECIAL|BIO_FLAGS_SHOULD_RETRY)) -# define BIO_set_retry_read(b) \ - BIO_set_flags(b, (BIO_FLAGS_READ|BIO_FLAGS_SHOULD_RETRY)) -# define BIO_set_retry_write(b) \ - BIO_set_flags(b, (BIO_FLAGS_WRITE|BIO_FLAGS_SHOULD_RETRY)) - -/* These are normally used internally in BIOs */ -# define BIO_clear_retry_flags(b) \ - BIO_clear_flags(b, (BIO_FLAGS_RWS|BIO_FLAGS_SHOULD_RETRY)) -# define BIO_get_retry_flags(b) \ - BIO_test_flags(b, (BIO_FLAGS_RWS|BIO_FLAGS_SHOULD_RETRY)) - -/* These should be used by the application to tell why we should retry */ -# define BIO_should_read(a) BIO_test_flags(a, BIO_FLAGS_READ) -# define BIO_should_write(a) BIO_test_flags(a, BIO_FLAGS_WRITE) -# define BIO_should_io_special(a) BIO_test_flags(a, BIO_FLAGS_IO_SPECIAL) -# define BIO_retry_type(a) BIO_test_flags(a, BIO_FLAGS_RWS) -# define BIO_should_retry(a) BIO_test_flags(a, BIO_FLAGS_SHOULD_RETRY) - -/* - * The next three are used in conjunction with the BIO_should_io_special() - * condition. After this returns true, BIO *BIO_get_retry_BIO(BIO *bio, int - * *reason); will walk the BIO stack and return the 'reason' for the special - * and the offending BIO. Given a BIO, BIO_get_retry_reason(bio) will return - * the code. - */ -/* - * Returned from the SSL bio when the certificate retrieval code had an error - */ -# define BIO_RR_SSL_X509_LOOKUP 0x01 -/* Returned from the connect BIO when a connect would have blocked */ -# define BIO_RR_CONNECT 0x02 -/* Returned from the accept BIO when an accept would have blocked */ -# define BIO_RR_ACCEPT 0x03 - -/* These are passed by the BIO callback */ -# define BIO_CB_FREE 0x01 -# define BIO_CB_READ 0x02 -# define BIO_CB_WRITE 0x03 -# define BIO_CB_PUTS 0x04 -# define BIO_CB_GETS 0x05 -# define BIO_CB_CTRL 0x06 - -/* - * The callback is called before and after the underling operation, The - * BIO_CB_RETURN flag indicates if it is after the call - */ -# define BIO_CB_RETURN 0x80 -# define BIO_CB_return(a) ((a)|BIO_CB_RETURN)) -# define BIO_cb_pre(a) (!((a)&BIO_CB_RETURN)) -# define BIO_cb_post(a) ((a)&BIO_CB_RETURN) - -long (*BIO_get_callback(const BIO *b)) (struct bio_st *, int, const char *, - int, long, long); -void BIO_set_callback(BIO *b, - long (*callback) (struct bio_st *, int, const char *, - int, long, long)); -char *BIO_get_callback_arg(const BIO *b); -void BIO_set_callback_arg(BIO *b, char *arg); - -const char *BIO_method_name(const BIO *b); -int BIO_method_type(const BIO *b); - -typedef void bio_info_cb (struct bio_st *, int, const char *, int, long, - long); - -typedef struct bio_method_st { - int type; - const char *name; - int (*bwrite) (BIO *, const char *, int); - int (*bread) (BIO *, char *, int); - int (*bputs) (BIO *, const char *); - int (*bgets) (BIO *, char *, int); - long (*ctrl) (BIO *, int, long, void *); - int (*create) (BIO *); - int (*destroy) (BIO *); - long (*callback_ctrl) (BIO *, int, bio_info_cb *); -} BIO_METHOD; - -struct bio_st { - BIO_METHOD *method; - /* bio, mode, argp, argi, argl, ret */ - long (*callback) (struct bio_st *, int, const char *, int, long, long); - char *cb_arg; /* first argument for the callback */ - int init; - int shutdown; - int flags; /* extra storage */ - int retry_reason; - int num; - void *ptr; - struct bio_st *next_bio; /* used by filter BIOs */ - struct bio_st *prev_bio; /* used by filter BIOs */ - int references; - unsigned long num_read; - unsigned long num_write; - CRYPTO_EX_DATA ex_data; -}; - -DECLARE_STACK_OF(BIO) - -typedef struct bio_f_buffer_ctx_struct { - /*- - * Buffers are setup like this: - * - * <---------------------- size -----------------------> - * +---------------------------------------------------+ - * | consumed | remaining | free space | - * +---------------------------------------------------+ - * <-- off --><------- len -------> - */ - /*- BIO *bio; *//* - * this is now in the BIO struct - */ - int ibuf_size; /* how big is the input buffer */ - int obuf_size; /* how big is the output buffer */ - char *ibuf; /* the char array */ - int ibuf_len; /* how many bytes are in it */ - int ibuf_off; /* write/read offset */ - char *obuf; /* the char array */ - int obuf_len; /* how many bytes are in it */ - int obuf_off; /* write/read offset */ -} BIO_F_BUFFER_CTX; - -/* Prefix and suffix callback in ASN1 BIO */ -typedef int asn1_ps_func (BIO *b, unsigned char **pbuf, int *plen, - void *parg); - -# ifndef OPENSSL_NO_SCTP -/* SCTP parameter structs */ -struct bio_dgram_sctp_sndinfo { - uint16_t snd_sid; - uint16_t snd_flags; - uint32_t snd_ppid; - uint32_t snd_context; -}; - -struct bio_dgram_sctp_rcvinfo { - uint16_t rcv_sid; - uint16_t rcv_ssn; - uint16_t rcv_flags; - uint32_t rcv_ppid; - uint32_t rcv_tsn; - uint32_t rcv_cumtsn; - uint32_t rcv_context; -}; - -struct bio_dgram_sctp_prinfo { - uint16_t pr_policy; - uint32_t pr_value; -}; -# endif - -/* connect BIO stuff */ -# define BIO_CONN_S_BEFORE 1 -# define BIO_CONN_S_GET_IP 2 -# define BIO_CONN_S_GET_PORT 3 -# define BIO_CONN_S_CREATE_SOCKET 4 -# define BIO_CONN_S_CONNECT 5 -# define BIO_CONN_S_OK 6 -# define BIO_CONN_S_BLOCKED_CONNECT 7 -# define BIO_CONN_S_NBIO 8 -/* - * #define BIO_CONN_get_param_hostname BIO_ctrl - */ - -# define BIO_C_SET_CONNECT 100 -# define BIO_C_DO_STATE_MACHINE 101 -# define BIO_C_SET_NBIO 102 -# define BIO_C_SET_PROXY_PARAM 103 -# define BIO_C_SET_FD 104 -# define BIO_C_GET_FD 105 -# define BIO_C_SET_FILE_PTR 106 -# define BIO_C_GET_FILE_PTR 107 -# define BIO_C_SET_FILENAME 108 -# define BIO_C_SET_SSL 109 -# define BIO_C_GET_SSL 110 -# define BIO_C_SET_MD 111 -# define BIO_C_GET_MD 112 -# define BIO_C_GET_CIPHER_STATUS 113 -# define BIO_C_SET_BUF_MEM 114 -# define BIO_C_GET_BUF_MEM_PTR 115 -# define BIO_C_GET_BUFF_NUM_LINES 116 -# define BIO_C_SET_BUFF_SIZE 117 -# define BIO_C_SET_ACCEPT 118 -# define BIO_C_SSL_MODE 119 -# define BIO_C_GET_MD_CTX 120 -# define BIO_C_GET_PROXY_PARAM 121 -# define BIO_C_SET_BUFF_READ_DATA 122/* data to read first */ -# define BIO_C_GET_CONNECT 123 -# define BIO_C_GET_ACCEPT 124 -# define BIO_C_SET_SSL_RENEGOTIATE_BYTES 125 -# define BIO_C_GET_SSL_NUM_RENEGOTIATES 126 -# define BIO_C_SET_SSL_RENEGOTIATE_TIMEOUT 127 -# define BIO_C_FILE_SEEK 128 -# define BIO_C_GET_CIPHER_CTX 129 -# define BIO_C_SET_BUF_MEM_EOF_RETURN 130/* return end of input - * value */ -# define BIO_C_SET_BIND_MODE 131 -# define BIO_C_GET_BIND_MODE 132 -# define BIO_C_FILE_TELL 133 -# define BIO_C_GET_SOCKS 134 -# define BIO_C_SET_SOCKS 135 - -# define BIO_C_SET_WRITE_BUF_SIZE 136/* for BIO_s_bio */ -# define BIO_C_GET_WRITE_BUF_SIZE 137 -# define BIO_C_MAKE_BIO_PAIR 138 -# define BIO_C_DESTROY_BIO_PAIR 139 -# define BIO_C_GET_WRITE_GUARANTEE 140 -# define BIO_C_GET_READ_REQUEST 141 -# define BIO_C_SHUTDOWN_WR 142 -# define BIO_C_NREAD0 143 -# define BIO_C_NREAD 144 -# define BIO_C_NWRITE0 145 -# define BIO_C_NWRITE 146 -# define BIO_C_RESET_READ_REQUEST 147 -# define BIO_C_SET_MD_CTX 148 - -# define BIO_C_SET_PREFIX 149 -# define BIO_C_GET_PREFIX 150 -# define BIO_C_SET_SUFFIX 151 -# define BIO_C_GET_SUFFIX 152 - -# define BIO_C_SET_EX_ARG 153 -# define BIO_C_GET_EX_ARG 154 - -# define BIO_set_app_data(s,arg) BIO_set_ex_data(s,0,arg) -# define BIO_get_app_data(s) BIO_get_ex_data(s,0) - -/* BIO_s_connect() and BIO_s_socks4a_connect() */ -# define BIO_set_conn_hostname(b,name) BIO_ctrl(b,BIO_C_SET_CONNECT,0,(char *)name) -# define BIO_set_conn_port(b,port) BIO_ctrl(b,BIO_C_SET_CONNECT,1,(char *)port) -# define BIO_set_conn_ip(b,ip) BIO_ctrl(b,BIO_C_SET_CONNECT,2,(char *)ip) -# define BIO_set_conn_int_port(b,port) BIO_ctrl(b,BIO_C_SET_CONNECT,3,(char *)port) -# define BIO_get_conn_hostname(b) BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,0) -# define BIO_get_conn_port(b) BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,1) -# define BIO_get_conn_ip(b) BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,2) -# define BIO_get_conn_int_port(b) BIO_int_ctrl(b,BIO_C_GET_CONNECT,3,0) - -# define BIO_set_nbio(b,n) BIO_ctrl(b,BIO_C_SET_NBIO,(n),NULL) - -/* BIO_s_accept_socket() */ -# define BIO_set_accept_port(b,name) BIO_ctrl(b,BIO_C_SET_ACCEPT,0,(char *)name) -# define BIO_get_accept_port(b) BIO_ptr_ctrl(b,BIO_C_GET_ACCEPT,0) -/* #define BIO_set_nbio(b,n) BIO_ctrl(b,BIO_C_SET_NBIO,(n),NULL) */ -# define BIO_set_nbio_accept(b,n) BIO_ctrl(b,BIO_C_SET_ACCEPT,1,(n)?(void *)"a":NULL) -# define BIO_set_accept_bios(b,bio) BIO_ctrl(b,BIO_C_SET_ACCEPT,2,(char *)bio) - -# define BIO_BIND_NORMAL 0 -# define BIO_BIND_REUSEADDR_IF_UNUSED 1 -# define BIO_BIND_REUSEADDR 2 -# define BIO_set_bind_mode(b,mode) BIO_ctrl(b,BIO_C_SET_BIND_MODE,mode,NULL) -# define BIO_get_bind_mode(b,mode) BIO_ctrl(b,BIO_C_GET_BIND_MODE,0,NULL) - -# define BIO_do_connect(b) BIO_do_handshake(b) -# define BIO_do_accept(b) BIO_do_handshake(b) -# define BIO_do_handshake(b) BIO_ctrl(b,BIO_C_DO_STATE_MACHINE,0,NULL) - -/* BIO_s_proxy_client() */ -# define BIO_set_url(b,url) BIO_ctrl(b,BIO_C_SET_PROXY_PARAM,0,(char *)(url)) -# define BIO_set_proxies(b,p) BIO_ctrl(b,BIO_C_SET_PROXY_PARAM,1,(char *)(p)) -/* BIO_set_nbio(b,n) */ -# define BIO_set_filter_bio(b,s) BIO_ctrl(b,BIO_C_SET_PROXY_PARAM,2,(char *)(s)) -/* BIO *BIO_get_filter_bio(BIO *bio); */ -# define BIO_set_proxy_cb(b,cb) BIO_callback_ctrl(b,BIO_C_SET_PROXY_PARAM,3,(void *(*cb)())) -# define BIO_set_proxy_header(b,sk) BIO_ctrl(b,BIO_C_SET_PROXY_PARAM,4,(char *)sk) -# define BIO_set_no_connect_return(b,bool) BIO_int_ctrl(b,BIO_C_SET_PROXY_PARAM,5,bool) - -# define BIO_get_proxy_header(b,skp) BIO_ctrl(b,BIO_C_GET_PROXY_PARAM,0,(char *)skp) -# define BIO_get_proxies(b,pxy_p) BIO_ctrl(b,BIO_C_GET_PROXY_PARAM,1,(char *)(pxy_p)) -# define BIO_get_url(b,url) BIO_ctrl(b,BIO_C_GET_PROXY_PARAM,2,(char *)(url)) -# define BIO_get_no_connect_return(b) BIO_ctrl(b,BIO_C_GET_PROXY_PARAM,5,NULL) - -# define BIO_set_fd(b,fd,c) BIO_int_ctrl(b,BIO_C_SET_FD,c,fd) -# define BIO_get_fd(b,c) BIO_ctrl(b,BIO_C_GET_FD,0,(char *)c) - -# define BIO_set_fp(b,fp,c) BIO_ctrl(b,BIO_C_SET_FILE_PTR,c,(char *)fp) -# define BIO_get_fp(b,fpp) BIO_ctrl(b,BIO_C_GET_FILE_PTR,0,(char *)fpp) - -# define BIO_seek(b,ofs) (int)BIO_ctrl(b,BIO_C_FILE_SEEK,ofs,NULL) -# define BIO_tell(b) (int)BIO_ctrl(b,BIO_C_FILE_TELL,0,NULL) - -/* - * name is cast to lose const, but might be better to route through a - * function so we can do it safely - */ -# ifdef CONST_STRICT -/* - * If you are wondering why this isn't defined, its because CONST_STRICT is - * purely a compile-time kludge to allow const to be checked. - */ -int BIO_read_filename(BIO *b, const char *name); -# else -# define BIO_read_filename(b,name) BIO_ctrl(b,BIO_C_SET_FILENAME, \ - BIO_CLOSE|BIO_FP_READ,(char *)name) -# endif -# define BIO_write_filename(b,name) BIO_ctrl(b,BIO_C_SET_FILENAME, \ - BIO_CLOSE|BIO_FP_WRITE,name) -# define BIO_append_filename(b,name) BIO_ctrl(b,BIO_C_SET_FILENAME, \ - BIO_CLOSE|BIO_FP_APPEND,name) -# define BIO_rw_filename(b,name) BIO_ctrl(b,BIO_C_SET_FILENAME, \ - BIO_CLOSE|BIO_FP_READ|BIO_FP_WRITE,name) - -/* - * WARNING WARNING, this ups the reference count on the read bio of the SSL - * structure. This is because the ssl read BIO is now pointed to by the - * next_bio field in the bio. So when you free the BIO, make sure you are - * doing a BIO_free_all() to catch the underlying BIO. - */ -# define BIO_set_ssl(b,ssl,c) BIO_ctrl(b,BIO_C_SET_SSL,c,(char *)ssl) -# define BIO_get_ssl(b,sslp) BIO_ctrl(b,BIO_C_GET_SSL,0,(char *)sslp) -# define BIO_set_ssl_mode(b,client) BIO_ctrl(b,BIO_C_SSL_MODE,client,NULL) -# define BIO_set_ssl_renegotiate_bytes(b,num) \ - BIO_ctrl(b,BIO_C_SET_SSL_RENEGOTIATE_BYTES,num,NULL); -# define BIO_get_num_renegotiates(b) \ - BIO_ctrl(b,BIO_C_GET_SSL_NUM_RENEGOTIATES,0,NULL); -# define BIO_set_ssl_renegotiate_timeout(b,seconds) \ - BIO_ctrl(b,BIO_C_SET_SSL_RENEGOTIATE_TIMEOUT,seconds,NULL); - -/* defined in evp.h */ -/* #define BIO_set_md(b,md) BIO_ctrl(b,BIO_C_SET_MD,1,(char *)md) */ - -# define BIO_get_mem_data(b,pp) BIO_ctrl(b,BIO_CTRL_INFO,0,(char *)pp) -# define BIO_set_mem_buf(b,bm,c) BIO_ctrl(b,BIO_C_SET_BUF_MEM,c,(char *)bm) -# define BIO_get_mem_ptr(b,pp) BIO_ctrl(b,BIO_C_GET_BUF_MEM_PTR,0,(char *)pp) -# define BIO_set_mem_eof_return(b,v) \ - BIO_ctrl(b,BIO_C_SET_BUF_MEM_EOF_RETURN,v,NULL) - -/* For the BIO_f_buffer() type */ -# define BIO_get_buffer_num_lines(b) BIO_ctrl(b,BIO_C_GET_BUFF_NUM_LINES,0,NULL) -# define BIO_set_buffer_size(b,size) BIO_ctrl(b,BIO_C_SET_BUFF_SIZE,size,NULL) -# define BIO_set_read_buffer_size(b,size) BIO_int_ctrl(b,BIO_C_SET_BUFF_SIZE,size,0) -# define BIO_set_write_buffer_size(b,size) BIO_int_ctrl(b,BIO_C_SET_BUFF_SIZE,size,1) -# define BIO_set_buffer_read_data(b,buf,num) BIO_ctrl(b,BIO_C_SET_BUFF_READ_DATA,num,buf) - -/* Don't use the next one unless you know what you are doing :-) */ -# define BIO_dup_state(b,ret) BIO_ctrl(b,BIO_CTRL_DUP,0,(char *)(ret)) - -# define BIO_reset(b) (int)BIO_ctrl(b,BIO_CTRL_RESET,0,NULL) -# define BIO_eof(b) (int)BIO_ctrl(b,BIO_CTRL_EOF,0,NULL) -# define BIO_set_close(b,c) (int)BIO_ctrl(b,BIO_CTRL_SET_CLOSE,(c),NULL) -# define BIO_get_close(b) (int)BIO_ctrl(b,BIO_CTRL_GET_CLOSE,0,NULL) -# define BIO_pending(b) (int)BIO_ctrl(b,BIO_CTRL_PENDING,0,NULL) -# define BIO_wpending(b) (int)BIO_ctrl(b,BIO_CTRL_WPENDING,0,NULL) -/* ...pending macros have inappropriate return type */ -size_t BIO_ctrl_pending(BIO *b); -size_t BIO_ctrl_wpending(BIO *b); -# define BIO_flush(b) (int)BIO_ctrl(b,BIO_CTRL_FLUSH,0,NULL) -# define BIO_get_info_callback(b,cbp) (int)BIO_ctrl(b,BIO_CTRL_GET_CALLBACK,0, \ - cbp) -# define BIO_set_info_callback(b,cb) (int)BIO_callback_ctrl(b,BIO_CTRL_SET_CALLBACK,cb) - -/* For the BIO_f_buffer() type */ -# define BIO_buffer_get_num_lines(b) BIO_ctrl(b,BIO_CTRL_GET,0,NULL) - -/* For BIO_s_bio() */ -# define BIO_set_write_buf_size(b,size) (int)BIO_ctrl(b,BIO_C_SET_WRITE_BUF_SIZE,size,NULL) -# define BIO_get_write_buf_size(b,size) (size_t)BIO_ctrl(b,BIO_C_GET_WRITE_BUF_SIZE,size,NULL) -# define BIO_make_bio_pair(b1,b2) (int)BIO_ctrl(b1,BIO_C_MAKE_BIO_PAIR,0,b2) -# define BIO_destroy_bio_pair(b) (int)BIO_ctrl(b,BIO_C_DESTROY_BIO_PAIR,0,NULL) -# define BIO_shutdown_wr(b) (int)BIO_ctrl(b, BIO_C_SHUTDOWN_WR, 0, NULL) -/* macros with inappropriate type -- but ...pending macros use int too: */ -# define BIO_get_write_guarantee(b) (int)BIO_ctrl(b,BIO_C_GET_WRITE_GUARANTEE,0,NULL) -# define BIO_get_read_request(b) (int)BIO_ctrl(b,BIO_C_GET_READ_REQUEST,0,NULL) -size_t BIO_ctrl_get_write_guarantee(BIO *b); -size_t BIO_ctrl_get_read_request(BIO *b); -int BIO_ctrl_reset_read_request(BIO *b); - -/* ctrl macros for dgram */ -# define BIO_ctrl_dgram_connect(b,peer) \ - (int)BIO_ctrl(b,BIO_CTRL_DGRAM_CONNECT,0, (char *)peer) -# define BIO_ctrl_set_connected(b, state, peer) \ - (int)BIO_ctrl(b, BIO_CTRL_DGRAM_SET_CONNECTED, state, (char *)peer) -# define BIO_dgram_recv_timedout(b) \ - (int)BIO_ctrl(b, BIO_CTRL_DGRAM_GET_RECV_TIMER_EXP, 0, NULL) -# define BIO_dgram_send_timedout(b) \ - (int)BIO_ctrl(b, BIO_CTRL_DGRAM_GET_SEND_TIMER_EXP, 0, NULL) -# define BIO_dgram_get_peer(b,peer) \ - (int)BIO_ctrl(b, BIO_CTRL_DGRAM_GET_PEER, 0, (char *)peer) -# define BIO_dgram_set_peer(b,peer) \ - (int)BIO_ctrl(b, BIO_CTRL_DGRAM_SET_PEER, 0, (char *)peer) -# define BIO_dgram_get_mtu_overhead(b) \ - (unsigned int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_MTU_OVERHEAD, 0, NULL) - -/* These two aren't currently implemented */ -/* int BIO_get_ex_num(BIO *bio); */ -/* void BIO_set_ex_free_func(BIO *bio,int idx,void (*cb)()); */ -int BIO_set_ex_data(BIO *bio, int idx, void *data); -void *BIO_get_ex_data(BIO *bio, int idx); -int BIO_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new *new_func, - CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func); -unsigned long BIO_number_read(BIO *bio); -unsigned long BIO_number_written(BIO *bio); - -/* For BIO_f_asn1() */ -int BIO_asn1_set_prefix(BIO *b, asn1_ps_func *prefix, - asn1_ps_func *prefix_free); -int BIO_asn1_get_prefix(BIO *b, asn1_ps_func **pprefix, - asn1_ps_func **pprefix_free); -int BIO_asn1_set_suffix(BIO *b, asn1_ps_func *suffix, - asn1_ps_func *suffix_free); -int BIO_asn1_get_suffix(BIO *b, asn1_ps_func **psuffix, - asn1_ps_func **psuffix_free); - -# ifndef OPENSSL_NO_FP_API -BIO_METHOD *BIO_s_file(void); -BIO *BIO_new_file(const char *filename, const char *mode); -BIO *BIO_new_fp(FILE *stream, int close_flag); -# define BIO_s_file_internal BIO_s_file -# endif -BIO *BIO_new(BIO_METHOD *type); -int BIO_set(BIO *a, BIO_METHOD *type); -int BIO_free(BIO *a); -void BIO_vfree(BIO *a); -int BIO_read(BIO *b, void *data, int len); -int BIO_gets(BIO *bp, char *buf, int size); -int BIO_write(BIO *b, const void *data, int len); -int BIO_puts(BIO *bp, const char *buf); -int BIO_indent(BIO *b, int indent, int max); -long BIO_ctrl(BIO *bp, int cmd, long larg, void *parg); -long BIO_callback_ctrl(BIO *b, int cmd, - void (*fp) (struct bio_st *, int, const char *, int, - long, long)); -char *BIO_ptr_ctrl(BIO *bp, int cmd, long larg); -long BIO_int_ctrl(BIO *bp, int cmd, long larg, int iarg); -BIO *BIO_push(BIO *b, BIO *append); -BIO *BIO_pop(BIO *b); -void BIO_free_all(BIO *a); -BIO *BIO_find_type(BIO *b, int bio_type); -BIO *BIO_next(BIO *b); -BIO *BIO_get_retry_BIO(BIO *bio, int *reason); -int BIO_get_retry_reason(BIO *bio); -BIO *BIO_dup_chain(BIO *in); - -int BIO_nread0(BIO *bio, char **buf); -int BIO_nread(BIO *bio, char **buf, int num); -int BIO_nwrite0(BIO *bio, char **buf); -int BIO_nwrite(BIO *bio, char **buf, int num); - -long BIO_debug_callback(BIO *bio, int cmd, const char *argp, int argi, - long argl, long ret); - -BIO_METHOD *BIO_s_mem(void); -BIO *BIO_new_mem_buf(void *buf, int len); -BIO_METHOD *BIO_s_socket(void); -BIO_METHOD *BIO_s_connect(void); -BIO_METHOD *BIO_s_accept(void); -BIO_METHOD *BIO_s_fd(void); -# ifndef OPENSSL_SYS_OS2 -BIO_METHOD *BIO_s_log(void); -# endif -BIO_METHOD *BIO_s_bio(void); -BIO_METHOD *BIO_s_null(void); -BIO_METHOD *BIO_f_null(void); -BIO_METHOD *BIO_f_buffer(void); -# ifdef OPENSSL_SYS_VMS -BIO_METHOD *BIO_f_linebuffer(void); -# endif -BIO_METHOD *BIO_f_nbio_test(void); -# ifndef OPENSSL_NO_DGRAM -BIO_METHOD *BIO_s_datagram(void); -# ifndef OPENSSL_NO_SCTP -BIO_METHOD *BIO_s_datagram_sctp(void); -# endif -# endif - -/* BIO_METHOD *BIO_f_ber(void); */ - -int BIO_sock_should_retry(int i); -int BIO_sock_non_fatal_error(int error); -int BIO_dgram_non_fatal_error(int error); - -int BIO_fd_should_retry(int i); -int BIO_fd_non_fatal_error(int error); -int BIO_dump_cb(int (*cb) (const void *data, size_t len, void *u), - void *u, const char *s, int len); -int BIO_dump_indent_cb(int (*cb) (const void *data, size_t len, void *u), - void *u, const char *s, int len, int indent); -int BIO_dump(BIO *b, const char *bytes, int len); -int BIO_dump_indent(BIO *b, const char *bytes, int len, int indent); -# ifndef OPENSSL_NO_FP_API -int BIO_dump_fp(FILE *fp, const char *s, int len); -int BIO_dump_indent_fp(FILE *fp, const char *s, int len, int indent); -# endif -int BIO_hex_string(BIO *out, int indent, int width, unsigned char *data, - int datalen); - -struct hostent *BIO_gethostbyname(const char *name); -/*- - * We might want a thread-safe interface too: - * struct hostent *BIO_gethostbyname_r(const char *name, - * struct hostent *result, void *buffer, size_t buflen); - * or something similar (caller allocates a struct hostent, - * pointed to by "result", and additional buffer space for the various - * substructures; if the buffer does not suffice, NULL is returned - * and an appropriate error code is set). - */ -int BIO_sock_error(int sock); -int BIO_socket_ioctl(int fd, long type, void *arg); -int BIO_socket_nbio(int fd, int mode); -int BIO_get_port(const char *str, unsigned short *port_ptr); -int BIO_get_host_ip(const char *str, unsigned char *ip); -int BIO_get_accept_socket(char *host_port, int mode); -int BIO_accept(int sock, char **ip_port); -int BIO_sock_init(void); -void BIO_sock_cleanup(void); -int BIO_set_tcp_ndelay(int sock, int turn_on); - -BIO *BIO_new_socket(int sock, int close_flag); -BIO *BIO_new_dgram(int fd, int close_flag); -# ifndef OPENSSL_NO_SCTP -BIO *BIO_new_dgram_sctp(int fd, int close_flag); -int BIO_dgram_is_sctp(BIO *bio); -int BIO_dgram_sctp_notification_cb(BIO *b, - void (*handle_notifications) (BIO *bio, - void - *context, - void *buf), - void *context); -int BIO_dgram_sctp_wait_for_dry(BIO *b); -int BIO_dgram_sctp_msg_waiting(BIO *b); -# endif -BIO *BIO_new_fd(int fd, int close_flag); -BIO *BIO_new_connect(const char *host_port); -BIO *BIO_new_accept(const char *host_port); - -int BIO_new_bio_pair(BIO **bio1, size_t writebuf1, - BIO **bio2, size_t writebuf2); -/* - * If successful, returns 1 and in *bio1, *bio2 two BIO pair endpoints. - * Otherwise returns 0 and sets *bio1 and *bio2 to NULL. Size 0 uses default - * value. - */ - -void BIO_copy_next_retry(BIO *b); - -/* - * long BIO_ghbn_ctrl(int cmd,int iarg,char *parg); - */ - -# ifdef __GNUC__ -# define __bio_h__attr__ __attribute__ -# else -# define __bio_h__attr__(x) -# endif -int BIO_printf(BIO *bio, const char *format, ...) -__bio_h__attr__((__format__(__printf__, 2, 3))); -int BIO_vprintf(BIO *bio, const char *format, va_list args) -__bio_h__attr__((__format__(__printf__, 2, 0))); -int BIO_snprintf(char *buf, size_t n, const char *format, ...) -__bio_h__attr__((__format__(__printf__, 3, 4))); -int BIO_vsnprintf(char *buf, size_t n, const char *format, va_list args) -__bio_h__attr__((__format__(__printf__, 3, 0))); -# undef __bio_h__attr__ - -/* BEGIN ERROR CODES */ -/* - * The following lines are auto generated by the script mkerr.pl. Any changes - * made after this point may be overwritten when the script is next run. - */ -void ERR_load_BIO_strings(void); - -/* Error codes for the BIO functions. */ - -/* Function codes. */ -# define BIO_F_ACPT_STATE 100 -# define BIO_F_BIO_ACCEPT 101 -# define BIO_F_BIO_BER_GET_HEADER 102 -# define BIO_F_BIO_CALLBACK_CTRL 131 -# define BIO_F_BIO_CTRL 103 -# define BIO_F_BIO_GETHOSTBYNAME 120 -# define BIO_F_BIO_GETS 104 -# define BIO_F_BIO_GET_ACCEPT_SOCKET 105 -# define BIO_F_BIO_GET_HOST_IP 106 -# define BIO_F_BIO_GET_PORT 107 -# define BIO_F_BIO_MAKE_PAIR 121 -# define BIO_F_BIO_NEW 108 -# define BIO_F_BIO_NEW_FILE 109 -# define BIO_F_BIO_NEW_MEM_BUF 126 -# define BIO_F_BIO_NREAD 123 -# define BIO_F_BIO_NREAD0 124 -# define BIO_F_BIO_NWRITE 125 -# define BIO_F_BIO_NWRITE0 122 -# define BIO_F_BIO_PUTS 110 -# define BIO_F_BIO_READ 111 -# define BIO_F_BIO_SOCK_INIT 112 -# define BIO_F_BIO_WRITE 113 -# define BIO_F_BUFFER_CTRL 114 -# define BIO_F_CONN_CTRL 127 -# define BIO_F_CONN_STATE 115 -# define BIO_F_DGRAM_SCTP_READ 132 -# define BIO_F_FILE_CTRL 116 -# define BIO_F_FILE_READ 130 -# define BIO_F_LINEBUFFER_CTRL 129 -# define BIO_F_MEM_READ 128 -# define BIO_F_MEM_WRITE 117 -# define BIO_F_SSL_NEW 118 -# define BIO_F_WSASTARTUP 119 - -/* Reason codes. */ -# define BIO_R_ACCEPT_ERROR 100 -# define BIO_R_BAD_FOPEN_MODE 101 -# define BIO_R_BAD_HOSTNAME_LOOKUP 102 -# define BIO_R_BROKEN_PIPE 124 -# define BIO_R_CONNECT_ERROR 103 -# define BIO_R_EOF_ON_MEMORY_BIO 127 -# define BIO_R_ERROR_SETTING_NBIO 104 -# define BIO_R_ERROR_SETTING_NBIO_ON_ACCEPTED_SOCKET 105 -# define BIO_R_ERROR_SETTING_NBIO_ON_ACCEPT_SOCKET 106 -# define BIO_R_GETHOSTBYNAME_ADDR_IS_NOT_AF_INET 107 -# define BIO_R_INVALID_ARGUMENT 125 -# define BIO_R_INVALID_IP_ADDRESS 108 -# define BIO_R_IN_USE 123 -# define BIO_R_KEEPALIVE 109 -# define BIO_R_NBIO_CONNECT_ERROR 110 -# define BIO_R_NO_ACCEPT_PORT_SPECIFIED 111 -# define BIO_R_NO_HOSTNAME_SPECIFIED 112 -# define BIO_R_NO_PORT_DEFINED 113 -# define BIO_R_NO_PORT_SPECIFIED 114 -# define BIO_R_NO_SUCH_FILE 128 -# define BIO_R_NULL_PARAMETER 115 -# define BIO_R_TAG_MISMATCH 116 -# define BIO_R_UNABLE_TO_BIND_SOCKET 117 -# define BIO_R_UNABLE_TO_CREATE_SOCKET 118 -# define BIO_R_UNABLE_TO_LISTEN_SOCKET 119 -# define BIO_R_UNINITIALIZED 120 -# define BIO_R_UNSUPPORTED_METHOD 121 -# define BIO_R_WRITE_TO_READ_ONLY_BIO 126 -# define BIO_R_WSASTARTUP 122 - -#ifdef __cplusplus -} -#endif -#endif diff --git a/ext/openssl-win64/inc32/openssl/bn.h b/ext/openssl-win64/inc32/openssl/bn.h deleted file mode 100644 index 78709d38..00000000 --- a/ext/openssl-win64/inc32/openssl/bn.h +++ /dev/null @@ -1,934 +0,0 @@ -/* crypto/bn/bn.h */ -/* Copyright (C) 1995-1997 Eric Young (eay@cryptsoft.com) - * All rights reserved. - * - * This package is an SSL implementation written - * by Eric Young (eay@cryptsoft.com). - * The implementation was written so as to conform with Netscapes SSL. - * - * This library is free for commercial and non-commercial use as long as - * the following conditions are aheared to. The following conditions - * apply to all code found in this distribution, be it the RC4, RSA, - * lhash, DES, etc., code; not just the SSL code. The SSL documentation - * included with this distribution is covered by the same copyright terms - * except that the holder is Tim Hudson (tjh@cryptsoft.com). - * - * Copyright remains Eric Young's, and as such any Copyright notices in - * the code are not to be removed. - * If this package is used in a product, Eric Young should be given attribution - * as the author of the parts of the library used. - * This can be in the form of a textual message at program startup or - * in documentation (online or textual) provided with the package. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * "This product includes cryptographic software written by - * Eric Young (eay@cryptsoft.com)" - * The word 'cryptographic' can be left out if the rouines from the library - * being used are not cryptographic related :-). - * 4. If you include any Windows specific code (or a derivative thereof) from - * the apps directory (application code) you must include an acknowledgement: - * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" - * - * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * The licence and distribution terms for any publically available version or - * derivative of this code cannot be changed. i.e. this code cannot simply be - * copied and put under another distribution licence - * [including the GNU Public Licence.] - */ -/* ==================================================================== - * Copyright (c) 1998-2006 The OpenSSL Project. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. All advertising materials mentioning features or use of this - * software must display the following acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" - * - * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * openssl-core@openssl.org. - * - * 5. Products derived from this software may not be called "OpenSSL" - * nor may "OpenSSL" appear in their names without prior written - * permission of the OpenSSL Project. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit (http://www.openssl.org/)" - * - * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY - * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * ==================================================================== - * - * This product includes cryptographic software written by Eric Young - * (eay@cryptsoft.com). This product includes software written by Tim - * Hudson (tjh@cryptsoft.com). - * - */ -/* ==================================================================== - * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED. - * - * Portions of the attached software ("Contribution") are developed by - * SUN MICROSYSTEMS, INC., and are contributed to the OpenSSL project. - * - * The Contribution is licensed pursuant to the Eric Young open source - * license provided above. - * - * The binary polynomial arithmetic software is originally written by - * Sheueling Chang Shantz and Douglas Stebila of Sun Microsystems Laboratories. - * - */ - -#ifndef HEADER_BN_H -# define HEADER_BN_H - -# include -# ifndef OPENSSL_NO_FP_API -# include /* FILE */ -# endif -# include -# include - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * These preprocessor symbols control various aspects of the bignum headers - * and library code. They're not defined by any "normal" configuration, as - * they are intended for development and testing purposes. NB: defining all - * three can be useful for debugging application code as well as openssl - * itself. BN_DEBUG - turn on various debugging alterations to the bignum - * code BN_DEBUG_RAND - uses random poisoning of unused words to trip up - * mismanagement of bignum internals. You must also define BN_DEBUG. - */ -/* #define BN_DEBUG */ -/* #define BN_DEBUG_RAND */ - -# ifndef OPENSSL_SMALL_FOOTPRINT -# define BN_MUL_COMBA -# define BN_SQR_COMBA -# define BN_RECURSION -# endif - -/* - * This next option uses the C libraries (2 word)/(1 word) function. If it is - * not defined, I use my C version (which is slower). The reason for this - * flag is that when the particular C compiler library routine is used, and - * the library is linked with a different compiler, the library is missing. - * This mostly happens when the library is built with gcc and then linked - * using normal cc. This would be a common occurrence because gcc normally - * produces code that is 2 times faster than system compilers for the big - * number stuff. For machines with only one compiler (or shared libraries), - * this should be on. Again this in only really a problem on machines using - * "long long's", are 32bit, and are not using my assembler code. - */ -# if defined(OPENSSL_SYS_MSDOS) || defined(OPENSSL_SYS_WINDOWS) || \ - defined(OPENSSL_SYS_WIN32) || defined(linux) -# ifndef BN_DIV2W -# define BN_DIV2W -# endif -# endif - -/* - * assuming long is 64bit - this is the DEC Alpha unsigned long long is only - * 64 bits :-(, don't define BN_LLONG for the DEC Alpha - */ -# ifdef SIXTY_FOUR_BIT_LONG -# define BN_ULLONG unsigned long long -# define BN_ULONG unsigned long -# define BN_LONG long -# define BN_BITS 128 -# define BN_BYTES 8 -# define BN_BITS2 64 -# define BN_BITS4 32 -# define BN_MASK (0xffffffffffffffffffffffffffffffffLL) -# define BN_MASK2 (0xffffffffffffffffL) -# define BN_MASK2l (0xffffffffL) -# define BN_MASK2h (0xffffffff00000000L) -# define BN_MASK2h1 (0xffffffff80000000L) -# define BN_TBIT (0x8000000000000000L) -# define BN_DEC_CONV (10000000000000000000UL) -# define BN_DEC_FMT1 "%lu" -# define BN_DEC_FMT2 "%019lu" -# define BN_DEC_NUM 19 -# define BN_HEX_FMT1 "%lX" -# define BN_HEX_FMT2 "%016lX" -# endif - -/* - * This is where the long long data type is 64 bits, but long is 32. For - * machines where there are 64bit registers, this is the mode to use. IRIX, - * on R4000 and above should use this mode, along with the relevant assembler - * code :-). Do NOT define BN_LLONG. - */ -# ifdef SIXTY_FOUR_BIT -# undef BN_LLONG -# undef BN_ULLONG -# define BN_ULONG unsigned long long -# define BN_LONG long long -# define BN_BITS 128 -# define BN_BYTES 8 -# define BN_BITS2 64 -# define BN_BITS4 32 -# define BN_MASK2 (0xffffffffffffffffLL) -# define BN_MASK2l (0xffffffffL) -# define BN_MASK2h (0xffffffff00000000LL) -# define BN_MASK2h1 (0xffffffff80000000LL) -# define BN_TBIT (0x8000000000000000LL) -# define BN_DEC_CONV (10000000000000000000ULL) -# define BN_DEC_FMT1 "%llu" -# define BN_DEC_FMT2 "%019llu" -# define BN_DEC_NUM 19 -# define BN_HEX_FMT1 "%llX" -# define BN_HEX_FMT2 "%016llX" -# endif - -# ifdef THIRTY_TWO_BIT -# ifdef BN_LLONG -# if defined(_WIN32) && !defined(__GNUC__) -# define BN_ULLONG unsigned __int64 -# define BN_MASK (0xffffffffffffffffI64) -# else -# define BN_ULLONG unsigned long long -# define BN_MASK (0xffffffffffffffffLL) -# endif -# endif -# define BN_ULONG unsigned int -# define BN_LONG int -# define BN_BITS 64 -# define BN_BYTES 4 -# define BN_BITS2 32 -# define BN_BITS4 16 -# define BN_MASK2 (0xffffffffL) -# define BN_MASK2l (0xffff) -# define BN_MASK2h1 (0xffff8000L) -# define BN_MASK2h (0xffff0000L) -# define BN_TBIT (0x80000000L) -# define BN_DEC_CONV (1000000000L) -# define BN_DEC_FMT1 "%u" -# define BN_DEC_FMT2 "%09u" -# define BN_DEC_NUM 9 -# define BN_HEX_FMT1 "%X" -# define BN_HEX_FMT2 "%08X" -# endif - -# define BN_DEFAULT_BITS 1280 - -# define BN_FLG_MALLOCED 0x01 -# define BN_FLG_STATIC_DATA 0x02 - -/* - * avoid leaking exponent information through timing, - * BN_mod_exp_mont() will call BN_mod_exp_mont_consttime, - * BN_div() will call BN_div_no_branch, - * BN_mod_inverse() will call BN_mod_inverse_no_branch. - */ -# define BN_FLG_CONSTTIME 0x04 - -# ifdef OPENSSL_NO_DEPRECATED -/* deprecated name for the flag */ -# define BN_FLG_EXP_CONSTTIME BN_FLG_CONSTTIME -/* - * avoid leaking exponent information through timings - * (BN_mod_exp_mont() will call BN_mod_exp_mont_consttime) - */ -# endif - -# ifndef OPENSSL_NO_DEPRECATED -# define BN_FLG_FREE 0x8000 - /* used for debuging */ -# endif -# define BN_set_flags(b,n) ((b)->flags|=(n)) -# define BN_get_flags(b,n) ((b)->flags&(n)) - -/* - * get a clone of a BIGNUM with changed flags, for *temporary* use only (the - * two BIGNUMs cannot not be used in parallel!) - */ -# define BN_with_flags(dest,b,n) ((dest)->d=(b)->d, \ - (dest)->top=(b)->top, \ - (dest)->dmax=(b)->dmax, \ - (dest)->neg=(b)->neg, \ - (dest)->flags=(((dest)->flags & BN_FLG_MALLOCED) \ - | ((b)->flags & ~BN_FLG_MALLOCED) \ - | BN_FLG_STATIC_DATA \ - | (n))) - -/* Already declared in ossl_typ.h */ -# if 0 -typedef struct bignum_st BIGNUM; -/* Used for temp variables (declaration hidden in bn_lcl.h) */ -typedef struct bignum_ctx BN_CTX; -typedef struct bn_blinding_st BN_BLINDING; -typedef struct bn_mont_ctx_st BN_MONT_CTX; -typedef struct bn_recp_ctx_st BN_RECP_CTX; -typedef struct bn_gencb_st BN_GENCB; -# endif - -struct bignum_st { - BN_ULONG *d; /* Pointer to an array of 'BN_BITS2' bit - * chunks. */ - int top; /* Index of last used d +1. */ - /* The next are internal book keeping for bn_expand. */ - int dmax; /* Size of the d array. */ - int neg; /* one if the number is negative */ - int flags; -}; - -/* Used for montgomery multiplication */ -struct bn_mont_ctx_st { - int ri; /* number of bits in R */ - BIGNUM RR; /* used to convert to montgomery form */ - BIGNUM N; /* The modulus */ - BIGNUM Ni; /* R*(1/R mod N) - N*Ni = 1 (Ni is only - * stored for bignum algorithm) */ - BN_ULONG n0[2]; /* least significant word(s) of Ni; (type - * changed with 0.9.9, was "BN_ULONG n0;" - * before) */ - int flags; -}; - -/* - * Used for reciprocal division/mod functions It cannot be shared between - * threads - */ -struct bn_recp_ctx_st { - BIGNUM N; /* the divisor */ - BIGNUM Nr; /* the reciprocal */ - int num_bits; - int shift; - int flags; -}; - -/* Used for slow "generation" functions. */ -struct bn_gencb_st { - unsigned int ver; /* To handle binary (in)compatibility */ - void *arg; /* callback-specific data */ - union { - /* if(ver==1) - handles old style callbacks */ - void (*cb_1) (int, int, void *); - /* if(ver==2) - new callback style */ - int (*cb_2) (int, int, BN_GENCB *); - } cb; -}; -/* Wrapper function to make using BN_GENCB easier, */ -int BN_GENCB_call(BN_GENCB *cb, int a, int b); -/* Macro to populate a BN_GENCB structure with an "old"-style callback */ -# define BN_GENCB_set_old(gencb, callback, cb_arg) { \ - BN_GENCB *tmp_gencb = (gencb); \ - tmp_gencb->ver = 1; \ - tmp_gencb->arg = (cb_arg); \ - tmp_gencb->cb.cb_1 = (callback); } -/* Macro to populate a BN_GENCB structure with a "new"-style callback */ -# define BN_GENCB_set(gencb, callback, cb_arg) { \ - BN_GENCB *tmp_gencb = (gencb); \ - tmp_gencb->ver = 2; \ - tmp_gencb->arg = (cb_arg); \ - tmp_gencb->cb.cb_2 = (callback); } - -# define BN_prime_checks 0 /* default: select number of iterations based - * on the size of the number */ - -/* - * number of Miller-Rabin iterations for an error rate of less than 2^-80 for - * random 'b'-bit input, b >= 100 (taken from table 4.4 in the Handbook of - * Applied Cryptography [Menezes, van Oorschot, Vanstone; CRC Press 1996]; - * original paper: Damgaard, Landrock, Pomerance: Average case error - * estimates for the strong probable prime test. -- Math. Comp. 61 (1993) - * 177-194) - */ -# define BN_prime_checks_for_size(b) ((b) >= 1300 ? 2 : \ - (b) >= 850 ? 3 : \ - (b) >= 650 ? 4 : \ - (b) >= 550 ? 5 : \ - (b) >= 450 ? 6 : \ - (b) >= 400 ? 7 : \ - (b) >= 350 ? 8 : \ - (b) >= 300 ? 9 : \ - (b) >= 250 ? 12 : \ - (b) >= 200 ? 15 : \ - (b) >= 150 ? 18 : \ - /* b >= 100 */ 27) - -# define BN_num_bytes(a) ((BN_num_bits(a)+7)/8) - -/* Note that BN_abs_is_word didn't work reliably for w == 0 until 0.9.8 */ -# define BN_abs_is_word(a,w) ((((a)->top == 1) && ((a)->d[0] == (BN_ULONG)(w))) || \ - (((w) == 0) && ((a)->top == 0))) -# define BN_is_zero(a) ((a)->top == 0) -# define BN_is_one(a) (BN_abs_is_word((a),1) && !(a)->neg) -# define BN_is_word(a,w) (BN_abs_is_word((a),(w)) && (!(w) || !(a)->neg)) -# define BN_is_odd(a) (((a)->top > 0) && ((a)->d[0] & 1)) - -# define BN_one(a) (BN_set_word((a),1)) -# define BN_zero_ex(a) \ - do { \ - BIGNUM *_tmp_bn = (a); \ - _tmp_bn->top = 0; \ - _tmp_bn->neg = 0; \ - } while(0) -# ifdef OPENSSL_NO_DEPRECATED -# define BN_zero(a) BN_zero_ex(a) -# else -# define BN_zero(a) (BN_set_word((a),0)) -# endif - -const BIGNUM *BN_value_one(void); -char *BN_options(void); -BN_CTX *BN_CTX_new(void); -# ifndef OPENSSL_NO_DEPRECATED -void BN_CTX_init(BN_CTX *c); -# endif -void BN_CTX_free(BN_CTX *c); -void BN_CTX_start(BN_CTX *ctx); -BIGNUM *BN_CTX_get(BN_CTX *ctx); -void BN_CTX_end(BN_CTX *ctx); -int BN_rand(BIGNUM *rnd, int bits, int top, int bottom); -int BN_pseudo_rand(BIGNUM *rnd, int bits, int top, int bottom); -int BN_rand_range(BIGNUM *rnd, const BIGNUM *range); -int BN_pseudo_rand_range(BIGNUM *rnd, const BIGNUM *range); -int BN_num_bits(const BIGNUM *a); -int BN_num_bits_word(BN_ULONG); -BIGNUM *BN_new(void); -void BN_init(BIGNUM *); -void BN_clear_free(BIGNUM *a); -BIGNUM *BN_copy(BIGNUM *a, const BIGNUM *b); -void BN_swap(BIGNUM *a, BIGNUM *b); -BIGNUM *BN_bin2bn(const unsigned char *s, int len, BIGNUM *ret); -int BN_bn2bin(const BIGNUM *a, unsigned char *to); -BIGNUM *BN_mpi2bn(const unsigned char *s, int len, BIGNUM *ret); -int BN_bn2mpi(const BIGNUM *a, unsigned char *to); -int BN_sub(BIGNUM *r, const BIGNUM *a, const BIGNUM *b); -int BN_usub(BIGNUM *r, const BIGNUM *a, const BIGNUM *b); -int BN_uadd(BIGNUM *r, const BIGNUM *a, const BIGNUM *b); -int BN_add(BIGNUM *r, const BIGNUM *a, const BIGNUM *b); -int BN_mul(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx); -int BN_sqr(BIGNUM *r, const BIGNUM *a, BN_CTX *ctx); -/** BN_set_negative sets sign of a BIGNUM - * \param b pointer to the BIGNUM object - * \param n 0 if the BIGNUM b should be positive and a value != 0 otherwise - */ -void BN_set_negative(BIGNUM *b, int n); -/** BN_is_negative returns 1 if the BIGNUM is negative - * \param a pointer to the BIGNUM object - * \return 1 if a < 0 and 0 otherwise - */ -# define BN_is_negative(a) ((a)->neg != 0) - -int BN_div(BIGNUM *dv, BIGNUM *rem, const BIGNUM *m, const BIGNUM *d, - BN_CTX *ctx); -# define BN_mod(rem,m,d,ctx) BN_div(NULL,(rem),(m),(d),(ctx)) -int BN_nnmod(BIGNUM *r, const BIGNUM *m, const BIGNUM *d, BN_CTX *ctx); -int BN_mod_add(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, const BIGNUM *m, - BN_CTX *ctx); -int BN_mod_add_quick(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, - const BIGNUM *m); -int BN_mod_sub(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, const BIGNUM *m, - BN_CTX *ctx); -int BN_mod_sub_quick(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, - const BIGNUM *m); -int BN_mod_mul(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, const BIGNUM *m, - BN_CTX *ctx); -int BN_mod_sqr(BIGNUM *r, const BIGNUM *a, const BIGNUM *m, BN_CTX *ctx); -int BN_mod_lshift1(BIGNUM *r, const BIGNUM *a, const BIGNUM *m, BN_CTX *ctx); -int BN_mod_lshift1_quick(BIGNUM *r, const BIGNUM *a, const BIGNUM *m); -int BN_mod_lshift(BIGNUM *r, const BIGNUM *a, int n, const BIGNUM *m, - BN_CTX *ctx); -int BN_mod_lshift_quick(BIGNUM *r, const BIGNUM *a, int n, const BIGNUM *m); - -BN_ULONG BN_mod_word(const BIGNUM *a, BN_ULONG w); -BN_ULONG BN_div_word(BIGNUM *a, BN_ULONG w); -int BN_mul_word(BIGNUM *a, BN_ULONG w); -int BN_add_word(BIGNUM *a, BN_ULONG w); -int BN_sub_word(BIGNUM *a, BN_ULONG w); -int BN_set_word(BIGNUM *a, BN_ULONG w); -BN_ULONG BN_get_word(const BIGNUM *a); - -int BN_cmp(const BIGNUM *a, const BIGNUM *b); -void BN_free(BIGNUM *a); -int BN_is_bit_set(const BIGNUM *a, int n); -int BN_lshift(BIGNUM *r, const BIGNUM *a, int n); -int BN_lshift1(BIGNUM *r, const BIGNUM *a); -int BN_exp(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx); - -int BN_mod_exp(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, - const BIGNUM *m, BN_CTX *ctx); -int BN_mod_exp_mont(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, - const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx); -int BN_mod_exp_mont_consttime(BIGNUM *rr, const BIGNUM *a, const BIGNUM *p, - const BIGNUM *m, BN_CTX *ctx, - BN_MONT_CTX *in_mont); -int BN_mod_exp_mont_word(BIGNUM *r, BN_ULONG a, const BIGNUM *p, - const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx); -int BN_mod_exp2_mont(BIGNUM *r, const BIGNUM *a1, const BIGNUM *p1, - const BIGNUM *a2, const BIGNUM *p2, const BIGNUM *m, - BN_CTX *ctx, BN_MONT_CTX *m_ctx); -int BN_mod_exp_simple(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, - const BIGNUM *m, BN_CTX *ctx); - -int BN_mask_bits(BIGNUM *a, int n); -# ifndef OPENSSL_NO_FP_API -int BN_print_fp(FILE *fp, const BIGNUM *a); -# endif -# ifdef HEADER_BIO_H -int BN_print(BIO *fp, const BIGNUM *a); -# else -int BN_print(void *fp, const BIGNUM *a); -# endif -int BN_reciprocal(BIGNUM *r, const BIGNUM *m, int len, BN_CTX *ctx); -int BN_rshift(BIGNUM *r, const BIGNUM *a, int n); -int BN_rshift1(BIGNUM *r, const BIGNUM *a); -void BN_clear(BIGNUM *a); -BIGNUM *BN_dup(const BIGNUM *a); -int BN_ucmp(const BIGNUM *a, const BIGNUM *b); -int BN_set_bit(BIGNUM *a, int n); -int BN_clear_bit(BIGNUM *a, int n); -char *BN_bn2hex(const BIGNUM *a); -char *BN_bn2dec(const BIGNUM *a); -int BN_hex2bn(BIGNUM **a, const char *str); -int BN_dec2bn(BIGNUM **a, const char *str); -int BN_asc2bn(BIGNUM **a, const char *str); -int BN_gcd(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx); -int BN_kronecker(const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx); /* returns - * -2 for - * error */ -BIGNUM *BN_mod_inverse(BIGNUM *ret, - const BIGNUM *a, const BIGNUM *n, BN_CTX *ctx); -BIGNUM *BN_mod_sqrt(BIGNUM *ret, - const BIGNUM *a, const BIGNUM *n, BN_CTX *ctx); - -void BN_consttime_swap(BN_ULONG swap, BIGNUM *a, BIGNUM *b, int nwords); - -/* Deprecated versions */ -# ifndef OPENSSL_NO_DEPRECATED -BIGNUM *BN_generate_prime(BIGNUM *ret, int bits, int safe, - const BIGNUM *add, const BIGNUM *rem, - void (*callback) (int, int, void *), void *cb_arg); -int BN_is_prime(const BIGNUM *p, int nchecks, - void (*callback) (int, int, void *), - BN_CTX *ctx, void *cb_arg); -int BN_is_prime_fasttest(const BIGNUM *p, int nchecks, - void (*callback) (int, int, void *), BN_CTX *ctx, - void *cb_arg, int do_trial_division); -# endif /* !defined(OPENSSL_NO_DEPRECATED) */ - -/* Newer versions */ -int BN_generate_prime_ex(BIGNUM *ret, int bits, int safe, const BIGNUM *add, - const BIGNUM *rem, BN_GENCB *cb); -int BN_is_prime_ex(const BIGNUM *p, int nchecks, BN_CTX *ctx, BN_GENCB *cb); -int BN_is_prime_fasttest_ex(const BIGNUM *p, int nchecks, BN_CTX *ctx, - int do_trial_division, BN_GENCB *cb); - -int BN_X931_generate_Xpq(BIGNUM *Xp, BIGNUM *Xq, int nbits, BN_CTX *ctx); - -int BN_X931_derive_prime_ex(BIGNUM *p, BIGNUM *p1, BIGNUM *p2, - const BIGNUM *Xp, const BIGNUM *Xp1, - const BIGNUM *Xp2, const BIGNUM *e, BN_CTX *ctx, - BN_GENCB *cb); -int BN_X931_generate_prime_ex(BIGNUM *p, BIGNUM *p1, BIGNUM *p2, BIGNUM *Xp1, - BIGNUM *Xp2, const BIGNUM *Xp, const BIGNUM *e, - BN_CTX *ctx, BN_GENCB *cb); - -BN_MONT_CTX *BN_MONT_CTX_new(void); -void BN_MONT_CTX_init(BN_MONT_CTX *ctx); -int BN_mod_mul_montgomery(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, - BN_MONT_CTX *mont, BN_CTX *ctx); -# define BN_to_montgomery(r,a,mont,ctx) BN_mod_mul_montgomery(\ - (r),(a),&((mont)->RR),(mont),(ctx)) -int BN_from_montgomery(BIGNUM *r, const BIGNUM *a, - BN_MONT_CTX *mont, BN_CTX *ctx); -void BN_MONT_CTX_free(BN_MONT_CTX *mont); -int BN_MONT_CTX_set(BN_MONT_CTX *mont, const BIGNUM *mod, BN_CTX *ctx); -BN_MONT_CTX *BN_MONT_CTX_copy(BN_MONT_CTX *to, BN_MONT_CTX *from); -BN_MONT_CTX *BN_MONT_CTX_set_locked(BN_MONT_CTX **pmont, int lock, - const BIGNUM *mod, BN_CTX *ctx); - -/* BN_BLINDING flags */ -# define BN_BLINDING_NO_UPDATE 0x00000001 -# define BN_BLINDING_NO_RECREATE 0x00000002 - -BN_BLINDING *BN_BLINDING_new(const BIGNUM *A, const BIGNUM *Ai, BIGNUM *mod); -void BN_BLINDING_free(BN_BLINDING *b); -int BN_BLINDING_update(BN_BLINDING *b, BN_CTX *ctx); -int BN_BLINDING_convert(BIGNUM *n, BN_BLINDING *b, BN_CTX *ctx); -int BN_BLINDING_invert(BIGNUM *n, BN_BLINDING *b, BN_CTX *ctx); -int BN_BLINDING_convert_ex(BIGNUM *n, BIGNUM *r, BN_BLINDING *b, BN_CTX *); -int BN_BLINDING_invert_ex(BIGNUM *n, const BIGNUM *r, BN_BLINDING *b, - BN_CTX *); -# ifndef OPENSSL_NO_DEPRECATED -unsigned long BN_BLINDING_get_thread_id(const BN_BLINDING *); -void BN_BLINDING_set_thread_id(BN_BLINDING *, unsigned long); -# endif -CRYPTO_THREADID *BN_BLINDING_thread_id(BN_BLINDING *); -unsigned long BN_BLINDING_get_flags(const BN_BLINDING *); -void BN_BLINDING_set_flags(BN_BLINDING *, unsigned long); -BN_BLINDING *BN_BLINDING_create_param(BN_BLINDING *b, - const BIGNUM *e, BIGNUM *m, BN_CTX *ctx, - int (*bn_mod_exp) (BIGNUM *r, - const BIGNUM *a, - const BIGNUM *p, - const BIGNUM *m, - BN_CTX *ctx, - BN_MONT_CTX *m_ctx), - BN_MONT_CTX *m_ctx); - -# ifndef OPENSSL_NO_DEPRECATED -void BN_set_params(int mul, int high, int low, int mont); -int BN_get_params(int which); /* 0, mul, 1 high, 2 low, 3 mont */ -# endif - -void BN_RECP_CTX_init(BN_RECP_CTX *recp); -BN_RECP_CTX *BN_RECP_CTX_new(void); -void BN_RECP_CTX_free(BN_RECP_CTX *recp); -int BN_RECP_CTX_set(BN_RECP_CTX *recp, const BIGNUM *rdiv, BN_CTX *ctx); -int BN_mod_mul_reciprocal(BIGNUM *r, const BIGNUM *x, const BIGNUM *y, - BN_RECP_CTX *recp, BN_CTX *ctx); -int BN_mod_exp_recp(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, - const BIGNUM *m, BN_CTX *ctx); -int BN_div_recp(BIGNUM *dv, BIGNUM *rem, const BIGNUM *m, - BN_RECP_CTX *recp, BN_CTX *ctx); - -# ifndef OPENSSL_NO_EC2M - -/* - * Functions for arithmetic over binary polynomials represented by BIGNUMs. - * The BIGNUM::neg property of BIGNUMs representing binary polynomials is - * ignored. Note that input arguments are not const so that their bit arrays - * can be expanded to the appropriate size if needed. - */ - -/* - * r = a + b - */ -int BN_GF2m_add(BIGNUM *r, const BIGNUM *a, const BIGNUM *b); -# define BN_GF2m_sub(r, a, b) BN_GF2m_add(r, a, b) -/* - * r=a mod p - */ -int BN_GF2m_mod(BIGNUM *r, const BIGNUM *a, const BIGNUM *p); -/* r = (a * b) mod p */ -int BN_GF2m_mod_mul(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, - const BIGNUM *p, BN_CTX *ctx); -/* r = (a * a) mod p */ -int BN_GF2m_mod_sqr(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx); -/* r = (1 / b) mod p */ -int BN_GF2m_mod_inv(BIGNUM *r, const BIGNUM *b, const BIGNUM *p, BN_CTX *ctx); -/* r = (a / b) mod p */ -int BN_GF2m_mod_div(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, - const BIGNUM *p, BN_CTX *ctx); -/* r = (a ^ b) mod p */ -int BN_GF2m_mod_exp(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, - const BIGNUM *p, BN_CTX *ctx); -/* r = sqrt(a) mod p */ -int BN_GF2m_mod_sqrt(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, - BN_CTX *ctx); -/* r^2 + r = a mod p */ -int BN_GF2m_mod_solve_quad(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, - BN_CTX *ctx); -# define BN_GF2m_cmp(a, b) BN_ucmp((a), (b)) -/*- - * Some functions allow for representation of the irreducible polynomials - * as an unsigned int[], say p. The irreducible f(t) is then of the form: - * t^p[0] + t^p[1] + ... + t^p[k] - * where m = p[0] > p[1] > ... > p[k] = 0. - */ -/* r = a mod p */ -int BN_GF2m_mod_arr(BIGNUM *r, const BIGNUM *a, const int p[]); -/* r = (a * b) mod p */ -int BN_GF2m_mod_mul_arr(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, - const int p[], BN_CTX *ctx); -/* r = (a * a) mod p */ -int BN_GF2m_mod_sqr_arr(BIGNUM *r, const BIGNUM *a, const int p[], - BN_CTX *ctx); -/* r = (1 / b) mod p */ -int BN_GF2m_mod_inv_arr(BIGNUM *r, const BIGNUM *b, const int p[], - BN_CTX *ctx); -/* r = (a / b) mod p */ -int BN_GF2m_mod_div_arr(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, - const int p[], BN_CTX *ctx); -/* r = (a ^ b) mod p */ -int BN_GF2m_mod_exp_arr(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, - const int p[], BN_CTX *ctx); -/* r = sqrt(a) mod p */ -int BN_GF2m_mod_sqrt_arr(BIGNUM *r, const BIGNUM *a, - const int p[], BN_CTX *ctx); -/* r^2 + r = a mod p */ -int BN_GF2m_mod_solve_quad_arr(BIGNUM *r, const BIGNUM *a, - const int p[], BN_CTX *ctx); -int BN_GF2m_poly2arr(const BIGNUM *a, int p[], int max); -int BN_GF2m_arr2poly(const int p[], BIGNUM *a); - -# endif - -/* - * faster mod functions for the 'NIST primes' 0 <= a < p^2 - */ -int BN_nist_mod_192(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx); -int BN_nist_mod_224(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx); -int BN_nist_mod_256(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx); -int BN_nist_mod_384(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx); -int BN_nist_mod_521(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx); - -const BIGNUM *BN_get0_nist_prime_192(void); -const BIGNUM *BN_get0_nist_prime_224(void); -const BIGNUM *BN_get0_nist_prime_256(void); -const BIGNUM *BN_get0_nist_prime_384(void); -const BIGNUM *BN_get0_nist_prime_521(void); - -/* library internal functions */ - -# define bn_expand(a,bits) ((((((bits+BN_BITS2-1))/BN_BITS2)) <= (a)->dmax)?\ - (a):bn_expand2((a),(bits+BN_BITS2-1)/BN_BITS2)) -# define bn_wexpand(a,words) (((words) <= (a)->dmax)?(a):bn_expand2((a),(words))) -BIGNUM *bn_expand2(BIGNUM *a, int words); -# ifndef OPENSSL_NO_DEPRECATED -BIGNUM *bn_dup_expand(const BIGNUM *a, int words); /* unused */ -# endif - -/*- - * Bignum consistency macros - * There is one "API" macro, bn_fix_top(), for stripping leading zeroes from - * bignum data after direct manipulations on the data. There is also an - * "internal" macro, bn_check_top(), for verifying that there are no leading - * zeroes. Unfortunately, some auditing is required due to the fact that - * bn_fix_top() has become an overabused duct-tape because bignum data is - * occasionally passed around in an inconsistent state. So the following - * changes have been made to sort this out; - * - bn_fix_top()s implementation has been moved to bn_correct_top() - * - if BN_DEBUG isn't defined, bn_fix_top() maps to bn_correct_top(), and - * bn_check_top() is as before. - * - if BN_DEBUG *is* defined; - * - bn_check_top() tries to pollute unused words even if the bignum 'top' is - * consistent. (ed: only if BN_DEBUG_RAND is defined) - * - bn_fix_top() maps to bn_check_top() rather than "fixing" anything. - * The idea is to have debug builds flag up inconsistent bignums when they - * occur. If that occurs in a bn_fix_top(), we examine the code in question; if - * the use of bn_fix_top() was appropriate (ie. it follows directly after code - * that manipulates the bignum) it is converted to bn_correct_top(), and if it - * was not appropriate, we convert it permanently to bn_check_top() and track - * down the cause of the bug. Eventually, no internal code should be using the - * bn_fix_top() macro. External applications and libraries should try this with - * their own code too, both in terms of building against the openssl headers - * with BN_DEBUG defined *and* linking with a version of OpenSSL built with it - * defined. This not only improves external code, it provides more test - * coverage for openssl's own code. - */ - -# ifdef BN_DEBUG - -/* We only need assert() when debugging */ -# include - -# ifdef BN_DEBUG_RAND -/* To avoid "make update" cvs wars due to BN_DEBUG, use some tricks */ -# ifndef RAND_pseudo_bytes -int RAND_pseudo_bytes(unsigned char *buf, int num); -# define BN_DEBUG_TRIX -# endif -# define bn_pollute(a) \ - do { \ - const BIGNUM *_bnum1 = (a); \ - if(_bnum1->top < _bnum1->dmax) { \ - unsigned char _tmp_char; \ - /* We cast away const without the compiler knowing, any \ - * *genuinely* constant variables that aren't mutable \ - * wouldn't be constructed with top!=dmax. */ \ - BN_ULONG *_not_const; \ - memcpy(&_not_const, &_bnum1->d, sizeof(BN_ULONG*)); \ - RAND_pseudo_bytes(&_tmp_char, 1); \ - memset((unsigned char *)(_not_const + _bnum1->top), _tmp_char, \ - (_bnum1->dmax - _bnum1->top) * sizeof(BN_ULONG)); \ - } \ - } while(0) -# ifdef BN_DEBUG_TRIX -# undef RAND_pseudo_bytes -# endif -# else -# define bn_pollute(a) -# endif -# define bn_check_top(a) \ - do { \ - const BIGNUM *_bnum2 = (a); \ - if (_bnum2 != NULL) { \ - assert((_bnum2->top == 0) || \ - (_bnum2->d[_bnum2->top - 1] != 0)); \ - bn_pollute(_bnum2); \ - } \ - } while(0) - -# define bn_fix_top(a) bn_check_top(a) - -# define bn_check_size(bn, bits) bn_wcheck_size(bn, ((bits+BN_BITS2-1))/BN_BITS2) -# define bn_wcheck_size(bn, words) \ - do { \ - const BIGNUM *_bnum2 = (bn); \ - assert((words) <= (_bnum2)->dmax && (words) >= (_bnum2)->top); \ - /* avoid unused variable warning with NDEBUG */ \ - (void)(_bnum2); \ - } while(0) - -# else /* !BN_DEBUG */ - -# define bn_pollute(a) -# define bn_check_top(a) -# define bn_fix_top(a) bn_correct_top(a) -# define bn_check_size(bn, bits) -# define bn_wcheck_size(bn, words) - -# endif - -# define bn_correct_top(a) \ - { \ - BN_ULONG *ftl; \ - int tmp_top = (a)->top; \ - if (tmp_top > 0) \ - { \ - for (ftl= &((a)->d[tmp_top-1]); tmp_top > 0; tmp_top--) \ - if (*(ftl--)) break; \ - (a)->top = tmp_top; \ - } \ - bn_pollute(a); \ - } - -BN_ULONG bn_mul_add_words(BN_ULONG *rp, const BN_ULONG *ap, int num, - BN_ULONG w); -BN_ULONG bn_mul_words(BN_ULONG *rp, const BN_ULONG *ap, int num, BN_ULONG w); -void bn_sqr_words(BN_ULONG *rp, const BN_ULONG *ap, int num); -BN_ULONG bn_div_words(BN_ULONG h, BN_ULONG l, BN_ULONG d); -BN_ULONG bn_add_words(BN_ULONG *rp, const BN_ULONG *ap, const BN_ULONG *bp, - int num); -BN_ULONG bn_sub_words(BN_ULONG *rp, const BN_ULONG *ap, const BN_ULONG *bp, - int num); - -/* Primes from RFC 2409 */ -BIGNUM *get_rfc2409_prime_768(BIGNUM *bn); -BIGNUM *get_rfc2409_prime_1024(BIGNUM *bn); - -/* Primes from RFC 3526 */ -BIGNUM *get_rfc3526_prime_1536(BIGNUM *bn); -BIGNUM *get_rfc3526_prime_2048(BIGNUM *bn); -BIGNUM *get_rfc3526_prime_3072(BIGNUM *bn); -BIGNUM *get_rfc3526_prime_4096(BIGNUM *bn); -BIGNUM *get_rfc3526_prime_6144(BIGNUM *bn); -BIGNUM *get_rfc3526_prime_8192(BIGNUM *bn); - -int BN_bntest_rand(BIGNUM *rnd, int bits, int top, int bottom); - -/* BEGIN ERROR CODES */ -/* - * The following lines are auto generated by the script mkerr.pl. Any changes - * made after this point may be overwritten when the script is next run. - */ -void ERR_load_BN_strings(void); - -/* Error codes for the BN functions. */ - -/* Function codes. */ -# define BN_F_BNRAND 127 -# define BN_F_BN_BLINDING_CONVERT_EX 100 -# define BN_F_BN_BLINDING_CREATE_PARAM 128 -# define BN_F_BN_BLINDING_INVERT_EX 101 -# define BN_F_BN_BLINDING_NEW 102 -# define BN_F_BN_BLINDING_UPDATE 103 -# define BN_F_BN_BN2DEC 104 -# define BN_F_BN_BN2HEX 105 -# define BN_F_BN_CTX_GET 116 -# define BN_F_BN_CTX_NEW 106 -# define BN_F_BN_CTX_START 129 -# define BN_F_BN_DIV 107 -# define BN_F_BN_DIV_NO_BRANCH 138 -# define BN_F_BN_DIV_RECP 130 -# define BN_F_BN_EXP 123 -# define BN_F_BN_EXPAND2 108 -# define BN_F_BN_EXPAND_INTERNAL 120 -# define BN_F_BN_GF2M_MOD 131 -# define BN_F_BN_GF2M_MOD_EXP 132 -# define BN_F_BN_GF2M_MOD_MUL 133 -# define BN_F_BN_GF2M_MOD_SOLVE_QUAD 134 -# define BN_F_BN_GF2M_MOD_SOLVE_QUAD_ARR 135 -# define BN_F_BN_GF2M_MOD_SQR 136 -# define BN_F_BN_GF2M_MOD_SQRT 137 -# define BN_F_BN_MOD_EXP2_MONT 118 -# define BN_F_BN_MOD_EXP_MONT 109 -# define BN_F_BN_MOD_EXP_MONT_CONSTTIME 124 -# define BN_F_BN_MOD_EXP_MONT_WORD 117 -# define BN_F_BN_MOD_EXP_RECP 125 -# define BN_F_BN_MOD_EXP_SIMPLE 126 -# define BN_F_BN_MOD_INVERSE 110 -# define BN_F_BN_MOD_INVERSE_NO_BRANCH 139 -# define BN_F_BN_MOD_LSHIFT_QUICK 119 -# define BN_F_BN_MOD_MUL_RECIPROCAL 111 -# define BN_F_BN_MOD_SQRT 121 -# define BN_F_BN_MPI2BN 112 -# define BN_F_BN_NEW 113 -# define BN_F_BN_RAND 114 -# define BN_F_BN_RAND_RANGE 122 -# define BN_F_BN_USUB 115 - -/* Reason codes. */ -# define BN_R_ARG2_LT_ARG3 100 -# define BN_R_BAD_RECIPROCAL 101 -# define BN_R_BIGNUM_TOO_LONG 114 -# define BN_R_CALLED_WITH_EVEN_MODULUS 102 -# define BN_R_DIV_BY_ZERO 103 -# define BN_R_ENCODING_ERROR 104 -# define BN_R_EXPAND_ON_STATIC_BIGNUM_DATA 105 -# define BN_R_INPUT_NOT_REDUCED 110 -# define BN_R_INVALID_LENGTH 106 -# define BN_R_INVALID_RANGE 115 -# define BN_R_NOT_A_SQUARE 111 -# define BN_R_NOT_INITIALIZED 107 -# define BN_R_NO_INVERSE 108 -# define BN_R_NO_SOLUTION 116 -# define BN_R_P_IS_NOT_PRIME 112 -# define BN_R_TOO_MANY_ITERATIONS 113 -# define BN_R_TOO_MANY_TEMPORARY_VARIABLES 109 - -#ifdef __cplusplus -} -#endif -#endif diff --git a/ext/openssl-win64/inc32/openssl/buffer.h b/ext/openssl-win64/inc32/openssl/buffer.h deleted file mode 100644 index c343dd77..00000000 --- a/ext/openssl-win64/inc32/openssl/buffer.h +++ /dev/null @@ -1,119 +0,0 @@ -/* crypto/buffer/buffer.h */ -/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) - * All rights reserved. - * - * This package is an SSL implementation written - * by Eric Young (eay@cryptsoft.com). - * The implementation was written so as to conform with Netscapes SSL. - * - * This library is free for commercial and non-commercial use as long as - * the following conditions are aheared to. The following conditions - * apply to all code found in this distribution, be it the RC4, RSA, - * lhash, DES, etc., code; not just the SSL code. The SSL documentation - * included with this distribution is covered by the same copyright terms - * except that the holder is Tim Hudson (tjh@cryptsoft.com). - * - * Copyright remains Eric Young's, and as such any Copyright notices in - * the code are not to be removed. - * If this package is used in a product, Eric Young should be given attribution - * as the author of the parts of the library used. - * This can be in the form of a textual message at program startup or - * in documentation (online or textual) provided with the package. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * "This product includes cryptographic software written by - * Eric Young (eay@cryptsoft.com)" - * The word 'cryptographic' can be left out if the rouines from the library - * being used are not cryptographic related :-). - * 4. If you include any Windows specific code (or a derivative thereof) from - * the apps directory (application code) you must include an acknowledgement: - * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" - * - * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * The licence and distribution terms for any publically available version or - * derivative of this code cannot be changed. i.e. this code cannot simply be - * copied and put under another distribution licence - * [including the GNU Public Licence.] - */ - -#ifndef HEADER_BUFFER_H -# define HEADER_BUFFER_H - -# include - -#ifdef __cplusplus -extern "C" { -#endif - -# include - -# if !defined(NO_SYS_TYPES_H) -# include -# endif - -/* Already declared in ossl_typ.h */ -/* typedef struct buf_mem_st BUF_MEM; */ - -struct buf_mem_st { - size_t length; /* current number of bytes */ - char *data; - size_t max; /* size of buffer */ -}; - -BUF_MEM *BUF_MEM_new(void); -void BUF_MEM_free(BUF_MEM *a); -int BUF_MEM_grow(BUF_MEM *str, size_t len); -int BUF_MEM_grow_clean(BUF_MEM *str, size_t len); -size_t BUF_strnlen(const char *str, size_t maxlen); -char *BUF_strdup(const char *str); -char *BUF_strndup(const char *str, size_t siz); -void *BUF_memdup(const void *data, size_t siz); -void BUF_reverse(unsigned char *out, const unsigned char *in, size_t siz); - -/* safe string functions */ -size_t BUF_strlcpy(char *dst, const char *src, size_t siz); -size_t BUF_strlcat(char *dst, const char *src, size_t siz); - -/* BEGIN ERROR CODES */ -/* - * The following lines are auto generated by the script mkerr.pl. Any changes - * made after this point may be overwritten when the script is next run. - */ -void ERR_load_BUF_strings(void); - -/* Error codes for the BUF functions. */ - -/* Function codes. */ -# define BUF_F_BUF_MEMDUP 103 -# define BUF_F_BUF_MEM_GROW 100 -# define BUF_F_BUF_MEM_GROW_CLEAN 105 -# define BUF_F_BUF_MEM_NEW 101 -# define BUF_F_BUF_STRDUP 102 -# define BUF_F_BUF_STRNDUP 104 - -/* Reason codes. */ - -#ifdef __cplusplus -} -#endif -#endif diff --git a/ext/openssl-win64/inc32/openssl/comp.h b/ext/openssl-win64/inc32/openssl/comp.h deleted file mode 100644 index 406c428a..00000000 --- a/ext/openssl-win64/inc32/openssl/comp.h +++ /dev/null @@ -1,79 +0,0 @@ - -#ifndef HEADER_COMP_H -# define HEADER_COMP_H - -# include - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct comp_ctx_st COMP_CTX; - -typedef struct comp_method_st { - int type; /* NID for compression library */ - const char *name; /* A text string to identify the library */ - int (*init) (COMP_CTX *ctx); - void (*finish) (COMP_CTX *ctx); - int (*compress) (COMP_CTX *ctx, - unsigned char *out, unsigned int olen, - unsigned char *in, unsigned int ilen); - int (*expand) (COMP_CTX *ctx, - unsigned char *out, unsigned int olen, - unsigned char *in, unsigned int ilen); - /* - * The following two do NOTHING, but are kept for backward compatibility - */ - long (*ctrl) (void); - long (*callback_ctrl) (void); -} COMP_METHOD; - -struct comp_ctx_st { - COMP_METHOD *meth; - unsigned long compress_in; - unsigned long compress_out; - unsigned long expand_in; - unsigned long expand_out; - CRYPTO_EX_DATA ex_data; -}; - -COMP_CTX *COMP_CTX_new(COMP_METHOD *meth); -void COMP_CTX_free(COMP_CTX *ctx); -int COMP_compress_block(COMP_CTX *ctx, unsigned char *out, int olen, - unsigned char *in, int ilen); -int COMP_expand_block(COMP_CTX *ctx, unsigned char *out, int olen, - unsigned char *in, int ilen); -COMP_METHOD *COMP_rle(void); -COMP_METHOD *COMP_zlib(void); -void COMP_zlib_cleanup(void); - -# ifdef HEADER_BIO_H -# ifdef ZLIB -BIO_METHOD *BIO_f_zlib(void); -# endif -# endif - -/* BEGIN ERROR CODES */ -/* - * The following lines are auto generated by the script mkerr.pl. Any changes - * made after this point may be overwritten when the script is next run. - */ -void ERR_load_COMP_strings(void); - -/* Error codes for the COMP functions. */ - -/* Function codes. */ -# define COMP_F_BIO_ZLIB_FLUSH 99 -# define COMP_F_BIO_ZLIB_NEW 100 -# define COMP_F_BIO_ZLIB_READ 101 -# define COMP_F_BIO_ZLIB_WRITE 102 - -/* Reason codes. */ -# define COMP_R_ZLIB_DEFLATE_ERROR 99 -# define COMP_R_ZLIB_INFLATE_ERROR 100 -# define COMP_R_ZLIB_NOT_SUPPORTED 101 - -#ifdef __cplusplus -} -#endif -#endif diff --git a/ext/openssl-win64/inc32/openssl/crypto.h b/ext/openssl-win64/inc32/openssl/crypto.h deleted file mode 100644 index c450d7a3..00000000 --- a/ext/openssl-win64/inc32/openssl/crypto.h +++ /dev/null @@ -1,661 +0,0 @@ -/* crypto/crypto.h */ -/* ==================================================================== - * Copyright (c) 1998-2006 The OpenSSL Project. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. All advertising materials mentioning features or use of this - * software must display the following acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" - * - * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * openssl-core@openssl.org. - * - * 5. Products derived from this software may not be called "OpenSSL" - * nor may "OpenSSL" appear in their names without prior written - * permission of the OpenSSL Project. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit (http://www.openssl.org/)" - * - * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY - * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * ==================================================================== - * - * This product includes cryptographic software written by Eric Young - * (eay@cryptsoft.com). This product includes software written by Tim - * Hudson (tjh@cryptsoft.com). - * - */ -/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) - * All rights reserved. - * - * This package is an SSL implementation written - * by Eric Young (eay@cryptsoft.com). - * The implementation was written so as to conform with Netscapes SSL. - * - * This library is free for commercial and non-commercial use as long as - * the following conditions are aheared to. The following conditions - * apply to all code found in this distribution, be it the RC4, RSA, - * lhash, DES, etc., code; not just the SSL code. The SSL documentation - * included with this distribution is covered by the same copyright terms - * except that the holder is Tim Hudson (tjh@cryptsoft.com). - * - * Copyright remains Eric Young's, and as such any Copyright notices in - * the code are not to be removed. - * If this package is used in a product, Eric Young should be given attribution - * as the author of the parts of the library used. - * This can be in the form of a textual message at program startup or - * in documentation (online or textual) provided with the package. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * "This product includes cryptographic software written by - * Eric Young (eay@cryptsoft.com)" - * The word 'cryptographic' can be left out if the rouines from the library - * being used are not cryptographic related :-). - * 4. If you include any Windows specific code (or a derivative thereof) from - * the apps directory (application code) you must include an acknowledgement: - * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" - * - * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * The licence and distribution terms for any publically available version or - * derivative of this code cannot be changed. i.e. this code cannot simply be - * copied and put under another distribution licence - * [including the GNU Public Licence.] - */ -/* ==================================================================== - * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED. - * ECDH support in OpenSSL originally developed by - * SUN MICROSYSTEMS, INC., and contributed to the OpenSSL project. - */ - -#ifndef HEADER_CRYPTO_H -# define HEADER_CRYPTO_H - -# include - -# include - -# ifndef OPENSSL_NO_FP_API -# include -# endif - -# include -# include -# include -# include - -# ifdef CHARSET_EBCDIC -# include -# endif - -/* - * Resolve problems on some operating systems with symbol names that clash - * one way or another - */ -# include - -#ifdef __cplusplus -extern "C" { -#endif - -/* Backward compatibility to SSLeay */ -/* - * This is more to be used to check the correct DLL is being used in the MS - * world. - */ -# define SSLEAY_VERSION_NUMBER OPENSSL_VERSION_NUMBER -# define SSLEAY_VERSION 0 -/* #define SSLEAY_OPTIONS 1 no longer supported */ -# define SSLEAY_CFLAGS 2 -# define SSLEAY_BUILT_ON 3 -# define SSLEAY_PLATFORM 4 -# define SSLEAY_DIR 5 - -/* Already declared in ossl_typ.h */ -# if 0 -typedef struct crypto_ex_data_st CRYPTO_EX_DATA; -/* Called when a new object is created */ -typedef int CRYPTO_EX_new (void *parent, void *ptr, CRYPTO_EX_DATA *ad, - int idx, long argl, void *argp); -/* Called when an object is free()ed */ -typedef void CRYPTO_EX_free (void *parent, void *ptr, CRYPTO_EX_DATA *ad, - int idx, long argl, void *argp); -/* Called when we need to dup an object */ -typedef int CRYPTO_EX_dup (CRYPTO_EX_DATA *to, CRYPTO_EX_DATA *from, - void *from_d, int idx, long argl, void *argp); -# endif - -/* A generic structure to pass assorted data in a expandable way */ -typedef struct openssl_item_st { - int code; - void *value; /* Not used for flag attributes */ - size_t value_size; /* Max size of value for output, length for - * input */ - size_t *value_length; /* Returned length of value for output */ -} OPENSSL_ITEM; - -/* - * When changing the CRYPTO_LOCK_* list, be sure to maintin the text lock - * names in cryptlib.c - */ - -# define CRYPTO_LOCK_ERR 1 -# define CRYPTO_LOCK_EX_DATA 2 -# define CRYPTO_LOCK_X509 3 -# define CRYPTO_LOCK_X509_INFO 4 -# define CRYPTO_LOCK_X509_PKEY 5 -# define CRYPTO_LOCK_X509_CRL 6 -# define CRYPTO_LOCK_X509_REQ 7 -# define CRYPTO_LOCK_DSA 8 -# define CRYPTO_LOCK_RSA 9 -# define CRYPTO_LOCK_EVP_PKEY 10 -# define CRYPTO_LOCK_X509_STORE 11 -# define CRYPTO_LOCK_SSL_CTX 12 -# define CRYPTO_LOCK_SSL_CERT 13 -# define CRYPTO_LOCK_SSL_SESSION 14 -# define CRYPTO_LOCK_SSL_SESS_CERT 15 -# define CRYPTO_LOCK_SSL 16 -# define CRYPTO_LOCK_SSL_METHOD 17 -# define CRYPTO_LOCK_RAND 18 -# define CRYPTO_LOCK_RAND2 19 -# define CRYPTO_LOCK_MALLOC 20 -# define CRYPTO_LOCK_BIO 21 -# define CRYPTO_LOCK_GETHOSTBYNAME 22 -# define CRYPTO_LOCK_GETSERVBYNAME 23 -# define CRYPTO_LOCK_READDIR 24 -# define CRYPTO_LOCK_RSA_BLINDING 25 -# define CRYPTO_LOCK_DH 26 -# define CRYPTO_LOCK_MALLOC2 27 -# define CRYPTO_LOCK_DSO 28 -# define CRYPTO_LOCK_DYNLOCK 29 -# define CRYPTO_LOCK_ENGINE 30 -# define CRYPTO_LOCK_UI 31 -# define CRYPTO_LOCK_ECDSA 32 -# define CRYPTO_LOCK_EC 33 -# define CRYPTO_LOCK_ECDH 34 -# define CRYPTO_LOCK_BN 35 -# define CRYPTO_LOCK_EC_PRE_COMP 36 -# define CRYPTO_LOCK_STORE 37 -# define CRYPTO_LOCK_COMP 38 -# define CRYPTO_LOCK_FIPS 39 -# define CRYPTO_LOCK_FIPS2 40 -# define CRYPTO_NUM_LOCKS 41 - -# define CRYPTO_LOCK 1 -# define CRYPTO_UNLOCK 2 -# define CRYPTO_READ 4 -# define CRYPTO_WRITE 8 - -# ifndef OPENSSL_NO_LOCKING -# ifndef CRYPTO_w_lock -# define CRYPTO_w_lock(type) \ - CRYPTO_lock(CRYPTO_LOCK|CRYPTO_WRITE,type,__FILE__,__LINE__) -# define CRYPTO_w_unlock(type) \ - CRYPTO_lock(CRYPTO_UNLOCK|CRYPTO_WRITE,type,__FILE__,__LINE__) -# define CRYPTO_r_lock(type) \ - CRYPTO_lock(CRYPTO_LOCK|CRYPTO_READ,type,__FILE__,__LINE__) -# define CRYPTO_r_unlock(type) \ - CRYPTO_lock(CRYPTO_UNLOCK|CRYPTO_READ,type,__FILE__,__LINE__) -# define CRYPTO_add(addr,amount,type) \ - CRYPTO_add_lock(addr,amount,type,__FILE__,__LINE__) -# endif -# else -# define CRYPTO_w_lock(a) -# define CRYPTO_w_unlock(a) -# define CRYPTO_r_lock(a) -# define CRYPTO_r_unlock(a) -# define CRYPTO_add(a,b,c) ((*(a))+=(b)) -# endif - -/* - * Some applications as well as some parts of OpenSSL need to allocate and - * deallocate locks in a dynamic fashion. The following typedef makes this - * possible in a type-safe manner. - */ -/* struct CRYPTO_dynlock_value has to be defined by the application. */ -typedef struct { - int references; - struct CRYPTO_dynlock_value *data; -} CRYPTO_dynlock; - -/* - * The following can be used to detect memory leaks in the SSLeay library. It - * used, it turns on malloc checking - */ - -# define CRYPTO_MEM_CHECK_OFF 0x0/* an enume */ -# define CRYPTO_MEM_CHECK_ON 0x1/* a bit */ -# define CRYPTO_MEM_CHECK_ENABLE 0x2/* a bit */ -# define CRYPTO_MEM_CHECK_DISABLE 0x3/* an enume */ - -/* - * The following are bit values to turn on or off options connected to the - * malloc checking functionality - */ - -/* Adds time to the memory checking information */ -# define V_CRYPTO_MDEBUG_TIME 0x1/* a bit */ -/* Adds thread number to the memory checking information */ -# define V_CRYPTO_MDEBUG_THREAD 0x2/* a bit */ - -# define V_CRYPTO_MDEBUG_ALL (V_CRYPTO_MDEBUG_TIME | V_CRYPTO_MDEBUG_THREAD) - -/* predec of the BIO type */ -typedef struct bio_st BIO_dummy; - -struct crypto_ex_data_st { - STACK_OF(void) *sk; - /* gcc is screwing up this data structure :-( */ - int dummy; -}; -DECLARE_STACK_OF(void) - -/* - * This stuff is basically class callback functions The current classes are - * SSL_CTX, SSL, SSL_SESSION, and a few more - */ - -typedef struct crypto_ex_data_func_st { - long argl; /* Arbitary long */ - void *argp; /* Arbitary void * */ - CRYPTO_EX_new *new_func; - CRYPTO_EX_free *free_func; - CRYPTO_EX_dup *dup_func; -} CRYPTO_EX_DATA_FUNCS; - -DECLARE_STACK_OF(CRYPTO_EX_DATA_FUNCS) - -/* - * Per class, we have a STACK of CRYPTO_EX_DATA_FUNCS for each CRYPTO_EX_DATA - * entry. - */ - -# define CRYPTO_EX_INDEX_BIO 0 -# define CRYPTO_EX_INDEX_SSL 1 -# define CRYPTO_EX_INDEX_SSL_CTX 2 -# define CRYPTO_EX_INDEX_SSL_SESSION 3 -# define CRYPTO_EX_INDEX_X509_STORE 4 -# define CRYPTO_EX_INDEX_X509_STORE_CTX 5 -# define CRYPTO_EX_INDEX_RSA 6 -# define CRYPTO_EX_INDEX_DSA 7 -# define CRYPTO_EX_INDEX_DH 8 -# define CRYPTO_EX_INDEX_ENGINE 9 -# define CRYPTO_EX_INDEX_X509 10 -# define CRYPTO_EX_INDEX_UI 11 -# define CRYPTO_EX_INDEX_ECDSA 12 -# define CRYPTO_EX_INDEX_ECDH 13 -# define CRYPTO_EX_INDEX_COMP 14 -# define CRYPTO_EX_INDEX_STORE 15 - -/* - * Dynamically assigned indexes start from this value (don't use directly, - * use via CRYPTO_ex_data_new_class). - */ -# define CRYPTO_EX_INDEX_USER 100 - -/* - * This is the default callbacks, but we can have others as well: this is - * needed in Win32 where the application malloc and the library malloc may - * not be the same. - */ -# define CRYPTO_malloc_init() CRYPTO_set_mem_functions(\ - malloc, realloc, free) - -# if defined CRYPTO_MDEBUG_ALL || defined CRYPTO_MDEBUG_TIME || defined CRYPTO_MDEBUG_THREAD -# ifndef CRYPTO_MDEBUG /* avoid duplicate #define */ -# define CRYPTO_MDEBUG -# endif -# endif - -/* - * Set standard debugging functions (not done by default unless CRYPTO_MDEBUG - * is defined) - */ -# define CRYPTO_malloc_debug_init() do {\ - CRYPTO_set_mem_debug_functions(\ - CRYPTO_dbg_malloc,\ - CRYPTO_dbg_realloc,\ - CRYPTO_dbg_free,\ - CRYPTO_dbg_set_options,\ - CRYPTO_dbg_get_options);\ - } while(0) - -int CRYPTO_mem_ctrl(int mode); -int CRYPTO_is_mem_check_on(void); - -/* for applications */ -# define MemCheck_start() CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_ON) -# define MemCheck_stop() CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_OFF) - -/* for library-internal use */ -# define MemCheck_on() CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_ENABLE) -# define MemCheck_off() CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_DISABLE) -# define is_MemCheck_on() CRYPTO_is_mem_check_on() - -# define OPENSSL_malloc(num) CRYPTO_malloc((int)num,__FILE__,__LINE__) -# define OPENSSL_strdup(str) CRYPTO_strdup((str),__FILE__,__LINE__) -# define OPENSSL_realloc(addr,num) \ - CRYPTO_realloc((char *)addr,(int)num,__FILE__,__LINE__) -# define OPENSSL_realloc_clean(addr,old_num,num) \ - CRYPTO_realloc_clean(addr,old_num,num,__FILE__,__LINE__) -# define OPENSSL_remalloc(addr,num) \ - CRYPTO_remalloc((char **)addr,(int)num,__FILE__,__LINE__) -# define OPENSSL_freeFunc CRYPTO_free -# define OPENSSL_free(addr) CRYPTO_free(addr) - -# define OPENSSL_malloc_locked(num) \ - CRYPTO_malloc_locked((int)num,__FILE__,__LINE__) -# define OPENSSL_free_locked(addr) CRYPTO_free_locked(addr) - -const char *SSLeay_version(int type); -unsigned long SSLeay(void); - -int OPENSSL_issetugid(void); - -/* An opaque type representing an implementation of "ex_data" support */ -typedef struct st_CRYPTO_EX_DATA_IMPL CRYPTO_EX_DATA_IMPL; -/* Return an opaque pointer to the current "ex_data" implementation */ -const CRYPTO_EX_DATA_IMPL *CRYPTO_get_ex_data_implementation(void); -/* Sets the "ex_data" implementation to be used (if it's not too late) */ -int CRYPTO_set_ex_data_implementation(const CRYPTO_EX_DATA_IMPL *i); -/* Get a new "ex_data" class, and return the corresponding "class_index" */ -int CRYPTO_ex_data_new_class(void); -/* Within a given class, get/register a new index */ -int CRYPTO_get_ex_new_index(int class_index, long argl, void *argp, - CRYPTO_EX_new *new_func, CRYPTO_EX_dup *dup_func, - CRYPTO_EX_free *free_func); -/* - * Initialise/duplicate/free CRYPTO_EX_DATA variables corresponding to a - * given class (invokes whatever per-class callbacks are applicable) - */ -int CRYPTO_new_ex_data(int class_index, void *obj, CRYPTO_EX_DATA *ad); -int CRYPTO_dup_ex_data(int class_index, CRYPTO_EX_DATA *to, - CRYPTO_EX_DATA *from); -void CRYPTO_free_ex_data(int class_index, void *obj, CRYPTO_EX_DATA *ad); -/* - * Get/set data in a CRYPTO_EX_DATA variable corresponding to a particular - * index (relative to the class type involved) - */ -int CRYPTO_set_ex_data(CRYPTO_EX_DATA *ad, int idx, void *val); -void *CRYPTO_get_ex_data(const CRYPTO_EX_DATA *ad, int idx); -/* - * This function cleans up all "ex_data" state. It mustn't be called under - * potential race-conditions. - */ -void CRYPTO_cleanup_all_ex_data(void); - -int CRYPTO_get_new_lockid(char *name); - -int CRYPTO_num_locks(void); /* return CRYPTO_NUM_LOCKS (shared libs!) */ -void CRYPTO_lock(int mode, int type, const char *file, int line); -void CRYPTO_set_locking_callback(void (*func) (int mode, int type, - const char *file, int line)); -void (*CRYPTO_get_locking_callback(void)) (int mode, int type, - const char *file, int line); -void CRYPTO_set_add_lock_callback(int (*func) - (int *num, int mount, int type, - const char *file, int line)); -int (*CRYPTO_get_add_lock_callback(void)) (int *num, int mount, int type, - const char *file, int line); - -/* Don't use this structure directly. */ -typedef struct crypto_threadid_st { - void *ptr; - unsigned long val; -} CRYPTO_THREADID; -/* Only use CRYPTO_THREADID_set_[numeric|pointer]() within callbacks */ -void CRYPTO_THREADID_set_numeric(CRYPTO_THREADID *id, unsigned long val); -void CRYPTO_THREADID_set_pointer(CRYPTO_THREADID *id, void *ptr); -int CRYPTO_THREADID_set_callback(void (*threadid_func) (CRYPTO_THREADID *)); -void (*CRYPTO_THREADID_get_callback(void)) (CRYPTO_THREADID *); -void CRYPTO_THREADID_current(CRYPTO_THREADID *id); -int CRYPTO_THREADID_cmp(const CRYPTO_THREADID *a, const CRYPTO_THREADID *b); -void CRYPTO_THREADID_cpy(CRYPTO_THREADID *dest, const CRYPTO_THREADID *src); -unsigned long CRYPTO_THREADID_hash(const CRYPTO_THREADID *id); -# ifndef OPENSSL_NO_DEPRECATED -void CRYPTO_set_id_callback(unsigned long (*func) (void)); -unsigned long (*CRYPTO_get_id_callback(void)) (void); -unsigned long CRYPTO_thread_id(void); -# endif - -const char *CRYPTO_get_lock_name(int type); -int CRYPTO_add_lock(int *pointer, int amount, int type, const char *file, - int line); - -int CRYPTO_get_new_dynlockid(void); -void CRYPTO_destroy_dynlockid(int i); -struct CRYPTO_dynlock_value *CRYPTO_get_dynlock_value(int i); -void CRYPTO_set_dynlock_create_callback(struct CRYPTO_dynlock_value - *(*dyn_create_function) (const char - *file, - int line)); -void CRYPTO_set_dynlock_lock_callback(void (*dyn_lock_function) - (int mode, - struct CRYPTO_dynlock_value *l, - const char *file, int line)); -void CRYPTO_set_dynlock_destroy_callback(void (*dyn_destroy_function) - (struct CRYPTO_dynlock_value *l, - const char *file, int line)); -struct CRYPTO_dynlock_value -*(*CRYPTO_get_dynlock_create_callback(void)) (const char *file, int line); -void (*CRYPTO_get_dynlock_lock_callback(void)) (int mode, - struct CRYPTO_dynlock_value - *l, const char *file, - int line); -void (*CRYPTO_get_dynlock_destroy_callback(void)) (struct CRYPTO_dynlock_value - *l, const char *file, - int line); - -/* - * CRYPTO_set_mem_functions includes CRYPTO_set_locked_mem_functions -- call - * the latter last if you need different functions - */ -int CRYPTO_set_mem_functions(void *(*m) (size_t), void *(*r) (void *, size_t), - void (*f) (void *)); -int CRYPTO_set_locked_mem_functions(void *(*m) (size_t), - void (*free_func) (void *)); -int CRYPTO_set_mem_ex_functions(void *(*m) (size_t, const char *, int), - void *(*r) (void *, size_t, const char *, - int), void (*f) (void *)); -int CRYPTO_set_locked_mem_ex_functions(void *(*m) (size_t, const char *, int), - void (*free_func) (void *)); -int CRYPTO_set_mem_debug_functions(void (*m) - (void *, int, const char *, int, int), - void (*r) (void *, void *, int, - const char *, int, int), - void (*f) (void *, int), void (*so) (long), - long (*go) (void)); -void CRYPTO_get_mem_functions(void *(**m) (size_t), - void *(**r) (void *, size_t), - void (**f) (void *)); -void CRYPTO_get_locked_mem_functions(void *(**m) (size_t), - void (**f) (void *)); -void CRYPTO_get_mem_ex_functions(void *(**m) (size_t, const char *, int), - void *(**r) (void *, size_t, const char *, - int), void (**f) (void *)); -void CRYPTO_get_locked_mem_ex_functions(void - *(**m) (size_t, const char *, int), - void (**f) (void *)); -void CRYPTO_get_mem_debug_functions(void (**m) - (void *, int, const char *, int, int), - void (**r) (void *, void *, int, - const char *, int, int), - void (**f) (void *, int), - void (**so) (long), long (**go) (void)); - -void *CRYPTO_malloc_locked(int num, const char *file, int line); -void CRYPTO_free_locked(void *ptr); -void *CRYPTO_malloc(int num, const char *file, int line); -char *CRYPTO_strdup(const char *str, const char *file, int line); -void CRYPTO_free(void *ptr); -void *CRYPTO_realloc(void *addr, int num, const char *file, int line); -void *CRYPTO_realloc_clean(void *addr, int old_num, int num, const char *file, - int line); -void *CRYPTO_remalloc(void *addr, int num, const char *file, int line); - -void OPENSSL_cleanse(void *ptr, size_t len); - -void CRYPTO_set_mem_debug_options(long bits); -long CRYPTO_get_mem_debug_options(void); - -# define CRYPTO_push_info(info) \ - CRYPTO_push_info_(info, __FILE__, __LINE__); -int CRYPTO_push_info_(const char *info, const char *file, int line); -int CRYPTO_pop_info(void); -int CRYPTO_remove_all_info(void); - -/* - * Default debugging functions (enabled by CRYPTO_malloc_debug_init() macro; - * used as default in CRYPTO_MDEBUG compilations): - */ -/*- - * The last argument has the following significance: - * - * 0: called before the actual memory allocation has taken place - * 1: called after the actual memory allocation has taken place - */ -void CRYPTO_dbg_malloc(void *addr, int num, const char *file, int line, - int before_p); -void CRYPTO_dbg_realloc(void *addr1, void *addr2, int num, const char *file, - int line, int before_p); -void CRYPTO_dbg_free(void *addr, int before_p); -/*- - * Tell the debugging code about options. By default, the following values - * apply: - * - * 0: Clear all options. - * V_CRYPTO_MDEBUG_TIME (1): Set the "Show Time" option. - * V_CRYPTO_MDEBUG_THREAD (2): Set the "Show Thread Number" option. - * V_CRYPTO_MDEBUG_ALL (3): 1 + 2 - */ -void CRYPTO_dbg_set_options(long bits); -long CRYPTO_dbg_get_options(void); - -# ifndef OPENSSL_NO_FP_API -void CRYPTO_mem_leaks_fp(FILE *); -# endif -void CRYPTO_mem_leaks(struct bio_st *bio); -/* unsigned long order, char *file, int line, int num_bytes, char *addr */ -typedef void *CRYPTO_MEM_LEAK_CB (unsigned long, const char *, int, int, - void *); -void CRYPTO_mem_leaks_cb(CRYPTO_MEM_LEAK_CB *cb); - -/* die if we have to */ -void OpenSSLDie(const char *file, int line, const char *assertion); -# define OPENSSL_assert(e) (void)((e) ? 0 : (OpenSSLDie(__FILE__, __LINE__, #e),1)) - -unsigned long *OPENSSL_ia32cap_loc(void); -# define OPENSSL_ia32cap (*(OPENSSL_ia32cap_loc())) -int OPENSSL_isservice(void); - -int FIPS_mode(void); -int FIPS_mode_set(int r); - -void OPENSSL_init(void); - -# define fips_md_init(alg) fips_md_init_ctx(alg, alg) - -# ifdef OPENSSL_FIPS -# define fips_md_init_ctx(alg, cx) \ - int alg##_Init(cx##_CTX *c) \ - { \ - if (FIPS_mode()) OpenSSLDie(__FILE__, __LINE__, \ - "Low level API call to digest " #alg " forbidden in FIPS mode!"); \ - return private_##alg##_Init(c); \ - } \ - int private_##alg##_Init(cx##_CTX *c) - -# define fips_cipher_abort(alg) \ - if (FIPS_mode()) OpenSSLDie(__FILE__, __LINE__, \ - "Low level API call to cipher " #alg " forbidden in FIPS mode!") - -# else -# define fips_md_init_ctx(alg, cx) \ - int alg##_Init(cx##_CTX *c) -# define fips_cipher_abort(alg) while(0) -# endif - -/* - * CRYPTO_memcmp returns zero iff the |len| bytes at |a| and |b| are equal. - * It takes an amount of time dependent on |len|, but independent of the - * contents of |a| and |b|. Unlike memcmp, it cannot be used to put elements - * into a defined order as the return value when a != b is undefined, other - * than to be non-zero. - */ -int CRYPTO_memcmp(const void *a, const void *b, size_t len); - -/* BEGIN ERROR CODES */ -/* - * The following lines are auto generated by the script mkerr.pl. Any changes - * made after this point may be overwritten when the script is next run. - */ -void ERR_load_CRYPTO_strings(void); - -/* Error codes for the CRYPTO functions. */ - -/* Function codes. */ -# define CRYPTO_F_CRYPTO_GET_EX_NEW_INDEX 100 -# define CRYPTO_F_CRYPTO_GET_NEW_DYNLOCKID 103 -# define CRYPTO_F_CRYPTO_GET_NEW_LOCKID 101 -# define CRYPTO_F_CRYPTO_SET_EX_DATA 102 -# define CRYPTO_F_DEF_ADD_INDEX 104 -# define CRYPTO_F_DEF_GET_CLASS 105 -# define CRYPTO_F_FIPS_MODE_SET 109 -# define CRYPTO_F_INT_DUP_EX_DATA 106 -# define CRYPTO_F_INT_FREE_EX_DATA 107 -# define CRYPTO_F_INT_NEW_EX_DATA 108 - -/* Reason codes. */ -# define CRYPTO_R_FIPS_MODE_NOT_SUPPORTED 101 -# define CRYPTO_R_NO_DYNLOCK_CREATE_CALLBACK 100 - -#ifdef __cplusplus -} -#endif -#endif diff --git a/ext/openssl-win64/inc32/openssl/dh.h b/ext/openssl-win64/inc32/openssl/dh.h deleted file mode 100644 index 0502f1a9..00000000 --- a/ext/openssl-win64/inc32/openssl/dh.h +++ /dev/null @@ -1,392 +0,0 @@ -/* crypto/dh/dh.h */ -/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) - * All rights reserved. - * - * This package is an SSL implementation written - * by Eric Young (eay@cryptsoft.com). - * The implementation was written so as to conform with Netscapes SSL. - * - * This library is free for commercial and non-commercial use as long as - * the following conditions are aheared to. The following conditions - * apply to all code found in this distribution, be it the RC4, RSA, - * lhash, DES, etc., code; not just the SSL code. The SSL documentation - * included with this distribution is covered by the same copyright terms - * except that the holder is Tim Hudson (tjh@cryptsoft.com). - * - * Copyright remains Eric Young's, and as such any Copyright notices in - * the code are not to be removed. - * If this package is used in a product, Eric Young should be given attribution - * as the author of the parts of the library used. - * This can be in the form of a textual message at program startup or - * in documentation (online or textual) provided with the package. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * "This product includes cryptographic software written by - * Eric Young (eay@cryptsoft.com)" - * The word 'cryptographic' can be left out if the rouines from the library - * being used are not cryptographic related :-). - * 4. If you include any Windows specific code (or a derivative thereof) from - * the apps directory (application code) you must include an acknowledgement: - * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" - * - * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * The licence and distribution terms for any publically available version or - * derivative of this code cannot be changed. i.e. this code cannot simply be - * copied and put under another distribution licence - * [including the GNU Public Licence.] - */ - -#ifndef HEADER_DH_H -# define HEADER_DH_H - -# include - -# ifdef OPENSSL_NO_DH -# error DH is disabled. -# endif - -# ifndef OPENSSL_NO_BIO -# include -# endif -# include -# ifndef OPENSSL_NO_DEPRECATED -# include -# endif - -# ifndef OPENSSL_DH_MAX_MODULUS_BITS -# define OPENSSL_DH_MAX_MODULUS_BITS 10000 -# endif - -# define DH_FLAG_CACHE_MONT_P 0x01 - -/* - * new with 0.9.7h; the built-in DH - * implementation now uses constant time - * modular exponentiation for secret exponents - * by default. This flag causes the - * faster variable sliding window method to - * be used for all exponents. - */ -# define DH_FLAG_NO_EXP_CONSTTIME 0x02 - -/* - * If this flag is set the DH method is FIPS compliant and can be used in - * FIPS mode. This is set in the validated module method. If an application - * sets this flag in its own methods it is its reposibility to ensure the - * result is compliant. - */ - -# define DH_FLAG_FIPS_METHOD 0x0400 - -/* - * If this flag is set the operations normally disabled in FIPS mode are - * permitted it is then the applications responsibility to ensure that the - * usage is compliant. - */ - -# define DH_FLAG_NON_FIPS_ALLOW 0x0400 - -#ifdef __cplusplus -extern "C" { -#endif - -/* Already defined in ossl_typ.h */ -/* typedef struct dh_st DH; */ -/* typedef struct dh_method DH_METHOD; */ - -struct dh_method { - const char *name; - /* Methods here */ - int (*generate_key) (DH *dh); - int (*compute_key) (unsigned char *key, const BIGNUM *pub_key, DH *dh); - /* Can be null */ - int (*bn_mod_exp) (const DH *dh, BIGNUM *r, const BIGNUM *a, - const BIGNUM *p, const BIGNUM *m, BN_CTX *ctx, - BN_MONT_CTX *m_ctx); - int (*init) (DH *dh); - int (*finish) (DH *dh); - int flags; - char *app_data; - /* If this is non-NULL, it will be used to generate parameters */ - int (*generate_params) (DH *dh, int prime_len, int generator, - BN_GENCB *cb); -}; - -struct dh_st { - /* - * This first argument is used to pick up errors when a DH is passed - * instead of a EVP_PKEY - */ - int pad; - int version; - BIGNUM *p; - BIGNUM *g; - long length; /* optional */ - BIGNUM *pub_key; /* g^x */ - BIGNUM *priv_key; /* x */ - int flags; - BN_MONT_CTX *method_mont_p; - /* Place holders if we want to do X9.42 DH */ - BIGNUM *q; - BIGNUM *j; - unsigned char *seed; - int seedlen; - BIGNUM *counter; - int references; - CRYPTO_EX_DATA ex_data; - const DH_METHOD *meth; - ENGINE *engine; -}; - -# define DH_GENERATOR_2 2 -/* #define DH_GENERATOR_3 3 */ -# define DH_GENERATOR_5 5 - -/* DH_check error codes */ -# define DH_CHECK_P_NOT_PRIME 0x01 -# define DH_CHECK_P_NOT_SAFE_PRIME 0x02 -# define DH_UNABLE_TO_CHECK_GENERATOR 0x04 -# define DH_NOT_SUITABLE_GENERATOR 0x08 -# define DH_CHECK_Q_NOT_PRIME 0x10 -# define DH_CHECK_INVALID_Q_VALUE 0x20 -# define DH_CHECK_INVALID_J_VALUE 0x40 - -/* DH_check_pub_key error codes */ -# define DH_CHECK_PUBKEY_TOO_SMALL 0x01 -# define DH_CHECK_PUBKEY_TOO_LARGE 0x02 - -/* - * primes p where (p-1)/2 is prime too are called "safe"; we define this for - * backward compatibility: - */ -# define DH_CHECK_P_NOT_STRONG_PRIME DH_CHECK_P_NOT_SAFE_PRIME - -# define d2i_DHparams_fp(fp,x) (DH *)ASN1_d2i_fp((char *(*)())DH_new, \ - (char *(*)())d2i_DHparams,(fp),(unsigned char **)(x)) -# define i2d_DHparams_fp(fp,x) ASN1_i2d_fp(i2d_DHparams,(fp), \ - (unsigned char *)(x)) -# define d2i_DHparams_bio(bp,x) ASN1_d2i_bio_of(DH,DH_new,d2i_DHparams,bp,x) -# define i2d_DHparams_bio(bp,x) ASN1_i2d_bio_of_const(DH,i2d_DHparams,bp,x) - -DH *DHparams_dup(DH *); - -const DH_METHOD *DH_OpenSSL(void); - -void DH_set_default_method(const DH_METHOD *meth); -const DH_METHOD *DH_get_default_method(void); -int DH_set_method(DH *dh, const DH_METHOD *meth); -DH *DH_new_method(ENGINE *engine); - -DH *DH_new(void); -void DH_free(DH *dh); -int DH_up_ref(DH *dh); -int DH_size(const DH *dh); -int DH_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new *new_func, - CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func); -int DH_set_ex_data(DH *d, int idx, void *arg); -void *DH_get_ex_data(DH *d, int idx); - -/* Deprecated version */ -# ifndef OPENSSL_NO_DEPRECATED -DH *DH_generate_parameters(int prime_len, int generator, - void (*callback) (int, int, void *), void *cb_arg); -# endif /* !defined(OPENSSL_NO_DEPRECATED) */ - -/* New version */ -int DH_generate_parameters_ex(DH *dh, int prime_len, int generator, - BN_GENCB *cb); - -int DH_check(const DH *dh, int *codes); -int DH_check_pub_key(const DH *dh, const BIGNUM *pub_key, int *codes); -int DH_generate_key(DH *dh); -int DH_compute_key(unsigned char *key, const BIGNUM *pub_key, DH *dh); -int DH_compute_key_padded(unsigned char *key, const BIGNUM *pub_key, DH *dh); -DH *d2i_DHparams(DH **a, const unsigned char **pp, long length); -int i2d_DHparams(const DH *a, unsigned char **pp); -DH *d2i_DHxparams(DH **a, const unsigned char **pp, long length); -int i2d_DHxparams(const DH *a, unsigned char **pp); -# ifndef OPENSSL_NO_FP_API -int DHparams_print_fp(FILE *fp, const DH *x); -# endif -# ifndef OPENSSL_NO_BIO -int DHparams_print(BIO *bp, const DH *x); -# else -int DHparams_print(char *bp, const DH *x); -# endif - -/* RFC 5114 parameters */ -DH *DH_get_1024_160(void); -DH *DH_get_2048_224(void); -DH *DH_get_2048_256(void); - -/* RFC2631 KDF */ -int DH_KDF_X9_42(unsigned char *out, size_t outlen, - const unsigned char *Z, size_t Zlen, - ASN1_OBJECT *key_oid, - const unsigned char *ukm, size_t ukmlen, const EVP_MD *md); - -# define EVP_PKEY_CTX_set_dh_paramgen_prime_len(ctx, len) \ - EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DH, EVP_PKEY_OP_PARAMGEN, \ - EVP_PKEY_CTRL_DH_PARAMGEN_PRIME_LEN, len, NULL) - -# define EVP_PKEY_CTX_set_dh_paramgen_subprime_len(ctx, len) \ - EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DH, EVP_PKEY_OP_PARAMGEN, \ - EVP_PKEY_CTRL_DH_PARAMGEN_SUBPRIME_LEN, len, NULL) - -# define EVP_PKEY_CTX_set_dh_paramgen_type(ctx, typ) \ - EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DH, EVP_PKEY_OP_PARAMGEN, \ - EVP_PKEY_CTRL_DH_PARAMGEN_TYPE, typ, NULL) - -# define EVP_PKEY_CTX_set_dh_paramgen_generator(ctx, gen) \ - EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DH, EVP_PKEY_OP_PARAMGEN, \ - EVP_PKEY_CTRL_DH_PARAMGEN_GENERATOR, gen, NULL) - -# define EVP_PKEY_CTX_set_dh_rfc5114(ctx, gen) \ - EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, EVP_PKEY_OP_PARAMGEN, \ - EVP_PKEY_CTRL_DH_RFC5114, gen, NULL) - -# define EVP_PKEY_CTX_set_dhx_rfc5114(ctx, gen) \ - EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, EVP_PKEY_OP_PARAMGEN, \ - EVP_PKEY_CTRL_DH_RFC5114, gen, NULL) - -# define EVP_PKEY_CTX_set_dh_kdf_type(ctx, kdf) \ - EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, \ - EVP_PKEY_OP_DERIVE, \ - EVP_PKEY_CTRL_DH_KDF_TYPE, kdf, NULL) - -# define EVP_PKEY_CTX_get_dh_kdf_type(ctx) \ - EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, \ - EVP_PKEY_OP_DERIVE, \ - EVP_PKEY_CTRL_DH_KDF_TYPE, -2, NULL) - -# define EVP_PKEY_CTX_set0_dh_kdf_oid(ctx, oid) \ - EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, \ - EVP_PKEY_OP_DERIVE, \ - EVP_PKEY_CTRL_DH_KDF_OID, 0, (void *)oid) - -# define EVP_PKEY_CTX_get0_dh_kdf_oid(ctx, poid) \ - EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, \ - EVP_PKEY_OP_DERIVE, \ - EVP_PKEY_CTRL_GET_DH_KDF_OID, 0, (void *)poid) - -# define EVP_PKEY_CTX_set_dh_kdf_md(ctx, md) \ - EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, \ - EVP_PKEY_OP_DERIVE, \ - EVP_PKEY_CTRL_DH_KDF_MD, 0, (void *)md) - -# define EVP_PKEY_CTX_get_dh_kdf_md(ctx, pmd) \ - EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, \ - EVP_PKEY_OP_DERIVE, \ - EVP_PKEY_CTRL_GET_DH_KDF_MD, 0, (void *)pmd) - -# define EVP_PKEY_CTX_set_dh_kdf_outlen(ctx, len) \ - EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, \ - EVP_PKEY_OP_DERIVE, \ - EVP_PKEY_CTRL_DH_KDF_OUTLEN, len, NULL) - -# define EVP_PKEY_CTX_get_dh_kdf_outlen(ctx, plen) \ - EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, \ - EVP_PKEY_OP_DERIVE, \ - EVP_PKEY_CTRL_GET_DH_KDF_OUTLEN, 0, (void *)plen) - -# define EVP_PKEY_CTX_set0_dh_kdf_ukm(ctx, p, plen) \ - EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, \ - EVP_PKEY_OP_DERIVE, \ - EVP_PKEY_CTRL_DH_KDF_UKM, plen, (void *)p) - -# define EVP_PKEY_CTX_get0_dh_kdf_ukm(ctx, p) \ - EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, \ - EVP_PKEY_OP_DERIVE, \ - EVP_PKEY_CTRL_GET_DH_KDF_UKM, 0, (void *)p) - -# define EVP_PKEY_CTRL_DH_PARAMGEN_PRIME_LEN (EVP_PKEY_ALG_CTRL + 1) -# define EVP_PKEY_CTRL_DH_PARAMGEN_GENERATOR (EVP_PKEY_ALG_CTRL + 2) -# define EVP_PKEY_CTRL_DH_RFC5114 (EVP_PKEY_ALG_CTRL + 3) -# define EVP_PKEY_CTRL_DH_PARAMGEN_SUBPRIME_LEN (EVP_PKEY_ALG_CTRL + 4) -# define EVP_PKEY_CTRL_DH_PARAMGEN_TYPE (EVP_PKEY_ALG_CTRL + 5) -# define EVP_PKEY_CTRL_DH_KDF_TYPE (EVP_PKEY_ALG_CTRL + 6) -# define EVP_PKEY_CTRL_DH_KDF_MD (EVP_PKEY_ALG_CTRL + 7) -# define EVP_PKEY_CTRL_GET_DH_KDF_MD (EVP_PKEY_ALG_CTRL + 8) -# define EVP_PKEY_CTRL_DH_KDF_OUTLEN (EVP_PKEY_ALG_CTRL + 9) -# define EVP_PKEY_CTRL_GET_DH_KDF_OUTLEN (EVP_PKEY_ALG_CTRL + 10) -# define EVP_PKEY_CTRL_DH_KDF_UKM (EVP_PKEY_ALG_CTRL + 11) -# define EVP_PKEY_CTRL_GET_DH_KDF_UKM (EVP_PKEY_ALG_CTRL + 12) -# define EVP_PKEY_CTRL_DH_KDF_OID (EVP_PKEY_ALG_CTRL + 13) -# define EVP_PKEY_CTRL_GET_DH_KDF_OID (EVP_PKEY_ALG_CTRL + 14) - -/* KDF types */ -# define EVP_PKEY_DH_KDF_NONE 1 -# define EVP_PKEY_DH_KDF_X9_42 2 - -/* BEGIN ERROR CODES */ -/* - * The following lines are auto generated by the script mkerr.pl. Any changes - * made after this point may be overwritten when the script is next run. - */ -void ERR_load_DH_strings(void); - -/* Error codes for the DH functions. */ - -/* Function codes. */ -# define DH_F_COMPUTE_KEY 102 -# define DH_F_DHPARAMS_PRINT_FP 101 -# define DH_F_DH_BUILTIN_GENPARAMS 106 -# define DH_F_DH_CMS_DECRYPT 117 -# define DH_F_DH_CMS_SET_PEERKEY 118 -# define DH_F_DH_CMS_SET_SHARED_INFO 119 -# define DH_F_DH_COMPUTE_KEY 114 -# define DH_F_DH_GENERATE_KEY 115 -# define DH_F_DH_GENERATE_PARAMETERS_EX 116 -# define DH_F_DH_NEW_METHOD 105 -# define DH_F_DH_PARAM_DECODE 107 -# define DH_F_DH_PRIV_DECODE 110 -# define DH_F_DH_PRIV_ENCODE 111 -# define DH_F_DH_PUB_DECODE 108 -# define DH_F_DH_PUB_ENCODE 109 -# define DH_F_DO_DH_PRINT 100 -# define DH_F_GENERATE_KEY 103 -# define DH_F_GENERATE_PARAMETERS 104 -# define DH_F_PKEY_DH_DERIVE 112 -# define DH_F_PKEY_DH_KEYGEN 113 - -/* Reason codes. */ -# define DH_R_BAD_GENERATOR 101 -# define DH_R_BN_DECODE_ERROR 109 -# define DH_R_BN_ERROR 106 -# define DH_R_DECODE_ERROR 104 -# define DH_R_INVALID_PUBKEY 102 -# define DH_R_KDF_PARAMETER_ERROR 112 -# define DH_R_KEYS_NOT_SET 108 -# define DH_R_KEY_SIZE_TOO_SMALL 110 -# define DH_R_MODULUS_TOO_LARGE 103 -# define DH_R_NON_FIPS_METHOD 111 -# define DH_R_NO_PARAMETERS_SET 107 -# define DH_R_NO_PRIVATE_VALUE 100 -# define DH_R_PARAMETER_ENCODING_ERROR 105 -# define DH_R_PEER_KEY_ERROR 113 -# define DH_R_SHARED_INFO_ERROR 114 - -#ifdef __cplusplus -} -#endif -#endif diff --git a/ext/openssl-win64/inc32/openssl/dsa.h b/ext/openssl-win64/inc32/openssl/dsa.h deleted file mode 100644 index 545358fd..00000000 --- a/ext/openssl-win64/inc32/openssl/dsa.h +++ /dev/null @@ -1,332 +0,0 @@ -/* crypto/dsa/dsa.h */ -/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) - * All rights reserved. - * - * This package is an SSL implementation written - * by Eric Young (eay@cryptsoft.com). - * The implementation was written so as to conform with Netscapes SSL. - * - * This library is free for commercial and non-commercial use as long as - * the following conditions are aheared to. The following conditions - * apply to all code found in this distribution, be it the RC4, RSA, - * lhash, DES, etc., code; not just the SSL code. The SSL documentation - * included with this distribution is covered by the same copyright terms - * except that the holder is Tim Hudson (tjh@cryptsoft.com). - * - * Copyright remains Eric Young's, and as such any Copyright notices in - * the code are not to be removed. - * If this package is used in a product, Eric Young should be given attribution - * as the author of the parts of the library used. - * This can be in the form of a textual message at program startup or - * in documentation (online or textual) provided with the package. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * "This product includes cryptographic software written by - * Eric Young (eay@cryptsoft.com)" - * The word 'cryptographic' can be left out if the rouines from the library - * being used are not cryptographic related :-). - * 4. If you include any Windows specific code (or a derivative thereof) from - * the apps directory (application code) you must include an acknowledgement: - * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" - * - * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * The licence and distribution terms for any publically available version or - * derivative of this code cannot be changed. i.e. this code cannot simply be - * copied and put under another distribution licence - * [including the GNU Public Licence.] - */ - -/* - * The DSS routines are based on patches supplied by - * Steven Schoch . He basically did the - * work and I have just tweaked them a little to fit into my - * stylistic vision for SSLeay :-) */ - -#ifndef HEADER_DSA_H -# define HEADER_DSA_H - -# include - -# ifdef OPENSSL_NO_DSA -# error DSA is disabled. -# endif - -# ifndef OPENSSL_NO_BIO -# include -# endif -# include -# include - -# ifndef OPENSSL_NO_DEPRECATED -# include -# ifndef OPENSSL_NO_DH -# include -# endif -# endif - -# ifndef OPENSSL_DSA_MAX_MODULUS_BITS -# define OPENSSL_DSA_MAX_MODULUS_BITS 10000 -# endif - -# define DSA_FLAG_CACHE_MONT_P 0x01 -/* - * new with 0.9.7h; the built-in DSA implementation now uses constant time - * modular exponentiation for secret exponents by default. This flag causes - * the faster variable sliding window method to be used for all exponents. - */ -# define DSA_FLAG_NO_EXP_CONSTTIME 0x02 - -/* - * If this flag is set the DSA method is FIPS compliant and can be used in - * FIPS mode. This is set in the validated module method. If an application - * sets this flag in its own methods it is its reposibility to ensure the - * result is compliant. - */ - -# define DSA_FLAG_FIPS_METHOD 0x0400 - -/* - * If this flag is set the operations normally disabled in FIPS mode are - * permitted it is then the applications responsibility to ensure that the - * usage is compliant. - */ - -# define DSA_FLAG_NON_FIPS_ALLOW 0x0400 - -#ifdef __cplusplus -extern "C" { -#endif - -/* Already defined in ossl_typ.h */ -/* typedef struct dsa_st DSA; */ -/* typedef struct dsa_method DSA_METHOD; */ - -typedef struct DSA_SIG_st { - BIGNUM *r; - BIGNUM *s; -} DSA_SIG; - -struct dsa_method { - const char *name; - DSA_SIG *(*dsa_do_sign) (const unsigned char *dgst, int dlen, DSA *dsa); - int (*dsa_sign_setup) (DSA *dsa, BN_CTX *ctx_in, BIGNUM **kinvp, - BIGNUM **rp); - int (*dsa_do_verify) (const unsigned char *dgst, int dgst_len, - DSA_SIG *sig, DSA *dsa); - int (*dsa_mod_exp) (DSA *dsa, BIGNUM *rr, BIGNUM *a1, BIGNUM *p1, - BIGNUM *a2, BIGNUM *p2, BIGNUM *m, BN_CTX *ctx, - BN_MONT_CTX *in_mont); - /* Can be null */ - int (*bn_mod_exp) (DSA *dsa, BIGNUM *r, BIGNUM *a, const BIGNUM *p, - const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx); - int (*init) (DSA *dsa); - int (*finish) (DSA *dsa); - int flags; - char *app_data; - /* If this is non-NULL, it is used to generate DSA parameters */ - int (*dsa_paramgen) (DSA *dsa, int bits, - const unsigned char *seed, int seed_len, - int *counter_ret, unsigned long *h_ret, - BN_GENCB *cb); - /* If this is non-NULL, it is used to generate DSA keys */ - int (*dsa_keygen) (DSA *dsa); -}; - -struct dsa_st { - /* - * This first variable is used to pick up errors where a DSA is passed - * instead of of a EVP_PKEY - */ - int pad; - long version; - int write_params; - BIGNUM *p; - BIGNUM *q; /* == 20 */ - BIGNUM *g; - BIGNUM *pub_key; /* y public key */ - BIGNUM *priv_key; /* x private key */ - BIGNUM *kinv; /* Signing pre-calc */ - BIGNUM *r; /* Signing pre-calc */ - int flags; - /* Normally used to cache montgomery values */ - BN_MONT_CTX *method_mont_p; - int references; - CRYPTO_EX_DATA ex_data; - const DSA_METHOD *meth; - /* functional reference if 'meth' is ENGINE-provided */ - ENGINE *engine; -}; - -# define d2i_DSAparams_fp(fp,x) (DSA *)ASN1_d2i_fp((char *(*)())DSA_new, \ - (char *(*)())d2i_DSAparams,(fp),(unsigned char **)(x)) -# define i2d_DSAparams_fp(fp,x) ASN1_i2d_fp(i2d_DSAparams,(fp), \ - (unsigned char *)(x)) -# define d2i_DSAparams_bio(bp,x) ASN1_d2i_bio_of(DSA,DSA_new,d2i_DSAparams,bp,x) -# define i2d_DSAparams_bio(bp,x) ASN1_i2d_bio_of_const(DSA,i2d_DSAparams,bp,x) - -DSA *DSAparams_dup(DSA *x); -DSA_SIG *DSA_SIG_new(void); -void DSA_SIG_free(DSA_SIG *a); -int i2d_DSA_SIG(const DSA_SIG *a, unsigned char **pp); -DSA_SIG *d2i_DSA_SIG(DSA_SIG **v, const unsigned char **pp, long length); - -DSA_SIG *DSA_do_sign(const unsigned char *dgst, int dlen, DSA *dsa); -int DSA_do_verify(const unsigned char *dgst, int dgst_len, - DSA_SIG *sig, DSA *dsa); - -const DSA_METHOD *DSA_OpenSSL(void); - -void DSA_set_default_method(const DSA_METHOD *); -const DSA_METHOD *DSA_get_default_method(void); -int DSA_set_method(DSA *dsa, const DSA_METHOD *); - -DSA *DSA_new(void); -DSA *DSA_new_method(ENGINE *engine); -void DSA_free(DSA *r); -/* "up" the DSA object's reference count */ -int DSA_up_ref(DSA *r); -int DSA_size(const DSA *); - /* next 4 return -1 on error */ -int DSA_sign_setup(DSA *dsa, BN_CTX *ctx_in, BIGNUM **kinvp, BIGNUM **rp); -int DSA_sign(int type, const unsigned char *dgst, int dlen, - unsigned char *sig, unsigned int *siglen, DSA *dsa); -int DSA_verify(int type, const unsigned char *dgst, int dgst_len, - const unsigned char *sigbuf, int siglen, DSA *dsa); -int DSA_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new *new_func, - CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func); -int DSA_set_ex_data(DSA *d, int idx, void *arg); -void *DSA_get_ex_data(DSA *d, int idx); - -DSA *d2i_DSAPublicKey(DSA **a, const unsigned char **pp, long length); -DSA *d2i_DSAPrivateKey(DSA **a, const unsigned char **pp, long length); -DSA *d2i_DSAparams(DSA **a, const unsigned char **pp, long length); - -/* Deprecated version */ -# ifndef OPENSSL_NO_DEPRECATED -DSA *DSA_generate_parameters(int bits, - unsigned char *seed, int seed_len, - int *counter_ret, unsigned long *h_ret, void - (*callback) (int, int, void *), void *cb_arg); -# endif /* !defined(OPENSSL_NO_DEPRECATED) */ - -/* New version */ -int DSA_generate_parameters_ex(DSA *dsa, int bits, - const unsigned char *seed, int seed_len, - int *counter_ret, unsigned long *h_ret, - BN_GENCB *cb); - -int DSA_generate_key(DSA *a); -int i2d_DSAPublicKey(const DSA *a, unsigned char **pp); -int i2d_DSAPrivateKey(const DSA *a, unsigned char **pp); -int i2d_DSAparams(const DSA *a, unsigned char **pp); - -# ifndef OPENSSL_NO_BIO -int DSAparams_print(BIO *bp, const DSA *x); -int DSA_print(BIO *bp, const DSA *x, int off); -# endif -# ifndef OPENSSL_NO_FP_API -int DSAparams_print_fp(FILE *fp, const DSA *x); -int DSA_print_fp(FILE *bp, const DSA *x, int off); -# endif - -# define DSS_prime_checks 50 -/* - * Primality test according to FIPS PUB 186[-1], Appendix 2.1: 50 rounds of - * Rabin-Miller - */ -# define DSA_is_prime(n, callback, cb_arg) \ - BN_is_prime(n, DSS_prime_checks, callback, NULL, cb_arg) - -# ifndef OPENSSL_NO_DH -/* - * Convert DSA structure (key or just parameters) into DH structure (be - * careful to avoid small subgroup attacks when using this!) - */ -DH *DSA_dup_DH(const DSA *r); -# endif - -# define EVP_PKEY_CTX_set_dsa_paramgen_bits(ctx, nbits) \ - EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DSA, EVP_PKEY_OP_PARAMGEN, \ - EVP_PKEY_CTRL_DSA_PARAMGEN_BITS, nbits, NULL) - -# define EVP_PKEY_CTRL_DSA_PARAMGEN_BITS (EVP_PKEY_ALG_CTRL + 1) -# define EVP_PKEY_CTRL_DSA_PARAMGEN_Q_BITS (EVP_PKEY_ALG_CTRL + 2) -# define EVP_PKEY_CTRL_DSA_PARAMGEN_MD (EVP_PKEY_ALG_CTRL + 3) - -/* BEGIN ERROR CODES */ -/* - * The following lines are auto generated by the script mkerr.pl. Any changes - * made after this point may be overwritten when the script is next run. - */ -void ERR_load_DSA_strings(void); - -/* Error codes for the DSA functions. */ - -/* Function codes. */ -# define DSA_F_D2I_DSA_SIG 110 -# define DSA_F_DO_DSA_PRINT 104 -# define DSA_F_DSAPARAMS_PRINT 100 -# define DSA_F_DSAPARAMS_PRINT_FP 101 -# define DSA_F_DSA_BUILTIN_PARAMGEN2 126 -# define DSA_F_DSA_DO_SIGN 112 -# define DSA_F_DSA_DO_VERIFY 113 -# define DSA_F_DSA_GENERATE_KEY 124 -# define DSA_F_DSA_GENERATE_PARAMETERS_EX 123 -# define DSA_F_DSA_NEW_METHOD 103 -# define DSA_F_DSA_PARAM_DECODE 119 -# define DSA_F_DSA_PRINT_FP 105 -# define DSA_F_DSA_PRIV_DECODE 115 -# define DSA_F_DSA_PRIV_ENCODE 116 -# define DSA_F_DSA_PUB_DECODE 117 -# define DSA_F_DSA_PUB_ENCODE 118 -# define DSA_F_DSA_SIGN 106 -# define DSA_F_DSA_SIGN_SETUP 107 -# define DSA_F_DSA_SIG_NEW 109 -# define DSA_F_DSA_SIG_PRINT 125 -# define DSA_F_DSA_VERIFY 108 -# define DSA_F_I2D_DSA_SIG 111 -# define DSA_F_OLD_DSA_PRIV_DECODE 122 -# define DSA_F_PKEY_DSA_CTRL 120 -# define DSA_F_PKEY_DSA_KEYGEN 121 -# define DSA_F_SIG_CB 114 - -/* Reason codes. */ -# define DSA_R_BAD_Q_VALUE 102 -# define DSA_R_BN_DECODE_ERROR 108 -# define DSA_R_BN_ERROR 109 -# define DSA_R_DATA_TOO_LARGE_FOR_KEY_SIZE 100 -# define DSA_R_DECODE_ERROR 104 -# define DSA_R_INVALID_DIGEST_TYPE 106 -# define DSA_R_INVALID_PARAMETERS 112 -# define DSA_R_MISSING_PARAMETERS 101 -# define DSA_R_MODULUS_TOO_LARGE 103 -# define DSA_R_NEED_NEW_SETUP_VALUES 110 -# define DSA_R_NON_FIPS_DSA_METHOD 111 -# define DSA_R_NO_PARAMETERS_SET 107 -# define DSA_R_PARAMETER_ENCODING_ERROR 105 -# define DSA_R_Q_NOT_PRIME 113 - -#ifdef __cplusplus -} -#endif -#endif diff --git a/ext/openssl-win64/inc32/openssl/dtls1.h b/ext/openssl-win64/inc32/openssl/dtls1.h deleted file mode 100644 index 4af7e4a7..00000000 --- a/ext/openssl-win64/inc32/openssl/dtls1.h +++ /dev/null @@ -1,271 +0,0 @@ -/* ssl/dtls1.h */ -/* - * DTLS implementation written by Nagendra Modadugu - * (nagendra@cs.stanford.edu) for the OpenSSL project 2005. - */ -/* ==================================================================== - * Copyright (c) 1999-2005 The OpenSSL Project. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. All advertising materials mentioning features or use of this - * software must display the following acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" - * - * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * openssl-core@OpenSSL.org. - * - * 5. Products derived from this software may not be called "OpenSSL" - * nor may "OpenSSL" appear in their names without prior written - * permission of the OpenSSL Project. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" - * - * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY - * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * ==================================================================== - * - * This product includes cryptographic software written by Eric Young - * (eay@cryptsoft.com). This product includes software written by Tim - * Hudson (tjh@cryptsoft.com). - * - */ - -#ifndef HEADER_DTLS1_H -# define HEADER_DTLS1_H - -# include -# include -# ifdef OPENSSL_SYS_VMS -# include -# include -# endif -# ifdef OPENSSL_SYS_WIN32 -/* Needed for struct timeval */ -# include -# elif defined(OPENSSL_SYS_NETWARE) && !defined(_WINSOCK2API_) -# include -# else -# if defined(OPENSSL_SYS_VXWORKS) -# include -# else -# include -# endif -# endif - -#ifdef __cplusplus -extern "C" { -#endif - -# define DTLS1_VERSION 0xFEFF -# define DTLS1_2_VERSION 0xFEFD -# define DTLS_MAX_VERSION DTLS1_2_VERSION - -# define DTLS1_BAD_VER 0x0100 - -/* Special value for method supporting multiple versions */ -# define DTLS_ANY_VERSION 0x1FFFF - -# if 0 -/* this alert description is not specified anywhere... */ -# define DTLS1_AD_MISSING_HANDSHAKE_MESSAGE 110 -# endif - -/* lengths of messages */ -# define DTLS1_COOKIE_LENGTH 256 - -# define DTLS1_RT_HEADER_LENGTH 13 - -# define DTLS1_HM_HEADER_LENGTH 12 - -# define DTLS1_HM_BAD_FRAGMENT -2 -# define DTLS1_HM_FRAGMENT_RETRY -3 - -# define DTLS1_CCS_HEADER_LENGTH 1 - -# ifdef DTLS1_AD_MISSING_HANDSHAKE_MESSAGE -# define DTLS1_AL_HEADER_LENGTH 7 -# else -# define DTLS1_AL_HEADER_LENGTH 2 -# endif - -# ifndef OPENSSL_NO_SSL_INTERN - -# ifndef OPENSSL_NO_SCTP -# define DTLS1_SCTP_AUTH_LABEL "EXPORTER_DTLS_OVER_SCTP" -# endif - -/* Max MTU overhead we know about so far is 40 for IPv6 + 8 for UDP */ -# define DTLS1_MAX_MTU_OVERHEAD 48 - -typedef struct dtls1_bitmap_st { - unsigned long map; /* track 32 packets on 32-bit systems and 64 - * - on 64-bit systems */ - unsigned char max_seq_num[8]; /* max record number seen so far, 64-bit - * value in big-endian encoding */ -} DTLS1_BITMAP; - -struct dtls1_retransmit_state { - EVP_CIPHER_CTX *enc_write_ctx; /* cryptographic state */ - EVP_MD_CTX *write_hash; /* used for mac generation */ -# ifndef OPENSSL_NO_COMP - COMP_CTX *compress; /* compression */ -# else - char *compress; -# endif - SSL_SESSION *session; - unsigned short epoch; -}; - -struct hm_header_st { - unsigned char type; - unsigned long msg_len; - unsigned short seq; - unsigned long frag_off; - unsigned long frag_len; - unsigned int is_ccs; - struct dtls1_retransmit_state saved_retransmit_state; -}; - -struct ccs_header_st { - unsigned char type; - unsigned short seq; -}; - -struct dtls1_timeout_st { - /* Number of read timeouts so far */ - unsigned int read_timeouts; - /* Number of write timeouts so far */ - unsigned int write_timeouts; - /* Number of alerts received so far */ - unsigned int num_alerts; -}; - -typedef struct record_pqueue_st { - unsigned short epoch; - pqueue q; -} record_pqueue; - -typedef struct hm_fragment_st { - struct hm_header_st msg_header; - unsigned char *fragment; - unsigned char *reassembly; -} hm_fragment; - -typedef struct dtls1_state_st { - unsigned int send_cookie; - unsigned char cookie[DTLS1_COOKIE_LENGTH]; - unsigned char rcvd_cookie[DTLS1_COOKIE_LENGTH]; - unsigned int cookie_len; - /* - * The current data and handshake epoch. This is initially - * undefined, and starts at zero once the initial handshake is - * completed - */ - unsigned short r_epoch; - unsigned short w_epoch; - /* records being received in the current epoch */ - DTLS1_BITMAP bitmap; - /* renegotiation starts a new set of sequence numbers */ - DTLS1_BITMAP next_bitmap; - /* handshake message numbers */ - unsigned short handshake_write_seq; - unsigned short next_handshake_write_seq; - unsigned short handshake_read_seq; - /* save last sequence number for retransmissions */ - unsigned char last_write_sequence[8]; - /* Received handshake records (processed and unprocessed) */ - record_pqueue unprocessed_rcds; - record_pqueue processed_rcds; - /* Buffered handshake messages */ - pqueue buffered_messages; - /* Buffered (sent) handshake records */ - pqueue sent_messages; - /* - * Buffered application records. Only for records between CCS and - * Finished to prevent either protocol violation or unnecessary message - * loss. - */ - record_pqueue buffered_app_data; - /* Is set when listening for new connections with dtls1_listen() */ - unsigned int listen; - unsigned int link_mtu; /* max on-the-wire DTLS packet size */ - unsigned int mtu; /* max DTLS packet size */ - struct hm_header_st w_msg_hdr; - struct hm_header_st r_msg_hdr; - struct dtls1_timeout_st timeout; - /* - * Indicates when the last handshake msg or heartbeat sent will timeout - */ - struct timeval next_timeout; - /* Timeout duration */ - unsigned short timeout_duration; - /* - * storage for Alert/Handshake protocol data received but not yet - * processed by ssl3_read_bytes: - */ - unsigned char alert_fragment[DTLS1_AL_HEADER_LENGTH]; - unsigned int alert_fragment_len; - unsigned char handshake_fragment[DTLS1_HM_HEADER_LENGTH]; - unsigned int handshake_fragment_len; - unsigned int retransmitting; - /* - * Set when the handshake is ready to process peer's ChangeCipherSpec message. - * Cleared after the message has been processed. - */ - unsigned int change_cipher_spec_ok; -# ifndef OPENSSL_NO_SCTP - /* used when SSL_ST_XX_FLUSH is entered */ - int next_state; - int shutdown_received; -# endif -} DTLS1_STATE; - -typedef struct dtls1_record_data_st { - unsigned char *packet; - unsigned int packet_length; - SSL3_BUFFER rbuf; - SSL3_RECORD rrec; -# ifndef OPENSSL_NO_SCTP - struct bio_dgram_sctp_rcvinfo recordinfo; -# endif -} DTLS1_RECORD_DATA; - -# endif - -/* Timeout multipliers (timeout slice is defined in apps/timeouts.h */ -# define DTLS1_TMO_READ_COUNT 2 -# define DTLS1_TMO_WRITE_COUNT 2 - -# define DTLS1_TMO_ALERT_COUNT 12 - -#ifdef __cplusplus -} -#endif -#endif diff --git a/ext/openssl-win64/inc32/openssl/e_os2.h b/ext/openssl-win64/inc32/openssl/e_os2.h deleted file mode 100644 index 613607f8..00000000 --- a/ext/openssl-win64/inc32/openssl/e_os2.h +++ /dev/null @@ -1,322 +0,0 @@ -/* e_os2.h */ -/* ==================================================================== - * Copyright (c) 1998-2000 The OpenSSL Project. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. All advertising materials mentioning features or use of this - * software must display the following acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" - * - * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * openssl-core@openssl.org. - * - * 5. Products derived from this software may not be called "OpenSSL" - * nor may "OpenSSL" appear in their names without prior written - * permission of the OpenSSL Project. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit (http://www.openssl.org/)" - * - * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY - * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * ==================================================================== - * - * This product includes cryptographic software written by Eric Young - * (eay@cryptsoft.com). This product includes software written by Tim - * Hudson (tjh@cryptsoft.com). - * - */ - -#include - -#ifndef HEADER_E_OS2_H -# define HEADER_E_OS2_H - -#ifdef __cplusplus -extern "C" { -#endif - -/****************************************************************************** - * Detect operating systems. This probably needs completing. - * The result is that at least one OPENSSL_SYS_os macro should be defined. - * However, if none is defined, Unix is assumed. - **/ - -# define OPENSSL_SYS_UNIX - -/* ---------------------- Macintosh, before MacOS X ----------------------- */ -# if defined(__MWERKS__) && defined(macintosh) || defined(OPENSSL_SYSNAME_MAC) -# undef OPENSSL_SYS_UNIX -# define OPENSSL_SYS_MACINTOSH_CLASSIC -# endif - -/* ---------------------- NetWare ----------------------------------------- */ -# if defined(NETWARE) || defined(OPENSSL_SYSNAME_NETWARE) -# undef OPENSSL_SYS_UNIX -# define OPENSSL_SYS_NETWARE -# endif - -/* --------------------- Microsoft operating systems ---------------------- */ - -/* - * Note that MSDOS actually denotes 32-bit environments running on top of - * MS-DOS, such as DJGPP one. - */ -# if defined(OPENSSL_SYSNAME_MSDOS) -# undef OPENSSL_SYS_UNIX -# define OPENSSL_SYS_MSDOS -# endif - -/* - * For 32 bit environment, there seems to be the CygWin environment and then - * all the others that try to do the same thing Microsoft does... - */ -# if defined(OPENSSL_SYSNAME_UWIN) -# undef OPENSSL_SYS_UNIX -# define OPENSSL_SYS_WIN32_UWIN -# else -# if defined(__CYGWIN__) || defined(OPENSSL_SYSNAME_CYGWIN) -# undef OPENSSL_SYS_UNIX -# define OPENSSL_SYS_WIN32_CYGWIN -# else -# if defined(_WIN32) || defined(OPENSSL_SYSNAME_WIN32) -# undef OPENSSL_SYS_UNIX -# define OPENSSL_SYS_WIN32 -# endif -# if defined(OPENSSL_SYSNAME_WINNT) -# undef OPENSSL_SYS_UNIX -# define OPENSSL_SYS_WINNT -# endif -# if defined(OPENSSL_SYSNAME_WINCE) -# undef OPENSSL_SYS_UNIX -# define OPENSSL_SYS_WINCE -# endif -# endif -# endif - -/* Anything that tries to look like Microsoft is "Windows" */ -# if defined(OPENSSL_SYS_WIN32) || defined(OPENSSL_SYS_WINNT) || defined(OPENSSL_SYS_WINCE) -# undef OPENSSL_SYS_UNIX -# define OPENSSL_SYS_WINDOWS -# ifndef OPENSSL_SYS_MSDOS -# define OPENSSL_SYS_MSDOS -# endif -# endif - -/* - * DLL settings. This part is a bit tough, because it's up to the - * application implementor how he or she will link the application, so it - * requires some macro to be used. - */ -# ifdef OPENSSL_SYS_WINDOWS -# ifndef OPENSSL_OPT_WINDLL -# if defined(_WINDLL) /* This is used when building OpenSSL to - * indicate that DLL linkage should be used */ -# define OPENSSL_OPT_WINDLL -# endif -# endif -# endif - -/* ------------------------------- OpenVMS -------------------------------- */ -# if defined(__VMS) || defined(VMS) || defined(OPENSSL_SYSNAME_VMS) -# undef OPENSSL_SYS_UNIX -# define OPENSSL_SYS_VMS -# if defined(__DECC) -# define OPENSSL_SYS_VMS_DECC -# elif defined(__DECCXX) -# define OPENSSL_SYS_VMS_DECC -# define OPENSSL_SYS_VMS_DECCXX -# else -# define OPENSSL_SYS_VMS_NODECC -# endif -# endif - -/* -------------------------------- OS/2 ---------------------------------- */ -# if defined(__EMX__) || defined(__OS2__) -# undef OPENSSL_SYS_UNIX -# define OPENSSL_SYS_OS2 -# endif - -/* -------------------------------- Unix ---------------------------------- */ -# ifdef OPENSSL_SYS_UNIX -# if defined(linux) || defined(__linux__) || defined(OPENSSL_SYSNAME_LINUX) -# define OPENSSL_SYS_LINUX -# endif -# ifdef OPENSSL_SYSNAME_MPE -# define OPENSSL_SYS_MPE -# endif -# ifdef OPENSSL_SYSNAME_SNI -# define OPENSSL_SYS_SNI -# endif -# ifdef OPENSSL_SYSNAME_ULTRASPARC -# define OPENSSL_SYS_ULTRASPARC -# endif -# ifdef OPENSSL_SYSNAME_NEWS4 -# define OPENSSL_SYS_NEWS4 -# endif -# ifdef OPENSSL_SYSNAME_MACOSX -# define OPENSSL_SYS_MACOSX -# endif -# ifdef OPENSSL_SYSNAME_MACOSX_RHAPSODY -# define OPENSSL_SYS_MACOSX_RHAPSODY -# define OPENSSL_SYS_MACOSX -# endif -# ifdef OPENSSL_SYSNAME_SUNOS -# define OPENSSL_SYS_SUNOS -# endif -# if defined(_CRAY) || defined(OPENSSL_SYSNAME_CRAY) -# define OPENSSL_SYS_CRAY -# endif -# if defined(_AIX) || defined(OPENSSL_SYSNAME_AIX) -# define OPENSSL_SYS_AIX -# endif -# endif - -/* -------------------------------- VOS ----------------------------------- */ -# if defined(__VOS__) || defined(OPENSSL_SYSNAME_VOS) -# define OPENSSL_SYS_VOS -# ifdef __HPPA__ -# define OPENSSL_SYS_VOS_HPPA -# endif -# ifdef __IA32__ -# define OPENSSL_SYS_VOS_IA32 -# endif -# endif - -/* ------------------------------ VxWorks --------------------------------- */ -# ifdef OPENSSL_SYSNAME_VXWORKS -# define OPENSSL_SYS_VXWORKS -# endif - -/* -------------------------------- BeOS ---------------------------------- */ -# if defined(__BEOS__) -# define OPENSSL_SYS_BEOS -# include -# if defined(BONE_VERSION) -# define OPENSSL_SYS_BEOS_BONE -# else -# define OPENSSL_SYS_BEOS_R5 -# endif -# endif - -/** - * That's it for OS-specific stuff - *****************************************************************************/ - -/* Specials for I/O an exit */ -# ifdef OPENSSL_SYS_MSDOS -# define OPENSSL_UNISTD_IO -# define OPENSSL_DECLARE_EXIT extern void exit(int); -# else -# define OPENSSL_UNISTD_IO OPENSSL_UNISTD -# define OPENSSL_DECLARE_EXIT /* declared in unistd.h */ -# endif - -/*- - * Definitions of OPENSSL_GLOBAL and OPENSSL_EXTERN, to define and declare - * certain global symbols that, with some compilers under VMS, have to be - * defined and declared explicitely with globaldef and globalref. - * Definitions of OPENSSL_EXPORT and OPENSSL_IMPORT, to define and declare - * DLL exports and imports for compilers under Win32. These are a little - * more complicated to use. Basically, for any library that exports some - * global variables, the following code must be present in the header file - * that declares them, before OPENSSL_EXTERN is used: - * - * #ifdef SOME_BUILD_FLAG_MACRO - * # undef OPENSSL_EXTERN - * # define OPENSSL_EXTERN OPENSSL_EXPORT - * #endif - * - * The default is to have OPENSSL_EXPORT, OPENSSL_IMPORT and OPENSSL_GLOBAL - * have some generally sensible values, and for OPENSSL_EXTERN to have the - * value OPENSSL_IMPORT. - */ - -# if defined(OPENSSL_SYS_VMS_NODECC) -# define OPENSSL_EXPORT globalref -# define OPENSSL_IMPORT globalref -# define OPENSSL_GLOBAL globaldef -# elif defined(OPENSSL_SYS_WINDOWS) && defined(OPENSSL_OPT_WINDLL) -# define OPENSSL_EXPORT extern __declspec(dllexport) -# define OPENSSL_IMPORT extern __declspec(dllimport) -# define OPENSSL_GLOBAL -# else -# define OPENSSL_EXPORT extern -# define OPENSSL_IMPORT extern -# define OPENSSL_GLOBAL -# endif -# define OPENSSL_EXTERN OPENSSL_IMPORT - -/*- - * Macros to allow global variables to be reached through function calls when - * required (if a shared library version requires it, for example. - * The way it's done allows definitions like this: - * - * // in foobar.c - * OPENSSL_IMPLEMENT_GLOBAL(int,foobar,0) - * // in foobar.h - * OPENSSL_DECLARE_GLOBAL(int,foobar); - * #define foobar OPENSSL_GLOBAL_REF(foobar) - */ -# ifdef OPENSSL_EXPORT_VAR_AS_FUNCTION -# define OPENSSL_IMPLEMENT_GLOBAL(type,name,value) \ - type *_shadow_##name(void) \ - { static type _hide_##name=value; return &_hide_##name; } -# define OPENSSL_DECLARE_GLOBAL(type,name) type *_shadow_##name(void) -# define OPENSSL_GLOBAL_REF(name) (*(_shadow_##name())) -# else -# define OPENSSL_IMPLEMENT_GLOBAL(type,name,value) OPENSSL_GLOBAL type _shadow_##name=value; -# define OPENSSL_DECLARE_GLOBAL(type,name) OPENSSL_EXPORT type _shadow_##name -# define OPENSSL_GLOBAL_REF(name) _shadow_##name -# endif - -# if defined(OPENSSL_SYS_MACINTOSH_CLASSIC) && macintosh==1 && !defined(MAC_OS_GUSI_SOURCE) -# define ossl_ssize_t long -# endif - -# ifdef OPENSSL_SYS_MSDOS -# define ossl_ssize_t long -# endif - -# if defined(NeXT) || defined(OPENSSL_SYS_NEWS4) || defined(OPENSSL_SYS_SUNOS) -# define ssize_t int -# endif - -# if defined(__ultrix) && !defined(ssize_t) -# define ossl_ssize_t int -# endif - -# ifndef ossl_ssize_t -# define ossl_ssize_t ssize_t -# endif - -#ifdef __cplusplus -} -#endif -#endif diff --git a/ext/openssl-win64/inc32/openssl/ec.h b/ext/openssl-win64/inc32/openssl/ec.h deleted file mode 100644 index 98edfdf8..00000000 --- a/ext/openssl-win64/inc32/openssl/ec.h +++ /dev/null @@ -1,1281 +0,0 @@ -/* crypto/ec/ec.h */ -/* - * Originally written by Bodo Moeller for the OpenSSL project. - */ -/** - * \file crypto/ec/ec.h Include file for the OpenSSL EC functions - * \author Originally written by Bodo Moeller for the OpenSSL project - */ -/* ==================================================================== - * Copyright (c) 1998-2005 The OpenSSL Project. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. All advertising materials mentioning features or use of this - * software must display the following acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" - * - * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * openssl-core@openssl.org. - * - * 5. Products derived from this software may not be called "OpenSSL" - * nor may "OpenSSL" appear in their names without prior written - * permission of the OpenSSL Project. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit (http://www.openssl.org/)" - * - * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY - * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * ==================================================================== - * - * This product includes cryptographic software written by Eric Young - * (eay@cryptsoft.com). This product includes software written by Tim - * Hudson (tjh@cryptsoft.com). - * - */ -/* ==================================================================== - * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED. - * - * Portions of the attached software ("Contribution") are developed by - * SUN MICROSYSTEMS, INC., and are contributed to the OpenSSL project. - * - * The Contribution is licensed pursuant to the OpenSSL open source - * license provided above. - * - * The elliptic curve binary polynomial software is originally written by - * Sheueling Chang Shantz and Douglas Stebila of Sun Microsystems Laboratories. - * - */ - -#ifndef HEADER_EC_H -# define HEADER_EC_H - -# include - -# ifdef OPENSSL_NO_EC -# error EC is disabled. -# endif - -# include -# include -# ifndef OPENSSL_NO_DEPRECATED -# include -# endif - -# ifdef __cplusplus -extern "C" { -# elif defined(__SUNPRO_C) -# if __SUNPRO_C >= 0x520 -# pragma error_messages (off,E_ARRAY_OF_INCOMPLETE_NONAME,E_ARRAY_OF_INCOMPLETE) -# endif -# endif - -# ifndef OPENSSL_ECC_MAX_FIELD_BITS -# define OPENSSL_ECC_MAX_FIELD_BITS 661 -# endif - -/** Enum for the point conversion form as defined in X9.62 (ECDSA) - * for the encoding of a elliptic curve point (x,y) */ -typedef enum { - /** the point is encoded as z||x, where the octet z specifies - * which solution of the quadratic equation y is */ - POINT_CONVERSION_COMPRESSED = 2, - /** the point is encoded as z||x||y, where z is the octet 0x02 */ - POINT_CONVERSION_UNCOMPRESSED = 4, - /** the point is encoded as z||x||y, where the octet z specifies - * which solution of the quadratic equation y is */ - POINT_CONVERSION_HYBRID = 6 -} point_conversion_form_t; - -typedef struct ec_method_st EC_METHOD; - -typedef struct ec_group_st - /*- - EC_METHOD *meth; - -- field definition - -- curve coefficients - -- optional generator with associated information (order, cofactor) - -- optional extra data (precomputed table for fast computation of multiples of generator) - -- ASN1 stuff - */ - EC_GROUP; - -typedef struct ec_point_st EC_POINT; - -/********************************************************************/ -/* EC_METHODs for curves over GF(p) */ -/********************************************************************/ - -/** Returns the basic GFp ec methods which provides the basis for the - * optimized methods. - * \return EC_METHOD object - */ -const EC_METHOD *EC_GFp_simple_method(void); - -/** Returns GFp methods using montgomery multiplication. - * \return EC_METHOD object - */ -const EC_METHOD *EC_GFp_mont_method(void); - -/** Returns GFp methods using optimized methods for NIST recommended curves - * \return EC_METHOD object - */ -const EC_METHOD *EC_GFp_nist_method(void); - -# ifndef OPENSSL_NO_EC_NISTP_64_GCC_128 -/** Returns 64-bit optimized methods for nistp224 - * \return EC_METHOD object - */ -const EC_METHOD *EC_GFp_nistp224_method(void); - -/** Returns 64-bit optimized methods for nistp256 - * \return EC_METHOD object - */ -const EC_METHOD *EC_GFp_nistp256_method(void); - -/** Returns 64-bit optimized methods for nistp521 - * \return EC_METHOD object - */ -const EC_METHOD *EC_GFp_nistp521_method(void); -# endif - -# ifndef OPENSSL_NO_EC2M -/********************************************************************/ -/* EC_METHOD for curves over GF(2^m) */ -/********************************************************************/ - -/** Returns the basic GF2m ec method - * \return EC_METHOD object - */ -const EC_METHOD *EC_GF2m_simple_method(void); - -# endif - -/********************************************************************/ -/* EC_GROUP functions */ -/********************************************************************/ - -/** Creates a new EC_GROUP object - * \param meth EC_METHOD to use - * \return newly created EC_GROUP object or NULL in case of an error. - */ -EC_GROUP *EC_GROUP_new(const EC_METHOD *meth); - -/** Frees a EC_GROUP object - * \param group EC_GROUP object to be freed. - */ -void EC_GROUP_free(EC_GROUP *group); - -/** Clears and frees a EC_GROUP object - * \param group EC_GROUP object to be cleared and freed. - */ -void EC_GROUP_clear_free(EC_GROUP *group); - -/** Copies EC_GROUP objects. Note: both EC_GROUPs must use the same EC_METHOD. - * \param dst destination EC_GROUP object - * \param src source EC_GROUP object - * \return 1 on success and 0 if an error occurred. - */ -int EC_GROUP_copy(EC_GROUP *dst, const EC_GROUP *src); - -/** Creates a new EC_GROUP object and copies the copies the content - * form src to the newly created EC_KEY object - * \param src source EC_GROUP object - * \return newly created EC_GROUP object or NULL in case of an error. - */ -EC_GROUP *EC_GROUP_dup(const EC_GROUP *src); - -/** Returns the EC_METHOD of the EC_GROUP object. - * \param group EC_GROUP object - * \return EC_METHOD used in this EC_GROUP object. - */ -const EC_METHOD *EC_GROUP_method_of(const EC_GROUP *group); - -/** Returns the field type of the EC_METHOD. - * \param meth EC_METHOD object - * \return NID of the underlying field type OID. - */ -int EC_METHOD_get_field_type(const EC_METHOD *meth); - -/** Sets the generator and it's order/cofactor of a EC_GROUP object. - * \param group EC_GROUP object - * \param generator EC_POINT object with the generator. - * \param order the order of the group generated by the generator. - * \param cofactor the index of the sub-group generated by the generator - * in the group of all points on the elliptic curve. - * \return 1 on success and 0 if an error occured - */ -int EC_GROUP_set_generator(EC_GROUP *group, const EC_POINT *generator, - const BIGNUM *order, const BIGNUM *cofactor); - -/** Returns the generator of a EC_GROUP object. - * \param group EC_GROUP object - * \return the currently used generator (possibly NULL). - */ -const EC_POINT *EC_GROUP_get0_generator(const EC_GROUP *group); - -/** Returns the montgomery data for order(Generator) - * \param group EC_GROUP object - * \return the currently used generator (possibly NULL). -*/ -BN_MONT_CTX *EC_GROUP_get_mont_data(const EC_GROUP *group); - -/** Gets the order of a EC_GROUP - * \param group EC_GROUP object - * \param order BIGNUM to which the order is copied - * \param ctx BN_CTX object (optional) - * \return 1 on success and 0 if an error occured - */ -int EC_GROUP_get_order(const EC_GROUP *group, BIGNUM *order, BN_CTX *ctx); - -/** Gets the cofactor of a EC_GROUP - * \param group EC_GROUP object - * \param cofactor BIGNUM to which the cofactor is copied - * \param ctx BN_CTX object (optional) - * \return 1 on success and 0 if an error occured - */ -int EC_GROUP_get_cofactor(const EC_GROUP *group, BIGNUM *cofactor, - BN_CTX *ctx); - -/** Sets the name of a EC_GROUP object - * \param group EC_GROUP object - * \param nid NID of the curve name OID - */ -void EC_GROUP_set_curve_name(EC_GROUP *group, int nid); - -/** Returns the curve name of a EC_GROUP object - * \param group EC_GROUP object - * \return NID of the curve name OID or 0 if not set. - */ -int EC_GROUP_get_curve_name(const EC_GROUP *group); - -void EC_GROUP_set_asn1_flag(EC_GROUP *group, int flag); -int EC_GROUP_get_asn1_flag(const EC_GROUP *group); - -void EC_GROUP_set_point_conversion_form(EC_GROUP *group, - point_conversion_form_t form); -point_conversion_form_t EC_GROUP_get_point_conversion_form(const EC_GROUP *); - -unsigned char *EC_GROUP_get0_seed(const EC_GROUP *x); -size_t EC_GROUP_get_seed_len(const EC_GROUP *); -size_t EC_GROUP_set_seed(EC_GROUP *, const unsigned char *, size_t len); - -/** Sets the parameter of a ec over GFp defined by y^2 = x^3 + a*x + b - * \param group EC_GROUP object - * \param p BIGNUM with the prime number - * \param a BIGNUM with parameter a of the equation - * \param b BIGNUM with parameter b of the equation - * \param ctx BN_CTX object (optional) - * \return 1 on success and 0 if an error occured - */ -int EC_GROUP_set_curve_GFp(EC_GROUP *group, const BIGNUM *p, const BIGNUM *a, - const BIGNUM *b, BN_CTX *ctx); - -/** Gets the parameter of the ec over GFp defined by y^2 = x^3 + a*x + b - * \param group EC_GROUP object - * \param p BIGNUM for the prime number - * \param a BIGNUM for parameter a of the equation - * \param b BIGNUM for parameter b of the equation - * \param ctx BN_CTX object (optional) - * \return 1 on success and 0 if an error occured - */ -int EC_GROUP_get_curve_GFp(const EC_GROUP *group, BIGNUM *p, BIGNUM *a, - BIGNUM *b, BN_CTX *ctx); - -# ifndef OPENSSL_NO_EC2M -/** Sets the parameter of a ec over GF2m defined by y^2 + x*y = x^3 + a*x^2 + b - * \param group EC_GROUP object - * \param p BIGNUM with the polynomial defining the underlying field - * \param a BIGNUM with parameter a of the equation - * \param b BIGNUM with parameter b of the equation - * \param ctx BN_CTX object (optional) - * \return 1 on success and 0 if an error occured - */ -int EC_GROUP_set_curve_GF2m(EC_GROUP *group, const BIGNUM *p, const BIGNUM *a, - const BIGNUM *b, BN_CTX *ctx); - -/** Gets the parameter of the ec over GF2m defined by y^2 + x*y = x^3 + a*x^2 + b - * \param group EC_GROUP object - * \param p BIGNUM for the polynomial defining the underlying field - * \param a BIGNUM for parameter a of the equation - * \param b BIGNUM for parameter b of the equation - * \param ctx BN_CTX object (optional) - * \return 1 on success and 0 if an error occured - */ -int EC_GROUP_get_curve_GF2m(const EC_GROUP *group, BIGNUM *p, BIGNUM *a, - BIGNUM *b, BN_CTX *ctx); -# endif -/** Returns the number of bits needed to represent a field element - * \param group EC_GROUP object - * \return number of bits needed to represent a field element - */ -int EC_GROUP_get_degree(const EC_GROUP *group); - -/** Checks whether the parameter in the EC_GROUP define a valid ec group - * \param group EC_GROUP object - * \param ctx BN_CTX object (optional) - * \return 1 if group is a valid ec group and 0 otherwise - */ -int EC_GROUP_check(const EC_GROUP *group, BN_CTX *ctx); - -/** Checks whether the discriminant of the elliptic curve is zero or not - * \param group EC_GROUP object - * \param ctx BN_CTX object (optional) - * \return 1 if the discriminant is not zero and 0 otherwise - */ -int EC_GROUP_check_discriminant(const EC_GROUP *group, BN_CTX *ctx); - -/** Compares two EC_GROUP objects - * \param a first EC_GROUP object - * \param b second EC_GROUP object - * \param ctx BN_CTX object (optional) - * \return 0 if both groups are equal and 1 otherwise - */ -int EC_GROUP_cmp(const EC_GROUP *a, const EC_GROUP *b, BN_CTX *ctx); - -/* - * EC_GROUP_new_GF*() calls EC_GROUP_new() and EC_GROUP_set_GF*() after - * choosing an appropriate EC_METHOD - */ - -/** Creates a new EC_GROUP object with the specified parameters defined - * over GFp (defined by the equation y^2 = x^3 + a*x + b) - * \param p BIGNUM with the prime number - * \param a BIGNUM with the parameter a of the equation - * \param b BIGNUM with the parameter b of the equation - * \param ctx BN_CTX object (optional) - * \return newly created EC_GROUP object with the specified parameters - */ -EC_GROUP *EC_GROUP_new_curve_GFp(const BIGNUM *p, const BIGNUM *a, - const BIGNUM *b, BN_CTX *ctx); -# ifndef OPENSSL_NO_EC2M -/** Creates a new EC_GROUP object with the specified parameters defined - * over GF2m (defined by the equation y^2 + x*y = x^3 + a*x^2 + b) - * \param p BIGNUM with the polynomial defining the underlying field - * \param a BIGNUM with the parameter a of the equation - * \param b BIGNUM with the parameter b of the equation - * \param ctx BN_CTX object (optional) - * \return newly created EC_GROUP object with the specified parameters - */ -EC_GROUP *EC_GROUP_new_curve_GF2m(const BIGNUM *p, const BIGNUM *a, - const BIGNUM *b, BN_CTX *ctx); -# endif -/** Creates a EC_GROUP object with a curve specified by a NID - * \param nid NID of the OID of the curve name - * \return newly created EC_GROUP object with specified curve or NULL - * if an error occurred - */ -EC_GROUP *EC_GROUP_new_by_curve_name(int nid); - -/********************************************************************/ -/* handling of internal curves */ -/********************************************************************/ - -typedef struct { - int nid; - const char *comment; -} EC_builtin_curve; - -/* - * EC_builtin_curves(EC_builtin_curve *r, size_t size) returns number of all - * available curves or zero if a error occurred. In case r ist not zero - * nitems EC_builtin_curve structures are filled with the data of the first - * nitems internal groups - */ -size_t EC_get_builtin_curves(EC_builtin_curve *r, size_t nitems); - -const char *EC_curve_nid2nist(int nid); -int EC_curve_nist2nid(const char *name); - -/********************************************************************/ -/* EC_POINT functions */ -/********************************************************************/ - -/** Creates a new EC_POINT object for the specified EC_GROUP - * \param group EC_GROUP the underlying EC_GROUP object - * \return newly created EC_POINT object or NULL if an error occurred - */ -EC_POINT *EC_POINT_new(const EC_GROUP *group); - -/** Frees a EC_POINT object - * \param point EC_POINT object to be freed - */ -void EC_POINT_free(EC_POINT *point); - -/** Clears and frees a EC_POINT object - * \param point EC_POINT object to be cleared and freed - */ -void EC_POINT_clear_free(EC_POINT *point); - -/** Copies EC_POINT object - * \param dst destination EC_POINT object - * \param src source EC_POINT object - * \return 1 on success and 0 if an error occured - */ -int EC_POINT_copy(EC_POINT *dst, const EC_POINT *src); - -/** Creates a new EC_POINT object and copies the content of the supplied - * EC_POINT - * \param src source EC_POINT object - * \param group underlying the EC_GROUP object - * \return newly created EC_POINT object or NULL if an error occurred - */ -EC_POINT *EC_POINT_dup(const EC_POINT *src, const EC_GROUP *group); - -/** Returns the EC_METHOD used in EC_POINT object - * \param point EC_POINT object - * \return the EC_METHOD used - */ -const EC_METHOD *EC_POINT_method_of(const EC_POINT *point); - -/** Sets a point to infinity (neutral element) - * \param group underlying EC_GROUP object - * \param point EC_POINT to set to infinity - * \return 1 on success and 0 if an error occured - */ -int EC_POINT_set_to_infinity(const EC_GROUP *group, EC_POINT *point); - -/** Sets the jacobian projective coordinates of a EC_POINT over GFp - * \param group underlying EC_GROUP object - * \param p EC_POINT object - * \param x BIGNUM with the x-coordinate - * \param y BIGNUM with the y-coordinate - * \param z BIGNUM with the z-coordinate - * \param ctx BN_CTX object (optional) - * \return 1 on success and 0 if an error occured - */ -int EC_POINT_set_Jprojective_coordinates_GFp(const EC_GROUP *group, - EC_POINT *p, const BIGNUM *x, - const BIGNUM *y, const BIGNUM *z, - BN_CTX *ctx); - -/** Gets the jacobian projective coordinates of a EC_POINT over GFp - * \param group underlying EC_GROUP object - * \param p EC_POINT object - * \param x BIGNUM for the x-coordinate - * \param y BIGNUM for the y-coordinate - * \param z BIGNUM for the z-coordinate - * \param ctx BN_CTX object (optional) - * \return 1 on success and 0 if an error occured - */ -int EC_POINT_get_Jprojective_coordinates_GFp(const EC_GROUP *group, - const EC_POINT *p, BIGNUM *x, - BIGNUM *y, BIGNUM *z, - BN_CTX *ctx); - -/** Sets the affine coordinates of a EC_POINT over GFp - * \param group underlying EC_GROUP object - * \param p EC_POINT object - * \param x BIGNUM with the x-coordinate - * \param y BIGNUM with the y-coordinate - * \param ctx BN_CTX object (optional) - * \return 1 on success and 0 if an error occured - */ -int EC_POINT_set_affine_coordinates_GFp(const EC_GROUP *group, EC_POINT *p, - const BIGNUM *x, const BIGNUM *y, - BN_CTX *ctx); - -/** Gets the affine coordinates of a EC_POINT over GFp - * \param group underlying EC_GROUP object - * \param p EC_POINT object - * \param x BIGNUM for the x-coordinate - * \param y BIGNUM for the y-coordinate - * \param ctx BN_CTX object (optional) - * \return 1 on success and 0 if an error occured - */ -int EC_POINT_get_affine_coordinates_GFp(const EC_GROUP *group, - const EC_POINT *p, BIGNUM *x, - BIGNUM *y, BN_CTX *ctx); - -/** Sets the x9.62 compressed coordinates of a EC_POINT over GFp - * \param group underlying EC_GROUP object - * \param p EC_POINT object - * \param x BIGNUM with x-coordinate - * \param y_bit integer with the y-Bit (either 0 or 1) - * \param ctx BN_CTX object (optional) - * \return 1 on success and 0 if an error occured - */ -int EC_POINT_set_compressed_coordinates_GFp(const EC_GROUP *group, - EC_POINT *p, const BIGNUM *x, - int y_bit, BN_CTX *ctx); -# ifndef OPENSSL_NO_EC2M -/** Sets the affine coordinates of a EC_POINT over GF2m - * \param group underlying EC_GROUP object - * \param p EC_POINT object - * \param x BIGNUM with the x-coordinate - * \param y BIGNUM with the y-coordinate - * \param ctx BN_CTX object (optional) - * \return 1 on success and 0 if an error occured - */ -int EC_POINT_set_affine_coordinates_GF2m(const EC_GROUP *group, EC_POINT *p, - const BIGNUM *x, const BIGNUM *y, - BN_CTX *ctx); - -/** Gets the affine coordinates of a EC_POINT over GF2m - * \param group underlying EC_GROUP object - * \param p EC_POINT object - * \param x BIGNUM for the x-coordinate - * \param y BIGNUM for the y-coordinate - * \param ctx BN_CTX object (optional) - * \return 1 on success and 0 if an error occured - */ -int EC_POINT_get_affine_coordinates_GF2m(const EC_GROUP *group, - const EC_POINT *p, BIGNUM *x, - BIGNUM *y, BN_CTX *ctx); - -/** Sets the x9.62 compressed coordinates of a EC_POINT over GF2m - * \param group underlying EC_GROUP object - * \param p EC_POINT object - * \param x BIGNUM with x-coordinate - * \param y_bit integer with the y-Bit (either 0 or 1) - * \param ctx BN_CTX object (optional) - * \return 1 on success and 0 if an error occured - */ -int EC_POINT_set_compressed_coordinates_GF2m(const EC_GROUP *group, - EC_POINT *p, const BIGNUM *x, - int y_bit, BN_CTX *ctx); -# endif -/** Encodes a EC_POINT object to a octet string - * \param group underlying EC_GROUP object - * \param p EC_POINT object - * \param form point conversion form - * \param buf memory buffer for the result. If NULL the function returns - * required buffer size. - * \param len length of the memory buffer - * \param ctx BN_CTX object (optional) - * \return the length of the encoded octet string or 0 if an error occurred - */ -size_t EC_POINT_point2oct(const EC_GROUP *group, const EC_POINT *p, - point_conversion_form_t form, - unsigned char *buf, size_t len, BN_CTX *ctx); - -/** Decodes a EC_POINT from a octet string - * \param group underlying EC_GROUP object - * \param p EC_POINT object - * \param buf memory buffer with the encoded ec point - * \param len length of the encoded ec point - * \param ctx BN_CTX object (optional) - * \return 1 on success and 0 if an error occured - */ -int EC_POINT_oct2point(const EC_GROUP *group, EC_POINT *p, - const unsigned char *buf, size_t len, BN_CTX *ctx); - -/* other interfaces to point2oct/oct2point: */ -BIGNUM *EC_POINT_point2bn(const EC_GROUP *, const EC_POINT *, - point_conversion_form_t form, BIGNUM *, BN_CTX *); -EC_POINT *EC_POINT_bn2point(const EC_GROUP *, const BIGNUM *, - EC_POINT *, BN_CTX *); -char *EC_POINT_point2hex(const EC_GROUP *, const EC_POINT *, - point_conversion_form_t form, BN_CTX *); -EC_POINT *EC_POINT_hex2point(const EC_GROUP *, const char *, - EC_POINT *, BN_CTX *); - -/********************************************************************/ -/* functions for doing EC_POINT arithmetic */ -/********************************************************************/ - -/** Computes the sum of two EC_POINT - * \param group underlying EC_GROUP object - * \param r EC_POINT object for the result (r = a + b) - * \param a EC_POINT object with the first summand - * \param b EC_POINT object with the second summand - * \param ctx BN_CTX object (optional) - * \return 1 on success and 0 if an error occured - */ -int EC_POINT_add(const EC_GROUP *group, EC_POINT *r, const EC_POINT *a, - const EC_POINT *b, BN_CTX *ctx); - -/** Computes the double of a EC_POINT - * \param group underlying EC_GROUP object - * \param r EC_POINT object for the result (r = 2 * a) - * \param a EC_POINT object - * \param ctx BN_CTX object (optional) - * \return 1 on success and 0 if an error occured - */ -int EC_POINT_dbl(const EC_GROUP *group, EC_POINT *r, const EC_POINT *a, - BN_CTX *ctx); - -/** Computes the inverse of a EC_POINT - * \param group underlying EC_GROUP object - * \param a EC_POINT object to be inverted (it's used for the result as well) - * \param ctx BN_CTX object (optional) - * \return 1 on success and 0 if an error occured - */ -int EC_POINT_invert(const EC_GROUP *group, EC_POINT *a, BN_CTX *ctx); - -/** Checks whether the point is the neutral element of the group - * \param group the underlying EC_GROUP object - * \param p EC_POINT object - * \return 1 if the point is the neutral element and 0 otherwise - */ -int EC_POINT_is_at_infinity(const EC_GROUP *group, const EC_POINT *p); - -/** Checks whether the point is on the curve - * \param group underlying EC_GROUP object - * \param point EC_POINT object to check - * \param ctx BN_CTX object (optional) - * \return 1 if point if on the curve and 0 otherwise - */ -int EC_POINT_is_on_curve(const EC_GROUP *group, const EC_POINT *point, - BN_CTX *ctx); - -/** Compares two EC_POINTs - * \param group underlying EC_GROUP object - * \param a first EC_POINT object - * \param b second EC_POINT object - * \param ctx BN_CTX object (optional) - * \return 0 if both points are equal and a value != 0 otherwise - */ -int EC_POINT_cmp(const EC_GROUP *group, const EC_POINT *a, const EC_POINT *b, - BN_CTX *ctx); - -int EC_POINT_make_affine(const EC_GROUP *group, EC_POINT *point, BN_CTX *ctx); -int EC_POINTs_make_affine(const EC_GROUP *group, size_t num, - EC_POINT *points[], BN_CTX *ctx); - -/** Computes r = generator * n sum_{i=0}^{num-1} p[i] * m[i] - * \param group underlying EC_GROUP object - * \param r EC_POINT object for the result - * \param n BIGNUM with the multiplier for the group generator (optional) - * \param num number futher summands - * \param p array of size num of EC_POINT objects - * \param m array of size num of BIGNUM objects - * \param ctx BN_CTX object (optional) - * \return 1 on success and 0 if an error occured - */ -int EC_POINTs_mul(const EC_GROUP *group, EC_POINT *r, const BIGNUM *n, - size_t num, const EC_POINT *p[], const BIGNUM *m[], - BN_CTX *ctx); - -/** Computes r = generator * n + q * m - * \param group underlying EC_GROUP object - * \param r EC_POINT object for the result - * \param n BIGNUM with the multiplier for the group generator (optional) - * \param q EC_POINT object with the first factor of the second summand - * \param m BIGNUM with the second factor of the second summand - * \param ctx BN_CTX object (optional) - * \return 1 on success and 0 if an error occured - */ -int EC_POINT_mul(const EC_GROUP *group, EC_POINT *r, const BIGNUM *n, - const EC_POINT *q, const BIGNUM *m, BN_CTX *ctx); - -/** Stores multiples of generator for faster point multiplication - * \param group EC_GROUP object - * \param ctx BN_CTX object (optional) - * \return 1 on success and 0 if an error occured - */ -int EC_GROUP_precompute_mult(EC_GROUP *group, BN_CTX *ctx); - -/** Reports whether a precomputation has been done - * \param group EC_GROUP object - * \return 1 if a pre-computation has been done and 0 otherwise - */ -int EC_GROUP_have_precompute_mult(const EC_GROUP *group); - -/********************************************************************/ -/* ASN1 stuff */ -/********************************************************************/ - -/* - * EC_GROUP_get_basis_type() returns the NID of the basis type used to - * represent the field elements - */ -int EC_GROUP_get_basis_type(const EC_GROUP *); -# ifndef OPENSSL_NO_EC2M -int EC_GROUP_get_trinomial_basis(const EC_GROUP *, unsigned int *k); -int EC_GROUP_get_pentanomial_basis(const EC_GROUP *, unsigned int *k1, - unsigned int *k2, unsigned int *k3); -# endif - -# define OPENSSL_EC_NAMED_CURVE 0x001 - -typedef struct ecpk_parameters_st ECPKPARAMETERS; - -EC_GROUP *d2i_ECPKParameters(EC_GROUP **, const unsigned char **in, long len); -int i2d_ECPKParameters(const EC_GROUP *, unsigned char **out); - -# define d2i_ECPKParameters_bio(bp,x) ASN1_d2i_bio_of(EC_GROUP,NULL,d2i_ECPKParameters,bp,x) -# define i2d_ECPKParameters_bio(bp,x) ASN1_i2d_bio_of_const(EC_GROUP,i2d_ECPKParameters,bp,x) -# define d2i_ECPKParameters_fp(fp,x) (EC_GROUP *)ASN1_d2i_fp(NULL, \ - (char *(*)())d2i_ECPKParameters,(fp),(unsigned char **)(x)) -# define i2d_ECPKParameters_fp(fp,x) ASN1_i2d_fp(i2d_ECPKParameters,(fp), \ - (unsigned char *)(x)) - -# ifndef OPENSSL_NO_BIO -int ECPKParameters_print(BIO *bp, const EC_GROUP *x, int off); -# endif -# ifndef OPENSSL_NO_FP_API -int ECPKParameters_print_fp(FILE *fp, const EC_GROUP *x, int off); -# endif - -/********************************************************************/ -/* EC_KEY functions */ -/********************************************************************/ - -typedef struct ec_key_st EC_KEY; - -/* some values for the encoding_flag */ -# define EC_PKEY_NO_PARAMETERS 0x001 -# define EC_PKEY_NO_PUBKEY 0x002 - -/* some values for the flags field */ -# define EC_FLAG_NON_FIPS_ALLOW 0x1 -# define EC_FLAG_FIPS_CHECKED 0x2 - -/** Creates a new EC_KEY object. - * \return EC_KEY object or NULL if an error occurred. - */ -EC_KEY *EC_KEY_new(void); - -int EC_KEY_get_flags(const EC_KEY *key); - -void EC_KEY_set_flags(EC_KEY *key, int flags); - -void EC_KEY_clear_flags(EC_KEY *key, int flags); - -/** Creates a new EC_KEY object using a named curve as underlying - * EC_GROUP object. - * \param nid NID of the named curve. - * \return EC_KEY object or NULL if an error occurred. - */ -EC_KEY *EC_KEY_new_by_curve_name(int nid); - -/** Frees a EC_KEY object. - * \param key EC_KEY object to be freed. - */ -void EC_KEY_free(EC_KEY *key); - -/** Copies a EC_KEY object. - * \param dst destination EC_KEY object - * \param src src EC_KEY object - * \return dst or NULL if an error occurred. - */ -EC_KEY *EC_KEY_copy(EC_KEY *dst, const EC_KEY *src); - -/** Creates a new EC_KEY object and copies the content from src to it. - * \param src the source EC_KEY object - * \return newly created EC_KEY object or NULL if an error occurred. - */ -EC_KEY *EC_KEY_dup(const EC_KEY *src); - -/** Increases the internal reference count of a EC_KEY object. - * \param key EC_KEY object - * \return 1 on success and 0 if an error occurred. - */ -int EC_KEY_up_ref(EC_KEY *key); - -/** Returns the EC_GROUP object of a EC_KEY object - * \param key EC_KEY object - * \return the EC_GROUP object (possibly NULL). - */ -const EC_GROUP *EC_KEY_get0_group(const EC_KEY *key); - -/** Sets the EC_GROUP of a EC_KEY object. - * \param key EC_KEY object - * \param group EC_GROUP to use in the EC_KEY object (note: the EC_KEY - * object will use an own copy of the EC_GROUP). - * \return 1 on success and 0 if an error occurred. - */ -int EC_KEY_set_group(EC_KEY *key, const EC_GROUP *group); - -/** Returns the private key of a EC_KEY object. - * \param key EC_KEY object - * \return a BIGNUM with the private key (possibly NULL). - */ -const BIGNUM *EC_KEY_get0_private_key(const EC_KEY *key); - -/** Sets the private key of a EC_KEY object. - * \param key EC_KEY object - * \param prv BIGNUM with the private key (note: the EC_KEY object - * will use an own copy of the BIGNUM). - * \return 1 on success and 0 if an error occurred. - */ -int EC_KEY_set_private_key(EC_KEY *key, const BIGNUM *prv); - -/** Returns the public key of a EC_KEY object. - * \param key the EC_KEY object - * \return a EC_POINT object with the public key (possibly NULL) - */ -const EC_POINT *EC_KEY_get0_public_key(const EC_KEY *key); - -/** Sets the public key of a EC_KEY object. - * \param key EC_KEY object - * \param pub EC_POINT object with the public key (note: the EC_KEY object - * will use an own copy of the EC_POINT object). - * \return 1 on success and 0 if an error occurred. - */ -int EC_KEY_set_public_key(EC_KEY *key, const EC_POINT *pub); - -unsigned EC_KEY_get_enc_flags(const EC_KEY *key); -void EC_KEY_set_enc_flags(EC_KEY *eckey, unsigned int flags); -point_conversion_form_t EC_KEY_get_conv_form(const EC_KEY *key); -void EC_KEY_set_conv_form(EC_KEY *eckey, point_conversion_form_t cform); -/* functions to set/get method specific data */ -void *EC_KEY_get_key_method_data(EC_KEY *key, - void *(*dup_func) (void *), - void (*free_func) (void *), - void (*clear_free_func) (void *)); -/** Sets the key method data of an EC_KEY object, if none has yet been set. - * \param key EC_KEY object - * \param data opaque data to install. - * \param dup_func a function that duplicates |data|. - * \param free_func a function that frees |data|. - * \param clear_free_func a function that wipes and frees |data|. - * \return the previously set data pointer, or NULL if |data| was inserted. - */ -void *EC_KEY_insert_key_method_data(EC_KEY *key, void *data, - void *(*dup_func) (void *), - void (*free_func) (void *), - void (*clear_free_func) (void *)); -/* wrapper functions for the underlying EC_GROUP object */ -void EC_KEY_set_asn1_flag(EC_KEY *eckey, int asn1_flag); - -/** Creates a table of pre-computed multiples of the generator to - * accelerate further EC_KEY operations. - * \param key EC_KEY object - * \param ctx BN_CTX object (optional) - * \return 1 on success and 0 if an error occurred. - */ -int EC_KEY_precompute_mult(EC_KEY *key, BN_CTX *ctx); - -/** Creates a new ec private (and optional a new public) key. - * \param key EC_KEY object - * \return 1 on success and 0 if an error occurred. - */ -int EC_KEY_generate_key(EC_KEY *key); - -/** Verifies that a private and/or public key is valid. - * \param key the EC_KEY object - * \return 1 on success and 0 otherwise. - */ -int EC_KEY_check_key(const EC_KEY *key); - -/** Sets a public key from affine coordindates performing - * neccessary NIST PKV tests. - * \param key the EC_KEY object - * \param x public key x coordinate - * \param y public key y coordinate - * \return 1 on success and 0 otherwise. - */ -int EC_KEY_set_public_key_affine_coordinates(EC_KEY *key, BIGNUM *x, - BIGNUM *y); - -/********************************************************************/ -/* de- and encoding functions for SEC1 ECPrivateKey */ -/********************************************************************/ - -/** Decodes a private key from a memory buffer. - * \param key a pointer to a EC_KEY object which should be used (or NULL) - * \param in pointer to memory with the DER encoded private key - * \param len length of the DER encoded private key - * \return the decoded private key or NULL if an error occurred. - */ -EC_KEY *d2i_ECPrivateKey(EC_KEY **key, const unsigned char **in, long len); - -/** Encodes a private key object and stores the result in a buffer. - * \param key the EC_KEY object to encode - * \param out the buffer for the result (if NULL the function returns number - * of bytes needed). - * \return 1 on success and 0 if an error occurred. - */ -int i2d_ECPrivateKey(EC_KEY *key, unsigned char **out); - -/********************************************************************/ -/* de- and encoding functions for EC parameters */ -/********************************************************************/ - -/** Decodes ec parameter from a memory buffer. - * \param key a pointer to a EC_KEY object which should be used (or NULL) - * \param in pointer to memory with the DER encoded ec parameters - * \param len length of the DER encoded ec parameters - * \return a EC_KEY object with the decoded parameters or NULL if an error - * occurred. - */ -EC_KEY *d2i_ECParameters(EC_KEY **key, const unsigned char **in, long len); - -/** Encodes ec parameter and stores the result in a buffer. - * \param key the EC_KEY object with ec paramters to encode - * \param out the buffer for the result (if NULL the function returns number - * of bytes needed). - * \return 1 on success and 0 if an error occurred. - */ -int i2d_ECParameters(EC_KEY *key, unsigned char **out); - -/********************************************************************/ -/* de- and encoding functions for EC public key */ -/* (octet string, not DER -- hence 'o2i' and 'i2o') */ -/********************************************************************/ - -/** Decodes a ec public key from a octet string. - * \param key a pointer to a EC_KEY object which should be used - * \param in memory buffer with the encoded public key - * \param len length of the encoded public key - * \return EC_KEY object with decoded public key or NULL if an error - * occurred. - */ -EC_KEY *o2i_ECPublicKey(EC_KEY **key, const unsigned char **in, long len); - -/** Encodes a ec public key in an octet string. - * \param key the EC_KEY object with the public key - * \param out the buffer for the result (if NULL the function returns number - * of bytes needed). - * \return 1 on success and 0 if an error occurred - */ -int i2o_ECPublicKey(EC_KEY *key, unsigned char **out); - -# ifndef OPENSSL_NO_BIO -/** Prints out the ec parameters on human readable form. - * \param bp BIO object to which the information is printed - * \param key EC_KEY object - * \return 1 on success and 0 if an error occurred - */ -int ECParameters_print(BIO *bp, const EC_KEY *key); - -/** Prints out the contents of a EC_KEY object - * \param bp BIO object to which the information is printed - * \param key EC_KEY object - * \param off line offset - * \return 1 on success and 0 if an error occurred - */ -int EC_KEY_print(BIO *bp, const EC_KEY *key, int off); - -# endif -# ifndef OPENSSL_NO_FP_API -/** Prints out the ec parameters on human readable form. - * \param fp file descriptor to which the information is printed - * \param key EC_KEY object - * \return 1 on success and 0 if an error occurred - */ -int ECParameters_print_fp(FILE *fp, const EC_KEY *key); - -/** Prints out the contents of a EC_KEY object - * \param fp file descriptor to which the information is printed - * \param key EC_KEY object - * \param off line offset - * \return 1 on success and 0 if an error occurred - */ -int EC_KEY_print_fp(FILE *fp, const EC_KEY *key, int off); - -# endif - -# define ECParameters_dup(x) ASN1_dup_of(EC_KEY,i2d_ECParameters,d2i_ECParameters,x) - -# ifndef __cplusplus -# if defined(__SUNPRO_C) -# if __SUNPRO_C >= 0x520 -# pragma error_messages (default,E_ARRAY_OF_INCOMPLETE_NONAME,E_ARRAY_OF_INCOMPLETE) -# endif -# endif -# endif - -# define EVP_PKEY_CTX_set_ec_paramgen_curve_nid(ctx, nid) \ - EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ - EVP_PKEY_OP_PARAMGEN|EVP_PKEY_OP_KEYGEN, \ - EVP_PKEY_CTRL_EC_PARAMGEN_CURVE_NID, nid, NULL) - -# define EVP_PKEY_CTX_set_ec_param_enc(ctx, flag) \ - EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ - EVP_PKEY_OP_PARAMGEN|EVP_PKEY_OP_KEYGEN, \ - EVP_PKEY_CTRL_EC_PARAM_ENC, flag, NULL) - -# define EVP_PKEY_CTX_set_ecdh_cofactor_mode(ctx, flag) \ - EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ - EVP_PKEY_OP_DERIVE, \ - EVP_PKEY_CTRL_EC_ECDH_COFACTOR, flag, NULL) - -# define EVP_PKEY_CTX_get_ecdh_cofactor_mode(ctx) \ - EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ - EVP_PKEY_OP_DERIVE, \ - EVP_PKEY_CTRL_EC_ECDH_COFACTOR, -2, NULL) - -# define EVP_PKEY_CTX_set_ecdh_kdf_type(ctx, kdf) \ - EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ - EVP_PKEY_OP_DERIVE, \ - EVP_PKEY_CTRL_EC_KDF_TYPE, kdf, NULL) - -# define EVP_PKEY_CTX_get_ecdh_kdf_type(ctx) \ - EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ - EVP_PKEY_OP_DERIVE, \ - EVP_PKEY_CTRL_EC_KDF_TYPE, -2, NULL) - -# define EVP_PKEY_CTX_set_ecdh_kdf_md(ctx, md) \ - EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ - EVP_PKEY_OP_DERIVE, \ - EVP_PKEY_CTRL_EC_KDF_MD, 0, (void *)md) - -# define EVP_PKEY_CTX_get_ecdh_kdf_md(ctx, pmd) \ - EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ - EVP_PKEY_OP_DERIVE, \ - EVP_PKEY_CTRL_GET_EC_KDF_MD, 0, (void *)pmd) - -# define EVP_PKEY_CTX_set_ecdh_kdf_outlen(ctx, len) \ - EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ - EVP_PKEY_OP_DERIVE, \ - EVP_PKEY_CTRL_EC_KDF_OUTLEN, len, NULL) - -# define EVP_PKEY_CTX_get_ecdh_kdf_outlen(ctx, plen) \ - EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ - EVP_PKEY_OP_DERIVE, \ - EVP_PKEY_CTRL_GET_EC_KDF_OUTLEN, 0, (void *)plen) - -# define EVP_PKEY_CTX_set0_ecdh_kdf_ukm(ctx, p, plen) \ - EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ - EVP_PKEY_OP_DERIVE, \ - EVP_PKEY_CTRL_EC_KDF_UKM, plen, (void *)p) - -# define EVP_PKEY_CTX_get0_ecdh_kdf_ukm(ctx, p) \ - EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ - EVP_PKEY_OP_DERIVE, \ - EVP_PKEY_CTRL_GET_EC_KDF_UKM, 0, (void *)p) - -# define EVP_PKEY_CTRL_EC_PARAMGEN_CURVE_NID (EVP_PKEY_ALG_CTRL + 1) -# define EVP_PKEY_CTRL_EC_PARAM_ENC (EVP_PKEY_ALG_CTRL + 2) -# define EVP_PKEY_CTRL_EC_ECDH_COFACTOR (EVP_PKEY_ALG_CTRL + 3) -# define EVP_PKEY_CTRL_EC_KDF_TYPE (EVP_PKEY_ALG_CTRL + 4) -# define EVP_PKEY_CTRL_EC_KDF_MD (EVP_PKEY_ALG_CTRL + 5) -# define EVP_PKEY_CTRL_GET_EC_KDF_MD (EVP_PKEY_ALG_CTRL + 6) -# define EVP_PKEY_CTRL_EC_KDF_OUTLEN (EVP_PKEY_ALG_CTRL + 7) -# define EVP_PKEY_CTRL_GET_EC_KDF_OUTLEN (EVP_PKEY_ALG_CTRL + 8) -# define EVP_PKEY_CTRL_EC_KDF_UKM (EVP_PKEY_ALG_CTRL + 9) -# define EVP_PKEY_CTRL_GET_EC_KDF_UKM (EVP_PKEY_ALG_CTRL + 10) -/* KDF types */ -# define EVP_PKEY_ECDH_KDF_NONE 1 -# define EVP_PKEY_ECDH_KDF_X9_62 2 - -/* BEGIN ERROR CODES */ -/* - * The following lines are auto generated by the script mkerr.pl. Any changes - * made after this point may be overwritten when the script is next run. - */ -void ERR_load_EC_strings(void); - -/* Error codes for the EC functions. */ - -/* Function codes. */ -# define EC_F_BN_TO_FELEM 224 -# define EC_F_COMPUTE_WNAF 143 -# define EC_F_D2I_ECPARAMETERS 144 -# define EC_F_D2I_ECPKPARAMETERS 145 -# define EC_F_D2I_ECPRIVATEKEY 146 -# define EC_F_DO_EC_KEY_PRINT 221 -# define EC_F_ECDH_CMS_DECRYPT 238 -# define EC_F_ECDH_CMS_SET_SHARED_INFO 239 -# define EC_F_ECKEY_PARAM2TYPE 223 -# define EC_F_ECKEY_PARAM_DECODE 212 -# define EC_F_ECKEY_PRIV_DECODE 213 -# define EC_F_ECKEY_PRIV_ENCODE 214 -# define EC_F_ECKEY_PUB_DECODE 215 -# define EC_F_ECKEY_PUB_ENCODE 216 -# define EC_F_ECKEY_TYPE2PARAM 220 -# define EC_F_ECPARAMETERS_PRINT 147 -# define EC_F_ECPARAMETERS_PRINT_FP 148 -# define EC_F_ECPKPARAMETERS_PRINT 149 -# define EC_F_ECPKPARAMETERS_PRINT_FP 150 -# define EC_F_ECP_NIST_MOD_192 203 -# define EC_F_ECP_NIST_MOD_224 204 -# define EC_F_ECP_NIST_MOD_256 205 -# define EC_F_ECP_NIST_MOD_521 206 -# define EC_F_EC_ASN1_GROUP2CURVE 153 -# define EC_F_EC_ASN1_GROUP2FIELDID 154 -# define EC_F_EC_ASN1_GROUP2PARAMETERS 155 -# define EC_F_EC_ASN1_GROUP2PKPARAMETERS 156 -# define EC_F_EC_ASN1_PARAMETERS2GROUP 157 -# define EC_F_EC_ASN1_PKPARAMETERS2GROUP 158 -# define EC_F_EC_EX_DATA_SET_DATA 211 -# define EC_F_EC_GF2M_MONTGOMERY_POINT_MULTIPLY 208 -# define EC_F_EC_GF2M_SIMPLE_GROUP_CHECK_DISCRIMINANT 159 -# define EC_F_EC_GF2M_SIMPLE_GROUP_SET_CURVE 195 -# define EC_F_EC_GF2M_SIMPLE_OCT2POINT 160 -# define EC_F_EC_GF2M_SIMPLE_POINT2OCT 161 -# define EC_F_EC_GF2M_SIMPLE_POINT_GET_AFFINE_COORDINATES 162 -# define EC_F_EC_GF2M_SIMPLE_POINT_SET_AFFINE_COORDINATES 163 -# define EC_F_EC_GF2M_SIMPLE_SET_COMPRESSED_COORDINATES 164 -# define EC_F_EC_GFP_MONT_FIELD_DECODE 133 -# define EC_F_EC_GFP_MONT_FIELD_ENCODE 134 -# define EC_F_EC_GFP_MONT_FIELD_MUL 131 -# define EC_F_EC_GFP_MONT_FIELD_SET_TO_ONE 209 -# define EC_F_EC_GFP_MONT_FIELD_SQR 132 -# define EC_F_EC_GFP_MONT_GROUP_SET_CURVE 189 -# define EC_F_EC_GFP_MONT_GROUP_SET_CURVE_GFP 135 -# define EC_F_EC_GFP_NISTP224_GROUP_SET_CURVE 225 -# define EC_F_EC_GFP_NISTP224_POINTS_MUL 228 -# define EC_F_EC_GFP_NISTP224_POINT_GET_AFFINE_COORDINATES 226 -# define EC_F_EC_GFP_NISTP256_GROUP_SET_CURVE 230 -# define EC_F_EC_GFP_NISTP256_POINTS_MUL 231 -# define EC_F_EC_GFP_NISTP256_POINT_GET_AFFINE_COORDINATES 232 -# define EC_F_EC_GFP_NISTP521_GROUP_SET_CURVE 233 -# define EC_F_EC_GFP_NISTP521_POINTS_MUL 234 -# define EC_F_EC_GFP_NISTP521_POINT_GET_AFFINE_COORDINATES 235 -# define EC_F_EC_GFP_NIST_FIELD_MUL 200 -# define EC_F_EC_GFP_NIST_FIELD_SQR 201 -# define EC_F_EC_GFP_NIST_GROUP_SET_CURVE 202 -# define EC_F_EC_GFP_SIMPLE_GROUP_CHECK_DISCRIMINANT 165 -# define EC_F_EC_GFP_SIMPLE_GROUP_SET_CURVE 166 -# define EC_F_EC_GFP_SIMPLE_GROUP_SET_CURVE_GFP 100 -# define EC_F_EC_GFP_SIMPLE_GROUP_SET_GENERATOR 101 -# define EC_F_EC_GFP_SIMPLE_MAKE_AFFINE 102 -# define EC_F_EC_GFP_SIMPLE_OCT2POINT 103 -# define EC_F_EC_GFP_SIMPLE_POINT2OCT 104 -# define EC_F_EC_GFP_SIMPLE_POINTS_MAKE_AFFINE 137 -# define EC_F_EC_GFP_SIMPLE_POINT_GET_AFFINE_COORDINATES 167 -# define EC_F_EC_GFP_SIMPLE_POINT_GET_AFFINE_COORDINATES_GFP 105 -# define EC_F_EC_GFP_SIMPLE_POINT_SET_AFFINE_COORDINATES 168 -# define EC_F_EC_GFP_SIMPLE_POINT_SET_AFFINE_COORDINATES_GFP 128 -# define EC_F_EC_GFP_SIMPLE_SET_COMPRESSED_COORDINATES 169 -# define EC_F_EC_GFP_SIMPLE_SET_COMPRESSED_COORDINATES_GFP 129 -# define EC_F_EC_GROUP_CHECK 170 -# define EC_F_EC_GROUP_CHECK_DISCRIMINANT 171 -# define EC_F_EC_GROUP_COPY 106 -# define EC_F_EC_GROUP_GET0_GENERATOR 139 -# define EC_F_EC_GROUP_GET_COFACTOR 140 -# define EC_F_EC_GROUP_GET_CURVE_GF2M 172 -# define EC_F_EC_GROUP_GET_CURVE_GFP 130 -# define EC_F_EC_GROUP_GET_DEGREE 173 -# define EC_F_EC_GROUP_GET_ORDER 141 -# define EC_F_EC_GROUP_GET_PENTANOMIAL_BASIS 193 -# define EC_F_EC_GROUP_GET_TRINOMIAL_BASIS 194 -# define EC_F_EC_GROUP_NEW 108 -# define EC_F_EC_GROUP_NEW_BY_CURVE_NAME 174 -# define EC_F_EC_GROUP_NEW_FROM_DATA 175 -# define EC_F_EC_GROUP_PRECOMPUTE_MULT 142 -# define EC_F_EC_GROUP_SET_CURVE_GF2M 176 -# define EC_F_EC_GROUP_SET_CURVE_GFP 109 -# define EC_F_EC_GROUP_SET_EXTRA_DATA 110 -# define EC_F_EC_GROUP_SET_GENERATOR 111 -# define EC_F_EC_KEY_CHECK_KEY 177 -# define EC_F_EC_KEY_COPY 178 -# define EC_F_EC_KEY_GENERATE_KEY 179 -# define EC_F_EC_KEY_NEW 182 -# define EC_F_EC_KEY_PRINT 180 -# define EC_F_EC_KEY_PRINT_FP 181 -# define EC_F_EC_KEY_SET_PUBLIC_KEY_AFFINE_COORDINATES 229 -# define EC_F_EC_POINTS_MAKE_AFFINE 136 -# define EC_F_EC_POINT_ADD 112 -# define EC_F_EC_POINT_CMP 113 -# define EC_F_EC_POINT_COPY 114 -# define EC_F_EC_POINT_DBL 115 -# define EC_F_EC_POINT_GET_AFFINE_COORDINATES_GF2M 183 -# define EC_F_EC_POINT_GET_AFFINE_COORDINATES_GFP 116 -# define EC_F_EC_POINT_GET_JPROJECTIVE_COORDINATES_GFP 117 -# define EC_F_EC_POINT_INVERT 210 -# define EC_F_EC_POINT_IS_AT_INFINITY 118 -# define EC_F_EC_POINT_IS_ON_CURVE 119 -# define EC_F_EC_POINT_MAKE_AFFINE 120 -# define EC_F_EC_POINT_MUL 184 -# define EC_F_EC_POINT_NEW 121 -# define EC_F_EC_POINT_OCT2POINT 122 -# define EC_F_EC_POINT_POINT2OCT 123 -# define EC_F_EC_POINT_SET_AFFINE_COORDINATES_GF2M 185 -# define EC_F_EC_POINT_SET_AFFINE_COORDINATES_GFP 124 -# define EC_F_EC_POINT_SET_COMPRESSED_COORDINATES_GF2M 186 -# define EC_F_EC_POINT_SET_COMPRESSED_COORDINATES_GFP 125 -# define EC_F_EC_POINT_SET_JPROJECTIVE_COORDINATES_GFP 126 -# define EC_F_EC_POINT_SET_TO_INFINITY 127 -# define EC_F_EC_PRE_COMP_DUP 207 -# define EC_F_EC_PRE_COMP_NEW 196 -# define EC_F_EC_WNAF_MUL 187 -# define EC_F_EC_WNAF_PRECOMPUTE_MULT 188 -# define EC_F_I2D_ECPARAMETERS 190 -# define EC_F_I2D_ECPKPARAMETERS 191 -# define EC_F_I2D_ECPRIVATEKEY 192 -# define EC_F_I2O_ECPUBLICKEY 151 -# define EC_F_NISTP224_PRE_COMP_NEW 227 -# define EC_F_NISTP256_PRE_COMP_NEW 236 -# define EC_F_NISTP521_PRE_COMP_NEW 237 -# define EC_F_ECP_NISTZ256_GET_AFFINE 240 -# define EC_F_ECP_NISTZ256_POINTS_MUL 241 -# define EC_F_ECP_NISTZ256_WINDOWED_MUL 242 -# define EC_F_ECP_NISTZ256_MULT_PRECOMPUTE 243 -# define EC_F_ECP_NISTZ256_PRE_COMP_NEW 244 -# define EC_F_O2I_ECPUBLICKEY 152 -# define EC_F_OLD_EC_PRIV_DECODE 222 -# define EC_F_PKEY_EC_CTRL 197 -# define EC_F_PKEY_EC_CTRL_STR 198 -# define EC_F_PKEY_EC_DERIVE 217 -# define EC_F_PKEY_EC_KEYGEN 199 -# define EC_F_PKEY_EC_PARAMGEN 219 -# define EC_F_PKEY_EC_SIGN 218 - -/* Reason codes. */ -# define EC_R_ASN1_ERROR 115 -# define EC_R_ASN1_UNKNOWN_FIELD 116 -# define EC_R_BIGNUM_OUT_OF_RANGE 144 -# define EC_R_BUFFER_TOO_SMALL 100 -# define EC_R_COORDINATES_OUT_OF_RANGE 146 -# define EC_R_D2I_ECPKPARAMETERS_FAILURE 117 -# define EC_R_DECODE_ERROR 142 -# define EC_R_DISCRIMINANT_IS_ZERO 118 -# define EC_R_EC_GROUP_NEW_BY_NAME_FAILURE 119 -# define EC_R_FIELD_TOO_LARGE 143 -# define EC_R_GF2M_NOT_SUPPORTED 147 -# define EC_R_GROUP2PKPARAMETERS_FAILURE 120 -# define EC_R_I2D_ECPKPARAMETERS_FAILURE 121 -# define EC_R_INCOMPATIBLE_OBJECTS 101 -# define EC_R_INVALID_ARGUMENT 112 -# define EC_R_INVALID_COMPRESSED_POINT 110 -# define EC_R_INVALID_COMPRESSION_BIT 109 -# define EC_R_INVALID_CURVE 141 -# define EC_R_INVALID_DIGEST 151 -# define EC_R_INVALID_DIGEST_TYPE 138 -# define EC_R_INVALID_ENCODING 102 -# define EC_R_INVALID_FIELD 103 -# define EC_R_INVALID_FORM 104 -# define EC_R_INVALID_GROUP_ORDER 122 -# define EC_R_INVALID_PENTANOMIAL_BASIS 132 -# define EC_R_INVALID_PRIVATE_KEY 123 -# define EC_R_INVALID_TRINOMIAL_BASIS 137 -# define EC_R_KDF_PARAMETER_ERROR 148 -# define EC_R_KEYS_NOT_SET 140 -# define EC_R_MISSING_PARAMETERS 124 -# define EC_R_MISSING_PRIVATE_KEY 125 -# define EC_R_NOT_A_NIST_PRIME 135 -# define EC_R_NOT_A_SUPPORTED_NIST_PRIME 136 -# define EC_R_NOT_IMPLEMENTED 126 -# define EC_R_NOT_INITIALIZED 111 -# define EC_R_NO_FIELD_MOD 133 -# define EC_R_NO_PARAMETERS_SET 139 -# define EC_R_PASSED_NULL_PARAMETER 134 -# define EC_R_PEER_KEY_ERROR 149 -# define EC_R_PKPARAMETERS2GROUP_FAILURE 127 -# define EC_R_POINT_AT_INFINITY 106 -# define EC_R_POINT_IS_NOT_ON_CURVE 107 -# define EC_R_SHARED_INFO_ERROR 150 -# define EC_R_SLOT_FULL 108 -# define EC_R_UNDEFINED_GENERATOR 113 -# define EC_R_UNDEFINED_ORDER 128 -# define EC_R_UNKNOWN_GROUP 129 -# define EC_R_UNKNOWN_ORDER 114 -# define EC_R_UNSUPPORTED_FIELD 131 -# define EC_R_WRONG_CURVE_PARAMETERS 145 -# define EC_R_WRONG_ORDER 130 - -#ifdef __cplusplus -} -#endif -#endif diff --git a/ext/openssl-win64/inc32/openssl/ecdh.h b/ext/openssl-win64/inc32/openssl/ecdh.h deleted file mode 100644 index 25348b30..00000000 --- a/ext/openssl-win64/inc32/openssl/ecdh.h +++ /dev/null @@ -1,134 +0,0 @@ -/* crypto/ecdh/ecdh.h */ -/* ==================================================================== - * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED. - * - * The Elliptic Curve Public-Key Crypto Library (ECC Code) included - * herein is developed by SUN MICROSYSTEMS, INC., and is contributed - * to the OpenSSL project. - * - * The ECC Code is licensed pursuant to the OpenSSL open source - * license provided below. - * - * The ECDH software is originally written by Douglas Stebila of - * Sun Microsystems Laboratories. - * - */ -/* ==================================================================== - * Copyright (c) 2000-2002 The OpenSSL Project. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. All advertising materials mentioning features or use of this - * software must display the following acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" - * - * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * licensing@OpenSSL.org. - * - * 5. Products derived from this software may not be called "OpenSSL" - * nor may "OpenSSL" appear in their names without prior written - * permission of the OpenSSL Project. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" - * - * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY - * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * ==================================================================== - * - * This product includes cryptographic software written by Eric Young - * (eay@cryptsoft.com). This product includes software written by Tim - * Hudson (tjh@cryptsoft.com). - * - */ -#ifndef HEADER_ECDH_H -# define HEADER_ECDH_H - -# include - -# ifdef OPENSSL_NO_ECDH -# error ECDH is disabled. -# endif - -# include -# include -# ifndef OPENSSL_NO_DEPRECATED -# include -# endif - -#ifdef __cplusplus -extern "C" { -#endif - -# define EC_FLAG_COFACTOR_ECDH 0x1000 - -const ECDH_METHOD *ECDH_OpenSSL(void); - -void ECDH_set_default_method(const ECDH_METHOD *); -const ECDH_METHOD *ECDH_get_default_method(void); -int ECDH_set_method(EC_KEY *, const ECDH_METHOD *); - -int ECDH_compute_key(void *out, size_t outlen, const EC_POINT *pub_key, - EC_KEY *ecdh, void *(*KDF) (const void *in, size_t inlen, - void *out, size_t *outlen)); - -int ECDH_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new - *new_func, CRYPTO_EX_dup *dup_func, - CRYPTO_EX_free *free_func); -int ECDH_set_ex_data(EC_KEY *d, int idx, void *arg); -void *ECDH_get_ex_data(EC_KEY *d, int idx); - -int ECDH_KDF_X9_62(unsigned char *out, size_t outlen, - const unsigned char *Z, size_t Zlen, - const unsigned char *sinfo, size_t sinfolen, - const EVP_MD *md); - -/* BEGIN ERROR CODES */ -/* - * The following lines are auto generated by the script mkerr.pl. Any changes - * made after this point may be overwritten when the script is next run. - */ -void ERR_load_ECDH_strings(void); - -/* Error codes for the ECDH functions. */ - -/* Function codes. */ -# define ECDH_F_ECDH_CHECK 102 -# define ECDH_F_ECDH_COMPUTE_KEY 100 -# define ECDH_F_ECDH_DATA_NEW_METHOD 101 - -/* Reason codes. */ -# define ECDH_R_KDF_FAILED 102 -# define ECDH_R_NON_FIPS_METHOD 103 -# define ECDH_R_NO_PRIVATE_VALUE 100 -# define ECDH_R_POINT_ARITHMETIC_FAILURE 101 - -#ifdef __cplusplus -} -#endif -#endif diff --git a/ext/openssl-win64/inc32/openssl/ecdsa.h b/ext/openssl-win64/inc32/openssl/ecdsa.h deleted file mode 100644 index c4016ac3..00000000 --- a/ext/openssl-win64/inc32/openssl/ecdsa.h +++ /dev/null @@ -1,335 +0,0 @@ -/* crypto/ecdsa/ecdsa.h */ -/** - * \file crypto/ecdsa/ecdsa.h Include file for the OpenSSL ECDSA functions - * \author Written by Nils Larsch for the OpenSSL project - */ -/* ==================================================================== - * Copyright (c) 2000-2005 The OpenSSL Project. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. All advertising materials mentioning features or use of this - * software must display the following acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" - * - * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * licensing@OpenSSL.org. - * - * 5. Products derived from this software may not be called "OpenSSL" - * nor may "OpenSSL" appear in their names without prior written - * permission of the OpenSSL Project. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" - * - * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY - * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * ==================================================================== - * - * This product includes cryptographic software written by Eric Young - * (eay@cryptsoft.com). This product includes software written by Tim - * Hudson (tjh@cryptsoft.com). - * - */ -#ifndef HEADER_ECDSA_H -# define HEADER_ECDSA_H - -# include - -# ifdef OPENSSL_NO_ECDSA -# error ECDSA is disabled. -# endif - -# include -# include -# ifndef OPENSSL_NO_DEPRECATED -# include -# endif - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct ECDSA_SIG_st { - BIGNUM *r; - BIGNUM *s; -} ECDSA_SIG; - -/** Allocates and initialize a ECDSA_SIG structure - * \return pointer to a ECDSA_SIG structure or NULL if an error occurred - */ -ECDSA_SIG *ECDSA_SIG_new(void); - -/** frees a ECDSA_SIG structure - * \param sig pointer to the ECDSA_SIG structure - */ -void ECDSA_SIG_free(ECDSA_SIG *sig); - -/** DER encode content of ECDSA_SIG object (note: this function modifies *pp - * (*pp += length of the DER encoded signature)). - * \param sig pointer to the ECDSA_SIG object - * \param pp pointer to a unsigned char pointer for the output or NULL - * \return the length of the DER encoded ECDSA_SIG object or 0 - */ -int i2d_ECDSA_SIG(const ECDSA_SIG *sig, unsigned char **pp); - -/** Decodes a DER encoded ECDSA signature (note: this function changes *pp - * (*pp += len)). - * \param sig pointer to ECDSA_SIG pointer (may be NULL) - * \param pp memory buffer with the DER encoded signature - * \param len length of the buffer - * \return pointer to the decoded ECDSA_SIG structure (or NULL) - */ -ECDSA_SIG *d2i_ECDSA_SIG(ECDSA_SIG **sig, const unsigned char **pp, long len); - -/** Computes the ECDSA signature of the given hash value using - * the supplied private key and returns the created signature. - * \param dgst pointer to the hash value - * \param dgst_len length of the hash value - * \param eckey EC_KEY object containing a private EC key - * \return pointer to a ECDSA_SIG structure or NULL if an error occurred - */ -ECDSA_SIG *ECDSA_do_sign(const unsigned char *dgst, int dgst_len, - EC_KEY *eckey); - -/** Computes ECDSA signature of a given hash value using the supplied - * private key (note: sig must point to ECDSA_size(eckey) bytes of memory). - * \param dgst pointer to the hash value to sign - * \param dgstlen length of the hash value - * \param kinv BIGNUM with a pre-computed inverse k (optional) - * \param rp BIGNUM with a pre-computed rp value (optioanl), - * see ECDSA_sign_setup - * \param eckey EC_KEY object containing a private EC key - * \return pointer to a ECDSA_SIG structure or NULL if an error occurred - */ -ECDSA_SIG *ECDSA_do_sign_ex(const unsigned char *dgst, int dgstlen, - const BIGNUM *kinv, const BIGNUM *rp, - EC_KEY *eckey); - -/** Verifies that the supplied signature is a valid ECDSA - * signature of the supplied hash value using the supplied public key. - * \param dgst pointer to the hash value - * \param dgst_len length of the hash value - * \param sig ECDSA_SIG structure - * \param eckey EC_KEY object containing a public EC key - * \return 1 if the signature is valid, 0 if the signature is invalid - * and -1 on error - */ -int ECDSA_do_verify(const unsigned char *dgst, int dgst_len, - const ECDSA_SIG *sig, EC_KEY *eckey); - -const ECDSA_METHOD *ECDSA_OpenSSL(void); - -/** Sets the default ECDSA method - * \param meth new default ECDSA_METHOD - */ -void ECDSA_set_default_method(const ECDSA_METHOD *meth); - -/** Returns the default ECDSA method - * \return pointer to ECDSA_METHOD structure containing the default method - */ -const ECDSA_METHOD *ECDSA_get_default_method(void); - -/** Sets method to be used for the ECDSA operations - * \param eckey EC_KEY object - * \param meth new method - * \return 1 on success and 0 otherwise - */ -int ECDSA_set_method(EC_KEY *eckey, const ECDSA_METHOD *meth); - -/** Returns the maximum length of the DER encoded signature - * \param eckey EC_KEY object - * \return numbers of bytes required for the DER encoded signature - */ -int ECDSA_size(const EC_KEY *eckey); - -/** Precompute parts of the signing operation - * \param eckey EC_KEY object containing a private EC key - * \param ctx BN_CTX object (optional) - * \param kinv BIGNUM pointer for the inverse of k - * \param rp BIGNUM pointer for x coordinate of k * generator - * \return 1 on success and 0 otherwise - */ -int ECDSA_sign_setup(EC_KEY *eckey, BN_CTX *ctx, BIGNUM **kinv, BIGNUM **rp); - -/** Computes ECDSA signature of a given hash value using the supplied - * private key (note: sig must point to ECDSA_size(eckey) bytes of memory). - * \param type this parameter is ignored - * \param dgst pointer to the hash value to sign - * \param dgstlen length of the hash value - * \param sig memory for the DER encoded created signature - * \param siglen pointer to the length of the returned signature - * \param eckey EC_KEY object containing a private EC key - * \return 1 on success and 0 otherwise - */ -int ECDSA_sign(int type, const unsigned char *dgst, int dgstlen, - unsigned char *sig, unsigned int *siglen, EC_KEY *eckey); - -/** Computes ECDSA signature of a given hash value using the supplied - * private key (note: sig must point to ECDSA_size(eckey) bytes of memory). - * \param type this parameter is ignored - * \param dgst pointer to the hash value to sign - * \param dgstlen length of the hash value - * \param sig buffer to hold the DER encoded signature - * \param siglen pointer to the length of the returned signature - * \param kinv BIGNUM with a pre-computed inverse k (optional) - * \param rp BIGNUM with a pre-computed rp value (optioanl), - * see ECDSA_sign_setup - * \param eckey EC_KEY object containing a private EC key - * \return 1 on success and 0 otherwise - */ -int ECDSA_sign_ex(int type, const unsigned char *dgst, int dgstlen, - unsigned char *sig, unsigned int *siglen, - const BIGNUM *kinv, const BIGNUM *rp, EC_KEY *eckey); - -/** Verifies that the given signature is valid ECDSA signature - * of the supplied hash value using the specified public key. - * \param type this parameter is ignored - * \param dgst pointer to the hash value - * \param dgstlen length of the hash value - * \param sig pointer to the DER encoded signature - * \param siglen length of the DER encoded signature - * \param eckey EC_KEY object containing a public EC key - * \return 1 if the signature is valid, 0 if the signature is invalid - * and -1 on error - */ -int ECDSA_verify(int type, const unsigned char *dgst, int dgstlen, - const unsigned char *sig, int siglen, EC_KEY *eckey); - -/* the standard ex_data functions */ -int ECDSA_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new - *new_func, CRYPTO_EX_dup *dup_func, - CRYPTO_EX_free *free_func); -int ECDSA_set_ex_data(EC_KEY *d, int idx, void *arg); -void *ECDSA_get_ex_data(EC_KEY *d, int idx); - -/** Allocates and initialize a ECDSA_METHOD structure - * \param ecdsa_method pointer to ECDSA_METHOD to copy. (May be NULL) - * \return pointer to a ECDSA_METHOD structure or NULL if an error occurred - */ - -ECDSA_METHOD *ECDSA_METHOD_new(ECDSA_METHOD *ecdsa_method); - -/** frees a ECDSA_METHOD structure - * \param ecdsa_method pointer to the ECDSA_METHOD structure - */ -void ECDSA_METHOD_free(ECDSA_METHOD *ecdsa_method); - -/** Sets application specific data in the ECDSA_METHOD - * \param ecdsa_method pointer to existing ECDSA_METHOD - * \param app application specific data to set - */ - -void ECDSA_METHOD_set_app_data(ECDSA_METHOD *ecdsa_method, void *app); - -/** Returns application specific data from a ECDSA_METHOD structure - * \param ecdsa_method pointer to ECDSA_METHOD structure - * \return pointer to application specific data. - */ - -void *ECDSA_METHOD_get_app_data(ECDSA_METHOD *ecdsa_method); - -/** Set the ECDSA_do_sign function in the ECDSA_METHOD - * \param ecdsa_method pointer to existing ECDSA_METHOD - * \param ecdsa_do_sign a funtion of type ECDSA_do_sign - */ - -void ECDSA_METHOD_set_sign(ECDSA_METHOD *ecdsa_method, - ECDSA_SIG *(*ecdsa_do_sign) (const unsigned char - *dgst, int dgst_len, - const BIGNUM *inv, - const BIGNUM *rp, - EC_KEY *eckey)); - -/** Set the ECDSA_sign_setup function in the ECDSA_METHOD - * \param ecdsa_method pointer to existing ECDSA_METHOD - * \param ecdsa_sign_setup a funtion of type ECDSA_sign_setup - */ - -void ECDSA_METHOD_set_sign_setup(ECDSA_METHOD *ecdsa_method, - int (*ecdsa_sign_setup) (EC_KEY *eckey, - BN_CTX *ctx, - BIGNUM **kinv, - BIGNUM **r)); - -/** Set the ECDSA_do_verify function in the ECDSA_METHOD - * \param ecdsa_method pointer to existing ECDSA_METHOD - * \param ecdsa_do_verify a funtion of type ECDSA_do_verify - */ - -void ECDSA_METHOD_set_verify(ECDSA_METHOD *ecdsa_method, - int (*ecdsa_do_verify) (const unsigned char - *dgst, int dgst_len, - const ECDSA_SIG *sig, - EC_KEY *eckey)); - -void ECDSA_METHOD_set_flags(ECDSA_METHOD *ecdsa_method, int flags); - -/** Set the flags field in the ECDSA_METHOD - * \param ecdsa_method pointer to existing ECDSA_METHOD - * \param flags flags value to set - */ - -void ECDSA_METHOD_set_name(ECDSA_METHOD *ecdsa_method, char *name); - -/** Set the name field in the ECDSA_METHOD - * \param ecdsa_method pointer to existing ECDSA_METHOD - * \param name name to set - */ - -/* BEGIN ERROR CODES */ -/* - * The following lines are auto generated by the script mkerr.pl. Any changes - * made after this point may be overwritten when the script is next run. - */ -void ERR_load_ECDSA_strings(void); - -/* Error codes for the ECDSA functions. */ - -/* Function codes. */ -# define ECDSA_F_ECDSA_CHECK 104 -# define ECDSA_F_ECDSA_DATA_NEW_METHOD 100 -# define ECDSA_F_ECDSA_DO_SIGN 101 -# define ECDSA_F_ECDSA_DO_VERIFY 102 -# define ECDSA_F_ECDSA_METHOD_NEW 105 -# define ECDSA_F_ECDSA_SIGN_SETUP 103 - -/* Reason codes. */ -# define ECDSA_R_BAD_SIGNATURE 100 -# define ECDSA_R_DATA_TOO_LARGE_FOR_KEY_SIZE 101 -# define ECDSA_R_ERR_EC_LIB 102 -# define ECDSA_R_MISSING_PARAMETERS 103 -# define ECDSA_R_NEED_NEW_SETUP_VALUES 106 -# define ECDSA_R_NON_FIPS_METHOD 107 -# define ECDSA_R_RANDOM_NUMBER_GENERATION_FAILED 104 -# define ECDSA_R_SIGNATURE_MALLOC_FAILED 105 - -#ifdef __cplusplus -} -#endif -#endif diff --git a/ext/openssl-win64/inc32/openssl/err.h b/ext/openssl-win64/inc32/openssl/err.h deleted file mode 100644 index 585aa8ba..00000000 --- a/ext/openssl-win64/inc32/openssl/err.h +++ /dev/null @@ -1,389 +0,0 @@ -/* crypto/err/err.h */ -/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) - * All rights reserved. - * - * This package is an SSL implementation written - * by Eric Young (eay@cryptsoft.com). - * The implementation was written so as to conform with Netscapes SSL. - * - * This library is free for commercial and non-commercial use as long as - * the following conditions are aheared to. The following conditions - * apply to all code found in this distribution, be it the RC4, RSA, - * lhash, DES, etc., code; not just the SSL code. The SSL documentation - * included with this distribution is covered by the same copyright terms - * except that the holder is Tim Hudson (tjh@cryptsoft.com). - * - * Copyright remains Eric Young's, and as such any Copyright notices in - * the code are not to be removed. - * If this package is used in a product, Eric Young should be given attribution - * as the author of the parts of the library used. - * This can be in the form of a textual message at program startup or - * in documentation (online or textual) provided with the package. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * "This product includes cryptographic software written by - * Eric Young (eay@cryptsoft.com)" - * The word 'cryptographic' can be left out if the rouines from the library - * being used are not cryptographic related :-). - * 4. If you include any Windows specific code (or a derivative thereof) from - * the apps directory (application code) you must include an acknowledgement: - * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" - * - * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * The licence and distribution terms for any publically available version or - * derivative of this code cannot be changed. i.e. this code cannot simply be - * copied and put under another distribution licence - * [including the GNU Public Licence.] - */ -/* ==================================================================== - * Copyright (c) 1998-2006 The OpenSSL Project. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. All advertising materials mentioning features or use of this - * software must display the following acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" - * - * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * openssl-core@openssl.org. - * - * 5. Products derived from this software may not be called "OpenSSL" - * nor may "OpenSSL" appear in their names without prior written - * permission of the OpenSSL Project. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit (http://www.openssl.org/)" - * - * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY - * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * ==================================================================== - * - * This product includes cryptographic software written by Eric Young - * (eay@cryptsoft.com). This product includes software written by Tim - * Hudson (tjh@cryptsoft.com). - * - */ - -#ifndef HEADER_ERR_H -# define HEADER_ERR_H - -# include - -# ifndef OPENSSL_NO_FP_API -# include -# include -# endif - -# include -# ifndef OPENSSL_NO_BIO -# include -# endif -# ifndef OPENSSL_NO_LHASH -# include -# endif - -#ifdef __cplusplus -extern "C" { -#endif - -# ifndef OPENSSL_NO_ERR -# define ERR_PUT_error(a,b,c,d,e) ERR_put_error(a,b,c,d,e) -# else -# define ERR_PUT_error(a,b,c,d,e) ERR_put_error(a,b,c,NULL,0) -# endif - -# include - -# define ERR_TXT_MALLOCED 0x01 -# define ERR_TXT_STRING 0x02 - -# define ERR_FLAG_MARK 0x01 - -# define ERR_NUM_ERRORS 16 -typedef struct err_state_st { - CRYPTO_THREADID tid; - int err_flags[ERR_NUM_ERRORS]; - unsigned long err_buffer[ERR_NUM_ERRORS]; - char *err_data[ERR_NUM_ERRORS]; - int err_data_flags[ERR_NUM_ERRORS]; - const char *err_file[ERR_NUM_ERRORS]; - int err_line[ERR_NUM_ERRORS]; - int top, bottom; -} ERR_STATE; - -/* library */ -# define ERR_LIB_NONE 1 -# define ERR_LIB_SYS 2 -# define ERR_LIB_BN 3 -# define ERR_LIB_RSA 4 -# define ERR_LIB_DH 5 -# define ERR_LIB_EVP 6 -# define ERR_LIB_BUF 7 -# define ERR_LIB_OBJ 8 -# define ERR_LIB_PEM 9 -# define ERR_LIB_DSA 10 -# define ERR_LIB_X509 11 -/* #define ERR_LIB_METH 12 */ -# define ERR_LIB_ASN1 13 -# define ERR_LIB_CONF 14 -# define ERR_LIB_CRYPTO 15 -# define ERR_LIB_EC 16 -# define ERR_LIB_SSL 20 -/* #define ERR_LIB_SSL23 21 */ -/* #define ERR_LIB_SSL2 22 */ -/* #define ERR_LIB_SSL3 23 */ -/* #define ERR_LIB_RSAREF 30 */ -/* #define ERR_LIB_PROXY 31 */ -# define ERR_LIB_BIO 32 -# define ERR_LIB_PKCS7 33 -# define ERR_LIB_X509V3 34 -# define ERR_LIB_PKCS12 35 -# define ERR_LIB_RAND 36 -# define ERR_LIB_DSO 37 -# define ERR_LIB_ENGINE 38 -# define ERR_LIB_OCSP 39 -# define ERR_LIB_UI 40 -# define ERR_LIB_COMP 41 -# define ERR_LIB_ECDSA 42 -# define ERR_LIB_ECDH 43 -# define ERR_LIB_STORE 44 -# define ERR_LIB_FIPS 45 -# define ERR_LIB_CMS 46 -# define ERR_LIB_TS 47 -# define ERR_LIB_HMAC 48 -# define ERR_LIB_JPAKE 49 - -# define ERR_LIB_USER 128 - -# define SYSerr(f,r) ERR_PUT_error(ERR_LIB_SYS,(f),(r),__FILE__,__LINE__) -# define BNerr(f,r) ERR_PUT_error(ERR_LIB_BN,(f),(r),__FILE__,__LINE__) -# define RSAerr(f,r) ERR_PUT_error(ERR_LIB_RSA,(f),(r),__FILE__,__LINE__) -# define DHerr(f,r) ERR_PUT_error(ERR_LIB_DH,(f),(r),__FILE__,__LINE__) -# define EVPerr(f,r) ERR_PUT_error(ERR_LIB_EVP,(f),(r),__FILE__,__LINE__) -# define BUFerr(f,r) ERR_PUT_error(ERR_LIB_BUF,(f),(r),__FILE__,__LINE__) -# define OBJerr(f,r) ERR_PUT_error(ERR_LIB_OBJ,(f),(r),__FILE__,__LINE__) -# define PEMerr(f,r) ERR_PUT_error(ERR_LIB_PEM,(f),(r),__FILE__,__LINE__) -# define DSAerr(f,r) ERR_PUT_error(ERR_LIB_DSA,(f),(r),__FILE__,__LINE__) -# define X509err(f,r) ERR_PUT_error(ERR_LIB_X509,(f),(r),__FILE__,__LINE__) -# define ASN1err(f,r) ERR_PUT_error(ERR_LIB_ASN1,(f),(r),__FILE__,__LINE__) -# define CONFerr(f,r) ERR_PUT_error(ERR_LIB_CONF,(f),(r),__FILE__,__LINE__) -# define CRYPTOerr(f,r) ERR_PUT_error(ERR_LIB_CRYPTO,(f),(r),__FILE__,__LINE__) -# define ECerr(f,r) ERR_PUT_error(ERR_LIB_EC,(f),(r),__FILE__,__LINE__) -# define SSLerr(f,r) ERR_PUT_error(ERR_LIB_SSL,(f),(r),__FILE__,__LINE__) -# define BIOerr(f,r) ERR_PUT_error(ERR_LIB_BIO,(f),(r),__FILE__,__LINE__) -# define PKCS7err(f,r) ERR_PUT_error(ERR_LIB_PKCS7,(f),(r),__FILE__,__LINE__) -# define X509V3err(f,r) ERR_PUT_error(ERR_LIB_X509V3,(f),(r),__FILE__,__LINE__) -# define PKCS12err(f,r) ERR_PUT_error(ERR_LIB_PKCS12,(f),(r),__FILE__,__LINE__) -# define RANDerr(f,r) ERR_PUT_error(ERR_LIB_RAND,(f),(r),__FILE__,__LINE__) -# define DSOerr(f,r) ERR_PUT_error(ERR_LIB_DSO,(f),(r),__FILE__,__LINE__) -# define ENGINEerr(f,r) ERR_PUT_error(ERR_LIB_ENGINE,(f),(r),__FILE__,__LINE__) -# define OCSPerr(f,r) ERR_PUT_error(ERR_LIB_OCSP,(f),(r),__FILE__,__LINE__) -# define UIerr(f,r) ERR_PUT_error(ERR_LIB_UI,(f),(r),__FILE__,__LINE__) -# define COMPerr(f,r) ERR_PUT_error(ERR_LIB_COMP,(f),(r),__FILE__,__LINE__) -# define ECDSAerr(f,r) ERR_PUT_error(ERR_LIB_ECDSA,(f),(r),__FILE__,__LINE__) -# define ECDHerr(f,r) ERR_PUT_error(ERR_LIB_ECDH,(f),(r),__FILE__,__LINE__) -# define STOREerr(f,r) ERR_PUT_error(ERR_LIB_STORE,(f),(r),__FILE__,__LINE__) -# define FIPSerr(f,r) ERR_PUT_error(ERR_LIB_FIPS,(f),(r),__FILE__,__LINE__) -# define CMSerr(f,r) ERR_PUT_error(ERR_LIB_CMS,(f),(r),__FILE__,__LINE__) -# define TSerr(f,r) ERR_PUT_error(ERR_LIB_TS,(f),(r),__FILE__,__LINE__) -# define HMACerr(f,r) ERR_PUT_error(ERR_LIB_HMAC,(f),(r),__FILE__,__LINE__) -# define JPAKEerr(f,r) ERR_PUT_error(ERR_LIB_JPAKE,(f),(r),__FILE__,__LINE__) - -/* - * Borland C seems too stupid to be able to shift and do longs in the - * pre-processor :-( - */ -# define ERR_PACK(l,f,r) (((((unsigned long)l)&0xffL)*0x1000000)| \ - ((((unsigned long)f)&0xfffL)*0x1000)| \ - ((((unsigned long)r)&0xfffL))) -# define ERR_GET_LIB(l) (int)((((unsigned long)l)>>24L)&0xffL) -# define ERR_GET_FUNC(l) (int)((((unsigned long)l)>>12L)&0xfffL) -# define ERR_GET_REASON(l) (int)((l)&0xfffL) -# define ERR_FATAL_ERROR(l) (int)((l)&ERR_R_FATAL) - -/* OS functions */ -# define SYS_F_FOPEN 1 -# define SYS_F_CONNECT 2 -# define SYS_F_GETSERVBYNAME 3 -# define SYS_F_SOCKET 4 -# define SYS_F_IOCTLSOCKET 5 -# define SYS_F_BIND 6 -# define SYS_F_LISTEN 7 -# define SYS_F_ACCEPT 8 -# define SYS_F_WSASTARTUP 9/* Winsock stuff */ -# define SYS_F_OPENDIR 10 -# define SYS_F_FREAD 11 - -/* reasons */ -# define ERR_R_SYS_LIB ERR_LIB_SYS/* 2 */ -# define ERR_R_BN_LIB ERR_LIB_BN/* 3 */ -# define ERR_R_RSA_LIB ERR_LIB_RSA/* 4 */ -# define ERR_R_DH_LIB ERR_LIB_DH/* 5 */ -# define ERR_R_EVP_LIB ERR_LIB_EVP/* 6 */ -# define ERR_R_BUF_LIB ERR_LIB_BUF/* 7 */ -# define ERR_R_OBJ_LIB ERR_LIB_OBJ/* 8 */ -# define ERR_R_PEM_LIB ERR_LIB_PEM/* 9 */ -# define ERR_R_DSA_LIB ERR_LIB_DSA/* 10 */ -# define ERR_R_X509_LIB ERR_LIB_X509/* 11 */ -# define ERR_R_ASN1_LIB ERR_LIB_ASN1/* 13 */ -# define ERR_R_CONF_LIB ERR_LIB_CONF/* 14 */ -# define ERR_R_CRYPTO_LIB ERR_LIB_CRYPTO/* 15 */ -# define ERR_R_EC_LIB ERR_LIB_EC/* 16 */ -# define ERR_R_SSL_LIB ERR_LIB_SSL/* 20 */ -# define ERR_R_BIO_LIB ERR_LIB_BIO/* 32 */ -# define ERR_R_PKCS7_LIB ERR_LIB_PKCS7/* 33 */ -# define ERR_R_X509V3_LIB ERR_LIB_X509V3/* 34 */ -# define ERR_R_PKCS12_LIB ERR_LIB_PKCS12/* 35 */ -# define ERR_R_RAND_LIB ERR_LIB_RAND/* 36 */ -# define ERR_R_DSO_LIB ERR_LIB_DSO/* 37 */ -# define ERR_R_ENGINE_LIB ERR_LIB_ENGINE/* 38 */ -# define ERR_R_OCSP_LIB ERR_LIB_OCSP/* 39 */ -# define ERR_R_UI_LIB ERR_LIB_UI/* 40 */ -# define ERR_R_COMP_LIB ERR_LIB_COMP/* 41 */ -# define ERR_R_ECDSA_LIB ERR_LIB_ECDSA/* 42 */ -# define ERR_R_ECDH_LIB ERR_LIB_ECDH/* 43 */ -# define ERR_R_STORE_LIB ERR_LIB_STORE/* 44 */ -# define ERR_R_TS_LIB ERR_LIB_TS/* 45 */ - -# define ERR_R_NESTED_ASN1_ERROR 58 -# define ERR_R_BAD_ASN1_OBJECT_HEADER 59 -# define ERR_R_BAD_GET_ASN1_OBJECT_CALL 60 -# define ERR_R_EXPECTING_AN_ASN1_SEQUENCE 61 -# define ERR_R_ASN1_LENGTH_MISMATCH 62 -# define ERR_R_MISSING_ASN1_EOS 63 - -/* fatal error */ -# define ERR_R_FATAL 64 -# define ERR_R_MALLOC_FAILURE (1|ERR_R_FATAL) -# define ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED (2|ERR_R_FATAL) -# define ERR_R_PASSED_NULL_PARAMETER (3|ERR_R_FATAL) -# define ERR_R_INTERNAL_ERROR (4|ERR_R_FATAL) -# define ERR_R_DISABLED (5|ERR_R_FATAL) - -/* - * 99 is the maximum possible ERR_R_... code, higher values are reserved for - * the individual libraries - */ - -typedef struct ERR_string_data_st { - unsigned long error; - const char *string; -} ERR_STRING_DATA; - -void ERR_put_error(int lib, int func, int reason, const char *file, int line); -void ERR_set_error_data(char *data, int flags); - -unsigned long ERR_get_error(void); -unsigned long ERR_get_error_line(const char **file, int *line); -unsigned long ERR_get_error_line_data(const char **file, int *line, - const char **data, int *flags); -unsigned long ERR_peek_error(void); -unsigned long ERR_peek_error_line(const char **file, int *line); -unsigned long ERR_peek_error_line_data(const char **file, int *line, - const char **data, int *flags); -unsigned long ERR_peek_last_error(void); -unsigned long ERR_peek_last_error_line(const char **file, int *line); -unsigned long ERR_peek_last_error_line_data(const char **file, int *line, - const char **data, int *flags); -void ERR_clear_error(void); -char *ERR_error_string(unsigned long e, char *buf); -void ERR_error_string_n(unsigned long e, char *buf, size_t len); -const char *ERR_lib_error_string(unsigned long e); -const char *ERR_func_error_string(unsigned long e); -const char *ERR_reason_error_string(unsigned long e); -void ERR_print_errors_cb(int (*cb) (const char *str, size_t len, void *u), - void *u); -# ifndef OPENSSL_NO_FP_API -void ERR_print_errors_fp(FILE *fp); -# endif -# ifndef OPENSSL_NO_BIO -void ERR_print_errors(BIO *bp); -# endif -void ERR_add_error_data(int num, ...); -void ERR_add_error_vdata(int num, va_list args); -void ERR_load_strings(int lib, ERR_STRING_DATA str[]); -void ERR_unload_strings(int lib, ERR_STRING_DATA str[]); -void ERR_load_ERR_strings(void); -void ERR_load_crypto_strings(void); -void ERR_free_strings(void); - -void ERR_remove_thread_state(const CRYPTO_THREADID *tid); -# ifndef OPENSSL_NO_DEPRECATED -void ERR_remove_state(unsigned long pid); /* if zero we look it up */ -# endif -ERR_STATE *ERR_get_state(void); - -# ifndef OPENSSL_NO_LHASH -LHASH_OF(ERR_STRING_DATA) *ERR_get_string_table(void); -LHASH_OF(ERR_STATE) *ERR_get_err_state_table(void); -void ERR_release_err_state_table(LHASH_OF(ERR_STATE) **hash); -# endif - -int ERR_get_next_error_library(void); - -int ERR_set_mark(void); -int ERR_pop_to_mark(void); - -/* Already defined in ossl_typ.h */ -/* typedef struct st_ERR_FNS ERR_FNS; */ -/* - * An application can use this function and provide the return value to - * loaded modules that should use the application's ERR state/functionality - */ -const ERR_FNS *ERR_get_implementation(void); -/* - * A loaded module should call this function prior to any ERR operations - * using the application's "ERR_FNS". - */ -int ERR_set_implementation(const ERR_FNS *fns); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/ext/openssl-win64/inc32/openssl/evp.h b/ext/openssl-win64/inc32/openssl/evp.h deleted file mode 100644 index 47abbac4..00000000 --- a/ext/openssl-win64/inc32/openssl/evp.h +++ /dev/null @@ -1,1519 +0,0 @@ -/* crypto/evp/evp.h */ -/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) - * All rights reserved. - * - * This package is an SSL implementation written - * by Eric Young (eay@cryptsoft.com). - * The implementation was written so as to conform with Netscapes SSL. - * - * This library is free for commercial and non-commercial use as long as - * the following conditions are aheared to. The following conditions - * apply to all code found in this distribution, be it the RC4, RSA, - * lhash, DES, etc., code; not just the SSL code. The SSL documentation - * included with this distribution is covered by the same copyright terms - * except that the holder is Tim Hudson (tjh@cryptsoft.com). - * - * Copyright remains Eric Young's, and as such any Copyright notices in - * the code are not to be removed. - * If this package is used in a product, Eric Young should be given attribution - * as the author of the parts of the library used. - * This can be in the form of a textual message at program startup or - * in documentation (online or textual) provided with the package. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * "This product includes cryptographic software written by - * Eric Young (eay@cryptsoft.com)" - * The word 'cryptographic' can be left out if the rouines from the library - * being used are not cryptographic related :-). - * 4. If you include any Windows specific code (or a derivative thereof) from - * the apps directory (application code) you must include an acknowledgement: - * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" - * - * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * The licence and distribution terms for any publically available version or - * derivative of this code cannot be changed. i.e. this code cannot simply be - * copied and put under another distribution licence - * [including the GNU Public Licence.] - */ - -#ifndef HEADER_ENVELOPE_H -# define HEADER_ENVELOPE_H - -# ifdef OPENSSL_ALGORITHM_DEFINES -# include -# else -# define OPENSSL_ALGORITHM_DEFINES -# include -# undef OPENSSL_ALGORITHM_DEFINES -# endif - -# include - -# include - -# ifndef OPENSSL_NO_BIO -# include -# endif - -/*- -#define EVP_RC2_KEY_SIZE 16 -#define EVP_RC4_KEY_SIZE 16 -#define EVP_BLOWFISH_KEY_SIZE 16 -#define EVP_CAST5_KEY_SIZE 16 -#define EVP_RC5_32_12_16_KEY_SIZE 16 -*/ -# define EVP_MAX_MD_SIZE 64/* longest known is SHA512 */ -# define EVP_MAX_KEY_LENGTH 64 -# define EVP_MAX_IV_LENGTH 16 -# define EVP_MAX_BLOCK_LENGTH 32 - -# define PKCS5_SALT_LEN 8 -/* Default PKCS#5 iteration count */ -# define PKCS5_DEFAULT_ITER 2048 - -# include - -# define EVP_PK_RSA 0x0001 -# define EVP_PK_DSA 0x0002 -# define EVP_PK_DH 0x0004 -# define EVP_PK_EC 0x0008 -# define EVP_PKT_SIGN 0x0010 -# define EVP_PKT_ENC 0x0020 -# define EVP_PKT_EXCH 0x0040 -# define EVP_PKS_RSA 0x0100 -# define EVP_PKS_DSA 0x0200 -# define EVP_PKS_EC 0x0400 -# define EVP_PKT_EXP 0x1000 /* <= 512 bit key */ - -# define EVP_PKEY_NONE NID_undef -# define EVP_PKEY_RSA NID_rsaEncryption -# define EVP_PKEY_RSA2 NID_rsa -# define EVP_PKEY_DSA NID_dsa -# define EVP_PKEY_DSA1 NID_dsa_2 -# define EVP_PKEY_DSA2 NID_dsaWithSHA -# define EVP_PKEY_DSA3 NID_dsaWithSHA1 -# define EVP_PKEY_DSA4 NID_dsaWithSHA1_2 -# define EVP_PKEY_DH NID_dhKeyAgreement -# define EVP_PKEY_DHX NID_dhpublicnumber -# define EVP_PKEY_EC NID_X9_62_id_ecPublicKey -# define EVP_PKEY_HMAC NID_hmac -# define EVP_PKEY_CMAC NID_cmac - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * Type needs to be a bit field Sub-type needs to be for variations on the - * method, as in, can it do arbitrary encryption.... - */ -struct evp_pkey_st { - int type; - int save_type; - int references; - const EVP_PKEY_ASN1_METHOD *ameth; - ENGINE *engine; - union { - char *ptr; -# ifndef OPENSSL_NO_RSA - struct rsa_st *rsa; /* RSA */ -# endif -# ifndef OPENSSL_NO_DSA - struct dsa_st *dsa; /* DSA */ -# endif -# ifndef OPENSSL_NO_DH - struct dh_st *dh; /* DH */ -# endif -# ifndef OPENSSL_NO_EC - struct ec_key_st *ec; /* ECC */ -# endif - } pkey; - int save_parameters; - STACK_OF(X509_ATTRIBUTE) *attributes; /* [ 0 ] */ -} /* EVP_PKEY */ ; - -# define EVP_PKEY_MO_SIGN 0x0001 -# define EVP_PKEY_MO_VERIFY 0x0002 -# define EVP_PKEY_MO_ENCRYPT 0x0004 -# define EVP_PKEY_MO_DECRYPT 0x0008 - -# ifndef EVP_MD -struct env_md_st { - int type; - int pkey_type; - int md_size; - unsigned long flags; - int (*init) (EVP_MD_CTX *ctx); - int (*update) (EVP_MD_CTX *ctx, const void *data, size_t count); - int (*final) (EVP_MD_CTX *ctx, unsigned char *md); - int (*copy) (EVP_MD_CTX *to, const EVP_MD_CTX *from); - int (*cleanup) (EVP_MD_CTX *ctx); - /* FIXME: prototype these some day */ - int (*sign) (int type, const unsigned char *m, unsigned int m_length, - unsigned char *sigret, unsigned int *siglen, void *key); - int (*verify) (int type, const unsigned char *m, unsigned int m_length, - const unsigned char *sigbuf, unsigned int siglen, - void *key); - int required_pkey_type[5]; /* EVP_PKEY_xxx */ - int block_size; - int ctx_size; /* how big does the ctx->md_data need to be */ - /* control function */ - int (*md_ctrl) (EVP_MD_CTX *ctx, int cmd, int p1, void *p2); -} /* EVP_MD */ ; - -typedef int evp_sign_method(int type, const unsigned char *m, - unsigned int m_length, unsigned char *sigret, - unsigned int *siglen, void *key); -typedef int evp_verify_method(int type, const unsigned char *m, - unsigned int m_length, - const unsigned char *sigbuf, - unsigned int siglen, void *key); - -/* digest can only handle a single block */ -# define EVP_MD_FLAG_ONESHOT 0x0001 - -/* - * digest is a "clone" digest used - * which is a copy of an existing - * one for a specific public key type. - * EVP_dss1() etc - */ -# define EVP_MD_FLAG_PKEY_DIGEST 0x0002 - -/* Digest uses EVP_PKEY_METHOD for signing instead of MD specific signing */ - -# define EVP_MD_FLAG_PKEY_METHOD_SIGNATURE 0x0004 - -/* DigestAlgorithmIdentifier flags... */ - -# define EVP_MD_FLAG_DIGALGID_MASK 0x0018 - -/* NULL or absent parameter accepted. Use NULL */ - -# define EVP_MD_FLAG_DIGALGID_NULL 0x0000 - -/* NULL or absent parameter accepted. Use NULL for PKCS#1 otherwise absent */ - -# define EVP_MD_FLAG_DIGALGID_ABSENT 0x0008 - -/* Custom handling via ctrl */ - -# define EVP_MD_FLAG_DIGALGID_CUSTOM 0x0018 - -/* Note if suitable for use in FIPS mode */ -# define EVP_MD_FLAG_FIPS 0x0400 - -/* Digest ctrls */ - -# define EVP_MD_CTRL_DIGALGID 0x1 -# define EVP_MD_CTRL_MICALG 0x2 - -/* Minimum Algorithm specific ctrl value */ - -# define EVP_MD_CTRL_ALG_CTRL 0x1000 - -# define EVP_PKEY_NULL_method NULL,NULL,{0,0,0,0} - -# ifndef OPENSSL_NO_DSA -# define EVP_PKEY_DSA_method (evp_sign_method *)DSA_sign, \ - (evp_verify_method *)DSA_verify, \ - {EVP_PKEY_DSA,EVP_PKEY_DSA2,EVP_PKEY_DSA3, \ - EVP_PKEY_DSA4,0} -# else -# define EVP_PKEY_DSA_method EVP_PKEY_NULL_method -# endif - -# ifndef OPENSSL_NO_ECDSA -# define EVP_PKEY_ECDSA_method (evp_sign_method *)ECDSA_sign, \ - (evp_verify_method *)ECDSA_verify, \ - {EVP_PKEY_EC,0,0,0} -# else -# define EVP_PKEY_ECDSA_method EVP_PKEY_NULL_method -# endif - -# ifndef OPENSSL_NO_RSA -# define EVP_PKEY_RSA_method (evp_sign_method *)RSA_sign, \ - (evp_verify_method *)RSA_verify, \ - {EVP_PKEY_RSA,EVP_PKEY_RSA2,0,0} -# define EVP_PKEY_RSA_ASN1_OCTET_STRING_method \ - (evp_sign_method *)RSA_sign_ASN1_OCTET_STRING, \ - (evp_verify_method *)RSA_verify_ASN1_OCTET_STRING, \ - {EVP_PKEY_RSA,EVP_PKEY_RSA2,0,0} -# else -# define EVP_PKEY_RSA_method EVP_PKEY_NULL_method -# define EVP_PKEY_RSA_ASN1_OCTET_STRING_method EVP_PKEY_NULL_method -# endif - -# endif /* !EVP_MD */ - -struct env_md_ctx_st { - const EVP_MD *digest; - ENGINE *engine; /* functional reference if 'digest' is - * ENGINE-provided */ - unsigned long flags; - void *md_data; - /* Public key context for sign/verify */ - EVP_PKEY_CTX *pctx; - /* Update function: usually copied from EVP_MD */ - int (*update) (EVP_MD_CTX *ctx, const void *data, size_t count); -} /* EVP_MD_CTX */ ; - -/* values for EVP_MD_CTX flags */ - -# define EVP_MD_CTX_FLAG_ONESHOT 0x0001/* digest update will be - * called once only */ -# define EVP_MD_CTX_FLAG_CLEANED 0x0002/* context has already been - * cleaned */ -# define EVP_MD_CTX_FLAG_REUSE 0x0004/* Don't free up ctx->md_data - * in EVP_MD_CTX_cleanup */ -/* - * FIPS and pad options are ignored in 1.0.0, definitions are here so we - * don't accidentally reuse the values for other purposes. - */ - -# define EVP_MD_CTX_FLAG_NON_FIPS_ALLOW 0x0008/* Allow use of non FIPS - * digest in FIPS mode */ - -/* - * The following PAD options are also currently ignored in 1.0.0, digest - * parameters are handled through EVP_DigestSign*() and EVP_DigestVerify*() - * instead. - */ -# define EVP_MD_CTX_FLAG_PAD_MASK 0xF0/* RSA mode to use */ -# define EVP_MD_CTX_FLAG_PAD_PKCS1 0x00/* PKCS#1 v1.5 mode */ -# define EVP_MD_CTX_FLAG_PAD_X931 0x10/* X9.31 mode */ -# define EVP_MD_CTX_FLAG_PAD_PSS 0x20/* PSS mode */ - -# define EVP_MD_CTX_FLAG_NO_INIT 0x0100/* Don't initialize md_data */ - -struct evp_cipher_st { - int nid; - int block_size; - /* Default value for variable length ciphers */ - int key_len; - int iv_len; - /* Various flags */ - unsigned long flags; - /* init key */ - int (*init) (EVP_CIPHER_CTX *ctx, const unsigned char *key, - const unsigned char *iv, int enc); - /* encrypt/decrypt data */ - int (*do_cipher) (EVP_CIPHER_CTX *ctx, unsigned char *out, - const unsigned char *in, size_t inl); - /* cleanup ctx */ - int (*cleanup) (EVP_CIPHER_CTX *); - /* how big ctx->cipher_data needs to be */ - int ctx_size; - /* Populate a ASN1_TYPE with parameters */ - int (*set_asn1_parameters) (EVP_CIPHER_CTX *, ASN1_TYPE *); - /* Get parameters from a ASN1_TYPE */ - int (*get_asn1_parameters) (EVP_CIPHER_CTX *, ASN1_TYPE *); - /* Miscellaneous operations */ - int (*ctrl) (EVP_CIPHER_CTX *, int type, int arg, void *ptr); - /* Application data */ - void *app_data; -} /* EVP_CIPHER */ ; - -/* Values for cipher flags */ - -/* Modes for ciphers */ - -# define EVP_CIPH_STREAM_CIPHER 0x0 -# define EVP_CIPH_ECB_MODE 0x1 -# define EVP_CIPH_CBC_MODE 0x2 -# define EVP_CIPH_CFB_MODE 0x3 -# define EVP_CIPH_OFB_MODE 0x4 -# define EVP_CIPH_CTR_MODE 0x5 -# define EVP_CIPH_GCM_MODE 0x6 -# define EVP_CIPH_CCM_MODE 0x7 -# define EVP_CIPH_XTS_MODE 0x10001 -# define EVP_CIPH_WRAP_MODE 0x10002 -# define EVP_CIPH_MODE 0xF0007 -/* Set if variable length cipher */ -# define EVP_CIPH_VARIABLE_LENGTH 0x8 -/* Set if the iv handling should be done by the cipher itself */ -# define EVP_CIPH_CUSTOM_IV 0x10 -/* Set if the cipher's init() function should be called if key is NULL */ -# define EVP_CIPH_ALWAYS_CALL_INIT 0x20 -/* Call ctrl() to init cipher parameters */ -# define EVP_CIPH_CTRL_INIT 0x40 -/* Don't use standard key length function */ -# define EVP_CIPH_CUSTOM_KEY_LENGTH 0x80 -/* Don't use standard block padding */ -# define EVP_CIPH_NO_PADDING 0x100 -/* cipher handles random key generation */ -# define EVP_CIPH_RAND_KEY 0x200 -/* cipher has its own additional copying logic */ -# define EVP_CIPH_CUSTOM_COPY 0x400 -/* Allow use default ASN1 get/set iv */ -# define EVP_CIPH_FLAG_DEFAULT_ASN1 0x1000 -/* Buffer length in bits not bytes: CFB1 mode only */ -# define EVP_CIPH_FLAG_LENGTH_BITS 0x2000 -/* Note if suitable for use in FIPS mode */ -# define EVP_CIPH_FLAG_FIPS 0x4000 -/* Allow non FIPS cipher in FIPS mode */ -# define EVP_CIPH_FLAG_NON_FIPS_ALLOW 0x8000 -/* - * Cipher handles any and all padding logic as well as finalisation. - */ -# define EVP_CIPH_FLAG_CUSTOM_CIPHER 0x100000 -# define EVP_CIPH_FLAG_AEAD_CIPHER 0x200000 -# define EVP_CIPH_FLAG_TLS1_1_MULTIBLOCK 0x400000 - -/* - * Cipher context flag to indicate we can handle wrap mode: if allowed in - * older applications it could overflow buffers. - */ - -# define EVP_CIPHER_CTX_FLAG_WRAP_ALLOW 0x1 - -/* ctrl() values */ - -# define EVP_CTRL_INIT 0x0 -# define EVP_CTRL_SET_KEY_LENGTH 0x1 -# define EVP_CTRL_GET_RC2_KEY_BITS 0x2 -# define EVP_CTRL_SET_RC2_KEY_BITS 0x3 -# define EVP_CTRL_GET_RC5_ROUNDS 0x4 -# define EVP_CTRL_SET_RC5_ROUNDS 0x5 -# define EVP_CTRL_RAND_KEY 0x6 -# define EVP_CTRL_PBE_PRF_NID 0x7 -# define EVP_CTRL_COPY 0x8 -# define EVP_CTRL_GCM_SET_IVLEN 0x9 -# define EVP_CTRL_GCM_GET_TAG 0x10 -# define EVP_CTRL_GCM_SET_TAG 0x11 -# define EVP_CTRL_GCM_SET_IV_FIXED 0x12 -# define EVP_CTRL_GCM_IV_GEN 0x13 -# define EVP_CTRL_CCM_SET_IVLEN EVP_CTRL_GCM_SET_IVLEN -# define EVP_CTRL_CCM_GET_TAG EVP_CTRL_GCM_GET_TAG -# define EVP_CTRL_CCM_SET_TAG EVP_CTRL_GCM_SET_TAG -# define EVP_CTRL_CCM_SET_L 0x14 -# define EVP_CTRL_CCM_SET_MSGLEN 0x15 -/* - * AEAD cipher deduces payload length and returns number of bytes required to - * store MAC and eventual padding. Subsequent call to EVP_Cipher even - * appends/verifies MAC. - */ -# define EVP_CTRL_AEAD_TLS1_AAD 0x16 -/* Used by composite AEAD ciphers, no-op in GCM, CCM... */ -# define EVP_CTRL_AEAD_SET_MAC_KEY 0x17 -/* Set the GCM invocation field, decrypt only */ -# define EVP_CTRL_GCM_SET_IV_INV 0x18 - -# define EVP_CTRL_TLS1_1_MULTIBLOCK_AAD 0x19 -# define EVP_CTRL_TLS1_1_MULTIBLOCK_ENCRYPT 0x1a -# define EVP_CTRL_TLS1_1_MULTIBLOCK_DECRYPT 0x1b -# define EVP_CTRL_TLS1_1_MULTIBLOCK_MAX_BUFSIZE 0x1c - -typedef struct { - unsigned char *out; - const unsigned char *inp; - size_t len; - unsigned int interleave; -} EVP_CTRL_TLS1_1_MULTIBLOCK_PARAM; - -/* GCM TLS constants */ -/* Length of fixed part of IV derived from PRF */ -# define EVP_GCM_TLS_FIXED_IV_LEN 4 -/* Length of explicit part of IV part of TLS records */ -# define EVP_GCM_TLS_EXPLICIT_IV_LEN 8 -/* Length of tag for TLS */ -# define EVP_GCM_TLS_TAG_LEN 16 - -typedef struct evp_cipher_info_st { - const EVP_CIPHER *cipher; - unsigned char iv[EVP_MAX_IV_LENGTH]; -} EVP_CIPHER_INFO; - -struct evp_cipher_ctx_st { - const EVP_CIPHER *cipher; - ENGINE *engine; /* functional reference if 'cipher' is - * ENGINE-provided */ - int encrypt; /* encrypt or decrypt */ - int buf_len; /* number we have left */ - unsigned char oiv[EVP_MAX_IV_LENGTH]; /* original iv */ - unsigned char iv[EVP_MAX_IV_LENGTH]; /* working iv */ - unsigned char buf[EVP_MAX_BLOCK_LENGTH]; /* saved partial block */ - int num; /* used by cfb/ofb/ctr mode */ - void *app_data; /* application stuff */ - int key_len; /* May change for variable length cipher */ - unsigned long flags; /* Various flags */ - void *cipher_data; /* per EVP data */ - int final_used; - int block_mask; - unsigned char final[EVP_MAX_BLOCK_LENGTH]; /* possible final block */ -} /* EVP_CIPHER_CTX */ ; - -typedef struct evp_Encode_Ctx_st { - /* number saved in a partial encode/decode */ - int num; - /* - * The length is either the output line length (in input bytes) or the - * shortest input line length that is ok. Once decoding begins, the - * length is adjusted up each time a longer line is decoded - */ - int length; - /* data to encode */ - unsigned char enc_data[80]; - /* number read on current line */ - int line_num; - int expect_nl; -} EVP_ENCODE_CTX; - -/* Password based encryption function */ -typedef int (EVP_PBE_KEYGEN) (EVP_CIPHER_CTX *ctx, const char *pass, - int passlen, ASN1_TYPE *param, - const EVP_CIPHER *cipher, const EVP_MD *md, - int en_de); - -# ifndef OPENSSL_NO_RSA -# define EVP_PKEY_assign_RSA(pkey,rsa) EVP_PKEY_assign((pkey),EVP_PKEY_RSA,\ - (char *)(rsa)) -# endif - -# ifndef OPENSSL_NO_DSA -# define EVP_PKEY_assign_DSA(pkey,dsa) EVP_PKEY_assign((pkey),EVP_PKEY_DSA,\ - (char *)(dsa)) -# endif - -# ifndef OPENSSL_NO_DH -# define EVP_PKEY_assign_DH(pkey,dh) EVP_PKEY_assign((pkey),EVP_PKEY_DH,\ - (char *)(dh)) -# endif - -# ifndef OPENSSL_NO_EC -# define EVP_PKEY_assign_EC_KEY(pkey,eckey) EVP_PKEY_assign((pkey),EVP_PKEY_EC,\ - (char *)(eckey)) -# endif - -/* Add some extra combinations */ -# define EVP_get_digestbynid(a) EVP_get_digestbyname(OBJ_nid2sn(a)) -# define EVP_get_digestbyobj(a) EVP_get_digestbynid(OBJ_obj2nid(a)) -# define EVP_get_cipherbynid(a) EVP_get_cipherbyname(OBJ_nid2sn(a)) -# define EVP_get_cipherbyobj(a) EVP_get_cipherbynid(OBJ_obj2nid(a)) - -int EVP_MD_type(const EVP_MD *md); -# define EVP_MD_nid(e) EVP_MD_type(e) -# define EVP_MD_name(e) OBJ_nid2sn(EVP_MD_nid(e)) -int EVP_MD_pkey_type(const EVP_MD *md); -int EVP_MD_size(const EVP_MD *md); -int EVP_MD_block_size(const EVP_MD *md); -unsigned long EVP_MD_flags(const EVP_MD *md); - -const EVP_MD *EVP_MD_CTX_md(const EVP_MD_CTX *ctx); -# define EVP_MD_CTX_size(e) EVP_MD_size(EVP_MD_CTX_md(e)) -# define EVP_MD_CTX_block_size(e) EVP_MD_block_size(EVP_MD_CTX_md(e)) -# define EVP_MD_CTX_type(e) EVP_MD_type(EVP_MD_CTX_md(e)) - -int EVP_CIPHER_nid(const EVP_CIPHER *cipher); -# define EVP_CIPHER_name(e) OBJ_nid2sn(EVP_CIPHER_nid(e)) -int EVP_CIPHER_block_size(const EVP_CIPHER *cipher); -int EVP_CIPHER_key_length(const EVP_CIPHER *cipher); -int EVP_CIPHER_iv_length(const EVP_CIPHER *cipher); -unsigned long EVP_CIPHER_flags(const EVP_CIPHER *cipher); -# define EVP_CIPHER_mode(e) (EVP_CIPHER_flags(e) & EVP_CIPH_MODE) - -const EVP_CIPHER *EVP_CIPHER_CTX_cipher(const EVP_CIPHER_CTX *ctx); -int EVP_CIPHER_CTX_nid(const EVP_CIPHER_CTX *ctx); -int EVP_CIPHER_CTX_block_size(const EVP_CIPHER_CTX *ctx); -int EVP_CIPHER_CTX_key_length(const EVP_CIPHER_CTX *ctx); -int EVP_CIPHER_CTX_iv_length(const EVP_CIPHER_CTX *ctx); -int EVP_CIPHER_CTX_copy(EVP_CIPHER_CTX *out, const EVP_CIPHER_CTX *in); -void *EVP_CIPHER_CTX_get_app_data(const EVP_CIPHER_CTX *ctx); -void EVP_CIPHER_CTX_set_app_data(EVP_CIPHER_CTX *ctx, void *data); -# define EVP_CIPHER_CTX_type(c) EVP_CIPHER_type(EVP_CIPHER_CTX_cipher(c)) -unsigned long EVP_CIPHER_CTX_flags(const EVP_CIPHER_CTX *ctx); -# define EVP_CIPHER_CTX_mode(e) (EVP_CIPHER_CTX_flags(e) & EVP_CIPH_MODE) - -# define EVP_ENCODE_LENGTH(l) (((l+2)/3*4)+(l/48+1)*2+80) -# define EVP_DECODE_LENGTH(l) ((l+3)/4*3+80) - -# define EVP_SignInit_ex(a,b,c) EVP_DigestInit_ex(a,b,c) -# define EVP_SignInit(a,b) EVP_DigestInit(a,b) -# define EVP_SignUpdate(a,b,c) EVP_DigestUpdate(a,b,c) -# define EVP_VerifyInit_ex(a,b,c) EVP_DigestInit_ex(a,b,c) -# define EVP_VerifyInit(a,b) EVP_DigestInit(a,b) -# define EVP_VerifyUpdate(a,b,c) EVP_DigestUpdate(a,b,c) -# define EVP_OpenUpdate(a,b,c,d,e) EVP_DecryptUpdate(a,b,c,d,e) -# define EVP_SealUpdate(a,b,c,d,e) EVP_EncryptUpdate(a,b,c,d,e) -# define EVP_DigestSignUpdate(a,b,c) EVP_DigestUpdate(a,b,c) -# define EVP_DigestVerifyUpdate(a,b,c) EVP_DigestUpdate(a,b,c) - -# ifdef CONST_STRICT -void BIO_set_md(BIO *, const EVP_MD *md); -# else -# define BIO_set_md(b,md) BIO_ctrl(b,BIO_C_SET_MD,0,(char *)md) -# endif -# define BIO_get_md(b,mdp) BIO_ctrl(b,BIO_C_GET_MD,0,(char *)mdp) -# define BIO_get_md_ctx(b,mdcp) BIO_ctrl(b,BIO_C_GET_MD_CTX,0,(char *)mdcp) -# define BIO_set_md_ctx(b,mdcp) BIO_ctrl(b,BIO_C_SET_MD_CTX,0,(char *)mdcp) -# define BIO_get_cipher_status(b) BIO_ctrl(b,BIO_C_GET_CIPHER_STATUS,0,NULL) -# define BIO_get_cipher_ctx(b,c_pp) BIO_ctrl(b,BIO_C_GET_CIPHER_CTX,0,(char *)c_pp) - -int EVP_Cipher(EVP_CIPHER_CTX *c, - unsigned char *out, const unsigned char *in, unsigned int inl); - -# define EVP_add_cipher_alias(n,alias) \ - OBJ_NAME_add((alias),OBJ_NAME_TYPE_CIPHER_METH|OBJ_NAME_ALIAS,(n)) -# define EVP_add_digest_alias(n,alias) \ - OBJ_NAME_add((alias),OBJ_NAME_TYPE_MD_METH|OBJ_NAME_ALIAS,(n)) -# define EVP_delete_cipher_alias(alias) \ - OBJ_NAME_remove(alias,OBJ_NAME_TYPE_CIPHER_METH|OBJ_NAME_ALIAS); -# define EVP_delete_digest_alias(alias) \ - OBJ_NAME_remove(alias,OBJ_NAME_TYPE_MD_METH|OBJ_NAME_ALIAS); - -void EVP_MD_CTX_init(EVP_MD_CTX *ctx); -int EVP_MD_CTX_cleanup(EVP_MD_CTX *ctx); -EVP_MD_CTX *EVP_MD_CTX_create(void); -void EVP_MD_CTX_destroy(EVP_MD_CTX *ctx); -int EVP_MD_CTX_copy_ex(EVP_MD_CTX *out, const EVP_MD_CTX *in); -void EVP_MD_CTX_set_flags(EVP_MD_CTX *ctx, int flags); -void EVP_MD_CTX_clear_flags(EVP_MD_CTX *ctx, int flags); -int EVP_MD_CTX_test_flags(const EVP_MD_CTX *ctx, int flags); -int EVP_DigestInit_ex(EVP_MD_CTX *ctx, const EVP_MD *type, ENGINE *impl); -int EVP_DigestUpdate(EVP_MD_CTX *ctx, const void *d, size_t cnt); -int EVP_DigestFinal_ex(EVP_MD_CTX *ctx, unsigned char *md, unsigned int *s); -int EVP_Digest(const void *data, size_t count, - unsigned char *md, unsigned int *size, const EVP_MD *type, - ENGINE *impl); - -int EVP_MD_CTX_copy(EVP_MD_CTX *out, const EVP_MD_CTX *in); -int EVP_DigestInit(EVP_MD_CTX *ctx, const EVP_MD *type); -int EVP_DigestFinal(EVP_MD_CTX *ctx, unsigned char *md, unsigned int *s); - -int EVP_read_pw_string(char *buf, int length, const char *prompt, int verify); -int EVP_read_pw_string_min(char *buf, int minlen, int maxlen, - const char *prompt, int verify); -void EVP_set_pw_prompt(const char *prompt); -char *EVP_get_pw_prompt(void); - -int EVP_BytesToKey(const EVP_CIPHER *type, const EVP_MD *md, - const unsigned char *salt, const unsigned char *data, - int datal, int count, unsigned char *key, - unsigned char *iv); - -void EVP_CIPHER_CTX_set_flags(EVP_CIPHER_CTX *ctx, int flags); -void EVP_CIPHER_CTX_clear_flags(EVP_CIPHER_CTX *ctx, int flags); -int EVP_CIPHER_CTX_test_flags(const EVP_CIPHER_CTX *ctx, int flags); - -int EVP_EncryptInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, - const unsigned char *key, const unsigned char *iv); -int EVP_EncryptInit_ex(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, - ENGINE *impl, const unsigned char *key, - const unsigned char *iv); -int EVP_EncryptUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl, - const unsigned char *in, int inl); -int EVP_EncryptFinal_ex(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl); -int EVP_EncryptFinal(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl); - -int EVP_DecryptInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, - const unsigned char *key, const unsigned char *iv); -int EVP_DecryptInit_ex(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, - ENGINE *impl, const unsigned char *key, - const unsigned char *iv); -int EVP_DecryptUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl, - const unsigned char *in, int inl); -int EVP_DecryptFinal(EVP_CIPHER_CTX *ctx, unsigned char *outm, int *outl); -int EVP_DecryptFinal_ex(EVP_CIPHER_CTX *ctx, unsigned char *outm, int *outl); - -int EVP_CipherInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, - const unsigned char *key, const unsigned char *iv, - int enc); -int EVP_CipherInit_ex(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, - ENGINE *impl, const unsigned char *key, - const unsigned char *iv, int enc); -int EVP_CipherUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl, - const unsigned char *in, int inl); -int EVP_CipherFinal(EVP_CIPHER_CTX *ctx, unsigned char *outm, int *outl); -int EVP_CipherFinal_ex(EVP_CIPHER_CTX *ctx, unsigned char *outm, int *outl); - -int EVP_SignFinal(EVP_MD_CTX *ctx, unsigned char *md, unsigned int *s, - EVP_PKEY *pkey); - -int EVP_VerifyFinal(EVP_MD_CTX *ctx, const unsigned char *sigbuf, - unsigned int siglen, EVP_PKEY *pkey); - -int EVP_DigestSignInit(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx, - const EVP_MD *type, ENGINE *e, EVP_PKEY *pkey); -int EVP_DigestSignFinal(EVP_MD_CTX *ctx, - unsigned char *sigret, size_t *siglen); - -int EVP_DigestVerifyInit(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx, - const EVP_MD *type, ENGINE *e, EVP_PKEY *pkey); -int EVP_DigestVerifyFinal(EVP_MD_CTX *ctx, - const unsigned char *sig, size_t siglen); - -int EVP_OpenInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *type, - const unsigned char *ek, int ekl, const unsigned char *iv, - EVP_PKEY *priv); -int EVP_OpenFinal(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl); - -int EVP_SealInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *type, - unsigned char **ek, int *ekl, unsigned char *iv, - EVP_PKEY **pubk, int npubk); -int EVP_SealFinal(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl); - -void EVP_EncodeInit(EVP_ENCODE_CTX *ctx); -void EVP_EncodeUpdate(EVP_ENCODE_CTX *ctx, unsigned char *out, int *outl, - const unsigned char *in, int inl); -void EVP_EncodeFinal(EVP_ENCODE_CTX *ctx, unsigned char *out, int *outl); -int EVP_EncodeBlock(unsigned char *t, const unsigned char *f, int n); - -void EVP_DecodeInit(EVP_ENCODE_CTX *ctx); -int EVP_DecodeUpdate(EVP_ENCODE_CTX *ctx, unsigned char *out, int *outl, - const unsigned char *in, int inl); -int EVP_DecodeFinal(EVP_ENCODE_CTX *ctx, unsigned - char *out, int *outl); -int EVP_DecodeBlock(unsigned char *t, const unsigned char *f, int n); - -void EVP_CIPHER_CTX_init(EVP_CIPHER_CTX *a); -int EVP_CIPHER_CTX_cleanup(EVP_CIPHER_CTX *a); -EVP_CIPHER_CTX *EVP_CIPHER_CTX_new(void); -void EVP_CIPHER_CTX_free(EVP_CIPHER_CTX *a); -int EVP_CIPHER_CTX_set_key_length(EVP_CIPHER_CTX *x, int keylen); -int EVP_CIPHER_CTX_set_padding(EVP_CIPHER_CTX *c, int pad); -int EVP_CIPHER_CTX_ctrl(EVP_CIPHER_CTX *ctx, int type, int arg, void *ptr); -int EVP_CIPHER_CTX_rand_key(EVP_CIPHER_CTX *ctx, unsigned char *key); - -# ifndef OPENSSL_NO_BIO -BIO_METHOD *BIO_f_md(void); -BIO_METHOD *BIO_f_base64(void); -BIO_METHOD *BIO_f_cipher(void); -BIO_METHOD *BIO_f_reliable(void); -void BIO_set_cipher(BIO *b, const EVP_CIPHER *c, const unsigned char *k, - const unsigned char *i, int enc); -# endif - -const EVP_MD *EVP_md_null(void); -# ifndef OPENSSL_NO_MD2 -const EVP_MD *EVP_md2(void); -# endif -# ifndef OPENSSL_NO_MD4 -const EVP_MD *EVP_md4(void); -# endif -# ifndef OPENSSL_NO_MD5 -const EVP_MD *EVP_md5(void); -# endif -# ifndef OPENSSL_NO_SHA -const EVP_MD *EVP_sha(void); -const EVP_MD *EVP_sha1(void); -const EVP_MD *EVP_dss(void); -const EVP_MD *EVP_dss1(void); -const EVP_MD *EVP_ecdsa(void); -# endif -# ifndef OPENSSL_NO_SHA256 -const EVP_MD *EVP_sha224(void); -const EVP_MD *EVP_sha256(void); -# endif -# ifndef OPENSSL_NO_SHA512 -const EVP_MD *EVP_sha384(void); -const EVP_MD *EVP_sha512(void); -# endif -# ifndef OPENSSL_NO_MDC2 -const EVP_MD *EVP_mdc2(void); -# endif -# ifndef OPENSSL_NO_RIPEMD -const EVP_MD *EVP_ripemd160(void); -# endif -# ifndef OPENSSL_NO_WHIRLPOOL -const EVP_MD *EVP_whirlpool(void); -# endif -const EVP_CIPHER *EVP_enc_null(void); /* does nothing :-) */ -# ifndef OPENSSL_NO_DES -const EVP_CIPHER *EVP_des_ecb(void); -const EVP_CIPHER *EVP_des_ede(void); -const EVP_CIPHER *EVP_des_ede3(void); -const EVP_CIPHER *EVP_des_ede_ecb(void); -const EVP_CIPHER *EVP_des_ede3_ecb(void); -const EVP_CIPHER *EVP_des_cfb64(void); -# define EVP_des_cfb EVP_des_cfb64 -const EVP_CIPHER *EVP_des_cfb1(void); -const EVP_CIPHER *EVP_des_cfb8(void); -const EVP_CIPHER *EVP_des_ede_cfb64(void); -# define EVP_des_ede_cfb EVP_des_ede_cfb64 -# if 0 -const EVP_CIPHER *EVP_des_ede_cfb1(void); -const EVP_CIPHER *EVP_des_ede_cfb8(void); -# endif -const EVP_CIPHER *EVP_des_ede3_cfb64(void); -# define EVP_des_ede3_cfb EVP_des_ede3_cfb64 -const EVP_CIPHER *EVP_des_ede3_cfb1(void); -const EVP_CIPHER *EVP_des_ede3_cfb8(void); -const EVP_CIPHER *EVP_des_ofb(void); -const EVP_CIPHER *EVP_des_ede_ofb(void); -const EVP_CIPHER *EVP_des_ede3_ofb(void); -const EVP_CIPHER *EVP_des_cbc(void); -const EVP_CIPHER *EVP_des_ede_cbc(void); -const EVP_CIPHER *EVP_des_ede3_cbc(void); -const EVP_CIPHER *EVP_desx_cbc(void); -const EVP_CIPHER *EVP_des_ede3_wrap(void); -/* - * This should now be supported through the dev_crypto ENGINE. But also, why - * are rc4 and md5 declarations made here inside a "NO_DES" precompiler - * branch? - */ -# if 0 -# ifdef OPENSSL_OPENBSD_DEV_CRYPTO -const EVP_CIPHER *EVP_dev_crypto_des_ede3_cbc(void); -const EVP_CIPHER *EVP_dev_crypto_rc4(void); -const EVP_MD *EVP_dev_crypto_md5(void); -# endif -# endif -# endif -# ifndef OPENSSL_NO_RC4 -const EVP_CIPHER *EVP_rc4(void); -const EVP_CIPHER *EVP_rc4_40(void); -# ifndef OPENSSL_NO_MD5 -const EVP_CIPHER *EVP_rc4_hmac_md5(void); -# endif -# endif -# ifndef OPENSSL_NO_IDEA -const EVP_CIPHER *EVP_idea_ecb(void); -const EVP_CIPHER *EVP_idea_cfb64(void); -# define EVP_idea_cfb EVP_idea_cfb64 -const EVP_CIPHER *EVP_idea_ofb(void); -const EVP_CIPHER *EVP_idea_cbc(void); -# endif -# ifndef OPENSSL_NO_RC2 -const EVP_CIPHER *EVP_rc2_ecb(void); -const EVP_CIPHER *EVP_rc2_cbc(void); -const EVP_CIPHER *EVP_rc2_40_cbc(void); -const EVP_CIPHER *EVP_rc2_64_cbc(void); -const EVP_CIPHER *EVP_rc2_cfb64(void); -# define EVP_rc2_cfb EVP_rc2_cfb64 -const EVP_CIPHER *EVP_rc2_ofb(void); -# endif -# ifndef OPENSSL_NO_BF -const EVP_CIPHER *EVP_bf_ecb(void); -const EVP_CIPHER *EVP_bf_cbc(void); -const EVP_CIPHER *EVP_bf_cfb64(void); -# define EVP_bf_cfb EVP_bf_cfb64 -const EVP_CIPHER *EVP_bf_ofb(void); -# endif -# ifndef OPENSSL_NO_CAST -const EVP_CIPHER *EVP_cast5_ecb(void); -const EVP_CIPHER *EVP_cast5_cbc(void); -const EVP_CIPHER *EVP_cast5_cfb64(void); -# define EVP_cast5_cfb EVP_cast5_cfb64 -const EVP_CIPHER *EVP_cast5_ofb(void); -# endif -# ifndef OPENSSL_NO_RC5 -const EVP_CIPHER *EVP_rc5_32_12_16_cbc(void); -const EVP_CIPHER *EVP_rc5_32_12_16_ecb(void); -const EVP_CIPHER *EVP_rc5_32_12_16_cfb64(void); -# define EVP_rc5_32_12_16_cfb EVP_rc5_32_12_16_cfb64 -const EVP_CIPHER *EVP_rc5_32_12_16_ofb(void); -# endif -# ifndef OPENSSL_NO_AES -const EVP_CIPHER *EVP_aes_128_ecb(void); -const EVP_CIPHER *EVP_aes_128_cbc(void); -const EVP_CIPHER *EVP_aes_128_cfb1(void); -const EVP_CIPHER *EVP_aes_128_cfb8(void); -const EVP_CIPHER *EVP_aes_128_cfb128(void); -# define EVP_aes_128_cfb EVP_aes_128_cfb128 -const EVP_CIPHER *EVP_aes_128_ofb(void); -const EVP_CIPHER *EVP_aes_128_ctr(void); -const EVP_CIPHER *EVP_aes_128_ccm(void); -const EVP_CIPHER *EVP_aes_128_gcm(void); -const EVP_CIPHER *EVP_aes_128_xts(void); -const EVP_CIPHER *EVP_aes_128_wrap(void); -const EVP_CIPHER *EVP_aes_192_ecb(void); -const EVP_CIPHER *EVP_aes_192_cbc(void); -const EVP_CIPHER *EVP_aes_192_cfb1(void); -const EVP_CIPHER *EVP_aes_192_cfb8(void); -const EVP_CIPHER *EVP_aes_192_cfb128(void); -# define EVP_aes_192_cfb EVP_aes_192_cfb128 -const EVP_CIPHER *EVP_aes_192_ofb(void); -const EVP_CIPHER *EVP_aes_192_ctr(void); -const EVP_CIPHER *EVP_aes_192_ccm(void); -const EVP_CIPHER *EVP_aes_192_gcm(void); -const EVP_CIPHER *EVP_aes_192_wrap(void); -const EVP_CIPHER *EVP_aes_256_ecb(void); -const EVP_CIPHER *EVP_aes_256_cbc(void); -const EVP_CIPHER *EVP_aes_256_cfb1(void); -const EVP_CIPHER *EVP_aes_256_cfb8(void); -const EVP_CIPHER *EVP_aes_256_cfb128(void); -# define EVP_aes_256_cfb EVP_aes_256_cfb128 -const EVP_CIPHER *EVP_aes_256_ofb(void); -const EVP_CIPHER *EVP_aes_256_ctr(void); -const EVP_CIPHER *EVP_aes_256_ccm(void); -const EVP_CIPHER *EVP_aes_256_gcm(void); -const EVP_CIPHER *EVP_aes_256_xts(void); -const EVP_CIPHER *EVP_aes_256_wrap(void); -# if !defined(OPENSSL_NO_SHA) && !defined(OPENSSL_NO_SHA1) -const EVP_CIPHER *EVP_aes_128_cbc_hmac_sha1(void); -const EVP_CIPHER *EVP_aes_256_cbc_hmac_sha1(void); -# endif -# ifndef OPENSSL_NO_SHA256 -const EVP_CIPHER *EVP_aes_128_cbc_hmac_sha256(void); -const EVP_CIPHER *EVP_aes_256_cbc_hmac_sha256(void); -# endif -# endif -# ifndef OPENSSL_NO_CAMELLIA -const EVP_CIPHER *EVP_camellia_128_ecb(void); -const EVP_CIPHER *EVP_camellia_128_cbc(void); -const EVP_CIPHER *EVP_camellia_128_cfb1(void); -const EVP_CIPHER *EVP_camellia_128_cfb8(void); -const EVP_CIPHER *EVP_camellia_128_cfb128(void); -# define EVP_camellia_128_cfb EVP_camellia_128_cfb128 -const EVP_CIPHER *EVP_camellia_128_ofb(void); -const EVP_CIPHER *EVP_camellia_192_ecb(void); -const EVP_CIPHER *EVP_camellia_192_cbc(void); -const EVP_CIPHER *EVP_camellia_192_cfb1(void); -const EVP_CIPHER *EVP_camellia_192_cfb8(void); -const EVP_CIPHER *EVP_camellia_192_cfb128(void); -# define EVP_camellia_192_cfb EVP_camellia_192_cfb128 -const EVP_CIPHER *EVP_camellia_192_ofb(void); -const EVP_CIPHER *EVP_camellia_256_ecb(void); -const EVP_CIPHER *EVP_camellia_256_cbc(void); -const EVP_CIPHER *EVP_camellia_256_cfb1(void); -const EVP_CIPHER *EVP_camellia_256_cfb8(void); -const EVP_CIPHER *EVP_camellia_256_cfb128(void); -# define EVP_camellia_256_cfb EVP_camellia_256_cfb128 -const EVP_CIPHER *EVP_camellia_256_ofb(void); -# endif - -# ifndef OPENSSL_NO_SEED -const EVP_CIPHER *EVP_seed_ecb(void); -const EVP_CIPHER *EVP_seed_cbc(void); -const EVP_CIPHER *EVP_seed_cfb128(void); -# define EVP_seed_cfb EVP_seed_cfb128 -const EVP_CIPHER *EVP_seed_ofb(void); -# endif - -void OPENSSL_add_all_algorithms_noconf(void); -void OPENSSL_add_all_algorithms_conf(void); - -# ifdef OPENSSL_LOAD_CONF -# define OpenSSL_add_all_algorithms() \ - OPENSSL_add_all_algorithms_conf() -# else -# define OpenSSL_add_all_algorithms() \ - OPENSSL_add_all_algorithms_noconf() -# endif - -void OpenSSL_add_all_ciphers(void); -void OpenSSL_add_all_digests(void); -# define SSLeay_add_all_algorithms() OpenSSL_add_all_algorithms() -# define SSLeay_add_all_ciphers() OpenSSL_add_all_ciphers() -# define SSLeay_add_all_digests() OpenSSL_add_all_digests() - -int EVP_add_cipher(const EVP_CIPHER *cipher); -int EVP_add_digest(const EVP_MD *digest); - -const EVP_CIPHER *EVP_get_cipherbyname(const char *name); -const EVP_MD *EVP_get_digestbyname(const char *name); -void EVP_cleanup(void); - -void EVP_CIPHER_do_all(void (*fn) (const EVP_CIPHER *ciph, - const char *from, const char *to, void *x), - void *arg); -void EVP_CIPHER_do_all_sorted(void (*fn) - (const EVP_CIPHER *ciph, const char *from, - const char *to, void *x), void *arg); - -void EVP_MD_do_all(void (*fn) (const EVP_MD *ciph, - const char *from, const char *to, void *x), - void *arg); -void EVP_MD_do_all_sorted(void (*fn) - (const EVP_MD *ciph, const char *from, - const char *to, void *x), void *arg); - -int EVP_PKEY_decrypt_old(unsigned char *dec_key, - const unsigned char *enc_key, int enc_key_len, - EVP_PKEY *private_key); -int EVP_PKEY_encrypt_old(unsigned char *enc_key, - const unsigned char *key, int key_len, - EVP_PKEY *pub_key); -int EVP_PKEY_type(int type); -int EVP_PKEY_id(const EVP_PKEY *pkey); -int EVP_PKEY_base_id(const EVP_PKEY *pkey); -int EVP_PKEY_bits(EVP_PKEY *pkey); -int EVP_PKEY_size(EVP_PKEY *pkey); -int EVP_PKEY_set_type(EVP_PKEY *pkey, int type); -int EVP_PKEY_set_type_str(EVP_PKEY *pkey, const char *str, int len); -int EVP_PKEY_assign(EVP_PKEY *pkey, int type, void *key); -void *EVP_PKEY_get0(EVP_PKEY *pkey); - -# ifndef OPENSSL_NO_RSA -struct rsa_st; -int EVP_PKEY_set1_RSA(EVP_PKEY *pkey, struct rsa_st *key); -struct rsa_st *EVP_PKEY_get1_RSA(EVP_PKEY *pkey); -# endif -# ifndef OPENSSL_NO_DSA -struct dsa_st; -int EVP_PKEY_set1_DSA(EVP_PKEY *pkey, struct dsa_st *key); -struct dsa_st *EVP_PKEY_get1_DSA(EVP_PKEY *pkey); -# endif -# ifndef OPENSSL_NO_DH -struct dh_st; -int EVP_PKEY_set1_DH(EVP_PKEY *pkey, struct dh_st *key); -struct dh_st *EVP_PKEY_get1_DH(EVP_PKEY *pkey); -# endif -# ifndef OPENSSL_NO_EC -struct ec_key_st; -int EVP_PKEY_set1_EC_KEY(EVP_PKEY *pkey, struct ec_key_st *key); -struct ec_key_st *EVP_PKEY_get1_EC_KEY(EVP_PKEY *pkey); -# endif - -EVP_PKEY *EVP_PKEY_new(void); -void EVP_PKEY_free(EVP_PKEY *pkey); - -EVP_PKEY *d2i_PublicKey(int type, EVP_PKEY **a, const unsigned char **pp, - long length); -int i2d_PublicKey(EVP_PKEY *a, unsigned char **pp); - -EVP_PKEY *d2i_PrivateKey(int type, EVP_PKEY **a, const unsigned char **pp, - long length); -EVP_PKEY *d2i_AutoPrivateKey(EVP_PKEY **a, const unsigned char **pp, - long length); -int i2d_PrivateKey(EVP_PKEY *a, unsigned char **pp); - -int EVP_PKEY_copy_parameters(EVP_PKEY *to, const EVP_PKEY *from); -int EVP_PKEY_missing_parameters(const EVP_PKEY *pkey); -int EVP_PKEY_save_parameters(EVP_PKEY *pkey, int mode); -int EVP_PKEY_cmp_parameters(const EVP_PKEY *a, const EVP_PKEY *b); - -int EVP_PKEY_cmp(const EVP_PKEY *a, const EVP_PKEY *b); - -int EVP_PKEY_print_public(BIO *out, const EVP_PKEY *pkey, - int indent, ASN1_PCTX *pctx); -int EVP_PKEY_print_private(BIO *out, const EVP_PKEY *pkey, - int indent, ASN1_PCTX *pctx); -int EVP_PKEY_print_params(BIO *out, const EVP_PKEY *pkey, - int indent, ASN1_PCTX *pctx); - -int EVP_PKEY_get_default_digest_nid(EVP_PKEY *pkey, int *pnid); - -int EVP_CIPHER_type(const EVP_CIPHER *ctx); - -/* calls methods */ -int EVP_CIPHER_param_to_asn1(EVP_CIPHER_CTX *c, ASN1_TYPE *type); -int EVP_CIPHER_asn1_to_param(EVP_CIPHER_CTX *c, ASN1_TYPE *type); - -/* These are used by EVP_CIPHER methods */ -int EVP_CIPHER_set_asn1_iv(EVP_CIPHER_CTX *c, ASN1_TYPE *type); -int EVP_CIPHER_get_asn1_iv(EVP_CIPHER_CTX *c, ASN1_TYPE *type); - -/* PKCS5 password based encryption */ -int PKCS5_PBE_keyivgen(EVP_CIPHER_CTX *ctx, const char *pass, int passlen, - ASN1_TYPE *param, const EVP_CIPHER *cipher, - const EVP_MD *md, int en_de); -int PKCS5_PBKDF2_HMAC_SHA1(const char *pass, int passlen, - const unsigned char *salt, int saltlen, int iter, - int keylen, unsigned char *out); -int PKCS5_PBKDF2_HMAC(const char *pass, int passlen, - const unsigned char *salt, int saltlen, int iter, - const EVP_MD *digest, int keylen, unsigned char *out); -int PKCS5_v2_PBE_keyivgen(EVP_CIPHER_CTX *ctx, const char *pass, int passlen, - ASN1_TYPE *param, const EVP_CIPHER *cipher, - const EVP_MD *md, int en_de); - -void PKCS5_PBE_add(void); - -int EVP_PBE_CipherInit(ASN1_OBJECT *pbe_obj, const char *pass, int passlen, - ASN1_TYPE *param, EVP_CIPHER_CTX *ctx, int en_de); - -/* PBE type */ - -/* Can appear as the outermost AlgorithmIdentifier */ -# define EVP_PBE_TYPE_OUTER 0x0 -/* Is an PRF type OID */ -# define EVP_PBE_TYPE_PRF 0x1 - -int EVP_PBE_alg_add_type(int pbe_type, int pbe_nid, int cipher_nid, - int md_nid, EVP_PBE_KEYGEN *keygen); -int EVP_PBE_alg_add(int nid, const EVP_CIPHER *cipher, const EVP_MD *md, - EVP_PBE_KEYGEN *keygen); -int EVP_PBE_find(int type, int pbe_nid, int *pcnid, int *pmnid, - EVP_PBE_KEYGEN **pkeygen); -void EVP_PBE_cleanup(void); - -# define ASN1_PKEY_ALIAS 0x1 -# define ASN1_PKEY_DYNAMIC 0x2 -# define ASN1_PKEY_SIGPARAM_NULL 0x4 - -# define ASN1_PKEY_CTRL_PKCS7_SIGN 0x1 -# define ASN1_PKEY_CTRL_PKCS7_ENCRYPT 0x2 -# define ASN1_PKEY_CTRL_DEFAULT_MD_NID 0x3 -# define ASN1_PKEY_CTRL_CMS_SIGN 0x5 -# define ASN1_PKEY_CTRL_CMS_ENVELOPE 0x7 -# define ASN1_PKEY_CTRL_CMS_RI_TYPE 0x8 - -int EVP_PKEY_asn1_get_count(void); -const EVP_PKEY_ASN1_METHOD *EVP_PKEY_asn1_get0(int idx); -const EVP_PKEY_ASN1_METHOD *EVP_PKEY_asn1_find(ENGINE **pe, int type); -const EVP_PKEY_ASN1_METHOD *EVP_PKEY_asn1_find_str(ENGINE **pe, - const char *str, int len); -int EVP_PKEY_asn1_add0(const EVP_PKEY_ASN1_METHOD *ameth); -int EVP_PKEY_asn1_add_alias(int to, int from); -int EVP_PKEY_asn1_get0_info(int *ppkey_id, int *pkey_base_id, - int *ppkey_flags, const char **pinfo, - const char **ppem_str, - const EVP_PKEY_ASN1_METHOD *ameth); - -const EVP_PKEY_ASN1_METHOD *EVP_PKEY_get0_asn1(EVP_PKEY *pkey); -EVP_PKEY_ASN1_METHOD *EVP_PKEY_asn1_new(int id, int flags, - const char *pem_str, - const char *info); -void EVP_PKEY_asn1_copy(EVP_PKEY_ASN1_METHOD *dst, - const EVP_PKEY_ASN1_METHOD *src); -void EVP_PKEY_asn1_free(EVP_PKEY_ASN1_METHOD *ameth); -void EVP_PKEY_asn1_set_public(EVP_PKEY_ASN1_METHOD *ameth, - int (*pub_decode) (EVP_PKEY *pk, - X509_PUBKEY *pub), - int (*pub_encode) (X509_PUBKEY *pub, - const EVP_PKEY *pk), - int (*pub_cmp) (const EVP_PKEY *a, - const EVP_PKEY *b), - int (*pub_print) (BIO *out, - const EVP_PKEY *pkey, - int indent, ASN1_PCTX *pctx), - int (*pkey_size) (const EVP_PKEY *pk), - int (*pkey_bits) (const EVP_PKEY *pk)); -void EVP_PKEY_asn1_set_private(EVP_PKEY_ASN1_METHOD *ameth, - int (*priv_decode) (EVP_PKEY *pk, - PKCS8_PRIV_KEY_INFO - *p8inf), - int (*priv_encode) (PKCS8_PRIV_KEY_INFO *p8, - const EVP_PKEY *pk), - int (*priv_print) (BIO *out, - const EVP_PKEY *pkey, - int indent, - ASN1_PCTX *pctx)); -void EVP_PKEY_asn1_set_param(EVP_PKEY_ASN1_METHOD *ameth, - int (*param_decode) (EVP_PKEY *pkey, - const unsigned char **pder, - int derlen), - int (*param_encode) (const EVP_PKEY *pkey, - unsigned char **pder), - int (*param_missing) (const EVP_PKEY *pk), - int (*param_copy) (EVP_PKEY *to, - const EVP_PKEY *from), - int (*param_cmp) (const EVP_PKEY *a, - const EVP_PKEY *b), - int (*param_print) (BIO *out, - const EVP_PKEY *pkey, - int indent, - ASN1_PCTX *pctx)); - -void EVP_PKEY_asn1_set_free(EVP_PKEY_ASN1_METHOD *ameth, - void (*pkey_free) (EVP_PKEY *pkey)); -void EVP_PKEY_asn1_set_ctrl(EVP_PKEY_ASN1_METHOD *ameth, - int (*pkey_ctrl) (EVP_PKEY *pkey, int op, - long arg1, void *arg2)); - -# define EVP_PKEY_OP_UNDEFINED 0 -# define EVP_PKEY_OP_PARAMGEN (1<<1) -# define EVP_PKEY_OP_KEYGEN (1<<2) -# define EVP_PKEY_OP_SIGN (1<<3) -# define EVP_PKEY_OP_VERIFY (1<<4) -# define EVP_PKEY_OP_VERIFYRECOVER (1<<5) -# define EVP_PKEY_OP_SIGNCTX (1<<6) -# define EVP_PKEY_OP_VERIFYCTX (1<<7) -# define EVP_PKEY_OP_ENCRYPT (1<<8) -# define EVP_PKEY_OP_DECRYPT (1<<9) -# define EVP_PKEY_OP_DERIVE (1<<10) - -# define EVP_PKEY_OP_TYPE_SIG \ - (EVP_PKEY_OP_SIGN | EVP_PKEY_OP_VERIFY | EVP_PKEY_OP_VERIFYRECOVER \ - | EVP_PKEY_OP_SIGNCTX | EVP_PKEY_OP_VERIFYCTX) - -# define EVP_PKEY_OP_TYPE_CRYPT \ - (EVP_PKEY_OP_ENCRYPT | EVP_PKEY_OP_DECRYPT) - -# define EVP_PKEY_OP_TYPE_NOGEN \ - (EVP_PKEY_OP_SIG | EVP_PKEY_OP_CRYPT | EVP_PKEY_OP_DERIVE) - -# define EVP_PKEY_OP_TYPE_GEN \ - (EVP_PKEY_OP_PARAMGEN | EVP_PKEY_OP_KEYGEN) - -# define EVP_PKEY_CTX_set_signature_md(ctx, md) \ - EVP_PKEY_CTX_ctrl(ctx, -1, EVP_PKEY_OP_TYPE_SIG, \ - EVP_PKEY_CTRL_MD, 0, (void *)md) - -# define EVP_PKEY_CTX_get_signature_md(ctx, pmd) \ - EVP_PKEY_CTX_ctrl(ctx, -1, EVP_PKEY_OP_TYPE_SIG, \ - EVP_PKEY_CTRL_GET_MD, 0, (void *)pmd) - -# define EVP_PKEY_CTRL_MD 1 -# define EVP_PKEY_CTRL_PEER_KEY 2 - -# define EVP_PKEY_CTRL_PKCS7_ENCRYPT 3 -# define EVP_PKEY_CTRL_PKCS7_DECRYPT 4 - -# define EVP_PKEY_CTRL_PKCS7_SIGN 5 - -# define EVP_PKEY_CTRL_SET_MAC_KEY 6 - -# define EVP_PKEY_CTRL_DIGESTINIT 7 - -/* Used by GOST key encryption in TLS */ -# define EVP_PKEY_CTRL_SET_IV 8 - -# define EVP_PKEY_CTRL_CMS_ENCRYPT 9 -# define EVP_PKEY_CTRL_CMS_DECRYPT 10 -# define EVP_PKEY_CTRL_CMS_SIGN 11 - -# define EVP_PKEY_CTRL_CIPHER 12 - -# define EVP_PKEY_CTRL_GET_MD 13 - -# define EVP_PKEY_ALG_CTRL 0x1000 - -# define EVP_PKEY_FLAG_AUTOARGLEN 2 -/* - * Method handles all operations: don't assume any digest related defaults. - */ -# define EVP_PKEY_FLAG_SIGCTX_CUSTOM 4 - -const EVP_PKEY_METHOD *EVP_PKEY_meth_find(int type); -EVP_PKEY_METHOD *EVP_PKEY_meth_new(int id, int flags); -void EVP_PKEY_meth_get0_info(int *ppkey_id, int *pflags, - const EVP_PKEY_METHOD *meth); -void EVP_PKEY_meth_copy(EVP_PKEY_METHOD *dst, const EVP_PKEY_METHOD *src); -void EVP_PKEY_meth_free(EVP_PKEY_METHOD *pmeth); -int EVP_PKEY_meth_add0(const EVP_PKEY_METHOD *pmeth); - -EVP_PKEY_CTX *EVP_PKEY_CTX_new(EVP_PKEY *pkey, ENGINE *e); -EVP_PKEY_CTX *EVP_PKEY_CTX_new_id(int id, ENGINE *e); -EVP_PKEY_CTX *EVP_PKEY_CTX_dup(EVP_PKEY_CTX *ctx); -void EVP_PKEY_CTX_free(EVP_PKEY_CTX *ctx); - -int EVP_PKEY_CTX_ctrl(EVP_PKEY_CTX *ctx, int keytype, int optype, - int cmd, int p1, void *p2); -int EVP_PKEY_CTX_ctrl_str(EVP_PKEY_CTX *ctx, const char *type, - const char *value); - -int EVP_PKEY_CTX_get_operation(EVP_PKEY_CTX *ctx); -void EVP_PKEY_CTX_set0_keygen_info(EVP_PKEY_CTX *ctx, int *dat, int datlen); - -EVP_PKEY *EVP_PKEY_new_mac_key(int type, ENGINE *e, - const unsigned char *key, int keylen); - -void EVP_PKEY_CTX_set_data(EVP_PKEY_CTX *ctx, void *data); -void *EVP_PKEY_CTX_get_data(EVP_PKEY_CTX *ctx); -EVP_PKEY *EVP_PKEY_CTX_get0_pkey(EVP_PKEY_CTX *ctx); - -EVP_PKEY *EVP_PKEY_CTX_get0_peerkey(EVP_PKEY_CTX *ctx); - -void EVP_PKEY_CTX_set_app_data(EVP_PKEY_CTX *ctx, void *data); -void *EVP_PKEY_CTX_get_app_data(EVP_PKEY_CTX *ctx); - -int EVP_PKEY_sign_init(EVP_PKEY_CTX *ctx); -int EVP_PKEY_sign(EVP_PKEY_CTX *ctx, - unsigned char *sig, size_t *siglen, - const unsigned char *tbs, size_t tbslen); -int EVP_PKEY_verify_init(EVP_PKEY_CTX *ctx); -int EVP_PKEY_verify(EVP_PKEY_CTX *ctx, - const unsigned char *sig, size_t siglen, - const unsigned char *tbs, size_t tbslen); -int EVP_PKEY_verify_recover_init(EVP_PKEY_CTX *ctx); -int EVP_PKEY_verify_recover(EVP_PKEY_CTX *ctx, - unsigned char *rout, size_t *routlen, - const unsigned char *sig, size_t siglen); -int EVP_PKEY_encrypt_init(EVP_PKEY_CTX *ctx); -int EVP_PKEY_encrypt(EVP_PKEY_CTX *ctx, - unsigned char *out, size_t *outlen, - const unsigned char *in, size_t inlen); -int EVP_PKEY_decrypt_init(EVP_PKEY_CTX *ctx); -int EVP_PKEY_decrypt(EVP_PKEY_CTX *ctx, - unsigned char *out, size_t *outlen, - const unsigned char *in, size_t inlen); - -int EVP_PKEY_derive_init(EVP_PKEY_CTX *ctx); -int EVP_PKEY_derive_set_peer(EVP_PKEY_CTX *ctx, EVP_PKEY *peer); -int EVP_PKEY_derive(EVP_PKEY_CTX *ctx, unsigned char *key, size_t *keylen); - -typedef int EVP_PKEY_gen_cb (EVP_PKEY_CTX *ctx); - -int EVP_PKEY_paramgen_init(EVP_PKEY_CTX *ctx); -int EVP_PKEY_paramgen(EVP_PKEY_CTX *ctx, EVP_PKEY **ppkey); -int EVP_PKEY_keygen_init(EVP_PKEY_CTX *ctx); -int EVP_PKEY_keygen(EVP_PKEY_CTX *ctx, EVP_PKEY **ppkey); - -void EVP_PKEY_CTX_set_cb(EVP_PKEY_CTX *ctx, EVP_PKEY_gen_cb *cb); -EVP_PKEY_gen_cb *EVP_PKEY_CTX_get_cb(EVP_PKEY_CTX *ctx); - -int EVP_PKEY_CTX_get_keygen_info(EVP_PKEY_CTX *ctx, int idx); - -void EVP_PKEY_meth_set_init(EVP_PKEY_METHOD *pmeth, - int (*init) (EVP_PKEY_CTX *ctx)); - -void EVP_PKEY_meth_set_copy(EVP_PKEY_METHOD *pmeth, - int (*copy) (EVP_PKEY_CTX *dst, - EVP_PKEY_CTX *src)); - -void EVP_PKEY_meth_set_cleanup(EVP_PKEY_METHOD *pmeth, - void (*cleanup) (EVP_PKEY_CTX *ctx)); - -void EVP_PKEY_meth_set_paramgen(EVP_PKEY_METHOD *pmeth, - int (*paramgen_init) (EVP_PKEY_CTX *ctx), - int (*paramgen) (EVP_PKEY_CTX *ctx, - EVP_PKEY *pkey)); - -void EVP_PKEY_meth_set_keygen(EVP_PKEY_METHOD *pmeth, - int (*keygen_init) (EVP_PKEY_CTX *ctx), - int (*keygen) (EVP_PKEY_CTX *ctx, - EVP_PKEY *pkey)); - -void EVP_PKEY_meth_set_sign(EVP_PKEY_METHOD *pmeth, - int (*sign_init) (EVP_PKEY_CTX *ctx), - int (*sign) (EVP_PKEY_CTX *ctx, - unsigned char *sig, size_t *siglen, - const unsigned char *tbs, - size_t tbslen)); - -void EVP_PKEY_meth_set_verify(EVP_PKEY_METHOD *pmeth, - int (*verify_init) (EVP_PKEY_CTX *ctx), - int (*verify) (EVP_PKEY_CTX *ctx, - const unsigned char *sig, - size_t siglen, - const unsigned char *tbs, - size_t tbslen)); - -void EVP_PKEY_meth_set_verify_recover(EVP_PKEY_METHOD *pmeth, - int (*verify_recover_init) (EVP_PKEY_CTX - *ctx), - int (*verify_recover) (EVP_PKEY_CTX - *ctx, - unsigned char - *sig, - size_t *siglen, - const unsigned - char *tbs, - size_t tbslen)); - -void EVP_PKEY_meth_set_signctx(EVP_PKEY_METHOD *pmeth, - int (*signctx_init) (EVP_PKEY_CTX *ctx, - EVP_MD_CTX *mctx), - int (*signctx) (EVP_PKEY_CTX *ctx, - unsigned char *sig, - size_t *siglen, - EVP_MD_CTX *mctx)); - -void EVP_PKEY_meth_set_verifyctx(EVP_PKEY_METHOD *pmeth, - int (*verifyctx_init) (EVP_PKEY_CTX *ctx, - EVP_MD_CTX *mctx), - int (*verifyctx) (EVP_PKEY_CTX *ctx, - const unsigned char *sig, - int siglen, - EVP_MD_CTX *mctx)); - -void EVP_PKEY_meth_set_encrypt(EVP_PKEY_METHOD *pmeth, - int (*encrypt_init) (EVP_PKEY_CTX *ctx), - int (*encryptfn) (EVP_PKEY_CTX *ctx, - unsigned char *out, - size_t *outlen, - const unsigned char *in, - size_t inlen)); - -void EVP_PKEY_meth_set_decrypt(EVP_PKEY_METHOD *pmeth, - int (*decrypt_init) (EVP_PKEY_CTX *ctx), - int (*decrypt) (EVP_PKEY_CTX *ctx, - unsigned char *out, - size_t *outlen, - const unsigned char *in, - size_t inlen)); - -void EVP_PKEY_meth_set_derive(EVP_PKEY_METHOD *pmeth, - int (*derive_init) (EVP_PKEY_CTX *ctx), - int (*derive) (EVP_PKEY_CTX *ctx, - unsigned char *key, - size_t *keylen)); - -void EVP_PKEY_meth_set_ctrl(EVP_PKEY_METHOD *pmeth, - int (*ctrl) (EVP_PKEY_CTX *ctx, int type, int p1, - void *p2), - int (*ctrl_str) (EVP_PKEY_CTX *ctx, - const char *type, - const char *value)); - -void EVP_add_alg_module(void); - -/* BEGIN ERROR CODES */ -/* - * The following lines are auto generated by the script mkerr.pl. Any changes - * made after this point may be overwritten when the script is next run. - */ -void ERR_load_EVP_strings(void); - -/* Error codes for the EVP functions. */ - -/* Function codes. */ -# define EVP_F_AESNI_INIT_KEY 165 -# define EVP_F_AESNI_XTS_CIPHER 176 -# define EVP_F_AES_INIT_KEY 133 -# define EVP_F_AES_T4_INIT_KEY 178 -# define EVP_F_AES_XTS 172 -# define EVP_F_AES_XTS_CIPHER 175 -# define EVP_F_ALG_MODULE_INIT 177 -# define EVP_F_CAMELLIA_INIT_KEY 159 -# define EVP_F_CMAC_INIT 173 -# define EVP_F_CMLL_T4_INIT_KEY 179 -# define EVP_F_D2I_PKEY 100 -# define EVP_F_DO_SIGVER_INIT 161 -# define EVP_F_DSAPKEY2PKCS8 134 -# define EVP_F_DSA_PKEY2PKCS8 135 -# define EVP_F_ECDSA_PKEY2PKCS8 129 -# define EVP_F_ECKEY_PKEY2PKCS8 132 -# define EVP_F_EVP_CIPHERINIT_EX 123 -# define EVP_F_EVP_CIPHER_CTX_COPY 163 -# define EVP_F_EVP_CIPHER_CTX_CTRL 124 -# define EVP_F_EVP_CIPHER_CTX_SET_KEY_LENGTH 122 -# define EVP_F_EVP_DECRYPTFINAL_EX 101 -# define EVP_F_EVP_DIGESTINIT_EX 128 -# define EVP_F_EVP_ENCRYPTFINAL_EX 127 -# define EVP_F_EVP_MD_CTX_COPY_EX 110 -# define EVP_F_EVP_MD_SIZE 162 -# define EVP_F_EVP_OPENINIT 102 -# define EVP_F_EVP_PBE_ALG_ADD 115 -# define EVP_F_EVP_PBE_ALG_ADD_TYPE 160 -# define EVP_F_EVP_PBE_CIPHERINIT 116 -# define EVP_F_EVP_PKCS82PKEY 111 -# define EVP_F_EVP_PKCS82PKEY_BROKEN 136 -# define EVP_F_EVP_PKEY2PKCS8_BROKEN 113 -# define EVP_F_EVP_PKEY_COPY_PARAMETERS 103 -# define EVP_F_EVP_PKEY_CTX_CTRL 137 -# define EVP_F_EVP_PKEY_CTX_CTRL_STR 150 -# define EVP_F_EVP_PKEY_CTX_DUP 156 -# define EVP_F_EVP_PKEY_DECRYPT 104 -# define EVP_F_EVP_PKEY_DECRYPT_INIT 138 -# define EVP_F_EVP_PKEY_DECRYPT_OLD 151 -# define EVP_F_EVP_PKEY_DERIVE 153 -# define EVP_F_EVP_PKEY_DERIVE_INIT 154 -# define EVP_F_EVP_PKEY_DERIVE_SET_PEER 155 -# define EVP_F_EVP_PKEY_ENCRYPT 105 -# define EVP_F_EVP_PKEY_ENCRYPT_INIT 139 -# define EVP_F_EVP_PKEY_ENCRYPT_OLD 152 -# define EVP_F_EVP_PKEY_GET1_DH 119 -# define EVP_F_EVP_PKEY_GET1_DSA 120 -# define EVP_F_EVP_PKEY_GET1_ECDSA 130 -# define EVP_F_EVP_PKEY_GET1_EC_KEY 131 -# define EVP_F_EVP_PKEY_GET1_RSA 121 -# define EVP_F_EVP_PKEY_KEYGEN 146 -# define EVP_F_EVP_PKEY_KEYGEN_INIT 147 -# define EVP_F_EVP_PKEY_NEW 106 -# define EVP_F_EVP_PKEY_PARAMGEN 148 -# define EVP_F_EVP_PKEY_PARAMGEN_INIT 149 -# define EVP_F_EVP_PKEY_SIGN 140 -# define EVP_F_EVP_PKEY_SIGN_INIT 141 -# define EVP_F_EVP_PKEY_VERIFY 142 -# define EVP_F_EVP_PKEY_VERIFY_INIT 143 -# define EVP_F_EVP_PKEY_VERIFY_RECOVER 144 -# define EVP_F_EVP_PKEY_VERIFY_RECOVER_INIT 145 -# define EVP_F_EVP_RIJNDAEL 126 -# define EVP_F_EVP_SIGNFINAL 107 -# define EVP_F_EVP_VERIFYFINAL 108 -# define EVP_F_FIPS_CIPHERINIT 166 -# define EVP_F_FIPS_CIPHER_CTX_COPY 170 -# define EVP_F_FIPS_CIPHER_CTX_CTRL 167 -# define EVP_F_FIPS_CIPHER_CTX_SET_KEY_LENGTH 171 -# define EVP_F_FIPS_DIGESTINIT 168 -# define EVP_F_FIPS_MD_CTX_COPY 169 -# define EVP_F_HMAC_INIT_EX 174 -# define EVP_F_INT_CTX_NEW 157 -# define EVP_F_PKCS5_PBE_KEYIVGEN 117 -# define EVP_F_PKCS5_V2_PBE_KEYIVGEN 118 -# define EVP_F_PKCS5_V2_PBKDF2_KEYIVGEN 164 -# define EVP_F_PKCS8_SET_BROKEN 112 -# define EVP_F_PKEY_SET_TYPE 158 -# define EVP_F_RC2_MAGIC_TO_METH 109 -# define EVP_F_RC5_CTRL 125 - -/* Reason codes. */ -# define EVP_R_AES_IV_SETUP_FAILED 162 -# define EVP_R_AES_KEY_SETUP_FAILED 143 -# define EVP_R_ASN1_LIB 140 -# define EVP_R_BAD_BLOCK_LENGTH 136 -# define EVP_R_BAD_DECRYPT 100 -# define EVP_R_BAD_KEY_LENGTH 137 -# define EVP_R_BN_DECODE_ERROR 112 -# define EVP_R_BN_PUBKEY_ERROR 113 -# define EVP_R_BUFFER_TOO_SMALL 155 -# define EVP_R_CAMELLIA_KEY_SETUP_FAILED 157 -# define EVP_R_CIPHER_PARAMETER_ERROR 122 -# define EVP_R_COMMAND_NOT_SUPPORTED 147 -# define EVP_R_CTRL_NOT_IMPLEMENTED 132 -# define EVP_R_CTRL_OPERATION_NOT_IMPLEMENTED 133 -# define EVP_R_DATA_NOT_MULTIPLE_OF_BLOCK_LENGTH 138 -# define EVP_R_DECODE_ERROR 114 -# define EVP_R_DIFFERENT_KEY_TYPES 101 -# define EVP_R_DIFFERENT_PARAMETERS 153 -# define EVP_R_DISABLED_FOR_FIPS 163 -# define EVP_R_ENCODE_ERROR 115 -# define EVP_R_ERROR_LOADING_SECTION 165 -# define EVP_R_ERROR_SETTING_FIPS_MODE 166 -# define EVP_R_EVP_PBE_CIPHERINIT_ERROR 119 -# define EVP_R_EXPECTING_AN_RSA_KEY 127 -# define EVP_R_EXPECTING_A_DH_KEY 128 -# define EVP_R_EXPECTING_A_DSA_KEY 129 -# define EVP_R_EXPECTING_A_ECDSA_KEY 141 -# define EVP_R_EXPECTING_A_EC_KEY 142 -# define EVP_R_FIPS_MODE_NOT_SUPPORTED 167 -# define EVP_R_INITIALIZATION_ERROR 134 -# define EVP_R_INPUT_NOT_INITIALIZED 111 -# define EVP_R_INVALID_DIGEST 152 -# define EVP_R_INVALID_FIPS_MODE 168 -# define EVP_R_INVALID_KEY_LENGTH 130 -# define EVP_R_INVALID_OPERATION 148 -# define EVP_R_IV_TOO_LARGE 102 -# define EVP_R_KEYGEN_FAILURE 120 -# define EVP_R_MESSAGE_DIGEST_IS_NULL 159 -# define EVP_R_METHOD_NOT_SUPPORTED 144 -# define EVP_R_MISSING_PARAMETERS 103 -# define EVP_R_NO_CIPHER_SET 131 -# define EVP_R_NO_DEFAULT_DIGEST 158 -# define EVP_R_NO_DIGEST_SET 139 -# define EVP_R_NO_DSA_PARAMETERS 116 -# define EVP_R_NO_KEY_SET 154 -# define EVP_R_NO_OPERATION_SET 149 -# define EVP_R_NO_SIGN_FUNCTION_CONFIGURED 104 -# define EVP_R_NO_VERIFY_FUNCTION_CONFIGURED 105 -# define EVP_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE 150 -# define EVP_R_OPERATON_NOT_INITIALIZED 151 -# define EVP_R_PKCS8_UNKNOWN_BROKEN_TYPE 117 -# define EVP_R_PRIVATE_KEY_DECODE_ERROR 145 -# define EVP_R_PRIVATE_KEY_ENCODE_ERROR 146 -# define EVP_R_PUBLIC_KEY_NOT_RSA 106 -# define EVP_R_TOO_LARGE 164 -# define EVP_R_UNKNOWN_CIPHER 160 -# define EVP_R_UNKNOWN_DIGEST 161 -# define EVP_R_UNKNOWN_OPTION 169 -# define EVP_R_UNKNOWN_PBE_ALGORITHM 121 -# define EVP_R_UNSUPORTED_NUMBER_OF_ROUNDS 135 -# define EVP_R_UNSUPPORTED_ALGORITHM 156 -# define EVP_R_UNSUPPORTED_CIPHER 107 -# define EVP_R_UNSUPPORTED_KEYLENGTH 123 -# define EVP_R_UNSUPPORTED_KEY_DERIVATION_FUNCTION 124 -# define EVP_R_UNSUPPORTED_KEY_SIZE 108 -# define EVP_R_UNSUPPORTED_PRF 125 -# define EVP_R_UNSUPPORTED_PRIVATE_KEY_ALGORITHM 118 -# define EVP_R_UNSUPPORTED_SALT_TYPE 126 -# define EVP_R_WRAP_MODE_NOT_ALLOWED 170 -# define EVP_R_WRONG_FINAL_BLOCK_LENGTH 109 -# define EVP_R_WRONG_PUBLIC_KEY_TYPE 110 - -#ifdef __cplusplus -} -#endif -#endif diff --git a/ext/openssl-win64/inc32/openssl/hmac.h b/ext/openssl-win64/inc32/openssl/hmac.h deleted file mode 100644 index b8b55cda..00000000 --- a/ext/openssl-win64/inc32/openssl/hmac.h +++ /dev/null @@ -1,109 +0,0 @@ -/* crypto/hmac/hmac.h */ -/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) - * All rights reserved. - * - * This package is an SSL implementation written - * by Eric Young (eay@cryptsoft.com). - * The implementation was written so as to conform with Netscapes SSL. - * - * This library is free for commercial and non-commercial use as long as - * the following conditions are aheared to. The following conditions - * apply to all code found in this distribution, be it the RC4, RSA, - * lhash, DES, etc., code; not just the SSL code. The SSL documentation - * included with this distribution is covered by the same copyright terms - * except that the holder is Tim Hudson (tjh@cryptsoft.com). - * - * Copyright remains Eric Young's, and as such any Copyright notices in - * the code are not to be removed. - * If this package is used in a product, Eric Young should be given attribution - * as the author of the parts of the library used. - * This can be in the form of a textual message at program startup or - * in documentation (online or textual) provided with the package. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * "This product includes cryptographic software written by - * Eric Young (eay@cryptsoft.com)" - * The word 'cryptographic' can be left out if the rouines from the library - * being used are not cryptographic related :-). - * 4. If you include any Windows specific code (or a derivative thereof) from - * the apps directory (application code) you must include an acknowledgement: - * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" - * - * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * The licence and distribution terms for any publically available version or - * derivative of this code cannot be changed. i.e. this code cannot simply be - * copied and put under another distribution licence - * [including the GNU Public Licence.] - */ -#ifndef HEADER_HMAC_H -# define HEADER_HMAC_H - -# include - -# ifdef OPENSSL_NO_HMAC -# error HMAC is disabled. -# endif - -# include - -# define HMAC_MAX_MD_CBLOCK 128/* largest known is SHA512 */ - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct hmac_ctx_st { - const EVP_MD *md; - EVP_MD_CTX md_ctx; - EVP_MD_CTX i_ctx; - EVP_MD_CTX o_ctx; - unsigned int key_length; - unsigned char key[HMAC_MAX_MD_CBLOCK]; -} HMAC_CTX; - -# define HMAC_size(e) (EVP_MD_size((e)->md)) - -void HMAC_CTX_init(HMAC_CTX *ctx); -void HMAC_CTX_cleanup(HMAC_CTX *ctx); - -/* deprecated */ -# define HMAC_cleanup(ctx) HMAC_CTX_cleanup(ctx) - -/* deprecated */ -int HMAC_Init(HMAC_CTX *ctx, const void *key, int len, const EVP_MD *md); -int HMAC_Init_ex(HMAC_CTX *ctx, const void *key, int len, - const EVP_MD *md, ENGINE *impl); -int HMAC_Update(HMAC_CTX *ctx, const unsigned char *data, size_t len); -int HMAC_Final(HMAC_CTX *ctx, unsigned char *md, unsigned int *len); -unsigned char *HMAC(const EVP_MD *evp_md, const void *key, int key_len, - const unsigned char *d, size_t n, unsigned char *md, - unsigned int *md_len); -int HMAC_CTX_copy(HMAC_CTX *dctx, HMAC_CTX *sctx); - -void HMAC_CTX_set_flags(HMAC_CTX *ctx, unsigned long flags); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/ext/openssl-win64/inc32/openssl/kssl.h b/ext/openssl-win64/inc32/openssl/kssl.h deleted file mode 100644 index 9a576728..00000000 --- a/ext/openssl-win64/inc32/openssl/kssl.h +++ /dev/null @@ -1,197 +0,0 @@ -/* ssl/kssl.h -*- mode: C; c-file-style: "eay" -*- */ -/* - * Written by Vern Staats for the OpenSSL project - * 2000. project 2000. - */ -/* ==================================================================== - * Copyright (c) 2000 The OpenSSL Project. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. All advertising materials mentioning features or use of this - * software must display the following acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" - * - * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * licensing@OpenSSL.org. - * - * 5. Products derived from this software may not be called "OpenSSL" - * nor may "OpenSSL" appear in their names without prior written - * permission of the OpenSSL Project. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" - * - * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY - * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * ==================================================================== - * - * This product includes cryptographic software written by Eric Young - * (eay@cryptsoft.com). This product includes software written by Tim - * Hudson (tjh@cryptsoft.com). - * - */ - -/* - ** 19990701 VRS Started. - */ - -#ifndef KSSL_H -# define KSSL_H - -# include - -# ifndef OPENSSL_NO_KRB5 - -# include -# include -# include -# ifdef OPENSSL_SYS_WIN32 -/* - * These can sometimes get redefined indirectly by krb5 header files after - * they get undefed in ossl_typ.h - */ -# undef X509_NAME -# undef X509_EXTENSIONS -# undef OCSP_REQUEST -# undef OCSP_RESPONSE -# endif - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * Depending on which KRB5 implementation used, some types from - * the other may be missing. Resolve that here and now - */ -# ifdef KRB5_HEIMDAL -typedef unsigned char krb5_octet; -# define FAR -# else - -# ifndef FAR -# define FAR -# endif - -# endif - -/*- - * Uncomment this to debug kssl problems or - * to trace usage of the Kerberos session key - * - * #define KSSL_DEBUG - */ - -# ifndef KRB5SVC -# define KRB5SVC "host" -# endif - -# ifndef KRB5KEYTAB -# define KRB5KEYTAB "/etc/krb5.keytab" -# endif - -# ifndef KRB5SENDAUTH -# define KRB5SENDAUTH 1 -# endif - -# ifndef KRB5CHECKAUTH -# define KRB5CHECKAUTH 1 -# endif - -# ifndef KSSL_CLOCKSKEW -# define KSSL_CLOCKSKEW 300; -# endif - -# define KSSL_ERR_MAX 255 -typedef struct kssl_err_st { - int reason; - char text[KSSL_ERR_MAX + 1]; -} KSSL_ERR; - -/*- Context for passing - * (1) Kerberos session key to SSL, and - * (2) Config data between application and SSL lib - */ -typedef struct kssl_ctx_st { - /* used by: disposition: */ - char *service_name; /* C,S default ok (kssl) */ - char *service_host; /* C input, REQUIRED */ - char *client_princ; /* S output from krb5 ticket */ - char *keytab_file; /* S NULL (/etc/krb5.keytab) */ - char *cred_cache; /* C NULL (default) */ - krb5_enctype enctype; - int length; - krb5_octet FAR *key; -} KSSL_CTX; - -# define KSSL_CLIENT 1 -# define KSSL_SERVER 2 -# define KSSL_SERVICE 3 -# define KSSL_KEYTAB 4 - -# define KSSL_CTX_OK 0 -# define KSSL_CTX_ERR 1 -# define KSSL_NOMEM 2 - -/* Public (for use by applications that use OpenSSL with Kerberos 5 support */ -krb5_error_code kssl_ctx_setstring(KSSL_CTX *kssl_ctx, int which, char *text); -KSSL_CTX *kssl_ctx_new(void); -KSSL_CTX *kssl_ctx_free(KSSL_CTX *kssl_ctx); -void kssl_ctx_show(KSSL_CTX *kssl_ctx); -krb5_error_code kssl_ctx_setprinc(KSSL_CTX *kssl_ctx, int which, - krb5_data *realm, krb5_data *entity, - int nentities); -krb5_error_code kssl_cget_tkt(KSSL_CTX *kssl_ctx, krb5_data **enc_tktp, - krb5_data *authenp, KSSL_ERR *kssl_err); -krb5_error_code kssl_sget_tkt(KSSL_CTX *kssl_ctx, krb5_data *indata, - krb5_ticket_times *ttimes, KSSL_ERR *kssl_err); -krb5_error_code kssl_ctx_setkey(KSSL_CTX *kssl_ctx, krb5_keyblock *session); -void kssl_err_set(KSSL_ERR *kssl_err, int reason, char *text); -void kssl_krb5_free_data_contents(krb5_context context, krb5_data *data); -krb5_error_code kssl_build_principal_2(krb5_context context, - krb5_principal *princ, int rlen, - const char *realm, int slen, - const char *svc, int hlen, - const char *host); -krb5_error_code kssl_validate_times(krb5_timestamp atime, - krb5_ticket_times *ttimes); -krb5_error_code kssl_check_authent(KSSL_CTX *kssl_ctx, krb5_data *authentp, - krb5_timestamp *atimep, - KSSL_ERR *kssl_err); -unsigned char *kssl_skip_confound(krb5_enctype enctype, unsigned char *authn); - -void SSL_set0_kssl_ctx(SSL *s, KSSL_CTX *kctx); -KSSL_CTX *SSL_get0_kssl_ctx(SSL *s); -char *kssl_ctx_get0_client_princ(KSSL_CTX *kctx); - -#ifdef __cplusplus -} -#endif -# endif /* OPENSSL_NO_KRB5 */ -#endif /* KSSL_H */ diff --git a/ext/openssl-win64/inc32/openssl/lhash.h b/ext/openssl-win64/inc32/openssl/lhash.h deleted file mode 100644 index b6c328bf..00000000 --- a/ext/openssl-win64/inc32/openssl/lhash.h +++ /dev/null @@ -1,240 +0,0 @@ -/* crypto/lhash/lhash.h */ -/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) - * All rights reserved. - * - * This package is an SSL implementation written - * by Eric Young (eay@cryptsoft.com). - * The implementation was written so as to conform with Netscapes SSL. - * - * This library is free for commercial and non-commercial use as long as - * the following conditions are aheared to. The following conditions - * apply to all code found in this distribution, be it the RC4, RSA, - * lhash, DES, etc., code; not just the SSL code. The SSL documentation - * included with this distribution is covered by the same copyright terms - * except that the holder is Tim Hudson (tjh@cryptsoft.com). - * - * Copyright remains Eric Young's, and as such any Copyright notices in - * the code are not to be removed. - * If this package is used in a product, Eric Young should be given attribution - * as the author of the parts of the library used. - * This can be in the form of a textual message at program startup or - * in documentation (online or textual) provided with the package. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * "This product includes cryptographic software written by - * Eric Young (eay@cryptsoft.com)" - * The word 'cryptographic' can be left out if the rouines from the library - * being used are not cryptographic related :-). - * 4. If you include any Windows specific code (or a derivative thereof) from - * the apps directory (application code) you must include an acknowledgement: - * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" - * - * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * The licence and distribution terms for any publically available version or - * derivative of this code cannot be changed. i.e. this code cannot simply be - * copied and put under another distribution licence - * [including the GNU Public Licence.] - */ - -/* - * Header for dynamic hash table routines Author - Eric Young - */ - -#ifndef HEADER_LHASH_H -# define HEADER_LHASH_H - -# include -# ifndef OPENSSL_NO_FP_API -# include -# endif - -# ifndef OPENSSL_NO_BIO -# include -# endif - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct lhash_node_st { - void *data; - struct lhash_node_st *next; -# ifndef OPENSSL_NO_HASH_COMP - unsigned long hash; -# endif -} LHASH_NODE; - -typedef int (*LHASH_COMP_FN_TYPE) (const void *, const void *); -typedef unsigned long (*LHASH_HASH_FN_TYPE) (const void *); -typedef void (*LHASH_DOALL_FN_TYPE) (void *); -typedef void (*LHASH_DOALL_ARG_FN_TYPE) (void *, void *); - -/* - * Macros for declaring and implementing type-safe wrappers for LHASH - * callbacks. This way, callbacks can be provided to LHASH structures without - * function pointer casting and the macro-defined callbacks provide - * per-variable casting before deferring to the underlying type-specific - * callbacks. NB: It is possible to place a "static" in front of both the - * DECLARE and IMPLEMENT macros if the functions are strictly internal. - */ - -/* First: "hash" functions */ -# define DECLARE_LHASH_HASH_FN(name, o_type) \ - unsigned long name##_LHASH_HASH(const void *); -# define IMPLEMENT_LHASH_HASH_FN(name, o_type) \ - unsigned long name##_LHASH_HASH(const void *arg) { \ - const o_type *a = arg; \ - return name##_hash(a); } -# define LHASH_HASH_FN(name) name##_LHASH_HASH - -/* Second: "compare" functions */ -# define DECLARE_LHASH_COMP_FN(name, o_type) \ - int name##_LHASH_COMP(const void *, const void *); -# define IMPLEMENT_LHASH_COMP_FN(name, o_type) \ - int name##_LHASH_COMP(const void *arg1, const void *arg2) { \ - const o_type *a = arg1; \ - const o_type *b = arg2; \ - return name##_cmp(a,b); } -# define LHASH_COMP_FN(name) name##_LHASH_COMP - -/* Third: "doall" functions */ -# define DECLARE_LHASH_DOALL_FN(name, o_type) \ - void name##_LHASH_DOALL(void *); -# define IMPLEMENT_LHASH_DOALL_FN(name, o_type) \ - void name##_LHASH_DOALL(void *arg) { \ - o_type *a = arg; \ - name##_doall(a); } -# define LHASH_DOALL_FN(name) name##_LHASH_DOALL - -/* Fourth: "doall_arg" functions */ -# define DECLARE_LHASH_DOALL_ARG_FN(name, o_type, a_type) \ - void name##_LHASH_DOALL_ARG(void *, void *); -# define IMPLEMENT_LHASH_DOALL_ARG_FN(name, o_type, a_type) \ - void name##_LHASH_DOALL_ARG(void *arg1, void *arg2) { \ - o_type *a = arg1; \ - a_type *b = arg2; \ - name##_doall_arg(a, b); } -# define LHASH_DOALL_ARG_FN(name) name##_LHASH_DOALL_ARG - -typedef struct lhash_st { - LHASH_NODE **b; - LHASH_COMP_FN_TYPE comp; - LHASH_HASH_FN_TYPE hash; - unsigned int num_nodes; - unsigned int num_alloc_nodes; - unsigned int p; - unsigned int pmax; - unsigned long up_load; /* load times 256 */ - unsigned long down_load; /* load times 256 */ - unsigned long num_items; - unsigned long num_expands; - unsigned long num_expand_reallocs; - unsigned long num_contracts; - unsigned long num_contract_reallocs; - unsigned long num_hash_calls; - unsigned long num_comp_calls; - unsigned long num_insert; - unsigned long num_replace; - unsigned long num_delete; - unsigned long num_no_delete; - unsigned long num_retrieve; - unsigned long num_retrieve_miss; - unsigned long num_hash_comps; - int error; -} _LHASH; /* Do not use _LHASH directly, use LHASH_OF - * and friends */ - -# define LH_LOAD_MULT 256 - -/* - * Indicates a malloc() error in the last call, this is only bad in - * lh_insert(). - */ -# define lh_error(lh) ((lh)->error) - -_LHASH *lh_new(LHASH_HASH_FN_TYPE h, LHASH_COMP_FN_TYPE c); -void lh_free(_LHASH *lh); -void *lh_insert(_LHASH *lh, void *data); -void *lh_delete(_LHASH *lh, const void *data); -void *lh_retrieve(_LHASH *lh, const void *data); -void lh_doall(_LHASH *lh, LHASH_DOALL_FN_TYPE func); -void lh_doall_arg(_LHASH *lh, LHASH_DOALL_ARG_FN_TYPE func, void *arg); -unsigned long lh_strhash(const char *c); -unsigned long lh_num_items(const _LHASH *lh); - -# ifndef OPENSSL_NO_FP_API -void lh_stats(const _LHASH *lh, FILE *out); -void lh_node_stats(const _LHASH *lh, FILE *out); -void lh_node_usage_stats(const _LHASH *lh, FILE *out); -# endif - -# ifndef OPENSSL_NO_BIO -void lh_stats_bio(const _LHASH *lh, BIO *out); -void lh_node_stats_bio(const _LHASH *lh, BIO *out); -void lh_node_usage_stats_bio(const _LHASH *lh, BIO *out); -# endif - -/* Type checking... */ - -# define LHASH_OF(type) struct lhash_st_##type - -# define DECLARE_LHASH_OF(type) LHASH_OF(type) { int dummy; } - -# define CHECKED_LHASH_OF(type,lh) \ - ((_LHASH *)CHECKED_PTR_OF(LHASH_OF(type),lh)) - -/* Define wrapper functions. */ -# define LHM_lh_new(type, name) \ - ((LHASH_OF(type) *)lh_new(LHASH_HASH_FN(name), LHASH_COMP_FN(name))) -# define LHM_lh_error(type, lh) \ - lh_error(CHECKED_LHASH_OF(type,lh)) -# define LHM_lh_insert(type, lh, inst) \ - ((type *)lh_insert(CHECKED_LHASH_OF(type, lh), \ - CHECKED_PTR_OF(type, inst))) -# define LHM_lh_retrieve(type, lh, inst) \ - ((type *)lh_retrieve(CHECKED_LHASH_OF(type, lh), \ - CHECKED_PTR_OF(type, inst))) -# define LHM_lh_delete(type, lh, inst) \ - ((type *)lh_delete(CHECKED_LHASH_OF(type, lh), \ - CHECKED_PTR_OF(type, inst))) -# define LHM_lh_doall(type, lh,fn) lh_doall(CHECKED_LHASH_OF(type, lh), fn) -# define LHM_lh_doall_arg(type, lh, fn, arg_type, arg) \ - lh_doall_arg(CHECKED_LHASH_OF(type, lh), fn, CHECKED_PTR_OF(arg_type, arg)) -# define LHM_lh_num_items(type, lh) lh_num_items(CHECKED_LHASH_OF(type, lh)) -# define LHM_lh_down_load(type, lh) (CHECKED_LHASH_OF(type, lh)->down_load) -# define LHM_lh_node_stats_bio(type, lh, out) \ - lh_node_stats_bio(CHECKED_LHASH_OF(type, lh), out) -# define LHM_lh_node_usage_stats_bio(type, lh, out) \ - lh_node_usage_stats_bio(CHECKED_LHASH_OF(type, lh), out) -# define LHM_lh_stats_bio(type, lh, out) \ - lh_stats_bio(CHECKED_LHASH_OF(type, lh), out) -# define LHM_lh_free(type, lh) lh_free(CHECKED_LHASH_OF(type, lh)) - -DECLARE_LHASH_OF(OPENSSL_STRING); -DECLARE_LHASH_OF(OPENSSL_CSTRING); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/ext/openssl-win64/inc32/openssl/obj_mac.h b/ext/openssl-win64/inc32/openssl/obj_mac.h deleted file mode 100644 index 779c309b..00000000 --- a/ext/openssl-win64/inc32/openssl/obj_mac.h +++ /dev/null @@ -1,4194 +0,0 @@ -/* crypto/objects/obj_mac.h */ - -/* - * THIS FILE IS GENERATED FROM objects.txt by objects.pl via the following - * command: perl objects.pl objects.txt obj_mac.num obj_mac.h - */ - -/* Copyright (C) 1995-1997 Eric Young (eay@cryptsoft.com) - * All rights reserved. - * - * This package is an SSL implementation written - * by Eric Young (eay@cryptsoft.com). - * The implementation was written so as to conform with Netscapes SSL. - * - * This library is free for commercial and non-commercial use as long as - * the following conditions are aheared to. The following conditions - * apply to all code found in this distribution, be it the RC4, RSA, - * lhash, DES, etc., code; not just the SSL code. The SSL documentation - * included with this distribution is covered by the same copyright terms - * except that the holder is Tim Hudson (tjh@cryptsoft.com). - * - * Copyright remains Eric Young's, and as such any Copyright notices in - * the code are not to be removed. - * If this package is used in a product, Eric Young should be given attribution - * as the author of the parts of the library used. - * This can be in the form of a textual message at program startup or - * in documentation (online or textual) provided with the package. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * "This product includes cryptographic software written by - * Eric Young (eay@cryptsoft.com)" - * The word 'cryptographic' can be left out if the rouines from the library - * being used are not cryptographic related :-). - * 4. If you include any Windows specific code (or a derivative thereof) from - * the apps directory (application code) you must include an acknowledgement: - * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" - * - * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * The licence and distribution terms for any publically available version or - * derivative of this code cannot be changed. i.e. this code cannot simply be - * copied and put under another distribution licence - * [including the GNU Public Licence.] - */ - -#define SN_undef "UNDEF" -#define LN_undef "undefined" -#define NID_undef 0 -#define OBJ_undef 0L - -#define SN_itu_t "ITU-T" -#define LN_itu_t "itu-t" -#define NID_itu_t 645 -#define OBJ_itu_t 0L - -#define NID_ccitt 404 -#define OBJ_ccitt OBJ_itu_t - -#define SN_iso "ISO" -#define LN_iso "iso" -#define NID_iso 181 -#define OBJ_iso 1L - -#define SN_joint_iso_itu_t "JOINT-ISO-ITU-T" -#define LN_joint_iso_itu_t "joint-iso-itu-t" -#define NID_joint_iso_itu_t 646 -#define OBJ_joint_iso_itu_t 2L - -#define NID_joint_iso_ccitt 393 -#define OBJ_joint_iso_ccitt OBJ_joint_iso_itu_t - -#define SN_member_body "member-body" -#define LN_member_body "ISO Member Body" -#define NID_member_body 182 -#define OBJ_member_body OBJ_iso,2L - -#define SN_identified_organization "identified-organization" -#define NID_identified_organization 676 -#define OBJ_identified_organization OBJ_iso,3L - -#define SN_hmac_md5 "HMAC-MD5" -#define LN_hmac_md5 "hmac-md5" -#define NID_hmac_md5 780 -#define OBJ_hmac_md5 OBJ_identified_organization,6L,1L,5L,5L,8L,1L,1L - -#define SN_hmac_sha1 "HMAC-SHA1" -#define LN_hmac_sha1 "hmac-sha1" -#define NID_hmac_sha1 781 -#define OBJ_hmac_sha1 OBJ_identified_organization,6L,1L,5L,5L,8L,1L,2L - -#define SN_certicom_arc "certicom-arc" -#define NID_certicom_arc 677 -#define OBJ_certicom_arc OBJ_identified_organization,132L - -#define SN_international_organizations "international-organizations" -#define LN_international_organizations "International Organizations" -#define NID_international_organizations 647 -#define OBJ_international_organizations OBJ_joint_iso_itu_t,23L - -#define SN_wap "wap" -#define NID_wap 678 -#define OBJ_wap OBJ_international_organizations,43L - -#define SN_wap_wsg "wap-wsg" -#define NID_wap_wsg 679 -#define OBJ_wap_wsg OBJ_wap,1L - -#define SN_selected_attribute_types "selected-attribute-types" -#define LN_selected_attribute_types "Selected Attribute Types" -#define NID_selected_attribute_types 394 -#define OBJ_selected_attribute_types OBJ_joint_iso_itu_t,5L,1L,5L - -#define SN_clearance "clearance" -#define NID_clearance 395 -#define OBJ_clearance OBJ_selected_attribute_types,55L - -#define SN_ISO_US "ISO-US" -#define LN_ISO_US "ISO US Member Body" -#define NID_ISO_US 183 -#define OBJ_ISO_US OBJ_member_body,840L - -#define SN_X9_57 "X9-57" -#define LN_X9_57 "X9.57" -#define NID_X9_57 184 -#define OBJ_X9_57 OBJ_ISO_US,10040L - -#define SN_X9cm "X9cm" -#define LN_X9cm "X9.57 CM ?" -#define NID_X9cm 185 -#define OBJ_X9cm OBJ_X9_57,4L - -#define SN_dsa "DSA" -#define LN_dsa "dsaEncryption" -#define NID_dsa 116 -#define OBJ_dsa OBJ_X9cm,1L - -#define SN_dsaWithSHA1 "DSA-SHA1" -#define LN_dsaWithSHA1 "dsaWithSHA1" -#define NID_dsaWithSHA1 113 -#define OBJ_dsaWithSHA1 OBJ_X9cm,3L - -#define SN_ansi_X9_62 "ansi-X9-62" -#define LN_ansi_X9_62 "ANSI X9.62" -#define NID_ansi_X9_62 405 -#define OBJ_ansi_X9_62 OBJ_ISO_US,10045L - -#define OBJ_X9_62_id_fieldType OBJ_ansi_X9_62,1L - -#define SN_X9_62_prime_field "prime-field" -#define NID_X9_62_prime_field 406 -#define OBJ_X9_62_prime_field OBJ_X9_62_id_fieldType,1L - -#define SN_X9_62_characteristic_two_field "characteristic-two-field" -#define NID_X9_62_characteristic_two_field 407 -#define OBJ_X9_62_characteristic_two_field OBJ_X9_62_id_fieldType,2L - -#define SN_X9_62_id_characteristic_two_basis "id-characteristic-two-basis" -#define NID_X9_62_id_characteristic_two_basis 680 -#define OBJ_X9_62_id_characteristic_two_basis OBJ_X9_62_characteristic_two_field,3L - -#define SN_X9_62_onBasis "onBasis" -#define NID_X9_62_onBasis 681 -#define OBJ_X9_62_onBasis OBJ_X9_62_id_characteristic_two_basis,1L - -#define SN_X9_62_tpBasis "tpBasis" -#define NID_X9_62_tpBasis 682 -#define OBJ_X9_62_tpBasis OBJ_X9_62_id_characteristic_two_basis,2L - -#define SN_X9_62_ppBasis "ppBasis" -#define NID_X9_62_ppBasis 683 -#define OBJ_X9_62_ppBasis OBJ_X9_62_id_characteristic_two_basis,3L - -#define OBJ_X9_62_id_publicKeyType OBJ_ansi_X9_62,2L - -#define SN_X9_62_id_ecPublicKey "id-ecPublicKey" -#define NID_X9_62_id_ecPublicKey 408 -#define OBJ_X9_62_id_ecPublicKey OBJ_X9_62_id_publicKeyType,1L - -#define OBJ_X9_62_ellipticCurve OBJ_ansi_X9_62,3L - -#define OBJ_X9_62_c_TwoCurve OBJ_X9_62_ellipticCurve,0L - -#define SN_X9_62_c2pnb163v1 "c2pnb163v1" -#define NID_X9_62_c2pnb163v1 684 -#define OBJ_X9_62_c2pnb163v1 OBJ_X9_62_c_TwoCurve,1L - -#define SN_X9_62_c2pnb163v2 "c2pnb163v2" -#define NID_X9_62_c2pnb163v2 685 -#define OBJ_X9_62_c2pnb163v2 OBJ_X9_62_c_TwoCurve,2L - -#define SN_X9_62_c2pnb163v3 "c2pnb163v3" -#define NID_X9_62_c2pnb163v3 686 -#define OBJ_X9_62_c2pnb163v3 OBJ_X9_62_c_TwoCurve,3L - -#define SN_X9_62_c2pnb176v1 "c2pnb176v1" -#define NID_X9_62_c2pnb176v1 687 -#define OBJ_X9_62_c2pnb176v1 OBJ_X9_62_c_TwoCurve,4L - -#define SN_X9_62_c2tnb191v1 "c2tnb191v1" -#define NID_X9_62_c2tnb191v1 688 -#define OBJ_X9_62_c2tnb191v1 OBJ_X9_62_c_TwoCurve,5L - -#define SN_X9_62_c2tnb191v2 "c2tnb191v2" -#define NID_X9_62_c2tnb191v2 689 -#define OBJ_X9_62_c2tnb191v2 OBJ_X9_62_c_TwoCurve,6L - -#define SN_X9_62_c2tnb191v3 "c2tnb191v3" -#define NID_X9_62_c2tnb191v3 690 -#define OBJ_X9_62_c2tnb191v3 OBJ_X9_62_c_TwoCurve,7L - -#define SN_X9_62_c2onb191v4 "c2onb191v4" -#define NID_X9_62_c2onb191v4 691 -#define OBJ_X9_62_c2onb191v4 OBJ_X9_62_c_TwoCurve,8L - -#define SN_X9_62_c2onb191v5 "c2onb191v5" -#define NID_X9_62_c2onb191v5 692 -#define OBJ_X9_62_c2onb191v5 OBJ_X9_62_c_TwoCurve,9L - -#define SN_X9_62_c2pnb208w1 "c2pnb208w1" -#define NID_X9_62_c2pnb208w1 693 -#define OBJ_X9_62_c2pnb208w1 OBJ_X9_62_c_TwoCurve,10L - -#define SN_X9_62_c2tnb239v1 "c2tnb239v1" -#define NID_X9_62_c2tnb239v1 694 -#define OBJ_X9_62_c2tnb239v1 OBJ_X9_62_c_TwoCurve,11L - -#define SN_X9_62_c2tnb239v2 "c2tnb239v2" -#define NID_X9_62_c2tnb239v2 695 -#define OBJ_X9_62_c2tnb239v2 OBJ_X9_62_c_TwoCurve,12L - -#define SN_X9_62_c2tnb239v3 "c2tnb239v3" -#define NID_X9_62_c2tnb239v3 696 -#define OBJ_X9_62_c2tnb239v3 OBJ_X9_62_c_TwoCurve,13L - -#define SN_X9_62_c2onb239v4 "c2onb239v4" -#define NID_X9_62_c2onb239v4 697 -#define OBJ_X9_62_c2onb239v4 OBJ_X9_62_c_TwoCurve,14L - -#define SN_X9_62_c2onb239v5 "c2onb239v5" -#define NID_X9_62_c2onb239v5 698 -#define OBJ_X9_62_c2onb239v5 OBJ_X9_62_c_TwoCurve,15L - -#define SN_X9_62_c2pnb272w1 "c2pnb272w1" -#define NID_X9_62_c2pnb272w1 699 -#define OBJ_X9_62_c2pnb272w1 OBJ_X9_62_c_TwoCurve,16L - -#define SN_X9_62_c2pnb304w1 "c2pnb304w1" -#define NID_X9_62_c2pnb304w1 700 -#define OBJ_X9_62_c2pnb304w1 OBJ_X9_62_c_TwoCurve,17L - -#define SN_X9_62_c2tnb359v1 "c2tnb359v1" -#define NID_X9_62_c2tnb359v1 701 -#define OBJ_X9_62_c2tnb359v1 OBJ_X9_62_c_TwoCurve,18L - -#define SN_X9_62_c2pnb368w1 "c2pnb368w1" -#define NID_X9_62_c2pnb368w1 702 -#define OBJ_X9_62_c2pnb368w1 OBJ_X9_62_c_TwoCurve,19L - -#define SN_X9_62_c2tnb431r1 "c2tnb431r1" -#define NID_X9_62_c2tnb431r1 703 -#define OBJ_X9_62_c2tnb431r1 OBJ_X9_62_c_TwoCurve,20L - -#define OBJ_X9_62_primeCurve OBJ_X9_62_ellipticCurve,1L - -#define SN_X9_62_prime192v1 "prime192v1" -#define NID_X9_62_prime192v1 409 -#define OBJ_X9_62_prime192v1 OBJ_X9_62_primeCurve,1L - -#define SN_X9_62_prime192v2 "prime192v2" -#define NID_X9_62_prime192v2 410 -#define OBJ_X9_62_prime192v2 OBJ_X9_62_primeCurve,2L - -#define SN_X9_62_prime192v3 "prime192v3" -#define NID_X9_62_prime192v3 411 -#define OBJ_X9_62_prime192v3 OBJ_X9_62_primeCurve,3L - -#define SN_X9_62_prime239v1 "prime239v1" -#define NID_X9_62_prime239v1 412 -#define OBJ_X9_62_prime239v1 OBJ_X9_62_primeCurve,4L - -#define SN_X9_62_prime239v2 "prime239v2" -#define NID_X9_62_prime239v2 413 -#define OBJ_X9_62_prime239v2 OBJ_X9_62_primeCurve,5L - -#define SN_X9_62_prime239v3 "prime239v3" -#define NID_X9_62_prime239v3 414 -#define OBJ_X9_62_prime239v3 OBJ_X9_62_primeCurve,6L - -#define SN_X9_62_prime256v1 "prime256v1" -#define NID_X9_62_prime256v1 415 -#define OBJ_X9_62_prime256v1 OBJ_X9_62_primeCurve,7L - -#define OBJ_X9_62_id_ecSigType OBJ_ansi_X9_62,4L - -#define SN_ecdsa_with_SHA1 "ecdsa-with-SHA1" -#define NID_ecdsa_with_SHA1 416 -#define OBJ_ecdsa_with_SHA1 OBJ_X9_62_id_ecSigType,1L - -#define SN_ecdsa_with_Recommended "ecdsa-with-Recommended" -#define NID_ecdsa_with_Recommended 791 -#define OBJ_ecdsa_with_Recommended OBJ_X9_62_id_ecSigType,2L - -#define SN_ecdsa_with_Specified "ecdsa-with-Specified" -#define NID_ecdsa_with_Specified 792 -#define OBJ_ecdsa_with_Specified OBJ_X9_62_id_ecSigType,3L - -#define SN_ecdsa_with_SHA224 "ecdsa-with-SHA224" -#define NID_ecdsa_with_SHA224 793 -#define OBJ_ecdsa_with_SHA224 OBJ_ecdsa_with_Specified,1L - -#define SN_ecdsa_with_SHA256 "ecdsa-with-SHA256" -#define NID_ecdsa_with_SHA256 794 -#define OBJ_ecdsa_with_SHA256 OBJ_ecdsa_with_Specified,2L - -#define SN_ecdsa_with_SHA384 "ecdsa-with-SHA384" -#define NID_ecdsa_with_SHA384 795 -#define OBJ_ecdsa_with_SHA384 OBJ_ecdsa_with_Specified,3L - -#define SN_ecdsa_with_SHA512 "ecdsa-with-SHA512" -#define NID_ecdsa_with_SHA512 796 -#define OBJ_ecdsa_with_SHA512 OBJ_ecdsa_with_Specified,4L - -#define OBJ_secg_ellipticCurve OBJ_certicom_arc,0L - -#define SN_secp112r1 "secp112r1" -#define NID_secp112r1 704 -#define OBJ_secp112r1 OBJ_secg_ellipticCurve,6L - -#define SN_secp112r2 "secp112r2" -#define NID_secp112r2 705 -#define OBJ_secp112r2 OBJ_secg_ellipticCurve,7L - -#define SN_secp128r1 "secp128r1" -#define NID_secp128r1 706 -#define OBJ_secp128r1 OBJ_secg_ellipticCurve,28L - -#define SN_secp128r2 "secp128r2" -#define NID_secp128r2 707 -#define OBJ_secp128r2 OBJ_secg_ellipticCurve,29L - -#define SN_secp160k1 "secp160k1" -#define NID_secp160k1 708 -#define OBJ_secp160k1 OBJ_secg_ellipticCurve,9L - -#define SN_secp160r1 "secp160r1" -#define NID_secp160r1 709 -#define OBJ_secp160r1 OBJ_secg_ellipticCurve,8L - -#define SN_secp160r2 "secp160r2" -#define NID_secp160r2 710 -#define OBJ_secp160r2 OBJ_secg_ellipticCurve,30L - -#define SN_secp192k1 "secp192k1" -#define NID_secp192k1 711 -#define OBJ_secp192k1 OBJ_secg_ellipticCurve,31L - -#define SN_secp224k1 "secp224k1" -#define NID_secp224k1 712 -#define OBJ_secp224k1 OBJ_secg_ellipticCurve,32L - -#define SN_secp224r1 "secp224r1" -#define NID_secp224r1 713 -#define OBJ_secp224r1 OBJ_secg_ellipticCurve,33L - -#define SN_secp256k1 "secp256k1" -#define NID_secp256k1 714 -#define OBJ_secp256k1 OBJ_secg_ellipticCurve,10L - -#define SN_secp384r1 "secp384r1" -#define NID_secp384r1 715 -#define OBJ_secp384r1 OBJ_secg_ellipticCurve,34L - -#define SN_secp521r1 "secp521r1" -#define NID_secp521r1 716 -#define OBJ_secp521r1 OBJ_secg_ellipticCurve,35L - -#define SN_sect113r1 "sect113r1" -#define NID_sect113r1 717 -#define OBJ_sect113r1 OBJ_secg_ellipticCurve,4L - -#define SN_sect113r2 "sect113r2" -#define NID_sect113r2 718 -#define OBJ_sect113r2 OBJ_secg_ellipticCurve,5L - -#define SN_sect131r1 "sect131r1" -#define NID_sect131r1 719 -#define OBJ_sect131r1 OBJ_secg_ellipticCurve,22L - -#define SN_sect131r2 "sect131r2" -#define NID_sect131r2 720 -#define OBJ_sect131r2 OBJ_secg_ellipticCurve,23L - -#define SN_sect163k1 "sect163k1" -#define NID_sect163k1 721 -#define OBJ_sect163k1 OBJ_secg_ellipticCurve,1L - -#define SN_sect163r1 "sect163r1" -#define NID_sect163r1 722 -#define OBJ_sect163r1 OBJ_secg_ellipticCurve,2L - -#define SN_sect163r2 "sect163r2" -#define NID_sect163r2 723 -#define OBJ_sect163r2 OBJ_secg_ellipticCurve,15L - -#define SN_sect193r1 "sect193r1" -#define NID_sect193r1 724 -#define OBJ_sect193r1 OBJ_secg_ellipticCurve,24L - -#define SN_sect193r2 "sect193r2" -#define NID_sect193r2 725 -#define OBJ_sect193r2 OBJ_secg_ellipticCurve,25L - -#define SN_sect233k1 "sect233k1" -#define NID_sect233k1 726 -#define OBJ_sect233k1 OBJ_secg_ellipticCurve,26L - -#define SN_sect233r1 "sect233r1" -#define NID_sect233r1 727 -#define OBJ_sect233r1 OBJ_secg_ellipticCurve,27L - -#define SN_sect239k1 "sect239k1" -#define NID_sect239k1 728 -#define OBJ_sect239k1 OBJ_secg_ellipticCurve,3L - -#define SN_sect283k1 "sect283k1" -#define NID_sect283k1 729 -#define OBJ_sect283k1 OBJ_secg_ellipticCurve,16L - -#define SN_sect283r1 "sect283r1" -#define NID_sect283r1 730 -#define OBJ_sect283r1 OBJ_secg_ellipticCurve,17L - -#define SN_sect409k1 "sect409k1" -#define NID_sect409k1 731 -#define OBJ_sect409k1 OBJ_secg_ellipticCurve,36L - -#define SN_sect409r1 "sect409r1" -#define NID_sect409r1 732 -#define OBJ_sect409r1 OBJ_secg_ellipticCurve,37L - -#define SN_sect571k1 "sect571k1" -#define NID_sect571k1 733 -#define OBJ_sect571k1 OBJ_secg_ellipticCurve,38L - -#define SN_sect571r1 "sect571r1" -#define NID_sect571r1 734 -#define OBJ_sect571r1 OBJ_secg_ellipticCurve,39L - -#define OBJ_wap_wsg_idm_ecid OBJ_wap_wsg,4L - -#define SN_wap_wsg_idm_ecid_wtls1 "wap-wsg-idm-ecid-wtls1" -#define NID_wap_wsg_idm_ecid_wtls1 735 -#define OBJ_wap_wsg_idm_ecid_wtls1 OBJ_wap_wsg_idm_ecid,1L - -#define SN_wap_wsg_idm_ecid_wtls3 "wap-wsg-idm-ecid-wtls3" -#define NID_wap_wsg_idm_ecid_wtls3 736 -#define OBJ_wap_wsg_idm_ecid_wtls3 OBJ_wap_wsg_idm_ecid,3L - -#define SN_wap_wsg_idm_ecid_wtls4 "wap-wsg-idm-ecid-wtls4" -#define NID_wap_wsg_idm_ecid_wtls4 737 -#define OBJ_wap_wsg_idm_ecid_wtls4 OBJ_wap_wsg_idm_ecid,4L - -#define SN_wap_wsg_idm_ecid_wtls5 "wap-wsg-idm-ecid-wtls5" -#define NID_wap_wsg_idm_ecid_wtls5 738 -#define OBJ_wap_wsg_idm_ecid_wtls5 OBJ_wap_wsg_idm_ecid,5L - -#define SN_wap_wsg_idm_ecid_wtls6 "wap-wsg-idm-ecid-wtls6" -#define NID_wap_wsg_idm_ecid_wtls6 739 -#define OBJ_wap_wsg_idm_ecid_wtls6 OBJ_wap_wsg_idm_ecid,6L - -#define SN_wap_wsg_idm_ecid_wtls7 "wap-wsg-idm-ecid-wtls7" -#define NID_wap_wsg_idm_ecid_wtls7 740 -#define OBJ_wap_wsg_idm_ecid_wtls7 OBJ_wap_wsg_idm_ecid,7L - -#define SN_wap_wsg_idm_ecid_wtls8 "wap-wsg-idm-ecid-wtls8" -#define NID_wap_wsg_idm_ecid_wtls8 741 -#define OBJ_wap_wsg_idm_ecid_wtls8 OBJ_wap_wsg_idm_ecid,8L - -#define SN_wap_wsg_idm_ecid_wtls9 "wap-wsg-idm-ecid-wtls9" -#define NID_wap_wsg_idm_ecid_wtls9 742 -#define OBJ_wap_wsg_idm_ecid_wtls9 OBJ_wap_wsg_idm_ecid,9L - -#define SN_wap_wsg_idm_ecid_wtls10 "wap-wsg-idm-ecid-wtls10" -#define NID_wap_wsg_idm_ecid_wtls10 743 -#define OBJ_wap_wsg_idm_ecid_wtls10 OBJ_wap_wsg_idm_ecid,10L - -#define SN_wap_wsg_idm_ecid_wtls11 "wap-wsg-idm-ecid-wtls11" -#define NID_wap_wsg_idm_ecid_wtls11 744 -#define OBJ_wap_wsg_idm_ecid_wtls11 OBJ_wap_wsg_idm_ecid,11L - -#define SN_wap_wsg_idm_ecid_wtls12 "wap-wsg-idm-ecid-wtls12" -#define NID_wap_wsg_idm_ecid_wtls12 745 -#define OBJ_wap_wsg_idm_ecid_wtls12 OBJ_wap_wsg_idm_ecid,12L - -#define SN_cast5_cbc "CAST5-CBC" -#define LN_cast5_cbc "cast5-cbc" -#define NID_cast5_cbc 108 -#define OBJ_cast5_cbc OBJ_ISO_US,113533L,7L,66L,10L - -#define SN_cast5_ecb "CAST5-ECB" -#define LN_cast5_ecb "cast5-ecb" -#define NID_cast5_ecb 109 - -#define SN_cast5_cfb64 "CAST5-CFB" -#define LN_cast5_cfb64 "cast5-cfb" -#define NID_cast5_cfb64 110 - -#define SN_cast5_ofb64 "CAST5-OFB" -#define LN_cast5_ofb64 "cast5-ofb" -#define NID_cast5_ofb64 111 - -#define LN_pbeWithMD5AndCast5_CBC "pbeWithMD5AndCast5CBC" -#define NID_pbeWithMD5AndCast5_CBC 112 -#define OBJ_pbeWithMD5AndCast5_CBC OBJ_ISO_US,113533L,7L,66L,12L - -#define SN_id_PasswordBasedMAC "id-PasswordBasedMAC" -#define LN_id_PasswordBasedMAC "password based MAC" -#define NID_id_PasswordBasedMAC 782 -#define OBJ_id_PasswordBasedMAC OBJ_ISO_US,113533L,7L,66L,13L - -#define SN_id_DHBasedMac "id-DHBasedMac" -#define LN_id_DHBasedMac "Diffie-Hellman based MAC" -#define NID_id_DHBasedMac 783 -#define OBJ_id_DHBasedMac OBJ_ISO_US,113533L,7L,66L,30L - -#define SN_rsadsi "rsadsi" -#define LN_rsadsi "RSA Data Security, Inc." -#define NID_rsadsi 1 -#define OBJ_rsadsi OBJ_ISO_US,113549L - -#define SN_pkcs "pkcs" -#define LN_pkcs "RSA Data Security, Inc. PKCS" -#define NID_pkcs 2 -#define OBJ_pkcs OBJ_rsadsi,1L - -#define SN_pkcs1 "pkcs1" -#define NID_pkcs1 186 -#define OBJ_pkcs1 OBJ_pkcs,1L - -#define LN_rsaEncryption "rsaEncryption" -#define NID_rsaEncryption 6 -#define OBJ_rsaEncryption OBJ_pkcs1,1L - -#define SN_md2WithRSAEncryption "RSA-MD2" -#define LN_md2WithRSAEncryption "md2WithRSAEncryption" -#define NID_md2WithRSAEncryption 7 -#define OBJ_md2WithRSAEncryption OBJ_pkcs1,2L - -#define SN_md4WithRSAEncryption "RSA-MD4" -#define LN_md4WithRSAEncryption "md4WithRSAEncryption" -#define NID_md4WithRSAEncryption 396 -#define OBJ_md4WithRSAEncryption OBJ_pkcs1,3L - -#define SN_md5WithRSAEncryption "RSA-MD5" -#define LN_md5WithRSAEncryption "md5WithRSAEncryption" -#define NID_md5WithRSAEncryption 8 -#define OBJ_md5WithRSAEncryption OBJ_pkcs1,4L - -#define SN_sha1WithRSAEncryption "RSA-SHA1" -#define LN_sha1WithRSAEncryption "sha1WithRSAEncryption" -#define NID_sha1WithRSAEncryption 65 -#define OBJ_sha1WithRSAEncryption OBJ_pkcs1,5L - -#define SN_rsaesOaep "RSAES-OAEP" -#define LN_rsaesOaep "rsaesOaep" -#define NID_rsaesOaep 919 -#define OBJ_rsaesOaep OBJ_pkcs1,7L - -#define SN_mgf1 "MGF1" -#define LN_mgf1 "mgf1" -#define NID_mgf1 911 -#define OBJ_mgf1 OBJ_pkcs1,8L - -#define SN_pSpecified "PSPECIFIED" -#define LN_pSpecified "pSpecified" -#define NID_pSpecified 935 -#define OBJ_pSpecified OBJ_pkcs1,9L - -#define SN_rsassaPss "RSASSA-PSS" -#define LN_rsassaPss "rsassaPss" -#define NID_rsassaPss 912 -#define OBJ_rsassaPss OBJ_pkcs1,10L - -#define SN_sha256WithRSAEncryption "RSA-SHA256" -#define LN_sha256WithRSAEncryption "sha256WithRSAEncryption" -#define NID_sha256WithRSAEncryption 668 -#define OBJ_sha256WithRSAEncryption OBJ_pkcs1,11L - -#define SN_sha384WithRSAEncryption "RSA-SHA384" -#define LN_sha384WithRSAEncryption "sha384WithRSAEncryption" -#define NID_sha384WithRSAEncryption 669 -#define OBJ_sha384WithRSAEncryption OBJ_pkcs1,12L - -#define SN_sha512WithRSAEncryption "RSA-SHA512" -#define LN_sha512WithRSAEncryption "sha512WithRSAEncryption" -#define NID_sha512WithRSAEncryption 670 -#define OBJ_sha512WithRSAEncryption OBJ_pkcs1,13L - -#define SN_sha224WithRSAEncryption "RSA-SHA224" -#define LN_sha224WithRSAEncryption "sha224WithRSAEncryption" -#define NID_sha224WithRSAEncryption 671 -#define OBJ_sha224WithRSAEncryption OBJ_pkcs1,14L - -#define SN_pkcs3 "pkcs3" -#define NID_pkcs3 27 -#define OBJ_pkcs3 OBJ_pkcs,3L - -#define LN_dhKeyAgreement "dhKeyAgreement" -#define NID_dhKeyAgreement 28 -#define OBJ_dhKeyAgreement OBJ_pkcs3,1L - -#define SN_pkcs5 "pkcs5" -#define NID_pkcs5 187 -#define OBJ_pkcs5 OBJ_pkcs,5L - -#define SN_pbeWithMD2AndDES_CBC "PBE-MD2-DES" -#define LN_pbeWithMD2AndDES_CBC "pbeWithMD2AndDES-CBC" -#define NID_pbeWithMD2AndDES_CBC 9 -#define OBJ_pbeWithMD2AndDES_CBC OBJ_pkcs5,1L - -#define SN_pbeWithMD5AndDES_CBC "PBE-MD5-DES" -#define LN_pbeWithMD5AndDES_CBC "pbeWithMD5AndDES-CBC" -#define NID_pbeWithMD5AndDES_CBC 10 -#define OBJ_pbeWithMD5AndDES_CBC OBJ_pkcs5,3L - -#define SN_pbeWithMD2AndRC2_CBC "PBE-MD2-RC2-64" -#define LN_pbeWithMD2AndRC2_CBC "pbeWithMD2AndRC2-CBC" -#define NID_pbeWithMD2AndRC2_CBC 168 -#define OBJ_pbeWithMD2AndRC2_CBC OBJ_pkcs5,4L - -#define SN_pbeWithMD5AndRC2_CBC "PBE-MD5-RC2-64" -#define LN_pbeWithMD5AndRC2_CBC "pbeWithMD5AndRC2-CBC" -#define NID_pbeWithMD5AndRC2_CBC 169 -#define OBJ_pbeWithMD5AndRC2_CBC OBJ_pkcs5,6L - -#define SN_pbeWithSHA1AndDES_CBC "PBE-SHA1-DES" -#define LN_pbeWithSHA1AndDES_CBC "pbeWithSHA1AndDES-CBC" -#define NID_pbeWithSHA1AndDES_CBC 170 -#define OBJ_pbeWithSHA1AndDES_CBC OBJ_pkcs5,10L - -#define SN_pbeWithSHA1AndRC2_CBC "PBE-SHA1-RC2-64" -#define LN_pbeWithSHA1AndRC2_CBC "pbeWithSHA1AndRC2-CBC" -#define NID_pbeWithSHA1AndRC2_CBC 68 -#define OBJ_pbeWithSHA1AndRC2_CBC OBJ_pkcs5,11L - -#define LN_id_pbkdf2 "PBKDF2" -#define NID_id_pbkdf2 69 -#define OBJ_id_pbkdf2 OBJ_pkcs5,12L - -#define LN_pbes2 "PBES2" -#define NID_pbes2 161 -#define OBJ_pbes2 OBJ_pkcs5,13L - -#define LN_pbmac1 "PBMAC1" -#define NID_pbmac1 162 -#define OBJ_pbmac1 OBJ_pkcs5,14L - -#define SN_pkcs7 "pkcs7" -#define NID_pkcs7 20 -#define OBJ_pkcs7 OBJ_pkcs,7L - -#define LN_pkcs7_data "pkcs7-data" -#define NID_pkcs7_data 21 -#define OBJ_pkcs7_data OBJ_pkcs7,1L - -#define LN_pkcs7_signed "pkcs7-signedData" -#define NID_pkcs7_signed 22 -#define OBJ_pkcs7_signed OBJ_pkcs7,2L - -#define LN_pkcs7_enveloped "pkcs7-envelopedData" -#define NID_pkcs7_enveloped 23 -#define OBJ_pkcs7_enveloped OBJ_pkcs7,3L - -#define LN_pkcs7_signedAndEnveloped "pkcs7-signedAndEnvelopedData" -#define NID_pkcs7_signedAndEnveloped 24 -#define OBJ_pkcs7_signedAndEnveloped OBJ_pkcs7,4L - -#define LN_pkcs7_digest "pkcs7-digestData" -#define NID_pkcs7_digest 25 -#define OBJ_pkcs7_digest OBJ_pkcs7,5L - -#define LN_pkcs7_encrypted "pkcs7-encryptedData" -#define NID_pkcs7_encrypted 26 -#define OBJ_pkcs7_encrypted OBJ_pkcs7,6L - -#define SN_pkcs9 "pkcs9" -#define NID_pkcs9 47 -#define OBJ_pkcs9 OBJ_pkcs,9L - -#define LN_pkcs9_emailAddress "emailAddress" -#define NID_pkcs9_emailAddress 48 -#define OBJ_pkcs9_emailAddress OBJ_pkcs9,1L - -#define LN_pkcs9_unstructuredName "unstructuredName" -#define NID_pkcs9_unstructuredName 49 -#define OBJ_pkcs9_unstructuredName OBJ_pkcs9,2L - -#define LN_pkcs9_contentType "contentType" -#define NID_pkcs9_contentType 50 -#define OBJ_pkcs9_contentType OBJ_pkcs9,3L - -#define LN_pkcs9_messageDigest "messageDigest" -#define NID_pkcs9_messageDigest 51 -#define OBJ_pkcs9_messageDigest OBJ_pkcs9,4L - -#define LN_pkcs9_signingTime "signingTime" -#define NID_pkcs9_signingTime 52 -#define OBJ_pkcs9_signingTime OBJ_pkcs9,5L - -#define LN_pkcs9_countersignature "countersignature" -#define NID_pkcs9_countersignature 53 -#define OBJ_pkcs9_countersignature OBJ_pkcs9,6L - -#define LN_pkcs9_challengePassword "challengePassword" -#define NID_pkcs9_challengePassword 54 -#define OBJ_pkcs9_challengePassword OBJ_pkcs9,7L - -#define LN_pkcs9_unstructuredAddress "unstructuredAddress" -#define NID_pkcs9_unstructuredAddress 55 -#define OBJ_pkcs9_unstructuredAddress OBJ_pkcs9,8L - -#define LN_pkcs9_extCertAttributes "extendedCertificateAttributes" -#define NID_pkcs9_extCertAttributes 56 -#define OBJ_pkcs9_extCertAttributes OBJ_pkcs9,9L - -#define SN_ext_req "extReq" -#define LN_ext_req "Extension Request" -#define NID_ext_req 172 -#define OBJ_ext_req OBJ_pkcs9,14L - -#define SN_SMIMECapabilities "SMIME-CAPS" -#define LN_SMIMECapabilities "S/MIME Capabilities" -#define NID_SMIMECapabilities 167 -#define OBJ_SMIMECapabilities OBJ_pkcs9,15L - -#define SN_SMIME "SMIME" -#define LN_SMIME "S/MIME" -#define NID_SMIME 188 -#define OBJ_SMIME OBJ_pkcs9,16L - -#define SN_id_smime_mod "id-smime-mod" -#define NID_id_smime_mod 189 -#define OBJ_id_smime_mod OBJ_SMIME,0L - -#define SN_id_smime_ct "id-smime-ct" -#define NID_id_smime_ct 190 -#define OBJ_id_smime_ct OBJ_SMIME,1L - -#define SN_id_smime_aa "id-smime-aa" -#define NID_id_smime_aa 191 -#define OBJ_id_smime_aa OBJ_SMIME,2L - -#define SN_id_smime_alg "id-smime-alg" -#define NID_id_smime_alg 192 -#define OBJ_id_smime_alg OBJ_SMIME,3L - -#define SN_id_smime_cd "id-smime-cd" -#define NID_id_smime_cd 193 -#define OBJ_id_smime_cd OBJ_SMIME,4L - -#define SN_id_smime_spq "id-smime-spq" -#define NID_id_smime_spq 194 -#define OBJ_id_smime_spq OBJ_SMIME,5L - -#define SN_id_smime_cti "id-smime-cti" -#define NID_id_smime_cti 195 -#define OBJ_id_smime_cti OBJ_SMIME,6L - -#define SN_id_smime_mod_cms "id-smime-mod-cms" -#define NID_id_smime_mod_cms 196 -#define OBJ_id_smime_mod_cms OBJ_id_smime_mod,1L - -#define SN_id_smime_mod_ess "id-smime-mod-ess" -#define NID_id_smime_mod_ess 197 -#define OBJ_id_smime_mod_ess OBJ_id_smime_mod,2L - -#define SN_id_smime_mod_oid "id-smime-mod-oid" -#define NID_id_smime_mod_oid 198 -#define OBJ_id_smime_mod_oid OBJ_id_smime_mod,3L - -#define SN_id_smime_mod_msg_v3 "id-smime-mod-msg-v3" -#define NID_id_smime_mod_msg_v3 199 -#define OBJ_id_smime_mod_msg_v3 OBJ_id_smime_mod,4L - -#define SN_id_smime_mod_ets_eSignature_88 "id-smime-mod-ets-eSignature-88" -#define NID_id_smime_mod_ets_eSignature_88 200 -#define OBJ_id_smime_mod_ets_eSignature_88 OBJ_id_smime_mod,5L - -#define SN_id_smime_mod_ets_eSignature_97 "id-smime-mod-ets-eSignature-97" -#define NID_id_smime_mod_ets_eSignature_97 201 -#define OBJ_id_smime_mod_ets_eSignature_97 OBJ_id_smime_mod,6L - -#define SN_id_smime_mod_ets_eSigPolicy_88 "id-smime-mod-ets-eSigPolicy-88" -#define NID_id_smime_mod_ets_eSigPolicy_88 202 -#define OBJ_id_smime_mod_ets_eSigPolicy_88 OBJ_id_smime_mod,7L - -#define SN_id_smime_mod_ets_eSigPolicy_97 "id-smime-mod-ets-eSigPolicy-97" -#define NID_id_smime_mod_ets_eSigPolicy_97 203 -#define OBJ_id_smime_mod_ets_eSigPolicy_97 OBJ_id_smime_mod,8L - -#define SN_id_smime_ct_receipt "id-smime-ct-receipt" -#define NID_id_smime_ct_receipt 204 -#define OBJ_id_smime_ct_receipt OBJ_id_smime_ct,1L - -#define SN_id_smime_ct_authData "id-smime-ct-authData" -#define NID_id_smime_ct_authData 205 -#define OBJ_id_smime_ct_authData OBJ_id_smime_ct,2L - -#define SN_id_smime_ct_publishCert "id-smime-ct-publishCert" -#define NID_id_smime_ct_publishCert 206 -#define OBJ_id_smime_ct_publishCert OBJ_id_smime_ct,3L - -#define SN_id_smime_ct_TSTInfo "id-smime-ct-TSTInfo" -#define NID_id_smime_ct_TSTInfo 207 -#define OBJ_id_smime_ct_TSTInfo OBJ_id_smime_ct,4L - -#define SN_id_smime_ct_TDTInfo "id-smime-ct-TDTInfo" -#define NID_id_smime_ct_TDTInfo 208 -#define OBJ_id_smime_ct_TDTInfo OBJ_id_smime_ct,5L - -#define SN_id_smime_ct_contentInfo "id-smime-ct-contentInfo" -#define NID_id_smime_ct_contentInfo 209 -#define OBJ_id_smime_ct_contentInfo OBJ_id_smime_ct,6L - -#define SN_id_smime_ct_DVCSRequestData "id-smime-ct-DVCSRequestData" -#define NID_id_smime_ct_DVCSRequestData 210 -#define OBJ_id_smime_ct_DVCSRequestData OBJ_id_smime_ct,7L - -#define SN_id_smime_ct_DVCSResponseData "id-smime-ct-DVCSResponseData" -#define NID_id_smime_ct_DVCSResponseData 211 -#define OBJ_id_smime_ct_DVCSResponseData OBJ_id_smime_ct,8L - -#define SN_id_smime_ct_compressedData "id-smime-ct-compressedData" -#define NID_id_smime_ct_compressedData 786 -#define OBJ_id_smime_ct_compressedData OBJ_id_smime_ct,9L - -#define SN_id_ct_asciiTextWithCRLF "id-ct-asciiTextWithCRLF" -#define NID_id_ct_asciiTextWithCRLF 787 -#define OBJ_id_ct_asciiTextWithCRLF OBJ_id_smime_ct,27L - -#define SN_id_smime_aa_receiptRequest "id-smime-aa-receiptRequest" -#define NID_id_smime_aa_receiptRequest 212 -#define OBJ_id_smime_aa_receiptRequest OBJ_id_smime_aa,1L - -#define SN_id_smime_aa_securityLabel "id-smime-aa-securityLabel" -#define NID_id_smime_aa_securityLabel 213 -#define OBJ_id_smime_aa_securityLabel OBJ_id_smime_aa,2L - -#define SN_id_smime_aa_mlExpandHistory "id-smime-aa-mlExpandHistory" -#define NID_id_smime_aa_mlExpandHistory 214 -#define OBJ_id_smime_aa_mlExpandHistory OBJ_id_smime_aa,3L - -#define SN_id_smime_aa_contentHint "id-smime-aa-contentHint" -#define NID_id_smime_aa_contentHint 215 -#define OBJ_id_smime_aa_contentHint OBJ_id_smime_aa,4L - -#define SN_id_smime_aa_msgSigDigest "id-smime-aa-msgSigDigest" -#define NID_id_smime_aa_msgSigDigest 216 -#define OBJ_id_smime_aa_msgSigDigest OBJ_id_smime_aa,5L - -#define SN_id_smime_aa_encapContentType "id-smime-aa-encapContentType" -#define NID_id_smime_aa_encapContentType 217 -#define OBJ_id_smime_aa_encapContentType OBJ_id_smime_aa,6L - -#define SN_id_smime_aa_contentIdentifier "id-smime-aa-contentIdentifier" -#define NID_id_smime_aa_contentIdentifier 218 -#define OBJ_id_smime_aa_contentIdentifier OBJ_id_smime_aa,7L - -#define SN_id_smime_aa_macValue "id-smime-aa-macValue" -#define NID_id_smime_aa_macValue 219 -#define OBJ_id_smime_aa_macValue OBJ_id_smime_aa,8L - -#define SN_id_smime_aa_equivalentLabels "id-smime-aa-equivalentLabels" -#define NID_id_smime_aa_equivalentLabels 220 -#define OBJ_id_smime_aa_equivalentLabels OBJ_id_smime_aa,9L - -#define SN_id_smime_aa_contentReference "id-smime-aa-contentReference" -#define NID_id_smime_aa_contentReference 221 -#define OBJ_id_smime_aa_contentReference OBJ_id_smime_aa,10L - -#define SN_id_smime_aa_encrypKeyPref "id-smime-aa-encrypKeyPref" -#define NID_id_smime_aa_encrypKeyPref 222 -#define OBJ_id_smime_aa_encrypKeyPref OBJ_id_smime_aa,11L - -#define SN_id_smime_aa_signingCertificate "id-smime-aa-signingCertificate" -#define NID_id_smime_aa_signingCertificate 223 -#define OBJ_id_smime_aa_signingCertificate OBJ_id_smime_aa,12L - -#define SN_id_smime_aa_smimeEncryptCerts "id-smime-aa-smimeEncryptCerts" -#define NID_id_smime_aa_smimeEncryptCerts 224 -#define OBJ_id_smime_aa_smimeEncryptCerts OBJ_id_smime_aa,13L - -#define SN_id_smime_aa_timeStampToken "id-smime-aa-timeStampToken" -#define NID_id_smime_aa_timeStampToken 225 -#define OBJ_id_smime_aa_timeStampToken OBJ_id_smime_aa,14L - -#define SN_id_smime_aa_ets_sigPolicyId "id-smime-aa-ets-sigPolicyId" -#define NID_id_smime_aa_ets_sigPolicyId 226 -#define OBJ_id_smime_aa_ets_sigPolicyId OBJ_id_smime_aa,15L - -#define SN_id_smime_aa_ets_commitmentType "id-smime-aa-ets-commitmentType" -#define NID_id_smime_aa_ets_commitmentType 227 -#define OBJ_id_smime_aa_ets_commitmentType OBJ_id_smime_aa,16L - -#define SN_id_smime_aa_ets_signerLocation "id-smime-aa-ets-signerLocation" -#define NID_id_smime_aa_ets_signerLocation 228 -#define OBJ_id_smime_aa_ets_signerLocation OBJ_id_smime_aa,17L - -#define SN_id_smime_aa_ets_signerAttr "id-smime-aa-ets-signerAttr" -#define NID_id_smime_aa_ets_signerAttr 229 -#define OBJ_id_smime_aa_ets_signerAttr OBJ_id_smime_aa,18L - -#define SN_id_smime_aa_ets_otherSigCert "id-smime-aa-ets-otherSigCert" -#define NID_id_smime_aa_ets_otherSigCert 230 -#define OBJ_id_smime_aa_ets_otherSigCert OBJ_id_smime_aa,19L - -#define SN_id_smime_aa_ets_contentTimestamp "id-smime-aa-ets-contentTimestamp" -#define NID_id_smime_aa_ets_contentTimestamp 231 -#define OBJ_id_smime_aa_ets_contentTimestamp OBJ_id_smime_aa,20L - -#define SN_id_smime_aa_ets_CertificateRefs "id-smime-aa-ets-CertificateRefs" -#define NID_id_smime_aa_ets_CertificateRefs 232 -#define OBJ_id_smime_aa_ets_CertificateRefs OBJ_id_smime_aa,21L - -#define SN_id_smime_aa_ets_RevocationRefs "id-smime-aa-ets-RevocationRefs" -#define NID_id_smime_aa_ets_RevocationRefs 233 -#define OBJ_id_smime_aa_ets_RevocationRefs OBJ_id_smime_aa,22L - -#define SN_id_smime_aa_ets_certValues "id-smime-aa-ets-certValues" -#define NID_id_smime_aa_ets_certValues 234 -#define OBJ_id_smime_aa_ets_certValues OBJ_id_smime_aa,23L - -#define SN_id_smime_aa_ets_revocationValues "id-smime-aa-ets-revocationValues" -#define NID_id_smime_aa_ets_revocationValues 235 -#define OBJ_id_smime_aa_ets_revocationValues OBJ_id_smime_aa,24L - -#define SN_id_smime_aa_ets_escTimeStamp "id-smime-aa-ets-escTimeStamp" -#define NID_id_smime_aa_ets_escTimeStamp 236 -#define OBJ_id_smime_aa_ets_escTimeStamp OBJ_id_smime_aa,25L - -#define SN_id_smime_aa_ets_certCRLTimestamp "id-smime-aa-ets-certCRLTimestamp" -#define NID_id_smime_aa_ets_certCRLTimestamp 237 -#define OBJ_id_smime_aa_ets_certCRLTimestamp OBJ_id_smime_aa,26L - -#define SN_id_smime_aa_ets_archiveTimeStamp "id-smime-aa-ets-archiveTimeStamp" -#define NID_id_smime_aa_ets_archiveTimeStamp 238 -#define OBJ_id_smime_aa_ets_archiveTimeStamp OBJ_id_smime_aa,27L - -#define SN_id_smime_aa_signatureType "id-smime-aa-signatureType" -#define NID_id_smime_aa_signatureType 239 -#define OBJ_id_smime_aa_signatureType OBJ_id_smime_aa,28L - -#define SN_id_smime_aa_dvcs_dvc "id-smime-aa-dvcs-dvc" -#define NID_id_smime_aa_dvcs_dvc 240 -#define OBJ_id_smime_aa_dvcs_dvc OBJ_id_smime_aa,29L - -#define SN_id_smime_alg_ESDHwith3DES "id-smime-alg-ESDHwith3DES" -#define NID_id_smime_alg_ESDHwith3DES 241 -#define OBJ_id_smime_alg_ESDHwith3DES OBJ_id_smime_alg,1L - -#define SN_id_smime_alg_ESDHwithRC2 "id-smime-alg-ESDHwithRC2" -#define NID_id_smime_alg_ESDHwithRC2 242 -#define OBJ_id_smime_alg_ESDHwithRC2 OBJ_id_smime_alg,2L - -#define SN_id_smime_alg_3DESwrap "id-smime-alg-3DESwrap" -#define NID_id_smime_alg_3DESwrap 243 -#define OBJ_id_smime_alg_3DESwrap OBJ_id_smime_alg,3L - -#define SN_id_smime_alg_RC2wrap "id-smime-alg-RC2wrap" -#define NID_id_smime_alg_RC2wrap 244 -#define OBJ_id_smime_alg_RC2wrap OBJ_id_smime_alg,4L - -#define SN_id_smime_alg_ESDH "id-smime-alg-ESDH" -#define NID_id_smime_alg_ESDH 245 -#define OBJ_id_smime_alg_ESDH OBJ_id_smime_alg,5L - -#define SN_id_smime_alg_CMS3DESwrap "id-smime-alg-CMS3DESwrap" -#define NID_id_smime_alg_CMS3DESwrap 246 -#define OBJ_id_smime_alg_CMS3DESwrap OBJ_id_smime_alg,6L - -#define SN_id_smime_alg_CMSRC2wrap "id-smime-alg-CMSRC2wrap" -#define NID_id_smime_alg_CMSRC2wrap 247 -#define OBJ_id_smime_alg_CMSRC2wrap OBJ_id_smime_alg,7L - -#define SN_id_alg_PWRI_KEK "id-alg-PWRI-KEK" -#define NID_id_alg_PWRI_KEK 893 -#define OBJ_id_alg_PWRI_KEK OBJ_id_smime_alg,9L - -#define SN_id_smime_cd_ldap "id-smime-cd-ldap" -#define NID_id_smime_cd_ldap 248 -#define OBJ_id_smime_cd_ldap OBJ_id_smime_cd,1L - -#define SN_id_smime_spq_ets_sqt_uri "id-smime-spq-ets-sqt-uri" -#define NID_id_smime_spq_ets_sqt_uri 249 -#define OBJ_id_smime_spq_ets_sqt_uri OBJ_id_smime_spq,1L - -#define SN_id_smime_spq_ets_sqt_unotice "id-smime-spq-ets-sqt-unotice" -#define NID_id_smime_spq_ets_sqt_unotice 250 -#define OBJ_id_smime_spq_ets_sqt_unotice OBJ_id_smime_spq,2L - -#define SN_id_smime_cti_ets_proofOfOrigin "id-smime-cti-ets-proofOfOrigin" -#define NID_id_smime_cti_ets_proofOfOrigin 251 -#define OBJ_id_smime_cti_ets_proofOfOrigin OBJ_id_smime_cti,1L - -#define SN_id_smime_cti_ets_proofOfReceipt "id-smime-cti-ets-proofOfReceipt" -#define NID_id_smime_cti_ets_proofOfReceipt 252 -#define OBJ_id_smime_cti_ets_proofOfReceipt OBJ_id_smime_cti,2L - -#define SN_id_smime_cti_ets_proofOfDelivery "id-smime-cti-ets-proofOfDelivery" -#define NID_id_smime_cti_ets_proofOfDelivery 253 -#define OBJ_id_smime_cti_ets_proofOfDelivery OBJ_id_smime_cti,3L - -#define SN_id_smime_cti_ets_proofOfSender "id-smime-cti-ets-proofOfSender" -#define NID_id_smime_cti_ets_proofOfSender 254 -#define OBJ_id_smime_cti_ets_proofOfSender OBJ_id_smime_cti,4L - -#define SN_id_smime_cti_ets_proofOfApproval "id-smime-cti-ets-proofOfApproval" -#define NID_id_smime_cti_ets_proofOfApproval 255 -#define OBJ_id_smime_cti_ets_proofOfApproval OBJ_id_smime_cti,5L - -#define SN_id_smime_cti_ets_proofOfCreation "id-smime-cti-ets-proofOfCreation" -#define NID_id_smime_cti_ets_proofOfCreation 256 -#define OBJ_id_smime_cti_ets_proofOfCreation OBJ_id_smime_cti,6L - -#define LN_friendlyName "friendlyName" -#define NID_friendlyName 156 -#define OBJ_friendlyName OBJ_pkcs9,20L - -#define LN_localKeyID "localKeyID" -#define NID_localKeyID 157 -#define OBJ_localKeyID OBJ_pkcs9,21L - -#define SN_ms_csp_name "CSPName" -#define LN_ms_csp_name "Microsoft CSP Name" -#define NID_ms_csp_name 417 -#define OBJ_ms_csp_name 1L,3L,6L,1L,4L,1L,311L,17L,1L - -#define SN_LocalKeySet "LocalKeySet" -#define LN_LocalKeySet "Microsoft Local Key set" -#define NID_LocalKeySet 856 -#define OBJ_LocalKeySet 1L,3L,6L,1L,4L,1L,311L,17L,2L - -#define OBJ_certTypes OBJ_pkcs9,22L - -#define LN_x509Certificate "x509Certificate" -#define NID_x509Certificate 158 -#define OBJ_x509Certificate OBJ_certTypes,1L - -#define LN_sdsiCertificate "sdsiCertificate" -#define NID_sdsiCertificate 159 -#define OBJ_sdsiCertificate OBJ_certTypes,2L - -#define OBJ_crlTypes OBJ_pkcs9,23L - -#define LN_x509Crl "x509Crl" -#define NID_x509Crl 160 -#define OBJ_x509Crl OBJ_crlTypes,1L - -#define OBJ_pkcs12 OBJ_pkcs,12L - -#define OBJ_pkcs12_pbeids OBJ_pkcs12,1L - -#define SN_pbe_WithSHA1And128BitRC4 "PBE-SHA1-RC4-128" -#define LN_pbe_WithSHA1And128BitRC4 "pbeWithSHA1And128BitRC4" -#define NID_pbe_WithSHA1And128BitRC4 144 -#define OBJ_pbe_WithSHA1And128BitRC4 OBJ_pkcs12_pbeids,1L - -#define SN_pbe_WithSHA1And40BitRC4 "PBE-SHA1-RC4-40" -#define LN_pbe_WithSHA1And40BitRC4 "pbeWithSHA1And40BitRC4" -#define NID_pbe_WithSHA1And40BitRC4 145 -#define OBJ_pbe_WithSHA1And40BitRC4 OBJ_pkcs12_pbeids,2L - -#define SN_pbe_WithSHA1And3_Key_TripleDES_CBC "PBE-SHA1-3DES" -#define LN_pbe_WithSHA1And3_Key_TripleDES_CBC "pbeWithSHA1And3-KeyTripleDES-CBC" -#define NID_pbe_WithSHA1And3_Key_TripleDES_CBC 146 -#define OBJ_pbe_WithSHA1And3_Key_TripleDES_CBC OBJ_pkcs12_pbeids,3L - -#define SN_pbe_WithSHA1And2_Key_TripleDES_CBC "PBE-SHA1-2DES" -#define LN_pbe_WithSHA1And2_Key_TripleDES_CBC "pbeWithSHA1And2-KeyTripleDES-CBC" -#define NID_pbe_WithSHA1And2_Key_TripleDES_CBC 147 -#define OBJ_pbe_WithSHA1And2_Key_TripleDES_CBC OBJ_pkcs12_pbeids,4L - -#define SN_pbe_WithSHA1And128BitRC2_CBC "PBE-SHA1-RC2-128" -#define LN_pbe_WithSHA1And128BitRC2_CBC "pbeWithSHA1And128BitRC2-CBC" -#define NID_pbe_WithSHA1And128BitRC2_CBC 148 -#define OBJ_pbe_WithSHA1And128BitRC2_CBC OBJ_pkcs12_pbeids,5L - -#define SN_pbe_WithSHA1And40BitRC2_CBC "PBE-SHA1-RC2-40" -#define LN_pbe_WithSHA1And40BitRC2_CBC "pbeWithSHA1And40BitRC2-CBC" -#define NID_pbe_WithSHA1And40BitRC2_CBC 149 -#define OBJ_pbe_WithSHA1And40BitRC2_CBC OBJ_pkcs12_pbeids,6L - -#define OBJ_pkcs12_Version1 OBJ_pkcs12,10L - -#define OBJ_pkcs12_BagIds OBJ_pkcs12_Version1,1L - -#define LN_keyBag "keyBag" -#define NID_keyBag 150 -#define OBJ_keyBag OBJ_pkcs12_BagIds,1L - -#define LN_pkcs8ShroudedKeyBag "pkcs8ShroudedKeyBag" -#define NID_pkcs8ShroudedKeyBag 151 -#define OBJ_pkcs8ShroudedKeyBag OBJ_pkcs12_BagIds,2L - -#define LN_certBag "certBag" -#define NID_certBag 152 -#define OBJ_certBag OBJ_pkcs12_BagIds,3L - -#define LN_crlBag "crlBag" -#define NID_crlBag 153 -#define OBJ_crlBag OBJ_pkcs12_BagIds,4L - -#define LN_secretBag "secretBag" -#define NID_secretBag 154 -#define OBJ_secretBag OBJ_pkcs12_BagIds,5L - -#define LN_safeContentsBag "safeContentsBag" -#define NID_safeContentsBag 155 -#define OBJ_safeContentsBag OBJ_pkcs12_BagIds,6L - -#define SN_md2 "MD2" -#define LN_md2 "md2" -#define NID_md2 3 -#define OBJ_md2 OBJ_rsadsi,2L,2L - -#define SN_md4 "MD4" -#define LN_md4 "md4" -#define NID_md4 257 -#define OBJ_md4 OBJ_rsadsi,2L,4L - -#define SN_md5 "MD5" -#define LN_md5 "md5" -#define NID_md5 4 -#define OBJ_md5 OBJ_rsadsi,2L,5L - -#define SN_md5_sha1 "MD5-SHA1" -#define LN_md5_sha1 "md5-sha1" -#define NID_md5_sha1 114 - -#define LN_hmacWithMD5 "hmacWithMD5" -#define NID_hmacWithMD5 797 -#define OBJ_hmacWithMD5 OBJ_rsadsi,2L,6L - -#define LN_hmacWithSHA1 "hmacWithSHA1" -#define NID_hmacWithSHA1 163 -#define OBJ_hmacWithSHA1 OBJ_rsadsi,2L,7L - -#define LN_hmacWithSHA224 "hmacWithSHA224" -#define NID_hmacWithSHA224 798 -#define OBJ_hmacWithSHA224 OBJ_rsadsi,2L,8L - -#define LN_hmacWithSHA256 "hmacWithSHA256" -#define NID_hmacWithSHA256 799 -#define OBJ_hmacWithSHA256 OBJ_rsadsi,2L,9L - -#define LN_hmacWithSHA384 "hmacWithSHA384" -#define NID_hmacWithSHA384 800 -#define OBJ_hmacWithSHA384 OBJ_rsadsi,2L,10L - -#define LN_hmacWithSHA512 "hmacWithSHA512" -#define NID_hmacWithSHA512 801 -#define OBJ_hmacWithSHA512 OBJ_rsadsi,2L,11L - -#define SN_rc2_cbc "RC2-CBC" -#define LN_rc2_cbc "rc2-cbc" -#define NID_rc2_cbc 37 -#define OBJ_rc2_cbc OBJ_rsadsi,3L,2L - -#define SN_rc2_ecb "RC2-ECB" -#define LN_rc2_ecb "rc2-ecb" -#define NID_rc2_ecb 38 - -#define SN_rc2_cfb64 "RC2-CFB" -#define LN_rc2_cfb64 "rc2-cfb" -#define NID_rc2_cfb64 39 - -#define SN_rc2_ofb64 "RC2-OFB" -#define LN_rc2_ofb64 "rc2-ofb" -#define NID_rc2_ofb64 40 - -#define SN_rc2_40_cbc "RC2-40-CBC" -#define LN_rc2_40_cbc "rc2-40-cbc" -#define NID_rc2_40_cbc 98 - -#define SN_rc2_64_cbc "RC2-64-CBC" -#define LN_rc2_64_cbc "rc2-64-cbc" -#define NID_rc2_64_cbc 166 - -#define SN_rc4 "RC4" -#define LN_rc4 "rc4" -#define NID_rc4 5 -#define OBJ_rc4 OBJ_rsadsi,3L,4L - -#define SN_rc4_40 "RC4-40" -#define LN_rc4_40 "rc4-40" -#define NID_rc4_40 97 - -#define SN_des_ede3_cbc "DES-EDE3-CBC" -#define LN_des_ede3_cbc "des-ede3-cbc" -#define NID_des_ede3_cbc 44 -#define OBJ_des_ede3_cbc OBJ_rsadsi,3L,7L - -#define SN_rc5_cbc "RC5-CBC" -#define LN_rc5_cbc "rc5-cbc" -#define NID_rc5_cbc 120 -#define OBJ_rc5_cbc OBJ_rsadsi,3L,8L - -#define SN_rc5_ecb "RC5-ECB" -#define LN_rc5_ecb "rc5-ecb" -#define NID_rc5_ecb 121 - -#define SN_rc5_cfb64 "RC5-CFB" -#define LN_rc5_cfb64 "rc5-cfb" -#define NID_rc5_cfb64 122 - -#define SN_rc5_ofb64 "RC5-OFB" -#define LN_rc5_ofb64 "rc5-ofb" -#define NID_rc5_ofb64 123 - -#define SN_ms_ext_req "msExtReq" -#define LN_ms_ext_req "Microsoft Extension Request" -#define NID_ms_ext_req 171 -#define OBJ_ms_ext_req 1L,3L,6L,1L,4L,1L,311L,2L,1L,14L - -#define SN_ms_code_ind "msCodeInd" -#define LN_ms_code_ind "Microsoft Individual Code Signing" -#define NID_ms_code_ind 134 -#define OBJ_ms_code_ind 1L,3L,6L,1L,4L,1L,311L,2L,1L,21L - -#define SN_ms_code_com "msCodeCom" -#define LN_ms_code_com "Microsoft Commercial Code Signing" -#define NID_ms_code_com 135 -#define OBJ_ms_code_com 1L,3L,6L,1L,4L,1L,311L,2L,1L,22L - -#define SN_ms_ctl_sign "msCTLSign" -#define LN_ms_ctl_sign "Microsoft Trust List Signing" -#define NID_ms_ctl_sign 136 -#define OBJ_ms_ctl_sign 1L,3L,6L,1L,4L,1L,311L,10L,3L,1L - -#define SN_ms_sgc "msSGC" -#define LN_ms_sgc "Microsoft Server Gated Crypto" -#define NID_ms_sgc 137 -#define OBJ_ms_sgc 1L,3L,6L,1L,4L,1L,311L,10L,3L,3L - -#define SN_ms_efs "msEFS" -#define LN_ms_efs "Microsoft Encrypted File System" -#define NID_ms_efs 138 -#define OBJ_ms_efs 1L,3L,6L,1L,4L,1L,311L,10L,3L,4L - -#define SN_ms_smartcard_login "msSmartcardLogin" -#define LN_ms_smartcard_login "Microsoft Smartcardlogin" -#define NID_ms_smartcard_login 648 -#define OBJ_ms_smartcard_login 1L,3L,6L,1L,4L,1L,311L,20L,2L,2L - -#define SN_ms_upn "msUPN" -#define LN_ms_upn "Microsoft Universal Principal Name" -#define NID_ms_upn 649 -#define OBJ_ms_upn 1L,3L,6L,1L,4L,1L,311L,20L,2L,3L - -#define SN_idea_cbc "IDEA-CBC" -#define LN_idea_cbc "idea-cbc" -#define NID_idea_cbc 34 -#define OBJ_idea_cbc 1L,3L,6L,1L,4L,1L,188L,7L,1L,1L,2L - -#define SN_idea_ecb "IDEA-ECB" -#define LN_idea_ecb "idea-ecb" -#define NID_idea_ecb 36 - -#define SN_idea_cfb64 "IDEA-CFB" -#define LN_idea_cfb64 "idea-cfb" -#define NID_idea_cfb64 35 - -#define SN_idea_ofb64 "IDEA-OFB" -#define LN_idea_ofb64 "idea-ofb" -#define NID_idea_ofb64 46 - -#define SN_bf_cbc "BF-CBC" -#define LN_bf_cbc "bf-cbc" -#define NID_bf_cbc 91 -#define OBJ_bf_cbc 1L,3L,6L,1L,4L,1L,3029L,1L,2L - -#define SN_bf_ecb "BF-ECB" -#define LN_bf_ecb "bf-ecb" -#define NID_bf_ecb 92 - -#define SN_bf_cfb64 "BF-CFB" -#define LN_bf_cfb64 "bf-cfb" -#define NID_bf_cfb64 93 - -#define SN_bf_ofb64 "BF-OFB" -#define LN_bf_ofb64 "bf-ofb" -#define NID_bf_ofb64 94 - -#define SN_id_pkix "PKIX" -#define NID_id_pkix 127 -#define OBJ_id_pkix 1L,3L,6L,1L,5L,5L,7L - -#define SN_id_pkix_mod "id-pkix-mod" -#define NID_id_pkix_mod 258 -#define OBJ_id_pkix_mod OBJ_id_pkix,0L - -#define SN_id_pe "id-pe" -#define NID_id_pe 175 -#define OBJ_id_pe OBJ_id_pkix,1L - -#define SN_id_qt "id-qt" -#define NID_id_qt 259 -#define OBJ_id_qt OBJ_id_pkix,2L - -#define SN_id_kp "id-kp" -#define NID_id_kp 128 -#define OBJ_id_kp OBJ_id_pkix,3L - -#define SN_id_it "id-it" -#define NID_id_it 260 -#define OBJ_id_it OBJ_id_pkix,4L - -#define SN_id_pkip "id-pkip" -#define NID_id_pkip 261 -#define OBJ_id_pkip OBJ_id_pkix,5L - -#define SN_id_alg "id-alg" -#define NID_id_alg 262 -#define OBJ_id_alg OBJ_id_pkix,6L - -#define SN_id_cmc "id-cmc" -#define NID_id_cmc 263 -#define OBJ_id_cmc OBJ_id_pkix,7L - -#define SN_id_on "id-on" -#define NID_id_on 264 -#define OBJ_id_on OBJ_id_pkix,8L - -#define SN_id_pda "id-pda" -#define NID_id_pda 265 -#define OBJ_id_pda OBJ_id_pkix,9L - -#define SN_id_aca "id-aca" -#define NID_id_aca 266 -#define OBJ_id_aca OBJ_id_pkix,10L - -#define SN_id_qcs "id-qcs" -#define NID_id_qcs 267 -#define OBJ_id_qcs OBJ_id_pkix,11L - -#define SN_id_cct "id-cct" -#define NID_id_cct 268 -#define OBJ_id_cct OBJ_id_pkix,12L - -#define SN_id_ppl "id-ppl" -#define NID_id_ppl 662 -#define OBJ_id_ppl OBJ_id_pkix,21L - -#define SN_id_ad "id-ad" -#define NID_id_ad 176 -#define OBJ_id_ad OBJ_id_pkix,48L - -#define SN_id_pkix1_explicit_88 "id-pkix1-explicit-88" -#define NID_id_pkix1_explicit_88 269 -#define OBJ_id_pkix1_explicit_88 OBJ_id_pkix_mod,1L - -#define SN_id_pkix1_implicit_88 "id-pkix1-implicit-88" -#define NID_id_pkix1_implicit_88 270 -#define OBJ_id_pkix1_implicit_88 OBJ_id_pkix_mod,2L - -#define SN_id_pkix1_explicit_93 "id-pkix1-explicit-93" -#define NID_id_pkix1_explicit_93 271 -#define OBJ_id_pkix1_explicit_93 OBJ_id_pkix_mod,3L - -#define SN_id_pkix1_implicit_93 "id-pkix1-implicit-93" -#define NID_id_pkix1_implicit_93 272 -#define OBJ_id_pkix1_implicit_93 OBJ_id_pkix_mod,4L - -#define SN_id_mod_crmf "id-mod-crmf" -#define NID_id_mod_crmf 273 -#define OBJ_id_mod_crmf OBJ_id_pkix_mod,5L - -#define SN_id_mod_cmc "id-mod-cmc" -#define NID_id_mod_cmc 274 -#define OBJ_id_mod_cmc OBJ_id_pkix_mod,6L - -#define SN_id_mod_kea_profile_88 "id-mod-kea-profile-88" -#define NID_id_mod_kea_profile_88 275 -#define OBJ_id_mod_kea_profile_88 OBJ_id_pkix_mod,7L - -#define SN_id_mod_kea_profile_93 "id-mod-kea-profile-93" -#define NID_id_mod_kea_profile_93 276 -#define OBJ_id_mod_kea_profile_93 OBJ_id_pkix_mod,8L - -#define SN_id_mod_cmp "id-mod-cmp" -#define NID_id_mod_cmp 277 -#define OBJ_id_mod_cmp OBJ_id_pkix_mod,9L - -#define SN_id_mod_qualified_cert_88 "id-mod-qualified-cert-88" -#define NID_id_mod_qualified_cert_88 278 -#define OBJ_id_mod_qualified_cert_88 OBJ_id_pkix_mod,10L - -#define SN_id_mod_qualified_cert_93 "id-mod-qualified-cert-93" -#define NID_id_mod_qualified_cert_93 279 -#define OBJ_id_mod_qualified_cert_93 OBJ_id_pkix_mod,11L - -#define SN_id_mod_attribute_cert "id-mod-attribute-cert" -#define NID_id_mod_attribute_cert 280 -#define OBJ_id_mod_attribute_cert OBJ_id_pkix_mod,12L - -#define SN_id_mod_timestamp_protocol "id-mod-timestamp-protocol" -#define NID_id_mod_timestamp_protocol 281 -#define OBJ_id_mod_timestamp_protocol OBJ_id_pkix_mod,13L - -#define SN_id_mod_ocsp "id-mod-ocsp" -#define NID_id_mod_ocsp 282 -#define OBJ_id_mod_ocsp OBJ_id_pkix_mod,14L - -#define SN_id_mod_dvcs "id-mod-dvcs" -#define NID_id_mod_dvcs 283 -#define OBJ_id_mod_dvcs OBJ_id_pkix_mod,15L - -#define SN_id_mod_cmp2000 "id-mod-cmp2000" -#define NID_id_mod_cmp2000 284 -#define OBJ_id_mod_cmp2000 OBJ_id_pkix_mod,16L - -#define SN_info_access "authorityInfoAccess" -#define LN_info_access "Authority Information Access" -#define NID_info_access 177 -#define OBJ_info_access OBJ_id_pe,1L - -#define SN_biometricInfo "biometricInfo" -#define LN_biometricInfo "Biometric Info" -#define NID_biometricInfo 285 -#define OBJ_biometricInfo OBJ_id_pe,2L - -#define SN_qcStatements "qcStatements" -#define NID_qcStatements 286 -#define OBJ_qcStatements OBJ_id_pe,3L - -#define SN_ac_auditEntity "ac-auditEntity" -#define NID_ac_auditEntity 287 -#define OBJ_ac_auditEntity OBJ_id_pe,4L - -#define SN_ac_targeting "ac-targeting" -#define NID_ac_targeting 288 -#define OBJ_ac_targeting OBJ_id_pe,5L - -#define SN_aaControls "aaControls" -#define NID_aaControls 289 -#define OBJ_aaControls OBJ_id_pe,6L - -#define SN_sbgp_ipAddrBlock "sbgp-ipAddrBlock" -#define NID_sbgp_ipAddrBlock 290 -#define OBJ_sbgp_ipAddrBlock OBJ_id_pe,7L - -#define SN_sbgp_autonomousSysNum "sbgp-autonomousSysNum" -#define NID_sbgp_autonomousSysNum 291 -#define OBJ_sbgp_autonomousSysNum OBJ_id_pe,8L - -#define SN_sbgp_routerIdentifier "sbgp-routerIdentifier" -#define NID_sbgp_routerIdentifier 292 -#define OBJ_sbgp_routerIdentifier OBJ_id_pe,9L - -#define SN_ac_proxying "ac-proxying" -#define NID_ac_proxying 397 -#define OBJ_ac_proxying OBJ_id_pe,10L - -#define SN_sinfo_access "subjectInfoAccess" -#define LN_sinfo_access "Subject Information Access" -#define NID_sinfo_access 398 -#define OBJ_sinfo_access OBJ_id_pe,11L - -#define SN_proxyCertInfo "proxyCertInfo" -#define LN_proxyCertInfo "Proxy Certificate Information" -#define NID_proxyCertInfo 663 -#define OBJ_proxyCertInfo OBJ_id_pe,14L - -#define SN_id_qt_cps "id-qt-cps" -#define LN_id_qt_cps "Policy Qualifier CPS" -#define NID_id_qt_cps 164 -#define OBJ_id_qt_cps OBJ_id_qt,1L - -#define SN_id_qt_unotice "id-qt-unotice" -#define LN_id_qt_unotice "Policy Qualifier User Notice" -#define NID_id_qt_unotice 165 -#define OBJ_id_qt_unotice OBJ_id_qt,2L - -#define SN_textNotice "textNotice" -#define NID_textNotice 293 -#define OBJ_textNotice OBJ_id_qt,3L - -#define SN_server_auth "serverAuth" -#define LN_server_auth "TLS Web Server Authentication" -#define NID_server_auth 129 -#define OBJ_server_auth OBJ_id_kp,1L - -#define SN_client_auth "clientAuth" -#define LN_client_auth "TLS Web Client Authentication" -#define NID_client_auth 130 -#define OBJ_client_auth OBJ_id_kp,2L - -#define SN_code_sign "codeSigning" -#define LN_code_sign "Code Signing" -#define NID_code_sign 131 -#define OBJ_code_sign OBJ_id_kp,3L - -#define SN_email_protect "emailProtection" -#define LN_email_protect "E-mail Protection" -#define NID_email_protect 132 -#define OBJ_email_protect OBJ_id_kp,4L - -#define SN_ipsecEndSystem "ipsecEndSystem" -#define LN_ipsecEndSystem "IPSec End System" -#define NID_ipsecEndSystem 294 -#define OBJ_ipsecEndSystem OBJ_id_kp,5L - -#define SN_ipsecTunnel "ipsecTunnel" -#define LN_ipsecTunnel "IPSec Tunnel" -#define NID_ipsecTunnel 295 -#define OBJ_ipsecTunnel OBJ_id_kp,6L - -#define SN_ipsecUser "ipsecUser" -#define LN_ipsecUser "IPSec User" -#define NID_ipsecUser 296 -#define OBJ_ipsecUser OBJ_id_kp,7L - -#define SN_time_stamp "timeStamping" -#define LN_time_stamp "Time Stamping" -#define NID_time_stamp 133 -#define OBJ_time_stamp OBJ_id_kp,8L - -#define SN_OCSP_sign "OCSPSigning" -#define LN_OCSP_sign "OCSP Signing" -#define NID_OCSP_sign 180 -#define OBJ_OCSP_sign OBJ_id_kp,9L - -#define SN_dvcs "DVCS" -#define LN_dvcs "dvcs" -#define NID_dvcs 297 -#define OBJ_dvcs OBJ_id_kp,10L - -#define SN_id_it_caProtEncCert "id-it-caProtEncCert" -#define NID_id_it_caProtEncCert 298 -#define OBJ_id_it_caProtEncCert OBJ_id_it,1L - -#define SN_id_it_signKeyPairTypes "id-it-signKeyPairTypes" -#define NID_id_it_signKeyPairTypes 299 -#define OBJ_id_it_signKeyPairTypes OBJ_id_it,2L - -#define SN_id_it_encKeyPairTypes "id-it-encKeyPairTypes" -#define NID_id_it_encKeyPairTypes 300 -#define OBJ_id_it_encKeyPairTypes OBJ_id_it,3L - -#define SN_id_it_preferredSymmAlg "id-it-preferredSymmAlg" -#define NID_id_it_preferredSymmAlg 301 -#define OBJ_id_it_preferredSymmAlg OBJ_id_it,4L - -#define SN_id_it_caKeyUpdateInfo "id-it-caKeyUpdateInfo" -#define NID_id_it_caKeyUpdateInfo 302 -#define OBJ_id_it_caKeyUpdateInfo OBJ_id_it,5L - -#define SN_id_it_currentCRL "id-it-currentCRL" -#define NID_id_it_currentCRL 303 -#define OBJ_id_it_currentCRL OBJ_id_it,6L - -#define SN_id_it_unsupportedOIDs "id-it-unsupportedOIDs" -#define NID_id_it_unsupportedOIDs 304 -#define OBJ_id_it_unsupportedOIDs OBJ_id_it,7L - -#define SN_id_it_subscriptionRequest "id-it-subscriptionRequest" -#define NID_id_it_subscriptionRequest 305 -#define OBJ_id_it_subscriptionRequest OBJ_id_it,8L - -#define SN_id_it_subscriptionResponse "id-it-subscriptionResponse" -#define NID_id_it_subscriptionResponse 306 -#define OBJ_id_it_subscriptionResponse OBJ_id_it,9L - -#define SN_id_it_keyPairParamReq "id-it-keyPairParamReq" -#define NID_id_it_keyPairParamReq 307 -#define OBJ_id_it_keyPairParamReq OBJ_id_it,10L - -#define SN_id_it_keyPairParamRep "id-it-keyPairParamRep" -#define NID_id_it_keyPairParamRep 308 -#define OBJ_id_it_keyPairParamRep OBJ_id_it,11L - -#define SN_id_it_revPassphrase "id-it-revPassphrase" -#define NID_id_it_revPassphrase 309 -#define OBJ_id_it_revPassphrase OBJ_id_it,12L - -#define SN_id_it_implicitConfirm "id-it-implicitConfirm" -#define NID_id_it_implicitConfirm 310 -#define OBJ_id_it_implicitConfirm OBJ_id_it,13L - -#define SN_id_it_confirmWaitTime "id-it-confirmWaitTime" -#define NID_id_it_confirmWaitTime 311 -#define OBJ_id_it_confirmWaitTime OBJ_id_it,14L - -#define SN_id_it_origPKIMessage "id-it-origPKIMessage" -#define NID_id_it_origPKIMessage 312 -#define OBJ_id_it_origPKIMessage OBJ_id_it,15L - -#define SN_id_it_suppLangTags "id-it-suppLangTags" -#define NID_id_it_suppLangTags 784 -#define OBJ_id_it_suppLangTags OBJ_id_it,16L - -#define SN_id_regCtrl "id-regCtrl" -#define NID_id_regCtrl 313 -#define OBJ_id_regCtrl OBJ_id_pkip,1L - -#define SN_id_regInfo "id-regInfo" -#define NID_id_regInfo 314 -#define OBJ_id_regInfo OBJ_id_pkip,2L - -#define SN_id_regCtrl_regToken "id-regCtrl-regToken" -#define NID_id_regCtrl_regToken 315 -#define OBJ_id_regCtrl_regToken OBJ_id_regCtrl,1L - -#define SN_id_regCtrl_authenticator "id-regCtrl-authenticator" -#define NID_id_regCtrl_authenticator 316 -#define OBJ_id_regCtrl_authenticator OBJ_id_regCtrl,2L - -#define SN_id_regCtrl_pkiPublicationInfo "id-regCtrl-pkiPublicationInfo" -#define NID_id_regCtrl_pkiPublicationInfo 317 -#define OBJ_id_regCtrl_pkiPublicationInfo OBJ_id_regCtrl,3L - -#define SN_id_regCtrl_pkiArchiveOptions "id-regCtrl-pkiArchiveOptions" -#define NID_id_regCtrl_pkiArchiveOptions 318 -#define OBJ_id_regCtrl_pkiArchiveOptions OBJ_id_regCtrl,4L - -#define SN_id_regCtrl_oldCertID "id-regCtrl-oldCertID" -#define NID_id_regCtrl_oldCertID 319 -#define OBJ_id_regCtrl_oldCertID OBJ_id_regCtrl,5L - -#define SN_id_regCtrl_protocolEncrKey "id-regCtrl-protocolEncrKey" -#define NID_id_regCtrl_protocolEncrKey 320 -#define OBJ_id_regCtrl_protocolEncrKey OBJ_id_regCtrl,6L - -#define SN_id_regInfo_utf8Pairs "id-regInfo-utf8Pairs" -#define NID_id_regInfo_utf8Pairs 321 -#define OBJ_id_regInfo_utf8Pairs OBJ_id_regInfo,1L - -#define SN_id_regInfo_certReq "id-regInfo-certReq" -#define NID_id_regInfo_certReq 322 -#define OBJ_id_regInfo_certReq OBJ_id_regInfo,2L - -#define SN_id_alg_des40 "id-alg-des40" -#define NID_id_alg_des40 323 -#define OBJ_id_alg_des40 OBJ_id_alg,1L - -#define SN_id_alg_noSignature "id-alg-noSignature" -#define NID_id_alg_noSignature 324 -#define OBJ_id_alg_noSignature OBJ_id_alg,2L - -#define SN_id_alg_dh_sig_hmac_sha1 "id-alg-dh-sig-hmac-sha1" -#define NID_id_alg_dh_sig_hmac_sha1 325 -#define OBJ_id_alg_dh_sig_hmac_sha1 OBJ_id_alg,3L - -#define SN_id_alg_dh_pop "id-alg-dh-pop" -#define NID_id_alg_dh_pop 326 -#define OBJ_id_alg_dh_pop OBJ_id_alg,4L - -#define SN_id_cmc_statusInfo "id-cmc-statusInfo" -#define NID_id_cmc_statusInfo 327 -#define OBJ_id_cmc_statusInfo OBJ_id_cmc,1L - -#define SN_id_cmc_identification "id-cmc-identification" -#define NID_id_cmc_identification 328 -#define OBJ_id_cmc_identification OBJ_id_cmc,2L - -#define SN_id_cmc_identityProof "id-cmc-identityProof" -#define NID_id_cmc_identityProof 329 -#define OBJ_id_cmc_identityProof OBJ_id_cmc,3L - -#define SN_id_cmc_dataReturn "id-cmc-dataReturn" -#define NID_id_cmc_dataReturn 330 -#define OBJ_id_cmc_dataReturn OBJ_id_cmc,4L - -#define SN_id_cmc_transactionId "id-cmc-transactionId" -#define NID_id_cmc_transactionId 331 -#define OBJ_id_cmc_transactionId OBJ_id_cmc,5L - -#define SN_id_cmc_senderNonce "id-cmc-senderNonce" -#define NID_id_cmc_senderNonce 332 -#define OBJ_id_cmc_senderNonce OBJ_id_cmc,6L - -#define SN_id_cmc_recipientNonce "id-cmc-recipientNonce" -#define NID_id_cmc_recipientNonce 333 -#define OBJ_id_cmc_recipientNonce OBJ_id_cmc,7L - -#define SN_id_cmc_addExtensions "id-cmc-addExtensions" -#define NID_id_cmc_addExtensions 334 -#define OBJ_id_cmc_addExtensions OBJ_id_cmc,8L - -#define SN_id_cmc_encryptedPOP "id-cmc-encryptedPOP" -#define NID_id_cmc_encryptedPOP 335 -#define OBJ_id_cmc_encryptedPOP OBJ_id_cmc,9L - -#define SN_id_cmc_decryptedPOP "id-cmc-decryptedPOP" -#define NID_id_cmc_decryptedPOP 336 -#define OBJ_id_cmc_decryptedPOP OBJ_id_cmc,10L - -#define SN_id_cmc_lraPOPWitness "id-cmc-lraPOPWitness" -#define NID_id_cmc_lraPOPWitness 337 -#define OBJ_id_cmc_lraPOPWitness OBJ_id_cmc,11L - -#define SN_id_cmc_getCert "id-cmc-getCert" -#define NID_id_cmc_getCert 338 -#define OBJ_id_cmc_getCert OBJ_id_cmc,15L - -#define SN_id_cmc_getCRL "id-cmc-getCRL" -#define NID_id_cmc_getCRL 339 -#define OBJ_id_cmc_getCRL OBJ_id_cmc,16L - -#define SN_id_cmc_revokeRequest "id-cmc-revokeRequest" -#define NID_id_cmc_revokeRequest 340 -#define OBJ_id_cmc_revokeRequest OBJ_id_cmc,17L - -#define SN_id_cmc_regInfo "id-cmc-regInfo" -#define NID_id_cmc_regInfo 341 -#define OBJ_id_cmc_regInfo OBJ_id_cmc,18L - -#define SN_id_cmc_responseInfo "id-cmc-responseInfo" -#define NID_id_cmc_responseInfo 342 -#define OBJ_id_cmc_responseInfo OBJ_id_cmc,19L - -#define SN_id_cmc_queryPending "id-cmc-queryPending" -#define NID_id_cmc_queryPending 343 -#define OBJ_id_cmc_queryPending OBJ_id_cmc,21L - -#define SN_id_cmc_popLinkRandom "id-cmc-popLinkRandom" -#define NID_id_cmc_popLinkRandom 344 -#define OBJ_id_cmc_popLinkRandom OBJ_id_cmc,22L - -#define SN_id_cmc_popLinkWitness "id-cmc-popLinkWitness" -#define NID_id_cmc_popLinkWitness 345 -#define OBJ_id_cmc_popLinkWitness OBJ_id_cmc,23L - -#define SN_id_cmc_confirmCertAcceptance "id-cmc-confirmCertAcceptance" -#define NID_id_cmc_confirmCertAcceptance 346 -#define OBJ_id_cmc_confirmCertAcceptance OBJ_id_cmc,24L - -#define SN_id_on_personalData "id-on-personalData" -#define NID_id_on_personalData 347 -#define OBJ_id_on_personalData OBJ_id_on,1L - -#define SN_id_on_permanentIdentifier "id-on-permanentIdentifier" -#define LN_id_on_permanentIdentifier "Permanent Identifier" -#define NID_id_on_permanentIdentifier 858 -#define OBJ_id_on_permanentIdentifier OBJ_id_on,3L - -#define SN_id_pda_dateOfBirth "id-pda-dateOfBirth" -#define NID_id_pda_dateOfBirth 348 -#define OBJ_id_pda_dateOfBirth OBJ_id_pda,1L - -#define SN_id_pda_placeOfBirth "id-pda-placeOfBirth" -#define NID_id_pda_placeOfBirth 349 -#define OBJ_id_pda_placeOfBirth OBJ_id_pda,2L - -#define SN_id_pda_gender "id-pda-gender" -#define NID_id_pda_gender 351 -#define OBJ_id_pda_gender OBJ_id_pda,3L - -#define SN_id_pda_countryOfCitizenship "id-pda-countryOfCitizenship" -#define NID_id_pda_countryOfCitizenship 352 -#define OBJ_id_pda_countryOfCitizenship OBJ_id_pda,4L - -#define SN_id_pda_countryOfResidence "id-pda-countryOfResidence" -#define NID_id_pda_countryOfResidence 353 -#define OBJ_id_pda_countryOfResidence OBJ_id_pda,5L - -#define SN_id_aca_authenticationInfo "id-aca-authenticationInfo" -#define NID_id_aca_authenticationInfo 354 -#define OBJ_id_aca_authenticationInfo OBJ_id_aca,1L - -#define SN_id_aca_accessIdentity "id-aca-accessIdentity" -#define NID_id_aca_accessIdentity 355 -#define OBJ_id_aca_accessIdentity OBJ_id_aca,2L - -#define SN_id_aca_chargingIdentity "id-aca-chargingIdentity" -#define NID_id_aca_chargingIdentity 356 -#define OBJ_id_aca_chargingIdentity OBJ_id_aca,3L - -#define SN_id_aca_group "id-aca-group" -#define NID_id_aca_group 357 -#define OBJ_id_aca_group OBJ_id_aca,4L - -#define SN_id_aca_role "id-aca-role" -#define NID_id_aca_role 358 -#define OBJ_id_aca_role OBJ_id_aca,5L - -#define SN_id_aca_encAttrs "id-aca-encAttrs" -#define NID_id_aca_encAttrs 399 -#define OBJ_id_aca_encAttrs OBJ_id_aca,6L - -#define SN_id_qcs_pkixQCSyntax_v1 "id-qcs-pkixQCSyntax-v1" -#define NID_id_qcs_pkixQCSyntax_v1 359 -#define OBJ_id_qcs_pkixQCSyntax_v1 OBJ_id_qcs,1L - -#define SN_id_cct_crs "id-cct-crs" -#define NID_id_cct_crs 360 -#define OBJ_id_cct_crs OBJ_id_cct,1L - -#define SN_id_cct_PKIData "id-cct-PKIData" -#define NID_id_cct_PKIData 361 -#define OBJ_id_cct_PKIData OBJ_id_cct,2L - -#define SN_id_cct_PKIResponse "id-cct-PKIResponse" -#define NID_id_cct_PKIResponse 362 -#define OBJ_id_cct_PKIResponse OBJ_id_cct,3L - -#define SN_id_ppl_anyLanguage "id-ppl-anyLanguage" -#define LN_id_ppl_anyLanguage "Any language" -#define NID_id_ppl_anyLanguage 664 -#define OBJ_id_ppl_anyLanguage OBJ_id_ppl,0L - -#define SN_id_ppl_inheritAll "id-ppl-inheritAll" -#define LN_id_ppl_inheritAll "Inherit all" -#define NID_id_ppl_inheritAll 665 -#define OBJ_id_ppl_inheritAll OBJ_id_ppl,1L - -#define SN_Independent "id-ppl-independent" -#define LN_Independent "Independent" -#define NID_Independent 667 -#define OBJ_Independent OBJ_id_ppl,2L - -#define SN_ad_OCSP "OCSP" -#define LN_ad_OCSP "OCSP" -#define NID_ad_OCSP 178 -#define OBJ_ad_OCSP OBJ_id_ad,1L - -#define SN_ad_ca_issuers "caIssuers" -#define LN_ad_ca_issuers "CA Issuers" -#define NID_ad_ca_issuers 179 -#define OBJ_ad_ca_issuers OBJ_id_ad,2L - -#define SN_ad_timeStamping "ad_timestamping" -#define LN_ad_timeStamping "AD Time Stamping" -#define NID_ad_timeStamping 363 -#define OBJ_ad_timeStamping OBJ_id_ad,3L - -#define SN_ad_dvcs "AD_DVCS" -#define LN_ad_dvcs "ad dvcs" -#define NID_ad_dvcs 364 -#define OBJ_ad_dvcs OBJ_id_ad,4L - -#define SN_caRepository "caRepository" -#define LN_caRepository "CA Repository" -#define NID_caRepository 785 -#define OBJ_caRepository OBJ_id_ad,5L - -#define OBJ_id_pkix_OCSP OBJ_ad_OCSP - -#define SN_id_pkix_OCSP_basic "basicOCSPResponse" -#define LN_id_pkix_OCSP_basic "Basic OCSP Response" -#define NID_id_pkix_OCSP_basic 365 -#define OBJ_id_pkix_OCSP_basic OBJ_id_pkix_OCSP,1L - -#define SN_id_pkix_OCSP_Nonce "Nonce" -#define LN_id_pkix_OCSP_Nonce "OCSP Nonce" -#define NID_id_pkix_OCSP_Nonce 366 -#define OBJ_id_pkix_OCSP_Nonce OBJ_id_pkix_OCSP,2L - -#define SN_id_pkix_OCSP_CrlID "CrlID" -#define LN_id_pkix_OCSP_CrlID "OCSP CRL ID" -#define NID_id_pkix_OCSP_CrlID 367 -#define OBJ_id_pkix_OCSP_CrlID OBJ_id_pkix_OCSP,3L - -#define SN_id_pkix_OCSP_acceptableResponses "acceptableResponses" -#define LN_id_pkix_OCSP_acceptableResponses "Acceptable OCSP Responses" -#define NID_id_pkix_OCSP_acceptableResponses 368 -#define OBJ_id_pkix_OCSP_acceptableResponses OBJ_id_pkix_OCSP,4L - -#define SN_id_pkix_OCSP_noCheck "noCheck" -#define LN_id_pkix_OCSP_noCheck "OCSP No Check" -#define NID_id_pkix_OCSP_noCheck 369 -#define OBJ_id_pkix_OCSP_noCheck OBJ_id_pkix_OCSP,5L - -#define SN_id_pkix_OCSP_archiveCutoff "archiveCutoff" -#define LN_id_pkix_OCSP_archiveCutoff "OCSP Archive Cutoff" -#define NID_id_pkix_OCSP_archiveCutoff 370 -#define OBJ_id_pkix_OCSP_archiveCutoff OBJ_id_pkix_OCSP,6L - -#define SN_id_pkix_OCSP_serviceLocator "serviceLocator" -#define LN_id_pkix_OCSP_serviceLocator "OCSP Service Locator" -#define NID_id_pkix_OCSP_serviceLocator 371 -#define OBJ_id_pkix_OCSP_serviceLocator OBJ_id_pkix_OCSP,7L - -#define SN_id_pkix_OCSP_extendedStatus "extendedStatus" -#define LN_id_pkix_OCSP_extendedStatus "Extended OCSP Status" -#define NID_id_pkix_OCSP_extendedStatus 372 -#define OBJ_id_pkix_OCSP_extendedStatus OBJ_id_pkix_OCSP,8L - -#define SN_id_pkix_OCSP_valid "valid" -#define NID_id_pkix_OCSP_valid 373 -#define OBJ_id_pkix_OCSP_valid OBJ_id_pkix_OCSP,9L - -#define SN_id_pkix_OCSP_path "path" -#define NID_id_pkix_OCSP_path 374 -#define OBJ_id_pkix_OCSP_path OBJ_id_pkix_OCSP,10L - -#define SN_id_pkix_OCSP_trustRoot "trustRoot" -#define LN_id_pkix_OCSP_trustRoot "Trust Root" -#define NID_id_pkix_OCSP_trustRoot 375 -#define OBJ_id_pkix_OCSP_trustRoot OBJ_id_pkix_OCSP,11L - -#define SN_algorithm "algorithm" -#define LN_algorithm "algorithm" -#define NID_algorithm 376 -#define OBJ_algorithm 1L,3L,14L,3L,2L - -#define SN_md5WithRSA "RSA-NP-MD5" -#define LN_md5WithRSA "md5WithRSA" -#define NID_md5WithRSA 104 -#define OBJ_md5WithRSA OBJ_algorithm,3L - -#define SN_des_ecb "DES-ECB" -#define LN_des_ecb "des-ecb" -#define NID_des_ecb 29 -#define OBJ_des_ecb OBJ_algorithm,6L - -#define SN_des_cbc "DES-CBC" -#define LN_des_cbc "des-cbc" -#define NID_des_cbc 31 -#define OBJ_des_cbc OBJ_algorithm,7L - -#define SN_des_ofb64 "DES-OFB" -#define LN_des_ofb64 "des-ofb" -#define NID_des_ofb64 45 -#define OBJ_des_ofb64 OBJ_algorithm,8L - -#define SN_des_cfb64 "DES-CFB" -#define LN_des_cfb64 "des-cfb" -#define NID_des_cfb64 30 -#define OBJ_des_cfb64 OBJ_algorithm,9L - -#define SN_rsaSignature "rsaSignature" -#define NID_rsaSignature 377 -#define OBJ_rsaSignature OBJ_algorithm,11L - -#define SN_dsa_2 "DSA-old" -#define LN_dsa_2 "dsaEncryption-old" -#define NID_dsa_2 67 -#define OBJ_dsa_2 OBJ_algorithm,12L - -#define SN_dsaWithSHA "DSA-SHA" -#define LN_dsaWithSHA "dsaWithSHA" -#define NID_dsaWithSHA 66 -#define OBJ_dsaWithSHA OBJ_algorithm,13L - -#define SN_shaWithRSAEncryption "RSA-SHA" -#define LN_shaWithRSAEncryption "shaWithRSAEncryption" -#define NID_shaWithRSAEncryption 42 -#define OBJ_shaWithRSAEncryption OBJ_algorithm,15L - -#define SN_des_ede_ecb "DES-EDE" -#define LN_des_ede_ecb "des-ede" -#define NID_des_ede_ecb 32 -#define OBJ_des_ede_ecb OBJ_algorithm,17L - -#define SN_des_ede3_ecb "DES-EDE3" -#define LN_des_ede3_ecb "des-ede3" -#define NID_des_ede3_ecb 33 - -#define SN_des_ede_cbc "DES-EDE-CBC" -#define LN_des_ede_cbc "des-ede-cbc" -#define NID_des_ede_cbc 43 - -#define SN_des_ede_cfb64 "DES-EDE-CFB" -#define LN_des_ede_cfb64 "des-ede-cfb" -#define NID_des_ede_cfb64 60 - -#define SN_des_ede3_cfb64 "DES-EDE3-CFB" -#define LN_des_ede3_cfb64 "des-ede3-cfb" -#define NID_des_ede3_cfb64 61 - -#define SN_des_ede_ofb64 "DES-EDE-OFB" -#define LN_des_ede_ofb64 "des-ede-ofb" -#define NID_des_ede_ofb64 62 - -#define SN_des_ede3_ofb64 "DES-EDE3-OFB" -#define LN_des_ede3_ofb64 "des-ede3-ofb" -#define NID_des_ede3_ofb64 63 - -#define SN_desx_cbc "DESX-CBC" -#define LN_desx_cbc "desx-cbc" -#define NID_desx_cbc 80 - -#define SN_sha "SHA" -#define LN_sha "sha" -#define NID_sha 41 -#define OBJ_sha OBJ_algorithm,18L - -#define SN_sha1 "SHA1" -#define LN_sha1 "sha1" -#define NID_sha1 64 -#define OBJ_sha1 OBJ_algorithm,26L - -#define SN_dsaWithSHA1_2 "DSA-SHA1-old" -#define LN_dsaWithSHA1_2 "dsaWithSHA1-old" -#define NID_dsaWithSHA1_2 70 -#define OBJ_dsaWithSHA1_2 OBJ_algorithm,27L - -#define SN_sha1WithRSA "RSA-SHA1-2" -#define LN_sha1WithRSA "sha1WithRSA" -#define NID_sha1WithRSA 115 -#define OBJ_sha1WithRSA OBJ_algorithm,29L - -#define SN_ripemd160 "RIPEMD160" -#define LN_ripemd160 "ripemd160" -#define NID_ripemd160 117 -#define OBJ_ripemd160 1L,3L,36L,3L,2L,1L - -#define SN_ripemd160WithRSA "RSA-RIPEMD160" -#define LN_ripemd160WithRSA "ripemd160WithRSA" -#define NID_ripemd160WithRSA 119 -#define OBJ_ripemd160WithRSA 1L,3L,36L,3L,3L,1L,2L - -#define SN_sxnet "SXNetID" -#define LN_sxnet "Strong Extranet ID" -#define NID_sxnet 143 -#define OBJ_sxnet 1L,3L,101L,1L,4L,1L - -#define SN_X500 "X500" -#define LN_X500 "directory services (X.500)" -#define NID_X500 11 -#define OBJ_X500 2L,5L - -#define SN_X509 "X509" -#define NID_X509 12 -#define OBJ_X509 OBJ_X500,4L - -#define SN_commonName "CN" -#define LN_commonName "commonName" -#define NID_commonName 13 -#define OBJ_commonName OBJ_X509,3L - -#define SN_surname "SN" -#define LN_surname "surname" -#define NID_surname 100 -#define OBJ_surname OBJ_X509,4L - -#define LN_serialNumber "serialNumber" -#define NID_serialNumber 105 -#define OBJ_serialNumber OBJ_X509,5L - -#define SN_countryName "C" -#define LN_countryName "countryName" -#define NID_countryName 14 -#define OBJ_countryName OBJ_X509,6L - -#define SN_localityName "L" -#define LN_localityName "localityName" -#define NID_localityName 15 -#define OBJ_localityName OBJ_X509,7L - -#define SN_stateOrProvinceName "ST" -#define LN_stateOrProvinceName "stateOrProvinceName" -#define NID_stateOrProvinceName 16 -#define OBJ_stateOrProvinceName OBJ_X509,8L - -#define SN_streetAddress "street" -#define LN_streetAddress "streetAddress" -#define NID_streetAddress 660 -#define OBJ_streetAddress OBJ_X509,9L - -#define SN_organizationName "O" -#define LN_organizationName "organizationName" -#define NID_organizationName 17 -#define OBJ_organizationName OBJ_X509,10L - -#define SN_organizationalUnitName "OU" -#define LN_organizationalUnitName "organizationalUnitName" -#define NID_organizationalUnitName 18 -#define OBJ_organizationalUnitName OBJ_X509,11L - -#define SN_title "title" -#define LN_title "title" -#define NID_title 106 -#define OBJ_title OBJ_X509,12L - -#define LN_description "description" -#define NID_description 107 -#define OBJ_description OBJ_X509,13L - -#define LN_searchGuide "searchGuide" -#define NID_searchGuide 859 -#define OBJ_searchGuide OBJ_X509,14L - -#define LN_businessCategory "businessCategory" -#define NID_businessCategory 860 -#define OBJ_businessCategory OBJ_X509,15L - -#define LN_postalAddress "postalAddress" -#define NID_postalAddress 861 -#define OBJ_postalAddress OBJ_X509,16L - -#define LN_postalCode "postalCode" -#define NID_postalCode 661 -#define OBJ_postalCode OBJ_X509,17L - -#define LN_postOfficeBox "postOfficeBox" -#define NID_postOfficeBox 862 -#define OBJ_postOfficeBox OBJ_X509,18L - -#define LN_physicalDeliveryOfficeName "physicalDeliveryOfficeName" -#define NID_physicalDeliveryOfficeName 863 -#define OBJ_physicalDeliveryOfficeName OBJ_X509,19L - -#define LN_telephoneNumber "telephoneNumber" -#define NID_telephoneNumber 864 -#define OBJ_telephoneNumber OBJ_X509,20L - -#define LN_telexNumber "telexNumber" -#define NID_telexNumber 865 -#define OBJ_telexNumber OBJ_X509,21L - -#define LN_teletexTerminalIdentifier "teletexTerminalIdentifier" -#define NID_teletexTerminalIdentifier 866 -#define OBJ_teletexTerminalIdentifier OBJ_X509,22L - -#define LN_facsimileTelephoneNumber "facsimileTelephoneNumber" -#define NID_facsimileTelephoneNumber 867 -#define OBJ_facsimileTelephoneNumber OBJ_X509,23L - -#define LN_x121Address "x121Address" -#define NID_x121Address 868 -#define OBJ_x121Address OBJ_X509,24L - -#define LN_internationaliSDNNumber "internationaliSDNNumber" -#define NID_internationaliSDNNumber 869 -#define OBJ_internationaliSDNNumber OBJ_X509,25L - -#define LN_registeredAddress "registeredAddress" -#define NID_registeredAddress 870 -#define OBJ_registeredAddress OBJ_X509,26L - -#define LN_destinationIndicator "destinationIndicator" -#define NID_destinationIndicator 871 -#define OBJ_destinationIndicator OBJ_X509,27L - -#define LN_preferredDeliveryMethod "preferredDeliveryMethod" -#define NID_preferredDeliveryMethod 872 -#define OBJ_preferredDeliveryMethod OBJ_X509,28L - -#define LN_presentationAddress "presentationAddress" -#define NID_presentationAddress 873 -#define OBJ_presentationAddress OBJ_X509,29L - -#define LN_supportedApplicationContext "supportedApplicationContext" -#define NID_supportedApplicationContext 874 -#define OBJ_supportedApplicationContext OBJ_X509,30L - -#define SN_member "member" -#define NID_member 875 -#define OBJ_member OBJ_X509,31L - -#define SN_owner "owner" -#define NID_owner 876 -#define OBJ_owner OBJ_X509,32L - -#define LN_roleOccupant "roleOccupant" -#define NID_roleOccupant 877 -#define OBJ_roleOccupant OBJ_X509,33L - -#define SN_seeAlso "seeAlso" -#define NID_seeAlso 878 -#define OBJ_seeAlso OBJ_X509,34L - -#define LN_userPassword "userPassword" -#define NID_userPassword 879 -#define OBJ_userPassword OBJ_X509,35L - -#define LN_userCertificate "userCertificate" -#define NID_userCertificate 880 -#define OBJ_userCertificate OBJ_X509,36L - -#define LN_cACertificate "cACertificate" -#define NID_cACertificate 881 -#define OBJ_cACertificate OBJ_X509,37L - -#define LN_authorityRevocationList "authorityRevocationList" -#define NID_authorityRevocationList 882 -#define OBJ_authorityRevocationList OBJ_X509,38L - -#define LN_certificateRevocationList "certificateRevocationList" -#define NID_certificateRevocationList 883 -#define OBJ_certificateRevocationList OBJ_X509,39L - -#define LN_crossCertificatePair "crossCertificatePair" -#define NID_crossCertificatePair 884 -#define OBJ_crossCertificatePair OBJ_X509,40L - -#define SN_name "name" -#define LN_name "name" -#define NID_name 173 -#define OBJ_name OBJ_X509,41L - -#define SN_givenName "GN" -#define LN_givenName "givenName" -#define NID_givenName 99 -#define OBJ_givenName OBJ_X509,42L - -#define SN_initials "initials" -#define LN_initials "initials" -#define NID_initials 101 -#define OBJ_initials OBJ_X509,43L - -#define LN_generationQualifier "generationQualifier" -#define NID_generationQualifier 509 -#define OBJ_generationQualifier OBJ_X509,44L - -#define LN_x500UniqueIdentifier "x500UniqueIdentifier" -#define NID_x500UniqueIdentifier 503 -#define OBJ_x500UniqueIdentifier OBJ_X509,45L - -#define SN_dnQualifier "dnQualifier" -#define LN_dnQualifier "dnQualifier" -#define NID_dnQualifier 174 -#define OBJ_dnQualifier OBJ_X509,46L - -#define LN_enhancedSearchGuide "enhancedSearchGuide" -#define NID_enhancedSearchGuide 885 -#define OBJ_enhancedSearchGuide OBJ_X509,47L - -#define LN_protocolInformation "protocolInformation" -#define NID_protocolInformation 886 -#define OBJ_protocolInformation OBJ_X509,48L - -#define LN_distinguishedName "distinguishedName" -#define NID_distinguishedName 887 -#define OBJ_distinguishedName OBJ_X509,49L - -#define LN_uniqueMember "uniqueMember" -#define NID_uniqueMember 888 -#define OBJ_uniqueMember OBJ_X509,50L - -#define LN_houseIdentifier "houseIdentifier" -#define NID_houseIdentifier 889 -#define OBJ_houseIdentifier OBJ_X509,51L - -#define LN_supportedAlgorithms "supportedAlgorithms" -#define NID_supportedAlgorithms 890 -#define OBJ_supportedAlgorithms OBJ_X509,52L - -#define LN_deltaRevocationList "deltaRevocationList" -#define NID_deltaRevocationList 891 -#define OBJ_deltaRevocationList OBJ_X509,53L - -#define SN_dmdName "dmdName" -#define NID_dmdName 892 -#define OBJ_dmdName OBJ_X509,54L - -#define LN_pseudonym "pseudonym" -#define NID_pseudonym 510 -#define OBJ_pseudonym OBJ_X509,65L - -#define SN_role "role" -#define LN_role "role" -#define NID_role 400 -#define OBJ_role OBJ_X509,72L - -#define SN_X500algorithms "X500algorithms" -#define LN_X500algorithms "directory services - algorithms" -#define NID_X500algorithms 378 -#define OBJ_X500algorithms OBJ_X500,8L - -#define SN_rsa "RSA" -#define LN_rsa "rsa" -#define NID_rsa 19 -#define OBJ_rsa OBJ_X500algorithms,1L,1L - -#define SN_mdc2WithRSA "RSA-MDC2" -#define LN_mdc2WithRSA "mdc2WithRSA" -#define NID_mdc2WithRSA 96 -#define OBJ_mdc2WithRSA OBJ_X500algorithms,3L,100L - -#define SN_mdc2 "MDC2" -#define LN_mdc2 "mdc2" -#define NID_mdc2 95 -#define OBJ_mdc2 OBJ_X500algorithms,3L,101L - -#define SN_id_ce "id-ce" -#define NID_id_ce 81 -#define OBJ_id_ce OBJ_X500,29L - -#define SN_subject_directory_attributes "subjectDirectoryAttributes" -#define LN_subject_directory_attributes "X509v3 Subject Directory Attributes" -#define NID_subject_directory_attributes 769 -#define OBJ_subject_directory_attributes OBJ_id_ce,9L - -#define SN_subject_key_identifier "subjectKeyIdentifier" -#define LN_subject_key_identifier "X509v3 Subject Key Identifier" -#define NID_subject_key_identifier 82 -#define OBJ_subject_key_identifier OBJ_id_ce,14L - -#define SN_key_usage "keyUsage" -#define LN_key_usage "X509v3 Key Usage" -#define NID_key_usage 83 -#define OBJ_key_usage OBJ_id_ce,15L - -#define SN_private_key_usage_period "privateKeyUsagePeriod" -#define LN_private_key_usage_period "X509v3 Private Key Usage Period" -#define NID_private_key_usage_period 84 -#define OBJ_private_key_usage_period OBJ_id_ce,16L - -#define SN_subject_alt_name "subjectAltName" -#define LN_subject_alt_name "X509v3 Subject Alternative Name" -#define NID_subject_alt_name 85 -#define OBJ_subject_alt_name OBJ_id_ce,17L - -#define SN_issuer_alt_name "issuerAltName" -#define LN_issuer_alt_name "X509v3 Issuer Alternative Name" -#define NID_issuer_alt_name 86 -#define OBJ_issuer_alt_name OBJ_id_ce,18L - -#define SN_basic_constraints "basicConstraints" -#define LN_basic_constraints "X509v3 Basic Constraints" -#define NID_basic_constraints 87 -#define OBJ_basic_constraints OBJ_id_ce,19L - -#define SN_crl_number "crlNumber" -#define LN_crl_number "X509v3 CRL Number" -#define NID_crl_number 88 -#define OBJ_crl_number OBJ_id_ce,20L - -#define SN_crl_reason "CRLReason" -#define LN_crl_reason "X509v3 CRL Reason Code" -#define NID_crl_reason 141 -#define OBJ_crl_reason OBJ_id_ce,21L - -#define SN_invalidity_date "invalidityDate" -#define LN_invalidity_date "Invalidity Date" -#define NID_invalidity_date 142 -#define OBJ_invalidity_date OBJ_id_ce,24L - -#define SN_delta_crl "deltaCRL" -#define LN_delta_crl "X509v3 Delta CRL Indicator" -#define NID_delta_crl 140 -#define OBJ_delta_crl OBJ_id_ce,27L - -#define SN_issuing_distribution_point "issuingDistributionPoint" -#define LN_issuing_distribution_point "X509v3 Issuing Distrubution Point" -#define NID_issuing_distribution_point 770 -#define OBJ_issuing_distribution_point OBJ_id_ce,28L - -#define SN_certificate_issuer "certificateIssuer" -#define LN_certificate_issuer "X509v3 Certificate Issuer" -#define NID_certificate_issuer 771 -#define OBJ_certificate_issuer OBJ_id_ce,29L - -#define SN_name_constraints "nameConstraints" -#define LN_name_constraints "X509v3 Name Constraints" -#define NID_name_constraints 666 -#define OBJ_name_constraints OBJ_id_ce,30L - -#define SN_crl_distribution_points "crlDistributionPoints" -#define LN_crl_distribution_points "X509v3 CRL Distribution Points" -#define NID_crl_distribution_points 103 -#define OBJ_crl_distribution_points OBJ_id_ce,31L - -#define SN_certificate_policies "certificatePolicies" -#define LN_certificate_policies "X509v3 Certificate Policies" -#define NID_certificate_policies 89 -#define OBJ_certificate_policies OBJ_id_ce,32L - -#define SN_any_policy "anyPolicy" -#define LN_any_policy "X509v3 Any Policy" -#define NID_any_policy 746 -#define OBJ_any_policy OBJ_certificate_policies,0L - -#define SN_policy_mappings "policyMappings" -#define LN_policy_mappings "X509v3 Policy Mappings" -#define NID_policy_mappings 747 -#define OBJ_policy_mappings OBJ_id_ce,33L - -#define SN_authority_key_identifier "authorityKeyIdentifier" -#define LN_authority_key_identifier "X509v3 Authority Key Identifier" -#define NID_authority_key_identifier 90 -#define OBJ_authority_key_identifier OBJ_id_ce,35L - -#define SN_policy_constraints "policyConstraints" -#define LN_policy_constraints "X509v3 Policy Constraints" -#define NID_policy_constraints 401 -#define OBJ_policy_constraints OBJ_id_ce,36L - -#define SN_ext_key_usage "extendedKeyUsage" -#define LN_ext_key_usage "X509v3 Extended Key Usage" -#define NID_ext_key_usage 126 -#define OBJ_ext_key_usage OBJ_id_ce,37L - -#define SN_freshest_crl "freshestCRL" -#define LN_freshest_crl "X509v3 Freshest CRL" -#define NID_freshest_crl 857 -#define OBJ_freshest_crl OBJ_id_ce,46L - -#define SN_inhibit_any_policy "inhibitAnyPolicy" -#define LN_inhibit_any_policy "X509v3 Inhibit Any Policy" -#define NID_inhibit_any_policy 748 -#define OBJ_inhibit_any_policy OBJ_id_ce,54L - -#define SN_target_information "targetInformation" -#define LN_target_information "X509v3 AC Targeting" -#define NID_target_information 402 -#define OBJ_target_information OBJ_id_ce,55L - -#define SN_no_rev_avail "noRevAvail" -#define LN_no_rev_avail "X509v3 No Revocation Available" -#define NID_no_rev_avail 403 -#define OBJ_no_rev_avail OBJ_id_ce,56L - -#define SN_anyExtendedKeyUsage "anyExtendedKeyUsage" -#define LN_anyExtendedKeyUsage "Any Extended Key Usage" -#define NID_anyExtendedKeyUsage 910 -#define OBJ_anyExtendedKeyUsage OBJ_ext_key_usage,0L - -#define SN_netscape "Netscape" -#define LN_netscape "Netscape Communications Corp." -#define NID_netscape 57 -#define OBJ_netscape 2L,16L,840L,1L,113730L - -#define SN_netscape_cert_extension "nsCertExt" -#define LN_netscape_cert_extension "Netscape Certificate Extension" -#define NID_netscape_cert_extension 58 -#define OBJ_netscape_cert_extension OBJ_netscape,1L - -#define SN_netscape_data_type "nsDataType" -#define LN_netscape_data_type "Netscape Data Type" -#define NID_netscape_data_type 59 -#define OBJ_netscape_data_type OBJ_netscape,2L - -#define SN_netscape_cert_type "nsCertType" -#define LN_netscape_cert_type "Netscape Cert Type" -#define NID_netscape_cert_type 71 -#define OBJ_netscape_cert_type OBJ_netscape_cert_extension,1L - -#define SN_netscape_base_url "nsBaseUrl" -#define LN_netscape_base_url "Netscape Base Url" -#define NID_netscape_base_url 72 -#define OBJ_netscape_base_url OBJ_netscape_cert_extension,2L - -#define SN_netscape_revocation_url "nsRevocationUrl" -#define LN_netscape_revocation_url "Netscape Revocation Url" -#define NID_netscape_revocation_url 73 -#define OBJ_netscape_revocation_url OBJ_netscape_cert_extension,3L - -#define SN_netscape_ca_revocation_url "nsCaRevocationUrl" -#define LN_netscape_ca_revocation_url "Netscape CA Revocation Url" -#define NID_netscape_ca_revocation_url 74 -#define OBJ_netscape_ca_revocation_url OBJ_netscape_cert_extension,4L - -#define SN_netscape_renewal_url "nsRenewalUrl" -#define LN_netscape_renewal_url "Netscape Renewal Url" -#define NID_netscape_renewal_url 75 -#define OBJ_netscape_renewal_url OBJ_netscape_cert_extension,7L - -#define SN_netscape_ca_policy_url "nsCaPolicyUrl" -#define LN_netscape_ca_policy_url "Netscape CA Policy Url" -#define NID_netscape_ca_policy_url 76 -#define OBJ_netscape_ca_policy_url OBJ_netscape_cert_extension,8L - -#define SN_netscape_ssl_server_name "nsSslServerName" -#define LN_netscape_ssl_server_name "Netscape SSL Server Name" -#define NID_netscape_ssl_server_name 77 -#define OBJ_netscape_ssl_server_name OBJ_netscape_cert_extension,12L - -#define SN_netscape_comment "nsComment" -#define LN_netscape_comment "Netscape Comment" -#define NID_netscape_comment 78 -#define OBJ_netscape_comment OBJ_netscape_cert_extension,13L - -#define SN_netscape_cert_sequence "nsCertSequence" -#define LN_netscape_cert_sequence "Netscape Certificate Sequence" -#define NID_netscape_cert_sequence 79 -#define OBJ_netscape_cert_sequence OBJ_netscape_data_type,5L - -#define SN_ns_sgc "nsSGC" -#define LN_ns_sgc "Netscape Server Gated Crypto" -#define NID_ns_sgc 139 -#define OBJ_ns_sgc OBJ_netscape,4L,1L - -#define SN_org "ORG" -#define LN_org "org" -#define NID_org 379 -#define OBJ_org OBJ_iso,3L - -#define SN_dod "DOD" -#define LN_dod "dod" -#define NID_dod 380 -#define OBJ_dod OBJ_org,6L - -#define SN_iana "IANA" -#define LN_iana "iana" -#define NID_iana 381 -#define OBJ_iana OBJ_dod,1L - -#define OBJ_internet OBJ_iana - -#define SN_Directory "directory" -#define LN_Directory "Directory" -#define NID_Directory 382 -#define OBJ_Directory OBJ_internet,1L - -#define SN_Management "mgmt" -#define LN_Management "Management" -#define NID_Management 383 -#define OBJ_Management OBJ_internet,2L - -#define SN_Experimental "experimental" -#define LN_Experimental "Experimental" -#define NID_Experimental 384 -#define OBJ_Experimental OBJ_internet,3L - -#define SN_Private "private" -#define LN_Private "Private" -#define NID_Private 385 -#define OBJ_Private OBJ_internet,4L - -#define SN_Security "security" -#define LN_Security "Security" -#define NID_Security 386 -#define OBJ_Security OBJ_internet,5L - -#define SN_SNMPv2 "snmpv2" -#define LN_SNMPv2 "SNMPv2" -#define NID_SNMPv2 387 -#define OBJ_SNMPv2 OBJ_internet,6L - -#define LN_Mail "Mail" -#define NID_Mail 388 -#define OBJ_Mail OBJ_internet,7L - -#define SN_Enterprises "enterprises" -#define LN_Enterprises "Enterprises" -#define NID_Enterprises 389 -#define OBJ_Enterprises OBJ_Private,1L - -#define SN_dcObject "dcobject" -#define LN_dcObject "dcObject" -#define NID_dcObject 390 -#define OBJ_dcObject OBJ_Enterprises,1466L,344L - -#define SN_mime_mhs "mime-mhs" -#define LN_mime_mhs "MIME MHS" -#define NID_mime_mhs 504 -#define OBJ_mime_mhs OBJ_Mail,1L - -#define SN_mime_mhs_headings "mime-mhs-headings" -#define LN_mime_mhs_headings "mime-mhs-headings" -#define NID_mime_mhs_headings 505 -#define OBJ_mime_mhs_headings OBJ_mime_mhs,1L - -#define SN_mime_mhs_bodies "mime-mhs-bodies" -#define LN_mime_mhs_bodies "mime-mhs-bodies" -#define NID_mime_mhs_bodies 506 -#define OBJ_mime_mhs_bodies OBJ_mime_mhs,2L - -#define SN_id_hex_partial_message "id-hex-partial-message" -#define LN_id_hex_partial_message "id-hex-partial-message" -#define NID_id_hex_partial_message 507 -#define OBJ_id_hex_partial_message OBJ_mime_mhs_headings,1L - -#define SN_id_hex_multipart_message "id-hex-multipart-message" -#define LN_id_hex_multipart_message "id-hex-multipart-message" -#define NID_id_hex_multipart_message 508 -#define OBJ_id_hex_multipart_message OBJ_mime_mhs_headings,2L - -#define SN_rle_compression "RLE" -#define LN_rle_compression "run length compression" -#define NID_rle_compression 124 -#define OBJ_rle_compression 1L,1L,1L,1L,666L,1L - -#define SN_zlib_compression "ZLIB" -#define LN_zlib_compression "zlib compression" -#define NID_zlib_compression 125 -#define OBJ_zlib_compression OBJ_id_smime_alg,8L - -#define OBJ_csor 2L,16L,840L,1L,101L,3L - -#define OBJ_nistAlgorithms OBJ_csor,4L - -#define OBJ_aes OBJ_nistAlgorithms,1L - -#define SN_aes_128_ecb "AES-128-ECB" -#define LN_aes_128_ecb "aes-128-ecb" -#define NID_aes_128_ecb 418 -#define OBJ_aes_128_ecb OBJ_aes,1L - -#define SN_aes_128_cbc "AES-128-CBC" -#define LN_aes_128_cbc "aes-128-cbc" -#define NID_aes_128_cbc 419 -#define OBJ_aes_128_cbc OBJ_aes,2L - -#define SN_aes_128_ofb128 "AES-128-OFB" -#define LN_aes_128_ofb128 "aes-128-ofb" -#define NID_aes_128_ofb128 420 -#define OBJ_aes_128_ofb128 OBJ_aes,3L - -#define SN_aes_128_cfb128 "AES-128-CFB" -#define LN_aes_128_cfb128 "aes-128-cfb" -#define NID_aes_128_cfb128 421 -#define OBJ_aes_128_cfb128 OBJ_aes,4L - -#define SN_id_aes128_wrap "id-aes128-wrap" -#define NID_id_aes128_wrap 788 -#define OBJ_id_aes128_wrap OBJ_aes,5L - -#define SN_aes_128_gcm "id-aes128-GCM" -#define LN_aes_128_gcm "aes-128-gcm" -#define NID_aes_128_gcm 895 -#define OBJ_aes_128_gcm OBJ_aes,6L - -#define SN_aes_128_ccm "id-aes128-CCM" -#define LN_aes_128_ccm "aes-128-ccm" -#define NID_aes_128_ccm 896 -#define OBJ_aes_128_ccm OBJ_aes,7L - -#define SN_id_aes128_wrap_pad "id-aes128-wrap-pad" -#define NID_id_aes128_wrap_pad 897 -#define OBJ_id_aes128_wrap_pad OBJ_aes,8L - -#define SN_aes_192_ecb "AES-192-ECB" -#define LN_aes_192_ecb "aes-192-ecb" -#define NID_aes_192_ecb 422 -#define OBJ_aes_192_ecb OBJ_aes,21L - -#define SN_aes_192_cbc "AES-192-CBC" -#define LN_aes_192_cbc "aes-192-cbc" -#define NID_aes_192_cbc 423 -#define OBJ_aes_192_cbc OBJ_aes,22L - -#define SN_aes_192_ofb128 "AES-192-OFB" -#define LN_aes_192_ofb128 "aes-192-ofb" -#define NID_aes_192_ofb128 424 -#define OBJ_aes_192_ofb128 OBJ_aes,23L - -#define SN_aes_192_cfb128 "AES-192-CFB" -#define LN_aes_192_cfb128 "aes-192-cfb" -#define NID_aes_192_cfb128 425 -#define OBJ_aes_192_cfb128 OBJ_aes,24L - -#define SN_id_aes192_wrap "id-aes192-wrap" -#define NID_id_aes192_wrap 789 -#define OBJ_id_aes192_wrap OBJ_aes,25L - -#define SN_aes_192_gcm "id-aes192-GCM" -#define LN_aes_192_gcm "aes-192-gcm" -#define NID_aes_192_gcm 898 -#define OBJ_aes_192_gcm OBJ_aes,26L - -#define SN_aes_192_ccm "id-aes192-CCM" -#define LN_aes_192_ccm "aes-192-ccm" -#define NID_aes_192_ccm 899 -#define OBJ_aes_192_ccm OBJ_aes,27L - -#define SN_id_aes192_wrap_pad "id-aes192-wrap-pad" -#define NID_id_aes192_wrap_pad 900 -#define OBJ_id_aes192_wrap_pad OBJ_aes,28L - -#define SN_aes_256_ecb "AES-256-ECB" -#define LN_aes_256_ecb "aes-256-ecb" -#define NID_aes_256_ecb 426 -#define OBJ_aes_256_ecb OBJ_aes,41L - -#define SN_aes_256_cbc "AES-256-CBC" -#define LN_aes_256_cbc "aes-256-cbc" -#define NID_aes_256_cbc 427 -#define OBJ_aes_256_cbc OBJ_aes,42L - -#define SN_aes_256_ofb128 "AES-256-OFB" -#define LN_aes_256_ofb128 "aes-256-ofb" -#define NID_aes_256_ofb128 428 -#define OBJ_aes_256_ofb128 OBJ_aes,43L - -#define SN_aes_256_cfb128 "AES-256-CFB" -#define LN_aes_256_cfb128 "aes-256-cfb" -#define NID_aes_256_cfb128 429 -#define OBJ_aes_256_cfb128 OBJ_aes,44L - -#define SN_id_aes256_wrap "id-aes256-wrap" -#define NID_id_aes256_wrap 790 -#define OBJ_id_aes256_wrap OBJ_aes,45L - -#define SN_aes_256_gcm "id-aes256-GCM" -#define LN_aes_256_gcm "aes-256-gcm" -#define NID_aes_256_gcm 901 -#define OBJ_aes_256_gcm OBJ_aes,46L - -#define SN_aes_256_ccm "id-aes256-CCM" -#define LN_aes_256_ccm "aes-256-ccm" -#define NID_aes_256_ccm 902 -#define OBJ_aes_256_ccm OBJ_aes,47L - -#define SN_id_aes256_wrap_pad "id-aes256-wrap-pad" -#define NID_id_aes256_wrap_pad 903 -#define OBJ_id_aes256_wrap_pad OBJ_aes,48L - -#define SN_aes_128_cfb1 "AES-128-CFB1" -#define LN_aes_128_cfb1 "aes-128-cfb1" -#define NID_aes_128_cfb1 650 - -#define SN_aes_192_cfb1 "AES-192-CFB1" -#define LN_aes_192_cfb1 "aes-192-cfb1" -#define NID_aes_192_cfb1 651 - -#define SN_aes_256_cfb1 "AES-256-CFB1" -#define LN_aes_256_cfb1 "aes-256-cfb1" -#define NID_aes_256_cfb1 652 - -#define SN_aes_128_cfb8 "AES-128-CFB8" -#define LN_aes_128_cfb8 "aes-128-cfb8" -#define NID_aes_128_cfb8 653 - -#define SN_aes_192_cfb8 "AES-192-CFB8" -#define LN_aes_192_cfb8 "aes-192-cfb8" -#define NID_aes_192_cfb8 654 - -#define SN_aes_256_cfb8 "AES-256-CFB8" -#define LN_aes_256_cfb8 "aes-256-cfb8" -#define NID_aes_256_cfb8 655 - -#define SN_aes_128_ctr "AES-128-CTR" -#define LN_aes_128_ctr "aes-128-ctr" -#define NID_aes_128_ctr 904 - -#define SN_aes_192_ctr "AES-192-CTR" -#define LN_aes_192_ctr "aes-192-ctr" -#define NID_aes_192_ctr 905 - -#define SN_aes_256_ctr "AES-256-CTR" -#define LN_aes_256_ctr "aes-256-ctr" -#define NID_aes_256_ctr 906 - -#define SN_aes_128_xts "AES-128-XTS" -#define LN_aes_128_xts "aes-128-xts" -#define NID_aes_128_xts 913 - -#define SN_aes_256_xts "AES-256-XTS" -#define LN_aes_256_xts "aes-256-xts" -#define NID_aes_256_xts 914 - -#define SN_des_cfb1 "DES-CFB1" -#define LN_des_cfb1 "des-cfb1" -#define NID_des_cfb1 656 - -#define SN_des_cfb8 "DES-CFB8" -#define LN_des_cfb8 "des-cfb8" -#define NID_des_cfb8 657 - -#define SN_des_ede3_cfb1 "DES-EDE3-CFB1" -#define LN_des_ede3_cfb1 "des-ede3-cfb1" -#define NID_des_ede3_cfb1 658 - -#define SN_des_ede3_cfb8 "DES-EDE3-CFB8" -#define LN_des_ede3_cfb8 "des-ede3-cfb8" -#define NID_des_ede3_cfb8 659 - -#define OBJ_nist_hashalgs OBJ_nistAlgorithms,2L - -#define SN_sha256 "SHA256" -#define LN_sha256 "sha256" -#define NID_sha256 672 -#define OBJ_sha256 OBJ_nist_hashalgs,1L - -#define SN_sha384 "SHA384" -#define LN_sha384 "sha384" -#define NID_sha384 673 -#define OBJ_sha384 OBJ_nist_hashalgs,2L - -#define SN_sha512 "SHA512" -#define LN_sha512 "sha512" -#define NID_sha512 674 -#define OBJ_sha512 OBJ_nist_hashalgs,3L - -#define SN_sha224 "SHA224" -#define LN_sha224 "sha224" -#define NID_sha224 675 -#define OBJ_sha224 OBJ_nist_hashalgs,4L - -#define OBJ_dsa_with_sha2 OBJ_nistAlgorithms,3L - -#define SN_dsa_with_SHA224 "dsa_with_SHA224" -#define NID_dsa_with_SHA224 802 -#define OBJ_dsa_with_SHA224 OBJ_dsa_with_sha2,1L - -#define SN_dsa_with_SHA256 "dsa_with_SHA256" -#define NID_dsa_with_SHA256 803 -#define OBJ_dsa_with_SHA256 OBJ_dsa_with_sha2,2L - -#define SN_hold_instruction_code "holdInstructionCode" -#define LN_hold_instruction_code "Hold Instruction Code" -#define NID_hold_instruction_code 430 -#define OBJ_hold_instruction_code OBJ_id_ce,23L - -#define OBJ_holdInstruction OBJ_X9_57,2L - -#define SN_hold_instruction_none "holdInstructionNone" -#define LN_hold_instruction_none "Hold Instruction None" -#define NID_hold_instruction_none 431 -#define OBJ_hold_instruction_none OBJ_holdInstruction,1L - -#define SN_hold_instruction_call_issuer "holdInstructionCallIssuer" -#define LN_hold_instruction_call_issuer "Hold Instruction Call Issuer" -#define NID_hold_instruction_call_issuer 432 -#define OBJ_hold_instruction_call_issuer OBJ_holdInstruction,2L - -#define SN_hold_instruction_reject "holdInstructionReject" -#define LN_hold_instruction_reject "Hold Instruction Reject" -#define NID_hold_instruction_reject 433 -#define OBJ_hold_instruction_reject OBJ_holdInstruction,3L - -#define SN_data "data" -#define NID_data 434 -#define OBJ_data OBJ_itu_t,9L - -#define SN_pss "pss" -#define NID_pss 435 -#define OBJ_pss OBJ_data,2342L - -#define SN_ucl "ucl" -#define NID_ucl 436 -#define OBJ_ucl OBJ_pss,19200300L - -#define SN_pilot "pilot" -#define NID_pilot 437 -#define OBJ_pilot OBJ_ucl,100L - -#define LN_pilotAttributeType "pilotAttributeType" -#define NID_pilotAttributeType 438 -#define OBJ_pilotAttributeType OBJ_pilot,1L - -#define LN_pilotAttributeSyntax "pilotAttributeSyntax" -#define NID_pilotAttributeSyntax 439 -#define OBJ_pilotAttributeSyntax OBJ_pilot,3L - -#define LN_pilotObjectClass "pilotObjectClass" -#define NID_pilotObjectClass 440 -#define OBJ_pilotObjectClass OBJ_pilot,4L - -#define LN_pilotGroups "pilotGroups" -#define NID_pilotGroups 441 -#define OBJ_pilotGroups OBJ_pilot,10L - -#define LN_iA5StringSyntax "iA5StringSyntax" -#define NID_iA5StringSyntax 442 -#define OBJ_iA5StringSyntax OBJ_pilotAttributeSyntax,4L - -#define LN_caseIgnoreIA5StringSyntax "caseIgnoreIA5StringSyntax" -#define NID_caseIgnoreIA5StringSyntax 443 -#define OBJ_caseIgnoreIA5StringSyntax OBJ_pilotAttributeSyntax,5L - -#define LN_pilotObject "pilotObject" -#define NID_pilotObject 444 -#define OBJ_pilotObject OBJ_pilotObjectClass,3L - -#define LN_pilotPerson "pilotPerson" -#define NID_pilotPerson 445 -#define OBJ_pilotPerson OBJ_pilotObjectClass,4L - -#define SN_account "account" -#define NID_account 446 -#define OBJ_account OBJ_pilotObjectClass,5L - -#define SN_document "document" -#define NID_document 447 -#define OBJ_document OBJ_pilotObjectClass,6L - -#define SN_room "room" -#define NID_room 448 -#define OBJ_room OBJ_pilotObjectClass,7L - -#define LN_documentSeries "documentSeries" -#define NID_documentSeries 449 -#define OBJ_documentSeries OBJ_pilotObjectClass,9L - -#define SN_Domain "domain" -#define LN_Domain "Domain" -#define NID_Domain 392 -#define OBJ_Domain OBJ_pilotObjectClass,13L - -#define LN_rFC822localPart "rFC822localPart" -#define NID_rFC822localPart 450 -#define OBJ_rFC822localPart OBJ_pilotObjectClass,14L - -#define LN_dNSDomain "dNSDomain" -#define NID_dNSDomain 451 -#define OBJ_dNSDomain OBJ_pilotObjectClass,15L - -#define LN_domainRelatedObject "domainRelatedObject" -#define NID_domainRelatedObject 452 -#define OBJ_domainRelatedObject OBJ_pilotObjectClass,17L - -#define LN_friendlyCountry "friendlyCountry" -#define NID_friendlyCountry 453 -#define OBJ_friendlyCountry OBJ_pilotObjectClass,18L - -#define LN_simpleSecurityObject "simpleSecurityObject" -#define NID_simpleSecurityObject 454 -#define OBJ_simpleSecurityObject OBJ_pilotObjectClass,19L - -#define LN_pilotOrganization "pilotOrganization" -#define NID_pilotOrganization 455 -#define OBJ_pilotOrganization OBJ_pilotObjectClass,20L - -#define LN_pilotDSA "pilotDSA" -#define NID_pilotDSA 456 -#define OBJ_pilotDSA OBJ_pilotObjectClass,21L - -#define LN_qualityLabelledData "qualityLabelledData" -#define NID_qualityLabelledData 457 -#define OBJ_qualityLabelledData OBJ_pilotObjectClass,22L - -#define SN_userId "UID" -#define LN_userId "userId" -#define NID_userId 458 -#define OBJ_userId OBJ_pilotAttributeType,1L - -#define LN_textEncodedORAddress "textEncodedORAddress" -#define NID_textEncodedORAddress 459 -#define OBJ_textEncodedORAddress OBJ_pilotAttributeType,2L - -#define SN_rfc822Mailbox "mail" -#define LN_rfc822Mailbox "rfc822Mailbox" -#define NID_rfc822Mailbox 460 -#define OBJ_rfc822Mailbox OBJ_pilotAttributeType,3L - -#define SN_info "info" -#define NID_info 461 -#define OBJ_info OBJ_pilotAttributeType,4L - -#define LN_favouriteDrink "favouriteDrink" -#define NID_favouriteDrink 462 -#define OBJ_favouriteDrink OBJ_pilotAttributeType,5L - -#define LN_roomNumber "roomNumber" -#define NID_roomNumber 463 -#define OBJ_roomNumber OBJ_pilotAttributeType,6L - -#define SN_photo "photo" -#define NID_photo 464 -#define OBJ_photo OBJ_pilotAttributeType,7L - -#define LN_userClass "userClass" -#define NID_userClass 465 -#define OBJ_userClass OBJ_pilotAttributeType,8L - -#define SN_host "host" -#define NID_host 466 -#define OBJ_host OBJ_pilotAttributeType,9L - -#define SN_manager "manager" -#define NID_manager 467 -#define OBJ_manager OBJ_pilotAttributeType,10L - -#define LN_documentIdentifier "documentIdentifier" -#define NID_documentIdentifier 468 -#define OBJ_documentIdentifier OBJ_pilotAttributeType,11L - -#define LN_documentTitle "documentTitle" -#define NID_documentTitle 469 -#define OBJ_documentTitle OBJ_pilotAttributeType,12L - -#define LN_documentVersion "documentVersion" -#define NID_documentVersion 470 -#define OBJ_documentVersion OBJ_pilotAttributeType,13L - -#define LN_documentAuthor "documentAuthor" -#define NID_documentAuthor 471 -#define OBJ_documentAuthor OBJ_pilotAttributeType,14L - -#define LN_documentLocation "documentLocation" -#define NID_documentLocation 472 -#define OBJ_documentLocation OBJ_pilotAttributeType,15L - -#define LN_homeTelephoneNumber "homeTelephoneNumber" -#define NID_homeTelephoneNumber 473 -#define OBJ_homeTelephoneNumber OBJ_pilotAttributeType,20L - -#define SN_secretary "secretary" -#define NID_secretary 474 -#define OBJ_secretary OBJ_pilotAttributeType,21L - -#define LN_otherMailbox "otherMailbox" -#define NID_otherMailbox 475 -#define OBJ_otherMailbox OBJ_pilotAttributeType,22L - -#define LN_lastModifiedTime "lastModifiedTime" -#define NID_lastModifiedTime 476 -#define OBJ_lastModifiedTime OBJ_pilotAttributeType,23L - -#define LN_lastModifiedBy "lastModifiedBy" -#define NID_lastModifiedBy 477 -#define OBJ_lastModifiedBy OBJ_pilotAttributeType,24L - -#define SN_domainComponent "DC" -#define LN_domainComponent "domainComponent" -#define NID_domainComponent 391 -#define OBJ_domainComponent OBJ_pilotAttributeType,25L - -#define LN_aRecord "aRecord" -#define NID_aRecord 478 -#define OBJ_aRecord OBJ_pilotAttributeType,26L - -#define LN_pilotAttributeType27 "pilotAttributeType27" -#define NID_pilotAttributeType27 479 -#define OBJ_pilotAttributeType27 OBJ_pilotAttributeType,27L - -#define LN_mXRecord "mXRecord" -#define NID_mXRecord 480 -#define OBJ_mXRecord OBJ_pilotAttributeType,28L - -#define LN_nSRecord "nSRecord" -#define NID_nSRecord 481 -#define OBJ_nSRecord OBJ_pilotAttributeType,29L - -#define LN_sOARecord "sOARecord" -#define NID_sOARecord 482 -#define OBJ_sOARecord OBJ_pilotAttributeType,30L - -#define LN_cNAMERecord "cNAMERecord" -#define NID_cNAMERecord 483 -#define OBJ_cNAMERecord OBJ_pilotAttributeType,31L - -#define LN_associatedDomain "associatedDomain" -#define NID_associatedDomain 484 -#define OBJ_associatedDomain OBJ_pilotAttributeType,37L - -#define LN_associatedName "associatedName" -#define NID_associatedName 485 -#define OBJ_associatedName OBJ_pilotAttributeType,38L - -#define LN_homePostalAddress "homePostalAddress" -#define NID_homePostalAddress 486 -#define OBJ_homePostalAddress OBJ_pilotAttributeType,39L - -#define LN_personalTitle "personalTitle" -#define NID_personalTitle 487 -#define OBJ_personalTitle OBJ_pilotAttributeType,40L - -#define LN_mobileTelephoneNumber "mobileTelephoneNumber" -#define NID_mobileTelephoneNumber 488 -#define OBJ_mobileTelephoneNumber OBJ_pilotAttributeType,41L - -#define LN_pagerTelephoneNumber "pagerTelephoneNumber" -#define NID_pagerTelephoneNumber 489 -#define OBJ_pagerTelephoneNumber OBJ_pilotAttributeType,42L - -#define LN_friendlyCountryName "friendlyCountryName" -#define NID_friendlyCountryName 490 -#define OBJ_friendlyCountryName OBJ_pilotAttributeType,43L - -#define LN_organizationalStatus "organizationalStatus" -#define NID_organizationalStatus 491 -#define OBJ_organizationalStatus OBJ_pilotAttributeType,45L - -#define LN_janetMailbox "janetMailbox" -#define NID_janetMailbox 492 -#define OBJ_janetMailbox OBJ_pilotAttributeType,46L - -#define LN_mailPreferenceOption "mailPreferenceOption" -#define NID_mailPreferenceOption 493 -#define OBJ_mailPreferenceOption OBJ_pilotAttributeType,47L - -#define LN_buildingName "buildingName" -#define NID_buildingName 494 -#define OBJ_buildingName OBJ_pilotAttributeType,48L - -#define LN_dSAQuality "dSAQuality" -#define NID_dSAQuality 495 -#define OBJ_dSAQuality OBJ_pilotAttributeType,49L - -#define LN_singleLevelQuality "singleLevelQuality" -#define NID_singleLevelQuality 496 -#define OBJ_singleLevelQuality OBJ_pilotAttributeType,50L - -#define LN_subtreeMinimumQuality "subtreeMinimumQuality" -#define NID_subtreeMinimumQuality 497 -#define OBJ_subtreeMinimumQuality OBJ_pilotAttributeType,51L - -#define LN_subtreeMaximumQuality "subtreeMaximumQuality" -#define NID_subtreeMaximumQuality 498 -#define OBJ_subtreeMaximumQuality OBJ_pilotAttributeType,52L - -#define LN_personalSignature "personalSignature" -#define NID_personalSignature 499 -#define OBJ_personalSignature OBJ_pilotAttributeType,53L - -#define LN_dITRedirect "dITRedirect" -#define NID_dITRedirect 500 -#define OBJ_dITRedirect OBJ_pilotAttributeType,54L - -#define SN_audio "audio" -#define NID_audio 501 -#define OBJ_audio OBJ_pilotAttributeType,55L - -#define LN_documentPublisher "documentPublisher" -#define NID_documentPublisher 502 -#define OBJ_documentPublisher OBJ_pilotAttributeType,56L - -#define SN_id_set "id-set" -#define LN_id_set "Secure Electronic Transactions" -#define NID_id_set 512 -#define OBJ_id_set OBJ_international_organizations,42L - -#define SN_set_ctype "set-ctype" -#define LN_set_ctype "content types" -#define NID_set_ctype 513 -#define OBJ_set_ctype OBJ_id_set,0L - -#define SN_set_msgExt "set-msgExt" -#define LN_set_msgExt "message extensions" -#define NID_set_msgExt 514 -#define OBJ_set_msgExt OBJ_id_set,1L - -#define SN_set_attr "set-attr" -#define NID_set_attr 515 -#define OBJ_set_attr OBJ_id_set,3L - -#define SN_set_policy "set-policy" -#define NID_set_policy 516 -#define OBJ_set_policy OBJ_id_set,5L - -#define SN_set_certExt "set-certExt" -#define LN_set_certExt "certificate extensions" -#define NID_set_certExt 517 -#define OBJ_set_certExt OBJ_id_set,7L - -#define SN_set_brand "set-brand" -#define NID_set_brand 518 -#define OBJ_set_brand OBJ_id_set,8L - -#define SN_setct_PANData "setct-PANData" -#define NID_setct_PANData 519 -#define OBJ_setct_PANData OBJ_set_ctype,0L - -#define SN_setct_PANToken "setct-PANToken" -#define NID_setct_PANToken 520 -#define OBJ_setct_PANToken OBJ_set_ctype,1L - -#define SN_setct_PANOnly "setct-PANOnly" -#define NID_setct_PANOnly 521 -#define OBJ_setct_PANOnly OBJ_set_ctype,2L - -#define SN_setct_OIData "setct-OIData" -#define NID_setct_OIData 522 -#define OBJ_setct_OIData OBJ_set_ctype,3L - -#define SN_setct_PI "setct-PI" -#define NID_setct_PI 523 -#define OBJ_setct_PI OBJ_set_ctype,4L - -#define SN_setct_PIData "setct-PIData" -#define NID_setct_PIData 524 -#define OBJ_setct_PIData OBJ_set_ctype,5L - -#define SN_setct_PIDataUnsigned "setct-PIDataUnsigned" -#define NID_setct_PIDataUnsigned 525 -#define OBJ_setct_PIDataUnsigned OBJ_set_ctype,6L - -#define SN_setct_HODInput "setct-HODInput" -#define NID_setct_HODInput 526 -#define OBJ_setct_HODInput OBJ_set_ctype,7L - -#define SN_setct_AuthResBaggage "setct-AuthResBaggage" -#define NID_setct_AuthResBaggage 527 -#define OBJ_setct_AuthResBaggage OBJ_set_ctype,8L - -#define SN_setct_AuthRevReqBaggage "setct-AuthRevReqBaggage" -#define NID_setct_AuthRevReqBaggage 528 -#define OBJ_setct_AuthRevReqBaggage OBJ_set_ctype,9L - -#define SN_setct_AuthRevResBaggage "setct-AuthRevResBaggage" -#define NID_setct_AuthRevResBaggage 529 -#define OBJ_setct_AuthRevResBaggage OBJ_set_ctype,10L - -#define SN_setct_CapTokenSeq "setct-CapTokenSeq" -#define NID_setct_CapTokenSeq 530 -#define OBJ_setct_CapTokenSeq OBJ_set_ctype,11L - -#define SN_setct_PInitResData "setct-PInitResData" -#define NID_setct_PInitResData 531 -#define OBJ_setct_PInitResData OBJ_set_ctype,12L - -#define SN_setct_PI_TBS "setct-PI-TBS" -#define NID_setct_PI_TBS 532 -#define OBJ_setct_PI_TBS OBJ_set_ctype,13L - -#define SN_setct_PResData "setct-PResData" -#define NID_setct_PResData 533 -#define OBJ_setct_PResData OBJ_set_ctype,14L - -#define SN_setct_AuthReqTBS "setct-AuthReqTBS" -#define NID_setct_AuthReqTBS 534 -#define OBJ_setct_AuthReqTBS OBJ_set_ctype,16L - -#define SN_setct_AuthResTBS "setct-AuthResTBS" -#define NID_setct_AuthResTBS 535 -#define OBJ_setct_AuthResTBS OBJ_set_ctype,17L - -#define SN_setct_AuthResTBSX "setct-AuthResTBSX" -#define NID_setct_AuthResTBSX 536 -#define OBJ_setct_AuthResTBSX OBJ_set_ctype,18L - -#define SN_setct_AuthTokenTBS "setct-AuthTokenTBS" -#define NID_setct_AuthTokenTBS 537 -#define OBJ_setct_AuthTokenTBS OBJ_set_ctype,19L - -#define SN_setct_CapTokenData "setct-CapTokenData" -#define NID_setct_CapTokenData 538 -#define OBJ_setct_CapTokenData OBJ_set_ctype,20L - -#define SN_setct_CapTokenTBS "setct-CapTokenTBS" -#define NID_setct_CapTokenTBS 539 -#define OBJ_setct_CapTokenTBS OBJ_set_ctype,21L - -#define SN_setct_AcqCardCodeMsg "setct-AcqCardCodeMsg" -#define NID_setct_AcqCardCodeMsg 540 -#define OBJ_setct_AcqCardCodeMsg OBJ_set_ctype,22L - -#define SN_setct_AuthRevReqTBS "setct-AuthRevReqTBS" -#define NID_setct_AuthRevReqTBS 541 -#define OBJ_setct_AuthRevReqTBS OBJ_set_ctype,23L - -#define SN_setct_AuthRevResData "setct-AuthRevResData" -#define NID_setct_AuthRevResData 542 -#define OBJ_setct_AuthRevResData OBJ_set_ctype,24L - -#define SN_setct_AuthRevResTBS "setct-AuthRevResTBS" -#define NID_setct_AuthRevResTBS 543 -#define OBJ_setct_AuthRevResTBS OBJ_set_ctype,25L - -#define SN_setct_CapReqTBS "setct-CapReqTBS" -#define NID_setct_CapReqTBS 544 -#define OBJ_setct_CapReqTBS OBJ_set_ctype,26L - -#define SN_setct_CapReqTBSX "setct-CapReqTBSX" -#define NID_setct_CapReqTBSX 545 -#define OBJ_setct_CapReqTBSX OBJ_set_ctype,27L - -#define SN_setct_CapResData "setct-CapResData" -#define NID_setct_CapResData 546 -#define OBJ_setct_CapResData OBJ_set_ctype,28L - -#define SN_setct_CapRevReqTBS "setct-CapRevReqTBS" -#define NID_setct_CapRevReqTBS 547 -#define OBJ_setct_CapRevReqTBS OBJ_set_ctype,29L - -#define SN_setct_CapRevReqTBSX "setct-CapRevReqTBSX" -#define NID_setct_CapRevReqTBSX 548 -#define OBJ_setct_CapRevReqTBSX OBJ_set_ctype,30L - -#define SN_setct_CapRevResData "setct-CapRevResData" -#define NID_setct_CapRevResData 549 -#define OBJ_setct_CapRevResData OBJ_set_ctype,31L - -#define SN_setct_CredReqTBS "setct-CredReqTBS" -#define NID_setct_CredReqTBS 550 -#define OBJ_setct_CredReqTBS OBJ_set_ctype,32L - -#define SN_setct_CredReqTBSX "setct-CredReqTBSX" -#define NID_setct_CredReqTBSX 551 -#define OBJ_setct_CredReqTBSX OBJ_set_ctype,33L - -#define SN_setct_CredResData "setct-CredResData" -#define NID_setct_CredResData 552 -#define OBJ_setct_CredResData OBJ_set_ctype,34L - -#define SN_setct_CredRevReqTBS "setct-CredRevReqTBS" -#define NID_setct_CredRevReqTBS 553 -#define OBJ_setct_CredRevReqTBS OBJ_set_ctype,35L - -#define SN_setct_CredRevReqTBSX "setct-CredRevReqTBSX" -#define NID_setct_CredRevReqTBSX 554 -#define OBJ_setct_CredRevReqTBSX OBJ_set_ctype,36L - -#define SN_setct_CredRevResData "setct-CredRevResData" -#define NID_setct_CredRevResData 555 -#define OBJ_setct_CredRevResData OBJ_set_ctype,37L - -#define SN_setct_PCertReqData "setct-PCertReqData" -#define NID_setct_PCertReqData 556 -#define OBJ_setct_PCertReqData OBJ_set_ctype,38L - -#define SN_setct_PCertResTBS "setct-PCertResTBS" -#define NID_setct_PCertResTBS 557 -#define OBJ_setct_PCertResTBS OBJ_set_ctype,39L - -#define SN_setct_BatchAdminReqData "setct-BatchAdminReqData" -#define NID_setct_BatchAdminReqData 558 -#define OBJ_setct_BatchAdminReqData OBJ_set_ctype,40L - -#define SN_setct_BatchAdminResData "setct-BatchAdminResData" -#define NID_setct_BatchAdminResData 559 -#define OBJ_setct_BatchAdminResData OBJ_set_ctype,41L - -#define SN_setct_CardCInitResTBS "setct-CardCInitResTBS" -#define NID_setct_CardCInitResTBS 560 -#define OBJ_setct_CardCInitResTBS OBJ_set_ctype,42L - -#define SN_setct_MeAqCInitResTBS "setct-MeAqCInitResTBS" -#define NID_setct_MeAqCInitResTBS 561 -#define OBJ_setct_MeAqCInitResTBS OBJ_set_ctype,43L - -#define SN_setct_RegFormResTBS "setct-RegFormResTBS" -#define NID_setct_RegFormResTBS 562 -#define OBJ_setct_RegFormResTBS OBJ_set_ctype,44L - -#define SN_setct_CertReqData "setct-CertReqData" -#define NID_setct_CertReqData 563 -#define OBJ_setct_CertReqData OBJ_set_ctype,45L - -#define SN_setct_CertReqTBS "setct-CertReqTBS" -#define NID_setct_CertReqTBS 564 -#define OBJ_setct_CertReqTBS OBJ_set_ctype,46L - -#define SN_setct_CertResData "setct-CertResData" -#define NID_setct_CertResData 565 -#define OBJ_setct_CertResData OBJ_set_ctype,47L - -#define SN_setct_CertInqReqTBS "setct-CertInqReqTBS" -#define NID_setct_CertInqReqTBS 566 -#define OBJ_setct_CertInqReqTBS OBJ_set_ctype,48L - -#define SN_setct_ErrorTBS "setct-ErrorTBS" -#define NID_setct_ErrorTBS 567 -#define OBJ_setct_ErrorTBS OBJ_set_ctype,49L - -#define SN_setct_PIDualSignedTBE "setct-PIDualSignedTBE" -#define NID_setct_PIDualSignedTBE 568 -#define OBJ_setct_PIDualSignedTBE OBJ_set_ctype,50L - -#define SN_setct_PIUnsignedTBE "setct-PIUnsignedTBE" -#define NID_setct_PIUnsignedTBE 569 -#define OBJ_setct_PIUnsignedTBE OBJ_set_ctype,51L - -#define SN_setct_AuthReqTBE "setct-AuthReqTBE" -#define NID_setct_AuthReqTBE 570 -#define OBJ_setct_AuthReqTBE OBJ_set_ctype,52L - -#define SN_setct_AuthResTBE "setct-AuthResTBE" -#define NID_setct_AuthResTBE 571 -#define OBJ_setct_AuthResTBE OBJ_set_ctype,53L - -#define SN_setct_AuthResTBEX "setct-AuthResTBEX" -#define NID_setct_AuthResTBEX 572 -#define OBJ_setct_AuthResTBEX OBJ_set_ctype,54L - -#define SN_setct_AuthTokenTBE "setct-AuthTokenTBE" -#define NID_setct_AuthTokenTBE 573 -#define OBJ_setct_AuthTokenTBE OBJ_set_ctype,55L - -#define SN_setct_CapTokenTBE "setct-CapTokenTBE" -#define NID_setct_CapTokenTBE 574 -#define OBJ_setct_CapTokenTBE OBJ_set_ctype,56L - -#define SN_setct_CapTokenTBEX "setct-CapTokenTBEX" -#define NID_setct_CapTokenTBEX 575 -#define OBJ_setct_CapTokenTBEX OBJ_set_ctype,57L - -#define SN_setct_AcqCardCodeMsgTBE "setct-AcqCardCodeMsgTBE" -#define NID_setct_AcqCardCodeMsgTBE 576 -#define OBJ_setct_AcqCardCodeMsgTBE OBJ_set_ctype,58L - -#define SN_setct_AuthRevReqTBE "setct-AuthRevReqTBE" -#define NID_setct_AuthRevReqTBE 577 -#define OBJ_setct_AuthRevReqTBE OBJ_set_ctype,59L - -#define SN_setct_AuthRevResTBE "setct-AuthRevResTBE" -#define NID_setct_AuthRevResTBE 578 -#define OBJ_setct_AuthRevResTBE OBJ_set_ctype,60L - -#define SN_setct_AuthRevResTBEB "setct-AuthRevResTBEB" -#define NID_setct_AuthRevResTBEB 579 -#define OBJ_setct_AuthRevResTBEB OBJ_set_ctype,61L - -#define SN_setct_CapReqTBE "setct-CapReqTBE" -#define NID_setct_CapReqTBE 580 -#define OBJ_setct_CapReqTBE OBJ_set_ctype,62L - -#define SN_setct_CapReqTBEX "setct-CapReqTBEX" -#define NID_setct_CapReqTBEX 581 -#define OBJ_setct_CapReqTBEX OBJ_set_ctype,63L - -#define SN_setct_CapResTBE "setct-CapResTBE" -#define NID_setct_CapResTBE 582 -#define OBJ_setct_CapResTBE OBJ_set_ctype,64L - -#define SN_setct_CapRevReqTBE "setct-CapRevReqTBE" -#define NID_setct_CapRevReqTBE 583 -#define OBJ_setct_CapRevReqTBE OBJ_set_ctype,65L - -#define SN_setct_CapRevReqTBEX "setct-CapRevReqTBEX" -#define NID_setct_CapRevReqTBEX 584 -#define OBJ_setct_CapRevReqTBEX OBJ_set_ctype,66L - -#define SN_setct_CapRevResTBE "setct-CapRevResTBE" -#define NID_setct_CapRevResTBE 585 -#define OBJ_setct_CapRevResTBE OBJ_set_ctype,67L - -#define SN_setct_CredReqTBE "setct-CredReqTBE" -#define NID_setct_CredReqTBE 586 -#define OBJ_setct_CredReqTBE OBJ_set_ctype,68L - -#define SN_setct_CredReqTBEX "setct-CredReqTBEX" -#define NID_setct_CredReqTBEX 587 -#define OBJ_setct_CredReqTBEX OBJ_set_ctype,69L - -#define SN_setct_CredResTBE "setct-CredResTBE" -#define NID_setct_CredResTBE 588 -#define OBJ_setct_CredResTBE OBJ_set_ctype,70L - -#define SN_setct_CredRevReqTBE "setct-CredRevReqTBE" -#define NID_setct_CredRevReqTBE 589 -#define OBJ_setct_CredRevReqTBE OBJ_set_ctype,71L - -#define SN_setct_CredRevReqTBEX "setct-CredRevReqTBEX" -#define NID_setct_CredRevReqTBEX 590 -#define OBJ_setct_CredRevReqTBEX OBJ_set_ctype,72L - -#define SN_setct_CredRevResTBE "setct-CredRevResTBE" -#define NID_setct_CredRevResTBE 591 -#define OBJ_setct_CredRevResTBE OBJ_set_ctype,73L - -#define SN_setct_BatchAdminReqTBE "setct-BatchAdminReqTBE" -#define NID_setct_BatchAdminReqTBE 592 -#define OBJ_setct_BatchAdminReqTBE OBJ_set_ctype,74L - -#define SN_setct_BatchAdminResTBE "setct-BatchAdminResTBE" -#define NID_setct_BatchAdminResTBE 593 -#define OBJ_setct_BatchAdminResTBE OBJ_set_ctype,75L - -#define SN_setct_RegFormReqTBE "setct-RegFormReqTBE" -#define NID_setct_RegFormReqTBE 594 -#define OBJ_setct_RegFormReqTBE OBJ_set_ctype,76L - -#define SN_setct_CertReqTBE "setct-CertReqTBE" -#define NID_setct_CertReqTBE 595 -#define OBJ_setct_CertReqTBE OBJ_set_ctype,77L - -#define SN_setct_CertReqTBEX "setct-CertReqTBEX" -#define NID_setct_CertReqTBEX 596 -#define OBJ_setct_CertReqTBEX OBJ_set_ctype,78L - -#define SN_setct_CertResTBE "setct-CertResTBE" -#define NID_setct_CertResTBE 597 -#define OBJ_setct_CertResTBE OBJ_set_ctype,79L - -#define SN_setct_CRLNotificationTBS "setct-CRLNotificationTBS" -#define NID_setct_CRLNotificationTBS 598 -#define OBJ_setct_CRLNotificationTBS OBJ_set_ctype,80L - -#define SN_setct_CRLNotificationResTBS "setct-CRLNotificationResTBS" -#define NID_setct_CRLNotificationResTBS 599 -#define OBJ_setct_CRLNotificationResTBS OBJ_set_ctype,81L - -#define SN_setct_BCIDistributionTBS "setct-BCIDistributionTBS" -#define NID_setct_BCIDistributionTBS 600 -#define OBJ_setct_BCIDistributionTBS OBJ_set_ctype,82L - -#define SN_setext_genCrypt "setext-genCrypt" -#define LN_setext_genCrypt "generic cryptogram" -#define NID_setext_genCrypt 601 -#define OBJ_setext_genCrypt OBJ_set_msgExt,1L - -#define SN_setext_miAuth "setext-miAuth" -#define LN_setext_miAuth "merchant initiated auth" -#define NID_setext_miAuth 602 -#define OBJ_setext_miAuth OBJ_set_msgExt,3L - -#define SN_setext_pinSecure "setext-pinSecure" -#define NID_setext_pinSecure 603 -#define OBJ_setext_pinSecure OBJ_set_msgExt,4L - -#define SN_setext_pinAny "setext-pinAny" -#define NID_setext_pinAny 604 -#define OBJ_setext_pinAny OBJ_set_msgExt,5L - -#define SN_setext_track2 "setext-track2" -#define NID_setext_track2 605 -#define OBJ_setext_track2 OBJ_set_msgExt,7L - -#define SN_setext_cv "setext-cv" -#define LN_setext_cv "additional verification" -#define NID_setext_cv 606 -#define OBJ_setext_cv OBJ_set_msgExt,8L - -#define SN_set_policy_root "set-policy-root" -#define NID_set_policy_root 607 -#define OBJ_set_policy_root OBJ_set_policy,0L - -#define SN_setCext_hashedRoot "setCext-hashedRoot" -#define NID_setCext_hashedRoot 608 -#define OBJ_setCext_hashedRoot OBJ_set_certExt,0L - -#define SN_setCext_certType "setCext-certType" -#define NID_setCext_certType 609 -#define OBJ_setCext_certType OBJ_set_certExt,1L - -#define SN_setCext_merchData "setCext-merchData" -#define NID_setCext_merchData 610 -#define OBJ_setCext_merchData OBJ_set_certExt,2L - -#define SN_setCext_cCertRequired "setCext-cCertRequired" -#define NID_setCext_cCertRequired 611 -#define OBJ_setCext_cCertRequired OBJ_set_certExt,3L - -#define SN_setCext_tunneling "setCext-tunneling" -#define NID_setCext_tunneling 612 -#define OBJ_setCext_tunneling OBJ_set_certExt,4L - -#define SN_setCext_setExt "setCext-setExt" -#define NID_setCext_setExt 613 -#define OBJ_setCext_setExt OBJ_set_certExt,5L - -#define SN_setCext_setQualf "setCext-setQualf" -#define NID_setCext_setQualf 614 -#define OBJ_setCext_setQualf OBJ_set_certExt,6L - -#define SN_setCext_PGWYcapabilities "setCext-PGWYcapabilities" -#define NID_setCext_PGWYcapabilities 615 -#define OBJ_setCext_PGWYcapabilities OBJ_set_certExt,7L - -#define SN_setCext_TokenIdentifier "setCext-TokenIdentifier" -#define NID_setCext_TokenIdentifier 616 -#define OBJ_setCext_TokenIdentifier OBJ_set_certExt,8L - -#define SN_setCext_Track2Data "setCext-Track2Data" -#define NID_setCext_Track2Data 617 -#define OBJ_setCext_Track2Data OBJ_set_certExt,9L - -#define SN_setCext_TokenType "setCext-TokenType" -#define NID_setCext_TokenType 618 -#define OBJ_setCext_TokenType OBJ_set_certExt,10L - -#define SN_setCext_IssuerCapabilities "setCext-IssuerCapabilities" -#define NID_setCext_IssuerCapabilities 619 -#define OBJ_setCext_IssuerCapabilities OBJ_set_certExt,11L - -#define SN_setAttr_Cert "setAttr-Cert" -#define NID_setAttr_Cert 620 -#define OBJ_setAttr_Cert OBJ_set_attr,0L - -#define SN_setAttr_PGWYcap "setAttr-PGWYcap" -#define LN_setAttr_PGWYcap "payment gateway capabilities" -#define NID_setAttr_PGWYcap 621 -#define OBJ_setAttr_PGWYcap OBJ_set_attr,1L - -#define SN_setAttr_TokenType "setAttr-TokenType" -#define NID_setAttr_TokenType 622 -#define OBJ_setAttr_TokenType OBJ_set_attr,2L - -#define SN_setAttr_IssCap "setAttr-IssCap" -#define LN_setAttr_IssCap "issuer capabilities" -#define NID_setAttr_IssCap 623 -#define OBJ_setAttr_IssCap OBJ_set_attr,3L - -#define SN_set_rootKeyThumb "set-rootKeyThumb" -#define NID_set_rootKeyThumb 624 -#define OBJ_set_rootKeyThumb OBJ_setAttr_Cert,0L - -#define SN_set_addPolicy "set-addPolicy" -#define NID_set_addPolicy 625 -#define OBJ_set_addPolicy OBJ_setAttr_Cert,1L - -#define SN_setAttr_Token_EMV "setAttr-Token-EMV" -#define NID_setAttr_Token_EMV 626 -#define OBJ_setAttr_Token_EMV OBJ_setAttr_TokenType,1L - -#define SN_setAttr_Token_B0Prime "setAttr-Token-B0Prime" -#define NID_setAttr_Token_B0Prime 627 -#define OBJ_setAttr_Token_B0Prime OBJ_setAttr_TokenType,2L - -#define SN_setAttr_IssCap_CVM "setAttr-IssCap-CVM" -#define NID_setAttr_IssCap_CVM 628 -#define OBJ_setAttr_IssCap_CVM OBJ_setAttr_IssCap,3L - -#define SN_setAttr_IssCap_T2 "setAttr-IssCap-T2" -#define NID_setAttr_IssCap_T2 629 -#define OBJ_setAttr_IssCap_T2 OBJ_setAttr_IssCap,4L - -#define SN_setAttr_IssCap_Sig "setAttr-IssCap-Sig" -#define NID_setAttr_IssCap_Sig 630 -#define OBJ_setAttr_IssCap_Sig OBJ_setAttr_IssCap,5L - -#define SN_setAttr_GenCryptgrm "setAttr-GenCryptgrm" -#define LN_setAttr_GenCryptgrm "generate cryptogram" -#define NID_setAttr_GenCryptgrm 631 -#define OBJ_setAttr_GenCryptgrm OBJ_setAttr_IssCap_CVM,1L - -#define SN_setAttr_T2Enc "setAttr-T2Enc" -#define LN_setAttr_T2Enc "encrypted track 2" -#define NID_setAttr_T2Enc 632 -#define OBJ_setAttr_T2Enc OBJ_setAttr_IssCap_T2,1L - -#define SN_setAttr_T2cleartxt "setAttr-T2cleartxt" -#define LN_setAttr_T2cleartxt "cleartext track 2" -#define NID_setAttr_T2cleartxt 633 -#define OBJ_setAttr_T2cleartxt OBJ_setAttr_IssCap_T2,2L - -#define SN_setAttr_TokICCsig "setAttr-TokICCsig" -#define LN_setAttr_TokICCsig "ICC or token signature" -#define NID_setAttr_TokICCsig 634 -#define OBJ_setAttr_TokICCsig OBJ_setAttr_IssCap_Sig,1L - -#define SN_setAttr_SecDevSig "setAttr-SecDevSig" -#define LN_setAttr_SecDevSig "secure device signature" -#define NID_setAttr_SecDevSig 635 -#define OBJ_setAttr_SecDevSig OBJ_setAttr_IssCap_Sig,2L - -#define SN_set_brand_IATA_ATA "set-brand-IATA-ATA" -#define NID_set_brand_IATA_ATA 636 -#define OBJ_set_brand_IATA_ATA OBJ_set_brand,1L - -#define SN_set_brand_Diners "set-brand-Diners" -#define NID_set_brand_Diners 637 -#define OBJ_set_brand_Diners OBJ_set_brand,30L - -#define SN_set_brand_AmericanExpress "set-brand-AmericanExpress" -#define NID_set_brand_AmericanExpress 638 -#define OBJ_set_brand_AmericanExpress OBJ_set_brand,34L - -#define SN_set_brand_JCB "set-brand-JCB" -#define NID_set_brand_JCB 639 -#define OBJ_set_brand_JCB OBJ_set_brand,35L - -#define SN_set_brand_Visa "set-brand-Visa" -#define NID_set_brand_Visa 640 -#define OBJ_set_brand_Visa OBJ_set_brand,4L - -#define SN_set_brand_MasterCard "set-brand-MasterCard" -#define NID_set_brand_MasterCard 641 -#define OBJ_set_brand_MasterCard OBJ_set_brand,5L - -#define SN_set_brand_Novus "set-brand-Novus" -#define NID_set_brand_Novus 642 -#define OBJ_set_brand_Novus OBJ_set_brand,6011L - -#define SN_des_cdmf "DES-CDMF" -#define LN_des_cdmf "des-cdmf" -#define NID_des_cdmf 643 -#define OBJ_des_cdmf OBJ_rsadsi,3L,10L - -#define SN_rsaOAEPEncryptionSET "rsaOAEPEncryptionSET" -#define NID_rsaOAEPEncryptionSET 644 -#define OBJ_rsaOAEPEncryptionSET OBJ_rsadsi,1L,1L,6L - -#define SN_ipsec3 "Oakley-EC2N-3" -#define LN_ipsec3 "ipsec3" -#define NID_ipsec3 749 - -#define SN_ipsec4 "Oakley-EC2N-4" -#define LN_ipsec4 "ipsec4" -#define NID_ipsec4 750 - -#define SN_whirlpool "whirlpool" -#define NID_whirlpool 804 -#define OBJ_whirlpool OBJ_iso,0L,10118L,3L,0L,55L - -#define SN_cryptopro "cryptopro" -#define NID_cryptopro 805 -#define OBJ_cryptopro OBJ_member_body,643L,2L,2L - -#define SN_cryptocom "cryptocom" -#define NID_cryptocom 806 -#define OBJ_cryptocom OBJ_member_body,643L,2L,9L - -#define SN_id_GostR3411_94_with_GostR3410_2001 "id-GostR3411-94-with-GostR3410-2001" -#define LN_id_GostR3411_94_with_GostR3410_2001 "GOST R 34.11-94 with GOST R 34.10-2001" -#define NID_id_GostR3411_94_with_GostR3410_2001 807 -#define OBJ_id_GostR3411_94_with_GostR3410_2001 OBJ_cryptopro,3L - -#define SN_id_GostR3411_94_with_GostR3410_94 "id-GostR3411-94-with-GostR3410-94" -#define LN_id_GostR3411_94_with_GostR3410_94 "GOST R 34.11-94 with GOST R 34.10-94" -#define NID_id_GostR3411_94_with_GostR3410_94 808 -#define OBJ_id_GostR3411_94_with_GostR3410_94 OBJ_cryptopro,4L - -#define SN_id_GostR3411_94 "md_gost94" -#define LN_id_GostR3411_94 "GOST R 34.11-94" -#define NID_id_GostR3411_94 809 -#define OBJ_id_GostR3411_94 OBJ_cryptopro,9L - -#define SN_id_HMACGostR3411_94 "id-HMACGostR3411-94" -#define LN_id_HMACGostR3411_94 "HMAC GOST 34.11-94" -#define NID_id_HMACGostR3411_94 810 -#define OBJ_id_HMACGostR3411_94 OBJ_cryptopro,10L - -#define SN_id_GostR3410_2001 "gost2001" -#define LN_id_GostR3410_2001 "GOST R 34.10-2001" -#define NID_id_GostR3410_2001 811 -#define OBJ_id_GostR3410_2001 OBJ_cryptopro,19L - -#define SN_id_GostR3410_94 "gost94" -#define LN_id_GostR3410_94 "GOST R 34.10-94" -#define NID_id_GostR3410_94 812 -#define OBJ_id_GostR3410_94 OBJ_cryptopro,20L - -#define SN_id_Gost28147_89 "gost89" -#define LN_id_Gost28147_89 "GOST 28147-89" -#define NID_id_Gost28147_89 813 -#define OBJ_id_Gost28147_89 OBJ_cryptopro,21L - -#define SN_gost89_cnt "gost89-cnt" -#define NID_gost89_cnt 814 - -#define SN_id_Gost28147_89_MAC "gost-mac" -#define LN_id_Gost28147_89_MAC "GOST 28147-89 MAC" -#define NID_id_Gost28147_89_MAC 815 -#define OBJ_id_Gost28147_89_MAC OBJ_cryptopro,22L - -#define SN_id_GostR3411_94_prf "prf-gostr3411-94" -#define LN_id_GostR3411_94_prf "GOST R 34.11-94 PRF" -#define NID_id_GostR3411_94_prf 816 -#define OBJ_id_GostR3411_94_prf OBJ_cryptopro,23L - -#define SN_id_GostR3410_2001DH "id-GostR3410-2001DH" -#define LN_id_GostR3410_2001DH "GOST R 34.10-2001 DH" -#define NID_id_GostR3410_2001DH 817 -#define OBJ_id_GostR3410_2001DH OBJ_cryptopro,98L - -#define SN_id_GostR3410_94DH "id-GostR3410-94DH" -#define LN_id_GostR3410_94DH "GOST R 34.10-94 DH" -#define NID_id_GostR3410_94DH 818 -#define OBJ_id_GostR3410_94DH OBJ_cryptopro,99L - -#define SN_id_Gost28147_89_CryptoPro_KeyMeshing "id-Gost28147-89-CryptoPro-KeyMeshing" -#define NID_id_Gost28147_89_CryptoPro_KeyMeshing 819 -#define OBJ_id_Gost28147_89_CryptoPro_KeyMeshing OBJ_cryptopro,14L,1L - -#define SN_id_Gost28147_89_None_KeyMeshing "id-Gost28147-89-None-KeyMeshing" -#define NID_id_Gost28147_89_None_KeyMeshing 820 -#define OBJ_id_Gost28147_89_None_KeyMeshing OBJ_cryptopro,14L,0L - -#define SN_id_GostR3411_94_TestParamSet "id-GostR3411-94-TestParamSet" -#define NID_id_GostR3411_94_TestParamSet 821 -#define OBJ_id_GostR3411_94_TestParamSet OBJ_cryptopro,30L,0L - -#define SN_id_GostR3411_94_CryptoProParamSet "id-GostR3411-94-CryptoProParamSet" -#define NID_id_GostR3411_94_CryptoProParamSet 822 -#define OBJ_id_GostR3411_94_CryptoProParamSet OBJ_cryptopro,30L,1L - -#define SN_id_Gost28147_89_TestParamSet "id-Gost28147-89-TestParamSet" -#define NID_id_Gost28147_89_TestParamSet 823 -#define OBJ_id_Gost28147_89_TestParamSet OBJ_cryptopro,31L,0L - -#define SN_id_Gost28147_89_CryptoPro_A_ParamSet "id-Gost28147-89-CryptoPro-A-ParamSet" -#define NID_id_Gost28147_89_CryptoPro_A_ParamSet 824 -#define OBJ_id_Gost28147_89_CryptoPro_A_ParamSet OBJ_cryptopro,31L,1L - -#define SN_id_Gost28147_89_CryptoPro_B_ParamSet "id-Gost28147-89-CryptoPro-B-ParamSet" -#define NID_id_Gost28147_89_CryptoPro_B_ParamSet 825 -#define OBJ_id_Gost28147_89_CryptoPro_B_ParamSet OBJ_cryptopro,31L,2L - -#define SN_id_Gost28147_89_CryptoPro_C_ParamSet "id-Gost28147-89-CryptoPro-C-ParamSet" -#define NID_id_Gost28147_89_CryptoPro_C_ParamSet 826 -#define OBJ_id_Gost28147_89_CryptoPro_C_ParamSet OBJ_cryptopro,31L,3L - -#define SN_id_Gost28147_89_CryptoPro_D_ParamSet "id-Gost28147-89-CryptoPro-D-ParamSet" -#define NID_id_Gost28147_89_CryptoPro_D_ParamSet 827 -#define OBJ_id_Gost28147_89_CryptoPro_D_ParamSet OBJ_cryptopro,31L,4L - -#define SN_id_Gost28147_89_CryptoPro_Oscar_1_1_ParamSet "id-Gost28147-89-CryptoPro-Oscar-1-1-ParamSet" -#define NID_id_Gost28147_89_CryptoPro_Oscar_1_1_ParamSet 828 -#define OBJ_id_Gost28147_89_CryptoPro_Oscar_1_1_ParamSet OBJ_cryptopro,31L,5L - -#define SN_id_Gost28147_89_CryptoPro_Oscar_1_0_ParamSet "id-Gost28147-89-CryptoPro-Oscar-1-0-ParamSet" -#define NID_id_Gost28147_89_CryptoPro_Oscar_1_0_ParamSet 829 -#define OBJ_id_Gost28147_89_CryptoPro_Oscar_1_0_ParamSet OBJ_cryptopro,31L,6L - -#define SN_id_Gost28147_89_CryptoPro_RIC_1_ParamSet "id-Gost28147-89-CryptoPro-RIC-1-ParamSet" -#define NID_id_Gost28147_89_CryptoPro_RIC_1_ParamSet 830 -#define OBJ_id_Gost28147_89_CryptoPro_RIC_1_ParamSet OBJ_cryptopro,31L,7L - -#define SN_id_GostR3410_94_TestParamSet "id-GostR3410-94-TestParamSet" -#define NID_id_GostR3410_94_TestParamSet 831 -#define OBJ_id_GostR3410_94_TestParamSet OBJ_cryptopro,32L,0L - -#define SN_id_GostR3410_94_CryptoPro_A_ParamSet "id-GostR3410-94-CryptoPro-A-ParamSet" -#define NID_id_GostR3410_94_CryptoPro_A_ParamSet 832 -#define OBJ_id_GostR3410_94_CryptoPro_A_ParamSet OBJ_cryptopro,32L,2L - -#define SN_id_GostR3410_94_CryptoPro_B_ParamSet "id-GostR3410-94-CryptoPro-B-ParamSet" -#define NID_id_GostR3410_94_CryptoPro_B_ParamSet 833 -#define OBJ_id_GostR3410_94_CryptoPro_B_ParamSet OBJ_cryptopro,32L,3L - -#define SN_id_GostR3410_94_CryptoPro_C_ParamSet "id-GostR3410-94-CryptoPro-C-ParamSet" -#define NID_id_GostR3410_94_CryptoPro_C_ParamSet 834 -#define OBJ_id_GostR3410_94_CryptoPro_C_ParamSet OBJ_cryptopro,32L,4L - -#define SN_id_GostR3410_94_CryptoPro_D_ParamSet "id-GostR3410-94-CryptoPro-D-ParamSet" -#define NID_id_GostR3410_94_CryptoPro_D_ParamSet 835 -#define OBJ_id_GostR3410_94_CryptoPro_D_ParamSet OBJ_cryptopro,32L,5L - -#define SN_id_GostR3410_94_CryptoPro_XchA_ParamSet "id-GostR3410-94-CryptoPro-XchA-ParamSet" -#define NID_id_GostR3410_94_CryptoPro_XchA_ParamSet 836 -#define OBJ_id_GostR3410_94_CryptoPro_XchA_ParamSet OBJ_cryptopro,33L,1L - -#define SN_id_GostR3410_94_CryptoPro_XchB_ParamSet "id-GostR3410-94-CryptoPro-XchB-ParamSet" -#define NID_id_GostR3410_94_CryptoPro_XchB_ParamSet 837 -#define OBJ_id_GostR3410_94_CryptoPro_XchB_ParamSet OBJ_cryptopro,33L,2L - -#define SN_id_GostR3410_94_CryptoPro_XchC_ParamSet "id-GostR3410-94-CryptoPro-XchC-ParamSet" -#define NID_id_GostR3410_94_CryptoPro_XchC_ParamSet 838 -#define OBJ_id_GostR3410_94_CryptoPro_XchC_ParamSet OBJ_cryptopro,33L,3L - -#define SN_id_GostR3410_2001_TestParamSet "id-GostR3410-2001-TestParamSet" -#define NID_id_GostR3410_2001_TestParamSet 839 -#define OBJ_id_GostR3410_2001_TestParamSet OBJ_cryptopro,35L,0L - -#define SN_id_GostR3410_2001_CryptoPro_A_ParamSet "id-GostR3410-2001-CryptoPro-A-ParamSet" -#define NID_id_GostR3410_2001_CryptoPro_A_ParamSet 840 -#define OBJ_id_GostR3410_2001_CryptoPro_A_ParamSet OBJ_cryptopro,35L,1L - -#define SN_id_GostR3410_2001_CryptoPro_B_ParamSet "id-GostR3410-2001-CryptoPro-B-ParamSet" -#define NID_id_GostR3410_2001_CryptoPro_B_ParamSet 841 -#define OBJ_id_GostR3410_2001_CryptoPro_B_ParamSet OBJ_cryptopro,35L,2L - -#define SN_id_GostR3410_2001_CryptoPro_C_ParamSet "id-GostR3410-2001-CryptoPro-C-ParamSet" -#define NID_id_GostR3410_2001_CryptoPro_C_ParamSet 842 -#define OBJ_id_GostR3410_2001_CryptoPro_C_ParamSet OBJ_cryptopro,35L,3L - -#define SN_id_GostR3410_2001_CryptoPro_XchA_ParamSet "id-GostR3410-2001-CryptoPro-XchA-ParamSet" -#define NID_id_GostR3410_2001_CryptoPro_XchA_ParamSet 843 -#define OBJ_id_GostR3410_2001_CryptoPro_XchA_ParamSet OBJ_cryptopro,36L,0L - -#define SN_id_GostR3410_2001_CryptoPro_XchB_ParamSet "id-GostR3410-2001-CryptoPro-XchB-ParamSet" -#define NID_id_GostR3410_2001_CryptoPro_XchB_ParamSet 844 -#define OBJ_id_GostR3410_2001_CryptoPro_XchB_ParamSet OBJ_cryptopro,36L,1L - -#define SN_id_GostR3410_94_a "id-GostR3410-94-a" -#define NID_id_GostR3410_94_a 845 -#define OBJ_id_GostR3410_94_a OBJ_id_GostR3410_94,1L - -#define SN_id_GostR3410_94_aBis "id-GostR3410-94-aBis" -#define NID_id_GostR3410_94_aBis 846 -#define OBJ_id_GostR3410_94_aBis OBJ_id_GostR3410_94,2L - -#define SN_id_GostR3410_94_b "id-GostR3410-94-b" -#define NID_id_GostR3410_94_b 847 -#define OBJ_id_GostR3410_94_b OBJ_id_GostR3410_94,3L - -#define SN_id_GostR3410_94_bBis "id-GostR3410-94-bBis" -#define NID_id_GostR3410_94_bBis 848 -#define OBJ_id_GostR3410_94_bBis OBJ_id_GostR3410_94,4L - -#define SN_id_Gost28147_89_cc "id-Gost28147-89-cc" -#define LN_id_Gost28147_89_cc "GOST 28147-89 Cryptocom ParamSet" -#define NID_id_Gost28147_89_cc 849 -#define OBJ_id_Gost28147_89_cc OBJ_cryptocom,1L,6L,1L - -#define SN_id_GostR3410_94_cc "gost94cc" -#define LN_id_GostR3410_94_cc "GOST 34.10-94 Cryptocom" -#define NID_id_GostR3410_94_cc 850 -#define OBJ_id_GostR3410_94_cc OBJ_cryptocom,1L,5L,3L - -#define SN_id_GostR3410_2001_cc "gost2001cc" -#define LN_id_GostR3410_2001_cc "GOST 34.10-2001 Cryptocom" -#define NID_id_GostR3410_2001_cc 851 -#define OBJ_id_GostR3410_2001_cc OBJ_cryptocom,1L,5L,4L - -#define SN_id_GostR3411_94_with_GostR3410_94_cc "id-GostR3411-94-with-GostR3410-94-cc" -#define LN_id_GostR3411_94_with_GostR3410_94_cc "GOST R 34.11-94 with GOST R 34.10-94 Cryptocom" -#define NID_id_GostR3411_94_with_GostR3410_94_cc 852 -#define OBJ_id_GostR3411_94_with_GostR3410_94_cc OBJ_cryptocom,1L,3L,3L - -#define SN_id_GostR3411_94_with_GostR3410_2001_cc "id-GostR3411-94-with-GostR3410-2001-cc" -#define LN_id_GostR3411_94_with_GostR3410_2001_cc "GOST R 34.11-94 with GOST R 34.10-2001 Cryptocom" -#define NID_id_GostR3411_94_with_GostR3410_2001_cc 853 -#define OBJ_id_GostR3411_94_with_GostR3410_2001_cc OBJ_cryptocom,1L,3L,4L - -#define SN_id_GostR3410_2001_ParamSet_cc "id-GostR3410-2001-ParamSet-cc" -#define LN_id_GostR3410_2001_ParamSet_cc "GOST R 3410-2001 Parameter Set Cryptocom" -#define NID_id_GostR3410_2001_ParamSet_cc 854 -#define OBJ_id_GostR3410_2001_ParamSet_cc OBJ_cryptocom,1L,8L,1L - -#define SN_camellia_128_cbc "CAMELLIA-128-CBC" -#define LN_camellia_128_cbc "camellia-128-cbc" -#define NID_camellia_128_cbc 751 -#define OBJ_camellia_128_cbc 1L,2L,392L,200011L,61L,1L,1L,1L,2L - -#define SN_camellia_192_cbc "CAMELLIA-192-CBC" -#define LN_camellia_192_cbc "camellia-192-cbc" -#define NID_camellia_192_cbc 752 -#define OBJ_camellia_192_cbc 1L,2L,392L,200011L,61L,1L,1L,1L,3L - -#define SN_camellia_256_cbc "CAMELLIA-256-CBC" -#define LN_camellia_256_cbc "camellia-256-cbc" -#define NID_camellia_256_cbc 753 -#define OBJ_camellia_256_cbc 1L,2L,392L,200011L,61L,1L,1L,1L,4L - -#define SN_id_camellia128_wrap "id-camellia128-wrap" -#define NID_id_camellia128_wrap 907 -#define OBJ_id_camellia128_wrap 1L,2L,392L,200011L,61L,1L,1L,3L,2L - -#define SN_id_camellia192_wrap "id-camellia192-wrap" -#define NID_id_camellia192_wrap 908 -#define OBJ_id_camellia192_wrap 1L,2L,392L,200011L,61L,1L,1L,3L,3L - -#define SN_id_camellia256_wrap "id-camellia256-wrap" -#define NID_id_camellia256_wrap 909 -#define OBJ_id_camellia256_wrap 1L,2L,392L,200011L,61L,1L,1L,3L,4L - -#define OBJ_ntt_ds 0L,3L,4401L,5L - -#define OBJ_camellia OBJ_ntt_ds,3L,1L,9L - -#define SN_camellia_128_ecb "CAMELLIA-128-ECB" -#define LN_camellia_128_ecb "camellia-128-ecb" -#define NID_camellia_128_ecb 754 -#define OBJ_camellia_128_ecb OBJ_camellia,1L - -#define SN_camellia_128_ofb128 "CAMELLIA-128-OFB" -#define LN_camellia_128_ofb128 "camellia-128-ofb" -#define NID_camellia_128_ofb128 766 -#define OBJ_camellia_128_ofb128 OBJ_camellia,3L - -#define SN_camellia_128_cfb128 "CAMELLIA-128-CFB" -#define LN_camellia_128_cfb128 "camellia-128-cfb" -#define NID_camellia_128_cfb128 757 -#define OBJ_camellia_128_cfb128 OBJ_camellia,4L - -#define SN_camellia_192_ecb "CAMELLIA-192-ECB" -#define LN_camellia_192_ecb "camellia-192-ecb" -#define NID_camellia_192_ecb 755 -#define OBJ_camellia_192_ecb OBJ_camellia,21L - -#define SN_camellia_192_ofb128 "CAMELLIA-192-OFB" -#define LN_camellia_192_ofb128 "camellia-192-ofb" -#define NID_camellia_192_ofb128 767 -#define OBJ_camellia_192_ofb128 OBJ_camellia,23L - -#define SN_camellia_192_cfb128 "CAMELLIA-192-CFB" -#define LN_camellia_192_cfb128 "camellia-192-cfb" -#define NID_camellia_192_cfb128 758 -#define OBJ_camellia_192_cfb128 OBJ_camellia,24L - -#define SN_camellia_256_ecb "CAMELLIA-256-ECB" -#define LN_camellia_256_ecb "camellia-256-ecb" -#define NID_camellia_256_ecb 756 -#define OBJ_camellia_256_ecb OBJ_camellia,41L - -#define SN_camellia_256_ofb128 "CAMELLIA-256-OFB" -#define LN_camellia_256_ofb128 "camellia-256-ofb" -#define NID_camellia_256_ofb128 768 -#define OBJ_camellia_256_ofb128 OBJ_camellia,43L - -#define SN_camellia_256_cfb128 "CAMELLIA-256-CFB" -#define LN_camellia_256_cfb128 "camellia-256-cfb" -#define NID_camellia_256_cfb128 759 -#define OBJ_camellia_256_cfb128 OBJ_camellia,44L - -#define SN_camellia_128_cfb1 "CAMELLIA-128-CFB1" -#define LN_camellia_128_cfb1 "camellia-128-cfb1" -#define NID_camellia_128_cfb1 760 - -#define SN_camellia_192_cfb1 "CAMELLIA-192-CFB1" -#define LN_camellia_192_cfb1 "camellia-192-cfb1" -#define NID_camellia_192_cfb1 761 - -#define SN_camellia_256_cfb1 "CAMELLIA-256-CFB1" -#define LN_camellia_256_cfb1 "camellia-256-cfb1" -#define NID_camellia_256_cfb1 762 - -#define SN_camellia_128_cfb8 "CAMELLIA-128-CFB8" -#define LN_camellia_128_cfb8 "camellia-128-cfb8" -#define NID_camellia_128_cfb8 763 - -#define SN_camellia_192_cfb8 "CAMELLIA-192-CFB8" -#define LN_camellia_192_cfb8 "camellia-192-cfb8" -#define NID_camellia_192_cfb8 764 - -#define SN_camellia_256_cfb8 "CAMELLIA-256-CFB8" -#define LN_camellia_256_cfb8 "camellia-256-cfb8" -#define NID_camellia_256_cfb8 765 - -#define SN_kisa "KISA" -#define LN_kisa "kisa" -#define NID_kisa 773 -#define OBJ_kisa OBJ_member_body,410L,200004L - -#define SN_seed_ecb "SEED-ECB" -#define LN_seed_ecb "seed-ecb" -#define NID_seed_ecb 776 -#define OBJ_seed_ecb OBJ_kisa,1L,3L - -#define SN_seed_cbc "SEED-CBC" -#define LN_seed_cbc "seed-cbc" -#define NID_seed_cbc 777 -#define OBJ_seed_cbc OBJ_kisa,1L,4L - -#define SN_seed_cfb128 "SEED-CFB" -#define LN_seed_cfb128 "seed-cfb" -#define NID_seed_cfb128 779 -#define OBJ_seed_cfb128 OBJ_kisa,1L,5L - -#define SN_seed_ofb128 "SEED-OFB" -#define LN_seed_ofb128 "seed-ofb" -#define NID_seed_ofb128 778 -#define OBJ_seed_ofb128 OBJ_kisa,1L,6L - -#define SN_hmac "HMAC" -#define LN_hmac "hmac" -#define NID_hmac 855 - -#define SN_cmac "CMAC" -#define LN_cmac "cmac" -#define NID_cmac 894 - -#define SN_rc4_hmac_md5 "RC4-HMAC-MD5" -#define LN_rc4_hmac_md5 "rc4-hmac-md5" -#define NID_rc4_hmac_md5 915 - -#define SN_aes_128_cbc_hmac_sha1 "AES-128-CBC-HMAC-SHA1" -#define LN_aes_128_cbc_hmac_sha1 "aes-128-cbc-hmac-sha1" -#define NID_aes_128_cbc_hmac_sha1 916 - -#define SN_aes_192_cbc_hmac_sha1 "AES-192-CBC-HMAC-SHA1" -#define LN_aes_192_cbc_hmac_sha1 "aes-192-cbc-hmac-sha1" -#define NID_aes_192_cbc_hmac_sha1 917 - -#define SN_aes_256_cbc_hmac_sha1 "AES-256-CBC-HMAC-SHA1" -#define LN_aes_256_cbc_hmac_sha1 "aes-256-cbc-hmac-sha1" -#define NID_aes_256_cbc_hmac_sha1 918 - -#define SN_aes_128_cbc_hmac_sha256 "AES-128-CBC-HMAC-SHA256" -#define LN_aes_128_cbc_hmac_sha256 "aes-128-cbc-hmac-sha256" -#define NID_aes_128_cbc_hmac_sha256 948 - -#define SN_aes_192_cbc_hmac_sha256 "AES-192-CBC-HMAC-SHA256" -#define LN_aes_192_cbc_hmac_sha256 "aes-192-cbc-hmac-sha256" -#define NID_aes_192_cbc_hmac_sha256 949 - -#define SN_aes_256_cbc_hmac_sha256 "AES-256-CBC-HMAC-SHA256" -#define LN_aes_256_cbc_hmac_sha256 "aes-256-cbc-hmac-sha256" -#define NID_aes_256_cbc_hmac_sha256 950 - -#define SN_dhpublicnumber "dhpublicnumber" -#define LN_dhpublicnumber "X9.42 DH" -#define NID_dhpublicnumber 920 -#define OBJ_dhpublicnumber OBJ_ISO_US,10046L,2L,1L - -#define SN_brainpoolP160r1 "brainpoolP160r1" -#define NID_brainpoolP160r1 921 -#define OBJ_brainpoolP160r1 1L,3L,36L,3L,3L,2L,8L,1L,1L,1L - -#define SN_brainpoolP160t1 "brainpoolP160t1" -#define NID_brainpoolP160t1 922 -#define OBJ_brainpoolP160t1 1L,3L,36L,3L,3L,2L,8L,1L,1L,2L - -#define SN_brainpoolP192r1 "brainpoolP192r1" -#define NID_brainpoolP192r1 923 -#define OBJ_brainpoolP192r1 1L,3L,36L,3L,3L,2L,8L,1L,1L,3L - -#define SN_brainpoolP192t1 "brainpoolP192t1" -#define NID_brainpoolP192t1 924 -#define OBJ_brainpoolP192t1 1L,3L,36L,3L,3L,2L,8L,1L,1L,4L - -#define SN_brainpoolP224r1 "brainpoolP224r1" -#define NID_brainpoolP224r1 925 -#define OBJ_brainpoolP224r1 1L,3L,36L,3L,3L,2L,8L,1L,1L,5L - -#define SN_brainpoolP224t1 "brainpoolP224t1" -#define NID_brainpoolP224t1 926 -#define OBJ_brainpoolP224t1 1L,3L,36L,3L,3L,2L,8L,1L,1L,6L - -#define SN_brainpoolP256r1 "brainpoolP256r1" -#define NID_brainpoolP256r1 927 -#define OBJ_brainpoolP256r1 1L,3L,36L,3L,3L,2L,8L,1L,1L,7L - -#define SN_brainpoolP256t1 "brainpoolP256t1" -#define NID_brainpoolP256t1 928 -#define OBJ_brainpoolP256t1 1L,3L,36L,3L,3L,2L,8L,1L,1L,8L - -#define SN_brainpoolP320r1 "brainpoolP320r1" -#define NID_brainpoolP320r1 929 -#define OBJ_brainpoolP320r1 1L,3L,36L,3L,3L,2L,8L,1L,1L,9L - -#define SN_brainpoolP320t1 "brainpoolP320t1" -#define NID_brainpoolP320t1 930 -#define OBJ_brainpoolP320t1 1L,3L,36L,3L,3L,2L,8L,1L,1L,10L - -#define SN_brainpoolP384r1 "brainpoolP384r1" -#define NID_brainpoolP384r1 931 -#define OBJ_brainpoolP384r1 1L,3L,36L,3L,3L,2L,8L,1L,1L,11L - -#define SN_brainpoolP384t1 "brainpoolP384t1" -#define NID_brainpoolP384t1 932 -#define OBJ_brainpoolP384t1 1L,3L,36L,3L,3L,2L,8L,1L,1L,12L - -#define SN_brainpoolP512r1 "brainpoolP512r1" -#define NID_brainpoolP512r1 933 -#define OBJ_brainpoolP512r1 1L,3L,36L,3L,3L,2L,8L,1L,1L,13L - -#define SN_brainpoolP512t1 "brainpoolP512t1" -#define NID_brainpoolP512t1 934 -#define OBJ_brainpoolP512t1 1L,3L,36L,3L,3L,2L,8L,1L,1L,14L - -#define OBJ_x9_63_scheme 1L,3L,133L,16L,840L,63L,0L - -#define OBJ_secg_scheme OBJ_certicom_arc,1L - -#define SN_dhSinglePass_stdDH_sha1kdf_scheme "dhSinglePass-stdDH-sha1kdf-scheme" -#define NID_dhSinglePass_stdDH_sha1kdf_scheme 936 -#define OBJ_dhSinglePass_stdDH_sha1kdf_scheme OBJ_x9_63_scheme,2L - -#define SN_dhSinglePass_stdDH_sha224kdf_scheme "dhSinglePass-stdDH-sha224kdf-scheme" -#define NID_dhSinglePass_stdDH_sha224kdf_scheme 937 -#define OBJ_dhSinglePass_stdDH_sha224kdf_scheme OBJ_secg_scheme,11L,0L - -#define SN_dhSinglePass_stdDH_sha256kdf_scheme "dhSinglePass-stdDH-sha256kdf-scheme" -#define NID_dhSinglePass_stdDH_sha256kdf_scheme 938 -#define OBJ_dhSinglePass_stdDH_sha256kdf_scheme OBJ_secg_scheme,11L,1L - -#define SN_dhSinglePass_stdDH_sha384kdf_scheme "dhSinglePass-stdDH-sha384kdf-scheme" -#define NID_dhSinglePass_stdDH_sha384kdf_scheme 939 -#define OBJ_dhSinglePass_stdDH_sha384kdf_scheme OBJ_secg_scheme,11L,2L - -#define SN_dhSinglePass_stdDH_sha512kdf_scheme "dhSinglePass-stdDH-sha512kdf-scheme" -#define NID_dhSinglePass_stdDH_sha512kdf_scheme 940 -#define OBJ_dhSinglePass_stdDH_sha512kdf_scheme OBJ_secg_scheme,11L,3L - -#define SN_dhSinglePass_cofactorDH_sha1kdf_scheme "dhSinglePass-cofactorDH-sha1kdf-scheme" -#define NID_dhSinglePass_cofactorDH_sha1kdf_scheme 941 -#define OBJ_dhSinglePass_cofactorDH_sha1kdf_scheme OBJ_x9_63_scheme,3L - -#define SN_dhSinglePass_cofactorDH_sha224kdf_scheme "dhSinglePass-cofactorDH-sha224kdf-scheme" -#define NID_dhSinglePass_cofactorDH_sha224kdf_scheme 942 -#define OBJ_dhSinglePass_cofactorDH_sha224kdf_scheme OBJ_secg_scheme,14L,0L - -#define SN_dhSinglePass_cofactorDH_sha256kdf_scheme "dhSinglePass-cofactorDH-sha256kdf-scheme" -#define NID_dhSinglePass_cofactorDH_sha256kdf_scheme 943 -#define OBJ_dhSinglePass_cofactorDH_sha256kdf_scheme OBJ_secg_scheme,14L,1L - -#define SN_dhSinglePass_cofactorDH_sha384kdf_scheme "dhSinglePass-cofactorDH-sha384kdf-scheme" -#define NID_dhSinglePass_cofactorDH_sha384kdf_scheme 944 -#define OBJ_dhSinglePass_cofactorDH_sha384kdf_scheme OBJ_secg_scheme,14L,2L - -#define SN_dhSinglePass_cofactorDH_sha512kdf_scheme "dhSinglePass-cofactorDH-sha512kdf-scheme" -#define NID_dhSinglePass_cofactorDH_sha512kdf_scheme 945 -#define OBJ_dhSinglePass_cofactorDH_sha512kdf_scheme OBJ_secg_scheme,14L,3L - -#define SN_dh_std_kdf "dh-std-kdf" -#define NID_dh_std_kdf 946 - -#define SN_dh_cofactor_kdf "dh-cofactor-kdf" -#define NID_dh_cofactor_kdf 947 - -#define SN_ct_precert_scts "ct_precert_scts" -#define LN_ct_precert_scts "CT Precertificate SCTs" -#define NID_ct_precert_scts 951 -#define OBJ_ct_precert_scts 1L,3L,6L,1L,4L,1L,11129L,2L,4L,2L - -#define SN_ct_precert_poison "ct_precert_poison" -#define LN_ct_precert_poison "CT Precertificate Poison" -#define NID_ct_precert_poison 952 -#define OBJ_ct_precert_poison 1L,3L,6L,1L,4L,1L,11129L,2L,4L,3L - -#define SN_ct_precert_signer "ct_precert_signer" -#define LN_ct_precert_signer "CT Precertificate Signer" -#define NID_ct_precert_signer 953 -#define OBJ_ct_precert_signer 1L,3L,6L,1L,4L,1L,11129L,2L,4L,4L - -#define SN_ct_cert_scts "ct_cert_scts" -#define LN_ct_cert_scts "CT Certificate SCTs" -#define NID_ct_cert_scts 954 -#define OBJ_ct_cert_scts 1L,3L,6L,1L,4L,1L,11129L,2L,4L,5L - -#define SN_jurisdictionLocalityName "jurisdictionL" -#define LN_jurisdictionLocalityName "jurisdictionLocalityName" -#define NID_jurisdictionLocalityName 955 -#define OBJ_jurisdictionLocalityName 1L,3L,6L,1L,4L,1L,311L,60L,2L,1L,1L - -#define SN_jurisdictionStateOrProvinceName "jurisdictionST" -#define LN_jurisdictionStateOrProvinceName "jurisdictionStateOrProvinceName" -#define NID_jurisdictionStateOrProvinceName 956 -#define OBJ_jurisdictionStateOrProvinceName 1L,3L,6L,1L,4L,1L,311L,60L,2L,1L,2L - -#define SN_jurisdictionCountryName "jurisdictionC" -#define LN_jurisdictionCountryName "jurisdictionCountryName" -#define NID_jurisdictionCountryName 957 -#define OBJ_jurisdictionCountryName 1L,3L,6L,1L,4L,1L,311L,60L,2L,1L,3L diff --git a/ext/openssl-win64/inc32/openssl/objects.h b/ext/openssl-win64/inc32/openssl/objects.h deleted file mode 100644 index b8dafa89..00000000 --- a/ext/openssl-win64/inc32/openssl/objects.h +++ /dev/null @@ -1,1143 +0,0 @@ -/* crypto/objects/objects.h */ -/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) - * All rights reserved. - * - * This package is an SSL implementation written - * by Eric Young (eay@cryptsoft.com). - * The implementation was written so as to conform with Netscapes SSL. - * - * This library is free for commercial and non-commercial use as long as - * the following conditions are aheared to. The following conditions - * apply to all code found in this distribution, be it the RC4, RSA, - * lhash, DES, etc., code; not just the SSL code. The SSL documentation - * included with this distribution is covered by the same copyright terms - * except that the holder is Tim Hudson (tjh@cryptsoft.com). - * - * Copyright remains Eric Young's, and as such any Copyright notices in - * the code are not to be removed. - * If this package is used in a product, Eric Young should be given attribution - * as the author of the parts of the library used. - * This can be in the form of a textual message at program startup or - * in documentation (online or textual) provided with the package. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * "This product includes cryptographic software written by - * Eric Young (eay@cryptsoft.com)" - * The word 'cryptographic' can be left out if the rouines from the library - * being used are not cryptographic related :-). - * 4. If you include any Windows specific code (or a derivative thereof) from - * the apps directory (application code) you must include an acknowledgement: - * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" - * - * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * The licence and distribution terms for any publically available version or - * derivative of this code cannot be changed. i.e. this code cannot simply be - * copied and put under another distribution licence - * [including the GNU Public Licence.] - */ - -#ifndef HEADER_OBJECTS_H -# define HEADER_OBJECTS_H - -# define USE_OBJ_MAC - -# ifdef USE_OBJ_MAC -# include -# else -# define SN_undef "UNDEF" -# define LN_undef "undefined" -# define NID_undef 0 -# define OBJ_undef 0L - -# define SN_Algorithm "Algorithm" -# define LN_algorithm "algorithm" -# define NID_algorithm 38 -# define OBJ_algorithm 1L,3L,14L,3L,2L - -# define LN_rsadsi "rsadsi" -# define NID_rsadsi 1 -# define OBJ_rsadsi 1L,2L,840L,113549L - -# define LN_pkcs "pkcs" -# define NID_pkcs 2 -# define OBJ_pkcs OBJ_rsadsi,1L - -# define SN_md2 "MD2" -# define LN_md2 "md2" -# define NID_md2 3 -# define OBJ_md2 OBJ_rsadsi,2L,2L - -# define SN_md5 "MD5" -# define LN_md5 "md5" -# define NID_md5 4 -# define OBJ_md5 OBJ_rsadsi,2L,5L - -# define SN_rc4 "RC4" -# define LN_rc4 "rc4" -# define NID_rc4 5 -# define OBJ_rc4 OBJ_rsadsi,3L,4L - -# define LN_rsaEncryption "rsaEncryption" -# define NID_rsaEncryption 6 -# define OBJ_rsaEncryption OBJ_pkcs,1L,1L - -# define SN_md2WithRSAEncryption "RSA-MD2" -# define LN_md2WithRSAEncryption "md2WithRSAEncryption" -# define NID_md2WithRSAEncryption 7 -# define OBJ_md2WithRSAEncryption OBJ_pkcs,1L,2L - -# define SN_md5WithRSAEncryption "RSA-MD5" -# define LN_md5WithRSAEncryption "md5WithRSAEncryption" -# define NID_md5WithRSAEncryption 8 -# define OBJ_md5WithRSAEncryption OBJ_pkcs,1L,4L - -# define SN_pbeWithMD2AndDES_CBC "PBE-MD2-DES" -# define LN_pbeWithMD2AndDES_CBC "pbeWithMD2AndDES-CBC" -# define NID_pbeWithMD2AndDES_CBC 9 -# define OBJ_pbeWithMD2AndDES_CBC OBJ_pkcs,5L,1L - -# define SN_pbeWithMD5AndDES_CBC "PBE-MD5-DES" -# define LN_pbeWithMD5AndDES_CBC "pbeWithMD5AndDES-CBC" -# define NID_pbeWithMD5AndDES_CBC 10 -# define OBJ_pbeWithMD5AndDES_CBC OBJ_pkcs,5L,3L - -# define LN_X500 "X500" -# define NID_X500 11 -# define OBJ_X500 2L,5L - -# define LN_X509 "X509" -# define NID_X509 12 -# define OBJ_X509 OBJ_X500,4L - -# define SN_commonName "CN" -# define LN_commonName "commonName" -# define NID_commonName 13 -# define OBJ_commonName OBJ_X509,3L - -# define SN_countryName "C" -# define LN_countryName "countryName" -# define NID_countryName 14 -# define OBJ_countryName OBJ_X509,6L - -# define SN_localityName "L" -# define LN_localityName "localityName" -# define NID_localityName 15 -# define OBJ_localityName OBJ_X509,7L - -/* Postal Address? PA */ - -/* should be "ST" (rfc1327) but MS uses 'S' */ -# define SN_stateOrProvinceName "ST" -# define LN_stateOrProvinceName "stateOrProvinceName" -# define NID_stateOrProvinceName 16 -# define OBJ_stateOrProvinceName OBJ_X509,8L - -# define SN_organizationName "O" -# define LN_organizationName "organizationName" -# define NID_organizationName 17 -# define OBJ_organizationName OBJ_X509,10L - -# define SN_organizationalUnitName "OU" -# define LN_organizationalUnitName "organizationalUnitName" -# define NID_organizationalUnitName 18 -# define OBJ_organizationalUnitName OBJ_X509,11L - -# define SN_rsa "RSA" -# define LN_rsa "rsa" -# define NID_rsa 19 -# define OBJ_rsa OBJ_X500,8L,1L,1L - -# define LN_pkcs7 "pkcs7" -# define NID_pkcs7 20 -# define OBJ_pkcs7 OBJ_pkcs,7L - -# define LN_pkcs7_data "pkcs7-data" -# define NID_pkcs7_data 21 -# define OBJ_pkcs7_data OBJ_pkcs7,1L - -# define LN_pkcs7_signed "pkcs7-signedData" -# define NID_pkcs7_signed 22 -# define OBJ_pkcs7_signed OBJ_pkcs7,2L - -# define LN_pkcs7_enveloped "pkcs7-envelopedData" -# define NID_pkcs7_enveloped 23 -# define OBJ_pkcs7_enveloped OBJ_pkcs7,3L - -# define LN_pkcs7_signedAndEnveloped "pkcs7-signedAndEnvelopedData" -# define NID_pkcs7_signedAndEnveloped 24 -# define OBJ_pkcs7_signedAndEnveloped OBJ_pkcs7,4L - -# define LN_pkcs7_digest "pkcs7-digestData" -# define NID_pkcs7_digest 25 -# define OBJ_pkcs7_digest OBJ_pkcs7,5L - -# define LN_pkcs7_encrypted "pkcs7-encryptedData" -# define NID_pkcs7_encrypted 26 -# define OBJ_pkcs7_encrypted OBJ_pkcs7,6L - -# define LN_pkcs3 "pkcs3" -# define NID_pkcs3 27 -# define OBJ_pkcs3 OBJ_pkcs,3L - -# define LN_dhKeyAgreement "dhKeyAgreement" -# define NID_dhKeyAgreement 28 -# define OBJ_dhKeyAgreement OBJ_pkcs3,1L - -# define SN_des_ecb "DES-ECB" -# define LN_des_ecb "des-ecb" -# define NID_des_ecb 29 -# define OBJ_des_ecb OBJ_algorithm,6L - -# define SN_des_cfb64 "DES-CFB" -# define LN_des_cfb64 "des-cfb" -# define NID_des_cfb64 30 -/* IV + num */ -# define OBJ_des_cfb64 OBJ_algorithm,9L - -# define SN_des_cbc "DES-CBC" -# define LN_des_cbc "des-cbc" -# define NID_des_cbc 31 -/* IV */ -# define OBJ_des_cbc OBJ_algorithm,7L - -# define SN_des_ede "DES-EDE" -# define LN_des_ede "des-ede" -# define NID_des_ede 32 -/* ?? */ -# define OBJ_des_ede OBJ_algorithm,17L - -# define SN_des_ede3 "DES-EDE3" -# define LN_des_ede3 "des-ede3" -# define NID_des_ede3 33 - -# define SN_idea_cbc "IDEA-CBC" -# define LN_idea_cbc "idea-cbc" -# define NID_idea_cbc 34 -# define OBJ_idea_cbc 1L,3L,6L,1L,4L,1L,188L,7L,1L,1L,2L - -# define SN_idea_cfb64 "IDEA-CFB" -# define LN_idea_cfb64 "idea-cfb" -# define NID_idea_cfb64 35 - -# define SN_idea_ecb "IDEA-ECB" -# define LN_idea_ecb "idea-ecb" -# define NID_idea_ecb 36 - -# define SN_rc2_cbc "RC2-CBC" -# define LN_rc2_cbc "rc2-cbc" -# define NID_rc2_cbc 37 -# define OBJ_rc2_cbc OBJ_rsadsi,3L,2L - -# define SN_rc2_ecb "RC2-ECB" -# define LN_rc2_ecb "rc2-ecb" -# define NID_rc2_ecb 38 - -# define SN_rc2_cfb64 "RC2-CFB" -# define LN_rc2_cfb64 "rc2-cfb" -# define NID_rc2_cfb64 39 - -# define SN_rc2_ofb64 "RC2-OFB" -# define LN_rc2_ofb64 "rc2-ofb" -# define NID_rc2_ofb64 40 - -# define SN_sha "SHA" -# define LN_sha "sha" -# define NID_sha 41 -# define OBJ_sha OBJ_algorithm,18L - -# define SN_shaWithRSAEncryption "RSA-SHA" -# define LN_shaWithRSAEncryption "shaWithRSAEncryption" -# define NID_shaWithRSAEncryption 42 -# define OBJ_shaWithRSAEncryption OBJ_algorithm,15L - -# define SN_des_ede_cbc "DES-EDE-CBC" -# define LN_des_ede_cbc "des-ede-cbc" -# define NID_des_ede_cbc 43 - -# define SN_des_ede3_cbc "DES-EDE3-CBC" -# define LN_des_ede3_cbc "des-ede3-cbc" -# define NID_des_ede3_cbc 44 -# define OBJ_des_ede3_cbc OBJ_rsadsi,3L,7L - -# define SN_des_ofb64 "DES-OFB" -# define LN_des_ofb64 "des-ofb" -# define NID_des_ofb64 45 -# define OBJ_des_ofb64 OBJ_algorithm,8L - -# define SN_idea_ofb64 "IDEA-OFB" -# define LN_idea_ofb64 "idea-ofb" -# define NID_idea_ofb64 46 - -# define LN_pkcs9 "pkcs9" -# define NID_pkcs9 47 -# define OBJ_pkcs9 OBJ_pkcs,9L - -# define SN_pkcs9_emailAddress "Email" -# define LN_pkcs9_emailAddress "emailAddress" -# define NID_pkcs9_emailAddress 48 -# define OBJ_pkcs9_emailAddress OBJ_pkcs9,1L - -# define LN_pkcs9_unstructuredName "unstructuredName" -# define NID_pkcs9_unstructuredName 49 -# define OBJ_pkcs9_unstructuredName OBJ_pkcs9,2L - -# define LN_pkcs9_contentType "contentType" -# define NID_pkcs9_contentType 50 -# define OBJ_pkcs9_contentType OBJ_pkcs9,3L - -# define LN_pkcs9_messageDigest "messageDigest" -# define NID_pkcs9_messageDigest 51 -# define OBJ_pkcs9_messageDigest OBJ_pkcs9,4L - -# define LN_pkcs9_signingTime "signingTime" -# define NID_pkcs9_signingTime 52 -# define OBJ_pkcs9_signingTime OBJ_pkcs9,5L - -# define LN_pkcs9_countersignature "countersignature" -# define NID_pkcs9_countersignature 53 -# define OBJ_pkcs9_countersignature OBJ_pkcs9,6L - -# define LN_pkcs9_challengePassword "challengePassword" -# define NID_pkcs9_challengePassword 54 -# define OBJ_pkcs9_challengePassword OBJ_pkcs9,7L - -# define LN_pkcs9_unstructuredAddress "unstructuredAddress" -# define NID_pkcs9_unstructuredAddress 55 -# define OBJ_pkcs9_unstructuredAddress OBJ_pkcs9,8L - -# define LN_pkcs9_extCertAttributes "extendedCertificateAttributes" -# define NID_pkcs9_extCertAttributes 56 -# define OBJ_pkcs9_extCertAttributes OBJ_pkcs9,9L - -# define SN_netscape "Netscape" -# define LN_netscape "Netscape Communications Corp." -# define NID_netscape 57 -# define OBJ_netscape 2L,16L,840L,1L,113730L - -# define SN_netscape_cert_extension "nsCertExt" -# define LN_netscape_cert_extension "Netscape Certificate Extension" -# define NID_netscape_cert_extension 58 -# define OBJ_netscape_cert_extension OBJ_netscape,1L - -# define SN_netscape_data_type "nsDataType" -# define LN_netscape_data_type "Netscape Data Type" -# define NID_netscape_data_type 59 -# define OBJ_netscape_data_type OBJ_netscape,2L - -# define SN_des_ede_cfb64 "DES-EDE-CFB" -# define LN_des_ede_cfb64 "des-ede-cfb" -# define NID_des_ede_cfb64 60 - -# define SN_des_ede3_cfb64 "DES-EDE3-CFB" -# define LN_des_ede3_cfb64 "des-ede3-cfb" -# define NID_des_ede3_cfb64 61 - -# define SN_des_ede_ofb64 "DES-EDE-OFB" -# define LN_des_ede_ofb64 "des-ede-ofb" -# define NID_des_ede_ofb64 62 - -# define SN_des_ede3_ofb64 "DES-EDE3-OFB" -# define LN_des_ede3_ofb64 "des-ede3-ofb" -# define NID_des_ede3_ofb64 63 - -/* I'm not sure about the object ID */ -# define SN_sha1 "SHA1" -# define LN_sha1 "sha1" -# define NID_sha1 64 -# define OBJ_sha1 OBJ_algorithm,26L -/* 28 Jun 1996 - eay */ -/* #define OBJ_sha1 1L,3L,14L,2L,26L,05L <- wrong */ - -# define SN_sha1WithRSAEncryption "RSA-SHA1" -# define LN_sha1WithRSAEncryption "sha1WithRSAEncryption" -# define NID_sha1WithRSAEncryption 65 -# define OBJ_sha1WithRSAEncryption OBJ_pkcs,1L,5L - -# define SN_dsaWithSHA "DSA-SHA" -# define LN_dsaWithSHA "dsaWithSHA" -# define NID_dsaWithSHA 66 -# define OBJ_dsaWithSHA OBJ_algorithm,13L - -# define SN_dsa_2 "DSA-old" -# define LN_dsa_2 "dsaEncryption-old" -# define NID_dsa_2 67 -# define OBJ_dsa_2 OBJ_algorithm,12L - -/* proposed by microsoft to RSA */ -# define SN_pbeWithSHA1AndRC2_CBC "PBE-SHA1-RC2-64" -# define LN_pbeWithSHA1AndRC2_CBC "pbeWithSHA1AndRC2-CBC" -# define NID_pbeWithSHA1AndRC2_CBC 68 -# define OBJ_pbeWithSHA1AndRC2_CBC OBJ_pkcs,5L,11L - -/* - * proposed by microsoft to RSA as pbeWithSHA1AndRC4: it is now defined - * explicitly in PKCS#5 v2.0 as id-PBKDF2 which is something completely - * different. - */ -# define LN_id_pbkdf2 "PBKDF2" -# define NID_id_pbkdf2 69 -# define OBJ_id_pbkdf2 OBJ_pkcs,5L,12L - -# define SN_dsaWithSHA1_2 "DSA-SHA1-old" -# define LN_dsaWithSHA1_2 "dsaWithSHA1-old" -# define NID_dsaWithSHA1_2 70 -/* Got this one from 'sdn706r20.pdf' which is actually an NSA document :-) */ -# define OBJ_dsaWithSHA1_2 OBJ_algorithm,27L - -# define SN_netscape_cert_type "nsCertType" -# define LN_netscape_cert_type "Netscape Cert Type" -# define NID_netscape_cert_type 71 -# define OBJ_netscape_cert_type OBJ_netscape_cert_extension,1L - -# define SN_netscape_base_url "nsBaseUrl" -# define LN_netscape_base_url "Netscape Base Url" -# define NID_netscape_base_url 72 -# define OBJ_netscape_base_url OBJ_netscape_cert_extension,2L - -# define SN_netscape_revocation_url "nsRevocationUrl" -# define LN_netscape_revocation_url "Netscape Revocation Url" -# define NID_netscape_revocation_url 73 -# define OBJ_netscape_revocation_url OBJ_netscape_cert_extension,3L - -# define SN_netscape_ca_revocation_url "nsCaRevocationUrl" -# define LN_netscape_ca_revocation_url "Netscape CA Revocation Url" -# define NID_netscape_ca_revocation_url 74 -# define OBJ_netscape_ca_revocation_url OBJ_netscape_cert_extension,4L - -# define SN_netscape_renewal_url "nsRenewalUrl" -# define LN_netscape_renewal_url "Netscape Renewal Url" -# define NID_netscape_renewal_url 75 -# define OBJ_netscape_renewal_url OBJ_netscape_cert_extension,7L - -# define SN_netscape_ca_policy_url "nsCaPolicyUrl" -# define LN_netscape_ca_policy_url "Netscape CA Policy Url" -# define NID_netscape_ca_policy_url 76 -# define OBJ_netscape_ca_policy_url OBJ_netscape_cert_extension,8L - -# define SN_netscape_ssl_server_name "nsSslServerName" -# define LN_netscape_ssl_server_name "Netscape SSL Server Name" -# define NID_netscape_ssl_server_name 77 -# define OBJ_netscape_ssl_server_name OBJ_netscape_cert_extension,12L - -# define SN_netscape_comment "nsComment" -# define LN_netscape_comment "Netscape Comment" -# define NID_netscape_comment 78 -# define OBJ_netscape_comment OBJ_netscape_cert_extension,13L - -# define SN_netscape_cert_sequence "nsCertSequence" -# define LN_netscape_cert_sequence "Netscape Certificate Sequence" -# define NID_netscape_cert_sequence 79 -# define OBJ_netscape_cert_sequence OBJ_netscape_data_type,5L - -# define SN_desx_cbc "DESX-CBC" -# define LN_desx_cbc "desx-cbc" -# define NID_desx_cbc 80 - -# define SN_id_ce "id-ce" -# define NID_id_ce 81 -# define OBJ_id_ce 2L,5L,29L - -# define SN_subject_key_identifier "subjectKeyIdentifier" -# define LN_subject_key_identifier "X509v3 Subject Key Identifier" -# define NID_subject_key_identifier 82 -# define OBJ_subject_key_identifier OBJ_id_ce,14L - -# define SN_key_usage "keyUsage" -# define LN_key_usage "X509v3 Key Usage" -# define NID_key_usage 83 -# define OBJ_key_usage OBJ_id_ce,15L - -# define SN_private_key_usage_period "privateKeyUsagePeriod" -# define LN_private_key_usage_period "X509v3 Private Key Usage Period" -# define NID_private_key_usage_period 84 -# define OBJ_private_key_usage_period OBJ_id_ce,16L - -# define SN_subject_alt_name "subjectAltName" -# define LN_subject_alt_name "X509v3 Subject Alternative Name" -# define NID_subject_alt_name 85 -# define OBJ_subject_alt_name OBJ_id_ce,17L - -# define SN_issuer_alt_name "issuerAltName" -# define LN_issuer_alt_name "X509v3 Issuer Alternative Name" -# define NID_issuer_alt_name 86 -# define OBJ_issuer_alt_name OBJ_id_ce,18L - -# define SN_basic_constraints "basicConstraints" -# define LN_basic_constraints "X509v3 Basic Constraints" -# define NID_basic_constraints 87 -# define OBJ_basic_constraints OBJ_id_ce,19L - -# define SN_crl_number "crlNumber" -# define LN_crl_number "X509v3 CRL Number" -# define NID_crl_number 88 -# define OBJ_crl_number OBJ_id_ce,20L - -# define SN_certificate_policies "certificatePolicies" -# define LN_certificate_policies "X509v3 Certificate Policies" -# define NID_certificate_policies 89 -# define OBJ_certificate_policies OBJ_id_ce,32L - -# define SN_authority_key_identifier "authorityKeyIdentifier" -# define LN_authority_key_identifier "X509v3 Authority Key Identifier" -# define NID_authority_key_identifier 90 -# define OBJ_authority_key_identifier OBJ_id_ce,35L - -# define SN_bf_cbc "BF-CBC" -# define LN_bf_cbc "bf-cbc" -# define NID_bf_cbc 91 -# define OBJ_bf_cbc 1L,3L,6L,1L,4L,1L,3029L,1L,2L - -# define SN_bf_ecb "BF-ECB" -# define LN_bf_ecb "bf-ecb" -# define NID_bf_ecb 92 - -# define SN_bf_cfb64 "BF-CFB" -# define LN_bf_cfb64 "bf-cfb" -# define NID_bf_cfb64 93 - -# define SN_bf_ofb64 "BF-OFB" -# define LN_bf_ofb64 "bf-ofb" -# define NID_bf_ofb64 94 - -# define SN_mdc2 "MDC2" -# define LN_mdc2 "mdc2" -# define NID_mdc2 95 -# define OBJ_mdc2 2L,5L,8L,3L,101L -/* An alternative? 1L,3L,14L,3L,2L,19L */ - -# define SN_mdc2WithRSA "RSA-MDC2" -# define LN_mdc2WithRSA "mdc2withRSA" -# define NID_mdc2WithRSA 96 -# define OBJ_mdc2WithRSA 2L,5L,8L,3L,100L - -# define SN_rc4_40 "RC4-40" -# define LN_rc4_40 "rc4-40" -# define NID_rc4_40 97 - -# define SN_rc2_40_cbc "RC2-40-CBC" -# define LN_rc2_40_cbc "rc2-40-cbc" -# define NID_rc2_40_cbc 98 - -# define SN_givenName "G" -# define LN_givenName "givenName" -# define NID_givenName 99 -# define OBJ_givenName OBJ_X509,42L - -# define SN_surname "S" -# define LN_surname "surname" -# define NID_surname 100 -# define OBJ_surname OBJ_X509,4L - -# define SN_initials "I" -# define LN_initials "initials" -# define NID_initials 101 -# define OBJ_initials OBJ_X509,43L - -# define SN_uniqueIdentifier "UID" -# define LN_uniqueIdentifier "uniqueIdentifier" -# define NID_uniqueIdentifier 102 -# define OBJ_uniqueIdentifier OBJ_X509,45L - -# define SN_crl_distribution_points "crlDistributionPoints" -# define LN_crl_distribution_points "X509v3 CRL Distribution Points" -# define NID_crl_distribution_points 103 -# define OBJ_crl_distribution_points OBJ_id_ce,31L - -# define SN_md5WithRSA "RSA-NP-MD5" -# define LN_md5WithRSA "md5WithRSA" -# define NID_md5WithRSA 104 -# define OBJ_md5WithRSA OBJ_algorithm,3L - -# define SN_serialNumber "SN" -# define LN_serialNumber "serialNumber" -# define NID_serialNumber 105 -# define OBJ_serialNumber OBJ_X509,5L - -# define SN_title "T" -# define LN_title "title" -# define NID_title 106 -# define OBJ_title OBJ_X509,12L - -# define SN_description "D" -# define LN_description "description" -# define NID_description 107 -# define OBJ_description OBJ_X509,13L - -/* CAST5 is CAST-128, I'm just sticking with the documentation */ -# define SN_cast5_cbc "CAST5-CBC" -# define LN_cast5_cbc "cast5-cbc" -# define NID_cast5_cbc 108 -# define OBJ_cast5_cbc 1L,2L,840L,113533L,7L,66L,10L - -# define SN_cast5_ecb "CAST5-ECB" -# define LN_cast5_ecb "cast5-ecb" -# define NID_cast5_ecb 109 - -# define SN_cast5_cfb64 "CAST5-CFB" -# define LN_cast5_cfb64 "cast5-cfb" -# define NID_cast5_cfb64 110 - -# define SN_cast5_ofb64 "CAST5-OFB" -# define LN_cast5_ofb64 "cast5-ofb" -# define NID_cast5_ofb64 111 - -# define LN_pbeWithMD5AndCast5_CBC "pbeWithMD5AndCast5CBC" -# define NID_pbeWithMD5AndCast5_CBC 112 -# define OBJ_pbeWithMD5AndCast5_CBC 1L,2L,840L,113533L,7L,66L,12L - -/*- - * This is one sun will soon be using :-( - * id-dsa-with-sha1 ID ::= { - * iso(1) member-body(2) us(840) x9-57 (10040) x9cm(4) 3 } - */ -# define SN_dsaWithSHA1 "DSA-SHA1" -# define LN_dsaWithSHA1 "dsaWithSHA1" -# define NID_dsaWithSHA1 113 -# define OBJ_dsaWithSHA1 1L,2L,840L,10040L,4L,3L - -# define NID_md5_sha1 114 -# define SN_md5_sha1 "MD5-SHA1" -# define LN_md5_sha1 "md5-sha1" - -# define SN_sha1WithRSA "RSA-SHA1-2" -# define LN_sha1WithRSA "sha1WithRSA" -# define NID_sha1WithRSA 115 -# define OBJ_sha1WithRSA OBJ_algorithm,29L - -# define SN_dsa "DSA" -# define LN_dsa "dsaEncryption" -# define NID_dsa 116 -# define OBJ_dsa 1L,2L,840L,10040L,4L,1L - -# define SN_ripemd160 "RIPEMD160" -# define LN_ripemd160 "ripemd160" -# define NID_ripemd160 117 -# define OBJ_ripemd160 1L,3L,36L,3L,2L,1L - -/* - * The name should actually be rsaSignatureWithripemd160, but I'm going to - * continue using the convention I'm using with the other ciphers - */ -# define SN_ripemd160WithRSA "RSA-RIPEMD160" -# define LN_ripemd160WithRSA "ripemd160WithRSA" -# define NID_ripemd160WithRSA 119 -# define OBJ_ripemd160WithRSA 1L,3L,36L,3L,3L,1L,2L - -/*- - * Taken from rfc2040 - * RC5_CBC_Parameters ::= SEQUENCE { - * version INTEGER (v1_0(16)), - * rounds INTEGER (8..127), - * blockSizeInBits INTEGER (64, 128), - * iv OCTET STRING OPTIONAL - * } - */ -# define SN_rc5_cbc "RC5-CBC" -# define LN_rc5_cbc "rc5-cbc" -# define NID_rc5_cbc 120 -# define OBJ_rc5_cbc OBJ_rsadsi,3L,8L - -# define SN_rc5_ecb "RC5-ECB" -# define LN_rc5_ecb "rc5-ecb" -# define NID_rc5_ecb 121 - -# define SN_rc5_cfb64 "RC5-CFB" -# define LN_rc5_cfb64 "rc5-cfb" -# define NID_rc5_cfb64 122 - -# define SN_rc5_ofb64 "RC5-OFB" -# define LN_rc5_ofb64 "rc5-ofb" -# define NID_rc5_ofb64 123 - -# define SN_rle_compression "RLE" -# define LN_rle_compression "run length compression" -# define NID_rle_compression 124 -# define OBJ_rle_compression 1L,1L,1L,1L,666L,1L - -# define SN_zlib_compression "ZLIB" -# define LN_zlib_compression "zlib compression" -# define NID_zlib_compression 125 -# define OBJ_zlib_compression 1L,1L,1L,1L,666L,2L - -# define SN_ext_key_usage "extendedKeyUsage" -# define LN_ext_key_usage "X509v3 Extended Key Usage" -# define NID_ext_key_usage 126 -# define OBJ_ext_key_usage OBJ_id_ce,37 - -# define SN_id_pkix "PKIX" -# define NID_id_pkix 127 -# define OBJ_id_pkix 1L,3L,6L,1L,5L,5L,7L - -# define SN_id_kp "id-kp" -# define NID_id_kp 128 -# define OBJ_id_kp OBJ_id_pkix,3L - -/* PKIX extended key usage OIDs */ - -# define SN_server_auth "serverAuth" -# define LN_server_auth "TLS Web Server Authentication" -# define NID_server_auth 129 -# define OBJ_server_auth OBJ_id_kp,1L - -# define SN_client_auth "clientAuth" -# define LN_client_auth "TLS Web Client Authentication" -# define NID_client_auth 130 -# define OBJ_client_auth OBJ_id_kp,2L - -# define SN_code_sign "codeSigning" -# define LN_code_sign "Code Signing" -# define NID_code_sign 131 -# define OBJ_code_sign OBJ_id_kp,3L - -# define SN_email_protect "emailProtection" -# define LN_email_protect "E-mail Protection" -# define NID_email_protect 132 -# define OBJ_email_protect OBJ_id_kp,4L - -# define SN_time_stamp "timeStamping" -# define LN_time_stamp "Time Stamping" -# define NID_time_stamp 133 -# define OBJ_time_stamp OBJ_id_kp,8L - -/* Additional extended key usage OIDs: Microsoft */ - -# define SN_ms_code_ind "msCodeInd" -# define LN_ms_code_ind "Microsoft Individual Code Signing" -# define NID_ms_code_ind 134 -# define OBJ_ms_code_ind 1L,3L,6L,1L,4L,1L,311L,2L,1L,21L - -# define SN_ms_code_com "msCodeCom" -# define LN_ms_code_com "Microsoft Commercial Code Signing" -# define NID_ms_code_com 135 -# define OBJ_ms_code_com 1L,3L,6L,1L,4L,1L,311L,2L,1L,22L - -# define SN_ms_ctl_sign "msCTLSign" -# define LN_ms_ctl_sign "Microsoft Trust List Signing" -# define NID_ms_ctl_sign 136 -# define OBJ_ms_ctl_sign 1L,3L,6L,1L,4L,1L,311L,10L,3L,1L - -# define SN_ms_sgc "msSGC" -# define LN_ms_sgc "Microsoft Server Gated Crypto" -# define NID_ms_sgc 137 -# define OBJ_ms_sgc 1L,3L,6L,1L,4L,1L,311L,10L,3L,3L - -# define SN_ms_efs "msEFS" -# define LN_ms_efs "Microsoft Encrypted File System" -# define NID_ms_efs 138 -# define OBJ_ms_efs 1L,3L,6L,1L,4L,1L,311L,10L,3L,4L - -/* Additional usage: Netscape */ - -# define SN_ns_sgc "nsSGC" -# define LN_ns_sgc "Netscape Server Gated Crypto" -# define NID_ns_sgc 139 -# define OBJ_ns_sgc OBJ_netscape,4L,1L - -# define SN_delta_crl "deltaCRL" -# define LN_delta_crl "X509v3 Delta CRL Indicator" -# define NID_delta_crl 140 -# define OBJ_delta_crl OBJ_id_ce,27L - -# define SN_crl_reason "CRLReason" -# define LN_crl_reason "CRL Reason Code" -# define NID_crl_reason 141 -# define OBJ_crl_reason OBJ_id_ce,21L - -# define SN_invalidity_date "invalidityDate" -# define LN_invalidity_date "Invalidity Date" -# define NID_invalidity_date 142 -# define OBJ_invalidity_date OBJ_id_ce,24L - -# define SN_sxnet "SXNetID" -# define LN_sxnet "Strong Extranet ID" -# define NID_sxnet 143 -# define OBJ_sxnet 1L,3L,101L,1L,4L,1L - -/* PKCS12 and related OBJECT IDENTIFIERS */ - -# define OBJ_pkcs12 OBJ_pkcs,12L -# define OBJ_pkcs12_pbeids OBJ_pkcs12, 1 - -# define SN_pbe_WithSHA1And128BitRC4 "PBE-SHA1-RC4-128" -# define LN_pbe_WithSHA1And128BitRC4 "pbeWithSHA1And128BitRC4" -# define NID_pbe_WithSHA1And128BitRC4 144 -# define OBJ_pbe_WithSHA1And128BitRC4 OBJ_pkcs12_pbeids, 1L - -# define SN_pbe_WithSHA1And40BitRC4 "PBE-SHA1-RC4-40" -# define LN_pbe_WithSHA1And40BitRC4 "pbeWithSHA1And40BitRC4" -# define NID_pbe_WithSHA1And40BitRC4 145 -# define OBJ_pbe_WithSHA1And40BitRC4 OBJ_pkcs12_pbeids, 2L - -# define SN_pbe_WithSHA1And3_Key_TripleDES_CBC "PBE-SHA1-3DES" -# define LN_pbe_WithSHA1And3_Key_TripleDES_CBC "pbeWithSHA1And3-KeyTripleDES-CBC" -# define NID_pbe_WithSHA1And3_Key_TripleDES_CBC 146 -# define OBJ_pbe_WithSHA1And3_Key_TripleDES_CBC OBJ_pkcs12_pbeids, 3L - -# define SN_pbe_WithSHA1And2_Key_TripleDES_CBC "PBE-SHA1-2DES" -# define LN_pbe_WithSHA1And2_Key_TripleDES_CBC "pbeWithSHA1And2-KeyTripleDES-CBC" -# define NID_pbe_WithSHA1And2_Key_TripleDES_CBC 147 -# define OBJ_pbe_WithSHA1And2_Key_TripleDES_CBC OBJ_pkcs12_pbeids, 4L - -# define SN_pbe_WithSHA1And128BitRC2_CBC "PBE-SHA1-RC2-128" -# define LN_pbe_WithSHA1And128BitRC2_CBC "pbeWithSHA1And128BitRC2-CBC" -# define NID_pbe_WithSHA1And128BitRC2_CBC 148 -# define OBJ_pbe_WithSHA1And128BitRC2_CBC OBJ_pkcs12_pbeids, 5L - -# define SN_pbe_WithSHA1And40BitRC2_CBC "PBE-SHA1-RC2-40" -# define LN_pbe_WithSHA1And40BitRC2_CBC "pbeWithSHA1And40BitRC2-CBC" -# define NID_pbe_WithSHA1And40BitRC2_CBC 149 -# define OBJ_pbe_WithSHA1And40BitRC2_CBC OBJ_pkcs12_pbeids, 6L - -# define OBJ_pkcs12_Version1 OBJ_pkcs12, 10L - -# define OBJ_pkcs12_BagIds OBJ_pkcs12_Version1, 1L - -# define LN_keyBag "keyBag" -# define NID_keyBag 150 -# define OBJ_keyBag OBJ_pkcs12_BagIds, 1L - -# define LN_pkcs8ShroudedKeyBag "pkcs8ShroudedKeyBag" -# define NID_pkcs8ShroudedKeyBag 151 -# define OBJ_pkcs8ShroudedKeyBag OBJ_pkcs12_BagIds, 2L - -# define LN_certBag "certBag" -# define NID_certBag 152 -# define OBJ_certBag OBJ_pkcs12_BagIds, 3L - -# define LN_crlBag "crlBag" -# define NID_crlBag 153 -# define OBJ_crlBag OBJ_pkcs12_BagIds, 4L - -# define LN_secretBag "secretBag" -# define NID_secretBag 154 -# define OBJ_secretBag OBJ_pkcs12_BagIds, 5L - -# define LN_safeContentsBag "safeContentsBag" -# define NID_safeContentsBag 155 -# define OBJ_safeContentsBag OBJ_pkcs12_BagIds, 6L - -# define LN_friendlyName "friendlyName" -# define NID_friendlyName 156 -# define OBJ_friendlyName OBJ_pkcs9, 20L - -# define LN_localKeyID "localKeyID" -# define NID_localKeyID 157 -# define OBJ_localKeyID OBJ_pkcs9, 21L - -# define OBJ_certTypes OBJ_pkcs9, 22L - -# define LN_x509Certificate "x509Certificate" -# define NID_x509Certificate 158 -# define OBJ_x509Certificate OBJ_certTypes, 1L - -# define LN_sdsiCertificate "sdsiCertificate" -# define NID_sdsiCertificate 159 -# define OBJ_sdsiCertificate OBJ_certTypes, 2L - -# define OBJ_crlTypes OBJ_pkcs9, 23L - -# define LN_x509Crl "x509Crl" -# define NID_x509Crl 160 -# define OBJ_x509Crl OBJ_crlTypes, 1L - -/* PKCS#5 v2 OIDs */ - -# define LN_pbes2 "PBES2" -# define NID_pbes2 161 -# define OBJ_pbes2 OBJ_pkcs,5L,13L - -# define LN_pbmac1 "PBMAC1" -# define NID_pbmac1 162 -# define OBJ_pbmac1 OBJ_pkcs,5L,14L - -# define LN_hmacWithSHA1 "hmacWithSHA1" -# define NID_hmacWithSHA1 163 -# define OBJ_hmacWithSHA1 OBJ_rsadsi,2L,7L - -/* Policy Qualifier Ids */ - -# define LN_id_qt_cps "Policy Qualifier CPS" -# define SN_id_qt_cps "id-qt-cps" -# define NID_id_qt_cps 164 -# define OBJ_id_qt_cps OBJ_id_pkix,2L,1L - -# define LN_id_qt_unotice "Policy Qualifier User Notice" -# define SN_id_qt_unotice "id-qt-unotice" -# define NID_id_qt_unotice 165 -# define OBJ_id_qt_unotice OBJ_id_pkix,2L,2L - -# define SN_rc2_64_cbc "RC2-64-CBC" -# define LN_rc2_64_cbc "rc2-64-cbc" -# define NID_rc2_64_cbc 166 - -# define SN_SMIMECapabilities "SMIME-CAPS" -# define LN_SMIMECapabilities "S/MIME Capabilities" -# define NID_SMIMECapabilities 167 -# define OBJ_SMIMECapabilities OBJ_pkcs9,15L - -# define SN_pbeWithMD2AndRC2_CBC "PBE-MD2-RC2-64" -# define LN_pbeWithMD2AndRC2_CBC "pbeWithMD2AndRC2-CBC" -# define NID_pbeWithMD2AndRC2_CBC 168 -# define OBJ_pbeWithMD2AndRC2_CBC OBJ_pkcs,5L,4L - -# define SN_pbeWithMD5AndRC2_CBC "PBE-MD5-RC2-64" -# define LN_pbeWithMD5AndRC2_CBC "pbeWithMD5AndRC2-CBC" -# define NID_pbeWithMD5AndRC2_CBC 169 -# define OBJ_pbeWithMD5AndRC2_CBC OBJ_pkcs,5L,6L - -# define SN_pbeWithSHA1AndDES_CBC "PBE-SHA1-DES" -# define LN_pbeWithSHA1AndDES_CBC "pbeWithSHA1AndDES-CBC" -# define NID_pbeWithSHA1AndDES_CBC 170 -# define OBJ_pbeWithSHA1AndDES_CBC OBJ_pkcs,5L,10L - -/* Extension request OIDs */ - -# define LN_ms_ext_req "Microsoft Extension Request" -# define SN_ms_ext_req "msExtReq" -# define NID_ms_ext_req 171 -# define OBJ_ms_ext_req 1L,3L,6L,1L,4L,1L,311L,2L,1L,14L - -# define LN_ext_req "Extension Request" -# define SN_ext_req "extReq" -# define NID_ext_req 172 -# define OBJ_ext_req OBJ_pkcs9,14L - -# define SN_name "name" -# define LN_name "name" -# define NID_name 173 -# define OBJ_name OBJ_X509,41L - -# define SN_dnQualifier "dnQualifier" -# define LN_dnQualifier "dnQualifier" -# define NID_dnQualifier 174 -# define OBJ_dnQualifier OBJ_X509,46L - -# define SN_id_pe "id-pe" -# define NID_id_pe 175 -# define OBJ_id_pe OBJ_id_pkix,1L - -# define SN_id_ad "id-ad" -# define NID_id_ad 176 -# define OBJ_id_ad OBJ_id_pkix,48L - -# define SN_info_access "authorityInfoAccess" -# define LN_info_access "Authority Information Access" -# define NID_info_access 177 -# define OBJ_info_access OBJ_id_pe,1L - -# define SN_ad_OCSP "OCSP" -# define LN_ad_OCSP "OCSP" -# define NID_ad_OCSP 178 -# define OBJ_ad_OCSP OBJ_id_ad,1L - -# define SN_ad_ca_issuers "caIssuers" -# define LN_ad_ca_issuers "CA Issuers" -# define NID_ad_ca_issuers 179 -# define OBJ_ad_ca_issuers OBJ_id_ad,2L - -# define SN_OCSP_sign "OCSPSigning" -# define LN_OCSP_sign "OCSP Signing" -# define NID_OCSP_sign 180 -# define OBJ_OCSP_sign OBJ_id_kp,9L -# endif /* USE_OBJ_MAC */ - -# include -# include - -# define OBJ_NAME_TYPE_UNDEF 0x00 -# define OBJ_NAME_TYPE_MD_METH 0x01 -# define OBJ_NAME_TYPE_CIPHER_METH 0x02 -# define OBJ_NAME_TYPE_PKEY_METH 0x03 -# define OBJ_NAME_TYPE_COMP_METH 0x04 -# define OBJ_NAME_TYPE_NUM 0x05 - -# define OBJ_NAME_ALIAS 0x8000 - -# define OBJ_BSEARCH_VALUE_ON_NOMATCH 0x01 -# define OBJ_BSEARCH_FIRST_VALUE_ON_MATCH 0x02 - - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct obj_name_st { - int type; - int alias; - const char *name; - const char *data; -} OBJ_NAME; - -# define OBJ_create_and_add_object(a,b,c) OBJ_create(a,b,c) - -int OBJ_NAME_init(void); -int OBJ_NAME_new_index(unsigned long (*hash_func) (const char *), - int (*cmp_func) (const char *, const char *), - void (*free_func) (const char *, int, const char *)); -const char *OBJ_NAME_get(const char *name, int type); -int OBJ_NAME_add(const char *name, int type, const char *data); -int OBJ_NAME_remove(const char *name, int type); -void OBJ_NAME_cleanup(int type); /* -1 for everything */ -void OBJ_NAME_do_all(int type, void (*fn) (const OBJ_NAME *, void *arg), - void *arg); -void OBJ_NAME_do_all_sorted(int type, - void (*fn) (const OBJ_NAME *, void *arg), - void *arg); - -ASN1_OBJECT *OBJ_dup(const ASN1_OBJECT *o); -ASN1_OBJECT *OBJ_nid2obj(int n); -const char *OBJ_nid2ln(int n); -const char *OBJ_nid2sn(int n); -int OBJ_obj2nid(const ASN1_OBJECT *o); -ASN1_OBJECT *OBJ_txt2obj(const char *s, int no_name); -int OBJ_obj2txt(char *buf, int buf_len, const ASN1_OBJECT *a, int no_name); -int OBJ_txt2nid(const char *s); -int OBJ_ln2nid(const char *s); -int OBJ_sn2nid(const char *s); -int OBJ_cmp(const ASN1_OBJECT *a, const ASN1_OBJECT *b); -const void *OBJ_bsearch_(const void *key, const void *base, int num, int size, - int (*cmp) (const void *, const void *)); -const void *OBJ_bsearch_ex_(const void *key, const void *base, int num, - int size, - int (*cmp) (const void *, const void *), - int flags); - -# define _DECLARE_OBJ_BSEARCH_CMP_FN(scope, type1, type2, nm) \ - static int nm##_cmp_BSEARCH_CMP_FN(const void *, const void *); \ - static int nm##_cmp(type1 const *, type2 const *); \ - scope type2 * OBJ_bsearch_##nm(type1 *key, type2 const *base, int num) - -# define DECLARE_OBJ_BSEARCH_CMP_FN(type1, type2, cmp) \ - _DECLARE_OBJ_BSEARCH_CMP_FN(static, type1, type2, cmp) -# define DECLARE_OBJ_BSEARCH_GLOBAL_CMP_FN(type1, type2, nm) \ - type2 * OBJ_bsearch_##nm(type1 *key, type2 const *base, int num) - -/*- - * Unsolved problem: if a type is actually a pointer type, like - * nid_triple is, then its impossible to get a const where you need - * it. Consider: - * - * typedef int nid_triple[3]; - * const void *a_; - * const nid_triple const *a = a_; - * - * The assignement discards a const because what you really want is: - * - * const int const * const *a = a_; - * - * But if you do that, you lose the fact that a is an array of 3 ints, - * which breaks comparison functions. - * - * Thus we end up having to cast, sadly, or unpack the - * declarations. Or, as I finally did in this case, delcare nid_triple - * to be a struct, which it should have been in the first place. - * - * Ben, August 2008. - * - * Also, strictly speaking not all types need be const, but handling - * the non-constness means a lot of complication, and in practice - * comparison routines do always not touch their arguments. - */ - -# define IMPLEMENT_OBJ_BSEARCH_CMP_FN(type1, type2, nm) \ - static int nm##_cmp_BSEARCH_CMP_FN(const void *a_, const void *b_) \ - { \ - type1 const *a = a_; \ - type2 const *b = b_; \ - return nm##_cmp(a,b); \ - } \ - static type2 *OBJ_bsearch_##nm(type1 *key, type2 const *base, int num) \ - { \ - return (type2 *)OBJ_bsearch_(key, base, num, sizeof(type2), \ - nm##_cmp_BSEARCH_CMP_FN); \ - } \ - extern void dummy_prototype(void) - -# define IMPLEMENT_OBJ_BSEARCH_GLOBAL_CMP_FN(type1, type2, nm) \ - static int nm##_cmp_BSEARCH_CMP_FN(const void *a_, const void *b_) \ - { \ - type1 const *a = a_; \ - type2 const *b = b_; \ - return nm##_cmp(a,b); \ - } \ - type2 *OBJ_bsearch_##nm(type1 *key, type2 const *base, int num) \ - { \ - return (type2 *)OBJ_bsearch_(key, base, num, sizeof(type2), \ - nm##_cmp_BSEARCH_CMP_FN); \ - } \ - extern void dummy_prototype(void) - -# define OBJ_bsearch(type1,key,type2,base,num,cmp) \ - ((type2 *)OBJ_bsearch_(CHECKED_PTR_OF(type1,key),CHECKED_PTR_OF(type2,base), \ - num,sizeof(type2), \ - ((void)CHECKED_PTR_OF(type1,cmp##_type_1), \ - (void)CHECKED_PTR_OF(type2,cmp##_type_2), \ - cmp##_BSEARCH_CMP_FN))) - -# define OBJ_bsearch_ex(type1,key,type2,base,num,cmp,flags) \ - ((type2 *)OBJ_bsearch_ex_(CHECKED_PTR_OF(type1,key),CHECKED_PTR_OF(type2,base), \ - num,sizeof(type2), \ - ((void)CHECKED_PTR_OF(type1,cmp##_type_1), \ - (void)type_2=CHECKED_PTR_OF(type2,cmp##_type_2), \ - cmp##_BSEARCH_CMP_FN)),flags) - -int OBJ_new_nid(int num); -int OBJ_add_object(const ASN1_OBJECT *obj); -int OBJ_create(const char *oid, const char *sn, const char *ln); -void OBJ_cleanup(void); -int OBJ_create_objects(BIO *in); - -int OBJ_find_sigid_algs(int signid, int *pdig_nid, int *ppkey_nid); -int OBJ_find_sigid_by_algs(int *psignid, int dig_nid, int pkey_nid); -int OBJ_add_sigid(int signid, int dig_id, int pkey_id); -void OBJ_sigid_free(void); - -extern int obj_cleanup_defer; -void check_defer(int nid); - -/* BEGIN ERROR CODES */ -/* - * The following lines are auto generated by the script mkerr.pl. Any changes - * made after this point may be overwritten when the script is next run. - */ -void ERR_load_OBJ_strings(void); - -/* Error codes for the OBJ functions. */ - -/* Function codes. */ -# define OBJ_F_OBJ_ADD_OBJECT 105 -# define OBJ_F_OBJ_CREATE 100 -# define OBJ_F_OBJ_DUP 101 -# define OBJ_F_OBJ_NAME_NEW_INDEX 106 -# define OBJ_F_OBJ_NID2LN 102 -# define OBJ_F_OBJ_NID2OBJ 103 -# define OBJ_F_OBJ_NID2SN 104 - -/* Reason codes. */ -# define OBJ_R_MALLOC_FAILURE 100 -# define OBJ_R_UNKNOWN_NID 101 - -#ifdef __cplusplus -} -#endif -#endif diff --git a/ext/openssl-win64/inc32/openssl/opensslconf.h b/ext/openssl-win64/inc32/openssl/opensslconf.h deleted file mode 100644 index 910baef8..00000000 --- a/ext/openssl-win64/inc32/openssl/opensslconf.h +++ /dev/null @@ -1,259 +0,0 @@ -/* opensslconf.h */ -/* WARNING: Generated automatically from opensslconf.h.in by Configure. */ - -#ifdef __cplusplus -extern "C" { -#endif -/* OpenSSL was configured with the following options: */ -#ifndef OPENSSL_SYSNAME_WIN64A -# define OPENSSL_SYSNAME_WIN64A -#endif -#ifndef OPENSSL_DOING_MAKEDEPEND - - -#ifndef OPENSSL_NO_EC_NISTP_64_GCC_128 -# define OPENSSL_NO_EC_NISTP_64_GCC_128 -#endif -#ifndef OPENSSL_NO_GMP -# define OPENSSL_NO_GMP -#endif -#ifndef OPENSSL_NO_JPAKE -# define OPENSSL_NO_JPAKE -#endif -#ifndef OPENSSL_NO_KRB5 -# define OPENSSL_NO_KRB5 -#endif -#ifndef OPENSSL_NO_LIBUNBOUND -# define OPENSSL_NO_LIBUNBOUND -#endif -#ifndef OPENSSL_NO_MD2 -# define OPENSSL_NO_MD2 -#endif -#ifndef OPENSSL_NO_RC5 -# define OPENSSL_NO_RC5 -#endif -#ifndef OPENSSL_NO_RFC3779 -# define OPENSSL_NO_RFC3779 -#endif -#ifndef OPENSSL_NO_SCTP -# define OPENSSL_NO_SCTP -#endif -#ifndef OPENSSL_NO_SSL_TRACE -# define OPENSSL_NO_SSL_TRACE -#endif -#ifndef OPENSSL_NO_STORE -# define OPENSSL_NO_STORE -#endif -#ifndef OPENSSL_NO_UNIT_TEST -# define OPENSSL_NO_UNIT_TEST -#endif - -#endif /* OPENSSL_DOING_MAKEDEPEND */ - -#ifndef OPENSSL_THREADS -# define OPENSSL_THREADS -#endif - -/* The OPENSSL_NO_* macros are also defined as NO_* if the application - asks for it. This is a transient feature that is provided for those - who haven't had the time to do the appropriate changes in their - applications. */ -#ifdef OPENSSL_ALGORITHM_DEFINES -# if defined(OPENSSL_NO_EC_NISTP_64_GCC_128) && !defined(NO_EC_NISTP_64_GCC_128) -# define NO_EC_NISTP_64_GCC_128 -# endif -# if defined(OPENSSL_NO_GMP) && !defined(NO_GMP) -# define NO_GMP -# endif -# if defined(OPENSSL_NO_JPAKE) && !defined(NO_JPAKE) -# define NO_JPAKE -# endif -# if defined(OPENSSL_NO_KRB5) && !defined(NO_KRB5) -# define NO_KRB5 -# endif -# if defined(OPENSSL_NO_LIBUNBOUND) && !defined(NO_LIBUNBOUND) -# define NO_LIBUNBOUND -# endif -# if defined(OPENSSL_NO_MD2) && !defined(NO_MD2) -# define NO_MD2 -# endif -# if defined(OPENSSL_NO_RC5) && !defined(NO_RC5) -# define NO_RC5 -# endif -# if defined(OPENSSL_NO_RFC3779) && !defined(NO_RFC3779) -# define NO_RFC3779 -# endif -# if defined(OPENSSL_NO_SCTP) && !defined(NO_SCTP) -# define NO_SCTP -# endif -# if defined(OPENSSL_NO_SSL_TRACE) && !defined(NO_SSL_TRACE) -# define NO_SSL_TRACE -# endif -# if defined(OPENSSL_NO_STORE) && !defined(NO_STORE) -# define NO_STORE -# endif -# if defined(OPENSSL_NO_UNIT_TEST) && !defined(NO_UNIT_TEST) -# define NO_UNIT_TEST -# endif -#endif - -#define OPENSSL_CPUID_OBJ - -/* crypto/opensslconf.h.in */ - -/* Generate 80386 code? */ -#undef I386_ONLY - -#if !(defined(VMS) || defined(__VMS)) /* VMS uses logical names instead */ -#if defined(HEADER_CRYPTLIB_H) && !defined(OPENSSLDIR) -#define ENGINESDIR "/usr/local/ssl/lib/engines" -#define OPENSSLDIR "/usr/local/ssl" -#endif -#endif - -#undef OPENSSL_UNISTD -#define OPENSSL_UNISTD - -#undef OPENSSL_EXPORT_VAR_AS_FUNCTION -#define OPENSSL_EXPORT_VAR_AS_FUNCTION - -#if defined(HEADER_IDEA_H) && !defined(IDEA_INT) -#define IDEA_INT unsigned int -#endif - -#if defined(HEADER_MD2_H) && !defined(MD2_INT) -#define MD2_INT unsigned int -#endif - -#if defined(HEADER_RC2_H) && !defined(RC2_INT) -/* I need to put in a mod for the alpha - eay */ -#define RC2_INT unsigned int -#endif - -#if defined(HEADER_RC4_H) -#if !defined(RC4_INT) -/* using int types make the structure larger but make the code faster - * on most boxes I have tested - up to %20 faster. */ -/* - * I don't know what does "most" mean, but declaring "int" is a must on: - * - Intel P6 because partial register stalls are very expensive; - * - elder Alpha because it lacks byte load/store instructions; - */ -#define RC4_INT unsigned int -#endif -#if !defined(RC4_CHUNK) -/* - * This enables code handling data aligned at natural CPU word - * boundary. See crypto/rc4/rc4_enc.c for further details. - */ -#define RC4_CHUNK unsigned long long -#endif -#endif - -#if (defined(HEADER_NEW_DES_H) || defined(HEADER_DES_H)) && !defined(DES_LONG) -/* If this is set to 'unsigned int' on a DEC Alpha, this gives about a - * %20 speed up (longs are 8 bytes, int's are 4). */ -#ifndef DES_LONG -#define DES_LONG unsigned int -#endif -#endif - -#if defined(HEADER_BN_H) && !defined(CONFIG_HEADER_BN_H) -#define CONFIG_HEADER_BN_H -#undef BN_LLONG - -/* Should we define BN_DIV2W here? */ - -/* Only one for the following should be defined */ -#undef SIXTY_FOUR_BIT_LONG -#define SIXTY_FOUR_BIT -#undef THIRTY_TWO_BIT -#endif - -#if defined(HEADER_RC4_LOCL_H) && !defined(CONFIG_HEADER_RC4_LOCL_H) -#define CONFIG_HEADER_RC4_LOCL_H -/* if this is defined data[i] is used instead of *data, this is a %20 - * speedup on x86 */ -#undef RC4_INDEX -#endif - -#if defined(HEADER_BF_LOCL_H) && !defined(CONFIG_HEADER_BF_LOCL_H) -#define CONFIG_HEADER_BF_LOCL_H -#undef BF_PTR -#endif /* HEADER_BF_LOCL_H */ - -#if defined(HEADER_DES_LOCL_H) && !defined(CONFIG_HEADER_DES_LOCL_H) -#define CONFIG_HEADER_DES_LOCL_H -#ifndef DES_DEFAULT_OPTIONS -/* the following is tweaked from a config script, that is why it is a - * protected undef/define */ -#ifndef DES_PTR -#undef DES_PTR -#endif - -/* This helps C compiler generate the correct code for multiple functional - * units. It reduces register dependancies at the expense of 2 more - * registers */ -#ifndef DES_RISC1 -#undef DES_RISC1 -#endif - -#ifndef DES_RISC2 -#undef DES_RISC2 -#endif - -#if defined(DES_RISC1) && defined(DES_RISC2) -YOU SHOULD NOT HAVE BOTH DES_RISC1 AND DES_RISC2 DEFINED!!!!! -#endif - -/* Unroll the inner loop, this sometimes helps, sometimes hinders. - * Very mucy CPU dependant */ -#ifndef DES_UNROLL -#undef DES_UNROLL -#endif - -/* These default values were supplied by - * Peter Gutman - * They are only used if nothing else has been defined */ -#if !defined(DES_PTR) && !defined(DES_RISC1) && !defined(DES_RISC2) && !defined(DES_UNROLL) -/* Special defines which change the way the code is built depending on the - CPU and OS. For SGI machines you can use _MIPS_SZLONG (32 or 64) to find - even newer MIPS CPU's, but at the moment one size fits all for - optimization options. Older Sparc's work better with only UNROLL, but - there's no way to tell at compile time what it is you're running on */ - -#if defined( sun ) /* Newer Sparc's */ -# define DES_PTR -# define DES_RISC1 -# define DES_UNROLL -#elif defined( __ultrix ) /* Older MIPS */ -# define DES_PTR -# define DES_RISC2 -# define DES_UNROLL -#elif defined( __osf1__ ) /* Alpha */ -# define DES_PTR -# define DES_RISC2 -#elif defined ( _AIX ) /* RS6000 */ - /* Unknown */ -#elif defined( __hpux ) /* HP-PA */ - /* Unknown */ -#elif defined( __aux ) /* 68K */ - /* Unknown */ -#elif defined( __dgux ) /* 88K (but P6 in latest boxes) */ -# define DES_UNROLL -#elif defined( __sgi ) /* Newer MIPS */ -# define DES_PTR -# define DES_RISC2 -# define DES_UNROLL -#elif defined(i386) || defined(__i386__) /* x86 boxes, should be gcc */ -# define DES_PTR -# define DES_RISC1 -# define DES_UNROLL -#endif /* Systems-specific speed defines */ -#endif - -#endif /* DES_DEFAULT_OPTIONS */ -#endif /* HEADER_DES_LOCL_H */ -#ifdef __cplusplus -} -#endif diff --git a/ext/openssl-win64/inc32/openssl/opensslv.h b/ext/openssl-win64/inc32/openssl/opensslv.h deleted file mode 100644 index e277caee..00000000 --- a/ext/openssl-win64/inc32/openssl/opensslv.h +++ /dev/null @@ -1,97 +0,0 @@ -#ifndef HEADER_OPENSSLV_H -# define HEADER_OPENSSLV_H - -#ifdef __cplusplus -extern "C" { -#endif - -/*- - * Numeric release version identifier: - * MNNFFPPS: major minor fix patch status - * The status nibble has one of the values 0 for development, 1 to e for betas - * 1 to 14, and f for release. The patch level is exactly that. - * For example: - * 0.9.3-dev 0x00903000 - * 0.9.3-beta1 0x00903001 - * 0.9.3-beta2-dev 0x00903002 - * 0.9.3-beta2 0x00903002 (same as ...beta2-dev) - * 0.9.3 0x0090300f - * 0.9.3a 0x0090301f - * 0.9.4 0x0090400f - * 1.2.3z 0x102031af - * - * For continuity reasons (because 0.9.5 is already out, and is coded - * 0x00905100), between 0.9.5 and 0.9.6 the coding of the patch level - * part is slightly different, by setting the highest bit. This means - * that 0.9.5a looks like this: 0x0090581f. At 0.9.6, we can start - * with 0x0090600S... - * - * (Prior to 0.9.3-dev a different scheme was used: 0.9.2b is 0x0922.) - * (Prior to 0.9.5a beta1, a different scheme was used: MMNNFFRBB for - * major minor fix final patch/beta) - */ -# define OPENSSL_VERSION_NUMBER 0x1000200fL -# ifdef OPENSSL_FIPS -# define OPENSSL_VERSION_TEXT "OpenSSL 1.0.2-fips 22 Jan 2015" -# else -# define OPENSSL_VERSION_TEXT "OpenSSL 1.0.2 22 Jan 2015" -# endif -# define OPENSSL_VERSION_PTEXT " part of " OPENSSL_VERSION_TEXT - -/*- - * The macros below are to be used for shared library (.so, .dll, ...) - * versioning. That kind of versioning works a bit differently between - * operating systems. The most usual scheme is to set a major and a minor - * number, and have the runtime loader check that the major number is equal - * to what it was at application link time, while the minor number has to - * be greater or equal to what it was at application link time. With this - * scheme, the version number is usually part of the file name, like this: - * - * libcrypto.so.0.9 - * - * Some unixen also make a softlink with the major verson number only: - * - * libcrypto.so.0 - * - * On Tru64 and IRIX 6.x it works a little bit differently. There, the - * shared library version is stored in the file, and is actually a series - * of versions, separated by colons. The rightmost version present in the - * library when linking an application is stored in the application to be - * matched at run time. When the application is run, a check is done to - * see if the library version stored in the application matches any of the - * versions in the version string of the library itself. - * This version string can be constructed in any way, depending on what - * kind of matching is desired. However, to implement the same scheme as - * the one used in the other unixen, all compatible versions, from lowest - * to highest, should be part of the string. Consecutive builds would - * give the following versions strings: - * - * 3.0 - * 3.0:3.1 - * 3.0:3.1:3.2 - * 4.0 - * 4.0:4.1 - * - * Notice how version 4 is completely incompatible with version, and - * therefore give the breach you can see. - * - * There may be other schemes as well that I haven't yet discovered. - * - * So, here's the way it works here: first of all, the library version - * number doesn't need at all to match the overall OpenSSL version. - * However, it's nice and more understandable if it actually does. - * The current library version is stored in the macro SHLIB_VERSION_NUMBER, - * which is just a piece of text in the format "M.m.e" (Major, minor, edit). - * For the sake of Tru64, IRIX, and any other OS that behaves in similar ways, - * we need to keep a history of version numbers, which is done in the - * macro SHLIB_VERSION_HISTORY. The numbers are separated by colons and - * should only keep the versions that are binary compatible with the current. - */ -# define SHLIB_VERSION_HISTORY "" -# define SHLIB_VERSION_NUMBER "1.0.0" - - -#ifdef __cplusplus -} -#endif -#endif /* HEADER_OPENSSLV_H */ diff --git a/ext/openssl-win64/inc32/openssl/ossl_typ.h b/ext/openssl-win64/inc32/openssl/ossl_typ.h deleted file mode 100644 index 9144ea2c..00000000 --- a/ext/openssl-win64/inc32/openssl/ossl_typ.h +++ /dev/null @@ -1,211 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1998-2001 The OpenSSL Project. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. All advertising materials mentioning features or use of this - * software must display the following acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" - * - * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * openssl-core@openssl.org. - * - * 5. Products derived from this software may not be called "OpenSSL" - * nor may "OpenSSL" appear in their names without prior written - * permission of the OpenSSL Project. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit (http://www.openssl.org/)" - * - * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY - * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * ==================================================================== - * - * This product includes cryptographic software written by Eric Young - * (eay@cryptsoft.com). This product includes software written by Tim - * Hudson (tjh@cryptsoft.com). - * - */ - -#ifndef HEADER_OPENSSL_TYPES_H -# define HEADER_OPENSSL_TYPES_H - -#ifdef __cplusplus -extern "C" { -#endif - -# include - -# ifdef NO_ASN1_TYPEDEFS -# define ASN1_INTEGER ASN1_STRING -# define ASN1_ENUMERATED ASN1_STRING -# define ASN1_BIT_STRING ASN1_STRING -# define ASN1_OCTET_STRING ASN1_STRING -# define ASN1_PRINTABLESTRING ASN1_STRING -# define ASN1_T61STRING ASN1_STRING -# define ASN1_IA5STRING ASN1_STRING -# define ASN1_UTCTIME ASN1_STRING -# define ASN1_GENERALIZEDTIME ASN1_STRING -# define ASN1_TIME ASN1_STRING -# define ASN1_GENERALSTRING ASN1_STRING -# define ASN1_UNIVERSALSTRING ASN1_STRING -# define ASN1_BMPSTRING ASN1_STRING -# define ASN1_VISIBLESTRING ASN1_STRING -# define ASN1_UTF8STRING ASN1_STRING -# define ASN1_BOOLEAN int -# define ASN1_NULL int -# else -typedef struct asn1_string_st ASN1_INTEGER; -typedef struct asn1_string_st ASN1_ENUMERATED; -typedef struct asn1_string_st ASN1_BIT_STRING; -typedef struct asn1_string_st ASN1_OCTET_STRING; -typedef struct asn1_string_st ASN1_PRINTABLESTRING; -typedef struct asn1_string_st ASN1_T61STRING; -typedef struct asn1_string_st ASN1_IA5STRING; -typedef struct asn1_string_st ASN1_GENERALSTRING; -typedef struct asn1_string_st ASN1_UNIVERSALSTRING; -typedef struct asn1_string_st ASN1_BMPSTRING; -typedef struct asn1_string_st ASN1_UTCTIME; -typedef struct asn1_string_st ASN1_TIME; -typedef struct asn1_string_st ASN1_GENERALIZEDTIME; -typedef struct asn1_string_st ASN1_VISIBLESTRING; -typedef struct asn1_string_st ASN1_UTF8STRING; -typedef struct asn1_string_st ASN1_STRING; -typedef int ASN1_BOOLEAN; -typedef int ASN1_NULL; -# endif - -typedef struct asn1_object_st ASN1_OBJECT; - -typedef struct ASN1_ITEM_st ASN1_ITEM; -typedef struct asn1_pctx_st ASN1_PCTX; - -# ifdef OPENSSL_SYS_WIN32 -# undef X509_NAME -# undef X509_EXTENSIONS -# undef X509_CERT_PAIR -# undef PKCS7_ISSUER_AND_SERIAL -# undef OCSP_REQUEST -# undef OCSP_RESPONSE -# endif - -# ifdef BIGNUM -# undef BIGNUM -# endif -typedef struct bignum_st BIGNUM; -typedef struct bignum_ctx BN_CTX; -typedef struct bn_blinding_st BN_BLINDING; -typedef struct bn_mont_ctx_st BN_MONT_CTX; -typedef struct bn_recp_ctx_st BN_RECP_CTX; -typedef struct bn_gencb_st BN_GENCB; - -typedef struct buf_mem_st BUF_MEM; - -typedef struct evp_cipher_st EVP_CIPHER; -typedef struct evp_cipher_ctx_st EVP_CIPHER_CTX; -typedef struct env_md_st EVP_MD; -typedef struct env_md_ctx_st EVP_MD_CTX; -typedef struct evp_pkey_st EVP_PKEY; - -typedef struct evp_pkey_asn1_method_st EVP_PKEY_ASN1_METHOD; - -typedef struct evp_pkey_method_st EVP_PKEY_METHOD; -typedef struct evp_pkey_ctx_st EVP_PKEY_CTX; - -typedef struct dh_st DH; -typedef struct dh_method DH_METHOD; - -typedef struct dsa_st DSA; -typedef struct dsa_method DSA_METHOD; - -typedef struct rsa_st RSA; -typedef struct rsa_meth_st RSA_METHOD; - -typedef struct rand_meth_st RAND_METHOD; - -typedef struct ecdh_method ECDH_METHOD; -typedef struct ecdsa_method ECDSA_METHOD; - -typedef struct x509_st X509; -typedef struct X509_algor_st X509_ALGOR; -typedef struct X509_crl_st X509_CRL; -typedef struct x509_crl_method_st X509_CRL_METHOD; -typedef struct x509_revoked_st X509_REVOKED; -typedef struct X509_name_st X509_NAME; -typedef struct X509_pubkey_st X509_PUBKEY; -typedef struct x509_store_st X509_STORE; -typedef struct x509_store_ctx_st X509_STORE_CTX; - -typedef struct pkcs8_priv_key_info_st PKCS8_PRIV_KEY_INFO; - -typedef struct v3_ext_ctx X509V3_CTX; -typedef struct conf_st CONF; - -typedef struct store_st STORE; -typedef struct store_method_st STORE_METHOD; - -typedef struct ui_st UI; -typedef struct ui_method_st UI_METHOD; - -typedef struct st_ERR_FNS ERR_FNS; - -typedef struct engine_st ENGINE; -typedef struct ssl_st SSL; -typedef struct ssl_ctx_st SSL_CTX; - -typedef struct X509_POLICY_NODE_st X509_POLICY_NODE; -typedef struct X509_POLICY_LEVEL_st X509_POLICY_LEVEL; -typedef struct X509_POLICY_TREE_st X509_POLICY_TREE; -typedef struct X509_POLICY_CACHE_st X509_POLICY_CACHE; - -typedef struct AUTHORITY_KEYID_st AUTHORITY_KEYID; -typedef struct DIST_POINT_st DIST_POINT; -typedef struct ISSUING_DIST_POINT_st ISSUING_DIST_POINT; -typedef struct NAME_CONSTRAINTS_st NAME_CONSTRAINTS; - - /* If placed in pkcs12.h, we end up with a circular depency with pkcs7.h */ -# define DECLARE_PKCS12_STACK_OF(type)/* Nothing */ -# define IMPLEMENT_PKCS12_STACK_OF(type)/* Nothing */ - -typedef struct crypto_ex_data_st CRYPTO_EX_DATA; -/* Callback types for crypto.h */ -typedef int CRYPTO_EX_new (void *parent, void *ptr, CRYPTO_EX_DATA *ad, - int idx, long argl, void *argp); -typedef void CRYPTO_EX_free (void *parent, void *ptr, CRYPTO_EX_DATA *ad, - int idx, long argl, void *argp); -typedef int CRYPTO_EX_dup (CRYPTO_EX_DATA *to, CRYPTO_EX_DATA *from, - void *from_d, int idx, long argl, void *argp); - -typedef struct ocsp_req_ctx_st OCSP_REQ_CTX; -typedef struct ocsp_response_st OCSP_RESPONSE; -typedef struct ocsp_responder_id_st OCSP_RESPID; - -#ifdef __cplusplus -} -#endif -#endif /* def HEADER_OPENSSL_TYPES_H */ diff --git a/ext/openssl-win64/inc32/openssl/pem.h b/ext/openssl-win64/inc32/openssl/pem.h deleted file mode 100644 index d3b23fc9..00000000 --- a/ext/openssl-win64/inc32/openssl/pem.h +++ /dev/null @@ -1,615 +0,0 @@ -/* crypto/pem/pem.h */ -/* Copyright (C) 1995-1997 Eric Young (eay@cryptsoft.com) - * All rights reserved. - * - * This package is an SSL implementation written - * by Eric Young (eay@cryptsoft.com). - * The implementation was written so as to conform with Netscapes SSL. - * - * This library is free for commercial and non-commercial use as long as - * the following conditions are aheared to. The following conditions - * apply to all code found in this distribution, be it the RC4, RSA, - * lhash, DES, etc., code; not just the SSL code. The SSL documentation - * included with this distribution is covered by the same copyright terms - * except that the holder is Tim Hudson (tjh@cryptsoft.com). - * - * Copyright remains Eric Young's, and as such any Copyright notices in - * the code are not to be removed. - * If this package is used in a product, Eric Young should be given attribution - * as the author of the parts of the library used. - * This can be in the form of a textual message at program startup or - * in documentation (online or textual) provided with the package. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * "This product includes cryptographic software written by - * Eric Young (eay@cryptsoft.com)" - * The word 'cryptographic' can be left out if the rouines from the library - * being used are not cryptographic related :-). - * 4. If you include any Windows specific code (or a derivative thereof) from - * the apps directory (application code) you must include an acknowledgement: - * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" - * - * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * The licence and distribution terms for any publically available version or - * derivative of this code cannot be changed. i.e. this code cannot simply be - * copied and put under another distribution licence - * [including the GNU Public Licence.] - */ - -#ifndef HEADER_PEM_H -# define HEADER_PEM_H - -# include -# ifndef OPENSSL_NO_BIO -# include -# endif -# ifndef OPENSSL_NO_STACK -# include -# endif -# include -# include -# include - -#ifdef __cplusplus -extern "C" { -#endif - -# define PEM_BUFSIZE 1024 - -# define PEM_OBJ_UNDEF 0 -# define PEM_OBJ_X509 1 -# define PEM_OBJ_X509_REQ 2 -# define PEM_OBJ_CRL 3 -# define PEM_OBJ_SSL_SESSION 4 -# define PEM_OBJ_PRIV_KEY 10 -# define PEM_OBJ_PRIV_RSA 11 -# define PEM_OBJ_PRIV_DSA 12 -# define PEM_OBJ_PRIV_DH 13 -# define PEM_OBJ_PUB_RSA 14 -# define PEM_OBJ_PUB_DSA 15 -# define PEM_OBJ_PUB_DH 16 -# define PEM_OBJ_DHPARAMS 17 -# define PEM_OBJ_DSAPARAMS 18 -# define PEM_OBJ_PRIV_RSA_PUBLIC 19 -# define PEM_OBJ_PRIV_ECDSA 20 -# define PEM_OBJ_PUB_ECDSA 21 -# define PEM_OBJ_ECPARAMETERS 22 - -# define PEM_ERROR 30 -# define PEM_DEK_DES_CBC 40 -# define PEM_DEK_IDEA_CBC 45 -# define PEM_DEK_DES_EDE 50 -# define PEM_DEK_DES_ECB 60 -# define PEM_DEK_RSA 70 -# define PEM_DEK_RSA_MD2 80 -# define PEM_DEK_RSA_MD5 90 - -# define PEM_MD_MD2 NID_md2 -# define PEM_MD_MD5 NID_md5 -# define PEM_MD_SHA NID_sha -# define PEM_MD_MD2_RSA NID_md2WithRSAEncryption -# define PEM_MD_MD5_RSA NID_md5WithRSAEncryption -# define PEM_MD_SHA_RSA NID_sha1WithRSAEncryption - -# define PEM_STRING_X509_OLD "X509 CERTIFICATE" -# define PEM_STRING_X509 "CERTIFICATE" -# define PEM_STRING_X509_PAIR "CERTIFICATE PAIR" -# define PEM_STRING_X509_TRUSTED "TRUSTED CERTIFICATE" -# define PEM_STRING_X509_REQ_OLD "NEW CERTIFICATE REQUEST" -# define PEM_STRING_X509_REQ "CERTIFICATE REQUEST" -# define PEM_STRING_X509_CRL "X509 CRL" -# define PEM_STRING_EVP_PKEY "ANY PRIVATE KEY" -# define PEM_STRING_PUBLIC "PUBLIC KEY" -# define PEM_STRING_RSA "RSA PRIVATE KEY" -# define PEM_STRING_RSA_PUBLIC "RSA PUBLIC KEY" -# define PEM_STRING_DSA "DSA PRIVATE KEY" -# define PEM_STRING_DSA_PUBLIC "DSA PUBLIC KEY" -# define PEM_STRING_PKCS7 "PKCS7" -# define PEM_STRING_PKCS7_SIGNED "PKCS #7 SIGNED DATA" -# define PEM_STRING_PKCS8 "ENCRYPTED PRIVATE KEY" -# define PEM_STRING_PKCS8INF "PRIVATE KEY" -# define PEM_STRING_DHPARAMS "DH PARAMETERS" -# define PEM_STRING_DHXPARAMS "X9.42 DH PARAMETERS" -# define PEM_STRING_SSL_SESSION "SSL SESSION PARAMETERS" -# define PEM_STRING_DSAPARAMS "DSA PARAMETERS" -# define PEM_STRING_ECDSA_PUBLIC "ECDSA PUBLIC KEY" -# define PEM_STRING_ECPARAMETERS "EC PARAMETERS" -# define PEM_STRING_ECPRIVATEKEY "EC PRIVATE KEY" -# define PEM_STRING_PARAMETERS "PARAMETERS" -# define PEM_STRING_CMS "CMS" - - /* - * Note that this structure is initialised by PEM_SealInit and cleaned up - * by PEM_SealFinal (at least for now) - */ -typedef struct PEM_Encode_Seal_st { - EVP_ENCODE_CTX encode; - EVP_MD_CTX md; - EVP_CIPHER_CTX cipher; -} PEM_ENCODE_SEAL_CTX; - -/* enc_type is one off */ -# define PEM_TYPE_ENCRYPTED 10 -# define PEM_TYPE_MIC_ONLY 20 -# define PEM_TYPE_MIC_CLEAR 30 -# define PEM_TYPE_CLEAR 40 - -typedef struct pem_recip_st { - char *name; - X509_NAME *dn; - int cipher; - int key_enc; - /* char iv[8]; unused and wrong size */ -} PEM_USER; - -typedef struct pem_ctx_st { - int type; /* what type of object */ - struct { - int version; - int mode; - } proc_type; - - char *domain; - - struct { - int cipher; - /*- - unused, and wrong size - unsigned char iv[8]; */ - } DEK_info; - - PEM_USER *originator; - - int num_recipient; - PEM_USER **recipient; -/*- - XXX(ben): don#t think this is used! - STACK *x509_chain; / * certificate chain */ - EVP_MD *md; /* signature type */ - - int md_enc; /* is the md encrypted or not? */ - int md_len; /* length of md_data */ - char *md_data; /* message digest, could be pkey encrypted */ - - EVP_CIPHER *dec; /* date encryption cipher */ - int key_len; /* key length */ - unsigned char *key; /* key */ - /*- - unused, and wrong size - unsigned char iv[8]; */ - - int data_enc; /* is the data encrypted */ - int data_len; - unsigned char *data; -} PEM_CTX; - -/* - * These macros make the PEM_read/PEM_write functions easier to maintain and - * write. Now they are all implemented with either: IMPLEMENT_PEM_rw(...) or - * IMPLEMENT_PEM_rw_cb(...) - */ - -# ifdef OPENSSL_NO_FP_API - -# define IMPLEMENT_PEM_read_fp(name, type, str, asn1) /**/ -# define IMPLEMENT_PEM_write_fp(name, type, str, asn1) /**/ -# define IMPLEMENT_PEM_write_fp_const(name, type, str, asn1) /**/ -# define IMPLEMENT_PEM_write_cb_fp(name, type, str, asn1) /**/ -# define IMPLEMENT_PEM_write_cb_fp_const(name, type, str, asn1) /**/ -# else - -# define IMPLEMENT_PEM_read_fp(name, type, str, asn1) \ -type *PEM_read_##name(FILE *fp, type **x, pem_password_cb *cb, void *u)\ -{ \ -return PEM_ASN1_read((d2i_of_void *)d2i_##asn1, str,fp,(void **)x,cb,u); \ -} - -# define IMPLEMENT_PEM_write_fp(name, type, str, asn1) \ -int PEM_write_##name(FILE *fp, type *x) \ -{ \ -return PEM_ASN1_write((i2d_of_void *)i2d_##asn1,str,fp,x,NULL,NULL,0,NULL,NULL); \ -} - -# define IMPLEMENT_PEM_write_fp_const(name, type, str, asn1) \ -int PEM_write_##name(FILE *fp, const type *x) \ -{ \ -return PEM_ASN1_write((i2d_of_void *)i2d_##asn1,str,fp,(void *)x,NULL,NULL,0,NULL,NULL); \ -} - -# define IMPLEMENT_PEM_write_cb_fp(name, type, str, asn1) \ -int PEM_write_##name(FILE *fp, type *x, const EVP_CIPHER *enc, \ - unsigned char *kstr, int klen, pem_password_cb *cb, \ - void *u) \ - { \ - return PEM_ASN1_write((i2d_of_void *)i2d_##asn1,str,fp,x,enc,kstr,klen,cb,u); \ - } - -# define IMPLEMENT_PEM_write_cb_fp_const(name, type, str, asn1) \ -int PEM_write_##name(FILE *fp, type *x, const EVP_CIPHER *enc, \ - unsigned char *kstr, int klen, pem_password_cb *cb, \ - void *u) \ - { \ - return PEM_ASN1_write((i2d_of_void *)i2d_##asn1,str,fp,x,enc,kstr,klen,cb,u); \ - } - -# endif - -# define IMPLEMENT_PEM_read_bio(name, type, str, asn1) \ -type *PEM_read_bio_##name(BIO *bp, type **x, pem_password_cb *cb, void *u)\ -{ \ -return PEM_ASN1_read_bio((d2i_of_void *)d2i_##asn1, str,bp,(void **)x,cb,u); \ -} - -# define IMPLEMENT_PEM_write_bio(name, type, str, asn1) \ -int PEM_write_bio_##name(BIO *bp, type *x) \ -{ \ -return PEM_ASN1_write_bio((i2d_of_void *)i2d_##asn1,str,bp,x,NULL,NULL,0,NULL,NULL); \ -} - -# define IMPLEMENT_PEM_write_bio_const(name, type, str, asn1) \ -int PEM_write_bio_##name(BIO *bp, const type *x) \ -{ \ -return PEM_ASN1_write_bio((i2d_of_void *)i2d_##asn1,str,bp,(void *)x,NULL,NULL,0,NULL,NULL); \ -} - -# define IMPLEMENT_PEM_write_cb_bio(name, type, str, asn1) \ -int PEM_write_bio_##name(BIO *bp, type *x, const EVP_CIPHER *enc, \ - unsigned char *kstr, int klen, pem_password_cb *cb, void *u) \ - { \ - return PEM_ASN1_write_bio((i2d_of_void *)i2d_##asn1,str,bp,x,enc,kstr,klen,cb,u); \ - } - -# define IMPLEMENT_PEM_write_cb_bio_const(name, type, str, asn1) \ -int PEM_write_bio_##name(BIO *bp, type *x, const EVP_CIPHER *enc, \ - unsigned char *kstr, int klen, pem_password_cb *cb, void *u) \ - { \ - return PEM_ASN1_write_bio((i2d_of_void *)i2d_##asn1,str,bp,(void *)x,enc,kstr,klen,cb,u); \ - } - -# define IMPLEMENT_PEM_write(name, type, str, asn1) \ - IMPLEMENT_PEM_write_bio(name, type, str, asn1) \ - IMPLEMENT_PEM_write_fp(name, type, str, asn1) - -# define IMPLEMENT_PEM_write_const(name, type, str, asn1) \ - IMPLEMENT_PEM_write_bio_const(name, type, str, asn1) \ - IMPLEMENT_PEM_write_fp_const(name, type, str, asn1) - -# define IMPLEMENT_PEM_write_cb(name, type, str, asn1) \ - IMPLEMENT_PEM_write_cb_bio(name, type, str, asn1) \ - IMPLEMENT_PEM_write_cb_fp(name, type, str, asn1) - -# define IMPLEMENT_PEM_write_cb_const(name, type, str, asn1) \ - IMPLEMENT_PEM_write_cb_bio_const(name, type, str, asn1) \ - IMPLEMENT_PEM_write_cb_fp_const(name, type, str, asn1) - -# define IMPLEMENT_PEM_read(name, type, str, asn1) \ - IMPLEMENT_PEM_read_bio(name, type, str, asn1) \ - IMPLEMENT_PEM_read_fp(name, type, str, asn1) - -# define IMPLEMENT_PEM_rw(name, type, str, asn1) \ - IMPLEMENT_PEM_read(name, type, str, asn1) \ - IMPLEMENT_PEM_write(name, type, str, asn1) - -# define IMPLEMENT_PEM_rw_const(name, type, str, asn1) \ - IMPLEMENT_PEM_read(name, type, str, asn1) \ - IMPLEMENT_PEM_write_const(name, type, str, asn1) - -# define IMPLEMENT_PEM_rw_cb(name, type, str, asn1) \ - IMPLEMENT_PEM_read(name, type, str, asn1) \ - IMPLEMENT_PEM_write_cb(name, type, str, asn1) - -/* These are the same except they are for the declarations */ - -# if defined(OPENSSL_NO_FP_API) - -# define DECLARE_PEM_read_fp(name, type) /**/ -# define DECLARE_PEM_write_fp(name, type) /**/ -# define DECLARE_PEM_write_cb_fp(name, type) /**/ -# else - -# define DECLARE_PEM_read_fp(name, type) \ - type *PEM_read_##name(FILE *fp, type **x, pem_password_cb *cb, void *u); - -# define DECLARE_PEM_write_fp(name, type) \ - int PEM_write_##name(FILE *fp, type *x); - -# define DECLARE_PEM_write_fp_const(name, type) \ - int PEM_write_##name(FILE *fp, const type *x); - -# define DECLARE_PEM_write_cb_fp(name, type) \ - int PEM_write_##name(FILE *fp, type *x, const EVP_CIPHER *enc, \ - unsigned char *kstr, int klen, pem_password_cb *cb, void *u); - -# endif - -# ifndef OPENSSL_NO_BIO -# define DECLARE_PEM_read_bio(name, type) \ - type *PEM_read_bio_##name(BIO *bp, type **x, pem_password_cb *cb, void *u); - -# define DECLARE_PEM_write_bio(name, type) \ - int PEM_write_bio_##name(BIO *bp, type *x); - -# define DECLARE_PEM_write_bio_const(name, type) \ - int PEM_write_bio_##name(BIO *bp, const type *x); - -# define DECLARE_PEM_write_cb_bio(name, type) \ - int PEM_write_bio_##name(BIO *bp, type *x, const EVP_CIPHER *enc, \ - unsigned char *kstr, int klen, pem_password_cb *cb, void *u); - -# else - -# define DECLARE_PEM_read_bio(name, type) /**/ -# define DECLARE_PEM_write_bio(name, type) /**/ -# define DECLARE_PEM_write_bio_const(name, type) /**/ -# define DECLARE_PEM_write_cb_bio(name, type) /**/ -# endif -# define DECLARE_PEM_write(name, type) \ - DECLARE_PEM_write_bio(name, type) \ - DECLARE_PEM_write_fp(name, type) -# define DECLARE_PEM_write_const(name, type) \ - DECLARE_PEM_write_bio_const(name, type) \ - DECLARE_PEM_write_fp_const(name, type) -# define DECLARE_PEM_write_cb(name, type) \ - DECLARE_PEM_write_cb_bio(name, type) \ - DECLARE_PEM_write_cb_fp(name, type) -# define DECLARE_PEM_read(name, type) \ - DECLARE_PEM_read_bio(name, type) \ - DECLARE_PEM_read_fp(name, type) -# define DECLARE_PEM_rw(name, type) \ - DECLARE_PEM_read(name, type) \ - DECLARE_PEM_write(name, type) -# define DECLARE_PEM_rw_const(name, type) \ - DECLARE_PEM_read(name, type) \ - DECLARE_PEM_write_const(name, type) -# define DECLARE_PEM_rw_cb(name, type) \ - DECLARE_PEM_read(name, type) \ - DECLARE_PEM_write_cb(name, type) -# if 1 -/* "userdata": new with OpenSSL 0.9.4 */ -typedef int pem_password_cb (char *buf, int size, int rwflag, void *userdata); -# else -/* OpenSSL 0.9.3, 0.9.3a */ -typedef int pem_password_cb (char *buf, int size, int rwflag); -# endif - -int PEM_get_EVP_CIPHER_INFO(char *header, EVP_CIPHER_INFO *cipher); -int PEM_do_header(EVP_CIPHER_INFO *cipher, unsigned char *data, long *len, - pem_password_cb *callback, void *u); - -# ifndef OPENSSL_NO_BIO -int PEM_read_bio(BIO *bp, char **name, char **header, - unsigned char **data, long *len); -int PEM_write_bio(BIO *bp, const char *name, const char *hdr, - const unsigned char *data, long len); -int PEM_bytes_read_bio(unsigned char **pdata, long *plen, char **pnm, - const char *name, BIO *bp, pem_password_cb *cb, - void *u); -void *PEM_ASN1_read_bio(d2i_of_void *d2i, const char *name, BIO *bp, void **x, - pem_password_cb *cb, void *u); -int PEM_ASN1_write_bio(i2d_of_void *i2d, const char *name, BIO *bp, void *x, - const EVP_CIPHER *enc, unsigned char *kstr, int klen, - pem_password_cb *cb, void *u); - -STACK_OF(X509_INFO) *PEM_X509_INFO_read_bio(BIO *bp, STACK_OF(X509_INFO) *sk, - pem_password_cb *cb, void *u); -int PEM_X509_INFO_write_bio(BIO *bp, X509_INFO *xi, EVP_CIPHER *enc, - unsigned char *kstr, int klen, - pem_password_cb *cd, void *u); -# endif - -int PEM_read(FILE *fp, char **name, char **header, - unsigned char **data, long *len); -int PEM_write(FILE *fp, const char *name, const char *hdr, - const unsigned char *data, long len); -void *PEM_ASN1_read(d2i_of_void *d2i, const char *name, FILE *fp, void **x, - pem_password_cb *cb, void *u); -int PEM_ASN1_write(i2d_of_void *i2d, const char *name, FILE *fp, - void *x, const EVP_CIPHER *enc, unsigned char *kstr, - int klen, pem_password_cb *callback, void *u); -STACK_OF(X509_INFO) *PEM_X509_INFO_read(FILE *fp, STACK_OF(X509_INFO) *sk, - pem_password_cb *cb, void *u); - -int PEM_SealInit(PEM_ENCODE_SEAL_CTX *ctx, EVP_CIPHER *type, - EVP_MD *md_type, unsigned char **ek, int *ekl, - unsigned char *iv, EVP_PKEY **pubk, int npubk); -void PEM_SealUpdate(PEM_ENCODE_SEAL_CTX *ctx, unsigned char *out, int *outl, - unsigned char *in, int inl); -int PEM_SealFinal(PEM_ENCODE_SEAL_CTX *ctx, unsigned char *sig, int *sigl, - unsigned char *out, int *outl, EVP_PKEY *priv); - -void PEM_SignInit(EVP_MD_CTX *ctx, EVP_MD *type); -void PEM_SignUpdate(EVP_MD_CTX *ctx, unsigned char *d, unsigned int cnt); -int PEM_SignFinal(EVP_MD_CTX *ctx, unsigned char *sigret, - unsigned int *siglen, EVP_PKEY *pkey); - -int PEM_def_callback(char *buf, int num, int w, void *key); -void PEM_proc_type(char *buf, int type); -void PEM_dek_info(char *buf, const char *type, int len, char *str); - -# include - -DECLARE_PEM_rw(X509, X509) -DECLARE_PEM_rw(X509_AUX, X509) -DECLARE_PEM_rw(X509_CERT_PAIR, X509_CERT_PAIR) -DECLARE_PEM_rw(X509_REQ, X509_REQ) -DECLARE_PEM_write(X509_REQ_NEW, X509_REQ) -DECLARE_PEM_rw(X509_CRL, X509_CRL) -DECLARE_PEM_rw(PKCS7, PKCS7) -DECLARE_PEM_rw(NETSCAPE_CERT_SEQUENCE, NETSCAPE_CERT_SEQUENCE) -DECLARE_PEM_rw(PKCS8, X509_SIG) -DECLARE_PEM_rw(PKCS8_PRIV_KEY_INFO, PKCS8_PRIV_KEY_INFO) -# ifndef OPENSSL_NO_RSA -DECLARE_PEM_rw_cb(RSAPrivateKey, RSA) -DECLARE_PEM_rw_const(RSAPublicKey, RSA) -DECLARE_PEM_rw(RSA_PUBKEY, RSA) -# endif -# ifndef OPENSSL_NO_DSA -DECLARE_PEM_rw_cb(DSAPrivateKey, DSA) -DECLARE_PEM_rw(DSA_PUBKEY, DSA) -DECLARE_PEM_rw_const(DSAparams, DSA) -# endif -# ifndef OPENSSL_NO_EC -DECLARE_PEM_rw_const(ECPKParameters, EC_GROUP) -DECLARE_PEM_rw_cb(ECPrivateKey, EC_KEY) -DECLARE_PEM_rw(EC_PUBKEY, EC_KEY) -# endif -# ifndef OPENSSL_NO_DH -DECLARE_PEM_rw_const(DHparams, DH) -DECLARE_PEM_write_const(DHxparams, DH) -# endif -DECLARE_PEM_rw_cb(PrivateKey, EVP_PKEY) -DECLARE_PEM_rw(PUBKEY, EVP_PKEY) - -int PEM_write_bio_PKCS8PrivateKey_nid(BIO *bp, EVP_PKEY *x, int nid, - char *kstr, int klen, - pem_password_cb *cb, void *u); -int PEM_write_bio_PKCS8PrivateKey(BIO *, EVP_PKEY *, const EVP_CIPHER *, - char *, int, pem_password_cb *, void *); -int i2d_PKCS8PrivateKey_bio(BIO *bp, EVP_PKEY *x, const EVP_CIPHER *enc, - char *kstr, int klen, - pem_password_cb *cb, void *u); -int i2d_PKCS8PrivateKey_nid_bio(BIO *bp, EVP_PKEY *x, int nid, - char *kstr, int klen, - pem_password_cb *cb, void *u); -EVP_PKEY *d2i_PKCS8PrivateKey_bio(BIO *bp, EVP_PKEY **x, pem_password_cb *cb, - void *u); - -int i2d_PKCS8PrivateKey_fp(FILE *fp, EVP_PKEY *x, const EVP_CIPHER *enc, - char *kstr, int klen, - pem_password_cb *cb, void *u); -int i2d_PKCS8PrivateKey_nid_fp(FILE *fp, EVP_PKEY *x, int nid, - char *kstr, int klen, - pem_password_cb *cb, void *u); -int PEM_write_PKCS8PrivateKey_nid(FILE *fp, EVP_PKEY *x, int nid, - char *kstr, int klen, - pem_password_cb *cb, void *u); - -EVP_PKEY *d2i_PKCS8PrivateKey_fp(FILE *fp, EVP_PKEY **x, pem_password_cb *cb, - void *u); - -int PEM_write_PKCS8PrivateKey(FILE *fp, EVP_PKEY *x, const EVP_CIPHER *enc, - char *kstr, int klen, pem_password_cb *cd, - void *u); - -EVP_PKEY *PEM_read_bio_Parameters(BIO *bp, EVP_PKEY **x); -int PEM_write_bio_Parameters(BIO *bp, EVP_PKEY *x); - -EVP_PKEY *b2i_PrivateKey(const unsigned char **in, long length); -EVP_PKEY *b2i_PublicKey(const unsigned char **in, long length); -EVP_PKEY *b2i_PrivateKey_bio(BIO *in); -EVP_PKEY *b2i_PublicKey_bio(BIO *in); -int i2b_PrivateKey_bio(BIO *out, EVP_PKEY *pk); -int i2b_PublicKey_bio(BIO *out, EVP_PKEY *pk); -# ifndef OPENSSL_NO_RC4 -EVP_PKEY *b2i_PVK_bio(BIO *in, pem_password_cb *cb, void *u); -int i2b_PVK_bio(BIO *out, EVP_PKEY *pk, int enclevel, - pem_password_cb *cb, void *u); -# endif - -/* BEGIN ERROR CODES */ -/* - * The following lines are auto generated by the script mkerr.pl. Any changes - * made after this point may be overwritten when the script is next run. - */ -void ERR_load_PEM_strings(void); - -/* Error codes for the PEM functions. */ - -/* Function codes. */ -# define PEM_F_B2I_DSS 127 -# define PEM_F_B2I_PVK_BIO 128 -# define PEM_F_B2I_RSA 129 -# define PEM_F_CHECK_BITLEN_DSA 130 -# define PEM_F_CHECK_BITLEN_RSA 131 -# define PEM_F_D2I_PKCS8PRIVATEKEY_BIO 120 -# define PEM_F_D2I_PKCS8PRIVATEKEY_FP 121 -# define PEM_F_DO_B2I 132 -# define PEM_F_DO_B2I_BIO 133 -# define PEM_F_DO_BLOB_HEADER 134 -# define PEM_F_DO_PK8PKEY 126 -# define PEM_F_DO_PK8PKEY_FP 125 -# define PEM_F_DO_PVK_BODY 135 -# define PEM_F_DO_PVK_HEADER 136 -# define PEM_F_I2B_PVK 137 -# define PEM_F_I2B_PVK_BIO 138 -# define PEM_F_LOAD_IV 101 -# define PEM_F_PEM_ASN1_READ 102 -# define PEM_F_PEM_ASN1_READ_BIO 103 -# define PEM_F_PEM_ASN1_WRITE 104 -# define PEM_F_PEM_ASN1_WRITE_BIO 105 -# define PEM_F_PEM_DEF_CALLBACK 100 -# define PEM_F_PEM_DO_HEADER 106 -# define PEM_F_PEM_F_PEM_WRITE_PKCS8PRIVATEKEY 118 -# define PEM_F_PEM_GET_EVP_CIPHER_INFO 107 -# define PEM_F_PEM_PK8PKEY 119 -# define PEM_F_PEM_READ 108 -# define PEM_F_PEM_READ_BIO 109 -# define PEM_F_PEM_READ_BIO_DHPARAMS 141 -# define PEM_F_PEM_READ_BIO_PARAMETERS 140 -# define PEM_F_PEM_READ_BIO_PRIVATEKEY 123 -# define PEM_F_PEM_READ_DHPARAMS 142 -# define PEM_F_PEM_READ_PRIVATEKEY 124 -# define PEM_F_PEM_SEALFINAL 110 -# define PEM_F_PEM_SEALINIT 111 -# define PEM_F_PEM_SIGNFINAL 112 -# define PEM_F_PEM_WRITE 113 -# define PEM_F_PEM_WRITE_BIO 114 -# define PEM_F_PEM_WRITE_PRIVATEKEY 139 -# define PEM_F_PEM_X509_INFO_READ 115 -# define PEM_F_PEM_X509_INFO_READ_BIO 116 -# define PEM_F_PEM_X509_INFO_WRITE_BIO 117 - -/* Reason codes. */ -# define PEM_R_BAD_BASE64_DECODE 100 -# define PEM_R_BAD_DECRYPT 101 -# define PEM_R_BAD_END_LINE 102 -# define PEM_R_BAD_IV_CHARS 103 -# define PEM_R_BAD_MAGIC_NUMBER 116 -# define PEM_R_BAD_PASSWORD_READ 104 -# define PEM_R_BAD_VERSION_NUMBER 117 -# define PEM_R_BIO_WRITE_FAILURE 118 -# define PEM_R_CIPHER_IS_NULL 127 -# define PEM_R_ERROR_CONVERTING_PRIVATE_KEY 115 -# define PEM_R_EXPECTING_PRIVATE_KEY_BLOB 119 -# define PEM_R_EXPECTING_PUBLIC_KEY_BLOB 120 -# define PEM_R_INCONSISTENT_HEADER 121 -# define PEM_R_KEYBLOB_HEADER_PARSE_ERROR 122 -# define PEM_R_KEYBLOB_TOO_SHORT 123 -# define PEM_R_NOT_DEK_INFO 105 -# define PEM_R_NOT_ENCRYPTED 106 -# define PEM_R_NOT_PROC_TYPE 107 -# define PEM_R_NO_START_LINE 108 -# define PEM_R_PROBLEMS_GETTING_PASSWORD 109 -# define PEM_R_PUBLIC_KEY_NO_RSA 110 -# define PEM_R_PVK_DATA_TOO_SHORT 124 -# define PEM_R_PVK_TOO_SHORT 125 -# define PEM_R_READ_KEY 111 -# define PEM_R_SHORT_HEADER 112 -# define PEM_R_UNSUPPORTED_CIPHER 113 -# define PEM_R_UNSUPPORTED_ENCRYPTION 114 -# define PEM_R_UNSUPPORTED_KEY_COMPONENTS 126 - -#ifdef __cplusplus -} -#endif -#endif diff --git a/ext/openssl-win64/inc32/openssl/pem2.h b/ext/openssl-win64/inc32/openssl/pem2.h deleted file mode 100644 index 84897d5e..00000000 --- a/ext/openssl-win64/inc32/openssl/pem2.h +++ /dev/null @@ -1,70 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The OpenSSL Project. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. All advertising materials mentioning features or use of this - * software must display the following acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" - * - * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * licensing@OpenSSL.org. - * - * 5. Products derived from this software may not be called "OpenSSL" - * nor may "OpenSSL" appear in their names without prior written - * permission of the OpenSSL Project. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" - * - * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY - * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * ==================================================================== - * - * This product includes cryptographic software written by Eric Young - * (eay@cryptsoft.com). This product includes software written by Tim - * Hudson (tjh@cryptsoft.com). - * - */ - -/* - * This header only exists to break a circular dependency between pem and err - * Ben 30 Jan 1999. - */ - -#ifdef __cplusplus -extern "C" { -#endif - -#ifndef HEADER_PEM_H -void ERR_load_PEM_strings(void); -#endif - -#ifdef __cplusplus -} -#endif diff --git a/ext/openssl-win64/inc32/openssl/pkcs7.h b/ext/openssl-win64/inc32/openssl/pkcs7.h deleted file mode 100644 index b51b3863..00000000 --- a/ext/openssl-win64/inc32/openssl/pkcs7.h +++ /dev/null @@ -1,481 +0,0 @@ -/* crypto/pkcs7/pkcs7.h */ -/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) - * All rights reserved. - * - * This package is an SSL implementation written - * by Eric Young (eay@cryptsoft.com). - * The implementation was written so as to conform with Netscapes SSL. - * - * This library is free for commercial and non-commercial use as long as - * the following conditions are aheared to. The following conditions - * apply to all code found in this distribution, be it the RC4, RSA, - * lhash, DES, etc., code; not just the SSL code. The SSL documentation - * included with this distribution is covered by the same copyright terms - * except that the holder is Tim Hudson (tjh@cryptsoft.com). - * - * Copyright remains Eric Young's, and as such any Copyright notices in - * the code are not to be removed. - * If this package is used in a product, Eric Young should be given attribution - * as the author of the parts of the library used. - * This can be in the form of a textual message at program startup or - * in documentation (online or textual) provided with the package. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * "This product includes cryptographic software written by - * Eric Young (eay@cryptsoft.com)" - * The word 'cryptographic' can be left out if the rouines from the library - * being used are not cryptographic related :-). - * 4. If you include any Windows specific code (or a derivative thereof) from - * the apps directory (application code) you must include an acknowledgement: - * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" - * - * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * The licence and distribution terms for any publically available version or - * derivative of this code cannot be changed. i.e. this code cannot simply be - * copied and put under another distribution licence - * [including the GNU Public Licence.] - */ - -#ifndef HEADER_PKCS7_H -# define HEADER_PKCS7_H - -# include -# include -# include - -# include -# include - -#ifdef __cplusplus -extern "C" { -#endif - -# ifdef OPENSSL_SYS_WIN32 -/* Under Win32 thes are defined in wincrypt.h */ -# undef PKCS7_ISSUER_AND_SERIAL -# undef PKCS7_SIGNER_INFO -# endif - -/*- -Encryption_ID DES-CBC -Digest_ID MD5 -Digest_Encryption_ID rsaEncryption -Key_Encryption_ID rsaEncryption -*/ - -typedef struct pkcs7_issuer_and_serial_st { - X509_NAME *issuer; - ASN1_INTEGER *serial; -} PKCS7_ISSUER_AND_SERIAL; - -typedef struct pkcs7_signer_info_st { - ASN1_INTEGER *version; /* version 1 */ - PKCS7_ISSUER_AND_SERIAL *issuer_and_serial; - X509_ALGOR *digest_alg; - STACK_OF(X509_ATTRIBUTE) *auth_attr; /* [ 0 ] */ - X509_ALGOR *digest_enc_alg; - ASN1_OCTET_STRING *enc_digest; - STACK_OF(X509_ATTRIBUTE) *unauth_attr; /* [ 1 ] */ - /* The private key to sign with */ - EVP_PKEY *pkey; -} PKCS7_SIGNER_INFO; - -DECLARE_STACK_OF(PKCS7_SIGNER_INFO) -DECLARE_ASN1_SET_OF(PKCS7_SIGNER_INFO) - -typedef struct pkcs7_recip_info_st { - ASN1_INTEGER *version; /* version 0 */ - PKCS7_ISSUER_AND_SERIAL *issuer_and_serial; - X509_ALGOR *key_enc_algor; - ASN1_OCTET_STRING *enc_key; - X509 *cert; /* get the pub-key from this */ -} PKCS7_RECIP_INFO; - -DECLARE_STACK_OF(PKCS7_RECIP_INFO) -DECLARE_ASN1_SET_OF(PKCS7_RECIP_INFO) - -typedef struct pkcs7_signed_st { - ASN1_INTEGER *version; /* version 1 */ - STACK_OF(X509_ALGOR) *md_algs; /* md used */ - STACK_OF(X509) *cert; /* [ 0 ] */ - STACK_OF(X509_CRL) *crl; /* [ 1 ] */ - STACK_OF(PKCS7_SIGNER_INFO) *signer_info; - struct pkcs7_st *contents; -} PKCS7_SIGNED; -/* - * The above structure is very very similar to PKCS7_SIGN_ENVELOPE. How about - * merging the two - */ - -typedef struct pkcs7_enc_content_st { - ASN1_OBJECT *content_type; - X509_ALGOR *algorithm; - ASN1_OCTET_STRING *enc_data; /* [ 0 ] */ - const EVP_CIPHER *cipher; -} PKCS7_ENC_CONTENT; - -typedef struct pkcs7_enveloped_st { - ASN1_INTEGER *version; /* version 0 */ - STACK_OF(PKCS7_RECIP_INFO) *recipientinfo; - PKCS7_ENC_CONTENT *enc_data; -} PKCS7_ENVELOPE; - -typedef struct pkcs7_signedandenveloped_st { - ASN1_INTEGER *version; /* version 1 */ - STACK_OF(X509_ALGOR) *md_algs; /* md used */ - STACK_OF(X509) *cert; /* [ 0 ] */ - STACK_OF(X509_CRL) *crl; /* [ 1 ] */ - STACK_OF(PKCS7_SIGNER_INFO) *signer_info; - PKCS7_ENC_CONTENT *enc_data; - STACK_OF(PKCS7_RECIP_INFO) *recipientinfo; -} PKCS7_SIGN_ENVELOPE; - -typedef struct pkcs7_digest_st { - ASN1_INTEGER *version; /* version 0 */ - X509_ALGOR *md; /* md used */ - struct pkcs7_st *contents; - ASN1_OCTET_STRING *digest; -} PKCS7_DIGEST; - -typedef struct pkcs7_encrypted_st { - ASN1_INTEGER *version; /* version 0 */ - PKCS7_ENC_CONTENT *enc_data; -} PKCS7_ENCRYPT; - -typedef struct pkcs7_st { - /* - * The following is non NULL if it contains ASN1 encoding of this - * structure - */ - unsigned char *asn1; - long length; -# define PKCS7_S_HEADER 0 -# define PKCS7_S_BODY 1 -# define PKCS7_S_TAIL 2 - int state; /* used during processing */ - int detached; - ASN1_OBJECT *type; - /* content as defined by the type */ - /* - * all encryption/message digests are applied to the 'contents', leaving - * out the 'type' field. - */ - union { - char *ptr; - /* NID_pkcs7_data */ - ASN1_OCTET_STRING *data; - /* NID_pkcs7_signed */ - PKCS7_SIGNED *sign; - /* NID_pkcs7_enveloped */ - PKCS7_ENVELOPE *enveloped; - /* NID_pkcs7_signedAndEnveloped */ - PKCS7_SIGN_ENVELOPE *signed_and_enveloped; - /* NID_pkcs7_digest */ - PKCS7_DIGEST *digest; - /* NID_pkcs7_encrypted */ - PKCS7_ENCRYPT *encrypted; - /* Anything else */ - ASN1_TYPE *other; - } d; -} PKCS7; - -DECLARE_STACK_OF(PKCS7) -DECLARE_ASN1_SET_OF(PKCS7) -DECLARE_PKCS12_STACK_OF(PKCS7) - -# define PKCS7_OP_SET_DETACHED_SIGNATURE 1 -# define PKCS7_OP_GET_DETACHED_SIGNATURE 2 - -# define PKCS7_get_signed_attributes(si) ((si)->auth_attr) -# define PKCS7_get_attributes(si) ((si)->unauth_attr) - -# define PKCS7_type_is_signed(a) (OBJ_obj2nid((a)->type) == NID_pkcs7_signed) -# define PKCS7_type_is_encrypted(a) (OBJ_obj2nid((a)->type) == NID_pkcs7_encrypted) -# define PKCS7_type_is_enveloped(a) (OBJ_obj2nid((a)->type) == NID_pkcs7_enveloped) -# define PKCS7_type_is_signedAndEnveloped(a) \ - (OBJ_obj2nid((a)->type) == NID_pkcs7_signedAndEnveloped) -# define PKCS7_type_is_data(a) (OBJ_obj2nid((a)->type) == NID_pkcs7_data) -# define PKCS7_type_is_digest(a) (OBJ_obj2nid((a)->type) == NID_pkcs7_digest) - -# define PKCS7_set_detached(p,v) \ - PKCS7_ctrl(p,PKCS7_OP_SET_DETACHED_SIGNATURE,v,NULL) -# define PKCS7_get_detached(p) \ - PKCS7_ctrl(p,PKCS7_OP_GET_DETACHED_SIGNATURE,0,NULL) - -# define PKCS7_is_detached(p7) (PKCS7_type_is_signed(p7) && PKCS7_get_detached(p7)) - -/* S/MIME related flags */ - -# define PKCS7_TEXT 0x1 -# define PKCS7_NOCERTS 0x2 -# define PKCS7_NOSIGS 0x4 -# define PKCS7_NOCHAIN 0x8 -# define PKCS7_NOINTERN 0x10 -# define PKCS7_NOVERIFY 0x20 -# define PKCS7_DETACHED 0x40 -# define PKCS7_BINARY 0x80 -# define PKCS7_NOATTR 0x100 -# define PKCS7_NOSMIMECAP 0x200 -# define PKCS7_NOOLDMIMETYPE 0x400 -# define PKCS7_CRLFEOL 0x800 -# define PKCS7_STREAM 0x1000 -# define PKCS7_NOCRL 0x2000 -# define PKCS7_PARTIAL 0x4000 -# define PKCS7_REUSE_DIGEST 0x8000 - -/* Flags: for compatibility with older code */ - -# define SMIME_TEXT PKCS7_TEXT -# define SMIME_NOCERTS PKCS7_NOCERTS -# define SMIME_NOSIGS PKCS7_NOSIGS -# define SMIME_NOCHAIN PKCS7_NOCHAIN -# define SMIME_NOINTERN PKCS7_NOINTERN -# define SMIME_NOVERIFY PKCS7_NOVERIFY -# define SMIME_DETACHED PKCS7_DETACHED -# define SMIME_BINARY PKCS7_BINARY -# define SMIME_NOATTR PKCS7_NOATTR - -DECLARE_ASN1_FUNCTIONS(PKCS7_ISSUER_AND_SERIAL) - -int PKCS7_ISSUER_AND_SERIAL_digest(PKCS7_ISSUER_AND_SERIAL *data, - const EVP_MD *type, unsigned char *md, - unsigned int *len); -# ifndef OPENSSL_NO_FP_API -PKCS7 *d2i_PKCS7_fp(FILE *fp, PKCS7 **p7); -int i2d_PKCS7_fp(FILE *fp, PKCS7 *p7); -# endif -PKCS7 *PKCS7_dup(PKCS7 *p7); -PKCS7 *d2i_PKCS7_bio(BIO *bp, PKCS7 **p7); -int i2d_PKCS7_bio(BIO *bp, PKCS7 *p7); -int i2d_PKCS7_bio_stream(BIO *out, PKCS7 *p7, BIO *in, int flags); -int PEM_write_bio_PKCS7_stream(BIO *out, PKCS7 *p7, BIO *in, int flags); - -DECLARE_ASN1_FUNCTIONS(PKCS7_SIGNER_INFO) -DECLARE_ASN1_FUNCTIONS(PKCS7_RECIP_INFO) -DECLARE_ASN1_FUNCTIONS(PKCS7_SIGNED) -DECLARE_ASN1_FUNCTIONS(PKCS7_ENC_CONTENT) -DECLARE_ASN1_FUNCTIONS(PKCS7_ENVELOPE) -DECLARE_ASN1_FUNCTIONS(PKCS7_SIGN_ENVELOPE) -DECLARE_ASN1_FUNCTIONS(PKCS7_DIGEST) -DECLARE_ASN1_FUNCTIONS(PKCS7_ENCRYPT) -DECLARE_ASN1_FUNCTIONS(PKCS7) - -DECLARE_ASN1_ITEM(PKCS7_ATTR_SIGN) -DECLARE_ASN1_ITEM(PKCS7_ATTR_VERIFY) - -DECLARE_ASN1_NDEF_FUNCTION(PKCS7) -DECLARE_ASN1_PRINT_FUNCTION(PKCS7) - -long PKCS7_ctrl(PKCS7 *p7, int cmd, long larg, char *parg); - -int PKCS7_set_type(PKCS7 *p7, int type); -int PKCS7_set0_type_other(PKCS7 *p7, int type, ASN1_TYPE *other); -int PKCS7_set_content(PKCS7 *p7, PKCS7 *p7_data); -int PKCS7_SIGNER_INFO_set(PKCS7_SIGNER_INFO *p7i, X509 *x509, EVP_PKEY *pkey, - const EVP_MD *dgst); -int PKCS7_SIGNER_INFO_sign(PKCS7_SIGNER_INFO *si); -int PKCS7_add_signer(PKCS7 *p7, PKCS7_SIGNER_INFO *p7i); -int PKCS7_add_certificate(PKCS7 *p7, X509 *x509); -int PKCS7_add_crl(PKCS7 *p7, X509_CRL *x509); -int PKCS7_content_new(PKCS7 *p7, int nid); -int PKCS7_dataVerify(X509_STORE *cert_store, X509_STORE_CTX *ctx, - BIO *bio, PKCS7 *p7, PKCS7_SIGNER_INFO *si); -int PKCS7_signatureVerify(BIO *bio, PKCS7 *p7, PKCS7_SIGNER_INFO *si, - X509 *x509); - -BIO *PKCS7_dataInit(PKCS7 *p7, BIO *bio); -int PKCS7_dataFinal(PKCS7 *p7, BIO *bio); -BIO *PKCS7_dataDecode(PKCS7 *p7, EVP_PKEY *pkey, BIO *in_bio, X509 *pcert); - -PKCS7_SIGNER_INFO *PKCS7_add_signature(PKCS7 *p7, X509 *x509, - EVP_PKEY *pkey, const EVP_MD *dgst); -X509 *PKCS7_cert_from_signer_info(PKCS7 *p7, PKCS7_SIGNER_INFO *si); -int PKCS7_set_digest(PKCS7 *p7, const EVP_MD *md); -STACK_OF(PKCS7_SIGNER_INFO) *PKCS7_get_signer_info(PKCS7 *p7); - -PKCS7_RECIP_INFO *PKCS7_add_recipient(PKCS7 *p7, X509 *x509); -void PKCS7_SIGNER_INFO_get0_algs(PKCS7_SIGNER_INFO *si, EVP_PKEY **pk, - X509_ALGOR **pdig, X509_ALGOR **psig); -void PKCS7_RECIP_INFO_get0_alg(PKCS7_RECIP_INFO *ri, X509_ALGOR **penc); -int PKCS7_add_recipient_info(PKCS7 *p7, PKCS7_RECIP_INFO *ri); -int PKCS7_RECIP_INFO_set(PKCS7_RECIP_INFO *p7i, X509 *x509); -int PKCS7_set_cipher(PKCS7 *p7, const EVP_CIPHER *cipher); -int PKCS7_stream(unsigned char ***boundary, PKCS7 *p7); - -PKCS7_ISSUER_AND_SERIAL *PKCS7_get_issuer_and_serial(PKCS7 *p7, int idx); -ASN1_OCTET_STRING *PKCS7_digest_from_attributes(STACK_OF(X509_ATTRIBUTE) *sk); -int PKCS7_add_signed_attribute(PKCS7_SIGNER_INFO *p7si, int nid, int type, - void *data); -int PKCS7_add_attribute(PKCS7_SIGNER_INFO *p7si, int nid, int atrtype, - void *value); -ASN1_TYPE *PKCS7_get_attribute(PKCS7_SIGNER_INFO *si, int nid); -ASN1_TYPE *PKCS7_get_signed_attribute(PKCS7_SIGNER_INFO *si, int nid); -int PKCS7_set_signed_attributes(PKCS7_SIGNER_INFO *p7si, - STACK_OF(X509_ATTRIBUTE) *sk); -int PKCS7_set_attributes(PKCS7_SIGNER_INFO *p7si, - STACK_OF(X509_ATTRIBUTE) *sk); - -PKCS7 *PKCS7_sign(X509 *signcert, EVP_PKEY *pkey, STACK_OF(X509) *certs, - BIO *data, int flags); - -PKCS7_SIGNER_INFO *PKCS7_sign_add_signer(PKCS7 *p7, - X509 *signcert, EVP_PKEY *pkey, - const EVP_MD *md, int flags); - -int PKCS7_final(PKCS7 *p7, BIO *data, int flags); -int PKCS7_verify(PKCS7 *p7, STACK_OF(X509) *certs, X509_STORE *store, - BIO *indata, BIO *out, int flags); -STACK_OF(X509) *PKCS7_get0_signers(PKCS7 *p7, STACK_OF(X509) *certs, - int flags); -PKCS7 *PKCS7_encrypt(STACK_OF(X509) *certs, BIO *in, const EVP_CIPHER *cipher, - int flags); -int PKCS7_decrypt(PKCS7 *p7, EVP_PKEY *pkey, X509 *cert, BIO *data, - int flags); - -int PKCS7_add_attrib_smimecap(PKCS7_SIGNER_INFO *si, - STACK_OF(X509_ALGOR) *cap); -STACK_OF(X509_ALGOR) *PKCS7_get_smimecap(PKCS7_SIGNER_INFO *si); -int PKCS7_simple_smimecap(STACK_OF(X509_ALGOR) *sk, int nid, int arg); - -int PKCS7_add_attrib_content_type(PKCS7_SIGNER_INFO *si, ASN1_OBJECT *coid); -int PKCS7_add0_attrib_signing_time(PKCS7_SIGNER_INFO *si, ASN1_TIME *t); -int PKCS7_add1_attrib_digest(PKCS7_SIGNER_INFO *si, - const unsigned char *md, int mdlen); - -int SMIME_write_PKCS7(BIO *bio, PKCS7 *p7, BIO *data, int flags); -PKCS7 *SMIME_read_PKCS7(BIO *bio, BIO **bcont); - -BIO *BIO_new_PKCS7(BIO *out, PKCS7 *p7); - -/* BEGIN ERROR CODES */ -/* - * The following lines are auto generated by the script mkerr.pl. Any changes - * made after this point may be overwritten when the script is next run. - */ -void ERR_load_PKCS7_strings(void); - -/* Error codes for the PKCS7 functions. */ - -/* Function codes. */ -# define PKCS7_F_B64_READ_PKCS7 120 -# define PKCS7_F_B64_WRITE_PKCS7 121 -# define PKCS7_F_DO_PKCS7_SIGNED_ATTRIB 136 -# define PKCS7_F_I2D_PKCS7_BIO_STREAM 140 -# define PKCS7_F_PKCS7_ADD0_ATTRIB_SIGNING_TIME 135 -# define PKCS7_F_PKCS7_ADD_ATTRIB_SMIMECAP 118 -# define PKCS7_F_PKCS7_ADD_CERTIFICATE 100 -# define PKCS7_F_PKCS7_ADD_CRL 101 -# define PKCS7_F_PKCS7_ADD_RECIPIENT_INFO 102 -# define PKCS7_F_PKCS7_ADD_SIGNATURE 131 -# define PKCS7_F_PKCS7_ADD_SIGNER 103 -# define PKCS7_F_PKCS7_BIO_ADD_DIGEST 125 -# define PKCS7_F_PKCS7_COPY_EXISTING_DIGEST 138 -# define PKCS7_F_PKCS7_CTRL 104 -# define PKCS7_F_PKCS7_DATADECODE 112 -# define PKCS7_F_PKCS7_DATAFINAL 128 -# define PKCS7_F_PKCS7_DATAINIT 105 -# define PKCS7_F_PKCS7_DATASIGN 106 -# define PKCS7_F_PKCS7_DATAVERIFY 107 -# define PKCS7_F_PKCS7_DECRYPT 114 -# define PKCS7_F_PKCS7_DECRYPT_RINFO 133 -# define PKCS7_F_PKCS7_ENCODE_RINFO 132 -# define PKCS7_F_PKCS7_ENCRYPT 115 -# define PKCS7_F_PKCS7_FINAL 134 -# define PKCS7_F_PKCS7_FIND_DIGEST 127 -# define PKCS7_F_PKCS7_GET0_SIGNERS 124 -# define PKCS7_F_PKCS7_RECIP_INFO_SET 130 -# define PKCS7_F_PKCS7_SET_CIPHER 108 -# define PKCS7_F_PKCS7_SET_CONTENT 109 -# define PKCS7_F_PKCS7_SET_DIGEST 126 -# define PKCS7_F_PKCS7_SET_TYPE 110 -# define PKCS7_F_PKCS7_SIGN 116 -# define PKCS7_F_PKCS7_SIGNATUREVERIFY 113 -# define PKCS7_F_PKCS7_SIGNER_INFO_SET 129 -# define PKCS7_F_PKCS7_SIGNER_INFO_SIGN 139 -# define PKCS7_F_PKCS7_SIGN_ADD_SIGNER 137 -# define PKCS7_F_PKCS7_SIMPLE_SMIMECAP 119 -# define PKCS7_F_PKCS7_VERIFY 117 -# define PKCS7_F_SMIME_READ_PKCS7 122 -# define PKCS7_F_SMIME_TEXT 123 - -/* Reason codes. */ -# define PKCS7_R_CERTIFICATE_VERIFY_ERROR 117 -# define PKCS7_R_CIPHER_HAS_NO_OBJECT_IDENTIFIER 144 -# define PKCS7_R_CIPHER_NOT_INITIALIZED 116 -# define PKCS7_R_CONTENT_AND_DATA_PRESENT 118 -# define PKCS7_R_CTRL_ERROR 152 -# define PKCS7_R_DECODE_ERROR 130 -# define PKCS7_R_DECRYPTED_KEY_IS_WRONG_LENGTH 100 -# define PKCS7_R_DECRYPT_ERROR 119 -# define PKCS7_R_DIGEST_FAILURE 101 -# define PKCS7_R_ENCRYPTION_CTRL_FAILURE 149 -# define PKCS7_R_ENCRYPTION_NOT_SUPPORTED_FOR_THIS_KEY_TYPE 150 -# define PKCS7_R_ERROR_ADDING_RECIPIENT 120 -# define PKCS7_R_ERROR_SETTING_CIPHER 121 -# define PKCS7_R_INVALID_MIME_TYPE 131 -# define PKCS7_R_INVALID_NULL_POINTER 143 -# define PKCS7_R_INVALID_SIGNED_DATA_TYPE 155 -# define PKCS7_R_MIME_NO_CONTENT_TYPE 132 -# define PKCS7_R_MIME_PARSE_ERROR 133 -# define PKCS7_R_MIME_SIG_PARSE_ERROR 134 -# define PKCS7_R_MISSING_CERIPEND_INFO 103 -# define PKCS7_R_NO_CONTENT 122 -# define PKCS7_R_NO_CONTENT_TYPE 135 -# define PKCS7_R_NO_DEFAULT_DIGEST 151 -# define PKCS7_R_NO_MATCHING_DIGEST_TYPE_FOUND 154 -# define PKCS7_R_NO_MULTIPART_BODY_FAILURE 136 -# define PKCS7_R_NO_MULTIPART_BOUNDARY 137 -# define PKCS7_R_NO_RECIPIENT_MATCHES_CERTIFICATE 115 -# define PKCS7_R_NO_RECIPIENT_MATCHES_KEY 146 -# define PKCS7_R_NO_SIGNATURES_ON_DATA 123 -# define PKCS7_R_NO_SIGNERS 142 -# define PKCS7_R_NO_SIG_CONTENT_TYPE 138 -# define PKCS7_R_OPERATION_NOT_SUPPORTED_ON_THIS_TYPE 104 -# define PKCS7_R_PKCS7_ADD_SIGNATURE_ERROR 124 -# define PKCS7_R_PKCS7_ADD_SIGNER_ERROR 153 -# define PKCS7_R_PKCS7_DATAFINAL 126 -# define PKCS7_R_PKCS7_DATAFINAL_ERROR 125 -# define PKCS7_R_PKCS7_DATASIGN 145 -# define PKCS7_R_PKCS7_PARSE_ERROR 139 -# define PKCS7_R_PKCS7_SIG_PARSE_ERROR 140 -# define PKCS7_R_PRIVATE_KEY_DOES_NOT_MATCH_CERTIFICATE 127 -# define PKCS7_R_SIGNATURE_FAILURE 105 -# define PKCS7_R_SIGNER_CERTIFICATE_NOT_FOUND 128 -# define PKCS7_R_SIGNING_CTRL_FAILURE 147 -# define PKCS7_R_SIGNING_NOT_SUPPORTED_FOR_THIS_KEY_TYPE 148 -# define PKCS7_R_SIG_INVALID_MIME_TYPE 141 -# define PKCS7_R_SMIME_TEXT_ERROR 129 -# define PKCS7_R_UNABLE_TO_FIND_CERTIFICATE 106 -# define PKCS7_R_UNABLE_TO_FIND_MEM_BIO 107 -# define PKCS7_R_UNABLE_TO_FIND_MESSAGE_DIGEST 108 -# define PKCS7_R_UNKNOWN_DIGEST_TYPE 109 -# define PKCS7_R_UNKNOWN_OPERATION 110 -# define PKCS7_R_UNSUPPORTED_CIPHER_TYPE 111 -# define PKCS7_R_UNSUPPORTED_CONTENT_TYPE 112 -# define PKCS7_R_WRONG_CONTENT_TYPE 113 -# define PKCS7_R_WRONG_PKCS7_TYPE 114 - -#ifdef __cplusplus -} -#endif -#endif diff --git a/ext/openssl-win64/inc32/openssl/pqueue.h b/ext/openssl-win64/inc32/openssl/pqueue.h deleted file mode 100644 index d40d9c7d..00000000 --- a/ext/openssl-win64/inc32/openssl/pqueue.h +++ /dev/null @@ -1,99 +0,0 @@ -/* crypto/pqueue/pqueue.h */ -/* - * DTLS implementation written by Nagendra Modadugu - * (nagendra@cs.stanford.edu) for the OpenSSL project 2005. - */ -/* ==================================================================== - * Copyright (c) 1999-2005 The OpenSSL Project. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. All advertising materials mentioning features or use of this - * software must display the following acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" - * - * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * openssl-core@OpenSSL.org. - * - * 5. Products derived from this software may not be called "OpenSSL" - * nor may "OpenSSL" appear in their names without prior written - * permission of the OpenSSL Project. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" - * - * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY - * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * ==================================================================== - * - * This product includes cryptographic software written by Eric Young - * (eay@cryptsoft.com). This product includes software written by Tim - * Hudson (tjh@cryptsoft.com). - * - */ - -#ifndef HEADER_PQUEUE_H -# define HEADER_PQUEUE_H - -# include -# include -# include - -#ifdef __cplusplus -extern "C" { -#endif -typedef struct _pqueue *pqueue; - -typedef struct _pitem { - unsigned char priority[8]; /* 64-bit value in big-endian encoding */ - void *data; - struct _pitem *next; -} pitem; - -typedef struct _pitem *piterator; - -pitem *pitem_new(unsigned char *prio64be, void *data); -void pitem_free(pitem *item); - -pqueue pqueue_new(void); -void pqueue_free(pqueue pq); - -pitem *pqueue_insert(pqueue pq, pitem *item); -pitem *pqueue_peek(pqueue pq); -pitem *pqueue_pop(pqueue pq); -pitem *pqueue_find(pqueue pq, unsigned char *prio64be); -pitem *pqueue_iterator(pqueue pq); -pitem *pqueue_next(piterator *iter); - -void pqueue_print(pqueue pq); -int pqueue_size(pqueue pq); - -#ifdef __cplusplus -} -#endif -#endif /* ! HEADER_PQUEUE_H */ diff --git a/ext/openssl-win64/inc32/openssl/rsa.h b/ext/openssl-win64/inc32/openssl/rsa.h deleted file mode 100644 index d2ee3740..00000000 --- a/ext/openssl-win64/inc32/openssl/rsa.h +++ /dev/null @@ -1,664 +0,0 @@ -/* crypto/rsa/rsa.h */ -/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) - * All rights reserved. - * - * This package is an SSL implementation written - * by Eric Young (eay@cryptsoft.com). - * The implementation was written so as to conform with Netscapes SSL. - * - * This library is free for commercial and non-commercial use as long as - * the following conditions are aheared to. The following conditions - * apply to all code found in this distribution, be it the RC4, RSA, - * lhash, DES, etc., code; not just the SSL code. The SSL documentation - * included with this distribution is covered by the same copyright terms - * except that the holder is Tim Hudson (tjh@cryptsoft.com). - * - * Copyright remains Eric Young's, and as such any Copyright notices in - * the code are not to be removed. - * If this package is used in a product, Eric Young should be given attribution - * as the author of the parts of the library used. - * This can be in the form of a textual message at program startup or - * in documentation (online or textual) provided with the package. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * "This product includes cryptographic software written by - * Eric Young (eay@cryptsoft.com)" - * The word 'cryptographic' can be left out if the rouines from the library - * being used are not cryptographic related :-). - * 4. If you include any Windows specific code (or a derivative thereof) from - * the apps directory (application code) you must include an acknowledgement: - * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" - * - * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * The licence and distribution terms for any publically available version or - * derivative of this code cannot be changed. i.e. this code cannot simply be - * copied and put under another distribution licence - * [including the GNU Public Licence.] - */ - -#ifndef HEADER_RSA_H -# define HEADER_RSA_H - -# include - -# ifndef OPENSSL_NO_BIO -# include -# endif -# include -# include -# ifndef OPENSSL_NO_DEPRECATED -# include -# endif - -# ifdef OPENSSL_NO_RSA -# error RSA is disabled. -# endif - -#ifdef __cplusplus -extern "C" { -#endif - -/* Declared already in ossl_typ.h */ -/* typedef struct rsa_st RSA; */ -/* typedef struct rsa_meth_st RSA_METHOD; */ - -struct rsa_meth_st { - const char *name; - int (*rsa_pub_enc) (int flen, const unsigned char *from, - unsigned char *to, RSA *rsa, int padding); - int (*rsa_pub_dec) (int flen, const unsigned char *from, - unsigned char *to, RSA *rsa, int padding); - int (*rsa_priv_enc) (int flen, const unsigned char *from, - unsigned char *to, RSA *rsa, int padding); - int (*rsa_priv_dec) (int flen, const unsigned char *from, - unsigned char *to, RSA *rsa, int padding); - /* Can be null */ - int (*rsa_mod_exp) (BIGNUM *r0, const BIGNUM *I, RSA *rsa, BN_CTX *ctx); - /* Can be null */ - int (*bn_mod_exp) (BIGNUM *r, const BIGNUM *a, const BIGNUM *p, - const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx); - /* called at new */ - int (*init) (RSA *rsa); - /* called at free */ - int (*finish) (RSA *rsa); - /* RSA_METHOD_FLAG_* things */ - int flags; - /* may be needed! */ - char *app_data; - /* - * New sign and verify functions: some libraries don't allow arbitrary - * data to be signed/verified: this allows them to be used. Note: for - * this to work the RSA_public_decrypt() and RSA_private_encrypt() should - * *NOT* be used RSA_sign(), RSA_verify() should be used instead. Note: - * for backwards compatibility this functionality is only enabled if the - * RSA_FLAG_SIGN_VER option is set in 'flags'. - */ - int (*rsa_sign) (int type, - const unsigned char *m, unsigned int m_length, - unsigned char *sigret, unsigned int *siglen, - const RSA *rsa); - int (*rsa_verify) (int dtype, const unsigned char *m, - unsigned int m_length, const unsigned char *sigbuf, - unsigned int siglen, const RSA *rsa); - /* - * If this callback is NULL, the builtin software RSA key-gen will be - * used. This is for behavioural compatibility whilst the code gets - * rewired, but one day it would be nice to assume there are no such - * things as "builtin software" implementations. - */ - int (*rsa_keygen) (RSA *rsa, int bits, BIGNUM *e, BN_GENCB *cb); -}; - -struct rsa_st { - /* - * The first parameter is used to pickup errors where this is passed - * instead of aEVP_PKEY, it is set to 0 - */ - int pad; - long version; - const RSA_METHOD *meth; - /* functional reference if 'meth' is ENGINE-provided */ - ENGINE *engine; - BIGNUM *n; - BIGNUM *e; - BIGNUM *d; - BIGNUM *p; - BIGNUM *q; - BIGNUM *dmp1; - BIGNUM *dmq1; - BIGNUM *iqmp; - /* be careful using this if the RSA structure is shared */ - CRYPTO_EX_DATA ex_data; - int references; - int flags; - /* Used to cache montgomery values */ - BN_MONT_CTX *_method_mod_n; - BN_MONT_CTX *_method_mod_p; - BN_MONT_CTX *_method_mod_q; - /* - * all BIGNUM values are actually in the following data, if it is not - * NULL - */ - char *bignum_data; - BN_BLINDING *blinding; - BN_BLINDING *mt_blinding; -}; - -# ifndef OPENSSL_RSA_MAX_MODULUS_BITS -# define OPENSSL_RSA_MAX_MODULUS_BITS 16384 -# endif - -# ifndef OPENSSL_RSA_SMALL_MODULUS_BITS -# define OPENSSL_RSA_SMALL_MODULUS_BITS 3072 -# endif -# ifndef OPENSSL_RSA_MAX_PUBEXP_BITS - -/* exponent limit enforced for "large" modulus only */ -# define OPENSSL_RSA_MAX_PUBEXP_BITS 64 -# endif - -# define RSA_3 0x3L -# define RSA_F4 0x10001L - -# define RSA_METHOD_FLAG_NO_CHECK 0x0001/* don't check pub/private - * match */ - -# define RSA_FLAG_CACHE_PUBLIC 0x0002 -# define RSA_FLAG_CACHE_PRIVATE 0x0004 -# define RSA_FLAG_BLINDING 0x0008 -# define RSA_FLAG_THREAD_SAFE 0x0010 -/* - * This flag means the private key operations will be handled by rsa_mod_exp - * and that they do not depend on the private key components being present: - * for example a key stored in external hardware. Without this flag - * bn_mod_exp gets called when private key components are absent. - */ -# define RSA_FLAG_EXT_PKEY 0x0020 - -/* - * This flag in the RSA_METHOD enables the new rsa_sign, rsa_verify - * functions. - */ -# define RSA_FLAG_SIGN_VER 0x0040 - -/* - * new with 0.9.6j and 0.9.7b; the built-in - * RSA implementation now uses blinding by - * default (ignoring RSA_FLAG_BLINDING), - * but other engines might not need it - */ -# define RSA_FLAG_NO_BLINDING 0x0080 -/* - * new with 0.9.8f; the built-in RSA - * implementation now uses constant time - * operations by default in private key operations, - * e.g., constant time modular exponentiation, - * modular inverse without leaking branches, - * division without leaking branches. This - * flag disables these constant time - * operations and results in faster RSA - * private key operations. - */ -# define RSA_FLAG_NO_CONSTTIME 0x0100 -# ifdef OPENSSL_USE_DEPRECATED -/* deprecated name for the flag*/ -/* - * new with 0.9.7h; the built-in RSA - * implementation now uses constant time - * modular exponentiation for secret exponents - * by default. This flag causes the - * faster variable sliding window method to - * be used for all exponents. - */ -# define RSA_FLAG_NO_EXP_CONSTTIME RSA_FLAG_NO_CONSTTIME -# endif - -# define EVP_PKEY_CTX_set_rsa_padding(ctx, pad) \ - EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_RSA, -1, EVP_PKEY_CTRL_RSA_PADDING, \ - pad, NULL) - -# define EVP_PKEY_CTX_get_rsa_padding(ctx, ppad) \ - EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_RSA, -1, \ - EVP_PKEY_CTRL_GET_RSA_PADDING, 0, ppad) - -# define EVP_PKEY_CTX_set_rsa_pss_saltlen(ctx, len) \ - EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_RSA, \ - (EVP_PKEY_OP_SIGN|EVP_PKEY_OP_VERIFY), \ - EVP_PKEY_CTRL_RSA_PSS_SALTLEN, \ - len, NULL) - -# define EVP_PKEY_CTX_get_rsa_pss_saltlen(ctx, plen) \ - EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_RSA, \ - (EVP_PKEY_OP_SIGN|EVP_PKEY_OP_VERIFY), \ - EVP_PKEY_CTRL_GET_RSA_PSS_SALTLEN, \ - 0, plen) - -# define EVP_PKEY_CTX_set_rsa_keygen_bits(ctx, bits) \ - EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_RSA, EVP_PKEY_OP_KEYGEN, \ - EVP_PKEY_CTRL_RSA_KEYGEN_BITS, bits, NULL) - -# define EVP_PKEY_CTX_set_rsa_keygen_pubexp(ctx, pubexp) \ - EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_RSA, EVP_PKEY_OP_KEYGEN, \ - EVP_PKEY_CTRL_RSA_KEYGEN_PUBEXP, 0, pubexp) - -# define EVP_PKEY_CTX_set_rsa_mgf1_md(ctx, md) \ - EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_RSA, \ - EVP_PKEY_OP_TYPE_SIG | EVP_PKEY_OP_TYPE_CRYPT, \ - EVP_PKEY_CTRL_RSA_MGF1_MD, 0, (void *)md) - -# define EVP_PKEY_CTX_set_rsa_oaep_md(ctx, md) \ - EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_RSA, EVP_PKEY_OP_TYPE_CRYPT, \ - EVP_PKEY_CTRL_RSA_OAEP_MD, 0, (void *)md) - -# define EVP_PKEY_CTX_get_rsa_mgf1_md(ctx, pmd) \ - EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_RSA, \ - EVP_PKEY_OP_TYPE_SIG | EVP_PKEY_OP_TYPE_CRYPT, \ - EVP_PKEY_CTRL_GET_RSA_MGF1_MD, 0, (void *)pmd) - -# define EVP_PKEY_CTX_get_rsa_oaep_md(ctx, pmd) \ - EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_RSA, EVP_PKEY_OP_TYPE_CRYPT, \ - EVP_PKEY_CTRL_GET_RSA_OAEP_MD, 0, (void *)pmd) - -# define EVP_PKEY_CTX_set0_rsa_oaep_label(ctx, l, llen) \ - EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_RSA, EVP_PKEY_OP_TYPE_CRYPT, \ - EVP_PKEY_CTRL_RSA_OAEP_LABEL, llen, (void *)l) - -# define EVP_PKEY_CTX_get0_rsa_oaep_label(ctx, l) \ - EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_RSA, EVP_PKEY_OP_TYPE_CRYPT, \ - EVP_PKEY_CTRL_GET_RSA_OAEP_LABEL, 0, (void *)l) - -# define EVP_PKEY_CTRL_RSA_PADDING (EVP_PKEY_ALG_CTRL + 1) -# define EVP_PKEY_CTRL_RSA_PSS_SALTLEN (EVP_PKEY_ALG_CTRL + 2) - -# define EVP_PKEY_CTRL_RSA_KEYGEN_BITS (EVP_PKEY_ALG_CTRL + 3) -# define EVP_PKEY_CTRL_RSA_KEYGEN_PUBEXP (EVP_PKEY_ALG_CTRL + 4) -# define EVP_PKEY_CTRL_RSA_MGF1_MD (EVP_PKEY_ALG_CTRL + 5) - -# define EVP_PKEY_CTRL_GET_RSA_PADDING (EVP_PKEY_ALG_CTRL + 6) -# define EVP_PKEY_CTRL_GET_RSA_PSS_SALTLEN (EVP_PKEY_ALG_CTRL + 7) -# define EVP_PKEY_CTRL_GET_RSA_MGF1_MD (EVP_PKEY_ALG_CTRL + 8) - -# define EVP_PKEY_CTRL_RSA_OAEP_MD (EVP_PKEY_ALG_CTRL + 9) -# define EVP_PKEY_CTRL_RSA_OAEP_LABEL (EVP_PKEY_ALG_CTRL + 10) - -# define EVP_PKEY_CTRL_GET_RSA_OAEP_MD (EVP_PKEY_ALG_CTRL + 11) -# define EVP_PKEY_CTRL_GET_RSA_OAEP_LABEL (EVP_PKEY_ALG_CTRL + 12) - -# define RSA_PKCS1_PADDING 1 -# define RSA_SSLV23_PADDING 2 -# define RSA_NO_PADDING 3 -# define RSA_PKCS1_OAEP_PADDING 4 -# define RSA_X931_PADDING 5 -/* EVP_PKEY_ only */ -# define RSA_PKCS1_PSS_PADDING 6 - -# define RSA_PKCS1_PADDING_SIZE 11 - -# define RSA_set_app_data(s,arg) RSA_set_ex_data(s,0,arg) -# define RSA_get_app_data(s) RSA_get_ex_data(s,0) - -RSA *RSA_new(void); -RSA *RSA_new_method(ENGINE *engine); -int RSA_size(const RSA *rsa); - -/* Deprecated version */ -# ifndef OPENSSL_NO_DEPRECATED -RSA *RSA_generate_key(int bits, unsigned long e, void - (*callback) (int, int, void *), void *cb_arg); -# endif /* !defined(OPENSSL_NO_DEPRECATED) */ - -/* New version */ -int RSA_generate_key_ex(RSA *rsa, int bits, BIGNUM *e, BN_GENCB *cb); - -int RSA_check_key(const RSA *); - /* next 4 return -1 on error */ -int RSA_public_encrypt(int flen, const unsigned char *from, - unsigned char *to, RSA *rsa, int padding); -int RSA_private_encrypt(int flen, const unsigned char *from, - unsigned char *to, RSA *rsa, int padding); -int RSA_public_decrypt(int flen, const unsigned char *from, - unsigned char *to, RSA *rsa, int padding); -int RSA_private_decrypt(int flen, const unsigned char *from, - unsigned char *to, RSA *rsa, int padding); -void RSA_free(RSA *r); -/* "up" the RSA object's reference count */ -int RSA_up_ref(RSA *r); - -int RSA_flags(const RSA *r); - -void RSA_set_default_method(const RSA_METHOD *meth); -const RSA_METHOD *RSA_get_default_method(void); -const RSA_METHOD *RSA_get_method(const RSA *rsa); -int RSA_set_method(RSA *rsa, const RSA_METHOD *meth); - -/* This function needs the memory locking malloc callbacks to be installed */ -int RSA_memory_lock(RSA *r); - -/* these are the actual SSLeay RSA functions */ -const RSA_METHOD *RSA_PKCS1_SSLeay(void); - -const RSA_METHOD *RSA_null_method(void); - -DECLARE_ASN1_ENCODE_FUNCTIONS_const(RSA, RSAPublicKey) -DECLARE_ASN1_ENCODE_FUNCTIONS_const(RSA, RSAPrivateKey) - -typedef struct rsa_pss_params_st { - X509_ALGOR *hashAlgorithm; - X509_ALGOR *maskGenAlgorithm; - ASN1_INTEGER *saltLength; - ASN1_INTEGER *trailerField; -} RSA_PSS_PARAMS; - -DECLARE_ASN1_FUNCTIONS(RSA_PSS_PARAMS) - -typedef struct rsa_oaep_params_st { - X509_ALGOR *hashFunc; - X509_ALGOR *maskGenFunc; - X509_ALGOR *pSourceFunc; -} RSA_OAEP_PARAMS; - -DECLARE_ASN1_FUNCTIONS(RSA_OAEP_PARAMS) - -# ifndef OPENSSL_NO_FP_API -int RSA_print_fp(FILE *fp, const RSA *r, int offset); -# endif - -# ifndef OPENSSL_NO_BIO -int RSA_print(BIO *bp, const RSA *r, int offset); -# endif - -# ifndef OPENSSL_NO_RC4 -int i2d_RSA_NET(const RSA *a, unsigned char **pp, - int (*cb) (char *buf, int len, const char *prompt, - int verify), int sgckey); -RSA *d2i_RSA_NET(RSA **a, const unsigned char **pp, long length, - int (*cb) (char *buf, int len, const char *prompt, - int verify), int sgckey); - -int i2d_Netscape_RSA(const RSA *a, unsigned char **pp, - int (*cb) (char *buf, int len, const char *prompt, - int verify)); -RSA *d2i_Netscape_RSA(RSA **a, const unsigned char **pp, long length, - int (*cb) (char *buf, int len, const char *prompt, - int verify)); -# endif - -/* - * The following 2 functions sign and verify a X509_SIG ASN1 object inside - * PKCS#1 padded RSA encryption - */ -int RSA_sign(int type, const unsigned char *m, unsigned int m_length, - unsigned char *sigret, unsigned int *siglen, RSA *rsa); -int RSA_verify(int type, const unsigned char *m, unsigned int m_length, - const unsigned char *sigbuf, unsigned int siglen, RSA *rsa); - -/* - * The following 2 function sign and verify a ASN1_OCTET_STRING object inside - * PKCS#1 padded RSA encryption - */ -int RSA_sign_ASN1_OCTET_STRING(int type, - const unsigned char *m, unsigned int m_length, - unsigned char *sigret, unsigned int *siglen, - RSA *rsa); -int RSA_verify_ASN1_OCTET_STRING(int type, const unsigned char *m, - unsigned int m_length, unsigned char *sigbuf, - unsigned int siglen, RSA *rsa); - -int RSA_blinding_on(RSA *rsa, BN_CTX *ctx); -void RSA_blinding_off(RSA *rsa); -BN_BLINDING *RSA_setup_blinding(RSA *rsa, BN_CTX *ctx); - -int RSA_padding_add_PKCS1_type_1(unsigned char *to, int tlen, - const unsigned char *f, int fl); -int RSA_padding_check_PKCS1_type_1(unsigned char *to, int tlen, - const unsigned char *f, int fl, - int rsa_len); -int RSA_padding_add_PKCS1_type_2(unsigned char *to, int tlen, - const unsigned char *f, int fl); -int RSA_padding_check_PKCS1_type_2(unsigned char *to, int tlen, - const unsigned char *f, int fl, - int rsa_len); -int PKCS1_MGF1(unsigned char *mask, long len, const unsigned char *seed, - long seedlen, const EVP_MD *dgst); -int RSA_padding_add_PKCS1_OAEP(unsigned char *to, int tlen, - const unsigned char *f, int fl, - const unsigned char *p, int pl); -int RSA_padding_check_PKCS1_OAEP(unsigned char *to, int tlen, - const unsigned char *f, int fl, int rsa_len, - const unsigned char *p, int pl); -int RSA_padding_add_PKCS1_OAEP_mgf1(unsigned char *to, int tlen, - const unsigned char *from, int flen, - const unsigned char *param, int plen, - const EVP_MD *md, const EVP_MD *mgf1md); -int RSA_padding_check_PKCS1_OAEP_mgf1(unsigned char *to, int tlen, - const unsigned char *from, int flen, - int num, const unsigned char *param, - int plen, const EVP_MD *md, - const EVP_MD *mgf1md); -int RSA_padding_add_SSLv23(unsigned char *to, int tlen, - const unsigned char *f, int fl); -int RSA_padding_check_SSLv23(unsigned char *to, int tlen, - const unsigned char *f, int fl, int rsa_len); -int RSA_padding_add_none(unsigned char *to, int tlen, const unsigned char *f, - int fl); -int RSA_padding_check_none(unsigned char *to, int tlen, - const unsigned char *f, int fl, int rsa_len); -int RSA_padding_add_X931(unsigned char *to, int tlen, const unsigned char *f, - int fl); -int RSA_padding_check_X931(unsigned char *to, int tlen, - const unsigned char *f, int fl, int rsa_len); -int RSA_X931_hash_id(int nid); - -int RSA_verify_PKCS1_PSS(RSA *rsa, const unsigned char *mHash, - const EVP_MD *Hash, const unsigned char *EM, - int sLen); -int RSA_padding_add_PKCS1_PSS(RSA *rsa, unsigned char *EM, - const unsigned char *mHash, const EVP_MD *Hash, - int sLen); - -int RSA_verify_PKCS1_PSS_mgf1(RSA *rsa, const unsigned char *mHash, - const EVP_MD *Hash, const EVP_MD *mgf1Hash, - const unsigned char *EM, int sLen); - -int RSA_padding_add_PKCS1_PSS_mgf1(RSA *rsa, unsigned char *EM, - const unsigned char *mHash, - const EVP_MD *Hash, const EVP_MD *mgf1Hash, - int sLen); - -int RSA_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new *new_func, - CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func); -int RSA_set_ex_data(RSA *r, int idx, void *arg); -void *RSA_get_ex_data(const RSA *r, int idx); - -RSA *RSAPublicKey_dup(RSA *rsa); -RSA *RSAPrivateKey_dup(RSA *rsa); - -/* - * If this flag is set the RSA method is FIPS compliant and can be used in - * FIPS mode. This is set in the validated module method. If an application - * sets this flag in its own methods it is its responsibility to ensure the - * result is compliant. - */ - -# define RSA_FLAG_FIPS_METHOD 0x0400 - -/* - * If this flag is set the operations normally disabled in FIPS mode are - * permitted it is then the applications responsibility to ensure that the - * usage is compliant. - */ - -# define RSA_FLAG_NON_FIPS_ALLOW 0x0400 -/* - * Application has decided PRNG is good enough to generate a key: don't - * check. - */ -# define RSA_FLAG_CHECKED 0x0800 - -/* BEGIN ERROR CODES */ -/* - * The following lines are auto generated by the script mkerr.pl. Any changes - * made after this point may be overwritten when the script is next run. - */ -void ERR_load_RSA_strings(void); - -/* Error codes for the RSA functions. */ - -/* Function codes. */ -# define RSA_F_CHECK_PADDING_MD 140 -# define RSA_F_DO_RSA_PRINT 146 -# define RSA_F_INT_RSA_VERIFY 145 -# define RSA_F_MEMORY_LOCK 100 -# define RSA_F_OLD_RSA_PRIV_DECODE 147 -# define RSA_F_PKEY_RSA_CTRL 143 -# define RSA_F_PKEY_RSA_CTRL_STR 144 -# define RSA_F_PKEY_RSA_SIGN 142 -# define RSA_F_PKEY_RSA_VERIFY 154 -# define RSA_F_PKEY_RSA_VERIFYRECOVER 141 -# define RSA_F_RSA_ALGOR_TO_MD 157 -# define RSA_F_RSA_BUILTIN_KEYGEN 129 -# define RSA_F_RSA_CHECK_KEY 123 -# define RSA_F_RSA_CMS_DECRYPT 158 -# define RSA_F_RSA_EAY_PRIVATE_DECRYPT 101 -# define RSA_F_RSA_EAY_PRIVATE_ENCRYPT 102 -# define RSA_F_RSA_EAY_PUBLIC_DECRYPT 103 -# define RSA_F_RSA_EAY_PUBLIC_ENCRYPT 104 -# define RSA_F_RSA_GENERATE_KEY 105 -# define RSA_F_RSA_GENERATE_KEY_EX 155 -# define RSA_F_RSA_ITEM_VERIFY 156 -# define RSA_F_RSA_MEMORY_LOCK 130 -# define RSA_F_RSA_MGF1_TO_MD 159 -# define RSA_F_RSA_NEW_METHOD 106 -# define RSA_F_RSA_NULL 124 -# define RSA_F_RSA_NULL_MOD_EXP 131 -# define RSA_F_RSA_NULL_PRIVATE_DECRYPT 132 -# define RSA_F_RSA_NULL_PRIVATE_ENCRYPT 133 -# define RSA_F_RSA_NULL_PUBLIC_DECRYPT 134 -# define RSA_F_RSA_NULL_PUBLIC_ENCRYPT 135 -# define RSA_F_RSA_PADDING_ADD_NONE 107 -# define RSA_F_RSA_PADDING_ADD_PKCS1_OAEP 121 -# define RSA_F_RSA_PADDING_ADD_PKCS1_OAEP_MGF1 160 -# define RSA_F_RSA_PADDING_ADD_PKCS1_PSS 125 -# define RSA_F_RSA_PADDING_ADD_PKCS1_PSS_MGF1 148 -# define RSA_F_RSA_PADDING_ADD_PKCS1_TYPE_1 108 -# define RSA_F_RSA_PADDING_ADD_PKCS1_TYPE_2 109 -# define RSA_F_RSA_PADDING_ADD_SSLV23 110 -# define RSA_F_RSA_PADDING_ADD_X931 127 -# define RSA_F_RSA_PADDING_CHECK_NONE 111 -# define RSA_F_RSA_PADDING_CHECK_PKCS1_OAEP 122 -# define RSA_F_RSA_PADDING_CHECK_PKCS1_OAEP_MGF1 161 -# define RSA_F_RSA_PADDING_CHECK_PKCS1_TYPE_1 112 -# define RSA_F_RSA_PADDING_CHECK_PKCS1_TYPE_2 113 -# define RSA_F_RSA_PADDING_CHECK_SSLV23 114 -# define RSA_F_RSA_PADDING_CHECK_X931 128 -# define RSA_F_RSA_PRINT 115 -# define RSA_F_RSA_PRINT_FP 116 -# define RSA_F_RSA_PRIVATE_DECRYPT 150 -# define RSA_F_RSA_PRIVATE_ENCRYPT 151 -# define RSA_F_RSA_PRIV_DECODE 137 -# define RSA_F_RSA_PRIV_ENCODE 138 -# define RSA_F_RSA_PSS_TO_CTX 162 -# define RSA_F_RSA_PUBLIC_DECRYPT 152 -# define RSA_F_RSA_PUBLIC_ENCRYPT 153 -# define RSA_F_RSA_PUB_DECODE 139 -# define RSA_F_RSA_SETUP_BLINDING 136 -# define RSA_F_RSA_SIGN 117 -# define RSA_F_RSA_SIGN_ASN1_OCTET_STRING 118 -# define RSA_F_RSA_VERIFY 119 -# define RSA_F_RSA_VERIFY_ASN1_OCTET_STRING 120 -# define RSA_F_RSA_VERIFY_PKCS1_PSS 126 -# define RSA_F_RSA_VERIFY_PKCS1_PSS_MGF1 149 - -/* Reason codes. */ -# define RSA_R_ALGORITHM_MISMATCH 100 -# define RSA_R_BAD_E_VALUE 101 -# define RSA_R_BAD_FIXED_HEADER_DECRYPT 102 -# define RSA_R_BAD_PAD_BYTE_COUNT 103 -# define RSA_R_BAD_SIGNATURE 104 -# define RSA_R_BLOCK_TYPE_IS_NOT_01 106 -# define RSA_R_BLOCK_TYPE_IS_NOT_02 107 -# define RSA_R_DATA_GREATER_THAN_MOD_LEN 108 -# define RSA_R_DATA_TOO_LARGE 109 -# define RSA_R_DATA_TOO_LARGE_FOR_KEY_SIZE 110 -# define RSA_R_DATA_TOO_LARGE_FOR_MODULUS 132 -# define RSA_R_DATA_TOO_SMALL 111 -# define RSA_R_DATA_TOO_SMALL_FOR_KEY_SIZE 122 -# define RSA_R_DIGEST_DOES_NOT_MATCH 166 -# define RSA_R_DIGEST_TOO_BIG_FOR_RSA_KEY 112 -# define RSA_R_DMP1_NOT_CONGRUENT_TO_D 124 -# define RSA_R_DMQ1_NOT_CONGRUENT_TO_D 125 -# define RSA_R_D_E_NOT_CONGRUENT_TO_1 123 -# define RSA_R_FIRST_OCTET_INVALID 133 -# define RSA_R_ILLEGAL_OR_UNSUPPORTED_PADDING_MODE 144 -# define RSA_R_INVALID_DIGEST 160 -# define RSA_R_INVALID_DIGEST_LENGTH 143 -# define RSA_R_INVALID_HEADER 137 -# define RSA_R_INVALID_KEYBITS 145 -# define RSA_R_INVALID_LABEL 161 -# define RSA_R_INVALID_MESSAGE_LENGTH 131 -# define RSA_R_INVALID_MGF1_MD 156 -# define RSA_R_INVALID_OAEP_PARAMETERS 162 -# define RSA_R_INVALID_PADDING 138 -# define RSA_R_INVALID_PADDING_MODE 141 -# define RSA_R_INVALID_PSS_PARAMETERS 149 -# define RSA_R_INVALID_PSS_SALTLEN 146 -# define RSA_R_INVALID_SALT_LENGTH 150 -# define RSA_R_INVALID_TRAILER 139 -# define RSA_R_INVALID_X931_DIGEST 142 -# define RSA_R_IQMP_NOT_INVERSE_OF_Q 126 -# define RSA_R_KEY_SIZE_TOO_SMALL 120 -# define RSA_R_LAST_OCTET_INVALID 134 -# define RSA_R_MODULUS_TOO_LARGE 105 -# define RSA_R_NON_FIPS_RSA_METHOD 157 -# define RSA_R_NO_PUBLIC_EXPONENT 140 -# define RSA_R_NULL_BEFORE_BLOCK_MISSING 113 -# define RSA_R_N_DOES_NOT_EQUAL_P_Q 127 -# define RSA_R_OAEP_DECODING_ERROR 121 -# define RSA_R_OPERATION_NOT_ALLOWED_IN_FIPS_MODE 158 -# define RSA_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE 148 -# define RSA_R_PADDING_CHECK_FAILED 114 -# define RSA_R_PKCS_DECODING_ERROR 159 -# define RSA_R_P_NOT_PRIME 128 -# define RSA_R_Q_NOT_PRIME 129 -# define RSA_R_RSA_OPERATIONS_NOT_SUPPORTED 130 -# define RSA_R_SLEN_CHECK_FAILED 136 -# define RSA_R_SLEN_RECOVERY_FAILED 135 -# define RSA_R_SSLV3_ROLLBACK_ATTACK 115 -# define RSA_R_THE_ASN1_OBJECT_IDENTIFIER_IS_NOT_KNOWN_FOR_THIS_MD 116 -# define RSA_R_UNKNOWN_ALGORITHM_TYPE 117 -# define RSA_R_UNKNOWN_DIGEST 163 -# define RSA_R_UNKNOWN_MASK_DIGEST 151 -# define RSA_R_UNKNOWN_PADDING_TYPE 118 -# define RSA_R_UNKNOWN_PSS_DIGEST 152 -# define RSA_R_UNSUPPORTED_ENCRYPTION_TYPE 164 -# define RSA_R_UNSUPPORTED_LABEL_SOURCE 165 -# define RSA_R_UNSUPPORTED_MASK_ALGORITHM 153 -# define RSA_R_UNSUPPORTED_MASK_PARAMETER 154 -# define RSA_R_UNSUPPORTED_SIGNATURE_TYPE 155 -# define RSA_R_VALUE_MISSING 147 -# define RSA_R_WRONG_SIGNATURE_LENGTH 119 - -#ifdef __cplusplus -} -#endif -#endif diff --git a/ext/openssl-win64/inc32/openssl/safestack.h b/ext/openssl-win64/inc32/openssl/safestack.h deleted file mode 100644 index 1d4f87ea..00000000 --- a/ext/openssl-win64/inc32/openssl/safestack.h +++ /dev/null @@ -1,2672 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The OpenSSL Project. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. All advertising materials mentioning features or use of this - * software must display the following acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" - * - * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * openssl-core@openssl.org. - * - * 5. Products derived from this software may not be called "OpenSSL" - * nor may "OpenSSL" appear in their names without prior written - * permission of the OpenSSL Project. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit (http://www.openssl.org/)" - * - * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY - * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * ==================================================================== - * - * This product includes cryptographic software written by Eric Young - * (eay@cryptsoft.com). This product includes software written by Tim - * Hudson (tjh@cryptsoft.com). - * - */ - -#ifndef HEADER_SAFESTACK_H -# define HEADER_SAFESTACK_H - -# include - -#ifdef __cplusplus -extern "C" { -#endif - -# ifndef CHECKED_PTR_OF -# define CHECKED_PTR_OF(type, p) \ - ((void*) (1 ? p : (type*)0)) -# endif - -/* - * In C++ we get problems because an explicit cast is needed from (void *) we - * use CHECKED_STACK_OF to ensure the correct type is passed in the macros - * below. - */ - -# define CHECKED_STACK_OF(type, p) \ - ((_STACK*) (1 ? p : (STACK_OF(type)*)0)) - -# define CHECKED_SK_COPY_FUNC(type, p) \ - ((void *(*)(void *)) ((1 ? p : (type *(*)(const type *))0))) - -# define CHECKED_SK_FREE_FUNC(type, p) \ - ((void (*)(void *)) ((1 ? p : (void (*)(type *))0))) - -# define CHECKED_SK_CMP_FUNC(type, p) \ - ((int (*)(const void *, const void *)) \ - ((1 ? p : (int (*)(const type * const *, const type * const *))0))) - -# define STACK_OF(type) struct stack_st_##type -# define PREDECLARE_STACK_OF(type) STACK_OF(type); - -# define DECLARE_STACK_OF(type) \ -STACK_OF(type) \ - { \ - _STACK stack; \ - }; -# define DECLARE_SPECIAL_STACK_OF(type, type2) \ -STACK_OF(type) \ - { \ - _STACK stack; \ - }; - -/* nada (obsolete in new safestack approach)*/ -# define IMPLEMENT_STACK_OF(type) - -/*- - * Strings are special: normally an lhash entry will point to a single - * (somewhat) mutable object. In the case of strings: - * - * a) Instead of a single char, there is an array of chars, NUL-terminated. - * b) The string may have be immutable. - * - * So, they need their own declarations. Especially important for - * type-checking tools, such as Deputy. - * - * In practice, however, it appears to be hard to have a const - * string. For now, I'm settling for dealing with the fact it is a - * string at all. - */ -typedef char *OPENSSL_STRING; - -typedef const char *OPENSSL_CSTRING; - -/* - * Confusingly, LHASH_OF(STRING) deals with char ** throughout, but - * STACK_OF(STRING) is really more like STACK_OF(char), only, as mentioned - * above, instead of a single char each entry is a NUL-terminated array of - * chars. So, we have to implement STRING specially for STACK_OF. This is - * dealt with in the autogenerated macros below. - */ - -DECLARE_SPECIAL_STACK_OF(OPENSSL_STRING, char) - -/* - * Similarly, we sometimes use a block of characters, NOT nul-terminated. - * These should also be distinguished from "normal" stacks. - */ -typedef void *OPENSSL_BLOCK; -DECLARE_SPECIAL_STACK_OF(OPENSSL_BLOCK, void) - -/* - * SKM_sk_... stack macros are internal to safestack.h: never use them - * directly, use sk__... instead - */ -# define SKM_sk_new(type, cmp) \ - ((STACK_OF(type) *)sk_new(CHECKED_SK_CMP_FUNC(type, cmp))) -# define SKM_sk_new_null(type) \ - ((STACK_OF(type) *)sk_new_null()) -# define SKM_sk_free(type, st) \ - sk_free(CHECKED_STACK_OF(type, st)) -# define SKM_sk_num(type, st) \ - sk_num(CHECKED_STACK_OF(type, st)) -# define SKM_sk_value(type, st,i) \ - ((type *)sk_value(CHECKED_STACK_OF(type, st), i)) -# define SKM_sk_set(type, st,i,val) \ - sk_set(CHECKED_STACK_OF(type, st), i, CHECKED_PTR_OF(type, val)) -# define SKM_sk_zero(type, st) \ - sk_zero(CHECKED_STACK_OF(type, st)) -# define SKM_sk_push(type, st, val) \ - sk_push(CHECKED_STACK_OF(type, st), CHECKED_PTR_OF(type, val)) -# define SKM_sk_unshift(type, st, val) \ - sk_unshift(CHECKED_STACK_OF(type, st), CHECKED_PTR_OF(type, val)) -# define SKM_sk_find(type, st, val) \ - sk_find(CHECKED_STACK_OF(type, st), CHECKED_PTR_OF(type, val)) -# define SKM_sk_find_ex(type, st, val) \ - sk_find_ex(CHECKED_STACK_OF(type, st), \ - CHECKED_PTR_OF(type, val)) -# define SKM_sk_delete(type, st, i) \ - (type *)sk_delete(CHECKED_STACK_OF(type, st), i) -# define SKM_sk_delete_ptr(type, st, ptr) \ - (type *)sk_delete_ptr(CHECKED_STACK_OF(type, st), CHECKED_PTR_OF(type, ptr)) -# define SKM_sk_insert(type, st,val, i) \ - sk_insert(CHECKED_STACK_OF(type, st), CHECKED_PTR_OF(type, val), i) -# define SKM_sk_set_cmp_func(type, st, cmp) \ - ((int (*)(const type * const *,const type * const *)) \ - sk_set_cmp_func(CHECKED_STACK_OF(type, st), CHECKED_SK_CMP_FUNC(type, cmp))) -# define SKM_sk_dup(type, st) \ - (STACK_OF(type) *)sk_dup(CHECKED_STACK_OF(type, st)) -# define SKM_sk_pop_free(type, st, free_func) \ - sk_pop_free(CHECKED_STACK_OF(type, st), CHECKED_SK_FREE_FUNC(type, free_func)) -# define SKM_sk_deep_copy(type, st, copy_func, free_func) \ - (STACK_OF(type) *)sk_deep_copy(CHECKED_STACK_OF(type, st), CHECKED_SK_COPY_FUNC(type, copy_func), CHECKED_SK_FREE_FUNC(type, free_func)) -# define SKM_sk_shift(type, st) \ - (type *)sk_shift(CHECKED_STACK_OF(type, st)) -# define SKM_sk_pop(type, st) \ - (type *)sk_pop(CHECKED_STACK_OF(type, st)) -# define SKM_sk_sort(type, st) \ - sk_sort(CHECKED_STACK_OF(type, st)) -# define SKM_sk_is_sorted(type, st) \ - sk_is_sorted(CHECKED_STACK_OF(type, st)) -# define SKM_ASN1_SET_OF_d2i(type, st, pp, length, d2i_func, free_func, ex_tag, ex_class) \ - (STACK_OF(type) *)d2i_ASN1_SET( \ - (STACK_OF(OPENSSL_BLOCK) **)CHECKED_PTR_OF(STACK_OF(type)*, st), \ - pp, length, \ - CHECKED_D2I_OF(type, d2i_func), \ - CHECKED_SK_FREE_FUNC(type, free_func), \ - ex_tag, ex_class) -# define SKM_ASN1_SET_OF_i2d(type, st, pp, i2d_func, ex_tag, ex_class, is_set) \ - i2d_ASN1_SET((STACK_OF(OPENSSL_BLOCK) *)CHECKED_STACK_OF(type, st), pp, \ - CHECKED_I2D_OF(type, i2d_func), \ - ex_tag, ex_class, is_set) -# define SKM_ASN1_seq_pack(type, st, i2d_func, buf, len) \ - ASN1_seq_pack(CHECKED_PTR_OF(STACK_OF(type), st), \ - CHECKED_I2D_OF(type, i2d_func), buf, len) -# define SKM_ASN1_seq_unpack(type, buf, len, d2i_func, free_func) \ - (STACK_OF(type) *)ASN1_seq_unpack(buf, len, CHECKED_D2I_OF(type, d2i_func), CHECKED_SK_FREE_FUNC(type, free_func)) -# define SKM_PKCS12_decrypt_d2i(type, algor, d2i_func, free_func, pass, passlen, oct, seq) \ - (STACK_OF(type) *)PKCS12_decrypt_d2i(algor, \ - CHECKED_D2I_OF(type, d2i_func), \ - CHECKED_SK_FREE_FUNC(type, free_func), \ - pass, passlen, oct, seq) -/* - * This block of defines is updated by util/mkstack.pl, please do not touch! - */ -# define sk_ACCESS_DESCRIPTION_new(cmp) SKM_sk_new(ACCESS_DESCRIPTION, (cmp)) -# define sk_ACCESS_DESCRIPTION_new_null() SKM_sk_new_null(ACCESS_DESCRIPTION) -# define sk_ACCESS_DESCRIPTION_free(st) SKM_sk_free(ACCESS_DESCRIPTION, (st)) -# define sk_ACCESS_DESCRIPTION_num(st) SKM_sk_num(ACCESS_DESCRIPTION, (st)) -# define sk_ACCESS_DESCRIPTION_value(st, i) SKM_sk_value(ACCESS_DESCRIPTION, (st), (i)) -# define sk_ACCESS_DESCRIPTION_set(st, i, val) SKM_sk_set(ACCESS_DESCRIPTION, (st), (i), (val)) -# define sk_ACCESS_DESCRIPTION_zero(st) SKM_sk_zero(ACCESS_DESCRIPTION, (st)) -# define sk_ACCESS_DESCRIPTION_push(st, val) SKM_sk_push(ACCESS_DESCRIPTION, (st), (val)) -# define sk_ACCESS_DESCRIPTION_unshift(st, val) SKM_sk_unshift(ACCESS_DESCRIPTION, (st), (val)) -# define sk_ACCESS_DESCRIPTION_find(st, val) SKM_sk_find(ACCESS_DESCRIPTION, (st), (val)) -# define sk_ACCESS_DESCRIPTION_find_ex(st, val) SKM_sk_find_ex(ACCESS_DESCRIPTION, (st), (val)) -# define sk_ACCESS_DESCRIPTION_delete(st, i) SKM_sk_delete(ACCESS_DESCRIPTION, (st), (i)) -# define sk_ACCESS_DESCRIPTION_delete_ptr(st, ptr) SKM_sk_delete_ptr(ACCESS_DESCRIPTION, (st), (ptr)) -# define sk_ACCESS_DESCRIPTION_insert(st, val, i) SKM_sk_insert(ACCESS_DESCRIPTION, (st), (val), (i)) -# define sk_ACCESS_DESCRIPTION_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(ACCESS_DESCRIPTION, (st), (cmp)) -# define sk_ACCESS_DESCRIPTION_dup(st) SKM_sk_dup(ACCESS_DESCRIPTION, st) -# define sk_ACCESS_DESCRIPTION_pop_free(st, free_func) SKM_sk_pop_free(ACCESS_DESCRIPTION, (st), (free_func)) -# define sk_ACCESS_DESCRIPTION_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(ACCESS_DESCRIPTION, (st), (copy_func), (free_func)) -# define sk_ACCESS_DESCRIPTION_shift(st) SKM_sk_shift(ACCESS_DESCRIPTION, (st)) -# define sk_ACCESS_DESCRIPTION_pop(st) SKM_sk_pop(ACCESS_DESCRIPTION, (st)) -# define sk_ACCESS_DESCRIPTION_sort(st) SKM_sk_sort(ACCESS_DESCRIPTION, (st)) -# define sk_ACCESS_DESCRIPTION_is_sorted(st) SKM_sk_is_sorted(ACCESS_DESCRIPTION, (st)) -# define sk_ASIdOrRange_new(cmp) SKM_sk_new(ASIdOrRange, (cmp)) -# define sk_ASIdOrRange_new_null() SKM_sk_new_null(ASIdOrRange) -# define sk_ASIdOrRange_free(st) SKM_sk_free(ASIdOrRange, (st)) -# define sk_ASIdOrRange_num(st) SKM_sk_num(ASIdOrRange, (st)) -# define sk_ASIdOrRange_value(st, i) SKM_sk_value(ASIdOrRange, (st), (i)) -# define sk_ASIdOrRange_set(st, i, val) SKM_sk_set(ASIdOrRange, (st), (i), (val)) -# define sk_ASIdOrRange_zero(st) SKM_sk_zero(ASIdOrRange, (st)) -# define sk_ASIdOrRange_push(st, val) SKM_sk_push(ASIdOrRange, (st), (val)) -# define sk_ASIdOrRange_unshift(st, val) SKM_sk_unshift(ASIdOrRange, (st), (val)) -# define sk_ASIdOrRange_find(st, val) SKM_sk_find(ASIdOrRange, (st), (val)) -# define sk_ASIdOrRange_find_ex(st, val) SKM_sk_find_ex(ASIdOrRange, (st), (val)) -# define sk_ASIdOrRange_delete(st, i) SKM_sk_delete(ASIdOrRange, (st), (i)) -# define sk_ASIdOrRange_delete_ptr(st, ptr) SKM_sk_delete_ptr(ASIdOrRange, (st), (ptr)) -# define sk_ASIdOrRange_insert(st, val, i) SKM_sk_insert(ASIdOrRange, (st), (val), (i)) -# define sk_ASIdOrRange_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(ASIdOrRange, (st), (cmp)) -# define sk_ASIdOrRange_dup(st) SKM_sk_dup(ASIdOrRange, st) -# define sk_ASIdOrRange_pop_free(st, free_func) SKM_sk_pop_free(ASIdOrRange, (st), (free_func)) -# define sk_ASIdOrRange_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(ASIdOrRange, (st), (copy_func), (free_func)) -# define sk_ASIdOrRange_shift(st) SKM_sk_shift(ASIdOrRange, (st)) -# define sk_ASIdOrRange_pop(st) SKM_sk_pop(ASIdOrRange, (st)) -# define sk_ASIdOrRange_sort(st) SKM_sk_sort(ASIdOrRange, (st)) -# define sk_ASIdOrRange_is_sorted(st) SKM_sk_is_sorted(ASIdOrRange, (st)) -# define sk_ASN1_GENERALSTRING_new(cmp) SKM_sk_new(ASN1_GENERALSTRING, (cmp)) -# define sk_ASN1_GENERALSTRING_new_null() SKM_sk_new_null(ASN1_GENERALSTRING) -# define sk_ASN1_GENERALSTRING_free(st) SKM_sk_free(ASN1_GENERALSTRING, (st)) -# define sk_ASN1_GENERALSTRING_num(st) SKM_sk_num(ASN1_GENERALSTRING, (st)) -# define sk_ASN1_GENERALSTRING_value(st, i) SKM_sk_value(ASN1_GENERALSTRING, (st), (i)) -# define sk_ASN1_GENERALSTRING_set(st, i, val) SKM_sk_set(ASN1_GENERALSTRING, (st), (i), (val)) -# define sk_ASN1_GENERALSTRING_zero(st) SKM_sk_zero(ASN1_GENERALSTRING, (st)) -# define sk_ASN1_GENERALSTRING_push(st, val) SKM_sk_push(ASN1_GENERALSTRING, (st), (val)) -# define sk_ASN1_GENERALSTRING_unshift(st, val) SKM_sk_unshift(ASN1_GENERALSTRING, (st), (val)) -# define sk_ASN1_GENERALSTRING_find(st, val) SKM_sk_find(ASN1_GENERALSTRING, (st), (val)) -# define sk_ASN1_GENERALSTRING_find_ex(st, val) SKM_sk_find_ex(ASN1_GENERALSTRING, (st), (val)) -# define sk_ASN1_GENERALSTRING_delete(st, i) SKM_sk_delete(ASN1_GENERALSTRING, (st), (i)) -# define sk_ASN1_GENERALSTRING_delete_ptr(st, ptr) SKM_sk_delete_ptr(ASN1_GENERALSTRING, (st), (ptr)) -# define sk_ASN1_GENERALSTRING_insert(st, val, i) SKM_sk_insert(ASN1_GENERALSTRING, (st), (val), (i)) -# define sk_ASN1_GENERALSTRING_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(ASN1_GENERALSTRING, (st), (cmp)) -# define sk_ASN1_GENERALSTRING_dup(st) SKM_sk_dup(ASN1_GENERALSTRING, st) -# define sk_ASN1_GENERALSTRING_pop_free(st, free_func) SKM_sk_pop_free(ASN1_GENERALSTRING, (st), (free_func)) -# define sk_ASN1_GENERALSTRING_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(ASN1_GENERALSTRING, (st), (copy_func), (free_func)) -# define sk_ASN1_GENERALSTRING_shift(st) SKM_sk_shift(ASN1_GENERALSTRING, (st)) -# define sk_ASN1_GENERALSTRING_pop(st) SKM_sk_pop(ASN1_GENERALSTRING, (st)) -# define sk_ASN1_GENERALSTRING_sort(st) SKM_sk_sort(ASN1_GENERALSTRING, (st)) -# define sk_ASN1_GENERALSTRING_is_sorted(st) SKM_sk_is_sorted(ASN1_GENERALSTRING, (st)) -# define sk_ASN1_INTEGER_new(cmp) SKM_sk_new(ASN1_INTEGER, (cmp)) -# define sk_ASN1_INTEGER_new_null() SKM_sk_new_null(ASN1_INTEGER) -# define sk_ASN1_INTEGER_free(st) SKM_sk_free(ASN1_INTEGER, (st)) -# define sk_ASN1_INTEGER_num(st) SKM_sk_num(ASN1_INTEGER, (st)) -# define sk_ASN1_INTEGER_value(st, i) SKM_sk_value(ASN1_INTEGER, (st), (i)) -# define sk_ASN1_INTEGER_set(st, i, val) SKM_sk_set(ASN1_INTEGER, (st), (i), (val)) -# define sk_ASN1_INTEGER_zero(st) SKM_sk_zero(ASN1_INTEGER, (st)) -# define sk_ASN1_INTEGER_push(st, val) SKM_sk_push(ASN1_INTEGER, (st), (val)) -# define sk_ASN1_INTEGER_unshift(st, val) SKM_sk_unshift(ASN1_INTEGER, (st), (val)) -# define sk_ASN1_INTEGER_find(st, val) SKM_sk_find(ASN1_INTEGER, (st), (val)) -# define sk_ASN1_INTEGER_find_ex(st, val) SKM_sk_find_ex(ASN1_INTEGER, (st), (val)) -# define sk_ASN1_INTEGER_delete(st, i) SKM_sk_delete(ASN1_INTEGER, (st), (i)) -# define sk_ASN1_INTEGER_delete_ptr(st, ptr) SKM_sk_delete_ptr(ASN1_INTEGER, (st), (ptr)) -# define sk_ASN1_INTEGER_insert(st, val, i) SKM_sk_insert(ASN1_INTEGER, (st), (val), (i)) -# define sk_ASN1_INTEGER_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(ASN1_INTEGER, (st), (cmp)) -# define sk_ASN1_INTEGER_dup(st) SKM_sk_dup(ASN1_INTEGER, st) -# define sk_ASN1_INTEGER_pop_free(st, free_func) SKM_sk_pop_free(ASN1_INTEGER, (st), (free_func)) -# define sk_ASN1_INTEGER_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(ASN1_INTEGER, (st), (copy_func), (free_func)) -# define sk_ASN1_INTEGER_shift(st) SKM_sk_shift(ASN1_INTEGER, (st)) -# define sk_ASN1_INTEGER_pop(st) SKM_sk_pop(ASN1_INTEGER, (st)) -# define sk_ASN1_INTEGER_sort(st) SKM_sk_sort(ASN1_INTEGER, (st)) -# define sk_ASN1_INTEGER_is_sorted(st) SKM_sk_is_sorted(ASN1_INTEGER, (st)) -# define sk_ASN1_OBJECT_new(cmp) SKM_sk_new(ASN1_OBJECT, (cmp)) -# define sk_ASN1_OBJECT_new_null() SKM_sk_new_null(ASN1_OBJECT) -# define sk_ASN1_OBJECT_free(st) SKM_sk_free(ASN1_OBJECT, (st)) -# define sk_ASN1_OBJECT_num(st) SKM_sk_num(ASN1_OBJECT, (st)) -# define sk_ASN1_OBJECT_value(st, i) SKM_sk_value(ASN1_OBJECT, (st), (i)) -# define sk_ASN1_OBJECT_set(st, i, val) SKM_sk_set(ASN1_OBJECT, (st), (i), (val)) -# define sk_ASN1_OBJECT_zero(st) SKM_sk_zero(ASN1_OBJECT, (st)) -# define sk_ASN1_OBJECT_push(st, val) SKM_sk_push(ASN1_OBJECT, (st), (val)) -# define sk_ASN1_OBJECT_unshift(st, val) SKM_sk_unshift(ASN1_OBJECT, (st), (val)) -# define sk_ASN1_OBJECT_find(st, val) SKM_sk_find(ASN1_OBJECT, (st), (val)) -# define sk_ASN1_OBJECT_find_ex(st, val) SKM_sk_find_ex(ASN1_OBJECT, (st), (val)) -# define sk_ASN1_OBJECT_delete(st, i) SKM_sk_delete(ASN1_OBJECT, (st), (i)) -# define sk_ASN1_OBJECT_delete_ptr(st, ptr) SKM_sk_delete_ptr(ASN1_OBJECT, (st), (ptr)) -# define sk_ASN1_OBJECT_insert(st, val, i) SKM_sk_insert(ASN1_OBJECT, (st), (val), (i)) -# define sk_ASN1_OBJECT_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(ASN1_OBJECT, (st), (cmp)) -# define sk_ASN1_OBJECT_dup(st) SKM_sk_dup(ASN1_OBJECT, st) -# define sk_ASN1_OBJECT_pop_free(st, free_func) SKM_sk_pop_free(ASN1_OBJECT, (st), (free_func)) -# define sk_ASN1_OBJECT_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(ASN1_OBJECT, (st), (copy_func), (free_func)) -# define sk_ASN1_OBJECT_shift(st) SKM_sk_shift(ASN1_OBJECT, (st)) -# define sk_ASN1_OBJECT_pop(st) SKM_sk_pop(ASN1_OBJECT, (st)) -# define sk_ASN1_OBJECT_sort(st) SKM_sk_sort(ASN1_OBJECT, (st)) -# define sk_ASN1_OBJECT_is_sorted(st) SKM_sk_is_sorted(ASN1_OBJECT, (st)) -# define sk_ASN1_STRING_TABLE_new(cmp) SKM_sk_new(ASN1_STRING_TABLE, (cmp)) -# define sk_ASN1_STRING_TABLE_new_null() SKM_sk_new_null(ASN1_STRING_TABLE) -# define sk_ASN1_STRING_TABLE_free(st) SKM_sk_free(ASN1_STRING_TABLE, (st)) -# define sk_ASN1_STRING_TABLE_num(st) SKM_sk_num(ASN1_STRING_TABLE, (st)) -# define sk_ASN1_STRING_TABLE_value(st, i) SKM_sk_value(ASN1_STRING_TABLE, (st), (i)) -# define sk_ASN1_STRING_TABLE_set(st, i, val) SKM_sk_set(ASN1_STRING_TABLE, (st), (i), (val)) -# define sk_ASN1_STRING_TABLE_zero(st) SKM_sk_zero(ASN1_STRING_TABLE, (st)) -# define sk_ASN1_STRING_TABLE_push(st, val) SKM_sk_push(ASN1_STRING_TABLE, (st), (val)) -# define sk_ASN1_STRING_TABLE_unshift(st, val) SKM_sk_unshift(ASN1_STRING_TABLE, (st), (val)) -# define sk_ASN1_STRING_TABLE_find(st, val) SKM_sk_find(ASN1_STRING_TABLE, (st), (val)) -# define sk_ASN1_STRING_TABLE_find_ex(st, val) SKM_sk_find_ex(ASN1_STRING_TABLE, (st), (val)) -# define sk_ASN1_STRING_TABLE_delete(st, i) SKM_sk_delete(ASN1_STRING_TABLE, (st), (i)) -# define sk_ASN1_STRING_TABLE_delete_ptr(st, ptr) SKM_sk_delete_ptr(ASN1_STRING_TABLE, (st), (ptr)) -# define sk_ASN1_STRING_TABLE_insert(st, val, i) SKM_sk_insert(ASN1_STRING_TABLE, (st), (val), (i)) -# define sk_ASN1_STRING_TABLE_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(ASN1_STRING_TABLE, (st), (cmp)) -# define sk_ASN1_STRING_TABLE_dup(st) SKM_sk_dup(ASN1_STRING_TABLE, st) -# define sk_ASN1_STRING_TABLE_pop_free(st, free_func) SKM_sk_pop_free(ASN1_STRING_TABLE, (st), (free_func)) -# define sk_ASN1_STRING_TABLE_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(ASN1_STRING_TABLE, (st), (copy_func), (free_func)) -# define sk_ASN1_STRING_TABLE_shift(st) SKM_sk_shift(ASN1_STRING_TABLE, (st)) -# define sk_ASN1_STRING_TABLE_pop(st) SKM_sk_pop(ASN1_STRING_TABLE, (st)) -# define sk_ASN1_STRING_TABLE_sort(st) SKM_sk_sort(ASN1_STRING_TABLE, (st)) -# define sk_ASN1_STRING_TABLE_is_sorted(st) SKM_sk_is_sorted(ASN1_STRING_TABLE, (st)) -# define sk_ASN1_TYPE_new(cmp) SKM_sk_new(ASN1_TYPE, (cmp)) -# define sk_ASN1_TYPE_new_null() SKM_sk_new_null(ASN1_TYPE) -# define sk_ASN1_TYPE_free(st) SKM_sk_free(ASN1_TYPE, (st)) -# define sk_ASN1_TYPE_num(st) SKM_sk_num(ASN1_TYPE, (st)) -# define sk_ASN1_TYPE_value(st, i) SKM_sk_value(ASN1_TYPE, (st), (i)) -# define sk_ASN1_TYPE_set(st, i, val) SKM_sk_set(ASN1_TYPE, (st), (i), (val)) -# define sk_ASN1_TYPE_zero(st) SKM_sk_zero(ASN1_TYPE, (st)) -# define sk_ASN1_TYPE_push(st, val) SKM_sk_push(ASN1_TYPE, (st), (val)) -# define sk_ASN1_TYPE_unshift(st, val) SKM_sk_unshift(ASN1_TYPE, (st), (val)) -# define sk_ASN1_TYPE_find(st, val) SKM_sk_find(ASN1_TYPE, (st), (val)) -# define sk_ASN1_TYPE_find_ex(st, val) SKM_sk_find_ex(ASN1_TYPE, (st), (val)) -# define sk_ASN1_TYPE_delete(st, i) SKM_sk_delete(ASN1_TYPE, (st), (i)) -# define sk_ASN1_TYPE_delete_ptr(st, ptr) SKM_sk_delete_ptr(ASN1_TYPE, (st), (ptr)) -# define sk_ASN1_TYPE_insert(st, val, i) SKM_sk_insert(ASN1_TYPE, (st), (val), (i)) -# define sk_ASN1_TYPE_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(ASN1_TYPE, (st), (cmp)) -# define sk_ASN1_TYPE_dup(st) SKM_sk_dup(ASN1_TYPE, st) -# define sk_ASN1_TYPE_pop_free(st, free_func) SKM_sk_pop_free(ASN1_TYPE, (st), (free_func)) -# define sk_ASN1_TYPE_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(ASN1_TYPE, (st), (copy_func), (free_func)) -# define sk_ASN1_TYPE_shift(st) SKM_sk_shift(ASN1_TYPE, (st)) -# define sk_ASN1_TYPE_pop(st) SKM_sk_pop(ASN1_TYPE, (st)) -# define sk_ASN1_TYPE_sort(st) SKM_sk_sort(ASN1_TYPE, (st)) -# define sk_ASN1_TYPE_is_sorted(st) SKM_sk_is_sorted(ASN1_TYPE, (st)) -# define sk_ASN1_UTF8STRING_new(cmp) SKM_sk_new(ASN1_UTF8STRING, (cmp)) -# define sk_ASN1_UTF8STRING_new_null() SKM_sk_new_null(ASN1_UTF8STRING) -# define sk_ASN1_UTF8STRING_free(st) SKM_sk_free(ASN1_UTF8STRING, (st)) -# define sk_ASN1_UTF8STRING_num(st) SKM_sk_num(ASN1_UTF8STRING, (st)) -# define sk_ASN1_UTF8STRING_value(st, i) SKM_sk_value(ASN1_UTF8STRING, (st), (i)) -# define sk_ASN1_UTF8STRING_set(st, i, val) SKM_sk_set(ASN1_UTF8STRING, (st), (i), (val)) -# define sk_ASN1_UTF8STRING_zero(st) SKM_sk_zero(ASN1_UTF8STRING, (st)) -# define sk_ASN1_UTF8STRING_push(st, val) SKM_sk_push(ASN1_UTF8STRING, (st), (val)) -# define sk_ASN1_UTF8STRING_unshift(st, val) SKM_sk_unshift(ASN1_UTF8STRING, (st), (val)) -# define sk_ASN1_UTF8STRING_find(st, val) SKM_sk_find(ASN1_UTF8STRING, (st), (val)) -# define sk_ASN1_UTF8STRING_find_ex(st, val) SKM_sk_find_ex(ASN1_UTF8STRING, (st), (val)) -# define sk_ASN1_UTF8STRING_delete(st, i) SKM_sk_delete(ASN1_UTF8STRING, (st), (i)) -# define sk_ASN1_UTF8STRING_delete_ptr(st, ptr) SKM_sk_delete_ptr(ASN1_UTF8STRING, (st), (ptr)) -# define sk_ASN1_UTF8STRING_insert(st, val, i) SKM_sk_insert(ASN1_UTF8STRING, (st), (val), (i)) -# define sk_ASN1_UTF8STRING_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(ASN1_UTF8STRING, (st), (cmp)) -# define sk_ASN1_UTF8STRING_dup(st) SKM_sk_dup(ASN1_UTF8STRING, st) -# define sk_ASN1_UTF8STRING_pop_free(st, free_func) SKM_sk_pop_free(ASN1_UTF8STRING, (st), (free_func)) -# define sk_ASN1_UTF8STRING_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(ASN1_UTF8STRING, (st), (copy_func), (free_func)) -# define sk_ASN1_UTF8STRING_shift(st) SKM_sk_shift(ASN1_UTF8STRING, (st)) -# define sk_ASN1_UTF8STRING_pop(st) SKM_sk_pop(ASN1_UTF8STRING, (st)) -# define sk_ASN1_UTF8STRING_sort(st) SKM_sk_sort(ASN1_UTF8STRING, (st)) -# define sk_ASN1_UTF8STRING_is_sorted(st) SKM_sk_is_sorted(ASN1_UTF8STRING, (st)) -# define sk_ASN1_VALUE_new(cmp) SKM_sk_new(ASN1_VALUE, (cmp)) -# define sk_ASN1_VALUE_new_null() SKM_sk_new_null(ASN1_VALUE) -# define sk_ASN1_VALUE_free(st) SKM_sk_free(ASN1_VALUE, (st)) -# define sk_ASN1_VALUE_num(st) SKM_sk_num(ASN1_VALUE, (st)) -# define sk_ASN1_VALUE_value(st, i) SKM_sk_value(ASN1_VALUE, (st), (i)) -# define sk_ASN1_VALUE_set(st, i, val) SKM_sk_set(ASN1_VALUE, (st), (i), (val)) -# define sk_ASN1_VALUE_zero(st) SKM_sk_zero(ASN1_VALUE, (st)) -# define sk_ASN1_VALUE_push(st, val) SKM_sk_push(ASN1_VALUE, (st), (val)) -# define sk_ASN1_VALUE_unshift(st, val) SKM_sk_unshift(ASN1_VALUE, (st), (val)) -# define sk_ASN1_VALUE_find(st, val) SKM_sk_find(ASN1_VALUE, (st), (val)) -# define sk_ASN1_VALUE_find_ex(st, val) SKM_sk_find_ex(ASN1_VALUE, (st), (val)) -# define sk_ASN1_VALUE_delete(st, i) SKM_sk_delete(ASN1_VALUE, (st), (i)) -# define sk_ASN1_VALUE_delete_ptr(st, ptr) SKM_sk_delete_ptr(ASN1_VALUE, (st), (ptr)) -# define sk_ASN1_VALUE_insert(st, val, i) SKM_sk_insert(ASN1_VALUE, (st), (val), (i)) -# define sk_ASN1_VALUE_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(ASN1_VALUE, (st), (cmp)) -# define sk_ASN1_VALUE_dup(st) SKM_sk_dup(ASN1_VALUE, st) -# define sk_ASN1_VALUE_pop_free(st, free_func) SKM_sk_pop_free(ASN1_VALUE, (st), (free_func)) -# define sk_ASN1_VALUE_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(ASN1_VALUE, (st), (copy_func), (free_func)) -# define sk_ASN1_VALUE_shift(st) SKM_sk_shift(ASN1_VALUE, (st)) -# define sk_ASN1_VALUE_pop(st) SKM_sk_pop(ASN1_VALUE, (st)) -# define sk_ASN1_VALUE_sort(st) SKM_sk_sort(ASN1_VALUE, (st)) -# define sk_ASN1_VALUE_is_sorted(st) SKM_sk_is_sorted(ASN1_VALUE, (st)) -# define sk_BIO_new(cmp) SKM_sk_new(BIO, (cmp)) -# define sk_BIO_new_null() SKM_sk_new_null(BIO) -# define sk_BIO_free(st) SKM_sk_free(BIO, (st)) -# define sk_BIO_num(st) SKM_sk_num(BIO, (st)) -# define sk_BIO_value(st, i) SKM_sk_value(BIO, (st), (i)) -# define sk_BIO_set(st, i, val) SKM_sk_set(BIO, (st), (i), (val)) -# define sk_BIO_zero(st) SKM_sk_zero(BIO, (st)) -# define sk_BIO_push(st, val) SKM_sk_push(BIO, (st), (val)) -# define sk_BIO_unshift(st, val) SKM_sk_unshift(BIO, (st), (val)) -# define sk_BIO_find(st, val) SKM_sk_find(BIO, (st), (val)) -# define sk_BIO_find_ex(st, val) SKM_sk_find_ex(BIO, (st), (val)) -# define sk_BIO_delete(st, i) SKM_sk_delete(BIO, (st), (i)) -# define sk_BIO_delete_ptr(st, ptr) SKM_sk_delete_ptr(BIO, (st), (ptr)) -# define sk_BIO_insert(st, val, i) SKM_sk_insert(BIO, (st), (val), (i)) -# define sk_BIO_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(BIO, (st), (cmp)) -# define sk_BIO_dup(st) SKM_sk_dup(BIO, st) -# define sk_BIO_pop_free(st, free_func) SKM_sk_pop_free(BIO, (st), (free_func)) -# define sk_BIO_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(BIO, (st), (copy_func), (free_func)) -# define sk_BIO_shift(st) SKM_sk_shift(BIO, (st)) -# define sk_BIO_pop(st) SKM_sk_pop(BIO, (st)) -# define sk_BIO_sort(st) SKM_sk_sort(BIO, (st)) -# define sk_BIO_is_sorted(st) SKM_sk_is_sorted(BIO, (st)) -# define sk_BY_DIR_ENTRY_new(cmp) SKM_sk_new(BY_DIR_ENTRY, (cmp)) -# define sk_BY_DIR_ENTRY_new_null() SKM_sk_new_null(BY_DIR_ENTRY) -# define sk_BY_DIR_ENTRY_free(st) SKM_sk_free(BY_DIR_ENTRY, (st)) -# define sk_BY_DIR_ENTRY_num(st) SKM_sk_num(BY_DIR_ENTRY, (st)) -# define sk_BY_DIR_ENTRY_value(st, i) SKM_sk_value(BY_DIR_ENTRY, (st), (i)) -# define sk_BY_DIR_ENTRY_set(st, i, val) SKM_sk_set(BY_DIR_ENTRY, (st), (i), (val)) -# define sk_BY_DIR_ENTRY_zero(st) SKM_sk_zero(BY_DIR_ENTRY, (st)) -# define sk_BY_DIR_ENTRY_push(st, val) SKM_sk_push(BY_DIR_ENTRY, (st), (val)) -# define sk_BY_DIR_ENTRY_unshift(st, val) SKM_sk_unshift(BY_DIR_ENTRY, (st), (val)) -# define sk_BY_DIR_ENTRY_find(st, val) SKM_sk_find(BY_DIR_ENTRY, (st), (val)) -# define sk_BY_DIR_ENTRY_find_ex(st, val) SKM_sk_find_ex(BY_DIR_ENTRY, (st), (val)) -# define sk_BY_DIR_ENTRY_delete(st, i) SKM_sk_delete(BY_DIR_ENTRY, (st), (i)) -# define sk_BY_DIR_ENTRY_delete_ptr(st, ptr) SKM_sk_delete_ptr(BY_DIR_ENTRY, (st), (ptr)) -# define sk_BY_DIR_ENTRY_insert(st, val, i) SKM_sk_insert(BY_DIR_ENTRY, (st), (val), (i)) -# define sk_BY_DIR_ENTRY_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(BY_DIR_ENTRY, (st), (cmp)) -# define sk_BY_DIR_ENTRY_dup(st) SKM_sk_dup(BY_DIR_ENTRY, st) -# define sk_BY_DIR_ENTRY_pop_free(st, free_func) SKM_sk_pop_free(BY_DIR_ENTRY, (st), (free_func)) -# define sk_BY_DIR_ENTRY_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(BY_DIR_ENTRY, (st), (copy_func), (free_func)) -# define sk_BY_DIR_ENTRY_shift(st) SKM_sk_shift(BY_DIR_ENTRY, (st)) -# define sk_BY_DIR_ENTRY_pop(st) SKM_sk_pop(BY_DIR_ENTRY, (st)) -# define sk_BY_DIR_ENTRY_sort(st) SKM_sk_sort(BY_DIR_ENTRY, (st)) -# define sk_BY_DIR_ENTRY_is_sorted(st) SKM_sk_is_sorted(BY_DIR_ENTRY, (st)) -# define sk_BY_DIR_HASH_new(cmp) SKM_sk_new(BY_DIR_HASH, (cmp)) -# define sk_BY_DIR_HASH_new_null() SKM_sk_new_null(BY_DIR_HASH) -# define sk_BY_DIR_HASH_free(st) SKM_sk_free(BY_DIR_HASH, (st)) -# define sk_BY_DIR_HASH_num(st) SKM_sk_num(BY_DIR_HASH, (st)) -# define sk_BY_DIR_HASH_value(st, i) SKM_sk_value(BY_DIR_HASH, (st), (i)) -# define sk_BY_DIR_HASH_set(st, i, val) SKM_sk_set(BY_DIR_HASH, (st), (i), (val)) -# define sk_BY_DIR_HASH_zero(st) SKM_sk_zero(BY_DIR_HASH, (st)) -# define sk_BY_DIR_HASH_push(st, val) SKM_sk_push(BY_DIR_HASH, (st), (val)) -# define sk_BY_DIR_HASH_unshift(st, val) SKM_sk_unshift(BY_DIR_HASH, (st), (val)) -# define sk_BY_DIR_HASH_find(st, val) SKM_sk_find(BY_DIR_HASH, (st), (val)) -# define sk_BY_DIR_HASH_find_ex(st, val) SKM_sk_find_ex(BY_DIR_HASH, (st), (val)) -# define sk_BY_DIR_HASH_delete(st, i) SKM_sk_delete(BY_DIR_HASH, (st), (i)) -# define sk_BY_DIR_HASH_delete_ptr(st, ptr) SKM_sk_delete_ptr(BY_DIR_HASH, (st), (ptr)) -# define sk_BY_DIR_HASH_insert(st, val, i) SKM_sk_insert(BY_DIR_HASH, (st), (val), (i)) -# define sk_BY_DIR_HASH_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(BY_DIR_HASH, (st), (cmp)) -# define sk_BY_DIR_HASH_dup(st) SKM_sk_dup(BY_DIR_HASH, st) -# define sk_BY_DIR_HASH_pop_free(st, free_func) SKM_sk_pop_free(BY_DIR_HASH, (st), (free_func)) -# define sk_BY_DIR_HASH_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(BY_DIR_HASH, (st), (copy_func), (free_func)) -# define sk_BY_DIR_HASH_shift(st) SKM_sk_shift(BY_DIR_HASH, (st)) -# define sk_BY_DIR_HASH_pop(st) SKM_sk_pop(BY_DIR_HASH, (st)) -# define sk_BY_DIR_HASH_sort(st) SKM_sk_sort(BY_DIR_HASH, (st)) -# define sk_BY_DIR_HASH_is_sorted(st) SKM_sk_is_sorted(BY_DIR_HASH, (st)) -# define sk_CMS_CertificateChoices_new(cmp) SKM_sk_new(CMS_CertificateChoices, (cmp)) -# define sk_CMS_CertificateChoices_new_null() SKM_sk_new_null(CMS_CertificateChoices) -# define sk_CMS_CertificateChoices_free(st) SKM_sk_free(CMS_CertificateChoices, (st)) -# define sk_CMS_CertificateChoices_num(st) SKM_sk_num(CMS_CertificateChoices, (st)) -# define sk_CMS_CertificateChoices_value(st, i) SKM_sk_value(CMS_CertificateChoices, (st), (i)) -# define sk_CMS_CertificateChoices_set(st, i, val) SKM_sk_set(CMS_CertificateChoices, (st), (i), (val)) -# define sk_CMS_CertificateChoices_zero(st) SKM_sk_zero(CMS_CertificateChoices, (st)) -# define sk_CMS_CertificateChoices_push(st, val) SKM_sk_push(CMS_CertificateChoices, (st), (val)) -# define sk_CMS_CertificateChoices_unshift(st, val) SKM_sk_unshift(CMS_CertificateChoices, (st), (val)) -# define sk_CMS_CertificateChoices_find(st, val) SKM_sk_find(CMS_CertificateChoices, (st), (val)) -# define sk_CMS_CertificateChoices_find_ex(st, val) SKM_sk_find_ex(CMS_CertificateChoices, (st), (val)) -# define sk_CMS_CertificateChoices_delete(st, i) SKM_sk_delete(CMS_CertificateChoices, (st), (i)) -# define sk_CMS_CertificateChoices_delete_ptr(st, ptr) SKM_sk_delete_ptr(CMS_CertificateChoices, (st), (ptr)) -# define sk_CMS_CertificateChoices_insert(st, val, i) SKM_sk_insert(CMS_CertificateChoices, (st), (val), (i)) -# define sk_CMS_CertificateChoices_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(CMS_CertificateChoices, (st), (cmp)) -# define sk_CMS_CertificateChoices_dup(st) SKM_sk_dup(CMS_CertificateChoices, st) -# define sk_CMS_CertificateChoices_pop_free(st, free_func) SKM_sk_pop_free(CMS_CertificateChoices, (st), (free_func)) -# define sk_CMS_CertificateChoices_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(CMS_CertificateChoices, (st), (copy_func), (free_func)) -# define sk_CMS_CertificateChoices_shift(st) SKM_sk_shift(CMS_CertificateChoices, (st)) -# define sk_CMS_CertificateChoices_pop(st) SKM_sk_pop(CMS_CertificateChoices, (st)) -# define sk_CMS_CertificateChoices_sort(st) SKM_sk_sort(CMS_CertificateChoices, (st)) -# define sk_CMS_CertificateChoices_is_sorted(st) SKM_sk_is_sorted(CMS_CertificateChoices, (st)) -# define sk_CMS_RecipientEncryptedKey_new(cmp) SKM_sk_new(CMS_RecipientEncryptedKey, (cmp)) -# define sk_CMS_RecipientEncryptedKey_new_null() SKM_sk_new_null(CMS_RecipientEncryptedKey) -# define sk_CMS_RecipientEncryptedKey_free(st) SKM_sk_free(CMS_RecipientEncryptedKey, (st)) -# define sk_CMS_RecipientEncryptedKey_num(st) SKM_sk_num(CMS_RecipientEncryptedKey, (st)) -# define sk_CMS_RecipientEncryptedKey_value(st, i) SKM_sk_value(CMS_RecipientEncryptedKey, (st), (i)) -# define sk_CMS_RecipientEncryptedKey_set(st, i, val) SKM_sk_set(CMS_RecipientEncryptedKey, (st), (i), (val)) -# define sk_CMS_RecipientEncryptedKey_zero(st) SKM_sk_zero(CMS_RecipientEncryptedKey, (st)) -# define sk_CMS_RecipientEncryptedKey_push(st, val) SKM_sk_push(CMS_RecipientEncryptedKey, (st), (val)) -# define sk_CMS_RecipientEncryptedKey_unshift(st, val) SKM_sk_unshift(CMS_RecipientEncryptedKey, (st), (val)) -# define sk_CMS_RecipientEncryptedKey_find(st, val) SKM_sk_find(CMS_RecipientEncryptedKey, (st), (val)) -# define sk_CMS_RecipientEncryptedKey_find_ex(st, val) SKM_sk_find_ex(CMS_RecipientEncryptedKey, (st), (val)) -# define sk_CMS_RecipientEncryptedKey_delete(st, i) SKM_sk_delete(CMS_RecipientEncryptedKey, (st), (i)) -# define sk_CMS_RecipientEncryptedKey_delete_ptr(st, ptr) SKM_sk_delete_ptr(CMS_RecipientEncryptedKey, (st), (ptr)) -# define sk_CMS_RecipientEncryptedKey_insert(st, val, i) SKM_sk_insert(CMS_RecipientEncryptedKey, (st), (val), (i)) -# define sk_CMS_RecipientEncryptedKey_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(CMS_RecipientEncryptedKey, (st), (cmp)) -# define sk_CMS_RecipientEncryptedKey_dup(st) SKM_sk_dup(CMS_RecipientEncryptedKey, st) -# define sk_CMS_RecipientEncryptedKey_pop_free(st, free_func) SKM_sk_pop_free(CMS_RecipientEncryptedKey, (st), (free_func)) -# define sk_CMS_RecipientEncryptedKey_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(CMS_RecipientEncryptedKey, (st), (copy_func), (free_func)) -# define sk_CMS_RecipientEncryptedKey_shift(st) SKM_sk_shift(CMS_RecipientEncryptedKey, (st)) -# define sk_CMS_RecipientEncryptedKey_pop(st) SKM_sk_pop(CMS_RecipientEncryptedKey, (st)) -# define sk_CMS_RecipientEncryptedKey_sort(st) SKM_sk_sort(CMS_RecipientEncryptedKey, (st)) -# define sk_CMS_RecipientEncryptedKey_is_sorted(st) SKM_sk_is_sorted(CMS_RecipientEncryptedKey, (st)) -# define sk_CMS_RecipientInfo_new(cmp) SKM_sk_new(CMS_RecipientInfo, (cmp)) -# define sk_CMS_RecipientInfo_new_null() SKM_sk_new_null(CMS_RecipientInfo) -# define sk_CMS_RecipientInfo_free(st) SKM_sk_free(CMS_RecipientInfo, (st)) -# define sk_CMS_RecipientInfo_num(st) SKM_sk_num(CMS_RecipientInfo, (st)) -# define sk_CMS_RecipientInfo_value(st, i) SKM_sk_value(CMS_RecipientInfo, (st), (i)) -# define sk_CMS_RecipientInfo_set(st, i, val) SKM_sk_set(CMS_RecipientInfo, (st), (i), (val)) -# define sk_CMS_RecipientInfo_zero(st) SKM_sk_zero(CMS_RecipientInfo, (st)) -# define sk_CMS_RecipientInfo_push(st, val) SKM_sk_push(CMS_RecipientInfo, (st), (val)) -# define sk_CMS_RecipientInfo_unshift(st, val) SKM_sk_unshift(CMS_RecipientInfo, (st), (val)) -# define sk_CMS_RecipientInfo_find(st, val) SKM_sk_find(CMS_RecipientInfo, (st), (val)) -# define sk_CMS_RecipientInfo_find_ex(st, val) SKM_sk_find_ex(CMS_RecipientInfo, (st), (val)) -# define sk_CMS_RecipientInfo_delete(st, i) SKM_sk_delete(CMS_RecipientInfo, (st), (i)) -# define sk_CMS_RecipientInfo_delete_ptr(st, ptr) SKM_sk_delete_ptr(CMS_RecipientInfo, (st), (ptr)) -# define sk_CMS_RecipientInfo_insert(st, val, i) SKM_sk_insert(CMS_RecipientInfo, (st), (val), (i)) -# define sk_CMS_RecipientInfo_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(CMS_RecipientInfo, (st), (cmp)) -# define sk_CMS_RecipientInfo_dup(st) SKM_sk_dup(CMS_RecipientInfo, st) -# define sk_CMS_RecipientInfo_pop_free(st, free_func) SKM_sk_pop_free(CMS_RecipientInfo, (st), (free_func)) -# define sk_CMS_RecipientInfo_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(CMS_RecipientInfo, (st), (copy_func), (free_func)) -# define sk_CMS_RecipientInfo_shift(st) SKM_sk_shift(CMS_RecipientInfo, (st)) -# define sk_CMS_RecipientInfo_pop(st) SKM_sk_pop(CMS_RecipientInfo, (st)) -# define sk_CMS_RecipientInfo_sort(st) SKM_sk_sort(CMS_RecipientInfo, (st)) -# define sk_CMS_RecipientInfo_is_sorted(st) SKM_sk_is_sorted(CMS_RecipientInfo, (st)) -# define sk_CMS_RevocationInfoChoice_new(cmp) SKM_sk_new(CMS_RevocationInfoChoice, (cmp)) -# define sk_CMS_RevocationInfoChoice_new_null() SKM_sk_new_null(CMS_RevocationInfoChoice) -# define sk_CMS_RevocationInfoChoice_free(st) SKM_sk_free(CMS_RevocationInfoChoice, (st)) -# define sk_CMS_RevocationInfoChoice_num(st) SKM_sk_num(CMS_RevocationInfoChoice, (st)) -# define sk_CMS_RevocationInfoChoice_value(st, i) SKM_sk_value(CMS_RevocationInfoChoice, (st), (i)) -# define sk_CMS_RevocationInfoChoice_set(st, i, val) SKM_sk_set(CMS_RevocationInfoChoice, (st), (i), (val)) -# define sk_CMS_RevocationInfoChoice_zero(st) SKM_sk_zero(CMS_RevocationInfoChoice, (st)) -# define sk_CMS_RevocationInfoChoice_push(st, val) SKM_sk_push(CMS_RevocationInfoChoice, (st), (val)) -# define sk_CMS_RevocationInfoChoice_unshift(st, val) SKM_sk_unshift(CMS_RevocationInfoChoice, (st), (val)) -# define sk_CMS_RevocationInfoChoice_find(st, val) SKM_sk_find(CMS_RevocationInfoChoice, (st), (val)) -# define sk_CMS_RevocationInfoChoice_find_ex(st, val) SKM_sk_find_ex(CMS_RevocationInfoChoice, (st), (val)) -# define sk_CMS_RevocationInfoChoice_delete(st, i) SKM_sk_delete(CMS_RevocationInfoChoice, (st), (i)) -# define sk_CMS_RevocationInfoChoice_delete_ptr(st, ptr) SKM_sk_delete_ptr(CMS_RevocationInfoChoice, (st), (ptr)) -# define sk_CMS_RevocationInfoChoice_insert(st, val, i) SKM_sk_insert(CMS_RevocationInfoChoice, (st), (val), (i)) -# define sk_CMS_RevocationInfoChoice_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(CMS_RevocationInfoChoice, (st), (cmp)) -# define sk_CMS_RevocationInfoChoice_dup(st) SKM_sk_dup(CMS_RevocationInfoChoice, st) -# define sk_CMS_RevocationInfoChoice_pop_free(st, free_func) SKM_sk_pop_free(CMS_RevocationInfoChoice, (st), (free_func)) -# define sk_CMS_RevocationInfoChoice_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(CMS_RevocationInfoChoice, (st), (copy_func), (free_func)) -# define sk_CMS_RevocationInfoChoice_shift(st) SKM_sk_shift(CMS_RevocationInfoChoice, (st)) -# define sk_CMS_RevocationInfoChoice_pop(st) SKM_sk_pop(CMS_RevocationInfoChoice, (st)) -# define sk_CMS_RevocationInfoChoice_sort(st) SKM_sk_sort(CMS_RevocationInfoChoice, (st)) -# define sk_CMS_RevocationInfoChoice_is_sorted(st) SKM_sk_is_sorted(CMS_RevocationInfoChoice, (st)) -# define sk_CMS_SignerInfo_new(cmp) SKM_sk_new(CMS_SignerInfo, (cmp)) -# define sk_CMS_SignerInfo_new_null() SKM_sk_new_null(CMS_SignerInfo) -# define sk_CMS_SignerInfo_free(st) SKM_sk_free(CMS_SignerInfo, (st)) -# define sk_CMS_SignerInfo_num(st) SKM_sk_num(CMS_SignerInfo, (st)) -# define sk_CMS_SignerInfo_value(st, i) SKM_sk_value(CMS_SignerInfo, (st), (i)) -# define sk_CMS_SignerInfo_set(st, i, val) SKM_sk_set(CMS_SignerInfo, (st), (i), (val)) -# define sk_CMS_SignerInfo_zero(st) SKM_sk_zero(CMS_SignerInfo, (st)) -# define sk_CMS_SignerInfo_push(st, val) SKM_sk_push(CMS_SignerInfo, (st), (val)) -# define sk_CMS_SignerInfo_unshift(st, val) SKM_sk_unshift(CMS_SignerInfo, (st), (val)) -# define sk_CMS_SignerInfo_find(st, val) SKM_sk_find(CMS_SignerInfo, (st), (val)) -# define sk_CMS_SignerInfo_find_ex(st, val) SKM_sk_find_ex(CMS_SignerInfo, (st), (val)) -# define sk_CMS_SignerInfo_delete(st, i) SKM_sk_delete(CMS_SignerInfo, (st), (i)) -# define sk_CMS_SignerInfo_delete_ptr(st, ptr) SKM_sk_delete_ptr(CMS_SignerInfo, (st), (ptr)) -# define sk_CMS_SignerInfo_insert(st, val, i) SKM_sk_insert(CMS_SignerInfo, (st), (val), (i)) -# define sk_CMS_SignerInfo_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(CMS_SignerInfo, (st), (cmp)) -# define sk_CMS_SignerInfo_dup(st) SKM_sk_dup(CMS_SignerInfo, st) -# define sk_CMS_SignerInfo_pop_free(st, free_func) SKM_sk_pop_free(CMS_SignerInfo, (st), (free_func)) -# define sk_CMS_SignerInfo_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(CMS_SignerInfo, (st), (copy_func), (free_func)) -# define sk_CMS_SignerInfo_shift(st) SKM_sk_shift(CMS_SignerInfo, (st)) -# define sk_CMS_SignerInfo_pop(st) SKM_sk_pop(CMS_SignerInfo, (st)) -# define sk_CMS_SignerInfo_sort(st) SKM_sk_sort(CMS_SignerInfo, (st)) -# define sk_CMS_SignerInfo_is_sorted(st) SKM_sk_is_sorted(CMS_SignerInfo, (st)) -# define sk_CONF_IMODULE_new(cmp) SKM_sk_new(CONF_IMODULE, (cmp)) -# define sk_CONF_IMODULE_new_null() SKM_sk_new_null(CONF_IMODULE) -# define sk_CONF_IMODULE_free(st) SKM_sk_free(CONF_IMODULE, (st)) -# define sk_CONF_IMODULE_num(st) SKM_sk_num(CONF_IMODULE, (st)) -# define sk_CONF_IMODULE_value(st, i) SKM_sk_value(CONF_IMODULE, (st), (i)) -# define sk_CONF_IMODULE_set(st, i, val) SKM_sk_set(CONF_IMODULE, (st), (i), (val)) -# define sk_CONF_IMODULE_zero(st) SKM_sk_zero(CONF_IMODULE, (st)) -# define sk_CONF_IMODULE_push(st, val) SKM_sk_push(CONF_IMODULE, (st), (val)) -# define sk_CONF_IMODULE_unshift(st, val) SKM_sk_unshift(CONF_IMODULE, (st), (val)) -# define sk_CONF_IMODULE_find(st, val) SKM_sk_find(CONF_IMODULE, (st), (val)) -# define sk_CONF_IMODULE_find_ex(st, val) SKM_sk_find_ex(CONF_IMODULE, (st), (val)) -# define sk_CONF_IMODULE_delete(st, i) SKM_sk_delete(CONF_IMODULE, (st), (i)) -# define sk_CONF_IMODULE_delete_ptr(st, ptr) SKM_sk_delete_ptr(CONF_IMODULE, (st), (ptr)) -# define sk_CONF_IMODULE_insert(st, val, i) SKM_sk_insert(CONF_IMODULE, (st), (val), (i)) -# define sk_CONF_IMODULE_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(CONF_IMODULE, (st), (cmp)) -# define sk_CONF_IMODULE_dup(st) SKM_sk_dup(CONF_IMODULE, st) -# define sk_CONF_IMODULE_pop_free(st, free_func) SKM_sk_pop_free(CONF_IMODULE, (st), (free_func)) -# define sk_CONF_IMODULE_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(CONF_IMODULE, (st), (copy_func), (free_func)) -# define sk_CONF_IMODULE_shift(st) SKM_sk_shift(CONF_IMODULE, (st)) -# define sk_CONF_IMODULE_pop(st) SKM_sk_pop(CONF_IMODULE, (st)) -# define sk_CONF_IMODULE_sort(st) SKM_sk_sort(CONF_IMODULE, (st)) -# define sk_CONF_IMODULE_is_sorted(st) SKM_sk_is_sorted(CONF_IMODULE, (st)) -# define sk_CONF_MODULE_new(cmp) SKM_sk_new(CONF_MODULE, (cmp)) -# define sk_CONF_MODULE_new_null() SKM_sk_new_null(CONF_MODULE) -# define sk_CONF_MODULE_free(st) SKM_sk_free(CONF_MODULE, (st)) -# define sk_CONF_MODULE_num(st) SKM_sk_num(CONF_MODULE, (st)) -# define sk_CONF_MODULE_value(st, i) SKM_sk_value(CONF_MODULE, (st), (i)) -# define sk_CONF_MODULE_set(st, i, val) SKM_sk_set(CONF_MODULE, (st), (i), (val)) -# define sk_CONF_MODULE_zero(st) SKM_sk_zero(CONF_MODULE, (st)) -# define sk_CONF_MODULE_push(st, val) SKM_sk_push(CONF_MODULE, (st), (val)) -# define sk_CONF_MODULE_unshift(st, val) SKM_sk_unshift(CONF_MODULE, (st), (val)) -# define sk_CONF_MODULE_find(st, val) SKM_sk_find(CONF_MODULE, (st), (val)) -# define sk_CONF_MODULE_find_ex(st, val) SKM_sk_find_ex(CONF_MODULE, (st), (val)) -# define sk_CONF_MODULE_delete(st, i) SKM_sk_delete(CONF_MODULE, (st), (i)) -# define sk_CONF_MODULE_delete_ptr(st, ptr) SKM_sk_delete_ptr(CONF_MODULE, (st), (ptr)) -# define sk_CONF_MODULE_insert(st, val, i) SKM_sk_insert(CONF_MODULE, (st), (val), (i)) -# define sk_CONF_MODULE_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(CONF_MODULE, (st), (cmp)) -# define sk_CONF_MODULE_dup(st) SKM_sk_dup(CONF_MODULE, st) -# define sk_CONF_MODULE_pop_free(st, free_func) SKM_sk_pop_free(CONF_MODULE, (st), (free_func)) -# define sk_CONF_MODULE_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(CONF_MODULE, (st), (copy_func), (free_func)) -# define sk_CONF_MODULE_shift(st) SKM_sk_shift(CONF_MODULE, (st)) -# define sk_CONF_MODULE_pop(st) SKM_sk_pop(CONF_MODULE, (st)) -# define sk_CONF_MODULE_sort(st) SKM_sk_sort(CONF_MODULE, (st)) -# define sk_CONF_MODULE_is_sorted(st) SKM_sk_is_sorted(CONF_MODULE, (st)) -# define sk_CONF_VALUE_new(cmp) SKM_sk_new(CONF_VALUE, (cmp)) -# define sk_CONF_VALUE_new_null() SKM_sk_new_null(CONF_VALUE) -# define sk_CONF_VALUE_free(st) SKM_sk_free(CONF_VALUE, (st)) -# define sk_CONF_VALUE_num(st) SKM_sk_num(CONF_VALUE, (st)) -# define sk_CONF_VALUE_value(st, i) SKM_sk_value(CONF_VALUE, (st), (i)) -# define sk_CONF_VALUE_set(st, i, val) SKM_sk_set(CONF_VALUE, (st), (i), (val)) -# define sk_CONF_VALUE_zero(st) SKM_sk_zero(CONF_VALUE, (st)) -# define sk_CONF_VALUE_push(st, val) SKM_sk_push(CONF_VALUE, (st), (val)) -# define sk_CONF_VALUE_unshift(st, val) SKM_sk_unshift(CONF_VALUE, (st), (val)) -# define sk_CONF_VALUE_find(st, val) SKM_sk_find(CONF_VALUE, (st), (val)) -# define sk_CONF_VALUE_find_ex(st, val) SKM_sk_find_ex(CONF_VALUE, (st), (val)) -# define sk_CONF_VALUE_delete(st, i) SKM_sk_delete(CONF_VALUE, (st), (i)) -# define sk_CONF_VALUE_delete_ptr(st, ptr) SKM_sk_delete_ptr(CONF_VALUE, (st), (ptr)) -# define sk_CONF_VALUE_insert(st, val, i) SKM_sk_insert(CONF_VALUE, (st), (val), (i)) -# define sk_CONF_VALUE_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(CONF_VALUE, (st), (cmp)) -# define sk_CONF_VALUE_dup(st) SKM_sk_dup(CONF_VALUE, st) -# define sk_CONF_VALUE_pop_free(st, free_func) SKM_sk_pop_free(CONF_VALUE, (st), (free_func)) -# define sk_CONF_VALUE_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(CONF_VALUE, (st), (copy_func), (free_func)) -# define sk_CONF_VALUE_shift(st) SKM_sk_shift(CONF_VALUE, (st)) -# define sk_CONF_VALUE_pop(st) SKM_sk_pop(CONF_VALUE, (st)) -# define sk_CONF_VALUE_sort(st) SKM_sk_sort(CONF_VALUE, (st)) -# define sk_CONF_VALUE_is_sorted(st) SKM_sk_is_sorted(CONF_VALUE, (st)) -# define sk_CRYPTO_EX_DATA_FUNCS_new(cmp) SKM_sk_new(CRYPTO_EX_DATA_FUNCS, (cmp)) -# define sk_CRYPTO_EX_DATA_FUNCS_new_null() SKM_sk_new_null(CRYPTO_EX_DATA_FUNCS) -# define sk_CRYPTO_EX_DATA_FUNCS_free(st) SKM_sk_free(CRYPTO_EX_DATA_FUNCS, (st)) -# define sk_CRYPTO_EX_DATA_FUNCS_num(st) SKM_sk_num(CRYPTO_EX_DATA_FUNCS, (st)) -# define sk_CRYPTO_EX_DATA_FUNCS_value(st, i) SKM_sk_value(CRYPTO_EX_DATA_FUNCS, (st), (i)) -# define sk_CRYPTO_EX_DATA_FUNCS_set(st, i, val) SKM_sk_set(CRYPTO_EX_DATA_FUNCS, (st), (i), (val)) -# define sk_CRYPTO_EX_DATA_FUNCS_zero(st) SKM_sk_zero(CRYPTO_EX_DATA_FUNCS, (st)) -# define sk_CRYPTO_EX_DATA_FUNCS_push(st, val) SKM_sk_push(CRYPTO_EX_DATA_FUNCS, (st), (val)) -# define sk_CRYPTO_EX_DATA_FUNCS_unshift(st, val) SKM_sk_unshift(CRYPTO_EX_DATA_FUNCS, (st), (val)) -# define sk_CRYPTO_EX_DATA_FUNCS_find(st, val) SKM_sk_find(CRYPTO_EX_DATA_FUNCS, (st), (val)) -# define sk_CRYPTO_EX_DATA_FUNCS_find_ex(st, val) SKM_sk_find_ex(CRYPTO_EX_DATA_FUNCS, (st), (val)) -# define sk_CRYPTO_EX_DATA_FUNCS_delete(st, i) SKM_sk_delete(CRYPTO_EX_DATA_FUNCS, (st), (i)) -# define sk_CRYPTO_EX_DATA_FUNCS_delete_ptr(st, ptr) SKM_sk_delete_ptr(CRYPTO_EX_DATA_FUNCS, (st), (ptr)) -# define sk_CRYPTO_EX_DATA_FUNCS_insert(st, val, i) SKM_sk_insert(CRYPTO_EX_DATA_FUNCS, (st), (val), (i)) -# define sk_CRYPTO_EX_DATA_FUNCS_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(CRYPTO_EX_DATA_FUNCS, (st), (cmp)) -# define sk_CRYPTO_EX_DATA_FUNCS_dup(st) SKM_sk_dup(CRYPTO_EX_DATA_FUNCS, st) -# define sk_CRYPTO_EX_DATA_FUNCS_pop_free(st, free_func) SKM_sk_pop_free(CRYPTO_EX_DATA_FUNCS, (st), (free_func)) -# define sk_CRYPTO_EX_DATA_FUNCS_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(CRYPTO_EX_DATA_FUNCS, (st), (copy_func), (free_func)) -# define sk_CRYPTO_EX_DATA_FUNCS_shift(st) SKM_sk_shift(CRYPTO_EX_DATA_FUNCS, (st)) -# define sk_CRYPTO_EX_DATA_FUNCS_pop(st) SKM_sk_pop(CRYPTO_EX_DATA_FUNCS, (st)) -# define sk_CRYPTO_EX_DATA_FUNCS_sort(st) SKM_sk_sort(CRYPTO_EX_DATA_FUNCS, (st)) -# define sk_CRYPTO_EX_DATA_FUNCS_is_sorted(st) SKM_sk_is_sorted(CRYPTO_EX_DATA_FUNCS, (st)) -# define sk_CRYPTO_dynlock_new(cmp) SKM_sk_new(CRYPTO_dynlock, (cmp)) -# define sk_CRYPTO_dynlock_new_null() SKM_sk_new_null(CRYPTO_dynlock) -# define sk_CRYPTO_dynlock_free(st) SKM_sk_free(CRYPTO_dynlock, (st)) -# define sk_CRYPTO_dynlock_num(st) SKM_sk_num(CRYPTO_dynlock, (st)) -# define sk_CRYPTO_dynlock_value(st, i) SKM_sk_value(CRYPTO_dynlock, (st), (i)) -# define sk_CRYPTO_dynlock_set(st, i, val) SKM_sk_set(CRYPTO_dynlock, (st), (i), (val)) -# define sk_CRYPTO_dynlock_zero(st) SKM_sk_zero(CRYPTO_dynlock, (st)) -# define sk_CRYPTO_dynlock_push(st, val) SKM_sk_push(CRYPTO_dynlock, (st), (val)) -# define sk_CRYPTO_dynlock_unshift(st, val) SKM_sk_unshift(CRYPTO_dynlock, (st), (val)) -# define sk_CRYPTO_dynlock_find(st, val) SKM_sk_find(CRYPTO_dynlock, (st), (val)) -# define sk_CRYPTO_dynlock_find_ex(st, val) SKM_sk_find_ex(CRYPTO_dynlock, (st), (val)) -# define sk_CRYPTO_dynlock_delete(st, i) SKM_sk_delete(CRYPTO_dynlock, (st), (i)) -# define sk_CRYPTO_dynlock_delete_ptr(st, ptr) SKM_sk_delete_ptr(CRYPTO_dynlock, (st), (ptr)) -# define sk_CRYPTO_dynlock_insert(st, val, i) SKM_sk_insert(CRYPTO_dynlock, (st), (val), (i)) -# define sk_CRYPTO_dynlock_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(CRYPTO_dynlock, (st), (cmp)) -# define sk_CRYPTO_dynlock_dup(st) SKM_sk_dup(CRYPTO_dynlock, st) -# define sk_CRYPTO_dynlock_pop_free(st, free_func) SKM_sk_pop_free(CRYPTO_dynlock, (st), (free_func)) -# define sk_CRYPTO_dynlock_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(CRYPTO_dynlock, (st), (copy_func), (free_func)) -# define sk_CRYPTO_dynlock_shift(st) SKM_sk_shift(CRYPTO_dynlock, (st)) -# define sk_CRYPTO_dynlock_pop(st) SKM_sk_pop(CRYPTO_dynlock, (st)) -# define sk_CRYPTO_dynlock_sort(st) SKM_sk_sort(CRYPTO_dynlock, (st)) -# define sk_CRYPTO_dynlock_is_sorted(st) SKM_sk_is_sorted(CRYPTO_dynlock, (st)) -# define sk_DIST_POINT_new(cmp) SKM_sk_new(DIST_POINT, (cmp)) -# define sk_DIST_POINT_new_null() SKM_sk_new_null(DIST_POINT) -# define sk_DIST_POINT_free(st) SKM_sk_free(DIST_POINT, (st)) -# define sk_DIST_POINT_num(st) SKM_sk_num(DIST_POINT, (st)) -# define sk_DIST_POINT_value(st, i) SKM_sk_value(DIST_POINT, (st), (i)) -# define sk_DIST_POINT_set(st, i, val) SKM_sk_set(DIST_POINT, (st), (i), (val)) -# define sk_DIST_POINT_zero(st) SKM_sk_zero(DIST_POINT, (st)) -# define sk_DIST_POINT_push(st, val) SKM_sk_push(DIST_POINT, (st), (val)) -# define sk_DIST_POINT_unshift(st, val) SKM_sk_unshift(DIST_POINT, (st), (val)) -# define sk_DIST_POINT_find(st, val) SKM_sk_find(DIST_POINT, (st), (val)) -# define sk_DIST_POINT_find_ex(st, val) SKM_sk_find_ex(DIST_POINT, (st), (val)) -# define sk_DIST_POINT_delete(st, i) SKM_sk_delete(DIST_POINT, (st), (i)) -# define sk_DIST_POINT_delete_ptr(st, ptr) SKM_sk_delete_ptr(DIST_POINT, (st), (ptr)) -# define sk_DIST_POINT_insert(st, val, i) SKM_sk_insert(DIST_POINT, (st), (val), (i)) -# define sk_DIST_POINT_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(DIST_POINT, (st), (cmp)) -# define sk_DIST_POINT_dup(st) SKM_sk_dup(DIST_POINT, st) -# define sk_DIST_POINT_pop_free(st, free_func) SKM_sk_pop_free(DIST_POINT, (st), (free_func)) -# define sk_DIST_POINT_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(DIST_POINT, (st), (copy_func), (free_func)) -# define sk_DIST_POINT_shift(st) SKM_sk_shift(DIST_POINT, (st)) -# define sk_DIST_POINT_pop(st) SKM_sk_pop(DIST_POINT, (st)) -# define sk_DIST_POINT_sort(st) SKM_sk_sort(DIST_POINT, (st)) -# define sk_DIST_POINT_is_sorted(st) SKM_sk_is_sorted(DIST_POINT, (st)) -# define sk_ENGINE_new(cmp) SKM_sk_new(ENGINE, (cmp)) -# define sk_ENGINE_new_null() SKM_sk_new_null(ENGINE) -# define sk_ENGINE_free(st) SKM_sk_free(ENGINE, (st)) -# define sk_ENGINE_num(st) SKM_sk_num(ENGINE, (st)) -# define sk_ENGINE_value(st, i) SKM_sk_value(ENGINE, (st), (i)) -# define sk_ENGINE_set(st, i, val) SKM_sk_set(ENGINE, (st), (i), (val)) -# define sk_ENGINE_zero(st) SKM_sk_zero(ENGINE, (st)) -# define sk_ENGINE_push(st, val) SKM_sk_push(ENGINE, (st), (val)) -# define sk_ENGINE_unshift(st, val) SKM_sk_unshift(ENGINE, (st), (val)) -# define sk_ENGINE_find(st, val) SKM_sk_find(ENGINE, (st), (val)) -# define sk_ENGINE_find_ex(st, val) SKM_sk_find_ex(ENGINE, (st), (val)) -# define sk_ENGINE_delete(st, i) SKM_sk_delete(ENGINE, (st), (i)) -# define sk_ENGINE_delete_ptr(st, ptr) SKM_sk_delete_ptr(ENGINE, (st), (ptr)) -# define sk_ENGINE_insert(st, val, i) SKM_sk_insert(ENGINE, (st), (val), (i)) -# define sk_ENGINE_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(ENGINE, (st), (cmp)) -# define sk_ENGINE_dup(st) SKM_sk_dup(ENGINE, st) -# define sk_ENGINE_pop_free(st, free_func) SKM_sk_pop_free(ENGINE, (st), (free_func)) -# define sk_ENGINE_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(ENGINE, (st), (copy_func), (free_func)) -# define sk_ENGINE_shift(st) SKM_sk_shift(ENGINE, (st)) -# define sk_ENGINE_pop(st) SKM_sk_pop(ENGINE, (st)) -# define sk_ENGINE_sort(st) SKM_sk_sort(ENGINE, (st)) -# define sk_ENGINE_is_sorted(st) SKM_sk_is_sorted(ENGINE, (st)) -# define sk_ENGINE_CLEANUP_ITEM_new(cmp) SKM_sk_new(ENGINE_CLEANUP_ITEM, (cmp)) -# define sk_ENGINE_CLEANUP_ITEM_new_null() SKM_sk_new_null(ENGINE_CLEANUP_ITEM) -# define sk_ENGINE_CLEANUP_ITEM_free(st) SKM_sk_free(ENGINE_CLEANUP_ITEM, (st)) -# define sk_ENGINE_CLEANUP_ITEM_num(st) SKM_sk_num(ENGINE_CLEANUP_ITEM, (st)) -# define sk_ENGINE_CLEANUP_ITEM_value(st, i) SKM_sk_value(ENGINE_CLEANUP_ITEM, (st), (i)) -# define sk_ENGINE_CLEANUP_ITEM_set(st, i, val) SKM_sk_set(ENGINE_CLEANUP_ITEM, (st), (i), (val)) -# define sk_ENGINE_CLEANUP_ITEM_zero(st) SKM_sk_zero(ENGINE_CLEANUP_ITEM, (st)) -# define sk_ENGINE_CLEANUP_ITEM_push(st, val) SKM_sk_push(ENGINE_CLEANUP_ITEM, (st), (val)) -# define sk_ENGINE_CLEANUP_ITEM_unshift(st, val) SKM_sk_unshift(ENGINE_CLEANUP_ITEM, (st), (val)) -# define sk_ENGINE_CLEANUP_ITEM_find(st, val) SKM_sk_find(ENGINE_CLEANUP_ITEM, (st), (val)) -# define sk_ENGINE_CLEANUP_ITEM_find_ex(st, val) SKM_sk_find_ex(ENGINE_CLEANUP_ITEM, (st), (val)) -# define sk_ENGINE_CLEANUP_ITEM_delete(st, i) SKM_sk_delete(ENGINE_CLEANUP_ITEM, (st), (i)) -# define sk_ENGINE_CLEANUP_ITEM_delete_ptr(st, ptr) SKM_sk_delete_ptr(ENGINE_CLEANUP_ITEM, (st), (ptr)) -# define sk_ENGINE_CLEANUP_ITEM_insert(st, val, i) SKM_sk_insert(ENGINE_CLEANUP_ITEM, (st), (val), (i)) -# define sk_ENGINE_CLEANUP_ITEM_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(ENGINE_CLEANUP_ITEM, (st), (cmp)) -# define sk_ENGINE_CLEANUP_ITEM_dup(st) SKM_sk_dup(ENGINE_CLEANUP_ITEM, st) -# define sk_ENGINE_CLEANUP_ITEM_pop_free(st, free_func) SKM_sk_pop_free(ENGINE_CLEANUP_ITEM, (st), (free_func)) -# define sk_ENGINE_CLEANUP_ITEM_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(ENGINE_CLEANUP_ITEM, (st), (copy_func), (free_func)) -# define sk_ENGINE_CLEANUP_ITEM_shift(st) SKM_sk_shift(ENGINE_CLEANUP_ITEM, (st)) -# define sk_ENGINE_CLEANUP_ITEM_pop(st) SKM_sk_pop(ENGINE_CLEANUP_ITEM, (st)) -# define sk_ENGINE_CLEANUP_ITEM_sort(st) SKM_sk_sort(ENGINE_CLEANUP_ITEM, (st)) -# define sk_ENGINE_CLEANUP_ITEM_is_sorted(st) SKM_sk_is_sorted(ENGINE_CLEANUP_ITEM, (st)) -# define sk_ESS_CERT_ID_new(cmp) SKM_sk_new(ESS_CERT_ID, (cmp)) -# define sk_ESS_CERT_ID_new_null() SKM_sk_new_null(ESS_CERT_ID) -# define sk_ESS_CERT_ID_free(st) SKM_sk_free(ESS_CERT_ID, (st)) -# define sk_ESS_CERT_ID_num(st) SKM_sk_num(ESS_CERT_ID, (st)) -# define sk_ESS_CERT_ID_value(st, i) SKM_sk_value(ESS_CERT_ID, (st), (i)) -# define sk_ESS_CERT_ID_set(st, i, val) SKM_sk_set(ESS_CERT_ID, (st), (i), (val)) -# define sk_ESS_CERT_ID_zero(st) SKM_sk_zero(ESS_CERT_ID, (st)) -# define sk_ESS_CERT_ID_push(st, val) SKM_sk_push(ESS_CERT_ID, (st), (val)) -# define sk_ESS_CERT_ID_unshift(st, val) SKM_sk_unshift(ESS_CERT_ID, (st), (val)) -# define sk_ESS_CERT_ID_find(st, val) SKM_sk_find(ESS_CERT_ID, (st), (val)) -# define sk_ESS_CERT_ID_find_ex(st, val) SKM_sk_find_ex(ESS_CERT_ID, (st), (val)) -# define sk_ESS_CERT_ID_delete(st, i) SKM_sk_delete(ESS_CERT_ID, (st), (i)) -# define sk_ESS_CERT_ID_delete_ptr(st, ptr) SKM_sk_delete_ptr(ESS_CERT_ID, (st), (ptr)) -# define sk_ESS_CERT_ID_insert(st, val, i) SKM_sk_insert(ESS_CERT_ID, (st), (val), (i)) -# define sk_ESS_CERT_ID_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(ESS_CERT_ID, (st), (cmp)) -# define sk_ESS_CERT_ID_dup(st) SKM_sk_dup(ESS_CERT_ID, st) -# define sk_ESS_CERT_ID_pop_free(st, free_func) SKM_sk_pop_free(ESS_CERT_ID, (st), (free_func)) -# define sk_ESS_CERT_ID_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(ESS_CERT_ID, (st), (copy_func), (free_func)) -# define sk_ESS_CERT_ID_shift(st) SKM_sk_shift(ESS_CERT_ID, (st)) -# define sk_ESS_CERT_ID_pop(st) SKM_sk_pop(ESS_CERT_ID, (st)) -# define sk_ESS_CERT_ID_sort(st) SKM_sk_sort(ESS_CERT_ID, (st)) -# define sk_ESS_CERT_ID_is_sorted(st) SKM_sk_is_sorted(ESS_CERT_ID, (st)) -# define sk_EVP_MD_new(cmp) SKM_sk_new(EVP_MD, (cmp)) -# define sk_EVP_MD_new_null() SKM_sk_new_null(EVP_MD) -# define sk_EVP_MD_free(st) SKM_sk_free(EVP_MD, (st)) -# define sk_EVP_MD_num(st) SKM_sk_num(EVP_MD, (st)) -# define sk_EVP_MD_value(st, i) SKM_sk_value(EVP_MD, (st), (i)) -# define sk_EVP_MD_set(st, i, val) SKM_sk_set(EVP_MD, (st), (i), (val)) -# define sk_EVP_MD_zero(st) SKM_sk_zero(EVP_MD, (st)) -# define sk_EVP_MD_push(st, val) SKM_sk_push(EVP_MD, (st), (val)) -# define sk_EVP_MD_unshift(st, val) SKM_sk_unshift(EVP_MD, (st), (val)) -# define sk_EVP_MD_find(st, val) SKM_sk_find(EVP_MD, (st), (val)) -# define sk_EVP_MD_find_ex(st, val) SKM_sk_find_ex(EVP_MD, (st), (val)) -# define sk_EVP_MD_delete(st, i) SKM_sk_delete(EVP_MD, (st), (i)) -# define sk_EVP_MD_delete_ptr(st, ptr) SKM_sk_delete_ptr(EVP_MD, (st), (ptr)) -# define sk_EVP_MD_insert(st, val, i) SKM_sk_insert(EVP_MD, (st), (val), (i)) -# define sk_EVP_MD_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(EVP_MD, (st), (cmp)) -# define sk_EVP_MD_dup(st) SKM_sk_dup(EVP_MD, st) -# define sk_EVP_MD_pop_free(st, free_func) SKM_sk_pop_free(EVP_MD, (st), (free_func)) -# define sk_EVP_MD_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(EVP_MD, (st), (copy_func), (free_func)) -# define sk_EVP_MD_shift(st) SKM_sk_shift(EVP_MD, (st)) -# define sk_EVP_MD_pop(st) SKM_sk_pop(EVP_MD, (st)) -# define sk_EVP_MD_sort(st) SKM_sk_sort(EVP_MD, (st)) -# define sk_EVP_MD_is_sorted(st) SKM_sk_is_sorted(EVP_MD, (st)) -# define sk_EVP_PBE_CTL_new(cmp) SKM_sk_new(EVP_PBE_CTL, (cmp)) -# define sk_EVP_PBE_CTL_new_null() SKM_sk_new_null(EVP_PBE_CTL) -# define sk_EVP_PBE_CTL_free(st) SKM_sk_free(EVP_PBE_CTL, (st)) -# define sk_EVP_PBE_CTL_num(st) SKM_sk_num(EVP_PBE_CTL, (st)) -# define sk_EVP_PBE_CTL_value(st, i) SKM_sk_value(EVP_PBE_CTL, (st), (i)) -# define sk_EVP_PBE_CTL_set(st, i, val) SKM_sk_set(EVP_PBE_CTL, (st), (i), (val)) -# define sk_EVP_PBE_CTL_zero(st) SKM_sk_zero(EVP_PBE_CTL, (st)) -# define sk_EVP_PBE_CTL_push(st, val) SKM_sk_push(EVP_PBE_CTL, (st), (val)) -# define sk_EVP_PBE_CTL_unshift(st, val) SKM_sk_unshift(EVP_PBE_CTL, (st), (val)) -# define sk_EVP_PBE_CTL_find(st, val) SKM_sk_find(EVP_PBE_CTL, (st), (val)) -# define sk_EVP_PBE_CTL_find_ex(st, val) SKM_sk_find_ex(EVP_PBE_CTL, (st), (val)) -# define sk_EVP_PBE_CTL_delete(st, i) SKM_sk_delete(EVP_PBE_CTL, (st), (i)) -# define sk_EVP_PBE_CTL_delete_ptr(st, ptr) SKM_sk_delete_ptr(EVP_PBE_CTL, (st), (ptr)) -# define sk_EVP_PBE_CTL_insert(st, val, i) SKM_sk_insert(EVP_PBE_CTL, (st), (val), (i)) -# define sk_EVP_PBE_CTL_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(EVP_PBE_CTL, (st), (cmp)) -# define sk_EVP_PBE_CTL_dup(st) SKM_sk_dup(EVP_PBE_CTL, st) -# define sk_EVP_PBE_CTL_pop_free(st, free_func) SKM_sk_pop_free(EVP_PBE_CTL, (st), (free_func)) -# define sk_EVP_PBE_CTL_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(EVP_PBE_CTL, (st), (copy_func), (free_func)) -# define sk_EVP_PBE_CTL_shift(st) SKM_sk_shift(EVP_PBE_CTL, (st)) -# define sk_EVP_PBE_CTL_pop(st) SKM_sk_pop(EVP_PBE_CTL, (st)) -# define sk_EVP_PBE_CTL_sort(st) SKM_sk_sort(EVP_PBE_CTL, (st)) -# define sk_EVP_PBE_CTL_is_sorted(st) SKM_sk_is_sorted(EVP_PBE_CTL, (st)) -# define sk_EVP_PKEY_ASN1_METHOD_new(cmp) SKM_sk_new(EVP_PKEY_ASN1_METHOD, (cmp)) -# define sk_EVP_PKEY_ASN1_METHOD_new_null() SKM_sk_new_null(EVP_PKEY_ASN1_METHOD) -# define sk_EVP_PKEY_ASN1_METHOD_free(st) SKM_sk_free(EVP_PKEY_ASN1_METHOD, (st)) -# define sk_EVP_PKEY_ASN1_METHOD_num(st) SKM_sk_num(EVP_PKEY_ASN1_METHOD, (st)) -# define sk_EVP_PKEY_ASN1_METHOD_value(st, i) SKM_sk_value(EVP_PKEY_ASN1_METHOD, (st), (i)) -# define sk_EVP_PKEY_ASN1_METHOD_set(st, i, val) SKM_sk_set(EVP_PKEY_ASN1_METHOD, (st), (i), (val)) -# define sk_EVP_PKEY_ASN1_METHOD_zero(st) SKM_sk_zero(EVP_PKEY_ASN1_METHOD, (st)) -# define sk_EVP_PKEY_ASN1_METHOD_push(st, val) SKM_sk_push(EVP_PKEY_ASN1_METHOD, (st), (val)) -# define sk_EVP_PKEY_ASN1_METHOD_unshift(st, val) SKM_sk_unshift(EVP_PKEY_ASN1_METHOD, (st), (val)) -# define sk_EVP_PKEY_ASN1_METHOD_find(st, val) SKM_sk_find(EVP_PKEY_ASN1_METHOD, (st), (val)) -# define sk_EVP_PKEY_ASN1_METHOD_find_ex(st, val) SKM_sk_find_ex(EVP_PKEY_ASN1_METHOD, (st), (val)) -# define sk_EVP_PKEY_ASN1_METHOD_delete(st, i) SKM_sk_delete(EVP_PKEY_ASN1_METHOD, (st), (i)) -# define sk_EVP_PKEY_ASN1_METHOD_delete_ptr(st, ptr) SKM_sk_delete_ptr(EVP_PKEY_ASN1_METHOD, (st), (ptr)) -# define sk_EVP_PKEY_ASN1_METHOD_insert(st, val, i) SKM_sk_insert(EVP_PKEY_ASN1_METHOD, (st), (val), (i)) -# define sk_EVP_PKEY_ASN1_METHOD_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(EVP_PKEY_ASN1_METHOD, (st), (cmp)) -# define sk_EVP_PKEY_ASN1_METHOD_dup(st) SKM_sk_dup(EVP_PKEY_ASN1_METHOD, st) -# define sk_EVP_PKEY_ASN1_METHOD_pop_free(st, free_func) SKM_sk_pop_free(EVP_PKEY_ASN1_METHOD, (st), (free_func)) -# define sk_EVP_PKEY_ASN1_METHOD_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(EVP_PKEY_ASN1_METHOD, (st), (copy_func), (free_func)) -# define sk_EVP_PKEY_ASN1_METHOD_shift(st) SKM_sk_shift(EVP_PKEY_ASN1_METHOD, (st)) -# define sk_EVP_PKEY_ASN1_METHOD_pop(st) SKM_sk_pop(EVP_PKEY_ASN1_METHOD, (st)) -# define sk_EVP_PKEY_ASN1_METHOD_sort(st) SKM_sk_sort(EVP_PKEY_ASN1_METHOD, (st)) -# define sk_EVP_PKEY_ASN1_METHOD_is_sorted(st) SKM_sk_is_sorted(EVP_PKEY_ASN1_METHOD, (st)) -# define sk_EVP_PKEY_METHOD_new(cmp) SKM_sk_new(EVP_PKEY_METHOD, (cmp)) -# define sk_EVP_PKEY_METHOD_new_null() SKM_sk_new_null(EVP_PKEY_METHOD) -# define sk_EVP_PKEY_METHOD_free(st) SKM_sk_free(EVP_PKEY_METHOD, (st)) -# define sk_EVP_PKEY_METHOD_num(st) SKM_sk_num(EVP_PKEY_METHOD, (st)) -# define sk_EVP_PKEY_METHOD_value(st, i) SKM_sk_value(EVP_PKEY_METHOD, (st), (i)) -# define sk_EVP_PKEY_METHOD_set(st, i, val) SKM_sk_set(EVP_PKEY_METHOD, (st), (i), (val)) -# define sk_EVP_PKEY_METHOD_zero(st) SKM_sk_zero(EVP_PKEY_METHOD, (st)) -# define sk_EVP_PKEY_METHOD_push(st, val) SKM_sk_push(EVP_PKEY_METHOD, (st), (val)) -# define sk_EVP_PKEY_METHOD_unshift(st, val) SKM_sk_unshift(EVP_PKEY_METHOD, (st), (val)) -# define sk_EVP_PKEY_METHOD_find(st, val) SKM_sk_find(EVP_PKEY_METHOD, (st), (val)) -# define sk_EVP_PKEY_METHOD_find_ex(st, val) SKM_sk_find_ex(EVP_PKEY_METHOD, (st), (val)) -# define sk_EVP_PKEY_METHOD_delete(st, i) SKM_sk_delete(EVP_PKEY_METHOD, (st), (i)) -# define sk_EVP_PKEY_METHOD_delete_ptr(st, ptr) SKM_sk_delete_ptr(EVP_PKEY_METHOD, (st), (ptr)) -# define sk_EVP_PKEY_METHOD_insert(st, val, i) SKM_sk_insert(EVP_PKEY_METHOD, (st), (val), (i)) -# define sk_EVP_PKEY_METHOD_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(EVP_PKEY_METHOD, (st), (cmp)) -# define sk_EVP_PKEY_METHOD_dup(st) SKM_sk_dup(EVP_PKEY_METHOD, st) -# define sk_EVP_PKEY_METHOD_pop_free(st, free_func) SKM_sk_pop_free(EVP_PKEY_METHOD, (st), (free_func)) -# define sk_EVP_PKEY_METHOD_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(EVP_PKEY_METHOD, (st), (copy_func), (free_func)) -# define sk_EVP_PKEY_METHOD_shift(st) SKM_sk_shift(EVP_PKEY_METHOD, (st)) -# define sk_EVP_PKEY_METHOD_pop(st) SKM_sk_pop(EVP_PKEY_METHOD, (st)) -# define sk_EVP_PKEY_METHOD_sort(st) SKM_sk_sort(EVP_PKEY_METHOD, (st)) -# define sk_EVP_PKEY_METHOD_is_sorted(st) SKM_sk_is_sorted(EVP_PKEY_METHOD, (st)) -# define sk_GENERAL_NAME_new(cmp) SKM_sk_new(GENERAL_NAME, (cmp)) -# define sk_GENERAL_NAME_new_null() SKM_sk_new_null(GENERAL_NAME) -# define sk_GENERAL_NAME_free(st) SKM_sk_free(GENERAL_NAME, (st)) -# define sk_GENERAL_NAME_num(st) SKM_sk_num(GENERAL_NAME, (st)) -# define sk_GENERAL_NAME_value(st, i) SKM_sk_value(GENERAL_NAME, (st), (i)) -# define sk_GENERAL_NAME_set(st, i, val) SKM_sk_set(GENERAL_NAME, (st), (i), (val)) -# define sk_GENERAL_NAME_zero(st) SKM_sk_zero(GENERAL_NAME, (st)) -# define sk_GENERAL_NAME_push(st, val) SKM_sk_push(GENERAL_NAME, (st), (val)) -# define sk_GENERAL_NAME_unshift(st, val) SKM_sk_unshift(GENERAL_NAME, (st), (val)) -# define sk_GENERAL_NAME_find(st, val) SKM_sk_find(GENERAL_NAME, (st), (val)) -# define sk_GENERAL_NAME_find_ex(st, val) SKM_sk_find_ex(GENERAL_NAME, (st), (val)) -# define sk_GENERAL_NAME_delete(st, i) SKM_sk_delete(GENERAL_NAME, (st), (i)) -# define sk_GENERAL_NAME_delete_ptr(st, ptr) SKM_sk_delete_ptr(GENERAL_NAME, (st), (ptr)) -# define sk_GENERAL_NAME_insert(st, val, i) SKM_sk_insert(GENERAL_NAME, (st), (val), (i)) -# define sk_GENERAL_NAME_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(GENERAL_NAME, (st), (cmp)) -# define sk_GENERAL_NAME_dup(st) SKM_sk_dup(GENERAL_NAME, st) -# define sk_GENERAL_NAME_pop_free(st, free_func) SKM_sk_pop_free(GENERAL_NAME, (st), (free_func)) -# define sk_GENERAL_NAME_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(GENERAL_NAME, (st), (copy_func), (free_func)) -# define sk_GENERAL_NAME_shift(st) SKM_sk_shift(GENERAL_NAME, (st)) -# define sk_GENERAL_NAME_pop(st) SKM_sk_pop(GENERAL_NAME, (st)) -# define sk_GENERAL_NAME_sort(st) SKM_sk_sort(GENERAL_NAME, (st)) -# define sk_GENERAL_NAME_is_sorted(st) SKM_sk_is_sorted(GENERAL_NAME, (st)) -# define sk_GENERAL_NAMES_new(cmp) SKM_sk_new(GENERAL_NAMES, (cmp)) -# define sk_GENERAL_NAMES_new_null() SKM_sk_new_null(GENERAL_NAMES) -# define sk_GENERAL_NAMES_free(st) SKM_sk_free(GENERAL_NAMES, (st)) -# define sk_GENERAL_NAMES_num(st) SKM_sk_num(GENERAL_NAMES, (st)) -# define sk_GENERAL_NAMES_value(st, i) SKM_sk_value(GENERAL_NAMES, (st), (i)) -# define sk_GENERAL_NAMES_set(st, i, val) SKM_sk_set(GENERAL_NAMES, (st), (i), (val)) -# define sk_GENERAL_NAMES_zero(st) SKM_sk_zero(GENERAL_NAMES, (st)) -# define sk_GENERAL_NAMES_push(st, val) SKM_sk_push(GENERAL_NAMES, (st), (val)) -# define sk_GENERAL_NAMES_unshift(st, val) SKM_sk_unshift(GENERAL_NAMES, (st), (val)) -# define sk_GENERAL_NAMES_find(st, val) SKM_sk_find(GENERAL_NAMES, (st), (val)) -# define sk_GENERAL_NAMES_find_ex(st, val) SKM_sk_find_ex(GENERAL_NAMES, (st), (val)) -# define sk_GENERAL_NAMES_delete(st, i) SKM_sk_delete(GENERAL_NAMES, (st), (i)) -# define sk_GENERAL_NAMES_delete_ptr(st, ptr) SKM_sk_delete_ptr(GENERAL_NAMES, (st), (ptr)) -# define sk_GENERAL_NAMES_insert(st, val, i) SKM_sk_insert(GENERAL_NAMES, (st), (val), (i)) -# define sk_GENERAL_NAMES_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(GENERAL_NAMES, (st), (cmp)) -# define sk_GENERAL_NAMES_dup(st) SKM_sk_dup(GENERAL_NAMES, st) -# define sk_GENERAL_NAMES_pop_free(st, free_func) SKM_sk_pop_free(GENERAL_NAMES, (st), (free_func)) -# define sk_GENERAL_NAMES_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(GENERAL_NAMES, (st), (copy_func), (free_func)) -# define sk_GENERAL_NAMES_shift(st) SKM_sk_shift(GENERAL_NAMES, (st)) -# define sk_GENERAL_NAMES_pop(st) SKM_sk_pop(GENERAL_NAMES, (st)) -# define sk_GENERAL_NAMES_sort(st) SKM_sk_sort(GENERAL_NAMES, (st)) -# define sk_GENERAL_NAMES_is_sorted(st) SKM_sk_is_sorted(GENERAL_NAMES, (st)) -# define sk_GENERAL_SUBTREE_new(cmp) SKM_sk_new(GENERAL_SUBTREE, (cmp)) -# define sk_GENERAL_SUBTREE_new_null() SKM_sk_new_null(GENERAL_SUBTREE) -# define sk_GENERAL_SUBTREE_free(st) SKM_sk_free(GENERAL_SUBTREE, (st)) -# define sk_GENERAL_SUBTREE_num(st) SKM_sk_num(GENERAL_SUBTREE, (st)) -# define sk_GENERAL_SUBTREE_value(st, i) SKM_sk_value(GENERAL_SUBTREE, (st), (i)) -# define sk_GENERAL_SUBTREE_set(st, i, val) SKM_sk_set(GENERAL_SUBTREE, (st), (i), (val)) -# define sk_GENERAL_SUBTREE_zero(st) SKM_sk_zero(GENERAL_SUBTREE, (st)) -# define sk_GENERAL_SUBTREE_push(st, val) SKM_sk_push(GENERAL_SUBTREE, (st), (val)) -# define sk_GENERAL_SUBTREE_unshift(st, val) SKM_sk_unshift(GENERAL_SUBTREE, (st), (val)) -# define sk_GENERAL_SUBTREE_find(st, val) SKM_sk_find(GENERAL_SUBTREE, (st), (val)) -# define sk_GENERAL_SUBTREE_find_ex(st, val) SKM_sk_find_ex(GENERAL_SUBTREE, (st), (val)) -# define sk_GENERAL_SUBTREE_delete(st, i) SKM_sk_delete(GENERAL_SUBTREE, (st), (i)) -# define sk_GENERAL_SUBTREE_delete_ptr(st, ptr) SKM_sk_delete_ptr(GENERAL_SUBTREE, (st), (ptr)) -# define sk_GENERAL_SUBTREE_insert(st, val, i) SKM_sk_insert(GENERAL_SUBTREE, (st), (val), (i)) -# define sk_GENERAL_SUBTREE_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(GENERAL_SUBTREE, (st), (cmp)) -# define sk_GENERAL_SUBTREE_dup(st) SKM_sk_dup(GENERAL_SUBTREE, st) -# define sk_GENERAL_SUBTREE_pop_free(st, free_func) SKM_sk_pop_free(GENERAL_SUBTREE, (st), (free_func)) -# define sk_GENERAL_SUBTREE_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(GENERAL_SUBTREE, (st), (copy_func), (free_func)) -# define sk_GENERAL_SUBTREE_shift(st) SKM_sk_shift(GENERAL_SUBTREE, (st)) -# define sk_GENERAL_SUBTREE_pop(st) SKM_sk_pop(GENERAL_SUBTREE, (st)) -# define sk_GENERAL_SUBTREE_sort(st) SKM_sk_sort(GENERAL_SUBTREE, (st)) -# define sk_GENERAL_SUBTREE_is_sorted(st) SKM_sk_is_sorted(GENERAL_SUBTREE, (st)) -# define sk_IPAddressFamily_new(cmp) SKM_sk_new(IPAddressFamily, (cmp)) -# define sk_IPAddressFamily_new_null() SKM_sk_new_null(IPAddressFamily) -# define sk_IPAddressFamily_free(st) SKM_sk_free(IPAddressFamily, (st)) -# define sk_IPAddressFamily_num(st) SKM_sk_num(IPAddressFamily, (st)) -# define sk_IPAddressFamily_value(st, i) SKM_sk_value(IPAddressFamily, (st), (i)) -# define sk_IPAddressFamily_set(st, i, val) SKM_sk_set(IPAddressFamily, (st), (i), (val)) -# define sk_IPAddressFamily_zero(st) SKM_sk_zero(IPAddressFamily, (st)) -# define sk_IPAddressFamily_push(st, val) SKM_sk_push(IPAddressFamily, (st), (val)) -# define sk_IPAddressFamily_unshift(st, val) SKM_sk_unshift(IPAddressFamily, (st), (val)) -# define sk_IPAddressFamily_find(st, val) SKM_sk_find(IPAddressFamily, (st), (val)) -# define sk_IPAddressFamily_find_ex(st, val) SKM_sk_find_ex(IPAddressFamily, (st), (val)) -# define sk_IPAddressFamily_delete(st, i) SKM_sk_delete(IPAddressFamily, (st), (i)) -# define sk_IPAddressFamily_delete_ptr(st, ptr) SKM_sk_delete_ptr(IPAddressFamily, (st), (ptr)) -# define sk_IPAddressFamily_insert(st, val, i) SKM_sk_insert(IPAddressFamily, (st), (val), (i)) -# define sk_IPAddressFamily_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(IPAddressFamily, (st), (cmp)) -# define sk_IPAddressFamily_dup(st) SKM_sk_dup(IPAddressFamily, st) -# define sk_IPAddressFamily_pop_free(st, free_func) SKM_sk_pop_free(IPAddressFamily, (st), (free_func)) -# define sk_IPAddressFamily_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(IPAddressFamily, (st), (copy_func), (free_func)) -# define sk_IPAddressFamily_shift(st) SKM_sk_shift(IPAddressFamily, (st)) -# define sk_IPAddressFamily_pop(st) SKM_sk_pop(IPAddressFamily, (st)) -# define sk_IPAddressFamily_sort(st) SKM_sk_sort(IPAddressFamily, (st)) -# define sk_IPAddressFamily_is_sorted(st) SKM_sk_is_sorted(IPAddressFamily, (st)) -# define sk_IPAddressOrRange_new(cmp) SKM_sk_new(IPAddressOrRange, (cmp)) -# define sk_IPAddressOrRange_new_null() SKM_sk_new_null(IPAddressOrRange) -# define sk_IPAddressOrRange_free(st) SKM_sk_free(IPAddressOrRange, (st)) -# define sk_IPAddressOrRange_num(st) SKM_sk_num(IPAddressOrRange, (st)) -# define sk_IPAddressOrRange_value(st, i) SKM_sk_value(IPAddressOrRange, (st), (i)) -# define sk_IPAddressOrRange_set(st, i, val) SKM_sk_set(IPAddressOrRange, (st), (i), (val)) -# define sk_IPAddressOrRange_zero(st) SKM_sk_zero(IPAddressOrRange, (st)) -# define sk_IPAddressOrRange_push(st, val) SKM_sk_push(IPAddressOrRange, (st), (val)) -# define sk_IPAddressOrRange_unshift(st, val) SKM_sk_unshift(IPAddressOrRange, (st), (val)) -# define sk_IPAddressOrRange_find(st, val) SKM_sk_find(IPAddressOrRange, (st), (val)) -# define sk_IPAddressOrRange_find_ex(st, val) SKM_sk_find_ex(IPAddressOrRange, (st), (val)) -# define sk_IPAddressOrRange_delete(st, i) SKM_sk_delete(IPAddressOrRange, (st), (i)) -# define sk_IPAddressOrRange_delete_ptr(st, ptr) SKM_sk_delete_ptr(IPAddressOrRange, (st), (ptr)) -# define sk_IPAddressOrRange_insert(st, val, i) SKM_sk_insert(IPAddressOrRange, (st), (val), (i)) -# define sk_IPAddressOrRange_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(IPAddressOrRange, (st), (cmp)) -# define sk_IPAddressOrRange_dup(st) SKM_sk_dup(IPAddressOrRange, st) -# define sk_IPAddressOrRange_pop_free(st, free_func) SKM_sk_pop_free(IPAddressOrRange, (st), (free_func)) -# define sk_IPAddressOrRange_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(IPAddressOrRange, (st), (copy_func), (free_func)) -# define sk_IPAddressOrRange_shift(st) SKM_sk_shift(IPAddressOrRange, (st)) -# define sk_IPAddressOrRange_pop(st) SKM_sk_pop(IPAddressOrRange, (st)) -# define sk_IPAddressOrRange_sort(st) SKM_sk_sort(IPAddressOrRange, (st)) -# define sk_IPAddressOrRange_is_sorted(st) SKM_sk_is_sorted(IPAddressOrRange, (st)) -# define sk_KRB5_APREQBODY_new(cmp) SKM_sk_new(KRB5_APREQBODY, (cmp)) -# define sk_KRB5_APREQBODY_new_null() SKM_sk_new_null(KRB5_APREQBODY) -# define sk_KRB5_APREQBODY_free(st) SKM_sk_free(KRB5_APREQBODY, (st)) -# define sk_KRB5_APREQBODY_num(st) SKM_sk_num(KRB5_APREQBODY, (st)) -# define sk_KRB5_APREQBODY_value(st, i) SKM_sk_value(KRB5_APREQBODY, (st), (i)) -# define sk_KRB5_APREQBODY_set(st, i, val) SKM_sk_set(KRB5_APREQBODY, (st), (i), (val)) -# define sk_KRB5_APREQBODY_zero(st) SKM_sk_zero(KRB5_APREQBODY, (st)) -# define sk_KRB5_APREQBODY_push(st, val) SKM_sk_push(KRB5_APREQBODY, (st), (val)) -# define sk_KRB5_APREQBODY_unshift(st, val) SKM_sk_unshift(KRB5_APREQBODY, (st), (val)) -# define sk_KRB5_APREQBODY_find(st, val) SKM_sk_find(KRB5_APREQBODY, (st), (val)) -# define sk_KRB5_APREQBODY_find_ex(st, val) SKM_sk_find_ex(KRB5_APREQBODY, (st), (val)) -# define sk_KRB5_APREQBODY_delete(st, i) SKM_sk_delete(KRB5_APREQBODY, (st), (i)) -# define sk_KRB5_APREQBODY_delete_ptr(st, ptr) SKM_sk_delete_ptr(KRB5_APREQBODY, (st), (ptr)) -# define sk_KRB5_APREQBODY_insert(st, val, i) SKM_sk_insert(KRB5_APREQBODY, (st), (val), (i)) -# define sk_KRB5_APREQBODY_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(KRB5_APREQBODY, (st), (cmp)) -# define sk_KRB5_APREQBODY_dup(st) SKM_sk_dup(KRB5_APREQBODY, st) -# define sk_KRB5_APREQBODY_pop_free(st, free_func) SKM_sk_pop_free(KRB5_APREQBODY, (st), (free_func)) -# define sk_KRB5_APREQBODY_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(KRB5_APREQBODY, (st), (copy_func), (free_func)) -# define sk_KRB5_APREQBODY_shift(st) SKM_sk_shift(KRB5_APREQBODY, (st)) -# define sk_KRB5_APREQBODY_pop(st) SKM_sk_pop(KRB5_APREQBODY, (st)) -# define sk_KRB5_APREQBODY_sort(st) SKM_sk_sort(KRB5_APREQBODY, (st)) -# define sk_KRB5_APREQBODY_is_sorted(st) SKM_sk_is_sorted(KRB5_APREQBODY, (st)) -# define sk_KRB5_AUTHDATA_new(cmp) SKM_sk_new(KRB5_AUTHDATA, (cmp)) -# define sk_KRB5_AUTHDATA_new_null() SKM_sk_new_null(KRB5_AUTHDATA) -# define sk_KRB5_AUTHDATA_free(st) SKM_sk_free(KRB5_AUTHDATA, (st)) -# define sk_KRB5_AUTHDATA_num(st) SKM_sk_num(KRB5_AUTHDATA, (st)) -# define sk_KRB5_AUTHDATA_value(st, i) SKM_sk_value(KRB5_AUTHDATA, (st), (i)) -# define sk_KRB5_AUTHDATA_set(st, i, val) SKM_sk_set(KRB5_AUTHDATA, (st), (i), (val)) -# define sk_KRB5_AUTHDATA_zero(st) SKM_sk_zero(KRB5_AUTHDATA, (st)) -# define sk_KRB5_AUTHDATA_push(st, val) SKM_sk_push(KRB5_AUTHDATA, (st), (val)) -# define sk_KRB5_AUTHDATA_unshift(st, val) SKM_sk_unshift(KRB5_AUTHDATA, (st), (val)) -# define sk_KRB5_AUTHDATA_find(st, val) SKM_sk_find(KRB5_AUTHDATA, (st), (val)) -# define sk_KRB5_AUTHDATA_find_ex(st, val) SKM_sk_find_ex(KRB5_AUTHDATA, (st), (val)) -# define sk_KRB5_AUTHDATA_delete(st, i) SKM_sk_delete(KRB5_AUTHDATA, (st), (i)) -# define sk_KRB5_AUTHDATA_delete_ptr(st, ptr) SKM_sk_delete_ptr(KRB5_AUTHDATA, (st), (ptr)) -# define sk_KRB5_AUTHDATA_insert(st, val, i) SKM_sk_insert(KRB5_AUTHDATA, (st), (val), (i)) -# define sk_KRB5_AUTHDATA_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(KRB5_AUTHDATA, (st), (cmp)) -# define sk_KRB5_AUTHDATA_dup(st) SKM_sk_dup(KRB5_AUTHDATA, st) -# define sk_KRB5_AUTHDATA_pop_free(st, free_func) SKM_sk_pop_free(KRB5_AUTHDATA, (st), (free_func)) -# define sk_KRB5_AUTHDATA_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(KRB5_AUTHDATA, (st), (copy_func), (free_func)) -# define sk_KRB5_AUTHDATA_shift(st) SKM_sk_shift(KRB5_AUTHDATA, (st)) -# define sk_KRB5_AUTHDATA_pop(st) SKM_sk_pop(KRB5_AUTHDATA, (st)) -# define sk_KRB5_AUTHDATA_sort(st) SKM_sk_sort(KRB5_AUTHDATA, (st)) -# define sk_KRB5_AUTHDATA_is_sorted(st) SKM_sk_is_sorted(KRB5_AUTHDATA, (st)) -# define sk_KRB5_AUTHENTBODY_new(cmp) SKM_sk_new(KRB5_AUTHENTBODY, (cmp)) -# define sk_KRB5_AUTHENTBODY_new_null() SKM_sk_new_null(KRB5_AUTHENTBODY) -# define sk_KRB5_AUTHENTBODY_free(st) SKM_sk_free(KRB5_AUTHENTBODY, (st)) -# define sk_KRB5_AUTHENTBODY_num(st) SKM_sk_num(KRB5_AUTHENTBODY, (st)) -# define sk_KRB5_AUTHENTBODY_value(st, i) SKM_sk_value(KRB5_AUTHENTBODY, (st), (i)) -# define sk_KRB5_AUTHENTBODY_set(st, i, val) SKM_sk_set(KRB5_AUTHENTBODY, (st), (i), (val)) -# define sk_KRB5_AUTHENTBODY_zero(st) SKM_sk_zero(KRB5_AUTHENTBODY, (st)) -# define sk_KRB5_AUTHENTBODY_push(st, val) SKM_sk_push(KRB5_AUTHENTBODY, (st), (val)) -# define sk_KRB5_AUTHENTBODY_unshift(st, val) SKM_sk_unshift(KRB5_AUTHENTBODY, (st), (val)) -# define sk_KRB5_AUTHENTBODY_find(st, val) SKM_sk_find(KRB5_AUTHENTBODY, (st), (val)) -# define sk_KRB5_AUTHENTBODY_find_ex(st, val) SKM_sk_find_ex(KRB5_AUTHENTBODY, (st), (val)) -# define sk_KRB5_AUTHENTBODY_delete(st, i) SKM_sk_delete(KRB5_AUTHENTBODY, (st), (i)) -# define sk_KRB5_AUTHENTBODY_delete_ptr(st, ptr) SKM_sk_delete_ptr(KRB5_AUTHENTBODY, (st), (ptr)) -# define sk_KRB5_AUTHENTBODY_insert(st, val, i) SKM_sk_insert(KRB5_AUTHENTBODY, (st), (val), (i)) -# define sk_KRB5_AUTHENTBODY_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(KRB5_AUTHENTBODY, (st), (cmp)) -# define sk_KRB5_AUTHENTBODY_dup(st) SKM_sk_dup(KRB5_AUTHENTBODY, st) -# define sk_KRB5_AUTHENTBODY_pop_free(st, free_func) SKM_sk_pop_free(KRB5_AUTHENTBODY, (st), (free_func)) -# define sk_KRB5_AUTHENTBODY_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(KRB5_AUTHENTBODY, (st), (copy_func), (free_func)) -# define sk_KRB5_AUTHENTBODY_shift(st) SKM_sk_shift(KRB5_AUTHENTBODY, (st)) -# define sk_KRB5_AUTHENTBODY_pop(st) SKM_sk_pop(KRB5_AUTHENTBODY, (st)) -# define sk_KRB5_AUTHENTBODY_sort(st) SKM_sk_sort(KRB5_AUTHENTBODY, (st)) -# define sk_KRB5_AUTHENTBODY_is_sorted(st) SKM_sk_is_sorted(KRB5_AUTHENTBODY, (st)) -# define sk_KRB5_CHECKSUM_new(cmp) SKM_sk_new(KRB5_CHECKSUM, (cmp)) -# define sk_KRB5_CHECKSUM_new_null() SKM_sk_new_null(KRB5_CHECKSUM) -# define sk_KRB5_CHECKSUM_free(st) SKM_sk_free(KRB5_CHECKSUM, (st)) -# define sk_KRB5_CHECKSUM_num(st) SKM_sk_num(KRB5_CHECKSUM, (st)) -# define sk_KRB5_CHECKSUM_value(st, i) SKM_sk_value(KRB5_CHECKSUM, (st), (i)) -# define sk_KRB5_CHECKSUM_set(st, i, val) SKM_sk_set(KRB5_CHECKSUM, (st), (i), (val)) -# define sk_KRB5_CHECKSUM_zero(st) SKM_sk_zero(KRB5_CHECKSUM, (st)) -# define sk_KRB5_CHECKSUM_push(st, val) SKM_sk_push(KRB5_CHECKSUM, (st), (val)) -# define sk_KRB5_CHECKSUM_unshift(st, val) SKM_sk_unshift(KRB5_CHECKSUM, (st), (val)) -# define sk_KRB5_CHECKSUM_find(st, val) SKM_sk_find(KRB5_CHECKSUM, (st), (val)) -# define sk_KRB5_CHECKSUM_find_ex(st, val) SKM_sk_find_ex(KRB5_CHECKSUM, (st), (val)) -# define sk_KRB5_CHECKSUM_delete(st, i) SKM_sk_delete(KRB5_CHECKSUM, (st), (i)) -# define sk_KRB5_CHECKSUM_delete_ptr(st, ptr) SKM_sk_delete_ptr(KRB5_CHECKSUM, (st), (ptr)) -# define sk_KRB5_CHECKSUM_insert(st, val, i) SKM_sk_insert(KRB5_CHECKSUM, (st), (val), (i)) -# define sk_KRB5_CHECKSUM_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(KRB5_CHECKSUM, (st), (cmp)) -# define sk_KRB5_CHECKSUM_dup(st) SKM_sk_dup(KRB5_CHECKSUM, st) -# define sk_KRB5_CHECKSUM_pop_free(st, free_func) SKM_sk_pop_free(KRB5_CHECKSUM, (st), (free_func)) -# define sk_KRB5_CHECKSUM_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(KRB5_CHECKSUM, (st), (copy_func), (free_func)) -# define sk_KRB5_CHECKSUM_shift(st) SKM_sk_shift(KRB5_CHECKSUM, (st)) -# define sk_KRB5_CHECKSUM_pop(st) SKM_sk_pop(KRB5_CHECKSUM, (st)) -# define sk_KRB5_CHECKSUM_sort(st) SKM_sk_sort(KRB5_CHECKSUM, (st)) -# define sk_KRB5_CHECKSUM_is_sorted(st) SKM_sk_is_sorted(KRB5_CHECKSUM, (st)) -# define sk_KRB5_ENCDATA_new(cmp) SKM_sk_new(KRB5_ENCDATA, (cmp)) -# define sk_KRB5_ENCDATA_new_null() SKM_sk_new_null(KRB5_ENCDATA) -# define sk_KRB5_ENCDATA_free(st) SKM_sk_free(KRB5_ENCDATA, (st)) -# define sk_KRB5_ENCDATA_num(st) SKM_sk_num(KRB5_ENCDATA, (st)) -# define sk_KRB5_ENCDATA_value(st, i) SKM_sk_value(KRB5_ENCDATA, (st), (i)) -# define sk_KRB5_ENCDATA_set(st, i, val) SKM_sk_set(KRB5_ENCDATA, (st), (i), (val)) -# define sk_KRB5_ENCDATA_zero(st) SKM_sk_zero(KRB5_ENCDATA, (st)) -# define sk_KRB5_ENCDATA_push(st, val) SKM_sk_push(KRB5_ENCDATA, (st), (val)) -# define sk_KRB5_ENCDATA_unshift(st, val) SKM_sk_unshift(KRB5_ENCDATA, (st), (val)) -# define sk_KRB5_ENCDATA_find(st, val) SKM_sk_find(KRB5_ENCDATA, (st), (val)) -# define sk_KRB5_ENCDATA_find_ex(st, val) SKM_sk_find_ex(KRB5_ENCDATA, (st), (val)) -# define sk_KRB5_ENCDATA_delete(st, i) SKM_sk_delete(KRB5_ENCDATA, (st), (i)) -# define sk_KRB5_ENCDATA_delete_ptr(st, ptr) SKM_sk_delete_ptr(KRB5_ENCDATA, (st), (ptr)) -# define sk_KRB5_ENCDATA_insert(st, val, i) SKM_sk_insert(KRB5_ENCDATA, (st), (val), (i)) -# define sk_KRB5_ENCDATA_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(KRB5_ENCDATA, (st), (cmp)) -# define sk_KRB5_ENCDATA_dup(st) SKM_sk_dup(KRB5_ENCDATA, st) -# define sk_KRB5_ENCDATA_pop_free(st, free_func) SKM_sk_pop_free(KRB5_ENCDATA, (st), (free_func)) -# define sk_KRB5_ENCDATA_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(KRB5_ENCDATA, (st), (copy_func), (free_func)) -# define sk_KRB5_ENCDATA_shift(st) SKM_sk_shift(KRB5_ENCDATA, (st)) -# define sk_KRB5_ENCDATA_pop(st) SKM_sk_pop(KRB5_ENCDATA, (st)) -# define sk_KRB5_ENCDATA_sort(st) SKM_sk_sort(KRB5_ENCDATA, (st)) -# define sk_KRB5_ENCDATA_is_sorted(st) SKM_sk_is_sorted(KRB5_ENCDATA, (st)) -# define sk_KRB5_ENCKEY_new(cmp) SKM_sk_new(KRB5_ENCKEY, (cmp)) -# define sk_KRB5_ENCKEY_new_null() SKM_sk_new_null(KRB5_ENCKEY) -# define sk_KRB5_ENCKEY_free(st) SKM_sk_free(KRB5_ENCKEY, (st)) -# define sk_KRB5_ENCKEY_num(st) SKM_sk_num(KRB5_ENCKEY, (st)) -# define sk_KRB5_ENCKEY_value(st, i) SKM_sk_value(KRB5_ENCKEY, (st), (i)) -# define sk_KRB5_ENCKEY_set(st, i, val) SKM_sk_set(KRB5_ENCKEY, (st), (i), (val)) -# define sk_KRB5_ENCKEY_zero(st) SKM_sk_zero(KRB5_ENCKEY, (st)) -# define sk_KRB5_ENCKEY_push(st, val) SKM_sk_push(KRB5_ENCKEY, (st), (val)) -# define sk_KRB5_ENCKEY_unshift(st, val) SKM_sk_unshift(KRB5_ENCKEY, (st), (val)) -# define sk_KRB5_ENCKEY_find(st, val) SKM_sk_find(KRB5_ENCKEY, (st), (val)) -# define sk_KRB5_ENCKEY_find_ex(st, val) SKM_sk_find_ex(KRB5_ENCKEY, (st), (val)) -# define sk_KRB5_ENCKEY_delete(st, i) SKM_sk_delete(KRB5_ENCKEY, (st), (i)) -# define sk_KRB5_ENCKEY_delete_ptr(st, ptr) SKM_sk_delete_ptr(KRB5_ENCKEY, (st), (ptr)) -# define sk_KRB5_ENCKEY_insert(st, val, i) SKM_sk_insert(KRB5_ENCKEY, (st), (val), (i)) -# define sk_KRB5_ENCKEY_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(KRB5_ENCKEY, (st), (cmp)) -# define sk_KRB5_ENCKEY_dup(st) SKM_sk_dup(KRB5_ENCKEY, st) -# define sk_KRB5_ENCKEY_pop_free(st, free_func) SKM_sk_pop_free(KRB5_ENCKEY, (st), (free_func)) -# define sk_KRB5_ENCKEY_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(KRB5_ENCKEY, (st), (copy_func), (free_func)) -# define sk_KRB5_ENCKEY_shift(st) SKM_sk_shift(KRB5_ENCKEY, (st)) -# define sk_KRB5_ENCKEY_pop(st) SKM_sk_pop(KRB5_ENCKEY, (st)) -# define sk_KRB5_ENCKEY_sort(st) SKM_sk_sort(KRB5_ENCKEY, (st)) -# define sk_KRB5_ENCKEY_is_sorted(st) SKM_sk_is_sorted(KRB5_ENCKEY, (st)) -# define sk_KRB5_PRINCNAME_new(cmp) SKM_sk_new(KRB5_PRINCNAME, (cmp)) -# define sk_KRB5_PRINCNAME_new_null() SKM_sk_new_null(KRB5_PRINCNAME) -# define sk_KRB5_PRINCNAME_free(st) SKM_sk_free(KRB5_PRINCNAME, (st)) -# define sk_KRB5_PRINCNAME_num(st) SKM_sk_num(KRB5_PRINCNAME, (st)) -# define sk_KRB5_PRINCNAME_value(st, i) SKM_sk_value(KRB5_PRINCNAME, (st), (i)) -# define sk_KRB5_PRINCNAME_set(st, i, val) SKM_sk_set(KRB5_PRINCNAME, (st), (i), (val)) -# define sk_KRB5_PRINCNAME_zero(st) SKM_sk_zero(KRB5_PRINCNAME, (st)) -# define sk_KRB5_PRINCNAME_push(st, val) SKM_sk_push(KRB5_PRINCNAME, (st), (val)) -# define sk_KRB5_PRINCNAME_unshift(st, val) SKM_sk_unshift(KRB5_PRINCNAME, (st), (val)) -# define sk_KRB5_PRINCNAME_find(st, val) SKM_sk_find(KRB5_PRINCNAME, (st), (val)) -# define sk_KRB5_PRINCNAME_find_ex(st, val) SKM_sk_find_ex(KRB5_PRINCNAME, (st), (val)) -# define sk_KRB5_PRINCNAME_delete(st, i) SKM_sk_delete(KRB5_PRINCNAME, (st), (i)) -# define sk_KRB5_PRINCNAME_delete_ptr(st, ptr) SKM_sk_delete_ptr(KRB5_PRINCNAME, (st), (ptr)) -# define sk_KRB5_PRINCNAME_insert(st, val, i) SKM_sk_insert(KRB5_PRINCNAME, (st), (val), (i)) -# define sk_KRB5_PRINCNAME_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(KRB5_PRINCNAME, (st), (cmp)) -# define sk_KRB5_PRINCNAME_dup(st) SKM_sk_dup(KRB5_PRINCNAME, st) -# define sk_KRB5_PRINCNAME_pop_free(st, free_func) SKM_sk_pop_free(KRB5_PRINCNAME, (st), (free_func)) -# define sk_KRB5_PRINCNAME_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(KRB5_PRINCNAME, (st), (copy_func), (free_func)) -# define sk_KRB5_PRINCNAME_shift(st) SKM_sk_shift(KRB5_PRINCNAME, (st)) -# define sk_KRB5_PRINCNAME_pop(st) SKM_sk_pop(KRB5_PRINCNAME, (st)) -# define sk_KRB5_PRINCNAME_sort(st) SKM_sk_sort(KRB5_PRINCNAME, (st)) -# define sk_KRB5_PRINCNAME_is_sorted(st) SKM_sk_is_sorted(KRB5_PRINCNAME, (st)) -# define sk_KRB5_TKTBODY_new(cmp) SKM_sk_new(KRB5_TKTBODY, (cmp)) -# define sk_KRB5_TKTBODY_new_null() SKM_sk_new_null(KRB5_TKTBODY) -# define sk_KRB5_TKTBODY_free(st) SKM_sk_free(KRB5_TKTBODY, (st)) -# define sk_KRB5_TKTBODY_num(st) SKM_sk_num(KRB5_TKTBODY, (st)) -# define sk_KRB5_TKTBODY_value(st, i) SKM_sk_value(KRB5_TKTBODY, (st), (i)) -# define sk_KRB5_TKTBODY_set(st, i, val) SKM_sk_set(KRB5_TKTBODY, (st), (i), (val)) -# define sk_KRB5_TKTBODY_zero(st) SKM_sk_zero(KRB5_TKTBODY, (st)) -# define sk_KRB5_TKTBODY_push(st, val) SKM_sk_push(KRB5_TKTBODY, (st), (val)) -# define sk_KRB5_TKTBODY_unshift(st, val) SKM_sk_unshift(KRB5_TKTBODY, (st), (val)) -# define sk_KRB5_TKTBODY_find(st, val) SKM_sk_find(KRB5_TKTBODY, (st), (val)) -# define sk_KRB5_TKTBODY_find_ex(st, val) SKM_sk_find_ex(KRB5_TKTBODY, (st), (val)) -# define sk_KRB5_TKTBODY_delete(st, i) SKM_sk_delete(KRB5_TKTBODY, (st), (i)) -# define sk_KRB5_TKTBODY_delete_ptr(st, ptr) SKM_sk_delete_ptr(KRB5_TKTBODY, (st), (ptr)) -# define sk_KRB5_TKTBODY_insert(st, val, i) SKM_sk_insert(KRB5_TKTBODY, (st), (val), (i)) -# define sk_KRB5_TKTBODY_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(KRB5_TKTBODY, (st), (cmp)) -# define sk_KRB5_TKTBODY_dup(st) SKM_sk_dup(KRB5_TKTBODY, st) -# define sk_KRB5_TKTBODY_pop_free(st, free_func) SKM_sk_pop_free(KRB5_TKTBODY, (st), (free_func)) -# define sk_KRB5_TKTBODY_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(KRB5_TKTBODY, (st), (copy_func), (free_func)) -# define sk_KRB5_TKTBODY_shift(st) SKM_sk_shift(KRB5_TKTBODY, (st)) -# define sk_KRB5_TKTBODY_pop(st) SKM_sk_pop(KRB5_TKTBODY, (st)) -# define sk_KRB5_TKTBODY_sort(st) SKM_sk_sort(KRB5_TKTBODY, (st)) -# define sk_KRB5_TKTBODY_is_sorted(st) SKM_sk_is_sorted(KRB5_TKTBODY, (st)) -# define sk_MEM_OBJECT_DATA_new(cmp) SKM_sk_new(MEM_OBJECT_DATA, (cmp)) -# define sk_MEM_OBJECT_DATA_new_null() SKM_sk_new_null(MEM_OBJECT_DATA) -# define sk_MEM_OBJECT_DATA_free(st) SKM_sk_free(MEM_OBJECT_DATA, (st)) -# define sk_MEM_OBJECT_DATA_num(st) SKM_sk_num(MEM_OBJECT_DATA, (st)) -# define sk_MEM_OBJECT_DATA_value(st, i) SKM_sk_value(MEM_OBJECT_DATA, (st), (i)) -# define sk_MEM_OBJECT_DATA_set(st, i, val) SKM_sk_set(MEM_OBJECT_DATA, (st), (i), (val)) -# define sk_MEM_OBJECT_DATA_zero(st) SKM_sk_zero(MEM_OBJECT_DATA, (st)) -# define sk_MEM_OBJECT_DATA_push(st, val) SKM_sk_push(MEM_OBJECT_DATA, (st), (val)) -# define sk_MEM_OBJECT_DATA_unshift(st, val) SKM_sk_unshift(MEM_OBJECT_DATA, (st), (val)) -# define sk_MEM_OBJECT_DATA_find(st, val) SKM_sk_find(MEM_OBJECT_DATA, (st), (val)) -# define sk_MEM_OBJECT_DATA_find_ex(st, val) SKM_sk_find_ex(MEM_OBJECT_DATA, (st), (val)) -# define sk_MEM_OBJECT_DATA_delete(st, i) SKM_sk_delete(MEM_OBJECT_DATA, (st), (i)) -# define sk_MEM_OBJECT_DATA_delete_ptr(st, ptr) SKM_sk_delete_ptr(MEM_OBJECT_DATA, (st), (ptr)) -# define sk_MEM_OBJECT_DATA_insert(st, val, i) SKM_sk_insert(MEM_OBJECT_DATA, (st), (val), (i)) -# define sk_MEM_OBJECT_DATA_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(MEM_OBJECT_DATA, (st), (cmp)) -# define sk_MEM_OBJECT_DATA_dup(st) SKM_sk_dup(MEM_OBJECT_DATA, st) -# define sk_MEM_OBJECT_DATA_pop_free(st, free_func) SKM_sk_pop_free(MEM_OBJECT_DATA, (st), (free_func)) -# define sk_MEM_OBJECT_DATA_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(MEM_OBJECT_DATA, (st), (copy_func), (free_func)) -# define sk_MEM_OBJECT_DATA_shift(st) SKM_sk_shift(MEM_OBJECT_DATA, (st)) -# define sk_MEM_OBJECT_DATA_pop(st) SKM_sk_pop(MEM_OBJECT_DATA, (st)) -# define sk_MEM_OBJECT_DATA_sort(st) SKM_sk_sort(MEM_OBJECT_DATA, (st)) -# define sk_MEM_OBJECT_DATA_is_sorted(st) SKM_sk_is_sorted(MEM_OBJECT_DATA, (st)) -# define sk_MIME_HEADER_new(cmp) SKM_sk_new(MIME_HEADER, (cmp)) -# define sk_MIME_HEADER_new_null() SKM_sk_new_null(MIME_HEADER) -# define sk_MIME_HEADER_free(st) SKM_sk_free(MIME_HEADER, (st)) -# define sk_MIME_HEADER_num(st) SKM_sk_num(MIME_HEADER, (st)) -# define sk_MIME_HEADER_value(st, i) SKM_sk_value(MIME_HEADER, (st), (i)) -# define sk_MIME_HEADER_set(st, i, val) SKM_sk_set(MIME_HEADER, (st), (i), (val)) -# define sk_MIME_HEADER_zero(st) SKM_sk_zero(MIME_HEADER, (st)) -# define sk_MIME_HEADER_push(st, val) SKM_sk_push(MIME_HEADER, (st), (val)) -# define sk_MIME_HEADER_unshift(st, val) SKM_sk_unshift(MIME_HEADER, (st), (val)) -# define sk_MIME_HEADER_find(st, val) SKM_sk_find(MIME_HEADER, (st), (val)) -# define sk_MIME_HEADER_find_ex(st, val) SKM_sk_find_ex(MIME_HEADER, (st), (val)) -# define sk_MIME_HEADER_delete(st, i) SKM_sk_delete(MIME_HEADER, (st), (i)) -# define sk_MIME_HEADER_delete_ptr(st, ptr) SKM_sk_delete_ptr(MIME_HEADER, (st), (ptr)) -# define sk_MIME_HEADER_insert(st, val, i) SKM_sk_insert(MIME_HEADER, (st), (val), (i)) -# define sk_MIME_HEADER_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(MIME_HEADER, (st), (cmp)) -# define sk_MIME_HEADER_dup(st) SKM_sk_dup(MIME_HEADER, st) -# define sk_MIME_HEADER_pop_free(st, free_func) SKM_sk_pop_free(MIME_HEADER, (st), (free_func)) -# define sk_MIME_HEADER_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(MIME_HEADER, (st), (copy_func), (free_func)) -# define sk_MIME_HEADER_shift(st) SKM_sk_shift(MIME_HEADER, (st)) -# define sk_MIME_HEADER_pop(st) SKM_sk_pop(MIME_HEADER, (st)) -# define sk_MIME_HEADER_sort(st) SKM_sk_sort(MIME_HEADER, (st)) -# define sk_MIME_HEADER_is_sorted(st) SKM_sk_is_sorted(MIME_HEADER, (st)) -# define sk_MIME_PARAM_new(cmp) SKM_sk_new(MIME_PARAM, (cmp)) -# define sk_MIME_PARAM_new_null() SKM_sk_new_null(MIME_PARAM) -# define sk_MIME_PARAM_free(st) SKM_sk_free(MIME_PARAM, (st)) -# define sk_MIME_PARAM_num(st) SKM_sk_num(MIME_PARAM, (st)) -# define sk_MIME_PARAM_value(st, i) SKM_sk_value(MIME_PARAM, (st), (i)) -# define sk_MIME_PARAM_set(st, i, val) SKM_sk_set(MIME_PARAM, (st), (i), (val)) -# define sk_MIME_PARAM_zero(st) SKM_sk_zero(MIME_PARAM, (st)) -# define sk_MIME_PARAM_push(st, val) SKM_sk_push(MIME_PARAM, (st), (val)) -# define sk_MIME_PARAM_unshift(st, val) SKM_sk_unshift(MIME_PARAM, (st), (val)) -# define sk_MIME_PARAM_find(st, val) SKM_sk_find(MIME_PARAM, (st), (val)) -# define sk_MIME_PARAM_find_ex(st, val) SKM_sk_find_ex(MIME_PARAM, (st), (val)) -# define sk_MIME_PARAM_delete(st, i) SKM_sk_delete(MIME_PARAM, (st), (i)) -# define sk_MIME_PARAM_delete_ptr(st, ptr) SKM_sk_delete_ptr(MIME_PARAM, (st), (ptr)) -# define sk_MIME_PARAM_insert(st, val, i) SKM_sk_insert(MIME_PARAM, (st), (val), (i)) -# define sk_MIME_PARAM_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(MIME_PARAM, (st), (cmp)) -# define sk_MIME_PARAM_dup(st) SKM_sk_dup(MIME_PARAM, st) -# define sk_MIME_PARAM_pop_free(st, free_func) SKM_sk_pop_free(MIME_PARAM, (st), (free_func)) -# define sk_MIME_PARAM_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(MIME_PARAM, (st), (copy_func), (free_func)) -# define sk_MIME_PARAM_shift(st) SKM_sk_shift(MIME_PARAM, (st)) -# define sk_MIME_PARAM_pop(st) SKM_sk_pop(MIME_PARAM, (st)) -# define sk_MIME_PARAM_sort(st) SKM_sk_sort(MIME_PARAM, (st)) -# define sk_MIME_PARAM_is_sorted(st) SKM_sk_is_sorted(MIME_PARAM, (st)) -# define sk_NAME_FUNCS_new(cmp) SKM_sk_new(NAME_FUNCS, (cmp)) -# define sk_NAME_FUNCS_new_null() SKM_sk_new_null(NAME_FUNCS) -# define sk_NAME_FUNCS_free(st) SKM_sk_free(NAME_FUNCS, (st)) -# define sk_NAME_FUNCS_num(st) SKM_sk_num(NAME_FUNCS, (st)) -# define sk_NAME_FUNCS_value(st, i) SKM_sk_value(NAME_FUNCS, (st), (i)) -# define sk_NAME_FUNCS_set(st, i, val) SKM_sk_set(NAME_FUNCS, (st), (i), (val)) -# define sk_NAME_FUNCS_zero(st) SKM_sk_zero(NAME_FUNCS, (st)) -# define sk_NAME_FUNCS_push(st, val) SKM_sk_push(NAME_FUNCS, (st), (val)) -# define sk_NAME_FUNCS_unshift(st, val) SKM_sk_unshift(NAME_FUNCS, (st), (val)) -# define sk_NAME_FUNCS_find(st, val) SKM_sk_find(NAME_FUNCS, (st), (val)) -# define sk_NAME_FUNCS_find_ex(st, val) SKM_sk_find_ex(NAME_FUNCS, (st), (val)) -# define sk_NAME_FUNCS_delete(st, i) SKM_sk_delete(NAME_FUNCS, (st), (i)) -# define sk_NAME_FUNCS_delete_ptr(st, ptr) SKM_sk_delete_ptr(NAME_FUNCS, (st), (ptr)) -# define sk_NAME_FUNCS_insert(st, val, i) SKM_sk_insert(NAME_FUNCS, (st), (val), (i)) -# define sk_NAME_FUNCS_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(NAME_FUNCS, (st), (cmp)) -# define sk_NAME_FUNCS_dup(st) SKM_sk_dup(NAME_FUNCS, st) -# define sk_NAME_FUNCS_pop_free(st, free_func) SKM_sk_pop_free(NAME_FUNCS, (st), (free_func)) -# define sk_NAME_FUNCS_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(NAME_FUNCS, (st), (copy_func), (free_func)) -# define sk_NAME_FUNCS_shift(st) SKM_sk_shift(NAME_FUNCS, (st)) -# define sk_NAME_FUNCS_pop(st) SKM_sk_pop(NAME_FUNCS, (st)) -# define sk_NAME_FUNCS_sort(st) SKM_sk_sort(NAME_FUNCS, (st)) -# define sk_NAME_FUNCS_is_sorted(st) SKM_sk_is_sorted(NAME_FUNCS, (st)) -# define sk_OCSP_CERTID_new(cmp) SKM_sk_new(OCSP_CERTID, (cmp)) -# define sk_OCSP_CERTID_new_null() SKM_sk_new_null(OCSP_CERTID) -# define sk_OCSP_CERTID_free(st) SKM_sk_free(OCSP_CERTID, (st)) -# define sk_OCSP_CERTID_num(st) SKM_sk_num(OCSP_CERTID, (st)) -# define sk_OCSP_CERTID_value(st, i) SKM_sk_value(OCSP_CERTID, (st), (i)) -# define sk_OCSP_CERTID_set(st, i, val) SKM_sk_set(OCSP_CERTID, (st), (i), (val)) -# define sk_OCSP_CERTID_zero(st) SKM_sk_zero(OCSP_CERTID, (st)) -# define sk_OCSP_CERTID_push(st, val) SKM_sk_push(OCSP_CERTID, (st), (val)) -# define sk_OCSP_CERTID_unshift(st, val) SKM_sk_unshift(OCSP_CERTID, (st), (val)) -# define sk_OCSP_CERTID_find(st, val) SKM_sk_find(OCSP_CERTID, (st), (val)) -# define sk_OCSP_CERTID_find_ex(st, val) SKM_sk_find_ex(OCSP_CERTID, (st), (val)) -# define sk_OCSP_CERTID_delete(st, i) SKM_sk_delete(OCSP_CERTID, (st), (i)) -# define sk_OCSP_CERTID_delete_ptr(st, ptr) SKM_sk_delete_ptr(OCSP_CERTID, (st), (ptr)) -# define sk_OCSP_CERTID_insert(st, val, i) SKM_sk_insert(OCSP_CERTID, (st), (val), (i)) -# define sk_OCSP_CERTID_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(OCSP_CERTID, (st), (cmp)) -# define sk_OCSP_CERTID_dup(st) SKM_sk_dup(OCSP_CERTID, st) -# define sk_OCSP_CERTID_pop_free(st, free_func) SKM_sk_pop_free(OCSP_CERTID, (st), (free_func)) -# define sk_OCSP_CERTID_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(OCSP_CERTID, (st), (copy_func), (free_func)) -# define sk_OCSP_CERTID_shift(st) SKM_sk_shift(OCSP_CERTID, (st)) -# define sk_OCSP_CERTID_pop(st) SKM_sk_pop(OCSP_CERTID, (st)) -# define sk_OCSP_CERTID_sort(st) SKM_sk_sort(OCSP_CERTID, (st)) -# define sk_OCSP_CERTID_is_sorted(st) SKM_sk_is_sorted(OCSP_CERTID, (st)) -# define sk_OCSP_ONEREQ_new(cmp) SKM_sk_new(OCSP_ONEREQ, (cmp)) -# define sk_OCSP_ONEREQ_new_null() SKM_sk_new_null(OCSP_ONEREQ) -# define sk_OCSP_ONEREQ_free(st) SKM_sk_free(OCSP_ONEREQ, (st)) -# define sk_OCSP_ONEREQ_num(st) SKM_sk_num(OCSP_ONEREQ, (st)) -# define sk_OCSP_ONEREQ_value(st, i) SKM_sk_value(OCSP_ONEREQ, (st), (i)) -# define sk_OCSP_ONEREQ_set(st, i, val) SKM_sk_set(OCSP_ONEREQ, (st), (i), (val)) -# define sk_OCSP_ONEREQ_zero(st) SKM_sk_zero(OCSP_ONEREQ, (st)) -# define sk_OCSP_ONEREQ_push(st, val) SKM_sk_push(OCSP_ONEREQ, (st), (val)) -# define sk_OCSP_ONEREQ_unshift(st, val) SKM_sk_unshift(OCSP_ONEREQ, (st), (val)) -# define sk_OCSP_ONEREQ_find(st, val) SKM_sk_find(OCSP_ONEREQ, (st), (val)) -# define sk_OCSP_ONEREQ_find_ex(st, val) SKM_sk_find_ex(OCSP_ONEREQ, (st), (val)) -# define sk_OCSP_ONEREQ_delete(st, i) SKM_sk_delete(OCSP_ONEREQ, (st), (i)) -# define sk_OCSP_ONEREQ_delete_ptr(st, ptr) SKM_sk_delete_ptr(OCSP_ONEREQ, (st), (ptr)) -# define sk_OCSP_ONEREQ_insert(st, val, i) SKM_sk_insert(OCSP_ONEREQ, (st), (val), (i)) -# define sk_OCSP_ONEREQ_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(OCSP_ONEREQ, (st), (cmp)) -# define sk_OCSP_ONEREQ_dup(st) SKM_sk_dup(OCSP_ONEREQ, st) -# define sk_OCSP_ONEREQ_pop_free(st, free_func) SKM_sk_pop_free(OCSP_ONEREQ, (st), (free_func)) -# define sk_OCSP_ONEREQ_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(OCSP_ONEREQ, (st), (copy_func), (free_func)) -# define sk_OCSP_ONEREQ_shift(st) SKM_sk_shift(OCSP_ONEREQ, (st)) -# define sk_OCSP_ONEREQ_pop(st) SKM_sk_pop(OCSP_ONEREQ, (st)) -# define sk_OCSP_ONEREQ_sort(st) SKM_sk_sort(OCSP_ONEREQ, (st)) -# define sk_OCSP_ONEREQ_is_sorted(st) SKM_sk_is_sorted(OCSP_ONEREQ, (st)) -# define sk_OCSP_RESPID_new(cmp) SKM_sk_new(OCSP_RESPID, (cmp)) -# define sk_OCSP_RESPID_new_null() SKM_sk_new_null(OCSP_RESPID) -# define sk_OCSP_RESPID_free(st) SKM_sk_free(OCSP_RESPID, (st)) -# define sk_OCSP_RESPID_num(st) SKM_sk_num(OCSP_RESPID, (st)) -# define sk_OCSP_RESPID_value(st, i) SKM_sk_value(OCSP_RESPID, (st), (i)) -# define sk_OCSP_RESPID_set(st, i, val) SKM_sk_set(OCSP_RESPID, (st), (i), (val)) -# define sk_OCSP_RESPID_zero(st) SKM_sk_zero(OCSP_RESPID, (st)) -# define sk_OCSP_RESPID_push(st, val) SKM_sk_push(OCSP_RESPID, (st), (val)) -# define sk_OCSP_RESPID_unshift(st, val) SKM_sk_unshift(OCSP_RESPID, (st), (val)) -# define sk_OCSP_RESPID_find(st, val) SKM_sk_find(OCSP_RESPID, (st), (val)) -# define sk_OCSP_RESPID_find_ex(st, val) SKM_sk_find_ex(OCSP_RESPID, (st), (val)) -# define sk_OCSP_RESPID_delete(st, i) SKM_sk_delete(OCSP_RESPID, (st), (i)) -# define sk_OCSP_RESPID_delete_ptr(st, ptr) SKM_sk_delete_ptr(OCSP_RESPID, (st), (ptr)) -# define sk_OCSP_RESPID_insert(st, val, i) SKM_sk_insert(OCSP_RESPID, (st), (val), (i)) -# define sk_OCSP_RESPID_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(OCSP_RESPID, (st), (cmp)) -# define sk_OCSP_RESPID_dup(st) SKM_sk_dup(OCSP_RESPID, st) -# define sk_OCSP_RESPID_pop_free(st, free_func) SKM_sk_pop_free(OCSP_RESPID, (st), (free_func)) -# define sk_OCSP_RESPID_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(OCSP_RESPID, (st), (copy_func), (free_func)) -# define sk_OCSP_RESPID_shift(st) SKM_sk_shift(OCSP_RESPID, (st)) -# define sk_OCSP_RESPID_pop(st) SKM_sk_pop(OCSP_RESPID, (st)) -# define sk_OCSP_RESPID_sort(st) SKM_sk_sort(OCSP_RESPID, (st)) -# define sk_OCSP_RESPID_is_sorted(st) SKM_sk_is_sorted(OCSP_RESPID, (st)) -# define sk_OCSP_SINGLERESP_new(cmp) SKM_sk_new(OCSP_SINGLERESP, (cmp)) -# define sk_OCSP_SINGLERESP_new_null() SKM_sk_new_null(OCSP_SINGLERESP) -# define sk_OCSP_SINGLERESP_free(st) SKM_sk_free(OCSP_SINGLERESP, (st)) -# define sk_OCSP_SINGLERESP_num(st) SKM_sk_num(OCSP_SINGLERESP, (st)) -# define sk_OCSP_SINGLERESP_value(st, i) SKM_sk_value(OCSP_SINGLERESP, (st), (i)) -# define sk_OCSP_SINGLERESP_set(st, i, val) SKM_sk_set(OCSP_SINGLERESP, (st), (i), (val)) -# define sk_OCSP_SINGLERESP_zero(st) SKM_sk_zero(OCSP_SINGLERESP, (st)) -# define sk_OCSP_SINGLERESP_push(st, val) SKM_sk_push(OCSP_SINGLERESP, (st), (val)) -# define sk_OCSP_SINGLERESP_unshift(st, val) SKM_sk_unshift(OCSP_SINGLERESP, (st), (val)) -# define sk_OCSP_SINGLERESP_find(st, val) SKM_sk_find(OCSP_SINGLERESP, (st), (val)) -# define sk_OCSP_SINGLERESP_find_ex(st, val) SKM_sk_find_ex(OCSP_SINGLERESP, (st), (val)) -# define sk_OCSP_SINGLERESP_delete(st, i) SKM_sk_delete(OCSP_SINGLERESP, (st), (i)) -# define sk_OCSP_SINGLERESP_delete_ptr(st, ptr) SKM_sk_delete_ptr(OCSP_SINGLERESP, (st), (ptr)) -# define sk_OCSP_SINGLERESP_insert(st, val, i) SKM_sk_insert(OCSP_SINGLERESP, (st), (val), (i)) -# define sk_OCSP_SINGLERESP_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(OCSP_SINGLERESP, (st), (cmp)) -# define sk_OCSP_SINGLERESP_dup(st) SKM_sk_dup(OCSP_SINGLERESP, st) -# define sk_OCSP_SINGLERESP_pop_free(st, free_func) SKM_sk_pop_free(OCSP_SINGLERESP, (st), (free_func)) -# define sk_OCSP_SINGLERESP_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(OCSP_SINGLERESP, (st), (copy_func), (free_func)) -# define sk_OCSP_SINGLERESP_shift(st) SKM_sk_shift(OCSP_SINGLERESP, (st)) -# define sk_OCSP_SINGLERESP_pop(st) SKM_sk_pop(OCSP_SINGLERESP, (st)) -# define sk_OCSP_SINGLERESP_sort(st) SKM_sk_sort(OCSP_SINGLERESP, (st)) -# define sk_OCSP_SINGLERESP_is_sorted(st) SKM_sk_is_sorted(OCSP_SINGLERESP, (st)) -# define sk_PKCS12_SAFEBAG_new(cmp) SKM_sk_new(PKCS12_SAFEBAG, (cmp)) -# define sk_PKCS12_SAFEBAG_new_null() SKM_sk_new_null(PKCS12_SAFEBAG) -# define sk_PKCS12_SAFEBAG_free(st) SKM_sk_free(PKCS12_SAFEBAG, (st)) -# define sk_PKCS12_SAFEBAG_num(st) SKM_sk_num(PKCS12_SAFEBAG, (st)) -# define sk_PKCS12_SAFEBAG_value(st, i) SKM_sk_value(PKCS12_SAFEBAG, (st), (i)) -# define sk_PKCS12_SAFEBAG_set(st, i, val) SKM_sk_set(PKCS12_SAFEBAG, (st), (i), (val)) -# define sk_PKCS12_SAFEBAG_zero(st) SKM_sk_zero(PKCS12_SAFEBAG, (st)) -# define sk_PKCS12_SAFEBAG_push(st, val) SKM_sk_push(PKCS12_SAFEBAG, (st), (val)) -# define sk_PKCS12_SAFEBAG_unshift(st, val) SKM_sk_unshift(PKCS12_SAFEBAG, (st), (val)) -# define sk_PKCS12_SAFEBAG_find(st, val) SKM_sk_find(PKCS12_SAFEBAG, (st), (val)) -# define sk_PKCS12_SAFEBAG_find_ex(st, val) SKM_sk_find_ex(PKCS12_SAFEBAG, (st), (val)) -# define sk_PKCS12_SAFEBAG_delete(st, i) SKM_sk_delete(PKCS12_SAFEBAG, (st), (i)) -# define sk_PKCS12_SAFEBAG_delete_ptr(st, ptr) SKM_sk_delete_ptr(PKCS12_SAFEBAG, (st), (ptr)) -# define sk_PKCS12_SAFEBAG_insert(st, val, i) SKM_sk_insert(PKCS12_SAFEBAG, (st), (val), (i)) -# define sk_PKCS12_SAFEBAG_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(PKCS12_SAFEBAG, (st), (cmp)) -# define sk_PKCS12_SAFEBAG_dup(st) SKM_sk_dup(PKCS12_SAFEBAG, st) -# define sk_PKCS12_SAFEBAG_pop_free(st, free_func) SKM_sk_pop_free(PKCS12_SAFEBAG, (st), (free_func)) -# define sk_PKCS12_SAFEBAG_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(PKCS12_SAFEBAG, (st), (copy_func), (free_func)) -# define sk_PKCS12_SAFEBAG_shift(st) SKM_sk_shift(PKCS12_SAFEBAG, (st)) -# define sk_PKCS12_SAFEBAG_pop(st) SKM_sk_pop(PKCS12_SAFEBAG, (st)) -# define sk_PKCS12_SAFEBAG_sort(st) SKM_sk_sort(PKCS12_SAFEBAG, (st)) -# define sk_PKCS12_SAFEBAG_is_sorted(st) SKM_sk_is_sorted(PKCS12_SAFEBAG, (st)) -# define sk_PKCS7_new(cmp) SKM_sk_new(PKCS7, (cmp)) -# define sk_PKCS7_new_null() SKM_sk_new_null(PKCS7) -# define sk_PKCS7_free(st) SKM_sk_free(PKCS7, (st)) -# define sk_PKCS7_num(st) SKM_sk_num(PKCS7, (st)) -# define sk_PKCS7_value(st, i) SKM_sk_value(PKCS7, (st), (i)) -# define sk_PKCS7_set(st, i, val) SKM_sk_set(PKCS7, (st), (i), (val)) -# define sk_PKCS7_zero(st) SKM_sk_zero(PKCS7, (st)) -# define sk_PKCS7_push(st, val) SKM_sk_push(PKCS7, (st), (val)) -# define sk_PKCS7_unshift(st, val) SKM_sk_unshift(PKCS7, (st), (val)) -# define sk_PKCS7_find(st, val) SKM_sk_find(PKCS7, (st), (val)) -# define sk_PKCS7_find_ex(st, val) SKM_sk_find_ex(PKCS7, (st), (val)) -# define sk_PKCS7_delete(st, i) SKM_sk_delete(PKCS7, (st), (i)) -# define sk_PKCS7_delete_ptr(st, ptr) SKM_sk_delete_ptr(PKCS7, (st), (ptr)) -# define sk_PKCS7_insert(st, val, i) SKM_sk_insert(PKCS7, (st), (val), (i)) -# define sk_PKCS7_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(PKCS7, (st), (cmp)) -# define sk_PKCS7_dup(st) SKM_sk_dup(PKCS7, st) -# define sk_PKCS7_pop_free(st, free_func) SKM_sk_pop_free(PKCS7, (st), (free_func)) -# define sk_PKCS7_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(PKCS7, (st), (copy_func), (free_func)) -# define sk_PKCS7_shift(st) SKM_sk_shift(PKCS7, (st)) -# define sk_PKCS7_pop(st) SKM_sk_pop(PKCS7, (st)) -# define sk_PKCS7_sort(st) SKM_sk_sort(PKCS7, (st)) -# define sk_PKCS7_is_sorted(st) SKM_sk_is_sorted(PKCS7, (st)) -# define sk_PKCS7_RECIP_INFO_new(cmp) SKM_sk_new(PKCS7_RECIP_INFO, (cmp)) -# define sk_PKCS7_RECIP_INFO_new_null() SKM_sk_new_null(PKCS7_RECIP_INFO) -# define sk_PKCS7_RECIP_INFO_free(st) SKM_sk_free(PKCS7_RECIP_INFO, (st)) -# define sk_PKCS7_RECIP_INFO_num(st) SKM_sk_num(PKCS7_RECIP_INFO, (st)) -# define sk_PKCS7_RECIP_INFO_value(st, i) SKM_sk_value(PKCS7_RECIP_INFO, (st), (i)) -# define sk_PKCS7_RECIP_INFO_set(st, i, val) SKM_sk_set(PKCS7_RECIP_INFO, (st), (i), (val)) -# define sk_PKCS7_RECIP_INFO_zero(st) SKM_sk_zero(PKCS7_RECIP_INFO, (st)) -# define sk_PKCS7_RECIP_INFO_push(st, val) SKM_sk_push(PKCS7_RECIP_INFO, (st), (val)) -# define sk_PKCS7_RECIP_INFO_unshift(st, val) SKM_sk_unshift(PKCS7_RECIP_INFO, (st), (val)) -# define sk_PKCS7_RECIP_INFO_find(st, val) SKM_sk_find(PKCS7_RECIP_INFO, (st), (val)) -# define sk_PKCS7_RECIP_INFO_find_ex(st, val) SKM_sk_find_ex(PKCS7_RECIP_INFO, (st), (val)) -# define sk_PKCS7_RECIP_INFO_delete(st, i) SKM_sk_delete(PKCS7_RECIP_INFO, (st), (i)) -# define sk_PKCS7_RECIP_INFO_delete_ptr(st, ptr) SKM_sk_delete_ptr(PKCS7_RECIP_INFO, (st), (ptr)) -# define sk_PKCS7_RECIP_INFO_insert(st, val, i) SKM_sk_insert(PKCS7_RECIP_INFO, (st), (val), (i)) -# define sk_PKCS7_RECIP_INFO_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(PKCS7_RECIP_INFO, (st), (cmp)) -# define sk_PKCS7_RECIP_INFO_dup(st) SKM_sk_dup(PKCS7_RECIP_INFO, st) -# define sk_PKCS7_RECIP_INFO_pop_free(st, free_func) SKM_sk_pop_free(PKCS7_RECIP_INFO, (st), (free_func)) -# define sk_PKCS7_RECIP_INFO_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(PKCS7_RECIP_INFO, (st), (copy_func), (free_func)) -# define sk_PKCS7_RECIP_INFO_shift(st) SKM_sk_shift(PKCS7_RECIP_INFO, (st)) -# define sk_PKCS7_RECIP_INFO_pop(st) SKM_sk_pop(PKCS7_RECIP_INFO, (st)) -# define sk_PKCS7_RECIP_INFO_sort(st) SKM_sk_sort(PKCS7_RECIP_INFO, (st)) -# define sk_PKCS7_RECIP_INFO_is_sorted(st) SKM_sk_is_sorted(PKCS7_RECIP_INFO, (st)) -# define sk_PKCS7_SIGNER_INFO_new(cmp) SKM_sk_new(PKCS7_SIGNER_INFO, (cmp)) -# define sk_PKCS7_SIGNER_INFO_new_null() SKM_sk_new_null(PKCS7_SIGNER_INFO) -# define sk_PKCS7_SIGNER_INFO_free(st) SKM_sk_free(PKCS7_SIGNER_INFO, (st)) -# define sk_PKCS7_SIGNER_INFO_num(st) SKM_sk_num(PKCS7_SIGNER_INFO, (st)) -# define sk_PKCS7_SIGNER_INFO_value(st, i) SKM_sk_value(PKCS7_SIGNER_INFO, (st), (i)) -# define sk_PKCS7_SIGNER_INFO_set(st, i, val) SKM_sk_set(PKCS7_SIGNER_INFO, (st), (i), (val)) -# define sk_PKCS7_SIGNER_INFO_zero(st) SKM_sk_zero(PKCS7_SIGNER_INFO, (st)) -# define sk_PKCS7_SIGNER_INFO_push(st, val) SKM_sk_push(PKCS7_SIGNER_INFO, (st), (val)) -# define sk_PKCS7_SIGNER_INFO_unshift(st, val) SKM_sk_unshift(PKCS7_SIGNER_INFO, (st), (val)) -# define sk_PKCS7_SIGNER_INFO_find(st, val) SKM_sk_find(PKCS7_SIGNER_INFO, (st), (val)) -# define sk_PKCS7_SIGNER_INFO_find_ex(st, val) SKM_sk_find_ex(PKCS7_SIGNER_INFO, (st), (val)) -# define sk_PKCS7_SIGNER_INFO_delete(st, i) SKM_sk_delete(PKCS7_SIGNER_INFO, (st), (i)) -# define sk_PKCS7_SIGNER_INFO_delete_ptr(st, ptr) SKM_sk_delete_ptr(PKCS7_SIGNER_INFO, (st), (ptr)) -# define sk_PKCS7_SIGNER_INFO_insert(st, val, i) SKM_sk_insert(PKCS7_SIGNER_INFO, (st), (val), (i)) -# define sk_PKCS7_SIGNER_INFO_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(PKCS7_SIGNER_INFO, (st), (cmp)) -# define sk_PKCS7_SIGNER_INFO_dup(st) SKM_sk_dup(PKCS7_SIGNER_INFO, st) -# define sk_PKCS7_SIGNER_INFO_pop_free(st, free_func) SKM_sk_pop_free(PKCS7_SIGNER_INFO, (st), (free_func)) -# define sk_PKCS7_SIGNER_INFO_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(PKCS7_SIGNER_INFO, (st), (copy_func), (free_func)) -# define sk_PKCS7_SIGNER_INFO_shift(st) SKM_sk_shift(PKCS7_SIGNER_INFO, (st)) -# define sk_PKCS7_SIGNER_INFO_pop(st) SKM_sk_pop(PKCS7_SIGNER_INFO, (st)) -# define sk_PKCS7_SIGNER_INFO_sort(st) SKM_sk_sort(PKCS7_SIGNER_INFO, (st)) -# define sk_PKCS7_SIGNER_INFO_is_sorted(st) SKM_sk_is_sorted(PKCS7_SIGNER_INFO, (st)) -# define sk_POLICYINFO_new(cmp) SKM_sk_new(POLICYINFO, (cmp)) -# define sk_POLICYINFO_new_null() SKM_sk_new_null(POLICYINFO) -# define sk_POLICYINFO_free(st) SKM_sk_free(POLICYINFO, (st)) -# define sk_POLICYINFO_num(st) SKM_sk_num(POLICYINFO, (st)) -# define sk_POLICYINFO_value(st, i) SKM_sk_value(POLICYINFO, (st), (i)) -# define sk_POLICYINFO_set(st, i, val) SKM_sk_set(POLICYINFO, (st), (i), (val)) -# define sk_POLICYINFO_zero(st) SKM_sk_zero(POLICYINFO, (st)) -# define sk_POLICYINFO_push(st, val) SKM_sk_push(POLICYINFO, (st), (val)) -# define sk_POLICYINFO_unshift(st, val) SKM_sk_unshift(POLICYINFO, (st), (val)) -# define sk_POLICYINFO_find(st, val) SKM_sk_find(POLICYINFO, (st), (val)) -# define sk_POLICYINFO_find_ex(st, val) SKM_sk_find_ex(POLICYINFO, (st), (val)) -# define sk_POLICYINFO_delete(st, i) SKM_sk_delete(POLICYINFO, (st), (i)) -# define sk_POLICYINFO_delete_ptr(st, ptr) SKM_sk_delete_ptr(POLICYINFO, (st), (ptr)) -# define sk_POLICYINFO_insert(st, val, i) SKM_sk_insert(POLICYINFO, (st), (val), (i)) -# define sk_POLICYINFO_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(POLICYINFO, (st), (cmp)) -# define sk_POLICYINFO_dup(st) SKM_sk_dup(POLICYINFO, st) -# define sk_POLICYINFO_pop_free(st, free_func) SKM_sk_pop_free(POLICYINFO, (st), (free_func)) -# define sk_POLICYINFO_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(POLICYINFO, (st), (copy_func), (free_func)) -# define sk_POLICYINFO_shift(st) SKM_sk_shift(POLICYINFO, (st)) -# define sk_POLICYINFO_pop(st) SKM_sk_pop(POLICYINFO, (st)) -# define sk_POLICYINFO_sort(st) SKM_sk_sort(POLICYINFO, (st)) -# define sk_POLICYINFO_is_sorted(st) SKM_sk_is_sorted(POLICYINFO, (st)) -# define sk_POLICYQUALINFO_new(cmp) SKM_sk_new(POLICYQUALINFO, (cmp)) -# define sk_POLICYQUALINFO_new_null() SKM_sk_new_null(POLICYQUALINFO) -# define sk_POLICYQUALINFO_free(st) SKM_sk_free(POLICYQUALINFO, (st)) -# define sk_POLICYQUALINFO_num(st) SKM_sk_num(POLICYQUALINFO, (st)) -# define sk_POLICYQUALINFO_value(st, i) SKM_sk_value(POLICYQUALINFO, (st), (i)) -# define sk_POLICYQUALINFO_set(st, i, val) SKM_sk_set(POLICYQUALINFO, (st), (i), (val)) -# define sk_POLICYQUALINFO_zero(st) SKM_sk_zero(POLICYQUALINFO, (st)) -# define sk_POLICYQUALINFO_push(st, val) SKM_sk_push(POLICYQUALINFO, (st), (val)) -# define sk_POLICYQUALINFO_unshift(st, val) SKM_sk_unshift(POLICYQUALINFO, (st), (val)) -# define sk_POLICYQUALINFO_find(st, val) SKM_sk_find(POLICYQUALINFO, (st), (val)) -# define sk_POLICYQUALINFO_find_ex(st, val) SKM_sk_find_ex(POLICYQUALINFO, (st), (val)) -# define sk_POLICYQUALINFO_delete(st, i) SKM_sk_delete(POLICYQUALINFO, (st), (i)) -# define sk_POLICYQUALINFO_delete_ptr(st, ptr) SKM_sk_delete_ptr(POLICYQUALINFO, (st), (ptr)) -# define sk_POLICYQUALINFO_insert(st, val, i) SKM_sk_insert(POLICYQUALINFO, (st), (val), (i)) -# define sk_POLICYQUALINFO_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(POLICYQUALINFO, (st), (cmp)) -# define sk_POLICYQUALINFO_dup(st) SKM_sk_dup(POLICYQUALINFO, st) -# define sk_POLICYQUALINFO_pop_free(st, free_func) SKM_sk_pop_free(POLICYQUALINFO, (st), (free_func)) -# define sk_POLICYQUALINFO_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(POLICYQUALINFO, (st), (copy_func), (free_func)) -# define sk_POLICYQUALINFO_shift(st) SKM_sk_shift(POLICYQUALINFO, (st)) -# define sk_POLICYQUALINFO_pop(st) SKM_sk_pop(POLICYQUALINFO, (st)) -# define sk_POLICYQUALINFO_sort(st) SKM_sk_sort(POLICYQUALINFO, (st)) -# define sk_POLICYQUALINFO_is_sorted(st) SKM_sk_is_sorted(POLICYQUALINFO, (st)) -# define sk_POLICY_MAPPING_new(cmp) SKM_sk_new(POLICY_MAPPING, (cmp)) -# define sk_POLICY_MAPPING_new_null() SKM_sk_new_null(POLICY_MAPPING) -# define sk_POLICY_MAPPING_free(st) SKM_sk_free(POLICY_MAPPING, (st)) -# define sk_POLICY_MAPPING_num(st) SKM_sk_num(POLICY_MAPPING, (st)) -# define sk_POLICY_MAPPING_value(st, i) SKM_sk_value(POLICY_MAPPING, (st), (i)) -# define sk_POLICY_MAPPING_set(st, i, val) SKM_sk_set(POLICY_MAPPING, (st), (i), (val)) -# define sk_POLICY_MAPPING_zero(st) SKM_sk_zero(POLICY_MAPPING, (st)) -# define sk_POLICY_MAPPING_push(st, val) SKM_sk_push(POLICY_MAPPING, (st), (val)) -# define sk_POLICY_MAPPING_unshift(st, val) SKM_sk_unshift(POLICY_MAPPING, (st), (val)) -# define sk_POLICY_MAPPING_find(st, val) SKM_sk_find(POLICY_MAPPING, (st), (val)) -# define sk_POLICY_MAPPING_find_ex(st, val) SKM_sk_find_ex(POLICY_MAPPING, (st), (val)) -# define sk_POLICY_MAPPING_delete(st, i) SKM_sk_delete(POLICY_MAPPING, (st), (i)) -# define sk_POLICY_MAPPING_delete_ptr(st, ptr) SKM_sk_delete_ptr(POLICY_MAPPING, (st), (ptr)) -# define sk_POLICY_MAPPING_insert(st, val, i) SKM_sk_insert(POLICY_MAPPING, (st), (val), (i)) -# define sk_POLICY_MAPPING_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(POLICY_MAPPING, (st), (cmp)) -# define sk_POLICY_MAPPING_dup(st) SKM_sk_dup(POLICY_MAPPING, st) -# define sk_POLICY_MAPPING_pop_free(st, free_func) SKM_sk_pop_free(POLICY_MAPPING, (st), (free_func)) -# define sk_POLICY_MAPPING_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(POLICY_MAPPING, (st), (copy_func), (free_func)) -# define sk_POLICY_MAPPING_shift(st) SKM_sk_shift(POLICY_MAPPING, (st)) -# define sk_POLICY_MAPPING_pop(st) SKM_sk_pop(POLICY_MAPPING, (st)) -# define sk_POLICY_MAPPING_sort(st) SKM_sk_sort(POLICY_MAPPING, (st)) -# define sk_POLICY_MAPPING_is_sorted(st) SKM_sk_is_sorted(POLICY_MAPPING, (st)) -# define sk_SCT_new(cmp) SKM_sk_new(SCT, (cmp)) -# define sk_SCT_new_null() SKM_sk_new_null(SCT) -# define sk_SCT_free(st) SKM_sk_free(SCT, (st)) -# define sk_SCT_num(st) SKM_sk_num(SCT, (st)) -# define sk_SCT_value(st, i) SKM_sk_value(SCT, (st), (i)) -# define sk_SCT_set(st, i, val) SKM_sk_set(SCT, (st), (i), (val)) -# define sk_SCT_zero(st) SKM_sk_zero(SCT, (st)) -# define sk_SCT_push(st, val) SKM_sk_push(SCT, (st), (val)) -# define sk_SCT_unshift(st, val) SKM_sk_unshift(SCT, (st), (val)) -# define sk_SCT_find(st, val) SKM_sk_find(SCT, (st), (val)) -# define sk_SCT_find_ex(st, val) SKM_sk_find_ex(SCT, (st), (val)) -# define sk_SCT_delete(st, i) SKM_sk_delete(SCT, (st), (i)) -# define sk_SCT_delete_ptr(st, ptr) SKM_sk_delete_ptr(SCT, (st), (ptr)) -# define sk_SCT_insert(st, val, i) SKM_sk_insert(SCT, (st), (val), (i)) -# define sk_SCT_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(SCT, (st), (cmp)) -# define sk_SCT_dup(st) SKM_sk_dup(SCT, st) -# define sk_SCT_pop_free(st, free_func) SKM_sk_pop_free(SCT, (st), (free_func)) -# define sk_SCT_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(SCT, (st), (copy_func), (free_func)) -# define sk_SCT_shift(st) SKM_sk_shift(SCT, (st)) -# define sk_SCT_pop(st) SKM_sk_pop(SCT, (st)) -# define sk_SCT_sort(st) SKM_sk_sort(SCT, (st)) -# define sk_SCT_is_sorted(st) SKM_sk_is_sorted(SCT, (st)) -# define sk_SRP_gN_new(cmp) SKM_sk_new(SRP_gN, (cmp)) -# define sk_SRP_gN_new_null() SKM_sk_new_null(SRP_gN) -# define sk_SRP_gN_free(st) SKM_sk_free(SRP_gN, (st)) -# define sk_SRP_gN_num(st) SKM_sk_num(SRP_gN, (st)) -# define sk_SRP_gN_value(st, i) SKM_sk_value(SRP_gN, (st), (i)) -# define sk_SRP_gN_set(st, i, val) SKM_sk_set(SRP_gN, (st), (i), (val)) -# define sk_SRP_gN_zero(st) SKM_sk_zero(SRP_gN, (st)) -# define sk_SRP_gN_push(st, val) SKM_sk_push(SRP_gN, (st), (val)) -# define sk_SRP_gN_unshift(st, val) SKM_sk_unshift(SRP_gN, (st), (val)) -# define sk_SRP_gN_find(st, val) SKM_sk_find(SRP_gN, (st), (val)) -# define sk_SRP_gN_find_ex(st, val) SKM_sk_find_ex(SRP_gN, (st), (val)) -# define sk_SRP_gN_delete(st, i) SKM_sk_delete(SRP_gN, (st), (i)) -# define sk_SRP_gN_delete_ptr(st, ptr) SKM_sk_delete_ptr(SRP_gN, (st), (ptr)) -# define sk_SRP_gN_insert(st, val, i) SKM_sk_insert(SRP_gN, (st), (val), (i)) -# define sk_SRP_gN_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(SRP_gN, (st), (cmp)) -# define sk_SRP_gN_dup(st) SKM_sk_dup(SRP_gN, st) -# define sk_SRP_gN_pop_free(st, free_func) SKM_sk_pop_free(SRP_gN, (st), (free_func)) -# define sk_SRP_gN_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(SRP_gN, (st), (copy_func), (free_func)) -# define sk_SRP_gN_shift(st) SKM_sk_shift(SRP_gN, (st)) -# define sk_SRP_gN_pop(st) SKM_sk_pop(SRP_gN, (st)) -# define sk_SRP_gN_sort(st) SKM_sk_sort(SRP_gN, (st)) -# define sk_SRP_gN_is_sorted(st) SKM_sk_is_sorted(SRP_gN, (st)) -# define sk_SRP_gN_cache_new(cmp) SKM_sk_new(SRP_gN_cache, (cmp)) -# define sk_SRP_gN_cache_new_null() SKM_sk_new_null(SRP_gN_cache) -# define sk_SRP_gN_cache_free(st) SKM_sk_free(SRP_gN_cache, (st)) -# define sk_SRP_gN_cache_num(st) SKM_sk_num(SRP_gN_cache, (st)) -# define sk_SRP_gN_cache_value(st, i) SKM_sk_value(SRP_gN_cache, (st), (i)) -# define sk_SRP_gN_cache_set(st, i, val) SKM_sk_set(SRP_gN_cache, (st), (i), (val)) -# define sk_SRP_gN_cache_zero(st) SKM_sk_zero(SRP_gN_cache, (st)) -# define sk_SRP_gN_cache_push(st, val) SKM_sk_push(SRP_gN_cache, (st), (val)) -# define sk_SRP_gN_cache_unshift(st, val) SKM_sk_unshift(SRP_gN_cache, (st), (val)) -# define sk_SRP_gN_cache_find(st, val) SKM_sk_find(SRP_gN_cache, (st), (val)) -# define sk_SRP_gN_cache_find_ex(st, val) SKM_sk_find_ex(SRP_gN_cache, (st), (val)) -# define sk_SRP_gN_cache_delete(st, i) SKM_sk_delete(SRP_gN_cache, (st), (i)) -# define sk_SRP_gN_cache_delete_ptr(st, ptr) SKM_sk_delete_ptr(SRP_gN_cache, (st), (ptr)) -# define sk_SRP_gN_cache_insert(st, val, i) SKM_sk_insert(SRP_gN_cache, (st), (val), (i)) -# define sk_SRP_gN_cache_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(SRP_gN_cache, (st), (cmp)) -# define sk_SRP_gN_cache_dup(st) SKM_sk_dup(SRP_gN_cache, st) -# define sk_SRP_gN_cache_pop_free(st, free_func) SKM_sk_pop_free(SRP_gN_cache, (st), (free_func)) -# define sk_SRP_gN_cache_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(SRP_gN_cache, (st), (copy_func), (free_func)) -# define sk_SRP_gN_cache_shift(st) SKM_sk_shift(SRP_gN_cache, (st)) -# define sk_SRP_gN_cache_pop(st) SKM_sk_pop(SRP_gN_cache, (st)) -# define sk_SRP_gN_cache_sort(st) SKM_sk_sort(SRP_gN_cache, (st)) -# define sk_SRP_gN_cache_is_sorted(st) SKM_sk_is_sorted(SRP_gN_cache, (st)) -# define sk_SRP_user_pwd_new(cmp) SKM_sk_new(SRP_user_pwd, (cmp)) -# define sk_SRP_user_pwd_new_null() SKM_sk_new_null(SRP_user_pwd) -# define sk_SRP_user_pwd_free(st) SKM_sk_free(SRP_user_pwd, (st)) -# define sk_SRP_user_pwd_num(st) SKM_sk_num(SRP_user_pwd, (st)) -# define sk_SRP_user_pwd_value(st, i) SKM_sk_value(SRP_user_pwd, (st), (i)) -# define sk_SRP_user_pwd_set(st, i, val) SKM_sk_set(SRP_user_pwd, (st), (i), (val)) -# define sk_SRP_user_pwd_zero(st) SKM_sk_zero(SRP_user_pwd, (st)) -# define sk_SRP_user_pwd_push(st, val) SKM_sk_push(SRP_user_pwd, (st), (val)) -# define sk_SRP_user_pwd_unshift(st, val) SKM_sk_unshift(SRP_user_pwd, (st), (val)) -# define sk_SRP_user_pwd_find(st, val) SKM_sk_find(SRP_user_pwd, (st), (val)) -# define sk_SRP_user_pwd_find_ex(st, val) SKM_sk_find_ex(SRP_user_pwd, (st), (val)) -# define sk_SRP_user_pwd_delete(st, i) SKM_sk_delete(SRP_user_pwd, (st), (i)) -# define sk_SRP_user_pwd_delete_ptr(st, ptr) SKM_sk_delete_ptr(SRP_user_pwd, (st), (ptr)) -# define sk_SRP_user_pwd_insert(st, val, i) SKM_sk_insert(SRP_user_pwd, (st), (val), (i)) -# define sk_SRP_user_pwd_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(SRP_user_pwd, (st), (cmp)) -# define sk_SRP_user_pwd_dup(st) SKM_sk_dup(SRP_user_pwd, st) -# define sk_SRP_user_pwd_pop_free(st, free_func) SKM_sk_pop_free(SRP_user_pwd, (st), (free_func)) -# define sk_SRP_user_pwd_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(SRP_user_pwd, (st), (copy_func), (free_func)) -# define sk_SRP_user_pwd_shift(st) SKM_sk_shift(SRP_user_pwd, (st)) -# define sk_SRP_user_pwd_pop(st) SKM_sk_pop(SRP_user_pwd, (st)) -# define sk_SRP_user_pwd_sort(st) SKM_sk_sort(SRP_user_pwd, (st)) -# define sk_SRP_user_pwd_is_sorted(st) SKM_sk_is_sorted(SRP_user_pwd, (st)) -# define sk_SRTP_PROTECTION_PROFILE_new(cmp) SKM_sk_new(SRTP_PROTECTION_PROFILE, (cmp)) -# define sk_SRTP_PROTECTION_PROFILE_new_null() SKM_sk_new_null(SRTP_PROTECTION_PROFILE) -# define sk_SRTP_PROTECTION_PROFILE_free(st) SKM_sk_free(SRTP_PROTECTION_PROFILE, (st)) -# define sk_SRTP_PROTECTION_PROFILE_num(st) SKM_sk_num(SRTP_PROTECTION_PROFILE, (st)) -# define sk_SRTP_PROTECTION_PROFILE_value(st, i) SKM_sk_value(SRTP_PROTECTION_PROFILE, (st), (i)) -# define sk_SRTP_PROTECTION_PROFILE_set(st, i, val) SKM_sk_set(SRTP_PROTECTION_PROFILE, (st), (i), (val)) -# define sk_SRTP_PROTECTION_PROFILE_zero(st) SKM_sk_zero(SRTP_PROTECTION_PROFILE, (st)) -# define sk_SRTP_PROTECTION_PROFILE_push(st, val) SKM_sk_push(SRTP_PROTECTION_PROFILE, (st), (val)) -# define sk_SRTP_PROTECTION_PROFILE_unshift(st, val) SKM_sk_unshift(SRTP_PROTECTION_PROFILE, (st), (val)) -# define sk_SRTP_PROTECTION_PROFILE_find(st, val) SKM_sk_find(SRTP_PROTECTION_PROFILE, (st), (val)) -# define sk_SRTP_PROTECTION_PROFILE_find_ex(st, val) SKM_sk_find_ex(SRTP_PROTECTION_PROFILE, (st), (val)) -# define sk_SRTP_PROTECTION_PROFILE_delete(st, i) SKM_sk_delete(SRTP_PROTECTION_PROFILE, (st), (i)) -# define sk_SRTP_PROTECTION_PROFILE_delete_ptr(st, ptr) SKM_sk_delete_ptr(SRTP_PROTECTION_PROFILE, (st), (ptr)) -# define sk_SRTP_PROTECTION_PROFILE_insert(st, val, i) SKM_sk_insert(SRTP_PROTECTION_PROFILE, (st), (val), (i)) -# define sk_SRTP_PROTECTION_PROFILE_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(SRTP_PROTECTION_PROFILE, (st), (cmp)) -# define sk_SRTP_PROTECTION_PROFILE_dup(st) SKM_sk_dup(SRTP_PROTECTION_PROFILE, st) -# define sk_SRTP_PROTECTION_PROFILE_pop_free(st, free_func) SKM_sk_pop_free(SRTP_PROTECTION_PROFILE, (st), (free_func)) -# define sk_SRTP_PROTECTION_PROFILE_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(SRTP_PROTECTION_PROFILE, (st), (copy_func), (free_func)) -# define sk_SRTP_PROTECTION_PROFILE_shift(st) SKM_sk_shift(SRTP_PROTECTION_PROFILE, (st)) -# define sk_SRTP_PROTECTION_PROFILE_pop(st) SKM_sk_pop(SRTP_PROTECTION_PROFILE, (st)) -# define sk_SRTP_PROTECTION_PROFILE_sort(st) SKM_sk_sort(SRTP_PROTECTION_PROFILE, (st)) -# define sk_SRTP_PROTECTION_PROFILE_is_sorted(st) SKM_sk_is_sorted(SRTP_PROTECTION_PROFILE, (st)) -# define sk_SSL_CIPHER_new(cmp) SKM_sk_new(SSL_CIPHER, (cmp)) -# define sk_SSL_CIPHER_new_null() SKM_sk_new_null(SSL_CIPHER) -# define sk_SSL_CIPHER_free(st) SKM_sk_free(SSL_CIPHER, (st)) -# define sk_SSL_CIPHER_num(st) SKM_sk_num(SSL_CIPHER, (st)) -# define sk_SSL_CIPHER_value(st, i) SKM_sk_value(SSL_CIPHER, (st), (i)) -# define sk_SSL_CIPHER_set(st, i, val) SKM_sk_set(SSL_CIPHER, (st), (i), (val)) -# define sk_SSL_CIPHER_zero(st) SKM_sk_zero(SSL_CIPHER, (st)) -# define sk_SSL_CIPHER_push(st, val) SKM_sk_push(SSL_CIPHER, (st), (val)) -# define sk_SSL_CIPHER_unshift(st, val) SKM_sk_unshift(SSL_CIPHER, (st), (val)) -# define sk_SSL_CIPHER_find(st, val) SKM_sk_find(SSL_CIPHER, (st), (val)) -# define sk_SSL_CIPHER_find_ex(st, val) SKM_sk_find_ex(SSL_CIPHER, (st), (val)) -# define sk_SSL_CIPHER_delete(st, i) SKM_sk_delete(SSL_CIPHER, (st), (i)) -# define sk_SSL_CIPHER_delete_ptr(st, ptr) SKM_sk_delete_ptr(SSL_CIPHER, (st), (ptr)) -# define sk_SSL_CIPHER_insert(st, val, i) SKM_sk_insert(SSL_CIPHER, (st), (val), (i)) -# define sk_SSL_CIPHER_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(SSL_CIPHER, (st), (cmp)) -# define sk_SSL_CIPHER_dup(st) SKM_sk_dup(SSL_CIPHER, st) -# define sk_SSL_CIPHER_pop_free(st, free_func) SKM_sk_pop_free(SSL_CIPHER, (st), (free_func)) -# define sk_SSL_CIPHER_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(SSL_CIPHER, (st), (copy_func), (free_func)) -# define sk_SSL_CIPHER_shift(st) SKM_sk_shift(SSL_CIPHER, (st)) -# define sk_SSL_CIPHER_pop(st) SKM_sk_pop(SSL_CIPHER, (st)) -# define sk_SSL_CIPHER_sort(st) SKM_sk_sort(SSL_CIPHER, (st)) -# define sk_SSL_CIPHER_is_sorted(st) SKM_sk_is_sorted(SSL_CIPHER, (st)) -# define sk_SSL_COMP_new(cmp) SKM_sk_new(SSL_COMP, (cmp)) -# define sk_SSL_COMP_new_null() SKM_sk_new_null(SSL_COMP) -# define sk_SSL_COMP_free(st) SKM_sk_free(SSL_COMP, (st)) -# define sk_SSL_COMP_num(st) SKM_sk_num(SSL_COMP, (st)) -# define sk_SSL_COMP_value(st, i) SKM_sk_value(SSL_COMP, (st), (i)) -# define sk_SSL_COMP_set(st, i, val) SKM_sk_set(SSL_COMP, (st), (i), (val)) -# define sk_SSL_COMP_zero(st) SKM_sk_zero(SSL_COMP, (st)) -# define sk_SSL_COMP_push(st, val) SKM_sk_push(SSL_COMP, (st), (val)) -# define sk_SSL_COMP_unshift(st, val) SKM_sk_unshift(SSL_COMP, (st), (val)) -# define sk_SSL_COMP_find(st, val) SKM_sk_find(SSL_COMP, (st), (val)) -# define sk_SSL_COMP_find_ex(st, val) SKM_sk_find_ex(SSL_COMP, (st), (val)) -# define sk_SSL_COMP_delete(st, i) SKM_sk_delete(SSL_COMP, (st), (i)) -# define sk_SSL_COMP_delete_ptr(st, ptr) SKM_sk_delete_ptr(SSL_COMP, (st), (ptr)) -# define sk_SSL_COMP_insert(st, val, i) SKM_sk_insert(SSL_COMP, (st), (val), (i)) -# define sk_SSL_COMP_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(SSL_COMP, (st), (cmp)) -# define sk_SSL_COMP_dup(st) SKM_sk_dup(SSL_COMP, st) -# define sk_SSL_COMP_pop_free(st, free_func) SKM_sk_pop_free(SSL_COMP, (st), (free_func)) -# define sk_SSL_COMP_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(SSL_COMP, (st), (copy_func), (free_func)) -# define sk_SSL_COMP_shift(st) SKM_sk_shift(SSL_COMP, (st)) -# define sk_SSL_COMP_pop(st) SKM_sk_pop(SSL_COMP, (st)) -# define sk_SSL_COMP_sort(st) SKM_sk_sort(SSL_COMP, (st)) -# define sk_SSL_COMP_is_sorted(st) SKM_sk_is_sorted(SSL_COMP, (st)) -# define sk_STACK_OF_X509_NAME_ENTRY_new(cmp) SKM_sk_new(STACK_OF_X509_NAME_ENTRY, (cmp)) -# define sk_STACK_OF_X509_NAME_ENTRY_new_null() SKM_sk_new_null(STACK_OF_X509_NAME_ENTRY) -# define sk_STACK_OF_X509_NAME_ENTRY_free(st) SKM_sk_free(STACK_OF_X509_NAME_ENTRY, (st)) -# define sk_STACK_OF_X509_NAME_ENTRY_num(st) SKM_sk_num(STACK_OF_X509_NAME_ENTRY, (st)) -# define sk_STACK_OF_X509_NAME_ENTRY_value(st, i) SKM_sk_value(STACK_OF_X509_NAME_ENTRY, (st), (i)) -# define sk_STACK_OF_X509_NAME_ENTRY_set(st, i, val) SKM_sk_set(STACK_OF_X509_NAME_ENTRY, (st), (i), (val)) -# define sk_STACK_OF_X509_NAME_ENTRY_zero(st) SKM_sk_zero(STACK_OF_X509_NAME_ENTRY, (st)) -# define sk_STACK_OF_X509_NAME_ENTRY_push(st, val) SKM_sk_push(STACK_OF_X509_NAME_ENTRY, (st), (val)) -# define sk_STACK_OF_X509_NAME_ENTRY_unshift(st, val) SKM_sk_unshift(STACK_OF_X509_NAME_ENTRY, (st), (val)) -# define sk_STACK_OF_X509_NAME_ENTRY_find(st, val) SKM_sk_find(STACK_OF_X509_NAME_ENTRY, (st), (val)) -# define sk_STACK_OF_X509_NAME_ENTRY_find_ex(st, val) SKM_sk_find_ex(STACK_OF_X509_NAME_ENTRY, (st), (val)) -# define sk_STACK_OF_X509_NAME_ENTRY_delete(st, i) SKM_sk_delete(STACK_OF_X509_NAME_ENTRY, (st), (i)) -# define sk_STACK_OF_X509_NAME_ENTRY_delete_ptr(st, ptr) SKM_sk_delete_ptr(STACK_OF_X509_NAME_ENTRY, (st), (ptr)) -# define sk_STACK_OF_X509_NAME_ENTRY_insert(st, val, i) SKM_sk_insert(STACK_OF_X509_NAME_ENTRY, (st), (val), (i)) -# define sk_STACK_OF_X509_NAME_ENTRY_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(STACK_OF_X509_NAME_ENTRY, (st), (cmp)) -# define sk_STACK_OF_X509_NAME_ENTRY_dup(st) SKM_sk_dup(STACK_OF_X509_NAME_ENTRY, st) -# define sk_STACK_OF_X509_NAME_ENTRY_pop_free(st, free_func) SKM_sk_pop_free(STACK_OF_X509_NAME_ENTRY, (st), (free_func)) -# define sk_STACK_OF_X509_NAME_ENTRY_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(STACK_OF_X509_NAME_ENTRY, (st), (copy_func), (free_func)) -# define sk_STACK_OF_X509_NAME_ENTRY_shift(st) SKM_sk_shift(STACK_OF_X509_NAME_ENTRY, (st)) -# define sk_STACK_OF_X509_NAME_ENTRY_pop(st) SKM_sk_pop(STACK_OF_X509_NAME_ENTRY, (st)) -# define sk_STACK_OF_X509_NAME_ENTRY_sort(st) SKM_sk_sort(STACK_OF_X509_NAME_ENTRY, (st)) -# define sk_STACK_OF_X509_NAME_ENTRY_is_sorted(st) SKM_sk_is_sorted(STACK_OF_X509_NAME_ENTRY, (st)) -# define sk_STORE_ATTR_INFO_new(cmp) SKM_sk_new(STORE_ATTR_INFO, (cmp)) -# define sk_STORE_ATTR_INFO_new_null() SKM_sk_new_null(STORE_ATTR_INFO) -# define sk_STORE_ATTR_INFO_free(st) SKM_sk_free(STORE_ATTR_INFO, (st)) -# define sk_STORE_ATTR_INFO_num(st) SKM_sk_num(STORE_ATTR_INFO, (st)) -# define sk_STORE_ATTR_INFO_value(st, i) SKM_sk_value(STORE_ATTR_INFO, (st), (i)) -# define sk_STORE_ATTR_INFO_set(st, i, val) SKM_sk_set(STORE_ATTR_INFO, (st), (i), (val)) -# define sk_STORE_ATTR_INFO_zero(st) SKM_sk_zero(STORE_ATTR_INFO, (st)) -# define sk_STORE_ATTR_INFO_push(st, val) SKM_sk_push(STORE_ATTR_INFO, (st), (val)) -# define sk_STORE_ATTR_INFO_unshift(st, val) SKM_sk_unshift(STORE_ATTR_INFO, (st), (val)) -# define sk_STORE_ATTR_INFO_find(st, val) SKM_sk_find(STORE_ATTR_INFO, (st), (val)) -# define sk_STORE_ATTR_INFO_find_ex(st, val) SKM_sk_find_ex(STORE_ATTR_INFO, (st), (val)) -# define sk_STORE_ATTR_INFO_delete(st, i) SKM_sk_delete(STORE_ATTR_INFO, (st), (i)) -# define sk_STORE_ATTR_INFO_delete_ptr(st, ptr) SKM_sk_delete_ptr(STORE_ATTR_INFO, (st), (ptr)) -# define sk_STORE_ATTR_INFO_insert(st, val, i) SKM_sk_insert(STORE_ATTR_INFO, (st), (val), (i)) -# define sk_STORE_ATTR_INFO_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(STORE_ATTR_INFO, (st), (cmp)) -# define sk_STORE_ATTR_INFO_dup(st) SKM_sk_dup(STORE_ATTR_INFO, st) -# define sk_STORE_ATTR_INFO_pop_free(st, free_func) SKM_sk_pop_free(STORE_ATTR_INFO, (st), (free_func)) -# define sk_STORE_ATTR_INFO_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(STORE_ATTR_INFO, (st), (copy_func), (free_func)) -# define sk_STORE_ATTR_INFO_shift(st) SKM_sk_shift(STORE_ATTR_INFO, (st)) -# define sk_STORE_ATTR_INFO_pop(st) SKM_sk_pop(STORE_ATTR_INFO, (st)) -# define sk_STORE_ATTR_INFO_sort(st) SKM_sk_sort(STORE_ATTR_INFO, (st)) -# define sk_STORE_ATTR_INFO_is_sorted(st) SKM_sk_is_sorted(STORE_ATTR_INFO, (st)) -# define sk_STORE_OBJECT_new(cmp) SKM_sk_new(STORE_OBJECT, (cmp)) -# define sk_STORE_OBJECT_new_null() SKM_sk_new_null(STORE_OBJECT) -# define sk_STORE_OBJECT_free(st) SKM_sk_free(STORE_OBJECT, (st)) -# define sk_STORE_OBJECT_num(st) SKM_sk_num(STORE_OBJECT, (st)) -# define sk_STORE_OBJECT_value(st, i) SKM_sk_value(STORE_OBJECT, (st), (i)) -# define sk_STORE_OBJECT_set(st, i, val) SKM_sk_set(STORE_OBJECT, (st), (i), (val)) -# define sk_STORE_OBJECT_zero(st) SKM_sk_zero(STORE_OBJECT, (st)) -# define sk_STORE_OBJECT_push(st, val) SKM_sk_push(STORE_OBJECT, (st), (val)) -# define sk_STORE_OBJECT_unshift(st, val) SKM_sk_unshift(STORE_OBJECT, (st), (val)) -# define sk_STORE_OBJECT_find(st, val) SKM_sk_find(STORE_OBJECT, (st), (val)) -# define sk_STORE_OBJECT_find_ex(st, val) SKM_sk_find_ex(STORE_OBJECT, (st), (val)) -# define sk_STORE_OBJECT_delete(st, i) SKM_sk_delete(STORE_OBJECT, (st), (i)) -# define sk_STORE_OBJECT_delete_ptr(st, ptr) SKM_sk_delete_ptr(STORE_OBJECT, (st), (ptr)) -# define sk_STORE_OBJECT_insert(st, val, i) SKM_sk_insert(STORE_OBJECT, (st), (val), (i)) -# define sk_STORE_OBJECT_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(STORE_OBJECT, (st), (cmp)) -# define sk_STORE_OBJECT_dup(st) SKM_sk_dup(STORE_OBJECT, st) -# define sk_STORE_OBJECT_pop_free(st, free_func) SKM_sk_pop_free(STORE_OBJECT, (st), (free_func)) -# define sk_STORE_OBJECT_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(STORE_OBJECT, (st), (copy_func), (free_func)) -# define sk_STORE_OBJECT_shift(st) SKM_sk_shift(STORE_OBJECT, (st)) -# define sk_STORE_OBJECT_pop(st) SKM_sk_pop(STORE_OBJECT, (st)) -# define sk_STORE_OBJECT_sort(st) SKM_sk_sort(STORE_OBJECT, (st)) -# define sk_STORE_OBJECT_is_sorted(st) SKM_sk_is_sorted(STORE_OBJECT, (st)) -# define sk_SXNETID_new(cmp) SKM_sk_new(SXNETID, (cmp)) -# define sk_SXNETID_new_null() SKM_sk_new_null(SXNETID) -# define sk_SXNETID_free(st) SKM_sk_free(SXNETID, (st)) -# define sk_SXNETID_num(st) SKM_sk_num(SXNETID, (st)) -# define sk_SXNETID_value(st, i) SKM_sk_value(SXNETID, (st), (i)) -# define sk_SXNETID_set(st, i, val) SKM_sk_set(SXNETID, (st), (i), (val)) -# define sk_SXNETID_zero(st) SKM_sk_zero(SXNETID, (st)) -# define sk_SXNETID_push(st, val) SKM_sk_push(SXNETID, (st), (val)) -# define sk_SXNETID_unshift(st, val) SKM_sk_unshift(SXNETID, (st), (val)) -# define sk_SXNETID_find(st, val) SKM_sk_find(SXNETID, (st), (val)) -# define sk_SXNETID_find_ex(st, val) SKM_sk_find_ex(SXNETID, (st), (val)) -# define sk_SXNETID_delete(st, i) SKM_sk_delete(SXNETID, (st), (i)) -# define sk_SXNETID_delete_ptr(st, ptr) SKM_sk_delete_ptr(SXNETID, (st), (ptr)) -# define sk_SXNETID_insert(st, val, i) SKM_sk_insert(SXNETID, (st), (val), (i)) -# define sk_SXNETID_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(SXNETID, (st), (cmp)) -# define sk_SXNETID_dup(st) SKM_sk_dup(SXNETID, st) -# define sk_SXNETID_pop_free(st, free_func) SKM_sk_pop_free(SXNETID, (st), (free_func)) -# define sk_SXNETID_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(SXNETID, (st), (copy_func), (free_func)) -# define sk_SXNETID_shift(st) SKM_sk_shift(SXNETID, (st)) -# define sk_SXNETID_pop(st) SKM_sk_pop(SXNETID, (st)) -# define sk_SXNETID_sort(st) SKM_sk_sort(SXNETID, (st)) -# define sk_SXNETID_is_sorted(st) SKM_sk_is_sorted(SXNETID, (st)) -# define sk_UI_STRING_new(cmp) SKM_sk_new(UI_STRING, (cmp)) -# define sk_UI_STRING_new_null() SKM_sk_new_null(UI_STRING) -# define sk_UI_STRING_free(st) SKM_sk_free(UI_STRING, (st)) -# define sk_UI_STRING_num(st) SKM_sk_num(UI_STRING, (st)) -# define sk_UI_STRING_value(st, i) SKM_sk_value(UI_STRING, (st), (i)) -# define sk_UI_STRING_set(st, i, val) SKM_sk_set(UI_STRING, (st), (i), (val)) -# define sk_UI_STRING_zero(st) SKM_sk_zero(UI_STRING, (st)) -# define sk_UI_STRING_push(st, val) SKM_sk_push(UI_STRING, (st), (val)) -# define sk_UI_STRING_unshift(st, val) SKM_sk_unshift(UI_STRING, (st), (val)) -# define sk_UI_STRING_find(st, val) SKM_sk_find(UI_STRING, (st), (val)) -# define sk_UI_STRING_find_ex(st, val) SKM_sk_find_ex(UI_STRING, (st), (val)) -# define sk_UI_STRING_delete(st, i) SKM_sk_delete(UI_STRING, (st), (i)) -# define sk_UI_STRING_delete_ptr(st, ptr) SKM_sk_delete_ptr(UI_STRING, (st), (ptr)) -# define sk_UI_STRING_insert(st, val, i) SKM_sk_insert(UI_STRING, (st), (val), (i)) -# define sk_UI_STRING_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(UI_STRING, (st), (cmp)) -# define sk_UI_STRING_dup(st) SKM_sk_dup(UI_STRING, st) -# define sk_UI_STRING_pop_free(st, free_func) SKM_sk_pop_free(UI_STRING, (st), (free_func)) -# define sk_UI_STRING_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(UI_STRING, (st), (copy_func), (free_func)) -# define sk_UI_STRING_shift(st) SKM_sk_shift(UI_STRING, (st)) -# define sk_UI_STRING_pop(st) SKM_sk_pop(UI_STRING, (st)) -# define sk_UI_STRING_sort(st) SKM_sk_sort(UI_STRING, (st)) -# define sk_UI_STRING_is_sorted(st) SKM_sk_is_sorted(UI_STRING, (st)) -# define sk_X509_new(cmp) SKM_sk_new(X509, (cmp)) -# define sk_X509_new_null() SKM_sk_new_null(X509) -# define sk_X509_free(st) SKM_sk_free(X509, (st)) -# define sk_X509_num(st) SKM_sk_num(X509, (st)) -# define sk_X509_value(st, i) SKM_sk_value(X509, (st), (i)) -# define sk_X509_set(st, i, val) SKM_sk_set(X509, (st), (i), (val)) -# define sk_X509_zero(st) SKM_sk_zero(X509, (st)) -# define sk_X509_push(st, val) SKM_sk_push(X509, (st), (val)) -# define sk_X509_unshift(st, val) SKM_sk_unshift(X509, (st), (val)) -# define sk_X509_find(st, val) SKM_sk_find(X509, (st), (val)) -# define sk_X509_find_ex(st, val) SKM_sk_find_ex(X509, (st), (val)) -# define sk_X509_delete(st, i) SKM_sk_delete(X509, (st), (i)) -# define sk_X509_delete_ptr(st, ptr) SKM_sk_delete_ptr(X509, (st), (ptr)) -# define sk_X509_insert(st, val, i) SKM_sk_insert(X509, (st), (val), (i)) -# define sk_X509_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(X509, (st), (cmp)) -# define sk_X509_dup(st) SKM_sk_dup(X509, st) -# define sk_X509_pop_free(st, free_func) SKM_sk_pop_free(X509, (st), (free_func)) -# define sk_X509_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(X509, (st), (copy_func), (free_func)) -# define sk_X509_shift(st) SKM_sk_shift(X509, (st)) -# define sk_X509_pop(st) SKM_sk_pop(X509, (st)) -# define sk_X509_sort(st) SKM_sk_sort(X509, (st)) -# define sk_X509_is_sorted(st) SKM_sk_is_sorted(X509, (st)) -# define sk_X509V3_EXT_METHOD_new(cmp) SKM_sk_new(X509V3_EXT_METHOD, (cmp)) -# define sk_X509V3_EXT_METHOD_new_null() SKM_sk_new_null(X509V3_EXT_METHOD) -# define sk_X509V3_EXT_METHOD_free(st) SKM_sk_free(X509V3_EXT_METHOD, (st)) -# define sk_X509V3_EXT_METHOD_num(st) SKM_sk_num(X509V3_EXT_METHOD, (st)) -# define sk_X509V3_EXT_METHOD_value(st, i) SKM_sk_value(X509V3_EXT_METHOD, (st), (i)) -# define sk_X509V3_EXT_METHOD_set(st, i, val) SKM_sk_set(X509V3_EXT_METHOD, (st), (i), (val)) -# define sk_X509V3_EXT_METHOD_zero(st) SKM_sk_zero(X509V3_EXT_METHOD, (st)) -# define sk_X509V3_EXT_METHOD_push(st, val) SKM_sk_push(X509V3_EXT_METHOD, (st), (val)) -# define sk_X509V3_EXT_METHOD_unshift(st, val) SKM_sk_unshift(X509V3_EXT_METHOD, (st), (val)) -# define sk_X509V3_EXT_METHOD_find(st, val) SKM_sk_find(X509V3_EXT_METHOD, (st), (val)) -# define sk_X509V3_EXT_METHOD_find_ex(st, val) SKM_sk_find_ex(X509V3_EXT_METHOD, (st), (val)) -# define sk_X509V3_EXT_METHOD_delete(st, i) SKM_sk_delete(X509V3_EXT_METHOD, (st), (i)) -# define sk_X509V3_EXT_METHOD_delete_ptr(st, ptr) SKM_sk_delete_ptr(X509V3_EXT_METHOD, (st), (ptr)) -# define sk_X509V3_EXT_METHOD_insert(st, val, i) SKM_sk_insert(X509V3_EXT_METHOD, (st), (val), (i)) -# define sk_X509V3_EXT_METHOD_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(X509V3_EXT_METHOD, (st), (cmp)) -# define sk_X509V3_EXT_METHOD_dup(st) SKM_sk_dup(X509V3_EXT_METHOD, st) -# define sk_X509V3_EXT_METHOD_pop_free(st, free_func) SKM_sk_pop_free(X509V3_EXT_METHOD, (st), (free_func)) -# define sk_X509V3_EXT_METHOD_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(X509V3_EXT_METHOD, (st), (copy_func), (free_func)) -# define sk_X509V3_EXT_METHOD_shift(st) SKM_sk_shift(X509V3_EXT_METHOD, (st)) -# define sk_X509V3_EXT_METHOD_pop(st) SKM_sk_pop(X509V3_EXT_METHOD, (st)) -# define sk_X509V3_EXT_METHOD_sort(st) SKM_sk_sort(X509V3_EXT_METHOD, (st)) -# define sk_X509V3_EXT_METHOD_is_sorted(st) SKM_sk_is_sorted(X509V3_EXT_METHOD, (st)) -# define sk_X509_ALGOR_new(cmp) SKM_sk_new(X509_ALGOR, (cmp)) -# define sk_X509_ALGOR_new_null() SKM_sk_new_null(X509_ALGOR) -# define sk_X509_ALGOR_free(st) SKM_sk_free(X509_ALGOR, (st)) -# define sk_X509_ALGOR_num(st) SKM_sk_num(X509_ALGOR, (st)) -# define sk_X509_ALGOR_value(st, i) SKM_sk_value(X509_ALGOR, (st), (i)) -# define sk_X509_ALGOR_set(st, i, val) SKM_sk_set(X509_ALGOR, (st), (i), (val)) -# define sk_X509_ALGOR_zero(st) SKM_sk_zero(X509_ALGOR, (st)) -# define sk_X509_ALGOR_push(st, val) SKM_sk_push(X509_ALGOR, (st), (val)) -# define sk_X509_ALGOR_unshift(st, val) SKM_sk_unshift(X509_ALGOR, (st), (val)) -# define sk_X509_ALGOR_find(st, val) SKM_sk_find(X509_ALGOR, (st), (val)) -# define sk_X509_ALGOR_find_ex(st, val) SKM_sk_find_ex(X509_ALGOR, (st), (val)) -# define sk_X509_ALGOR_delete(st, i) SKM_sk_delete(X509_ALGOR, (st), (i)) -# define sk_X509_ALGOR_delete_ptr(st, ptr) SKM_sk_delete_ptr(X509_ALGOR, (st), (ptr)) -# define sk_X509_ALGOR_insert(st, val, i) SKM_sk_insert(X509_ALGOR, (st), (val), (i)) -# define sk_X509_ALGOR_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(X509_ALGOR, (st), (cmp)) -# define sk_X509_ALGOR_dup(st) SKM_sk_dup(X509_ALGOR, st) -# define sk_X509_ALGOR_pop_free(st, free_func) SKM_sk_pop_free(X509_ALGOR, (st), (free_func)) -# define sk_X509_ALGOR_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(X509_ALGOR, (st), (copy_func), (free_func)) -# define sk_X509_ALGOR_shift(st) SKM_sk_shift(X509_ALGOR, (st)) -# define sk_X509_ALGOR_pop(st) SKM_sk_pop(X509_ALGOR, (st)) -# define sk_X509_ALGOR_sort(st) SKM_sk_sort(X509_ALGOR, (st)) -# define sk_X509_ALGOR_is_sorted(st) SKM_sk_is_sorted(X509_ALGOR, (st)) -# define sk_X509_ATTRIBUTE_new(cmp) SKM_sk_new(X509_ATTRIBUTE, (cmp)) -# define sk_X509_ATTRIBUTE_new_null() SKM_sk_new_null(X509_ATTRIBUTE) -# define sk_X509_ATTRIBUTE_free(st) SKM_sk_free(X509_ATTRIBUTE, (st)) -# define sk_X509_ATTRIBUTE_num(st) SKM_sk_num(X509_ATTRIBUTE, (st)) -# define sk_X509_ATTRIBUTE_value(st, i) SKM_sk_value(X509_ATTRIBUTE, (st), (i)) -# define sk_X509_ATTRIBUTE_set(st, i, val) SKM_sk_set(X509_ATTRIBUTE, (st), (i), (val)) -# define sk_X509_ATTRIBUTE_zero(st) SKM_sk_zero(X509_ATTRIBUTE, (st)) -# define sk_X509_ATTRIBUTE_push(st, val) SKM_sk_push(X509_ATTRIBUTE, (st), (val)) -# define sk_X509_ATTRIBUTE_unshift(st, val) SKM_sk_unshift(X509_ATTRIBUTE, (st), (val)) -# define sk_X509_ATTRIBUTE_find(st, val) SKM_sk_find(X509_ATTRIBUTE, (st), (val)) -# define sk_X509_ATTRIBUTE_find_ex(st, val) SKM_sk_find_ex(X509_ATTRIBUTE, (st), (val)) -# define sk_X509_ATTRIBUTE_delete(st, i) SKM_sk_delete(X509_ATTRIBUTE, (st), (i)) -# define sk_X509_ATTRIBUTE_delete_ptr(st, ptr) SKM_sk_delete_ptr(X509_ATTRIBUTE, (st), (ptr)) -# define sk_X509_ATTRIBUTE_insert(st, val, i) SKM_sk_insert(X509_ATTRIBUTE, (st), (val), (i)) -# define sk_X509_ATTRIBUTE_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(X509_ATTRIBUTE, (st), (cmp)) -# define sk_X509_ATTRIBUTE_dup(st) SKM_sk_dup(X509_ATTRIBUTE, st) -# define sk_X509_ATTRIBUTE_pop_free(st, free_func) SKM_sk_pop_free(X509_ATTRIBUTE, (st), (free_func)) -# define sk_X509_ATTRIBUTE_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(X509_ATTRIBUTE, (st), (copy_func), (free_func)) -# define sk_X509_ATTRIBUTE_shift(st) SKM_sk_shift(X509_ATTRIBUTE, (st)) -# define sk_X509_ATTRIBUTE_pop(st) SKM_sk_pop(X509_ATTRIBUTE, (st)) -# define sk_X509_ATTRIBUTE_sort(st) SKM_sk_sort(X509_ATTRIBUTE, (st)) -# define sk_X509_ATTRIBUTE_is_sorted(st) SKM_sk_is_sorted(X509_ATTRIBUTE, (st)) -# define sk_X509_CRL_new(cmp) SKM_sk_new(X509_CRL, (cmp)) -# define sk_X509_CRL_new_null() SKM_sk_new_null(X509_CRL) -# define sk_X509_CRL_free(st) SKM_sk_free(X509_CRL, (st)) -# define sk_X509_CRL_num(st) SKM_sk_num(X509_CRL, (st)) -# define sk_X509_CRL_value(st, i) SKM_sk_value(X509_CRL, (st), (i)) -# define sk_X509_CRL_set(st, i, val) SKM_sk_set(X509_CRL, (st), (i), (val)) -# define sk_X509_CRL_zero(st) SKM_sk_zero(X509_CRL, (st)) -# define sk_X509_CRL_push(st, val) SKM_sk_push(X509_CRL, (st), (val)) -# define sk_X509_CRL_unshift(st, val) SKM_sk_unshift(X509_CRL, (st), (val)) -# define sk_X509_CRL_find(st, val) SKM_sk_find(X509_CRL, (st), (val)) -# define sk_X509_CRL_find_ex(st, val) SKM_sk_find_ex(X509_CRL, (st), (val)) -# define sk_X509_CRL_delete(st, i) SKM_sk_delete(X509_CRL, (st), (i)) -# define sk_X509_CRL_delete_ptr(st, ptr) SKM_sk_delete_ptr(X509_CRL, (st), (ptr)) -# define sk_X509_CRL_insert(st, val, i) SKM_sk_insert(X509_CRL, (st), (val), (i)) -# define sk_X509_CRL_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(X509_CRL, (st), (cmp)) -# define sk_X509_CRL_dup(st) SKM_sk_dup(X509_CRL, st) -# define sk_X509_CRL_pop_free(st, free_func) SKM_sk_pop_free(X509_CRL, (st), (free_func)) -# define sk_X509_CRL_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(X509_CRL, (st), (copy_func), (free_func)) -# define sk_X509_CRL_shift(st) SKM_sk_shift(X509_CRL, (st)) -# define sk_X509_CRL_pop(st) SKM_sk_pop(X509_CRL, (st)) -# define sk_X509_CRL_sort(st) SKM_sk_sort(X509_CRL, (st)) -# define sk_X509_CRL_is_sorted(st) SKM_sk_is_sorted(X509_CRL, (st)) -# define sk_X509_EXTENSION_new(cmp) SKM_sk_new(X509_EXTENSION, (cmp)) -# define sk_X509_EXTENSION_new_null() SKM_sk_new_null(X509_EXTENSION) -# define sk_X509_EXTENSION_free(st) SKM_sk_free(X509_EXTENSION, (st)) -# define sk_X509_EXTENSION_num(st) SKM_sk_num(X509_EXTENSION, (st)) -# define sk_X509_EXTENSION_value(st, i) SKM_sk_value(X509_EXTENSION, (st), (i)) -# define sk_X509_EXTENSION_set(st, i, val) SKM_sk_set(X509_EXTENSION, (st), (i), (val)) -# define sk_X509_EXTENSION_zero(st) SKM_sk_zero(X509_EXTENSION, (st)) -# define sk_X509_EXTENSION_push(st, val) SKM_sk_push(X509_EXTENSION, (st), (val)) -# define sk_X509_EXTENSION_unshift(st, val) SKM_sk_unshift(X509_EXTENSION, (st), (val)) -# define sk_X509_EXTENSION_find(st, val) SKM_sk_find(X509_EXTENSION, (st), (val)) -# define sk_X509_EXTENSION_find_ex(st, val) SKM_sk_find_ex(X509_EXTENSION, (st), (val)) -# define sk_X509_EXTENSION_delete(st, i) SKM_sk_delete(X509_EXTENSION, (st), (i)) -# define sk_X509_EXTENSION_delete_ptr(st, ptr) SKM_sk_delete_ptr(X509_EXTENSION, (st), (ptr)) -# define sk_X509_EXTENSION_insert(st, val, i) SKM_sk_insert(X509_EXTENSION, (st), (val), (i)) -# define sk_X509_EXTENSION_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(X509_EXTENSION, (st), (cmp)) -# define sk_X509_EXTENSION_dup(st) SKM_sk_dup(X509_EXTENSION, st) -# define sk_X509_EXTENSION_pop_free(st, free_func) SKM_sk_pop_free(X509_EXTENSION, (st), (free_func)) -# define sk_X509_EXTENSION_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(X509_EXTENSION, (st), (copy_func), (free_func)) -# define sk_X509_EXTENSION_shift(st) SKM_sk_shift(X509_EXTENSION, (st)) -# define sk_X509_EXTENSION_pop(st) SKM_sk_pop(X509_EXTENSION, (st)) -# define sk_X509_EXTENSION_sort(st) SKM_sk_sort(X509_EXTENSION, (st)) -# define sk_X509_EXTENSION_is_sorted(st) SKM_sk_is_sorted(X509_EXTENSION, (st)) -# define sk_X509_INFO_new(cmp) SKM_sk_new(X509_INFO, (cmp)) -# define sk_X509_INFO_new_null() SKM_sk_new_null(X509_INFO) -# define sk_X509_INFO_free(st) SKM_sk_free(X509_INFO, (st)) -# define sk_X509_INFO_num(st) SKM_sk_num(X509_INFO, (st)) -# define sk_X509_INFO_value(st, i) SKM_sk_value(X509_INFO, (st), (i)) -# define sk_X509_INFO_set(st, i, val) SKM_sk_set(X509_INFO, (st), (i), (val)) -# define sk_X509_INFO_zero(st) SKM_sk_zero(X509_INFO, (st)) -# define sk_X509_INFO_push(st, val) SKM_sk_push(X509_INFO, (st), (val)) -# define sk_X509_INFO_unshift(st, val) SKM_sk_unshift(X509_INFO, (st), (val)) -# define sk_X509_INFO_find(st, val) SKM_sk_find(X509_INFO, (st), (val)) -# define sk_X509_INFO_find_ex(st, val) SKM_sk_find_ex(X509_INFO, (st), (val)) -# define sk_X509_INFO_delete(st, i) SKM_sk_delete(X509_INFO, (st), (i)) -# define sk_X509_INFO_delete_ptr(st, ptr) SKM_sk_delete_ptr(X509_INFO, (st), (ptr)) -# define sk_X509_INFO_insert(st, val, i) SKM_sk_insert(X509_INFO, (st), (val), (i)) -# define sk_X509_INFO_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(X509_INFO, (st), (cmp)) -# define sk_X509_INFO_dup(st) SKM_sk_dup(X509_INFO, st) -# define sk_X509_INFO_pop_free(st, free_func) SKM_sk_pop_free(X509_INFO, (st), (free_func)) -# define sk_X509_INFO_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(X509_INFO, (st), (copy_func), (free_func)) -# define sk_X509_INFO_shift(st) SKM_sk_shift(X509_INFO, (st)) -# define sk_X509_INFO_pop(st) SKM_sk_pop(X509_INFO, (st)) -# define sk_X509_INFO_sort(st) SKM_sk_sort(X509_INFO, (st)) -# define sk_X509_INFO_is_sorted(st) SKM_sk_is_sorted(X509_INFO, (st)) -# define sk_X509_LOOKUP_new(cmp) SKM_sk_new(X509_LOOKUP, (cmp)) -# define sk_X509_LOOKUP_new_null() SKM_sk_new_null(X509_LOOKUP) -# define sk_X509_LOOKUP_free(st) SKM_sk_free(X509_LOOKUP, (st)) -# define sk_X509_LOOKUP_num(st) SKM_sk_num(X509_LOOKUP, (st)) -# define sk_X509_LOOKUP_value(st, i) SKM_sk_value(X509_LOOKUP, (st), (i)) -# define sk_X509_LOOKUP_set(st, i, val) SKM_sk_set(X509_LOOKUP, (st), (i), (val)) -# define sk_X509_LOOKUP_zero(st) SKM_sk_zero(X509_LOOKUP, (st)) -# define sk_X509_LOOKUP_push(st, val) SKM_sk_push(X509_LOOKUP, (st), (val)) -# define sk_X509_LOOKUP_unshift(st, val) SKM_sk_unshift(X509_LOOKUP, (st), (val)) -# define sk_X509_LOOKUP_find(st, val) SKM_sk_find(X509_LOOKUP, (st), (val)) -# define sk_X509_LOOKUP_find_ex(st, val) SKM_sk_find_ex(X509_LOOKUP, (st), (val)) -# define sk_X509_LOOKUP_delete(st, i) SKM_sk_delete(X509_LOOKUP, (st), (i)) -# define sk_X509_LOOKUP_delete_ptr(st, ptr) SKM_sk_delete_ptr(X509_LOOKUP, (st), (ptr)) -# define sk_X509_LOOKUP_insert(st, val, i) SKM_sk_insert(X509_LOOKUP, (st), (val), (i)) -# define sk_X509_LOOKUP_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(X509_LOOKUP, (st), (cmp)) -# define sk_X509_LOOKUP_dup(st) SKM_sk_dup(X509_LOOKUP, st) -# define sk_X509_LOOKUP_pop_free(st, free_func) SKM_sk_pop_free(X509_LOOKUP, (st), (free_func)) -# define sk_X509_LOOKUP_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(X509_LOOKUP, (st), (copy_func), (free_func)) -# define sk_X509_LOOKUP_shift(st) SKM_sk_shift(X509_LOOKUP, (st)) -# define sk_X509_LOOKUP_pop(st) SKM_sk_pop(X509_LOOKUP, (st)) -# define sk_X509_LOOKUP_sort(st) SKM_sk_sort(X509_LOOKUP, (st)) -# define sk_X509_LOOKUP_is_sorted(st) SKM_sk_is_sorted(X509_LOOKUP, (st)) -# define sk_X509_NAME_new(cmp) SKM_sk_new(X509_NAME, (cmp)) -# define sk_X509_NAME_new_null() SKM_sk_new_null(X509_NAME) -# define sk_X509_NAME_free(st) SKM_sk_free(X509_NAME, (st)) -# define sk_X509_NAME_num(st) SKM_sk_num(X509_NAME, (st)) -# define sk_X509_NAME_value(st, i) SKM_sk_value(X509_NAME, (st), (i)) -# define sk_X509_NAME_set(st, i, val) SKM_sk_set(X509_NAME, (st), (i), (val)) -# define sk_X509_NAME_zero(st) SKM_sk_zero(X509_NAME, (st)) -# define sk_X509_NAME_push(st, val) SKM_sk_push(X509_NAME, (st), (val)) -# define sk_X509_NAME_unshift(st, val) SKM_sk_unshift(X509_NAME, (st), (val)) -# define sk_X509_NAME_find(st, val) SKM_sk_find(X509_NAME, (st), (val)) -# define sk_X509_NAME_find_ex(st, val) SKM_sk_find_ex(X509_NAME, (st), (val)) -# define sk_X509_NAME_delete(st, i) SKM_sk_delete(X509_NAME, (st), (i)) -# define sk_X509_NAME_delete_ptr(st, ptr) SKM_sk_delete_ptr(X509_NAME, (st), (ptr)) -# define sk_X509_NAME_insert(st, val, i) SKM_sk_insert(X509_NAME, (st), (val), (i)) -# define sk_X509_NAME_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(X509_NAME, (st), (cmp)) -# define sk_X509_NAME_dup(st) SKM_sk_dup(X509_NAME, st) -# define sk_X509_NAME_pop_free(st, free_func) SKM_sk_pop_free(X509_NAME, (st), (free_func)) -# define sk_X509_NAME_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(X509_NAME, (st), (copy_func), (free_func)) -# define sk_X509_NAME_shift(st) SKM_sk_shift(X509_NAME, (st)) -# define sk_X509_NAME_pop(st) SKM_sk_pop(X509_NAME, (st)) -# define sk_X509_NAME_sort(st) SKM_sk_sort(X509_NAME, (st)) -# define sk_X509_NAME_is_sorted(st) SKM_sk_is_sorted(X509_NAME, (st)) -# define sk_X509_NAME_ENTRY_new(cmp) SKM_sk_new(X509_NAME_ENTRY, (cmp)) -# define sk_X509_NAME_ENTRY_new_null() SKM_sk_new_null(X509_NAME_ENTRY) -# define sk_X509_NAME_ENTRY_free(st) SKM_sk_free(X509_NAME_ENTRY, (st)) -# define sk_X509_NAME_ENTRY_num(st) SKM_sk_num(X509_NAME_ENTRY, (st)) -# define sk_X509_NAME_ENTRY_value(st, i) SKM_sk_value(X509_NAME_ENTRY, (st), (i)) -# define sk_X509_NAME_ENTRY_set(st, i, val) SKM_sk_set(X509_NAME_ENTRY, (st), (i), (val)) -# define sk_X509_NAME_ENTRY_zero(st) SKM_sk_zero(X509_NAME_ENTRY, (st)) -# define sk_X509_NAME_ENTRY_push(st, val) SKM_sk_push(X509_NAME_ENTRY, (st), (val)) -# define sk_X509_NAME_ENTRY_unshift(st, val) SKM_sk_unshift(X509_NAME_ENTRY, (st), (val)) -# define sk_X509_NAME_ENTRY_find(st, val) SKM_sk_find(X509_NAME_ENTRY, (st), (val)) -# define sk_X509_NAME_ENTRY_find_ex(st, val) SKM_sk_find_ex(X509_NAME_ENTRY, (st), (val)) -# define sk_X509_NAME_ENTRY_delete(st, i) SKM_sk_delete(X509_NAME_ENTRY, (st), (i)) -# define sk_X509_NAME_ENTRY_delete_ptr(st, ptr) SKM_sk_delete_ptr(X509_NAME_ENTRY, (st), (ptr)) -# define sk_X509_NAME_ENTRY_insert(st, val, i) SKM_sk_insert(X509_NAME_ENTRY, (st), (val), (i)) -# define sk_X509_NAME_ENTRY_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(X509_NAME_ENTRY, (st), (cmp)) -# define sk_X509_NAME_ENTRY_dup(st) SKM_sk_dup(X509_NAME_ENTRY, st) -# define sk_X509_NAME_ENTRY_pop_free(st, free_func) SKM_sk_pop_free(X509_NAME_ENTRY, (st), (free_func)) -# define sk_X509_NAME_ENTRY_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(X509_NAME_ENTRY, (st), (copy_func), (free_func)) -# define sk_X509_NAME_ENTRY_shift(st) SKM_sk_shift(X509_NAME_ENTRY, (st)) -# define sk_X509_NAME_ENTRY_pop(st) SKM_sk_pop(X509_NAME_ENTRY, (st)) -# define sk_X509_NAME_ENTRY_sort(st) SKM_sk_sort(X509_NAME_ENTRY, (st)) -# define sk_X509_NAME_ENTRY_is_sorted(st) SKM_sk_is_sorted(X509_NAME_ENTRY, (st)) -# define sk_X509_OBJECT_new(cmp) SKM_sk_new(X509_OBJECT, (cmp)) -# define sk_X509_OBJECT_new_null() SKM_sk_new_null(X509_OBJECT) -# define sk_X509_OBJECT_free(st) SKM_sk_free(X509_OBJECT, (st)) -# define sk_X509_OBJECT_num(st) SKM_sk_num(X509_OBJECT, (st)) -# define sk_X509_OBJECT_value(st, i) SKM_sk_value(X509_OBJECT, (st), (i)) -# define sk_X509_OBJECT_set(st, i, val) SKM_sk_set(X509_OBJECT, (st), (i), (val)) -# define sk_X509_OBJECT_zero(st) SKM_sk_zero(X509_OBJECT, (st)) -# define sk_X509_OBJECT_push(st, val) SKM_sk_push(X509_OBJECT, (st), (val)) -# define sk_X509_OBJECT_unshift(st, val) SKM_sk_unshift(X509_OBJECT, (st), (val)) -# define sk_X509_OBJECT_find(st, val) SKM_sk_find(X509_OBJECT, (st), (val)) -# define sk_X509_OBJECT_find_ex(st, val) SKM_sk_find_ex(X509_OBJECT, (st), (val)) -# define sk_X509_OBJECT_delete(st, i) SKM_sk_delete(X509_OBJECT, (st), (i)) -# define sk_X509_OBJECT_delete_ptr(st, ptr) SKM_sk_delete_ptr(X509_OBJECT, (st), (ptr)) -# define sk_X509_OBJECT_insert(st, val, i) SKM_sk_insert(X509_OBJECT, (st), (val), (i)) -# define sk_X509_OBJECT_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(X509_OBJECT, (st), (cmp)) -# define sk_X509_OBJECT_dup(st) SKM_sk_dup(X509_OBJECT, st) -# define sk_X509_OBJECT_pop_free(st, free_func) SKM_sk_pop_free(X509_OBJECT, (st), (free_func)) -# define sk_X509_OBJECT_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(X509_OBJECT, (st), (copy_func), (free_func)) -# define sk_X509_OBJECT_shift(st) SKM_sk_shift(X509_OBJECT, (st)) -# define sk_X509_OBJECT_pop(st) SKM_sk_pop(X509_OBJECT, (st)) -# define sk_X509_OBJECT_sort(st) SKM_sk_sort(X509_OBJECT, (st)) -# define sk_X509_OBJECT_is_sorted(st) SKM_sk_is_sorted(X509_OBJECT, (st)) -# define sk_X509_POLICY_DATA_new(cmp) SKM_sk_new(X509_POLICY_DATA, (cmp)) -# define sk_X509_POLICY_DATA_new_null() SKM_sk_new_null(X509_POLICY_DATA) -# define sk_X509_POLICY_DATA_free(st) SKM_sk_free(X509_POLICY_DATA, (st)) -# define sk_X509_POLICY_DATA_num(st) SKM_sk_num(X509_POLICY_DATA, (st)) -# define sk_X509_POLICY_DATA_value(st, i) SKM_sk_value(X509_POLICY_DATA, (st), (i)) -# define sk_X509_POLICY_DATA_set(st, i, val) SKM_sk_set(X509_POLICY_DATA, (st), (i), (val)) -# define sk_X509_POLICY_DATA_zero(st) SKM_sk_zero(X509_POLICY_DATA, (st)) -# define sk_X509_POLICY_DATA_push(st, val) SKM_sk_push(X509_POLICY_DATA, (st), (val)) -# define sk_X509_POLICY_DATA_unshift(st, val) SKM_sk_unshift(X509_POLICY_DATA, (st), (val)) -# define sk_X509_POLICY_DATA_find(st, val) SKM_sk_find(X509_POLICY_DATA, (st), (val)) -# define sk_X509_POLICY_DATA_find_ex(st, val) SKM_sk_find_ex(X509_POLICY_DATA, (st), (val)) -# define sk_X509_POLICY_DATA_delete(st, i) SKM_sk_delete(X509_POLICY_DATA, (st), (i)) -# define sk_X509_POLICY_DATA_delete_ptr(st, ptr) SKM_sk_delete_ptr(X509_POLICY_DATA, (st), (ptr)) -# define sk_X509_POLICY_DATA_insert(st, val, i) SKM_sk_insert(X509_POLICY_DATA, (st), (val), (i)) -# define sk_X509_POLICY_DATA_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(X509_POLICY_DATA, (st), (cmp)) -# define sk_X509_POLICY_DATA_dup(st) SKM_sk_dup(X509_POLICY_DATA, st) -# define sk_X509_POLICY_DATA_pop_free(st, free_func) SKM_sk_pop_free(X509_POLICY_DATA, (st), (free_func)) -# define sk_X509_POLICY_DATA_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(X509_POLICY_DATA, (st), (copy_func), (free_func)) -# define sk_X509_POLICY_DATA_shift(st) SKM_sk_shift(X509_POLICY_DATA, (st)) -# define sk_X509_POLICY_DATA_pop(st) SKM_sk_pop(X509_POLICY_DATA, (st)) -# define sk_X509_POLICY_DATA_sort(st) SKM_sk_sort(X509_POLICY_DATA, (st)) -# define sk_X509_POLICY_DATA_is_sorted(st) SKM_sk_is_sorted(X509_POLICY_DATA, (st)) -# define sk_X509_POLICY_NODE_new(cmp) SKM_sk_new(X509_POLICY_NODE, (cmp)) -# define sk_X509_POLICY_NODE_new_null() SKM_sk_new_null(X509_POLICY_NODE) -# define sk_X509_POLICY_NODE_free(st) SKM_sk_free(X509_POLICY_NODE, (st)) -# define sk_X509_POLICY_NODE_num(st) SKM_sk_num(X509_POLICY_NODE, (st)) -# define sk_X509_POLICY_NODE_value(st, i) SKM_sk_value(X509_POLICY_NODE, (st), (i)) -# define sk_X509_POLICY_NODE_set(st, i, val) SKM_sk_set(X509_POLICY_NODE, (st), (i), (val)) -# define sk_X509_POLICY_NODE_zero(st) SKM_sk_zero(X509_POLICY_NODE, (st)) -# define sk_X509_POLICY_NODE_push(st, val) SKM_sk_push(X509_POLICY_NODE, (st), (val)) -# define sk_X509_POLICY_NODE_unshift(st, val) SKM_sk_unshift(X509_POLICY_NODE, (st), (val)) -# define sk_X509_POLICY_NODE_find(st, val) SKM_sk_find(X509_POLICY_NODE, (st), (val)) -# define sk_X509_POLICY_NODE_find_ex(st, val) SKM_sk_find_ex(X509_POLICY_NODE, (st), (val)) -# define sk_X509_POLICY_NODE_delete(st, i) SKM_sk_delete(X509_POLICY_NODE, (st), (i)) -# define sk_X509_POLICY_NODE_delete_ptr(st, ptr) SKM_sk_delete_ptr(X509_POLICY_NODE, (st), (ptr)) -# define sk_X509_POLICY_NODE_insert(st, val, i) SKM_sk_insert(X509_POLICY_NODE, (st), (val), (i)) -# define sk_X509_POLICY_NODE_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(X509_POLICY_NODE, (st), (cmp)) -# define sk_X509_POLICY_NODE_dup(st) SKM_sk_dup(X509_POLICY_NODE, st) -# define sk_X509_POLICY_NODE_pop_free(st, free_func) SKM_sk_pop_free(X509_POLICY_NODE, (st), (free_func)) -# define sk_X509_POLICY_NODE_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(X509_POLICY_NODE, (st), (copy_func), (free_func)) -# define sk_X509_POLICY_NODE_shift(st) SKM_sk_shift(X509_POLICY_NODE, (st)) -# define sk_X509_POLICY_NODE_pop(st) SKM_sk_pop(X509_POLICY_NODE, (st)) -# define sk_X509_POLICY_NODE_sort(st) SKM_sk_sort(X509_POLICY_NODE, (st)) -# define sk_X509_POLICY_NODE_is_sorted(st) SKM_sk_is_sorted(X509_POLICY_NODE, (st)) -# define sk_X509_PURPOSE_new(cmp) SKM_sk_new(X509_PURPOSE, (cmp)) -# define sk_X509_PURPOSE_new_null() SKM_sk_new_null(X509_PURPOSE) -# define sk_X509_PURPOSE_free(st) SKM_sk_free(X509_PURPOSE, (st)) -# define sk_X509_PURPOSE_num(st) SKM_sk_num(X509_PURPOSE, (st)) -# define sk_X509_PURPOSE_value(st, i) SKM_sk_value(X509_PURPOSE, (st), (i)) -# define sk_X509_PURPOSE_set(st, i, val) SKM_sk_set(X509_PURPOSE, (st), (i), (val)) -# define sk_X509_PURPOSE_zero(st) SKM_sk_zero(X509_PURPOSE, (st)) -# define sk_X509_PURPOSE_push(st, val) SKM_sk_push(X509_PURPOSE, (st), (val)) -# define sk_X509_PURPOSE_unshift(st, val) SKM_sk_unshift(X509_PURPOSE, (st), (val)) -# define sk_X509_PURPOSE_find(st, val) SKM_sk_find(X509_PURPOSE, (st), (val)) -# define sk_X509_PURPOSE_find_ex(st, val) SKM_sk_find_ex(X509_PURPOSE, (st), (val)) -# define sk_X509_PURPOSE_delete(st, i) SKM_sk_delete(X509_PURPOSE, (st), (i)) -# define sk_X509_PURPOSE_delete_ptr(st, ptr) SKM_sk_delete_ptr(X509_PURPOSE, (st), (ptr)) -# define sk_X509_PURPOSE_insert(st, val, i) SKM_sk_insert(X509_PURPOSE, (st), (val), (i)) -# define sk_X509_PURPOSE_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(X509_PURPOSE, (st), (cmp)) -# define sk_X509_PURPOSE_dup(st) SKM_sk_dup(X509_PURPOSE, st) -# define sk_X509_PURPOSE_pop_free(st, free_func) SKM_sk_pop_free(X509_PURPOSE, (st), (free_func)) -# define sk_X509_PURPOSE_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(X509_PURPOSE, (st), (copy_func), (free_func)) -# define sk_X509_PURPOSE_shift(st) SKM_sk_shift(X509_PURPOSE, (st)) -# define sk_X509_PURPOSE_pop(st) SKM_sk_pop(X509_PURPOSE, (st)) -# define sk_X509_PURPOSE_sort(st) SKM_sk_sort(X509_PURPOSE, (st)) -# define sk_X509_PURPOSE_is_sorted(st) SKM_sk_is_sorted(X509_PURPOSE, (st)) -# define sk_X509_REVOKED_new(cmp) SKM_sk_new(X509_REVOKED, (cmp)) -# define sk_X509_REVOKED_new_null() SKM_sk_new_null(X509_REVOKED) -# define sk_X509_REVOKED_free(st) SKM_sk_free(X509_REVOKED, (st)) -# define sk_X509_REVOKED_num(st) SKM_sk_num(X509_REVOKED, (st)) -# define sk_X509_REVOKED_value(st, i) SKM_sk_value(X509_REVOKED, (st), (i)) -# define sk_X509_REVOKED_set(st, i, val) SKM_sk_set(X509_REVOKED, (st), (i), (val)) -# define sk_X509_REVOKED_zero(st) SKM_sk_zero(X509_REVOKED, (st)) -# define sk_X509_REVOKED_push(st, val) SKM_sk_push(X509_REVOKED, (st), (val)) -# define sk_X509_REVOKED_unshift(st, val) SKM_sk_unshift(X509_REVOKED, (st), (val)) -# define sk_X509_REVOKED_find(st, val) SKM_sk_find(X509_REVOKED, (st), (val)) -# define sk_X509_REVOKED_find_ex(st, val) SKM_sk_find_ex(X509_REVOKED, (st), (val)) -# define sk_X509_REVOKED_delete(st, i) SKM_sk_delete(X509_REVOKED, (st), (i)) -# define sk_X509_REVOKED_delete_ptr(st, ptr) SKM_sk_delete_ptr(X509_REVOKED, (st), (ptr)) -# define sk_X509_REVOKED_insert(st, val, i) SKM_sk_insert(X509_REVOKED, (st), (val), (i)) -# define sk_X509_REVOKED_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(X509_REVOKED, (st), (cmp)) -# define sk_X509_REVOKED_dup(st) SKM_sk_dup(X509_REVOKED, st) -# define sk_X509_REVOKED_pop_free(st, free_func) SKM_sk_pop_free(X509_REVOKED, (st), (free_func)) -# define sk_X509_REVOKED_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(X509_REVOKED, (st), (copy_func), (free_func)) -# define sk_X509_REVOKED_shift(st) SKM_sk_shift(X509_REVOKED, (st)) -# define sk_X509_REVOKED_pop(st) SKM_sk_pop(X509_REVOKED, (st)) -# define sk_X509_REVOKED_sort(st) SKM_sk_sort(X509_REVOKED, (st)) -# define sk_X509_REVOKED_is_sorted(st) SKM_sk_is_sorted(X509_REVOKED, (st)) -# define sk_X509_TRUST_new(cmp) SKM_sk_new(X509_TRUST, (cmp)) -# define sk_X509_TRUST_new_null() SKM_sk_new_null(X509_TRUST) -# define sk_X509_TRUST_free(st) SKM_sk_free(X509_TRUST, (st)) -# define sk_X509_TRUST_num(st) SKM_sk_num(X509_TRUST, (st)) -# define sk_X509_TRUST_value(st, i) SKM_sk_value(X509_TRUST, (st), (i)) -# define sk_X509_TRUST_set(st, i, val) SKM_sk_set(X509_TRUST, (st), (i), (val)) -# define sk_X509_TRUST_zero(st) SKM_sk_zero(X509_TRUST, (st)) -# define sk_X509_TRUST_push(st, val) SKM_sk_push(X509_TRUST, (st), (val)) -# define sk_X509_TRUST_unshift(st, val) SKM_sk_unshift(X509_TRUST, (st), (val)) -# define sk_X509_TRUST_find(st, val) SKM_sk_find(X509_TRUST, (st), (val)) -# define sk_X509_TRUST_find_ex(st, val) SKM_sk_find_ex(X509_TRUST, (st), (val)) -# define sk_X509_TRUST_delete(st, i) SKM_sk_delete(X509_TRUST, (st), (i)) -# define sk_X509_TRUST_delete_ptr(st, ptr) SKM_sk_delete_ptr(X509_TRUST, (st), (ptr)) -# define sk_X509_TRUST_insert(st, val, i) SKM_sk_insert(X509_TRUST, (st), (val), (i)) -# define sk_X509_TRUST_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(X509_TRUST, (st), (cmp)) -# define sk_X509_TRUST_dup(st) SKM_sk_dup(X509_TRUST, st) -# define sk_X509_TRUST_pop_free(st, free_func) SKM_sk_pop_free(X509_TRUST, (st), (free_func)) -# define sk_X509_TRUST_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(X509_TRUST, (st), (copy_func), (free_func)) -# define sk_X509_TRUST_shift(st) SKM_sk_shift(X509_TRUST, (st)) -# define sk_X509_TRUST_pop(st) SKM_sk_pop(X509_TRUST, (st)) -# define sk_X509_TRUST_sort(st) SKM_sk_sort(X509_TRUST, (st)) -# define sk_X509_TRUST_is_sorted(st) SKM_sk_is_sorted(X509_TRUST, (st)) -# define sk_X509_VERIFY_PARAM_new(cmp) SKM_sk_new(X509_VERIFY_PARAM, (cmp)) -# define sk_X509_VERIFY_PARAM_new_null() SKM_sk_new_null(X509_VERIFY_PARAM) -# define sk_X509_VERIFY_PARAM_free(st) SKM_sk_free(X509_VERIFY_PARAM, (st)) -# define sk_X509_VERIFY_PARAM_num(st) SKM_sk_num(X509_VERIFY_PARAM, (st)) -# define sk_X509_VERIFY_PARAM_value(st, i) SKM_sk_value(X509_VERIFY_PARAM, (st), (i)) -# define sk_X509_VERIFY_PARAM_set(st, i, val) SKM_sk_set(X509_VERIFY_PARAM, (st), (i), (val)) -# define sk_X509_VERIFY_PARAM_zero(st) SKM_sk_zero(X509_VERIFY_PARAM, (st)) -# define sk_X509_VERIFY_PARAM_push(st, val) SKM_sk_push(X509_VERIFY_PARAM, (st), (val)) -# define sk_X509_VERIFY_PARAM_unshift(st, val) SKM_sk_unshift(X509_VERIFY_PARAM, (st), (val)) -# define sk_X509_VERIFY_PARAM_find(st, val) SKM_sk_find(X509_VERIFY_PARAM, (st), (val)) -# define sk_X509_VERIFY_PARAM_find_ex(st, val) SKM_sk_find_ex(X509_VERIFY_PARAM, (st), (val)) -# define sk_X509_VERIFY_PARAM_delete(st, i) SKM_sk_delete(X509_VERIFY_PARAM, (st), (i)) -# define sk_X509_VERIFY_PARAM_delete_ptr(st, ptr) SKM_sk_delete_ptr(X509_VERIFY_PARAM, (st), (ptr)) -# define sk_X509_VERIFY_PARAM_insert(st, val, i) SKM_sk_insert(X509_VERIFY_PARAM, (st), (val), (i)) -# define sk_X509_VERIFY_PARAM_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(X509_VERIFY_PARAM, (st), (cmp)) -# define sk_X509_VERIFY_PARAM_dup(st) SKM_sk_dup(X509_VERIFY_PARAM, st) -# define sk_X509_VERIFY_PARAM_pop_free(st, free_func) SKM_sk_pop_free(X509_VERIFY_PARAM, (st), (free_func)) -# define sk_X509_VERIFY_PARAM_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(X509_VERIFY_PARAM, (st), (copy_func), (free_func)) -# define sk_X509_VERIFY_PARAM_shift(st) SKM_sk_shift(X509_VERIFY_PARAM, (st)) -# define sk_X509_VERIFY_PARAM_pop(st) SKM_sk_pop(X509_VERIFY_PARAM, (st)) -# define sk_X509_VERIFY_PARAM_sort(st) SKM_sk_sort(X509_VERIFY_PARAM, (st)) -# define sk_X509_VERIFY_PARAM_is_sorted(st) SKM_sk_is_sorted(X509_VERIFY_PARAM, (st)) -# define sk_nid_triple_new(cmp) SKM_sk_new(nid_triple, (cmp)) -# define sk_nid_triple_new_null() SKM_sk_new_null(nid_triple) -# define sk_nid_triple_free(st) SKM_sk_free(nid_triple, (st)) -# define sk_nid_triple_num(st) SKM_sk_num(nid_triple, (st)) -# define sk_nid_triple_value(st, i) SKM_sk_value(nid_triple, (st), (i)) -# define sk_nid_triple_set(st, i, val) SKM_sk_set(nid_triple, (st), (i), (val)) -# define sk_nid_triple_zero(st) SKM_sk_zero(nid_triple, (st)) -# define sk_nid_triple_push(st, val) SKM_sk_push(nid_triple, (st), (val)) -# define sk_nid_triple_unshift(st, val) SKM_sk_unshift(nid_triple, (st), (val)) -# define sk_nid_triple_find(st, val) SKM_sk_find(nid_triple, (st), (val)) -# define sk_nid_triple_find_ex(st, val) SKM_sk_find_ex(nid_triple, (st), (val)) -# define sk_nid_triple_delete(st, i) SKM_sk_delete(nid_triple, (st), (i)) -# define sk_nid_triple_delete_ptr(st, ptr) SKM_sk_delete_ptr(nid_triple, (st), (ptr)) -# define sk_nid_triple_insert(st, val, i) SKM_sk_insert(nid_triple, (st), (val), (i)) -# define sk_nid_triple_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(nid_triple, (st), (cmp)) -# define sk_nid_triple_dup(st) SKM_sk_dup(nid_triple, st) -# define sk_nid_triple_pop_free(st, free_func) SKM_sk_pop_free(nid_triple, (st), (free_func)) -# define sk_nid_triple_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(nid_triple, (st), (copy_func), (free_func)) -# define sk_nid_triple_shift(st) SKM_sk_shift(nid_triple, (st)) -# define sk_nid_triple_pop(st) SKM_sk_pop(nid_triple, (st)) -# define sk_nid_triple_sort(st) SKM_sk_sort(nid_triple, (st)) -# define sk_nid_triple_is_sorted(st) SKM_sk_is_sorted(nid_triple, (st)) -# define sk_void_new(cmp) SKM_sk_new(void, (cmp)) -# define sk_void_new_null() SKM_sk_new_null(void) -# define sk_void_free(st) SKM_sk_free(void, (st)) -# define sk_void_num(st) SKM_sk_num(void, (st)) -# define sk_void_value(st, i) SKM_sk_value(void, (st), (i)) -# define sk_void_set(st, i, val) SKM_sk_set(void, (st), (i), (val)) -# define sk_void_zero(st) SKM_sk_zero(void, (st)) -# define sk_void_push(st, val) SKM_sk_push(void, (st), (val)) -# define sk_void_unshift(st, val) SKM_sk_unshift(void, (st), (val)) -# define sk_void_find(st, val) SKM_sk_find(void, (st), (val)) -# define sk_void_find_ex(st, val) SKM_sk_find_ex(void, (st), (val)) -# define sk_void_delete(st, i) SKM_sk_delete(void, (st), (i)) -# define sk_void_delete_ptr(st, ptr) SKM_sk_delete_ptr(void, (st), (ptr)) -# define sk_void_insert(st, val, i) SKM_sk_insert(void, (st), (val), (i)) -# define sk_void_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(void, (st), (cmp)) -# define sk_void_dup(st) SKM_sk_dup(void, st) -# define sk_void_pop_free(st, free_func) SKM_sk_pop_free(void, (st), (free_func)) -# define sk_void_deep_copy(st, copy_func, free_func) SKM_sk_deep_copy(void, (st), (copy_func), (free_func)) -# define sk_void_shift(st) SKM_sk_shift(void, (st)) -# define sk_void_pop(st) SKM_sk_pop(void, (st)) -# define sk_void_sort(st) SKM_sk_sort(void, (st)) -# define sk_void_is_sorted(st) SKM_sk_is_sorted(void, (st)) -# define sk_OPENSSL_STRING_new(cmp) ((STACK_OF(OPENSSL_STRING) *)sk_new(CHECKED_SK_CMP_FUNC(char, cmp))) -# define sk_OPENSSL_STRING_new_null() ((STACK_OF(OPENSSL_STRING) *)sk_new_null()) -# define sk_OPENSSL_STRING_push(st, val) sk_push(CHECKED_STACK_OF(OPENSSL_STRING, st), CHECKED_PTR_OF(char, val)) -# define sk_OPENSSL_STRING_find(st, val) sk_find(CHECKED_STACK_OF(OPENSSL_STRING, st), CHECKED_PTR_OF(char, val)) -# define sk_OPENSSL_STRING_value(st, i) ((OPENSSL_STRING)sk_value(CHECKED_STACK_OF(OPENSSL_STRING, st), i)) -# define sk_OPENSSL_STRING_num(st) SKM_sk_num(OPENSSL_STRING, st) -# define sk_OPENSSL_STRING_pop_free(st, free_func) sk_pop_free(CHECKED_STACK_OF(OPENSSL_STRING, st), CHECKED_SK_FREE_FUNC(char, free_func)) -# define sk_OPENSSL_STRING_deep_copy(st, copy_func, free_func) ((STACK_OF(OPENSSL_STRING) *)sk_deep_copy(CHECKED_STACK_OF(OPENSSL_STRING, st), CHECKED_SK_COPY_FUNC(char, copy_func), CHECKED_SK_FREE_FUNC(char, free_func))) -# define sk_OPENSSL_STRING_insert(st, val, i) sk_insert(CHECKED_STACK_OF(OPENSSL_STRING, st), CHECKED_PTR_OF(char, val), i) -# define sk_OPENSSL_STRING_free(st) SKM_sk_free(OPENSSL_STRING, st) -# define sk_OPENSSL_STRING_set(st, i, val) sk_set(CHECKED_STACK_OF(OPENSSL_STRING, st), i, CHECKED_PTR_OF(char, val)) -# define sk_OPENSSL_STRING_zero(st) SKM_sk_zero(OPENSSL_STRING, (st)) -# define sk_OPENSSL_STRING_unshift(st, val) sk_unshift(CHECKED_STACK_OF(OPENSSL_STRING, st), CHECKED_PTR_OF(char, val)) -# define sk_OPENSSL_STRING_find_ex(st, val) sk_find_ex((_STACK *)CHECKED_CONST_PTR_OF(STACK_OF(OPENSSL_STRING), st), CHECKED_CONST_PTR_OF(char, val)) -# define sk_OPENSSL_STRING_delete(st, i) SKM_sk_delete(OPENSSL_STRING, (st), (i)) -# define sk_OPENSSL_STRING_delete_ptr(st, ptr) (OPENSSL_STRING *)sk_delete_ptr(CHECKED_STACK_OF(OPENSSL_STRING, st), CHECKED_PTR_OF(char, ptr)) -# define sk_OPENSSL_STRING_set_cmp_func(st, cmp) \ - ((int (*)(const char * const *,const char * const *)) \ - sk_set_cmp_func(CHECKED_STACK_OF(OPENSSL_STRING, st), CHECKED_SK_CMP_FUNC(char, cmp))) -# define sk_OPENSSL_STRING_dup(st) SKM_sk_dup(OPENSSL_STRING, st) -# define sk_OPENSSL_STRING_shift(st) SKM_sk_shift(OPENSSL_STRING, (st)) -# define sk_OPENSSL_STRING_pop(st) (char *)sk_pop(CHECKED_STACK_OF(OPENSSL_STRING, st)) -# define sk_OPENSSL_STRING_sort(st) SKM_sk_sort(OPENSSL_STRING, (st)) -# define sk_OPENSSL_STRING_is_sorted(st) SKM_sk_is_sorted(OPENSSL_STRING, (st)) -# define sk_OPENSSL_BLOCK_new(cmp) ((STACK_OF(OPENSSL_BLOCK) *)sk_new(CHECKED_SK_CMP_FUNC(void, cmp))) -# define sk_OPENSSL_BLOCK_new_null() ((STACK_OF(OPENSSL_BLOCK) *)sk_new_null()) -# define sk_OPENSSL_BLOCK_push(st, val) sk_push(CHECKED_STACK_OF(OPENSSL_BLOCK, st), CHECKED_PTR_OF(void, val)) -# define sk_OPENSSL_BLOCK_find(st, val) sk_find(CHECKED_STACK_OF(OPENSSL_BLOCK, st), CHECKED_PTR_OF(void, val)) -# define sk_OPENSSL_BLOCK_value(st, i) ((OPENSSL_BLOCK)sk_value(CHECKED_STACK_OF(OPENSSL_BLOCK, st), i)) -# define sk_OPENSSL_BLOCK_num(st) SKM_sk_num(OPENSSL_BLOCK, st) -# define sk_OPENSSL_BLOCK_pop_free(st, free_func) sk_pop_free(CHECKED_STACK_OF(OPENSSL_BLOCK, st), CHECKED_SK_FREE_FUNC(void, free_func)) -# define sk_OPENSSL_BLOCK_deep_copy(st, copy_func, free_func) ((STACK_OF(OPENSSL_BLOCK) *)sk_deep_copy(CHECKED_STACK_OF(OPENSSL_BLOCK, st), CHECKED_SK_COPY_FUNC(void, copy_func), CHECKED_SK_FREE_FUNC(void, free_func))) -# define sk_OPENSSL_BLOCK_insert(st, val, i) sk_insert(CHECKED_STACK_OF(OPENSSL_BLOCK, st), CHECKED_PTR_OF(void, val), i) -# define sk_OPENSSL_BLOCK_free(st) SKM_sk_free(OPENSSL_BLOCK, st) -# define sk_OPENSSL_BLOCK_set(st, i, val) sk_set(CHECKED_STACK_OF(OPENSSL_BLOCK, st), i, CHECKED_PTR_OF(void, val)) -# define sk_OPENSSL_BLOCK_zero(st) SKM_sk_zero(OPENSSL_BLOCK, (st)) -# define sk_OPENSSL_BLOCK_unshift(st, val) sk_unshift(CHECKED_STACK_OF(OPENSSL_BLOCK, st), CHECKED_PTR_OF(void, val)) -# define sk_OPENSSL_BLOCK_find_ex(st, val) sk_find_ex((_STACK *)CHECKED_CONST_PTR_OF(STACK_OF(OPENSSL_BLOCK), st), CHECKED_CONST_PTR_OF(void, val)) -# define sk_OPENSSL_BLOCK_delete(st, i) SKM_sk_delete(OPENSSL_BLOCK, (st), (i)) -# define sk_OPENSSL_BLOCK_delete_ptr(st, ptr) (OPENSSL_BLOCK *)sk_delete_ptr(CHECKED_STACK_OF(OPENSSL_BLOCK, st), CHECKED_PTR_OF(void, ptr)) -# define sk_OPENSSL_BLOCK_set_cmp_func(st, cmp) \ - ((int (*)(const void * const *,const void * const *)) \ - sk_set_cmp_func(CHECKED_STACK_OF(OPENSSL_BLOCK, st), CHECKED_SK_CMP_FUNC(void, cmp))) -# define sk_OPENSSL_BLOCK_dup(st) SKM_sk_dup(OPENSSL_BLOCK, st) -# define sk_OPENSSL_BLOCK_shift(st) SKM_sk_shift(OPENSSL_BLOCK, (st)) -# define sk_OPENSSL_BLOCK_pop(st) (void *)sk_pop(CHECKED_STACK_OF(OPENSSL_BLOCK, st)) -# define sk_OPENSSL_BLOCK_sort(st) SKM_sk_sort(OPENSSL_BLOCK, (st)) -# define sk_OPENSSL_BLOCK_is_sorted(st) SKM_sk_is_sorted(OPENSSL_BLOCK, (st)) -# define sk_OPENSSL_PSTRING_new(cmp) ((STACK_OF(OPENSSL_PSTRING) *)sk_new(CHECKED_SK_CMP_FUNC(OPENSSL_STRING, cmp))) -# define sk_OPENSSL_PSTRING_new_null() ((STACK_OF(OPENSSL_PSTRING) *)sk_new_null()) -# define sk_OPENSSL_PSTRING_push(st, val) sk_push(CHECKED_STACK_OF(OPENSSL_PSTRING, st), CHECKED_PTR_OF(OPENSSL_STRING, val)) -# define sk_OPENSSL_PSTRING_find(st, val) sk_find(CHECKED_STACK_OF(OPENSSL_PSTRING, st), CHECKED_PTR_OF(OPENSSL_STRING, val)) -# define sk_OPENSSL_PSTRING_value(st, i) ((OPENSSL_PSTRING)sk_value(CHECKED_STACK_OF(OPENSSL_PSTRING, st), i)) -# define sk_OPENSSL_PSTRING_num(st) SKM_sk_num(OPENSSL_PSTRING, st) -# define sk_OPENSSL_PSTRING_pop_free(st, free_func) sk_pop_free(CHECKED_STACK_OF(OPENSSL_PSTRING, st), CHECKED_SK_FREE_FUNC(OPENSSL_STRING, free_func)) -# define sk_OPENSSL_PSTRING_deep_copy(st, copy_func, free_func) ((STACK_OF(OPENSSL_PSTRING) *)sk_deep_copy(CHECKED_STACK_OF(OPENSSL_PSTRING, st), CHECKED_SK_COPY_FUNC(OPENSSL_STRING, copy_func), CHECKED_SK_FREE_FUNC(OPENSSL_STRING, free_func))) -# define sk_OPENSSL_PSTRING_insert(st, val, i) sk_insert(CHECKED_STACK_OF(OPENSSL_PSTRING, st), CHECKED_PTR_OF(OPENSSL_STRING, val), i) -# define sk_OPENSSL_PSTRING_free(st) SKM_sk_free(OPENSSL_PSTRING, st) -# define sk_OPENSSL_PSTRING_set(st, i, val) sk_set(CHECKED_STACK_OF(OPENSSL_PSTRING, st), i, CHECKED_PTR_OF(OPENSSL_STRING, val)) -# define sk_OPENSSL_PSTRING_zero(st) SKM_sk_zero(OPENSSL_PSTRING, (st)) -# define sk_OPENSSL_PSTRING_unshift(st, val) sk_unshift(CHECKED_STACK_OF(OPENSSL_PSTRING, st), CHECKED_PTR_OF(OPENSSL_STRING, val)) -# define sk_OPENSSL_PSTRING_find_ex(st, val) sk_find_ex((_STACK *)CHECKED_CONST_PTR_OF(STACK_OF(OPENSSL_PSTRING), st), CHECKED_CONST_PTR_OF(OPENSSL_STRING, val)) -# define sk_OPENSSL_PSTRING_delete(st, i) SKM_sk_delete(OPENSSL_PSTRING, (st), (i)) -# define sk_OPENSSL_PSTRING_delete_ptr(st, ptr) (OPENSSL_PSTRING *)sk_delete_ptr(CHECKED_STACK_OF(OPENSSL_PSTRING, st), CHECKED_PTR_OF(OPENSSL_STRING, ptr)) -# define sk_OPENSSL_PSTRING_set_cmp_func(st, cmp) \ - ((int (*)(const OPENSSL_STRING * const *,const OPENSSL_STRING * const *)) \ - sk_set_cmp_func(CHECKED_STACK_OF(OPENSSL_PSTRING, st), CHECKED_SK_CMP_FUNC(OPENSSL_STRING, cmp))) -# define sk_OPENSSL_PSTRING_dup(st) SKM_sk_dup(OPENSSL_PSTRING, st) -# define sk_OPENSSL_PSTRING_shift(st) SKM_sk_shift(OPENSSL_PSTRING, (st)) -# define sk_OPENSSL_PSTRING_pop(st) (OPENSSL_STRING *)sk_pop(CHECKED_STACK_OF(OPENSSL_PSTRING, st)) -# define sk_OPENSSL_PSTRING_sort(st) SKM_sk_sort(OPENSSL_PSTRING, (st)) -# define sk_OPENSSL_PSTRING_is_sorted(st) SKM_sk_is_sorted(OPENSSL_PSTRING, (st)) -# define d2i_ASN1_SET_OF_ACCESS_DESCRIPTION(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \ - SKM_ASN1_SET_OF_d2i(ACCESS_DESCRIPTION, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class)) -# define i2d_ASN1_SET_OF_ACCESS_DESCRIPTION(st, pp, i2d_func, ex_tag, ex_class, is_set) \ - SKM_ASN1_SET_OF_i2d(ACCESS_DESCRIPTION, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set)) -# define ASN1_seq_pack_ACCESS_DESCRIPTION(st, i2d_func, buf, len) \ - SKM_ASN1_seq_pack(ACCESS_DESCRIPTION, (st), (i2d_func), (buf), (len)) -# define ASN1_seq_unpack_ACCESS_DESCRIPTION(buf, len, d2i_func, free_func) \ - SKM_ASN1_seq_unpack(ACCESS_DESCRIPTION, (buf), (len), (d2i_func), (free_func)) -# define d2i_ASN1_SET_OF_ASN1_INTEGER(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \ - SKM_ASN1_SET_OF_d2i(ASN1_INTEGER, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class)) -# define i2d_ASN1_SET_OF_ASN1_INTEGER(st, pp, i2d_func, ex_tag, ex_class, is_set) \ - SKM_ASN1_SET_OF_i2d(ASN1_INTEGER, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set)) -# define ASN1_seq_pack_ASN1_INTEGER(st, i2d_func, buf, len) \ - SKM_ASN1_seq_pack(ASN1_INTEGER, (st), (i2d_func), (buf), (len)) -# define ASN1_seq_unpack_ASN1_INTEGER(buf, len, d2i_func, free_func) \ - SKM_ASN1_seq_unpack(ASN1_INTEGER, (buf), (len), (d2i_func), (free_func)) -# define d2i_ASN1_SET_OF_ASN1_OBJECT(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \ - SKM_ASN1_SET_OF_d2i(ASN1_OBJECT, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class)) -# define i2d_ASN1_SET_OF_ASN1_OBJECT(st, pp, i2d_func, ex_tag, ex_class, is_set) \ - SKM_ASN1_SET_OF_i2d(ASN1_OBJECT, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set)) -# define ASN1_seq_pack_ASN1_OBJECT(st, i2d_func, buf, len) \ - SKM_ASN1_seq_pack(ASN1_OBJECT, (st), (i2d_func), (buf), (len)) -# define ASN1_seq_unpack_ASN1_OBJECT(buf, len, d2i_func, free_func) \ - SKM_ASN1_seq_unpack(ASN1_OBJECT, (buf), (len), (d2i_func), (free_func)) -# define d2i_ASN1_SET_OF_ASN1_TYPE(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \ - SKM_ASN1_SET_OF_d2i(ASN1_TYPE, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class)) -# define i2d_ASN1_SET_OF_ASN1_TYPE(st, pp, i2d_func, ex_tag, ex_class, is_set) \ - SKM_ASN1_SET_OF_i2d(ASN1_TYPE, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set)) -# define ASN1_seq_pack_ASN1_TYPE(st, i2d_func, buf, len) \ - SKM_ASN1_seq_pack(ASN1_TYPE, (st), (i2d_func), (buf), (len)) -# define ASN1_seq_unpack_ASN1_TYPE(buf, len, d2i_func, free_func) \ - SKM_ASN1_seq_unpack(ASN1_TYPE, (buf), (len), (d2i_func), (free_func)) -# define d2i_ASN1_SET_OF_ASN1_UTF8STRING(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \ - SKM_ASN1_SET_OF_d2i(ASN1_UTF8STRING, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class)) -# define i2d_ASN1_SET_OF_ASN1_UTF8STRING(st, pp, i2d_func, ex_tag, ex_class, is_set) \ - SKM_ASN1_SET_OF_i2d(ASN1_UTF8STRING, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set)) -# define ASN1_seq_pack_ASN1_UTF8STRING(st, i2d_func, buf, len) \ - SKM_ASN1_seq_pack(ASN1_UTF8STRING, (st), (i2d_func), (buf), (len)) -# define ASN1_seq_unpack_ASN1_UTF8STRING(buf, len, d2i_func, free_func) \ - SKM_ASN1_seq_unpack(ASN1_UTF8STRING, (buf), (len), (d2i_func), (free_func)) -# define d2i_ASN1_SET_OF_DIST_POINT(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \ - SKM_ASN1_SET_OF_d2i(DIST_POINT, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class)) -# define i2d_ASN1_SET_OF_DIST_POINT(st, pp, i2d_func, ex_tag, ex_class, is_set) \ - SKM_ASN1_SET_OF_i2d(DIST_POINT, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set)) -# define ASN1_seq_pack_DIST_POINT(st, i2d_func, buf, len) \ - SKM_ASN1_seq_pack(DIST_POINT, (st), (i2d_func), (buf), (len)) -# define ASN1_seq_unpack_DIST_POINT(buf, len, d2i_func, free_func) \ - SKM_ASN1_seq_unpack(DIST_POINT, (buf), (len), (d2i_func), (free_func)) -# define d2i_ASN1_SET_OF_ESS_CERT_ID(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \ - SKM_ASN1_SET_OF_d2i(ESS_CERT_ID, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class)) -# define i2d_ASN1_SET_OF_ESS_CERT_ID(st, pp, i2d_func, ex_tag, ex_class, is_set) \ - SKM_ASN1_SET_OF_i2d(ESS_CERT_ID, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set)) -# define ASN1_seq_pack_ESS_CERT_ID(st, i2d_func, buf, len) \ - SKM_ASN1_seq_pack(ESS_CERT_ID, (st), (i2d_func), (buf), (len)) -# define ASN1_seq_unpack_ESS_CERT_ID(buf, len, d2i_func, free_func) \ - SKM_ASN1_seq_unpack(ESS_CERT_ID, (buf), (len), (d2i_func), (free_func)) -# define d2i_ASN1_SET_OF_EVP_MD(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \ - SKM_ASN1_SET_OF_d2i(EVP_MD, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class)) -# define i2d_ASN1_SET_OF_EVP_MD(st, pp, i2d_func, ex_tag, ex_class, is_set) \ - SKM_ASN1_SET_OF_i2d(EVP_MD, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set)) -# define ASN1_seq_pack_EVP_MD(st, i2d_func, buf, len) \ - SKM_ASN1_seq_pack(EVP_MD, (st), (i2d_func), (buf), (len)) -# define ASN1_seq_unpack_EVP_MD(buf, len, d2i_func, free_func) \ - SKM_ASN1_seq_unpack(EVP_MD, (buf), (len), (d2i_func), (free_func)) -# define d2i_ASN1_SET_OF_GENERAL_NAME(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \ - SKM_ASN1_SET_OF_d2i(GENERAL_NAME, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class)) -# define i2d_ASN1_SET_OF_GENERAL_NAME(st, pp, i2d_func, ex_tag, ex_class, is_set) \ - SKM_ASN1_SET_OF_i2d(GENERAL_NAME, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set)) -# define ASN1_seq_pack_GENERAL_NAME(st, i2d_func, buf, len) \ - SKM_ASN1_seq_pack(GENERAL_NAME, (st), (i2d_func), (buf), (len)) -# define ASN1_seq_unpack_GENERAL_NAME(buf, len, d2i_func, free_func) \ - SKM_ASN1_seq_unpack(GENERAL_NAME, (buf), (len), (d2i_func), (free_func)) -# define d2i_ASN1_SET_OF_OCSP_ONEREQ(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \ - SKM_ASN1_SET_OF_d2i(OCSP_ONEREQ, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class)) -# define i2d_ASN1_SET_OF_OCSP_ONEREQ(st, pp, i2d_func, ex_tag, ex_class, is_set) \ - SKM_ASN1_SET_OF_i2d(OCSP_ONEREQ, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set)) -# define ASN1_seq_pack_OCSP_ONEREQ(st, i2d_func, buf, len) \ - SKM_ASN1_seq_pack(OCSP_ONEREQ, (st), (i2d_func), (buf), (len)) -# define ASN1_seq_unpack_OCSP_ONEREQ(buf, len, d2i_func, free_func) \ - SKM_ASN1_seq_unpack(OCSP_ONEREQ, (buf), (len), (d2i_func), (free_func)) -# define d2i_ASN1_SET_OF_OCSP_SINGLERESP(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \ - SKM_ASN1_SET_OF_d2i(OCSP_SINGLERESP, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class)) -# define i2d_ASN1_SET_OF_OCSP_SINGLERESP(st, pp, i2d_func, ex_tag, ex_class, is_set) \ - SKM_ASN1_SET_OF_i2d(OCSP_SINGLERESP, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set)) -# define ASN1_seq_pack_OCSP_SINGLERESP(st, i2d_func, buf, len) \ - SKM_ASN1_seq_pack(OCSP_SINGLERESP, (st), (i2d_func), (buf), (len)) -# define ASN1_seq_unpack_OCSP_SINGLERESP(buf, len, d2i_func, free_func) \ - SKM_ASN1_seq_unpack(OCSP_SINGLERESP, (buf), (len), (d2i_func), (free_func)) -# define d2i_ASN1_SET_OF_PKCS12_SAFEBAG(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \ - SKM_ASN1_SET_OF_d2i(PKCS12_SAFEBAG, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class)) -# define i2d_ASN1_SET_OF_PKCS12_SAFEBAG(st, pp, i2d_func, ex_tag, ex_class, is_set) \ - SKM_ASN1_SET_OF_i2d(PKCS12_SAFEBAG, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set)) -# define ASN1_seq_pack_PKCS12_SAFEBAG(st, i2d_func, buf, len) \ - SKM_ASN1_seq_pack(PKCS12_SAFEBAG, (st), (i2d_func), (buf), (len)) -# define ASN1_seq_unpack_PKCS12_SAFEBAG(buf, len, d2i_func, free_func) \ - SKM_ASN1_seq_unpack(PKCS12_SAFEBAG, (buf), (len), (d2i_func), (free_func)) -# define d2i_ASN1_SET_OF_PKCS7(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \ - SKM_ASN1_SET_OF_d2i(PKCS7, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class)) -# define i2d_ASN1_SET_OF_PKCS7(st, pp, i2d_func, ex_tag, ex_class, is_set) \ - SKM_ASN1_SET_OF_i2d(PKCS7, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set)) -# define ASN1_seq_pack_PKCS7(st, i2d_func, buf, len) \ - SKM_ASN1_seq_pack(PKCS7, (st), (i2d_func), (buf), (len)) -# define ASN1_seq_unpack_PKCS7(buf, len, d2i_func, free_func) \ - SKM_ASN1_seq_unpack(PKCS7, (buf), (len), (d2i_func), (free_func)) -# define d2i_ASN1_SET_OF_PKCS7_RECIP_INFO(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \ - SKM_ASN1_SET_OF_d2i(PKCS7_RECIP_INFO, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class)) -# define i2d_ASN1_SET_OF_PKCS7_RECIP_INFO(st, pp, i2d_func, ex_tag, ex_class, is_set) \ - SKM_ASN1_SET_OF_i2d(PKCS7_RECIP_INFO, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set)) -# define ASN1_seq_pack_PKCS7_RECIP_INFO(st, i2d_func, buf, len) \ - SKM_ASN1_seq_pack(PKCS7_RECIP_INFO, (st), (i2d_func), (buf), (len)) -# define ASN1_seq_unpack_PKCS7_RECIP_INFO(buf, len, d2i_func, free_func) \ - SKM_ASN1_seq_unpack(PKCS7_RECIP_INFO, (buf), (len), (d2i_func), (free_func)) -# define d2i_ASN1_SET_OF_PKCS7_SIGNER_INFO(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \ - SKM_ASN1_SET_OF_d2i(PKCS7_SIGNER_INFO, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class)) -# define i2d_ASN1_SET_OF_PKCS7_SIGNER_INFO(st, pp, i2d_func, ex_tag, ex_class, is_set) \ - SKM_ASN1_SET_OF_i2d(PKCS7_SIGNER_INFO, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set)) -# define ASN1_seq_pack_PKCS7_SIGNER_INFO(st, i2d_func, buf, len) \ - SKM_ASN1_seq_pack(PKCS7_SIGNER_INFO, (st), (i2d_func), (buf), (len)) -# define ASN1_seq_unpack_PKCS7_SIGNER_INFO(buf, len, d2i_func, free_func) \ - SKM_ASN1_seq_unpack(PKCS7_SIGNER_INFO, (buf), (len), (d2i_func), (free_func)) -# define d2i_ASN1_SET_OF_POLICYINFO(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \ - SKM_ASN1_SET_OF_d2i(POLICYINFO, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class)) -# define i2d_ASN1_SET_OF_POLICYINFO(st, pp, i2d_func, ex_tag, ex_class, is_set) \ - SKM_ASN1_SET_OF_i2d(POLICYINFO, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set)) -# define ASN1_seq_pack_POLICYINFO(st, i2d_func, buf, len) \ - SKM_ASN1_seq_pack(POLICYINFO, (st), (i2d_func), (buf), (len)) -# define ASN1_seq_unpack_POLICYINFO(buf, len, d2i_func, free_func) \ - SKM_ASN1_seq_unpack(POLICYINFO, (buf), (len), (d2i_func), (free_func)) -# define d2i_ASN1_SET_OF_POLICYQUALINFO(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \ - SKM_ASN1_SET_OF_d2i(POLICYQUALINFO, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class)) -# define i2d_ASN1_SET_OF_POLICYQUALINFO(st, pp, i2d_func, ex_tag, ex_class, is_set) \ - SKM_ASN1_SET_OF_i2d(POLICYQUALINFO, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set)) -# define ASN1_seq_pack_POLICYQUALINFO(st, i2d_func, buf, len) \ - SKM_ASN1_seq_pack(POLICYQUALINFO, (st), (i2d_func), (buf), (len)) -# define ASN1_seq_unpack_POLICYQUALINFO(buf, len, d2i_func, free_func) \ - SKM_ASN1_seq_unpack(POLICYQUALINFO, (buf), (len), (d2i_func), (free_func)) -# define d2i_ASN1_SET_OF_SXNETID(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \ - SKM_ASN1_SET_OF_d2i(SXNETID, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class)) -# define i2d_ASN1_SET_OF_SXNETID(st, pp, i2d_func, ex_tag, ex_class, is_set) \ - SKM_ASN1_SET_OF_i2d(SXNETID, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set)) -# define ASN1_seq_pack_SXNETID(st, i2d_func, buf, len) \ - SKM_ASN1_seq_pack(SXNETID, (st), (i2d_func), (buf), (len)) -# define ASN1_seq_unpack_SXNETID(buf, len, d2i_func, free_func) \ - SKM_ASN1_seq_unpack(SXNETID, (buf), (len), (d2i_func), (free_func)) -# define d2i_ASN1_SET_OF_X509(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \ - SKM_ASN1_SET_OF_d2i(X509, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class)) -# define i2d_ASN1_SET_OF_X509(st, pp, i2d_func, ex_tag, ex_class, is_set) \ - SKM_ASN1_SET_OF_i2d(X509, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set)) -# define ASN1_seq_pack_X509(st, i2d_func, buf, len) \ - SKM_ASN1_seq_pack(X509, (st), (i2d_func), (buf), (len)) -# define ASN1_seq_unpack_X509(buf, len, d2i_func, free_func) \ - SKM_ASN1_seq_unpack(X509, (buf), (len), (d2i_func), (free_func)) -# define d2i_ASN1_SET_OF_X509_ALGOR(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \ - SKM_ASN1_SET_OF_d2i(X509_ALGOR, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class)) -# define i2d_ASN1_SET_OF_X509_ALGOR(st, pp, i2d_func, ex_tag, ex_class, is_set) \ - SKM_ASN1_SET_OF_i2d(X509_ALGOR, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set)) -# define ASN1_seq_pack_X509_ALGOR(st, i2d_func, buf, len) \ - SKM_ASN1_seq_pack(X509_ALGOR, (st), (i2d_func), (buf), (len)) -# define ASN1_seq_unpack_X509_ALGOR(buf, len, d2i_func, free_func) \ - SKM_ASN1_seq_unpack(X509_ALGOR, (buf), (len), (d2i_func), (free_func)) -# define d2i_ASN1_SET_OF_X509_ATTRIBUTE(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \ - SKM_ASN1_SET_OF_d2i(X509_ATTRIBUTE, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class)) -# define i2d_ASN1_SET_OF_X509_ATTRIBUTE(st, pp, i2d_func, ex_tag, ex_class, is_set) \ - SKM_ASN1_SET_OF_i2d(X509_ATTRIBUTE, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set)) -# define ASN1_seq_pack_X509_ATTRIBUTE(st, i2d_func, buf, len) \ - SKM_ASN1_seq_pack(X509_ATTRIBUTE, (st), (i2d_func), (buf), (len)) -# define ASN1_seq_unpack_X509_ATTRIBUTE(buf, len, d2i_func, free_func) \ - SKM_ASN1_seq_unpack(X509_ATTRIBUTE, (buf), (len), (d2i_func), (free_func)) -# define d2i_ASN1_SET_OF_X509_CRL(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \ - SKM_ASN1_SET_OF_d2i(X509_CRL, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class)) -# define i2d_ASN1_SET_OF_X509_CRL(st, pp, i2d_func, ex_tag, ex_class, is_set) \ - SKM_ASN1_SET_OF_i2d(X509_CRL, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set)) -# define ASN1_seq_pack_X509_CRL(st, i2d_func, buf, len) \ - SKM_ASN1_seq_pack(X509_CRL, (st), (i2d_func), (buf), (len)) -# define ASN1_seq_unpack_X509_CRL(buf, len, d2i_func, free_func) \ - SKM_ASN1_seq_unpack(X509_CRL, (buf), (len), (d2i_func), (free_func)) -# define d2i_ASN1_SET_OF_X509_EXTENSION(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \ - SKM_ASN1_SET_OF_d2i(X509_EXTENSION, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class)) -# define i2d_ASN1_SET_OF_X509_EXTENSION(st, pp, i2d_func, ex_tag, ex_class, is_set) \ - SKM_ASN1_SET_OF_i2d(X509_EXTENSION, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set)) -# define ASN1_seq_pack_X509_EXTENSION(st, i2d_func, buf, len) \ - SKM_ASN1_seq_pack(X509_EXTENSION, (st), (i2d_func), (buf), (len)) -# define ASN1_seq_unpack_X509_EXTENSION(buf, len, d2i_func, free_func) \ - SKM_ASN1_seq_unpack(X509_EXTENSION, (buf), (len), (d2i_func), (free_func)) -# define d2i_ASN1_SET_OF_X509_NAME_ENTRY(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \ - SKM_ASN1_SET_OF_d2i(X509_NAME_ENTRY, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class)) -# define i2d_ASN1_SET_OF_X509_NAME_ENTRY(st, pp, i2d_func, ex_tag, ex_class, is_set) \ - SKM_ASN1_SET_OF_i2d(X509_NAME_ENTRY, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set)) -# define ASN1_seq_pack_X509_NAME_ENTRY(st, i2d_func, buf, len) \ - SKM_ASN1_seq_pack(X509_NAME_ENTRY, (st), (i2d_func), (buf), (len)) -# define ASN1_seq_unpack_X509_NAME_ENTRY(buf, len, d2i_func, free_func) \ - SKM_ASN1_seq_unpack(X509_NAME_ENTRY, (buf), (len), (d2i_func), (free_func)) -# define d2i_ASN1_SET_OF_X509_REVOKED(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \ - SKM_ASN1_SET_OF_d2i(X509_REVOKED, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class)) -# define i2d_ASN1_SET_OF_X509_REVOKED(st, pp, i2d_func, ex_tag, ex_class, is_set) \ - SKM_ASN1_SET_OF_i2d(X509_REVOKED, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set)) -# define ASN1_seq_pack_X509_REVOKED(st, i2d_func, buf, len) \ - SKM_ASN1_seq_pack(X509_REVOKED, (st), (i2d_func), (buf), (len)) -# define ASN1_seq_unpack_X509_REVOKED(buf, len, d2i_func, free_func) \ - SKM_ASN1_seq_unpack(X509_REVOKED, (buf), (len), (d2i_func), (free_func)) -# define PKCS12_decrypt_d2i_PKCS12_SAFEBAG(algor, d2i_func, free_func, pass, passlen, oct, seq) \ - SKM_PKCS12_decrypt_d2i(PKCS12_SAFEBAG, (algor), (d2i_func), (free_func), (pass), (passlen), (oct), (seq)) -# define PKCS12_decrypt_d2i_PKCS7(algor, d2i_func, free_func, pass, passlen, oct, seq) \ - SKM_PKCS12_decrypt_d2i(PKCS7, (algor), (d2i_func), (free_func), (pass), (passlen), (oct), (seq)) -# define lh_ADDED_OBJ_new() LHM_lh_new(ADDED_OBJ,added_obj) -# define lh_ADDED_OBJ_insert(lh,inst) LHM_lh_insert(ADDED_OBJ,lh,inst) -# define lh_ADDED_OBJ_retrieve(lh,inst) LHM_lh_retrieve(ADDED_OBJ,lh,inst) -# define lh_ADDED_OBJ_delete(lh,inst) LHM_lh_delete(ADDED_OBJ,lh,inst) -# define lh_ADDED_OBJ_doall(lh,fn) LHM_lh_doall(ADDED_OBJ,lh,fn) -# define lh_ADDED_OBJ_doall_arg(lh,fn,arg_type,arg) \ - LHM_lh_doall_arg(ADDED_OBJ,lh,fn,arg_type,arg) -# define lh_ADDED_OBJ_error(lh) LHM_lh_error(ADDED_OBJ,lh) -# define lh_ADDED_OBJ_num_items(lh) LHM_lh_num_items(ADDED_OBJ,lh) -# define lh_ADDED_OBJ_down_load(lh) LHM_lh_down_load(ADDED_OBJ,lh) -# define lh_ADDED_OBJ_node_stats_bio(lh,out) \ - LHM_lh_node_stats_bio(ADDED_OBJ,lh,out) -# define lh_ADDED_OBJ_node_usage_stats_bio(lh,out) \ - LHM_lh_node_usage_stats_bio(ADDED_OBJ,lh,out) -# define lh_ADDED_OBJ_stats_bio(lh,out) \ - LHM_lh_stats_bio(ADDED_OBJ,lh,out) -# define lh_ADDED_OBJ_free(lh) LHM_lh_free(ADDED_OBJ,lh) -# define lh_APP_INFO_new() LHM_lh_new(APP_INFO,app_info) -# define lh_APP_INFO_insert(lh,inst) LHM_lh_insert(APP_INFO,lh,inst) -# define lh_APP_INFO_retrieve(lh,inst) LHM_lh_retrieve(APP_INFO,lh,inst) -# define lh_APP_INFO_delete(lh,inst) LHM_lh_delete(APP_INFO,lh,inst) -# define lh_APP_INFO_doall(lh,fn) LHM_lh_doall(APP_INFO,lh,fn) -# define lh_APP_INFO_doall_arg(lh,fn,arg_type,arg) \ - LHM_lh_doall_arg(APP_INFO,lh,fn,arg_type,arg) -# define lh_APP_INFO_error(lh) LHM_lh_error(APP_INFO,lh) -# define lh_APP_INFO_num_items(lh) LHM_lh_num_items(APP_INFO,lh) -# define lh_APP_INFO_down_load(lh) LHM_lh_down_load(APP_INFO,lh) -# define lh_APP_INFO_node_stats_bio(lh,out) \ - LHM_lh_node_stats_bio(APP_INFO,lh,out) -# define lh_APP_INFO_node_usage_stats_bio(lh,out) \ - LHM_lh_node_usage_stats_bio(APP_INFO,lh,out) -# define lh_APP_INFO_stats_bio(lh,out) \ - LHM_lh_stats_bio(APP_INFO,lh,out) -# define lh_APP_INFO_free(lh) LHM_lh_free(APP_INFO,lh) -# define lh_CONF_VALUE_new() LHM_lh_new(CONF_VALUE,conf_value) -# define lh_CONF_VALUE_insert(lh,inst) LHM_lh_insert(CONF_VALUE,lh,inst) -# define lh_CONF_VALUE_retrieve(lh,inst) LHM_lh_retrieve(CONF_VALUE,lh,inst) -# define lh_CONF_VALUE_delete(lh,inst) LHM_lh_delete(CONF_VALUE,lh,inst) -# define lh_CONF_VALUE_doall(lh,fn) LHM_lh_doall(CONF_VALUE,lh,fn) -# define lh_CONF_VALUE_doall_arg(lh,fn,arg_type,arg) \ - LHM_lh_doall_arg(CONF_VALUE,lh,fn,arg_type,arg) -# define lh_CONF_VALUE_error(lh) LHM_lh_error(CONF_VALUE,lh) -# define lh_CONF_VALUE_num_items(lh) LHM_lh_num_items(CONF_VALUE,lh) -# define lh_CONF_VALUE_down_load(lh) LHM_lh_down_load(CONF_VALUE,lh) -# define lh_CONF_VALUE_node_stats_bio(lh,out) \ - LHM_lh_node_stats_bio(CONF_VALUE,lh,out) -# define lh_CONF_VALUE_node_usage_stats_bio(lh,out) \ - LHM_lh_node_usage_stats_bio(CONF_VALUE,lh,out) -# define lh_CONF_VALUE_stats_bio(lh,out) \ - LHM_lh_stats_bio(CONF_VALUE,lh,out) -# define lh_CONF_VALUE_free(lh) LHM_lh_free(CONF_VALUE,lh) -# define lh_ENGINE_PILE_new() LHM_lh_new(ENGINE_PILE,engine_pile) -# define lh_ENGINE_PILE_insert(lh,inst) LHM_lh_insert(ENGINE_PILE,lh,inst) -# define lh_ENGINE_PILE_retrieve(lh,inst) LHM_lh_retrieve(ENGINE_PILE,lh,inst) -# define lh_ENGINE_PILE_delete(lh,inst) LHM_lh_delete(ENGINE_PILE,lh,inst) -# define lh_ENGINE_PILE_doall(lh,fn) LHM_lh_doall(ENGINE_PILE,lh,fn) -# define lh_ENGINE_PILE_doall_arg(lh,fn,arg_type,arg) \ - LHM_lh_doall_arg(ENGINE_PILE,lh,fn,arg_type,arg) -# define lh_ENGINE_PILE_error(lh) LHM_lh_error(ENGINE_PILE,lh) -# define lh_ENGINE_PILE_num_items(lh) LHM_lh_num_items(ENGINE_PILE,lh) -# define lh_ENGINE_PILE_down_load(lh) LHM_lh_down_load(ENGINE_PILE,lh) -# define lh_ENGINE_PILE_node_stats_bio(lh,out) \ - LHM_lh_node_stats_bio(ENGINE_PILE,lh,out) -# define lh_ENGINE_PILE_node_usage_stats_bio(lh,out) \ - LHM_lh_node_usage_stats_bio(ENGINE_PILE,lh,out) -# define lh_ENGINE_PILE_stats_bio(lh,out) \ - LHM_lh_stats_bio(ENGINE_PILE,lh,out) -# define lh_ENGINE_PILE_free(lh) LHM_lh_free(ENGINE_PILE,lh) -# define lh_ERR_STATE_new() LHM_lh_new(ERR_STATE,err_state) -# define lh_ERR_STATE_insert(lh,inst) LHM_lh_insert(ERR_STATE,lh,inst) -# define lh_ERR_STATE_retrieve(lh,inst) LHM_lh_retrieve(ERR_STATE,lh,inst) -# define lh_ERR_STATE_delete(lh,inst) LHM_lh_delete(ERR_STATE,lh,inst) -# define lh_ERR_STATE_doall(lh,fn) LHM_lh_doall(ERR_STATE,lh,fn) -# define lh_ERR_STATE_doall_arg(lh,fn,arg_type,arg) \ - LHM_lh_doall_arg(ERR_STATE,lh,fn,arg_type,arg) -# define lh_ERR_STATE_error(lh) LHM_lh_error(ERR_STATE,lh) -# define lh_ERR_STATE_num_items(lh) LHM_lh_num_items(ERR_STATE,lh) -# define lh_ERR_STATE_down_load(lh) LHM_lh_down_load(ERR_STATE,lh) -# define lh_ERR_STATE_node_stats_bio(lh,out) \ - LHM_lh_node_stats_bio(ERR_STATE,lh,out) -# define lh_ERR_STATE_node_usage_stats_bio(lh,out) \ - LHM_lh_node_usage_stats_bio(ERR_STATE,lh,out) -# define lh_ERR_STATE_stats_bio(lh,out) \ - LHM_lh_stats_bio(ERR_STATE,lh,out) -# define lh_ERR_STATE_free(lh) LHM_lh_free(ERR_STATE,lh) -# define lh_ERR_STRING_DATA_new() LHM_lh_new(ERR_STRING_DATA,err_string_data) -# define lh_ERR_STRING_DATA_insert(lh,inst) LHM_lh_insert(ERR_STRING_DATA,lh,inst) -# define lh_ERR_STRING_DATA_retrieve(lh,inst) LHM_lh_retrieve(ERR_STRING_DATA,lh,inst) -# define lh_ERR_STRING_DATA_delete(lh,inst) LHM_lh_delete(ERR_STRING_DATA,lh,inst) -# define lh_ERR_STRING_DATA_doall(lh,fn) LHM_lh_doall(ERR_STRING_DATA,lh,fn) -# define lh_ERR_STRING_DATA_doall_arg(lh,fn,arg_type,arg) \ - LHM_lh_doall_arg(ERR_STRING_DATA,lh,fn,arg_type,arg) -# define lh_ERR_STRING_DATA_error(lh) LHM_lh_error(ERR_STRING_DATA,lh) -# define lh_ERR_STRING_DATA_num_items(lh) LHM_lh_num_items(ERR_STRING_DATA,lh) -# define lh_ERR_STRING_DATA_down_load(lh) LHM_lh_down_load(ERR_STRING_DATA,lh) -# define lh_ERR_STRING_DATA_node_stats_bio(lh,out) \ - LHM_lh_node_stats_bio(ERR_STRING_DATA,lh,out) -# define lh_ERR_STRING_DATA_node_usage_stats_bio(lh,out) \ - LHM_lh_node_usage_stats_bio(ERR_STRING_DATA,lh,out) -# define lh_ERR_STRING_DATA_stats_bio(lh,out) \ - LHM_lh_stats_bio(ERR_STRING_DATA,lh,out) -# define lh_ERR_STRING_DATA_free(lh) LHM_lh_free(ERR_STRING_DATA,lh) -# define lh_EX_CLASS_ITEM_new() LHM_lh_new(EX_CLASS_ITEM,ex_class_item) -# define lh_EX_CLASS_ITEM_insert(lh,inst) LHM_lh_insert(EX_CLASS_ITEM,lh,inst) -# define lh_EX_CLASS_ITEM_retrieve(lh,inst) LHM_lh_retrieve(EX_CLASS_ITEM,lh,inst) -# define lh_EX_CLASS_ITEM_delete(lh,inst) LHM_lh_delete(EX_CLASS_ITEM,lh,inst) -# define lh_EX_CLASS_ITEM_doall(lh,fn) LHM_lh_doall(EX_CLASS_ITEM,lh,fn) -# define lh_EX_CLASS_ITEM_doall_arg(lh,fn,arg_type,arg) \ - LHM_lh_doall_arg(EX_CLASS_ITEM,lh,fn,arg_type,arg) -# define lh_EX_CLASS_ITEM_error(lh) LHM_lh_error(EX_CLASS_ITEM,lh) -# define lh_EX_CLASS_ITEM_num_items(lh) LHM_lh_num_items(EX_CLASS_ITEM,lh) -# define lh_EX_CLASS_ITEM_down_load(lh) LHM_lh_down_load(EX_CLASS_ITEM,lh) -# define lh_EX_CLASS_ITEM_node_stats_bio(lh,out) \ - LHM_lh_node_stats_bio(EX_CLASS_ITEM,lh,out) -# define lh_EX_CLASS_ITEM_node_usage_stats_bio(lh,out) \ - LHM_lh_node_usage_stats_bio(EX_CLASS_ITEM,lh,out) -# define lh_EX_CLASS_ITEM_stats_bio(lh,out) \ - LHM_lh_stats_bio(EX_CLASS_ITEM,lh,out) -# define lh_EX_CLASS_ITEM_free(lh) LHM_lh_free(EX_CLASS_ITEM,lh) -# define lh_FUNCTION_new() LHM_lh_new(FUNCTION,function) -# define lh_FUNCTION_insert(lh,inst) LHM_lh_insert(FUNCTION,lh,inst) -# define lh_FUNCTION_retrieve(lh,inst) LHM_lh_retrieve(FUNCTION,lh,inst) -# define lh_FUNCTION_delete(lh,inst) LHM_lh_delete(FUNCTION,lh,inst) -# define lh_FUNCTION_doall(lh,fn) LHM_lh_doall(FUNCTION,lh,fn) -# define lh_FUNCTION_doall_arg(lh,fn,arg_type,arg) \ - LHM_lh_doall_arg(FUNCTION,lh,fn,arg_type,arg) -# define lh_FUNCTION_error(lh) LHM_lh_error(FUNCTION,lh) -# define lh_FUNCTION_num_items(lh) LHM_lh_num_items(FUNCTION,lh) -# define lh_FUNCTION_down_load(lh) LHM_lh_down_load(FUNCTION,lh) -# define lh_FUNCTION_node_stats_bio(lh,out) \ - LHM_lh_node_stats_bio(FUNCTION,lh,out) -# define lh_FUNCTION_node_usage_stats_bio(lh,out) \ - LHM_lh_node_usage_stats_bio(FUNCTION,lh,out) -# define lh_FUNCTION_stats_bio(lh,out) \ - LHM_lh_stats_bio(FUNCTION,lh,out) -# define lh_FUNCTION_free(lh) LHM_lh_free(FUNCTION,lh) -# define lh_MEM_new() LHM_lh_new(MEM,mem) -# define lh_MEM_insert(lh,inst) LHM_lh_insert(MEM,lh,inst) -# define lh_MEM_retrieve(lh,inst) LHM_lh_retrieve(MEM,lh,inst) -# define lh_MEM_delete(lh,inst) LHM_lh_delete(MEM,lh,inst) -# define lh_MEM_doall(lh,fn) LHM_lh_doall(MEM,lh,fn) -# define lh_MEM_doall_arg(lh,fn,arg_type,arg) \ - LHM_lh_doall_arg(MEM,lh,fn,arg_type,arg) -# define lh_MEM_error(lh) LHM_lh_error(MEM,lh) -# define lh_MEM_num_items(lh) LHM_lh_num_items(MEM,lh) -# define lh_MEM_down_load(lh) LHM_lh_down_load(MEM,lh) -# define lh_MEM_node_stats_bio(lh,out) \ - LHM_lh_node_stats_bio(MEM,lh,out) -# define lh_MEM_node_usage_stats_bio(lh,out) \ - LHM_lh_node_usage_stats_bio(MEM,lh,out) -# define lh_MEM_stats_bio(lh,out) \ - LHM_lh_stats_bio(MEM,lh,out) -# define lh_MEM_free(lh) LHM_lh_free(MEM,lh) -# define lh_OBJ_NAME_new() LHM_lh_new(OBJ_NAME,obj_name) -# define lh_OBJ_NAME_insert(lh,inst) LHM_lh_insert(OBJ_NAME,lh,inst) -# define lh_OBJ_NAME_retrieve(lh,inst) LHM_lh_retrieve(OBJ_NAME,lh,inst) -# define lh_OBJ_NAME_delete(lh,inst) LHM_lh_delete(OBJ_NAME,lh,inst) -# define lh_OBJ_NAME_doall(lh,fn) LHM_lh_doall(OBJ_NAME,lh,fn) -# define lh_OBJ_NAME_doall_arg(lh,fn,arg_type,arg) \ - LHM_lh_doall_arg(OBJ_NAME,lh,fn,arg_type,arg) -# define lh_OBJ_NAME_error(lh) LHM_lh_error(OBJ_NAME,lh) -# define lh_OBJ_NAME_num_items(lh) LHM_lh_num_items(OBJ_NAME,lh) -# define lh_OBJ_NAME_down_load(lh) LHM_lh_down_load(OBJ_NAME,lh) -# define lh_OBJ_NAME_node_stats_bio(lh,out) \ - LHM_lh_node_stats_bio(OBJ_NAME,lh,out) -# define lh_OBJ_NAME_node_usage_stats_bio(lh,out) \ - LHM_lh_node_usage_stats_bio(OBJ_NAME,lh,out) -# define lh_OBJ_NAME_stats_bio(lh,out) \ - LHM_lh_stats_bio(OBJ_NAME,lh,out) -# define lh_OBJ_NAME_free(lh) LHM_lh_free(OBJ_NAME,lh) -# define lh_OPENSSL_CSTRING_new() LHM_lh_new(OPENSSL_CSTRING,openssl_cstring) -# define lh_OPENSSL_CSTRING_insert(lh,inst) LHM_lh_insert(OPENSSL_CSTRING,lh,inst) -# define lh_OPENSSL_CSTRING_retrieve(lh,inst) LHM_lh_retrieve(OPENSSL_CSTRING,lh,inst) -# define lh_OPENSSL_CSTRING_delete(lh,inst) LHM_lh_delete(OPENSSL_CSTRING,lh,inst) -# define lh_OPENSSL_CSTRING_doall(lh,fn) LHM_lh_doall(OPENSSL_CSTRING,lh,fn) -# define lh_OPENSSL_CSTRING_doall_arg(lh,fn,arg_type,arg) \ - LHM_lh_doall_arg(OPENSSL_CSTRING,lh,fn,arg_type,arg) -# define lh_OPENSSL_CSTRING_error(lh) LHM_lh_error(OPENSSL_CSTRING,lh) -# define lh_OPENSSL_CSTRING_num_items(lh) LHM_lh_num_items(OPENSSL_CSTRING,lh) -# define lh_OPENSSL_CSTRING_down_load(lh) LHM_lh_down_load(OPENSSL_CSTRING,lh) -# define lh_OPENSSL_CSTRING_node_stats_bio(lh,out) \ - LHM_lh_node_stats_bio(OPENSSL_CSTRING,lh,out) -# define lh_OPENSSL_CSTRING_node_usage_stats_bio(lh,out) \ - LHM_lh_node_usage_stats_bio(OPENSSL_CSTRING,lh,out) -# define lh_OPENSSL_CSTRING_stats_bio(lh,out) \ - LHM_lh_stats_bio(OPENSSL_CSTRING,lh,out) -# define lh_OPENSSL_CSTRING_free(lh) LHM_lh_free(OPENSSL_CSTRING,lh) -# define lh_OPENSSL_STRING_new() LHM_lh_new(OPENSSL_STRING,openssl_string) -# define lh_OPENSSL_STRING_insert(lh,inst) LHM_lh_insert(OPENSSL_STRING,lh,inst) -# define lh_OPENSSL_STRING_retrieve(lh,inst) LHM_lh_retrieve(OPENSSL_STRING,lh,inst) -# define lh_OPENSSL_STRING_delete(lh,inst) LHM_lh_delete(OPENSSL_STRING,lh,inst) -# define lh_OPENSSL_STRING_doall(lh,fn) LHM_lh_doall(OPENSSL_STRING,lh,fn) -# define lh_OPENSSL_STRING_doall_arg(lh,fn,arg_type,arg) \ - LHM_lh_doall_arg(OPENSSL_STRING,lh,fn,arg_type,arg) -# define lh_OPENSSL_STRING_error(lh) LHM_lh_error(OPENSSL_STRING,lh) -# define lh_OPENSSL_STRING_num_items(lh) LHM_lh_num_items(OPENSSL_STRING,lh) -# define lh_OPENSSL_STRING_down_load(lh) LHM_lh_down_load(OPENSSL_STRING,lh) -# define lh_OPENSSL_STRING_node_stats_bio(lh,out) \ - LHM_lh_node_stats_bio(OPENSSL_STRING,lh,out) -# define lh_OPENSSL_STRING_node_usage_stats_bio(lh,out) \ - LHM_lh_node_usage_stats_bio(OPENSSL_STRING,lh,out) -# define lh_OPENSSL_STRING_stats_bio(lh,out) \ - LHM_lh_stats_bio(OPENSSL_STRING,lh,out) -# define lh_OPENSSL_STRING_free(lh) LHM_lh_free(OPENSSL_STRING,lh) -# define lh_SSL_SESSION_new() LHM_lh_new(SSL_SESSION,ssl_session) -# define lh_SSL_SESSION_insert(lh,inst) LHM_lh_insert(SSL_SESSION,lh,inst) -# define lh_SSL_SESSION_retrieve(lh,inst) LHM_lh_retrieve(SSL_SESSION,lh,inst) -# define lh_SSL_SESSION_delete(lh,inst) LHM_lh_delete(SSL_SESSION,lh,inst) -# define lh_SSL_SESSION_doall(lh,fn) LHM_lh_doall(SSL_SESSION,lh,fn) -# define lh_SSL_SESSION_doall_arg(lh,fn,arg_type,arg) \ - LHM_lh_doall_arg(SSL_SESSION,lh,fn,arg_type,arg) -# define lh_SSL_SESSION_error(lh) LHM_lh_error(SSL_SESSION,lh) -# define lh_SSL_SESSION_num_items(lh) LHM_lh_num_items(SSL_SESSION,lh) -# define lh_SSL_SESSION_down_load(lh) LHM_lh_down_load(SSL_SESSION,lh) -# define lh_SSL_SESSION_node_stats_bio(lh,out) \ - LHM_lh_node_stats_bio(SSL_SESSION,lh,out) -# define lh_SSL_SESSION_node_usage_stats_bio(lh,out) \ - LHM_lh_node_usage_stats_bio(SSL_SESSION,lh,out) -# define lh_SSL_SESSION_stats_bio(lh,out) \ - LHM_lh_stats_bio(SSL_SESSION,lh,out) -# define lh_SSL_SESSION_free(lh) LHM_lh_free(SSL_SESSION,lh) -#ifdef __cplusplus -} -#endif -#endif /* !defined HEADER_SAFESTACK_H */ diff --git a/ext/openssl-win64/inc32/openssl/sha.h b/ext/openssl-win64/inc32/openssl/sha.h deleted file mode 100644 index e5169e4f..00000000 --- a/ext/openssl-win64/inc32/openssl/sha.h +++ /dev/null @@ -1,214 +0,0 @@ -/* crypto/sha/sha.h */ -/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) - * All rights reserved. - * - * This package is an SSL implementation written - * by Eric Young (eay@cryptsoft.com). - * The implementation was written so as to conform with Netscapes SSL. - * - * This library is free for commercial and non-commercial use as long as - * the following conditions are aheared to. The following conditions - * apply to all code found in this distribution, be it the RC4, RSA, - * lhash, DES, etc., code; not just the SSL code. The SSL documentation - * included with this distribution is covered by the same copyright terms - * except that the holder is Tim Hudson (tjh@cryptsoft.com). - * - * Copyright remains Eric Young's, and as such any Copyright notices in - * the code are not to be removed. - * If this package is used in a product, Eric Young should be given attribution - * as the author of the parts of the library used. - * This can be in the form of a textual message at program startup or - * in documentation (online or textual) provided with the package. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * "This product includes cryptographic software written by - * Eric Young (eay@cryptsoft.com)" - * The word 'cryptographic' can be left out if the rouines from the library - * being used are not cryptographic related :-). - * 4. If you include any Windows specific code (or a derivative thereof) from - * the apps directory (application code) you must include an acknowledgement: - * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" - * - * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * The licence and distribution terms for any publically available version or - * derivative of this code cannot be changed. i.e. this code cannot simply be - * copied and put under another distribution licence - * [including the GNU Public Licence.] - */ - -#ifndef HEADER_SHA_H -# define HEADER_SHA_H - -# include -# include - -#ifdef __cplusplus -extern "C" { -#endif - -# if defined(OPENSSL_NO_SHA) || (defined(OPENSSL_NO_SHA0) && defined(OPENSSL_NO_SHA1)) -# error SHA is disabled. -# endif - -# if defined(OPENSSL_FIPS) -# define FIPS_SHA_SIZE_T size_t -# endif - -/*- - * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - * ! SHA_LONG has to be at least 32 bits wide. If it's wider, then ! - * ! SHA_LONG_LOG2 has to be defined along. ! - * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - */ - -# if defined(__LP32__) -# define SHA_LONG unsigned long -# elif defined(OPENSSL_SYS_CRAY) || defined(__ILP64__) -# define SHA_LONG unsigned long -# define SHA_LONG_LOG2 3 -# else -# define SHA_LONG unsigned int -# endif - -# define SHA_LBLOCK 16 -# define SHA_CBLOCK (SHA_LBLOCK*4)/* SHA treats input data as a - * contiguous array of 32 bit wide - * big-endian values. */ -# define SHA_LAST_BLOCK (SHA_CBLOCK-8) -# define SHA_DIGEST_LENGTH 20 - -typedef struct SHAstate_st { - SHA_LONG h0, h1, h2, h3, h4; - SHA_LONG Nl, Nh; - SHA_LONG data[SHA_LBLOCK]; - unsigned int num; -} SHA_CTX; - -# ifndef OPENSSL_NO_SHA0 -# ifdef OPENSSL_FIPS -int private_SHA_Init(SHA_CTX *c); -# endif -int SHA_Init(SHA_CTX *c); -int SHA_Update(SHA_CTX *c, const void *data, size_t len); -int SHA_Final(unsigned char *md, SHA_CTX *c); -unsigned char *SHA(const unsigned char *d, size_t n, unsigned char *md); -void SHA_Transform(SHA_CTX *c, const unsigned char *data); -# endif -# ifndef OPENSSL_NO_SHA1 -# ifdef OPENSSL_FIPS -int private_SHA1_Init(SHA_CTX *c); -# endif -int SHA1_Init(SHA_CTX *c); -int SHA1_Update(SHA_CTX *c, const void *data, size_t len); -int SHA1_Final(unsigned char *md, SHA_CTX *c); -unsigned char *SHA1(const unsigned char *d, size_t n, unsigned char *md); -void SHA1_Transform(SHA_CTX *c, const unsigned char *data); -# endif - -# define SHA256_CBLOCK (SHA_LBLOCK*4)/* SHA-256 treats input data as a - * contiguous array of 32 bit wide - * big-endian values. */ -# define SHA224_DIGEST_LENGTH 28 -# define SHA256_DIGEST_LENGTH 32 - -typedef struct SHA256state_st { - SHA_LONG h[8]; - SHA_LONG Nl, Nh; - SHA_LONG data[SHA_LBLOCK]; - unsigned int num, md_len; -} SHA256_CTX; - -# ifndef OPENSSL_NO_SHA256 -# ifdef OPENSSL_FIPS -int private_SHA224_Init(SHA256_CTX *c); -int private_SHA256_Init(SHA256_CTX *c); -# endif -int SHA224_Init(SHA256_CTX *c); -int SHA224_Update(SHA256_CTX *c, const void *data, size_t len); -int SHA224_Final(unsigned char *md, SHA256_CTX *c); -unsigned char *SHA224(const unsigned char *d, size_t n, unsigned char *md); -int SHA256_Init(SHA256_CTX *c); -int SHA256_Update(SHA256_CTX *c, const void *data, size_t len); -int SHA256_Final(unsigned char *md, SHA256_CTX *c); -unsigned char *SHA256(const unsigned char *d, size_t n, unsigned char *md); -void SHA256_Transform(SHA256_CTX *c, const unsigned char *data); -# endif - -# define SHA384_DIGEST_LENGTH 48 -# define SHA512_DIGEST_LENGTH 64 - -# ifndef OPENSSL_NO_SHA512 -/* - * Unlike 32-bit digest algorithms, SHA-512 *relies* on SHA_LONG64 - * being exactly 64-bit wide. See Implementation Notes in sha512.c - * for further details. - */ -/* - * SHA-512 treats input data as a - * contiguous array of 64 bit - * wide big-endian values. - */ -# define SHA512_CBLOCK (SHA_LBLOCK*8) -# if (defined(_WIN32) || defined(_WIN64)) && !defined(__MINGW32__) -# define SHA_LONG64 unsigned __int64 -# define U64(C) C##UI64 -# elif defined(__arch64__) -# define SHA_LONG64 unsigned long -# define U64(C) C##UL -# else -# define SHA_LONG64 unsigned long long -# define U64(C) C##ULL -# endif - -typedef struct SHA512state_st { - SHA_LONG64 h[8]; - SHA_LONG64 Nl, Nh; - union { - SHA_LONG64 d[SHA_LBLOCK]; - unsigned char p[SHA512_CBLOCK]; - } u; - unsigned int num, md_len; -} SHA512_CTX; -# endif - -# ifndef OPENSSL_NO_SHA512 -# ifdef OPENSSL_FIPS -int private_SHA384_Init(SHA512_CTX *c); -int private_SHA512_Init(SHA512_CTX *c); -# endif -int SHA384_Init(SHA512_CTX *c); -int SHA384_Update(SHA512_CTX *c, const void *data, size_t len); -int SHA384_Final(unsigned char *md, SHA512_CTX *c); -unsigned char *SHA384(const unsigned char *d, size_t n, unsigned char *md); -int SHA512_Init(SHA512_CTX *c); -int SHA512_Update(SHA512_CTX *c, const void *data, size_t len); -int SHA512_Final(unsigned char *md, SHA512_CTX *c); -unsigned char *SHA512(const unsigned char *d, size_t n, unsigned char *md); -void SHA512_Transform(SHA512_CTX *c, const unsigned char *data); -# endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/ext/openssl-win64/inc32/openssl/srtp.h b/ext/openssl-win64/inc32/openssl/srtp.h deleted file mode 100644 index 2279c32b..00000000 --- a/ext/openssl-win64/inc32/openssl/srtp.h +++ /dev/null @@ -1,147 +0,0 @@ -/* ssl/srtp.h */ -/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) - * All rights reserved. - * - * This package is an SSL implementation written - * by Eric Young (eay@cryptsoft.com). - * The implementation was written so as to conform with Netscapes SSL. - * - * This library is free for commercial and non-commercial use as long as - * the following conditions are aheared to. The following conditions - * apply to all code found in this distribution, be it the RC4, RSA, - * lhash, DES, etc., code; not just the SSL code. The SSL documentation - * included with this distribution is covered by the same copyright terms - * except that the holder is Tim Hudson (tjh@cryptsoft.com). - * - * Copyright remains Eric Young's, and as such any Copyright notices in - * the code are not to be removed. - * If this package is used in a product, Eric Young should be given attribution - * as the author of the parts of the library used. - * This can be in the form of a textual message at program startup or - * in documentation (online or textual) provided with the package. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * "This product includes cryptographic software written by - * Eric Young (eay@cryptsoft.com)" - * The word 'cryptographic' can be left out if the rouines from the library - * being used are not cryptographic related :-). - * 4. If you include any Windows specific code (or a derivative thereof) from - * the apps directory (application code) you must include an acknowledgement: - * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" - * - * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * The licence and distribution terms for any publically available version or - * derivative of this code cannot be changed. i.e. this code cannot simply be - * copied and put under another distribution licence - * [including the GNU Public Licence.] - */ -/* ==================================================================== - * Copyright (c) 1998-2006 The OpenSSL Project. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. All advertising materials mentioning features or use of this - * software must display the following acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" - * - * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * openssl-core@openssl.org. - * - * 5. Products derived from this software may not be called "OpenSSL" - * nor may "OpenSSL" appear in their names without prior written - * permission of the OpenSSL Project. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit (http://www.openssl.org/)" - * - * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY - * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * ==================================================================== - * - * This product includes cryptographic software written by Eric Young - * (eay@cryptsoft.com). This product includes software written by Tim - * Hudson (tjh@cryptsoft.com). - * - */ -/* - * DTLS code by Eric Rescorla - * - * Copyright (C) 2006, Network Resonance, Inc. Copyright (C) 2011, RTFM, Inc. - */ - -#ifndef HEADER_D1_SRTP_H -# define HEADER_D1_SRTP_H - -# include - -#ifdef __cplusplus -extern "C" { -#endif - -# define SRTP_AES128_CM_SHA1_80 0x0001 -# define SRTP_AES128_CM_SHA1_32 0x0002 -# define SRTP_AES128_F8_SHA1_80 0x0003 -# define SRTP_AES128_F8_SHA1_32 0x0004 -# define SRTP_NULL_SHA1_80 0x0005 -# define SRTP_NULL_SHA1_32 0x0006 - -# ifndef OPENSSL_NO_SRTP - -int SSL_CTX_set_tlsext_use_srtp(SSL_CTX *ctx, const char *profiles); -int SSL_set_tlsext_use_srtp(SSL *ctx, const char *profiles); - -STACK_OF(SRTP_PROTECTION_PROFILE) *SSL_get_srtp_profiles(SSL *ssl); -SRTP_PROTECTION_PROFILE *SSL_get_selected_srtp_profile(SSL *s); - -# endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/ext/openssl-win64/inc32/openssl/ssl.h b/ext/openssl-win64/inc32/openssl/ssl.h deleted file mode 100644 index 2b0f6628..00000000 --- a/ext/openssl-win64/inc32/openssl/ssl.h +++ /dev/null @@ -1,3159 +0,0 @@ -/* ssl/ssl.h */ -/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) - * All rights reserved. - * - * This package is an SSL implementation written - * by Eric Young (eay@cryptsoft.com). - * The implementation was written so as to conform with Netscapes SSL. - * - * This library is free for commercial and non-commercial use as long as - * the following conditions are aheared to. The following conditions - * apply to all code found in this distribution, be it the RC4, RSA, - * lhash, DES, etc., code; not just the SSL code. The SSL documentation - * included with this distribution is covered by the same copyright terms - * except that the holder is Tim Hudson (tjh@cryptsoft.com). - * - * Copyright remains Eric Young's, and as such any Copyright notices in - * the code are not to be removed. - * If this package is used in a product, Eric Young should be given attribution - * as the author of the parts of the library used. - * This can be in the form of a textual message at program startup or - * in documentation (online or textual) provided with the package. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * "This product includes cryptographic software written by - * Eric Young (eay@cryptsoft.com)" - * The word 'cryptographic' can be left out if the rouines from the library - * being used are not cryptographic related :-). - * 4. If you include any Windows specific code (or a derivative thereof) from - * the apps directory (application code) you must include an acknowledgement: - * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" - * - * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * The licence and distribution terms for any publically available version or - * derivative of this code cannot be changed. i.e. this code cannot simply be - * copied and put under another distribution licence - * [including the GNU Public Licence.] - */ -/* ==================================================================== - * Copyright (c) 1998-2007 The OpenSSL Project. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. All advertising materials mentioning features or use of this - * software must display the following acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" - * - * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * openssl-core@openssl.org. - * - * 5. Products derived from this software may not be called "OpenSSL" - * nor may "OpenSSL" appear in their names without prior written - * permission of the OpenSSL Project. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit (http://www.openssl.org/)" - * - * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY - * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * ==================================================================== - * - * This product includes cryptographic software written by Eric Young - * (eay@cryptsoft.com). This product includes software written by Tim - * Hudson (tjh@cryptsoft.com). - * - */ -/* ==================================================================== - * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED. - * ECC cipher suite support in OpenSSL originally developed by - * SUN MICROSYSTEMS, INC., and contributed to the OpenSSL project. - */ -/* ==================================================================== - * Copyright 2005 Nokia. All rights reserved. - * - * The portions of the attached software ("Contribution") is developed by - * Nokia Corporation and is licensed pursuant to the OpenSSL open source - * license. - * - * The Contribution, originally written by Mika Kousa and Pasi Eronen of - * Nokia Corporation, consists of the "PSK" (Pre-Shared Key) ciphersuites - * support (see RFC 4279) to OpenSSL. - * - * No patent licenses or other rights except those expressly stated in - * the OpenSSL open source license shall be deemed granted or received - * expressly, by implication, estoppel, or otherwise. - * - * No assurances are provided by Nokia that the Contribution does not - * infringe the patent or other intellectual property rights of any third - * party or that the license provides you with all the necessary rights - * to make use of the Contribution. - * - * THE SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. IN - * ADDITION TO THE DISCLAIMERS INCLUDED IN THE LICENSE, NOKIA - * SPECIFICALLY DISCLAIMS ANY LIABILITY FOR CLAIMS BROUGHT BY YOU OR ANY - * OTHER ENTITY BASED ON INFRINGEMENT OF INTELLECTUAL PROPERTY RIGHTS OR - * OTHERWISE. - */ - -#ifndef HEADER_SSL_H -# define HEADER_SSL_H - -# include - -# ifndef OPENSSL_NO_COMP -# include -# endif -# ifndef OPENSSL_NO_BIO -# include -# endif -# ifndef OPENSSL_NO_DEPRECATED -# ifndef OPENSSL_NO_X509 -# include -# endif -# include -# include -# include -# endif -# include -# include - -# include -# include -# include - -#ifdef __cplusplus -extern "C" { -#endif - -/* SSLeay version number for ASN.1 encoding of the session information */ -/*- - * Version 0 - initial version - * Version 1 - added the optional peer certificate - */ -# define SSL_SESSION_ASN1_VERSION 0x0001 - -/* text strings for the ciphers */ -# define SSL_TXT_NULL_WITH_MD5 SSL2_TXT_NULL_WITH_MD5 -# define SSL_TXT_RC4_128_WITH_MD5 SSL2_TXT_RC4_128_WITH_MD5 -# define SSL_TXT_RC4_128_EXPORT40_WITH_MD5 SSL2_TXT_RC4_128_EXPORT40_WITH_MD5 -# define SSL_TXT_RC2_128_CBC_WITH_MD5 SSL2_TXT_RC2_128_CBC_WITH_MD5 -# define SSL_TXT_RC2_128_CBC_EXPORT40_WITH_MD5 SSL2_TXT_RC2_128_CBC_EXPORT40_WITH_MD5 -# define SSL_TXT_IDEA_128_CBC_WITH_MD5 SSL2_TXT_IDEA_128_CBC_WITH_MD5 -# define SSL_TXT_DES_64_CBC_WITH_MD5 SSL2_TXT_DES_64_CBC_WITH_MD5 -# define SSL_TXT_DES_64_CBC_WITH_SHA SSL2_TXT_DES_64_CBC_WITH_SHA -# define SSL_TXT_DES_192_EDE3_CBC_WITH_MD5 SSL2_TXT_DES_192_EDE3_CBC_WITH_MD5 -# define SSL_TXT_DES_192_EDE3_CBC_WITH_SHA SSL2_TXT_DES_192_EDE3_CBC_WITH_SHA - -/* - * VRS Additional Kerberos5 entries - */ -# define SSL_TXT_KRB5_DES_64_CBC_SHA SSL3_TXT_KRB5_DES_64_CBC_SHA -# define SSL_TXT_KRB5_DES_192_CBC3_SHA SSL3_TXT_KRB5_DES_192_CBC3_SHA -# define SSL_TXT_KRB5_RC4_128_SHA SSL3_TXT_KRB5_RC4_128_SHA -# define SSL_TXT_KRB5_IDEA_128_CBC_SHA SSL3_TXT_KRB5_IDEA_128_CBC_SHA -# define SSL_TXT_KRB5_DES_64_CBC_MD5 SSL3_TXT_KRB5_DES_64_CBC_MD5 -# define SSL_TXT_KRB5_DES_192_CBC3_MD5 SSL3_TXT_KRB5_DES_192_CBC3_MD5 -# define SSL_TXT_KRB5_RC4_128_MD5 SSL3_TXT_KRB5_RC4_128_MD5 -# define SSL_TXT_KRB5_IDEA_128_CBC_MD5 SSL3_TXT_KRB5_IDEA_128_CBC_MD5 - -# define SSL_TXT_KRB5_DES_40_CBC_SHA SSL3_TXT_KRB5_DES_40_CBC_SHA -# define SSL_TXT_KRB5_RC2_40_CBC_SHA SSL3_TXT_KRB5_RC2_40_CBC_SHA -# define SSL_TXT_KRB5_RC4_40_SHA SSL3_TXT_KRB5_RC4_40_SHA -# define SSL_TXT_KRB5_DES_40_CBC_MD5 SSL3_TXT_KRB5_DES_40_CBC_MD5 -# define SSL_TXT_KRB5_RC2_40_CBC_MD5 SSL3_TXT_KRB5_RC2_40_CBC_MD5 -# define SSL_TXT_KRB5_RC4_40_MD5 SSL3_TXT_KRB5_RC4_40_MD5 - -# define SSL_TXT_KRB5_DES_40_CBC_SHA SSL3_TXT_KRB5_DES_40_CBC_SHA -# define SSL_TXT_KRB5_DES_40_CBC_MD5 SSL3_TXT_KRB5_DES_40_CBC_MD5 -# define SSL_TXT_KRB5_DES_64_CBC_SHA SSL3_TXT_KRB5_DES_64_CBC_SHA -# define SSL_TXT_KRB5_DES_64_CBC_MD5 SSL3_TXT_KRB5_DES_64_CBC_MD5 -# define SSL_TXT_KRB5_DES_192_CBC3_SHA SSL3_TXT_KRB5_DES_192_CBC3_SHA -# define SSL_TXT_KRB5_DES_192_CBC3_MD5 SSL3_TXT_KRB5_DES_192_CBC3_MD5 -# define SSL_MAX_KRB5_PRINCIPAL_LENGTH 256 - -# define SSL_MAX_SSL_SESSION_ID_LENGTH 32 -# define SSL_MAX_SID_CTX_LENGTH 32 - -# define SSL_MIN_RSA_MODULUS_LENGTH_IN_BYTES (512/8) -# define SSL_MAX_KEY_ARG_LENGTH 8 -# define SSL_MAX_MASTER_KEY_LENGTH 48 - -/* These are used to specify which ciphers to use and not to use */ - -# define SSL_TXT_EXP40 "EXPORT40" -# define SSL_TXT_EXP56 "EXPORT56" -# define SSL_TXT_LOW "LOW" -# define SSL_TXT_MEDIUM "MEDIUM" -# define SSL_TXT_HIGH "HIGH" -# define SSL_TXT_FIPS "FIPS" - -# define SSL_TXT_kFZA "kFZA"/* unused! */ -# define SSL_TXT_aFZA "aFZA"/* unused! */ -# define SSL_TXT_eFZA "eFZA"/* unused! */ -# define SSL_TXT_FZA "FZA"/* unused! */ - -# define SSL_TXT_aNULL "aNULL" -# define SSL_TXT_eNULL "eNULL" -# define SSL_TXT_NULL "NULL" - -# define SSL_TXT_kRSA "kRSA" -# define SSL_TXT_kDHr "kDHr" -# define SSL_TXT_kDHd "kDHd" -# define SSL_TXT_kDH "kDH" -# define SSL_TXT_kEDH "kEDH" -# define SSL_TXT_kDHE "kDHE"/* alias for kEDH */ -# define SSL_TXT_kKRB5 "kKRB5" -# define SSL_TXT_kECDHr "kECDHr" -# define SSL_TXT_kECDHe "kECDHe" -# define SSL_TXT_kECDH "kECDH" -# define SSL_TXT_kEECDH "kEECDH" -# define SSL_TXT_kECDHE "kECDHE"/* alias for kEECDH */ -# define SSL_TXT_kPSK "kPSK" -# define SSL_TXT_kGOST "kGOST" -# define SSL_TXT_kSRP "kSRP" - -# define SSL_TXT_aRSA "aRSA" -# define SSL_TXT_aDSS "aDSS" -# define SSL_TXT_aDH "aDH" -# define SSL_TXT_aECDH "aECDH" -# define SSL_TXT_aKRB5 "aKRB5" -# define SSL_TXT_aECDSA "aECDSA" -# define SSL_TXT_aPSK "aPSK" -# define SSL_TXT_aGOST94 "aGOST94" -# define SSL_TXT_aGOST01 "aGOST01" -# define SSL_TXT_aGOST "aGOST" -# define SSL_TXT_aSRP "aSRP" - -# define SSL_TXT_DSS "DSS" -# define SSL_TXT_DH "DH" -# define SSL_TXT_EDH "EDH"/* same as "kEDH:-ADH" */ -# define SSL_TXT_DHE "DHE"/* alias for EDH */ -# define SSL_TXT_ADH "ADH" -# define SSL_TXT_RSA "RSA" -# define SSL_TXT_ECDH "ECDH" -# define SSL_TXT_EECDH "EECDH"/* same as "kEECDH:-AECDH" */ -# define SSL_TXT_ECDHE "ECDHE"/* alias for ECDHE" */ -# define SSL_TXT_AECDH "AECDH" -# define SSL_TXT_ECDSA "ECDSA" -# define SSL_TXT_KRB5 "KRB5" -# define SSL_TXT_PSK "PSK" -# define SSL_TXT_SRP "SRP" - -# define SSL_TXT_DES "DES" -# define SSL_TXT_3DES "3DES" -# define SSL_TXT_RC4 "RC4" -# define SSL_TXT_RC2 "RC2" -# define SSL_TXT_IDEA "IDEA" -# define SSL_TXT_SEED "SEED" -# define SSL_TXT_AES128 "AES128" -# define SSL_TXT_AES256 "AES256" -# define SSL_TXT_AES "AES" -# define SSL_TXT_AES_GCM "AESGCM" -# define SSL_TXT_CAMELLIA128 "CAMELLIA128" -# define SSL_TXT_CAMELLIA256 "CAMELLIA256" -# define SSL_TXT_CAMELLIA "CAMELLIA" - -# define SSL_TXT_MD5 "MD5" -# define SSL_TXT_SHA1 "SHA1" -# define SSL_TXT_SHA "SHA"/* same as "SHA1" */ -# define SSL_TXT_GOST94 "GOST94" -# define SSL_TXT_GOST89MAC "GOST89MAC" -# define SSL_TXT_SHA256 "SHA256" -# define SSL_TXT_SHA384 "SHA384" - -# define SSL_TXT_SSLV2 "SSLv2" -# define SSL_TXT_SSLV3 "SSLv3" -# define SSL_TXT_TLSV1 "TLSv1" -# define SSL_TXT_TLSV1_1 "TLSv1.1" -# define SSL_TXT_TLSV1_2 "TLSv1.2" - -# define SSL_TXT_EXP "EXP" -# define SSL_TXT_EXPORT "EXPORT" - -# define SSL_TXT_ALL "ALL" - -/*- - * COMPLEMENTOF* definitions. These identifiers are used to (de-select) - * ciphers normally not being used. - * Example: "RC4" will activate all ciphers using RC4 including ciphers - * without authentication, which would normally disabled by DEFAULT (due - * the "!ADH" being part of default). Therefore "RC4:!COMPLEMENTOFDEFAULT" - * will make sure that it is also disabled in the specific selection. - * COMPLEMENTOF* identifiers are portable between version, as adjustments - * to the default cipher setup will also be included here. - * - * COMPLEMENTOFDEFAULT does not experience the same special treatment that - * DEFAULT gets, as only selection is being done and no sorting as needed - * for DEFAULT. - */ -# define SSL_TXT_CMPALL "COMPLEMENTOFALL" -# define SSL_TXT_CMPDEF "COMPLEMENTOFDEFAULT" - -/* - * The following cipher list is used by default. It also is substituted when - * an application-defined cipher list string starts with 'DEFAULT'. - */ -# define SSL_DEFAULT_CIPHER_LIST "ALL:!aNULL:!eNULL:!SSLv2" -/* - * As of OpenSSL 1.0.0, ssl_create_cipher_list() in ssl/ssl_ciph.c always - * starts with a reasonable order, and all we have to do for DEFAULT is - * throwing out anonymous and unencrypted ciphersuites! (The latter are not - * actually enabled by ALL, but "ALL:RSA" would enable some of them.) - */ - -/* Used in SSL_set_shutdown()/SSL_get_shutdown(); */ -# define SSL_SENT_SHUTDOWN 1 -# define SSL_RECEIVED_SHUTDOWN 2 - -#ifdef __cplusplus -} -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -# if (defined(OPENSSL_NO_RSA) || defined(OPENSSL_NO_MD5)) && !defined(OPENSSL_NO_SSL2) -# define OPENSSL_NO_SSL2 -# endif - -# define SSL_FILETYPE_ASN1 X509_FILETYPE_ASN1 -# define SSL_FILETYPE_PEM X509_FILETYPE_PEM - -/* - * This is needed to stop compilers complaining about the 'struct ssl_st *' - * function parameters used to prototype callbacks in SSL_CTX. - */ -typedef struct ssl_st *ssl_crock_st; -typedef struct tls_session_ticket_ext_st TLS_SESSION_TICKET_EXT; -typedef struct ssl_method_st SSL_METHOD; -typedef struct ssl_cipher_st SSL_CIPHER; -typedef struct ssl_session_st SSL_SESSION; -typedef struct tls_sigalgs_st TLS_SIGALGS; -typedef struct ssl_conf_ctx_st SSL_CONF_CTX; - -DECLARE_STACK_OF(SSL_CIPHER) - -/* SRTP protection profiles for use with the use_srtp extension (RFC 5764)*/ -typedef struct srtp_protection_profile_st { - const char *name; - unsigned long id; -} SRTP_PROTECTION_PROFILE; - -DECLARE_STACK_OF(SRTP_PROTECTION_PROFILE) - -typedef int (*tls_session_ticket_ext_cb_fn) (SSL *s, - const unsigned char *data, - int len, void *arg); -typedef int (*tls_session_secret_cb_fn) (SSL *s, void *secret, - int *secret_len, - STACK_OF(SSL_CIPHER) *peer_ciphers, - SSL_CIPHER **cipher, void *arg); - -# ifndef OPENSSL_NO_TLSEXT - -/* Typedefs for handling custom extensions */ - -typedef int (*custom_ext_add_cb) (SSL *s, unsigned int ext_type, - const unsigned char **out, - size_t *outlen, int *al, void *add_arg); - -typedef void (*custom_ext_free_cb) (SSL *s, unsigned int ext_type, - const unsigned char *out, void *add_arg); - -typedef int (*custom_ext_parse_cb) (SSL *s, unsigned int ext_type, - const unsigned char *in, - size_t inlen, int *al, void *parse_arg); - -# endif - -# ifndef OPENSSL_NO_SSL_INTERN - -/* used to hold info on the particular ciphers used */ -struct ssl_cipher_st { - int valid; - const char *name; /* text name */ - unsigned long id; /* id, 4 bytes, first is version */ - /* - * changed in 0.9.9: these four used to be portions of a single value - * 'algorithms' - */ - unsigned long algorithm_mkey; /* key exchange algorithm */ - unsigned long algorithm_auth; /* server authentication */ - unsigned long algorithm_enc; /* symmetric encryption */ - unsigned long algorithm_mac; /* symmetric authentication */ - unsigned long algorithm_ssl; /* (major) protocol version */ - unsigned long algo_strength; /* strength and export flags */ - unsigned long algorithm2; /* Extra flags */ - int strength_bits; /* Number of bits really used */ - int alg_bits; /* Number of bits for algorithm */ -}; - -/* Used to hold functions for SSLv2 or SSLv3/TLSv1 functions */ -struct ssl_method_st { - int version; - int (*ssl_new) (SSL *s); - void (*ssl_clear) (SSL *s); - void (*ssl_free) (SSL *s); - int (*ssl_accept) (SSL *s); - int (*ssl_connect) (SSL *s); - int (*ssl_read) (SSL *s, void *buf, int len); - int (*ssl_peek) (SSL *s, void *buf, int len); - int (*ssl_write) (SSL *s, const void *buf, int len); - int (*ssl_shutdown) (SSL *s); - int (*ssl_renegotiate) (SSL *s); - int (*ssl_renegotiate_check) (SSL *s); - long (*ssl_get_message) (SSL *s, int st1, int stn, int mt, long - max, int *ok); - int (*ssl_read_bytes) (SSL *s, int type, unsigned char *buf, int len, - int peek); - int (*ssl_write_bytes) (SSL *s, int type, const void *buf_, int len); - int (*ssl_dispatch_alert) (SSL *s); - long (*ssl_ctrl) (SSL *s, int cmd, long larg, void *parg); - long (*ssl_ctx_ctrl) (SSL_CTX *ctx, int cmd, long larg, void *parg); - const SSL_CIPHER *(*get_cipher_by_char) (const unsigned char *ptr); - int (*put_cipher_by_char) (const SSL_CIPHER *cipher, unsigned char *ptr); - int (*ssl_pending) (const SSL *s); - int (*num_ciphers) (void); - const SSL_CIPHER *(*get_cipher) (unsigned ncipher); - const struct ssl_method_st *(*get_ssl_method) (int version); - long (*get_timeout) (void); - struct ssl3_enc_method *ssl3_enc; /* Extra SSLv3/TLS stuff */ - int (*ssl_version) (void); - long (*ssl_callback_ctrl) (SSL *s, int cb_id, void (*fp) (void)); - long (*ssl_ctx_callback_ctrl) (SSL_CTX *s, int cb_id, void (*fp) (void)); -}; - -/*- - * Lets make this into an ASN.1 type structure as follows - * SSL_SESSION_ID ::= SEQUENCE { - * version INTEGER, -- structure version number - * SSLversion INTEGER, -- SSL version number - * Cipher OCTET STRING, -- the 3 byte cipher ID - * Session_ID OCTET STRING, -- the Session ID - * Master_key OCTET STRING, -- the master key - * KRB5_principal OCTET STRING -- optional Kerberos principal - * Key_Arg [ 0 ] IMPLICIT OCTET STRING, -- the optional Key argument - * Time [ 1 ] EXPLICIT INTEGER, -- optional Start Time - * Timeout [ 2 ] EXPLICIT INTEGER, -- optional Timeout ins seconds - * Peer [ 3 ] EXPLICIT X509, -- optional Peer Certificate - * Session_ID_context [ 4 ] EXPLICIT OCTET STRING, -- the Session ID context - * Verify_result [ 5 ] EXPLICIT INTEGER, -- X509_V_... code for `Peer' - * HostName [ 6 ] EXPLICIT OCTET STRING, -- optional HostName from servername TLS extension - * PSK_identity_hint [ 7 ] EXPLICIT OCTET STRING, -- optional PSK identity hint - * PSK_identity [ 8 ] EXPLICIT OCTET STRING, -- optional PSK identity - * Ticket_lifetime_hint [9] EXPLICIT INTEGER, -- server's lifetime hint for session ticket - * Ticket [10] EXPLICIT OCTET STRING, -- session ticket (clients only) - * Compression_meth [11] EXPLICIT OCTET STRING, -- optional compression method - * SRP_username [ 12 ] EXPLICIT OCTET STRING -- optional SRP username - * } - * Look in ssl/ssl_asn1.c for more details - * I'm using EXPLICIT tags so I can read the damn things using asn1parse :-). - */ -struct ssl_session_st { - int ssl_version; /* what ssl version session info is being - * kept in here? */ - /* only really used in SSLv2 */ - unsigned int key_arg_length; - unsigned char key_arg[SSL_MAX_KEY_ARG_LENGTH]; - int master_key_length; - unsigned char master_key[SSL_MAX_MASTER_KEY_LENGTH]; - /* session_id - valid? */ - unsigned int session_id_length; - unsigned char session_id[SSL_MAX_SSL_SESSION_ID_LENGTH]; - /* - * this is used to determine whether the session is being reused in the - * appropriate context. It is up to the application to set this, via - * SSL_new - */ - unsigned int sid_ctx_length; - unsigned char sid_ctx[SSL_MAX_SID_CTX_LENGTH]; -# ifndef OPENSSL_NO_KRB5 - unsigned int krb5_client_princ_len; - unsigned char krb5_client_princ[SSL_MAX_KRB5_PRINCIPAL_LENGTH]; -# endif /* OPENSSL_NO_KRB5 */ -# ifndef OPENSSL_NO_PSK - char *psk_identity_hint; - char *psk_identity; -# endif - /* - * Used to indicate that session resumption is not allowed. Applications - * can also set this bit for a new session via not_resumable_session_cb - * to disable session caching and tickets. - */ - int not_resumable; - /* The cert is the certificate used to establish this connection */ - struct sess_cert_st /* SESS_CERT */ *sess_cert; - /* - * This is the cert for the other end. On clients, it will be the same as - * sess_cert->peer_key->x509 (the latter is not enough as sess_cert is - * not retained in the external representation of sessions, see - * ssl_asn1.c). - */ - X509 *peer; - /* - * when app_verify_callback accepts a session where the peer's - * certificate is not ok, we must remember the error for session reuse: - */ - long verify_result; /* only for servers */ - int references; - long timeout; - long time; - unsigned int compress_meth; /* Need to lookup the method */ - const SSL_CIPHER *cipher; - unsigned long cipher_id; /* when ASN.1 loaded, this needs to be used - * to load the 'cipher' structure */ - STACK_OF(SSL_CIPHER) *ciphers; /* shared ciphers? */ - CRYPTO_EX_DATA ex_data; /* application specific data */ - /* - * These are used to make removal of session-ids more efficient and to - * implement a maximum cache size. - */ - struct ssl_session_st *prev, *next; -# ifndef OPENSSL_NO_TLSEXT - char *tlsext_hostname; -# ifndef OPENSSL_NO_EC - size_t tlsext_ecpointformatlist_length; - unsigned char *tlsext_ecpointformatlist; /* peer's list */ - size_t tlsext_ellipticcurvelist_length; - unsigned char *tlsext_ellipticcurvelist; /* peer's list */ -# endif /* OPENSSL_NO_EC */ - /* RFC4507 info */ - unsigned char *tlsext_tick; /* Session ticket */ - size_t tlsext_ticklen; /* Session ticket length */ - long tlsext_tick_lifetime_hint; /* Session lifetime hint in seconds */ -# endif -# ifndef OPENSSL_NO_SRP - char *srp_username; -# endif -}; - -# endif - -# define SSL_OP_MICROSOFT_SESS_ID_BUG 0x00000001L -# define SSL_OP_NETSCAPE_CHALLENGE_BUG 0x00000002L -/* Allow initial connection to servers that don't support RI */ -# define SSL_OP_LEGACY_SERVER_CONNECT 0x00000004L -# define SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG 0x00000008L -# define SSL_OP_TLSEXT_PADDING 0x00000010L -# define SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER 0x00000020L -# define SSL_OP_SAFARI_ECDHE_ECDSA_BUG 0x00000040L -# define SSL_OP_SSLEAY_080_CLIENT_DH_BUG 0x00000080L -# define SSL_OP_TLS_D5_BUG 0x00000100L -# define SSL_OP_TLS_BLOCK_PADDING_BUG 0x00000200L - -/* Hasn't done anything since OpenSSL 0.9.7h, retained for compatibility */ -# define SSL_OP_MSIE_SSLV2_RSA_PADDING 0x0 -/* Refers to ancient SSLREF and SSLv2, retained for compatibility */ -# define SSL_OP_SSLREF2_REUSE_CERT_TYPE_BUG 0x0 - -/* - * Disable SSL 3.0/TLS 1.0 CBC vulnerability workaround that was added in - * OpenSSL 0.9.6d. Usually (depending on the application protocol) the - * workaround is not needed. Unfortunately some broken SSL/TLS - * implementations cannot handle it at all, which is why we include it in - * SSL_OP_ALL. - */ -/* added in 0.9.6e */ -# define SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS 0x00000800L - -/* - * SSL_OP_ALL: various bug workarounds that should be rather harmless. This - * used to be 0x000FFFFFL before 0.9.7. - */ -# define SSL_OP_ALL 0x80000BFFL - -/* DTLS options */ -# define SSL_OP_NO_QUERY_MTU 0x00001000L -/* Turn on Cookie Exchange (on relevant for servers) */ -# define SSL_OP_COOKIE_EXCHANGE 0x00002000L -/* Don't use RFC4507 ticket extension */ -# define SSL_OP_NO_TICKET 0x00004000L -/* Use Cisco's "speshul" version of DTLS_BAD_VER (as client) */ -# define SSL_OP_CISCO_ANYCONNECT 0x00008000L - -/* As server, disallow session resumption on renegotiation */ -# define SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION 0x00010000L -/* Don't use compression even if supported */ -# define SSL_OP_NO_COMPRESSION 0x00020000L -/* Permit unsafe legacy renegotiation */ -# define SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION 0x00040000L -/* If set, always create a new key when using tmp_ecdh parameters */ -# define SSL_OP_SINGLE_ECDH_USE 0x00080000L -/* If set, always create a new key when using tmp_dh parameters */ -# define SSL_OP_SINGLE_DH_USE 0x00100000L -/* Does nothing: retained for compatibiity */ -# define SSL_OP_EPHEMERAL_RSA 0x0 -/* - * Set on servers to choose the cipher according to the server's preferences - */ -# define SSL_OP_CIPHER_SERVER_PREFERENCE 0x00400000L -/* - * If set, a server will allow a client to issue a SSLv3.0 version number as - * latest version supported in the premaster secret, even when TLSv1.0 - * (version 3.1) was announced in the client hello. Normally this is - * forbidden to prevent version rollback attacks. - */ -# define SSL_OP_TLS_ROLLBACK_BUG 0x00800000L - -# define SSL_OP_NO_SSLv2 0x01000000L -# define SSL_OP_NO_SSLv3 0x02000000L -# define SSL_OP_NO_TLSv1 0x04000000L -# define SSL_OP_NO_TLSv1_2 0x08000000L -# define SSL_OP_NO_TLSv1_1 0x10000000L - -# define SSL_OP_NO_DTLSv1 0x04000000L -# define SSL_OP_NO_DTLSv1_2 0x08000000L - -# define SSL_OP_NO_SSL_MASK (SSL_OP_NO_SSLv2|SSL_OP_NO_SSLv3|\ - SSL_OP_NO_TLSv1|SSL_OP_NO_TLSv1_1|SSL_OP_NO_TLSv1_2) - -/* - * These next two were never actually used for anything since SSLeay zap so - * we have some more flags. - */ -/* - * The next flag deliberately changes the ciphertest, this is a check for the - * PKCS#1 attack - */ -# define SSL_OP_PKCS1_CHECK_1 0x0 -# define SSL_OP_PKCS1_CHECK_2 0x0 - -# define SSL_OP_NETSCAPE_CA_DN_BUG 0x20000000L -# define SSL_OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUG 0x40000000L -/* - * Make server add server-hello extension from early version of cryptopro - * draft, when GOST ciphersuite is negotiated. Required for interoperability - * with CryptoPro CSP 3.x - */ -# define SSL_OP_CRYPTOPRO_TLSEXT_BUG 0x80000000L - -/* - * Allow SSL_write(..., n) to return r with 0 < r < n (i.e. report success - * when just a single record has been written): - */ -# define SSL_MODE_ENABLE_PARTIAL_WRITE 0x00000001L -/* - * Make it possible to retry SSL_write() with changed buffer location (buffer - * contents must stay the same!); this is not the default to avoid the - * misconception that non-blocking SSL_write() behaves like non-blocking - * write(): - */ -# define SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER 0x00000002L -/* - * Never bother the application with retries if the transport is blocking: - */ -# define SSL_MODE_AUTO_RETRY 0x00000004L -/* Don't attempt to automatically build certificate chain */ -# define SSL_MODE_NO_AUTO_CHAIN 0x00000008L -/* - * Save RAM by releasing read and write buffers when they're empty. (SSL3 and - * TLS only.) "Released" buffers are put onto a free-list in the context or - * just freed (depending on the context's setting for freelist_max_len). - */ -# define SSL_MODE_RELEASE_BUFFERS 0x00000010L -/* - * Send the current time in the Random fields of the ClientHello and - * ServerHello records for compatibility with hypothetical implementations - * that require it. - */ -# define SSL_MODE_SEND_CLIENTHELLO_TIME 0x00000020L -# define SSL_MODE_SEND_SERVERHELLO_TIME 0x00000040L -/* - * Send TLS_FALLBACK_SCSV in the ClientHello. To be set only by applications - * that reconnect with a downgraded protocol version; see - * draft-ietf-tls-downgrade-scsv-00 for details. DO NOT ENABLE THIS if your - * application attempts a normal handshake. Only use this in explicit - * fallback retries, following the guidance in - * draft-ietf-tls-downgrade-scsv-00. - */ -# define SSL_MODE_SEND_FALLBACK_SCSV 0x00000080L - -/* Cert related flags */ -/* - * Many implementations ignore some aspects of the TLS standards such as - * enforcing certifcate chain algorithms. When this is set we enforce them. - */ -# define SSL_CERT_FLAG_TLS_STRICT 0x00000001L - -/* Suite B modes, takes same values as certificate verify flags */ -# define SSL_CERT_FLAG_SUITEB_128_LOS_ONLY 0x10000 -/* Suite B 192 bit only mode */ -# define SSL_CERT_FLAG_SUITEB_192_LOS 0x20000 -/* Suite B 128 bit mode allowing 192 bit algorithms */ -# define SSL_CERT_FLAG_SUITEB_128_LOS 0x30000 - -/* Perform all sorts of protocol violations for testing purposes */ -# define SSL_CERT_FLAG_BROKEN_PROTOCOL 0x10000000 - -/* Flags for building certificate chains */ -/* Treat any existing certificates as untrusted CAs */ -# define SSL_BUILD_CHAIN_FLAG_UNTRUSTED 0x1 -/* Don't include root CA in chain */ -# define SSL_BUILD_CHAIN_FLAG_NO_ROOT 0x2 -/* Just check certificates already there */ -# define SSL_BUILD_CHAIN_FLAG_CHECK 0x4 -/* Ignore verification errors */ -# define SSL_BUILD_CHAIN_FLAG_IGNORE_ERROR 0x8 -/* Clear verification errors from queue */ -# define SSL_BUILD_CHAIN_FLAG_CLEAR_ERROR 0x10 - -/* Flags returned by SSL_check_chain */ -/* Certificate can be used with this session */ -# define CERT_PKEY_VALID 0x1 -/* Certificate can also be used for signing */ -# define CERT_PKEY_SIGN 0x2 -/* EE certificate signing algorithm OK */ -# define CERT_PKEY_EE_SIGNATURE 0x10 -/* CA signature algorithms OK */ -# define CERT_PKEY_CA_SIGNATURE 0x20 -/* EE certificate parameters OK */ -# define CERT_PKEY_EE_PARAM 0x40 -/* CA certificate parameters OK */ -# define CERT_PKEY_CA_PARAM 0x80 -/* Signing explicitly allowed as opposed to SHA1 fallback */ -# define CERT_PKEY_EXPLICIT_SIGN 0x100 -/* Client CA issuer names match (always set for server cert) */ -# define CERT_PKEY_ISSUER_NAME 0x200 -/* Cert type matches client types (always set for server cert) */ -# define CERT_PKEY_CERT_TYPE 0x400 -/* Cert chain suitable to Suite B */ -# define CERT_PKEY_SUITEB 0x800 - -# define SSL_CONF_FLAG_CMDLINE 0x1 -# define SSL_CONF_FLAG_FILE 0x2 -# define SSL_CONF_FLAG_CLIENT 0x4 -# define SSL_CONF_FLAG_SERVER 0x8 -# define SSL_CONF_FLAG_SHOW_ERRORS 0x10 -# define SSL_CONF_FLAG_CERTIFICATE 0x20 -/* Configuration value types */ -# define SSL_CONF_TYPE_UNKNOWN 0x0 -# define SSL_CONF_TYPE_STRING 0x1 -# define SSL_CONF_TYPE_FILE 0x2 -# define SSL_CONF_TYPE_DIR 0x3 - -/* - * Note: SSL[_CTX]_set_{options,mode} use |= op on the previous value, they - * cannot be used to clear bits. - */ - -# define SSL_CTX_set_options(ctx,op) \ - SSL_CTX_ctrl((ctx),SSL_CTRL_OPTIONS,(op),NULL) -# define SSL_CTX_clear_options(ctx,op) \ - SSL_CTX_ctrl((ctx),SSL_CTRL_CLEAR_OPTIONS,(op),NULL) -# define SSL_CTX_get_options(ctx) \ - SSL_CTX_ctrl((ctx),SSL_CTRL_OPTIONS,0,NULL) -# define SSL_set_options(ssl,op) \ - SSL_ctrl((ssl),SSL_CTRL_OPTIONS,(op),NULL) -# define SSL_clear_options(ssl,op) \ - SSL_ctrl((ssl),SSL_CTRL_CLEAR_OPTIONS,(op),NULL) -# define SSL_get_options(ssl) \ - SSL_ctrl((ssl),SSL_CTRL_OPTIONS,0,NULL) - -# define SSL_CTX_set_mode(ctx,op) \ - SSL_CTX_ctrl((ctx),SSL_CTRL_MODE,(op),NULL) -# define SSL_CTX_clear_mode(ctx,op) \ - SSL_CTX_ctrl((ctx),SSL_CTRL_CLEAR_MODE,(op),NULL) -# define SSL_CTX_get_mode(ctx) \ - SSL_CTX_ctrl((ctx),SSL_CTRL_MODE,0,NULL) -# define SSL_clear_mode(ssl,op) \ - SSL_ctrl((ssl),SSL_CTRL_CLEAR_MODE,(op),NULL) -# define SSL_set_mode(ssl,op) \ - SSL_ctrl((ssl),SSL_CTRL_MODE,(op),NULL) -# define SSL_get_mode(ssl) \ - SSL_ctrl((ssl),SSL_CTRL_MODE,0,NULL) -# define SSL_set_mtu(ssl, mtu) \ - SSL_ctrl((ssl),SSL_CTRL_SET_MTU,(mtu),NULL) -# define DTLS_set_link_mtu(ssl, mtu) \ - SSL_ctrl((ssl),DTLS_CTRL_SET_LINK_MTU,(mtu),NULL) -# define DTLS_get_link_min_mtu(ssl) \ - SSL_ctrl((ssl),DTLS_CTRL_GET_LINK_MIN_MTU,0,NULL) - -# define SSL_get_secure_renegotiation_support(ssl) \ - SSL_ctrl((ssl), SSL_CTRL_GET_RI_SUPPORT, 0, NULL) - -# ifndef OPENSSL_NO_HEARTBEATS -# define SSL_heartbeat(ssl) \ - SSL_ctrl((ssl),SSL_CTRL_TLS_EXT_SEND_HEARTBEAT,0,NULL) -# endif - -# define SSL_CTX_set_cert_flags(ctx,op) \ - SSL_CTX_ctrl((ctx),SSL_CTRL_CERT_FLAGS,(op),NULL) -# define SSL_set_cert_flags(s,op) \ - SSL_ctrl((s),SSL_CTRL_CERT_FLAGS,(op),NULL) -# define SSL_CTX_clear_cert_flags(ctx,op) \ - SSL_CTX_ctrl((ctx),SSL_CTRL_CLEAR_CERT_FLAGS,(op),NULL) -# define SSL_clear_cert_flags(s,op) \ - SSL_ctrl((s),SSL_CTRL_CLEAR_CERT_FLAGS,(op),NULL) - -void SSL_CTX_set_msg_callback(SSL_CTX *ctx, - void (*cb) (int write_p, int version, - int content_type, const void *buf, - size_t len, SSL *ssl, void *arg)); -void SSL_set_msg_callback(SSL *ssl, - void (*cb) (int write_p, int version, - int content_type, const void *buf, - size_t len, SSL *ssl, void *arg)); -# define SSL_CTX_set_msg_callback_arg(ctx, arg) SSL_CTX_ctrl((ctx), SSL_CTRL_SET_MSG_CALLBACK_ARG, 0, (arg)) -# define SSL_set_msg_callback_arg(ssl, arg) SSL_ctrl((ssl), SSL_CTRL_SET_MSG_CALLBACK_ARG, 0, (arg)) - -# ifndef OPENSSL_NO_SRP - -# ifndef OPENSSL_NO_SSL_INTERN - -typedef struct srp_ctx_st { - /* param for all the callbacks */ - void *SRP_cb_arg; - /* set client Hello login callback */ - int (*TLS_ext_srp_username_callback) (SSL *, int *, void *); - /* set SRP N/g param callback for verification */ - int (*SRP_verify_param_callback) (SSL *, void *); - /* set SRP client passwd callback */ - char *(*SRP_give_srp_client_pwd_callback) (SSL *, void *); - char *login; - BIGNUM *N, *g, *s, *B, *A; - BIGNUM *a, *b, *v; - char *info; - int strength; - unsigned long srp_Mask; -} SRP_CTX; - -# endif - -/* see tls_srp.c */ -int SSL_SRP_CTX_init(SSL *s); -int SSL_CTX_SRP_CTX_init(SSL_CTX *ctx); -int SSL_SRP_CTX_free(SSL *ctx); -int SSL_CTX_SRP_CTX_free(SSL_CTX *ctx); -int SSL_srp_server_param_with_username(SSL *s, int *ad); -int SRP_generate_server_master_secret(SSL *s, unsigned char *master_key); -int SRP_Calc_A_param(SSL *s); -int SRP_generate_client_master_secret(SSL *s, unsigned char *master_key); - -# endif - -# if defined(OPENSSL_SYS_MSDOS) && !defined(OPENSSL_SYS_WIN32) -# define SSL_MAX_CERT_LIST_DEFAULT 1024*30 - /* 30k max cert list :-) */ -# else -# define SSL_MAX_CERT_LIST_DEFAULT 1024*100 - /* 100k max cert list :-) */ -# endif - -# define SSL_SESSION_CACHE_MAX_SIZE_DEFAULT (1024*20) - -/* - * This callback type is used inside SSL_CTX, SSL, and in the functions that - * set them. It is used to override the generation of SSL/TLS session IDs in - * a server. Return value should be zero on an error, non-zero to proceed. - * Also, callbacks should themselves check if the id they generate is unique - * otherwise the SSL handshake will fail with an error - callbacks can do - * this using the 'ssl' value they're passed by; - * SSL_has_matching_session_id(ssl, id, *id_len) The length value passed in - * is set at the maximum size the session ID can be. In SSLv2 this is 16 - * bytes, whereas SSLv3/TLSv1 it is 32 bytes. The callback can alter this - * length to be less if desired, but under SSLv2 session IDs are supposed to - * be fixed at 16 bytes so the id will be padded after the callback returns - * in this case. It is also an error for the callback to set the size to - * zero. - */ -typedef int (*GEN_SESSION_CB) (const SSL *ssl, unsigned char *id, - unsigned int *id_len); - -typedef struct ssl_comp_st SSL_COMP; - -# ifndef OPENSSL_NO_SSL_INTERN - -struct ssl_comp_st { - int id; - const char *name; -# ifndef OPENSSL_NO_COMP - COMP_METHOD *method; -# else - char *method; -# endif -}; - -DECLARE_STACK_OF(SSL_COMP) -DECLARE_LHASH_OF(SSL_SESSION); - -struct ssl_ctx_st { - const SSL_METHOD *method; - STACK_OF(SSL_CIPHER) *cipher_list; - /* same as above but sorted for lookup */ - STACK_OF(SSL_CIPHER) *cipher_list_by_id; - struct x509_store_st /* X509_STORE */ *cert_store; - LHASH_OF(SSL_SESSION) *sessions; - /* - * Most session-ids that will be cached, default is - * SSL_SESSION_CACHE_MAX_SIZE_DEFAULT. 0 is unlimited. - */ - unsigned long session_cache_size; - struct ssl_session_st *session_cache_head; - struct ssl_session_st *session_cache_tail; - /* - * This can have one of 2 values, ored together, SSL_SESS_CACHE_CLIENT, - * SSL_SESS_CACHE_SERVER, Default is SSL_SESSION_CACHE_SERVER, which - * means only SSL_accept which cache SSL_SESSIONS. - */ - int session_cache_mode; - /* - * If timeout is not 0, it is the default timeout value set when - * SSL_new() is called. This has been put in to make life easier to set - * things up - */ - long session_timeout; - /* - * If this callback is not null, it will be called each time a session id - * is added to the cache. If this function returns 1, it means that the - * callback will do a SSL_SESSION_free() when it has finished using it. - * Otherwise, on 0, it means the callback has finished with it. If - * remove_session_cb is not null, it will be called when a session-id is - * removed from the cache. After the call, OpenSSL will - * SSL_SESSION_free() it. - */ - int (*new_session_cb) (struct ssl_st *ssl, SSL_SESSION *sess); - void (*remove_session_cb) (struct ssl_ctx_st *ctx, SSL_SESSION *sess); - SSL_SESSION *(*get_session_cb) (struct ssl_st *ssl, - unsigned char *data, int len, int *copy); - struct { - int sess_connect; /* SSL new conn - started */ - int sess_connect_renegotiate; /* SSL reneg - requested */ - int sess_connect_good; /* SSL new conne/reneg - finished */ - int sess_accept; /* SSL new accept - started */ - int sess_accept_renegotiate; /* SSL reneg - requested */ - int sess_accept_good; /* SSL accept/reneg - finished */ - int sess_miss; /* session lookup misses */ - int sess_timeout; /* reuse attempt on timeouted session */ - int sess_cache_full; /* session removed due to full cache */ - int sess_hit; /* session reuse actually done */ - int sess_cb_hit; /* session-id that was not in the cache was - * passed back via the callback. This - * indicates that the application is - * supplying session-id's from other - * processes - spooky :-) */ - } stats; - - int references; - - /* if defined, these override the X509_verify_cert() calls */ - int (*app_verify_callback) (X509_STORE_CTX *, void *); - void *app_verify_arg; - /* - * before OpenSSL 0.9.7, 'app_verify_arg' was ignored - * ('app_verify_callback' was called with just one argument) - */ - - /* Default password callback. */ - pem_password_cb *default_passwd_callback; - - /* Default password callback user data. */ - void *default_passwd_callback_userdata; - - /* get client cert callback */ - int (*client_cert_cb) (SSL *ssl, X509 **x509, EVP_PKEY **pkey); - - /* cookie generate callback */ - int (*app_gen_cookie_cb) (SSL *ssl, unsigned char *cookie, - unsigned int *cookie_len); - - /* verify cookie callback */ - int (*app_verify_cookie_cb) (SSL *ssl, unsigned char *cookie, - unsigned int cookie_len); - - CRYPTO_EX_DATA ex_data; - - const EVP_MD *rsa_md5; /* For SSLv2 - name is 'ssl2-md5' */ - const EVP_MD *md5; /* For SSLv3/TLSv1 'ssl3-md5' */ - const EVP_MD *sha1; /* For SSLv3/TLSv1 'ssl3->sha1' */ - - STACK_OF(X509) *extra_certs; - STACK_OF(SSL_COMP) *comp_methods; /* stack of SSL_COMP, SSLv3/TLSv1 */ - - /* Default values used when no per-SSL value is defined follow */ - - /* used if SSL's info_callback is NULL */ - void (*info_callback) (const SSL *ssl, int type, int val); - - /* what we put in client cert requests */ - STACK_OF(X509_NAME) *client_CA; - - /* - * Default values to use in SSL structures follow (these are copied by - * SSL_new) - */ - - unsigned long options; - unsigned long mode; - long max_cert_list; - - struct cert_st /* CERT */ *cert; - int read_ahead; - - /* callback that allows applications to peek at protocol messages */ - void (*msg_callback) (int write_p, int version, int content_type, - const void *buf, size_t len, SSL *ssl, void *arg); - void *msg_callback_arg; - - int verify_mode; - unsigned int sid_ctx_length; - unsigned char sid_ctx[SSL_MAX_SID_CTX_LENGTH]; - /* called 'verify_callback' in the SSL */ - int (*default_verify_callback) (int ok, X509_STORE_CTX *ctx); - - /* Default generate session ID callback. */ - GEN_SESSION_CB generate_session_id; - - X509_VERIFY_PARAM *param; - -# if 0 - int purpose; /* Purpose setting */ - int trust; /* Trust setting */ -# endif - - int quiet_shutdown; - - /* - * Maximum amount of data to send in one fragment. actual record size can - * be more than this due to padding and MAC overheads. - */ - unsigned int max_send_fragment; - -# ifndef OPENSSL_NO_ENGINE - /* - * Engine to pass requests for client certs to - */ - ENGINE *client_cert_engine; -# endif - -# ifndef OPENSSL_NO_TLSEXT - /* TLS extensions servername callback */ - int (*tlsext_servername_callback) (SSL *, int *, void *); - void *tlsext_servername_arg; - /* RFC 4507 session ticket keys */ - unsigned char tlsext_tick_key_name[16]; - unsigned char tlsext_tick_hmac_key[16]; - unsigned char tlsext_tick_aes_key[16]; - /* Callback to support customisation of ticket key setting */ - int (*tlsext_ticket_key_cb) (SSL *ssl, - unsigned char *name, unsigned char *iv, - EVP_CIPHER_CTX *ectx, - HMAC_CTX *hctx, int enc); - - /* certificate status request info */ - /* Callback for status request */ - int (*tlsext_status_cb) (SSL *ssl, void *arg); - void *tlsext_status_arg; - - /* draft-rescorla-tls-opaque-prf-input-00.txt information */ - int (*tlsext_opaque_prf_input_callback) (SSL *, void *peerinput, - size_t len, void *arg); - void *tlsext_opaque_prf_input_callback_arg; -# endif - -# ifndef OPENSSL_NO_PSK - char *psk_identity_hint; - unsigned int (*psk_client_callback) (SSL *ssl, const char *hint, - char *identity, - unsigned int max_identity_len, - unsigned char *psk, - unsigned int max_psk_len); - unsigned int (*psk_server_callback) (SSL *ssl, const char *identity, - unsigned char *psk, - unsigned int max_psk_len); -# endif - -# ifndef OPENSSL_NO_BUF_FREELISTS -# define SSL_MAX_BUF_FREELIST_LEN_DEFAULT 32 - unsigned int freelist_max_len; - struct ssl3_buf_freelist_st *wbuf_freelist; - struct ssl3_buf_freelist_st *rbuf_freelist; -# endif -# ifndef OPENSSL_NO_SRP - SRP_CTX srp_ctx; /* ctx for SRP authentication */ -# endif - -# ifndef OPENSSL_NO_TLSEXT - -# ifndef OPENSSL_NO_NEXTPROTONEG - /* Next protocol negotiation information */ - /* (for experimental NPN extension). */ - - /* - * For a server, this contains a callback function by which the set of - * advertised protocols can be provided. - */ - int (*next_protos_advertised_cb) (SSL *s, const unsigned char **buf, - unsigned int *len, void *arg); - void *next_protos_advertised_cb_arg; - /* - * For a client, this contains a callback function that selects the next - * protocol from the list provided by the server. - */ - int (*next_proto_select_cb) (SSL *s, unsigned char **out, - unsigned char *outlen, - const unsigned char *in, - unsigned int inlen, void *arg); - void *next_proto_select_cb_arg; -# endif - /* SRTP profiles we are willing to do from RFC 5764 */ - STACK_OF(SRTP_PROTECTION_PROFILE) *srtp_profiles; - - /* - * ALPN information (we are in the process of transitioning from NPN to - * ALPN.) - */ - - /*- - * For a server, this contains a callback function that allows the - * server to select the protocol for the connection. - * out: on successful return, this must point to the raw protocol - * name (without the length prefix). - * outlen: on successful return, this contains the length of |*out|. - * in: points to the client's list of supported protocols in - * wire-format. - * inlen: the length of |in|. - */ - int (*alpn_select_cb) (SSL *s, - const unsigned char **out, - unsigned char *outlen, - const unsigned char *in, - unsigned int inlen, void *arg); - void *alpn_select_cb_arg; - - /* - * For a client, this contains the list of supported protocols in wire - * format. - */ - unsigned char *alpn_client_proto_list; - unsigned alpn_client_proto_list_len; - -# ifndef OPENSSL_NO_EC - /* EC extension values inherited by SSL structure */ - size_t tlsext_ecpointformatlist_length; - unsigned char *tlsext_ecpointformatlist; - size_t tlsext_ellipticcurvelist_length; - unsigned char *tlsext_ellipticcurvelist; -# endif /* OPENSSL_NO_EC */ -# endif -}; - -# endif - -# define SSL_SESS_CACHE_OFF 0x0000 -# define SSL_SESS_CACHE_CLIENT 0x0001 -# define SSL_SESS_CACHE_SERVER 0x0002 -# define SSL_SESS_CACHE_BOTH (SSL_SESS_CACHE_CLIENT|SSL_SESS_CACHE_SERVER) -# define SSL_SESS_CACHE_NO_AUTO_CLEAR 0x0080 -/* enough comments already ... see SSL_CTX_set_session_cache_mode(3) */ -# define SSL_SESS_CACHE_NO_INTERNAL_LOOKUP 0x0100 -# define SSL_SESS_CACHE_NO_INTERNAL_STORE 0x0200 -# define SSL_SESS_CACHE_NO_INTERNAL \ - (SSL_SESS_CACHE_NO_INTERNAL_LOOKUP|SSL_SESS_CACHE_NO_INTERNAL_STORE) - -LHASH_OF(SSL_SESSION) *SSL_CTX_sessions(SSL_CTX *ctx); -# define SSL_CTX_sess_number(ctx) \ - SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_NUMBER,0,NULL) -# define SSL_CTX_sess_connect(ctx) \ - SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_CONNECT,0,NULL) -# define SSL_CTX_sess_connect_good(ctx) \ - SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_CONNECT_GOOD,0,NULL) -# define SSL_CTX_sess_connect_renegotiate(ctx) \ - SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_CONNECT_RENEGOTIATE,0,NULL) -# define SSL_CTX_sess_accept(ctx) \ - SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_ACCEPT,0,NULL) -# define SSL_CTX_sess_accept_renegotiate(ctx) \ - SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_ACCEPT_RENEGOTIATE,0,NULL) -# define SSL_CTX_sess_accept_good(ctx) \ - SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_ACCEPT_GOOD,0,NULL) -# define SSL_CTX_sess_hits(ctx) \ - SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_HIT,0,NULL) -# define SSL_CTX_sess_cb_hits(ctx) \ - SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_CB_HIT,0,NULL) -# define SSL_CTX_sess_misses(ctx) \ - SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_MISSES,0,NULL) -# define SSL_CTX_sess_timeouts(ctx) \ - SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_TIMEOUTS,0,NULL) -# define SSL_CTX_sess_cache_full(ctx) \ - SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_CACHE_FULL,0,NULL) - -void SSL_CTX_sess_set_new_cb(SSL_CTX *ctx, - int (*new_session_cb) (struct ssl_st *ssl, - SSL_SESSION *sess)); -int (*SSL_CTX_sess_get_new_cb(SSL_CTX *ctx)) (struct ssl_st *ssl, - SSL_SESSION *sess); -void SSL_CTX_sess_set_remove_cb(SSL_CTX *ctx, - void (*remove_session_cb) (struct ssl_ctx_st - *ctx, - SSL_SESSION - *sess)); -void (*SSL_CTX_sess_get_remove_cb(SSL_CTX *ctx)) (struct ssl_ctx_st *ctx, - SSL_SESSION *sess); -void SSL_CTX_sess_set_get_cb(SSL_CTX *ctx, - SSL_SESSION *(*get_session_cb) (struct ssl_st - *ssl, - unsigned char - *data, int len, - int *copy)); -SSL_SESSION *(*SSL_CTX_sess_get_get_cb(SSL_CTX *ctx)) (struct ssl_st *ssl, - unsigned char *Data, - int len, int *copy); -void SSL_CTX_set_info_callback(SSL_CTX *ctx, - void (*cb) (const SSL *ssl, int type, - int val)); -void (*SSL_CTX_get_info_callback(SSL_CTX *ctx)) (const SSL *ssl, int type, - int val); -void SSL_CTX_set_client_cert_cb(SSL_CTX *ctx, - int (*client_cert_cb) (SSL *ssl, X509 **x509, - EVP_PKEY **pkey)); -int (*SSL_CTX_get_client_cert_cb(SSL_CTX *ctx)) (SSL *ssl, X509 **x509, - EVP_PKEY **pkey); -# ifndef OPENSSL_NO_ENGINE -int SSL_CTX_set_client_cert_engine(SSL_CTX *ctx, ENGINE *e); -# endif -void SSL_CTX_set_cookie_generate_cb(SSL_CTX *ctx, - int (*app_gen_cookie_cb) (SSL *ssl, - unsigned char - *cookie, - unsigned int - *cookie_len)); -void SSL_CTX_set_cookie_verify_cb(SSL_CTX *ctx, - int (*app_verify_cookie_cb) (SSL *ssl, - unsigned char - *cookie, - unsigned int - cookie_len)); -# ifndef OPENSSL_NO_NEXTPROTONEG -void SSL_CTX_set_next_protos_advertised_cb(SSL_CTX *s, - int (*cb) (SSL *ssl, - const unsigned char - **out, - unsigned int *outlen, - void *arg), void *arg); -void SSL_CTX_set_next_proto_select_cb(SSL_CTX *s, - int (*cb) (SSL *ssl, - unsigned char **out, - unsigned char *outlen, - const unsigned char *in, - unsigned int inlen, - void *arg), void *arg); -void SSL_get0_next_proto_negotiated(const SSL *s, const unsigned char **data, - unsigned *len); -# endif - -# ifndef OPENSSL_NO_TLSEXT -int SSL_select_next_proto(unsigned char **out, unsigned char *outlen, - const unsigned char *in, unsigned int inlen, - const unsigned char *client, - unsigned int client_len); -# endif - -# define OPENSSL_NPN_UNSUPPORTED 0 -# define OPENSSL_NPN_NEGOTIATED 1 -# define OPENSSL_NPN_NO_OVERLAP 2 - -int SSL_CTX_set_alpn_protos(SSL_CTX *ctx, const unsigned char *protos, - unsigned protos_len); -int SSL_set_alpn_protos(SSL *ssl, const unsigned char *protos, - unsigned protos_len); -void SSL_CTX_set_alpn_select_cb(SSL_CTX *ctx, - int (*cb) (SSL *ssl, - const unsigned char **out, - unsigned char *outlen, - const unsigned char *in, - unsigned int inlen, - void *arg), void *arg); -void SSL_get0_alpn_selected(const SSL *ssl, const unsigned char **data, - unsigned *len); - -# ifndef OPENSSL_NO_PSK -/* - * the maximum length of the buffer given to callbacks containing the - * resulting identity/psk - */ -# define PSK_MAX_IDENTITY_LEN 128 -# define PSK_MAX_PSK_LEN 256 -void SSL_CTX_set_psk_client_callback(SSL_CTX *ctx, - unsigned int (*psk_client_callback) (SSL - *ssl, - const - char - *hint, - char - *identity, - unsigned - int - max_identity_len, - unsigned - char - *psk, - unsigned - int - max_psk_len)); -void SSL_set_psk_client_callback(SSL *ssl, - unsigned int (*psk_client_callback) (SSL - *ssl, - const - char - *hint, - char - *identity, - unsigned - int - max_identity_len, - unsigned - char - *psk, - unsigned - int - max_psk_len)); -void SSL_CTX_set_psk_server_callback(SSL_CTX *ctx, - unsigned int (*psk_server_callback) (SSL - *ssl, - const - char - *identity, - unsigned - char - *psk, - unsigned - int - max_psk_len)); -void SSL_set_psk_server_callback(SSL *ssl, - unsigned int (*psk_server_callback) (SSL - *ssl, - const - char - *identity, - unsigned - char - *psk, - unsigned - int - max_psk_len)); -int SSL_CTX_use_psk_identity_hint(SSL_CTX *ctx, const char *identity_hint); -int SSL_use_psk_identity_hint(SSL *s, const char *identity_hint); -const char *SSL_get_psk_identity_hint(const SSL *s); -const char *SSL_get_psk_identity(const SSL *s); -# endif - -# ifndef OPENSSL_NO_TLSEXT -/* Register callbacks to handle custom TLS Extensions for client or server. */ - -int SSL_CTX_add_client_custom_ext(SSL_CTX *ctx, unsigned int ext_type, - custom_ext_add_cb add_cb, - custom_ext_free_cb free_cb, - void *add_arg, - custom_ext_parse_cb parse_cb, - void *parse_arg); - -int SSL_CTX_add_server_custom_ext(SSL_CTX *ctx, unsigned int ext_type, - custom_ext_add_cb add_cb, - custom_ext_free_cb free_cb, - void *add_arg, - custom_ext_parse_cb parse_cb, - void *parse_arg); - -int SSL_extension_supported(unsigned int ext_type); - -# endif - -# define SSL_NOTHING 1 -# define SSL_WRITING 2 -# define SSL_READING 3 -# define SSL_X509_LOOKUP 4 - -/* These will only be used when doing non-blocking IO */ -# define SSL_want_nothing(s) (SSL_want(s) == SSL_NOTHING) -# define SSL_want_read(s) (SSL_want(s) == SSL_READING) -# define SSL_want_write(s) (SSL_want(s) == SSL_WRITING) -# define SSL_want_x509_lookup(s) (SSL_want(s) == SSL_X509_LOOKUP) - -# define SSL_MAC_FLAG_READ_MAC_STREAM 1 -# define SSL_MAC_FLAG_WRITE_MAC_STREAM 2 - -# ifndef OPENSSL_NO_SSL_INTERN - -struct ssl_st { - /* - * protocol version (one of SSL2_VERSION, SSL3_VERSION, TLS1_VERSION, - * DTLS1_VERSION) - */ - int version; - /* SSL_ST_CONNECT or SSL_ST_ACCEPT */ - int type; - /* SSLv3 */ - const SSL_METHOD *method; - /* - * There are 2 BIO's even though they are normally both the same. This - * is so data can be read and written to different handlers - */ -# ifndef OPENSSL_NO_BIO - /* used by SSL_read */ - BIO *rbio; - /* used by SSL_write */ - BIO *wbio; - /* used during session-id reuse to concatenate messages */ - BIO *bbio; -# else - /* used by SSL_read */ - char *rbio; - /* used by SSL_write */ - char *wbio; - char *bbio; -# endif - /* - * This holds a variable that indicates what we were doing when a 0 or -1 - * is returned. This is needed for non-blocking IO so we know what - * request needs re-doing when in SSL_accept or SSL_connect - */ - int rwstate; - /* true when we are actually in SSL_accept() or SSL_connect() */ - int in_handshake; - int (*handshake_func) (SSL *); - /* - * Imagine that here's a boolean member "init" that is switched as soon - * as SSL_set_{accept/connect}_state is called for the first time, so - * that "state" and "handshake_func" are properly initialized. But as - * handshake_func is == 0 until then, we use this test instead of an - * "init" member. - */ - /* are we the server side? - mostly used by SSL_clear */ - int server; - /* - * Generate a new session or reuse an old one. - * NB: For servers, the 'new' session may actually be a previously - * cached session or even the previous session unless - * SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION is set - */ - int new_session; - /* don't send shutdown packets */ - int quiet_shutdown; - /* we have shut things down, 0x01 sent, 0x02 for received */ - int shutdown; - /* where we are */ - int state; - /* where we are when reading */ - int rstate; - BUF_MEM *init_buf; /* buffer used during init */ - void *init_msg; /* pointer to handshake message body, set by - * ssl3_get_message() */ - int init_num; /* amount read/written */ - int init_off; /* amount read/written */ - /* used internally to point at a raw packet */ - unsigned char *packet; - unsigned int packet_length; - struct ssl2_state_st *s2; /* SSLv2 variables */ - struct ssl3_state_st *s3; /* SSLv3 variables */ - struct dtls1_state_st *d1; /* DTLSv1 variables */ - int read_ahead; /* Read as many input bytes as possible (for - * non-blocking reads) */ - /* callback that allows applications to peek at protocol messages */ - void (*msg_callback) (int write_p, int version, int content_type, - const void *buf, size_t len, SSL *ssl, void *arg); - void *msg_callback_arg; - int hit; /* reusing a previous session */ - X509_VERIFY_PARAM *param; -# if 0 - int purpose; /* Purpose setting */ - int trust; /* Trust setting */ -# endif - /* crypto */ - STACK_OF(SSL_CIPHER) *cipher_list; - STACK_OF(SSL_CIPHER) *cipher_list_by_id; - /* - * These are the ones being used, the ones in SSL_SESSION are the ones to - * be 'copied' into these ones - */ - int mac_flags; - EVP_CIPHER_CTX *enc_read_ctx; /* cryptographic state */ - EVP_MD_CTX *read_hash; /* used for mac generation */ -# ifndef OPENSSL_NO_COMP - COMP_CTX *expand; /* uncompress */ -# else - char *expand; -# endif - EVP_CIPHER_CTX *enc_write_ctx; /* cryptographic state */ - EVP_MD_CTX *write_hash; /* used for mac generation */ -# ifndef OPENSSL_NO_COMP - COMP_CTX *compress; /* compression */ -# else - char *compress; -# endif - /* session info */ - /* client cert? */ - /* This is used to hold the server certificate used */ - struct cert_st /* CERT */ *cert; - /* - * the session_id_context is used to ensure sessions are only reused in - * the appropriate context - */ - unsigned int sid_ctx_length; - unsigned char sid_ctx[SSL_MAX_SID_CTX_LENGTH]; - /* This can also be in the session once a session is established */ - SSL_SESSION *session; - /* Default generate session ID callback. */ - GEN_SESSION_CB generate_session_id; - /* Used in SSL2 and SSL3 */ - /* - * 0 don't care about verify failure. - * 1 fail if verify fails - */ - int verify_mode; - /* fail if callback returns 0 */ - int (*verify_callback) (int ok, X509_STORE_CTX *ctx); - /* optional informational callback */ - void (*info_callback) (const SSL *ssl, int type, int val); - /* error bytes to be written */ - int error; - /* actual code */ - int error_code; -# ifndef OPENSSL_NO_KRB5 - /* Kerberos 5 context */ - KSSL_CTX *kssl_ctx; -# endif /* OPENSSL_NO_KRB5 */ -# ifndef OPENSSL_NO_PSK - unsigned int (*psk_client_callback) (SSL *ssl, const char *hint, - char *identity, - unsigned int max_identity_len, - unsigned char *psk, - unsigned int max_psk_len); - unsigned int (*psk_server_callback) (SSL *ssl, const char *identity, - unsigned char *psk, - unsigned int max_psk_len); -# endif - SSL_CTX *ctx; - /* - * set this flag to 1 and a sleep(1) is put into all SSL_read() and - * SSL_write() calls, good for nbio debuging :-) - */ - int debug; - /* extra application data */ - long verify_result; - CRYPTO_EX_DATA ex_data; - /* for server side, keep the list of CA_dn we can use */ - STACK_OF(X509_NAME) *client_CA; - int references; - /* protocol behaviour */ - unsigned long options; - /* API behaviour */ - unsigned long mode; - long max_cert_list; - int first_packet; - /* what was passed, used for SSLv3/TLS rollback check */ - int client_version; - unsigned int max_send_fragment; -# ifndef OPENSSL_NO_TLSEXT - /* TLS extension debug callback */ - void (*tlsext_debug_cb) (SSL *s, int client_server, int type, - unsigned char *data, int len, void *arg); - void *tlsext_debug_arg; - char *tlsext_hostname; - /*- - * no further mod of servername - * 0 : call the servername extension callback. - * 1 : prepare 2, allow last ack just after in server callback. - * 2 : don't call servername callback, no ack in server hello - */ - int servername_done; - /* certificate status request info */ - /* Status type or -1 if no status type */ - int tlsext_status_type; - /* Expect OCSP CertificateStatus message */ - int tlsext_status_expected; - /* OCSP status request only */ - STACK_OF(OCSP_RESPID) *tlsext_ocsp_ids; - X509_EXTENSIONS *tlsext_ocsp_exts; - /* OCSP response received or to be sent */ - unsigned char *tlsext_ocsp_resp; - int tlsext_ocsp_resplen; - /* RFC4507 session ticket expected to be received or sent */ - int tlsext_ticket_expected; -# ifndef OPENSSL_NO_EC - size_t tlsext_ecpointformatlist_length; - /* our list */ - unsigned char *tlsext_ecpointformatlist; - size_t tlsext_ellipticcurvelist_length; - /* our list */ - unsigned char *tlsext_ellipticcurvelist; -# endif /* OPENSSL_NO_EC */ - /* - * draft-rescorla-tls-opaque-prf-input-00.txt information to be used for - * handshakes - */ - void *tlsext_opaque_prf_input; - size_t tlsext_opaque_prf_input_len; - /* TLS Session Ticket extension override */ - TLS_SESSION_TICKET_EXT *tlsext_session_ticket; - /* TLS Session Ticket extension callback */ - tls_session_ticket_ext_cb_fn tls_session_ticket_ext_cb; - void *tls_session_ticket_ext_cb_arg; - /* TLS pre-shared secret session resumption */ - tls_session_secret_cb_fn tls_session_secret_cb; - void *tls_session_secret_cb_arg; - SSL_CTX *initial_ctx; /* initial ctx, used to store sessions */ -# ifndef OPENSSL_NO_NEXTPROTONEG - /* - * Next protocol negotiation. For the client, this is the protocol that - * we sent in NextProtocol and is set when handling ServerHello - * extensions. For a server, this is the client's selected_protocol from - * NextProtocol and is set when handling the NextProtocol message, before - * the Finished message. - */ - unsigned char *next_proto_negotiated; - unsigned char next_proto_negotiated_len; -# endif -# define session_ctx initial_ctx - /* What we'll do */ - STACK_OF(SRTP_PROTECTION_PROFILE) *srtp_profiles; - /* What's been chosen */ - SRTP_PROTECTION_PROFILE *srtp_profile; - /*- - * Is use of the Heartbeat extension negotiated? - * 0: disabled - * 1: enabled - * 2: enabled, but not allowed to send Requests - */ - unsigned int tlsext_heartbeat; - /* Indicates if a HeartbeatRequest is in flight */ - unsigned int tlsext_hb_pending; - /* HeartbeatRequest sequence number */ - unsigned int tlsext_hb_seq; -# else -# define session_ctx ctx -# endif /* OPENSSL_NO_TLSEXT */ - /*- - * 1 if we are renegotiating. - * 2 if we are a server and are inside a handshake - * (i.e. not just sending a HelloRequest) - */ - int renegotiate; -# ifndef OPENSSL_NO_SRP - /* ctx for SRP authentication */ - SRP_CTX srp_ctx; -# endif -# ifndef OPENSSL_NO_TLSEXT - /* - * For a client, this contains the list of supported protocols in wire - * format. - */ - unsigned char *alpn_client_proto_list; - unsigned alpn_client_proto_list_len; -# endif /* OPENSSL_NO_TLSEXT */ -}; - -# endif - -#ifdef __cplusplus -} -#endif - -# include -# include -# include /* This is mostly sslv3 with a few tweaks */ -# include /* Datagram TLS */ -# include -# include /* Support for the use_srtp extension */ - -#ifdef __cplusplus -extern "C" { -#endif - -/* compatibility */ -# define SSL_set_app_data(s,arg) (SSL_set_ex_data(s,0,(char *)arg)) -# define SSL_get_app_data(s) (SSL_get_ex_data(s,0)) -# define SSL_SESSION_set_app_data(s,a) (SSL_SESSION_set_ex_data(s,0,(char *)a)) -# define SSL_SESSION_get_app_data(s) (SSL_SESSION_get_ex_data(s,0)) -# define SSL_CTX_get_app_data(ctx) (SSL_CTX_get_ex_data(ctx,0)) -# define SSL_CTX_set_app_data(ctx,arg) (SSL_CTX_set_ex_data(ctx,0,(char *)arg)) - -/* - * The following are the possible values for ssl->state are are used to - * indicate where we are up to in the SSL connection establishment. The - * macros that follow are about the only things you should need to use and - * even then, only when using non-blocking IO. It can also be useful to work - * out where you were when the connection failed - */ - -# define SSL_ST_CONNECT 0x1000 -# define SSL_ST_ACCEPT 0x2000 -# define SSL_ST_MASK 0x0FFF -# define SSL_ST_INIT (SSL_ST_CONNECT|SSL_ST_ACCEPT) -# define SSL_ST_BEFORE 0x4000 -# define SSL_ST_OK 0x03 -# define SSL_ST_RENEGOTIATE (0x04|SSL_ST_INIT) - -# define SSL_CB_LOOP 0x01 -# define SSL_CB_EXIT 0x02 -# define SSL_CB_READ 0x04 -# define SSL_CB_WRITE 0x08 -# define SSL_CB_ALERT 0x4000/* used in callback */ -# define SSL_CB_READ_ALERT (SSL_CB_ALERT|SSL_CB_READ) -# define SSL_CB_WRITE_ALERT (SSL_CB_ALERT|SSL_CB_WRITE) -# define SSL_CB_ACCEPT_LOOP (SSL_ST_ACCEPT|SSL_CB_LOOP) -# define SSL_CB_ACCEPT_EXIT (SSL_ST_ACCEPT|SSL_CB_EXIT) -# define SSL_CB_CONNECT_LOOP (SSL_ST_CONNECT|SSL_CB_LOOP) -# define SSL_CB_CONNECT_EXIT (SSL_ST_CONNECT|SSL_CB_EXIT) -# define SSL_CB_HANDSHAKE_START 0x10 -# define SSL_CB_HANDSHAKE_DONE 0x20 - -/* Is the SSL_connection established? */ -# define SSL_get_state(a) SSL_state(a) -# define SSL_is_init_finished(a) (SSL_state(a) == SSL_ST_OK) -# define SSL_in_init(a) (SSL_state(a)&SSL_ST_INIT) -# define SSL_in_before(a) (SSL_state(a)&SSL_ST_BEFORE) -# define SSL_in_connect_init(a) (SSL_state(a)&SSL_ST_CONNECT) -# define SSL_in_accept_init(a) (SSL_state(a)&SSL_ST_ACCEPT) - -/* - * The following 2 states are kept in ssl->rstate when reads fail, you should - * not need these - */ -# define SSL_ST_READ_HEADER 0xF0 -# define SSL_ST_READ_BODY 0xF1 -# define SSL_ST_READ_DONE 0xF2 - -/*- - * Obtain latest Finished message - * -- that we sent (SSL_get_finished) - * -- that we expected from peer (SSL_get_peer_finished). - * Returns length (0 == no Finished so far), copies up to 'count' bytes. - */ -size_t SSL_get_finished(const SSL *s, void *buf, size_t count); -size_t SSL_get_peer_finished(const SSL *s, void *buf, size_t count); - -/* - * use either SSL_VERIFY_NONE or SSL_VERIFY_PEER, the last 2 options are - * 'ored' with SSL_VERIFY_PEER if they are desired - */ -# define SSL_VERIFY_NONE 0x00 -# define SSL_VERIFY_PEER 0x01 -# define SSL_VERIFY_FAIL_IF_NO_PEER_CERT 0x02 -# define SSL_VERIFY_CLIENT_ONCE 0x04 - -# define OpenSSL_add_ssl_algorithms() SSL_library_init() -# define SSLeay_add_ssl_algorithms() SSL_library_init() - -/* this is for backward compatibility */ -# if 0 /* NEW_SSLEAY */ -# define SSL_CTX_set_default_verify(a,b,c) SSL_CTX_set_verify(a,b,c) -# define SSL_set_pref_cipher(c,n) SSL_set_cipher_list(c,n) -# define SSL_add_session(a,b) SSL_CTX_add_session((a),(b)) -# define SSL_remove_session(a,b) SSL_CTX_remove_session((a),(b)) -# define SSL_flush_sessions(a,b) SSL_CTX_flush_sessions((a),(b)) -# endif -/* More backward compatibility */ -# define SSL_get_cipher(s) \ - SSL_CIPHER_get_name(SSL_get_current_cipher(s)) -# define SSL_get_cipher_bits(s,np) \ - SSL_CIPHER_get_bits(SSL_get_current_cipher(s),np) -# define SSL_get_cipher_version(s) \ - SSL_CIPHER_get_version(SSL_get_current_cipher(s)) -# define SSL_get_cipher_name(s) \ - SSL_CIPHER_get_name(SSL_get_current_cipher(s)) -# define SSL_get_time(a) SSL_SESSION_get_time(a) -# define SSL_set_time(a,b) SSL_SESSION_set_time((a),(b)) -# define SSL_get_timeout(a) SSL_SESSION_get_timeout(a) -# define SSL_set_timeout(a,b) SSL_SESSION_set_timeout((a),(b)) - -# define d2i_SSL_SESSION_bio(bp,s_id) ASN1_d2i_bio_of(SSL_SESSION,SSL_SESSION_new,d2i_SSL_SESSION,bp,s_id) -# define i2d_SSL_SESSION_bio(bp,s_id) ASN1_i2d_bio_of(SSL_SESSION,i2d_SSL_SESSION,bp,s_id) - -DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION) -# define SSL_AD_REASON_OFFSET 1000/* offset to get SSL_R_... value - * from SSL_AD_... */ -/* These alert types are for SSLv3 and TLSv1 */ -# define SSL_AD_CLOSE_NOTIFY SSL3_AD_CLOSE_NOTIFY -/* fatal */ -# define SSL_AD_UNEXPECTED_MESSAGE SSL3_AD_UNEXPECTED_MESSAGE -/* fatal */ -# define SSL_AD_BAD_RECORD_MAC SSL3_AD_BAD_RECORD_MAC -# define SSL_AD_DECRYPTION_FAILED TLS1_AD_DECRYPTION_FAILED -# define SSL_AD_RECORD_OVERFLOW TLS1_AD_RECORD_OVERFLOW -/* fatal */ -# define SSL_AD_DECOMPRESSION_FAILURE SSL3_AD_DECOMPRESSION_FAILURE -/* fatal */ -# define SSL_AD_HANDSHAKE_FAILURE SSL3_AD_HANDSHAKE_FAILURE -/* Not for TLS */ -# define SSL_AD_NO_CERTIFICATE SSL3_AD_NO_CERTIFICATE -# define SSL_AD_BAD_CERTIFICATE SSL3_AD_BAD_CERTIFICATE -# define SSL_AD_UNSUPPORTED_CERTIFICATE SSL3_AD_UNSUPPORTED_CERTIFICATE -# define SSL_AD_CERTIFICATE_REVOKED SSL3_AD_CERTIFICATE_REVOKED -# define SSL_AD_CERTIFICATE_EXPIRED SSL3_AD_CERTIFICATE_EXPIRED -# define SSL_AD_CERTIFICATE_UNKNOWN SSL3_AD_CERTIFICATE_UNKNOWN -/* fatal */ -# define SSL_AD_ILLEGAL_PARAMETER SSL3_AD_ILLEGAL_PARAMETER -/* fatal */ -# define SSL_AD_UNKNOWN_CA TLS1_AD_UNKNOWN_CA -/* fatal */ -# define SSL_AD_ACCESS_DENIED TLS1_AD_ACCESS_DENIED -/* fatal */ -# define SSL_AD_DECODE_ERROR TLS1_AD_DECODE_ERROR -# define SSL_AD_DECRYPT_ERROR TLS1_AD_DECRYPT_ERROR -/* fatal */ -# define SSL_AD_EXPORT_RESTRICTION TLS1_AD_EXPORT_RESTRICTION -/* fatal */ -# define SSL_AD_PROTOCOL_VERSION TLS1_AD_PROTOCOL_VERSION -/* fatal */ -# define SSL_AD_INSUFFICIENT_SECURITY TLS1_AD_INSUFFICIENT_SECURITY -/* fatal */ -# define SSL_AD_INTERNAL_ERROR TLS1_AD_INTERNAL_ERROR -# define SSL_AD_USER_CANCELLED TLS1_AD_USER_CANCELLED -# define SSL_AD_NO_RENEGOTIATION TLS1_AD_NO_RENEGOTIATION -# define SSL_AD_UNSUPPORTED_EXTENSION TLS1_AD_UNSUPPORTED_EXTENSION -# define SSL_AD_CERTIFICATE_UNOBTAINABLE TLS1_AD_CERTIFICATE_UNOBTAINABLE -# define SSL_AD_UNRECOGNIZED_NAME TLS1_AD_UNRECOGNIZED_NAME -# define SSL_AD_BAD_CERTIFICATE_STATUS_RESPONSE TLS1_AD_BAD_CERTIFICATE_STATUS_RESPONSE -# define SSL_AD_BAD_CERTIFICATE_HASH_VALUE TLS1_AD_BAD_CERTIFICATE_HASH_VALUE -/* fatal */ -# define SSL_AD_UNKNOWN_PSK_IDENTITY TLS1_AD_UNKNOWN_PSK_IDENTITY -/* fatal */ -# define SSL_AD_INAPPROPRIATE_FALLBACK TLS1_AD_INAPPROPRIATE_FALLBACK -# define SSL_ERROR_NONE 0 -# define SSL_ERROR_SSL 1 -# define SSL_ERROR_WANT_READ 2 -# define SSL_ERROR_WANT_WRITE 3 -# define SSL_ERROR_WANT_X509_LOOKUP 4 -# define SSL_ERROR_SYSCALL 5/* look at error stack/return - * value/errno */ -# define SSL_ERROR_ZERO_RETURN 6 -# define SSL_ERROR_WANT_CONNECT 7 -# define SSL_ERROR_WANT_ACCEPT 8 -# define SSL_CTRL_NEED_TMP_RSA 1 -# define SSL_CTRL_SET_TMP_RSA 2 -# define SSL_CTRL_SET_TMP_DH 3 -# define SSL_CTRL_SET_TMP_ECDH 4 -# define SSL_CTRL_SET_TMP_RSA_CB 5 -# define SSL_CTRL_SET_TMP_DH_CB 6 -# define SSL_CTRL_SET_TMP_ECDH_CB 7 -# define SSL_CTRL_GET_SESSION_REUSED 8 -# define SSL_CTRL_GET_CLIENT_CERT_REQUEST 9 -# define SSL_CTRL_GET_NUM_RENEGOTIATIONS 10 -# define SSL_CTRL_CLEAR_NUM_RENEGOTIATIONS 11 -# define SSL_CTRL_GET_TOTAL_RENEGOTIATIONS 12 -# define SSL_CTRL_GET_FLAGS 13 -# define SSL_CTRL_EXTRA_CHAIN_CERT 14 -# define SSL_CTRL_SET_MSG_CALLBACK 15 -# define SSL_CTRL_SET_MSG_CALLBACK_ARG 16 -/* only applies to datagram connections */ -# define SSL_CTRL_SET_MTU 17 -/* Stats */ -# define SSL_CTRL_SESS_NUMBER 20 -# define SSL_CTRL_SESS_CONNECT 21 -# define SSL_CTRL_SESS_CONNECT_GOOD 22 -# define SSL_CTRL_SESS_CONNECT_RENEGOTIATE 23 -# define SSL_CTRL_SESS_ACCEPT 24 -# define SSL_CTRL_SESS_ACCEPT_GOOD 25 -# define SSL_CTRL_SESS_ACCEPT_RENEGOTIATE 26 -# define SSL_CTRL_SESS_HIT 27 -# define SSL_CTRL_SESS_CB_HIT 28 -# define SSL_CTRL_SESS_MISSES 29 -# define SSL_CTRL_SESS_TIMEOUTS 30 -# define SSL_CTRL_SESS_CACHE_FULL 31 -# define SSL_CTRL_OPTIONS 32 -# define SSL_CTRL_MODE 33 -# define SSL_CTRL_GET_READ_AHEAD 40 -# define SSL_CTRL_SET_READ_AHEAD 41 -# define SSL_CTRL_SET_SESS_CACHE_SIZE 42 -# define SSL_CTRL_GET_SESS_CACHE_SIZE 43 -# define SSL_CTRL_SET_SESS_CACHE_MODE 44 -# define SSL_CTRL_GET_SESS_CACHE_MODE 45 -# define SSL_CTRL_GET_MAX_CERT_LIST 50 -# define SSL_CTRL_SET_MAX_CERT_LIST 51 -# define SSL_CTRL_SET_MAX_SEND_FRAGMENT 52 -/* see tls1.h for macros based on these */ -# ifndef OPENSSL_NO_TLSEXT -# define SSL_CTRL_SET_TLSEXT_SERVERNAME_CB 53 -# define SSL_CTRL_SET_TLSEXT_SERVERNAME_ARG 54 -# define SSL_CTRL_SET_TLSEXT_HOSTNAME 55 -# define SSL_CTRL_SET_TLSEXT_DEBUG_CB 56 -# define SSL_CTRL_SET_TLSEXT_DEBUG_ARG 57 -# define SSL_CTRL_GET_TLSEXT_TICKET_KEYS 58 -# define SSL_CTRL_SET_TLSEXT_TICKET_KEYS 59 -# define SSL_CTRL_SET_TLSEXT_OPAQUE_PRF_INPUT 60 -# define SSL_CTRL_SET_TLSEXT_OPAQUE_PRF_INPUT_CB 61 -# define SSL_CTRL_SET_TLSEXT_OPAQUE_PRF_INPUT_CB_ARG 62 -# define SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB 63 -# define SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB_ARG 64 -# define SSL_CTRL_SET_TLSEXT_STATUS_REQ_TYPE 65 -# define SSL_CTRL_GET_TLSEXT_STATUS_REQ_EXTS 66 -# define SSL_CTRL_SET_TLSEXT_STATUS_REQ_EXTS 67 -# define SSL_CTRL_GET_TLSEXT_STATUS_REQ_IDS 68 -# define SSL_CTRL_SET_TLSEXT_STATUS_REQ_IDS 69 -# define SSL_CTRL_GET_TLSEXT_STATUS_REQ_OCSP_RESP 70 -# define SSL_CTRL_SET_TLSEXT_STATUS_REQ_OCSP_RESP 71 -# define SSL_CTRL_SET_TLSEXT_TICKET_KEY_CB 72 -# define SSL_CTRL_SET_TLS_EXT_SRP_USERNAME_CB 75 -# define SSL_CTRL_SET_SRP_VERIFY_PARAM_CB 76 -# define SSL_CTRL_SET_SRP_GIVE_CLIENT_PWD_CB 77 -# define SSL_CTRL_SET_SRP_ARG 78 -# define SSL_CTRL_SET_TLS_EXT_SRP_USERNAME 79 -# define SSL_CTRL_SET_TLS_EXT_SRP_STRENGTH 80 -# define SSL_CTRL_SET_TLS_EXT_SRP_PASSWORD 81 -# ifndef OPENSSL_NO_HEARTBEATS -# define SSL_CTRL_TLS_EXT_SEND_HEARTBEAT 85 -# define SSL_CTRL_GET_TLS_EXT_HEARTBEAT_PENDING 86 -# define SSL_CTRL_SET_TLS_EXT_HEARTBEAT_NO_REQUESTS 87 -# endif -# endif /* OPENSSL_NO_TLSEXT */ -# define DTLS_CTRL_GET_TIMEOUT 73 -# define DTLS_CTRL_HANDLE_TIMEOUT 74 -# define DTLS_CTRL_LISTEN 75 -# define SSL_CTRL_GET_RI_SUPPORT 76 -# define SSL_CTRL_CLEAR_OPTIONS 77 -# define SSL_CTRL_CLEAR_MODE 78 -# define SSL_CTRL_GET_EXTRA_CHAIN_CERTS 82 -# define SSL_CTRL_CLEAR_EXTRA_CHAIN_CERTS 83 -# define SSL_CTRL_CHAIN 88 -# define SSL_CTRL_CHAIN_CERT 89 -# define SSL_CTRL_GET_CURVES 90 -# define SSL_CTRL_SET_CURVES 91 -# define SSL_CTRL_SET_CURVES_LIST 92 -# define SSL_CTRL_GET_SHARED_CURVE 93 -# define SSL_CTRL_SET_ECDH_AUTO 94 -# define SSL_CTRL_SET_SIGALGS 97 -# define SSL_CTRL_SET_SIGALGS_LIST 98 -# define SSL_CTRL_CERT_FLAGS 99 -# define SSL_CTRL_CLEAR_CERT_FLAGS 100 -# define SSL_CTRL_SET_CLIENT_SIGALGS 101 -# define SSL_CTRL_SET_CLIENT_SIGALGS_LIST 102 -# define SSL_CTRL_GET_CLIENT_CERT_TYPES 103 -# define SSL_CTRL_SET_CLIENT_CERT_TYPES 104 -# define SSL_CTRL_BUILD_CERT_CHAIN 105 -# define SSL_CTRL_SET_VERIFY_CERT_STORE 106 -# define SSL_CTRL_SET_CHAIN_CERT_STORE 107 -# define SSL_CTRL_GET_PEER_SIGNATURE_NID 108 -# define SSL_CTRL_GET_SERVER_TMP_KEY 109 -# define SSL_CTRL_GET_RAW_CIPHERLIST 110 -# define SSL_CTRL_GET_EC_POINT_FORMATS 111 -# define SSL_CTRL_GET_CHAIN_CERTS 115 -# define SSL_CTRL_SELECT_CURRENT_CERT 116 -# define SSL_CTRL_SET_CURRENT_CERT 117 -# define SSL_CTRL_CHECK_PROTO_VERSION 119 -# define DTLS_CTRL_SET_LINK_MTU 120 -# define DTLS_CTRL_GET_LINK_MIN_MTU 121 -# define SSL_CERT_SET_FIRST 1 -# define SSL_CERT_SET_NEXT 2 -# define SSL_CERT_SET_SERVER 3 -# define DTLSv1_get_timeout(ssl, arg) \ - SSL_ctrl(ssl,DTLS_CTRL_GET_TIMEOUT,0, (void *)arg) -# define DTLSv1_handle_timeout(ssl) \ - SSL_ctrl(ssl,DTLS_CTRL_HANDLE_TIMEOUT,0, NULL) -# define DTLSv1_listen(ssl, peer) \ - SSL_ctrl(ssl,DTLS_CTRL_LISTEN,0, (void *)peer) -# define SSL_session_reused(ssl) \ - SSL_ctrl((ssl),SSL_CTRL_GET_SESSION_REUSED,0,NULL) -# define SSL_num_renegotiations(ssl) \ - SSL_ctrl((ssl),SSL_CTRL_GET_NUM_RENEGOTIATIONS,0,NULL) -# define SSL_clear_num_renegotiations(ssl) \ - SSL_ctrl((ssl),SSL_CTRL_CLEAR_NUM_RENEGOTIATIONS,0,NULL) -# define SSL_total_renegotiations(ssl) \ - SSL_ctrl((ssl),SSL_CTRL_GET_TOTAL_RENEGOTIATIONS,0,NULL) -# define SSL_CTX_need_tmp_RSA(ctx) \ - SSL_CTX_ctrl(ctx,SSL_CTRL_NEED_TMP_RSA,0,NULL) -# define SSL_CTX_set_tmp_rsa(ctx,rsa) \ - SSL_CTX_ctrl(ctx,SSL_CTRL_SET_TMP_RSA,0,(char *)rsa) -# define SSL_CTX_set_tmp_dh(ctx,dh) \ - SSL_CTX_ctrl(ctx,SSL_CTRL_SET_TMP_DH,0,(char *)dh) -# define SSL_CTX_set_tmp_ecdh(ctx,ecdh) \ - SSL_CTX_ctrl(ctx,SSL_CTRL_SET_TMP_ECDH,0,(char *)ecdh) -# define SSL_need_tmp_RSA(ssl) \ - SSL_ctrl(ssl,SSL_CTRL_NEED_TMP_RSA,0,NULL) -# define SSL_set_tmp_rsa(ssl,rsa) \ - SSL_ctrl(ssl,SSL_CTRL_SET_TMP_RSA,0,(char *)rsa) -# define SSL_set_tmp_dh(ssl,dh) \ - SSL_ctrl(ssl,SSL_CTRL_SET_TMP_DH,0,(char *)dh) -# define SSL_set_tmp_ecdh(ssl,ecdh) \ - SSL_ctrl(ssl,SSL_CTRL_SET_TMP_ECDH,0,(char *)ecdh) -# define SSL_CTX_add_extra_chain_cert(ctx,x509) \ - SSL_CTX_ctrl(ctx,SSL_CTRL_EXTRA_CHAIN_CERT,0,(char *)x509) -# define SSL_CTX_get_extra_chain_certs(ctx,px509) \ - SSL_CTX_ctrl(ctx,SSL_CTRL_GET_EXTRA_CHAIN_CERTS,0,px509) -# define SSL_CTX_get_extra_chain_certs_only(ctx,px509) \ - SSL_CTX_ctrl(ctx,SSL_CTRL_GET_EXTRA_CHAIN_CERTS,1,px509) -# define SSL_CTX_clear_extra_chain_certs(ctx) \ - SSL_CTX_ctrl(ctx,SSL_CTRL_CLEAR_EXTRA_CHAIN_CERTS,0,NULL) -# define SSL_CTX_set0_chain(ctx,sk) \ - SSL_CTX_ctrl(ctx,SSL_CTRL_CHAIN,0,(char *)sk) -# define SSL_CTX_set1_chain(ctx,sk) \ - SSL_CTX_ctrl(ctx,SSL_CTRL_CHAIN,1,(char *)sk) -# define SSL_CTX_add0_chain_cert(ctx,x509) \ - SSL_CTX_ctrl(ctx,SSL_CTRL_CHAIN_CERT,0,(char *)x509) -# define SSL_CTX_add1_chain_cert(ctx,x509) \ - SSL_CTX_ctrl(ctx,SSL_CTRL_CHAIN_CERT,1,(char *)x509) -# define SSL_CTX_get0_chain_certs(ctx,px509) \ - SSL_CTX_ctrl(ctx,SSL_CTRL_GET_CHAIN_CERTS,0,px509) -# define SSL_CTX_clear_chain_certs(ctx) \ - SSL_CTX_set0_chain(ctx,NULL) -# define SSL_CTX_build_cert_chain(ctx, flags) \ - SSL_CTX_ctrl(ctx,SSL_CTRL_BUILD_CERT_CHAIN, flags, NULL) -# define SSL_CTX_select_current_cert(ctx,x509) \ - SSL_CTX_ctrl(ctx,SSL_CTRL_SELECT_CURRENT_CERT,0,(char *)x509) -# define SSL_CTX_set_current_cert(ctx, op) \ - SSL_CTX_ctrl(ctx,SSL_CTRL_SET_CURRENT_CERT, op, NULL) -# define SSL_CTX_set0_verify_cert_store(ctx,st) \ - SSL_CTX_ctrl(ctx,SSL_CTRL_SET_VERIFY_CERT_STORE,0,(char *)st) -# define SSL_CTX_set1_verify_cert_store(ctx,st) \ - SSL_CTX_ctrl(ctx,SSL_CTRL_SET_VERIFY_CERT_STORE,1,(char *)st) -# define SSL_CTX_set0_chain_cert_store(ctx,st) \ - SSL_CTX_ctrl(ctx,SSL_CTRL_SET_CHAIN_CERT_STORE,0,(char *)st) -# define SSL_CTX_set1_chain_cert_store(ctx,st) \ - SSL_CTX_ctrl(ctx,SSL_CTRL_SET_CHAIN_CERT_STORE,1,(char *)st) -# define SSL_set0_chain(ctx,sk) \ - SSL_ctrl(ctx,SSL_CTRL_CHAIN,0,(char *)sk) -# define SSL_set1_chain(ctx,sk) \ - SSL_ctrl(ctx,SSL_CTRL_CHAIN,1,(char *)sk) -# define SSL_add0_chain_cert(ctx,x509) \ - SSL_ctrl(ctx,SSL_CTRL_CHAIN_CERT,0,(char *)x509) -# define SSL_add1_chain_cert(ctx,x509) \ - SSL_ctrl(ctx,SSL_CTRL_CHAIN_CERT,1,(char *)x509) -# define SSL_get0_chain_certs(ctx,px509) \ - SSL_ctrl(ctx,SSL_CTRL_GET_CHAIN_CERTS,0,px509) -# define SSL_clear_chain_certs(ctx) \ - SSL_set0_chain(ctx,NULL) -# define SSL_build_cert_chain(s, flags) \ - SSL_ctrl(s,SSL_CTRL_BUILD_CERT_CHAIN, flags, NULL) -# define SSL_select_current_cert(ctx,x509) \ - SSL_ctrl(ctx,SSL_CTRL_SELECT_CURRENT_CERT,0,(char *)x509) -# define SSL_set_current_cert(ctx,op) \ - SSL_ctrl(ctx,SSL_CTRL_SET_CURRENT_CERT, op, NULL) -# define SSL_set0_verify_cert_store(s,st) \ - SSL_ctrl(s,SSL_CTRL_SET_VERIFY_CERT_STORE,0,(char *)st) -# define SSL_set1_verify_cert_store(s,st) \ - SSL_ctrl(s,SSL_CTRL_SET_VERIFY_CERT_STORE,1,(char *)st) -# define SSL_set0_chain_cert_store(s,st) \ - SSL_ctrl(s,SSL_CTRL_SET_CHAIN_CERT_STORE,0,(char *)st) -# define SSL_set1_chain_cert_store(s,st) \ - SSL_ctrl(s,SSL_CTRL_SET_CHAIN_CERT_STORE,1,(char *)st) -# define SSL_get1_curves(ctx, s) \ - SSL_ctrl(ctx,SSL_CTRL_GET_CURVES,0,(char *)s) -# define SSL_CTX_set1_curves(ctx, clist, clistlen) \ - SSL_CTX_ctrl(ctx,SSL_CTRL_SET_CURVES,clistlen,(char *)clist) -# define SSL_CTX_set1_curves_list(ctx, s) \ - SSL_CTX_ctrl(ctx,SSL_CTRL_SET_CURVES_LIST,0,(char *)s) -# define SSL_set1_curves(ctx, clist, clistlen) \ - SSL_ctrl(ctx,SSL_CTRL_SET_CURVES,clistlen,(char *)clist) -# define SSL_set1_curves_list(ctx, s) \ - SSL_ctrl(ctx,SSL_CTRL_SET_CURVES_LIST,0,(char *)s) -# define SSL_get_shared_curve(s, n) \ - SSL_ctrl(s,SSL_CTRL_GET_SHARED_CURVE,n,NULL) -# define SSL_CTX_set_ecdh_auto(ctx, onoff) \ - SSL_CTX_ctrl(ctx,SSL_CTRL_SET_ECDH_AUTO,onoff,NULL) -# define SSL_set_ecdh_auto(s, onoff) \ - SSL_ctrl(s,SSL_CTRL_SET_ECDH_AUTO,onoff,NULL) -# define SSL_CTX_set1_sigalgs(ctx, slist, slistlen) \ - SSL_CTX_ctrl(ctx,SSL_CTRL_SET_SIGALGS,slistlen,(int *)slist) -# define SSL_CTX_set1_sigalgs_list(ctx, s) \ - SSL_CTX_ctrl(ctx,SSL_CTRL_SET_SIGALGS_LIST,0,(char *)s) -# define SSL_set1_sigalgs(ctx, slist, slistlen) \ - SSL_ctrl(ctx,SSL_CTRL_SET_SIGALGS,clistlen,(int *)slist) -# define SSL_set1_sigalgs_list(ctx, s) \ - SSL_ctrl(ctx,SSL_CTRL_SET_SIGALGS_LIST,0,(char *)s) -# define SSL_CTX_set1_client_sigalgs(ctx, slist, slistlen) \ - SSL_CTX_ctrl(ctx,SSL_CTRL_SET_CLIENT_SIGALGS,slistlen,(int *)slist) -# define SSL_CTX_set1_client_sigalgs_list(ctx, s) \ - SSL_CTX_ctrl(ctx,SSL_CTRL_SET_CLIENT_SIGALGS_LIST,0,(char *)s) -# define SSL_set1_client_sigalgs(ctx, slist, slistlen) \ - SSL_ctrl(ctx,SSL_CTRL_SET_CLIENT_SIGALGS,clistlen,(int *)slist) -# define SSL_set1_client_sigalgs_list(ctx, s) \ - SSL_ctrl(ctx,SSL_CTRL_SET_CLIENT_SIGALGS_LIST,0,(char *)s) -# define SSL_get0_certificate_types(s, clist) \ - SSL_ctrl(s, SSL_CTRL_GET_CLIENT_CERT_TYPES, 0, (char *)clist) -# define SSL_CTX_set1_client_certificate_types(ctx, clist, clistlen) \ - SSL_CTX_ctrl(ctx,SSL_CTRL_SET_CLIENT_CERT_TYPES,clistlen,(char *)clist) -# define SSL_set1_client_certificate_types(s, clist, clistlen) \ - SSL_ctrl(s,SSL_CTRL_SET_CLIENT_CERT_TYPES,clistlen,(char *)clist) -# define SSL_get_peer_signature_nid(s, pn) \ - SSL_ctrl(s,SSL_CTRL_GET_PEER_SIGNATURE_NID,0,pn) -# define SSL_get_server_tmp_key(s, pk) \ - SSL_ctrl(s,SSL_CTRL_GET_SERVER_TMP_KEY,0,pk) -# define SSL_get0_raw_cipherlist(s, plst) \ - SSL_ctrl(s,SSL_CTRL_GET_RAW_CIPHERLIST,0,(char *)plst) -# define SSL_get0_ec_point_formats(s, plst) \ - SSL_ctrl(s,SSL_CTRL_GET_EC_POINT_FORMATS,0,(char *)plst) -# ifndef OPENSSL_NO_BIO -BIO_METHOD *BIO_f_ssl(void); -BIO *BIO_new_ssl(SSL_CTX *ctx, int client); -BIO *BIO_new_ssl_connect(SSL_CTX *ctx); -BIO *BIO_new_buffer_ssl_connect(SSL_CTX *ctx); -int BIO_ssl_copy_session_id(BIO *to, BIO *from); -void BIO_ssl_shutdown(BIO *ssl_bio); - -# endif - -int SSL_CTX_set_cipher_list(SSL_CTX *, const char *str); -SSL_CTX *SSL_CTX_new(const SSL_METHOD *meth); -void SSL_CTX_free(SSL_CTX *); -long SSL_CTX_set_timeout(SSL_CTX *ctx, long t); -long SSL_CTX_get_timeout(const SSL_CTX *ctx); -X509_STORE *SSL_CTX_get_cert_store(const SSL_CTX *); -void SSL_CTX_set_cert_store(SSL_CTX *, X509_STORE *); -int SSL_want(const SSL *s); -int SSL_clear(SSL *s); - -void SSL_CTX_flush_sessions(SSL_CTX *ctx, long tm); - -const SSL_CIPHER *SSL_get_current_cipher(const SSL *s); -int SSL_CIPHER_get_bits(const SSL_CIPHER *c, int *alg_bits); -char *SSL_CIPHER_get_version(const SSL_CIPHER *c); -const char *SSL_CIPHER_get_name(const SSL_CIPHER *c); -unsigned long SSL_CIPHER_get_id(const SSL_CIPHER *c); - -int SSL_get_fd(const SSL *s); -int SSL_get_rfd(const SSL *s); -int SSL_get_wfd(const SSL *s); -const char *SSL_get_cipher_list(const SSL *s, int n); -char *SSL_get_shared_ciphers(const SSL *s, char *buf, int len); -int SSL_get_read_ahead(const SSL *s); -int SSL_pending(const SSL *s); -# ifndef OPENSSL_NO_SOCK -int SSL_set_fd(SSL *s, int fd); -int SSL_set_rfd(SSL *s, int fd); -int SSL_set_wfd(SSL *s, int fd); -# endif -# ifndef OPENSSL_NO_BIO -void SSL_set_bio(SSL *s, BIO *rbio, BIO *wbio); -BIO *SSL_get_rbio(const SSL *s); -BIO *SSL_get_wbio(const SSL *s); -# endif -int SSL_set_cipher_list(SSL *s, const char *str); -void SSL_set_read_ahead(SSL *s, int yes); -int SSL_get_verify_mode(const SSL *s); -int SSL_get_verify_depth(const SSL *s); -int (*SSL_get_verify_callback(const SSL *s)) (int, X509_STORE_CTX *); -void SSL_set_verify(SSL *s, int mode, - int (*callback) (int ok, X509_STORE_CTX *ctx)); -void SSL_set_verify_depth(SSL *s, int depth); -void SSL_set_cert_cb(SSL *s, int (*cb) (SSL *ssl, void *arg), void *arg); -# ifndef OPENSSL_NO_RSA -int SSL_use_RSAPrivateKey(SSL *ssl, RSA *rsa); -# endif -int SSL_use_RSAPrivateKey_ASN1(SSL *ssl, unsigned char *d, long len); -int SSL_use_PrivateKey(SSL *ssl, EVP_PKEY *pkey); -int SSL_use_PrivateKey_ASN1(int pk, SSL *ssl, const unsigned char *d, - long len); -int SSL_use_certificate(SSL *ssl, X509 *x); -int SSL_use_certificate_ASN1(SSL *ssl, const unsigned char *d, int len); - -# ifndef OPENSSL_NO_TLSEXT -/* Set serverinfo data for the current active cert. */ -int SSL_CTX_use_serverinfo(SSL_CTX *ctx, const unsigned char *serverinfo, - size_t serverinfo_length); -# ifndef OPENSSL_NO_STDIO -int SSL_CTX_use_serverinfo_file(SSL_CTX *ctx, const char *file); -# endif /* NO_STDIO */ - -# endif - -# ifndef OPENSSL_NO_STDIO -int SSL_use_RSAPrivateKey_file(SSL *ssl, const char *file, int type); -int SSL_use_PrivateKey_file(SSL *ssl, const char *file, int type); -int SSL_use_certificate_file(SSL *ssl, const char *file, int type); -int SSL_CTX_use_RSAPrivateKey_file(SSL_CTX *ctx, const char *file, int type); -int SSL_CTX_use_PrivateKey_file(SSL_CTX *ctx, const char *file, int type); -int SSL_CTX_use_certificate_file(SSL_CTX *ctx, const char *file, int type); -/* PEM type */ -int SSL_CTX_use_certificate_chain_file(SSL_CTX *ctx, const char *file); -STACK_OF(X509_NAME) *SSL_load_client_CA_file(const char *file); -int SSL_add_file_cert_subjects_to_stack(STACK_OF(X509_NAME) *stackCAs, - const char *file); -# ifndef OPENSSL_SYS_VMS -/* XXXXX: Better scheme needed! [was: #ifndef MAC_OS_pre_X] */ -# ifndef OPENSSL_SYS_MACINTOSH_CLASSIC -int SSL_add_dir_cert_subjects_to_stack(STACK_OF(X509_NAME) *stackCAs, - const char *dir); -# endif -# endif - -# endif - -void SSL_load_error_strings(void); -const char *SSL_state_string(const SSL *s); -const char *SSL_rstate_string(const SSL *s); -const char *SSL_state_string_long(const SSL *s); -const char *SSL_rstate_string_long(const SSL *s); -long SSL_SESSION_get_time(const SSL_SESSION *s); -long SSL_SESSION_set_time(SSL_SESSION *s, long t); -long SSL_SESSION_get_timeout(const SSL_SESSION *s); -long SSL_SESSION_set_timeout(SSL_SESSION *s, long t); -void SSL_copy_session_id(SSL *to, const SSL *from); -X509 *SSL_SESSION_get0_peer(SSL_SESSION *s); -int SSL_SESSION_set1_id_context(SSL_SESSION *s, const unsigned char *sid_ctx, - unsigned int sid_ctx_len); - -SSL_SESSION *SSL_SESSION_new(void); -const unsigned char *SSL_SESSION_get_id(const SSL_SESSION *s, - unsigned int *len); -unsigned int SSL_SESSION_get_compress_id(const SSL_SESSION *s); -# ifndef OPENSSL_NO_FP_API -int SSL_SESSION_print_fp(FILE *fp, const SSL_SESSION *ses); -# endif -# ifndef OPENSSL_NO_BIO -int SSL_SESSION_print(BIO *fp, const SSL_SESSION *ses); -# endif -void SSL_SESSION_free(SSL_SESSION *ses); -int i2d_SSL_SESSION(SSL_SESSION *in, unsigned char **pp); -int SSL_set_session(SSL *to, SSL_SESSION *session); -int SSL_CTX_add_session(SSL_CTX *s, SSL_SESSION *c); -int SSL_CTX_remove_session(SSL_CTX *, SSL_SESSION *c); -int SSL_CTX_set_generate_session_id(SSL_CTX *, GEN_SESSION_CB); -int SSL_set_generate_session_id(SSL *, GEN_SESSION_CB); -int SSL_has_matching_session_id(const SSL *ssl, const unsigned char *id, - unsigned int id_len); -SSL_SESSION *d2i_SSL_SESSION(SSL_SESSION **a, const unsigned char **pp, - long length); - -# ifdef HEADER_X509_H -X509 *SSL_get_peer_certificate(const SSL *s); -# endif - -STACK_OF(X509) *SSL_get_peer_cert_chain(const SSL *s); - -int SSL_CTX_get_verify_mode(const SSL_CTX *ctx); -int SSL_CTX_get_verify_depth(const SSL_CTX *ctx); -int (*SSL_CTX_get_verify_callback(const SSL_CTX *ctx)) (int, - X509_STORE_CTX *); -void SSL_CTX_set_verify(SSL_CTX *ctx, int mode, - int (*callback) (int, X509_STORE_CTX *)); -void SSL_CTX_set_verify_depth(SSL_CTX *ctx, int depth); -void SSL_CTX_set_cert_verify_callback(SSL_CTX *ctx, - int (*cb) (X509_STORE_CTX *, void *), - void *arg); -void SSL_CTX_set_cert_cb(SSL_CTX *c, int (*cb) (SSL *ssl, void *arg), - void *arg); -# ifndef OPENSSL_NO_RSA -int SSL_CTX_use_RSAPrivateKey(SSL_CTX *ctx, RSA *rsa); -# endif -int SSL_CTX_use_RSAPrivateKey_ASN1(SSL_CTX *ctx, const unsigned char *d, - long len); -int SSL_CTX_use_PrivateKey(SSL_CTX *ctx, EVP_PKEY *pkey); -int SSL_CTX_use_PrivateKey_ASN1(int pk, SSL_CTX *ctx, - const unsigned char *d, long len); -int SSL_CTX_use_certificate(SSL_CTX *ctx, X509 *x); -int SSL_CTX_use_certificate_ASN1(SSL_CTX *ctx, int len, - const unsigned char *d); - -void SSL_CTX_set_default_passwd_cb(SSL_CTX *ctx, pem_password_cb *cb); -void SSL_CTX_set_default_passwd_cb_userdata(SSL_CTX *ctx, void *u); - -int SSL_CTX_check_private_key(const SSL_CTX *ctx); -int SSL_check_private_key(const SSL *ctx); - -int SSL_CTX_set_session_id_context(SSL_CTX *ctx, const unsigned char *sid_ctx, - unsigned int sid_ctx_len); - -SSL *SSL_new(SSL_CTX *ctx); -int SSL_set_session_id_context(SSL *ssl, const unsigned char *sid_ctx, - unsigned int sid_ctx_len); - -int SSL_CTX_set_purpose(SSL_CTX *s, int purpose); -int SSL_set_purpose(SSL *s, int purpose); -int SSL_CTX_set_trust(SSL_CTX *s, int trust); -int SSL_set_trust(SSL *s, int trust); - -int SSL_CTX_set1_param(SSL_CTX *ctx, X509_VERIFY_PARAM *vpm); -int SSL_set1_param(SSL *ssl, X509_VERIFY_PARAM *vpm); - -X509_VERIFY_PARAM *SSL_CTX_get0_param(SSL_CTX *ctx); -X509_VERIFY_PARAM *SSL_get0_param(SSL *ssl); - -# ifndef OPENSSL_NO_SRP -int SSL_CTX_set_srp_username(SSL_CTX *ctx, char *name); -int SSL_CTX_set_srp_password(SSL_CTX *ctx, char *password); -int SSL_CTX_set_srp_strength(SSL_CTX *ctx, int strength); -int SSL_CTX_set_srp_client_pwd_callback(SSL_CTX *ctx, - char *(*cb) (SSL *, void *)); -int SSL_CTX_set_srp_verify_param_callback(SSL_CTX *ctx, - int (*cb) (SSL *, void *)); -int SSL_CTX_set_srp_username_callback(SSL_CTX *ctx, - int (*cb) (SSL *, int *, void *)); -int SSL_CTX_set_srp_cb_arg(SSL_CTX *ctx, void *arg); - -int SSL_set_srp_server_param(SSL *s, const BIGNUM *N, const BIGNUM *g, - BIGNUM *sa, BIGNUM *v, char *info); -int SSL_set_srp_server_param_pw(SSL *s, const char *user, const char *pass, - const char *grp); - -BIGNUM *SSL_get_srp_g(SSL *s); -BIGNUM *SSL_get_srp_N(SSL *s); - -char *SSL_get_srp_username(SSL *s); -char *SSL_get_srp_userinfo(SSL *s); -# endif - -void SSL_certs_clear(SSL *s); -void SSL_free(SSL *ssl); -int SSL_accept(SSL *ssl); -int SSL_connect(SSL *ssl); -int SSL_read(SSL *ssl, void *buf, int num); -int SSL_peek(SSL *ssl, void *buf, int num); -int SSL_write(SSL *ssl, const void *buf, int num); -long SSL_ctrl(SSL *ssl, int cmd, long larg, void *parg); -long SSL_callback_ctrl(SSL *, int, void (*)(void)); -long SSL_CTX_ctrl(SSL_CTX *ctx, int cmd, long larg, void *parg); -long SSL_CTX_callback_ctrl(SSL_CTX *, int, void (*)(void)); - -int SSL_get_error(const SSL *s, int ret_code); -const char *SSL_get_version(const SSL *s); - -/* This sets the 'default' SSL version that SSL_new() will create */ -int SSL_CTX_set_ssl_version(SSL_CTX *ctx, const SSL_METHOD *meth); - -# ifndef OPENSSL_NO_SSL2 -const SSL_METHOD *SSLv2_method(void); /* SSLv2 */ -const SSL_METHOD *SSLv2_server_method(void); /* SSLv2 */ -const SSL_METHOD *SSLv2_client_method(void); /* SSLv2 */ -# endif - -# ifndef OPENSSL_NO_SSL3_METHOD -const SSL_METHOD *SSLv3_method(void); /* SSLv3 */ -const SSL_METHOD *SSLv3_server_method(void); /* SSLv3 */ -const SSL_METHOD *SSLv3_client_method(void); /* SSLv3 */ -# endif - -const SSL_METHOD *SSLv23_method(void); /* Negotiate highest available SSL/TLS - * version */ -const SSL_METHOD *SSLv23_server_method(void); /* Negotiate highest available - * SSL/TLS version */ -const SSL_METHOD *SSLv23_client_method(void); /* Negotiate highest available - * SSL/TLS version */ - -const SSL_METHOD *TLSv1_method(void); /* TLSv1.0 */ -const SSL_METHOD *TLSv1_server_method(void); /* TLSv1.0 */ -const SSL_METHOD *TLSv1_client_method(void); /* TLSv1.0 */ - -const SSL_METHOD *TLSv1_1_method(void); /* TLSv1.1 */ -const SSL_METHOD *TLSv1_1_server_method(void); /* TLSv1.1 */ -const SSL_METHOD *TLSv1_1_client_method(void); /* TLSv1.1 */ - -const SSL_METHOD *TLSv1_2_method(void); /* TLSv1.2 */ -const SSL_METHOD *TLSv1_2_server_method(void); /* TLSv1.2 */ -const SSL_METHOD *TLSv1_2_client_method(void); /* TLSv1.2 */ - -const SSL_METHOD *DTLSv1_method(void); /* DTLSv1.0 */ -const SSL_METHOD *DTLSv1_server_method(void); /* DTLSv1.0 */ -const SSL_METHOD *DTLSv1_client_method(void); /* DTLSv1.0 */ - -const SSL_METHOD *DTLSv1_2_method(void); /* DTLSv1.2 */ -const SSL_METHOD *DTLSv1_2_server_method(void); /* DTLSv1.2 */ -const SSL_METHOD *DTLSv1_2_client_method(void); /* DTLSv1.2 */ - -const SSL_METHOD *DTLS_method(void); /* DTLS 1.0 and 1.2 */ -const SSL_METHOD *DTLS_server_method(void); /* DTLS 1.0 and 1.2 */ -const SSL_METHOD *DTLS_client_method(void); /* DTLS 1.0 and 1.2 */ - -STACK_OF(SSL_CIPHER) *SSL_get_ciphers(const SSL *s); - -int SSL_do_handshake(SSL *s); -int SSL_renegotiate(SSL *s); -int SSL_renegotiate_abbreviated(SSL *s); -int SSL_renegotiate_pending(SSL *s); -int SSL_shutdown(SSL *s); - -const SSL_METHOD *SSL_CTX_get_ssl_method(SSL_CTX *ctx); -const SSL_METHOD *SSL_get_ssl_method(SSL *s); -int SSL_set_ssl_method(SSL *s, const SSL_METHOD *method); -const char *SSL_alert_type_string_long(int value); -const char *SSL_alert_type_string(int value); -const char *SSL_alert_desc_string_long(int value); -const char *SSL_alert_desc_string(int value); - -void SSL_set_client_CA_list(SSL *s, STACK_OF(X509_NAME) *name_list); -void SSL_CTX_set_client_CA_list(SSL_CTX *ctx, STACK_OF(X509_NAME) *name_list); -STACK_OF(X509_NAME) *SSL_get_client_CA_list(const SSL *s); -STACK_OF(X509_NAME) *SSL_CTX_get_client_CA_list(const SSL_CTX *s); -int SSL_add_client_CA(SSL *ssl, X509 *x); -int SSL_CTX_add_client_CA(SSL_CTX *ctx, X509 *x); - -void SSL_set_connect_state(SSL *s); -void SSL_set_accept_state(SSL *s); - -long SSL_get_default_timeout(const SSL *s); - -int SSL_library_init(void); - -char *SSL_CIPHER_description(const SSL_CIPHER *, char *buf, int size); -STACK_OF(X509_NAME) *SSL_dup_CA_list(STACK_OF(X509_NAME) *sk); - -SSL *SSL_dup(SSL *ssl); - -X509 *SSL_get_certificate(const SSL *ssl); -/* - * EVP_PKEY - */ struct evp_pkey_st *SSL_get_privatekey(const SSL *ssl); - -X509 *SSL_CTX_get0_certificate(const SSL_CTX *ctx); -EVP_PKEY *SSL_CTX_get0_privatekey(const SSL_CTX *ctx); - -void SSL_CTX_set_quiet_shutdown(SSL_CTX *ctx, int mode); -int SSL_CTX_get_quiet_shutdown(const SSL_CTX *ctx); -void SSL_set_quiet_shutdown(SSL *ssl, int mode); -int SSL_get_quiet_shutdown(const SSL *ssl); -void SSL_set_shutdown(SSL *ssl, int mode); -int SSL_get_shutdown(const SSL *ssl); -int SSL_version(const SSL *ssl); -int SSL_CTX_set_default_verify_paths(SSL_CTX *ctx); -int SSL_CTX_load_verify_locations(SSL_CTX *ctx, const char *CAfile, - const char *CApath); -# define SSL_get0_session SSL_get_session/* just peek at pointer */ -SSL_SESSION *SSL_get_session(const SSL *ssl); -SSL_SESSION *SSL_get1_session(SSL *ssl); /* obtain a reference count */ -SSL_CTX *SSL_get_SSL_CTX(const SSL *ssl); -SSL_CTX *SSL_set_SSL_CTX(SSL *ssl, SSL_CTX *ctx); -void SSL_set_info_callback(SSL *ssl, - void (*cb) (const SSL *ssl, int type, int val)); -void (*SSL_get_info_callback(const SSL *ssl)) (const SSL *ssl, int type, - int val); -int SSL_state(const SSL *ssl); -void SSL_set_state(SSL *ssl, int state); - -void SSL_set_verify_result(SSL *ssl, long v); -long SSL_get_verify_result(const SSL *ssl); - -int SSL_set_ex_data(SSL *ssl, int idx, void *data); -void *SSL_get_ex_data(const SSL *ssl, int idx); -int SSL_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new *new_func, - CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func); - -int SSL_SESSION_set_ex_data(SSL_SESSION *ss, int idx, void *data); -void *SSL_SESSION_get_ex_data(const SSL_SESSION *ss, int idx); -int SSL_SESSION_get_ex_new_index(long argl, void *argp, - CRYPTO_EX_new *new_func, - CRYPTO_EX_dup *dup_func, - CRYPTO_EX_free *free_func); - -int SSL_CTX_set_ex_data(SSL_CTX *ssl, int idx, void *data); -void *SSL_CTX_get_ex_data(const SSL_CTX *ssl, int idx); -int SSL_CTX_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new *new_func, - CRYPTO_EX_dup *dup_func, - CRYPTO_EX_free *free_func); - -int SSL_get_ex_data_X509_STORE_CTX_idx(void); - -# define SSL_CTX_sess_set_cache_size(ctx,t) \ - SSL_CTX_ctrl(ctx,SSL_CTRL_SET_SESS_CACHE_SIZE,t,NULL) -# define SSL_CTX_sess_get_cache_size(ctx) \ - SSL_CTX_ctrl(ctx,SSL_CTRL_GET_SESS_CACHE_SIZE,0,NULL) -# define SSL_CTX_set_session_cache_mode(ctx,m) \ - SSL_CTX_ctrl(ctx,SSL_CTRL_SET_SESS_CACHE_MODE,m,NULL) -# define SSL_CTX_get_session_cache_mode(ctx) \ - SSL_CTX_ctrl(ctx,SSL_CTRL_GET_SESS_CACHE_MODE,0,NULL) - -# define SSL_CTX_get_default_read_ahead(ctx) SSL_CTX_get_read_ahead(ctx) -# define SSL_CTX_set_default_read_ahead(ctx,m) SSL_CTX_set_read_ahead(ctx,m) -# define SSL_CTX_get_read_ahead(ctx) \ - SSL_CTX_ctrl(ctx,SSL_CTRL_GET_READ_AHEAD,0,NULL) -# define SSL_CTX_set_read_ahead(ctx,m) \ - SSL_CTX_ctrl(ctx,SSL_CTRL_SET_READ_AHEAD,m,NULL) -# define SSL_CTX_get_max_cert_list(ctx) \ - SSL_CTX_ctrl(ctx,SSL_CTRL_GET_MAX_CERT_LIST,0,NULL) -# define SSL_CTX_set_max_cert_list(ctx,m) \ - SSL_CTX_ctrl(ctx,SSL_CTRL_SET_MAX_CERT_LIST,m,NULL) -# define SSL_get_max_cert_list(ssl) \ - SSL_ctrl(ssl,SSL_CTRL_GET_MAX_CERT_LIST,0,NULL) -# define SSL_set_max_cert_list(ssl,m) \ - SSL_ctrl(ssl,SSL_CTRL_SET_MAX_CERT_LIST,m,NULL) - -# define SSL_CTX_set_max_send_fragment(ctx,m) \ - SSL_CTX_ctrl(ctx,SSL_CTRL_SET_MAX_SEND_FRAGMENT,m,NULL) -# define SSL_set_max_send_fragment(ssl,m) \ - SSL_ctrl(ssl,SSL_CTRL_SET_MAX_SEND_FRAGMENT,m,NULL) - - /* NB: the keylength is only applicable when is_export is true */ -# ifndef OPENSSL_NO_RSA -void SSL_CTX_set_tmp_rsa_callback(SSL_CTX *ctx, - RSA *(*cb) (SSL *ssl, int is_export, - int keylength)); - -void SSL_set_tmp_rsa_callback(SSL *ssl, - RSA *(*cb) (SSL *ssl, int is_export, - int keylength)); -# endif -# ifndef OPENSSL_NO_DH -void SSL_CTX_set_tmp_dh_callback(SSL_CTX *ctx, - DH *(*dh) (SSL *ssl, int is_export, - int keylength)); -void SSL_set_tmp_dh_callback(SSL *ssl, - DH *(*dh) (SSL *ssl, int is_export, - int keylength)); -# endif -# ifndef OPENSSL_NO_ECDH -void SSL_CTX_set_tmp_ecdh_callback(SSL_CTX *ctx, - EC_KEY *(*ecdh) (SSL *ssl, int is_export, - int keylength)); -void SSL_set_tmp_ecdh_callback(SSL *ssl, - EC_KEY *(*ecdh) (SSL *ssl, int is_export, - int keylength)); -# endif - -# ifndef OPENSSL_NO_COMP -const COMP_METHOD *SSL_get_current_compression(SSL *s); -const COMP_METHOD *SSL_get_current_expansion(SSL *s); -const char *SSL_COMP_get_name(const COMP_METHOD *comp); -STACK_OF(SSL_COMP) *SSL_COMP_get_compression_methods(void); -STACK_OF(SSL_COMP) *SSL_COMP_set0_compression_methods(STACK_OF(SSL_COMP) - *meths); -void SSL_COMP_free_compression_methods(void); -int SSL_COMP_add_compression_method(int id, COMP_METHOD *cm); -# else -const void *SSL_get_current_compression(SSL *s); -const void *SSL_get_current_expansion(SSL *s); -const char *SSL_COMP_get_name(const void *comp); -void *SSL_COMP_get_compression_methods(void); -int SSL_COMP_add_compression_method(int id, void *cm); -# endif - -const SSL_CIPHER *SSL_CIPHER_find(SSL *ssl, const unsigned char *ptr); - -/* TLS extensions functions */ -int SSL_set_session_ticket_ext(SSL *s, void *ext_data, int ext_len); - -int SSL_set_session_ticket_ext_cb(SSL *s, tls_session_ticket_ext_cb_fn cb, - void *arg); - -/* Pre-shared secret session resumption functions */ -int SSL_set_session_secret_cb(SSL *s, - tls_session_secret_cb_fn tls_session_secret_cb, - void *arg); - -void SSL_set_debug(SSL *s, int debug); -int SSL_cache_hit(SSL *s); -int SSL_is_server(SSL *s); - -SSL_CONF_CTX *SSL_CONF_CTX_new(void); -int SSL_CONF_CTX_finish(SSL_CONF_CTX *cctx); -void SSL_CONF_CTX_free(SSL_CONF_CTX *cctx); -unsigned int SSL_CONF_CTX_set_flags(SSL_CONF_CTX *cctx, unsigned int flags); -unsigned int SSL_CONF_CTX_clear_flags(SSL_CONF_CTX *cctx, unsigned int flags); -int SSL_CONF_CTX_set1_prefix(SSL_CONF_CTX *cctx, const char *pre); - -void SSL_CONF_CTX_set_ssl(SSL_CONF_CTX *cctx, SSL *ssl); -void SSL_CONF_CTX_set_ssl_ctx(SSL_CONF_CTX *cctx, SSL_CTX *ctx); - -int SSL_CONF_cmd(SSL_CONF_CTX *cctx, const char *cmd, const char *value); -int SSL_CONF_cmd_argv(SSL_CONF_CTX *cctx, int *pargc, char ***pargv); -int SSL_CONF_cmd_value_type(SSL_CONF_CTX *cctx, const char *cmd); - -# ifndef OPENSSL_NO_SSL_TRACE -void SSL_trace(int write_p, int version, int content_type, - const void *buf, size_t len, SSL *ssl, void *arg); -const char *SSL_CIPHER_standard_name(const SSL_CIPHER *c); -# endif - -# ifndef OPENSSL_NO_UNIT_TEST -const struct openssl_ssl_test_functions *SSL_test_functions(void); -# endif - -/* BEGIN ERROR CODES */ -/* - * The following lines are auto generated by the script mkerr.pl. Any changes - * made after this point may be overwritten when the script is next run. - */ -void ERR_load_SSL_strings(void); - -/* Error codes for the SSL functions. */ - -/* Function codes. */ -# define SSL_F_CHECK_SUITEB_CIPHER_LIST 331 -# define SSL_F_CLIENT_CERTIFICATE 100 -# define SSL_F_CLIENT_FINISHED 167 -# define SSL_F_CLIENT_HELLO 101 -# define SSL_F_CLIENT_MASTER_KEY 102 -# define SSL_F_D2I_SSL_SESSION 103 -# define SSL_F_DO_DTLS1_WRITE 245 -# define SSL_F_DO_SSL3_WRITE 104 -# define SSL_F_DTLS1_ACCEPT 246 -# define SSL_F_DTLS1_ADD_CERT_TO_BUF 295 -# define SSL_F_DTLS1_BUFFER_RECORD 247 -# define SSL_F_DTLS1_CHECK_TIMEOUT_NUM 316 -# define SSL_F_DTLS1_CLIENT_HELLO 248 -# define SSL_F_DTLS1_CONNECT 249 -# define SSL_F_DTLS1_ENC 250 -# define SSL_F_DTLS1_GET_HELLO_VERIFY 251 -# define SSL_F_DTLS1_GET_MESSAGE 252 -# define SSL_F_DTLS1_GET_MESSAGE_FRAGMENT 253 -# define SSL_F_DTLS1_GET_RECORD 254 -# define SSL_F_DTLS1_HANDLE_TIMEOUT 297 -# define SSL_F_DTLS1_HEARTBEAT 305 -# define SSL_F_DTLS1_OUTPUT_CERT_CHAIN 255 -# define SSL_F_DTLS1_PREPROCESS_FRAGMENT 288 -# define SSL_F_DTLS1_PROCESS_OUT_OF_SEQ_MESSAGE 256 -# define SSL_F_DTLS1_PROCESS_RECORD 257 -# define SSL_F_DTLS1_READ_BYTES 258 -# define SSL_F_DTLS1_READ_FAILED 259 -# define SSL_F_DTLS1_SEND_CERTIFICATE_REQUEST 260 -# define SSL_F_DTLS1_SEND_CLIENT_CERTIFICATE 261 -# define SSL_F_DTLS1_SEND_CLIENT_KEY_EXCHANGE 262 -# define SSL_F_DTLS1_SEND_CLIENT_VERIFY 263 -# define SSL_F_DTLS1_SEND_HELLO_VERIFY_REQUEST 264 -# define SSL_F_DTLS1_SEND_SERVER_CERTIFICATE 265 -# define SSL_F_DTLS1_SEND_SERVER_HELLO 266 -# define SSL_F_DTLS1_SEND_SERVER_KEY_EXCHANGE 267 -# define SSL_F_DTLS1_WRITE_APP_DATA_BYTES 268 -# define SSL_F_GET_CLIENT_FINISHED 105 -# define SSL_F_GET_CLIENT_HELLO 106 -# define SSL_F_GET_CLIENT_MASTER_KEY 107 -# define SSL_F_GET_SERVER_FINISHED 108 -# define SSL_F_GET_SERVER_HELLO 109 -# define SSL_F_GET_SERVER_VERIFY 110 -# define SSL_F_I2D_SSL_SESSION 111 -# define SSL_F_READ_N 112 -# define SSL_F_REQUEST_CERTIFICATE 113 -# define SSL_F_SERVER_FINISH 239 -# define SSL_F_SERVER_HELLO 114 -# define SSL_F_SERVER_VERIFY 240 -# define SSL_F_SSL23_ACCEPT 115 -# define SSL_F_SSL23_CLIENT_HELLO 116 -# define SSL_F_SSL23_CONNECT 117 -# define SSL_F_SSL23_GET_CLIENT_HELLO 118 -# define SSL_F_SSL23_GET_SERVER_HELLO 119 -# define SSL_F_SSL23_PEEK 237 -# define SSL_F_SSL23_READ 120 -# define SSL_F_SSL23_WRITE 121 -# define SSL_F_SSL2_ACCEPT 122 -# define SSL_F_SSL2_CONNECT 123 -# define SSL_F_SSL2_ENC_INIT 124 -# define SSL_F_SSL2_GENERATE_KEY_MATERIAL 241 -# define SSL_F_SSL2_PEEK 234 -# define SSL_F_SSL2_READ 125 -# define SSL_F_SSL2_READ_INTERNAL 236 -# define SSL_F_SSL2_SET_CERTIFICATE 126 -# define SSL_F_SSL2_WRITE 127 -# define SSL_F_SSL3_ACCEPT 128 -# define SSL_F_SSL3_ADD_CERT_TO_BUF 296 -# define SSL_F_SSL3_CALLBACK_CTRL 233 -# define SSL_F_SSL3_CHANGE_CIPHER_STATE 129 -# define SSL_F_SSL3_CHECK_CERT_AND_ALGORITHM 130 -# define SSL_F_SSL3_CHECK_CLIENT_HELLO 304 -# define SSL_F_SSL3_CLIENT_HELLO 131 -# define SSL_F_SSL3_CONNECT 132 -# define SSL_F_SSL3_CTRL 213 -# define SSL_F_SSL3_CTX_CTRL 133 -# define SSL_F_SSL3_DIGEST_CACHED_RECORDS 293 -# define SSL_F_SSL3_DO_CHANGE_CIPHER_SPEC 292 -# define SSL_F_SSL3_ENC 134 -# define SSL_F_SSL3_GENERATE_KEY_BLOCK 238 -# define SSL_F_SSL3_GET_CERTIFICATE_REQUEST 135 -# define SSL_F_SSL3_GET_CERT_STATUS 289 -# define SSL_F_SSL3_GET_CERT_VERIFY 136 -# define SSL_F_SSL3_GET_CLIENT_CERTIFICATE 137 -# define SSL_F_SSL3_GET_CLIENT_HELLO 138 -# define SSL_F_SSL3_GET_CLIENT_KEY_EXCHANGE 139 -# define SSL_F_SSL3_GET_FINISHED 140 -# define SSL_F_SSL3_GET_KEY_EXCHANGE 141 -# define SSL_F_SSL3_GET_MESSAGE 142 -# define SSL_F_SSL3_GET_NEW_SESSION_TICKET 283 -# define SSL_F_SSL3_GET_NEXT_PROTO 306 -# define SSL_F_SSL3_GET_RECORD 143 -# define SSL_F_SSL3_GET_SERVER_CERTIFICATE 144 -# define SSL_F_SSL3_GET_SERVER_DONE 145 -# define SSL_F_SSL3_GET_SERVER_HELLO 146 -# define SSL_F_SSL3_HANDSHAKE_MAC 285 -# define SSL_F_SSL3_NEW_SESSION_TICKET 287 -# define SSL_F_SSL3_OUTPUT_CERT_CHAIN 147 -# define SSL_F_SSL3_PEEK 235 -# define SSL_F_SSL3_READ_BYTES 148 -# define SSL_F_SSL3_READ_N 149 -# define SSL_F_SSL3_SEND_CERTIFICATE_REQUEST 150 -# define SSL_F_SSL3_SEND_CLIENT_CERTIFICATE 151 -# define SSL_F_SSL3_SEND_CLIENT_KEY_EXCHANGE 152 -# define SSL_F_SSL3_SEND_CLIENT_VERIFY 153 -# define SSL_F_SSL3_SEND_SERVER_CERTIFICATE 154 -# define SSL_F_SSL3_SEND_SERVER_HELLO 242 -# define SSL_F_SSL3_SEND_SERVER_KEY_EXCHANGE 155 -# define SSL_F_SSL3_SETUP_KEY_BLOCK 157 -# define SSL_F_SSL3_SETUP_READ_BUFFER 156 -# define SSL_F_SSL3_SETUP_WRITE_BUFFER 291 -# define SSL_F_SSL3_WRITE_BYTES 158 -# define SSL_F_SSL3_WRITE_PENDING 159 -# define SSL_F_SSL_ADD_CERT_CHAIN 318 -# define SSL_F_SSL_ADD_CERT_TO_BUF 319 -# define SSL_F_SSL_ADD_CLIENTHELLO_RENEGOTIATE_EXT 298 -# define SSL_F_SSL_ADD_CLIENTHELLO_TLSEXT 277 -# define SSL_F_SSL_ADD_CLIENTHELLO_USE_SRTP_EXT 307 -# define SSL_F_SSL_ADD_DIR_CERT_SUBJECTS_TO_STACK 215 -# define SSL_F_SSL_ADD_FILE_CERT_SUBJECTS_TO_STACK 216 -# define SSL_F_SSL_ADD_SERVERHELLO_RENEGOTIATE_EXT 299 -# define SSL_F_SSL_ADD_SERVERHELLO_TLSEXT 278 -# define SSL_F_SSL_ADD_SERVERHELLO_USE_SRTP_EXT 308 -# define SSL_F_SSL_BAD_METHOD 160 -# define SSL_F_SSL_BUILD_CERT_CHAIN 332 -# define SSL_F_SSL_BYTES_TO_CIPHER_LIST 161 -# define SSL_F_SSL_CERT_DUP 221 -# define SSL_F_SSL_CERT_INST 222 -# define SSL_F_SSL_CERT_INSTANTIATE 214 -# define SSL_F_SSL_CERT_NEW 162 -# define SSL_F_SSL_CHECK_PRIVATE_KEY 163 -# define SSL_F_SSL_CHECK_SERVERHELLO_TLSEXT 280 -# define SSL_F_SSL_CHECK_SRVR_ECC_CERT_AND_ALG 279 -# define SSL_F_SSL_CIPHER_PROCESS_RULESTR 230 -# define SSL_F_SSL_CIPHER_STRENGTH_SORT 231 -# define SSL_F_SSL_CLEAR 164 -# define SSL_F_SSL_COMP_ADD_COMPRESSION_METHOD 165 -# define SSL_F_SSL_CONF_CMD 334 -# define SSL_F_SSL_CREATE_CIPHER_LIST 166 -# define SSL_F_SSL_CTRL 232 -# define SSL_F_SSL_CTX_CHECK_PRIVATE_KEY 168 -# define SSL_F_SSL_CTX_MAKE_PROFILES 309 -# define SSL_F_SSL_CTX_NEW 169 -# define SSL_F_SSL_CTX_SET_CIPHER_LIST 269 -# define SSL_F_SSL_CTX_SET_CLIENT_CERT_ENGINE 290 -# define SSL_F_SSL_CTX_SET_PURPOSE 226 -# define SSL_F_SSL_CTX_SET_SESSION_ID_CONTEXT 219 -# define SSL_F_SSL_CTX_SET_SSL_VERSION 170 -# define SSL_F_SSL_CTX_SET_TRUST 229 -# define SSL_F_SSL_CTX_USE_CERTIFICATE 171 -# define SSL_F_SSL_CTX_USE_CERTIFICATE_ASN1 172 -# define SSL_F_SSL_CTX_USE_CERTIFICATE_CHAIN_FILE 220 -# define SSL_F_SSL_CTX_USE_CERTIFICATE_FILE 173 -# define SSL_F_SSL_CTX_USE_PRIVATEKEY 174 -# define SSL_F_SSL_CTX_USE_PRIVATEKEY_ASN1 175 -# define SSL_F_SSL_CTX_USE_PRIVATEKEY_FILE 176 -# define SSL_F_SSL_CTX_USE_PSK_IDENTITY_HINT 272 -# define SSL_F_SSL_CTX_USE_RSAPRIVATEKEY 177 -# define SSL_F_SSL_CTX_USE_RSAPRIVATEKEY_ASN1 178 -# define SSL_F_SSL_CTX_USE_RSAPRIVATEKEY_FILE 179 -# define SSL_F_SSL_CTX_USE_SERVERINFO 336 -# define SSL_F_SSL_CTX_USE_SERVERINFO_FILE 337 -# define SSL_F_SSL_DO_HANDSHAKE 180 -# define SSL_F_SSL_GET_NEW_SESSION 181 -# define SSL_F_SSL_GET_PREV_SESSION 217 -# define SSL_F_SSL_GET_SERVER_CERT_INDEX 322 -# define SSL_F_SSL_GET_SERVER_SEND_CERT 182 -# define SSL_F_SSL_GET_SERVER_SEND_PKEY 317 -# define SSL_F_SSL_GET_SIGN_PKEY 183 -# define SSL_F_SSL_INIT_WBIO_BUFFER 184 -# define SSL_F_SSL_LOAD_CLIENT_CA_FILE 185 -# define SSL_F_SSL_NEW 186 -# define SSL_F_SSL_PARSE_CLIENTHELLO_RENEGOTIATE_EXT 300 -# define SSL_F_SSL_PARSE_CLIENTHELLO_TLSEXT 302 -# define SSL_F_SSL_PARSE_CLIENTHELLO_USE_SRTP_EXT 310 -# define SSL_F_SSL_PARSE_SERVERHELLO_RENEGOTIATE_EXT 301 -# define SSL_F_SSL_PARSE_SERVERHELLO_TLSEXT 303 -# define SSL_F_SSL_PARSE_SERVERHELLO_USE_SRTP_EXT 311 -# define SSL_F_SSL_PEEK 270 -# define SSL_F_SSL_PREPARE_CLIENTHELLO_TLSEXT 281 -# define SSL_F_SSL_PREPARE_SERVERHELLO_TLSEXT 282 -# define SSL_F_SSL_READ 223 -# define SSL_F_SSL_RSA_PRIVATE_DECRYPT 187 -# define SSL_F_SSL_RSA_PUBLIC_ENCRYPT 188 -# define SSL_F_SSL_SCAN_CLIENTHELLO_TLSEXT 320 -# define SSL_F_SSL_SCAN_SERVERHELLO_TLSEXT 321 -# define SSL_F_SSL_SESSION_NEW 189 -# define SSL_F_SSL_SESSION_PRINT_FP 190 -# define SSL_F_SSL_SESSION_SET1_ID_CONTEXT 312 -# define SSL_F_SSL_SESS_CERT_NEW 225 -# define SSL_F_SSL_SET_CERT 191 -# define SSL_F_SSL_SET_CIPHER_LIST 271 -# define SSL_F_SSL_SET_FD 192 -# define SSL_F_SSL_SET_PKEY 193 -# define SSL_F_SSL_SET_PURPOSE 227 -# define SSL_F_SSL_SET_RFD 194 -# define SSL_F_SSL_SET_SESSION 195 -# define SSL_F_SSL_SET_SESSION_ID_CONTEXT 218 -# define SSL_F_SSL_SET_SESSION_TICKET_EXT 294 -# define SSL_F_SSL_SET_TRUST 228 -# define SSL_F_SSL_SET_WFD 196 -# define SSL_F_SSL_SHUTDOWN 224 -# define SSL_F_SSL_SRP_CTX_INIT 313 -# define SSL_F_SSL_UNDEFINED_CONST_FUNCTION 243 -# define SSL_F_SSL_UNDEFINED_FUNCTION 197 -# define SSL_F_SSL_UNDEFINED_VOID_FUNCTION 244 -# define SSL_F_SSL_USE_CERTIFICATE 198 -# define SSL_F_SSL_USE_CERTIFICATE_ASN1 199 -# define SSL_F_SSL_USE_CERTIFICATE_FILE 200 -# define SSL_F_SSL_USE_PRIVATEKEY 201 -# define SSL_F_SSL_USE_PRIVATEKEY_ASN1 202 -# define SSL_F_SSL_USE_PRIVATEKEY_FILE 203 -# define SSL_F_SSL_USE_PSK_IDENTITY_HINT 273 -# define SSL_F_SSL_USE_RSAPRIVATEKEY 204 -# define SSL_F_SSL_USE_RSAPRIVATEKEY_ASN1 205 -# define SSL_F_SSL_USE_RSAPRIVATEKEY_FILE 206 -# define SSL_F_SSL_VERIFY_CERT_CHAIN 207 -# define SSL_F_SSL_WRITE 208 -# define SSL_F_TLS12_CHECK_PEER_SIGALG 333 -# define SSL_F_TLS1_CERT_VERIFY_MAC 286 -# define SSL_F_TLS1_CHANGE_CIPHER_STATE 209 -# define SSL_F_TLS1_CHECK_SERVERHELLO_TLSEXT 274 -# define SSL_F_TLS1_ENC 210 -# define SSL_F_TLS1_EXPORT_KEYING_MATERIAL 314 -# define SSL_F_TLS1_GET_CURVELIST 338 -# define SSL_F_TLS1_HEARTBEAT 315 -# define SSL_F_TLS1_PREPARE_CLIENTHELLO_TLSEXT 275 -# define SSL_F_TLS1_PREPARE_SERVERHELLO_TLSEXT 276 -# define SSL_F_TLS1_PRF 284 -# define SSL_F_TLS1_SETUP_KEY_BLOCK 211 -# define SSL_F_TLS1_SET_SERVER_SIGALGS 335 -# define SSL_F_WRITE_PENDING 212 - -/* Reason codes. */ -# define SSL_R_APP_DATA_IN_HANDSHAKE 100 -# define SSL_R_ATTEMPT_TO_REUSE_SESSION_IN_DIFFERENT_CONTEXT 272 -# define SSL_R_BAD_ALERT_RECORD 101 -# define SSL_R_BAD_AUTHENTICATION_TYPE 102 -# define SSL_R_BAD_CHANGE_CIPHER_SPEC 103 -# define SSL_R_BAD_CHECKSUM 104 -# define SSL_R_BAD_DATA 390 -# define SSL_R_BAD_DATA_RETURNED_BY_CALLBACK 106 -# define SSL_R_BAD_DECOMPRESSION 107 -# define SSL_R_BAD_DH_G_LENGTH 108 -# define SSL_R_BAD_DH_PUB_KEY_LENGTH 109 -# define SSL_R_BAD_DH_P_LENGTH 110 -# define SSL_R_BAD_DIGEST_LENGTH 111 -# define SSL_R_BAD_DSA_SIGNATURE 112 -# define SSL_R_BAD_ECC_CERT 304 -# define SSL_R_BAD_ECDSA_SIGNATURE 305 -# define SSL_R_BAD_ECPOINT 306 -# define SSL_R_BAD_HANDSHAKE_LENGTH 332 -# define SSL_R_BAD_HELLO_REQUEST 105 -# define SSL_R_BAD_LENGTH 271 -# define SSL_R_BAD_MAC_DECODE 113 -# define SSL_R_BAD_MAC_LENGTH 333 -# define SSL_R_BAD_MESSAGE_TYPE 114 -# define SSL_R_BAD_PACKET_LENGTH 115 -# define SSL_R_BAD_PROTOCOL_VERSION_NUMBER 116 -# define SSL_R_BAD_PSK_IDENTITY_HINT_LENGTH 316 -# define SSL_R_BAD_RESPONSE_ARGUMENT 117 -# define SSL_R_BAD_RSA_DECRYPT 118 -# define SSL_R_BAD_RSA_ENCRYPT 119 -# define SSL_R_BAD_RSA_E_LENGTH 120 -# define SSL_R_BAD_RSA_MODULUS_LENGTH 121 -# define SSL_R_BAD_RSA_SIGNATURE 122 -# define SSL_R_BAD_SIGNATURE 123 -# define SSL_R_BAD_SRP_A_LENGTH 347 -# define SSL_R_BAD_SRP_B_LENGTH 348 -# define SSL_R_BAD_SRP_G_LENGTH 349 -# define SSL_R_BAD_SRP_N_LENGTH 350 -# define SSL_R_BAD_SRP_PARAMETERS 371 -# define SSL_R_BAD_SRP_S_LENGTH 351 -# define SSL_R_BAD_SRTP_MKI_VALUE 352 -# define SSL_R_BAD_SRTP_PROTECTION_PROFILE_LIST 353 -# define SSL_R_BAD_SSL_FILETYPE 124 -# define SSL_R_BAD_SSL_SESSION_ID_LENGTH 125 -# define SSL_R_BAD_STATE 126 -# define SSL_R_BAD_VALUE 384 -# define SSL_R_BAD_WRITE_RETRY 127 -# define SSL_R_BIO_NOT_SET 128 -# define SSL_R_BLOCK_CIPHER_PAD_IS_WRONG 129 -# define SSL_R_BN_LIB 130 -# define SSL_R_CA_DN_LENGTH_MISMATCH 131 -# define SSL_R_CA_DN_TOO_LONG 132 -# define SSL_R_CCS_RECEIVED_EARLY 133 -# define SSL_R_CERTIFICATE_VERIFY_FAILED 134 -# define SSL_R_CERT_CB_ERROR 377 -# define SSL_R_CERT_LENGTH_MISMATCH 135 -# define SSL_R_CHALLENGE_IS_DIFFERENT 136 -# define SSL_R_CIPHER_CODE_WRONG_LENGTH 137 -# define SSL_R_CIPHER_OR_HASH_UNAVAILABLE 138 -# define SSL_R_CIPHER_TABLE_SRC_ERROR 139 -# define SSL_R_CLIENTHELLO_TLSEXT 226 -# define SSL_R_COMPRESSED_LENGTH_TOO_LONG 140 -# define SSL_R_COMPRESSION_DISABLED 343 -# define SSL_R_COMPRESSION_FAILURE 141 -# define SSL_R_COMPRESSION_ID_NOT_WITHIN_PRIVATE_RANGE 307 -# define SSL_R_COMPRESSION_LIBRARY_ERROR 142 -# define SSL_R_CONNECTION_ID_IS_DIFFERENT 143 -# define SSL_R_CONNECTION_TYPE_NOT_SET 144 -# define SSL_R_COOKIE_MISMATCH 308 -# define SSL_R_DATA_BETWEEN_CCS_AND_FINISHED 145 -# define SSL_R_DATA_LENGTH_TOO_LONG 146 -# define SSL_R_DECRYPTION_FAILED 147 -# define SSL_R_DECRYPTION_FAILED_OR_BAD_RECORD_MAC 281 -# define SSL_R_DH_PUBLIC_VALUE_LENGTH_IS_WRONG 148 -# define SSL_R_DIGEST_CHECK_FAILED 149 -# define SSL_R_DTLS_MESSAGE_TOO_BIG 334 -# define SSL_R_DUPLICATE_COMPRESSION_ID 309 -# define SSL_R_ECC_CERT_NOT_FOR_KEY_AGREEMENT 317 -# define SSL_R_ECC_CERT_NOT_FOR_SIGNING 318 -# define SSL_R_ECC_CERT_SHOULD_HAVE_RSA_SIGNATURE 322 -# define SSL_R_ECC_CERT_SHOULD_HAVE_SHA1_SIGNATURE 323 -# define SSL_R_ECDH_REQUIRED_FOR_SUITEB_MODE 374 -# define SSL_R_ECGROUP_TOO_LARGE_FOR_CIPHER 310 -# define SSL_R_EMPTY_SRTP_PROTECTION_PROFILE_LIST 354 -# define SSL_R_ENCRYPTED_LENGTH_TOO_LONG 150 -# define SSL_R_ERROR_GENERATING_TMP_RSA_KEY 282 -# define SSL_R_ERROR_IN_RECEIVED_CIPHER_LIST 151 -# define SSL_R_EXCESSIVE_MESSAGE_SIZE 152 -# define SSL_R_EXTRA_DATA_IN_MESSAGE 153 -# define SSL_R_GOT_A_FIN_BEFORE_A_CCS 154 -# define SSL_R_GOT_NEXT_PROTO_BEFORE_A_CCS 355 -# define SSL_R_GOT_NEXT_PROTO_WITHOUT_EXTENSION 356 -# define SSL_R_HTTPS_PROXY_REQUEST 155 -# define SSL_R_HTTP_REQUEST 156 -# define SSL_R_ILLEGAL_PADDING 283 -# define SSL_R_ILLEGAL_SUITEB_DIGEST 380 -# define SSL_R_INAPPROPRIATE_FALLBACK 373 -# define SSL_R_INCONSISTENT_COMPRESSION 340 -# define SSL_R_INVALID_CHALLENGE_LENGTH 158 -# define SSL_R_INVALID_COMMAND 280 -# define SSL_R_INVALID_COMPRESSION_ALGORITHM 341 -# define SSL_R_INVALID_NULL_CMD_NAME 385 -# define SSL_R_INVALID_PURPOSE 278 -# define SSL_R_INVALID_SERVERINFO_DATA 388 -# define SSL_R_INVALID_SRP_USERNAME 357 -# define SSL_R_INVALID_STATUS_RESPONSE 328 -# define SSL_R_INVALID_TICKET_KEYS_LENGTH 325 -# define SSL_R_INVALID_TRUST 279 -# define SSL_R_KEY_ARG_TOO_LONG 284 -# define SSL_R_KRB5 285 -# define SSL_R_KRB5_C_CC_PRINC 286 -# define SSL_R_KRB5_C_GET_CRED 287 -# define SSL_R_KRB5_C_INIT 288 -# define SSL_R_KRB5_C_MK_REQ 289 -# define SSL_R_KRB5_S_BAD_TICKET 290 -# define SSL_R_KRB5_S_INIT 291 -# define SSL_R_KRB5_S_RD_REQ 292 -# define SSL_R_KRB5_S_TKT_EXPIRED 293 -# define SSL_R_KRB5_S_TKT_NYV 294 -# define SSL_R_KRB5_S_TKT_SKEW 295 -# define SSL_R_LENGTH_MISMATCH 159 -# define SSL_R_LENGTH_TOO_SHORT 160 -# define SSL_R_LIBRARY_BUG 274 -# define SSL_R_LIBRARY_HAS_NO_CIPHERS 161 -# define SSL_R_MESSAGE_TOO_LONG 296 -# define SSL_R_MISSING_DH_DSA_CERT 162 -# define SSL_R_MISSING_DH_KEY 163 -# define SSL_R_MISSING_DH_RSA_CERT 164 -# define SSL_R_MISSING_DSA_SIGNING_CERT 165 -# define SSL_R_MISSING_ECDH_CERT 382 -# define SSL_R_MISSING_ECDSA_SIGNING_CERT 381 -# define SSL_R_MISSING_EXPORT_TMP_DH_KEY 166 -# define SSL_R_MISSING_EXPORT_TMP_RSA_KEY 167 -# define SSL_R_MISSING_RSA_CERTIFICATE 168 -# define SSL_R_MISSING_RSA_ENCRYPTING_CERT 169 -# define SSL_R_MISSING_RSA_SIGNING_CERT 170 -# define SSL_R_MISSING_SRP_PARAM 358 -# define SSL_R_MISSING_TMP_DH_KEY 171 -# define SSL_R_MISSING_TMP_ECDH_KEY 311 -# define SSL_R_MISSING_TMP_RSA_KEY 172 -# define SSL_R_MISSING_TMP_RSA_PKEY 173 -# define SSL_R_MISSING_VERIFY_MESSAGE 174 -# define SSL_R_MULTIPLE_SGC_RESTARTS 346 -# define SSL_R_NON_SSLV2_INITIAL_PACKET 175 -# define SSL_R_NO_CERTIFICATES_RETURNED 176 -# define SSL_R_NO_CERTIFICATE_ASSIGNED 177 -# define SSL_R_NO_CERTIFICATE_RETURNED 178 -# define SSL_R_NO_CERTIFICATE_SET 179 -# define SSL_R_NO_CERTIFICATE_SPECIFIED 180 -# define SSL_R_NO_CIPHERS_AVAILABLE 181 -# define SSL_R_NO_CIPHERS_PASSED 182 -# define SSL_R_NO_CIPHERS_SPECIFIED 183 -# define SSL_R_NO_CIPHER_LIST 184 -# define SSL_R_NO_CIPHER_MATCH 185 -# define SSL_R_NO_CLIENT_CERT_METHOD 331 -# define SSL_R_NO_CLIENT_CERT_RECEIVED 186 -# define SSL_R_NO_COMPRESSION_SPECIFIED 187 -# define SSL_R_NO_GOST_CERTIFICATE_SENT_BY_PEER 330 -# define SSL_R_NO_METHOD_SPECIFIED 188 -# define SSL_R_NO_PEM_EXTENSIONS 389 -# define SSL_R_NO_PRIVATEKEY 189 -# define SSL_R_NO_PRIVATE_KEY_ASSIGNED 190 -# define SSL_R_NO_PROTOCOLS_AVAILABLE 191 -# define SSL_R_NO_PUBLICKEY 192 -# define SSL_R_NO_RENEGOTIATION 339 -# define SSL_R_NO_REQUIRED_DIGEST 324 -# define SSL_R_NO_SHARED_CIPHER 193 -# define SSL_R_NO_SHARED_SIGATURE_ALGORITHMS 376 -# define SSL_R_NO_SRTP_PROFILES 359 -# define SSL_R_NO_VERIFY_CALLBACK 194 -# define SSL_R_NULL_SSL_CTX 195 -# define SSL_R_NULL_SSL_METHOD_PASSED 196 -# define SSL_R_OLD_SESSION_CIPHER_NOT_RETURNED 197 -# define SSL_R_OLD_SESSION_COMPRESSION_ALGORITHM_NOT_RETURNED 344 -# define SSL_R_ONLY_DTLS_1_2_ALLOWED_IN_SUITEB_MODE 387 -# define SSL_R_ONLY_TLS_1_2_ALLOWED_IN_SUITEB_MODE 379 -# define SSL_R_ONLY_TLS_ALLOWED_IN_FIPS_MODE 297 -# define SSL_R_OPAQUE_PRF_INPUT_TOO_LONG 327 -# define SSL_R_PACKET_LENGTH_TOO_LONG 198 -# define SSL_R_PARSE_TLSEXT 227 -# define SSL_R_PATH_TOO_LONG 270 -# define SSL_R_PEER_DID_NOT_RETURN_A_CERTIFICATE 199 -# define SSL_R_PEER_ERROR 200 -# define SSL_R_PEER_ERROR_CERTIFICATE 201 -# define SSL_R_PEER_ERROR_NO_CERTIFICATE 202 -# define SSL_R_PEER_ERROR_NO_CIPHER 203 -# define SSL_R_PEER_ERROR_UNSUPPORTED_CERTIFICATE_TYPE 204 -# define SSL_R_PEM_NAME_BAD_PREFIX 391 -# define SSL_R_PEM_NAME_TOO_SHORT 392 -# define SSL_R_PRE_MAC_LENGTH_TOO_LONG 205 -# define SSL_R_PROBLEMS_MAPPING_CIPHER_FUNCTIONS 206 -# define SSL_R_PROTOCOL_IS_SHUTDOWN 207 -# define SSL_R_PSK_IDENTITY_NOT_FOUND 223 -# define SSL_R_PSK_NO_CLIENT_CB 224 -# define SSL_R_PSK_NO_SERVER_CB 225 -# define SSL_R_PUBLIC_KEY_ENCRYPT_ERROR 208 -# define SSL_R_PUBLIC_KEY_IS_NOT_RSA 209 -# define SSL_R_PUBLIC_KEY_NOT_RSA 210 -# define SSL_R_READ_BIO_NOT_SET 211 -# define SSL_R_READ_TIMEOUT_EXPIRED 312 -# define SSL_R_READ_WRONG_PACKET_TYPE 212 -# define SSL_R_RECORD_LENGTH_MISMATCH 213 -# define SSL_R_RECORD_TOO_LARGE 214 -# define SSL_R_RECORD_TOO_SMALL 298 -# define SSL_R_RENEGOTIATE_EXT_TOO_LONG 335 -# define SSL_R_RENEGOTIATION_ENCODING_ERR 336 -# define SSL_R_RENEGOTIATION_MISMATCH 337 -# define SSL_R_REQUIRED_CIPHER_MISSING 215 -# define SSL_R_REQUIRED_COMPRESSSION_ALGORITHM_MISSING 342 -# define SSL_R_REUSE_CERT_LENGTH_NOT_ZERO 216 -# define SSL_R_REUSE_CERT_TYPE_NOT_ZERO 217 -# define SSL_R_REUSE_CIPHER_LIST_NOT_ZERO 218 -# define SSL_R_SCSV_RECEIVED_WHEN_RENEGOTIATING 345 -# define SSL_R_SERVERHELLO_TLSEXT 275 -# define SSL_R_SESSION_ID_CONTEXT_UNINITIALIZED 277 -# define SSL_R_SHORT_READ 219 -# define SSL_R_SIGNATURE_ALGORITHMS_ERROR 360 -# define SSL_R_SIGNATURE_FOR_NON_SIGNING_CERTIFICATE 220 -# define SSL_R_SRP_A_CALC 361 -# define SSL_R_SRTP_COULD_NOT_ALLOCATE_PROFILES 362 -# define SSL_R_SRTP_PROTECTION_PROFILE_LIST_TOO_LONG 363 -# define SSL_R_SRTP_UNKNOWN_PROTECTION_PROFILE 364 -# define SSL_R_SSL23_DOING_SESSION_ID_REUSE 221 -# define SSL_R_SSL2_CONNECTION_ID_TOO_LONG 299 -# define SSL_R_SSL3_EXT_INVALID_ECPOINTFORMAT 321 -# define SSL_R_SSL3_EXT_INVALID_SERVERNAME 319 -# define SSL_R_SSL3_EXT_INVALID_SERVERNAME_TYPE 320 -# define SSL_R_SSL3_SESSION_ID_TOO_LONG 300 -# define SSL_R_SSL3_SESSION_ID_TOO_SHORT 222 -# define SSL_R_SSLV3_ALERT_BAD_CERTIFICATE 1042 -# define SSL_R_SSLV3_ALERT_BAD_RECORD_MAC 1020 -# define SSL_R_SSLV3_ALERT_CERTIFICATE_EXPIRED 1045 -# define SSL_R_SSLV3_ALERT_CERTIFICATE_REVOKED 1044 -# define SSL_R_SSLV3_ALERT_CERTIFICATE_UNKNOWN 1046 -# define SSL_R_SSLV3_ALERT_DECOMPRESSION_FAILURE 1030 -# define SSL_R_SSLV3_ALERT_HANDSHAKE_FAILURE 1040 -# define SSL_R_SSLV3_ALERT_ILLEGAL_PARAMETER 1047 -# define SSL_R_SSLV3_ALERT_NO_CERTIFICATE 1041 -# define SSL_R_SSLV3_ALERT_UNEXPECTED_MESSAGE 1010 -# define SSL_R_SSLV3_ALERT_UNSUPPORTED_CERTIFICATE 1043 -# define SSL_R_SSL_CTX_HAS_NO_DEFAULT_SSL_VERSION 228 -# define SSL_R_SSL_HANDSHAKE_FAILURE 229 -# define SSL_R_SSL_LIBRARY_HAS_NO_CIPHERS 230 -# define SSL_R_SSL_SESSION_ID_CALLBACK_FAILED 301 -# define SSL_R_SSL_SESSION_ID_CONFLICT 302 -# define SSL_R_SSL_SESSION_ID_CONTEXT_TOO_LONG 273 -# define SSL_R_SSL_SESSION_ID_HAS_BAD_LENGTH 303 -# define SSL_R_SSL_SESSION_ID_IS_DIFFERENT 231 -# define SSL_R_TLSV1_ALERT_ACCESS_DENIED 1049 -# define SSL_R_TLSV1_ALERT_DECODE_ERROR 1050 -# define SSL_R_TLSV1_ALERT_DECRYPTION_FAILED 1021 -# define SSL_R_TLSV1_ALERT_DECRYPT_ERROR 1051 -# define SSL_R_TLSV1_ALERT_EXPORT_RESTRICTION 1060 -# define SSL_R_TLSV1_ALERT_INAPPROPRIATE_FALLBACK 1086 -# define SSL_R_TLSV1_ALERT_INSUFFICIENT_SECURITY 1071 -# define SSL_R_TLSV1_ALERT_INTERNAL_ERROR 1080 -# define SSL_R_TLSV1_ALERT_NO_RENEGOTIATION 1100 -# define SSL_R_TLSV1_ALERT_PROTOCOL_VERSION 1070 -# define SSL_R_TLSV1_ALERT_RECORD_OVERFLOW 1022 -# define SSL_R_TLSV1_ALERT_UNKNOWN_CA 1048 -# define SSL_R_TLSV1_ALERT_USER_CANCELLED 1090 -# define SSL_R_TLSV1_BAD_CERTIFICATE_HASH_VALUE 1114 -# define SSL_R_TLSV1_BAD_CERTIFICATE_STATUS_RESPONSE 1113 -# define SSL_R_TLSV1_CERTIFICATE_UNOBTAINABLE 1111 -# define SSL_R_TLSV1_UNRECOGNIZED_NAME 1112 -# define SSL_R_TLSV1_UNSUPPORTED_EXTENSION 1110 -# define SSL_R_TLS_CLIENT_CERT_REQ_WITH_ANON_CIPHER 232 -# define SSL_R_TLS_HEARTBEAT_PEER_DOESNT_ACCEPT 365 -# define SSL_R_TLS_HEARTBEAT_PENDING 366 -# define SSL_R_TLS_ILLEGAL_EXPORTER_LABEL 367 -# define SSL_R_TLS_INVALID_ECPOINTFORMAT_LIST 157 -# define SSL_R_TLS_PEER_DID_NOT_RESPOND_WITH_CERTIFICATE_LIST 233 -# define SSL_R_TLS_RSA_ENCRYPTED_VALUE_LENGTH_IS_WRONG 234 -# define SSL_R_TRIED_TO_USE_UNSUPPORTED_CIPHER 235 -# define SSL_R_UNABLE_TO_DECODE_DH_CERTS 236 -# define SSL_R_UNABLE_TO_DECODE_ECDH_CERTS 313 -# define SSL_R_UNABLE_TO_EXTRACT_PUBLIC_KEY 237 -# define SSL_R_UNABLE_TO_FIND_DH_PARAMETERS 238 -# define SSL_R_UNABLE_TO_FIND_ECDH_PARAMETERS 314 -# define SSL_R_UNABLE_TO_FIND_PUBLIC_KEY_PARAMETERS 239 -# define SSL_R_UNABLE_TO_FIND_SSL_METHOD 240 -# define SSL_R_UNABLE_TO_LOAD_SSL2_MD5_ROUTINES 241 -# define SSL_R_UNABLE_TO_LOAD_SSL3_MD5_ROUTINES 242 -# define SSL_R_UNABLE_TO_LOAD_SSL3_SHA1_ROUTINES 243 -# define SSL_R_UNEXPECTED_MESSAGE 244 -# define SSL_R_UNEXPECTED_RECORD 245 -# define SSL_R_UNINITIALIZED 276 -# define SSL_R_UNKNOWN_ALERT_TYPE 246 -# define SSL_R_UNKNOWN_CERTIFICATE_TYPE 247 -# define SSL_R_UNKNOWN_CIPHER_RETURNED 248 -# define SSL_R_UNKNOWN_CIPHER_TYPE 249 -# define SSL_R_UNKNOWN_CMD_NAME 386 -# define SSL_R_UNKNOWN_DIGEST 368 -# define SSL_R_UNKNOWN_KEY_EXCHANGE_TYPE 250 -# define SSL_R_UNKNOWN_PKEY_TYPE 251 -# define SSL_R_UNKNOWN_PROTOCOL 252 -# define SSL_R_UNKNOWN_REMOTE_ERROR_TYPE 253 -# define SSL_R_UNKNOWN_SSL_VERSION 254 -# define SSL_R_UNKNOWN_STATE 255 -# define SSL_R_UNSAFE_LEGACY_RENEGOTIATION_DISABLED 338 -# define SSL_R_UNSUPPORTED_CIPHER 256 -# define SSL_R_UNSUPPORTED_COMPRESSION_ALGORITHM 257 -# define SSL_R_UNSUPPORTED_DIGEST_TYPE 326 -# define SSL_R_UNSUPPORTED_ELLIPTIC_CURVE 315 -# define SSL_R_UNSUPPORTED_PROTOCOL 258 -# define SSL_R_UNSUPPORTED_SSL_VERSION 259 -# define SSL_R_UNSUPPORTED_STATUS_TYPE 329 -# define SSL_R_USE_SRTP_NOT_NEGOTIATED 369 -# define SSL_R_WRITE_BIO_NOT_SET 260 -# define SSL_R_WRONG_CERTIFICATE_TYPE 383 -# define SSL_R_WRONG_CIPHER_RETURNED 261 -# define SSL_R_WRONG_CURVE 378 -# define SSL_R_WRONG_MESSAGE_TYPE 262 -# define SSL_R_WRONG_NUMBER_OF_KEY_BITS 263 -# define SSL_R_WRONG_SIGNATURE_LENGTH 264 -# define SSL_R_WRONG_SIGNATURE_SIZE 265 -# define SSL_R_WRONG_SIGNATURE_TYPE 370 -# define SSL_R_WRONG_SSL_VERSION 266 -# define SSL_R_WRONG_VERSION_NUMBER 267 -# define SSL_R_X509_LIB 268 -# define SSL_R_X509_VERIFICATION_SETUP_PROBLEMS 269 - -#ifdef __cplusplus -} -#endif -#endif diff --git a/ext/openssl-win64/inc32/openssl/ssl2.h b/ext/openssl-win64/inc32/openssl/ssl2.h deleted file mode 100644 index 03c7dd8c..00000000 --- a/ext/openssl-win64/inc32/openssl/ssl2.h +++ /dev/null @@ -1,265 +0,0 @@ -/* ssl/ssl2.h */ -/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) - * All rights reserved. - * - * This package is an SSL implementation written - * by Eric Young (eay@cryptsoft.com). - * The implementation was written so as to conform with Netscapes SSL. - * - * This library is free for commercial and non-commercial use as long as - * the following conditions are aheared to. The following conditions - * apply to all code found in this distribution, be it the RC4, RSA, - * lhash, DES, etc., code; not just the SSL code. The SSL documentation - * included with this distribution is covered by the same copyright terms - * except that the holder is Tim Hudson (tjh@cryptsoft.com). - * - * Copyright remains Eric Young's, and as such any Copyright notices in - * the code are not to be removed. - * If this package is used in a product, Eric Young should be given attribution - * as the author of the parts of the library used. - * This can be in the form of a textual message at program startup or - * in documentation (online or textual) provided with the package. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * "This product includes cryptographic software written by - * Eric Young (eay@cryptsoft.com)" - * The word 'cryptographic' can be left out if the rouines from the library - * being used are not cryptographic related :-). - * 4. If you include any Windows specific code (or a derivative thereof) from - * the apps directory (application code) you must include an acknowledgement: - * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" - * - * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * The licence and distribution terms for any publically available version or - * derivative of this code cannot be changed. i.e. this code cannot simply be - * copied and put under another distribution licence - * [including the GNU Public Licence.] - */ - -#ifndef HEADER_SSL2_H -# define HEADER_SSL2_H - -#ifdef __cplusplus -extern "C" { -#endif - -/* Protocol Version Codes */ -# define SSL2_VERSION 0x0002 -# define SSL2_VERSION_MAJOR 0x00 -# define SSL2_VERSION_MINOR 0x02 -/* #define SSL2_CLIENT_VERSION 0x0002 */ -/* #define SSL2_SERVER_VERSION 0x0002 */ - -/* Protocol Message Codes */ -# define SSL2_MT_ERROR 0 -# define SSL2_MT_CLIENT_HELLO 1 -# define SSL2_MT_CLIENT_MASTER_KEY 2 -# define SSL2_MT_CLIENT_FINISHED 3 -# define SSL2_MT_SERVER_HELLO 4 -# define SSL2_MT_SERVER_VERIFY 5 -# define SSL2_MT_SERVER_FINISHED 6 -# define SSL2_MT_REQUEST_CERTIFICATE 7 -# define SSL2_MT_CLIENT_CERTIFICATE 8 - -/* Error Message Codes */ -# define SSL2_PE_UNDEFINED_ERROR 0x0000 -# define SSL2_PE_NO_CIPHER 0x0001 -# define SSL2_PE_NO_CERTIFICATE 0x0002 -# define SSL2_PE_BAD_CERTIFICATE 0x0004 -# define SSL2_PE_UNSUPPORTED_CERTIFICATE_TYPE 0x0006 - -/* Cipher Kind Values */ -# define SSL2_CK_NULL_WITH_MD5 0x02000000/* v3 */ -# define SSL2_CK_RC4_128_WITH_MD5 0x02010080 -# define SSL2_CK_RC4_128_EXPORT40_WITH_MD5 0x02020080 -# define SSL2_CK_RC2_128_CBC_WITH_MD5 0x02030080 -# define SSL2_CK_RC2_128_CBC_EXPORT40_WITH_MD5 0x02040080 -# define SSL2_CK_IDEA_128_CBC_WITH_MD5 0x02050080 -# define SSL2_CK_DES_64_CBC_WITH_MD5 0x02060040 -# define SSL2_CK_DES_64_CBC_WITH_SHA 0x02060140/* v3 */ -# define SSL2_CK_DES_192_EDE3_CBC_WITH_MD5 0x020700c0 -# define SSL2_CK_DES_192_EDE3_CBC_WITH_SHA 0x020701c0/* v3 */ -# define SSL2_CK_RC4_64_WITH_MD5 0x02080080/* MS hack */ - -# define SSL2_CK_DES_64_CFB64_WITH_MD5_1 0x02ff0800/* SSLeay */ -# define SSL2_CK_NULL 0x02ff0810/* SSLeay */ - -# define SSL2_TXT_DES_64_CFB64_WITH_MD5_1 "DES-CFB-M1" -# define SSL2_TXT_NULL_WITH_MD5 "NULL-MD5" -# define SSL2_TXT_RC4_128_WITH_MD5 "RC4-MD5" -# define SSL2_TXT_RC4_128_EXPORT40_WITH_MD5 "EXP-RC4-MD5" -# define SSL2_TXT_RC2_128_CBC_WITH_MD5 "RC2-CBC-MD5" -# define SSL2_TXT_RC2_128_CBC_EXPORT40_WITH_MD5 "EXP-RC2-CBC-MD5" -# define SSL2_TXT_IDEA_128_CBC_WITH_MD5 "IDEA-CBC-MD5" -# define SSL2_TXT_DES_64_CBC_WITH_MD5 "DES-CBC-MD5" -# define SSL2_TXT_DES_64_CBC_WITH_SHA "DES-CBC-SHA" -# define SSL2_TXT_DES_192_EDE3_CBC_WITH_MD5 "DES-CBC3-MD5" -# define SSL2_TXT_DES_192_EDE3_CBC_WITH_SHA "DES-CBC3-SHA" -# define SSL2_TXT_RC4_64_WITH_MD5 "RC4-64-MD5" - -# define SSL2_TXT_NULL "NULL" - -/* Flags for the SSL_CIPHER.algorithm2 field */ -# define SSL2_CF_5_BYTE_ENC 0x01 -# define SSL2_CF_8_BYTE_ENC 0x02 - -/* Certificate Type Codes */ -# define SSL2_CT_X509_CERTIFICATE 0x01 - -/* Authentication Type Code */ -# define SSL2_AT_MD5_WITH_RSA_ENCRYPTION 0x01 - -# define SSL2_MAX_SSL_SESSION_ID_LENGTH 32 - -/* Upper/Lower Bounds */ -# define SSL2_MAX_MASTER_KEY_LENGTH_IN_BITS 256 -# ifdef OPENSSL_SYS_MPE -# define SSL2_MAX_RECORD_LENGTH_2_BYTE_HEADER 29998u -# else -# define SSL2_MAX_RECORD_LENGTH_2_BYTE_HEADER 32767u - /* 2^15-1 */ -# endif -# define SSL2_MAX_RECORD_LENGTH_3_BYTE_HEADER 16383/* 2^14-1 */ - -# define SSL2_CHALLENGE_LENGTH 16 -/* - * #define SSL2_CHALLENGE_LENGTH 32 - */ -# define SSL2_MIN_CHALLENGE_LENGTH 16 -# define SSL2_MAX_CHALLENGE_LENGTH 32 -# define SSL2_CONNECTION_ID_LENGTH 16 -# define SSL2_MAX_CONNECTION_ID_LENGTH 16 -# define SSL2_SSL_SESSION_ID_LENGTH 16 -# define SSL2_MAX_CERT_CHALLENGE_LENGTH 32 -# define SSL2_MIN_CERT_CHALLENGE_LENGTH 16 -# define SSL2_MAX_KEY_MATERIAL_LENGTH 24 - -# ifndef HEADER_SSL_LOCL_H -# define CERT char -# endif - -# ifndef OPENSSL_NO_SSL_INTERN - -typedef struct ssl2_state_st { - int three_byte_header; - int clear_text; /* clear text */ - int escape; /* not used in SSLv2 */ - int ssl2_rollback; /* used if SSLv23 rolled back to SSLv2 */ - /* - * non-blocking io info, used to make sure the same args were passwd - */ - unsigned int wnum; /* number of bytes sent so far */ - int wpend_tot; - const unsigned char *wpend_buf; - int wpend_off; /* offset to data to write */ - int wpend_len; /* number of bytes passwd to write */ - int wpend_ret; /* number of bytes to return to caller */ - /* buffer raw data */ - int rbuf_left; - int rbuf_offs; - unsigned char *rbuf; - unsigned char *wbuf; - unsigned char *write_ptr; /* used to point to the start due to 2/3 byte - * header. */ - unsigned int padding; - unsigned int rlength; /* passed to ssl2_enc */ - int ract_data_length; /* Set when things are encrypted. */ - unsigned int wlength; /* passed to ssl2_enc */ - int wact_data_length; /* Set when things are decrypted. */ - unsigned char *ract_data; - unsigned char *wact_data; - unsigned char *mac_data; - unsigned char *read_key; - unsigned char *write_key; - /* Stuff specifically to do with this SSL session */ - unsigned int challenge_length; - unsigned char challenge[SSL2_MAX_CHALLENGE_LENGTH]; - unsigned int conn_id_length; - unsigned char conn_id[SSL2_MAX_CONNECTION_ID_LENGTH]; - unsigned int key_material_length; - unsigned char key_material[SSL2_MAX_KEY_MATERIAL_LENGTH * 2]; - unsigned long read_sequence; - unsigned long write_sequence; - struct { - unsigned int conn_id_length; - unsigned int cert_type; - unsigned int cert_length; - unsigned int csl; - unsigned int clear; - unsigned int enc; - unsigned char ccl[SSL2_MAX_CERT_CHALLENGE_LENGTH]; - unsigned int cipher_spec_length; - unsigned int session_id_length; - unsigned int clen; - unsigned int rlen; - } tmp; -} SSL2_STATE; - -# endif - -/* SSLv2 */ -/* client */ -# define SSL2_ST_SEND_CLIENT_HELLO_A (0x10|SSL_ST_CONNECT) -# define SSL2_ST_SEND_CLIENT_HELLO_B (0x11|SSL_ST_CONNECT) -# define SSL2_ST_GET_SERVER_HELLO_A (0x20|SSL_ST_CONNECT) -# define SSL2_ST_GET_SERVER_HELLO_B (0x21|SSL_ST_CONNECT) -# define SSL2_ST_SEND_CLIENT_MASTER_KEY_A (0x30|SSL_ST_CONNECT) -# define SSL2_ST_SEND_CLIENT_MASTER_KEY_B (0x31|SSL_ST_CONNECT) -# define SSL2_ST_SEND_CLIENT_FINISHED_A (0x40|SSL_ST_CONNECT) -# define SSL2_ST_SEND_CLIENT_FINISHED_B (0x41|SSL_ST_CONNECT) -# define SSL2_ST_SEND_CLIENT_CERTIFICATE_A (0x50|SSL_ST_CONNECT) -# define SSL2_ST_SEND_CLIENT_CERTIFICATE_B (0x51|SSL_ST_CONNECT) -# define SSL2_ST_SEND_CLIENT_CERTIFICATE_C (0x52|SSL_ST_CONNECT) -# define SSL2_ST_SEND_CLIENT_CERTIFICATE_D (0x53|SSL_ST_CONNECT) -# define SSL2_ST_GET_SERVER_VERIFY_A (0x60|SSL_ST_CONNECT) -# define SSL2_ST_GET_SERVER_VERIFY_B (0x61|SSL_ST_CONNECT) -# define SSL2_ST_GET_SERVER_FINISHED_A (0x70|SSL_ST_CONNECT) -# define SSL2_ST_GET_SERVER_FINISHED_B (0x71|SSL_ST_CONNECT) -# define SSL2_ST_CLIENT_START_ENCRYPTION (0x80|SSL_ST_CONNECT) -# define SSL2_ST_X509_GET_CLIENT_CERTIFICATE (0x90|SSL_ST_CONNECT) -/* server */ -# define SSL2_ST_GET_CLIENT_HELLO_A (0x10|SSL_ST_ACCEPT) -# define SSL2_ST_GET_CLIENT_HELLO_B (0x11|SSL_ST_ACCEPT) -# define SSL2_ST_GET_CLIENT_HELLO_C (0x12|SSL_ST_ACCEPT) -# define SSL2_ST_SEND_SERVER_HELLO_A (0x20|SSL_ST_ACCEPT) -# define SSL2_ST_SEND_SERVER_HELLO_B (0x21|SSL_ST_ACCEPT) -# define SSL2_ST_GET_CLIENT_MASTER_KEY_A (0x30|SSL_ST_ACCEPT) -# define SSL2_ST_GET_CLIENT_MASTER_KEY_B (0x31|SSL_ST_ACCEPT) -# define SSL2_ST_SEND_SERVER_VERIFY_A (0x40|SSL_ST_ACCEPT) -# define SSL2_ST_SEND_SERVER_VERIFY_B (0x41|SSL_ST_ACCEPT) -# define SSL2_ST_SEND_SERVER_VERIFY_C (0x42|SSL_ST_ACCEPT) -# define SSL2_ST_GET_CLIENT_FINISHED_A (0x50|SSL_ST_ACCEPT) -# define SSL2_ST_GET_CLIENT_FINISHED_B (0x51|SSL_ST_ACCEPT) -# define SSL2_ST_SEND_SERVER_FINISHED_A (0x60|SSL_ST_ACCEPT) -# define SSL2_ST_SEND_SERVER_FINISHED_B (0x61|SSL_ST_ACCEPT) -# define SSL2_ST_SEND_REQUEST_CERTIFICATE_A (0x70|SSL_ST_ACCEPT) -# define SSL2_ST_SEND_REQUEST_CERTIFICATE_B (0x71|SSL_ST_ACCEPT) -# define SSL2_ST_SEND_REQUEST_CERTIFICATE_C (0x72|SSL_ST_ACCEPT) -# define SSL2_ST_SEND_REQUEST_CERTIFICATE_D (0x73|SSL_ST_ACCEPT) -# define SSL2_ST_SERVER_START_ENCRYPTION (0x80|SSL_ST_ACCEPT) -# define SSL2_ST_X509_GET_SERVER_CERTIFICATE (0x90|SSL_ST_ACCEPT) - -#ifdef __cplusplus -} -#endif -#endif diff --git a/ext/openssl-win64/inc32/openssl/ssl23.h b/ext/openssl-win64/inc32/openssl/ssl23.h deleted file mode 100644 index 9de4685a..00000000 --- a/ext/openssl-win64/inc32/openssl/ssl23.h +++ /dev/null @@ -1,84 +0,0 @@ -/* ssl/ssl23.h */ -/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) - * All rights reserved. - * - * This package is an SSL implementation written - * by Eric Young (eay@cryptsoft.com). - * The implementation was written so as to conform with Netscapes SSL. - * - * This library is free for commercial and non-commercial use as long as - * the following conditions are aheared to. The following conditions - * apply to all code found in this distribution, be it the RC4, RSA, - * lhash, DES, etc., code; not just the SSL code. The SSL documentation - * included with this distribution is covered by the same copyright terms - * except that the holder is Tim Hudson (tjh@cryptsoft.com). - * - * Copyright remains Eric Young's, and as such any Copyright notices in - * the code are not to be removed. - * If this package is used in a product, Eric Young should be given attribution - * as the author of the parts of the library used. - * This can be in the form of a textual message at program startup or - * in documentation (online or textual) provided with the package. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * "This product includes cryptographic software written by - * Eric Young (eay@cryptsoft.com)" - * The word 'cryptographic' can be left out if the rouines from the library - * being used are not cryptographic related :-). - * 4. If you include any Windows specific code (or a derivative thereof) from - * the apps directory (application code) you must include an acknowledgement: - * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" - * - * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * The licence and distribution terms for any publically available version or - * derivative of this code cannot be changed. i.e. this code cannot simply be - * copied and put under another distribution licence - * [including the GNU Public Licence.] - */ - -#ifndef HEADER_SSL23_H -# define HEADER_SSL23_H - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * client - */ -/* write to server */ -# define SSL23_ST_CW_CLNT_HELLO_A (0x210|SSL_ST_CONNECT) -# define SSL23_ST_CW_CLNT_HELLO_B (0x211|SSL_ST_CONNECT) -/* read from server */ -# define SSL23_ST_CR_SRVR_HELLO_A (0x220|SSL_ST_CONNECT) -# define SSL23_ST_CR_SRVR_HELLO_B (0x221|SSL_ST_CONNECT) - -/* server */ -/* read from client */ -# define SSL23_ST_SR_CLNT_HELLO_A (0x210|SSL_ST_ACCEPT) -# define SSL23_ST_SR_CLNT_HELLO_B (0x211|SSL_ST_ACCEPT) - -#ifdef __cplusplus -} -#endif -#endif diff --git a/ext/openssl-win64/inc32/openssl/ssl3.h b/ext/openssl-win64/inc32/openssl/ssl3.h deleted file mode 100644 index e681d50a..00000000 --- a/ext/openssl-win64/inc32/openssl/ssl3.h +++ /dev/null @@ -1,774 +0,0 @@ -/* ssl/ssl3.h */ -/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) - * All rights reserved. - * - * This package is an SSL implementation written - * by Eric Young (eay@cryptsoft.com). - * The implementation was written so as to conform with Netscapes SSL. - * - * This library is free for commercial and non-commercial use as long as - * the following conditions are aheared to. The following conditions - * apply to all code found in this distribution, be it the RC4, RSA, - * lhash, DES, etc., code; not just the SSL code. The SSL documentation - * included with this distribution is covered by the same copyright terms - * except that the holder is Tim Hudson (tjh@cryptsoft.com). - * - * Copyright remains Eric Young's, and as such any Copyright notices in - * the code are not to be removed. - * If this package is used in a product, Eric Young should be given attribution - * as the author of the parts of the library used. - * This can be in the form of a textual message at program startup or - * in documentation (online or textual) provided with the package. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * "This product includes cryptographic software written by - * Eric Young (eay@cryptsoft.com)" - * The word 'cryptographic' can be left out if the rouines from the library - * being used are not cryptographic related :-). - * 4. If you include any Windows specific code (or a derivative thereof) from - * the apps directory (application code) you must include an acknowledgement: - * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" - * - * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * The licence and distribution terms for any publically available version or - * derivative of this code cannot be changed. i.e. this code cannot simply be - * copied and put under another distribution licence - * [including the GNU Public Licence.] - */ -/* ==================================================================== - * Copyright (c) 1998-2002 The OpenSSL Project. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. All advertising materials mentioning features or use of this - * software must display the following acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" - * - * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * openssl-core@openssl.org. - * - * 5. Products derived from this software may not be called "OpenSSL" - * nor may "OpenSSL" appear in their names without prior written - * permission of the OpenSSL Project. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit (http://www.openssl.org/)" - * - * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY - * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * ==================================================================== - * - * This product includes cryptographic software written by Eric Young - * (eay@cryptsoft.com). This product includes software written by Tim - * Hudson (tjh@cryptsoft.com). - * - */ -/* ==================================================================== - * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED. - * ECC cipher suite support in OpenSSL originally developed by - * SUN MICROSYSTEMS, INC., and contributed to the OpenSSL project. - */ - -#ifndef HEADER_SSL3_H -# define HEADER_SSL3_H - -# ifndef OPENSSL_NO_COMP -# include -# endif -# include -# include -# include - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * Signalling cipher suite value from RFC 5746 - * (TLS_EMPTY_RENEGOTIATION_INFO_SCSV) - */ -# define SSL3_CK_SCSV 0x030000FF - -/* - * Signalling cipher suite value from draft-ietf-tls-downgrade-scsv-00 - * (TLS_FALLBACK_SCSV) - */ -# define SSL3_CK_FALLBACK_SCSV 0x03005600 - -# define SSL3_CK_RSA_NULL_MD5 0x03000001 -# define SSL3_CK_RSA_NULL_SHA 0x03000002 -# define SSL3_CK_RSA_RC4_40_MD5 0x03000003 -# define SSL3_CK_RSA_RC4_128_MD5 0x03000004 -# define SSL3_CK_RSA_RC4_128_SHA 0x03000005 -# define SSL3_CK_RSA_RC2_40_MD5 0x03000006 -# define SSL3_CK_RSA_IDEA_128_SHA 0x03000007 -# define SSL3_CK_RSA_DES_40_CBC_SHA 0x03000008 -# define SSL3_CK_RSA_DES_64_CBC_SHA 0x03000009 -# define SSL3_CK_RSA_DES_192_CBC3_SHA 0x0300000A - -# define SSL3_CK_DH_DSS_DES_40_CBC_SHA 0x0300000B -# define SSL3_CK_DH_DSS_DES_64_CBC_SHA 0x0300000C -# define SSL3_CK_DH_DSS_DES_192_CBC3_SHA 0x0300000D -# define SSL3_CK_DH_RSA_DES_40_CBC_SHA 0x0300000E -# define SSL3_CK_DH_RSA_DES_64_CBC_SHA 0x0300000F -# define SSL3_CK_DH_RSA_DES_192_CBC3_SHA 0x03000010 - -# define SSL3_CK_EDH_DSS_DES_40_CBC_SHA 0x03000011 -# define SSL3_CK_DHE_DSS_DES_40_CBC_SHA SSL3_CK_EDH_DSS_DES_40_CBC_SHA -# define SSL3_CK_EDH_DSS_DES_64_CBC_SHA 0x03000012 -# define SSL3_CK_DHE_DSS_DES_64_CBC_SHA SSL3_CK_EDH_DSS_DES_64_CBC_SHA -# define SSL3_CK_EDH_DSS_DES_192_CBC3_SHA 0x03000013 -# define SSL3_CK_DHE_DSS_DES_192_CBC3_SHA SSL3_CK_EDH_DSS_DES_192_CBC3_SHA -# define SSL3_CK_EDH_RSA_DES_40_CBC_SHA 0x03000014 -# define SSL3_CK_DHE_RSA_DES_40_CBC_SHA SSL3_CK_EDH_RSA_DES_40_CBC_SHA -# define SSL3_CK_EDH_RSA_DES_64_CBC_SHA 0x03000015 -# define SSL3_CK_DHE_RSA_DES_64_CBC_SHA SSL3_CK_EDH_RSA_DES_64_CBC_SHA -# define SSL3_CK_EDH_RSA_DES_192_CBC3_SHA 0x03000016 -# define SSL3_CK_DHE_RSA_DES_192_CBC3_SHA SSL3_CK_EDH_RSA_DES_192_CBC3_SHA - -# define SSL3_CK_ADH_RC4_40_MD5 0x03000017 -# define SSL3_CK_ADH_RC4_128_MD5 0x03000018 -# define SSL3_CK_ADH_DES_40_CBC_SHA 0x03000019 -# define SSL3_CK_ADH_DES_64_CBC_SHA 0x0300001A -# define SSL3_CK_ADH_DES_192_CBC_SHA 0x0300001B - -# if 0 -# define SSL3_CK_FZA_DMS_NULL_SHA 0x0300001C -# define SSL3_CK_FZA_DMS_FZA_SHA 0x0300001D -# if 0 /* Because it clashes with KRB5, is never - * used any more, and is safe to remove - * according to David Hopwood - * of the - * ietf-tls list */ -# define SSL3_CK_FZA_DMS_RC4_SHA 0x0300001E -# endif -# endif - -/* - * VRS Additional Kerberos5 entries - */ -# define SSL3_CK_KRB5_DES_64_CBC_SHA 0x0300001E -# define SSL3_CK_KRB5_DES_192_CBC3_SHA 0x0300001F -# define SSL3_CK_KRB5_RC4_128_SHA 0x03000020 -# define SSL3_CK_KRB5_IDEA_128_CBC_SHA 0x03000021 -# define SSL3_CK_KRB5_DES_64_CBC_MD5 0x03000022 -# define SSL3_CK_KRB5_DES_192_CBC3_MD5 0x03000023 -# define SSL3_CK_KRB5_RC4_128_MD5 0x03000024 -# define SSL3_CK_KRB5_IDEA_128_CBC_MD5 0x03000025 - -# define SSL3_CK_KRB5_DES_40_CBC_SHA 0x03000026 -# define SSL3_CK_KRB5_RC2_40_CBC_SHA 0x03000027 -# define SSL3_CK_KRB5_RC4_40_SHA 0x03000028 -# define SSL3_CK_KRB5_DES_40_CBC_MD5 0x03000029 -# define SSL3_CK_KRB5_RC2_40_CBC_MD5 0x0300002A -# define SSL3_CK_KRB5_RC4_40_MD5 0x0300002B - -# define SSL3_TXT_RSA_NULL_MD5 "NULL-MD5" -# define SSL3_TXT_RSA_NULL_SHA "NULL-SHA" -# define SSL3_TXT_RSA_RC4_40_MD5 "EXP-RC4-MD5" -# define SSL3_TXT_RSA_RC4_128_MD5 "RC4-MD5" -# define SSL3_TXT_RSA_RC4_128_SHA "RC4-SHA" -# define SSL3_TXT_RSA_RC2_40_MD5 "EXP-RC2-CBC-MD5" -# define SSL3_TXT_RSA_IDEA_128_SHA "IDEA-CBC-SHA" -# define SSL3_TXT_RSA_DES_40_CBC_SHA "EXP-DES-CBC-SHA" -# define SSL3_TXT_RSA_DES_64_CBC_SHA "DES-CBC-SHA" -# define SSL3_TXT_RSA_DES_192_CBC3_SHA "DES-CBC3-SHA" - -# define SSL3_TXT_DH_DSS_DES_40_CBC_SHA "EXP-DH-DSS-DES-CBC-SHA" -# define SSL3_TXT_DH_DSS_DES_64_CBC_SHA "DH-DSS-DES-CBC-SHA" -# define SSL3_TXT_DH_DSS_DES_192_CBC3_SHA "DH-DSS-DES-CBC3-SHA" -# define SSL3_TXT_DH_RSA_DES_40_CBC_SHA "EXP-DH-RSA-DES-CBC-SHA" -# define SSL3_TXT_DH_RSA_DES_64_CBC_SHA "DH-RSA-DES-CBC-SHA" -# define SSL3_TXT_DH_RSA_DES_192_CBC3_SHA "DH-RSA-DES-CBC3-SHA" - -# define SSL3_TXT_DHE_DSS_DES_40_CBC_SHA "EXP-DHE-DSS-DES-CBC-SHA" -# define SSL3_TXT_DHE_DSS_DES_64_CBC_SHA "DHE-DSS-DES-CBC-SHA" -# define SSL3_TXT_DHE_DSS_DES_192_CBC3_SHA "DHE-DSS-DES-CBC3-SHA" -# define SSL3_TXT_DHE_RSA_DES_40_CBC_SHA "EXP-DHE-RSA-DES-CBC-SHA" -# define SSL3_TXT_DHE_RSA_DES_64_CBC_SHA "DHE-RSA-DES-CBC-SHA" -# define SSL3_TXT_DHE_RSA_DES_192_CBC3_SHA "DHE-RSA-DES-CBC3-SHA" - -/* - * This next block of six "EDH" labels is for backward compatibility with - * older versions of OpenSSL. New code should use the six "DHE" labels above - * instead: - */ -# define SSL3_TXT_EDH_DSS_DES_40_CBC_SHA "EXP-EDH-DSS-DES-CBC-SHA" -# define SSL3_TXT_EDH_DSS_DES_64_CBC_SHA "EDH-DSS-DES-CBC-SHA" -# define SSL3_TXT_EDH_DSS_DES_192_CBC3_SHA "EDH-DSS-DES-CBC3-SHA" -# define SSL3_TXT_EDH_RSA_DES_40_CBC_SHA "EXP-EDH-RSA-DES-CBC-SHA" -# define SSL3_TXT_EDH_RSA_DES_64_CBC_SHA "EDH-RSA-DES-CBC-SHA" -# define SSL3_TXT_EDH_RSA_DES_192_CBC3_SHA "EDH-RSA-DES-CBC3-SHA" - -# define SSL3_TXT_ADH_RC4_40_MD5 "EXP-ADH-RC4-MD5" -# define SSL3_TXT_ADH_RC4_128_MD5 "ADH-RC4-MD5" -# define SSL3_TXT_ADH_DES_40_CBC_SHA "EXP-ADH-DES-CBC-SHA" -# define SSL3_TXT_ADH_DES_64_CBC_SHA "ADH-DES-CBC-SHA" -# define SSL3_TXT_ADH_DES_192_CBC_SHA "ADH-DES-CBC3-SHA" - -# if 0 -# define SSL3_TXT_FZA_DMS_NULL_SHA "FZA-NULL-SHA" -# define SSL3_TXT_FZA_DMS_FZA_SHA "FZA-FZA-CBC-SHA" -# define SSL3_TXT_FZA_DMS_RC4_SHA "FZA-RC4-SHA" -# endif - -# define SSL3_TXT_KRB5_DES_64_CBC_SHA "KRB5-DES-CBC-SHA" -# define SSL3_TXT_KRB5_DES_192_CBC3_SHA "KRB5-DES-CBC3-SHA" -# define SSL3_TXT_KRB5_RC4_128_SHA "KRB5-RC4-SHA" -# define SSL3_TXT_KRB5_IDEA_128_CBC_SHA "KRB5-IDEA-CBC-SHA" -# define SSL3_TXT_KRB5_DES_64_CBC_MD5 "KRB5-DES-CBC-MD5" -# define SSL3_TXT_KRB5_DES_192_CBC3_MD5 "KRB5-DES-CBC3-MD5" -# define SSL3_TXT_KRB5_RC4_128_MD5 "KRB5-RC4-MD5" -# define SSL3_TXT_KRB5_IDEA_128_CBC_MD5 "KRB5-IDEA-CBC-MD5" - -# define SSL3_TXT_KRB5_DES_40_CBC_SHA "EXP-KRB5-DES-CBC-SHA" -# define SSL3_TXT_KRB5_RC2_40_CBC_SHA "EXP-KRB5-RC2-CBC-SHA" -# define SSL3_TXT_KRB5_RC4_40_SHA "EXP-KRB5-RC4-SHA" -# define SSL3_TXT_KRB5_DES_40_CBC_MD5 "EXP-KRB5-DES-CBC-MD5" -# define SSL3_TXT_KRB5_RC2_40_CBC_MD5 "EXP-KRB5-RC2-CBC-MD5" -# define SSL3_TXT_KRB5_RC4_40_MD5 "EXP-KRB5-RC4-MD5" - -# define SSL3_SSL_SESSION_ID_LENGTH 32 -# define SSL3_MAX_SSL_SESSION_ID_LENGTH 32 - -# define SSL3_MASTER_SECRET_SIZE 48 -# define SSL3_RANDOM_SIZE 32 -# define SSL3_SESSION_ID_SIZE 32 -# define SSL3_RT_HEADER_LENGTH 5 - -# define SSL3_HM_HEADER_LENGTH 4 - -# ifndef SSL3_ALIGN_PAYLOAD - /* - * Some will argue that this increases memory footprint, but it's not - * actually true. Point is that malloc has to return at least 64-bit aligned - * pointers, meaning that allocating 5 bytes wastes 3 bytes in either case. - * Suggested pre-gaping simply moves these wasted bytes from the end of - * allocated region to its front, but makes data payload aligned, which - * improves performance:-) - */ -# define SSL3_ALIGN_PAYLOAD 8 -# else -# if (SSL3_ALIGN_PAYLOAD&(SSL3_ALIGN_PAYLOAD-1))!=0 -# error "insane SSL3_ALIGN_PAYLOAD" -# undef SSL3_ALIGN_PAYLOAD -# endif -# endif - -/* - * This is the maximum MAC (digest) size used by the SSL library. Currently - * maximum of 20 is used by SHA1, but we reserve for future extension for - * 512-bit hashes. - */ - -# define SSL3_RT_MAX_MD_SIZE 64 - -/* - * Maximum block size used in all ciphersuites. Currently 16 for AES. - */ - -# define SSL_RT_MAX_CIPHER_BLOCK_SIZE 16 - -# define SSL3_RT_MAX_EXTRA (16384) - -/* Maximum plaintext length: defined by SSL/TLS standards */ -# define SSL3_RT_MAX_PLAIN_LENGTH 16384 -/* Maximum compression overhead: defined by SSL/TLS standards */ -# define SSL3_RT_MAX_COMPRESSED_OVERHEAD 1024 - -/* - * The standards give a maximum encryption overhead of 1024 bytes. In - * practice the value is lower than this. The overhead is the maximum number - * of padding bytes (256) plus the mac size. - */ -# define SSL3_RT_MAX_ENCRYPTED_OVERHEAD (256 + SSL3_RT_MAX_MD_SIZE) - -/* - * OpenSSL currently only uses a padding length of at most one block so the - * send overhead is smaller. - */ - -# define SSL3_RT_SEND_MAX_ENCRYPTED_OVERHEAD \ - (SSL_RT_MAX_CIPHER_BLOCK_SIZE + SSL3_RT_MAX_MD_SIZE) - -/* If compression isn't used don't include the compression overhead */ - -# ifdef OPENSSL_NO_COMP -# define SSL3_RT_MAX_COMPRESSED_LENGTH SSL3_RT_MAX_PLAIN_LENGTH -# else -# define SSL3_RT_MAX_COMPRESSED_LENGTH \ - (SSL3_RT_MAX_PLAIN_LENGTH+SSL3_RT_MAX_COMPRESSED_OVERHEAD) -# endif -# define SSL3_RT_MAX_ENCRYPTED_LENGTH \ - (SSL3_RT_MAX_ENCRYPTED_OVERHEAD+SSL3_RT_MAX_COMPRESSED_LENGTH) -# define SSL3_RT_MAX_PACKET_SIZE \ - (SSL3_RT_MAX_ENCRYPTED_LENGTH+SSL3_RT_HEADER_LENGTH) - -# define SSL3_MD_CLIENT_FINISHED_CONST "\x43\x4C\x4E\x54" -# define SSL3_MD_SERVER_FINISHED_CONST "\x53\x52\x56\x52" - -# define SSL3_VERSION 0x0300 -# define SSL3_VERSION_MAJOR 0x03 -# define SSL3_VERSION_MINOR 0x00 - -# define SSL3_RT_CHANGE_CIPHER_SPEC 20 -# define SSL3_RT_ALERT 21 -# define SSL3_RT_HANDSHAKE 22 -# define SSL3_RT_APPLICATION_DATA 23 -# define TLS1_RT_HEARTBEAT 24 - -/* Pseudo content types to indicate additional parameters */ -# define TLS1_RT_CRYPTO 0x1000 -# define TLS1_RT_CRYPTO_PREMASTER (TLS1_RT_CRYPTO | 0x1) -# define TLS1_RT_CRYPTO_CLIENT_RANDOM (TLS1_RT_CRYPTO | 0x2) -# define TLS1_RT_CRYPTO_SERVER_RANDOM (TLS1_RT_CRYPTO | 0x3) -# define TLS1_RT_CRYPTO_MASTER (TLS1_RT_CRYPTO | 0x4) - -# define TLS1_RT_CRYPTO_READ 0x0000 -# define TLS1_RT_CRYPTO_WRITE 0x0100 -# define TLS1_RT_CRYPTO_MAC (TLS1_RT_CRYPTO | 0x5) -# define TLS1_RT_CRYPTO_KEY (TLS1_RT_CRYPTO | 0x6) -# define TLS1_RT_CRYPTO_IV (TLS1_RT_CRYPTO | 0x7) -# define TLS1_RT_CRYPTO_FIXED_IV (TLS1_RT_CRYPTO | 0x8) - -/* Pseudo content type for SSL/TLS header info */ -# define SSL3_RT_HEADER 0x100 - -# define SSL3_AL_WARNING 1 -# define SSL3_AL_FATAL 2 - -# define SSL3_AD_CLOSE_NOTIFY 0 -# define SSL3_AD_UNEXPECTED_MESSAGE 10/* fatal */ -# define SSL3_AD_BAD_RECORD_MAC 20/* fatal */ -# define SSL3_AD_DECOMPRESSION_FAILURE 30/* fatal */ -# define SSL3_AD_HANDSHAKE_FAILURE 40/* fatal */ -# define SSL3_AD_NO_CERTIFICATE 41 -# define SSL3_AD_BAD_CERTIFICATE 42 -# define SSL3_AD_UNSUPPORTED_CERTIFICATE 43 -# define SSL3_AD_CERTIFICATE_REVOKED 44 -# define SSL3_AD_CERTIFICATE_EXPIRED 45 -# define SSL3_AD_CERTIFICATE_UNKNOWN 46 -# define SSL3_AD_ILLEGAL_PARAMETER 47/* fatal */ - -# define TLS1_HB_REQUEST 1 -# define TLS1_HB_RESPONSE 2 - -# ifndef OPENSSL_NO_SSL_INTERN - -typedef struct ssl3_record_st { - /* type of record */ - /* - * r - */ int type; - /* How many bytes available */ - /* - * rw - */ unsigned int length; - /* read/write offset into 'buf' */ - /* - * r - */ unsigned int off; - /* pointer to the record data */ - /* - * rw - */ unsigned char *data; - /* where the decode bytes are */ - /* - * rw - */ unsigned char *input; - /* only used with decompression - malloc()ed */ - /* - * r - */ unsigned char *comp; - /* epoch number, needed by DTLS1 */ - /* - * r - */ unsigned long epoch; - /* sequence number, needed by DTLS1 */ - /* - * r - */ unsigned char seq_num[8]; -} SSL3_RECORD; - -typedef struct ssl3_buffer_st { - /* at least SSL3_RT_MAX_PACKET_SIZE bytes, see ssl3_setup_buffers() */ - unsigned char *buf; - /* buffer size */ - size_t len; - /* where to 'copy from' */ - int offset; - /* how many bytes left */ - int left; -} SSL3_BUFFER; - -# endif - -# define SSL3_CT_RSA_SIGN 1 -# define SSL3_CT_DSS_SIGN 2 -# define SSL3_CT_RSA_FIXED_DH 3 -# define SSL3_CT_DSS_FIXED_DH 4 -# define SSL3_CT_RSA_EPHEMERAL_DH 5 -# define SSL3_CT_DSS_EPHEMERAL_DH 6 -# define SSL3_CT_FORTEZZA_DMS 20 -/* - * SSL3_CT_NUMBER is used to size arrays and it must be large enough to - * contain all of the cert types defined either for SSLv3 and TLSv1. - */ -# define SSL3_CT_NUMBER 9 - -# define SSL3_FLAGS_NO_RENEGOTIATE_CIPHERS 0x0001 -# define SSL3_FLAGS_DELAY_CLIENT_FINISHED 0x0002 -# define SSL3_FLAGS_POP_BUFFER 0x0004 -# define TLS1_FLAGS_TLS_PADDING_BUG 0x0008 -# define TLS1_FLAGS_SKIP_CERT_VERIFY 0x0010 -# define TLS1_FLAGS_KEEP_HANDSHAKE 0x0020 -/* - * Set when the handshake is ready to process peer's ChangeCipherSpec message. - * Cleared after the message has been processed. - */ -# define SSL3_FLAGS_CCS_OK 0x0080 - -/* SSL3_FLAGS_SGC_RESTART_DONE is no longer used */ -# define SSL3_FLAGS_SGC_RESTART_DONE 0x0040 - -# ifndef OPENSSL_NO_SSL_INTERN - -typedef struct ssl3_state_st { - long flags; - int delay_buf_pop_ret; - unsigned char read_sequence[8]; - int read_mac_secret_size; - unsigned char read_mac_secret[EVP_MAX_MD_SIZE]; - unsigned char write_sequence[8]; - int write_mac_secret_size; - unsigned char write_mac_secret[EVP_MAX_MD_SIZE]; - unsigned char server_random[SSL3_RANDOM_SIZE]; - unsigned char client_random[SSL3_RANDOM_SIZE]; - /* flags for countermeasure against known-IV weakness */ - int need_empty_fragments; - int empty_fragment_done; - /* The value of 'extra' when the buffers were initialized */ - int init_extra; - SSL3_BUFFER rbuf; /* read IO goes into here */ - SSL3_BUFFER wbuf; /* write IO goes into here */ - SSL3_RECORD rrec; /* each decoded record goes in here */ - SSL3_RECORD wrec; /* goes out from here */ - /* - * storage for Alert/Handshake protocol data received but not yet - * processed by ssl3_read_bytes: - */ - unsigned char alert_fragment[2]; - unsigned int alert_fragment_len; - unsigned char handshake_fragment[4]; - unsigned int handshake_fragment_len; - /* partial write - check the numbers match */ - unsigned int wnum; /* number of bytes sent so far */ - int wpend_tot; /* number bytes written */ - int wpend_type; - int wpend_ret; /* number of bytes submitted */ - const unsigned char *wpend_buf; - /* used during startup, digest all incoming/outgoing packets */ - BIO *handshake_buffer; - /* - * When set of handshake digests is determined, buffer is hashed and - * freed and MD_CTX-es for all required digests are stored in this array - */ - EVP_MD_CTX **handshake_dgst; - /* - * Set whenever an expected ChangeCipherSpec message is processed. - * Unset when the peer's Finished message is received. - * Unexpected ChangeCipherSpec messages trigger a fatal alert. - */ - int change_cipher_spec; - int warn_alert; - int fatal_alert; - /* - * we allow one fatal and one warning alert to be outstanding, send close - * alert via the warning alert - */ - int alert_dispatch; - unsigned char send_alert[2]; - /* - * This flag is set when we should renegotiate ASAP, basically when there - * is no more data in the read or write buffers - */ - int renegotiate; - int total_renegotiations; - int num_renegotiations; - int in_read_app_data; - /* - * Opaque PRF input as used for the current handshake. These fields are - * used only if TLSEXT_TYPE_opaque_prf_input is defined (otherwise, they - * are merely present to improve binary compatibility) - */ - void *client_opaque_prf_input; - size_t client_opaque_prf_input_len; - void *server_opaque_prf_input; - size_t server_opaque_prf_input_len; - struct { - /* actually only needs to be 16+20 */ - unsigned char cert_verify_md[EVP_MAX_MD_SIZE * 2]; - /* actually only need to be 16+20 for SSLv3 and 12 for TLS */ - unsigned char finish_md[EVP_MAX_MD_SIZE * 2]; - int finish_md_len; - unsigned char peer_finish_md[EVP_MAX_MD_SIZE * 2]; - int peer_finish_md_len; - unsigned long message_size; - int message_type; - /* used to hold the new cipher we are going to use */ - const SSL_CIPHER *new_cipher; -# ifndef OPENSSL_NO_DH - DH *dh; -# endif -# ifndef OPENSSL_NO_ECDH - EC_KEY *ecdh; /* holds short lived ECDH key */ -# endif - /* used when SSL_ST_FLUSH_DATA is entered */ - int next_state; - int reuse_message; - /* used for certificate requests */ - int cert_req; - int ctype_num; - char ctype[SSL3_CT_NUMBER]; - STACK_OF(X509_NAME) *ca_names; - int use_rsa_tmp; - int key_block_length; - unsigned char *key_block; - const EVP_CIPHER *new_sym_enc; - const EVP_MD *new_hash; - int new_mac_pkey_type; - int new_mac_secret_size; -# ifndef OPENSSL_NO_COMP - const SSL_COMP *new_compression; -# else - char *new_compression; -# endif - int cert_request; - } tmp; - - /* Connection binding to prevent renegotiation attacks */ - unsigned char previous_client_finished[EVP_MAX_MD_SIZE]; - unsigned char previous_client_finished_len; - unsigned char previous_server_finished[EVP_MAX_MD_SIZE]; - unsigned char previous_server_finished_len; - int send_connection_binding; /* TODOEKR */ - -# ifndef OPENSSL_NO_NEXTPROTONEG - /* - * Set if we saw the Next Protocol Negotiation extension from our peer. - */ - int next_proto_neg_seen; -# endif - -# ifndef OPENSSL_NO_TLSEXT -# ifndef OPENSSL_NO_EC - /* - * This is set to true if we believe that this is a version of Safari - * running on OS X 10.6 or newer. We wish to know this because Safari on - * 10.8 .. 10.8.3 has broken ECDHE-ECDSA support. - */ - char is_probably_safari; -# endif /* !OPENSSL_NO_EC */ - - /* - * ALPN information (we are in the process of transitioning from NPN to - * ALPN.) - */ - - /* - * In a server these point to the selected ALPN protocol after the - * ClientHello has been processed. In a client these contain the protocol - * that the server selected once the ServerHello has been processed. - */ - unsigned char *alpn_selected; - unsigned alpn_selected_len; -# endif /* OPENSSL_NO_TLSEXT */ -} SSL3_STATE; - -# endif - -/* SSLv3 */ -/* - * client - */ -/* extra state */ -# define SSL3_ST_CW_FLUSH (0x100|SSL_ST_CONNECT) -# ifndef OPENSSL_NO_SCTP -# define DTLS1_SCTP_ST_CW_WRITE_SOCK (0x310|SSL_ST_CONNECT) -# define DTLS1_SCTP_ST_CR_READ_SOCK (0x320|SSL_ST_CONNECT) -# endif -/* write to server */ -# define SSL3_ST_CW_CLNT_HELLO_A (0x110|SSL_ST_CONNECT) -# define SSL3_ST_CW_CLNT_HELLO_B (0x111|SSL_ST_CONNECT) -/* read from server */ -# define SSL3_ST_CR_SRVR_HELLO_A (0x120|SSL_ST_CONNECT) -# define SSL3_ST_CR_SRVR_HELLO_B (0x121|SSL_ST_CONNECT) -# define DTLS1_ST_CR_HELLO_VERIFY_REQUEST_A (0x126|SSL_ST_CONNECT) -# define DTLS1_ST_CR_HELLO_VERIFY_REQUEST_B (0x127|SSL_ST_CONNECT) -# define SSL3_ST_CR_CERT_A (0x130|SSL_ST_CONNECT) -# define SSL3_ST_CR_CERT_B (0x131|SSL_ST_CONNECT) -# define SSL3_ST_CR_KEY_EXCH_A (0x140|SSL_ST_CONNECT) -# define SSL3_ST_CR_KEY_EXCH_B (0x141|SSL_ST_CONNECT) -# define SSL3_ST_CR_CERT_REQ_A (0x150|SSL_ST_CONNECT) -# define SSL3_ST_CR_CERT_REQ_B (0x151|SSL_ST_CONNECT) -# define SSL3_ST_CR_SRVR_DONE_A (0x160|SSL_ST_CONNECT) -# define SSL3_ST_CR_SRVR_DONE_B (0x161|SSL_ST_CONNECT) -/* write to server */ -# define SSL3_ST_CW_CERT_A (0x170|SSL_ST_CONNECT) -# define SSL3_ST_CW_CERT_B (0x171|SSL_ST_CONNECT) -# define SSL3_ST_CW_CERT_C (0x172|SSL_ST_CONNECT) -# define SSL3_ST_CW_CERT_D (0x173|SSL_ST_CONNECT) -# define SSL3_ST_CW_KEY_EXCH_A (0x180|SSL_ST_CONNECT) -# define SSL3_ST_CW_KEY_EXCH_B (0x181|SSL_ST_CONNECT) -# define SSL3_ST_CW_CERT_VRFY_A (0x190|SSL_ST_CONNECT) -# define SSL3_ST_CW_CERT_VRFY_B (0x191|SSL_ST_CONNECT) -# define SSL3_ST_CW_CHANGE_A (0x1A0|SSL_ST_CONNECT) -# define SSL3_ST_CW_CHANGE_B (0x1A1|SSL_ST_CONNECT) -# ifndef OPENSSL_NO_NEXTPROTONEG -# define SSL3_ST_CW_NEXT_PROTO_A (0x200|SSL_ST_CONNECT) -# define SSL3_ST_CW_NEXT_PROTO_B (0x201|SSL_ST_CONNECT) -# endif -# define SSL3_ST_CW_FINISHED_A (0x1B0|SSL_ST_CONNECT) -# define SSL3_ST_CW_FINISHED_B (0x1B1|SSL_ST_CONNECT) -/* read from server */ -# define SSL3_ST_CR_CHANGE_A (0x1C0|SSL_ST_CONNECT) -# define SSL3_ST_CR_CHANGE_B (0x1C1|SSL_ST_CONNECT) -# define SSL3_ST_CR_FINISHED_A (0x1D0|SSL_ST_CONNECT) -# define SSL3_ST_CR_FINISHED_B (0x1D1|SSL_ST_CONNECT) -# define SSL3_ST_CR_SESSION_TICKET_A (0x1E0|SSL_ST_CONNECT) -# define SSL3_ST_CR_SESSION_TICKET_B (0x1E1|SSL_ST_CONNECT) -# define SSL3_ST_CR_CERT_STATUS_A (0x1F0|SSL_ST_CONNECT) -# define SSL3_ST_CR_CERT_STATUS_B (0x1F1|SSL_ST_CONNECT) - -/* server */ -/* extra state */ -# define SSL3_ST_SW_FLUSH (0x100|SSL_ST_ACCEPT) -# ifndef OPENSSL_NO_SCTP -# define DTLS1_SCTP_ST_SW_WRITE_SOCK (0x310|SSL_ST_ACCEPT) -# define DTLS1_SCTP_ST_SR_READ_SOCK (0x320|SSL_ST_ACCEPT) -# endif -/* read from client */ -/* Do not change the number values, they do matter */ -# define SSL3_ST_SR_CLNT_HELLO_A (0x110|SSL_ST_ACCEPT) -# define SSL3_ST_SR_CLNT_HELLO_B (0x111|SSL_ST_ACCEPT) -# define SSL3_ST_SR_CLNT_HELLO_C (0x112|SSL_ST_ACCEPT) -# define SSL3_ST_SR_CLNT_HELLO_D (0x115|SSL_ST_ACCEPT) -/* write to client */ -# define DTLS1_ST_SW_HELLO_VERIFY_REQUEST_A (0x113|SSL_ST_ACCEPT) -# define DTLS1_ST_SW_HELLO_VERIFY_REQUEST_B (0x114|SSL_ST_ACCEPT) -# define SSL3_ST_SW_HELLO_REQ_A (0x120|SSL_ST_ACCEPT) -# define SSL3_ST_SW_HELLO_REQ_B (0x121|SSL_ST_ACCEPT) -# define SSL3_ST_SW_HELLO_REQ_C (0x122|SSL_ST_ACCEPT) -# define SSL3_ST_SW_SRVR_HELLO_A (0x130|SSL_ST_ACCEPT) -# define SSL3_ST_SW_SRVR_HELLO_B (0x131|SSL_ST_ACCEPT) -# define SSL3_ST_SW_CERT_A (0x140|SSL_ST_ACCEPT) -# define SSL3_ST_SW_CERT_B (0x141|SSL_ST_ACCEPT) -# define SSL3_ST_SW_KEY_EXCH_A (0x150|SSL_ST_ACCEPT) -# define SSL3_ST_SW_KEY_EXCH_B (0x151|SSL_ST_ACCEPT) -# define SSL3_ST_SW_CERT_REQ_A (0x160|SSL_ST_ACCEPT) -# define SSL3_ST_SW_CERT_REQ_B (0x161|SSL_ST_ACCEPT) -# define SSL3_ST_SW_SRVR_DONE_A (0x170|SSL_ST_ACCEPT) -# define SSL3_ST_SW_SRVR_DONE_B (0x171|SSL_ST_ACCEPT) -/* read from client */ -# define SSL3_ST_SR_CERT_A (0x180|SSL_ST_ACCEPT) -# define SSL3_ST_SR_CERT_B (0x181|SSL_ST_ACCEPT) -# define SSL3_ST_SR_KEY_EXCH_A (0x190|SSL_ST_ACCEPT) -# define SSL3_ST_SR_KEY_EXCH_B (0x191|SSL_ST_ACCEPT) -# define SSL3_ST_SR_CERT_VRFY_A (0x1A0|SSL_ST_ACCEPT) -# define SSL3_ST_SR_CERT_VRFY_B (0x1A1|SSL_ST_ACCEPT) -# define SSL3_ST_SR_CHANGE_A (0x1B0|SSL_ST_ACCEPT) -# define SSL3_ST_SR_CHANGE_B (0x1B1|SSL_ST_ACCEPT) -# ifndef OPENSSL_NO_NEXTPROTONEG -# define SSL3_ST_SR_NEXT_PROTO_A (0x210|SSL_ST_ACCEPT) -# define SSL3_ST_SR_NEXT_PROTO_B (0x211|SSL_ST_ACCEPT) -# endif -# define SSL3_ST_SR_FINISHED_A (0x1C0|SSL_ST_ACCEPT) -# define SSL3_ST_SR_FINISHED_B (0x1C1|SSL_ST_ACCEPT) -/* write to client */ -# define SSL3_ST_SW_CHANGE_A (0x1D0|SSL_ST_ACCEPT) -# define SSL3_ST_SW_CHANGE_B (0x1D1|SSL_ST_ACCEPT) -# define SSL3_ST_SW_FINISHED_A (0x1E0|SSL_ST_ACCEPT) -# define SSL3_ST_SW_FINISHED_B (0x1E1|SSL_ST_ACCEPT) -# define SSL3_ST_SW_SESSION_TICKET_A (0x1F0|SSL_ST_ACCEPT) -# define SSL3_ST_SW_SESSION_TICKET_B (0x1F1|SSL_ST_ACCEPT) -# define SSL3_ST_SW_CERT_STATUS_A (0x200|SSL_ST_ACCEPT) -# define SSL3_ST_SW_CERT_STATUS_B (0x201|SSL_ST_ACCEPT) - -# define SSL3_MT_HELLO_REQUEST 0 -# define SSL3_MT_CLIENT_HELLO 1 -# define SSL3_MT_SERVER_HELLO 2 -# define SSL3_MT_NEWSESSION_TICKET 4 -# define SSL3_MT_CERTIFICATE 11 -# define SSL3_MT_SERVER_KEY_EXCHANGE 12 -# define SSL3_MT_CERTIFICATE_REQUEST 13 -# define SSL3_MT_SERVER_DONE 14 -# define SSL3_MT_CERTIFICATE_VERIFY 15 -# define SSL3_MT_CLIENT_KEY_EXCHANGE 16 -# define SSL3_MT_FINISHED 20 -# define SSL3_MT_CERTIFICATE_STATUS 22 -# ifndef OPENSSL_NO_NEXTPROTONEG -# define SSL3_MT_NEXT_PROTO 67 -# endif -# define DTLS1_MT_HELLO_VERIFY_REQUEST 3 - -# define SSL3_MT_CCS 1 - -/* These are used when changing over to a new cipher */ -# define SSL3_CC_READ 0x01 -# define SSL3_CC_WRITE 0x02 -# define SSL3_CC_CLIENT 0x10 -# define SSL3_CC_SERVER 0x20 -# define SSL3_CHANGE_CIPHER_CLIENT_WRITE (SSL3_CC_CLIENT|SSL3_CC_WRITE) -# define SSL3_CHANGE_CIPHER_SERVER_READ (SSL3_CC_SERVER|SSL3_CC_READ) -# define SSL3_CHANGE_CIPHER_CLIENT_READ (SSL3_CC_CLIENT|SSL3_CC_READ) -# define SSL3_CHANGE_CIPHER_SERVER_WRITE (SSL3_CC_SERVER|SSL3_CC_WRITE) - -#ifdef __cplusplus -} -#endif -#endif diff --git a/ext/openssl-win64/inc32/openssl/stack.h b/ext/openssl-win64/inc32/openssl/stack.h deleted file mode 100644 index eb072166..00000000 --- a/ext/openssl-win64/inc32/openssl/stack.h +++ /dev/null @@ -1,107 +0,0 @@ -/* crypto/stack/stack.h */ -/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) - * All rights reserved. - * - * This package is an SSL implementation written - * by Eric Young (eay@cryptsoft.com). - * The implementation was written so as to conform with Netscapes SSL. - * - * This library is free for commercial and non-commercial use as long as - * the following conditions are aheared to. The following conditions - * apply to all code found in this distribution, be it the RC4, RSA, - * lhash, DES, etc., code; not just the SSL code. The SSL documentation - * included with this distribution is covered by the same copyright terms - * except that the holder is Tim Hudson (tjh@cryptsoft.com). - * - * Copyright remains Eric Young's, and as such any Copyright notices in - * the code are not to be removed. - * If this package is used in a product, Eric Young should be given attribution - * as the author of the parts of the library used. - * This can be in the form of a textual message at program startup or - * in documentation (online or textual) provided with the package. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * "This product includes cryptographic software written by - * Eric Young (eay@cryptsoft.com)" - * The word 'cryptographic' can be left out if the rouines from the library - * being used are not cryptographic related :-). - * 4. If you include any Windows specific code (or a derivative thereof) from - * the apps directory (application code) you must include an acknowledgement: - * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" - * - * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * The licence and distribution terms for any publically available version or - * derivative of this code cannot be changed. i.e. this code cannot simply be - * copied and put under another distribution licence - * [including the GNU Public Licence.] - */ - -#ifndef HEADER_STACK_H -# define HEADER_STACK_H - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct stack_st { - int num; - char **data; - int sorted; - int num_alloc; - int (*comp) (const void *, const void *); -} _STACK; /* Use STACK_OF(...) instead */ - -# define M_sk_num(sk) ((sk) ? (sk)->num:-1) -# define M_sk_value(sk,n) ((sk) ? (sk)->data[n] : NULL) - -int sk_num(const _STACK *); -void *sk_value(const _STACK *, int); - -void *sk_set(_STACK *, int, void *); - -_STACK *sk_new(int (*cmp) (const void *, const void *)); -_STACK *sk_new_null(void); -void sk_free(_STACK *); -void sk_pop_free(_STACK *st, void (*func) (void *)); -_STACK *sk_deep_copy(_STACK *, void *(*)(void *), void (*)(void *)); -int sk_insert(_STACK *sk, void *data, int where); -void *sk_delete(_STACK *st, int loc); -void *sk_delete_ptr(_STACK *st, void *p); -int sk_find(_STACK *st, void *data); -int sk_find_ex(_STACK *st, void *data); -int sk_push(_STACK *st, void *data); -int sk_unshift(_STACK *st, void *data); -void *sk_shift(_STACK *st); -void *sk_pop(_STACK *st); -void sk_zero(_STACK *st); -int (*sk_set_cmp_func(_STACK *sk, int (*c) (const void *, const void *))) - (const void *, const void *); -_STACK *sk_dup(_STACK *st); -void sk_sort(_STACK *st); -int sk_is_sorted(const _STACK *st); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/ext/openssl-win64/inc32/openssl/symhacks.h b/ext/openssl-win64/inc32/openssl/symhacks.h deleted file mode 100644 index 239fa4fb..00000000 --- a/ext/openssl-win64/inc32/openssl/symhacks.h +++ /dev/null @@ -1,516 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999 The OpenSSL Project. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. All advertising materials mentioning features or use of this - * software must display the following acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" - * - * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * openssl-core@openssl.org. - * - * 5. Products derived from this software may not be called "OpenSSL" - * nor may "OpenSSL" appear in their names without prior written - * permission of the OpenSSL Project. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit (http://www.openssl.org/)" - * - * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY - * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * ==================================================================== - * - * This product includes cryptographic software written by Eric Young - * (eay@cryptsoft.com). This product includes software written by Tim - * Hudson (tjh@cryptsoft.com). - * - */ - -#ifndef HEADER_SYMHACKS_H -# define HEADER_SYMHACKS_H - -# include - -/* - * Hacks to solve the problem with linkers incapable of handling very long - * symbol names. In the case of VMS, the limit is 31 characters on VMS for - * VAX. - */ -/* - * Note that this affects util/libeay.num and util/ssleay.num... you may - * change those manually, but that's not recommended, as those files are - * controlled centrally and updated on Unix, and the central definition may - * disagree with yours, which in turn may come with shareable library - * incompatibilities. - */ -# ifdef OPENSSL_SYS_VMS - -/* Hack a long name in crypto/ex_data.c */ -# undef CRYPTO_get_ex_data_implementation -# define CRYPTO_get_ex_data_implementation CRYPTO_get_ex_data_impl -# undef CRYPTO_set_ex_data_implementation -# define CRYPTO_set_ex_data_implementation CRYPTO_set_ex_data_impl - -/* Hack a long name in crypto/asn1/a_mbstr.c */ -# undef ASN1_STRING_set_default_mask_asc -# define ASN1_STRING_set_default_mask_asc ASN1_STRING_set_def_mask_asc - -# if 0 /* No longer needed, since safestack macro - * magic does the job */ -/* Hack the names created with DECLARE_ASN1_SET_OF(PKCS7_SIGNER_INFO) */ -# undef i2d_ASN1_SET_OF_PKCS7_SIGNER_INFO -# define i2d_ASN1_SET_OF_PKCS7_SIGNER_INFO i2d_ASN1_SET_OF_PKCS7_SIGINF -# undef d2i_ASN1_SET_OF_PKCS7_SIGNER_INFO -# define d2i_ASN1_SET_OF_PKCS7_SIGNER_INFO d2i_ASN1_SET_OF_PKCS7_SIGINF -# endif - -# if 0 /* No longer needed, since safestack macro - * magic does the job */ -/* Hack the names created with DECLARE_ASN1_SET_OF(PKCS7_RECIP_INFO) */ -# undef i2d_ASN1_SET_OF_PKCS7_RECIP_INFO -# define i2d_ASN1_SET_OF_PKCS7_RECIP_INFO i2d_ASN1_SET_OF_PKCS7_RECINF -# undef d2i_ASN1_SET_OF_PKCS7_RECIP_INFO -# define d2i_ASN1_SET_OF_PKCS7_RECIP_INFO d2i_ASN1_SET_OF_PKCS7_RECINF -# endif - -# if 0 /* No longer needed, since safestack macro - * magic does the job */ -/* Hack the names created with DECLARE_ASN1_SET_OF(ACCESS_DESCRIPTION) */ -# undef i2d_ASN1_SET_OF_ACCESS_DESCRIPTION -# define i2d_ASN1_SET_OF_ACCESS_DESCRIPTION i2d_ASN1_SET_OF_ACC_DESC -# undef d2i_ASN1_SET_OF_ACCESS_DESCRIPTION -# define d2i_ASN1_SET_OF_ACCESS_DESCRIPTION d2i_ASN1_SET_OF_ACC_DESC -# endif - -/* Hack the names created with DECLARE_PEM_rw(NETSCAPE_CERT_SEQUENCE) */ -# undef PEM_read_NETSCAPE_CERT_SEQUENCE -# define PEM_read_NETSCAPE_CERT_SEQUENCE PEM_read_NS_CERT_SEQ -# undef PEM_write_NETSCAPE_CERT_SEQUENCE -# define PEM_write_NETSCAPE_CERT_SEQUENCE PEM_write_NS_CERT_SEQ -# undef PEM_read_bio_NETSCAPE_CERT_SEQUENCE -# define PEM_read_bio_NETSCAPE_CERT_SEQUENCE PEM_read_bio_NS_CERT_SEQ -# undef PEM_write_bio_NETSCAPE_CERT_SEQUENCE -# define PEM_write_bio_NETSCAPE_CERT_SEQUENCE PEM_write_bio_NS_CERT_SEQ -# undef PEM_write_cb_bio_NETSCAPE_CERT_SEQUENCE -# define PEM_write_cb_bio_NETSCAPE_CERT_SEQUENCE PEM_write_cb_bio_NS_CERT_SEQ - -/* Hack the names created with DECLARE_PEM_rw(PKCS8_PRIV_KEY_INFO) */ -# undef PEM_read_PKCS8_PRIV_KEY_INFO -# define PEM_read_PKCS8_PRIV_KEY_INFO PEM_read_P8_PRIV_KEY_INFO -# undef PEM_write_PKCS8_PRIV_KEY_INFO -# define PEM_write_PKCS8_PRIV_KEY_INFO PEM_write_P8_PRIV_KEY_INFO -# undef PEM_read_bio_PKCS8_PRIV_KEY_INFO -# define PEM_read_bio_PKCS8_PRIV_KEY_INFO PEM_read_bio_P8_PRIV_KEY_INFO -# undef PEM_write_bio_PKCS8_PRIV_KEY_INFO -# define PEM_write_bio_PKCS8_PRIV_KEY_INFO PEM_write_bio_P8_PRIV_KEY_INFO -# undef PEM_write_cb_bio_PKCS8_PRIV_KEY_INFO -# define PEM_write_cb_bio_PKCS8_PRIV_KEY_INFO PEM_wrt_cb_bio_P8_PRIV_KEY_INFO - -/* Hack other PEM names */ -# undef PEM_write_bio_PKCS8PrivateKey_nid -# define PEM_write_bio_PKCS8PrivateKey_nid PEM_write_bio_PKCS8PrivKey_nid - -/* Hack some long X509 names */ -# undef X509_REVOKED_get_ext_by_critical -# define X509_REVOKED_get_ext_by_critical X509_REVOKED_get_ext_by_critic -# undef X509_policy_tree_get0_user_policies -# define X509_policy_tree_get0_user_policies X509_pcy_tree_get0_usr_policies -# undef X509_policy_node_get0_qualifiers -# define X509_policy_node_get0_qualifiers X509_pcy_node_get0_qualifiers -# undef X509_STORE_CTX_get_explicit_policy -# define X509_STORE_CTX_get_explicit_policy X509_STORE_CTX_get_expl_policy -# undef X509_STORE_CTX_get0_current_issuer -# define X509_STORE_CTX_get0_current_issuer X509_STORE_CTX_get0_cur_issuer - -/* Hack some long CRYPTO names */ -# undef CRYPTO_set_dynlock_destroy_callback -# define CRYPTO_set_dynlock_destroy_callback CRYPTO_set_dynlock_destroy_cb -# undef CRYPTO_set_dynlock_create_callback -# define CRYPTO_set_dynlock_create_callback CRYPTO_set_dynlock_create_cb -# undef CRYPTO_set_dynlock_lock_callback -# define CRYPTO_set_dynlock_lock_callback CRYPTO_set_dynlock_lock_cb -# undef CRYPTO_get_dynlock_lock_callback -# define CRYPTO_get_dynlock_lock_callback CRYPTO_get_dynlock_lock_cb -# undef CRYPTO_get_dynlock_destroy_callback -# define CRYPTO_get_dynlock_destroy_callback CRYPTO_get_dynlock_destroy_cb -# undef CRYPTO_get_dynlock_create_callback -# define CRYPTO_get_dynlock_create_callback CRYPTO_get_dynlock_create_cb -# undef CRYPTO_set_locked_mem_ex_functions -# define CRYPTO_set_locked_mem_ex_functions CRYPTO_set_locked_mem_ex_funcs -# undef CRYPTO_get_locked_mem_ex_functions -# define CRYPTO_get_locked_mem_ex_functions CRYPTO_get_locked_mem_ex_funcs - -/* Hack some long SSL/TLS names */ -# undef SSL_CTX_set_default_verify_paths -# define SSL_CTX_set_default_verify_paths SSL_CTX_set_def_verify_paths -# undef SSL_get_ex_data_X509_STORE_CTX_idx -# define SSL_get_ex_data_X509_STORE_CTX_idx SSL_get_ex_d_X509_STORE_CTX_idx -# undef SSL_add_file_cert_subjects_to_stack -# define SSL_add_file_cert_subjects_to_stack SSL_add_file_cert_subjs_to_stk -# undef SSL_add_dir_cert_subjects_to_stack -# define SSL_add_dir_cert_subjects_to_stack SSL_add_dir_cert_subjs_to_stk -# undef SSL_CTX_use_certificate_chain_file -# define SSL_CTX_use_certificate_chain_file SSL_CTX_use_cert_chain_file -# undef SSL_CTX_set_cert_verify_callback -# define SSL_CTX_set_cert_verify_callback SSL_CTX_set_cert_verify_cb -# undef SSL_CTX_set_default_passwd_cb_userdata -# define SSL_CTX_set_default_passwd_cb_userdata SSL_CTX_set_def_passwd_cb_ud -# undef SSL_COMP_get_compression_methods -# define SSL_COMP_get_compression_methods SSL_COMP_get_compress_methods -# undef SSL_COMP_set0_compression_methods -# define SSL_COMP_set0_compression_methods SSL_COMP_set0_compress_methods -# undef SSL_COMP_free_compression_methods -# define SSL_COMP_free_compression_methods SSL_COMP_free_compress_methods -# undef ssl_add_clienthello_renegotiate_ext -# define ssl_add_clienthello_renegotiate_ext ssl_add_clienthello_reneg_ext -# undef ssl_add_serverhello_renegotiate_ext -# define ssl_add_serverhello_renegotiate_ext ssl_add_serverhello_reneg_ext -# undef ssl_parse_clienthello_renegotiate_ext -# define ssl_parse_clienthello_renegotiate_ext ssl_parse_clienthello_reneg_ext -# undef ssl_parse_serverhello_renegotiate_ext -# define ssl_parse_serverhello_renegotiate_ext ssl_parse_serverhello_reneg_ext -# undef SSL_srp_server_param_with_username -# define SSL_srp_server_param_with_username SSL_srp_server_param_with_un -# undef SSL_CTX_set_srp_client_pwd_callback -# define SSL_CTX_set_srp_client_pwd_callback SSL_CTX_set_srp_client_pwd_cb -# undef SSL_CTX_set_srp_verify_param_callback -# define SSL_CTX_set_srp_verify_param_callback SSL_CTX_set_srp_vfy_param_cb -# undef SSL_CTX_set_srp_username_callback -# define SSL_CTX_set_srp_username_callback SSL_CTX_set_srp_un_cb -# undef ssl_add_clienthello_use_srtp_ext -# define ssl_add_clienthello_use_srtp_ext ssl_add_clihello_use_srtp_ext -# undef ssl_add_serverhello_use_srtp_ext -# define ssl_add_serverhello_use_srtp_ext ssl_add_serhello_use_srtp_ext -# undef ssl_parse_clienthello_use_srtp_ext -# define ssl_parse_clienthello_use_srtp_ext ssl_parse_clihello_use_srtp_ext -# undef ssl_parse_serverhello_use_srtp_ext -# define ssl_parse_serverhello_use_srtp_ext ssl_parse_serhello_use_srtp_ext -# undef SSL_CTX_set_next_protos_advertised_cb -# define SSL_CTX_set_next_protos_advertised_cb SSL_CTX_set_next_protos_adv_cb -# undef SSL_CTX_set_next_proto_select_cb -# define SSL_CTX_set_next_proto_select_cb SSL_CTX_set_next_proto_sel_cb - -# undef tls1_send_server_supplemental_data -# define tls1_send_server_supplemental_data tls1_send_server_suppl_data -# undef tls1_send_client_supplemental_data -# define tls1_send_client_supplemental_data tls1_send_client_suppl_data -# undef tls1_get_server_supplemental_data -# define tls1_get_server_supplemental_data tls1_get_server_suppl_data -# undef tls1_get_client_supplemental_data -# define tls1_get_client_supplemental_data tls1_get_client_suppl_data - -# undef ssl3_cbc_record_digest_supported -# define ssl3_cbc_record_digest_supported ssl3_cbc_record_digest_support -# undef ssl_check_clienthello_tlsext_late -# define ssl_check_clienthello_tlsext_late ssl_check_clihello_tlsext_late -# undef ssl_check_clienthello_tlsext_early -# define ssl_check_clienthello_tlsext_early ssl_check_clihello_tlsext_early - -/* Hack some RSA long names */ -# undef RSA_padding_check_PKCS1_OAEP_mgf1 -# define RSA_padding_check_PKCS1_OAEP_mgf1 RSA_pad_check_PKCS1_OAEP_mgf1 - -/* Hack some ENGINE long names */ -# undef ENGINE_get_default_BN_mod_exp_crt -# define ENGINE_get_default_BN_mod_exp_crt ENGINE_get_def_BN_mod_exp_crt -# undef ENGINE_set_default_BN_mod_exp_crt -# define ENGINE_set_default_BN_mod_exp_crt ENGINE_set_def_BN_mod_exp_crt -# undef ENGINE_set_load_privkey_function -# define ENGINE_set_load_privkey_function ENGINE_set_load_privkey_fn -# undef ENGINE_get_load_privkey_function -# define ENGINE_get_load_privkey_function ENGINE_get_load_privkey_fn -# undef ENGINE_unregister_pkey_asn1_meths -# define ENGINE_unregister_pkey_asn1_meths ENGINE_unreg_pkey_asn1_meths -# undef ENGINE_register_all_pkey_asn1_meths -# define ENGINE_register_all_pkey_asn1_meths ENGINE_reg_all_pkey_asn1_meths -# undef ENGINE_set_default_pkey_asn1_meths -# define ENGINE_set_default_pkey_asn1_meths ENGINE_set_def_pkey_asn1_meths -# undef ENGINE_get_pkey_asn1_meth_engine -# define ENGINE_get_pkey_asn1_meth_engine ENGINE_get_pkey_asn1_meth_eng -# undef ENGINE_set_load_ssl_client_cert_function -# define ENGINE_set_load_ssl_client_cert_function \ - ENGINE_set_ld_ssl_clnt_cert_fn -# undef ENGINE_get_ssl_client_cert_function -# define ENGINE_get_ssl_client_cert_function ENGINE_get_ssl_client_cert_fn - -/* Hack some long OCSP names */ -# undef OCSP_REQUEST_get_ext_by_critical -# define OCSP_REQUEST_get_ext_by_critical OCSP_REQUEST_get_ext_by_crit -# undef OCSP_BASICRESP_get_ext_by_critical -# define OCSP_BASICRESP_get_ext_by_critical OCSP_BASICRESP_get_ext_by_crit -# undef OCSP_SINGLERESP_get_ext_by_critical -# define OCSP_SINGLERESP_get_ext_by_critical OCSP_SINGLERESP_get_ext_by_crit - -/* Hack some long DES names */ -# undef _ossl_old_des_ede3_cfb64_encrypt -# define _ossl_old_des_ede3_cfb64_encrypt _ossl_odes_ede3_cfb64_encrypt -# undef _ossl_old_des_ede3_ofb64_encrypt -# define _ossl_old_des_ede3_ofb64_encrypt _ossl_odes_ede3_ofb64_encrypt - -/* Hack some long EVP names */ -# undef OPENSSL_add_all_algorithms_noconf -# define OPENSSL_add_all_algorithms_noconf OPENSSL_add_all_algo_noconf -# undef OPENSSL_add_all_algorithms_conf -# define OPENSSL_add_all_algorithms_conf OPENSSL_add_all_algo_conf -# undef EVP_PKEY_meth_set_verify_recover -# define EVP_PKEY_meth_set_verify_recover EVP_PKEY_meth_set_vrfy_recover - -/* Hack some long EC names */ -# undef EC_GROUP_set_point_conversion_form -# define EC_GROUP_set_point_conversion_form EC_GROUP_set_point_conv_form -# undef EC_GROUP_get_point_conversion_form -# define EC_GROUP_get_point_conversion_form EC_GROUP_get_point_conv_form -# undef EC_GROUP_clear_free_all_extra_data -# define EC_GROUP_clear_free_all_extra_data EC_GROUP_clr_free_all_xtra_data -# undef EC_KEY_set_public_key_affine_coordinates -# define EC_KEY_set_public_key_affine_coordinates \ - EC_KEY_set_pub_key_aff_coords -# undef EC_POINT_set_Jprojective_coordinates_GFp -# define EC_POINT_set_Jprojective_coordinates_GFp \ - EC_POINT_set_Jproj_coords_GFp -# undef EC_POINT_get_Jprojective_coordinates_GFp -# define EC_POINT_get_Jprojective_coordinates_GFp \ - EC_POINT_get_Jproj_coords_GFp -# undef EC_POINT_set_affine_coordinates_GFp -# define EC_POINT_set_affine_coordinates_GFp EC_POINT_set_affine_coords_GFp -# undef EC_POINT_get_affine_coordinates_GFp -# define EC_POINT_get_affine_coordinates_GFp EC_POINT_get_affine_coords_GFp -# undef EC_POINT_set_compressed_coordinates_GFp -# define EC_POINT_set_compressed_coordinates_GFp EC_POINT_set_compr_coords_GFp -# undef EC_POINT_set_affine_coordinates_GF2m -# define EC_POINT_set_affine_coordinates_GF2m EC_POINT_set_affine_coords_GF2m -# undef EC_POINT_get_affine_coordinates_GF2m -# define EC_POINT_get_affine_coordinates_GF2m EC_POINT_get_affine_coords_GF2m -# undef EC_POINT_set_compressed_coordinates_GF2m -# define EC_POINT_set_compressed_coordinates_GF2m \ - EC_POINT_set_compr_coords_GF2m -# undef ec_GF2m_simple_group_clear_finish -# define ec_GF2m_simple_group_clear_finish ec_GF2m_simple_grp_clr_finish -# undef ec_GF2m_simple_group_check_discriminant -# define ec_GF2m_simple_group_check_discriminant ec_GF2m_simple_grp_chk_discrim -# undef ec_GF2m_simple_point_clear_finish -# define ec_GF2m_simple_point_clear_finish ec_GF2m_simple_pt_clr_finish -# undef ec_GF2m_simple_point_set_to_infinity -# define ec_GF2m_simple_point_set_to_infinity ec_GF2m_simple_pt_set_to_inf -# undef ec_GF2m_simple_points_make_affine -# define ec_GF2m_simple_points_make_affine ec_GF2m_simple_pts_make_affine -# undef ec_GF2m_simple_point_set_affine_coordinates -# define ec_GF2m_simple_point_set_affine_coordinates \ - ec_GF2m_smp_pt_set_af_coords -# undef ec_GF2m_simple_point_get_affine_coordinates -# define ec_GF2m_simple_point_get_affine_coordinates \ - ec_GF2m_smp_pt_get_af_coords -# undef ec_GF2m_simple_set_compressed_coordinates -# define ec_GF2m_simple_set_compressed_coordinates \ - ec_GF2m_smp_set_compr_coords -# undef ec_GFp_simple_group_set_curve_GFp -# define ec_GFp_simple_group_set_curve_GFp ec_GFp_simple_grp_set_curve_GFp -# undef ec_GFp_simple_group_get_curve_GFp -# define ec_GFp_simple_group_get_curve_GFp ec_GFp_simple_grp_get_curve_GFp -# undef ec_GFp_simple_group_clear_finish -# define ec_GFp_simple_group_clear_finish ec_GFp_simple_grp_clear_finish -# undef ec_GFp_simple_group_set_generator -# define ec_GFp_simple_group_set_generator ec_GFp_simple_grp_set_generator -# undef ec_GFp_simple_group_get0_generator -# define ec_GFp_simple_group_get0_generator ec_GFp_simple_grp_gt0_generator -# undef ec_GFp_simple_group_get_cofactor -# define ec_GFp_simple_group_get_cofactor ec_GFp_simple_grp_get_cofactor -# undef ec_GFp_simple_point_clear_finish -# define ec_GFp_simple_point_clear_finish ec_GFp_simple_pt_clear_finish -# undef ec_GFp_simple_point_set_to_infinity -# define ec_GFp_simple_point_set_to_infinity ec_GFp_simple_pt_set_to_inf -# undef ec_GFp_simple_points_make_affine -# define ec_GFp_simple_points_make_affine ec_GFp_simple_pts_make_affine -# undef ec_GFp_simple_set_Jprojective_coordinates_GFp -# define ec_GFp_simple_set_Jprojective_coordinates_GFp \ - ec_GFp_smp_set_Jproj_coords_GFp -# undef ec_GFp_simple_get_Jprojective_coordinates_GFp -# define ec_GFp_simple_get_Jprojective_coordinates_GFp \ - ec_GFp_smp_get_Jproj_coords_GFp -# undef ec_GFp_simple_point_set_affine_coordinates_GFp -# define ec_GFp_simple_point_set_affine_coordinates_GFp \ - ec_GFp_smp_pt_set_af_coords_GFp -# undef ec_GFp_simple_point_get_affine_coordinates_GFp -# define ec_GFp_simple_point_get_affine_coordinates_GFp \ - ec_GFp_smp_pt_get_af_coords_GFp -# undef ec_GFp_simple_set_compressed_coordinates_GFp -# define ec_GFp_simple_set_compressed_coordinates_GFp \ - ec_GFp_smp_set_compr_coords_GFp -# undef ec_GFp_simple_point_set_affine_coordinates -# define ec_GFp_simple_point_set_affine_coordinates \ - ec_GFp_smp_pt_set_af_coords -# undef ec_GFp_simple_point_get_affine_coordinates -# define ec_GFp_simple_point_get_affine_coordinates \ - ec_GFp_smp_pt_get_af_coords -# undef ec_GFp_simple_set_compressed_coordinates -# define ec_GFp_simple_set_compressed_coordinates \ - ec_GFp_smp_set_compr_coords -# undef ec_GFp_simple_group_check_discriminant -# define ec_GFp_simple_group_check_discriminant ec_GFp_simple_grp_chk_discrim - -/* Hack som long STORE names */ -# undef STORE_method_set_initialise_function -# define STORE_method_set_initialise_function STORE_meth_set_initialise_fn -# undef STORE_method_set_cleanup_function -# define STORE_method_set_cleanup_function STORE_meth_set_cleanup_fn -# undef STORE_method_set_generate_function -# define STORE_method_set_generate_function STORE_meth_set_generate_fn -# undef STORE_method_set_modify_function -# define STORE_method_set_modify_function STORE_meth_set_modify_fn -# undef STORE_method_set_revoke_function -# define STORE_method_set_revoke_function STORE_meth_set_revoke_fn -# undef STORE_method_set_delete_function -# define STORE_method_set_delete_function STORE_meth_set_delete_fn -# undef STORE_method_set_list_start_function -# define STORE_method_set_list_start_function STORE_meth_set_list_start_fn -# undef STORE_method_set_list_next_function -# define STORE_method_set_list_next_function STORE_meth_set_list_next_fn -# undef STORE_method_set_list_end_function -# define STORE_method_set_list_end_function STORE_meth_set_list_end_fn -# undef STORE_method_set_update_store_function -# define STORE_method_set_update_store_function STORE_meth_set_update_store_fn -# undef STORE_method_set_lock_store_function -# define STORE_method_set_lock_store_function STORE_meth_set_lock_store_fn -# undef STORE_method_set_unlock_store_function -# define STORE_method_set_unlock_store_function STORE_meth_set_unlock_store_fn -# undef STORE_method_get_initialise_function -# define STORE_method_get_initialise_function STORE_meth_get_initialise_fn -# undef STORE_method_get_cleanup_function -# define STORE_method_get_cleanup_function STORE_meth_get_cleanup_fn -# undef STORE_method_get_generate_function -# define STORE_method_get_generate_function STORE_meth_get_generate_fn -# undef STORE_method_get_modify_function -# define STORE_method_get_modify_function STORE_meth_get_modify_fn -# undef STORE_method_get_revoke_function -# define STORE_method_get_revoke_function STORE_meth_get_revoke_fn -# undef STORE_method_get_delete_function -# define STORE_method_get_delete_function STORE_meth_get_delete_fn -# undef STORE_method_get_list_start_function -# define STORE_method_get_list_start_function STORE_meth_get_list_start_fn -# undef STORE_method_get_list_next_function -# define STORE_method_get_list_next_function STORE_meth_get_list_next_fn -# undef STORE_method_get_list_end_function -# define STORE_method_get_list_end_function STORE_meth_get_list_end_fn -# undef STORE_method_get_update_store_function -# define STORE_method_get_update_store_function STORE_meth_get_update_store_fn -# undef STORE_method_get_lock_store_function -# define STORE_method_get_lock_store_function STORE_meth_get_lock_store_fn -# undef STORE_method_get_unlock_store_function -# define STORE_method_get_unlock_store_function STORE_meth_get_unlock_store_fn - -/* Hack some long TS names */ -# undef TS_RESP_CTX_set_status_info_cond -# define TS_RESP_CTX_set_status_info_cond TS_RESP_CTX_set_stat_info_cond -# undef TS_RESP_CTX_set_clock_precision_digits -# define TS_RESP_CTX_set_clock_precision_digits TS_RESP_CTX_set_clk_prec_digits -# undef TS_CONF_set_clock_precision_digits -# define TS_CONF_set_clock_precision_digits TS_CONF_set_clk_prec_digits - -/* Hack some long CMS names */ -# undef CMS_RecipientInfo_ktri_get0_algs -# define CMS_RecipientInfo_ktri_get0_algs CMS_RecipInfo_ktri_get0_algs -# undef CMS_RecipientInfo_ktri_get0_signer_id -# define CMS_RecipientInfo_ktri_get0_signer_id CMS_RecipInfo_ktri_get0_sigr_id -# undef CMS_OtherRevocationInfoFormat_it -# define CMS_OtherRevocationInfoFormat_it CMS_OtherRevocInfoFormat_it -# undef CMS_KeyAgreeRecipientIdentifier_it -# define CMS_KeyAgreeRecipientIdentifier_it CMS_KeyAgreeRecipIdentifier_it -# undef CMS_OriginatorIdentifierOrKey_it -# define CMS_OriginatorIdentifierOrKey_it CMS_OriginatorIdOrKey_it -# undef cms_SignerIdentifier_get0_signer_id -# define cms_SignerIdentifier_get0_signer_id cms_SignerId_get0_signer_id -# undef CMS_RecipientInfo_kari_get0_orig_id -# define CMS_RecipientInfo_kari_get0_orig_id CMS_RecipInfo_kari_get0_orig_id -# undef CMS_RecipientInfo_kari_get0_reks -# define CMS_RecipientInfo_kari_get0_reks CMS_RecipInfo_kari_get0_reks -# undef CMS_RecipientEncryptedKey_cert_cmp -# define CMS_RecipientEncryptedKey_cert_cmp CMS_RecipEncryptedKey_cert_cmp -# undef CMS_RecipientInfo_kari_set0_pkey -# define CMS_RecipientInfo_kari_set0_pkey CMS_RecipInfo_kari_set0_pkey -# undef CMS_RecipientEncryptedKey_get0_id -# define CMS_RecipientEncryptedKey_get0_id CMS_RecipEncryptedKey_get0_id -# undef CMS_RecipientInfo_kari_orig_id_cmp -# define CMS_RecipientInfo_kari_orig_id_cmp CMS_RecipInfo_kari_orig_id_cmp - -/* Hack some long DTLS1 names */ -# undef dtls1_retransmit_buffered_messages -# define dtls1_retransmit_buffered_messages dtls1_retransmit_buffered_msgs - -/* Hack some long SRP names */ -# undef SRP_generate_server_master_secret -# define SRP_generate_server_master_secret SRP_gen_server_master_secret -# undef SRP_generate_client_master_secret -# define SRP_generate_client_master_secret SRP_gen_client_master_secret - -/* Hack some long UI names */ -# undef UI_method_get_prompt_constructor -# define UI_method_get_prompt_constructor UI_method_get_prompt_constructr -# undef UI_method_set_prompt_constructor -# define UI_method_set_prompt_constructor UI_method_set_prompt_constructr - -# endif /* defined OPENSSL_SYS_VMS */ - -/* Case insensitive linking causes problems.... */ -# if defined(OPENSSL_SYS_VMS) || defined(OPENSSL_SYS_OS2) -# undef ERR_load_CRYPTO_strings -# define ERR_load_CRYPTO_strings ERR_load_CRYPTOlib_strings -# undef OCSP_crlID_new -# define OCSP_crlID_new OCSP_crlID2_new - -# undef d2i_ECPARAMETERS -# define d2i_ECPARAMETERS d2i_UC_ECPARAMETERS -# undef i2d_ECPARAMETERS -# define i2d_ECPARAMETERS i2d_UC_ECPARAMETERS -# undef d2i_ECPKPARAMETERS -# define d2i_ECPKPARAMETERS d2i_UC_ECPKPARAMETERS -# undef i2d_ECPKPARAMETERS -# define i2d_ECPKPARAMETERS i2d_UC_ECPKPARAMETERS - -/* - * These functions do not seem to exist! However, I'm paranoid... Original - * command in x509v3.h: These functions are being redefined in another - * directory, and clash when the linker is case-insensitive, so let's hide - * them a little, by giving them an extra 'o' at the beginning of the name... - */ -# undef X509v3_cleanup_extensions -# define X509v3_cleanup_extensions oX509v3_cleanup_extensions -# undef X509v3_add_extension -# define X509v3_add_extension oX509v3_add_extension -# undef X509v3_add_netscape_extensions -# define X509v3_add_netscape_extensions oX509v3_add_netscape_extensions -# undef X509v3_add_standard_extensions -# define X509v3_add_standard_extensions oX509v3_add_standard_extensions - -/* This one clashes with CMS_data_create */ -# undef cms_Data_create -# define cms_Data_create priv_cms_Data_create - -# endif - -#endif /* ! defined HEADER_VMS_IDHACKS_H */ diff --git a/ext/openssl-win64/inc32/openssl/tls1.h b/ext/openssl-win64/inc32/openssl/tls1.h deleted file mode 100644 index 5929607f..00000000 --- a/ext/openssl-win64/inc32/openssl/tls1.h +++ /dev/null @@ -1,813 +0,0 @@ -/* ssl/tls1.h */ -/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) - * All rights reserved. - * - * This package is an SSL implementation written - * by Eric Young (eay@cryptsoft.com). - * The implementation was written so as to conform with Netscapes SSL. - * - * This library is free for commercial and non-commercial use as long as - * the following conditions are aheared to. The following conditions - * apply to all code found in this distribution, be it the RC4, RSA, - * lhash, DES, etc., code; not just the SSL code. The SSL documentation - * included with this distribution is covered by the same copyright terms - * except that the holder is Tim Hudson (tjh@cryptsoft.com). - * - * Copyright remains Eric Young's, and as such any Copyright notices in - * the code are not to be removed. - * If this package is used in a product, Eric Young should be given attribution - * as the author of the parts of the library used. - * This can be in the form of a textual message at program startup or - * in documentation (online or textual) provided with the package. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * "This product includes cryptographic software written by - * Eric Young (eay@cryptsoft.com)" - * The word 'cryptographic' can be left out if the rouines from the library - * being used are not cryptographic related :-). - * 4. If you include any Windows specific code (or a derivative thereof) from - * the apps directory (application code) you must include an acknowledgement: - * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" - * - * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * The licence and distribution terms for any publically available version or - * derivative of this code cannot be changed. i.e. this code cannot simply be - * copied and put under another distribution licence - * [including the GNU Public Licence.] - */ -/* ==================================================================== - * Copyright (c) 1998-2006 The OpenSSL Project. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. All advertising materials mentioning features or use of this - * software must display the following acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" - * - * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * openssl-core@openssl.org. - * - * 5. Products derived from this software may not be called "OpenSSL" - * nor may "OpenSSL" appear in their names without prior written - * permission of the OpenSSL Project. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit (http://www.openssl.org/)" - * - * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY - * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * ==================================================================== - * - * This product includes cryptographic software written by Eric Young - * (eay@cryptsoft.com). This product includes software written by Tim - * Hudson (tjh@cryptsoft.com). - * - */ -/* ==================================================================== - * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED. - * - * Portions of the attached software ("Contribution") are developed by - * SUN MICROSYSTEMS, INC., and are contributed to the OpenSSL project. - * - * The Contribution is licensed pursuant to the OpenSSL open source - * license provided above. - * - * ECC cipher suite support in OpenSSL originally written by - * Vipul Gupta and Sumit Gupta of Sun Microsystems Laboratories. - * - */ -/* ==================================================================== - * Copyright 2005 Nokia. All rights reserved. - * - * The portions of the attached software ("Contribution") is developed by - * Nokia Corporation and is licensed pursuant to the OpenSSL open source - * license. - * - * The Contribution, originally written by Mika Kousa and Pasi Eronen of - * Nokia Corporation, consists of the "PSK" (Pre-Shared Key) ciphersuites - * support (see RFC 4279) to OpenSSL. - * - * No patent licenses or other rights except those expressly stated in - * the OpenSSL open source license shall be deemed granted or received - * expressly, by implication, estoppel, or otherwise. - * - * No assurances are provided by Nokia that the Contribution does not - * infringe the patent or other intellectual property rights of any third - * party or that the license provides you with all the necessary rights - * to make use of the Contribution. - * - * THE SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. IN - * ADDITION TO THE DISCLAIMERS INCLUDED IN THE LICENSE, NOKIA - * SPECIFICALLY DISCLAIMS ANY LIABILITY FOR CLAIMS BROUGHT BY YOU OR ANY - * OTHER ENTITY BASED ON INFRINGEMENT OF INTELLECTUAL PROPERTY RIGHTS OR - * OTHERWISE. - */ - -#ifndef HEADER_TLS1_H -# define HEADER_TLS1_H - -# include - -#ifdef __cplusplus -extern "C" { -#endif - -# define TLS1_ALLOW_EXPERIMENTAL_CIPHERSUITES 0 - -# define TLS1_VERSION 0x0301 -# define TLS1_1_VERSION 0x0302 -# define TLS1_2_VERSION 0x0303 -# define TLS_MAX_VERSION TLS1_2_VERSION - -# define TLS1_VERSION_MAJOR 0x03 -# define TLS1_VERSION_MINOR 0x01 - -# define TLS1_1_VERSION_MAJOR 0x03 -# define TLS1_1_VERSION_MINOR 0x02 - -# define TLS1_2_VERSION_MAJOR 0x03 -# define TLS1_2_VERSION_MINOR 0x03 - -# define TLS1_get_version(s) \ - ((s->version >> 8) == TLS1_VERSION_MAJOR ? s->version : 0) - -# define TLS1_get_client_version(s) \ - ((s->client_version >> 8) == TLS1_VERSION_MAJOR ? s->client_version : 0) - -# define TLS1_AD_DECRYPTION_FAILED 21 -# define TLS1_AD_RECORD_OVERFLOW 22 -# define TLS1_AD_UNKNOWN_CA 48/* fatal */ -# define TLS1_AD_ACCESS_DENIED 49/* fatal */ -# define TLS1_AD_DECODE_ERROR 50/* fatal */ -# define TLS1_AD_DECRYPT_ERROR 51 -# define TLS1_AD_EXPORT_RESTRICTION 60/* fatal */ -# define TLS1_AD_PROTOCOL_VERSION 70/* fatal */ -# define TLS1_AD_INSUFFICIENT_SECURITY 71/* fatal */ -# define TLS1_AD_INTERNAL_ERROR 80/* fatal */ -# define TLS1_AD_INAPPROPRIATE_FALLBACK 86/* fatal */ -# define TLS1_AD_USER_CANCELLED 90 -# define TLS1_AD_NO_RENEGOTIATION 100 -/* codes 110-114 are from RFC3546 */ -# define TLS1_AD_UNSUPPORTED_EXTENSION 110 -# define TLS1_AD_CERTIFICATE_UNOBTAINABLE 111 -# define TLS1_AD_UNRECOGNIZED_NAME 112 -# define TLS1_AD_BAD_CERTIFICATE_STATUS_RESPONSE 113 -# define TLS1_AD_BAD_CERTIFICATE_HASH_VALUE 114 -# define TLS1_AD_UNKNOWN_PSK_IDENTITY 115/* fatal */ - -/* ExtensionType values from RFC3546 / RFC4366 / RFC6066 */ -# define TLSEXT_TYPE_server_name 0 -# define TLSEXT_TYPE_max_fragment_length 1 -# define TLSEXT_TYPE_client_certificate_url 2 -# define TLSEXT_TYPE_trusted_ca_keys 3 -# define TLSEXT_TYPE_truncated_hmac 4 -# define TLSEXT_TYPE_status_request 5 -/* ExtensionType values from RFC4681 */ -# define TLSEXT_TYPE_user_mapping 6 -/* ExtensionType values from RFC5878 */ -# define TLSEXT_TYPE_client_authz 7 -# define TLSEXT_TYPE_server_authz 8 -/* ExtensionType values from RFC6091 */ -# define TLSEXT_TYPE_cert_type 9 - -/* ExtensionType values from RFC4492 */ -# define TLSEXT_TYPE_elliptic_curves 10 -# define TLSEXT_TYPE_ec_point_formats 11 - -/* ExtensionType value from RFC5054 */ -# define TLSEXT_TYPE_srp 12 - -/* ExtensionType values from RFC5246 */ -# define TLSEXT_TYPE_signature_algorithms 13 - -/* ExtensionType value from RFC5764 */ -# define TLSEXT_TYPE_use_srtp 14 - -/* ExtensionType value from RFC5620 */ -# define TLSEXT_TYPE_heartbeat 15 - -/* ExtensionType value from draft-ietf-tls-applayerprotoneg-00 */ -# define TLSEXT_TYPE_application_layer_protocol_negotiation 16 - -/* - * ExtensionType value for TLS padding extension. - * http://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml - * http://tools.ietf.org/html/draft-agl-tls-padding-03 - */ -# define TLSEXT_TYPE_padding 21 - -/* ExtensionType value from RFC4507 */ -# define TLSEXT_TYPE_session_ticket 35 - -/* ExtensionType value from draft-rescorla-tls-opaque-prf-input-00.txt */ -# if 0 -/* - * will have to be provided externally for now , - * i.e. build with -DTLSEXT_TYPE_opaque_prf_input=38183 - * using whatever extension number you'd like to try - */ -# define TLSEXT_TYPE_opaque_prf_input ?? -# endif - -/* Temporary extension type */ -# define TLSEXT_TYPE_renegotiate 0xff01 - -# ifndef OPENSSL_NO_NEXTPROTONEG -/* This is not an IANA defined extension number */ -# define TLSEXT_TYPE_next_proto_neg 13172 -# endif - -/* NameType value from RFC 3546 */ -# define TLSEXT_NAMETYPE_host_name 0 -/* status request value from RFC 3546 */ -# define TLSEXT_STATUSTYPE_ocsp 1 - -/* ECPointFormat values from draft-ietf-tls-ecc-12 */ -# define TLSEXT_ECPOINTFORMAT_first 0 -# define TLSEXT_ECPOINTFORMAT_uncompressed 0 -# define TLSEXT_ECPOINTFORMAT_ansiX962_compressed_prime 1 -# define TLSEXT_ECPOINTFORMAT_ansiX962_compressed_char2 2 -# define TLSEXT_ECPOINTFORMAT_last 2 - -/* Signature and hash algorithms from RFC 5246 */ - -# define TLSEXT_signature_anonymous 0 -# define TLSEXT_signature_rsa 1 -# define TLSEXT_signature_dsa 2 -# define TLSEXT_signature_ecdsa 3 - -/* Total number of different signature algorithms */ -# define TLSEXT_signature_num 4 - -# define TLSEXT_hash_none 0 -# define TLSEXT_hash_md5 1 -# define TLSEXT_hash_sha1 2 -# define TLSEXT_hash_sha224 3 -# define TLSEXT_hash_sha256 4 -# define TLSEXT_hash_sha384 5 -# define TLSEXT_hash_sha512 6 - -/* Total number of different digest algorithms */ - -# define TLSEXT_hash_num 7 - -/* Flag set for unrecognised algorithms */ -# define TLSEXT_nid_unknown 0x1000000 - -/* ECC curves */ - -# define TLSEXT_curve_P_256 23 -# define TLSEXT_curve_P_384 24 - -# ifndef OPENSSL_NO_TLSEXT - -# define TLSEXT_MAXLEN_host_name 255 - -const char *SSL_get_servername(const SSL *s, const int type); -int SSL_get_servername_type(const SSL *s); -/* - * SSL_export_keying_material exports a value derived from the master secret, - * as specified in RFC 5705. It writes |olen| bytes to |out| given a label and - * optional context. (Since a zero length context is allowed, the |use_context| - * flag controls whether a context is included.) It returns 1 on success and - * zero otherwise. - */ -int SSL_export_keying_material(SSL *s, unsigned char *out, size_t olen, - const char *label, size_t llen, - const unsigned char *p, size_t plen, - int use_context); - -int SSL_get_sigalgs(SSL *s, int idx, - int *psign, int *phash, int *psignandhash, - unsigned char *rsig, unsigned char *rhash); - -int SSL_get_shared_sigalgs(SSL *s, int idx, - int *psign, int *phash, int *psignandhash, - unsigned char *rsig, unsigned char *rhash); - -int SSL_check_chain(SSL *s, X509 *x, EVP_PKEY *pk, STACK_OF(X509) *chain); - -# define SSL_set_tlsext_host_name(s,name) \ -SSL_ctrl(s,SSL_CTRL_SET_TLSEXT_HOSTNAME,TLSEXT_NAMETYPE_host_name,(char *)name) - -# define SSL_set_tlsext_debug_callback(ssl, cb) \ -SSL_callback_ctrl(ssl,SSL_CTRL_SET_TLSEXT_DEBUG_CB,(void (*)(void))cb) - -# define SSL_set_tlsext_debug_arg(ssl, arg) \ -SSL_ctrl(ssl,SSL_CTRL_SET_TLSEXT_DEBUG_ARG,0, (void *)arg) - -# define SSL_set_tlsext_status_type(ssl, type) \ -SSL_ctrl(ssl,SSL_CTRL_SET_TLSEXT_STATUS_REQ_TYPE,type, NULL) - -# define SSL_get_tlsext_status_exts(ssl, arg) \ -SSL_ctrl(ssl,SSL_CTRL_GET_TLSEXT_STATUS_REQ_EXTS,0, (void *)arg) - -# define SSL_set_tlsext_status_exts(ssl, arg) \ -SSL_ctrl(ssl,SSL_CTRL_SET_TLSEXT_STATUS_REQ_EXTS,0, (void *)arg) - -# define SSL_get_tlsext_status_ids(ssl, arg) \ -SSL_ctrl(ssl,SSL_CTRL_GET_TLSEXT_STATUS_REQ_IDS,0, (void *)arg) - -# define SSL_set_tlsext_status_ids(ssl, arg) \ -SSL_ctrl(ssl,SSL_CTRL_SET_TLSEXT_STATUS_REQ_IDS,0, (void *)arg) - -# define SSL_get_tlsext_status_ocsp_resp(ssl, arg) \ -SSL_ctrl(ssl,SSL_CTRL_GET_TLSEXT_STATUS_REQ_OCSP_RESP,0, (void *)arg) - -# define SSL_set_tlsext_status_ocsp_resp(ssl, arg, arglen) \ -SSL_ctrl(ssl,SSL_CTRL_SET_TLSEXT_STATUS_REQ_OCSP_RESP,arglen, (void *)arg) - -# define SSL_CTX_set_tlsext_servername_callback(ctx, cb) \ -SSL_CTX_callback_ctrl(ctx,SSL_CTRL_SET_TLSEXT_SERVERNAME_CB,(void (*)(void))cb) - -# define SSL_TLSEXT_ERR_OK 0 -# define SSL_TLSEXT_ERR_ALERT_WARNING 1 -# define SSL_TLSEXT_ERR_ALERT_FATAL 2 -# define SSL_TLSEXT_ERR_NOACK 3 - -# define SSL_CTX_set_tlsext_servername_arg(ctx, arg) \ -SSL_CTX_ctrl(ctx,SSL_CTRL_SET_TLSEXT_SERVERNAME_ARG,0, (void *)arg) - -# define SSL_CTX_get_tlsext_ticket_keys(ctx, keys, keylen) \ - SSL_CTX_ctrl((ctx),SSL_CTRL_GET_TLSEXT_TICKET_KEYS,(keylen),(keys)) -# define SSL_CTX_set_tlsext_ticket_keys(ctx, keys, keylen) \ - SSL_CTX_ctrl((ctx),SSL_CTRL_SET_TLSEXT_TICKET_KEYS,(keylen),(keys)) - -# define SSL_CTX_set_tlsext_status_cb(ssl, cb) \ -SSL_CTX_callback_ctrl(ssl,SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB,(void (*)(void))cb) - -# define SSL_CTX_set_tlsext_status_arg(ssl, arg) \ -SSL_CTX_ctrl(ssl,SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB_ARG,0, (void *)arg) - -# define SSL_set_tlsext_opaque_prf_input(s, src, len) \ -SSL_ctrl(s,SSL_CTRL_SET_TLSEXT_OPAQUE_PRF_INPUT, len, src) -# define SSL_CTX_set_tlsext_opaque_prf_input_callback(ctx, cb) \ -SSL_CTX_callback_ctrl(ctx,SSL_CTRL_SET_TLSEXT_OPAQUE_PRF_INPUT_CB, (void (*)(void))cb) -# define SSL_CTX_set_tlsext_opaque_prf_input_callback_arg(ctx, arg) \ -SSL_CTX_ctrl(ctx,SSL_CTRL_SET_TLSEXT_OPAQUE_PRF_INPUT_CB_ARG, 0, arg) - -# define SSL_CTX_set_tlsext_ticket_key_cb(ssl, cb) \ -SSL_CTX_callback_ctrl(ssl,SSL_CTRL_SET_TLSEXT_TICKET_KEY_CB,(void (*)(void))cb) - -# ifndef OPENSSL_NO_HEARTBEATS -# define SSL_TLSEXT_HB_ENABLED 0x01 -# define SSL_TLSEXT_HB_DONT_SEND_REQUESTS 0x02 -# define SSL_TLSEXT_HB_DONT_RECV_REQUESTS 0x04 - -# define SSL_get_tlsext_heartbeat_pending(ssl) \ - SSL_ctrl((ssl),SSL_CTRL_GET_TLS_EXT_HEARTBEAT_PENDING,0,NULL) -# define SSL_set_tlsext_heartbeat_no_requests(ssl, arg) \ - SSL_ctrl((ssl),SSL_CTRL_SET_TLS_EXT_HEARTBEAT_NO_REQUESTS,arg,NULL) -# endif -# endif - -/* PSK ciphersuites from 4279 */ -# define TLS1_CK_PSK_WITH_RC4_128_SHA 0x0300008A -# define TLS1_CK_PSK_WITH_3DES_EDE_CBC_SHA 0x0300008B -# define TLS1_CK_PSK_WITH_AES_128_CBC_SHA 0x0300008C -# define TLS1_CK_PSK_WITH_AES_256_CBC_SHA 0x0300008D - -/* - * Additional TLS ciphersuites from expired Internet Draft - * draft-ietf-tls-56-bit-ciphersuites-01.txt (available if - * TLS1_ALLOW_EXPERIMENTAL_CIPHERSUITES is defined, see s3_lib.c). We - * actually treat them like SSL 3.0 ciphers, which we probably shouldn't. - * Note that the first two are actually not in the IDs. - */ -# define TLS1_CK_RSA_EXPORT1024_WITH_RC4_56_MD5 0x03000060/* not in - * ID */ -# define TLS1_CK_RSA_EXPORT1024_WITH_RC2_CBC_56_MD5 0x03000061/* not in - * ID */ -# define TLS1_CK_RSA_EXPORT1024_WITH_DES_CBC_SHA 0x03000062 -# define TLS1_CK_DHE_DSS_EXPORT1024_WITH_DES_CBC_SHA 0x03000063 -# define TLS1_CK_RSA_EXPORT1024_WITH_RC4_56_SHA 0x03000064 -# define TLS1_CK_DHE_DSS_EXPORT1024_WITH_RC4_56_SHA 0x03000065 -# define TLS1_CK_DHE_DSS_WITH_RC4_128_SHA 0x03000066 - -/* AES ciphersuites from RFC3268 */ - -# define TLS1_CK_RSA_WITH_AES_128_SHA 0x0300002F -# define TLS1_CK_DH_DSS_WITH_AES_128_SHA 0x03000030 -# define TLS1_CK_DH_RSA_WITH_AES_128_SHA 0x03000031 -# define TLS1_CK_DHE_DSS_WITH_AES_128_SHA 0x03000032 -# define TLS1_CK_DHE_RSA_WITH_AES_128_SHA 0x03000033 -# define TLS1_CK_ADH_WITH_AES_128_SHA 0x03000034 - -# define TLS1_CK_RSA_WITH_AES_256_SHA 0x03000035 -# define TLS1_CK_DH_DSS_WITH_AES_256_SHA 0x03000036 -# define TLS1_CK_DH_RSA_WITH_AES_256_SHA 0x03000037 -# define TLS1_CK_DHE_DSS_WITH_AES_256_SHA 0x03000038 -# define TLS1_CK_DHE_RSA_WITH_AES_256_SHA 0x03000039 -# define TLS1_CK_ADH_WITH_AES_256_SHA 0x0300003A - -/* TLS v1.2 ciphersuites */ -# define TLS1_CK_RSA_WITH_NULL_SHA256 0x0300003B -# define TLS1_CK_RSA_WITH_AES_128_SHA256 0x0300003C -# define TLS1_CK_RSA_WITH_AES_256_SHA256 0x0300003D -# define TLS1_CK_DH_DSS_WITH_AES_128_SHA256 0x0300003E -# define TLS1_CK_DH_RSA_WITH_AES_128_SHA256 0x0300003F -# define TLS1_CK_DHE_DSS_WITH_AES_128_SHA256 0x03000040 - -/* Camellia ciphersuites from RFC4132 */ -# define TLS1_CK_RSA_WITH_CAMELLIA_128_CBC_SHA 0x03000041 -# define TLS1_CK_DH_DSS_WITH_CAMELLIA_128_CBC_SHA 0x03000042 -# define TLS1_CK_DH_RSA_WITH_CAMELLIA_128_CBC_SHA 0x03000043 -# define TLS1_CK_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA 0x03000044 -# define TLS1_CK_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA 0x03000045 -# define TLS1_CK_ADH_WITH_CAMELLIA_128_CBC_SHA 0x03000046 - -/* TLS v1.2 ciphersuites */ -# define TLS1_CK_DHE_RSA_WITH_AES_128_SHA256 0x03000067 -# define TLS1_CK_DH_DSS_WITH_AES_256_SHA256 0x03000068 -# define TLS1_CK_DH_RSA_WITH_AES_256_SHA256 0x03000069 -# define TLS1_CK_DHE_DSS_WITH_AES_256_SHA256 0x0300006A -# define TLS1_CK_DHE_RSA_WITH_AES_256_SHA256 0x0300006B -# define TLS1_CK_ADH_WITH_AES_128_SHA256 0x0300006C -# define TLS1_CK_ADH_WITH_AES_256_SHA256 0x0300006D - -/* Camellia ciphersuites from RFC4132 */ -# define TLS1_CK_RSA_WITH_CAMELLIA_256_CBC_SHA 0x03000084 -# define TLS1_CK_DH_DSS_WITH_CAMELLIA_256_CBC_SHA 0x03000085 -# define TLS1_CK_DH_RSA_WITH_CAMELLIA_256_CBC_SHA 0x03000086 -# define TLS1_CK_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA 0x03000087 -# define TLS1_CK_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA 0x03000088 -# define TLS1_CK_ADH_WITH_CAMELLIA_256_CBC_SHA 0x03000089 - -/* SEED ciphersuites from RFC4162 */ -# define TLS1_CK_RSA_WITH_SEED_SHA 0x03000096 -# define TLS1_CK_DH_DSS_WITH_SEED_SHA 0x03000097 -# define TLS1_CK_DH_RSA_WITH_SEED_SHA 0x03000098 -# define TLS1_CK_DHE_DSS_WITH_SEED_SHA 0x03000099 -# define TLS1_CK_DHE_RSA_WITH_SEED_SHA 0x0300009A -# define TLS1_CK_ADH_WITH_SEED_SHA 0x0300009B - -/* TLS v1.2 GCM ciphersuites from RFC5288 */ -# define TLS1_CK_RSA_WITH_AES_128_GCM_SHA256 0x0300009C -# define TLS1_CK_RSA_WITH_AES_256_GCM_SHA384 0x0300009D -# define TLS1_CK_DHE_RSA_WITH_AES_128_GCM_SHA256 0x0300009E -# define TLS1_CK_DHE_RSA_WITH_AES_256_GCM_SHA384 0x0300009F -# define TLS1_CK_DH_RSA_WITH_AES_128_GCM_SHA256 0x030000A0 -# define TLS1_CK_DH_RSA_WITH_AES_256_GCM_SHA384 0x030000A1 -# define TLS1_CK_DHE_DSS_WITH_AES_128_GCM_SHA256 0x030000A2 -# define TLS1_CK_DHE_DSS_WITH_AES_256_GCM_SHA384 0x030000A3 -# define TLS1_CK_DH_DSS_WITH_AES_128_GCM_SHA256 0x030000A4 -# define TLS1_CK_DH_DSS_WITH_AES_256_GCM_SHA384 0x030000A5 -# define TLS1_CK_ADH_WITH_AES_128_GCM_SHA256 0x030000A6 -# define TLS1_CK_ADH_WITH_AES_256_GCM_SHA384 0x030000A7 - -/* - * ECC ciphersuites from draft-ietf-tls-ecc-12.txt with changes soon to be in - * draft 13 - */ -# define TLS1_CK_ECDH_ECDSA_WITH_NULL_SHA 0x0300C001 -# define TLS1_CK_ECDH_ECDSA_WITH_RC4_128_SHA 0x0300C002 -# define TLS1_CK_ECDH_ECDSA_WITH_DES_192_CBC3_SHA 0x0300C003 -# define TLS1_CK_ECDH_ECDSA_WITH_AES_128_CBC_SHA 0x0300C004 -# define TLS1_CK_ECDH_ECDSA_WITH_AES_256_CBC_SHA 0x0300C005 - -# define TLS1_CK_ECDHE_ECDSA_WITH_NULL_SHA 0x0300C006 -# define TLS1_CK_ECDHE_ECDSA_WITH_RC4_128_SHA 0x0300C007 -# define TLS1_CK_ECDHE_ECDSA_WITH_DES_192_CBC3_SHA 0x0300C008 -# define TLS1_CK_ECDHE_ECDSA_WITH_AES_128_CBC_SHA 0x0300C009 -# define TLS1_CK_ECDHE_ECDSA_WITH_AES_256_CBC_SHA 0x0300C00A - -# define TLS1_CK_ECDH_RSA_WITH_NULL_SHA 0x0300C00B -# define TLS1_CK_ECDH_RSA_WITH_RC4_128_SHA 0x0300C00C -# define TLS1_CK_ECDH_RSA_WITH_DES_192_CBC3_SHA 0x0300C00D -# define TLS1_CK_ECDH_RSA_WITH_AES_128_CBC_SHA 0x0300C00E -# define TLS1_CK_ECDH_RSA_WITH_AES_256_CBC_SHA 0x0300C00F - -# define TLS1_CK_ECDHE_RSA_WITH_NULL_SHA 0x0300C010 -# define TLS1_CK_ECDHE_RSA_WITH_RC4_128_SHA 0x0300C011 -# define TLS1_CK_ECDHE_RSA_WITH_DES_192_CBC3_SHA 0x0300C012 -# define TLS1_CK_ECDHE_RSA_WITH_AES_128_CBC_SHA 0x0300C013 -# define TLS1_CK_ECDHE_RSA_WITH_AES_256_CBC_SHA 0x0300C014 - -# define TLS1_CK_ECDH_anon_WITH_NULL_SHA 0x0300C015 -# define TLS1_CK_ECDH_anon_WITH_RC4_128_SHA 0x0300C016 -# define TLS1_CK_ECDH_anon_WITH_DES_192_CBC3_SHA 0x0300C017 -# define TLS1_CK_ECDH_anon_WITH_AES_128_CBC_SHA 0x0300C018 -# define TLS1_CK_ECDH_anon_WITH_AES_256_CBC_SHA 0x0300C019 - -/* SRP ciphersuites from RFC 5054 */ -# define TLS1_CK_SRP_SHA_WITH_3DES_EDE_CBC_SHA 0x0300C01A -# define TLS1_CK_SRP_SHA_RSA_WITH_3DES_EDE_CBC_SHA 0x0300C01B -# define TLS1_CK_SRP_SHA_DSS_WITH_3DES_EDE_CBC_SHA 0x0300C01C -# define TLS1_CK_SRP_SHA_WITH_AES_128_CBC_SHA 0x0300C01D -# define TLS1_CK_SRP_SHA_RSA_WITH_AES_128_CBC_SHA 0x0300C01E -# define TLS1_CK_SRP_SHA_DSS_WITH_AES_128_CBC_SHA 0x0300C01F -# define TLS1_CK_SRP_SHA_WITH_AES_256_CBC_SHA 0x0300C020 -# define TLS1_CK_SRP_SHA_RSA_WITH_AES_256_CBC_SHA 0x0300C021 -# define TLS1_CK_SRP_SHA_DSS_WITH_AES_256_CBC_SHA 0x0300C022 - -/* ECDH HMAC based ciphersuites from RFC5289 */ - -# define TLS1_CK_ECDHE_ECDSA_WITH_AES_128_SHA256 0x0300C023 -# define TLS1_CK_ECDHE_ECDSA_WITH_AES_256_SHA384 0x0300C024 -# define TLS1_CK_ECDH_ECDSA_WITH_AES_128_SHA256 0x0300C025 -# define TLS1_CK_ECDH_ECDSA_WITH_AES_256_SHA384 0x0300C026 -# define TLS1_CK_ECDHE_RSA_WITH_AES_128_SHA256 0x0300C027 -# define TLS1_CK_ECDHE_RSA_WITH_AES_256_SHA384 0x0300C028 -# define TLS1_CK_ECDH_RSA_WITH_AES_128_SHA256 0x0300C029 -# define TLS1_CK_ECDH_RSA_WITH_AES_256_SHA384 0x0300C02A - -/* ECDH GCM based ciphersuites from RFC5289 */ -# define TLS1_CK_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 0x0300C02B -# define TLS1_CK_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 0x0300C02C -# define TLS1_CK_ECDH_ECDSA_WITH_AES_128_GCM_SHA256 0x0300C02D -# define TLS1_CK_ECDH_ECDSA_WITH_AES_256_GCM_SHA384 0x0300C02E -# define TLS1_CK_ECDHE_RSA_WITH_AES_128_GCM_SHA256 0x0300C02F -# define TLS1_CK_ECDHE_RSA_WITH_AES_256_GCM_SHA384 0x0300C030 -# define TLS1_CK_ECDH_RSA_WITH_AES_128_GCM_SHA256 0x0300C031 -# define TLS1_CK_ECDH_RSA_WITH_AES_256_GCM_SHA384 0x0300C032 - -/* - * XXX * Backward compatibility alert: + * Older versions of OpenSSL gave - * some DHE ciphers names with "EDH" + * instead of "DHE". Going forward, we - * should be using DHE + * everywhere, though we may indefinitely maintain - * aliases for users + * or configurations that used "EDH" + - */ -# define TLS1_TXT_RSA_EXPORT1024_WITH_RC4_56_MD5 "EXP1024-RC4-MD5" -# define TLS1_TXT_RSA_EXPORT1024_WITH_RC2_CBC_56_MD5 "EXP1024-RC2-CBC-MD5" -# define TLS1_TXT_RSA_EXPORT1024_WITH_DES_CBC_SHA "EXP1024-DES-CBC-SHA" -# define TLS1_TXT_DHE_DSS_EXPORT1024_WITH_DES_CBC_SHA "EXP1024-DHE-DSS-DES-CBC-SHA" -# define TLS1_TXT_RSA_EXPORT1024_WITH_RC4_56_SHA "EXP1024-RC4-SHA" -# define TLS1_TXT_DHE_DSS_EXPORT1024_WITH_RC4_56_SHA "EXP1024-DHE-DSS-RC4-SHA" -# define TLS1_TXT_DHE_DSS_WITH_RC4_128_SHA "DHE-DSS-RC4-SHA" - -/* AES ciphersuites from RFC3268 */ -# define TLS1_TXT_RSA_WITH_AES_128_SHA "AES128-SHA" -# define TLS1_TXT_DH_DSS_WITH_AES_128_SHA "DH-DSS-AES128-SHA" -# define TLS1_TXT_DH_RSA_WITH_AES_128_SHA "DH-RSA-AES128-SHA" -# define TLS1_TXT_DHE_DSS_WITH_AES_128_SHA "DHE-DSS-AES128-SHA" -# define TLS1_TXT_DHE_RSA_WITH_AES_128_SHA "DHE-RSA-AES128-SHA" -# define TLS1_TXT_ADH_WITH_AES_128_SHA "ADH-AES128-SHA" - -# define TLS1_TXT_RSA_WITH_AES_256_SHA "AES256-SHA" -# define TLS1_TXT_DH_DSS_WITH_AES_256_SHA "DH-DSS-AES256-SHA" -# define TLS1_TXT_DH_RSA_WITH_AES_256_SHA "DH-RSA-AES256-SHA" -# define TLS1_TXT_DHE_DSS_WITH_AES_256_SHA "DHE-DSS-AES256-SHA" -# define TLS1_TXT_DHE_RSA_WITH_AES_256_SHA "DHE-RSA-AES256-SHA" -# define TLS1_TXT_ADH_WITH_AES_256_SHA "ADH-AES256-SHA" - -/* ECC ciphersuites from draft-ietf-tls-ecc-01.txt (Mar 15, 2001) */ -# define TLS1_TXT_ECDH_ECDSA_WITH_NULL_SHA "ECDH-ECDSA-NULL-SHA" -# define TLS1_TXT_ECDH_ECDSA_WITH_RC4_128_SHA "ECDH-ECDSA-RC4-SHA" -# define TLS1_TXT_ECDH_ECDSA_WITH_DES_192_CBC3_SHA "ECDH-ECDSA-DES-CBC3-SHA" -# define TLS1_TXT_ECDH_ECDSA_WITH_AES_128_CBC_SHA "ECDH-ECDSA-AES128-SHA" -# define TLS1_TXT_ECDH_ECDSA_WITH_AES_256_CBC_SHA "ECDH-ECDSA-AES256-SHA" - -# define TLS1_TXT_ECDHE_ECDSA_WITH_NULL_SHA "ECDHE-ECDSA-NULL-SHA" -# define TLS1_TXT_ECDHE_ECDSA_WITH_RC4_128_SHA "ECDHE-ECDSA-RC4-SHA" -# define TLS1_TXT_ECDHE_ECDSA_WITH_DES_192_CBC3_SHA "ECDHE-ECDSA-DES-CBC3-SHA" -# define TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_CBC_SHA "ECDHE-ECDSA-AES128-SHA" -# define TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_CBC_SHA "ECDHE-ECDSA-AES256-SHA" - -# define TLS1_TXT_ECDH_RSA_WITH_NULL_SHA "ECDH-RSA-NULL-SHA" -# define TLS1_TXT_ECDH_RSA_WITH_RC4_128_SHA "ECDH-RSA-RC4-SHA" -# define TLS1_TXT_ECDH_RSA_WITH_DES_192_CBC3_SHA "ECDH-RSA-DES-CBC3-SHA" -# define TLS1_TXT_ECDH_RSA_WITH_AES_128_CBC_SHA "ECDH-RSA-AES128-SHA" -# define TLS1_TXT_ECDH_RSA_WITH_AES_256_CBC_SHA "ECDH-RSA-AES256-SHA" - -# define TLS1_TXT_ECDHE_RSA_WITH_NULL_SHA "ECDHE-RSA-NULL-SHA" -# define TLS1_TXT_ECDHE_RSA_WITH_RC4_128_SHA "ECDHE-RSA-RC4-SHA" -# define TLS1_TXT_ECDHE_RSA_WITH_DES_192_CBC3_SHA "ECDHE-RSA-DES-CBC3-SHA" -# define TLS1_TXT_ECDHE_RSA_WITH_AES_128_CBC_SHA "ECDHE-RSA-AES128-SHA" -# define TLS1_TXT_ECDHE_RSA_WITH_AES_256_CBC_SHA "ECDHE-RSA-AES256-SHA" - -# define TLS1_TXT_ECDH_anon_WITH_NULL_SHA "AECDH-NULL-SHA" -# define TLS1_TXT_ECDH_anon_WITH_RC4_128_SHA "AECDH-RC4-SHA" -# define TLS1_TXT_ECDH_anon_WITH_DES_192_CBC3_SHA "AECDH-DES-CBC3-SHA" -# define TLS1_TXT_ECDH_anon_WITH_AES_128_CBC_SHA "AECDH-AES128-SHA" -# define TLS1_TXT_ECDH_anon_WITH_AES_256_CBC_SHA "AECDH-AES256-SHA" - -/* PSK ciphersuites from RFC 4279 */ -# define TLS1_TXT_PSK_WITH_RC4_128_SHA "PSK-RC4-SHA" -# define TLS1_TXT_PSK_WITH_3DES_EDE_CBC_SHA "PSK-3DES-EDE-CBC-SHA" -# define TLS1_TXT_PSK_WITH_AES_128_CBC_SHA "PSK-AES128-CBC-SHA" -# define TLS1_TXT_PSK_WITH_AES_256_CBC_SHA "PSK-AES256-CBC-SHA" - -/* SRP ciphersuite from RFC 5054 */ -# define TLS1_TXT_SRP_SHA_WITH_3DES_EDE_CBC_SHA "SRP-3DES-EDE-CBC-SHA" -# define TLS1_TXT_SRP_SHA_RSA_WITH_3DES_EDE_CBC_SHA "SRP-RSA-3DES-EDE-CBC-SHA" -# define TLS1_TXT_SRP_SHA_DSS_WITH_3DES_EDE_CBC_SHA "SRP-DSS-3DES-EDE-CBC-SHA" -# define TLS1_TXT_SRP_SHA_WITH_AES_128_CBC_SHA "SRP-AES-128-CBC-SHA" -# define TLS1_TXT_SRP_SHA_RSA_WITH_AES_128_CBC_SHA "SRP-RSA-AES-128-CBC-SHA" -# define TLS1_TXT_SRP_SHA_DSS_WITH_AES_128_CBC_SHA "SRP-DSS-AES-128-CBC-SHA" -# define TLS1_TXT_SRP_SHA_WITH_AES_256_CBC_SHA "SRP-AES-256-CBC-SHA" -# define TLS1_TXT_SRP_SHA_RSA_WITH_AES_256_CBC_SHA "SRP-RSA-AES-256-CBC-SHA" -# define TLS1_TXT_SRP_SHA_DSS_WITH_AES_256_CBC_SHA "SRP-DSS-AES-256-CBC-SHA" - -/* Camellia ciphersuites from RFC4132 */ -# define TLS1_TXT_RSA_WITH_CAMELLIA_128_CBC_SHA "CAMELLIA128-SHA" -# define TLS1_TXT_DH_DSS_WITH_CAMELLIA_128_CBC_SHA "DH-DSS-CAMELLIA128-SHA" -# define TLS1_TXT_DH_RSA_WITH_CAMELLIA_128_CBC_SHA "DH-RSA-CAMELLIA128-SHA" -# define TLS1_TXT_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA "DHE-DSS-CAMELLIA128-SHA" -# define TLS1_TXT_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA "DHE-RSA-CAMELLIA128-SHA" -# define TLS1_TXT_ADH_WITH_CAMELLIA_128_CBC_SHA "ADH-CAMELLIA128-SHA" - -# define TLS1_TXT_RSA_WITH_CAMELLIA_256_CBC_SHA "CAMELLIA256-SHA" -# define TLS1_TXT_DH_DSS_WITH_CAMELLIA_256_CBC_SHA "DH-DSS-CAMELLIA256-SHA" -# define TLS1_TXT_DH_RSA_WITH_CAMELLIA_256_CBC_SHA "DH-RSA-CAMELLIA256-SHA" -# define TLS1_TXT_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA "DHE-DSS-CAMELLIA256-SHA" -# define TLS1_TXT_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA "DHE-RSA-CAMELLIA256-SHA" -# define TLS1_TXT_ADH_WITH_CAMELLIA_256_CBC_SHA "ADH-CAMELLIA256-SHA" - -/* SEED ciphersuites from RFC4162 */ -# define TLS1_TXT_RSA_WITH_SEED_SHA "SEED-SHA" -# define TLS1_TXT_DH_DSS_WITH_SEED_SHA "DH-DSS-SEED-SHA" -# define TLS1_TXT_DH_RSA_WITH_SEED_SHA "DH-RSA-SEED-SHA" -# define TLS1_TXT_DHE_DSS_WITH_SEED_SHA "DHE-DSS-SEED-SHA" -# define TLS1_TXT_DHE_RSA_WITH_SEED_SHA "DHE-RSA-SEED-SHA" -# define TLS1_TXT_ADH_WITH_SEED_SHA "ADH-SEED-SHA" - -/* TLS v1.2 ciphersuites */ -# define TLS1_TXT_RSA_WITH_NULL_SHA256 "NULL-SHA256" -# define TLS1_TXT_RSA_WITH_AES_128_SHA256 "AES128-SHA256" -# define TLS1_TXT_RSA_WITH_AES_256_SHA256 "AES256-SHA256" -# define TLS1_TXT_DH_DSS_WITH_AES_128_SHA256 "DH-DSS-AES128-SHA256" -# define TLS1_TXT_DH_RSA_WITH_AES_128_SHA256 "DH-RSA-AES128-SHA256" -# define TLS1_TXT_DHE_DSS_WITH_AES_128_SHA256 "DHE-DSS-AES128-SHA256" -# define TLS1_TXT_DHE_RSA_WITH_AES_128_SHA256 "DHE-RSA-AES128-SHA256" -# define TLS1_TXT_DH_DSS_WITH_AES_256_SHA256 "DH-DSS-AES256-SHA256" -# define TLS1_TXT_DH_RSA_WITH_AES_256_SHA256 "DH-RSA-AES256-SHA256" -# define TLS1_TXT_DHE_DSS_WITH_AES_256_SHA256 "DHE-DSS-AES256-SHA256" -# define TLS1_TXT_DHE_RSA_WITH_AES_256_SHA256 "DHE-RSA-AES256-SHA256" -# define TLS1_TXT_ADH_WITH_AES_128_SHA256 "ADH-AES128-SHA256" -# define TLS1_TXT_ADH_WITH_AES_256_SHA256 "ADH-AES256-SHA256" - -/* TLS v1.2 GCM ciphersuites from RFC5288 */ -# define TLS1_TXT_RSA_WITH_AES_128_GCM_SHA256 "AES128-GCM-SHA256" -# define TLS1_TXT_RSA_WITH_AES_256_GCM_SHA384 "AES256-GCM-SHA384" -# define TLS1_TXT_DHE_RSA_WITH_AES_128_GCM_SHA256 "DHE-RSA-AES128-GCM-SHA256" -# define TLS1_TXT_DHE_RSA_WITH_AES_256_GCM_SHA384 "DHE-RSA-AES256-GCM-SHA384" -# define TLS1_TXT_DH_RSA_WITH_AES_128_GCM_SHA256 "DH-RSA-AES128-GCM-SHA256" -# define TLS1_TXT_DH_RSA_WITH_AES_256_GCM_SHA384 "DH-RSA-AES256-GCM-SHA384" -# define TLS1_TXT_DHE_DSS_WITH_AES_128_GCM_SHA256 "DHE-DSS-AES128-GCM-SHA256" -# define TLS1_TXT_DHE_DSS_WITH_AES_256_GCM_SHA384 "DHE-DSS-AES256-GCM-SHA384" -# define TLS1_TXT_DH_DSS_WITH_AES_128_GCM_SHA256 "DH-DSS-AES128-GCM-SHA256" -# define TLS1_TXT_DH_DSS_WITH_AES_256_GCM_SHA384 "DH-DSS-AES256-GCM-SHA384" -# define TLS1_TXT_ADH_WITH_AES_128_GCM_SHA256 "ADH-AES128-GCM-SHA256" -# define TLS1_TXT_ADH_WITH_AES_256_GCM_SHA384 "ADH-AES256-GCM-SHA384" - -/* ECDH HMAC based ciphersuites from RFC5289 */ - -# define TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_SHA256 "ECDHE-ECDSA-AES128-SHA256" -# define TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_SHA384 "ECDHE-ECDSA-AES256-SHA384" -# define TLS1_TXT_ECDH_ECDSA_WITH_AES_128_SHA256 "ECDH-ECDSA-AES128-SHA256" -# define TLS1_TXT_ECDH_ECDSA_WITH_AES_256_SHA384 "ECDH-ECDSA-AES256-SHA384" -# define TLS1_TXT_ECDHE_RSA_WITH_AES_128_SHA256 "ECDHE-RSA-AES128-SHA256" -# define TLS1_TXT_ECDHE_RSA_WITH_AES_256_SHA384 "ECDHE-RSA-AES256-SHA384" -# define TLS1_TXT_ECDH_RSA_WITH_AES_128_SHA256 "ECDH-RSA-AES128-SHA256" -# define TLS1_TXT_ECDH_RSA_WITH_AES_256_SHA384 "ECDH-RSA-AES256-SHA384" - -/* ECDH GCM based ciphersuites from RFC5289 */ -# define TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 "ECDHE-ECDSA-AES128-GCM-SHA256" -# define TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 "ECDHE-ECDSA-AES256-GCM-SHA384" -# define TLS1_TXT_ECDH_ECDSA_WITH_AES_128_GCM_SHA256 "ECDH-ECDSA-AES128-GCM-SHA256" -# define TLS1_TXT_ECDH_ECDSA_WITH_AES_256_GCM_SHA384 "ECDH-ECDSA-AES256-GCM-SHA384" -# define TLS1_TXT_ECDHE_RSA_WITH_AES_128_GCM_SHA256 "ECDHE-RSA-AES128-GCM-SHA256" -# define TLS1_TXT_ECDHE_RSA_WITH_AES_256_GCM_SHA384 "ECDHE-RSA-AES256-GCM-SHA384" -# define TLS1_TXT_ECDH_RSA_WITH_AES_128_GCM_SHA256 "ECDH-RSA-AES128-GCM-SHA256" -# define TLS1_TXT_ECDH_RSA_WITH_AES_256_GCM_SHA384 "ECDH-RSA-AES256-GCM-SHA384" - -# define TLS_CT_RSA_SIGN 1 -# define TLS_CT_DSS_SIGN 2 -# define TLS_CT_RSA_FIXED_DH 3 -# define TLS_CT_DSS_FIXED_DH 4 -# define TLS_CT_ECDSA_SIGN 64 -# define TLS_CT_RSA_FIXED_ECDH 65 -# define TLS_CT_ECDSA_FIXED_ECDH 66 -# define TLS_CT_GOST94_SIGN 21 -# define TLS_CT_GOST01_SIGN 22 -/* - * when correcting this number, correct also SSL3_CT_NUMBER in ssl3.h (see - * comment there) - */ -# define TLS_CT_NUMBER 9 - -# define TLS1_FINISH_MAC_LENGTH 12 - -# define TLS_MD_MAX_CONST_SIZE 20 -# define TLS_MD_CLIENT_FINISH_CONST "client finished" -# define TLS_MD_CLIENT_FINISH_CONST_SIZE 15 -# define TLS_MD_SERVER_FINISH_CONST "server finished" -# define TLS_MD_SERVER_FINISH_CONST_SIZE 15 -# define TLS_MD_SERVER_WRITE_KEY_CONST "server write key" -# define TLS_MD_SERVER_WRITE_KEY_CONST_SIZE 16 -# define TLS_MD_KEY_EXPANSION_CONST "key expansion" -# define TLS_MD_KEY_EXPANSION_CONST_SIZE 13 -# define TLS_MD_CLIENT_WRITE_KEY_CONST "client write key" -# define TLS_MD_CLIENT_WRITE_KEY_CONST_SIZE 16 -# define TLS_MD_SERVER_WRITE_KEY_CONST "server write key" -# define TLS_MD_SERVER_WRITE_KEY_CONST_SIZE 16 -# define TLS_MD_IV_BLOCK_CONST "IV block" -# define TLS_MD_IV_BLOCK_CONST_SIZE 8 -# define TLS_MD_MASTER_SECRET_CONST "master secret" -# define TLS_MD_MASTER_SECRET_CONST_SIZE 13 - -# ifdef CHARSET_EBCDIC -# undef TLS_MD_CLIENT_FINISH_CONST -/* - * client finished - */ -# define TLS_MD_CLIENT_FINISH_CONST "\x63\x6c\x69\x65\x6e\x74\x20\x66\x69\x6e\x69\x73\x68\x65\x64" - -# undef TLS_MD_SERVER_FINISH_CONST -/* - * server finished - */ -# define TLS_MD_SERVER_FINISH_CONST "\x73\x65\x72\x76\x65\x72\x20\x66\x69\x6e\x69\x73\x68\x65\x64" - -# undef TLS_MD_SERVER_WRITE_KEY_CONST -/* - * server write key - */ -# define TLS_MD_SERVER_WRITE_KEY_CONST "\x73\x65\x72\x76\x65\x72\x20\x77\x72\x69\x74\x65\x20\x6b\x65\x79" - -# undef TLS_MD_KEY_EXPANSION_CONST -/* - * key expansion - */ -# define TLS_MD_KEY_EXPANSION_CONST "\x6b\x65\x79\x20\x65\x78\x70\x61\x6e\x73\x69\x6f\x6e" - -# undef TLS_MD_CLIENT_WRITE_KEY_CONST -/* - * client write key - */ -# define TLS_MD_CLIENT_WRITE_KEY_CONST "\x63\x6c\x69\x65\x6e\x74\x20\x77\x72\x69\x74\x65\x20\x6b\x65\x79" - -# undef TLS_MD_SERVER_WRITE_KEY_CONST -/* - * server write key - */ -# define TLS_MD_SERVER_WRITE_KEY_CONST "\x73\x65\x72\x76\x65\x72\x20\x77\x72\x69\x74\x65\x20\x6b\x65\x79" - -# undef TLS_MD_IV_BLOCK_CONST -/* - * IV block - */ -# define TLS_MD_IV_BLOCK_CONST "\x49\x56\x20\x62\x6c\x6f\x63\x6b" - -# undef TLS_MD_MASTER_SECRET_CONST -/* - * master secret - */ -# define TLS_MD_MASTER_SECRET_CONST "\x6d\x61\x73\x74\x65\x72\x20\x73\x65\x63\x72\x65\x74" -# endif - -/* TLS Session Ticket extension struct */ -struct tls_session_ticket_ext_st { - unsigned short length; - void *data; -}; - -#ifdef __cplusplus -} -#endif -#endif diff --git a/ext/openssl-win64/inc32/openssl/x509.h b/ext/openssl-win64/inc32/openssl/x509.h deleted file mode 100644 index 99337b84..00000000 --- a/ext/openssl-win64/inc32/openssl/x509.h +++ /dev/null @@ -1,1327 +0,0 @@ -/* crypto/x509/x509.h */ -/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) - * All rights reserved. - * - * This package is an SSL implementation written - * by Eric Young (eay@cryptsoft.com). - * The implementation was written so as to conform with Netscapes SSL. - * - * This library is free for commercial and non-commercial use as long as - * the following conditions are aheared to. The following conditions - * apply to all code found in this distribution, be it the RC4, RSA, - * lhash, DES, etc., code; not just the SSL code. The SSL documentation - * included with this distribution is covered by the same copyright terms - * except that the holder is Tim Hudson (tjh@cryptsoft.com). - * - * Copyright remains Eric Young's, and as such any Copyright notices in - * the code are not to be removed. - * If this package is used in a product, Eric Young should be given attribution - * as the author of the parts of the library used. - * This can be in the form of a textual message at program startup or - * in documentation (online or textual) provided with the package. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * "This product includes cryptographic software written by - * Eric Young (eay@cryptsoft.com)" - * The word 'cryptographic' can be left out if the rouines from the library - * being used are not cryptographic related :-). - * 4. If you include any Windows specific code (or a derivative thereof) from - * the apps directory (application code) you must include an acknowledgement: - * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" - * - * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * The licence and distribution terms for any publically available version or - * derivative of this code cannot be changed. i.e. this code cannot simply be - * copied and put under another distribution licence - * [including the GNU Public Licence.] - */ -/* ==================================================================== - * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED. - * ECDH support in OpenSSL originally developed by - * SUN MICROSYSTEMS, INC., and contributed to the OpenSSL project. - */ - -#ifndef HEADER_X509_H -# define HEADER_X509_H - -# include -# include -# ifndef OPENSSL_NO_BUFFER -# include -# endif -# ifndef OPENSSL_NO_EVP -# include -# endif -# ifndef OPENSSL_NO_BIO -# include -# endif -# include -# include -# include - -# ifndef OPENSSL_NO_EC -# include -# endif - -# ifndef OPENSSL_NO_ECDSA -# include -# endif - -# ifndef OPENSSL_NO_ECDH -# include -# endif - -# ifndef OPENSSL_NO_DEPRECATED -# ifndef OPENSSL_NO_RSA -# include -# endif -# ifndef OPENSSL_NO_DSA -# include -# endif -# ifndef OPENSSL_NO_DH -# include -# endif -# endif - -# ifndef OPENSSL_NO_SHA -# include -# endif -# include - -#ifdef __cplusplus -extern "C" { -#endif - -# ifdef OPENSSL_SYS_WIN32 -/* Under Win32 these are defined in wincrypt.h */ -# undef X509_NAME -# undef X509_CERT_PAIR -# undef X509_EXTENSIONS -# endif - -# define X509_FILETYPE_PEM 1 -# define X509_FILETYPE_ASN1 2 -# define X509_FILETYPE_DEFAULT 3 - -# define X509v3_KU_DIGITAL_SIGNATURE 0x0080 -# define X509v3_KU_NON_REPUDIATION 0x0040 -# define X509v3_KU_KEY_ENCIPHERMENT 0x0020 -# define X509v3_KU_DATA_ENCIPHERMENT 0x0010 -# define X509v3_KU_KEY_AGREEMENT 0x0008 -# define X509v3_KU_KEY_CERT_SIGN 0x0004 -# define X509v3_KU_CRL_SIGN 0x0002 -# define X509v3_KU_ENCIPHER_ONLY 0x0001 -# define X509v3_KU_DECIPHER_ONLY 0x8000 -# define X509v3_KU_UNDEF 0xffff - -typedef struct X509_objects_st { - int nid; - int (*a2i) (void); - int (*i2a) (void); -} X509_OBJECTS; - -struct X509_algor_st { - ASN1_OBJECT *algorithm; - ASN1_TYPE *parameter; -} /* X509_ALGOR */ ; - -DECLARE_ASN1_SET_OF(X509_ALGOR) - -typedef STACK_OF(X509_ALGOR) X509_ALGORS; - -typedef struct X509_val_st { - ASN1_TIME *notBefore; - ASN1_TIME *notAfter; -} X509_VAL; - -struct X509_pubkey_st { - X509_ALGOR *algor; - ASN1_BIT_STRING *public_key; - EVP_PKEY *pkey; -}; - -typedef struct X509_sig_st { - X509_ALGOR *algor; - ASN1_OCTET_STRING *digest; -} X509_SIG; - -typedef struct X509_name_entry_st { - ASN1_OBJECT *object; - ASN1_STRING *value; - int set; - int size; /* temp variable */ -} X509_NAME_ENTRY; - -DECLARE_STACK_OF(X509_NAME_ENTRY) -DECLARE_ASN1_SET_OF(X509_NAME_ENTRY) - -/* we always keep X509_NAMEs in 2 forms. */ -struct X509_name_st { - STACK_OF(X509_NAME_ENTRY) *entries; - int modified; /* true if 'bytes' needs to be built */ -# ifndef OPENSSL_NO_BUFFER - BUF_MEM *bytes; -# else - char *bytes; -# endif -/* unsigned long hash; Keep the hash around for lookups */ - unsigned char *canon_enc; - int canon_enclen; -} /* X509_NAME */ ; - -DECLARE_STACK_OF(X509_NAME) - -# define X509_EX_V_NETSCAPE_HACK 0x8000 -# define X509_EX_V_INIT 0x0001 -typedef struct X509_extension_st { - ASN1_OBJECT *object; - ASN1_BOOLEAN critical; - ASN1_OCTET_STRING *value; -} X509_EXTENSION; - -typedef STACK_OF(X509_EXTENSION) X509_EXTENSIONS; - -DECLARE_STACK_OF(X509_EXTENSION) -DECLARE_ASN1_SET_OF(X509_EXTENSION) - -/* a sequence of these are used */ -typedef struct x509_attributes_st { - ASN1_OBJECT *object; - int single; /* 0 for a set, 1 for a single item (which is - * wrong) */ - union { - char *ptr; - /* - * 0 - */ STACK_OF(ASN1_TYPE) *set; - /* - * 1 - */ ASN1_TYPE *single; - } value; -} X509_ATTRIBUTE; - -DECLARE_STACK_OF(X509_ATTRIBUTE) -DECLARE_ASN1_SET_OF(X509_ATTRIBUTE) - -typedef struct X509_req_info_st { - ASN1_ENCODING enc; - ASN1_INTEGER *version; - X509_NAME *subject; - X509_PUBKEY *pubkey; - /* d=2 hl=2 l= 0 cons: cont: 00 */ - STACK_OF(X509_ATTRIBUTE) *attributes; /* [ 0 ] */ -} X509_REQ_INFO; - -typedef struct X509_req_st { - X509_REQ_INFO *req_info; - X509_ALGOR *sig_alg; - ASN1_BIT_STRING *signature; - int references; -} X509_REQ; - -typedef struct x509_cinf_st { - ASN1_INTEGER *version; /* [ 0 ] default of v1 */ - ASN1_INTEGER *serialNumber; - X509_ALGOR *signature; - X509_NAME *issuer; - X509_VAL *validity; - X509_NAME *subject; - X509_PUBKEY *key; - ASN1_BIT_STRING *issuerUID; /* [ 1 ] optional in v2 */ - ASN1_BIT_STRING *subjectUID; /* [ 2 ] optional in v2 */ - STACK_OF(X509_EXTENSION) *extensions; /* [ 3 ] optional in v3 */ - ASN1_ENCODING enc; -} X509_CINF; - -/* - * This stuff is certificate "auxiliary info" it contains details which are - * useful in certificate stores and databases. When used this is tagged onto - * the end of the certificate itself - */ - -typedef struct x509_cert_aux_st { - STACK_OF(ASN1_OBJECT) *trust; /* trusted uses */ - STACK_OF(ASN1_OBJECT) *reject; /* rejected uses */ - ASN1_UTF8STRING *alias; /* "friendly name" */ - ASN1_OCTET_STRING *keyid; /* key id of private key */ - STACK_OF(X509_ALGOR) *other; /* other unspecified info */ -} X509_CERT_AUX; - -struct x509_st { - X509_CINF *cert_info; - X509_ALGOR *sig_alg; - ASN1_BIT_STRING *signature; - int valid; - int references; - char *name; - CRYPTO_EX_DATA ex_data; - /* These contain copies of various extension values */ - long ex_pathlen; - long ex_pcpathlen; - unsigned long ex_flags; - unsigned long ex_kusage; - unsigned long ex_xkusage; - unsigned long ex_nscert; - ASN1_OCTET_STRING *skid; - AUTHORITY_KEYID *akid; - X509_POLICY_CACHE *policy_cache; - STACK_OF(DIST_POINT) *crldp; - STACK_OF(GENERAL_NAME) *altname; - NAME_CONSTRAINTS *nc; -# ifndef OPENSSL_NO_RFC3779 - STACK_OF(IPAddressFamily) *rfc3779_addr; - struct ASIdentifiers_st *rfc3779_asid; -# endif -# ifndef OPENSSL_NO_SHA - unsigned char sha1_hash[SHA_DIGEST_LENGTH]; -# endif - X509_CERT_AUX *aux; -} /* X509 */ ; - -DECLARE_STACK_OF(X509) -DECLARE_ASN1_SET_OF(X509) - -/* This is used for a table of trust checking functions */ - -typedef struct x509_trust_st { - int trust; - int flags; - int (*check_trust) (struct x509_trust_st *, X509 *, int); - char *name; - int arg1; - void *arg2; -} X509_TRUST; - -DECLARE_STACK_OF(X509_TRUST) - -typedef struct x509_cert_pair_st { - X509 *forward; - X509 *reverse; -} X509_CERT_PAIR; - -/* standard trust ids */ - -# define X509_TRUST_DEFAULT -1/* Only valid in purpose settings */ - -# define X509_TRUST_COMPAT 1 -# define X509_TRUST_SSL_CLIENT 2 -# define X509_TRUST_SSL_SERVER 3 -# define X509_TRUST_EMAIL 4 -# define X509_TRUST_OBJECT_SIGN 5 -# define X509_TRUST_OCSP_SIGN 6 -# define X509_TRUST_OCSP_REQUEST 7 -# define X509_TRUST_TSA 8 - -/* Keep these up to date! */ -# define X509_TRUST_MIN 1 -# define X509_TRUST_MAX 8 - -/* trust_flags values */ -# define X509_TRUST_DYNAMIC 1 -# define X509_TRUST_DYNAMIC_NAME 2 - -/* check_trust return codes */ - -# define X509_TRUST_TRUSTED 1 -# define X509_TRUST_REJECTED 2 -# define X509_TRUST_UNTRUSTED 3 - -/* Flags for X509_print_ex() */ - -# define X509_FLAG_COMPAT 0 -# define X509_FLAG_NO_HEADER 1L -# define X509_FLAG_NO_VERSION (1L << 1) -# define X509_FLAG_NO_SERIAL (1L << 2) -# define X509_FLAG_NO_SIGNAME (1L << 3) -# define X509_FLAG_NO_ISSUER (1L << 4) -# define X509_FLAG_NO_VALIDITY (1L << 5) -# define X509_FLAG_NO_SUBJECT (1L << 6) -# define X509_FLAG_NO_PUBKEY (1L << 7) -# define X509_FLAG_NO_EXTENSIONS (1L << 8) -# define X509_FLAG_NO_SIGDUMP (1L << 9) -# define X509_FLAG_NO_AUX (1L << 10) -# define X509_FLAG_NO_ATTRIBUTES (1L << 11) -# define X509_FLAG_NO_IDS (1L << 12) - -/* Flags specific to X509_NAME_print_ex() */ - -/* The field separator information */ - -# define XN_FLAG_SEP_MASK (0xf << 16) - -# define XN_FLAG_COMPAT 0/* Traditional SSLeay: use old - * X509_NAME_print */ -# define XN_FLAG_SEP_COMMA_PLUS (1 << 16)/* RFC2253 ,+ */ -# define XN_FLAG_SEP_CPLUS_SPC (2 << 16)/* ,+ spaced: more readable */ -# define XN_FLAG_SEP_SPLUS_SPC (3 << 16)/* ;+ spaced */ -# define XN_FLAG_SEP_MULTILINE (4 << 16)/* One line per field */ - -# define XN_FLAG_DN_REV (1 << 20)/* Reverse DN order */ - -/* How the field name is shown */ - -# define XN_FLAG_FN_MASK (0x3 << 21) - -# define XN_FLAG_FN_SN 0/* Object short name */ -# define XN_FLAG_FN_LN (1 << 21)/* Object long name */ -# define XN_FLAG_FN_OID (2 << 21)/* Always use OIDs */ -# define XN_FLAG_FN_NONE (3 << 21)/* No field names */ - -# define XN_FLAG_SPC_EQ (1 << 23)/* Put spaces round '=' */ - -/* - * This determines if we dump fields we don't recognise: RFC2253 requires - * this. - */ - -# define XN_FLAG_DUMP_UNKNOWN_FIELDS (1 << 24) - -# define XN_FLAG_FN_ALIGN (1 << 25)/* Align field names to 20 - * characters */ - -/* Complete set of RFC2253 flags */ - -# define XN_FLAG_RFC2253 (ASN1_STRFLGS_RFC2253 | \ - XN_FLAG_SEP_COMMA_PLUS | \ - XN_FLAG_DN_REV | \ - XN_FLAG_FN_SN | \ - XN_FLAG_DUMP_UNKNOWN_FIELDS) - -/* readable oneline form */ - -# define XN_FLAG_ONELINE (ASN1_STRFLGS_RFC2253 | \ - ASN1_STRFLGS_ESC_QUOTE | \ - XN_FLAG_SEP_CPLUS_SPC | \ - XN_FLAG_SPC_EQ | \ - XN_FLAG_FN_SN) - -/* readable multiline form */ - -# define XN_FLAG_MULTILINE (ASN1_STRFLGS_ESC_CTRL | \ - ASN1_STRFLGS_ESC_MSB | \ - XN_FLAG_SEP_MULTILINE | \ - XN_FLAG_SPC_EQ | \ - XN_FLAG_FN_LN | \ - XN_FLAG_FN_ALIGN) - -struct x509_revoked_st { - ASN1_INTEGER *serialNumber; - ASN1_TIME *revocationDate; - STACK_OF(X509_EXTENSION) /* optional */ *extensions; - /* Set up if indirect CRL */ - STACK_OF(GENERAL_NAME) *issuer; - /* Revocation reason */ - int reason; - int sequence; /* load sequence */ -}; - -DECLARE_STACK_OF(X509_REVOKED) -DECLARE_ASN1_SET_OF(X509_REVOKED) - -typedef struct X509_crl_info_st { - ASN1_INTEGER *version; - X509_ALGOR *sig_alg; - X509_NAME *issuer; - ASN1_TIME *lastUpdate; - ASN1_TIME *nextUpdate; - STACK_OF(X509_REVOKED) *revoked; - STACK_OF(X509_EXTENSION) /* [0] */ *extensions; - ASN1_ENCODING enc; -} X509_CRL_INFO; - -struct X509_crl_st { - /* actual signature */ - X509_CRL_INFO *crl; - X509_ALGOR *sig_alg; - ASN1_BIT_STRING *signature; - int references; - int flags; - /* Copies of various extensions */ - AUTHORITY_KEYID *akid; - ISSUING_DIST_POINT *idp; - /* Convenient breakdown of IDP */ - int idp_flags; - int idp_reasons; - /* CRL and base CRL numbers for delta processing */ - ASN1_INTEGER *crl_number; - ASN1_INTEGER *base_crl_number; -# ifndef OPENSSL_NO_SHA - unsigned char sha1_hash[SHA_DIGEST_LENGTH]; -# endif - STACK_OF(GENERAL_NAMES) *issuers; - const X509_CRL_METHOD *meth; - void *meth_data; -} /* X509_CRL */ ; - -DECLARE_STACK_OF(X509_CRL) -DECLARE_ASN1_SET_OF(X509_CRL) - -typedef struct private_key_st { - int version; - /* The PKCS#8 data types */ - X509_ALGOR *enc_algor; - ASN1_OCTET_STRING *enc_pkey; /* encrypted pub key */ - /* When decrypted, the following will not be NULL */ - EVP_PKEY *dec_pkey; - /* used to encrypt and decrypt */ - int key_length; - char *key_data; - int key_free; /* true if we should auto free key_data */ - /* expanded version of 'enc_algor' */ - EVP_CIPHER_INFO cipher; - int references; -} X509_PKEY; - -# ifndef OPENSSL_NO_EVP -typedef struct X509_info_st { - X509 *x509; - X509_CRL *crl; - X509_PKEY *x_pkey; - EVP_CIPHER_INFO enc_cipher; - int enc_len; - char *enc_data; - int references; -} X509_INFO; - -DECLARE_STACK_OF(X509_INFO) -# endif - -/* - * The next 2 structures and their 8 routines were sent to me by Pat Richard - * and are used to manipulate Netscapes spki structures - - * useful if you are writing a CA web page - */ -typedef struct Netscape_spkac_st { - X509_PUBKEY *pubkey; - ASN1_IA5STRING *challenge; /* challenge sent in atlas >= PR2 */ -} NETSCAPE_SPKAC; - -typedef struct Netscape_spki_st { - NETSCAPE_SPKAC *spkac; /* signed public key and challenge */ - X509_ALGOR *sig_algor; - ASN1_BIT_STRING *signature; -} NETSCAPE_SPKI; - -/* Netscape certificate sequence structure */ -typedef struct Netscape_certificate_sequence { - ASN1_OBJECT *type; - STACK_OF(X509) *certs; -} NETSCAPE_CERT_SEQUENCE; - -/*- Unused (and iv length is wrong) -typedef struct CBCParameter_st - { - unsigned char iv[8]; - } CBC_PARAM; -*/ - -/* Password based encryption structure */ - -typedef struct PBEPARAM_st { - ASN1_OCTET_STRING *salt; - ASN1_INTEGER *iter; -} PBEPARAM; - -/* Password based encryption V2 structures */ - -typedef struct PBE2PARAM_st { - X509_ALGOR *keyfunc; - X509_ALGOR *encryption; -} PBE2PARAM; - -typedef struct PBKDF2PARAM_st { -/* Usually OCTET STRING but could be anything */ - ASN1_TYPE *salt; - ASN1_INTEGER *iter; - ASN1_INTEGER *keylength; - X509_ALGOR *prf; -} PBKDF2PARAM; - -/* PKCS#8 private key info structure */ - -struct pkcs8_priv_key_info_st { - /* Flag for various broken formats */ - int broken; -# define PKCS8_OK 0 -# define PKCS8_NO_OCTET 1 -# define PKCS8_EMBEDDED_PARAM 2 -# define PKCS8_NS_DB 3 -# define PKCS8_NEG_PRIVKEY 4 - ASN1_INTEGER *version; - X509_ALGOR *pkeyalg; - /* Should be OCTET STRING but some are broken */ - ASN1_TYPE *pkey; - STACK_OF(X509_ATTRIBUTE) *attributes; -}; - -#ifdef __cplusplus -} -#endif - -# include -# include - -#ifdef __cplusplus -extern "C" { -#endif - -# define X509_EXT_PACK_UNKNOWN 1 -# define X509_EXT_PACK_STRING 2 - -# define X509_get_version(x) ASN1_INTEGER_get((x)->cert_info->version) -/* #define X509_get_serialNumber(x) ((x)->cert_info->serialNumber) */ -# define X509_get_notBefore(x) ((x)->cert_info->validity->notBefore) -# define X509_get_notAfter(x) ((x)->cert_info->validity->notAfter) -# define X509_extract_key(x) X509_get_pubkey(x)/*****/ -# define X509_REQ_get_version(x) ASN1_INTEGER_get((x)->req_info->version) -# define X509_REQ_get_subject_name(x) ((x)->req_info->subject) -# define X509_REQ_extract_key(a) X509_REQ_get_pubkey(a) -# define X509_name_cmp(a,b) X509_NAME_cmp((a),(b)) -# define X509_get_signature_type(x) EVP_PKEY_type(OBJ_obj2nid((x)->sig_alg->algorithm)) - -# define X509_CRL_get_version(x) ASN1_INTEGER_get((x)->crl->version) -# define X509_CRL_get_lastUpdate(x) ((x)->crl->lastUpdate) -# define X509_CRL_get_nextUpdate(x) ((x)->crl->nextUpdate) -# define X509_CRL_get_issuer(x) ((x)->crl->issuer) -# define X509_CRL_get_REVOKED(x) ((x)->crl->revoked) - -void X509_CRL_set_default_method(const X509_CRL_METHOD *meth); -X509_CRL_METHOD *X509_CRL_METHOD_new(int (*crl_init) (X509_CRL *crl), - int (*crl_free) (X509_CRL *crl), - int (*crl_lookup) (X509_CRL *crl, - X509_REVOKED **ret, - ASN1_INTEGER *ser, - X509_NAME *issuer), - int (*crl_verify) (X509_CRL *crl, - EVP_PKEY *pk)); -void X509_CRL_METHOD_free(X509_CRL_METHOD *m); - -void X509_CRL_set_meth_data(X509_CRL *crl, void *dat); -void *X509_CRL_get_meth_data(X509_CRL *crl); - -/* - * This one is only used so that a binary form can output, as in - * i2d_X509_NAME(X509_get_X509_PUBKEY(x),&buf) - */ -# define X509_get_X509_PUBKEY(x) ((x)->cert_info->key) - -const char *X509_verify_cert_error_string(long n); - -# ifndef OPENSSL_NO_EVP -int X509_verify(X509 *a, EVP_PKEY *r); - -int X509_REQ_verify(X509_REQ *a, EVP_PKEY *r); -int X509_CRL_verify(X509_CRL *a, EVP_PKEY *r); -int NETSCAPE_SPKI_verify(NETSCAPE_SPKI *a, EVP_PKEY *r); - -NETSCAPE_SPKI *NETSCAPE_SPKI_b64_decode(const char *str, int len); -char *NETSCAPE_SPKI_b64_encode(NETSCAPE_SPKI *x); -EVP_PKEY *NETSCAPE_SPKI_get_pubkey(NETSCAPE_SPKI *x); -int NETSCAPE_SPKI_set_pubkey(NETSCAPE_SPKI *x, EVP_PKEY *pkey); - -int NETSCAPE_SPKI_print(BIO *out, NETSCAPE_SPKI *spki); - -int X509_signature_dump(BIO *bp, const ASN1_STRING *sig, int indent); -int X509_signature_print(BIO *bp, X509_ALGOR *alg, ASN1_STRING *sig); - -int X509_sign(X509 *x, EVP_PKEY *pkey, const EVP_MD *md); -int X509_sign_ctx(X509 *x, EVP_MD_CTX *ctx); -int X509_http_nbio(OCSP_REQ_CTX *rctx, X509 **pcert); -int X509_REQ_sign(X509_REQ *x, EVP_PKEY *pkey, const EVP_MD *md); -int X509_REQ_sign_ctx(X509_REQ *x, EVP_MD_CTX *ctx); -int X509_CRL_sign(X509_CRL *x, EVP_PKEY *pkey, const EVP_MD *md); -int X509_CRL_sign_ctx(X509_CRL *x, EVP_MD_CTX *ctx); -int X509_CRL_http_nbio(OCSP_REQ_CTX *rctx, X509_CRL **pcrl); -int NETSCAPE_SPKI_sign(NETSCAPE_SPKI *x, EVP_PKEY *pkey, const EVP_MD *md); - -int X509_pubkey_digest(const X509 *data, const EVP_MD *type, - unsigned char *md, unsigned int *len); -int X509_digest(const X509 *data, const EVP_MD *type, - unsigned char *md, unsigned int *len); -int X509_CRL_digest(const X509_CRL *data, const EVP_MD *type, - unsigned char *md, unsigned int *len); -int X509_REQ_digest(const X509_REQ *data, const EVP_MD *type, - unsigned char *md, unsigned int *len); -int X509_NAME_digest(const X509_NAME *data, const EVP_MD *type, - unsigned char *md, unsigned int *len); -# endif - -# ifndef OPENSSL_NO_FP_API -X509 *d2i_X509_fp(FILE *fp, X509 **x509); -int i2d_X509_fp(FILE *fp, X509 *x509); -X509_CRL *d2i_X509_CRL_fp(FILE *fp, X509_CRL **crl); -int i2d_X509_CRL_fp(FILE *fp, X509_CRL *crl); -X509_REQ *d2i_X509_REQ_fp(FILE *fp, X509_REQ **req); -int i2d_X509_REQ_fp(FILE *fp, X509_REQ *req); -# ifndef OPENSSL_NO_RSA -RSA *d2i_RSAPrivateKey_fp(FILE *fp, RSA **rsa); -int i2d_RSAPrivateKey_fp(FILE *fp, RSA *rsa); -RSA *d2i_RSAPublicKey_fp(FILE *fp, RSA **rsa); -int i2d_RSAPublicKey_fp(FILE *fp, RSA *rsa); -RSA *d2i_RSA_PUBKEY_fp(FILE *fp, RSA **rsa); -int i2d_RSA_PUBKEY_fp(FILE *fp, RSA *rsa); -# endif -# ifndef OPENSSL_NO_DSA -DSA *d2i_DSA_PUBKEY_fp(FILE *fp, DSA **dsa); -int i2d_DSA_PUBKEY_fp(FILE *fp, DSA *dsa); -DSA *d2i_DSAPrivateKey_fp(FILE *fp, DSA **dsa); -int i2d_DSAPrivateKey_fp(FILE *fp, DSA *dsa); -# endif -# ifndef OPENSSL_NO_EC -EC_KEY *d2i_EC_PUBKEY_fp(FILE *fp, EC_KEY **eckey); -int i2d_EC_PUBKEY_fp(FILE *fp, EC_KEY *eckey); -EC_KEY *d2i_ECPrivateKey_fp(FILE *fp, EC_KEY **eckey); -int i2d_ECPrivateKey_fp(FILE *fp, EC_KEY *eckey); -# endif -X509_SIG *d2i_PKCS8_fp(FILE *fp, X509_SIG **p8); -int i2d_PKCS8_fp(FILE *fp, X509_SIG *p8); -PKCS8_PRIV_KEY_INFO *d2i_PKCS8_PRIV_KEY_INFO_fp(FILE *fp, - PKCS8_PRIV_KEY_INFO **p8inf); -int i2d_PKCS8_PRIV_KEY_INFO_fp(FILE *fp, PKCS8_PRIV_KEY_INFO *p8inf); -int i2d_PKCS8PrivateKeyInfo_fp(FILE *fp, EVP_PKEY *key); -int i2d_PrivateKey_fp(FILE *fp, EVP_PKEY *pkey); -EVP_PKEY *d2i_PrivateKey_fp(FILE *fp, EVP_PKEY **a); -int i2d_PUBKEY_fp(FILE *fp, EVP_PKEY *pkey); -EVP_PKEY *d2i_PUBKEY_fp(FILE *fp, EVP_PKEY **a); -# endif - -# ifndef OPENSSL_NO_BIO -X509 *d2i_X509_bio(BIO *bp, X509 **x509); -int i2d_X509_bio(BIO *bp, X509 *x509); -X509_CRL *d2i_X509_CRL_bio(BIO *bp, X509_CRL **crl); -int i2d_X509_CRL_bio(BIO *bp, X509_CRL *crl); -X509_REQ *d2i_X509_REQ_bio(BIO *bp, X509_REQ **req); -int i2d_X509_REQ_bio(BIO *bp, X509_REQ *req); -# ifndef OPENSSL_NO_RSA -RSA *d2i_RSAPrivateKey_bio(BIO *bp, RSA **rsa); -int i2d_RSAPrivateKey_bio(BIO *bp, RSA *rsa); -RSA *d2i_RSAPublicKey_bio(BIO *bp, RSA **rsa); -int i2d_RSAPublicKey_bio(BIO *bp, RSA *rsa); -RSA *d2i_RSA_PUBKEY_bio(BIO *bp, RSA **rsa); -int i2d_RSA_PUBKEY_bio(BIO *bp, RSA *rsa); -# endif -# ifndef OPENSSL_NO_DSA -DSA *d2i_DSA_PUBKEY_bio(BIO *bp, DSA **dsa); -int i2d_DSA_PUBKEY_bio(BIO *bp, DSA *dsa); -DSA *d2i_DSAPrivateKey_bio(BIO *bp, DSA **dsa); -int i2d_DSAPrivateKey_bio(BIO *bp, DSA *dsa); -# endif -# ifndef OPENSSL_NO_EC -EC_KEY *d2i_EC_PUBKEY_bio(BIO *bp, EC_KEY **eckey); -int i2d_EC_PUBKEY_bio(BIO *bp, EC_KEY *eckey); -EC_KEY *d2i_ECPrivateKey_bio(BIO *bp, EC_KEY **eckey); -int i2d_ECPrivateKey_bio(BIO *bp, EC_KEY *eckey); -# endif -X509_SIG *d2i_PKCS8_bio(BIO *bp, X509_SIG **p8); -int i2d_PKCS8_bio(BIO *bp, X509_SIG *p8); -PKCS8_PRIV_KEY_INFO *d2i_PKCS8_PRIV_KEY_INFO_bio(BIO *bp, - PKCS8_PRIV_KEY_INFO **p8inf); -int i2d_PKCS8_PRIV_KEY_INFO_bio(BIO *bp, PKCS8_PRIV_KEY_INFO *p8inf); -int i2d_PKCS8PrivateKeyInfo_bio(BIO *bp, EVP_PKEY *key); -int i2d_PrivateKey_bio(BIO *bp, EVP_PKEY *pkey); -EVP_PKEY *d2i_PrivateKey_bio(BIO *bp, EVP_PKEY **a); -int i2d_PUBKEY_bio(BIO *bp, EVP_PKEY *pkey); -EVP_PKEY *d2i_PUBKEY_bio(BIO *bp, EVP_PKEY **a); -# endif - -X509 *X509_dup(X509 *x509); -X509_ATTRIBUTE *X509_ATTRIBUTE_dup(X509_ATTRIBUTE *xa); -X509_EXTENSION *X509_EXTENSION_dup(X509_EXTENSION *ex); -X509_CRL *X509_CRL_dup(X509_CRL *crl); -X509_REVOKED *X509_REVOKED_dup(X509_REVOKED *rev); -X509_REQ *X509_REQ_dup(X509_REQ *req); -X509_ALGOR *X509_ALGOR_dup(X509_ALGOR *xn); -int X509_ALGOR_set0(X509_ALGOR *alg, ASN1_OBJECT *aobj, int ptype, - void *pval); -void X509_ALGOR_get0(ASN1_OBJECT **paobj, int *pptype, void **ppval, - X509_ALGOR *algor); -void X509_ALGOR_set_md(X509_ALGOR *alg, const EVP_MD *md); -int X509_ALGOR_cmp(const X509_ALGOR *a, const X509_ALGOR *b); - -X509_NAME *X509_NAME_dup(X509_NAME *xn); -X509_NAME_ENTRY *X509_NAME_ENTRY_dup(X509_NAME_ENTRY *ne); - -int X509_cmp_time(const ASN1_TIME *s, time_t *t); -int X509_cmp_current_time(const ASN1_TIME *s); -ASN1_TIME *X509_time_adj(ASN1_TIME *s, long adj, time_t *t); -ASN1_TIME *X509_time_adj_ex(ASN1_TIME *s, - int offset_day, long offset_sec, time_t *t); -ASN1_TIME *X509_gmtime_adj(ASN1_TIME *s, long adj); - -const char *X509_get_default_cert_area(void); -const char *X509_get_default_cert_dir(void); -const char *X509_get_default_cert_file(void); -const char *X509_get_default_cert_dir_env(void); -const char *X509_get_default_cert_file_env(void); -const char *X509_get_default_private_dir(void); - -X509_REQ *X509_to_X509_REQ(X509 *x, EVP_PKEY *pkey, const EVP_MD *md); -X509 *X509_REQ_to_X509(X509_REQ *r, int days, EVP_PKEY *pkey); - -DECLARE_ASN1_FUNCTIONS(X509_ALGOR) -DECLARE_ASN1_ENCODE_FUNCTIONS(X509_ALGORS, X509_ALGORS, X509_ALGORS) -DECLARE_ASN1_FUNCTIONS(X509_VAL) - -DECLARE_ASN1_FUNCTIONS(X509_PUBKEY) - -int X509_PUBKEY_set(X509_PUBKEY **x, EVP_PKEY *pkey); -EVP_PKEY *X509_PUBKEY_get(X509_PUBKEY *key); -int X509_get_pubkey_parameters(EVP_PKEY *pkey, STACK_OF(X509) *chain); -int i2d_PUBKEY(EVP_PKEY *a, unsigned char **pp); -EVP_PKEY *d2i_PUBKEY(EVP_PKEY **a, const unsigned char **pp, long length); -# ifndef OPENSSL_NO_RSA -int i2d_RSA_PUBKEY(RSA *a, unsigned char **pp); -RSA *d2i_RSA_PUBKEY(RSA **a, const unsigned char **pp, long length); -# endif -# ifndef OPENSSL_NO_DSA -int i2d_DSA_PUBKEY(DSA *a, unsigned char **pp); -DSA *d2i_DSA_PUBKEY(DSA **a, const unsigned char **pp, long length); -# endif -# ifndef OPENSSL_NO_EC -int i2d_EC_PUBKEY(EC_KEY *a, unsigned char **pp); -EC_KEY *d2i_EC_PUBKEY(EC_KEY **a, const unsigned char **pp, long length); -# endif - -DECLARE_ASN1_FUNCTIONS(X509_SIG) -DECLARE_ASN1_FUNCTIONS(X509_REQ_INFO) -DECLARE_ASN1_FUNCTIONS(X509_REQ) - -DECLARE_ASN1_FUNCTIONS(X509_ATTRIBUTE) -X509_ATTRIBUTE *X509_ATTRIBUTE_create(int nid, int atrtype, void *value); - -DECLARE_ASN1_FUNCTIONS(X509_EXTENSION) -DECLARE_ASN1_ENCODE_FUNCTIONS(X509_EXTENSIONS, X509_EXTENSIONS, X509_EXTENSIONS) - -DECLARE_ASN1_FUNCTIONS(X509_NAME_ENTRY) - -DECLARE_ASN1_FUNCTIONS(X509_NAME) - -int X509_NAME_set(X509_NAME **xn, X509_NAME *name); - -DECLARE_ASN1_FUNCTIONS(X509_CINF) - -DECLARE_ASN1_FUNCTIONS(X509) -DECLARE_ASN1_FUNCTIONS(X509_CERT_AUX) - -DECLARE_ASN1_FUNCTIONS(X509_CERT_PAIR) - -int X509_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new *new_func, - CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func); -int X509_set_ex_data(X509 *r, int idx, void *arg); -void *X509_get_ex_data(X509 *r, int idx); -int i2d_X509_AUX(X509 *a, unsigned char **pp); -X509 *d2i_X509_AUX(X509 **a, const unsigned char **pp, long length); - -int i2d_re_X509_tbs(X509 *x, unsigned char **pp); - -void X509_get0_signature(ASN1_BIT_STRING **psig, X509_ALGOR **palg, - const X509 *x); -int X509_get_signature_nid(const X509 *x); - -int X509_alias_set1(X509 *x, unsigned char *name, int len); -int X509_keyid_set1(X509 *x, unsigned char *id, int len); -unsigned char *X509_alias_get0(X509 *x, int *len); -unsigned char *X509_keyid_get0(X509 *x, int *len); -int (*X509_TRUST_set_default(int (*trust) (int, X509 *, int))) (int, X509 *, - int); -int X509_TRUST_set(int *t, int trust); -int X509_add1_trust_object(X509 *x, ASN1_OBJECT *obj); -int X509_add1_reject_object(X509 *x, ASN1_OBJECT *obj); -void X509_trust_clear(X509 *x); -void X509_reject_clear(X509 *x); - -DECLARE_ASN1_FUNCTIONS(X509_REVOKED) -DECLARE_ASN1_FUNCTIONS(X509_CRL_INFO) -DECLARE_ASN1_FUNCTIONS(X509_CRL) - -int X509_CRL_add0_revoked(X509_CRL *crl, X509_REVOKED *rev); -int X509_CRL_get0_by_serial(X509_CRL *crl, - X509_REVOKED **ret, ASN1_INTEGER *serial); -int X509_CRL_get0_by_cert(X509_CRL *crl, X509_REVOKED **ret, X509 *x); - -X509_PKEY *X509_PKEY_new(void); -void X509_PKEY_free(X509_PKEY *a); -int i2d_X509_PKEY(X509_PKEY *a, unsigned char **pp); -X509_PKEY *d2i_X509_PKEY(X509_PKEY **a, const unsigned char **pp, - long length); - -DECLARE_ASN1_FUNCTIONS(NETSCAPE_SPKI) -DECLARE_ASN1_FUNCTIONS(NETSCAPE_SPKAC) -DECLARE_ASN1_FUNCTIONS(NETSCAPE_CERT_SEQUENCE) - -# ifndef OPENSSL_NO_EVP -X509_INFO *X509_INFO_new(void); -void X509_INFO_free(X509_INFO *a); -char *X509_NAME_oneline(X509_NAME *a, char *buf, int size); - -int ASN1_verify(i2d_of_void *i2d, X509_ALGOR *algor1, - ASN1_BIT_STRING *signature, char *data, EVP_PKEY *pkey); - -int ASN1_digest(i2d_of_void *i2d, const EVP_MD *type, char *data, - unsigned char *md, unsigned int *len); - -int ASN1_sign(i2d_of_void *i2d, X509_ALGOR *algor1, - X509_ALGOR *algor2, ASN1_BIT_STRING *signature, - char *data, EVP_PKEY *pkey, const EVP_MD *type); - -int ASN1_item_digest(const ASN1_ITEM *it, const EVP_MD *type, void *data, - unsigned char *md, unsigned int *len); - -int ASN1_item_verify(const ASN1_ITEM *it, X509_ALGOR *algor1, - ASN1_BIT_STRING *signature, void *data, EVP_PKEY *pkey); - -int ASN1_item_sign(const ASN1_ITEM *it, X509_ALGOR *algor1, - X509_ALGOR *algor2, ASN1_BIT_STRING *signature, void *data, - EVP_PKEY *pkey, const EVP_MD *type); -int ASN1_item_sign_ctx(const ASN1_ITEM *it, X509_ALGOR *algor1, - X509_ALGOR *algor2, ASN1_BIT_STRING *signature, - void *asn, EVP_MD_CTX *ctx); -# endif - -int X509_set_version(X509 *x, long version); -int X509_set_serialNumber(X509 *x, ASN1_INTEGER *serial); -ASN1_INTEGER *X509_get_serialNumber(X509 *x); -int X509_set_issuer_name(X509 *x, X509_NAME *name); -X509_NAME *X509_get_issuer_name(X509 *a); -int X509_set_subject_name(X509 *x, X509_NAME *name); -X509_NAME *X509_get_subject_name(X509 *a); -int X509_set_notBefore(X509 *x, const ASN1_TIME *tm); -int X509_set_notAfter(X509 *x, const ASN1_TIME *tm); -int X509_set_pubkey(X509 *x, EVP_PKEY *pkey); -EVP_PKEY *X509_get_pubkey(X509 *x); -ASN1_BIT_STRING *X509_get0_pubkey_bitstr(const X509 *x); -int X509_certificate_type(X509 *x, EVP_PKEY *pubkey /* optional */ ); - -int X509_REQ_set_version(X509_REQ *x, long version); -int X509_REQ_set_subject_name(X509_REQ *req, X509_NAME *name); -int X509_REQ_set_pubkey(X509_REQ *x, EVP_PKEY *pkey); -EVP_PKEY *X509_REQ_get_pubkey(X509_REQ *req); -int X509_REQ_extension_nid(int nid); -int *X509_REQ_get_extension_nids(void); -void X509_REQ_set_extension_nids(int *nids); -STACK_OF(X509_EXTENSION) *X509_REQ_get_extensions(X509_REQ *req); -int X509_REQ_add_extensions_nid(X509_REQ *req, STACK_OF(X509_EXTENSION) *exts, - int nid); -int X509_REQ_add_extensions(X509_REQ *req, STACK_OF(X509_EXTENSION) *exts); -int X509_REQ_get_attr_count(const X509_REQ *req); -int X509_REQ_get_attr_by_NID(const X509_REQ *req, int nid, int lastpos); -int X509_REQ_get_attr_by_OBJ(const X509_REQ *req, ASN1_OBJECT *obj, - int lastpos); -X509_ATTRIBUTE *X509_REQ_get_attr(const X509_REQ *req, int loc); -X509_ATTRIBUTE *X509_REQ_delete_attr(X509_REQ *req, int loc); -int X509_REQ_add1_attr(X509_REQ *req, X509_ATTRIBUTE *attr); -int X509_REQ_add1_attr_by_OBJ(X509_REQ *req, - const ASN1_OBJECT *obj, int type, - const unsigned char *bytes, int len); -int X509_REQ_add1_attr_by_NID(X509_REQ *req, - int nid, int type, - const unsigned char *bytes, int len); -int X509_REQ_add1_attr_by_txt(X509_REQ *req, - const char *attrname, int type, - const unsigned char *bytes, int len); - -int X509_CRL_set_version(X509_CRL *x, long version); -int X509_CRL_set_issuer_name(X509_CRL *x, X509_NAME *name); -int X509_CRL_set_lastUpdate(X509_CRL *x, const ASN1_TIME *tm); -int X509_CRL_set_nextUpdate(X509_CRL *x, const ASN1_TIME *tm); -int X509_CRL_sort(X509_CRL *crl); - -int X509_REVOKED_set_serialNumber(X509_REVOKED *x, ASN1_INTEGER *serial); -int X509_REVOKED_set_revocationDate(X509_REVOKED *r, ASN1_TIME *tm); - -X509_CRL *X509_CRL_diff(X509_CRL *base, X509_CRL *newer, - EVP_PKEY *skey, const EVP_MD *md, unsigned int flags); - -int X509_REQ_check_private_key(X509_REQ *x509, EVP_PKEY *pkey); - -int X509_check_private_key(X509 *x509, EVP_PKEY *pkey); -int X509_chain_check_suiteb(int *perror_depth, - X509 *x, STACK_OF(X509) *chain, - unsigned long flags); -int X509_CRL_check_suiteb(X509_CRL *crl, EVP_PKEY *pk, unsigned long flags); -STACK_OF(X509) *X509_chain_up_ref(STACK_OF(X509) *chain); - -int X509_issuer_and_serial_cmp(const X509 *a, const X509 *b); -unsigned long X509_issuer_and_serial_hash(X509 *a); - -int X509_issuer_name_cmp(const X509 *a, const X509 *b); -unsigned long X509_issuer_name_hash(X509 *a); - -int X509_subject_name_cmp(const X509 *a, const X509 *b); -unsigned long X509_subject_name_hash(X509 *x); - -# ifndef OPENSSL_NO_MD5 -unsigned long X509_issuer_name_hash_old(X509 *a); -unsigned long X509_subject_name_hash_old(X509 *x); -# endif - -int X509_cmp(const X509 *a, const X509 *b); -int X509_NAME_cmp(const X509_NAME *a, const X509_NAME *b); -unsigned long X509_NAME_hash(X509_NAME *x); -unsigned long X509_NAME_hash_old(X509_NAME *x); - -int X509_CRL_cmp(const X509_CRL *a, const X509_CRL *b); -int X509_CRL_match(const X509_CRL *a, const X509_CRL *b); -# ifndef OPENSSL_NO_FP_API -int X509_print_ex_fp(FILE *bp, X509 *x, unsigned long nmflag, - unsigned long cflag); -int X509_print_fp(FILE *bp, X509 *x); -int X509_CRL_print_fp(FILE *bp, X509_CRL *x); -int X509_REQ_print_fp(FILE *bp, X509_REQ *req); -int X509_NAME_print_ex_fp(FILE *fp, X509_NAME *nm, int indent, - unsigned long flags); -# endif - -# ifndef OPENSSL_NO_BIO -int X509_NAME_print(BIO *bp, X509_NAME *name, int obase); -int X509_NAME_print_ex(BIO *out, X509_NAME *nm, int indent, - unsigned long flags); -int X509_print_ex(BIO *bp, X509 *x, unsigned long nmflag, - unsigned long cflag); -int X509_print(BIO *bp, X509 *x); -int X509_ocspid_print(BIO *bp, X509 *x); -int X509_CERT_AUX_print(BIO *bp, X509_CERT_AUX *x, int indent); -int X509_CRL_print(BIO *bp, X509_CRL *x); -int X509_REQ_print_ex(BIO *bp, X509_REQ *x, unsigned long nmflag, - unsigned long cflag); -int X509_REQ_print(BIO *bp, X509_REQ *req); -# endif - -int X509_NAME_entry_count(X509_NAME *name); -int X509_NAME_get_text_by_NID(X509_NAME *name, int nid, char *buf, int len); -int X509_NAME_get_text_by_OBJ(X509_NAME *name, ASN1_OBJECT *obj, - char *buf, int len); - -/* - * NOTE: you should be passsing -1, not 0 as lastpos. The functions that use - * lastpos, search after that position on. - */ -int X509_NAME_get_index_by_NID(X509_NAME *name, int nid, int lastpos); -int X509_NAME_get_index_by_OBJ(X509_NAME *name, ASN1_OBJECT *obj, - int lastpos); -X509_NAME_ENTRY *X509_NAME_get_entry(X509_NAME *name, int loc); -X509_NAME_ENTRY *X509_NAME_delete_entry(X509_NAME *name, int loc); -int X509_NAME_add_entry(X509_NAME *name, X509_NAME_ENTRY *ne, - int loc, int set); -int X509_NAME_add_entry_by_OBJ(X509_NAME *name, ASN1_OBJECT *obj, int type, - unsigned char *bytes, int len, int loc, - int set); -int X509_NAME_add_entry_by_NID(X509_NAME *name, int nid, int type, - unsigned char *bytes, int len, int loc, - int set); -X509_NAME_ENTRY *X509_NAME_ENTRY_create_by_txt(X509_NAME_ENTRY **ne, - const char *field, int type, - const unsigned char *bytes, - int len); -X509_NAME_ENTRY *X509_NAME_ENTRY_create_by_NID(X509_NAME_ENTRY **ne, int nid, - int type, unsigned char *bytes, - int len); -int X509_NAME_add_entry_by_txt(X509_NAME *name, const char *field, int type, - const unsigned char *bytes, int len, int loc, - int set); -X509_NAME_ENTRY *X509_NAME_ENTRY_create_by_OBJ(X509_NAME_ENTRY **ne, - ASN1_OBJECT *obj, int type, - const unsigned char *bytes, - int len); -int X509_NAME_ENTRY_set_object(X509_NAME_ENTRY *ne, ASN1_OBJECT *obj); -int X509_NAME_ENTRY_set_data(X509_NAME_ENTRY *ne, int type, - const unsigned char *bytes, int len); -ASN1_OBJECT *X509_NAME_ENTRY_get_object(X509_NAME_ENTRY *ne); -ASN1_STRING *X509_NAME_ENTRY_get_data(X509_NAME_ENTRY *ne); - -int X509v3_get_ext_count(const STACK_OF(X509_EXTENSION) *x); -int X509v3_get_ext_by_NID(const STACK_OF(X509_EXTENSION) *x, - int nid, int lastpos); -int X509v3_get_ext_by_OBJ(const STACK_OF(X509_EXTENSION) *x, - ASN1_OBJECT *obj, int lastpos); -int X509v3_get_ext_by_critical(const STACK_OF(X509_EXTENSION) *x, - int crit, int lastpos); -X509_EXTENSION *X509v3_get_ext(const STACK_OF(X509_EXTENSION) *x, int loc); -X509_EXTENSION *X509v3_delete_ext(STACK_OF(X509_EXTENSION) *x, int loc); -STACK_OF(X509_EXTENSION) *X509v3_add_ext(STACK_OF(X509_EXTENSION) **x, - X509_EXTENSION *ex, int loc); - -int X509_get_ext_count(X509 *x); -int X509_get_ext_by_NID(X509 *x, int nid, int lastpos); -int X509_get_ext_by_OBJ(X509 *x, ASN1_OBJECT *obj, int lastpos); -int X509_get_ext_by_critical(X509 *x, int crit, int lastpos); -X509_EXTENSION *X509_get_ext(X509 *x, int loc); -X509_EXTENSION *X509_delete_ext(X509 *x, int loc); -int X509_add_ext(X509 *x, X509_EXTENSION *ex, int loc); -void *X509_get_ext_d2i(X509 *x, int nid, int *crit, int *idx); -int X509_add1_ext_i2d(X509 *x, int nid, void *value, int crit, - unsigned long flags); - -int X509_CRL_get_ext_count(X509_CRL *x); -int X509_CRL_get_ext_by_NID(X509_CRL *x, int nid, int lastpos); -int X509_CRL_get_ext_by_OBJ(X509_CRL *x, ASN1_OBJECT *obj, int lastpos); -int X509_CRL_get_ext_by_critical(X509_CRL *x, int crit, int lastpos); -X509_EXTENSION *X509_CRL_get_ext(X509_CRL *x, int loc); -X509_EXTENSION *X509_CRL_delete_ext(X509_CRL *x, int loc); -int X509_CRL_add_ext(X509_CRL *x, X509_EXTENSION *ex, int loc); -void *X509_CRL_get_ext_d2i(X509_CRL *x, int nid, int *crit, int *idx); -int X509_CRL_add1_ext_i2d(X509_CRL *x, int nid, void *value, int crit, - unsigned long flags); - -int X509_REVOKED_get_ext_count(X509_REVOKED *x); -int X509_REVOKED_get_ext_by_NID(X509_REVOKED *x, int nid, int lastpos); -int X509_REVOKED_get_ext_by_OBJ(X509_REVOKED *x, ASN1_OBJECT *obj, - int lastpos); -int X509_REVOKED_get_ext_by_critical(X509_REVOKED *x, int crit, int lastpos); -X509_EXTENSION *X509_REVOKED_get_ext(X509_REVOKED *x, int loc); -X509_EXTENSION *X509_REVOKED_delete_ext(X509_REVOKED *x, int loc); -int X509_REVOKED_add_ext(X509_REVOKED *x, X509_EXTENSION *ex, int loc); -void *X509_REVOKED_get_ext_d2i(X509_REVOKED *x, int nid, int *crit, int *idx); -int X509_REVOKED_add1_ext_i2d(X509_REVOKED *x, int nid, void *value, int crit, - unsigned long flags); - -X509_EXTENSION *X509_EXTENSION_create_by_NID(X509_EXTENSION **ex, - int nid, int crit, - ASN1_OCTET_STRING *data); -X509_EXTENSION *X509_EXTENSION_create_by_OBJ(X509_EXTENSION **ex, - ASN1_OBJECT *obj, int crit, - ASN1_OCTET_STRING *data); -int X509_EXTENSION_set_object(X509_EXTENSION *ex, ASN1_OBJECT *obj); -int X509_EXTENSION_set_critical(X509_EXTENSION *ex, int crit); -int X509_EXTENSION_set_data(X509_EXTENSION *ex, ASN1_OCTET_STRING *data); -ASN1_OBJECT *X509_EXTENSION_get_object(X509_EXTENSION *ex); -ASN1_OCTET_STRING *X509_EXTENSION_get_data(X509_EXTENSION *ne); -int X509_EXTENSION_get_critical(X509_EXTENSION *ex); - -int X509at_get_attr_count(const STACK_OF(X509_ATTRIBUTE) *x); -int X509at_get_attr_by_NID(const STACK_OF(X509_ATTRIBUTE) *x, int nid, - int lastpos); -int X509at_get_attr_by_OBJ(const STACK_OF(X509_ATTRIBUTE) *sk, - ASN1_OBJECT *obj, int lastpos); -X509_ATTRIBUTE *X509at_get_attr(const STACK_OF(X509_ATTRIBUTE) *x, int loc); -X509_ATTRIBUTE *X509at_delete_attr(STACK_OF(X509_ATTRIBUTE) *x, int loc); -STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr(STACK_OF(X509_ATTRIBUTE) **x, - X509_ATTRIBUTE *attr); -STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr_by_OBJ(STACK_OF(X509_ATTRIBUTE) - **x, const ASN1_OBJECT *obj, - int type, - const unsigned char *bytes, - int len); -STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr_by_NID(STACK_OF(X509_ATTRIBUTE) - **x, int nid, int type, - const unsigned char *bytes, - int len); -STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr_by_txt(STACK_OF(X509_ATTRIBUTE) - **x, const char *attrname, - int type, - const unsigned char *bytes, - int len); -void *X509at_get0_data_by_OBJ(STACK_OF(X509_ATTRIBUTE) *x, ASN1_OBJECT *obj, - int lastpos, int type); -X509_ATTRIBUTE *X509_ATTRIBUTE_create_by_NID(X509_ATTRIBUTE **attr, int nid, - int atrtype, const void *data, - int len); -X509_ATTRIBUTE *X509_ATTRIBUTE_create_by_OBJ(X509_ATTRIBUTE **attr, - const ASN1_OBJECT *obj, - int atrtype, const void *data, - int len); -X509_ATTRIBUTE *X509_ATTRIBUTE_create_by_txt(X509_ATTRIBUTE **attr, - const char *atrname, int type, - const unsigned char *bytes, - int len); -int X509_ATTRIBUTE_set1_object(X509_ATTRIBUTE *attr, const ASN1_OBJECT *obj); -int X509_ATTRIBUTE_set1_data(X509_ATTRIBUTE *attr, int attrtype, - const void *data, int len); -void *X509_ATTRIBUTE_get0_data(X509_ATTRIBUTE *attr, int idx, int atrtype, - void *data); -int X509_ATTRIBUTE_count(X509_ATTRIBUTE *attr); -ASN1_OBJECT *X509_ATTRIBUTE_get0_object(X509_ATTRIBUTE *attr); -ASN1_TYPE *X509_ATTRIBUTE_get0_type(X509_ATTRIBUTE *attr, int idx); - -int EVP_PKEY_get_attr_count(const EVP_PKEY *key); -int EVP_PKEY_get_attr_by_NID(const EVP_PKEY *key, int nid, int lastpos); -int EVP_PKEY_get_attr_by_OBJ(const EVP_PKEY *key, ASN1_OBJECT *obj, - int lastpos); -X509_ATTRIBUTE *EVP_PKEY_get_attr(const EVP_PKEY *key, int loc); -X509_ATTRIBUTE *EVP_PKEY_delete_attr(EVP_PKEY *key, int loc); -int EVP_PKEY_add1_attr(EVP_PKEY *key, X509_ATTRIBUTE *attr); -int EVP_PKEY_add1_attr_by_OBJ(EVP_PKEY *key, - const ASN1_OBJECT *obj, int type, - const unsigned char *bytes, int len); -int EVP_PKEY_add1_attr_by_NID(EVP_PKEY *key, - int nid, int type, - const unsigned char *bytes, int len); -int EVP_PKEY_add1_attr_by_txt(EVP_PKEY *key, - const char *attrname, int type, - const unsigned char *bytes, int len); - -int X509_verify_cert(X509_STORE_CTX *ctx); - -/* lookup a cert from a X509 STACK */ -X509 *X509_find_by_issuer_and_serial(STACK_OF(X509) *sk, X509_NAME *name, - ASN1_INTEGER *serial); -X509 *X509_find_by_subject(STACK_OF(X509) *sk, X509_NAME *name); - -DECLARE_ASN1_FUNCTIONS(PBEPARAM) -DECLARE_ASN1_FUNCTIONS(PBE2PARAM) -DECLARE_ASN1_FUNCTIONS(PBKDF2PARAM) - -int PKCS5_pbe_set0_algor(X509_ALGOR *algor, int alg, int iter, - const unsigned char *salt, int saltlen); - -X509_ALGOR *PKCS5_pbe_set(int alg, int iter, - const unsigned char *salt, int saltlen); -X509_ALGOR *PKCS5_pbe2_set(const EVP_CIPHER *cipher, int iter, - unsigned char *salt, int saltlen); -X509_ALGOR *PKCS5_pbe2_set_iv(const EVP_CIPHER *cipher, int iter, - unsigned char *salt, int saltlen, - unsigned char *aiv, int prf_nid); - -X509_ALGOR *PKCS5_pbkdf2_set(int iter, unsigned char *salt, int saltlen, - int prf_nid, int keylen); - -/* PKCS#8 utilities */ - -DECLARE_ASN1_FUNCTIONS(PKCS8_PRIV_KEY_INFO) - -EVP_PKEY *EVP_PKCS82PKEY(PKCS8_PRIV_KEY_INFO *p8); -PKCS8_PRIV_KEY_INFO *EVP_PKEY2PKCS8(EVP_PKEY *pkey); -PKCS8_PRIV_KEY_INFO *EVP_PKEY2PKCS8_broken(EVP_PKEY *pkey, int broken); -PKCS8_PRIV_KEY_INFO *PKCS8_set_broken(PKCS8_PRIV_KEY_INFO *p8, int broken); - -int PKCS8_pkey_set0(PKCS8_PRIV_KEY_INFO *priv, ASN1_OBJECT *aobj, - int version, int ptype, void *pval, - unsigned char *penc, int penclen); -int PKCS8_pkey_get0(ASN1_OBJECT **ppkalg, - const unsigned char **pk, int *ppklen, - X509_ALGOR **pa, PKCS8_PRIV_KEY_INFO *p8); - -int X509_PUBKEY_set0_param(X509_PUBKEY *pub, ASN1_OBJECT *aobj, - int ptype, void *pval, - unsigned char *penc, int penclen); -int X509_PUBKEY_get0_param(ASN1_OBJECT **ppkalg, - const unsigned char **pk, int *ppklen, - X509_ALGOR **pa, X509_PUBKEY *pub); - -int X509_check_trust(X509 *x, int id, int flags); -int X509_TRUST_get_count(void); -X509_TRUST *X509_TRUST_get0(int idx); -int X509_TRUST_get_by_id(int id); -int X509_TRUST_add(int id, int flags, int (*ck) (X509_TRUST *, X509 *, int), - char *name, int arg1, void *arg2); -void X509_TRUST_cleanup(void); -int X509_TRUST_get_flags(X509_TRUST *xp); -char *X509_TRUST_get0_name(X509_TRUST *xp); -int X509_TRUST_get_trust(X509_TRUST *xp); - -/* BEGIN ERROR CODES */ -/* - * The following lines are auto generated by the script mkerr.pl. Any changes - * made after this point may be overwritten when the script is next run. - */ -void ERR_load_X509_strings(void); - -/* Error codes for the X509 functions. */ - -/* Function codes. */ -# define X509_F_ADD_CERT_DIR 100 -# define X509_F_BY_FILE_CTRL 101 -# define X509_F_CHECK_POLICY 145 -# define X509_F_DIR_CTRL 102 -# define X509_F_GET_CERT_BY_SUBJECT 103 -# define X509_F_NETSCAPE_SPKI_B64_DECODE 129 -# define X509_F_NETSCAPE_SPKI_B64_ENCODE 130 -# define X509_F_X509AT_ADD1_ATTR 135 -# define X509_F_X509V3_ADD_EXT 104 -# define X509_F_X509_ATTRIBUTE_CREATE_BY_NID 136 -# define X509_F_X509_ATTRIBUTE_CREATE_BY_OBJ 137 -# define X509_F_X509_ATTRIBUTE_CREATE_BY_TXT 140 -# define X509_F_X509_ATTRIBUTE_GET0_DATA 139 -# define X509_F_X509_ATTRIBUTE_SET1_DATA 138 -# define X509_F_X509_CHECK_PRIVATE_KEY 128 -# define X509_F_X509_CRL_DIFF 105 -# define X509_F_X509_CRL_PRINT_FP 147 -# define X509_F_X509_EXTENSION_CREATE_BY_NID 108 -# define X509_F_X509_EXTENSION_CREATE_BY_OBJ 109 -# define X509_F_X509_GET_PUBKEY_PARAMETERS 110 -# define X509_F_X509_LOAD_CERT_CRL_FILE 132 -# define X509_F_X509_LOAD_CERT_FILE 111 -# define X509_F_X509_LOAD_CRL_FILE 112 -# define X509_F_X509_NAME_ADD_ENTRY 113 -# define X509_F_X509_NAME_ENTRY_CREATE_BY_NID 114 -# define X509_F_X509_NAME_ENTRY_CREATE_BY_TXT 131 -# define X509_F_X509_NAME_ENTRY_SET_OBJECT 115 -# define X509_F_X509_NAME_ONELINE 116 -# define X509_F_X509_NAME_PRINT 117 -# define X509_F_X509_PRINT_EX_FP 118 -# define X509_F_X509_PUBKEY_GET 119 -# define X509_F_X509_PUBKEY_SET 120 -# define X509_F_X509_REQ_CHECK_PRIVATE_KEY 144 -# define X509_F_X509_REQ_PRINT_EX 121 -# define X509_F_X509_REQ_PRINT_FP 122 -# define X509_F_X509_REQ_TO_X509 123 -# define X509_F_X509_STORE_ADD_CERT 124 -# define X509_F_X509_STORE_ADD_CRL 125 -# define X509_F_X509_STORE_CTX_GET1_ISSUER 146 -# define X509_F_X509_STORE_CTX_INIT 143 -# define X509_F_X509_STORE_CTX_NEW 142 -# define X509_F_X509_STORE_CTX_PURPOSE_INHERIT 134 -# define X509_F_X509_TO_X509_REQ 126 -# define X509_F_X509_TRUST_ADD 133 -# define X509_F_X509_TRUST_SET 141 -# define X509_F_X509_VERIFY_CERT 127 - -/* Reason codes. */ -# define X509_R_AKID_MISMATCH 110 -# define X509_R_BAD_X509_FILETYPE 100 -# define X509_R_BASE64_DECODE_ERROR 118 -# define X509_R_CANT_CHECK_DH_KEY 114 -# define X509_R_CERT_ALREADY_IN_HASH_TABLE 101 -# define X509_R_CRL_ALREADY_DELTA 127 -# define X509_R_CRL_VERIFY_FAILURE 131 -# define X509_R_ERR_ASN1_LIB 102 -# define X509_R_IDP_MISMATCH 128 -# define X509_R_INVALID_DIRECTORY 113 -# define X509_R_INVALID_FIELD_NAME 119 -# define X509_R_INVALID_TRUST 123 -# define X509_R_ISSUER_MISMATCH 129 -# define X509_R_KEY_TYPE_MISMATCH 115 -# define X509_R_KEY_VALUES_MISMATCH 116 -# define X509_R_LOADING_CERT_DIR 103 -# define X509_R_LOADING_DEFAULTS 104 -# define X509_R_METHOD_NOT_SUPPORTED 124 -# define X509_R_NEWER_CRL_NOT_NEWER 132 -# define X509_R_NO_CERT_SET_FOR_US_TO_VERIFY 105 -# define X509_R_NO_CRL_NUMBER 130 -# define X509_R_PUBLIC_KEY_DECODE_ERROR 125 -# define X509_R_PUBLIC_KEY_ENCODE_ERROR 126 -# define X509_R_SHOULD_RETRY 106 -# define X509_R_UNABLE_TO_FIND_PARAMETERS_IN_CHAIN 107 -# define X509_R_UNABLE_TO_GET_CERTS_PUBLIC_KEY 108 -# define X509_R_UNKNOWN_KEY_TYPE 117 -# define X509_R_UNKNOWN_NID 109 -# define X509_R_UNKNOWN_PURPOSE_ID 121 -# define X509_R_UNKNOWN_TRUST_ID 120 -# define X509_R_UNSUPPORTED_ALGORITHM 111 -# define X509_R_WRONG_LOOKUP_TYPE 112 -# define X509_R_WRONG_TYPE 122 - -#ifdef __cplusplus -} -#endif -#endif diff --git a/ext/openssl-win64/inc32/openssl/x509_vfy.h b/ext/openssl-win64/inc32/openssl/x509_vfy.h deleted file mode 100644 index a6f0df54..00000000 --- a/ext/openssl-win64/inc32/openssl/x509_vfy.h +++ /dev/null @@ -1,641 +0,0 @@ -/* crypto/x509/x509_vfy.h */ -/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) - * All rights reserved. - * - * This package is an SSL implementation written - * by Eric Young (eay@cryptsoft.com). - * The implementation was written so as to conform with Netscapes SSL. - * - * This library is free for commercial and non-commercial use as long as - * the following conditions are aheared to. The following conditions - * apply to all code found in this distribution, be it the RC4, RSA, - * lhash, DES, etc., code; not just the SSL code. The SSL documentation - * included with this distribution is covered by the same copyright terms - * except that the holder is Tim Hudson (tjh@cryptsoft.com). - * - * Copyright remains Eric Young's, and as such any Copyright notices in - * the code are not to be removed. - * If this package is used in a product, Eric Young should be given attribution - * as the author of the parts of the library used. - * This can be in the form of a textual message at program startup or - * in documentation (online or textual) provided with the package. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * "This product includes cryptographic software written by - * Eric Young (eay@cryptsoft.com)" - * The word 'cryptographic' can be left out if the rouines from the library - * being used are not cryptographic related :-). - * 4. If you include any Windows specific code (or a derivative thereof) from - * the apps directory (application code) you must include an acknowledgement: - * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" - * - * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * The licence and distribution terms for any publically available version or - * derivative of this code cannot be changed. i.e. this code cannot simply be - * copied and put under another distribution licence - * [including the GNU Public Licence.] - */ - -#ifndef HEADER_X509_H -# include -/* - * openssl/x509.h ends up #include-ing this file at about the only - * appropriate moment. - */ -#endif - -#ifndef HEADER_X509_VFY_H -# define HEADER_X509_VFY_H - -# include -# ifndef OPENSSL_NO_LHASH -# include -# endif -# include -# include -# include - -#ifdef __cplusplus -extern "C" { -#endif - -# if 0 -/* Outer object */ -typedef struct x509_hash_dir_st { - int num_dirs; - char **dirs; - int *dirs_type; - int num_dirs_alloced; -} X509_HASH_DIR_CTX; -# endif - -typedef struct x509_file_st { - int num_paths; /* number of paths to files or directories */ - int num_alloced; - char **paths; /* the list of paths or directories */ - int *path_type; -} X509_CERT_FILE_CTX; - -/*******************************/ -/*- -SSL_CTX -> X509_STORE - -> X509_LOOKUP - ->X509_LOOKUP_METHOD - -> X509_LOOKUP - ->X509_LOOKUP_METHOD - -SSL -> X509_STORE_CTX - ->X509_STORE - -The X509_STORE holds the tables etc for verification stuff. -A X509_STORE_CTX is used while validating a single certificate. -The X509_STORE has X509_LOOKUPs for looking up certs. -The X509_STORE then calls a function to actually verify the -certificate chain. -*/ - -# define X509_LU_RETRY -1 -# define X509_LU_FAIL 0 -# define X509_LU_X509 1 -# define X509_LU_CRL 2 -# define X509_LU_PKEY 3 - -typedef struct x509_object_st { - /* one of the above types */ - int type; - union { - char *ptr; - X509 *x509; - X509_CRL *crl; - EVP_PKEY *pkey; - } data; -} X509_OBJECT; - -typedef struct x509_lookup_st X509_LOOKUP; - -DECLARE_STACK_OF(X509_LOOKUP) -DECLARE_STACK_OF(X509_OBJECT) - -/* This is a static that defines the function interface */ -typedef struct x509_lookup_method_st { - const char *name; - int (*new_item) (X509_LOOKUP *ctx); - void (*free) (X509_LOOKUP *ctx); - int (*init) (X509_LOOKUP *ctx); - int (*shutdown) (X509_LOOKUP *ctx); - int (*ctrl) (X509_LOOKUP *ctx, int cmd, const char *argc, long argl, - char **ret); - int (*get_by_subject) (X509_LOOKUP *ctx, int type, X509_NAME *name, - X509_OBJECT *ret); - int (*get_by_issuer_serial) (X509_LOOKUP *ctx, int type, X509_NAME *name, - ASN1_INTEGER *serial, X509_OBJECT *ret); - int (*get_by_fingerprint) (X509_LOOKUP *ctx, int type, - unsigned char *bytes, int len, - X509_OBJECT *ret); - int (*get_by_alias) (X509_LOOKUP *ctx, int type, char *str, int len, - X509_OBJECT *ret); -} X509_LOOKUP_METHOD; - -typedef struct X509_VERIFY_PARAM_ID_st X509_VERIFY_PARAM_ID; - -/* - * This structure hold all parameters associated with a verify operation by - * including an X509_VERIFY_PARAM structure in related structures the - * parameters used can be customized - */ - -typedef struct X509_VERIFY_PARAM_st { - char *name; - time_t check_time; /* Time to use */ - unsigned long inh_flags; /* Inheritance flags */ - unsigned long flags; /* Various verify flags */ - int purpose; /* purpose to check untrusted certificates */ - int trust; /* trust setting to check */ - int depth; /* Verify depth */ - STACK_OF(ASN1_OBJECT) *policies; /* Permissible policies */ - X509_VERIFY_PARAM_ID *id; /* opaque ID data */ -} X509_VERIFY_PARAM; - -DECLARE_STACK_OF(X509_VERIFY_PARAM) - -/* - * This is used to hold everything. It is used for all certificate - * validation. Once we have a certificate chain, the 'verify' function is - * then called to actually check the cert chain. - */ -struct x509_store_st { - /* The following is a cache of trusted certs */ - int cache; /* if true, stash any hits */ - STACK_OF(X509_OBJECT) *objs; /* Cache of all objects */ - /* These are external lookup methods */ - STACK_OF(X509_LOOKUP) *get_cert_methods; - X509_VERIFY_PARAM *param; - /* Callbacks for various operations */ - /* called to verify a certificate */ - int (*verify) (X509_STORE_CTX *ctx); - /* error callback */ - int (*verify_cb) (int ok, X509_STORE_CTX *ctx); - /* get issuers cert from ctx */ - int (*get_issuer) (X509 **issuer, X509_STORE_CTX *ctx, X509 *x); - /* check issued */ - int (*check_issued) (X509_STORE_CTX *ctx, X509 *x, X509 *issuer); - /* Check revocation status of chain */ - int (*check_revocation) (X509_STORE_CTX *ctx); - /* retrieve CRL */ - int (*get_crl) (X509_STORE_CTX *ctx, X509_CRL **crl, X509 *x); - /* Check CRL validity */ - int (*check_crl) (X509_STORE_CTX *ctx, X509_CRL *crl); - /* Check certificate against CRL */ - int (*cert_crl) (X509_STORE_CTX *ctx, X509_CRL *crl, X509 *x); - STACK_OF(X509) *(*lookup_certs) (X509_STORE_CTX *ctx, X509_NAME *nm); - STACK_OF(X509_CRL) *(*lookup_crls) (X509_STORE_CTX *ctx, X509_NAME *nm); - int (*cleanup) (X509_STORE_CTX *ctx); - CRYPTO_EX_DATA ex_data; - int references; -} /* X509_STORE */ ; - -int X509_STORE_set_depth(X509_STORE *store, int depth); - -# define X509_STORE_set_verify_cb_func(ctx,func) ((ctx)->verify_cb=(func)) -# define X509_STORE_set_verify_func(ctx,func) ((ctx)->verify=(func)) - -/* This is the functions plus an instance of the local variables. */ -struct x509_lookup_st { - int init; /* have we been started */ - int skip; /* don't use us. */ - X509_LOOKUP_METHOD *method; /* the functions */ - char *method_data; /* method data */ - X509_STORE *store_ctx; /* who owns us */ -} /* X509_LOOKUP */ ; - -/* - * This is a used when verifying cert chains. Since the gathering of the - * cert chain can take some time (and have to be 'retried', this needs to be - * kept and passed around. - */ -struct x509_store_ctx_st { /* X509_STORE_CTX */ - X509_STORE *ctx; - /* used when looking up certs */ - int current_method; - /* The following are set by the caller */ - /* The cert to check */ - X509 *cert; - /* chain of X509s - untrusted - passed in */ - STACK_OF(X509) *untrusted; - /* set of CRLs passed in */ - STACK_OF(X509_CRL) *crls; - X509_VERIFY_PARAM *param; - /* Other info for use with get_issuer() */ - void *other_ctx; - /* Callbacks for various operations */ - /* called to verify a certificate */ - int (*verify) (X509_STORE_CTX *ctx); - /* error callback */ - int (*verify_cb) (int ok, X509_STORE_CTX *ctx); - /* get issuers cert from ctx */ - int (*get_issuer) (X509 **issuer, X509_STORE_CTX *ctx, X509 *x); - /* check issued */ - int (*check_issued) (X509_STORE_CTX *ctx, X509 *x, X509 *issuer); - /* Check revocation status of chain */ - int (*check_revocation) (X509_STORE_CTX *ctx); - /* retrieve CRL */ - int (*get_crl) (X509_STORE_CTX *ctx, X509_CRL **crl, X509 *x); - /* Check CRL validity */ - int (*check_crl) (X509_STORE_CTX *ctx, X509_CRL *crl); - /* Check certificate against CRL */ - int (*cert_crl) (X509_STORE_CTX *ctx, X509_CRL *crl, X509 *x); - int (*check_policy) (X509_STORE_CTX *ctx); - STACK_OF(X509) *(*lookup_certs) (X509_STORE_CTX *ctx, X509_NAME *nm); - STACK_OF(X509_CRL) *(*lookup_crls) (X509_STORE_CTX *ctx, X509_NAME *nm); - int (*cleanup) (X509_STORE_CTX *ctx); - /* The following is built up */ - /* if 0, rebuild chain */ - int valid; - /* index of last untrusted cert */ - int last_untrusted; - /* chain of X509s - built up and trusted */ - STACK_OF(X509) *chain; - /* Valid policy tree */ - X509_POLICY_TREE *tree; - /* Require explicit policy value */ - int explicit_policy; - /* When something goes wrong, this is why */ - int error_depth; - int error; - X509 *current_cert; - /* cert currently being tested as valid issuer */ - X509 *current_issuer; - /* current CRL */ - X509_CRL *current_crl; - /* score of current CRL */ - int current_crl_score; - /* Reason mask */ - unsigned int current_reasons; - /* For CRL path validation: parent context */ - X509_STORE_CTX *parent; - CRYPTO_EX_DATA ex_data; -} /* X509_STORE_CTX */ ; - -void X509_STORE_CTX_set_depth(X509_STORE_CTX *ctx, int depth); - -# define X509_STORE_CTX_set_app_data(ctx,data) \ - X509_STORE_CTX_set_ex_data(ctx,0,data) -# define X509_STORE_CTX_get_app_data(ctx) \ - X509_STORE_CTX_get_ex_data(ctx,0) - -# define X509_L_FILE_LOAD 1 -# define X509_L_ADD_DIR 2 - -# define X509_LOOKUP_load_file(x,name,type) \ - X509_LOOKUP_ctrl((x),X509_L_FILE_LOAD,(name),(long)(type),NULL) - -# define X509_LOOKUP_add_dir(x,name,type) \ - X509_LOOKUP_ctrl((x),X509_L_ADD_DIR,(name),(long)(type),NULL) - -# define X509_V_OK 0 -/* illegal error (for uninitialized values, to avoid X509_V_OK): 1 */ - -# define X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT 2 -# define X509_V_ERR_UNABLE_TO_GET_CRL 3 -# define X509_V_ERR_UNABLE_TO_DECRYPT_CERT_SIGNATURE 4 -# define X509_V_ERR_UNABLE_TO_DECRYPT_CRL_SIGNATURE 5 -# define X509_V_ERR_UNABLE_TO_DECODE_ISSUER_PUBLIC_KEY 6 -# define X509_V_ERR_CERT_SIGNATURE_FAILURE 7 -# define X509_V_ERR_CRL_SIGNATURE_FAILURE 8 -# define X509_V_ERR_CERT_NOT_YET_VALID 9 -# define X509_V_ERR_CERT_HAS_EXPIRED 10 -# define X509_V_ERR_CRL_NOT_YET_VALID 11 -# define X509_V_ERR_CRL_HAS_EXPIRED 12 -# define X509_V_ERR_ERROR_IN_CERT_NOT_BEFORE_FIELD 13 -# define X509_V_ERR_ERROR_IN_CERT_NOT_AFTER_FIELD 14 -# define X509_V_ERR_ERROR_IN_CRL_LAST_UPDATE_FIELD 15 -# define X509_V_ERR_ERROR_IN_CRL_NEXT_UPDATE_FIELD 16 -# define X509_V_ERR_OUT_OF_MEM 17 -# define X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT 18 -# define X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN 19 -# define X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY 20 -# define X509_V_ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE 21 -# define X509_V_ERR_CERT_CHAIN_TOO_LONG 22 -# define X509_V_ERR_CERT_REVOKED 23 -# define X509_V_ERR_INVALID_CA 24 -# define X509_V_ERR_PATH_LENGTH_EXCEEDED 25 -# define X509_V_ERR_INVALID_PURPOSE 26 -# define X509_V_ERR_CERT_UNTRUSTED 27 -# define X509_V_ERR_CERT_REJECTED 28 -/* These are 'informational' when looking for issuer cert */ -# define X509_V_ERR_SUBJECT_ISSUER_MISMATCH 29 -# define X509_V_ERR_AKID_SKID_MISMATCH 30 -# define X509_V_ERR_AKID_ISSUER_SERIAL_MISMATCH 31 -# define X509_V_ERR_KEYUSAGE_NO_CERTSIGN 32 - -# define X509_V_ERR_UNABLE_TO_GET_CRL_ISSUER 33 -# define X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION 34 -# define X509_V_ERR_KEYUSAGE_NO_CRL_SIGN 35 -# define X509_V_ERR_UNHANDLED_CRITICAL_CRL_EXTENSION 36 -# define X509_V_ERR_INVALID_NON_CA 37 -# define X509_V_ERR_PROXY_PATH_LENGTH_EXCEEDED 38 -# define X509_V_ERR_KEYUSAGE_NO_DIGITAL_SIGNATURE 39 -# define X509_V_ERR_PROXY_CERTIFICATES_NOT_ALLOWED 40 - -# define X509_V_ERR_INVALID_EXTENSION 41 -# define X509_V_ERR_INVALID_POLICY_EXTENSION 42 -# define X509_V_ERR_NO_EXPLICIT_POLICY 43 -# define X509_V_ERR_DIFFERENT_CRL_SCOPE 44 -# define X509_V_ERR_UNSUPPORTED_EXTENSION_FEATURE 45 - -# define X509_V_ERR_UNNESTED_RESOURCE 46 - -# define X509_V_ERR_PERMITTED_VIOLATION 47 -# define X509_V_ERR_EXCLUDED_VIOLATION 48 -# define X509_V_ERR_SUBTREE_MINMAX 49 -# define X509_V_ERR_UNSUPPORTED_CONSTRAINT_TYPE 51 -# define X509_V_ERR_UNSUPPORTED_CONSTRAINT_SYNTAX 52 -# define X509_V_ERR_UNSUPPORTED_NAME_SYNTAX 53 -# define X509_V_ERR_CRL_PATH_VALIDATION_ERROR 54 - -/* Suite B mode algorithm violation */ -# define X509_V_ERR_SUITE_B_INVALID_VERSION 56 -# define X509_V_ERR_SUITE_B_INVALID_ALGORITHM 57 -# define X509_V_ERR_SUITE_B_INVALID_CURVE 58 -# define X509_V_ERR_SUITE_B_INVALID_SIGNATURE_ALGORITHM 59 -# define X509_V_ERR_SUITE_B_LOS_NOT_ALLOWED 60 -# define X509_V_ERR_SUITE_B_CANNOT_SIGN_P_384_WITH_P_256 61 - -/* Host, email and IP check errors */ -# define X509_V_ERR_HOSTNAME_MISMATCH 62 -# define X509_V_ERR_EMAIL_MISMATCH 63 -# define X509_V_ERR_IP_ADDRESS_MISMATCH 64 - -/* The application is not happy */ -# define X509_V_ERR_APPLICATION_VERIFICATION 50 - -/* Certificate verify flags */ - -/* Send issuer+subject checks to verify_cb */ -# define X509_V_FLAG_CB_ISSUER_CHECK 0x1 -/* Use check time instead of current time */ -# define X509_V_FLAG_USE_CHECK_TIME 0x2 -/* Lookup CRLs */ -# define X509_V_FLAG_CRL_CHECK 0x4 -/* Lookup CRLs for whole chain */ -# define X509_V_FLAG_CRL_CHECK_ALL 0x8 -/* Ignore unhandled critical extensions */ -# define X509_V_FLAG_IGNORE_CRITICAL 0x10 -/* Disable workarounds for broken certificates */ -# define X509_V_FLAG_X509_STRICT 0x20 -/* Enable proxy certificate validation */ -# define X509_V_FLAG_ALLOW_PROXY_CERTS 0x40 -/* Enable policy checking */ -# define X509_V_FLAG_POLICY_CHECK 0x80 -/* Policy variable require-explicit-policy */ -# define X509_V_FLAG_EXPLICIT_POLICY 0x100 -/* Policy variable inhibit-any-policy */ -# define X509_V_FLAG_INHIBIT_ANY 0x200 -/* Policy variable inhibit-policy-mapping */ -# define X509_V_FLAG_INHIBIT_MAP 0x400 -/* Notify callback that policy is OK */ -# define X509_V_FLAG_NOTIFY_POLICY 0x800 -/* Extended CRL features such as indirect CRLs, alternate CRL signing keys */ -# define X509_V_FLAG_EXTENDED_CRL_SUPPORT 0x1000 -/* Delta CRL support */ -# define X509_V_FLAG_USE_DELTAS 0x2000 -/* Check selfsigned CA signature */ -# define X509_V_FLAG_CHECK_SS_SIGNATURE 0x4000 -/* Use trusted store first */ -# define X509_V_FLAG_TRUSTED_FIRST 0x8000 -/* Suite B 128 bit only mode: not normally used */ -# define X509_V_FLAG_SUITEB_128_LOS_ONLY 0x10000 -/* Suite B 192 bit only mode */ -# define X509_V_FLAG_SUITEB_192_LOS 0x20000 -/* Suite B 128 bit mode allowing 192 bit algorithms */ -# define X509_V_FLAG_SUITEB_128_LOS 0x30000 - -/* Allow partial chains if at least one certificate is in trusted store */ -# define X509_V_FLAG_PARTIAL_CHAIN 0x80000 - -# define X509_VP_FLAG_DEFAULT 0x1 -# define X509_VP_FLAG_OVERWRITE 0x2 -# define X509_VP_FLAG_RESET_FLAGS 0x4 -# define X509_VP_FLAG_LOCKED 0x8 -# define X509_VP_FLAG_ONCE 0x10 - -/* Internal use: mask of policy related options */ -# define X509_V_FLAG_POLICY_MASK (X509_V_FLAG_POLICY_CHECK \ - | X509_V_FLAG_EXPLICIT_POLICY \ - | X509_V_FLAG_INHIBIT_ANY \ - | X509_V_FLAG_INHIBIT_MAP) - -int X509_OBJECT_idx_by_subject(STACK_OF(X509_OBJECT) *h, int type, - X509_NAME *name); -X509_OBJECT *X509_OBJECT_retrieve_by_subject(STACK_OF(X509_OBJECT) *h, - int type, X509_NAME *name); -X509_OBJECT *X509_OBJECT_retrieve_match(STACK_OF(X509_OBJECT) *h, - X509_OBJECT *x); -void X509_OBJECT_up_ref_count(X509_OBJECT *a); -void X509_OBJECT_free_contents(X509_OBJECT *a); -X509_STORE *X509_STORE_new(void); -void X509_STORE_free(X509_STORE *v); - -STACK_OF(X509) *X509_STORE_get1_certs(X509_STORE_CTX *st, X509_NAME *nm); -STACK_OF(X509_CRL) *X509_STORE_get1_crls(X509_STORE_CTX *st, X509_NAME *nm); -int X509_STORE_set_flags(X509_STORE *ctx, unsigned long flags); -int X509_STORE_set_purpose(X509_STORE *ctx, int purpose); -int X509_STORE_set_trust(X509_STORE *ctx, int trust); -int X509_STORE_set1_param(X509_STORE *ctx, X509_VERIFY_PARAM *pm); - -void X509_STORE_set_verify_cb(X509_STORE *ctx, - int (*verify_cb) (int, X509_STORE_CTX *)); - -void X509_STORE_set_lookup_crls_cb(X509_STORE *ctx, - STACK_OF(X509_CRL) *(*cb) (X509_STORE_CTX - *ctx, - X509_NAME *nm)); - -X509_STORE_CTX *X509_STORE_CTX_new(void); - -int X509_STORE_CTX_get1_issuer(X509 **issuer, X509_STORE_CTX *ctx, X509 *x); - -void X509_STORE_CTX_free(X509_STORE_CTX *ctx); -int X509_STORE_CTX_init(X509_STORE_CTX *ctx, X509_STORE *store, - X509 *x509, STACK_OF(X509) *chain); -void X509_STORE_CTX_trusted_stack(X509_STORE_CTX *ctx, STACK_OF(X509) *sk); -void X509_STORE_CTX_cleanup(X509_STORE_CTX *ctx); - -X509_STORE *X509_STORE_CTX_get0_store(X509_STORE_CTX *ctx); - -X509_LOOKUP *X509_STORE_add_lookup(X509_STORE *v, X509_LOOKUP_METHOD *m); - -X509_LOOKUP_METHOD *X509_LOOKUP_hash_dir(void); -X509_LOOKUP_METHOD *X509_LOOKUP_file(void); - -int X509_STORE_add_cert(X509_STORE *ctx, X509 *x); -int X509_STORE_add_crl(X509_STORE *ctx, X509_CRL *x); - -int X509_STORE_get_by_subject(X509_STORE_CTX *vs, int type, X509_NAME *name, - X509_OBJECT *ret); - -int X509_LOOKUP_ctrl(X509_LOOKUP *ctx, int cmd, const char *argc, - long argl, char **ret); - -# ifndef OPENSSL_NO_STDIO -int X509_load_cert_file(X509_LOOKUP *ctx, const char *file, int type); -int X509_load_crl_file(X509_LOOKUP *ctx, const char *file, int type); -int X509_load_cert_crl_file(X509_LOOKUP *ctx, const char *file, int type); -# endif - -X509_LOOKUP *X509_LOOKUP_new(X509_LOOKUP_METHOD *method); -void X509_LOOKUP_free(X509_LOOKUP *ctx); -int X509_LOOKUP_init(X509_LOOKUP *ctx); -int X509_LOOKUP_by_subject(X509_LOOKUP *ctx, int type, X509_NAME *name, - X509_OBJECT *ret); -int X509_LOOKUP_by_issuer_serial(X509_LOOKUP *ctx, int type, X509_NAME *name, - ASN1_INTEGER *serial, X509_OBJECT *ret); -int X509_LOOKUP_by_fingerprint(X509_LOOKUP *ctx, int type, - unsigned char *bytes, int len, - X509_OBJECT *ret); -int X509_LOOKUP_by_alias(X509_LOOKUP *ctx, int type, char *str, int len, - X509_OBJECT *ret); -int X509_LOOKUP_shutdown(X509_LOOKUP *ctx); - -# ifndef OPENSSL_NO_STDIO -int X509_STORE_load_locations(X509_STORE *ctx, - const char *file, const char *dir); -int X509_STORE_set_default_paths(X509_STORE *ctx); -# endif - -int X509_STORE_CTX_get_ex_new_index(long argl, void *argp, - CRYPTO_EX_new *new_func, - CRYPTO_EX_dup *dup_func, - CRYPTO_EX_free *free_func); -int X509_STORE_CTX_set_ex_data(X509_STORE_CTX *ctx, int idx, void *data); -void *X509_STORE_CTX_get_ex_data(X509_STORE_CTX *ctx, int idx); -int X509_STORE_CTX_get_error(X509_STORE_CTX *ctx); -void X509_STORE_CTX_set_error(X509_STORE_CTX *ctx, int s); -int X509_STORE_CTX_get_error_depth(X509_STORE_CTX *ctx); -X509 *X509_STORE_CTX_get_current_cert(X509_STORE_CTX *ctx); -X509 *X509_STORE_CTX_get0_current_issuer(X509_STORE_CTX *ctx); -X509_CRL *X509_STORE_CTX_get0_current_crl(X509_STORE_CTX *ctx); -X509_STORE_CTX *X509_STORE_CTX_get0_parent_ctx(X509_STORE_CTX *ctx); -STACK_OF(X509) *X509_STORE_CTX_get_chain(X509_STORE_CTX *ctx); -STACK_OF(X509) *X509_STORE_CTX_get1_chain(X509_STORE_CTX *ctx); -void X509_STORE_CTX_set_cert(X509_STORE_CTX *c, X509 *x); -void X509_STORE_CTX_set_chain(X509_STORE_CTX *c, STACK_OF(X509) *sk); -void X509_STORE_CTX_set0_crls(X509_STORE_CTX *c, STACK_OF(X509_CRL) *sk); -int X509_STORE_CTX_set_purpose(X509_STORE_CTX *ctx, int purpose); -int X509_STORE_CTX_set_trust(X509_STORE_CTX *ctx, int trust); -int X509_STORE_CTX_purpose_inherit(X509_STORE_CTX *ctx, int def_purpose, - int purpose, int trust); -void X509_STORE_CTX_set_flags(X509_STORE_CTX *ctx, unsigned long flags); -void X509_STORE_CTX_set_time(X509_STORE_CTX *ctx, unsigned long flags, - time_t t); -void X509_STORE_CTX_set_verify_cb(X509_STORE_CTX *ctx, - int (*verify_cb) (int, X509_STORE_CTX *)); - -X509_POLICY_TREE *X509_STORE_CTX_get0_policy_tree(X509_STORE_CTX *ctx); -int X509_STORE_CTX_get_explicit_policy(X509_STORE_CTX *ctx); - -X509_VERIFY_PARAM *X509_STORE_CTX_get0_param(X509_STORE_CTX *ctx); -void X509_STORE_CTX_set0_param(X509_STORE_CTX *ctx, X509_VERIFY_PARAM *param); -int X509_STORE_CTX_set_default(X509_STORE_CTX *ctx, const char *name); - -/* X509_VERIFY_PARAM functions */ - -X509_VERIFY_PARAM *X509_VERIFY_PARAM_new(void); -void X509_VERIFY_PARAM_free(X509_VERIFY_PARAM *param); -int X509_VERIFY_PARAM_inherit(X509_VERIFY_PARAM *to, - const X509_VERIFY_PARAM *from); -int X509_VERIFY_PARAM_set1(X509_VERIFY_PARAM *to, - const X509_VERIFY_PARAM *from); -int X509_VERIFY_PARAM_set1_name(X509_VERIFY_PARAM *param, const char *name); -int X509_VERIFY_PARAM_set_flags(X509_VERIFY_PARAM *param, - unsigned long flags); -int X509_VERIFY_PARAM_clear_flags(X509_VERIFY_PARAM *param, - unsigned long flags); -unsigned long X509_VERIFY_PARAM_get_flags(X509_VERIFY_PARAM *param); -int X509_VERIFY_PARAM_set_purpose(X509_VERIFY_PARAM *param, int purpose); -int X509_VERIFY_PARAM_set_trust(X509_VERIFY_PARAM *param, int trust); -void X509_VERIFY_PARAM_set_depth(X509_VERIFY_PARAM *param, int depth); -void X509_VERIFY_PARAM_set_time(X509_VERIFY_PARAM *param, time_t t); -int X509_VERIFY_PARAM_add0_policy(X509_VERIFY_PARAM *param, - ASN1_OBJECT *policy); -int X509_VERIFY_PARAM_set1_policies(X509_VERIFY_PARAM *param, - STACK_OF(ASN1_OBJECT) *policies); - -int X509_VERIFY_PARAM_set1_host(X509_VERIFY_PARAM *param, - const char *name, size_t namelen); -int X509_VERIFY_PARAM_add1_host(X509_VERIFY_PARAM *param, - const char *name, size_t namelen); -void X509_VERIFY_PARAM_set_hostflags(X509_VERIFY_PARAM *param, - unsigned int flags); -char *X509_VERIFY_PARAM_get0_peername(X509_VERIFY_PARAM *); -int X509_VERIFY_PARAM_set1_email(X509_VERIFY_PARAM *param, - const char *email, size_t emaillen); -int X509_VERIFY_PARAM_set1_ip(X509_VERIFY_PARAM *param, - const unsigned char *ip, size_t iplen); -int X509_VERIFY_PARAM_set1_ip_asc(X509_VERIFY_PARAM *param, - const char *ipasc); - -int X509_VERIFY_PARAM_get_depth(const X509_VERIFY_PARAM *param); -const char *X509_VERIFY_PARAM_get0_name(const X509_VERIFY_PARAM *param); - -int X509_VERIFY_PARAM_add0_table(X509_VERIFY_PARAM *param); -int X509_VERIFY_PARAM_get_count(void); -const X509_VERIFY_PARAM *X509_VERIFY_PARAM_get0(int id); -const X509_VERIFY_PARAM *X509_VERIFY_PARAM_lookup(const char *name); -void X509_VERIFY_PARAM_table_cleanup(void); - -int X509_policy_check(X509_POLICY_TREE **ptree, int *pexplicit_policy, - STACK_OF(X509) *certs, - STACK_OF(ASN1_OBJECT) *policy_oids, unsigned int flags); - -void X509_policy_tree_free(X509_POLICY_TREE *tree); - -int X509_policy_tree_level_count(const X509_POLICY_TREE *tree); -X509_POLICY_LEVEL *X509_policy_tree_get0_level(const X509_POLICY_TREE *tree, - int i); - -STACK_OF(X509_POLICY_NODE) *X509_policy_tree_get0_policies(const - X509_POLICY_TREE - *tree); - -STACK_OF(X509_POLICY_NODE) *X509_policy_tree_get0_user_policies(const - X509_POLICY_TREE - *tree); - -int X509_policy_level_node_count(X509_POLICY_LEVEL *level); - -X509_POLICY_NODE *X509_policy_level_get0_node(X509_POLICY_LEVEL *level, - int i); - -const ASN1_OBJECT *X509_policy_node_get0_policy(const X509_POLICY_NODE *node); - -STACK_OF(POLICYQUALINFO) *X509_policy_node_get0_qualifiers(const - X509_POLICY_NODE - *node); -const X509_POLICY_NODE *X509_policy_node_get0_parent(const X509_POLICY_NODE - *node); - -#ifdef __cplusplus -} -#endif -#endif diff --git a/ext/openssl-win64/out32dll/libeay32.dll b/ext/openssl-win64/out32dll/libeay32.dll deleted file mode 100644 index 07995d901dd772bc1d1abb5d2b79489652ac2da1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2074624 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

}h~ zo+KVX!5rt2&!Pb!#Y7}fheOziM=T)2<=hKjS66>!pHfeO8l>=HL4i-Qhs`0^_AcU= zxlhBHF@P-uy)umiC%}YGQ-dVpMi6uO9fePDHH72vt?srU0zq^@&0r>)5NCsF2eXq* zh!`QyYcc+y*T%T_f_Lwt3pubGii_Y5w3A`xCY#2ZXszq3 ziM&LLZm2`h2-kJ6WrN<4i4_omStk2|Ff!`N7Eu#i5{jT;Jz0siA`)(b0#^hB(y|+u z$A{$2K?fpMXerSaLPm5U~AXY#aY_tecPbL_^1W(r^F{w=)`D4t1A?*};(+oL zPE$QZL1eB9=&B#;Qud4fS6O?6m}5@&5WCxmAJJxj!FCAl0QQoA^pqgJV>5(wgUWe+?P8UpSM$k{Q}|2iKW?#Fgz zuU=Va+DCPqRAq-_r?QXX1rF~HYlJDNF&Z08)`k=VG{7300!)#)N`M8*PDhfR$U6WP zC7-AcXxdEgni{|*U>QlY1lDvH%3Y3Q#LEe$ zeK5nGbik!Fv~8vjw|ckF(a*B(T)@NjDVnfLe8Sv* z?9i&G_=J>5{11il%9B%+$@8v^|4Gy1f70DO#s63+K4D&u@js~Q5})uqKCfC|L_rt- zo%o+=fY&`fAzhFEnWsKRq?0+kdi+l^V^TOi;XJ;2%FhFPiT~m4l{@BzG{fP;b%_5-=b=4=_4pqO@EOG7e<;QW(LuBEK&a0g zJP`PEJ01uFx&sdc1J{~z)miMM$yj?E$BZKnRS=XjeX|GFaH=5OgSJ;uk?(|0!TrAHfH)>9Mc zn*l7|W+5!K+P)jvuJJYVewfxQ;MEq0VcURwx_@`?>D9c6s)41FFU8pa#<|PI~ z^@S<@Q|BzHFHHN>&o3^nFHGM&<8?PM*)SK=-5q}@X ztN!b~Z(_WaXO>UEc(p%V`7mxqV>T&%C6~;A7dR+fe)x{nL@nT+m(Gp<(-&y}3 z1ibF{FiT(mm#B{s>Hm>EyxFYJ4v+sG2+%#+Lkb_GKN3XzR}ES(IF1#)_8+WBRbooqu1uFzMjc7d~%W;6( z?Lj-smWc=@o}J~JxDd&ankz8zE@VcauW#brNZEZ87vYiVo46Q{;l7FY;E~~*Sc-?u zH}PJz7~t{OKUOTkUkya$??haQPDJGIL`42hMC9+psrZ?LVV2>!P>Jz&q+6=!gKypr zTe%KdG1tP}SHOj=9L#VCyN6`PbP%(Va<&BZ9xT#Uj#zT&?4f-mn{sJR%0nu}4G z;44m4rf4okq2^)~YA!}$KVPv$nPS!YvL`U?Px&}s;Q(LpHOiC}t(HAeo2u0g^c7#L zOi9yf*%P&cwA#VG;_H+t=~^v&qIQT@JJeS^tZhHUL$UA{{|Avg8#k}yhZVD@)mJ=- zyI{qGebcYw=8gMnSFC`q(l6`q(-E`q)AM`q)YU`q)wc`q)|k`q*Ls z`q*l~>9YYzwKKAi?^T8HLeA(LzM~s`V+fP3^zrv0MjB9ox4pf17vdGbjQHEUzE4#B zQSdZUFV)ao&42dIruubBM4t}0?TdH|p7j*XqfbmV}~>6?e#NvuZ>_%uIu z;x9A-$N`^W%YKwi(|{cCx&Lk9GED|@z~_;SHP_ITAlEBC*u%%sB5kGDYtyusbhdQ% zCw?oh5awJtc8a5>VoM2A`&}7(rDW7pp{5emv{&4rz8dOpz@p=yJ(Vpd_=xuK&9sit zR71GNz{{X!)o6y5z)1~#>*bvaJ>g86Z#{j{6`yo> zqRQr5-xSGZ`PS3R+kjl;TTh>fMQWmNeFINPzV-D;DOg{~*siBPbigwhU`IHE0k$K9 z0jM1YsEgzjOxs<6cB3d;x&gCi*0}vYrIZ+mUOjD#KERQ;Leu zB*h|OfeNbmJ`+#m`smFYD$4Q|#_*KQSE$v};={{e%FR55Wr7wU_Sb4PSoqErM+6!$Ed^kCybQo@>8yz;5Cx0K3^&{6hf4 z(xm~@QUErNmjT!Nt~}3qK4);WGaTJQ7X}SEYTw*3_q-c+X{+e`@OCs9mkWV7gXQ%K@VY$kF3cb`;c6_0o zwR}ylu+lKwTBvR(=ES*_g-I@DiM2gJ@BQSHg3{lDYt*H9iToJC zJ>}DuJz`!9ZlW?eiu|vRVi9mg6dl9$mtfrCQXa&&QCeV7(4kGR?9J<-wx^2xn@8}r zyQ%w5wB0V?t1of~-LRv}am%i}Q)nt?s1yC0hVr&ec^!0PCm3<-xzsA3!ktx;C?6pd z=#o{;IOc!r7HVqTmv@Tp4vqCd0GIYEIlS^kj8B+R%NGCZH?fu|QR)86h-=|#_)}!Z z2!RyPwM(aKqW{&=eEbMq7(bop!bfO8mt{|ctl_+Age+iSlRJO_IvghsXk_7=3qyF@ zXtJi+ zW%jWki=hynuL6c`6j{?IfGk2FA9R5O8eM|_^_yAK2w@Z{3A$$3C&;HMz=BU0QnrXN z(k*P>F~PW}c?ZOiMVHdNQO`EYB{2diWsgWD^fVgd?TK7vdNpGu^1B4SD+ns>^$uX%?N_tO-^#UwRJzDT(= zjdmn+BLd4pDDqU}Uf^cjN%z7WH7j^912V?=h16IQTZ+?UlgyJRG4KGNQPOLQ=nT{&1S+1^2;;{eUBiU#W|K@ zCqd>|sm6U=MHy0<57H)^e37w;$vslB{?~8h&5wa%rluUHET&ShKZH?kgi~>_LO1Xp zm_UteunIWjaLt0&v=M(a!eK&4xEU2ugcGA6*Q8%igyYENGqRDudkLEcv-VL`bF3iV zq-W@Ogz%ccbpojr|62tdt1#IdseDb_#)9w^yCx*CDkSc_Lxga`X#&%@d?xU*+GNAD zknQEoBUBSgV_{B!5LAjuyQU(98@_z9c?6>(LN!MTLJs{y{1TIOt{`BTo$N5{5KT7W z1Q91KL_d;rO*vp~V2n9VVVXIYV6$mOh~r|eX$Ikx1Eb7)go)-TS-FfSF&WqN0x0G7 zD&r|k#-UFn<4_8+cu0-yRmLIQB;(KuCgZlSj6*GYlX1v4lX3JV8Mo_JVM1?04y7O= zPiI1&rA>B@y*C-h43IRT*C&iSFaliO@rj^UZ=eV*F|QSb!LWf%8JBf={{YB9%3H{Y z0!AxwDx-soeH;lpbs5z| z%xDkmd@G@s%OovFK0}#&7)DJAtPp*UYdiWH>w&76@rkDV9|1Qg4cd|x%k9WcfPDmm zVAx0pc+XF$=g#I@F{4#810Mptd@gtB{|PMx#2u8TkuLCV8grU=MDd2OgF27^qCdkt zmNADaphufWFgi8v5MQI%1BVBE1OTuHivnj4tQM&T>!z~@m`1S&SjB=n=zRvsB+eV8 z?9dR7DQ69FHOv{p2bx7v3C(J!td+5bQd!Ux-jlP2F*U*)<`*&91cXnBmz+B=W~4H_ zr_P<)DDD6$C=CfIl(ZGOG%h%>X{0)gMqO}rL~(|2!a@XGt@35cq%+=73OcuG2Z7qx= zREXnr#UcZpAvce&F-e*u4U}MQZ{i)USYvb-kF7D*upgC03d1`@Ev>Zdh5b8PW3Y;8 zYfKI)3Zo#hu<~^ennl_S&0=dzT6m3tZfzRExy6rO+HkP?n7Y(+ccQ9jiQ(%l*K4!{!?z)e~N>wb7aEQ za$F$WEo`-bKgURgg?6bUB0FN=M;3Hx*t_UWc2_?AMh zAfre|k&GhzjWDd%Of047)(z#p0l`S<2Sn?Y` z!wCB=x9koYEcp%Z;)Av)Q24baf7j=zXh20RRqRE@NfdsG$_vpw4x{2M3cp3=x#%9d zQSluLJO86GjJ=IP6+MnY6+MnY6+P0?>liV;jX@PXjzJYYjzJYY@~YP{OwnWTS?2RW z74K@ZjXBnNOT~M`Q;!Lcv_2e`gEQgQ0-AGKC>1Q70VW!j>Qgw%WYVMw(pm`HnkiOG z7UVFCimFiTP;86h!vWrhxmtx+E6hC|zo*&g_w7t4c9JGwPVx=!xxGOru^~vg4=L41 zznV)eYh&$5T|&iLkKIa1Fl{Y7DoQrDn?P@{DF)m+_I2KS#Kb!M>THthO*!^b%d+En z^jfa*99pkxiOu*ZuL;tB%(x@i&=>7a*5>V#zcyj5M*YcSu!%d&D8@*+#!DGH3EZK) z7ULJeJ=A)|_B=vu)ukk;>ZkHyye|=l{L1~q@^&Bs-gufQ-j#7OZwHkg7;0<|?&^zV z`?0)wc`t&{lc@Z341S;dIPVK;Jv~6XfXf;0QQ7glFN{sWM$C9w+t+zt(}=tAtMicj z5#Hi}X<7C~UURU{Y&?b5tB%BG?8^g#PPXB5HBF3~ro6-QP7@Yxg4V_;NB^}ccH?&$ zAO1hwy$g6$*L5$hK>}n09#NA7YHW{)oQMRsn#4)v*r{hQ6OUpI$Z?2q9pW(x1UGE~cBgrX3_Oq{Q6 zy;G#%=p%bAg*)7bd9~#ZB?JuSth+1JfuYal^*$L)H%5%s4~8j)fx?Tp6FukF)%cy& zeHYy#%61M$5ABB}U>#Roa-ZYiFQN6i_wou4K_bp*pOOGn)8>wbj$_Z5U!$m>W4uF20i)?N05FfOdt@}d z7&2Nv90nK!1)$$!qQF@_bP*^3bq*=EPf!3fuexSp09*iQ1c5U;q(p$x=mrGt;b{70 z{UCUee@$h`$)83O8x*eL;v7!x2T_EyhBL=qvC{%GqhL$l!B?25clT5wcU;@?)_wHr^0-!!NJ)U-3|QC09zN;46bT*42qgyJ}}iC z=K$E5V5@fmcsYazAT^n??j4-l;A^*|6}X%YV$}^7!OT9HnC^?1!VcPu4lwBw3$v;* z)CEp)?VzK_eTdB5%2^8$?E>FmrUi@_0a)Di0hgjP z8qDT{nadO09ic8V14Yr~xermsVCJObFc_XnX0}~4giQI0U_tpTgj*oGU!{ejgo87B zk)ow&T9w_8?NwOr1}tV6;w3k_V?f5Sd1{eJ8q5+kS0=bGhW3*g=!quF9W^X_w}4kr zv-ctx3>^obf?_dFAl(OMU4=MPcwN;T+5s#$qgO@5qAsuoZM9>fLO{JD>mr&e#cS2R z5M+)P&{u(&B(UgQ`{4wdB=XdH2S!m`xLquDq!)~b4go1p14Pt*5sH8@5_Hd_Spw&w zeHZ}!j=O`?58Mnv>?MUbQ$St?*#jf6R3dwF`LGM~4s33R&jFi*qJ?{CgVeyP;CiG5 zH0k2lu0sdTwO1$5%8<kwFYD6a|FD;Z|>_hTv-i_V?54a2Oq!o%ASf z*c5@imOHzM21WsV)eeLk7r|wtC`I&(`3NTW!Kn>Qd9VdjCZjALvCiG}X`$m1Af{6hgCwX-;)0SD+Qq&ul|KRE?n%Q3uT#WnZv;;0;(x@t>Z|rm+?f_gKAnc$mjE7t{!uGpO+dq$9AYt-!i2d(^E=rXB zZ!+!wQPch#u#4?h_Wv-(bC1pbZ!_&bJS>JN+#5#DZ~&Of)Q9B&4vQM@Pd5G7o}89Q zNjIh}zRblEa4bU3OEyAaC7*^}L@6d+$WKkSh3*mVwq*NmAj}d=dROltvD)PFA@=~$B!WX?CiL?q2rIbQk z07CeF!_7JRMLFJF>;hDcuka#8$*sWVusCH&p*k;g$;-{+_j^MXQ{9KWs45i3&i?Gu zM<1~uV2U`Ya}jJ@rZ+CmxFq93jEnEaB^MW3TwZZWjYUWl5amRfQBaT@1Vr(8oyGsg zToHetf7RzK{@UyKSokJBzV!}1zO%Ee?#t!1qpQMf2jAX92I{zysB?Nl8O)i zoA{`B2OlFPsekj?5tCG{aU&+3=G|EJM1$7&dsPm8lojyv5f?unFVRkJ%-POKr=5Hz zXP6{Mj=!VP1-s^64zR^jRkLEdg z3is=+$T8t(!16W>ak7zn%+MMiiFO;q+lWYtSqC_7M=IvfWo-Mv@%5>CtC@GI@tGVy z66t2buMoQ;pJOye!f~RdSdn z<7Lran>Oc>M4uWhGt0ONwNsBfhw@c236}S%!GY!DdDNcX7#*Sp!7?OhsqP-F(aU6# zsuOfbG6|Ls-5J*+SpI0L-WW6TNHsu{WpAXPs^kDomc7vdn>Oz!3FMFjD-|h&tModz z=j#I$ACRh2N1P&55S$jq_EUkFCD8_Jh+SZ-Q%WSq`8yhp-!HO?u2iaG*KA+IbvsU1c)M; z;aD8!^j-v7@P9Mu{|GQf2*e(z&ohyoz|?FyKQ&w27pV=$93D{yi~we;NTz^^jN(>5i@6GJi|HfDEmIi9BaBX@1w789gA^W- zwHQ2BKJ9GG*H4%UVrai$`I3*htE@9OSfG{ak zjOs^_3Nj~TNFjPhCTPkLwhi1(Wn`i7X$nuPeB8M$p9TsnA{kT?#JMDb;9;*RNth}~ zQgT2_l6J~~ge6nG6$v01oymYh^p5<`6eElkxSLImm|7UfME*crKH}8!X>Guyq<|D1 z&aX13029qhq{{A?c|{Q|j)4Z+5;7XPsPAIJ2LS*FgKjY#U>ivv9*&?mMUgViFc6!N z@R3y}6b57^<CKdP4z!+Ge>ENhB+x14~ zdXSGw{b(m3d*pj~7unHM#jt} z@@z(iNrh62P7{-;8)yVso-#3N08oj6a8nbK;VJPaO5SF0j7*OMfC1V~6@a&$N)2Lg ztmJzJcr(lm-LcY&n43h^Kq1KO#Ml@EfJO}Dn<|jJPRTt{USSDqqX_<^qESf&(anwII?uuQ|uG;%o*+7mY=${m>o1)z{z zF42~N7s=)f;2Jg6C>F_nG6!?9B=GASb?;U!QZ z`G;X(4A%#aC80BrYuILREGeCEY>5mUBdL=hR+(f#EEb8oHxiDC>nB67>+u^}8{-2y&;zbL4kT93?7|0PmE{a7@te>K{qH7>=$FOlZy|H$O- zSnRac_$5i`mPW!_5=F{ATrYTiU7BNZZie(LB99dKTSn(;62? zyU|_yox))log)8gk6kc3T^#8)J6#+-%jV}a?_#6VdVKFfJGC4+6*@hZr#DCY(5a?1 z2BJOaw1Ye%D{78?Xm%Hf^qAcRqP=X`r+EWLcMa0rQsg`6?s%TAM~BcI!gF7=AKe{d zcgR@u*hgk}zDU2>oi94ThJ%{dXLJ`vcja|&71iKxWQH}#Z3o(^=X#D!&`wtL4Hh=L zuScA=dpy)CeavUBN3lWM`Wo%zhQ0xuG&(M7mCyBrZ{y?LNSilB8ww9EaJ=s(mq=x< zBdYM`E`C`%>F*nIG_mpf(s=s>`p8WY{G7l^H#T$*ysDjC*>_#@Zi?-3^s?PaY1cQQ zut~JWFD5N;oNy0%bCOvGh z?YerWj20&c3ESHehm9E(Z864-s-P&WpeCj-^I%Q1=sEf+S+D1tHyXc{BVPpMy1wNvY6Odw25{JJl4e8;uQ z<;>(@lK^5@-BdRY&#;||U$-(;)ayA6vIrwU3U>@CTixti+0aC=TM*m`YZXCXtBdRA z&E;(q!eYSq%PD8vmoTt-!hQ|dugjasb|!q?g4}kD$5VIDZ}5&eJ>4=hcWRYOnfSr% zL30Z*DjbS}<0BJWD8s{`{NNY~Upq29438bghbE&!>qs|-R-QBJ2J;D|FSpBh{!12O?ALF2HX8S2wtO zY5bANUFEoG^*J09sqTXqfMNUrS1dEn^=a;dT=ygSOeUoP|5xYG(2~kVv%m zrxHOSN59v77ztZfk_=?{h4d(4)FO7cqp8MTIB53-OHaF-=mtz#(Ef8g@rjA?7;XSg zrjSmi+uh6Ii}4?(d$IrK$j?I@3_DyL4@59*^ya{G+|477H*ciz+I>PGAK5<~f;oCR z0gfj=Z809h7Xaghbg5I_O&q>>fMIwLCt!};1?6)*9*)OAK!Wnkffp&2ryXzcNaM9T zhQ;&Thv^keZPOiaJaK!4@fcnKMoX0MQOXxzFbo0W4$P4+fbuz>Ajgw-HbCWmrSf6g zHpg4;KA38(GNps5P%O6UyQ%Q&J`Vh@9LBe4kWBkFOi>Jh8o_E!DkjBkyquQBSJSfi zT3QzC)3W$RTHfAF%iCLNd22|^o0gWhooRX7o0hk5THa2l<*hp{Z|5!EfXYDK-!u9y ztNS_sn0Z!ifqMD65-$;PxJ2G7hFb787H<~M82!DPKKg^*8FMHPpYle^Al8gu-yD%=6{si2=nQ%2I>sEDWA5!t8I;0E zNIaT4@HTl?F?VvfZAPGDjtYYZo@Y&>fOi?pr%vd?mE1Bl4 zDDC`Aj)~)u5Fv8$OmtsY~Y1vE;cWsewS~HR^z?C8ia$oG1F99xj zNebI-ajj)nI9s=4;ho8Bav*DqVbjVqP3Q`rm{(*JY>>?w@hkZno@mskHG#*(m=sK*LTl8HP%Of9Lo7OC6k-IPso-ITnhf z(Pb(aNi>a^a{NL`RdB-$MHp#@kWhO(dNd;^BW6s6EQyg3DUPU`%mPFy2x3woIAmZb zrNN|$!K|E>LP4FB3*)gNLPo3)iDw7#8Y1QtR_GyXw`z$pV6(c0f+94Cs8Py_rW#pY zDfLSut7ksXGA1Mx= z96Sw3f$>4Q>LHHCdi4o#(yYE(0r`?H=3AxNBx zYH80f8;Q|j9SREoj9B9ZSB%R{70huV?>9i9s>GU zJH@&!2Amw}N-5WHS*!`LqKk1$*o%5?|1jf<0b!L2O9Bjl<0W4V$aD_ofKU(+Aef3m z4Ok?B3N$LgN%O*9Cy)V!Wk7-dVj;6xvG$HJO8$e-p8e<}zQW1kx;)dK-{@a%VKdTy zZhtY-e}1ifr2qWh>q!4|CpdB@PnwuF<>s66owrPzntaY{yvH`Y_o(0Nb}d^~Rr!6_ zvumGPvu;Jz+SM+6xHgo2`N=QeGtc$lHy*F}=AwtZfk$1-HoESAs=9h@m8YtD`I>d> zR{ciR+VB0gwe^&U>SKQ2_xZQw$9$bHE=9E}{u{qfV((b|#;^0Gui>)4*5ko%{PyFw zevRMxU5PKVR;T-&-!}>BKuCV>_v|D*pP;gj;pZy`;TO3tDSmAD?HvXqzr?w}uKJy_ zx_4Nh`guOi`QyN6u?wo5!bts>VRNiN?c=4s+FKXa&G;mL*Z65;%)Z)3^Nefj7UNpC zkdtp9niQuR6vrrv@&3udfJ``WGeDKBFb9}W^C^%p36Zzh& z+|3nxrk%h~Gk9M(rS?o4QhTNaev8*mpn(V5sX>1QzMFPqM>QN_&$NH$T3Bqk2DLh0 zSvE5#$J{W@`&e1%l)v$09=1&j`s-%=H@r5*4tu|k4f?Pl1U57OW>E!y`guw1hjm!{k`cqIc{vm{uy6L_lCB6oqN5F z&A0eM`+aWwPSn1eeC|W?Gg|KLzQP^2HPPodifgzv1ucAzYu?a~1-Z*}yzcE@cNZE= z@?vL`!jI5kg3oc@>mEX4;B%bv*R9U;IW8@zU6JPvwfpcjR7Gh)XonZ>1(X(m4gB0% zp3i-}5dD)<8?KQOTR5&Q2z8MX?z_ne2sL>vLO%B(LL{H#q$1P@La1jn`$8QCA#doA z*Nva5uAG8H6mR`Bw9iPA1^mgS`gYDACY?y z8iJlUpal-fZiX*(%xlRmw8Li%sEY%d;dOT`P$R2|8KnvUh z&=0hv$WU%GeW7-*B{yHF%crp5RVte4b?@^jFnAqDaZyof7ubpH(7>x?7dmJg&k(c& z9VtQt-E3c|*=qycA)ms+0=JB4w%2`pfx-edUBg91sF_0&(BZz4TWF_!K>bh;ltc|J z5DmFTnnvF(a$%ZeYaSJiJdcX9Hjj!&o=3%5oJaFUnn&}pHjhe1o<}9wn@9JIG>`7d z+B_;9c^;K!Z64h}@;tgf^LZ4nSMUce@hh^wUxd+}hs~OTDdr2syp8)O_}pi_jpuW5 zak9^S)!TUSW?Y@_bDziAg52+7+n3y;B1}aw6x-2koIDy?%m;@Mi*N`J=MBXY8C;+k zRQ%zD{1x+qjt~Zhz7PzKiz6g|hy(72EDZkoMk&F0ZB3mjm@`=gX1N4h@h~8hsEA#L3j@t6qijA3JS-`WrN3=U=iEy81tlW zR1z#DgW~BK#)*!{!_$Mi*_2>`#a{0yL3lqIWQ-v5SX4YdF#=e0fkVi`5a4L0F|EvZ z@q5&WEGR!?7LP+@0q*dFnfMiBi@ni8FpnHECP`}uvlWwYo)m*eh{Kr0qY)uY3^`;d zGlC_|Mkqu6=23`{hQZ)yO(A}m6c(F7PU2w*S6oiz-5sLr>;~7UhR(|4_r*f7AK)+2r#ln!a^!@ATfs-+1wXKWYEY?4Kr|zy1%C4?CWC>DS(U#a*;* z)6~Vu=g%&EcWvxnj@SI%q@#cNZ0}z-CZ9Jx{gn0J0to0m7D+fXG;rj`;BX>=LK$^R{Ci2`8U_yy!=0I{@ow^#;&FpUYWP{Pm<4n z(*2+R^Whc0{$_RU!%ctv$f_O5=d-&1q_t?$Uv#|krCTmn*Z*!o^7$tl-bLGF z|Dpf0Z~tQJJ;~?)YwGNKzy1%07cScU<0mdv{l?1V^NTP3=-H~uzu7Qj!_JrUC+v7F z`F!xBceg}VRlITauLs`k+wjcx+?@_Z!1Dfb;a@A^r zCu8L1dfpb?>_Y1^X6rC6YIzu;2s)A6sg6XSlJFL+c_ux==b3cxleRsE_})eAw@V*3`W z33d$S$!;`@9pJ|<=PRF4J4YTM^aspIuo`gvit|wZCFf?$l+BNEBgr?hkt8NmF(*_p zCsZ*eRQlZ{6X$BGv()o<_#1{7&Qq-;y<~9CeYPm*ocsGl)tKfl7uBFS4%ClFj`RW| zalZ{n^{d_Z1u0DGN%+5z^ZZ+w2&FkYaP*xLyq(z9&uunKbM~X{av-w`F930h{Y+zF zoUQlptP4k*g1B@R|NHPC6B1wL!rKh|MQs85lR3HF2e!R(;(J_(y>!`+(*M$h8deSP z_=yD}gtB{aG=$18-Vo?McN^|aM7@@p3Fr9=HC*NKAd;%t=p8k2G}$)=58*XO7b@sD zx{QY=p%9HNmfCVz>~%!2DVQ_H%JqZ=j`wiAW3tyVgoFqBA41(-(negqf)dpwUkK(Z z`aXHUI}e|GFL~fIsIPO|r!(F{)b;V`+AC8Q;QOQ4X&Svp-HCO|b%dxvpcn&oL;84L1=(WsP+*1k4=QO}sw=uS|Sy^2D1HrP2#2 zRew~28w>E&MpQ+hjCEc4XoZKsCIoSULg1hw2t49*Krz+*6{@TbDPSkFs;ged01_6A zgse$wuNcDb#843=NFf~aDn+37s~9T8dw^pL@Ga1(Y=l=R(tu;H{s_M@aR?Q8biY1_ zJYe{E=p!(<&*$jIYpb{>8hnm^ob|90>>yC?DdO<)=t*A)SC8TdzxYEIbg$9_s>0O& zi9BzihO0at%7YRLe0+xmRVggs1q)uK;PC`3;Nb<1b9kQxqI@qi!Rt6k#ZGn%qC`yj z40;_>f}wIz4TKsjEb!%u`zSTQNANm~>N?{q#G5!u@X8cuVg?lf=&+qa0^Y&kWeZyx zvXJK>?*)#tc-;j?$TJv$@c|STI0jfnc0kSw3JXF=PS~4*0$qRW%y%>HeG42BJTXuqFTp_g2&8n?F@&@Mqd0W4*PIOGhLZvP zD;(f$jZX;x1!lp4uW&Ce0tU0$hA)ncaRUWZfPlbd3|v6K(zK%+Z^hyoz&HO00t^$s z&_fVBi+Y_x!70lk3{V2YEW$~fMd*h`z#cX?XcG7ib+}0w$kZfY$MYLD37qd>B|9bo z)q(UT;gH=V3})LT%p(@kngov>4R(`YXu>cFn0SUsfX^_{5VmZ>Aki?)CY-X_gaO(F zIGG!>34G%?%q9$GXcO)kgH7Nx%9c$i9myti*=@p5R&B!lBiMwX9R+rqU}(Uw39vqv zO(?1P0P&fZflapUAA)9hNt$4lUA(S z9JDv?o8yyExnzr1!x1Z9Ipfr9Q@qmes$OkAS9#k+KdXE!I~7(9*UC=eR>h+l&Q$qP z_8Iq~aD&QqDz9mHOyw;NKKWu+oTTb_4VF5nA z<-*5zWQWWh$fq}AH8OWF+Ry!k4(S82<@nmwQ#oCFZ)~+oKO0-`(NDxS1!XHEhHJ!@Xl;|(fVniR4~Qaj)(t0#?a114 zkx26aqzqly#O?AeNTvAzZM)vcltwvCeSirw8XB$>JtG(583PIt?j$e`H}j=WiGD$D7C@#1ZIUUY>udV5Xpi!t?ADD%cArU+juiRKfNgcHjh z3t?o~WCCflkhUB%Z}J&1!4#T=d)X3P&_|OnZ-a?_aMUtR2 z*SrUkafb~k+*8DzM^7m2s{mO$wGlZn8yhilT>G-7N(0bfcev$T0U~74K2m3)40|cs z=Xz0+H?(gh&J>kWzxa63K37*6qNfIxw-@rFedY7nn`qy1{32z``&+tKAwYui@d#Mn ztAYV`EXqg9tRezK1N%sVae?R{bW}J%Fd)i@nH3HYBA_c^#+ zv~xh|U**Pe{TuWCM2w4-jm-E)=lx)o=e>%kEaj(}_a|aUvo-He#4z)W^q>^VANrNd zds4N{`xCMCK{fAHs3wZPk$E4_gB_^LvunfYvnRvd8wBa;<6hq8;BCI$^y_@unA^5# zZS&+dCvG`#oA2iH%5Rgn;j(S>)^gQ0FKzSCHs>6lp{#4G8y^}qZRy+c#7K+{w)a>L zm@N$F%X^03@TVRrGB0gEkjv^L`Mu za(r>8XZky%V-|>wj+rwX9n-~))w>xT)1w(3>k7JN@M?2mF>R#L(zPwb z%nGK*;!8x@%72KomFM79%$GQ(OH?VISbQxc&^WWQn@70w%7o1M<-8y|!)x`UcBKO`@HSL@D8=0_Wi+;W8tNFY(SoJmT zjI)qC<9v%d<9tVU#>p#^%}V(T2HdT5hlc%eup6{&SGu3umEyO<97x)=BTU*?BVWHR z`TBC?>sOesUtqp|hWYw+yzln8Kg3@wWaf&T1|;p*k)a`{x{jP3i(dEgb$4WnO|sHX zHZ{fjs~;EDpu!EWtv!fsG-vS}@q>9h?w>NhE)TzUKl{_z#jb6#Hovs*q|beww|XXl zqaD2Eb7OO$9oR0eEmyu0|4Cf@Jk$Ahr1QMeGmW3!6Xw^=_;q~m{CzPx@1wzW=Jf81 zzPj1>;pI0-bl}DIpB23fW>ER&L+576c7~^(>lvJaZol|Y-HbWh32=%we`VhZFIYjN zzDa2GK5u~))F9E(p_|F$DX=o*bM76|2hJ}|<-Qa?}`hU@Qn(E~5EY z5FK!PzXiFk6}>8q>?Mt}v-p5)z&HR-W_;nHx~YY-4dDFhzA$BiM!l1?ra(>)Z-Em; z5$JY1NuC5FQ|H3&V#xg!ywWGEoC7PfrwG4FCro^iV*>!2L%Hf8YtmQ68uiQ5#qC2}`9 zo3aU&gyA-2HOdKu+sHQMOsp$on}XWHe+8RzCWgg4S+^-?V%Quw(WVUj->@kLAC^ry zgHpr|*pz>)fl*Uy{~y8|cvcZT@lXX&iyM^0_#|#eNG)uJB|Nc5BxW=cHySK2EU*F) z?r|0mJ`&@Oc+5e}o8bnJ?V*MhWyGxkm(Tf8aUe5iXYn&0RcHwjMLd{DnDjic#}HQd zAj6Qzf$QYTQSE2%5x8o5w4fzK3h^L;-CC2GCm%D9A*mn=5F~+U0H5(Wt0ja0@u|vQ zEzi#ryVEy^LEoZ$Jp}b#%f~1BcP+uSTW+0fSRS1xc5iORH+T(YPB;K+B?@$8<=iZO z#vON}(~kRV_GA0VqaL$~i+1t5BF=*UFQ$m+#ZY ze@bAPlM$1T+my)v6-3&wlOEuJynGcGW5+$WrG_IS^? z#U}{(H|jU;2PGH~YkUBi+RF*ZmvAI(}0V1vcB4 zHCbXy|Aoyz_?z>r>dhZ2014w(5~LwqKg_#lHgg!}m;czVr&NW52daEXCoz zYE%7pNg;BgszGkY9&$_kbsl`Fbof4U<+U4H%0jPm7wodooAvk;2-P2!KlZ)k0-<+$ za1lh7sZHY6&cGt7pt(Jpxgp$m@3Z##s`UG;q0TsxJi&UGv7g-U z=h)xwO>;OmW2myf-8|g5kqz6D+NNH=h5g%Jx+iJ>wx%425c{`%YWV(b)4uX?`?n<) zq`76A^@XYqwQJiiifS+l5V%4;8T zmDesRF0Xy8q`daY()j*3e%Zk7Z?S=!-@U)Q_A`NyUKZM3=G*!-zLXn(-1mo@I2 z7;qmd4;2-axwi)jci>iDz;P7UaBC7;1RU4OLOaT_uNoSZxx3KdmaOHz<{dc9gl>NvRxcV0*Cqfcv<=5Cll74Hrp@ zO&r(CLtP}r25#~KQcYzRsepU1+;Jix`;g5HIQl@Upe)oJ2z3~w%0h?A+|48vaPJ_g zf`GfDtPli9YA-G-Qq34uAaqEP>IkS&1wu#cqZ%l8oC?TZWEfR1NWlsn3xxI=r2L`% zW$t4n<){3x4N1Vg&tFLSfRu)diqtU~)qX{4UpX%~-x3J5*hkf0?g$5DmoSV9`$n#C zm4)Gs2cama3mcN< zmx}<41EFJOmH_>s9RYJxT^v<$nY*K0jjGJC*H1|i795pd36KqxuF6A=@lln#2cRgZ z3#4Y2ivUXkq4qLMfPqj~K*6F+>8hm6y)U3(QRX;`i;7gcAW#H|24zZs{?I}DsD_{@ zs7sBC2rLbRn#*hmJQPr{D0j=KO3U2G%M~oj92zbvQq3|dK_D7n(olf@&`$fP`k^SO zOO1-U@{BaCzFXwU;=J;YJg@v&oL3bi&#Q_o&Z{LO&#NU_oL9k-=T$I^^J?YD^J--l z=T-H{^QtG$^J+s@=9T&V{&MVwg6%f2UONyvkEuAh+|d&V#mXA@e=guYQ`UHX za#?G0z@!}+0yfxrHkF#=YG~zGE_HLM$Vmh|t(Q$HjEEMx6 za9FN5#6@z5GjdqL5Bf=%9J)%dI8J_&JR(TAAM!9*>>HgBmykvAuVk@tt4ouE#5e0FNHx5fU*B�z# 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

=kz8m#yy@7vV>Ms@P{$ZFdbPj;hR#_OaguTz_O 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�RGCCX2#{??<+pzO0d(sjy?94I5H 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 ?U=u%l z&;;I-<3B^=8Eyjq*S69>K_ng~R-_T}_xPXdeJmr%s zkp;aZ!0Sg!pkrWUuSh!NEy?@(E%3Li z)KwIuIGz*%^VRs6ZzX|8=DBA{;1urGg_ouZU&;YhRk)gxl%G`G6`GUpYmX%7+FIX*H zF6G}sQ<+Wg_@^l9iCm5UDqfTAi30_VaggPe_WbSURD13w7GyQ@(8&4_M+@ZE0Sw}CwAV1I7&;H1fNhj> z>~IhebL^>>*tIS+tflx@AHzhK((b@KyK@g{32p)xRj=u~4jMAF`*eq#4|PJ7>y z=86_!@?t*=3cKCYIGJALC0xp%$g%oZK+}E#+hoP&N^Dm_;iK9z!M-cePVJ&QNYepm zV^!HHvmOS_w$WuIbcxAx95dH9xHJK-(e-`gr1*GF5pA;W*NLP!S;6UrZ_gr|T4rd* zhP7J5i_&y$$ozZqND;T}%H_F{S(|m{En&>%xMxUg zl&m%#6e$rN$4=fx>(yV%1k!PW(2HA|s6>a3!xiC-$)h(Tr^U~|2KpTZAX5ES62-^7 z#3(JWwoi3%(i0u#&&sUdvH=im*c1KU4!;wfRpJVVbmKN!&$97|WIS9=M>nBRS10kP zVSlNNH7PkqDtd>CtjM8jz)(7NdwH8%y1cu873?BVqI2sdPYNw_zl1Wvt(1aihZK!* zG$KA86BP?evlfC3TrF^KjCmF6-fKa0%0ARAu(6!ZAjn=DK8p9Iqo_PI?7C`C({Ld_ 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%0DY9)ZZI&Jjv|;+R36C1)4&RHF%A^0LT=s{2)a79 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�q)ohxmD7DF<`JqfMC@_A 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 diff --git a/ext/openssl-win64/out32dll/libeay32.lib b/ext/openssl-win64/out32dll/libeay32.lib deleted file mode 100644 index 1ac1f9e3a7a76a2095b61b205558e1ff754decb0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 801728 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

S`rUaFJG6rK~g+Q#r&e3eA-V`Iapz%{LG6 zt&LGDyZmHpE0EGu6fHNb&GLkdnvN`@QWO(gF9nWk+h~KBdTL*p#j(Y$p_utrA^5O- zxmHqaN@X{7SxjsExH*I-8Rap;%tv@H?g?N>b+fx(y7Jr3U{I#?3)IW}E#@8ISmzsZ|Ah-$`kM+8Zjg?RvekjV0)Ktx*_L+wCeN z-Ro+2NPbkGt1N;Wbfax^6n50guIO9K(hHl4RhC8HTKYED=fU%OJOxcsC8KSbc129; zfigBVKhK*7uI=n>nZs@Zg@vy2DVI4X#!J!=J1u2l-(@J`P-3OH?XAPZo;Q$1!Hx+9 zap{Fues3ms2M;q3AE)*ufNn`vM;0_~j1;GtEu1Q#UKsXhl~r9BTDiasW3Zv#F=<*- zv|O{8uQ5p4V&yhLuGPo0;dY1QVzY@!;9L$k+-hfOM;4{z$O1yKHS>R&p0LVD`|AV+ znVLi{W8%}4?=wax7AL0hIcjX6Rh2)}ORt*BK6kR0 zu2jOOBiMRUqg9np$B^|IXq~da*-O0^N>?q?maly_Rx4JtbxT~VN>kbNC0Gw#sT9Ar z*7y_N>`M4_JM4?V=(L53xL!Nll=x05{*;Yije%$?I}Z=zZ0FlSDU@o3OQV235~ZsA z^SupZN~wg8lLq_zYgOe>Ec8Y&t94>AH+8lz2Cb_6(-RAa$9hey)>s`IW>l48L!*^G z6QipZ{cQx}81W_i#oo(XX@q@lT0FR_RvKYnxbM)b&fnW-;k3qTn2qSfBE1R`+@;KE z#j2;x7MOV3Yim!WE?*5G6lgjA)>(=5-sv!Z^90X-7VXq;ga!vvAYRIng&oyh5t5=hYq7BTa+hyVBYYv}0aLPifi@%2F`$ zhaClXv2?ZPmLF-86~0{A#mO+eqqKZhNW)0hyal%(xa7^Z>)0g&dAr^oy3vw%dL&KR zal>b)DBRxh8u6X7*tn`ECPSo82L}chs#8oYEDR>5<`)Mz`%Znn<511g3&a&ItvpkJ zdg2i*yeBuLalVJ7D9`9w@4Bu7 zjq^@VU4B0hYh@VDTCaYvR;=;ttMo1HrMf`JnTXoi(Y)R;L#20?sukO~Na4A4I@ED# zjh2OIX@dR$uSe^ws2?0&)`k&S4`~Zz8ny>gs1mA|s=A6CCy1H$Tvh9XZHCFb5S%T# zh?1@_W~En_yp#)L2;ShVy;Q7P+3}$uJ$;PQDGO|bf_K(!6d7-rgWav2y}C0&Er(=K z)XJ`>&YHU7>x{lgmZK(>6RlM6x?D0%;Z~L64{HZXr!3Us|C(0<6^CnyhI~{nZBbga zvZH3hRT<@2E0vAjv7si2QD&`gUtZfeiO=^;ohsC^)W$93t`d3o7J;U*@>1uFc??#6 z6pY*zyfV*iW9%g_w@jk(fG-B^fch6s_@%Oj-oGUVO_)$Wz}+t z!Vv2*8GU?g4x2-0MgS0hoG#mjfXRy4p^+eqjiINZR$-d}{Md~-~6ECqV-Y{u$ z$R$JAtTPsBE+i*}$-H-f2HbP8q#@0JXeI{R*nMSfZ3jc*C>=&`(vmbo%}D8OqNhSh z9}oS@o}i88%5qN%X|A+k>nT5%f}dLR#>j@YpFA1uIh0$6m@69xBXdy)yLB&@wTU8 zE_FCz$*{tvn>(lILKaWyGH9@Vv6$j@6TFqBf~!klPW)B5k=?wZyY#jsd-E@S(k{&t+`i= zBJA~@*2GpmG)T)(v8!@(xsi3i5-+Vqo@wS%OanJxwiy*4GQ4ZM2dxr5tz`{I7*%1p z(O7}GcC5fqG*+kz>o>Yw5|;)9mWzTsgsZb1l(RwATC3o$%zSfKW`ug3@{H*kT%)&f zuw^iss%E4NY=SXBwJGmKxg7{x?hSn@Ec!M!Y)Kq+*~&4iTf3glRSb*1wTy08V#dnW zCT{Rz8jqNJW9QUR(tNZM*JZA-8 z2{!jei8$E{t}aTIKmY9Yr=N+8(R06s&2zY8KX( zHcqC^T&!UIb!&@IG%rFk+k!-?wR$SeP}zT*oE1n_a6Y+-8{-IZ*4XD42$J z>S|LU`&ru^93DGP2byb=LLF;xnfkij%S(EIzf}23-)A`{C*2NX7~P5-2tdVAVgqVe z7nhNhC>u%Pxjjtpv&Z9c%QI7Xl0u+5RvbAWL`tY;T?%tcsAl1O@W2R9S(to=0AZssd}pJjWsdRt-` z>!$wMLe)Qqqxx40z~4H{TEdGYU`g^y8bB~ z)W5*mTYI${f6N;s$2%gPTdC zYWcn?Sd*j;tyDG|8*UjM)!jp@YvQnFVGK&C7|@naqq6>SW!u|sLUAaQCPQphK%VCOE}aDtEviOU0jmj8deePn0x-qURgwv*CMaO@SCC@8wz_t&i=QE_53)cUhApqn zOd{$W6{N|QQh2XEgN3ScNeK$FT43YRRwx$<@k;v=z}=uMt~|B{D7Ax>#>MALuenj> z*i?HhNSIA&vxOCA(&Vvas1kUpO?HAf-@Ch})lx9yx-53nczSJRb$3bODNKCKM-J4{ z+yQS zF{HoYpshTC#D}dE)|XnjvZ@C%6e6oDtM{q0rBFhB!D9O?F6yLR88b!*627xCHaK#~ zLj@$5A$u{fTYgbkeA2rDoj2L|2pDkE{ zsvfq0H7aumS2C$_6%os-G4&2)}~d+QY{zUX2u z2~{3!3aB_zWmKTHn6&29+3|^7HvE(ROKWt^aJ_*mP+t*SOhRgk-(nJ??oh8Y4-^dP z>39Y3Pc;!=!}6!Gm)eul3yb;GHg(Qt+XEH>G>1) z4aVo@r(Szvb~2xIneH!<#$l447I#QZN1&*X?i@X;!a=-rRVzjmA79alb8hj} zZrzj=%-$wWO--C$ICr***eWd7MlH;ecL7|+4bC2?W+uWWU~t2~(Q^;`CH*N~%q0 zSo3VunN{M=K^Lh)lc&@16}G5x!*r2mp2V8NK3WBznMEfrUP|cfWEnowFUUaOerlM0 zshf`k>Bl1W7uZ$DmRpQM=H{b-vy?KSZ6MGI4-o~ymVz}4^I6FB}o)7pZ z{pS)O0P9Q=pyDuVTolk{gj@E+?99UA{P^??HmF*;ye1z)_b3}!U5>G?L8YD}O@q}| z6RKvA{*!}mnVz|~6qiQQ@4QSh53($lL;F{@2g~c_yBr6qpzMQWu@urp!O3Ev>hxDA z9!+7I%h}w&vWx>S%5XhURA`ruXWc4~>n*MjJrB^p381a-Od&B)bxjHJUU^h(isMR% zDZmm#RVEh@g=eM~7beE%@PQz0QM54i+H>gn&47FuqeoZUSnM789!r(P*wmzXVeT|W z>$>8Lkc9G(hB_gn5|tIb*sS4<}kagwst*Po=#<9xjaM3 zJ5QI^r3z`9Cr)v44VGZmIzcw4>kYxW({;zZxR|E-?ru%>gJ`6&7(Eo_grz%gui7c< zrze5JLTT+&ST0#5eA?kJY-&|uxotyZrY=7Qg7Oo5W){PPsrjjsCT0s(PK{9*6q^K8 zOa{ZMd7k4@AN?9g0_BBOs*eU1z&5{iSaPu!j+{PRsYS3$Jl(e96&oP?Th| zv8fLARRH~@imqR7XoP>`=-`cV>sCPdiCR@<4L@Uq6z#6J1VB1)T!IQxwDp@&jnMB@ zP^xElAP0SZcN0K5cy@6Yq-brPNXvPmZDdc3FHBF&PvI9@?_taqVN1lZG92NJW_uW| zj*LsuHLh9dZ1SgQy=F@9EOlYos959J=sQx*R>#)k1R6$b-JdhM$5Q%Z8~ef2a8AD# zwb+|#ioAUP)bC+sXB|fc%7#*(1F?sqKd2f?aZ0&CwYWp-ttwD3MB`Pnqozl7*f*4H zTw6&7YyvB&eYvD%5~0FcSR7wGXWp2EDi5}?XGc(YZjg#ht|^&6g92)@UeV-}!!GKA zDTa@bDH7K#-V{x}wzu<$)a<(|{Ke%onyos7JQAUcKN~2ew(-S~*|h~^z;pqvcca$+ zOAip5)V`s{QZCuLaY5j&^c+1Z*Cn*hiO^#kbq1{iVMSh=Zot_my|%Q?EYnNt&Oz7E z6w02^%%*2f&Nl7Z;D%` zLLMXR`L-Hqe|M#EY?ln-N-6~Li7<-nb>_h{81xQ#WM07HiHH)|`+82LH7=x{n1jJX>_f&6v0BCk>Q?X) z%)S&g1Bt+o8cQgxZ^qKfYC9IFX~;&yXaTDHOlPwOjb9KEu(W9Evy%JVn3Hdo54xmf2>I!$C>rXJ}zQN@v!$_A5g zGPPI9j4GCSZP4P3P}Z;(+!u<5D=#HPee@oxDu^x0>wGe$liemXvFKg$peZhX#hhWq z!=k+P)%CryM`WZ)7;SmgI<078?QFC+;uQf42Mvyoq^WykMjFOYjCBF1M#^so$-PUj z^8CYG!MgiY7FpTaG&N<6lGa$Q@6s&vrko1Uqcm_Xjixs%aT$GNNhKWROciq)x5Y5bJ3u%i_KGVd$b3*WLGgIDe(cw##-t}+Crl3cbt~3(31>y zudd)|1b+i@n%TLjnT3TjSfe|SZ=|H5IaIUg6O>Z7ipFr^p^L&BxD9#>w}qDmm#^UC z#I4PX&a96$#LMQ^=jJE##MAD|*#4%xwaLj|%4lKn`_5e%A7oZRg@uf)UvgQYQ~?yu z_CD@8sCqeiDbf_|(v`h+`QprhHi*7oUMuG0C1X}N?&|tQU*eg}n!;XRx_4}4X&Yyd zmz_!?jbQ2pc}@YpGZ+2t?%K}P^*YKbB*8UvZ(qIFR?LJKW?HDUzrL}zzL__1kr7!o z3Ms`NvrFoJoh>q0IGbDCLYs=Mcwz2d-g@%l(q4THmK|1Hn0uHu+i@*rH-VM2gO7#R z+Vo*qQxuB3S+M;4P~zU(5lvyEy^o=VyXXr#i}lv?ye3aYZLrGFPkTa1&v_E8&lDP} zKGZXT5D24<=F$I5uFGXtfvlqe5BDbN`%J0&L~OL)Dt(ICXH~S=D1K~ie16=l%64E4 zN^T8Q12wl6Lnw+wVZzW+Bs~z(nh27bpt%#LCr?KCaIog7h$@TYszDu{Md?gfKDt@m z7A$5$>IU56f;@?PMrjWYw86+78?%DAb;qf6#aOI_)bd*cm4I1<>p%`-78C(D}ayFvAiTJl^Zw#PhgRiZ0czs4r~p~O9_in2m{RleUF*XcB4|uJz<}gaD1MKPbFkn890IN);UXbO^pmH|{(&uCk%jTOv^U^sIeMW-so}xgxfA#X!Y5)9haG2) zX7?m!VLU5@J2f$Pdd_b#*r(NaZx-OO>Xb!EW^Hy{ir7`qr(YIJ(gF%uc3 zq>p3XD1nAkwuNw@4G!=D$a(&V*EKiJ10O2lDAhi!H=k!!X0CvgMtoumMFl$pt28#e z!DP_v$V7D7qSQ?rMbQYGIuT#oj2XsY{M?0z#kgg1?az%*&xib~byo9dVm@%o#A~^b zNw_fUYeNI+K-4$TdqUGc5YX307@hHqtGmCR*~}2UZK)$yd)csPy;a27FBDlYHuGUv1*N#?W6)jOK5DRx9Tw!y|*l_BDO19V-@vmR3f%_D@fGC z8C~N$eP9#ybYd6uc2(E*ct+R87xa8$QF=c=P)}jCjH9^b8IqXa8n?fiUc zs}ibw+vj-`tF>0r-9<*CG&ZH71QtbA`K}90`IY{!23_ap6xLtZ?I{b}=V^uM@SMWM zVY@oTHT_(A{suIdnfjKd0Z~2&MOpo$%WSBG8Ah5x!HnP9QrVBWUvD*04@=#28CRyv zWQ1Oq^hE)KqP8(eN9@}GITfY1DgAM5RJ6{@^vR*6VKmmIN%oi)bz|4lgL4LhUYzik z=*a_$jn#D8QF;x*+m@WfhDB?wdb;k&MGw{bi+g&?xbN)+D-A4)lZ^_YjY;+S(e=b} zYR*s(;a#JoQh8xs;Hf_a?z*N-^$*eOwHfhTyz$+H6YcLP4Ay~oSlU(X;_1H|vD>P) zcJ{s#MQItWwcLREjD^tHmImKrS=81pyjxKo-5sky;a$rpTmM7uUSb*D!KyO2iy37Q zXLL6c8+%97aCld12-H#!kD)9UPc4j}#MP8hc93=q8Uw6R@$A&*n@Ukh0id ztXf|KX5R_RjB;q@Zc|uBliBJuwnp-AItdvku-KFpP&nyKLcCont2`r(!gTxauIcF3 z+P+Gzc{PQpct)~MycfMfJB94L0V{4- zW=1V`o>=mRYNDcRFD0$WUJBG)I9idpO;4eE2>je$!uHUnNDG+lITuU&dza}#a8#$$ z7Td?v!PJ4mLMZ!QdeMmmR)g9U;}Hc=(J#}&yrv?z1GMHaet!1FdA6 z!Py5-mi@{VKtJyrlsj|HQ^hI+?c3k16HOF_ODi!3wBe@82~jKFFb4~##&!A(Jt>n7 z+R~WX*w=wJI9R`GQc!FO7bZD7lokYfvQ`;>L==xttX_;#C~)$0b&QK$%1)QP*OA4s z!T93h{D8g#vO`;^P~7uV^V27JbHeI8v#TocC#N5zZ-CvM=onUCR@^YnXi0c^tR!LE z{~0)W!=7C856=Y=8-?Y%s0&l#E`X0*b({jLY;D?#f&V@+)-@=tRj2O66qWKQ`o_{_PuWPm6y`JJ zRE>9ZbA3r7RpL|kGG+GGXmNwMG-rEBZw~vkDp+}&?@Xc#y*dv4@=^m-#CkI+$0jD}M=+s1Fw(K~IDzyjtvv8CJsYt!6G79)wr!34PYw}#4R8t5ir><|~ zY0h5!l5*zu@0{7d6)-DwxvW)0NwM5>+vHBNI$uUPtC)o)hL9kT9@uHK~|c|&Yw{((awJ;WS2&=Y8lnK zY0y5(hTv?2HcWA*?CPtL(b5q$u@pt}?s|Rc=Y7kkaI)Cuqr>ZI>>f>F+|drD)2{i% z4b#%RPAqDv+uDPHR#kpJ_*mzWxEWTw)baaN&}TJtL&!NJ)8Njc;Ofy=R-53KQLWWM z+YZb@y1AQN)w@0U<=aQ9_=cu+)f@NBLDxV|w60iO*~X`P;oWX`-RiQ1d3(>DQGTJH z^!R=o+kh|P0aLF(W}Z_eewrRJnadFA-Fr*_m=vlbJJb5TRlXKHY_E(+n_{AyB_8ef zcb6{dTjFu9A5kQ3>3eIHA1^bh+%}I(52+cYCrv)K;gdhbRE2hYP*KG~i!Prfdo+cq z$uIA0Jz=JjkJDU8f%!D}bRN_ko(^Z-0|QP#XqByvDt~XmrSCyq_K|LG_RRFe!_8Bh zLlvtgpmHeY8d6bOFmYacZv0FfpVc_Fi&wZ3w;(=#qexz90zr1#*ALj7;8q)0x%3zt zNs~c+x*BDU5`XulA;{;iBRx7&l4@2 zSz9Wv1~tOJ(IMupNrL=?zs1s;1hB4b^PIXp194#OlJQBwf~Swav|ng5m^fGKBas65 z=f!p0{?tAU4&)#Wvv3B;Dt3t5yS!!6;Z@8}2NuAwPE!S$v%R%ZUO?7x`n9{ZkG;p6 z!rIn2GqDrL&Km|bv#RX8iut?PM?pGzjildevSmgM=U+MhYnzwWH%+eSM!`jsRhHkD zm+-SH@%5e&8sXn*ffCh|E>4Bc<2Vu=66x-o9_28dxEb*bPE32B)(HK^$&rB>4QzPEozQ@SHJBZr znj7#3(q;uxsPdq8Y#ar?Yq#yakcKcC^&KAITX)rcdzg6(3q1**a~j7s$yMB(T7}re zIt6*X@Tz+c4=yk5UanggH826o8`zwNCK|DQSGgQKY0 z|Ee<<5~LqkZm_n4i9UT9d)V`^nViau_CT7%##8Lt#ijiX?A&7ROzgW+78{(kpw<9* zRE1GPm~E)1OoXZehAAk$JQ9ShF1B#D!iu0LRK7Gyo@}Eit(Fqf_*WoX?qjQ$mZVT( zZDVXgO@*G>(zQU>rb{D8uags>VBM zYezGB>n9-frG|Y(b=3G6Gc7Htd+W)l+qiq`Dp@tPmEfNGQc8}8W+rtr;IL>0a)6kD za^Na;#BO{?O(QKT7ma3@`IkJvR_vl-HsAKefg)Rl;uiCUTNK2lQCn|6A1I4W+s_lZ zpoP_RnM6|kHiB51RqnB>(4B())!9r5mLKW!qS=W>oJ5H^49pa0Uo_RpJGdA^vVEhz zf_K*uBpiv_S=0CX43N&uDJr1;3?i#_kjw*$vQOQF?YgsFRYiQ?D|n-%UznPj3?6D4 zI01aty?Y{wG>qA%Zy*ln$Cy+m4V(b;cw-lQJtAj2Bsnufqlm0Ug zBMRW3>Jg-d`Imq2a3BZGqEtBZeAFFklM zX(*9Zb&37#^w}va$lbu^M)frJ1&5|E)~~N}_g2!&tcogD{j}48Do7n(*}tZN6R=kg z#!^7~nWl26_czH=u;%#$B^sfc)g~$N6235xJ(-p^RtDoG#tMk;gx8(uM7Od*t1NVf zRU9aduxT?wY}c#0x58E$Vek8R_iMc6kxHNw2^fr1?r5BC?N&RWymJ zb=6|M?zQN^8mv!k7UK}FQW)R?aBFoiqa(En#XZr-EehhMA>k97TTgBdF3sS_ z?p3pbKi)_~gmqI2X_wim3D|=ZItR{xlw?EYSjKCYG~X%GEDXiBTMyuM;KBub28)fT z)datRN0(MMN2qtJmmtQr$F@U_~0~O3jKO$`214!uJHxHFnFcNZl@AU?*xy-NDX$eml?ExXJ_+O};f6_bd?-mQMx>67 zR@$t`rZLg@q7`H~$Y@RN=G(8=8rtO%FWJ_^94e)=;n`I4o@)rfsMarGU;L`{;P4HOQtow4@9 z8pozfpEeh-RiG_I8(3Z0RrThLNa<`$_p14%aNM8^(-u|j?5NcHb0gZosy8=elyie4 zX`;^6!thO-*U;pAeO_>24mJk|wRk~ffvN)XPdahd);Yy5XlAvH(i(_O^~{$tw)U?r zq0wYt#BTCdK+BRi&7Uq#ES8;E z`?QSX2q7@J`?$EYzJV_k^v3{0DUEVtNzQtYbsoJ^)&&I$5BYHkAHY_Uo|W3hcR)F# zwHL|&^&|P97u^R0TJ4>z_Hd+++UvSktre~@=UAjg=P=c6JJysO8@2XM3To!2Cs00< zuCa)Rl&aNh7ctrURD;FXk0N+mbi8YuJPKY}4yuGQX(--4jl%FIpvSoC8_Q@+W{Ta7 z%Oaf_oAnWzn0Yx@Uvr`?rz2z%V~91a+K;X(=OWR(ANuO7zubzpSmmjla&(U?ZLcj> zW@yR9LrBpESFO2X>AKS;VH=m%7O#A@ss-CEZjku8HkW+ix7V}2mg{}UrnBP3kE4e0LDfqyO*uXR@PF+^-u)y{4&DEJ&zQh}dOu;-=4rh#~c zw z(q4PGr3}TGE`j#G6sxs=vO}6`!!ahL3E0h0-WwG{kF6QhN49xnAF0~m{ZLkv0yofa z?2|sSG(-Nzjb+%e%OSI%>x2~+GObwo$nBW+>>P}rd2n_mZA=#(=r{8oV!<K2Tah(le5^{QBLh6LfBRkPl1CS_Rbj`QNCMS8*58taz9iV&?lWzvc5^4vL>_X{k>kq-M|^Z z1x178$gNd@kB2Sr_E)GiZe5Z6`63Nr={34pJ=nkm)NK<=2!B`cs$^&D4P~8SYV<8m z2$uEX{KBA?8ck;F%BYUvMk|CH))Ki+#a=4V@O^Psde&sNEn<@vs{&tLt0jcLxDv6Q z3cpxvDlyO%i>>`V)n+7Owy?TlfyXF(Mo=#>re@G`;&dcx(G?49Bq1%=rb259J80CL zjEX0wEUxg44{Wc?7G=?^P6RsMbO}`s`f<}AMw*PJ=Al0Y2^1NM(wVW$$i;^vdU<`T zNv6{|3-rOXA~v+hx@?i!rao9MPyk9PORqIHw$Ra3=dH@}FK+DbUhXj{I%~0o^D}!4 zvdZ#P*HrtetvGc7&HAA`N>995W%+!sisQ9VLp)}jTL2Oun=h+){{qa9_25AgWd9-VC0Ro3b&7l zfkH!JtKj@QmO7y$(kQG>b2(52)dPK6VMqyW%HgGd5&s2dTLwv4y+8E9(&FfWX1)AmIK~rpk zRu)FP*c4)EhZn1)w|wr3qZS^Kln>-)zYO0R*aQ4LX$zF1U>`{rS`2(QXpKnS*wqj0 zLRACqV-;H&AN43ROjnwI+-cwpU;-o;YMLIg`EIn?iY|fXYAm4Q*yWmmLPL5&p~V%V zY9ihJV_kzbrA;YL&PbK{y#4y1?RyoTnK^esF&mArF<_-y*`TlOZ8_6;M(MQ0Uiliq zfhrjEEacGiEcv;l?H;v)e5R>2wZD)9YjCh~rEJ{kKo!JOyUJ>wwin5XBe7#i(TsWI;-cCj?uJPoFrqh>wQ0_T_WhP~|}k^kvu5 zSQnz@C0D&Pc%So}2zFX1z4rA@*icHZa!+2}4W&4xZ!1!CwY><`v>B^$o~iBVnY>NDv=0Y^FpPgDfW%o4{ zCtBsfz;~t_?-*bfuhxxUT9fcN)s?!!^ps(lh5KOS}(noW< z`#5c~Rz`S1F5x7sQ@u+4H1;d_K?tiW@qbkMb^4{L|V6%R_6(|I1I}jkEy|T2o zq6fm9&IAf4xctp^-*)q;65Yd>pndY?sF+5$#D<$$JfAs?VRU)RYW4L@ui7X!mUiuY zU!T_CwR&7rri@gjvDrjlWhVLhvjfSnl#pQeAO0G{) z6{D^o>XLdGE-tcGJDc@s1H2tZ+8FgHvTAG}VsICS>nkc%dW;Iu1v0!048z65{R9pa z(5=q;<`N35hLr(%)nyQl*DA=~Ip{Jj7&Fey&YnIuM>jP;TRre9$H&0|m)3Tg9=2L( zg0s#2V0#;{)|TSzclVp8u4-A7+D0vbXkZPfElwNQ0Ckta2G#&?ow&NLXXQ${ic0g< zN~i|bfUDD-d1=WxynA_nZxx#}=!WQ3?3L$faVppR!>ZS*-@Ogz^lM$$7RDldTc~wY z1-%@f2G>0*JDDv|nC~FH%6pGGIb|d2$gaJ_ou$6UmCAN>R^j7utwWKeg(xiQt|GOM zMRiDOeBmsc+|ax?_HEfIAH7$vRTE%k*zIEyqeAGhjhdpdwe8TTqDI&dYP@dZlM6(i z*Em!j%fezX%IejemC?Wou#aUazVckgAuj!P!m-g+pW*dU#|~^sjXti|s;M3c<5iEP z+I+n>gdW?dUX87-S5nbFNW-GldK+ue^hK)m)zVGq54gA(w4A}#hMAlY9xEz0=n2Ym z6PrX=zrF6UAt(0hHB*mlS@0THb9-l=dV;E9JWK2Qj8!;~;JPO+Lzky6M$ykSjtOI* zsEVnHMV@S+cO-PcjD7(~pIf(jZMnYs6g7r2Xi)7in>vEF-C4t1skN(X!yQDd&`a~g zn^PbT)YETPr41L`i#bwroO~>Zzn&{tIj$8kMOslli(qDUa;kYTIB1p0>$wv+&%T)! znp3dm;YvMZc9iN-I#{=q>>8d@TghR2{ZvqU^0`lmtocu2w8H*0Dy8=9T62zG+VkAG z`MFtaB!>Ho%}Rx{w*<7SE(XO#Q5ilJYvh>mhN<`Y=ux)tuAkm03F0bET5m;HkQ`p$ zqm1BTaq(5jX=yB*Su>Tyd@(gP{mIL#J*41~&jD6(+bL8XLsFU;nr4xzSK0+FMyd~Y zs+Y0~_9>8U=^C~?*V=_B?VS*`$aLnTZa!8aUWH3_;GQFlNzuoa=*4;?BTLf9mTt(_ z#7TN>NfW{C@)5lgO40UMxg|M)rK}2KU3v?E8!2yvT)*)a_bowGd4xzO1^VLAs>`Ag$>=fu`CtyfCq>D>PX$(7$ z9-G@`NsG}N%V6fb7!_6JyP0z)5@r~F=De`#%sC<0+l8$BMOR?)*v_AmwVpqppE^H# zdTKJ=AJ81#x;^xEfj;{e4b_%Si&YtZc|wj&l-64L{w>9z`nUwNeU`$FN4j2m(p^*$ zzw|k#OG?bn>c+Rlp?DA zPzpDFQH6~+x`t^f08V|z&WMw46;(-0z-qjt>Fb&OE6eg3%Ww{BaYA_W5G0r|Y@SJ9 z@=L#6UJI107iZ_EcoU}b0H7M$LZfsxzV%mwdf%=Xn#-X9_ORT+V>f1w%{_bw%f)HD zqEF58m+-PXKFXhQ&KktjNpm-j(yVUdtc}O50dd|-6C+mOg}+YiZ8PcP)m}Ti z)8F1RD-CSq>C@LlisCj$ISnDiDqPCud&iezh5BvmvAT{yi{5MXb09j3fB964fi;fp z`ylCANa48K`#anC7!Mi6r-`m>6FX0GKF}khui4o!L%Ev7s*dc2^ayO2^sQyHHpxVo zw2_tCPPSJaDDu~GaZ9FKQXz!4y{$M|k~**(a_x{^Qb%^f+C5ulLSU=E+3i&airhr{ z%cl?mTeYc1pEkn%JdSMuY9_}j(g?Y3eipc{6sKgTYy8=Y9Mm?HqLlPr%CDzODHDxn zN4ISzL*cj^TU$@qVRZGKb;=?hOZagF?*6!Ep<@p&Y^76v6B_meRb}}!q7J6`Q|e)) z^~#dB0>=)8JX8$Q=k&@l>>XXth>PTKJH?&Sq;$$FT~_6b+U=#i%R!P_N@E}P6Uol? z5d`*Jt5xOvr*^bOv)$tSxrIeP zCtpFu3C7%sR}_kic4y||6OmEJY9d;qQC^my1?T9(6>hf+c%&TQSXuOEE;nbBHPJKbq7dSkCStq0%j z8`IkR8`xh8t+I`WY?=$BF;v$_tJ_{%+wpI!hOojkv@c)12R-ZC=$eO*9!4B@b0Id? ziP2gILvdqU^sQw(2r!0v9AFgw64F7pF7t98RhtY}#&G*Wp>dljJ@!Md9*Q_! zUp?0A+qwg5qlUiMa!`-W8P4g^4sFex^7=-!O&RxF^?-_=ID{4I(f7ImhL0yRV(Z~8 z8ac>)Q*2EY_tG9JEA~>x80yy2BKh)>^|cJMFhze4LEcDyy_;NB0qlpYhBj&r46( zVO)xjQN>y@E6o!Jm|`?9SQ9D1is$>iL}OI3Z2y)xrB5p%-;Wtw`=S{|v(zOs6Rwy& z@5&QhE459Ucd|uI1#7O}3{-{HxcPW+I0On>1wy5dQ1@@X*+skd0F-6}M( znm7CUD?PUeTHbVVwKwk|6w1D_e1Dan7I@BgfNeI)cBLvo{UqZfc=RroMV0t&&b*Em zd9asW%Hn7+>_l#sJ_K6!$9UaITqWFT3OiVf0A@ieYiniK+~k?WVBwTU5T4o?;EjQ~ zNWl*Xv90@jpfM$VuO-&xUe(P%vSv=~!G90Ym@}c@_9dey`#An`Ne{`srbrsfR$;cX zaoViXL<|NJbDpVtAyXKr66iX9V^X;t?l81Lf>rj)z4G)i6FLp zZ(=DPqpKEJH?g!w$J5YeO|CSh$Ea(z*i-uID9m`f!sF5vx)uSFGp{U>)Lcxojq~V(?tCmUGsb5VS_jZLj59m@3F3hxAQe+t_I7R zaGW1%%Zv&Y%B7ORepIMXX30U2G?_W@U16YgR{a*W*Gyh|-4_LWb`Q|<%uM$kWE#Dp z-9pCT>>Z|5`cDC`1)|w34NfKkODB7N3s!Qq>@X9?% zazp8{Zzkk&{K`I2V*A(cv>#du(2TdTan&^zoO3SUAmePO7_l`+ z;vVRA#Hny8=R}Hq@ZP_llOxM)yrrhn+>La4G$q;lMx9!D)!|-kN{9G_8HQUl$Uf*M zU)BsJ03mfF5G;A(6_a$1s@obP-<9;ZJ3j#PEUETraP~^m8D(IiqSmnRR8Od#5?8B) zzqz$Hei8RkPZnG=Ppn;Z%T35Hs97Q0_FhgzeJ`i5x#zl!8J+kw_fK!3@4I4wS2TXl z0gAf7iRV^K(v3Z}4B1OS#|3R&C0PdntNZrB&uJv4G@eKe)VbBF#8-Lpw^m&i_1Z7k94wXv)B*WLZ?ZEU50_t2PfNvq#YQwr1^XEf>&%rNLORpnGj1Seivqe|=L z4Nt*|N7G?E?PVH!no>$vA@kBpJ?$zZO540VPm~0EUbHLza1Lpgu!cSOmcqcE*FINh zdeKH!_W8nFm1hi(+wUhLZH_C?NVrA$Fwlz3<(my{eb7Glz@X7qE5GJHu@mZ8r6_8< zQsklxY?@+1a?+Ch{EX&p{B2A}Q=hA@-b-~&SCDFU3M8)xs(GE7aEoUqC9CmPK+7q) zH6Amy=voU~5J-cvD6Pe!^3d5Akq}&Lz6h1uq{#S~WqD<=^2F}`6~%UVkJZ|ykEPg& zCbGP^eDnxrMnYSwi>>=@t0uB^CBkV4OKbf&LgZ(2g*W_nrH>qDxW^`)`ctn0 zE_xVcJhq}XFxJMD;eH$6Hgfp`?zf4f2`w&07f1nv7}j?OPp&OJF~GyVi^XUHOIQqc z@lv4lFQw5cJh0lNjw5b!Ru$N~7GRo))5X?35yQ4>BFk<1Gy;#hHpYSm7Tf)~w5q@s z56$R^gRWI80=wMfw-u=s{dVe3QEJlMLn2E$18Z!1X?OQY93@PC+5#4|$6^aZ9?aOR@A*rN47D<{=Z(JU`?N7c z?8~?upd;F$9)gsMch&{gPxZHCt4g-JmzS`^(qM9GA;0crzcJca?BFC7o>fzP!I-@? zwmKMJm^qyHvFLm_^`T2+>xnfrbMEZa{P^P3B$zGc*wZtMQx8tfS84$qZvmTB&pcRZ zIb2x}PR$_JGrY42(+p5~({tmKlQ^S!fk`zKFa|RdmPA11t#4yk&4lzTYj!se4^HA^ z1?-@{q<$;ygKK*WYp>r&hrE_38c;kQwbPkriB*G&gZ)PE+^OR;h+?j8;W1!2xyrw- zmQFzzH3yWQ?&tg_l=CDZ$KY=?grUCW5De$v@JB@r;5_XvUCo66PYiIvM+>nm#*sBd5mNh#k*;p{N`ic#V=Ui@;@WKki-r9LK%BT^*0 zWn3$B=TGCs@>ZvRD{cBv|1<^-OsK(#QymG9A;sNa#+<9TlTg5@&I(KW+T`cUbURws zf$V7$Q~Gi~HR^BFwQ%cPG>WI36B*v4>D6v>eVXUIK*0 z$e3wOD@M}qq{Zvh!T7`kx;(l?Ow3QuEl$tQbUm=Lp*~;bh7BC%*=Of+)+<>c&&BCd zQ{y=u>^1|Ar|u`>RAG*td;RH0rY0As&rYRWl6S9&?R@I9mATtUDyGNp^ZW`q|D{^1 zalY|6-psi(XKJE3=>~P)7p4|9ak2Hd=$$3N`B^-A*ypQ4o@*KoHzUt@cuqB~MG85_ zxu(Je@ywZNEUsJ_KjYJP&MCaz;)HGC=Q7anP9ASu<4CxSIrjPKh3TLTSlHPtzX8X1 z)>=wI$Dwm1FyUv23RCQJ*o1$6dhy}3)lllVlJig#Sz?c`=}BjkFvZ^A+nSSGVtc#ouw;9$$3nBFSV31RYCznMP91GUdvMx1(#?Qpgd0E8F+s2VcO=B zD{V>xiihDNA6=7sRvJ#0uw_jzES#H~AK(zu>G3p{A+ANO1!{W+PxtIEr2z&8RQwBz zQ!|rOlLOkw@!Z1rgE`eLTy6AJKaP@t9{=|KQ@j1Ln zJ~2C)u1g0+T=rXeDh&z5O>uI3aa_>~;=KXK_S!CP1;%{q7!G_2CQeOFoL)G0wh{$# z9x?K>Ni9IjD;*c-5i|-r77a2dq}4L9LXL}rc2DPlBolMkvrfCxS4rM3%0i;07n_#Ji1Nwj4bM-VOe_g0#@gQQ z$`S@@7>*{A1}blMVqtE;!yinf%`wwKj?2TIG$LbS4hO7-#qq^+=^7Pg#yoreOzw&j zk%Nvii#b6o+@Ri+NjdCTpwPCKl~#b3cMeZShQ~m|TbMh6af-?Yl~aNOu3QwHMxrtj zFm;BBhj75cI5l;O;*XJr$(vL8oLA8C(Vw5kdDUlTQ`2SN3iE7q>8Qzhl@RLC6Vz~L z9z27J(oJary=%r48$H;(T=KILs*Jf4Q)B#nGgnd#8HORGfYzU$JZXH?uwtE_SU5bE zB1u2J4%f$nsR7I}A%z>(+3|^i)PH6Q*02}GPfo$Fig!?;hFgaD*{K~JWH1j6YRGyy zCJ`M|?TpyRaOZolTnh$p9tP;V=O3O+7fm7-Bw*4r7H;p3Eof_T9_=wdiWlb@^4vWB z7@wKcBa>v*>by0cQ>N$miL@38)`SV@`PA0&0)#rA6h#I?-n@6r_rqNmk zxj*h0I<2kB$E?ftc<9~uLqK~dqu9Y5#>=y%$#_&*%$}K^c(@i#4SLRN&yAmPJb@H< ze)ht{c_dG#FUlc7sqyw|y@#~px-!au;??KT{AlWRwc66&=C035U@1%qDKGVrjT>$a zMw}X(@OHLsTjm8Z+Jp7`>LV;NMm|J3cj+wlqn1QY3SrG0UFALnGhKD_KE~TiYTzZQ5f6 zb-v33v~8D)Tk~9~Kx)hj7m(jPhAY3FmP>8%jXGTIfu3D>a4>zA zr{CF;gZj9VN6UA$>y$aKEox#Z!*9^&r`PG2p>Ja(u*Q@_&PyIQauoR8Xl*2Tbg}i9 z?MyTvnVJJ9J%!X;wS!EoiWS=8>!eXBs za^48TU=wGxRd)(=Y&y54@;KxfwL9iGoBo(l>OkmjB?0G!dI!1c3Ms4!Vp73tZ|;f{ zdtDPv|C3q#(5$^Bz@-mE^va=t(_=%gs;7X{n-mA_MyC|NlQpeT*}1qfb_5sp_6~gw zeE87Vk*){svpIJ3cwj=PvAFlXv7;rH`|dqjOg!9YGj`~RM5AmN?z6e~(6O-~9)|mD zP!>_z81AzIEUTT?$LepTts`w}>P)hb;>rM1s0Jy_ zm1czw)`m5hW0yh@Y5@ult0UXhH8`?8f|U&~d8uoK*uY_)ElX)CSs>5Ni)kv;tgaE* zw2-{cQ(?|)ej6gIYs8IL#CFmoazxoG!_KBIrIA=F=hZHb5d#Z5 z8+26E>#r?csX0}cXY;}t@vK+aFo?H!?V6c>jq)y*7^C6I)Y>GhvfC9e#Bb4R!7qB; zIvBEvaAoDzys(ACEZZ%3DFzO(<9`)DEj`Stdg?321#; zC6fpxq!?~}4D%eO*>#OfV%D%>l|?d{RDuyFt&g!py=I0rX11$ElwZx{dT7|LcFgJ< zdQ5K(Wb|89WjG*Q0ZdBDL{K&>!HA=iS|)pJE24EQ=|M&%QX$qWJr9&<>$5>d@+uh{ zs`ho23^8g*Gt2^+L^F`#)+I8TSpmb70U0Mj3E~==BxOV1D^s}AtO!&aURPO86g&+<gyltyGs%;A8Q*T;xUVwyEGRl|#9T+n&UYh;9E*31Zs znJ}JeYXIjBJYFKBd1}p!g3AJ#0BU^Z6*7jZ*31|@k7~IL&6*j*;uSJ2(!^Ys$0%|I z9bc`F5xT-WTNcPvvOo=2*2gHaV2UlPWSA$R%BZVkh*3j^k(SA1f?hL|pt?rJhn1JK zP=*QVr`M%5GL@j$%qUdW$3$4;vn-HN1n4i1mGac2he(4dB_mt)+YkhZLu zDG|$>nFeqkFm0FC%v54Q0;a5vF>FCwi@bD1)6JThs>tIHwPt3R&c}pRx+iO43^?dH zY6(qstw7JG0S?yHRBi@BUS2`t$Yx!Q)z$SgeYlTDHyFLHrrLv19vVZ?dsNL!t-~p% zYUvDpAtEDMYHyLwdiM+!SD@;(?Tak zKGMwG`XHZPYh}|L=v;aoL#MY@d0XB7^x7k7FQ(Lej{Pd5WaUv6XI*T>)Ee|0S!h&w z0x53q>LNDl)p`$ksZljDYmXRCFBsKNmlA^4^hEpmhQEbb#&%$c0kMbg%+DI%E za!ah0YGanU49=c}sxPciQRyL;MS7T$NW*5d&mt$)8kp3QN|IQTB7pTy2^()Y_wh=ygUBW?~+wg+_&}Ajhq35rxstS5#2vJD#yn+?wY?H90QpjVO8L zcTHDXaU?p`!(sJ`tUV&V4p)1idhJmrYN(GZd9*HED|5=6*A_Lg;Ms$_aM0+d*Xfv{ zZ(}5|#*{N`mxM!>PG4cRB_Wzx z92%;g)nX$`rwUe%JaoHfZ3>pPM`WzS);g~}vLsc%$x;>?Rh~fJAC?tW76MMsGZ(b> zNJxT2OkQYYscP*}RnTf98}i<;+^7;{?U9Dk`j!@HJxNt_@z8g@bju5Pxsrv3uw%*6 zp)@ndOojEaYhHxxJ@aZK$&FfjWU##UD8gLayxK^3YVA?QYIn@}FlMIDFj?BS^q3V+|n&HIe%p9jP6^W#hEeNYV7#BZ2XpRMSrZmnvFrB;>mGNFbBqAho*9 znD&Cx4LG5D%ex$b4wp1+(FeTcMh%t?7uIgGzts9zi}kVxytxIuH#S-0EXy(vF(`oJ znYaEzHfXWfOF57=1~yz+SDO_n>tiie*>+x@xE6_-C-y@U! zOEh#m1K@gS0|n?Pgx$R*oONtN)k+wAhcGO4&nWo*?$RaiQDfGx(ira^uU7k4a0==g zwvnI+B_R5pHSDK{BO*vGzeOtR!x; z6Kk7tlB!Sr)H-4-l7{|Vd{z8YBt8~y_q>HWf74EII&RWk;9O1ZWN5*2MvBcg*+u9M9Zc zgly1k@dSFIH5?7Mwf%-}R|k}S0~={1CI507-tLY~Nz0+iz(MS!lJnRR;8t4x3X@Rm z+(zv3v+Ag|lA^X+gmR0mzl4uXa(DSu05Ylp(Nn{Ornb)%K<9x@SO2aS*ixGmw6iwf zX%N^(Gt7T9mQtA%F2&pX*z=Jz^jB=q^a!Ls8lyuM1{e1?SF*B(E9>(5#bnDrDvr#v z75x=-e{;9+%TLi=UE0{^B2GU9f8*ND7J1^o8I|2hu^PEc3zKPyGKCW3YH6)%Z@37n zY&#wyu0>*I=ZPwQZBNb0Qwd96XBQUE3^vx6X@BW*E{D?4rl|$K?wfD7{|+A+JNl|4 zM~)vmV(~*ch~?eKkKIRs$F5txq3a&{l>^;Vzj~niiH{%Xe&)LCy6Zo2p!;^n3y{Zu z?LhY-$f-{r=-v&v>(>u-Z-rd@%zAIN7Qo4*UZ%bx)ka{dnvbRU2`^jYKwGWLfDx_3Zs z>PEWnfIJ6z?DIyt_d_1IW~BQu$gQ70(tQ`?(~#9`N4j5xy!yaM_oI+oMqmed4)XZu zNcUmL{K1j#y^!Ny0DH*o*Nt>TaY1a{L=cx*vz!dCy4qcE}CiIMTfd@;qeq6(ij*L0Nq0X6ALOu*R^J>^Z?)oDm-SJxJ93B(8a7-Vr`r284jD<(&}w?Rgx5Fg~1Atz3bbUz8X<3ad@TyqL` zkf$Mw(<9w4Ku$b_a);b`dZhb4$aQB%x^IO%3whmHa3EtdBi#=|MrP60AWuUk=g|JO|l04-Vwaw~TZ@2f610$_esW$i~Ca zLC!pavVh$F$I%ub&qE%49r%#3KY=obj66Ehy%F*Z;(CFB9}NyzJ# zkq5|;m67fpkegSLUdS_$3u`D>$UPTPc94-vNCV`9kk?#B{vfxkgAaKg^4Q}e-OoeD zovj z1^EEv{yn4-a{WHqBjjnwLs!xEA$LCsKIEFGP=}DGArHL)*E!^lHzNIz>;ELm1o8>U z;jR`8*f5egPi}jrJfHnuY^Sco*>#)Ob<`K+Q;X(J&b%4L`!rwdp0nz}u;YZP4A9O=pfHR zR(~9Q9pvagMmiza{{-p;@?pq{e}eW3dD%}Q4UlIbkNi`l9dh)YhzBzA&rp_-ry(ca z1wQ1Ke~xPm@+{JLDH~{d`C`Tv2sh0J^i?H=;b|3tY#PCSjeh1~PMQ09;uKa4a(y8n%96Y>IN=OZX@$nyVz zFUb5ykzUBDU%_<+x$R@Pb|BaPD#{7+DaeJ7<9-df|Nr9pg53TI)Dh(Jub~_u*FYZl zB=QNl`PUIAq4Mzwno?gNk$UozUg6LQy$@B_K|OW_A{ z%}t}-w?bZktbW;O_sftoH;;Bd4LS7Xquq}}Zo6f)dmH57SB!RVgnSb6*sY`82O$rA zba~ABD`EK>0%sO~4j%%OuhS>83`ztB{XD z&YwiPfV}!aKt2t5d=+g2GP#C&fZTZzJ|QEQ;1lu@$eGK? zJLH~q=pdhkTz(vRhur@J${g~tjnVEqA)kfpT!9^AeiP}0+_{DNfV=>Cd>ipWCSQ;I zL2lkbJB54Fp@L(W`99YgMZ5<18=Poe%HABIf60c{a-;~S9% z$n%iL|0K#0a`IcDgWU9|a4kYU4w-+`X!l;okw1+#2f69nkOs&nAoG6)d4(MPcC-b^ zEq`{j`yR+=Adi0s+5%+$&w&Fu{+;j*x&6s z33=$PC=%V`rdlTe2$nxI=7xL&2 zAWq1czlAhIj{hLi47v4h;~Ioq`*xHaV9n?*JF_B4qjR zq3uH+_~Fs+$02wAee_9?>wW~~4EZEv`5z!|$jKi?9w3MQA^IN3!5>3hkY^x|{v-H- zy!yxC2XewG2@d4yKSRAk7T-16 z{Q~6ve-3|;+un`q0P-AU`Cp(6ASZqb`GFk&mneV8{XdO-LQefF)D>jxXHXxI8~!!Q z5%L^l`8}u)$OHcd*B9j0pG7->JPWz_Z=r)c@N@7Bx$WN}PRR3+$KH#67;^u=$F%^t z`R8E=c^>lke?VJ|fD!GYZVKGY-R`u~J{LSBSC{)?mCM<8?m8SN5s^!>;m z$Y&sr|1!!Eviv__ z19{DdP$rO9{!d&tkQ<){7xEd%#{WVYLuNjVYYTGpf5R{2){o%&fpq@|^#S=fuVC4Un5Zj>$UVN4Y@m z_#IqRkn3K+{RZ+e$RodtwhuY~>Cx_K$V0z}x`7;h5$T7#{P&S=$hDtAdLf^JEdK#) zAakF^wFNo#hp>UXvOC!QAmnAAcd&aC z2zd_j=*YqD{g4x*2fKGc?ml?1`+msvUjRRl=O7oaJJ>x9nfbzl-FqNo*B|VD7;@_u z9qir=x#ot0-5%uQkPBaYuzMfmftMjp$lYIZu=@eX4L2U_z76smZmE99E51PAg7$m?DX4&>-p zfdjemHpB&a9&-7s5f^0U_JbJv9PEyK&B5;NkX!CR+9BQ7!Vlz=kk{RLu=_>GYrgJa z_fwEp+;y<~A;_&?f3W**$cvEeyTOG#_6_h0S-c1Ng`D_Clpo}-S0KNT>%Ix)2YD8< z`bv~B~W{fe-3?Vt@YKFO) zi(8T;Ns=T>~_k|arzBuSDaNs=c0UTa^@+2_ph`TqX<{_*w4^KtfiuiJaQ z*L$tK_FDU#(^)0!L2MVa3HZ9IWD=Nr+Ea(WbZb#pNPTBA~&>}}AbAT@w z<$_b7u%AkHfzSsuz6s(VL7kw{4EO>#46+`D%|XkV znCl)xoAEgwpC>^6Ea(l^K92DSVrRquK$9on+n{0&#yLI@;d8)~&>wW03mbzbPeFfh z91NI;egN&BR>@qz&qx1&9?z&`1!%EAB{RS|Q1&dwIVeMX`aV`4N8kt;^a6AM@k`J@fWC;n1A9S_rLY}n^b*>|V919m*$I+1!*4+JN2nL@TQFyW10d^T)C*#^ zVx9!_6VwY1f&SazQ=rqQC>u1|4xa+Y!QjtOFNocN_JXru=;!cb5Wf?B3C@ASFW|eN z^DeXt@L#HAIM@YJcVn&vF<-&nfbK!v;2_BS8ajj4d!aKBzk$wRFG$&kegnFcv_&|BxRvCK{OzL{1}s79uM)1X4v$bOJvXk;CTH8rvTMENu_8Jq%z7okp& z&;$PTP(FycN+XLvqn2ndI1Ywhjdp@=tu(R%G`~h8 zQ^8qK*c!Tnq-!;viTHL?Yy#-UEox`Re$0zMvTzm|vII0qgss6zFeC|jg7{?g8K5Z|83hi5LA^Ax1N2CR4xnio>H}v%aXQKb zoqD58&@2P~0O~S9muz%kHK*;G#llBZaL5!w917)fO;^z zAM6DB_eUDg;|}ych#P=9L7Rc_d!P=2-M|@8ai>NOfx&}OH%Pw=c|gn%_#0^MM?Ziw zpl~SCfRsG=J&4JN4M39ujZ6deU|b>UFM@A@Be+g4*2rcMKMXp6<|QZ(@TI65><78S z;X@#P1nLBh%U~N&530*y8!)&+!`cXAt`a@~x>adpHE25$wgN4x(XJZU8_dDASc_|L z8kE&(YJp39oxd%1_XF%Zu=mJvi z#n=RGCc>`3xDWZkDNr#9z6Ubzhpj-{$?#dw=mCw42gkvHDQGw7^dQ;*CQLd& zj^HrZI2&bv_$M$wfF^U0ADjUtPoj+=X)f#xT0I3n1M)o74~~H$Potkf_xY#;#6N>} zfanDpnFpetMIV6EpkyKD0+8|?$^&f{p-#~Fd5k+y52_YJFEHo@j3bb-1UiE5FJevr zZI;4@Kz#{q04G5HGT0fUzKpaWZaL}(>MIzR;2_9afj$78UWJ_iU8#{;un%Osrjhla z^D4{{p!MspGdK(KS3?hw^akn&t=~i(;NLz))FX;50MwWr52Qb%w)1dHs*ba0$2)lshKft~q z>JZuj)E_Z#gVUhoFxmuif5IF9vW{Sm1PMQ*Z$aCm@NZBLDt^J(16jvlcM$(8d=>bP zV~m1BVDN9~Q_%JV@&V&_#DUYG@Fe;T^!Nkq0ZmUqXVCvo*ax&cjrM_4V8~x62edl_ zn*siB^gGxAx}L@S1RDPX8-s%&qaI~|=KsP6zzHzq9LhrZTk#q9ALb$;5=zRzUXaRB zvKqAFDVYY&fMS7?-JrWj$r8|1LL4{=2Fa9c23-}zfhd)dN#GP_Lj^3sG_u3~f%yE|791C2xW@Eht$4 zqOO8o;0&l}iE=^K)hG|NYlS)ie+_I0_Jj1+l&lAF*P>mZc{C-{!C6po9VPofW*ejd z(bpqCklR8Ja0Cpx0d@gB+EKC=#M}ryKvWDR6TxXvb`xv>vSQIbklLP-4WMfrC96QY z4wNhgE#fJe5289!G8LQzgFC^tAmL{8F=){leFDTTl#Bw$Kz>))0wmo6TY%_pC9U$d4O4fkb92%;Cn#Lhfjm!psWDC1F{OyC!l2!>;dXQNip;Q zJ%&-T0yHZ@`@wP0zZ8B1VuwS2Ku4f$;5aBOgKa=oIqU~wDlnEnR3&r-XTk6)*chab zg#AG4YD#7TQUjg9UXW3Xz5?y)-~%9P6l?_Q!SK=08|03`_y=9b!VaLtILr;;EEs+_ z(txb-@KF$V5Bd>AO+Y!|1Q>iTC0juJM2fv4iajIP1{?wXC!uW6`F`{Rh@OmgfMyS% z4p0xOr@+6!&bfIUIx9JB{?dlG#HTFs?o7N`d$PhtFl z?(+}_+B}VNK;!x7b8rq+JpNuvghD~VDKXN2S|DzI)j+S z82h043n&kq0>w+v2VlU9lxzcCm!h9Qlb4VNoCbxC53aAm$a62b!g_J=43#BWCXK-5R53!DVQw_u(JgFc2ofb^}<9mIbE{{+T1ln0K1 zA)mrtAZa_s35fj+^FC;~18o5Hp!jp>1`>9neW2YJ=yT9y7wivCfx<752K3mCJ_l{T zf}aE59{3kH0fv7~$sv%x7h@A-eS`52+U-M~Ao^R>3F<-dexv~z-(ijd=?BmT(EWS# zD~LY`{|BvqpjZQ8?mC420Q5)L0g%IJBRC22e}eyj+#~QGknl5f1hGfa-=O&~m>U5- zhP>bmsQ4A*1>_$`--4vykOxGcKz+dY9rF;V2PG%r@1Xx57&oBnDU4sx_D_sI5Oo?h z0LQ`LzhH0B;|y#GTK|nc2K-svJHSDZ@elHYxO%h^ME{F^15M7sSAh5*^aS-_6w%2E zP{QeWH%KShyiPWQ9)eERf;dqpD?l4bCrdy}Sts*AQ$;7UfuZVT3J^7&)Pkd62-V3J z&`HIXe8*U382sTuSDO|L*&a0(PR*U3JRaV6Rb z+Oau^J~9ySKqZFQWFq1+pEtaZ?)b|@D#y%BYTlOR7vCp$rpn{=`Yw2IZqEI``B zPT&aWAE%S`plt`8%m==Bv=5vH6&+zqkktukK)ajKJ|K41Ni{eQ26sUnAhj#ffS6lg zClJ*QdVsT_;#RZ|q<7cJo1pD&I#~dk^w7yva2yo(gxx`U0&D=fC8BRZbQ0trct*&BI5R0ebb=Rj>A_!r2}gdM?vzOW-m z$wFQbf4fdrg0|T@Sp=HoKu2&Il;pyHKvF;06SU~Blj-0T7;*>70i6e+ZV)w4C*#2p zkUI!%0x@@@UjaWD{R)nNA$P&gK>QHc4K(uWWFj~Ua)-iaK$|=r>mBr4zD|aNT_B|Z z_5rO5p#vaA=o4@dWEG=6(0Leq0yHmy?Z9bJSPDB0$N0hLdVI!>K)(Z8rjv2tFvu=P ze$crB;}tZmL>=G^7+!@sK<-E#?@S|2HO4k*S%a|*&Vj00^fySU!x#k7qu_Ty91Z(} zBVf=Nv>U{aMY}=caXOg*j)MMoWBvf~0jEImqwo)qIum^ZT0RE5gEL_0ES+ozJsyXDf#$Q}SKtH~ z@&w{Q!W{S&X!j(>2QcQs7r<$d{}lWSB+SDY0_~ng-+&hLQ3p5$N}hplfTRWR8xZp> z{08s~F$Te2kp3L}97Hcd9H7s`Pr*?zcro+<&(Y?JuHzpz~7H3!1!y zdciqRybN;y=>9T%A2eAGn}CyG=qrc=2`gZ4F!5FNCpZp< zF!){g0O+k7o>a(KLPFbqulRwvJjsW@HylF?2OOt_+0)y$_FhD;@%AE!SEm8XCUYIAns5228cQh{|5D-~*%7-ap6xd6nTgMC2r|4=7535F1ZYz3V-gDe3}c!Nv= zCqc1bkUbzpG{_pzRx-$JAj<|B1rCC21#;CO8}T_CpS)&}YH%0~qL70a-5~RTXdn*k z2brcp)`1wGK^6ddkwNx>Dv;jDAZtPEi%}*JqaX)+LHZ@o1J!sPr?FT2opiXEvXnnImW`Q$cNN0m=2JN~)2F`)~U15Kad5b~n zyJG(oyw{u%iO2+RSQ6}-6Wj%eNqpoY(uiD4qR1sUZM~EPl43Q|d`$VgI6YDg`q!xO_8GMbDf zdW(K0v0B2gy|O5Sd0ECez6yWCnSZ%p{MIS!6bOoIHVV zBRomwlBdW#@-&%Gp1~V>&yt1YIkJd6PZpCG$P)4*SxR0a%gD=QIeCSwAg_{@aSx??08_4@)Bl&=AA|H~??B{1UF1u$n|wv~kgu`R`wiJgz9sv~cjN&1o*X1UkVE80a+v%?j*y?pQSu8p zMt&v7$!~Z<`W@do{ezq$f0EPWFLH+bP0o^kNIm(NoFo4c!f_nW37p7DoXjbl%4r%!f_b>nX3x^uU2J-D7+ z0++}oamic?*NaQ#(ztZ4HNa_hPGxc9jY+(zyLZWH$*x0(Bh+sbX>KIT5* zwsD_w+quuU9o*;KPVNhC7xyK%oBN8}!+p)|<-Xzeao=+Lx$n3G-1po;?g#D=_ak?h z`-%IRJHj31e&LRBzjDX9-?$Up@7zi55AGEACwH3ri#x;p&7I}`;p(}6xpUlq9N{^h z=LKHmC0^zgUgb5O@;YzuChy}f;v4Z7^HKaId}IDnz6pOB-;}?cZ^mE2H|MY9Tku!$ zE%~eYR{S-5YyMh3n!k>3!(Y$0ucEAI*>9$MWO&yZQ0_J^TdzUVb8fA3uq|pP$S>z)#^HTq6;eY0j^1txM_+R|HYr-|K`u~ z|M2zvzx+A=Kb{Djzzc#P3X&iTil7RbKm}be1XJ({7YU7oi-joR5}~nhsnA5YOlT@x zE;JLa5Sj~D3N3`IgqFh9LM!1Kp|x7=w+P*YTZQhzZ9)&Br;s2d3Q0n;kRtRFQiU`jUFa=j2z`W1p|6l7 z+%9AbIYO?`Pv|e)Aq)@(3WJ0@g~7sI!VtkP3>ET(e4#)n6pDmmVVF=NlnTRz5ki?z zE>sAWLX|L5s1|C3TA@xDC5#rv2xEnD!rj7n;T~avaIY{?xKEfQ+%HTP9uTGo4+>L- zhlFXu!@_jo5n+b#s4!D_OqeA+F3c955atL^3Uh_0gn7c#!hGQwVS(_huuynTSR_0z zEEZl6mIyBjONEz&Wx~tCa^V$Wh48AdQg}^RCA==I7Tyrv6y6fn2yY8(g?EH?!n?wH z;XPr4@V>B7_(0esd?;)dJ`%PF9}8QBPlRp4r^0sOGhv7Dxv*3CLf9pIDeM-$67~pR z3wwocgnh!d!hYd9;ehbHa8UR`I3)Zi92R~OjtD;sM}=R6W5Tb(ap5=Ngz&p?QusqS zCHyIz7XA{>2!9J_g@1&4;a}mL@Si|LPUJ;F6h%ptMMYFaO{AhO8loxs#EZm6;>BW= zc!}6pyi{x=UM4mbFBhAMSBTBUE5#P#Rbor=YO$4gjo4beR*V*}6WfT_i*3al#CGD1 zVvKl`7%R3H?igY?+^!w1I0n&o#J5eE^&zH7l(>@V!l`)7K%k; zu{caD5lhA4;s~)!EEg-pO0h~DDOQU$Vy##wjuJq>z zjJQC2R$M4PCoU477Z-~!h)cv5#iim);xh4Nak==4xI%nYTq(XLt`c7tSBr0mZ;Ee; zYs9z3wczZ7?iUx|Cfuf@IMH{w3=TXDbmop?a}UOXuNARZEb6c39(iAThr#iQac;xX}8 z@woV#ctZSLJSqMmo)Z5QPm6zvXT-n7v*JHuz4)(qPW(?K5-0JJAc>MB$&w!r5R4N^PlMkz+RNs5))OE*h#QU@ts>L_)RI!j%ouF@@1H|bWXyL6k>LrRx= zN(oY;lq4lfDN-*fRZ5e3OBqrhDO2hzWl6V7*;0;_EA^B5OLs^Eq=C{P=}u{|beA+l z@=HUdJSkr)kP4+DsaP5&l}M%1aA|~8CY4JSQl(TSjg+dT8mU&QlSWCSr7_Z2X`FPo zG+w$#njqaPO_c7FCQ0{8lcfiwDbj<|ROumUn)I+VU3x^CAw4S1lpd32Nsmjjr6;60 z(v#9$=_zTR^t3czdPZ6xJu5Ago|6_y&r6G?7o;W9i_%i*C25)Tvb0=!MOq=fDy@`W zlU7NuORJ?fq&KCvq&3pp(pu>qX`S@0v|f5o+916zZInKcHc1~!o28GWEz-x*R_POI zoAjx)UHVMgA$>0Gl)jL5Nnc94rLUwt($~^n=^JUE^sTgC`c66^eJ>r9evl4HKT3zC zpQN9qBhpdn7wMSvt8`rYO*$d{E}fK4Nq7o6A?qE##}@ zmh#ndEBP9^wS27{Eng?c%5CK9<+kz-ay$7(IR-zd(O!;|JIL{JN4b;SS-x5BB6pQ< zk-N#a%H8GL=x69dbj+`s^ll#kq zZxI9~aLY^Z(DbJOklIO`!%LnBj$5*e<$^Xej;S^pG6j6~BSy2>K(G;railLZ_Pq|2Gq+F~-DVHdXl}nW-%4JGZ z<#MH&a)r`dxl(DNT&1*Bu2xzp*C?%(Yn5o_I;D+rz0y{>L20MlsKh8YDX~g>B~Iy} z#48<@PRh+nXQhkMRk=m!rrfG@S8h{!C_R+~B~eLIl9d#tmy)WaDd|dYB}3_>WGa1? zEai43Tgg#!m3~Tpt~7&nOF&XO)G@bIKy+ zd1bNkg0e(;QCX_Iq%2cjR+cNTC@Yj#m6ghC$|~h`Wwr8#@}}~ZvPOAZS*yIGtW(}q z)+_HR8bf<+Spbaz^=EIjj7m)GPlg=al~xe7#=fRY4V1NtIPaRaH%;s;(NUsruB5)r-_d zYLt43+E~3*ZK7VLHdQZIo2gf*&DAT_7V1@MOZ95Cm3ocZTD?|{RWylQdXpNfwpZiS4r;vGQSGGOtaetrs9n`t)NbmnYIik3y-n?*_EZzqBsE!0QG2PW zYMPp^_Et00K5C}gSItsySF_a|HCOGY_E+yv2dD$pLF!=jPW3Kzi0W5|s(EU@TA&uH zMQX7+Of6AM)#2(0wM;EnE7VH0N*$?It2Jt^TBnXuN2_DhvFbSWZgsqRk2*oUSDmQd zr%qDuS0}3vs8iGj)v4-3>NNFXb-Mb9IzxR_ovA*i&Qc#&XRA-BbJQo*x$0BuJoRaH zzWR*1Kz&wSs6MAIQlD2Bt1qZa)ECvI>PzY}^<{Or`iiVpo zZ>ek4x7D@kJL)?1U3IR5z<1saw>K)vf9$>NfRLb-VhRxc1lsQ#cHQh!trt3Rnn)SuO(>M!as z^;h+{`kQ(}{arn&{-K^y|5Q(_f2n8GztywqKWe@DuX;|!YxEkY@tUBCnxx5^qN$pu zQBBtj&D4C_MOq{6Vl7I$L~E>Fsx{Fr)0%3RYt6JPwC38CS_|zet)+Ig)=IlZYpq?Y zMQhh-ZM5sPw%QF^JMBg-M!QLi)!J)uS_ds&>!@|oGPRqv&RQ3(t9FalO}ka=uHB~f z(0XbKTB4SuC2J{KFD+F|)6%uxT87p~>#JpHw`W?LrP^>!BqOvktz4_nDzz$Yq*krfXti3MHcA_6n+9TQw?NM!}_Lw$Hdt95X zJ)zCfp48@QPigbCr?vUoGui^}S#6>AoVG}NUR$iape@l})Rt;5Y0I>iwdL9?+6wJe zZKd{_wn}?lTdlpJy{WyWt$G>Z_1b&d2JL-qqxONeN&8UStbL?y(LUC; zYM*G^v`@9|+GpAh?Q?CX_Jy`f`%>GjeWmTuzSj0?-)Q@^Z?*l}ciI8%d+nh1gLX*! zQ9G>tq#em+K%2xW9UsZmbRyHv;&Q&9cd?eGwn>f(600r+Kt{y zyVKif589I^&_tRQNbhvw3Lv_HLr4xj_+AbKYq zOz)yYsGkm{c{HCE&_Y^7i|H_0LQCmzyiip}%V`Czq*Zhzt)?}!me$cxbTl19$I@~1 zZaSXcLnqLC=|p-TokZ`alj#F=3Vo1Hr4P|*^kF)kK0;^EN9jzwL^O*&j@N~rpmXSx zbS{00&ZAG$`ScmOfIdqX(&y+R`aE4sU!Y6qi*zY{i7ulr)8+IPx`Mt+SJKz$D*8HI zP2Zqz(zoau`ZisQ7i8AacjAqbT9pe?xWw*{q#F}fPPO8(jVv{yZ~~T{zQ+^pXpKh3ts8? zl^&w{S9Dd^bgJvR zp_{r-zesPSU#v&zm*|c4OZ6uDWqMQna=n>;h2C7hQg5MOrMJ|t)?4Y<=&ki@^=SP% zy^Vgo-d4XsZ>Qg=$LKfdv3h$wPVb<{>mBt@`ptT0y^G#ezeVq+->P@lZ_|6|J@o`V zQBTs7^%T9Ao~ozm>3VNHL+_(!>V5Sr{dPTD&(U-BetLiX4t;<=P#>h%;UCy;L8rkI>8Xa=k*Y)T{K7dbM7o*XnipD1Ed(Mjxw>)9=>D z>-Xpr^n3M*`hEH&{eFG2{(wG3e^8&QKcr97AJ(VqkLWY>NA;QdWBM%paecP_gg!@q zQlG0orO(r!*5~Wb=nM2`^@aL#`Xc>#eX;(6zC?dfU#h>PFVkPvm+P+k6s^!N3R`Um1T{*k^#|5)Fuf1+>G zKh?MEpXodF&-I=97y2&!OMSQgmA*&+THmXGqwmwd)%WY)=?C=h^@I8k`XT*C{jmO% zenkISKdS$tAJc!;kL$nbC-mR-llmX}Dg96VwEmZVM*mwstN)|d>;LNKbQ~HPoWUD{ zAsUh)8;YSCnn4ZSFbvc185bFijEjvZ;}WB>ajDV7xXfs3Ty8Wot}vP#R~jvhs|=3t z7tRhYoE=;^JGgLmaN+FW!r8%vvx5s~2N%u`E}R`)I6Js-c5vbB;KJF#|MO=D`Mx~g zh4X_8=Lb(*I6t^>esJOZ;KKRAh4X_8=LZ+g4+7^0Esd*n0(YvWoY+PKbWV_a{v zHEuB488;d+MtkEXBi4vBIvDXrN28N*v(ee;VstfbF}fMI8r_ZCj2=c$Bf&^Cl8j^{ z#pq?E8fiwl(c8!{`WTr;Un9%7-N-g_j9jCi(ciek7+?%E1{rr6gN?h4A%@==YUCOD zMuAai6dA?FFr&mMHHI4_j54F#s4yyxDr2NkZPXaGMx8Or7;TI(#v0>{yN!E{@x}z> zUSpzhpE1d}-(AaEzWNa}$Hntj{7~70bjqS!~ z#t!3iW2f@mJJ_8Q+9`;2dm{l<630pok)pz(uo$oSDXZ2V*#F@83V z8owCFj9-o8#&5<6<9Fkv@rQBB_|rIT{AHXm{x;4U{}}bgzs5P^KZBT@$(w>HnvyA- zim95^)J)wpOw;t47nzOBi_IwW60@;+soBK5%xr32ZZgn)bC_9TmYT!O5oVcLZdRC;W|cY8tTt=RTC>g^WsWw- zm}AXx=H2Fa^B!}8d9OLqyw99u-fvDeA26qw51J2|Q_X4Sbn{{J5%W=VhB?!G%$#LD zZq7EJFz1+0nsd#k%z5V1=6v%RbAkD+xzK#hTx33PE;e5@#^MLuidC>g9 zJY@c8{$w6DkC;E3N6lZ%W9F~saq~Cxg!#L9()`0bW&UZNHvcmJHqV%6&40{#^I!9v z`JYLAoR9a3KEWsXWS`pYwwHmb@0Xe zI{G^KZuWKdb@6re-Qw%!yVcj-cbl(=uct4;m*`9KCHqo*y?m*@G+(-}w=cuj$Cv5r z>&x=p?#uS&_;P*yeEofQ_y+g}`Ud&#^bPji<@5W7_=fr}%s>}rpbIn5g&FAo-V7v= zo{5RcIXQm(yJli`T2^ja-%R_zQX|MqYa^v*f8NUeoHxJJUy6U1cK%`45*6eZgocar z+sAcoAPN_RrKqhA&*c0OxK&4y=g-QS8s7TD^}!#KhZp7k?|7uY7j|XdKMiKGx{A@& zc~#cminCxakdxWo-!pR{{sfy?e-a%0+f{!-Nm0Rw22$&Pbi6zDdbUt{U>)`O+f=S*gxKe=V$-Je4ex(?fPWp)Rk zmFn9!Be`d0z*5PX{rV(l_smUB@|5He!X~zc9+_LbM-(XEBMUUnBg4PsCS=+LrX+-^ z;{0K4+Mwj5+_XN){=CBBcFOPwPnU*A1^YET##K689?(2I!qdCqQGu34h+zMPURp6M zMDqq+<>YhZVX8UOfMRJqJ2ogFD04FhCBclDxyikfv)SJ!+v+&~oo)RYwdHoMAZRvM z66kkV5U9r~v_UNaqqsRdeVy4aBg5lgR?scb3Is~)n~9$N0BK6emEj*xsR~T83fOWDGa|d`# zVFlU5Q&3c0>n|?L8&+f2ABcz~t0<3{w6e4?q8u*SKps%jstD>u)__HXYrtd?G+^RL z8Zddd2AH~XdnRNgH*oB%uo&0G;qsvRZU(PW1F{C$t-n0CIyg|Gzjkbu<7zp{xA#lV zOiT{BnFNGxVL5Ow@7=~}gw-I-T7`B8hDZy_it;L4*9wUV3^Yd?7_4rX{Vlzvup=nU ztIZ1)gq0g~RwoB@ufn3@yt=Yle|cVwb2oG%%Ze(7)s}=5Xp5}BWA|1ZFu9Y{GeLSK z?0?0**{oy``iq^B3{p4$^=12$?eqM$sDw7Q06*CP!h0HZulK8^tNV&JohpyTv%FMY%6C4JvFjhVxTe> z2-d?wp5Cx>2F&Y*LT*f!5VjarR8dr&S5`W%sIa!Q+!+PA1GAEY)1wvg=)ocbPHROn z|0=D(;4i2xs`cLf0A01{HQf?HxNf!T(VO>-7dz^vg`^pPZf3GowN0g~zy7 z4VMS>3y*-|yv^*Fn`qfHuwZcop3V)3%B%d$(tgMJU3t*Jt|Xw9Q+iMvN8sskH&4KZ z9zmF@DV-bI0|UYl1}hDS0`>M!%SnqgWrxb$5<;bcLNGmAH;MAf!n!iY-|{QG-fI~R zon2g7QCiC$Yn=JCpt7O{Hz~H9j}TiJSBlkfrR_2-;LbLMcowN~j2*bS+is82D^RL4 z-U6~w9qdw=TUX`}FDh_ym&O$at6%}Q3aDA`N1b*yH{?m{#D`_@C}!tz=W#292{W`v zHiK3dIVN+HKn+i=ND?r#l_D%dXzI}RFdZ8-sseK z;mON_{(@TP{$Qo3s|YJ%R8e(lv2({O&$ow}zaVfE42aNk?v2szB!3NNF}pHWWQf~W zY^^BULk^W#aSjgL~pb={G zhQ$RQFj)Z2vo(hGtIDwA4fc6J670i(D9|GTNkC7#;*iF>7VVdt+BZ8bcc4ElGo`QJ z*=Ddyj~K;9a>NL$vOrAlc3D%=p4|yCc@-6xjtQ03)D?%wSZU$un9P%|Ag`<}pLuRU zZFQMd8e28GD|c2Sb9s#LF}42cqS|Vv8f1aQxUkg0qf;RgjI3kxo}0vq8C{Jr=O0#= zSDjZ;i>V|KS%q1aJ+uY{)kRFX$R&;TrYV%DhG3!*=np^4Ya7c1T6v&0bO7co8tTKwNj&UyY^J|Ssw5C7FLaVr;2z?ybq!bSuc#}tyP_DzC@am&$32TFT3i^hfe_b} zRMwR-`@0>4`&gm%?IaUFX`PoB!AduBN zG3Vw$$TJ>UO4fZb~6z{j3GY~4a`<*2$E_J%r3fNX+m*u!G=GPSm zvUvK3jYM0{21@WM*1oJO&o8RB#*jD6#$aucZBcAzVnEul)}@`Zs?x6Bx|`ZHSK$dh zV8*Jtni4A$?nAcy1NGNlSZy6vb3%Wa~8Zm)6cfV*gD_2bQ{LRXp<|pd(=+tXv9*~ z)aKcS#HMOug5`QFN3WDP?73qzCU9L{9amLZ27huQ@d)C*hOc7U2*&vfOGkx=8>A^3 zgQ4olgK&d1uxUsdgd3zOuYv-lAaDx~2%LfgVW;2$T{^VKGO(Jh?b(VR&yv>2vgCoMy#ZAtnHHf!Z*s?n z*n{in%4$nD9M8n%V+zm21Y6-=;exF|AghSO;?udpozb}}uPU{#tO*1wFsmqQiO1yj zT8}*)1Ojf$*_I#^vIk&m@1SOMo+H5{5MofBqlM$M_`r>)z)HlfUB%f0Fw#3->y}?! zU0LogudJvYR#{%emX(?QVFi|U0V`Psu_CMuBQ_s-EQ&!I>#r!qyl6|?cZsvphKl3j z;vX9R-9 zd9bv#3dBj7lOC&CTj(SnQC*3Z#R#^B%=DMll#~`*U1wieI@RR{-IOPSr!421x;(^nee3`_W_VI-5=n`xVi}bcA z7!1|kP7^9~<}_9Wo6bTV%$34RORK6Yv0!j3$Nb~Dv~0=}*VN&0!8R2xLu+!o9z)FO zdbe)W>qa`Wgyp8JK*vb~VaGdzVcRVOVaFc>VaE|GDo_~HjGghio$X!+Di1tYW-{kv zPdCm5+Y@5fHAQuWm40_t@C2D`nAJ0GB>VJ8Lkw6Q@I(8`@GLaw=-Zg9-bOdg1FW*_W=TKoLL<6TywD|Jo*nFx0*%R+U|L{{e%Ix4TM zuE>v3L=yU?`1>UHarOb6z_98{EIT{_d(9URSsjXKtW>Re4VTqLSXD7U#x zw!4rR++Ijb&dyCsNlV0Gd{*C#w8S*L;$ThDks@%Ph$LnK^4DsaVPsH5>5AkUg z#g$GQ!h}}-&~$c1p)zZ*IQr!HlWn6G6(-?fH?YIQ>I;o=cX%4c!0hd9yIYw?6_r(1 zImJ0g&MZ%MQ9)5@Rc*GthvFPY$65^wi*jt(Ad6*9%fD+PWpi2|R+wu5h)b(VVZK1C zdKZngk7wBkax{#P#HtmG{E!q@9|WA$Zk?Uiit*YiP_Y$bl~x5O4cI?4eneh%X-FqT zh_=eeD;pL;B`doXZ@ZgiLyuy?_{!?iVeHwZVY7m1s*6ShEFE5mlixbhI!_t!i&#Hv zYotnwMxdeRx9tck9!KvDI>$2O2)qw+p3V!#yLO7$23CNTfbAq>OCh2utQJIWfZe#f zni^{cZ)k!4)p%=fhGoeq$*V3ZbX}&h&>rVGOe1?ZTB|K9rKP2n(t4@EHH($D+LDJh zH$0*ornF`t)EX?y$`j&_;gK~+oL5^{?NQBB9g7Vb&yyF;Z;!(RE0!s2xqvqwQQ?YH)%m-IX1^@Y_nK9nXCYI;ofxYkaOR$1MW*gR?;GS zPv3LR);7Vp-kAVxVTffyW84vB9~*{LVV&3cJw5N8Ijk{aO`(Dy(-hou?4+Kig_h<-G_1ysz{vzw6*%m$Dh$Zj5n6~OsFa(=R)?Ktge0u12qv}O z3GkO;*UC;~Pif9ua@IjrP;S2_l9-+0PfEk%VOHPZsdc!JE$ze7SuUDAFe|sOpS=Zd zzr~JJ0SSAN-3{laW+(Sd!il=IY_ih?W$gJaTvk_IZLK!Kanu`{BXY@()E_B_y^Ia17EQ-dKxn~udm|vRzueG1@M3|R(v}CmR1qo< zSIvGylpP6UFVGpejvAp~#BhrVkz&PM-61ZZQf*BnYllePS<$V-$`P)Vox`=4GmqLi z3iC1FSwk@xW+p=0%sF>(iXYa%0Ub%01BOaNyTFMHGiazZVh(r8vs>z9 z@Oq^q^2{oZ1aBzdv>sDlNY)VVby9k~mvxytSR0If7U>w@SqlHpB!y0Yg-;^hVwk1> zXCcnr$!P-=2pbKoFt@XBQn9mdFg! zU?{QDSOjZHaDd_AfE8oEZON7_wpCan_d0Y?+adS-&Pi?+!QM~ugyEuWr^YUiC9nkS z?VbiQwwws0^V|-Zx?xVicI68~rZ+ch!K<--<5<-hECAg?RIii7lqmz;Yyrqvb%-1a5jmacQmue|HEkZCOO|| z_NHO&Z{XZ4L0JEIME=NwmZgX=IGLDLQiMaK^Z0yNk_N8t#zz{5ERL0Xo^co&9X1Z# z$VlVRjccfkeJbJfYVgGfM=&PjhD#Fhrc@bTI}1IK2na*JRT)eSd2lh}N$pvR1f(IW zh+u_*JDr;_w1NlW1R*Dr47`xODN87m^Sp- z$10+t0DB`?*SZ1w%^)Yln$X^jVu3hsz-~~nz0bvRV2&P*$uwYBW|10eJBP(qcwdlZ zf`-~a5~8&0-z;@icy{*Qi9gtF><|)f4Y+;E8s(33_tk1Fy)Bt5vLs$FaIWoJ47Q+H zrLGKjTGq!NX(b*fJiU!&Asfv&Ym9>ic6C9StJIi~Hl+G{C#B#$4}Uz&n(FV1w^(y> zGT5b6S>VE7g|kkp2*hB!rVg7)4TI38u#hR3YA=HE8F*R3NgW7V2dvnWs)nMTWI-`z zOFO34-##`j-rv4ctQ(GtjqmJdN7Gi$TE88}(XB91c zXA8{{me{gqm9?f!%IO*OH(ckWIp5o65iDS3#Wh|5V0(Xr$#Ly$hFKxlI4RYNu(d#n zfP+~M=M@B9%gPZ*7?fKsXJu*F>y9|k?ZGhgbe7aiCs%7Gb)5oYr^DSVtFIA=*2!nJzNIO<@Ljyo=zyBmp5!{*B5Ue;M);N{`{g!4APuH zxUeiVR9wJ1ClGDD8tVz;Fu9_pCM3_O@{j^Ymsa30on^t>V)zOXrn+EgR9>|ez-}Vi zf*m<*U^x!tyy(v|+WU0Y6?^<<7ig0|n%+_jv_DN4KOAS`m4HHdQtl`Z!e z8Ep$pV|JuFk=Y@4Dhmm*StlR}DLHZnp%ND1F>z25(nSzQ?jt86w1ft|tcY6BsgY9No0G)!bCwBKNM4pyD%H8~N|D(h7` zcg#5=_OKczYM3>9*SV&EeG#q#UkrkhZXBM?@% zFBAnr?6w~Wgyupo#=7?_d>JT^%97Uji)Op#&LmfZ%_VZ^U+AQU{S8=ye9R^JtoC@eqZOnk8{P5#LpG_P*HC3LR<*?9pKTM29PK{GUZT-p?*w-)Gl>wU?(P z%j@xaqdi{iRP6mDysFN=>Jgq24VApv)B%3zOkfg6IQH1k&X4iONb0%xuW zI58`rw4#QsI?fa8_z6oG(MwoFgig1`?3Gu?X4W#ync`R^v%B?GO4lD;A-na5G?1li z&_E^(X&@7X*p>+*nAQ?EuxzN*pNDU8R4Z}FC;ON;Q`KX-z% zjtQ-ozR`3$fbRxaZpccpCH8y&uE#hsdyaJij*r=)!u+yeUdQF^n9w4aHtBe=ntgqp zeF4JL0(J`tmcbG>Y-M2Dw97tkB2Pi=z5B4X+21A#)`iJCkNs2xJL15;O~3|_W9qX; ze^6MSHv;>cmi;|K`x}Jz{AKILUiA)?0X7$r$*Sv|9J2L>OvLnL@|4hdWRmf0&Ull|-$ z$_!kh;T6TW-&(&G;fQgAV)fc-+?Sl)AYLAXI~9#7DyXZqzOL&=uyY8{HO|+AWw5VK zBkX>M)k)@@#JM4B6<}A&8jPoLC&mip^z;U?LJWzvR*c>R**!CpLc*c>bFeXz?2WhI z%x);bgg6W{RKo~#K~PuLHas8V?8+--t#&u4y%Fw{WM~rt(ojuZad?Y8^2iy&E#PLr zPqu_AW1j&>RMh?n4Nse#*Y+A3#f}JRf8d!QXeWr+z0E!~^b~7*LPTQ~msYc35iG;G z83hGFUuBNMroM;;;mkUu9P1SpcHd(6<4CQy6V&COFWz1l1@*ALuIy3NdY9I^^RiW; zw+W#!5nL=R0ea~C*+Xn@WsF!I6P~Xo78hC!zUbkt5qmB;E@Q9E+izM&G8eulT8mW_ z`v@5>)-2&JA#7_|r|piVEGxT{o9$NtRjfE`Lmux#2NbfTIA_Z%$Ez~lQrz7kuPkI? zV%P5WYhcai5my&l-vaWM5Y~3LM$e2I>@E1QHOaY&s*8qUQpa1-!J!@$1;=4P<{ji- zVT7dK;T=fo8QTF_$W#}QvV+YCN?GCvwJ~`_<(!D~WQnNc|3}%st+$oqT%c$_QsPu9 z)t5df6|W?=+lO@3f1^*fjdC ziSW~xUHOg-zNEN!8W1m^Ea2lhOCK{GO;XM(T2Q&<|}Nt)@4d^I)?ehkA>P@Q~fx zn`3w8=Fm{j9Gj64SFD_u~V!Jx-u|M9v`sbH7W4uRoT-@V6s;A|$ zUfjcsY@e;JB&<~yA#l>9)-BZ`VM$737J?InEqZW`JS?8Ss~8^9SFvi^>a&#Uhf`43 z9h0~-nE>7rDA%1aIoJS$yR-VrSN7?Wfb5~ix3wK*Utg=!1t>ek8qSVH+XHLr2&K(+ zVxE94X?g;pl?q-U;5qU+4jhO#(S55!(E&20!1wXR#TBjn<08KzZB|K`^!GGb3y04ISjr*8)Gc*oYWd7!4FU|vej%fjL$e?AJ=fv}(*R4*9yuq-(_HhfnNYDjc$bZ9iDvR&Lmt7?iR z5IycKKx{b*ORD@pQ~d_w>b8CPdJVAEX?(~;!|D_O>mBghaPDnsrNuAH<+FoXsfq!@ zy%xG!fi#h&d^eEyb~oRv%EiRga*x!_xC|`CJ=*6RDID9D4&FKt@MNd>LqE6oRoh&IPG;RGRHC ze5KENs3)Ym_G1<$0PzKQ;V`UM?0Ux1rOmaCS1DYlKDl*(RXNdVm4oc2nL+gk^q9g^ z=VJ;FXg3Nw1c-dqLol(`0z*>Mg{(FnkxbF0^k!r*7=xmHC|t)QEij8cMIn|D3ra$> zr1b1|R4Ejba55j|0@KJyIGUt!w~oH4M)u+{PZ|nER`Wf9+qc>`F9Qz7BG+}9LOfyQ zKXj;}`?ed-rchK%gxhihg>e=@7JQoAimvZ#D}Vy>$MIcw-dyNI^1Bl!prjsExN$Gb z!37gnfE2!>L7iA2(Hz7QSVk=>K(EESTdh(7I-3H5X|-?c=qACf6^Tvn7w`eYEeu0K zs8^7xA(CAZkB(8?Sm?^Y|JJsnsc&sb8Ci)z(l3>&sX(zh3gp^+l(s^l-U$Q^U!~Si z@KBiqVR46kh227<)ZV+PDFH&4VcebFI!ZJ^BXqW96zlL~)Hy$mUn&xs>6X<-id8qj zyd203!6j(2mXLEH@Kb%; zlI4r#MlN^2k)!-Q|3(AZd|POn={SwDhXXydXrtX=6R7{jiM|fl(~+Wuxw}q484Oki z9DNHia27m#<2YFOmRl*j7C4;P82-7(V{`G_3nV>gT>!7OLQZP}UTb^@t??bS#&^&f z-$85SYtXWMTfVnU%@kiELUU=8Z=bdbxU?0hrA+{rHh%lG@!O}3-#%^p?$TCE7#N!AFe)KdZQ#dMcB5MAUE*tf}kJlEjQ_Is;lG4q&eWimX?GV6Q?!I~5eq zDgfvneEJJB6YTTQ ziQMXTDTlU2s(x6x%4f|A`KW3>+-kLbxP2=Dv0*_@m@(pq+nYTBpKtc&zr3>4@Dp#? zR0HN`_-)aWQe)-s8tLbk z2Uw}JoL#8u=m(6m)E@b+8p%ghiNlMSpXfbRVC_W#@Kmfsf}f@T1j=ig3;Oo8=Gb4~ zR?qiO>owfLe_YP+n8=argulAj|GgXq9pD`5_uL%&y+1y?;EvQ~`^5p#Kgy%7a+tK- z+#4Z?i~yy1MDBbF0R1-skhxhvWZJNP!DBWjXxAgR(DXu;5GH9NXZZqyj5VVyB=OZ; z;*qTmfn8`Zo{Ou4%kx>u-^yG;7k`DA7awpLvHTbOl|&Wb#Kyj4u3=v^8Fl&zq=P>B zDI-4nMK`8=6#pofr??R14g*UT4{#_wK&kh~^MkkZ{j>AgzYb21%JGkcA#g%sK=pz& z7QQ#-z8W*0*gD$3-1qzyvLF=*p=Kv|k1}cpzKZ&=70ba>oM3BOswgoeQTy=2?C|3S z-p!KSj8Kiscq}5k;E@tnks79c`yiZ=v}nLVzy;u^@$=c&!?r73G;3H5)esAKc?`Li zE}{a|Amy|1f6V!PSr7|Rz8U1xDU1+=&qu%T-&_rtzr=p|;}Xkr8#y1wuVTNSkKTg+ zt?|FD{BHyQ+s1#mhX99r76Ly@6!=x7O8#JfhCR@xhXy-Xa=k;5j1FTOPh`i(zmHFF z0$P6;hfMvd*De+!KXGPKzceb5z@O@rRT4XDy=!s4EZl_Zb&HKj`>Mji%`WbzTxF=N zvJJ)}7R_gu7l-?Jq*T_c?LlDGX-s1#j446j#o0%+Zc&h8UVtJw;PITV*TI3qzQ`g2 zuM#kr=?Ps-$1={r5i>Yxl8~gqu~ecMkM)X#Fdm~hi97v+?QDdP) zLun4fSsH`yALT#~Lopq6kIHYH{kea%pGbiH-Y5*nLh?74GZ<15r-dV*O+Gj*1b>TA z?uC-~9?xg^h1|g{MtJLxuU(#YG?Fr0{OALU7)TO=V$=xu&T3B^MZji-Dk0bSEcG}L zsYvb)Dvny?C<5+_o)Dm}>qLZ6Cqyip8N*hoY~T@=^4$_$fGVPVhVU1c`QSpNPd08tQBhjfe>;)Sdq?GSWn@5 zKI_Q)?d1i{D(hSoYpqiSE(1!};^X2p-4ukShVqX*u zZSopsBC!kc3q}E-PRl4tRB>Pp?4TAFyAaXpo%>X9yP;wh(hwK$_U z2nAz?7^rA)+o0)yC>s8CJ--aq50r=9_z?OIjk*W)58{LpCwdz7Ml6kcpO;X z0?E9uz3P=6$E=x|*i0GNix$o%Y5=ES3?eO`c$I>rR#a7jFD%+l*?dw$;hQ7dD!Y85 z;F=9cAZAcwqW#%en%P*5Qa31w)grs?_h2pF?cRf$SegHP}{e>iqJlvwy{=;!<%7^PbXp}5UR%V`3GLwX=ETTTbXPX9+~FXlfC8P0Aok*FZHVM zKCUHiR$q+)4+sAx@0&N|1w#we-4X=#7%MnSF9pzJ#*lw|cu({nr|`v{%N$ig*q8PP z_Q^)oKBRHPMnx3&(F#e`pRC+cu)27G)-U1pNEWsy?%|S#{obX-mZ36vI5`XEx`6i`B=}(=#*dVyt#}~ zHtbUs;o@7Fx*3C9rkuosvsc0+AN9gbhg|HR>7J60aP`#SbKX*Sc69(JX~4>+6l04w znl)D71EJVdl4Y9XhqF%{9>HAYAUV0pKgVXpL4inzsTB+<%gs-M>Wz2J6fh- z*-;bn1k9cOEa;}K6#M?w9|@7Po$Vi=XZ-wALNERqPTbS*~DhH&n>fQTda9!Za$WH;+OY zrahVoIeSwvbYL!x=1s=XYBsG!)Mlp|jD7`csSw^m!Yzdx$>4%@=3}@|n}MBxfz>E; z*D6%Fm%GDQG*GjY_N`{(zEjx_DdN$jML6ofwhFZwRsmuiP_Q?hh6lSbxX%Ey8087( z;-F|No=^_893XgVdMOfCM{*JU_%qG!hUPiWX8rZY0AQp z%~`*{x1C29A7mn+W?h{kG#XXZ`X{7MY;%@1=_>G=S^PQSpFTU>mEhDrZKBL#hWC+D4tW(9&? z5#=lEmF1fL6P)m@fO;`3+hoG;^Ktt)j=tbg0Rxi?>I(8=S^Rs&7OE=5Q2Y^|fByab zYvFjS=k`i{(l6ScRVPB6v(C9^$buMx>bYMfJzXzxI|G)6nJsVU^^=E)4T*Gqy;Ap! zv3$S1^HP57iH1R^ck}(rOB}z4Te?=>0)4@W{P(i;g)zQ^3+Q*Q6q!jIQY_NGtD(G` zV@}2kIDD82S)dApP;+d}z~;If(qJFjKri77eE8U5;gp@76wHM!NDEl*7vOCd^+EzU z{VO^8uHIGP$S#6Dti{xmT9kOV;`nUd7A!Qg9ZCly%eCm>C??-wL&4RM-bp#naH5q5 zhBPLYJP?yrzMC8Y&N~e~TvgN-p~O;xM8O3dOHXPRUUA$uU13yx;Zm7K2vIh;MT$-U zS&GINx7koU59f&IP@@4^4`qT}PGuOO27~L8&vF;wdl>#4EAEj3OxF{P_zaU+Vd`OfVfUG>-j zp%iD_VwjqoDuI2hi7g?BmGuw4@C$D*ZdiA;i7aHWKCc9g1eG~CY1claLrx3_KM1dZf?6-;C&Gl?TxHG zU8XcS(~oj{Re0r_B~rebd*$G~952(&-e>3_PpvJ*w$K2Jju{jUPd^iZ38-+n<=+ycj=h&@_lNB~& zkZ&IL2uQ6$q~fSWpw;G>G@QIhAz6V?9}&+l{AW+|^0(2B;UzlaVUP3rt86Q7-_nb; z&$fxVVP)MV_!i_^sffTTyoyl_MX83pI8{3{%F%)&#Rdc zzO>0p3hPGwDY6V>wtbwj!&vH8u$u(&VPz^AHT7nldOvHRMtbiPHv&L4inuqe?n_>lu-$y>s81rOq%{#%ED{LCz zaNxh!@?U9e`K@O-79z46@8@GY{|Ju|R^oY@>_Wa} z5t&;L{5O|89GMmST>)OW!(3_FBfGE)w7~jZLZ4$ne{p{^M;X?i2kmFM!Cs2FlDUlq zd%Oa+Z9)E)pI@+RzIaY3S3lViU?=((5**WtS8_EbHtF&ule_so&o$0ZJaph7Z8g3> zuK#+Re?8I5F@#r-B4`C$mG}}iKTxs0fBFhYM|Ap!0{9BnKQ8{j%1hmjT0f|G!9{KU zmQDtnijLuX`h9k;3>BoqT0&G{d%wnYg9=Hnsz0exC!>H(MghExs*&`Jm?!NY9$uaA zAL?6B{#zpR0EOXsfM>im*~578xrecnX#IE_ab|-LE=^}IRpCx5VJ{W-U-OZdEWuNP z#S+SwLs!)JWwT(27Zy>)Wq3?SM30EF5?GjM!!;D+#vah^^Wr9gl+?nJjT_s(Lm@a- zjR2+H-U2c?;$ng^n@e}CcCz#?_-%wd|z@>z$DmKva zfVFikuc%vT?AGmlR;Bh|KINQq5G5LtYirP+ui*#_Nb zg+$h9bW6rUAOl_PUYF9j*R9f~J)ONZC83m95@m;UC=4kfx!PQZzGucX&QHQ633>U$`pqB>Z8YiL+( z5*w^pZQs6eG_WdT0CU$HdLWdxGGng69Fa<^IU@O{v!h%4*-=U(nsI4K1DKlAK(jV2 zpuV#XgwWyzO6#=)EUQnjkqF`6LV>A9fjRph@5h0wN(enY$bA)oYP%GpMF2ZrTc!Y%39!nKQ8A-2jz4} zadcfOrm^X7RtgLX^x$@(>tm?@C|{f**55Lt`v)FKDEsR9^Xl^WlkCREy*2rp+rT(H z1e*+Y_&z|w*d%rk9}~F7tu?rxzJ^^r5{&XV!Bf9piJ&%Q7AsnG1lis&XXJ(=FqQ_q zI9dqsdPw}mRY@<;>-s*dAaJ4RO9L%pw0qK%I9(JI8T(bSIfM_SN zJxPT%Rzd5ieUiv=`y`Q9xFljrv&H1nZ5Rshm5xVJcp>1T7g&E5EhO2{lEPTVnfR7@ z1|b7q4`UR9k5TqA;M7(#8{OVOs77Tx7Ly^Z+G{W#^va?H3$g@h!Z2_2Vfbn6{AiqL z>}8VKa+&SFKo+6`A=KyD<%hb>MKYA(3K$qs?O&m<{eh`%F}Tvhw3~M)f?>M&N=-mT%S^@NQC%<+2-Sj- zINWMP!fhIxrTbdx!_=lwI&4P3afUNd^71N?xts+zslHSn7B4s2hKZ0+Y~BtbDRe%< z%{DKMe=HKx%Fa3QBnJYYNOQvu6E@JFa`-CYh`mnxnrwJgS|QWNf(eJV$r=Y0NmE>0ogKhyV4=ZyvPwhfal7I*?il+++tZ$MafVLd(qGT99hVaY9=zI zT5ss6W`TnppND-%Zp0&K%3Nu;lU!or#pzQMNHH}eaY=t1s8V7W z8)53bf?~CNM5QGu6k#kpY#oxfU>mcmZjx4Q(y^s0v2gxcW*HhWEI@gn-t16MUvLo2 zoyDbU7s~4PZzeEQ(?WV)VqlJKkw2xoPN@Xd?KQrvWV>xEEBUnKmkpgKr$;k4fhcDK zU4O49`q`9f>e@Hns^Y1|0N1Q8TrD;^^hj?&V8?foa(;G-4HU5I%BO&zlR`%Yp;H;I zdqh`drL+RPX??82nbBn$>g7uQj{~^M;N^^jz`0XLRF&0ofc}8gIT%!P(E!WG;ziIC z7Meu?qTXClmE?C6Sjq&&T8vEdII106|!Ii!CQypIWr5f5>g9c^Eb@B?B%0C1k&6z+)i(|kVe-#|eB!;!g zM-9`;UKw5aE5HKcEbwN*tvyHPQm6u?0Of?u$@bwIE@Ck&oZxaTHos~_{B4oQlks|g zdwH}%Ltmca-aT8*PZ*MkCl0pH&pfcj^Sis~IxHQsxW1z4A;Lis*>x6@$+Br^j zhV&=wr^2JMWn)HSX+!mvV*^`w+CD#FIRnvP^}_7NYyuXC@_)WBty&W$gkh=DNSkXQ zgc#>91C&W}&LSlZ@{R;q3mb)~YYQny7)BR|285CiBXP3GItb$W_n1m;2f0lng_00B zPzbN`jXK@2Rhre0eQVA$!D5XgbiZDIuZ^JwZcU+nqgv_pfuYb8O(hAC&0iRcsu0;J z$U6Yo5(PoYh>)wV{ZLSYYr)+uup|f~j<@@)P+}_8Vd)Um1d9=-EG2bNZiKtCA(+bL z^855!+Yn|_9&rb29{JPW^F|7lFj$vO^fpz9zS=*+NzPG<$7vyYca2=(L(UVU$c z&#zj6`P<5=tmEtTa7Zr3+`1D}th1-SEUs~`X-LFLnspu1hJehr`hamC(kZDY<5icI zu|ZbK-=4-ta@*)U)BPN%qq&B-qq#x}w9qsLim!`-FwT1v;OjxY681ycAW4W5nJ%{zcw=4eLbqnPC$*VYpot~h zE*D7*>_3f11$ka_IVAY*1eZFQ;Wo?^#~tS)rGe0I=AmXC+w^iuU3U_Q4l*)9U%2Fb zBF=5EcsVFjILWj4UYivSb5mTM`sF4;3N&lc?`k3St64=sI2s?N&05nV&5BNmu%RBi zQOodI@V47fL;(v`Qoh$Wn^M>CSzBW1w&xhbmNMx`=0Y7&aJJ}&W@krj9@-&k9I_T% zh%^j`C=37^C_l1PwDdORgE?)^1c%vN$zgGhR0*!@tB}o!2z09-1pTD7ed`EApL(t( zg!%6?E*tPuAqKFbZ0-Yr)h+HiZoTpr1AzZmiy$oo744dpwYBG-)ZCCRQC$GGxpEd& zBlN7%aasFu>>tKa2dH1#7yWMSiyivl@CY|K)PB3+84GOIP0_Rwk@G>6t%y?bRojBx z!#{a1Dq(jc-n)^~2sFaJ6D~x7nG}{KrhFl!Bf7Ck7xF(_w6J$L*;Klw!ob;~YbQJ^ z5sJL}YZVvy=_UQ>Ln3!Uj6H#Mj&(msp{Q_4Zm+S7})+zu; z6f$xsy@dB|)p>;Z0vr%`XtEp^a7xx&aYVQWd?TCj+R$dadTW7a=PDpEYA$n8v=afm zIY*UGzLN%(Z6dU**FWAcUCd}n6+Tm^4usMiL;3VkHYOiqL__c5NLuawuRhr}=P9gH z+-ZC?yEw$H2AEmTKOG;;_W#5?XY={V)hBG)$Q&Tx91u?o&Tzv(4QY34Oj6N8Ptw?| z79#F3yk5<5l+8{NH-bN|?9h1VI1)xu@Z9tWetGt1mz$V+{<$Ik5VS+fN$7@*Q;`ly zH}>_Dx(*t`cB4cuYXp%}j#($l_K{D~CNM)hF}Z*8C#SzfCXs{VdJKT(}y!kN}%Cc zeQdCu?aLi_PR#7&>htV;|8iEY`5BXt!(L|>C`RrGDRxIm+2bf!s=%>lr^5S#q0;4j z)Z_n~9bNK(I>&}CR3_`_Xa_^Ktt=oWGE-AZGr6;{%#iY9K(71q`y@;lN0CveL-h+S zDSy2Gc0y#ML~#wzqV$Zpj1!#V<>9WvY>XCCj&^U9S3fJl9BTZU* z(k@+7zMt7DmQzANHstih6!+AKtd6M>!v);8CWk!r^Y&0?x`@@K^UN~#&Df(3?=<6 zCs;pxX5~>nY{Rpt@%Uyms1d9i$p|WM zJ-KWXu+xnLrKA?2tP!!!7DQqy(25NPCqhDA>kVx8IIedqK4q`tpSZj@)u~Hjo!$gf zl@vzS58k@6zIj>FP0TZ+IRf(RqUXdjuAIz*z3zn5=6rm$T;9&ya z|2CDoXa))?D`teG+n3{uyNrJNySIdnE zu&qeZJ^ENX!U1p>K;B2_+czv=;Ms-1$8(Y5H!aoV?TE;7-UDGq#WeI`XwGy z^ilwoBLoiJ;6=-v)5Q8r%9;Fv7dnztix5)jV}&(5-E%WAP z#5zeT&qhtQ3Sh-H@$rNYw*_|s3L(kCt`OOh+oaryaX7Jed>nfD>n{<4bzmja2h$f- z1B8>>onzU-vPH7Kg@s0cZ28BZ>z@)1IIWA6zQpMCOLv%k!i?yJs zAY5|_>C6dU4BJ8xq2n__dRuH{>)JPl&RZ`f%D#;l zE>tJ-;9l_g_4Y1_>guD4Z>jHp#Oo%2p0%gFHbRz7FsbpVr>I zWGv{leu9@Y748#m({Um(Eb=y!Qn2YeosAp(GfncOb}EaFR1~(DE~d>q6a_xHsiqag zhPfWTdF^@tx&lB8?-|C`n%zLH?WtM|Y4ybGg`6V8x=vQ_BbKxSd%3|GcdXCj(FP~t zu`3GdZW|^YC*jN>3$>)kOO-5Y?HFQ-ic!YV4wIpU@{+H9C>wM$N;3>`N;*1wpPfCCTEgO#_8= zkOgNee4$~%@(>r#xnB2V{`>nqtg@RUACW2Y{Je*qURFa24EIS>LKt~B_X01>TTvK# zi$~^$=mh`rZ)+G^Y$!17+#bqDi4Nogo#21iT2*rLfllym*7umLVwc@0$&EM_`ah#Q z+5G2un%|YLWg-G#P}HTLMY9*+&v@xh545$}JPOm`Sl0}WMr3fXBtv2KEyq17&v9Ve zv=ujAlG7`9W3&dxXble08XBUNCrof796bs29KbtggSeBqP|Y{?$J2kBN|DqD4RwI- z!oP4eWebiCC41M_)t{hCeT?7u#2wt01J{pxn0|(DjPAns!&7y(p`flYPr}%fFa0zo z-R@{I^PAMh?wOX}Afmu@RTDJI8MADiim56vSEBH^;PVim9dx#z=0A|IWw zT+JczWW+R)FGx&=e7jfIFOUiB#iZl2!J1+*-(V9V<735Gap=aqsIJ}tOSw{!P!kNi z!|geK?uWfeMFQrzFR2(8q}5f zM3GH|gS`}B50o~`HohHbGxb(NMVN$27F$WtvMZ|3&_zKqgfL%c(LLu41@!sTz)|{@ ze?$p=7DcnW8daZ4lP4W<=Oo@8G&3a){YVG65*3!M`7SiOvA1}nQ#4>SV!?o;#?Ush zhZbI{E29pT)zDB&8|tg4p`l(H8Y<-DBcf`Vz}WGj+XPJTZ;F~Ys| zdc=;C66$atr*eCjx55Lbw-BP+TcFMVtar4Gd`NQ&^iyacNz zB|OJ`q{w}jE9M-+n|dFrNx-KzKh!Iaj(L%G&?u6e+(_^$MT)jLJ{1@9nHJ{q_J{`_ zk`X|gNRO)?)Hc#l+^>Ck3ja`p6buB!rNbLK0{vW_9;ND3~c zC3U+FDh6?coJ#^?=7FfsA6qIv;mdY{{oF7oBM z*jT2K>-*w)H7M8tlgQ&^-_<-N_cdXnkcbklpGGKL>*p07iK$I;p8-wY^YVKtu^erY zXt+x`;ll2ZiK5mV!RDr&2GO``?(Rq@g$Wy1oZ&#; zp`E01S0XhV7MqRhW&0fad1kqF00zInoyyDGYMwm4*o@_ZT5CObGZG0U>5))_+9Tnf zg*wWlOnyL-xRw|?HR%$5P$e?U20`>~l%&2>gFLwqoE&7`>-qvW6O}VUB~i$j5?1L` zCMk_`6W)I3!efB*YJP~=%9;4XZ|fDViq9P9b_Ei1RhcqR(pe<)exjBk0zKC@FtzK6 z_|#h(I9{jrJqp)5Ryr)}@S1)Et-ey#asVx-h@xPy`(ioY)VI(>swUxjSNR~=4c?nT zU+uHntrD{Q_!$QPiiI(NLh%rS1TGJgHa$!4z>>l2BW<=}5heONeC|23_J+dZ&%hw7@$_sigwz4)YT#t3VP1 zo8%2Ytr+0O7?WSXT=CUkTSgFd$B#eq1K7n=#DkXFy3k<&#I4$rwAhHYwQ zQrxmFDziCrf$M3}-7!35$nQa1mMtvw4<=$NbODr9L4EXtFqB{@|Jlg z00-7>os#*n#TK@%N^kLkNz5iEq9^vbJm!h2j(K8E8_zhejl3hbJx|W>jI%MXcB#3mpP-j3VBKuC3E8fe1dfog=DNz+D_wu=R{O~RlMzk z2!XbbIhgE@)ki{H-fP#PhNYWye3D7^8@_ol|IslVL1(A%lSQ{mBDD!|BDkt|{wHn& znDaoqo+qzSH=IYxBYOGae71jtJ)v#}rTmRzj;+H?(JM12B+~5bUXKYDx$dH5Uy{wd z`blWXPB>YJTTm%)sBFV zI<%kU1*MQRwu~QzVxM%%7QL(icSS|7Vv(oRd_6;z zIlAbf()5N_ZWctx;5YPDhSBv7LmGEh$^93+=E68O)1~?1X|X>l$x@DSk^^lN`t}+< zife#WCQ;UkxbRTaCGi1SVf*48j$zT5Km#93!LTCN*jtrn^oT+`z$FXbS+ z2XF8`hmDIh1$~-`j715Bk+)H~3i&!wT?#&|E|E4W?!qxFut?hxI(8>P-M%Ijsa*?P zaO}FpZc&>V1!05QS3-5Qj|NkltBDqoETy2!r15`XtWPhF8(A-sW%xe`3}cOwS|~QG z*%V(*O}qdP@S(^ptkF&jAF?>?>Md1+R674qIk+dj4=S4b@l#Vv4O4cPLXkVnH2g&_ zE&|8+6E19g-=PclvFeug9by{OuvRm{WZA7TId;Us%$#TzD4%4eIX4-YWK*!7jz-?E44$ziu8>JiKFsVcH|6>MR#1!dXWUrX z_eMb1*trGDAZm6~KWW3r@;|j=OvAROvh3EFF-@uJ*UgLVJe3mQgT%*L&G1iSvD^tg&xXa#O6!NDE3<39S64G?k3`Wz zsRU;oy%iTk2NE_lpo~hvSd13g(bkx>cNU6i4%Vk>*6BV32A5C5oft=yk?kW6V{CE=7OUS1@b!pBiII%N5|N} zj%zpn?C-|NB=g#3g3E;Ci?dJre_rBA#$X5zc2XK|kWf5``be9bqc`WGlDwo4W+-he zXe478T*~pu&AyH<_H&&AVh{V2(kYM=3FH2M1p)CTT&+X2mQ zZ_j!txs%MNbFTl3PSI!24hzOXSExVGdtk!K%hcBlx1|7T7mRgwh_0fH1AeXJ00B>7 z5EmDpO6dvI_woWy7KTw{>?>4um$D4@Mmb>@ot(sEPiiZY{uoQ}@NwlXt`idMnBR zGqPR5NcSe(1$MUC(Od&Gq=nX~;|NWUQoEu=zN9Wl8SArhKBHncq=E z4L+!o!4km-((|rmlUZnVW{03X>Di$XfsVP@?UoQz!p=|e#I;OXtcjTa-atHfu)+22 z57?At`&}qeIpE2}{i&@@Zxp-6q(N;F) zg(s|H`{sh-Sg3UlAvU!B*mbymz&k9O+>ySr&RjZ~4W5&m;~9!!!kEi&U)Rw{h>4Tg z9r1iy$l=&!?R;=1tL~pNF>2886=WrS^IcNS1_e8Yv>-;gNrvfS^3<-FuoH8an$m0V zYNU}}kvJW#r*_dc;wU|&mH~ZllO+C6rAWqDS8zvGSs7_l3zUe!TE9_y>e#UoLR}_n zsL2FkJtktakuDyo!8izIWAhS?;FvPlqs6sD6YZ3`y~gt}&Wq84ia{q+Rz1*D!GRV# z_9}7;hSH^7O_h)$SC4p_MSPyqJi&$;Xom%pJZXeVY{&gdiuL%7ZC@%V%Udq^indA_ zByl7^$Rd&^vWTQX&JiAzAmPaZ6yikrMcRCU`^O$R4n{+Vt_Wv`TNA;wq``0`>D zjI@zC;KSlO*5RbAJJRyy8&2i=zClyb4)v8Y5?9v zcw?94B{Xi;EyS?%r($jtsZlW#&BIu@1iRReNh63kP<2K+R+$;~%;)@TPN7+4K>>X)Zr-Z&A1l{#=I0IYJqm zao*FHTcl4`g2V=E_?f6dnTn7dYLK*B19FT6<5GfNA9$#-J!d7ClXBoZouRlb>;>a{ z{uwj?`hM`hLfnqWlH*c-wG&aBPwEPXEPUhKX;NBf*yFQ!unpT@ZuGi)%3$!Tc2Vsq z&0ZYw`PSXR;bo@Wi`m=tYt24T1NpRlvXAHGS9HQSiJF_dM#$}sQToQtlO}`p&71}6 z+Bl;Ox(=gp>(-?DLY&lv)E&tv;SY()%OqPVtR}9-7 zyFhYzz*wFfpq@}e&bUs|^sL1M6+0!SC|q+MtHK=@6C~F79kgkg@N7+qERFS87Z&(b zz%OT0BwP|ONjkik40eWV>n0-O?fb9yc2VC=5!uvD(x!6^2aP9mxjLSr@QL>?Z+20q zXgU|1qV|eBEtl~Ub{13vb9;~|xj_&zT^3qX>yV;~Y?PtgMDB#+mCg z&K0*nT?z@qqcKvwKunpV=jgLF;7xko6gbB*bhn=4Q16v?u$!g>J-)cO znw`%tX6MKIpOT=*qCen2zQY|^ru-5$87Jz$Ve5g0Y>~45IfFsR)F0}A;*qfBKc=ZlZS@} z(DRSAkQ>G)A`#~(nkm_0+XvreZrIue?@Av=alGa8{L(fIwOpG}L`t1IKJ4BBXJxo| ze5%-X<<79wB&BSbne<+JDY7X&{1P`)`KF;|)tGOrQXr9t}-$g^;x{ zaKwCped}ZSqzpw(sQm@EjokfrEK6xg+6))I^rfe07Nh7;K&K9Pt(csRdpPDqq4d(n zrB~Ryct0NvuI!~jIzr#eRHEC|;er5-x>j}!cA87J1t`aUU9wAnRjgsv^Wa_b04oCB%l0i4DFKoSr4GG`kimdg0-U{)Hk0ReZ(`c-@6 z5ZMcwBP1!U(3b#rSQc^R!CB33duP~H6u{Y^z(5&-^XupJ_qHvPg1IY6E{KlfkAQP9 zndC_rH(2wc{6Nj)=$&vS?Q;1XyLyXC>C?o~D8L7HWBwFvm{w#OBE*(IZWpPi`B~S3 zV62-x`>QhoLmcl|IKa+>=_R6KyyAdlSFF;5rh@`W#zb-%(oZ33C=701`}^-K4MvEU z-;L?*3coSEUEkN}90(wiSJ{MQ*aQNq!fIg?In$TH(s)@iSAunw0cLE3k-aK0j+dJ_ zn%+=7vB{BXh&)iCV!L56rg>l(5{f0{o~et0NE}rl3z-L*EfEY_)^Uev5xVSS?8!WC zkWoINIWS@O@Pn!Db{E$21Ed3Df0DKZV23108Io_qJ+Kz4z_NiNYg=jS``AjtF#5|Q zokYHd)XO3|5si=}FVU3ckjrqe-l8e+P-3MG6dxJF$W+BjX(3r15MH}=!&){9Hy3}v z;qL1@6}onDkL)nWuvG!S;1i9CClA^bBM)mAsd3p1uNQTt-Xq%P<~*{NxNX3z`N36! zVbdjqQR5_pQRAe9LHi>Fr0CVK2NLR_ArYKLI2bFiOKV5hv=PqmQbN zktb?`(bGUODmE@D3o8u=y3bsc#xQEm0AMCXNg2hn z+H82A!gT95C~uA?9v0yMK~-!jGb%o8bktWWEM3oAXeiw{HIO1I#9=qGk+U;)UM!am zGH=uvDcrX#f{z;`Aq^TM;N5tdwV~ppfx*aBhz+wX%@-s`(u_f{u?ZE+8Cm{rql(n5 z*#)jH%ySfCX)1Ctn4y0e&b4(+hPx8OhGN(o37vD4psvlj0$(gQa!o2O0vV(8Z#3u4 zw}tPsTqvWrC*@dEjpN1+et8sk6^){kD~!ejKT$H_VY*XMT(>h2fjb2UD6Wecpzdy1 zpB7xrl$rmz$18kBXdfMU2k9>GUY9^64B>9!=pfxd2k8bnNHf`#h>}mq&$=^GM(>kBIhpM6}N%qJ16_oyenT8`pO!(+Kd+CTA&tqBa0x zlsEPME8g82%`B2)j&-z436>1#25Y%*JHf<~#BL=FPQw&~ATi+u3N~9X zpGrb8ae~-OJ8VD;^2S+zg$8=mOU!(u(%4fbctWQZZ$lgE_9kVKNlCT4;A17b8eO@E zQ4V5^#e~p*=ZNgiVadhK#%Ia$=617iIf`-o+}+{A5S)MMFyNY7&HeOQre?BGFeE+w z1rG)G0o(ZoNL$@5So+9W|^Y6ObO;ZS>2${6W6MbfwrpY4V;Q3`-vj#hy7 zOlbk$zV>DJ*SFR4{nL7Fi>ZHH&Q6YIM{;2L>SF)*c=E2Nw&{OQYcsO<$7dHD7+0gW zZ%#5w3h`F_>>L{;c-${MIS>gJVT4;;9(S(?1i1O&1MECU0T)NZ`sLg5`J`3cp2J@> z9jHT{-3>&6S>}p^JYiP7nu`{$`3OOUW2D8!)xqWYERq5+rpecVLgx=XSg}WT{Gv3c0jen4`?m@AI}fo z&iBvGXa71lJqni~B#Mbk_(+uZTQ~OkK!h_GWxTrlaI}9JZj+0IB&70ZHGt1fF2`wd zv|d^bH5S;XOoipN6*LJs{4hKGcySe;)s@s4A?jmrk~2Fw9A;9*qm+vFLg*23MkK0$ zn{X$BV3KfletdG6Pcn;;Mu~D7o41ft-+BISj>$hc5*Umn8oS1ENwXB{2QGOMGsTs@Ip&;LF?v0M8TDNg&+@)m51g`)Pt zkpu0H5XHPwBAQpw4K=oCrdF`VcAwDeSaM{5e^x}T-4(Jq>UE@hnmk+bci^Kgh z>`=>N*92LHLHlDaciMGdk;3kHM?B8!8^fuqHS5OB*~7dQ zLa(&IE@w~Cdd<#f?}H2jTX=(7Snh|Hss=x6QOlsX_+xO`E|bu>VaAB4HCebD+dn>T`PZgwK*6<%NSGMEG+=WS(0a9y5~imS-|nr(ve~3h3NFOB&V1TMAxR5QH%{~5B0(JHx7S@K82!?8VzCOH za969TAbW+dAz#=Fnlr4xQFH+ZaxX6TFR#Mn(}WjNFR2i+wDV6;vQtOUBtx(i{1kKH z*}o>utC4dN7s}YM3NdR{;3<=8l)PZ&)aH@!ExKa{6hZAW~;|Cn6 zlm;B5V#;h?IaP)(lO=Hzne0a^wW!4PAi4hyo;%x55Xgf(lwioCSJ>(C;6|k(+_#sP zdO23WQwxu@h`7f#3J>hW=c#eFF!t0y2!hcU-z)!5EWV4g1Kh&jH%jb(l#;Wv;$4Pb zoaL!-iN6qfLBcDLagLCs;q(@In)5yfctA@jNtWTAsFUA6p|jXA7`cEitg+-4 z$x+9Rl4Hnq%8{m;rpU4*^3rw<8mL~xpeGqKjhd+eXV+3Wo?H%=m#H8YH#f_t7u4U) z(;7F1ZnDvHye?NfZeP}ScbUrDif^<-;mh*A32>yx_2W&QS&HpB8qY>@ZFHo+M!mX)$%0;_Dd5vYaWoq=KKD?XBWr>VklPOom;wUH`@yIOnx=lj0lxWV;q z<)CTXT`xlT&Y4|HT@h*O-9F@sV=vhjcOs<#>&GP;U(U6$t1u)9JHD`~cl%sdNkk5K zw|LByWtRCJ3A?dVaRy?S>`KM8f-E>Y#ulP1ns!!O1G|)XL#kxyXWSY>ke$t?2I>ul zmL4{87db#V2aGWn5GItZRKzgTa{$(&G(V+P*9xYaYsJQgA;&R^(6KphmXEhcZ5|g? zICu1h$IhHCl!wLNP0et8P_l>{8TI+~SA+b3nawvpZg8y5SH-j02_AaDiUuymXnE^U zu5H$QC@?G&^Y44k!Pl6aeS5%016+CebFRnrh;MVVw|%t9W{E@m3-*}oX+`Dj`V`U4 z(-yT9`C|uxEBn`nmz6DuM-bJ^X8uLEa%1=0T~5ks@n-L4@x*rxQ{3JyQ^cSVSU&$) zwf5BEFI(qsDY!T->m76DarP7oMwPBjDd8U1lIyE_M7E}H^KJdt-QuN9m<#{r1q0f; zL)MsIp0UGZ*-J+=_&BDZto9Zg%LuU^3?osGc?*2ioG>m7;ckgU!J^Q)xX@grhWUYj zfvu-B$n}x>RLRlG`Y#38eu|aq-U#c!5;fjqgY#Z{xEppqtPVBM6lqXX1lTC3Vm_oI zJ|Ny;8AaP*7rcQ^0p_ftjM(P z*tEWzC>!esIgEf4siyhme}QEgT?GT9B0ObS zLfe%sg<&H3g*rAe5_cO~;g~cwrSFLQe=|CY85&+CbjD|d-3BOZ!A7X)U+is z>`qgy3{&P>=sWUlWVQ@7Wx7V2G~dS2o3PQM8Rs5J8}MkriVdu{68`RNuTUn8+Ngc* z7->S}q%CW}iB_``r{epm39Eo?zYX=q>(HTn4e4&-j27y6Cau5lWYaJ3s6H!c%B&l8 zVADpN%EDyL%0Dn=M;O_$CkG>Tgn-2p7H&p`U&5-3JPh|{g_eCn-ass?5?SlPmamjS{QZ}*Ra+y z++@u);&kn8EQ1Ej{=$9iF1*-(kBM)an*oj=r}ch7h*;PzflMvTJ+j^>DRGTQbi2f`P$ zxMy~xT%szQ#a;DAxDZ6E8=}C}`Finn?{7D2(8BQ)c&B4Ygv~WYRK0Ow(`oB`DutJK zo#4P{6v{d5;^pNTliBLUF?Qa9(eg2db1tyLpKWvXf>qI~Ut78~ZcwoZ3jd?r@RX!8 z?9<}ryJRZzDw2^{>f4uWC3FSa85V%2g`L4EN=b~1EncVS3r%QG@7%R6KG4%Uq+>*b zt3T@gbWJxjE*OijI(k##h>usoV>dlqgyLw%!W9lOAS(eU2-^x8I(mxNQFcTa z4gQ^2+$?MsQ$1*jz*8Ir&GH34pGc7>)+G5ZuINyLk0LCjU9k?6Rl>Pd#g;ah{gi1@ z;YJ=P)QDLnbnLIBgTyuHjFz{CxaB2{9!z?#7ns5|3`VXZuoCvdr;OZ%6&=s!0n1ld zcnVg+0S5c&)%Diy3Tz?SIPZThpqMnS zjn+FxRL;8#I} zq(e6s@o&*-kbB!q4rP~#u_S+!lw!cM-7LQPX5hCv*bi#-cK@4R1PVK473(G}42PFu)xnhCxDQm|bh-YAg zXZbY*!6&v9V#(PDTmERRk_5V2Vb_k^HzgojSGkIvcbKh%R6XW~Kwj$8+HNkF@K2lN z7Dtb|*s;0n8MhCQ6x+bBU~_*F!Yc)QB&>s?RCxchuuke5c1#JgdL5bWDji28aqU6! z0h|-%#S;TO_QvGIZ3qLt*zAxGS0oH2GI40lOru}gulf4v1)E!}7!QBp?9g)`!&`sU z?s7P<-{E9vL*1C8f%yz;qlCQ?!4vC_Pet5p-n(TJclFk`sQ{Sgr~5P9xXWEI!H=0q zK7tU&)hjNOqe*`~kClrs92 zB3!#}qPmOJl|C?ke*k%0>%vdCop=xN(py1-u`9XSkWku1nXytAVtlhr|!TC?R+rzW&Bn=;E(8a>}+Dm$i8I+bZM zrAnSis}gf+-5FoWP#MhInd<`auF5nB^pw;lGZUpL8U;~8AA;>~y>_-UXA=9`M0CW8 zx8`bN;fmZ1?x{OJb&>Y;@DkS~U{rQ^S-tG*+5S^0ss_ zgL|j%P8F7$gi=Q-l-Q#R)OV>02T#2~=u~-uT`VV|#EufK+LC9^Y0ICXqZGjPk@B6p zM*&062&COyq#s!<=>Beo!qiEz>yF5P>)X8Npg>VQG7S_YoQ1cmlOPEnSva96oJf|^ z?puNsd}Jwvq7)(n6$xkISy+-Z5|db_nE>3aGW&gYUX$QSZ3$Uq)DYYIwY@o|1UKqafXSJVT}WAWfqU689d4Wk@6P_= z;nn&6A@0k!V+|g4YI&GZ;kEhab)Bm8#QXcz6cGmj){nO%YRh0RP&(A9*pxUC8;N~v zXcKCg>185rlQ!a&duEuzm(7BqIVCG)Td6WNrZag8cZm~m5}?)DDu?>v;NA9laZ@LR zp2QfkBnIK>n(t5@PIVrJ;1a-U%*b_Loa0@(gCafxZb!$Ael?7}R;Dls523{?JyLMF z!C4*p+Ig<++rsW6^r6?!I4FXNQ_4c7PgGi&JHv+x-sM2Rz=?KOIoHrY+SlMG1LH0P0qsY&8gr>=;+;Hr$Pu8 z!iXozk!3#4;bIMAO-USRN_aw3l7^b<`a#)ufcK_+vGFDpyvj*qyIZX8vB2lo;v}h_ z#XT0EY4!|RCgg@q4w*C3Y>g!%+DbVtI?$BV7o3-M$8>yzsZ@$cW=-F|n<6B$h=L`# zpg(KpgP>7c9vD!6mXFe3*roP91yn{`SIp@K86fmgBO4;o6)877?V^wqv{TtAku(l2 zu2s))7Q{vIUehu}tfy>KI>I1F^d8s(OS&Af9Tc|MfqPJ`sS^oe8_D$B;NrB~Gp`6Z^RTnr>DOd;PqA!eVaghYG7AnkRDvG03~GU|XD(f2}z z_Fa*YqS^+t4EyRD$f0M-l&*UkF@!#9#L#zC9arkDI(q1`GS#&0<9m; z1@fTp2=qLz3q-g71vVQ=c5iv6bX}5#3#Mu4F1uvS+hG_a@6J7POywSFJ93ZYUAag4 zWbTnTk$XZK<{l|s?zL__JwJtfceGfu9Km@KVu(;0x(EN$@27aBU0l9lz{?ul!GB!N zj}FR33t{=EYj}zs4vJdbFtzWXPbKPtp%5?1m-?e9QhC7og*T@)i}PtsY4l#Y0Drze2S{UptAU z8G2v{+1@bc-6j4ARJz*W>L%RY7sD4$=D$3z{~I0R#NoKcJpqFRlQK-O5{3zGq?}+< zCQ{}M0}8XMx@xHTBOT_H zzkL52O{5-8xZ*czUj6>}hvV~4XQ!vN!L{%C!RjTfFf@u^S81qQw`gFH!0zbF8}2Nc zAD(}bRvPwI*ZBujT#h^p9^We z`QGahHzzrXV-1M9!-tN)4Ot!NnrMf@IC@3c5Vo6m9e2C<(18u3jgH}>E-b#z1PDe4e2GE`exTy;mZCle zrFF@{@nPK6)z^#?w{ONuL~IBpo%h@k6eAMaOI>_(0R~1_y2+GV^L>th-L6RrQPAD` z=0J>coDPL^C{)HdJ+C#%PH1bA9f-u${jw3An;%YboJBf5xVpsZta~dvlhC`_0fHed z&Zs9@+MIflrQN2TSaRN(;$8k31?Kn4kD!x8A>+>Nb`Sc9!EN(S0x+oB2^GCof$_VltCPV=Sbj(>ZK4&0tn@>=(@#? zl}nU;x)73#3J>Ibo?U*3Tfn98D5;PJfzXn^!bt819BjTTuVadQ1-nUP3)~z|2J8Cy zW{U%_)lu7Mc8jDzo$IVo+8uNb`-&->Zy}hrR7nVpGE*!cQ){;hXM!sY7dcE)Z&D1Ivbtr zg=+_R8t>YCG=}LM-%GIL0J$GELiJ#TMMaS~Vo4U(SW?|+gj_=!h4wSD$;jc3cPFhF zzHiW5=xAvTPo~ufEVtbXiB;jm+Axb{;i6Y)*yswF6!~;|`tb@k{_??%)xwW#=Z%EZ zYhRboT~%ld#iaWNrm<|cUAJ6_&TS=`U0`>3Ai(YZeGkj_@Y|Ii5Z44a|ECWz&WO#o z?aM8;NBPW_sRK?%pZ_^+w?m#}xI>;aI&wV8x*a8(w~fTm zeJ1iml+w#SzC70*I8r(KDklQNC@09k4VAkDRQf1a$r~8Z$aJv9 z9>+K8Hv5*FT_YnxwZpZ;7KxqSvfu|$6=9b?H<7g2q26x52_#RBhUTu&SGRvNqXx}Y zVR&9*`imo8|07p7&?sVb`*?37a_BMJh=3^@%OSUu)1z58tuMDQbt6T+Ka-<3pEC`8 z6}E&*HWy+n)&gdYOBTN+XI2A zZ9BdsFFHDGd1v_4?w0VJSM;7V+3hB+wo#K?Q8;u8h6X{7ptNm;reJBqd00Q|*0-`xpFc9tPyj`2kfWHakBLt=~D5DZ1&_qE*rTsxuQ)>LTKnZjv+O?=4YAP z8`!|Mx;C6Kj+*d>$L58P}!?SRA%V=$}I$mEm`Z`|~^FgVdeqeg+e?k6lNkcCxUu}=$J^VsK?vJ9<> zqzOwPNwZ9<$*{1zwGx*9>ii3MkHBD*#oK1u^{s>|Lj`Sp66w8ZMT+) z1!fl9MX`?awZOpwdG4(z@Z`D`h`Hc8Vpo1W$J288oM)<;tM@&099@Ukadbr=I0ju! zp!aQ0Anz(q7)w20+?NuG{d6qI7M7g_DIBY?yx&V$J-MrCCluLP5E6^nWjl5^l!K~~ z+N!M0PmB&RiRJDtGI9;tt}d?J(e(`3s}VS)mW>9)sHej@lHkuvF6|E%V1z1d&6t>{ zJF?i(?Z{A+CE^<=_IBmQMZc?33Q5MU7}G3ye{r`gtW@>%1&PAH_#T^Dm2wl-c@*m$ z3kqlJRWw>`#j=$aoI~r-sVF|-UMWN!NA?No+WO>T$ES_Pv-yygvGJU@cj6=mj^tK1 zRl^zRnO|)zRwm1*c1M8R*(+?{;8dGo-l%-c!%&lWx39d7&xR$18S-RW9WPZLEXT?0KNw5m!y(io=` zBWExK-NC7O*j3lQDC8VdTs0IXHaOAatZ>4%*D$Sk%d^y>G76D_zE3iTPJ|q}y%W_|_<0fq0*M zZY2UOw=NxVo|c|B+ovb&O@ed8mTr6sII_U>xjqOhrC2e92(0Bf8aVy~%+aijS3^Pd zzWzFYPu@lck4|4vqXia<>h0n#Y7h6_UZ%#bFH_@s9H`^PG7zN7aw7?&?1X}v7qv8u zphGQdke%|n7VpO!<_Qbc6i=HtJMPZT1DDm+~62|Q}lnIPEXvTzhcS+I3@(T2J>#EXW&FH4uOCb$qC|>k-^L?|e?}qi%cq?0?4{k&4IMTgt zi9V@Wxl!&-DV!J#cgwxmDYw6TE(y3@zLCW5O5ReKews#M8(j>WqI|rOgJ0tWf#^@5 zc0niesU%=;N-P78Gx2WPEb!9%U(3aJcjH4;h@IC4PG2LKZ_n?64Z%Ft1mSPX&mP1u8JlVkq-p#@mZk1Z~(jxd!mXw0EhvWvW#O9j(XB~ z6#B1t2sN^>`<+SvX=}867~rj5#%ZhvJ=gO+NExT0@k~YZ_n;s)-xk;dIX}YVXFBC~ zfgSA`2OZlOc7Ye3pqKlz54o1qk4bP_ z+K0w2GK>ju!ZFFft=x;-dOkpc194aO3WON^sM;{MuxA(!dAc=JgExyGbpoN--}9Tj zmDdoX(bZl(z9~HH3va%y@p?Uap?f&fVv_ zu44oW48O!p`z51<$XoTg zSR3W@S*S{lfRntl{Z3L>Q7u5JfXDwgJG#W}pIL=M9!GY(|8{~9u5h%tPOd)HW5$Ms zjB03qTd&dN9=ZL4Po1tt7%O!#`_~no%9_phPyWowyqMLt&7uJ`;=KIz^;rBU_b&fD z>$JRz7Gv>UogBlNezE^)EdJ{9a1;ZNbB_ajIleeXCXI>yfdSJ%F0Jk;crx?!{P^-u z-KD5T>$A`3c#_iYk`tNRm-Sh0F-XAOsmF)@r3)vHr{9j>A0MJmk-f0Tv)TnPBrb)W zAL=&WV_f3l!+~(V zdtrmcpI!b!?AfRNKQD0_#Oc=}8-l+76Y+yrd^_B=p*_vq9+gyEULQX$xYk|2L$H@` zTac?uy9no_Wl@A|C#l01a?K8p5L@IMJ|?WpXZhLN0*~y;KiQph4y2GJv%@~=hILYg z37;Kdm~wvkCwH^E)U#2SL!6;D5G@bU>1%f>1ajsCSCdOfPvR>qN3$co1*rn)NksXaDm!1EW_B3E#o0%D*fJB2on97zt{{)g zeIDnt_a0lmZ18H_k}onl_!Q6QYKzGW_A)`5%R2a`Cc;is?}+R8&p!pL6!udL!Obyd zLI81JdX@nA3Y|(1Uz{DF(ew5u!l`vCL&JMj$c?v?e03_^vg3245Ngwx<3l`3StkXS z0#>R0%d7KF+68LCC!{&%=j8`nv=XZ_9#7trohB~1z=$q1B zp0Lg9Q_wx7Jg(dmVwYB=hepm{mtHlf&yFT}_Uz~gXJ^f4LXAg> z%vO7dxjwAswUC##Qti>RM)eUh&pq{mSI46wJnSE`my*-tLn+A$#%vt*>}~j%({J1< z69%Ikw5Lsu(>35pexwCONt%eI!UJJO%Cgw0M5X+*Oo`H7Q_6&#@6fW2Sz_KhLQqAn z$#+uaJ2cR^XRuyx@A!bad$lJCDNACgScag*?nr@N0=NbtL!&N1(SgQ1sA$LlfbL$^ zn2>s_L6rrbFwkB^}|aUJ%V{C}L$$ii=1xtKhsP zq$8lk=&*A?g;%+lOr^HP@R;!ihnyGG4$tQZjo^nC5+rrjhM^z8vF*2N$f1M2$4ZdRs!8xhOqB7LxWf>6Y1c4zPs7`1=kv3eHP22uV3x`QY7@m zcfbA?X>Z={{aORQee>%iaqrbH(;?rydRGTKB}yk2noW!S_4O}FSr_uR*Z-_yzrpi~ z<5}wdE=sQU7SoP2A<~i7xxb7OoiPRnuau!-uD{y5PA*bGTF2B%ObFHkcpQ({3>|%N z@G2$i2Y39G+YmRiO-iejsep=B zgGatBgn0+ea!Md0q~a~)f!okzHn*XNoZHag>^5wK=5%dXa~m2qb`Lgka1S~-xd)9h zat|62Cdz8IT-4R+Mse?=3TW;>_5j5=eGVJly9XI^$_q%EOlyZ;K%ox3fR!@z0#>50 zdx!>thDqhUL(NN4J01#2?m>mHCh@#@*tldL4c&vn-MI$~T6~c~NOe$p_n@#3hO`~- zI;NgxeMcqL=E=uzW5^-c%daEOEZn*MN_1U@W%nTYhVH>a$nL=cTkGpI4nDwW0D%;= zHdkN}R1=t`R6L64-GicK=N_!+$URtTockvCppd5AgCu%Cpi72_y=hOn2Pvz00-dA= zI!{{Tj_$#LH(x@AN0O3z(1JwwpoiO7&(Q21G(vC>HZ-^g37a!d#>=%^aM@uD-aQyX zf>7Oq0q5}03rg-m;qBdngvC21O{sHd8A007>K+Vea1S<$a}OFA+=GT>d=Tpq z?vz=gVGgEz?1w)3&lawL@X5^2s2Wa<(!(#21p+` zH7liaY8oNuJLQyHs-opMLQus!H7PYZHHpCMmzi7AK5a$`F?3E%N>Ae%@qT%yX61=a&4wnY zW+RyM(jXa(HK%68ol~}V_S(4+LCktHA0k4f*_kMUG2!e$A#%f(=W z{7T@#mUtobyY3YZPreH@+5xVFCx1s$D|Q@Acxo zUT#!BaptwY*9yoT!o^p3GYa4BgdRV5fR2v|R&xlLGun!8H;b?15RQ_}PlY$vDJSd!_j_=(Z_>` z6(nS1#c&{P(e?%xv=h$@r=xgWJW;QvDS@8;f5g29d|X$RKW-9gXd7ArEWshYV#~Ii z&}CV6gkxEe-ch%#0j6^cGs^z4u<1vb3cvy~DCBOD_w%^kwP03;gzf z&U^R0ck34)?j8U0`GED_Nc!rWd-^%|-fr1FFJEYvw5nIyEk@Lo$WQj0py6}BP}$$% z%2xRubCa9%-%*dR4~Uz28Qs+3>a|CQ2M0({TeNe%zUDrErO9sftW8bxyXsgSdeBxv zJ<&k2;vK)JmxZ2;CE@2mHpsWP)jv?L1$|BrS!b1$wYtA!nkQ zKhXU}xpC(e#4&&S{|_wAxGe?zr@%6YAJPTB806f2HWFVFYQo2=L64k_b% zjlEIECu9rCT~Wq+b3c^vk>v;N&jP%zc0U>4Z|-|CKGJtQ86W6-oqQh@+X>B2?EOvd zr}fSz&u6r!$@jKus2U%#na)kD^H$%%WPV6zD0lX8i&pJj3ViDRT64dWwi`*?sieIv z_bA!Bld5e-S{PWpE1g62Lbdz&SvNK7_(i?{$avzNNBpALbCmC)Q9Fh5uXk$ujPe)t z4x{|h*jtppQM-!Duk-yx`2(p-VbH6md=F9eRPG+CUgZ0Ril<`7Q290Q70SQnuDre5 zr~07YAC$l1)wjPl-@l{w1eqIu)|roaAe6tV!gS-Q_*~!hW9;|ghkB=vw#UcW-J@O< z`+Df1-qFJk)n1-zQ;z0+s&}PWR4-IiukYF62^vq^J%4Sr@9TF}tG#}un(WmJO-!qI zN))U8IQ9ohYOB|EGrfML+UV7byn$XlDFW+feXmXRw(5$nb6?qiL)i<-8{gHpb8}pO zFh8vu;??)$`&;TKZh}`&)vlTPjkRB<{y??DwHH+ryn1K0zpK~9?w9IO+Yyt$tD4z* zv)lZnXmjW9%>6I?%I$gcTVJ<3e{c1<%Xe0XyL`>bbpEx~yykaR+q!rt8`k-g)v7Mu z)q7afbJ?CYAB)Cx{?2GgJ8yEGci&RBU%sqtg?gbXedXtR;m`aIuDg_Pxa^?5RxM_J zs+-Hj)9fy7dx?5gHKvU@2);C|7>FyN&YihgSdP) zTf^mBqbZ!fblbuF+Hi07i}{>BPxF_*vF`BZ-&H^6ZQA-f%2u!OhMTtNO|RqxVzp}Lml z+qz#_zt<_u_cfFs+5JP`du6sfExn2vzWoc;uX3Aw^+)<2mN)i_kL;FS{I3 zrSsd$7siiPFYBMo+id(N(r+;uY~?$xwN|~V`NBV?wbRV+C}}NPX#82(JmasaQB<|f z)U($5%9%jlqP?m}v0f`;=q)!W)UV>kL@7JPC*@z0KT$KR`bO0T)1T{Kskgq=ca%-6 z@;8*vI$rfo{U)u&#lNNU1bJ(sXls@4%Z66{T(z?5SJcF+9;)`0`6h2%)vvf^RXWQuK`#9ccjP^vhj(A|B)od7jht`f8F=?~KK<^#&gb6U z*ZIV|`#PU>cVFjI?&f@ZK6UQSdRN2fTJl)EE0fvkh067+XO+3>v+JIzb$4F9nn%}C z=;~dKN+Z+0zgSID8$VmVtI}j{3KqlgDow6l7?i4SveV@1o7D#uq3ZkVG`adtkoOFT)n8%y5x;-O56^Cv4QF5cBiv3f3(V)L;`it~3yXyClbosRpKELi!nbo%9s zGAUM{>+ainRsWKF`dWRel45?Ulj7pZNQ%{~Iw@8!>Nv-KQPE;2#l<)3e|Vh&mkUJe?m`+`Gu7fSFco3Y&@%^xPF%>#nq!qimPXeBk~y*{Y9P>YcI;A*m#vE#l{;- zijC(yDc0W9Npba3ON#4vRZ^_Is*>XTU6mB`Q=Js6ry?mX9_pkxe=d^Z`pY6I)}E`R zSbJ9{#oDV<@#>_w{BUc|10yM}KBDBam;pB4R7tV^Rwc#tD>o^wKg(x*>qjj|u3xGg z*?OUJWbijeRk5%T-`gNShcz#ngqZ|56 z|1mS=u792R-uw%!&x~KE^CnNzi$B6n)AP4=nqEIvX?p%Dn5NgCsx&=+QDhDEm-U~W ze^T+w^gQ+Y)ZbryNA)v?_cYS)oN30J>i3v$6{Gm2^V`Z7#*bDn>z~Zibf%Dgi;l&uH(e@2w^$=?ANsN&32&mMp(0zrCE0tY#zasYq=evYv!g z!-e_eUHLVS*{QD;f#p*<@u;4e=;}+Fa#UaE^Nr=#G}%~wna?z;hkTl`SNNFBH^*py zrms->nLfK%jVG4!TD>qT4K!R=Pb%gQ`HW)qRX&}_Pc)ZE|Kxm8|MGAgf645je-&%^ zt7`I)9+)S^KgF~me@%0S^bb!M7XMVgBcCdycRWv6{8LX7@^d~z$Y1dEApKj;4bqpz z#2|f<&kCATg1-4cd(>~8{bJsE!vsI<;^}Qu6PIrq%gZ_0!bN*$c4c|2e_Z*=`AaJ+ zcU`}J{l?8>;}>q;e8JYu^q~E>L4CdX!VA<_R~)x=?Xl~w9Nc{GEv~n2-Hq23|DC_o zT3p+A>b!bfw~fBIu6$7c-e=ukZ9BisXYQXmR(^CF`r`BSzkgFNj-`L^vu?wO)c1|6 z*XwS((7d|8@`FYInQY z?+&`l!}Vv*owfer>6u;XbK{?z(G&kA{J(YUuAhJPSM>ik$iLEI=&xvYS9|p5b`QRA z-T(cc{xkH=>-g_GW?f13eb%kZ|Kk1So1DG^Nqx^|{vP_Fb=CK5so(JXlllMDfBf6m zt-G6g;(v}=w?O}&Wz)N7_slI+2kP#b%gVo+KIGz_`yD`B%AY+_X&KwHQInQqa%p*Q z{@3x}xNeHhp1+JETn-Ge1 z_VW#B*_M)3tfj1F`hWLXcb`(rHka@D`@T{>sDJtU()0I7czY841z{5=mB}qzl}N6? zf@}e6>e97r#ZDuXPm`r^tM!GY*KyW~S9Hr3Kk6xj`a$|TJg9UfR3zrOAM;ege2kw` zc6ua_=1KvdbIb~XsKueynJejHtZ+k<>r6}-kx~*-J2GY zqP8HIA}Q8&B$K~nT_>5;Q=mARM09;k(dAXOq;&n30yCy7sMumOWJ#W)Yc)9WeYn`k6jb6T^ z!T{4Bj>P9|4*0n{5Z3(_Rw5)|L%zX$s0&&o+g0A@xoJ%S4j2n0Bua5 zn|Wg~tDMh_jP631>nS9(j^*=&MLNw#vT`UEJC)Kc8~ekSqtQV(DA;t!Qa=)OxG%6K>;?gBgWDvtlmeHwYy!vK`qY!F+2*oR2fvBscj zQ1%z-3ZV0z9{zHnW^{CZ&qF8M)&z6{?w;n+7Di2=Er7c>skmE?EP0HAT#Cw~f#o~y zO#1SDj-PV5tq^VXl;Z(=@YHHGE4=6&3B`vy*#GDB6%$_xJPEMsKP{=#ItO`a)KCxo zA=d8veJQ6JB3boVeFQ7`iPEBLh_=Y2r11KsPH1?J$jD_BXyH3OJWXKZKm_t`4*;48*9X6WXK87|R-}qMd=qG;eTC0}h+Pk1NA z-4dvjoI%tMOFLlWy2d~*xxj0kQm(0uYb&T66|C({si8Kiqoz_GqqV&@w6-ZCJwWYa zL%5EK5K|kl5a*FZJr1Cjo9lJFzaZ)Za`kg+1m#{-t#C1QoFq00(9C(+rz~k!sPVEK z$Zt<2%#%v*W>Ok0$*4wge5pUx0C^J5f~fE1C1-2Ic&>t&;d(BG@f-!d?G2^gVr8NGB`=-uQYZCDs6+Ak zVyS;6TD)8W+U9Luj#MfM%;aRW$3Qh*?%n4$yX2%NpcJoMz%OzY@=(dkybJCMr5Gz< zrMU_@Q)YEJmMtP;q=4tUBOzU5Q00h+JdOfZl8kb(V#T(gtVx$6&@p#9ImW}0=o;#H zk*XPZ3DykA$4a?oin{1k3&h{tsU#?avIOfEK;vlto;NSiv{Ozp9ym`>Z27??a5W{9aAGobAplYQ4qXS}p-0hOFvRnn@jX{^kmsf9T&XA?*+ zSk3?Ta@KK6;?+dms;8HgfZ54~%RGUuE=NaX;Q}^?s}4J8xGeX9ITm+2nyo%vRKL>L zH!uZOj0);U`yEsdpqQsyfQCHXLF~{Wp9!c8ct)P>d7FdTZ#XZ8}sQ4VgXDK}{vI zs0R7u(zaLI#}ig<0=mL>;pb&-!N#?nr`#?8t@&|?T1Qz^TKeP4D50X&9(~~a+E@8<+16e_52X^j1R~&owb~!Aky1h+9Cbu1SfD8(+H{# z4=dNOLbR7qiiRpGhim#4Mn6mQu`-HP#-><8I-@jp1wsDxgHrbm%;rj~(TUGXK=gc$ zmsY1dCYDyTn!H~lk7yOGeBQe*Eq_7XA4uvyRkE`{>bSEw%G`j{AC4$m2WWS+_{lq3 zOyZ=@&7XT-zPXQ3DYTcgSBHLUj~IELQ>lbuOWvQ0k`5V{$A$gCxa9nfMFJ=yY#! zT(KLViqQgi7~ycFYb`e+%|m8h=k6iY3N z`af58P)fXb9RbQ7u;?I?U+~(xokb+7&QjjjDrt>ml`@|@kJ%i6w;Tn8#M`m(t zRAJ%jQI5?Qitr(&y091zM^cYQXVh@zqe6=BpagW0y%g^vEs*Gxnn7%Qu{mH(IgjI= z>IIVB(AU{`B%DK){Fjz<+(m7J+=_Mc|c74 zCmYLUVp3V$?BLm~6zdw0{QoZFqk@wj10qF3zU|9peY-%jjYv{HKFQ!?>yRrZQp(VD zz*HG0F+~P|D0`bK%v+qH2?3CKS{)c9m6z3Xfv)o<*Qo=MX>nov-Lf1+dgjItapAd}qP;@(=$N7uE&q_@zv@DHR19iwVN?r2>KVr(znPYq{%Y^SP zT93n#>fRR6rT;BUj2G8#e27s4zJPi9i6FHJs`Mtg=_zV2`gu&ke zF`Bah@4$7@A9*NDz|(;BK9vxkK#0!0$SJrA*6~WRt1f0VUjvqa$9s1>8?nXy9Py1Wz}hywCu=mDt)A5klhT7ai>Fa-Eyo#jHu9)1HP~Cr zZL0(&rVJroNmJ7X;$Urgw1~TP8d*X{PUB@djrkl=5*k4z{j(GiF;|<7m6b&<*ffXz z6~k`Gdw?isy&=u|=6JN1J}CZ?PsOWs;0-jVlo9d@I9~sGRM#?!Cur)k+bq!U%E2K7cBkfCP#Arw! zuhKbKpgD|`t{B35m(E9pXR}j^hkC6SRB}iHvcJ)`nuKCrqF8XfiYAt6yLcyZPYs#` zyin1!oGms6t?|vK*o(Or$oY8!>uxm?1x78)V5CI4dxg|&_x4941u8W>33!hRX*F{0 z1jSv?P?6Ab)}hI@Y#1LWAj!LDMN?;O#R@0Is}!gr^8D#HxjI7LWSQLaO1rUWj}uF= z&WULLfp(T|M8k=;67X*kozlZVa$T4IlhcGa9=qEVTZCi$0QPYOcx?bKvu ze|JFJQKL@?0=jUKhSux$W9vhK42oylr!}P9W@Tij4Ox`O!)WF1>)=tsHt1U6m2PB? zNEZNwyJ|#UxW&VKDPtss$XZ@p<3*nIj4IbJq{%Y&sQXFTe4E&$97IvV>+_oEo?ON3 zq(Y1Xq@FLgXPS7Yw_Dy4BY|A$ZpuEcwubw=6elE*2!Qr0l`APU_s}Gz4y?wXw6YC_3Z2}Hzu z>Qze90|2qdajI6uba7JAYqVoCG9c}<8fCPJsgq!@4_LEfR9%2+%WGA!YZi#AxPy0z zM%i*~4hSTEPRD7-=1R!2&+AB5KqJ;HAQSi3Byg4XFDtYfnmI~m5FEwzi<&w(LmP4MNy(?2t<`%QPI#KFTil?F4Fn{d3ZoYS9B}{Y{CO;l=w&p zNJCcPP<&!CEvb#WqQXf~aR)YTvBF6b0Ri8zR3eSEetK_}v2%-m^!3x9sf=AmOHe-r zn%kE9Rjn#1^d!P!95g@rInL;2vTYYn z&ulMl3+m90tY}LTh_6m1svgggwu=~lTS>qw^RCXr>`8S@O2ufZlXg1C#`(yS{ENj~ zR}rN8hHT}NEE>6=oFr-p#6xEgUvFluC1VcvbDo>EW23Oduv5c8adIBEf6q4Gfa9>Qb2FWl%eEkJ$ zHP?DH=wUU}r4oxOssG6F^-RXsH9H41ig5zGgmdmGRN{;rPH?~nDmE3ug|pzD1a8XX`T%fW#6=DGKMCK8ottmd|S zy#U$+EVQNe!AROrTzi|sx9nu;ATDNvHe&j2VIj5-#ddrUeJ5MoB(xFJcXNwAih)MB ze(!eCMoiz!Esn0PS!usm8_@cl?xH224^4MZSsWd7SLo2CtJdtcxYQq@vo|icsH`zv zVx_n!cAm0vuZp#7Xf40&qPgVBr3ZMVZ@P$)5fPd^eUJyuB~ZG4D099}Lu79|=D4Pm zXnTu@Z}*;=g*;$(535Uw)+?gE3e63hlcHI)xgo6-4e8xg7Hv*gE7k&p*0<0oe~k4= zfhd~mR{zPfyfay~Zk(;IaMjid(WLxDdT?d2dUI2gv$# zC6JXs9>k~d{g&(OGudSqZrVskvGn$FA*1O77 z3bA|!VtTIseN&^eLQF*I=79g>yKM*bKjN>G_DN|&JDrCWMs{_#Zz;Llj)7W#R@9>! zgXY+xHC&ez=U_q6V!Jb1oI?tSVB&ZG0>1sEsHrV>#^|^sQ^=F@?dpmi+A}gjoVye@ zis)JG#okhYx_~d`KGsaONatBl8<5Vmu!LKzMS;2}@BKYo@Q(ZLRtPRe3HWBNa9yLJ z&`_Ec28fXYmYr{tc#w|dx?{QA0W0@lg=HVaE2RgW#xYq~@cee2{K~n()s5J?1=?ft z5Jgk`dC;i${NuthkXcAz>A(s-w4lZ*Wl2{E`Jql>6}W)aZ#ARW22>s&R#B70;{m=s zTp`()dWiW3F#e;E0jCTn#sCw1k0|I!U{rWROs+5bU-gZ(^!=PT(hOE;jM_a_j8!sF) z$xMm)6hG$J*yhn;o>y|#q;qV`_~z{=vvh18Wf5J z9$R6hu$L%DcuS#SM3q0C7h5e*xA;)epRTZ$8w1*AW?xPyMhvVO*JrLRblE|Sug{=U zq&~uDE6-#H`d!-Edm#G6C7@xCE97Klu)n=*B|~!A53C&T>wUbA6Ke-Se)og|XSFdn zz*=URL8)Y*nT)R-m#-1GjH9bdsIq&YkOhT9ZMb&yJyBqtu2cLYs-ojzMAc7jP;rlN z#`0)2E($>P|0fw#dBDW7j?Q)bT~S@-72{?*2ja!0w464ZM9OgkYsXdHMp3OXaNUBW zSO)@CU7ibBE&OJQm>}y!nZQ%bRUEYG{*YLHBG2~J8ZRH?jJ{JT;Agm6w4s)nG`2V} z%xo?Kh6g077zEEwvs-?O&M1)>j7tar#0Jgt@!XB0%LZD{iL=>|?P z!57npFjr~~C)&8K)b91Wv^y};jv;>js$Ri?J&qyeCyJ4uR?8;gj57MUv4*r}9fd2U z2zk{t1IH)$QZ&TBXV&uQx*4$)qAKkvN(y`J1bHB+XFW?%WDj(uC90%o zcec=+;*=Z>^!Cm#EPAIyB4RoYu`GhR)N_=)uhHR0PUp6FR zUV+w4a{mihrRNtoRK|%ufe@_H3pA7jr?rDP_k%^Xs5fY>Ep-!guTh-)jUxBbuo!Tk zm7a*D0@N&DSn$zp%8Ml(ohafE=7{;EWxdtui`I@|JK+I>QIpk$LY zOhdPBPIs2ODXb*$ZjbOFMq9{$bnyLl&+y*UP>Nm#&@y7<@@k4VjGoO(}wR>%{{*~d_)jFIt=@8P) zDKv`l1F_a!3IAyjKVRzjGb{r=7v4Mnv6|-v{kiuWy}jIT)1BicvX_Bc%6UZZQ@yx3 zpL>+{CGbv2qlaGf1C4&$@1n$#1}Hxq#?HxatXS8JigkM&pg;M~pgZBd96ccA8)?;_ z{b$g-{r0~2vtq{s^@a24FSz#4{005ifk^j2A&gI<%7%Ix@-K{Ln7So+T>aXR{cR?^wQ!)%KX+qUw0E} z+=u=Q`k=k9LwA=&dsh^%zRvqMV!UUy3rI$LNUt zoXSKN1ZA0B7d4UPKwA5_az%3sk<*%^u9CHmtxApuszPUz-mC?1{eh`ehQ|Z)bPgdu zCVr~aN zn1a4Q&4KqXe_BT^97^QMA$fUdjg}Rgm$ShtZ3%BipQDC);7`_3y>Ma+5a1}+Dxa>S z4Qbavqra4jN@U|6rEr_w)gCn?Ew>@15Zwg)aD_y-vNTL#5u*h3foBOmsG)e;(qcb| zc=r(v%WX}IsR~F3>)T^BB-IfzStzF~5J~ZkGfybd(sULBT_8Srp<^QP**+p+@NzNUTxwfiN4Vk zMPK2i>8zlA)DKZe%kH3yoPz=D#oqjd3MWs=DKe_tR+eFwqXI2_g^oI36$UIwsXar! z_3b*MH&qg&0p0tAj@D9>Fbju!v6(-j@TEFt5g|qL6JR4a|&Ei6l78MX()W23}?+| z5GY0iKH<3|R2I{7!(pXWM;ECX4kEA%7Gg z4-Z+(D@H~Yr?!bqchR@#jNs9(@XJliJjmf}kXJaK&**Hc*E+}^QpNm5eU|t65xv4J z)mw!7)G)5YVks_~iT!v0x7l5bu7ace`){FLemsjyySiGjH%+56?S_iJwN9E!3DV8? zR#>^aOlN&Tm+U=3Os~kwbp>FzAhsj6NwGfwu@l(fKupWKn69(2(^+A_?W=9n)OHwT zVuwB0Nh~qwJRb;QdIei*6H(9mc?j7NYcX=5^21XqPYNQB+8(bcWMA<|N+H@G|3(8R zO+1V;>}fjVVsg*!&?RwVn}q7h7wK5h6XGZ?I#eQ+PAyyH3-=-;UQ{DITq4p5zkD`Q z3OtmXT~p%q?IUlc(unGV4=PcvS!u_fse!n61xr0kA>$NBLf9KK<&qev^>8=kzvv{e z$vrbWvZb}v9vzU>jg$-|^*=SRmaS`eQm)n;h_alj6nk8Nr@e+wQOI$~!}2YK%Z;^_ z{6y(TJ4SCTX(a5dv$ncuABHbRL$!%F>1cyilgB|!Q4y~npzX~D z8V&q*VyF92H2$D+729+OvQ@r{AUb=f54F>X z-=7*-OYX-#+=sa~=x1)5SWYXbN*?s#<{QsU2214@Nzx;1Oe(`BktD$1t`9R2f00Lg zOR1wPUHkfT@j9Zo?B+L8HkNTl?4fR9U`2bVz^bwJK3uMvGCA?5j-g59t1L7&aDEXH zYXiuBueMNG84{red@}DAADE~E^22ma@qSb3#S)5Qw&y#D{Z@46F_8Ol*Z(0lUIGn7 zR;}a1^Mp5I*#WD#W@D~(5>ScybcaerI!|-Z%2w#QxmcM2{{L5HEX+z#29B$(;ePuV zXtAWC8s|+)8X1-9oSkKpMDYrO{?f5GB)dI#akhP$&dHkHL+3XpIlU)P2U<^hv4zhj zvJmYp-(m`Zj2`2m&`IXS>xV2&pJ$uqE}vc4lWiQkAY1EP-H)D-L^{zk@e-h+TE#3^ z`U~n7E}EN~*gn18-C!u^Cs@HLA7b=rcxck~nLfm|em}uZf`Df5-kkgJw6eunjsfVl zl9k1VT@DiK2(SVhJjnYSwmX(0qMGdgdN|DHE)A`y*ZZFVWJ=Cyn@a5M>InJX0pwnn z4y=!^3m^;eR+26ySro!%DQb%#fBmOgnwpDEHi3!GdH|T8buiORBO*J0R&95i%~hte z5uIb9si89+yfl18GJD$)W=15BZ#DxHxzz_NdOHU>&59yw?;OHRLv6tJb5wMygY0g$ zmD*qA#ZPwd$ojSq#;zyGht6;ihmGiZA&A{SqgjOIMb^%ZSsDpKk;6Ybs28L{1-kMj z2Q>|)Xu{=OK83T0R+`1hlo`b-bYrBaWGI$gK}iWS9H6x7K9Wz@*LE z{Y}<2=Si*L7j$X|>3k`&f}ajyCg~C)5BDhtdGu@h#Smr^YEe}7cXd>@v`C$(1obFT zY5zFaG75cVG)^p%+{lC?q_>$Au9AW1#zxp^8sY6G9*v^8fMQz&c)DuxloOaVJO%aI z)tl7oNZX0}-NV_^VJf>d57@`dh$#i}$@RFiuB2zJm&nQkD!-XmiSinX@+fp)58u8( z+oH`NMM@>w$@I=zeo|;7sA>F+&jK&_$w+>N$~_5K!5{Mp)*2#9jJ?T0%1fmCr_?@k z-_gj9&T;TYpBDX!sKqz z=?-3k8a0TbZ{y(gY3o5F`hFIabKcRx9Cglll7kqZbE2x|-`D&+5458s=?bY5&Yn7TK`T0X;cqU$BR9!i~jzSea2Zim< zQp>u?L5>Qd{CAmJ%?E0Zyd(2&6El}$cLYr8@zD9L->U05%-bS7@%xNAzbmN@i|4<{Psb&Q%1E0$CquL@C zSjs4yu_xNud|I8$(WL0GIZW9N3D_3C&EXCR zH%X5GQT^9m^hC8DK=oY^ZW^kAWw;qnco%X^V>!9mi;O%`*Xi?h2Z(NhOxICFmbPDe z$zHcdDa>;0o-S029cXB4gZ(*N7HRp=1nWQ6mM={Y26)NW);X!dN^(bYpw_{=0zRx$ zmnI4T@l>Z?yMAl6dyq~Cp*FiKFw!^x)v-QOQ^-B7qgco4)^Rc;AN4xciXZc6NfO3eQxUL94GZeQnt8eZax640)Xnv$NZwu34yU#crDO!HB% zwERb%S6KLgL|7a*qRjteCdc!9^ypMtuBt65(|uGcEyED@$SW;hH>HiKK1!9AkDDva z$N>S9`Yx0M{i)7@XgVVPE_<}!`V%#U!~GO}EIC*GNGU^c>WOtseyGTP(&PbKKy>xV zTTmoUTaQ;(+6~HPur+|LdBL4VSdKKOf|`fIw+qt zFpXKp$b10l$>()c?^uRdf`H6^K}Tyf7yU~qMg;ll7Y#(;g}h=kpdtUHqb1E)(Hee9 zM`iyReY+U4;y0lBDhAnI;j z<0V2v{^E-i=j7{_*ZldmQ`)H89$J_GNVNf-aPX-TF~RNI=vj5fnty4*UC}hs0R3a_BO^MlQ(qVJUK32Td|FCwgn-bU?N#tSH%1aNXH$Beeiu33}{QB1ltCKFn0};@j6dEuYa!!JE zJE_J?Wc$$`f;*RJJjvciu{vT2XqtR69+Jp26*s*}n-~f4@(LA; zE2Lub$KGTjM+DJb(?X<~InF%dF+q>yERCOCI!+-)hJ(0zc8QlCv6v0J*%QA+4J z4x*Fn%U2QjpK}%7p>&oEL?#cTI_ma|vR&JEWS3o-ZH|qB0+px}$&M}390MWk>9soZ z^B0>cF12Ckblp!97UATgABTec%?GFgRH9_PwZ(Y5jQq`~6isv?;u>9v;Rv9Vf2b1s z;6ft!^ks!bO1-ocZACT*yufXVwoe!ICD><(vir{zDEnHSR-Y~v5b{??E=x=8HD$ULMkf?YfS2MnaUuh6>)ZVAu~L^ym7rNT-wCy&}0dw*MFCYfN zA)WYKp@#%zE}K;EP=4AdsA6)GoQQ}dWVyiNu=1!$$luhMNhAdE@&Pqg5?&&|^Z7zH z2JLI2D_Vis=MxB_PjfvKE6`B^{g!onrQ8Y!JPucx{()vUw_lXoe7d>MK7?N^?;t1r zLe4jZ)T6`Bt%FCUSZH4Jiw;&6JvWYO$G>Cwo1UART-Y;r`TWA%^vq7raU^02K@Rl= zno6+|M|le9<(wy46guWnESV@;{(R2U`PqvnE?=0sY#{+ZQM7y;*0<>zEtZ!kIv7}# zCE#NqhvHo@H>LAi>(gnonTg#~33!QiHr$NsGu3&x1!62eQG9Tmhr)QCq7}TciI^e> z0iBd<3)xiX3uiVf#af5-;D#n;4jaWb4Ah>krt>^CImx4wp1Vm`PG10%ce*{0b#H#c zUs8}G0na*4Q=*JCKb^uCp!(z%4ar$BIZc3jTNTn$H{&b)%-~p#1Z4h#8p(GBmmDi# zA-T%5N67?*KiT$+OroUnj;c)m#8C-JgljIOD9CSqNug8;eSGC7uui8D(m&g1b@{+# zq9*@^qOWW)* z{#*e;iizaDrD3L#dldJ)NJC2^AA#KMcC=<+RqN)uP%;02#D7gg$!OuCb9+G1*DEZ$ zC?ci^`04L)&P!I`R}@K!^9@CfFYplK1bin?NWG71FY^E7eowZ0YT=?i+q1=1*J_xEsYBJq?{h7rMq3)?84usJv6h=w z*e#YwASK^6(K>4@(X<7u#(I*F@0e&^>hcZ-7ND3qU=d$TJ43Z~JGg2Ii4+S(;omc9 zySm-6kGYnjA&G1&$`fc2E~S7Qz)r(BBWjC zaD|a9Fk_~X3bg0z4N49fjjv~Gk&byqQNDV>T76yPYl?^z^-G${f9_l9E;d$($nF6< zT$IxWB=eh!HuthSsbr#^EpN-K1bZmo>+g&1)qxE5pA|Ku&0xP=qom1Tf$Y5@k4*Q_ z5YKS`;$fQPiM8^ert(!qSL)mn*^hfEjb=>0DvRY1aPu1)g-J9SaPwqk8JRNnm8J8v zug4P82lBEza({xXagw|Y@bO7BRWmh7U2!#eI37EB7~muK#rro`SV?9Nku2VWtW-{w zHa!;^Qw4HPuGgMW()H)uwbOqn!;+&+BcTO~m~sjMU%ypS_~*=+ z95pbfbP}!Rok~g>H3?r)mVHMZ&1cBuv<18>pXmOaLffg{qq2IpZ6e1DF-Q2A0DjU^`)l>vLoos)w;Tu%ZdrZv#5JcTd^K1?@( zl&>bhe25RzE%b^p(TPA;hcJC*UokSujGo~`_LWV=sHoa;YGH@SGI*V{91Fx84=e0C zVI}J02Yd+EgC`9v#|+5n0$9BYD@`vSdH?%W>!q-wd$h<)U8bWYkwtVa^@l4y{<(lk zY}tTse5Zlxb^Ky!K{cM2Ry@Tam6*nW=ABO3a8`x+=RztmD&Xu34AexN1>XM|2A(gd zl2V6udOx;CbH;bXIKaB>s^pVhpQG+_*#sQC%)}yLu}fEC%0RArjmE*~US}X);{0>2 z!tt3fDMhHtenO5kyKA=EYm|8g7sQAG>EImnA^D2Ah)#=8E+>JS<9b4UQGuG4N)QR| zFZgQVC7=;tK0n9IcJ3Hkr2##@RmNK?Ov=|sP%Uk0k}!MOYPZA3LJs$Lmm(_|U>!e| zuVaqK=a{F#3urvgPv4O$YKlIMBz#)(UFtxw0lvv)MvE0>`_)VhEL|CP<(rPe-Y z)F3HuUzyjNl+R$^<`KtIW7sekRIH;Q-guHNx!wL!Y&UH@5O17I@^gvJRT_&LHagwa zHg)E6U5%p^ovgmw!S2#NP1Qpj(EWAUa<^|OkC@jWeto}<&*nFysUMSMu}q=68g6Z4 z@+mRtxE;`+b7-YoI`aMonWkR9RdxYa*H)|zvSO-{r@OH()kVmjb*+uY(v?NA*V}cg z=#)04NN8`!!*pB7t-r;?%J949P>PFe@VLI3jC)kP&6LI03N_Z-fXduotBfd*&7jDN z`3wB&tMqlvyH=x*mAuRjnu1vAbAC!)m62N^u%@rHDODS~?66QO zN65#WY|Bw^1U?Q_m|tyk+D$R!JO=gAR~Pi|nz~$FBpJUS5JXG=OOs=i`Q~UvPEW~9 ztKEziSuk<#@oVomj6~p3PHX`{3wL@p`UBB^~v)(r&s(he@p(s^Z_nz|14| z6tQ|hAGj`hy1`pM7&b3lMCv-~Bmc6tEu8x$m>xlKmoW z-)r1?9FQLu1-s4W~LCa`eGp1#}UsK*&g?Ha0e zKgvW4x?(YAAeQ0@z(sQfLylN%L$?Oxbeu4MY_4IAnKhP|+Z~?BrwSr<*M_Y~Ux_+U z_piC_8_O3{jI8-53oJFJo4e+AYh}sPQjo4KvaCNS`iHZ7re_xThE=mfC`CfMqjnVZ z6-bMnu{>ck;pF@bL;xI@f2XMF6nM>}(HVWbfjG*}=!XrY1Q}bv-}4O3|I@LS7Grl7 z1EirYA@SK^Afw?P>{U8V3Gzc^$-YrkX9_uFwZ3n!-@UTc9JZ-ctywXi#W2-Ds(o7n z^@}m0_~OEb*MEg;Mm;S(>0dA&n3>;5f58KFo--f3e}TmUxkUg~mAC6W*xx$jGeJ^{ zQ7k#DQ{2vXUz-aor!FAV-0QzUmosWbH->yYce~?UdnQK>_-W2x|H(q7=2l+aH3^k+ z73Jt>7j^SOl2;oC=qB?(fY7VlX3ljTTl!-pr#I&7)7z^3X*+_uF{U=N+ROSeLDVPF-{?f$HmD;hM$F&gq${1Qm-wKFTwQk7Vmo;gE6dEYqmm z(%OnO;wiN)s2=nFnl_ravDH9~6tJCqyWL}0LJI1*I?}OQh*B(6+xi5{hr(K2$|yT& z9cne#hKd%%BJ^U^(vDygJhCRn$RYgqA|?9tQ~`bas)aQ_VX{!XT7g;%pHum0 zju8ueW4icY6cbEL8M6LQbkIgg+xtvD&P~j0kE9LlB6^R77E2l8PANA19U)Xj;c64V{OXRcpCr4{IjxeDrG zixyYO+tFQ7omfP`*RNR=vPW2^3rP9i-$=d&Y&7=--)*9n_hH4`8Q}Lm9l(s%Nl;b2 zJLd|uB`xVpVNt=F&X|@!LmefppY!uKfrUjK?NaH_weL-cc4Fp#HOcT$0;Dp%91FLYHgU16{ zbZoF)@)fTonx%V{sVPMq9uQhFwHwx}|E?g3`M>{Lw{Gd$D+f2<%jcv0gN@s_MK&c` zX7V<{^bX1ZzHHKFC*0!oLs{_KEG%lxC0adH3Ho~zb){i1o|wk*fR8?(WM#>;tb8;r zAB1s`r!Uh)CF6mpxR`dt>35o(PO$3(p?%UqYaNRABY}*P&-L3% zXB%sAP>)%fZ?oopXr%u_@^mi3P2$JU6!BR+g;qy@Ce>VXiKRSXbq|if zb2ksJyU0?DkD{?@50@FyyS!qJMV*`v257a|E5<~6`z}*&sdaZSR*C|8%TqU>yQLw) zbTdTOTxru@=&YGv2H;H;#q^>bofBpTH5fLAw2g!RvC@7yYQPV1?S7}}hw@5uib-I! zi|P&a%JSGv?5YN`h_i^gXV!i$_i<$#tEi^LN-xrw3oYbk|8Q^EU5b`rbTjF%Yrf{x zE*&P<+HOYj7a=w*D!rGg$mJDe6d$%|3=Ve7QGu4c#YRoF#|q?X>$%%o_|$wg`%C>s z$7+|P^e&&TEntpknZQUXLVe1AuDKiC58V>5@f@4IxAtOnghJWjQi2Et%{-l0Ye~Pg zk7fi~eW!&YT}h;spZ4L|Wg@wLfLQ2`wePAZbW49?8Uq;&*Hv%iM;s}Y8$En=i+*A% z1Jgr1o4?4+< znm|{8-MeoXb)?k(s$C?ok$eTb?|CF&pQi6bfyWw0*(kqZ>YmX+x{_j}}@iWr&YAG*`_NEJ$Sp<)Opce)Fn%O}7{iWQBLH zZD@`+`Wc_En`_6@tckj5h_CN8QPmWRSuhdvHQ*&U_x+L=FW#1+>63Q^Fr&2tMDlMj zt&BF^6FsE~aJ>g0D6TER@(#&(1fEX2N{P#^%`*H;_7Lu7C*jU+0 z{4QC*(VyO+kWs}^vM`M2F*9;1K|FgFdo9v>M$NC;T;)5O;`gnheBtBA)|egIGNEL4 zrM=j1^sNg9rB(n*&%bLcnq>AF^e6tqz@mGY_W6`UN*&4)ey9+Mjlc+q5rN(LQHjVK zj3(x1Hu_DSTwVcRf2?C}o8IGx6jK?faq^tpPYlEvKVVWCe`+A^-QkB6(+Ie_%vB4r z0(rS&a`${9L?Aog;wZgB+_QVu4=Lv>!2Frc*U3FI0mjNPfmQ#dvULS#=PsXJ2#Bm4 z70B$*bxOBil!~`Ng8tJ$oS*PRrj*%#Q!!o6+3oWIwu%vf{5+Mb1*Ob#VZu+Od?kT@ z-fUqe<1CP#les=o)0v7&pe3)+t%2H@P=v5n*evHQklA18GRp*eA;l5|5dX_Syfk3+ zQX>9RN8GdRzKLiATGHmMyp*0jlk)*0ldj~ibSh`3b|<0|NbGG?w4Pg^*h zayo%Ec#iH(73R4hSYJzu2TSuRrgA?0)eJ^78ko>ZjtLyD;cHt*})$u6aKArJt` zX#|M3*7aoXw4X#dB9PhZR1GVa*~_+UxbV_VsZfFZ{8nE}MoonYDE*y|S!|C?g$k-Z zzt>Td_!2Zr_}>bx*J>Ro5}yS3s2q}#&c`U7%u)H2 z4j*Ha()lPqqKCawI?QdYRp3DVbBHjXh}11F{qaC1UY zx7Nv{x-?Nopu5he+8*FId44{doSIw6rnhI#6;Vm8_d{4hH8l5{C@C+IXL^rCn{!}* zoHh^_KT**(JwLy9YA&0fnwy@uI0Zj}E}Y@TjOQwv(%S6BOu$=^KQ1ZE`RScA(=$5@ zX>~+ZDm#eE=lT#`#>yoKP4@bk3G{N^^&DE0+y{WVuwU}f znd+W<6eE9(rPf^6X8i4m2=NN8E?bDSdn;tu7aAhCOGR0?GwMdOKbaJwn9gJ*#|F5tu3;E*K<+%$VVTn+!}$H z^5d>7MSB%AY4dvzp1mzX%vX^2Jl)0P?v=EHlqv=hW#4#6HELnlCF#?rP^Ar(Qm9qQVTMeADI%JE;e@b%2-VX2$ZNjN5nNjbaQhnEey{b4Ke zygXC~I^L9{1e%I=Ufk1^p4^KMIvcaLbttM>Q$U3DM^koEc~c;*C!0J?W`|I|bef6j zT&XAKD6j$dFjq0xeJ-%GF)$TGj0!TBdzq-YM@u0)s7`a$4Gn8IJlu=T2hjUKJPf6GWZInbi4&MNA*^IS=FxB(I<6Y9c9JXw`07(v{QJwL_~bM>dg%5T#=MwA)j-av0`35r>HF>iFuo2oR{8Qhy;hQZ3(3Xp zG%PnHlCBhri2ACYKD%v7)q~^lko`ZK_jXVw$#{*GeSD^l>1@PnhR#LUtMp4l^N5L* zpNPJ5HTt~amzX{zCwI~4Tc!)AOje5N0`-*BOS)*|;RR!}yQVH59o88Y*3{($MSyWw z$cKKEcQ~><5=8}8w%G3;XjumYiB}EPiyp813}Y5?dV+~GP~Z3)A0F?CGubMq5%`;L z+L-YZxF9N-DfOV_XoC4SG@W&ojYoa+4H@km>&MR#p?vF3eq0Ass`-f4|F&21C{6lJ zdT33sp9<*7H9kt+4Ju+iLAM>9<-?@)+}G;RefG;;Q$?lgisq!|eEg-0Hv0)qfI{`N z6Ksm(=Lm4?ggqGO@hVm5+Af7{=hl4hKlnHL&(Kr8+im{Qd{=|cwY|1b|^T|Z> zTYb3kdmn+WUg|?kpsOfWzEb5Hx!ir(m@lX2+~krCp~1?e3gioMMlt?ONMS<2@piP;-WLdEL}W{@B1!=r4d-LSSN z%U2atGI!~gFsIVpdLgC~;N9M#GCo5=vC*9!`WVj*b5qjz92b*L{fv|xz|)sIJmtVM z5)Vk~cfEL?z(g*o0QHkT)U4TE>qJ`tkV9PHpgMtxoJue~`8G#(xMa*%OGU0Hz?^ev z%*)jAG7DDoCSE!{u$nI?GUOuouKN4 zMPxD<(13;sCZ`eP_Sfn(F7hb}c0etrEg(O4B#!<{?fA-RTWk+weI%-wjwJ7vB2suZA1%15klZc}^p0`{j zmK%UN8A5f6RbtdYRC*dkrLXt#Hc5^;9x*VB4(hhf z4*BIsf$WV>n!2k_XHhyIp(VJVi{^2PV(9^v{BLzm@=Zxx-i@u}0KA_$c%!ZTtvPrJ zYJY&f6&G)$HI1J-cx3K2kkHr-JF!+E|8a$bnxH}z&_X`Z;MopdUZJ9cf;wwfYAmM{ zRH@$L$8`pM#Tp4PuhVTnu91nVae%*Pcrm>RvYfxbW4!x&K4g+eB^RB8l<&jeh zR`#`CYTbf>m{!2ymwRdTIWj3K>gd19i<(zjsrPI;P$@3zygb9pVYdh=#st!IUoWkU z*&JG1+2zs%R`y$7S`X%X#^N}PZdHC0K+XEJ8JzxrNc2D+aTfW3p8@oEZliOP?x1J# zt8FT5(_LD*K&PmbqDt@`b!5lQiX|E3p))#nc{*ja(R7ca5+erIlh4t4rLH@E^B~t5 zV1ZwyQ&{4qh_C~h(kVn^*TBq=kDgmsdRl|W8V zU+Z{XE`5QVSVB-=>lzm=!MdSN^J_ea-jGpDCz@;Ct4n9W)iO{`KrfP=J1g0lZ#7nS zBsfV6MTzS*tOWa}0`+E|f;hQEBBPRosz7eV)z`ZytV`3KgaPc>&(&T*s(|J@!dAOW zYb%j6bm**zQx$cL=R4e68nYm*(=@E2L?4%>Av@MpJGmRJLAG)10@^CkG{MCBjb@YY zbgQCUr=ey0Idd88Z&*hTig8g!_#l8gwq-n$V#MF;*~m@ncvUf-XqUv>)tN#Sf0q|6 zwo2s`O+Y`}gEkhs>kh>7Z*}n^(a_5Mr}BUmFYTdy@ya2z1$DwfiPnnV2Z7N3$D(at zv{WLr=UVI5U5>ur3P{OgEseXn->}*aQXN3F{o3N>q4-Hd;A7`?PF^^cz*-~PZlZIN z(W0dU*{%=Sw2jnuJnFNY^2&|WcAc-s5QH{b+jXoZm7}#?&$8BS zw6^OSi?-3)u6JnbMo~}#Yl33G4H|6(|`^^CAC}s9rKFpEI?6-Z0 zBbC|j*ob+!YZtCl%Ix>Nh@+L+?}ji(DzpC4M1QGfAY)y~~! zV=&y}25@4(h3a-+HL=_vPL2k8j9)X*oMlUj^>qWwSuivVWSK4@v0*I*tXk#`v9b+#>1GCMKP<11=i@B`0g(ER9k%!)7Qs*jy7!7H{ zW*f~FOfep!?j@$AjJTe;#iGs;6gh3cE{|(y36OwY-dZCaas@;x{hI^Qe_M)lE+~-( zv2*U50~1@fBa{nkl*pNs&4Du|Pau@*RAk?3E)5!{E0fCsSe?5mYG@}~)>*SJ6qc?I zstMg)A@SDuV)AV9aEB_4CUGed@1Y?U^JhsA0}{x4OYW&5_O8x){qAZn_T(Kjfq5^5 z*IsHh66jW7*8|@ucW(p9HN4VwLsZ>I$BOpO2x&q`a?GHZrhsIyZMs(73BS5zH6rBN z3{WN&J*!JwOtq4u0N=5_Lh+akITEn7Z&rEo>QZyeBuKnAK(;@qQ2NcWZ1aZE>d_u` z;t^wwZ%%*()@e$u6Jy2C!=fyChmPbL2f0iDs&;Bvj&VqebdiSS7za5L(A((>DcU*& z`as-y{ZJ+6n@P^&^a#C9W4 zel=qtQB@sJ1{3*)cCVn z1J<3r*KauwaWSLMctEv`ew&M^Lw`~%uV^6zLdkrZ*-`xZzI|QE5-}- z5l$w)u6ZbQL{_|#n*!A|O8nP-n5qmH?Vgx4ov)ZCpo8Bfjc0^(x4fgM;x{CjHJWn_ zqnLLH>wP+9?je0*EF_6vrD&<5ixbEMcQB(o=wnJQGS2}HQt3d^=0{2#_ecsc|4^2H zvvRE%Cu<#wlXrCT@JCCE_V(zGw^(0_JoqNE|I_pHd#7i1X4|Ld7qZzs(=!VxA{LYf z?eU}9W>LI)=+ws7lU92ubxfmFGPeL*{AiMxU31&EWD~PE6~qH%!)p3ca1&YQ8<}X)oJ41*yw+H`ESihR6Z~tnYI_$h+CH%` z;bEj$4}kyPSn;vMvso!d13K_9hdPIua?29vPn|;X&yTB>BkHDR7Lw^Xuq-e2VcJZU zQyHk9@}8pi`4An(rd-Fp`Z^L{Jwhs`5ZRWu*m&{$1UhkNT_>2jcwPcKeczI{$&02Y zcg^qJ?O~>P?ErP(r>bLarzw&xC$n?YGm~7Q_OMcp2(<2hOZsX=o1JnzV8fnRN=l9AuvEH!NDmfDjxJ1- ztoYoI6b(t{oP}nyQj7&8^EKtlDasr+%GV9Z$$iRoTiBH>HbU0&12&$`N;!4FejQ(} zo1)HPrg-H7yyU6E4YYC>@1bNpnx;*G+AO8!>mET?a`$$tr7Y$es@XiMK=74@C$=I2XKvu~UikB$_pAbl; z8QGi5OB`1S^$}OAe+Ru*>NTSc#K~qqp;6MteWhBYd_GG2W{Ksd*8_5HqxnJF@#t&up^PP0USH z(R@LLwA5N|tgXaO%%F(&7j)x7LDkY4-T1xO?#4+bqU+}-*0ObQs+@sBcn!|S28mJbp z8p`H=Wa1^58Anmt4=S{kZX@zubfjZHGjK+$WB*}d#p_tW>T_)P!wSnWyke<9^Dj@L z>7JRXh55;e*{N)DYHlH$pSol(6^GJPPXgM_w@v<<_05kQ?cLC=c~1^g?66v_?|~I% zKmIoq8CCSo&+ejW4%d8&*A`irOLPtwh|!!y7W4rwh4CB>MCYdyM_1|2CY__x86A2^ zS0p!`pGVBZ3H#e+i|X2`pO({lzQ4Z8hdE0Ui`9xu`PNiH^S<&Zqi z=}2vw;54D+eh1jcc^!*HpRRygik=q@`e($dS|`d(|L+!*aqmigg#S zq|Ds}6KeqIth|CeO^HQbv~7u^c-4?B{#0Qt4qAEYDMbe~q`?R&T2VMejVlat zihwlCP`=5!#Yn?LmRpn~1u|Pco$ED9rwRpj3u$7B0J^lQ_%|4_E_DNz!p<&h@i;ZSbfB26yC*mSAu&L5gNkKPd z{f~>e)LLl`TQ00v8<0=Coy%ocCB%qmT`zYLDSIi_b!n_^vRI6a*7aW0!L`L{<<=EgqN-M0;?1d9!flT)MrGzRhXVK)gFA#}vrTc+8ALkb)7WO7N zg#}b{&MoDV=~IZY{6wDY91n%@JVlytS+#<57n35mqA6ZMRE67G@iRxWSt-W?dhoX< zWeyvqdaxyc#l6_+lCC{;LeSJDAjlJ=2K@5LgnF=~uts$Q0WnWe^zpYAouTkfOeL_M zKPz=YQR#}P7!9oCFH7sG(86Jz7!|DKDb`AQLpt$FqB)Q^SzOhEDkq?mQi^cT@l)yz z=ES&x-26P!m3?7ce;_C3Hp+}%6yUZej1%LcTKyFk)waQvau|7%ODx;q7+f)BC_>#{ zQby)>dS=I-B%TXII`6UZY*xyt12*rTB`-_r9A-*a4oTW6 zL}iKVIxsP%fqoL7I`tD9G33DHs~PBv@TAR6ZT`A0OpX_j)iVfhhm99@Vsc!tp1W-B zdfk|GJy9LzhMJz_5`^5Cm{x>*g8;2wM}Z4HXIzaYzem5t^ZjFa*bWh?J5s~?=IOfFnj*!%r-zIm%}mea(j zzzSYMr)1|fmlAcvRu$w{y)_AyF`q);J~In$Hg0|4L?TbXy8y7u^s{$eXfINvr~)) zR`20DH*@M7X3C`nP`9~`GUjK!Wl1S@C`*2u&PzgzspZGc>*=L9su9)$Qtp|J-ep1r>biB` zuGX0LGRmn0dE*m&h|W@qci;aw}KsVH<8wM>=x(5{6)Qitsc}+flf>8+MnMQ=kSkiRW+5EKwI5gLbp18a7+~*ojgQ z|6W(}S3~S{JI&brO=!kpQyIr-n1f+sxMppVkV-Df3NJC~bT> zsDqR?WK&;YqR|CC?WOk6Is`#XAL8aitM#M1SA68j(E{^6JT19eYJ0Q4LZu(aY^UVq zUst^BuaK)~47wdxFy+(*>?fZ`cm0w&Qaa~~H8B#Z#XPm7jgaz2OS`jd9rz{31G(5W z8eV%aSfkUb90F6W-Iq(eZl^`Hc|~Kao};Sdr6ppo(I2$3wSMHJIkK5&m2yI)t+fV2 z_U#)SGbZL|po@JfN#=PT#En^kXaYn{cPlxnQMoaRg+cMeNu@n2QQHIFc-e{FSC1xo zerQvwq&7*!AF!r82YV-bRW)rfU1CaEdZEqXyo2UmU?;`|G1S#Ihf~CCfjo|9eV<~} zm?UaLe)yki3J1L`h2$V>cV0~&q48efNO=i(MeZp-&%q)$><0K^e}(8f*}!BE8A%_= z(=M&Gut-PM9`;B?p!W}O5c6tQoT=ou({H0x=D`Q(gkW_d>YMmIzM^O?9|Ns z{Ka&q;9N#BYcf@ghC0sEbib;OMroA=C)JJdfal;{1W#f+r)cBzZ|FoOKFOj>TS51) z4#-J%mLq8$4@l5m3H>^Z-svX5M-jm>bf#BD{h&Fv)`{KejL_bsQJbG#Gl;GFA^$wo z(P$al`^<%uN)gh@Nwz^sikiJO%9zO*t;Nm=BI^E?XUr7hzSUuS)ncWXI*^%v)xn}{ z(mF^)j0Ym)$7|dyXv>z`%dvWh*6)d$g=;r9jWrv+jO?l@Fk&l*&ZhbU`$)BZ?%`!( zZUXQBMIC7{X!Q@a-39PIC2y-bJITjeS-9g@y0#2N_f*;h=wju%kQO%SmitNC^E>0^yStSv(k z+mml}gLQlI;E<+{sfsah4*pNc&8L)TEA7Q4>dSfo<=hNJX?z>h!})9`x(RkJzbeHM z6*(5LDfgjs@@uU4nHA)NuFsi7MOSPeADt5L1wKcsLULL%at;P+2z*l98`)C!S{)L| z?d{m8C?FNQ^YBl6x>bS0#q~UMXtsO%N&X|_1~l#S|2(Km?R`|?k3~h+`N3pQX17g^ z%}&fsq_}AoN##FMMW)6YrBq&HP?bO`1Jc4aW@093c=M-5HqCfrl%Ljo4czQAGD(#nYwM0XjI}9wL&`h4PGtlt|soxA|SZW&wM0 z8pS>jRaiXzJ#{G^JUBf|DPqQY5gGp@3LmCWdwpvA3=j7#7bm80bHK;(UCR$wSn*np zq~j@6pJZ9grG9evyvaPNbf9?T5gI+&_KRo=tFaoJH6i=;NCR(vVz%EtNC({SioS6Q z)S5m-nRdm^?ei1a?A~p=rY<*`DwYytyB=jx>0_&S6@lJ0sXtgzI5j!DYnIoM&Lob{ zy8}5DPnc}5Py9soITtfQ_?7-XU4v|Vn7;|lLrQLK)y4(%`&b~)qN5b?P0x=?rG9IgQmcxBh zJ;YeZD?dc1E>A5c_Ffi?2mHs|sn=VrV2+ntxY>#6xmZ-tzk8g`(QI<=;t}FK-oc|o znj-N~6!!!jFMgU0oJlU451aT$8`-2|qF~uoj%Yg2jPaOW07cXUeiKeDLqkHb0+9bIquuzYu zNeaV4rOW*Q>QfvkN~N*L3p~|EO&Q?^w3aQ@Tl5H*S2bmn3%Go;?R}C(x+wa5n$6`D z(JqK5USsP_qKFrHyVu!1CvDUVsC~MRyD1`HfcXqBW`gK9kfEJGI`d40>1jHOb0w6Q zHC60e^dy|XSB!;x*|T(-0%5N-T0q`ph9&^nwimQ*zvz%J2$WL@EY7n{3d2FR95pbX z#Aj}7QFczz8A#_-a`rhkooP55=imD6V9!W?or58=BJlBvVPdF{66`}o)if;>AJ;AgX4ehbM zq4LcdTBv0s#zi;ctr->}r?SRPa0@NM{-eubls<^*MsvfDF!}9C9;A|sPDFT~DY>a^ z1Mn};HxNPiF6U~%KCl&hr;6VTDGmqkDS3NWLxMwryA%<1a9&{W)(zUFSSS+uy&q%~2=y22x)KlWU$i;JlbTJ;#i_aJ`nsb%!Etr|QpIH`{ zVxoBc#RiR(Oq)=0y$5;wGgNJ)(0fkY^BGUt;L>WW#^Qp`#vvmoVcZ0H3DAzdLnq{|^xo70;rI|5vOnUCHi z84{Wbc(|&^*V>vgOG0(UD}2aDAsTv~2RBW&v^CHz93!vx3?o}&nHojLgz6eEcjPNY z)`V90fwW((uB0%{Ibs?c33B28GIEI$*BY%6`#hAr+`zFIR`wL>_t4o52aR~5qBd>j z7O-1)CCUD+pWA7(H&Dl#a_LWz!2$npH^=jb+CO5?4^Us>>Te=ziM;SD9n_ThBeEWE zHS$N6>x4NZ;PdMoT~3upqTKFP4xba`k{}DYm7_Ij@<|kH>~}nG(wq`d`)V(D6XcZu z^EH0V=-d+N%%}aUnk2tOvBgVx-w2JbZXC-d_AXpBKe2;$;M}d0SiMVZI z=e*~VUa9RxRh}2}K9z#L9L*+8j1|bA`IM_0Sd_)@!$j4{Th?g1CnmF0_ltr0&M#|T zR*13uM6!8v4}}SM3Ml*q$NGh|?4H;)#S_*fHD(AXl^C>!zqIh?FG_)k^x?KOPiccU zA3G399f;t|?S_9&;wA5Y)=9tL=4( zXse(c4{-E&mqJGc#To&8@79_=J`!Vces+eo=48(CGg3^{BYZMf%L}b%O!vTPF-K8c z{@YsT8Ev`Wrqd8t4)f8(E}2P@e+Q5goZAZmcTRu($(Aorgwg0Qb~uf zHCEX4ScXo_StLOxa(rA%(4es#yQ>mKP>*xbtWAhwegZ4rt2L4}W3jPs>`;RJ9KZ&A z*pEoJF~ms?>a*OwwsTGD1K0;Yh@}O2jW^fyEw!5c!*of|z)=Y?;^u%(@Odsbt*LVl zgpwlxP5*zj_K~Zn({!z4!%|A-2{l!`g}N~u_UQ!O==dT~F*}X;_|x^gyo56p~6fy~ZHc(+2eX6r$;6wS4A6(pVerXF;(b#Tt*Q zm%pmlEywI_U7~Y3Bjpm%_-hA`G|+_<(};E!o>%LEZQyLNohlp`3mmOD%$w$ z#Oxv}G@GoH(+A|_Sne3wc-j0#6S3ear3~^a*DMBk<#@m zIXO6%tGZwPy8!5a?r{<=2Tpo`I>gTWJ z-Y%`-R=S5~=hXZ{ih4b&44$IALWLKfR|5%solRYIZiI4&*H>s$Gm~?d&-$1tmKH$W z;YvD7Je!$fG$1K&aHw;bDc3#Vi{7Z?Ws`em7N%yBa1`j@nU!=BM=Q)|t^%v}CNGr< zI2)*HolGA0%^K#VQy0_KA}O>U#W6ot^{uVh)Qm#3nJSkZV7K4mQs}T$svF}0xjC0O z`qm0>dVYQ{omn|Cvz<RfZalPRkKJGdTDwQM@GjC9tzrov)W+3mZXyjmWYI_RlLGji{ zDjijL@hcdx2wWBWdz-rW)dLa2yG*p=q+kz2r4oat6;4zc`PMucP^S|Y_f(QPMpveR zc09pcNky%_oKjlRt+H<$9$}gGH8Z}yq0`24D2?%@W-12-bGIvJr&6vBXXi2L}B0ImG7&=%^(q-F7-`b%rUtf;Qw z*5ckK#q3qOL$le4y|WWl()*SF=FzcYk=Np9RsO%?zC1j#s!Si1MIBK_0ToeOc2T60 z?hcJ0TAfrkvC~ONRhn)5L8fHKtaU?K}5xIoMBXSMqE%)XIudh z5QUN54RHlr;P;)o)jiug&-a{j>-RkQCx5;5?d$yx@J}C0{gXfxo%{M+z3RRngSv=U z$e8Nd58oGBwCDw-MFSE?TQz!ri}vx9@`aBGtYy%Q=;2)hq&c6Gc-kgkPmkNTT({KF z7Y%KRPJvjnsw_LwfSl}djnbOqOOPl(`j-?<*ajtI&Bf5`)>;OE^7Y746+WLd_v1a} z*y*`P7&PDdNDr^0nxs$p-Ja@=SPK}bRhzSlnsU)lz3_7h&C9Dk7TXuIpDR-y3fkP? z^+CG`pOmmR)>`#B$E{oBv$v!XG2Z2pQ%SbwqYhA~C$q5E6j@yw4V9vVtu2;lA@<|G zl;(D`?r(Eja!4`bok_XrXFmsP#OSSH znLw^SqAAv8sm%%c;?i1%W5;zw-G{R>^fO1YsJla*M6g$nJT%y0Sj~Avay=d|Nb0y_xw2CUL3tK}iwU_8X z9~|$dt(NcGc$lA{4)hn}4z!Bu8sX6kqz76kb&vOG8))AYRdfnzS*_cyY;mpJL5=kN zcs{f``FcoJ9liwutOw&*vD(x3LZ~BgS!{!=gQe)poz8Ms%0QO(BN>eXy(=1u@Q0;3 zA~K4ZR&%TRxgOi%ExzR-viKWAsnH{O)1|_?VlYYjDHEmvG#e9m(D6_!RZM4V2bIwc zMk?KH9qH(eLXHz-qr;oSN1XL?-mCTfoA9AMG?kfrEK8IS9lGmf$}~2zb;VMNiP^)= zDb@+og)v{8L>c`tLOVlFrijkmL^0teokDkxTKx3E#L>OPm+>KeVwtg2o+^xvQySwz zKT#f95Os@=>dsl<+io*c>dsxz4_WNdxuGyQIXX_)n^Yow+Q-Q~8e=>!lC;!>Vy5y` z9Z@Ba?QM{Kd{pCT;4DG3CGacJVVauQv^fZ0tPEXFaT6^XmqsVX4b0_A6Lsx>4Y5@= zvym-+R%{CV5+Z91=Svu9)NfMk*h6^mMJO`gqvENIY{t-n>#G-h(;h$a=ADbtw> zH;qeUwTd##V$+2>u@_TS8X{3CBPZW%dMvr3n1}p`IfnlvWQh>_64Lh*zSXw4@(tu@GqhbF@{LdeAG`xHx*?@#o3<9h<{Y5uhD1hl zb!sY!V^D5-hqi!EPwYsHQd(kcv{>uRH*=KOjR|!N%?h2oA`;!GL-UR8iFPbC7nFlR zY#)Jg=}QvLSZde0vrUsC^6@O17)~3g3JSIUbQ<>U41DRnrLq)PgMOSytxYG9)Iyz2 z8gDN?Pbs398%Y5u3E{t0;~+7F@T*BV>u4M%N6h$khsmLhtwH6XPgBzoEI(2AGy z90T-@ev(KndV)YVYqsoAW^=PZ8y*a*GgVJrIAqXnyW2flT|h7^&GOiTy0b6NXKVS~;MxHGhSrt3jimU49-St#m{{ z+IM?|5Hy!M^=8A_X8`YXM~vi$Ybd7dBRuaYy<#ykFyz|PM)tIK7AMGigYfARnuiTS zOWphe(z|^ntTM&R_FS{&{1OzXC!Zl9PA}1xq-$&j9^)567qc%D1@2pYX!>!I$lxSA zwK(Ti6bS9kn7Z!FLcO}4Zop~8anXjP-?1@$lckbf zfPDIZwI8D+ssiNWS$ZMM$a@~8<7on9a}>z$A?n2mo7i;pih*Fh(w-00lgB>MZV>q@ zp^z4cu$N%=SFKSirqT%xLSesuIFfaBIJ}s3u?|=rj}0XL1fdbW6cna zv)S5QrMuAa(>nuI_HH643aRW6ae;?hnJBXEE~AmhqAlxLm8o1QqHV~dGCcLt8v(pL zIi_y0w%DW|8r_E9DmyK{AF)K7eMnpGjjcg*`+OA8IlixllDjT0#jXK-{Lr~ zqf@RV6V1j&v*ABbt3mh~Bd&pHHpeZw(&5DMJ*<)r7x@)-`$T>sMjn(I&P7I>p-(a( zQ`Wt0aD^i#m?8Ytpj#qe%n$L&1}Ym(*N!{dGx)B87-ezZ{D!4ZC*IS1x8gTcWP=fT zwcvjOlzXuwi)Ou;Xn)H8h3#rdmIx>|yZ1C=d$A>u3qGvaQY38;)&wx0YNXWNo=}By zf1F>0UvbHff~~#iD~DfZae_JJj0W5Dg5JundPv(uk>Y3Of-03?D~Nu+>P7vk-z11( zL(WVho2QltzKm?}w=$lQKsFw*ga=|gF-PcECAMp9eFD=@C5Gyvp*YtTXg=y9q%Akm z-lNF<2#ZepCp{h6*tya}-H6{M(sTYM4b=}1W>A7cX`JeY;c~GY&|Wa@uI5MG?^E2@ zI8HCnmwn%fI_?1ptW|UEy;&l=*i!pLOpTB4vryjlM+wKbyim{MkvNh^6vic{R%~(g zAJuq|#kH1-=p#c!GoiIl+hvzhu{dI1qF_@A;_UG$+T6^*pto>PH5r4pgyZBMHds0+ z;_lI}dNk!OqqQ+rtA=EU;8R9trWkq4=zTHgRt@=(5y~MZdo=m7S)dW0@1f8~-4ZcOZm0sP&cqkPDg4)G}hmHpph zicBJ6(*&mOv-CwmX~XD-B0Y$?Fh_@^mRz@`(XP-{qMiuR=pFCbu#X@Ics>s;8Nav} zuqdMqZ%{_GTt1@68>D;;DGSfW%cOD9P^B@SqIGIJl!M4z97I)tE|5g>iasL|jXFoF zfG&O@l~;tO35=~B=qr*_QyxZW29dGxkj(C(zEWvwG8nEbR0E~Z<;o1<+?mB$<0dWC zjkqI=Q(X|3x%CzSn}Z1Pr&&b0rb!(-4~U4DKhGj|-FS&`ev!pdmgLyF0X*XEG0w&{ zg_7x^EiM+iym709CARWrb_QJ%o6JVGhM$c zUWyJ1!D4eZ7?&Bzr48ZTFXOH8f@jf7u_bVKj2Cb9Hk#WT!Ip7acWPCXPg>YiTC&p@ z5bA9SDurwsHHQuVy0d%n=XNP(XJ6_!L7( ztxey>x!D4$I9Jl0q|&DGVtLfZeKHgU7HMjjAUS(3&@)_-p~!>ZvQ#nRyZCP>Na22H zeU=VZmW%6(Q*P2i8S8Z_Vx?VmM6=YL%ZR>jsc7AWW6?T zoAr+u**P7u=(i|n9yH%FxjBd=^>zhK=>KB9+G;8vUURJ)Wd$!XVlFJyT`?`atb>Wp zT@09Qde5aXtAMg)i8SYY>L+A1$6ZemU;kC1G2GV5S(XC|g%M`Hviyhv(~m6Cp3Ido zcg5~j9M*&AHG!FWQx3Uo9YPnBUlCDDHze1Jw=RQDyF$BhRdF1_71i>+khnhhoD6Ds zC`mji<%(yC7|RIn789Ognrt6r$=bzhsmH5$&f6Ynt7|6Golu6tLMqj2w^gYst!FlU zKz?^*=o5%SdoeHd$xj0`@aDl`>MOj7VVN=qR2McIreft3iJ=&rs9S#UO8)( z1yNkf++X2tt=$eaS)}OI`AXf{1A>~MtY9}=v($}pt#*)?I72}U^{DQ8jS=;|{-#LO z^kfs;ND;?Of zv_x;wk3LnW(URJ-QGq;<(NV+XC|`Njb>4pHj_m_bM{qEM=X^cbl23{k<4)+|5J856PJF6Bhk9$I zlR{!Xd?@hRKj_gVd}sJjaI1E@WAsJZxWA03sRvi{(G2z-8kQKsj*pHw(uXiV-;0iDMmnpldWYUaR}Kxc`3rL5FX_0|W>o^A>$da(u6tNu(6FM70bBfWFBmR@)%Z<1X$J9|Q3>oybA5^WonH-$;>T&2Fy zZPg6VGPAv#C2u>BY=4Uh*~9fbR2v>;z+6-g)w5{?_3uv-t<7-PM~4%|sQ*%E)RSU1 zg`f^yr=W>6j(lCW)^?tFfSUU_18S#D+Xsy~rJcd073DW)E7H_L7TYpc0UE!cpoQhV zpVj#CzT6m~iQS2rX!Pn3EzIudyRL_p=ejn@qUj zqaFr_#pksp{=9^Ey_Z3|qUS_HWbqcfYxD!L;T{9so%&+UUB6Hs^~?;-^xlow)@{|= zOY|Iq>nsz!ys#`ot9GEBEmO2(I+&p^-`M_{3{4`gXEevrKcH`IUYwy%pmy}fh1vW> zlf!dVJU@AaCB};T1*c{B>LG`)_*$`v@`ntPrSRqR5?K68GI%0$@Tf7CE`rz`ev^Xg zClf?I=Ftpd_$k0nUp@w9gfGu%YK$s|!1Ov)OL1-NJOOa`I-OR7NwN_wIngqb=R$;7 zDi_MrCE6ETJCW}+_M1AM?pXPD0w`P)Nis{J<_Opv1+~N(I)xT@z(xgqu+K)Qc4ac<>bi)9Sj|=jln=IVc#&CR8;3NKMMparkZ0TC^Oi|O{YCyCO zA^5af^h$J*pKXw=VHCl~1U~Bb25LQRI07C1z5&%T2H{f+Vrtuf>t)vwXz-;5Owl=z z%TBHaqk91bgC5b|p$y39EAS1s8E7;Pnb@c(TltWJs->N5G_>FGWd+TWbn-EQb)Kw9 z(qG>k_4qC}p!UZDK40Onpf_(1_%Z`#{vPl-1|Ijr18z6q=IsFwF>p9v4;UDz%+~|H z%z)^}10tXFjfk_o>3UFIs8t&7RU4@Hf1zP|sGof^+{vH$Y@d-UFap27{heWfW zU3*C3VKNzttBq)P{A_yjczQILSgJMXV2dM;rOFYzglTFsUbkWVFu24fMG0#Pi;7y-Guf+lLedQwVZ zy|L6K`))Qxh?ND&Mg%+^%2Fs0O+w`J6vTpG_M|B8lo_7$WYY)g;fEvZ6B0}YKRIjZ zvm^RwL4a7i-*K9XS^>wLVFv(nPB5^s9$9n;roDJ%bcEwP}8`RfZK zxy{lxT&ua$`1}ta57@!KM^w=QLQw0EZ`s^K?2B(1%Hs9Kw>(Eh^y6EAwI3N-f{>y| zYe&{F7U`*vtPk{R4~S4G<6BNM9dU%ilb;5dFNt^=Vm7-SZ?OS=wRK6PF(D?c9?|2{ zj*$=0_uLFmBP>rm1zzT>8O#p3HcyDakKU2ts3qL;{V3q-TT(puC>Q%>R#$Ew0VDdkGd!)oYPnRxfG&{tH18ynNkV1d~__#IRYCBaM$n6>!Yq@EeMpHTND#a|L4lnmZEtpbV9HYwout z%@tJkQ*-Audh^!Y=V^#OG#6cDo{kW;_C44CpxC@2vPY42M7kq8bhdXzealLOMQT!| z16VQ;mnM`0oEhN=l}t{G`Jv4+=@xI6JQUfy!1R(aBALCbN1q?MK(GEgJuFlC#Mckd zZ@!K0;7*r{Q{xlm(P7gw2YfU@*|Ea9dT8q5Zax;!j$38Q+%4KtPl&ghn)Jr?bb0M+ zk)$anwD~jvoJN8}b$p&Ut7u+(;_;(XW0MmT%CLh?51NB*$>IcS>K)S)PHaT9|MPT; zpebd3-r52>c!Wfs`-@v>Pq`vdW@04U-&-tM+(f>E-jEmL=Z!0ZA`NMWr^dpG4rS2F z6W(m;p)WvgCeLU?SND=_L?C+58T2*ScV$gY z5rg(tS$X($f^N+FWLX-Qn7Cd5MUM9?cpf|*(3^{Ow4hN}jFHVxWcfdl5w#V4pS=7a zJu;s0Z64+>h_VmJlu?c*t0k8*)aU)6hNX**i-%}y$o{21sHg}R3uPF;p{`CwYCgOQ z@MEu+{aA?R&Pzn!hh*7>J8q7e0xbN)2DD&qNd{zFIMU6gtSj3p3)DVx-Ab`!zv41% zo!;t=^<}(3ucpq?3WfRk0j`!JKYf2sODPf!1e!^(c{*g#(ianrm-M74;vRkQ-I%Sk z!tXqz8z!#V4A>a?h>T70?7B`Pz--`B16sJ*%;0Je>X%<; zqO|UOsnRl$IEb`pPZOP8x>E1jqX*ja(H@l|2lnw5EvOgwq|Q(53uu2hHjQYF*inB_ zbo^DXa-*mpIOjCTyZ(auO)-T6%lOO+TT8)C!2c?EhJ`q`r$Zgy%X|7F=l*OIXt476Sz((5Fgj-5hpj&yWhggM4x?>+~3HvL|-vqIW^9t z;!jMfi%N3pldcD1KE_zu2`M%fn0f3*Uk&tlXb>3N-cUYzq9idfAz1EeX_h!EzVrA% zto<<`bDgm4F7wfS!UANrN#-J1wksFW_guTi{fU^1!jGtDQrS9!;@kyKOf<4wo*G>< zT`rPecE61dviY;)I2ROph&0XbCvWj;jWcRxt0Qpl0 zxw9k3PSl%p2|IgLG|Sr~^#-X%dFbn*Y0!Ih-U{#P;ae1RLFPRc)aJ}-^s=Jt+PP5+ zQG1>R*TW7X$cI0j#*XUR?Md-eW?>Z0$W~aK5<~ykA-!hxUK1a=>%;)9c#igoyOu*3bN{_XSph7G46iF zl1m&+5$PEQG-JbtPa{Cx+k&b!YuKo$L$!|u)qJ9rYbodjvwcm-K6-#4*SIyUU&!mk zdK9?NNG%!gL8MD}XR{lDD88leP-~-(LN)8h=R2LHpfOW-eI>~fhsEm#f6MxEH8o{x zE2>>?%yM(F(y1yVJg$DCnDNZ4ero9<8wpIEzMu3hMJzNF)Lbl--G5KRa^Jv0S2B;x z#tSi3@cOM3>T_M4)}F*wfn0C5yL7k5!@Kgpi|>=ox&`V&rS0b%59CXKn6(Rm>dVUj zN*_@9+n}Iq`Ur#V0nprN50$^h^O0POK^fh%vVK6kz9Bcf`P6~l)9S3}7Fa=5T^wNJ zA=-|VWY~1Skq73P&(88Ox^m;nNzhfBNT#Rstxj>gG&(WvzBz#MsQnV^QoQ7bqnG>s z7D^AN==&UmtR;_J%RqU?{yK85^S0;ecpfS&6uq9OBZ?f(oE)<)6V+MIHzUthI?fl$ zEjD^6>C!SYs%c2Wrxy6Vt%)D%S&wrbi8S{GI-SlL9@3)&bUYEI`=Cb$nvrwXql3(- zUi1jn2L~s(p1SfVb{-;OY3jqb4^X!rnqZAhOst=t6wL?^-wmRf|6w}fT)nZS*78uF zpg8(M9XHO~O-&|tGy|3T;W~1=>tn+K^tE23U{8pta|_o!RDgrS#!y%aCO&{6&;` z3?_)-cT>gj^3-OOK(oCo!d?NfwG`Sb_A`^c7$e=H-ZJ5Jd{FCqP_O6g`i!pqdgOE-uPz+evpMqfKfe&Bn7>t++0*+CZlV&t&P9 ziZ3jWHXw>rI$wFd)Pm|oo`Ao{NVwrZz0qmybnKfT&3#QWAqh1oMKq4TxSE7;Z?WTQ z4%jE|4m+;qe7U%&dN@{+thPwN_qrgneVK%ntP<#o#H9~yf*dDf8V3AaG{nu9%V_F= zpU+Lpv`f4{_zDTDCfI2Dbb*bD>e_;Y=^OfHhFB~@yaDt|3D3}CVxu7) zc|)?V5Xvk>qlF?lsp9Gg+S7WS5zl?@jkSIMtr~p?UE5Z(f_tU<0)^@n z-NQZ%s-(vis_CtgR&CCd`fzOr#g2&tb#i@ivxmKKWHXZzmIn_Da`N{lUwuqYjExR& z4#p=&ie7eqK>zoIl)mXTp15i83c{yPDQJ{Qy80l%&s~$aKN-(BFz|E4vO?T}?-R81_<{^Fn*>#icrI?R|=0$d>K0Q3?yG~9|O-_`G;+CtM zrl75*bt;;d+l^???~J6ck^&ckPZ=xf&XMTVL?=O6j)@l#0l& zo~q<}8dSMmYQfB#)@K+v>?7i%sl@k9w5rVYD$#pQi1Y@cdbE};Q4ovQBz0qApPGwh zqgi&umQgI8PW-vJZH8vt&w^5_cJvyTL@#BeA#CNd=f=Z|3I%&4V z{zFN6ml^T$?-zZ{itFAlLf-C5E3Vd(=lcP$(Y!hF1IfK}>dF~UTC!2mZrF)-RQ>oX zAKBuA4kNv~Ci&7`&>MX}NzIULbP^}nT2qEhY;Odnz@NyiOEA>3z@4Ymu zn}ld^?R*NsJo_UiJfmyp$`JK(K59eN96K8o_}43psD@Ae*c?XwbvkP!LZXtLxb`Q} z4)>%L*%=kg?>1-cQ_#EAozdJmo5L$D{ZR4!-^-J&6X9LeM30YT@ps~$$Vpk+v?PzK ztElgIau&%jklv@}v6YGm3qVwtPHVn|vYLChkH{UxBvnpb;`lKGA)A74r^&W9nphur^jdvGk)Ca)X7KFMK3kjb~ zqw5T71AHt{|2#jbe*~7Z_MmOE#Vl3MnuF$fjTEUoF;xtP%bNl}GfRuUh_4B*O6%H&s@+zLmY3)YB-dWkkfrytoap`f|A8KT_~;f{QLS=S(*ISc zH>^#t?FGFcb*+VN!VQ_Op1k137$otJC3`n2&CP{+b!X7gK2l^;jyOJ-NsBLLfZ9L3-%5lUxQiVz1aU8OKxb%+Ev>T zP)H8KZx>{z&9^CwoJG|5rqOFtCA~x*tWGVi(38nOfUD(bCeze21O3xyHpOV({(C(y zaL#>@PJdCyTk5u!n)EhSy)j>FsVN?tyB6sR&$XK_UCNp%BWW!tLjyJ{=n3s%%vrTK-Wpk9|ZV zOYiM4vYy8*s6HYBqV_#{o+D&Cw@}&QXthYA_R_ODfg1ZNM~wn=+;^F&?bH{Yb6B9q z59nT5Q0rk&58b2rnVHt8OCMB~Q{!xZVcFR`oOJm@9XX`67QVS#RUVq>BBKbuBu9Ah z5x5VJY@u}-(fVcCZbL-1^k!3N$>0toywi0G7n;qj&fg8AK4VM9^w8Nr-<+Kw*Vxq6 zplXi_5XBww^E5CU7)ti|qr5o6%r$Rm%RCkRV%rB`d`dyS)RA!)nw8mLA#SR=au{tT zbY)!UEEs9fDRRC-zIMR$K@FR)$lGp{=@b4vxfi@t>C7vvWqSmmyPuP@qzKu$dPU!a z9F+9tBWn?eKJo=ie^vD3D{}WqAVyv38nY5Jd!2KX>tocwAC7MA{-^rjNNU;OY}~L=T=0`PMyjL=TpaZ1A6x8DPX!vV2)h z*%GvD2Z%Q%-YQckyo{GF0-C38Pa^Zi!dTw()IAek3M{qR#){*rsP;vgZXIWPBT~bQ>E@d})KZJLL#X7`%@r;CvV&qnztJAuDE$HlAa-NR^9W5u`H(cuU`5rd1#Az8dItnN&4V$w_ zj^`&G_UK+kWvkjM<)c}6`W%wuPm*utBDAXW+gp|xBEB2j+~cHp$=q=0z^C<{B%^uA zd{OuC)iRoMwu?0KWEIOphKumtn@qMM9SK*Pl~ZzTokZQG*QUNDeDU7j#TGF2c|zi= z<0~=IHl%FkTLf75aT26Be}L z{QhL$ir#da4F`_V+sGCA&&xY&U>bO_itXiI^GZu)_)N0zHzpF)Tkvd6LEFr8NmU|p z+4$5%FjMce)#Gq{R10co(9I;|P^b*ZFHAq^q-ut`efLUB{*mO;#t9mwZFC zX0`3;qtQm~S&60)Rx(o!*X9EHG)+nVxYmz4gJ)ZDwI}S@yhWYCHzC}h*4QS8cs{lz z-#v`<_RUso_jd`A?|Tcx)rscH8FjtSF<~beoF-~6GRmkfN$Ovr+4QB7`+Hd^*SSkU zqxprG@1juW;@m86ojVt3Kl-f-lAlWy2=Q$OME466Xp`+c1EQbH6X;8?x2vc=Hj^wq zNYvaPm-Uo<{$O2pd2Aa5na?}2)Wxsb>O&ANB8t@S%p!WZeTAauyL7Z@W4P9-wUl8C zmrCSq&d=g{yf1;O@Kc-b8d>Aki7UP3&XS0%_2@Q_MwCKhnn1X|jQ^ za{`p>ZB4j3-{~v`jhT8=2IFcC($@DRl*N|Vt9=6PIX*Tnm<(QM$JL+4VsjU5MP8&J z3*X~TE7I8anhrxBwQ@nJ%smji6Mq1@_yiH`PAeIQyo zO3R4OuOuCi2+>F)*W;l6=KB*0wKXCx3hIO3o9MqN(MdH8M^pK7v)J47iHqkZGxunJ zHX3-z;ew5a_J$rzEHB1epclUuLIVsM%~{vU9;zBoGa?I6)50NFrU>~(3UY`^6=e84 z58djK+3geg96PdMU7C$-nYzD(^lFC{`SdOgkLT*S=CW^7(8WO_FWq2^CB2X+UZz-5 zh#5*b)NxtJe4DaVL@y@fRVHd9{Ss2vRd2aFh~6m8P2P|d|1I-Q=8My%W>&LJ%UTJcwV|psHXf#7R_h3 z2kdiQDq;HTydZyeSr*gJHFwJtQOrm`nxeU1az_#2Wl4v}*A;gQO=2>7bQUY>&&_t# z6%W4U0pIfOqy|dIu%Go_(Mr9k!>7`cA&c)%KW4<#+d5o2QMc}!NmnQP zo`R*V!^K5&kjs+T+wLwcHCr9JzLUNmBfD@eDzcJ`lDx@N&lUNZxrDO`mX@Y*DMM&i zB)Sv7su0kN4sLuzXy+!GMYKF^NMyLQp`E0UC$#x_!vV~#J|QC+&NFf8LR$i#G@u3H zCAWZ9Tk4H1vH%sM>8rd z*C(L)=lji=8e7?zAPaw|0n^YZVe=MEB(IEp-?kOP|A^QxJ3BUgmOh;5X#aZ;%ij*I zNp3qWv+JNl-L&GwvC|h&+E7b)8J|= znkxN_YMqnDCdTzAFSsaZGx9z31y0axw-mD{zHmV&;#6I}J~RsC1Q%$Cv$c@BD`bV@+A8vW zhiKfbRcBV1*~`U6QaxGIC&D$uvh4?L5?`tDxHel`5t^=1mANzzS>!9Gly_RN?S|wN z{hPX^1?5eD=qUHxq0`=|(z8|-B_MDqMjrYHI>m&!o!$a)o&2K==E){XbM_opnO(=}>=TVhj;;?Q1N93o^h!F*g$TdmY7UJ}py zDJ$1(Ocd)M)TF!QO}eNb|7i`EwsI&z*HdM-VC!1{VQMp$3WQJT>}Z zfbD_bAOfGL#iJemd^FIlR|?$rd}X$|Js2sL;!`y4w4yEUeFT>?n62%>qWe}Z>JWX2 zIz*Mh*`QDw9}we&;&543V7Bcb`u>aFoU07hBedf9^oHV8po9l|>#K*B*;il^7%1eUx4p_C_!q~x6ygX^)<)(2g&a7 zl<$O8rC2&~T-hPt_4S0d?hJj#qmjnuBZ_NdDwa+f8xKXBr%}wFX@n8m&J55+4{D?2NLke^W;$k5}og)ccf{+?wZS4HWkFTN7qJFML4cA1rXD|9^ou@ z7y2QqZ}iZ7$O>r1w<4tW=`Al>0gz6KG@UlCeITLgwoCiY6rH2$cFkxx$iD*2BIaJ* zzBY^IrB{Gr*r&+bM~6D;St$1}jVu~+5ZUrMv|mjpbArO~FqO5U*)u#fI$0i_7?&Lg z*DE4j`3~uSh$;Fm{&WTGtd5W!^bj{pnv|1GA@E%PEm1fzF;*<($j{GZsq@!avSdDD zn)2~1V%&lmJ*hZS9(C=)pc(V-6ys7U#;9H-2{h-sSxJr-R(Zh#n)5vg&r8n^WDPrM zA2;Rb`1IJAZ1nuB%Q6cScTc{brOb;5MYEtENNB_5qOXVqbmfOx%t>m1mJ4gf9J`XJ zzWR|7&x?jy>hS|fj+anuN_D1GJYl*xK3oh6x8kzN;6rw(s{2INZ|lyQZ|}gj+$hnuc~UV1HWsQNJG*Cea@v>-^6^0Y zyPP^3sSQkzkJ2-NrNWpG>7mZ{kFy+|E)VMhWb3A7G9bRaJ#M!wjpengP2};pYO(Tz z2=Uk~;>OX^D0xp4D3?m~b;wOwp3dy-s8339u~6RolPs2aON2h4&;a=ywZvSpAO89z zyPqx}KQT30-W-gMubqgKeMf(dD7`Q7Gb!%+;^tB3StszMZ%Zma2Xz{4xy4nw8`xq`xl}Fc(4%7H}a$;S9N8-$>N1OYFFcg1|PJ9dTvNYEhE5f6&Pf{*TWp$X}GXh$o;np{6Af{%}z<)Bk{QA%4s(0<*c&R2G8 zneZJzvFC0Bng@FW5omLdn<;%BEDq!Avf+M5Y2Z-n+Er^=f>>|$DKTG2Kp^cVG)5WQv zRGb-cZU=NIr9%Hfcjj9iuDgytEPtZYmeYM~Wi>#qwafR9L4p?bs0(=;$?Z z1?_Kx7sc~y4QS3)GvMe~V!aVMBjo2Ri$}ez{bMPvpIWmjC``KF&|8T;w+V!1S2m@GyiJ{dF03d+?OR6YDWu8LCJ(&YMr<98P*9^G!h8)G)MQqba5ajhd3>U!Lf@UqrvS1UADp<$d1=TlSe zq)jl95l#%3CWEm3PagzLy5S*Twj#E_5HD=~JI_%-9ri$$I)PRy7s}JFnG(uceiVDp zh`y;YHJ#_m4)Jm_p4*046ZGYndb*TvbHH=1&!Q2On7z5_39^DsSw0flG|f&O(Ll_* zFRLfQ0M<}HTu~FQcn>wPfF0%50?fUznef*?JnU^jrjTWzl^7?2e35~bfupwW2tRhw&Ye?JeK(O`+wuSd6M+;D4Bh19F&>-B8x+v zuyyX438-}Ll+dWvFtvG7Nrd>+fe!IqDxTN|qBg2CCWvi!E0`N8mZ}SuT&+a+KJSt6 z;y!p`d?f!~_`MP`ZF-DOhC6Jsx^ihn+IpXaC=v(tNCz7YXwUsR+LVDnzQ$U7%)w;$ zztk{;;O}qtAiMGz*~uRz+JT!GMy|2lQc)2aP4KGyzPcWW5tr}W?fO)egH(|pGa6IOc%!7@z6cA zyW`%{eD&Ystz$u9-W%1s#lEwLds3 z$aB4}M;k4a7{J(^L=&k8buc73 z3{;^G#~EaZ6n=_PP~rG?4YKi8{8dX2Z?Z7zswbe@|8rJy!_?1{S;?jiN$oEZ)|B#j z3D?q))E-ihym(`<1^2Lur?s@X)S*c8h>E7VVYbwe-~VeC&C+`1Qimejbk=jFc&^?H zWp;ndQs`mF2vPTU6^q7_KCLfis49#q|W+H#`SQgE>&OrWT zm$>5;dS#LQ>w^zAWvGMqI2A8ffAV-0&E1~>U-<+XE!@kLRg&vXkdEw{Mbkdc_KCDx z7HOmU@uW|r-LpvUngQz2J+esdS^=j0U#7fAoNRB+RR>p6%DU95FV=#A<%28TbOX(6 zziGrgYG}0#$+v7k=e0e|6{`k^5;|9{7?MG``hvPnUo~P5E?=n->J#(pM$8q8iIthrVRQTs?5KBX3a_@om~|n5Q=*=qa-3Q8HOwz1qkj zG<&ZPR{DCc`9F!i5L4W1_IF--{NlaF^(VUZBh3Vsk`<+=tFIIpe#B-^e zQx~t{_3;w?U}y{R3w(XK1YZn&S%R4VCHNH*g?V3s|7?~zf1cXXw>^Zc;$O3feY*s| z3w>)9>Z*uHeYym{Dl5r8T!J5x@bbO{|GLEb1xItf1b&g zm*78>_1pR(alXvJ9Oam-%*q}v!Gm~oX_k+DyUc!UmcraGv%id{ziITF?#E^JW3q@I zFSDa*z=gDiN{Vaq>HwB{+HSB zP3%6!rKyMW)*6Zu{}v$N+zMeLj1#SJf%>MG&`uca7y^tdI z<1+hhv7Y$4>4>7>lQgWnFSEZq(aAo2ck&7oo{xP!%MR`V6nzUuOm&FI_AQ{Jy(WX0 zG%V#*hKq(WnJ?20SZM8i_>SOq4NDgumo~I-@L3&C6&yPXq5b}sCccGusSU~bNT5y{ z?&(PGm)Q@bIhoLqeq3h1fG%xESpB)oetr+H4|m|7+e1qyA8wY7ZbQG;faby8KvuLa z)s)_6h#oflfgN0%(rEk$ifwbqn>;S1u0NOAyBePAyx6`HM4eOU23lx&eYwp3l(=H= z&t>+<;_5)4_3JYGx(uec43qz5_TMBD?BiwjFU1vme=f6s-GJu0(Te7rJ7O93^D_IB z;(1j+F0&sTYfKL--%H{jmGJVv%)TJ;GP;$XU%Xu%_mlf~nSGZmVjnKE7qWP{UuNH1 zL37`^MjfQjXLVD|#d5yP{@+==+%L1=E}`Xpnf>2mKb>9>55M?H#(s_#2)_CmiL0U% zH|NXjMFU=*m)Vbxv!;|ju}Ckolb!LRZN;C(^=v;bv#(8f*_X@gUyLI|zb>=?J+{C8 zTxLH{Ma%s%`*m4<(sQNin21}cpsmP@vRJuaW`BMbjlNmYKUv|@hQ3(&4+SmX%k2Lt zqvd{?y{O`Oxc-YYWh!e2;=;D7mTYf{`U9^~smu8?`zvMY`f!>3@mUJ{a+&?NSsFzd zo%3b(zsPufxXgY>+@tQtW%iwMJnzS4_UHAma=y&oO_BO>nf-|gTF#f*ca?DRzRdm< z8LbbO+4qtWbHB{KpNyxiBXFZQ%A21fW2tRhcGN+a+1JH+bKaNPkI&-dewlq#Ld*X$ z`zuwvK3ryBuV9+aYIC&`-A5ji@O)opM>FQ%$5Wb6M+15_R5_2qr4miOHb_+V;|lz^ zgea1fJg>k{=xDiLfuGbc`*8*S1PN7h*laI~wC1;Qr$5qAUmIj-JAF!`P7M)Ui$HdN zR=htN-bL>XW=9)yO?@29<|?|2{zic8O7SYoRQO=p**U|E>w#J{Eqbj5)s<2t+cPbg zjryzyYLRST50G6cMzTF1lUw!gZGm0lDlN33zP>H+SiIF|LU!dd%3&XsaNWHx@`b;b zuw1D^8|FWXClmdATi{2D#`fWDfgej)`M)i2Up%Ax|M9lKy%KibZwq`Q@c@Q%Ox$RV za^-WvFS%!}D@JTAOPmxp>d%$2RKsKE0*J0slJEH1d;@d9bCTGUV(Gz<%SY7teUpyo z&PyP-a>7gVdN5mVh_>k%i*A4Sa!1FRBl6H2O?bNa_%wnY?-PxfstDN{1GeopWf09m zWTOH4{=Js0~jaiiY-iaYww;=K6#7=hHEw*`*NAok;J zfve+K*Sq&G8$4T6fUmw*!}6e+;BA3I?5lgUdDu|4Sb}(4;D|UQ%lmDCfh>;moD)q| zpAq*;`t!EHK0UO|-F-)W1XsbXHsX2ENz3J>14&2rHe8h;%hUPBJwF>wBt0pwXHOO)mRwm><~vm)x$WB**4p$hdkaRwP8_2F%S zm&V^^_3-k2Ti}$eeHEN%OQsEIY8BWM7T57q^lF@bGVLZsHb~t zI2Ue57n}WE!?ni>gRZ zZwxJ>6Uoxg%~+5N9Tips+xmFx`v)OUwBi0sN>FKSaYVAr689n9cuj;f*Qz;l%@Se61o4ar zrQT@QT8b;=OUL4y_9mRyMmUYyc1MnZ&6U^17|q!l9qFxf6vJiHgCf`KRV*LfcZ-}v zSL6*Dyl%U)#S?`VZXQgCXPOZ`(24Bpdg|F%2nq}F_;J@07GfNwWbcG#%U z6LZzYB}WuXtt2L(hfyuq9ISh+1y=&zeStFiC861Y?%3HfviJ+(*AFJDA{@=-vi%_1 zjC#GmIlWu!)`GcuV^$WESEL<+b1{;Km}v2QVsrKC9+IE92()iakAI{UtxBiaa^)e= zzR&b1)6{~keZaSVDvPtjIj;anZ|d=HsaD&XBkx|`qiLz>>W_dQpUqIzsy7to`IOSr zX`&xnRJ;Bf*9eHdB>FS$V$f@$+bW$}P$-rHSnjaB210(+fNU*$*vP2scRPJSkkC9e zyfUO&EA9A*mK^(elcFm$;D!)fc4x&9*MYCZwKvWt5Z{wH8$UXrkxj2lxvQ$ zm3H!p8p5DzQEmCK{pw0U%{KaiP#|@cM}K^B?ClZ9+%pT1E4?GdFccqrjsd%QXN=TU z%R@d2kjwT+E|g3-dH|50zbm3dBrH^g26Np;RR-fz1S;P1W3>7DoGVR0I_JcEBPZZW z3-HkwM6`4pZ4cA{o^>N?wpA9oN(#%iPr$QxN7THg)@r))3}ge}5jhq0qZ(VpBi{6u zw<8wHPoGHj%(f(3^!Mhi#a=~z`a_~lAok~;_m2%|&a*{J6c-)Z{bPP+sne2^C;val C1ae>i diff --git a/ext/openssl-win64/out32dll/openssl.exe b/ext/openssl-win64/out32dll/openssl.exe deleted file mode 100644 index ffc29df9928797c5c53a7b78a69255a23766064a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 497664 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

wA`XnyQd(3GgJmDcmWf~_drX0V+y_< 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

3FJdJ%@!{ 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

VGm659M#ra22b3 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 diff --git a/ext/openssl-win64/out32dll/ssleay32.dll b/ext/openssl-win64/out32dll/ssleay32.dll deleted file mode 100644 index cdeae0ad3a96cbd685a1761e9b36bcf28a523164..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 377856 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

nCKh4^vqE+=r{4x?%Ew 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 diff --git a/ext/openssl-win64/out32dll/ssleay32.lib b/ext/openssl-win64/out32dll/ssleay32.lib deleted file mode 100644 index b00d5fd7a8886f3a919910536b9fe91a7daeab77..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 75730 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