From 61bd925b1b9828507f6c69d84e16ddd8d2915b2e Mon Sep 17 00:00:00 2001 From: elnardu Date: Sun, 2 Sep 2018 17:30:47 -0400 Subject: [PATCH 1/2] Test openssl support --- Makefile | 4 +- dependencies/include/openssl/aes.h | 149 + dependencies/include/openssl/asn1.h | 1420 ++++++ dependencies/include/openssl/asn1_mac.h | 579 +++ dependencies/include/openssl/asn1t.h | 973 ++++ dependencies/include/openssl/bio.h | 883 ++++ dependencies/include/openssl/blowfish.h | 130 + dependencies/include/openssl/bn.h | 951 ++++ dependencies/include/openssl/buffer.h | 125 + dependencies/include/openssl/camellia.h | 132 + dependencies/include/openssl/cast.h | 107 + dependencies/include/openssl/cmac.h | 82 + dependencies/include/openssl/cms.h | 555 +++ dependencies/include/openssl/comp.h | 83 + dependencies/include/openssl/conf.h | 268 ++ dependencies/include/openssl/conf_api.h | 89 + dependencies/include/openssl/crypto.h | 661 +++ dependencies/include/openssl/des.h | 257 + dependencies/include/openssl/des_old.h | 497 ++ dependencies/include/openssl/dh.h | 412 ++ dependencies/include/openssl/dsa.h | 332 ++ dependencies/include/openssl/dso.h | 451 ++ dependencies/include/openssl/dtls1.h | 272 ++ dependencies/include/openssl/e_os2.h | 328 ++ dependencies/include/openssl/ebcdic.h | 26 + dependencies/include/openssl/ec.h | 1282 +++++ dependencies/include/openssl/ecdh.h | 134 + dependencies/include/openssl/ecdsa.h | 335 ++ dependencies/include/openssl/err.h | 390 ++ dependencies/include/openssl/evp.h | 1628 +++++++ dependencies/include/openssl/hmac.h | 109 + dependencies/include/openssl/idea.h | 105 + dependencies/include/openssl/krb5_asn.h | 240 + dependencies/include/openssl/kssl.h | 197 + dependencies/include/openssl/lhash.h | 240 + dependencies/include/openssl/md4.h | 119 + dependencies/include/openssl/md5.h | 119 + dependencies/include/openssl/mdc2.h | 94 + dependencies/include/openssl/modes.h | 163 + dependencies/include/openssl/obj_mac.h | 4194 +++++++++++++++++ dependencies/include/openssl/objects.h | 1143 +++++ dependencies/include/openssl/ocsp.h | 637 +++ dependencies/include/openssl/opensslconf.h | 277 ++ dependencies/include/openssl/opensslv.h | 97 + dependencies/include/openssl/ossl_typ.h | 213 + dependencies/include/openssl/pem.h | 617 +++ dependencies/include/openssl/pem2.h | 70 + dependencies/include/openssl/pkcs12.h | 342 ++ dependencies/include/openssl/pkcs7.h | 481 ++ dependencies/include/openssl/pqueue.h | 99 + dependencies/include/openssl/rand.h | 150 + dependencies/include/openssl/rc2.h | 103 + dependencies/include/openssl/rc4.h | 88 + dependencies/include/openssl/ripemd.h | 105 + dependencies/include/openssl/rsa.h | 664 +++ dependencies/include/openssl/safestack.h | 2672 +++++++++++ dependencies/include/openssl/seed.h | 149 + dependencies/include/openssl/sha.h | 214 + dependencies/include/openssl/srp.h | 179 + dependencies/include/openssl/srtp.h | 147 + dependencies/include/openssl/ssl.h | 3163 +++++++++++++ dependencies/include/openssl/ssl2.h | 265 ++ dependencies/include/openssl/ssl23.h | 84 + dependencies/include/openssl/ssl3.h | 774 +++ dependencies/include/openssl/stack.h | 107 + dependencies/include/openssl/symhacks.h | 518 ++ dependencies/include/openssl/tls1.h | 810 ++++ dependencies/include/openssl/ts.h | 865 ++++ dependencies/include/openssl/txt_db.h | 112 + dependencies/include/openssl/ui.h | 415 ++ dependencies/include/openssl/ui_compat.h | 88 + dependencies/include/openssl/whrlpool.h | 41 + dependencies/include/openssl/x509.h | 1330 ++++++ dependencies/include/openssl/x509_vfy.h | 652 +++ dependencies/include/openssl/x509v3.h | 1055 +++++ dependencies/lib/libcrypto.a | Bin 0 -> 22444606 bytes dependencies/lib/libcrypto.pc | 13 + dependencies/lib/libssl.a | Bin 0 -> 5807298 bytes dependencies/lib/libssl.pc | 12 + python_build/Makefile | 7 +- python_config/_ssl.c | 4942 ++++++++++++++++++++ 81 files changed, 42812 insertions(+), 3 deletions(-) create mode 100644 dependencies/include/openssl/aes.h create mode 100644 dependencies/include/openssl/asn1.h create mode 100644 dependencies/include/openssl/asn1_mac.h create mode 100644 dependencies/include/openssl/asn1t.h create mode 100644 dependencies/include/openssl/bio.h create mode 100644 dependencies/include/openssl/blowfish.h create mode 100644 dependencies/include/openssl/bn.h create mode 100644 dependencies/include/openssl/buffer.h create mode 100644 dependencies/include/openssl/camellia.h create mode 100644 dependencies/include/openssl/cast.h create mode 100644 dependencies/include/openssl/cmac.h create mode 100644 dependencies/include/openssl/cms.h create mode 100644 dependencies/include/openssl/comp.h create mode 100644 dependencies/include/openssl/conf.h create mode 100644 dependencies/include/openssl/conf_api.h create mode 100644 dependencies/include/openssl/crypto.h create mode 100644 dependencies/include/openssl/des.h create mode 100644 dependencies/include/openssl/des_old.h create mode 100644 dependencies/include/openssl/dh.h create mode 100644 dependencies/include/openssl/dsa.h create mode 100644 dependencies/include/openssl/dso.h create mode 100644 dependencies/include/openssl/dtls1.h create mode 100644 dependencies/include/openssl/e_os2.h create mode 100644 dependencies/include/openssl/ebcdic.h create mode 100644 dependencies/include/openssl/ec.h create mode 100644 dependencies/include/openssl/ecdh.h create mode 100644 dependencies/include/openssl/ecdsa.h create mode 100644 dependencies/include/openssl/err.h create mode 100644 dependencies/include/openssl/evp.h create mode 100644 dependencies/include/openssl/hmac.h create mode 100644 dependencies/include/openssl/idea.h create mode 100644 dependencies/include/openssl/krb5_asn.h create mode 100644 dependencies/include/openssl/kssl.h create mode 100644 dependencies/include/openssl/lhash.h create mode 100644 dependencies/include/openssl/md4.h create mode 100644 dependencies/include/openssl/md5.h create mode 100644 dependencies/include/openssl/mdc2.h create mode 100644 dependencies/include/openssl/modes.h create mode 100644 dependencies/include/openssl/obj_mac.h create mode 100644 dependencies/include/openssl/objects.h create mode 100644 dependencies/include/openssl/ocsp.h create mode 100644 dependencies/include/openssl/opensslconf.h create mode 100644 dependencies/include/openssl/opensslv.h create mode 100644 dependencies/include/openssl/ossl_typ.h create mode 100644 dependencies/include/openssl/pem.h create mode 100644 dependencies/include/openssl/pem2.h create mode 100644 dependencies/include/openssl/pkcs12.h create mode 100644 dependencies/include/openssl/pkcs7.h create mode 100644 dependencies/include/openssl/pqueue.h create mode 100644 dependencies/include/openssl/rand.h create mode 100644 dependencies/include/openssl/rc2.h create mode 100644 dependencies/include/openssl/rc4.h create mode 100644 dependencies/include/openssl/ripemd.h create mode 100644 dependencies/include/openssl/rsa.h create mode 100644 dependencies/include/openssl/safestack.h create mode 100644 dependencies/include/openssl/seed.h create mode 100644 dependencies/include/openssl/sha.h create mode 100644 dependencies/include/openssl/srp.h create mode 100644 dependencies/include/openssl/srtp.h create mode 100644 dependencies/include/openssl/ssl.h create mode 100644 dependencies/include/openssl/ssl2.h create mode 100644 dependencies/include/openssl/ssl23.h create mode 100644 dependencies/include/openssl/ssl3.h create mode 100644 dependencies/include/openssl/stack.h create mode 100644 dependencies/include/openssl/symhacks.h create mode 100644 dependencies/include/openssl/tls1.h create mode 100644 dependencies/include/openssl/ts.h create mode 100644 dependencies/include/openssl/txt_db.h create mode 100644 dependencies/include/openssl/ui.h create mode 100644 dependencies/include/openssl/ui_compat.h create mode 100644 dependencies/include/openssl/whrlpool.h create mode 100644 dependencies/include/openssl/x509.h create mode 100644 dependencies/include/openssl/x509_vfy.h create mode 100644 dependencies/include/openssl/x509v3.h create mode 100644 dependencies/lib/libcrypto.a create mode 100644 dependencies/lib/libcrypto.pc create mode 100644 dependencies/lib/libssl.a create mode 100644 dependencies/lib/libssl.pc create mode 100644 python_config/_ssl.c diff --git a/Makefile b/Makefile index f3426e6..fe54f6c 100644 --- a/Makefile +++ b/Makefile @@ -57,14 +57,14 @@ CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=gnu++11 ASFLAGS := -g $(ARCH) LDFLAGS = -specs=$(DEVKITPRO)/libnx/switch.specs -g $(ARCH) -Wl,-Map,$(notdir $*.map) -LIBS := -lpython3.5 -lm -lz -lnx +LIBS := -lpython3.5 -lm -lz -lssl -lcrypto -lnx #--------------------------------------------------------------------------------- # list of directories containing libraries, this must be the top level containing # include and lib #--------------------------------------------------------------------------------- NXPY := $(CURDIR)/python_build/nxpy3.5.3 -LIBDIRS := $(PORTLIBS) $(LIBNX) $(NXPY) +LIBDIRS := $(PORTLIBS) $(LIBNX) $(NXPY) $(CURDIR)/dependencies #--------------------------------------------------------------------------------- diff --git a/dependencies/include/openssl/aes.h b/dependencies/include/openssl/aes.h new file mode 100644 index 0000000..faa66c4 --- /dev/null +++ b/dependencies/include/openssl/aes.h @@ -0,0 +1,149 @@ +/* crypto/aes/aes.h */ +/* ==================================================================== + * 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. + * ==================================================================== + * + */ + +#ifndef HEADER_AES_H +# define HEADER_AES_H + +# include + +# ifdef OPENSSL_NO_AES +# error AES is disabled. +# endif + +# include + +# define AES_ENCRYPT 1 +# define AES_DECRYPT 0 + +/* + * Because array size can't be a const in C, the following two are macros. + * Both sizes are in bytes. + */ +# define AES_MAXNR 14 +# define AES_BLOCK_SIZE 16 + +#ifdef __cplusplus +extern "C" { +#endif + +/* This should be a hidden type, but EVP requires that the size be known */ +struct aes_key_st { +# ifdef AES_LONG + unsigned long rd_key[4 * (AES_MAXNR + 1)]; +# else + unsigned int rd_key[4 * (AES_MAXNR + 1)]; +# endif + int rounds; +}; +typedef struct aes_key_st AES_KEY; + +const char *AES_options(void); + +int AES_set_encrypt_key(const unsigned char *userKey, const int bits, + AES_KEY *key); +int AES_set_decrypt_key(const unsigned char *userKey, const int bits, + AES_KEY *key); + +int private_AES_set_encrypt_key(const unsigned char *userKey, const int bits, + AES_KEY *key); +int private_AES_set_decrypt_key(const unsigned char *userKey, const int bits, + AES_KEY *key); + +void AES_encrypt(const unsigned char *in, unsigned char *out, + const AES_KEY *key); +void AES_decrypt(const unsigned char *in, unsigned char *out, + const AES_KEY *key); + +void AES_ecb_encrypt(const unsigned char *in, unsigned char *out, + const AES_KEY *key, const int enc); +void AES_cbc_encrypt(const unsigned char *in, unsigned char *out, + size_t length, const AES_KEY *key, + unsigned char *ivec, const int enc); +void AES_cfb128_encrypt(const unsigned char *in, unsigned char *out, + size_t length, const AES_KEY *key, + unsigned char *ivec, int *num, const int enc); +void AES_cfb1_encrypt(const unsigned char *in, unsigned char *out, + size_t length, const AES_KEY *key, + unsigned char *ivec, int *num, const int enc); +void AES_cfb8_encrypt(const unsigned char *in, unsigned char *out, + size_t length, const AES_KEY *key, + unsigned char *ivec, int *num, const int enc); +void AES_ofb128_encrypt(const unsigned char *in, unsigned char *out, + size_t length, const AES_KEY *key, + unsigned char *ivec, int *num); +void AES_ctr128_encrypt(const unsigned char *in, unsigned char *out, + size_t length, const AES_KEY *key, + unsigned char ivec[AES_BLOCK_SIZE], + unsigned char ecount_buf[AES_BLOCK_SIZE], + unsigned int *num); +/* NB: the IV is _two_ blocks long */ +void AES_ige_encrypt(const unsigned char *in, unsigned char *out, + size_t length, const AES_KEY *key, + unsigned char *ivec, const int enc); +/* NB: the IV is _four_ blocks long */ +void AES_bi_ige_encrypt(const unsigned char *in, unsigned char *out, + size_t length, const AES_KEY *key, + const AES_KEY *key2, const unsigned char *ivec, + const int enc); + +int AES_wrap_key(AES_KEY *key, const unsigned char *iv, + unsigned char *out, + const unsigned char *in, unsigned int inlen); +int AES_unwrap_key(AES_KEY *key, const unsigned char *iv, + unsigned char *out, + const unsigned char *in, unsigned int inlen); + + +#ifdef __cplusplus +} +#endif + +#endif /* !HEADER_AES_H */ diff --git a/dependencies/include/openssl/asn1.h b/dependencies/include/openssl/asn1.h new file mode 100644 index 0000000..35a2b2a --- /dev/null +++ b/dependencies/include/openssl/asn1.h @@ -0,0 +1,1420 @@ +/* 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); +void ASN1_STRING_clear_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_NESTED_TOO_DEEP 219 +# 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/dependencies/include/openssl/asn1_mac.h b/dependencies/include/openssl/asn1_mac.h new file mode 100644 index 0000000..abc6dc3 --- /dev/null +++ b/dependencies/include/openssl/asn1_mac.h @@ -0,0 +1,579 @@ +/* crypto/asn1/asn1_mac.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_MAC_H +# define HEADER_ASN1_MAC_H + +# include + +#ifdef __cplusplus +extern "C" { +#endif + +# ifndef ASN1_MAC_ERR_LIB +# define ASN1_MAC_ERR_LIB ERR_LIB_ASN1 +# endif + +# define ASN1_MAC_H_err(f,r,line) \ + ERR_PUT_error(ASN1_MAC_ERR_LIB,(f),(r),__FILE__,(line)) + +# define M_ASN1_D2I_vars(a,type,func) \ + ASN1_const_CTX c; \ + type ret=NULL; \ + \ + c.pp=(const unsigned char **)pp; \ + c.q= *(const unsigned char **)pp; \ + c.error=ERR_R_NESTED_ASN1_ERROR; \ + if ((a == NULL) || ((*a) == NULL)) \ + { if ((ret=(type)func()) == NULL) \ + { c.line=__LINE__; goto err; } } \ + else ret=(*a); + +# define M_ASN1_D2I_Init() \ + c.p= *(const unsigned char **)pp; \ + c.max=(length == 0)?0:(c.p+length); + +# define M_ASN1_D2I_Finish_2(a) \ + if (!asn1_const_Finish(&c)) \ + { c.line=__LINE__; goto err; } \ + *(const unsigned char **)pp=c.p; \ + if (a != NULL) (*a)=ret; \ + return(ret); + +# define M_ASN1_D2I_Finish(a,func,e) \ + M_ASN1_D2I_Finish_2(a); \ +err:\ + ASN1_MAC_H_err((e),c.error,c.line); \ + asn1_add_error(*(const unsigned char **)pp,(int)(c.q- *pp)); \ + if ((ret != NULL) && ((a == NULL) || (*a != ret))) func(ret); \ + return(NULL) + +# define M_ASN1_D2I_start_sequence() \ + if (!asn1_GetSequence(&c,&length)) \ + { c.line=__LINE__; goto err; } +/* Begin reading ASN1 without a surrounding sequence */ +# define M_ASN1_D2I_begin() \ + c.slen = length; + +/* End reading ASN1 with no check on length */ +# define M_ASN1_D2I_Finish_nolen(a, func, e) \ + *pp=c.p; \ + if (a != NULL) (*a)=ret; \ + return(ret); \ +err:\ + ASN1_MAC_H_err((e),c.error,c.line); \ + asn1_add_error(*pp,(int)(c.q- *pp)); \ + if ((ret != NULL) && ((a == NULL) || (*a != ret))) func(ret); \ + return(NULL) + +# define M_ASN1_D2I_end_sequence() \ + (((c.inf&1) == 0)?(c.slen <= 0): \ + (c.eos=ASN1_const_check_infinite_end(&c.p,c.slen))) + +/* Don't use this with d2i_ASN1_BOOLEAN() */ +# define M_ASN1_D2I_get(b, func) \ + c.q=c.p; \ + if (func(&(b),&c.p,c.slen) == NULL) \ + {c.line=__LINE__; goto err; } \ + c.slen-=(c.p-c.q); + +/* Don't use this with d2i_ASN1_BOOLEAN() */ +# define M_ASN1_D2I_get_x(type,b,func) \ + c.q=c.p; \ + if (((D2I_OF(type))func)(&(b),&c.p,c.slen) == NULL) \ + {c.line=__LINE__; goto err; } \ + c.slen-=(c.p-c.q); + +/* use this instead () */ +# define M_ASN1_D2I_get_int(b,func) \ + c.q=c.p; \ + if (func(&(b),&c.p,c.slen) < 0) \ + {c.line=__LINE__; goto err; } \ + c.slen-=(c.p-c.q); + +# define M_ASN1_D2I_get_opt(b,func,type) \ + if ((c.slen != 0) && ((M_ASN1_next & (~V_ASN1_CONSTRUCTED)) \ + == (V_ASN1_UNIVERSAL|(type)))) \ + { \ + M_ASN1_D2I_get(b,func); \ + } + +# define M_ASN1_D2I_get_int_opt(b,func,type) \ + if ((c.slen != 0) && ((M_ASN1_next & (~V_ASN1_CONSTRUCTED)) \ + == (V_ASN1_UNIVERSAL|(type)))) \ + { \ + M_ASN1_D2I_get_int(b,func); \ + } + +# define M_ASN1_D2I_get_imp(b,func, type) \ + M_ASN1_next=(_tmp& V_ASN1_CONSTRUCTED)|type; \ + c.q=c.p; \ + if (func(&(b),&c.p,c.slen) == NULL) \ + {c.line=__LINE__; M_ASN1_next_prev = _tmp; goto err; } \ + c.slen-=(c.p-c.q);\ + M_ASN1_next_prev=_tmp; + +# define M_ASN1_D2I_get_IMP_opt(b,func,tag,type) \ + if ((c.slen != 0) && ((M_ASN1_next & (~V_ASN1_CONSTRUCTED)) == \ + (V_ASN1_CONTEXT_SPECIFIC|(tag)))) \ + { \ + unsigned char _tmp = M_ASN1_next; \ + M_ASN1_D2I_get_imp(b,func, type);\ + } + +# define M_ASN1_D2I_get_set(r,func,free_func) \ + M_ASN1_D2I_get_imp_set(r,func,free_func, \ + V_ASN1_SET,V_ASN1_UNIVERSAL); + +# define M_ASN1_D2I_get_set_type(type,r,func,free_func) \ + M_ASN1_D2I_get_imp_set_type(type,r,func,free_func, \ + V_ASN1_SET,V_ASN1_UNIVERSAL); + +# define M_ASN1_D2I_get_set_opt(r,func,free_func) \ + if ((c.slen != 0) && (M_ASN1_next == (V_ASN1_UNIVERSAL| \ + V_ASN1_CONSTRUCTED|V_ASN1_SET)))\ + { M_ASN1_D2I_get_set(r,func,free_func); } + +# define M_ASN1_D2I_get_set_opt_type(type,r,func,free_func) \ + if ((c.slen != 0) && (M_ASN1_next == (V_ASN1_UNIVERSAL| \ + V_ASN1_CONSTRUCTED|V_ASN1_SET)))\ + { M_ASN1_D2I_get_set_type(type,r,func,free_func); } + +# define M_ASN1_I2D_len_SET_opt(a,f) \ + if ((a != NULL) && (sk_num(a) != 0)) \ + M_ASN1_I2D_len_SET(a,f); + +# define M_ASN1_I2D_put_SET_opt(a,f) \ + if ((a != NULL) && (sk_num(a) != 0)) \ + M_ASN1_I2D_put_SET(a,f); + +# define M_ASN1_I2D_put_SEQUENCE_opt(a,f) \ + if ((a != NULL) && (sk_num(a) != 0)) \ + M_ASN1_I2D_put_SEQUENCE(a,f); + +# define M_ASN1_I2D_put_SEQUENCE_opt_type(type,a,f) \ + if ((a != NULL) && (sk_##type##_num(a) != 0)) \ + M_ASN1_I2D_put_SEQUENCE_type(type,a,f); + +# define M_ASN1_D2I_get_IMP_set_opt(b,func,free_func,tag) \ + if ((c.slen != 0) && \ + (M_ASN1_next == \ + (V_ASN1_CONTEXT_SPECIFIC|V_ASN1_CONSTRUCTED|(tag))))\ + { \ + M_ASN1_D2I_get_imp_set(b,func,free_func,\ + tag,V_ASN1_CONTEXT_SPECIFIC); \ + } + +# define M_ASN1_D2I_get_IMP_set_opt_type(type,b,func,free_func,tag) \ + if ((c.slen != 0) && \ + (M_ASN1_next == \ + (V_ASN1_CONTEXT_SPECIFIC|V_ASN1_CONSTRUCTED|(tag))))\ + { \ + M_ASN1_D2I_get_imp_set_type(type,b,func,free_func,\ + tag,V_ASN1_CONTEXT_SPECIFIC); \ + } + +# define M_ASN1_D2I_get_seq(r,func,free_func) \ + M_ASN1_D2I_get_imp_set(r,func,free_func,\ + V_ASN1_SEQUENCE,V_ASN1_UNIVERSAL); + +# define M_ASN1_D2I_get_seq_type(type,r,func,free_func) \ + M_ASN1_D2I_get_imp_set_type(type,r,func,free_func,\ + V_ASN1_SEQUENCE,V_ASN1_UNIVERSAL) + +# define M_ASN1_D2I_get_seq_opt(r,func,free_func) \ + if ((c.slen != 0) && (M_ASN1_next == (V_ASN1_UNIVERSAL| \ + V_ASN1_CONSTRUCTED|V_ASN1_SEQUENCE)))\ + { M_ASN1_D2I_get_seq(r,func,free_func); } + +# define M_ASN1_D2I_get_seq_opt_type(type,r,func,free_func) \ + if ((c.slen != 0) && (M_ASN1_next == (V_ASN1_UNIVERSAL| \ + V_ASN1_CONSTRUCTED|V_ASN1_SEQUENCE)))\ + { M_ASN1_D2I_get_seq_type(type,r,func,free_func); } + +# define M_ASN1_D2I_get_IMP_set(r,func,free_func,x) \ + M_ASN1_D2I_get_imp_set(r,func,free_func,\ + x,V_ASN1_CONTEXT_SPECIFIC); + +# define M_ASN1_D2I_get_IMP_set_type(type,r,func,free_func,x) \ + M_ASN1_D2I_get_imp_set_type(type,r,func,free_func,\ + x,V_ASN1_CONTEXT_SPECIFIC); + +# define M_ASN1_D2I_get_imp_set(r,func,free_func,a,b) \ + c.q=c.p; \ + if (d2i_ASN1_SET(&(r),&c.p,c.slen,(char *(*)())func,\ + (void (*)())free_func,a,b) == NULL) \ + { c.line=__LINE__; goto err; } \ + c.slen-=(c.p-c.q); + +# define M_ASN1_D2I_get_imp_set_type(type,r,func,free_func,a,b) \ + c.q=c.p; \ + if (d2i_ASN1_SET_OF_##type(&(r),&c.p,c.slen,func,\ + free_func,a,b) == NULL) \ + { c.line=__LINE__; goto err; } \ + c.slen-=(c.p-c.q); + +# define M_ASN1_D2I_get_set_strings(r,func,a,b) \ + c.q=c.p; \ + if (d2i_ASN1_STRING_SET(&(r),&c.p,c.slen,a,b) == NULL) \ + { c.line=__LINE__; goto err; } \ + c.slen-=(c.p-c.q); + +# define M_ASN1_D2I_get_EXP_opt(r,func,tag) \ + if ((c.slen != 0L) && (M_ASN1_next == \ + (V_ASN1_CONSTRUCTED|V_ASN1_CONTEXT_SPECIFIC|tag))) \ + { \ + int Tinf,Ttag,Tclass; \ + long Tlen; \ + \ + c.q=c.p; \ + Tinf=ASN1_get_object(&c.p,&Tlen,&Ttag,&Tclass,c.slen); \ + if (Tinf & 0x80) \ + { c.error=ERR_R_BAD_ASN1_OBJECT_HEADER; \ + c.line=__LINE__; goto err; } \ + if (Tinf == (V_ASN1_CONSTRUCTED+1)) \ + Tlen = c.slen - (c.p - c.q) - 2; \ + if (func(&(r),&c.p,Tlen) == NULL) \ + { c.line=__LINE__; goto err; } \ + if (Tinf == (V_ASN1_CONSTRUCTED+1)) { \ + Tlen = c.slen - (c.p - c.q); \ + if(!ASN1_const_check_infinite_end(&c.p, Tlen)) \ + { c.error=ERR_R_MISSING_ASN1_EOS; \ + c.line=__LINE__; goto err; } \ + }\ + c.slen-=(c.p-c.q); \ + } + +# define M_ASN1_D2I_get_EXP_set_opt(r,func,free_func,tag,b) \ + if ((c.slen != 0) && (M_ASN1_next == \ + (V_ASN1_CONSTRUCTED|V_ASN1_CONTEXT_SPECIFIC|tag))) \ + { \ + int Tinf,Ttag,Tclass; \ + long Tlen; \ + \ + c.q=c.p; \ + Tinf=ASN1_get_object(&c.p,&Tlen,&Ttag,&Tclass,c.slen); \ + if (Tinf & 0x80) \ + { c.error=ERR_R_BAD_ASN1_OBJECT_HEADER; \ + c.line=__LINE__; goto err; } \ + if (Tinf == (V_ASN1_CONSTRUCTED+1)) \ + Tlen = c.slen - (c.p - c.q) - 2; \ + if (d2i_ASN1_SET(&(r),&c.p,Tlen,(char *(*)())func, \ + (void (*)())free_func, \ + b,V_ASN1_UNIVERSAL) == NULL) \ + { c.line=__LINE__; goto err; } \ + if (Tinf == (V_ASN1_CONSTRUCTED+1)) { \ + Tlen = c.slen - (c.p - c.q); \ + if(!ASN1_check_infinite_end(&c.p, Tlen)) \ + { c.error=ERR_R_MISSING_ASN1_EOS; \ + c.line=__LINE__; goto err; } \ + }\ + c.slen-=(c.p-c.q); \ + } + +# define M_ASN1_D2I_get_EXP_set_opt_type(type,r,func,free_func,tag,b) \ + if ((c.slen != 0) && (M_ASN1_next == \ + (V_ASN1_CONSTRUCTED|V_ASN1_CONTEXT_SPECIFIC|tag))) \ + { \ + int Tinf,Ttag,Tclass; \ + long Tlen; \ + \ + c.q=c.p; \ + Tinf=ASN1_get_object(&c.p,&Tlen,&Ttag,&Tclass,c.slen); \ + if (Tinf & 0x80) \ + { c.error=ERR_R_BAD_ASN1_OBJECT_HEADER; \ + c.line=__LINE__; goto err; } \ + if (Tinf == (V_ASN1_CONSTRUCTED+1)) \ + Tlen = c.slen - (c.p - c.q) - 2; \ + if (d2i_ASN1_SET_OF_##type(&(r),&c.p,Tlen,func, \ + free_func,b,V_ASN1_UNIVERSAL) == NULL) \ + { c.line=__LINE__; goto err; } \ + if (Tinf == (V_ASN1_CONSTRUCTED+1)) { \ + Tlen = c.slen - (c.p - c.q); \ + if(!ASN1_check_infinite_end(&c.p, Tlen)) \ + { c.error=ERR_R_MISSING_ASN1_EOS; \ + c.line=__LINE__; goto err; } \ + }\ + c.slen-=(c.p-c.q); \ + } + +/* New macros */ +# define M_ASN1_New_Malloc(ret,type) \ + if ((ret=(type *)OPENSSL_malloc(sizeof(type))) == NULL) \ + { c.line=__LINE__; goto err2; } + +# define M_ASN1_New(arg,func) \ + if (((arg)=func()) == NULL) return(NULL) + +# define M_ASN1_New_Error(a) \ +/*- err: ASN1_MAC_H_err((a),ERR_R_NESTED_ASN1_ERROR,c.line); \ + return(NULL);*/ \ + err2: ASN1_MAC_H_err((a),ERR_R_MALLOC_FAILURE,c.line); \ + return(NULL) + +/* + * BIG UGLY WARNING! This is so damn ugly I wanna puke. Unfortunately, some + * macros that use ASN1_const_CTX still insist on writing in the input + * stream. ARGH! ARGH! ARGH! Let's get rid of this macro package. Please? -- + * Richard Levitte + */ +# define M_ASN1_next (*((unsigned char *)(c.p))) +# define M_ASN1_next_prev (*((unsigned char *)(c.q))) + +/*************************************************/ + +# define M_ASN1_I2D_vars(a) int r=0,ret=0; \ + unsigned char *p; \ + if (a == NULL) return(0) + +/* Length Macros */ +# define M_ASN1_I2D_len(a,f) ret+=f(a,NULL) +# define M_ASN1_I2D_len_IMP_opt(a,f) if (a != NULL) M_ASN1_I2D_len(a,f) + +# define M_ASN1_I2D_len_SET(a,f) \ + ret+=i2d_ASN1_SET(a,NULL,f,V_ASN1_SET,V_ASN1_UNIVERSAL,IS_SET); + +# define M_ASN1_I2D_len_SET_type(type,a,f) \ + ret+=i2d_ASN1_SET_OF_##type(a,NULL,f,V_ASN1_SET, \ + V_ASN1_UNIVERSAL,IS_SET); + +# define M_ASN1_I2D_len_SEQUENCE(a,f) \ + ret+=i2d_ASN1_SET(a,NULL,f,V_ASN1_SEQUENCE,V_ASN1_UNIVERSAL, \ + IS_SEQUENCE); + +# define M_ASN1_I2D_len_SEQUENCE_type(type,a,f) \ + ret+=i2d_ASN1_SET_OF_##type(a,NULL,f,V_ASN1_SEQUENCE, \ + V_ASN1_UNIVERSAL,IS_SEQUENCE) + +# define M_ASN1_I2D_len_SEQUENCE_opt(a,f) \ + if ((a != NULL) && (sk_num(a) != 0)) \ + M_ASN1_I2D_len_SEQUENCE(a,f); + +# define M_ASN1_I2D_len_SEQUENCE_opt_type(type,a,f) \ + if ((a != NULL) && (sk_##type##_num(a) != 0)) \ + M_ASN1_I2D_len_SEQUENCE_type(type,a,f); + +# define M_ASN1_I2D_len_IMP_SET(a,f,x) \ + ret+=i2d_ASN1_SET(a,NULL,f,x,V_ASN1_CONTEXT_SPECIFIC,IS_SET); + +# define M_ASN1_I2D_len_IMP_SET_type(type,a,f,x) \ + ret+=i2d_ASN1_SET_OF_##type(a,NULL,f,x, \ + V_ASN1_CONTEXT_SPECIFIC,IS_SET); + +# define M_ASN1_I2D_len_IMP_SET_opt(a,f,x) \ + if ((a != NULL) && (sk_num(a) != 0)) \ + ret+=i2d_ASN1_SET(a,NULL,f,x,V_ASN1_CONTEXT_SPECIFIC, \ + IS_SET); + +# define M_ASN1_I2D_len_IMP_SET_opt_type(type,a,f,x) \ + if ((a != NULL) && (sk_##type##_num(a) != 0)) \ + ret+=i2d_ASN1_SET_OF_##type(a,NULL,f,x, \ + V_ASN1_CONTEXT_SPECIFIC,IS_SET); + +# define M_ASN1_I2D_len_IMP_SEQUENCE(a,f,x) \ + ret+=i2d_ASN1_SET(a,NULL,f,x,V_ASN1_CONTEXT_SPECIFIC, \ + IS_SEQUENCE); + +# define M_ASN1_I2D_len_IMP_SEQUENCE_opt(a,f,x) \ + if ((a != NULL) && (sk_num(a) != 0)) \ + ret+=i2d_ASN1_SET(a,NULL,f,x,V_ASN1_CONTEXT_SPECIFIC, \ + IS_SEQUENCE); + +# define M_ASN1_I2D_len_IMP_SEQUENCE_opt_type(type,a,f,x) \ + if ((a != NULL) && (sk_##type##_num(a) != 0)) \ + ret+=i2d_ASN1_SET_OF_##type(a,NULL,f,x, \ + V_ASN1_CONTEXT_SPECIFIC, \ + IS_SEQUENCE); + +# define M_ASN1_I2D_len_EXP_opt(a,f,mtag,v) \ + if (a != NULL)\ + { \ + v=f(a,NULL); \ + ret+=ASN1_object_size(1,v,mtag); \ + } + +# define M_ASN1_I2D_len_EXP_SET_opt(a,f,mtag,tag,v) \ + if ((a != NULL) && (sk_num(a) != 0))\ + { \ + v=i2d_ASN1_SET(a,NULL,f,tag,V_ASN1_UNIVERSAL,IS_SET); \ + ret+=ASN1_object_size(1,v,mtag); \ + } + +# define M_ASN1_I2D_len_EXP_SEQUENCE_opt(a,f,mtag,tag,v) \ + if ((a != NULL) && (sk_num(a) != 0))\ + { \ + v=i2d_ASN1_SET(a,NULL,f,tag,V_ASN1_UNIVERSAL, \ + IS_SEQUENCE); \ + ret+=ASN1_object_size(1,v,mtag); \ + } + +# define M_ASN1_I2D_len_EXP_SEQUENCE_opt_type(type,a,f,mtag,tag,v) \ + if ((a != NULL) && (sk_##type##_num(a) != 0))\ + { \ + v=i2d_ASN1_SET_OF_##type(a,NULL,f,tag, \ + V_ASN1_UNIVERSAL, \ + IS_SEQUENCE); \ + ret+=ASN1_object_size(1,v,mtag); \ + } + +/* Put Macros */ +# define M_ASN1_I2D_put(a,f) f(a,&p) + +# define M_ASN1_I2D_put_IMP_opt(a,f,t) \ + if (a != NULL) \ + { \ + unsigned char *q=p; \ + f(a,&p); \ + *q=(V_ASN1_CONTEXT_SPECIFIC|t|(*q&V_ASN1_CONSTRUCTED));\ + } + +# define M_ASN1_I2D_put_SET(a,f) i2d_ASN1_SET(a,&p,f,V_ASN1_SET,\ + V_ASN1_UNIVERSAL,IS_SET) +# define M_ASN1_I2D_put_SET_type(type,a,f) \ + i2d_ASN1_SET_OF_##type(a,&p,f,V_ASN1_SET,V_ASN1_UNIVERSAL,IS_SET) +# define M_ASN1_I2D_put_IMP_SET(a,f,x) i2d_ASN1_SET(a,&p,f,x,\ + V_ASN1_CONTEXT_SPECIFIC,IS_SET) +# define M_ASN1_I2D_put_IMP_SET_type(type,a,f,x) \ + i2d_ASN1_SET_OF_##type(a,&p,f,x,V_ASN1_CONTEXT_SPECIFIC,IS_SET) +# define M_ASN1_I2D_put_IMP_SEQUENCE(a,f,x) i2d_ASN1_SET(a,&p,f,x,\ + V_ASN1_CONTEXT_SPECIFIC,IS_SEQUENCE) + +# define M_ASN1_I2D_put_SEQUENCE(a,f) i2d_ASN1_SET(a,&p,f,V_ASN1_SEQUENCE,\ + V_ASN1_UNIVERSAL,IS_SEQUENCE) + +# define M_ASN1_I2D_put_SEQUENCE_type(type,a,f) \ + i2d_ASN1_SET_OF_##type(a,&p,f,V_ASN1_SEQUENCE,V_ASN1_UNIVERSAL, \ + IS_SEQUENCE) + +# define M_ASN1_I2D_put_SEQUENCE_opt(a,f) \ + if ((a != NULL) && (sk_num(a) != 0)) \ + M_ASN1_I2D_put_SEQUENCE(a,f); + +# define M_ASN1_I2D_put_IMP_SET_opt(a,f,x) \ + if ((a != NULL) && (sk_num(a) != 0)) \ + { i2d_ASN1_SET(a,&p,f,x,V_ASN1_CONTEXT_SPECIFIC, \ + IS_SET); } + +# define M_ASN1_I2D_put_IMP_SET_opt_type(type,a,f,x) \ + if ((a != NULL) && (sk_##type##_num(a) != 0)) \ + { i2d_ASN1_SET_OF_##type(a,&p,f,x, \ + V_ASN1_CONTEXT_SPECIFIC, \ + IS_SET); } + +# define M_ASN1_I2D_put_IMP_SEQUENCE_opt(a,f,x) \ + if ((a != NULL) && (sk_num(a) != 0)) \ + { i2d_ASN1_SET(a,&p,f,x,V_ASN1_CONTEXT_SPECIFIC, \ + IS_SEQUENCE); } + +# define M_ASN1_I2D_put_IMP_SEQUENCE_opt_type(type,a,f,x) \ + if ((a != NULL) && (sk_##type##_num(a) != 0)) \ + { i2d_ASN1_SET_OF_##type(a,&p,f,x, \ + V_ASN1_CONTEXT_SPECIFIC, \ + IS_SEQUENCE); } + +# define M_ASN1_I2D_put_EXP_opt(a,f,tag,v) \ + if (a != NULL) \ + { \ + ASN1_put_object(&p,1,v,tag,V_ASN1_CONTEXT_SPECIFIC); \ + f(a,&p); \ + } + +# define M_ASN1_I2D_put_EXP_SET_opt(a,f,mtag,tag,v) \ + if ((a != NULL) && (sk_num(a) != 0)) \ + { \ + ASN1_put_object(&p,1,v,mtag,V_ASN1_CONTEXT_SPECIFIC); \ + i2d_ASN1_SET(a,&p,f,tag,V_ASN1_UNIVERSAL,IS_SET); \ + } + +# define M_ASN1_I2D_put_EXP_SEQUENCE_opt(a,f,mtag,tag,v) \ + if ((a != NULL) && (sk_num(a) != 0)) \ + { \ + ASN1_put_object(&p,1,v,mtag,V_ASN1_CONTEXT_SPECIFIC); \ + i2d_ASN1_SET(a,&p,f,tag,V_ASN1_UNIVERSAL,IS_SEQUENCE); \ + } + +# define M_ASN1_I2D_put_EXP_SEQUENCE_opt_type(type,a,f,mtag,tag,v) \ + if ((a != NULL) && (sk_##type##_num(a) != 0)) \ + { \ + ASN1_put_object(&p,1,v,mtag,V_ASN1_CONTEXT_SPECIFIC); \ + i2d_ASN1_SET_OF_##type(a,&p,f,tag,V_ASN1_UNIVERSAL, \ + IS_SEQUENCE); \ + } + +# define M_ASN1_I2D_seq_total() \ + r=ASN1_object_size(1,ret,V_ASN1_SEQUENCE); \ + if (pp == NULL) return(r); \ + p= *pp; \ + ASN1_put_object(&p,1,ret,V_ASN1_SEQUENCE,V_ASN1_UNIVERSAL) + +# define M_ASN1_I2D_INF_seq_start(tag,ctx) \ + *(p++)=(V_ASN1_CONSTRUCTED|(tag)|(ctx)); \ + *(p++)=0x80 + +# define M_ASN1_I2D_INF_seq_end() *(p++)=0x00; *(p++)=0x00 + +# define M_ASN1_I2D_finish() *pp=p; \ + return(r); + +int asn1_GetSequence(ASN1_const_CTX *c, long *length); +void asn1_add_error(const unsigned char *address, int offset); +#ifdef __cplusplus +} +#endif + +#endif diff --git a/dependencies/include/openssl/asn1t.h b/dependencies/include/openssl/asn1t.h new file mode 100644 index 0000000..99bc0ee --- /dev/null +++ b/dependencies/include/openssl/asn1t.h @@ -0,0 +1,973 @@ +/* asn1t.h */ +/* + * Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL project + * 2000. + */ +/* ==================================================================== + * 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_ASN1T_H +# define HEADER_ASN1T_H + +# include +# include +# include + +# ifdef OPENSSL_BUILD_SHLIBCRYPTO +# undef OPENSSL_EXTERN +# define OPENSSL_EXTERN OPENSSL_EXPORT +# endif + +/* ASN1 template defines, structures and functions */ + +#ifdef __cplusplus +extern "C" { +#endif + +# ifndef OPENSSL_EXPORT_VAR_AS_FUNCTION + +/* Macro to obtain ASN1_ADB pointer from a type (only used internally) */ +# define ASN1_ADB_ptr(iptr) ((const ASN1_ADB *)(iptr)) + +/* Macros for start and end of ASN1_ITEM definition */ + +# define ASN1_ITEM_start(itname) \ + OPENSSL_GLOBAL const ASN1_ITEM itname##_it = { + +# define ASN1_ITEM_end(itname) \ + }; + +# else + +/* Macro to obtain ASN1_ADB pointer from a type (only used internally) */ +# define ASN1_ADB_ptr(iptr) ((const ASN1_ADB *)(iptr())) + +/* Macros for start and end of ASN1_ITEM definition */ + +# define ASN1_ITEM_start(itname) \ + const ASN1_ITEM * itname##_it(void) \ + { \ + static const ASN1_ITEM local_it = { + +# define ASN1_ITEM_end(itname) \ + }; \ + return &local_it; \ + } + +# endif + +/* Macros to aid ASN1 template writing */ + +# define ASN1_ITEM_TEMPLATE(tname) \ + static const ASN1_TEMPLATE tname##_item_tt + +# define ASN1_ITEM_TEMPLATE_END(tname) \ + ;\ + ASN1_ITEM_start(tname) \ + ASN1_ITYPE_PRIMITIVE,\ + -1,\ + &tname##_item_tt,\ + 0,\ + NULL,\ + 0,\ + #tname \ + ASN1_ITEM_end(tname) + +/* This is a ASN1 type which just embeds a template */ + +/*- + * This pair helps declare a SEQUENCE. We can do: + * + * ASN1_SEQUENCE(stname) = { + * ... SEQUENCE components ... + * } ASN1_SEQUENCE_END(stname) + * + * This will produce an ASN1_ITEM called stname_it + * for a structure called stname. + * + * If you want the same structure but a different + * name then use: + * + * ASN1_SEQUENCE(itname) = { + * ... SEQUENCE components ... + * } ASN1_SEQUENCE_END_name(stname, itname) + * + * This will create an item called itname_it using + * a structure called stname. + */ + +# define ASN1_SEQUENCE(tname) \ + static const ASN1_TEMPLATE tname##_seq_tt[] + +# define ASN1_SEQUENCE_END(stname) ASN1_SEQUENCE_END_name(stname, stname) + +# define ASN1_SEQUENCE_END_name(stname, tname) \ + ;\ + ASN1_ITEM_start(tname) \ + ASN1_ITYPE_SEQUENCE,\ + V_ASN1_SEQUENCE,\ + tname##_seq_tt,\ + sizeof(tname##_seq_tt) / sizeof(ASN1_TEMPLATE),\ + NULL,\ + sizeof(stname),\ + #stname \ + ASN1_ITEM_end(tname) + +# define ASN1_NDEF_SEQUENCE(tname) \ + ASN1_SEQUENCE(tname) + +# define ASN1_NDEF_SEQUENCE_cb(tname, cb) \ + ASN1_SEQUENCE_cb(tname, cb) + +# define ASN1_SEQUENCE_cb(tname, cb) \ + static const ASN1_AUX tname##_aux = {NULL, 0, 0, 0, cb, 0}; \ + ASN1_SEQUENCE(tname) + +# define ASN1_BROKEN_SEQUENCE(tname) \ + static const ASN1_AUX tname##_aux = {NULL, ASN1_AFLG_BROKEN, 0, 0, 0, 0}; \ + ASN1_SEQUENCE(tname) + +# define ASN1_SEQUENCE_ref(tname, cb, lck) \ + static const ASN1_AUX tname##_aux = {NULL, ASN1_AFLG_REFCOUNT, offsetof(tname, references), lck, cb, 0}; \ + ASN1_SEQUENCE(tname) + +# define ASN1_SEQUENCE_enc(tname, enc, cb) \ + static const ASN1_AUX tname##_aux = {NULL, ASN1_AFLG_ENCODING, 0, 0, cb, offsetof(tname, enc)}; \ + ASN1_SEQUENCE(tname) + +# define ASN1_NDEF_SEQUENCE_END(tname) \ + ;\ + ASN1_ITEM_start(tname) \ + ASN1_ITYPE_NDEF_SEQUENCE,\ + V_ASN1_SEQUENCE,\ + tname##_seq_tt,\ + sizeof(tname##_seq_tt) / sizeof(ASN1_TEMPLATE),\ + NULL,\ + sizeof(tname),\ + #tname \ + ASN1_ITEM_end(tname) + +# define ASN1_BROKEN_SEQUENCE_END(stname) ASN1_SEQUENCE_END_ref(stname, stname) + +# define ASN1_SEQUENCE_END_enc(stname, tname) ASN1_SEQUENCE_END_ref(stname, tname) + +# define ASN1_SEQUENCE_END_cb(stname, tname) ASN1_SEQUENCE_END_ref(stname, tname) + +# define ASN1_SEQUENCE_END_ref(stname, tname) \ + ;\ + ASN1_ITEM_start(tname) \ + ASN1_ITYPE_SEQUENCE,\ + V_ASN1_SEQUENCE,\ + tname##_seq_tt,\ + sizeof(tname##_seq_tt) / sizeof(ASN1_TEMPLATE),\ + &tname##_aux,\ + sizeof(stname),\ + #stname \ + ASN1_ITEM_end(tname) + +# define ASN1_NDEF_SEQUENCE_END_cb(stname, tname) \ + ;\ + ASN1_ITEM_start(tname) \ + ASN1_ITYPE_NDEF_SEQUENCE,\ + V_ASN1_SEQUENCE,\ + tname##_seq_tt,\ + sizeof(tname##_seq_tt) / sizeof(ASN1_TEMPLATE),\ + &tname##_aux,\ + sizeof(stname),\ + #stname \ + ASN1_ITEM_end(tname) + +/*- + * This pair helps declare a CHOICE type. We can do: + * + * ASN1_CHOICE(chname) = { + * ... CHOICE options ... + * ASN1_CHOICE_END(chname) + * + * This will produce an ASN1_ITEM called chname_it + * for a structure called chname. The structure + * definition must look like this: + * typedef struct { + * int type; + * union { + * ASN1_SOMETHING *opt1; + * ASN1_SOMEOTHER *opt2; + * } value; + * } chname; + * + * the name of the selector must be 'type'. + * to use an alternative selector name use the + * ASN1_CHOICE_END_selector() version. + */ + +# define ASN1_CHOICE(tname) \ + static const ASN1_TEMPLATE tname##_ch_tt[] + +# define ASN1_CHOICE_cb(tname, cb) \ + static const ASN1_AUX tname##_aux = {NULL, 0, 0, 0, cb, 0}; \ + ASN1_CHOICE(tname) + +# define ASN1_CHOICE_END(stname) ASN1_CHOICE_END_name(stname, stname) + +# define ASN1_CHOICE_END_name(stname, tname) ASN1_CHOICE_END_selector(stname, tname, type) + +# define ASN1_CHOICE_END_selector(stname, tname, selname) \ + ;\ + ASN1_ITEM_start(tname) \ + ASN1_ITYPE_CHOICE,\ + offsetof(stname,selname) ,\ + tname##_ch_tt,\ + sizeof(tname##_ch_tt) / sizeof(ASN1_TEMPLATE),\ + NULL,\ + sizeof(stname),\ + #stname \ + ASN1_ITEM_end(tname) + +# define ASN1_CHOICE_END_cb(stname, tname, selname) \ + ;\ + ASN1_ITEM_start(tname) \ + ASN1_ITYPE_CHOICE,\ + offsetof(stname,selname) ,\ + tname##_ch_tt,\ + sizeof(tname##_ch_tt) / sizeof(ASN1_TEMPLATE),\ + &tname##_aux,\ + sizeof(stname),\ + #stname \ + ASN1_ITEM_end(tname) + +/* This helps with the template wrapper form of ASN1_ITEM */ + +# define ASN1_EX_TEMPLATE_TYPE(flags, tag, name, type) { \ + (flags), (tag), 0,\ + #name, ASN1_ITEM_ref(type) } + +/* These help with SEQUENCE or CHOICE components */ + +/* used to declare other types */ + +# define ASN1_EX_TYPE(flags, tag, stname, field, type) { \ + (flags), (tag), offsetof(stname, field),\ + #field, ASN1_ITEM_ref(type) } + +/* used when the structure is combined with the parent */ + +# define ASN1_EX_COMBINE(flags, tag, type) { \ + (flags)|ASN1_TFLG_COMBINE, (tag), 0, NULL, ASN1_ITEM_ref(type) } + +/* implicit and explicit helper macros */ + +# define ASN1_IMP_EX(stname, field, type, tag, ex) \ + ASN1_EX_TYPE(ASN1_TFLG_IMPLICIT | ex, tag, stname, field, type) + +# define ASN1_EXP_EX(stname, field, type, tag, ex) \ + ASN1_EX_TYPE(ASN1_TFLG_EXPLICIT | ex, tag, stname, field, type) + +/* Any defined by macros: the field used is in the table itself */ + +# ifndef OPENSSL_EXPORT_VAR_AS_FUNCTION +# define ASN1_ADB_OBJECT(tblname) { ASN1_TFLG_ADB_OID, -1, 0, #tblname, (const ASN1_ITEM *)&(tblname##_adb) } +# define ASN1_ADB_INTEGER(tblname) { ASN1_TFLG_ADB_INT, -1, 0, #tblname, (const ASN1_ITEM *)&(tblname##_adb) } +# else +# define ASN1_ADB_OBJECT(tblname) { ASN1_TFLG_ADB_OID, -1, 0, #tblname, tblname##_adb } +# define ASN1_ADB_INTEGER(tblname) { ASN1_TFLG_ADB_INT, -1, 0, #tblname, tblname##_adb } +# endif +/* Plain simple type */ +# define ASN1_SIMPLE(stname, field, type) ASN1_EX_TYPE(0,0, stname, field, type) + +/* OPTIONAL simple type */ +# define ASN1_OPT(stname, field, type) ASN1_EX_TYPE(ASN1_TFLG_OPTIONAL, 0, stname, field, type) + +/* IMPLICIT tagged simple type */ +# define ASN1_IMP(stname, field, type, tag) ASN1_IMP_EX(stname, field, type, tag, 0) + +/* IMPLICIT tagged OPTIONAL simple type */ +# define ASN1_IMP_OPT(stname, field, type, tag) ASN1_IMP_EX(stname, field, type, tag, ASN1_TFLG_OPTIONAL) + +/* Same as above but EXPLICIT */ + +# define ASN1_EXP(stname, field, type, tag) ASN1_EXP_EX(stname, field, type, tag, 0) +# define ASN1_EXP_OPT(stname, field, type, tag) ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_OPTIONAL) + +/* SEQUENCE OF type */ +# define ASN1_SEQUENCE_OF(stname, field, type) \ + ASN1_EX_TYPE(ASN1_TFLG_SEQUENCE_OF, 0, stname, field, type) + +/* OPTIONAL SEQUENCE OF */ +# define ASN1_SEQUENCE_OF_OPT(stname, field, type) \ + ASN1_EX_TYPE(ASN1_TFLG_SEQUENCE_OF|ASN1_TFLG_OPTIONAL, 0, stname, field, type) + +/* Same as above but for SET OF */ + +# define ASN1_SET_OF(stname, field, type) \ + ASN1_EX_TYPE(ASN1_TFLG_SET_OF, 0, stname, field, type) + +# define ASN1_SET_OF_OPT(stname, field, type) \ + ASN1_EX_TYPE(ASN1_TFLG_SET_OF|ASN1_TFLG_OPTIONAL, 0, stname, field, type) + +/* Finally compound types of SEQUENCE, SET, IMPLICIT, EXPLICIT and OPTIONAL */ + +# define ASN1_IMP_SET_OF(stname, field, type, tag) \ + ASN1_IMP_EX(stname, field, type, tag, ASN1_TFLG_SET_OF) + +# define ASN1_EXP_SET_OF(stname, field, type, tag) \ + ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_SET_OF) + +# define ASN1_IMP_SET_OF_OPT(stname, field, type, tag) \ + ASN1_IMP_EX(stname, field, type, tag, ASN1_TFLG_SET_OF|ASN1_TFLG_OPTIONAL) + +# define ASN1_EXP_SET_OF_OPT(stname, field, type, tag) \ + ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_SET_OF|ASN1_TFLG_OPTIONAL) + +# define ASN1_IMP_SEQUENCE_OF(stname, field, type, tag) \ + ASN1_IMP_EX(stname, field, type, tag, ASN1_TFLG_SEQUENCE_OF) + +# define ASN1_IMP_SEQUENCE_OF_OPT(stname, field, type, tag) \ + ASN1_IMP_EX(stname, field, type, tag, ASN1_TFLG_SEQUENCE_OF|ASN1_TFLG_OPTIONAL) + +# define ASN1_EXP_SEQUENCE_OF(stname, field, type, tag) \ + ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_SEQUENCE_OF) + +# define ASN1_EXP_SEQUENCE_OF_OPT(stname, field, type, tag) \ + ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_SEQUENCE_OF|ASN1_TFLG_OPTIONAL) + +/* EXPLICIT using indefinite length constructed form */ +# define ASN1_NDEF_EXP(stname, field, type, tag) \ + ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_NDEF) + +/* EXPLICIT OPTIONAL using indefinite length constructed form */ +# define ASN1_NDEF_EXP_OPT(stname, field, type, tag) \ + ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_OPTIONAL|ASN1_TFLG_NDEF) + +/* Macros for the ASN1_ADB structure */ + +# define ASN1_ADB(name) \ + static const ASN1_ADB_TABLE name##_adbtbl[] + +# ifndef OPENSSL_EXPORT_VAR_AS_FUNCTION + +# define ASN1_ADB_END(name, flags, field, app_table, def, none) \ + ;\ + static const ASN1_ADB name##_adb = {\ + flags,\ + offsetof(name, field),\ + app_table,\ + name##_adbtbl,\ + sizeof(name##_adbtbl) / sizeof(ASN1_ADB_TABLE),\ + def,\ + none\ + } + +# else + +# define ASN1_ADB_END(name, flags, field, app_table, def, none) \ + ;\ + static const ASN1_ITEM *name##_adb(void) \ + { \ + static const ASN1_ADB internal_adb = \ + {\ + flags,\ + offsetof(name, field),\ + app_table,\ + name##_adbtbl,\ + sizeof(name##_adbtbl) / sizeof(ASN1_ADB_TABLE),\ + def,\ + none\ + }; \ + return (const ASN1_ITEM *) &internal_adb; \ + } \ + void dummy_function(void) + +# endif + +# define ADB_ENTRY(val, template) {val, template} + +# define ASN1_ADB_TEMPLATE(name) \ + static const ASN1_TEMPLATE name##_tt + +/* + * This is the ASN1 template structure that defines a wrapper round the + * actual type. It determines the actual position of the field in the value + * structure, various flags such as OPTIONAL and the field name. + */ + +struct ASN1_TEMPLATE_st { + unsigned long flags; /* Various flags */ + long tag; /* tag, not used if no tagging */ + unsigned long offset; /* Offset of this field in structure */ +# ifndef NO_ASN1_FIELD_NAMES + const char *field_name; /* Field name */ +# endif + ASN1_ITEM_EXP *item; /* Relevant ASN1_ITEM or ASN1_ADB */ +}; + +/* Macro to extract ASN1_ITEM and ASN1_ADB pointer from ASN1_TEMPLATE */ + +# define ASN1_TEMPLATE_item(t) (t->item_ptr) +# define ASN1_TEMPLATE_adb(t) (t->item_ptr) + +typedef struct ASN1_ADB_TABLE_st ASN1_ADB_TABLE; +typedef struct ASN1_ADB_st ASN1_ADB; + +struct ASN1_ADB_st { + unsigned long flags; /* Various flags */ + unsigned long offset; /* Offset of selector field */ + STACK_OF(ASN1_ADB_TABLE) **app_items; /* Application defined items */ + const ASN1_ADB_TABLE *tbl; /* Table of possible types */ + long tblcount; /* Number of entries in tbl */ + const ASN1_TEMPLATE *default_tt; /* Type to use if no match */ + const ASN1_TEMPLATE *null_tt; /* Type to use if selector is NULL */ +}; + +struct ASN1_ADB_TABLE_st { + long value; /* NID for an object or value for an int */ + const ASN1_TEMPLATE tt; /* item for this value */ +}; + +/* template flags */ + +/* Field is optional */ +# define ASN1_TFLG_OPTIONAL (0x1) + +/* Field is a SET OF */ +# define ASN1_TFLG_SET_OF (0x1 << 1) + +/* Field is a SEQUENCE OF */ +# define ASN1_TFLG_SEQUENCE_OF (0x2 << 1) + +/* + * Special case: this refers to a SET OF that will be sorted into DER order + * when encoded *and* the corresponding STACK will be modified to match the + * new order. + */ +# define ASN1_TFLG_SET_ORDER (0x3 << 1) + +/* Mask for SET OF or SEQUENCE OF */ +# define ASN1_TFLG_SK_MASK (0x3 << 1) + +/* + * These flags mean the tag should be taken from the tag field. If EXPLICIT + * then the underlying type is used for the inner tag. + */ + +/* IMPLICIT tagging */ +# define ASN1_TFLG_IMPTAG (0x1 << 3) + +/* EXPLICIT tagging, inner tag from underlying type */ +# define ASN1_TFLG_EXPTAG (0x2 << 3) + +# define ASN1_TFLG_TAG_MASK (0x3 << 3) + +/* context specific IMPLICIT */ +# define ASN1_TFLG_IMPLICIT ASN1_TFLG_IMPTAG|ASN1_TFLG_CONTEXT + +/* context specific EXPLICIT */ +# define ASN1_TFLG_EXPLICIT ASN1_TFLG_EXPTAG|ASN1_TFLG_CONTEXT + +/* + * If tagging is in force these determine the type of tag to use. Otherwise + * the tag is determined by the underlying type. These values reflect the + * actual octet format. + */ + +/* Universal tag */ +# define ASN1_TFLG_UNIVERSAL (0x0<<6) +/* Application tag */ +# define ASN1_TFLG_APPLICATION (0x1<<6) +/* Context specific tag */ +# define ASN1_TFLG_CONTEXT (0x2<<6) +/* Private tag */ +# define ASN1_TFLG_PRIVATE (0x3<<6) + +# define ASN1_TFLG_TAG_CLASS (0x3<<6) + +/* + * These are for ANY DEFINED BY type. In this case the 'item' field points to + * an ASN1_ADB structure which contains a table of values to decode the + * relevant type + */ + +# define ASN1_TFLG_ADB_MASK (0x3<<8) + +# define ASN1_TFLG_ADB_OID (0x1<<8) + +# define ASN1_TFLG_ADB_INT (0x1<<9) + +/* + * This flag means a parent structure is passed instead of the field: this is + * useful is a SEQUENCE is being combined with a CHOICE for example. Since + * this means the structure and item name will differ we need to use the + * ASN1_CHOICE_END_name() macro for example. + */ + +# define ASN1_TFLG_COMBINE (0x1<<10) + +/* + * This flag when present in a SEQUENCE OF, SET OF or EXPLICIT causes + * indefinite length constructed encoding to be used if required. + */ + +# define ASN1_TFLG_NDEF (0x1<<11) + +/* This is the actual ASN1 item itself */ + +struct ASN1_ITEM_st { + char itype; /* The item type, primitive, SEQUENCE, CHOICE + * or extern */ + long utype; /* underlying type */ + const ASN1_TEMPLATE *templates; /* If SEQUENCE or CHOICE this contains + * the contents */ + long tcount; /* Number of templates if SEQUENCE or CHOICE */ + const void *funcs; /* functions that handle this type */ + long size; /* Structure size (usually) */ +# ifndef NO_ASN1_FIELD_NAMES + const char *sname; /* Structure name */ +# endif +}; + +/*- + * These are values for the itype field and + * determine how the type is interpreted. + * + * For PRIMITIVE types the underlying type + * determines the behaviour if items is NULL. + * + * Otherwise templates must contain a single + * template and the type is treated in the + * same way as the type specified in the template. + * + * For SEQUENCE types the templates field points + * to the members, the size field is the + * structure size. + * + * For CHOICE types the templates field points + * to each possible member (typically a union) + * and the 'size' field is the offset of the + * selector. + * + * The 'funcs' field is used for application + * specific functions. + * + * For COMPAT types the funcs field gives a + * set of functions that handle this type, this + * supports the old d2i, i2d convention. + * + * The EXTERN type uses a new style d2i/i2d. + * The new style should be used where possible + * because it avoids things like the d2i IMPLICIT + * hack. + * + * MSTRING is a multiple string type, it is used + * for a CHOICE of character strings where the + * actual strings all occupy an ASN1_STRING + * structure. In this case the 'utype' field + * has a special meaning, it is used as a mask + * of acceptable types using the B_ASN1 constants. + * + * NDEF_SEQUENCE is the same as SEQUENCE except + * that it will use indefinite length constructed + * encoding if requested. + * + */ + +# define ASN1_ITYPE_PRIMITIVE 0x0 + +# define ASN1_ITYPE_SEQUENCE 0x1 + +# define ASN1_ITYPE_CHOICE 0x2 + +# define ASN1_ITYPE_COMPAT 0x3 + +# define ASN1_ITYPE_EXTERN 0x4 + +# define ASN1_ITYPE_MSTRING 0x5 + +# define ASN1_ITYPE_NDEF_SEQUENCE 0x6 + +/* + * Cache for ASN1 tag and length, so we don't keep re-reading it for things + * like CHOICE + */ + +struct ASN1_TLC_st { + char valid; /* Values below are valid */ + int ret; /* return value */ + long plen; /* length */ + int ptag; /* class value */ + int pclass; /* class value */ + int hdrlen; /* header length */ +}; + +/* Typedefs for ASN1 function pointers */ + +typedef ASN1_VALUE *ASN1_new_func(void); +typedef void ASN1_free_func(ASN1_VALUE *a); +typedef ASN1_VALUE *ASN1_d2i_func(ASN1_VALUE **a, const unsigned char **in, + long length); +typedef int ASN1_i2d_func(ASN1_VALUE *a, unsigned char **in); + +typedef int ASN1_ex_d2i(ASN1_VALUE **pval, const unsigned char **in, long len, + const ASN1_ITEM *it, int tag, int aclass, char opt, + ASN1_TLC *ctx); + +typedef int ASN1_ex_i2d(ASN1_VALUE **pval, unsigned char **out, + const ASN1_ITEM *it, int tag, int aclass); +typedef int ASN1_ex_new_func(ASN1_VALUE **pval, const ASN1_ITEM *it); +typedef void ASN1_ex_free_func(ASN1_VALUE **pval, const ASN1_ITEM *it); + +typedef int ASN1_ex_print_func(BIO *out, ASN1_VALUE **pval, + int indent, const char *fname, + const ASN1_PCTX *pctx); + +typedef int ASN1_primitive_i2c(ASN1_VALUE **pval, unsigned char *cont, + int *putype, const ASN1_ITEM *it); +typedef int ASN1_primitive_c2i(ASN1_VALUE **pval, const unsigned char *cont, + int len, int utype, char *free_cont, + const ASN1_ITEM *it); +typedef int ASN1_primitive_print(BIO *out, ASN1_VALUE **pval, + const ASN1_ITEM *it, int indent, + const ASN1_PCTX *pctx); + +typedef struct ASN1_COMPAT_FUNCS_st { + ASN1_new_func *asn1_new; + ASN1_free_func *asn1_free; + ASN1_d2i_func *asn1_d2i; + ASN1_i2d_func *asn1_i2d; +} ASN1_COMPAT_FUNCS; + +typedef struct ASN1_EXTERN_FUNCS_st { + void *app_data; + ASN1_ex_new_func *asn1_ex_new; + ASN1_ex_free_func *asn1_ex_free; + ASN1_ex_free_func *asn1_ex_clear; + ASN1_ex_d2i *asn1_ex_d2i; + ASN1_ex_i2d *asn1_ex_i2d; + ASN1_ex_print_func *asn1_ex_print; +} ASN1_EXTERN_FUNCS; + +typedef struct ASN1_PRIMITIVE_FUNCS_st { + void *app_data; + unsigned long flags; + ASN1_ex_new_func *prim_new; + ASN1_ex_free_func *prim_free; + ASN1_ex_free_func *prim_clear; + ASN1_primitive_c2i *prim_c2i; + ASN1_primitive_i2c *prim_i2c; + ASN1_primitive_print *prim_print; +} ASN1_PRIMITIVE_FUNCS; + +/* + * This is the ASN1_AUX structure: it handles various miscellaneous + * requirements. For example the use of reference counts and an informational + * callback. The "informational callback" is called at various points during + * the ASN1 encoding and decoding. It can be used to provide minor + * customisation of the structures used. This is most useful where the + * supplied routines *almost* do the right thing but need some extra help at + * a few points. If the callback returns zero then it is assumed a fatal + * error has occurred and the main operation should be abandoned. If major + * changes in the default behaviour are required then an external type is + * more appropriate. + */ + +typedef int ASN1_aux_cb(int operation, ASN1_VALUE **in, const ASN1_ITEM *it, + void *exarg); + +typedef struct ASN1_AUX_st { + void *app_data; + int flags; + int ref_offset; /* Offset of reference value */ + int ref_lock; /* Lock type to use */ + ASN1_aux_cb *asn1_cb; + int enc_offset; /* Offset of ASN1_ENCODING structure */ +} ASN1_AUX; + +/* For print related callbacks exarg points to this structure */ +typedef struct ASN1_PRINT_ARG_st { + BIO *out; + int indent; + const ASN1_PCTX *pctx; +} ASN1_PRINT_ARG; + +/* For streaming related callbacks exarg points to this structure */ +typedef struct ASN1_STREAM_ARG_st { + /* BIO to stream through */ + BIO *out; + /* BIO with filters appended */ + BIO *ndef_bio; + /* Streaming I/O boundary */ + unsigned char **boundary; +} ASN1_STREAM_ARG; + +/* Flags in ASN1_AUX */ + +/* Use a reference count */ +# define ASN1_AFLG_REFCOUNT 1 +/* Save the encoding of structure (useful for signatures) */ +# define ASN1_AFLG_ENCODING 2 +/* The Sequence length is invalid */ +# define ASN1_AFLG_BROKEN 4 + +/* operation values for asn1_cb */ + +# define ASN1_OP_NEW_PRE 0 +# define ASN1_OP_NEW_POST 1 +# define ASN1_OP_FREE_PRE 2 +# define ASN1_OP_FREE_POST 3 +# define ASN1_OP_D2I_PRE 4 +# define ASN1_OP_D2I_POST 5 +# define ASN1_OP_I2D_PRE 6 +# define ASN1_OP_I2D_POST 7 +# define ASN1_OP_PRINT_PRE 8 +# define ASN1_OP_PRINT_POST 9 +# define ASN1_OP_STREAM_PRE 10 +# define ASN1_OP_STREAM_POST 11 +# define ASN1_OP_DETACHED_PRE 12 +# define ASN1_OP_DETACHED_POST 13 + +/* Macro to implement a primitive type */ +# define IMPLEMENT_ASN1_TYPE(stname) IMPLEMENT_ASN1_TYPE_ex(stname, stname, 0) +# define IMPLEMENT_ASN1_TYPE_ex(itname, vname, ex) \ + ASN1_ITEM_start(itname) \ + ASN1_ITYPE_PRIMITIVE, V_##vname, NULL, 0, NULL, ex, #itname \ + ASN1_ITEM_end(itname) + +/* Macro to implement a multi string type */ +# define IMPLEMENT_ASN1_MSTRING(itname, mask) \ + ASN1_ITEM_start(itname) \ + ASN1_ITYPE_MSTRING, mask, NULL, 0, NULL, sizeof(ASN1_STRING), #itname \ + ASN1_ITEM_end(itname) + +/* Macro to implement an ASN1_ITEM in terms of old style funcs */ + +# define IMPLEMENT_COMPAT_ASN1(sname) IMPLEMENT_COMPAT_ASN1_type(sname, V_ASN1_SEQUENCE) + +# define IMPLEMENT_COMPAT_ASN1_type(sname, tag) \ + static const ASN1_COMPAT_FUNCS sname##_ff = { \ + (ASN1_new_func *)sname##_new, \ + (ASN1_free_func *)sname##_free, \ + (ASN1_d2i_func *)d2i_##sname, \ + (ASN1_i2d_func *)i2d_##sname, \ + }; \ + ASN1_ITEM_start(sname) \ + ASN1_ITYPE_COMPAT, \ + tag, \ + NULL, \ + 0, \ + &sname##_ff, \ + 0, \ + #sname \ + ASN1_ITEM_end(sname) + +# define IMPLEMENT_EXTERN_ASN1(sname, tag, fptrs) \ + ASN1_ITEM_start(sname) \ + ASN1_ITYPE_EXTERN, \ + tag, \ + NULL, \ + 0, \ + &fptrs, \ + 0, \ + #sname \ + ASN1_ITEM_end(sname) + +/* Macro to implement standard functions in terms of ASN1_ITEM structures */ + +# define IMPLEMENT_ASN1_FUNCTIONS(stname) IMPLEMENT_ASN1_FUNCTIONS_fname(stname, stname, stname) + +# define IMPLEMENT_ASN1_FUNCTIONS_name(stname, itname) IMPLEMENT_ASN1_FUNCTIONS_fname(stname, itname, itname) + +# define IMPLEMENT_ASN1_FUNCTIONS_ENCODE_name(stname, itname) \ + IMPLEMENT_ASN1_FUNCTIONS_ENCODE_fname(stname, itname, itname) + +# define IMPLEMENT_STATIC_ASN1_ALLOC_FUNCTIONS(stname) \ + IMPLEMENT_ASN1_ALLOC_FUNCTIONS_pfname(static, stname, stname, stname) + +# define IMPLEMENT_ASN1_ALLOC_FUNCTIONS(stname) \ + IMPLEMENT_ASN1_ALLOC_FUNCTIONS_fname(stname, stname, stname) + +# define IMPLEMENT_ASN1_ALLOC_FUNCTIONS_pfname(pre, stname, itname, fname) \ + pre stname *fname##_new(void) \ + { \ + return (stname *)ASN1_item_new(ASN1_ITEM_rptr(itname)); \ + } \ + pre void fname##_free(stname *a) \ + { \ + ASN1_item_free((ASN1_VALUE *)a, ASN1_ITEM_rptr(itname)); \ + } + +# define IMPLEMENT_ASN1_ALLOC_FUNCTIONS_fname(stname, itname, fname) \ + stname *fname##_new(void) \ + { \ + return (stname *)ASN1_item_new(ASN1_ITEM_rptr(itname)); \ + } \ + void fname##_free(stname *a) \ + { \ + ASN1_item_free((ASN1_VALUE *)a, ASN1_ITEM_rptr(itname)); \ + } + +# define IMPLEMENT_ASN1_FUNCTIONS_fname(stname, itname, fname) \ + IMPLEMENT_ASN1_ENCODE_FUNCTIONS_fname(stname, itname, fname) \ + IMPLEMENT_ASN1_ALLOC_FUNCTIONS_fname(stname, itname, fname) + +# define IMPLEMENT_ASN1_ENCODE_FUNCTIONS_fname(stname, itname, fname) \ + stname *d2i_##fname(stname **a, const unsigned char **in, long len) \ + { \ + return (stname *)ASN1_item_d2i((ASN1_VALUE **)a, in, len, ASN1_ITEM_rptr(itname));\ + } \ + int i2d_##fname(stname *a, unsigned char **out) \ + { \ + return ASN1_item_i2d((ASN1_VALUE *)a, out, ASN1_ITEM_rptr(itname));\ + } + +# define IMPLEMENT_ASN1_NDEF_FUNCTION(stname) \ + int i2d_##stname##_NDEF(stname *a, unsigned char **out) \ + { \ + return ASN1_item_ndef_i2d((ASN1_VALUE *)a, out, ASN1_ITEM_rptr(stname));\ + } + +/* + * This includes evil casts to remove const: they will go away when full ASN1 + * constification is done. + */ +# define IMPLEMENT_ASN1_ENCODE_FUNCTIONS_const_fname(stname, itname, fname) \ + stname *d2i_##fname(stname **a, const unsigned char **in, long len) \ + { \ + return (stname *)ASN1_item_d2i((ASN1_VALUE **)a, in, len, ASN1_ITEM_rptr(itname));\ + } \ + int i2d_##fname(const stname *a, unsigned char **out) \ + { \ + return ASN1_item_i2d((ASN1_VALUE *)a, out, ASN1_ITEM_rptr(itname));\ + } + +# define IMPLEMENT_ASN1_DUP_FUNCTION(stname) \ + stname * stname##_dup(stname *x) \ + { \ + return ASN1_item_dup(ASN1_ITEM_rptr(stname), x); \ + } + +# define IMPLEMENT_ASN1_PRINT_FUNCTION(stname) \ + IMPLEMENT_ASN1_PRINT_FUNCTION_fname(stname, stname, stname) + +# define IMPLEMENT_ASN1_PRINT_FUNCTION_fname(stname, itname, fname) \ + int fname##_print_ctx(BIO *out, stname *x, int indent, \ + const ASN1_PCTX *pctx) \ + { \ + return ASN1_item_print(out, (ASN1_VALUE *)x, indent, \ + ASN1_ITEM_rptr(itname), pctx); \ + } + +# define IMPLEMENT_ASN1_FUNCTIONS_const(name) \ + IMPLEMENT_ASN1_FUNCTIONS_const_fname(name, name, name) + +# define IMPLEMENT_ASN1_FUNCTIONS_const_fname(stname, itname, fname) \ + IMPLEMENT_ASN1_ENCODE_FUNCTIONS_const_fname(stname, itname, fname) \ + IMPLEMENT_ASN1_ALLOC_FUNCTIONS_fname(stname, itname, fname) + +/* external definitions for primitive types */ + +DECLARE_ASN1_ITEM(ASN1_BOOLEAN) +DECLARE_ASN1_ITEM(ASN1_TBOOLEAN) +DECLARE_ASN1_ITEM(ASN1_FBOOLEAN) +DECLARE_ASN1_ITEM(ASN1_SEQUENCE) +DECLARE_ASN1_ITEM(CBIGNUM) +DECLARE_ASN1_ITEM(BIGNUM) +DECLARE_ASN1_ITEM(LONG) +DECLARE_ASN1_ITEM(ZLONG) + +DECLARE_STACK_OF(ASN1_VALUE) + +/* Functions used internally by the ASN1 code */ + +int ASN1_item_ex_new(ASN1_VALUE **pval, const ASN1_ITEM *it); +void ASN1_item_ex_free(ASN1_VALUE **pval, const ASN1_ITEM *it); +int ASN1_template_new(ASN1_VALUE **pval, const ASN1_TEMPLATE *tt); +int ASN1_primitive_new(ASN1_VALUE **pval, const ASN1_ITEM *it); + +void ASN1_template_free(ASN1_VALUE **pval, const ASN1_TEMPLATE *tt); +int ASN1_template_d2i(ASN1_VALUE **pval, const unsigned char **in, long len, + const ASN1_TEMPLATE *tt); +int ASN1_item_ex_d2i(ASN1_VALUE **pval, const unsigned char **in, long len, + const ASN1_ITEM *it, int tag, int aclass, char opt, + ASN1_TLC *ctx); + +int ASN1_item_ex_i2d(ASN1_VALUE **pval, unsigned char **out, + const ASN1_ITEM *it, int tag, int aclass); +int ASN1_template_i2d(ASN1_VALUE **pval, unsigned char **out, + const ASN1_TEMPLATE *tt); +void ASN1_primitive_free(ASN1_VALUE **pval, const ASN1_ITEM *it); + +int asn1_ex_i2c(ASN1_VALUE **pval, unsigned char *cont, int *putype, + const ASN1_ITEM *it); +int asn1_ex_c2i(ASN1_VALUE **pval, const unsigned char *cont, int len, + int utype, char *free_cont, const ASN1_ITEM *it); + +int asn1_get_choice_selector(ASN1_VALUE **pval, const ASN1_ITEM *it); +int asn1_set_choice_selector(ASN1_VALUE **pval, int value, + const ASN1_ITEM *it); + +ASN1_VALUE **asn1_get_field_ptr(ASN1_VALUE **pval, const ASN1_TEMPLATE *tt); + +const ASN1_TEMPLATE *asn1_do_adb(ASN1_VALUE **pval, const ASN1_TEMPLATE *tt, + int nullerr); + +int asn1_do_lock(ASN1_VALUE **pval, int op, const ASN1_ITEM *it); + +void asn1_enc_init(ASN1_VALUE **pval, const ASN1_ITEM *it); +void asn1_enc_free(ASN1_VALUE **pval, const ASN1_ITEM *it); +int asn1_enc_restore(int *len, unsigned char **out, ASN1_VALUE **pval, + const ASN1_ITEM *it); +int asn1_enc_save(ASN1_VALUE **pval, const unsigned char *in, int inlen, + const ASN1_ITEM *it); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/dependencies/include/openssl/bio.h b/dependencies/include/openssl/bio.h new file mode 100644 index 0000000..8f2438c --- /dev/null +++ b/dependencies/include/openssl/bio.h @@ -0,0 +1,883 @@ +/* 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_ctrl(b,BIO_C_GET_CONNECT,3,NULL) + +# define BIO_set_nbio(b,n) BIO_ctrl(b,BIO_C_SET_NBIO,(n),NULL) + +/* BIO_s_accept() */ +# 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) + +/* BIO_s_accept() and BIO_s_connect() */ +# 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) + +/* BIO_s_datagram(), BIO_s_fd(), BIO_s_socket(), BIO_s_accept() and BIO_s_connect() */ +# 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) + +/* BIO_s_file() */ +# 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) + +/* BIO_s_fd() and BIO_s_file() */ +# 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(const 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_DGRAM_SCTP_WRITE 133 +# 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/dependencies/include/openssl/blowfish.h b/dependencies/include/openssl/blowfish.h new file mode 100644 index 0000000..8329302 --- /dev/null +++ b/dependencies/include/openssl/blowfish.h @@ -0,0 +1,130 @@ +/* crypto/bf/blowfish.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_BLOWFISH_H +# define HEADER_BLOWFISH_H + +# include + +#ifdef __cplusplus +extern "C" { +#endif + +# ifdef OPENSSL_NO_BF +# error BF is disabled. +# endif + +# define BF_ENCRYPT 1 +# define BF_DECRYPT 0 + +/*- + * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + * ! BF_LONG has to be at least 32 bits wide. If it's wider, then ! + * ! BF_LONG_LOG2 has to be defined along. ! + * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + */ + +# if defined(__LP32__) +# define BF_LONG unsigned long +# elif defined(OPENSSL_SYS_CRAY) || defined(__ILP64__) +# define BF_LONG unsigned long +# define BF_LONG_LOG2 3 +/* + * _CRAY note. I could declare short, but I have no idea what impact + * does it have on performance on none-T3E machines. I could declare + * int, but at least on C90 sizeof(int) can be chosen at compile time. + * So I've chosen long... + * + */ +# else +# define BF_LONG unsigned int +# endif + +# define BF_ROUNDS 16 +# define BF_BLOCK 8 + +typedef struct bf_key_st { + BF_LONG P[BF_ROUNDS + 2]; + BF_LONG S[4 * 256]; +} BF_KEY; + +# ifdef OPENSSL_FIPS +void private_BF_set_key(BF_KEY *key, int len, const unsigned char *data); +# endif +void BF_set_key(BF_KEY *key, int len, const unsigned char *data); + +void BF_encrypt(BF_LONG *data, const BF_KEY *key); +void BF_decrypt(BF_LONG *data, const BF_KEY *key); + +void BF_ecb_encrypt(const unsigned char *in, unsigned char *out, + const BF_KEY *key, int enc); +void BF_cbc_encrypt(const unsigned char *in, unsigned char *out, long length, + const BF_KEY *schedule, unsigned char *ivec, int enc); +void BF_cfb64_encrypt(const unsigned char *in, unsigned char *out, + long length, const BF_KEY *schedule, + unsigned char *ivec, int *num, int enc); +void BF_ofb64_encrypt(const unsigned char *in, unsigned char *out, + long length, const BF_KEY *schedule, + unsigned char *ivec, int *num); +const char *BF_options(void); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/dependencies/include/openssl/bn.h b/dependencies/include/openssl/bn.h new file mode 100644 index 0000000..633d1b1 --- /dev/null +++ b/dependencies/include/openssl/bn.h @@ -0,0 +1,951 @@ +/* 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 +# 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 > (INT_MAX - BN_BITS2 + 1) ? \ + NULL \ + : \ + (((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*)); \ + /* Debug only - safe to ignore error return */ \ + 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; \ + } \ + if ((a)->top == 0) \ + (a)->neg = 0; \ + 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_LSHIFT 145 +# 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_RSHIFT 146 +# 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_BITS_TOO_SMALL 118 +# 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_INVALID_SHIFT 119 +# 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/dependencies/include/openssl/buffer.h b/dependencies/include/openssl/buffer.h new file mode 100644 index 0000000..efd240a --- /dev/null +++ b/dependencies/include/openssl/buffer.h @@ -0,0 +1,125 @@ +/* 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); + +/* + * Like strndup, but in addition, explicitly guarantees to never read past the + * first |siz| bytes of |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/dependencies/include/openssl/camellia.h b/dependencies/include/openssl/camellia.h new file mode 100644 index 0000000..45e8d25 --- /dev/null +++ b/dependencies/include/openssl/camellia.h @@ -0,0 +1,132 @@ +/* crypto/camellia/camellia.h */ +/* ==================================================================== + * Copyright (c) 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. + * ==================================================================== + * + */ + +#ifndef HEADER_CAMELLIA_H +# define HEADER_CAMELLIA_H + +# include + +# ifdef OPENSSL_NO_CAMELLIA +# error CAMELLIA is disabled. +# endif + +# include + +# define CAMELLIA_ENCRYPT 1 +# define CAMELLIA_DECRYPT 0 + +/* + * Because array size can't be a const in C, the following two are macros. + * Both sizes are in bytes. + */ + +#ifdef __cplusplus +extern "C" { +#endif + +/* This should be a hidden type, but EVP requires that the size be known */ + +# define CAMELLIA_BLOCK_SIZE 16 +# define CAMELLIA_TABLE_BYTE_LEN 272 +# define CAMELLIA_TABLE_WORD_LEN (CAMELLIA_TABLE_BYTE_LEN / 4) + +typedef unsigned int KEY_TABLE_TYPE[CAMELLIA_TABLE_WORD_LEN]; /* to match + * with WORD */ + +struct camellia_key_st { + union { + double d; /* ensures 64-bit align */ + KEY_TABLE_TYPE rd_key; + } u; + int grand_rounds; +}; +typedef struct camellia_key_st CAMELLIA_KEY; + +# ifdef OPENSSL_FIPS +int private_Camellia_set_key(const unsigned char *userKey, const int bits, + CAMELLIA_KEY *key); +# endif +int Camellia_set_key(const unsigned char *userKey, const int bits, + CAMELLIA_KEY *key); + +void Camellia_encrypt(const unsigned char *in, unsigned char *out, + const CAMELLIA_KEY *key); +void Camellia_decrypt(const unsigned char *in, unsigned char *out, + const CAMELLIA_KEY *key); + +void Camellia_ecb_encrypt(const unsigned char *in, unsigned char *out, + const CAMELLIA_KEY *key, const int enc); +void Camellia_cbc_encrypt(const unsigned char *in, unsigned char *out, + size_t length, const CAMELLIA_KEY *key, + unsigned char *ivec, const int enc); +void Camellia_cfb128_encrypt(const unsigned char *in, unsigned char *out, + size_t length, const CAMELLIA_KEY *key, + unsigned char *ivec, int *num, const int enc); +void Camellia_cfb1_encrypt(const unsigned char *in, unsigned char *out, + size_t length, const CAMELLIA_KEY *key, + unsigned char *ivec, int *num, const int enc); +void Camellia_cfb8_encrypt(const unsigned char *in, unsigned char *out, + size_t length, const CAMELLIA_KEY *key, + unsigned char *ivec, int *num, const int enc); +void Camellia_ofb128_encrypt(const unsigned char *in, unsigned char *out, + size_t length, const CAMELLIA_KEY *key, + unsigned char *ivec, int *num); +void Camellia_ctr128_encrypt(const unsigned char *in, unsigned char *out, + size_t length, const CAMELLIA_KEY *key, + unsigned char ivec[CAMELLIA_BLOCK_SIZE], + unsigned char ecount_buf[CAMELLIA_BLOCK_SIZE], + unsigned int *num); + +#ifdef __cplusplus +} +#endif + +#endif /* !HEADER_Camellia_H */ diff --git a/dependencies/include/openssl/cast.h b/dependencies/include/openssl/cast.h new file mode 100644 index 0000000..0003ec9 --- /dev/null +++ b/dependencies/include/openssl/cast.h @@ -0,0 +1,107 @@ +/* crypto/cast/cast.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_CAST_H +# define HEADER_CAST_H + +#ifdef __cplusplus +extern "C" { +#endif + +# include + +# ifdef OPENSSL_NO_CAST +# error CAST is disabled. +# endif + +# define CAST_ENCRYPT 1 +# define CAST_DECRYPT 0 + +# define CAST_LONG unsigned int + +# define CAST_BLOCK 8 +# define CAST_KEY_LENGTH 16 + +typedef struct cast_key_st { + CAST_LONG data[32]; + int short_key; /* Use reduced rounds for short key */ +} CAST_KEY; + +# ifdef OPENSSL_FIPS +void private_CAST_set_key(CAST_KEY *key, int len, const unsigned char *data); +# endif +void CAST_set_key(CAST_KEY *key, int len, const unsigned char *data); +void CAST_ecb_encrypt(const unsigned char *in, unsigned char *out, + const CAST_KEY *key, int enc); +void CAST_encrypt(CAST_LONG *data, const CAST_KEY *key); +void CAST_decrypt(CAST_LONG *data, const CAST_KEY *key); +void CAST_cbc_encrypt(const unsigned char *in, unsigned char *out, + long length, const CAST_KEY *ks, unsigned char *iv, + int enc); +void CAST_cfb64_encrypt(const unsigned char *in, unsigned char *out, + long length, const CAST_KEY *schedule, + unsigned char *ivec, int *num, int enc); +void CAST_ofb64_encrypt(const unsigned char *in, unsigned char *out, + long length, const CAST_KEY *schedule, + unsigned char *ivec, int *num); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/dependencies/include/openssl/cmac.h b/dependencies/include/openssl/cmac.h new file mode 100644 index 0000000..175be83 --- /dev/null +++ b/dependencies/include/openssl/cmac.h @@ -0,0 +1,82 @@ +/* crypto/cmac/cmac.h */ +/* + * Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL + * project. + */ +/* ==================================================================== + * Copyright (c) 2010 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. + * ==================================================================== + */ + +#ifndef HEADER_CMAC_H +# define HEADER_CMAC_H + +#ifdef __cplusplus +extern "C" { +#endif + +# include + +/* Opaque */ +typedef struct CMAC_CTX_st CMAC_CTX; + +CMAC_CTX *CMAC_CTX_new(void); +void CMAC_CTX_cleanup(CMAC_CTX *ctx); +void CMAC_CTX_free(CMAC_CTX *ctx); +EVP_CIPHER_CTX *CMAC_CTX_get0_cipher_ctx(CMAC_CTX *ctx); +int CMAC_CTX_copy(CMAC_CTX *out, const CMAC_CTX *in); + +int CMAC_Init(CMAC_CTX *ctx, const void *key, size_t keylen, + const EVP_CIPHER *cipher, ENGINE *impl); +int CMAC_Update(CMAC_CTX *ctx, const void *data, size_t dlen); +int CMAC_Final(CMAC_CTX *ctx, unsigned char *out, size_t *poutlen); +int CMAC_resume(CMAC_CTX *ctx); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/dependencies/include/openssl/cms.h b/dependencies/include/openssl/cms.h new file mode 100644 index 0000000..e6c7f96 --- /dev/null +++ b/dependencies/include/openssl/cms.h @@ -0,0 +1,555 @@ +/* crypto/cms/cms.h */ +/* + * Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL + * project. + */ +/* ==================================================================== + * Copyright (c) 2008 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. + * ==================================================================== + */ + +#ifndef HEADER_CMS_H +# define HEADER_CMS_H + +# include + +# ifdef OPENSSL_NO_CMS +# error CMS is disabled. +# endif + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct CMS_ContentInfo_st CMS_ContentInfo; +typedef struct CMS_SignerInfo_st CMS_SignerInfo; +typedef struct CMS_CertificateChoices CMS_CertificateChoices; +typedef struct CMS_RevocationInfoChoice_st CMS_RevocationInfoChoice; +typedef struct CMS_RecipientInfo_st CMS_RecipientInfo; +typedef struct CMS_ReceiptRequest_st CMS_ReceiptRequest; +typedef struct CMS_Receipt_st CMS_Receipt; +typedef struct CMS_RecipientEncryptedKey_st CMS_RecipientEncryptedKey; +typedef struct CMS_OtherKeyAttribute_st CMS_OtherKeyAttribute; + +DECLARE_STACK_OF(CMS_SignerInfo) +DECLARE_STACK_OF(GENERAL_NAMES) +DECLARE_STACK_OF(CMS_RecipientEncryptedKey) +DECLARE_ASN1_FUNCTIONS(CMS_ContentInfo) +DECLARE_ASN1_FUNCTIONS(CMS_ReceiptRequest) +DECLARE_ASN1_PRINT_FUNCTION(CMS_ContentInfo) + +# define CMS_SIGNERINFO_ISSUER_SERIAL 0 +# define CMS_SIGNERINFO_KEYIDENTIFIER 1 + +# define CMS_RECIPINFO_NONE -1 +# define CMS_RECIPINFO_TRANS 0 +# define CMS_RECIPINFO_AGREE 1 +# define CMS_RECIPINFO_KEK 2 +# define CMS_RECIPINFO_PASS 3 +# define CMS_RECIPINFO_OTHER 4 + +/* S/MIME related flags */ + +# define CMS_TEXT 0x1 +# define CMS_NOCERTS 0x2 +# define CMS_NO_CONTENT_VERIFY 0x4 +# define CMS_NO_ATTR_VERIFY 0x8 +# define CMS_NOSIGS \ + (CMS_NO_CONTENT_VERIFY|CMS_NO_ATTR_VERIFY) +# define CMS_NOINTERN 0x10 +# define CMS_NO_SIGNER_CERT_VERIFY 0x20 +# define CMS_NOVERIFY 0x20 +# define CMS_DETACHED 0x40 +# define CMS_BINARY 0x80 +# define CMS_NOATTR 0x100 +# define CMS_NOSMIMECAP 0x200 +# define CMS_NOOLDMIMETYPE 0x400 +# define CMS_CRLFEOL 0x800 +# define CMS_STREAM 0x1000 +# define CMS_NOCRL 0x2000 +# define CMS_PARTIAL 0x4000 +# define CMS_REUSE_DIGEST 0x8000 +# define CMS_USE_KEYID 0x10000 +# define CMS_DEBUG_DECRYPT 0x20000 +# define CMS_KEY_PARAM 0x40000 + +const ASN1_OBJECT *CMS_get0_type(CMS_ContentInfo *cms); + +BIO *CMS_dataInit(CMS_ContentInfo *cms, BIO *icont); +int CMS_dataFinal(CMS_ContentInfo *cms, BIO *bio); + +ASN1_OCTET_STRING **CMS_get0_content(CMS_ContentInfo *cms); +int CMS_is_detached(CMS_ContentInfo *cms); +int CMS_set_detached(CMS_ContentInfo *cms, int detached); + +# ifdef HEADER_PEM_H +DECLARE_PEM_rw_const(CMS, CMS_ContentInfo) +# endif +int CMS_stream(unsigned char ***boundary, CMS_ContentInfo *cms); +CMS_ContentInfo *d2i_CMS_bio(BIO *bp, CMS_ContentInfo **cms); +int i2d_CMS_bio(BIO *bp, CMS_ContentInfo *cms); + +BIO *BIO_new_CMS(BIO *out, CMS_ContentInfo *cms); +int i2d_CMS_bio_stream(BIO *out, CMS_ContentInfo *cms, BIO *in, int flags); +int PEM_write_bio_CMS_stream(BIO *out, CMS_ContentInfo *cms, BIO *in, + int flags); +CMS_ContentInfo *SMIME_read_CMS(BIO *bio, BIO **bcont); +int SMIME_write_CMS(BIO *bio, CMS_ContentInfo *cms, BIO *data, int flags); + +int CMS_final(CMS_ContentInfo *cms, BIO *data, BIO *dcont, + unsigned int flags); + +CMS_ContentInfo *CMS_sign(X509 *signcert, EVP_PKEY *pkey, + STACK_OF(X509) *certs, BIO *data, + unsigned int flags); + +CMS_ContentInfo *CMS_sign_receipt(CMS_SignerInfo *si, + X509 *signcert, EVP_PKEY *pkey, + STACK_OF(X509) *certs, unsigned int flags); + +int CMS_data(CMS_ContentInfo *cms, BIO *out, unsigned int flags); +CMS_ContentInfo *CMS_data_create(BIO *in, unsigned int flags); + +int CMS_digest_verify(CMS_ContentInfo *cms, BIO *dcont, BIO *out, + unsigned int flags); +CMS_ContentInfo *CMS_digest_create(BIO *in, const EVP_MD *md, + unsigned int flags); + +int CMS_EncryptedData_decrypt(CMS_ContentInfo *cms, + const unsigned char *key, size_t keylen, + BIO *dcont, BIO *out, unsigned int flags); + +CMS_ContentInfo *CMS_EncryptedData_encrypt(BIO *in, const EVP_CIPHER *cipher, + const unsigned char *key, + size_t keylen, unsigned int flags); + +int CMS_EncryptedData_set1_key(CMS_ContentInfo *cms, const EVP_CIPHER *ciph, + const unsigned char *key, size_t keylen); + +int CMS_verify(CMS_ContentInfo *cms, STACK_OF(X509) *certs, + X509_STORE *store, BIO *dcont, BIO *out, unsigned int flags); + +int CMS_verify_receipt(CMS_ContentInfo *rcms, CMS_ContentInfo *ocms, + STACK_OF(X509) *certs, + X509_STORE *store, unsigned int flags); + +STACK_OF(X509) *CMS_get0_signers(CMS_ContentInfo *cms); + +CMS_ContentInfo *CMS_encrypt(STACK_OF(X509) *certs, BIO *in, + const EVP_CIPHER *cipher, unsigned int flags); + +int CMS_decrypt(CMS_ContentInfo *cms, EVP_PKEY *pkey, X509 *cert, + BIO *dcont, BIO *out, unsigned int flags); + +int CMS_decrypt_set1_pkey(CMS_ContentInfo *cms, EVP_PKEY *pk, X509 *cert); +int CMS_decrypt_set1_key(CMS_ContentInfo *cms, + unsigned char *key, size_t keylen, + unsigned char *id, size_t idlen); +int CMS_decrypt_set1_password(CMS_ContentInfo *cms, + unsigned char *pass, ossl_ssize_t passlen); + +STACK_OF(CMS_RecipientInfo) *CMS_get0_RecipientInfos(CMS_ContentInfo *cms); +int CMS_RecipientInfo_type(CMS_RecipientInfo *ri); +EVP_PKEY_CTX *CMS_RecipientInfo_get0_pkey_ctx(CMS_RecipientInfo *ri); +CMS_ContentInfo *CMS_EnvelopedData_create(const EVP_CIPHER *cipher); +CMS_RecipientInfo *CMS_add1_recipient_cert(CMS_ContentInfo *cms, + X509 *recip, unsigned int flags); +int CMS_RecipientInfo_set0_pkey(CMS_RecipientInfo *ri, EVP_PKEY *pkey); +int CMS_RecipientInfo_ktri_cert_cmp(CMS_RecipientInfo *ri, X509 *cert); +int CMS_RecipientInfo_ktri_get0_algs(CMS_RecipientInfo *ri, + EVP_PKEY **pk, X509 **recip, + X509_ALGOR **palg); +int CMS_RecipientInfo_ktri_get0_signer_id(CMS_RecipientInfo *ri, + ASN1_OCTET_STRING **keyid, + X509_NAME **issuer, + ASN1_INTEGER **sno); + +CMS_RecipientInfo *CMS_add0_recipient_key(CMS_ContentInfo *cms, int nid, + unsigned char *key, size_t keylen, + unsigned char *id, size_t idlen, + ASN1_GENERALIZEDTIME *date, + ASN1_OBJECT *otherTypeId, + ASN1_TYPE *otherType); + +int CMS_RecipientInfo_kekri_get0_id(CMS_RecipientInfo *ri, + X509_ALGOR **palg, + ASN1_OCTET_STRING **pid, + ASN1_GENERALIZEDTIME **pdate, + ASN1_OBJECT **potherid, + ASN1_TYPE **pothertype); + +int CMS_RecipientInfo_set0_key(CMS_RecipientInfo *ri, + unsigned char *key, size_t keylen); + +int CMS_RecipientInfo_kekri_id_cmp(CMS_RecipientInfo *ri, + const unsigned char *id, size_t idlen); + +int CMS_RecipientInfo_set0_password(CMS_RecipientInfo *ri, + unsigned char *pass, + ossl_ssize_t passlen); + +CMS_RecipientInfo *CMS_add0_recipient_password(CMS_ContentInfo *cms, + int iter, int wrap_nid, + int pbe_nid, + unsigned char *pass, + ossl_ssize_t passlen, + const EVP_CIPHER *kekciph); + +int CMS_RecipientInfo_decrypt(CMS_ContentInfo *cms, CMS_RecipientInfo *ri); +int CMS_RecipientInfo_encrypt(CMS_ContentInfo *cms, CMS_RecipientInfo *ri); + +int CMS_uncompress(CMS_ContentInfo *cms, BIO *dcont, BIO *out, + unsigned int flags); +CMS_ContentInfo *CMS_compress(BIO *in, int comp_nid, unsigned int flags); + +int CMS_set1_eContentType(CMS_ContentInfo *cms, const ASN1_OBJECT *oid); +const ASN1_OBJECT *CMS_get0_eContentType(CMS_ContentInfo *cms); + +CMS_CertificateChoices *CMS_add0_CertificateChoices(CMS_ContentInfo *cms); +int CMS_add0_cert(CMS_ContentInfo *cms, X509 *cert); +int CMS_add1_cert(CMS_ContentInfo *cms, X509 *cert); +STACK_OF(X509) *CMS_get1_certs(CMS_ContentInfo *cms); + +CMS_RevocationInfoChoice *CMS_add0_RevocationInfoChoice(CMS_ContentInfo *cms); +int CMS_add0_crl(CMS_ContentInfo *cms, X509_CRL *crl); +int CMS_add1_crl(CMS_ContentInfo *cms, X509_CRL *crl); +STACK_OF(X509_CRL) *CMS_get1_crls(CMS_ContentInfo *cms); + +int CMS_SignedData_init(CMS_ContentInfo *cms); +CMS_SignerInfo *CMS_add1_signer(CMS_ContentInfo *cms, + X509 *signer, EVP_PKEY *pk, const EVP_MD *md, + unsigned int flags); +EVP_PKEY_CTX *CMS_SignerInfo_get0_pkey_ctx(CMS_SignerInfo *si); +EVP_MD_CTX *CMS_SignerInfo_get0_md_ctx(CMS_SignerInfo *si); +STACK_OF(CMS_SignerInfo) *CMS_get0_SignerInfos(CMS_ContentInfo *cms); + +void CMS_SignerInfo_set1_signer_cert(CMS_SignerInfo *si, X509 *signer); +int CMS_SignerInfo_get0_signer_id(CMS_SignerInfo *si, + ASN1_OCTET_STRING **keyid, + X509_NAME **issuer, ASN1_INTEGER **sno); +int CMS_SignerInfo_cert_cmp(CMS_SignerInfo *si, X509 *cert); +int CMS_set1_signers_certs(CMS_ContentInfo *cms, STACK_OF(X509) *certs, + unsigned int flags); +void CMS_SignerInfo_get0_algs(CMS_SignerInfo *si, EVP_PKEY **pk, + X509 **signer, X509_ALGOR **pdig, + X509_ALGOR **psig); +ASN1_OCTET_STRING *CMS_SignerInfo_get0_signature(CMS_SignerInfo *si); +int CMS_SignerInfo_sign(CMS_SignerInfo *si); +int CMS_SignerInfo_verify(CMS_SignerInfo *si); +int CMS_SignerInfo_verify_content(CMS_SignerInfo *si, BIO *chain); + +int CMS_add_smimecap(CMS_SignerInfo *si, STACK_OF(X509_ALGOR) *algs); +int CMS_add_simple_smimecap(STACK_OF(X509_ALGOR) **algs, + int algnid, int keysize); +int CMS_add_standard_smimecap(STACK_OF(X509_ALGOR) **smcap); + +int CMS_signed_get_attr_count(const CMS_SignerInfo *si); +int CMS_signed_get_attr_by_NID(const CMS_SignerInfo *si, int nid, + int lastpos); +int CMS_signed_get_attr_by_OBJ(const CMS_SignerInfo *si, ASN1_OBJECT *obj, + int lastpos); +X509_ATTRIBUTE *CMS_signed_get_attr(const CMS_SignerInfo *si, int loc); +X509_ATTRIBUTE *CMS_signed_delete_attr(CMS_SignerInfo *si, int loc); +int CMS_signed_add1_attr(CMS_SignerInfo *si, X509_ATTRIBUTE *attr); +int CMS_signed_add1_attr_by_OBJ(CMS_SignerInfo *si, + const ASN1_OBJECT *obj, int type, + const void *bytes, int len); +int CMS_signed_add1_attr_by_NID(CMS_SignerInfo *si, + int nid, int type, + const void *bytes, int len); +int CMS_signed_add1_attr_by_txt(CMS_SignerInfo *si, + const char *attrname, int type, + const void *bytes, int len); +void *CMS_signed_get0_data_by_OBJ(CMS_SignerInfo *si, ASN1_OBJECT *oid, + int lastpos, int type); + +int CMS_unsigned_get_attr_count(const CMS_SignerInfo *si); +int CMS_unsigned_get_attr_by_NID(const CMS_SignerInfo *si, int nid, + int lastpos); +int CMS_unsigned_get_attr_by_OBJ(const CMS_SignerInfo *si, ASN1_OBJECT *obj, + int lastpos); +X509_ATTRIBUTE *CMS_unsigned_get_attr(const CMS_SignerInfo *si, int loc); +X509_ATTRIBUTE *CMS_unsigned_delete_attr(CMS_SignerInfo *si, int loc); +int CMS_unsigned_add1_attr(CMS_SignerInfo *si, X509_ATTRIBUTE *attr); +int CMS_unsigned_add1_attr_by_OBJ(CMS_SignerInfo *si, + const ASN1_OBJECT *obj, int type, + const void *bytes, int len); +int CMS_unsigned_add1_attr_by_NID(CMS_SignerInfo *si, + int nid, int type, + const void *bytes, int len); +int CMS_unsigned_add1_attr_by_txt(CMS_SignerInfo *si, + const char *attrname, int type, + const void *bytes, int len); +void *CMS_unsigned_get0_data_by_OBJ(CMS_SignerInfo *si, ASN1_OBJECT *oid, + int lastpos, int type); + +# ifdef HEADER_X509V3_H + +int CMS_get1_ReceiptRequest(CMS_SignerInfo *si, CMS_ReceiptRequest **prr); +CMS_ReceiptRequest *CMS_ReceiptRequest_create0(unsigned char *id, int idlen, + int allorfirst, + STACK_OF(GENERAL_NAMES) + *receiptList, STACK_OF(GENERAL_NAMES) + *receiptsTo); +int CMS_add1_ReceiptRequest(CMS_SignerInfo *si, CMS_ReceiptRequest *rr); +void CMS_ReceiptRequest_get0_values(CMS_ReceiptRequest *rr, + ASN1_STRING **pcid, + int *pallorfirst, + STACK_OF(GENERAL_NAMES) **plist, + STACK_OF(GENERAL_NAMES) **prto); +# endif +int CMS_RecipientInfo_kari_get0_alg(CMS_RecipientInfo *ri, + X509_ALGOR **palg, + ASN1_OCTET_STRING **pukm); +STACK_OF(CMS_RecipientEncryptedKey) +*CMS_RecipientInfo_kari_get0_reks(CMS_RecipientInfo *ri); + +int CMS_RecipientInfo_kari_get0_orig_id(CMS_RecipientInfo *ri, + X509_ALGOR **pubalg, + ASN1_BIT_STRING **pubkey, + ASN1_OCTET_STRING **keyid, + X509_NAME **issuer, + ASN1_INTEGER **sno); + +int CMS_RecipientInfo_kari_orig_id_cmp(CMS_RecipientInfo *ri, X509 *cert); + +int CMS_RecipientEncryptedKey_get0_id(CMS_RecipientEncryptedKey *rek, + ASN1_OCTET_STRING **keyid, + ASN1_GENERALIZEDTIME **tm, + CMS_OtherKeyAttribute **other, + X509_NAME **issuer, ASN1_INTEGER **sno); +int CMS_RecipientEncryptedKey_cert_cmp(CMS_RecipientEncryptedKey *rek, + X509 *cert); +int CMS_RecipientInfo_kari_set0_pkey(CMS_RecipientInfo *ri, EVP_PKEY *pk); +EVP_CIPHER_CTX *CMS_RecipientInfo_kari_get0_ctx(CMS_RecipientInfo *ri); +int CMS_RecipientInfo_kari_decrypt(CMS_ContentInfo *cms, + CMS_RecipientInfo *ri, + CMS_RecipientEncryptedKey *rek); + +int CMS_SharedInfo_encode(unsigned char **pder, X509_ALGOR *kekalg, + ASN1_OCTET_STRING *ukm, int keylen); + +/* 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_CMS_strings(void); + +/* Error codes for the CMS functions. */ + +/* Function codes. */ +# define CMS_F_CHECK_CONTENT 99 +# define CMS_F_CMS_ADD0_CERT 164 +# define CMS_F_CMS_ADD0_RECIPIENT_KEY 100 +# define CMS_F_CMS_ADD0_RECIPIENT_PASSWORD 165 +# define CMS_F_CMS_ADD1_RECEIPTREQUEST 158 +# define CMS_F_CMS_ADD1_RECIPIENT_CERT 101 +# define CMS_F_CMS_ADD1_SIGNER 102 +# define CMS_F_CMS_ADD1_SIGNINGTIME 103 +# define CMS_F_CMS_COMPRESS 104 +# define CMS_F_CMS_COMPRESSEDDATA_CREATE 105 +# define CMS_F_CMS_COMPRESSEDDATA_INIT_BIO 106 +# define CMS_F_CMS_COPY_CONTENT 107 +# define CMS_F_CMS_COPY_MESSAGEDIGEST 108 +# define CMS_F_CMS_DATA 109 +# define CMS_F_CMS_DATAFINAL 110 +# define CMS_F_CMS_DATAINIT 111 +# define CMS_F_CMS_DECRYPT 112 +# define CMS_F_CMS_DECRYPT_SET1_KEY 113 +# define CMS_F_CMS_DECRYPT_SET1_PASSWORD 166 +# define CMS_F_CMS_DECRYPT_SET1_PKEY 114 +# define CMS_F_CMS_DIGESTALGORITHM_FIND_CTX 115 +# define CMS_F_CMS_DIGESTALGORITHM_INIT_BIO 116 +# define CMS_F_CMS_DIGESTEDDATA_DO_FINAL 117 +# define CMS_F_CMS_DIGEST_VERIFY 118 +# define CMS_F_CMS_ENCODE_RECEIPT 161 +# define CMS_F_CMS_ENCRYPT 119 +# define CMS_F_CMS_ENCRYPTEDCONTENT_INIT_BIO 120 +# define CMS_F_CMS_ENCRYPTEDDATA_DECRYPT 121 +# define CMS_F_CMS_ENCRYPTEDDATA_ENCRYPT 122 +# define CMS_F_CMS_ENCRYPTEDDATA_SET1_KEY 123 +# define CMS_F_CMS_ENVELOPEDDATA_CREATE 124 +# define CMS_F_CMS_ENVELOPEDDATA_INIT_BIO 125 +# define CMS_F_CMS_ENVELOPED_DATA_INIT 126 +# define CMS_F_CMS_ENV_ASN1_CTRL 171 +# define CMS_F_CMS_FINAL 127 +# define CMS_F_CMS_GET0_CERTIFICATE_CHOICES 128 +# define CMS_F_CMS_GET0_CONTENT 129 +# define CMS_F_CMS_GET0_ECONTENT_TYPE 130 +# define CMS_F_CMS_GET0_ENVELOPED 131 +# define CMS_F_CMS_GET0_REVOCATION_CHOICES 132 +# define CMS_F_CMS_GET0_SIGNED 133 +# define CMS_F_CMS_MSGSIGDIGEST_ADD1 162 +# define CMS_F_CMS_RECEIPTREQUEST_CREATE0 159 +# define CMS_F_CMS_RECEIPT_VERIFY 160 +# define CMS_F_CMS_RECIPIENTINFO_DECRYPT 134 +# define CMS_F_CMS_RECIPIENTINFO_ENCRYPT 169 +# define CMS_F_CMS_RECIPIENTINFO_KARI_ENCRYPT 178 +# define CMS_F_CMS_RECIPIENTINFO_KARI_GET0_ALG 175 +# define CMS_F_CMS_RECIPIENTINFO_KARI_GET0_ORIG_ID 173 +# define CMS_F_CMS_RECIPIENTINFO_KARI_GET0_REKS 172 +# define CMS_F_CMS_RECIPIENTINFO_KARI_ORIG_ID_CMP 174 +# define CMS_F_CMS_RECIPIENTINFO_KEKRI_DECRYPT 135 +# define CMS_F_CMS_RECIPIENTINFO_KEKRI_ENCRYPT 136 +# define CMS_F_CMS_RECIPIENTINFO_KEKRI_GET0_ID 137 +# define CMS_F_CMS_RECIPIENTINFO_KEKRI_ID_CMP 138 +# define CMS_F_CMS_RECIPIENTINFO_KTRI_CERT_CMP 139 +# define CMS_F_CMS_RECIPIENTINFO_KTRI_DECRYPT 140 +# define CMS_F_CMS_RECIPIENTINFO_KTRI_ENCRYPT 141 +# define CMS_F_CMS_RECIPIENTINFO_KTRI_GET0_ALGS 142 +# define CMS_F_CMS_RECIPIENTINFO_KTRI_GET0_SIGNER_ID 143 +# define CMS_F_CMS_RECIPIENTINFO_PWRI_CRYPT 167 +# define CMS_F_CMS_RECIPIENTINFO_SET0_KEY 144 +# define CMS_F_CMS_RECIPIENTINFO_SET0_PASSWORD 168 +# define CMS_F_CMS_RECIPIENTINFO_SET0_PKEY 145 +# define CMS_F_CMS_SD_ASN1_CTRL 170 +# define CMS_F_CMS_SET1_IAS 176 +# define CMS_F_CMS_SET1_KEYID 177 +# define CMS_F_CMS_SET1_SIGNERIDENTIFIER 146 +# define CMS_F_CMS_SET_DETACHED 147 +# define CMS_F_CMS_SIGN 148 +# define CMS_F_CMS_SIGNED_DATA_INIT 149 +# define CMS_F_CMS_SIGNERINFO_CONTENT_SIGN 150 +# define CMS_F_CMS_SIGNERINFO_SIGN 151 +# define CMS_F_CMS_SIGNERINFO_VERIFY 152 +# define CMS_F_CMS_SIGNERINFO_VERIFY_CERT 153 +# define CMS_F_CMS_SIGNERINFO_VERIFY_CONTENT 154 +# define CMS_F_CMS_SIGN_RECEIPT 163 +# define CMS_F_CMS_STREAM 155 +# define CMS_F_CMS_UNCOMPRESS 156 +# define CMS_F_CMS_VERIFY 157 + +/* Reason codes. */ +# define CMS_R_ADD_SIGNER_ERROR 99 +# define CMS_R_CERTIFICATE_ALREADY_PRESENT 175 +# define CMS_R_CERTIFICATE_HAS_NO_KEYID 160 +# define CMS_R_CERTIFICATE_VERIFY_ERROR 100 +# define CMS_R_CIPHER_INITIALISATION_ERROR 101 +# define CMS_R_CIPHER_PARAMETER_INITIALISATION_ERROR 102 +# define CMS_R_CMS_DATAFINAL_ERROR 103 +# define CMS_R_CMS_LIB 104 +# define CMS_R_CONTENTIDENTIFIER_MISMATCH 170 +# define CMS_R_CONTENT_NOT_FOUND 105 +# define CMS_R_CONTENT_TYPE_MISMATCH 171 +# define CMS_R_CONTENT_TYPE_NOT_COMPRESSED_DATA 106 +# define CMS_R_CONTENT_TYPE_NOT_ENVELOPED_DATA 107 +# define CMS_R_CONTENT_TYPE_NOT_SIGNED_DATA 108 +# define CMS_R_CONTENT_VERIFY_ERROR 109 +# define CMS_R_CTRL_ERROR 110 +# define CMS_R_CTRL_FAILURE 111 +# define CMS_R_DECRYPT_ERROR 112 +# define CMS_R_DIGEST_ERROR 161 +# define CMS_R_ERROR_GETTING_PUBLIC_KEY 113 +# define CMS_R_ERROR_READING_MESSAGEDIGEST_ATTRIBUTE 114 +# define CMS_R_ERROR_SETTING_KEY 115 +# define CMS_R_ERROR_SETTING_RECIPIENTINFO 116 +# define CMS_R_INVALID_ENCRYPTED_KEY_LENGTH 117 +# define CMS_R_INVALID_KEY_ENCRYPTION_PARAMETER 176 +# define CMS_R_INVALID_KEY_LENGTH 118 +# define CMS_R_MD_BIO_INIT_ERROR 119 +# define CMS_R_MESSAGEDIGEST_ATTRIBUTE_WRONG_LENGTH 120 +# define CMS_R_MESSAGEDIGEST_WRONG_LENGTH 121 +# define CMS_R_MSGSIGDIGEST_ERROR 172 +# define CMS_R_MSGSIGDIGEST_VERIFICATION_FAILURE 162 +# define CMS_R_MSGSIGDIGEST_WRONG_LENGTH 163 +# define CMS_R_NEED_ONE_SIGNER 164 +# define CMS_R_NOT_A_SIGNED_RECEIPT 165 +# define CMS_R_NOT_ENCRYPTED_DATA 122 +# define CMS_R_NOT_KEK 123 +# define CMS_R_NOT_KEY_AGREEMENT 181 +# define CMS_R_NOT_KEY_TRANSPORT 124 +# define CMS_R_NOT_PWRI 177 +# define CMS_R_NOT_SUPPORTED_FOR_THIS_KEY_TYPE 125 +# define CMS_R_NO_CIPHER 126 +# define CMS_R_NO_CONTENT 127 +# define CMS_R_NO_CONTENT_TYPE 173 +# define CMS_R_NO_DEFAULT_DIGEST 128 +# define CMS_R_NO_DIGEST_SET 129 +# define CMS_R_NO_KEY 130 +# define CMS_R_NO_KEY_OR_CERT 174 +# define CMS_R_NO_MATCHING_DIGEST 131 +# define CMS_R_NO_MATCHING_RECIPIENT 132 +# define CMS_R_NO_MATCHING_SIGNATURE 166 +# define CMS_R_NO_MSGSIGDIGEST 167 +# define CMS_R_NO_PASSWORD 178 +# define CMS_R_NO_PRIVATE_KEY 133 +# define CMS_R_NO_PUBLIC_KEY 134 +# define CMS_R_NO_RECEIPT_REQUEST 168 +# define CMS_R_NO_SIGNERS 135 +# define CMS_R_PRIVATE_KEY_DOES_NOT_MATCH_CERTIFICATE 136 +# define CMS_R_RECEIPT_DECODE_ERROR 169 +# define CMS_R_RECIPIENT_ERROR 137 +# define CMS_R_SIGNER_CERTIFICATE_NOT_FOUND 138 +# define CMS_R_SIGNFINAL_ERROR 139 +# define CMS_R_SMIME_TEXT_ERROR 140 +# define CMS_R_STORE_INIT_ERROR 141 +# define CMS_R_TYPE_NOT_COMPRESSED_DATA 142 +# define CMS_R_TYPE_NOT_DATA 143 +# define CMS_R_TYPE_NOT_DIGESTED_DATA 144 +# define CMS_R_TYPE_NOT_ENCRYPTED_DATA 145 +# define CMS_R_TYPE_NOT_ENVELOPED_DATA 146 +# define CMS_R_UNABLE_TO_FINALIZE_CONTEXT 147 +# define CMS_R_UNKNOWN_CIPHER 148 +# define CMS_R_UNKNOWN_DIGEST_ALGORIHM 149 +# define CMS_R_UNKNOWN_ID 150 +# define CMS_R_UNSUPPORTED_COMPRESSION_ALGORITHM 151 +# define CMS_R_UNSUPPORTED_CONTENT_TYPE 152 +# define CMS_R_UNSUPPORTED_KEK_ALGORITHM 153 +# define CMS_R_UNSUPPORTED_KEY_ENCRYPTION_ALGORITHM 179 +# define CMS_R_UNSUPPORTED_RECIPIENT_TYPE 154 +# define CMS_R_UNSUPPORTED_RECPIENTINFO_TYPE 155 +# define CMS_R_UNSUPPORTED_TYPE 156 +# define CMS_R_UNWRAP_ERROR 157 +# define CMS_R_UNWRAP_FAILURE 180 +# define CMS_R_VERIFICATION_FAILURE 158 +# define CMS_R_WRAP_ERROR 159 + +#ifdef __cplusplus +} +#endif +#endif diff --git a/dependencies/include/openssl/comp.h b/dependencies/include/openssl/comp.h new file mode 100644 index 0000000..df599ba --- /dev/null +++ b/dependencies/include/openssl/comp.h @@ -0,0 +1,83 @@ + +#ifndef HEADER_COMP_H +# define HEADER_COMP_H + +# include + +# ifdef OPENSSL_NO_COMP +# error COMP is disabled. +# endif + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct comp_ctx_st COMP_CTX; + +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); +}; + +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/dependencies/include/openssl/conf.h b/dependencies/include/openssl/conf.h new file mode 100644 index 0000000..fe49113 --- /dev/null +++ b/dependencies/include/openssl/conf.h @@ -0,0 +1,268 @@ +/* crypto/conf/conf.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_CONF_H +# define HEADER_CONF_H + +# include +# include +# include +# include +# include + +# include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct { + char *section; + char *name; + char *value; +} CONF_VALUE; + +DECLARE_STACK_OF(CONF_VALUE) +DECLARE_LHASH_OF(CONF_VALUE); + +struct conf_st; +struct conf_method_st; +typedef struct conf_method_st CONF_METHOD; + +struct conf_method_st { + const char *name; + CONF *(*create) (CONF_METHOD *meth); + int (*init) (CONF *conf); + int (*destroy) (CONF *conf); + int (*destroy_data) (CONF *conf); + int (*load_bio) (CONF *conf, BIO *bp, long *eline); + int (*dump) (const CONF *conf, BIO *bp); + int (*is_number) (const CONF *conf, char c); + int (*to_int) (const CONF *conf, char c); + int (*load) (CONF *conf, const char *name, long *eline); +}; + +/* Module definitions */ + +typedef struct conf_imodule_st CONF_IMODULE; +typedef struct conf_module_st CONF_MODULE; + +DECLARE_STACK_OF(CONF_MODULE) +DECLARE_STACK_OF(CONF_IMODULE) + +/* DSO module function typedefs */ +typedef int conf_init_func (CONF_IMODULE *md, const CONF *cnf); +typedef void conf_finish_func (CONF_IMODULE *md); + +# define CONF_MFLAGS_IGNORE_ERRORS 0x1 +# define CONF_MFLAGS_IGNORE_RETURN_CODES 0x2 +# define CONF_MFLAGS_SILENT 0x4 +# define CONF_MFLAGS_NO_DSO 0x8 +# define CONF_MFLAGS_IGNORE_MISSING_FILE 0x10 +# define CONF_MFLAGS_DEFAULT_SECTION 0x20 + +int CONF_set_default_method(CONF_METHOD *meth); +void CONF_set_nconf(CONF *conf, LHASH_OF(CONF_VALUE) *hash); +LHASH_OF(CONF_VALUE) *CONF_load(LHASH_OF(CONF_VALUE) *conf, const char *file, + long *eline); +# ifndef OPENSSL_NO_FP_API +LHASH_OF(CONF_VALUE) *CONF_load_fp(LHASH_OF(CONF_VALUE) *conf, FILE *fp, + long *eline); +# endif +LHASH_OF(CONF_VALUE) *CONF_load_bio(LHASH_OF(CONF_VALUE) *conf, BIO *bp, + long *eline); +STACK_OF(CONF_VALUE) *CONF_get_section(LHASH_OF(CONF_VALUE) *conf, + const char *section); +char *CONF_get_string(LHASH_OF(CONF_VALUE) *conf, const char *group, + const char *name); +long CONF_get_number(LHASH_OF(CONF_VALUE) *conf, const char *group, + const char *name); +void CONF_free(LHASH_OF(CONF_VALUE) *conf); +int CONF_dump_fp(LHASH_OF(CONF_VALUE) *conf, FILE *out); +int CONF_dump_bio(LHASH_OF(CONF_VALUE) *conf, BIO *out); + +void OPENSSL_config(const char *config_name); +void OPENSSL_no_config(void); + +/* + * New conf code. The semantics are different from the functions above. If + * that wasn't the case, the above functions would have been replaced + */ + +struct conf_st { + CONF_METHOD *meth; + void *meth_data; + LHASH_OF(CONF_VALUE) *data; +}; + +CONF *NCONF_new(CONF_METHOD *meth); +CONF_METHOD *NCONF_default(void); +CONF_METHOD *NCONF_WIN32(void); +# if 0 /* Just to give you an idea of what I have in + * mind */ +CONF_METHOD *NCONF_XML(void); +# endif +void NCONF_free(CONF *conf); +void NCONF_free_data(CONF *conf); + +int NCONF_load(CONF *conf, const char *file, long *eline); +# ifndef OPENSSL_NO_FP_API +int NCONF_load_fp(CONF *conf, FILE *fp, long *eline); +# endif +int NCONF_load_bio(CONF *conf, BIO *bp, long *eline); +STACK_OF(CONF_VALUE) *NCONF_get_section(const CONF *conf, + const char *section); +char *NCONF_get_string(const CONF *conf, const char *group, const char *name); +int NCONF_get_number_e(const CONF *conf, const char *group, const char *name, + long *result); +int NCONF_dump_fp(const CONF *conf, FILE *out); +int NCONF_dump_bio(const CONF *conf, BIO *out); + +# if 0 /* The following function has no error + * checking, and should therefore be avoided */ +long NCONF_get_number(CONF *conf, char *group, char *name); +# else +# define NCONF_get_number(c,g,n,r) NCONF_get_number_e(c,g,n,r) +# endif + +/* Module functions */ + +int CONF_modules_load(const CONF *cnf, const char *appname, + unsigned long flags); +int CONF_modules_load_file(const char *filename, const char *appname, + unsigned long flags); +void CONF_modules_unload(int all); +void CONF_modules_finish(void); +void CONF_modules_free(void); +int CONF_module_add(const char *name, conf_init_func *ifunc, + conf_finish_func *ffunc); + +const char *CONF_imodule_get_name(const CONF_IMODULE *md); +const char *CONF_imodule_get_value(const CONF_IMODULE *md); +void *CONF_imodule_get_usr_data(const CONF_IMODULE *md); +void CONF_imodule_set_usr_data(CONF_IMODULE *md, void *usr_data); +CONF_MODULE *CONF_imodule_get_module(const CONF_IMODULE *md); +unsigned long CONF_imodule_get_flags(const CONF_IMODULE *md); +void CONF_imodule_set_flags(CONF_IMODULE *md, unsigned long flags); +void *CONF_module_get_usr_data(CONF_MODULE *pmod); +void CONF_module_set_usr_data(CONF_MODULE *pmod, void *usr_data); + +char *CONF_get1_default_config_file(void); + +int CONF_parse_list(const char *list, int sep, int nospc, + int (*list_cb) (const char *elem, int len, void *usr), + void *arg); + +void OPENSSL_load_builtin_modules(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_CONF_strings(void); + +/* Error codes for the CONF functions. */ + +/* Function codes. */ +# define CONF_F_CONF_DUMP_FP 104 +# define CONF_F_CONF_LOAD 100 +# define CONF_F_CONF_LOAD_BIO 102 +# define CONF_F_CONF_LOAD_FP 103 +# define CONF_F_CONF_MODULES_LOAD 116 +# define CONF_F_CONF_PARSE_LIST 119 +# define CONF_F_DEF_LOAD 120 +# define CONF_F_DEF_LOAD_BIO 121 +# define CONF_F_MODULE_INIT 115 +# define CONF_F_MODULE_LOAD_DSO 117 +# define CONF_F_MODULE_RUN 118 +# define CONF_F_NCONF_DUMP_BIO 105 +# define CONF_F_NCONF_DUMP_FP 106 +# define CONF_F_NCONF_GET_NUMBER 107 +# define CONF_F_NCONF_GET_NUMBER_E 112 +# define CONF_F_NCONF_GET_SECTION 108 +# define CONF_F_NCONF_GET_STRING 109 +# define CONF_F_NCONF_LOAD 113 +# define CONF_F_NCONF_LOAD_BIO 110 +# define CONF_F_NCONF_LOAD_FP 114 +# define CONF_F_NCONF_NEW 111 +# define CONF_F_STR_COPY 101 + +/* Reason codes. */ +# define CONF_R_ERROR_LOADING_DSO 110 +# define CONF_R_LIST_CANNOT_BE_NULL 115 +# define CONF_R_MISSING_CLOSE_SQUARE_BRACKET 100 +# define CONF_R_MISSING_EQUAL_SIGN 101 +# define CONF_R_MISSING_FINISH_FUNCTION 111 +# define CONF_R_MISSING_INIT_FUNCTION 112 +# define CONF_R_MODULE_INITIALIZATION_ERROR 109 +# define CONF_R_NO_CLOSE_BRACE 102 +# define CONF_R_NO_CONF 105 +# define CONF_R_NO_CONF_OR_ENVIRONMENT_VARIABLE 106 +# define CONF_R_NO_SECTION 107 +# define CONF_R_NO_SUCH_FILE 114 +# define CONF_R_NO_VALUE 108 +# define CONF_R_UNABLE_TO_CREATE_NEW_SECTION 103 +# define CONF_R_UNKNOWN_MODULE_NAME 113 +# define CONF_R_VARIABLE_EXPANSION_TOO_LONG 116 +# define CONF_R_VARIABLE_HAS_NO_VALUE 104 + +#ifdef __cplusplus +} +#endif +#endif diff --git a/dependencies/include/openssl/conf_api.h b/dependencies/include/openssl/conf_api.h new file mode 100644 index 0000000..e478f7d --- /dev/null +++ b/dependencies/include/openssl/conf_api.h @@ -0,0 +1,89 @@ +/* conf_api.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_CONF_API_H +# define HEADER_CONF_API_H + +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Up until OpenSSL 0.9.5a, this was new_section */ +CONF_VALUE *_CONF_new_section(CONF *conf, const char *section); +/* Up until OpenSSL 0.9.5a, this was get_section */ +CONF_VALUE *_CONF_get_section(const CONF *conf, const char *section); +/* Up until OpenSSL 0.9.5a, this was CONF_get_section */ +STACK_OF(CONF_VALUE) *_CONF_get_section_values(const CONF *conf, + const char *section); + +int _CONF_add_string(CONF *conf, CONF_VALUE *section, CONF_VALUE *value); +char *_CONF_get_string(const CONF *conf, const char *section, + const char *name); +long _CONF_get_number(const CONF *conf, const char *section, + const char *name); + +int _CONF_new_data(CONF *conf); +void _CONF_free_data(CONF *conf); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/dependencies/include/openssl/crypto.h b/dependencies/include/openssl/crypto.h new file mode 100644 index 0000000..6c644ce --- /dev/null +++ b/dependencies/include/openssl/crypto.h @@ -0,0 +1,661 @@ +/* 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 volatile void *a, const volatile 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/dependencies/include/openssl/des.h b/dependencies/include/openssl/des.h new file mode 100644 index 0000000..1b40144 --- /dev/null +++ b/dependencies/include/openssl/des.h @@ -0,0 +1,257 @@ +/* crypto/des/des.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_NEW_DES_H +# define HEADER_NEW_DES_H + +# include /* OPENSSL_EXTERN, OPENSSL_NO_DES, DES_LONG + * (via openssl/opensslconf.h */ + +# ifdef OPENSSL_NO_DES +# error DES is disabled. +# endif + +# ifdef OPENSSL_BUILD_SHLIBCRYPTO +# undef OPENSSL_EXTERN +# define OPENSSL_EXTERN OPENSSL_EXPORT +# endif + +#ifdef __cplusplus +extern "C" { +#endif + +typedef unsigned char DES_cblock[8]; +typedef /* const */ unsigned char const_DES_cblock[8]; +/* + * With "const", gcc 2.8.1 on Solaris thinks that DES_cblock * and + * const_DES_cblock * are incompatible pointer types. + */ + +typedef struct DES_ks { + union { + DES_cblock cblock; + /* + * make sure things are correct size on machines with 8 byte longs + */ + DES_LONG deslong[2]; + } ks[16]; +} DES_key_schedule; + +# ifndef OPENSSL_DISABLE_OLD_DES_SUPPORT +# ifndef OPENSSL_ENABLE_OLD_DES_SUPPORT +# define OPENSSL_ENABLE_OLD_DES_SUPPORT +# endif +# endif + +# ifdef OPENSSL_ENABLE_OLD_DES_SUPPORT +# include +# endif + +# define DES_KEY_SZ (sizeof(DES_cblock)) +# define DES_SCHEDULE_SZ (sizeof(DES_key_schedule)) + +# define DES_ENCRYPT 1 +# define DES_DECRYPT 0 + +# define DES_CBC_MODE 0 +# define DES_PCBC_MODE 1 + +# define DES_ecb2_encrypt(i,o,k1,k2,e) \ + DES_ecb3_encrypt((i),(o),(k1),(k2),(k1),(e)) + +# define DES_ede2_cbc_encrypt(i,o,l,k1,k2,iv,e) \ + DES_ede3_cbc_encrypt((i),(o),(l),(k1),(k2),(k1),(iv),(e)) + +# define DES_ede2_cfb64_encrypt(i,o,l,k1,k2,iv,n,e) \ + DES_ede3_cfb64_encrypt((i),(o),(l),(k1),(k2),(k1),(iv),(n),(e)) + +# define DES_ede2_ofb64_encrypt(i,o,l,k1,k2,iv,n) \ + DES_ede3_ofb64_encrypt((i),(o),(l),(k1),(k2),(k1),(iv),(n)) + +OPENSSL_DECLARE_GLOBAL(int, DES_check_key); /* defaults to false */ +# define DES_check_key OPENSSL_GLOBAL_REF(DES_check_key) +OPENSSL_DECLARE_GLOBAL(int, DES_rw_mode); /* defaults to DES_PCBC_MODE */ +# define DES_rw_mode OPENSSL_GLOBAL_REF(DES_rw_mode) + +const char *DES_options(void); +void DES_ecb3_encrypt(const_DES_cblock *input, DES_cblock *output, + DES_key_schedule *ks1, DES_key_schedule *ks2, + DES_key_schedule *ks3, int enc); +DES_LONG DES_cbc_cksum(const unsigned char *input, DES_cblock *output, + long length, DES_key_schedule *schedule, + const_DES_cblock *ivec); +/* DES_cbc_encrypt does not update the IV! Use DES_ncbc_encrypt instead. */ +void DES_cbc_encrypt(const unsigned char *input, unsigned char *output, + long length, DES_key_schedule *schedule, + DES_cblock *ivec, int enc); +void DES_ncbc_encrypt(const unsigned char *input, unsigned char *output, + long length, DES_key_schedule *schedule, + DES_cblock *ivec, int enc); +void DES_xcbc_encrypt(const unsigned char *input, unsigned char *output, + long length, DES_key_schedule *schedule, + DES_cblock *ivec, const_DES_cblock *inw, + const_DES_cblock *outw, int enc); +void DES_cfb_encrypt(const unsigned char *in, unsigned char *out, int numbits, + long length, DES_key_schedule *schedule, + DES_cblock *ivec, int enc); +void DES_ecb_encrypt(const_DES_cblock *input, DES_cblock *output, + DES_key_schedule *ks, int enc); + +/* + * This is the DES encryption function that gets called by just about every + * other DES routine in the library. You should not use this function except + * to implement 'modes' of DES. I say this because the functions that call + * this routine do the conversion from 'char *' to long, and this needs to be + * done to make sure 'non-aligned' memory access do not occur. The + * characters are loaded 'little endian'. Data is a pointer to 2 unsigned + * long's and ks is the DES_key_schedule to use. enc, is non zero specifies + * encryption, zero if decryption. + */ +void DES_encrypt1(DES_LONG *data, DES_key_schedule *ks, int enc); + +/* + * This functions is the same as DES_encrypt1() except that the DES initial + * permutation (IP) and final permutation (FP) have been left out. As for + * DES_encrypt1(), you should not use this function. It is used by the + * routines in the library that implement triple DES. IP() DES_encrypt2() + * DES_encrypt2() DES_encrypt2() FP() is the same as DES_encrypt1() + * DES_encrypt1() DES_encrypt1() except faster :-). + */ +void DES_encrypt2(DES_LONG *data, DES_key_schedule *ks, int enc); + +void DES_encrypt3(DES_LONG *data, DES_key_schedule *ks1, + DES_key_schedule *ks2, DES_key_schedule *ks3); +void DES_decrypt3(DES_LONG *data, DES_key_schedule *ks1, + DES_key_schedule *ks2, DES_key_schedule *ks3); +void DES_ede3_cbc_encrypt(const unsigned char *input, unsigned char *output, + long length, + DES_key_schedule *ks1, DES_key_schedule *ks2, + DES_key_schedule *ks3, DES_cblock *ivec, int enc); +void DES_ede3_cbcm_encrypt(const unsigned char *in, unsigned char *out, + long length, + DES_key_schedule *ks1, DES_key_schedule *ks2, + DES_key_schedule *ks3, + DES_cblock *ivec1, DES_cblock *ivec2, int enc); +void DES_ede3_cfb64_encrypt(const unsigned char *in, unsigned char *out, + long length, DES_key_schedule *ks1, + DES_key_schedule *ks2, DES_key_schedule *ks3, + DES_cblock *ivec, int *num, int enc); +void DES_ede3_cfb_encrypt(const unsigned char *in, unsigned char *out, + int numbits, long length, DES_key_schedule *ks1, + DES_key_schedule *ks2, DES_key_schedule *ks3, + DES_cblock *ivec, int enc); +void DES_ede3_ofb64_encrypt(const unsigned char *in, unsigned char *out, + long length, DES_key_schedule *ks1, + DES_key_schedule *ks2, DES_key_schedule *ks3, + DES_cblock *ivec, int *num); +# if 0 +void DES_xwhite_in2out(const_DES_cblock *DES_key, const_DES_cblock *in_white, + DES_cblock *out_white); +# endif + +int DES_enc_read(int fd, void *buf, int len, DES_key_schedule *sched, + DES_cblock *iv); +int DES_enc_write(int fd, const void *buf, int len, DES_key_schedule *sched, + DES_cblock *iv); +char *DES_fcrypt(const char *buf, const char *salt, char *ret); +char *DES_crypt(const char *buf, const char *salt); +void DES_ofb_encrypt(const unsigned char *in, unsigned char *out, int numbits, + long length, DES_key_schedule *schedule, + DES_cblock *ivec); +void DES_pcbc_encrypt(const unsigned char *input, unsigned char *output, + long length, DES_key_schedule *schedule, + DES_cblock *ivec, int enc); +DES_LONG DES_quad_cksum(const unsigned char *input, DES_cblock output[], + long length, int out_count, DES_cblock *seed); +int DES_random_key(DES_cblock *ret); +void DES_set_odd_parity(DES_cblock *key); +int DES_check_key_parity(const_DES_cblock *key); +int DES_is_weak_key(const_DES_cblock *key); +/* + * DES_set_key (= set_key = DES_key_sched = key_sched) calls + * DES_set_key_checked if global variable DES_check_key is set, + * DES_set_key_unchecked otherwise. + */ +int DES_set_key(const_DES_cblock *key, DES_key_schedule *schedule); +int DES_key_sched(const_DES_cblock *key, DES_key_schedule *schedule); +int DES_set_key_checked(const_DES_cblock *key, DES_key_schedule *schedule); +void DES_set_key_unchecked(const_DES_cblock *key, DES_key_schedule *schedule); +# ifdef OPENSSL_FIPS +void private_DES_set_key_unchecked(const_DES_cblock *key, + DES_key_schedule *schedule); +# endif +void DES_string_to_key(const char *str, DES_cblock *key); +void DES_string_to_2keys(const char *str, DES_cblock *key1, DES_cblock *key2); +void DES_cfb64_encrypt(const unsigned char *in, unsigned char *out, + long length, DES_key_schedule *schedule, + DES_cblock *ivec, int *num, int enc); +void DES_ofb64_encrypt(const unsigned char *in, unsigned char *out, + long length, DES_key_schedule *schedule, + DES_cblock *ivec, int *num); + +int DES_read_password(DES_cblock *key, const char *prompt, int verify); +int DES_read_2passwords(DES_cblock *key1, DES_cblock *key2, + const char *prompt, int verify); + +# define DES_fixup_key_parity DES_set_odd_parity + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/dependencies/include/openssl/des_old.h b/dependencies/include/openssl/des_old.h new file mode 100644 index 0000000..ee7607a --- /dev/null +++ b/dependencies/include/openssl/des_old.h @@ -0,0 +1,497 @@ +/* crypto/des/des_old.h */ + +/*- + * WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING + * + * The function names in here are deprecated and are only present to + * provide an interface compatible with openssl 0.9.6 and older as + * well as libdes. OpenSSL now provides functions where "des_" has + * been replaced with "DES_" in the names, to make it possible to + * make incompatible changes that are needed for C type security and + * other stuff. + * + * This include files has two compatibility modes: + * + * - If OPENSSL_DES_LIBDES_COMPATIBILITY is defined, you get an API + * that is compatible with libdes and SSLeay. + * - If OPENSSL_DES_LIBDES_COMPATIBILITY isn't defined, you get an + * API that is compatible with OpenSSL 0.9.5x to 0.9.6x. + * + * Note that these modes break earlier snapshots of OpenSSL, where + * libdes compatibility was the only available mode or (later on) the + * prefered compatibility mode. However, after much consideration + * (and more or less violent discussions with external parties), it + * was concluded that OpenSSL should be compatible with earlier versions + * of itself before anything else. Also, in all honesty, libdes is + * an old beast that shouldn't really be used any more. + * + * Please consider starting to use the DES_ functions rather than the + * des_ ones. The des_ functions will disappear completely before + * OpenSSL 1.0! + * + * WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING + */ + +/* + * Written by Richard Levitte (richard@levitte.org) for the OpenSSL project + * 2001. + */ +/* ==================================================================== + * 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). + * + */ + +#ifndef HEADER_DES_H +# define HEADER_DES_H + +# include /* OPENSSL_EXTERN, OPENSSL_NO_DES, DES_LONG */ + +# ifdef OPENSSL_NO_DES +# error DES is disabled. +# endif + +# ifndef HEADER_NEW_DES_H +# error You must include des.h, not des_old.h directly. +# endif + +# ifdef _KERBEROS_DES_H +# error replaces . +# endif + +# include + +# ifdef OPENSSL_BUILD_SHLIBCRYPTO +# undef OPENSSL_EXTERN +# define OPENSSL_EXTERN OPENSSL_EXPORT +# endif + +#ifdef __cplusplus +extern "C" { +#endif + +# ifdef _ +# undef _ +# endif + +typedef unsigned char _ossl_old_des_cblock[8]; +typedef struct _ossl_old_des_ks_struct { + union { + _ossl_old_des_cblock _; + /* + * make sure things are correct size on machines with 8 byte longs + */ + DES_LONG pad[2]; + } ks; +} _ossl_old_des_key_schedule[16]; + +# ifndef OPENSSL_DES_LIBDES_COMPATIBILITY +# define des_cblock DES_cblock +# define const_des_cblock const_DES_cblock +# define des_key_schedule DES_key_schedule +# define des_ecb3_encrypt(i,o,k1,k2,k3,e)\ + DES_ecb3_encrypt((i),(o),&(k1),&(k2),&(k3),(e)) +# define des_ede3_cbc_encrypt(i,o,l,k1,k2,k3,iv,e)\ + DES_ede3_cbc_encrypt((i),(o),(l),&(k1),&(k2),&(k3),(iv),(e)) +# define des_ede3_cbcm_encrypt(i,o,l,k1,k2,k3,iv1,iv2,e)\ + DES_ede3_cbcm_encrypt((i),(o),(l),&(k1),&(k2),&(k3),(iv1),(iv2),(e)) +# define des_ede3_cfb64_encrypt(i,o,l,k1,k2,k3,iv,n,e)\ + DES_ede3_cfb64_encrypt((i),(o),(l),&(k1),&(k2),&(k3),(iv),(n),(e)) +# define des_ede3_ofb64_encrypt(i,o,l,k1,k2,k3,iv,n)\ + DES_ede3_ofb64_encrypt((i),(o),(l),&(k1),&(k2),&(k3),(iv),(n)) +# define des_options()\ + DES_options() +# define des_cbc_cksum(i,o,l,k,iv)\ + DES_cbc_cksum((i),(o),(l),&(k),(iv)) +# define des_cbc_encrypt(i,o,l,k,iv,e)\ + DES_cbc_encrypt((i),(o),(l),&(k),(iv),(e)) +# define des_ncbc_encrypt(i,o,l,k,iv,e)\ + DES_ncbc_encrypt((i),(o),(l),&(k),(iv),(e)) +# define des_xcbc_encrypt(i,o,l,k,iv,inw,outw,e)\ + DES_xcbc_encrypt((i),(o),(l),&(k),(iv),(inw),(outw),(e)) +# define des_cfb_encrypt(i,o,n,l,k,iv,e)\ + DES_cfb_encrypt((i),(o),(n),(l),&(k),(iv),(e)) +# define des_ecb_encrypt(i,o,k,e)\ + DES_ecb_encrypt((i),(o),&(k),(e)) +# define des_encrypt1(d,k,e)\ + DES_encrypt1((d),&(k),(e)) +# define des_encrypt2(d,k,e)\ + DES_encrypt2((d),&(k),(e)) +# define des_encrypt3(d,k1,k2,k3)\ + DES_encrypt3((d),&(k1),&(k2),&(k3)) +# define des_decrypt3(d,k1,k2,k3)\ + DES_decrypt3((d),&(k1),&(k2),&(k3)) +# define des_xwhite_in2out(k,i,o)\ + DES_xwhite_in2out((k),(i),(o)) +# define des_enc_read(f,b,l,k,iv)\ + DES_enc_read((f),(b),(l),&(k),(iv)) +# define des_enc_write(f,b,l,k,iv)\ + DES_enc_write((f),(b),(l),&(k),(iv)) +# define des_fcrypt(b,s,r)\ + DES_fcrypt((b),(s),(r)) +# if 0 +# define des_crypt(b,s)\ + DES_crypt((b),(s)) +# if !defined(PERL5) && !defined(__FreeBSD__) && !defined(NeXT) && !defined(__OpenBSD__) +# define crypt(b,s)\ + DES_crypt((b),(s)) +# endif +# endif +# define des_ofb_encrypt(i,o,n,l,k,iv)\ + DES_ofb_encrypt((i),(o),(n),(l),&(k),(iv)) +# define des_pcbc_encrypt(i,o,l,k,iv,e)\ + DES_pcbc_encrypt((i),(o),(l),&(k),(iv),(e)) +# define des_quad_cksum(i,o,l,c,s)\ + DES_quad_cksum((i),(o),(l),(c),(s)) +# define des_random_seed(k)\ + _ossl_096_des_random_seed((k)) +# define des_random_key(r)\ + DES_random_key((r)) +# define des_read_password(k,p,v) \ + DES_read_password((k),(p),(v)) +# define des_read_2passwords(k1,k2,p,v) \ + DES_read_2passwords((k1),(k2),(p),(v)) +# define des_set_odd_parity(k)\ + DES_set_odd_parity((k)) +# define des_check_key_parity(k)\ + DES_check_key_parity((k)) +# define des_is_weak_key(k)\ + DES_is_weak_key((k)) +# define des_set_key(k,ks)\ + DES_set_key((k),&(ks)) +# define des_key_sched(k,ks)\ + DES_key_sched((k),&(ks)) +# define des_set_key_checked(k,ks)\ + DES_set_key_checked((k),&(ks)) +# define des_set_key_unchecked(k,ks)\ + DES_set_key_unchecked((k),&(ks)) +# define des_string_to_key(s,k)\ + DES_string_to_key((s),(k)) +# define des_string_to_2keys(s,k1,k2)\ + DES_string_to_2keys((s),(k1),(k2)) +# define des_cfb64_encrypt(i,o,l,ks,iv,n,e)\ + DES_cfb64_encrypt((i),(o),(l),&(ks),(iv),(n),(e)) +# define des_ofb64_encrypt(i,o,l,ks,iv,n)\ + DES_ofb64_encrypt((i),(o),(l),&(ks),(iv),(n)) + +# define des_ecb2_encrypt(i,o,k1,k2,e) \ + des_ecb3_encrypt((i),(o),(k1),(k2),(k1),(e)) + +# define des_ede2_cbc_encrypt(i,o,l,k1,k2,iv,e) \ + des_ede3_cbc_encrypt((i),(o),(l),(k1),(k2),(k1),(iv),(e)) + +# define des_ede2_cfb64_encrypt(i,o,l,k1,k2,iv,n,e) \ + des_ede3_cfb64_encrypt((i),(o),(l),(k1),(k2),(k1),(iv),(n),(e)) + +# define des_ede2_ofb64_encrypt(i,o,l,k1,k2,iv,n) \ + des_ede3_ofb64_encrypt((i),(o),(l),(k1),(k2),(k1),(iv),(n)) + +# define des_check_key DES_check_key +# define des_rw_mode DES_rw_mode +# else /* libdes compatibility */ +/* + * Map all symbol names to _ossl_old_des_* form, so we avoid all clashes with + * libdes + */ +# define des_cblock _ossl_old_des_cblock +# define des_key_schedule _ossl_old_des_key_schedule +# define des_ecb3_encrypt(i,o,k1,k2,k3,e)\ + _ossl_old_des_ecb3_encrypt((i),(o),(k1),(k2),(k3),(e)) +# define des_ede3_cbc_encrypt(i,o,l,k1,k2,k3,iv,e)\ + _ossl_old_des_ede3_cbc_encrypt((i),(o),(l),(k1),(k2),(k3),(iv),(e)) +# define des_ede3_cfb64_encrypt(i,o,l,k1,k2,k3,iv,n,e)\ + _ossl_old_des_ede3_cfb64_encrypt((i),(o),(l),(k1),(k2),(k3),(iv),(n),(e)) +# define des_ede3_ofb64_encrypt(i,o,l,k1,k2,k3,iv,n)\ + _ossl_old_des_ede3_ofb64_encrypt((i),(o),(l),(k1),(k2),(k3),(iv),(n)) +# define des_options()\ + _ossl_old_des_options() +# define des_cbc_cksum(i,o,l,k,iv)\ + _ossl_old_des_cbc_cksum((i),(o),(l),(k),(iv)) +# define des_cbc_encrypt(i,o,l,k,iv,e)\ + _ossl_old_des_cbc_encrypt((i),(o),(l),(k),(iv),(e)) +# define des_ncbc_encrypt(i,o,l,k,iv,e)\ + _ossl_old_des_ncbc_encrypt((i),(o),(l),(k),(iv),(e)) +# define des_xcbc_encrypt(i,o,l,k,iv,inw,outw,e)\ + _ossl_old_des_xcbc_encrypt((i),(o),(l),(k),(iv),(inw),(outw),(e)) +# define des_cfb_encrypt(i,o,n,l,k,iv,e)\ + _ossl_old_des_cfb_encrypt((i),(o),(n),(l),(k),(iv),(e)) +# define des_ecb_encrypt(i,o,k,e)\ + _ossl_old_des_ecb_encrypt((i),(o),(k),(e)) +# define des_encrypt(d,k,e)\ + _ossl_old_des_encrypt((d),(k),(e)) +# define des_encrypt2(d,k,e)\ + _ossl_old_des_encrypt2((d),(k),(e)) +# define des_encrypt3(d,k1,k2,k3)\ + _ossl_old_des_encrypt3((d),(k1),(k2),(k3)) +# define des_decrypt3(d,k1,k2,k3)\ + _ossl_old_des_decrypt3((d),(k1),(k2),(k3)) +# define des_xwhite_in2out(k,i,o)\ + _ossl_old_des_xwhite_in2out((k),(i),(o)) +# define des_enc_read(f,b,l,k,iv)\ + _ossl_old_des_enc_read((f),(b),(l),(k),(iv)) +# define des_enc_write(f,b,l,k,iv)\ + _ossl_old_des_enc_write((f),(b),(l),(k),(iv)) +# define des_fcrypt(b,s,r)\ + _ossl_old_des_fcrypt((b),(s),(r)) +# define des_crypt(b,s)\ + _ossl_old_des_crypt((b),(s)) +# if 0 +# define crypt(b,s)\ + _ossl_old_crypt((b),(s)) +# endif +# define des_ofb_encrypt(i,o,n,l,k,iv)\ + _ossl_old_des_ofb_encrypt((i),(o),(n),(l),(k),(iv)) +# define des_pcbc_encrypt(i,o,l,k,iv,e)\ + _ossl_old_des_pcbc_encrypt((i),(o),(l),(k),(iv),(e)) +# define des_quad_cksum(i,o,l,c,s)\ + _ossl_old_des_quad_cksum((i),(o),(l),(c),(s)) +# define des_random_seed(k)\ + _ossl_old_des_random_seed((k)) +# define des_random_key(r)\ + _ossl_old_des_random_key((r)) +# define des_read_password(k,p,v) \ + _ossl_old_des_read_password((k),(p),(v)) +# define des_read_2passwords(k1,k2,p,v) \ + _ossl_old_des_read_2passwords((k1),(k2),(p),(v)) +# define des_set_odd_parity(k)\ + _ossl_old_des_set_odd_parity((k)) +# define des_is_weak_key(k)\ + _ossl_old_des_is_weak_key((k)) +# define des_set_key(k,ks)\ + _ossl_old_des_set_key((k),(ks)) +# define des_key_sched(k,ks)\ + _ossl_old_des_key_sched((k),(ks)) +# define des_string_to_key(s,k)\ + _ossl_old_des_string_to_key((s),(k)) +# define des_string_to_2keys(s,k1,k2)\ + _ossl_old_des_string_to_2keys((s),(k1),(k2)) +# define des_cfb64_encrypt(i,o,l,ks,iv,n,e)\ + _ossl_old_des_cfb64_encrypt((i),(o),(l),(ks),(iv),(n),(e)) +# define des_ofb64_encrypt(i,o,l,ks,iv,n)\ + _ossl_old_des_ofb64_encrypt((i),(o),(l),(ks),(iv),(n)) + +# define des_ecb2_encrypt(i,o,k1,k2,e) \ + des_ecb3_encrypt((i),(o),(k1),(k2),(k1),(e)) + +# define des_ede2_cbc_encrypt(i,o,l,k1,k2,iv,e) \ + des_ede3_cbc_encrypt((i),(o),(l),(k1),(k2),(k1),(iv),(e)) + +# define des_ede2_cfb64_encrypt(i,o,l,k1,k2,iv,n,e) \ + des_ede3_cfb64_encrypt((i),(o),(l),(k1),(k2),(k1),(iv),(n),(e)) + +# define des_ede2_ofb64_encrypt(i,o,l,k1,k2,iv,n) \ + des_ede3_ofb64_encrypt((i),(o),(l),(k1),(k2),(k1),(iv),(n)) + +# define des_check_key DES_check_key +# define des_rw_mode DES_rw_mode +# endif + +const char *_ossl_old_des_options(void); +void _ossl_old_des_ecb3_encrypt(_ossl_old_des_cblock *input, + _ossl_old_des_cblock *output, + _ossl_old_des_key_schedule ks1, + _ossl_old_des_key_schedule ks2, + _ossl_old_des_key_schedule ks3, int enc); +DES_LONG _ossl_old_des_cbc_cksum(_ossl_old_des_cblock *input, + _ossl_old_des_cblock *output, long length, + _ossl_old_des_key_schedule schedule, + _ossl_old_des_cblock *ivec); +void _ossl_old_des_cbc_encrypt(_ossl_old_des_cblock *input, + _ossl_old_des_cblock *output, long length, + _ossl_old_des_key_schedule schedule, + _ossl_old_des_cblock *ivec, int enc); +void _ossl_old_des_ncbc_encrypt(_ossl_old_des_cblock *input, + _ossl_old_des_cblock *output, long length, + _ossl_old_des_key_schedule schedule, + _ossl_old_des_cblock *ivec, int enc); +void _ossl_old_des_xcbc_encrypt(_ossl_old_des_cblock *input, + _ossl_old_des_cblock *output, long length, + _ossl_old_des_key_schedule schedule, + _ossl_old_des_cblock *ivec, + _ossl_old_des_cblock *inw, + _ossl_old_des_cblock *outw, int enc); +void _ossl_old_des_cfb_encrypt(unsigned char *in, unsigned char *out, + int numbits, long length, + _ossl_old_des_key_schedule schedule, + _ossl_old_des_cblock *ivec, int enc); +void _ossl_old_des_ecb_encrypt(_ossl_old_des_cblock *input, + _ossl_old_des_cblock *output, + _ossl_old_des_key_schedule ks, int enc); +void _ossl_old_des_encrypt(DES_LONG *data, _ossl_old_des_key_schedule ks, + int enc); +void _ossl_old_des_encrypt2(DES_LONG *data, _ossl_old_des_key_schedule ks, + int enc); +void _ossl_old_des_encrypt3(DES_LONG *data, _ossl_old_des_key_schedule ks1, + _ossl_old_des_key_schedule ks2, + _ossl_old_des_key_schedule ks3); +void _ossl_old_des_decrypt3(DES_LONG *data, _ossl_old_des_key_schedule ks1, + _ossl_old_des_key_schedule ks2, + _ossl_old_des_key_schedule ks3); +void _ossl_old_des_ede3_cbc_encrypt(_ossl_old_des_cblock *input, + _ossl_old_des_cblock *output, long length, + _ossl_old_des_key_schedule ks1, + _ossl_old_des_key_schedule ks2, + _ossl_old_des_key_schedule ks3, + _ossl_old_des_cblock *ivec, int enc); +void _ossl_old_des_ede3_cfb64_encrypt(unsigned char *in, unsigned char *out, + long length, + _ossl_old_des_key_schedule ks1, + _ossl_old_des_key_schedule ks2, + _ossl_old_des_key_schedule ks3, + _ossl_old_des_cblock *ivec, int *num, + int enc); +void _ossl_old_des_ede3_ofb64_encrypt(unsigned char *in, unsigned char *out, + long length, + _ossl_old_des_key_schedule ks1, + _ossl_old_des_key_schedule ks2, + _ossl_old_des_key_schedule ks3, + _ossl_old_des_cblock *ivec, int *num); +# if 0 +void _ossl_old_des_xwhite_in2out(_ossl_old_des_cblock (*des_key), + _ossl_old_des_cblock (*in_white), + _ossl_old_des_cblock (*out_white)); +# endif + +int _ossl_old_des_enc_read(int fd, char *buf, int len, + _ossl_old_des_key_schedule sched, + _ossl_old_des_cblock *iv); +int _ossl_old_des_enc_write(int fd, char *buf, int len, + _ossl_old_des_key_schedule sched, + _ossl_old_des_cblock *iv); +char *_ossl_old_des_fcrypt(const char *buf, const char *salt, char *ret); +char *_ossl_old_des_crypt(const char *buf, const char *salt); +# if !defined(PERL5) && !defined(NeXT) +char *_ossl_old_crypt(const char *buf, const char *salt); +# endif +void _ossl_old_des_ofb_encrypt(unsigned char *in, unsigned char *out, + int numbits, long length, + _ossl_old_des_key_schedule schedule, + _ossl_old_des_cblock *ivec); +void _ossl_old_des_pcbc_encrypt(_ossl_old_des_cblock *input, + _ossl_old_des_cblock *output, long length, + _ossl_old_des_key_schedule schedule, + _ossl_old_des_cblock *ivec, int enc); +DES_LONG _ossl_old_des_quad_cksum(_ossl_old_des_cblock *input, + _ossl_old_des_cblock *output, long length, + int out_count, _ossl_old_des_cblock *seed); +void _ossl_old_des_random_seed(_ossl_old_des_cblock key); +void _ossl_old_des_random_key(_ossl_old_des_cblock ret); +int _ossl_old_des_read_password(_ossl_old_des_cblock *key, const char *prompt, + int verify); +int _ossl_old_des_read_2passwords(_ossl_old_des_cblock *key1, + _ossl_old_des_cblock *key2, + const char *prompt, int verify); +void _ossl_old_des_set_odd_parity(_ossl_old_des_cblock *key); +int _ossl_old_des_is_weak_key(_ossl_old_des_cblock *key); +int _ossl_old_des_set_key(_ossl_old_des_cblock *key, + _ossl_old_des_key_schedule schedule); +int _ossl_old_des_key_sched(_ossl_old_des_cblock *key, + _ossl_old_des_key_schedule schedule); +void _ossl_old_des_string_to_key(char *str, _ossl_old_des_cblock *key); +void _ossl_old_des_string_to_2keys(char *str, _ossl_old_des_cblock *key1, + _ossl_old_des_cblock *key2); +void _ossl_old_des_cfb64_encrypt(unsigned char *in, unsigned char *out, + long length, + _ossl_old_des_key_schedule schedule, + _ossl_old_des_cblock *ivec, int *num, + int enc); +void _ossl_old_des_ofb64_encrypt(unsigned char *in, unsigned char *out, + long length, + _ossl_old_des_key_schedule schedule, + _ossl_old_des_cblock *ivec, int *num); + +void _ossl_096_des_random_seed(des_cblock *key); + +/* + * The following definitions provide compatibility with the MIT Kerberos + * library. The _ossl_old_des_key_schedule structure is not binary + * compatible. + */ + +# define _KERBEROS_DES_H + +# define KRBDES_ENCRYPT DES_ENCRYPT +# define KRBDES_DECRYPT DES_DECRYPT + +# ifdef KERBEROS +# define ENCRYPT DES_ENCRYPT +# define DECRYPT DES_DECRYPT +# endif + +# ifndef NCOMPAT +# define C_Block des_cblock +# define Key_schedule des_key_schedule +# define KEY_SZ DES_KEY_SZ +# define string_to_key des_string_to_key +# define read_pw_string des_read_pw_string +# define random_key des_random_key +# define pcbc_encrypt des_pcbc_encrypt +# define set_key des_set_key +# define key_sched des_key_sched +# define ecb_encrypt des_ecb_encrypt +# define cbc_encrypt des_cbc_encrypt +# define ncbc_encrypt des_ncbc_encrypt +# define xcbc_encrypt des_xcbc_encrypt +# define cbc_cksum des_cbc_cksum +# define quad_cksum des_quad_cksum +# define check_parity des_check_key_parity +# endif + +# define des_fixup_key_parity DES_fixup_key_parity + +#ifdef __cplusplus +} +#endif + +/* for DES_read_pw_string et al */ +# include + +#endif diff --git a/dependencies/include/openssl/dh.h b/dependencies/include/openssl/dh.h new file mode 100644 index 0000000..80b28fb --- /dev/null +++ b/dependencies/include/openssl/dh.h @@ -0,0 +1,412 @@ +/* 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 % p */ + 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 +# define DH_CHECK_PUBKEY_INVALID 0x04 + +/* + * 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) + +# define d2i_DHxparams_fp(fp,x) \ + (DH *)ASN1_d2i_fp((char *(*)())DH_new, \ + (char *(*)())d2i_DHxparams, \ + (fp), \ + (unsigned char **)(x)) +# define i2d_DHxparams_fp(fp,x) \ + ASN1_i2d_fp(i2d_DHxparams,(fp), (unsigned char *)(x)) +# define d2i_DHxparams_bio(bp,x) \ + ASN1_d2i_bio_of(DH, DH_new, d2i_DHxparams, bp, x) +# define i2d_DHxparams_bio(bp,x) \ + ASN1_i2d_bio_of_const(DH, i2d_DHxparams, 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); + +# ifndef OPENSSL_NO_CMS +/* 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); +# endif + +# 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/dependencies/include/openssl/dsa.h b/dependencies/include/openssl/dsa.h new file mode 100644 index 0000000..545358f --- /dev/null +++ b/dependencies/include/openssl/dsa.h @@ -0,0 +1,332 @@ +/* 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/dependencies/include/openssl/dso.h b/dependencies/include/openssl/dso.h new file mode 100644 index 0000000..c9013f5 --- /dev/null +++ b/dependencies/include/openssl/dso.h @@ -0,0 +1,451 @@ +/* dso.h */ +/* + * Written by Geoff Thorpe (geoff@geoffthorpe.net) for the OpenSSL 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). + * + */ + +#ifndef HEADER_DSO_H +# define HEADER_DSO_H + +# include + +#ifdef __cplusplus +extern "C" { +#endif + +/* These values are used as commands to DSO_ctrl() */ +# define DSO_CTRL_GET_FLAGS 1 +# define DSO_CTRL_SET_FLAGS 2 +# define DSO_CTRL_OR_FLAGS 3 + +/* + * By default, DSO_load() will translate the provided filename into a form + * typical for the platform (more specifically the DSO_METHOD) using the + * dso_name_converter function of the method. Eg. win32 will transform "blah" + * into "blah.dll", and dlfcn will transform it into "libblah.so". The + * behaviour can be overriden by setting the name_converter callback in the + * DSO object (using DSO_set_name_converter()). This callback could even + * utilise the DSO_METHOD's converter too if it only wants to override + * behaviour for one or two possible DSO methods. However, the following flag + * can be set in a DSO to prevent *any* native name-translation at all - eg. + * if the caller has prompted the user for a path to a driver library so the + * filename should be interpreted as-is. + */ +# define DSO_FLAG_NO_NAME_TRANSLATION 0x01 +/* + * An extra flag to give if only the extension should be added as + * translation. This is obviously only of importance on Unix and other + * operating systems where the translation also may prefix the name with + * something, like 'lib', and ignored everywhere else. This flag is also + * ignored if DSO_FLAG_NO_NAME_TRANSLATION is used at the same time. + */ +# define DSO_FLAG_NAME_TRANSLATION_EXT_ONLY 0x02 + +/* + * The following flag controls the translation of symbol names to upper case. + * This is currently only being implemented for OpenVMS. + */ +# define DSO_FLAG_UPCASE_SYMBOL 0x10 + +/* + * This flag loads the library with public symbols. Meaning: The exported + * symbols of this library are public to all libraries loaded after this + * library. At the moment only implemented in unix. + */ +# define DSO_FLAG_GLOBAL_SYMBOLS 0x20 + +typedef void (*DSO_FUNC_TYPE) (void); + +typedef struct dso_st DSO; + +/* + * The function prototype used for method functions (or caller-provided + * callbacks) that transform filenames. They are passed a DSO structure + * pointer (or NULL if they are to be used independantly of a DSO object) and + * a filename to transform. They should either return NULL (if there is an + * error condition) or a newly allocated string containing the transformed + * form that the caller will need to free with OPENSSL_free() when done. + */ +typedef char *(*DSO_NAME_CONVERTER_FUNC)(DSO *, const char *); +/* + * The function prototype used for method functions (or caller-provided + * callbacks) that merge two file specifications. They are passed a DSO + * structure pointer (or NULL if they are to be used independantly of a DSO + * object) and two file specifications to merge. They should either return + * NULL (if there is an error condition) or a newly allocated string + * containing the result of merging that the caller will need to free with + * OPENSSL_free() when done. Here, merging means that bits and pieces are + * taken from each of the file specifications and added together in whatever + * fashion that is sensible for the DSO method in question. The only rule + * that really applies is that if the two specification contain pieces of the + * same type, the copy from the first string takes priority. One could see + * it as the first specification is the one given by the user and the second + * being a bunch of defaults to add on if they're missing in the first. + */ +typedef char *(*DSO_MERGER_FUNC)(DSO *, const char *, const char *); + +typedef struct dso_meth_st { + const char *name; + /* + * Loads a shared library, NB: new DSO_METHODs must ensure that a + * successful load populates the loaded_filename field, and likewise a + * successful unload OPENSSL_frees and NULLs it out. + */ + int (*dso_load) (DSO *dso); + /* Unloads a shared library */ + int (*dso_unload) (DSO *dso); + /* Binds a variable */ + void *(*dso_bind_var) (DSO *dso, const char *symname); + /* + * Binds a function - assumes a return type of DSO_FUNC_TYPE. This should + * be cast to the real function prototype by the caller. Platforms that + * don't have compatible representations for different prototypes (this + * is possible within ANSI C) are highly unlikely to have shared + * libraries at all, let alone a DSO_METHOD implemented for them. + */ + DSO_FUNC_TYPE (*dso_bind_func) (DSO *dso, const char *symname); +/* I don't think this would actually be used in any circumstances. */ +# if 0 + /* Unbinds a variable */ + int (*dso_unbind_var) (DSO *dso, char *symname, void *symptr); + /* Unbinds a function */ + int (*dso_unbind_func) (DSO *dso, char *symname, DSO_FUNC_TYPE symptr); +# endif + /* + * The generic (yuck) "ctrl()" function. NB: Negative return values + * (rather than zero) indicate errors. + */ + long (*dso_ctrl) (DSO *dso, int cmd, long larg, void *parg); + /* + * The default DSO_METHOD-specific function for converting filenames to a + * canonical native form. + */ + DSO_NAME_CONVERTER_FUNC dso_name_converter; + /* + * The default DSO_METHOD-specific function for converting filenames to a + * canonical native form. + */ + DSO_MERGER_FUNC dso_merger; + /* [De]Initialisation handlers. */ + int (*init) (DSO *dso); + int (*finish) (DSO *dso); + /* Return pathname of the module containing location */ + int (*pathbyaddr) (void *addr, char *path, int sz); + /* Perform global symbol lookup, i.e. among *all* modules */ + void *(*globallookup) (const char *symname); +} DSO_METHOD; + +/**********************************************************************/ +/* The low-level handle type used to refer to a loaded shared library */ + +struct dso_st { + DSO_METHOD *meth; + /* + * Standard dlopen uses a (void *). Win32 uses a HANDLE. VMS doesn't use + * anything but will need to cache the filename for use in the dso_bind + * handler. All in all, let each method control its own destiny. + * "Handles" and such go in a STACK. + */ + STACK_OF(void) *meth_data; + int references; + int flags; + /* + * For use by applications etc ... use this for your bits'n'pieces, don't + * touch meth_data! + */ + CRYPTO_EX_DATA ex_data; + /* + * If this callback function pointer is set to non-NULL, then it will be + * used in DSO_load() in place of meth->dso_name_converter. NB: This + * should normally set using DSO_set_name_converter(). + */ + DSO_NAME_CONVERTER_FUNC name_converter; + /* + * If this callback function pointer is set to non-NULL, then it will be + * used in DSO_load() in place of meth->dso_merger. NB: This should + * normally set using DSO_set_merger(). + */ + DSO_MERGER_FUNC merger; + /* + * This is populated with (a copy of) the platform-independant filename + * used for this DSO. + */ + char *filename; + /* + * This is populated with (a copy of) the translated filename by which + * the DSO was actually loaded. It is NULL iff the DSO is not currently + * loaded. NB: This is here because the filename translation process may + * involve a callback being invoked more than once not only to convert to + * a platform-specific form, but also to try different filenames in the + * process of trying to perform a load. As such, this variable can be + * used to indicate (a) whether this DSO structure corresponds to a + * loaded library or not, and (b) the filename with which it was actually + * loaded. + */ + char *loaded_filename; +}; + +DSO *DSO_new(void); +DSO *DSO_new_method(DSO_METHOD *method); +int DSO_free(DSO *dso); +int DSO_flags(DSO *dso); +int DSO_up_ref(DSO *dso); +long DSO_ctrl(DSO *dso, int cmd, long larg, void *parg); + +/* + * This function sets the DSO's name_converter callback. If it is non-NULL, + * then it will be used instead of the associated DSO_METHOD's function. If + * oldcb is non-NULL then it is set to the function pointer value being + * replaced. Return value is non-zero for success. + */ +int DSO_set_name_converter(DSO *dso, DSO_NAME_CONVERTER_FUNC cb, + DSO_NAME_CONVERTER_FUNC *oldcb); +/* + * These functions can be used to get/set the platform-independant filename + * used for a DSO. NB: set will fail if the DSO is already loaded. + */ +const char *DSO_get_filename(DSO *dso); +int DSO_set_filename(DSO *dso, const char *filename); +/* + * This function will invoke the DSO's name_converter callback to translate a + * filename, or if the callback isn't set it will instead use the DSO_METHOD's + * converter. If "filename" is NULL, the "filename" in the DSO itself will be + * used. If the DSO_FLAG_NO_NAME_TRANSLATION flag is set, then the filename is + * simply duplicated. NB: This function is usually called from within a + * DSO_METHOD during the processing of a DSO_load() call, and is exposed so + * that caller-created DSO_METHODs can do the same thing. A non-NULL return + * value will need to be OPENSSL_free()'d. + */ +char *DSO_convert_filename(DSO *dso, const char *filename); +/* + * This function will invoke the DSO's merger callback to merge two file + * specifications, or if the callback isn't set it will instead use the + * DSO_METHOD's merger. A non-NULL return value will need to be + * OPENSSL_free()'d. + */ +char *DSO_merge(DSO *dso, const char *filespec1, const char *filespec2); +/* + * If the DSO is currently loaded, this returns the filename that it was + * loaded under, otherwise it returns NULL. So it is also useful as a test as + * to whether the DSO is currently loaded. NB: This will not necessarily + * return the same value as DSO_convert_filename(dso, dso->filename), because + * the DSO_METHOD's load function may have tried a variety of filenames (with + * and/or without the aid of the converters) before settling on the one it + * actually loaded. + */ +const char *DSO_get_loaded_filename(DSO *dso); + +void DSO_set_default_method(DSO_METHOD *meth); +DSO_METHOD *DSO_get_default_method(void); +DSO_METHOD *DSO_get_method(DSO *dso); +DSO_METHOD *DSO_set_method(DSO *dso, DSO_METHOD *meth); + +/* + * The all-singing all-dancing load function, you normally pass NULL for the + * first and third parameters. Use DSO_up and DSO_free for subsequent + * reference count handling. Any flags passed in will be set in the + * constructed DSO after its init() function but before the load operation. + * If 'dso' is non-NULL, 'flags' is ignored. + */ +DSO *DSO_load(DSO *dso, const char *filename, DSO_METHOD *meth, int flags); + +/* This function binds to a variable inside a shared library. */ +void *DSO_bind_var(DSO *dso, const char *symname); + +/* This function binds to a function inside a shared library. */ +DSO_FUNC_TYPE DSO_bind_func(DSO *dso, const char *symname); + +/* + * This method is the default, but will beg, borrow, or steal whatever method + * should be the default on any particular platform (including + * DSO_METH_null() if necessary). + */ +DSO_METHOD *DSO_METHOD_openssl(void); + +/* + * This method is defined for all platforms - if a platform has no DSO + * support then this will be the only method! + */ +DSO_METHOD *DSO_METHOD_null(void); + +/* + * If DSO_DLFCN is defined, the standard dlfcn.h-style functions (dlopen, + * dlclose, dlsym, etc) will be used and incorporated into this method. If + * not, this method will return NULL. + */ +DSO_METHOD *DSO_METHOD_dlfcn(void); + +/* + * If DSO_DL is defined, the standard dl.h-style functions (shl_load, + * shl_unload, shl_findsym, etc) will be used and incorporated into this + * method. If not, this method will return NULL. + */ +DSO_METHOD *DSO_METHOD_dl(void); + +/* If WIN32 is defined, use DLLs. If not, return NULL. */ +DSO_METHOD *DSO_METHOD_win32(void); + +/* If VMS is defined, use shared images. If not, return NULL. */ +DSO_METHOD *DSO_METHOD_vms(void); + +/* + * This function writes null-terminated pathname of DSO module containing + * 'addr' into 'sz' large caller-provided 'path' and returns the number of + * characters [including trailing zero] written to it. If 'sz' is 0 or + * negative, 'path' is ignored and required amount of charachers [including + * trailing zero] to accomodate pathname is returned. If 'addr' is NULL, then + * pathname of cryptolib itself is returned. Negative or zero return value + * denotes error. + */ +int DSO_pathbyaddr(void *addr, char *path, int sz); + +/* + * This function should be used with caution! It looks up symbols in *all* + * loaded modules and if module gets unloaded by somebody else attempt to + * dereference the pointer is doomed to have fatal consequences. Primary + * usage for this function is to probe *core* system functionality, e.g. + * check if getnameinfo(3) is available at run-time without bothering about + * OS-specific details such as libc.so.versioning or where does it actually + * reside: in libc itself or libsocket. + */ +void *DSO_global_lookup(const char *name); + +/* If BeOS is defined, use shared images. If not, return NULL. */ +DSO_METHOD *DSO_METHOD_beos(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_DSO_strings(void); + +/* Error codes for the DSO functions. */ + +/* Function codes. */ +# define DSO_F_BEOS_BIND_FUNC 144 +# define DSO_F_BEOS_BIND_VAR 145 +# define DSO_F_BEOS_LOAD 146 +# define DSO_F_BEOS_NAME_CONVERTER 147 +# define DSO_F_BEOS_UNLOAD 148 +# define DSO_F_DLFCN_BIND_FUNC 100 +# define DSO_F_DLFCN_BIND_VAR 101 +# define DSO_F_DLFCN_LOAD 102 +# define DSO_F_DLFCN_MERGER 130 +# define DSO_F_DLFCN_NAME_CONVERTER 123 +# define DSO_F_DLFCN_UNLOAD 103 +# define DSO_F_DL_BIND_FUNC 104 +# define DSO_F_DL_BIND_VAR 105 +# define DSO_F_DL_LOAD 106 +# define DSO_F_DL_MERGER 131 +# define DSO_F_DL_NAME_CONVERTER 124 +# define DSO_F_DL_UNLOAD 107 +# define DSO_F_DSO_BIND_FUNC 108 +# define DSO_F_DSO_BIND_VAR 109 +# define DSO_F_DSO_CONVERT_FILENAME 126 +# define DSO_F_DSO_CTRL 110 +# define DSO_F_DSO_FREE 111 +# define DSO_F_DSO_GET_FILENAME 127 +# define DSO_F_DSO_GET_LOADED_FILENAME 128 +# define DSO_F_DSO_GLOBAL_LOOKUP 139 +# define DSO_F_DSO_LOAD 112 +# define DSO_F_DSO_MERGE 132 +# define DSO_F_DSO_NEW_METHOD 113 +# define DSO_F_DSO_PATHBYADDR 140 +# define DSO_F_DSO_SET_FILENAME 129 +# define DSO_F_DSO_SET_NAME_CONVERTER 122 +# define DSO_F_DSO_UP_REF 114 +# define DSO_F_GLOBAL_LOOKUP_FUNC 138 +# define DSO_F_PATHBYADDR 137 +# define DSO_F_VMS_BIND_SYM 115 +# define DSO_F_VMS_LOAD 116 +# define DSO_F_VMS_MERGER 133 +# define DSO_F_VMS_UNLOAD 117 +# define DSO_F_WIN32_BIND_FUNC 118 +# define DSO_F_WIN32_BIND_VAR 119 +# define DSO_F_WIN32_GLOBALLOOKUP 142 +# define DSO_F_WIN32_GLOBALLOOKUP_FUNC 143 +# define DSO_F_WIN32_JOINER 135 +# define DSO_F_WIN32_LOAD 120 +# define DSO_F_WIN32_MERGER 134 +# define DSO_F_WIN32_NAME_CONVERTER 125 +# define DSO_F_WIN32_PATHBYADDR 141 +# define DSO_F_WIN32_SPLITTER 136 +# define DSO_F_WIN32_UNLOAD 121 + +/* Reason codes. */ +# define DSO_R_CTRL_FAILED 100 +# define DSO_R_DSO_ALREADY_LOADED 110 +# define DSO_R_EMPTY_FILE_STRUCTURE 113 +# define DSO_R_FAILURE 114 +# define DSO_R_FILENAME_TOO_BIG 101 +# define DSO_R_FINISH_FAILED 102 +# define DSO_R_INCORRECT_FILE_SYNTAX 115 +# define DSO_R_LOAD_FAILED 103 +# define DSO_R_NAME_TRANSLATION_FAILED 109 +# define DSO_R_NO_FILENAME 111 +# define DSO_R_NO_FILE_SPECIFICATION 116 +# define DSO_R_NULL_HANDLE 104 +# define DSO_R_SET_FILENAME_FAILED 112 +# define DSO_R_STACK_ERROR 105 +# define DSO_R_SYM_FAILURE 106 +# define DSO_R_UNLOAD_FAILED 107 +# define DSO_R_UNSUPPORTED 108 + +#ifdef __cplusplus +} +#endif +#endif diff --git a/dependencies/include/openssl/dtls1.h b/dependencies/include/openssl/dtls1.h new file mode 100644 index 0000000..30bbcf2 --- /dev/null +++ b/dependencies/include/openssl/dtls1.h @@ -0,0 +1,272 @@ +/* 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_VERSION_MAJOR 0xFE + +# 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/dependencies/include/openssl/e_os2.h b/dependencies/include/openssl/e_os2.h new file mode 100644 index 0000000..7be9989 --- /dev/null +++ b/dependencies/include/openssl/e_os2.h @@ -0,0 +1,328 @@ +/* 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(_WIN64) || defined(OPENSSL_SYSNAME_WIN64) +# undef OPENSSL_SYS_UNIX +# if !defined(OPENSSL_SYS_WIN64) +# define OPENSSL_SYS_WIN64 +# endif +# 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_WIN64) || 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/dependencies/include/openssl/ebcdic.h b/dependencies/include/openssl/ebcdic.h new file mode 100644 index 0000000..4cbdfeb --- /dev/null +++ b/dependencies/include/openssl/ebcdic.h @@ -0,0 +1,26 @@ +/* crypto/ebcdic.h */ + +#ifndef HEADER_EBCDIC_H +# define HEADER_EBCDIC_H + +# include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Avoid name clashes with other applications */ +# define os_toascii _openssl_os_toascii +# define os_toebcdic _openssl_os_toebcdic +# define ebcdic2ascii _openssl_ebcdic2ascii +# define ascii2ebcdic _openssl_ascii2ebcdic + +extern const unsigned char os_toascii[256]; +extern const unsigned char os_toebcdic[256]; +void *ebcdic2ascii(void *dest, const void *srce, size_t count); +void *ascii2ebcdic(void *dest, const void *srce, size_t count); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/dependencies/include/openssl/ec.h b/dependencies/include/openssl/ec.h new file mode 100644 index 0000000..81e6faf --- /dev/null +++ b/dependencies/include/openssl/ec.h @@ -0,0 +1,1282 @@ +/* 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 0x04 */ + 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_NISTZ256_GET_AFFINE 240 +# define EC_F_ECP_NISTZ256_MULT_PRECOMPUTE 243 +# define EC_F_ECP_NISTZ256_POINTS_MUL 241 +# define EC_F_ECP_NISTZ256_PRE_COMP_NEW 244 +# define EC_F_ECP_NISTZ256_SET_WORDS 245 +# define EC_F_ECP_NISTZ256_WINDOWED_MUL 242 +# 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_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/dependencies/include/openssl/ecdh.h b/dependencies/include/openssl/ecdh.h new file mode 100644 index 0000000..25348b3 --- /dev/null +++ b/dependencies/include/openssl/ecdh.h @@ -0,0 +1,134 @@ +/* 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/dependencies/include/openssl/ecdsa.h b/dependencies/include/openssl/ecdsa.h new file mode 100644 index 0000000..a6f0930 --- /dev/null +++ b/dependencies/include/openssl/ecdsa.h @@ -0,0 +1,335 @@ +/* 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(const 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/dependencies/include/openssl/err.h b/dependencies/include/openssl/err.h new file mode 100644 index 0000000..f423656 --- /dev/null +++ b/dependencies/include/openssl/err.h @@ -0,0 +1,390 @@ +/* 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 +# define SYS_F_FFLUSH 18 + +/* 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/dependencies/include/openssl/evp.h b/dependencies/include/openssl/evp.h new file mode 100644 index 0000000..cf1de15 --- /dev/null +++ b/dependencies/include/openssl/evp.h @@ -0,0 +1,1628 @@ +/* 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_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 + +/* RFC 5246 defines additional data to be 13 bytes in length */ +# define EVP_AEAD_TLS1_AAD_LEN 13 + +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)); +void EVP_PKEY_asn1_set_item(EVP_PKEY_ASN1_METHOD *ameth, + int (*item_verify) (EVP_MD_CTX *ctx, + const ASN1_ITEM *it, + void *asn, + X509_ALGOR *a, + ASN1_BIT_STRING *sig, + EVP_PKEY *pkey), + int (*item_sign) (EVP_MD_CTX *ctx, + const ASN1_ITEM *it, + void *asn, + X509_ALGOR *alg1, + X509_ALGOR *alg2, + ASN1_BIT_STRING *sig)); + +# 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_PKEY_meth_get_init(EVP_PKEY_METHOD *pmeth, + int (**pinit) (EVP_PKEY_CTX *ctx)); + +void EVP_PKEY_meth_get_copy(EVP_PKEY_METHOD *pmeth, + int (**pcopy) (EVP_PKEY_CTX *dst, + EVP_PKEY_CTX *src)); + +void EVP_PKEY_meth_get_cleanup(EVP_PKEY_METHOD *pmeth, + void (**pcleanup) (EVP_PKEY_CTX *ctx)); + +void EVP_PKEY_meth_get_paramgen(EVP_PKEY_METHOD *pmeth, + int (**pparamgen_init) (EVP_PKEY_CTX *ctx), + int (**pparamgen) (EVP_PKEY_CTX *ctx, + EVP_PKEY *pkey)); + +void EVP_PKEY_meth_get_keygen(EVP_PKEY_METHOD *pmeth, + int (**pkeygen_init) (EVP_PKEY_CTX *ctx), + int (**pkeygen) (EVP_PKEY_CTX *ctx, + EVP_PKEY *pkey)); + +void EVP_PKEY_meth_get_sign(EVP_PKEY_METHOD *pmeth, + int (**psign_init) (EVP_PKEY_CTX *ctx), + int (**psign) (EVP_PKEY_CTX *ctx, + unsigned char *sig, size_t *siglen, + const unsigned char *tbs, + size_t tbslen)); + +void EVP_PKEY_meth_get_verify(EVP_PKEY_METHOD *pmeth, + int (**pverify_init) (EVP_PKEY_CTX *ctx), + int (**pverify) (EVP_PKEY_CTX *ctx, + const unsigned char *sig, + size_t siglen, + const unsigned char *tbs, + size_t tbslen)); + +void EVP_PKEY_meth_get_verify_recover(EVP_PKEY_METHOD *pmeth, + int (**pverify_recover_init) (EVP_PKEY_CTX + *ctx), + int (**pverify_recover) (EVP_PKEY_CTX + *ctx, + unsigned char + *sig, + size_t *siglen, + const unsigned + char *tbs, + size_t tbslen)); + +void EVP_PKEY_meth_get_signctx(EVP_PKEY_METHOD *pmeth, + int (**psignctx_init) (EVP_PKEY_CTX *ctx, + EVP_MD_CTX *mctx), + int (**psignctx) (EVP_PKEY_CTX *ctx, + unsigned char *sig, + size_t *siglen, + EVP_MD_CTX *mctx)); + +void EVP_PKEY_meth_get_verifyctx(EVP_PKEY_METHOD *pmeth, + int (**pverifyctx_init) (EVP_PKEY_CTX *ctx, + EVP_MD_CTX *mctx), + int (**pverifyctx) (EVP_PKEY_CTX *ctx, + const unsigned char *sig, + int siglen, + EVP_MD_CTX *mctx)); + +void EVP_PKEY_meth_get_encrypt(EVP_PKEY_METHOD *pmeth, + int (**pencrypt_init) (EVP_PKEY_CTX *ctx), + int (**pencryptfn) (EVP_PKEY_CTX *ctx, + unsigned char *out, + size_t *outlen, + const unsigned char *in, + size_t inlen)); + +void EVP_PKEY_meth_get_decrypt(EVP_PKEY_METHOD *pmeth, + int (**pdecrypt_init) (EVP_PKEY_CTX *ctx), + int (**pdecrypt) (EVP_PKEY_CTX *ctx, + unsigned char *out, + size_t *outlen, + const unsigned char *in, + size_t inlen)); + +void EVP_PKEY_meth_get_derive(EVP_PKEY_METHOD *pmeth, + int (**pderive_init) (EVP_PKEY_CTX *ctx), + int (**pderive) (EVP_PKEY_CTX *ctx, + unsigned char *key, + size_t *keylen)); + +void EVP_PKEY_meth_get_ctrl(EVP_PKEY_METHOD *pmeth, + int (**pctrl) (EVP_PKEY_CTX *ctx, int type, int p1, + void *p2), + int (**pctrl_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 171 +# 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/dependencies/include/openssl/hmac.h b/dependencies/include/openssl/hmac.h new file mode 100644 index 0000000..b8b55cd --- /dev/null +++ b/dependencies/include/openssl/hmac.h @@ -0,0 +1,109 @@ +/* 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/dependencies/include/openssl/idea.h b/dependencies/include/openssl/idea.h new file mode 100644 index 0000000..6075984 --- /dev/null +++ b/dependencies/include/openssl/idea.h @@ -0,0 +1,105 @@ +/* crypto/idea/idea.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_IDEA_H +# define HEADER_IDEA_H + +# include /* IDEA_INT, OPENSSL_NO_IDEA */ + +# ifdef OPENSSL_NO_IDEA +# error IDEA is disabled. +# endif + +# define IDEA_ENCRYPT 1 +# define IDEA_DECRYPT 0 + +# define IDEA_BLOCK 8 +# define IDEA_KEY_LENGTH 16 + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct idea_key_st { + IDEA_INT data[9][6]; +} IDEA_KEY_SCHEDULE; + +const char *idea_options(void); +void idea_ecb_encrypt(const unsigned char *in, unsigned char *out, + IDEA_KEY_SCHEDULE *ks); +# ifdef OPENSSL_FIPS +void private_idea_set_encrypt_key(const unsigned char *key, + IDEA_KEY_SCHEDULE *ks); +# endif +void idea_set_encrypt_key(const unsigned char *key, IDEA_KEY_SCHEDULE *ks); +void idea_set_decrypt_key(IDEA_KEY_SCHEDULE *ek, IDEA_KEY_SCHEDULE *dk); +void idea_cbc_encrypt(const unsigned char *in, unsigned char *out, + long length, IDEA_KEY_SCHEDULE *ks, unsigned char *iv, + int enc); +void idea_cfb64_encrypt(const unsigned char *in, unsigned char *out, + long length, IDEA_KEY_SCHEDULE *ks, unsigned char *iv, + int *num, int enc); +void idea_ofb64_encrypt(const unsigned char *in, unsigned char *out, + long length, IDEA_KEY_SCHEDULE *ks, unsigned char *iv, + int *num); +void idea_encrypt(unsigned long *in, IDEA_KEY_SCHEDULE *ks); +#ifdef __cplusplus +} +#endif + +#endif diff --git a/dependencies/include/openssl/krb5_asn.h b/dependencies/include/openssl/krb5_asn.h new file mode 100644 index 0000000..9cf5a26 --- /dev/null +++ b/dependencies/include/openssl/krb5_asn.h @@ -0,0 +1,240 @@ +/* krb5_asn.h */ +/* + * Written by Vern Staats for the OpenSSL project, ** + * using ocsp/{*.h,*asn*.c} as a starting point + */ + +/* ==================================================================== + * 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). + * + */ + +#ifndef HEADER_KRB5_ASN_H +# define HEADER_KRB5_ASN_H + +/* + * #include + */ +# include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * ASN.1 from Kerberos RFC 1510 + */ + +/*- EncryptedData ::= SEQUENCE { + * etype[0] INTEGER, -- EncryptionType + * kvno[1] INTEGER OPTIONAL, + * cipher[2] OCTET STRING -- ciphertext + * } + */ +typedef struct krb5_encdata_st { + ASN1_INTEGER *etype; + ASN1_INTEGER *kvno; + ASN1_OCTET_STRING *cipher; +} KRB5_ENCDATA; + +DECLARE_STACK_OF(KRB5_ENCDATA) + +/*- PrincipalName ::= SEQUENCE { + * name-type[0] INTEGER, + * name-string[1] SEQUENCE OF GeneralString + * } + */ +typedef struct krb5_princname_st { + ASN1_INTEGER *nametype; + STACK_OF(ASN1_GENERALSTRING) *namestring; +} KRB5_PRINCNAME; + +DECLARE_STACK_OF(KRB5_PRINCNAME) + +/*- Ticket ::= [APPLICATION 1] SEQUENCE { + * tkt-vno[0] INTEGER, + * realm[1] Realm, + * sname[2] PrincipalName, + * enc-part[3] EncryptedData + * } + */ +typedef struct krb5_tktbody_st { + ASN1_INTEGER *tktvno; + ASN1_GENERALSTRING *realm; + KRB5_PRINCNAME *sname; + KRB5_ENCDATA *encdata; +} KRB5_TKTBODY; + +typedef STACK_OF(KRB5_TKTBODY) KRB5_TICKET; +DECLARE_STACK_OF(KRB5_TKTBODY) + +/*- AP-REQ ::= [APPLICATION 14] SEQUENCE { + * pvno[0] INTEGER, + * msg-type[1] INTEGER, + * ap-options[2] APOptions, + * ticket[3] Ticket, + * authenticator[4] EncryptedData + * } + * + * APOptions ::= BIT STRING { + * reserved(0), use-session-key(1), mutual-required(2) } + */ +typedef struct krb5_ap_req_st { + ASN1_INTEGER *pvno; + ASN1_INTEGER *msgtype; + ASN1_BIT_STRING *apoptions; + KRB5_TICKET *ticket; + KRB5_ENCDATA *authenticator; +} KRB5_APREQBODY; + +typedef STACK_OF(KRB5_APREQBODY) KRB5_APREQ; +DECLARE_STACK_OF(KRB5_APREQBODY) + +/* Authenticator Stuff */ + +/*- Checksum ::= SEQUENCE { + * cksumtype[0] INTEGER, + * checksum[1] OCTET STRING + * } + */ +typedef struct krb5_checksum_st { + ASN1_INTEGER *ctype; + ASN1_OCTET_STRING *checksum; +} KRB5_CHECKSUM; + +DECLARE_STACK_OF(KRB5_CHECKSUM) + +/*- EncryptionKey ::= SEQUENCE { + * keytype[0] INTEGER, + * keyvalue[1] OCTET STRING + * } + */ +typedef struct krb5_encryptionkey_st { + ASN1_INTEGER *ktype; + ASN1_OCTET_STRING *keyvalue; +} KRB5_ENCKEY; + +DECLARE_STACK_OF(KRB5_ENCKEY) + +/*- AuthorizationData ::= SEQUENCE OF SEQUENCE { + * ad-type[0] INTEGER, + * ad-data[1] OCTET STRING + * } + */ +typedef struct krb5_authorization_st { + ASN1_INTEGER *adtype; + ASN1_OCTET_STRING *addata; +} KRB5_AUTHDATA; + +DECLARE_STACK_OF(KRB5_AUTHDATA) + +/*- -- Unencrypted authenticator + * Authenticator ::= [APPLICATION 2] SEQUENCE { + * authenticator-vno[0] INTEGER, + * crealm[1] Realm, + * cname[2] PrincipalName, + * cksum[3] Checksum OPTIONAL, + * cusec[4] INTEGER, + * ctime[5] KerberosTime, + * subkey[6] EncryptionKey OPTIONAL, + * seq-number[7] INTEGER OPTIONAL, + * authorization-data[8] AuthorizationData OPTIONAL + * } + */ +typedef struct krb5_authenticator_st { + ASN1_INTEGER *avno; + ASN1_GENERALSTRING *crealm; + KRB5_PRINCNAME *cname; + KRB5_CHECKSUM *cksum; + ASN1_INTEGER *cusec; + ASN1_GENERALIZEDTIME *ctime; + KRB5_ENCKEY *subkey; + ASN1_INTEGER *seqnum; + KRB5_AUTHDATA *authorization; +} KRB5_AUTHENTBODY; + +typedef STACK_OF(KRB5_AUTHENTBODY) KRB5_AUTHENT; +DECLARE_STACK_OF(KRB5_AUTHENTBODY) + +/*- DECLARE_ASN1_FUNCTIONS(type) = DECLARE_ASN1_FUNCTIONS_name(type, type) = + * type *name##_new(void); + * void name##_free(type *a); + * DECLARE_ASN1_ENCODE_FUNCTIONS(type, name, name) = + * 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) = OPENSSL_EXTERN const ASN1_ITEM itname##_it + */ + +DECLARE_ASN1_FUNCTIONS(KRB5_ENCDATA) +DECLARE_ASN1_FUNCTIONS(KRB5_PRINCNAME) +DECLARE_ASN1_FUNCTIONS(KRB5_TKTBODY) +DECLARE_ASN1_FUNCTIONS(KRB5_APREQBODY) +DECLARE_ASN1_FUNCTIONS(KRB5_TICKET) +DECLARE_ASN1_FUNCTIONS(KRB5_APREQ) + +DECLARE_ASN1_FUNCTIONS(KRB5_CHECKSUM) +DECLARE_ASN1_FUNCTIONS(KRB5_ENCKEY) +DECLARE_ASN1_FUNCTIONS(KRB5_AUTHDATA) +DECLARE_ASN1_FUNCTIONS(KRB5_AUTHENTBODY) +DECLARE_ASN1_FUNCTIONS(KRB5_AUTHENT) + +/* 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. + */ + +#ifdef __cplusplus +} +#endif +#endif diff --git a/dependencies/include/openssl/kssl.h b/dependencies/include/openssl/kssl.h new file mode 100644 index 0000000..ae8a51f --- /dev/null +++ b/dependencies/include/openssl/kssl.h @@ -0,0 +1,197 @@ +/* ssl/kssl.h */ +/* + * 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/dependencies/include/openssl/lhash.h b/dependencies/include/openssl/lhash.h new file mode 100644 index 0000000..b6c328b --- /dev/null +++ b/dependencies/include/openssl/lhash.h @@ -0,0 +1,240 @@ +/* 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/dependencies/include/openssl/md4.h b/dependencies/include/openssl/md4.h new file mode 100644 index 0000000..11fd712 --- /dev/null +++ b/dependencies/include/openssl/md4.h @@ -0,0 +1,119 @@ +/* crypto/md4/md4.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_MD4_H +# define HEADER_MD4_H + +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +# ifdef OPENSSL_NO_MD4 +# error MD4 is disabled. +# endif + +/*- + * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + * ! MD4_LONG has to be at least 32 bits wide. If it's wider, then ! + * ! MD4_LONG_LOG2 has to be defined along. ! + * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + */ + +# if defined(__LP32__) +# define MD4_LONG unsigned long +# elif defined(OPENSSL_SYS_CRAY) || defined(__ILP64__) +# define MD4_LONG unsigned long +# define MD4_LONG_LOG2 3 +/* + * _CRAY note. I could declare short, but I have no idea what impact + * does it have on performance on none-T3E machines. I could declare + * int, but at least on C90 sizeof(int) can be chosen at compile time. + * So I've chosen long... + * + */ +# else +# define MD4_LONG unsigned int +# endif + +# define MD4_CBLOCK 64 +# define MD4_LBLOCK (MD4_CBLOCK/4) +# define MD4_DIGEST_LENGTH 16 + +typedef struct MD4state_st { + MD4_LONG A, B, C, D; + MD4_LONG Nl, Nh; + MD4_LONG data[MD4_LBLOCK]; + unsigned int num; +} MD4_CTX; + +# ifdef OPENSSL_FIPS +int private_MD4_Init(MD4_CTX *c); +# endif +int MD4_Init(MD4_CTX *c); +int MD4_Update(MD4_CTX *c, const void *data, size_t len); +int MD4_Final(unsigned char *md, MD4_CTX *c); +unsigned char *MD4(const unsigned char *d, size_t n, unsigned char *md); +void MD4_Transform(MD4_CTX *c, const unsigned char *b); +#ifdef __cplusplus +} +#endif + +#endif diff --git a/dependencies/include/openssl/md5.h b/dependencies/include/openssl/md5.h new file mode 100644 index 0000000..2659038 --- /dev/null +++ b/dependencies/include/openssl/md5.h @@ -0,0 +1,119 @@ +/* crypto/md5/md5.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_MD5_H +# define HEADER_MD5_H + +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +# ifdef OPENSSL_NO_MD5 +# error MD5 is disabled. +# endif + +/* + * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + * ! MD5_LONG has to be at least 32 bits wide. If it's wider, then ! + * ! MD5_LONG_LOG2 has to be defined along. ! + * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + */ + +# if defined(__LP32__) +# define MD5_LONG unsigned long +# elif defined(OPENSSL_SYS_CRAY) || defined(__ILP64__) +# define MD5_LONG unsigned long +# define MD5_LONG_LOG2 3 +/* + * _CRAY note. I could declare short, but I have no idea what impact + * does it have on performance on none-T3E machines. I could declare + * int, but at least on C90 sizeof(int) can be chosen at compile time. + * So I've chosen long... + * + */ +# else +# define MD5_LONG unsigned int +# endif + +# define MD5_CBLOCK 64 +# define MD5_LBLOCK (MD5_CBLOCK/4) +# define MD5_DIGEST_LENGTH 16 + +typedef struct MD5state_st { + MD5_LONG A, B, C, D; + MD5_LONG Nl, Nh; + MD5_LONG data[MD5_LBLOCK]; + unsigned int num; +} MD5_CTX; + +# ifdef OPENSSL_FIPS +int private_MD5_Init(MD5_CTX *c); +# endif +int MD5_Init(MD5_CTX *c); +int MD5_Update(MD5_CTX *c, const void *data, size_t len); +int MD5_Final(unsigned char *md, MD5_CTX *c); +unsigned char *MD5(const unsigned char *d, size_t n, unsigned char *md); +void MD5_Transform(MD5_CTX *c, const unsigned char *b); +#ifdef __cplusplus +} +#endif + +#endif diff --git a/dependencies/include/openssl/mdc2.h b/dependencies/include/openssl/mdc2.h new file mode 100644 index 0000000..7efe53b --- /dev/null +++ b/dependencies/include/openssl/mdc2.h @@ -0,0 +1,94 @@ +/* crypto/mdc2/mdc2.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_MDC2_H +# define HEADER_MDC2_H + +# include + +#ifdef __cplusplus +extern "C" { +#endif + +# ifdef OPENSSL_NO_MDC2 +# error MDC2 is disabled. +# endif + +# define MDC2_BLOCK 8 +# define MDC2_DIGEST_LENGTH 16 + +typedef struct mdc2_ctx_st { + unsigned int num; + unsigned char data[MDC2_BLOCK]; + DES_cblock h, hh; + int pad_type; /* either 1 or 2, default 1 */ +} MDC2_CTX; + +# ifdef OPENSSL_FIPS +int private_MDC2_Init(MDC2_CTX *c); +# endif +int MDC2_Init(MDC2_CTX *c); +int MDC2_Update(MDC2_CTX *c, const unsigned char *data, size_t len); +int MDC2_Final(unsigned char *md, MDC2_CTX *c); +unsigned char *MDC2(const unsigned char *d, size_t n, unsigned char *md); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/dependencies/include/openssl/modes.h b/dependencies/include/openssl/modes.h new file mode 100644 index 0000000..fd48849 --- /dev/null +++ b/dependencies/include/openssl/modes.h @@ -0,0 +1,163 @@ +/* ==================================================================== + * Copyright (c) 2008 The OpenSSL Project. All rights reserved. + * + * Rights for redistribution and usage in source and binary + * forms are granted according to the OpenSSL license. + */ + +#include + +#ifdef __cplusplus +extern "C" { +#endif +typedef void (*block128_f) (const unsigned char in[16], + unsigned char out[16], const void *key); + +typedef void (*cbc128_f) (const unsigned char *in, unsigned char *out, + size_t len, const void *key, + unsigned char ivec[16], int enc); + +typedef void (*ctr128_f) (const unsigned char *in, unsigned char *out, + size_t blocks, const void *key, + const unsigned char ivec[16]); + +typedef void (*ccm128_f) (const unsigned char *in, unsigned char *out, + size_t blocks, const void *key, + const unsigned char ivec[16], + unsigned char cmac[16]); + +void CRYPTO_cbc128_encrypt(const unsigned char *in, unsigned char *out, + size_t len, const void *key, + unsigned char ivec[16], block128_f block); +void CRYPTO_cbc128_decrypt(const unsigned char *in, unsigned char *out, + size_t len, const void *key, + unsigned char ivec[16], block128_f block); + +void CRYPTO_ctr128_encrypt(const unsigned char *in, unsigned char *out, + size_t len, const void *key, + unsigned char ivec[16], + unsigned char ecount_buf[16], unsigned int *num, + block128_f block); + +void CRYPTO_ctr128_encrypt_ctr32(const unsigned char *in, unsigned char *out, + size_t len, const void *key, + unsigned char ivec[16], + unsigned char ecount_buf[16], + unsigned int *num, ctr128_f ctr); + +void CRYPTO_ofb128_encrypt(const unsigned char *in, unsigned char *out, + size_t len, const void *key, + unsigned char ivec[16], int *num, + block128_f block); + +void CRYPTO_cfb128_encrypt(const unsigned char *in, unsigned char *out, + size_t len, const void *key, + unsigned char ivec[16], int *num, + int enc, block128_f block); +void CRYPTO_cfb128_8_encrypt(const unsigned char *in, unsigned char *out, + size_t length, const void *key, + unsigned char ivec[16], int *num, + int enc, block128_f block); +void CRYPTO_cfb128_1_encrypt(const unsigned char *in, unsigned char *out, + size_t bits, const void *key, + unsigned char ivec[16], int *num, + int enc, block128_f block); + +size_t CRYPTO_cts128_encrypt_block(const unsigned char *in, + unsigned char *out, size_t len, + const void *key, unsigned char ivec[16], + block128_f block); +size_t CRYPTO_cts128_encrypt(const unsigned char *in, unsigned char *out, + size_t len, const void *key, + unsigned char ivec[16], cbc128_f cbc); +size_t CRYPTO_cts128_decrypt_block(const unsigned char *in, + unsigned char *out, size_t len, + const void *key, unsigned char ivec[16], + block128_f block); +size_t CRYPTO_cts128_decrypt(const unsigned char *in, unsigned char *out, + size_t len, const void *key, + unsigned char ivec[16], cbc128_f cbc); + +size_t CRYPTO_nistcts128_encrypt_block(const unsigned char *in, + unsigned char *out, size_t len, + const void *key, + unsigned char ivec[16], + block128_f block); +size_t CRYPTO_nistcts128_encrypt(const unsigned char *in, unsigned char *out, + size_t len, const void *key, + unsigned char ivec[16], cbc128_f cbc); +size_t CRYPTO_nistcts128_decrypt_block(const unsigned char *in, + unsigned char *out, size_t len, + const void *key, + unsigned char ivec[16], + block128_f block); +size_t CRYPTO_nistcts128_decrypt(const unsigned char *in, unsigned char *out, + size_t len, const void *key, + unsigned char ivec[16], cbc128_f cbc); + +typedef struct gcm128_context GCM128_CONTEXT; + +GCM128_CONTEXT *CRYPTO_gcm128_new(void *key, block128_f block); +void CRYPTO_gcm128_init(GCM128_CONTEXT *ctx, void *key, block128_f block); +void CRYPTO_gcm128_setiv(GCM128_CONTEXT *ctx, const unsigned char *iv, + size_t len); +int CRYPTO_gcm128_aad(GCM128_CONTEXT *ctx, const unsigned char *aad, + size_t len); +int CRYPTO_gcm128_encrypt(GCM128_CONTEXT *ctx, + const unsigned char *in, unsigned char *out, + size_t len); +int CRYPTO_gcm128_decrypt(GCM128_CONTEXT *ctx, + const unsigned char *in, unsigned char *out, + size_t len); +int CRYPTO_gcm128_encrypt_ctr32(GCM128_CONTEXT *ctx, + const unsigned char *in, unsigned char *out, + size_t len, ctr128_f stream); +int CRYPTO_gcm128_decrypt_ctr32(GCM128_CONTEXT *ctx, + const unsigned char *in, unsigned char *out, + size_t len, ctr128_f stream); +int CRYPTO_gcm128_finish(GCM128_CONTEXT *ctx, const unsigned char *tag, + size_t len); +void CRYPTO_gcm128_tag(GCM128_CONTEXT *ctx, unsigned char *tag, size_t len); +void CRYPTO_gcm128_release(GCM128_CONTEXT *ctx); + +typedef struct ccm128_context CCM128_CONTEXT; + +void CRYPTO_ccm128_init(CCM128_CONTEXT *ctx, + unsigned int M, unsigned int L, void *key, + block128_f block); +int CRYPTO_ccm128_setiv(CCM128_CONTEXT *ctx, const unsigned char *nonce, + size_t nlen, size_t mlen); +void CRYPTO_ccm128_aad(CCM128_CONTEXT *ctx, const unsigned char *aad, + size_t alen); +int CRYPTO_ccm128_encrypt(CCM128_CONTEXT *ctx, const unsigned char *inp, + unsigned char *out, size_t len); +int CRYPTO_ccm128_decrypt(CCM128_CONTEXT *ctx, const unsigned char *inp, + unsigned char *out, size_t len); +int CRYPTO_ccm128_encrypt_ccm64(CCM128_CONTEXT *ctx, const unsigned char *inp, + unsigned char *out, size_t len, + ccm128_f stream); +int CRYPTO_ccm128_decrypt_ccm64(CCM128_CONTEXT *ctx, const unsigned char *inp, + unsigned char *out, size_t len, + ccm128_f stream); +size_t CRYPTO_ccm128_tag(CCM128_CONTEXT *ctx, unsigned char *tag, size_t len); + +typedef struct xts128_context XTS128_CONTEXT; + +int CRYPTO_xts128_encrypt(const XTS128_CONTEXT *ctx, + const unsigned char iv[16], + const unsigned char *inp, unsigned char *out, + size_t len, int enc); + +size_t CRYPTO_128_wrap(void *key, const unsigned char *iv, + unsigned char *out, + const unsigned char *in, size_t inlen, + block128_f block); + +size_t CRYPTO_128_unwrap(void *key, const unsigned char *iv, + unsigned char *out, + const unsigned char *in, size_t inlen, + block128_f block); + +#ifdef __cplusplus +} +#endif diff --git a/dependencies/include/openssl/obj_mac.h b/dependencies/include/openssl/obj_mac.h new file mode 100644 index 0000000..779c309 --- /dev/null +++ b/dependencies/include/openssl/obj_mac.h @@ -0,0 +1,4194 @@ +/* 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/dependencies/include/openssl/objects.h b/dependencies/include/openssl/objects.h new file mode 100644 index 0000000..b8dafa8 --- /dev/null +++ b/dependencies/include/openssl/objects.h @@ -0,0 +1,1143 @@ +/* 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/dependencies/include/openssl/ocsp.h b/dependencies/include/openssl/ocsp.h new file mode 100644 index 0000000..ca2ee76 --- /dev/null +++ b/dependencies/include/openssl/ocsp.h @@ -0,0 +1,637 @@ +/* ocsp.h */ +/* + * Written by Tom Titchener for the OpenSSL + * project. + */ + +/* + * History: This file was transfered to Richard Levitte from CertCo by Kathy + * Weinhold in mid-spring 2000 to be included in OpenSSL or released as a + * patch kit. + */ + +/* ==================================================================== + * 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). + * + */ + +#ifndef HEADER_OCSP_H +# define HEADER_OCSP_H + +# include +# include +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Various flags and values */ + +# define OCSP_DEFAULT_NONCE_LENGTH 16 + +# define OCSP_NOCERTS 0x1 +# define OCSP_NOINTERN 0x2 +# define OCSP_NOSIGS 0x4 +# define OCSP_NOCHAIN 0x8 +# define OCSP_NOVERIFY 0x10 +# define OCSP_NOEXPLICIT 0x20 +# define OCSP_NOCASIGN 0x40 +# define OCSP_NODELEGATED 0x80 +# define OCSP_NOCHECKS 0x100 +# define OCSP_TRUSTOTHER 0x200 +# define OCSP_RESPID_KEY 0x400 +# define OCSP_NOTIME 0x800 + +/*- CertID ::= SEQUENCE { + * hashAlgorithm AlgorithmIdentifier, + * issuerNameHash OCTET STRING, -- Hash of Issuer's DN + * issuerKeyHash OCTET STRING, -- Hash of Issuers public key (excluding the tag & length fields) + * serialNumber CertificateSerialNumber } + */ +typedef struct ocsp_cert_id_st { + X509_ALGOR *hashAlgorithm; + ASN1_OCTET_STRING *issuerNameHash; + ASN1_OCTET_STRING *issuerKeyHash; + ASN1_INTEGER *serialNumber; +} OCSP_CERTID; + +DECLARE_STACK_OF(OCSP_CERTID) + +/*- Request ::= SEQUENCE { + * reqCert CertID, + * singleRequestExtensions [0] EXPLICIT Extensions OPTIONAL } + */ +typedef struct ocsp_one_request_st { + OCSP_CERTID *reqCert; + STACK_OF(X509_EXTENSION) *singleRequestExtensions; +} OCSP_ONEREQ; + +DECLARE_STACK_OF(OCSP_ONEREQ) +DECLARE_ASN1_SET_OF(OCSP_ONEREQ) + +/*- TBSRequest ::= SEQUENCE { + * version [0] EXPLICIT Version DEFAULT v1, + * requestorName [1] EXPLICIT GeneralName OPTIONAL, + * requestList SEQUENCE OF Request, + * requestExtensions [2] EXPLICIT Extensions OPTIONAL } + */ +typedef struct ocsp_req_info_st { + ASN1_INTEGER *version; + GENERAL_NAME *requestorName; + STACK_OF(OCSP_ONEREQ) *requestList; + STACK_OF(X509_EXTENSION) *requestExtensions; +} OCSP_REQINFO; + +/*- Signature ::= SEQUENCE { + * signatureAlgorithm AlgorithmIdentifier, + * signature BIT STRING, + * certs [0] EXPLICIT SEQUENCE OF Certificate OPTIONAL } + */ +typedef struct ocsp_signature_st { + X509_ALGOR *signatureAlgorithm; + ASN1_BIT_STRING *signature; + STACK_OF(X509) *certs; +} OCSP_SIGNATURE; + +/*- OCSPRequest ::= SEQUENCE { + * tbsRequest TBSRequest, + * optionalSignature [0] EXPLICIT Signature OPTIONAL } + */ +typedef struct ocsp_request_st { + OCSP_REQINFO *tbsRequest; + OCSP_SIGNATURE *optionalSignature; /* OPTIONAL */ +} OCSP_REQUEST; + +/*- OCSPResponseStatus ::= ENUMERATED { + * successful (0), --Response has valid confirmations + * malformedRequest (1), --Illegal confirmation request + * internalError (2), --Internal error in issuer + * tryLater (3), --Try again later + * --(4) is not used + * sigRequired (5), --Must sign the request + * unauthorized (6) --Request unauthorized + * } + */ +# define OCSP_RESPONSE_STATUS_SUCCESSFUL 0 +# define OCSP_RESPONSE_STATUS_MALFORMEDREQUEST 1 +# define OCSP_RESPONSE_STATUS_INTERNALERROR 2 +# define OCSP_RESPONSE_STATUS_TRYLATER 3 +# define OCSP_RESPONSE_STATUS_SIGREQUIRED 5 +# define OCSP_RESPONSE_STATUS_UNAUTHORIZED 6 + +/*- ResponseBytes ::= SEQUENCE { + * responseType OBJECT IDENTIFIER, + * response OCTET STRING } + */ +typedef struct ocsp_resp_bytes_st { + ASN1_OBJECT *responseType; + ASN1_OCTET_STRING *response; +} OCSP_RESPBYTES; + +/*- OCSPResponse ::= SEQUENCE { + * responseStatus OCSPResponseStatus, + * responseBytes [0] EXPLICIT ResponseBytes OPTIONAL } + */ +struct ocsp_response_st { + ASN1_ENUMERATED *responseStatus; + OCSP_RESPBYTES *responseBytes; +}; + +/*- ResponderID ::= CHOICE { + * byName [1] Name, + * byKey [2] KeyHash } + */ +# define V_OCSP_RESPID_NAME 0 +# define V_OCSP_RESPID_KEY 1 +struct ocsp_responder_id_st { + int type; + union { + X509_NAME *byName; + ASN1_OCTET_STRING *byKey; + } value; +}; + +DECLARE_STACK_OF(OCSP_RESPID) +DECLARE_ASN1_FUNCTIONS(OCSP_RESPID) + +/*- KeyHash ::= OCTET STRING --SHA-1 hash of responder's public key + * --(excluding the tag and length fields) + */ + +/*- RevokedInfo ::= SEQUENCE { + * revocationTime GeneralizedTime, + * revocationReason [0] EXPLICIT CRLReason OPTIONAL } + */ +typedef struct ocsp_revoked_info_st { + ASN1_GENERALIZEDTIME *revocationTime; + ASN1_ENUMERATED *revocationReason; +} OCSP_REVOKEDINFO; + +/*- CertStatus ::= CHOICE { + * good [0] IMPLICIT NULL, + * revoked [1] IMPLICIT RevokedInfo, + * unknown [2] IMPLICIT UnknownInfo } + */ +# define V_OCSP_CERTSTATUS_GOOD 0 +# define V_OCSP_CERTSTATUS_REVOKED 1 +# define V_OCSP_CERTSTATUS_UNKNOWN 2 +typedef struct ocsp_cert_status_st { + int type; + union { + ASN1_NULL *good; + OCSP_REVOKEDINFO *revoked; + ASN1_NULL *unknown; + } value; +} OCSP_CERTSTATUS; + +/*- SingleResponse ::= SEQUENCE { + * certID CertID, + * certStatus CertStatus, + * thisUpdate GeneralizedTime, + * nextUpdate [0] EXPLICIT GeneralizedTime OPTIONAL, + * singleExtensions [1] EXPLICIT Extensions OPTIONAL } + */ +typedef struct ocsp_single_response_st { + OCSP_CERTID *certId; + OCSP_CERTSTATUS *certStatus; + ASN1_GENERALIZEDTIME *thisUpdate; + ASN1_GENERALIZEDTIME *nextUpdate; + STACK_OF(X509_EXTENSION) *singleExtensions; +} OCSP_SINGLERESP; + +DECLARE_STACK_OF(OCSP_SINGLERESP) +DECLARE_ASN1_SET_OF(OCSP_SINGLERESP) + +/*- ResponseData ::= SEQUENCE { + * version [0] EXPLICIT Version DEFAULT v1, + * responderID ResponderID, + * producedAt GeneralizedTime, + * responses SEQUENCE OF SingleResponse, + * responseExtensions [1] EXPLICIT Extensions OPTIONAL } + */ +typedef struct ocsp_response_data_st { + ASN1_INTEGER *version; + OCSP_RESPID *responderId; + ASN1_GENERALIZEDTIME *producedAt; + STACK_OF(OCSP_SINGLERESP) *responses; + STACK_OF(X509_EXTENSION) *responseExtensions; +} OCSP_RESPDATA; + +/*- BasicOCSPResponse ::= SEQUENCE { + * tbsResponseData ResponseData, + * signatureAlgorithm AlgorithmIdentifier, + * signature BIT STRING, + * certs [0] EXPLICIT SEQUENCE OF Certificate OPTIONAL } + */ + /* + * Note 1: The value for "signature" is specified in the OCSP rfc2560 as + * follows: "The value for the signature SHALL be computed on the hash of + * the DER encoding ResponseData." This means that you must hash the + * DER-encoded tbsResponseData, and then run it through a crypto-signing + * function, which will (at least w/RSA) do a hash-'n'-private-encrypt + * operation. This seems a bit odd, but that's the spec. Also note that + * the data structures do not leave anywhere to independently specify the + * algorithm used for the initial hash. So, we look at the + * signature-specification algorithm, and try to do something intelligent. + * -- Kathy Weinhold, CertCo + */ + /* + * Note 2: It seems that the mentioned passage from RFC 2560 (section + * 4.2.1) is open for interpretation. I've done tests against another + * responder, and found that it doesn't do the double hashing that the RFC + * seems to say one should. Therefore, all relevant functions take a flag + * saying which variant should be used. -- Richard Levitte, OpenSSL team + * and CeloCom + */ +typedef struct ocsp_basic_response_st { + OCSP_RESPDATA *tbsResponseData; + X509_ALGOR *signatureAlgorithm; + ASN1_BIT_STRING *signature; + STACK_OF(X509) *certs; +} OCSP_BASICRESP; + +/*- + * CRLReason ::= ENUMERATED { + * unspecified (0), + * keyCompromise (1), + * cACompromise (2), + * affiliationChanged (3), + * superseded (4), + * cessationOfOperation (5), + * certificateHold (6), + * removeFromCRL (8) } + */ +# define OCSP_REVOKED_STATUS_NOSTATUS -1 +# define OCSP_REVOKED_STATUS_UNSPECIFIED 0 +# define OCSP_REVOKED_STATUS_KEYCOMPROMISE 1 +# define OCSP_REVOKED_STATUS_CACOMPROMISE 2 +# define OCSP_REVOKED_STATUS_AFFILIATIONCHANGED 3 +# define OCSP_REVOKED_STATUS_SUPERSEDED 4 +# define OCSP_REVOKED_STATUS_CESSATIONOFOPERATION 5 +# define OCSP_REVOKED_STATUS_CERTIFICATEHOLD 6 +# define OCSP_REVOKED_STATUS_REMOVEFROMCRL 8 + +/*- + * CrlID ::= SEQUENCE { + * crlUrl [0] EXPLICIT IA5String OPTIONAL, + * crlNum [1] EXPLICIT INTEGER OPTIONAL, + * crlTime [2] EXPLICIT GeneralizedTime OPTIONAL } + */ +typedef struct ocsp_crl_id_st { + ASN1_IA5STRING *crlUrl; + ASN1_INTEGER *crlNum; + ASN1_GENERALIZEDTIME *crlTime; +} OCSP_CRLID; + +/*- + * ServiceLocator ::= SEQUENCE { + * issuer Name, + * locator AuthorityInfoAccessSyntax OPTIONAL } + */ +typedef struct ocsp_service_locator_st { + X509_NAME *issuer; + STACK_OF(ACCESS_DESCRIPTION) *locator; +} OCSP_SERVICELOC; + +# define PEM_STRING_OCSP_REQUEST "OCSP REQUEST" +# define PEM_STRING_OCSP_RESPONSE "OCSP RESPONSE" + +# define d2i_OCSP_REQUEST_bio(bp,p) ASN1_d2i_bio_of(OCSP_REQUEST,OCSP_REQUEST_new,d2i_OCSP_REQUEST,bp,p) + +# define d2i_OCSP_RESPONSE_bio(bp,p) ASN1_d2i_bio_of(OCSP_RESPONSE,OCSP_RESPONSE_new,d2i_OCSP_RESPONSE,bp,p) + +# define PEM_read_bio_OCSP_REQUEST(bp,x,cb) (OCSP_REQUEST *)PEM_ASN1_read_bio( \ + (char *(*)())d2i_OCSP_REQUEST,PEM_STRING_OCSP_REQUEST,bp,(char **)x,cb,NULL) + +# define PEM_read_bio_OCSP_RESPONSE(bp,x,cb)(OCSP_RESPONSE *)PEM_ASN1_read_bio(\ + (char *(*)())d2i_OCSP_RESPONSE,PEM_STRING_OCSP_RESPONSE,bp,(char **)x,cb,NULL) + +# define PEM_write_bio_OCSP_REQUEST(bp,o) \ + PEM_ASN1_write_bio((int (*)())i2d_OCSP_REQUEST,PEM_STRING_OCSP_REQUEST,\ + bp,(char *)o, NULL,NULL,0,NULL,NULL) + +# define PEM_write_bio_OCSP_RESPONSE(bp,o) \ + PEM_ASN1_write_bio((int (*)())i2d_OCSP_RESPONSE,PEM_STRING_OCSP_RESPONSE,\ + bp,(char *)o, NULL,NULL,0,NULL,NULL) + +# define i2d_OCSP_RESPONSE_bio(bp,o) ASN1_i2d_bio_of(OCSP_RESPONSE,i2d_OCSP_RESPONSE,bp,o) + +# define i2d_OCSP_REQUEST_bio(bp,o) ASN1_i2d_bio_of(OCSP_REQUEST,i2d_OCSP_REQUEST,bp,o) + +# define OCSP_REQUEST_sign(o,pkey,md) \ + ASN1_item_sign(ASN1_ITEM_rptr(OCSP_REQINFO),\ + o->optionalSignature->signatureAlgorithm,NULL,\ + o->optionalSignature->signature,o->tbsRequest,pkey,md) + +# define OCSP_BASICRESP_sign(o,pkey,md,d) \ + ASN1_item_sign(ASN1_ITEM_rptr(OCSP_RESPDATA),o->signatureAlgorithm,NULL,\ + o->signature,o->tbsResponseData,pkey,md) + +# define OCSP_REQUEST_verify(a,r) ASN1_item_verify(ASN1_ITEM_rptr(OCSP_REQINFO),\ + a->optionalSignature->signatureAlgorithm,\ + a->optionalSignature->signature,a->tbsRequest,r) + +# define OCSP_BASICRESP_verify(a,r,d) ASN1_item_verify(ASN1_ITEM_rptr(OCSP_RESPDATA),\ + a->signatureAlgorithm,a->signature,a->tbsResponseData,r) + +# define ASN1_BIT_STRING_digest(data,type,md,len) \ + ASN1_item_digest(ASN1_ITEM_rptr(ASN1_BIT_STRING),type,data,md,len) + +# define OCSP_CERTSTATUS_dup(cs)\ + (OCSP_CERTSTATUS*)ASN1_dup((int(*)())i2d_OCSP_CERTSTATUS,\ + (char *(*)())d2i_OCSP_CERTSTATUS,(char *)(cs)) + +OCSP_CERTID *OCSP_CERTID_dup(OCSP_CERTID *id); + +OCSP_RESPONSE *OCSP_sendreq_bio(BIO *b, const char *path, OCSP_REQUEST *req); +OCSP_REQ_CTX *OCSP_sendreq_new(BIO *io, const char *path, OCSP_REQUEST *req, + int maxline); +int OCSP_REQ_CTX_nbio(OCSP_REQ_CTX *rctx); +int OCSP_sendreq_nbio(OCSP_RESPONSE **presp, OCSP_REQ_CTX *rctx); +OCSP_REQ_CTX *OCSP_REQ_CTX_new(BIO *io, int maxline); +void OCSP_REQ_CTX_free(OCSP_REQ_CTX *rctx); +void OCSP_set_max_response_length(OCSP_REQ_CTX *rctx, unsigned long len); +int OCSP_REQ_CTX_i2d(OCSP_REQ_CTX *rctx, const ASN1_ITEM *it, + ASN1_VALUE *val); +int OCSP_REQ_CTX_nbio_d2i(OCSP_REQ_CTX *rctx, ASN1_VALUE **pval, + const ASN1_ITEM *it); +BIO *OCSP_REQ_CTX_get0_mem_bio(OCSP_REQ_CTX *rctx); +int OCSP_REQ_CTX_i2d(OCSP_REQ_CTX *rctx, const ASN1_ITEM *it, + ASN1_VALUE *val); +int OCSP_REQ_CTX_http(OCSP_REQ_CTX *rctx, const char *op, const char *path); +int OCSP_REQ_CTX_set1_req(OCSP_REQ_CTX *rctx, OCSP_REQUEST *req); +int OCSP_REQ_CTX_add1_header(OCSP_REQ_CTX *rctx, + const char *name, const char *value); + +OCSP_CERTID *OCSP_cert_to_id(const EVP_MD *dgst, X509 *subject, X509 *issuer); + +OCSP_CERTID *OCSP_cert_id_new(const EVP_MD *dgst, + X509_NAME *issuerName, + ASN1_BIT_STRING *issuerKey, + ASN1_INTEGER *serialNumber); + +OCSP_ONEREQ *OCSP_request_add0_id(OCSP_REQUEST *req, OCSP_CERTID *cid); + +int OCSP_request_add1_nonce(OCSP_REQUEST *req, unsigned char *val, int len); +int OCSP_basic_add1_nonce(OCSP_BASICRESP *resp, unsigned char *val, int len); +int OCSP_check_nonce(OCSP_REQUEST *req, OCSP_BASICRESP *bs); +int OCSP_copy_nonce(OCSP_BASICRESP *resp, OCSP_REQUEST *req); + +int OCSP_request_set1_name(OCSP_REQUEST *req, X509_NAME *nm); +int OCSP_request_add1_cert(OCSP_REQUEST *req, X509 *cert); + +int OCSP_request_sign(OCSP_REQUEST *req, + X509 *signer, + EVP_PKEY *key, + const EVP_MD *dgst, + STACK_OF(X509) *certs, unsigned long flags); + +int OCSP_response_status(OCSP_RESPONSE *resp); +OCSP_BASICRESP *OCSP_response_get1_basic(OCSP_RESPONSE *resp); + +int OCSP_resp_count(OCSP_BASICRESP *bs); +OCSP_SINGLERESP *OCSP_resp_get0(OCSP_BASICRESP *bs, int idx); +int OCSP_resp_find(OCSP_BASICRESP *bs, OCSP_CERTID *id, int last); +int OCSP_single_get0_status(OCSP_SINGLERESP *single, int *reason, + ASN1_GENERALIZEDTIME **revtime, + ASN1_GENERALIZEDTIME **thisupd, + ASN1_GENERALIZEDTIME **nextupd); +int OCSP_resp_find_status(OCSP_BASICRESP *bs, OCSP_CERTID *id, int *status, + int *reason, + ASN1_GENERALIZEDTIME **revtime, + ASN1_GENERALIZEDTIME **thisupd, + ASN1_GENERALIZEDTIME **nextupd); +int OCSP_check_validity(ASN1_GENERALIZEDTIME *thisupd, + ASN1_GENERALIZEDTIME *nextupd, long sec, long maxsec); + +int OCSP_request_verify(OCSP_REQUEST *req, STACK_OF(X509) *certs, + X509_STORE *store, unsigned long flags); + +int OCSP_parse_url(const char *url, char **phost, char **pport, char **ppath, + int *pssl); + +int OCSP_id_issuer_cmp(OCSP_CERTID *a, OCSP_CERTID *b); +int OCSP_id_cmp(OCSP_CERTID *a, OCSP_CERTID *b); + +int OCSP_request_onereq_count(OCSP_REQUEST *req); +OCSP_ONEREQ *OCSP_request_onereq_get0(OCSP_REQUEST *req, int i); +OCSP_CERTID *OCSP_onereq_get0_id(OCSP_ONEREQ *one); +int OCSP_id_get0_info(ASN1_OCTET_STRING **piNameHash, ASN1_OBJECT **pmd, + ASN1_OCTET_STRING **pikeyHash, + ASN1_INTEGER **pserial, OCSP_CERTID *cid); +int OCSP_request_is_signed(OCSP_REQUEST *req); +OCSP_RESPONSE *OCSP_response_create(int status, OCSP_BASICRESP *bs); +OCSP_SINGLERESP *OCSP_basic_add1_status(OCSP_BASICRESP *rsp, + OCSP_CERTID *cid, + int status, int reason, + ASN1_TIME *revtime, + ASN1_TIME *thisupd, + ASN1_TIME *nextupd); +int OCSP_basic_add1_cert(OCSP_BASICRESP *resp, X509 *cert); +int OCSP_basic_sign(OCSP_BASICRESP *brsp, + X509 *signer, EVP_PKEY *key, const EVP_MD *dgst, + STACK_OF(X509) *certs, unsigned long flags); + +X509_EXTENSION *OCSP_crlID_new(char *url, long *n, char *tim); + +X509_EXTENSION *OCSP_accept_responses_new(char **oids); + +X509_EXTENSION *OCSP_archive_cutoff_new(char *tim); + +X509_EXTENSION *OCSP_url_svcloc_new(X509_NAME *issuer, char **urls); + +int OCSP_REQUEST_get_ext_count(OCSP_REQUEST *x); +int OCSP_REQUEST_get_ext_by_NID(OCSP_REQUEST *x, int nid, int lastpos); +int OCSP_REQUEST_get_ext_by_OBJ(OCSP_REQUEST *x, ASN1_OBJECT *obj, + int lastpos); +int OCSP_REQUEST_get_ext_by_critical(OCSP_REQUEST *x, int crit, int lastpos); +X509_EXTENSION *OCSP_REQUEST_get_ext(OCSP_REQUEST *x, int loc); +X509_EXTENSION *OCSP_REQUEST_delete_ext(OCSP_REQUEST *x, int loc); +void *OCSP_REQUEST_get1_ext_d2i(OCSP_REQUEST *x, int nid, int *crit, + int *idx); +int OCSP_REQUEST_add1_ext_i2d(OCSP_REQUEST *x, int nid, void *value, int crit, + unsigned long flags); +int OCSP_REQUEST_add_ext(OCSP_REQUEST *x, X509_EXTENSION *ex, int loc); + +int OCSP_ONEREQ_get_ext_count(OCSP_ONEREQ *x); +int OCSP_ONEREQ_get_ext_by_NID(OCSP_ONEREQ *x, int nid, int lastpos); +int OCSP_ONEREQ_get_ext_by_OBJ(OCSP_ONEREQ *x, ASN1_OBJECT *obj, int lastpos); +int OCSP_ONEREQ_get_ext_by_critical(OCSP_ONEREQ *x, int crit, int lastpos); +X509_EXTENSION *OCSP_ONEREQ_get_ext(OCSP_ONEREQ *x, int loc); +X509_EXTENSION *OCSP_ONEREQ_delete_ext(OCSP_ONEREQ *x, int loc); +void *OCSP_ONEREQ_get1_ext_d2i(OCSP_ONEREQ *x, int nid, int *crit, int *idx); +int OCSP_ONEREQ_add1_ext_i2d(OCSP_ONEREQ *x, int nid, void *value, int crit, + unsigned long flags); +int OCSP_ONEREQ_add_ext(OCSP_ONEREQ *x, X509_EXTENSION *ex, int loc); + +int OCSP_BASICRESP_get_ext_count(OCSP_BASICRESP *x); +int OCSP_BASICRESP_get_ext_by_NID(OCSP_BASICRESP *x, int nid, int lastpos); +int OCSP_BASICRESP_get_ext_by_OBJ(OCSP_BASICRESP *x, ASN1_OBJECT *obj, + int lastpos); +int OCSP_BASICRESP_get_ext_by_critical(OCSP_BASICRESP *x, int crit, + int lastpos); +X509_EXTENSION *OCSP_BASICRESP_get_ext(OCSP_BASICRESP *x, int loc); +X509_EXTENSION *OCSP_BASICRESP_delete_ext(OCSP_BASICRESP *x, int loc); +void *OCSP_BASICRESP_get1_ext_d2i(OCSP_BASICRESP *x, int nid, int *crit, + int *idx); +int OCSP_BASICRESP_add1_ext_i2d(OCSP_BASICRESP *x, int nid, void *value, + int crit, unsigned long flags); +int OCSP_BASICRESP_add_ext(OCSP_BASICRESP *x, X509_EXTENSION *ex, int loc); + +int OCSP_SINGLERESP_get_ext_count(OCSP_SINGLERESP *x); +int OCSP_SINGLERESP_get_ext_by_NID(OCSP_SINGLERESP *x, int nid, int lastpos); +int OCSP_SINGLERESP_get_ext_by_OBJ(OCSP_SINGLERESP *x, ASN1_OBJECT *obj, + int lastpos); +int OCSP_SINGLERESP_get_ext_by_critical(OCSP_SINGLERESP *x, int crit, + int lastpos); +X509_EXTENSION *OCSP_SINGLERESP_get_ext(OCSP_SINGLERESP *x, int loc); +X509_EXTENSION *OCSP_SINGLERESP_delete_ext(OCSP_SINGLERESP *x, int loc); +void *OCSP_SINGLERESP_get1_ext_d2i(OCSP_SINGLERESP *x, int nid, int *crit, + int *idx); +int OCSP_SINGLERESP_add1_ext_i2d(OCSP_SINGLERESP *x, int nid, void *value, + int crit, unsigned long flags); +int OCSP_SINGLERESP_add_ext(OCSP_SINGLERESP *x, X509_EXTENSION *ex, int loc); + +DECLARE_ASN1_FUNCTIONS(OCSP_SINGLERESP) +DECLARE_ASN1_FUNCTIONS(OCSP_CERTSTATUS) +DECLARE_ASN1_FUNCTIONS(OCSP_REVOKEDINFO) +DECLARE_ASN1_FUNCTIONS(OCSP_BASICRESP) +DECLARE_ASN1_FUNCTIONS(OCSP_RESPDATA) +DECLARE_ASN1_FUNCTIONS(OCSP_RESPID) +DECLARE_ASN1_FUNCTIONS(OCSP_RESPONSE) +DECLARE_ASN1_FUNCTIONS(OCSP_RESPBYTES) +DECLARE_ASN1_FUNCTIONS(OCSP_ONEREQ) +DECLARE_ASN1_FUNCTIONS(OCSP_CERTID) +DECLARE_ASN1_FUNCTIONS(OCSP_REQUEST) +DECLARE_ASN1_FUNCTIONS(OCSP_SIGNATURE) +DECLARE_ASN1_FUNCTIONS(OCSP_REQINFO) +DECLARE_ASN1_FUNCTIONS(OCSP_CRLID) +DECLARE_ASN1_FUNCTIONS(OCSP_SERVICELOC) + +const char *OCSP_response_status_str(long s); +const char *OCSP_cert_status_str(long s); +const char *OCSP_crl_reason_str(long s); + +int OCSP_REQUEST_print(BIO *bp, OCSP_REQUEST *a, unsigned long flags); +int OCSP_RESPONSE_print(BIO *bp, OCSP_RESPONSE *o, unsigned long flags); + +int OCSP_basic_verify(OCSP_BASICRESP *bs, STACK_OF(X509) *certs, + X509_STORE *st, unsigned long flags); + +/* 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_OCSP_strings(void); + +/* Error codes for the OCSP functions. */ + +/* Function codes. */ +# define OCSP_F_ASN1_STRING_ENCODE 100 +# define OCSP_F_D2I_OCSP_NONCE 102 +# define OCSP_F_OCSP_BASIC_ADD1_STATUS 103 +# define OCSP_F_OCSP_BASIC_SIGN 104 +# define OCSP_F_OCSP_BASIC_VERIFY 105 +# define OCSP_F_OCSP_CERT_ID_NEW 101 +# define OCSP_F_OCSP_CHECK_DELEGATED 106 +# define OCSP_F_OCSP_CHECK_IDS 107 +# define OCSP_F_OCSP_CHECK_ISSUER 108 +# define OCSP_F_OCSP_CHECK_VALIDITY 115 +# define OCSP_F_OCSP_MATCH_ISSUERID 109 +# define OCSP_F_OCSP_PARSE_URL 114 +# define OCSP_F_OCSP_REQUEST_SIGN 110 +# define OCSP_F_OCSP_REQUEST_VERIFY 116 +# define OCSP_F_OCSP_RESPONSE_GET1_BASIC 111 +# define OCSP_F_OCSP_SENDREQ_BIO 112 +# define OCSP_F_OCSP_SENDREQ_NBIO 117 +# define OCSP_F_PARSE_HTTP_LINE1 118 +# define OCSP_F_REQUEST_VERIFY 113 + +/* Reason codes. */ +# define OCSP_R_BAD_DATA 100 +# define OCSP_R_CERTIFICATE_VERIFY_ERROR 101 +# define OCSP_R_DIGEST_ERR 102 +# define OCSP_R_ERROR_IN_NEXTUPDATE_FIELD 122 +# define OCSP_R_ERROR_IN_THISUPDATE_FIELD 123 +# define OCSP_R_ERROR_PARSING_URL 121 +# define OCSP_R_MISSING_OCSPSIGNING_USAGE 103 +# define OCSP_R_NEXTUPDATE_BEFORE_THISUPDATE 124 +# define OCSP_R_NOT_BASIC_RESPONSE 104 +# define OCSP_R_NO_CERTIFICATES_IN_CHAIN 105 +# define OCSP_R_NO_CONTENT 106 +# define OCSP_R_NO_PUBLIC_KEY 107 +# define OCSP_R_NO_RESPONSE_DATA 108 +# define OCSP_R_NO_REVOKED_TIME 109 +# define OCSP_R_PRIVATE_KEY_DOES_NOT_MATCH_CERTIFICATE 110 +# define OCSP_R_REQUEST_NOT_SIGNED 128 +# define OCSP_R_RESPONSE_CONTAINS_NO_REVOCATION_DATA 111 +# define OCSP_R_ROOT_CA_NOT_TRUSTED 112 +# define OCSP_R_SERVER_READ_ERROR 113 +# define OCSP_R_SERVER_RESPONSE_ERROR 114 +# define OCSP_R_SERVER_RESPONSE_PARSE_ERROR 115 +# define OCSP_R_SERVER_WRITE_ERROR 116 +# define OCSP_R_SIGNATURE_FAILURE 117 +# define OCSP_R_SIGNER_CERTIFICATE_NOT_FOUND 118 +# define OCSP_R_STATUS_EXPIRED 125 +# define OCSP_R_STATUS_NOT_YET_VALID 126 +# define OCSP_R_STATUS_TOO_OLD 127 +# define OCSP_R_UNKNOWN_MESSAGE_DIGEST 119 +# define OCSP_R_UNKNOWN_NID 120 +# define OCSP_R_UNSUPPORTED_REQUESTORNAME_TYPE 129 + +#ifdef __cplusplus +} +#endif +#endif diff --git a/dependencies/include/openssl/opensslconf.h b/dependencies/include/openssl/opensslconf.h new file mode 100644 index 0000000..53856ec --- /dev/null +++ b/dependencies/include/openssl/opensslconf.h @@ -0,0 +1,277 @@ +/* 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_DOING_MAKEDEPEND + + +#ifndef OPENSSL_NO_APPS +# define OPENSSL_NO_APPS +#endif +#ifndef OPENSSL_NO_EC_NISTP_64_GCC_128 +# define OPENSSL_NO_EC_NISTP_64_GCC_128 +#endif +#ifndef OPENSSL_NO_ENGINE +# define OPENSSL_NO_ENGINE +#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_SSL2 +# define OPENSSL_NO_SSL2 +#endif +#ifndef OPENSSL_NO_STORE +# define OPENSSL_NO_STORE +#endif +#ifndef OPENSSL_NO_UNIT_TEST +# define OPENSSL_NO_UNIT_TEST +#endif +#ifndef OPENSSL_NO_WEAK_SSL_CIPHERS +# define OPENSSL_NO_WEAK_SSL_CIPHERS +#endif + +#endif /* OPENSSL_DOING_MAKEDEPEND */ + +#ifndef OPENSSL_THREADS +# define OPENSSL_THREADS +#endif +#ifndef OPENSSL_NO_ASM +# define OPENSSL_NO_ASM +#endif +#ifndef OPENSSL_NO_DYNAMIC_ENGINE +# define OPENSSL_NO_DYNAMIC_ENGINE +#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_APPS) && !defined(NO_APPS) +# define NO_APPS +# endif +# 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_ENGINE) && !defined(NO_ENGINE) +# define NO_ENGINE +# 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_SSL2) && !defined(NO_SSL2) +# define NO_SSL2 +# 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 +# if defined(OPENSSL_NO_WEAK_SSL_CIPHERS) && !defined(NO_WEAK_SSL_CIPHERS) +# define NO_WEAK_SSL_CIPHERS +# endif +#endif + +/* 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 "/Users/jfmmeyers/Downloads/moonlight-switch-master/dependencies/lib/engines" +#define OPENSSLDIR "/Users/jfmmeyers/Downloads/moonlight-switch-master/dependencies" +#endif +#endif + +#undef OPENSSL_UNISTD +#define OPENSSL_UNISTD + +#undef 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 char +#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 +#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 */ +#define SIXTY_FOUR_BIT_LONG +#undef 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 +#define 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) +#error 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 +#define 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 ) || 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/dependencies/include/openssl/opensslv.h b/dependencies/include/openssl/opensslv.h new file mode 100644 index 0000000..77f124e --- /dev/null +++ b/dependencies/include/openssl/opensslv.h @@ -0,0 +1,97 @@ +#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 0x100020ffL +# ifdef OPENSSL_FIPS +# define OPENSSL_VERSION_TEXT "OpenSSL 1.0.2o-fips 27 Mar 2018" +# else +# define OPENSSL_VERSION_TEXT "OpenSSL 1.0.2o 27 Mar 2018" +# 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/dependencies/include/openssl/ossl_typ.h b/dependencies/include/openssl/ossl_typ.h new file mode 100644 index 0000000..364d262 --- /dev/null +++ b/dependencies/include/openssl/ossl_typ.h @@ -0,0 +1,213 @@ +/* ==================================================================== + * 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 comp_method_st COMP_METHOD; + +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/dependencies/include/openssl/pem.h b/dependencies/include/openssl/pem.h new file mode 100644 index 0000000..aac72fb --- /dev/null +++ b/dependencies/include/openssl/pem.h @@ -0,0 +1,617 @@ +/* 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_HEADER_TOO_LONG 128 +# 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/dependencies/include/openssl/pem2.h b/dependencies/include/openssl/pem2.h new file mode 100644 index 0000000..84897d5 --- /dev/null +++ b/dependencies/include/openssl/pem2.h @@ -0,0 +1,70 @@ +/* ==================================================================== + * 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/dependencies/include/openssl/pkcs12.h b/dependencies/include/openssl/pkcs12.h new file mode 100644 index 0000000..21f1f62 --- /dev/null +++ b/dependencies/include/openssl/pkcs12.h @@ -0,0 +1,342 @@ +/* pkcs12.h */ +/* + * Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL project + * 1999. + */ +/* ==================================================================== + * 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). + * + */ + +#ifndef HEADER_PKCS12_H +# define HEADER_PKCS12_H + +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +# define PKCS12_KEY_ID 1 +# define PKCS12_IV_ID 2 +# define PKCS12_MAC_ID 3 + +/* Default iteration count */ +# ifndef PKCS12_DEFAULT_ITER +# define PKCS12_DEFAULT_ITER PKCS5_DEFAULT_ITER +# endif + +# define PKCS12_MAC_KEY_LENGTH 20 + +# define PKCS12_SALT_LEN 8 + +/* Uncomment out next line for unicode password and names, otherwise ASCII */ + +/* + * #define PBE_UNICODE + */ + +# ifdef PBE_UNICODE +# define PKCS12_key_gen PKCS12_key_gen_uni +# define PKCS12_add_friendlyname PKCS12_add_friendlyname_uni +# else +# define PKCS12_key_gen PKCS12_key_gen_asc +# define PKCS12_add_friendlyname PKCS12_add_friendlyname_asc +# endif + +/* MS key usage constants */ + +# define KEY_EX 0x10 +# define KEY_SIG 0x80 + +typedef struct { + X509_SIG *dinfo; + ASN1_OCTET_STRING *salt; + ASN1_INTEGER *iter; /* defaults to 1 */ +} PKCS12_MAC_DATA; + +typedef struct { + ASN1_INTEGER *version; + PKCS12_MAC_DATA *mac; + PKCS7 *authsafes; +} PKCS12; + +typedef struct { + ASN1_OBJECT *type; + union { + struct pkcs12_bag_st *bag; /* secret, crl and certbag */ + struct pkcs8_priv_key_info_st *keybag; /* keybag */ + X509_SIG *shkeybag; /* shrouded key bag */ + STACK_OF(PKCS12_SAFEBAG) *safes; + ASN1_TYPE *other; + } value; + STACK_OF(X509_ATTRIBUTE) *attrib; +} PKCS12_SAFEBAG; + +DECLARE_STACK_OF(PKCS12_SAFEBAG) +DECLARE_ASN1_SET_OF(PKCS12_SAFEBAG) +DECLARE_PKCS12_STACK_OF(PKCS12_SAFEBAG) + +typedef struct pkcs12_bag_st { + ASN1_OBJECT *type; + union { + ASN1_OCTET_STRING *x509cert; + ASN1_OCTET_STRING *x509crl; + ASN1_OCTET_STRING *octet; + ASN1_IA5STRING *sdsicert; + ASN1_TYPE *other; /* Secret or other bag */ + } value; +} PKCS12_BAGS; + +# define PKCS12_ERROR 0 +# define PKCS12_OK 1 + +/* Compatibility macros */ + +# define M_PKCS12_x5092certbag PKCS12_x5092certbag +# define M_PKCS12_x509crl2certbag PKCS12_x509crl2certbag + +# define M_PKCS12_certbag2x509 PKCS12_certbag2x509 +# define M_PKCS12_certbag2x509crl PKCS12_certbag2x509crl + +# define M_PKCS12_unpack_p7data PKCS12_unpack_p7data +# define M_PKCS12_pack_authsafes PKCS12_pack_authsafes +# define M_PKCS12_unpack_authsafes PKCS12_unpack_authsafes +# define M_PKCS12_unpack_p7encdata PKCS12_unpack_p7encdata + +# define M_PKCS12_decrypt_skey PKCS12_decrypt_skey +# define M_PKCS8_decrypt PKCS8_decrypt + +# define M_PKCS12_bag_type(bg) OBJ_obj2nid((bg)->type) +# define M_PKCS12_cert_bag_type(bg) OBJ_obj2nid((bg)->value.bag->type) +# define M_PKCS12_crl_bag_type M_PKCS12_cert_bag_type + +# define PKCS12_get_attr(bag, attr_nid) \ + PKCS12_get_attr_gen(bag->attrib, attr_nid) + +# define PKCS8_get_attr(p8, attr_nid) \ + PKCS12_get_attr_gen(p8->attributes, attr_nid) + +# define PKCS12_mac_present(p12) ((p12)->mac ? 1 : 0) + +PKCS12_SAFEBAG *PKCS12_x5092certbag(X509 *x509); +PKCS12_SAFEBAG *PKCS12_x509crl2certbag(X509_CRL *crl); +X509 *PKCS12_certbag2x509(PKCS12_SAFEBAG *bag); +X509_CRL *PKCS12_certbag2x509crl(PKCS12_SAFEBAG *bag); + +PKCS12_SAFEBAG *PKCS12_item_pack_safebag(void *obj, const ASN1_ITEM *it, + int nid1, int nid2); +PKCS12_SAFEBAG *PKCS12_MAKE_KEYBAG(PKCS8_PRIV_KEY_INFO *p8); +PKCS8_PRIV_KEY_INFO *PKCS8_decrypt(X509_SIG *p8, const char *pass, + int passlen); +PKCS8_PRIV_KEY_INFO *PKCS12_decrypt_skey(PKCS12_SAFEBAG *bag, + const char *pass, int passlen); +X509_SIG *PKCS8_encrypt(int pbe_nid, const EVP_CIPHER *cipher, + const char *pass, int passlen, unsigned char *salt, + int saltlen, int iter, PKCS8_PRIV_KEY_INFO *p8); +PKCS12_SAFEBAG *PKCS12_MAKE_SHKEYBAG(int pbe_nid, const char *pass, + int passlen, unsigned char *salt, + int saltlen, int iter, + PKCS8_PRIV_KEY_INFO *p8); +PKCS7 *PKCS12_pack_p7data(STACK_OF(PKCS12_SAFEBAG) *sk); +STACK_OF(PKCS12_SAFEBAG) *PKCS12_unpack_p7data(PKCS7 *p7); +PKCS7 *PKCS12_pack_p7encdata(int pbe_nid, const char *pass, int passlen, + unsigned char *salt, int saltlen, int iter, + STACK_OF(PKCS12_SAFEBAG) *bags); +STACK_OF(PKCS12_SAFEBAG) *PKCS12_unpack_p7encdata(PKCS7 *p7, const char *pass, + int passlen); + +int PKCS12_pack_authsafes(PKCS12 *p12, STACK_OF(PKCS7) *safes); +STACK_OF(PKCS7) *PKCS12_unpack_authsafes(PKCS12 *p12); + +int PKCS12_add_localkeyid(PKCS12_SAFEBAG *bag, unsigned char *name, + int namelen); +int PKCS12_add_friendlyname_asc(PKCS12_SAFEBAG *bag, const char *name, + int namelen); +int PKCS12_add_CSPName_asc(PKCS12_SAFEBAG *bag, const char *name, + int namelen); +int PKCS12_add_friendlyname_uni(PKCS12_SAFEBAG *bag, + const unsigned char *name, int namelen); +int PKCS8_add_keyusage(PKCS8_PRIV_KEY_INFO *p8, int usage); +ASN1_TYPE *PKCS12_get_attr_gen(STACK_OF(X509_ATTRIBUTE) *attrs, int attr_nid); +char *PKCS12_get_friendlyname(PKCS12_SAFEBAG *bag); +unsigned char *PKCS12_pbe_crypt(X509_ALGOR *algor, const char *pass, + int passlen, unsigned char *in, int inlen, + unsigned char **data, int *datalen, + int en_de); +void *PKCS12_item_decrypt_d2i(X509_ALGOR *algor, const ASN1_ITEM *it, + const char *pass, int passlen, + ASN1_OCTET_STRING *oct, int zbuf); +ASN1_OCTET_STRING *PKCS12_item_i2d_encrypt(X509_ALGOR *algor, + const ASN1_ITEM *it, + const char *pass, int passlen, + void *obj, int zbuf); +PKCS12 *PKCS12_init(int mode); +int PKCS12_key_gen_asc(const char *pass, int passlen, unsigned char *salt, + int saltlen, int id, int iter, int n, + unsigned char *out, const EVP_MD *md_type); +int PKCS12_key_gen_uni(unsigned char *pass, int passlen, unsigned char *salt, + int saltlen, int id, int iter, int n, + unsigned char *out, const EVP_MD *md_type); +int PKCS12_PBE_keyivgen(EVP_CIPHER_CTX *ctx, const char *pass, int passlen, + ASN1_TYPE *param, const EVP_CIPHER *cipher, + const EVP_MD *md_type, int en_de); +int PKCS12_gen_mac(PKCS12 *p12, const char *pass, int passlen, + unsigned char *mac, unsigned int *maclen); +int PKCS12_verify_mac(PKCS12 *p12, const char *pass, int passlen); +int PKCS12_set_mac(PKCS12 *p12, const char *pass, int passlen, + unsigned char *salt, int saltlen, int iter, + const EVP_MD *md_type); +int PKCS12_setup_mac(PKCS12 *p12, int iter, unsigned char *salt, + int saltlen, const EVP_MD *md_type); +unsigned char *OPENSSL_asc2uni(const char *asc, int asclen, + unsigned char **uni, int *unilen); +char *OPENSSL_uni2asc(unsigned char *uni, int unilen); + +DECLARE_ASN1_FUNCTIONS(PKCS12) +DECLARE_ASN1_FUNCTIONS(PKCS12_MAC_DATA) +DECLARE_ASN1_FUNCTIONS(PKCS12_SAFEBAG) +DECLARE_ASN1_FUNCTIONS(PKCS12_BAGS) + +DECLARE_ASN1_ITEM(PKCS12_SAFEBAGS) +DECLARE_ASN1_ITEM(PKCS12_AUTHSAFES) + +void PKCS12_PBE_add(void); +int PKCS12_parse(PKCS12 *p12, const char *pass, EVP_PKEY **pkey, X509 **cert, + STACK_OF(X509) **ca); +PKCS12 *PKCS12_create(char *pass, char *name, EVP_PKEY *pkey, X509 *cert, + STACK_OF(X509) *ca, int nid_key, int nid_cert, int iter, + int mac_iter, int keytype); + +PKCS12_SAFEBAG *PKCS12_add_cert(STACK_OF(PKCS12_SAFEBAG) **pbags, X509 *cert); +PKCS12_SAFEBAG *PKCS12_add_key(STACK_OF(PKCS12_SAFEBAG) **pbags, + EVP_PKEY *key, int key_usage, int iter, + int key_nid, char *pass); +int PKCS12_add_safe(STACK_OF(PKCS7) **psafes, STACK_OF(PKCS12_SAFEBAG) *bags, + int safe_nid, int iter, char *pass); +PKCS12 *PKCS12_add_safes(STACK_OF(PKCS7) *safes, int p7_nid); + +int i2d_PKCS12_bio(BIO *bp, PKCS12 *p12); +int i2d_PKCS12_fp(FILE *fp, PKCS12 *p12); +PKCS12 *d2i_PKCS12_bio(BIO *bp, PKCS12 **p12); +PKCS12 *d2i_PKCS12_fp(FILE *fp, PKCS12 **p12); +int PKCS12_newpass(PKCS12 *p12, const char *oldpass, const char *newpass); + +/* 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_PKCS12_strings(void); + +/* Error codes for the PKCS12 functions. */ + +/* Function codes. */ +# define PKCS12_F_PARSE_BAG 129 +# define PKCS12_F_PARSE_BAGS 103 +# define PKCS12_F_PKCS12_ADD_FRIENDLYNAME 100 +# define PKCS12_F_PKCS12_ADD_FRIENDLYNAME_ASC 127 +# define PKCS12_F_PKCS12_ADD_FRIENDLYNAME_UNI 102 +# define PKCS12_F_PKCS12_ADD_LOCALKEYID 104 +# define PKCS12_F_PKCS12_CREATE 105 +# define PKCS12_F_PKCS12_GEN_MAC 107 +# define PKCS12_F_PKCS12_INIT 109 +# define PKCS12_F_PKCS12_ITEM_DECRYPT_D2I 106 +# define PKCS12_F_PKCS12_ITEM_I2D_ENCRYPT 108 +# define PKCS12_F_PKCS12_ITEM_PACK_SAFEBAG 117 +# define PKCS12_F_PKCS12_KEY_GEN_ASC 110 +# define PKCS12_F_PKCS12_KEY_GEN_UNI 111 +# define PKCS12_F_PKCS12_MAKE_KEYBAG 112 +# define PKCS12_F_PKCS12_MAKE_SHKEYBAG 113 +# define PKCS12_F_PKCS12_NEWPASS 128 +# define PKCS12_F_PKCS12_PACK_P7DATA 114 +# define PKCS12_F_PKCS12_PACK_P7ENCDATA 115 +# define PKCS12_F_PKCS12_PARSE 118 +# define PKCS12_F_PKCS12_PBE_CRYPT 119 +# define PKCS12_F_PKCS12_PBE_KEYIVGEN 120 +# define PKCS12_F_PKCS12_SETUP_MAC 122 +# define PKCS12_F_PKCS12_SET_MAC 123 +# define PKCS12_F_PKCS12_UNPACK_AUTHSAFES 130 +# define PKCS12_F_PKCS12_UNPACK_P7DATA 131 +# define PKCS12_F_PKCS12_VERIFY_MAC 126 +# define PKCS12_F_PKCS8_ADD_KEYUSAGE 124 +# define PKCS12_F_PKCS8_ENCRYPT 125 + +/* Reason codes. */ +# define PKCS12_R_CANT_PACK_STRUCTURE 100 +# define PKCS12_R_CONTENT_TYPE_NOT_DATA 121 +# define PKCS12_R_DECODE_ERROR 101 +# define PKCS12_R_ENCODE_ERROR 102 +# define PKCS12_R_ENCRYPT_ERROR 103 +# define PKCS12_R_ERROR_SETTING_ENCRYPTED_DATA_TYPE 120 +# define PKCS12_R_INVALID_NULL_ARGUMENT 104 +# define PKCS12_R_INVALID_NULL_PKCS12_POINTER 105 +# define PKCS12_R_IV_GEN_ERROR 106 +# define PKCS12_R_KEY_GEN_ERROR 107 +# define PKCS12_R_MAC_ABSENT 108 +# define PKCS12_R_MAC_GENERATION_ERROR 109 +# define PKCS12_R_MAC_SETUP_ERROR 110 +# define PKCS12_R_MAC_STRING_SET_ERROR 111 +# define PKCS12_R_MAC_VERIFY_ERROR 112 +# define PKCS12_R_MAC_VERIFY_FAILURE 113 +# define PKCS12_R_PARSE_ERROR 114 +# define PKCS12_R_PKCS12_ALGOR_CIPHERINIT_ERROR 115 +# define PKCS12_R_PKCS12_CIPHERFINAL_ERROR 116 +# define PKCS12_R_PKCS12_PBE_CRYPT_ERROR 117 +# define PKCS12_R_UNKNOWN_DIGEST_ALGORITHM 118 +# define PKCS12_R_UNSUPPORTED_PKCS12_MODE 119 + +#ifdef __cplusplus +} +#endif +#endif diff --git a/dependencies/include/openssl/pkcs7.h b/dependencies/include/openssl/pkcs7.h new file mode 100644 index 0000000..b51b386 --- /dev/null +++ b/dependencies/include/openssl/pkcs7.h @@ -0,0 +1,481 @@ +/* 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/dependencies/include/openssl/pqueue.h b/dependencies/include/openssl/pqueue.h new file mode 100644 index 0000000..d40d9c7 --- /dev/null +++ b/dependencies/include/openssl/pqueue.h @@ -0,0 +1,99 @@ +/* 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/dependencies/include/openssl/rand.h b/dependencies/include/openssl/rand.h new file mode 100644 index 0000000..2553afd --- /dev/null +++ b/dependencies/include/openssl/rand.h @@ -0,0 +1,150 @@ +/* crypto/rand/rand.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_RAND_H +# define HEADER_RAND_H + +# include +# include +# include + +# if defined(OPENSSL_SYS_WINDOWS) +# include +# endif + +#ifdef __cplusplus +extern "C" { +#endif + +# if defined(OPENSSL_FIPS) +# define FIPS_RAND_SIZE_T size_t +# endif + +/* Already defined in ossl_typ.h */ +/* typedef struct rand_meth_st RAND_METHOD; */ + +struct rand_meth_st { + void (*seed) (const void *buf, int num); + int (*bytes) (unsigned char *buf, int num); + void (*cleanup) (void); + void (*add) (const void *buf, int num, double entropy); + int (*pseudorand) (unsigned char *buf, int num); + int (*status) (void); +}; + +# ifdef BN_DEBUG +extern int rand_predictable; +# endif + +int RAND_set_rand_method(const RAND_METHOD *meth); +const RAND_METHOD *RAND_get_rand_method(void); +# ifndef OPENSSL_NO_ENGINE +int RAND_set_rand_engine(ENGINE *engine); +# endif +RAND_METHOD *RAND_SSLeay(void); +void RAND_cleanup(void); +int RAND_bytes(unsigned char *buf, int num); +int RAND_pseudo_bytes(unsigned char *buf, int num); +void RAND_seed(const void *buf, int num); +void RAND_add(const void *buf, int num, double entropy); +int RAND_load_file(const char *file, long max_bytes); +int RAND_write_file(const char *file); +const char *RAND_file_name(char *file, size_t num); +int RAND_status(void); +int RAND_query_egd_bytes(const char *path, unsigned char *buf, int bytes); +int RAND_egd(const char *path); +int RAND_egd_bytes(const char *path, int bytes); +int RAND_poll(void); + +# if defined(OPENSSL_SYS_WINDOWS) || defined(OPENSSL_SYS_WIN32) + +void RAND_screen(void); +int RAND_event(UINT, WPARAM, LPARAM); + +# endif + +# ifdef OPENSSL_FIPS +void RAND_set_fips_drbg_type(int type, int flags); +int RAND_init_fips(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_RAND_strings(void); + +/* Error codes for the RAND functions. */ + +/* Function codes. */ +# define RAND_F_RAND_GET_RAND_METHOD 101 +# define RAND_F_RAND_INIT_FIPS 102 +# define RAND_F_SSLEAY_RAND_BYTES 100 + +/* Reason codes. */ +# define RAND_R_DUAL_EC_DRBG_DISABLED 104 +# define RAND_R_ERROR_INITIALISING_DRBG 102 +# define RAND_R_ERROR_INSTANTIATING_DRBG 103 +# define RAND_R_NO_FIPS_RANDOM_METHOD_SET 101 +# define RAND_R_PRNG_NOT_SEEDED 100 + +#ifdef __cplusplus +} +#endif +#endif diff --git a/dependencies/include/openssl/rc2.h b/dependencies/include/openssl/rc2.h new file mode 100644 index 0000000..29d02d7 --- /dev/null +++ b/dependencies/include/openssl/rc2.h @@ -0,0 +1,103 @@ +/* crypto/rc2/rc2.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_RC2_H +# define HEADER_RC2_H + +# include /* OPENSSL_NO_RC2, RC2_INT */ +# ifdef OPENSSL_NO_RC2 +# error RC2 is disabled. +# endif + +# define RC2_ENCRYPT 1 +# define RC2_DECRYPT 0 + +# define RC2_BLOCK 8 +# define RC2_KEY_LENGTH 16 + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct rc2_key_st { + RC2_INT data[64]; +} RC2_KEY; + +# ifdef OPENSSL_FIPS +void private_RC2_set_key(RC2_KEY *key, int len, const unsigned char *data, + int bits); +# endif +void RC2_set_key(RC2_KEY *key, int len, const unsigned char *data, int bits); +void RC2_ecb_encrypt(const unsigned char *in, unsigned char *out, + RC2_KEY *key, int enc); +void RC2_encrypt(unsigned long *data, RC2_KEY *key); +void RC2_decrypt(unsigned long *data, RC2_KEY *key); +void RC2_cbc_encrypt(const unsigned char *in, unsigned char *out, long length, + RC2_KEY *ks, unsigned char *iv, int enc); +void RC2_cfb64_encrypt(const unsigned char *in, unsigned char *out, + long length, RC2_KEY *schedule, unsigned char *ivec, + int *num, int enc); +void RC2_ofb64_encrypt(const unsigned char *in, unsigned char *out, + long length, RC2_KEY *schedule, unsigned char *ivec, + int *num); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/dependencies/include/openssl/rc4.h b/dependencies/include/openssl/rc4.h new file mode 100644 index 0000000..39162b1 --- /dev/null +++ b/dependencies/include/openssl/rc4.h @@ -0,0 +1,88 @@ +/* crypto/rc4/rc4.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_RC4_H +# define HEADER_RC4_H + +# include /* OPENSSL_NO_RC4, RC4_INT */ +# ifdef OPENSSL_NO_RC4 +# error RC4 is disabled. +# endif + +# include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct rc4_key_st { + RC4_INT x, y; + RC4_INT data[256]; +} RC4_KEY; + +const char *RC4_options(void); +void RC4_set_key(RC4_KEY *key, int len, const unsigned char *data); +void private_RC4_set_key(RC4_KEY *key, int len, const unsigned char *data); +void RC4(RC4_KEY *key, size_t len, const unsigned char *indata, + unsigned char *outdata); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/dependencies/include/openssl/ripemd.h b/dependencies/include/openssl/ripemd.h new file mode 100644 index 0000000..b88ef25 --- /dev/null +++ b/dependencies/include/openssl/ripemd.h @@ -0,0 +1,105 @@ +/* crypto/ripemd/ripemd.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_RIPEMD_H +# define HEADER_RIPEMD_H + +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +# ifdef OPENSSL_NO_RIPEMD +# error RIPEMD is disabled. +# endif + +# if defined(__LP32__) +# define RIPEMD160_LONG unsigned long +# elif defined(OPENSSL_SYS_CRAY) || defined(__ILP64__) +# define RIPEMD160_LONG unsigned long +# define RIPEMD160_LONG_LOG2 3 +# else +# define RIPEMD160_LONG unsigned int +# endif + +# define RIPEMD160_CBLOCK 64 +# define RIPEMD160_LBLOCK (RIPEMD160_CBLOCK/4) +# define RIPEMD160_DIGEST_LENGTH 20 + +typedef struct RIPEMD160state_st { + RIPEMD160_LONG A, B, C, D, E; + RIPEMD160_LONG Nl, Nh; + RIPEMD160_LONG data[RIPEMD160_LBLOCK]; + unsigned int num; +} RIPEMD160_CTX; + +# ifdef OPENSSL_FIPS +int private_RIPEMD160_Init(RIPEMD160_CTX *c); +# endif +int RIPEMD160_Init(RIPEMD160_CTX *c); +int RIPEMD160_Update(RIPEMD160_CTX *c, const void *data, size_t len); +int RIPEMD160_Final(unsigned char *md, RIPEMD160_CTX *c); +unsigned char *RIPEMD160(const unsigned char *d, size_t n, unsigned char *md); +void RIPEMD160_Transform(RIPEMD160_CTX *c, const unsigned char *b); +#ifdef __cplusplus +} +#endif + +#endif diff --git a/dependencies/include/openssl/rsa.h b/dependencies/include/openssl/rsa.h new file mode 100644 index 0000000..d2ee374 --- /dev/null +++ b/dependencies/include/openssl/rsa.h @@ -0,0 +1,664 @@ +/* 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/dependencies/include/openssl/safestack.h b/dependencies/include/openssl/safestack.h new file mode 100644 index 0000000..1d4f87e --- /dev/null +++ b/dependencies/include/openssl/safestack.h @@ -0,0 +1,2672 @@ +/* ==================================================================== + * 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/dependencies/include/openssl/seed.h b/dependencies/include/openssl/seed.h new file mode 100644 index 0000000..8cbf0d9 --- /dev/null +++ b/dependencies/include/openssl/seed.h @@ -0,0 +1,149 @@ +/* + * Copyright (c) 2007 KISA(Korea Information Security Agency). 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. Neither the name of author nor the names of its contributors may + * be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS ``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 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. + * + */ +/* ==================================================================== + * 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). + * + */ + +#ifndef HEADER_SEED_H +# define HEADER_SEED_H + +# include +# include +# include + +# ifdef OPENSSL_NO_SEED +# error SEED is disabled. +# endif + +/* look whether we need 'long' to get 32 bits */ +# ifdef AES_LONG +# ifndef SEED_LONG +# define SEED_LONG 1 +# endif +# endif + +# if !defined(NO_SYS_TYPES_H) +# include +# endif + +# define SEED_BLOCK_SIZE 16 +# define SEED_KEY_LENGTH 16 + + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct seed_key_st { +# ifdef SEED_LONG + unsigned long data[32]; +# else + unsigned int data[32]; +# endif +} SEED_KEY_SCHEDULE; + +# ifdef OPENSSL_FIPS +void private_SEED_set_key(const unsigned char rawkey[SEED_KEY_LENGTH], + SEED_KEY_SCHEDULE *ks); +# endif +void SEED_set_key(const unsigned char rawkey[SEED_KEY_LENGTH], + SEED_KEY_SCHEDULE *ks); + +void SEED_encrypt(const unsigned char s[SEED_BLOCK_SIZE], + unsigned char d[SEED_BLOCK_SIZE], + const SEED_KEY_SCHEDULE *ks); +void SEED_decrypt(const unsigned char s[SEED_BLOCK_SIZE], + unsigned char d[SEED_BLOCK_SIZE], + const SEED_KEY_SCHEDULE *ks); + +void SEED_ecb_encrypt(const unsigned char *in, unsigned char *out, + const SEED_KEY_SCHEDULE *ks, int enc); +void SEED_cbc_encrypt(const unsigned char *in, unsigned char *out, size_t len, + const SEED_KEY_SCHEDULE *ks, + unsigned char ivec[SEED_BLOCK_SIZE], int enc); +void SEED_cfb128_encrypt(const unsigned char *in, unsigned char *out, + size_t len, const SEED_KEY_SCHEDULE *ks, + unsigned char ivec[SEED_BLOCK_SIZE], int *num, + int enc); +void SEED_ofb128_encrypt(const unsigned char *in, unsigned char *out, + size_t len, const SEED_KEY_SCHEDULE *ks, + unsigned char ivec[SEED_BLOCK_SIZE], int *num); + +#ifdef __cplusplus +} +#endif + +#endif /* HEADER_SEED_H */ diff --git a/dependencies/include/openssl/sha.h b/dependencies/include/openssl/sha.h new file mode 100644 index 0000000..e5169e4 --- /dev/null +++ b/dependencies/include/openssl/sha.h @@ -0,0 +1,214 @@ +/* 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/dependencies/include/openssl/srp.h b/dependencies/include/openssl/srp.h new file mode 100644 index 0000000..028892a --- /dev/null +++ b/dependencies/include/openssl/srp.h @@ -0,0 +1,179 @@ +/* crypto/srp/srp.h */ +/* + * Written by Christophe Renou (christophe.renou@edelweb.fr) with the + * precious help of Peter Sylvester (peter.sylvester@edelweb.fr) for the + * EdelKey project and contributed to the OpenSSL project 2004. + */ +/* ==================================================================== + * Copyright (c) 2004 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 __SRP_H__ +# define __SRP_H__ + +# ifndef OPENSSL_NO_SRP + +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +# include +# include +# include + +typedef struct SRP_gN_cache_st { + char *b64_bn; + BIGNUM *bn; +} SRP_gN_cache; + + +DECLARE_STACK_OF(SRP_gN_cache) + +typedef struct SRP_user_pwd_st { + /* Owned by us. */ + char *id; + BIGNUM *s; + BIGNUM *v; + /* Not owned by us. */ + const BIGNUM *g; + const BIGNUM *N; + /* Owned by us. */ + char *info; +} SRP_user_pwd; + +DECLARE_STACK_OF(SRP_user_pwd) + +void SRP_user_pwd_free(SRP_user_pwd *user_pwd); + +typedef struct SRP_VBASE_st { + STACK_OF(SRP_user_pwd) *users_pwd; + STACK_OF(SRP_gN_cache) *gN_cache; +/* to simulate a user */ + char *seed_key; + BIGNUM *default_g; + BIGNUM *default_N; +} SRP_VBASE; + +/* + * Structure interne pour retenir les couples N et g + */ +typedef struct SRP_gN_st { + char *id; + BIGNUM *g; + BIGNUM *N; +} SRP_gN; + +DECLARE_STACK_OF(SRP_gN) + +SRP_VBASE *SRP_VBASE_new(char *seed_key); +int SRP_VBASE_free(SRP_VBASE *vb); +int SRP_VBASE_init(SRP_VBASE *vb, char *verifier_file); + +/* This method ignores the configured seed and fails for an unknown user. */ +SRP_user_pwd *SRP_VBASE_get_by_user(SRP_VBASE *vb, char *username); +/* NOTE: unlike in SRP_VBASE_get_by_user, caller owns the returned pointer.*/ +SRP_user_pwd *SRP_VBASE_get1_by_user(SRP_VBASE *vb, char *username); + +char *SRP_create_verifier(const char *user, const char *pass, char **salt, + char **verifier, const char *N, const char *g); +int SRP_create_verifier_BN(const char *user, const char *pass, BIGNUM **salt, + BIGNUM **verifier, BIGNUM *N, BIGNUM *g); + +# define SRP_NO_ERROR 0 +# define SRP_ERR_VBASE_INCOMPLETE_FILE 1 +# define SRP_ERR_VBASE_BN_LIB 2 +# define SRP_ERR_OPEN_FILE 3 +# define SRP_ERR_MEMORY 4 + +# define DB_srptype 0 +# define DB_srpverifier 1 +# define DB_srpsalt 2 +# define DB_srpid 3 +# define DB_srpgN 4 +# define DB_srpinfo 5 +# undef DB_NUMBER +# define DB_NUMBER 6 + +# define DB_SRP_INDEX 'I' +# define DB_SRP_VALID 'V' +# define DB_SRP_REVOKED 'R' +# define DB_SRP_MODIF 'v' + +/* see srp.c */ +char *SRP_check_known_gN_param(BIGNUM *g, BIGNUM *N); +SRP_gN *SRP_get_default_gN(const char *id); + +/* server side .... */ +BIGNUM *SRP_Calc_server_key(BIGNUM *A, BIGNUM *v, BIGNUM *u, BIGNUM *b, + BIGNUM *N); +BIGNUM *SRP_Calc_B(BIGNUM *b, BIGNUM *N, BIGNUM *g, BIGNUM *v); +int SRP_Verify_A_mod_N(BIGNUM *A, BIGNUM *N); +BIGNUM *SRP_Calc_u(BIGNUM *A, BIGNUM *B, BIGNUM *N); + +/* client side .... */ +BIGNUM *SRP_Calc_x(BIGNUM *s, const char *user, const char *pass); +BIGNUM *SRP_Calc_A(BIGNUM *a, BIGNUM *N, BIGNUM *g); +BIGNUM *SRP_Calc_client_key(BIGNUM *N, BIGNUM *B, BIGNUM *g, BIGNUM *x, + BIGNUM *a, BIGNUM *u); +int SRP_Verify_B_mod_N(BIGNUM *B, BIGNUM *N); + +# define SRP_MINIMAL_N 1024 + +#ifdef __cplusplus +} +#endif + +# endif +#endif diff --git a/dependencies/include/openssl/srtp.h b/dependencies/include/openssl/srtp.h new file mode 100644 index 0000000..2279c32 --- /dev/null +++ b/dependencies/include/openssl/srtp.h @@ -0,0 +1,147 @@ +/* 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/dependencies/include/openssl/ssl.h b/dependencies/include/openssl/ssl.h new file mode 100644 index 0000000..3cf96a2 --- /dev/null +++ b/dependencies/include/openssl/ssl.h @@ -0,0 +1,3163 @@ +/* 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:!EXPORT:!LOW:!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 +/* Does nothing: retained for compatibility */ +# 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_ST_ERR (0x05|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,slistlen,(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_METHOD +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 + +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); + +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_BUFFERED_RECORDS 424 +# 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_STATIC_DH_KEY 340 +# 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_CHECK_FINISHED 339 +# 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_GENERATE_MASTER_SECRET 388 +# 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_DUP 348 +# 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_G_VALUE 375 +# define SSL_R_BAD_DH_PUB_KEY_LENGTH 109 +# define SSL_R_BAD_DH_PUB_KEY_VALUE 393 +# define SSL_R_BAD_DH_P_LENGTH 110 +# define SSL_R_BAD_DH_P_VALUE 395 +# 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_KEY_TOO_SMALL 372 +# 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_SHUTDOWN_WHILE_IN_INIT 407 +# 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_TOO_MANY_WARN_ALERTS 409 +# 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/dependencies/include/openssl/ssl2.h b/dependencies/include/openssl/ssl2.h new file mode 100644 index 0000000..03c7dd8 --- /dev/null +++ b/dependencies/include/openssl/ssl2.h @@ -0,0 +1,265 @@ +/* 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/dependencies/include/openssl/ssl23.h b/dependencies/include/openssl/ssl23.h new file mode 100644 index 0000000..9de4685 --- /dev/null +++ b/dependencies/include/openssl/ssl23.h @@ -0,0 +1,84 @@ +/* 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/dependencies/include/openssl/ssl3.h b/dependencies/include/openssl/ssl3.h new file mode 100644 index 0000000..e681d50 --- /dev/null +++ b/dependencies/include/openssl/ssl3.h @@ -0,0 +1,774 @@ +/* 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/dependencies/include/openssl/stack.h b/dependencies/include/openssl/stack.h new file mode 100644 index 0000000..eb07216 --- /dev/null +++ b/dependencies/include/openssl/stack.h @@ -0,0 +1,107 @@ +/* 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/dependencies/include/openssl/symhacks.h b/dependencies/include/openssl/symhacks.h new file mode 100644 index 0000000..3001957 --- /dev/null +++ b/dependencies/include/openssl/symhacks.h @@ -0,0 +1,518 @@ +/* ==================================================================== + * 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 +# undef EVP_PKEY_meth_get_verify_recover +# define EVP_PKEY_meth_get_verify_recover EVP_PKEY_meth_get_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/dependencies/include/openssl/tls1.h b/dependencies/include/openssl/tls1.h new file mode 100644 index 0000000..dd1d8c1 --- /dev/null +++ b/dependencies/include/openssl/tls1.h @@ -0,0 +1,810 @@ +/* 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 RFC7301 */ +# define TLSEXT_TYPE_application_layer_protocol_negotiation 16 + +/* + * ExtensionType value for TLS padding extension. + * http://tools.ietf.org/html/draft-agl-tls-padding + */ +# 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 RFC3546 */ +# define TLSEXT_NAMETYPE_host_name 0 +/* status request value from RFC3546 */ +# define TLSEXT_STATUSTYPE_ocsp 1 + +/* ECPointFormat values from RFC4492 */ +# 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 RFC5246 */ +# 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 *context, size_t contextlen, + 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 RFC4492 */ +# 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/dependencies/include/openssl/ts.h b/dependencies/include/openssl/ts.h new file mode 100644 index 0000000..2daa1b2 --- /dev/null +++ b/dependencies/include/openssl/ts.h @@ -0,0 +1,865 @@ +/* crypto/ts/ts.h */ +/* + * Written by Zoltan Glozik (zglozik@opentsa.org) for the OpenSSL project + * 2002, 2003, 2004. + */ +/* ==================================================================== + * Copyright (c) 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 + * 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_TS_H +# define HEADER_TS_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_RSA +# include +# endif + +# ifndef OPENSSL_NO_DSA +# include +# endif + +# ifndef OPENSSL_NO_DH +# include +# endif + +#ifdef __cplusplus +extern "C" { +#endif + +# ifdef WIN32 +/* Under Win32 this is defined in wincrypt.h */ +# undef X509_NAME +# endif + +# include +# include + +/*- +MessageImprint ::= SEQUENCE { + hashAlgorithm AlgorithmIdentifier, + hashedMessage OCTET STRING } +*/ + +typedef struct TS_msg_imprint_st { + X509_ALGOR *hash_algo; + ASN1_OCTET_STRING *hashed_msg; +} TS_MSG_IMPRINT; + +/*- +TimeStampReq ::= SEQUENCE { + version INTEGER { v1(1) }, + messageImprint MessageImprint, + --a hash algorithm OID and the hash value of the data to be + --time-stamped + reqPolicy TSAPolicyId OPTIONAL, + nonce INTEGER OPTIONAL, + certReq BOOLEAN DEFAULT FALSE, + extensions [0] IMPLICIT Extensions OPTIONAL } +*/ + +typedef struct TS_req_st { + ASN1_INTEGER *version; + TS_MSG_IMPRINT *msg_imprint; + ASN1_OBJECT *policy_id; /* OPTIONAL */ + ASN1_INTEGER *nonce; /* OPTIONAL */ + ASN1_BOOLEAN cert_req; /* DEFAULT FALSE */ + STACK_OF(X509_EXTENSION) *extensions; /* [0] OPTIONAL */ +} TS_REQ; + +/*- +Accuracy ::= SEQUENCE { + seconds INTEGER OPTIONAL, + millis [0] INTEGER (1..999) OPTIONAL, + micros [1] INTEGER (1..999) OPTIONAL } +*/ + +typedef struct TS_accuracy_st { + ASN1_INTEGER *seconds; + ASN1_INTEGER *millis; + ASN1_INTEGER *micros; +} TS_ACCURACY; + +/*- +TSTInfo ::= SEQUENCE { + version INTEGER { v1(1) }, + policy TSAPolicyId, + messageImprint MessageImprint, + -- MUST have the same value as the similar field in + -- TimeStampReq + serialNumber INTEGER, + -- Time-Stamping users MUST be ready to accommodate integers + -- up to 160 bits. + genTime GeneralizedTime, + accuracy Accuracy OPTIONAL, + ordering BOOLEAN DEFAULT FALSE, + nonce INTEGER OPTIONAL, + -- MUST be present if the similar field was present + -- in TimeStampReq. In that case it MUST have the same value. + tsa [0] GeneralName OPTIONAL, + extensions [1] IMPLICIT Extensions OPTIONAL } +*/ + +typedef struct TS_tst_info_st { + ASN1_INTEGER *version; + ASN1_OBJECT *policy_id; + TS_MSG_IMPRINT *msg_imprint; + ASN1_INTEGER *serial; + ASN1_GENERALIZEDTIME *time; + TS_ACCURACY *accuracy; + ASN1_BOOLEAN ordering; + ASN1_INTEGER *nonce; + GENERAL_NAME *tsa; + STACK_OF(X509_EXTENSION) *extensions; +} TS_TST_INFO; + +/*- +PKIStatusInfo ::= SEQUENCE { + status PKIStatus, + statusString PKIFreeText OPTIONAL, + failInfo PKIFailureInfo OPTIONAL } + +From RFC 1510 - section 3.1.1: +PKIFreeText ::= SEQUENCE SIZE (1..MAX) OF UTF8String + -- text encoded as UTF-8 String (note: each UTF8String SHOULD + -- include an RFC 1766 language tag to indicate the language + -- of the contained text) +*/ + +/* Possible values for status. See ts_resp_print.c && ts_resp_verify.c. */ + +# define TS_STATUS_GRANTED 0 +# define TS_STATUS_GRANTED_WITH_MODS 1 +# define TS_STATUS_REJECTION 2 +# define TS_STATUS_WAITING 3 +# define TS_STATUS_REVOCATION_WARNING 4 +# define TS_STATUS_REVOCATION_NOTIFICATION 5 + +/* + * Possible values for failure_info. See ts_resp_print.c && ts_resp_verify.c + */ + +# define TS_INFO_BAD_ALG 0 +# define TS_INFO_BAD_REQUEST 2 +# define TS_INFO_BAD_DATA_FORMAT 5 +# define TS_INFO_TIME_NOT_AVAILABLE 14 +# define TS_INFO_UNACCEPTED_POLICY 15 +# define TS_INFO_UNACCEPTED_EXTENSION 16 +# define TS_INFO_ADD_INFO_NOT_AVAILABLE 17 +# define TS_INFO_SYSTEM_FAILURE 25 + +typedef struct TS_status_info_st { + ASN1_INTEGER *status; + STACK_OF(ASN1_UTF8STRING) *text; + ASN1_BIT_STRING *failure_info; +} TS_STATUS_INFO; + +DECLARE_STACK_OF(ASN1_UTF8STRING) +DECLARE_ASN1_SET_OF(ASN1_UTF8STRING) + +/*- +TimeStampResp ::= SEQUENCE { + status PKIStatusInfo, + timeStampToken TimeStampToken OPTIONAL } +*/ + +typedef struct TS_resp_st { + TS_STATUS_INFO *status_info; + PKCS7 *token; + TS_TST_INFO *tst_info; +} TS_RESP; + +/* The structure below would belong to the ESS component. */ + +/*- +IssuerSerial ::= SEQUENCE { + issuer GeneralNames, + serialNumber CertificateSerialNumber + } +*/ + +typedef struct ESS_issuer_serial { + STACK_OF(GENERAL_NAME) *issuer; + ASN1_INTEGER *serial; +} ESS_ISSUER_SERIAL; + +/*- +ESSCertID ::= SEQUENCE { + certHash Hash, + issuerSerial IssuerSerial OPTIONAL +} +*/ + +typedef struct ESS_cert_id { + ASN1_OCTET_STRING *hash; /* Always SHA-1 digest. */ + ESS_ISSUER_SERIAL *issuer_serial; +} ESS_CERT_ID; + +DECLARE_STACK_OF(ESS_CERT_ID) +DECLARE_ASN1_SET_OF(ESS_CERT_ID) + +/*- +SigningCertificate ::= SEQUENCE { + certs SEQUENCE OF ESSCertID, + policies SEQUENCE OF PolicyInformation OPTIONAL +} +*/ + +typedef struct ESS_signing_cert { + STACK_OF(ESS_CERT_ID) *cert_ids; + STACK_OF(POLICYINFO) *policy_info; +} ESS_SIGNING_CERT; + +TS_REQ *TS_REQ_new(void); +void TS_REQ_free(TS_REQ *a); +int i2d_TS_REQ(const TS_REQ *a, unsigned char **pp); +TS_REQ *d2i_TS_REQ(TS_REQ **a, const unsigned char **pp, long length); + +TS_REQ *TS_REQ_dup(TS_REQ *a); + +TS_REQ *d2i_TS_REQ_fp(FILE *fp, TS_REQ **a); +int i2d_TS_REQ_fp(FILE *fp, TS_REQ *a); +TS_REQ *d2i_TS_REQ_bio(BIO *fp, TS_REQ **a); +int i2d_TS_REQ_bio(BIO *fp, TS_REQ *a); + +TS_MSG_IMPRINT *TS_MSG_IMPRINT_new(void); +void TS_MSG_IMPRINT_free(TS_MSG_IMPRINT *a); +int i2d_TS_MSG_IMPRINT(const TS_MSG_IMPRINT *a, unsigned char **pp); +TS_MSG_IMPRINT *d2i_TS_MSG_IMPRINT(TS_MSG_IMPRINT **a, + const unsigned char **pp, long length); + +TS_MSG_IMPRINT *TS_MSG_IMPRINT_dup(TS_MSG_IMPRINT *a); + +TS_MSG_IMPRINT *d2i_TS_MSG_IMPRINT_fp(FILE *fp, TS_MSG_IMPRINT **a); +int i2d_TS_MSG_IMPRINT_fp(FILE *fp, TS_MSG_IMPRINT *a); +TS_MSG_IMPRINT *d2i_TS_MSG_IMPRINT_bio(BIO *fp, TS_MSG_IMPRINT **a); +int i2d_TS_MSG_IMPRINT_bio(BIO *fp, TS_MSG_IMPRINT *a); + +TS_RESP *TS_RESP_new(void); +void TS_RESP_free(TS_RESP *a); +int i2d_TS_RESP(const TS_RESP *a, unsigned char **pp); +TS_RESP *d2i_TS_RESP(TS_RESP **a, const unsigned char **pp, long length); +TS_TST_INFO *PKCS7_to_TS_TST_INFO(PKCS7 *token); +TS_RESP *TS_RESP_dup(TS_RESP *a); + +TS_RESP *d2i_TS_RESP_fp(FILE *fp, TS_RESP **a); +int i2d_TS_RESP_fp(FILE *fp, TS_RESP *a); +TS_RESP *d2i_TS_RESP_bio(BIO *fp, TS_RESP **a); +int i2d_TS_RESP_bio(BIO *fp, TS_RESP *a); + +TS_STATUS_INFO *TS_STATUS_INFO_new(void); +void TS_STATUS_INFO_free(TS_STATUS_INFO *a); +int i2d_TS_STATUS_INFO(const TS_STATUS_INFO *a, unsigned char **pp); +TS_STATUS_INFO *d2i_TS_STATUS_INFO(TS_STATUS_INFO **a, + const unsigned char **pp, long length); +TS_STATUS_INFO *TS_STATUS_INFO_dup(TS_STATUS_INFO *a); + +TS_TST_INFO *TS_TST_INFO_new(void); +void TS_TST_INFO_free(TS_TST_INFO *a); +int i2d_TS_TST_INFO(const TS_TST_INFO *a, unsigned char **pp); +TS_TST_INFO *d2i_TS_TST_INFO(TS_TST_INFO **a, const unsigned char **pp, + long length); +TS_TST_INFO *TS_TST_INFO_dup(TS_TST_INFO *a); + +TS_TST_INFO *d2i_TS_TST_INFO_fp(FILE *fp, TS_TST_INFO **a); +int i2d_TS_TST_INFO_fp(FILE *fp, TS_TST_INFO *a); +TS_TST_INFO *d2i_TS_TST_INFO_bio(BIO *fp, TS_TST_INFO **a); +int i2d_TS_TST_INFO_bio(BIO *fp, TS_TST_INFO *a); + +TS_ACCURACY *TS_ACCURACY_new(void); +void TS_ACCURACY_free(TS_ACCURACY *a); +int i2d_TS_ACCURACY(const TS_ACCURACY *a, unsigned char **pp); +TS_ACCURACY *d2i_TS_ACCURACY(TS_ACCURACY **a, const unsigned char **pp, + long length); +TS_ACCURACY *TS_ACCURACY_dup(TS_ACCURACY *a); + +ESS_ISSUER_SERIAL *ESS_ISSUER_SERIAL_new(void); +void ESS_ISSUER_SERIAL_free(ESS_ISSUER_SERIAL *a); +int i2d_ESS_ISSUER_SERIAL(const ESS_ISSUER_SERIAL *a, unsigned char **pp); +ESS_ISSUER_SERIAL *d2i_ESS_ISSUER_SERIAL(ESS_ISSUER_SERIAL **a, + const unsigned char **pp, + long length); +ESS_ISSUER_SERIAL *ESS_ISSUER_SERIAL_dup(ESS_ISSUER_SERIAL *a); + +ESS_CERT_ID *ESS_CERT_ID_new(void); +void ESS_CERT_ID_free(ESS_CERT_ID *a); +int i2d_ESS_CERT_ID(const ESS_CERT_ID *a, unsigned char **pp); +ESS_CERT_ID *d2i_ESS_CERT_ID(ESS_CERT_ID **a, const unsigned char **pp, + long length); +ESS_CERT_ID *ESS_CERT_ID_dup(ESS_CERT_ID *a); + +ESS_SIGNING_CERT *ESS_SIGNING_CERT_new(void); +void ESS_SIGNING_CERT_free(ESS_SIGNING_CERT *a); +int i2d_ESS_SIGNING_CERT(const ESS_SIGNING_CERT *a, unsigned char **pp); +ESS_SIGNING_CERT *d2i_ESS_SIGNING_CERT(ESS_SIGNING_CERT **a, + const unsigned char **pp, long length); +ESS_SIGNING_CERT *ESS_SIGNING_CERT_dup(ESS_SIGNING_CERT *a); + +void ERR_load_TS_strings(void); + +int TS_REQ_set_version(TS_REQ *a, long version); +long TS_REQ_get_version(const TS_REQ *a); + +int TS_REQ_set_msg_imprint(TS_REQ *a, TS_MSG_IMPRINT *msg_imprint); +TS_MSG_IMPRINT *TS_REQ_get_msg_imprint(TS_REQ *a); + +int TS_MSG_IMPRINT_set_algo(TS_MSG_IMPRINT *a, X509_ALGOR *alg); +X509_ALGOR *TS_MSG_IMPRINT_get_algo(TS_MSG_IMPRINT *a); + +int TS_MSG_IMPRINT_set_msg(TS_MSG_IMPRINT *a, unsigned char *d, int len); +ASN1_OCTET_STRING *TS_MSG_IMPRINT_get_msg(TS_MSG_IMPRINT *a); + +int TS_REQ_set_policy_id(TS_REQ *a, ASN1_OBJECT *policy); +ASN1_OBJECT *TS_REQ_get_policy_id(TS_REQ *a); + +int TS_REQ_set_nonce(TS_REQ *a, const ASN1_INTEGER *nonce); +const ASN1_INTEGER *TS_REQ_get_nonce(const TS_REQ *a); + +int TS_REQ_set_cert_req(TS_REQ *a, int cert_req); +int TS_REQ_get_cert_req(const TS_REQ *a); + +STACK_OF(X509_EXTENSION) *TS_REQ_get_exts(TS_REQ *a); +void TS_REQ_ext_free(TS_REQ *a); +int TS_REQ_get_ext_count(TS_REQ *a); +int TS_REQ_get_ext_by_NID(TS_REQ *a, int nid, int lastpos); +int TS_REQ_get_ext_by_OBJ(TS_REQ *a, ASN1_OBJECT *obj, int lastpos); +int TS_REQ_get_ext_by_critical(TS_REQ *a, int crit, int lastpos); +X509_EXTENSION *TS_REQ_get_ext(TS_REQ *a, int loc); +X509_EXTENSION *TS_REQ_delete_ext(TS_REQ *a, int loc); +int TS_REQ_add_ext(TS_REQ *a, X509_EXTENSION *ex, int loc); +void *TS_REQ_get_ext_d2i(TS_REQ *a, int nid, int *crit, int *idx); + +/* Function declarations for TS_REQ defined in ts/ts_req_print.c */ + +int TS_REQ_print_bio(BIO *bio, TS_REQ *a); + +/* Function declarations for TS_RESP defined in ts/ts_resp_utils.c */ + +int TS_RESP_set_status_info(TS_RESP *a, TS_STATUS_INFO *info); +TS_STATUS_INFO *TS_RESP_get_status_info(TS_RESP *a); + +/* Caller loses ownership of PKCS7 and TS_TST_INFO objects. */ +void TS_RESP_set_tst_info(TS_RESP *a, PKCS7 *p7, TS_TST_INFO *tst_info); +PKCS7 *TS_RESP_get_token(TS_RESP *a); +TS_TST_INFO *TS_RESP_get_tst_info(TS_RESP *a); + +int TS_TST_INFO_set_version(TS_TST_INFO *a, long version); +long TS_TST_INFO_get_version(const TS_TST_INFO *a); + +int TS_TST_INFO_set_policy_id(TS_TST_INFO *a, ASN1_OBJECT *policy_id); +ASN1_OBJECT *TS_TST_INFO_get_policy_id(TS_TST_INFO *a); + +int TS_TST_INFO_set_msg_imprint(TS_TST_INFO *a, TS_MSG_IMPRINT *msg_imprint); +TS_MSG_IMPRINT *TS_TST_INFO_get_msg_imprint(TS_TST_INFO *a); + +int TS_TST_INFO_set_serial(TS_TST_INFO *a, const ASN1_INTEGER *serial); +const ASN1_INTEGER *TS_TST_INFO_get_serial(const TS_TST_INFO *a); + +int TS_TST_INFO_set_time(TS_TST_INFO *a, const ASN1_GENERALIZEDTIME *gtime); +const ASN1_GENERALIZEDTIME *TS_TST_INFO_get_time(const TS_TST_INFO *a); + +int TS_TST_INFO_set_accuracy(TS_TST_INFO *a, TS_ACCURACY *accuracy); +TS_ACCURACY *TS_TST_INFO_get_accuracy(TS_TST_INFO *a); + +int TS_ACCURACY_set_seconds(TS_ACCURACY *a, const ASN1_INTEGER *seconds); +const ASN1_INTEGER *TS_ACCURACY_get_seconds(const TS_ACCURACY *a); + +int TS_ACCURACY_set_millis(TS_ACCURACY *a, const ASN1_INTEGER *millis); +const ASN1_INTEGER *TS_ACCURACY_get_millis(const TS_ACCURACY *a); + +int TS_ACCURACY_set_micros(TS_ACCURACY *a, const ASN1_INTEGER *micros); +const ASN1_INTEGER *TS_ACCURACY_get_micros(const TS_ACCURACY *a); + +int TS_TST_INFO_set_ordering(TS_TST_INFO *a, int ordering); +int TS_TST_INFO_get_ordering(const TS_TST_INFO *a); + +int TS_TST_INFO_set_nonce(TS_TST_INFO *a, const ASN1_INTEGER *nonce); +const ASN1_INTEGER *TS_TST_INFO_get_nonce(const TS_TST_INFO *a); + +int TS_TST_INFO_set_tsa(TS_TST_INFO *a, GENERAL_NAME *tsa); +GENERAL_NAME *TS_TST_INFO_get_tsa(TS_TST_INFO *a); + +STACK_OF(X509_EXTENSION) *TS_TST_INFO_get_exts(TS_TST_INFO *a); +void TS_TST_INFO_ext_free(TS_TST_INFO *a); +int TS_TST_INFO_get_ext_count(TS_TST_INFO *a); +int TS_TST_INFO_get_ext_by_NID(TS_TST_INFO *a, int nid, int lastpos); +int TS_TST_INFO_get_ext_by_OBJ(TS_TST_INFO *a, ASN1_OBJECT *obj, int lastpos); +int TS_TST_INFO_get_ext_by_critical(TS_TST_INFO *a, int crit, int lastpos); +X509_EXTENSION *TS_TST_INFO_get_ext(TS_TST_INFO *a, int loc); +X509_EXTENSION *TS_TST_INFO_delete_ext(TS_TST_INFO *a, int loc); +int TS_TST_INFO_add_ext(TS_TST_INFO *a, X509_EXTENSION *ex, int loc); +void *TS_TST_INFO_get_ext_d2i(TS_TST_INFO *a, int nid, int *crit, int *idx); + +/* + * Declarations related to response generation, defined in ts/ts_resp_sign.c. + */ + +/* Optional flags for response generation. */ + +/* Don't include the TSA name in response. */ +# define TS_TSA_NAME 0x01 + +/* Set ordering to true in response. */ +# define TS_ORDERING 0x02 + +/* + * Include the signer certificate and the other specified certificates in + * the ESS signing certificate attribute beside the PKCS7 signed data. + * Only the signer certificates is included by default. + */ +# define TS_ESS_CERT_ID_CHAIN 0x04 + +/* Forward declaration. */ +struct TS_resp_ctx; + +/* This must return a unique number less than 160 bits long. */ +typedef ASN1_INTEGER *(*TS_serial_cb) (struct TS_resp_ctx *, void *); + +/* + * This must return the seconds and microseconds since Jan 1, 1970 in the sec + * and usec variables allocated by the caller. Return non-zero for success + * and zero for failure. + */ +typedef int (*TS_time_cb) (struct TS_resp_ctx *, void *, long *sec, + long *usec); + +/* + * This must process the given extension. It can modify the TS_TST_INFO + * object of the context. Return values: !0 (processed), 0 (error, it must + * set the status info/failure info of the response). + */ +typedef int (*TS_extension_cb) (struct TS_resp_ctx *, X509_EXTENSION *, + void *); + +typedef struct TS_resp_ctx { + X509 *signer_cert; + EVP_PKEY *signer_key; + STACK_OF(X509) *certs; /* Certs to include in signed data. */ + STACK_OF(ASN1_OBJECT) *policies; /* Acceptable policies. */ + ASN1_OBJECT *default_policy; /* It may appear in policies, too. */ + STACK_OF(EVP_MD) *mds; /* Acceptable message digests. */ + ASN1_INTEGER *seconds; /* accuracy, 0 means not specified. */ + ASN1_INTEGER *millis; /* accuracy, 0 means not specified. */ + ASN1_INTEGER *micros; /* accuracy, 0 means not specified. */ + unsigned clock_precision_digits; /* fraction of seconds in time stamp + * token. */ + unsigned flags; /* Optional info, see values above. */ + /* Callback functions. */ + TS_serial_cb serial_cb; + void *serial_cb_data; /* User data for serial_cb. */ + TS_time_cb time_cb; + void *time_cb_data; /* User data for time_cb. */ + TS_extension_cb extension_cb; + void *extension_cb_data; /* User data for extension_cb. */ + /* These members are used only while creating the response. */ + TS_REQ *request; + TS_RESP *response; + TS_TST_INFO *tst_info; +} TS_RESP_CTX; + +DECLARE_STACK_OF(EVP_MD) +DECLARE_ASN1_SET_OF(EVP_MD) + +/* Creates a response context that can be used for generating responses. */ +TS_RESP_CTX *TS_RESP_CTX_new(void); +void TS_RESP_CTX_free(TS_RESP_CTX *ctx); + +/* This parameter must be set. */ +int TS_RESP_CTX_set_signer_cert(TS_RESP_CTX *ctx, X509 *signer); + +/* This parameter must be set. */ +int TS_RESP_CTX_set_signer_key(TS_RESP_CTX *ctx, EVP_PKEY *key); + +/* This parameter must be set. */ +int TS_RESP_CTX_set_def_policy(TS_RESP_CTX *ctx, ASN1_OBJECT *def_policy); + +/* No additional certs are included in the response by default. */ +int TS_RESP_CTX_set_certs(TS_RESP_CTX *ctx, STACK_OF(X509) *certs); + +/* + * Adds a new acceptable policy, only the default policy is accepted by + * default. + */ +int TS_RESP_CTX_add_policy(TS_RESP_CTX *ctx, ASN1_OBJECT *policy); + +/* + * Adds a new acceptable message digest. Note that no message digests are + * accepted by default. The md argument is shared with the caller. + */ +int TS_RESP_CTX_add_md(TS_RESP_CTX *ctx, const EVP_MD *md); + +/* Accuracy is not included by default. */ +int TS_RESP_CTX_set_accuracy(TS_RESP_CTX *ctx, + int secs, int millis, int micros); + +/* + * Clock precision digits, i.e. the number of decimal digits: '0' means sec, + * '3' msec, '6' usec, and so on. Default is 0. + */ +int TS_RESP_CTX_set_clock_precision_digits(TS_RESP_CTX *ctx, + unsigned clock_precision_digits); +/* At most we accept usec precision. */ +# define TS_MAX_CLOCK_PRECISION_DIGITS 6 + +/* Maximum status message length */ +# define TS_MAX_STATUS_LENGTH (1024 * 1024) + +/* No flags are set by default. */ +void TS_RESP_CTX_add_flags(TS_RESP_CTX *ctx, int flags); + +/* Default callback always returns a constant. */ +void TS_RESP_CTX_set_serial_cb(TS_RESP_CTX *ctx, TS_serial_cb cb, void *data); + +/* Default callback uses the gettimeofday() and gmtime() system calls. */ +void TS_RESP_CTX_set_time_cb(TS_RESP_CTX *ctx, TS_time_cb cb, void *data); + +/* + * Default callback rejects all extensions. The extension callback is called + * when the TS_TST_INFO object is already set up and not signed yet. + */ +/* FIXME: extension handling is not tested yet. */ +void TS_RESP_CTX_set_extension_cb(TS_RESP_CTX *ctx, + TS_extension_cb cb, void *data); + +/* The following methods can be used in the callbacks. */ +int TS_RESP_CTX_set_status_info(TS_RESP_CTX *ctx, + int status, const char *text); + +/* Sets the status info only if it is still TS_STATUS_GRANTED. */ +int TS_RESP_CTX_set_status_info_cond(TS_RESP_CTX *ctx, + int status, const char *text); + +int TS_RESP_CTX_add_failure_info(TS_RESP_CTX *ctx, int failure); + +/* The get methods below can be used in the extension callback. */ +TS_REQ *TS_RESP_CTX_get_request(TS_RESP_CTX *ctx); + +TS_TST_INFO *TS_RESP_CTX_get_tst_info(TS_RESP_CTX *ctx); + +/* + * Creates the signed TS_TST_INFO and puts it in TS_RESP. + * In case of errors it sets the status info properly. + * Returns NULL only in case of memory allocation/fatal error. + */ +TS_RESP *TS_RESP_create_response(TS_RESP_CTX *ctx, BIO *req_bio); + +/* + * Declarations related to response verification, + * they are defined in ts/ts_resp_verify.c. + */ + +int TS_RESP_verify_signature(PKCS7 *token, STACK_OF(X509) *certs, + X509_STORE *store, X509 **signer_out); + +/* Context structure for the generic verify method. */ + +/* Verify the signer's certificate and the signature of the response. */ +# define TS_VFY_SIGNATURE (1u << 0) +/* Verify the version number of the response. */ +# define TS_VFY_VERSION (1u << 1) +/* Verify if the policy supplied by the user matches the policy of the TSA. */ +# define TS_VFY_POLICY (1u << 2) +/* + * Verify the message imprint provided by the user. This flag should not be + * specified with TS_VFY_DATA. + */ +# define TS_VFY_IMPRINT (1u << 3) +/* + * Verify the message imprint computed by the verify method from the user + * provided data and the MD algorithm of the response. This flag should not + * be specified with TS_VFY_IMPRINT. + */ +# define TS_VFY_DATA (1u << 4) +/* Verify the nonce value. */ +# define TS_VFY_NONCE (1u << 5) +/* Verify if the TSA name field matches the signer certificate. */ +# define TS_VFY_SIGNER (1u << 6) +/* Verify if the TSA name field equals to the user provided name. */ +# define TS_VFY_TSA_NAME (1u << 7) + +/* You can use the following convenience constants. */ +# define TS_VFY_ALL_IMPRINT (TS_VFY_SIGNATURE \ + | TS_VFY_VERSION \ + | TS_VFY_POLICY \ + | TS_VFY_IMPRINT \ + | TS_VFY_NONCE \ + | TS_VFY_SIGNER \ + | TS_VFY_TSA_NAME) +# define TS_VFY_ALL_DATA (TS_VFY_SIGNATURE \ + | TS_VFY_VERSION \ + | TS_VFY_POLICY \ + | TS_VFY_DATA \ + | TS_VFY_NONCE \ + | TS_VFY_SIGNER \ + | TS_VFY_TSA_NAME) + +typedef struct TS_verify_ctx { + /* Set this to the union of TS_VFY_... flags you want to carry out. */ + unsigned flags; + /* Must be set only with TS_VFY_SIGNATURE. certs is optional. */ + X509_STORE *store; + STACK_OF(X509) *certs; + /* Must be set only with TS_VFY_POLICY. */ + ASN1_OBJECT *policy; + /* + * Must be set only with TS_VFY_IMPRINT. If md_alg is NULL, the + * algorithm from the response is used. + */ + X509_ALGOR *md_alg; + unsigned char *imprint; + unsigned imprint_len; + /* Must be set only with TS_VFY_DATA. */ + BIO *data; + /* Must be set only with TS_VFY_TSA_NAME. */ + ASN1_INTEGER *nonce; + /* Must be set only with TS_VFY_TSA_NAME. */ + GENERAL_NAME *tsa_name; +} TS_VERIFY_CTX; + +int TS_RESP_verify_response(TS_VERIFY_CTX *ctx, TS_RESP *response); +int TS_RESP_verify_token(TS_VERIFY_CTX *ctx, PKCS7 *token); + +/* + * Declarations related to response verification context, + * they are defined in ts/ts_verify_ctx.c. + */ + +/* Set all fields to zero. */ +TS_VERIFY_CTX *TS_VERIFY_CTX_new(void); +void TS_VERIFY_CTX_init(TS_VERIFY_CTX *ctx); +void TS_VERIFY_CTX_free(TS_VERIFY_CTX *ctx); +void TS_VERIFY_CTX_cleanup(TS_VERIFY_CTX *ctx); + +/*- + * If ctx is NULL, it allocates and returns a new object, otherwise + * it returns ctx. It initialises all the members as follows: + * flags = TS_VFY_ALL_IMPRINT & ~(TS_VFY_TSA_NAME | TS_VFY_SIGNATURE) + * certs = NULL + * store = NULL + * policy = policy from the request or NULL if absent (in this case + * TS_VFY_POLICY is cleared from flags as well) + * md_alg = MD algorithm from request + * imprint, imprint_len = imprint from request + * data = NULL + * nonce, nonce_len = nonce from the request or NULL if absent (in this case + * TS_VFY_NONCE is cleared from flags as well) + * tsa_name = NULL + * Important: after calling this method TS_VFY_SIGNATURE should be added! + */ +TS_VERIFY_CTX *TS_REQ_to_TS_VERIFY_CTX(TS_REQ *req, TS_VERIFY_CTX *ctx); + +/* Function declarations for TS_RESP defined in ts/ts_resp_print.c */ + +int TS_RESP_print_bio(BIO *bio, TS_RESP *a); +int TS_STATUS_INFO_print_bio(BIO *bio, TS_STATUS_INFO *a); +int TS_TST_INFO_print_bio(BIO *bio, TS_TST_INFO *a); + +/* Common utility functions defined in ts/ts_lib.c */ + +int TS_ASN1_INTEGER_print_bio(BIO *bio, const ASN1_INTEGER *num); +int TS_OBJ_print_bio(BIO *bio, const ASN1_OBJECT *obj); +int TS_ext_print_bio(BIO *bio, const STACK_OF(X509_EXTENSION) *extensions); +int TS_X509_ALGOR_print_bio(BIO *bio, const X509_ALGOR *alg); +int TS_MSG_IMPRINT_print_bio(BIO *bio, TS_MSG_IMPRINT *msg); + +/* + * Function declarations for handling configuration options, defined in + * ts/ts_conf.c + */ + +X509 *TS_CONF_load_cert(const char *file); +STACK_OF(X509) *TS_CONF_load_certs(const char *file); +EVP_PKEY *TS_CONF_load_key(const char *file, const char *pass); +const char *TS_CONF_get_tsa_section(CONF *conf, const char *section); +int TS_CONF_set_serial(CONF *conf, const char *section, TS_serial_cb cb, + TS_RESP_CTX *ctx); +int TS_CONF_set_crypto_device(CONF *conf, const char *section, + const char *device); +int TS_CONF_set_default_engine(const char *name); +int TS_CONF_set_signer_cert(CONF *conf, const char *section, + const char *cert, TS_RESP_CTX *ctx); +int TS_CONF_set_certs(CONF *conf, const char *section, const char *certs, + TS_RESP_CTX *ctx); +int TS_CONF_set_signer_key(CONF *conf, const char *section, + const char *key, const char *pass, + TS_RESP_CTX *ctx); +int TS_CONF_set_def_policy(CONF *conf, const char *section, + const char *policy, TS_RESP_CTX *ctx); +int TS_CONF_set_policies(CONF *conf, const char *section, TS_RESP_CTX *ctx); +int TS_CONF_set_digests(CONF *conf, const char *section, TS_RESP_CTX *ctx); +int TS_CONF_set_accuracy(CONF *conf, const char *section, TS_RESP_CTX *ctx); +int TS_CONF_set_clock_precision_digits(CONF *conf, const char *section, + TS_RESP_CTX *ctx); +int TS_CONF_set_ordering(CONF *conf, const char *section, TS_RESP_CTX *ctx); +int TS_CONF_set_tsa_name(CONF *conf, const char *section, TS_RESP_CTX *ctx); +int TS_CONF_set_ess_cert_id_chain(CONF *conf, const char *section, + TS_RESP_CTX *ctx); + +/* -------------------------------------------------- */ +/* 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_TS_strings(void); + +/* Error codes for the TS functions. */ + +/* Function codes. */ +# define TS_F_D2I_TS_RESP 147 +# define TS_F_DEF_SERIAL_CB 110 +# define TS_F_DEF_TIME_CB 111 +# define TS_F_ESS_ADD_SIGNING_CERT 112 +# define TS_F_ESS_CERT_ID_NEW_INIT 113 +# define TS_F_ESS_SIGNING_CERT_NEW_INIT 114 +# define TS_F_INT_TS_RESP_VERIFY_TOKEN 149 +# define TS_F_PKCS7_TO_TS_TST_INFO 148 +# define TS_F_TS_ACCURACY_SET_MICROS 115 +# define TS_F_TS_ACCURACY_SET_MILLIS 116 +# define TS_F_TS_ACCURACY_SET_SECONDS 117 +# define TS_F_TS_CHECK_IMPRINTS 100 +# define TS_F_TS_CHECK_NONCES 101 +# define TS_F_TS_CHECK_POLICY 102 +# define TS_F_TS_CHECK_SIGNING_CERTS 103 +# define TS_F_TS_CHECK_STATUS_INFO 104 +# define TS_F_TS_COMPUTE_IMPRINT 145 +# define TS_F_TS_CONF_SET_DEFAULT_ENGINE 146 +# define TS_F_TS_GET_STATUS_TEXT 105 +# define TS_F_TS_MSG_IMPRINT_SET_ALGO 118 +# define TS_F_TS_REQ_SET_MSG_IMPRINT 119 +# define TS_F_TS_REQ_SET_NONCE 120 +# define TS_F_TS_REQ_SET_POLICY_ID 121 +# define TS_F_TS_RESP_CREATE_RESPONSE 122 +# define TS_F_TS_RESP_CREATE_TST_INFO 123 +# define TS_F_TS_RESP_CTX_ADD_FAILURE_INFO 124 +# define TS_F_TS_RESP_CTX_ADD_MD 125 +# define TS_F_TS_RESP_CTX_ADD_POLICY 126 +# define TS_F_TS_RESP_CTX_NEW 127 +# define TS_F_TS_RESP_CTX_SET_ACCURACY 128 +# define TS_F_TS_RESP_CTX_SET_CERTS 129 +# define TS_F_TS_RESP_CTX_SET_DEF_POLICY 130 +# define TS_F_TS_RESP_CTX_SET_SIGNER_CERT 131 +# define TS_F_TS_RESP_CTX_SET_STATUS_INFO 132 +# define TS_F_TS_RESP_GET_POLICY 133 +# define TS_F_TS_RESP_SET_GENTIME_WITH_PRECISION 134 +# define TS_F_TS_RESP_SET_STATUS_INFO 135 +# define TS_F_TS_RESP_SET_TST_INFO 150 +# define TS_F_TS_RESP_SIGN 136 +# define TS_F_TS_RESP_VERIFY_SIGNATURE 106 +# define TS_F_TS_RESP_VERIFY_TOKEN 107 +# define TS_F_TS_TST_INFO_SET_ACCURACY 137 +# define TS_F_TS_TST_INFO_SET_MSG_IMPRINT 138 +# define TS_F_TS_TST_INFO_SET_NONCE 139 +# define TS_F_TS_TST_INFO_SET_POLICY_ID 140 +# define TS_F_TS_TST_INFO_SET_SERIAL 141 +# define TS_F_TS_TST_INFO_SET_TIME 142 +# define TS_F_TS_TST_INFO_SET_TSA 143 +# define TS_F_TS_VERIFY 108 +# define TS_F_TS_VERIFY_CERT 109 +# define TS_F_TS_VERIFY_CTX_NEW 144 + +/* Reason codes. */ +# define TS_R_BAD_PKCS7_TYPE 132 +# define TS_R_BAD_TYPE 133 +# define TS_R_CERTIFICATE_VERIFY_ERROR 100 +# define TS_R_COULD_NOT_SET_ENGINE 127 +# define TS_R_COULD_NOT_SET_TIME 115 +# define TS_R_D2I_TS_RESP_INT_FAILED 128 +# define TS_R_DETACHED_CONTENT 134 +# define TS_R_ESS_ADD_SIGNING_CERT_ERROR 116 +# define TS_R_ESS_SIGNING_CERTIFICATE_ERROR 101 +# define TS_R_INVALID_NULL_POINTER 102 +# define TS_R_INVALID_SIGNER_CERTIFICATE_PURPOSE 117 +# define TS_R_MESSAGE_IMPRINT_MISMATCH 103 +# define TS_R_NONCE_MISMATCH 104 +# define TS_R_NONCE_NOT_RETURNED 105 +# define TS_R_NO_CONTENT 106 +# define TS_R_NO_TIME_STAMP_TOKEN 107 +# define TS_R_PKCS7_ADD_SIGNATURE_ERROR 118 +# define TS_R_PKCS7_ADD_SIGNED_ATTR_ERROR 119 +# define TS_R_PKCS7_TO_TS_TST_INFO_FAILED 129 +# define TS_R_POLICY_MISMATCH 108 +# define TS_R_PRIVATE_KEY_DOES_NOT_MATCH_CERTIFICATE 120 +# define TS_R_RESPONSE_SETUP_ERROR 121 +# define TS_R_SIGNATURE_FAILURE 109 +# define TS_R_THERE_MUST_BE_ONE_SIGNER 110 +# define TS_R_TIME_SYSCALL_ERROR 122 +# define TS_R_TOKEN_NOT_PRESENT 130 +# define TS_R_TOKEN_PRESENT 131 +# define TS_R_TSA_NAME_MISMATCH 111 +# define TS_R_TSA_UNTRUSTED 112 +# define TS_R_TST_INFO_SETUP_ERROR 123 +# define TS_R_TS_DATASIGN 124 +# define TS_R_UNACCEPTABLE_POLICY 125 +# define TS_R_UNSUPPORTED_MD_ALGORITHM 126 +# define TS_R_UNSUPPORTED_VERSION 113 +# define TS_R_WRONG_CONTENT_TYPE 114 + +#ifdef __cplusplus +} +#endif +#endif diff --git a/dependencies/include/openssl/txt_db.h b/dependencies/include/openssl/txt_db.h new file mode 100644 index 0000000..98e23a2 --- /dev/null +++ b/dependencies/include/openssl/txt_db.h @@ -0,0 +1,112 @@ +/* crypto/txt_db/txt_db.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_TXT_DB_H +# define HEADER_TXT_DB_H + +# include +# ifndef OPENSSL_NO_BIO +# include +# endif +# include +# include + +# define DB_ERROR_OK 0 +# define DB_ERROR_MALLOC 1 +# define DB_ERROR_INDEX_CLASH 2 +# define DB_ERROR_INDEX_OUT_OF_RANGE 3 +# define DB_ERROR_NO_INDEX 4 +# define DB_ERROR_INSERT_INDEX_CLASH 5 + +#ifdef __cplusplus +extern "C" { +#endif + +typedef OPENSSL_STRING *OPENSSL_PSTRING; +DECLARE_SPECIAL_STACK_OF(OPENSSL_PSTRING, OPENSSL_STRING) + +typedef struct txt_db_st { + int num_fields; + STACK_OF(OPENSSL_PSTRING) *data; + LHASH_OF(OPENSSL_STRING) **index; + int (**qual) (OPENSSL_STRING *); + long error; + long arg1; + long arg2; + OPENSSL_STRING *arg_row; +} TXT_DB; + +# ifndef OPENSSL_NO_BIO +TXT_DB *TXT_DB_read(BIO *in, int num); +long TXT_DB_write(BIO *out, TXT_DB *db); +# else +TXT_DB *TXT_DB_read(char *in, int num); +long TXT_DB_write(char *out, TXT_DB *db); +# endif +int TXT_DB_create_index(TXT_DB *db, int field, int (*qual) (OPENSSL_STRING *), + LHASH_HASH_FN_TYPE hash, LHASH_COMP_FN_TYPE cmp); +void TXT_DB_free(TXT_DB *db); +OPENSSL_STRING *TXT_DB_get_by_index(TXT_DB *db, int idx, + OPENSSL_STRING *value); +int TXT_DB_insert(TXT_DB *db, OPENSSL_STRING *value); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/dependencies/include/openssl/ui.h b/dependencies/include/openssl/ui.h new file mode 100644 index 0000000..0dc1633 --- /dev/null +++ b/dependencies/include/openssl/ui.h @@ -0,0 +1,415 @@ +/* crypto/ui/ui.h */ +/* + * Written by Richard Levitte (richard@levitte.org) for the OpenSSL project + * 2001. + */ +/* ==================================================================== + * Copyright (c) 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_UI_H +# define HEADER_UI_H + +# ifndef OPENSSL_NO_DEPRECATED +# include +# endif +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Declared already in ossl_typ.h */ +/* typedef struct ui_st UI; */ +/* typedef struct ui_method_st UI_METHOD; */ + +/* + * All the following functions return -1 or NULL on error and in some cases + * (UI_process()) -2 if interrupted or in some other way cancelled. When + * everything is fine, they return 0, a positive value or a non-NULL pointer, + * all depending on their purpose. + */ + +/* Creators and destructor. */ +UI *UI_new(void); +UI *UI_new_method(const UI_METHOD *method); +void UI_free(UI *ui); + +/*- + The following functions are used to add strings to be printed and prompt + strings to prompt for data. The names are UI_{add,dup}__string + and UI_{add,dup}_input_boolean. + + UI_{add,dup}__string have the following meanings: + add add a text or prompt string. The pointers given to these + functions are used verbatim, no copying is done. + dup make a copy of the text or prompt string, then add the copy + to the collection of strings in the user interface. + + The function is a name for the functionality that the given + string shall be used for. It can be one of: + input use the string as data prompt. + verify use the string as verification prompt. This + is used to verify a previous input. + info use the string for informational output. + error use the string for error output. + Honestly, there's currently no difference between info and error for the + moment. + + UI_{add,dup}_input_boolean have the same semantics for "add" and "dup", + and are typically used when one wants to prompt for a yes/no response. + + All of the functions in this group take a UI and a prompt string. + The string input and verify addition functions also take a flag argument, + a buffer for the result to end up with, a minimum input size and a maximum + input size (the result buffer MUST be large enough to be able to contain + the maximum number of characters). Additionally, the verify addition + functions takes another buffer to compare the result against. + The boolean input functions take an action description string (which should + be safe to ignore if the expected user action is obvious, for example with + a dialog box with an OK button and a Cancel button), a string of acceptable + characters to mean OK and to mean Cancel. The two last strings are checked + to make sure they don't have common characters. Additionally, the same + flag argument as for the string input is taken, as well as a result buffer. + The result buffer is required to be at least one byte long. Depending on + the answer, the first character from the OK or the Cancel character strings + will be stored in the first byte of the result buffer. No NUL will be + added, so the result is *not* a string. + + On success, the all return an index of the added information. That index + is usefull when retrieving results with UI_get0_result(). */ +int UI_add_input_string(UI *ui, const char *prompt, int flags, + char *result_buf, int minsize, int maxsize); +int UI_dup_input_string(UI *ui, const char *prompt, int flags, + char *result_buf, int minsize, int maxsize); +int UI_add_verify_string(UI *ui, const char *prompt, int flags, + char *result_buf, int minsize, int maxsize, + const char *test_buf); +int UI_dup_verify_string(UI *ui, const char *prompt, int flags, + char *result_buf, int minsize, int maxsize, + const char *test_buf); +int UI_add_input_boolean(UI *ui, const char *prompt, const char *action_desc, + const char *ok_chars, const char *cancel_chars, + int flags, char *result_buf); +int UI_dup_input_boolean(UI *ui, const char *prompt, const char *action_desc, + const char *ok_chars, const char *cancel_chars, + int flags, char *result_buf); +int UI_add_info_string(UI *ui, const char *text); +int UI_dup_info_string(UI *ui, const char *text); +int UI_add_error_string(UI *ui, const char *text); +int UI_dup_error_string(UI *ui, const char *text); + +/* These are the possible flags. They can be or'ed together. */ +/* Use to have echoing of input */ +# define UI_INPUT_FLAG_ECHO 0x01 +/* + * Use a default password. Where that password is found is completely up to + * the application, it might for example be in the user data set with + * UI_add_user_data(). It is not recommended to have more than one input in + * each UI being marked with this flag, or the application might get + * confused. + */ +# define UI_INPUT_FLAG_DEFAULT_PWD 0x02 + +/*- + * The user of these routines may want to define flags of their own. The core + * UI won't look at those, but will pass them on to the method routines. They + * must use higher bits so they don't get confused with the UI bits above. + * UI_INPUT_FLAG_USER_BASE tells which is the lowest bit to use. A good + * example of use is this: + * + * #define MY_UI_FLAG1 (0x01 << UI_INPUT_FLAG_USER_BASE) + * +*/ +# define UI_INPUT_FLAG_USER_BASE 16 + +/*- + * The following function helps construct a prompt. object_desc is a + * textual short description of the object, for example "pass phrase", + * and object_name is the name of the object (might be a card name or + * a file name. + * The returned string shall always be allocated on the heap with + * OPENSSL_malloc(), and need to be free'd with OPENSSL_free(). + * + * If the ui_method doesn't contain a pointer to a user-defined prompt + * constructor, a default string is built, looking like this: + * + * "Enter {object_desc} for {object_name}:" + * + * So, if object_desc has the value "pass phrase" and object_name has + * the value "foo.key", the resulting string is: + * + * "Enter pass phrase for foo.key:" +*/ +char *UI_construct_prompt(UI *ui_method, + const char *object_desc, const char *object_name); + +/* + * The following function is used to store a pointer to user-specific data. + * Any previous such pointer will be returned and replaced. + * + * For callback purposes, this function makes a lot more sense than using + * ex_data, since the latter requires that different parts of OpenSSL or + * applications share the same ex_data index. + * + * Note that the UI_OpenSSL() method completely ignores the user data. Other + * methods may not, however. + */ +void *UI_add_user_data(UI *ui, void *user_data); +/* We need a user data retrieving function as well. */ +void *UI_get0_user_data(UI *ui); + +/* Return the result associated with a prompt given with the index i. */ +const char *UI_get0_result(UI *ui, int i); + +/* When all strings have been added, process the whole thing. */ +int UI_process(UI *ui); + +/* + * Give a user interface parametrised control commands. This can be used to + * send down an integer, a data pointer or a function pointer, as well as be + * used to get information from a UI. + */ +int UI_ctrl(UI *ui, int cmd, long i, void *p, void (*f) (void)); + +/* The commands */ +/* + * Use UI_CONTROL_PRINT_ERRORS with the value 1 to have UI_process print the + * OpenSSL error stack before printing any info or added error messages and + * before any prompting. + */ +# define UI_CTRL_PRINT_ERRORS 1 +/* + * Check if a UI_process() is possible to do again with the same instance of + * a user interface. This makes UI_ctrl() return 1 if it is redoable, and 0 + * if not. + */ +# define UI_CTRL_IS_REDOABLE 2 + +/* Some methods may use extra data */ +# define UI_set_app_data(s,arg) UI_set_ex_data(s,0,arg) +# define UI_get_app_data(s) UI_get_ex_data(s,0) +int UI_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new *new_func, + CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func); +int UI_set_ex_data(UI *r, int idx, void *arg); +void *UI_get_ex_data(UI *r, int idx); + +/* Use specific methods instead of the built-in one */ +void UI_set_default_method(const UI_METHOD *meth); +const UI_METHOD *UI_get_default_method(void); +const UI_METHOD *UI_get_method(UI *ui); +const UI_METHOD *UI_set_method(UI *ui, const UI_METHOD *meth); + +/* The method with all the built-in thingies */ +UI_METHOD *UI_OpenSSL(void); + +/* ---------- For method writers ---------- */ +/*- + A method contains a number of functions that implement the low level + of the User Interface. The functions are: + + an opener This function starts a session, maybe by opening + a channel to a tty, or by opening a window. + a writer This function is called to write a given string, + maybe to the tty, maybe as a field label in a + window. + a flusher This function is called to flush everything that + has been output so far. It can be used to actually + display a dialog box after it has been built. + a reader This function is called to read a given prompt, + maybe from the tty, maybe from a field in a + window. Note that it's called wth all string + structures, not only the prompt ones, so it must + check such things itself. + a closer This function closes the session, maybe by closing + the channel to the tty, or closing the window. + + All these functions are expected to return: + + 0 on error. + 1 on success. + -1 on out-of-band events, for example if some prompting has + been canceled (by pressing Ctrl-C, for example). This is + only checked when returned by the flusher or the reader. + + The way this is used, the opener is first called, then the writer for all + strings, then the flusher, then the reader for all strings and finally the + closer. Note that if you want to prompt from a terminal or other command + line interface, the best is to have the reader also write the prompts + instead of having the writer do it. If you want to prompt from a dialog + box, the writer can be used to build up the contents of the box, and the + flusher to actually display the box and run the event loop until all data + has been given, after which the reader only grabs the given data and puts + them back into the UI strings. + + All method functions take a UI as argument. Additionally, the writer and + the reader take a UI_STRING. +*/ + +/* + * The UI_STRING type is the data structure that contains all the needed info + * about a string or a prompt, including test data for a verification prompt. + */ +typedef struct ui_string_st UI_STRING; +DECLARE_STACK_OF(UI_STRING) + +/* + * The different types of strings that are currently supported. This is only + * needed by method authors. + */ +enum UI_string_types { + UIT_NONE = 0, + UIT_PROMPT, /* Prompt for a string */ + UIT_VERIFY, /* Prompt for a string and verify */ + UIT_BOOLEAN, /* Prompt for a yes/no response */ + UIT_INFO, /* Send info to the user */ + UIT_ERROR /* Send an error message to the user */ +}; + +/* Create and manipulate methods */ +UI_METHOD *UI_create_method(char *name); +void UI_destroy_method(UI_METHOD *ui_method); +int UI_method_set_opener(UI_METHOD *method, int (*opener) (UI *ui)); +int UI_method_set_writer(UI_METHOD *method, + int (*writer) (UI *ui, UI_STRING *uis)); +int UI_method_set_flusher(UI_METHOD *method, int (*flusher) (UI *ui)); +int UI_method_set_reader(UI_METHOD *method, + int (*reader) (UI *ui, UI_STRING *uis)); +int UI_method_set_closer(UI_METHOD *method, int (*closer) (UI *ui)); +int UI_method_set_prompt_constructor(UI_METHOD *method, + char *(*prompt_constructor) (UI *ui, + const char + *object_desc, + const char + *object_name)); +int (*UI_method_get_opener(UI_METHOD *method)) (UI *); +int (*UI_method_get_writer(UI_METHOD *method)) (UI *, UI_STRING *); +int (*UI_method_get_flusher(UI_METHOD *method)) (UI *); +int (*UI_method_get_reader(UI_METHOD *method)) (UI *, UI_STRING *); +int (*UI_method_get_closer(UI_METHOD *method)) (UI *); +char *(*UI_method_get_prompt_constructor(UI_METHOD *method)) (UI *, + const char *, + const char *); + +/* + * The following functions are helpers for method writers to access relevant + * data from a UI_STRING. + */ + +/* Return type of the UI_STRING */ +enum UI_string_types UI_get_string_type(UI_STRING *uis); +/* Return input flags of the UI_STRING */ +int UI_get_input_flags(UI_STRING *uis); +/* Return the actual string to output (the prompt, info or error) */ +const char *UI_get0_output_string(UI_STRING *uis); +/* + * Return the optional action string to output (the boolean promtp + * instruction) + */ +const char *UI_get0_action_string(UI_STRING *uis); +/* Return the result of a prompt */ +const char *UI_get0_result_string(UI_STRING *uis); +/* + * Return the string to test the result against. Only useful with verifies. + */ +const char *UI_get0_test_string(UI_STRING *uis); +/* Return the required minimum size of the result */ +int UI_get_result_minsize(UI_STRING *uis); +/* Return the required maximum size of the result */ +int UI_get_result_maxsize(UI_STRING *uis); +/* Set the result of a UI_STRING. */ +int UI_set_result(UI *ui, UI_STRING *uis, const char *result); + +/* A couple of popular utility functions */ +int UI_UTIL_read_pw_string(char *buf, int length, const char *prompt, + int verify); +int UI_UTIL_read_pw(char *buf, char *buff, int size, const char *prompt, + int verify); + +/* 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_UI_strings(void); + +/* Error codes for the UI functions. */ + +/* Function codes. */ +# define UI_F_GENERAL_ALLOCATE_BOOLEAN 108 +# define UI_F_GENERAL_ALLOCATE_PROMPT 109 +# define UI_F_GENERAL_ALLOCATE_STRING 100 +# define UI_F_UI_CTRL 111 +# define UI_F_UI_DUP_ERROR_STRING 101 +# define UI_F_UI_DUP_INFO_STRING 102 +# define UI_F_UI_DUP_INPUT_BOOLEAN 110 +# define UI_F_UI_DUP_INPUT_STRING 103 +# define UI_F_UI_DUP_VERIFY_STRING 106 +# define UI_F_UI_GET0_RESULT 107 +# define UI_F_UI_NEW_METHOD 104 +# define UI_F_UI_SET_RESULT 105 + +/* Reason codes. */ +# define UI_R_COMMON_OK_AND_CANCEL_CHARACTERS 104 +# define UI_R_INDEX_TOO_LARGE 102 +# define UI_R_INDEX_TOO_SMALL 103 +# define UI_R_NO_RESULT_BUFFER 105 +# define UI_R_RESULT_TOO_LARGE 100 +# define UI_R_RESULT_TOO_SMALL 101 +# define UI_R_UNKNOWN_CONTROL_COMMAND 106 + +#ifdef __cplusplus +} +#endif +#endif diff --git a/dependencies/include/openssl/ui_compat.h b/dependencies/include/openssl/ui_compat.h new file mode 100644 index 0000000..bf54154 --- /dev/null +++ b/dependencies/include/openssl/ui_compat.h @@ -0,0 +1,88 @@ +/* crypto/ui/ui.h */ +/* + * Written by Richard Levitte (richard@levitte.org) for the OpenSSL project + * 2001. + */ +/* ==================================================================== + * Copyright (c) 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_UI_COMPAT_H +# define HEADER_UI_COMPAT_H + +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * The following functions were previously part of the DES section, and are + * provided here for backward compatibility reasons. + */ + +# define des_read_pw_string(b,l,p,v) \ + _ossl_old_des_read_pw_string((b),(l),(p),(v)) +# define des_read_pw(b,bf,s,p,v) \ + _ossl_old_des_read_pw((b),(bf),(s),(p),(v)) + +int _ossl_old_des_read_pw_string(char *buf, int length, const char *prompt, + int verify); +int _ossl_old_des_read_pw(char *buf, char *buff, int size, const char *prompt, + int verify); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/dependencies/include/openssl/whrlpool.h b/dependencies/include/openssl/whrlpool.h new file mode 100644 index 0000000..73c749d --- /dev/null +++ b/dependencies/include/openssl/whrlpool.h @@ -0,0 +1,41 @@ +#ifndef HEADER_WHRLPOOL_H +# define HEADER_WHRLPOOL_H + +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +# define WHIRLPOOL_DIGEST_LENGTH (512/8) +# define WHIRLPOOL_BBLOCK 512 +# define WHIRLPOOL_COUNTER (256/8) + +typedef struct { + union { + unsigned char c[WHIRLPOOL_DIGEST_LENGTH]; + /* double q is here to ensure 64-bit alignment */ + double q[WHIRLPOOL_DIGEST_LENGTH / sizeof(double)]; + } H; + unsigned char data[WHIRLPOOL_BBLOCK / 8]; + unsigned int bitoff; + size_t bitlen[WHIRLPOOL_COUNTER / sizeof(size_t)]; +} WHIRLPOOL_CTX; + +# ifndef OPENSSL_NO_WHIRLPOOL +# ifdef OPENSSL_FIPS +int private_WHIRLPOOL_Init(WHIRLPOOL_CTX *c); +# endif +int WHIRLPOOL_Init(WHIRLPOOL_CTX *c); +int WHIRLPOOL_Update(WHIRLPOOL_CTX *c, const void *inp, size_t bytes); +void WHIRLPOOL_BitUpdate(WHIRLPOOL_CTX *c, const void *inp, size_t bits); +int WHIRLPOOL_Final(unsigned char *md, WHIRLPOOL_CTX *c); +unsigned char *WHIRLPOOL(const void *inp, size_t bytes, unsigned char *md); +# endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/dependencies/include/openssl/x509.h b/dependencies/include/openssl/x509.h new file mode 100644 index 0000000..6fa28eb --- /dev/null +++ b/dependencies/include/openssl/x509.h @@ -0,0 +1,1330 @@ +/* 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_NAME_CONSTRAINTS 106 +# 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_NAME_TOO_LONG 134 +# 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/dependencies/include/openssl/x509_vfy.h b/dependencies/include/openssl/x509_vfy.h new file mode 100644 index 0000000..5062682 --- /dev/null +++ b/dependencies/include/openssl/x509_vfy.h @@ -0,0 +1,652 @@ +/* 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 +# define X509_V_ERR_UNSPECIFIED 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_APPLICATION_VERIFICATION 50 +# 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 + +/* Caller error */ +# define X509_V_ERR_INVALID_CALL 65 +/* Issuer lookup error */ +# define X509_V_ERR_STORE_LOOKUP 66 + +# define X509_V_ERR_PROXY_SUBJECT_NAME_VIOLATION 67 + +/* 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 +/* + * If the initial chain is not trusted, do not attempt to build an alternative + * chain. Alternate chain checking was introduced in 1.0.2b. Setting this flag + * will force the behaviour to match that of previous versions. + */ +# define X509_V_FLAG_NO_ALT_CHAINS 0x100000 + +# 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/dependencies/include/openssl/x509v3.h b/dependencies/include/openssl/x509v3.h new file mode 100644 index 0000000..f5c6156 --- /dev/null +++ b/dependencies/include/openssl/x509v3.h @@ -0,0 +1,1055 @@ +/* x509v3.h */ +/* + * Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL project + * 1999. + */ +/* ==================================================================== + * Copyright (c) 1999-2004 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_X509V3_H +# define HEADER_X509V3_H + +# include +# include +# 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 + +/* Forward reference */ +struct v3_ext_method; +struct v3_ext_ctx; + +/* Useful typedefs */ + +typedef void *(*X509V3_EXT_NEW)(void); +typedef void (*X509V3_EXT_FREE) (void *); +typedef void *(*X509V3_EXT_D2I)(void *, const unsigned char **, long); +typedef int (*X509V3_EXT_I2D) (void *, unsigned char **); +typedef STACK_OF(CONF_VALUE) * + (*X509V3_EXT_I2V) (const struct v3_ext_method *method, void *ext, + STACK_OF(CONF_VALUE) *extlist); +typedef void *(*X509V3_EXT_V2I)(const struct v3_ext_method *method, + struct v3_ext_ctx *ctx, + STACK_OF(CONF_VALUE) *values); +typedef char *(*X509V3_EXT_I2S)(const struct v3_ext_method *method, + void *ext); +typedef void *(*X509V3_EXT_S2I)(const struct v3_ext_method *method, + struct v3_ext_ctx *ctx, const char *str); +typedef int (*X509V3_EXT_I2R) (const struct v3_ext_method *method, void *ext, + BIO *out, int indent); +typedef void *(*X509V3_EXT_R2I)(const struct v3_ext_method *method, + struct v3_ext_ctx *ctx, const char *str); + +/* V3 extension structure */ + +struct v3_ext_method { + int ext_nid; + int ext_flags; +/* If this is set the following four fields are ignored */ + ASN1_ITEM_EXP *it; +/* Old style ASN1 calls */ + X509V3_EXT_NEW ext_new; + X509V3_EXT_FREE ext_free; + X509V3_EXT_D2I d2i; + X509V3_EXT_I2D i2d; +/* The following pair is used for string extensions */ + X509V3_EXT_I2S i2s; + X509V3_EXT_S2I s2i; +/* The following pair is used for multi-valued extensions */ + X509V3_EXT_I2V i2v; + X509V3_EXT_V2I v2i; +/* The following are used for raw extensions */ + X509V3_EXT_I2R i2r; + X509V3_EXT_R2I r2i; + void *usr_data; /* Any extension specific data */ +}; + +typedef struct X509V3_CONF_METHOD_st { + char *(*get_string) (void *db, char *section, char *value); + STACK_OF(CONF_VALUE) *(*get_section) (void *db, char *section); + void (*free_string) (void *db, char *string); + void (*free_section) (void *db, STACK_OF(CONF_VALUE) *section); +} X509V3_CONF_METHOD; + +/* Context specific info */ +struct v3_ext_ctx { +# define CTX_TEST 0x1 + int flags; + X509 *issuer_cert; + X509 *subject_cert; + X509_REQ *subject_req; + X509_CRL *crl; + X509V3_CONF_METHOD *db_meth; + void *db; +/* Maybe more here */ +}; + +typedef struct v3_ext_method X509V3_EXT_METHOD; + +DECLARE_STACK_OF(X509V3_EXT_METHOD) + +/* ext_flags values */ +# define X509V3_EXT_DYNAMIC 0x1 +# define X509V3_EXT_CTX_DEP 0x2 +# define X509V3_EXT_MULTILINE 0x4 + +typedef BIT_STRING_BITNAME ENUMERATED_NAMES; + +typedef struct BASIC_CONSTRAINTS_st { + int ca; + ASN1_INTEGER *pathlen; +} BASIC_CONSTRAINTS; + +typedef struct PKEY_USAGE_PERIOD_st { + ASN1_GENERALIZEDTIME *notBefore; + ASN1_GENERALIZEDTIME *notAfter; +} PKEY_USAGE_PERIOD; + +typedef struct otherName_st { + ASN1_OBJECT *type_id; + ASN1_TYPE *value; +} OTHERNAME; + +typedef struct EDIPartyName_st { + ASN1_STRING *nameAssigner; + ASN1_STRING *partyName; +} EDIPARTYNAME; + +typedef struct GENERAL_NAME_st { +# define GEN_OTHERNAME 0 +# define GEN_EMAIL 1 +# define GEN_DNS 2 +# define GEN_X400 3 +# define GEN_DIRNAME 4 +# define GEN_EDIPARTY 5 +# define GEN_URI 6 +# define GEN_IPADD 7 +# define GEN_RID 8 + int type; + union { + char *ptr; + OTHERNAME *otherName; /* otherName */ + ASN1_IA5STRING *rfc822Name; + ASN1_IA5STRING *dNSName; + ASN1_TYPE *x400Address; + X509_NAME *directoryName; + EDIPARTYNAME *ediPartyName; + ASN1_IA5STRING *uniformResourceIdentifier; + ASN1_OCTET_STRING *iPAddress; + ASN1_OBJECT *registeredID; + /* Old names */ + ASN1_OCTET_STRING *ip; /* iPAddress */ + X509_NAME *dirn; /* dirn */ + ASN1_IA5STRING *ia5; /* rfc822Name, dNSName, + * uniformResourceIdentifier */ + ASN1_OBJECT *rid; /* registeredID */ + ASN1_TYPE *other; /* x400Address */ + } d; +} GENERAL_NAME; + +typedef STACK_OF(GENERAL_NAME) GENERAL_NAMES; + +typedef struct ACCESS_DESCRIPTION_st { + ASN1_OBJECT *method; + GENERAL_NAME *location; +} ACCESS_DESCRIPTION; + +typedef STACK_OF(ACCESS_DESCRIPTION) AUTHORITY_INFO_ACCESS; + +typedef STACK_OF(ASN1_OBJECT) EXTENDED_KEY_USAGE; + +DECLARE_STACK_OF(GENERAL_NAME) +DECLARE_ASN1_SET_OF(GENERAL_NAME) + +DECLARE_STACK_OF(ACCESS_DESCRIPTION) +DECLARE_ASN1_SET_OF(ACCESS_DESCRIPTION) + +typedef struct DIST_POINT_NAME_st { + int type; + union { + GENERAL_NAMES *fullname; + STACK_OF(X509_NAME_ENTRY) *relativename; + } name; +/* If relativename then this contains the full distribution point name */ + X509_NAME *dpname; +} DIST_POINT_NAME; +/* All existing reasons */ +# define CRLDP_ALL_REASONS 0x807f + +# define CRL_REASON_NONE -1 +# define CRL_REASON_UNSPECIFIED 0 +# define CRL_REASON_KEY_COMPROMISE 1 +# define CRL_REASON_CA_COMPROMISE 2 +# define CRL_REASON_AFFILIATION_CHANGED 3 +# define CRL_REASON_SUPERSEDED 4 +# define CRL_REASON_CESSATION_OF_OPERATION 5 +# define CRL_REASON_CERTIFICATE_HOLD 6 +# define CRL_REASON_REMOVE_FROM_CRL 8 +# define CRL_REASON_PRIVILEGE_WITHDRAWN 9 +# define CRL_REASON_AA_COMPROMISE 10 + +struct DIST_POINT_st { + DIST_POINT_NAME *distpoint; + ASN1_BIT_STRING *reasons; + GENERAL_NAMES *CRLissuer; + int dp_reasons; +}; + +typedef STACK_OF(DIST_POINT) CRL_DIST_POINTS; + +DECLARE_STACK_OF(DIST_POINT) +DECLARE_ASN1_SET_OF(DIST_POINT) + +struct AUTHORITY_KEYID_st { + ASN1_OCTET_STRING *keyid; + GENERAL_NAMES *issuer; + ASN1_INTEGER *serial; +}; + +/* Strong extranet structures */ + +typedef struct SXNET_ID_st { + ASN1_INTEGER *zone; + ASN1_OCTET_STRING *user; +} SXNETID; + +DECLARE_STACK_OF(SXNETID) +DECLARE_ASN1_SET_OF(SXNETID) + +typedef struct SXNET_st { + ASN1_INTEGER *version; + STACK_OF(SXNETID) *ids; +} SXNET; + +typedef struct NOTICEREF_st { + ASN1_STRING *organization; + STACK_OF(ASN1_INTEGER) *noticenos; +} NOTICEREF; + +typedef struct USERNOTICE_st { + NOTICEREF *noticeref; + ASN1_STRING *exptext; +} USERNOTICE; + +typedef struct POLICYQUALINFO_st { + ASN1_OBJECT *pqualid; + union { + ASN1_IA5STRING *cpsuri; + USERNOTICE *usernotice; + ASN1_TYPE *other; + } d; +} POLICYQUALINFO; + +DECLARE_STACK_OF(POLICYQUALINFO) +DECLARE_ASN1_SET_OF(POLICYQUALINFO) + +typedef struct POLICYINFO_st { + ASN1_OBJECT *policyid; + STACK_OF(POLICYQUALINFO) *qualifiers; +} POLICYINFO; + +typedef STACK_OF(POLICYINFO) CERTIFICATEPOLICIES; + +DECLARE_STACK_OF(POLICYINFO) +DECLARE_ASN1_SET_OF(POLICYINFO) + +typedef struct POLICY_MAPPING_st { + ASN1_OBJECT *issuerDomainPolicy; + ASN1_OBJECT *subjectDomainPolicy; +} POLICY_MAPPING; + +DECLARE_STACK_OF(POLICY_MAPPING) + +typedef STACK_OF(POLICY_MAPPING) POLICY_MAPPINGS; + +typedef struct GENERAL_SUBTREE_st { + GENERAL_NAME *base; + ASN1_INTEGER *minimum; + ASN1_INTEGER *maximum; +} GENERAL_SUBTREE; + +DECLARE_STACK_OF(GENERAL_SUBTREE) + +struct NAME_CONSTRAINTS_st { + STACK_OF(GENERAL_SUBTREE) *permittedSubtrees; + STACK_OF(GENERAL_SUBTREE) *excludedSubtrees; +}; + +typedef struct POLICY_CONSTRAINTS_st { + ASN1_INTEGER *requireExplicitPolicy; + ASN1_INTEGER *inhibitPolicyMapping; +} POLICY_CONSTRAINTS; + +/* Proxy certificate structures, see RFC 3820 */ +typedef struct PROXY_POLICY_st { + ASN1_OBJECT *policyLanguage; + ASN1_OCTET_STRING *policy; +} PROXY_POLICY; + +typedef struct PROXY_CERT_INFO_EXTENSION_st { + ASN1_INTEGER *pcPathLengthConstraint; + PROXY_POLICY *proxyPolicy; +} PROXY_CERT_INFO_EXTENSION; + +DECLARE_ASN1_FUNCTIONS(PROXY_POLICY) +DECLARE_ASN1_FUNCTIONS(PROXY_CERT_INFO_EXTENSION) + +struct ISSUING_DIST_POINT_st { + DIST_POINT_NAME *distpoint; + int onlyuser; + int onlyCA; + ASN1_BIT_STRING *onlysomereasons; + int indirectCRL; + int onlyattr; +}; + +/* Values in idp_flags field */ +/* IDP present */ +# define IDP_PRESENT 0x1 +/* IDP values inconsistent */ +# define IDP_INVALID 0x2 +/* onlyuser true */ +# define IDP_ONLYUSER 0x4 +/* onlyCA true */ +# define IDP_ONLYCA 0x8 +/* onlyattr true */ +# define IDP_ONLYATTR 0x10 +/* indirectCRL true */ +# define IDP_INDIRECT 0x20 +/* onlysomereasons present */ +# define IDP_REASONS 0x40 + +# define X509V3_conf_err(val) ERR_add_error_data(6, "section:", val->section, \ +",name:", val->name, ",value:", val->value); + +# define X509V3_set_ctx_test(ctx) \ + X509V3_set_ctx(ctx, NULL, NULL, NULL, NULL, CTX_TEST) +# define X509V3_set_ctx_nodb(ctx) (ctx)->db = NULL; + +# define EXT_BITSTRING(nid, table) { nid, 0, ASN1_ITEM_ref(ASN1_BIT_STRING), \ + 0,0,0,0, \ + 0,0, \ + (X509V3_EXT_I2V)i2v_ASN1_BIT_STRING, \ + (X509V3_EXT_V2I)v2i_ASN1_BIT_STRING, \ + NULL, NULL, \ + table} + +# define EXT_IA5STRING(nid) { nid, 0, ASN1_ITEM_ref(ASN1_IA5STRING), \ + 0,0,0,0, \ + (X509V3_EXT_I2S)i2s_ASN1_IA5STRING, \ + (X509V3_EXT_S2I)s2i_ASN1_IA5STRING, \ + 0,0,0,0, \ + NULL} + +# define EXT_END { -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} + +/* X509_PURPOSE stuff */ + +# define EXFLAG_BCONS 0x1 +# define EXFLAG_KUSAGE 0x2 +# define EXFLAG_XKUSAGE 0x4 +# define EXFLAG_NSCERT 0x8 + +# define EXFLAG_CA 0x10 +/* Really self issued not necessarily self signed */ +# define EXFLAG_SI 0x20 +# define EXFLAG_V1 0x40 +# define EXFLAG_INVALID 0x80 +# define EXFLAG_SET 0x100 +# define EXFLAG_CRITICAL 0x200 +# define EXFLAG_PROXY 0x400 + +# define EXFLAG_INVALID_POLICY 0x800 +# define EXFLAG_FRESHEST 0x1000 +/* Self signed */ +# define EXFLAG_SS 0x2000 + +# define KU_DIGITAL_SIGNATURE 0x0080 +# define KU_NON_REPUDIATION 0x0040 +# define KU_KEY_ENCIPHERMENT 0x0020 +# define KU_DATA_ENCIPHERMENT 0x0010 +# define KU_KEY_AGREEMENT 0x0008 +# define KU_KEY_CERT_SIGN 0x0004 +# define KU_CRL_SIGN 0x0002 +# define KU_ENCIPHER_ONLY 0x0001 +# define KU_DECIPHER_ONLY 0x8000 + +# define NS_SSL_CLIENT 0x80 +# define NS_SSL_SERVER 0x40 +# define NS_SMIME 0x20 +# define NS_OBJSIGN 0x10 +# define NS_SSL_CA 0x04 +# define NS_SMIME_CA 0x02 +# define NS_OBJSIGN_CA 0x01 +# define NS_ANY_CA (NS_SSL_CA|NS_SMIME_CA|NS_OBJSIGN_CA) + +# define XKU_SSL_SERVER 0x1 +# define XKU_SSL_CLIENT 0x2 +# define XKU_SMIME 0x4 +# define XKU_CODE_SIGN 0x8 +# define XKU_SGC 0x10 +# define XKU_OCSP_SIGN 0x20 +# define XKU_TIMESTAMP 0x40 +# define XKU_DVCS 0x80 +# define XKU_ANYEKU 0x100 + +# define X509_PURPOSE_DYNAMIC 0x1 +# define X509_PURPOSE_DYNAMIC_NAME 0x2 + +typedef struct x509_purpose_st { + int purpose; + int trust; /* Default trust ID */ + int flags; + int (*check_purpose) (const struct x509_purpose_st *, const X509 *, int); + char *name; + char *sname; + void *usr_data; +} X509_PURPOSE; + +# define X509_PURPOSE_SSL_CLIENT 1 +# define X509_PURPOSE_SSL_SERVER 2 +# define X509_PURPOSE_NS_SSL_SERVER 3 +# define X509_PURPOSE_SMIME_SIGN 4 +# define X509_PURPOSE_SMIME_ENCRYPT 5 +# define X509_PURPOSE_CRL_SIGN 6 +# define X509_PURPOSE_ANY 7 +# define X509_PURPOSE_OCSP_HELPER 8 +# define X509_PURPOSE_TIMESTAMP_SIGN 9 + +# define X509_PURPOSE_MIN 1 +# define X509_PURPOSE_MAX 9 + +/* Flags for X509V3_EXT_print() */ + +# define X509V3_EXT_UNKNOWN_MASK (0xfL << 16) +/* Return error for unknown extensions */ +# define X509V3_EXT_DEFAULT 0 +/* Print error for unknown extensions */ +# define X509V3_EXT_ERROR_UNKNOWN (1L << 16) +/* ASN1 parse unknown extensions */ +# define X509V3_EXT_PARSE_UNKNOWN (2L << 16) +/* BIO_dump unknown extensions */ +# define X509V3_EXT_DUMP_UNKNOWN (3L << 16) + +/* Flags for X509V3_add1_i2d */ + +# define X509V3_ADD_OP_MASK 0xfL +# define X509V3_ADD_DEFAULT 0L +# define X509V3_ADD_APPEND 1L +# define X509V3_ADD_REPLACE 2L +# define X509V3_ADD_REPLACE_EXISTING 3L +# define X509V3_ADD_KEEP_EXISTING 4L +# define X509V3_ADD_DELETE 5L +# define X509V3_ADD_SILENT 0x10 + +DECLARE_STACK_OF(X509_PURPOSE) + +DECLARE_ASN1_FUNCTIONS(BASIC_CONSTRAINTS) + +DECLARE_ASN1_FUNCTIONS(SXNET) +DECLARE_ASN1_FUNCTIONS(SXNETID) + +int SXNET_add_id_asc(SXNET **psx, char *zone, char *user, int userlen); +int SXNET_add_id_ulong(SXNET **psx, unsigned long lzone, char *user, + int userlen); +int SXNET_add_id_INTEGER(SXNET **psx, ASN1_INTEGER *izone, char *user, + int userlen); + +ASN1_OCTET_STRING *SXNET_get_id_asc(SXNET *sx, char *zone); +ASN1_OCTET_STRING *SXNET_get_id_ulong(SXNET *sx, unsigned long lzone); +ASN1_OCTET_STRING *SXNET_get_id_INTEGER(SXNET *sx, ASN1_INTEGER *zone); + +DECLARE_ASN1_FUNCTIONS(AUTHORITY_KEYID) + +DECLARE_ASN1_FUNCTIONS(PKEY_USAGE_PERIOD) + +DECLARE_ASN1_FUNCTIONS(GENERAL_NAME) +GENERAL_NAME *GENERAL_NAME_dup(GENERAL_NAME *a); +int GENERAL_NAME_cmp(GENERAL_NAME *a, GENERAL_NAME *b); + +ASN1_BIT_STRING *v2i_ASN1_BIT_STRING(X509V3_EXT_METHOD *method, + X509V3_CTX *ctx, + STACK_OF(CONF_VALUE) *nval); +STACK_OF(CONF_VALUE) *i2v_ASN1_BIT_STRING(X509V3_EXT_METHOD *method, + ASN1_BIT_STRING *bits, + STACK_OF(CONF_VALUE) *extlist); + +STACK_OF(CONF_VALUE) *i2v_GENERAL_NAME(X509V3_EXT_METHOD *method, + GENERAL_NAME *gen, + STACK_OF(CONF_VALUE) *ret); +int GENERAL_NAME_print(BIO *out, GENERAL_NAME *gen); + +DECLARE_ASN1_FUNCTIONS(GENERAL_NAMES) + +STACK_OF(CONF_VALUE) *i2v_GENERAL_NAMES(X509V3_EXT_METHOD *method, + GENERAL_NAMES *gen, + STACK_OF(CONF_VALUE) *extlist); +GENERAL_NAMES *v2i_GENERAL_NAMES(const X509V3_EXT_METHOD *method, + X509V3_CTX *ctx, STACK_OF(CONF_VALUE) *nval); + +DECLARE_ASN1_FUNCTIONS(OTHERNAME) +DECLARE_ASN1_FUNCTIONS(EDIPARTYNAME) +int OTHERNAME_cmp(OTHERNAME *a, OTHERNAME *b); +void GENERAL_NAME_set0_value(GENERAL_NAME *a, int type, void *value); +void *GENERAL_NAME_get0_value(GENERAL_NAME *a, int *ptype); +int GENERAL_NAME_set0_othername(GENERAL_NAME *gen, + ASN1_OBJECT *oid, ASN1_TYPE *value); +int GENERAL_NAME_get0_otherName(GENERAL_NAME *gen, + ASN1_OBJECT **poid, ASN1_TYPE **pvalue); + +char *i2s_ASN1_OCTET_STRING(X509V3_EXT_METHOD *method, + ASN1_OCTET_STRING *ia5); +ASN1_OCTET_STRING *s2i_ASN1_OCTET_STRING(X509V3_EXT_METHOD *method, + X509V3_CTX *ctx, char *str); + +DECLARE_ASN1_FUNCTIONS(EXTENDED_KEY_USAGE) +int i2a_ACCESS_DESCRIPTION(BIO *bp, ACCESS_DESCRIPTION *a); + +DECLARE_ASN1_FUNCTIONS(CERTIFICATEPOLICIES) +DECLARE_ASN1_FUNCTIONS(POLICYINFO) +DECLARE_ASN1_FUNCTIONS(POLICYQUALINFO) +DECLARE_ASN1_FUNCTIONS(USERNOTICE) +DECLARE_ASN1_FUNCTIONS(NOTICEREF) + +DECLARE_ASN1_FUNCTIONS(CRL_DIST_POINTS) +DECLARE_ASN1_FUNCTIONS(DIST_POINT) +DECLARE_ASN1_FUNCTIONS(DIST_POINT_NAME) +DECLARE_ASN1_FUNCTIONS(ISSUING_DIST_POINT) + +int DIST_POINT_set_dpname(DIST_POINT_NAME *dpn, X509_NAME *iname); + +int NAME_CONSTRAINTS_check(X509 *x, NAME_CONSTRAINTS *nc); + +DECLARE_ASN1_FUNCTIONS(ACCESS_DESCRIPTION) +DECLARE_ASN1_FUNCTIONS(AUTHORITY_INFO_ACCESS) + +DECLARE_ASN1_ITEM(POLICY_MAPPING) +DECLARE_ASN1_ALLOC_FUNCTIONS(POLICY_MAPPING) +DECLARE_ASN1_ITEM(POLICY_MAPPINGS) + +DECLARE_ASN1_ITEM(GENERAL_SUBTREE) +DECLARE_ASN1_ALLOC_FUNCTIONS(GENERAL_SUBTREE) + +DECLARE_ASN1_ITEM(NAME_CONSTRAINTS) +DECLARE_ASN1_ALLOC_FUNCTIONS(NAME_CONSTRAINTS) + +DECLARE_ASN1_ALLOC_FUNCTIONS(POLICY_CONSTRAINTS) +DECLARE_ASN1_ITEM(POLICY_CONSTRAINTS) + +GENERAL_NAME *a2i_GENERAL_NAME(GENERAL_NAME *out, + const X509V3_EXT_METHOD *method, + X509V3_CTX *ctx, int gen_type, char *value, + int is_nc); + +# ifdef HEADER_CONF_H +GENERAL_NAME *v2i_GENERAL_NAME(const X509V3_EXT_METHOD *method, + X509V3_CTX *ctx, CONF_VALUE *cnf); +GENERAL_NAME *v2i_GENERAL_NAME_ex(GENERAL_NAME *out, + const X509V3_EXT_METHOD *method, + X509V3_CTX *ctx, CONF_VALUE *cnf, + int is_nc); +void X509V3_conf_free(CONF_VALUE *val); + +X509_EXTENSION *X509V3_EXT_nconf_nid(CONF *conf, X509V3_CTX *ctx, int ext_nid, + char *value); +X509_EXTENSION *X509V3_EXT_nconf(CONF *conf, X509V3_CTX *ctx, char *name, + char *value); +int X509V3_EXT_add_nconf_sk(CONF *conf, X509V3_CTX *ctx, char *section, + STACK_OF(X509_EXTENSION) **sk); +int X509V3_EXT_add_nconf(CONF *conf, X509V3_CTX *ctx, char *section, + X509 *cert); +int X509V3_EXT_REQ_add_nconf(CONF *conf, X509V3_CTX *ctx, char *section, + X509_REQ *req); +int X509V3_EXT_CRL_add_nconf(CONF *conf, X509V3_CTX *ctx, char *section, + X509_CRL *crl); + +X509_EXTENSION *X509V3_EXT_conf_nid(LHASH_OF(CONF_VALUE) *conf, + X509V3_CTX *ctx, int ext_nid, + char *value); +X509_EXTENSION *X509V3_EXT_conf(LHASH_OF(CONF_VALUE) *conf, X509V3_CTX *ctx, + char *name, char *value); +int X509V3_EXT_add_conf(LHASH_OF(CONF_VALUE) *conf, X509V3_CTX *ctx, + char *section, X509 *cert); +int X509V3_EXT_REQ_add_conf(LHASH_OF(CONF_VALUE) *conf, X509V3_CTX *ctx, + char *section, X509_REQ *req); +int X509V3_EXT_CRL_add_conf(LHASH_OF(CONF_VALUE) *conf, X509V3_CTX *ctx, + char *section, X509_CRL *crl); + +int X509V3_add_value_bool_nf(char *name, int asn1_bool, + STACK_OF(CONF_VALUE) **extlist); +int X509V3_get_value_bool(CONF_VALUE *value, int *asn1_bool); +int X509V3_get_value_int(CONF_VALUE *value, ASN1_INTEGER **aint); +void X509V3_set_nconf(X509V3_CTX *ctx, CONF *conf); +void X509V3_set_conf_lhash(X509V3_CTX *ctx, LHASH_OF(CONF_VALUE) *lhash); +# endif + +char *X509V3_get_string(X509V3_CTX *ctx, char *name, char *section); +STACK_OF(CONF_VALUE) *X509V3_get_section(X509V3_CTX *ctx, char *section); +void X509V3_string_free(X509V3_CTX *ctx, char *str); +void X509V3_section_free(X509V3_CTX *ctx, STACK_OF(CONF_VALUE) *section); +void X509V3_set_ctx(X509V3_CTX *ctx, X509 *issuer, X509 *subject, + X509_REQ *req, X509_CRL *crl, int flags); + +int X509V3_add_value(const char *name, const char *value, + STACK_OF(CONF_VALUE) **extlist); +int X509V3_add_value_uchar(const char *name, const unsigned char *value, + STACK_OF(CONF_VALUE) **extlist); +int X509V3_add_value_bool(const char *name, int asn1_bool, + STACK_OF(CONF_VALUE) **extlist); +int X509V3_add_value_int(const char *name, ASN1_INTEGER *aint, + STACK_OF(CONF_VALUE) **extlist); +char *i2s_ASN1_INTEGER(X509V3_EXT_METHOD *meth, ASN1_INTEGER *aint); +ASN1_INTEGER *s2i_ASN1_INTEGER(X509V3_EXT_METHOD *meth, char *value); +char *i2s_ASN1_ENUMERATED(X509V3_EXT_METHOD *meth, ASN1_ENUMERATED *aint); +char *i2s_ASN1_ENUMERATED_TABLE(X509V3_EXT_METHOD *meth, + ASN1_ENUMERATED *aint); +int X509V3_EXT_add(X509V3_EXT_METHOD *ext); +int X509V3_EXT_add_list(X509V3_EXT_METHOD *extlist); +int X509V3_EXT_add_alias(int nid_to, int nid_from); +void X509V3_EXT_cleanup(void); + +const X509V3_EXT_METHOD *X509V3_EXT_get(X509_EXTENSION *ext); +const X509V3_EXT_METHOD *X509V3_EXT_get_nid(int nid); +int X509V3_add_standard_extensions(void); +STACK_OF(CONF_VALUE) *X509V3_parse_list(const char *line); +void *X509V3_EXT_d2i(X509_EXTENSION *ext); +void *X509V3_get_d2i(STACK_OF(X509_EXTENSION) *x, int nid, int *crit, + int *idx); +int X509V3_EXT_free(int nid, void *ext_data); + +X509_EXTENSION *X509V3_EXT_i2d(int ext_nid, int crit, void *ext_struc); +int X509V3_add1_i2d(STACK_OF(X509_EXTENSION) **x, int nid, void *value, + int crit, unsigned long flags); + +char *hex_to_string(const unsigned char *buffer, long len); +unsigned char *string_to_hex(const char *str, long *len); +int name_cmp(const char *name, const char *cmp); + +void X509V3_EXT_val_prn(BIO *out, STACK_OF(CONF_VALUE) *val, int indent, + int ml); +int X509V3_EXT_print(BIO *out, X509_EXTENSION *ext, unsigned long flag, + int indent); +int X509V3_EXT_print_fp(FILE *out, X509_EXTENSION *ext, int flag, int indent); + +int X509V3_extensions_print(BIO *out, char *title, + STACK_OF(X509_EXTENSION) *exts, + unsigned long flag, int indent); + +int X509_check_ca(X509 *x); +int X509_check_purpose(X509 *x, int id, int ca); +int X509_supported_extension(X509_EXTENSION *ex); +int X509_PURPOSE_set(int *p, int purpose); +int X509_check_issued(X509 *issuer, X509 *subject); +int X509_check_akid(X509 *issuer, AUTHORITY_KEYID *akid); +int X509_PURPOSE_get_count(void); +X509_PURPOSE *X509_PURPOSE_get0(int idx); +int X509_PURPOSE_get_by_sname(char *sname); +int X509_PURPOSE_get_by_id(int id); +int X509_PURPOSE_add(int id, int trust, int flags, + int (*ck) (const X509_PURPOSE *, const X509 *, int), + char *name, char *sname, void *arg); +char *X509_PURPOSE_get0_name(X509_PURPOSE *xp); +char *X509_PURPOSE_get0_sname(X509_PURPOSE *xp); +int X509_PURPOSE_get_trust(X509_PURPOSE *xp); +void X509_PURPOSE_cleanup(void); +int X509_PURPOSE_get_id(X509_PURPOSE *); + +STACK_OF(OPENSSL_STRING) *X509_get1_email(X509 *x); +STACK_OF(OPENSSL_STRING) *X509_REQ_get1_email(X509_REQ *x); +void X509_email_free(STACK_OF(OPENSSL_STRING) *sk); +STACK_OF(OPENSSL_STRING) *X509_get1_ocsp(X509 *x); +/* Flags for X509_check_* functions */ + +/* + * Always check subject name for host match even if subject alt names present + */ +# define X509_CHECK_FLAG_ALWAYS_CHECK_SUBJECT 0x1 +/* Disable wildcard matching for dnsName fields and common name. */ +# define X509_CHECK_FLAG_NO_WILDCARDS 0x2 +/* Wildcards must not match a partial label. */ +# define X509_CHECK_FLAG_NO_PARTIAL_WILDCARDS 0x4 +/* Allow (non-partial) wildcards to match multiple labels. */ +# define X509_CHECK_FLAG_MULTI_LABEL_WILDCARDS 0x8 +/* Constraint verifier subdomain patterns to match a single labels. */ +# define X509_CHECK_FLAG_SINGLE_LABEL_SUBDOMAINS 0x10 +/* + * Match reference identifiers starting with "." to any sub-domain. + * This is a non-public flag, turned on implicitly when the subject + * reference identity is a DNS name. + */ +# define _X509_CHECK_FLAG_DOT_SUBDOMAINS 0x8000 + +int X509_check_host(X509 *x, const char *chk, size_t chklen, + unsigned int flags, char **peername); +int X509_check_email(X509 *x, const char *chk, size_t chklen, + unsigned int flags); +int X509_check_ip(X509 *x, const unsigned char *chk, size_t chklen, + unsigned int flags); +int X509_check_ip_asc(X509 *x, const char *ipasc, unsigned int flags); + +ASN1_OCTET_STRING *a2i_IPADDRESS(const char *ipasc); +ASN1_OCTET_STRING *a2i_IPADDRESS_NC(const char *ipasc); +int a2i_ipadd(unsigned char *ipout, const char *ipasc); +int X509V3_NAME_from_section(X509_NAME *nm, STACK_OF(CONF_VALUE) *dn_sk, + unsigned long chtype); + +void X509_POLICY_NODE_print(BIO *out, X509_POLICY_NODE *node, int indent); +DECLARE_STACK_OF(X509_POLICY_NODE) + +# ifndef OPENSSL_NO_RFC3779 + +typedef struct ASRange_st { + ASN1_INTEGER *min, *max; +} ASRange; + +# define ASIdOrRange_id 0 +# define ASIdOrRange_range 1 + +typedef struct ASIdOrRange_st { + int type; + union { + ASN1_INTEGER *id; + ASRange *range; + } u; +} ASIdOrRange; + +typedef STACK_OF(ASIdOrRange) ASIdOrRanges; +DECLARE_STACK_OF(ASIdOrRange) + +# define ASIdentifierChoice_inherit 0 +# define ASIdentifierChoice_asIdsOrRanges 1 + +typedef struct ASIdentifierChoice_st { + int type; + union { + ASN1_NULL *inherit; + ASIdOrRanges *asIdsOrRanges; + } u; +} ASIdentifierChoice; + +typedef struct ASIdentifiers_st { + ASIdentifierChoice *asnum, *rdi; +} ASIdentifiers; + +DECLARE_ASN1_FUNCTIONS(ASRange) +DECLARE_ASN1_FUNCTIONS(ASIdOrRange) +DECLARE_ASN1_FUNCTIONS(ASIdentifierChoice) +DECLARE_ASN1_FUNCTIONS(ASIdentifiers) + +typedef struct IPAddressRange_st { + ASN1_BIT_STRING *min, *max; +} IPAddressRange; + +# define IPAddressOrRange_addressPrefix 0 +# define IPAddressOrRange_addressRange 1 + +typedef struct IPAddressOrRange_st { + int type; + union { + ASN1_BIT_STRING *addressPrefix; + IPAddressRange *addressRange; + } u; +} IPAddressOrRange; + +typedef STACK_OF(IPAddressOrRange) IPAddressOrRanges; +DECLARE_STACK_OF(IPAddressOrRange) + +# define IPAddressChoice_inherit 0 +# define IPAddressChoice_addressesOrRanges 1 + +typedef struct IPAddressChoice_st { + int type; + union { + ASN1_NULL *inherit; + IPAddressOrRanges *addressesOrRanges; + } u; +} IPAddressChoice; + +typedef struct IPAddressFamily_st { + ASN1_OCTET_STRING *addressFamily; + IPAddressChoice *ipAddressChoice; +} IPAddressFamily; + +typedef STACK_OF(IPAddressFamily) IPAddrBlocks; +DECLARE_STACK_OF(IPAddressFamily) + +DECLARE_ASN1_FUNCTIONS(IPAddressRange) +DECLARE_ASN1_FUNCTIONS(IPAddressOrRange) +DECLARE_ASN1_FUNCTIONS(IPAddressChoice) +DECLARE_ASN1_FUNCTIONS(IPAddressFamily) + +/* + * API tag for elements of the ASIdentifer SEQUENCE. + */ +# define V3_ASID_ASNUM 0 +# define V3_ASID_RDI 1 + +/* + * AFI values, assigned by IANA. It'd be nice to make the AFI + * handling code totally generic, but there are too many little things + * that would need to be defined for other address families for it to + * be worth the trouble. + */ +# define IANA_AFI_IPV4 1 +# define IANA_AFI_IPV6 2 + +/* + * Utilities to construct and extract values from RFC3779 extensions, + * since some of the encodings (particularly for IP address prefixes + * and ranges) are a bit tedious to work with directly. + */ +int v3_asid_add_inherit(ASIdentifiers *asid, int which); +int v3_asid_add_id_or_range(ASIdentifiers *asid, int which, + ASN1_INTEGER *min, ASN1_INTEGER *max); +int v3_addr_add_inherit(IPAddrBlocks *addr, + const unsigned afi, const unsigned *safi); +int v3_addr_add_prefix(IPAddrBlocks *addr, + const unsigned afi, const unsigned *safi, + unsigned char *a, const int prefixlen); +int v3_addr_add_range(IPAddrBlocks *addr, + const unsigned afi, const unsigned *safi, + unsigned char *min, unsigned char *max); +unsigned v3_addr_get_afi(const IPAddressFamily *f); +int v3_addr_get_range(IPAddressOrRange *aor, const unsigned afi, + unsigned char *min, unsigned char *max, + const int length); + +/* + * Canonical forms. + */ +int v3_asid_is_canonical(ASIdentifiers *asid); +int v3_addr_is_canonical(IPAddrBlocks *addr); +int v3_asid_canonize(ASIdentifiers *asid); +int v3_addr_canonize(IPAddrBlocks *addr); + +/* + * Tests for inheritance and containment. + */ +int v3_asid_inherits(ASIdentifiers *asid); +int v3_addr_inherits(IPAddrBlocks *addr); +int v3_asid_subset(ASIdentifiers *a, ASIdentifiers *b); +int v3_addr_subset(IPAddrBlocks *a, IPAddrBlocks *b); + +/* + * Check whether RFC 3779 extensions nest properly in chains. + */ +int v3_asid_validate_path(X509_STORE_CTX *); +int v3_addr_validate_path(X509_STORE_CTX *); +int v3_asid_validate_resource_set(STACK_OF(X509) *chain, + ASIdentifiers *ext, int allow_inheritance); +int v3_addr_validate_resource_set(STACK_OF(X509) *chain, + IPAddrBlocks *ext, int allow_inheritance); + +# endif /* OPENSSL_NO_RFC3779 */ + +/* 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_X509V3_strings(void); + +/* Error codes for the X509V3 functions. */ + +/* Function codes. */ +# define X509V3_F_A2I_GENERAL_NAME 164 +# define X509V3_F_ASIDENTIFIERCHOICE_CANONIZE 161 +# define X509V3_F_ASIDENTIFIERCHOICE_IS_CANONICAL 162 +# define X509V3_F_COPY_EMAIL 122 +# define X509V3_F_COPY_ISSUER 123 +# define X509V3_F_DO_DIRNAME 144 +# define X509V3_F_DO_EXT_CONF 124 +# define X509V3_F_DO_EXT_I2D 135 +# define X509V3_F_DO_EXT_NCONF 151 +# define X509V3_F_DO_I2V_NAME_CONSTRAINTS 148 +# define X509V3_F_GNAMES_FROM_SECTNAME 156 +# define X509V3_F_HEX_TO_STRING 111 +# define X509V3_F_I2S_ASN1_ENUMERATED 121 +# define X509V3_F_I2S_ASN1_IA5STRING 149 +# define X509V3_F_I2S_ASN1_INTEGER 120 +# define X509V3_F_I2V_AUTHORITY_INFO_ACCESS 138 +# define X509V3_F_NOTICE_SECTION 132 +# define X509V3_F_NREF_NOS 133 +# define X509V3_F_POLICY_SECTION 131 +# define X509V3_F_PROCESS_PCI_VALUE 150 +# define X509V3_F_R2I_CERTPOL 130 +# define X509V3_F_R2I_PCI 155 +# define X509V3_F_S2I_ASN1_IA5STRING 100 +# define X509V3_F_S2I_ASN1_INTEGER 108 +# define X509V3_F_S2I_ASN1_OCTET_STRING 112 +# define X509V3_F_S2I_ASN1_SKEY_ID 114 +# define X509V3_F_S2I_SKEY_ID 115 +# define X509V3_F_SET_DIST_POINT_NAME 158 +# define X509V3_F_STRING_TO_HEX 113 +# define X509V3_F_SXNET_ADD_ID_ASC 125 +# define X509V3_F_SXNET_ADD_ID_INTEGER 126 +# define X509V3_F_SXNET_ADD_ID_ULONG 127 +# define X509V3_F_SXNET_GET_ID_ASC 128 +# define X509V3_F_SXNET_GET_ID_ULONG 129 +# define X509V3_F_V2I_ASIDENTIFIERS 163 +# define X509V3_F_V2I_ASN1_BIT_STRING 101 +# define X509V3_F_V2I_AUTHORITY_INFO_ACCESS 139 +# define X509V3_F_V2I_AUTHORITY_KEYID 119 +# define X509V3_F_V2I_BASIC_CONSTRAINTS 102 +# define X509V3_F_V2I_CRLD 134 +# define X509V3_F_V2I_EXTENDED_KEY_USAGE 103 +# define X509V3_F_V2I_GENERAL_NAMES 118 +# define X509V3_F_V2I_GENERAL_NAME_EX 117 +# define X509V3_F_V2I_IDP 157 +# define X509V3_F_V2I_IPADDRBLOCKS 159 +# define X509V3_F_V2I_ISSUER_ALT 153 +# define X509V3_F_V2I_NAME_CONSTRAINTS 147 +# define X509V3_F_V2I_POLICY_CONSTRAINTS 146 +# define X509V3_F_V2I_POLICY_MAPPINGS 145 +# define X509V3_F_V2I_SUBJECT_ALT 154 +# define X509V3_F_V3_ADDR_VALIDATE_PATH_INTERNAL 160 +# define X509V3_F_V3_GENERIC_EXTENSION 116 +# define X509V3_F_X509V3_ADD1_I2D 140 +# define X509V3_F_X509V3_ADD_VALUE 105 +# define X509V3_F_X509V3_EXT_ADD 104 +# define X509V3_F_X509V3_EXT_ADD_ALIAS 106 +# define X509V3_F_X509V3_EXT_CONF 107 +# define X509V3_F_X509V3_EXT_FREE 165 +# define X509V3_F_X509V3_EXT_I2D 136 +# define X509V3_F_X509V3_EXT_NCONF 152 +# define X509V3_F_X509V3_GET_SECTION 142 +# define X509V3_F_X509V3_GET_STRING 143 +# define X509V3_F_X509V3_GET_VALUE_BOOL 110 +# define X509V3_F_X509V3_PARSE_LIST 109 +# define X509V3_F_X509_PURPOSE_ADD 137 +# define X509V3_F_X509_PURPOSE_SET 141 + +/* Reason codes. */ +# define X509V3_R_BAD_IP_ADDRESS 118 +# define X509V3_R_BAD_OBJECT 119 +# define X509V3_R_BN_DEC2BN_ERROR 100 +# define X509V3_R_BN_TO_ASN1_INTEGER_ERROR 101 +# define X509V3_R_CANNOT_FIND_FREE_FUNCTION 168 +# define X509V3_R_DIRNAME_ERROR 149 +# define X509V3_R_DISTPOINT_ALREADY_SET 160 +# define X509V3_R_DUPLICATE_ZONE_ID 133 +# define X509V3_R_ERROR_CONVERTING_ZONE 131 +# define X509V3_R_ERROR_CREATING_EXTENSION 144 +# define X509V3_R_ERROR_IN_EXTENSION 128 +# define X509V3_R_EXPECTED_A_SECTION_NAME 137 +# define X509V3_R_EXTENSION_EXISTS 145 +# define X509V3_R_EXTENSION_NAME_ERROR 115 +# define X509V3_R_EXTENSION_NOT_FOUND 102 +# define X509V3_R_EXTENSION_SETTING_NOT_SUPPORTED 103 +# define X509V3_R_EXTENSION_VALUE_ERROR 116 +# define X509V3_R_ILLEGAL_EMPTY_EXTENSION 151 +# define X509V3_R_ILLEGAL_HEX_DIGIT 113 +# define X509V3_R_INCORRECT_POLICY_SYNTAX_TAG 152 +# define X509V3_R_INVALID_ASNUMBER 162 +# define X509V3_R_INVALID_ASRANGE 163 +# define X509V3_R_INVALID_BOOLEAN_STRING 104 +# define X509V3_R_INVALID_EXTENSION_STRING 105 +# define X509V3_R_INVALID_INHERITANCE 165 +# define X509V3_R_INVALID_IPADDRESS 166 +# define X509V3_R_INVALID_MULTIPLE_RDNS 161 +# define X509V3_R_INVALID_NAME 106 +# define X509V3_R_INVALID_NULL_ARGUMENT 107 +# define X509V3_R_INVALID_NULL_NAME 108 +# define X509V3_R_INVALID_NULL_VALUE 109 +# define X509V3_R_INVALID_NUMBER 140 +# define X509V3_R_INVALID_NUMBERS 141 +# define X509V3_R_INVALID_OBJECT_IDENTIFIER 110 +# define X509V3_R_INVALID_OPTION 138 +# define X509V3_R_INVALID_POLICY_IDENTIFIER 134 +# define X509V3_R_INVALID_PROXY_POLICY_SETTING 153 +# define X509V3_R_INVALID_PURPOSE 146 +# define X509V3_R_INVALID_SAFI 164 +# define X509V3_R_INVALID_SECTION 135 +# define X509V3_R_INVALID_SYNTAX 143 +# define X509V3_R_ISSUER_DECODE_ERROR 126 +# define X509V3_R_MISSING_VALUE 124 +# define X509V3_R_NEED_ORGANIZATION_AND_NUMBERS 142 +# define X509V3_R_NO_CONFIG_DATABASE 136 +# define X509V3_R_NO_ISSUER_CERTIFICATE 121 +# define X509V3_R_NO_ISSUER_DETAILS 127 +# define X509V3_R_NO_POLICY_IDENTIFIER 139 +# define X509V3_R_NO_PROXY_CERT_POLICY_LANGUAGE_DEFINED 154 +# define X509V3_R_NO_PUBLIC_KEY 114 +# define X509V3_R_NO_SUBJECT_DETAILS 125 +# define X509V3_R_ODD_NUMBER_OF_DIGITS 112 +# define X509V3_R_OPERATION_NOT_DEFINED 148 +# define X509V3_R_OTHERNAME_ERROR 147 +# define X509V3_R_POLICY_LANGUAGE_ALREADY_DEFINED 155 +# define X509V3_R_POLICY_PATH_LENGTH 156 +# define X509V3_R_POLICY_PATH_LENGTH_ALREADY_DEFINED 157 +# define X509V3_R_POLICY_SYNTAX_NOT_CURRENTLY_SUPPORTED 158 +# define X509V3_R_POLICY_WHEN_PROXY_LANGUAGE_REQUIRES_NO_POLICY 159 +# define X509V3_R_SECTION_NOT_FOUND 150 +# define X509V3_R_UNABLE_TO_GET_ISSUER_DETAILS 122 +# define X509V3_R_UNABLE_TO_GET_ISSUER_KEYID 123 +# define X509V3_R_UNKNOWN_BIT_STRING_ARGUMENT 111 +# define X509V3_R_UNKNOWN_EXTENSION 129 +# define X509V3_R_UNKNOWN_EXTENSION_NAME 130 +# define X509V3_R_UNKNOWN_OPTION 120 +# define X509V3_R_UNSUPPORTED_OPTION 117 +# define X509V3_R_UNSUPPORTED_TYPE 167 +# define X509V3_R_USER_TOO_LONG 132 + +#ifdef __cplusplus +} +#endif +#endif diff --git a/dependencies/lib/libcrypto.a b/dependencies/lib/libcrypto.a new file mode 100644 index 0000000000000000000000000000000000000000..9fa06c3a47a0c9f13026d98cbc6b4a0508bc8e77 GIT binary patch literal 22444606 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%0A>4q;!Sg$Cf&ba|0_I!y#w+6!n29L0H$G=_2h@> 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

b5F%_bPSwDRuWNbq^?Y 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

1=Bx;w{n+k<3<+V#_shS!OSG{*1zzB+^43q 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 z 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

1%gncV2uGIQ)yUly^v zC7Il4NY|NT%Z+C(Mym1Y;ofDW6~1EPi%K%Nk)WhUPp{@%d#8aWh(|-x2^K^IC4buqG z(=b{jXQ6W<4wVp)7hZtRqK|=6-}9&wB<mNisFti*3sP}A7xQQ^1@_T8`0cu=ekC~ z?M4C{0k<1TNp81l9LiP^+O^{VyK1=IE{BK46L7oH$%du#e1+7U>`C00Pm0_n!R!t$j~S`MNKYB5(-)>XJgXwqkEjAVNP`t$ z8)%q(&@i~&NbLcUU2eAnK#W0fyOF>WxZU1{1a3E)WGSibfZMGFIy6vNW^Okc)P~Lt z+-}rlMgX@Pm1#;pL2|j=ZiJN5xYoTC-K84oJbmger2!^AnpoZP!k@-xggVqlBy{mU z6@_ul?MCyK5hDKKPeUl9BOrC7KB3bfb^DgKlSDr996gdv@idx8bite+mc);09Rvgy zHtUAa;xZ-g!K4`_k(o}IzQY~aq#`Fed0(MRpON^jn~KbG^bBlzX5?feWsmGgtWuFV zMl$_05;Ib!YD95Cn?Ll0)j_xLfVoJ(38aJ(eXLPm~Y9MI37aD_~#3(0Ve3z_a@z6&( zK?cWCWg!*n;>Y#2cPS_26p@wjl4B>H{;i7Og(6UYU5U@-zD@Y7@m=B3c?WFqSF+9( ztdq1*2y?qqERaqO>?C!L!otI@P7@dr32v}YU*&)1ZPE( z-Ee|a>kEHZT4i;L{rzt5e+S?HQLC)(*D9;~waV%=tz> zjcPZ3U+Bym?CtCB)Ir5=XIIVC;hi*S*zV<{G^L;-_)MKxNatXRj+r{H#0#EWJ4J(6 zO%*AU?+YY_1HMdG$erT^T_JLoKPxRi;V2b}oE-6^0sI3zY<0NN0(DABgdDU^!aGXV&;4ZsNEh?h-VRDL6 z^mC!_Qst5PJo1AK=W9;_NlyyAre_3jUss~W;)GaK;*1?^N+}MY6r3u@=-mL<0(_;q z3}g%1bt-I73ILOX-Rg6eA?z-TLm`q&EDl5EJ>qb$IV?d_gwV}`ho$5pIS^&OLG1t$ z^WhZB5W>Bv$Uq}uhGL?%$jx#(;f`_%0D)753!K7GY!DLwj%I2?orh@%$1o|N7aQxv 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ΞrXeBa2_k{7H+~Gk?b5X53ydIK^!j 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 QYJeA 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

    QG9Xf=W2y{THHEg7GNdx1 zq1jMFF;G%u<{UcPD=W8G;oG?yCr>H8wI#RKDa~^Oo;JS8-=ZfmPYc@@O{Q*7_jb!0 z=UsQTjapf(k~IIbSK~XkCA;fNFwA5FCQGMFSU0N6h1{jGoV70Udc#;bFejyqRp?G` zshhGG_EnB^BnolHwAk!6qO!Nd+aK-?E{E}HF{lbyi;K8}Wnpa9-k<68g;}B8q8Rt& zNg!pGaMt_z3{GB^XpTW$}vExKBFie+?9&7*s2mrkWe3TCqt zOt=4bA;k_YD4c6myO7>^G-r&5yp8lNPJPh2#_F@Cj|gAwL?A9EcDayrFA21*_$eZy zHi=m;J6alqEWjj03o1fLj5D?98WXPG6%=xV12qUKFI?mLWPt`pFd?M;W~l{rhv|Pu z8{H^IdmCpiJ5eW!UUa-~60*!OEGeY;ONKR#2q!PdLj?*cF56aU8XNtB2em?nf27xX|8PP~Aikm3afijZELPF?>NyFS^CijWZpiVHa}El|Q$xq?Ej za-aqw#e1Egv4T9>mPWC~+xV10=6on6I!|_xiKx* z;Hb`<$LPFojL!SU=)7-?&ihW$xwW6C0o-t;7K|4mpLU>xkn*WboetsD@1bao@)GhL zr){H~ z6VzRd^;fz->2%*H}49PJN+fP07 z;feywZ*XHLWQzmEg}j&{9Zuo;TtOi(cc2C#ccisVPlDz~+tMhucpHzMiqVam#%g@3 zRE!mkW>F#`K(z}g{_Dv|I0*p+g_IEBph-xtL#LXbM!VG_7H#5yQrd+UBPi`c4|wE+ zmhS&ic|6Z~`W>$^QiXiqf#O19AghH(8*^p6#;JmkXE;!Ukn*MH%p-NQEsbJ}xAEBJ zF}iWnSdC9z9;1~sixLR|vM!`I8c6Y|Xe35QqiL*YoT@x5Ynan;2d|MKA@6aZxR4Jp zq@yg{L03@7XC0_P$mbZ!oS|Ws5Cd$hQAls&u`@Kfano3hPo1IBN}5H9ga8>5Qv4^6 znn#2?$X-BDNC^Q3u#jGdPL-k27PW{)_i;xwfQ1$#XkZHcq(@F@>HZ%LU~Y<){3M71 z5%LV)iaZI~;6QO9w>VIPkX;PvQV?#y5sV8dzm{dL8E%7BnbW*cNU;iW7t*V7>_T!i zYHGTpw@FBG4Jj5Z)cf zVicJ;Ry4+v8%rOl6IqGKejeh{gKj9cNZ8>gnxCE=qQ_S9JEoy9N`@3%~CPi1b^ z)!A0DIUXO~Z*}>S@=EDFbNfv8TIJ;x_+PB=?MwEgQe8kj4+kL@(L}O6HrO=~9oXKN zOqF*~aH6S!1RmZ2gJk1z{w6(*roWpDNs-lu;)aAwShoUzz!DH1jenTHo&OitUxX` z*boWi&ML=tZ>KrXC~YcKNA}!uv^gV?gEqP61VS@Gl?Dn(!#R;a!Az+2YAA8r|Bw3g z`j!h9X9n!WusSC=Q}pI& zXTzIv6}p^YnZk0<12iWvjy6MdZXh%bz}!+ODJoZe`%~pwvL+DlhhdF>3kA|YF(N|2 zRj%K_W(CHTqOX8m=8gDfintN4Np8Cel_P3V3~!MJm8J@`p}dZ2In~orXX>& ze=%A9Qb~6pQ~|4NXhrEAPsxr1!b`waObko}ds+?X#bgs@W3Doe0f^5HOn^*54anJn zoVi*7aix00d2q@fL(TY4Ljjj#gTFh%n^c>8D(yh7zW_3&pdgSeAA~>DW-8hQ{f}RX zN-Qd(eA6NcO}#lc|c-w$6cg$0DAODpLJ%OsHyZTC}*lvV2Kzg_;X` zE82Q2?w~8x(b+z*IC|+|XMBql?d^#shdKwMvHr~|5{V@eR&-l@ptrjXGgoXNX<=^1 z|5kff3=+})s%jErElTNN7bdyR%{{TMXxm^rrYd5Ri3mNih{u`QQ=OM3tthw0yG{m{ zE{S4`ny}KX5~DE3M|P}&r4!`I|-&Pg;D*<6ef9MdwP&FYtZqDL_2!%q}RC@TohTeczHzacOr|rX+O9!*5AFg zdQlAQz+g{uWxTf^FNIkYTeh5#zLlxo_5n~`odW}1*jx4_I%7T5w5@YxSKpackwu#$ zi!NM>e@pbbyD$fEXvuGAt}k?dNDy-TcXQF165r=(H*$V5bh0MaQGe3Y8%xCpI=ho9@zH4N zL+dxLMfoHUSiiB22`bYiPIAh4pFW8K{`HE=*dfE&A!=Gsi)DZ*%53`$4>C5%$R)~ zV@sFBV|~#EvOdwd6-Q+%M3fYi^yaSKHq2Ds;-~7{o<#D|fJzf{pv**SNVye0*fW?) zCM@adf(tLe7{n+cu>ovAg>FO2w_*TefT1weQ0O|dDyBzBTh|sn8=_0hjg-$Z233!$ zoNe$JN#U4ohS$zClSuVOJ1|r!vgj;r*5xX8=Ona50Fo4J1evDyXo^}O5;R1jDZQqb zRrPL(cExDg>~8bcy9xqC+k4brf~R-gkvd-GT%}J9G>M~6RjO`aCB|wZZSPSB%9Kgk zMPRO=D(q3#=}@Z~$%;aAUozg=-kD5L)M8yp{mv}tjraCpj!=7-B^Yz5XnZIpoycAa za|@D_KtA*o#}kRDLZ1-WLahc>fG|Q;w0gQ@UFZ(|lS$ajy9DdpHEYg_%+qH)IM0co z0+JY^k;O~q>nR@x*tnxn{l)pwWldJr&`f(;?ksiISHieDCtjTwxijl7|C*b9d+erh zul@4Si+R@C@ET3vo@B_bV|jJvw>q!#&fr~vx|_51_|Ike)!`3$<%d}QVp_BQI?}(+ zkw4EXf8T#YKV4}#%<}3C)V1e4(w=9n4zE>f%c_A~7M&wvd5-?9&a1sMbXRuWt-if> z{msEWfi<^eea`=Jw0rsR&tD?XSBE#c4EbKq?bTVX^tC7J7C-s&;?JqYI!)*cLUKL0 zR`(~d`jBZG>E6$}|0{7Keb2Le0j=4VHI#?CTYR6h6X?Qm!b5KmSjD55Prwd9h3HVZ ztiQ$g5o)EQK$&F{(Nq*Q7<(aevaCOy9BZrJVxx_Xez}EW6h8X&A5T$X$)tyG)$!=T z(^^?CPH8aY@tE8gi=Q5x8)L!SCB{IhUu~7S(Qo0oA!E^!g;ueF z6YJM6Mi{ll?~HbL6OI1~p17&;4vd~4mAS!{wya17{PYYsu0AOJ!&uX@QLn5OSW~~x zGq36!^m+IEzeoXvh8SpmXq+fo@k$$@wALdeN08h&m_^0e){5geM)^%8qWzXj_ z;CE-hY5p2Z&o?sQ-v& z%d2?=SU%!1mj1~Z@HrXqMH%q3fs>sN^3XnjK53zE2anZnLk8SE)+!sa%5W?xCqN+R zKnp9{ePTt2!&vdbl!tWBu+*LwGU|Yx)}A)$q}xW$8z4@HrTRFN89G1$Nv9Qz&`~Q$ zI?|vGbaL&Ia%g}p9+HHZb$jIlVRxHn6CHd&h4&_2spY_n9TcxJ@Zfmj##yBPstx&8mLS|Kzn5|9*Q@_&#_8L@c$Capjxj~@ zatuR|ei@RspXN4M=0T1Y(&K#{=Q_qokJp|dkG!|vJsITXHUZM_wf}@iUOi5)&9Ly6 z8?{isvlydQnFo(}@EQ;9wMXtWAw8uY`96>QY!5!{!M*a2dvLG3-0VeudF!E==MCz2 zu1CMz{%7W^C4>Bs2d90DEPELzJ>I-L>5-o=!dSoR!54V&*E8VqE=SY;={zqH?zN}V zgM00{*n`XOOVs@^<3-Se3*XMNi*b6hlo#LY(X-Hzwk)|Po$T@E{dJE#?R#aBd!$KT z#xiY_8=DDto?>$PY}Zq zBJ%WdB3fd4<=}c`f+)EPsQ6&tY8VPmzC&^Ky?N|4a7k zK?6U@V7}bI<(|c}4g5*&Z=HdE zhV8$|zz=X7+6??Mwx`#?Z)5#C3_PFpUuWRgu>M;Oe5($R^+f~!JlEB~8u%HEA2jfH z82^cZug%sS{K3HG6!dQfF8K|y9}@qW%uh7%B*$U4fs0=k82BY@=f@3v2FItvz~$RU zI}H5$Z1-0UoX$IF`L=<7jP<{0;4f)$3-2{mi}-s9`}IcyKb`Tv8TfBmzs%pF=TjX2 ziM(C#m%06V1D9_web~TrSWlmUALIJ`l!3p*@%gNQe~jgCHSo6?m*@4wPT7AyWXP{% zdt|>a^774#_YC>BIL-m?N92FcanP?kboVL`X4j!A2a`qfiGwK z<(n1a?^7)ITSH#vfp-o3e)iYT`b5ue#wQr~Hs(tWd=cxdH1H+t*C7M{Dd+2mfnUn} z9}QgQE14(6&T%X!-wYA_1-5@K*OA~mxnKFVlHeD!+-gI9CEI_YfhW1&Ap_56{?i72 zCCl$I@Q2x+&l~tH9M1<0{4MtDy9U0Q`R5G$OFSN5F>v+XP;7hMz;9qX|6<_Rv!1Mw zCM0gJu$>bOT#n}=2EK{)mm4@;x1puRz~vde^9+1G$6=F!Z{U2j8+d}{2Ml~a%im() zcX3{xGVo6^e#pRY=6H?glNO1O%#%|M{2q>*e49?>`&rLbhWw@6?~Mj7^Vb~)9$+fwwaLf`MPa_WaVoZ_{bCesADq?C+lqd^770@}+Ev!v?O0aszMU z_?&0p`?=qb8n}ELC~4qd=6)|T@aMTcKW*S)w&zX*U(J4f*}xxQ{4oQ6kL~;s<8mG< z*F#_T$P-EDy0pl*{wO{yqVT^N@^XH4(!d{3($L2z!lFmcizXQO?^(Xoz(3A$m}}tY zGrqus(>Z%B>sji-$)~fp4p(__GTG+3T4UhHS^ql5C2mJpPpg5;TMdQ`JeTwSIRlR{ ze!#%17(Z;_GA>RS_&%1ONzRi$u$xOt@s%E&Tz#7D-^94o|Ml!|+>n>+*VlODDQ^87 zx6c^3oafwP;HPuHw;8zXXYVy|d7}C&2Hwhg9yRbq9Ea~1cq!xmX5jQO4q9F?@P`?H z$%9k<{FU*e9-QKEg7M!P_}h&C*}zjgPLCUSH{*Y2Tsi1Ti3ER>@j3&~Wj$R6 zUc&fJ1DCf4Jj}S%LyUrh<)9&7%ke+rk*7F3&H9fS_~VSfZQw1k-#73E#%-();y;5&K$oiuQILoqEW1Am6`Z3g}w#y?}=A19-* zTyNlwjNin#_$AjzzG>icJ@7v~dMJdy=Q#Yykbj=%+rk3Xy}C|FT^{CsCmQ%q7@uR{ zAL0GM=>~p2ECB|16_;ZY(Yv330e6+#9oTsB0YhGX@89E*rxKyp-qNzyz*jQ`dE^lTpTKqexPjx% za%%apfnUVmGTE=Qp|EHx2wg#{X>KADN^z z9XIes#(msQ;`w#Pg9iQu#`6t)CEf^03tpG07SXeu@#!9%ca2JJz6U42u4nm027Vpm zXBzl77(dIvA7Xrsf&Yr}a}E3#j5iqgV!jEb#lX*C{G*IZ-n+E>)^-D5$oRb;J(PF( z{p>3l@B;?^71r}e2K)&Fzmd*AuAi0+_$Lhf7LI2u1Ad8t?_~Ww8SrfeehugM@(lP+1Fz@$ z+?4^}ZQ$~fom(>C96ohE!lz`)13ny4*O&MZR^dP5{L6S}cP+V(OK>@UxPluCF2`vP z8n_(azGvWa9QZZ%TlC2JxZDRNxSY41!FdyWKewOG2IDzhIVDiYMgt#aeusgJUk@0# z`1PuRi(hj8p7bkz$$ff)?`Qwzehk6IU%9_RaPjv=&WqsUZwc!YT(0l^55A?|OV9Yw zr`H#kSEqe2y|bsiS3ZaS|CLXxN0289nbbe0&8lT0!Sj~jG9HAV27*egRsddyF3^Ph zeou#Q)Q^lUxu^3q#Thh4%|Gdk6>^EONaW;wl zV#iu+5!w*~@esGai{~5JX3ExL!&vbvXwoeT=IAxWk8&jaOZ*yvnL4S(g*?EQ7=bZm zqZ!&?#W$^fN;)E?Sj_glV_+or_vQ2#FNM-8=daoR5^NdE|HzJ-%e9yb| zed8kQ0PfMczZKsOZ=GN*YaLhns6WfPw7$@43GS%9`G>W0p8erlpE`u{zv*6lbNPq0 z)(i0+pSn2<-!5*)?Z&_nTKXIiU|(s#w5NmS2Ao7%KC9U0qDKh$RZsD4^Aw#nSjri^Ve z_tTKEP3C^qrM3AyVz3UeqB!6i^Y_<1ov04MpV^2(3~?(%+}_@Qq==)k1Oip?&R%p+h_IiG^ctpIlat91Ksl`tkdD zOZ|xsP5=2M=vGDB3g4vYC*C8xLF4%Tcm0WVTK=!Vp=1AvllWe^eg7-?M)xYqT7mCZ z-%sDQrf*rxH>~#uhMOYAR&^I-Fjj6tz1>s_pRwM3HR==VV*1YdG0?L^!%e05mUk{DaFMQ{Swo8pnKc6JF%Go4!&1XT*iRV}E>0)|a7wkCkPG zfAic8O+R?2{C$DK*yZx*ESv$(^IErs{`*+N_!iinf}y$2mR5P4q}|XgYB(BYZ=~Med&rTYj5txx7nwzeCTI?hOXON zpM3kToBs4RjuDDiza^5l`In({j{56}IYcz280C+C3}FdI-nZ$7frU zpS|kul-J2>ZV(x=rNkQknYJ&pUG%N<1pKF5+MZm#9JC&O|AUhcpUNkymDWjC^+DL$ zdi>-v@}m@e?!PfgxBnN5O}|9`W4@AS_gqnXGxilX{RZ*8%4a`YhnkY_u($eZR}ABe zKvXBKGi$4loIJVgq;KLIcn;yF6@F{?e#C%u{MtX|{x3j3wfDAdMO$yXyT^#hUf3Zv zZ90DPz_++AsZVcxQZ3>`ga>3UrW*YV@({6VS476c#sk)+$LCnM1c$mAZ?#N@&wCNS zDb_tI-cMYzts1ddfW6iAR#xqbS$^x1yK}6TTYZzmH;1ePLm21Pxz+(2?I^yKqy1ZF zHXn^oT{6qEw>%fJT73Dnk6I_JLVHKBXqDyLvT&T$auMnw5WYjo2$cyEDt${cEhVtgP$5@AF;nM;r2UHTiMSYMi^% zZk$zSU235Xp6_dkTx>UfuUPYQv+PC;#+JydR^#_dG=|sT-d+ct{sRB~Q7h|>Cq6jY z@^GEiIA{B5?;r687vQDUm;Mg>nIA%?>u)Dp?0<_~UyAu{_Ri@0vjf({u^a=i}aXzFKF#P>6`LK4D%h;ax3C?&`){6oCW#gkVWii zEH0q&CheT<$nTl3r3x~)s@&^XAN=6tfv8$&8#1q$F2%X{n+>G`awU4JMOMkZs&1?;_6s z>>ueE?;W0VXugTjSj1d{*zcZo(7N;q=B=Tr6X^JCR;zt!EA}U}Pp3YHk;_)hsnm8q z$)a!a`-98Bul7e*A%=v_#y+j?t9(f81lQeSc{| z?W3|kzk8asY?$^7)2*r^jQjc-R*R~6)XRHyOP_u3?N1%Tsr5~VaSZTYo%KTMicj5) z`Kf6bc3B;%_w5rq4#h2dfgg2Yzd3a1D6L-|ICK>IPy4yPLr1f*e!T0@(Gb=TbR0UG zgY~||p`+ulzM=Kd(JOWd!wWMZSFPuaT#4wjh{HP`=Zy#L#q>7{Mx38ZKyX9B``{hgV zTV4zKVZ)D7*!~0fNHVd5rPq7qp1`rXBM09y$z4_8k%RA<#Z^4Ix`OK-2tK}UNPoP`F1~$(FrSTse_E+)Bt9Pw zp~2|~Fx4dv-}xmM0m{k>&O>K^XM9*ru!AG{PQR6$z*y?R`5&ywTR9*Fjnxs+({1o(j^$MQ2Y@K~w%kvMWOGiLUI$MMPV9 zc#B>35~Wv%GJ8pwI>}W%W-lowrhu7g#1!X6hpg1Q9nb8u6~n#PD297qsTl749K{rCZL1VhqM2I7=*POUS1TrB z6~I(0%A9M?y4 z&PHR7>$ep%Aurn2Ze>4KcrNt>_QZrA@*nqC9HS?nxmw~C(%#X+4 z1!kRQp3Qj#OhX=C6lP`rM5*2c24?CkBQ-!3#Guw@&M<)!cgDq;=S~PIDXdwg%0e?;H0~ zY}=%{2A>+zt(t4pk{z0B(%bqp*X%2fqTP_@KCC5&HTMx;4!O5WbC>zD>G7qT)HU$z zD||&%>hIf{z0x;gByRECV|K+UxaiDB+ETa^VD!s)gu zivsjT5y=mcVx=T6dzBsPbd=QE6Nq6Yt2GzY9n{$q>aZ!-3e##k#MsoShqFKK%f1m7 zYQazVN@!=p+$Vh#D4lFc)K@@)T#~K6$uws#)a_!vd z3Ew0dNL)-w&2cfcYi?LeZuS*?5n8yII(!8WgS$y@>(u?-r@2dXy9YG4MRNx<*QL3~ zHP@}VCpFijx#u+3tB2K#R+#FD98f`;f`bBztA@!21!rrXp665iWNTW7oju^o{sR!L zaGP%$G0YA5Nsk}pl$%6y7yTTQj|T;Kbht& z&4m3kUIhcQQ4Dnj)F4bFh;F(swI=>6RlplH#f7N(-9YnG72V4FKV2%OQgpZ=KO4t2`D$|1$O+HZ4|1uvH2#6|fa&Qjep1OmA&kzgE7%Kld3c4CmAgjG z)p`$@Tc1n)=zQj`Ra**Fa&teV7=470dv5qAu(L#aoV(7y9*vauSu!qpeNyDRT3JHLZ&$|}R#ovpkYTdCBeC+{51<(Bm%H(U4!y6#&QN?xtzin))c zW*0-DQeTi?W{1up^{FjZ{#<)v4ILV*R{5v1el6Kou+|RE!dA7h;6rxd@9B3~&8@R@ zC&MspO2K+NOp(_Ex!^plrbJ6_(A;#*ZPZ*ubLVTWtc>DXaDnFLmC?(N3of+P(N3k7 zY_N;3geldUYt&q==9+Z7b((9oi|A;zL31sd(-TL*MRqYowpBYA$)9iIN`!b1hH^|r zLtf9VTYsTd@W;s%D;jfF!7@AVyN=t^Pm-HB$j^D5$mzaPgW0 zw?Z4s+*x)ZHRmv%ZHHGuki%GGhd&99!?@B84}s&roujwS(@w6kbN68zhpN^NKLn0L zwOVr=syaLOC2U)#$I=Rr#p;ja11!f6X821Ms{uzgXdz0mjP|v%nT&FEpkacxP$bAC zy@ke<4$iHhAajMZCPS4Bz|Tv==LOX9B^H}6P-cA#jLyay+kdTsUX^xKkpD0*{|V{v zAUv4|X-qXUuu@~cu(*sMO;4OiHmiBGLCGn2Li@zEA~K;nEwCHHPFHgZ7TAq;?E<^Wm0n;s`$B+P@E3N|e(6l8Q+DTDXOJGd!wyi- z_Wjtfu&s}PBC3*wF(T&@yr|Q%FVU5}=n^7TFcxhkQth`FT}I>t(zB=^Fa5K(Xz6l# z-=F;{+ebaAB|r2aMx74J$8^uKX$KSbzP&hqs%VEPAG0SDElUMV`j|bROp>Lt&9X1H z$C1IZR4NNT!6T2+#j>>padVg$m?g5M2TT&ZA*#M>@VC(yx&+a*D=CWCdITwi*Q5#V zv@9nvm+Qnp1=aDFupiLg)~9>>0C#Ken}<_0`WS#+Z`J_T-?Eq60ktn>C1=u_K&nw^SuE5pZz1df)5cNzEER%X=~f9YxLd>CjlNx; z()b#--j%i$sc?FE%-hS;V1D3;y7lvO;FQD9!Zw|whtiC8b97}f=jfqPIeI89N6S@? zzLA!q<%rRNvTgPlMmfRg(Xdmg5!FoBgM>Xt}{3mEyHfLxJ99 zrkFDG31_3Lfzsy;b4e4j&uMB;o8;w%JNCYFvD>C`(>}{PaZ%Jd(tKU6{O?fv0Vi&~ z2wX>cxaqy;cBeW7bHp$&T#}B^B%GFT9i1+Hgvkw;ccEcd#5+*5Sa+IbXQ?dQ<69#A z{Th+Da-t5OcV_%g;9t~u)^*m>GMYqbDsA$GhTI`UQqOSfofLeL+3w1mfXvY`ddR_* zUb<0>689O;z@u~&PSW_NJ@_QZS2#HJg>mKhLE7j^fU&eiomOrIki64)4wyT%kiC>N zhdPv}t7(5hUSqF&xhqa>zcEH%v?D*vxQdm#`*s_XkPmf4hN^v2XqR=3HGQWwo4UNt zV-%(`f`j0I;oS6jMV0ls^dd%eu1`aBCC1!Jq*}^{VHE#s@fVeLzIC>AQwir*tE~-g zR3YkR&|;$-4oWJ*!3phj6H3aF&H?3`&);f}{C2g|Ql2%!2NxLkysu$+Yq0ZLq#UH1FSHjs1 zIBlW)tKiv-(>HdUYU8!1+W7fXZT#M;HokhQjmJ;5aS{TT(UqmA+SqWajoqi(_}No! zy!TWapFGvZqsB&OxKhfzJ{sAKpa{+SMpDOYo<0g7Wz|dJ6wLGoT;@jKc$c}^7j&6@ zUgj2GV67;~S?e~*`@QWd%li*6^E)r|u$|**&O7S!Fn_S!KJ&ieX_G(6m+iL6_q53` z@tBtPTYH=%R!3hfEmbaw75v%=wX0O2CeB+H+7 zR`~4jitu{;RGP(GLin^oK7{b2NRjQ&3x~Cc4Uz2eo)*<~b%9j`w2GX`wpVx(MTe0))wJU;s94~apfKA-F$+X|E=0oRg3uWEWP@q~%i=@?H%6YbNd z=w9%4WNJF`G_{)KXn?I`#AMc>OsCFD(g3KO;<(RErn0%rP6JCOF*_a3d)OIXb(S@= z2%)Qig|o;)G9Xf=gQ*NyHHEg7mZIinGp^F2@j0gfFM~pgj*=&X=OXw{xNy>rb`DFw zB%EGuubQGVj3yKns)5>)TkBN!^Ss@Y`26dxwox#PVcLSvUTx#Yh~0I7&oH$_RQMJK zJl5b$nLAg;;Yo~f&elR);Kqw4UDJJ&zg34qtn{{EY%xs0?Tci>60wFtwbZczK^f&q z6>C=kV@=D#_C=Ga>6vM6>aLe_*WL!zY%wshcm+4}ik#(&Sk~FvzFX?1ELJsLQx3D! z0*tq4E-qqo&Zz>8JteKCBXzYz@V3=qwA9Adk=59-jZ@O~fE7$ z$5tn30j^ZgGLP5vVQD4@94H~=4u*7ogxli^3b`*$P`CrGppcKJ32Iw1{S{j=F4TfA zUJE(kKye|(I-N}6_PByVigj90xC5@BkdHH@1;@6sjAi7#MzB#d?sqgc3VAO>xRL&f zk+Btyg+8CH(RX=`qzPG;qc_=ByO8r3(n%9;ohvA0Ynq^N9j>5|U1@^C4ZDIu?n)CB z?s->G$XC+@h12)a;F^QgE@a4)gNCs~W@D~&770}dhY++NA3`2*ptz8@V_hwN>zXS^ zgei8+jn8AU-i0Jg^y3{Z=s-yNNnAs5as6o*5+_f%kQR6U`qEq>T->QWhx7cXmFNc`z=phhA0I8eLTc+iDRJ4R3XVw1ijkSZ2)5dUhG)kKyo_|fg9-gU zW46^S4zBZl8W$3yq;#pJ(0z{a zi${dM&uuEC7>wDeKxnCE%x#A0%*xC7y|EQqUUcoZwq7|RjJ!P*BYbR)l9`L0EHnt& z;XqB2E4urRmK^I^tKXXbX>0bVeWlv9sA)_>`6ACU6eK)-r4}(7XM7S~S$m*L4x8V? zZbD*tlM~CN)|K|xM_1b=Oiw!=B!!f~KxKgwC3lP^MY}tsNA;qw=ikJ-_wX8zJ$(7f z5#jE0dTtQ%K$>8h(Tdr@+mAU-8%GNf@-D})*a^gDA>9}@NVuf7Y-{sa>R#vG+)>yl zA#hucGQ`hE4oA4PXhE3?`7Uo#dn#evUYvPFdQoy?SeSN1rcuC0C`VR*oHEX5$lA7TAH6&ghkTypL3ZvD*GVB|?YDN>Bf_|KvCHSw#rtk!A>}iNIKC8f zkGST_Xqe6!g_MvHhSZt6FfFc}kej@6!bnv>pT|c%q*2apKCb#}%P>xvmH)WsH4= zxH9Al?N&DMC=)3C!X+29}{G$M@5GGole7&<(71~{m$XPpvBw<4MIM`kZvoSbEm`TQKl`DW6%~h zQ0?=D8E~v_7IKGIj%jy=i7Rb!x1>>`WG|!mD0}sYFwePQ<%lqnOi0cf5vGbW3@|bx zOb3HLYu$*@`y8xxL}+>WpwFrv5gN~@sfEU{&;^X)1M%;V2vg>OFkF~Q7sN>*GxAPI zWwT@eZ-157=oy#Pm^tP&t{o9tYD9&R zgMaFkIslX;?qpe%wvc-m3gdpBV9J^u3{}q^k()ywbmfmQdCY~1IaMXRhSqgVZge4e zllQO-J;)^9jG`7aJi?@WFB6YSPiOz<@fuP>N-TrcfE7A9byRGFIK3iV;wxbjdG^6s z`EcbZZE>~`Aa;Jx5)PJW(mSrdp)+?S=BJLj@Oi0CO0}zqma8C0}?_?r)VhTK1ZriNSPyX z#xAqqbB${UWrGX7(8Yk4hhcs!E);#!uFGAi)HlRYAg5fw;21cnE9e(W}}eKceJd8kYX71 z-Z&y$z0*}fNHI(c3g_CCFs;!?QDRLkYou{6jrVvkp+zB0Ev81{UuVz62MkFe#esBp zYFu~Be#RKiW;c@2f0$gio8;(jM&*o)-4bu)V{+<%N|*wtu;M}%Go<83_Y)WM|M#t> z$9YcAp_&n4DqXO8L>Riuh!z|nRE-FOH!lfTIU>wD7hE_ZOoI!~8xdxc3zm%t)9Qke z5n(zQ^jRB6gzj^&bt6I#IavLO(8CT^J0kQh2dfzo`X&df9ua!4gH??Pz2CtqM}(Fl z#S!8OXUM(Ef(Tj7h%i~XPROc9gjwix%q4m#jI((=88{x=H%CJWgavyIBSbf&2sUyNlBJrDr@KI<(MXO{gp+>%V^1dzc$yP~&mpdyjnx}|fV zufLb6)n`^!#A5yNjx(zk_4M{67bUyeD>{4PU4w~aMRzRT(brWAv~V_!Xlp=Y&StHu>tY|x?>z7vtd zXA?N)dCIZ_fuf?K;y_N&4um3sKyY@z4*Iv-f$*|`?cW~3I>N;1*!s~x2!erNSrLec zmd_^y^o&mgCiuH+0);_;QF$N|v`YgevnpnR2LTyckIxHC2MOs3<$?T2U_7wGA`%YF zhy)`4$F?Y8=S#;7*MvwQzubtGv5T+JBvMvHH4ZK(SV|5RqW@AD?vD~gWS}&VQxphPz|fK! z1%9+9kPE}|O9Q#H5ZE#mhnZ*;p)?iDRDaJ3;NTYeDJKvWEcq)QoGVX zaWFqnFo*hqJLp08gTJ&fXBPehCZgLS1PwA9Yg8Bm{`nZh&;#RjfxEvE_kZRp~(4VtOXS0}cc^QnW3*hxSS@x#DL|Rdf<|x@5|7GQY z&}rc3lEy(hFxwx-=15>J1pN{EQxll2Xb7#E2r2Tj)bW=mupFA20<~)MENW)MV_HQ5 zvuITw2v-G){YXfdDl#VsfV>Z`L_O35!W7Sn!1$uTgo#K2MVscUQkA?3!P-D!p^Cu7 zS%K2Zz{Hs}vg!~n3NmCkHsRo;z>MjEDG@d2}rE#ST_H~Qz%*4 z1O)USOsh7mErGnAmM2lRDS}gwO_=AeuOZ)2DE<@`s{cn8N*3m0Yk~iJSJHg_q!l?& z$$sz3@}j^v$d8|;;^6m}AkgT|uSa4zO3e=BLJzP|&_B0at;v*7P|-GC!UYCB(h4T2 zO?F_CTEjFCjIimg^p`p)!+4;AEr(IT3;$s;%+|#)KM_~;5J)r6+94x8~j9(fEucf%r1XDzF1ChDGVq|irE)EO^8sg#U6#3k8 zn<8aXpt3j7pP-peiiFB^4oQwve-tmI3hy`_-f=}Lyp%5r?>Ndlt&0_-6534rN|pQp zmHcx&xnD=AKRa@sO6|E3NjyygLI3HIU?fQ~Q zASJbGI;SG!i7WSAap^%o*oD-QN6Q4FofF7*@7dMff|fmsxWn6GHO>z^D<2XdRIA%r^x@`@M>3$ zi6bx_yEn{!_8c%cg43|GS-!YX4syA3BV5 z@`vmOa9}nuLK&pLbfl0&dtTeGXqtd*e-92Eh&T_!r&7lAG(vcIVh+e4;M)|)E5l@g@|qny5AzNB3Pe)!3*|R^8@x=8nH9c0XGWd)T$=x zz=GyloJe4j+Ik)e4SVXjf$_`1V+V1unu+aFUlvYa>n@1m%(b((CuOy5P7b6jyqzPu zt-o_1Y4yaqadz6>Gf)w)xG0tEPgV3K2a^32^}XAAx_V=Y6wY#S7MMu(#56HqDJ;Wpv5qg&~ zUS-;z>bxvzMV)r)t4vY6Y$+Or#L^|v0qaBSH?Fm!>g3N#40d;Kx7IX$w4vof^xdDp z3slitA{k#o=HiSw+Cy&#iEg}b&4y^x+BFw7HLw5h+GvY~7ph^?HdvI5C9G(7TYp!w zhh2e&cAU#v@iubQipRRT+HiszjSuv9!H{_GAdGE;-H3S#X5&1zcW?kFp-Bn^tnE#~ z&S*Q51L58+oo;ljXkF)K^y2leFr<61E4r<>KVc<@ zqV&Z=>)Z=2imX|@Jff~9L>6_^b&8d-{_d^Si(+60278h#xph%H@sFUtw|7Mi>c1xu#*>6#WQFbR>n zh1!m$5}mjV)TyhUQocFX-5pay8WaRrubXA6b{IfIGujq|5|V%c7-3zw1Z3grTW363 zPqj_ePMNuABWi>qqXHu?ws&?Vsr)D{b?Y$>&bQk7237sVyOOaU>HuM+*$9qNv{gA! z9qJ5H7&}u5^oci4^>3%4pF%9iXBx&GGN~w2RLrrJYeV^iVUFDJY@+87HBs=)ySAw* z3WG>ZFS4dn;@G4wQuSg2)#ZsUQymznYU)FPFh5d;R7VoC&aHazV>4z@Oly>{4GCFcI!ae9)^dKGtDNF*kSZ;SLyFg4s`S;s0x(hJ!+Og9ISh|hXrn*FekO`eE3=-;Cb{lH+B@(=CGtCZ=&}&#Q(7Pqt6{Gs=Zu1Uk6?Jlh zyou7@MD28Wcd4CG7hJiD(ql$@J{YYA7@Cp}n5`p@Nt5Qk9x^hjv#DljJ$PeXN$yk4 z;!xX{jCZzoCKI|4l4^dS2?V?LC72#k(fCjdvuihoUn+^5B#?7G@2h=)s}`L?V2g^e zo^BBF1jRPm!xI)>hYqW}SEkQhv*xVGJbj5C7v>`0 zhGyE+a%Wk!!0^TkwW!-k*5p;*8N4g7=H{$D{`y;dzT3yW_RF6idNI#h9bS`X9eVNS zzkKaOd6l&F79R67`SM{h_*@07{zW|lc@1O{8APqg#MN3t;M;r~$G!A(Gyoi?Kg3u!p#K{BJp@ad z4dju>hQ0niqJ6CNaEd{Xt>V)_(cvF%2a> z{1f9SobOZ`h4W90qj3HScN9K$M*aG07-`bl{s~rb8mbw;`YP_|4Sw}y+jM*Z*a`IO z94~U49E}@q3}t&=2D~8y{z>4Z|1GX(xoMB;dMy0|8Su+9;GfBW|8oZXjtuyHz{yT| z&{WM`!2UIZ{8Jh57c$_lX25>~ocet}8w3{V_Ya`QiqG*3IDVT{dgQ$Tg@%X)S|2QB3pKp2oZAf`>uVKg1p z%E28r@FBN4X-Pls!A9qJ&U45On9ry95(5C|3>`F%3!MXYKH~za&spinQXlmQMAtPu z2iim`?O3Zb7XriwI`5&YJ^V&)tcwtTJ*QK)@#X}*vL+fh%?q?l1CBS6IZJ{m(&L>~ z)&2|HNRJnPkmXJMSO#3~`#0s~=6@3(Mt`)J_<;=gu?+Zrp0~{S++*M}mhNMm`t`>1 z0RtEL1B_3FJl=!oEYC4camITNo#h1MraiLjHv28+T{`JeAH`rzLmu3l#~U)>@+2kc zQJ>FXJx_Y%XE|2ln9GAlJa`rFut`s;2XFA;UOk&UxK~fYgL~!odT?*tj(Kpe{JV@x zJmvUa4oM`Qf`|AJhU}m1vA>LQ(Id9bV_ftIUY|iv!h?J5?DF8EgSsE`;9mI`J$M-j z@)F`fNcPVa5bFWn{}6tf2Osv}r+e@N9z5c~<&`v~$J=jhNDG<$-o%GggwOZr+2_IO z7)2I&;|s}q?K$F+_uBui2akvntT*u?8|j(n!SC_lb3C}khjNr(?>v^pIOW%i%Uz(P zf00Lz+*N4Gzt4J1dAZ}zl#lS_V#>?ih^G9y4DxcPqAA~(L0;}+H0AeZke53gP5FZv zc*k*j>u1QnAI)l92QEAGzW{{V=Elv4d8RX?oOjG{B4Dxc9 zrYV0ogS_0qY06uCs$s?_!ni3vFN3^1`^OAGebIyh~B7DjA<);MI&% zoW1h$9&Hofq3 zTIBp)@Yi_W$7}4>B6x&(Irgy8o)2x*7TFh&Jl>4zEaJE5InMi`M1Q7YuwR_Pq6;227VFizsA6;SU-Kh*_-#Rnzcp@ z{7*ct<$O*24Ke<0Ltfr6__Tpv$8{_57Cm2Jd;V<5OMZRqhsY`*s@mnJmBC zzz;Egmw|tU{rZZ5U&Z$P+Q4yFp<4cA;JBowmXij4HS^;oevqU6_zf&S&A@-e`sW*X zl>J?9;PV(?Yv3KMr`f=d^7xYZK;kd)?KR}ZZrNXn{IhKT^@jXIT(`Fw_}AIadky>v zj?cpezMu2;0|TGU_P=1@cd-1g3|!`cKN@%e_xpi?zsGjwvOe+myWHjg_d$wZ*Ref6HstT-eh(Y?x3u}z ze;ByTkMA1zA>mn{^t+Sw$aNUOA7ndc8uE{`yzIwBzMb`-WyoL1<4fWv@;3YXVMAW7 zGbRjNuE+Ho_>Z~HhYeij3yGif`xxit1w;PxjQ`5Of6Dw6zAhwsWd1zO!0C(YwA35; z1FYwt4E%H4@9hS@hV|TQ;D6KVtsfZp?>YW&8TbZ{&j|ys=J@CF^(*n~5}rq<8u)RR zKh3}|WBZpF_dC66gKg??eMX!2VVmcsBRD%D^|W{P_lc4aeu> z2L1)cI}JR^`nMT4eR`diYYjY)?Z4T;#oxOPd==aItbw1w_%95+llA}3z*B7hpAEd2 zaX(*ZkT}crg+c>=oBfsRq9Xq<+Fh&MkpDKv;X(tK-y1${;2YQ;dDvd`&tUxXhP?dt zAlE-dzLCe>cMbW^vL1N~T;#Jkp061494T3_I!BhM*Os^og0_$BkzuMK&*4*7-$r+(!++6fQt)$e>;27XbB!NO82Dcqf6u_*W&8x=61R&v z@x?rm3Vt8s%NQ4b={hkjwT8UhuM+dfQ&)06m^ARUJpZQ*{IeX-Z3aHX_$~wgD9?vC z82Gu2-(lc#{xf3WB|ND-Xy9_|*8v0nBg_B5z~wmnM+W{qo>yNo@UQVa`HF$x$M_ot zeuDA;H1PKsKf$=WAx z4SYP~jRyV{;};qD!;Hrbd>bDhY&P&q86Pz8XBgjZ;6GseGX`G9^YHZsK9%v?4E!#} z?=jp0S@9!9RGs{0=;EjyGVBk9#|G9y0W&9}PGA=54-uPc0c`iLw zXMgwLRBz9)9v=-(EK-M0F`n(gz2kR+2PZw*^asl%13$@nrZX;f9_Dc|-@xVi)Q1dw zi2eGcfy;H7Ee0;vmxdXa@%W$I@AZbf++X??k36|_CHwVt1K-T}cMSZ~JfA*c;8!#L zf`LE7`2WM+yTC_PUHjwv%w!(PguEf)J%R8LAq2upMM(lGDryq2#rnt_63B}r2>2oj zTC27f6e}tU)<=QbN-I8SZKYOQTkRDE-`WCdwO89}MFo}e|E|5)I&)?xqrJEHw!eG- zo=-Aot?yoY?X}ikd!IdLX3l=j!hg#68y0>Zcjns`eiq{gE&MsgKeOU8tV+L2 zKBZaslbkn$Ec{j08@2G?Fh0VA6Lbn+my0|&h4Q=1PqOe^n4f9kC(swUahz=7V;G;~ z!Kq#Ooa3t=oZ8L9ewcKeW8rCxH!?1Ho5$C$ZVSJd@w+X24dcJD@Xd_xx9}$z|HQ)O zDdSn}pV%Y!ZHg>>9>;mMh0CMKt1Vo1Cup(o4XkH_g}=@Cb_-AC@%6L^r>S4Q|Mrpx zrzPfWmiKeK#ji%j2U>VLRcRiEqR0Dp;8`s%7+`6UuNN7XZ{Kc zpTdrP!@`RgztO_K$M`K4zKZcJ7T(TZ>ioWie}(a%Soqz1|#9~ z7B1gc|0d%yzZLP99M@X-Fvf4T@D~`r&BC8#{9y}kh-&lHP7AMM{MR0wrr>HLuAcYc z6oVa6Q}D8d|B&(5Ej*fUUYW zw^%;i!owqse71%EuE5}fEPVe+gGVj=$Bd6>T=HQLuVd#}_-BkaS$F}jORu!>IgH<7 z;a!aHwD1j#zh>c&G5(2#zsq(Q{C@VE3Gf>%T%LA$ zQv&=u7XAnJSFRfpXTk5a1CDHh&`^D`|0o@?Q+b9@FSzzZz=29_V4 z0H0vteK?+z6W}LU_)j@M%M#%1o_=4+LtT$A8Q(JRX%H_*xP2RE^@@I{#$BkZRC7ha z<$c`47B2T&N?5qx>O=B!2?uTO+zDo`$doP`A3f^6i}!oFGODn z6ZTVmB~L_-h8qpB5&`(!exV_va(@~uwZrM@zW*4>IKRy@mGJrm-=}Z^CO9ozcq}N= zY1iMy^`ow&A#D3604ANBCa$#9=ePYXZr4AC>rZqg4DmL%f2@Uz|Ki8#T;CE?!?>Z- zWT3Ht)D!vHAbN}cn$;{Z#+>OrH(jcweO^wgvw_(`2B|4z1F`ibnP`P#PsE?}h7j?>acfH?jr6%6azDt2rG z-dp|imzWB}xt^S)o}B4>=!Bx8BG2p8sZ*oTNkvnNrfJFQl$9sWImx@DwWA*F zVIMUcr6lE}M4wAkKSbp4MGtQ|>{n~?)_KVXbDb>*{JyQ|t~IN&N_KpBj&BQMw&vr3 z>d^hZl0#*x;H5q=dxpPo=C9t)%Y2B5j>D`sps=E?Rtjopu zgSn+!_WE!$&5698{Uq4(7%js!w`I=gy#MuRAGmdpkcnGKpl#uKlRD5A@!{ zN2Ur!x;A~VB5=C9;3&=fsuzqkfp_k72#^$4}4($vhVA zuKXDE;fr?Y{-449PksKO-#6wXzkf`=Pt98iyd+$DY)OimNA=#wGrAvz?tR?XIk3mr zo8!j&@I}AU{k-^ZN9I+LZoe}o`b6o4h|Ro@>-<}$4pNyI&uj4Ph_xSI>d&S)4a@AV zJhV7z%O`$?_~+79Yu!Q6)nT>$)1%d)Pw#Nn9=f#T`n~>vTcu6)h8j=2;}{z#FZTNL zOkSbg7QdR;8B`UI_|%fl6qWU4K+W5ignspx9Fq^b^P{^51=!-cZ*PR3Uz;4Js`^oQ}wV!qdwhY2G zL`}@*kHvMhJln?%P zWPA1E&S`rge}Kj%^cH`C??dM}OGd-r&rs(r)WI(G75L4~l69DmuEAWi6LV5mP)*(& zjE(!fL3Ip`QON2!DJQyTz$7&(1>XTW<{_Sw_AWAW(%wb+(|pc?+x8(|;`gVWCvL$t z{rwNzdC9~>%4tq|ySU`=I@m*TB>9g(@AK_E=5?H3$92e_XC&TK?@Gw*^~oH%$DLpF zH4Heu^VehU`7P?~$2ET+`ct9JeTQRw6#Q%8Wi3>vvih4ouOw(eGh>SVa)%!^(k9^rpwG@O-D|oeMfCDL@ZUL^7lJ%>He3O43q3^DqdX`K^O+ z<`*0RBnl4y*z9sTX}TzYg4Cqs@SnhFok=Mv_mHq*B9Tp?O>0T1nh6_a zN$LI3wT2FiO}oIQJ2b6*3N|>oWNva&;BJ2j0+Rwp1vaN=NbUl!%?R8TqChaSH82DPN!;}J{8UZ*7r1vIxuNM$e;p|8Uoi8;h%Ff)*toV2RtDpVXf2vvD1J-i<02>o1%Zt-Zl zIi3Zfso`sYnaal`$7~NBs~Ho|&~cjK)~9QRTR&bi-1-TcG2cfH&CpDqQC*^$L53;S zOw`=?4*No7`c6UUj1>KgE1%&iG>7NTMXrPVK5=ZQ(VFKE zofjT~_?i~a&mx+csvx<^&eS9yjgkzbvvvptBf~++NMVG2Sxo;rWJ7_Lg2~c7l@VGR zUIfnQzaW!nW|kTK5T{hp(hr6158sEOlvdTQLJwqV;k2p_6?)KgYg*MZ6?#b19M>Jm zWvI+?{jp}U(yD3~sL)R`>4&Bq*N1hT(Z-5jq);e|4D%tkP zA;g*QNrYzk!qjfml%41c7vc?Vf#GHwoh61l#n*2p%FO5Sq0>xRxhXr{mog7!^9@(- z(?h!2a1}dE1zLk`BE1{HV>OYknmN$j6XmTb^+1s)xMNvD4oXawZ3Eub#(|KJ{Dp; z{r4q0U8l3|m_=Yc9iv%2k6^fE4jtxpt?s>!sl7761WT+~oWK0INHv-TT zFXfsZjTrYdx?U0I`Uy|G3D}7#Z$_hoVPKphh^E#4tC~(P_bnFv`(sk%6`- zBI#jLtd*pNW;o$`S4oMJMGPw`HC)g%Q08Qvf}&Ivp%aY{Hg&*@p>up8`kk{8JkOU$ z7aQiz_hnIcvL#i%3=-s&toG&7oITdmtMR2%csR9cePeHeB&SxLZ@|%LvD!%1`})y9 z;$&(t94FHP!*v_Ug}w|dKqZ+PeHq)ptubXyroGLETV(3pW4OhJ+itjK!#!-c7Q;Pe zxK_hGWwN`X`nDa2zt);`Dsw=?{kFOeG%$1!>sT{s7=%Q2~sQ1JkKjV zOvq3g*E&m)E~kJ_*O%_0G{7XImuR>euMtY9uY=Id`&1OlRVc-uOY@dtBL2ZIfPvXC zbaWQ2Q}T&UzPVqFzNIf^K!g(JInm~@+-e5I=(~*qyL%`GZoM@2GJf(+I zNu$9JYr~ly6vK~b8EskW@&R+OIO=;GUd$-#bBq(-2yR%t>T|4<{vWh-8b*(1?=#)e zGq}m@J|`G1by#b|Le*!6;Y^USuLmG z^aXu?B_iof+T8Rot_H!F9vKu~1+xwdK zTdb5D$IgaXxV=5bNDT3Y;b^q~TA{ajmYU&hU4LBR{610(Epm)&Rn9)$xq=v}{c%{K z6xQJaLqGeXpcTV*U-&}A%opw)?aWQqX+@Hwoq4|So64=#j#@u9wS24bTusq-32=J& z6|?~-bzi?UR(dr`-{aC%N{yFVeetyqsPup!q`D$b z4a{;IxFD|N>%BKXD%QmbdOf=lr4PlGlC_m_-jjys<78|NpTw2+)Nm&>n6TPQ##~O?&vuq_JZ`Me49XVcb<bwLd%)sXz058zW3E-EZt+8&l1YS3 zK0wH1yqQvJN-AEbU6xwF>Mx@W5k#$c>3RC#If24Zsk~Qi!fx89LJJr zavV!0%5fZ->RY>f8d+~T8xwl!x(4>T#?m;t z!RX>C&(yo1XT4v=TB4yzQ79tU5oC;&U2#L`fI}b+p)I)2Z-&sWUWU-FUWU-FUWU-F zFB(G6rp672|4J(VqeJLCc$&D~=`@auKY#rG4-6f*qbdEHaj!L&Qgq?ynf|L;23g|P zrS$)yi~k+z|1=9A_{l_<(B3Z2@*H|gT!Jl_l(Ryw z(@U_680ajLDaAi%t)FQlk#a6fy&Z2M>6WB&e(B7ltz(>@`DT?g;X>3$H&LgY zTXX4_j8Z4+SG;7*aDpz==RPM8WB%-A-t{s+^D=*Q0w;;K%muOfS^az=w;=hrh)ZWS z24i$XtU{k3JIQYASwnm=yR!0pLFHsRBhs=X{Un|kPnMNq&}VOAlovuC4rbFnO@b?0=R$OSB=6tC%dmRs=sL^ zCxBM)mVTr@^>a1ARx%=&HE7eRvAj3{D*L`i68!)3kmE|*}d&EG)poU_irO3?TbYq~P(3#O+cOGzZn7X$l@5VB% zc|^cd$CvwH8Tx%BFzRfrhp|!LxZFXC+)&nk0_+)m_2t-pH*YQdKF9 zvvTK0&W?N)Q7R6o3EAAhq=<7CA~1Oppg|~`LImF3q~Js!giRv??`?N*x~`ny5~u6TC6OOy&&-CMU1gn3KGL!Ss{j4l1Q)g5dz+kyG@{(-R97 zWkPG3be~cu#X$&(%q6Ou-(OtIXGfI_`EM>%A*6gJnxt^IXQQhmju4Gk#i|P_Y8+K5 zq*r4_0*&pg>0(!7xsWSes6t3-|MP4Vjmu-zg%mZgQAn@GL^hfbOy@`-ibBfWr_VDd zE`FcO%yS#45OO&~)Ih~X;c&-CAC9UJa+?d)33;Cjl?(ZX3)KmEfFaX@a8aZh9geCK za<~hX3pw9~>V%Z%=E5`~FOEqGxypqqguK&*>V(|RkTFfThhu_5?uru>?rm4FTuAqg zrK%HBx)8l;T>kHQ#SEbjWSWrmE>th1bSQaP>2~ktn4pl-fe5RRFUF*VeAR_2gp_V} zRK1YW$EH!?q?;iqq;xYH6>^pv(|RFKbD;_$B^jVgNJ$37L&!$AV!e=UE>t0;qzrTk zDJcV8LQ2X&N=V5UB<95$ZeSIkbGnwx*1N5h3n{7NsD)xc*llg0kn$8*zxw*hjcd4k zohw%^N#W#zsC6dryBC-}o8@{~A*47@235GBSRWGpBnS#A@iH2Xxu5&Wj+eLr zs1)*C7g`{sH+Yq9@HV)Dl|o9y9JN45$sNpmLe6*Nxj;yXAlYBJQ8@7m>OR*QQ^@Af z=c{x$YOavgF4QQb*QL3xOLw?}bA=Q?9MveK_<A!DX55Yr`lASGnX^nXGk#YH{V9}<6=LTLDN z+{Fnq+{6!=LLew)%#Z(5vq>)zlW5I$Q`5Z+d874z=Q8A@AXxd}Qxn~}L?$o7VoBwt z)^KeZue}dlnMXt)MzdE*j23k=hI$`PJ=HCUsYpbLYDw$fGh9^5weSDs%b<891C$mT zV!te6{+SD!i#Zo!_Dt+?%}AU{)Nh+v!^3>Wx=lz?iWRf?C~FBoLdx^gQBlZP&MoYj z8jgB{uX?hA!CUW1yke1siBA>v$o`(Q$2zuI@++X0teiSvqp)IsK&>WNe2_e2SlDj1 z3b2B-uwrDGR)7-*p+t}jwwd(^D{+Zc5Ja5g3c^aXVikG@4c{`cdfHJ9;*cl+WY^?x zXn0`JBSA`0;Ug5a;Z8x1z)=~6j>@Dl375A_Fo~HiLlCK+U=p=H(8-acVu2-kUbTWr z{H&@1OB}sb1(VQNRXy>rNzMZEy={G4NJ#VTZG3#7RyiB~T0&McL`#VBjlyk+2@2VW4~OV*)FL72o3wP8y24%L3YH7GCQeYe zJ+9y)AzzFW6z)Jw&@}i3uWWpY>qLc+;-6VC33qKwP{_Aks7^?Eo`&u&VZ>>pP`EDF z;0htPc|5DwD4ckReiTxiH5$LbQz~Xlr@Izc3OV0}8iW*=NqeQ+-D_OIN+HD+%mG45 zZ{mV3UkugzjA5tTqV5z{;$1CtmnYX!03I9$Y7T-ieW>^U>~9^Ho6*m*6gu- zifNJhjqVJZ;Ib-O_rwH+luHI>VfjYkVumk@H5a40I0|Ao%|X(JR8251xk~P29S`vt znIfd@vWK^aqIH{Vd83fB*EuQ*xhp2s)01A_YC38T*JyWZ*2`Y$qM^5CKijOGkzSCo z8BnWeWiPA@Rlu}_7gidKEwI`{eEB4|2nQa*B=rxYCbf!qsirfySF5|_#9Z_ppy~YZw zRlJRh#aM5vf{6oGRoj_f`6PqR;xo;MOjh&Rj6C7w3BeE)QXbw*t7d!?h7Ngduc<5C zMO=!yLdt{MjG%C`9X&J(DNhjRd4M$?a5eTi4;W)Suk2EZ>urUQ;vea+*eKk!F+m~a zQOI<)#q>QyrvFo(}Hfs1ic zwYNzfVen3rY7p0#2+*q8QVml@v-nCY0+teA|L5IKWV+;|Cp9H1NE|VJ4ciMTA!DZh z6Ou44>XeKU`4ZPKcODV*DI@;3&Lau^l}m%?D&h4Pt7Z z)dcgBtLjeH@lY%QgsgYXY!t2AVvvxJxlp-~yIiQTrzgFynz=^1TeJQtCPhPUj>N5+ z*#Wu6%c_~-_xLQUW@e?q*iv^5x4Vtcu@XVVB3U)FphP@Y!3{DK-eD?96ASV}A!B*e zBxIbKX4TBC?&34n!a{oN)2n97zAsueTXFQRUnRB@%(zvv6;W$#yN0dU#%HToV6olX zs$ddetEwI4u>eeB@cn2OSQF2>)xw-bseG0@EOL86ZluT-BC`IMMZBwsiRG-Po!?#yQ?zWMA(51D^l0Deh%b^4^JgxywU2yQUCy|Cf)GzK!ij}N(t6_hiR@K{h2!xj*0;4cw03qj163;a^ehCUs=i@C&C=$ss;(97 z4V{IJ6rHNhu6jKA3Jek!Po!RKC|3k1Bv27JQn{l6kDC^erj~{aYMKp)-`X^QLe@bX zjv9JtYZF)_(FU7HEjWz++E#PM?{Qk&j6hw-iuNv370G}CBcY#!s_SS05~kS$k6%gV zF^12nUUQs408eQNW(M+$0?rV64HpC)|Ao;&{xA&;3j~74XXgaMK_`%dr+Yb3{SrtH z<_G5o#|JWiJN_xrXkj4PfBJMtg8&9K$%DWZ=$a|PVS)6ZQyAzI4ICW}WcWuH4jd6k zjt2b~L<4;C`9qGTY zaHLk!1SQ$5q#D&7w6HuH$Q%s=`w=%T&@Uf&QJ^oloFRd}!%#AS=y8Do`GLGb6#BFA zT%4d2h57!kMT1eeRajUUjRsQ31)O~N2a#pdgN4(hLDWE9@EwJaIt^Z%Acp@s zc*IU>(0|v;Qv-pVY>plx7RW`l)F{H@|BWgPMyEq8KM)v-SW*-t4#m%ZFLY42(R5Z} zVIX^WU{FCIG6t_e0>Lq)a1ab7CSOYif+JyXvcC!S{kgF3bkhgZ1DRxE*guj=zor|` ziu!ZVJ#^)|2L=%!JK6Uf_+4BQ~2O%wr0$JG@ zxfy}H@s!7yocbUoX_)s3o)E~&LDr=OvWEpSD2MVft}_FJF+^!f3i{8DPs*1NIGt)| z6hdVtRAONJtB}p!L4pK~A0hcP;gEKn!f>_v?;RuvBoC5PQQu#!=a=~o4VbJRgMfw$ zX2jTN%nTl*=Nj*b_!E9`g$V~kmu4qCsxdaB_lp%^mUo=mR=N(T@hz=g zbXK*}k5Q}UoH_Hfs>%~*o>e*bl&_pvH4myAYU)*0OKnGULo2skRaMuv6pCxn#?lsm z`oi6|6z2u)ZJnfeK`X4PYinEFgl5Z{7HT`Hx>~B1!5>oEiA%p)>KZ~tjcs^D-pOa2 z6`eU@YE-X6qT^aGQ$2|d%)(!R8#p{gCbT_9e|yB5F`BmxEBc!WnxHn+7d zjOv&8PN?auqh*Qio~o+OlTMj)BD%Dm)El~O!GccwrkI4#F)a-p3z0l4RAuQIv#M%W zbYU+J9rXsZO$K$s*v_T3uorn^pcOi{Sb4!xq$hl6>LeE+i!LF9l~IK5?Cj`jTUOU8 zJ=%3)EA7=$RfRRwQk>f-cgk|jG^@HADHE!?YS0)eqB@jF^_JRLcGNZ2u!$|&9%N$G zf~8~>l873WN=Rd*d6Ak~d3O1{Gpkx^nrRb~hSm$3I@(%QZCe+bASd7@r7o6(lv!xJ z5&pH+cIr?ORM*_rNw#;^H(~jR-(pu$5HG|+npc#nYGF-FON|~OpdiZHVx6TEw6+F% zs0i(0aoLRZqQY9esjgub?XptULP=Xyb=Dm8F-1WKLEKr;)U1c44*e;}H)c*fkhbBqxbAw9b1!SaqKOd%&$R#vqy?IQhc=rPkB)JtZD z>1@O>(-TNnTU#gfj>&C`6dFUqBdfUYC|Yo&69a-K9=GMDn&OFdHSJa9G>=gPsrS&E z3!B?&F;#iS6I^G%^wg@|TG2q6g#M^$jt!lqtxG!_>fIL3IP(mQW(+?P>p}tYe3^us zMkhtM?gC5<7{4tw%k_wBo-(P%48+>z#b#)6PI`i>sPzXf|%C^^P+gK!`4A)mIe0GH6TKADX^s=N{ALalY$o1MJXa z0V?#nH8UxZVd!pLSUBIHt+o{tRhJGDXRzr`Ol~w%Tean;3yn|}T5E5pYg*9MP;a`r z!R%6GE>;sU)H|!{mLqjK8_>J;=t48;n)ytRY^^+>;EAk=mO6Rn z%wwaY%^PpL-Hsw*8Zg?U6DA&It~GcUhoAlHS6t#RtW-(M@l3hYp=v&`JjV51oYJ(C zTf?`7W?mm$7npTJ(zpF(H~QwL{O+|Eo_l`xo-|b&Ip52)d6|>E40Lw!KdIM0R4Ywu zzcuZ)KC`Y*T^G3_<=e@Xs32-jS|7SGeDckKn}R3ZlGOU*3#Bi=RQk$nw>+&~D%}`f zAG#@cbKsUF(lz^)*+w=7>vrFzMsfTz+uelr>giSpj&^#(T$CrVv(>-y5{qk!GkG#Qq zzia7Nc(h3`hu=H|yhn*&@AB9KM!R_KUN47VrT0LM{h5029lOwPo_=k^(BHEMhe9fg z;>PikAC2OsmBG0S1fK%DrxvAVCBVxQ;O8g68xr93``+H#U7i5HG68-~0(@NpoW6b8 zTf18l;5!oFj|10n4uZg;=K!4d;J-Khe*jMMa${Fy4lv%$sVKNy_zUY)!E#~vs#>5g zquxb^T>at~LO|W6KWNVq8XPUpaH1tCo#dJvzl7CGc)e7kOQdH3k1D*7u$N}ubreZ? zE~7oyd=T)gLcn>PVrLN_I%wXaV=7WR+mQM-$~563L(pi(r&&0CfI$c0UOgom1qPh& z#cO0X<9#ihuBCJg1kT%)Yrb2*8XS+Ga*y>M98Xknk8K{@y*2~;%!7O7qiBx~YS$}2 zI{|*K2ghS_+@slpd-ZgCaIgG&56;`(YF+X>bvthIyLCHmZ+rB3<0kWwt!FIHV>UjC zaa;dv#_fK&IDww-1bQ}j^bB;Prqsh8+|1dg@F@?jpBT+`Ui9EYJbFs_11z$W=4?6U zdGM%!IG^jm^F8=-5AN-kCp@?}&SQE0?-5VNd&HCR9`Q_|r#pcj`3?l>iHoO4e_T90 zcw9U^cw9XB(%&PV9y~6d9y~6d9y~6d9^4zxBA);4cur&7jwe0#o(?;ns}tzCDuJF& z9zEW8?)2c^c<%Dx-gv(1!M*W}@+3%h4mT$2SF=lmvELh?Jsx>)KELb1qaHm6Jh(Uh zMSLB!|L!nQ&TFor5zSc+jdo1fM8*Y2j>!d2%_*=;KWuvRd*ek36kO z%ylDbnuGSgziZpTY7S7JfVPD=hpV zx7%&uuW{ag-NJv(^UJp^{1(=8gN65Hd!&7_U#?rXJ#3GBA7A1u{d?Gwzn%FM zj-SZqa~x>1OF9G>zh+waC2VK8g}=c3c^00+_AjyU61L|%7XF|yL)~lPIqa{@TVm%A zSpIoSekA+#x`n^P^6y#rBdlM>ljy&J?N8xy!N0}zPq6TNSpGB%pT>BDh5wrKv%|vY zaeP)3?+rs6GN3U75_Ex zv+!Fu4h0r2>-C8iUc+%Hv2b~Q&KVZ|eYXEx3%`NwTx8*+*`MVWUc&ZYY2jIH&pHd& zn=--Q?^yVLZg-o7-^={ZEc__8U%uff@!Y_2FI)055B$->PvmwFTKHJTL)?z&znb}e z7B2la!ouHWJ;z)4V8&mz@Y6YNZ&|pkn?JO0naBK`FJh~G<+UL0lNRjhxqg}=}GXIl6awzI;* zcXHgSEIh#Dx5dJbu>3_9zL@1VSok28f6BuBjK6H*cW}IN_*S#TN9NCb3zwhW%&_pQ zS|FMNH=J-Ev;d*~Yl^bwg;zn|IF>ydvI!ZHz#zXh5wfE7RIF?&qWxLg#_)&bF{+Wfh@OA4^3qObPUwLq9SAM1ctOuudOL$&>-ogtR|2^Xp z&nU;?ZI8U}3Xbyu4^H|s=>^9@3wIcI$T%D_&pgFA_N|D+A7(tw!q;*hXIc0%#s^yX zBb+xwEqn{(qb+R(y^B^LfJ<5yaE zDf3rb_;Ji%Z{Zu5ztO^_{w51=2N@r0;qv&zGdwtp>bO;VaGIaX#eNU&mH)N}C;2&C zcn{+;|Ig*?`-7Ie(iZ{j=j@TEe%ZtEf6c;oGQQt~QwqrZ|0fSldLHEu@!q%aA29B4 ze#tz!jX%r}Som#>r+9E`SLXk|9-P`;#UJMPx9}y54`W>VOWs!=?UCoH6WZ{72oFyB zXY+^o$5}XSK}p9f3pcxjqn?F#vwVexpT=JbILpG1WBhyzPvH*x=<+~j)$_geDhCJgFf4^DA=nLk9`Y2kYq|FwmW;tyAUYvIEgf5pNV zGX8rDKaX*l=Oo|uGXAb5|0?6}dvHCUvtOThaPq5wKkWURh37FI;(1Zp-O6~x!tZ80 z$HM=_c%FstV?5u&H}HqdBP@Ik!}hH9;9mK49-Ktw z2i02{m-+VBJa6A`$;($WU+~CN{-i|lg5wnn|A^zi*MocK+jl%T={XoBElT~x!rzE$ zSRJwOKja(S&-1b5=N`tx9^5eY`uIK?evlqvX`g{Lt7D+@o5@h2_(Y{p-*@LL&w z&BCu|{0|o1Z?v)JKP)_p@xOR*ii7xd(1Vj-Ut{^tEc^_{1H4|4eBR4=vW36Oc$S3^ zKg!tI&%$#VA8O&xGCthGf64e*3tv3O=r6MHD#lM{T>5%+fV_kU+2N~ ze9P@_W?bf5X<~^E`PkO05S!k6%Ma7zOGM;5+< z?Rg*p{xb_dgY9`V0sf?gpUd%iIsyKIg*%)-uOz@)Pt5WY+fw5()AY)@x@0Ahss?^w{%~@V;Su)ecNH#=<;V3dE_tlnNgp%I;Z@JK+3_f_i2`2nua)1xc5jqA(zJEcJE7ygGJ zdh>r5`@e<-ssA$ZFZCsV$qu`1sv1vh9VcYm99TO%OPo6e;VsY^V&_zW>p4X{Ur$(a_ zCr_OM5Jz>&$`j|D5S04N^Wz^tnX!!>^wXU-Yvr_}=5%p~`vZgSpO@ z1Ab@g2Y$8Hms+wTKU}h-JD}#xP`<^NXO-;mWvCta&fmP66t&~Bl#(4Ylv<)x_p^Td zH~2~pU5Wp1qI_u7|J3sy-IIc)Z)q3(>~R0 z=sMkhJF>k7Z9I46NG{p@49;Yq{2#vPVeLQpJ_-Kf;c=5bJjb`?L&V`D#GzP~9IE;E zN!R3eR~`I#pgJ@IKdAjUcjJH?eYvMS;#2SJRBE1sSj|wmi{D97^EM$)xDUAl8|_p) zj(BumT5^5uh1Ca3KP%l`rb>6?ySVq`k@ibk95t_gn0n@}sCtHMxeW1|nN+%U7-a4+ z@p@(`;;Z8YA74OB_WGSMj}V_>86`U| zQ+*>dlz%bhMoL7@>xR#r{Zz+y;P)!@GsR%&i}?pPA&-Xp4o*!@^<5JVcURV2TylNb z$v$mlK5`HK-?6;r;A8k-Sn$Nnbuez@*dn$TOzVcl|^@gpkI*94$e#kDl9XUv{6sNrb zHJM^TG2MuMGr9E(9oIWPJ2I8*oQ+)F^3?EaMnPBDajprahOQY2?5KS8OgJ@s%`aio zTjo`?F-v&c=Py_cq=> zJs)K=RQR3CVAEyGhi1)CNsDWgbK1^>N9Nt}V$H#P#Mh7bJ&OKC9CS{T|2yG}w+|0r zWNdy6F}dBB6uAxZn3LArnb}=gr_|d0Y2B6iS>2V@96QoMbw~$|u_W}1^usE|9c?{> zI8C_|dI*<)885^79GoiSgysnv8(&3UNWRc`=o3=&XbkQ3_uWeUh1vHs=QA}S=b)3h zuI#b_kNEn%v+mMhHa;KIn;%(05Y7?wc=f#C#Eb;^ur6+*;F! zxf5kWRp_03Xk8Jna*QwMYvgLX1|2O)@`oFYC|3BvT|2}`t zn7#gfx}V@zW%R(2`$>=ZP5D=bw#nx*w4c;ibFjV=mhIXZs#L&m+9)v2Ypx0{6c z;DW2KPy8(djp!Ho9FiCx9(AQp`r_>K1vKZ=D;MN31WwO83#X){06qG}Kxg)+E3_|3 zOZm*#(0$=JE<;;@2Y`_d|JdwP=%neQoO6Xv3T1v1w6-8MDLMQHFj`AeO3Ga%Y?w&o zCeWs}q*Tp>jk2Wl{y#*KRvZ|cMhjX)cW7Gs6l`#E$=u|mz}^015RnuxDzG^<#ih4o z6RskY@Nx>M)C)l1Nd)1*9m$y3j2VHuLKFyQwgxcmBh03`@A;{kq3<0?ZfH8xUk6J2 z7Y&UMzazRr6S9d`X?SE*Xrk6@!WWttp+-`*KD2l4G`qj@68bXXrT1aO=}G!>u2$8E*Xq&Eyzu zGc=QDm=etlGEAvvqUPuPVPELf@NZljPD>$LPo*j}Cs{KNO{^+(Mhdy0e1@ygToSG@ z*8qH392;u1=J`YCg@+)%rp5EKh-RiLNN%z-HOU1i$uK%=hfpvw9E6M%Mkb+%{&mQP z0zDQ?mhP#H(9&=nIHUi9Orn`tX7odxQbkKY6uLir50X8ts$GR1$kM`TRUInypy}4M zs%0wlkfu4VJCct>Wsd8QHItQARl7iiev)|{+TyrAtm}+6R{SD`LQ!Ox#|P6d6{i{I zSA$!@lo;kWeds&zvkmiP@;zY6)9?%&75aCrdOjGK`Ls5(5e)3yrQ2yYb#`a|2zAUC z^+S6y9|f~44Udphp%=7*HuV?P$k8w4WX?D=suLe!ehx)_sYu_-ZVZKv^M$Eg-{}n<@6&cLSLTZh zf%dQ|EA! z(tO__bg3_!QvIN#-+zTx`m!jKmCvxNe5v)2%?lXzDqqI$p$HHBgop}V?MrD#=`?1q z^(9lNt3wEJF~oe1o+|qiovzbacT62vPseCh&m$NvDC$c>g+Jh~LD3JrAzG{Jv;QzkDo+zHb_F@YN4WD>*N zNJpmyC&DO4r$q+ZqKKr2NwHRv7Q(9WJXcAHlSK?GDK%WsG*ISbm7yqAMd;K5F*bF; zi=lITq03>R5j@YAM;9CB&i7?ecd{i_z6=uNl&tpU(wsfk)T{BOQ+PPFYJFp`gCwU` zoo@hrRjS%Z*8BR=K;mR-FdQe-0>gD1$%Vd*o1lf0snM6Q1>71_)@0h-Y`8_H-aUp} zY`E=)Yc|}&hHEk0V}@%r+*5{YGs9|+iclVr13F0k6|W66Og3mZWW;s|pQ{EoI-xFK zXde)xaG7r)G0ZLZ<-HH?Jr$uzmPoBl=tUYn8?O;csBRFtd7p|xxeBHD zb7|f(OvFE!KE%tXl5kxb<%Fh_Gtz&g^~8|RJf(+IDJP8NVcjs(gJSp*ErWnyVY7Td z0E?Tx2cXi7lE^Vmcs`(E^(u0#lYR#+eTL!Dp(--n(KE2g%*Y9bOC8qQuuw&27|!Hr zq{MJJD$)eA>!4z|>Pt$sEvY#L1R1(-U$RSg$2D3`!+jR?#k)Qu(x*wAn;xbWRssH% z^Zfu-k|Rn}8V+Ye6zkRz9VpKwN{$hDllJ}5BfUr~knvs}Bb$_SuXayrjamdmw>+|S z8Av_Wq;MoIZ_d4Xc5T$5vD7akep{4mpt zjh4b=uuy*}qSR4Nx$lbD<9F0az@OH5g;S(l@wtEla2(=J@lj5NFMQomPNgrr>?mh$ zvQ7X}e3UcK7k*HUkw&UfiyF8RuNA)4fYZa2An9RR2%9cg71sqhZWnC8T~F$QRXw_3 zRgW%M)uRipi0c9!_$zcDh-o_TS7gLRnF4=>8DlIq5`n+6N8qpQ5%{mi1^#HNJr(wk z#FJi?vpL}Hr?FHB%-eD-&Mk=8xu}VFIYo$Y$`vXcEeJn1k=DK8hoL>-uz_a?(Cd|!tbCZA@+`FFs$hapV~PyWs5;opp& z{*~s%IYa)H4vvH1Uuk}vH}J2tAP#|lWpVz+^8q?R{T6t6g@VaGWoo7AM{t5dSaqk5n0IC*SM z;SY;Jq&}VOAlovuC4rbFnO@b?aE~CXuNs9*Om<&qRDaV-P5`ao;xkg8`neilD;bf? z8no%uSY8|emHl1!xyk@Gm)U_}$s}e6!Fdlm*sD${e0ANQHXRlYB@4-b=p++NZNQBF zRF=<>?hykGgBps7mLfBU(@F!UQ=1$ILIkdplE*$vcEM= z8wul;8XpG%NO%+_nW9EMV{a}Y$D&{8!2WJRPG`t$3?j}BpjaHqI5)5j#(hZHI3hD|u$MvmFNQsZBE1c{^h3zecl=v7y;ofyM zRthQcF@nNH-9)MrQsQC+dkGCL-K*K#$6T-L#l|kT>H40H)c2y!g34KCk*jB+kP^@! z1$4?tH>C0%KWwTcq*x=O!taV{6;fg*qGI)EH#7@{l++PX;U#3f?CQnqoH!@tJ8P0V z$tqmZp~5o;4B9A=cK2lkz1{F8nMW zf}|WclnWwBBsJ_nftL`)D2?k&L&vor67aY7ZWU$z!bqGkQwR%gqXrS>UL$O3 z^b%n}GTZNTU91%HMHh1SVt$n&ANsTBAr6aMj`~VZq27=Te)C=~Z{k(CkU4yhz)|%= z4q}L|Z{-_>yC)_nrLJGF2DrCW_oe? zA~k&kM@L9q8D5t(VbDea?sQ$L5OOm^ezjz!+dExsjjLb-19!S+RtUM7p=8Vz(Fyro zn8E~-z(m|4*dm>i$|>izAwZs+ixoo3FQ2rL#<$q3cex`!MN4(3K5`8fUZx4;gOFmKds!AhVhY)wHq_ZRaOVQH zZSbs;#Efp1_O6lyyT{F(`9g{%UUAzbZ<%eIiBCN%{)yW_c~4i%ZN0dx+3F16Q{7oT z)t%K-UED27QGG4jwBEICu8^A;3hAZHQZ-EK#LjQ9$Y*Ztiddnc%r_f%v4B*7b3z{A zBEM>1xlx#duEGRCh--$^u$<3OF62Wlv_Qzm7@|3+e4}vk;8e`PLgI@u`hYqi-;S#* z++SjXLMFNPFA!3uU(;@!{k<`)bF{0wLP&80<55WQf^=8(;!}h8v@51gNb$ndbvf68 zhTa^g*w~xRxV^>tx4Z4siEUy6Mzu7e+(vqgYEfU!idMS{&k|Cc_o*wD(9)QnI#-xj z%RPnwX>DiKo82ZVde-cb*K~Q3n)phlK5#`{&t$Ak`krIl0SQ_%^Flg@E67d(SW*co zzWdc`XQMFUJ>-OxGZIxuc|MRHRFCzrslI0qBwQ3t=h_eR8Slo06vY9G_VBQGgu9gZR#W!@bkm8sbsKSXO5EODJt22Vai6amcQoJyN!o?h@ zXGPwVPTO)u=J6TtDTI`B7;lM+@d3)Pje<0@aEg@RZINKt#>!UeS}0@4Jt6-RG=7#e zaV`s+#&OBoD2Oy<8b?XO#!Z>qs!NEb)r?@UyJbvJk|R}_6Qg{p$c=$S6z|d-S?nr4 z17gZOVL1nnKTn@1fs~NqDTcn&BZgz4+YH69+X@l##y<`O^8}CEr}!+_ak=1|FDK$7 zD40q|n9s7tGidB}IKDgKQ%|5PzueF~enWHf^ASB|{P*r?{@=ZG`SjYQP0d~7np#iL z-HKmW%0uMw!Q>3uusl1Elar18iD`T271+6VGWO11fvs@E6?#wWQNip$_E6dln0B}x zg?)RIvHdvh-x~-P2m1y>;{xHKL&4-{XHy}*9qh+`!V!HIK0h#wd5vTDaAJqDG`>QP zI#5XG!ND`#-GbB6cAuev)Pg{tLArVDdLD2lV#i`gI{w9l_*Mjn!axqT$oA*JXtTRG zWc_W0+E^_qawI&R{LH~V!nWhdGXr7TcDW!M?bG(wW|v~x_&7w{cIUHM;{!v;PwbUU z{vs{`#3KYt!zK#YN;oqRiUuM;HKOZ*OAel`cW#zAM)Cvc2!Y?a9_efB9q|`o!}y6R`L+Mqy!OAeeSEll)=Q1bPD!Ir&C{w zaeE>BGWLfT1_l79{M0s*EWGFw?9yA_XGH_K$UCyw@h^)8GKjzq?{uP0K>C=SvumdZ zPepf_q;mX&qk1>@C52jxRsr!K?b6+Ae+7c2$fLedic0=?N>S>DiP$P>+dyzKdNe1HJ|qwx5l9~xNR18;gofmsZpVh=dZX@q_Wjp*0Ecls zht96+3j+P18RN}=0i4rWh@e$XAFt;H#}6>WUk$@R>K(cpF#=HoLVXG`QeaR-&nLjb z{)O0C+~5CHZjqtG?O^N^RykQ)JsSkOj22cqoxxg~9`R9an|D3(SzhFmj>eF)ZP8OWtVK)cR03xx4T)l>y{~P>3x6h|LT6+dXI1VEf(gR zhUM+pYI+wITUXdByYWBJ+CS|y?UyLR5L`p0+JuKK5Krv0DYMBD70 zUG=Zt8r!`}{GFR*XXy72c#G@VBYPUKJjM^uxil?$Ytn80nb-T)IrZ4X+H8zX+g}@M zrc0^$5SRDd8FaIX_t!3?{k3O)+kZpSNjLgxQ=WgW^o3HXUiRGcFPy|oS_ui#KHN9@ zXkYG=J(8q%8~*9gUurH*E4np!TVU2Y|Mf|;zU|!Ly8w#I_Uwjc+PQmC3P{v9+|1p3 zo_qcjqRY~Xu1{L$zrpuyhpMaP&==+#Yf*ZSEqj8KxifF{m8}b0AMDz*yNqlp)7oq^ zXQ3%w%#EF+MfdDJ)wE|hbrKu)LTSS9@sTFwxkZ)toT76*UEZB_c; zu(!0a{~zC5It#vMdE%zW2Qd0Aii{<1ct(pnhgy#bV8sdKXRy3{P$6I5KP7>Dc>?@= z)+1l*(|HYyZcz1RXYAn_db8yMy}h!mH$7J-_gXk1Zp-A@w8K|~9=kA`g#lG^_hW`B zYBRmypuH~f#aH)ul_?wF#c?FOuPd$8yB^%D=OMmlM)LYcNL*(d-y^g2zsh(v$M-}_KERHiYT>_N{yYo+2DiJ|!tZ9j!@?JGyDKbw2J7jz z@C!LV=*JXvNZf|Ao^Ki0#j9A)%@%$-_lwvidd9P!A6fFUSKuQSE_?1hW#PZ#PJ7A1 zn;C!0!hgs72Nphw%;QV~p!rK^s#lqzosDHF@>EDkm{M*d?*$?qc_R`F-aPe!p zh5v}{KgGhYV*V=@UdZ+@vhWkxo?9&ZVUFi!3xAyXM=kt5mVes9kLLcB>!$eo9?SpH zlAp?Xg6G-jL*&=9{eCVNT>O`Mg5S&Xvn=`J7(d^_kLGyFm(WGe*&Ltcmi+C^Ut!_0 zNAYzQK9Bj07QT?}dEUbR#`e5v;lJg$ePH3|aJ(F@C-(Q__@`U=ZQSl)3t!9rN<2hQ z4dddU;AgO&lPx{_nLo?I%h}F43*XE55(__(?O$o(xonT@p(XY_%J?mo{PnDVi-pTu z7TKFw^mMY^d9Kc;hB1z*kW4zciCS^pFZ ze~;rJdwq$XO2+qE@;lhRKU=uWW1m@g1sMx}nvEEV(mwD$* z3zxm)%!5f{?Uu5hD=qn7v7PHId>Y5$I~M*V$9bED*Ro$fv+&Eg-KQ-4Y7-XqvW36S z?Y?c{d)Us8EWC~NB=J`PB+eNupJm~)E{s~Ze8IfX!arjD(=9xi{XNyfZ)f}GTlfPk zzrezuW%(`($IT0U++gAPEdRKL%XgD@Tln1^|33VtMdBm#=Ku?TncJOa;ooFEms$8{ zJpX*l!hgVeZn5x7*#7TYcs|ExhlR^GiXXS|Ct3a(3*XE3yk_B-a6kUh!Y^VwKeTW> zOi~{~JQRQqiCZe`m%Y{mmp#c(wd7Zu>Z-}Y^EjT~y+G-G+#Z&{){_4>wsXCO?`M3g zg(ow9KjZSgQtoFw=aDB;-UGj6;cSk2%fe;d{*Hyy`(`>0S@;>;?}sg1*3I;TZ#pQR zB=S{`f4YTNFh1JCf5iA$3*W@}aTb09$7hCxU&i`waM|ndFBZOx^&GbF-!Sg5f70$R84r4JuB!bV;K8Y@ z!h92Uh=m6kAMU}))gSTvQ|Q4-&jgmAXyHdQK8(2{ac-5O75|6+4Jki7Jf3{ zVD|1kOM0d<{##4lJV;QfXDnRyB-(4?m-I9CykX%>8J9g!CC&#J|HzV;y?By%+>88R z{*WPT;kk_Wv+x$i2Uz$*#%0e~>92c?`AYVN6?`w_$9nXT$!~E#o{#`P*~0JU>)>e# z@Oc(~0$*q6C%|hgyq)D665y>C{u0k89Tq--?UcEQ;?Hj#bR>BC=<#{P3mgxL8;4B| zVglb5jQjjzzKwJJ?G`TAcUfPH9$Bw`xwnb=v|0K~;$Fgp{oQxzKaoqcx5@IEMxv4X zg{CwWb!_`@1x7l>Pmub^o@UOESmQw2 zm-A+b^;Z8`{$O^vQRBW!Jvl$X^{q5f2f2Q?2(kvTUljfjL~s79^NmC`3zGkt_?P+; z7gBGxO;whc&@0w6Tu93mS_0bj>Ft<3_5mq1Q@`Se=kbT-j<%_{`qgaz&iLv*as^+( zSk~52FI$_$_BNU5+114CaANj0nN&1wT9l5ze{Yi)=f{jF(PRle@6W;BCT4FB+NYp2 zthV>Xv+I4>tKd6|_I&8Om7Z-c&+<3>6kzWY-UH?1I{%hjJf9!x)_v?#r|rYD@#*>a z`*|OYZtN4X6Z;e3bHycZ;CcR!`brMvVXuh1nZ-}$eQ?R{b;Dk`Id7(Vrt{KEu6NKb z?KyB(W9LEa5da-ITlevv2vqN~=hZDGjl~B$u^-4#fA%{+|J#vyqt=4*iG2~C#Pj#bFZa3qz{Nk2LkzC7eUI(! zVD^Hc7~Jkx+lQ;2&(b~$_#M|gKjKygU+=^oCrQ{7r4GJkvtO4luRDmcXR0rM^!l=k zORmcf|NQ3a%biSuK2cBeT zPnx}m8_~85+3`pCE_>OK{XfUvGNd;fcHf7-@?)=(Rem*jKiYI)|H`0R62%!YoQFC7 zoj>ZY|M{MTADP3TFN#}f(Q8W%Rv$TnC6n(-;&&>wy%>8Vpnbg$i}=xry^AUui>OznZsDSL$v0?8qeYJ0JB4+lR6e zrL;ZQL*HxE4swhBW$%^`v(+IdNo_Z|Y+``VHzxH(4DdPi|A{N zVeHj{eL-r1DwBA0-aN$e*~<`P(o_9nvEHNOP1MnO&+Q>rImG{7>oR%M4cjh5yQ?tf z^3l(K_Qa0-qPgL6%nj&&^s!Ixiy}GoI`T%3IrM>)OaD_oQLIgl#&WvaQQNCiO0nIw zZ!!8K^J>^$hqkGH4ealFF{*9<6YL<2?4@=^FXcJ>Sm#3-`bO`^u^+P4@PYJEz1Q*n zg03%^`SsMDs%g*58>UnvUv9F2uY!KL$wpYO*+O4#vVlSImmO+EU}q{zSO%&dW+hJjp6feP2cpz$zb}IaMl9f723NA-6mfGaCC)tO8(m zpg5X}oCmaJPA3$Mg&_}UL&m~@2ebj>@BsgZ%me(5{B=hD`z(K*D}SAlhn?%RomBG% zZ_Tz8^2kZXQk`0A8$vEqOKoGQU|dH7HWXOm*6q-B$6-5!4!s>h;W(&Xoux(VLG?B9 zDbQZb(7K7FW2b&aTN{3j#wfls3W$<};ya_r)Hm2j-FR7CfJefClj8O+7*E1xOOc99 zZ-==dUymre9YZm?56z-uDC}-m+{In7n$($nK#E9Kj?wxZ4Vj;WkAx=t%u_Vs2@f;z zSz?NRhu7k_@iNJ)WNA-Cr)YhQP9e2&Od<7hO#Q2e(cwqQuW=J|$_Ji; zDTh6b>-vwh>lN5;Wi+-B+lk+NSS9Pv51s z=_{oLTAMzAwiHOyfK`Dc&7+A;laQpe1(XN~Rk&Ia1^icA6tzVZ)FPlLRjT6SUQrQI zxmchmDhgbl6)^wrcV?}<=S)tp7xiB6@5BDI*=xSDX3d&4v*+w{&OYCTim1ttBwAOP zIP!0mNp*qGMwdHXye#g8yY@3^)lSu%^PIxGW)v1`%Z#dwMzd(|cq;1=dCF_$Ds&>A zMw8DAF>?Et;`ZfqJDfu!v)NFO@@SITY>qx}!|FL7boA!&$(nhe!k>lOJfl9NrFB}L z#i6a^*;0>a1RVb9k%Pers*o`P-7z>zL2#n#6e1r-T&PYK#0BKzhzo<FOD?837BY3XgTqKf)ENUNwN z{j~)ws<=058zq^zMIhT&OZ#I*6%S-6YUzPkQN@Qc6t$!u?Saj(PYfbJgP{XM>JSxm zRF=U{OZo&N6jjuRb-^;HqV{duM!jVbdc^k~(Xc92+#5j+Dr&R_8lJ!WCnn`TF$EO) z3f~#EsO%fAhQ5Jm$l{Pdv*m@SL0^D^N)`7AWG7HdpNkb$d@@5(OZp5_%)Xb^3w1z^ zA>bBcj+J#*m8YJ6JQb`{$$jG!F);;tbKTYf($(fADzBZ`n`kIwV zn2$)wu}IF^FT$nb8mYqEsMsS=QE+*1Wl+?MWAvomiasT^14)w{S3fWC0O{4M_6L$_ zTgRmH;58Q0-YI$%B8tt?Pq=3)D(d>YS`c1RD(?{t6RqN>BdGEg5f4UCpAE*=Xcx_* zXxN3dup??+ucCHu^rYH5t&#FmQR|KVbbxSJr$B?8B_j~NWD^tdFdDtiOz|cG56Bq{ zN=0p%iySzYks?-9Uib8j%;6;2gkev`>IiC3u~{H{nQEygR#Z`cr3`Z_?uxZkyeY$+ zmh?$$To@|e6Sb{W@yQ6%d3~L6>L|xXjn=9-JA$fI)Ir#tKubCftU?vlW2>kobs7}A zDyq|HtKvh_uWhTPcvSqdz0VffmWx$&#^BphPfd_rKDZG6$(+niLHn z+j{($UU|;;kM}|{4qaQ^*HqS@TH?iC#R^e3_X%3inS-7tJlGkBN5x$cRIj40NL+;n zrB8tsotaw#wTg?M~6&DTv1HZ-($0$E?a4 zA}3nW`Y_ok{6)YK^od|UfJShdbe#Q~={t`9_pXi^5`h(QBvf1z%}Q6GvMvn-tW~OY z{`n#+kX{GS>N5c$4rfJ=lqR}>xhtz&89C5*Z6<=beO4v9>+qa1x*Tix`LmV@~d*zeaCPA2!4{122L>2m)$D2p=Ygmw}l**#;i$R1TQr!9QMV*t!kPdI1TrSDOZ8cTYhpw>q6F zPIiJ58)V>Rr4eKNz#LH5lhnJwlHyYwoD;%q^1}3@oN0!+``EJ7aB9sWS-j=2C%6Al zvYroJ1S)dya<`C{dqg@XdD|sTp#2|i949IK3ix5ol;$Lh&>BM{Yd5``Iu%Zx3#UMb z4VL$bWvS^#3R8yIUn|C^W(sV`yT{quS(eHhuCfwr@o->};RSD4of?q?^BfGiqI+Ax z@SmJyS;JRz7>vYtP~J}m(Vv4B5E=2Q2$zWS z5h0L(r*fvG^6kI|f@4_d7L;QKpx*;^lFt zq(;(L(C%ASb1j7YYYq4sz~Zy%dRqhviRM4RD}nHo8l(m$i^1)07QqRZMr&ZGjf2Vtggn+u2~(8-Hn~IR)|T%2=9%qwADq?ISwBnUnRCi!m(6XTRo}V2qq}|92C!hallZx% zyQZ#lV^;v)?C$o>8)~|`>$)3B1dV?|Q)?ZoI?EUS4|2bQs)YEmwV>^?mW|}LHdNGG8|t=W z5RF}1TDyZSfalFs#_i_zEuF!sXPlK@K4(FCVcFcW+3A^^>pJV37uR)ezF^_ZIuyIN zv^6fSZ}04G+%~gr{sJN$i@VyJx*@f;ba(%w2;q&dn@LaJvbkeRXJbuAcc&pc-Lk>_ z1}8A=>rEI50>T-wBdXaH7%Fe`XGIA(YZr(p}|?l;tRH6r-+o3Qw>Vq06VEE^gxXsK^pQP*7;)NJO0tEo9_O?%r$ zUSOTh6;{*K(rT`=7Od`NtFQ)7hiZLmV_h3fgJPc-BGxHmx208M*S)!>rK^FVwrg?vpOso>~dzimdm`pxvrBNK_m7$ zJAauwK-cyzE)%md(X@MeMfL#7~{moxJx8Sah#`>0~7VN{;gPNAM zrgpf&SBAORs=8|Gw_&MwH8wT`4V&w>+3iUZMQ9rg4+^+UuxG;^>|~qkT44_zaBsqB zE#>pkk;j+FJ0O=kz8aYR=F)t_r2OxsbUzh5@jri%)a=VislM#`@VbN{X@BS!%LsgJM%4tvq9+@G>ir#b@1MyPZ=d+e{;oS4S3LbpA}MsX zBN=4A`B$A}1}n9qwBtN)7Q?`coKh?%mCz-I1S!EUS^FNz>}=?;kH^`(V=&4t_q%?B zdJJ&A7ThLf{oq{7+4T7vf7+idp+0~z4}KAtO@Dnqcr9?+(XWflng`aZxO@PjYjGR! zZ1ykj2j_Qu+4T7dqVZoo&@pQq*ysDv=hi154NTe=Sjze6WvQU_iT`(-Jdw_ir6)EGwzUJTa&P$N;l@rO?m~!!-HILToZb5K6nu4Z^-r7 zBLZ72!Qs3QuW=li0GgKU0;Ni+;E7S&t6Oev3$vAnP^H4ie#Lj99 zNB9?{EEEqBuAI1=JpG+g?(}fw+}ZBo%khCFj~??k_UBSr2UmLdiQ@kUJzTkdKkngc zWL`e&;irh5FMIfQ>GvKFR}S1CdHAnn(thdTn*{%zhumwsK&dg96<{TxrL@ z|2$mIdg6t$-u8I@Y?Ao6ob}W{Mf7z)*YSQ_aF?^5`e(^_UCw&qI=?S^{eD!+E@wUU zCrcbkWF2Y0Ixbyzihou7SI&0D^{Y&mv!3?P6#re$dg3d@AD6S9_-FB-$6n8$2c-OM z4=3jh50|r^cBad?9`^KqWwe99<*cXv84^#Iv!3|9;(t==b-c>)y1>JKCHgBoyhU)A zv!3>6NjzQ7dgALPKKgp9{eD&Kx}5dYUo3W9&U)gSL&fE+Cw`6iqt}PpA1AoWSx@~t z@Sn$X-ni-|zAk4y^_k0ths#+{{QF{G_Z#hZr;OL-tfzjh;4Wu9@$F*A<*X;36x`*k zC%#_%)YmcX_esHB&U)&v5dZacUiF8IKl=Kt_|FA*IqPZXQ)1uctS3H9=1aMG)y`JI zUCw&yD_6M7Sx;Q|0hhC$_*J@s`Tb2;mY>%6+0^~6sTe_YOb;>FUh%UMtSQ{u-` zx#?7Y?hrdJXFc^lBYwJ^^~7Jqe;zJpJ@H?NzROupe1Z7ma@G?+Byn~*>xt{W>2lT+ z|AP4Ma@G^S1pj%sob|-@^}ywqXz?tf!qrqVICn6CW$_cRA~c>+7h?Sx;PZnYf(w#GjBjyPWmJOC`=OXFc(>=)0Wt z#B&9AIqQl4MB?vq))UwL)8(uu{-~!!zFq7TFo-zR4!Fn6F-&mvM?W8%@91;9 zZx#I$JiJ`+Q$1XtVLr{nzaskY^zgUK{MLB*se*6z@Ch=m^F3U1LR{eBGDT**S2#Gw z)g^X5;NhDE|B&DspS=?QT^{};!IhI;_4R?O2Rwb_4F0&>==A3Y((iMgKl(oRRS&;F z=3Ns2>iTRJd=v>Qai~A~Ig876&VDDz_3Lt-6IU+&lf;hNe@XP0c=)q|ujr@Ww|n}h z$$fxwrmOwsf;V~kUld%q)K!14;9Z`6$U)%P>fx`5evjZ9AN`!?22X#D*l{`83F+(Q zXFdHc(ZAWl+XcVX>-Q$(CFbA5R|@`^ho2*OK7QNIL;cs!r6&ol@wr#}o#x@U3O>if z_sQ$id=I})@Z}E9>r2;_%Z*Ocm&nCe>F5*REcn|!e4XrH=X$ti^WEU!Zoiuxoc1Tm zb<*zPg9YyvT;sMw_9e}Ip!fm7Z}9XV5d1C=*T=aZ@cMm4`hCd59~Jyj4<9e(Cp>(x zlwWpm#-RiMd4%%Siq89=L@(vx_;$@4#U4JZ#NtCde1za59Ng_U?cj|63G#vQBoCh@ z_)HJKOYk`!zEAMu1=o4GUS1c@@Nj(;`<)(MBKxY#bBD-ZvYTt|=egG;#0eT&K*vMk4F-;*!|_sHw8t`o)e=bv~SHIOb%RktW8uJ=E; zdARPYhkaa(EtGyEI}+zNz)j!ST36Q4xM9mi`xt`AbsIKxHeL`&iO&_3b;g=?cwTBF z9(#~#Ejb#kEp3fjjb}1~vikPToB2qEHPhIP@Ac|7H_Gt-?o%2T7!r5RXtaWVa2(e7 z*kUxFQZ(OrQKdowIae;WLbJr1-vv_Sp2I`$`=>xAF53jF%rQytmlTk*n2XREkZALb zwm%+ieVa6{{r^tZJ24)~5}{PDK~%hvxL(!XBc zVy2JorTw(u_!iqjKlkge{ku_-&HtU^zphjI&(|B@{|^GA|2j^H=2*prf#VO}g{5QF z^9|6+)_&eX(>$1HPtjj(r{~W}`$VK+h4s?DLlvc7{a5u*LC7}#y)yo7qR8==;J>!l zxX`@cH=Epd0{;eqe$USD{Ij*^n(&r5n+4a)&+YFtrTC9GoPIgw)9Y=UFU3ubZLKkk(bzaq2&dq9|uyw{&5!v`^H@y;(r4FllVVi-?(YP zkvrhuq2vho3Lg`}kqYp;f7M{aEtV4;;n>IxZ*+>me~$8v!@<2BmMjQ^o*}iL3O-zS zqUAIT4^Jn1i;bap0`Kg=lEdqBtVz&$&<=9UQt{B$l&etxwXW!xR zJyrN@>%;W{_{j(MRNd&<4$#MI7k$h4tg+|$ar9+5;*HOxK}p3CcYeYW@W4Cs73>K< zoKa4D`sqx4%}HRn*^zGm^JeE4XN-+`2VPDNxcMcFF`WbcaPWoi$;TP%DqTQ6@rol4 zV7wLhZ)0k?&1(zTPp}`C(Ee@HgCp1q_HUgM94Q~r!_>N1N}TtKBXwAZlpn`DS0sY+ zxWo=Rdl(h0i^KYa7p% zAeR9024Jm?ha4`fxGRZyUNRt z861BJt{d{ZE4MrGT442w!05PjjCC#QFCS^+&9(a|)~=Zw;B_Zf+{ONC!Hw^>JB;h- zQLNv3%qMu{&2_xzuf63Puy$BSob_5aj=cN1yGK8TvGW>CVXg+?KltYHXoQ_N=sZiE z$D{bf`;)HQ3dHCT@(olVKF`5^4`syY1;lI|ViY1zKn-G34&U(|s@Y@e;M3#d0=pK+ zRUBbI&!Zn+-ORJ`!2kY!5WV))2lo!QFT;3&HLp;-)yO=Y`-nHG_i-=%CiVWC)cYsm zY8+xNj5n$G-=yAulY0Lwykr=zeSSMtdKF48Z;S6Z4w1tHe+GYoZtHa`#(A-|3g{NBswbpn^(Sfjp&Q9QOn~S~` z7GA|ZC*T*sLD9EE<87Y(ysPNmFiAHG`IPFHAWRH~eHN$jY%s8N5+N%O8^)zp*o;5F zG7vgUnnErKOWlS4xFaBgKD~5@QU7?0!(* zdQ9e^yrF<50S&_Pu=oV|@{r|S*nfD0yNFKSK!tKwVKOFpemI|9=rMUSp$fAe1e;vn zy^Y{$bU=?O6vE@fnVd&GEVw8vH(m-lmFG~Fu4+y*i2{~{LtJ-`<8L#=3%T9eV>(YC z!q@B8#)fbVgQv$^R45sahdZ@!3<@)}Fdc=NVP!aPCUOVl^~?n4ect&q!*%)QnxNLq z5Y+2U2vlTX0os(QffXq1hXXJ|HvLFxt*dk%3coZ;>%hn#H{Ln~Olt;T8_o`9sZC}h zK(|zl?7cSFDQtqhs3xPZ4K+9INzOHc+CsX zdOa?i*R$}o3%wo}&a__7X=CB789tBh&*vtzX1AlmMHxQNqxa!}(5Bni53O>T9S~0B z3NOcU8xWRr{gSal1ePva5mN~(~)4&;)Ks|PB48vZpU*8dOQ(5 zK0b*(o`~T*KFdhx^YJC@^F-6vIW`wXm z|63eg?!I$H=SnB)#8(S`g@_Icd}p* zr+o#R^Wajx9X`ZYtlfiT`>950o#7*hwE5aeFj&GXU5_V42zT*yxniYLRZ-;@&T$J( zPT}NEr*MjEJ1w@qIqZ#DK2@DmLrd9JKXGfw9=Al^A7CX~$9G|n55gU;V|UFloX-n> z1!~tOuu`L*xWBT+WvoelcpEl?mFnA|Gs2v>usR$R7nV3Rg-8Yy)f6I4OkDUjS7L&HL+I0i+>;Mfrv#baD^c(*qc-7Uh~ zsBy!>siWvX8aY@Z2bPRt-FSftPbge9)It+rCeL+q;&`mZNl}&;jArVnRhbD}@S~Tw zji#0X7WF3BRM!K+rU8rk6YRKx2pf!TX*v_da0G9OGtkV?EH$`voE$Y}3R8WSEl@;~ znI)stpQ)q#bTf_zBk?Me;W~hMnXOk1wK;Ce-C^VI&>ab0TcbvZZl91XkhUiBGVF!c zU&&H)g5TbDdZOD9w{g;`v4fvMyG1d(SfU9PM)R$ib~8e;q)#rM3MUuOQk#Njna!%h zur9YLd{#J)6F%8V$a9LDkmpoQ*|YK}Q}9&Cy+Vha$Te>gIW6sq6;;$9<61>6Jsd0QZrROf74E!`h0s;J&u#iMt;N*!0fXrL;~WK`*7xIIniHf0e`QGuH);nIKECD*L8xnD(WKPpx5ozQb!ctMinoL zplTI$HNl*UIzQH&mhO+*Hmdlu2&z_5!wPfRW9OoM<5;b6oEDjGR&lmKbgMc`gsL?{ zm2q1YH72&LmiEMoD(YyhqL$)OHM{<2m-~+DtiGe#m~B*NWf|33eMhx1+o;Zp=3R$^ zEFmiDI5?`ac55jf)kc3Lb`|SL?vzCh3aNDDq6X1`YVv-Gr~!SWQYSF){Ivs(4{5Yj zPDhhduj1?os#I~2Ky0b9dWLOV#jB&1^(uZSf+}~4sH31UmE$1Q`{TiL$`TkQwnmSA zm2eLvYLny)H5I1`#F?qgx($_xMrqtw#gPJmE_{8~w)$N9^9(i)bgbgb0`=eVA<=j` zZmgo(?Y}X8ODxTvikh!gQO$sRT}9Vo)|^Q2UM)TuS*%h~&0vpJ(Y2U;gMS8hzdU;7 zjOeJSPo}@#0JZt6QS-Gbsu>JWMb~0~15}GIM;5D8R5KW$imt`%1GK}-{Ch~&diem0 zW6&yAL{PnoD+RJ~(9)Vnu~NlzBB)-)hK#maYK;^tRlGKW>Q&s8(N;^E9S=89D(Ww| zF$@)7jm>2aJ+q{N2qN{hDlUwm1{HPa48+>qTGF8+<%f#ut5wv}tFgsQFWl#t)g$eb z+mOoIBgU!XQb(+q)foY6<$SrEafhp7X=I^EMfJi? zyOvhQiYlrXR#8i_PfgNY)>EyZJLHW0MMZT4H(n~L7woEPx0ciqD5|JlSVb+xJ~jHz z$m>o7*NU`D&RlCM9}o<4s$xkLmUqzI~1FPmdX#n|yIFWKS^POA2y z*n)~X1!6!dcWdd>v7(AfBxn`2bTC#_@qrABu@l)Ob?oBE%vu%I!7w;WMfHv@tj*%< zS=oGDyIXzzUew81D!RV*_fi%6t={g43{|P9E{4I`D!SfQMc!T;w^dQSMq3rtWxGtZ zq+UZ&MRx#y`;}1#aCPLwIu+GxJQA&*(LO-1@k=PTf>5=+n9=cQuHQO+lzy_eY&(yBUbo?u*o-C8I6v3e2*m zqsBUSSSTvGjk8W;)L3JTSy9n#+&A3((#hU4Kn-b^r+nPAHPjM3a@{cmQNvN>JKngd)D zcF*r2#>^hIMU@1ooq4|4K1_Dm?ofJ@)1ol$#vlDka18OKOS9U0Ke0^kPy1 z0iLCEmQacLg2M4R6_jH%mgooSlZ7T>6P+#InaZ0B_ifs(RL*Rf)j2rZ`IHP$seFVA z%}Y236GSVHIny~IjL{sFVrr1XC|QEPshngdW@e}fLq5_PA-hzn2+6J{z|$fuo{5u8 zW~9MGN0>xOCFxY@EX>=i3yjfZDW(ikI7Q}XX&Iwv3{SE($&=DN*i$>wbHR_InM|sc zH!d}miILK&@%F^!5lu$2kcqB1!T1yA49E0Nrdo1kS!$xyA8AiIVq#Esm=sh)oL9!8hJ9keJ_h!CYy#!Q*onrtr+1~N(%#;j$?m$n$E1ePw=ZGO(E)S%>c zv*Zd85fcmgIn+R#(Y%zS$MT0Z0+Py~nhJ51V2L)D<&@>T9g#&qkQK{BZ;7edBA%{~ z*JTsL1=jy2m`@I0ofEE3VGXBp#>%3m0SQIkQsB6p*dJDlb!!qkJs;C#v#LpqnO3gC zj+K3wWMrvuBCd&ooMgA1#MD4$i%aI4lw*`S%5u_+(mAto2IKk|noj2=H#qAbdr%nu zb8=hZfwa!;Hf2;J(vAF&XSxE1|FSi!&RDVPj8kjsI~$qFrvp4Bn}eD)XD&ajrt0M7 zXH~6Rb@s_M)!dic;UbifN;oI(g}eRV!-h zw{&)r%;dk76AJ@4{me6}YnE59|5wS61()be)-+jOYAokho_|M{EO!!_tU;1h;gNeU zf0nDbF;g+ltOX?|j6iCKD9KiA(6=Co*O<+ztFb;nItip>L*gGh`t2s6SxX!8=a}qK z&SHyAN(vq%l0uT9t@T~9s1O?Dhw84uW2r!3&t~It9cXLZ`p?eJC2Lf&0HJgCd2&@% zO$X8hnS@A8TZHSvxZA+o7)+TFT~jS>7c_Qu0}dM7E@NJ_-4Ya8n}Z>~dbq>XKmpdj|*k zPP)c!bwhgWLiRa^HN%_w_Gk*vtUURQb?esDwA9U;TVK~vQ;Bq~CVv_;wr#+~w6<@k zYjv~YnJ8>;WbP}>QeA7D<<8~|4AkTqXP!~HYB}}*s&zLua6Oru_LjDdW@T{QA@;m7 z&6?uUsJ{R?{jeaA&B`RpYdyZa&g9T@Cy5(^y-GLpTFN#yB#3L>WO8lMU*oFe>dQ#d z1*^>H$3GjdkbCG4FAIr@9*k1-R46?qx19=_)(V56}k1^X3^YL}c z6%d@deEEs#X-M$5sik}A@#Sf(szzi0OwXBnoXs7HH_rOttecxG4P3uYGG7TTv-!7> zL#*?82< znOPtG91pR@|9;Li{5mPi(SOb~{5C7gku3+B^?$IL2fs-&%D|LalP$*@e%xVlg{h{w z9#NQx|Jml1KlR9lF91FSi@g?S9_E_GnGd*U)8`Khv*G9TgLn6XUkaT4cF5G5YaQ72 z{pf#M^bdJ!_p5?GBe-6#_X{o`SVr7qeB_?}>hn0N56IwY`9MkW;eyZh@EL+v2yXTS z*ghF}w)imTPBy&0AH1_4{EB|?f9nUo9yrIVPbHXr27Z2CaDLRr!|WkAf4d($KM?(A zL_Zpf-iVad2T>9_ed&qP$e9}`xu-L-dk4Z>mp=E=ygBu50;4y8nKyKcddZU4M>)1tOvdx^B_k)p3aVrX(IVJUzd3Jc!fdx;+2ArhJC&^>Cq~} zP~h&a-XS=1;JEm;g0o-zU?w^ah(z2l8c6wpe(=Nn-~-T}2knfsqWP=OG!W;WtcSj? z6F0v{mkRw(n&Ta#$~f;qnTL<-YrG!^{qDq%!$Gm*_xqG%-_2Qgwd`Nicjxz72Y2J9 z-@#CyuQhrcbo3`Fi1R}ZKH0$!IrtO@e_3#Uyg||``Qt4S+#jz##!ehRo{A2AZj`t? zU;3aZ@u`t^5FBvqyZHSMuGa#a=>u}U|C&S4_y6Jnwlm-VTO8b7C-?P(Kjq*P9RDk2 zzoz}@=botVc5v7J9tS_pv7_H=`s2D=^!;)D$g$(D|5pX)I-l;?*K3)a=H&I%!`>g_ zdpqEK1E3FK;Ad~@HB~xB>brMwv!$Whxi{AWykFv>_=$oG zWp9MvCF4BVsz>;PqQBb1zb@r-J>1e<1i>Z`|D=>VJ^Wtjce{r_BLVL5@Ec{_T|GKQ7J)S>P1b1^)QeSh0=`#)*=asT<^|wcg z?-hT3@7dS+)!byN|5h27=8{vK?^}52>#5>8F8x)8;+Kj4ZmvrDuQ?RmT$RLoMPGBS zshtms-)^o->hH&Y9{Reh`kEur%~eVL&l~N`T$RLE%eeFhAZjO9a5q;a^*sm+ULpRtxhjeOSmx^quix*Wj)%^J_Is)5xw$H7XTHRFko2$mTcuw&S0(jN zkoD>2swDo1tP?j^CGl}$$IVqq{43(W<}{4@6+i1ee@08$%~eS|7mNS;dZ>14#UD3U zCH1cp|J_`b#J?r|y16QeYp&2cJb&hj|KIWO_sG1vxhiQ#_W|XsS3mzG{Dv4Lh`f+nr64&d&%~eVKJ<_k6tCG0pY;qnE-_2D?{NM1OhnuUC_?RT9Tf;mzUZswA%W0dB5J;-|=bxw$HdUn1jlb5#=8{nO1=N&F0% zUpH4JarN8HRZ09r>DSFwNnCTexw$HdPnPkzxhjcQNPOH}mBhD69Nb)$#E*!+o2!!e zMDfSXRY|-D|9QB%Dv9g+KsQ$h)Dv4i-|2*C4x81|niv5p!_!$zPJ3RdNa{b=x;rc%9S01jpqJQh*XUllc zkT>=^t_STfgLeq7@6#(J&KEiQ43&OXc!`ILnc#yS{)$vwEihYuILKt42~Kh%G>;Kd%kN$@d(>-_4o+LIi8cBP*S&vbD5$#y(W zaB%j!Sk~2I4?jupWrAzJdS88}hwE>_&+%~e^F0nOrj0*49h_6XQ|4WBNov2>3x2z& zf1lvr_V9-V|CNU?ly&l~hwJ)DF<3aX-<_gA#KUh9e4K|L6nut<>wRN|;JOZPkzlO! z^!0nQR!?8|rHeg0NBZ62*-1+r_Br~T_Xg?r3m#r8_+1W85jil-@g2c6J|$xRw~jvT z-zawe;NhPT{6z<+`2UHWzY4DQ1Hot8FMy-ZZS-^VMS`ooexG@+qfdYSQ~Is*@LvkP z(ZT7$blC@P_wY@!pKC5a?e~yeUxyrh_B&ei4}17&u7^J)_%aVa zA|J+|;^BW1{A>@uik;wihljsc@Fv04&&y?fwtIMw;2(8xnL=a#GY-y6>o(EEV1v zh{stTzQV%61`n?me4F4pt}A8VyUf$C75z^;`gHw$GOo{g_;$g+>fxj0{@`mKt_03M z@bE8){(pG5-iJNn;U~-M++!X-U+_N*uIp;H>|-x^IG-=!F-E@ZRQ-b%4(56ILxP{? z;ZF))@8NmU??oQINbnsV-YWQ=9^N7N&ji=?_7@rNFFgFuf**1QS_b(ovkbUZ}9uHg9|ey89=JbbgPkKrC( zC-^uIPlz8AJ^V${pCP!$S-+n?+0(yD?5y(e_X}R-;a?W~Y!CmU;58nu@vZl8osU)z zSHC+ve43QE$k`v)RUUr7yiR?=!QFLrkArhvRg3;FJX}BjdBMYP68*vQFb(IOTgJ!b zK4Dlt_^}>dD6g{<`oZ7g;UAZNXZ3?G^l(1cz++KA_{koAtN633AH2%L6LPP~Q*U>fr;#pN@X;?H;c8&+qOBzrw@yd%+L%gMY-se=hOAt{;4lhwJxbH}!*m z!NaR$zP{8C{xuI@DC_N;{ouOhxjseJtOt1+=yU(}bLn5NFQbe<=gIw%;`;tVpMS$| zjrA>@X;L8#6|a?YkB95)_#O|}_gVWrT>HJx!?p8=JzU?nKI7r~etCe5SN+uY<0C!1 zLf)V1{fO%8`-r`szP|40I8>GSJWIww0_1VNJg3GeDjqta^>sKpe zdbJqLfJB>bwEY~krOmnc?;hH}yp4#e)PMEkWYnk}DM2_*{QsWp2U_RrR-htV{7Tl@ z77HiXGvh~-+P}tcEim6ETMRjdfAM*v#NU?s>eiqlTl+J|+ZK)TdfQ+7_I}#$Ki;;O ztqtYu_w_E|*~Y(eOJ;kHpZDMX_}>G}x5<`=rT?8QIESzMVbu8;)w|^Zx^umC=<8k$ z-E97E%i=%Z`uP5T0vK)jar(((fH-c}2DTXas($PRo~`{wr`QG)rJbI%ou0oc?PXh4 zwP265*L_|qJa>XGp(5M(_saP7xns`XVEotix_;@0-#4IO=Su#?Z;xdC^0t<@?0$QG zyyIW{fP(wh@Grif)q&b#6hA5Un_K_7Be4)`i`rPU}7sXCg7_kD+3YP|MZfxd@W=>z5V>n^*V!woZ!ca#Z zahtRJd81=xyvg1F0?Lmf-#Bvl8a;d`xBpS(JlCA&hmb#ePeH|9*Wv%3!l1l25uE>T zxJ7?2@(hnh4&!ejb;>wAax}0osNMq%yY`Vi1;O#iUv6?}cjW|wVSl>X>*?(+e+=bE zk+)j01Gz!@0_gXkk1jkuHv)1{7|g$MNX1<@A~n%HLy#jH@)Gp(QqFbnKwUZ3&d!m@ zQ{J~9JC3-Y(r9cw1A_7!(Z_S>V?6p)e}lY=Yl4ev?|kV!!I&QOb1BD~;?LH4uDKNb z_sF;oCDS)!yyZ8_*m2c;pd!dS{-xxI(;i2BA2Ye6<8fi3l{0o6>kFvcjd4`KF7skD zk2dE7MHm%iFtozeaklo6vn=9_PwWOT}8lXipAtZx=d8tq5^CsQ+l=@6A2PcJ_Q+!H&fOP%&B%4_`ZXLs66z2`f+X*ZY z8YfbeO?~bt6Bje)bndJ?J{)W8=gt{w9+WMq*%ai?HGSFX$(>usj*G0;+)@_oBTl(< z$FNXZQnM|{omZF#QzMZBjrZe)yYOcu05cYe@ub`ZdHfQ}S~?*=9#8IxreI^7dy*+g z?~6=9dS7e`()(LYq10MiVhT2OV{U~hjI}jOO(AW6z?hfFU7h!6nK%dotjk8uqCUeitn~(U~9?u&>Sqe2d9HtDWF8?Id zlvtY^j%6@Pm>!V^3r|B8|C^AF1G*N4p=PF-2l_&kto;iHQ*Yj2}{3mMEME>ymVLS)!CBo6IzKS>jlhM%s2O5_zHJfdz%GPz* z(z-5Du*J&~ zMJ>=B2`VHi??{v!Mx4m*#Nr1M1zS+NP>NS4@)_#dT&!d+UNa5N(08W66t}VUpgcZp zlp-)FZ#Djw^3xHnG)J9~&f0eBuqhW{tb^A4y4-BNTv_JY!&Uw^X#PUWm_YWKJ1!jE zgVCDb42{g480H;=`Lkh}91dndN>f6!2xQu)hGr3zpf8SpP#z5%BgMH(!n_TUk&18# z3u0ucE#=q_mW4waQH89}Jas}%T(w!BuY`wI5m}%4aw8>VedgqeC&>CtMOlEz`pg|V z&ic&o$U;Ka=j)&;3kg}Dk3)~Owg+T==4B&G2U(w4lBI*J&n)#=O=NxkB&^8NLDuIl zqO{Z2A?q{y+iOe6`fM&mTSC@nmg20>EX7%$SvqJn+pOk~Y^mK|L=OaoJE6h>m>_|7 z%M+>S&cr_2_%Ckol8?R}B98fg<556UAlj#sf+rC2VfLLOvZsK@bg z(iPoq;PddekPGU45KQ-pAPwU|Zb5PccPU#aOdj()6vneAufCXT!pQk0gYGbPV&qk) z_O&9;k=1<7Ts|U?jqzTigMi?6X4~ij+|s1@&Ah!z3Qq|0&IL4~At*dC9CR0Nc%rP& zv|(2!vp%yFXMJYLu2W`xW~tQPz#!{0Q^Ot$Bq(gdz_+6`F-W!HWSlE1okYmW!%Vcy z{M=~t3_P%D*vC|5V2km8P#$l(CedoR#N0+wtJFYZ;Ki8A$i$4q(GvY-)EM zJX_*&?Xz->S6 zT#mnMk^e8Y#@hK(`#w{9rBizzYS(4dx@|Y1c56m0EmURLr-hI9+dD1Xl~GF%Gc9a` z&f{5nq2{`b$h;4luZSih_7;sKafu?X+Y}bsAae~2%HwrWcnS14C$a~nCP1E{Z3}M+ zbK=4m!u+^^M1*nS&tWPq6eXO(Pu-d?g8nib98NACT9_;zQ_Q4jyr>eBg2KYL0>Ybu z;WnS0Bw8CFHQ1k0HsN1Rl)Vos%z~CX&}qShe|cg8DfE~jFdzB*nB7m*@f4;>P$wM} zhT*EAG*dJl`2=U7`9R4ADEh^N;2T256V2hmGHL8gdv-TC%0MVBhPXW}#GA;W!-A>U zeoC1k&~`Q~_5XD8LIk2uCO%DGXyPU*^QL4;qsQchOjKy~Mk2|5W?sGH+|+~9ot%Ws zT8OnZ2Xi#zDAV3?6SoJlFsR5k*E~Q0uHvE4LS&h)+^wZ21%;xDlVl&WidtGIC=^xH zP24J4>;3(mDiz4bp<-(UZB)^<_&3SZO>;E{Mr;)yh=$apqK=lHRz+hEq9HY@Smcbo zYPXiuEu;_ZZ+v^CLcf1QnDWGryCZ+<)u0A7OE3ZXeVE$-A2j8M1x*I|f8DKxxWA1$ zZk<}A_mud9H{Rwz#xWJuKddAb)3KI{>ODEqRjw8_(}Nb`xNQ_iqZ96%UiYY!TK1vx zIfCT{9l`A5@_I+_t`(%YPt8F=?w4~R+T^7t*=ElRI71@APE@WCETe(>)B=t4sho_; z+oXlYoz_&=2_SX6#$6*zy|EHD4P%C3Ka6Z3p1UXW36lkQ%gke;Jq4IY759jjNP48= zEfLhHqK*ZZsSe@(NUK3dqss}lbTI3qWzryhyC?niF|b8~uaPrcR8jpxat0Ok=j!N5 zMfD3>ef??d>rbP)7O%!WE^>%R*QIzJon}C?L+87X_|VQ`#7a-&Von4M^P8OXnVj_I z>mRfC{clpzHOAhg!<@WIM3r;MJgvZcl@KJ2^N_UT;I0 zy_jcGgIjWP62%wgq)EQ5zytuH3nUB4m5oNA?oQ=QHDuQXmYF->o<`u5OsB@+G@vXs z+MM_&ZT_SRrlkgsgNendLhx9VJ)A7+shrb{DV7K3j0RiwwlXM9PLT{gl`}<1wPzV> zdGckm(ctl@IzE*@!juY^rBlTdQiI3Az+#Yo4@Ub5qJNsvU>V~>{lwH%v_A$OVI)F> zo}Y7OY64LD54v%3dMC?F38R^VQW06o2c}cA?5T(+%aT4A&GKQCy!ZJzZ`aN+5$G$q z0euWf9?K{u&qef%yOxoCd>U;gq*BLXL||Drl=#UnT(Zbg;Y0sFg7hrbfPZ}w`b#9+ z=tLf4nYYMDsX;h}$$KtIr-mA7#CkihMX4h2mBWGYsVVTwRI*8Obs`!3vzWp`-^DAY zv3}G43Q>4pKJaWz;GhC---54@Hdv-#@-~CCxP1%GO&#rBAd0PNY9qICd;6vqFvKov z*~o943{CD=O*gbGZtVa? z>dcMlnP<+!|GDg|Ji9L!b`2Sn|1reZH5)*68;}zlYpt`f zv9$%O5L~z|^^GeGSu-dDx#G@R)81wVX2zu+Hno7b7!z#h%2#2foeot}_qE~s6^4tW z=Q3u{Exk1^Oss<%ek4@WObXt%c3uDc2n*GnUCk{`(gvL7v`>n3X$X^@-Eg>VV;WZq z!YbVR)rfj$3;DHe*rM)(u4b(6G%p;}ibBL_4US}Gu~u&B{|UNkLr>U0A@$J_OlML` zOL#!K_{P|!Gbp9s5P!5jqk@Ip)P@=B3dj!L*pRjh9*YZ+x04ZZT$}C8Y!;ZfuI*i1 z5M~L&MECZNMr?kTX}i6tiR-A%Fj`wSa6<|ifL6Mzqp`lFsim<&7_340jVB}#kbeS` z^ii-ym&i@6%N1P#44-qD!`%BW^?9I|kuN#X4w~YaFnM)GNt*XL@$USe$w`dQzi`Og z93#hnvT+jgx%eQ!XJX#L=dwZvPdoKV`z^AASn;3FRcyU=JGMwk^tq8+myLUv_1U}HKKJq^WAAS9M2?W#ZT=AKdT?SrXQT24rJ>$dgx54Z1LfK*@E)< zvw3O7H&+?^va<{6^@p?bN{W)~?~v?03j}>dfG6^W2+sU113u`B4!)Ph`Ss}RZXO1-&{T5k@(eKstw=cEQAFpd3iho}&eT})| zRx9Rz4bfg)Fje~X5B2f=M0Cs+N$pG(`wKjr&$#kGvHT-X?gRhu4W6{q#-k|5@}md-`9K^7}kob2NU~!>h!Oj$7@YF7vX_(_bq7 z-0tBUybyXhgZmWCwcfh z@pHC^?~(DI?cvIOLauQh+V9uJ|MNZkmtz0j9zI?0k9fFw90hhi;o&!l{yq<%F6FO! z_)X%^k3C#D{}v8(%r+R^wbr5{eg}%b>i>tO{b&zAM&dBl!*yKiJp2anzt+RwBjwE= zK2H39uZQb=f7!#oVuu^twx1Rn485f={H;3x~PV{ken}M&A@<0#& zu=qdP!Hkjbyz1cxC2j>$uXgxoCy$XHuAFmIJe*Iq@hJE3t7UyI^YC*7uk>)`@KY`c z^#{)hn4{IxKSlh!(8GT$_zn+WB=)vxF&-MX zq}ZS5;TK4J&h+prZ1dne5C5Im@i``yJNgn&KVR%Ccar+^L$UuUPk)Du>x&-#YrzkA z_}OCThl2a>L;vXL^RqAggy?Ax7c+r!8_`ede_1L*`@xxsCq?~yVX%i6NPLEQ_+Q1& zL=XSC=uh?VYXo25;rxvZkCQz7MbSUa!ygm}up_+=h`j_g-gdiZ+5ZxEdGC`-rK-{;_TU7w8jvWHJI+ClIG57*Bf9`kU0MB^_W zUMY4)7Fj{pRjuI1d-!dFS9|zD!MAz%NSUvXdAL5BqgIYXYD%C$#=4F+quXvS*ua`+XyC1y9!#^hLu)ZI>)x(R$|Bim}?H;~D z;_&W%@GCr=&#dtHKtH&yNybOEUZY=P{^B!n;4&nG+#~(__*l_bZV4#{Z)c1*+hs5AVWF6bqeRWSj1uv-zRgm*+*+?tpLwm-LbL7WwHLz^` zcZs8#V?@mM(Out9`#+eUI3kCD>_7drZ|80 z4F32p2IkuY6x<^H>*pZEc=)=TYp^Ei4gi00PVi3%fD2p7bi`(6Vl!gK4web0dh0>A0M>y@t5K76-${ufd~HF+Uk z0QUenAnNe@|0k#BY;F!VesUsy|9?SHam}X_!Gaq6=06+|R3lfwvv_Y)U0V|D4-NOg zu$$4M5IFc;~WxhmvD%es0~;eXn$#yzjM(?%R7HS@R(6 z)#fezOKliblY1dd2J_QHjm@9ZUN9&qryaJZou|Pmp!P5iI~xjns_MZ}kSOk{8b7F~ zs+QakXg4P4`6>HipKgCk(BF;Vr`Ut>VHZ3C4ufa+3=FD+u<4U8)hG8I*)(9E=@(_5 z^D%zbQO0}Sn^k_vkzaP?BaRF{v72kbkMVpyIWvacoP-^4Til!$dp-GfZ1dqWmTl?n zh6`iZ^h3~Lf8?mR2mB6)N`vZq3J|BFpxSbAjIi~|U_UPVozUIcOAd@=#gTI`ZjS5G zWbQt^6qF{=m*wlQoE{kOoF5|AJ*7c8uhcM@iDdS5Y$whHw(+Z}7;n%v?zJf8Qrv%@j|EqWY17WbA>*G;yWza9`_dL}*pT4HSW#Rg& zYv?@7OJRIH@Rwf0U&2`U>!KFxWH`pD{T+I>x18lC(4O-+9^*Td9BKMYztmg40rQwK zKQEHYWW>z_p!YcRIY*B||4?$Y_49?^a$OUT0@HXOc%JQsN9}AI+s~orddtVd2ko~O z<;T!g`>;NZviARrbt9v?N0Xz_hppT5Y;U$h ze4U3Kh{G~(%!mH0{*5r><$P2CbK_v`*?w#PggV&awLEED_G@_q>bY*mmju<1C5M3< zW(54R*Ffzbd&_m~?8B}DyViUD&|7{$cuF|82i$8OwyYhQzu)(k2Za@P;RA#DIwu+P z`=qT;7Y7o58;{!GxpT<)+PU5H+t{xOCZ?QUTX*0Izb>AaLx+3IE8vH&#|m82(LROi zUwyOd#rj_Hc(38d!ApPXOV~s1NsQRE2Yfq>eeGktfL{PV#I0KpZGO|xz6|e2742@eqw*Pu1DTXoub~} z>Ud6wTRXuc@wn-WyB^d3>DCQLosHKE$r01dI9}?Vf9S7vo!peR>tuqr=Rbscw_kVN zrhnC2o<9BmJ9PkFkR1O+=UpU_ivuB^)yb8LT)4a|Ivxf^XN z5G!1R^Jj|gfSEm2FF@}5nrQpm^S$2rzec-kuLlQy+&h0C>U95qG#TJ)YQ8o&+&(|! zbxS@bnVazC1@-Wo*RHO8e1>@b;X$YFt1r3y=Y8(k3Zd>XP8 z3Jb4;JiyiznLzJ`xcV@35J5a4|10o0ugx zgLsE6hM7N{?_uxbpKUOSSs{VNAXYiVI~@E7R`(^|VLD*TE&-~YQkE>A1c`T88fn}0 zA>Nsay`ewi9ddK5wC(y3@0^Z0;Y$JW4ln6itJ#Nmhjksc4#Yd_&`#J>`VjAM_&cm7 zh<8G0#>6{Z>JIS^SF%IA(*RwEc;`2WlS91Ifm(-nhoJ`XPO(|MW}m5tzB3J`DAT~N zHU<$W&N~@@OJ7C5TxpIvA)Pg@A7hfU9qXVq7lzq-xw6c)hpYT;X!=tvV_H!(#5)&Z zw4+!s#5*H_+pvImhXpD1A>J|5j=nhl;yfBQMhx-JxseeN@30_7K)l0}PrOsm2#w9C z5LYen&ZT%owVw1L-r?ls**XyKP*D~jhQ4K!sTfp}*UdaSipK)l1tMwSkU zcUY381L7T)daNdhcW!_cSvnxz*@x0jTi1tp$6SiG4#Ybw#l$--#l$--#l$--`NTT~ zR{`VzOpqet9Rt$`1Lp>&e3zCZ;+;of#{>oC(BWkv zWg*_-B^(j&aLOX$9rkH^U!bjoc&9jz$T(ibW|d;OEQ4HZUZ}_Ma?%z3E(5EnZ1KU zXtiN0(hyB~7ZAgvrN~sn@AIKBF^x!gNywK4a~!9_tq8@5cxyn88pFX8&W;Is?nY&m zR9@~-^AK+__*z%}`+#>_^>7}^e)6`HP$#bgWH~YE(Dbl6k@wEHlLyi2PTMMZ%}S@2 z$5HW<{wn^^Uquq1jA1Z+O^xlZf~k43wm2hO#WV2gLakVZhHFjS$Qy)VW_HWqUT<|x zHC5w*zlPecO6`@#&}B|-0p7m-T57K_wbZG~?0^$-Btz+HhkIxQOuR)WdJ+oJtj|G# z8S`}5*|li>ZB{FBm2u$;$KYH0wSF3EJ|^vUuwC*R1}c+UX+4yf^o|QpM-QEFUhE~g z$C=NLDj%So1g%vW^>rqo)tTYwM1x^S48#UDW^9&qYA%85DWYn86x(c;)%MkBQ13Pf z=fs}U+DE1G{jd;?nEhup#}?mpTO`=7%6O5r0apu?+Hq`lGT!e@C`ZoJbF4KE7@e#m zzX7Uct}16I9t!7WtyH`7GB;NFEL7TD6*m-|v^`R3{M5;(v8*HGwsF60@jBZ^+&w*f z-tFEjh^mZhi(X8|_c`%O;KaVp()kJ+ESCm$JzVJog%>?DztNnxqWfI*ylSo%T{9JK zbU06UNTprUcG|OS9$X>6&rmgs*@iP~AlYKf5O)z6<2-+^xs++0QBY`EwSs?#` zQ(jycm2hhAa1GqTD^jF-P z+uTA)BK5{8{f36gVwapRXP`sQM{>Q~OfJ8?OfJ8CR~_#Hl*_MBx%`SUx%>uNEFqvrL~D_PIAB7ibW#T^mUpyIUxSynzReI-(?RPnwDYEbdX2&zLyZJfNlGf(TltqWuQLXsM`~wh$E+ zTcd{cDsGFQDi!e|xAv%FLjjlcVuiLGqA32&T>nvMMEnO{B%HCCWCmp?u#x0Jf$~w>1rk3*LvY}0t^^&rhTGB;9 zO_g<3;AtimbyZMJWnC6fQ&E=%)l}AXfq<*1>w;=3+i$nHxYntt3xjGZH%E)4T18zX zRFkOx9j8)hTPtVhb<=$90vIn=x;*q{5n3wh3V@c1PsX-X)Y<23RPNT2zAQSgkji%f zb1GKKItYVJDz1y5O5NV|#S^wvY>u=VRBVl)N`1m}M+9wBQCA>r=@Pp;(rQpq_k3vm zNNOLBwRFXmMq7G=ien?FQbpa@F-8?_;t__wQpKyI)v!rLJacCbXsM_R1h!-%qLbW_ zupC-BG>_pBSR}rahE;>A;UcC%(P0zQai<5+0=@8Ns_-#QS6Dplst0N85R2U+ao2 zl+Z4cGfb+e!Ndi-N|%!cj+p;SPfVvb9^g)VaQ1q~3h8)d?0|~rL?eHf_J3atY4`fe zqJU=;3V9m$$#B+WV!eL+G) z74-!P%SlCjJ%W~s`g#N{74_u^S}N+x5wuj)S0iYtcyYYiRlFpE)~XmsxLG4y8!eV* z730NH**ECTeS_*E%@WwwIKV2#>$yb(9IxjV4RE}kTQtD&dTvp#V;5Wcy4d166?G4Qmiiof)700SCf@@s?-38;ODKBxU?0ihmC&dcN8CrB zw+_%!n|c=0C{mJT4C#QBrAJD(m7& zsiLw)Y3S$YB)6t>nt;<>nEXZppy8xWe)rw0jhzHJpcCZ9P8Ki9Sp-#&&U+RC*1xWh z2m7S_w&y9Sf}C(Qd;$q|!IVsn?n$DPEG<*%TR|Bcr1ChR382$X7Kb35?zCLtC=N75 zuxlra&7krZAvUDPRxa+@CU~hSWtN)S3}*vKzb%{hK=?ic`Xvli@)iV?jNd?WCLGH! z4bDk^a4o#c@f+(xUM zQ&Qt9Qbl9g<1Y}nVrUkvMrl$kPJlQxRdN#0@fPLCMPYp`HbJB=EI0}d+5~5k|Aw$g z_^?VQV=Nd7FoLSE8YX%bahC)mqspKm` zn0y)*>>^4QnpLrgOPlQQW`#7F6+#7j*`SylwK`rsc6Bk>#tnLCN#RR!=B0+A87>zt zb*xJi^41%3k>yEoClgco$wI^hTIQN$e5!`3)xvS9;Q@y%@y)$sY&k)b^T4UWRtF zQUjAO28(jctc);jC32Fh&4q$Z0=k&GKj4aqHYXF*x0w0jWzYIQVr`mL(~T0S^f}f= zIE^=S`K6Zvoy05ce~LgJ6s6!buW2>R)N^Xi-_k<9?Dn>r#%*8-H(bY{6|Q}CyanFjt8H$X z(>c#pI|n{Z0N!cuoKZW!Z617p96#$0-~XOh*V=$hqpPlT zY-%IIr^D|UF}emmJKg|IT&soQGu7(%;vL_er>+B^QCI$Ne1aa-chJ51F=A@xKQgW_Ak_pdYAF8jJFrju%X9te*HW=Ig z&pulZ6`Rv;>uhMF52)j}`4`&izy$R}?2ZnueP&(Z598lC_D)#l0R{<*b=cJ5GanYG zxDVEdfHBrmw?G{Uvj^wZX#-@&>{;5x1|_JKw*xoLJM z&ZOhT(Kf4gb{#B|0LvSQi#6~^?Eh<@z861v@2~+sps#)X9vCjCFpp;R{}tcD zx5AYwe~UrArmgVp(rxm8#;e9Aji#rKm5+O^_pUaMFc^osO)!lx4X=3bboJjp zKKs!-@A@hzj*{!WANN9G%nEWKJ<9XF(-o??m$rNF^yvRQ*YGDiHh5M%Wq#6KKl=SM z6(4>u64X?xYV4W4s-2Kv#RktOJf3ua%G}qQYE{`-hfU*HPG9b+rd4?9cXMdsnfE{V za5ziI*Z3UATQ2_-zV(mx{%`!IKfEZ}=bQd~PX>SN;g6M;wp57s#|vEW8W((m3x1Ca z-spn2y5OBII6frq&;AuI_y!joKYr1lo}DiEZWsK|F8Et6_*obHGZ*}d3x3-L$H$rd z)e9eQ_Q&zt|NZeq7ksb_j%zc}-L3cqO1yeZ!vh{4!1}JZ0H>td;jHf|2OM1R3`bj0 zha!07g`j<926YJ)0C3Js2S(iWS^YscKw(ZeJ%k;fIzdpq7=gX>6%;_nVi0`1CP}CX z>OqR<&JeVpwnLas(Co))Kz#lQLGeOBJk^0D^<)`--3IN68@30$1Z>~d1&X3w; zKHY_We%>O>^J5O=>aXU=(w781qCejhI3M#d%e%x2V6XlXMx3AdpdL~Ff*>!J z`-8w^gmS&_;Uh}6Zm0)#|!)|fhP$3OM#2>?(~Qg z?G!nG`yaX3AF>2_(VlXF4-(3qE^x8F9Rg1jBNzM6OhI1s+k*m+7xZs&!QU0QsOKAji+b{C zQj^<}AA}(n_3-m#2V}B5Ki8An>rK)lx7SC4ezCo72wZFze|nOQ<%)hz zA}*K94;5w3Z>-4nj285Z_V5!)Sx<)`FV3r70vGLkTHs>;c}d{OLVq|c@Dzc+C2%~4 z<&E5?e$&{4A?&>=jNdr*f$$R81mPVPf@%};{2`bM?d0~mUy|pyu2x9AhV*Zc z_yW!S%65rAM*Z-&690tkIV|yaNd7Mp&!zeFD~bP^?71azZeM<-nd{4ICvg9jUrKgPllX@epDFRbll=V>pHFu0lKAW7&)-Wtlxhpn75PsPbB&4GL*{Y?^omfEXR;;B^6WfGr8{b!BDN02?6CGJD|;aj$S z`r$?5yfzE_;Q^B4H4mBd8=HI_X1FN2(9EGxPOie*(2X^9m}L=S$|r zBv&EH^V%_EC7wohERgtZ;txsuUgGOyPWC)2@ex$7S0uid>h(v7-$C&=CB9X2m-3;+ zGf2m|;=0y!q}Ayn==62F)H>r*dBP2eB{8lLO@uX*|#0OHj zzmj+~>Degp-;?|fiMNv<_Dg&P`Qezvqlv#Q@m^}Lk0riNYewY@iT|DST$6Y_ag(Q( zk^P3x@NmnJIFHYf65ptaD^n%TYqZ%U&TF>*T;d0)e?BDf9@4)_;y;r8J0(7y+U0=6 z`Q6?>6PK?;FA4G(YOnn5I@T69yAUrK(vE%CdEd%>@#aYH|&NF((JKZy?|9wYG# zs+YKC5b9w+N%B*ue~4=ap?o#*sgislCc-AJ8H6Z{_$*2O z8RFuaL5S87Uo6RU{g+Cd*H~I5@jp>~t;F|Ie5=HNMK>F^OMEu*Jre&KFZyBIC-HN{ zk4bzre0K=9;}U<6_!)^uz^8d|J1g-(;$KMoSH!=P_do^2 z-=7U8&f~>O<8FY&8#MJwvBc*PpD6LY#P5~(m&8{KoTdgfWsAUZs!gNuwO`_VKjE(u zFDLoS5+6<6joOpzJB4_(#2bhYmiQdvVwK#DgThfOxvZUnM?7;-3?rB5{T0F`LBwiO-Yx-NZLYd=By7OMEr)%MyQ{ zcnFOHuJ50S50f}wuQo{h8-J?|4ACUL&*nk4Z;a>hJ~^KW~WNW6>WUy=CJ#Lr3m55xoMCO+HA z*Ik7ICsB2N!!O(5#`1jKwMgPYbR2&|;`}SxKMGvb|GL1j-T6A|qQoC0{kJ8)g?KVO zYu+UIBLR?6$tA9+4x&hMPS4*~l; z_x$g!?U(^?DraXD{!d-vQL%z!&{gbT_ER|p_`OT!>~D_aJ3rV}%Nfw#eV7&~q z!*(GEOd!F}sXud?EL#o<{rRu_PA!K&z1)QU!#3jb*?;4K$vQFT5V~Q)&+CxkCd=0L z!%*&bR{RTVTT2Zt=WhcUnPI-?(6O*(X*>I0S@vE?>979dW@%YCKh_`HLazTZV6slk z`7V{OQ2#@Qn=JbPu>Q*LqVn0#SUz5&%H^*joopvW)$QFvZNJb(`E18iAckQ%|Cn+u zf1I|n|K)tVe;!gWOw*@bZce!tEM!4SVf$Hd8wC2R{}cVx-ydW-Kl`P>vQhW*75Gh z=jY}Z=I7+*=2@-TSy@@a--3byt2Hk>E3eRs+rPfXCEfV#%x z^+@F=u2I-yFu)zp-RY5Pn`gs%Jx@$jNLI*8{_1I!z-LWHjWiY%yIrlMGqis5^(bnar6lm*QX?hOd z;&rdIa!`KhvumGfe|Ftd-@=-e(_x)A=ofiQVP6JmX|VPm%AA8TMZM)ZrGRa<-ejFx z8C!1j=Di2&r+o$Mcd^X$AA0i-L0ns3E685Ya#-&Vb+erHR&Rbc$i1giVBIw2+WK^0 z!xi-5Rr6+i#T9(szYk%(zZ6kl53Iko74+R+wAa37C$=H4QHg6&T7$IpJ8wb#e}H!7 z^*X03{srZbw#CShS8>*1828v-9LBciu(+nBr?BoNu4BnE;(D0ZfFFjn zEq@xR?2T2|RMYCLgRqs#($*5BzTuARVB)%x)Hfi04c2+X{;(X@FuNG8e5cPTd?To4oZpj%8%&ot%sMN4Qh)~U;=>n(w&<1oIq;FJ3dqOhY3uO8`kT;Cm>o7K>KcKtCf+Da|3csN%yg@gcO7iJVbG;q zh4R0JwbpRlG=h!iA^s_>p@{3uVLxvIdwX{%`)y!jIk4$qM|m)}+?Ko+q}Y~LufA=$1=cy`w(J5wZBcL>Xk#Aj?NM$NIMxbujGM#m z&~CWiA&vhoTJNwYOo7+Sy8^LI&n;8-L;L363GK=42Jf1rVBa|Ru(BWZpL@7`zv89@ zz}TPF18W~@>i}X~@w#}lRwDEhh1OS8+<84kTsIQeDb)HU_77}hasKIoesXRZuCo{N z!eOxKJ2hQ53SKzRy9w=z{RQpR`itJK3*K>2?L-@w7?fGM?|Ua{V@0#)Fud0ODb_>v z6|Iv9{R5sc_URuBVJ<)&>X@@A-Pl*u{sXKH(nMb$zSLWQ;|bR!UX2yQ<(Em zKlXoY1N2#W56l5Qz1_cpGO!(g|4ncA6A*^;j@1wTL|bq27qH%BU4UavdJHBSx{#{qnP3)wUjg1=psX0GG%?T3xjA55xMZFi)lMaSGN2&F_J_;BgMe+%8z} zvxn+a{-b#?+sgKDf#cAJmwUVCLb+PM{pWLh`DHx*JLY)n+r8bBA#a7yZpsDl?-#w@ zcLT2kn?>K3L)uS2*YXsAzrKZjqpj=e@aYy;gm8*Rll5!xu0 z+NcMP&Hc8KcmHi<1zWy9-`kx7AdK}PkXzQK}M?wwJ+2=0{({p zhm{2L9c?45_1eR2qm7LoT>Bd4Cb4a-G)5h5jf9kF?|W7FcW4F_x%*!MdvQxlz|;XrB*z zyDxxVt?e8(mw&+H+)NU+5AN!DJ3S*r8Ep&l;t*T`xvQ62dN*z7uHJys)6QR2qt~go zIcWJ#J$!5*HoacWpk74i$Am2a{1r zd&yIEt~O85mP7sblBfS(@>J^(b$WHp!f{$`hCU5f4E^_#r~h8^lvWS*xUH@j9E;~( z9=D_Ld`k=Ws;ghB=V6`;B8;A}q|pEHB~PRE{;$Frst*6COPogQv(<2&q8p$u_#
  1. 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%0D9sleFlC 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�E+l3I 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
    U}_=&YZlj?RW}y@SvAY3h97 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%0DhL@wcx8A?%H!bxSU`9g!9yGjy&5b&z0S$ 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

    cjI}8 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

    =}F@hnOR=ZYTJlY1T+=y%T(h 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

    88vVu+@_JB~FKAC% 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ΜDe3&uo7mrF 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∓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 DU>_ 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 @bN%RTt#G1Oc2F%x$ZH*1_ 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%0D= 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 z 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 z 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

iZZF2Xwp(M1n)!X6KFJ3Y`oDXFTc1= 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 z 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�D9%zZybRDBySe@UO;)1>#DYeOF#F|r;z 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