From 99e84b82f963af1b94215d798aa87b34fe022181 Mon Sep 17 00:00:00 2001 From: Adam Potolsky Date: Tue, 28 Apr 2015 10:37:20 -0700 Subject: [PATCH 01/12] adding genlist to the usage output (#4586) --- ext/toolchain/commands1.py | 1 + 1 file changed, 1 insertion(+) diff --git a/ext/toolchain/commands1.py b/ext/toolchain/commands1.py index 484b9da9..a9f0a76d 100644 --- a/ext/toolchain/commands1.py +++ b/ext/toolchain/commands1.py @@ -303,6 +303,7 @@ class InternalCommands: ' install Installs the program\n' ' doxygen Builds doxygen documentation\n' ' reformat Reformat .cpp and .h files using AStyle\n' + ' genlist Shows the list of available platform generators\n' ' usage Shows the help screen\n' '\n' 'Example: %s build -g 3' From 25cce186dd02b6ce08a200ae7932dfc5c6295d29 Mon Sep 17 00:00:00 2001 From: Adam Potolsky Date: Tue, 28 Apr 2015 10:37:40 -0700 Subject: [PATCH 02/12] Adding VIM temp files to the gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 4573214e..9628af09 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ config.h *.pyc +*~ /bin /lib /build From db631ac61d6089439528d13852173f5c4f0ee962 Mon Sep 17 00:00:00 2001 From: Adam Potolsky Date: Tue, 28 Apr 2015 11:55:16 -0700 Subject: [PATCH 03/12] Checking in Win32 and Win64 binaries #4587 --- ext/LICENSE (OpenSSL) | 127 + ext/openssl-win32/inc32/openssl/asn1.h | 1418 ++++++ ext/openssl-win32/inc32/openssl/bio.h | 878 ++++ ext/openssl-win32/inc32/openssl/bn.h | 934 ++++ ext/openssl-win32/inc32/openssl/buffer.h | 119 + ext/openssl-win32/inc32/openssl/comp.h | 79 + ext/openssl-win32/inc32/openssl/crypto.h | 661 +++ ext/openssl-win32/inc32/openssl/dh.h | 392 ++ ext/openssl-win32/inc32/openssl/dsa.h | 332 ++ ext/openssl-win32/inc32/openssl/dtls1.h | 271 ++ ext/openssl-win32/inc32/openssl/e_os2.h | 322 ++ ext/openssl-win32/inc32/openssl/ec.h | 1281 +++++ ext/openssl-win32/inc32/openssl/ecdh.h | 134 + ext/openssl-win32/inc32/openssl/ecdsa.h | 335 ++ ext/openssl-win32/inc32/openssl/err.h | 389 ++ ext/openssl-win32/inc32/openssl/evp.h | 1519 ++++++ ext/openssl-win32/inc32/openssl/hmac.h | 109 + ext/openssl-win32/inc32/openssl/kssl.h | 197 + ext/openssl-win32/inc32/openssl/lhash.h | 240 + ext/openssl-win32/inc32/openssl/obj_mac.h | 4194 +++++++++++++++++ ext/openssl-win32/inc32/openssl/objects.h | 1143 +++++ ext/openssl-win32/inc32/openssl/opensslconf.h | 259 + ext/openssl-win32/inc32/openssl/opensslv.h | 97 + ext/openssl-win32/inc32/openssl/ossl_typ.h | 211 + ext/openssl-win32/inc32/openssl/pem.h | 615 +++ ext/openssl-win32/inc32/openssl/pem2.h | 70 + ext/openssl-win32/inc32/openssl/pkcs7.h | 481 ++ ext/openssl-win32/inc32/openssl/pqueue.h | 99 + ext/openssl-win32/inc32/openssl/rsa.h | 664 +++ ext/openssl-win32/inc32/openssl/safestack.h | 2672 +++++++++++ ext/openssl-win32/inc32/openssl/sha.h | 214 + ext/openssl-win32/inc32/openssl/srtp.h | 147 + ext/openssl-win32/inc32/openssl/ssl.h | 3159 +++++++++++++ ext/openssl-win32/inc32/openssl/ssl2.h | 265 ++ ext/openssl-win32/inc32/openssl/ssl23.h | 84 + ext/openssl-win32/inc32/openssl/ssl3.h | 774 +++ ext/openssl-win32/inc32/openssl/stack.h | 107 + ext/openssl-win32/inc32/openssl/symhacks.h | 516 ++ ext/openssl-win32/inc32/openssl/tls1.h | 813 ++++ ext/openssl-win32/inc32/openssl/x509.h | 1327 ++++++ ext/openssl-win32/inc32/openssl/x509_vfy.h | 641 +++ ext/openssl-win32/out32dll/libeay32.lib | Bin 0 -> 820100 bytes ext/openssl-win32/out32dll/ssleay32.lib | Bin 0 -> 77302 bytes ext/openssl-win64/inc32/openssl/asn1.h | 1418 ++++++ ext/openssl-win64/inc32/openssl/bio.h | 878 ++++ ext/openssl-win64/inc32/openssl/bn.h | 934 ++++ ext/openssl-win64/inc32/openssl/buffer.h | 119 + ext/openssl-win64/inc32/openssl/comp.h | 79 + ext/openssl-win64/inc32/openssl/crypto.h | 661 +++ ext/openssl-win64/inc32/openssl/dh.h | 392 ++ ext/openssl-win64/inc32/openssl/dsa.h | 332 ++ ext/openssl-win64/inc32/openssl/dtls1.h | 271 ++ ext/openssl-win64/inc32/openssl/e_os2.h | 322 ++ ext/openssl-win64/inc32/openssl/ec.h | 1281 +++++ ext/openssl-win64/inc32/openssl/ecdh.h | 134 + ext/openssl-win64/inc32/openssl/ecdsa.h | 335 ++ ext/openssl-win64/inc32/openssl/err.h | 389 ++ ext/openssl-win64/inc32/openssl/evp.h | 1519 ++++++ ext/openssl-win64/inc32/openssl/hmac.h | 109 + ext/openssl-win64/inc32/openssl/kssl.h | 197 + ext/openssl-win64/inc32/openssl/lhash.h | 240 + ext/openssl-win64/inc32/openssl/obj_mac.h | 4194 +++++++++++++++++ ext/openssl-win64/inc32/openssl/objects.h | 1143 +++++ ext/openssl-win64/inc32/openssl/opensslconf.h | 259 + ext/openssl-win64/inc32/openssl/opensslv.h | 97 + ext/openssl-win64/inc32/openssl/ossl_typ.h | 211 + ext/openssl-win64/inc32/openssl/pem.h | 615 +++ ext/openssl-win64/inc32/openssl/pem2.h | 70 + ext/openssl-win64/inc32/openssl/pkcs7.h | 481 ++ ext/openssl-win64/inc32/openssl/pqueue.h | 99 + ext/openssl-win64/inc32/openssl/rsa.h | 664 +++ ext/openssl-win64/inc32/openssl/safestack.h | 2672 +++++++++++ ext/openssl-win64/inc32/openssl/sha.h | 214 + ext/openssl-win64/inc32/openssl/srtp.h | 147 + ext/openssl-win64/inc32/openssl/ssl.h | 3159 +++++++++++++ ext/openssl-win64/inc32/openssl/ssl2.h | 265 ++ ext/openssl-win64/inc32/openssl/ssl23.h | 84 + ext/openssl-win64/inc32/openssl/ssl3.h | 774 +++ ext/openssl-win64/inc32/openssl/stack.h | 107 + ext/openssl-win64/inc32/openssl/symhacks.h | 516 ++ ext/openssl-win64/inc32/openssl/tls1.h | 813 ++++ ext/openssl-win64/inc32/openssl/x509.h | 1327 ++++++ ext/openssl-win64/inc32/openssl/x509_vfy.h | 641 +++ ext/openssl-win64/out32dll/libeay32.lib | Bin 0 -> 801728 bytes ext/openssl-win64/out32dll/ssleay32.lib | Bin 0 -> 75730 bytes 85 files changed, 56451 insertions(+) create mode 100644 ext/LICENSE (OpenSSL) create mode 100644 ext/openssl-win32/inc32/openssl/asn1.h create mode 100644 ext/openssl-win32/inc32/openssl/bio.h create mode 100644 ext/openssl-win32/inc32/openssl/bn.h create mode 100644 ext/openssl-win32/inc32/openssl/buffer.h create mode 100644 ext/openssl-win32/inc32/openssl/comp.h create mode 100644 ext/openssl-win32/inc32/openssl/crypto.h create mode 100644 ext/openssl-win32/inc32/openssl/dh.h create mode 100644 ext/openssl-win32/inc32/openssl/dsa.h create mode 100644 ext/openssl-win32/inc32/openssl/dtls1.h create mode 100644 ext/openssl-win32/inc32/openssl/e_os2.h create mode 100644 ext/openssl-win32/inc32/openssl/ec.h create mode 100644 ext/openssl-win32/inc32/openssl/ecdh.h create mode 100644 ext/openssl-win32/inc32/openssl/ecdsa.h create mode 100644 ext/openssl-win32/inc32/openssl/err.h create mode 100644 ext/openssl-win32/inc32/openssl/evp.h create mode 100644 ext/openssl-win32/inc32/openssl/hmac.h create mode 100644 ext/openssl-win32/inc32/openssl/kssl.h create mode 100644 ext/openssl-win32/inc32/openssl/lhash.h create mode 100644 ext/openssl-win32/inc32/openssl/obj_mac.h create mode 100644 ext/openssl-win32/inc32/openssl/objects.h create mode 100644 ext/openssl-win32/inc32/openssl/opensslconf.h create mode 100644 ext/openssl-win32/inc32/openssl/opensslv.h create mode 100644 ext/openssl-win32/inc32/openssl/ossl_typ.h create mode 100644 ext/openssl-win32/inc32/openssl/pem.h create mode 100644 ext/openssl-win32/inc32/openssl/pem2.h create mode 100644 ext/openssl-win32/inc32/openssl/pkcs7.h create mode 100644 ext/openssl-win32/inc32/openssl/pqueue.h create mode 100644 ext/openssl-win32/inc32/openssl/rsa.h create mode 100644 ext/openssl-win32/inc32/openssl/safestack.h create mode 100644 ext/openssl-win32/inc32/openssl/sha.h create mode 100644 ext/openssl-win32/inc32/openssl/srtp.h create mode 100644 ext/openssl-win32/inc32/openssl/ssl.h create mode 100644 ext/openssl-win32/inc32/openssl/ssl2.h create mode 100644 ext/openssl-win32/inc32/openssl/ssl23.h create mode 100644 ext/openssl-win32/inc32/openssl/ssl3.h create mode 100644 ext/openssl-win32/inc32/openssl/stack.h create mode 100644 ext/openssl-win32/inc32/openssl/symhacks.h create mode 100644 ext/openssl-win32/inc32/openssl/tls1.h create mode 100644 ext/openssl-win32/inc32/openssl/x509.h create mode 100644 ext/openssl-win32/inc32/openssl/x509_vfy.h create mode 100644 ext/openssl-win32/out32dll/libeay32.lib create mode 100644 ext/openssl-win32/out32dll/ssleay32.lib create mode 100644 ext/openssl-win64/inc32/openssl/asn1.h create mode 100644 ext/openssl-win64/inc32/openssl/bio.h create mode 100644 ext/openssl-win64/inc32/openssl/bn.h create mode 100644 ext/openssl-win64/inc32/openssl/buffer.h create mode 100644 ext/openssl-win64/inc32/openssl/comp.h create mode 100644 ext/openssl-win64/inc32/openssl/crypto.h create mode 100644 ext/openssl-win64/inc32/openssl/dh.h create mode 100644 ext/openssl-win64/inc32/openssl/dsa.h create mode 100644 ext/openssl-win64/inc32/openssl/dtls1.h create mode 100644 ext/openssl-win64/inc32/openssl/e_os2.h create mode 100644 ext/openssl-win64/inc32/openssl/ec.h create mode 100644 ext/openssl-win64/inc32/openssl/ecdh.h create mode 100644 ext/openssl-win64/inc32/openssl/ecdsa.h create mode 100644 ext/openssl-win64/inc32/openssl/err.h create mode 100644 ext/openssl-win64/inc32/openssl/evp.h create mode 100644 ext/openssl-win64/inc32/openssl/hmac.h create mode 100644 ext/openssl-win64/inc32/openssl/kssl.h create mode 100644 ext/openssl-win64/inc32/openssl/lhash.h create mode 100644 ext/openssl-win64/inc32/openssl/obj_mac.h create mode 100644 ext/openssl-win64/inc32/openssl/objects.h create mode 100644 ext/openssl-win64/inc32/openssl/opensslconf.h create mode 100644 ext/openssl-win64/inc32/openssl/opensslv.h create mode 100644 ext/openssl-win64/inc32/openssl/ossl_typ.h create mode 100644 ext/openssl-win64/inc32/openssl/pem.h create mode 100644 ext/openssl-win64/inc32/openssl/pem2.h create mode 100644 ext/openssl-win64/inc32/openssl/pkcs7.h create mode 100644 ext/openssl-win64/inc32/openssl/pqueue.h create mode 100644 ext/openssl-win64/inc32/openssl/rsa.h create mode 100644 ext/openssl-win64/inc32/openssl/safestack.h create mode 100644 ext/openssl-win64/inc32/openssl/sha.h create mode 100644 ext/openssl-win64/inc32/openssl/srtp.h create mode 100644 ext/openssl-win64/inc32/openssl/ssl.h create mode 100644 ext/openssl-win64/inc32/openssl/ssl2.h create mode 100644 ext/openssl-win64/inc32/openssl/ssl23.h create mode 100644 ext/openssl-win64/inc32/openssl/ssl3.h create mode 100644 ext/openssl-win64/inc32/openssl/stack.h create mode 100644 ext/openssl-win64/inc32/openssl/symhacks.h create mode 100644 ext/openssl-win64/inc32/openssl/tls1.h create mode 100644 ext/openssl-win64/inc32/openssl/x509.h create mode 100644 ext/openssl-win64/inc32/openssl/x509_vfy.h create mode 100644 ext/openssl-win64/out32dll/libeay32.lib create mode 100644 ext/openssl-win64/out32dll/ssleay32.lib diff --git a/ext/LICENSE (OpenSSL) b/ext/LICENSE (OpenSSL) new file mode 100644 index 00000000..e47d101f --- /dev/null +++ b/ext/LICENSE (OpenSSL) @@ -0,0 +1,127 @@ + + LICENSE ISSUES + ============== + + The OpenSSL toolkit stays under a dual license, i.e. both the conditions of + the OpenSSL License and the original SSLeay license apply to the toolkit. + See below for the actual license texts. Actually both licenses are BSD-style + Open Source licenses. In case of any license issues related to OpenSSL + please contact openssl-core@openssl.org. + + OpenSSL License + --------------- + +/* ==================================================================== + * Copyright (c) 1998-2011 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). + * + */ + + Original SSLeay License + ----------------------- + +/* 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.] + */ + diff --git a/ext/openssl-win32/inc32/openssl/asn1.h b/ext/openssl-win32/inc32/openssl/asn1.h new file mode 100644 index 00000000..bb6ac95b --- /dev/null +++ b/ext/openssl-win32/inc32/openssl/asn1.h @@ -0,0 +1,1418 @@ +/* crypto/asn1/asn1.h */ +/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) + * All rights reserved. + * + * This package is an SSL implementation written + * by Eric Young (eay@cryptsoft.com). + * The implementation was written so as to conform with Netscapes SSL. + * + * This library is free for commercial and non-commercial use as long as + * the following conditions are aheared to. The following conditions + * apply to all code found in this distribution, be it the RC4, RSA, + * lhash, DES, etc., code; not just the SSL code. The SSL documentation + * included with this distribution is covered by the same copyright terms + * except that the holder is Tim Hudson (tjh@cryptsoft.com). + * + * Copyright remains Eric Young's, and as such any Copyright notices in + * the code are not to be removed. + * If this package is used in a product, Eric Young should be given attribution + * as the author of the parts of the library used. + * This can be in the form of a textual message at program startup or + * in documentation (online or textual) provided with the package. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * "This product includes cryptographic software written by + * Eric Young (eay@cryptsoft.com)" + * The word 'cryptographic' can be left out if the rouines from the library + * being used are not cryptographic related :-). + * 4. If you include any Windows specific code (or a derivative thereof) from + * the apps directory (application code) you must include an acknowledgement: + * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" + * + * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * The licence and distribution terms for any publically available version or + * derivative of this code cannot be changed. i.e. this code cannot simply be + * copied and put under another distribution licence + * [including the GNU Public Licence.] + */ + +#ifndef HEADER_ASN1_H +# define HEADER_ASN1_H + +# include +# include +# ifndef OPENSSL_NO_BIO +# include +# endif +# include +# include + +# include + +# include +# ifndef OPENSSL_NO_DEPRECATED +# include +# endif + +# ifdef OPENSSL_BUILD_SHLIBCRYPTO +# undef OPENSSL_EXTERN +# define OPENSSL_EXTERN OPENSSL_EXPORT +# endif + +#ifdef __cplusplus +extern "C" { +#endif + +# define V_ASN1_UNIVERSAL 0x00 +# define V_ASN1_APPLICATION 0x40 +# define V_ASN1_CONTEXT_SPECIFIC 0x80 +# define V_ASN1_PRIVATE 0xc0 + +# define V_ASN1_CONSTRUCTED 0x20 +# define V_ASN1_PRIMITIVE_TAG 0x1f +# define V_ASN1_PRIMATIVE_TAG 0x1f + +# define V_ASN1_APP_CHOOSE -2/* let the recipient choose */ +# define V_ASN1_OTHER -3/* used in ASN1_TYPE */ +# define V_ASN1_ANY -4/* used in ASN1 template code */ + +# define V_ASN1_NEG 0x100/* negative flag */ + +# define V_ASN1_UNDEF -1 +# define V_ASN1_EOC 0 +# define V_ASN1_BOOLEAN 1 /**/ +# define V_ASN1_INTEGER 2 +# define V_ASN1_NEG_INTEGER (2 | V_ASN1_NEG) +# define V_ASN1_BIT_STRING 3 +# define V_ASN1_OCTET_STRING 4 +# define V_ASN1_NULL 5 +# define V_ASN1_OBJECT 6 +# define V_ASN1_OBJECT_DESCRIPTOR 7 +# define V_ASN1_EXTERNAL 8 +# define V_ASN1_REAL 9 +# define V_ASN1_ENUMERATED 10 +# define V_ASN1_NEG_ENUMERATED (10 | V_ASN1_NEG) +# define V_ASN1_UTF8STRING 12 +# define V_ASN1_SEQUENCE 16 +# define V_ASN1_SET 17 +# define V_ASN1_NUMERICSTRING 18 /**/ +# define V_ASN1_PRINTABLESTRING 19 +# define V_ASN1_T61STRING 20 +# define V_ASN1_TELETEXSTRING 20/* alias */ +# define V_ASN1_VIDEOTEXSTRING 21 /**/ +# define V_ASN1_IA5STRING 22 +# define V_ASN1_UTCTIME 23 +# define V_ASN1_GENERALIZEDTIME 24 /**/ +# define V_ASN1_GRAPHICSTRING 25 /**/ +# define V_ASN1_ISO64STRING 26 /**/ +# define V_ASN1_VISIBLESTRING 26/* alias */ +# define V_ASN1_GENERALSTRING 27 /**/ +# define V_ASN1_UNIVERSALSTRING 28 /**/ +# define V_ASN1_BMPSTRING 30 +/* For use with d2i_ASN1_type_bytes() */ +# define B_ASN1_NUMERICSTRING 0x0001 +# define B_ASN1_PRINTABLESTRING 0x0002 +# define B_ASN1_T61STRING 0x0004 +# define B_ASN1_TELETEXSTRING 0x0004 +# define B_ASN1_VIDEOTEXSTRING 0x0008 +# define B_ASN1_IA5STRING 0x0010 +# define B_ASN1_GRAPHICSTRING 0x0020 +# define B_ASN1_ISO64STRING 0x0040 +# define B_ASN1_VISIBLESTRING 0x0040 +# define B_ASN1_GENERALSTRING 0x0080 +# define B_ASN1_UNIVERSALSTRING 0x0100 +# define B_ASN1_OCTET_STRING 0x0200 +# define B_ASN1_BIT_STRING 0x0400 +# define B_ASN1_BMPSTRING 0x0800 +# define B_ASN1_UNKNOWN 0x1000 +# define B_ASN1_UTF8STRING 0x2000 +# define B_ASN1_UTCTIME 0x4000 +# define B_ASN1_GENERALIZEDTIME 0x8000 +# define B_ASN1_SEQUENCE 0x10000 +/* For use with ASN1_mbstring_copy() */ +# define MBSTRING_FLAG 0x1000 +# define MBSTRING_UTF8 (MBSTRING_FLAG) +# define MBSTRING_ASC (MBSTRING_FLAG|1) +# define MBSTRING_BMP (MBSTRING_FLAG|2) +# define MBSTRING_UNIV (MBSTRING_FLAG|4) +# define SMIME_OLDMIME 0x400 +# define SMIME_CRLFEOL 0x800 +# define SMIME_STREAM 0x1000 + struct X509_algor_st; +DECLARE_STACK_OF(X509_ALGOR) + +# define DECLARE_ASN1_SET_OF(type)/* filled in by mkstack.pl */ +# define IMPLEMENT_ASN1_SET_OF(type)/* nothing, no longer needed */ + +/* + * We MUST make sure that, except for constness, asn1_ctx_st and + * asn1_const_ctx are exactly the same. Fortunately, as soon as the old ASN1 + * parsing macros are gone, we can throw this away as well... + */ +typedef struct asn1_ctx_st { + unsigned char *p; /* work char pointer */ + int eos; /* end of sequence read for indefinite + * encoding */ + int error; /* error code to use when returning an error */ + int inf; /* constructed if 0x20, indefinite is 0x21 */ + int tag; /* tag from last 'get object' */ + int xclass; /* class from last 'get object' */ + long slen; /* length of last 'get object' */ + unsigned char *max; /* largest value of p allowed */ + unsigned char *q; /* temporary variable */ + unsigned char **pp; /* variable */ + int line; /* used in error processing */ +} ASN1_CTX; + +typedef struct asn1_const_ctx_st { + const unsigned char *p; /* work char pointer */ + int eos; /* end of sequence read for indefinite + * encoding */ + int error; /* error code to use when returning an error */ + int inf; /* constructed if 0x20, indefinite is 0x21 */ + int tag; /* tag from last 'get object' */ + int xclass; /* class from last 'get object' */ + long slen; /* length of last 'get object' */ + const unsigned char *max; /* largest value of p allowed */ + const unsigned char *q; /* temporary variable */ + const unsigned char **pp; /* variable */ + int line; /* used in error processing */ +} ASN1_const_CTX; + +/* + * These are used internally in the ASN1_OBJECT to keep track of whether the + * names and data need to be free()ed + */ +# define ASN1_OBJECT_FLAG_DYNAMIC 0x01/* internal use */ +# define ASN1_OBJECT_FLAG_CRITICAL 0x02/* critical x509v3 object id */ +# define ASN1_OBJECT_FLAG_DYNAMIC_STRINGS 0x04/* internal use */ +# define ASN1_OBJECT_FLAG_DYNAMIC_DATA 0x08/* internal use */ +struct asn1_object_st { + const char *sn, *ln; + int nid; + int length; + const unsigned char *data; /* data remains const after init */ + int flags; /* Should we free this one */ +}; + +# define ASN1_STRING_FLAG_BITS_LEFT 0x08/* Set if 0x07 has bits left value */ +/* + * This indicates that the ASN1_STRING is not a real value but just a place + * holder for the location where indefinite length constructed data should be + * inserted in the memory buffer + */ +# define ASN1_STRING_FLAG_NDEF 0x010 + +/* + * This flag is used by the CMS code to indicate that a string is not + * complete and is a place holder for content when it had all been accessed. + * The flag will be reset when content has been written to it. + */ + +# define ASN1_STRING_FLAG_CONT 0x020 +/* + * This flag is used by ASN1 code to indicate an ASN1_STRING is an MSTRING + * type. + */ +# define ASN1_STRING_FLAG_MSTRING 0x040 +/* This is the base type that holds just about everything :-) */ +struct asn1_string_st { + int length; + int type; + unsigned char *data; + /* + * The value of the following field depends on the type being held. It + * is mostly being used for BIT_STRING so if the input data has a + * non-zero 'unused bits' value, it will be handled correctly + */ + long flags; +}; + +/* + * ASN1_ENCODING structure: this is used to save the received encoding of an + * ASN1 type. This is useful to get round problems with invalid encodings + * which can break signatures. + */ + +typedef struct ASN1_ENCODING_st { + unsigned char *enc; /* DER encoding */ + long len; /* Length of encoding */ + int modified; /* set to 1 if 'enc' is invalid */ +} ASN1_ENCODING; + +/* Used with ASN1 LONG type: if a long is set to this it is omitted */ +# define ASN1_LONG_UNDEF 0x7fffffffL + +# define STABLE_FLAGS_MALLOC 0x01 +# define STABLE_NO_MASK 0x02 +# define DIRSTRING_TYPE \ + (B_ASN1_PRINTABLESTRING|B_ASN1_T61STRING|B_ASN1_BMPSTRING|B_ASN1_UTF8STRING) +# define PKCS9STRING_TYPE (DIRSTRING_TYPE|B_ASN1_IA5STRING) + +typedef struct asn1_string_table_st { + int nid; + long minsize; + long maxsize; + unsigned long mask; + unsigned long flags; +} ASN1_STRING_TABLE; + +DECLARE_STACK_OF(ASN1_STRING_TABLE) + +/* size limits: this stuff is taken straight from RFC2459 */ + +# define ub_name 32768 +# define ub_common_name 64 +# define ub_locality_name 128 +# define ub_state_name 128 +# define ub_organization_name 64 +# define ub_organization_unit_name 64 +# define ub_title 64 +# define ub_email_address 128 + +/* + * Declarations for template structures: for full definitions see asn1t.h + */ +typedef struct ASN1_TEMPLATE_st ASN1_TEMPLATE; +typedef struct ASN1_TLC_st ASN1_TLC; +/* This is just an opaque pointer */ +typedef struct ASN1_VALUE_st ASN1_VALUE; + +/* Declare ASN1 functions: the implement macro in in asn1t.h */ + +# define DECLARE_ASN1_FUNCTIONS(type) DECLARE_ASN1_FUNCTIONS_name(type, type) + +# define DECLARE_ASN1_ALLOC_FUNCTIONS(type) \ + DECLARE_ASN1_ALLOC_FUNCTIONS_name(type, type) + +# define DECLARE_ASN1_FUNCTIONS_name(type, name) \ + DECLARE_ASN1_ALLOC_FUNCTIONS_name(type, name) \ + DECLARE_ASN1_ENCODE_FUNCTIONS(type, name, name) + +# define DECLARE_ASN1_FUNCTIONS_fname(type, itname, name) \ + DECLARE_ASN1_ALLOC_FUNCTIONS_name(type, name) \ + DECLARE_ASN1_ENCODE_FUNCTIONS(type, itname, name) + +# define DECLARE_ASN1_ENCODE_FUNCTIONS(type, itname, name) \ + type *d2i_##name(type **a, const unsigned char **in, long len); \ + int i2d_##name(type *a, unsigned char **out); \ + DECLARE_ASN1_ITEM(itname) + +# define DECLARE_ASN1_ENCODE_FUNCTIONS_const(type, name) \ + type *d2i_##name(type **a, const unsigned char **in, long len); \ + int i2d_##name(const type *a, unsigned char **out); \ + DECLARE_ASN1_ITEM(name) + +# define DECLARE_ASN1_NDEF_FUNCTION(name) \ + int i2d_##name##_NDEF(name *a, unsigned char **out); + +# define DECLARE_ASN1_FUNCTIONS_const(name) \ + DECLARE_ASN1_ALLOC_FUNCTIONS(name) \ + DECLARE_ASN1_ENCODE_FUNCTIONS_const(name, name) + +# define DECLARE_ASN1_ALLOC_FUNCTIONS_name(type, name) \ + type *name##_new(void); \ + void name##_free(type *a); + +# define DECLARE_ASN1_PRINT_FUNCTION(stname) \ + DECLARE_ASN1_PRINT_FUNCTION_fname(stname, stname) + +# define DECLARE_ASN1_PRINT_FUNCTION_fname(stname, fname) \ + int fname##_print_ctx(BIO *out, stname *x, int indent, \ + const ASN1_PCTX *pctx); + +# define D2I_OF(type) type *(*)(type **,const unsigned char **,long) +# define I2D_OF(type) int (*)(type *,unsigned char **) +# define I2D_OF_const(type) int (*)(const type *,unsigned char **) + +# define CHECKED_D2I_OF(type, d2i) \ + ((d2i_of_void*) (1 ? d2i : ((D2I_OF(type))0))) +# define CHECKED_I2D_OF(type, i2d) \ + ((i2d_of_void*) (1 ? i2d : ((I2D_OF(type))0))) +# define CHECKED_NEW_OF(type, xnew) \ + ((void *(*)(void)) (1 ? xnew : ((type *(*)(void))0))) +# define CHECKED_PTR_OF(type, p) \ + ((void*) (1 ? p : (type*)0)) +# define CHECKED_PPTR_OF(type, p) \ + ((void**) (1 ? p : (type**)0)) + +# define TYPEDEF_D2I_OF(type) typedef type *d2i_of_##type(type **,const unsigned char **,long) +# define TYPEDEF_I2D_OF(type) typedef int i2d_of_##type(type *,unsigned char **) +# define TYPEDEF_D2I2D_OF(type) TYPEDEF_D2I_OF(type); TYPEDEF_I2D_OF(type) + +TYPEDEF_D2I2D_OF(void); + +/*- + * The following macros and typedefs allow an ASN1_ITEM + * to be embedded in a structure and referenced. Since + * the ASN1_ITEM pointers need to be globally accessible + * (possibly from shared libraries) they may exist in + * different forms. On platforms that support it the + * ASN1_ITEM structure itself will be globally exported. + * Other platforms will export a function that returns + * an ASN1_ITEM pointer. + * + * To handle both cases transparently the macros below + * should be used instead of hard coding an ASN1_ITEM + * pointer in a structure. + * + * The structure will look like this: + * + * typedef struct SOMETHING_st { + * ... + * ASN1_ITEM_EXP *iptr; + * ... + * } SOMETHING; + * + * It would be initialised as e.g.: + * + * SOMETHING somevar = {...,ASN1_ITEM_ref(X509),...}; + * + * and the actual pointer extracted with: + * + * const ASN1_ITEM *it = ASN1_ITEM_ptr(somevar.iptr); + * + * Finally an ASN1_ITEM pointer can be extracted from an + * appropriate reference with: ASN1_ITEM_rptr(X509). This + * would be used when a function takes an ASN1_ITEM * argument. + * + */ + +# ifndef OPENSSL_EXPORT_VAR_AS_FUNCTION + +/* ASN1_ITEM pointer exported type */ +typedef const ASN1_ITEM ASN1_ITEM_EXP; + +/* Macro to obtain ASN1_ITEM pointer from exported type */ +# define ASN1_ITEM_ptr(iptr) (iptr) + +/* Macro to include ASN1_ITEM pointer from base type */ +# define ASN1_ITEM_ref(iptr) (&(iptr##_it)) + +# define ASN1_ITEM_rptr(ref) (&(ref##_it)) + +# define DECLARE_ASN1_ITEM(name) \ + OPENSSL_EXTERN const ASN1_ITEM name##_it; + +# else + +/* + * Platforms that can't easily handle shared global variables are declared as + * functions returning ASN1_ITEM pointers. + */ + +/* ASN1_ITEM pointer exported type */ +typedef const ASN1_ITEM *ASN1_ITEM_EXP (void); + +/* Macro to obtain ASN1_ITEM pointer from exported type */ +# define ASN1_ITEM_ptr(iptr) (iptr()) + +/* Macro to include ASN1_ITEM pointer from base type */ +# define ASN1_ITEM_ref(iptr) (iptr##_it) + +# define ASN1_ITEM_rptr(ref) (ref##_it()) + +# define DECLARE_ASN1_ITEM(name) \ + const ASN1_ITEM * name##_it(void); + +# endif + +/* Parameters used by ASN1_STRING_print_ex() */ + +/* + * These determine which characters to escape: RFC2253 special characters, + * control characters and MSB set characters + */ + +# define ASN1_STRFLGS_ESC_2253 1 +# define ASN1_STRFLGS_ESC_CTRL 2 +# define ASN1_STRFLGS_ESC_MSB 4 + +/* + * This flag determines how we do escaping: normally RC2253 backslash only, + * set this to use backslash and quote. + */ + +# define ASN1_STRFLGS_ESC_QUOTE 8 + +/* These three flags are internal use only. */ + +/* Character is a valid PrintableString character */ +# define CHARTYPE_PRINTABLESTRING 0x10 +/* Character needs escaping if it is the first character */ +# define CHARTYPE_FIRST_ESC_2253 0x20 +/* Character needs escaping if it is the last character */ +# define CHARTYPE_LAST_ESC_2253 0x40 + +/* + * NB the internal flags are safely reused below by flags handled at the top + * level. + */ + +/* + * If this is set we convert all character strings to UTF8 first + */ + +# define ASN1_STRFLGS_UTF8_CONVERT 0x10 + +/* + * If this is set we don't attempt to interpret content: just assume all + * strings are 1 byte per character. This will produce some pretty odd + * looking output! + */ + +# define ASN1_STRFLGS_IGNORE_TYPE 0x20 + +/* If this is set we include the string type in the output */ +# define ASN1_STRFLGS_SHOW_TYPE 0x40 + +/* + * This determines which strings to display and which to 'dump' (hex dump of + * content octets or DER encoding). We can only dump non character strings or + * everything. If we don't dump 'unknown' they are interpreted as character + * strings with 1 octet per character and are subject to the usual escaping + * options. + */ + +# define ASN1_STRFLGS_DUMP_ALL 0x80 +# define ASN1_STRFLGS_DUMP_UNKNOWN 0x100 + +/* + * These determine what 'dumping' does, we can dump the content octets or the + * DER encoding: both use the RFC2253 #XXXXX notation. + */ + +# define ASN1_STRFLGS_DUMP_DER 0x200 + +/* + * All the string flags consistent with RFC2253, escaping control characters + * isn't essential in RFC2253 but it is advisable anyway. + */ + +# define ASN1_STRFLGS_RFC2253 (ASN1_STRFLGS_ESC_2253 | \ + ASN1_STRFLGS_ESC_CTRL | \ + ASN1_STRFLGS_ESC_MSB | \ + ASN1_STRFLGS_UTF8_CONVERT | \ + ASN1_STRFLGS_DUMP_UNKNOWN | \ + ASN1_STRFLGS_DUMP_DER) + +DECLARE_STACK_OF(ASN1_INTEGER) +DECLARE_ASN1_SET_OF(ASN1_INTEGER) + +DECLARE_STACK_OF(ASN1_GENERALSTRING) + +typedef struct asn1_type_st { + int type; + union { + char *ptr; + ASN1_BOOLEAN boolean; + ASN1_STRING *asn1_string; + ASN1_OBJECT *object; + ASN1_INTEGER *integer; + ASN1_ENUMERATED *enumerated; + ASN1_BIT_STRING *bit_string; + ASN1_OCTET_STRING *octet_string; + ASN1_PRINTABLESTRING *printablestring; + ASN1_T61STRING *t61string; + ASN1_IA5STRING *ia5string; + ASN1_GENERALSTRING *generalstring; + ASN1_BMPSTRING *bmpstring; + ASN1_UNIVERSALSTRING *universalstring; + ASN1_UTCTIME *utctime; + ASN1_GENERALIZEDTIME *generalizedtime; + ASN1_VISIBLESTRING *visiblestring; + ASN1_UTF8STRING *utf8string; + /* + * set and sequence are left complete and still contain the set or + * sequence bytes + */ + ASN1_STRING *set; + ASN1_STRING *sequence; + ASN1_VALUE *asn1_value; + } value; +} ASN1_TYPE; + +DECLARE_STACK_OF(ASN1_TYPE) +DECLARE_ASN1_SET_OF(ASN1_TYPE) + +typedef STACK_OF(ASN1_TYPE) ASN1_SEQUENCE_ANY; + +DECLARE_ASN1_ENCODE_FUNCTIONS_const(ASN1_SEQUENCE_ANY, ASN1_SEQUENCE_ANY) +DECLARE_ASN1_ENCODE_FUNCTIONS_const(ASN1_SEQUENCE_ANY, ASN1_SET_ANY) + +typedef struct NETSCAPE_X509_st { + ASN1_OCTET_STRING *header; + X509 *cert; +} NETSCAPE_X509; + +/* This is used to contain a list of bit names */ +typedef struct BIT_STRING_BITNAME_st { + int bitnum; + const char *lname; + const char *sname; +} BIT_STRING_BITNAME; + +# define M_ASN1_STRING_length(x) ((x)->length) +# define M_ASN1_STRING_length_set(x, n) ((x)->length = (n)) +# define M_ASN1_STRING_type(x) ((x)->type) +# define M_ASN1_STRING_data(x) ((x)->data) + +/* Macros for string operations */ +# define M_ASN1_BIT_STRING_new() (ASN1_BIT_STRING *)\ + ASN1_STRING_type_new(V_ASN1_BIT_STRING) +# define M_ASN1_BIT_STRING_free(a) ASN1_STRING_free((ASN1_STRING *)a) +# define M_ASN1_BIT_STRING_dup(a) (ASN1_BIT_STRING *)\ + ASN1_STRING_dup((const ASN1_STRING *)a) +# define M_ASN1_BIT_STRING_cmp(a,b) ASN1_STRING_cmp(\ + (const ASN1_STRING *)a,(const ASN1_STRING *)b) +# define M_ASN1_BIT_STRING_set(a,b,c) ASN1_STRING_set((ASN1_STRING *)a,b,c) + +# define M_ASN1_INTEGER_new() (ASN1_INTEGER *)\ + ASN1_STRING_type_new(V_ASN1_INTEGER) +# define M_ASN1_INTEGER_free(a) ASN1_STRING_free((ASN1_STRING *)a) +# define M_ASN1_INTEGER_dup(a) (ASN1_INTEGER *)\ + ASN1_STRING_dup((const ASN1_STRING *)a) +# define M_ASN1_INTEGER_cmp(a,b) ASN1_STRING_cmp(\ + (const ASN1_STRING *)a,(const ASN1_STRING *)b) + +# define M_ASN1_ENUMERATED_new() (ASN1_ENUMERATED *)\ + ASN1_STRING_type_new(V_ASN1_ENUMERATED) +# define M_ASN1_ENUMERATED_free(a) ASN1_STRING_free((ASN1_STRING *)a) +# define M_ASN1_ENUMERATED_dup(a) (ASN1_ENUMERATED *)\ + ASN1_STRING_dup((const ASN1_STRING *)a) +# define M_ASN1_ENUMERATED_cmp(a,b) ASN1_STRING_cmp(\ + (const ASN1_STRING *)a,(const ASN1_STRING *)b) + +# define M_ASN1_OCTET_STRING_new() (ASN1_OCTET_STRING *)\ + ASN1_STRING_type_new(V_ASN1_OCTET_STRING) +# define M_ASN1_OCTET_STRING_free(a) ASN1_STRING_free((ASN1_STRING *)a) +# define M_ASN1_OCTET_STRING_dup(a) (ASN1_OCTET_STRING *)\ + ASN1_STRING_dup((const ASN1_STRING *)a) +# define M_ASN1_OCTET_STRING_cmp(a,b) ASN1_STRING_cmp(\ + (const ASN1_STRING *)a,(const ASN1_STRING *)b) +# define M_ASN1_OCTET_STRING_set(a,b,c) ASN1_STRING_set((ASN1_STRING *)a,b,c) +# define M_ASN1_OCTET_STRING_print(a,b) ASN1_STRING_print(a,(ASN1_STRING *)b) +# define M_i2d_ASN1_OCTET_STRING(a,pp) \ + i2d_ASN1_bytes((ASN1_STRING *)a,pp,V_ASN1_OCTET_STRING,\ + V_ASN1_UNIVERSAL) + +# define B_ASN1_TIME \ + B_ASN1_UTCTIME | \ + B_ASN1_GENERALIZEDTIME + +# define B_ASN1_PRINTABLE \ + B_ASN1_NUMERICSTRING| \ + B_ASN1_PRINTABLESTRING| \ + B_ASN1_T61STRING| \ + B_ASN1_IA5STRING| \ + B_ASN1_BIT_STRING| \ + B_ASN1_UNIVERSALSTRING|\ + B_ASN1_BMPSTRING|\ + B_ASN1_UTF8STRING|\ + B_ASN1_SEQUENCE|\ + B_ASN1_UNKNOWN + +# define B_ASN1_DIRECTORYSTRING \ + B_ASN1_PRINTABLESTRING| \ + B_ASN1_TELETEXSTRING|\ + B_ASN1_BMPSTRING|\ + B_ASN1_UNIVERSALSTRING|\ + B_ASN1_UTF8STRING + +# define B_ASN1_DISPLAYTEXT \ + B_ASN1_IA5STRING| \ + B_ASN1_VISIBLESTRING| \ + B_ASN1_BMPSTRING|\ + B_ASN1_UTF8STRING + +# define M_ASN1_PRINTABLE_new() ASN1_STRING_type_new(V_ASN1_T61STRING) +# define M_ASN1_PRINTABLE_free(a) ASN1_STRING_free((ASN1_STRING *)a) +# define M_i2d_ASN1_PRINTABLE(a,pp) i2d_ASN1_bytes((ASN1_STRING *)a,\ + pp,a->type,V_ASN1_UNIVERSAL) +# define M_d2i_ASN1_PRINTABLE(a,pp,l) \ + d2i_ASN1_type_bytes((ASN1_STRING **)a,pp,l, \ + B_ASN1_PRINTABLE) + +# define M_DIRECTORYSTRING_new() ASN1_STRING_type_new(V_ASN1_PRINTABLESTRING) +# define M_DIRECTORYSTRING_free(a) ASN1_STRING_free((ASN1_STRING *)a) +# define M_i2d_DIRECTORYSTRING(a,pp) i2d_ASN1_bytes((ASN1_STRING *)a,\ + pp,a->type,V_ASN1_UNIVERSAL) +# define M_d2i_DIRECTORYSTRING(a,pp,l) \ + d2i_ASN1_type_bytes((ASN1_STRING **)a,pp,l, \ + B_ASN1_DIRECTORYSTRING) + +# define M_DISPLAYTEXT_new() ASN1_STRING_type_new(V_ASN1_VISIBLESTRING) +# define M_DISPLAYTEXT_free(a) ASN1_STRING_free((ASN1_STRING *)a) +# define M_i2d_DISPLAYTEXT(a,pp) i2d_ASN1_bytes((ASN1_STRING *)a,\ + pp,a->type,V_ASN1_UNIVERSAL) +# define M_d2i_DISPLAYTEXT(a,pp,l) \ + d2i_ASN1_type_bytes((ASN1_STRING **)a,pp,l, \ + B_ASN1_DISPLAYTEXT) + +# define M_ASN1_PRINTABLESTRING_new() (ASN1_PRINTABLESTRING *)\ + ASN1_STRING_type_new(V_ASN1_PRINTABLESTRING) +# define M_ASN1_PRINTABLESTRING_free(a) ASN1_STRING_free((ASN1_STRING *)a) +# define M_i2d_ASN1_PRINTABLESTRING(a,pp) \ + i2d_ASN1_bytes((ASN1_STRING *)a,pp,V_ASN1_PRINTABLESTRING,\ + V_ASN1_UNIVERSAL) +# define M_d2i_ASN1_PRINTABLESTRING(a,pp,l) \ + (ASN1_PRINTABLESTRING *)d2i_ASN1_type_bytes\ + ((ASN1_STRING **)a,pp,l,B_ASN1_PRINTABLESTRING) + +# define M_ASN1_T61STRING_new() (ASN1_T61STRING *)\ + ASN1_STRING_type_new(V_ASN1_T61STRING) +# define M_ASN1_T61STRING_free(a) ASN1_STRING_free((ASN1_STRING *)a) +# define M_i2d_ASN1_T61STRING(a,pp) \ + i2d_ASN1_bytes((ASN1_STRING *)a,pp,V_ASN1_T61STRING,\ + V_ASN1_UNIVERSAL) +# define M_d2i_ASN1_T61STRING(a,pp,l) \ + (ASN1_T61STRING *)d2i_ASN1_type_bytes\ + ((ASN1_STRING **)a,pp,l,B_ASN1_T61STRING) + +# define M_ASN1_IA5STRING_new() (ASN1_IA5STRING *)\ + ASN1_STRING_type_new(V_ASN1_IA5STRING) +# define M_ASN1_IA5STRING_free(a) ASN1_STRING_free((ASN1_STRING *)a) +# define M_ASN1_IA5STRING_dup(a) \ + (ASN1_IA5STRING *)ASN1_STRING_dup((const ASN1_STRING *)a) +# define M_i2d_ASN1_IA5STRING(a,pp) \ + i2d_ASN1_bytes((ASN1_STRING *)a,pp,V_ASN1_IA5STRING,\ + V_ASN1_UNIVERSAL) +# define M_d2i_ASN1_IA5STRING(a,pp,l) \ + (ASN1_IA5STRING *)d2i_ASN1_type_bytes((ASN1_STRING **)a,pp,l,\ + B_ASN1_IA5STRING) + +# define M_ASN1_UTCTIME_new() (ASN1_UTCTIME *)\ + ASN1_STRING_type_new(V_ASN1_UTCTIME) +# define M_ASN1_UTCTIME_free(a) ASN1_STRING_free((ASN1_STRING *)a) +# define M_ASN1_UTCTIME_dup(a) (ASN1_UTCTIME *)\ + ASN1_STRING_dup((const ASN1_STRING *)a) + +# define M_ASN1_GENERALIZEDTIME_new() (ASN1_GENERALIZEDTIME *)\ + ASN1_STRING_type_new(V_ASN1_GENERALIZEDTIME) +# define M_ASN1_GENERALIZEDTIME_free(a) ASN1_STRING_free((ASN1_STRING *)a) +# define M_ASN1_GENERALIZEDTIME_dup(a) (ASN1_GENERALIZEDTIME *)ASN1_STRING_dup(\ + (const ASN1_STRING *)a) + +# define M_ASN1_TIME_new() (ASN1_TIME *)\ + ASN1_STRING_type_new(V_ASN1_UTCTIME) +# define M_ASN1_TIME_free(a) ASN1_STRING_free((ASN1_STRING *)a) +# define M_ASN1_TIME_dup(a) (ASN1_TIME *)\ + ASN1_STRING_dup((const ASN1_STRING *)a) + +# define M_ASN1_GENERALSTRING_new() (ASN1_GENERALSTRING *)\ + ASN1_STRING_type_new(V_ASN1_GENERALSTRING) +# define M_ASN1_GENERALSTRING_free(a) ASN1_STRING_free((ASN1_STRING *)a) +# define M_i2d_ASN1_GENERALSTRING(a,pp) \ + i2d_ASN1_bytes((ASN1_STRING *)a,pp,V_ASN1_GENERALSTRING,\ + V_ASN1_UNIVERSAL) +# define M_d2i_ASN1_GENERALSTRING(a,pp,l) \ + (ASN1_GENERALSTRING *)d2i_ASN1_type_bytes\ + ((ASN1_STRING **)a,pp,l,B_ASN1_GENERALSTRING) + +# define M_ASN1_UNIVERSALSTRING_new() (ASN1_UNIVERSALSTRING *)\ + ASN1_STRING_type_new(V_ASN1_UNIVERSALSTRING) +# define M_ASN1_UNIVERSALSTRING_free(a) ASN1_STRING_free((ASN1_STRING *)a) +# define M_i2d_ASN1_UNIVERSALSTRING(a,pp) \ + i2d_ASN1_bytes((ASN1_STRING *)a,pp,V_ASN1_UNIVERSALSTRING,\ + V_ASN1_UNIVERSAL) +# define M_d2i_ASN1_UNIVERSALSTRING(a,pp,l) \ + (ASN1_UNIVERSALSTRING *)d2i_ASN1_type_bytes\ + ((ASN1_STRING **)a,pp,l,B_ASN1_UNIVERSALSTRING) + +# define M_ASN1_BMPSTRING_new() (ASN1_BMPSTRING *)\ + ASN1_STRING_type_new(V_ASN1_BMPSTRING) +# define M_ASN1_BMPSTRING_free(a) ASN1_STRING_free((ASN1_STRING *)a) +# define M_i2d_ASN1_BMPSTRING(a,pp) \ + i2d_ASN1_bytes((ASN1_STRING *)a,pp,V_ASN1_BMPSTRING,\ + V_ASN1_UNIVERSAL) +# define M_d2i_ASN1_BMPSTRING(a,pp,l) \ + (ASN1_BMPSTRING *)d2i_ASN1_type_bytes\ + ((ASN1_STRING **)a,pp,l,B_ASN1_BMPSTRING) + +# define M_ASN1_VISIBLESTRING_new() (ASN1_VISIBLESTRING *)\ + ASN1_STRING_type_new(V_ASN1_VISIBLESTRING) +# define M_ASN1_VISIBLESTRING_free(a) ASN1_STRING_free((ASN1_STRING *)a) +# define M_i2d_ASN1_VISIBLESTRING(a,pp) \ + i2d_ASN1_bytes((ASN1_STRING *)a,pp,V_ASN1_VISIBLESTRING,\ + V_ASN1_UNIVERSAL) +# define M_d2i_ASN1_VISIBLESTRING(a,pp,l) \ + (ASN1_VISIBLESTRING *)d2i_ASN1_type_bytes\ + ((ASN1_STRING **)a,pp,l,B_ASN1_VISIBLESTRING) + +# define M_ASN1_UTF8STRING_new() (ASN1_UTF8STRING *)\ + ASN1_STRING_type_new(V_ASN1_UTF8STRING) +# define M_ASN1_UTF8STRING_free(a) ASN1_STRING_free((ASN1_STRING *)a) +# define M_i2d_ASN1_UTF8STRING(a,pp) \ + i2d_ASN1_bytes((ASN1_STRING *)a,pp,V_ASN1_UTF8STRING,\ + V_ASN1_UNIVERSAL) +# define M_d2i_ASN1_UTF8STRING(a,pp,l) \ + (ASN1_UTF8STRING *)d2i_ASN1_type_bytes\ + ((ASN1_STRING **)a,pp,l,B_ASN1_UTF8STRING) + + /* for the is_set parameter to i2d_ASN1_SET */ +# define IS_SEQUENCE 0 +# define IS_SET 1 + +DECLARE_ASN1_FUNCTIONS_fname(ASN1_TYPE, ASN1_ANY, ASN1_TYPE) + +int ASN1_TYPE_get(ASN1_TYPE *a); +void ASN1_TYPE_set(ASN1_TYPE *a, int type, void *value); +int ASN1_TYPE_set1(ASN1_TYPE *a, int type, const void *value); +int ASN1_TYPE_cmp(const ASN1_TYPE *a, const ASN1_TYPE *b); + +ASN1_OBJECT *ASN1_OBJECT_new(void); +void ASN1_OBJECT_free(ASN1_OBJECT *a); +int i2d_ASN1_OBJECT(ASN1_OBJECT *a, unsigned char **pp); +ASN1_OBJECT *c2i_ASN1_OBJECT(ASN1_OBJECT **a, const unsigned char **pp, + long length); +ASN1_OBJECT *d2i_ASN1_OBJECT(ASN1_OBJECT **a, const unsigned char **pp, + long length); + +DECLARE_ASN1_ITEM(ASN1_OBJECT) + +DECLARE_STACK_OF(ASN1_OBJECT) +DECLARE_ASN1_SET_OF(ASN1_OBJECT) + +ASN1_STRING *ASN1_STRING_new(void); +void ASN1_STRING_free(ASN1_STRING *a); +int ASN1_STRING_copy(ASN1_STRING *dst, const ASN1_STRING *str); +ASN1_STRING *ASN1_STRING_dup(const ASN1_STRING *a); +ASN1_STRING *ASN1_STRING_type_new(int type); +int ASN1_STRING_cmp(const ASN1_STRING *a, const ASN1_STRING *b); + /* + * Since this is used to store all sorts of things, via macros, for now, + * make its data void * + */ +int ASN1_STRING_set(ASN1_STRING *str, const void *data, int len); +void ASN1_STRING_set0(ASN1_STRING *str, void *data, int len); +int ASN1_STRING_length(const ASN1_STRING *x); +void ASN1_STRING_length_set(ASN1_STRING *x, int n); +int ASN1_STRING_type(ASN1_STRING *x); +unsigned char *ASN1_STRING_data(ASN1_STRING *x); + +DECLARE_ASN1_FUNCTIONS(ASN1_BIT_STRING) +int i2c_ASN1_BIT_STRING(ASN1_BIT_STRING *a, unsigned char **pp); +ASN1_BIT_STRING *c2i_ASN1_BIT_STRING(ASN1_BIT_STRING **a, + const unsigned char **pp, long length); +int ASN1_BIT_STRING_set(ASN1_BIT_STRING *a, unsigned char *d, int length); +int ASN1_BIT_STRING_set_bit(ASN1_BIT_STRING *a, int n, int value); +int ASN1_BIT_STRING_get_bit(ASN1_BIT_STRING *a, int n); +int ASN1_BIT_STRING_check(ASN1_BIT_STRING *a, + unsigned char *flags, int flags_len); + +# ifndef OPENSSL_NO_BIO +int ASN1_BIT_STRING_name_print(BIO *out, ASN1_BIT_STRING *bs, + BIT_STRING_BITNAME *tbl, int indent); +# endif +int ASN1_BIT_STRING_num_asc(char *name, BIT_STRING_BITNAME *tbl); +int ASN1_BIT_STRING_set_asc(ASN1_BIT_STRING *bs, char *name, int value, + BIT_STRING_BITNAME *tbl); + +int i2d_ASN1_BOOLEAN(int a, unsigned char **pp); +int d2i_ASN1_BOOLEAN(int *a, const unsigned char **pp, long length); + +DECLARE_ASN1_FUNCTIONS(ASN1_INTEGER) +int i2c_ASN1_INTEGER(ASN1_INTEGER *a, unsigned char **pp); +ASN1_INTEGER *c2i_ASN1_INTEGER(ASN1_INTEGER **a, const unsigned char **pp, + long length); +ASN1_INTEGER *d2i_ASN1_UINTEGER(ASN1_INTEGER **a, const unsigned char **pp, + long length); +ASN1_INTEGER *ASN1_INTEGER_dup(const ASN1_INTEGER *x); +int ASN1_INTEGER_cmp(const ASN1_INTEGER *x, const ASN1_INTEGER *y); + +DECLARE_ASN1_FUNCTIONS(ASN1_ENUMERATED) + +int ASN1_UTCTIME_check(const ASN1_UTCTIME *a); +ASN1_UTCTIME *ASN1_UTCTIME_set(ASN1_UTCTIME *s, time_t t); +ASN1_UTCTIME *ASN1_UTCTIME_adj(ASN1_UTCTIME *s, time_t t, + int offset_day, long offset_sec); +int ASN1_UTCTIME_set_string(ASN1_UTCTIME *s, const char *str); +int ASN1_UTCTIME_cmp_time_t(const ASN1_UTCTIME *s, time_t t); +# if 0 +time_t ASN1_UTCTIME_get(const ASN1_UTCTIME *s); +# endif + +int ASN1_GENERALIZEDTIME_check(const ASN1_GENERALIZEDTIME *a); +ASN1_GENERALIZEDTIME *ASN1_GENERALIZEDTIME_set(ASN1_GENERALIZEDTIME *s, + time_t t); +ASN1_GENERALIZEDTIME *ASN1_GENERALIZEDTIME_adj(ASN1_GENERALIZEDTIME *s, + time_t t, int offset_day, + long offset_sec); +int ASN1_GENERALIZEDTIME_set_string(ASN1_GENERALIZEDTIME *s, const char *str); +int ASN1_TIME_diff(int *pday, int *psec, + const ASN1_TIME *from, const ASN1_TIME *to); + +DECLARE_ASN1_FUNCTIONS(ASN1_OCTET_STRING) +ASN1_OCTET_STRING *ASN1_OCTET_STRING_dup(const ASN1_OCTET_STRING *a); +int ASN1_OCTET_STRING_cmp(const ASN1_OCTET_STRING *a, + const ASN1_OCTET_STRING *b); +int ASN1_OCTET_STRING_set(ASN1_OCTET_STRING *str, const unsigned char *data, + int len); + +DECLARE_ASN1_FUNCTIONS(ASN1_VISIBLESTRING) +DECLARE_ASN1_FUNCTIONS(ASN1_UNIVERSALSTRING) +DECLARE_ASN1_FUNCTIONS(ASN1_UTF8STRING) +DECLARE_ASN1_FUNCTIONS(ASN1_NULL) +DECLARE_ASN1_FUNCTIONS(ASN1_BMPSTRING) + +int UTF8_getc(const unsigned char *str, int len, unsigned long *val); +int UTF8_putc(unsigned char *str, int len, unsigned long value); + +DECLARE_ASN1_FUNCTIONS_name(ASN1_STRING, ASN1_PRINTABLE) + +DECLARE_ASN1_FUNCTIONS_name(ASN1_STRING, DIRECTORYSTRING) +DECLARE_ASN1_FUNCTIONS_name(ASN1_STRING, DISPLAYTEXT) +DECLARE_ASN1_FUNCTIONS(ASN1_PRINTABLESTRING) +DECLARE_ASN1_FUNCTIONS(ASN1_T61STRING) +DECLARE_ASN1_FUNCTIONS(ASN1_IA5STRING) +DECLARE_ASN1_FUNCTIONS(ASN1_GENERALSTRING) +DECLARE_ASN1_FUNCTIONS(ASN1_UTCTIME) +DECLARE_ASN1_FUNCTIONS(ASN1_GENERALIZEDTIME) +DECLARE_ASN1_FUNCTIONS(ASN1_TIME) + +DECLARE_ASN1_ITEM(ASN1_OCTET_STRING_NDEF) + +ASN1_TIME *ASN1_TIME_set(ASN1_TIME *s, time_t t); +ASN1_TIME *ASN1_TIME_adj(ASN1_TIME *s, time_t t, + int offset_day, long offset_sec); +int ASN1_TIME_check(ASN1_TIME *t); +ASN1_GENERALIZEDTIME *ASN1_TIME_to_generalizedtime(ASN1_TIME *t, ASN1_GENERALIZEDTIME + **out); +int ASN1_TIME_set_string(ASN1_TIME *s, const char *str); + +int i2d_ASN1_SET(STACK_OF(OPENSSL_BLOCK) *a, unsigned char **pp, + i2d_of_void *i2d, int ex_tag, int ex_class, int is_set); +STACK_OF(OPENSSL_BLOCK) *d2i_ASN1_SET(STACK_OF(OPENSSL_BLOCK) **a, + const unsigned char **pp, + long length, d2i_of_void *d2i, + void (*free_func) (OPENSSL_BLOCK), + int ex_tag, int ex_class); + +# ifndef OPENSSL_NO_BIO +int i2a_ASN1_INTEGER(BIO *bp, ASN1_INTEGER *a); +int a2i_ASN1_INTEGER(BIO *bp, ASN1_INTEGER *bs, char *buf, int size); +int i2a_ASN1_ENUMERATED(BIO *bp, ASN1_ENUMERATED *a); +int a2i_ASN1_ENUMERATED(BIO *bp, ASN1_ENUMERATED *bs, char *buf, int size); +int i2a_ASN1_OBJECT(BIO *bp, ASN1_OBJECT *a); +int a2i_ASN1_STRING(BIO *bp, ASN1_STRING *bs, char *buf, int size); +int i2a_ASN1_STRING(BIO *bp, ASN1_STRING *a, int type); +# endif +int i2t_ASN1_OBJECT(char *buf, int buf_len, ASN1_OBJECT *a); + +int a2d_ASN1_OBJECT(unsigned char *out, int olen, const char *buf, int num); +ASN1_OBJECT *ASN1_OBJECT_create(int nid, unsigned char *data, int len, + const char *sn, const char *ln); + +int ASN1_INTEGER_set(ASN1_INTEGER *a, long v); +long ASN1_INTEGER_get(const ASN1_INTEGER *a); +ASN1_INTEGER *BN_to_ASN1_INTEGER(const BIGNUM *bn, ASN1_INTEGER *ai); +BIGNUM *ASN1_INTEGER_to_BN(const ASN1_INTEGER *ai, BIGNUM *bn); + +int ASN1_ENUMERATED_set(ASN1_ENUMERATED *a, long v); +long ASN1_ENUMERATED_get(ASN1_ENUMERATED *a); +ASN1_ENUMERATED *BN_to_ASN1_ENUMERATED(BIGNUM *bn, ASN1_ENUMERATED *ai); +BIGNUM *ASN1_ENUMERATED_to_BN(ASN1_ENUMERATED *ai, BIGNUM *bn); + +/* General */ +/* given a string, return the correct type, max is the maximum length */ +int ASN1_PRINTABLE_type(const unsigned char *s, int max); + +int i2d_ASN1_bytes(ASN1_STRING *a, unsigned char **pp, int tag, int xclass); +ASN1_STRING *d2i_ASN1_bytes(ASN1_STRING **a, const unsigned char **pp, + long length, int Ptag, int Pclass); +unsigned long ASN1_tag2bit(int tag); +/* type is one or more of the B_ASN1_ values. */ +ASN1_STRING *d2i_ASN1_type_bytes(ASN1_STRING **a, const unsigned char **pp, + long length, int type); + +/* PARSING */ +int asn1_Finish(ASN1_CTX *c); +int asn1_const_Finish(ASN1_const_CTX *c); + +/* SPECIALS */ +int ASN1_get_object(const unsigned char **pp, long *plength, int *ptag, + int *pclass, long omax); +int ASN1_check_infinite_end(unsigned char **p, long len); +int ASN1_const_check_infinite_end(const unsigned char **p, long len); +void ASN1_put_object(unsigned char **pp, int constructed, int length, + int tag, int xclass); +int ASN1_put_eoc(unsigned char **pp); +int ASN1_object_size(int constructed, int length, int tag); + +/* Used to implement other functions */ +void *ASN1_dup(i2d_of_void *i2d, d2i_of_void *d2i, void *x); + +# define ASN1_dup_of(type,i2d,d2i,x) \ + ((type*)ASN1_dup(CHECKED_I2D_OF(type, i2d), \ + CHECKED_D2I_OF(type, d2i), \ + CHECKED_PTR_OF(type, x))) + +# define ASN1_dup_of_const(type,i2d,d2i,x) \ + ((type*)ASN1_dup(CHECKED_I2D_OF(const type, i2d), \ + CHECKED_D2I_OF(type, d2i), \ + CHECKED_PTR_OF(const type, x))) + +void *ASN1_item_dup(const ASN1_ITEM *it, void *x); + +/* ASN1 alloc/free macros for when a type is only used internally */ + +# define M_ASN1_new_of(type) (type *)ASN1_item_new(ASN1_ITEM_rptr(type)) +# define M_ASN1_free_of(x, type) \ + ASN1_item_free(CHECKED_PTR_OF(type, x), ASN1_ITEM_rptr(type)) + +# ifndef OPENSSL_NO_FP_API +void *ASN1_d2i_fp(void *(*xnew) (void), d2i_of_void *d2i, FILE *in, void **x); + +# define ASN1_d2i_fp_of(type,xnew,d2i,in,x) \ + ((type*)ASN1_d2i_fp(CHECKED_NEW_OF(type, xnew), \ + CHECKED_D2I_OF(type, d2i), \ + in, \ + CHECKED_PPTR_OF(type, x))) + +void *ASN1_item_d2i_fp(const ASN1_ITEM *it, FILE *in, void *x); +int ASN1_i2d_fp(i2d_of_void *i2d, FILE *out, void *x); + +# define ASN1_i2d_fp_of(type,i2d,out,x) \ + (ASN1_i2d_fp(CHECKED_I2D_OF(type, i2d), \ + out, \ + CHECKED_PTR_OF(type, x))) + +# define ASN1_i2d_fp_of_const(type,i2d,out,x) \ + (ASN1_i2d_fp(CHECKED_I2D_OF(const type, i2d), \ + out, \ + CHECKED_PTR_OF(const type, x))) + +int ASN1_item_i2d_fp(const ASN1_ITEM *it, FILE *out, void *x); +int ASN1_STRING_print_ex_fp(FILE *fp, ASN1_STRING *str, unsigned long flags); +# endif + +int ASN1_STRING_to_UTF8(unsigned char **out, ASN1_STRING *in); + +# ifndef OPENSSL_NO_BIO +void *ASN1_d2i_bio(void *(*xnew) (void), d2i_of_void *d2i, BIO *in, void **x); + +# define ASN1_d2i_bio_of(type,xnew,d2i,in,x) \ + ((type*)ASN1_d2i_bio( CHECKED_NEW_OF(type, xnew), \ + CHECKED_D2I_OF(type, d2i), \ + in, \ + CHECKED_PPTR_OF(type, x))) + +void *ASN1_item_d2i_bio(const ASN1_ITEM *it, BIO *in, void *x); +int ASN1_i2d_bio(i2d_of_void *i2d, BIO *out, unsigned char *x); + +# define ASN1_i2d_bio_of(type,i2d,out,x) \ + (ASN1_i2d_bio(CHECKED_I2D_OF(type, i2d), \ + out, \ + CHECKED_PTR_OF(type, x))) + +# define ASN1_i2d_bio_of_const(type,i2d,out,x) \ + (ASN1_i2d_bio(CHECKED_I2D_OF(const type, i2d), \ + out, \ + CHECKED_PTR_OF(const type, x))) + +int ASN1_item_i2d_bio(const ASN1_ITEM *it, BIO *out, void *x); +int ASN1_UTCTIME_print(BIO *fp, const ASN1_UTCTIME *a); +int ASN1_GENERALIZEDTIME_print(BIO *fp, const ASN1_GENERALIZEDTIME *a); +int ASN1_TIME_print(BIO *fp, const ASN1_TIME *a); +int ASN1_STRING_print(BIO *bp, const ASN1_STRING *v); +int ASN1_STRING_print_ex(BIO *out, ASN1_STRING *str, unsigned long flags); +int ASN1_bn_print(BIO *bp, const char *number, const BIGNUM *num, + unsigned char *buf, int off); +int ASN1_parse(BIO *bp, const unsigned char *pp, long len, int indent); +int ASN1_parse_dump(BIO *bp, const unsigned char *pp, long len, int indent, + int dump); +# endif +const char *ASN1_tag2str(int tag); + +/* Used to load and write netscape format cert */ + +DECLARE_ASN1_FUNCTIONS(NETSCAPE_X509) + +int ASN1_UNIVERSALSTRING_to_string(ASN1_UNIVERSALSTRING *s); + +int ASN1_TYPE_set_octetstring(ASN1_TYPE *a, unsigned char *data, int len); +int ASN1_TYPE_get_octetstring(ASN1_TYPE *a, unsigned char *data, int max_len); +int ASN1_TYPE_set_int_octetstring(ASN1_TYPE *a, long num, + unsigned char *data, int len); +int ASN1_TYPE_get_int_octetstring(ASN1_TYPE *a, long *num, + unsigned char *data, int max_len); + +STACK_OF(OPENSSL_BLOCK) *ASN1_seq_unpack(const unsigned char *buf, int len, + d2i_of_void *d2i, + void (*free_func) (OPENSSL_BLOCK)); +unsigned char *ASN1_seq_pack(STACK_OF(OPENSSL_BLOCK) *safes, i2d_of_void *i2d, + unsigned char **buf, int *len); +void *ASN1_unpack_string(ASN1_STRING *oct, d2i_of_void *d2i); +void *ASN1_item_unpack(ASN1_STRING *oct, const ASN1_ITEM *it); +ASN1_STRING *ASN1_pack_string(void *obj, i2d_of_void *i2d, + ASN1_OCTET_STRING **oct); + +# define ASN1_pack_string_of(type,obj,i2d,oct) \ + (ASN1_pack_string(CHECKED_PTR_OF(type, obj), \ + CHECKED_I2D_OF(type, i2d), \ + oct)) + +ASN1_STRING *ASN1_item_pack(void *obj, const ASN1_ITEM *it, + ASN1_OCTET_STRING **oct); + +void ASN1_STRING_set_default_mask(unsigned long mask); +int ASN1_STRING_set_default_mask_asc(const char *p); +unsigned long ASN1_STRING_get_default_mask(void); +int ASN1_mbstring_copy(ASN1_STRING **out, const unsigned char *in, int len, + int inform, unsigned long mask); +int ASN1_mbstring_ncopy(ASN1_STRING **out, const unsigned char *in, int len, + int inform, unsigned long mask, + long minsize, long maxsize); + +ASN1_STRING *ASN1_STRING_set_by_NID(ASN1_STRING **out, + const unsigned char *in, int inlen, + int inform, int nid); +ASN1_STRING_TABLE *ASN1_STRING_TABLE_get(int nid); +int ASN1_STRING_TABLE_add(int, long, long, unsigned long, unsigned long); +void ASN1_STRING_TABLE_cleanup(void); + +/* ASN1 template functions */ + +/* Old API compatible functions */ +ASN1_VALUE *ASN1_item_new(const ASN1_ITEM *it); +void ASN1_item_free(ASN1_VALUE *val, const ASN1_ITEM *it); +ASN1_VALUE *ASN1_item_d2i(ASN1_VALUE **val, const unsigned char **in, + long len, const ASN1_ITEM *it); +int ASN1_item_i2d(ASN1_VALUE *val, unsigned char **out, const ASN1_ITEM *it); +int ASN1_item_ndef_i2d(ASN1_VALUE *val, unsigned char **out, + const ASN1_ITEM *it); + +void ASN1_add_oid_module(void); + +ASN1_TYPE *ASN1_generate_nconf(char *str, CONF *nconf); +ASN1_TYPE *ASN1_generate_v3(char *str, X509V3_CTX *cnf); + +/* ASN1 Print flags */ + +/* Indicate missing OPTIONAL fields */ +# define ASN1_PCTX_FLAGS_SHOW_ABSENT 0x001 +/* Mark start and end of SEQUENCE */ +# define ASN1_PCTX_FLAGS_SHOW_SEQUENCE 0x002 +/* Mark start and end of SEQUENCE/SET OF */ +# define ASN1_PCTX_FLAGS_SHOW_SSOF 0x004 +/* Show the ASN1 type of primitives */ +# define ASN1_PCTX_FLAGS_SHOW_TYPE 0x008 +/* Don't show ASN1 type of ANY */ +# define ASN1_PCTX_FLAGS_NO_ANY_TYPE 0x010 +/* Don't show ASN1 type of MSTRINGs */ +# define ASN1_PCTX_FLAGS_NO_MSTRING_TYPE 0x020 +/* Don't show field names in SEQUENCE */ +# define ASN1_PCTX_FLAGS_NO_FIELD_NAME 0x040 +/* Show structure names of each SEQUENCE field */ +# define ASN1_PCTX_FLAGS_SHOW_FIELD_STRUCT_NAME 0x080 +/* Don't show structure name even at top level */ +# define ASN1_PCTX_FLAGS_NO_STRUCT_NAME 0x100 + +int ASN1_item_print(BIO *out, ASN1_VALUE *ifld, int indent, + const ASN1_ITEM *it, const ASN1_PCTX *pctx); +ASN1_PCTX *ASN1_PCTX_new(void); +void ASN1_PCTX_free(ASN1_PCTX *p); +unsigned long ASN1_PCTX_get_flags(ASN1_PCTX *p); +void ASN1_PCTX_set_flags(ASN1_PCTX *p, unsigned long flags); +unsigned long ASN1_PCTX_get_nm_flags(ASN1_PCTX *p); +void ASN1_PCTX_set_nm_flags(ASN1_PCTX *p, unsigned long flags); +unsigned long ASN1_PCTX_get_cert_flags(ASN1_PCTX *p); +void ASN1_PCTX_set_cert_flags(ASN1_PCTX *p, unsigned long flags); +unsigned long ASN1_PCTX_get_oid_flags(ASN1_PCTX *p); +void ASN1_PCTX_set_oid_flags(ASN1_PCTX *p, unsigned long flags); +unsigned long ASN1_PCTX_get_str_flags(ASN1_PCTX *p); +void ASN1_PCTX_set_str_flags(ASN1_PCTX *p, unsigned long flags); + +BIO_METHOD *BIO_f_asn1(void); + +BIO *BIO_new_NDEF(BIO *out, ASN1_VALUE *val, const ASN1_ITEM *it); + +int i2d_ASN1_bio_stream(BIO *out, ASN1_VALUE *val, BIO *in, int flags, + const ASN1_ITEM *it); +int PEM_write_bio_ASN1_stream(BIO *out, ASN1_VALUE *val, BIO *in, int flags, + const char *hdr, const ASN1_ITEM *it); +int SMIME_write_ASN1(BIO *bio, ASN1_VALUE *val, BIO *data, int flags, + int ctype_nid, int econt_nid, + STACK_OF(X509_ALGOR) *mdalgs, const ASN1_ITEM *it); +ASN1_VALUE *SMIME_read_ASN1(BIO *bio, BIO **bcont, const ASN1_ITEM *it); +int SMIME_crlf_copy(BIO *in, BIO *out, int flags); +int SMIME_text(BIO *in, BIO *out); + +/* BEGIN ERROR CODES */ +/* + * The following lines are auto generated by the script mkerr.pl. Any changes + * made after this point may be overwritten when the script is next run. + */ +void ERR_load_ASN1_strings(void); + +/* Error codes for the ASN1 functions. */ + +/* Function codes. */ +# define ASN1_F_A2D_ASN1_OBJECT 100 +# define ASN1_F_A2I_ASN1_ENUMERATED 101 +# define ASN1_F_A2I_ASN1_INTEGER 102 +# define ASN1_F_A2I_ASN1_STRING 103 +# define ASN1_F_APPEND_EXP 176 +# define ASN1_F_ASN1_BIT_STRING_SET_BIT 183 +# define ASN1_F_ASN1_CB 177 +# define ASN1_F_ASN1_CHECK_TLEN 104 +# define ASN1_F_ASN1_COLLATE_PRIMITIVE 105 +# define ASN1_F_ASN1_COLLECT 106 +# define ASN1_F_ASN1_D2I_EX_PRIMITIVE 108 +# define ASN1_F_ASN1_D2I_FP 109 +# define ASN1_F_ASN1_D2I_READ_BIO 107 +# define ASN1_F_ASN1_DIGEST 184 +# define ASN1_F_ASN1_DO_ADB 110 +# define ASN1_F_ASN1_DUP 111 +# define ASN1_F_ASN1_ENUMERATED_SET 112 +# define ASN1_F_ASN1_ENUMERATED_TO_BN 113 +# define ASN1_F_ASN1_EX_C2I 204 +# define ASN1_F_ASN1_FIND_END 190 +# define ASN1_F_ASN1_GENERALIZEDTIME_ADJ 216 +# define ASN1_F_ASN1_GENERALIZEDTIME_SET 185 +# define ASN1_F_ASN1_GENERATE_V3 178 +# define ASN1_F_ASN1_GET_OBJECT 114 +# define ASN1_F_ASN1_HEADER_NEW 115 +# define ASN1_F_ASN1_I2D_BIO 116 +# define ASN1_F_ASN1_I2D_FP 117 +# define ASN1_F_ASN1_INTEGER_SET 118 +# define ASN1_F_ASN1_INTEGER_TO_BN 119 +# define ASN1_F_ASN1_ITEM_D2I_FP 206 +# define ASN1_F_ASN1_ITEM_DUP 191 +# define ASN1_F_ASN1_ITEM_EX_COMBINE_NEW 121 +# define ASN1_F_ASN1_ITEM_EX_D2I 120 +# define ASN1_F_ASN1_ITEM_I2D_BIO 192 +# define ASN1_F_ASN1_ITEM_I2D_FP 193 +# define ASN1_F_ASN1_ITEM_PACK 198 +# define ASN1_F_ASN1_ITEM_SIGN 195 +# define ASN1_F_ASN1_ITEM_SIGN_CTX 220 +# define ASN1_F_ASN1_ITEM_UNPACK 199 +# define ASN1_F_ASN1_ITEM_VERIFY 197 +# define ASN1_F_ASN1_MBSTRING_NCOPY 122 +# define ASN1_F_ASN1_OBJECT_NEW 123 +# define ASN1_F_ASN1_OUTPUT_DATA 214 +# define ASN1_F_ASN1_PACK_STRING 124 +# define ASN1_F_ASN1_PCTX_NEW 205 +# define ASN1_F_ASN1_PKCS5_PBE_SET 125 +# define ASN1_F_ASN1_SEQ_PACK 126 +# define ASN1_F_ASN1_SEQ_UNPACK 127 +# define ASN1_F_ASN1_SIGN 128 +# define ASN1_F_ASN1_STR2TYPE 179 +# define ASN1_F_ASN1_STRING_SET 186 +# define ASN1_F_ASN1_STRING_TABLE_ADD 129 +# define ASN1_F_ASN1_STRING_TYPE_NEW 130 +# define ASN1_F_ASN1_TEMPLATE_EX_D2I 132 +# define ASN1_F_ASN1_TEMPLATE_NEW 133 +# define ASN1_F_ASN1_TEMPLATE_NOEXP_D2I 131 +# define ASN1_F_ASN1_TIME_ADJ 217 +# define ASN1_F_ASN1_TIME_SET 175 +# define ASN1_F_ASN1_TYPE_GET_INT_OCTETSTRING 134 +# define ASN1_F_ASN1_TYPE_GET_OCTETSTRING 135 +# define ASN1_F_ASN1_UNPACK_STRING 136 +# define ASN1_F_ASN1_UTCTIME_ADJ 218 +# define ASN1_F_ASN1_UTCTIME_SET 187 +# define ASN1_F_ASN1_VERIFY 137 +# define ASN1_F_B64_READ_ASN1 209 +# define ASN1_F_B64_WRITE_ASN1 210 +# define ASN1_F_BIO_NEW_NDEF 208 +# define ASN1_F_BITSTR_CB 180 +# define ASN1_F_BN_TO_ASN1_ENUMERATED 138 +# define ASN1_F_BN_TO_ASN1_INTEGER 139 +# define ASN1_F_C2I_ASN1_BIT_STRING 189 +# define ASN1_F_C2I_ASN1_INTEGER 194 +# define ASN1_F_C2I_ASN1_OBJECT 196 +# define ASN1_F_COLLECT_DATA 140 +# define ASN1_F_D2I_ASN1_BIT_STRING 141 +# define ASN1_F_D2I_ASN1_BOOLEAN 142 +# define ASN1_F_D2I_ASN1_BYTES 143 +# define ASN1_F_D2I_ASN1_GENERALIZEDTIME 144 +# define ASN1_F_D2I_ASN1_HEADER 145 +# define ASN1_F_D2I_ASN1_INTEGER 146 +# define ASN1_F_D2I_ASN1_OBJECT 147 +# define ASN1_F_D2I_ASN1_SET 148 +# define ASN1_F_D2I_ASN1_TYPE_BYTES 149 +# define ASN1_F_D2I_ASN1_UINTEGER 150 +# define ASN1_F_D2I_ASN1_UTCTIME 151 +# define ASN1_F_D2I_AUTOPRIVATEKEY 207 +# define ASN1_F_D2I_NETSCAPE_RSA 152 +# define ASN1_F_D2I_NETSCAPE_RSA_2 153 +# define ASN1_F_D2I_PRIVATEKEY 154 +# define ASN1_F_D2I_PUBLICKEY 155 +# define ASN1_F_D2I_RSA_NET 200 +# define ASN1_F_D2I_RSA_NET_2 201 +# define ASN1_F_D2I_X509 156 +# define ASN1_F_D2I_X509_CINF 157 +# define ASN1_F_D2I_X509_PKEY 159 +# define ASN1_F_I2D_ASN1_BIO_STREAM 211 +# define ASN1_F_I2D_ASN1_SET 188 +# define ASN1_F_I2D_ASN1_TIME 160 +# define ASN1_F_I2D_DSA_PUBKEY 161 +# define ASN1_F_I2D_EC_PUBKEY 181 +# define ASN1_F_I2D_PRIVATEKEY 163 +# define ASN1_F_I2D_PUBLICKEY 164 +# define ASN1_F_I2D_RSA_NET 162 +# define ASN1_F_I2D_RSA_PUBKEY 165 +# define ASN1_F_LONG_C2I 166 +# define ASN1_F_OID_MODULE_INIT 174 +# define ASN1_F_PARSE_TAGGING 182 +# define ASN1_F_PKCS5_PBE2_SET_IV 167 +# define ASN1_F_PKCS5_PBE_SET 202 +# define ASN1_F_PKCS5_PBE_SET0_ALGOR 215 +# define ASN1_F_PKCS5_PBKDF2_SET 219 +# define ASN1_F_SMIME_READ_ASN1 212 +# define ASN1_F_SMIME_TEXT 213 +# define ASN1_F_X509_CINF_NEW 168 +# define ASN1_F_X509_CRL_ADD0_REVOKED 169 +# define ASN1_F_X509_INFO_NEW 170 +# define ASN1_F_X509_NAME_ENCODE 203 +# define ASN1_F_X509_NAME_EX_D2I 158 +# define ASN1_F_X509_NAME_EX_NEW 171 +# define ASN1_F_X509_NEW 172 +# define ASN1_F_X509_PKEY_NEW 173 + +/* Reason codes. */ +# define ASN1_R_ADDING_OBJECT 171 +# define ASN1_R_ASN1_PARSE_ERROR 203 +# define ASN1_R_ASN1_SIG_PARSE_ERROR 204 +# define ASN1_R_AUX_ERROR 100 +# define ASN1_R_BAD_CLASS 101 +# define ASN1_R_BAD_OBJECT_HEADER 102 +# define ASN1_R_BAD_PASSWORD_READ 103 +# define ASN1_R_BAD_TAG 104 +# define ASN1_R_BMPSTRING_IS_WRONG_LENGTH 214 +# define ASN1_R_BN_LIB 105 +# define ASN1_R_BOOLEAN_IS_WRONG_LENGTH 106 +# define ASN1_R_BUFFER_TOO_SMALL 107 +# define ASN1_R_CIPHER_HAS_NO_OBJECT_IDENTIFIER 108 +# define ASN1_R_CONTEXT_NOT_INITIALISED 217 +# define ASN1_R_DATA_IS_WRONG 109 +# define ASN1_R_DECODE_ERROR 110 +# define ASN1_R_DECODING_ERROR 111 +# define ASN1_R_DEPTH_EXCEEDED 174 +# define ASN1_R_DIGEST_AND_KEY_TYPE_NOT_SUPPORTED 198 +# define ASN1_R_ENCODE_ERROR 112 +# define ASN1_R_ERROR_GETTING_TIME 173 +# define ASN1_R_ERROR_LOADING_SECTION 172 +# define ASN1_R_ERROR_PARSING_SET_ELEMENT 113 +# define ASN1_R_ERROR_SETTING_CIPHER_PARAMS 114 +# define ASN1_R_EXPECTING_AN_INTEGER 115 +# define ASN1_R_EXPECTING_AN_OBJECT 116 +# define ASN1_R_EXPECTING_A_BOOLEAN 117 +# define ASN1_R_EXPECTING_A_TIME 118 +# define ASN1_R_EXPLICIT_LENGTH_MISMATCH 119 +# define ASN1_R_EXPLICIT_TAG_NOT_CONSTRUCTED 120 +# define ASN1_R_FIELD_MISSING 121 +# define ASN1_R_FIRST_NUM_TOO_LARGE 122 +# define ASN1_R_HEADER_TOO_LONG 123 +# define ASN1_R_ILLEGAL_BITSTRING_FORMAT 175 +# define ASN1_R_ILLEGAL_BOOLEAN 176 +# define ASN1_R_ILLEGAL_CHARACTERS 124 +# define ASN1_R_ILLEGAL_FORMAT 177 +# define ASN1_R_ILLEGAL_HEX 178 +# define ASN1_R_ILLEGAL_IMPLICIT_TAG 179 +# define ASN1_R_ILLEGAL_INTEGER 180 +# define ASN1_R_ILLEGAL_NESTED_TAGGING 181 +# define ASN1_R_ILLEGAL_NULL 125 +# define ASN1_R_ILLEGAL_NULL_VALUE 182 +# define ASN1_R_ILLEGAL_OBJECT 183 +# define ASN1_R_ILLEGAL_OPTIONAL_ANY 126 +# define ASN1_R_ILLEGAL_OPTIONS_ON_ITEM_TEMPLATE 170 +# define ASN1_R_ILLEGAL_TAGGED_ANY 127 +# define ASN1_R_ILLEGAL_TIME_VALUE 184 +# define ASN1_R_INTEGER_NOT_ASCII_FORMAT 185 +# define ASN1_R_INTEGER_TOO_LARGE_FOR_LONG 128 +# define ASN1_R_INVALID_BIT_STRING_BITS_LEFT 220 +# define ASN1_R_INVALID_BMPSTRING_LENGTH 129 +# define ASN1_R_INVALID_DIGIT 130 +# define ASN1_R_INVALID_MIME_TYPE 205 +# define ASN1_R_INVALID_MODIFIER 186 +# define ASN1_R_INVALID_NUMBER 187 +# define ASN1_R_INVALID_OBJECT_ENCODING 216 +# define ASN1_R_INVALID_SEPARATOR 131 +# define ASN1_R_INVALID_TIME_FORMAT 132 +# define ASN1_R_INVALID_UNIVERSALSTRING_LENGTH 133 +# define ASN1_R_INVALID_UTF8STRING 134 +# define ASN1_R_IV_TOO_LARGE 135 +# define ASN1_R_LENGTH_ERROR 136 +# define ASN1_R_LIST_ERROR 188 +# define ASN1_R_MIME_NO_CONTENT_TYPE 206 +# define ASN1_R_MIME_PARSE_ERROR 207 +# define ASN1_R_MIME_SIG_PARSE_ERROR 208 +# define ASN1_R_MISSING_EOC 137 +# define ASN1_R_MISSING_SECOND_NUMBER 138 +# define ASN1_R_MISSING_VALUE 189 +# define ASN1_R_MSTRING_NOT_UNIVERSAL 139 +# define ASN1_R_MSTRING_WRONG_TAG 140 +# define ASN1_R_NESTED_ASN1_STRING 197 +# define ASN1_R_NON_HEX_CHARACTERS 141 +# define ASN1_R_NOT_ASCII_FORMAT 190 +# define ASN1_R_NOT_ENOUGH_DATA 142 +# define ASN1_R_NO_CONTENT_TYPE 209 +# define ASN1_R_NO_DEFAULT_DIGEST 201 +# define ASN1_R_NO_MATCHING_CHOICE_TYPE 143 +# define ASN1_R_NO_MULTIPART_BODY_FAILURE 210 +# define ASN1_R_NO_MULTIPART_BOUNDARY 211 +# define ASN1_R_NO_SIG_CONTENT_TYPE 212 +# define ASN1_R_NULL_IS_WRONG_LENGTH 144 +# define ASN1_R_OBJECT_NOT_ASCII_FORMAT 191 +# define ASN1_R_ODD_NUMBER_OF_CHARS 145 +# define ASN1_R_PRIVATE_KEY_HEADER_MISSING 146 +# define ASN1_R_SECOND_NUMBER_TOO_LARGE 147 +# define ASN1_R_SEQUENCE_LENGTH_MISMATCH 148 +# define ASN1_R_SEQUENCE_NOT_CONSTRUCTED 149 +# define ASN1_R_SEQUENCE_OR_SET_NEEDS_CONFIG 192 +# define ASN1_R_SHORT_LINE 150 +# define ASN1_R_SIG_INVALID_MIME_TYPE 213 +# define ASN1_R_STREAMING_NOT_SUPPORTED 202 +# define ASN1_R_STRING_TOO_LONG 151 +# define ASN1_R_STRING_TOO_SHORT 152 +# define ASN1_R_TAG_VALUE_TOO_HIGH 153 +# define ASN1_R_THE_ASN1_OBJECT_IDENTIFIER_IS_NOT_KNOWN_FOR_THIS_MD 154 +# define ASN1_R_TIME_NOT_ASCII_FORMAT 193 +# define ASN1_R_TOO_LONG 155 +# define ASN1_R_TYPE_NOT_CONSTRUCTED 156 +# define ASN1_R_TYPE_NOT_PRIMITIVE 218 +# define ASN1_R_UNABLE_TO_DECODE_RSA_KEY 157 +# define ASN1_R_UNABLE_TO_DECODE_RSA_PRIVATE_KEY 158 +# define ASN1_R_UNEXPECTED_EOC 159 +# define ASN1_R_UNIVERSALSTRING_IS_WRONG_LENGTH 215 +# define ASN1_R_UNKNOWN_FORMAT 160 +# define ASN1_R_UNKNOWN_MESSAGE_DIGEST_ALGORITHM 161 +# define ASN1_R_UNKNOWN_OBJECT_TYPE 162 +# define ASN1_R_UNKNOWN_PUBLIC_KEY_TYPE 163 +# define ASN1_R_UNKNOWN_SIGNATURE_ALGORITHM 199 +# define ASN1_R_UNKNOWN_TAG 194 +# define ASN1_R_UNKOWN_FORMAT 195 +# define ASN1_R_UNSUPPORTED_ANY_DEFINED_BY_TYPE 164 +# define ASN1_R_UNSUPPORTED_CIPHER 165 +# define ASN1_R_UNSUPPORTED_ENCRYPTION_ALGORITHM 166 +# define ASN1_R_UNSUPPORTED_PUBLIC_KEY_TYPE 167 +# define ASN1_R_UNSUPPORTED_TYPE 196 +# define ASN1_R_WRONG_PUBLIC_KEY_TYPE 200 +# define ASN1_R_WRONG_TAG 168 +# define ASN1_R_WRONG_TYPE 169 + +#ifdef __cplusplus +} +#endif +#endif diff --git a/ext/openssl-win32/inc32/openssl/bio.h b/ext/openssl-win32/inc32/openssl/bio.h new file mode 100644 index 00000000..60083bfd --- /dev/null +++ b/ext/openssl-win32/inc32/openssl/bio.h @@ -0,0 +1,878 @@ +/* crypto/bio/bio.h */ +/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) + * All rights reserved. + * + * This package is an SSL implementation written + * by Eric Young (eay@cryptsoft.com). + * The implementation was written so as to conform with Netscapes SSL. + * + * This library is free for commercial and non-commercial use as long as + * the following conditions are aheared to. The following conditions + * apply to all code found in this distribution, be it the RC4, RSA, + * lhash, DES, etc., code; not just the SSL code. The SSL documentation + * included with this distribution is covered by the same copyright terms + * except that the holder is Tim Hudson (tjh@cryptsoft.com). + * + * Copyright remains Eric Young's, and as such any Copyright notices in + * the code are not to be removed. + * If this package is used in a product, Eric Young should be given attribution + * as the author of the parts of the library used. + * This can be in the form of a textual message at program startup or + * in documentation (online or textual) provided with the package. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * "This product includes cryptographic software written by + * Eric Young (eay@cryptsoft.com)" + * The word 'cryptographic' can be left out if the rouines from the library + * being used are not cryptographic related :-). + * 4. If you include any Windows specific code (or a derivative thereof) from + * the apps directory (application code) you must include an acknowledgement: + * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" + * + * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * The licence and distribution terms for any publically available version or + * derivative of this code cannot be changed. i.e. this code cannot simply be + * copied and put under another distribution licence + * [including the GNU Public Licence.] + */ + +#ifndef HEADER_BIO_H +# define HEADER_BIO_H + +# include + +# ifndef OPENSSL_NO_FP_API +# include +# endif +# include + +# include + +# ifndef OPENSSL_NO_SCTP +# ifndef OPENSSL_SYS_VMS +# include +# else +# include +# endif +# endif + +#ifdef __cplusplus +extern "C" { +#endif + +/* These are the 'types' of BIOs */ +# define BIO_TYPE_NONE 0 +# define BIO_TYPE_MEM (1|0x0400) +# define BIO_TYPE_FILE (2|0x0400) + +# define BIO_TYPE_FD (4|0x0400|0x0100) +# define BIO_TYPE_SOCKET (5|0x0400|0x0100) +# define BIO_TYPE_NULL (6|0x0400) +# define BIO_TYPE_SSL (7|0x0200) +# define BIO_TYPE_MD (8|0x0200)/* passive filter */ +# define BIO_TYPE_BUFFER (9|0x0200)/* filter */ +# define BIO_TYPE_CIPHER (10|0x0200)/* filter */ +# define BIO_TYPE_BASE64 (11|0x0200)/* filter */ +# define BIO_TYPE_CONNECT (12|0x0400|0x0100)/* socket - connect */ +# define BIO_TYPE_ACCEPT (13|0x0400|0x0100)/* socket for accept */ +# define BIO_TYPE_PROXY_CLIENT (14|0x0200)/* client proxy BIO */ +# define BIO_TYPE_PROXY_SERVER (15|0x0200)/* server proxy BIO */ +# define BIO_TYPE_NBIO_TEST (16|0x0200)/* server proxy BIO */ +# define BIO_TYPE_NULL_FILTER (17|0x0200) +# define BIO_TYPE_BER (18|0x0200)/* BER -> bin filter */ +# define BIO_TYPE_BIO (19|0x0400)/* (half a) BIO pair */ +# define BIO_TYPE_LINEBUFFER (20|0x0200)/* filter */ +# define BIO_TYPE_DGRAM (21|0x0400|0x0100) +# ifndef OPENSSL_NO_SCTP +# define BIO_TYPE_DGRAM_SCTP (24|0x0400|0x0100) +# endif +# define BIO_TYPE_ASN1 (22|0x0200)/* filter */ +# define BIO_TYPE_COMP (23|0x0200)/* filter */ + +# define BIO_TYPE_DESCRIPTOR 0x0100/* socket, fd, connect or accept */ +# define BIO_TYPE_FILTER 0x0200 +# define BIO_TYPE_SOURCE_SINK 0x0400 + +/* + * BIO_FILENAME_READ|BIO_CLOSE to open or close on free. + * BIO_set_fp(in,stdin,BIO_NOCLOSE); + */ +# define BIO_NOCLOSE 0x00 +# define BIO_CLOSE 0x01 + +/* + * These are used in the following macros and are passed to BIO_ctrl() + */ +# define BIO_CTRL_RESET 1/* opt - rewind/zero etc */ +# define BIO_CTRL_EOF 2/* opt - are we at the eof */ +# define BIO_CTRL_INFO 3/* opt - extra tit-bits */ +# define BIO_CTRL_SET 4/* man - set the 'IO' type */ +# define BIO_CTRL_GET 5/* man - get the 'IO' type */ +# define BIO_CTRL_PUSH 6/* opt - internal, used to signify change */ +# define BIO_CTRL_POP 7/* opt - internal, used to signify change */ +# define BIO_CTRL_GET_CLOSE 8/* man - set the 'close' on free */ +# define BIO_CTRL_SET_CLOSE 9/* man - set the 'close' on free */ +# define BIO_CTRL_PENDING 10/* opt - is their more data buffered */ +# define BIO_CTRL_FLUSH 11/* opt - 'flush' buffered output */ +# define BIO_CTRL_DUP 12/* man - extra stuff for 'duped' BIO */ +# define BIO_CTRL_WPENDING 13/* opt - number of bytes still to write */ +/* callback is int cb(BIO *bio,state,ret); */ +# define BIO_CTRL_SET_CALLBACK 14/* opt - set callback function */ +# define BIO_CTRL_GET_CALLBACK 15/* opt - set callback function */ + +# define BIO_CTRL_SET_FILENAME 30/* BIO_s_file special */ + +/* dgram BIO stuff */ +# define BIO_CTRL_DGRAM_CONNECT 31/* BIO dgram special */ +# define BIO_CTRL_DGRAM_SET_CONNECTED 32/* allow for an externally connected + * socket to be passed in */ +# define BIO_CTRL_DGRAM_SET_RECV_TIMEOUT 33/* setsockopt, essentially */ +# define BIO_CTRL_DGRAM_GET_RECV_TIMEOUT 34/* getsockopt, essentially */ +# define BIO_CTRL_DGRAM_SET_SEND_TIMEOUT 35/* setsockopt, essentially */ +# define BIO_CTRL_DGRAM_GET_SEND_TIMEOUT 36/* getsockopt, essentially */ + +# define BIO_CTRL_DGRAM_GET_RECV_TIMER_EXP 37/* flag whether the last */ +# define BIO_CTRL_DGRAM_GET_SEND_TIMER_EXP 38/* I/O operation tiemd out */ + +/* #ifdef IP_MTU_DISCOVER */ +# define BIO_CTRL_DGRAM_MTU_DISCOVER 39/* set DF bit on egress packets */ +/* #endif */ + +# define BIO_CTRL_DGRAM_QUERY_MTU 40/* as kernel for current MTU */ +# define BIO_CTRL_DGRAM_GET_FALLBACK_MTU 47 +# define BIO_CTRL_DGRAM_GET_MTU 41/* get cached value for MTU */ +# define BIO_CTRL_DGRAM_SET_MTU 42/* set cached value for MTU. + * want to use this if asking + * the kernel fails */ + +# define BIO_CTRL_DGRAM_MTU_EXCEEDED 43/* check whether the MTU was + * exceed in the previous write + * operation */ + +# define BIO_CTRL_DGRAM_GET_PEER 46 +# define BIO_CTRL_DGRAM_SET_PEER 44/* Destination for the data */ + +# define BIO_CTRL_DGRAM_SET_NEXT_TIMEOUT 45/* Next DTLS handshake timeout + * to adjust socket timeouts */ +# define BIO_CTRL_DGRAM_SET_DONT_FRAG 48 + +# define BIO_CTRL_DGRAM_GET_MTU_OVERHEAD 49 + +# ifndef OPENSSL_NO_SCTP +/* SCTP stuff */ +# define BIO_CTRL_DGRAM_SCTP_SET_IN_HANDSHAKE 50 +# define BIO_CTRL_DGRAM_SCTP_ADD_AUTH_KEY 51 +# define BIO_CTRL_DGRAM_SCTP_NEXT_AUTH_KEY 52 +# define BIO_CTRL_DGRAM_SCTP_AUTH_CCS_RCVD 53 +# define BIO_CTRL_DGRAM_SCTP_GET_SNDINFO 60 +# define BIO_CTRL_DGRAM_SCTP_SET_SNDINFO 61 +# define BIO_CTRL_DGRAM_SCTP_GET_RCVINFO 62 +# define BIO_CTRL_DGRAM_SCTP_SET_RCVINFO 63 +# define BIO_CTRL_DGRAM_SCTP_GET_PRINFO 64 +# define BIO_CTRL_DGRAM_SCTP_SET_PRINFO 65 +# define BIO_CTRL_DGRAM_SCTP_SAVE_SHUTDOWN 70 +# endif + +/* modifiers */ +# define BIO_FP_READ 0x02 +# define BIO_FP_WRITE 0x04 +# define BIO_FP_APPEND 0x08 +# define BIO_FP_TEXT 0x10 + +# define BIO_FLAGS_READ 0x01 +# define BIO_FLAGS_WRITE 0x02 +# define BIO_FLAGS_IO_SPECIAL 0x04 +# define BIO_FLAGS_RWS (BIO_FLAGS_READ|BIO_FLAGS_WRITE|BIO_FLAGS_IO_SPECIAL) +# define BIO_FLAGS_SHOULD_RETRY 0x08 +# ifndef BIO_FLAGS_UPLINK +/* + * "UPLINK" flag denotes file descriptors provided by application. It + * defaults to 0, as most platforms don't require UPLINK interface. + */ +# define BIO_FLAGS_UPLINK 0 +# endif + +/* Used in BIO_gethostbyname() */ +# define BIO_GHBN_CTRL_HITS 1 +# define BIO_GHBN_CTRL_MISSES 2 +# define BIO_GHBN_CTRL_CACHE_SIZE 3 +# define BIO_GHBN_CTRL_GET_ENTRY 4 +# define BIO_GHBN_CTRL_FLUSH 5 + +/* Mostly used in the SSL BIO */ +/*- + * Not used anymore + * #define BIO_FLAGS_PROTOCOL_DELAYED_READ 0x10 + * #define BIO_FLAGS_PROTOCOL_DELAYED_WRITE 0x20 + * #define BIO_FLAGS_PROTOCOL_STARTUP 0x40 + */ + +# define BIO_FLAGS_BASE64_NO_NL 0x100 + +/* + * This is used with memory BIOs: it means we shouldn't free up or change the + * data in any way. + */ +# define BIO_FLAGS_MEM_RDONLY 0x200 + +typedef struct bio_st BIO; + +void BIO_set_flags(BIO *b, int flags); +int BIO_test_flags(const BIO *b, int flags); +void BIO_clear_flags(BIO *b, int flags); + +# define BIO_get_flags(b) BIO_test_flags(b, ~(0x0)) +# define BIO_set_retry_special(b) \ + BIO_set_flags(b, (BIO_FLAGS_IO_SPECIAL|BIO_FLAGS_SHOULD_RETRY)) +# define BIO_set_retry_read(b) \ + BIO_set_flags(b, (BIO_FLAGS_READ|BIO_FLAGS_SHOULD_RETRY)) +# define BIO_set_retry_write(b) \ + BIO_set_flags(b, (BIO_FLAGS_WRITE|BIO_FLAGS_SHOULD_RETRY)) + +/* These are normally used internally in BIOs */ +# define BIO_clear_retry_flags(b) \ + BIO_clear_flags(b, (BIO_FLAGS_RWS|BIO_FLAGS_SHOULD_RETRY)) +# define BIO_get_retry_flags(b) \ + BIO_test_flags(b, (BIO_FLAGS_RWS|BIO_FLAGS_SHOULD_RETRY)) + +/* These should be used by the application to tell why we should retry */ +# define BIO_should_read(a) BIO_test_flags(a, BIO_FLAGS_READ) +# define BIO_should_write(a) BIO_test_flags(a, BIO_FLAGS_WRITE) +# define BIO_should_io_special(a) BIO_test_flags(a, BIO_FLAGS_IO_SPECIAL) +# define BIO_retry_type(a) BIO_test_flags(a, BIO_FLAGS_RWS) +# define BIO_should_retry(a) BIO_test_flags(a, BIO_FLAGS_SHOULD_RETRY) + +/* + * The next three are used in conjunction with the BIO_should_io_special() + * condition. After this returns true, BIO *BIO_get_retry_BIO(BIO *bio, int + * *reason); will walk the BIO stack and return the 'reason' for the special + * and the offending BIO. Given a BIO, BIO_get_retry_reason(bio) will return + * the code. + */ +/* + * Returned from the SSL bio when the certificate retrieval code had an error + */ +# define BIO_RR_SSL_X509_LOOKUP 0x01 +/* Returned from the connect BIO when a connect would have blocked */ +# define BIO_RR_CONNECT 0x02 +/* Returned from the accept BIO when an accept would have blocked */ +# define BIO_RR_ACCEPT 0x03 + +/* These are passed by the BIO callback */ +# define BIO_CB_FREE 0x01 +# define BIO_CB_READ 0x02 +# define BIO_CB_WRITE 0x03 +# define BIO_CB_PUTS 0x04 +# define BIO_CB_GETS 0x05 +# define BIO_CB_CTRL 0x06 + +/* + * The callback is called before and after the underling operation, The + * BIO_CB_RETURN flag indicates if it is after the call + */ +# define BIO_CB_RETURN 0x80 +# define BIO_CB_return(a) ((a)|BIO_CB_RETURN)) +# define BIO_cb_pre(a) (!((a)&BIO_CB_RETURN)) +# define BIO_cb_post(a) ((a)&BIO_CB_RETURN) + +long (*BIO_get_callback(const BIO *b)) (struct bio_st *, int, const char *, + int, long, long); +void BIO_set_callback(BIO *b, + long (*callback) (struct bio_st *, int, const char *, + int, long, long)); +char *BIO_get_callback_arg(const BIO *b); +void BIO_set_callback_arg(BIO *b, char *arg); + +const char *BIO_method_name(const BIO *b); +int BIO_method_type(const BIO *b); + +typedef void bio_info_cb (struct bio_st *, int, const char *, int, long, + long); + +typedef struct bio_method_st { + int type; + const char *name; + int (*bwrite) (BIO *, const char *, int); + int (*bread) (BIO *, char *, int); + int (*bputs) (BIO *, const char *); + int (*bgets) (BIO *, char *, int); + long (*ctrl) (BIO *, int, long, void *); + int (*create) (BIO *); + int (*destroy) (BIO *); + long (*callback_ctrl) (BIO *, int, bio_info_cb *); +} BIO_METHOD; + +struct bio_st { + BIO_METHOD *method; + /* bio, mode, argp, argi, argl, ret */ + long (*callback) (struct bio_st *, int, const char *, int, long, long); + char *cb_arg; /* first argument for the callback */ + int init; + int shutdown; + int flags; /* extra storage */ + int retry_reason; + int num; + void *ptr; + struct bio_st *next_bio; /* used by filter BIOs */ + struct bio_st *prev_bio; /* used by filter BIOs */ + int references; + unsigned long num_read; + unsigned long num_write; + CRYPTO_EX_DATA ex_data; +}; + +DECLARE_STACK_OF(BIO) + +typedef struct bio_f_buffer_ctx_struct { + /*- + * Buffers are setup like this: + * + * <---------------------- size -----------------------> + * +---------------------------------------------------+ + * | consumed | remaining | free space | + * +---------------------------------------------------+ + * <-- off --><------- len -------> + */ + /*- BIO *bio; *//* + * this is now in the BIO struct + */ + int ibuf_size; /* how big is the input buffer */ + int obuf_size; /* how big is the output buffer */ + char *ibuf; /* the char array */ + int ibuf_len; /* how many bytes are in it */ + int ibuf_off; /* write/read offset */ + char *obuf; /* the char array */ + int obuf_len; /* how many bytes are in it */ + int obuf_off; /* write/read offset */ +} BIO_F_BUFFER_CTX; + +/* Prefix and suffix callback in ASN1 BIO */ +typedef int asn1_ps_func (BIO *b, unsigned char **pbuf, int *plen, + void *parg); + +# ifndef OPENSSL_NO_SCTP +/* SCTP parameter structs */ +struct bio_dgram_sctp_sndinfo { + uint16_t snd_sid; + uint16_t snd_flags; + uint32_t snd_ppid; + uint32_t snd_context; +}; + +struct bio_dgram_sctp_rcvinfo { + uint16_t rcv_sid; + uint16_t rcv_ssn; + uint16_t rcv_flags; + uint32_t rcv_ppid; + uint32_t rcv_tsn; + uint32_t rcv_cumtsn; + uint32_t rcv_context; +}; + +struct bio_dgram_sctp_prinfo { + uint16_t pr_policy; + uint32_t pr_value; +}; +# endif + +/* connect BIO stuff */ +# define BIO_CONN_S_BEFORE 1 +# define BIO_CONN_S_GET_IP 2 +# define BIO_CONN_S_GET_PORT 3 +# define BIO_CONN_S_CREATE_SOCKET 4 +# define BIO_CONN_S_CONNECT 5 +# define BIO_CONN_S_OK 6 +# define BIO_CONN_S_BLOCKED_CONNECT 7 +# define BIO_CONN_S_NBIO 8 +/* + * #define BIO_CONN_get_param_hostname BIO_ctrl + */ + +# define BIO_C_SET_CONNECT 100 +# define BIO_C_DO_STATE_MACHINE 101 +# define BIO_C_SET_NBIO 102 +# define BIO_C_SET_PROXY_PARAM 103 +# define BIO_C_SET_FD 104 +# define BIO_C_GET_FD 105 +# define BIO_C_SET_FILE_PTR 106 +# define BIO_C_GET_FILE_PTR 107 +# define BIO_C_SET_FILENAME 108 +# define BIO_C_SET_SSL 109 +# define BIO_C_GET_SSL 110 +# define BIO_C_SET_MD 111 +# define BIO_C_GET_MD 112 +# define BIO_C_GET_CIPHER_STATUS 113 +# define BIO_C_SET_BUF_MEM 114 +# define BIO_C_GET_BUF_MEM_PTR 115 +# define BIO_C_GET_BUFF_NUM_LINES 116 +# define BIO_C_SET_BUFF_SIZE 117 +# define BIO_C_SET_ACCEPT 118 +# define BIO_C_SSL_MODE 119 +# define BIO_C_GET_MD_CTX 120 +# define BIO_C_GET_PROXY_PARAM 121 +# define BIO_C_SET_BUFF_READ_DATA 122/* data to read first */ +# define BIO_C_GET_CONNECT 123 +# define BIO_C_GET_ACCEPT 124 +# define BIO_C_SET_SSL_RENEGOTIATE_BYTES 125 +# define BIO_C_GET_SSL_NUM_RENEGOTIATES 126 +# define BIO_C_SET_SSL_RENEGOTIATE_TIMEOUT 127 +# define BIO_C_FILE_SEEK 128 +# define BIO_C_GET_CIPHER_CTX 129 +# define BIO_C_SET_BUF_MEM_EOF_RETURN 130/* return end of input + * value */ +# define BIO_C_SET_BIND_MODE 131 +# define BIO_C_GET_BIND_MODE 132 +# define BIO_C_FILE_TELL 133 +# define BIO_C_GET_SOCKS 134 +# define BIO_C_SET_SOCKS 135 + +# define BIO_C_SET_WRITE_BUF_SIZE 136/* for BIO_s_bio */ +# define BIO_C_GET_WRITE_BUF_SIZE 137 +# define BIO_C_MAKE_BIO_PAIR 138 +# define BIO_C_DESTROY_BIO_PAIR 139 +# define BIO_C_GET_WRITE_GUARANTEE 140 +# define BIO_C_GET_READ_REQUEST 141 +# define BIO_C_SHUTDOWN_WR 142 +# define BIO_C_NREAD0 143 +# define BIO_C_NREAD 144 +# define BIO_C_NWRITE0 145 +# define BIO_C_NWRITE 146 +# define BIO_C_RESET_READ_REQUEST 147 +# define BIO_C_SET_MD_CTX 148 + +# define BIO_C_SET_PREFIX 149 +# define BIO_C_GET_PREFIX 150 +# define BIO_C_SET_SUFFIX 151 +# define BIO_C_GET_SUFFIX 152 + +# define BIO_C_SET_EX_ARG 153 +# define BIO_C_GET_EX_ARG 154 + +# define BIO_set_app_data(s,arg) BIO_set_ex_data(s,0,arg) +# define BIO_get_app_data(s) BIO_get_ex_data(s,0) + +/* BIO_s_connect() and BIO_s_socks4a_connect() */ +# define BIO_set_conn_hostname(b,name) BIO_ctrl(b,BIO_C_SET_CONNECT,0,(char *)name) +# define BIO_set_conn_port(b,port) BIO_ctrl(b,BIO_C_SET_CONNECT,1,(char *)port) +# define BIO_set_conn_ip(b,ip) BIO_ctrl(b,BIO_C_SET_CONNECT,2,(char *)ip) +# define BIO_set_conn_int_port(b,port) BIO_ctrl(b,BIO_C_SET_CONNECT,3,(char *)port) +# define BIO_get_conn_hostname(b) BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,0) +# define BIO_get_conn_port(b) BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,1) +# define BIO_get_conn_ip(b) BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,2) +# define BIO_get_conn_int_port(b) BIO_int_ctrl(b,BIO_C_GET_CONNECT,3,0) + +# define BIO_set_nbio(b,n) BIO_ctrl(b,BIO_C_SET_NBIO,(n),NULL) + +/* BIO_s_accept_socket() */ +# define BIO_set_accept_port(b,name) BIO_ctrl(b,BIO_C_SET_ACCEPT,0,(char *)name) +# define BIO_get_accept_port(b) BIO_ptr_ctrl(b,BIO_C_GET_ACCEPT,0) +/* #define BIO_set_nbio(b,n) BIO_ctrl(b,BIO_C_SET_NBIO,(n),NULL) */ +# define BIO_set_nbio_accept(b,n) BIO_ctrl(b,BIO_C_SET_ACCEPT,1,(n)?(void *)"a":NULL) +# define BIO_set_accept_bios(b,bio) BIO_ctrl(b,BIO_C_SET_ACCEPT,2,(char *)bio) + +# define BIO_BIND_NORMAL 0 +# define BIO_BIND_REUSEADDR_IF_UNUSED 1 +# define BIO_BIND_REUSEADDR 2 +# define BIO_set_bind_mode(b,mode) BIO_ctrl(b,BIO_C_SET_BIND_MODE,mode,NULL) +# define BIO_get_bind_mode(b,mode) BIO_ctrl(b,BIO_C_GET_BIND_MODE,0,NULL) + +# define BIO_do_connect(b) BIO_do_handshake(b) +# define BIO_do_accept(b) BIO_do_handshake(b) +# define BIO_do_handshake(b) BIO_ctrl(b,BIO_C_DO_STATE_MACHINE,0,NULL) + +/* BIO_s_proxy_client() */ +# define BIO_set_url(b,url) BIO_ctrl(b,BIO_C_SET_PROXY_PARAM,0,(char *)(url)) +# define BIO_set_proxies(b,p) BIO_ctrl(b,BIO_C_SET_PROXY_PARAM,1,(char *)(p)) +/* BIO_set_nbio(b,n) */ +# define BIO_set_filter_bio(b,s) BIO_ctrl(b,BIO_C_SET_PROXY_PARAM,2,(char *)(s)) +/* BIO *BIO_get_filter_bio(BIO *bio); */ +# define BIO_set_proxy_cb(b,cb) BIO_callback_ctrl(b,BIO_C_SET_PROXY_PARAM,3,(void *(*cb)())) +# define BIO_set_proxy_header(b,sk) BIO_ctrl(b,BIO_C_SET_PROXY_PARAM,4,(char *)sk) +# define BIO_set_no_connect_return(b,bool) BIO_int_ctrl(b,BIO_C_SET_PROXY_PARAM,5,bool) + +# define BIO_get_proxy_header(b,skp) BIO_ctrl(b,BIO_C_GET_PROXY_PARAM,0,(char *)skp) +# define BIO_get_proxies(b,pxy_p) BIO_ctrl(b,BIO_C_GET_PROXY_PARAM,1,(char *)(pxy_p)) +# define BIO_get_url(b,url) BIO_ctrl(b,BIO_C_GET_PROXY_PARAM,2,(char *)(url)) +# define BIO_get_no_connect_return(b) BIO_ctrl(b,BIO_C_GET_PROXY_PARAM,5,NULL) + +# define BIO_set_fd(b,fd,c) BIO_int_ctrl(b,BIO_C_SET_FD,c,fd) +# define BIO_get_fd(b,c) BIO_ctrl(b,BIO_C_GET_FD,0,(char *)c) + +# define BIO_set_fp(b,fp,c) BIO_ctrl(b,BIO_C_SET_FILE_PTR,c,(char *)fp) +# define BIO_get_fp(b,fpp) BIO_ctrl(b,BIO_C_GET_FILE_PTR,0,(char *)fpp) + +# define BIO_seek(b,ofs) (int)BIO_ctrl(b,BIO_C_FILE_SEEK,ofs,NULL) +# define BIO_tell(b) (int)BIO_ctrl(b,BIO_C_FILE_TELL,0,NULL) + +/* + * name is cast to lose const, but might be better to route through a + * function so we can do it safely + */ +# ifdef CONST_STRICT +/* + * If you are wondering why this isn't defined, its because CONST_STRICT is + * purely a compile-time kludge to allow const to be checked. + */ +int BIO_read_filename(BIO *b, const char *name); +# else +# define BIO_read_filename(b,name) BIO_ctrl(b,BIO_C_SET_FILENAME, \ + BIO_CLOSE|BIO_FP_READ,(char *)name) +# endif +# define BIO_write_filename(b,name) BIO_ctrl(b,BIO_C_SET_FILENAME, \ + BIO_CLOSE|BIO_FP_WRITE,name) +# define BIO_append_filename(b,name) BIO_ctrl(b,BIO_C_SET_FILENAME, \ + BIO_CLOSE|BIO_FP_APPEND,name) +# define BIO_rw_filename(b,name) BIO_ctrl(b,BIO_C_SET_FILENAME, \ + BIO_CLOSE|BIO_FP_READ|BIO_FP_WRITE,name) + +/* + * WARNING WARNING, this ups the reference count on the read bio of the SSL + * structure. This is because the ssl read BIO is now pointed to by the + * next_bio field in the bio. So when you free the BIO, make sure you are + * doing a BIO_free_all() to catch the underlying BIO. + */ +# define BIO_set_ssl(b,ssl,c) BIO_ctrl(b,BIO_C_SET_SSL,c,(char *)ssl) +# define BIO_get_ssl(b,sslp) BIO_ctrl(b,BIO_C_GET_SSL,0,(char *)sslp) +# define BIO_set_ssl_mode(b,client) BIO_ctrl(b,BIO_C_SSL_MODE,client,NULL) +# define BIO_set_ssl_renegotiate_bytes(b,num) \ + BIO_ctrl(b,BIO_C_SET_SSL_RENEGOTIATE_BYTES,num,NULL); +# define BIO_get_num_renegotiates(b) \ + BIO_ctrl(b,BIO_C_GET_SSL_NUM_RENEGOTIATES,0,NULL); +# define BIO_set_ssl_renegotiate_timeout(b,seconds) \ + BIO_ctrl(b,BIO_C_SET_SSL_RENEGOTIATE_TIMEOUT,seconds,NULL); + +/* defined in evp.h */ +/* #define BIO_set_md(b,md) BIO_ctrl(b,BIO_C_SET_MD,1,(char *)md) */ + +# define BIO_get_mem_data(b,pp) BIO_ctrl(b,BIO_CTRL_INFO,0,(char *)pp) +# define BIO_set_mem_buf(b,bm,c) BIO_ctrl(b,BIO_C_SET_BUF_MEM,c,(char *)bm) +# define BIO_get_mem_ptr(b,pp) BIO_ctrl(b,BIO_C_GET_BUF_MEM_PTR,0,(char *)pp) +# define BIO_set_mem_eof_return(b,v) \ + BIO_ctrl(b,BIO_C_SET_BUF_MEM_EOF_RETURN,v,NULL) + +/* For the BIO_f_buffer() type */ +# define BIO_get_buffer_num_lines(b) BIO_ctrl(b,BIO_C_GET_BUFF_NUM_LINES,0,NULL) +# define BIO_set_buffer_size(b,size) BIO_ctrl(b,BIO_C_SET_BUFF_SIZE,size,NULL) +# define BIO_set_read_buffer_size(b,size) BIO_int_ctrl(b,BIO_C_SET_BUFF_SIZE,size,0) +# define BIO_set_write_buffer_size(b,size) BIO_int_ctrl(b,BIO_C_SET_BUFF_SIZE,size,1) +# define BIO_set_buffer_read_data(b,buf,num) BIO_ctrl(b,BIO_C_SET_BUFF_READ_DATA,num,buf) + +/* Don't use the next one unless you know what you are doing :-) */ +# define BIO_dup_state(b,ret) BIO_ctrl(b,BIO_CTRL_DUP,0,(char *)(ret)) + +# define BIO_reset(b) (int)BIO_ctrl(b,BIO_CTRL_RESET,0,NULL) +# define BIO_eof(b) (int)BIO_ctrl(b,BIO_CTRL_EOF,0,NULL) +# define BIO_set_close(b,c) (int)BIO_ctrl(b,BIO_CTRL_SET_CLOSE,(c),NULL) +# define BIO_get_close(b) (int)BIO_ctrl(b,BIO_CTRL_GET_CLOSE,0,NULL) +# define BIO_pending(b) (int)BIO_ctrl(b,BIO_CTRL_PENDING,0,NULL) +# define BIO_wpending(b) (int)BIO_ctrl(b,BIO_CTRL_WPENDING,0,NULL) +/* ...pending macros have inappropriate return type */ +size_t BIO_ctrl_pending(BIO *b); +size_t BIO_ctrl_wpending(BIO *b); +# define BIO_flush(b) (int)BIO_ctrl(b,BIO_CTRL_FLUSH,0,NULL) +# define BIO_get_info_callback(b,cbp) (int)BIO_ctrl(b,BIO_CTRL_GET_CALLBACK,0, \ + cbp) +# define BIO_set_info_callback(b,cb) (int)BIO_callback_ctrl(b,BIO_CTRL_SET_CALLBACK,cb) + +/* For the BIO_f_buffer() type */ +# define BIO_buffer_get_num_lines(b) BIO_ctrl(b,BIO_CTRL_GET,0,NULL) + +/* For BIO_s_bio() */ +# define BIO_set_write_buf_size(b,size) (int)BIO_ctrl(b,BIO_C_SET_WRITE_BUF_SIZE,size,NULL) +# define BIO_get_write_buf_size(b,size) (size_t)BIO_ctrl(b,BIO_C_GET_WRITE_BUF_SIZE,size,NULL) +# define BIO_make_bio_pair(b1,b2) (int)BIO_ctrl(b1,BIO_C_MAKE_BIO_PAIR,0,b2) +# define BIO_destroy_bio_pair(b) (int)BIO_ctrl(b,BIO_C_DESTROY_BIO_PAIR,0,NULL) +# define BIO_shutdown_wr(b) (int)BIO_ctrl(b, BIO_C_SHUTDOWN_WR, 0, NULL) +/* macros with inappropriate type -- but ...pending macros use int too: */ +# define BIO_get_write_guarantee(b) (int)BIO_ctrl(b,BIO_C_GET_WRITE_GUARANTEE,0,NULL) +# define BIO_get_read_request(b) (int)BIO_ctrl(b,BIO_C_GET_READ_REQUEST,0,NULL) +size_t BIO_ctrl_get_write_guarantee(BIO *b); +size_t BIO_ctrl_get_read_request(BIO *b); +int BIO_ctrl_reset_read_request(BIO *b); + +/* ctrl macros for dgram */ +# define BIO_ctrl_dgram_connect(b,peer) \ + (int)BIO_ctrl(b,BIO_CTRL_DGRAM_CONNECT,0, (char *)peer) +# define BIO_ctrl_set_connected(b, state, peer) \ + (int)BIO_ctrl(b, BIO_CTRL_DGRAM_SET_CONNECTED, state, (char *)peer) +# define BIO_dgram_recv_timedout(b) \ + (int)BIO_ctrl(b, BIO_CTRL_DGRAM_GET_RECV_TIMER_EXP, 0, NULL) +# define BIO_dgram_send_timedout(b) \ + (int)BIO_ctrl(b, BIO_CTRL_DGRAM_GET_SEND_TIMER_EXP, 0, NULL) +# define BIO_dgram_get_peer(b,peer) \ + (int)BIO_ctrl(b, BIO_CTRL_DGRAM_GET_PEER, 0, (char *)peer) +# define BIO_dgram_set_peer(b,peer) \ + (int)BIO_ctrl(b, BIO_CTRL_DGRAM_SET_PEER, 0, (char *)peer) +# define BIO_dgram_get_mtu_overhead(b) \ + (unsigned int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_MTU_OVERHEAD, 0, NULL) + +/* These two aren't currently implemented */ +/* int BIO_get_ex_num(BIO *bio); */ +/* void BIO_set_ex_free_func(BIO *bio,int idx,void (*cb)()); */ +int BIO_set_ex_data(BIO *bio, int idx, void *data); +void *BIO_get_ex_data(BIO *bio, int idx); +int BIO_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new *new_func, + CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func); +unsigned long BIO_number_read(BIO *bio); +unsigned long BIO_number_written(BIO *bio); + +/* For BIO_f_asn1() */ +int BIO_asn1_set_prefix(BIO *b, asn1_ps_func *prefix, + asn1_ps_func *prefix_free); +int BIO_asn1_get_prefix(BIO *b, asn1_ps_func **pprefix, + asn1_ps_func **pprefix_free); +int BIO_asn1_set_suffix(BIO *b, asn1_ps_func *suffix, + asn1_ps_func *suffix_free); +int BIO_asn1_get_suffix(BIO *b, asn1_ps_func **psuffix, + asn1_ps_func **psuffix_free); + +# ifndef OPENSSL_NO_FP_API +BIO_METHOD *BIO_s_file(void); +BIO *BIO_new_file(const char *filename, const char *mode); +BIO *BIO_new_fp(FILE *stream, int close_flag); +# define BIO_s_file_internal BIO_s_file +# endif +BIO *BIO_new(BIO_METHOD *type); +int BIO_set(BIO *a, BIO_METHOD *type); +int BIO_free(BIO *a); +void BIO_vfree(BIO *a); +int BIO_read(BIO *b, void *data, int len); +int BIO_gets(BIO *bp, char *buf, int size); +int BIO_write(BIO *b, const void *data, int len); +int BIO_puts(BIO *bp, const char *buf); +int BIO_indent(BIO *b, int indent, int max); +long BIO_ctrl(BIO *bp, int cmd, long larg, void *parg); +long BIO_callback_ctrl(BIO *b, int cmd, + void (*fp) (struct bio_st *, int, const char *, int, + long, long)); +char *BIO_ptr_ctrl(BIO *bp, int cmd, long larg); +long BIO_int_ctrl(BIO *bp, int cmd, long larg, int iarg); +BIO *BIO_push(BIO *b, BIO *append); +BIO *BIO_pop(BIO *b); +void BIO_free_all(BIO *a); +BIO *BIO_find_type(BIO *b, int bio_type); +BIO *BIO_next(BIO *b); +BIO *BIO_get_retry_BIO(BIO *bio, int *reason); +int BIO_get_retry_reason(BIO *bio); +BIO *BIO_dup_chain(BIO *in); + +int BIO_nread0(BIO *bio, char **buf); +int BIO_nread(BIO *bio, char **buf, int num); +int BIO_nwrite0(BIO *bio, char **buf); +int BIO_nwrite(BIO *bio, char **buf, int num); + +long BIO_debug_callback(BIO *bio, int cmd, const char *argp, int argi, + long argl, long ret); + +BIO_METHOD *BIO_s_mem(void); +BIO *BIO_new_mem_buf(void *buf, int len); +BIO_METHOD *BIO_s_socket(void); +BIO_METHOD *BIO_s_connect(void); +BIO_METHOD *BIO_s_accept(void); +BIO_METHOD *BIO_s_fd(void); +# ifndef OPENSSL_SYS_OS2 +BIO_METHOD *BIO_s_log(void); +# endif +BIO_METHOD *BIO_s_bio(void); +BIO_METHOD *BIO_s_null(void); +BIO_METHOD *BIO_f_null(void); +BIO_METHOD *BIO_f_buffer(void); +# ifdef OPENSSL_SYS_VMS +BIO_METHOD *BIO_f_linebuffer(void); +# endif +BIO_METHOD *BIO_f_nbio_test(void); +# ifndef OPENSSL_NO_DGRAM +BIO_METHOD *BIO_s_datagram(void); +# ifndef OPENSSL_NO_SCTP +BIO_METHOD *BIO_s_datagram_sctp(void); +# endif +# endif + +/* BIO_METHOD *BIO_f_ber(void); */ + +int BIO_sock_should_retry(int i); +int BIO_sock_non_fatal_error(int error); +int BIO_dgram_non_fatal_error(int error); + +int BIO_fd_should_retry(int i); +int BIO_fd_non_fatal_error(int error); +int BIO_dump_cb(int (*cb) (const void *data, size_t len, void *u), + void *u, const char *s, int len); +int BIO_dump_indent_cb(int (*cb) (const void *data, size_t len, void *u), + void *u, const char *s, int len, int indent); +int BIO_dump(BIO *b, const char *bytes, int len); +int BIO_dump_indent(BIO *b, const char *bytes, int len, int indent); +# ifndef OPENSSL_NO_FP_API +int BIO_dump_fp(FILE *fp, const char *s, int len); +int BIO_dump_indent_fp(FILE *fp, const char *s, int len, int indent); +# endif +int BIO_hex_string(BIO *out, int indent, int width, unsigned char *data, + int datalen); + +struct hostent *BIO_gethostbyname(const char *name); +/*- + * We might want a thread-safe interface too: + * struct hostent *BIO_gethostbyname_r(const char *name, + * struct hostent *result, void *buffer, size_t buflen); + * or something similar (caller allocates a struct hostent, + * pointed to by "result", and additional buffer space for the various + * substructures; if the buffer does not suffice, NULL is returned + * and an appropriate error code is set). + */ +int BIO_sock_error(int sock); +int BIO_socket_ioctl(int fd, long type, void *arg); +int BIO_socket_nbio(int fd, int mode); +int BIO_get_port(const char *str, unsigned short *port_ptr); +int BIO_get_host_ip(const char *str, unsigned char *ip); +int BIO_get_accept_socket(char *host_port, int mode); +int BIO_accept(int sock, char **ip_port); +int BIO_sock_init(void); +void BIO_sock_cleanup(void); +int BIO_set_tcp_ndelay(int sock, int turn_on); + +BIO *BIO_new_socket(int sock, int close_flag); +BIO *BIO_new_dgram(int fd, int close_flag); +# ifndef OPENSSL_NO_SCTP +BIO *BIO_new_dgram_sctp(int fd, int close_flag); +int BIO_dgram_is_sctp(BIO *bio); +int BIO_dgram_sctp_notification_cb(BIO *b, + void (*handle_notifications) (BIO *bio, + void + *context, + void *buf), + void *context); +int BIO_dgram_sctp_wait_for_dry(BIO *b); +int BIO_dgram_sctp_msg_waiting(BIO *b); +# endif +BIO *BIO_new_fd(int fd, int close_flag); +BIO *BIO_new_connect(const char *host_port); +BIO *BIO_new_accept(const char *host_port); + +int BIO_new_bio_pair(BIO **bio1, size_t writebuf1, + BIO **bio2, size_t writebuf2); +/* + * If successful, returns 1 and in *bio1, *bio2 two BIO pair endpoints. + * Otherwise returns 0 and sets *bio1 and *bio2 to NULL. Size 0 uses default + * value. + */ + +void BIO_copy_next_retry(BIO *b); + +/* + * long BIO_ghbn_ctrl(int cmd,int iarg,char *parg); + */ + +# ifdef __GNUC__ +# define __bio_h__attr__ __attribute__ +# else +# define __bio_h__attr__(x) +# endif +int BIO_printf(BIO *bio, const char *format, ...) +__bio_h__attr__((__format__(__printf__, 2, 3))); +int BIO_vprintf(BIO *bio, const char *format, va_list args) +__bio_h__attr__((__format__(__printf__, 2, 0))); +int BIO_snprintf(char *buf, size_t n, const char *format, ...) +__bio_h__attr__((__format__(__printf__, 3, 4))); +int BIO_vsnprintf(char *buf, size_t n, const char *format, va_list args) +__bio_h__attr__((__format__(__printf__, 3, 0))); +# undef __bio_h__attr__ + +/* BEGIN ERROR CODES */ +/* + * The following lines are auto generated by the script mkerr.pl. Any changes + * made after this point may be overwritten when the script is next run. + */ +void ERR_load_BIO_strings(void); + +/* Error codes for the BIO functions. */ + +/* Function codes. */ +# define BIO_F_ACPT_STATE 100 +# define BIO_F_BIO_ACCEPT 101 +# define BIO_F_BIO_BER_GET_HEADER 102 +# define BIO_F_BIO_CALLBACK_CTRL 131 +# define BIO_F_BIO_CTRL 103 +# define BIO_F_BIO_GETHOSTBYNAME 120 +# define BIO_F_BIO_GETS 104 +# define BIO_F_BIO_GET_ACCEPT_SOCKET 105 +# define BIO_F_BIO_GET_HOST_IP 106 +# define BIO_F_BIO_GET_PORT 107 +# define BIO_F_BIO_MAKE_PAIR 121 +# define BIO_F_BIO_NEW 108 +# define BIO_F_BIO_NEW_FILE 109 +# define BIO_F_BIO_NEW_MEM_BUF 126 +# define BIO_F_BIO_NREAD 123 +# define BIO_F_BIO_NREAD0 124 +# define BIO_F_BIO_NWRITE 125 +# define BIO_F_BIO_NWRITE0 122 +# define BIO_F_BIO_PUTS 110 +# define BIO_F_BIO_READ 111 +# define BIO_F_BIO_SOCK_INIT 112 +# define BIO_F_BIO_WRITE 113 +# define BIO_F_BUFFER_CTRL 114 +# define BIO_F_CONN_CTRL 127 +# define BIO_F_CONN_STATE 115 +# define BIO_F_DGRAM_SCTP_READ 132 +# define BIO_F_FILE_CTRL 116 +# define BIO_F_FILE_READ 130 +# define BIO_F_LINEBUFFER_CTRL 129 +# define BIO_F_MEM_READ 128 +# define BIO_F_MEM_WRITE 117 +# define BIO_F_SSL_NEW 118 +# define BIO_F_WSASTARTUP 119 + +/* Reason codes. */ +# define BIO_R_ACCEPT_ERROR 100 +# define BIO_R_BAD_FOPEN_MODE 101 +# define BIO_R_BAD_HOSTNAME_LOOKUP 102 +# define BIO_R_BROKEN_PIPE 124 +# define BIO_R_CONNECT_ERROR 103 +# define BIO_R_EOF_ON_MEMORY_BIO 127 +# define BIO_R_ERROR_SETTING_NBIO 104 +# define BIO_R_ERROR_SETTING_NBIO_ON_ACCEPTED_SOCKET 105 +# define BIO_R_ERROR_SETTING_NBIO_ON_ACCEPT_SOCKET 106 +# define BIO_R_GETHOSTBYNAME_ADDR_IS_NOT_AF_INET 107 +# define BIO_R_INVALID_ARGUMENT 125 +# define BIO_R_INVALID_IP_ADDRESS 108 +# define BIO_R_IN_USE 123 +# define BIO_R_KEEPALIVE 109 +# define BIO_R_NBIO_CONNECT_ERROR 110 +# define BIO_R_NO_ACCEPT_PORT_SPECIFIED 111 +# define BIO_R_NO_HOSTNAME_SPECIFIED 112 +# define BIO_R_NO_PORT_DEFINED 113 +# define BIO_R_NO_PORT_SPECIFIED 114 +# define BIO_R_NO_SUCH_FILE 128 +# define BIO_R_NULL_PARAMETER 115 +# define BIO_R_TAG_MISMATCH 116 +# define BIO_R_UNABLE_TO_BIND_SOCKET 117 +# define BIO_R_UNABLE_TO_CREATE_SOCKET 118 +# define BIO_R_UNABLE_TO_LISTEN_SOCKET 119 +# define BIO_R_UNINITIALIZED 120 +# define BIO_R_UNSUPPORTED_METHOD 121 +# define BIO_R_WRITE_TO_READ_ONLY_BIO 126 +# define BIO_R_WSASTARTUP 122 + +#ifdef __cplusplus +} +#endif +#endif diff --git a/ext/openssl-win32/inc32/openssl/bn.h b/ext/openssl-win32/inc32/openssl/bn.h new file mode 100644 index 00000000..78709d38 --- /dev/null +++ b/ext/openssl-win32/inc32/openssl/bn.h @@ -0,0 +1,934 @@ +/* crypto/bn/bn.h */ +/* Copyright (C) 1995-1997 Eric Young (eay@cryptsoft.com) + * All rights reserved. + * + * This package is an SSL implementation written + * by Eric Young (eay@cryptsoft.com). + * The implementation was written so as to conform with Netscapes SSL. + * + * This library is free for commercial and non-commercial use as long as + * the following conditions are aheared to. The following conditions + * apply to all code found in this distribution, be it the RC4, RSA, + * lhash, DES, etc., code; not just the SSL code. The SSL documentation + * included with this distribution is covered by the same copyright terms + * except that the holder is Tim Hudson (tjh@cryptsoft.com). + * + * Copyright remains Eric Young's, and as such any Copyright notices in + * the code are not to be removed. + * If this package is used in a product, Eric Young should be given attribution + * as the author of the parts of the library used. + * This can be in the form of a textual message at program startup or + * in documentation (online or textual) provided with the package. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * "This product includes cryptographic software written by + * Eric Young (eay@cryptsoft.com)" + * The word 'cryptographic' can be left out if the rouines from the library + * being used are not cryptographic related :-). + * 4. If you include any Windows specific code (or a derivative thereof) from + * the apps directory (application code) you must include an acknowledgement: + * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" + * + * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * The licence and distribution terms for any publically available version or + * derivative of this code cannot be changed. i.e. this code cannot simply be + * copied and put under another distribution licence + * [including the GNU Public Licence.] + */ +/* ==================================================================== + * Copyright (c) 1998-2006 The OpenSSL Project. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. All advertising materials mentioning features or use of this + * software must display the following acknowledgment: + * "This product includes software developed by the OpenSSL Project + * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" + * + * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to + * endorse or promote products derived from this software without + * prior written permission. For written permission, please contact + * openssl-core@openssl.org. + * + * 5. Products derived from this software may not be called "OpenSSL" + * nor may "OpenSSL" appear in their names without prior written + * permission of the OpenSSL Project. + * + * 6. Redistributions of any form whatsoever must retain the following + * acknowledgment: + * "This product includes software developed by the OpenSSL Project + * for use in the OpenSSL Toolkit (http://www.openssl.org/)" + * + * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY + * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * ==================================================================== + * + * This product includes cryptographic software written by Eric Young + * (eay@cryptsoft.com). This product includes software written by Tim + * Hudson (tjh@cryptsoft.com). + * + */ +/* ==================================================================== + * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED. + * + * Portions of the attached software ("Contribution") are developed by + * SUN MICROSYSTEMS, INC., and are contributed to the OpenSSL project. + * + * The Contribution is licensed pursuant to the Eric Young open source + * license provided above. + * + * The binary polynomial arithmetic software is originally written by + * Sheueling Chang Shantz and Douglas Stebila of Sun Microsystems Laboratories. + * + */ + +#ifndef HEADER_BN_H +# define HEADER_BN_H + +# include +# ifndef OPENSSL_NO_FP_API +# include /* FILE */ +# endif +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * These preprocessor symbols control various aspects of the bignum headers + * and library code. They're not defined by any "normal" configuration, as + * they are intended for development and testing purposes. NB: defining all + * three can be useful for debugging application code as well as openssl + * itself. BN_DEBUG - turn on various debugging alterations to the bignum + * code BN_DEBUG_RAND - uses random poisoning of unused words to trip up + * mismanagement of bignum internals. You must also define BN_DEBUG. + */ +/* #define BN_DEBUG */ +/* #define BN_DEBUG_RAND */ + +# ifndef OPENSSL_SMALL_FOOTPRINT +# define BN_MUL_COMBA +# define BN_SQR_COMBA +# define BN_RECURSION +# endif + +/* + * This next option uses the C libraries (2 word)/(1 word) function. If it is + * not defined, I use my C version (which is slower). The reason for this + * flag is that when the particular C compiler library routine is used, and + * the library is linked with a different compiler, the library is missing. + * This mostly happens when the library is built with gcc and then linked + * using normal cc. This would be a common occurrence because gcc normally + * produces code that is 2 times faster than system compilers for the big + * number stuff. For machines with only one compiler (or shared libraries), + * this should be on. Again this in only really a problem on machines using + * "long long's", are 32bit, and are not using my assembler code. + */ +# if defined(OPENSSL_SYS_MSDOS) || defined(OPENSSL_SYS_WINDOWS) || \ + defined(OPENSSL_SYS_WIN32) || defined(linux) +# ifndef BN_DIV2W +# define BN_DIV2W +# endif +# endif + +/* + * assuming long is 64bit - this is the DEC Alpha unsigned long long is only + * 64 bits :-(, don't define BN_LLONG for the DEC Alpha + */ +# ifdef SIXTY_FOUR_BIT_LONG +# define BN_ULLONG unsigned long long +# define BN_ULONG unsigned long +# define BN_LONG long +# define BN_BITS 128 +# define BN_BYTES 8 +# define BN_BITS2 64 +# define BN_BITS4 32 +# define BN_MASK (0xffffffffffffffffffffffffffffffffLL) +# define BN_MASK2 (0xffffffffffffffffL) +# define BN_MASK2l (0xffffffffL) +# define BN_MASK2h (0xffffffff00000000L) +# define BN_MASK2h1 (0xffffffff80000000L) +# define BN_TBIT (0x8000000000000000L) +# define BN_DEC_CONV (10000000000000000000UL) +# define BN_DEC_FMT1 "%lu" +# define BN_DEC_FMT2 "%019lu" +# define BN_DEC_NUM 19 +# define BN_HEX_FMT1 "%lX" +# define BN_HEX_FMT2 "%016lX" +# endif + +/* + * This is where the long long data type is 64 bits, but long is 32. For + * machines where there are 64bit registers, this is the mode to use. IRIX, + * on R4000 and above should use this mode, along with the relevant assembler + * code :-). Do NOT define BN_LLONG. + */ +# ifdef SIXTY_FOUR_BIT +# undef BN_LLONG +# undef BN_ULLONG +# define BN_ULONG unsigned long long +# define BN_LONG long long +# define BN_BITS 128 +# define BN_BYTES 8 +# define BN_BITS2 64 +# define BN_BITS4 32 +# define BN_MASK2 (0xffffffffffffffffLL) +# define BN_MASK2l (0xffffffffL) +# define BN_MASK2h (0xffffffff00000000LL) +# define BN_MASK2h1 (0xffffffff80000000LL) +# define BN_TBIT (0x8000000000000000LL) +# define BN_DEC_CONV (10000000000000000000ULL) +# define BN_DEC_FMT1 "%llu" +# define BN_DEC_FMT2 "%019llu" +# define BN_DEC_NUM 19 +# define BN_HEX_FMT1 "%llX" +# define BN_HEX_FMT2 "%016llX" +# endif + +# ifdef THIRTY_TWO_BIT +# ifdef BN_LLONG +# if defined(_WIN32) && !defined(__GNUC__) +# define BN_ULLONG unsigned __int64 +# define BN_MASK (0xffffffffffffffffI64) +# else +# define BN_ULLONG unsigned long long +# define BN_MASK (0xffffffffffffffffLL) +# endif +# endif +# define BN_ULONG unsigned int +# define BN_LONG int +# define BN_BITS 64 +# define BN_BYTES 4 +# define BN_BITS2 32 +# define BN_BITS4 16 +# define BN_MASK2 (0xffffffffL) +# define BN_MASK2l (0xffff) +# define BN_MASK2h1 (0xffff8000L) +# define BN_MASK2h (0xffff0000L) +# define BN_TBIT (0x80000000L) +# define BN_DEC_CONV (1000000000L) +# define BN_DEC_FMT1 "%u" +# define BN_DEC_FMT2 "%09u" +# define BN_DEC_NUM 9 +# define BN_HEX_FMT1 "%X" +# define BN_HEX_FMT2 "%08X" +# endif + +# define BN_DEFAULT_BITS 1280 + +# define BN_FLG_MALLOCED 0x01 +# define BN_FLG_STATIC_DATA 0x02 + +/* + * avoid leaking exponent information through timing, + * BN_mod_exp_mont() will call BN_mod_exp_mont_consttime, + * BN_div() will call BN_div_no_branch, + * BN_mod_inverse() will call BN_mod_inverse_no_branch. + */ +# define BN_FLG_CONSTTIME 0x04 + +# ifdef OPENSSL_NO_DEPRECATED +/* deprecated name for the flag */ +# define BN_FLG_EXP_CONSTTIME BN_FLG_CONSTTIME +/* + * avoid leaking exponent information through timings + * (BN_mod_exp_mont() will call BN_mod_exp_mont_consttime) + */ +# endif + +# ifndef OPENSSL_NO_DEPRECATED +# define BN_FLG_FREE 0x8000 + /* used for debuging */ +# endif +# define BN_set_flags(b,n) ((b)->flags|=(n)) +# define BN_get_flags(b,n) ((b)->flags&(n)) + +/* + * get a clone of a BIGNUM with changed flags, for *temporary* use only (the + * two BIGNUMs cannot not be used in parallel!) + */ +# define BN_with_flags(dest,b,n) ((dest)->d=(b)->d, \ + (dest)->top=(b)->top, \ + (dest)->dmax=(b)->dmax, \ + (dest)->neg=(b)->neg, \ + (dest)->flags=(((dest)->flags & BN_FLG_MALLOCED) \ + | ((b)->flags & ~BN_FLG_MALLOCED) \ + | BN_FLG_STATIC_DATA \ + | (n))) + +/* Already declared in ossl_typ.h */ +# if 0 +typedef struct bignum_st BIGNUM; +/* Used for temp variables (declaration hidden in bn_lcl.h) */ +typedef struct bignum_ctx BN_CTX; +typedef struct bn_blinding_st BN_BLINDING; +typedef struct bn_mont_ctx_st BN_MONT_CTX; +typedef struct bn_recp_ctx_st BN_RECP_CTX; +typedef struct bn_gencb_st BN_GENCB; +# endif + +struct bignum_st { + BN_ULONG *d; /* Pointer to an array of 'BN_BITS2' bit + * chunks. */ + int top; /* Index of last used d +1. */ + /* The next are internal book keeping for bn_expand. */ + int dmax; /* Size of the d array. */ + int neg; /* one if the number is negative */ + int flags; +}; + +/* Used for montgomery multiplication */ +struct bn_mont_ctx_st { + int ri; /* number of bits in R */ + BIGNUM RR; /* used to convert to montgomery form */ + BIGNUM N; /* The modulus */ + BIGNUM Ni; /* R*(1/R mod N) - N*Ni = 1 (Ni is only + * stored for bignum algorithm) */ + BN_ULONG n0[2]; /* least significant word(s) of Ni; (type + * changed with 0.9.9, was "BN_ULONG n0;" + * before) */ + int flags; +}; + +/* + * Used for reciprocal division/mod functions It cannot be shared between + * threads + */ +struct bn_recp_ctx_st { + BIGNUM N; /* the divisor */ + BIGNUM Nr; /* the reciprocal */ + int num_bits; + int shift; + int flags; +}; + +/* Used for slow "generation" functions. */ +struct bn_gencb_st { + unsigned int ver; /* To handle binary (in)compatibility */ + void *arg; /* callback-specific data */ + union { + /* if(ver==1) - handles old style callbacks */ + void (*cb_1) (int, int, void *); + /* if(ver==2) - new callback style */ + int (*cb_2) (int, int, BN_GENCB *); + } cb; +}; +/* Wrapper function to make using BN_GENCB easier, */ +int BN_GENCB_call(BN_GENCB *cb, int a, int b); +/* Macro to populate a BN_GENCB structure with an "old"-style callback */ +# define BN_GENCB_set_old(gencb, callback, cb_arg) { \ + BN_GENCB *tmp_gencb = (gencb); \ + tmp_gencb->ver = 1; \ + tmp_gencb->arg = (cb_arg); \ + tmp_gencb->cb.cb_1 = (callback); } +/* Macro to populate a BN_GENCB structure with a "new"-style callback */ +# define BN_GENCB_set(gencb, callback, cb_arg) { \ + BN_GENCB *tmp_gencb = (gencb); \ + tmp_gencb->ver = 2; \ + tmp_gencb->arg = (cb_arg); \ + tmp_gencb->cb.cb_2 = (callback); } + +# define BN_prime_checks 0 /* default: select number of iterations based + * on the size of the number */ + +/* + * number of Miller-Rabin iterations for an error rate of less than 2^-80 for + * random 'b'-bit input, b >= 100 (taken from table 4.4 in the Handbook of + * Applied Cryptography [Menezes, van Oorschot, Vanstone; CRC Press 1996]; + * original paper: Damgaard, Landrock, Pomerance: Average case error + * estimates for the strong probable prime test. -- Math. Comp. 61 (1993) + * 177-194) + */ +# define BN_prime_checks_for_size(b) ((b) >= 1300 ? 2 : \ + (b) >= 850 ? 3 : \ + (b) >= 650 ? 4 : \ + (b) >= 550 ? 5 : \ + (b) >= 450 ? 6 : \ + (b) >= 400 ? 7 : \ + (b) >= 350 ? 8 : \ + (b) >= 300 ? 9 : \ + (b) >= 250 ? 12 : \ + (b) >= 200 ? 15 : \ + (b) >= 150 ? 18 : \ + /* b >= 100 */ 27) + +# define BN_num_bytes(a) ((BN_num_bits(a)+7)/8) + +/* Note that BN_abs_is_word didn't work reliably for w == 0 until 0.9.8 */ +# define BN_abs_is_word(a,w) ((((a)->top == 1) && ((a)->d[0] == (BN_ULONG)(w))) || \ + (((w) == 0) && ((a)->top == 0))) +# define BN_is_zero(a) ((a)->top == 0) +# define BN_is_one(a) (BN_abs_is_word((a),1) && !(a)->neg) +# define BN_is_word(a,w) (BN_abs_is_word((a),(w)) && (!(w) || !(a)->neg)) +# define BN_is_odd(a) (((a)->top > 0) && ((a)->d[0] & 1)) + +# define BN_one(a) (BN_set_word((a),1)) +# define BN_zero_ex(a) \ + do { \ + BIGNUM *_tmp_bn = (a); \ + _tmp_bn->top = 0; \ + _tmp_bn->neg = 0; \ + } while(0) +# ifdef OPENSSL_NO_DEPRECATED +# define BN_zero(a) BN_zero_ex(a) +# else +# define BN_zero(a) (BN_set_word((a),0)) +# endif + +const BIGNUM *BN_value_one(void); +char *BN_options(void); +BN_CTX *BN_CTX_new(void); +# ifndef OPENSSL_NO_DEPRECATED +void BN_CTX_init(BN_CTX *c); +# endif +void BN_CTX_free(BN_CTX *c); +void BN_CTX_start(BN_CTX *ctx); +BIGNUM *BN_CTX_get(BN_CTX *ctx); +void BN_CTX_end(BN_CTX *ctx); +int BN_rand(BIGNUM *rnd, int bits, int top, int bottom); +int BN_pseudo_rand(BIGNUM *rnd, int bits, int top, int bottom); +int BN_rand_range(BIGNUM *rnd, const BIGNUM *range); +int BN_pseudo_rand_range(BIGNUM *rnd, const BIGNUM *range); +int BN_num_bits(const BIGNUM *a); +int BN_num_bits_word(BN_ULONG); +BIGNUM *BN_new(void); +void BN_init(BIGNUM *); +void BN_clear_free(BIGNUM *a); +BIGNUM *BN_copy(BIGNUM *a, const BIGNUM *b); +void BN_swap(BIGNUM *a, BIGNUM *b); +BIGNUM *BN_bin2bn(const unsigned char *s, int len, BIGNUM *ret); +int BN_bn2bin(const BIGNUM *a, unsigned char *to); +BIGNUM *BN_mpi2bn(const unsigned char *s, int len, BIGNUM *ret); +int BN_bn2mpi(const BIGNUM *a, unsigned char *to); +int BN_sub(BIGNUM *r, const BIGNUM *a, const BIGNUM *b); +int BN_usub(BIGNUM *r, const BIGNUM *a, const BIGNUM *b); +int BN_uadd(BIGNUM *r, const BIGNUM *a, const BIGNUM *b); +int BN_add(BIGNUM *r, const BIGNUM *a, const BIGNUM *b); +int BN_mul(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx); +int BN_sqr(BIGNUM *r, const BIGNUM *a, BN_CTX *ctx); +/** BN_set_negative sets sign of a BIGNUM + * \param b pointer to the BIGNUM object + * \param n 0 if the BIGNUM b should be positive and a value != 0 otherwise + */ +void BN_set_negative(BIGNUM *b, int n); +/** BN_is_negative returns 1 if the BIGNUM is negative + * \param a pointer to the BIGNUM object + * \return 1 if a < 0 and 0 otherwise + */ +# define BN_is_negative(a) ((a)->neg != 0) + +int BN_div(BIGNUM *dv, BIGNUM *rem, const BIGNUM *m, const BIGNUM *d, + BN_CTX *ctx); +# define BN_mod(rem,m,d,ctx) BN_div(NULL,(rem),(m),(d),(ctx)) +int BN_nnmod(BIGNUM *r, const BIGNUM *m, const BIGNUM *d, BN_CTX *ctx); +int BN_mod_add(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, const BIGNUM *m, + BN_CTX *ctx); +int BN_mod_add_quick(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, + const BIGNUM *m); +int BN_mod_sub(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, const BIGNUM *m, + BN_CTX *ctx); +int BN_mod_sub_quick(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, + const BIGNUM *m); +int BN_mod_mul(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, const BIGNUM *m, + BN_CTX *ctx); +int BN_mod_sqr(BIGNUM *r, const BIGNUM *a, const BIGNUM *m, BN_CTX *ctx); +int BN_mod_lshift1(BIGNUM *r, const BIGNUM *a, const BIGNUM *m, BN_CTX *ctx); +int BN_mod_lshift1_quick(BIGNUM *r, const BIGNUM *a, const BIGNUM *m); +int BN_mod_lshift(BIGNUM *r, const BIGNUM *a, int n, const BIGNUM *m, + BN_CTX *ctx); +int BN_mod_lshift_quick(BIGNUM *r, const BIGNUM *a, int n, const BIGNUM *m); + +BN_ULONG BN_mod_word(const BIGNUM *a, BN_ULONG w); +BN_ULONG BN_div_word(BIGNUM *a, BN_ULONG w); +int BN_mul_word(BIGNUM *a, BN_ULONG w); +int BN_add_word(BIGNUM *a, BN_ULONG w); +int BN_sub_word(BIGNUM *a, BN_ULONG w); +int BN_set_word(BIGNUM *a, BN_ULONG w); +BN_ULONG BN_get_word(const BIGNUM *a); + +int BN_cmp(const BIGNUM *a, const BIGNUM *b); +void BN_free(BIGNUM *a); +int BN_is_bit_set(const BIGNUM *a, int n); +int BN_lshift(BIGNUM *r, const BIGNUM *a, int n); +int BN_lshift1(BIGNUM *r, const BIGNUM *a); +int BN_exp(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx); + +int BN_mod_exp(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, + const BIGNUM *m, BN_CTX *ctx); +int BN_mod_exp_mont(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, + const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx); +int BN_mod_exp_mont_consttime(BIGNUM *rr, const BIGNUM *a, const BIGNUM *p, + const BIGNUM *m, BN_CTX *ctx, + BN_MONT_CTX *in_mont); +int BN_mod_exp_mont_word(BIGNUM *r, BN_ULONG a, const BIGNUM *p, + const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx); +int BN_mod_exp2_mont(BIGNUM *r, const BIGNUM *a1, const BIGNUM *p1, + const BIGNUM *a2, const BIGNUM *p2, const BIGNUM *m, + BN_CTX *ctx, BN_MONT_CTX *m_ctx); +int BN_mod_exp_simple(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, + const BIGNUM *m, BN_CTX *ctx); + +int BN_mask_bits(BIGNUM *a, int n); +# ifndef OPENSSL_NO_FP_API +int BN_print_fp(FILE *fp, const BIGNUM *a); +# endif +# ifdef HEADER_BIO_H +int BN_print(BIO *fp, const BIGNUM *a); +# else +int BN_print(void *fp, const BIGNUM *a); +# endif +int BN_reciprocal(BIGNUM *r, const BIGNUM *m, int len, BN_CTX *ctx); +int BN_rshift(BIGNUM *r, const BIGNUM *a, int n); +int BN_rshift1(BIGNUM *r, const BIGNUM *a); +void BN_clear(BIGNUM *a); +BIGNUM *BN_dup(const BIGNUM *a); +int BN_ucmp(const BIGNUM *a, const BIGNUM *b); +int BN_set_bit(BIGNUM *a, int n); +int BN_clear_bit(BIGNUM *a, int n); +char *BN_bn2hex(const BIGNUM *a); +char *BN_bn2dec(const BIGNUM *a); +int BN_hex2bn(BIGNUM **a, const char *str); +int BN_dec2bn(BIGNUM **a, const char *str); +int BN_asc2bn(BIGNUM **a, const char *str); +int BN_gcd(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx); +int BN_kronecker(const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx); /* returns + * -2 for + * error */ +BIGNUM *BN_mod_inverse(BIGNUM *ret, + const BIGNUM *a, const BIGNUM *n, BN_CTX *ctx); +BIGNUM *BN_mod_sqrt(BIGNUM *ret, + const BIGNUM *a, const BIGNUM *n, BN_CTX *ctx); + +void BN_consttime_swap(BN_ULONG swap, BIGNUM *a, BIGNUM *b, int nwords); + +/* Deprecated versions */ +# ifndef OPENSSL_NO_DEPRECATED +BIGNUM *BN_generate_prime(BIGNUM *ret, int bits, int safe, + const BIGNUM *add, const BIGNUM *rem, + void (*callback) (int, int, void *), void *cb_arg); +int BN_is_prime(const BIGNUM *p, int nchecks, + void (*callback) (int, int, void *), + BN_CTX *ctx, void *cb_arg); +int BN_is_prime_fasttest(const BIGNUM *p, int nchecks, + void (*callback) (int, int, void *), BN_CTX *ctx, + void *cb_arg, int do_trial_division); +# endif /* !defined(OPENSSL_NO_DEPRECATED) */ + +/* Newer versions */ +int BN_generate_prime_ex(BIGNUM *ret, int bits, int safe, const BIGNUM *add, + const BIGNUM *rem, BN_GENCB *cb); +int BN_is_prime_ex(const BIGNUM *p, int nchecks, BN_CTX *ctx, BN_GENCB *cb); +int BN_is_prime_fasttest_ex(const BIGNUM *p, int nchecks, BN_CTX *ctx, + int do_trial_division, BN_GENCB *cb); + +int BN_X931_generate_Xpq(BIGNUM *Xp, BIGNUM *Xq, int nbits, BN_CTX *ctx); + +int BN_X931_derive_prime_ex(BIGNUM *p, BIGNUM *p1, BIGNUM *p2, + const BIGNUM *Xp, const BIGNUM *Xp1, + const BIGNUM *Xp2, const BIGNUM *e, BN_CTX *ctx, + BN_GENCB *cb); +int BN_X931_generate_prime_ex(BIGNUM *p, BIGNUM *p1, BIGNUM *p2, BIGNUM *Xp1, + BIGNUM *Xp2, const BIGNUM *Xp, const BIGNUM *e, + BN_CTX *ctx, BN_GENCB *cb); + +BN_MONT_CTX *BN_MONT_CTX_new(void); +void BN_MONT_CTX_init(BN_MONT_CTX *ctx); +int BN_mod_mul_montgomery(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, + BN_MONT_CTX *mont, BN_CTX *ctx); +# define BN_to_montgomery(r,a,mont,ctx) BN_mod_mul_montgomery(\ + (r),(a),&((mont)->RR),(mont),(ctx)) +int BN_from_montgomery(BIGNUM *r, const BIGNUM *a, + BN_MONT_CTX *mont, BN_CTX *ctx); +void BN_MONT_CTX_free(BN_MONT_CTX *mont); +int BN_MONT_CTX_set(BN_MONT_CTX *mont, const BIGNUM *mod, BN_CTX *ctx); +BN_MONT_CTX *BN_MONT_CTX_copy(BN_MONT_CTX *to, BN_MONT_CTX *from); +BN_MONT_CTX *BN_MONT_CTX_set_locked(BN_MONT_CTX **pmont, int lock, + const BIGNUM *mod, BN_CTX *ctx); + +/* BN_BLINDING flags */ +# define BN_BLINDING_NO_UPDATE 0x00000001 +# define BN_BLINDING_NO_RECREATE 0x00000002 + +BN_BLINDING *BN_BLINDING_new(const BIGNUM *A, const BIGNUM *Ai, BIGNUM *mod); +void BN_BLINDING_free(BN_BLINDING *b); +int BN_BLINDING_update(BN_BLINDING *b, BN_CTX *ctx); +int BN_BLINDING_convert(BIGNUM *n, BN_BLINDING *b, BN_CTX *ctx); +int BN_BLINDING_invert(BIGNUM *n, BN_BLINDING *b, BN_CTX *ctx); +int BN_BLINDING_convert_ex(BIGNUM *n, BIGNUM *r, BN_BLINDING *b, BN_CTX *); +int BN_BLINDING_invert_ex(BIGNUM *n, const BIGNUM *r, BN_BLINDING *b, + BN_CTX *); +# ifndef OPENSSL_NO_DEPRECATED +unsigned long BN_BLINDING_get_thread_id(const BN_BLINDING *); +void BN_BLINDING_set_thread_id(BN_BLINDING *, unsigned long); +# endif +CRYPTO_THREADID *BN_BLINDING_thread_id(BN_BLINDING *); +unsigned long BN_BLINDING_get_flags(const BN_BLINDING *); +void BN_BLINDING_set_flags(BN_BLINDING *, unsigned long); +BN_BLINDING *BN_BLINDING_create_param(BN_BLINDING *b, + const BIGNUM *e, BIGNUM *m, BN_CTX *ctx, + int (*bn_mod_exp) (BIGNUM *r, + const BIGNUM *a, + const BIGNUM *p, + const BIGNUM *m, + BN_CTX *ctx, + BN_MONT_CTX *m_ctx), + BN_MONT_CTX *m_ctx); + +# ifndef OPENSSL_NO_DEPRECATED +void BN_set_params(int mul, int high, int low, int mont); +int BN_get_params(int which); /* 0, mul, 1 high, 2 low, 3 mont */ +# endif + +void BN_RECP_CTX_init(BN_RECP_CTX *recp); +BN_RECP_CTX *BN_RECP_CTX_new(void); +void BN_RECP_CTX_free(BN_RECP_CTX *recp); +int BN_RECP_CTX_set(BN_RECP_CTX *recp, const BIGNUM *rdiv, BN_CTX *ctx); +int BN_mod_mul_reciprocal(BIGNUM *r, const BIGNUM *x, const BIGNUM *y, + BN_RECP_CTX *recp, BN_CTX *ctx); +int BN_mod_exp_recp(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, + const BIGNUM *m, BN_CTX *ctx); +int BN_div_recp(BIGNUM *dv, BIGNUM *rem, const BIGNUM *m, + BN_RECP_CTX *recp, BN_CTX *ctx); + +# ifndef OPENSSL_NO_EC2M + +/* + * Functions for arithmetic over binary polynomials represented by BIGNUMs. + * The BIGNUM::neg property of BIGNUMs representing binary polynomials is + * ignored. Note that input arguments are not const so that their bit arrays + * can be expanded to the appropriate size if needed. + */ + +/* + * r = a + b + */ +int BN_GF2m_add(BIGNUM *r, const BIGNUM *a, const BIGNUM *b); +# define BN_GF2m_sub(r, a, b) BN_GF2m_add(r, a, b) +/* + * r=a mod p + */ +int BN_GF2m_mod(BIGNUM *r, const BIGNUM *a, const BIGNUM *p); +/* r = (a * b) mod p */ +int BN_GF2m_mod_mul(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, + const BIGNUM *p, BN_CTX *ctx); +/* r = (a * a) mod p */ +int BN_GF2m_mod_sqr(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx); +/* r = (1 / b) mod p */ +int BN_GF2m_mod_inv(BIGNUM *r, const BIGNUM *b, const BIGNUM *p, BN_CTX *ctx); +/* r = (a / b) mod p */ +int BN_GF2m_mod_div(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, + const BIGNUM *p, BN_CTX *ctx); +/* r = (a ^ b) mod p */ +int BN_GF2m_mod_exp(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, + const BIGNUM *p, BN_CTX *ctx); +/* r = sqrt(a) mod p */ +int BN_GF2m_mod_sqrt(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, + BN_CTX *ctx); +/* r^2 + r = a mod p */ +int BN_GF2m_mod_solve_quad(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, + BN_CTX *ctx); +# define BN_GF2m_cmp(a, b) BN_ucmp((a), (b)) +/*- + * Some functions allow for representation of the irreducible polynomials + * as an unsigned int[], say p. The irreducible f(t) is then of the form: + * t^p[0] + t^p[1] + ... + t^p[k] + * where m = p[0] > p[1] > ... > p[k] = 0. + */ +/* r = a mod p */ +int BN_GF2m_mod_arr(BIGNUM *r, const BIGNUM *a, const int p[]); +/* r = (a * b) mod p */ +int BN_GF2m_mod_mul_arr(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, + const int p[], BN_CTX *ctx); +/* r = (a * a) mod p */ +int BN_GF2m_mod_sqr_arr(BIGNUM *r, const BIGNUM *a, const int p[], + BN_CTX *ctx); +/* r = (1 / b) mod p */ +int BN_GF2m_mod_inv_arr(BIGNUM *r, const BIGNUM *b, const int p[], + BN_CTX *ctx); +/* r = (a / b) mod p */ +int BN_GF2m_mod_div_arr(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, + const int p[], BN_CTX *ctx); +/* r = (a ^ b) mod p */ +int BN_GF2m_mod_exp_arr(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, + const int p[], BN_CTX *ctx); +/* r = sqrt(a) mod p */ +int BN_GF2m_mod_sqrt_arr(BIGNUM *r, const BIGNUM *a, + const int p[], BN_CTX *ctx); +/* r^2 + r = a mod p */ +int BN_GF2m_mod_solve_quad_arr(BIGNUM *r, const BIGNUM *a, + const int p[], BN_CTX *ctx); +int BN_GF2m_poly2arr(const BIGNUM *a, int p[], int max); +int BN_GF2m_arr2poly(const int p[], BIGNUM *a); + +# endif + +/* + * faster mod functions for the 'NIST primes' 0 <= a < p^2 + */ +int BN_nist_mod_192(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx); +int BN_nist_mod_224(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx); +int BN_nist_mod_256(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx); +int BN_nist_mod_384(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx); +int BN_nist_mod_521(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx); + +const BIGNUM *BN_get0_nist_prime_192(void); +const BIGNUM *BN_get0_nist_prime_224(void); +const BIGNUM *BN_get0_nist_prime_256(void); +const BIGNUM *BN_get0_nist_prime_384(void); +const BIGNUM *BN_get0_nist_prime_521(void); + +/* library internal functions */ + +# define bn_expand(a,bits) ((((((bits+BN_BITS2-1))/BN_BITS2)) <= (a)->dmax)?\ + (a):bn_expand2((a),(bits+BN_BITS2-1)/BN_BITS2)) +# define bn_wexpand(a,words) (((words) <= (a)->dmax)?(a):bn_expand2((a),(words))) +BIGNUM *bn_expand2(BIGNUM *a, int words); +# ifndef OPENSSL_NO_DEPRECATED +BIGNUM *bn_dup_expand(const BIGNUM *a, int words); /* unused */ +# endif + +/*- + * Bignum consistency macros + * There is one "API" macro, bn_fix_top(), for stripping leading zeroes from + * bignum data after direct manipulations on the data. There is also an + * "internal" macro, bn_check_top(), for verifying that there are no leading + * zeroes. Unfortunately, some auditing is required due to the fact that + * bn_fix_top() has become an overabused duct-tape because bignum data is + * occasionally passed around in an inconsistent state. So the following + * changes have been made to sort this out; + * - bn_fix_top()s implementation has been moved to bn_correct_top() + * - if BN_DEBUG isn't defined, bn_fix_top() maps to bn_correct_top(), and + * bn_check_top() is as before. + * - if BN_DEBUG *is* defined; + * - bn_check_top() tries to pollute unused words even if the bignum 'top' is + * consistent. (ed: only if BN_DEBUG_RAND is defined) + * - bn_fix_top() maps to bn_check_top() rather than "fixing" anything. + * The idea is to have debug builds flag up inconsistent bignums when they + * occur. If that occurs in a bn_fix_top(), we examine the code in question; if + * the use of bn_fix_top() was appropriate (ie. it follows directly after code + * that manipulates the bignum) it is converted to bn_correct_top(), and if it + * was not appropriate, we convert it permanently to bn_check_top() and track + * down the cause of the bug. Eventually, no internal code should be using the + * bn_fix_top() macro. External applications and libraries should try this with + * their own code too, both in terms of building against the openssl headers + * with BN_DEBUG defined *and* linking with a version of OpenSSL built with it + * defined. This not only improves external code, it provides more test + * coverage for openssl's own code. + */ + +# ifdef BN_DEBUG + +/* We only need assert() when debugging */ +# include + +# ifdef BN_DEBUG_RAND +/* To avoid "make update" cvs wars due to BN_DEBUG, use some tricks */ +# ifndef RAND_pseudo_bytes +int RAND_pseudo_bytes(unsigned char *buf, int num); +# define BN_DEBUG_TRIX +# endif +# define bn_pollute(a) \ + do { \ + const BIGNUM *_bnum1 = (a); \ + if(_bnum1->top < _bnum1->dmax) { \ + unsigned char _tmp_char; \ + /* We cast away const without the compiler knowing, any \ + * *genuinely* constant variables that aren't mutable \ + * wouldn't be constructed with top!=dmax. */ \ + BN_ULONG *_not_const; \ + memcpy(&_not_const, &_bnum1->d, sizeof(BN_ULONG*)); \ + RAND_pseudo_bytes(&_tmp_char, 1); \ + memset((unsigned char *)(_not_const + _bnum1->top), _tmp_char, \ + (_bnum1->dmax - _bnum1->top) * sizeof(BN_ULONG)); \ + } \ + } while(0) +# ifdef BN_DEBUG_TRIX +# undef RAND_pseudo_bytes +# endif +# else +# define bn_pollute(a) +# endif +# define bn_check_top(a) \ + do { \ + const BIGNUM *_bnum2 = (a); \ + if (_bnum2 != NULL) { \ + assert((_bnum2->top == 0) || \ + (_bnum2->d[_bnum2->top - 1] != 0)); \ + bn_pollute(_bnum2); \ + } \ + } while(0) + +# define bn_fix_top(a) bn_check_top(a) + +# define bn_check_size(bn, bits) bn_wcheck_size(bn, ((bits+BN_BITS2-1))/BN_BITS2) +# define bn_wcheck_size(bn, words) \ + do { \ + const BIGNUM *_bnum2 = (bn); \ + assert((words) <= (_bnum2)->dmax && (words) >= (_bnum2)->top); \ + /* avoid unused variable warning with NDEBUG */ \ + (void)(_bnum2); \ + } while(0) + +# else /* !BN_DEBUG */ + +# define bn_pollute(a) +# define bn_check_top(a) +# define bn_fix_top(a) bn_correct_top(a) +# define bn_check_size(bn, bits) +# define bn_wcheck_size(bn, words) + +# endif + +# define bn_correct_top(a) \ + { \ + BN_ULONG *ftl; \ + int tmp_top = (a)->top; \ + if (tmp_top > 0) \ + { \ + for (ftl= &((a)->d[tmp_top-1]); tmp_top > 0; tmp_top--) \ + if (*(ftl--)) break; \ + (a)->top = tmp_top; \ + } \ + bn_pollute(a); \ + } + +BN_ULONG bn_mul_add_words(BN_ULONG *rp, const BN_ULONG *ap, int num, + BN_ULONG w); +BN_ULONG bn_mul_words(BN_ULONG *rp, const BN_ULONG *ap, int num, BN_ULONG w); +void bn_sqr_words(BN_ULONG *rp, const BN_ULONG *ap, int num); +BN_ULONG bn_div_words(BN_ULONG h, BN_ULONG l, BN_ULONG d); +BN_ULONG bn_add_words(BN_ULONG *rp, const BN_ULONG *ap, const BN_ULONG *bp, + int num); +BN_ULONG bn_sub_words(BN_ULONG *rp, const BN_ULONG *ap, const BN_ULONG *bp, + int num); + +/* Primes from RFC 2409 */ +BIGNUM *get_rfc2409_prime_768(BIGNUM *bn); +BIGNUM *get_rfc2409_prime_1024(BIGNUM *bn); + +/* Primes from RFC 3526 */ +BIGNUM *get_rfc3526_prime_1536(BIGNUM *bn); +BIGNUM *get_rfc3526_prime_2048(BIGNUM *bn); +BIGNUM *get_rfc3526_prime_3072(BIGNUM *bn); +BIGNUM *get_rfc3526_prime_4096(BIGNUM *bn); +BIGNUM *get_rfc3526_prime_6144(BIGNUM *bn); +BIGNUM *get_rfc3526_prime_8192(BIGNUM *bn); + +int BN_bntest_rand(BIGNUM *rnd, int bits, int top, int bottom); + +/* BEGIN ERROR CODES */ +/* + * The following lines are auto generated by the script mkerr.pl. Any changes + * made after this point may be overwritten when the script is next run. + */ +void ERR_load_BN_strings(void); + +/* Error codes for the BN functions. */ + +/* Function codes. */ +# define BN_F_BNRAND 127 +# define BN_F_BN_BLINDING_CONVERT_EX 100 +# define BN_F_BN_BLINDING_CREATE_PARAM 128 +# define BN_F_BN_BLINDING_INVERT_EX 101 +# define BN_F_BN_BLINDING_NEW 102 +# define BN_F_BN_BLINDING_UPDATE 103 +# define BN_F_BN_BN2DEC 104 +# define BN_F_BN_BN2HEX 105 +# define BN_F_BN_CTX_GET 116 +# define BN_F_BN_CTX_NEW 106 +# define BN_F_BN_CTX_START 129 +# define BN_F_BN_DIV 107 +# define BN_F_BN_DIV_NO_BRANCH 138 +# define BN_F_BN_DIV_RECP 130 +# define BN_F_BN_EXP 123 +# define BN_F_BN_EXPAND2 108 +# define BN_F_BN_EXPAND_INTERNAL 120 +# define BN_F_BN_GF2M_MOD 131 +# define BN_F_BN_GF2M_MOD_EXP 132 +# define BN_F_BN_GF2M_MOD_MUL 133 +# define BN_F_BN_GF2M_MOD_SOLVE_QUAD 134 +# define BN_F_BN_GF2M_MOD_SOLVE_QUAD_ARR 135 +# define BN_F_BN_GF2M_MOD_SQR 136 +# define BN_F_BN_GF2M_MOD_SQRT 137 +# define BN_F_BN_MOD_EXP2_MONT 118 +# define BN_F_BN_MOD_EXP_MONT 109 +# define BN_F_BN_MOD_EXP_MONT_CONSTTIME 124 +# define BN_F_BN_MOD_EXP_MONT_WORD 117 +# define BN_F_BN_MOD_EXP_RECP 125 +# define BN_F_BN_MOD_EXP_SIMPLE 126 +# define BN_F_BN_MOD_INVERSE 110 +# define BN_F_BN_MOD_INVERSE_NO_BRANCH 139 +# define BN_F_BN_MOD_LSHIFT_QUICK 119 +# define BN_F_BN_MOD_MUL_RECIPROCAL 111 +# define BN_F_BN_MOD_SQRT 121 +# define BN_F_BN_MPI2BN 112 +# define BN_F_BN_NEW 113 +# define BN_F_BN_RAND 114 +# define BN_F_BN_RAND_RANGE 122 +# define BN_F_BN_USUB 115 + +/* Reason codes. */ +# define BN_R_ARG2_LT_ARG3 100 +# define BN_R_BAD_RECIPROCAL 101 +# define BN_R_BIGNUM_TOO_LONG 114 +# define BN_R_CALLED_WITH_EVEN_MODULUS 102 +# define BN_R_DIV_BY_ZERO 103 +# define BN_R_ENCODING_ERROR 104 +# define BN_R_EXPAND_ON_STATIC_BIGNUM_DATA 105 +# define BN_R_INPUT_NOT_REDUCED 110 +# define BN_R_INVALID_LENGTH 106 +# define BN_R_INVALID_RANGE 115 +# define BN_R_NOT_A_SQUARE 111 +# define BN_R_NOT_INITIALIZED 107 +# define BN_R_NO_INVERSE 108 +# define BN_R_NO_SOLUTION 116 +# define BN_R_P_IS_NOT_PRIME 112 +# define BN_R_TOO_MANY_ITERATIONS 113 +# define BN_R_TOO_MANY_TEMPORARY_VARIABLES 109 + +#ifdef __cplusplus +} +#endif +#endif diff --git a/ext/openssl-win32/inc32/openssl/buffer.h b/ext/openssl-win32/inc32/openssl/buffer.h new file mode 100644 index 00000000..c343dd77 --- /dev/null +++ b/ext/openssl-win32/inc32/openssl/buffer.h @@ -0,0 +1,119 @@ +/* crypto/buffer/buffer.h */ +/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) + * All rights reserved. + * + * This package is an SSL implementation written + * by Eric Young (eay@cryptsoft.com). + * The implementation was written so as to conform with Netscapes SSL. + * + * This library is free for commercial and non-commercial use as long as + * the following conditions are aheared to. The following conditions + * apply to all code found in this distribution, be it the RC4, RSA, + * lhash, DES, etc., code; not just the SSL code. The SSL documentation + * included with this distribution is covered by the same copyright terms + * except that the holder is Tim Hudson (tjh@cryptsoft.com). + * + * Copyright remains Eric Young's, and as such any Copyright notices in + * the code are not to be removed. + * If this package is used in a product, Eric Young should be given attribution + * as the author of the parts of the library used. + * This can be in the form of a textual message at program startup or + * in documentation (online or textual) provided with the package. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * "This product includes cryptographic software written by + * Eric Young (eay@cryptsoft.com)" + * The word 'cryptographic' can be left out if the rouines from the library + * being used are not cryptographic related :-). + * 4. If you include any Windows specific code (or a derivative thereof) from + * the apps directory (application code) you must include an acknowledgement: + * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" + * + * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * The licence and distribution terms for any publically available version or + * derivative of this code cannot be changed. i.e. this code cannot simply be + * copied and put under another distribution licence + * [including the GNU Public Licence.] + */ + +#ifndef HEADER_BUFFER_H +# define HEADER_BUFFER_H + +# include + +#ifdef __cplusplus +extern "C" { +#endif + +# include + +# if !defined(NO_SYS_TYPES_H) +# include +# endif + +/* Already declared in ossl_typ.h */ +/* typedef struct buf_mem_st BUF_MEM; */ + +struct buf_mem_st { + size_t length; /* current number of bytes */ + char *data; + size_t max; /* size of buffer */ +}; + +BUF_MEM *BUF_MEM_new(void); +void BUF_MEM_free(BUF_MEM *a); +int BUF_MEM_grow(BUF_MEM *str, size_t len); +int BUF_MEM_grow_clean(BUF_MEM *str, size_t len); +size_t BUF_strnlen(const char *str, size_t maxlen); +char *BUF_strdup(const char *str); +char *BUF_strndup(const char *str, size_t siz); +void *BUF_memdup(const void *data, size_t siz); +void BUF_reverse(unsigned char *out, const unsigned char *in, size_t siz); + +/* safe string functions */ +size_t BUF_strlcpy(char *dst, const char *src, size_t siz); +size_t BUF_strlcat(char *dst, const char *src, size_t siz); + +/* BEGIN ERROR CODES */ +/* + * The following lines are auto generated by the script mkerr.pl. Any changes + * made after this point may be overwritten when the script is next run. + */ +void ERR_load_BUF_strings(void); + +/* Error codes for the BUF functions. */ + +/* Function codes. */ +# define BUF_F_BUF_MEMDUP 103 +# define BUF_F_BUF_MEM_GROW 100 +# define BUF_F_BUF_MEM_GROW_CLEAN 105 +# define BUF_F_BUF_MEM_NEW 101 +# define BUF_F_BUF_STRDUP 102 +# define BUF_F_BUF_STRNDUP 104 + +/* Reason codes. */ + +#ifdef __cplusplus +} +#endif +#endif diff --git a/ext/openssl-win32/inc32/openssl/comp.h b/ext/openssl-win32/inc32/openssl/comp.h new file mode 100644 index 00000000..406c428a --- /dev/null +++ b/ext/openssl-win32/inc32/openssl/comp.h @@ -0,0 +1,79 @@ + +#ifndef HEADER_COMP_H +# define HEADER_COMP_H + +# include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct comp_ctx_st COMP_CTX; + +typedef struct comp_method_st { + int type; /* NID for compression library */ + const char *name; /* A text string to identify the library */ + int (*init) (COMP_CTX *ctx); + void (*finish) (COMP_CTX *ctx); + int (*compress) (COMP_CTX *ctx, + unsigned char *out, unsigned int olen, + unsigned char *in, unsigned int ilen); + int (*expand) (COMP_CTX *ctx, + unsigned char *out, unsigned int olen, + unsigned char *in, unsigned int ilen); + /* + * The following two do NOTHING, but are kept for backward compatibility + */ + long (*ctrl) (void); + long (*callback_ctrl) (void); +} COMP_METHOD; + +struct comp_ctx_st { + COMP_METHOD *meth; + unsigned long compress_in; + unsigned long compress_out; + unsigned long expand_in; + unsigned long expand_out; + CRYPTO_EX_DATA ex_data; +}; + +COMP_CTX *COMP_CTX_new(COMP_METHOD *meth); +void COMP_CTX_free(COMP_CTX *ctx); +int COMP_compress_block(COMP_CTX *ctx, unsigned char *out, int olen, + unsigned char *in, int ilen); +int COMP_expand_block(COMP_CTX *ctx, unsigned char *out, int olen, + unsigned char *in, int ilen); +COMP_METHOD *COMP_rle(void); +COMP_METHOD *COMP_zlib(void); +void COMP_zlib_cleanup(void); + +# ifdef HEADER_BIO_H +# ifdef ZLIB +BIO_METHOD *BIO_f_zlib(void); +# endif +# endif + +/* BEGIN ERROR CODES */ +/* + * The following lines are auto generated by the script mkerr.pl. Any changes + * made after this point may be overwritten when the script is next run. + */ +void ERR_load_COMP_strings(void); + +/* Error codes for the COMP functions. */ + +/* Function codes. */ +# define COMP_F_BIO_ZLIB_FLUSH 99 +# define COMP_F_BIO_ZLIB_NEW 100 +# define COMP_F_BIO_ZLIB_READ 101 +# define COMP_F_BIO_ZLIB_WRITE 102 + +/* Reason codes. */ +# define COMP_R_ZLIB_DEFLATE_ERROR 99 +# define COMP_R_ZLIB_INFLATE_ERROR 100 +# define COMP_R_ZLIB_NOT_SUPPORTED 101 + +#ifdef __cplusplus +} +#endif +#endif diff --git a/ext/openssl-win32/inc32/openssl/crypto.h b/ext/openssl-win32/inc32/openssl/crypto.h new file mode 100644 index 00000000..c450d7a3 --- /dev/null +++ b/ext/openssl-win32/inc32/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 void *a, const void *b, size_t len); + +/* BEGIN ERROR CODES */ +/* + * The following lines are auto generated by the script mkerr.pl. Any changes + * made after this point may be overwritten when the script is next run. + */ +void ERR_load_CRYPTO_strings(void); + +/* Error codes for the CRYPTO functions. */ + +/* Function codes. */ +# define CRYPTO_F_CRYPTO_GET_EX_NEW_INDEX 100 +# define CRYPTO_F_CRYPTO_GET_NEW_DYNLOCKID 103 +# define CRYPTO_F_CRYPTO_GET_NEW_LOCKID 101 +# define CRYPTO_F_CRYPTO_SET_EX_DATA 102 +# define CRYPTO_F_DEF_ADD_INDEX 104 +# define CRYPTO_F_DEF_GET_CLASS 105 +# define CRYPTO_F_FIPS_MODE_SET 109 +# define CRYPTO_F_INT_DUP_EX_DATA 106 +# define CRYPTO_F_INT_FREE_EX_DATA 107 +# define CRYPTO_F_INT_NEW_EX_DATA 108 + +/* Reason codes. */ +# define CRYPTO_R_FIPS_MODE_NOT_SUPPORTED 101 +# define CRYPTO_R_NO_DYNLOCK_CREATE_CALLBACK 100 + +#ifdef __cplusplus +} +#endif +#endif diff --git a/ext/openssl-win32/inc32/openssl/dh.h b/ext/openssl-win32/inc32/openssl/dh.h new file mode 100644 index 00000000..0502f1a9 --- /dev/null +++ b/ext/openssl-win32/inc32/openssl/dh.h @@ -0,0 +1,392 @@ +/* crypto/dh/dh.h */ +/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) + * All rights reserved. + * + * This package is an SSL implementation written + * by Eric Young (eay@cryptsoft.com). + * The implementation was written so as to conform with Netscapes SSL. + * + * This library is free for commercial and non-commercial use as long as + * the following conditions are aheared to. The following conditions + * apply to all code found in this distribution, be it the RC4, RSA, + * lhash, DES, etc., code; not just the SSL code. The SSL documentation + * included with this distribution is covered by the same copyright terms + * except that the holder is Tim Hudson (tjh@cryptsoft.com). + * + * Copyright remains Eric Young's, and as such any Copyright notices in + * the code are not to be removed. + * If this package is used in a product, Eric Young should be given attribution + * as the author of the parts of the library used. + * This can be in the form of a textual message at program startup or + * in documentation (online or textual) provided with the package. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * "This product includes cryptographic software written by + * Eric Young (eay@cryptsoft.com)" + * The word 'cryptographic' can be left out if the rouines from the library + * being used are not cryptographic related :-). + * 4. If you include any Windows specific code (or a derivative thereof) from + * the apps directory (application code) you must include an acknowledgement: + * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" + * + * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * The licence and distribution terms for any publically available version or + * derivative of this code cannot be changed. i.e. this code cannot simply be + * copied and put under another distribution licence + * [including the GNU Public Licence.] + */ + +#ifndef HEADER_DH_H +# define HEADER_DH_H + +# include + +# ifdef OPENSSL_NO_DH +# error DH is disabled. +# endif + +# ifndef OPENSSL_NO_BIO +# include +# endif +# include +# ifndef OPENSSL_NO_DEPRECATED +# include +# endif + +# ifndef OPENSSL_DH_MAX_MODULUS_BITS +# define OPENSSL_DH_MAX_MODULUS_BITS 10000 +# endif + +# define DH_FLAG_CACHE_MONT_P 0x01 + +/* + * new with 0.9.7h; the built-in DH + * implementation now uses constant time + * modular exponentiation for secret exponents + * by default. This flag causes the + * faster variable sliding window method to + * be used for all exponents. + */ +# define DH_FLAG_NO_EXP_CONSTTIME 0x02 + +/* + * If this flag is set the DH method is FIPS compliant and can be used in + * FIPS mode. This is set in the validated module method. If an application + * sets this flag in its own methods it is its reposibility to ensure the + * result is compliant. + */ + +# define DH_FLAG_FIPS_METHOD 0x0400 + +/* + * If this flag is set the operations normally disabled in FIPS mode are + * permitted it is then the applications responsibility to ensure that the + * usage is compliant. + */ + +# define DH_FLAG_NON_FIPS_ALLOW 0x0400 + +#ifdef __cplusplus +extern "C" { +#endif + +/* Already defined in ossl_typ.h */ +/* typedef struct dh_st DH; */ +/* typedef struct dh_method DH_METHOD; */ + +struct dh_method { + const char *name; + /* Methods here */ + int (*generate_key) (DH *dh); + int (*compute_key) (unsigned char *key, const BIGNUM *pub_key, DH *dh); + /* Can be null */ + int (*bn_mod_exp) (const DH *dh, BIGNUM *r, const BIGNUM *a, + const BIGNUM *p, const BIGNUM *m, BN_CTX *ctx, + BN_MONT_CTX *m_ctx); + int (*init) (DH *dh); + int (*finish) (DH *dh); + int flags; + char *app_data; + /* If this is non-NULL, it will be used to generate parameters */ + int (*generate_params) (DH *dh, int prime_len, int generator, + BN_GENCB *cb); +}; + +struct dh_st { + /* + * This first argument is used to pick up errors when a DH is passed + * instead of a EVP_PKEY + */ + int pad; + int version; + BIGNUM *p; + BIGNUM *g; + long length; /* optional */ + BIGNUM *pub_key; /* g^x */ + BIGNUM *priv_key; /* x */ + int flags; + BN_MONT_CTX *method_mont_p; + /* Place holders if we want to do X9.42 DH */ + BIGNUM *q; + BIGNUM *j; + unsigned char *seed; + int seedlen; + BIGNUM *counter; + int references; + CRYPTO_EX_DATA ex_data; + const DH_METHOD *meth; + ENGINE *engine; +}; + +# define DH_GENERATOR_2 2 +/* #define DH_GENERATOR_3 3 */ +# define DH_GENERATOR_5 5 + +/* DH_check error codes */ +# define DH_CHECK_P_NOT_PRIME 0x01 +# define DH_CHECK_P_NOT_SAFE_PRIME 0x02 +# define DH_UNABLE_TO_CHECK_GENERATOR 0x04 +# define DH_NOT_SUITABLE_GENERATOR 0x08 +# define DH_CHECK_Q_NOT_PRIME 0x10 +# define DH_CHECK_INVALID_Q_VALUE 0x20 +# define DH_CHECK_INVALID_J_VALUE 0x40 + +/* DH_check_pub_key error codes */ +# define DH_CHECK_PUBKEY_TOO_SMALL 0x01 +# define DH_CHECK_PUBKEY_TOO_LARGE 0x02 + +/* + * primes p where (p-1)/2 is prime too are called "safe"; we define this for + * backward compatibility: + */ +# define DH_CHECK_P_NOT_STRONG_PRIME DH_CHECK_P_NOT_SAFE_PRIME + +# define d2i_DHparams_fp(fp,x) (DH *)ASN1_d2i_fp((char *(*)())DH_new, \ + (char *(*)())d2i_DHparams,(fp),(unsigned char **)(x)) +# define i2d_DHparams_fp(fp,x) ASN1_i2d_fp(i2d_DHparams,(fp), \ + (unsigned char *)(x)) +# define d2i_DHparams_bio(bp,x) ASN1_d2i_bio_of(DH,DH_new,d2i_DHparams,bp,x) +# define i2d_DHparams_bio(bp,x) ASN1_i2d_bio_of_const(DH,i2d_DHparams,bp,x) + +DH *DHparams_dup(DH *); + +const DH_METHOD *DH_OpenSSL(void); + +void DH_set_default_method(const DH_METHOD *meth); +const DH_METHOD *DH_get_default_method(void); +int DH_set_method(DH *dh, const DH_METHOD *meth); +DH *DH_new_method(ENGINE *engine); + +DH *DH_new(void); +void DH_free(DH *dh); +int DH_up_ref(DH *dh); +int DH_size(const DH *dh); +int DH_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new *new_func, + CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func); +int DH_set_ex_data(DH *d, int idx, void *arg); +void *DH_get_ex_data(DH *d, int idx); + +/* Deprecated version */ +# ifndef OPENSSL_NO_DEPRECATED +DH *DH_generate_parameters(int prime_len, int generator, + void (*callback) (int, int, void *), void *cb_arg); +# endif /* !defined(OPENSSL_NO_DEPRECATED) */ + +/* New version */ +int DH_generate_parameters_ex(DH *dh, int prime_len, int generator, + BN_GENCB *cb); + +int DH_check(const DH *dh, int *codes); +int DH_check_pub_key(const DH *dh, const BIGNUM *pub_key, int *codes); +int DH_generate_key(DH *dh); +int DH_compute_key(unsigned char *key, const BIGNUM *pub_key, DH *dh); +int DH_compute_key_padded(unsigned char *key, const BIGNUM *pub_key, DH *dh); +DH *d2i_DHparams(DH **a, const unsigned char **pp, long length); +int i2d_DHparams(const DH *a, unsigned char **pp); +DH *d2i_DHxparams(DH **a, const unsigned char **pp, long length); +int i2d_DHxparams(const DH *a, unsigned char **pp); +# ifndef OPENSSL_NO_FP_API +int DHparams_print_fp(FILE *fp, const DH *x); +# endif +# ifndef OPENSSL_NO_BIO +int DHparams_print(BIO *bp, const DH *x); +# else +int DHparams_print(char *bp, const DH *x); +# endif + +/* RFC 5114 parameters */ +DH *DH_get_1024_160(void); +DH *DH_get_2048_224(void); +DH *DH_get_2048_256(void); + +/* RFC2631 KDF */ +int DH_KDF_X9_42(unsigned char *out, size_t outlen, + const unsigned char *Z, size_t Zlen, + ASN1_OBJECT *key_oid, + const unsigned char *ukm, size_t ukmlen, const EVP_MD *md); + +# define EVP_PKEY_CTX_set_dh_paramgen_prime_len(ctx, len) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DH, EVP_PKEY_OP_PARAMGEN, \ + EVP_PKEY_CTRL_DH_PARAMGEN_PRIME_LEN, len, NULL) + +# define EVP_PKEY_CTX_set_dh_paramgen_subprime_len(ctx, len) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DH, EVP_PKEY_OP_PARAMGEN, \ + EVP_PKEY_CTRL_DH_PARAMGEN_SUBPRIME_LEN, len, NULL) + +# define EVP_PKEY_CTX_set_dh_paramgen_type(ctx, typ) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DH, EVP_PKEY_OP_PARAMGEN, \ + EVP_PKEY_CTRL_DH_PARAMGEN_TYPE, typ, NULL) + +# define EVP_PKEY_CTX_set_dh_paramgen_generator(ctx, gen) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DH, EVP_PKEY_OP_PARAMGEN, \ + EVP_PKEY_CTRL_DH_PARAMGEN_GENERATOR, gen, NULL) + +# define EVP_PKEY_CTX_set_dh_rfc5114(ctx, gen) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, EVP_PKEY_OP_PARAMGEN, \ + EVP_PKEY_CTRL_DH_RFC5114, gen, NULL) + +# define EVP_PKEY_CTX_set_dhx_rfc5114(ctx, gen) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, EVP_PKEY_OP_PARAMGEN, \ + EVP_PKEY_CTRL_DH_RFC5114, gen, NULL) + +# define EVP_PKEY_CTX_set_dh_kdf_type(ctx, kdf) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_DH_KDF_TYPE, kdf, NULL) + +# define EVP_PKEY_CTX_get_dh_kdf_type(ctx) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_DH_KDF_TYPE, -2, NULL) + +# define EVP_PKEY_CTX_set0_dh_kdf_oid(ctx, oid) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_DH_KDF_OID, 0, (void *)oid) + +# define EVP_PKEY_CTX_get0_dh_kdf_oid(ctx, poid) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_GET_DH_KDF_OID, 0, (void *)poid) + +# define EVP_PKEY_CTX_set_dh_kdf_md(ctx, md) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_DH_KDF_MD, 0, (void *)md) + +# define EVP_PKEY_CTX_get_dh_kdf_md(ctx, pmd) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_GET_DH_KDF_MD, 0, (void *)pmd) + +# define EVP_PKEY_CTX_set_dh_kdf_outlen(ctx, len) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_DH_KDF_OUTLEN, len, NULL) + +# define EVP_PKEY_CTX_get_dh_kdf_outlen(ctx, plen) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_GET_DH_KDF_OUTLEN, 0, (void *)plen) + +# define EVP_PKEY_CTX_set0_dh_kdf_ukm(ctx, p, plen) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_DH_KDF_UKM, plen, (void *)p) + +# define EVP_PKEY_CTX_get0_dh_kdf_ukm(ctx, p) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_GET_DH_KDF_UKM, 0, (void *)p) + +# define EVP_PKEY_CTRL_DH_PARAMGEN_PRIME_LEN (EVP_PKEY_ALG_CTRL + 1) +# define EVP_PKEY_CTRL_DH_PARAMGEN_GENERATOR (EVP_PKEY_ALG_CTRL + 2) +# define EVP_PKEY_CTRL_DH_RFC5114 (EVP_PKEY_ALG_CTRL + 3) +# define EVP_PKEY_CTRL_DH_PARAMGEN_SUBPRIME_LEN (EVP_PKEY_ALG_CTRL + 4) +# define EVP_PKEY_CTRL_DH_PARAMGEN_TYPE (EVP_PKEY_ALG_CTRL + 5) +# define EVP_PKEY_CTRL_DH_KDF_TYPE (EVP_PKEY_ALG_CTRL + 6) +# define EVP_PKEY_CTRL_DH_KDF_MD (EVP_PKEY_ALG_CTRL + 7) +# define EVP_PKEY_CTRL_GET_DH_KDF_MD (EVP_PKEY_ALG_CTRL + 8) +# define EVP_PKEY_CTRL_DH_KDF_OUTLEN (EVP_PKEY_ALG_CTRL + 9) +# define EVP_PKEY_CTRL_GET_DH_KDF_OUTLEN (EVP_PKEY_ALG_CTRL + 10) +# define EVP_PKEY_CTRL_DH_KDF_UKM (EVP_PKEY_ALG_CTRL + 11) +# define EVP_PKEY_CTRL_GET_DH_KDF_UKM (EVP_PKEY_ALG_CTRL + 12) +# define EVP_PKEY_CTRL_DH_KDF_OID (EVP_PKEY_ALG_CTRL + 13) +# define EVP_PKEY_CTRL_GET_DH_KDF_OID (EVP_PKEY_ALG_CTRL + 14) + +/* KDF types */ +# define EVP_PKEY_DH_KDF_NONE 1 +# define EVP_PKEY_DH_KDF_X9_42 2 + +/* BEGIN ERROR CODES */ +/* + * The following lines are auto generated by the script mkerr.pl. Any changes + * made after this point may be overwritten when the script is next run. + */ +void ERR_load_DH_strings(void); + +/* Error codes for the DH functions. */ + +/* Function codes. */ +# define DH_F_COMPUTE_KEY 102 +# define DH_F_DHPARAMS_PRINT_FP 101 +# define DH_F_DH_BUILTIN_GENPARAMS 106 +# define DH_F_DH_CMS_DECRYPT 117 +# define DH_F_DH_CMS_SET_PEERKEY 118 +# define DH_F_DH_CMS_SET_SHARED_INFO 119 +# define DH_F_DH_COMPUTE_KEY 114 +# define DH_F_DH_GENERATE_KEY 115 +# define DH_F_DH_GENERATE_PARAMETERS_EX 116 +# define DH_F_DH_NEW_METHOD 105 +# define DH_F_DH_PARAM_DECODE 107 +# define DH_F_DH_PRIV_DECODE 110 +# define DH_F_DH_PRIV_ENCODE 111 +# define DH_F_DH_PUB_DECODE 108 +# define DH_F_DH_PUB_ENCODE 109 +# define DH_F_DO_DH_PRINT 100 +# define DH_F_GENERATE_KEY 103 +# define DH_F_GENERATE_PARAMETERS 104 +# define DH_F_PKEY_DH_DERIVE 112 +# define DH_F_PKEY_DH_KEYGEN 113 + +/* Reason codes. */ +# define DH_R_BAD_GENERATOR 101 +# define DH_R_BN_DECODE_ERROR 109 +# define DH_R_BN_ERROR 106 +# define DH_R_DECODE_ERROR 104 +# define DH_R_INVALID_PUBKEY 102 +# define DH_R_KDF_PARAMETER_ERROR 112 +# define DH_R_KEYS_NOT_SET 108 +# define DH_R_KEY_SIZE_TOO_SMALL 110 +# define DH_R_MODULUS_TOO_LARGE 103 +# define DH_R_NON_FIPS_METHOD 111 +# define DH_R_NO_PARAMETERS_SET 107 +# define DH_R_NO_PRIVATE_VALUE 100 +# define DH_R_PARAMETER_ENCODING_ERROR 105 +# define DH_R_PEER_KEY_ERROR 113 +# define DH_R_SHARED_INFO_ERROR 114 + +#ifdef __cplusplus +} +#endif +#endif diff --git a/ext/openssl-win32/inc32/openssl/dsa.h b/ext/openssl-win32/inc32/openssl/dsa.h new file mode 100644 index 00000000..545358fd --- /dev/null +++ b/ext/openssl-win32/inc32/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/ext/openssl-win32/inc32/openssl/dtls1.h b/ext/openssl-win32/inc32/openssl/dtls1.h new file mode 100644 index 00000000..4af7e4a7 --- /dev/null +++ b/ext/openssl-win32/inc32/openssl/dtls1.h @@ -0,0 +1,271 @@ +/* ssl/dtls1.h */ +/* + * DTLS implementation written by Nagendra Modadugu + * (nagendra@cs.stanford.edu) for the OpenSSL project 2005. + */ +/* ==================================================================== + * Copyright (c) 1999-2005 The OpenSSL Project. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. All advertising materials mentioning features or use of this + * software must display the following acknowledgment: + * "This product includes software developed by the OpenSSL Project + * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" + * + * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to + * endorse or promote products derived from this software without + * prior written permission. For written permission, please contact + * openssl-core@OpenSSL.org. + * + * 5. Products derived from this software may not be called "OpenSSL" + * nor may "OpenSSL" appear in their names without prior written + * permission of the OpenSSL Project. + * + * 6. Redistributions of any form whatsoever must retain the following + * acknowledgment: + * "This product includes software developed by the OpenSSL Project + * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" + * + * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY + * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * ==================================================================== + * + * This product includes cryptographic software written by Eric Young + * (eay@cryptsoft.com). This product includes software written by Tim + * Hudson (tjh@cryptsoft.com). + * + */ + +#ifndef HEADER_DTLS1_H +# define HEADER_DTLS1_H + +# include +# include +# ifdef OPENSSL_SYS_VMS +# include +# include +# endif +# ifdef OPENSSL_SYS_WIN32 +/* Needed for struct timeval */ +# include +# elif defined(OPENSSL_SYS_NETWARE) && !defined(_WINSOCK2API_) +# include +# else +# if defined(OPENSSL_SYS_VXWORKS) +# include +# else +# include +# endif +# endif + +#ifdef __cplusplus +extern "C" { +#endif + +# define DTLS1_VERSION 0xFEFF +# define DTLS1_2_VERSION 0xFEFD +# define DTLS_MAX_VERSION DTLS1_2_VERSION + +# define DTLS1_BAD_VER 0x0100 + +/* Special value for method supporting multiple versions */ +# define DTLS_ANY_VERSION 0x1FFFF + +# if 0 +/* this alert description is not specified anywhere... */ +# define DTLS1_AD_MISSING_HANDSHAKE_MESSAGE 110 +# endif + +/* lengths of messages */ +# define DTLS1_COOKIE_LENGTH 256 + +# define DTLS1_RT_HEADER_LENGTH 13 + +# define DTLS1_HM_HEADER_LENGTH 12 + +# define DTLS1_HM_BAD_FRAGMENT -2 +# define DTLS1_HM_FRAGMENT_RETRY -3 + +# define DTLS1_CCS_HEADER_LENGTH 1 + +# ifdef DTLS1_AD_MISSING_HANDSHAKE_MESSAGE +# define DTLS1_AL_HEADER_LENGTH 7 +# else +# define DTLS1_AL_HEADER_LENGTH 2 +# endif + +# ifndef OPENSSL_NO_SSL_INTERN + +# ifndef OPENSSL_NO_SCTP +# define DTLS1_SCTP_AUTH_LABEL "EXPORTER_DTLS_OVER_SCTP" +# endif + +/* Max MTU overhead we know about so far is 40 for IPv6 + 8 for UDP */ +# define DTLS1_MAX_MTU_OVERHEAD 48 + +typedef struct dtls1_bitmap_st { + unsigned long map; /* track 32 packets on 32-bit systems and 64 + * - on 64-bit systems */ + unsigned char max_seq_num[8]; /* max record number seen so far, 64-bit + * value in big-endian encoding */ +} DTLS1_BITMAP; + +struct dtls1_retransmit_state { + EVP_CIPHER_CTX *enc_write_ctx; /* cryptographic state */ + EVP_MD_CTX *write_hash; /* used for mac generation */ +# ifndef OPENSSL_NO_COMP + COMP_CTX *compress; /* compression */ +# else + char *compress; +# endif + SSL_SESSION *session; + unsigned short epoch; +}; + +struct hm_header_st { + unsigned char type; + unsigned long msg_len; + unsigned short seq; + unsigned long frag_off; + unsigned long frag_len; + unsigned int is_ccs; + struct dtls1_retransmit_state saved_retransmit_state; +}; + +struct ccs_header_st { + unsigned char type; + unsigned short seq; +}; + +struct dtls1_timeout_st { + /* Number of read timeouts so far */ + unsigned int read_timeouts; + /* Number of write timeouts so far */ + unsigned int write_timeouts; + /* Number of alerts received so far */ + unsigned int num_alerts; +}; + +typedef struct record_pqueue_st { + unsigned short epoch; + pqueue q; +} record_pqueue; + +typedef struct hm_fragment_st { + struct hm_header_st msg_header; + unsigned char *fragment; + unsigned char *reassembly; +} hm_fragment; + +typedef struct dtls1_state_st { + unsigned int send_cookie; + unsigned char cookie[DTLS1_COOKIE_LENGTH]; + unsigned char rcvd_cookie[DTLS1_COOKIE_LENGTH]; + unsigned int cookie_len; + /* + * The current data and handshake epoch. This is initially + * undefined, and starts at zero once the initial handshake is + * completed + */ + unsigned short r_epoch; + unsigned short w_epoch; + /* records being received in the current epoch */ + DTLS1_BITMAP bitmap; + /* renegotiation starts a new set of sequence numbers */ + DTLS1_BITMAP next_bitmap; + /* handshake message numbers */ + unsigned short handshake_write_seq; + unsigned short next_handshake_write_seq; + unsigned short handshake_read_seq; + /* save last sequence number for retransmissions */ + unsigned char last_write_sequence[8]; + /* Received handshake records (processed and unprocessed) */ + record_pqueue unprocessed_rcds; + record_pqueue processed_rcds; + /* Buffered handshake messages */ + pqueue buffered_messages; + /* Buffered (sent) handshake records */ + pqueue sent_messages; + /* + * Buffered application records. Only for records between CCS and + * Finished to prevent either protocol violation or unnecessary message + * loss. + */ + record_pqueue buffered_app_data; + /* Is set when listening for new connections with dtls1_listen() */ + unsigned int listen; + unsigned int link_mtu; /* max on-the-wire DTLS packet size */ + unsigned int mtu; /* max DTLS packet size */ + struct hm_header_st w_msg_hdr; + struct hm_header_st r_msg_hdr; + struct dtls1_timeout_st timeout; + /* + * Indicates when the last handshake msg or heartbeat sent will timeout + */ + struct timeval next_timeout; + /* Timeout duration */ + unsigned short timeout_duration; + /* + * storage for Alert/Handshake protocol data received but not yet + * processed by ssl3_read_bytes: + */ + unsigned char alert_fragment[DTLS1_AL_HEADER_LENGTH]; + unsigned int alert_fragment_len; + unsigned char handshake_fragment[DTLS1_HM_HEADER_LENGTH]; + unsigned int handshake_fragment_len; + unsigned int retransmitting; + /* + * Set when the handshake is ready to process peer's ChangeCipherSpec message. + * Cleared after the message has been processed. + */ + unsigned int change_cipher_spec_ok; +# ifndef OPENSSL_NO_SCTP + /* used when SSL_ST_XX_FLUSH is entered */ + int next_state; + int shutdown_received; +# endif +} DTLS1_STATE; + +typedef struct dtls1_record_data_st { + unsigned char *packet; + unsigned int packet_length; + SSL3_BUFFER rbuf; + SSL3_RECORD rrec; +# ifndef OPENSSL_NO_SCTP + struct bio_dgram_sctp_rcvinfo recordinfo; +# endif +} DTLS1_RECORD_DATA; + +# endif + +/* Timeout multipliers (timeout slice is defined in apps/timeouts.h */ +# define DTLS1_TMO_READ_COUNT 2 +# define DTLS1_TMO_WRITE_COUNT 2 + +# define DTLS1_TMO_ALERT_COUNT 12 + +#ifdef __cplusplus +} +#endif +#endif diff --git a/ext/openssl-win32/inc32/openssl/e_os2.h b/ext/openssl-win32/inc32/openssl/e_os2.h new file mode 100644 index 00000000..613607f8 --- /dev/null +++ b/ext/openssl-win32/inc32/openssl/e_os2.h @@ -0,0 +1,322 @@ +/* e_os2.h */ +/* ==================================================================== + * Copyright (c) 1998-2000 The OpenSSL Project. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. All advertising materials mentioning features or use of this + * software must display the following acknowledgment: + * "This product includes software developed by the OpenSSL Project + * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" + * + * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to + * endorse or promote products derived from this software without + * prior written permission. For written permission, please contact + * openssl-core@openssl.org. + * + * 5. Products derived from this software may not be called "OpenSSL" + * nor may "OpenSSL" appear in their names without prior written + * permission of the OpenSSL Project. + * + * 6. Redistributions of any form whatsoever must retain the following + * acknowledgment: + * "This product includes software developed by the OpenSSL Project + * for use in the OpenSSL Toolkit (http://www.openssl.org/)" + * + * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY + * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * ==================================================================== + * + * This product includes cryptographic software written by Eric Young + * (eay@cryptsoft.com). This product includes software written by Tim + * Hudson (tjh@cryptsoft.com). + * + */ + +#include + +#ifndef HEADER_E_OS2_H +# define HEADER_E_OS2_H + +#ifdef __cplusplus +extern "C" { +#endif + +/****************************************************************************** + * Detect operating systems. This probably needs completing. + * The result is that at least one OPENSSL_SYS_os macro should be defined. + * However, if none is defined, Unix is assumed. + **/ + +# define OPENSSL_SYS_UNIX + +/* ---------------------- Macintosh, before MacOS X ----------------------- */ +# if defined(__MWERKS__) && defined(macintosh) || defined(OPENSSL_SYSNAME_MAC) +# undef OPENSSL_SYS_UNIX +# define OPENSSL_SYS_MACINTOSH_CLASSIC +# endif + +/* ---------------------- NetWare ----------------------------------------- */ +# if defined(NETWARE) || defined(OPENSSL_SYSNAME_NETWARE) +# undef OPENSSL_SYS_UNIX +# define OPENSSL_SYS_NETWARE +# endif + +/* --------------------- Microsoft operating systems ---------------------- */ + +/* + * Note that MSDOS actually denotes 32-bit environments running on top of + * MS-DOS, such as DJGPP one. + */ +# if defined(OPENSSL_SYSNAME_MSDOS) +# undef OPENSSL_SYS_UNIX +# define OPENSSL_SYS_MSDOS +# endif + +/* + * For 32 bit environment, there seems to be the CygWin environment and then + * all the others that try to do the same thing Microsoft does... + */ +# if defined(OPENSSL_SYSNAME_UWIN) +# undef OPENSSL_SYS_UNIX +# define OPENSSL_SYS_WIN32_UWIN +# else +# if defined(__CYGWIN__) || defined(OPENSSL_SYSNAME_CYGWIN) +# undef OPENSSL_SYS_UNIX +# define OPENSSL_SYS_WIN32_CYGWIN +# else +# if defined(_WIN32) || defined(OPENSSL_SYSNAME_WIN32) +# undef OPENSSL_SYS_UNIX +# define OPENSSL_SYS_WIN32 +# endif +# if defined(OPENSSL_SYSNAME_WINNT) +# undef OPENSSL_SYS_UNIX +# define OPENSSL_SYS_WINNT +# endif +# if defined(OPENSSL_SYSNAME_WINCE) +# undef OPENSSL_SYS_UNIX +# define OPENSSL_SYS_WINCE +# endif +# endif +# endif + +/* Anything that tries to look like Microsoft is "Windows" */ +# if defined(OPENSSL_SYS_WIN32) || defined(OPENSSL_SYS_WINNT) || defined(OPENSSL_SYS_WINCE) +# undef OPENSSL_SYS_UNIX +# define OPENSSL_SYS_WINDOWS +# ifndef OPENSSL_SYS_MSDOS +# define OPENSSL_SYS_MSDOS +# endif +# endif + +/* + * DLL settings. This part is a bit tough, because it's up to the + * application implementor how he or she will link the application, so it + * requires some macro to be used. + */ +# ifdef OPENSSL_SYS_WINDOWS +# ifndef OPENSSL_OPT_WINDLL +# if defined(_WINDLL) /* This is used when building OpenSSL to + * indicate that DLL linkage should be used */ +# define OPENSSL_OPT_WINDLL +# endif +# endif +# endif + +/* ------------------------------- OpenVMS -------------------------------- */ +# if defined(__VMS) || defined(VMS) || defined(OPENSSL_SYSNAME_VMS) +# undef OPENSSL_SYS_UNIX +# define OPENSSL_SYS_VMS +# if defined(__DECC) +# define OPENSSL_SYS_VMS_DECC +# elif defined(__DECCXX) +# define OPENSSL_SYS_VMS_DECC +# define OPENSSL_SYS_VMS_DECCXX +# else +# define OPENSSL_SYS_VMS_NODECC +# endif +# endif + +/* -------------------------------- OS/2 ---------------------------------- */ +# if defined(__EMX__) || defined(__OS2__) +# undef OPENSSL_SYS_UNIX +# define OPENSSL_SYS_OS2 +# endif + +/* -------------------------------- Unix ---------------------------------- */ +# ifdef OPENSSL_SYS_UNIX +# if defined(linux) || defined(__linux__) || defined(OPENSSL_SYSNAME_LINUX) +# define OPENSSL_SYS_LINUX +# endif +# ifdef OPENSSL_SYSNAME_MPE +# define OPENSSL_SYS_MPE +# endif +# ifdef OPENSSL_SYSNAME_SNI +# define OPENSSL_SYS_SNI +# endif +# ifdef OPENSSL_SYSNAME_ULTRASPARC +# define OPENSSL_SYS_ULTRASPARC +# endif +# ifdef OPENSSL_SYSNAME_NEWS4 +# define OPENSSL_SYS_NEWS4 +# endif +# ifdef OPENSSL_SYSNAME_MACOSX +# define OPENSSL_SYS_MACOSX +# endif +# ifdef OPENSSL_SYSNAME_MACOSX_RHAPSODY +# define OPENSSL_SYS_MACOSX_RHAPSODY +# define OPENSSL_SYS_MACOSX +# endif +# ifdef OPENSSL_SYSNAME_SUNOS +# define OPENSSL_SYS_SUNOS +# endif +# if defined(_CRAY) || defined(OPENSSL_SYSNAME_CRAY) +# define OPENSSL_SYS_CRAY +# endif +# if defined(_AIX) || defined(OPENSSL_SYSNAME_AIX) +# define OPENSSL_SYS_AIX +# endif +# endif + +/* -------------------------------- VOS ----------------------------------- */ +# if defined(__VOS__) || defined(OPENSSL_SYSNAME_VOS) +# define OPENSSL_SYS_VOS +# ifdef __HPPA__ +# define OPENSSL_SYS_VOS_HPPA +# endif +# ifdef __IA32__ +# define OPENSSL_SYS_VOS_IA32 +# endif +# endif + +/* ------------------------------ VxWorks --------------------------------- */ +# ifdef OPENSSL_SYSNAME_VXWORKS +# define OPENSSL_SYS_VXWORKS +# endif + +/* -------------------------------- BeOS ---------------------------------- */ +# if defined(__BEOS__) +# define OPENSSL_SYS_BEOS +# include +# if defined(BONE_VERSION) +# define OPENSSL_SYS_BEOS_BONE +# else +# define OPENSSL_SYS_BEOS_R5 +# endif +# endif + +/** + * That's it for OS-specific stuff + *****************************************************************************/ + +/* Specials for I/O an exit */ +# ifdef OPENSSL_SYS_MSDOS +# define OPENSSL_UNISTD_IO +# define OPENSSL_DECLARE_EXIT extern void exit(int); +# else +# define OPENSSL_UNISTD_IO OPENSSL_UNISTD +# define OPENSSL_DECLARE_EXIT /* declared in unistd.h */ +# endif + +/*- + * Definitions of OPENSSL_GLOBAL and OPENSSL_EXTERN, to define and declare + * certain global symbols that, with some compilers under VMS, have to be + * defined and declared explicitely with globaldef and globalref. + * Definitions of OPENSSL_EXPORT and OPENSSL_IMPORT, to define and declare + * DLL exports and imports for compilers under Win32. These are a little + * more complicated to use. Basically, for any library that exports some + * global variables, the following code must be present in the header file + * that declares them, before OPENSSL_EXTERN is used: + * + * #ifdef SOME_BUILD_FLAG_MACRO + * # undef OPENSSL_EXTERN + * # define OPENSSL_EXTERN OPENSSL_EXPORT + * #endif + * + * The default is to have OPENSSL_EXPORT, OPENSSL_IMPORT and OPENSSL_GLOBAL + * have some generally sensible values, and for OPENSSL_EXTERN to have the + * value OPENSSL_IMPORT. + */ + +# if defined(OPENSSL_SYS_VMS_NODECC) +# define OPENSSL_EXPORT globalref +# define OPENSSL_IMPORT globalref +# define OPENSSL_GLOBAL globaldef +# elif defined(OPENSSL_SYS_WINDOWS) && defined(OPENSSL_OPT_WINDLL) +# define OPENSSL_EXPORT extern __declspec(dllexport) +# define OPENSSL_IMPORT extern __declspec(dllimport) +# define OPENSSL_GLOBAL +# else +# define OPENSSL_EXPORT extern +# define OPENSSL_IMPORT extern +# define OPENSSL_GLOBAL +# endif +# define OPENSSL_EXTERN OPENSSL_IMPORT + +/*- + * Macros to allow global variables to be reached through function calls when + * required (if a shared library version requires it, for example. + * The way it's done allows definitions like this: + * + * // in foobar.c + * OPENSSL_IMPLEMENT_GLOBAL(int,foobar,0) + * // in foobar.h + * OPENSSL_DECLARE_GLOBAL(int,foobar); + * #define foobar OPENSSL_GLOBAL_REF(foobar) + */ +# ifdef OPENSSL_EXPORT_VAR_AS_FUNCTION +# define OPENSSL_IMPLEMENT_GLOBAL(type,name,value) \ + type *_shadow_##name(void) \ + { static type _hide_##name=value; return &_hide_##name; } +# define OPENSSL_DECLARE_GLOBAL(type,name) type *_shadow_##name(void) +# define OPENSSL_GLOBAL_REF(name) (*(_shadow_##name())) +# else +# define OPENSSL_IMPLEMENT_GLOBAL(type,name,value) OPENSSL_GLOBAL type _shadow_##name=value; +# define OPENSSL_DECLARE_GLOBAL(type,name) OPENSSL_EXPORT type _shadow_##name +# define OPENSSL_GLOBAL_REF(name) _shadow_##name +# endif + +# if defined(OPENSSL_SYS_MACINTOSH_CLASSIC) && macintosh==1 && !defined(MAC_OS_GUSI_SOURCE) +# define ossl_ssize_t long +# endif + +# ifdef OPENSSL_SYS_MSDOS +# define ossl_ssize_t long +# endif + +# if defined(NeXT) || defined(OPENSSL_SYS_NEWS4) || defined(OPENSSL_SYS_SUNOS) +# define ssize_t int +# endif + +# if defined(__ultrix) && !defined(ssize_t) +# define ossl_ssize_t int +# endif + +# ifndef ossl_ssize_t +# define ossl_ssize_t ssize_t +# endif + +#ifdef __cplusplus +} +#endif +#endif diff --git a/ext/openssl-win32/inc32/openssl/ec.h b/ext/openssl-win32/inc32/openssl/ec.h new file mode 100644 index 00000000..98edfdf8 --- /dev/null +++ b/ext/openssl-win32/inc32/openssl/ec.h @@ -0,0 +1,1281 @@ +/* crypto/ec/ec.h */ +/* + * Originally written by Bodo Moeller for the OpenSSL project. + */ +/** + * \file crypto/ec/ec.h Include file for the OpenSSL EC functions + * \author Originally written by Bodo Moeller for the OpenSSL project + */ +/* ==================================================================== + * Copyright (c) 1998-2005 The OpenSSL Project. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. All advertising materials mentioning features or use of this + * software must display the following acknowledgment: + * "This product includes software developed by the OpenSSL Project + * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" + * + * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to + * endorse or promote products derived from this software without + * prior written permission. For written permission, please contact + * openssl-core@openssl.org. + * + * 5. Products derived from this software may not be called "OpenSSL" + * nor may "OpenSSL" appear in their names without prior written + * permission of the OpenSSL Project. + * + * 6. Redistributions of any form whatsoever must retain the following + * acknowledgment: + * "This product includes software developed by the OpenSSL Project + * for use in the OpenSSL Toolkit (http://www.openssl.org/)" + * + * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY + * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * ==================================================================== + * + * This product includes cryptographic software written by Eric Young + * (eay@cryptsoft.com). This product includes software written by Tim + * Hudson (tjh@cryptsoft.com). + * + */ +/* ==================================================================== + * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED. + * + * Portions of the attached software ("Contribution") are developed by + * SUN MICROSYSTEMS, INC., and are contributed to the OpenSSL project. + * + * The Contribution is licensed pursuant to the OpenSSL open source + * license provided above. + * + * The elliptic curve binary polynomial software is originally written by + * Sheueling Chang Shantz and Douglas Stebila of Sun Microsystems Laboratories. + * + */ + +#ifndef HEADER_EC_H +# define HEADER_EC_H + +# include + +# ifdef OPENSSL_NO_EC +# error EC is disabled. +# endif + +# include +# include +# ifndef OPENSSL_NO_DEPRECATED +# include +# endif + +# ifdef __cplusplus +extern "C" { +# elif defined(__SUNPRO_C) +# if __SUNPRO_C >= 0x520 +# pragma error_messages (off,E_ARRAY_OF_INCOMPLETE_NONAME,E_ARRAY_OF_INCOMPLETE) +# endif +# endif + +# ifndef OPENSSL_ECC_MAX_FIELD_BITS +# define OPENSSL_ECC_MAX_FIELD_BITS 661 +# endif + +/** Enum for the point conversion form as defined in X9.62 (ECDSA) + * for the encoding of a elliptic curve point (x,y) */ +typedef enum { + /** the point is encoded as z||x, where the octet z specifies + * which solution of the quadratic equation y is */ + POINT_CONVERSION_COMPRESSED = 2, + /** the point is encoded as z||x||y, where z is the octet 0x02 */ + POINT_CONVERSION_UNCOMPRESSED = 4, + /** the point is encoded as z||x||y, where the octet z specifies + * which solution of the quadratic equation y is */ + POINT_CONVERSION_HYBRID = 6 +} point_conversion_form_t; + +typedef struct ec_method_st EC_METHOD; + +typedef struct ec_group_st + /*- + EC_METHOD *meth; + -- field definition + -- curve coefficients + -- optional generator with associated information (order, cofactor) + -- optional extra data (precomputed table for fast computation of multiples of generator) + -- ASN1 stuff + */ + EC_GROUP; + +typedef struct ec_point_st EC_POINT; + +/********************************************************************/ +/* EC_METHODs for curves over GF(p) */ +/********************************************************************/ + +/** Returns the basic GFp ec methods which provides the basis for the + * optimized methods. + * \return EC_METHOD object + */ +const EC_METHOD *EC_GFp_simple_method(void); + +/** Returns GFp methods using montgomery multiplication. + * \return EC_METHOD object + */ +const EC_METHOD *EC_GFp_mont_method(void); + +/** Returns GFp methods using optimized methods for NIST recommended curves + * \return EC_METHOD object + */ +const EC_METHOD *EC_GFp_nist_method(void); + +# ifndef OPENSSL_NO_EC_NISTP_64_GCC_128 +/** Returns 64-bit optimized methods for nistp224 + * \return EC_METHOD object + */ +const EC_METHOD *EC_GFp_nistp224_method(void); + +/** Returns 64-bit optimized methods for nistp256 + * \return EC_METHOD object + */ +const EC_METHOD *EC_GFp_nistp256_method(void); + +/** Returns 64-bit optimized methods for nistp521 + * \return EC_METHOD object + */ +const EC_METHOD *EC_GFp_nistp521_method(void); +# endif + +# ifndef OPENSSL_NO_EC2M +/********************************************************************/ +/* EC_METHOD for curves over GF(2^m) */ +/********************************************************************/ + +/** Returns the basic GF2m ec method + * \return EC_METHOD object + */ +const EC_METHOD *EC_GF2m_simple_method(void); + +# endif + +/********************************************************************/ +/* EC_GROUP functions */ +/********************************************************************/ + +/** Creates a new EC_GROUP object + * \param meth EC_METHOD to use + * \return newly created EC_GROUP object or NULL in case of an error. + */ +EC_GROUP *EC_GROUP_new(const EC_METHOD *meth); + +/** Frees a EC_GROUP object + * \param group EC_GROUP object to be freed. + */ +void EC_GROUP_free(EC_GROUP *group); + +/** Clears and frees a EC_GROUP object + * \param group EC_GROUP object to be cleared and freed. + */ +void EC_GROUP_clear_free(EC_GROUP *group); + +/** Copies EC_GROUP objects. Note: both EC_GROUPs must use the same EC_METHOD. + * \param dst destination EC_GROUP object + * \param src source EC_GROUP object + * \return 1 on success and 0 if an error occurred. + */ +int EC_GROUP_copy(EC_GROUP *dst, const EC_GROUP *src); + +/** Creates a new EC_GROUP object and copies the copies the content + * form src to the newly created EC_KEY object + * \param src source EC_GROUP object + * \return newly created EC_GROUP object or NULL in case of an error. + */ +EC_GROUP *EC_GROUP_dup(const EC_GROUP *src); + +/** Returns the EC_METHOD of the EC_GROUP object. + * \param group EC_GROUP object + * \return EC_METHOD used in this EC_GROUP object. + */ +const EC_METHOD *EC_GROUP_method_of(const EC_GROUP *group); + +/** Returns the field type of the EC_METHOD. + * \param meth EC_METHOD object + * \return NID of the underlying field type OID. + */ +int EC_METHOD_get_field_type(const EC_METHOD *meth); + +/** Sets the generator and it's order/cofactor of a EC_GROUP object. + * \param group EC_GROUP object + * \param generator EC_POINT object with the generator. + * \param order the order of the group generated by the generator. + * \param cofactor the index of the sub-group generated by the generator + * in the group of all points on the elliptic curve. + * \return 1 on success and 0 if an error occured + */ +int EC_GROUP_set_generator(EC_GROUP *group, const EC_POINT *generator, + const BIGNUM *order, const BIGNUM *cofactor); + +/** Returns the generator of a EC_GROUP object. + * \param group EC_GROUP object + * \return the currently used generator (possibly NULL). + */ +const EC_POINT *EC_GROUP_get0_generator(const EC_GROUP *group); + +/** Returns the montgomery data for order(Generator) + * \param group EC_GROUP object + * \return the currently used generator (possibly NULL). +*/ +BN_MONT_CTX *EC_GROUP_get_mont_data(const EC_GROUP *group); + +/** Gets the order of a EC_GROUP + * \param group EC_GROUP object + * \param order BIGNUM to which the order is copied + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occured + */ +int EC_GROUP_get_order(const EC_GROUP *group, BIGNUM *order, BN_CTX *ctx); + +/** Gets the cofactor of a EC_GROUP + * \param group EC_GROUP object + * \param cofactor BIGNUM to which the cofactor is copied + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occured + */ +int EC_GROUP_get_cofactor(const EC_GROUP *group, BIGNUM *cofactor, + BN_CTX *ctx); + +/** Sets the name of a EC_GROUP object + * \param group EC_GROUP object + * \param nid NID of the curve name OID + */ +void EC_GROUP_set_curve_name(EC_GROUP *group, int nid); + +/** Returns the curve name of a EC_GROUP object + * \param group EC_GROUP object + * \return NID of the curve name OID or 0 if not set. + */ +int EC_GROUP_get_curve_name(const EC_GROUP *group); + +void EC_GROUP_set_asn1_flag(EC_GROUP *group, int flag); +int EC_GROUP_get_asn1_flag(const EC_GROUP *group); + +void EC_GROUP_set_point_conversion_form(EC_GROUP *group, + point_conversion_form_t form); +point_conversion_form_t EC_GROUP_get_point_conversion_form(const EC_GROUP *); + +unsigned char *EC_GROUP_get0_seed(const EC_GROUP *x); +size_t EC_GROUP_get_seed_len(const EC_GROUP *); +size_t EC_GROUP_set_seed(EC_GROUP *, const unsigned char *, size_t len); + +/** Sets the parameter of a ec over GFp defined by y^2 = x^3 + a*x + b + * \param group EC_GROUP object + * \param p BIGNUM with the prime number + * \param a BIGNUM with parameter a of the equation + * \param b BIGNUM with parameter b of the equation + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occured + */ +int EC_GROUP_set_curve_GFp(EC_GROUP *group, const BIGNUM *p, const BIGNUM *a, + const BIGNUM *b, BN_CTX *ctx); + +/** Gets the parameter of the ec over GFp defined by y^2 = x^3 + a*x + b + * \param group EC_GROUP object + * \param p BIGNUM for the prime number + * \param a BIGNUM for parameter a of the equation + * \param b BIGNUM for parameter b of the equation + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occured + */ +int EC_GROUP_get_curve_GFp(const EC_GROUP *group, BIGNUM *p, BIGNUM *a, + BIGNUM *b, BN_CTX *ctx); + +# ifndef OPENSSL_NO_EC2M +/** Sets the parameter of a ec over GF2m defined by y^2 + x*y = x^3 + a*x^2 + b + * \param group EC_GROUP object + * \param p BIGNUM with the polynomial defining the underlying field + * \param a BIGNUM with parameter a of the equation + * \param b BIGNUM with parameter b of the equation + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occured + */ +int EC_GROUP_set_curve_GF2m(EC_GROUP *group, const BIGNUM *p, const BIGNUM *a, + const BIGNUM *b, BN_CTX *ctx); + +/** Gets the parameter of the ec over GF2m defined by y^2 + x*y = x^3 + a*x^2 + b + * \param group EC_GROUP object + * \param p BIGNUM for the polynomial defining the underlying field + * \param a BIGNUM for parameter a of the equation + * \param b BIGNUM for parameter b of the equation + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occured + */ +int EC_GROUP_get_curve_GF2m(const EC_GROUP *group, BIGNUM *p, BIGNUM *a, + BIGNUM *b, BN_CTX *ctx); +# endif +/** Returns the number of bits needed to represent a field element + * \param group EC_GROUP object + * \return number of bits needed to represent a field element + */ +int EC_GROUP_get_degree(const EC_GROUP *group); + +/** Checks whether the parameter in the EC_GROUP define a valid ec group + * \param group EC_GROUP object + * \param ctx BN_CTX object (optional) + * \return 1 if group is a valid ec group and 0 otherwise + */ +int EC_GROUP_check(const EC_GROUP *group, BN_CTX *ctx); + +/** Checks whether the discriminant of the elliptic curve is zero or not + * \param group EC_GROUP object + * \param ctx BN_CTX object (optional) + * \return 1 if the discriminant is not zero and 0 otherwise + */ +int EC_GROUP_check_discriminant(const EC_GROUP *group, BN_CTX *ctx); + +/** Compares two EC_GROUP objects + * \param a first EC_GROUP object + * \param b second EC_GROUP object + * \param ctx BN_CTX object (optional) + * \return 0 if both groups are equal and 1 otherwise + */ +int EC_GROUP_cmp(const EC_GROUP *a, const EC_GROUP *b, BN_CTX *ctx); + +/* + * EC_GROUP_new_GF*() calls EC_GROUP_new() and EC_GROUP_set_GF*() after + * choosing an appropriate EC_METHOD + */ + +/** Creates a new EC_GROUP object with the specified parameters defined + * over GFp (defined by the equation y^2 = x^3 + a*x + b) + * \param p BIGNUM with the prime number + * \param a BIGNUM with the parameter a of the equation + * \param b BIGNUM with the parameter b of the equation + * \param ctx BN_CTX object (optional) + * \return newly created EC_GROUP object with the specified parameters + */ +EC_GROUP *EC_GROUP_new_curve_GFp(const BIGNUM *p, const BIGNUM *a, + const BIGNUM *b, BN_CTX *ctx); +# ifndef OPENSSL_NO_EC2M +/** Creates a new EC_GROUP object with the specified parameters defined + * over GF2m (defined by the equation y^2 + x*y = x^3 + a*x^2 + b) + * \param p BIGNUM with the polynomial defining the underlying field + * \param a BIGNUM with the parameter a of the equation + * \param b BIGNUM with the parameter b of the equation + * \param ctx BN_CTX object (optional) + * \return newly created EC_GROUP object with the specified parameters + */ +EC_GROUP *EC_GROUP_new_curve_GF2m(const BIGNUM *p, const BIGNUM *a, + const BIGNUM *b, BN_CTX *ctx); +# endif +/** Creates a EC_GROUP object with a curve specified by a NID + * \param nid NID of the OID of the curve name + * \return newly created EC_GROUP object with specified curve or NULL + * if an error occurred + */ +EC_GROUP *EC_GROUP_new_by_curve_name(int nid); + +/********************************************************************/ +/* handling of internal curves */ +/********************************************************************/ + +typedef struct { + int nid; + const char *comment; +} EC_builtin_curve; + +/* + * EC_builtin_curves(EC_builtin_curve *r, size_t size) returns number of all + * available curves or zero if a error occurred. In case r ist not zero + * nitems EC_builtin_curve structures are filled with the data of the first + * nitems internal groups + */ +size_t EC_get_builtin_curves(EC_builtin_curve *r, size_t nitems); + +const char *EC_curve_nid2nist(int nid); +int EC_curve_nist2nid(const char *name); + +/********************************************************************/ +/* EC_POINT functions */ +/********************************************************************/ + +/** Creates a new EC_POINT object for the specified EC_GROUP + * \param group EC_GROUP the underlying EC_GROUP object + * \return newly created EC_POINT object or NULL if an error occurred + */ +EC_POINT *EC_POINT_new(const EC_GROUP *group); + +/** Frees a EC_POINT object + * \param point EC_POINT object to be freed + */ +void EC_POINT_free(EC_POINT *point); + +/** Clears and frees a EC_POINT object + * \param point EC_POINT object to be cleared and freed + */ +void EC_POINT_clear_free(EC_POINT *point); + +/** Copies EC_POINT object + * \param dst destination EC_POINT object + * \param src source EC_POINT object + * \return 1 on success and 0 if an error occured + */ +int EC_POINT_copy(EC_POINT *dst, const EC_POINT *src); + +/** Creates a new EC_POINT object and copies the content of the supplied + * EC_POINT + * \param src source EC_POINT object + * \param group underlying the EC_GROUP object + * \return newly created EC_POINT object or NULL if an error occurred + */ +EC_POINT *EC_POINT_dup(const EC_POINT *src, const EC_GROUP *group); + +/** Returns the EC_METHOD used in EC_POINT object + * \param point EC_POINT object + * \return the EC_METHOD used + */ +const EC_METHOD *EC_POINT_method_of(const EC_POINT *point); + +/** Sets a point to infinity (neutral element) + * \param group underlying EC_GROUP object + * \param point EC_POINT to set to infinity + * \return 1 on success and 0 if an error occured + */ +int EC_POINT_set_to_infinity(const EC_GROUP *group, EC_POINT *point); + +/** Sets the jacobian projective coordinates of a EC_POINT over GFp + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM with the x-coordinate + * \param y BIGNUM with the y-coordinate + * \param z BIGNUM with the z-coordinate + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occured + */ +int EC_POINT_set_Jprojective_coordinates_GFp(const EC_GROUP *group, + EC_POINT *p, const BIGNUM *x, + const BIGNUM *y, const BIGNUM *z, + BN_CTX *ctx); + +/** Gets the jacobian projective coordinates of a EC_POINT over GFp + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM for the x-coordinate + * \param y BIGNUM for the y-coordinate + * \param z BIGNUM for the z-coordinate + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occured + */ +int EC_POINT_get_Jprojective_coordinates_GFp(const EC_GROUP *group, + const EC_POINT *p, BIGNUM *x, + BIGNUM *y, BIGNUM *z, + BN_CTX *ctx); + +/** Sets the affine coordinates of a EC_POINT over GFp + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM with the x-coordinate + * \param y BIGNUM with the y-coordinate + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occured + */ +int EC_POINT_set_affine_coordinates_GFp(const EC_GROUP *group, EC_POINT *p, + const BIGNUM *x, const BIGNUM *y, + BN_CTX *ctx); + +/** Gets the affine coordinates of a EC_POINT over GFp + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM for the x-coordinate + * \param y BIGNUM for the y-coordinate + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occured + */ +int EC_POINT_get_affine_coordinates_GFp(const EC_GROUP *group, + const EC_POINT *p, BIGNUM *x, + BIGNUM *y, BN_CTX *ctx); + +/** Sets the x9.62 compressed coordinates of a EC_POINT over GFp + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM with x-coordinate + * \param y_bit integer with the y-Bit (either 0 or 1) + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occured + */ +int EC_POINT_set_compressed_coordinates_GFp(const EC_GROUP *group, + EC_POINT *p, const BIGNUM *x, + int y_bit, BN_CTX *ctx); +# ifndef OPENSSL_NO_EC2M +/** Sets the affine coordinates of a EC_POINT over GF2m + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM with the x-coordinate + * \param y BIGNUM with the y-coordinate + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occured + */ +int EC_POINT_set_affine_coordinates_GF2m(const EC_GROUP *group, EC_POINT *p, + const BIGNUM *x, const BIGNUM *y, + BN_CTX *ctx); + +/** Gets the affine coordinates of a EC_POINT over GF2m + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM for the x-coordinate + * \param y BIGNUM for the y-coordinate + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occured + */ +int EC_POINT_get_affine_coordinates_GF2m(const EC_GROUP *group, + const EC_POINT *p, BIGNUM *x, + BIGNUM *y, BN_CTX *ctx); + +/** Sets the x9.62 compressed coordinates of a EC_POINT over GF2m + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM with x-coordinate + * \param y_bit integer with the y-Bit (either 0 or 1) + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occured + */ +int EC_POINT_set_compressed_coordinates_GF2m(const EC_GROUP *group, + EC_POINT *p, const BIGNUM *x, + int y_bit, BN_CTX *ctx); +# endif +/** Encodes a EC_POINT object to a octet string + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param form point conversion form + * \param buf memory buffer for the result. If NULL the function returns + * required buffer size. + * \param len length of the memory buffer + * \param ctx BN_CTX object (optional) + * \return the length of the encoded octet string or 0 if an error occurred + */ +size_t EC_POINT_point2oct(const EC_GROUP *group, const EC_POINT *p, + point_conversion_form_t form, + unsigned char *buf, size_t len, BN_CTX *ctx); + +/** Decodes a EC_POINT from a octet string + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param buf memory buffer with the encoded ec point + * \param len length of the encoded ec point + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occured + */ +int EC_POINT_oct2point(const EC_GROUP *group, EC_POINT *p, + const unsigned char *buf, size_t len, BN_CTX *ctx); + +/* other interfaces to point2oct/oct2point: */ +BIGNUM *EC_POINT_point2bn(const EC_GROUP *, const EC_POINT *, + point_conversion_form_t form, BIGNUM *, BN_CTX *); +EC_POINT *EC_POINT_bn2point(const EC_GROUP *, const BIGNUM *, + EC_POINT *, BN_CTX *); +char *EC_POINT_point2hex(const EC_GROUP *, const EC_POINT *, + point_conversion_form_t form, BN_CTX *); +EC_POINT *EC_POINT_hex2point(const EC_GROUP *, const char *, + EC_POINT *, BN_CTX *); + +/********************************************************************/ +/* functions for doing EC_POINT arithmetic */ +/********************************************************************/ + +/** Computes the sum of two EC_POINT + * \param group underlying EC_GROUP object + * \param r EC_POINT object for the result (r = a + b) + * \param a EC_POINT object with the first summand + * \param b EC_POINT object with the second summand + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occured + */ +int EC_POINT_add(const EC_GROUP *group, EC_POINT *r, const EC_POINT *a, + const EC_POINT *b, BN_CTX *ctx); + +/** Computes the double of a EC_POINT + * \param group underlying EC_GROUP object + * \param r EC_POINT object for the result (r = 2 * a) + * \param a EC_POINT object + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occured + */ +int EC_POINT_dbl(const EC_GROUP *group, EC_POINT *r, const EC_POINT *a, + BN_CTX *ctx); + +/** Computes the inverse of a EC_POINT + * \param group underlying EC_GROUP object + * \param a EC_POINT object to be inverted (it's used for the result as well) + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occured + */ +int EC_POINT_invert(const EC_GROUP *group, EC_POINT *a, BN_CTX *ctx); + +/** Checks whether the point is the neutral element of the group + * \param group the underlying EC_GROUP object + * \param p EC_POINT object + * \return 1 if the point is the neutral element and 0 otherwise + */ +int EC_POINT_is_at_infinity(const EC_GROUP *group, const EC_POINT *p); + +/** Checks whether the point is on the curve + * \param group underlying EC_GROUP object + * \param point EC_POINT object to check + * \param ctx BN_CTX object (optional) + * \return 1 if point if on the curve and 0 otherwise + */ +int EC_POINT_is_on_curve(const EC_GROUP *group, const EC_POINT *point, + BN_CTX *ctx); + +/** Compares two EC_POINTs + * \param group underlying EC_GROUP object + * \param a first EC_POINT object + * \param b second EC_POINT object + * \param ctx BN_CTX object (optional) + * \return 0 if both points are equal and a value != 0 otherwise + */ +int EC_POINT_cmp(const EC_GROUP *group, const EC_POINT *a, const EC_POINT *b, + BN_CTX *ctx); + +int EC_POINT_make_affine(const EC_GROUP *group, EC_POINT *point, BN_CTX *ctx); +int EC_POINTs_make_affine(const EC_GROUP *group, size_t num, + EC_POINT *points[], BN_CTX *ctx); + +/** Computes r = generator * n sum_{i=0}^{num-1} p[i] * m[i] + * \param group underlying EC_GROUP object + * \param r EC_POINT object for the result + * \param n BIGNUM with the multiplier for the group generator (optional) + * \param num number futher summands + * \param p array of size num of EC_POINT objects + * \param m array of size num of BIGNUM objects + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occured + */ +int EC_POINTs_mul(const EC_GROUP *group, EC_POINT *r, const BIGNUM *n, + size_t num, const EC_POINT *p[], const BIGNUM *m[], + BN_CTX *ctx); + +/** Computes r = generator * n + q * m + * \param group underlying EC_GROUP object + * \param r EC_POINT object for the result + * \param n BIGNUM with the multiplier for the group generator (optional) + * \param q EC_POINT object with the first factor of the second summand + * \param m BIGNUM with the second factor of the second summand + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occured + */ +int EC_POINT_mul(const EC_GROUP *group, EC_POINT *r, const BIGNUM *n, + const EC_POINT *q, const BIGNUM *m, BN_CTX *ctx); + +/** Stores multiples of generator for faster point multiplication + * \param group EC_GROUP object + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occured + */ +int EC_GROUP_precompute_mult(EC_GROUP *group, BN_CTX *ctx); + +/** Reports whether a precomputation has been done + * \param group EC_GROUP object + * \return 1 if a pre-computation has been done and 0 otherwise + */ +int EC_GROUP_have_precompute_mult(const EC_GROUP *group); + +/********************************************************************/ +/* ASN1 stuff */ +/********************************************************************/ + +/* + * EC_GROUP_get_basis_type() returns the NID of the basis type used to + * represent the field elements + */ +int EC_GROUP_get_basis_type(const EC_GROUP *); +# ifndef OPENSSL_NO_EC2M +int EC_GROUP_get_trinomial_basis(const EC_GROUP *, unsigned int *k); +int EC_GROUP_get_pentanomial_basis(const EC_GROUP *, unsigned int *k1, + unsigned int *k2, unsigned int *k3); +# endif + +# define OPENSSL_EC_NAMED_CURVE 0x001 + +typedef struct ecpk_parameters_st ECPKPARAMETERS; + +EC_GROUP *d2i_ECPKParameters(EC_GROUP **, const unsigned char **in, long len); +int i2d_ECPKParameters(const EC_GROUP *, unsigned char **out); + +# define d2i_ECPKParameters_bio(bp,x) ASN1_d2i_bio_of(EC_GROUP,NULL,d2i_ECPKParameters,bp,x) +# define i2d_ECPKParameters_bio(bp,x) ASN1_i2d_bio_of_const(EC_GROUP,i2d_ECPKParameters,bp,x) +# define d2i_ECPKParameters_fp(fp,x) (EC_GROUP *)ASN1_d2i_fp(NULL, \ + (char *(*)())d2i_ECPKParameters,(fp),(unsigned char **)(x)) +# define i2d_ECPKParameters_fp(fp,x) ASN1_i2d_fp(i2d_ECPKParameters,(fp), \ + (unsigned char *)(x)) + +# ifndef OPENSSL_NO_BIO +int ECPKParameters_print(BIO *bp, const EC_GROUP *x, int off); +# endif +# ifndef OPENSSL_NO_FP_API +int ECPKParameters_print_fp(FILE *fp, const EC_GROUP *x, int off); +# endif + +/********************************************************************/ +/* EC_KEY functions */ +/********************************************************************/ + +typedef struct ec_key_st EC_KEY; + +/* some values for the encoding_flag */ +# define EC_PKEY_NO_PARAMETERS 0x001 +# define EC_PKEY_NO_PUBKEY 0x002 + +/* some values for the flags field */ +# define EC_FLAG_NON_FIPS_ALLOW 0x1 +# define EC_FLAG_FIPS_CHECKED 0x2 + +/** Creates a new EC_KEY object. + * \return EC_KEY object or NULL if an error occurred. + */ +EC_KEY *EC_KEY_new(void); + +int EC_KEY_get_flags(const EC_KEY *key); + +void EC_KEY_set_flags(EC_KEY *key, int flags); + +void EC_KEY_clear_flags(EC_KEY *key, int flags); + +/** Creates a new EC_KEY object using a named curve as underlying + * EC_GROUP object. + * \param nid NID of the named curve. + * \return EC_KEY object or NULL if an error occurred. + */ +EC_KEY *EC_KEY_new_by_curve_name(int nid); + +/** Frees a EC_KEY object. + * \param key EC_KEY object to be freed. + */ +void EC_KEY_free(EC_KEY *key); + +/** Copies a EC_KEY object. + * \param dst destination EC_KEY object + * \param src src EC_KEY object + * \return dst or NULL if an error occurred. + */ +EC_KEY *EC_KEY_copy(EC_KEY *dst, const EC_KEY *src); + +/** Creates a new EC_KEY object and copies the content from src to it. + * \param src the source EC_KEY object + * \return newly created EC_KEY object or NULL if an error occurred. + */ +EC_KEY *EC_KEY_dup(const EC_KEY *src); + +/** Increases the internal reference count of a EC_KEY object. + * \param key EC_KEY object + * \return 1 on success and 0 if an error occurred. + */ +int EC_KEY_up_ref(EC_KEY *key); + +/** Returns the EC_GROUP object of a EC_KEY object + * \param key EC_KEY object + * \return the EC_GROUP object (possibly NULL). + */ +const EC_GROUP *EC_KEY_get0_group(const EC_KEY *key); + +/** Sets the EC_GROUP of a EC_KEY object. + * \param key EC_KEY object + * \param group EC_GROUP to use in the EC_KEY object (note: the EC_KEY + * object will use an own copy of the EC_GROUP). + * \return 1 on success and 0 if an error occurred. + */ +int EC_KEY_set_group(EC_KEY *key, const EC_GROUP *group); + +/** Returns the private key of a EC_KEY object. + * \param key EC_KEY object + * \return a BIGNUM with the private key (possibly NULL). + */ +const BIGNUM *EC_KEY_get0_private_key(const EC_KEY *key); + +/** Sets the private key of a EC_KEY object. + * \param key EC_KEY object + * \param prv BIGNUM with the private key (note: the EC_KEY object + * will use an own copy of the BIGNUM). + * \return 1 on success and 0 if an error occurred. + */ +int EC_KEY_set_private_key(EC_KEY *key, const BIGNUM *prv); + +/** Returns the public key of a EC_KEY object. + * \param key the EC_KEY object + * \return a EC_POINT object with the public key (possibly NULL) + */ +const EC_POINT *EC_KEY_get0_public_key(const EC_KEY *key); + +/** Sets the public key of a EC_KEY object. + * \param key EC_KEY object + * \param pub EC_POINT object with the public key (note: the EC_KEY object + * will use an own copy of the EC_POINT object). + * \return 1 on success and 0 if an error occurred. + */ +int EC_KEY_set_public_key(EC_KEY *key, const EC_POINT *pub); + +unsigned EC_KEY_get_enc_flags(const EC_KEY *key); +void EC_KEY_set_enc_flags(EC_KEY *eckey, unsigned int flags); +point_conversion_form_t EC_KEY_get_conv_form(const EC_KEY *key); +void EC_KEY_set_conv_form(EC_KEY *eckey, point_conversion_form_t cform); +/* functions to set/get method specific data */ +void *EC_KEY_get_key_method_data(EC_KEY *key, + void *(*dup_func) (void *), + void (*free_func) (void *), + void (*clear_free_func) (void *)); +/** Sets the key method data of an EC_KEY object, if none has yet been set. + * \param key EC_KEY object + * \param data opaque data to install. + * \param dup_func a function that duplicates |data|. + * \param free_func a function that frees |data|. + * \param clear_free_func a function that wipes and frees |data|. + * \return the previously set data pointer, or NULL if |data| was inserted. + */ +void *EC_KEY_insert_key_method_data(EC_KEY *key, void *data, + void *(*dup_func) (void *), + void (*free_func) (void *), + void (*clear_free_func) (void *)); +/* wrapper functions for the underlying EC_GROUP object */ +void EC_KEY_set_asn1_flag(EC_KEY *eckey, int asn1_flag); + +/** Creates a table of pre-computed multiples of the generator to + * accelerate further EC_KEY operations. + * \param key EC_KEY object + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred. + */ +int EC_KEY_precompute_mult(EC_KEY *key, BN_CTX *ctx); + +/** Creates a new ec private (and optional a new public) key. + * \param key EC_KEY object + * \return 1 on success and 0 if an error occurred. + */ +int EC_KEY_generate_key(EC_KEY *key); + +/** Verifies that a private and/or public key is valid. + * \param key the EC_KEY object + * \return 1 on success and 0 otherwise. + */ +int EC_KEY_check_key(const EC_KEY *key); + +/** Sets a public key from affine coordindates performing + * neccessary NIST PKV tests. + * \param key the EC_KEY object + * \param x public key x coordinate + * \param y public key y coordinate + * \return 1 on success and 0 otherwise. + */ +int EC_KEY_set_public_key_affine_coordinates(EC_KEY *key, BIGNUM *x, + BIGNUM *y); + +/********************************************************************/ +/* de- and encoding functions for SEC1 ECPrivateKey */ +/********************************************************************/ + +/** Decodes a private key from a memory buffer. + * \param key a pointer to a EC_KEY object which should be used (or NULL) + * \param in pointer to memory with the DER encoded private key + * \param len length of the DER encoded private key + * \return the decoded private key or NULL if an error occurred. + */ +EC_KEY *d2i_ECPrivateKey(EC_KEY **key, const unsigned char **in, long len); + +/** Encodes a private key object and stores the result in a buffer. + * \param key the EC_KEY object to encode + * \param out the buffer for the result (if NULL the function returns number + * of bytes needed). + * \return 1 on success and 0 if an error occurred. + */ +int i2d_ECPrivateKey(EC_KEY *key, unsigned char **out); + +/********************************************************************/ +/* de- and encoding functions for EC parameters */ +/********************************************************************/ + +/** Decodes ec parameter from a memory buffer. + * \param key a pointer to a EC_KEY object which should be used (or NULL) + * \param in pointer to memory with the DER encoded ec parameters + * \param len length of the DER encoded ec parameters + * \return a EC_KEY object with the decoded parameters or NULL if an error + * occurred. + */ +EC_KEY *d2i_ECParameters(EC_KEY **key, const unsigned char **in, long len); + +/** Encodes ec parameter and stores the result in a buffer. + * \param key the EC_KEY object with ec paramters to encode + * \param out the buffer for the result (if NULL the function returns number + * of bytes needed). + * \return 1 on success and 0 if an error occurred. + */ +int i2d_ECParameters(EC_KEY *key, unsigned char **out); + +/********************************************************************/ +/* de- and encoding functions for EC public key */ +/* (octet string, not DER -- hence 'o2i' and 'i2o') */ +/********************************************************************/ + +/** Decodes a ec public key from a octet string. + * \param key a pointer to a EC_KEY object which should be used + * \param in memory buffer with the encoded public key + * \param len length of the encoded public key + * \return EC_KEY object with decoded public key or NULL if an error + * occurred. + */ +EC_KEY *o2i_ECPublicKey(EC_KEY **key, const unsigned char **in, long len); + +/** Encodes a ec public key in an octet string. + * \param key the EC_KEY object with the public key + * \param out the buffer for the result (if NULL the function returns number + * of bytes needed). + * \return 1 on success and 0 if an error occurred + */ +int i2o_ECPublicKey(EC_KEY *key, unsigned char **out); + +# ifndef OPENSSL_NO_BIO +/** Prints out the ec parameters on human readable form. + * \param bp BIO object to which the information is printed + * \param key EC_KEY object + * \return 1 on success and 0 if an error occurred + */ +int ECParameters_print(BIO *bp, const EC_KEY *key); + +/** Prints out the contents of a EC_KEY object + * \param bp BIO object to which the information is printed + * \param key EC_KEY object + * \param off line offset + * \return 1 on success and 0 if an error occurred + */ +int EC_KEY_print(BIO *bp, const EC_KEY *key, int off); + +# endif +# ifndef OPENSSL_NO_FP_API +/** Prints out the ec parameters on human readable form. + * \param fp file descriptor to which the information is printed + * \param key EC_KEY object + * \return 1 on success and 0 if an error occurred + */ +int ECParameters_print_fp(FILE *fp, const EC_KEY *key); + +/** Prints out the contents of a EC_KEY object + * \param fp file descriptor to which the information is printed + * \param key EC_KEY object + * \param off line offset + * \return 1 on success and 0 if an error occurred + */ +int EC_KEY_print_fp(FILE *fp, const EC_KEY *key, int off); + +# endif + +# define ECParameters_dup(x) ASN1_dup_of(EC_KEY,i2d_ECParameters,d2i_ECParameters,x) + +# ifndef __cplusplus +# if defined(__SUNPRO_C) +# if __SUNPRO_C >= 0x520 +# pragma error_messages (default,E_ARRAY_OF_INCOMPLETE_NONAME,E_ARRAY_OF_INCOMPLETE) +# endif +# endif +# endif + +# define EVP_PKEY_CTX_set_ec_paramgen_curve_nid(ctx, nid) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ + EVP_PKEY_OP_PARAMGEN|EVP_PKEY_OP_KEYGEN, \ + EVP_PKEY_CTRL_EC_PARAMGEN_CURVE_NID, nid, NULL) + +# define EVP_PKEY_CTX_set_ec_param_enc(ctx, flag) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ + EVP_PKEY_OP_PARAMGEN|EVP_PKEY_OP_KEYGEN, \ + EVP_PKEY_CTRL_EC_PARAM_ENC, flag, NULL) + +# define EVP_PKEY_CTX_set_ecdh_cofactor_mode(ctx, flag) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_EC_ECDH_COFACTOR, flag, NULL) + +# define EVP_PKEY_CTX_get_ecdh_cofactor_mode(ctx) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_EC_ECDH_COFACTOR, -2, NULL) + +# define EVP_PKEY_CTX_set_ecdh_kdf_type(ctx, kdf) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_EC_KDF_TYPE, kdf, NULL) + +# define EVP_PKEY_CTX_get_ecdh_kdf_type(ctx) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_EC_KDF_TYPE, -2, NULL) + +# define EVP_PKEY_CTX_set_ecdh_kdf_md(ctx, md) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_EC_KDF_MD, 0, (void *)md) + +# define EVP_PKEY_CTX_get_ecdh_kdf_md(ctx, pmd) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_GET_EC_KDF_MD, 0, (void *)pmd) + +# define EVP_PKEY_CTX_set_ecdh_kdf_outlen(ctx, len) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_EC_KDF_OUTLEN, len, NULL) + +# define EVP_PKEY_CTX_get_ecdh_kdf_outlen(ctx, plen) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_GET_EC_KDF_OUTLEN, 0, (void *)plen) + +# define EVP_PKEY_CTX_set0_ecdh_kdf_ukm(ctx, p, plen) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_EC_KDF_UKM, plen, (void *)p) + +# define EVP_PKEY_CTX_get0_ecdh_kdf_ukm(ctx, p) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_GET_EC_KDF_UKM, 0, (void *)p) + +# define EVP_PKEY_CTRL_EC_PARAMGEN_CURVE_NID (EVP_PKEY_ALG_CTRL + 1) +# define EVP_PKEY_CTRL_EC_PARAM_ENC (EVP_PKEY_ALG_CTRL + 2) +# define EVP_PKEY_CTRL_EC_ECDH_COFACTOR (EVP_PKEY_ALG_CTRL + 3) +# define EVP_PKEY_CTRL_EC_KDF_TYPE (EVP_PKEY_ALG_CTRL + 4) +# define EVP_PKEY_CTRL_EC_KDF_MD (EVP_PKEY_ALG_CTRL + 5) +# define EVP_PKEY_CTRL_GET_EC_KDF_MD (EVP_PKEY_ALG_CTRL + 6) +# define EVP_PKEY_CTRL_EC_KDF_OUTLEN (EVP_PKEY_ALG_CTRL + 7) +# define EVP_PKEY_CTRL_GET_EC_KDF_OUTLEN (EVP_PKEY_ALG_CTRL + 8) +# define EVP_PKEY_CTRL_EC_KDF_UKM (EVP_PKEY_ALG_CTRL + 9) +# define EVP_PKEY_CTRL_GET_EC_KDF_UKM (EVP_PKEY_ALG_CTRL + 10) +/* KDF types */ +# define EVP_PKEY_ECDH_KDF_NONE 1 +# define EVP_PKEY_ECDH_KDF_X9_62 2 + +/* BEGIN ERROR CODES */ +/* + * The following lines are auto generated by the script mkerr.pl. Any changes + * made after this point may be overwritten when the script is next run. + */ +void ERR_load_EC_strings(void); + +/* Error codes for the EC functions. */ + +/* Function codes. */ +# define EC_F_BN_TO_FELEM 224 +# define EC_F_COMPUTE_WNAF 143 +# define EC_F_D2I_ECPARAMETERS 144 +# define EC_F_D2I_ECPKPARAMETERS 145 +# define EC_F_D2I_ECPRIVATEKEY 146 +# define EC_F_DO_EC_KEY_PRINT 221 +# define EC_F_ECDH_CMS_DECRYPT 238 +# define EC_F_ECDH_CMS_SET_SHARED_INFO 239 +# define EC_F_ECKEY_PARAM2TYPE 223 +# define EC_F_ECKEY_PARAM_DECODE 212 +# define EC_F_ECKEY_PRIV_DECODE 213 +# define EC_F_ECKEY_PRIV_ENCODE 214 +# define EC_F_ECKEY_PUB_DECODE 215 +# define EC_F_ECKEY_PUB_ENCODE 216 +# define EC_F_ECKEY_TYPE2PARAM 220 +# define EC_F_ECPARAMETERS_PRINT 147 +# define EC_F_ECPARAMETERS_PRINT_FP 148 +# define EC_F_ECPKPARAMETERS_PRINT 149 +# define EC_F_ECPKPARAMETERS_PRINT_FP 150 +# define EC_F_ECP_NIST_MOD_192 203 +# define EC_F_ECP_NIST_MOD_224 204 +# define EC_F_ECP_NIST_MOD_256 205 +# define EC_F_ECP_NIST_MOD_521 206 +# define EC_F_EC_ASN1_GROUP2CURVE 153 +# define EC_F_EC_ASN1_GROUP2FIELDID 154 +# define EC_F_EC_ASN1_GROUP2PARAMETERS 155 +# define EC_F_EC_ASN1_GROUP2PKPARAMETERS 156 +# define EC_F_EC_ASN1_PARAMETERS2GROUP 157 +# define EC_F_EC_ASN1_PKPARAMETERS2GROUP 158 +# define EC_F_EC_EX_DATA_SET_DATA 211 +# define EC_F_EC_GF2M_MONTGOMERY_POINT_MULTIPLY 208 +# define EC_F_EC_GF2M_SIMPLE_GROUP_CHECK_DISCRIMINANT 159 +# define EC_F_EC_GF2M_SIMPLE_GROUP_SET_CURVE 195 +# define EC_F_EC_GF2M_SIMPLE_OCT2POINT 160 +# define EC_F_EC_GF2M_SIMPLE_POINT2OCT 161 +# define EC_F_EC_GF2M_SIMPLE_POINT_GET_AFFINE_COORDINATES 162 +# define EC_F_EC_GF2M_SIMPLE_POINT_SET_AFFINE_COORDINATES 163 +# define EC_F_EC_GF2M_SIMPLE_SET_COMPRESSED_COORDINATES 164 +# define EC_F_EC_GFP_MONT_FIELD_DECODE 133 +# define EC_F_EC_GFP_MONT_FIELD_ENCODE 134 +# define EC_F_EC_GFP_MONT_FIELD_MUL 131 +# define EC_F_EC_GFP_MONT_FIELD_SET_TO_ONE 209 +# define EC_F_EC_GFP_MONT_FIELD_SQR 132 +# define EC_F_EC_GFP_MONT_GROUP_SET_CURVE 189 +# define EC_F_EC_GFP_MONT_GROUP_SET_CURVE_GFP 135 +# define EC_F_EC_GFP_NISTP224_GROUP_SET_CURVE 225 +# define EC_F_EC_GFP_NISTP224_POINTS_MUL 228 +# define EC_F_EC_GFP_NISTP224_POINT_GET_AFFINE_COORDINATES 226 +# define EC_F_EC_GFP_NISTP256_GROUP_SET_CURVE 230 +# define EC_F_EC_GFP_NISTP256_POINTS_MUL 231 +# define EC_F_EC_GFP_NISTP256_POINT_GET_AFFINE_COORDINATES 232 +# define EC_F_EC_GFP_NISTP521_GROUP_SET_CURVE 233 +# define EC_F_EC_GFP_NISTP521_POINTS_MUL 234 +# define EC_F_EC_GFP_NISTP521_POINT_GET_AFFINE_COORDINATES 235 +# define EC_F_EC_GFP_NIST_FIELD_MUL 200 +# define EC_F_EC_GFP_NIST_FIELD_SQR 201 +# define EC_F_EC_GFP_NIST_GROUP_SET_CURVE 202 +# define EC_F_EC_GFP_SIMPLE_GROUP_CHECK_DISCRIMINANT 165 +# define EC_F_EC_GFP_SIMPLE_GROUP_SET_CURVE 166 +# define EC_F_EC_GFP_SIMPLE_GROUP_SET_CURVE_GFP 100 +# define EC_F_EC_GFP_SIMPLE_GROUP_SET_GENERATOR 101 +# define EC_F_EC_GFP_SIMPLE_MAKE_AFFINE 102 +# define EC_F_EC_GFP_SIMPLE_OCT2POINT 103 +# define EC_F_EC_GFP_SIMPLE_POINT2OCT 104 +# define EC_F_EC_GFP_SIMPLE_POINTS_MAKE_AFFINE 137 +# define EC_F_EC_GFP_SIMPLE_POINT_GET_AFFINE_COORDINATES 167 +# define EC_F_EC_GFP_SIMPLE_POINT_GET_AFFINE_COORDINATES_GFP 105 +# define EC_F_EC_GFP_SIMPLE_POINT_SET_AFFINE_COORDINATES 168 +# define EC_F_EC_GFP_SIMPLE_POINT_SET_AFFINE_COORDINATES_GFP 128 +# define EC_F_EC_GFP_SIMPLE_SET_COMPRESSED_COORDINATES 169 +# define EC_F_EC_GFP_SIMPLE_SET_COMPRESSED_COORDINATES_GFP 129 +# define EC_F_EC_GROUP_CHECK 170 +# define EC_F_EC_GROUP_CHECK_DISCRIMINANT 171 +# define EC_F_EC_GROUP_COPY 106 +# define EC_F_EC_GROUP_GET0_GENERATOR 139 +# define EC_F_EC_GROUP_GET_COFACTOR 140 +# define EC_F_EC_GROUP_GET_CURVE_GF2M 172 +# define EC_F_EC_GROUP_GET_CURVE_GFP 130 +# define EC_F_EC_GROUP_GET_DEGREE 173 +# define EC_F_EC_GROUP_GET_ORDER 141 +# define EC_F_EC_GROUP_GET_PENTANOMIAL_BASIS 193 +# define EC_F_EC_GROUP_GET_TRINOMIAL_BASIS 194 +# define EC_F_EC_GROUP_NEW 108 +# define EC_F_EC_GROUP_NEW_BY_CURVE_NAME 174 +# define EC_F_EC_GROUP_NEW_FROM_DATA 175 +# define EC_F_EC_GROUP_PRECOMPUTE_MULT 142 +# define EC_F_EC_GROUP_SET_CURVE_GF2M 176 +# define EC_F_EC_GROUP_SET_CURVE_GFP 109 +# define EC_F_EC_GROUP_SET_EXTRA_DATA 110 +# define EC_F_EC_GROUP_SET_GENERATOR 111 +# define EC_F_EC_KEY_CHECK_KEY 177 +# define EC_F_EC_KEY_COPY 178 +# define EC_F_EC_KEY_GENERATE_KEY 179 +# define EC_F_EC_KEY_NEW 182 +# define EC_F_EC_KEY_PRINT 180 +# define EC_F_EC_KEY_PRINT_FP 181 +# define EC_F_EC_KEY_SET_PUBLIC_KEY_AFFINE_COORDINATES 229 +# define EC_F_EC_POINTS_MAKE_AFFINE 136 +# define EC_F_EC_POINT_ADD 112 +# define EC_F_EC_POINT_CMP 113 +# define EC_F_EC_POINT_COPY 114 +# define EC_F_EC_POINT_DBL 115 +# define EC_F_EC_POINT_GET_AFFINE_COORDINATES_GF2M 183 +# define EC_F_EC_POINT_GET_AFFINE_COORDINATES_GFP 116 +# define EC_F_EC_POINT_GET_JPROJECTIVE_COORDINATES_GFP 117 +# define EC_F_EC_POINT_INVERT 210 +# define EC_F_EC_POINT_IS_AT_INFINITY 118 +# define EC_F_EC_POINT_IS_ON_CURVE 119 +# define EC_F_EC_POINT_MAKE_AFFINE 120 +# define EC_F_EC_POINT_MUL 184 +# define EC_F_EC_POINT_NEW 121 +# define EC_F_EC_POINT_OCT2POINT 122 +# define EC_F_EC_POINT_POINT2OCT 123 +# define EC_F_EC_POINT_SET_AFFINE_COORDINATES_GF2M 185 +# define EC_F_EC_POINT_SET_AFFINE_COORDINATES_GFP 124 +# define EC_F_EC_POINT_SET_COMPRESSED_COORDINATES_GF2M 186 +# define EC_F_EC_POINT_SET_COMPRESSED_COORDINATES_GFP 125 +# define EC_F_EC_POINT_SET_JPROJECTIVE_COORDINATES_GFP 126 +# define EC_F_EC_POINT_SET_TO_INFINITY 127 +# define EC_F_EC_PRE_COMP_DUP 207 +# define EC_F_EC_PRE_COMP_NEW 196 +# define EC_F_EC_WNAF_MUL 187 +# define EC_F_EC_WNAF_PRECOMPUTE_MULT 188 +# define EC_F_I2D_ECPARAMETERS 190 +# define EC_F_I2D_ECPKPARAMETERS 191 +# define EC_F_I2D_ECPRIVATEKEY 192 +# define EC_F_I2O_ECPUBLICKEY 151 +# define EC_F_NISTP224_PRE_COMP_NEW 227 +# define EC_F_NISTP256_PRE_COMP_NEW 236 +# define EC_F_NISTP521_PRE_COMP_NEW 237 +# define EC_F_ECP_NISTZ256_GET_AFFINE 240 +# define EC_F_ECP_NISTZ256_POINTS_MUL 241 +# define EC_F_ECP_NISTZ256_WINDOWED_MUL 242 +# define EC_F_ECP_NISTZ256_MULT_PRECOMPUTE 243 +# define EC_F_ECP_NISTZ256_PRE_COMP_NEW 244 +# define EC_F_O2I_ECPUBLICKEY 152 +# define EC_F_OLD_EC_PRIV_DECODE 222 +# define EC_F_PKEY_EC_CTRL 197 +# define EC_F_PKEY_EC_CTRL_STR 198 +# define EC_F_PKEY_EC_DERIVE 217 +# define EC_F_PKEY_EC_KEYGEN 199 +# define EC_F_PKEY_EC_PARAMGEN 219 +# define EC_F_PKEY_EC_SIGN 218 + +/* Reason codes. */ +# define EC_R_ASN1_ERROR 115 +# define EC_R_ASN1_UNKNOWN_FIELD 116 +# define EC_R_BIGNUM_OUT_OF_RANGE 144 +# define EC_R_BUFFER_TOO_SMALL 100 +# define EC_R_COORDINATES_OUT_OF_RANGE 146 +# define EC_R_D2I_ECPKPARAMETERS_FAILURE 117 +# define EC_R_DECODE_ERROR 142 +# define EC_R_DISCRIMINANT_IS_ZERO 118 +# define EC_R_EC_GROUP_NEW_BY_NAME_FAILURE 119 +# define EC_R_FIELD_TOO_LARGE 143 +# define EC_R_GF2M_NOT_SUPPORTED 147 +# define EC_R_GROUP2PKPARAMETERS_FAILURE 120 +# define EC_R_I2D_ECPKPARAMETERS_FAILURE 121 +# define EC_R_INCOMPATIBLE_OBJECTS 101 +# define EC_R_INVALID_ARGUMENT 112 +# define EC_R_INVALID_COMPRESSED_POINT 110 +# define EC_R_INVALID_COMPRESSION_BIT 109 +# define EC_R_INVALID_CURVE 141 +# define EC_R_INVALID_DIGEST 151 +# define EC_R_INVALID_DIGEST_TYPE 138 +# define EC_R_INVALID_ENCODING 102 +# define EC_R_INVALID_FIELD 103 +# define EC_R_INVALID_FORM 104 +# define EC_R_INVALID_GROUP_ORDER 122 +# define EC_R_INVALID_PENTANOMIAL_BASIS 132 +# define EC_R_INVALID_PRIVATE_KEY 123 +# define EC_R_INVALID_TRINOMIAL_BASIS 137 +# define EC_R_KDF_PARAMETER_ERROR 148 +# define EC_R_KEYS_NOT_SET 140 +# define EC_R_MISSING_PARAMETERS 124 +# define EC_R_MISSING_PRIVATE_KEY 125 +# define EC_R_NOT_A_NIST_PRIME 135 +# define EC_R_NOT_A_SUPPORTED_NIST_PRIME 136 +# define EC_R_NOT_IMPLEMENTED 126 +# define EC_R_NOT_INITIALIZED 111 +# define EC_R_NO_FIELD_MOD 133 +# define EC_R_NO_PARAMETERS_SET 139 +# define EC_R_PASSED_NULL_PARAMETER 134 +# define EC_R_PEER_KEY_ERROR 149 +# define EC_R_PKPARAMETERS2GROUP_FAILURE 127 +# define EC_R_POINT_AT_INFINITY 106 +# define EC_R_POINT_IS_NOT_ON_CURVE 107 +# define EC_R_SHARED_INFO_ERROR 150 +# define EC_R_SLOT_FULL 108 +# define EC_R_UNDEFINED_GENERATOR 113 +# define EC_R_UNDEFINED_ORDER 128 +# define EC_R_UNKNOWN_GROUP 129 +# define EC_R_UNKNOWN_ORDER 114 +# define EC_R_UNSUPPORTED_FIELD 131 +# define EC_R_WRONG_CURVE_PARAMETERS 145 +# define EC_R_WRONG_ORDER 130 + +#ifdef __cplusplus +} +#endif +#endif diff --git a/ext/openssl-win32/inc32/openssl/ecdh.h b/ext/openssl-win32/inc32/openssl/ecdh.h new file mode 100644 index 00000000..25348b30 --- /dev/null +++ b/ext/openssl-win32/inc32/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/ext/openssl-win32/inc32/openssl/ecdsa.h b/ext/openssl-win32/inc32/openssl/ecdsa.h new file mode 100644 index 00000000..c4016ac3 --- /dev/null +++ b/ext/openssl-win32/inc32/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(ECDSA_METHOD *ecdsa_method); + +/** frees a ECDSA_METHOD structure + * \param ecdsa_method pointer to the ECDSA_METHOD structure + */ +void ECDSA_METHOD_free(ECDSA_METHOD *ecdsa_method); + +/** Sets application specific data in the ECDSA_METHOD + * \param ecdsa_method pointer to existing ECDSA_METHOD + * \param app application specific data to set + */ + +void ECDSA_METHOD_set_app_data(ECDSA_METHOD *ecdsa_method, void *app); + +/** Returns application specific data from a ECDSA_METHOD structure + * \param ecdsa_method pointer to ECDSA_METHOD structure + * \return pointer to application specific data. + */ + +void *ECDSA_METHOD_get_app_data(ECDSA_METHOD *ecdsa_method); + +/** Set the ECDSA_do_sign function in the ECDSA_METHOD + * \param ecdsa_method pointer to existing ECDSA_METHOD + * \param ecdsa_do_sign a funtion of type ECDSA_do_sign + */ + +void ECDSA_METHOD_set_sign(ECDSA_METHOD *ecdsa_method, + ECDSA_SIG *(*ecdsa_do_sign) (const unsigned char + *dgst, int dgst_len, + const BIGNUM *inv, + const BIGNUM *rp, + EC_KEY *eckey)); + +/** Set the ECDSA_sign_setup function in the ECDSA_METHOD + * \param ecdsa_method pointer to existing ECDSA_METHOD + * \param ecdsa_sign_setup a funtion of type ECDSA_sign_setup + */ + +void ECDSA_METHOD_set_sign_setup(ECDSA_METHOD *ecdsa_method, + int (*ecdsa_sign_setup) (EC_KEY *eckey, + BN_CTX *ctx, + BIGNUM **kinv, + BIGNUM **r)); + +/** Set the ECDSA_do_verify function in the ECDSA_METHOD + * \param ecdsa_method pointer to existing ECDSA_METHOD + * \param ecdsa_do_verify a funtion of type ECDSA_do_verify + */ + +void ECDSA_METHOD_set_verify(ECDSA_METHOD *ecdsa_method, + int (*ecdsa_do_verify) (const unsigned char + *dgst, int dgst_len, + const ECDSA_SIG *sig, + EC_KEY *eckey)); + +void ECDSA_METHOD_set_flags(ECDSA_METHOD *ecdsa_method, int flags); + +/** Set the flags field in the ECDSA_METHOD + * \param ecdsa_method pointer to existing ECDSA_METHOD + * \param flags flags value to set + */ + +void ECDSA_METHOD_set_name(ECDSA_METHOD *ecdsa_method, char *name); + +/** Set the name field in the ECDSA_METHOD + * \param ecdsa_method pointer to existing ECDSA_METHOD + * \param name name to set + */ + +/* BEGIN ERROR CODES */ +/* + * The following lines are auto generated by the script mkerr.pl. Any changes + * made after this point may be overwritten when the script is next run. + */ +void ERR_load_ECDSA_strings(void); + +/* Error codes for the ECDSA functions. */ + +/* Function codes. */ +# define ECDSA_F_ECDSA_CHECK 104 +# define ECDSA_F_ECDSA_DATA_NEW_METHOD 100 +# define ECDSA_F_ECDSA_DO_SIGN 101 +# define ECDSA_F_ECDSA_DO_VERIFY 102 +# define ECDSA_F_ECDSA_METHOD_NEW 105 +# define ECDSA_F_ECDSA_SIGN_SETUP 103 + +/* Reason codes. */ +# define ECDSA_R_BAD_SIGNATURE 100 +# define ECDSA_R_DATA_TOO_LARGE_FOR_KEY_SIZE 101 +# define ECDSA_R_ERR_EC_LIB 102 +# define ECDSA_R_MISSING_PARAMETERS 103 +# define ECDSA_R_NEED_NEW_SETUP_VALUES 106 +# define ECDSA_R_NON_FIPS_METHOD 107 +# define ECDSA_R_RANDOM_NUMBER_GENERATION_FAILED 104 +# define ECDSA_R_SIGNATURE_MALLOC_FAILED 105 + +#ifdef __cplusplus +} +#endif +#endif diff --git a/ext/openssl-win32/inc32/openssl/err.h b/ext/openssl-win32/inc32/openssl/err.h new file mode 100644 index 00000000..585aa8ba --- /dev/null +++ b/ext/openssl-win32/inc32/openssl/err.h @@ -0,0 +1,389 @@ +/* crypto/err/err.h */ +/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) + * All rights reserved. + * + * This package is an SSL implementation written + * by Eric Young (eay@cryptsoft.com). + * The implementation was written so as to conform with Netscapes SSL. + * + * This library is free for commercial and non-commercial use as long as + * the following conditions are aheared to. The following conditions + * apply to all code found in this distribution, be it the RC4, RSA, + * lhash, DES, etc., code; not just the SSL code. The SSL documentation + * included with this distribution is covered by the same copyright terms + * except that the holder is Tim Hudson (tjh@cryptsoft.com). + * + * Copyright remains Eric Young's, and as such any Copyright notices in + * the code are not to be removed. + * If this package is used in a product, Eric Young should be given attribution + * as the author of the parts of the library used. + * This can be in the form of a textual message at program startup or + * in documentation (online or textual) provided with the package. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * "This product includes cryptographic software written by + * Eric Young (eay@cryptsoft.com)" + * The word 'cryptographic' can be left out if the rouines from the library + * being used are not cryptographic related :-). + * 4. If you include any Windows specific code (or a derivative thereof) from + * the apps directory (application code) you must include an acknowledgement: + * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" + * + * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * The licence and distribution terms for any publically available version or + * derivative of this code cannot be changed. i.e. this code cannot simply be + * copied and put under another distribution licence + * [including the GNU Public Licence.] + */ +/* ==================================================================== + * Copyright (c) 1998-2006 The OpenSSL Project. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. All advertising materials mentioning features or use of this + * software must display the following acknowledgment: + * "This product includes software developed by the OpenSSL Project + * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" + * + * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to + * endorse or promote products derived from this software without + * prior written permission. For written permission, please contact + * openssl-core@openssl.org. + * + * 5. Products derived from this software may not be called "OpenSSL" + * nor may "OpenSSL" appear in their names without prior written + * permission of the OpenSSL Project. + * + * 6. Redistributions of any form whatsoever must retain the following + * acknowledgment: + * "This product includes software developed by the OpenSSL Project + * for use in the OpenSSL Toolkit (http://www.openssl.org/)" + * + * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY + * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * ==================================================================== + * + * This product includes cryptographic software written by Eric Young + * (eay@cryptsoft.com). This product includes software written by Tim + * Hudson (tjh@cryptsoft.com). + * + */ + +#ifndef HEADER_ERR_H +# define HEADER_ERR_H + +# include + +# ifndef OPENSSL_NO_FP_API +# include +# include +# endif + +# include +# ifndef OPENSSL_NO_BIO +# include +# endif +# ifndef OPENSSL_NO_LHASH +# include +# endif + +#ifdef __cplusplus +extern "C" { +#endif + +# ifndef OPENSSL_NO_ERR +# define ERR_PUT_error(a,b,c,d,e) ERR_put_error(a,b,c,d,e) +# else +# define ERR_PUT_error(a,b,c,d,e) ERR_put_error(a,b,c,NULL,0) +# endif + +# include + +# define ERR_TXT_MALLOCED 0x01 +# define ERR_TXT_STRING 0x02 + +# define ERR_FLAG_MARK 0x01 + +# define ERR_NUM_ERRORS 16 +typedef struct err_state_st { + CRYPTO_THREADID tid; + int err_flags[ERR_NUM_ERRORS]; + unsigned long err_buffer[ERR_NUM_ERRORS]; + char *err_data[ERR_NUM_ERRORS]; + int err_data_flags[ERR_NUM_ERRORS]; + const char *err_file[ERR_NUM_ERRORS]; + int err_line[ERR_NUM_ERRORS]; + int top, bottom; +} ERR_STATE; + +/* library */ +# define ERR_LIB_NONE 1 +# define ERR_LIB_SYS 2 +# define ERR_LIB_BN 3 +# define ERR_LIB_RSA 4 +# define ERR_LIB_DH 5 +# define ERR_LIB_EVP 6 +# define ERR_LIB_BUF 7 +# define ERR_LIB_OBJ 8 +# define ERR_LIB_PEM 9 +# define ERR_LIB_DSA 10 +# define ERR_LIB_X509 11 +/* #define ERR_LIB_METH 12 */ +# define ERR_LIB_ASN1 13 +# define ERR_LIB_CONF 14 +# define ERR_LIB_CRYPTO 15 +# define ERR_LIB_EC 16 +# define ERR_LIB_SSL 20 +/* #define ERR_LIB_SSL23 21 */ +/* #define ERR_LIB_SSL2 22 */ +/* #define ERR_LIB_SSL3 23 */ +/* #define ERR_LIB_RSAREF 30 */ +/* #define ERR_LIB_PROXY 31 */ +# define ERR_LIB_BIO 32 +# define ERR_LIB_PKCS7 33 +# define ERR_LIB_X509V3 34 +# define ERR_LIB_PKCS12 35 +# define ERR_LIB_RAND 36 +# define ERR_LIB_DSO 37 +# define ERR_LIB_ENGINE 38 +# define ERR_LIB_OCSP 39 +# define ERR_LIB_UI 40 +# define ERR_LIB_COMP 41 +# define ERR_LIB_ECDSA 42 +# define ERR_LIB_ECDH 43 +# define ERR_LIB_STORE 44 +# define ERR_LIB_FIPS 45 +# define ERR_LIB_CMS 46 +# define ERR_LIB_TS 47 +# define ERR_LIB_HMAC 48 +# define ERR_LIB_JPAKE 49 + +# define ERR_LIB_USER 128 + +# define SYSerr(f,r) ERR_PUT_error(ERR_LIB_SYS,(f),(r),__FILE__,__LINE__) +# define BNerr(f,r) ERR_PUT_error(ERR_LIB_BN,(f),(r),__FILE__,__LINE__) +# define RSAerr(f,r) ERR_PUT_error(ERR_LIB_RSA,(f),(r),__FILE__,__LINE__) +# define DHerr(f,r) ERR_PUT_error(ERR_LIB_DH,(f),(r),__FILE__,__LINE__) +# define EVPerr(f,r) ERR_PUT_error(ERR_LIB_EVP,(f),(r),__FILE__,__LINE__) +# define BUFerr(f,r) ERR_PUT_error(ERR_LIB_BUF,(f),(r),__FILE__,__LINE__) +# define OBJerr(f,r) ERR_PUT_error(ERR_LIB_OBJ,(f),(r),__FILE__,__LINE__) +# define PEMerr(f,r) ERR_PUT_error(ERR_LIB_PEM,(f),(r),__FILE__,__LINE__) +# define DSAerr(f,r) ERR_PUT_error(ERR_LIB_DSA,(f),(r),__FILE__,__LINE__) +# define X509err(f,r) ERR_PUT_error(ERR_LIB_X509,(f),(r),__FILE__,__LINE__) +# define ASN1err(f,r) ERR_PUT_error(ERR_LIB_ASN1,(f),(r),__FILE__,__LINE__) +# define CONFerr(f,r) ERR_PUT_error(ERR_LIB_CONF,(f),(r),__FILE__,__LINE__) +# define CRYPTOerr(f,r) ERR_PUT_error(ERR_LIB_CRYPTO,(f),(r),__FILE__,__LINE__) +# define ECerr(f,r) ERR_PUT_error(ERR_LIB_EC,(f),(r),__FILE__,__LINE__) +# define SSLerr(f,r) ERR_PUT_error(ERR_LIB_SSL,(f),(r),__FILE__,__LINE__) +# define BIOerr(f,r) ERR_PUT_error(ERR_LIB_BIO,(f),(r),__FILE__,__LINE__) +# define PKCS7err(f,r) ERR_PUT_error(ERR_LIB_PKCS7,(f),(r),__FILE__,__LINE__) +# define X509V3err(f,r) ERR_PUT_error(ERR_LIB_X509V3,(f),(r),__FILE__,__LINE__) +# define PKCS12err(f,r) ERR_PUT_error(ERR_LIB_PKCS12,(f),(r),__FILE__,__LINE__) +# define RANDerr(f,r) ERR_PUT_error(ERR_LIB_RAND,(f),(r),__FILE__,__LINE__) +# define DSOerr(f,r) ERR_PUT_error(ERR_LIB_DSO,(f),(r),__FILE__,__LINE__) +# define ENGINEerr(f,r) ERR_PUT_error(ERR_LIB_ENGINE,(f),(r),__FILE__,__LINE__) +# define OCSPerr(f,r) ERR_PUT_error(ERR_LIB_OCSP,(f),(r),__FILE__,__LINE__) +# define UIerr(f,r) ERR_PUT_error(ERR_LIB_UI,(f),(r),__FILE__,__LINE__) +# define COMPerr(f,r) ERR_PUT_error(ERR_LIB_COMP,(f),(r),__FILE__,__LINE__) +# define ECDSAerr(f,r) ERR_PUT_error(ERR_LIB_ECDSA,(f),(r),__FILE__,__LINE__) +# define ECDHerr(f,r) ERR_PUT_error(ERR_LIB_ECDH,(f),(r),__FILE__,__LINE__) +# define STOREerr(f,r) ERR_PUT_error(ERR_LIB_STORE,(f),(r),__FILE__,__LINE__) +# define FIPSerr(f,r) ERR_PUT_error(ERR_LIB_FIPS,(f),(r),__FILE__,__LINE__) +# define CMSerr(f,r) ERR_PUT_error(ERR_LIB_CMS,(f),(r),__FILE__,__LINE__) +# define TSerr(f,r) ERR_PUT_error(ERR_LIB_TS,(f),(r),__FILE__,__LINE__) +# define HMACerr(f,r) ERR_PUT_error(ERR_LIB_HMAC,(f),(r),__FILE__,__LINE__) +# define JPAKEerr(f,r) ERR_PUT_error(ERR_LIB_JPAKE,(f),(r),__FILE__,__LINE__) + +/* + * Borland C seems too stupid to be able to shift and do longs in the + * pre-processor :-( + */ +# define ERR_PACK(l,f,r) (((((unsigned long)l)&0xffL)*0x1000000)| \ + ((((unsigned long)f)&0xfffL)*0x1000)| \ + ((((unsigned long)r)&0xfffL))) +# define ERR_GET_LIB(l) (int)((((unsigned long)l)>>24L)&0xffL) +# define ERR_GET_FUNC(l) (int)((((unsigned long)l)>>12L)&0xfffL) +# define ERR_GET_REASON(l) (int)((l)&0xfffL) +# define ERR_FATAL_ERROR(l) (int)((l)&ERR_R_FATAL) + +/* OS functions */ +# define SYS_F_FOPEN 1 +# define SYS_F_CONNECT 2 +# define SYS_F_GETSERVBYNAME 3 +# define SYS_F_SOCKET 4 +# define SYS_F_IOCTLSOCKET 5 +# define SYS_F_BIND 6 +# define SYS_F_LISTEN 7 +# define SYS_F_ACCEPT 8 +# define SYS_F_WSASTARTUP 9/* Winsock stuff */ +# define SYS_F_OPENDIR 10 +# define SYS_F_FREAD 11 + +/* reasons */ +# define ERR_R_SYS_LIB ERR_LIB_SYS/* 2 */ +# define ERR_R_BN_LIB ERR_LIB_BN/* 3 */ +# define ERR_R_RSA_LIB ERR_LIB_RSA/* 4 */ +# define ERR_R_DH_LIB ERR_LIB_DH/* 5 */ +# define ERR_R_EVP_LIB ERR_LIB_EVP/* 6 */ +# define ERR_R_BUF_LIB ERR_LIB_BUF/* 7 */ +# define ERR_R_OBJ_LIB ERR_LIB_OBJ/* 8 */ +# define ERR_R_PEM_LIB ERR_LIB_PEM/* 9 */ +# define ERR_R_DSA_LIB ERR_LIB_DSA/* 10 */ +# define ERR_R_X509_LIB ERR_LIB_X509/* 11 */ +# define ERR_R_ASN1_LIB ERR_LIB_ASN1/* 13 */ +# define ERR_R_CONF_LIB ERR_LIB_CONF/* 14 */ +# define ERR_R_CRYPTO_LIB ERR_LIB_CRYPTO/* 15 */ +# define ERR_R_EC_LIB ERR_LIB_EC/* 16 */ +# define ERR_R_SSL_LIB ERR_LIB_SSL/* 20 */ +# define ERR_R_BIO_LIB ERR_LIB_BIO/* 32 */ +# define ERR_R_PKCS7_LIB ERR_LIB_PKCS7/* 33 */ +# define ERR_R_X509V3_LIB ERR_LIB_X509V3/* 34 */ +# define ERR_R_PKCS12_LIB ERR_LIB_PKCS12/* 35 */ +# define ERR_R_RAND_LIB ERR_LIB_RAND/* 36 */ +# define ERR_R_DSO_LIB ERR_LIB_DSO/* 37 */ +# define ERR_R_ENGINE_LIB ERR_LIB_ENGINE/* 38 */ +# define ERR_R_OCSP_LIB ERR_LIB_OCSP/* 39 */ +# define ERR_R_UI_LIB ERR_LIB_UI/* 40 */ +# define ERR_R_COMP_LIB ERR_LIB_COMP/* 41 */ +# define ERR_R_ECDSA_LIB ERR_LIB_ECDSA/* 42 */ +# define ERR_R_ECDH_LIB ERR_LIB_ECDH/* 43 */ +# define ERR_R_STORE_LIB ERR_LIB_STORE/* 44 */ +# define ERR_R_TS_LIB ERR_LIB_TS/* 45 */ + +# define ERR_R_NESTED_ASN1_ERROR 58 +# define ERR_R_BAD_ASN1_OBJECT_HEADER 59 +# define ERR_R_BAD_GET_ASN1_OBJECT_CALL 60 +# define ERR_R_EXPECTING_AN_ASN1_SEQUENCE 61 +# define ERR_R_ASN1_LENGTH_MISMATCH 62 +# define ERR_R_MISSING_ASN1_EOS 63 + +/* fatal error */ +# define ERR_R_FATAL 64 +# define ERR_R_MALLOC_FAILURE (1|ERR_R_FATAL) +# define ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED (2|ERR_R_FATAL) +# define ERR_R_PASSED_NULL_PARAMETER (3|ERR_R_FATAL) +# define ERR_R_INTERNAL_ERROR (4|ERR_R_FATAL) +# define ERR_R_DISABLED (5|ERR_R_FATAL) + +/* + * 99 is the maximum possible ERR_R_... code, higher values are reserved for + * the individual libraries + */ + +typedef struct ERR_string_data_st { + unsigned long error; + const char *string; +} ERR_STRING_DATA; + +void ERR_put_error(int lib, int func, int reason, const char *file, int line); +void ERR_set_error_data(char *data, int flags); + +unsigned long ERR_get_error(void); +unsigned long ERR_get_error_line(const char **file, int *line); +unsigned long ERR_get_error_line_data(const char **file, int *line, + const char **data, int *flags); +unsigned long ERR_peek_error(void); +unsigned long ERR_peek_error_line(const char **file, int *line); +unsigned long ERR_peek_error_line_data(const char **file, int *line, + const char **data, int *flags); +unsigned long ERR_peek_last_error(void); +unsigned long ERR_peek_last_error_line(const char **file, int *line); +unsigned long ERR_peek_last_error_line_data(const char **file, int *line, + const char **data, int *flags); +void ERR_clear_error(void); +char *ERR_error_string(unsigned long e, char *buf); +void ERR_error_string_n(unsigned long e, char *buf, size_t len); +const char *ERR_lib_error_string(unsigned long e); +const char *ERR_func_error_string(unsigned long e); +const char *ERR_reason_error_string(unsigned long e); +void ERR_print_errors_cb(int (*cb) (const char *str, size_t len, void *u), + void *u); +# ifndef OPENSSL_NO_FP_API +void ERR_print_errors_fp(FILE *fp); +# endif +# ifndef OPENSSL_NO_BIO +void ERR_print_errors(BIO *bp); +# endif +void ERR_add_error_data(int num, ...); +void ERR_add_error_vdata(int num, va_list args); +void ERR_load_strings(int lib, ERR_STRING_DATA str[]); +void ERR_unload_strings(int lib, ERR_STRING_DATA str[]); +void ERR_load_ERR_strings(void); +void ERR_load_crypto_strings(void); +void ERR_free_strings(void); + +void ERR_remove_thread_state(const CRYPTO_THREADID *tid); +# ifndef OPENSSL_NO_DEPRECATED +void ERR_remove_state(unsigned long pid); /* if zero we look it up */ +# endif +ERR_STATE *ERR_get_state(void); + +# ifndef OPENSSL_NO_LHASH +LHASH_OF(ERR_STRING_DATA) *ERR_get_string_table(void); +LHASH_OF(ERR_STATE) *ERR_get_err_state_table(void); +void ERR_release_err_state_table(LHASH_OF(ERR_STATE) **hash); +# endif + +int ERR_get_next_error_library(void); + +int ERR_set_mark(void); +int ERR_pop_to_mark(void); + +/* Already defined in ossl_typ.h */ +/* typedef struct st_ERR_FNS ERR_FNS; */ +/* + * An application can use this function and provide the return value to + * loaded modules that should use the application's ERR state/functionality + */ +const ERR_FNS *ERR_get_implementation(void); +/* + * A loaded module should call this function prior to any ERR operations + * using the application's "ERR_FNS". + */ +int ERR_set_implementation(const ERR_FNS *fns); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/ext/openssl-win32/inc32/openssl/evp.h b/ext/openssl-win32/inc32/openssl/evp.h new file mode 100644 index 00000000..47abbac4 --- /dev/null +++ b/ext/openssl-win32/inc32/openssl/evp.h @@ -0,0 +1,1519 @@ +/* crypto/evp/evp.h */ +/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) + * All rights reserved. + * + * This package is an SSL implementation written + * by Eric Young (eay@cryptsoft.com). + * The implementation was written so as to conform with Netscapes SSL. + * + * This library is free for commercial and non-commercial use as long as + * the following conditions are aheared to. The following conditions + * apply to all code found in this distribution, be it the RC4, RSA, + * lhash, DES, etc., code; not just the SSL code. The SSL documentation + * included with this distribution is covered by the same copyright terms + * except that the holder is Tim Hudson (tjh@cryptsoft.com). + * + * Copyright remains Eric Young's, and as such any Copyright notices in + * the code are not to be removed. + * If this package is used in a product, Eric Young should be given attribution + * as the author of the parts of the library used. + * This can be in the form of a textual message at program startup or + * in documentation (online or textual) provided with the package. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * "This product includes cryptographic software written by + * Eric Young (eay@cryptsoft.com)" + * The word 'cryptographic' can be left out if the rouines from the library + * being used are not cryptographic related :-). + * 4. If you include any Windows specific code (or a derivative thereof) from + * the apps directory (application code) you must include an acknowledgement: + * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" + * + * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * The licence and distribution terms for any publically available version or + * derivative of this code cannot be changed. i.e. this code cannot simply be + * copied and put under another distribution licence + * [including the GNU Public Licence.] + */ + +#ifndef HEADER_ENVELOPE_H +# define HEADER_ENVELOPE_H + +# ifdef OPENSSL_ALGORITHM_DEFINES +# include +# else +# define OPENSSL_ALGORITHM_DEFINES +# include +# undef OPENSSL_ALGORITHM_DEFINES +# endif + +# include + +# include + +# ifndef OPENSSL_NO_BIO +# include +# endif + +/*- +#define EVP_RC2_KEY_SIZE 16 +#define EVP_RC4_KEY_SIZE 16 +#define EVP_BLOWFISH_KEY_SIZE 16 +#define EVP_CAST5_KEY_SIZE 16 +#define EVP_RC5_32_12_16_KEY_SIZE 16 +*/ +# define EVP_MAX_MD_SIZE 64/* longest known is SHA512 */ +# define EVP_MAX_KEY_LENGTH 64 +# define EVP_MAX_IV_LENGTH 16 +# define EVP_MAX_BLOCK_LENGTH 32 + +# define PKCS5_SALT_LEN 8 +/* Default PKCS#5 iteration count */ +# define PKCS5_DEFAULT_ITER 2048 + +# include + +# define EVP_PK_RSA 0x0001 +# define EVP_PK_DSA 0x0002 +# define EVP_PK_DH 0x0004 +# define EVP_PK_EC 0x0008 +# define EVP_PKT_SIGN 0x0010 +# define EVP_PKT_ENC 0x0020 +# define EVP_PKT_EXCH 0x0040 +# define EVP_PKS_RSA 0x0100 +# define EVP_PKS_DSA 0x0200 +# define EVP_PKS_EC 0x0400 +# define EVP_PKT_EXP 0x1000 /* <= 512 bit key */ + +# define EVP_PKEY_NONE NID_undef +# define EVP_PKEY_RSA NID_rsaEncryption +# define EVP_PKEY_RSA2 NID_rsa +# define EVP_PKEY_DSA NID_dsa +# define EVP_PKEY_DSA1 NID_dsa_2 +# define EVP_PKEY_DSA2 NID_dsaWithSHA +# define EVP_PKEY_DSA3 NID_dsaWithSHA1 +# define EVP_PKEY_DSA4 NID_dsaWithSHA1_2 +# define EVP_PKEY_DH NID_dhKeyAgreement +# define EVP_PKEY_DHX NID_dhpublicnumber +# define EVP_PKEY_EC NID_X9_62_id_ecPublicKey +# define EVP_PKEY_HMAC NID_hmac +# define EVP_PKEY_CMAC NID_cmac + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Type needs to be a bit field Sub-type needs to be for variations on the + * method, as in, can it do arbitrary encryption.... + */ +struct evp_pkey_st { + int type; + int save_type; + int references; + const EVP_PKEY_ASN1_METHOD *ameth; + ENGINE *engine; + union { + char *ptr; +# ifndef OPENSSL_NO_RSA + struct rsa_st *rsa; /* RSA */ +# endif +# ifndef OPENSSL_NO_DSA + struct dsa_st *dsa; /* DSA */ +# endif +# ifndef OPENSSL_NO_DH + struct dh_st *dh; /* DH */ +# endif +# ifndef OPENSSL_NO_EC + struct ec_key_st *ec; /* ECC */ +# endif + } pkey; + int save_parameters; + STACK_OF(X509_ATTRIBUTE) *attributes; /* [ 0 ] */ +} /* EVP_PKEY */ ; + +# define EVP_PKEY_MO_SIGN 0x0001 +# define EVP_PKEY_MO_VERIFY 0x0002 +# define EVP_PKEY_MO_ENCRYPT 0x0004 +# define EVP_PKEY_MO_DECRYPT 0x0008 + +# ifndef EVP_MD +struct env_md_st { + int type; + int pkey_type; + int md_size; + unsigned long flags; + int (*init) (EVP_MD_CTX *ctx); + int (*update) (EVP_MD_CTX *ctx, const void *data, size_t count); + int (*final) (EVP_MD_CTX *ctx, unsigned char *md); + int (*copy) (EVP_MD_CTX *to, const EVP_MD_CTX *from); + int (*cleanup) (EVP_MD_CTX *ctx); + /* FIXME: prototype these some day */ + int (*sign) (int type, const unsigned char *m, unsigned int m_length, + unsigned char *sigret, unsigned int *siglen, void *key); + int (*verify) (int type, const unsigned char *m, unsigned int m_length, + const unsigned char *sigbuf, unsigned int siglen, + void *key); + int required_pkey_type[5]; /* EVP_PKEY_xxx */ + int block_size; + int ctx_size; /* how big does the ctx->md_data need to be */ + /* control function */ + int (*md_ctrl) (EVP_MD_CTX *ctx, int cmd, int p1, void *p2); +} /* EVP_MD */ ; + +typedef int evp_sign_method(int type, const unsigned char *m, + unsigned int m_length, unsigned char *sigret, + unsigned int *siglen, void *key); +typedef int evp_verify_method(int type, const unsigned char *m, + unsigned int m_length, + const unsigned char *sigbuf, + unsigned int siglen, void *key); + +/* digest can only handle a single block */ +# define EVP_MD_FLAG_ONESHOT 0x0001 + +/* + * digest is a "clone" digest used + * which is a copy of an existing + * one for a specific public key type. + * EVP_dss1() etc + */ +# define EVP_MD_FLAG_PKEY_DIGEST 0x0002 + +/* Digest uses EVP_PKEY_METHOD for signing instead of MD specific signing */ + +# define EVP_MD_FLAG_PKEY_METHOD_SIGNATURE 0x0004 + +/* DigestAlgorithmIdentifier flags... */ + +# define EVP_MD_FLAG_DIGALGID_MASK 0x0018 + +/* NULL or absent parameter accepted. Use NULL */ + +# define EVP_MD_FLAG_DIGALGID_NULL 0x0000 + +/* NULL or absent parameter accepted. Use NULL for PKCS#1 otherwise absent */ + +# define EVP_MD_FLAG_DIGALGID_ABSENT 0x0008 + +/* Custom handling via ctrl */ + +# define EVP_MD_FLAG_DIGALGID_CUSTOM 0x0018 + +/* Note if suitable for use in FIPS mode */ +# define EVP_MD_FLAG_FIPS 0x0400 + +/* Digest ctrls */ + +# define EVP_MD_CTRL_DIGALGID 0x1 +# define EVP_MD_CTRL_MICALG 0x2 + +/* Minimum Algorithm specific ctrl value */ + +# define EVP_MD_CTRL_ALG_CTRL 0x1000 + +# define EVP_PKEY_NULL_method NULL,NULL,{0,0,0,0} + +# ifndef OPENSSL_NO_DSA +# define EVP_PKEY_DSA_method (evp_sign_method *)DSA_sign, \ + (evp_verify_method *)DSA_verify, \ + {EVP_PKEY_DSA,EVP_PKEY_DSA2,EVP_PKEY_DSA3, \ + EVP_PKEY_DSA4,0} +# else +# define EVP_PKEY_DSA_method EVP_PKEY_NULL_method +# endif + +# ifndef OPENSSL_NO_ECDSA +# define EVP_PKEY_ECDSA_method (evp_sign_method *)ECDSA_sign, \ + (evp_verify_method *)ECDSA_verify, \ + {EVP_PKEY_EC,0,0,0} +# else +# define EVP_PKEY_ECDSA_method EVP_PKEY_NULL_method +# endif + +# ifndef OPENSSL_NO_RSA +# define EVP_PKEY_RSA_method (evp_sign_method *)RSA_sign, \ + (evp_verify_method *)RSA_verify, \ + {EVP_PKEY_RSA,EVP_PKEY_RSA2,0,0} +# define EVP_PKEY_RSA_ASN1_OCTET_STRING_method \ + (evp_sign_method *)RSA_sign_ASN1_OCTET_STRING, \ + (evp_verify_method *)RSA_verify_ASN1_OCTET_STRING, \ + {EVP_PKEY_RSA,EVP_PKEY_RSA2,0,0} +# else +# define EVP_PKEY_RSA_method EVP_PKEY_NULL_method +# define EVP_PKEY_RSA_ASN1_OCTET_STRING_method EVP_PKEY_NULL_method +# endif + +# endif /* !EVP_MD */ + +struct env_md_ctx_st { + const EVP_MD *digest; + ENGINE *engine; /* functional reference if 'digest' is + * ENGINE-provided */ + unsigned long flags; + void *md_data; + /* Public key context for sign/verify */ + EVP_PKEY_CTX *pctx; + /* Update function: usually copied from EVP_MD */ + int (*update) (EVP_MD_CTX *ctx, const void *data, size_t count); +} /* EVP_MD_CTX */ ; + +/* values for EVP_MD_CTX flags */ + +# define EVP_MD_CTX_FLAG_ONESHOT 0x0001/* digest update will be + * called once only */ +# define EVP_MD_CTX_FLAG_CLEANED 0x0002/* context has already been + * cleaned */ +# define EVP_MD_CTX_FLAG_REUSE 0x0004/* Don't free up ctx->md_data + * in EVP_MD_CTX_cleanup */ +/* + * FIPS and pad options are ignored in 1.0.0, definitions are here so we + * don't accidentally reuse the values for other purposes. + */ + +# define EVP_MD_CTX_FLAG_NON_FIPS_ALLOW 0x0008/* Allow use of non FIPS + * digest in FIPS mode */ + +/* + * The following PAD options are also currently ignored in 1.0.0, digest + * parameters are handled through EVP_DigestSign*() and EVP_DigestVerify*() + * instead. + */ +# define EVP_MD_CTX_FLAG_PAD_MASK 0xF0/* RSA mode to use */ +# define EVP_MD_CTX_FLAG_PAD_PKCS1 0x00/* PKCS#1 v1.5 mode */ +# define EVP_MD_CTX_FLAG_PAD_X931 0x10/* X9.31 mode */ +# define EVP_MD_CTX_FLAG_PAD_PSS 0x20/* PSS mode */ + +# define EVP_MD_CTX_FLAG_NO_INIT 0x0100/* Don't initialize md_data */ + +struct evp_cipher_st { + int nid; + int block_size; + /* Default value for variable length ciphers */ + int key_len; + int iv_len; + /* Various flags */ + unsigned long flags; + /* init key */ + int (*init) (EVP_CIPHER_CTX *ctx, const unsigned char *key, + const unsigned char *iv, int enc); + /* encrypt/decrypt data */ + int (*do_cipher) (EVP_CIPHER_CTX *ctx, unsigned char *out, + const unsigned char *in, size_t inl); + /* cleanup ctx */ + int (*cleanup) (EVP_CIPHER_CTX *); + /* how big ctx->cipher_data needs to be */ + int ctx_size; + /* Populate a ASN1_TYPE with parameters */ + int (*set_asn1_parameters) (EVP_CIPHER_CTX *, ASN1_TYPE *); + /* Get parameters from a ASN1_TYPE */ + int (*get_asn1_parameters) (EVP_CIPHER_CTX *, ASN1_TYPE *); + /* Miscellaneous operations */ + int (*ctrl) (EVP_CIPHER_CTX *, int type, int arg, void *ptr); + /* Application data */ + void *app_data; +} /* EVP_CIPHER */ ; + +/* Values for cipher flags */ + +/* Modes for ciphers */ + +# define EVP_CIPH_STREAM_CIPHER 0x0 +# define EVP_CIPH_ECB_MODE 0x1 +# define EVP_CIPH_CBC_MODE 0x2 +# define EVP_CIPH_CFB_MODE 0x3 +# define EVP_CIPH_OFB_MODE 0x4 +# define EVP_CIPH_CTR_MODE 0x5 +# define EVP_CIPH_GCM_MODE 0x6 +# define EVP_CIPH_CCM_MODE 0x7 +# define EVP_CIPH_XTS_MODE 0x10001 +# define EVP_CIPH_WRAP_MODE 0x10002 +# define EVP_CIPH_MODE 0xF0007 +/* Set if variable length cipher */ +# define EVP_CIPH_VARIABLE_LENGTH 0x8 +/* Set if the iv handling should be done by the cipher itself */ +# define EVP_CIPH_CUSTOM_IV 0x10 +/* Set if the cipher's init() function should be called if key is NULL */ +# define EVP_CIPH_ALWAYS_CALL_INIT 0x20 +/* Call ctrl() to init cipher parameters */ +# define EVP_CIPH_CTRL_INIT 0x40 +/* Don't use standard key length function */ +# define EVP_CIPH_CUSTOM_KEY_LENGTH 0x80 +/* Don't use standard block padding */ +# define EVP_CIPH_NO_PADDING 0x100 +/* cipher handles random key generation */ +# define EVP_CIPH_RAND_KEY 0x200 +/* cipher has its own additional copying logic */ +# define EVP_CIPH_CUSTOM_COPY 0x400 +/* Allow use default ASN1 get/set iv */ +# define EVP_CIPH_FLAG_DEFAULT_ASN1 0x1000 +/* Buffer length in bits not bytes: CFB1 mode only */ +# define EVP_CIPH_FLAG_LENGTH_BITS 0x2000 +/* Note if suitable for use in FIPS mode */ +# define EVP_CIPH_FLAG_FIPS 0x4000 +/* Allow non FIPS cipher in FIPS mode */ +# define EVP_CIPH_FLAG_NON_FIPS_ALLOW 0x8000 +/* + * Cipher handles any and all padding logic as well as finalisation. + */ +# define EVP_CIPH_FLAG_CUSTOM_CIPHER 0x100000 +# define EVP_CIPH_FLAG_AEAD_CIPHER 0x200000 +# define EVP_CIPH_FLAG_TLS1_1_MULTIBLOCK 0x400000 + +/* + * Cipher context flag to indicate we can handle wrap mode: if allowed in + * older applications it could overflow buffers. + */ + +# define EVP_CIPHER_CTX_FLAG_WRAP_ALLOW 0x1 + +/* ctrl() values */ + +# define EVP_CTRL_INIT 0x0 +# define EVP_CTRL_SET_KEY_LENGTH 0x1 +# define EVP_CTRL_GET_RC2_KEY_BITS 0x2 +# define EVP_CTRL_SET_RC2_KEY_BITS 0x3 +# define EVP_CTRL_GET_RC5_ROUNDS 0x4 +# define EVP_CTRL_SET_RC5_ROUNDS 0x5 +# define EVP_CTRL_RAND_KEY 0x6 +# define EVP_CTRL_PBE_PRF_NID 0x7 +# define EVP_CTRL_COPY 0x8 +# define EVP_CTRL_GCM_SET_IVLEN 0x9 +# define EVP_CTRL_GCM_GET_TAG 0x10 +# define EVP_CTRL_GCM_SET_TAG 0x11 +# define EVP_CTRL_GCM_SET_IV_FIXED 0x12 +# define EVP_CTRL_GCM_IV_GEN 0x13 +# define EVP_CTRL_CCM_SET_IVLEN EVP_CTRL_GCM_SET_IVLEN +# define EVP_CTRL_CCM_GET_TAG EVP_CTRL_GCM_GET_TAG +# define EVP_CTRL_CCM_SET_TAG EVP_CTRL_GCM_SET_TAG +# define EVP_CTRL_CCM_SET_L 0x14 +# define EVP_CTRL_CCM_SET_MSGLEN 0x15 +/* + * AEAD cipher deduces payload length and returns number of bytes required to + * store MAC and eventual padding. Subsequent call to EVP_Cipher even + * appends/verifies MAC. + */ +# define EVP_CTRL_AEAD_TLS1_AAD 0x16 +/* Used by composite AEAD ciphers, no-op in GCM, CCM... */ +# define EVP_CTRL_AEAD_SET_MAC_KEY 0x17 +/* Set the GCM invocation field, decrypt only */ +# define EVP_CTRL_GCM_SET_IV_INV 0x18 + +# define EVP_CTRL_TLS1_1_MULTIBLOCK_AAD 0x19 +# define EVP_CTRL_TLS1_1_MULTIBLOCK_ENCRYPT 0x1a +# define EVP_CTRL_TLS1_1_MULTIBLOCK_DECRYPT 0x1b +# define EVP_CTRL_TLS1_1_MULTIBLOCK_MAX_BUFSIZE 0x1c + +typedef struct { + unsigned char *out; + const unsigned char *inp; + size_t len; + unsigned int interleave; +} EVP_CTRL_TLS1_1_MULTIBLOCK_PARAM; + +/* GCM TLS constants */ +/* Length of fixed part of IV derived from PRF */ +# define EVP_GCM_TLS_FIXED_IV_LEN 4 +/* Length of explicit part of IV part of TLS records */ +# define EVP_GCM_TLS_EXPLICIT_IV_LEN 8 +/* Length of tag for TLS */ +# define EVP_GCM_TLS_TAG_LEN 16 + +typedef struct evp_cipher_info_st { + const EVP_CIPHER *cipher; + unsigned char iv[EVP_MAX_IV_LENGTH]; +} EVP_CIPHER_INFO; + +struct evp_cipher_ctx_st { + const EVP_CIPHER *cipher; + ENGINE *engine; /* functional reference if 'cipher' is + * ENGINE-provided */ + int encrypt; /* encrypt or decrypt */ + int buf_len; /* number we have left */ + unsigned char oiv[EVP_MAX_IV_LENGTH]; /* original iv */ + unsigned char iv[EVP_MAX_IV_LENGTH]; /* working iv */ + unsigned char buf[EVP_MAX_BLOCK_LENGTH]; /* saved partial block */ + int num; /* used by cfb/ofb/ctr mode */ + void *app_data; /* application stuff */ + int key_len; /* May change for variable length cipher */ + unsigned long flags; /* Various flags */ + void *cipher_data; /* per EVP data */ + int final_used; + int block_mask; + unsigned char final[EVP_MAX_BLOCK_LENGTH]; /* possible final block */ +} /* EVP_CIPHER_CTX */ ; + +typedef struct evp_Encode_Ctx_st { + /* number saved in a partial encode/decode */ + int num; + /* + * The length is either the output line length (in input bytes) or the + * shortest input line length that is ok. Once decoding begins, the + * length is adjusted up each time a longer line is decoded + */ + int length; + /* data to encode */ + unsigned char enc_data[80]; + /* number read on current line */ + int line_num; + int expect_nl; +} EVP_ENCODE_CTX; + +/* Password based encryption function */ +typedef int (EVP_PBE_KEYGEN) (EVP_CIPHER_CTX *ctx, const char *pass, + int passlen, ASN1_TYPE *param, + const EVP_CIPHER *cipher, const EVP_MD *md, + int en_de); + +# ifndef OPENSSL_NO_RSA +# define EVP_PKEY_assign_RSA(pkey,rsa) EVP_PKEY_assign((pkey),EVP_PKEY_RSA,\ + (char *)(rsa)) +# endif + +# ifndef OPENSSL_NO_DSA +# define EVP_PKEY_assign_DSA(pkey,dsa) EVP_PKEY_assign((pkey),EVP_PKEY_DSA,\ + (char *)(dsa)) +# endif + +# ifndef OPENSSL_NO_DH +# define EVP_PKEY_assign_DH(pkey,dh) EVP_PKEY_assign((pkey),EVP_PKEY_DH,\ + (char *)(dh)) +# endif + +# ifndef OPENSSL_NO_EC +# define EVP_PKEY_assign_EC_KEY(pkey,eckey) EVP_PKEY_assign((pkey),EVP_PKEY_EC,\ + (char *)(eckey)) +# endif + +/* Add some extra combinations */ +# define EVP_get_digestbynid(a) EVP_get_digestbyname(OBJ_nid2sn(a)) +# define EVP_get_digestbyobj(a) EVP_get_digestbynid(OBJ_obj2nid(a)) +# define EVP_get_cipherbynid(a) EVP_get_cipherbyname(OBJ_nid2sn(a)) +# define EVP_get_cipherbyobj(a) EVP_get_cipherbynid(OBJ_obj2nid(a)) + +int EVP_MD_type(const EVP_MD *md); +# define EVP_MD_nid(e) EVP_MD_type(e) +# define EVP_MD_name(e) OBJ_nid2sn(EVP_MD_nid(e)) +int EVP_MD_pkey_type(const EVP_MD *md); +int EVP_MD_size(const EVP_MD *md); +int EVP_MD_block_size(const EVP_MD *md); +unsigned long EVP_MD_flags(const EVP_MD *md); + +const EVP_MD *EVP_MD_CTX_md(const EVP_MD_CTX *ctx); +# define EVP_MD_CTX_size(e) EVP_MD_size(EVP_MD_CTX_md(e)) +# define EVP_MD_CTX_block_size(e) EVP_MD_block_size(EVP_MD_CTX_md(e)) +# define EVP_MD_CTX_type(e) EVP_MD_type(EVP_MD_CTX_md(e)) + +int EVP_CIPHER_nid(const EVP_CIPHER *cipher); +# define EVP_CIPHER_name(e) OBJ_nid2sn(EVP_CIPHER_nid(e)) +int EVP_CIPHER_block_size(const EVP_CIPHER *cipher); +int EVP_CIPHER_key_length(const EVP_CIPHER *cipher); +int EVP_CIPHER_iv_length(const EVP_CIPHER *cipher); +unsigned long EVP_CIPHER_flags(const EVP_CIPHER *cipher); +# define EVP_CIPHER_mode(e) (EVP_CIPHER_flags(e) & EVP_CIPH_MODE) + +const EVP_CIPHER *EVP_CIPHER_CTX_cipher(const EVP_CIPHER_CTX *ctx); +int EVP_CIPHER_CTX_nid(const EVP_CIPHER_CTX *ctx); +int EVP_CIPHER_CTX_block_size(const EVP_CIPHER_CTX *ctx); +int EVP_CIPHER_CTX_key_length(const EVP_CIPHER_CTX *ctx); +int EVP_CIPHER_CTX_iv_length(const EVP_CIPHER_CTX *ctx); +int EVP_CIPHER_CTX_copy(EVP_CIPHER_CTX *out, const EVP_CIPHER_CTX *in); +void *EVP_CIPHER_CTX_get_app_data(const EVP_CIPHER_CTX *ctx); +void EVP_CIPHER_CTX_set_app_data(EVP_CIPHER_CTX *ctx, void *data); +# define EVP_CIPHER_CTX_type(c) EVP_CIPHER_type(EVP_CIPHER_CTX_cipher(c)) +unsigned long EVP_CIPHER_CTX_flags(const EVP_CIPHER_CTX *ctx); +# define EVP_CIPHER_CTX_mode(e) (EVP_CIPHER_CTX_flags(e) & EVP_CIPH_MODE) + +# define EVP_ENCODE_LENGTH(l) (((l+2)/3*4)+(l/48+1)*2+80) +# define EVP_DECODE_LENGTH(l) ((l+3)/4*3+80) + +# define EVP_SignInit_ex(a,b,c) EVP_DigestInit_ex(a,b,c) +# define EVP_SignInit(a,b) EVP_DigestInit(a,b) +# define EVP_SignUpdate(a,b,c) EVP_DigestUpdate(a,b,c) +# define EVP_VerifyInit_ex(a,b,c) EVP_DigestInit_ex(a,b,c) +# define EVP_VerifyInit(a,b) EVP_DigestInit(a,b) +# define EVP_VerifyUpdate(a,b,c) EVP_DigestUpdate(a,b,c) +# define EVP_OpenUpdate(a,b,c,d,e) EVP_DecryptUpdate(a,b,c,d,e) +# define EVP_SealUpdate(a,b,c,d,e) EVP_EncryptUpdate(a,b,c,d,e) +# define EVP_DigestSignUpdate(a,b,c) EVP_DigestUpdate(a,b,c) +# define EVP_DigestVerifyUpdate(a,b,c) EVP_DigestUpdate(a,b,c) + +# ifdef CONST_STRICT +void BIO_set_md(BIO *, const EVP_MD *md); +# else +# define BIO_set_md(b,md) BIO_ctrl(b,BIO_C_SET_MD,0,(char *)md) +# endif +# define BIO_get_md(b,mdp) BIO_ctrl(b,BIO_C_GET_MD,0,(char *)mdp) +# define BIO_get_md_ctx(b,mdcp) BIO_ctrl(b,BIO_C_GET_MD_CTX,0,(char *)mdcp) +# define BIO_set_md_ctx(b,mdcp) BIO_ctrl(b,BIO_C_SET_MD_CTX,0,(char *)mdcp) +# define BIO_get_cipher_status(b) BIO_ctrl(b,BIO_C_GET_CIPHER_STATUS,0,NULL) +# define BIO_get_cipher_ctx(b,c_pp) BIO_ctrl(b,BIO_C_GET_CIPHER_CTX,0,(char *)c_pp) + +int EVP_Cipher(EVP_CIPHER_CTX *c, + unsigned char *out, const unsigned char *in, unsigned int inl); + +# define EVP_add_cipher_alias(n,alias) \ + OBJ_NAME_add((alias),OBJ_NAME_TYPE_CIPHER_METH|OBJ_NAME_ALIAS,(n)) +# define EVP_add_digest_alias(n,alias) \ + OBJ_NAME_add((alias),OBJ_NAME_TYPE_MD_METH|OBJ_NAME_ALIAS,(n)) +# define EVP_delete_cipher_alias(alias) \ + OBJ_NAME_remove(alias,OBJ_NAME_TYPE_CIPHER_METH|OBJ_NAME_ALIAS); +# define EVP_delete_digest_alias(alias) \ + OBJ_NAME_remove(alias,OBJ_NAME_TYPE_MD_METH|OBJ_NAME_ALIAS); + +void EVP_MD_CTX_init(EVP_MD_CTX *ctx); +int EVP_MD_CTX_cleanup(EVP_MD_CTX *ctx); +EVP_MD_CTX *EVP_MD_CTX_create(void); +void EVP_MD_CTX_destroy(EVP_MD_CTX *ctx); +int EVP_MD_CTX_copy_ex(EVP_MD_CTX *out, const EVP_MD_CTX *in); +void EVP_MD_CTX_set_flags(EVP_MD_CTX *ctx, int flags); +void EVP_MD_CTX_clear_flags(EVP_MD_CTX *ctx, int flags); +int EVP_MD_CTX_test_flags(const EVP_MD_CTX *ctx, int flags); +int EVP_DigestInit_ex(EVP_MD_CTX *ctx, const EVP_MD *type, ENGINE *impl); +int EVP_DigestUpdate(EVP_MD_CTX *ctx, const void *d, size_t cnt); +int EVP_DigestFinal_ex(EVP_MD_CTX *ctx, unsigned char *md, unsigned int *s); +int EVP_Digest(const void *data, size_t count, + unsigned char *md, unsigned int *size, const EVP_MD *type, + ENGINE *impl); + +int EVP_MD_CTX_copy(EVP_MD_CTX *out, const EVP_MD_CTX *in); +int EVP_DigestInit(EVP_MD_CTX *ctx, const EVP_MD *type); +int EVP_DigestFinal(EVP_MD_CTX *ctx, unsigned char *md, unsigned int *s); + +int EVP_read_pw_string(char *buf, int length, const char *prompt, int verify); +int EVP_read_pw_string_min(char *buf, int minlen, int maxlen, + const char *prompt, int verify); +void EVP_set_pw_prompt(const char *prompt); +char *EVP_get_pw_prompt(void); + +int EVP_BytesToKey(const EVP_CIPHER *type, const EVP_MD *md, + const unsigned char *salt, const unsigned char *data, + int datal, int count, unsigned char *key, + unsigned char *iv); + +void EVP_CIPHER_CTX_set_flags(EVP_CIPHER_CTX *ctx, int flags); +void EVP_CIPHER_CTX_clear_flags(EVP_CIPHER_CTX *ctx, int flags); +int EVP_CIPHER_CTX_test_flags(const EVP_CIPHER_CTX *ctx, int flags); + +int EVP_EncryptInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, + const unsigned char *key, const unsigned char *iv); +int EVP_EncryptInit_ex(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, + ENGINE *impl, const unsigned char *key, + const unsigned char *iv); +int EVP_EncryptUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl, + const unsigned char *in, int inl); +int EVP_EncryptFinal_ex(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl); +int EVP_EncryptFinal(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl); + +int EVP_DecryptInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, + const unsigned char *key, const unsigned char *iv); +int EVP_DecryptInit_ex(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, + ENGINE *impl, const unsigned char *key, + const unsigned char *iv); +int EVP_DecryptUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl, + const unsigned char *in, int inl); +int EVP_DecryptFinal(EVP_CIPHER_CTX *ctx, unsigned char *outm, int *outl); +int EVP_DecryptFinal_ex(EVP_CIPHER_CTX *ctx, unsigned char *outm, int *outl); + +int EVP_CipherInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, + const unsigned char *key, const unsigned char *iv, + int enc); +int EVP_CipherInit_ex(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, + ENGINE *impl, const unsigned char *key, + const unsigned char *iv, int enc); +int EVP_CipherUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl, + const unsigned char *in, int inl); +int EVP_CipherFinal(EVP_CIPHER_CTX *ctx, unsigned char *outm, int *outl); +int EVP_CipherFinal_ex(EVP_CIPHER_CTX *ctx, unsigned char *outm, int *outl); + +int EVP_SignFinal(EVP_MD_CTX *ctx, unsigned char *md, unsigned int *s, + EVP_PKEY *pkey); + +int EVP_VerifyFinal(EVP_MD_CTX *ctx, const unsigned char *sigbuf, + unsigned int siglen, EVP_PKEY *pkey); + +int EVP_DigestSignInit(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx, + const EVP_MD *type, ENGINE *e, EVP_PKEY *pkey); +int EVP_DigestSignFinal(EVP_MD_CTX *ctx, + unsigned char *sigret, size_t *siglen); + +int EVP_DigestVerifyInit(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx, + const EVP_MD *type, ENGINE *e, EVP_PKEY *pkey); +int EVP_DigestVerifyFinal(EVP_MD_CTX *ctx, + const unsigned char *sig, size_t siglen); + +int EVP_OpenInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *type, + const unsigned char *ek, int ekl, const unsigned char *iv, + EVP_PKEY *priv); +int EVP_OpenFinal(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl); + +int EVP_SealInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *type, + unsigned char **ek, int *ekl, unsigned char *iv, + EVP_PKEY **pubk, int npubk); +int EVP_SealFinal(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl); + +void EVP_EncodeInit(EVP_ENCODE_CTX *ctx); +void EVP_EncodeUpdate(EVP_ENCODE_CTX *ctx, unsigned char *out, int *outl, + const unsigned char *in, int inl); +void EVP_EncodeFinal(EVP_ENCODE_CTX *ctx, unsigned char *out, int *outl); +int EVP_EncodeBlock(unsigned char *t, const unsigned char *f, int n); + +void EVP_DecodeInit(EVP_ENCODE_CTX *ctx); +int EVP_DecodeUpdate(EVP_ENCODE_CTX *ctx, unsigned char *out, int *outl, + const unsigned char *in, int inl); +int EVP_DecodeFinal(EVP_ENCODE_CTX *ctx, unsigned + char *out, int *outl); +int EVP_DecodeBlock(unsigned char *t, const unsigned char *f, int n); + +void EVP_CIPHER_CTX_init(EVP_CIPHER_CTX *a); +int EVP_CIPHER_CTX_cleanup(EVP_CIPHER_CTX *a); +EVP_CIPHER_CTX *EVP_CIPHER_CTX_new(void); +void EVP_CIPHER_CTX_free(EVP_CIPHER_CTX *a); +int EVP_CIPHER_CTX_set_key_length(EVP_CIPHER_CTX *x, int keylen); +int EVP_CIPHER_CTX_set_padding(EVP_CIPHER_CTX *c, int pad); +int EVP_CIPHER_CTX_ctrl(EVP_CIPHER_CTX *ctx, int type, int arg, void *ptr); +int EVP_CIPHER_CTX_rand_key(EVP_CIPHER_CTX *ctx, unsigned char *key); + +# ifndef OPENSSL_NO_BIO +BIO_METHOD *BIO_f_md(void); +BIO_METHOD *BIO_f_base64(void); +BIO_METHOD *BIO_f_cipher(void); +BIO_METHOD *BIO_f_reliable(void); +void BIO_set_cipher(BIO *b, const EVP_CIPHER *c, const unsigned char *k, + const unsigned char *i, int enc); +# endif + +const EVP_MD *EVP_md_null(void); +# ifndef OPENSSL_NO_MD2 +const EVP_MD *EVP_md2(void); +# endif +# ifndef OPENSSL_NO_MD4 +const EVP_MD *EVP_md4(void); +# endif +# ifndef OPENSSL_NO_MD5 +const EVP_MD *EVP_md5(void); +# endif +# ifndef OPENSSL_NO_SHA +const EVP_MD *EVP_sha(void); +const EVP_MD *EVP_sha1(void); +const EVP_MD *EVP_dss(void); +const EVP_MD *EVP_dss1(void); +const EVP_MD *EVP_ecdsa(void); +# endif +# ifndef OPENSSL_NO_SHA256 +const EVP_MD *EVP_sha224(void); +const EVP_MD *EVP_sha256(void); +# endif +# ifndef OPENSSL_NO_SHA512 +const EVP_MD *EVP_sha384(void); +const EVP_MD *EVP_sha512(void); +# endif +# ifndef OPENSSL_NO_MDC2 +const EVP_MD *EVP_mdc2(void); +# endif +# ifndef OPENSSL_NO_RIPEMD +const EVP_MD *EVP_ripemd160(void); +# endif +# ifndef OPENSSL_NO_WHIRLPOOL +const EVP_MD *EVP_whirlpool(void); +# endif +const EVP_CIPHER *EVP_enc_null(void); /* does nothing :-) */ +# ifndef OPENSSL_NO_DES +const EVP_CIPHER *EVP_des_ecb(void); +const EVP_CIPHER *EVP_des_ede(void); +const EVP_CIPHER *EVP_des_ede3(void); +const EVP_CIPHER *EVP_des_ede_ecb(void); +const EVP_CIPHER *EVP_des_ede3_ecb(void); +const EVP_CIPHER *EVP_des_cfb64(void); +# define EVP_des_cfb EVP_des_cfb64 +const EVP_CIPHER *EVP_des_cfb1(void); +const EVP_CIPHER *EVP_des_cfb8(void); +const EVP_CIPHER *EVP_des_ede_cfb64(void); +# define EVP_des_ede_cfb EVP_des_ede_cfb64 +# if 0 +const EVP_CIPHER *EVP_des_ede_cfb1(void); +const EVP_CIPHER *EVP_des_ede_cfb8(void); +# endif +const EVP_CIPHER *EVP_des_ede3_cfb64(void); +# define EVP_des_ede3_cfb EVP_des_ede3_cfb64 +const EVP_CIPHER *EVP_des_ede3_cfb1(void); +const EVP_CIPHER *EVP_des_ede3_cfb8(void); +const EVP_CIPHER *EVP_des_ofb(void); +const EVP_CIPHER *EVP_des_ede_ofb(void); +const EVP_CIPHER *EVP_des_ede3_ofb(void); +const EVP_CIPHER *EVP_des_cbc(void); +const EVP_CIPHER *EVP_des_ede_cbc(void); +const EVP_CIPHER *EVP_des_ede3_cbc(void); +const EVP_CIPHER *EVP_desx_cbc(void); +const EVP_CIPHER *EVP_des_ede3_wrap(void); +/* + * This should now be supported through the dev_crypto ENGINE. But also, why + * are rc4 and md5 declarations made here inside a "NO_DES" precompiler + * branch? + */ +# if 0 +# ifdef OPENSSL_OPENBSD_DEV_CRYPTO +const EVP_CIPHER *EVP_dev_crypto_des_ede3_cbc(void); +const EVP_CIPHER *EVP_dev_crypto_rc4(void); +const EVP_MD *EVP_dev_crypto_md5(void); +# endif +# endif +# endif +# ifndef OPENSSL_NO_RC4 +const EVP_CIPHER *EVP_rc4(void); +const EVP_CIPHER *EVP_rc4_40(void); +# ifndef OPENSSL_NO_MD5 +const EVP_CIPHER *EVP_rc4_hmac_md5(void); +# endif +# endif +# ifndef OPENSSL_NO_IDEA +const EVP_CIPHER *EVP_idea_ecb(void); +const EVP_CIPHER *EVP_idea_cfb64(void); +# define EVP_idea_cfb EVP_idea_cfb64 +const EVP_CIPHER *EVP_idea_ofb(void); +const EVP_CIPHER *EVP_idea_cbc(void); +# endif +# ifndef OPENSSL_NO_RC2 +const EVP_CIPHER *EVP_rc2_ecb(void); +const EVP_CIPHER *EVP_rc2_cbc(void); +const EVP_CIPHER *EVP_rc2_40_cbc(void); +const EVP_CIPHER *EVP_rc2_64_cbc(void); +const EVP_CIPHER *EVP_rc2_cfb64(void); +# define EVP_rc2_cfb EVP_rc2_cfb64 +const EVP_CIPHER *EVP_rc2_ofb(void); +# endif +# ifndef OPENSSL_NO_BF +const EVP_CIPHER *EVP_bf_ecb(void); +const EVP_CIPHER *EVP_bf_cbc(void); +const EVP_CIPHER *EVP_bf_cfb64(void); +# define EVP_bf_cfb EVP_bf_cfb64 +const EVP_CIPHER *EVP_bf_ofb(void); +# endif +# ifndef OPENSSL_NO_CAST +const EVP_CIPHER *EVP_cast5_ecb(void); +const EVP_CIPHER *EVP_cast5_cbc(void); +const EVP_CIPHER *EVP_cast5_cfb64(void); +# define EVP_cast5_cfb EVP_cast5_cfb64 +const EVP_CIPHER *EVP_cast5_ofb(void); +# endif +# ifndef OPENSSL_NO_RC5 +const EVP_CIPHER *EVP_rc5_32_12_16_cbc(void); +const EVP_CIPHER *EVP_rc5_32_12_16_ecb(void); +const EVP_CIPHER *EVP_rc5_32_12_16_cfb64(void); +# define EVP_rc5_32_12_16_cfb EVP_rc5_32_12_16_cfb64 +const EVP_CIPHER *EVP_rc5_32_12_16_ofb(void); +# endif +# ifndef OPENSSL_NO_AES +const EVP_CIPHER *EVP_aes_128_ecb(void); +const EVP_CIPHER *EVP_aes_128_cbc(void); +const EVP_CIPHER *EVP_aes_128_cfb1(void); +const EVP_CIPHER *EVP_aes_128_cfb8(void); +const EVP_CIPHER *EVP_aes_128_cfb128(void); +# define EVP_aes_128_cfb EVP_aes_128_cfb128 +const EVP_CIPHER *EVP_aes_128_ofb(void); +const EVP_CIPHER *EVP_aes_128_ctr(void); +const EVP_CIPHER *EVP_aes_128_ccm(void); +const EVP_CIPHER *EVP_aes_128_gcm(void); +const EVP_CIPHER *EVP_aes_128_xts(void); +const EVP_CIPHER *EVP_aes_128_wrap(void); +const EVP_CIPHER *EVP_aes_192_ecb(void); +const EVP_CIPHER *EVP_aes_192_cbc(void); +const EVP_CIPHER *EVP_aes_192_cfb1(void); +const EVP_CIPHER *EVP_aes_192_cfb8(void); +const EVP_CIPHER *EVP_aes_192_cfb128(void); +# define EVP_aes_192_cfb EVP_aes_192_cfb128 +const EVP_CIPHER *EVP_aes_192_ofb(void); +const EVP_CIPHER *EVP_aes_192_ctr(void); +const EVP_CIPHER *EVP_aes_192_ccm(void); +const EVP_CIPHER *EVP_aes_192_gcm(void); +const EVP_CIPHER *EVP_aes_192_wrap(void); +const EVP_CIPHER *EVP_aes_256_ecb(void); +const EVP_CIPHER *EVP_aes_256_cbc(void); +const EVP_CIPHER *EVP_aes_256_cfb1(void); +const EVP_CIPHER *EVP_aes_256_cfb8(void); +const EVP_CIPHER *EVP_aes_256_cfb128(void); +# define EVP_aes_256_cfb EVP_aes_256_cfb128 +const EVP_CIPHER *EVP_aes_256_ofb(void); +const EVP_CIPHER *EVP_aes_256_ctr(void); +const EVP_CIPHER *EVP_aes_256_ccm(void); +const EVP_CIPHER *EVP_aes_256_gcm(void); +const EVP_CIPHER *EVP_aes_256_xts(void); +const EVP_CIPHER *EVP_aes_256_wrap(void); +# if !defined(OPENSSL_NO_SHA) && !defined(OPENSSL_NO_SHA1) +const EVP_CIPHER *EVP_aes_128_cbc_hmac_sha1(void); +const EVP_CIPHER *EVP_aes_256_cbc_hmac_sha1(void); +# endif +# ifndef OPENSSL_NO_SHA256 +const EVP_CIPHER *EVP_aes_128_cbc_hmac_sha256(void); +const EVP_CIPHER *EVP_aes_256_cbc_hmac_sha256(void); +# endif +# endif +# ifndef OPENSSL_NO_CAMELLIA +const EVP_CIPHER *EVP_camellia_128_ecb(void); +const EVP_CIPHER *EVP_camellia_128_cbc(void); +const EVP_CIPHER *EVP_camellia_128_cfb1(void); +const EVP_CIPHER *EVP_camellia_128_cfb8(void); +const EVP_CIPHER *EVP_camellia_128_cfb128(void); +# define EVP_camellia_128_cfb EVP_camellia_128_cfb128 +const EVP_CIPHER *EVP_camellia_128_ofb(void); +const EVP_CIPHER *EVP_camellia_192_ecb(void); +const EVP_CIPHER *EVP_camellia_192_cbc(void); +const EVP_CIPHER *EVP_camellia_192_cfb1(void); +const EVP_CIPHER *EVP_camellia_192_cfb8(void); +const EVP_CIPHER *EVP_camellia_192_cfb128(void); +# define EVP_camellia_192_cfb EVP_camellia_192_cfb128 +const EVP_CIPHER *EVP_camellia_192_ofb(void); +const EVP_CIPHER *EVP_camellia_256_ecb(void); +const EVP_CIPHER *EVP_camellia_256_cbc(void); +const EVP_CIPHER *EVP_camellia_256_cfb1(void); +const EVP_CIPHER *EVP_camellia_256_cfb8(void); +const EVP_CIPHER *EVP_camellia_256_cfb128(void); +# define EVP_camellia_256_cfb EVP_camellia_256_cfb128 +const EVP_CIPHER *EVP_camellia_256_ofb(void); +# endif + +# ifndef OPENSSL_NO_SEED +const EVP_CIPHER *EVP_seed_ecb(void); +const EVP_CIPHER *EVP_seed_cbc(void); +const EVP_CIPHER *EVP_seed_cfb128(void); +# define EVP_seed_cfb EVP_seed_cfb128 +const EVP_CIPHER *EVP_seed_ofb(void); +# endif + +void OPENSSL_add_all_algorithms_noconf(void); +void OPENSSL_add_all_algorithms_conf(void); + +# ifdef OPENSSL_LOAD_CONF +# define OpenSSL_add_all_algorithms() \ + OPENSSL_add_all_algorithms_conf() +# else +# define OpenSSL_add_all_algorithms() \ + OPENSSL_add_all_algorithms_noconf() +# endif + +void OpenSSL_add_all_ciphers(void); +void OpenSSL_add_all_digests(void); +# define SSLeay_add_all_algorithms() OpenSSL_add_all_algorithms() +# define SSLeay_add_all_ciphers() OpenSSL_add_all_ciphers() +# define SSLeay_add_all_digests() OpenSSL_add_all_digests() + +int EVP_add_cipher(const EVP_CIPHER *cipher); +int EVP_add_digest(const EVP_MD *digest); + +const EVP_CIPHER *EVP_get_cipherbyname(const char *name); +const EVP_MD *EVP_get_digestbyname(const char *name); +void EVP_cleanup(void); + +void EVP_CIPHER_do_all(void (*fn) (const EVP_CIPHER *ciph, + const char *from, const char *to, void *x), + void *arg); +void EVP_CIPHER_do_all_sorted(void (*fn) + (const EVP_CIPHER *ciph, const char *from, + const char *to, void *x), void *arg); + +void EVP_MD_do_all(void (*fn) (const EVP_MD *ciph, + const char *from, const char *to, void *x), + void *arg); +void EVP_MD_do_all_sorted(void (*fn) + (const EVP_MD *ciph, const char *from, + const char *to, void *x), void *arg); + +int EVP_PKEY_decrypt_old(unsigned char *dec_key, + const unsigned char *enc_key, int enc_key_len, + EVP_PKEY *private_key); +int EVP_PKEY_encrypt_old(unsigned char *enc_key, + const unsigned char *key, int key_len, + EVP_PKEY *pub_key); +int EVP_PKEY_type(int type); +int EVP_PKEY_id(const EVP_PKEY *pkey); +int EVP_PKEY_base_id(const EVP_PKEY *pkey); +int EVP_PKEY_bits(EVP_PKEY *pkey); +int EVP_PKEY_size(EVP_PKEY *pkey); +int EVP_PKEY_set_type(EVP_PKEY *pkey, int type); +int EVP_PKEY_set_type_str(EVP_PKEY *pkey, const char *str, int len); +int EVP_PKEY_assign(EVP_PKEY *pkey, int type, void *key); +void *EVP_PKEY_get0(EVP_PKEY *pkey); + +# ifndef OPENSSL_NO_RSA +struct rsa_st; +int EVP_PKEY_set1_RSA(EVP_PKEY *pkey, struct rsa_st *key); +struct rsa_st *EVP_PKEY_get1_RSA(EVP_PKEY *pkey); +# endif +# ifndef OPENSSL_NO_DSA +struct dsa_st; +int EVP_PKEY_set1_DSA(EVP_PKEY *pkey, struct dsa_st *key); +struct dsa_st *EVP_PKEY_get1_DSA(EVP_PKEY *pkey); +# endif +# ifndef OPENSSL_NO_DH +struct dh_st; +int EVP_PKEY_set1_DH(EVP_PKEY *pkey, struct dh_st *key); +struct dh_st *EVP_PKEY_get1_DH(EVP_PKEY *pkey); +# endif +# ifndef OPENSSL_NO_EC +struct ec_key_st; +int EVP_PKEY_set1_EC_KEY(EVP_PKEY *pkey, struct ec_key_st *key); +struct ec_key_st *EVP_PKEY_get1_EC_KEY(EVP_PKEY *pkey); +# endif + +EVP_PKEY *EVP_PKEY_new(void); +void EVP_PKEY_free(EVP_PKEY *pkey); + +EVP_PKEY *d2i_PublicKey(int type, EVP_PKEY **a, const unsigned char **pp, + long length); +int i2d_PublicKey(EVP_PKEY *a, unsigned char **pp); + +EVP_PKEY *d2i_PrivateKey(int type, EVP_PKEY **a, const unsigned char **pp, + long length); +EVP_PKEY *d2i_AutoPrivateKey(EVP_PKEY **a, const unsigned char **pp, + long length); +int i2d_PrivateKey(EVP_PKEY *a, unsigned char **pp); + +int EVP_PKEY_copy_parameters(EVP_PKEY *to, const EVP_PKEY *from); +int EVP_PKEY_missing_parameters(const EVP_PKEY *pkey); +int EVP_PKEY_save_parameters(EVP_PKEY *pkey, int mode); +int EVP_PKEY_cmp_parameters(const EVP_PKEY *a, const EVP_PKEY *b); + +int EVP_PKEY_cmp(const EVP_PKEY *a, const EVP_PKEY *b); + +int EVP_PKEY_print_public(BIO *out, const EVP_PKEY *pkey, + int indent, ASN1_PCTX *pctx); +int EVP_PKEY_print_private(BIO *out, const EVP_PKEY *pkey, + int indent, ASN1_PCTX *pctx); +int EVP_PKEY_print_params(BIO *out, const EVP_PKEY *pkey, + int indent, ASN1_PCTX *pctx); + +int EVP_PKEY_get_default_digest_nid(EVP_PKEY *pkey, int *pnid); + +int EVP_CIPHER_type(const EVP_CIPHER *ctx); + +/* calls methods */ +int EVP_CIPHER_param_to_asn1(EVP_CIPHER_CTX *c, ASN1_TYPE *type); +int EVP_CIPHER_asn1_to_param(EVP_CIPHER_CTX *c, ASN1_TYPE *type); + +/* These are used by EVP_CIPHER methods */ +int EVP_CIPHER_set_asn1_iv(EVP_CIPHER_CTX *c, ASN1_TYPE *type); +int EVP_CIPHER_get_asn1_iv(EVP_CIPHER_CTX *c, ASN1_TYPE *type); + +/* PKCS5 password based encryption */ +int PKCS5_PBE_keyivgen(EVP_CIPHER_CTX *ctx, const char *pass, int passlen, + ASN1_TYPE *param, const EVP_CIPHER *cipher, + const EVP_MD *md, int en_de); +int PKCS5_PBKDF2_HMAC_SHA1(const char *pass, int passlen, + const unsigned char *salt, int saltlen, int iter, + int keylen, unsigned char *out); +int PKCS5_PBKDF2_HMAC(const char *pass, int passlen, + const unsigned char *salt, int saltlen, int iter, + const EVP_MD *digest, int keylen, unsigned char *out); +int PKCS5_v2_PBE_keyivgen(EVP_CIPHER_CTX *ctx, const char *pass, int passlen, + ASN1_TYPE *param, const EVP_CIPHER *cipher, + const EVP_MD *md, int en_de); + +void PKCS5_PBE_add(void); + +int EVP_PBE_CipherInit(ASN1_OBJECT *pbe_obj, const char *pass, int passlen, + ASN1_TYPE *param, EVP_CIPHER_CTX *ctx, int en_de); + +/* PBE type */ + +/* Can appear as the outermost AlgorithmIdentifier */ +# define EVP_PBE_TYPE_OUTER 0x0 +/* Is an PRF type OID */ +# define EVP_PBE_TYPE_PRF 0x1 + +int EVP_PBE_alg_add_type(int pbe_type, int pbe_nid, int cipher_nid, + int md_nid, EVP_PBE_KEYGEN *keygen); +int EVP_PBE_alg_add(int nid, const EVP_CIPHER *cipher, const EVP_MD *md, + EVP_PBE_KEYGEN *keygen); +int EVP_PBE_find(int type, int pbe_nid, int *pcnid, int *pmnid, + EVP_PBE_KEYGEN **pkeygen); +void EVP_PBE_cleanup(void); + +# define ASN1_PKEY_ALIAS 0x1 +# define ASN1_PKEY_DYNAMIC 0x2 +# define ASN1_PKEY_SIGPARAM_NULL 0x4 + +# define ASN1_PKEY_CTRL_PKCS7_SIGN 0x1 +# define ASN1_PKEY_CTRL_PKCS7_ENCRYPT 0x2 +# define ASN1_PKEY_CTRL_DEFAULT_MD_NID 0x3 +# define ASN1_PKEY_CTRL_CMS_SIGN 0x5 +# define ASN1_PKEY_CTRL_CMS_ENVELOPE 0x7 +# define ASN1_PKEY_CTRL_CMS_RI_TYPE 0x8 + +int EVP_PKEY_asn1_get_count(void); +const EVP_PKEY_ASN1_METHOD *EVP_PKEY_asn1_get0(int idx); +const EVP_PKEY_ASN1_METHOD *EVP_PKEY_asn1_find(ENGINE **pe, int type); +const EVP_PKEY_ASN1_METHOD *EVP_PKEY_asn1_find_str(ENGINE **pe, + const char *str, int len); +int EVP_PKEY_asn1_add0(const EVP_PKEY_ASN1_METHOD *ameth); +int EVP_PKEY_asn1_add_alias(int to, int from); +int EVP_PKEY_asn1_get0_info(int *ppkey_id, int *pkey_base_id, + int *ppkey_flags, const char **pinfo, + const char **ppem_str, + const EVP_PKEY_ASN1_METHOD *ameth); + +const EVP_PKEY_ASN1_METHOD *EVP_PKEY_get0_asn1(EVP_PKEY *pkey); +EVP_PKEY_ASN1_METHOD *EVP_PKEY_asn1_new(int id, int flags, + const char *pem_str, + const char *info); +void EVP_PKEY_asn1_copy(EVP_PKEY_ASN1_METHOD *dst, + const EVP_PKEY_ASN1_METHOD *src); +void EVP_PKEY_asn1_free(EVP_PKEY_ASN1_METHOD *ameth); +void EVP_PKEY_asn1_set_public(EVP_PKEY_ASN1_METHOD *ameth, + int (*pub_decode) (EVP_PKEY *pk, + X509_PUBKEY *pub), + int (*pub_encode) (X509_PUBKEY *pub, + const EVP_PKEY *pk), + int (*pub_cmp) (const EVP_PKEY *a, + const EVP_PKEY *b), + int (*pub_print) (BIO *out, + const EVP_PKEY *pkey, + int indent, ASN1_PCTX *pctx), + int (*pkey_size) (const EVP_PKEY *pk), + int (*pkey_bits) (const EVP_PKEY *pk)); +void EVP_PKEY_asn1_set_private(EVP_PKEY_ASN1_METHOD *ameth, + int (*priv_decode) (EVP_PKEY *pk, + PKCS8_PRIV_KEY_INFO + *p8inf), + int (*priv_encode) (PKCS8_PRIV_KEY_INFO *p8, + const EVP_PKEY *pk), + int (*priv_print) (BIO *out, + const EVP_PKEY *pkey, + int indent, + ASN1_PCTX *pctx)); +void EVP_PKEY_asn1_set_param(EVP_PKEY_ASN1_METHOD *ameth, + int (*param_decode) (EVP_PKEY *pkey, + const unsigned char **pder, + int derlen), + int (*param_encode) (const EVP_PKEY *pkey, + unsigned char **pder), + int (*param_missing) (const EVP_PKEY *pk), + int (*param_copy) (EVP_PKEY *to, + const EVP_PKEY *from), + int (*param_cmp) (const EVP_PKEY *a, + const EVP_PKEY *b), + int (*param_print) (BIO *out, + const EVP_PKEY *pkey, + int indent, + ASN1_PCTX *pctx)); + +void EVP_PKEY_asn1_set_free(EVP_PKEY_ASN1_METHOD *ameth, + void (*pkey_free) (EVP_PKEY *pkey)); +void EVP_PKEY_asn1_set_ctrl(EVP_PKEY_ASN1_METHOD *ameth, + int (*pkey_ctrl) (EVP_PKEY *pkey, int op, + long arg1, void *arg2)); + +# define EVP_PKEY_OP_UNDEFINED 0 +# define EVP_PKEY_OP_PARAMGEN (1<<1) +# define EVP_PKEY_OP_KEYGEN (1<<2) +# define EVP_PKEY_OP_SIGN (1<<3) +# define EVP_PKEY_OP_VERIFY (1<<4) +# define EVP_PKEY_OP_VERIFYRECOVER (1<<5) +# define EVP_PKEY_OP_SIGNCTX (1<<6) +# define EVP_PKEY_OP_VERIFYCTX (1<<7) +# define EVP_PKEY_OP_ENCRYPT (1<<8) +# define EVP_PKEY_OP_DECRYPT (1<<9) +# define EVP_PKEY_OP_DERIVE (1<<10) + +# define EVP_PKEY_OP_TYPE_SIG \ + (EVP_PKEY_OP_SIGN | EVP_PKEY_OP_VERIFY | EVP_PKEY_OP_VERIFYRECOVER \ + | EVP_PKEY_OP_SIGNCTX | EVP_PKEY_OP_VERIFYCTX) + +# define EVP_PKEY_OP_TYPE_CRYPT \ + (EVP_PKEY_OP_ENCRYPT | EVP_PKEY_OP_DECRYPT) + +# define EVP_PKEY_OP_TYPE_NOGEN \ + (EVP_PKEY_OP_SIG | EVP_PKEY_OP_CRYPT | EVP_PKEY_OP_DERIVE) + +# define EVP_PKEY_OP_TYPE_GEN \ + (EVP_PKEY_OP_PARAMGEN | EVP_PKEY_OP_KEYGEN) + +# define EVP_PKEY_CTX_set_signature_md(ctx, md) \ + EVP_PKEY_CTX_ctrl(ctx, -1, EVP_PKEY_OP_TYPE_SIG, \ + EVP_PKEY_CTRL_MD, 0, (void *)md) + +# define EVP_PKEY_CTX_get_signature_md(ctx, pmd) \ + EVP_PKEY_CTX_ctrl(ctx, -1, EVP_PKEY_OP_TYPE_SIG, \ + EVP_PKEY_CTRL_GET_MD, 0, (void *)pmd) + +# define EVP_PKEY_CTRL_MD 1 +# define EVP_PKEY_CTRL_PEER_KEY 2 + +# define EVP_PKEY_CTRL_PKCS7_ENCRYPT 3 +# define EVP_PKEY_CTRL_PKCS7_DECRYPT 4 + +# define EVP_PKEY_CTRL_PKCS7_SIGN 5 + +# define EVP_PKEY_CTRL_SET_MAC_KEY 6 + +# define EVP_PKEY_CTRL_DIGESTINIT 7 + +/* Used by GOST key encryption in TLS */ +# define EVP_PKEY_CTRL_SET_IV 8 + +# define EVP_PKEY_CTRL_CMS_ENCRYPT 9 +# define EVP_PKEY_CTRL_CMS_DECRYPT 10 +# define EVP_PKEY_CTRL_CMS_SIGN 11 + +# define EVP_PKEY_CTRL_CIPHER 12 + +# define EVP_PKEY_CTRL_GET_MD 13 + +# define EVP_PKEY_ALG_CTRL 0x1000 + +# define EVP_PKEY_FLAG_AUTOARGLEN 2 +/* + * Method handles all operations: don't assume any digest related defaults. + */ +# define EVP_PKEY_FLAG_SIGCTX_CUSTOM 4 + +const EVP_PKEY_METHOD *EVP_PKEY_meth_find(int type); +EVP_PKEY_METHOD *EVP_PKEY_meth_new(int id, int flags); +void EVP_PKEY_meth_get0_info(int *ppkey_id, int *pflags, + const EVP_PKEY_METHOD *meth); +void EVP_PKEY_meth_copy(EVP_PKEY_METHOD *dst, const EVP_PKEY_METHOD *src); +void EVP_PKEY_meth_free(EVP_PKEY_METHOD *pmeth); +int EVP_PKEY_meth_add0(const EVP_PKEY_METHOD *pmeth); + +EVP_PKEY_CTX *EVP_PKEY_CTX_new(EVP_PKEY *pkey, ENGINE *e); +EVP_PKEY_CTX *EVP_PKEY_CTX_new_id(int id, ENGINE *e); +EVP_PKEY_CTX *EVP_PKEY_CTX_dup(EVP_PKEY_CTX *ctx); +void EVP_PKEY_CTX_free(EVP_PKEY_CTX *ctx); + +int EVP_PKEY_CTX_ctrl(EVP_PKEY_CTX *ctx, int keytype, int optype, + int cmd, int p1, void *p2); +int EVP_PKEY_CTX_ctrl_str(EVP_PKEY_CTX *ctx, const char *type, + const char *value); + +int EVP_PKEY_CTX_get_operation(EVP_PKEY_CTX *ctx); +void EVP_PKEY_CTX_set0_keygen_info(EVP_PKEY_CTX *ctx, int *dat, int datlen); + +EVP_PKEY *EVP_PKEY_new_mac_key(int type, ENGINE *e, + const unsigned char *key, int keylen); + +void EVP_PKEY_CTX_set_data(EVP_PKEY_CTX *ctx, void *data); +void *EVP_PKEY_CTX_get_data(EVP_PKEY_CTX *ctx); +EVP_PKEY *EVP_PKEY_CTX_get0_pkey(EVP_PKEY_CTX *ctx); + +EVP_PKEY *EVP_PKEY_CTX_get0_peerkey(EVP_PKEY_CTX *ctx); + +void EVP_PKEY_CTX_set_app_data(EVP_PKEY_CTX *ctx, void *data); +void *EVP_PKEY_CTX_get_app_data(EVP_PKEY_CTX *ctx); + +int EVP_PKEY_sign_init(EVP_PKEY_CTX *ctx); +int EVP_PKEY_sign(EVP_PKEY_CTX *ctx, + unsigned char *sig, size_t *siglen, + const unsigned char *tbs, size_t tbslen); +int EVP_PKEY_verify_init(EVP_PKEY_CTX *ctx); +int EVP_PKEY_verify(EVP_PKEY_CTX *ctx, + const unsigned char *sig, size_t siglen, + const unsigned char *tbs, size_t tbslen); +int EVP_PKEY_verify_recover_init(EVP_PKEY_CTX *ctx); +int EVP_PKEY_verify_recover(EVP_PKEY_CTX *ctx, + unsigned char *rout, size_t *routlen, + const unsigned char *sig, size_t siglen); +int EVP_PKEY_encrypt_init(EVP_PKEY_CTX *ctx); +int EVP_PKEY_encrypt(EVP_PKEY_CTX *ctx, + unsigned char *out, size_t *outlen, + const unsigned char *in, size_t inlen); +int EVP_PKEY_decrypt_init(EVP_PKEY_CTX *ctx); +int EVP_PKEY_decrypt(EVP_PKEY_CTX *ctx, + unsigned char *out, size_t *outlen, + const unsigned char *in, size_t inlen); + +int EVP_PKEY_derive_init(EVP_PKEY_CTX *ctx); +int EVP_PKEY_derive_set_peer(EVP_PKEY_CTX *ctx, EVP_PKEY *peer); +int EVP_PKEY_derive(EVP_PKEY_CTX *ctx, unsigned char *key, size_t *keylen); + +typedef int EVP_PKEY_gen_cb (EVP_PKEY_CTX *ctx); + +int EVP_PKEY_paramgen_init(EVP_PKEY_CTX *ctx); +int EVP_PKEY_paramgen(EVP_PKEY_CTX *ctx, EVP_PKEY **ppkey); +int EVP_PKEY_keygen_init(EVP_PKEY_CTX *ctx); +int EVP_PKEY_keygen(EVP_PKEY_CTX *ctx, EVP_PKEY **ppkey); + +void EVP_PKEY_CTX_set_cb(EVP_PKEY_CTX *ctx, EVP_PKEY_gen_cb *cb); +EVP_PKEY_gen_cb *EVP_PKEY_CTX_get_cb(EVP_PKEY_CTX *ctx); + +int EVP_PKEY_CTX_get_keygen_info(EVP_PKEY_CTX *ctx, int idx); + +void EVP_PKEY_meth_set_init(EVP_PKEY_METHOD *pmeth, + int (*init) (EVP_PKEY_CTX *ctx)); + +void EVP_PKEY_meth_set_copy(EVP_PKEY_METHOD *pmeth, + int (*copy) (EVP_PKEY_CTX *dst, + EVP_PKEY_CTX *src)); + +void EVP_PKEY_meth_set_cleanup(EVP_PKEY_METHOD *pmeth, + void (*cleanup) (EVP_PKEY_CTX *ctx)); + +void EVP_PKEY_meth_set_paramgen(EVP_PKEY_METHOD *pmeth, + int (*paramgen_init) (EVP_PKEY_CTX *ctx), + int (*paramgen) (EVP_PKEY_CTX *ctx, + EVP_PKEY *pkey)); + +void EVP_PKEY_meth_set_keygen(EVP_PKEY_METHOD *pmeth, + int (*keygen_init) (EVP_PKEY_CTX *ctx), + int (*keygen) (EVP_PKEY_CTX *ctx, + EVP_PKEY *pkey)); + +void EVP_PKEY_meth_set_sign(EVP_PKEY_METHOD *pmeth, + int (*sign_init) (EVP_PKEY_CTX *ctx), + int (*sign) (EVP_PKEY_CTX *ctx, + unsigned char *sig, size_t *siglen, + const unsigned char *tbs, + size_t tbslen)); + +void EVP_PKEY_meth_set_verify(EVP_PKEY_METHOD *pmeth, + int (*verify_init) (EVP_PKEY_CTX *ctx), + int (*verify) (EVP_PKEY_CTX *ctx, + const unsigned char *sig, + size_t siglen, + const unsigned char *tbs, + size_t tbslen)); + +void EVP_PKEY_meth_set_verify_recover(EVP_PKEY_METHOD *pmeth, + int (*verify_recover_init) (EVP_PKEY_CTX + *ctx), + int (*verify_recover) (EVP_PKEY_CTX + *ctx, + unsigned char + *sig, + size_t *siglen, + const unsigned + char *tbs, + size_t tbslen)); + +void EVP_PKEY_meth_set_signctx(EVP_PKEY_METHOD *pmeth, + int (*signctx_init) (EVP_PKEY_CTX *ctx, + EVP_MD_CTX *mctx), + int (*signctx) (EVP_PKEY_CTX *ctx, + unsigned char *sig, + size_t *siglen, + EVP_MD_CTX *mctx)); + +void EVP_PKEY_meth_set_verifyctx(EVP_PKEY_METHOD *pmeth, + int (*verifyctx_init) (EVP_PKEY_CTX *ctx, + EVP_MD_CTX *mctx), + int (*verifyctx) (EVP_PKEY_CTX *ctx, + const unsigned char *sig, + int siglen, + EVP_MD_CTX *mctx)); + +void EVP_PKEY_meth_set_encrypt(EVP_PKEY_METHOD *pmeth, + int (*encrypt_init) (EVP_PKEY_CTX *ctx), + int (*encryptfn) (EVP_PKEY_CTX *ctx, + unsigned char *out, + size_t *outlen, + const unsigned char *in, + size_t inlen)); + +void EVP_PKEY_meth_set_decrypt(EVP_PKEY_METHOD *pmeth, + int (*decrypt_init) (EVP_PKEY_CTX *ctx), + int (*decrypt) (EVP_PKEY_CTX *ctx, + unsigned char *out, + size_t *outlen, + const unsigned char *in, + size_t inlen)); + +void EVP_PKEY_meth_set_derive(EVP_PKEY_METHOD *pmeth, + int (*derive_init) (EVP_PKEY_CTX *ctx), + int (*derive) (EVP_PKEY_CTX *ctx, + unsigned char *key, + size_t *keylen)); + +void EVP_PKEY_meth_set_ctrl(EVP_PKEY_METHOD *pmeth, + int (*ctrl) (EVP_PKEY_CTX *ctx, int type, int p1, + void *p2), + int (*ctrl_str) (EVP_PKEY_CTX *ctx, + const char *type, + const char *value)); + +void EVP_add_alg_module(void); + +/* BEGIN ERROR CODES */ +/* + * The following lines are auto generated by the script mkerr.pl. Any changes + * made after this point may be overwritten when the script is next run. + */ +void ERR_load_EVP_strings(void); + +/* Error codes for the EVP functions. */ + +/* Function codes. */ +# define EVP_F_AESNI_INIT_KEY 165 +# define EVP_F_AESNI_XTS_CIPHER 176 +# define EVP_F_AES_INIT_KEY 133 +# define EVP_F_AES_T4_INIT_KEY 178 +# define EVP_F_AES_XTS 172 +# define EVP_F_AES_XTS_CIPHER 175 +# define EVP_F_ALG_MODULE_INIT 177 +# define EVP_F_CAMELLIA_INIT_KEY 159 +# define EVP_F_CMAC_INIT 173 +# define EVP_F_CMLL_T4_INIT_KEY 179 +# define EVP_F_D2I_PKEY 100 +# define EVP_F_DO_SIGVER_INIT 161 +# define EVP_F_DSAPKEY2PKCS8 134 +# define EVP_F_DSA_PKEY2PKCS8 135 +# define EVP_F_ECDSA_PKEY2PKCS8 129 +# define EVP_F_ECKEY_PKEY2PKCS8 132 +# define EVP_F_EVP_CIPHERINIT_EX 123 +# define EVP_F_EVP_CIPHER_CTX_COPY 163 +# define EVP_F_EVP_CIPHER_CTX_CTRL 124 +# define EVP_F_EVP_CIPHER_CTX_SET_KEY_LENGTH 122 +# define EVP_F_EVP_DECRYPTFINAL_EX 101 +# define EVP_F_EVP_DIGESTINIT_EX 128 +# define EVP_F_EVP_ENCRYPTFINAL_EX 127 +# define EVP_F_EVP_MD_CTX_COPY_EX 110 +# define EVP_F_EVP_MD_SIZE 162 +# define EVP_F_EVP_OPENINIT 102 +# define EVP_F_EVP_PBE_ALG_ADD 115 +# define EVP_F_EVP_PBE_ALG_ADD_TYPE 160 +# define EVP_F_EVP_PBE_CIPHERINIT 116 +# define EVP_F_EVP_PKCS82PKEY 111 +# define EVP_F_EVP_PKCS82PKEY_BROKEN 136 +# define EVP_F_EVP_PKEY2PKCS8_BROKEN 113 +# define EVP_F_EVP_PKEY_COPY_PARAMETERS 103 +# define EVP_F_EVP_PKEY_CTX_CTRL 137 +# define EVP_F_EVP_PKEY_CTX_CTRL_STR 150 +# define EVP_F_EVP_PKEY_CTX_DUP 156 +# define EVP_F_EVP_PKEY_DECRYPT 104 +# define EVP_F_EVP_PKEY_DECRYPT_INIT 138 +# define EVP_F_EVP_PKEY_DECRYPT_OLD 151 +# define EVP_F_EVP_PKEY_DERIVE 153 +# define EVP_F_EVP_PKEY_DERIVE_INIT 154 +# define EVP_F_EVP_PKEY_DERIVE_SET_PEER 155 +# define EVP_F_EVP_PKEY_ENCRYPT 105 +# define EVP_F_EVP_PKEY_ENCRYPT_INIT 139 +# define EVP_F_EVP_PKEY_ENCRYPT_OLD 152 +# define EVP_F_EVP_PKEY_GET1_DH 119 +# define EVP_F_EVP_PKEY_GET1_DSA 120 +# define EVP_F_EVP_PKEY_GET1_ECDSA 130 +# define EVP_F_EVP_PKEY_GET1_EC_KEY 131 +# define EVP_F_EVP_PKEY_GET1_RSA 121 +# define EVP_F_EVP_PKEY_KEYGEN 146 +# define EVP_F_EVP_PKEY_KEYGEN_INIT 147 +# define EVP_F_EVP_PKEY_NEW 106 +# define EVP_F_EVP_PKEY_PARAMGEN 148 +# define EVP_F_EVP_PKEY_PARAMGEN_INIT 149 +# define EVP_F_EVP_PKEY_SIGN 140 +# define EVP_F_EVP_PKEY_SIGN_INIT 141 +# define EVP_F_EVP_PKEY_VERIFY 142 +# define EVP_F_EVP_PKEY_VERIFY_INIT 143 +# define EVP_F_EVP_PKEY_VERIFY_RECOVER 144 +# define EVP_F_EVP_PKEY_VERIFY_RECOVER_INIT 145 +# define EVP_F_EVP_RIJNDAEL 126 +# define EVP_F_EVP_SIGNFINAL 107 +# define EVP_F_EVP_VERIFYFINAL 108 +# define EVP_F_FIPS_CIPHERINIT 166 +# define EVP_F_FIPS_CIPHER_CTX_COPY 170 +# define EVP_F_FIPS_CIPHER_CTX_CTRL 167 +# define EVP_F_FIPS_CIPHER_CTX_SET_KEY_LENGTH 171 +# define EVP_F_FIPS_DIGESTINIT 168 +# define EVP_F_FIPS_MD_CTX_COPY 169 +# define EVP_F_HMAC_INIT_EX 174 +# define EVP_F_INT_CTX_NEW 157 +# define EVP_F_PKCS5_PBE_KEYIVGEN 117 +# define EVP_F_PKCS5_V2_PBE_KEYIVGEN 118 +# define EVP_F_PKCS5_V2_PBKDF2_KEYIVGEN 164 +# define EVP_F_PKCS8_SET_BROKEN 112 +# define EVP_F_PKEY_SET_TYPE 158 +# define EVP_F_RC2_MAGIC_TO_METH 109 +# define EVP_F_RC5_CTRL 125 + +/* Reason codes. */ +# define EVP_R_AES_IV_SETUP_FAILED 162 +# define EVP_R_AES_KEY_SETUP_FAILED 143 +# define EVP_R_ASN1_LIB 140 +# define EVP_R_BAD_BLOCK_LENGTH 136 +# define EVP_R_BAD_DECRYPT 100 +# define EVP_R_BAD_KEY_LENGTH 137 +# define EVP_R_BN_DECODE_ERROR 112 +# define EVP_R_BN_PUBKEY_ERROR 113 +# define EVP_R_BUFFER_TOO_SMALL 155 +# define EVP_R_CAMELLIA_KEY_SETUP_FAILED 157 +# define EVP_R_CIPHER_PARAMETER_ERROR 122 +# define EVP_R_COMMAND_NOT_SUPPORTED 147 +# define EVP_R_CTRL_NOT_IMPLEMENTED 132 +# define EVP_R_CTRL_OPERATION_NOT_IMPLEMENTED 133 +# define EVP_R_DATA_NOT_MULTIPLE_OF_BLOCK_LENGTH 138 +# define EVP_R_DECODE_ERROR 114 +# define EVP_R_DIFFERENT_KEY_TYPES 101 +# define EVP_R_DIFFERENT_PARAMETERS 153 +# define EVP_R_DISABLED_FOR_FIPS 163 +# define EVP_R_ENCODE_ERROR 115 +# define EVP_R_ERROR_LOADING_SECTION 165 +# define EVP_R_ERROR_SETTING_FIPS_MODE 166 +# define EVP_R_EVP_PBE_CIPHERINIT_ERROR 119 +# define EVP_R_EXPECTING_AN_RSA_KEY 127 +# define EVP_R_EXPECTING_A_DH_KEY 128 +# define EVP_R_EXPECTING_A_DSA_KEY 129 +# define EVP_R_EXPECTING_A_ECDSA_KEY 141 +# define EVP_R_EXPECTING_A_EC_KEY 142 +# define EVP_R_FIPS_MODE_NOT_SUPPORTED 167 +# define EVP_R_INITIALIZATION_ERROR 134 +# define EVP_R_INPUT_NOT_INITIALIZED 111 +# define EVP_R_INVALID_DIGEST 152 +# define EVP_R_INVALID_FIPS_MODE 168 +# define EVP_R_INVALID_KEY_LENGTH 130 +# define EVP_R_INVALID_OPERATION 148 +# define EVP_R_IV_TOO_LARGE 102 +# define EVP_R_KEYGEN_FAILURE 120 +# define EVP_R_MESSAGE_DIGEST_IS_NULL 159 +# define EVP_R_METHOD_NOT_SUPPORTED 144 +# define EVP_R_MISSING_PARAMETERS 103 +# define EVP_R_NO_CIPHER_SET 131 +# define EVP_R_NO_DEFAULT_DIGEST 158 +# define EVP_R_NO_DIGEST_SET 139 +# define EVP_R_NO_DSA_PARAMETERS 116 +# define EVP_R_NO_KEY_SET 154 +# define EVP_R_NO_OPERATION_SET 149 +# define EVP_R_NO_SIGN_FUNCTION_CONFIGURED 104 +# define EVP_R_NO_VERIFY_FUNCTION_CONFIGURED 105 +# define EVP_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE 150 +# define EVP_R_OPERATON_NOT_INITIALIZED 151 +# define EVP_R_PKCS8_UNKNOWN_BROKEN_TYPE 117 +# define EVP_R_PRIVATE_KEY_DECODE_ERROR 145 +# define EVP_R_PRIVATE_KEY_ENCODE_ERROR 146 +# define EVP_R_PUBLIC_KEY_NOT_RSA 106 +# define EVP_R_TOO_LARGE 164 +# define EVP_R_UNKNOWN_CIPHER 160 +# define EVP_R_UNKNOWN_DIGEST 161 +# define EVP_R_UNKNOWN_OPTION 169 +# define EVP_R_UNKNOWN_PBE_ALGORITHM 121 +# define EVP_R_UNSUPORTED_NUMBER_OF_ROUNDS 135 +# define EVP_R_UNSUPPORTED_ALGORITHM 156 +# define EVP_R_UNSUPPORTED_CIPHER 107 +# define EVP_R_UNSUPPORTED_KEYLENGTH 123 +# define EVP_R_UNSUPPORTED_KEY_DERIVATION_FUNCTION 124 +# define EVP_R_UNSUPPORTED_KEY_SIZE 108 +# define EVP_R_UNSUPPORTED_PRF 125 +# define EVP_R_UNSUPPORTED_PRIVATE_KEY_ALGORITHM 118 +# define EVP_R_UNSUPPORTED_SALT_TYPE 126 +# define EVP_R_WRAP_MODE_NOT_ALLOWED 170 +# define EVP_R_WRONG_FINAL_BLOCK_LENGTH 109 +# define EVP_R_WRONG_PUBLIC_KEY_TYPE 110 + +#ifdef __cplusplus +} +#endif +#endif diff --git a/ext/openssl-win32/inc32/openssl/hmac.h b/ext/openssl-win32/inc32/openssl/hmac.h new file mode 100644 index 00000000..b8b55cda --- /dev/null +++ b/ext/openssl-win32/inc32/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/ext/openssl-win32/inc32/openssl/kssl.h b/ext/openssl-win32/inc32/openssl/kssl.h new file mode 100644 index 00000000..9a576728 --- /dev/null +++ b/ext/openssl-win32/inc32/openssl/kssl.h @@ -0,0 +1,197 @@ +/* ssl/kssl.h -*- mode: C; c-file-style: "eay" -*- */ +/* + * Written by Vern Staats for the OpenSSL project + * 2000. project 2000. + */ +/* ==================================================================== + * Copyright (c) 2000 The OpenSSL Project. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. All advertising materials mentioning features or use of this + * software must display the following acknowledgment: + * "This product includes software developed by the OpenSSL Project + * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" + * + * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to + * endorse or promote products derived from this software without + * prior written permission. For written permission, please contact + * licensing@OpenSSL.org. + * + * 5. Products derived from this software may not be called "OpenSSL" + * nor may "OpenSSL" appear in their names without prior written + * permission of the OpenSSL Project. + * + * 6. Redistributions of any form whatsoever must retain the following + * acknowledgment: + * "This product includes software developed by the OpenSSL Project + * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" + * + * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY + * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * ==================================================================== + * + * This product includes cryptographic software written by Eric Young + * (eay@cryptsoft.com). This product includes software written by Tim + * Hudson (tjh@cryptsoft.com). + * + */ + +/* + ** 19990701 VRS Started. + */ + +#ifndef KSSL_H +# define KSSL_H + +# include + +# ifndef OPENSSL_NO_KRB5 + +# include +# include +# include +# ifdef OPENSSL_SYS_WIN32 +/* + * These can sometimes get redefined indirectly by krb5 header files after + * they get undefed in ossl_typ.h + */ +# undef X509_NAME +# undef X509_EXTENSIONS +# undef OCSP_REQUEST +# undef OCSP_RESPONSE +# endif + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Depending on which KRB5 implementation used, some types from + * the other may be missing. Resolve that here and now + */ +# ifdef KRB5_HEIMDAL +typedef unsigned char krb5_octet; +# define FAR +# else + +# ifndef FAR +# define FAR +# endif + +# endif + +/*- + * Uncomment this to debug kssl problems or + * to trace usage of the Kerberos session key + * + * #define KSSL_DEBUG + */ + +# ifndef KRB5SVC +# define KRB5SVC "host" +# endif + +# ifndef KRB5KEYTAB +# define KRB5KEYTAB "/etc/krb5.keytab" +# endif + +# ifndef KRB5SENDAUTH +# define KRB5SENDAUTH 1 +# endif + +# ifndef KRB5CHECKAUTH +# define KRB5CHECKAUTH 1 +# endif + +# ifndef KSSL_CLOCKSKEW +# define KSSL_CLOCKSKEW 300; +# endif + +# define KSSL_ERR_MAX 255 +typedef struct kssl_err_st { + int reason; + char text[KSSL_ERR_MAX + 1]; +} KSSL_ERR; + +/*- Context for passing + * (1) Kerberos session key to SSL, and + * (2) Config data between application and SSL lib + */ +typedef struct kssl_ctx_st { + /* used by: disposition: */ + char *service_name; /* C,S default ok (kssl) */ + char *service_host; /* C input, REQUIRED */ + char *client_princ; /* S output from krb5 ticket */ + char *keytab_file; /* S NULL (/etc/krb5.keytab) */ + char *cred_cache; /* C NULL (default) */ + krb5_enctype enctype; + int length; + krb5_octet FAR *key; +} KSSL_CTX; + +# define KSSL_CLIENT 1 +# define KSSL_SERVER 2 +# define KSSL_SERVICE 3 +# define KSSL_KEYTAB 4 + +# define KSSL_CTX_OK 0 +# define KSSL_CTX_ERR 1 +# define KSSL_NOMEM 2 + +/* Public (for use by applications that use OpenSSL with Kerberos 5 support */ +krb5_error_code kssl_ctx_setstring(KSSL_CTX *kssl_ctx, int which, char *text); +KSSL_CTX *kssl_ctx_new(void); +KSSL_CTX *kssl_ctx_free(KSSL_CTX *kssl_ctx); +void kssl_ctx_show(KSSL_CTX *kssl_ctx); +krb5_error_code kssl_ctx_setprinc(KSSL_CTX *kssl_ctx, int which, + krb5_data *realm, krb5_data *entity, + int nentities); +krb5_error_code kssl_cget_tkt(KSSL_CTX *kssl_ctx, krb5_data **enc_tktp, + krb5_data *authenp, KSSL_ERR *kssl_err); +krb5_error_code kssl_sget_tkt(KSSL_CTX *kssl_ctx, krb5_data *indata, + krb5_ticket_times *ttimes, KSSL_ERR *kssl_err); +krb5_error_code kssl_ctx_setkey(KSSL_CTX *kssl_ctx, krb5_keyblock *session); +void kssl_err_set(KSSL_ERR *kssl_err, int reason, char *text); +void kssl_krb5_free_data_contents(krb5_context context, krb5_data *data); +krb5_error_code kssl_build_principal_2(krb5_context context, + krb5_principal *princ, int rlen, + const char *realm, int slen, + const char *svc, int hlen, + const char *host); +krb5_error_code kssl_validate_times(krb5_timestamp atime, + krb5_ticket_times *ttimes); +krb5_error_code kssl_check_authent(KSSL_CTX *kssl_ctx, krb5_data *authentp, + krb5_timestamp *atimep, + KSSL_ERR *kssl_err); +unsigned char *kssl_skip_confound(krb5_enctype enctype, unsigned char *authn); + +void SSL_set0_kssl_ctx(SSL *s, KSSL_CTX *kctx); +KSSL_CTX *SSL_get0_kssl_ctx(SSL *s); +char *kssl_ctx_get0_client_princ(KSSL_CTX *kctx); + +#ifdef __cplusplus +} +#endif +# endif /* OPENSSL_NO_KRB5 */ +#endif /* KSSL_H */ diff --git a/ext/openssl-win32/inc32/openssl/lhash.h b/ext/openssl-win32/inc32/openssl/lhash.h new file mode 100644 index 00000000..b6c328bf --- /dev/null +++ b/ext/openssl-win32/inc32/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/ext/openssl-win32/inc32/openssl/obj_mac.h b/ext/openssl-win32/inc32/openssl/obj_mac.h new file mode 100644 index 00000000..779c309b --- /dev/null +++ b/ext/openssl-win32/inc32/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/ext/openssl-win32/inc32/openssl/objects.h b/ext/openssl-win32/inc32/openssl/objects.h new file mode 100644 index 00000000..b8dafa89 --- /dev/null +++ b/ext/openssl-win32/inc32/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/ext/openssl-win32/inc32/openssl/opensslconf.h b/ext/openssl-win32/inc32/openssl/opensslconf.h new file mode 100644 index 00000000..8f85f844 --- /dev/null +++ b/ext/openssl-win32/inc32/openssl/opensslconf.h @@ -0,0 +1,259 @@ +/* opensslconf.h */ +/* WARNING: Generated automatically from opensslconf.h.in by Configure. */ + +#ifdef __cplusplus +extern "C" { +#endif +/* OpenSSL was configured with the following options: */ +#ifndef OPENSSL_SYSNAME_WIN32 +# define OPENSSL_SYSNAME_WIN32 +#endif +#ifndef OPENSSL_DOING_MAKEDEPEND + + +#ifndef OPENSSL_NO_EC_NISTP_64_GCC_128 +# define OPENSSL_NO_EC_NISTP_64_GCC_128 +#endif +#ifndef OPENSSL_NO_GMP +# define OPENSSL_NO_GMP +#endif +#ifndef OPENSSL_NO_JPAKE +# define OPENSSL_NO_JPAKE +#endif +#ifndef OPENSSL_NO_KRB5 +# define OPENSSL_NO_KRB5 +#endif +#ifndef OPENSSL_NO_LIBUNBOUND +# define OPENSSL_NO_LIBUNBOUND +#endif +#ifndef OPENSSL_NO_MD2 +# define OPENSSL_NO_MD2 +#endif +#ifndef OPENSSL_NO_RC5 +# define OPENSSL_NO_RC5 +#endif +#ifndef OPENSSL_NO_RFC3779 +# define OPENSSL_NO_RFC3779 +#endif +#ifndef OPENSSL_NO_SCTP +# define OPENSSL_NO_SCTP +#endif +#ifndef OPENSSL_NO_SSL_TRACE +# define OPENSSL_NO_SSL_TRACE +#endif +#ifndef OPENSSL_NO_STORE +# define OPENSSL_NO_STORE +#endif +#ifndef OPENSSL_NO_UNIT_TEST +# define OPENSSL_NO_UNIT_TEST +#endif + +#endif /* OPENSSL_DOING_MAKEDEPEND */ + +#ifndef OPENSSL_THREADS +# define OPENSSL_THREADS +#endif + +/* The OPENSSL_NO_* macros are also defined as NO_* if the application + asks for it. This is a transient feature that is provided for those + who haven't had the time to do the appropriate changes in their + applications. */ +#ifdef OPENSSL_ALGORITHM_DEFINES +# if defined(OPENSSL_NO_EC_NISTP_64_GCC_128) && !defined(NO_EC_NISTP_64_GCC_128) +# define NO_EC_NISTP_64_GCC_128 +# endif +# if defined(OPENSSL_NO_GMP) && !defined(NO_GMP) +# define NO_GMP +# endif +# if defined(OPENSSL_NO_JPAKE) && !defined(NO_JPAKE) +# define NO_JPAKE +# endif +# if defined(OPENSSL_NO_KRB5) && !defined(NO_KRB5) +# define NO_KRB5 +# endif +# if defined(OPENSSL_NO_LIBUNBOUND) && !defined(NO_LIBUNBOUND) +# define NO_LIBUNBOUND +# endif +# if defined(OPENSSL_NO_MD2) && !defined(NO_MD2) +# define NO_MD2 +# endif +# if defined(OPENSSL_NO_RC5) && !defined(NO_RC5) +# define NO_RC5 +# endif +# if defined(OPENSSL_NO_RFC3779) && !defined(NO_RFC3779) +# define NO_RFC3779 +# endif +# if defined(OPENSSL_NO_SCTP) && !defined(NO_SCTP) +# define NO_SCTP +# endif +# if defined(OPENSSL_NO_SSL_TRACE) && !defined(NO_SSL_TRACE) +# define NO_SSL_TRACE +# endif +# if defined(OPENSSL_NO_STORE) && !defined(NO_STORE) +# define NO_STORE +# endif +# if defined(OPENSSL_NO_UNIT_TEST) && !defined(NO_UNIT_TEST) +# define NO_UNIT_TEST +# endif +#endif + +#define OPENSSL_CPUID_OBJ + +/* crypto/opensslconf.h.in */ + +/* Generate 80386 code? */ +#undef I386_ONLY + +#if !(defined(VMS) || defined(__VMS)) /* VMS uses logical names instead */ +#if defined(HEADER_CRYPTLIB_H) && !defined(OPENSSLDIR) +#define ENGINESDIR "/usr/local/ssl/lib/engines" +#define OPENSSLDIR "/usr/local/ssl" +#endif +#endif + +#undef OPENSSL_UNISTD +#define OPENSSL_UNISTD + +#undef OPENSSL_EXPORT_VAR_AS_FUNCTION +#define OPENSSL_EXPORT_VAR_AS_FUNCTION + +#if defined(HEADER_IDEA_H) && !defined(IDEA_INT) +#define IDEA_INT unsigned int +#endif + +#if defined(HEADER_MD2_H) && !defined(MD2_INT) +#define MD2_INT unsigned int +#endif + +#if defined(HEADER_RC2_H) && !defined(RC2_INT) +/* I need to put in a mod for the alpha - eay */ +#define RC2_INT unsigned int +#endif + +#if defined(HEADER_RC4_H) +#if !defined(RC4_INT) +/* using int types make the structure larger but make the code faster + * on most boxes I have tested - up to %20 faster. */ +/* + * I don't know what does "most" mean, but declaring "int" is a must on: + * - Intel P6 because partial register stalls are very expensive; + * - elder Alpha because it lacks byte load/store instructions; + */ +#define RC4_INT unsigned int +#endif +#if !defined(RC4_CHUNK) +/* + * This enables code handling data aligned at natural CPU word + * boundary. See crypto/rc4/rc4_enc.c for further details. + */ +#undef RC4_CHUNK +#endif +#endif + +#if (defined(HEADER_NEW_DES_H) || defined(HEADER_DES_H)) && !defined(DES_LONG) +/* If this is set to 'unsigned int' on a DEC Alpha, this gives about a + * %20 speed up (longs are 8 bytes, int's are 4). */ +#ifndef DES_LONG +#define DES_LONG unsigned long +#endif +#endif + +#if defined(HEADER_BN_H) && !defined(CONFIG_HEADER_BN_H) +#define CONFIG_HEADER_BN_H +#define BN_LLONG + +/* Should we define BN_DIV2W here? */ + +/* Only one for the following should be defined */ +#undef SIXTY_FOUR_BIT_LONG +#undef SIXTY_FOUR_BIT +#define THIRTY_TWO_BIT +#endif + +#if defined(HEADER_RC4_LOCL_H) && !defined(CONFIG_HEADER_RC4_LOCL_H) +#define CONFIG_HEADER_RC4_LOCL_H +/* if this is defined data[i] is used instead of *data, this is a %20 + * speedup on x86 */ +#define RC4_INDEX +#endif + +#if defined(HEADER_BF_LOCL_H) && !defined(CONFIG_HEADER_BF_LOCL_H) +#define CONFIG_HEADER_BF_LOCL_H +#undef BF_PTR +#endif /* HEADER_BF_LOCL_H */ + +#if defined(HEADER_DES_LOCL_H) && !defined(CONFIG_HEADER_DES_LOCL_H) +#define CONFIG_HEADER_DES_LOCL_H +#ifndef DES_DEFAULT_OPTIONS +/* the following is tweaked from a config script, that is why it is a + * protected undef/define */ +#ifndef DES_PTR +#undef DES_PTR +#endif + +/* This helps C compiler generate the correct code for multiple functional + * units. It reduces register dependancies at the expense of 2 more + * registers */ +#ifndef DES_RISC1 +#undef DES_RISC1 +#endif + +#ifndef DES_RISC2 +#undef DES_RISC2 +#endif + +#if defined(DES_RISC1) && defined(DES_RISC2) +YOU SHOULD NOT HAVE BOTH DES_RISC1 AND DES_RISC2 DEFINED!!!!! +#endif + +/* Unroll the inner loop, this sometimes helps, sometimes hinders. + * Very mucy CPU dependant */ +#ifndef DES_UNROLL +#undef DES_UNROLL +#endif + +/* These default values were supplied by + * Peter Gutman + * They are only used if nothing else has been defined */ +#if !defined(DES_PTR) && !defined(DES_RISC1) && !defined(DES_RISC2) && !defined(DES_UNROLL) +/* Special defines which change the way the code is built depending on the + CPU and OS. For SGI machines you can use _MIPS_SZLONG (32 or 64) to find + even newer MIPS CPU's, but at the moment one size fits all for + optimization options. Older Sparc's work better with only UNROLL, but + there's no way to tell at compile time what it is you're running on */ + +#if defined( sun ) /* Newer Sparc's */ +# define DES_PTR +# define DES_RISC1 +# define DES_UNROLL +#elif defined( __ultrix ) /* Older MIPS */ +# define DES_PTR +# define DES_RISC2 +# define DES_UNROLL +#elif defined( __osf1__ ) /* Alpha */ +# define DES_PTR +# define DES_RISC2 +#elif defined ( _AIX ) /* RS6000 */ + /* Unknown */ +#elif defined( __hpux ) /* HP-PA */ + /* Unknown */ +#elif defined( __aux ) /* 68K */ + /* Unknown */ +#elif defined( __dgux ) /* 88K (but P6 in latest boxes) */ +# define DES_UNROLL +#elif defined( __sgi ) /* Newer MIPS */ +# define DES_PTR +# define DES_RISC2 +# define DES_UNROLL +#elif defined(i386) || defined(__i386__) /* x86 boxes, should be gcc */ +# define DES_PTR +# define DES_RISC1 +# define DES_UNROLL +#endif /* Systems-specific speed defines */ +#endif + +#endif /* DES_DEFAULT_OPTIONS */ +#endif /* HEADER_DES_LOCL_H */ +#ifdef __cplusplus +} +#endif diff --git a/ext/openssl-win32/inc32/openssl/opensslv.h b/ext/openssl-win32/inc32/openssl/opensslv.h new file mode 100644 index 00000000..e277caee --- /dev/null +++ b/ext/openssl-win32/inc32/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 0x1000200fL +# ifdef OPENSSL_FIPS +# define OPENSSL_VERSION_TEXT "OpenSSL 1.0.2-fips 22 Jan 2015" +# else +# define OPENSSL_VERSION_TEXT "OpenSSL 1.0.2 22 Jan 2015" +# endif +# define OPENSSL_VERSION_PTEXT " part of " OPENSSL_VERSION_TEXT + +/*- + * The macros below are to be used for shared library (.so, .dll, ...) + * versioning. That kind of versioning works a bit differently between + * operating systems. The most usual scheme is to set a major and a minor + * number, and have the runtime loader check that the major number is equal + * to what it was at application link time, while the minor number has to + * be greater or equal to what it was at application link time. With this + * scheme, the version number is usually part of the file name, like this: + * + * libcrypto.so.0.9 + * + * Some unixen also make a softlink with the major verson number only: + * + * libcrypto.so.0 + * + * On Tru64 and IRIX 6.x it works a little bit differently. There, the + * shared library version is stored in the file, and is actually a series + * of versions, separated by colons. The rightmost version present in the + * library when linking an application is stored in the application to be + * matched at run time. When the application is run, a check is done to + * see if the library version stored in the application matches any of the + * versions in the version string of the library itself. + * This version string can be constructed in any way, depending on what + * kind of matching is desired. However, to implement the same scheme as + * the one used in the other unixen, all compatible versions, from lowest + * to highest, should be part of the string. Consecutive builds would + * give the following versions strings: + * + * 3.0 + * 3.0:3.1 + * 3.0:3.1:3.2 + * 4.0 + * 4.0:4.1 + * + * Notice how version 4 is completely incompatible with version, and + * therefore give the breach you can see. + * + * There may be other schemes as well that I haven't yet discovered. + * + * So, here's the way it works here: first of all, the library version + * number doesn't need at all to match the overall OpenSSL version. + * However, it's nice and more understandable if it actually does. + * The current library version is stored in the macro SHLIB_VERSION_NUMBER, + * which is just a piece of text in the format "M.m.e" (Major, minor, edit). + * For the sake of Tru64, IRIX, and any other OS that behaves in similar ways, + * we need to keep a history of version numbers, which is done in the + * macro SHLIB_VERSION_HISTORY. The numbers are separated by colons and + * should only keep the versions that are binary compatible with the current. + */ +# define SHLIB_VERSION_HISTORY "" +# define SHLIB_VERSION_NUMBER "1.0.0" + + +#ifdef __cplusplus +} +#endif +#endif /* HEADER_OPENSSLV_H */ diff --git a/ext/openssl-win32/inc32/openssl/ossl_typ.h b/ext/openssl-win32/inc32/openssl/ossl_typ.h new file mode 100644 index 00000000..9144ea2c --- /dev/null +++ b/ext/openssl-win32/inc32/openssl/ossl_typ.h @@ -0,0 +1,211 @@ +/* ==================================================================== + * Copyright (c) 1998-2001 The OpenSSL Project. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. All advertising materials mentioning features or use of this + * software must display the following acknowledgment: + * "This product includes software developed by the OpenSSL Project + * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" + * + * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to + * endorse or promote products derived from this software without + * prior written permission. For written permission, please contact + * openssl-core@openssl.org. + * + * 5. Products derived from this software may not be called "OpenSSL" + * nor may "OpenSSL" appear in their names without prior written + * permission of the OpenSSL Project. + * + * 6. Redistributions of any form whatsoever must retain the following + * acknowledgment: + * "This product includes software developed by the OpenSSL Project + * for use in the OpenSSL Toolkit (http://www.openssl.org/)" + * + * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY + * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * ==================================================================== + * + * This product includes cryptographic software written by Eric Young + * (eay@cryptsoft.com). This product includes software written by Tim + * Hudson (tjh@cryptsoft.com). + * + */ + +#ifndef HEADER_OPENSSL_TYPES_H +# define HEADER_OPENSSL_TYPES_H + +#ifdef __cplusplus +extern "C" { +#endif + +# include + +# ifdef NO_ASN1_TYPEDEFS +# define ASN1_INTEGER ASN1_STRING +# define ASN1_ENUMERATED ASN1_STRING +# define ASN1_BIT_STRING ASN1_STRING +# define ASN1_OCTET_STRING ASN1_STRING +# define ASN1_PRINTABLESTRING ASN1_STRING +# define ASN1_T61STRING ASN1_STRING +# define ASN1_IA5STRING ASN1_STRING +# define ASN1_UTCTIME ASN1_STRING +# define ASN1_GENERALIZEDTIME ASN1_STRING +# define ASN1_TIME ASN1_STRING +# define ASN1_GENERALSTRING ASN1_STRING +# define ASN1_UNIVERSALSTRING ASN1_STRING +# define ASN1_BMPSTRING ASN1_STRING +# define ASN1_VISIBLESTRING ASN1_STRING +# define ASN1_UTF8STRING ASN1_STRING +# define ASN1_BOOLEAN int +# define ASN1_NULL int +# else +typedef struct asn1_string_st ASN1_INTEGER; +typedef struct asn1_string_st ASN1_ENUMERATED; +typedef struct asn1_string_st ASN1_BIT_STRING; +typedef struct asn1_string_st ASN1_OCTET_STRING; +typedef struct asn1_string_st ASN1_PRINTABLESTRING; +typedef struct asn1_string_st ASN1_T61STRING; +typedef struct asn1_string_st ASN1_IA5STRING; +typedef struct asn1_string_st ASN1_GENERALSTRING; +typedef struct asn1_string_st ASN1_UNIVERSALSTRING; +typedef struct asn1_string_st ASN1_BMPSTRING; +typedef struct asn1_string_st ASN1_UTCTIME; +typedef struct asn1_string_st ASN1_TIME; +typedef struct asn1_string_st ASN1_GENERALIZEDTIME; +typedef struct asn1_string_st ASN1_VISIBLESTRING; +typedef struct asn1_string_st ASN1_UTF8STRING; +typedef struct asn1_string_st ASN1_STRING; +typedef int ASN1_BOOLEAN; +typedef int ASN1_NULL; +# endif + +typedef struct asn1_object_st ASN1_OBJECT; + +typedef struct ASN1_ITEM_st ASN1_ITEM; +typedef struct asn1_pctx_st ASN1_PCTX; + +# ifdef OPENSSL_SYS_WIN32 +# undef X509_NAME +# undef X509_EXTENSIONS +# undef X509_CERT_PAIR +# undef PKCS7_ISSUER_AND_SERIAL +# undef OCSP_REQUEST +# undef OCSP_RESPONSE +# endif + +# ifdef BIGNUM +# undef BIGNUM +# endif +typedef struct bignum_st BIGNUM; +typedef struct bignum_ctx BN_CTX; +typedef struct bn_blinding_st BN_BLINDING; +typedef struct bn_mont_ctx_st BN_MONT_CTX; +typedef struct bn_recp_ctx_st BN_RECP_CTX; +typedef struct bn_gencb_st BN_GENCB; + +typedef struct buf_mem_st BUF_MEM; + +typedef struct evp_cipher_st EVP_CIPHER; +typedef struct evp_cipher_ctx_st EVP_CIPHER_CTX; +typedef struct env_md_st EVP_MD; +typedef struct env_md_ctx_st EVP_MD_CTX; +typedef struct evp_pkey_st EVP_PKEY; + +typedef struct evp_pkey_asn1_method_st EVP_PKEY_ASN1_METHOD; + +typedef struct evp_pkey_method_st EVP_PKEY_METHOD; +typedef struct evp_pkey_ctx_st EVP_PKEY_CTX; + +typedef struct dh_st DH; +typedef struct dh_method DH_METHOD; + +typedef struct dsa_st DSA; +typedef struct dsa_method DSA_METHOD; + +typedef struct rsa_st RSA; +typedef struct rsa_meth_st RSA_METHOD; + +typedef struct rand_meth_st RAND_METHOD; + +typedef struct ecdh_method ECDH_METHOD; +typedef struct ecdsa_method ECDSA_METHOD; + +typedef struct x509_st X509; +typedef struct X509_algor_st X509_ALGOR; +typedef struct X509_crl_st X509_CRL; +typedef struct x509_crl_method_st X509_CRL_METHOD; +typedef struct x509_revoked_st X509_REVOKED; +typedef struct X509_name_st X509_NAME; +typedef struct X509_pubkey_st X509_PUBKEY; +typedef struct x509_store_st X509_STORE; +typedef struct x509_store_ctx_st X509_STORE_CTX; + +typedef struct pkcs8_priv_key_info_st PKCS8_PRIV_KEY_INFO; + +typedef struct v3_ext_ctx X509V3_CTX; +typedef struct conf_st CONF; + +typedef struct store_st STORE; +typedef struct store_method_st STORE_METHOD; + +typedef struct ui_st UI; +typedef struct ui_method_st UI_METHOD; + +typedef struct st_ERR_FNS ERR_FNS; + +typedef struct engine_st ENGINE; +typedef struct ssl_st SSL; +typedef struct ssl_ctx_st SSL_CTX; + +typedef struct X509_POLICY_NODE_st X509_POLICY_NODE; +typedef struct X509_POLICY_LEVEL_st X509_POLICY_LEVEL; +typedef struct X509_POLICY_TREE_st X509_POLICY_TREE; +typedef struct X509_POLICY_CACHE_st X509_POLICY_CACHE; + +typedef struct AUTHORITY_KEYID_st AUTHORITY_KEYID; +typedef struct DIST_POINT_st DIST_POINT; +typedef struct ISSUING_DIST_POINT_st ISSUING_DIST_POINT; +typedef struct NAME_CONSTRAINTS_st NAME_CONSTRAINTS; + + /* If placed in pkcs12.h, we end up with a circular depency with pkcs7.h */ +# define DECLARE_PKCS12_STACK_OF(type)/* Nothing */ +# define IMPLEMENT_PKCS12_STACK_OF(type)/* Nothing */ + +typedef struct crypto_ex_data_st CRYPTO_EX_DATA; +/* Callback types for crypto.h */ +typedef int CRYPTO_EX_new (void *parent, void *ptr, CRYPTO_EX_DATA *ad, + int idx, long argl, void *argp); +typedef void CRYPTO_EX_free (void *parent, void *ptr, CRYPTO_EX_DATA *ad, + int idx, long argl, void *argp); +typedef int CRYPTO_EX_dup (CRYPTO_EX_DATA *to, CRYPTO_EX_DATA *from, + void *from_d, int idx, long argl, void *argp); + +typedef struct ocsp_req_ctx_st OCSP_REQ_CTX; +typedef struct ocsp_response_st OCSP_RESPONSE; +typedef struct ocsp_responder_id_st OCSP_RESPID; + +#ifdef __cplusplus +} +#endif +#endif /* def HEADER_OPENSSL_TYPES_H */ diff --git a/ext/openssl-win32/inc32/openssl/pem.h b/ext/openssl-win32/inc32/openssl/pem.h new file mode 100644 index 00000000..d3b23fc9 --- /dev/null +++ b/ext/openssl-win32/inc32/openssl/pem.h @@ -0,0 +1,615 @@ +/* crypto/pem/pem.h */ +/* Copyright (C) 1995-1997 Eric Young (eay@cryptsoft.com) + * All rights reserved. + * + * This package is an SSL implementation written + * by Eric Young (eay@cryptsoft.com). + * The implementation was written so as to conform with Netscapes SSL. + * + * This library is free for commercial and non-commercial use as long as + * the following conditions are aheared to. The following conditions + * apply to all code found in this distribution, be it the RC4, RSA, + * lhash, DES, etc., code; not just the SSL code. The SSL documentation + * included with this distribution is covered by the same copyright terms + * except that the holder is Tim Hudson (tjh@cryptsoft.com). + * + * Copyright remains Eric Young's, and as such any Copyright notices in + * the code are not to be removed. + * If this package is used in a product, Eric Young should be given attribution + * as the author of the parts of the library used. + * This can be in the form of a textual message at program startup or + * in documentation (online or textual) provided with the package. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * "This product includes cryptographic software written by + * Eric Young (eay@cryptsoft.com)" + * The word 'cryptographic' can be left out if the rouines from the library + * being used are not cryptographic related :-). + * 4. If you include any Windows specific code (or a derivative thereof) from + * the apps directory (application code) you must include an acknowledgement: + * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" + * + * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * The licence and distribution terms for any publically available version or + * derivative of this code cannot be changed. i.e. this code cannot simply be + * copied and put under another distribution licence + * [including the GNU Public Licence.] + */ + +#ifndef HEADER_PEM_H +# define HEADER_PEM_H + +# include +# ifndef OPENSSL_NO_BIO +# include +# endif +# ifndef OPENSSL_NO_STACK +# include +# endif +# include +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +# define PEM_BUFSIZE 1024 + +# define PEM_OBJ_UNDEF 0 +# define PEM_OBJ_X509 1 +# define PEM_OBJ_X509_REQ 2 +# define PEM_OBJ_CRL 3 +# define PEM_OBJ_SSL_SESSION 4 +# define PEM_OBJ_PRIV_KEY 10 +# define PEM_OBJ_PRIV_RSA 11 +# define PEM_OBJ_PRIV_DSA 12 +# define PEM_OBJ_PRIV_DH 13 +# define PEM_OBJ_PUB_RSA 14 +# define PEM_OBJ_PUB_DSA 15 +# define PEM_OBJ_PUB_DH 16 +# define PEM_OBJ_DHPARAMS 17 +# define PEM_OBJ_DSAPARAMS 18 +# define PEM_OBJ_PRIV_RSA_PUBLIC 19 +# define PEM_OBJ_PRIV_ECDSA 20 +# define PEM_OBJ_PUB_ECDSA 21 +# define PEM_OBJ_ECPARAMETERS 22 + +# define PEM_ERROR 30 +# define PEM_DEK_DES_CBC 40 +# define PEM_DEK_IDEA_CBC 45 +# define PEM_DEK_DES_EDE 50 +# define PEM_DEK_DES_ECB 60 +# define PEM_DEK_RSA 70 +# define PEM_DEK_RSA_MD2 80 +# define PEM_DEK_RSA_MD5 90 + +# define PEM_MD_MD2 NID_md2 +# define PEM_MD_MD5 NID_md5 +# define PEM_MD_SHA NID_sha +# define PEM_MD_MD2_RSA NID_md2WithRSAEncryption +# define PEM_MD_MD5_RSA NID_md5WithRSAEncryption +# define PEM_MD_SHA_RSA NID_sha1WithRSAEncryption + +# define PEM_STRING_X509_OLD "X509 CERTIFICATE" +# define PEM_STRING_X509 "CERTIFICATE" +# define PEM_STRING_X509_PAIR "CERTIFICATE PAIR" +# define PEM_STRING_X509_TRUSTED "TRUSTED CERTIFICATE" +# define PEM_STRING_X509_REQ_OLD "NEW CERTIFICATE REQUEST" +# define PEM_STRING_X509_REQ "CERTIFICATE REQUEST" +# define PEM_STRING_X509_CRL "X509 CRL" +# define PEM_STRING_EVP_PKEY "ANY PRIVATE KEY" +# define PEM_STRING_PUBLIC "PUBLIC KEY" +# define PEM_STRING_RSA "RSA PRIVATE KEY" +# define PEM_STRING_RSA_PUBLIC "RSA PUBLIC KEY" +# define PEM_STRING_DSA "DSA PRIVATE KEY" +# define PEM_STRING_DSA_PUBLIC "DSA PUBLIC KEY" +# define PEM_STRING_PKCS7 "PKCS7" +# define PEM_STRING_PKCS7_SIGNED "PKCS #7 SIGNED DATA" +# define PEM_STRING_PKCS8 "ENCRYPTED PRIVATE KEY" +# define PEM_STRING_PKCS8INF "PRIVATE KEY" +# define PEM_STRING_DHPARAMS "DH PARAMETERS" +# define PEM_STRING_DHXPARAMS "X9.42 DH PARAMETERS" +# define PEM_STRING_SSL_SESSION "SSL SESSION PARAMETERS" +# define PEM_STRING_DSAPARAMS "DSA PARAMETERS" +# define PEM_STRING_ECDSA_PUBLIC "ECDSA PUBLIC KEY" +# define PEM_STRING_ECPARAMETERS "EC PARAMETERS" +# define PEM_STRING_ECPRIVATEKEY "EC PRIVATE KEY" +# define PEM_STRING_PARAMETERS "PARAMETERS" +# define PEM_STRING_CMS "CMS" + + /* + * Note that this structure is initialised by PEM_SealInit and cleaned up + * by PEM_SealFinal (at least for now) + */ +typedef struct PEM_Encode_Seal_st { + EVP_ENCODE_CTX encode; + EVP_MD_CTX md; + EVP_CIPHER_CTX cipher; +} PEM_ENCODE_SEAL_CTX; + +/* enc_type is one off */ +# define PEM_TYPE_ENCRYPTED 10 +# define PEM_TYPE_MIC_ONLY 20 +# define PEM_TYPE_MIC_CLEAR 30 +# define PEM_TYPE_CLEAR 40 + +typedef struct pem_recip_st { + char *name; + X509_NAME *dn; + int cipher; + int key_enc; + /* char iv[8]; unused and wrong size */ +} PEM_USER; + +typedef struct pem_ctx_st { + int type; /* what type of object */ + struct { + int version; + int mode; + } proc_type; + + char *domain; + + struct { + int cipher; + /*- + unused, and wrong size + unsigned char iv[8]; */ + } DEK_info; + + PEM_USER *originator; + + int num_recipient; + PEM_USER **recipient; +/*- + XXX(ben): don#t think this is used! + STACK *x509_chain; / * certificate chain */ + EVP_MD *md; /* signature type */ + + int md_enc; /* is the md encrypted or not? */ + int md_len; /* length of md_data */ + char *md_data; /* message digest, could be pkey encrypted */ + + EVP_CIPHER *dec; /* date encryption cipher */ + int key_len; /* key length */ + unsigned char *key; /* key */ + /*- + unused, and wrong size + unsigned char iv[8]; */ + + int data_enc; /* is the data encrypted */ + int data_len; + unsigned char *data; +} PEM_CTX; + +/* + * These macros make the PEM_read/PEM_write functions easier to maintain and + * write. Now they are all implemented with either: IMPLEMENT_PEM_rw(...) or + * IMPLEMENT_PEM_rw_cb(...) + */ + +# ifdef OPENSSL_NO_FP_API + +# define IMPLEMENT_PEM_read_fp(name, type, str, asn1) /**/ +# define IMPLEMENT_PEM_write_fp(name, type, str, asn1) /**/ +# define IMPLEMENT_PEM_write_fp_const(name, type, str, asn1) /**/ +# define IMPLEMENT_PEM_write_cb_fp(name, type, str, asn1) /**/ +# define IMPLEMENT_PEM_write_cb_fp_const(name, type, str, asn1) /**/ +# else + +# define IMPLEMENT_PEM_read_fp(name, type, str, asn1) \ +type *PEM_read_##name(FILE *fp, type **x, pem_password_cb *cb, void *u)\ +{ \ +return PEM_ASN1_read((d2i_of_void *)d2i_##asn1, str,fp,(void **)x,cb,u); \ +} + +# define IMPLEMENT_PEM_write_fp(name, type, str, asn1) \ +int PEM_write_##name(FILE *fp, type *x) \ +{ \ +return PEM_ASN1_write((i2d_of_void *)i2d_##asn1,str,fp,x,NULL,NULL,0,NULL,NULL); \ +} + +# define IMPLEMENT_PEM_write_fp_const(name, type, str, asn1) \ +int PEM_write_##name(FILE *fp, const type *x) \ +{ \ +return PEM_ASN1_write((i2d_of_void *)i2d_##asn1,str,fp,(void *)x,NULL,NULL,0,NULL,NULL); \ +} + +# define IMPLEMENT_PEM_write_cb_fp(name, type, str, asn1) \ +int PEM_write_##name(FILE *fp, type *x, const EVP_CIPHER *enc, \ + unsigned char *kstr, int klen, pem_password_cb *cb, \ + void *u) \ + { \ + return PEM_ASN1_write((i2d_of_void *)i2d_##asn1,str,fp,x,enc,kstr,klen,cb,u); \ + } + +# define IMPLEMENT_PEM_write_cb_fp_const(name, type, str, asn1) \ +int PEM_write_##name(FILE *fp, type *x, const EVP_CIPHER *enc, \ + unsigned char *kstr, int klen, pem_password_cb *cb, \ + void *u) \ + { \ + return PEM_ASN1_write((i2d_of_void *)i2d_##asn1,str,fp,x,enc,kstr,klen,cb,u); \ + } + +# endif + +# define IMPLEMENT_PEM_read_bio(name, type, str, asn1) \ +type *PEM_read_bio_##name(BIO *bp, type **x, pem_password_cb *cb, void *u)\ +{ \ +return PEM_ASN1_read_bio((d2i_of_void *)d2i_##asn1, str,bp,(void **)x,cb,u); \ +} + +# define IMPLEMENT_PEM_write_bio(name, type, str, asn1) \ +int PEM_write_bio_##name(BIO *bp, type *x) \ +{ \ +return PEM_ASN1_write_bio((i2d_of_void *)i2d_##asn1,str,bp,x,NULL,NULL,0,NULL,NULL); \ +} + +# define IMPLEMENT_PEM_write_bio_const(name, type, str, asn1) \ +int PEM_write_bio_##name(BIO *bp, const type *x) \ +{ \ +return PEM_ASN1_write_bio((i2d_of_void *)i2d_##asn1,str,bp,(void *)x,NULL,NULL,0,NULL,NULL); \ +} + +# define IMPLEMENT_PEM_write_cb_bio(name, type, str, asn1) \ +int PEM_write_bio_##name(BIO *bp, type *x, const EVP_CIPHER *enc, \ + unsigned char *kstr, int klen, pem_password_cb *cb, void *u) \ + { \ + return PEM_ASN1_write_bio((i2d_of_void *)i2d_##asn1,str,bp,x,enc,kstr,klen,cb,u); \ + } + +# define IMPLEMENT_PEM_write_cb_bio_const(name, type, str, asn1) \ +int PEM_write_bio_##name(BIO *bp, type *x, const EVP_CIPHER *enc, \ + unsigned char *kstr, int klen, pem_password_cb *cb, void *u) \ + { \ + return PEM_ASN1_write_bio((i2d_of_void *)i2d_##asn1,str,bp,(void *)x,enc,kstr,klen,cb,u); \ + } + +# define IMPLEMENT_PEM_write(name, type, str, asn1) \ + IMPLEMENT_PEM_write_bio(name, type, str, asn1) \ + IMPLEMENT_PEM_write_fp(name, type, str, asn1) + +# define IMPLEMENT_PEM_write_const(name, type, str, asn1) \ + IMPLEMENT_PEM_write_bio_const(name, type, str, asn1) \ + IMPLEMENT_PEM_write_fp_const(name, type, str, asn1) + +# define IMPLEMENT_PEM_write_cb(name, type, str, asn1) \ + IMPLEMENT_PEM_write_cb_bio(name, type, str, asn1) \ + IMPLEMENT_PEM_write_cb_fp(name, type, str, asn1) + +# define IMPLEMENT_PEM_write_cb_const(name, type, str, asn1) \ + IMPLEMENT_PEM_write_cb_bio_const(name, type, str, asn1) \ + IMPLEMENT_PEM_write_cb_fp_const(name, type, str, asn1) + +# define IMPLEMENT_PEM_read(name, type, str, asn1) \ + IMPLEMENT_PEM_read_bio(name, type, str, asn1) \ + IMPLEMENT_PEM_read_fp(name, type, str, asn1) + +# define IMPLEMENT_PEM_rw(name, type, str, asn1) \ + IMPLEMENT_PEM_read(name, type, str, asn1) \ + IMPLEMENT_PEM_write(name, type, str, asn1) + +# define IMPLEMENT_PEM_rw_const(name, type, str, asn1) \ + IMPLEMENT_PEM_read(name, type, str, asn1) \ + IMPLEMENT_PEM_write_const(name, type, str, asn1) + +# define IMPLEMENT_PEM_rw_cb(name, type, str, asn1) \ + IMPLEMENT_PEM_read(name, type, str, asn1) \ + IMPLEMENT_PEM_write_cb(name, type, str, asn1) + +/* These are the same except they are for the declarations */ + +# if defined(OPENSSL_NO_FP_API) + +# define DECLARE_PEM_read_fp(name, type) /**/ +# define DECLARE_PEM_write_fp(name, type) /**/ +# define DECLARE_PEM_write_cb_fp(name, type) /**/ +# else + +# define DECLARE_PEM_read_fp(name, type) \ + type *PEM_read_##name(FILE *fp, type **x, pem_password_cb *cb, void *u); + +# define DECLARE_PEM_write_fp(name, type) \ + int PEM_write_##name(FILE *fp, type *x); + +# define DECLARE_PEM_write_fp_const(name, type) \ + int PEM_write_##name(FILE *fp, const type *x); + +# define DECLARE_PEM_write_cb_fp(name, type) \ + int PEM_write_##name(FILE *fp, type *x, const EVP_CIPHER *enc, \ + unsigned char *kstr, int klen, pem_password_cb *cb, void *u); + +# endif + +# ifndef OPENSSL_NO_BIO +# define DECLARE_PEM_read_bio(name, type) \ + type *PEM_read_bio_##name(BIO *bp, type **x, pem_password_cb *cb, void *u); + +# define DECLARE_PEM_write_bio(name, type) \ + int PEM_write_bio_##name(BIO *bp, type *x); + +# define DECLARE_PEM_write_bio_const(name, type) \ + int PEM_write_bio_##name(BIO *bp, const type *x); + +# define DECLARE_PEM_write_cb_bio(name, type) \ + int PEM_write_bio_##name(BIO *bp, type *x, const EVP_CIPHER *enc, \ + unsigned char *kstr, int klen, pem_password_cb *cb, void *u); + +# else + +# define DECLARE_PEM_read_bio(name, type) /**/ +# define DECLARE_PEM_write_bio(name, type) /**/ +# define DECLARE_PEM_write_bio_const(name, type) /**/ +# define DECLARE_PEM_write_cb_bio(name, type) /**/ +# endif +# define DECLARE_PEM_write(name, type) \ + DECLARE_PEM_write_bio(name, type) \ + DECLARE_PEM_write_fp(name, type) +# define DECLARE_PEM_write_const(name, type) \ + DECLARE_PEM_write_bio_const(name, type) \ + DECLARE_PEM_write_fp_const(name, type) +# define DECLARE_PEM_write_cb(name, type) \ + DECLARE_PEM_write_cb_bio(name, type) \ + DECLARE_PEM_write_cb_fp(name, type) +# define DECLARE_PEM_read(name, type) \ + DECLARE_PEM_read_bio(name, type) \ + DECLARE_PEM_read_fp(name, type) +# define DECLARE_PEM_rw(name, type) \ + DECLARE_PEM_read(name, type) \ + DECLARE_PEM_write(name, type) +# define DECLARE_PEM_rw_const(name, type) \ + DECLARE_PEM_read(name, type) \ + DECLARE_PEM_write_const(name, type) +# define DECLARE_PEM_rw_cb(name, type) \ + DECLARE_PEM_read(name, type) \ + DECLARE_PEM_write_cb(name, type) +# if 1 +/* "userdata": new with OpenSSL 0.9.4 */ +typedef int pem_password_cb (char *buf, int size, int rwflag, void *userdata); +# else +/* OpenSSL 0.9.3, 0.9.3a */ +typedef int pem_password_cb (char *buf, int size, int rwflag); +# endif + +int PEM_get_EVP_CIPHER_INFO(char *header, EVP_CIPHER_INFO *cipher); +int PEM_do_header(EVP_CIPHER_INFO *cipher, unsigned char *data, long *len, + pem_password_cb *callback, void *u); + +# ifndef OPENSSL_NO_BIO +int PEM_read_bio(BIO *bp, char **name, char **header, + unsigned char **data, long *len); +int PEM_write_bio(BIO *bp, const char *name, const char *hdr, + const unsigned char *data, long len); +int PEM_bytes_read_bio(unsigned char **pdata, long *plen, char **pnm, + const char *name, BIO *bp, pem_password_cb *cb, + void *u); +void *PEM_ASN1_read_bio(d2i_of_void *d2i, const char *name, BIO *bp, void **x, + pem_password_cb *cb, void *u); +int PEM_ASN1_write_bio(i2d_of_void *i2d, const char *name, BIO *bp, void *x, + const EVP_CIPHER *enc, unsigned char *kstr, int klen, + pem_password_cb *cb, void *u); + +STACK_OF(X509_INFO) *PEM_X509_INFO_read_bio(BIO *bp, STACK_OF(X509_INFO) *sk, + pem_password_cb *cb, void *u); +int PEM_X509_INFO_write_bio(BIO *bp, X509_INFO *xi, EVP_CIPHER *enc, + unsigned char *kstr, int klen, + pem_password_cb *cd, void *u); +# endif + +int PEM_read(FILE *fp, char **name, char **header, + unsigned char **data, long *len); +int PEM_write(FILE *fp, const char *name, const char *hdr, + const unsigned char *data, long len); +void *PEM_ASN1_read(d2i_of_void *d2i, const char *name, FILE *fp, void **x, + pem_password_cb *cb, void *u); +int PEM_ASN1_write(i2d_of_void *i2d, const char *name, FILE *fp, + void *x, const EVP_CIPHER *enc, unsigned char *kstr, + int klen, pem_password_cb *callback, void *u); +STACK_OF(X509_INFO) *PEM_X509_INFO_read(FILE *fp, STACK_OF(X509_INFO) *sk, + pem_password_cb *cb, void *u); + +int PEM_SealInit(PEM_ENCODE_SEAL_CTX *ctx, EVP_CIPHER *type, + EVP_MD *md_type, unsigned char **ek, int *ekl, + unsigned char *iv, EVP_PKEY **pubk, int npubk); +void PEM_SealUpdate(PEM_ENCODE_SEAL_CTX *ctx, unsigned char *out, int *outl, + unsigned char *in, int inl); +int PEM_SealFinal(PEM_ENCODE_SEAL_CTX *ctx, unsigned char *sig, int *sigl, + unsigned char *out, int *outl, EVP_PKEY *priv); + +void PEM_SignInit(EVP_MD_CTX *ctx, EVP_MD *type); +void PEM_SignUpdate(EVP_MD_CTX *ctx, unsigned char *d, unsigned int cnt); +int PEM_SignFinal(EVP_MD_CTX *ctx, unsigned char *sigret, + unsigned int *siglen, EVP_PKEY *pkey); + +int PEM_def_callback(char *buf, int num, int w, void *key); +void PEM_proc_type(char *buf, int type); +void PEM_dek_info(char *buf, const char *type, int len, char *str); + +# include + +DECLARE_PEM_rw(X509, X509) +DECLARE_PEM_rw(X509_AUX, X509) +DECLARE_PEM_rw(X509_CERT_PAIR, X509_CERT_PAIR) +DECLARE_PEM_rw(X509_REQ, X509_REQ) +DECLARE_PEM_write(X509_REQ_NEW, X509_REQ) +DECLARE_PEM_rw(X509_CRL, X509_CRL) +DECLARE_PEM_rw(PKCS7, PKCS7) +DECLARE_PEM_rw(NETSCAPE_CERT_SEQUENCE, NETSCAPE_CERT_SEQUENCE) +DECLARE_PEM_rw(PKCS8, X509_SIG) +DECLARE_PEM_rw(PKCS8_PRIV_KEY_INFO, PKCS8_PRIV_KEY_INFO) +# ifndef OPENSSL_NO_RSA +DECLARE_PEM_rw_cb(RSAPrivateKey, RSA) +DECLARE_PEM_rw_const(RSAPublicKey, RSA) +DECLARE_PEM_rw(RSA_PUBKEY, RSA) +# endif +# ifndef OPENSSL_NO_DSA +DECLARE_PEM_rw_cb(DSAPrivateKey, DSA) +DECLARE_PEM_rw(DSA_PUBKEY, DSA) +DECLARE_PEM_rw_const(DSAparams, DSA) +# endif +# ifndef OPENSSL_NO_EC +DECLARE_PEM_rw_const(ECPKParameters, EC_GROUP) +DECLARE_PEM_rw_cb(ECPrivateKey, EC_KEY) +DECLARE_PEM_rw(EC_PUBKEY, EC_KEY) +# endif +# ifndef OPENSSL_NO_DH +DECLARE_PEM_rw_const(DHparams, DH) +DECLARE_PEM_write_const(DHxparams, DH) +# endif +DECLARE_PEM_rw_cb(PrivateKey, EVP_PKEY) +DECLARE_PEM_rw(PUBKEY, EVP_PKEY) + +int PEM_write_bio_PKCS8PrivateKey_nid(BIO *bp, EVP_PKEY *x, int nid, + char *kstr, int klen, + pem_password_cb *cb, void *u); +int PEM_write_bio_PKCS8PrivateKey(BIO *, EVP_PKEY *, const EVP_CIPHER *, + char *, int, pem_password_cb *, void *); +int i2d_PKCS8PrivateKey_bio(BIO *bp, EVP_PKEY *x, const EVP_CIPHER *enc, + char *kstr, int klen, + pem_password_cb *cb, void *u); +int i2d_PKCS8PrivateKey_nid_bio(BIO *bp, EVP_PKEY *x, int nid, + char *kstr, int klen, + pem_password_cb *cb, void *u); +EVP_PKEY *d2i_PKCS8PrivateKey_bio(BIO *bp, EVP_PKEY **x, pem_password_cb *cb, + void *u); + +int i2d_PKCS8PrivateKey_fp(FILE *fp, EVP_PKEY *x, const EVP_CIPHER *enc, + char *kstr, int klen, + pem_password_cb *cb, void *u); +int i2d_PKCS8PrivateKey_nid_fp(FILE *fp, EVP_PKEY *x, int nid, + char *kstr, int klen, + pem_password_cb *cb, void *u); +int PEM_write_PKCS8PrivateKey_nid(FILE *fp, EVP_PKEY *x, int nid, + char *kstr, int klen, + pem_password_cb *cb, void *u); + +EVP_PKEY *d2i_PKCS8PrivateKey_fp(FILE *fp, EVP_PKEY **x, pem_password_cb *cb, + void *u); + +int PEM_write_PKCS8PrivateKey(FILE *fp, EVP_PKEY *x, const EVP_CIPHER *enc, + char *kstr, int klen, pem_password_cb *cd, + void *u); + +EVP_PKEY *PEM_read_bio_Parameters(BIO *bp, EVP_PKEY **x); +int PEM_write_bio_Parameters(BIO *bp, EVP_PKEY *x); + +EVP_PKEY *b2i_PrivateKey(const unsigned char **in, long length); +EVP_PKEY *b2i_PublicKey(const unsigned char **in, long length); +EVP_PKEY *b2i_PrivateKey_bio(BIO *in); +EVP_PKEY *b2i_PublicKey_bio(BIO *in); +int i2b_PrivateKey_bio(BIO *out, EVP_PKEY *pk); +int i2b_PublicKey_bio(BIO *out, EVP_PKEY *pk); +# ifndef OPENSSL_NO_RC4 +EVP_PKEY *b2i_PVK_bio(BIO *in, pem_password_cb *cb, void *u); +int i2b_PVK_bio(BIO *out, EVP_PKEY *pk, int enclevel, + pem_password_cb *cb, void *u); +# endif + +/* BEGIN ERROR CODES */ +/* + * The following lines are auto generated by the script mkerr.pl. Any changes + * made after this point may be overwritten when the script is next run. + */ +void ERR_load_PEM_strings(void); + +/* Error codes for the PEM functions. */ + +/* Function codes. */ +# define PEM_F_B2I_DSS 127 +# define PEM_F_B2I_PVK_BIO 128 +# define PEM_F_B2I_RSA 129 +# define PEM_F_CHECK_BITLEN_DSA 130 +# define PEM_F_CHECK_BITLEN_RSA 131 +# define PEM_F_D2I_PKCS8PRIVATEKEY_BIO 120 +# define PEM_F_D2I_PKCS8PRIVATEKEY_FP 121 +# define PEM_F_DO_B2I 132 +# define PEM_F_DO_B2I_BIO 133 +# define PEM_F_DO_BLOB_HEADER 134 +# define PEM_F_DO_PK8PKEY 126 +# define PEM_F_DO_PK8PKEY_FP 125 +# define PEM_F_DO_PVK_BODY 135 +# define PEM_F_DO_PVK_HEADER 136 +# define PEM_F_I2B_PVK 137 +# define PEM_F_I2B_PVK_BIO 138 +# define PEM_F_LOAD_IV 101 +# define PEM_F_PEM_ASN1_READ 102 +# define PEM_F_PEM_ASN1_READ_BIO 103 +# define PEM_F_PEM_ASN1_WRITE 104 +# define PEM_F_PEM_ASN1_WRITE_BIO 105 +# define PEM_F_PEM_DEF_CALLBACK 100 +# define PEM_F_PEM_DO_HEADER 106 +# define PEM_F_PEM_F_PEM_WRITE_PKCS8PRIVATEKEY 118 +# define PEM_F_PEM_GET_EVP_CIPHER_INFO 107 +# define PEM_F_PEM_PK8PKEY 119 +# define PEM_F_PEM_READ 108 +# define PEM_F_PEM_READ_BIO 109 +# define PEM_F_PEM_READ_BIO_DHPARAMS 141 +# define PEM_F_PEM_READ_BIO_PARAMETERS 140 +# define PEM_F_PEM_READ_BIO_PRIVATEKEY 123 +# define PEM_F_PEM_READ_DHPARAMS 142 +# define PEM_F_PEM_READ_PRIVATEKEY 124 +# define PEM_F_PEM_SEALFINAL 110 +# define PEM_F_PEM_SEALINIT 111 +# define PEM_F_PEM_SIGNFINAL 112 +# define PEM_F_PEM_WRITE 113 +# define PEM_F_PEM_WRITE_BIO 114 +# define PEM_F_PEM_WRITE_PRIVATEKEY 139 +# define PEM_F_PEM_X509_INFO_READ 115 +# define PEM_F_PEM_X509_INFO_READ_BIO 116 +# define PEM_F_PEM_X509_INFO_WRITE_BIO 117 + +/* Reason codes. */ +# define PEM_R_BAD_BASE64_DECODE 100 +# define PEM_R_BAD_DECRYPT 101 +# define PEM_R_BAD_END_LINE 102 +# define PEM_R_BAD_IV_CHARS 103 +# define PEM_R_BAD_MAGIC_NUMBER 116 +# define PEM_R_BAD_PASSWORD_READ 104 +# define PEM_R_BAD_VERSION_NUMBER 117 +# define PEM_R_BIO_WRITE_FAILURE 118 +# define PEM_R_CIPHER_IS_NULL 127 +# define PEM_R_ERROR_CONVERTING_PRIVATE_KEY 115 +# define PEM_R_EXPECTING_PRIVATE_KEY_BLOB 119 +# define PEM_R_EXPECTING_PUBLIC_KEY_BLOB 120 +# define PEM_R_INCONSISTENT_HEADER 121 +# define PEM_R_KEYBLOB_HEADER_PARSE_ERROR 122 +# define PEM_R_KEYBLOB_TOO_SHORT 123 +# define PEM_R_NOT_DEK_INFO 105 +# define PEM_R_NOT_ENCRYPTED 106 +# define PEM_R_NOT_PROC_TYPE 107 +# define PEM_R_NO_START_LINE 108 +# define PEM_R_PROBLEMS_GETTING_PASSWORD 109 +# define PEM_R_PUBLIC_KEY_NO_RSA 110 +# define PEM_R_PVK_DATA_TOO_SHORT 124 +# define PEM_R_PVK_TOO_SHORT 125 +# define PEM_R_READ_KEY 111 +# define PEM_R_SHORT_HEADER 112 +# define PEM_R_UNSUPPORTED_CIPHER 113 +# define PEM_R_UNSUPPORTED_ENCRYPTION 114 +# define PEM_R_UNSUPPORTED_KEY_COMPONENTS 126 + +#ifdef __cplusplus +} +#endif +#endif diff --git a/ext/openssl-win32/inc32/openssl/pem2.h b/ext/openssl-win32/inc32/openssl/pem2.h new file mode 100644 index 00000000..84897d5e --- /dev/null +++ b/ext/openssl-win32/inc32/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/ext/openssl-win32/inc32/openssl/pkcs7.h b/ext/openssl-win32/inc32/openssl/pkcs7.h new file mode 100644 index 00000000..b51b3863 --- /dev/null +++ b/ext/openssl-win32/inc32/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/ext/openssl-win32/inc32/openssl/pqueue.h b/ext/openssl-win32/inc32/openssl/pqueue.h new file mode 100644 index 00000000..d40d9c7d --- /dev/null +++ b/ext/openssl-win32/inc32/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/ext/openssl-win32/inc32/openssl/rsa.h b/ext/openssl-win32/inc32/openssl/rsa.h new file mode 100644 index 00000000..d2ee3740 --- /dev/null +++ b/ext/openssl-win32/inc32/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/ext/openssl-win32/inc32/openssl/safestack.h b/ext/openssl-win32/inc32/openssl/safestack.h new file mode 100644 index 00000000..1d4f87ea --- /dev/null +++ b/ext/openssl-win32/inc32/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/ext/openssl-win32/inc32/openssl/sha.h b/ext/openssl-win32/inc32/openssl/sha.h new file mode 100644 index 00000000..e5169e4f --- /dev/null +++ b/ext/openssl-win32/inc32/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/ext/openssl-win32/inc32/openssl/srtp.h b/ext/openssl-win32/inc32/openssl/srtp.h new file mode 100644 index 00000000..2279c32b --- /dev/null +++ b/ext/openssl-win32/inc32/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/ext/openssl-win32/inc32/openssl/ssl.h b/ext/openssl-win32/inc32/openssl/ssl.h new file mode 100644 index 00000000..2b0f6628 --- /dev/null +++ b/ext/openssl-win32/inc32/openssl/ssl.h @@ -0,0 +1,3159 @@ +/* ssl/ssl.h */ +/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) + * All rights reserved. + * + * This package is an SSL implementation written + * by Eric Young (eay@cryptsoft.com). + * The implementation was written so as to conform with Netscapes SSL. + * + * This library is free for commercial and non-commercial use as long as + * the following conditions are aheared to. The following conditions + * apply to all code found in this distribution, be it the RC4, RSA, + * lhash, DES, etc., code; not just the SSL code. The SSL documentation + * included with this distribution is covered by the same copyright terms + * except that the holder is Tim Hudson (tjh@cryptsoft.com). + * + * Copyright remains Eric Young's, and as such any Copyright notices in + * the code are not to be removed. + * If this package is used in a product, Eric Young should be given attribution + * as the author of the parts of the library used. + * This can be in the form of a textual message at program startup or + * in documentation (online or textual) provided with the package. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * "This product includes cryptographic software written by + * Eric Young (eay@cryptsoft.com)" + * The word 'cryptographic' can be left out if the rouines from the library + * being used are not cryptographic related :-). + * 4. If you include any Windows specific code (or a derivative thereof) from + * the apps directory (application code) you must include an acknowledgement: + * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" + * + * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * The licence and distribution terms for any publically available version or + * derivative of this code cannot be changed. i.e. this code cannot simply be + * copied and put under another distribution licence + * [including the GNU Public Licence.] + */ +/* ==================================================================== + * Copyright (c) 1998-2007 The OpenSSL Project. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. All advertising materials mentioning features or use of this + * software must display the following acknowledgment: + * "This product includes software developed by the OpenSSL Project + * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" + * + * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to + * endorse or promote products derived from this software without + * prior written permission. For written permission, please contact + * openssl-core@openssl.org. + * + * 5. Products derived from this software may not be called "OpenSSL" + * nor may "OpenSSL" appear in their names without prior written + * permission of the OpenSSL Project. + * + * 6. Redistributions of any form whatsoever must retain the following + * acknowledgment: + * "This product includes software developed by the OpenSSL Project + * for use in the OpenSSL Toolkit (http://www.openssl.org/)" + * + * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY + * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * ==================================================================== + * + * This product includes cryptographic software written by Eric Young + * (eay@cryptsoft.com). This product includes software written by Tim + * Hudson (tjh@cryptsoft.com). + * + */ +/* ==================================================================== + * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED. + * ECC cipher suite support in OpenSSL originally developed by + * SUN MICROSYSTEMS, INC., and contributed to the OpenSSL project. + */ +/* ==================================================================== + * Copyright 2005 Nokia. All rights reserved. + * + * The portions of the attached software ("Contribution") is developed by + * Nokia Corporation and is licensed pursuant to the OpenSSL open source + * license. + * + * The Contribution, originally written by Mika Kousa and Pasi Eronen of + * Nokia Corporation, consists of the "PSK" (Pre-Shared Key) ciphersuites + * support (see RFC 4279) to OpenSSL. + * + * No patent licenses or other rights except those expressly stated in + * the OpenSSL open source license shall be deemed granted or received + * expressly, by implication, estoppel, or otherwise. + * + * No assurances are provided by Nokia that the Contribution does not + * infringe the patent or other intellectual property rights of any third + * party or that the license provides you with all the necessary rights + * to make use of the Contribution. + * + * THE SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. IN + * ADDITION TO THE DISCLAIMERS INCLUDED IN THE LICENSE, NOKIA + * SPECIFICALLY DISCLAIMS ANY LIABILITY FOR CLAIMS BROUGHT BY YOU OR ANY + * OTHER ENTITY BASED ON INFRINGEMENT OF INTELLECTUAL PROPERTY RIGHTS OR + * OTHERWISE. + */ + +#ifndef HEADER_SSL_H +# define HEADER_SSL_H + +# include + +# ifndef OPENSSL_NO_COMP +# include +# endif +# ifndef OPENSSL_NO_BIO +# include +# endif +# ifndef OPENSSL_NO_DEPRECATED +# ifndef OPENSSL_NO_X509 +# include +# endif +# include +# include +# include +# endif +# include +# include + +# include +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +/* SSLeay version number for ASN.1 encoding of the session information */ +/*- + * Version 0 - initial version + * Version 1 - added the optional peer certificate + */ +# define SSL_SESSION_ASN1_VERSION 0x0001 + +/* text strings for the ciphers */ +# define SSL_TXT_NULL_WITH_MD5 SSL2_TXT_NULL_WITH_MD5 +# define SSL_TXT_RC4_128_WITH_MD5 SSL2_TXT_RC4_128_WITH_MD5 +# define SSL_TXT_RC4_128_EXPORT40_WITH_MD5 SSL2_TXT_RC4_128_EXPORT40_WITH_MD5 +# define SSL_TXT_RC2_128_CBC_WITH_MD5 SSL2_TXT_RC2_128_CBC_WITH_MD5 +# define SSL_TXT_RC2_128_CBC_EXPORT40_WITH_MD5 SSL2_TXT_RC2_128_CBC_EXPORT40_WITH_MD5 +# define SSL_TXT_IDEA_128_CBC_WITH_MD5 SSL2_TXT_IDEA_128_CBC_WITH_MD5 +# define SSL_TXT_DES_64_CBC_WITH_MD5 SSL2_TXT_DES_64_CBC_WITH_MD5 +# define SSL_TXT_DES_64_CBC_WITH_SHA SSL2_TXT_DES_64_CBC_WITH_SHA +# define SSL_TXT_DES_192_EDE3_CBC_WITH_MD5 SSL2_TXT_DES_192_EDE3_CBC_WITH_MD5 +# define SSL_TXT_DES_192_EDE3_CBC_WITH_SHA SSL2_TXT_DES_192_EDE3_CBC_WITH_SHA + +/* + * VRS Additional Kerberos5 entries + */ +# define SSL_TXT_KRB5_DES_64_CBC_SHA SSL3_TXT_KRB5_DES_64_CBC_SHA +# define SSL_TXT_KRB5_DES_192_CBC3_SHA SSL3_TXT_KRB5_DES_192_CBC3_SHA +# define SSL_TXT_KRB5_RC4_128_SHA SSL3_TXT_KRB5_RC4_128_SHA +# define SSL_TXT_KRB5_IDEA_128_CBC_SHA SSL3_TXT_KRB5_IDEA_128_CBC_SHA +# define SSL_TXT_KRB5_DES_64_CBC_MD5 SSL3_TXT_KRB5_DES_64_CBC_MD5 +# define SSL_TXT_KRB5_DES_192_CBC3_MD5 SSL3_TXT_KRB5_DES_192_CBC3_MD5 +# define SSL_TXT_KRB5_RC4_128_MD5 SSL3_TXT_KRB5_RC4_128_MD5 +# define SSL_TXT_KRB5_IDEA_128_CBC_MD5 SSL3_TXT_KRB5_IDEA_128_CBC_MD5 + +# define SSL_TXT_KRB5_DES_40_CBC_SHA SSL3_TXT_KRB5_DES_40_CBC_SHA +# define SSL_TXT_KRB5_RC2_40_CBC_SHA SSL3_TXT_KRB5_RC2_40_CBC_SHA +# define SSL_TXT_KRB5_RC4_40_SHA SSL3_TXT_KRB5_RC4_40_SHA +# define SSL_TXT_KRB5_DES_40_CBC_MD5 SSL3_TXT_KRB5_DES_40_CBC_MD5 +# define SSL_TXT_KRB5_RC2_40_CBC_MD5 SSL3_TXT_KRB5_RC2_40_CBC_MD5 +# define SSL_TXT_KRB5_RC4_40_MD5 SSL3_TXT_KRB5_RC4_40_MD5 + +# define SSL_TXT_KRB5_DES_40_CBC_SHA SSL3_TXT_KRB5_DES_40_CBC_SHA +# define SSL_TXT_KRB5_DES_40_CBC_MD5 SSL3_TXT_KRB5_DES_40_CBC_MD5 +# define SSL_TXT_KRB5_DES_64_CBC_SHA SSL3_TXT_KRB5_DES_64_CBC_SHA +# define SSL_TXT_KRB5_DES_64_CBC_MD5 SSL3_TXT_KRB5_DES_64_CBC_MD5 +# define SSL_TXT_KRB5_DES_192_CBC3_SHA SSL3_TXT_KRB5_DES_192_CBC3_SHA +# define SSL_TXT_KRB5_DES_192_CBC3_MD5 SSL3_TXT_KRB5_DES_192_CBC3_MD5 +# define SSL_MAX_KRB5_PRINCIPAL_LENGTH 256 + +# define SSL_MAX_SSL_SESSION_ID_LENGTH 32 +# define SSL_MAX_SID_CTX_LENGTH 32 + +# define SSL_MIN_RSA_MODULUS_LENGTH_IN_BYTES (512/8) +# define SSL_MAX_KEY_ARG_LENGTH 8 +# define SSL_MAX_MASTER_KEY_LENGTH 48 + +/* These are used to specify which ciphers to use and not to use */ + +# define SSL_TXT_EXP40 "EXPORT40" +# define SSL_TXT_EXP56 "EXPORT56" +# define SSL_TXT_LOW "LOW" +# define SSL_TXT_MEDIUM "MEDIUM" +# define SSL_TXT_HIGH "HIGH" +# define SSL_TXT_FIPS "FIPS" + +# define SSL_TXT_kFZA "kFZA"/* unused! */ +# define SSL_TXT_aFZA "aFZA"/* unused! */ +# define SSL_TXT_eFZA "eFZA"/* unused! */ +# define SSL_TXT_FZA "FZA"/* unused! */ + +# define SSL_TXT_aNULL "aNULL" +# define SSL_TXT_eNULL "eNULL" +# define SSL_TXT_NULL "NULL" + +# define SSL_TXT_kRSA "kRSA" +# define SSL_TXT_kDHr "kDHr" +# define SSL_TXT_kDHd "kDHd" +# define SSL_TXT_kDH "kDH" +# define SSL_TXT_kEDH "kEDH" +# define SSL_TXT_kDHE "kDHE"/* alias for kEDH */ +# define SSL_TXT_kKRB5 "kKRB5" +# define SSL_TXT_kECDHr "kECDHr" +# define SSL_TXT_kECDHe "kECDHe" +# define SSL_TXT_kECDH "kECDH" +# define SSL_TXT_kEECDH "kEECDH" +# define SSL_TXT_kECDHE "kECDHE"/* alias for kEECDH */ +# define SSL_TXT_kPSK "kPSK" +# define SSL_TXT_kGOST "kGOST" +# define SSL_TXT_kSRP "kSRP" + +# define SSL_TXT_aRSA "aRSA" +# define SSL_TXT_aDSS "aDSS" +# define SSL_TXT_aDH "aDH" +# define SSL_TXT_aECDH "aECDH" +# define SSL_TXT_aKRB5 "aKRB5" +# define SSL_TXT_aECDSA "aECDSA" +# define SSL_TXT_aPSK "aPSK" +# define SSL_TXT_aGOST94 "aGOST94" +# define SSL_TXT_aGOST01 "aGOST01" +# define SSL_TXT_aGOST "aGOST" +# define SSL_TXT_aSRP "aSRP" + +# define SSL_TXT_DSS "DSS" +# define SSL_TXT_DH "DH" +# define SSL_TXT_EDH "EDH"/* same as "kEDH:-ADH" */ +# define SSL_TXT_DHE "DHE"/* alias for EDH */ +# define SSL_TXT_ADH "ADH" +# define SSL_TXT_RSA "RSA" +# define SSL_TXT_ECDH "ECDH" +# define SSL_TXT_EECDH "EECDH"/* same as "kEECDH:-AECDH" */ +# define SSL_TXT_ECDHE "ECDHE"/* alias for ECDHE" */ +# define SSL_TXT_AECDH "AECDH" +# define SSL_TXT_ECDSA "ECDSA" +# define SSL_TXT_KRB5 "KRB5" +# define SSL_TXT_PSK "PSK" +# define SSL_TXT_SRP "SRP" + +# define SSL_TXT_DES "DES" +# define SSL_TXT_3DES "3DES" +# define SSL_TXT_RC4 "RC4" +# define SSL_TXT_RC2 "RC2" +# define SSL_TXT_IDEA "IDEA" +# define SSL_TXT_SEED "SEED" +# define SSL_TXT_AES128 "AES128" +# define SSL_TXT_AES256 "AES256" +# define SSL_TXT_AES "AES" +# define SSL_TXT_AES_GCM "AESGCM" +# define SSL_TXT_CAMELLIA128 "CAMELLIA128" +# define SSL_TXT_CAMELLIA256 "CAMELLIA256" +# define SSL_TXT_CAMELLIA "CAMELLIA" + +# define SSL_TXT_MD5 "MD5" +# define SSL_TXT_SHA1 "SHA1" +# define SSL_TXT_SHA "SHA"/* same as "SHA1" */ +# define SSL_TXT_GOST94 "GOST94" +# define SSL_TXT_GOST89MAC "GOST89MAC" +# define SSL_TXT_SHA256 "SHA256" +# define SSL_TXT_SHA384 "SHA384" + +# define SSL_TXT_SSLV2 "SSLv2" +# define SSL_TXT_SSLV3 "SSLv3" +# define SSL_TXT_TLSV1 "TLSv1" +# define SSL_TXT_TLSV1_1 "TLSv1.1" +# define SSL_TXT_TLSV1_2 "TLSv1.2" + +# define SSL_TXT_EXP "EXP" +# define SSL_TXT_EXPORT "EXPORT" + +# define SSL_TXT_ALL "ALL" + +/*- + * COMPLEMENTOF* definitions. These identifiers are used to (de-select) + * ciphers normally not being used. + * Example: "RC4" will activate all ciphers using RC4 including ciphers + * without authentication, which would normally disabled by DEFAULT (due + * the "!ADH" being part of default). Therefore "RC4:!COMPLEMENTOFDEFAULT" + * will make sure that it is also disabled in the specific selection. + * COMPLEMENTOF* identifiers are portable between version, as adjustments + * to the default cipher setup will also be included here. + * + * COMPLEMENTOFDEFAULT does not experience the same special treatment that + * DEFAULT gets, as only selection is being done and no sorting as needed + * for DEFAULT. + */ +# define SSL_TXT_CMPALL "COMPLEMENTOFALL" +# define SSL_TXT_CMPDEF "COMPLEMENTOFDEFAULT" + +/* + * The following cipher list is used by default. It also is substituted when + * an application-defined cipher list string starts with 'DEFAULT'. + */ +# define SSL_DEFAULT_CIPHER_LIST "ALL:!aNULL:!eNULL:!SSLv2" +/* + * As of OpenSSL 1.0.0, ssl_create_cipher_list() in ssl/ssl_ciph.c always + * starts with a reasonable order, and all we have to do for DEFAULT is + * throwing out anonymous and unencrypted ciphersuites! (The latter are not + * actually enabled by ALL, but "ALL:RSA" would enable some of them.) + */ + +/* Used in SSL_set_shutdown()/SSL_get_shutdown(); */ +# define SSL_SENT_SHUTDOWN 1 +# define SSL_RECEIVED_SHUTDOWN 2 + +#ifdef __cplusplus +} +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +# if (defined(OPENSSL_NO_RSA) || defined(OPENSSL_NO_MD5)) && !defined(OPENSSL_NO_SSL2) +# define OPENSSL_NO_SSL2 +# endif + +# define SSL_FILETYPE_ASN1 X509_FILETYPE_ASN1 +# define SSL_FILETYPE_PEM X509_FILETYPE_PEM + +/* + * This is needed to stop compilers complaining about the 'struct ssl_st *' + * function parameters used to prototype callbacks in SSL_CTX. + */ +typedef struct ssl_st *ssl_crock_st; +typedef struct tls_session_ticket_ext_st TLS_SESSION_TICKET_EXT; +typedef struct ssl_method_st SSL_METHOD; +typedef struct ssl_cipher_st SSL_CIPHER; +typedef struct ssl_session_st SSL_SESSION; +typedef struct tls_sigalgs_st TLS_SIGALGS; +typedef struct ssl_conf_ctx_st SSL_CONF_CTX; + +DECLARE_STACK_OF(SSL_CIPHER) + +/* SRTP protection profiles for use with the use_srtp extension (RFC 5764)*/ +typedef struct srtp_protection_profile_st { + const char *name; + unsigned long id; +} SRTP_PROTECTION_PROFILE; + +DECLARE_STACK_OF(SRTP_PROTECTION_PROFILE) + +typedef int (*tls_session_ticket_ext_cb_fn) (SSL *s, + const unsigned char *data, + int len, void *arg); +typedef int (*tls_session_secret_cb_fn) (SSL *s, void *secret, + int *secret_len, + STACK_OF(SSL_CIPHER) *peer_ciphers, + SSL_CIPHER **cipher, void *arg); + +# ifndef OPENSSL_NO_TLSEXT + +/* Typedefs for handling custom extensions */ + +typedef int (*custom_ext_add_cb) (SSL *s, unsigned int ext_type, + const unsigned char **out, + size_t *outlen, int *al, void *add_arg); + +typedef void (*custom_ext_free_cb) (SSL *s, unsigned int ext_type, + const unsigned char *out, void *add_arg); + +typedef int (*custom_ext_parse_cb) (SSL *s, unsigned int ext_type, + const unsigned char *in, + size_t inlen, int *al, void *parse_arg); + +# endif + +# ifndef OPENSSL_NO_SSL_INTERN + +/* used to hold info on the particular ciphers used */ +struct ssl_cipher_st { + int valid; + const char *name; /* text name */ + unsigned long id; /* id, 4 bytes, first is version */ + /* + * changed in 0.9.9: these four used to be portions of a single value + * 'algorithms' + */ + unsigned long algorithm_mkey; /* key exchange algorithm */ + unsigned long algorithm_auth; /* server authentication */ + unsigned long algorithm_enc; /* symmetric encryption */ + unsigned long algorithm_mac; /* symmetric authentication */ + unsigned long algorithm_ssl; /* (major) protocol version */ + unsigned long algo_strength; /* strength and export flags */ + unsigned long algorithm2; /* Extra flags */ + int strength_bits; /* Number of bits really used */ + int alg_bits; /* Number of bits for algorithm */ +}; + +/* Used to hold functions for SSLv2 or SSLv3/TLSv1 functions */ +struct ssl_method_st { + int version; + int (*ssl_new) (SSL *s); + void (*ssl_clear) (SSL *s); + void (*ssl_free) (SSL *s); + int (*ssl_accept) (SSL *s); + int (*ssl_connect) (SSL *s); + int (*ssl_read) (SSL *s, void *buf, int len); + int (*ssl_peek) (SSL *s, void *buf, int len); + int (*ssl_write) (SSL *s, const void *buf, int len); + int (*ssl_shutdown) (SSL *s); + int (*ssl_renegotiate) (SSL *s); + int (*ssl_renegotiate_check) (SSL *s); + long (*ssl_get_message) (SSL *s, int st1, int stn, int mt, long + max, int *ok); + int (*ssl_read_bytes) (SSL *s, int type, unsigned char *buf, int len, + int peek); + int (*ssl_write_bytes) (SSL *s, int type, const void *buf_, int len); + int (*ssl_dispatch_alert) (SSL *s); + long (*ssl_ctrl) (SSL *s, int cmd, long larg, void *parg); + long (*ssl_ctx_ctrl) (SSL_CTX *ctx, int cmd, long larg, void *parg); + const SSL_CIPHER *(*get_cipher_by_char) (const unsigned char *ptr); + int (*put_cipher_by_char) (const SSL_CIPHER *cipher, unsigned char *ptr); + int (*ssl_pending) (const SSL *s); + int (*num_ciphers) (void); + const SSL_CIPHER *(*get_cipher) (unsigned ncipher); + const struct ssl_method_st *(*get_ssl_method) (int version); + long (*get_timeout) (void); + struct ssl3_enc_method *ssl3_enc; /* Extra SSLv3/TLS stuff */ + int (*ssl_version) (void); + long (*ssl_callback_ctrl) (SSL *s, int cb_id, void (*fp) (void)); + long (*ssl_ctx_callback_ctrl) (SSL_CTX *s, int cb_id, void (*fp) (void)); +}; + +/*- + * Lets make this into an ASN.1 type structure as follows + * SSL_SESSION_ID ::= SEQUENCE { + * version INTEGER, -- structure version number + * SSLversion INTEGER, -- SSL version number + * Cipher OCTET STRING, -- the 3 byte cipher ID + * Session_ID OCTET STRING, -- the Session ID + * Master_key OCTET STRING, -- the master key + * KRB5_principal OCTET STRING -- optional Kerberos principal + * Key_Arg [ 0 ] IMPLICIT OCTET STRING, -- the optional Key argument + * Time [ 1 ] EXPLICIT INTEGER, -- optional Start Time + * Timeout [ 2 ] EXPLICIT INTEGER, -- optional Timeout ins seconds + * Peer [ 3 ] EXPLICIT X509, -- optional Peer Certificate + * Session_ID_context [ 4 ] EXPLICIT OCTET STRING, -- the Session ID context + * Verify_result [ 5 ] EXPLICIT INTEGER, -- X509_V_... code for `Peer' + * HostName [ 6 ] EXPLICIT OCTET STRING, -- optional HostName from servername TLS extension + * PSK_identity_hint [ 7 ] EXPLICIT OCTET STRING, -- optional PSK identity hint + * PSK_identity [ 8 ] EXPLICIT OCTET STRING, -- optional PSK identity + * Ticket_lifetime_hint [9] EXPLICIT INTEGER, -- server's lifetime hint for session ticket + * Ticket [10] EXPLICIT OCTET STRING, -- session ticket (clients only) + * Compression_meth [11] EXPLICIT OCTET STRING, -- optional compression method + * SRP_username [ 12 ] EXPLICIT OCTET STRING -- optional SRP username + * } + * Look in ssl/ssl_asn1.c for more details + * I'm using EXPLICIT tags so I can read the damn things using asn1parse :-). + */ +struct ssl_session_st { + int ssl_version; /* what ssl version session info is being + * kept in here? */ + /* only really used in SSLv2 */ + unsigned int key_arg_length; + unsigned char key_arg[SSL_MAX_KEY_ARG_LENGTH]; + int master_key_length; + unsigned char master_key[SSL_MAX_MASTER_KEY_LENGTH]; + /* session_id - valid? */ + unsigned int session_id_length; + unsigned char session_id[SSL_MAX_SSL_SESSION_ID_LENGTH]; + /* + * this is used to determine whether the session is being reused in the + * appropriate context. It is up to the application to set this, via + * SSL_new + */ + unsigned int sid_ctx_length; + unsigned char sid_ctx[SSL_MAX_SID_CTX_LENGTH]; +# ifndef OPENSSL_NO_KRB5 + unsigned int krb5_client_princ_len; + unsigned char krb5_client_princ[SSL_MAX_KRB5_PRINCIPAL_LENGTH]; +# endif /* OPENSSL_NO_KRB5 */ +# ifndef OPENSSL_NO_PSK + char *psk_identity_hint; + char *psk_identity; +# endif + /* + * Used to indicate that session resumption is not allowed. Applications + * can also set this bit for a new session via not_resumable_session_cb + * to disable session caching and tickets. + */ + int not_resumable; + /* The cert is the certificate used to establish this connection */ + struct sess_cert_st /* SESS_CERT */ *sess_cert; + /* + * This is the cert for the other end. On clients, it will be the same as + * sess_cert->peer_key->x509 (the latter is not enough as sess_cert is + * not retained in the external representation of sessions, see + * ssl_asn1.c). + */ + X509 *peer; + /* + * when app_verify_callback accepts a session where the peer's + * certificate is not ok, we must remember the error for session reuse: + */ + long verify_result; /* only for servers */ + int references; + long timeout; + long time; + unsigned int compress_meth; /* Need to lookup the method */ + const SSL_CIPHER *cipher; + unsigned long cipher_id; /* when ASN.1 loaded, this needs to be used + * to load the 'cipher' structure */ + STACK_OF(SSL_CIPHER) *ciphers; /* shared ciphers? */ + CRYPTO_EX_DATA ex_data; /* application specific data */ + /* + * These are used to make removal of session-ids more efficient and to + * implement a maximum cache size. + */ + struct ssl_session_st *prev, *next; +# ifndef OPENSSL_NO_TLSEXT + char *tlsext_hostname; +# ifndef OPENSSL_NO_EC + size_t tlsext_ecpointformatlist_length; + unsigned char *tlsext_ecpointformatlist; /* peer's list */ + size_t tlsext_ellipticcurvelist_length; + unsigned char *tlsext_ellipticcurvelist; /* peer's list */ +# endif /* OPENSSL_NO_EC */ + /* RFC4507 info */ + unsigned char *tlsext_tick; /* Session ticket */ + size_t tlsext_ticklen; /* Session ticket length */ + long tlsext_tick_lifetime_hint; /* Session lifetime hint in seconds */ +# endif +# ifndef OPENSSL_NO_SRP + char *srp_username; +# endif +}; + +# endif + +# define SSL_OP_MICROSOFT_SESS_ID_BUG 0x00000001L +# define SSL_OP_NETSCAPE_CHALLENGE_BUG 0x00000002L +/* Allow initial connection to servers that don't support RI */ +# define SSL_OP_LEGACY_SERVER_CONNECT 0x00000004L +# define SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG 0x00000008L +# define SSL_OP_TLSEXT_PADDING 0x00000010L +# define SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER 0x00000020L +# define SSL_OP_SAFARI_ECDHE_ECDSA_BUG 0x00000040L +# define SSL_OP_SSLEAY_080_CLIENT_DH_BUG 0x00000080L +# define SSL_OP_TLS_D5_BUG 0x00000100L +# define SSL_OP_TLS_BLOCK_PADDING_BUG 0x00000200L + +/* Hasn't done anything since OpenSSL 0.9.7h, retained for compatibility */ +# define SSL_OP_MSIE_SSLV2_RSA_PADDING 0x0 +/* Refers to ancient SSLREF and SSLv2, retained for compatibility */ +# define SSL_OP_SSLREF2_REUSE_CERT_TYPE_BUG 0x0 + +/* + * Disable SSL 3.0/TLS 1.0 CBC vulnerability workaround that was added in + * OpenSSL 0.9.6d. Usually (depending on the application protocol) the + * workaround is not needed. Unfortunately some broken SSL/TLS + * implementations cannot handle it at all, which is why we include it in + * SSL_OP_ALL. + */ +/* added in 0.9.6e */ +# define SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS 0x00000800L + +/* + * SSL_OP_ALL: various bug workarounds that should be rather harmless. This + * used to be 0x000FFFFFL before 0.9.7. + */ +# define SSL_OP_ALL 0x80000BFFL + +/* DTLS options */ +# define SSL_OP_NO_QUERY_MTU 0x00001000L +/* Turn on Cookie Exchange (on relevant for servers) */ +# define SSL_OP_COOKIE_EXCHANGE 0x00002000L +/* Don't use RFC4507 ticket extension */ +# define SSL_OP_NO_TICKET 0x00004000L +/* Use Cisco's "speshul" version of DTLS_BAD_VER (as client) */ +# define SSL_OP_CISCO_ANYCONNECT 0x00008000L + +/* As server, disallow session resumption on renegotiation */ +# define SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION 0x00010000L +/* Don't use compression even if supported */ +# define SSL_OP_NO_COMPRESSION 0x00020000L +/* Permit unsafe legacy renegotiation */ +# define SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION 0x00040000L +/* If set, always create a new key when using tmp_ecdh parameters */ +# define SSL_OP_SINGLE_ECDH_USE 0x00080000L +/* If set, always create a new key when using tmp_dh parameters */ +# define SSL_OP_SINGLE_DH_USE 0x00100000L +/* Does nothing: retained for compatibiity */ +# define SSL_OP_EPHEMERAL_RSA 0x0 +/* + * Set on servers to choose the cipher according to the server's preferences + */ +# define SSL_OP_CIPHER_SERVER_PREFERENCE 0x00400000L +/* + * If set, a server will allow a client to issue a SSLv3.0 version number as + * latest version supported in the premaster secret, even when TLSv1.0 + * (version 3.1) was announced in the client hello. Normally this is + * forbidden to prevent version rollback attacks. + */ +# define SSL_OP_TLS_ROLLBACK_BUG 0x00800000L + +# define SSL_OP_NO_SSLv2 0x01000000L +# define SSL_OP_NO_SSLv3 0x02000000L +# define SSL_OP_NO_TLSv1 0x04000000L +# define SSL_OP_NO_TLSv1_2 0x08000000L +# define SSL_OP_NO_TLSv1_1 0x10000000L + +# define SSL_OP_NO_DTLSv1 0x04000000L +# define SSL_OP_NO_DTLSv1_2 0x08000000L + +# define SSL_OP_NO_SSL_MASK (SSL_OP_NO_SSLv2|SSL_OP_NO_SSLv3|\ + SSL_OP_NO_TLSv1|SSL_OP_NO_TLSv1_1|SSL_OP_NO_TLSv1_2) + +/* + * These next two were never actually used for anything since SSLeay zap so + * we have some more flags. + */ +/* + * The next flag deliberately changes the ciphertest, this is a check for the + * PKCS#1 attack + */ +# define SSL_OP_PKCS1_CHECK_1 0x0 +# define SSL_OP_PKCS1_CHECK_2 0x0 + +# define SSL_OP_NETSCAPE_CA_DN_BUG 0x20000000L +# define SSL_OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUG 0x40000000L +/* + * Make server add server-hello extension from early version of cryptopro + * draft, when GOST ciphersuite is negotiated. Required for interoperability + * with CryptoPro CSP 3.x + */ +# define SSL_OP_CRYPTOPRO_TLSEXT_BUG 0x80000000L + +/* + * Allow SSL_write(..., n) to return r with 0 < r < n (i.e. report success + * when just a single record has been written): + */ +# define SSL_MODE_ENABLE_PARTIAL_WRITE 0x00000001L +/* + * Make it possible to retry SSL_write() with changed buffer location (buffer + * contents must stay the same!); this is not the default to avoid the + * misconception that non-blocking SSL_write() behaves like non-blocking + * write(): + */ +# define SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER 0x00000002L +/* + * Never bother the application with retries if the transport is blocking: + */ +# define SSL_MODE_AUTO_RETRY 0x00000004L +/* Don't attempt to automatically build certificate chain */ +# define SSL_MODE_NO_AUTO_CHAIN 0x00000008L +/* + * Save RAM by releasing read and write buffers when they're empty. (SSL3 and + * TLS only.) "Released" buffers are put onto a free-list in the context or + * just freed (depending on the context's setting for freelist_max_len). + */ +# define SSL_MODE_RELEASE_BUFFERS 0x00000010L +/* + * Send the current time in the Random fields of the ClientHello and + * ServerHello records for compatibility with hypothetical implementations + * that require it. + */ +# define SSL_MODE_SEND_CLIENTHELLO_TIME 0x00000020L +# define SSL_MODE_SEND_SERVERHELLO_TIME 0x00000040L +/* + * Send TLS_FALLBACK_SCSV in the ClientHello. To be set only by applications + * that reconnect with a downgraded protocol version; see + * draft-ietf-tls-downgrade-scsv-00 for details. DO NOT ENABLE THIS if your + * application attempts a normal handshake. Only use this in explicit + * fallback retries, following the guidance in + * draft-ietf-tls-downgrade-scsv-00. + */ +# define SSL_MODE_SEND_FALLBACK_SCSV 0x00000080L + +/* Cert related flags */ +/* + * Many implementations ignore some aspects of the TLS standards such as + * enforcing certifcate chain algorithms. When this is set we enforce them. + */ +# define SSL_CERT_FLAG_TLS_STRICT 0x00000001L + +/* Suite B modes, takes same values as certificate verify flags */ +# define SSL_CERT_FLAG_SUITEB_128_LOS_ONLY 0x10000 +/* Suite B 192 bit only mode */ +# define SSL_CERT_FLAG_SUITEB_192_LOS 0x20000 +/* Suite B 128 bit mode allowing 192 bit algorithms */ +# define SSL_CERT_FLAG_SUITEB_128_LOS 0x30000 + +/* Perform all sorts of protocol violations for testing purposes */ +# define SSL_CERT_FLAG_BROKEN_PROTOCOL 0x10000000 + +/* Flags for building certificate chains */ +/* Treat any existing certificates as untrusted CAs */ +# define SSL_BUILD_CHAIN_FLAG_UNTRUSTED 0x1 +/* Don't include root CA in chain */ +# define SSL_BUILD_CHAIN_FLAG_NO_ROOT 0x2 +/* Just check certificates already there */ +# define SSL_BUILD_CHAIN_FLAG_CHECK 0x4 +/* Ignore verification errors */ +# define SSL_BUILD_CHAIN_FLAG_IGNORE_ERROR 0x8 +/* Clear verification errors from queue */ +# define SSL_BUILD_CHAIN_FLAG_CLEAR_ERROR 0x10 + +/* Flags returned by SSL_check_chain */ +/* Certificate can be used with this session */ +# define CERT_PKEY_VALID 0x1 +/* Certificate can also be used for signing */ +# define CERT_PKEY_SIGN 0x2 +/* EE certificate signing algorithm OK */ +# define CERT_PKEY_EE_SIGNATURE 0x10 +/* CA signature algorithms OK */ +# define CERT_PKEY_CA_SIGNATURE 0x20 +/* EE certificate parameters OK */ +# define CERT_PKEY_EE_PARAM 0x40 +/* CA certificate parameters OK */ +# define CERT_PKEY_CA_PARAM 0x80 +/* Signing explicitly allowed as opposed to SHA1 fallback */ +# define CERT_PKEY_EXPLICIT_SIGN 0x100 +/* Client CA issuer names match (always set for server cert) */ +# define CERT_PKEY_ISSUER_NAME 0x200 +/* Cert type matches client types (always set for server cert) */ +# define CERT_PKEY_CERT_TYPE 0x400 +/* Cert chain suitable to Suite B */ +# define CERT_PKEY_SUITEB 0x800 + +# define SSL_CONF_FLAG_CMDLINE 0x1 +# define SSL_CONF_FLAG_FILE 0x2 +# define SSL_CONF_FLAG_CLIENT 0x4 +# define SSL_CONF_FLAG_SERVER 0x8 +# define SSL_CONF_FLAG_SHOW_ERRORS 0x10 +# define SSL_CONF_FLAG_CERTIFICATE 0x20 +/* Configuration value types */ +# define SSL_CONF_TYPE_UNKNOWN 0x0 +# define SSL_CONF_TYPE_STRING 0x1 +# define SSL_CONF_TYPE_FILE 0x2 +# define SSL_CONF_TYPE_DIR 0x3 + +/* + * Note: SSL[_CTX]_set_{options,mode} use |= op on the previous value, they + * cannot be used to clear bits. + */ + +# define SSL_CTX_set_options(ctx,op) \ + SSL_CTX_ctrl((ctx),SSL_CTRL_OPTIONS,(op),NULL) +# define SSL_CTX_clear_options(ctx,op) \ + SSL_CTX_ctrl((ctx),SSL_CTRL_CLEAR_OPTIONS,(op),NULL) +# define SSL_CTX_get_options(ctx) \ + SSL_CTX_ctrl((ctx),SSL_CTRL_OPTIONS,0,NULL) +# define SSL_set_options(ssl,op) \ + SSL_ctrl((ssl),SSL_CTRL_OPTIONS,(op),NULL) +# define SSL_clear_options(ssl,op) \ + SSL_ctrl((ssl),SSL_CTRL_CLEAR_OPTIONS,(op),NULL) +# define SSL_get_options(ssl) \ + SSL_ctrl((ssl),SSL_CTRL_OPTIONS,0,NULL) + +# define SSL_CTX_set_mode(ctx,op) \ + SSL_CTX_ctrl((ctx),SSL_CTRL_MODE,(op),NULL) +# define SSL_CTX_clear_mode(ctx,op) \ + SSL_CTX_ctrl((ctx),SSL_CTRL_CLEAR_MODE,(op),NULL) +# define SSL_CTX_get_mode(ctx) \ + SSL_CTX_ctrl((ctx),SSL_CTRL_MODE,0,NULL) +# define SSL_clear_mode(ssl,op) \ + SSL_ctrl((ssl),SSL_CTRL_CLEAR_MODE,(op),NULL) +# define SSL_set_mode(ssl,op) \ + SSL_ctrl((ssl),SSL_CTRL_MODE,(op),NULL) +# define SSL_get_mode(ssl) \ + SSL_ctrl((ssl),SSL_CTRL_MODE,0,NULL) +# define SSL_set_mtu(ssl, mtu) \ + SSL_ctrl((ssl),SSL_CTRL_SET_MTU,(mtu),NULL) +# define DTLS_set_link_mtu(ssl, mtu) \ + SSL_ctrl((ssl),DTLS_CTRL_SET_LINK_MTU,(mtu),NULL) +# define DTLS_get_link_min_mtu(ssl) \ + SSL_ctrl((ssl),DTLS_CTRL_GET_LINK_MIN_MTU,0,NULL) + +# define SSL_get_secure_renegotiation_support(ssl) \ + SSL_ctrl((ssl), SSL_CTRL_GET_RI_SUPPORT, 0, NULL) + +# ifndef OPENSSL_NO_HEARTBEATS +# define SSL_heartbeat(ssl) \ + SSL_ctrl((ssl),SSL_CTRL_TLS_EXT_SEND_HEARTBEAT,0,NULL) +# endif + +# define SSL_CTX_set_cert_flags(ctx,op) \ + SSL_CTX_ctrl((ctx),SSL_CTRL_CERT_FLAGS,(op),NULL) +# define SSL_set_cert_flags(s,op) \ + SSL_ctrl((s),SSL_CTRL_CERT_FLAGS,(op),NULL) +# define SSL_CTX_clear_cert_flags(ctx,op) \ + SSL_CTX_ctrl((ctx),SSL_CTRL_CLEAR_CERT_FLAGS,(op),NULL) +# define SSL_clear_cert_flags(s,op) \ + SSL_ctrl((s),SSL_CTRL_CLEAR_CERT_FLAGS,(op),NULL) + +void SSL_CTX_set_msg_callback(SSL_CTX *ctx, + void (*cb) (int write_p, int version, + int content_type, const void *buf, + size_t len, SSL *ssl, void *arg)); +void SSL_set_msg_callback(SSL *ssl, + void (*cb) (int write_p, int version, + int content_type, const void *buf, + size_t len, SSL *ssl, void *arg)); +# define SSL_CTX_set_msg_callback_arg(ctx, arg) SSL_CTX_ctrl((ctx), SSL_CTRL_SET_MSG_CALLBACK_ARG, 0, (arg)) +# define SSL_set_msg_callback_arg(ssl, arg) SSL_ctrl((ssl), SSL_CTRL_SET_MSG_CALLBACK_ARG, 0, (arg)) + +# ifndef OPENSSL_NO_SRP + +# ifndef OPENSSL_NO_SSL_INTERN + +typedef struct srp_ctx_st { + /* param for all the callbacks */ + void *SRP_cb_arg; + /* set client Hello login callback */ + int (*TLS_ext_srp_username_callback) (SSL *, int *, void *); + /* set SRP N/g param callback for verification */ + int (*SRP_verify_param_callback) (SSL *, void *); + /* set SRP client passwd callback */ + char *(*SRP_give_srp_client_pwd_callback) (SSL *, void *); + char *login; + BIGNUM *N, *g, *s, *B, *A; + BIGNUM *a, *b, *v; + char *info; + int strength; + unsigned long srp_Mask; +} SRP_CTX; + +# endif + +/* see tls_srp.c */ +int SSL_SRP_CTX_init(SSL *s); +int SSL_CTX_SRP_CTX_init(SSL_CTX *ctx); +int SSL_SRP_CTX_free(SSL *ctx); +int SSL_CTX_SRP_CTX_free(SSL_CTX *ctx); +int SSL_srp_server_param_with_username(SSL *s, int *ad); +int SRP_generate_server_master_secret(SSL *s, unsigned char *master_key); +int SRP_Calc_A_param(SSL *s); +int SRP_generate_client_master_secret(SSL *s, unsigned char *master_key); + +# endif + +# if defined(OPENSSL_SYS_MSDOS) && !defined(OPENSSL_SYS_WIN32) +# define SSL_MAX_CERT_LIST_DEFAULT 1024*30 + /* 30k max cert list :-) */ +# else +# define SSL_MAX_CERT_LIST_DEFAULT 1024*100 + /* 100k max cert list :-) */ +# endif + +# define SSL_SESSION_CACHE_MAX_SIZE_DEFAULT (1024*20) + +/* + * This callback type is used inside SSL_CTX, SSL, and in the functions that + * set them. It is used to override the generation of SSL/TLS session IDs in + * a server. Return value should be zero on an error, non-zero to proceed. + * Also, callbacks should themselves check if the id they generate is unique + * otherwise the SSL handshake will fail with an error - callbacks can do + * this using the 'ssl' value they're passed by; + * SSL_has_matching_session_id(ssl, id, *id_len) The length value passed in + * is set at the maximum size the session ID can be. In SSLv2 this is 16 + * bytes, whereas SSLv3/TLSv1 it is 32 bytes. The callback can alter this + * length to be less if desired, but under SSLv2 session IDs are supposed to + * be fixed at 16 bytes so the id will be padded after the callback returns + * in this case. It is also an error for the callback to set the size to + * zero. + */ +typedef int (*GEN_SESSION_CB) (const SSL *ssl, unsigned char *id, + unsigned int *id_len); + +typedef struct ssl_comp_st SSL_COMP; + +# ifndef OPENSSL_NO_SSL_INTERN + +struct ssl_comp_st { + int id; + const char *name; +# ifndef OPENSSL_NO_COMP + COMP_METHOD *method; +# else + char *method; +# endif +}; + +DECLARE_STACK_OF(SSL_COMP) +DECLARE_LHASH_OF(SSL_SESSION); + +struct ssl_ctx_st { + const SSL_METHOD *method; + STACK_OF(SSL_CIPHER) *cipher_list; + /* same as above but sorted for lookup */ + STACK_OF(SSL_CIPHER) *cipher_list_by_id; + struct x509_store_st /* X509_STORE */ *cert_store; + LHASH_OF(SSL_SESSION) *sessions; + /* + * Most session-ids that will be cached, default is + * SSL_SESSION_CACHE_MAX_SIZE_DEFAULT. 0 is unlimited. + */ + unsigned long session_cache_size; + struct ssl_session_st *session_cache_head; + struct ssl_session_st *session_cache_tail; + /* + * This can have one of 2 values, ored together, SSL_SESS_CACHE_CLIENT, + * SSL_SESS_CACHE_SERVER, Default is SSL_SESSION_CACHE_SERVER, which + * means only SSL_accept which cache SSL_SESSIONS. + */ + int session_cache_mode; + /* + * If timeout is not 0, it is the default timeout value set when + * SSL_new() is called. This has been put in to make life easier to set + * things up + */ + long session_timeout; + /* + * If this callback is not null, it will be called each time a session id + * is added to the cache. If this function returns 1, it means that the + * callback will do a SSL_SESSION_free() when it has finished using it. + * Otherwise, on 0, it means the callback has finished with it. If + * remove_session_cb is not null, it will be called when a session-id is + * removed from the cache. After the call, OpenSSL will + * SSL_SESSION_free() it. + */ + int (*new_session_cb) (struct ssl_st *ssl, SSL_SESSION *sess); + void (*remove_session_cb) (struct ssl_ctx_st *ctx, SSL_SESSION *sess); + SSL_SESSION *(*get_session_cb) (struct ssl_st *ssl, + unsigned char *data, int len, int *copy); + struct { + int sess_connect; /* SSL new conn - started */ + int sess_connect_renegotiate; /* SSL reneg - requested */ + int sess_connect_good; /* SSL new conne/reneg - finished */ + int sess_accept; /* SSL new accept - started */ + int sess_accept_renegotiate; /* SSL reneg - requested */ + int sess_accept_good; /* SSL accept/reneg - finished */ + int sess_miss; /* session lookup misses */ + int sess_timeout; /* reuse attempt on timeouted session */ + int sess_cache_full; /* session removed due to full cache */ + int sess_hit; /* session reuse actually done */ + int sess_cb_hit; /* session-id that was not in the cache was + * passed back via the callback. This + * indicates that the application is + * supplying session-id's from other + * processes - spooky :-) */ + } stats; + + int references; + + /* if defined, these override the X509_verify_cert() calls */ + int (*app_verify_callback) (X509_STORE_CTX *, void *); + void *app_verify_arg; + /* + * before OpenSSL 0.9.7, 'app_verify_arg' was ignored + * ('app_verify_callback' was called with just one argument) + */ + + /* Default password callback. */ + pem_password_cb *default_passwd_callback; + + /* Default password callback user data. */ + void *default_passwd_callback_userdata; + + /* get client cert callback */ + int (*client_cert_cb) (SSL *ssl, X509 **x509, EVP_PKEY **pkey); + + /* cookie generate callback */ + int (*app_gen_cookie_cb) (SSL *ssl, unsigned char *cookie, + unsigned int *cookie_len); + + /* verify cookie callback */ + int (*app_verify_cookie_cb) (SSL *ssl, unsigned char *cookie, + unsigned int cookie_len); + + CRYPTO_EX_DATA ex_data; + + const EVP_MD *rsa_md5; /* For SSLv2 - name is 'ssl2-md5' */ + const EVP_MD *md5; /* For SSLv3/TLSv1 'ssl3-md5' */ + const EVP_MD *sha1; /* For SSLv3/TLSv1 'ssl3->sha1' */ + + STACK_OF(X509) *extra_certs; + STACK_OF(SSL_COMP) *comp_methods; /* stack of SSL_COMP, SSLv3/TLSv1 */ + + /* Default values used when no per-SSL value is defined follow */ + + /* used if SSL's info_callback is NULL */ + void (*info_callback) (const SSL *ssl, int type, int val); + + /* what we put in client cert requests */ + STACK_OF(X509_NAME) *client_CA; + + /* + * Default values to use in SSL structures follow (these are copied by + * SSL_new) + */ + + unsigned long options; + unsigned long mode; + long max_cert_list; + + struct cert_st /* CERT */ *cert; + int read_ahead; + + /* callback that allows applications to peek at protocol messages */ + void (*msg_callback) (int write_p, int version, int content_type, + const void *buf, size_t len, SSL *ssl, void *arg); + void *msg_callback_arg; + + int verify_mode; + unsigned int sid_ctx_length; + unsigned char sid_ctx[SSL_MAX_SID_CTX_LENGTH]; + /* called 'verify_callback' in the SSL */ + int (*default_verify_callback) (int ok, X509_STORE_CTX *ctx); + + /* Default generate session ID callback. */ + GEN_SESSION_CB generate_session_id; + + X509_VERIFY_PARAM *param; + +# if 0 + int purpose; /* Purpose setting */ + int trust; /* Trust setting */ +# endif + + int quiet_shutdown; + + /* + * Maximum amount of data to send in one fragment. actual record size can + * be more than this due to padding and MAC overheads. + */ + unsigned int max_send_fragment; + +# ifndef OPENSSL_NO_ENGINE + /* + * Engine to pass requests for client certs to + */ + ENGINE *client_cert_engine; +# endif + +# ifndef OPENSSL_NO_TLSEXT + /* TLS extensions servername callback */ + int (*tlsext_servername_callback) (SSL *, int *, void *); + void *tlsext_servername_arg; + /* RFC 4507 session ticket keys */ + unsigned char tlsext_tick_key_name[16]; + unsigned char tlsext_tick_hmac_key[16]; + unsigned char tlsext_tick_aes_key[16]; + /* Callback to support customisation of ticket key setting */ + int (*tlsext_ticket_key_cb) (SSL *ssl, + unsigned char *name, unsigned char *iv, + EVP_CIPHER_CTX *ectx, + HMAC_CTX *hctx, int enc); + + /* certificate status request info */ + /* Callback for status request */ + int (*tlsext_status_cb) (SSL *ssl, void *arg); + void *tlsext_status_arg; + + /* draft-rescorla-tls-opaque-prf-input-00.txt information */ + int (*tlsext_opaque_prf_input_callback) (SSL *, void *peerinput, + size_t len, void *arg); + void *tlsext_opaque_prf_input_callback_arg; +# endif + +# ifndef OPENSSL_NO_PSK + char *psk_identity_hint; + unsigned int (*psk_client_callback) (SSL *ssl, const char *hint, + char *identity, + unsigned int max_identity_len, + unsigned char *psk, + unsigned int max_psk_len); + unsigned int (*psk_server_callback) (SSL *ssl, const char *identity, + unsigned char *psk, + unsigned int max_psk_len); +# endif + +# ifndef OPENSSL_NO_BUF_FREELISTS +# define SSL_MAX_BUF_FREELIST_LEN_DEFAULT 32 + unsigned int freelist_max_len; + struct ssl3_buf_freelist_st *wbuf_freelist; + struct ssl3_buf_freelist_st *rbuf_freelist; +# endif +# ifndef OPENSSL_NO_SRP + SRP_CTX srp_ctx; /* ctx for SRP authentication */ +# endif + +# ifndef OPENSSL_NO_TLSEXT + +# ifndef OPENSSL_NO_NEXTPROTONEG + /* Next protocol negotiation information */ + /* (for experimental NPN extension). */ + + /* + * For a server, this contains a callback function by which the set of + * advertised protocols can be provided. + */ + int (*next_protos_advertised_cb) (SSL *s, const unsigned char **buf, + unsigned int *len, void *arg); + void *next_protos_advertised_cb_arg; + /* + * For a client, this contains a callback function that selects the next + * protocol from the list provided by the server. + */ + int (*next_proto_select_cb) (SSL *s, unsigned char **out, + unsigned char *outlen, + const unsigned char *in, + unsigned int inlen, void *arg); + void *next_proto_select_cb_arg; +# endif + /* SRTP profiles we are willing to do from RFC 5764 */ + STACK_OF(SRTP_PROTECTION_PROFILE) *srtp_profiles; + + /* + * ALPN information (we are in the process of transitioning from NPN to + * ALPN.) + */ + + /*- + * For a server, this contains a callback function that allows the + * server to select the protocol for the connection. + * out: on successful return, this must point to the raw protocol + * name (without the length prefix). + * outlen: on successful return, this contains the length of |*out|. + * in: points to the client's list of supported protocols in + * wire-format. + * inlen: the length of |in|. + */ + int (*alpn_select_cb) (SSL *s, + const unsigned char **out, + unsigned char *outlen, + const unsigned char *in, + unsigned int inlen, void *arg); + void *alpn_select_cb_arg; + + /* + * For a client, this contains the list of supported protocols in wire + * format. + */ + unsigned char *alpn_client_proto_list; + unsigned alpn_client_proto_list_len; + +# ifndef OPENSSL_NO_EC + /* EC extension values inherited by SSL structure */ + size_t tlsext_ecpointformatlist_length; + unsigned char *tlsext_ecpointformatlist; + size_t tlsext_ellipticcurvelist_length; + unsigned char *tlsext_ellipticcurvelist; +# endif /* OPENSSL_NO_EC */ +# endif +}; + +# endif + +# define SSL_SESS_CACHE_OFF 0x0000 +# define SSL_SESS_CACHE_CLIENT 0x0001 +# define SSL_SESS_CACHE_SERVER 0x0002 +# define SSL_SESS_CACHE_BOTH (SSL_SESS_CACHE_CLIENT|SSL_SESS_CACHE_SERVER) +# define SSL_SESS_CACHE_NO_AUTO_CLEAR 0x0080 +/* enough comments already ... see SSL_CTX_set_session_cache_mode(3) */ +# define SSL_SESS_CACHE_NO_INTERNAL_LOOKUP 0x0100 +# define SSL_SESS_CACHE_NO_INTERNAL_STORE 0x0200 +# define SSL_SESS_CACHE_NO_INTERNAL \ + (SSL_SESS_CACHE_NO_INTERNAL_LOOKUP|SSL_SESS_CACHE_NO_INTERNAL_STORE) + +LHASH_OF(SSL_SESSION) *SSL_CTX_sessions(SSL_CTX *ctx); +# define SSL_CTX_sess_number(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_NUMBER,0,NULL) +# define SSL_CTX_sess_connect(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_CONNECT,0,NULL) +# define SSL_CTX_sess_connect_good(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_CONNECT_GOOD,0,NULL) +# define SSL_CTX_sess_connect_renegotiate(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_CONNECT_RENEGOTIATE,0,NULL) +# define SSL_CTX_sess_accept(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_ACCEPT,0,NULL) +# define SSL_CTX_sess_accept_renegotiate(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_ACCEPT_RENEGOTIATE,0,NULL) +# define SSL_CTX_sess_accept_good(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_ACCEPT_GOOD,0,NULL) +# define SSL_CTX_sess_hits(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_HIT,0,NULL) +# define SSL_CTX_sess_cb_hits(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_CB_HIT,0,NULL) +# define SSL_CTX_sess_misses(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_MISSES,0,NULL) +# define SSL_CTX_sess_timeouts(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_TIMEOUTS,0,NULL) +# define SSL_CTX_sess_cache_full(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_CACHE_FULL,0,NULL) + +void SSL_CTX_sess_set_new_cb(SSL_CTX *ctx, + int (*new_session_cb) (struct ssl_st *ssl, + SSL_SESSION *sess)); +int (*SSL_CTX_sess_get_new_cb(SSL_CTX *ctx)) (struct ssl_st *ssl, + SSL_SESSION *sess); +void SSL_CTX_sess_set_remove_cb(SSL_CTX *ctx, + void (*remove_session_cb) (struct ssl_ctx_st + *ctx, + SSL_SESSION + *sess)); +void (*SSL_CTX_sess_get_remove_cb(SSL_CTX *ctx)) (struct ssl_ctx_st *ctx, + SSL_SESSION *sess); +void SSL_CTX_sess_set_get_cb(SSL_CTX *ctx, + SSL_SESSION *(*get_session_cb) (struct ssl_st + *ssl, + unsigned char + *data, int len, + int *copy)); +SSL_SESSION *(*SSL_CTX_sess_get_get_cb(SSL_CTX *ctx)) (struct ssl_st *ssl, + unsigned char *Data, + int len, int *copy); +void SSL_CTX_set_info_callback(SSL_CTX *ctx, + void (*cb) (const SSL *ssl, int type, + int val)); +void (*SSL_CTX_get_info_callback(SSL_CTX *ctx)) (const SSL *ssl, int type, + int val); +void SSL_CTX_set_client_cert_cb(SSL_CTX *ctx, + int (*client_cert_cb) (SSL *ssl, X509 **x509, + EVP_PKEY **pkey)); +int (*SSL_CTX_get_client_cert_cb(SSL_CTX *ctx)) (SSL *ssl, X509 **x509, + EVP_PKEY **pkey); +# ifndef OPENSSL_NO_ENGINE +int SSL_CTX_set_client_cert_engine(SSL_CTX *ctx, ENGINE *e); +# endif +void SSL_CTX_set_cookie_generate_cb(SSL_CTX *ctx, + int (*app_gen_cookie_cb) (SSL *ssl, + unsigned char + *cookie, + unsigned int + *cookie_len)); +void SSL_CTX_set_cookie_verify_cb(SSL_CTX *ctx, + int (*app_verify_cookie_cb) (SSL *ssl, + unsigned char + *cookie, + unsigned int + cookie_len)); +# ifndef OPENSSL_NO_NEXTPROTONEG +void SSL_CTX_set_next_protos_advertised_cb(SSL_CTX *s, + int (*cb) (SSL *ssl, + const unsigned char + **out, + unsigned int *outlen, + void *arg), void *arg); +void SSL_CTX_set_next_proto_select_cb(SSL_CTX *s, + int (*cb) (SSL *ssl, + unsigned char **out, + unsigned char *outlen, + const unsigned char *in, + unsigned int inlen, + void *arg), void *arg); +void SSL_get0_next_proto_negotiated(const SSL *s, const unsigned char **data, + unsigned *len); +# endif + +# ifndef OPENSSL_NO_TLSEXT +int SSL_select_next_proto(unsigned char **out, unsigned char *outlen, + const unsigned char *in, unsigned int inlen, + const unsigned char *client, + unsigned int client_len); +# endif + +# define OPENSSL_NPN_UNSUPPORTED 0 +# define OPENSSL_NPN_NEGOTIATED 1 +# define OPENSSL_NPN_NO_OVERLAP 2 + +int SSL_CTX_set_alpn_protos(SSL_CTX *ctx, const unsigned char *protos, + unsigned protos_len); +int SSL_set_alpn_protos(SSL *ssl, const unsigned char *protos, + unsigned protos_len); +void SSL_CTX_set_alpn_select_cb(SSL_CTX *ctx, + int (*cb) (SSL *ssl, + const unsigned char **out, + unsigned char *outlen, + const unsigned char *in, + unsigned int inlen, + void *arg), void *arg); +void SSL_get0_alpn_selected(const SSL *ssl, const unsigned char **data, + unsigned *len); + +# ifndef OPENSSL_NO_PSK +/* + * the maximum length of the buffer given to callbacks containing the + * resulting identity/psk + */ +# define PSK_MAX_IDENTITY_LEN 128 +# define PSK_MAX_PSK_LEN 256 +void SSL_CTX_set_psk_client_callback(SSL_CTX *ctx, + unsigned int (*psk_client_callback) (SSL + *ssl, + const + char + *hint, + char + *identity, + unsigned + int + max_identity_len, + unsigned + char + *psk, + unsigned + int + max_psk_len)); +void SSL_set_psk_client_callback(SSL *ssl, + unsigned int (*psk_client_callback) (SSL + *ssl, + const + char + *hint, + char + *identity, + unsigned + int + max_identity_len, + unsigned + char + *psk, + unsigned + int + max_psk_len)); +void SSL_CTX_set_psk_server_callback(SSL_CTX *ctx, + unsigned int (*psk_server_callback) (SSL + *ssl, + const + char + *identity, + unsigned + char + *psk, + unsigned + int + max_psk_len)); +void SSL_set_psk_server_callback(SSL *ssl, + unsigned int (*psk_server_callback) (SSL + *ssl, + const + char + *identity, + unsigned + char + *psk, + unsigned + int + max_psk_len)); +int SSL_CTX_use_psk_identity_hint(SSL_CTX *ctx, const char *identity_hint); +int SSL_use_psk_identity_hint(SSL *s, const char *identity_hint); +const char *SSL_get_psk_identity_hint(const SSL *s); +const char *SSL_get_psk_identity(const SSL *s); +# endif + +# ifndef OPENSSL_NO_TLSEXT +/* Register callbacks to handle custom TLS Extensions for client or server. */ + +int SSL_CTX_add_client_custom_ext(SSL_CTX *ctx, unsigned int ext_type, + custom_ext_add_cb add_cb, + custom_ext_free_cb free_cb, + void *add_arg, + custom_ext_parse_cb parse_cb, + void *parse_arg); + +int SSL_CTX_add_server_custom_ext(SSL_CTX *ctx, unsigned int ext_type, + custom_ext_add_cb add_cb, + custom_ext_free_cb free_cb, + void *add_arg, + custom_ext_parse_cb parse_cb, + void *parse_arg); + +int SSL_extension_supported(unsigned int ext_type); + +# endif + +# define SSL_NOTHING 1 +# define SSL_WRITING 2 +# define SSL_READING 3 +# define SSL_X509_LOOKUP 4 + +/* These will only be used when doing non-blocking IO */ +# define SSL_want_nothing(s) (SSL_want(s) == SSL_NOTHING) +# define SSL_want_read(s) (SSL_want(s) == SSL_READING) +# define SSL_want_write(s) (SSL_want(s) == SSL_WRITING) +# define SSL_want_x509_lookup(s) (SSL_want(s) == SSL_X509_LOOKUP) + +# define SSL_MAC_FLAG_READ_MAC_STREAM 1 +# define SSL_MAC_FLAG_WRITE_MAC_STREAM 2 + +# ifndef OPENSSL_NO_SSL_INTERN + +struct ssl_st { + /* + * protocol version (one of SSL2_VERSION, SSL3_VERSION, TLS1_VERSION, + * DTLS1_VERSION) + */ + int version; + /* SSL_ST_CONNECT or SSL_ST_ACCEPT */ + int type; + /* SSLv3 */ + const SSL_METHOD *method; + /* + * There are 2 BIO's even though they are normally both the same. This + * is so data can be read and written to different handlers + */ +# ifndef OPENSSL_NO_BIO + /* used by SSL_read */ + BIO *rbio; + /* used by SSL_write */ + BIO *wbio; + /* used during session-id reuse to concatenate messages */ + BIO *bbio; +# else + /* used by SSL_read */ + char *rbio; + /* used by SSL_write */ + char *wbio; + char *bbio; +# endif + /* + * This holds a variable that indicates what we were doing when a 0 or -1 + * is returned. This is needed for non-blocking IO so we know what + * request needs re-doing when in SSL_accept or SSL_connect + */ + int rwstate; + /* true when we are actually in SSL_accept() or SSL_connect() */ + int in_handshake; + int (*handshake_func) (SSL *); + /* + * Imagine that here's a boolean member "init" that is switched as soon + * as SSL_set_{accept/connect}_state is called for the first time, so + * that "state" and "handshake_func" are properly initialized. But as + * handshake_func is == 0 until then, we use this test instead of an + * "init" member. + */ + /* are we the server side? - mostly used by SSL_clear */ + int server; + /* + * Generate a new session or reuse an old one. + * NB: For servers, the 'new' session may actually be a previously + * cached session or even the previous session unless + * SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION is set + */ + int new_session; + /* don't send shutdown packets */ + int quiet_shutdown; + /* we have shut things down, 0x01 sent, 0x02 for received */ + int shutdown; + /* where we are */ + int state; + /* where we are when reading */ + int rstate; + BUF_MEM *init_buf; /* buffer used during init */ + void *init_msg; /* pointer to handshake message body, set by + * ssl3_get_message() */ + int init_num; /* amount read/written */ + int init_off; /* amount read/written */ + /* used internally to point at a raw packet */ + unsigned char *packet; + unsigned int packet_length; + struct ssl2_state_st *s2; /* SSLv2 variables */ + struct ssl3_state_st *s3; /* SSLv3 variables */ + struct dtls1_state_st *d1; /* DTLSv1 variables */ + int read_ahead; /* Read as many input bytes as possible (for + * non-blocking reads) */ + /* callback that allows applications to peek at protocol messages */ + void (*msg_callback) (int write_p, int version, int content_type, + const void *buf, size_t len, SSL *ssl, void *arg); + void *msg_callback_arg; + int hit; /* reusing a previous session */ + X509_VERIFY_PARAM *param; +# if 0 + int purpose; /* Purpose setting */ + int trust; /* Trust setting */ +# endif + /* crypto */ + STACK_OF(SSL_CIPHER) *cipher_list; + STACK_OF(SSL_CIPHER) *cipher_list_by_id; + /* + * These are the ones being used, the ones in SSL_SESSION are the ones to + * be 'copied' into these ones + */ + int mac_flags; + EVP_CIPHER_CTX *enc_read_ctx; /* cryptographic state */ + EVP_MD_CTX *read_hash; /* used for mac generation */ +# ifndef OPENSSL_NO_COMP + COMP_CTX *expand; /* uncompress */ +# else + char *expand; +# endif + EVP_CIPHER_CTX *enc_write_ctx; /* cryptographic state */ + EVP_MD_CTX *write_hash; /* used for mac generation */ +# ifndef OPENSSL_NO_COMP + COMP_CTX *compress; /* compression */ +# else + char *compress; +# endif + /* session info */ + /* client cert? */ + /* This is used to hold the server certificate used */ + struct cert_st /* CERT */ *cert; + /* + * the session_id_context is used to ensure sessions are only reused in + * the appropriate context + */ + unsigned int sid_ctx_length; + unsigned char sid_ctx[SSL_MAX_SID_CTX_LENGTH]; + /* This can also be in the session once a session is established */ + SSL_SESSION *session; + /* Default generate session ID callback. */ + GEN_SESSION_CB generate_session_id; + /* Used in SSL2 and SSL3 */ + /* + * 0 don't care about verify failure. + * 1 fail if verify fails + */ + int verify_mode; + /* fail if callback returns 0 */ + int (*verify_callback) (int ok, X509_STORE_CTX *ctx); + /* optional informational callback */ + void (*info_callback) (const SSL *ssl, int type, int val); + /* error bytes to be written */ + int error; + /* actual code */ + int error_code; +# ifndef OPENSSL_NO_KRB5 + /* Kerberos 5 context */ + KSSL_CTX *kssl_ctx; +# endif /* OPENSSL_NO_KRB5 */ +# ifndef OPENSSL_NO_PSK + unsigned int (*psk_client_callback) (SSL *ssl, const char *hint, + char *identity, + unsigned int max_identity_len, + unsigned char *psk, + unsigned int max_psk_len); + unsigned int (*psk_server_callback) (SSL *ssl, const char *identity, + unsigned char *psk, + unsigned int max_psk_len); +# endif + SSL_CTX *ctx; + /* + * set this flag to 1 and a sleep(1) is put into all SSL_read() and + * SSL_write() calls, good for nbio debuging :-) + */ + int debug; + /* extra application data */ + long verify_result; + CRYPTO_EX_DATA ex_data; + /* for server side, keep the list of CA_dn we can use */ + STACK_OF(X509_NAME) *client_CA; + int references; + /* protocol behaviour */ + unsigned long options; + /* API behaviour */ + unsigned long mode; + long max_cert_list; + int first_packet; + /* what was passed, used for SSLv3/TLS rollback check */ + int client_version; + unsigned int max_send_fragment; +# ifndef OPENSSL_NO_TLSEXT + /* TLS extension debug callback */ + void (*tlsext_debug_cb) (SSL *s, int client_server, int type, + unsigned char *data, int len, void *arg); + void *tlsext_debug_arg; + char *tlsext_hostname; + /*- + * no further mod of servername + * 0 : call the servername extension callback. + * 1 : prepare 2, allow last ack just after in server callback. + * 2 : don't call servername callback, no ack in server hello + */ + int servername_done; + /* certificate status request info */ + /* Status type or -1 if no status type */ + int tlsext_status_type; + /* Expect OCSP CertificateStatus message */ + int tlsext_status_expected; + /* OCSP status request only */ + STACK_OF(OCSP_RESPID) *tlsext_ocsp_ids; + X509_EXTENSIONS *tlsext_ocsp_exts; + /* OCSP response received or to be sent */ + unsigned char *tlsext_ocsp_resp; + int tlsext_ocsp_resplen; + /* RFC4507 session ticket expected to be received or sent */ + int tlsext_ticket_expected; +# ifndef OPENSSL_NO_EC + size_t tlsext_ecpointformatlist_length; + /* our list */ + unsigned char *tlsext_ecpointformatlist; + size_t tlsext_ellipticcurvelist_length; + /* our list */ + unsigned char *tlsext_ellipticcurvelist; +# endif /* OPENSSL_NO_EC */ + /* + * draft-rescorla-tls-opaque-prf-input-00.txt information to be used for + * handshakes + */ + void *tlsext_opaque_prf_input; + size_t tlsext_opaque_prf_input_len; + /* TLS Session Ticket extension override */ + TLS_SESSION_TICKET_EXT *tlsext_session_ticket; + /* TLS Session Ticket extension callback */ + tls_session_ticket_ext_cb_fn tls_session_ticket_ext_cb; + void *tls_session_ticket_ext_cb_arg; + /* TLS pre-shared secret session resumption */ + tls_session_secret_cb_fn tls_session_secret_cb; + void *tls_session_secret_cb_arg; + SSL_CTX *initial_ctx; /* initial ctx, used to store sessions */ +# ifndef OPENSSL_NO_NEXTPROTONEG + /* + * Next protocol negotiation. For the client, this is the protocol that + * we sent in NextProtocol and is set when handling ServerHello + * extensions. For a server, this is the client's selected_protocol from + * NextProtocol and is set when handling the NextProtocol message, before + * the Finished message. + */ + unsigned char *next_proto_negotiated; + unsigned char next_proto_negotiated_len; +# endif +# define session_ctx initial_ctx + /* What we'll do */ + STACK_OF(SRTP_PROTECTION_PROFILE) *srtp_profiles; + /* What's been chosen */ + SRTP_PROTECTION_PROFILE *srtp_profile; + /*- + * Is use of the Heartbeat extension negotiated? + * 0: disabled + * 1: enabled + * 2: enabled, but not allowed to send Requests + */ + unsigned int tlsext_heartbeat; + /* Indicates if a HeartbeatRequest is in flight */ + unsigned int tlsext_hb_pending; + /* HeartbeatRequest sequence number */ + unsigned int tlsext_hb_seq; +# else +# define session_ctx ctx +# endif /* OPENSSL_NO_TLSEXT */ + /*- + * 1 if we are renegotiating. + * 2 if we are a server and are inside a handshake + * (i.e. not just sending a HelloRequest) + */ + int renegotiate; +# ifndef OPENSSL_NO_SRP + /* ctx for SRP authentication */ + SRP_CTX srp_ctx; +# endif +# ifndef OPENSSL_NO_TLSEXT + /* + * For a client, this contains the list of supported protocols in wire + * format. + */ + unsigned char *alpn_client_proto_list; + unsigned alpn_client_proto_list_len; +# endif /* OPENSSL_NO_TLSEXT */ +}; + +# endif + +#ifdef __cplusplus +} +#endif + +# include +# include +# include /* This is mostly sslv3 with a few tweaks */ +# include /* Datagram TLS */ +# include +# include /* Support for the use_srtp extension */ + +#ifdef __cplusplus +extern "C" { +#endif + +/* compatibility */ +# define SSL_set_app_data(s,arg) (SSL_set_ex_data(s,0,(char *)arg)) +# define SSL_get_app_data(s) (SSL_get_ex_data(s,0)) +# define SSL_SESSION_set_app_data(s,a) (SSL_SESSION_set_ex_data(s,0,(char *)a)) +# define SSL_SESSION_get_app_data(s) (SSL_SESSION_get_ex_data(s,0)) +# define SSL_CTX_get_app_data(ctx) (SSL_CTX_get_ex_data(ctx,0)) +# define SSL_CTX_set_app_data(ctx,arg) (SSL_CTX_set_ex_data(ctx,0,(char *)arg)) + +/* + * The following are the possible values for ssl->state are are used to + * indicate where we are up to in the SSL connection establishment. The + * macros that follow are about the only things you should need to use and + * even then, only when using non-blocking IO. It can also be useful to work + * out where you were when the connection failed + */ + +# define SSL_ST_CONNECT 0x1000 +# define SSL_ST_ACCEPT 0x2000 +# define SSL_ST_MASK 0x0FFF +# define SSL_ST_INIT (SSL_ST_CONNECT|SSL_ST_ACCEPT) +# define SSL_ST_BEFORE 0x4000 +# define SSL_ST_OK 0x03 +# define SSL_ST_RENEGOTIATE (0x04|SSL_ST_INIT) + +# define SSL_CB_LOOP 0x01 +# define SSL_CB_EXIT 0x02 +# define SSL_CB_READ 0x04 +# define SSL_CB_WRITE 0x08 +# define SSL_CB_ALERT 0x4000/* used in callback */ +# define SSL_CB_READ_ALERT (SSL_CB_ALERT|SSL_CB_READ) +# define SSL_CB_WRITE_ALERT (SSL_CB_ALERT|SSL_CB_WRITE) +# define SSL_CB_ACCEPT_LOOP (SSL_ST_ACCEPT|SSL_CB_LOOP) +# define SSL_CB_ACCEPT_EXIT (SSL_ST_ACCEPT|SSL_CB_EXIT) +# define SSL_CB_CONNECT_LOOP (SSL_ST_CONNECT|SSL_CB_LOOP) +# define SSL_CB_CONNECT_EXIT (SSL_ST_CONNECT|SSL_CB_EXIT) +# define SSL_CB_HANDSHAKE_START 0x10 +# define SSL_CB_HANDSHAKE_DONE 0x20 + +/* Is the SSL_connection established? */ +# define SSL_get_state(a) SSL_state(a) +# define SSL_is_init_finished(a) (SSL_state(a) == SSL_ST_OK) +# define SSL_in_init(a) (SSL_state(a)&SSL_ST_INIT) +# define SSL_in_before(a) (SSL_state(a)&SSL_ST_BEFORE) +# define SSL_in_connect_init(a) (SSL_state(a)&SSL_ST_CONNECT) +# define SSL_in_accept_init(a) (SSL_state(a)&SSL_ST_ACCEPT) + +/* + * The following 2 states are kept in ssl->rstate when reads fail, you should + * not need these + */ +# define SSL_ST_READ_HEADER 0xF0 +# define SSL_ST_READ_BODY 0xF1 +# define SSL_ST_READ_DONE 0xF2 + +/*- + * Obtain latest Finished message + * -- that we sent (SSL_get_finished) + * -- that we expected from peer (SSL_get_peer_finished). + * Returns length (0 == no Finished so far), copies up to 'count' bytes. + */ +size_t SSL_get_finished(const SSL *s, void *buf, size_t count); +size_t SSL_get_peer_finished(const SSL *s, void *buf, size_t count); + +/* + * use either SSL_VERIFY_NONE or SSL_VERIFY_PEER, the last 2 options are + * 'ored' with SSL_VERIFY_PEER if they are desired + */ +# define SSL_VERIFY_NONE 0x00 +# define SSL_VERIFY_PEER 0x01 +# define SSL_VERIFY_FAIL_IF_NO_PEER_CERT 0x02 +# define SSL_VERIFY_CLIENT_ONCE 0x04 + +# define OpenSSL_add_ssl_algorithms() SSL_library_init() +# define SSLeay_add_ssl_algorithms() SSL_library_init() + +/* this is for backward compatibility */ +# if 0 /* NEW_SSLEAY */ +# define SSL_CTX_set_default_verify(a,b,c) SSL_CTX_set_verify(a,b,c) +# define SSL_set_pref_cipher(c,n) SSL_set_cipher_list(c,n) +# define SSL_add_session(a,b) SSL_CTX_add_session((a),(b)) +# define SSL_remove_session(a,b) SSL_CTX_remove_session((a),(b)) +# define SSL_flush_sessions(a,b) SSL_CTX_flush_sessions((a),(b)) +# endif +/* More backward compatibility */ +# define SSL_get_cipher(s) \ + SSL_CIPHER_get_name(SSL_get_current_cipher(s)) +# define SSL_get_cipher_bits(s,np) \ + SSL_CIPHER_get_bits(SSL_get_current_cipher(s),np) +# define SSL_get_cipher_version(s) \ + SSL_CIPHER_get_version(SSL_get_current_cipher(s)) +# define SSL_get_cipher_name(s) \ + SSL_CIPHER_get_name(SSL_get_current_cipher(s)) +# define SSL_get_time(a) SSL_SESSION_get_time(a) +# define SSL_set_time(a,b) SSL_SESSION_set_time((a),(b)) +# define SSL_get_timeout(a) SSL_SESSION_get_timeout(a) +# define SSL_set_timeout(a,b) SSL_SESSION_set_timeout((a),(b)) + +# define d2i_SSL_SESSION_bio(bp,s_id) ASN1_d2i_bio_of(SSL_SESSION,SSL_SESSION_new,d2i_SSL_SESSION,bp,s_id) +# define i2d_SSL_SESSION_bio(bp,s_id) ASN1_i2d_bio_of(SSL_SESSION,i2d_SSL_SESSION,bp,s_id) + +DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION) +# define SSL_AD_REASON_OFFSET 1000/* offset to get SSL_R_... value + * from SSL_AD_... */ +/* These alert types are for SSLv3 and TLSv1 */ +# define SSL_AD_CLOSE_NOTIFY SSL3_AD_CLOSE_NOTIFY +/* fatal */ +# define SSL_AD_UNEXPECTED_MESSAGE SSL3_AD_UNEXPECTED_MESSAGE +/* fatal */ +# define SSL_AD_BAD_RECORD_MAC SSL3_AD_BAD_RECORD_MAC +# define SSL_AD_DECRYPTION_FAILED TLS1_AD_DECRYPTION_FAILED +# define SSL_AD_RECORD_OVERFLOW TLS1_AD_RECORD_OVERFLOW +/* fatal */ +# define SSL_AD_DECOMPRESSION_FAILURE SSL3_AD_DECOMPRESSION_FAILURE +/* fatal */ +# define SSL_AD_HANDSHAKE_FAILURE SSL3_AD_HANDSHAKE_FAILURE +/* Not for TLS */ +# define SSL_AD_NO_CERTIFICATE SSL3_AD_NO_CERTIFICATE +# define SSL_AD_BAD_CERTIFICATE SSL3_AD_BAD_CERTIFICATE +# define SSL_AD_UNSUPPORTED_CERTIFICATE SSL3_AD_UNSUPPORTED_CERTIFICATE +# define SSL_AD_CERTIFICATE_REVOKED SSL3_AD_CERTIFICATE_REVOKED +# define SSL_AD_CERTIFICATE_EXPIRED SSL3_AD_CERTIFICATE_EXPIRED +# define SSL_AD_CERTIFICATE_UNKNOWN SSL3_AD_CERTIFICATE_UNKNOWN +/* fatal */ +# define SSL_AD_ILLEGAL_PARAMETER SSL3_AD_ILLEGAL_PARAMETER +/* fatal */ +# define SSL_AD_UNKNOWN_CA TLS1_AD_UNKNOWN_CA +/* fatal */ +# define SSL_AD_ACCESS_DENIED TLS1_AD_ACCESS_DENIED +/* fatal */ +# define SSL_AD_DECODE_ERROR TLS1_AD_DECODE_ERROR +# define SSL_AD_DECRYPT_ERROR TLS1_AD_DECRYPT_ERROR +/* fatal */ +# define SSL_AD_EXPORT_RESTRICTION TLS1_AD_EXPORT_RESTRICTION +/* fatal */ +# define SSL_AD_PROTOCOL_VERSION TLS1_AD_PROTOCOL_VERSION +/* fatal */ +# define SSL_AD_INSUFFICIENT_SECURITY TLS1_AD_INSUFFICIENT_SECURITY +/* fatal */ +# define SSL_AD_INTERNAL_ERROR TLS1_AD_INTERNAL_ERROR +# define SSL_AD_USER_CANCELLED TLS1_AD_USER_CANCELLED +# define SSL_AD_NO_RENEGOTIATION TLS1_AD_NO_RENEGOTIATION +# define SSL_AD_UNSUPPORTED_EXTENSION TLS1_AD_UNSUPPORTED_EXTENSION +# define SSL_AD_CERTIFICATE_UNOBTAINABLE TLS1_AD_CERTIFICATE_UNOBTAINABLE +# define SSL_AD_UNRECOGNIZED_NAME TLS1_AD_UNRECOGNIZED_NAME +# define SSL_AD_BAD_CERTIFICATE_STATUS_RESPONSE TLS1_AD_BAD_CERTIFICATE_STATUS_RESPONSE +# define SSL_AD_BAD_CERTIFICATE_HASH_VALUE TLS1_AD_BAD_CERTIFICATE_HASH_VALUE +/* fatal */ +# define SSL_AD_UNKNOWN_PSK_IDENTITY TLS1_AD_UNKNOWN_PSK_IDENTITY +/* fatal */ +# define SSL_AD_INAPPROPRIATE_FALLBACK TLS1_AD_INAPPROPRIATE_FALLBACK +# define SSL_ERROR_NONE 0 +# define SSL_ERROR_SSL 1 +# define SSL_ERROR_WANT_READ 2 +# define SSL_ERROR_WANT_WRITE 3 +# define SSL_ERROR_WANT_X509_LOOKUP 4 +# define SSL_ERROR_SYSCALL 5/* look at error stack/return + * value/errno */ +# define SSL_ERROR_ZERO_RETURN 6 +# define SSL_ERROR_WANT_CONNECT 7 +# define SSL_ERROR_WANT_ACCEPT 8 +# define SSL_CTRL_NEED_TMP_RSA 1 +# define SSL_CTRL_SET_TMP_RSA 2 +# define SSL_CTRL_SET_TMP_DH 3 +# define SSL_CTRL_SET_TMP_ECDH 4 +# define SSL_CTRL_SET_TMP_RSA_CB 5 +# define SSL_CTRL_SET_TMP_DH_CB 6 +# define SSL_CTRL_SET_TMP_ECDH_CB 7 +# define SSL_CTRL_GET_SESSION_REUSED 8 +# define SSL_CTRL_GET_CLIENT_CERT_REQUEST 9 +# define SSL_CTRL_GET_NUM_RENEGOTIATIONS 10 +# define SSL_CTRL_CLEAR_NUM_RENEGOTIATIONS 11 +# define SSL_CTRL_GET_TOTAL_RENEGOTIATIONS 12 +# define SSL_CTRL_GET_FLAGS 13 +# define SSL_CTRL_EXTRA_CHAIN_CERT 14 +# define SSL_CTRL_SET_MSG_CALLBACK 15 +# define SSL_CTRL_SET_MSG_CALLBACK_ARG 16 +/* only applies to datagram connections */ +# define SSL_CTRL_SET_MTU 17 +/* Stats */ +# define SSL_CTRL_SESS_NUMBER 20 +# define SSL_CTRL_SESS_CONNECT 21 +# define SSL_CTRL_SESS_CONNECT_GOOD 22 +# define SSL_CTRL_SESS_CONNECT_RENEGOTIATE 23 +# define SSL_CTRL_SESS_ACCEPT 24 +# define SSL_CTRL_SESS_ACCEPT_GOOD 25 +# define SSL_CTRL_SESS_ACCEPT_RENEGOTIATE 26 +# define SSL_CTRL_SESS_HIT 27 +# define SSL_CTRL_SESS_CB_HIT 28 +# define SSL_CTRL_SESS_MISSES 29 +# define SSL_CTRL_SESS_TIMEOUTS 30 +# define SSL_CTRL_SESS_CACHE_FULL 31 +# define SSL_CTRL_OPTIONS 32 +# define SSL_CTRL_MODE 33 +# define SSL_CTRL_GET_READ_AHEAD 40 +# define SSL_CTRL_SET_READ_AHEAD 41 +# define SSL_CTRL_SET_SESS_CACHE_SIZE 42 +# define SSL_CTRL_GET_SESS_CACHE_SIZE 43 +# define SSL_CTRL_SET_SESS_CACHE_MODE 44 +# define SSL_CTRL_GET_SESS_CACHE_MODE 45 +# define SSL_CTRL_GET_MAX_CERT_LIST 50 +# define SSL_CTRL_SET_MAX_CERT_LIST 51 +# define SSL_CTRL_SET_MAX_SEND_FRAGMENT 52 +/* see tls1.h for macros based on these */ +# ifndef OPENSSL_NO_TLSEXT +# define SSL_CTRL_SET_TLSEXT_SERVERNAME_CB 53 +# define SSL_CTRL_SET_TLSEXT_SERVERNAME_ARG 54 +# define SSL_CTRL_SET_TLSEXT_HOSTNAME 55 +# define SSL_CTRL_SET_TLSEXT_DEBUG_CB 56 +# define SSL_CTRL_SET_TLSEXT_DEBUG_ARG 57 +# define SSL_CTRL_GET_TLSEXT_TICKET_KEYS 58 +# define SSL_CTRL_SET_TLSEXT_TICKET_KEYS 59 +# define SSL_CTRL_SET_TLSEXT_OPAQUE_PRF_INPUT 60 +# define SSL_CTRL_SET_TLSEXT_OPAQUE_PRF_INPUT_CB 61 +# define SSL_CTRL_SET_TLSEXT_OPAQUE_PRF_INPUT_CB_ARG 62 +# define SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB 63 +# define SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB_ARG 64 +# define SSL_CTRL_SET_TLSEXT_STATUS_REQ_TYPE 65 +# define SSL_CTRL_GET_TLSEXT_STATUS_REQ_EXTS 66 +# define SSL_CTRL_SET_TLSEXT_STATUS_REQ_EXTS 67 +# define SSL_CTRL_GET_TLSEXT_STATUS_REQ_IDS 68 +# define SSL_CTRL_SET_TLSEXT_STATUS_REQ_IDS 69 +# define SSL_CTRL_GET_TLSEXT_STATUS_REQ_OCSP_RESP 70 +# define SSL_CTRL_SET_TLSEXT_STATUS_REQ_OCSP_RESP 71 +# define SSL_CTRL_SET_TLSEXT_TICKET_KEY_CB 72 +# define SSL_CTRL_SET_TLS_EXT_SRP_USERNAME_CB 75 +# define SSL_CTRL_SET_SRP_VERIFY_PARAM_CB 76 +# define SSL_CTRL_SET_SRP_GIVE_CLIENT_PWD_CB 77 +# define SSL_CTRL_SET_SRP_ARG 78 +# define SSL_CTRL_SET_TLS_EXT_SRP_USERNAME 79 +# define SSL_CTRL_SET_TLS_EXT_SRP_STRENGTH 80 +# define SSL_CTRL_SET_TLS_EXT_SRP_PASSWORD 81 +# ifndef OPENSSL_NO_HEARTBEATS +# define SSL_CTRL_TLS_EXT_SEND_HEARTBEAT 85 +# define SSL_CTRL_GET_TLS_EXT_HEARTBEAT_PENDING 86 +# define SSL_CTRL_SET_TLS_EXT_HEARTBEAT_NO_REQUESTS 87 +# endif +# endif /* OPENSSL_NO_TLSEXT */ +# define DTLS_CTRL_GET_TIMEOUT 73 +# define DTLS_CTRL_HANDLE_TIMEOUT 74 +# define DTLS_CTRL_LISTEN 75 +# define SSL_CTRL_GET_RI_SUPPORT 76 +# define SSL_CTRL_CLEAR_OPTIONS 77 +# define SSL_CTRL_CLEAR_MODE 78 +# define SSL_CTRL_GET_EXTRA_CHAIN_CERTS 82 +# define SSL_CTRL_CLEAR_EXTRA_CHAIN_CERTS 83 +# define SSL_CTRL_CHAIN 88 +# define SSL_CTRL_CHAIN_CERT 89 +# define SSL_CTRL_GET_CURVES 90 +# define SSL_CTRL_SET_CURVES 91 +# define SSL_CTRL_SET_CURVES_LIST 92 +# define SSL_CTRL_GET_SHARED_CURVE 93 +# define SSL_CTRL_SET_ECDH_AUTO 94 +# define SSL_CTRL_SET_SIGALGS 97 +# define SSL_CTRL_SET_SIGALGS_LIST 98 +# define SSL_CTRL_CERT_FLAGS 99 +# define SSL_CTRL_CLEAR_CERT_FLAGS 100 +# define SSL_CTRL_SET_CLIENT_SIGALGS 101 +# define SSL_CTRL_SET_CLIENT_SIGALGS_LIST 102 +# define SSL_CTRL_GET_CLIENT_CERT_TYPES 103 +# define SSL_CTRL_SET_CLIENT_CERT_TYPES 104 +# define SSL_CTRL_BUILD_CERT_CHAIN 105 +# define SSL_CTRL_SET_VERIFY_CERT_STORE 106 +# define SSL_CTRL_SET_CHAIN_CERT_STORE 107 +# define SSL_CTRL_GET_PEER_SIGNATURE_NID 108 +# define SSL_CTRL_GET_SERVER_TMP_KEY 109 +# define SSL_CTRL_GET_RAW_CIPHERLIST 110 +# define SSL_CTRL_GET_EC_POINT_FORMATS 111 +# define SSL_CTRL_GET_CHAIN_CERTS 115 +# define SSL_CTRL_SELECT_CURRENT_CERT 116 +# define SSL_CTRL_SET_CURRENT_CERT 117 +# define SSL_CTRL_CHECK_PROTO_VERSION 119 +# define DTLS_CTRL_SET_LINK_MTU 120 +# define DTLS_CTRL_GET_LINK_MIN_MTU 121 +# define SSL_CERT_SET_FIRST 1 +# define SSL_CERT_SET_NEXT 2 +# define SSL_CERT_SET_SERVER 3 +# define DTLSv1_get_timeout(ssl, arg) \ + SSL_ctrl(ssl,DTLS_CTRL_GET_TIMEOUT,0, (void *)arg) +# define DTLSv1_handle_timeout(ssl) \ + SSL_ctrl(ssl,DTLS_CTRL_HANDLE_TIMEOUT,0, NULL) +# define DTLSv1_listen(ssl, peer) \ + SSL_ctrl(ssl,DTLS_CTRL_LISTEN,0, (void *)peer) +# define SSL_session_reused(ssl) \ + SSL_ctrl((ssl),SSL_CTRL_GET_SESSION_REUSED,0,NULL) +# define SSL_num_renegotiations(ssl) \ + SSL_ctrl((ssl),SSL_CTRL_GET_NUM_RENEGOTIATIONS,0,NULL) +# define SSL_clear_num_renegotiations(ssl) \ + SSL_ctrl((ssl),SSL_CTRL_CLEAR_NUM_RENEGOTIATIONS,0,NULL) +# define SSL_total_renegotiations(ssl) \ + SSL_ctrl((ssl),SSL_CTRL_GET_TOTAL_RENEGOTIATIONS,0,NULL) +# define SSL_CTX_need_tmp_RSA(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_NEED_TMP_RSA,0,NULL) +# define SSL_CTX_set_tmp_rsa(ctx,rsa) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_TMP_RSA,0,(char *)rsa) +# define SSL_CTX_set_tmp_dh(ctx,dh) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_TMP_DH,0,(char *)dh) +# define SSL_CTX_set_tmp_ecdh(ctx,ecdh) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_TMP_ECDH,0,(char *)ecdh) +# define SSL_need_tmp_RSA(ssl) \ + SSL_ctrl(ssl,SSL_CTRL_NEED_TMP_RSA,0,NULL) +# define SSL_set_tmp_rsa(ssl,rsa) \ + SSL_ctrl(ssl,SSL_CTRL_SET_TMP_RSA,0,(char *)rsa) +# define SSL_set_tmp_dh(ssl,dh) \ + SSL_ctrl(ssl,SSL_CTRL_SET_TMP_DH,0,(char *)dh) +# define SSL_set_tmp_ecdh(ssl,ecdh) \ + SSL_ctrl(ssl,SSL_CTRL_SET_TMP_ECDH,0,(char *)ecdh) +# define SSL_CTX_add_extra_chain_cert(ctx,x509) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_EXTRA_CHAIN_CERT,0,(char *)x509) +# define SSL_CTX_get_extra_chain_certs(ctx,px509) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_GET_EXTRA_CHAIN_CERTS,0,px509) +# define SSL_CTX_get_extra_chain_certs_only(ctx,px509) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_GET_EXTRA_CHAIN_CERTS,1,px509) +# define SSL_CTX_clear_extra_chain_certs(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_CLEAR_EXTRA_CHAIN_CERTS,0,NULL) +# define SSL_CTX_set0_chain(ctx,sk) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_CHAIN,0,(char *)sk) +# define SSL_CTX_set1_chain(ctx,sk) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_CHAIN,1,(char *)sk) +# define SSL_CTX_add0_chain_cert(ctx,x509) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_CHAIN_CERT,0,(char *)x509) +# define SSL_CTX_add1_chain_cert(ctx,x509) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_CHAIN_CERT,1,(char *)x509) +# define SSL_CTX_get0_chain_certs(ctx,px509) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_GET_CHAIN_CERTS,0,px509) +# define SSL_CTX_clear_chain_certs(ctx) \ + SSL_CTX_set0_chain(ctx,NULL) +# define SSL_CTX_build_cert_chain(ctx, flags) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_BUILD_CERT_CHAIN, flags, NULL) +# define SSL_CTX_select_current_cert(ctx,x509) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SELECT_CURRENT_CERT,0,(char *)x509) +# define SSL_CTX_set_current_cert(ctx, op) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_CURRENT_CERT, op, NULL) +# define SSL_CTX_set0_verify_cert_store(ctx,st) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_VERIFY_CERT_STORE,0,(char *)st) +# define SSL_CTX_set1_verify_cert_store(ctx,st) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_VERIFY_CERT_STORE,1,(char *)st) +# define SSL_CTX_set0_chain_cert_store(ctx,st) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_CHAIN_CERT_STORE,0,(char *)st) +# define SSL_CTX_set1_chain_cert_store(ctx,st) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_CHAIN_CERT_STORE,1,(char *)st) +# define SSL_set0_chain(ctx,sk) \ + SSL_ctrl(ctx,SSL_CTRL_CHAIN,0,(char *)sk) +# define SSL_set1_chain(ctx,sk) \ + SSL_ctrl(ctx,SSL_CTRL_CHAIN,1,(char *)sk) +# define SSL_add0_chain_cert(ctx,x509) \ + SSL_ctrl(ctx,SSL_CTRL_CHAIN_CERT,0,(char *)x509) +# define SSL_add1_chain_cert(ctx,x509) \ + SSL_ctrl(ctx,SSL_CTRL_CHAIN_CERT,1,(char *)x509) +# define SSL_get0_chain_certs(ctx,px509) \ + SSL_ctrl(ctx,SSL_CTRL_GET_CHAIN_CERTS,0,px509) +# define SSL_clear_chain_certs(ctx) \ + SSL_set0_chain(ctx,NULL) +# define SSL_build_cert_chain(s, flags) \ + SSL_ctrl(s,SSL_CTRL_BUILD_CERT_CHAIN, flags, NULL) +# define SSL_select_current_cert(ctx,x509) \ + SSL_ctrl(ctx,SSL_CTRL_SELECT_CURRENT_CERT,0,(char *)x509) +# define SSL_set_current_cert(ctx,op) \ + SSL_ctrl(ctx,SSL_CTRL_SET_CURRENT_CERT, op, NULL) +# define SSL_set0_verify_cert_store(s,st) \ + SSL_ctrl(s,SSL_CTRL_SET_VERIFY_CERT_STORE,0,(char *)st) +# define SSL_set1_verify_cert_store(s,st) \ + SSL_ctrl(s,SSL_CTRL_SET_VERIFY_CERT_STORE,1,(char *)st) +# define SSL_set0_chain_cert_store(s,st) \ + SSL_ctrl(s,SSL_CTRL_SET_CHAIN_CERT_STORE,0,(char *)st) +# define SSL_set1_chain_cert_store(s,st) \ + SSL_ctrl(s,SSL_CTRL_SET_CHAIN_CERT_STORE,1,(char *)st) +# define SSL_get1_curves(ctx, s) \ + SSL_ctrl(ctx,SSL_CTRL_GET_CURVES,0,(char *)s) +# define SSL_CTX_set1_curves(ctx, clist, clistlen) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_CURVES,clistlen,(char *)clist) +# define SSL_CTX_set1_curves_list(ctx, s) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_CURVES_LIST,0,(char *)s) +# define SSL_set1_curves(ctx, clist, clistlen) \ + SSL_ctrl(ctx,SSL_CTRL_SET_CURVES,clistlen,(char *)clist) +# define SSL_set1_curves_list(ctx, s) \ + SSL_ctrl(ctx,SSL_CTRL_SET_CURVES_LIST,0,(char *)s) +# define SSL_get_shared_curve(s, n) \ + SSL_ctrl(s,SSL_CTRL_GET_SHARED_CURVE,n,NULL) +# define SSL_CTX_set_ecdh_auto(ctx, onoff) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_ECDH_AUTO,onoff,NULL) +# define SSL_set_ecdh_auto(s, onoff) \ + SSL_ctrl(s,SSL_CTRL_SET_ECDH_AUTO,onoff,NULL) +# define SSL_CTX_set1_sigalgs(ctx, slist, slistlen) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_SIGALGS,slistlen,(int *)slist) +# define SSL_CTX_set1_sigalgs_list(ctx, s) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_SIGALGS_LIST,0,(char *)s) +# define SSL_set1_sigalgs(ctx, slist, slistlen) \ + SSL_ctrl(ctx,SSL_CTRL_SET_SIGALGS,clistlen,(int *)slist) +# define SSL_set1_sigalgs_list(ctx, s) \ + SSL_ctrl(ctx,SSL_CTRL_SET_SIGALGS_LIST,0,(char *)s) +# define SSL_CTX_set1_client_sigalgs(ctx, slist, slistlen) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_CLIENT_SIGALGS,slistlen,(int *)slist) +# define SSL_CTX_set1_client_sigalgs_list(ctx, s) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_CLIENT_SIGALGS_LIST,0,(char *)s) +# define SSL_set1_client_sigalgs(ctx, slist, slistlen) \ + SSL_ctrl(ctx,SSL_CTRL_SET_CLIENT_SIGALGS,clistlen,(int *)slist) +# define SSL_set1_client_sigalgs_list(ctx, s) \ + SSL_ctrl(ctx,SSL_CTRL_SET_CLIENT_SIGALGS_LIST,0,(char *)s) +# define SSL_get0_certificate_types(s, clist) \ + SSL_ctrl(s, SSL_CTRL_GET_CLIENT_CERT_TYPES, 0, (char *)clist) +# define SSL_CTX_set1_client_certificate_types(ctx, clist, clistlen) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_CLIENT_CERT_TYPES,clistlen,(char *)clist) +# define SSL_set1_client_certificate_types(s, clist, clistlen) \ + SSL_ctrl(s,SSL_CTRL_SET_CLIENT_CERT_TYPES,clistlen,(char *)clist) +# define SSL_get_peer_signature_nid(s, pn) \ + SSL_ctrl(s,SSL_CTRL_GET_PEER_SIGNATURE_NID,0,pn) +# define SSL_get_server_tmp_key(s, pk) \ + SSL_ctrl(s,SSL_CTRL_GET_SERVER_TMP_KEY,0,pk) +# define SSL_get0_raw_cipherlist(s, plst) \ + SSL_ctrl(s,SSL_CTRL_GET_RAW_CIPHERLIST,0,(char *)plst) +# define SSL_get0_ec_point_formats(s, plst) \ + SSL_ctrl(s,SSL_CTRL_GET_EC_POINT_FORMATS,0,(char *)plst) +# ifndef OPENSSL_NO_BIO +BIO_METHOD *BIO_f_ssl(void); +BIO *BIO_new_ssl(SSL_CTX *ctx, int client); +BIO *BIO_new_ssl_connect(SSL_CTX *ctx); +BIO *BIO_new_buffer_ssl_connect(SSL_CTX *ctx); +int BIO_ssl_copy_session_id(BIO *to, BIO *from); +void BIO_ssl_shutdown(BIO *ssl_bio); + +# endif + +int SSL_CTX_set_cipher_list(SSL_CTX *, const char *str); +SSL_CTX *SSL_CTX_new(const SSL_METHOD *meth); +void SSL_CTX_free(SSL_CTX *); +long SSL_CTX_set_timeout(SSL_CTX *ctx, long t); +long SSL_CTX_get_timeout(const SSL_CTX *ctx); +X509_STORE *SSL_CTX_get_cert_store(const SSL_CTX *); +void SSL_CTX_set_cert_store(SSL_CTX *, X509_STORE *); +int SSL_want(const SSL *s); +int SSL_clear(SSL *s); + +void SSL_CTX_flush_sessions(SSL_CTX *ctx, long tm); + +const SSL_CIPHER *SSL_get_current_cipher(const SSL *s); +int SSL_CIPHER_get_bits(const SSL_CIPHER *c, int *alg_bits); +char *SSL_CIPHER_get_version(const SSL_CIPHER *c); +const char *SSL_CIPHER_get_name(const SSL_CIPHER *c); +unsigned long SSL_CIPHER_get_id(const SSL_CIPHER *c); + +int SSL_get_fd(const SSL *s); +int SSL_get_rfd(const SSL *s); +int SSL_get_wfd(const SSL *s); +const char *SSL_get_cipher_list(const SSL *s, int n); +char *SSL_get_shared_ciphers(const SSL *s, char *buf, int len); +int SSL_get_read_ahead(const SSL *s); +int SSL_pending(const SSL *s); +# ifndef OPENSSL_NO_SOCK +int SSL_set_fd(SSL *s, int fd); +int SSL_set_rfd(SSL *s, int fd); +int SSL_set_wfd(SSL *s, int fd); +# endif +# ifndef OPENSSL_NO_BIO +void SSL_set_bio(SSL *s, BIO *rbio, BIO *wbio); +BIO *SSL_get_rbio(const SSL *s); +BIO *SSL_get_wbio(const SSL *s); +# endif +int SSL_set_cipher_list(SSL *s, const char *str); +void SSL_set_read_ahead(SSL *s, int yes); +int SSL_get_verify_mode(const SSL *s); +int SSL_get_verify_depth(const SSL *s); +int (*SSL_get_verify_callback(const SSL *s)) (int, X509_STORE_CTX *); +void SSL_set_verify(SSL *s, int mode, + int (*callback) (int ok, X509_STORE_CTX *ctx)); +void SSL_set_verify_depth(SSL *s, int depth); +void SSL_set_cert_cb(SSL *s, int (*cb) (SSL *ssl, void *arg), void *arg); +# ifndef OPENSSL_NO_RSA +int SSL_use_RSAPrivateKey(SSL *ssl, RSA *rsa); +# endif +int SSL_use_RSAPrivateKey_ASN1(SSL *ssl, unsigned char *d, long len); +int SSL_use_PrivateKey(SSL *ssl, EVP_PKEY *pkey); +int SSL_use_PrivateKey_ASN1(int pk, SSL *ssl, const unsigned char *d, + long len); +int SSL_use_certificate(SSL *ssl, X509 *x); +int SSL_use_certificate_ASN1(SSL *ssl, const unsigned char *d, int len); + +# ifndef OPENSSL_NO_TLSEXT +/* Set serverinfo data for the current active cert. */ +int SSL_CTX_use_serverinfo(SSL_CTX *ctx, const unsigned char *serverinfo, + size_t serverinfo_length); +# ifndef OPENSSL_NO_STDIO +int SSL_CTX_use_serverinfo_file(SSL_CTX *ctx, const char *file); +# endif /* NO_STDIO */ + +# endif + +# ifndef OPENSSL_NO_STDIO +int SSL_use_RSAPrivateKey_file(SSL *ssl, const char *file, int type); +int SSL_use_PrivateKey_file(SSL *ssl, const char *file, int type); +int SSL_use_certificate_file(SSL *ssl, const char *file, int type); +int SSL_CTX_use_RSAPrivateKey_file(SSL_CTX *ctx, const char *file, int type); +int SSL_CTX_use_PrivateKey_file(SSL_CTX *ctx, const char *file, int type); +int SSL_CTX_use_certificate_file(SSL_CTX *ctx, const char *file, int type); +/* PEM type */ +int SSL_CTX_use_certificate_chain_file(SSL_CTX *ctx, const char *file); +STACK_OF(X509_NAME) *SSL_load_client_CA_file(const char *file); +int SSL_add_file_cert_subjects_to_stack(STACK_OF(X509_NAME) *stackCAs, + const char *file); +# ifndef OPENSSL_SYS_VMS +/* XXXXX: Better scheme needed! [was: #ifndef MAC_OS_pre_X] */ +# ifndef OPENSSL_SYS_MACINTOSH_CLASSIC +int SSL_add_dir_cert_subjects_to_stack(STACK_OF(X509_NAME) *stackCAs, + const char *dir); +# endif +# endif + +# endif + +void SSL_load_error_strings(void); +const char *SSL_state_string(const SSL *s); +const char *SSL_rstate_string(const SSL *s); +const char *SSL_state_string_long(const SSL *s); +const char *SSL_rstate_string_long(const SSL *s); +long SSL_SESSION_get_time(const SSL_SESSION *s); +long SSL_SESSION_set_time(SSL_SESSION *s, long t); +long SSL_SESSION_get_timeout(const SSL_SESSION *s); +long SSL_SESSION_set_timeout(SSL_SESSION *s, long t); +void SSL_copy_session_id(SSL *to, const SSL *from); +X509 *SSL_SESSION_get0_peer(SSL_SESSION *s); +int SSL_SESSION_set1_id_context(SSL_SESSION *s, const unsigned char *sid_ctx, + unsigned int sid_ctx_len); + +SSL_SESSION *SSL_SESSION_new(void); +const unsigned char *SSL_SESSION_get_id(const SSL_SESSION *s, + unsigned int *len); +unsigned int SSL_SESSION_get_compress_id(const SSL_SESSION *s); +# ifndef OPENSSL_NO_FP_API +int SSL_SESSION_print_fp(FILE *fp, const SSL_SESSION *ses); +# endif +# ifndef OPENSSL_NO_BIO +int SSL_SESSION_print(BIO *fp, const SSL_SESSION *ses); +# endif +void SSL_SESSION_free(SSL_SESSION *ses); +int i2d_SSL_SESSION(SSL_SESSION *in, unsigned char **pp); +int SSL_set_session(SSL *to, SSL_SESSION *session); +int SSL_CTX_add_session(SSL_CTX *s, SSL_SESSION *c); +int SSL_CTX_remove_session(SSL_CTX *, SSL_SESSION *c); +int SSL_CTX_set_generate_session_id(SSL_CTX *, GEN_SESSION_CB); +int SSL_set_generate_session_id(SSL *, GEN_SESSION_CB); +int SSL_has_matching_session_id(const SSL *ssl, const unsigned char *id, + unsigned int id_len); +SSL_SESSION *d2i_SSL_SESSION(SSL_SESSION **a, const unsigned char **pp, + long length); + +# ifdef HEADER_X509_H +X509 *SSL_get_peer_certificate(const SSL *s); +# endif + +STACK_OF(X509) *SSL_get_peer_cert_chain(const SSL *s); + +int SSL_CTX_get_verify_mode(const SSL_CTX *ctx); +int SSL_CTX_get_verify_depth(const SSL_CTX *ctx); +int (*SSL_CTX_get_verify_callback(const SSL_CTX *ctx)) (int, + X509_STORE_CTX *); +void SSL_CTX_set_verify(SSL_CTX *ctx, int mode, + int (*callback) (int, X509_STORE_CTX *)); +void SSL_CTX_set_verify_depth(SSL_CTX *ctx, int depth); +void SSL_CTX_set_cert_verify_callback(SSL_CTX *ctx, + int (*cb) (X509_STORE_CTX *, void *), + void *arg); +void SSL_CTX_set_cert_cb(SSL_CTX *c, int (*cb) (SSL *ssl, void *arg), + void *arg); +# ifndef OPENSSL_NO_RSA +int SSL_CTX_use_RSAPrivateKey(SSL_CTX *ctx, RSA *rsa); +# endif +int SSL_CTX_use_RSAPrivateKey_ASN1(SSL_CTX *ctx, const unsigned char *d, + long len); +int SSL_CTX_use_PrivateKey(SSL_CTX *ctx, EVP_PKEY *pkey); +int SSL_CTX_use_PrivateKey_ASN1(int pk, SSL_CTX *ctx, + const unsigned char *d, long len); +int SSL_CTX_use_certificate(SSL_CTX *ctx, X509 *x); +int SSL_CTX_use_certificate_ASN1(SSL_CTX *ctx, int len, + const unsigned char *d); + +void SSL_CTX_set_default_passwd_cb(SSL_CTX *ctx, pem_password_cb *cb); +void SSL_CTX_set_default_passwd_cb_userdata(SSL_CTX *ctx, void *u); + +int SSL_CTX_check_private_key(const SSL_CTX *ctx); +int SSL_check_private_key(const SSL *ctx); + +int SSL_CTX_set_session_id_context(SSL_CTX *ctx, const unsigned char *sid_ctx, + unsigned int sid_ctx_len); + +SSL *SSL_new(SSL_CTX *ctx); +int SSL_set_session_id_context(SSL *ssl, const unsigned char *sid_ctx, + unsigned int sid_ctx_len); + +int SSL_CTX_set_purpose(SSL_CTX *s, int purpose); +int SSL_set_purpose(SSL *s, int purpose); +int SSL_CTX_set_trust(SSL_CTX *s, int trust); +int SSL_set_trust(SSL *s, int trust); + +int SSL_CTX_set1_param(SSL_CTX *ctx, X509_VERIFY_PARAM *vpm); +int SSL_set1_param(SSL *ssl, X509_VERIFY_PARAM *vpm); + +X509_VERIFY_PARAM *SSL_CTX_get0_param(SSL_CTX *ctx); +X509_VERIFY_PARAM *SSL_get0_param(SSL *ssl); + +# ifndef OPENSSL_NO_SRP +int SSL_CTX_set_srp_username(SSL_CTX *ctx, char *name); +int SSL_CTX_set_srp_password(SSL_CTX *ctx, char *password); +int SSL_CTX_set_srp_strength(SSL_CTX *ctx, int strength); +int SSL_CTX_set_srp_client_pwd_callback(SSL_CTX *ctx, + char *(*cb) (SSL *, void *)); +int SSL_CTX_set_srp_verify_param_callback(SSL_CTX *ctx, + int (*cb) (SSL *, void *)); +int SSL_CTX_set_srp_username_callback(SSL_CTX *ctx, + int (*cb) (SSL *, int *, void *)); +int SSL_CTX_set_srp_cb_arg(SSL_CTX *ctx, void *arg); + +int SSL_set_srp_server_param(SSL *s, const BIGNUM *N, const BIGNUM *g, + BIGNUM *sa, BIGNUM *v, char *info); +int SSL_set_srp_server_param_pw(SSL *s, const char *user, const char *pass, + const char *grp); + +BIGNUM *SSL_get_srp_g(SSL *s); +BIGNUM *SSL_get_srp_N(SSL *s); + +char *SSL_get_srp_username(SSL *s); +char *SSL_get_srp_userinfo(SSL *s); +# endif + +void SSL_certs_clear(SSL *s); +void SSL_free(SSL *ssl); +int SSL_accept(SSL *ssl); +int SSL_connect(SSL *ssl); +int SSL_read(SSL *ssl, void *buf, int num); +int SSL_peek(SSL *ssl, void *buf, int num); +int SSL_write(SSL *ssl, const void *buf, int num); +long SSL_ctrl(SSL *ssl, int cmd, long larg, void *parg); +long SSL_callback_ctrl(SSL *, int, void (*)(void)); +long SSL_CTX_ctrl(SSL_CTX *ctx, int cmd, long larg, void *parg); +long SSL_CTX_callback_ctrl(SSL_CTX *, int, void (*)(void)); + +int SSL_get_error(const SSL *s, int ret_code); +const char *SSL_get_version(const SSL *s); + +/* This sets the 'default' SSL version that SSL_new() will create */ +int SSL_CTX_set_ssl_version(SSL_CTX *ctx, const SSL_METHOD *meth); + +# ifndef OPENSSL_NO_SSL2 +const SSL_METHOD *SSLv2_method(void); /* SSLv2 */ +const SSL_METHOD *SSLv2_server_method(void); /* SSLv2 */ +const SSL_METHOD *SSLv2_client_method(void); /* SSLv2 */ +# endif + +# ifndef OPENSSL_NO_SSL3_METHOD +const SSL_METHOD *SSLv3_method(void); /* SSLv3 */ +const SSL_METHOD *SSLv3_server_method(void); /* SSLv3 */ +const SSL_METHOD *SSLv3_client_method(void); /* SSLv3 */ +# endif + +const SSL_METHOD *SSLv23_method(void); /* Negotiate highest available SSL/TLS + * version */ +const SSL_METHOD *SSLv23_server_method(void); /* Negotiate highest available + * SSL/TLS version */ +const SSL_METHOD *SSLv23_client_method(void); /* Negotiate highest available + * SSL/TLS version */ + +const SSL_METHOD *TLSv1_method(void); /* TLSv1.0 */ +const SSL_METHOD *TLSv1_server_method(void); /* TLSv1.0 */ +const SSL_METHOD *TLSv1_client_method(void); /* TLSv1.0 */ + +const SSL_METHOD *TLSv1_1_method(void); /* TLSv1.1 */ +const SSL_METHOD *TLSv1_1_server_method(void); /* TLSv1.1 */ +const SSL_METHOD *TLSv1_1_client_method(void); /* TLSv1.1 */ + +const SSL_METHOD *TLSv1_2_method(void); /* TLSv1.2 */ +const SSL_METHOD *TLSv1_2_server_method(void); /* TLSv1.2 */ +const SSL_METHOD *TLSv1_2_client_method(void); /* TLSv1.2 */ + +const SSL_METHOD *DTLSv1_method(void); /* DTLSv1.0 */ +const SSL_METHOD *DTLSv1_server_method(void); /* DTLSv1.0 */ +const SSL_METHOD *DTLSv1_client_method(void); /* DTLSv1.0 */ + +const SSL_METHOD *DTLSv1_2_method(void); /* DTLSv1.2 */ +const SSL_METHOD *DTLSv1_2_server_method(void); /* DTLSv1.2 */ +const SSL_METHOD *DTLSv1_2_client_method(void); /* DTLSv1.2 */ + +const SSL_METHOD *DTLS_method(void); /* DTLS 1.0 and 1.2 */ +const SSL_METHOD *DTLS_server_method(void); /* DTLS 1.0 and 1.2 */ +const SSL_METHOD *DTLS_client_method(void); /* DTLS 1.0 and 1.2 */ + +STACK_OF(SSL_CIPHER) *SSL_get_ciphers(const SSL *s); + +int SSL_do_handshake(SSL *s); +int SSL_renegotiate(SSL *s); +int SSL_renegotiate_abbreviated(SSL *s); +int SSL_renegotiate_pending(SSL *s); +int SSL_shutdown(SSL *s); + +const SSL_METHOD *SSL_CTX_get_ssl_method(SSL_CTX *ctx); +const SSL_METHOD *SSL_get_ssl_method(SSL *s); +int SSL_set_ssl_method(SSL *s, const SSL_METHOD *method); +const char *SSL_alert_type_string_long(int value); +const char *SSL_alert_type_string(int value); +const char *SSL_alert_desc_string_long(int value); +const char *SSL_alert_desc_string(int value); + +void SSL_set_client_CA_list(SSL *s, STACK_OF(X509_NAME) *name_list); +void SSL_CTX_set_client_CA_list(SSL_CTX *ctx, STACK_OF(X509_NAME) *name_list); +STACK_OF(X509_NAME) *SSL_get_client_CA_list(const SSL *s); +STACK_OF(X509_NAME) *SSL_CTX_get_client_CA_list(const SSL_CTX *s); +int SSL_add_client_CA(SSL *ssl, X509 *x); +int SSL_CTX_add_client_CA(SSL_CTX *ctx, X509 *x); + +void SSL_set_connect_state(SSL *s); +void SSL_set_accept_state(SSL *s); + +long SSL_get_default_timeout(const SSL *s); + +int SSL_library_init(void); + +char *SSL_CIPHER_description(const SSL_CIPHER *, char *buf, int size); +STACK_OF(X509_NAME) *SSL_dup_CA_list(STACK_OF(X509_NAME) *sk); + +SSL *SSL_dup(SSL *ssl); + +X509 *SSL_get_certificate(const SSL *ssl); +/* + * EVP_PKEY + */ struct evp_pkey_st *SSL_get_privatekey(const SSL *ssl); + +X509 *SSL_CTX_get0_certificate(const SSL_CTX *ctx); +EVP_PKEY *SSL_CTX_get0_privatekey(const SSL_CTX *ctx); + +void SSL_CTX_set_quiet_shutdown(SSL_CTX *ctx, int mode); +int SSL_CTX_get_quiet_shutdown(const SSL_CTX *ctx); +void SSL_set_quiet_shutdown(SSL *ssl, int mode); +int SSL_get_quiet_shutdown(const SSL *ssl); +void SSL_set_shutdown(SSL *ssl, int mode); +int SSL_get_shutdown(const SSL *ssl); +int SSL_version(const SSL *ssl); +int SSL_CTX_set_default_verify_paths(SSL_CTX *ctx); +int SSL_CTX_load_verify_locations(SSL_CTX *ctx, const char *CAfile, + const char *CApath); +# define SSL_get0_session SSL_get_session/* just peek at pointer */ +SSL_SESSION *SSL_get_session(const SSL *ssl); +SSL_SESSION *SSL_get1_session(SSL *ssl); /* obtain a reference count */ +SSL_CTX *SSL_get_SSL_CTX(const SSL *ssl); +SSL_CTX *SSL_set_SSL_CTX(SSL *ssl, SSL_CTX *ctx); +void SSL_set_info_callback(SSL *ssl, + void (*cb) (const SSL *ssl, int type, int val)); +void (*SSL_get_info_callback(const SSL *ssl)) (const SSL *ssl, int type, + int val); +int SSL_state(const SSL *ssl); +void SSL_set_state(SSL *ssl, int state); + +void SSL_set_verify_result(SSL *ssl, long v); +long SSL_get_verify_result(const SSL *ssl); + +int SSL_set_ex_data(SSL *ssl, int idx, void *data); +void *SSL_get_ex_data(const SSL *ssl, int idx); +int SSL_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new *new_func, + CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func); + +int SSL_SESSION_set_ex_data(SSL_SESSION *ss, int idx, void *data); +void *SSL_SESSION_get_ex_data(const SSL_SESSION *ss, int idx); +int SSL_SESSION_get_ex_new_index(long argl, void *argp, + CRYPTO_EX_new *new_func, + CRYPTO_EX_dup *dup_func, + CRYPTO_EX_free *free_func); + +int SSL_CTX_set_ex_data(SSL_CTX *ssl, int idx, void *data); +void *SSL_CTX_get_ex_data(const SSL_CTX *ssl, int idx); +int SSL_CTX_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new *new_func, + CRYPTO_EX_dup *dup_func, + CRYPTO_EX_free *free_func); + +int SSL_get_ex_data_X509_STORE_CTX_idx(void); + +# define SSL_CTX_sess_set_cache_size(ctx,t) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_SESS_CACHE_SIZE,t,NULL) +# define SSL_CTX_sess_get_cache_size(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_GET_SESS_CACHE_SIZE,0,NULL) +# define SSL_CTX_set_session_cache_mode(ctx,m) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_SESS_CACHE_MODE,m,NULL) +# define SSL_CTX_get_session_cache_mode(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_GET_SESS_CACHE_MODE,0,NULL) + +# define SSL_CTX_get_default_read_ahead(ctx) SSL_CTX_get_read_ahead(ctx) +# define SSL_CTX_set_default_read_ahead(ctx,m) SSL_CTX_set_read_ahead(ctx,m) +# define SSL_CTX_get_read_ahead(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_GET_READ_AHEAD,0,NULL) +# define SSL_CTX_set_read_ahead(ctx,m) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_READ_AHEAD,m,NULL) +# define SSL_CTX_get_max_cert_list(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_GET_MAX_CERT_LIST,0,NULL) +# define SSL_CTX_set_max_cert_list(ctx,m) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_MAX_CERT_LIST,m,NULL) +# define SSL_get_max_cert_list(ssl) \ + SSL_ctrl(ssl,SSL_CTRL_GET_MAX_CERT_LIST,0,NULL) +# define SSL_set_max_cert_list(ssl,m) \ + SSL_ctrl(ssl,SSL_CTRL_SET_MAX_CERT_LIST,m,NULL) + +# define SSL_CTX_set_max_send_fragment(ctx,m) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_MAX_SEND_FRAGMENT,m,NULL) +# define SSL_set_max_send_fragment(ssl,m) \ + SSL_ctrl(ssl,SSL_CTRL_SET_MAX_SEND_FRAGMENT,m,NULL) + + /* NB: the keylength is only applicable when is_export is true */ +# ifndef OPENSSL_NO_RSA +void SSL_CTX_set_tmp_rsa_callback(SSL_CTX *ctx, + RSA *(*cb) (SSL *ssl, int is_export, + int keylength)); + +void SSL_set_tmp_rsa_callback(SSL *ssl, + RSA *(*cb) (SSL *ssl, int is_export, + int keylength)); +# endif +# ifndef OPENSSL_NO_DH +void SSL_CTX_set_tmp_dh_callback(SSL_CTX *ctx, + DH *(*dh) (SSL *ssl, int is_export, + int keylength)); +void SSL_set_tmp_dh_callback(SSL *ssl, + DH *(*dh) (SSL *ssl, int is_export, + int keylength)); +# endif +# ifndef OPENSSL_NO_ECDH +void SSL_CTX_set_tmp_ecdh_callback(SSL_CTX *ctx, + EC_KEY *(*ecdh) (SSL *ssl, int is_export, + int keylength)); +void SSL_set_tmp_ecdh_callback(SSL *ssl, + EC_KEY *(*ecdh) (SSL *ssl, int is_export, + int keylength)); +# endif + +# ifndef OPENSSL_NO_COMP +const COMP_METHOD *SSL_get_current_compression(SSL *s); +const COMP_METHOD *SSL_get_current_expansion(SSL *s); +const char *SSL_COMP_get_name(const COMP_METHOD *comp); +STACK_OF(SSL_COMP) *SSL_COMP_get_compression_methods(void); +STACK_OF(SSL_COMP) *SSL_COMP_set0_compression_methods(STACK_OF(SSL_COMP) + *meths); +void SSL_COMP_free_compression_methods(void); +int SSL_COMP_add_compression_method(int id, COMP_METHOD *cm); +# else +const void *SSL_get_current_compression(SSL *s); +const void *SSL_get_current_expansion(SSL *s); +const char *SSL_COMP_get_name(const void *comp); +void *SSL_COMP_get_compression_methods(void); +int SSL_COMP_add_compression_method(int id, void *cm); +# endif + +const SSL_CIPHER *SSL_CIPHER_find(SSL *ssl, const unsigned char *ptr); + +/* TLS extensions functions */ +int SSL_set_session_ticket_ext(SSL *s, void *ext_data, int ext_len); + +int SSL_set_session_ticket_ext_cb(SSL *s, tls_session_ticket_ext_cb_fn cb, + void *arg); + +/* Pre-shared secret session resumption functions */ +int SSL_set_session_secret_cb(SSL *s, + tls_session_secret_cb_fn tls_session_secret_cb, + void *arg); + +void SSL_set_debug(SSL *s, int debug); +int SSL_cache_hit(SSL *s); +int SSL_is_server(SSL *s); + +SSL_CONF_CTX *SSL_CONF_CTX_new(void); +int SSL_CONF_CTX_finish(SSL_CONF_CTX *cctx); +void SSL_CONF_CTX_free(SSL_CONF_CTX *cctx); +unsigned int SSL_CONF_CTX_set_flags(SSL_CONF_CTX *cctx, unsigned int flags); +unsigned int SSL_CONF_CTX_clear_flags(SSL_CONF_CTX *cctx, unsigned int flags); +int SSL_CONF_CTX_set1_prefix(SSL_CONF_CTX *cctx, const char *pre); + +void SSL_CONF_CTX_set_ssl(SSL_CONF_CTX *cctx, SSL *ssl); +void SSL_CONF_CTX_set_ssl_ctx(SSL_CONF_CTX *cctx, SSL_CTX *ctx); + +int SSL_CONF_cmd(SSL_CONF_CTX *cctx, const char *cmd, const char *value); +int SSL_CONF_cmd_argv(SSL_CONF_CTX *cctx, int *pargc, char ***pargv); +int SSL_CONF_cmd_value_type(SSL_CONF_CTX *cctx, const char *cmd); + +# ifndef OPENSSL_NO_SSL_TRACE +void SSL_trace(int write_p, int version, int content_type, + const void *buf, size_t len, SSL *ssl, void *arg); +const char *SSL_CIPHER_standard_name(const SSL_CIPHER *c); +# endif + +# ifndef OPENSSL_NO_UNIT_TEST +const struct openssl_ssl_test_functions *SSL_test_functions(void); +# endif + +/* BEGIN ERROR CODES */ +/* + * The following lines are auto generated by the script mkerr.pl. Any changes + * made after this point may be overwritten when the script is next run. + */ +void ERR_load_SSL_strings(void); + +/* Error codes for the SSL functions. */ + +/* Function codes. */ +# define SSL_F_CHECK_SUITEB_CIPHER_LIST 331 +# define SSL_F_CLIENT_CERTIFICATE 100 +# define SSL_F_CLIENT_FINISHED 167 +# define SSL_F_CLIENT_HELLO 101 +# define SSL_F_CLIENT_MASTER_KEY 102 +# define SSL_F_D2I_SSL_SESSION 103 +# define SSL_F_DO_DTLS1_WRITE 245 +# define SSL_F_DO_SSL3_WRITE 104 +# define SSL_F_DTLS1_ACCEPT 246 +# define SSL_F_DTLS1_ADD_CERT_TO_BUF 295 +# define SSL_F_DTLS1_BUFFER_RECORD 247 +# define SSL_F_DTLS1_CHECK_TIMEOUT_NUM 316 +# define SSL_F_DTLS1_CLIENT_HELLO 248 +# define SSL_F_DTLS1_CONNECT 249 +# define SSL_F_DTLS1_ENC 250 +# define SSL_F_DTLS1_GET_HELLO_VERIFY 251 +# define SSL_F_DTLS1_GET_MESSAGE 252 +# define SSL_F_DTLS1_GET_MESSAGE_FRAGMENT 253 +# define SSL_F_DTLS1_GET_RECORD 254 +# define SSL_F_DTLS1_HANDLE_TIMEOUT 297 +# define SSL_F_DTLS1_HEARTBEAT 305 +# define SSL_F_DTLS1_OUTPUT_CERT_CHAIN 255 +# define SSL_F_DTLS1_PREPROCESS_FRAGMENT 288 +# define SSL_F_DTLS1_PROCESS_OUT_OF_SEQ_MESSAGE 256 +# define SSL_F_DTLS1_PROCESS_RECORD 257 +# define SSL_F_DTLS1_READ_BYTES 258 +# define SSL_F_DTLS1_READ_FAILED 259 +# define SSL_F_DTLS1_SEND_CERTIFICATE_REQUEST 260 +# define SSL_F_DTLS1_SEND_CLIENT_CERTIFICATE 261 +# define SSL_F_DTLS1_SEND_CLIENT_KEY_EXCHANGE 262 +# define SSL_F_DTLS1_SEND_CLIENT_VERIFY 263 +# define SSL_F_DTLS1_SEND_HELLO_VERIFY_REQUEST 264 +# define SSL_F_DTLS1_SEND_SERVER_CERTIFICATE 265 +# define SSL_F_DTLS1_SEND_SERVER_HELLO 266 +# define SSL_F_DTLS1_SEND_SERVER_KEY_EXCHANGE 267 +# define SSL_F_DTLS1_WRITE_APP_DATA_BYTES 268 +# define SSL_F_GET_CLIENT_FINISHED 105 +# define SSL_F_GET_CLIENT_HELLO 106 +# define SSL_F_GET_CLIENT_MASTER_KEY 107 +# define SSL_F_GET_SERVER_FINISHED 108 +# define SSL_F_GET_SERVER_HELLO 109 +# define SSL_F_GET_SERVER_VERIFY 110 +# define SSL_F_I2D_SSL_SESSION 111 +# define SSL_F_READ_N 112 +# define SSL_F_REQUEST_CERTIFICATE 113 +# define SSL_F_SERVER_FINISH 239 +# define SSL_F_SERVER_HELLO 114 +# define SSL_F_SERVER_VERIFY 240 +# define SSL_F_SSL23_ACCEPT 115 +# define SSL_F_SSL23_CLIENT_HELLO 116 +# define SSL_F_SSL23_CONNECT 117 +# define SSL_F_SSL23_GET_CLIENT_HELLO 118 +# define SSL_F_SSL23_GET_SERVER_HELLO 119 +# define SSL_F_SSL23_PEEK 237 +# define SSL_F_SSL23_READ 120 +# define SSL_F_SSL23_WRITE 121 +# define SSL_F_SSL2_ACCEPT 122 +# define SSL_F_SSL2_CONNECT 123 +# define SSL_F_SSL2_ENC_INIT 124 +# define SSL_F_SSL2_GENERATE_KEY_MATERIAL 241 +# define SSL_F_SSL2_PEEK 234 +# define SSL_F_SSL2_READ 125 +# define SSL_F_SSL2_READ_INTERNAL 236 +# define SSL_F_SSL2_SET_CERTIFICATE 126 +# define SSL_F_SSL2_WRITE 127 +# define SSL_F_SSL3_ACCEPT 128 +# define SSL_F_SSL3_ADD_CERT_TO_BUF 296 +# define SSL_F_SSL3_CALLBACK_CTRL 233 +# define SSL_F_SSL3_CHANGE_CIPHER_STATE 129 +# define SSL_F_SSL3_CHECK_CERT_AND_ALGORITHM 130 +# define SSL_F_SSL3_CHECK_CLIENT_HELLO 304 +# define SSL_F_SSL3_CLIENT_HELLO 131 +# define SSL_F_SSL3_CONNECT 132 +# define SSL_F_SSL3_CTRL 213 +# define SSL_F_SSL3_CTX_CTRL 133 +# define SSL_F_SSL3_DIGEST_CACHED_RECORDS 293 +# define SSL_F_SSL3_DO_CHANGE_CIPHER_SPEC 292 +# define SSL_F_SSL3_ENC 134 +# define SSL_F_SSL3_GENERATE_KEY_BLOCK 238 +# define SSL_F_SSL3_GET_CERTIFICATE_REQUEST 135 +# define SSL_F_SSL3_GET_CERT_STATUS 289 +# define SSL_F_SSL3_GET_CERT_VERIFY 136 +# define SSL_F_SSL3_GET_CLIENT_CERTIFICATE 137 +# define SSL_F_SSL3_GET_CLIENT_HELLO 138 +# define SSL_F_SSL3_GET_CLIENT_KEY_EXCHANGE 139 +# define SSL_F_SSL3_GET_FINISHED 140 +# define SSL_F_SSL3_GET_KEY_EXCHANGE 141 +# define SSL_F_SSL3_GET_MESSAGE 142 +# define SSL_F_SSL3_GET_NEW_SESSION_TICKET 283 +# define SSL_F_SSL3_GET_NEXT_PROTO 306 +# define SSL_F_SSL3_GET_RECORD 143 +# define SSL_F_SSL3_GET_SERVER_CERTIFICATE 144 +# define SSL_F_SSL3_GET_SERVER_DONE 145 +# define SSL_F_SSL3_GET_SERVER_HELLO 146 +# define SSL_F_SSL3_HANDSHAKE_MAC 285 +# define SSL_F_SSL3_NEW_SESSION_TICKET 287 +# define SSL_F_SSL3_OUTPUT_CERT_CHAIN 147 +# define SSL_F_SSL3_PEEK 235 +# define SSL_F_SSL3_READ_BYTES 148 +# define SSL_F_SSL3_READ_N 149 +# define SSL_F_SSL3_SEND_CERTIFICATE_REQUEST 150 +# define SSL_F_SSL3_SEND_CLIENT_CERTIFICATE 151 +# define SSL_F_SSL3_SEND_CLIENT_KEY_EXCHANGE 152 +# define SSL_F_SSL3_SEND_CLIENT_VERIFY 153 +# define SSL_F_SSL3_SEND_SERVER_CERTIFICATE 154 +# define SSL_F_SSL3_SEND_SERVER_HELLO 242 +# define SSL_F_SSL3_SEND_SERVER_KEY_EXCHANGE 155 +# define SSL_F_SSL3_SETUP_KEY_BLOCK 157 +# define SSL_F_SSL3_SETUP_READ_BUFFER 156 +# define SSL_F_SSL3_SETUP_WRITE_BUFFER 291 +# define SSL_F_SSL3_WRITE_BYTES 158 +# define SSL_F_SSL3_WRITE_PENDING 159 +# define SSL_F_SSL_ADD_CERT_CHAIN 318 +# define SSL_F_SSL_ADD_CERT_TO_BUF 319 +# define SSL_F_SSL_ADD_CLIENTHELLO_RENEGOTIATE_EXT 298 +# define SSL_F_SSL_ADD_CLIENTHELLO_TLSEXT 277 +# define SSL_F_SSL_ADD_CLIENTHELLO_USE_SRTP_EXT 307 +# define SSL_F_SSL_ADD_DIR_CERT_SUBJECTS_TO_STACK 215 +# define SSL_F_SSL_ADD_FILE_CERT_SUBJECTS_TO_STACK 216 +# define SSL_F_SSL_ADD_SERVERHELLO_RENEGOTIATE_EXT 299 +# define SSL_F_SSL_ADD_SERVERHELLO_TLSEXT 278 +# define SSL_F_SSL_ADD_SERVERHELLO_USE_SRTP_EXT 308 +# define SSL_F_SSL_BAD_METHOD 160 +# define SSL_F_SSL_BUILD_CERT_CHAIN 332 +# define SSL_F_SSL_BYTES_TO_CIPHER_LIST 161 +# define SSL_F_SSL_CERT_DUP 221 +# define SSL_F_SSL_CERT_INST 222 +# define SSL_F_SSL_CERT_INSTANTIATE 214 +# define SSL_F_SSL_CERT_NEW 162 +# define SSL_F_SSL_CHECK_PRIVATE_KEY 163 +# define SSL_F_SSL_CHECK_SERVERHELLO_TLSEXT 280 +# define SSL_F_SSL_CHECK_SRVR_ECC_CERT_AND_ALG 279 +# define SSL_F_SSL_CIPHER_PROCESS_RULESTR 230 +# define SSL_F_SSL_CIPHER_STRENGTH_SORT 231 +# define SSL_F_SSL_CLEAR 164 +# define SSL_F_SSL_COMP_ADD_COMPRESSION_METHOD 165 +# define SSL_F_SSL_CONF_CMD 334 +# define SSL_F_SSL_CREATE_CIPHER_LIST 166 +# define SSL_F_SSL_CTRL 232 +# define SSL_F_SSL_CTX_CHECK_PRIVATE_KEY 168 +# define SSL_F_SSL_CTX_MAKE_PROFILES 309 +# define SSL_F_SSL_CTX_NEW 169 +# define SSL_F_SSL_CTX_SET_CIPHER_LIST 269 +# define SSL_F_SSL_CTX_SET_CLIENT_CERT_ENGINE 290 +# define SSL_F_SSL_CTX_SET_PURPOSE 226 +# define SSL_F_SSL_CTX_SET_SESSION_ID_CONTEXT 219 +# define SSL_F_SSL_CTX_SET_SSL_VERSION 170 +# define SSL_F_SSL_CTX_SET_TRUST 229 +# define SSL_F_SSL_CTX_USE_CERTIFICATE 171 +# define SSL_F_SSL_CTX_USE_CERTIFICATE_ASN1 172 +# define SSL_F_SSL_CTX_USE_CERTIFICATE_CHAIN_FILE 220 +# define SSL_F_SSL_CTX_USE_CERTIFICATE_FILE 173 +# define SSL_F_SSL_CTX_USE_PRIVATEKEY 174 +# define SSL_F_SSL_CTX_USE_PRIVATEKEY_ASN1 175 +# define SSL_F_SSL_CTX_USE_PRIVATEKEY_FILE 176 +# define SSL_F_SSL_CTX_USE_PSK_IDENTITY_HINT 272 +# define SSL_F_SSL_CTX_USE_RSAPRIVATEKEY 177 +# define SSL_F_SSL_CTX_USE_RSAPRIVATEKEY_ASN1 178 +# define SSL_F_SSL_CTX_USE_RSAPRIVATEKEY_FILE 179 +# define SSL_F_SSL_CTX_USE_SERVERINFO 336 +# define SSL_F_SSL_CTX_USE_SERVERINFO_FILE 337 +# define SSL_F_SSL_DO_HANDSHAKE 180 +# define SSL_F_SSL_GET_NEW_SESSION 181 +# define SSL_F_SSL_GET_PREV_SESSION 217 +# define SSL_F_SSL_GET_SERVER_CERT_INDEX 322 +# define SSL_F_SSL_GET_SERVER_SEND_CERT 182 +# define SSL_F_SSL_GET_SERVER_SEND_PKEY 317 +# define SSL_F_SSL_GET_SIGN_PKEY 183 +# define SSL_F_SSL_INIT_WBIO_BUFFER 184 +# define SSL_F_SSL_LOAD_CLIENT_CA_FILE 185 +# define SSL_F_SSL_NEW 186 +# define SSL_F_SSL_PARSE_CLIENTHELLO_RENEGOTIATE_EXT 300 +# define SSL_F_SSL_PARSE_CLIENTHELLO_TLSEXT 302 +# define SSL_F_SSL_PARSE_CLIENTHELLO_USE_SRTP_EXT 310 +# define SSL_F_SSL_PARSE_SERVERHELLO_RENEGOTIATE_EXT 301 +# define SSL_F_SSL_PARSE_SERVERHELLO_TLSEXT 303 +# define SSL_F_SSL_PARSE_SERVERHELLO_USE_SRTP_EXT 311 +# define SSL_F_SSL_PEEK 270 +# define SSL_F_SSL_PREPARE_CLIENTHELLO_TLSEXT 281 +# define SSL_F_SSL_PREPARE_SERVERHELLO_TLSEXT 282 +# define SSL_F_SSL_READ 223 +# define SSL_F_SSL_RSA_PRIVATE_DECRYPT 187 +# define SSL_F_SSL_RSA_PUBLIC_ENCRYPT 188 +# define SSL_F_SSL_SCAN_CLIENTHELLO_TLSEXT 320 +# define SSL_F_SSL_SCAN_SERVERHELLO_TLSEXT 321 +# define SSL_F_SSL_SESSION_NEW 189 +# define SSL_F_SSL_SESSION_PRINT_FP 190 +# define SSL_F_SSL_SESSION_SET1_ID_CONTEXT 312 +# define SSL_F_SSL_SESS_CERT_NEW 225 +# define SSL_F_SSL_SET_CERT 191 +# define SSL_F_SSL_SET_CIPHER_LIST 271 +# define SSL_F_SSL_SET_FD 192 +# define SSL_F_SSL_SET_PKEY 193 +# define SSL_F_SSL_SET_PURPOSE 227 +# define SSL_F_SSL_SET_RFD 194 +# define SSL_F_SSL_SET_SESSION 195 +# define SSL_F_SSL_SET_SESSION_ID_CONTEXT 218 +# define SSL_F_SSL_SET_SESSION_TICKET_EXT 294 +# define SSL_F_SSL_SET_TRUST 228 +# define SSL_F_SSL_SET_WFD 196 +# define SSL_F_SSL_SHUTDOWN 224 +# define SSL_F_SSL_SRP_CTX_INIT 313 +# define SSL_F_SSL_UNDEFINED_CONST_FUNCTION 243 +# define SSL_F_SSL_UNDEFINED_FUNCTION 197 +# define SSL_F_SSL_UNDEFINED_VOID_FUNCTION 244 +# define SSL_F_SSL_USE_CERTIFICATE 198 +# define SSL_F_SSL_USE_CERTIFICATE_ASN1 199 +# define SSL_F_SSL_USE_CERTIFICATE_FILE 200 +# define SSL_F_SSL_USE_PRIVATEKEY 201 +# define SSL_F_SSL_USE_PRIVATEKEY_ASN1 202 +# define SSL_F_SSL_USE_PRIVATEKEY_FILE 203 +# define SSL_F_SSL_USE_PSK_IDENTITY_HINT 273 +# define SSL_F_SSL_USE_RSAPRIVATEKEY 204 +# define SSL_F_SSL_USE_RSAPRIVATEKEY_ASN1 205 +# define SSL_F_SSL_USE_RSAPRIVATEKEY_FILE 206 +# define SSL_F_SSL_VERIFY_CERT_CHAIN 207 +# define SSL_F_SSL_WRITE 208 +# define SSL_F_TLS12_CHECK_PEER_SIGALG 333 +# define SSL_F_TLS1_CERT_VERIFY_MAC 286 +# define SSL_F_TLS1_CHANGE_CIPHER_STATE 209 +# define SSL_F_TLS1_CHECK_SERVERHELLO_TLSEXT 274 +# define SSL_F_TLS1_ENC 210 +# define SSL_F_TLS1_EXPORT_KEYING_MATERIAL 314 +# define SSL_F_TLS1_GET_CURVELIST 338 +# define SSL_F_TLS1_HEARTBEAT 315 +# define SSL_F_TLS1_PREPARE_CLIENTHELLO_TLSEXT 275 +# define SSL_F_TLS1_PREPARE_SERVERHELLO_TLSEXT 276 +# define SSL_F_TLS1_PRF 284 +# define SSL_F_TLS1_SETUP_KEY_BLOCK 211 +# define SSL_F_TLS1_SET_SERVER_SIGALGS 335 +# define SSL_F_WRITE_PENDING 212 + +/* Reason codes. */ +# define SSL_R_APP_DATA_IN_HANDSHAKE 100 +# define SSL_R_ATTEMPT_TO_REUSE_SESSION_IN_DIFFERENT_CONTEXT 272 +# define SSL_R_BAD_ALERT_RECORD 101 +# define SSL_R_BAD_AUTHENTICATION_TYPE 102 +# define SSL_R_BAD_CHANGE_CIPHER_SPEC 103 +# define SSL_R_BAD_CHECKSUM 104 +# define SSL_R_BAD_DATA 390 +# define SSL_R_BAD_DATA_RETURNED_BY_CALLBACK 106 +# define SSL_R_BAD_DECOMPRESSION 107 +# define SSL_R_BAD_DH_G_LENGTH 108 +# define SSL_R_BAD_DH_PUB_KEY_LENGTH 109 +# define SSL_R_BAD_DH_P_LENGTH 110 +# define SSL_R_BAD_DIGEST_LENGTH 111 +# define SSL_R_BAD_DSA_SIGNATURE 112 +# define SSL_R_BAD_ECC_CERT 304 +# define SSL_R_BAD_ECDSA_SIGNATURE 305 +# define SSL_R_BAD_ECPOINT 306 +# define SSL_R_BAD_HANDSHAKE_LENGTH 332 +# define SSL_R_BAD_HELLO_REQUEST 105 +# define SSL_R_BAD_LENGTH 271 +# define SSL_R_BAD_MAC_DECODE 113 +# define SSL_R_BAD_MAC_LENGTH 333 +# define SSL_R_BAD_MESSAGE_TYPE 114 +# define SSL_R_BAD_PACKET_LENGTH 115 +# define SSL_R_BAD_PROTOCOL_VERSION_NUMBER 116 +# define SSL_R_BAD_PSK_IDENTITY_HINT_LENGTH 316 +# define SSL_R_BAD_RESPONSE_ARGUMENT 117 +# define SSL_R_BAD_RSA_DECRYPT 118 +# define SSL_R_BAD_RSA_ENCRYPT 119 +# define SSL_R_BAD_RSA_E_LENGTH 120 +# define SSL_R_BAD_RSA_MODULUS_LENGTH 121 +# define SSL_R_BAD_RSA_SIGNATURE 122 +# define SSL_R_BAD_SIGNATURE 123 +# define SSL_R_BAD_SRP_A_LENGTH 347 +# define SSL_R_BAD_SRP_B_LENGTH 348 +# define SSL_R_BAD_SRP_G_LENGTH 349 +# define SSL_R_BAD_SRP_N_LENGTH 350 +# define SSL_R_BAD_SRP_PARAMETERS 371 +# define SSL_R_BAD_SRP_S_LENGTH 351 +# define SSL_R_BAD_SRTP_MKI_VALUE 352 +# define SSL_R_BAD_SRTP_PROTECTION_PROFILE_LIST 353 +# define SSL_R_BAD_SSL_FILETYPE 124 +# define SSL_R_BAD_SSL_SESSION_ID_LENGTH 125 +# define SSL_R_BAD_STATE 126 +# define SSL_R_BAD_VALUE 384 +# define SSL_R_BAD_WRITE_RETRY 127 +# define SSL_R_BIO_NOT_SET 128 +# define SSL_R_BLOCK_CIPHER_PAD_IS_WRONG 129 +# define SSL_R_BN_LIB 130 +# define SSL_R_CA_DN_LENGTH_MISMATCH 131 +# define SSL_R_CA_DN_TOO_LONG 132 +# define SSL_R_CCS_RECEIVED_EARLY 133 +# define SSL_R_CERTIFICATE_VERIFY_FAILED 134 +# define SSL_R_CERT_CB_ERROR 377 +# define SSL_R_CERT_LENGTH_MISMATCH 135 +# define SSL_R_CHALLENGE_IS_DIFFERENT 136 +# define SSL_R_CIPHER_CODE_WRONG_LENGTH 137 +# define SSL_R_CIPHER_OR_HASH_UNAVAILABLE 138 +# define SSL_R_CIPHER_TABLE_SRC_ERROR 139 +# define SSL_R_CLIENTHELLO_TLSEXT 226 +# define SSL_R_COMPRESSED_LENGTH_TOO_LONG 140 +# define SSL_R_COMPRESSION_DISABLED 343 +# define SSL_R_COMPRESSION_FAILURE 141 +# define SSL_R_COMPRESSION_ID_NOT_WITHIN_PRIVATE_RANGE 307 +# define SSL_R_COMPRESSION_LIBRARY_ERROR 142 +# define SSL_R_CONNECTION_ID_IS_DIFFERENT 143 +# define SSL_R_CONNECTION_TYPE_NOT_SET 144 +# define SSL_R_COOKIE_MISMATCH 308 +# define SSL_R_DATA_BETWEEN_CCS_AND_FINISHED 145 +# define SSL_R_DATA_LENGTH_TOO_LONG 146 +# define SSL_R_DECRYPTION_FAILED 147 +# define SSL_R_DECRYPTION_FAILED_OR_BAD_RECORD_MAC 281 +# define SSL_R_DH_PUBLIC_VALUE_LENGTH_IS_WRONG 148 +# define SSL_R_DIGEST_CHECK_FAILED 149 +# define SSL_R_DTLS_MESSAGE_TOO_BIG 334 +# define SSL_R_DUPLICATE_COMPRESSION_ID 309 +# define SSL_R_ECC_CERT_NOT_FOR_KEY_AGREEMENT 317 +# define SSL_R_ECC_CERT_NOT_FOR_SIGNING 318 +# define SSL_R_ECC_CERT_SHOULD_HAVE_RSA_SIGNATURE 322 +# define SSL_R_ECC_CERT_SHOULD_HAVE_SHA1_SIGNATURE 323 +# define SSL_R_ECDH_REQUIRED_FOR_SUITEB_MODE 374 +# define SSL_R_ECGROUP_TOO_LARGE_FOR_CIPHER 310 +# define SSL_R_EMPTY_SRTP_PROTECTION_PROFILE_LIST 354 +# define SSL_R_ENCRYPTED_LENGTH_TOO_LONG 150 +# define SSL_R_ERROR_GENERATING_TMP_RSA_KEY 282 +# define SSL_R_ERROR_IN_RECEIVED_CIPHER_LIST 151 +# define SSL_R_EXCESSIVE_MESSAGE_SIZE 152 +# define SSL_R_EXTRA_DATA_IN_MESSAGE 153 +# define SSL_R_GOT_A_FIN_BEFORE_A_CCS 154 +# define SSL_R_GOT_NEXT_PROTO_BEFORE_A_CCS 355 +# define SSL_R_GOT_NEXT_PROTO_WITHOUT_EXTENSION 356 +# define SSL_R_HTTPS_PROXY_REQUEST 155 +# define SSL_R_HTTP_REQUEST 156 +# define SSL_R_ILLEGAL_PADDING 283 +# define SSL_R_ILLEGAL_SUITEB_DIGEST 380 +# define SSL_R_INAPPROPRIATE_FALLBACK 373 +# define SSL_R_INCONSISTENT_COMPRESSION 340 +# define SSL_R_INVALID_CHALLENGE_LENGTH 158 +# define SSL_R_INVALID_COMMAND 280 +# define SSL_R_INVALID_COMPRESSION_ALGORITHM 341 +# define SSL_R_INVALID_NULL_CMD_NAME 385 +# define SSL_R_INVALID_PURPOSE 278 +# define SSL_R_INVALID_SERVERINFO_DATA 388 +# define SSL_R_INVALID_SRP_USERNAME 357 +# define SSL_R_INVALID_STATUS_RESPONSE 328 +# define SSL_R_INVALID_TICKET_KEYS_LENGTH 325 +# define SSL_R_INVALID_TRUST 279 +# define SSL_R_KEY_ARG_TOO_LONG 284 +# define SSL_R_KRB5 285 +# define SSL_R_KRB5_C_CC_PRINC 286 +# define SSL_R_KRB5_C_GET_CRED 287 +# define SSL_R_KRB5_C_INIT 288 +# define SSL_R_KRB5_C_MK_REQ 289 +# define SSL_R_KRB5_S_BAD_TICKET 290 +# define SSL_R_KRB5_S_INIT 291 +# define SSL_R_KRB5_S_RD_REQ 292 +# define SSL_R_KRB5_S_TKT_EXPIRED 293 +# define SSL_R_KRB5_S_TKT_NYV 294 +# define SSL_R_KRB5_S_TKT_SKEW 295 +# define SSL_R_LENGTH_MISMATCH 159 +# define SSL_R_LENGTH_TOO_SHORT 160 +# define SSL_R_LIBRARY_BUG 274 +# define SSL_R_LIBRARY_HAS_NO_CIPHERS 161 +# define SSL_R_MESSAGE_TOO_LONG 296 +# define SSL_R_MISSING_DH_DSA_CERT 162 +# define SSL_R_MISSING_DH_KEY 163 +# define SSL_R_MISSING_DH_RSA_CERT 164 +# define SSL_R_MISSING_DSA_SIGNING_CERT 165 +# define SSL_R_MISSING_ECDH_CERT 382 +# define SSL_R_MISSING_ECDSA_SIGNING_CERT 381 +# define SSL_R_MISSING_EXPORT_TMP_DH_KEY 166 +# define SSL_R_MISSING_EXPORT_TMP_RSA_KEY 167 +# define SSL_R_MISSING_RSA_CERTIFICATE 168 +# define SSL_R_MISSING_RSA_ENCRYPTING_CERT 169 +# define SSL_R_MISSING_RSA_SIGNING_CERT 170 +# define SSL_R_MISSING_SRP_PARAM 358 +# define SSL_R_MISSING_TMP_DH_KEY 171 +# define SSL_R_MISSING_TMP_ECDH_KEY 311 +# define SSL_R_MISSING_TMP_RSA_KEY 172 +# define SSL_R_MISSING_TMP_RSA_PKEY 173 +# define SSL_R_MISSING_VERIFY_MESSAGE 174 +# define SSL_R_MULTIPLE_SGC_RESTARTS 346 +# define SSL_R_NON_SSLV2_INITIAL_PACKET 175 +# define SSL_R_NO_CERTIFICATES_RETURNED 176 +# define SSL_R_NO_CERTIFICATE_ASSIGNED 177 +# define SSL_R_NO_CERTIFICATE_RETURNED 178 +# define SSL_R_NO_CERTIFICATE_SET 179 +# define SSL_R_NO_CERTIFICATE_SPECIFIED 180 +# define SSL_R_NO_CIPHERS_AVAILABLE 181 +# define SSL_R_NO_CIPHERS_PASSED 182 +# define SSL_R_NO_CIPHERS_SPECIFIED 183 +# define SSL_R_NO_CIPHER_LIST 184 +# define SSL_R_NO_CIPHER_MATCH 185 +# define SSL_R_NO_CLIENT_CERT_METHOD 331 +# define SSL_R_NO_CLIENT_CERT_RECEIVED 186 +# define SSL_R_NO_COMPRESSION_SPECIFIED 187 +# define SSL_R_NO_GOST_CERTIFICATE_SENT_BY_PEER 330 +# define SSL_R_NO_METHOD_SPECIFIED 188 +# define SSL_R_NO_PEM_EXTENSIONS 389 +# define SSL_R_NO_PRIVATEKEY 189 +# define SSL_R_NO_PRIVATE_KEY_ASSIGNED 190 +# define SSL_R_NO_PROTOCOLS_AVAILABLE 191 +# define SSL_R_NO_PUBLICKEY 192 +# define SSL_R_NO_RENEGOTIATION 339 +# define SSL_R_NO_REQUIRED_DIGEST 324 +# define SSL_R_NO_SHARED_CIPHER 193 +# define SSL_R_NO_SHARED_SIGATURE_ALGORITHMS 376 +# define SSL_R_NO_SRTP_PROFILES 359 +# define SSL_R_NO_VERIFY_CALLBACK 194 +# define SSL_R_NULL_SSL_CTX 195 +# define SSL_R_NULL_SSL_METHOD_PASSED 196 +# define SSL_R_OLD_SESSION_CIPHER_NOT_RETURNED 197 +# define SSL_R_OLD_SESSION_COMPRESSION_ALGORITHM_NOT_RETURNED 344 +# define SSL_R_ONLY_DTLS_1_2_ALLOWED_IN_SUITEB_MODE 387 +# define SSL_R_ONLY_TLS_1_2_ALLOWED_IN_SUITEB_MODE 379 +# define SSL_R_ONLY_TLS_ALLOWED_IN_FIPS_MODE 297 +# define SSL_R_OPAQUE_PRF_INPUT_TOO_LONG 327 +# define SSL_R_PACKET_LENGTH_TOO_LONG 198 +# define SSL_R_PARSE_TLSEXT 227 +# define SSL_R_PATH_TOO_LONG 270 +# define SSL_R_PEER_DID_NOT_RETURN_A_CERTIFICATE 199 +# define SSL_R_PEER_ERROR 200 +# define SSL_R_PEER_ERROR_CERTIFICATE 201 +# define SSL_R_PEER_ERROR_NO_CERTIFICATE 202 +# define SSL_R_PEER_ERROR_NO_CIPHER 203 +# define SSL_R_PEER_ERROR_UNSUPPORTED_CERTIFICATE_TYPE 204 +# define SSL_R_PEM_NAME_BAD_PREFIX 391 +# define SSL_R_PEM_NAME_TOO_SHORT 392 +# define SSL_R_PRE_MAC_LENGTH_TOO_LONG 205 +# define SSL_R_PROBLEMS_MAPPING_CIPHER_FUNCTIONS 206 +# define SSL_R_PROTOCOL_IS_SHUTDOWN 207 +# define SSL_R_PSK_IDENTITY_NOT_FOUND 223 +# define SSL_R_PSK_NO_CLIENT_CB 224 +# define SSL_R_PSK_NO_SERVER_CB 225 +# define SSL_R_PUBLIC_KEY_ENCRYPT_ERROR 208 +# define SSL_R_PUBLIC_KEY_IS_NOT_RSA 209 +# define SSL_R_PUBLIC_KEY_NOT_RSA 210 +# define SSL_R_READ_BIO_NOT_SET 211 +# define SSL_R_READ_TIMEOUT_EXPIRED 312 +# define SSL_R_READ_WRONG_PACKET_TYPE 212 +# define SSL_R_RECORD_LENGTH_MISMATCH 213 +# define SSL_R_RECORD_TOO_LARGE 214 +# define SSL_R_RECORD_TOO_SMALL 298 +# define SSL_R_RENEGOTIATE_EXT_TOO_LONG 335 +# define SSL_R_RENEGOTIATION_ENCODING_ERR 336 +# define SSL_R_RENEGOTIATION_MISMATCH 337 +# define SSL_R_REQUIRED_CIPHER_MISSING 215 +# define SSL_R_REQUIRED_COMPRESSSION_ALGORITHM_MISSING 342 +# define SSL_R_REUSE_CERT_LENGTH_NOT_ZERO 216 +# define SSL_R_REUSE_CERT_TYPE_NOT_ZERO 217 +# define SSL_R_REUSE_CIPHER_LIST_NOT_ZERO 218 +# define SSL_R_SCSV_RECEIVED_WHEN_RENEGOTIATING 345 +# define SSL_R_SERVERHELLO_TLSEXT 275 +# define SSL_R_SESSION_ID_CONTEXT_UNINITIALIZED 277 +# define SSL_R_SHORT_READ 219 +# define SSL_R_SIGNATURE_ALGORITHMS_ERROR 360 +# define SSL_R_SIGNATURE_FOR_NON_SIGNING_CERTIFICATE 220 +# define SSL_R_SRP_A_CALC 361 +# define SSL_R_SRTP_COULD_NOT_ALLOCATE_PROFILES 362 +# define SSL_R_SRTP_PROTECTION_PROFILE_LIST_TOO_LONG 363 +# define SSL_R_SRTP_UNKNOWN_PROTECTION_PROFILE 364 +# define SSL_R_SSL23_DOING_SESSION_ID_REUSE 221 +# define SSL_R_SSL2_CONNECTION_ID_TOO_LONG 299 +# define SSL_R_SSL3_EXT_INVALID_ECPOINTFORMAT 321 +# define SSL_R_SSL3_EXT_INVALID_SERVERNAME 319 +# define SSL_R_SSL3_EXT_INVALID_SERVERNAME_TYPE 320 +# define SSL_R_SSL3_SESSION_ID_TOO_LONG 300 +# define SSL_R_SSL3_SESSION_ID_TOO_SHORT 222 +# define SSL_R_SSLV3_ALERT_BAD_CERTIFICATE 1042 +# define SSL_R_SSLV3_ALERT_BAD_RECORD_MAC 1020 +# define SSL_R_SSLV3_ALERT_CERTIFICATE_EXPIRED 1045 +# define SSL_R_SSLV3_ALERT_CERTIFICATE_REVOKED 1044 +# define SSL_R_SSLV3_ALERT_CERTIFICATE_UNKNOWN 1046 +# define SSL_R_SSLV3_ALERT_DECOMPRESSION_FAILURE 1030 +# define SSL_R_SSLV3_ALERT_HANDSHAKE_FAILURE 1040 +# define SSL_R_SSLV3_ALERT_ILLEGAL_PARAMETER 1047 +# define SSL_R_SSLV3_ALERT_NO_CERTIFICATE 1041 +# define SSL_R_SSLV3_ALERT_UNEXPECTED_MESSAGE 1010 +# define SSL_R_SSLV3_ALERT_UNSUPPORTED_CERTIFICATE 1043 +# define SSL_R_SSL_CTX_HAS_NO_DEFAULT_SSL_VERSION 228 +# define SSL_R_SSL_HANDSHAKE_FAILURE 229 +# define SSL_R_SSL_LIBRARY_HAS_NO_CIPHERS 230 +# define SSL_R_SSL_SESSION_ID_CALLBACK_FAILED 301 +# define SSL_R_SSL_SESSION_ID_CONFLICT 302 +# define SSL_R_SSL_SESSION_ID_CONTEXT_TOO_LONG 273 +# define SSL_R_SSL_SESSION_ID_HAS_BAD_LENGTH 303 +# define SSL_R_SSL_SESSION_ID_IS_DIFFERENT 231 +# define SSL_R_TLSV1_ALERT_ACCESS_DENIED 1049 +# define SSL_R_TLSV1_ALERT_DECODE_ERROR 1050 +# define SSL_R_TLSV1_ALERT_DECRYPTION_FAILED 1021 +# define SSL_R_TLSV1_ALERT_DECRYPT_ERROR 1051 +# define SSL_R_TLSV1_ALERT_EXPORT_RESTRICTION 1060 +# define SSL_R_TLSV1_ALERT_INAPPROPRIATE_FALLBACK 1086 +# define SSL_R_TLSV1_ALERT_INSUFFICIENT_SECURITY 1071 +# define SSL_R_TLSV1_ALERT_INTERNAL_ERROR 1080 +# define SSL_R_TLSV1_ALERT_NO_RENEGOTIATION 1100 +# define SSL_R_TLSV1_ALERT_PROTOCOL_VERSION 1070 +# define SSL_R_TLSV1_ALERT_RECORD_OVERFLOW 1022 +# define SSL_R_TLSV1_ALERT_UNKNOWN_CA 1048 +# define SSL_R_TLSV1_ALERT_USER_CANCELLED 1090 +# define SSL_R_TLSV1_BAD_CERTIFICATE_HASH_VALUE 1114 +# define SSL_R_TLSV1_BAD_CERTIFICATE_STATUS_RESPONSE 1113 +# define SSL_R_TLSV1_CERTIFICATE_UNOBTAINABLE 1111 +# define SSL_R_TLSV1_UNRECOGNIZED_NAME 1112 +# define SSL_R_TLSV1_UNSUPPORTED_EXTENSION 1110 +# define SSL_R_TLS_CLIENT_CERT_REQ_WITH_ANON_CIPHER 232 +# define SSL_R_TLS_HEARTBEAT_PEER_DOESNT_ACCEPT 365 +# define SSL_R_TLS_HEARTBEAT_PENDING 366 +# define SSL_R_TLS_ILLEGAL_EXPORTER_LABEL 367 +# define SSL_R_TLS_INVALID_ECPOINTFORMAT_LIST 157 +# define SSL_R_TLS_PEER_DID_NOT_RESPOND_WITH_CERTIFICATE_LIST 233 +# define SSL_R_TLS_RSA_ENCRYPTED_VALUE_LENGTH_IS_WRONG 234 +# define SSL_R_TRIED_TO_USE_UNSUPPORTED_CIPHER 235 +# define SSL_R_UNABLE_TO_DECODE_DH_CERTS 236 +# define SSL_R_UNABLE_TO_DECODE_ECDH_CERTS 313 +# define SSL_R_UNABLE_TO_EXTRACT_PUBLIC_KEY 237 +# define SSL_R_UNABLE_TO_FIND_DH_PARAMETERS 238 +# define SSL_R_UNABLE_TO_FIND_ECDH_PARAMETERS 314 +# define SSL_R_UNABLE_TO_FIND_PUBLIC_KEY_PARAMETERS 239 +# define SSL_R_UNABLE_TO_FIND_SSL_METHOD 240 +# define SSL_R_UNABLE_TO_LOAD_SSL2_MD5_ROUTINES 241 +# define SSL_R_UNABLE_TO_LOAD_SSL3_MD5_ROUTINES 242 +# define SSL_R_UNABLE_TO_LOAD_SSL3_SHA1_ROUTINES 243 +# define SSL_R_UNEXPECTED_MESSAGE 244 +# define SSL_R_UNEXPECTED_RECORD 245 +# define SSL_R_UNINITIALIZED 276 +# define SSL_R_UNKNOWN_ALERT_TYPE 246 +# define SSL_R_UNKNOWN_CERTIFICATE_TYPE 247 +# define SSL_R_UNKNOWN_CIPHER_RETURNED 248 +# define SSL_R_UNKNOWN_CIPHER_TYPE 249 +# define SSL_R_UNKNOWN_CMD_NAME 386 +# define SSL_R_UNKNOWN_DIGEST 368 +# define SSL_R_UNKNOWN_KEY_EXCHANGE_TYPE 250 +# define SSL_R_UNKNOWN_PKEY_TYPE 251 +# define SSL_R_UNKNOWN_PROTOCOL 252 +# define SSL_R_UNKNOWN_REMOTE_ERROR_TYPE 253 +# define SSL_R_UNKNOWN_SSL_VERSION 254 +# define SSL_R_UNKNOWN_STATE 255 +# define SSL_R_UNSAFE_LEGACY_RENEGOTIATION_DISABLED 338 +# define SSL_R_UNSUPPORTED_CIPHER 256 +# define SSL_R_UNSUPPORTED_COMPRESSION_ALGORITHM 257 +# define SSL_R_UNSUPPORTED_DIGEST_TYPE 326 +# define SSL_R_UNSUPPORTED_ELLIPTIC_CURVE 315 +# define SSL_R_UNSUPPORTED_PROTOCOL 258 +# define SSL_R_UNSUPPORTED_SSL_VERSION 259 +# define SSL_R_UNSUPPORTED_STATUS_TYPE 329 +# define SSL_R_USE_SRTP_NOT_NEGOTIATED 369 +# define SSL_R_WRITE_BIO_NOT_SET 260 +# define SSL_R_WRONG_CERTIFICATE_TYPE 383 +# define SSL_R_WRONG_CIPHER_RETURNED 261 +# define SSL_R_WRONG_CURVE 378 +# define SSL_R_WRONG_MESSAGE_TYPE 262 +# define SSL_R_WRONG_NUMBER_OF_KEY_BITS 263 +# define SSL_R_WRONG_SIGNATURE_LENGTH 264 +# define SSL_R_WRONG_SIGNATURE_SIZE 265 +# define SSL_R_WRONG_SIGNATURE_TYPE 370 +# define SSL_R_WRONG_SSL_VERSION 266 +# define SSL_R_WRONG_VERSION_NUMBER 267 +# define SSL_R_X509_LIB 268 +# define SSL_R_X509_VERIFICATION_SETUP_PROBLEMS 269 + +#ifdef __cplusplus +} +#endif +#endif diff --git a/ext/openssl-win32/inc32/openssl/ssl2.h b/ext/openssl-win32/inc32/openssl/ssl2.h new file mode 100644 index 00000000..03c7dd8c --- /dev/null +++ b/ext/openssl-win32/inc32/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/ext/openssl-win32/inc32/openssl/ssl23.h b/ext/openssl-win32/inc32/openssl/ssl23.h new file mode 100644 index 00000000..9de4685a --- /dev/null +++ b/ext/openssl-win32/inc32/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/ext/openssl-win32/inc32/openssl/ssl3.h b/ext/openssl-win32/inc32/openssl/ssl3.h new file mode 100644 index 00000000..e681d50a --- /dev/null +++ b/ext/openssl-win32/inc32/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/ext/openssl-win32/inc32/openssl/stack.h b/ext/openssl-win32/inc32/openssl/stack.h new file mode 100644 index 00000000..eb072166 --- /dev/null +++ b/ext/openssl-win32/inc32/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/ext/openssl-win32/inc32/openssl/symhacks.h b/ext/openssl-win32/inc32/openssl/symhacks.h new file mode 100644 index 00000000..239fa4fb --- /dev/null +++ b/ext/openssl-win32/inc32/openssl/symhacks.h @@ -0,0 +1,516 @@ +/* ==================================================================== + * Copyright (c) 1999 The OpenSSL Project. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. All advertising materials mentioning features or use of this + * software must display the following acknowledgment: + * "This product includes software developed by the OpenSSL Project + * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" + * + * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to + * endorse or promote products derived from this software without + * prior written permission. For written permission, please contact + * openssl-core@openssl.org. + * + * 5. Products derived from this software may not be called "OpenSSL" + * nor may "OpenSSL" appear in their names without prior written + * permission of the OpenSSL Project. + * + * 6. Redistributions of any form whatsoever must retain the following + * acknowledgment: + * "This product includes software developed by the OpenSSL Project + * for use in the OpenSSL Toolkit (http://www.openssl.org/)" + * + * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY + * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * ==================================================================== + * + * This product includes cryptographic software written by Eric Young + * (eay@cryptsoft.com). This product includes software written by Tim + * Hudson (tjh@cryptsoft.com). + * + */ + +#ifndef HEADER_SYMHACKS_H +# define HEADER_SYMHACKS_H + +# include + +/* + * Hacks to solve the problem with linkers incapable of handling very long + * symbol names. In the case of VMS, the limit is 31 characters on VMS for + * VAX. + */ +/* + * Note that this affects util/libeay.num and util/ssleay.num... you may + * change those manually, but that's not recommended, as those files are + * controlled centrally and updated on Unix, and the central definition may + * disagree with yours, which in turn may come with shareable library + * incompatibilities. + */ +# ifdef OPENSSL_SYS_VMS + +/* Hack a long name in crypto/ex_data.c */ +# undef CRYPTO_get_ex_data_implementation +# define CRYPTO_get_ex_data_implementation CRYPTO_get_ex_data_impl +# undef CRYPTO_set_ex_data_implementation +# define CRYPTO_set_ex_data_implementation CRYPTO_set_ex_data_impl + +/* Hack a long name in crypto/asn1/a_mbstr.c */ +# undef ASN1_STRING_set_default_mask_asc +# define ASN1_STRING_set_default_mask_asc ASN1_STRING_set_def_mask_asc + +# if 0 /* No longer needed, since safestack macro + * magic does the job */ +/* Hack the names created with DECLARE_ASN1_SET_OF(PKCS7_SIGNER_INFO) */ +# undef i2d_ASN1_SET_OF_PKCS7_SIGNER_INFO +# define i2d_ASN1_SET_OF_PKCS7_SIGNER_INFO i2d_ASN1_SET_OF_PKCS7_SIGINF +# undef d2i_ASN1_SET_OF_PKCS7_SIGNER_INFO +# define d2i_ASN1_SET_OF_PKCS7_SIGNER_INFO d2i_ASN1_SET_OF_PKCS7_SIGINF +# endif + +# if 0 /* No longer needed, since safestack macro + * magic does the job */ +/* Hack the names created with DECLARE_ASN1_SET_OF(PKCS7_RECIP_INFO) */ +# undef i2d_ASN1_SET_OF_PKCS7_RECIP_INFO +# define i2d_ASN1_SET_OF_PKCS7_RECIP_INFO i2d_ASN1_SET_OF_PKCS7_RECINF +# undef d2i_ASN1_SET_OF_PKCS7_RECIP_INFO +# define d2i_ASN1_SET_OF_PKCS7_RECIP_INFO d2i_ASN1_SET_OF_PKCS7_RECINF +# endif + +# if 0 /* No longer needed, since safestack macro + * magic does the job */ +/* Hack the names created with DECLARE_ASN1_SET_OF(ACCESS_DESCRIPTION) */ +# undef i2d_ASN1_SET_OF_ACCESS_DESCRIPTION +# define i2d_ASN1_SET_OF_ACCESS_DESCRIPTION i2d_ASN1_SET_OF_ACC_DESC +# undef d2i_ASN1_SET_OF_ACCESS_DESCRIPTION +# define d2i_ASN1_SET_OF_ACCESS_DESCRIPTION d2i_ASN1_SET_OF_ACC_DESC +# endif + +/* Hack the names created with DECLARE_PEM_rw(NETSCAPE_CERT_SEQUENCE) */ +# undef PEM_read_NETSCAPE_CERT_SEQUENCE +# define PEM_read_NETSCAPE_CERT_SEQUENCE PEM_read_NS_CERT_SEQ +# undef PEM_write_NETSCAPE_CERT_SEQUENCE +# define PEM_write_NETSCAPE_CERT_SEQUENCE PEM_write_NS_CERT_SEQ +# undef PEM_read_bio_NETSCAPE_CERT_SEQUENCE +# define PEM_read_bio_NETSCAPE_CERT_SEQUENCE PEM_read_bio_NS_CERT_SEQ +# undef PEM_write_bio_NETSCAPE_CERT_SEQUENCE +# define PEM_write_bio_NETSCAPE_CERT_SEQUENCE PEM_write_bio_NS_CERT_SEQ +# undef PEM_write_cb_bio_NETSCAPE_CERT_SEQUENCE +# define PEM_write_cb_bio_NETSCAPE_CERT_SEQUENCE PEM_write_cb_bio_NS_CERT_SEQ + +/* Hack the names created with DECLARE_PEM_rw(PKCS8_PRIV_KEY_INFO) */ +# undef PEM_read_PKCS8_PRIV_KEY_INFO +# define PEM_read_PKCS8_PRIV_KEY_INFO PEM_read_P8_PRIV_KEY_INFO +# undef PEM_write_PKCS8_PRIV_KEY_INFO +# define PEM_write_PKCS8_PRIV_KEY_INFO PEM_write_P8_PRIV_KEY_INFO +# undef PEM_read_bio_PKCS8_PRIV_KEY_INFO +# define PEM_read_bio_PKCS8_PRIV_KEY_INFO PEM_read_bio_P8_PRIV_KEY_INFO +# undef PEM_write_bio_PKCS8_PRIV_KEY_INFO +# define PEM_write_bio_PKCS8_PRIV_KEY_INFO PEM_write_bio_P8_PRIV_KEY_INFO +# undef PEM_write_cb_bio_PKCS8_PRIV_KEY_INFO +# define PEM_write_cb_bio_PKCS8_PRIV_KEY_INFO PEM_wrt_cb_bio_P8_PRIV_KEY_INFO + +/* Hack other PEM names */ +# undef PEM_write_bio_PKCS8PrivateKey_nid +# define PEM_write_bio_PKCS8PrivateKey_nid PEM_write_bio_PKCS8PrivKey_nid + +/* Hack some long X509 names */ +# undef X509_REVOKED_get_ext_by_critical +# define X509_REVOKED_get_ext_by_critical X509_REVOKED_get_ext_by_critic +# undef X509_policy_tree_get0_user_policies +# define X509_policy_tree_get0_user_policies X509_pcy_tree_get0_usr_policies +# undef X509_policy_node_get0_qualifiers +# define X509_policy_node_get0_qualifiers X509_pcy_node_get0_qualifiers +# undef X509_STORE_CTX_get_explicit_policy +# define X509_STORE_CTX_get_explicit_policy X509_STORE_CTX_get_expl_policy +# undef X509_STORE_CTX_get0_current_issuer +# define X509_STORE_CTX_get0_current_issuer X509_STORE_CTX_get0_cur_issuer + +/* Hack some long CRYPTO names */ +# undef CRYPTO_set_dynlock_destroy_callback +# define CRYPTO_set_dynlock_destroy_callback CRYPTO_set_dynlock_destroy_cb +# undef CRYPTO_set_dynlock_create_callback +# define CRYPTO_set_dynlock_create_callback CRYPTO_set_dynlock_create_cb +# undef CRYPTO_set_dynlock_lock_callback +# define CRYPTO_set_dynlock_lock_callback CRYPTO_set_dynlock_lock_cb +# undef CRYPTO_get_dynlock_lock_callback +# define CRYPTO_get_dynlock_lock_callback CRYPTO_get_dynlock_lock_cb +# undef CRYPTO_get_dynlock_destroy_callback +# define CRYPTO_get_dynlock_destroy_callback CRYPTO_get_dynlock_destroy_cb +# undef CRYPTO_get_dynlock_create_callback +# define CRYPTO_get_dynlock_create_callback CRYPTO_get_dynlock_create_cb +# undef CRYPTO_set_locked_mem_ex_functions +# define CRYPTO_set_locked_mem_ex_functions CRYPTO_set_locked_mem_ex_funcs +# undef CRYPTO_get_locked_mem_ex_functions +# define CRYPTO_get_locked_mem_ex_functions CRYPTO_get_locked_mem_ex_funcs + +/* Hack some long SSL/TLS names */ +# undef SSL_CTX_set_default_verify_paths +# define SSL_CTX_set_default_verify_paths SSL_CTX_set_def_verify_paths +# undef SSL_get_ex_data_X509_STORE_CTX_idx +# define SSL_get_ex_data_X509_STORE_CTX_idx SSL_get_ex_d_X509_STORE_CTX_idx +# undef SSL_add_file_cert_subjects_to_stack +# define SSL_add_file_cert_subjects_to_stack SSL_add_file_cert_subjs_to_stk +# undef SSL_add_dir_cert_subjects_to_stack +# define SSL_add_dir_cert_subjects_to_stack SSL_add_dir_cert_subjs_to_stk +# undef SSL_CTX_use_certificate_chain_file +# define SSL_CTX_use_certificate_chain_file SSL_CTX_use_cert_chain_file +# undef SSL_CTX_set_cert_verify_callback +# define SSL_CTX_set_cert_verify_callback SSL_CTX_set_cert_verify_cb +# undef SSL_CTX_set_default_passwd_cb_userdata +# define SSL_CTX_set_default_passwd_cb_userdata SSL_CTX_set_def_passwd_cb_ud +# undef SSL_COMP_get_compression_methods +# define SSL_COMP_get_compression_methods SSL_COMP_get_compress_methods +# undef SSL_COMP_set0_compression_methods +# define SSL_COMP_set0_compression_methods SSL_COMP_set0_compress_methods +# undef SSL_COMP_free_compression_methods +# define SSL_COMP_free_compression_methods SSL_COMP_free_compress_methods +# undef ssl_add_clienthello_renegotiate_ext +# define ssl_add_clienthello_renegotiate_ext ssl_add_clienthello_reneg_ext +# undef ssl_add_serverhello_renegotiate_ext +# define ssl_add_serverhello_renegotiate_ext ssl_add_serverhello_reneg_ext +# undef ssl_parse_clienthello_renegotiate_ext +# define ssl_parse_clienthello_renegotiate_ext ssl_parse_clienthello_reneg_ext +# undef ssl_parse_serverhello_renegotiate_ext +# define ssl_parse_serverhello_renegotiate_ext ssl_parse_serverhello_reneg_ext +# undef SSL_srp_server_param_with_username +# define SSL_srp_server_param_with_username SSL_srp_server_param_with_un +# undef SSL_CTX_set_srp_client_pwd_callback +# define SSL_CTX_set_srp_client_pwd_callback SSL_CTX_set_srp_client_pwd_cb +# undef SSL_CTX_set_srp_verify_param_callback +# define SSL_CTX_set_srp_verify_param_callback SSL_CTX_set_srp_vfy_param_cb +# undef SSL_CTX_set_srp_username_callback +# define SSL_CTX_set_srp_username_callback SSL_CTX_set_srp_un_cb +# undef ssl_add_clienthello_use_srtp_ext +# define ssl_add_clienthello_use_srtp_ext ssl_add_clihello_use_srtp_ext +# undef ssl_add_serverhello_use_srtp_ext +# define ssl_add_serverhello_use_srtp_ext ssl_add_serhello_use_srtp_ext +# undef ssl_parse_clienthello_use_srtp_ext +# define ssl_parse_clienthello_use_srtp_ext ssl_parse_clihello_use_srtp_ext +# undef ssl_parse_serverhello_use_srtp_ext +# define ssl_parse_serverhello_use_srtp_ext ssl_parse_serhello_use_srtp_ext +# undef SSL_CTX_set_next_protos_advertised_cb +# define SSL_CTX_set_next_protos_advertised_cb SSL_CTX_set_next_protos_adv_cb +# undef SSL_CTX_set_next_proto_select_cb +# define SSL_CTX_set_next_proto_select_cb SSL_CTX_set_next_proto_sel_cb + +# undef tls1_send_server_supplemental_data +# define tls1_send_server_supplemental_data tls1_send_server_suppl_data +# undef tls1_send_client_supplemental_data +# define tls1_send_client_supplemental_data tls1_send_client_suppl_data +# undef tls1_get_server_supplemental_data +# define tls1_get_server_supplemental_data tls1_get_server_suppl_data +# undef tls1_get_client_supplemental_data +# define tls1_get_client_supplemental_data tls1_get_client_suppl_data + +# undef ssl3_cbc_record_digest_supported +# define ssl3_cbc_record_digest_supported ssl3_cbc_record_digest_support +# undef ssl_check_clienthello_tlsext_late +# define ssl_check_clienthello_tlsext_late ssl_check_clihello_tlsext_late +# undef ssl_check_clienthello_tlsext_early +# define ssl_check_clienthello_tlsext_early ssl_check_clihello_tlsext_early + +/* Hack some RSA long names */ +# undef RSA_padding_check_PKCS1_OAEP_mgf1 +# define RSA_padding_check_PKCS1_OAEP_mgf1 RSA_pad_check_PKCS1_OAEP_mgf1 + +/* Hack some ENGINE long names */ +# undef ENGINE_get_default_BN_mod_exp_crt +# define ENGINE_get_default_BN_mod_exp_crt ENGINE_get_def_BN_mod_exp_crt +# undef ENGINE_set_default_BN_mod_exp_crt +# define ENGINE_set_default_BN_mod_exp_crt ENGINE_set_def_BN_mod_exp_crt +# undef ENGINE_set_load_privkey_function +# define ENGINE_set_load_privkey_function ENGINE_set_load_privkey_fn +# undef ENGINE_get_load_privkey_function +# define ENGINE_get_load_privkey_function ENGINE_get_load_privkey_fn +# undef ENGINE_unregister_pkey_asn1_meths +# define ENGINE_unregister_pkey_asn1_meths ENGINE_unreg_pkey_asn1_meths +# undef ENGINE_register_all_pkey_asn1_meths +# define ENGINE_register_all_pkey_asn1_meths ENGINE_reg_all_pkey_asn1_meths +# undef ENGINE_set_default_pkey_asn1_meths +# define ENGINE_set_default_pkey_asn1_meths ENGINE_set_def_pkey_asn1_meths +# undef ENGINE_get_pkey_asn1_meth_engine +# define ENGINE_get_pkey_asn1_meth_engine ENGINE_get_pkey_asn1_meth_eng +# undef ENGINE_set_load_ssl_client_cert_function +# define ENGINE_set_load_ssl_client_cert_function \ + ENGINE_set_ld_ssl_clnt_cert_fn +# undef ENGINE_get_ssl_client_cert_function +# define ENGINE_get_ssl_client_cert_function ENGINE_get_ssl_client_cert_fn + +/* Hack some long OCSP names */ +# undef OCSP_REQUEST_get_ext_by_critical +# define OCSP_REQUEST_get_ext_by_critical OCSP_REQUEST_get_ext_by_crit +# undef OCSP_BASICRESP_get_ext_by_critical +# define OCSP_BASICRESP_get_ext_by_critical OCSP_BASICRESP_get_ext_by_crit +# undef OCSP_SINGLERESP_get_ext_by_critical +# define OCSP_SINGLERESP_get_ext_by_critical OCSP_SINGLERESP_get_ext_by_crit + +/* Hack some long DES names */ +# undef _ossl_old_des_ede3_cfb64_encrypt +# define _ossl_old_des_ede3_cfb64_encrypt _ossl_odes_ede3_cfb64_encrypt +# undef _ossl_old_des_ede3_ofb64_encrypt +# define _ossl_old_des_ede3_ofb64_encrypt _ossl_odes_ede3_ofb64_encrypt + +/* Hack some long EVP names */ +# undef OPENSSL_add_all_algorithms_noconf +# define OPENSSL_add_all_algorithms_noconf OPENSSL_add_all_algo_noconf +# undef OPENSSL_add_all_algorithms_conf +# define OPENSSL_add_all_algorithms_conf OPENSSL_add_all_algo_conf +# undef EVP_PKEY_meth_set_verify_recover +# define EVP_PKEY_meth_set_verify_recover EVP_PKEY_meth_set_vrfy_recover + +/* Hack some long EC names */ +# undef EC_GROUP_set_point_conversion_form +# define EC_GROUP_set_point_conversion_form EC_GROUP_set_point_conv_form +# undef EC_GROUP_get_point_conversion_form +# define EC_GROUP_get_point_conversion_form EC_GROUP_get_point_conv_form +# undef EC_GROUP_clear_free_all_extra_data +# define EC_GROUP_clear_free_all_extra_data EC_GROUP_clr_free_all_xtra_data +# undef EC_KEY_set_public_key_affine_coordinates +# define EC_KEY_set_public_key_affine_coordinates \ + EC_KEY_set_pub_key_aff_coords +# undef EC_POINT_set_Jprojective_coordinates_GFp +# define EC_POINT_set_Jprojective_coordinates_GFp \ + EC_POINT_set_Jproj_coords_GFp +# undef EC_POINT_get_Jprojective_coordinates_GFp +# define EC_POINT_get_Jprojective_coordinates_GFp \ + EC_POINT_get_Jproj_coords_GFp +# undef EC_POINT_set_affine_coordinates_GFp +# define EC_POINT_set_affine_coordinates_GFp EC_POINT_set_affine_coords_GFp +# undef EC_POINT_get_affine_coordinates_GFp +# define EC_POINT_get_affine_coordinates_GFp EC_POINT_get_affine_coords_GFp +# undef EC_POINT_set_compressed_coordinates_GFp +# define EC_POINT_set_compressed_coordinates_GFp EC_POINT_set_compr_coords_GFp +# undef EC_POINT_set_affine_coordinates_GF2m +# define EC_POINT_set_affine_coordinates_GF2m EC_POINT_set_affine_coords_GF2m +# undef EC_POINT_get_affine_coordinates_GF2m +# define EC_POINT_get_affine_coordinates_GF2m EC_POINT_get_affine_coords_GF2m +# undef EC_POINT_set_compressed_coordinates_GF2m +# define EC_POINT_set_compressed_coordinates_GF2m \ + EC_POINT_set_compr_coords_GF2m +# undef ec_GF2m_simple_group_clear_finish +# define ec_GF2m_simple_group_clear_finish ec_GF2m_simple_grp_clr_finish +# undef ec_GF2m_simple_group_check_discriminant +# define ec_GF2m_simple_group_check_discriminant ec_GF2m_simple_grp_chk_discrim +# undef ec_GF2m_simple_point_clear_finish +# define ec_GF2m_simple_point_clear_finish ec_GF2m_simple_pt_clr_finish +# undef ec_GF2m_simple_point_set_to_infinity +# define ec_GF2m_simple_point_set_to_infinity ec_GF2m_simple_pt_set_to_inf +# undef ec_GF2m_simple_points_make_affine +# define ec_GF2m_simple_points_make_affine ec_GF2m_simple_pts_make_affine +# undef ec_GF2m_simple_point_set_affine_coordinates +# define ec_GF2m_simple_point_set_affine_coordinates \ + ec_GF2m_smp_pt_set_af_coords +# undef ec_GF2m_simple_point_get_affine_coordinates +# define ec_GF2m_simple_point_get_affine_coordinates \ + ec_GF2m_smp_pt_get_af_coords +# undef ec_GF2m_simple_set_compressed_coordinates +# define ec_GF2m_simple_set_compressed_coordinates \ + ec_GF2m_smp_set_compr_coords +# undef ec_GFp_simple_group_set_curve_GFp +# define ec_GFp_simple_group_set_curve_GFp ec_GFp_simple_grp_set_curve_GFp +# undef ec_GFp_simple_group_get_curve_GFp +# define ec_GFp_simple_group_get_curve_GFp ec_GFp_simple_grp_get_curve_GFp +# undef ec_GFp_simple_group_clear_finish +# define ec_GFp_simple_group_clear_finish ec_GFp_simple_grp_clear_finish +# undef ec_GFp_simple_group_set_generator +# define ec_GFp_simple_group_set_generator ec_GFp_simple_grp_set_generator +# undef ec_GFp_simple_group_get0_generator +# define ec_GFp_simple_group_get0_generator ec_GFp_simple_grp_gt0_generator +# undef ec_GFp_simple_group_get_cofactor +# define ec_GFp_simple_group_get_cofactor ec_GFp_simple_grp_get_cofactor +# undef ec_GFp_simple_point_clear_finish +# define ec_GFp_simple_point_clear_finish ec_GFp_simple_pt_clear_finish +# undef ec_GFp_simple_point_set_to_infinity +# define ec_GFp_simple_point_set_to_infinity ec_GFp_simple_pt_set_to_inf +# undef ec_GFp_simple_points_make_affine +# define ec_GFp_simple_points_make_affine ec_GFp_simple_pts_make_affine +# undef ec_GFp_simple_set_Jprojective_coordinates_GFp +# define ec_GFp_simple_set_Jprojective_coordinates_GFp \ + ec_GFp_smp_set_Jproj_coords_GFp +# undef ec_GFp_simple_get_Jprojective_coordinates_GFp +# define ec_GFp_simple_get_Jprojective_coordinates_GFp \ + ec_GFp_smp_get_Jproj_coords_GFp +# undef ec_GFp_simple_point_set_affine_coordinates_GFp +# define ec_GFp_simple_point_set_affine_coordinates_GFp \ + ec_GFp_smp_pt_set_af_coords_GFp +# undef ec_GFp_simple_point_get_affine_coordinates_GFp +# define ec_GFp_simple_point_get_affine_coordinates_GFp \ + ec_GFp_smp_pt_get_af_coords_GFp +# undef ec_GFp_simple_set_compressed_coordinates_GFp +# define ec_GFp_simple_set_compressed_coordinates_GFp \ + ec_GFp_smp_set_compr_coords_GFp +# undef ec_GFp_simple_point_set_affine_coordinates +# define ec_GFp_simple_point_set_affine_coordinates \ + ec_GFp_smp_pt_set_af_coords +# undef ec_GFp_simple_point_get_affine_coordinates +# define ec_GFp_simple_point_get_affine_coordinates \ + ec_GFp_smp_pt_get_af_coords +# undef ec_GFp_simple_set_compressed_coordinates +# define ec_GFp_simple_set_compressed_coordinates \ + ec_GFp_smp_set_compr_coords +# undef ec_GFp_simple_group_check_discriminant +# define ec_GFp_simple_group_check_discriminant ec_GFp_simple_grp_chk_discrim + +/* Hack som long STORE names */ +# undef STORE_method_set_initialise_function +# define STORE_method_set_initialise_function STORE_meth_set_initialise_fn +# undef STORE_method_set_cleanup_function +# define STORE_method_set_cleanup_function STORE_meth_set_cleanup_fn +# undef STORE_method_set_generate_function +# define STORE_method_set_generate_function STORE_meth_set_generate_fn +# undef STORE_method_set_modify_function +# define STORE_method_set_modify_function STORE_meth_set_modify_fn +# undef STORE_method_set_revoke_function +# define STORE_method_set_revoke_function STORE_meth_set_revoke_fn +# undef STORE_method_set_delete_function +# define STORE_method_set_delete_function STORE_meth_set_delete_fn +# undef STORE_method_set_list_start_function +# define STORE_method_set_list_start_function STORE_meth_set_list_start_fn +# undef STORE_method_set_list_next_function +# define STORE_method_set_list_next_function STORE_meth_set_list_next_fn +# undef STORE_method_set_list_end_function +# define STORE_method_set_list_end_function STORE_meth_set_list_end_fn +# undef STORE_method_set_update_store_function +# define STORE_method_set_update_store_function STORE_meth_set_update_store_fn +# undef STORE_method_set_lock_store_function +# define STORE_method_set_lock_store_function STORE_meth_set_lock_store_fn +# undef STORE_method_set_unlock_store_function +# define STORE_method_set_unlock_store_function STORE_meth_set_unlock_store_fn +# undef STORE_method_get_initialise_function +# define STORE_method_get_initialise_function STORE_meth_get_initialise_fn +# undef STORE_method_get_cleanup_function +# define STORE_method_get_cleanup_function STORE_meth_get_cleanup_fn +# undef STORE_method_get_generate_function +# define STORE_method_get_generate_function STORE_meth_get_generate_fn +# undef STORE_method_get_modify_function +# define STORE_method_get_modify_function STORE_meth_get_modify_fn +# undef STORE_method_get_revoke_function +# define STORE_method_get_revoke_function STORE_meth_get_revoke_fn +# undef STORE_method_get_delete_function +# define STORE_method_get_delete_function STORE_meth_get_delete_fn +# undef STORE_method_get_list_start_function +# define STORE_method_get_list_start_function STORE_meth_get_list_start_fn +# undef STORE_method_get_list_next_function +# define STORE_method_get_list_next_function STORE_meth_get_list_next_fn +# undef STORE_method_get_list_end_function +# define STORE_method_get_list_end_function STORE_meth_get_list_end_fn +# undef STORE_method_get_update_store_function +# define STORE_method_get_update_store_function STORE_meth_get_update_store_fn +# undef STORE_method_get_lock_store_function +# define STORE_method_get_lock_store_function STORE_meth_get_lock_store_fn +# undef STORE_method_get_unlock_store_function +# define STORE_method_get_unlock_store_function STORE_meth_get_unlock_store_fn + +/* Hack some long TS names */ +# undef TS_RESP_CTX_set_status_info_cond +# define TS_RESP_CTX_set_status_info_cond TS_RESP_CTX_set_stat_info_cond +# undef TS_RESP_CTX_set_clock_precision_digits +# define TS_RESP_CTX_set_clock_precision_digits TS_RESP_CTX_set_clk_prec_digits +# undef TS_CONF_set_clock_precision_digits +# define TS_CONF_set_clock_precision_digits TS_CONF_set_clk_prec_digits + +/* Hack some long CMS names */ +# undef CMS_RecipientInfo_ktri_get0_algs +# define CMS_RecipientInfo_ktri_get0_algs CMS_RecipInfo_ktri_get0_algs +# undef CMS_RecipientInfo_ktri_get0_signer_id +# define CMS_RecipientInfo_ktri_get0_signer_id CMS_RecipInfo_ktri_get0_sigr_id +# undef CMS_OtherRevocationInfoFormat_it +# define CMS_OtherRevocationInfoFormat_it CMS_OtherRevocInfoFormat_it +# undef CMS_KeyAgreeRecipientIdentifier_it +# define CMS_KeyAgreeRecipientIdentifier_it CMS_KeyAgreeRecipIdentifier_it +# undef CMS_OriginatorIdentifierOrKey_it +# define CMS_OriginatorIdentifierOrKey_it CMS_OriginatorIdOrKey_it +# undef cms_SignerIdentifier_get0_signer_id +# define cms_SignerIdentifier_get0_signer_id cms_SignerId_get0_signer_id +# undef CMS_RecipientInfo_kari_get0_orig_id +# define CMS_RecipientInfo_kari_get0_orig_id CMS_RecipInfo_kari_get0_orig_id +# undef CMS_RecipientInfo_kari_get0_reks +# define CMS_RecipientInfo_kari_get0_reks CMS_RecipInfo_kari_get0_reks +# undef CMS_RecipientEncryptedKey_cert_cmp +# define CMS_RecipientEncryptedKey_cert_cmp CMS_RecipEncryptedKey_cert_cmp +# undef CMS_RecipientInfo_kari_set0_pkey +# define CMS_RecipientInfo_kari_set0_pkey CMS_RecipInfo_kari_set0_pkey +# undef CMS_RecipientEncryptedKey_get0_id +# define CMS_RecipientEncryptedKey_get0_id CMS_RecipEncryptedKey_get0_id +# undef CMS_RecipientInfo_kari_orig_id_cmp +# define CMS_RecipientInfo_kari_orig_id_cmp CMS_RecipInfo_kari_orig_id_cmp + +/* Hack some long DTLS1 names */ +# undef dtls1_retransmit_buffered_messages +# define dtls1_retransmit_buffered_messages dtls1_retransmit_buffered_msgs + +/* Hack some long SRP names */ +# undef SRP_generate_server_master_secret +# define SRP_generate_server_master_secret SRP_gen_server_master_secret +# undef SRP_generate_client_master_secret +# define SRP_generate_client_master_secret SRP_gen_client_master_secret + +/* Hack some long UI names */ +# undef UI_method_get_prompt_constructor +# define UI_method_get_prompt_constructor UI_method_get_prompt_constructr +# undef UI_method_set_prompt_constructor +# define UI_method_set_prompt_constructor UI_method_set_prompt_constructr + +# endif /* defined OPENSSL_SYS_VMS */ + +/* Case insensitive linking causes problems.... */ +# if defined(OPENSSL_SYS_VMS) || defined(OPENSSL_SYS_OS2) +# undef ERR_load_CRYPTO_strings +# define ERR_load_CRYPTO_strings ERR_load_CRYPTOlib_strings +# undef OCSP_crlID_new +# define OCSP_crlID_new OCSP_crlID2_new + +# undef d2i_ECPARAMETERS +# define d2i_ECPARAMETERS d2i_UC_ECPARAMETERS +# undef i2d_ECPARAMETERS +# define i2d_ECPARAMETERS i2d_UC_ECPARAMETERS +# undef d2i_ECPKPARAMETERS +# define d2i_ECPKPARAMETERS d2i_UC_ECPKPARAMETERS +# undef i2d_ECPKPARAMETERS +# define i2d_ECPKPARAMETERS i2d_UC_ECPKPARAMETERS + +/* + * These functions do not seem to exist! However, I'm paranoid... Original + * command in x509v3.h: These functions are being redefined in another + * directory, and clash when the linker is case-insensitive, so let's hide + * them a little, by giving them an extra 'o' at the beginning of the name... + */ +# undef X509v3_cleanup_extensions +# define X509v3_cleanup_extensions oX509v3_cleanup_extensions +# undef X509v3_add_extension +# define X509v3_add_extension oX509v3_add_extension +# undef X509v3_add_netscape_extensions +# define X509v3_add_netscape_extensions oX509v3_add_netscape_extensions +# undef X509v3_add_standard_extensions +# define X509v3_add_standard_extensions oX509v3_add_standard_extensions + +/* This one clashes with CMS_data_create */ +# undef cms_Data_create +# define cms_Data_create priv_cms_Data_create + +# endif + +#endif /* ! defined HEADER_VMS_IDHACKS_H */ diff --git a/ext/openssl-win32/inc32/openssl/tls1.h b/ext/openssl-win32/inc32/openssl/tls1.h new file mode 100644 index 00000000..5929607f --- /dev/null +++ b/ext/openssl-win32/inc32/openssl/tls1.h @@ -0,0 +1,813 @@ +/* ssl/tls1.h */ +/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) + * All rights reserved. + * + * This package is an SSL implementation written + * by Eric Young (eay@cryptsoft.com). + * The implementation was written so as to conform with Netscapes SSL. + * + * This library is free for commercial and non-commercial use as long as + * the following conditions are aheared to. The following conditions + * apply to all code found in this distribution, be it the RC4, RSA, + * lhash, DES, etc., code; not just the SSL code. The SSL documentation + * included with this distribution is covered by the same copyright terms + * except that the holder is Tim Hudson (tjh@cryptsoft.com). + * + * Copyright remains Eric Young's, and as such any Copyright notices in + * the code are not to be removed. + * If this package is used in a product, Eric Young should be given attribution + * as the author of the parts of the library used. + * This can be in the form of a textual message at program startup or + * in documentation (online or textual) provided with the package. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * "This product includes cryptographic software written by + * Eric Young (eay@cryptsoft.com)" + * The word 'cryptographic' can be left out if the rouines from the library + * being used are not cryptographic related :-). + * 4. If you include any Windows specific code (or a derivative thereof) from + * the apps directory (application code) you must include an acknowledgement: + * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" + * + * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * The licence and distribution terms for any publically available version or + * derivative of this code cannot be changed. i.e. this code cannot simply be + * copied and put under another distribution licence + * [including the GNU Public Licence.] + */ +/* ==================================================================== + * Copyright (c) 1998-2006 The OpenSSL Project. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. All advertising materials mentioning features or use of this + * software must display the following acknowledgment: + * "This product includes software developed by the OpenSSL Project + * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" + * + * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to + * endorse or promote products derived from this software without + * prior written permission. For written permission, please contact + * openssl-core@openssl.org. + * + * 5. Products derived from this software may not be called "OpenSSL" + * nor may "OpenSSL" appear in their names without prior written + * permission of the OpenSSL Project. + * + * 6. Redistributions of any form whatsoever must retain the following + * acknowledgment: + * "This product includes software developed by the OpenSSL Project + * for use in the OpenSSL Toolkit (http://www.openssl.org/)" + * + * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY + * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * ==================================================================== + * + * This product includes cryptographic software written by Eric Young + * (eay@cryptsoft.com). This product includes software written by Tim + * Hudson (tjh@cryptsoft.com). + * + */ +/* ==================================================================== + * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED. + * + * Portions of the attached software ("Contribution") are developed by + * SUN MICROSYSTEMS, INC., and are contributed to the OpenSSL project. + * + * The Contribution is licensed pursuant to the OpenSSL open source + * license provided above. + * + * ECC cipher suite support in OpenSSL originally written by + * Vipul Gupta and Sumit Gupta of Sun Microsystems Laboratories. + * + */ +/* ==================================================================== + * Copyright 2005 Nokia. All rights reserved. + * + * The portions of the attached software ("Contribution") is developed by + * Nokia Corporation and is licensed pursuant to the OpenSSL open source + * license. + * + * The Contribution, originally written by Mika Kousa and Pasi Eronen of + * Nokia Corporation, consists of the "PSK" (Pre-Shared Key) ciphersuites + * support (see RFC 4279) to OpenSSL. + * + * No patent licenses or other rights except those expressly stated in + * the OpenSSL open source license shall be deemed granted or received + * expressly, by implication, estoppel, or otherwise. + * + * No assurances are provided by Nokia that the Contribution does not + * infringe the patent or other intellectual property rights of any third + * party or that the license provides you with all the necessary rights + * to make use of the Contribution. + * + * THE SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. IN + * ADDITION TO THE DISCLAIMERS INCLUDED IN THE LICENSE, NOKIA + * SPECIFICALLY DISCLAIMS ANY LIABILITY FOR CLAIMS BROUGHT BY YOU OR ANY + * OTHER ENTITY BASED ON INFRINGEMENT OF INTELLECTUAL PROPERTY RIGHTS OR + * OTHERWISE. + */ + +#ifndef HEADER_TLS1_H +# define HEADER_TLS1_H + +# include + +#ifdef __cplusplus +extern "C" { +#endif + +# define TLS1_ALLOW_EXPERIMENTAL_CIPHERSUITES 0 + +# define TLS1_VERSION 0x0301 +# define TLS1_1_VERSION 0x0302 +# define TLS1_2_VERSION 0x0303 +# define TLS_MAX_VERSION TLS1_2_VERSION + +# define TLS1_VERSION_MAJOR 0x03 +# define TLS1_VERSION_MINOR 0x01 + +# define TLS1_1_VERSION_MAJOR 0x03 +# define TLS1_1_VERSION_MINOR 0x02 + +# define TLS1_2_VERSION_MAJOR 0x03 +# define TLS1_2_VERSION_MINOR 0x03 + +# define TLS1_get_version(s) \ + ((s->version >> 8) == TLS1_VERSION_MAJOR ? s->version : 0) + +# define TLS1_get_client_version(s) \ + ((s->client_version >> 8) == TLS1_VERSION_MAJOR ? s->client_version : 0) + +# define TLS1_AD_DECRYPTION_FAILED 21 +# define TLS1_AD_RECORD_OVERFLOW 22 +# define TLS1_AD_UNKNOWN_CA 48/* fatal */ +# define TLS1_AD_ACCESS_DENIED 49/* fatal */ +# define TLS1_AD_DECODE_ERROR 50/* fatal */ +# define TLS1_AD_DECRYPT_ERROR 51 +# define TLS1_AD_EXPORT_RESTRICTION 60/* fatal */ +# define TLS1_AD_PROTOCOL_VERSION 70/* fatal */ +# define TLS1_AD_INSUFFICIENT_SECURITY 71/* fatal */ +# define TLS1_AD_INTERNAL_ERROR 80/* fatal */ +# define TLS1_AD_INAPPROPRIATE_FALLBACK 86/* fatal */ +# define TLS1_AD_USER_CANCELLED 90 +# define TLS1_AD_NO_RENEGOTIATION 100 +/* codes 110-114 are from RFC3546 */ +# define TLS1_AD_UNSUPPORTED_EXTENSION 110 +# define TLS1_AD_CERTIFICATE_UNOBTAINABLE 111 +# define TLS1_AD_UNRECOGNIZED_NAME 112 +# define TLS1_AD_BAD_CERTIFICATE_STATUS_RESPONSE 113 +# define TLS1_AD_BAD_CERTIFICATE_HASH_VALUE 114 +# define TLS1_AD_UNKNOWN_PSK_IDENTITY 115/* fatal */ + +/* ExtensionType values from RFC3546 / RFC4366 / RFC6066 */ +# define TLSEXT_TYPE_server_name 0 +# define TLSEXT_TYPE_max_fragment_length 1 +# define TLSEXT_TYPE_client_certificate_url 2 +# define TLSEXT_TYPE_trusted_ca_keys 3 +# define TLSEXT_TYPE_truncated_hmac 4 +# define TLSEXT_TYPE_status_request 5 +/* ExtensionType values from RFC4681 */ +# define TLSEXT_TYPE_user_mapping 6 +/* ExtensionType values from RFC5878 */ +# define TLSEXT_TYPE_client_authz 7 +# define TLSEXT_TYPE_server_authz 8 +/* ExtensionType values from RFC6091 */ +# define TLSEXT_TYPE_cert_type 9 + +/* ExtensionType values from RFC4492 */ +# define TLSEXT_TYPE_elliptic_curves 10 +# define TLSEXT_TYPE_ec_point_formats 11 + +/* ExtensionType value from RFC5054 */ +# define TLSEXT_TYPE_srp 12 + +/* ExtensionType values from RFC5246 */ +# define TLSEXT_TYPE_signature_algorithms 13 + +/* ExtensionType value from RFC5764 */ +# define TLSEXT_TYPE_use_srtp 14 + +/* ExtensionType value from RFC5620 */ +# define TLSEXT_TYPE_heartbeat 15 + +/* ExtensionType value from draft-ietf-tls-applayerprotoneg-00 */ +# define TLSEXT_TYPE_application_layer_protocol_negotiation 16 + +/* + * ExtensionType value for TLS padding extension. + * http://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml + * http://tools.ietf.org/html/draft-agl-tls-padding-03 + */ +# define TLSEXT_TYPE_padding 21 + +/* ExtensionType value from RFC4507 */ +# define TLSEXT_TYPE_session_ticket 35 + +/* ExtensionType value from draft-rescorla-tls-opaque-prf-input-00.txt */ +# if 0 +/* + * will have to be provided externally for now , + * i.e. build with -DTLSEXT_TYPE_opaque_prf_input=38183 + * using whatever extension number you'd like to try + */ +# define TLSEXT_TYPE_opaque_prf_input ?? +# endif + +/* Temporary extension type */ +# define TLSEXT_TYPE_renegotiate 0xff01 + +# ifndef OPENSSL_NO_NEXTPROTONEG +/* This is not an IANA defined extension number */ +# define TLSEXT_TYPE_next_proto_neg 13172 +# endif + +/* NameType value from RFC 3546 */ +# define TLSEXT_NAMETYPE_host_name 0 +/* status request value from RFC 3546 */ +# define TLSEXT_STATUSTYPE_ocsp 1 + +/* ECPointFormat values from draft-ietf-tls-ecc-12 */ +# define TLSEXT_ECPOINTFORMAT_first 0 +# define TLSEXT_ECPOINTFORMAT_uncompressed 0 +# define TLSEXT_ECPOINTFORMAT_ansiX962_compressed_prime 1 +# define TLSEXT_ECPOINTFORMAT_ansiX962_compressed_char2 2 +# define TLSEXT_ECPOINTFORMAT_last 2 + +/* Signature and hash algorithms from RFC 5246 */ + +# define TLSEXT_signature_anonymous 0 +# define TLSEXT_signature_rsa 1 +# define TLSEXT_signature_dsa 2 +# define TLSEXT_signature_ecdsa 3 + +/* Total number of different signature algorithms */ +# define TLSEXT_signature_num 4 + +# define TLSEXT_hash_none 0 +# define TLSEXT_hash_md5 1 +# define TLSEXT_hash_sha1 2 +# define TLSEXT_hash_sha224 3 +# define TLSEXT_hash_sha256 4 +# define TLSEXT_hash_sha384 5 +# define TLSEXT_hash_sha512 6 + +/* Total number of different digest algorithms */ + +# define TLSEXT_hash_num 7 + +/* Flag set for unrecognised algorithms */ +# define TLSEXT_nid_unknown 0x1000000 + +/* ECC curves */ + +# define TLSEXT_curve_P_256 23 +# define TLSEXT_curve_P_384 24 + +# ifndef OPENSSL_NO_TLSEXT + +# define TLSEXT_MAXLEN_host_name 255 + +const char *SSL_get_servername(const SSL *s, const int type); +int SSL_get_servername_type(const SSL *s); +/* + * SSL_export_keying_material exports a value derived from the master secret, + * as specified in RFC 5705. It writes |olen| bytes to |out| given a label and + * optional context. (Since a zero length context is allowed, the |use_context| + * flag controls whether a context is included.) It returns 1 on success and + * zero otherwise. + */ +int SSL_export_keying_material(SSL *s, unsigned char *out, size_t olen, + const char *label, size_t llen, + const unsigned char *p, size_t plen, + int use_context); + +int SSL_get_sigalgs(SSL *s, int idx, + int *psign, int *phash, int *psignandhash, + unsigned char *rsig, unsigned char *rhash); + +int SSL_get_shared_sigalgs(SSL *s, int idx, + int *psign, int *phash, int *psignandhash, + unsigned char *rsig, unsigned char *rhash); + +int SSL_check_chain(SSL *s, X509 *x, EVP_PKEY *pk, STACK_OF(X509) *chain); + +# define SSL_set_tlsext_host_name(s,name) \ +SSL_ctrl(s,SSL_CTRL_SET_TLSEXT_HOSTNAME,TLSEXT_NAMETYPE_host_name,(char *)name) + +# define SSL_set_tlsext_debug_callback(ssl, cb) \ +SSL_callback_ctrl(ssl,SSL_CTRL_SET_TLSEXT_DEBUG_CB,(void (*)(void))cb) + +# define SSL_set_tlsext_debug_arg(ssl, arg) \ +SSL_ctrl(ssl,SSL_CTRL_SET_TLSEXT_DEBUG_ARG,0, (void *)arg) + +# define SSL_set_tlsext_status_type(ssl, type) \ +SSL_ctrl(ssl,SSL_CTRL_SET_TLSEXT_STATUS_REQ_TYPE,type, NULL) + +# define SSL_get_tlsext_status_exts(ssl, arg) \ +SSL_ctrl(ssl,SSL_CTRL_GET_TLSEXT_STATUS_REQ_EXTS,0, (void *)arg) + +# define SSL_set_tlsext_status_exts(ssl, arg) \ +SSL_ctrl(ssl,SSL_CTRL_SET_TLSEXT_STATUS_REQ_EXTS,0, (void *)arg) + +# define SSL_get_tlsext_status_ids(ssl, arg) \ +SSL_ctrl(ssl,SSL_CTRL_GET_TLSEXT_STATUS_REQ_IDS,0, (void *)arg) + +# define SSL_set_tlsext_status_ids(ssl, arg) \ +SSL_ctrl(ssl,SSL_CTRL_SET_TLSEXT_STATUS_REQ_IDS,0, (void *)arg) + +# define SSL_get_tlsext_status_ocsp_resp(ssl, arg) \ +SSL_ctrl(ssl,SSL_CTRL_GET_TLSEXT_STATUS_REQ_OCSP_RESP,0, (void *)arg) + +# define SSL_set_tlsext_status_ocsp_resp(ssl, arg, arglen) \ +SSL_ctrl(ssl,SSL_CTRL_SET_TLSEXT_STATUS_REQ_OCSP_RESP,arglen, (void *)arg) + +# define SSL_CTX_set_tlsext_servername_callback(ctx, cb) \ +SSL_CTX_callback_ctrl(ctx,SSL_CTRL_SET_TLSEXT_SERVERNAME_CB,(void (*)(void))cb) + +# define SSL_TLSEXT_ERR_OK 0 +# define SSL_TLSEXT_ERR_ALERT_WARNING 1 +# define SSL_TLSEXT_ERR_ALERT_FATAL 2 +# define SSL_TLSEXT_ERR_NOACK 3 + +# define SSL_CTX_set_tlsext_servername_arg(ctx, arg) \ +SSL_CTX_ctrl(ctx,SSL_CTRL_SET_TLSEXT_SERVERNAME_ARG,0, (void *)arg) + +# define SSL_CTX_get_tlsext_ticket_keys(ctx, keys, keylen) \ + SSL_CTX_ctrl((ctx),SSL_CTRL_GET_TLSEXT_TICKET_KEYS,(keylen),(keys)) +# define SSL_CTX_set_tlsext_ticket_keys(ctx, keys, keylen) \ + SSL_CTX_ctrl((ctx),SSL_CTRL_SET_TLSEXT_TICKET_KEYS,(keylen),(keys)) + +# define SSL_CTX_set_tlsext_status_cb(ssl, cb) \ +SSL_CTX_callback_ctrl(ssl,SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB,(void (*)(void))cb) + +# define SSL_CTX_set_tlsext_status_arg(ssl, arg) \ +SSL_CTX_ctrl(ssl,SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB_ARG,0, (void *)arg) + +# define SSL_set_tlsext_opaque_prf_input(s, src, len) \ +SSL_ctrl(s,SSL_CTRL_SET_TLSEXT_OPAQUE_PRF_INPUT, len, src) +# define SSL_CTX_set_tlsext_opaque_prf_input_callback(ctx, cb) \ +SSL_CTX_callback_ctrl(ctx,SSL_CTRL_SET_TLSEXT_OPAQUE_PRF_INPUT_CB, (void (*)(void))cb) +# define SSL_CTX_set_tlsext_opaque_prf_input_callback_arg(ctx, arg) \ +SSL_CTX_ctrl(ctx,SSL_CTRL_SET_TLSEXT_OPAQUE_PRF_INPUT_CB_ARG, 0, arg) + +# define SSL_CTX_set_tlsext_ticket_key_cb(ssl, cb) \ +SSL_CTX_callback_ctrl(ssl,SSL_CTRL_SET_TLSEXT_TICKET_KEY_CB,(void (*)(void))cb) + +# ifndef OPENSSL_NO_HEARTBEATS +# define SSL_TLSEXT_HB_ENABLED 0x01 +# define SSL_TLSEXT_HB_DONT_SEND_REQUESTS 0x02 +# define SSL_TLSEXT_HB_DONT_RECV_REQUESTS 0x04 + +# define SSL_get_tlsext_heartbeat_pending(ssl) \ + SSL_ctrl((ssl),SSL_CTRL_GET_TLS_EXT_HEARTBEAT_PENDING,0,NULL) +# define SSL_set_tlsext_heartbeat_no_requests(ssl, arg) \ + SSL_ctrl((ssl),SSL_CTRL_SET_TLS_EXT_HEARTBEAT_NO_REQUESTS,arg,NULL) +# endif +# endif + +/* PSK ciphersuites from 4279 */ +# define TLS1_CK_PSK_WITH_RC4_128_SHA 0x0300008A +# define TLS1_CK_PSK_WITH_3DES_EDE_CBC_SHA 0x0300008B +# define TLS1_CK_PSK_WITH_AES_128_CBC_SHA 0x0300008C +# define TLS1_CK_PSK_WITH_AES_256_CBC_SHA 0x0300008D + +/* + * Additional TLS ciphersuites from expired Internet Draft + * draft-ietf-tls-56-bit-ciphersuites-01.txt (available if + * TLS1_ALLOW_EXPERIMENTAL_CIPHERSUITES is defined, see s3_lib.c). We + * actually treat them like SSL 3.0 ciphers, which we probably shouldn't. + * Note that the first two are actually not in the IDs. + */ +# define TLS1_CK_RSA_EXPORT1024_WITH_RC4_56_MD5 0x03000060/* not in + * ID */ +# define TLS1_CK_RSA_EXPORT1024_WITH_RC2_CBC_56_MD5 0x03000061/* not in + * ID */ +# define TLS1_CK_RSA_EXPORT1024_WITH_DES_CBC_SHA 0x03000062 +# define TLS1_CK_DHE_DSS_EXPORT1024_WITH_DES_CBC_SHA 0x03000063 +# define TLS1_CK_RSA_EXPORT1024_WITH_RC4_56_SHA 0x03000064 +# define TLS1_CK_DHE_DSS_EXPORT1024_WITH_RC4_56_SHA 0x03000065 +# define TLS1_CK_DHE_DSS_WITH_RC4_128_SHA 0x03000066 + +/* AES ciphersuites from RFC3268 */ + +# define TLS1_CK_RSA_WITH_AES_128_SHA 0x0300002F +# define TLS1_CK_DH_DSS_WITH_AES_128_SHA 0x03000030 +# define TLS1_CK_DH_RSA_WITH_AES_128_SHA 0x03000031 +# define TLS1_CK_DHE_DSS_WITH_AES_128_SHA 0x03000032 +# define TLS1_CK_DHE_RSA_WITH_AES_128_SHA 0x03000033 +# define TLS1_CK_ADH_WITH_AES_128_SHA 0x03000034 + +# define TLS1_CK_RSA_WITH_AES_256_SHA 0x03000035 +# define TLS1_CK_DH_DSS_WITH_AES_256_SHA 0x03000036 +# define TLS1_CK_DH_RSA_WITH_AES_256_SHA 0x03000037 +# define TLS1_CK_DHE_DSS_WITH_AES_256_SHA 0x03000038 +# define TLS1_CK_DHE_RSA_WITH_AES_256_SHA 0x03000039 +# define TLS1_CK_ADH_WITH_AES_256_SHA 0x0300003A + +/* TLS v1.2 ciphersuites */ +# define TLS1_CK_RSA_WITH_NULL_SHA256 0x0300003B +# define TLS1_CK_RSA_WITH_AES_128_SHA256 0x0300003C +# define TLS1_CK_RSA_WITH_AES_256_SHA256 0x0300003D +# define TLS1_CK_DH_DSS_WITH_AES_128_SHA256 0x0300003E +# define TLS1_CK_DH_RSA_WITH_AES_128_SHA256 0x0300003F +# define TLS1_CK_DHE_DSS_WITH_AES_128_SHA256 0x03000040 + +/* Camellia ciphersuites from RFC4132 */ +# define TLS1_CK_RSA_WITH_CAMELLIA_128_CBC_SHA 0x03000041 +# define TLS1_CK_DH_DSS_WITH_CAMELLIA_128_CBC_SHA 0x03000042 +# define TLS1_CK_DH_RSA_WITH_CAMELLIA_128_CBC_SHA 0x03000043 +# define TLS1_CK_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA 0x03000044 +# define TLS1_CK_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA 0x03000045 +# define TLS1_CK_ADH_WITH_CAMELLIA_128_CBC_SHA 0x03000046 + +/* TLS v1.2 ciphersuites */ +# define TLS1_CK_DHE_RSA_WITH_AES_128_SHA256 0x03000067 +# define TLS1_CK_DH_DSS_WITH_AES_256_SHA256 0x03000068 +# define TLS1_CK_DH_RSA_WITH_AES_256_SHA256 0x03000069 +# define TLS1_CK_DHE_DSS_WITH_AES_256_SHA256 0x0300006A +# define TLS1_CK_DHE_RSA_WITH_AES_256_SHA256 0x0300006B +# define TLS1_CK_ADH_WITH_AES_128_SHA256 0x0300006C +# define TLS1_CK_ADH_WITH_AES_256_SHA256 0x0300006D + +/* Camellia ciphersuites from RFC4132 */ +# define TLS1_CK_RSA_WITH_CAMELLIA_256_CBC_SHA 0x03000084 +# define TLS1_CK_DH_DSS_WITH_CAMELLIA_256_CBC_SHA 0x03000085 +# define TLS1_CK_DH_RSA_WITH_CAMELLIA_256_CBC_SHA 0x03000086 +# define TLS1_CK_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA 0x03000087 +# define TLS1_CK_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA 0x03000088 +# define TLS1_CK_ADH_WITH_CAMELLIA_256_CBC_SHA 0x03000089 + +/* SEED ciphersuites from RFC4162 */ +# define TLS1_CK_RSA_WITH_SEED_SHA 0x03000096 +# define TLS1_CK_DH_DSS_WITH_SEED_SHA 0x03000097 +# define TLS1_CK_DH_RSA_WITH_SEED_SHA 0x03000098 +# define TLS1_CK_DHE_DSS_WITH_SEED_SHA 0x03000099 +# define TLS1_CK_DHE_RSA_WITH_SEED_SHA 0x0300009A +# define TLS1_CK_ADH_WITH_SEED_SHA 0x0300009B + +/* TLS v1.2 GCM ciphersuites from RFC5288 */ +# define TLS1_CK_RSA_WITH_AES_128_GCM_SHA256 0x0300009C +# define TLS1_CK_RSA_WITH_AES_256_GCM_SHA384 0x0300009D +# define TLS1_CK_DHE_RSA_WITH_AES_128_GCM_SHA256 0x0300009E +# define TLS1_CK_DHE_RSA_WITH_AES_256_GCM_SHA384 0x0300009F +# define TLS1_CK_DH_RSA_WITH_AES_128_GCM_SHA256 0x030000A0 +# define TLS1_CK_DH_RSA_WITH_AES_256_GCM_SHA384 0x030000A1 +# define TLS1_CK_DHE_DSS_WITH_AES_128_GCM_SHA256 0x030000A2 +# define TLS1_CK_DHE_DSS_WITH_AES_256_GCM_SHA384 0x030000A3 +# define TLS1_CK_DH_DSS_WITH_AES_128_GCM_SHA256 0x030000A4 +# define TLS1_CK_DH_DSS_WITH_AES_256_GCM_SHA384 0x030000A5 +# define TLS1_CK_ADH_WITH_AES_128_GCM_SHA256 0x030000A6 +# define TLS1_CK_ADH_WITH_AES_256_GCM_SHA384 0x030000A7 + +/* + * ECC ciphersuites from draft-ietf-tls-ecc-12.txt with changes soon to be in + * draft 13 + */ +# define TLS1_CK_ECDH_ECDSA_WITH_NULL_SHA 0x0300C001 +# define TLS1_CK_ECDH_ECDSA_WITH_RC4_128_SHA 0x0300C002 +# define TLS1_CK_ECDH_ECDSA_WITH_DES_192_CBC3_SHA 0x0300C003 +# define TLS1_CK_ECDH_ECDSA_WITH_AES_128_CBC_SHA 0x0300C004 +# define TLS1_CK_ECDH_ECDSA_WITH_AES_256_CBC_SHA 0x0300C005 + +# define TLS1_CK_ECDHE_ECDSA_WITH_NULL_SHA 0x0300C006 +# define TLS1_CK_ECDHE_ECDSA_WITH_RC4_128_SHA 0x0300C007 +# define TLS1_CK_ECDHE_ECDSA_WITH_DES_192_CBC3_SHA 0x0300C008 +# define TLS1_CK_ECDHE_ECDSA_WITH_AES_128_CBC_SHA 0x0300C009 +# define TLS1_CK_ECDHE_ECDSA_WITH_AES_256_CBC_SHA 0x0300C00A + +# define TLS1_CK_ECDH_RSA_WITH_NULL_SHA 0x0300C00B +# define TLS1_CK_ECDH_RSA_WITH_RC4_128_SHA 0x0300C00C +# define TLS1_CK_ECDH_RSA_WITH_DES_192_CBC3_SHA 0x0300C00D +# define TLS1_CK_ECDH_RSA_WITH_AES_128_CBC_SHA 0x0300C00E +# define TLS1_CK_ECDH_RSA_WITH_AES_256_CBC_SHA 0x0300C00F + +# define TLS1_CK_ECDHE_RSA_WITH_NULL_SHA 0x0300C010 +# define TLS1_CK_ECDHE_RSA_WITH_RC4_128_SHA 0x0300C011 +# define TLS1_CK_ECDHE_RSA_WITH_DES_192_CBC3_SHA 0x0300C012 +# define TLS1_CK_ECDHE_RSA_WITH_AES_128_CBC_SHA 0x0300C013 +# define TLS1_CK_ECDHE_RSA_WITH_AES_256_CBC_SHA 0x0300C014 + +# define TLS1_CK_ECDH_anon_WITH_NULL_SHA 0x0300C015 +# define TLS1_CK_ECDH_anon_WITH_RC4_128_SHA 0x0300C016 +# define TLS1_CK_ECDH_anon_WITH_DES_192_CBC3_SHA 0x0300C017 +# define TLS1_CK_ECDH_anon_WITH_AES_128_CBC_SHA 0x0300C018 +# define TLS1_CK_ECDH_anon_WITH_AES_256_CBC_SHA 0x0300C019 + +/* SRP ciphersuites from RFC 5054 */ +# define TLS1_CK_SRP_SHA_WITH_3DES_EDE_CBC_SHA 0x0300C01A +# define TLS1_CK_SRP_SHA_RSA_WITH_3DES_EDE_CBC_SHA 0x0300C01B +# define TLS1_CK_SRP_SHA_DSS_WITH_3DES_EDE_CBC_SHA 0x0300C01C +# define TLS1_CK_SRP_SHA_WITH_AES_128_CBC_SHA 0x0300C01D +# define TLS1_CK_SRP_SHA_RSA_WITH_AES_128_CBC_SHA 0x0300C01E +# define TLS1_CK_SRP_SHA_DSS_WITH_AES_128_CBC_SHA 0x0300C01F +# define TLS1_CK_SRP_SHA_WITH_AES_256_CBC_SHA 0x0300C020 +# define TLS1_CK_SRP_SHA_RSA_WITH_AES_256_CBC_SHA 0x0300C021 +# define TLS1_CK_SRP_SHA_DSS_WITH_AES_256_CBC_SHA 0x0300C022 + +/* ECDH HMAC based ciphersuites from RFC5289 */ + +# define TLS1_CK_ECDHE_ECDSA_WITH_AES_128_SHA256 0x0300C023 +# define TLS1_CK_ECDHE_ECDSA_WITH_AES_256_SHA384 0x0300C024 +# define TLS1_CK_ECDH_ECDSA_WITH_AES_128_SHA256 0x0300C025 +# define TLS1_CK_ECDH_ECDSA_WITH_AES_256_SHA384 0x0300C026 +# define TLS1_CK_ECDHE_RSA_WITH_AES_128_SHA256 0x0300C027 +# define TLS1_CK_ECDHE_RSA_WITH_AES_256_SHA384 0x0300C028 +# define TLS1_CK_ECDH_RSA_WITH_AES_128_SHA256 0x0300C029 +# define TLS1_CK_ECDH_RSA_WITH_AES_256_SHA384 0x0300C02A + +/* ECDH GCM based ciphersuites from RFC5289 */ +# define TLS1_CK_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 0x0300C02B +# define TLS1_CK_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 0x0300C02C +# define TLS1_CK_ECDH_ECDSA_WITH_AES_128_GCM_SHA256 0x0300C02D +# define TLS1_CK_ECDH_ECDSA_WITH_AES_256_GCM_SHA384 0x0300C02E +# define TLS1_CK_ECDHE_RSA_WITH_AES_128_GCM_SHA256 0x0300C02F +# define TLS1_CK_ECDHE_RSA_WITH_AES_256_GCM_SHA384 0x0300C030 +# define TLS1_CK_ECDH_RSA_WITH_AES_128_GCM_SHA256 0x0300C031 +# define TLS1_CK_ECDH_RSA_WITH_AES_256_GCM_SHA384 0x0300C032 + +/* + * XXX * Backward compatibility alert: + * Older versions of OpenSSL gave + * some DHE ciphers names with "EDH" + * instead of "DHE". Going forward, we + * should be using DHE + * everywhere, though we may indefinitely maintain + * aliases for users + * or configurations that used "EDH" + + */ +# define TLS1_TXT_RSA_EXPORT1024_WITH_RC4_56_MD5 "EXP1024-RC4-MD5" +# define TLS1_TXT_RSA_EXPORT1024_WITH_RC2_CBC_56_MD5 "EXP1024-RC2-CBC-MD5" +# define TLS1_TXT_RSA_EXPORT1024_WITH_DES_CBC_SHA "EXP1024-DES-CBC-SHA" +# define TLS1_TXT_DHE_DSS_EXPORT1024_WITH_DES_CBC_SHA "EXP1024-DHE-DSS-DES-CBC-SHA" +# define TLS1_TXT_RSA_EXPORT1024_WITH_RC4_56_SHA "EXP1024-RC4-SHA" +# define TLS1_TXT_DHE_DSS_EXPORT1024_WITH_RC4_56_SHA "EXP1024-DHE-DSS-RC4-SHA" +# define TLS1_TXT_DHE_DSS_WITH_RC4_128_SHA "DHE-DSS-RC4-SHA" + +/* AES ciphersuites from RFC3268 */ +# define TLS1_TXT_RSA_WITH_AES_128_SHA "AES128-SHA" +# define TLS1_TXT_DH_DSS_WITH_AES_128_SHA "DH-DSS-AES128-SHA" +# define TLS1_TXT_DH_RSA_WITH_AES_128_SHA "DH-RSA-AES128-SHA" +# define TLS1_TXT_DHE_DSS_WITH_AES_128_SHA "DHE-DSS-AES128-SHA" +# define TLS1_TXT_DHE_RSA_WITH_AES_128_SHA "DHE-RSA-AES128-SHA" +# define TLS1_TXT_ADH_WITH_AES_128_SHA "ADH-AES128-SHA" + +# define TLS1_TXT_RSA_WITH_AES_256_SHA "AES256-SHA" +# define TLS1_TXT_DH_DSS_WITH_AES_256_SHA "DH-DSS-AES256-SHA" +# define TLS1_TXT_DH_RSA_WITH_AES_256_SHA "DH-RSA-AES256-SHA" +# define TLS1_TXT_DHE_DSS_WITH_AES_256_SHA "DHE-DSS-AES256-SHA" +# define TLS1_TXT_DHE_RSA_WITH_AES_256_SHA "DHE-RSA-AES256-SHA" +# define TLS1_TXT_ADH_WITH_AES_256_SHA "ADH-AES256-SHA" + +/* ECC ciphersuites from draft-ietf-tls-ecc-01.txt (Mar 15, 2001) */ +# define TLS1_TXT_ECDH_ECDSA_WITH_NULL_SHA "ECDH-ECDSA-NULL-SHA" +# define TLS1_TXT_ECDH_ECDSA_WITH_RC4_128_SHA "ECDH-ECDSA-RC4-SHA" +# define TLS1_TXT_ECDH_ECDSA_WITH_DES_192_CBC3_SHA "ECDH-ECDSA-DES-CBC3-SHA" +# define TLS1_TXT_ECDH_ECDSA_WITH_AES_128_CBC_SHA "ECDH-ECDSA-AES128-SHA" +# define TLS1_TXT_ECDH_ECDSA_WITH_AES_256_CBC_SHA "ECDH-ECDSA-AES256-SHA" + +# define TLS1_TXT_ECDHE_ECDSA_WITH_NULL_SHA "ECDHE-ECDSA-NULL-SHA" +# define TLS1_TXT_ECDHE_ECDSA_WITH_RC4_128_SHA "ECDHE-ECDSA-RC4-SHA" +# define TLS1_TXT_ECDHE_ECDSA_WITH_DES_192_CBC3_SHA "ECDHE-ECDSA-DES-CBC3-SHA" +# define TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_CBC_SHA "ECDHE-ECDSA-AES128-SHA" +# define TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_CBC_SHA "ECDHE-ECDSA-AES256-SHA" + +# define TLS1_TXT_ECDH_RSA_WITH_NULL_SHA "ECDH-RSA-NULL-SHA" +# define TLS1_TXT_ECDH_RSA_WITH_RC4_128_SHA "ECDH-RSA-RC4-SHA" +# define TLS1_TXT_ECDH_RSA_WITH_DES_192_CBC3_SHA "ECDH-RSA-DES-CBC3-SHA" +# define TLS1_TXT_ECDH_RSA_WITH_AES_128_CBC_SHA "ECDH-RSA-AES128-SHA" +# define TLS1_TXT_ECDH_RSA_WITH_AES_256_CBC_SHA "ECDH-RSA-AES256-SHA" + +# define TLS1_TXT_ECDHE_RSA_WITH_NULL_SHA "ECDHE-RSA-NULL-SHA" +# define TLS1_TXT_ECDHE_RSA_WITH_RC4_128_SHA "ECDHE-RSA-RC4-SHA" +# define TLS1_TXT_ECDHE_RSA_WITH_DES_192_CBC3_SHA "ECDHE-RSA-DES-CBC3-SHA" +# define TLS1_TXT_ECDHE_RSA_WITH_AES_128_CBC_SHA "ECDHE-RSA-AES128-SHA" +# define TLS1_TXT_ECDHE_RSA_WITH_AES_256_CBC_SHA "ECDHE-RSA-AES256-SHA" + +# define TLS1_TXT_ECDH_anon_WITH_NULL_SHA "AECDH-NULL-SHA" +# define TLS1_TXT_ECDH_anon_WITH_RC4_128_SHA "AECDH-RC4-SHA" +# define TLS1_TXT_ECDH_anon_WITH_DES_192_CBC3_SHA "AECDH-DES-CBC3-SHA" +# define TLS1_TXT_ECDH_anon_WITH_AES_128_CBC_SHA "AECDH-AES128-SHA" +# define TLS1_TXT_ECDH_anon_WITH_AES_256_CBC_SHA "AECDH-AES256-SHA" + +/* PSK ciphersuites from RFC 4279 */ +# define TLS1_TXT_PSK_WITH_RC4_128_SHA "PSK-RC4-SHA" +# define TLS1_TXT_PSK_WITH_3DES_EDE_CBC_SHA "PSK-3DES-EDE-CBC-SHA" +# define TLS1_TXT_PSK_WITH_AES_128_CBC_SHA "PSK-AES128-CBC-SHA" +# define TLS1_TXT_PSK_WITH_AES_256_CBC_SHA "PSK-AES256-CBC-SHA" + +/* SRP ciphersuite from RFC 5054 */ +# define TLS1_TXT_SRP_SHA_WITH_3DES_EDE_CBC_SHA "SRP-3DES-EDE-CBC-SHA" +# define TLS1_TXT_SRP_SHA_RSA_WITH_3DES_EDE_CBC_SHA "SRP-RSA-3DES-EDE-CBC-SHA" +# define TLS1_TXT_SRP_SHA_DSS_WITH_3DES_EDE_CBC_SHA "SRP-DSS-3DES-EDE-CBC-SHA" +# define TLS1_TXT_SRP_SHA_WITH_AES_128_CBC_SHA "SRP-AES-128-CBC-SHA" +# define TLS1_TXT_SRP_SHA_RSA_WITH_AES_128_CBC_SHA "SRP-RSA-AES-128-CBC-SHA" +# define TLS1_TXT_SRP_SHA_DSS_WITH_AES_128_CBC_SHA "SRP-DSS-AES-128-CBC-SHA" +# define TLS1_TXT_SRP_SHA_WITH_AES_256_CBC_SHA "SRP-AES-256-CBC-SHA" +# define TLS1_TXT_SRP_SHA_RSA_WITH_AES_256_CBC_SHA "SRP-RSA-AES-256-CBC-SHA" +# define TLS1_TXT_SRP_SHA_DSS_WITH_AES_256_CBC_SHA "SRP-DSS-AES-256-CBC-SHA" + +/* Camellia ciphersuites from RFC4132 */ +# define TLS1_TXT_RSA_WITH_CAMELLIA_128_CBC_SHA "CAMELLIA128-SHA" +# define TLS1_TXT_DH_DSS_WITH_CAMELLIA_128_CBC_SHA "DH-DSS-CAMELLIA128-SHA" +# define TLS1_TXT_DH_RSA_WITH_CAMELLIA_128_CBC_SHA "DH-RSA-CAMELLIA128-SHA" +# define TLS1_TXT_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA "DHE-DSS-CAMELLIA128-SHA" +# define TLS1_TXT_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA "DHE-RSA-CAMELLIA128-SHA" +# define TLS1_TXT_ADH_WITH_CAMELLIA_128_CBC_SHA "ADH-CAMELLIA128-SHA" + +# define TLS1_TXT_RSA_WITH_CAMELLIA_256_CBC_SHA "CAMELLIA256-SHA" +# define TLS1_TXT_DH_DSS_WITH_CAMELLIA_256_CBC_SHA "DH-DSS-CAMELLIA256-SHA" +# define TLS1_TXT_DH_RSA_WITH_CAMELLIA_256_CBC_SHA "DH-RSA-CAMELLIA256-SHA" +# define TLS1_TXT_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA "DHE-DSS-CAMELLIA256-SHA" +# define TLS1_TXT_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA "DHE-RSA-CAMELLIA256-SHA" +# define TLS1_TXT_ADH_WITH_CAMELLIA_256_CBC_SHA "ADH-CAMELLIA256-SHA" + +/* SEED ciphersuites from RFC4162 */ +# define TLS1_TXT_RSA_WITH_SEED_SHA "SEED-SHA" +# define TLS1_TXT_DH_DSS_WITH_SEED_SHA "DH-DSS-SEED-SHA" +# define TLS1_TXT_DH_RSA_WITH_SEED_SHA "DH-RSA-SEED-SHA" +# define TLS1_TXT_DHE_DSS_WITH_SEED_SHA "DHE-DSS-SEED-SHA" +# define TLS1_TXT_DHE_RSA_WITH_SEED_SHA "DHE-RSA-SEED-SHA" +# define TLS1_TXT_ADH_WITH_SEED_SHA "ADH-SEED-SHA" + +/* TLS v1.2 ciphersuites */ +# define TLS1_TXT_RSA_WITH_NULL_SHA256 "NULL-SHA256" +# define TLS1_TXT_RSA_WITH_AES_128_SHA256 "AES128-SHA256" +# define TLS1_TXT_RSA_WITH_AES_256_SHA256 "AES256-SHA256" +# define TLS1_TXT_DH_DSS_WITH_AES_128_SHA256 "DH-DSS-AES128-SHA256" +# define TLS1_TXT_DH_RSA_WITH_AES_128_SHA256 "DH-RSA-AES128-SHA256" +# define TLS1_TXT_DHE_DSS_WITH_AES_128_SHA256 "DHE-DSS-AES128-SHA256" +# define TLS1_TXT_DHE_RSA_WITH_AES_128_SHA256 "DHE-RSA-AES128-SHA256" +# define TLS1_TXT_DH_DSS_WITH_AES_256_SHA256 "DH-DSS-AES256-SHA256" +# define TLS1_TXT_DH_RSA_WITH_AES_256_SHA256 "DH-RSA-AES256-SHA256" +# define TLS1_TXT_DHE_DSS_WITH_AES_256_SHA256 "DHE-DSS-AES256-SHA256" +# define TLS1_TXT_DHE_RSA_WITH_AES_256_SHA256 "DHE-RSA-AES256-SHA256" +# define TLS1_TXT_ADH_WITH_AES_128_SHA256 "ADH-AES128-SHA256" +# define TLS1_TXT_ADH_WITH_AES_256_SHA256 "ADH-AES256-SHA256" + +/* TLS v1.2 GCM ciphersuites from RFC5288 */ +# define TLS1_TXT_RSA_WITH_AES_128_GCM_SHA256 "AES128-GCM-SHA256" +# define TLS1_TXT_RSA_WITH_AES_256_GCM_SHA384 "AES256-GCM-SHA384" +# define TLS1_TXT_DHE_RSA_WITH_AES_128_GCM_SHA256 "DHE-RSA-AES128-GCM-SHA256" +# define TLS1_TXT_DHE_RSA_WITH_AES_256_GCM_SHA384 "DHE-RSA-AES256-GCM-SHA384" +# define TLS1_TXT_DH_RSA_WITH_AES_128_GCM_SHA256 "DH-RSA-AES128-GCM-SHA256" +# define TLS1_TXT_DH_RSA_WITH_AES_256_GCM_SHA384 "DH-RSA-AES256-GCM-SHA384" +# define TLS1_TXT_DHE_DSS_WITH_AES_128_GCM_SHA256 "DHE-DSS-AES128-GCM-SHA256" +# define TLS1_TXT_DHE_DSS_WITH_AES_256_GCM_SHA384 "DHE-DSS-AES256-GCM-SHA384" +# define TLS1_TXT_DH_DSS_WITH_AES_128_GCM_SHA256 "DH-DSS-AES128-GCM-SHA256" +# define TLS1_TXT_DH_DSS_WITH_AES_256_GCM_SHA384 "DH-DSS-AES256-GCM-SHA384" +# define TLS1_TXT_ADH_WITH_AES_128_GCM_SHA256 "ADH-AES128-GCM-SHA256" +# define TLS1_TXT_ADH_WITH_AES_256_GCM_SHA384 "ADH-AES256-GCM-SHA384" + +/* ECDH HMAC based ciphersuites from RFC5289 */ + +# define TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_SHA256 "ECDHE-ECDSA-AES128-SHA256" +# define TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_SHA384 "ECDHE-ECDSA-AES256-SHA384" +# define TLS1_TXT_ECDH_ECDSA_WITH_AES_128_SHA256 "ECDH-ECDSA-AES128-SHA256" +# define TLS1_TXT_ECDH_ECDSA_WITH_AES_256_SHA384 "ECDH-ECDSA-AES256-SHA384" +# define TLS1_TXT_ECDHE_RSA_WITH_AES_128_SHA256 "ECDHE-RSA-AES128-SHA256" +# define TLS1_TXT_ECDHE_RSA_WITH_AES_256_SHA384 "ECDHE-RSA-AES256-SHA384" +# define TLS1_TXT_ECDH_RSA_WITH_AES_128_SHA256 "ECDH-RSA-AES128-SHA256" +# define TLS1_TXT_ECDH_RSA_WITH_AES_256_SHA384 "ECDH-RSA-AES256-SHA384" + +/* ECDH GCM based ciphersuites from RFC5289 */ +# define TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 "ECDHE-ECDSA-AES128-GCM-SHA256" +# define TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 "ECDHE-ECDSA-AES256-GCM-SHA384" +# define TLS1_TXT_ECDH_ECDSA_WITH_AES_128_GCM_SHA256 "ECDH-ECDSA-AES128-GCM-SHA256" +# define TLS1_TXT_ECDH_ECDSA_WITH_AES_256_GCM_SHA384 "ECDH-ECDSA-AES256-GCM-SHA384" +# define TLS1_TXT_ECDHE_RSA_WITH_AES_128_GCM_SHA256 "ECDHE-RSA-AES128-GCM-SHA256" +# define TLS1_TXT_ECDHE_RSA_WITH_AES_256_GCM_SHA384 "ECDHE-RSA-AES256-GCM-SHA384" +# define TLS1_TXT_ECDH_RSA_WITH_AES_128_GCM_SHA256 "ECDH-RSA-AES128-GCM-SHA256" +# define TLS1_TXT_ECDH_RSA_WITH_AES_256_GCM_SHA384 "ECDH-RSA-AES256-GCM-SHA384" + +# define TLS_CT_RSA_SIGN 1 +# define TLS_CT_DSS_SIGN 2 +# define TLS_CT_RSA_FIXED_DH 3 +# define TLS_CT_DSS_FIXED_DH 4 +# define TLS_CT_ECDSA_SIGN 64 +# define TLS_CT_RSA_FIXED_ECDH 65 +# define TLS_CT_ECDSA_FIXED_ECDH 66 +# define TLS_CT_GOST94_SIGN 21 +# define TLS_CT_GOST01_SIGN 22 +/* + * when correcting this number, correct also SSL3_CT_NUMBER in ssl3.h (see + * comment there) + */ +# define TLS_CT_NUMBER 9 + +# define TLS1_FINISH_MAC_LENGTH 12 + +# define TLS_MD_MAX_CONST_SIZE 20 +# define TLS_MD_CLIENT_FINISH_CONST "client finished" +# define TLS_MD_CLIENT_FINISH_CONST_SIZE 15 +# define TLS_MD_SERVER_FINISH_CONST "server finished" +# define TLS_MD_SERVER_FINISH_CONST_SIZE 15 +# define TLS_MD_SERVER_WRITE_KEY_CONST "server write key" +# define TLS_MD_SERVER_WRITE_KEY_CONST_SIZE 16 +# define TLS_MD_KEY_EXPANSION_CONST "key expansion" +# define TLS_MD_KEY_EXPANSION_CONST_SIZE 13 +# define TLS_MD_CLIENT_WRITE_KEY_CONST "client write key" +# define TLS_MD_CLIENT_WRITE_KEY_CONST_SIZE 16 +# define TLS_MD_SERVER_WRITE_KEY_CONST "server write key" +# define TLS_MD_SERVER_WRITE_KEY_CONST_SIZE 16 +# define TLS_MD_IV_BLOCK_CONST "IV block" +# define TLS_MD_IV_BLOCK_CONST_SIZE 8 +# define TLS_MD_MASTER_SECRET_CONST "master secret" +# define TLS_MD_MASTER_SECRET_CONST_SIZE 13 + +# ifdef CHARSET_EBCDIC +# undef TLS_MD_CLIENT_FINISH_CONST +/* + * client finished + */ +# define TLS_MD_CLIENT_FINISH_CONST "\x63\x6c\x69\x65\x6e\x74\x20\x66\x69\x6e\x69\x73\x68\x65\x64" + +# undef TLS_MD_SERVER_FINISH_CONST +/* + * server finished + */ +# define TLS_MD_SERVER_FINISH_CONST "\x73\x65\x72\x76\x65\x72\x20\x66\x69\x6e\x69\x73\x68\x65\x64" + +# undef TLS_MD_SERVER_WRITE_KEY_CONST +/* + * server write key + */ +# define TLS_MD_SERVER_WRITE_KEY_CONST "\x73\x65\x72\x76\x65\x72\x20\x77\x72\x69\x74\x65\x20\x6b\x65\x79" + +# undef TLS_MD_KEY_EXPANSION_CONST +/* + * key expansion + */ +# define TLS_MD_KEY_EXPANSION_CONST "\x6b\x65\x79\x20\x65\x78\x70\x61\x6e\x73\x69\x6f\x6e" + +# undef TLS_MD_CLIENT_WRITE_KEY_CONST +/* + * client write key + */ +# define TLS_MD_CLIENT_WRITE_KEY_CONST "\x63\x6c\x69\x65\x6e\x74\x20\x77\x72\x69\x74\x65\x20\x6b\x65\x79" + +# undef TLS_MD_SERVER_WRITE_KEY_CONST +/* + * server write key + */ +# define TLS_MD_SERVER_WRITE_KEY_CONST "\x73\x65\x72\x76\x65\x72\x20\x77\x72\x69\x74\x65\x20\x6b\x65\x79" + +# undef TLS_MD_IV_BLOCK_CONST +/* + * IV block + */ +# define TLS_MD_IV_BLOCK_CONST "\x49\x56\x20\x62\x6c\x6f\x63\x6b" + +# undef TLS_MD_MASTER_SECRET_CONST +/* + * master secret + */ +# define TLS_MD_MASTER_SECRET_CONST "\x6d\x61\x73\x74\x65\x72\x20\x73\x65\x63\x72\x65\x74" +# endif + +/* TLS Session Ticket extension struct */ +struct tls_session_ticket_ext_st { + unsigned short length; + void *data; +}; + +#ifdef __cplusplus +} +#endif +#endif diff --git a/ext/openssl-win32/inc32/openssl/x509.h b/ext/openssl-win32/inc32/openssl/x509.h new file mode 100644 index 00000000..99337b84 --- /dev/null +++ b/ext/openssl-win32/inc32/openssl/x509.h @@ -0,0 +1,1327 @@ +/* crypto/x509/x509.h */ +/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) + * All rights reserved. + * + * This package is an SSL implementation written + * by Eric Young (eay@cryptsoft.com). + * The implementation was written so as to conform with Netscapes SSL. + * + * This library is free for commercial and non-commercial use as long as + * the following conditions are aheared to. The following conditions + * apply to all code found in this distribution, be it the RC4, RSA, + * lhash, DES, etc., code; not just the SSL code. The SSL documentation + * included with this distribution is covered by the same copyright terms + * except that the holder is Tim Hudson (tjh@cryptsoft.com). + * + * Copyright remains Eric Young's, and as such any Copyright notices in + * the code are not to be removed. + * If this package is used in a product, Eric Young should be given attribution + * as the author of the parts of the library used. + * This can be in the form of a textual message at program startup or + * in documentation (online or textual) provided with the package. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * "This product includes cryptographic software written by + * Eric Young (eay@cryptsoft.com)" + * The word 'cryptographic' can be left out if the rouines from the library + * being used are not cryptographic related :-). + * 4. If you include any Windows specific code (or a derivative thereof) from + * the apps directory (application code) you must include an acknowledgement: + * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" + * + * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * The licence and distribution terms for any publically available version or + * derivative of this code cannot be changed. i.e. this code cannot simply be + * copied and put under another distribution licence + * [including the GNU Public Licence.] + */ +/* ==================================================================== + * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED. + * ECDH support in OpenSSL originally developed by + * SUN MICROSYSTEMS, INC., and contributed to the OpenSSL project. + */ + +#ifndef HEADER_X509_H +# define HEADER_X509_H + +# include +# include +# ifndef OPENSSL_NO_BUFFER +# include +# endif +# ifndef OPENSSL_NO_EVP +# include +# endif +# ifndef OPENSSL_NO_BIO +# include +# endif +# include +# include +# include + +# ifndef OPENSSL_NO_EC +# include +# endif + +# ifndef OPENSSL_NO_ECDSA +# include +# endif + +# ifndef OPENSSL_NO_ECDH +# include +# endif + +# ifndef OPENSSL_NO_DEPRECATED +# ifndef OPENSSL_NO_RSA +# include +# endif +# ifndef OPENSSL_NO_DSA +# include +# endif +# ifndef OPENSSL_NO_DH +# include +# endif +# endif + +# ifndef OPENSSL_NO_SHA +# include +# endif +# include + +#ifdef __cplusplus +extern "C" { +#endif + +# ifdef OPENSSL_SYS_WIN32 +/* Under Win32 these are defined in wincrypt.h */ +# undef X509_NAME +# undef X509_CERT_PAIR +# undef X509_EXTENSIONS +# endif + +# define X509_FILETYPE_PEM 1 +# define X509_FILETYPE_ASN1 2 +# define X509_FILETYPE_DEFAULT 3 + +# define X509v3_KU_DIGITAL_SIGNATURE 0x0080 +# define X509v3_KU_NON_REPUDIATION 0x0040 +# define X509v3_KU_KEY_ENCIPHERMENT 0x0020 +# define X509v3_KU_DATA_ENCIPHERMENT 0x0010 +# define X509v3_KU_KEY_AGREEMENT 0x0008 +# define X509v3_KU_KEY_CERT_SIGN 0x0004 +# define X509v3_KU_CRL_SIGN 0x0002 +# define X509v3_KU_ENCIPHER_ONLY 0x0001 +# define X509v3_KU_DECIPHER_ONLY 0x8000 +# define X509v3_KU_UNDEF 0xffff + +typedef struct X509_objects_st { + int nid; + int (*a2i) (void); + int (*i2a) (void); +} X509_OBJECTS; + +struct X509_algor_st { + ASN1_OBJECT *algorithm; + ASN1_TYPE *parameter; +} /* X509_ALGOR */ ; + +DECLARE_ASN1_SET_OF(X509_ALGOR) + +typedef STACK_OF(X509_ALGOR) X509_ALGORS; + +typedef struct X509_val_st { + ASN1_TIME *notBefore; + ASN1_TIME *notAfter; +} X509_VAL; + +struct X509_pubkey_st { + X509_ALGOR *algor; + ASN1_BIT_STRING *public_key; + EVP_PKEY *pkey; +}; + +typedef struct X509_sig_st { + X509_ALGOR *algor; + ASN1_OCTET_STRING *digest; +} X509_SIG; + +typedef struct X509_name_entry_st { + ASN1_OBJECT *object; + ASN1_STRING *value; + int set; + int size; /* temp variable */ +} X509_NAME_ENTRY; + +DECLARE_STACK_OF(X509_NAME_ENTRY) +DECLARE_ASN1_SET_OF(X509_NAME_ENTRY) + +/* we always keep X509_NAMEs in 2 forms. */ +struct X509_name_st { + STACK_OF(X509_NAME_ENTRY) *entries; + int modified; /* true if 'bytes' needs to be built */ +# ifndef OPENSSL_NO_BUFFER + BUF_MEM *bytes; +# else + char *bytes; +# endif +/* unsigned long hash; Keep the hash around for lookups */ + unsigned char *canon_enc; + int canon_enclen; +} /* X509_NAME */ ; + +DECLARE_STACK_OF(X509_NAME) + +# define X509_EX_V_NETSCAPE_HACK 0x8000 +# define X509_EX_V_INIT 0x0001 +typedef struct X509_extension_st { + ASN1_OBJECT *object; + ASN1_BOOLEAN critical; + ASN1_OCTET_STRING *value; +} X509_EXTENSION; + +typedef STACK_OF(X509_EXTENSION) X509_EXTENSIONS; + +DECLARE_STACK_OF(X509_EXTENSION) +DECLARE_ASN1_SET_OF(X509_EXTENSION) + +/* a sequence of these are used */ +typedef struct x509_attributes_st { + ASN1_OBJECT *object; + int single; /* 0 for a set, 1 for a single item (which is + * wrong) */ + union { + char *ptr; + /* + * 0 + */ STACK_OF(ASN1_TYPE) *set; + /* + * 1 + */ ASN1_TYPE *single; + } value; +} X509_ATTRIBUTE; + +DECLARE_STACK_OF(X509_ATTRIBUTE) +DECLARE_ASN1_SET_OF(X509_ATTRIBUTE) + +typedef struct X509_req_info_st { + ASN1_ENCODING enc; + ASN1_INTEGER *version; + X509_NAME *subject; + X509_PUBKEY *pubkey; + /* d=2 hl=2 l= 0 cons: cont: 00 */ + STACK_OF(X509_ATTRIBUTE) *attributes; /* [ 0 ] */ +} X509_REQ_INFO; + +typedef struct X509_req_st { + X509_REQ_INFO *req_info; + X509_ALGOR *sig_alg; + ASN1_BIT_STRING *signature; + int references; +} X509_REQ; + +typedef struct x509_cinf_st { + ASN1_INTEGER *version; /* [ 0 ] default of v1 */ + ASN1_INTEGER *serialNumber; + X509_ALGOR *signature; + X509_NAME *issuer; + X509_VAL *validity; + X509_NAME *subject; + X509_PUBKEY *key; + ASN1_BIT_STRING *issuerUID; /* [ 1 ] optional in v2 */ + ASN1_BIT_STRING *subjectUID; /* [ 2 ] optional in v2 */ + STACK_OF(X509_EXTENSION) *extensions; /* [ 3 ] optional in v3 */ + ASN1_ENCODING enc; +} X509_CINF; + +/* + * This stuff is certificate "auxiliary info" it contains details which are + * useful in certificate stores and databases. When used this is tagged onto + * the end of the certificate itself + */ + +typedef struct x509_cert_aux_st { + STACK_OF(ASN1_OBJECT) *trust; /* trusted uses */ + STACK_OF(ASN1_OBJECT) *reject; /* rejected uses */ + ASN1_UTF8STRING *alias; /* "friendly name" */ + ASN1_OCTET_STRING *keyid; /* key id of private key */ + STACK_OF(X509_ALGOR) *other; /* other unspecified info */ +} X509_CERT_AUX; + +struct x509_st { + X509_CINF *cert_info; + X509_ALGOR *sig_alg; + ASN1_BIT_STRING *signature; + int valid; + int references; + char *name; + CRYPTO_EX_DATA ex_data; + /* These contain copies of various extension values */ + long ex_pathlen; + long ex_pcpathlen; + unsigned long ex_flags; + unsigned long ex_kusage; + unsigned long ex_xkusage; + unsigned long ex_nscert; + ASN1_OCTET_STRING *skid; + AUTHORITY_KEYID *akid; + X509_POLICY_CACHE *policy_cache; + STACK_OF(DIST_POINT) *crldp; + STACK_OF(GENERAL_NAME) *altname; + NAME_CONSTRAINTS *nc; +# ifndef OPENSSL_NO_RFC3779 + STACK_OF(IPAddressFamily) *rfc3779_addr; + struct ASIdentifiers_st *rfc3779_asid; +# endif +# ifndef OPENSSL_NO_SHA + unsigned char sha1_hash[SHA_DIGEST_LENGTH]; +# endif + X509_CERT_AUX *aux; +} /* X509 */ ; + +DECLARE_STACK_OF(X509) +DECLARE_ASN1_SET_OF(X509) + +/* This is used for a table of trust checking functions */ + +typedef struct x509_trust_st { + int trust; + int flags; + int (*check_trust) (struct x509_trust_st *, X509 *, int); + char *name; + int arg1; + void *arg2; +} X509_TRUST; + +DECLARE_STACK_OF(X509_TRUST) + +typedef struct x509_cert_pair_st { + X509 *forward; + X509 *reverse; +} X509_CERT_PAIR; + +/* standard trust ids */ + +# define X509_TRUST_DEFAULT -1/* Only valid in purpose settings */ + +# define X509_TRUST_COMPAT 1 +# define X509_TRUST_SSL_CLIENT 2 +# define X509_TRUST_SSL_SERVER 3 +# define X509_TRUST_EMAIL 4 +# define X509_TRUST_OBJECT_SIGN 5 +# define X509_TRUST_OCSP_SIGN 6 +# define X509_TRUST_OCSP_REQUEST 7 +# define X509_TRUST_TSA 8 + +/* Keep these up to date! */ +# define X509_TRUST_MIN 1 +# define X509_TRUST_MAX 8 + +/* trust_flags values */ +# define X509_TRUST_DYNAMIC 1 +# define X509_TRUST_DYNAMIC_NAME 2 + +/* check_trust return codes */ + +# define X509_TRUST_TRUSTED 1 +# define X509_TRUST_REJECTED 2 +# define X509_TRUST_UNTRUSTED 3 + +/* Flags for X509_print_ex() */ + +# define X509_FLAG_COMPAT 0 +# define X509_FLAG_NO_HEADER 1L +# define X509_FLAG_NO_VERSION (1L << 1) +# define X509_FLAG_NO_SERIAL (1L << 2) +# define X509_FLAG_NO_SIGNAME (1L << 3) +# define X509_FLAG_NO_ISSUER (1L << 4) +# define X509_FLAG_NO_VALIDITY (1L << 5) +# define X509_FLAG_NO_SUBJECT (1L << 6) +# define X509_FLAG_NO_PUBKEY (1L << 7) +# define X509_FLAG_NO_EXTENSIONS (1L << 8) +# define X509_FLAG_NO_SIGDUMP (1L << 9) +# define X509_FLAG_NO_AUX (1L << 10) +# define X509_FLAG_NO_ATTRIBUTES (1L << 11) +# define X509_FLAG_NO_IDS (1L << 12) + +/* Flags specific to X509_NAME_print_ex() */ + +/* The field separator information */ + +# define XN_FLAG_SEP_MASK (0xf << 16) + +# define XN_FLAG_COMPAT 0/* Traditional SSLeay: use old + * X509_NAME_print */ +# define XN_FLAG_SEP_COMMA_PLUS (1 << 16)/* RFC2253 ,+ */ +# define XN_FLAG_SEP_CPLUS_SPC (2 << 16)/* ,+ spaced: more readable */ +# define XN_FLAG_SEP_SPLUS_SPC (3 << 16)/* ;+ spaced */ +# define XN_FLAG_SEP_MULTILINE (4 << 16)/* One line per field */ + +# define XN_FLAG_DN_REV (1 << 20)/* Reverse DN order */ + +/* How the field name is shown */ + +# define XN_FLAG_FN_MASK (0x3 << 21) + +# define XN_FLAG_FN_SN 0/* Object short name */ +# define XN_FLAG_FN_LN (1 << 21)/* Object long name */ +# define XN_FLAG_FN_OID (2 << 21)/* Always use OIDs */ +# define XN_FLAG_FN_NONE (3 << 21)/* No field names */ + +# define XN_FLAG_SPC_EQ (1 << 23)/* Put spaces round '=' */ + +/* + * This determines if we dump fields we don't recognise: RFC2253 requires + * this. + */ + +# define XN_FLAG_DUMP_UNKNOWN_FIELDS (1 << 24) + +# define XN_FLAG_FN_ALIGN (1 << 25)/* Align field names to 20 + * characters */ + +/* Complete set of RFC2253 flags */ + +# define XN_FLAG_RFC2253 (ASN1_STRFLGS_RFC2253 | \ + XN_FLAG_SEP_COMMA_PLUS | \ + XN_FLAG_DN_REV | \ + XN_FLAG_FN_SN | \ + XN_FLAG_DUMP_UNKNOWN_FIELDS) + +/* readable oneline form */ + +# define XN_FLAG_ONELINE (ASN1_STRFLGS_RFC2253 | \ + ASN1_STRFLGS_ESC_QUOTE | \ + XN_FLAG_SEP_CPLUS_SPC | \ + XN_FLAG_SPC_EQ | \ + XN_FLAG_FN_SN) + +/* readable multiline form */ + +# define XN_FLAG_MULTILINE (ASN1_STRFLGS_ESC_CTRL | \ + ASN1_STRFLGS_ESC_MSB | \ + XN_FLAG_SEP_MULTILINE | \ + XN_FLAG_SPC_EQ | \ + XN_FLAG_FN_LN | \ + XN_FLAG_FN_ALIGN) + +struct x509_revoked_st { + ASN1_INTEGER *serialNumber; + ASN1_TIME *revocationDate; + STACK_OF(X509_EXTENSION) /* optional */ *extensions; + /* Set up if indirect CRL */ + STACK_OF(GENERAL_NAME) *issuer; + /* Revocation reason */ + int reason; + int sequence; /* load sequence */ +}; + +DECLARE_STACK_OF(X509_REVOKED) +DECLARE_ASN1_SET_OF(X509_REVOKED) + +typedef struct X509_crl_info_st { + ASN1_INTEGER *version; + X509_ALGOR *sig_alg; + X509_NAME *issuer; + ASN1_TIME *lastUpdate; + ASN1_TIME *nextUpdate; + STACK_OF(X509_REVOKED) *revoked; + STACK_OF(X509_EXTENSION) /* [0] */ *extensions; + ASN1_ENCODING enc; +} X509_CRL_INFO; + +struct X509_crl_st { + /* actual signature */ + X509_CRL_INFO *crl; + X509_ALGOR *sig_alg; + ASN1_BIT_STRING *signature; + int references; + int flags; + /* Copies of various extensions */ + AUTHORITY_KEYID *akid; + ISSUING_DIST_POINT *idp; + /* Convenient breakdown of IDP */ + int idp_flags; + int idp_reasons; + /* CRL and base CRL numbers for delta processing */ + ASN1_INTEGER *crl_number; + ASN1_INTEGER *base_crl_number; +# ifndef OPENSSL_NO_SHA + unsigned char sha1_hash[SHA_DIGEST_LENGTH]; +# endif + STACK_OF(GENERAL_NAMES) *issuers; + const X509_CRL_METHOD *meth; + void *meth_data; +} /* X509_CRL */ ; + +DECLARE_STACK_OF(X509_CRL) +DECLARE_ASN1_SET_OF(X509_CRL) + +typedef struct private_key_st { + int version; + /* The PKCS#8 data types */ + X509_ALGOR *enc_algor; + ASN1_OCTET_STRING *enc_pkey; /* encrypted pub key */ + /* When decrypted, the following will not be NULL */ + EVP_PKEY *dec_pkey; + /* used to encrypt and decrypt */ + int key_length; + char *key_data; + int key_free; /* true if we should auto free key_data */ + /* expanded version of 'enc_algor' */ + EVP_CIPHER_INFO cipher; + int references; +} X509_PKEY; + +# ifndef OPENSSL_NO_EVP +typedef struct X509_info_st { + X509 *x509; + X509_CRL *crl; + X509_PKEY *x_pkey; + EVP_CIPHER_INFO enc_cipher; + int enc_len; + char *enc_data; + int references; +} X509_INFO; + +DECLARE_STACK_OF(X509_INFO) +# endif + +/* + * The next 2 structures and their 8 routines were sent to me by Pat Richard + * and are used to manipulate Netscapes spki structures - + * useful if you are writing a CA web page + */ +typedef struct Netscape_spkac_st { + X509_PUBKEY *pubkey; + ASN1_IA5STRING *challenge; /* challenge sent in atlas >= PR2 */ +} NETSCAPE_SPKAC; + +typedef struct Netscape_spki_st { + NETSCAPE_SPKAC *spkac; /* signed public key and challenge */ + X509_ALGOR *sig_algor; + ASN1_BIT_STRING *signature; +} NETSCAPE_SPKI; + +/* Netscape certificate sequence structure */ +typedef struct Netscape_certificate_sequence { + ASN1_OBJECT *type; + STACK_OF(X509) *certs; +} NETSCAPE_CERT_SEQUENCE; + +/*- Unused (and iv length is wrong) +typedef struct CBCParameter_st + { + unsigned char iv[8]; + } CBC_PARAM; +*/ + +/* Password based encryption structure */ + +typedef struct PBEPARAM_st { + ASN1_OCTET_STRING *salt; + ASN1_INTEGER *iter; +} PBEPARAM; + +/* Password based encryption V2 structures */ + +typedef struct PBE2PARAM_st { + X509_ALGOR *keyfunc; + X509_ALGOR *encryption; +} PBE2PARAM; + +typedef struct PBKDF2PARAM_st { +/* Usually OCTET STRING but could be anything */ + ASN1_TYPE *salt; + ASN1_INTEGER *iter; + ASN1_INTEGER *keylength; + X509_ALGOR *prf; +} PBKDF2PARAM; + +/* PKCS#8 private key info structure */ + +struct pkcs8_priv_key_info_st { + /* Flag for various broken formats */ + int broken; +# define PKCS8_OK 0 +# define PKCS8_NO_OCTET 1 +# define PKCS8_EMBEDDED_PARAM 2 +# define PKCS8_NS_DB 3 +# define PKCS8_NEG_PRIVKEY 4 + ASN1_INTEGER *version; + X509_ALGOR *pkeyalg; + /* Should be OCTET STRING but some are broken */ + ASN1_TYPE *pkey; + STACK_OF(X509_ATTRIBUTE) *attributes; +}; + +#ifdef __cplusplus +} +#endif + +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +# define X509_EXT_PACK_UNKNOWN 1 +# define X509_EXT_PACK_STRING 2 + +# define X509_get_version(x) ASN1_INTEGER_get((x)->cert_info->version) +/* #define X509_get_serialNumber(x) ((x)->cert_info->serialNumber) */ +# define X509_get_notBefore(x) ((x)->cert_info->validity->notBefore) +# define X509_get_notAfter(x) ((x)->cert_info->validity->notAfter) +# define X509_extract_key(x) X509_get_pubkey(x)/*****/ +# define X509_REQ_get_version(x) ASN1_INTEGER_get((x)->req_info->version) +# define X509_REQ_get_subject_name(x) ((x)->req_info->subject) +# define X509_REQ_extract_key(a) X509_REQ_get_pubkey(a) +# define X509_name_cmp(a,b) X509_NAME_cmp((a),(b)) +# define X509_get_signature_type(x) EVP_PKEY_type(OBJ_obj2nid((x)->sig_alg->algorithm)) + +# define X509_CRL_get_version(x) ASN1_INTEGER_get((x)->crl->version) +# define X509_CRL_get_lastUpdate(x) ((x)->crl->lastUpdate) +# define X509_CRL_get_nextUpdate(x) ((x)->crl->nextUpdate) +# define X509_CRL_get_issuer(x) ((x)->crl->issuer) +# define X509_CRL_get_REVOKED(x) ((x)->crl->revoked) + +void X509_CRL_set_default_method(const X509_CRL_METHOD *meth); +X509_CRL_METHOD *X509_CRL_METHOD_new(int (*crl_init) (X509_CRL *crl), + int (*crl_free) (X509_CRL *crl), + int (*crl_lookup) (X509_CRL *crl, + X509_REVOKED **ret, + ASN1_INTEGER *ser, + X509_NAME *issuer), + int (*crl_verify) (X509_CRL *crl, + EVP_PKEY *pk)); +void X509_CRL_METHOD_free(X509_CRL_METHOD *m); + +void X509_CRL_set_meth_data(X509_CRL *crl, void *dat); +void *X509_CRL_get_meth_data(X509_CRL *crl); + +/* + * This one is only used so that a binary form can output, as in + * i2d_X509_NAME(X509_get_X509_PUBKEY(x),&buf) + */ +# define X509_get_X509_PUBKEY(x) ((x)->cert_info->key) + +const char *X509_verify_cert_error_string(long n); + +# ifndef OPENSSL_NO_EVP +int X509_verify(X509 *a, EVP_PKEY *r); + +int X509_REQ_verify(X509_REQ *a, EVP_PKEY *r); +int X509_CRL_verify(X509_CRL *a, EVP_PKEY *r); +int NETSCAPE_SPKI_verify(NETSCAPE_SPKI *a, EVP_PKEY *r); + +NETSCAPE_SPKI *NETSCAPE_SPKI_b64_decode(const char *str, int len); +char *NETSCAPE_SPKI_b64_encode(NETSCAPE_SPKI *x); +EVP_PKEY *NETSCAPE_SPKI_get_pubkey(NETSCAPE_SPKI *x); +int NETSCAPE_SPKI_set_pubkey(NETSCAPE_SPKI *x, EVP_PKEY *pkey); + +int NETSCAPE_SPKI_print(BIO *out, NETSCAPE_SPKI *spki); + +int X509_signature_dump(BIO *bp, const ASN1_STRING *sig, int indent); +int X509_signature_print(BIO *bp, X509_ALGOR *alg, ASN1_STRING *sig); + +int X509_sign(X509 *x, EVP_PKEY *pkey, const EVP_MD *md); +int X509_sign_ctx(X509 *x, EVP_MD_CTX *ctx); +int X509_http_nbio(OCSP_REQ_CTX *rctx, X509 **pcert); +int X509_REQ_sign(X509_REQ *x, EVP_PKEY *pkey, const EVP_MD *md); +int X509_REQ_sign_ctx(X509_REQ *x, EVP_MD_CTX *ctx); +int X509_CRL_sign(X509_CRL *x, EVP_PKEY *pkey, const EVP_MD *md); +int X509_CRL_sign_ctx(X509_CRL *x, EVP_MD_CTX *ctx); +int X509_CRL_http_nbio(OCSP_REQ_CTX *rctx, X509_CRL **pcrl); +int NETSCAPE_SPKI_sign(NETSCAPE_SPKI *x, EVP_PKEY *pkey, const EVP_MD *md); + +int X509_pubkey_digest(const X509 *data, const EVP_MD *type, + unsigned char *md, unsigned int *len); +int X509_digest(const X509 *data, const EVP_MD *type, + unsigned char *md, unsigned int *len); +int X509_CRL_digest(const X509_CRL *data, const EVP_MD *type, + unsigned char *md, unsigned int *len); +int X509_REQ_digest(const X509_REQ *data, const EVP_MD *type, + unsigned char *md, unsigned int *len); +int X509_NAME_digest(const X509_NAME *data, const EVP_MD *type, + unsigned char *md, unsigned int *len); +# endif + +# ifndef OPENSSL_NO_FP_API +X509 *d2i_X509_fp(FILE *fp, X509 **x509); +int i2d_X509_fp(FILE *fp, X509 *x509); +X509_CRL *d2i_X509_CRL_fp(FILE *fp, X509_CRL **crl); +int i2d_X509_CRL_fp(FILE *fp, X509_CRL *crl); +X509_REQ *d2i_X509_REQ_fp(FILE *fp, X509_REQ **req); +int i2d_X509_REQ_fp(FILE *fp, X509_REQ *req); +# ifndef OPENSSL_NO_RSA +RSA *d2i_RSAPrivateKey_fp(FILE *fp, RSA **rsa); +int i2d_RSAPrivateKey_fp(FILE *fp, RSA *rsa); +RSA *d2i_RSAPublicKey_fp(FILE *fp, RSA **rsa); +int i2d_RSAPublicKey_fp(FILE *fp, RSA *rsa); +RSA *d2i_RSA_PUBKEY_fp(FILE *fp, RSA **rsa); +int i2d_RSA_PUBKEY_fp(FILE *fp, RSA *rsa); +# endif +# ifndef OPENSSL_NO_DSA +DSA *d2i_DSA_PUBKEY_fp(FILE *fp, DSA **dsa); +int i2d_DSA_PUBKEY_fp(FILE *fp, DSA *dsa); +DSA *d2i_DSAPrivateKey_fp(FILE *fp, DSA **dsa); +int i2d_DSAPrivateKey_fp(FILE *fp, DSA *dsa); +# endif +# ifndef OPENSSL_NO_EC +EC_KEY *d2i_EC_PUBKEY_fp(FILE *fp, EC_KEY **eckey); +int i2d_EC_PUBKEY_fp(FILE *fp, EC_KEY *eckey); +EC_KEY *d2i_ECPrivateKey_fp(FILE *fp, EC_KEY **eckey); +int i2d_ECPrivateKey_fp(FILE *fp, EC_KEY *eckey); +# endif +X509_SIG *d2i_PKCS8_fp(FILE *fp, X509_SIG **p8); +int i2d_PKCS8_fp(FILE *fp, X509_SIG *p8); +PKCS8_PRIV_KEY_INFO *d2i_PKCS8_PRIV_KEY_INFO_fp(FILE *fp, + PKCS8_PRIV_KEY_INFO **p8inf); +int i2d_PKCS8_PRIV_KEY_INFO_fp(FILE *fp, PKCS8_PRIV_KEY_INFO *p8inf); +int i2d_PKCS8PrivateKeyInfo_fp(FILE *fp, EVP_PKEY *key); +int i2d_PrivateKey_fp(FILE *fp, EVP_PKEY *pkey); +EVP_PKEY *d2i_PrivateKey_fp(FILE *fp, EVP_PKEY **a); +int i2d_PUBKEY_fp(FILE *fp, EVP_PKEY *pkey); +EVP_PKEY *d2i_PUBKEY_fp(FILE *fp, EVP_PKEY **a); +# endif + +# ifndef OPENSSL_NO_BIO +X509 *d2i_X509_bio(BIO *bp, X509 **x509); +int i2d_X509_bio(BIO *bp, X509 *x509); +X509_CRL *d2i_X509_CRL_bio(BIO *bp, X509_CRL **crl); +int i2d_X509_CRL_bio(BIO *bp, X509_CRL *crl); +X509_REQ *d2i_X509_REQ_bio(BIO *bp, X509_REQ **req); +int i2d_X509_REQ_bio(BIO *bp, X509_REQ *req); +# ifndef OPENSSL_NO_RSA +RSA *d2i_RSAPrivateKey_bio(BIO *bp, RSA **rsa); +int i2d_RSAPrivateKey_bio(BIO *bp, RSA *rsa); +RSA *d2i_RSAPublicKey_bio(BIO *bp, RSA **rsa); +int i2d_RSAPublicKey_bio(BIO *bp, RSA *rsa); +RSA *d2i_RSA_PUBKEY_bio(BIO *bp, RSA **rsa); +int i2d_RSA_PUBKEY_bio(BIO *bp, RSA *rsa); +# endif +# ifndef OPENSSL_NO_DSA +DSA *d2i_DSA_PUBKEY_bio(BIO *bp, DSA **dsa); +int i2d_DSA_PUBKEY_bio(BIO *bp, DSA *dsa); +DSA *d2i_DSAPrivateKey_bio(BIO *bp, DSA **dsa); +int i2d_DSAPrivateKey_bio(BIO *bp, DSA *dsa); +# endif +# ifndef OPENSSL_NO_EC +EC_KEY *d2i_EC_PUBKEY_bio(BIO *bp, EC_KEY **eckey); +int i2d_EC_PUBKEY_bio(BIO *bp, EC_KEY *eckey); +EC_KEY *d2i_ECPrivateKey_bio(BIO *bp, EC_KEY **eckey); +int i2d_ECPrivateKey_bio(BIO *bp, EC_KEY *eckey); +# endif +X509_SIG *d2i_PKCS8_bio(BIO *bp, X509_SIG **p8); +int i2d_PKCS8_bio(BIO *bp, X509_SIG *p8); +PKCS8_PRIV_KEY_INFO *d2i_PKCS8_PRIV_KEY_INFO_bio(BIO *bp, + PKCS8_PRIV_KEY_INFO **p8inf); +int i2d_PKCS8_PRIV_KEY_INFO_bio(BIO *bp, PKCS8_PRIV_KEY_INFO *p8inf); +int i2d_PKCS8PrivateKeyInfo_bio(BIO *bp, EVP_PKEY *key); +int i2d_PrivateKey_bio(BIO *bp, EVP_PKEY *pkey); +EVP_PKEY *d2i_PrivateKey_bio(BIO *bp, EVP_PKEY **a); +int i2d_PUBKEY_bio(BIO *bp, EVP_PKEY *pkey); +EVP_PKEY *d2i_PUBKEY_bio(BIO *bp, EVP_PKEY **a); +# endif + +X509 *X509_dup(X509 *x509); +X509_ATTRIBUTE *X509_ATTRIBUTE_dup(X509_ATTRIBUTE *xa); +X509_EXTENSION *X509_EXTENSION_dup(X509_EXTENSION *ex); +X509_CRL *X509_CRL_dup(X509_CRL *crl); +X509_REVOKED *X509_REVOKED_dup(X509_REVOKED *rev); +X509_REQ *X509_REQ_dup(X509_REQ *req); +X509_ALGOR *X509_ALGOR_dup(X509_ALGOR *xn); +int X509_ALGOR_set0(X509_ALGOR *alg, ASN1_OBJECT *aobj, int ptype, + void *pval); +void X509_ALGOR_get0(ASN1_OBJECT **paobj, int *pptype, void **ppval, + X509_ALGOR *algor); +void X509_ALGOR_set_md(X509_ALGOR *alg, const EVP_MD *md); +int X509_ALGOR_cmp(const X509_ALGOR *a, const X509_ALGOR *b); + +X509_NAME *X509_NAME_dup(X509_NAME *xn); +X509_NAME_ENTRY *X509_NAME_ENTRY_dup(X509_NAME_ENTRY *ne); + +int X509_cmp_time(const ASN1_TIME *s, time_t *t); +int X509_cmp_current_time(const ASN1_TIME *s); +ASN1_TIME *X509_time_adj(ASN1_TIME *s, long adj, time_t *t); +ASN1_TIME *X509_time_adj_ex(ASN1_TIME *s, + int offset_day, long offset_sec, time_t *t); +ASN1_TIME *X509_gmtime_adj(ASN1_TIME *s, long adj); + +const char *X509_get_default_cert_area(void); +const char *X509_get_default_cert_dir(void); +const char *X509_get_default_cert_file(void); +const char *X509_get_default_cert_dir_env(void); +const char *X509_get_default_cert_file_env(void); +const char *X509_get_default_private_dir(void); + +X509_REQ *X509_to_X509_REQ(X509 *x, EVP_PKEY *pkey, const EVP_MD *md); +X509 *X509_REQ_to_X509(X509_REQ *r, int days, EVP_PKEY *pkey); + +DECLARE_ASN1_FUNCTIONS(X509_ALGOR) +DECLARE_ASN1_ENCODE_FUNCTIONS(X509_ALGORS, X509_ALGORS, X509_ALGORS) +DECLARE_ASN1_FUNCTIONS(X509_VAL) + +DECLARE_ASN1_FUNCTIONS(X509_PUBKEY) + +int X509_PUBKEY_set(X509_PUBKEY **x, EVP_PKEY *pkey); +EVP_PKEY *X509_PUBKEY_get(X509_PUBKEY *key); +int X509_get_pubkey_parameters(EVP_PKEY *pkey, STACK_OF(X509) *chain); +int i2d_PUBKEY(EVP_PKEY *a, unsigned char **pp); +EVP_PKEY *d2i_PUBKEY(EVP_PKEY **a, const unsigned char **pp, long length); +# ifndef OPENSSL_NO_RSA +int i2d_RSA_PUBKEY(RSA *a, unsigned char **pp); +RSA *d2i_RSA_PUBKEY(RSA **a, const unsigned char **pp, long length); +# endif +# ifndef OPENSSL_NO_DSA +int i2d_DSA_PUBKEY(DSA *a, unsigned char **pp); +DSA *d2i_DSA_PUBKEY(DSA **a, const unsigned char **pp, long length); +# endif +# ifndef OPENSSL_NO_EC +int i2d_EC_PUBKEY(EC_KEY *a, unsigned char **pp); +EC_KEY *d2i_EC_PUBKEY(EC_KEY **a, const unsigned char **pp, long length); +# endif + +DECLARE_ASN1_FUNCTIONS(X509_SIG) +DECLARE_ASN1_FUNCTIONS(X509_REQ_INFO) +DECLARE_ASN1_FUNCTIONS(X509_REQ) + +DECLARE_ASN1_FUNCTIONS(X509_ATTRIBUTE) +X509_ATTRIBUTE *X509_ATTRIBUTE_create(int nid, int atrtype, void *value); + +DECLARE_ASN1_FUNCTIONS(X509_EXTENSION) +DECLARE_ASN1_ENCODE_FUNCTIONS(X509_EXTENSIONS, X509_EXTENSIONS, X509_EXTENSIONS) + +DECLARE_ASN1_FUNCTIONS(X509_NAME_ENTRY) + +DECLARE_ASN1_FUNCTIONS(X509_NAME) + +int X509_NAME_set(X509_NAME **xn, X509_NAME *name); + +DECLARE_ASN1_FUNCTIONS(X509_CINF) + +DECLARE_ASN1_FUNCTIONS(X509) +DECLARE_ASN1_FUNCTIONS(X509_CERT_AUX) + +DECLARE_ASN1_FUNCTIONS(X509_CERT_PAIR) + +int X509_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new *new_func, + CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func); +int X509_set_ex_data(X509 *r, int idx, void *arg); +void *X509_get_ex_data(X509 *r, int idx); +int i2d_X509_AUX(X509 *a, unsigned char **pp); +X509 *d2i_X509_AUX(X509 **a, const unsigned char **pp, long length); + +int i2d_re_X509_tbs(X509 *x, unsigned char **pp); + +void X509_get0_signature(ASN1_BIT_STRING **psig, X509_ALGOR **palg, + const X509 *x); +int X509_get_signature_nid(const X509 *x); + +int X509_alias_set1(X509 *x, unsigned char *name, int len); +int X509_keyid_set1(X509 *x, unsigned char *id, int len); +unsigned char *X509_alias_get0(X509 *x, int *len); +unsigned char *X509_keyid_get0(X509 *x, int *len); +int (*X509_TRUST_set_default(int (*trust) (int, X509 *, int))) (int, X509 *, + int); +int X509_TRUST_set(int *t, int trust); +int X509_add1_trust_object(X509 *x, ASN1_OBJECT *obj); +int X509_add1_reject_object(X509 *x, ASN1_OBJECT *obj); +void X509_trust_clear(X509 *x); +void X509_reject_clear(X509 *x); + +DECLARE_ASN1_FUNCTIONS(X509_REVOKED) +DECLARE_ASN1_FUNCTIONS(X509_CRL_INFO) +DECLARE_ASN1_FUNCTIONS(X509_CRL) + +int X509_CRL_add0_revoked(X509_CRL *crl, X509_REVOKED *rev); +int X509_CRL_get0_by_serial(X509_CRL *crl, + X509_REVOKED **ret, ASN1_INTEGER *serial); +int X509_CRL_get0_by_cert(X509_CRL *crl, X509_REVOKED **ret, X509 *x); + +X509_PKEY *X509_PKEY_new(void); +void X509_PKEY_free(X509_PKEY *a); +int i2d_X509_PKEY(X509_PKEY *a, unsigned char **pp); +X509_PKEY *d2i_X509_PKEY(X509_PKEY **a, const unsigned char **pp, + long length); + +DECLARE_ASN1_FUNCTIONS(NETSCAPE_SPKI) +DECLARE_ASN1_FUNCTIONS(NETSCAPE_SPKAC) +DECLARE_ASN1_FUNCTIONS(NETSCAPE_CERT_SEQUENCE) + +# ifndef OPENSSL_NO_EVP +X509_INFO *X509_INFO_new(void); +void X509_INFO_free(X509_INFO *a); +char *X509_NAME_oneline(X509_NAME *a, char *buf, int size); + +int ASN1_verify(i2d_of_void *i2d, X509_ALGOR *algor1, + ASN1_BIT_STRING *signature, char *data, EVP_PKEY *pkey); + +int ASN1_digest(i2d_of_void *i2d, const EVP_MD *type, char *data, + unsigned char *md, unsigned int *len); + +int ASN1_sign(i2d_of_void *i2d, X509_ALGOR *algor1, + X509_ALGOR *algor2, ASN1_BIT_STRING *signature, + char *data, EVP_PKEY *pkey, const EVP_MD *type); + +int ASN1_item_digest(const ASN1_ITEM *it, const EVP_MD *type, void *data, + unsigned char *md, unsigned int *len); + +int ASN1_item_verify(const ASN1_ITEM *it, X509_ALGOR *algor1, + ASN1_BIT_STRING *signature, void *data, EVP_PKEY *pkey); + +int ASN1_item_sign(const ASN1_ITEM *it, X509_ALGOR *algor1, + X509_ALGOR *algor2, ASN1_BIT_STRING *signature, void *data, + EVP_PKEY *pkey, const EVP_MD *type); +int ASN1_item_sign_ctx(const ASN1_ITEM *it, X509_ALGOR *algor1, + X509_ALGOR *algor2, ASN1_BIT_STRING *signature, + void *asn, EVP_MD_CTX *ctx); +# endif + +int X509_set_version(X509 *x, long version); +int X509_set_serialNumber(X509 *x, ASN1_INTEGER *serial); +ASN1_INTEGER *X509_get_serialNumber(X509 *x); +int X509_set_issuer_name(X509 *x, X509_NAME *name); +X509_NAME *X509_get_issuer_name(X509 *a); +int X509_set_subject_name(X509 *x, X509_NAME *name); +X509_NAME *X509_get_subject_name(X509 *a); +int X509_set_notBefore(X509 *x, const ASN1_TIME *tm); +int X509_set_notAfter(X509 *x, const ASN1_TIME *tm); +int X509_set_pubkey(X509 *x, EVP_PKEY *pkey); +EVP_PKEY *X509_get_pubkey(X509 *x); +ASN1_BIT_STRING *X509_get0_pubkey_bitstr(const X509 *x); +int X509_certificate_type(X509 *x, EVP_PKEY *pubkey /* optional */ ); + +int X509_REQ_set_version(X509_REQ *x, long version); +int X509_REQ_set_subject_name(X509_REQ *req, X509_NAME *name); +int X509_REQ_set_pubkey(X509_REQ *x, EVP_PKEY *pkey); +EVP_PKEY *X509_REQ_get_pubkey(X509_REQ *req); +int X509_REQ_extension_nid(int nid); +int *X509_REQ_get_extension_nids(void); +void X509_REQ_set_extension_nids(int *nids); +STACK_OF(X509_EXTENSION) *X509_REQ_get_extensions(X509_REQ *req); +int X509_REQ_add_extensions_nid(X509_REQ *req, STACK_OF(X509_EXTENSION) *exts, + int nid); +int X509_REQ_add_extensions(X509_REQ *req, STACK_OF(X509_EXTENSION) *exts); +int X509_REQ_get_attr_count(const X509_REQ *req); +int X509_REQ_get_attr_by_NID(const X509_REQ *req, int nid, int lastpos); +int X509_REQ_get_attr_by_OBJ(const X509_REQ *req, ASN1_OBJECT *obj, + int lastpos); +X509_ATTRIBUTE *X509_REQ_get_attr(const X509_REQ *req, int loc); +X509_ATTRIBUTE *X509_REQ_delete_attr(X509_REQ *req, int loc); +int X509_REQ_add1_attr(X509_REQ *req, X509_ATTRIBUTE *attr); +int X509_REQ_add1_attr_by_OBJ(X509_REQ *req, + const ASN1_OBJECT *obj, int type, + const unsigned char *bytes, int len); +int X509_REQ_add1_attr_by_NID(X509_REQ *req, + int nid, int type, + const unsigned char *bytes, int len); +int X509_REQ_add1_attr_by_txt(X509_REQ *req, + const char *attrname, int type, + const unsigned char *bytes, int len); + +int X509_CRL_set_version(X509_CRL *x, long version); +int X509_CRL_set_issuer_name(X509_CRL *x, X509_NAME *name); +int X509_CRL_set_lastUpdate(X509_CRL *x, const ASN1_TIME *tm); +int X509_CRL_set_nextUpdate(X509_CRL *x, const ASN1_TIME *tm); +int X509_CRL_sort(X509_CRL *crl); + +int X509_REVOKED_set_serialNumber(X509_REVOKED *x, ASN1_INTEGER *serial); +int X509_REVOKED_set_revocationDate(X509_REVOKED *r, ASN1_TIME *tm); + +X509_CRL *X509_CRL_diff(X509_CRL *base, X509_CRL *newer, + EVP_PKEY *skey, const EVP_MD *md, unsigned int flags); + +int X509_REQ_check_private_key(X509_REQ *x509, EVP_PKEY *pkey); + +int X509_check_private_key(X509 *x509, EVP_PKEY *pkey); +int X509_chain_check_suiteb(int *perror_depth, + X509 *x, STACK_OF(X509) *chain, + unsigned long flags); +int X509_CRL_check_suiteb(X509_CRL *crl, EVP_PKEY *pk, unsigned long flags); +STACK_OF(X509) *X509_chain_up_ref(STACK_OF(X509) *chain); + +int X509_issuer_and_serial_cmp(const X509 *a, const X509 *b); +unsigned long X509_issuer_and_serial_hash(X509 *a); + +int X509_issuer_name_cmp(const X509 *a, const X509 *b); +unsigned long X509_issuer_name_hash(X509 *a); + +int X509_subject_name_cmp(const X509 *a, const X509 *b); +unsigned long X509_subject_name_hash(X509 *x); + +# ifndef OPENSSL_NO_MD5 +unsigned long X509_issuer_name_hash_old(X509 *a); +unsigned long X509_subject_name_hash_old(X509 *x); +# endif + +int X509_cmp(const X509 *a, const X509 *b); +int X509_NAME_cmp(const X509_NAME *a, const X509_NAME *b); +unsigned long X509_NAME_hash(X509_NAME *x); +unsigned long X509_NAME_hash_old(X509_NAME *x); + +int X509_CRL_cmp(const X509_CRL *a, const X509_CRL *b); +int X509_CRL_match(const X509_CRL *a, const X509_CRL *b); +# ifndef OPENSSL_NO_FP_API +int X509_print_ex_fp(FILE *bp, X509 *x, unsigned long nmflag, + unsigned long cflag); +int X509_print_fp(FILE *bp, X509 *x); +int X509_CRL_print_fp(FILE *bp, X509_CRL *x); +int X509_REQ_print_fp(FILE *bp, X509_REQ *req); +int X509_NAME_print_ex_fp(FILE *fp, X509_NAME *nm, int indent, + unsigned long flags); +# endif + +# ifndef OPENSSL_NO_BIO +int X509_NAME_print(BIO *bp, X509_NAME *name, int obase); +int X509_NAME_print_ex(BIO *out, X509_NAME *nm, int indent, + unsigned long flags); +int X509_print_ex(BIO *bp, X509 *x, unsigned long nmflag, + unsigned long cflag); +int X509_print(BIO *bp, X509 *x); +int X509_ocspid_print(BIO *bp, X509 *x); +int X509_CERT_AUX_print(BIO *bp, X509_CERT_AUX *x, int indent); +int X509_CRL_print(BIO *bp, X509_CRL *x); +int X509_REQ_print_ex(BIO *bp, X509_REQ *x, unsigned long nmflag, + unsigned long cflag); +int X509_REQ_print(BIO *bp, X509_REQ *req); +# endif + +int X509_NAME_entry_count(X509_NAME *name); +int X509_NAME_get_text_by_NID(X509_NAME *name, int nid, char *buf, int len); +int X509_NAME_get_text_by_OBJ(X509_NAME *name, ASN1_OBJECT *obj, + char *buf, int len); + +/* + * NOTE: you should be passsing -1, not 0 as lastpos. The functions that use + * lastpos, search after that position on. + */ +int X509_NAME_get_index_by_NID(X509_NAME *name, int nid, int lastpos); +int X509_NAME_get_index_by_OBJ(X509_NAME *name, ASN1_OBJECT *obj, + int lastpos); +X509_NAME_ENTRY *X509_NAME_get_entry(X509_NAME *name, int loc); +X509_NAME_ENTRY *X509_NAME_delete_entry(X509_NAME *name, int loc); +int X509_NAME_add_entry(X509_NAME *name, X509_NAME_ENTRY *ne, + int loc, int set); +int X509_NAME_add_entry_by_OBJ(X509_NAME *name, ASN1_OBJECT *obj, int type, + unsigned char *bytes, int len, int loc, + int set); +int X509_NAME_add_entry_by_NID(X509_NAME *name, int nid, int type, + unsigned char *bytes, int len, int loc, + int set); +X509_NAME_ENTRY *X509_NAME_ENTRY_create_by_txt(X509_NAME_ENTRY **ne, + const char *field, int type, + const unsigned char *bytes, + int len); +X509_NAME_ENTRY *X509_NAME_ENTRY_create_by_NID(X509_NAME_ENTRY **ne, int nid, + int type, unsigned char *bytes, + int len); +int X509_NAME_add_entry_by_txt(X509_NAME *name, const char *field, int type, + const unsigned char *bytes, int len, int loc, + int set); +X509_NAME_ENTRY *X509_NAME_ENTRY_create_by_OBJ(X509_NAME_ENTRY **ne, + ASN1_OBJECT *obj, int type, + const unsigned char *bytes, + int len); +int X509_NAME_ENTRY_set_object(X509_NAME_ENTRY *ne, ASN1_OBJECT *obj); +int X509_NAME_ENTRY_set_data(X509_NAME_ENTRY *ne, int type, + const unsigned char *bytes, int len); +ASN1_OBJECT *X509_NAME_ENTRY_get_object(X509_NAME_ENTRY *ne); +ASN1_STRING *X509_NAME_ENTRY_get_data(X509_NAME_ENTRY *ne); + +int X509v3_get_ext_count(const STACK_OF(X509_EXTENSION) *x); +int X509v3_get_ext_by_NID(const STACK_OF(X509_EXTENSION) *x, + int nid, int lastpos); +int X509v3_get_ext_by_OBJ(const STACK_OF(X509_EXTENSION) *x, + ASN1_OBJECT *obj, int lastpos); +int X509v3_get_ext_by_critical(const STACK_OF(X509_EXTENSION) *x, + int crit, int lastpos); +X509_EXTENSION *X509v3_get_ext(const STACK_OF(X509_EXTENSION) *x, int loc); +X509_EXTENSION *X509v3_delete_ext(STACK_OF(X509_EXTENSION) *x, int loc); +STACK_OF(X509_EXTENSION) *X509v3_add_ext(STACK_OF(X509_EXTENSION) **x, + X509_EXTENSION *ex, int loc); + +int X509_get_ext_count(X509 *x); +int X509_get_ext_by_NID(X509 *x, int nid, int lastpos); +int X509_get_ext_by_OBJ(X509 *x, ASN1_OBJECT *obj, int lastpos); +int X509_get_ext_by_critical(X509 *x, int crit, int lastpos); +X509_EXTENSION *X509_get_ext(X509 *x, int loc); +X509_EXTENSION *X509_delete_ext(X509 *x, int loc); +int X509_add_ext(X509 *x, X509_EXTENSION *ex, int loc); +void *X509_get_ext_d2i(X509 *x, int nid, int *crit, int *idx); +int X509_add1_ext_i2d(X509 *x, int nid, void *value, int crit, + unsigned long flags); + +int X509_CRL_get_ext_count(X509_CRL *x); +int X509_CRL_get_ext_by_NID(X509_CRL *x, int nid, int lastpos); +int X509_CRL_get_ext_by_OBJ(X509_CRL *x, ASN1_OBJECT *obj, int lastpos); +int X509_CRL_get_ext_by_critical(X509_CRL *x, int crit, int lastpos); +X509_EXTENSION *X509_CRL_get_ext(X509_CRL *x, int loc); +X509_EXTENSION *X509_CRL_delete_ext(X509_CRL *x, int loc); +int X509_CRL_add_ext(X509_CRL *x, X509_EXTENSION *ex, int loc); +void *X509_CRL_get_ext_d2i(X509_CRL *x, int nid, int *crit, int *idx); +int X509_CRL_add1_ext_i2d(X509_CRL *x, int nid, void *value, int crit, + unsigned long flags); + +int X509_REVOKED_get_ext_count(X509_REVOKED *x); +int X509_REVOKED_get_ext_by_NID(X509_REVOKED *x, int nid, int lastpos); +int X509_REVOKED_get_ext_by_OBJ(X509_REVOKED *x, ASN1_OBJECT *obj, + int lastpos); +int X509_REVOKED_get_ext_by_critical(X509_REVOKED *x, int crit, int lastpos); +X509_EXTENSION *X509_REVOKED_get_ext(X509_REVOKED *x, int loc); +X509_EXTENSION *X509_REVOKED_delete_ext(X509_REVOKED *x, int loc); +int X509_REVOKED_add_ext(X509_REVOKED *x, X509_EXTENSION *ex, int loc); +void *X509_REVOKED_get_ext_d2i(X509_REVOKED *x, int nid, int *crit, int *idx); +int X509_REVOKED_add1_ext_i2d(X509_REVOKED *x, int nid, void *value, int crit, + unsigned long flags); + +X509_EXTENSION *X509_EXTENSION_create_by_NID(X509_EXTENSION **ex, + int nid, int crit, + ASN1_OCTET_STRING *data); +X509_EXTENSION *X509_EXTENSION_create_by_OBJ(X509_EXTENSION **ex, + ASN1_OBJECT *obj, int crit, + ASN1_OCTET_STRING *data); +int X509_EXTENSION_set_object(X509_EXTENSION *ex, ASN1_OBJECT *obj); +int X509_EXTENSION_set_critical(X509_EXTENSION *ex, int crit); +int X509_EXTENSION_set_data(X509_EXTENSION *ex, ASN1_OCTET_STRING *data); +ASN1_OBJECT *X509_EXTENSION_get_object(X509_EXTENSION *ex); +ASN1_OCTET_STRING *X509_EXTENSION_get_data(X509_EXTENSION *ne); +int X509_EXTENSION_get_critical(X509_EXTENSION *ex); + +int X509at_get_attr_count(const STACK_OF(X509_ATTRIBUTE) *x); +int X509at_get_attr_by_NID(const STACK_OF(X509_ATTRIBUTE) *x, int nid, + int lastpos); +int X509at_get_attr_by_OBJ(const STACK_OF(X509_ATTRIBUTE) *sk, + ASN1_OBJECT *obj, int lastpos); +X509_ATTRIBUTE *X509at_get_attr(const STACK_OF(X509_ATTRIBUTE) *x, int loc); +X509_ATTRIBUTE *X509at_delete_attr(STACK_OF(X509_ATTRIBUTE) *x, int loc); +STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr(STACK_OF(X509_ATTRIBUTE) **x, + X509_ATTRIBUTE *attr); +STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr_by_OBJ(STACK_OF(X509_ATTRIBUTE) + **x, const ASN1_OBJECT *obj, + int type, + const unsigned char *bytes, + int len); +STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr_by_NID(STACK_OF(X509_ATTRIBUTE) + **x, int nid, int type, + const unsigned char *bytes, + int len); +STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr_by_txt(STACK_OF(X509_ATTRIBUTE) + **x, const char *attrname, + int type, + const unsigned char *bytes, + int len); +void *X509at_get0_data_by_OBJ(STACK_OF(X509_ATTRIBUTE) *x, ASN1_OBJECT *obj, + int lastpos, int type); +X509_ATTRIBUTE *X509_ATTRIBUTE_create_by_NID(X509_ATTRIBUTE **attr, int nid, + int atrtype, const void *data, + int len); +X509_ATTRIBUTE *X509_ATTRIBUTE_create_by_OBJ(X509_ATTRIBUTE **attr, + const ASN1_OBJECT *obj, + int atrtype, const void *data, + int len); +X509_ATTRIBUTE *X509_ATTRIBUTE_create_by_txt(X509_ATTRIBUTE **attr, + const char *atrname, int type, + const unsigned char *bytes, + int len); +int X509_ATTRIBUTE_set1_object(X509_ATTRIBUTE *attr, const ASN1_OBJECT *obj); +int X509_ATTRIBUTE_set1_data(X509_ATTRIBUTE *attr, int attrtype, + const void *data, int len); +void *X509_ATTRIBUTE_get0_data(X509_ATTRIBUTE *attr, int idx, int atrtype, + void *data); +int X509_ATTRIBUTE_count(X509_ATTRIBUTE *attr); +ASN1_OBJECT *X509_ATTRIBUTE_get0_object(X509_ATTRIBUTE *attr); +ASN1_TYPE *X509_ATTRIBUTE_get0_type(X509_ATTRIBUTE *attr, int idx); + +int EVP_PKEY_get_attr_count(const EVP_PKEY *key); +int EVP_PKEY_get_attr_by_NID(const EVP_PKEY *key, int nid, int lastpos); +int EVP_PKEY_get_attr_by_OBJ(const EVP_PKEY *key, ASN1_OBJECT *obj, + int lastpos); +X509_ATTRIBUTE *EVP_PKEY_get_attr(const EVP_PKEY *key, int loc); +X509_ATTRIBUTE *EVP_PKEY_delete_attr(EVP_PKEY *key, int loc); +int EVP_PKEY_add1_attr(EVP_PKEY *key, X509_ATTRIBUTE *attr); +int EVP_PKEY_add1_attr_by_OBJ(EVP_PKEY *key, + const ASN1_OBJECT *obj, int type, + const unsigned char *bytes, int len); +int EVP_PKEY_add1_attr_by_NID(EVP_PKEY *key, + int nid, int type, + const unsigned char *bytes, int len); +int EVP_PKEY_add1_attr_by_txt(EVP_PKEY *key, + const char *attrname, int type, + const unsigned char *bytes, int len); + +int X509_verify_cert(X509_STORE_CTX *ctx); + +/* lookup a cert from a X509 STACK */ +X509 *X509_find_by_issuer_and_serial(STACK_OF(X509) *sk, X509_NAME *name, + ASN1_INTEGER *serial); +X509 *X509_find_by_subject(STACK_OF(X509) *sk, X509_NAME *name); + +DECLARE_ASN1_FUNCTIONS(PBEPARAM) +DECLARE_ASN1_FUNCTIONS(PBE2PARAM) +DECLARE_ASN1_FUNCTIONS(PBKDF2PARAM) + +int PKCS5_pbe_set0_algor(X509_ALGOR *algor, int alg, int iter, + const unsigned char *salt, int saltlen); + +X509_ALGOR *PKCS5_pbe_set(int alg, int iter, + const unsigned char *salt, int saltlen); +X509_ALGOR *PKCS5_pbe2_set(const EVP_CIPHER *cipher, int iter, + unsigned char *salt, int saltlen); +X509_ALGOR *PKCS5_pbe2_set_iv(const EVP_CIPHER *cipher, int iter, + unsigned char *salt, int saltlen, + unsigned char *aiv, int prf_nid); + +X509_ALGOR *PKCS5_pbkdf2_set(int iter, unsigned char *salt, int saltlen, + int prf_nid, int keylen); + +/* PKCS#8 utilities */ + +DECLARE_ASN1_FUNCTIONS(PKCS8_PRIV_KEY_INFO) + +EVP_PKEY *EVP_PKCS82PKEY(PKCS8_PRIV_KEY_INFO *p8); +PKCS8_PRIV_KEY_INFO *EVP_PKEY2PKCS8(EVP_PKEY *pkey); +PKCS8_PRIV_KEY_INFO *EVP_PKEY2PKCS8_broken(EVP_PKEY *pkey, int broken); +PKCS8_PRIV_KEY_INFO *PKCS8_set_broken(PKCS8_PRIV_KEY_INFO *p8, int broken); + +int PKCS8_pkey_set0(PKCS8_PRIV_KEY_INFO *priv, ASN1_OBJECT *aobj, + int version, int ptype, void *pval, + unsigned char *penc, int penclen); +int PKCS8_pkey_get0(ASN1_OBJECT **ppkalg, + const unsigned char **pk, int *ppklen, + X509_ALGOR **pa, PKCS8_PRIV_KEY_INFO *p8); + +int X509_PUBKEY_set0_param(X509_PUBKEY *pub, ASN1_OBJECT *aobj, + int ptype, void *pval, + unsigned char *penc, int penclen); +int X509_PUBKEY_get0_param(ASN1_OBJECT **ppkalg, + const unsigned char **pk, int *ppklen, + X509_ALGOR **pa, X509_PUBKEY *pub); + +int X509_check_trust(X509 *x, int id, int flags); +int X509_TRUST_get_count(void); +X509_TRUST *X509_TRUST_get0(int idx); +int X509_TRUST_get_by_id(int id); +int X509_TRUST_add(int id, int flags, int (*ck) (X509_TRUST *, X509 *, int), + char *name, int arg1, void *arg2); +void X509_TRUST_cleanup(void); +int X509_TRUST_get_flags(X509_TRUST *xp); +char *X509_TRUST_get0_name(X509_TRUST *xp); +int X509_TRUST_get_trust(X509_TRUST *xp); + +/* BEGIN ERROR CODES */ +/* + * The following lines are auto generated by the script mkerr.pl. Any changes + * made after this point may be overwritten when the script is next run. + */ +void ERR_load_X509_strings(void); + +/* Error codes for the X509 functions. */ + +/* Function codes. */ +# define X509_F_ADD_CERT_DIR 100 +# define X509_F_BY_FILE_CTRL 101 +# define X509_F_CHECK_POLICY 145 +# define X509_F_DIR_CTRL 102 +# define X509_F_GET_CERT_BY_SUBJECT 103 +# define X509_F_NETSCAPE_SPKI_B64_DECODE 129 +# define X509_F_NETSCAPE_SPKI_B64_ENCODE 130 +# define X509_F_X509AT_ADD1_ATTR 135 +# define X509_F_X509V3_ADD_EXT 104 +# define X509_F_X509_ATTRIBUTE_CREATE_BY_NID 136 +# define X509_F_X509_ATTRIBUTE_CREATE_BY_OBJ 137 +# define X509_F_X509_ATTRIBUTE_CREATE_BY_TXT 140 +# define X509_F_X509_ATTRIBUTE_GET0_DATA 139 +# define X509_F_X509_ATTRIBUTE_SET1_DATA 138 +# define X509_F_X509_CHECK_PRIVATE_KEY 128 +# define X509_F_X509_CRL_DIFF 105 +# define X509_F_X509_CRL_PRINT_FP 147 +# define X509_F_X509_EXTENSION_CREATE_BY_NID 108 +# define X509_F_X509_EXTENSION_CREATE_BY_OBJ 109 +# define X509_F_X509_GET_PUBKEY_PARAMETERS 110 +# define X509_F_X509_LOAD_CERT_CRL_FILE 132 +# define X509_F_X509_LOAD_CERT_FILE 111 +# define X509_F_X509_LOAD_CRL_FILE 112 +# define X509_F_X509_NAME_ADD_ENTRY 113 +# define X509_F_X509_NAME_ENTRY_CREATE_BY_NID 114 +# define X509_F_X509_NAME_ENTRY_CREATE_BY_TXT 131 +# define X509_F_X509_NAME_ENTRY_SET_OBJECT 115 +# define X509_F_X509_NAME_ONELINE 116 +# define X509_F_X509_NAME_PRINT 117 +# define X509_F_X509_PRINT_EX_FP 118 +# define X509_F_X509_PUBKEY_GET 119 +# define X509_F_X509_PUBKEY_SET 120 +# define X509_F_X509_REQ_CHECK_PRIVATE_KEY 144 +# define X509_F_X509_REQ_PRINT_EX 121 +# define X509_F_X509_REQ_PRINT_FP 122 +# define X509_F_X509_REQ_TO_X509 123 +# define X509_F_X509_STORE_ADD_CERT 124 +# define X509_F_X509_STORE_ADD_CRL 125 +# define X509_F_X509_STORE_CTX_GET1_ISSUER 146 +# define X509_F_X509_STORE_CTX_INIT 143 +# define X509_F_X509_STORE_CTX_NEW 142 +# define X509_F_X509_STORE_CTX_PURPOSE_INHERIT 134 +# define X509_F_X509_TO_X509_REQ 126 +# define X509_F_X509_TRUST_ADD 133 +# define X509_F_X509_TRUST_SET 141 +# define X509_F_X509_VERIFY_CERT 127 + +/* Reason codes. */ +# define X509_R_AKID_MISMATCH 110 +# define X509_R_BAD_X509_FILETYPE 100 +# define X509_R_BASE64_DECODE_ERROR 118 +# define X509_R_CANT_CHECK_DH_KEY 114 +# define X509_R_CERT_ALREADY_IN_HASH_TABLE 101 +# define X509_R_CRL_ALREADY_DELTA 127 +# define X509_R_CRL_VERIFY_FAILURE 131 +# define X509_R_ERR_ASN1_LIB 102 +# define X509_R_IDP_MISMATCH 128 +# define X509_R_INVALID_DIRECTORY 113 +# define X509_R_INVALID_FIELD_NAME 119 +# define X509_R_INVALID_TRUST 123 +# define X509_R_ISSUER_MISMATCH 129 +# define X509_R_KEY_TYPE_MISMATCH 115 +# define X509_R_KEY_VALUES_MISMATCH 116 +# define X509_R_LOADING_CERT_DIR 103 +# define X509_R_LOADING_DEFAULTS 104 +# define X509_R_METHOD_NOT_SUPPORTED 124 +# define X509_R_NEWER_CRL_NOT_NEWER 132 +# define X509_R_NO_CERT_SET_FOR_US_TO_VERIFY 105 +# define X509_R_NO_CRL_NUMBER 130 +# define X509_R_PUBLIC_KEY_DECODE_ERROR 125 +# define X509_R_PUBLIC_KEY_ENCODE_ERROR 126 +# define X509_R_SHOULD_RETRY 106 +# define X509_R_UNABLE_TO_FIND_PARAMETERS_IN_CHAIN 107 +# define X509_R_UNABLE_TO_GET_CERTS_PUBLIC_KEY 108 +# define X509_R_UNKNOWN_KEY_TYPE 117 +# define X509_R_UNKNOWN_NID 109 +# define X509_R_UNKNOWN_PURPOSE_ID 121 +# define X509_R_UNKNOWN_TRUST_ID 120 +# define X509_R_UNSUPPORTED_ALGORITHM 111 +# define X509_R_WRONG_LOOKUP_TYPE 112 +# define X509_R_WRONG_TYPE 122 + +#ifdef __cplusplus +} +#endif +#endif diff --git a/ext/openssl-win32/inc32/openssl/x509_vfy.h b/ext/openssl-win32/inc32/openssl/x509_vfy.h new file mode 100644 index 00000000..a6f0df54 --- /dev/null +++ b/ext/openssl-win32/inc32/openssl/x509_vfy.h @@ -0,0 +1,641 @@ +/* crypto/x509/x509_vfy.h */ +/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) + * All rights reserved. + * + * This package is an SSL implementation written + * by Eric Young (eay@cryptsoft.com). + * The implementation was written so as to conform with Netscapes SSL. + * + * This library is free for commercial and non-commercial use as long as + * the following conditions are aheared to. The following conditions + * apply to all code found in this distribution, be it the RC4, RSA, + * lhash, DES, etc., code; not just the SSL code. The SSL documentation + * included with this distribution is covered by the same copyright terms + * except that the holder is Tim Hudson (tjh@cryptsoft.com). + * + * Copyright remains Eric Young's, and as such any Copyright notices in + * the code are not to be removed. + * If this package is used in a product, Eric Young should be given attribution + * as the author of the parts of the library used. + * This can be in the form of a textual message at program startup or + * in documentation (online or textual) provided with the package. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * "This product includes cryptographic software written by + * Eric Young (eay@cryptsoft.com)" + * The word 'cryptographic' can be left out if the rouines from the library + * being used are not cryptographic related :-). + * 4. If you include any Windows specific code (or a derivative thereof) from + * the apps directory (application code) you must include an acknowledgement: + * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" + * + * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * The licence and distribution terms for any publically available version or + * derivative of this code cannot be changed. i.e. this code cannot simply be + * copied and put under another distribution licence + * [including the GNU Public Licence.] + */ + +#ifndef HEADER_X509_H +# include +/* + * openssl/x509.h ends up #include-ing this file at about the only + * appropriate moment. + */ +#endif + +#ifndef HEADER_X509_VFY_H +# define HEADER_X509_VFY_H + +# include +# ifndef OPENSSL_NO_LHASH +# include +# endif +# include +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +# if 0 +/* Outer object */ +typedef struct x509_hash_dir_st { + int num_dirs; + char **dirs; + int *dirs_type; + int num_dirs_alloced; +} X509_HASH_DIR_CTX; +# endif + +typedef struct x509_file_st { + int num_paths; /* number of paths to files or directories */ + int num_alloced; + char **paths; /* the list of paths or directories */ + int *path_type; +} X509_CERT_FILE_CTX; + +/*******************************/ +/*- +SSL_CTX -> X509_STORE + -> X509_LOOKUP + ->X509_LOOKUP_METHOD + -> X509_LOOKUP + ->X509_LOOKUP_METHOD + +SSL -> X509_STORE_CTX + ->X509_STORE + +The X509_STORE holds the tables etc for verification stuff. +A X509_STORE_CTX is used while validating a single certificate. +The X509_STORE has X509_LOOKUPs for looking up certs. +The X509_STORE then calls a function to actually verify the +certificate chain. +*/ + +# define X509_LU_RETRY -1 +# define X509_LU_FAIL 0 +# define X509_LU_X509 1 +# define X509_LU_CRL 2 +# define X509_LU_PKEY 3 + +typedef struct x509_object_st { + /* one of the above types */ + int type; + union { + char *ptr; + X509 *x509; + X509_CRL *crl; + EVP_PKEY *pkey; + } data; +} X509_OBJECT; + +typedef struct x509_lookup_st X509_LOOKUP; + +DECLARE_STACK_OF(X509_LOOKUP) +DECLARE_STACK_OF(X509_OBJECT) + +/* This is a static that defines the function interface */ +typedef struct x509_lookup_method_st { + const char *name; + int (*new_item) (X509_LOOKUP *ctx); + void (*free) (X509_LOOKUP *ctx); + int (*init) (X509_LOOKUP *ctx); + int (*shutdown) (X509_LOOKUP *ctx); + int (*ctrl) (X509_LOOKUP *ctx, int cmd, const char *argc, long argl, + char **ret); + int (*get_by_subject) (X509_LOOKUP *ctx, int type, X509_NAME *name, + X509_OBJECT *ret); + int (*get_by_issuer_serial) (X509_LOOKUP *ctx, int type, X509_NAME *name, + ASN1_INTEGER *serial, X509_OBJECT *ret); + int (*get_by_fingerprint) (X509_LOOKUP *ctx, int type, + unsigned char *bytes, int len, + X509_OBJECT *ret); + int (*get_by_alias) (X509_LOOKUP *ctx, int type, char *str, int len, + X509_OBJECT *ret); +} X509_LOOKUP_METHOD; + +typedef struct X509_VERIFY_PARAM_ID_st X509_VERIFY_PARAM_ID; + +/* + * This structure hold all parameters associated with a verify operation by + * including an X509_VERIFY_PARAM structure in related structures the + * parameters used can be customized + */ + +typedef struct X509_VERIFY_PARAM_st { + char *name; + time_t check_time; /* Time to use */ + unsigned long inh_flags; /* Inheritance flags */ + unsigned long flags; /* Various verify flags */ + int purpose; /* purpose to check untrusted certificates */ + int trust; /* trust setting to check */ + int depth; /* Verify depth */ + STACK_OF(ASN1_OBJECT) *policies; /* Permissible policies */ + X509_VERIFY_PARAM_ID *id; /* opaque ID data */ +} X509_VERIFY_PARAM; + +DECLARE_STACK_OF(X509_VERIFY_PARAM) + +/* + * This is used to hold everything. It is used for all certificate + * validation. Once we have a certificate chain, the 'verify' function is + * then called to actually check the cert chain. + */ +struct x509_store_st { + /* The following is a cache of trusted certs */ + int cache; /* if true, stash any hits */ + STACK_OF(X509_OBJECT) *objs; /* Cache of all objects */ + /* These are external lookup methods */ + STACK_OF(X509_LOOKUP) *get_cert_methods; + X509_VERIFY_PARAM *param; + /* Callbacks for various operations */ + /* called to verify a certificate */ + int (*verify) (X509_STORE_CTX *ctx); + /* error callback */ + int (*verify_cb) (int ok, X509_STORE_CTX *ctx); + /* get issuers cert from ctx */ + int (*get_issuer) (X509 **issuer, X509_STORE_CTX *ctx, X509 *x); + /* check issued */ + int (*check_issued) (X509_STORE_CTX *ctx, X509 *x, X509 *issuer); + /* Check revocation status of chain */ + int (*check_revocation) (X509_STORE_CTX *ctx); + /* retrieve CRL */ + int (*get_crl) (X509_STORE_CTX *ctx, X509_CRL **crl, X509 *x); + /* Check CRL validity */ + int (*check_crl) (X509_STORE_CTX *ctx, X509_CRL *crl); + /* Check certificate against CRL */ + int (*cert_crl) (X509_STORE_CTX *ctx, X509_CRL *crl, X509 *x); + STACK_OF(X509) *(*lookup_certs) (X509_STORE_CTX *ctx, X509_NAME *nm); + STACK_OF(X509_CRL) *(*lookup_crls) (X509_STORE_CTX *ctx, X509_NAME *nm); + int (*cleanup) (X509_STORE_CTX *ctx); + CRYPTO_EX_DATA ex_data; + int references; +} /* X509_STORE */ ; + +int X509_STORE_set_depth(X509_STORE *store, int depth); + +# define X509_STORE_set_verify_cb_func(ctx,func) ((ctx)->verify_cb=(func)) +# define X509_STORE_set_verify_func(ctx,func) ((ctx)->verify=(func)) + +/* This is the functions plus an instance of the local variables. */ +struct x509_lookup_st { + int init; /* have we been started */ + int skip; /* don't use us. */ + X509_LOOKUP_METHOD *method; /* the functions */ + char *method_data; /* method data */ + X509_STORE *store_ctx; /* who owns us */ +} /* X509_LOOKUP */ ; + +/* + * This is a used when verifying cert chains. Since the gathering of the + * cert chain can take some time (and have to be 'retried', this needs to be + * kept and passed around. + */ +struct x509_store_ctx_st { /* X509_STORE_CTX */ + X509_STORE *ctx; + /* used when looking up certs */ + int current_method; + /* The following are set by the caller */ + /* The cert to check */ + X509 *cert; + /* chain of X509s - untrusted - passed in */ + STACK_OF(X509) *untrusted; + /* set of CRLs passed in */ + STACK_OF(X509_CRL) *crls; + X509_VERIFY_PARAM *param; + /* Other info for use with get_issuer() */ + void *other_ctx; + /* Callbacks for various operations */ + /* called to verify a certificate */ + int (*verify) (X509_STORE_CTX *ctx); + /* error callback */ + int (*verify_cb) (int ok, X509_STORE_CTX *ctx); + /* get issuers cert from ctx */ + int (*get_issuer) (X509 **issuer, X509_STORE_CTX *ctx, X509 *x); + /* check issued */ + int (*check_issued) (X509_STORE_CTX *ctx, X509 *x, X509 *issuer); + /* Check revocation status of chain */ + int (*check_revocation) (X509_STORE_CTX *ctx); + /* retrieve CRL */ + int (*get_crl) (X509_STORE_CTX *ctx, X509_CRL **crl, X509 *x); + /* Check CRL validity */ + int (*check_crl) (X509_STORE_CTX *ctx, X509_CRL *crl); + /* Check certificate against CRL */ + int (*cert_crl) (X509_STORE_CTX *ctx, X509_CRL *crl, X509 *x); + int (*check_policy) (X509_STORE_CTX *ctx); + STACK_OF(X509) *(*lookup_certs) (X509_STORE_CTX *ctx, X509_NAME *nm); + STACK_OF(X509_CRL) *(*lookup_crls) (X509_STORE_CTX *ctx, X509_NAME *nm); + int (*cleanup) (X509_STORE_CTX *ctx); + /* The following is built up */ + /* if 0, rebuild chain */ + int valid; + /* index of last untrusted cert */ + int last_untrusted; + /* chain of X509s - built up and trusted */ + STACK_OF(X509) *chain; + /* Valid policy tree */ + X509_POLICY_TREE *tree; + /* Require explicit policy value */ + int explicit_policy; + /* When something goes wrong, this is why */ + int error_depth; + int error; + X509 *current_cert; + /* cert currently being tested as valid issuer */ + X509 *current_issuer; + /* current CRL */ + X509_CRL *current_crl; + /* score of current CRL */ + int current_crl_score; + /* Reason mask */ + unsigned int current_reasons; + /* For CRL path validation: parent context */ + X509_STORE_CTX *parent; + CRYPTO_EX_DATA ex_data; +} /* X509_STORE_CTX */ ; + +void X509_STORE_CTX_set_depth(X509_STORE_CTX *ctx, int depth); + +# define X509_STORE_CTX_set_app_data(ctx,data) \ + X509_STORE_CTX_set_ex_data(ctx,0,data) +# define X509_STORE_CTX_get_app_data(ctx) \ + X509_STORE_CTX_get_ex_data(ctx,0) + +# define X509_L_FILE_LOAD 1 +# define X509_L_ADD_DIR 2 + +# define X509_LOOKUP_load_file(x,name,type) \ + X509_LOOKUP_ctrl((x),X509_L_FILE_LOAD,(name),(long)(type),NULL) + +# define X509_LOOKUP_add_dir(x,name,type) \ + X509_LOOKUP_ctrl((x),X509_L_ADD_DIR,(name),(long)(type),NULL) + +# define X509_V_OK 0 +/* illegal error (for uninitialized values, to avoid X509_V_OK): 1 */ + +# define X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT 2 +# define X509_V_ERR_UNABLE_TO_GET_CRL 3 +# define X509_V_ERR_UNABLE_TO_DECRYPT_CERT_SIGNATURE 4 +# define X509_V_ERR_UNABLE_TO_DECRYPT_CRL_SIGNATURE 5 +# define X509_V_ERR_UNABLE_TO_DECODE_ISSUER_PUBLIC_KEY 6 +# define X509_V_ERR_CERT_SIGNATURE_FAILURE 7 +# define X509_V_ERR_CRL_SIGNATURE_FAILURE 8 +# define X509_V_ERR_CERT_NOT_YET_VALID 9 +# define X509_V_ERR_CERT_HAS_EXPIRED 10 +# define X509_V_ERR_CRL_NOT_YET_VALID 11 +# define X509_V_ERR_CRL_HAS_EXPIRED 12 +# define X509_V_ERR_ERROR_IN_CERT_NOT_BEFORE_FIELD 13 +# define X509_V_ERR_ERROR_IN_CERT_NOT_AFTER_FIELD 14 +# define X509_V_ERR_ERROR_IN_CRL_LAST_UPDATE_FIELD 15 +# define X509_V_ERR_ERROR_IN_CRL_NEXT_UPDATE_FIELD 16 +# define X509_V_ERR_OUT_OF_MEM 17 +# define X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT 18 +# define X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN 19 +# define X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY 20 +# define X509_V_ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE 21 +# define X509_V_ERR_CERT_CHAIN_TOO_LONG 22 +# define X509_V_ERR_CERT_REVOKED 23 +# define X509_V_ERR_INVALID_CA 24 +# define X509_V_ERR_PATH_LENGTH_EXCEEDED 25 +# define X509_V_ERR_INVALID_PURPOSE 26 +# define X509_V_ERR_CERT_UNTRUSTED 27 +# define X509_V_ERR_CERT_REJECTED 28 +/* These are 'informational' when looking for issuer cert */ +# define X509_V_ERR_SUBJECT_ISSUER_MISMATCH 29 +# define X509_V_ERR_AKID_SKID_MISMATCH 30 +# define X509_V_ERR_AKID_ISSUER_SERIAL_MISMATCH 31 +# define X509_V_ERR_KEYUSAGE_NO_CERTSIGN 32 + +# define X509_V_ERR_UNABLE_TO_GET_CRL_ISSUER 33 +# define X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION 34 +# define X509_V_ERR_KEYUSAGE_NO_CRL_SIGN 35 +# define X509_V_ERR_UNHANDLED_CRITICAL_CRL_EXTENSION 36 +# define X509_V_ERR_INVALID_NON_CA 37 +# define X509_V_ERR_PROXY_PATH_LENGTH_EXCEEDED 38 +# define X509_V_ERR_KEYUSAGE_NO_DIGITAL_SIGNATURE 39 +# define X509_V_ERR_PROXY_CERTIFICATES_NOT_ALLOWED 40 + +# define X509_V_ERR_INVALID_EXTENSION 41 +# define X509_V_ERR_INVALID_POLICY_EXTENSION 42 +# define X509_V_ERR_NO_EXPLICIT_POLICY 43 +# define X509_V_ERR_DIFFERENT_CRL_SCOPE 44 +# define X509_V_ERR_UNSUPPORTED_EXTENSION_FEATURE 45 + +# define X509_V_ERR_UNNESTED_RESOURCE 46 + +# define X509_V_ERR_PERMITTED_VIOLATION 47 +# define X509_V_ERR_EXCLUDED_VIOLATION 48 +# define X509_V_ERR_SUBTREE_MINMAX 49 +# define X509_V_ERR_UNSUPPORTED_CONSTRAINT_TYPE 51 +# define X509_V_ERR_UNSUPPORTED_CONSTRAINT_SYNTAX 52 +# define X509_V_ERR_UNSUPPORTED_NAME_SYNTAX 53 +# define X509_V_ERR_CRL_PATH_VALIDATION_ERROR 54 + +/* Suite B mode algorithm violation */ +# define X509_V_ERR_SUITE_B_INVALID_VERSION 56 +# define X509_V_ERR_SUITE_B_INVALID_ALGORITHM 57 +# define X509_V_ERR_SUITE_B_INVALID_CURVE 58 +# define X509_V_ERR_SUITE_B_INVALID_SIGNATURE_ALGORITHM 59 +# define X509_V_ERR_SUITE_B_LOS_NOT_ALLOWED 60 +# define X509_V_ERR_SUITE_B_CANNOT_SIGN_P_384_WITH_P_256 61 + +/* Host, email and IP check errors */ +# define X509_V_ERR_HOSTNAME_MISMATCH 62 +# define X509_V_ERR_EMAIL_MISMATCH 63 +# define X509_V_ERR_IP_ADDRESS_MISMATCH 64 + +/* The application is not happy */ +# define X509_V_ERR_APPLICATION_VERIFICATION 50 + +/* Certificate verify flags */ + +/* Send issuer+subject checks to verify_cb */ +# define X509_V_FLAG_CB_ISSUER_CHECK 0x1 +/* Use check time instead of current time */ +# define X509_V_FLAG_USE_CHECK_TIME 0x2 +/* Lookup CRLs */ +# define X509_V_FLAG_CRL_CHECK 0x4 +/* Lookup CRLs for whole chain */ +# define X509_V_FLAG_CRL_CHECK_ALL 0x8 +/* Ignore unhandled critical extensions */ +# define X509_V_FLAG_IGNORE_CRITICAL 0x10 +/* Disable workarounds for broken certificates */ +# define X509_V_FLAG_X509_STRICT 0x20 +/* Enable proxy certificate validation */ +# define X509_V_FLAG_ALLOW_PROXY_CERTS 0x40 +/* Enable policy checking */ +# define X509_V_FLAG_POLICY_CHECK 0x80 +/* Policy variable require-explicit-policy */ +# define X509_V_FLAG_EXPLICIT_POLICY 0x100 +/* Policy variable inhibit-any-policy */ +# define X509_V_FLAG_INHIBIT_ANY 0x200 +/* Policy variable inhibit-policy-mapping */ +# define X509_V_FLAG_INHIBIT_MAP 0x400 +/* Notify callback that policy is OK */ +# define X509_V_FLAG_NOTIFY_POLICY 0x800 +/* Extended CRL features such as indirect CRLs, alternate CRL signing keys */ +# define X509_V_FLAG_EXTENDED_CRL_SUPPORT 0x1000 +/* Delta CRL support */ +# define X509_V_FLAG_USE_DELTAS 0x2000 +/* Check selfsigned CA signature */ +# define X509_V_FLAG_CHECK_SS_SIGNATURE 0x4000 +/* Use trusted store first */ +# define X509_V_FLAG_TRUSTED_FIRST 0x8000 +/* Suite B 128 bit only mode: not normally used */ +# define X509_V_FLAG_SUITEB_128_LOS_ONLY 0x10000 +/* Suite B 192 bit only mode */ +# define X509_V_FLAG_SUITEB_192_LOS 0x20000 +/* Suite B 128 bit mode allowing 192 bit algorithms */ +# define X509_V_FLAG_SUITEB_128_LOS 0x30000 + +/* Allow partial chains if at least one certificate is in trusted store */ +# define X509_V_FLAG_PARTIAL_CHAIN 0x80000 + +# define X509_VP_FLAG_DEFAULT 0x1 +# define X509_VP_FLAG_OVERWRITE 0x2 +# define X509_VP_FLAG_RESET_FLAGS 0x4 +# define X509_VP_FLAG_LOCKED 0x8 +# define X509_VP_FLAG_ONCE 0x10 + +/* Internal use: mask of policy related options */ +# define X509_V_FLAG_POLICY_MASK (X509_V_FLAG_POLICY_CHECK \ + | X509_V_FLAG_EXPLICIT_POLICY \ + | X509_V_FLAG_INHIBIT_ANY \ + | X509_V_FLAG_INHIBIT_MAP) + +int X509_OBJECT_idx_by_subject(STACK_OF(X509_OBJECT) *h, int type, + X509_NAME *name); +X509_OBJECT *X509_OBJECT_retrieve_by_subject(STACK_OF(X509_OBJECT) *h, + int type, X509_NAME *name); +X509_OBJECT *X509_OBJECT_retrieve_match(STACK_OF(X509_OBJECT) *h, + X509_OBJECT *x); +void X509_OBJECT_up_ref_count(X509_OBJECT *a); +void X509_OBJECT_free_contents(X509_OBJECT *a); +X509_STORE *X509_STORE_new(void); +void X509_STORE_free(X509_STORE *v); + +STACK_OF(X509) *X509_STORE_get1_certs(X509_STORE_CTX *st, X509_NAME *nm); +STACK_OF(X509_CRL) *X509_STORE_get1_crls(X509_STORE_CTX *st, X509_NAME *nm); +int X509_STORE_set_flags(X509_STORE *ctx, unsigned long flags); +int X509_STORE_set_purpose(X509_STORE *ctx, int purpose); +int X509_STORE_set_trust(X509_STORE *ctx, int trust); +int X509_STORE_set1_param(X509_STORE *ctx, X509_VERIFY_PARAM *pm); + +void X509_STORE_set_verify_cb(X509_STORE *ctx, + int (*verify_cb) (int, X509_STORE_CTX *)); + +void X509_STORE_set_lookup_crls_cb(X509_STORE *ctx, + STACK_OF(X509_CRL) *(*cb) (X509_STORE_CTX + *ctx, + X509_NAME *nm)); + +X509_STORE_CTX *X509_STORE_CTX_new(void); + +int X509_STORE_CTX_get1_issuer(X509 **issuer, X509_STORE_CTX *ctx, X509 *x); + +void X509_STORE_CTX_free(X509_STORE_CTX *ctx); +int X509_STORE_CTX_init(X509_STORE_CTX *ctx, X509_STORE *store, + X509 *x509, STACK_OF(X509) *chain); +void X509_STORE_CTX_trusted_stack(X509_STORE_CTX *ctx, STACK_OF(X509) *sk); +void X509_STORE_CTX_cleanup(X509_STORE_CTX *ctx); + +X509_STORE *X509_STORE_CTX_get0_store(X509_STORE_CTX *ctx); + +X509_LOOKUP *X509_STORE_add_lookup(X509_STORE *v, X509_LOOKUP_METHOD *m); + +X509_LOOKUP_METHOD *X509_LOOKUP_hash_dir(void); +X509_LOOKUP_METHOD *X509_LOOKUP_file(void); + +int X509_STORE_add_cert(X509_STORE *ctx, X509 *x); +int X509_STORE_add_crl(X509_STORE *ctx, X509_CRL *x); + +int X509_STORE_get_by_subject(X509_STORE_CTX *vs, int type, X509_NAME *name, + X509_OBJECT *ret); + +int X509_LOOKUP_ctrl(X509_LOOKUP *ctx, int cmd, const char *argc, + long argl, char **ret); + +# ifndef OPENSSL_NO_STDIO +int X509_load_cert_file(X509_LOOKUP *ctx, const char *file, int type); +int X509_load_crl_file(X509_LOOKUP *ctx, const char *file, int type); +int X509_load_cert_crl_file(X509_LOOKUP *ctx, const char *file, int type); +# endif + +X509_LOOKUP *X509_LOOKUP_new(X509_LOOKUP_METHOD *method); +void X509_LOOKUP_free(X509_LOOKUP *ctx); +int X509_LOOKUP_init(X509_LOOKUP *ctx); +int X509_LOOKUP_by_subject(X509_LOOKUP *ctx, int type, X509_NAME *name, + X509_OBJECT *ret); +int X509_LOOKUP_by_issuer_serial(X509_LOOKUP *ctx, int type, X509_NAME *name, + ASN1_INTEGER *serial, X509_OBJECT *ret); +int X509_LOOKUP_by_fingerprint(X509_LOOKUP *ctx, int type, + unsigned char *bytes, int len, + X509_OBJECT *ret); +int X509_LOOKUP_by_alias(X509_LOOKUP *ctx, int type, char *str, int len, + X509_OBJECT *ret); +int X509_LOOKUP_shutdown(X509_LOOKUP *ctx); + +# ifndef OPENSSL_NO_STDIO +int X509_STORE_load_locations(X509_STORE *ctx, + const char *file, const char *dir); +int X509_STORE_set_default_paths(X509_STORE *ctx); +# endif + +int X509_STORE_CTX_get_ex_new_index(long argl, void *argp, + CRYPTO_EX_new *new_func, + CRYPTO_EX_dup *dup_func, + CRYPTO_EX_free *free_func); +int X509_STORE_CTX_set_ex_data(X509_STORE_CTX *ctx, int idx, void *data); +void *X509_STORE_CTX_get_ex_data(X509_STORE_CTX *ctx, int idx); +int X509_STORE_CTX_get_error(X509_STORE_CTX *ctx); +void X509_STORE_CTX_set_error(X509_STORE_CTX *ctx, int s); +int X509_STORE_CTX_get_error_depth(X509_STORE_CTX *ctx); +X509 *X509_STORE_CTX_get_current_cert(X509_STORE_CTX *ctx); +X509 *X509_STORE_CTX_get0_current_issuer(X509_STORE_CTX *ctx); +X509_CRL *X509_STORE_CTX_get0_current_crl(X509_STORE_CTX *ctx); +X509_STORE_CTX *X509_STORE_CTX_get0_parent_ctx(X509_STORE_CTX *ctx); +STACK_OF(X509) *X509_STORE_CTX_get_chain(X509_STORE_CTX *ctx); +STACK_OF(X509) *X509_STORE_CTX_get1_chain(X509_STORE_CTX *ctx); +void X509_STORE_CTX_set_cert(X509_STORE_CTX *c, X509 *x); +void X509_STORE_CTX_set_chain(X509_STORE_CTX *c, STACK_OF(X509) *sk); +void X509_STORE_CTX_set0_crls(X509_STORE_CTX *c, STACK_OF(X509_CRL) *sk); +int X509_STORE_CTX_set_purpose(X509_STORE_CTX *ctx, int purpose); +int X509_STORE_CTX_set_trust(X509_STORE_CTX *ctx, int trust); +int X509_STORE_CTX_purpose_inherit(X509_STORE_CTX *ctx, int def_purpose, + int purpose, int trust); +void X509_STORE_CTX_set_flags(X509_STORE_CTX *ctx, unsigned long flags); +void X509_STORE_CTX_set_time(X509_STORE_CTX *ctx, unsigned long flags, + time_t t); +void X509_STORE_CTX_set_verify_cb(X509_STORE_CTX *ctx, + int (*verify_cb) (int, X509_STORE_CTX *)); + +X509_POLICY_TREE *X509_STORE_CTX_get0_policy_tree(X509_STORE_CTX *ctx); +int X509_STORE_CTX_get_explicit_policy(X509_STORE_CTX *ctx); + +X509_VERIFY_PARAM *X509_STORE_CTX_get0_param(X509_STORE_CTX *ctx); +void X509_STORE_CTX_set0_param(X509_STORE_CTX *ctx, X509_VERIFY_PARAM *param); +int X509_STORE_CTX_set_default(X509_STORE_CTX *ctx, const char *name); + +/* X509_VERIFY_PARAM functions */ + +X509_VERIFY_PARAM *X509_VERIFY_PARAM_new(void); +void X509_VERIFY_PARAM_free(X509_VERIFY_PARAM *param); +int X509_VERIFY_PARAM_inherit(X509_VERIFY_PARAM *to, + const X509_VERIFY_PARAM *from); +int X509_VERIFY_PARAM_set1(X509_VERIFY_PARAM *to, + const X509_VERIFY_PARAM *from); +int X509_VERIFY_PARAM_set1_name(X509_VERIFY_PARAM *param, const char *name); +int X509_VERIFY_PARAM_set_flags(X509_VERIFY_PARAM *param, + unsigned long flags); +int X509_VERIFY_PARAM_clear_flags(X509_VERIFY_PARAM *param, + unsigned long flags); +unsigned long X509_VERIFY_PARAM_get_flags(X509_VERIFY_PARAM *param); +int X509_VERIFY_PARAM_set_purpose(X509_VERIFY_PARAM *param, int purpose); +int X509_VERIFY_PARAM_set_trust(X509_VERIFY_PARAM *param, int trust); +void X509_VERIFY_PARAM_set_depth(X509_VERIFY_PARAM *param, int depth); +void X509_VERIFY_PARAM_set_time(X509_VERIFY_PARAM *param, time_t t); +int X509_VERIFY_PARAM_add0_policy(X509_VERIFY_PARAM *param, + ASN1_OBJECT *policy); +int X509_VERIFY_PARAM_set1_policies(X509_VERIFY_PARAM *param, + STACK_OF(ASN1_OBJECT) *policies); + +int X509_VERIFY_PARAM_set1_host(X509_VERIFY_PARAM *param, + const char *name, size_t namelen); +int X509_VERIFY_PARAM_add1_host(X509_VERIFY_PARAM *param, + const char *name, size_t namelen); +void X509_VERIFY_PARAM_set_hostflags(X509_VERIFY_PARAM *param, + unsigned int flags); +char *X509_VERIFY_PARAM_get0_peername(X509_VERIFY_PARAM *); +int X509_VERIFY_PARAM_set1_email(X509_VERIFY_PARAM *param, + const char *email, size_t emaillen); +int X509_VERIFY_PARAM_set1_ip(X509_VERIFY_PARAM *param, + const unsigned char *ip, size_t iplen); +int X509_VERIFY_PARAM_set1_ip_asc(X509_VERIFY_PARAM *param, + const char *ipasc); + +int X509_VERIFY_PARAM_get_depth(const X509_VERIFY_PARAM *param); +const char *X509_VERIFY_PARAM_get0_name(const X509_VERIFY_PARAM *param); + +int X509_VERIFY_PARAM_add0_table(X509_VERIFY_PARAM *param); +int X509_VERIFY_PARAM_get_count(void); +const X509_VERIFY_PARAM *X509_VERIFY_PARAM_get0(int id); +const X509_VERIFY_PARAM *X509_VERIFY_PARAM_lookup(const char *name); +void X509_VERIFY_PARAM_table_cleanup(void); + +int X509_policy_check(X509_POLICY_TREE **ptree, int *pexplicit_policy, + STACK_OF(X509) *certs, + STACK_OF(ASN1_OBJECT) *policy_oids, unsigned int flags); + +void X509_policy_tree_free(X509_POLICY_TREE *tree); + +int X509_policy_tree_level_count(const X509_POLICY_TREE *tree); +X509_POLICY_LEVEL *X509_policy_tree_get0_level(const X509_POLICY_TREE *tree, + int i); + +STACK_OF(X509_POLICY_NODE) *X509_policy_tree_get0_policies(const + X509_POLICY_TREE + *tree); + +STACK_OF(X509_POLICY_NODE) *X509_policy_tree_get0_user_policies(const + X509_POLICY_TREE + *tree); + +int X509_policy_level_node_count(X509_POLICY_LEVEL *level); + +X509_POLICY_NODE *X509_policy_level_get0_node(X509_POLICY_LEVEL *level, + int i); + +const ASN1_OBJECT *X509_policy_node_get0_policy(const X509_POLICY_NODE *node); + +STACK_OF(POLICYQUALINFO) *X509_policy_node_get0_qualifiers(const + X509_POLICY_NODE + *node); +const X509_POLICY_NODE *X509_policy_node_get0_parent(const X509_POLICY_NODE + *node); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/ext/openssl-win32/out32dll/libeay32.lib b/ext/openssl-win32/out32dll/libeay32.lib new file mode 100644 index 0000000000000000000000000000000000000000..0a50e76586bd7b8009f2ed411306027ab6c3e62a GIT binary patch literal 820100 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

;Iib=ZQ>U0m#%rjxs7 z_tE*1dCm`tWNY~3u5IdsBnQ*oUM{B+Na{60RCz9lNG?`CAyp`~-+oLB!NE`cU8ObAyQMgF*W4 zgotkNj-UIg?q`Ry><`d=D=UjFH&GscZkbu_%hLpYQ+B* z!=}KUHozp_FOQJ#6GL9>(?R>mIRjuP-byk?_FmZ~a%zhVxknJ!{=Fel?Zq}5!YpS? zpdFZ>^)a*bH6m+&reS^C?Nz3;l^S;;8qe_YvhWqj>@A|01(CdctL>zSZ9kBrTl&aZ zW)x9-$0%kNY9lKEdq=1G$o^(tu?iL;afwp|fN6kVh>Weu?od{a4D(&)&%!2$Cx&YaupWzbBJ>G+vCtGwhXBZZkN zURA&>{#c!?Z6LDTxZ5Vg+(dTZ&c+IQ;5fufXZv_#kC*Nm#T>VnaI%j)_I2~zC}tLF zLDuSSK60p>B$r>HF=zRhIbyVk&$*Fo&s}`P^!zpOt8eb(4QL}nEA>tp6o=l{#~gDU zdIujdISxhH&c88M5%#$13|zKsXJqBvOt>S%M_}yAKd5#y=lTZd6wX298`K_4IOQu{ z>Cj1pS46%6FL=2)fGYjN2!59C7htb`Zuk^D_j%&-?U9VjCX%-Ms48aZQy7RvcXe&0 zvq~itb@Gwzut{ec|GOOh=7T-QU$=R;gQ}$2Zypn` zfapBgZy6aM=5OgT@(pJ!T+6hFhno>oJ#uuO>kkdD)%gYycFoZ`p9VSu;@<1O7BD!s_Ql26S-KloEls+4&pLg|z6bof$uW48qwl0}G z(nx;&4C3W!MyyBOrla;KWBnvzOZm=;+d$kLRRz?6e!DPwo_r9X`c4ox2i53Qj~l99 z@lukhnMWDFR9_TTsy=U2jp$CxY*k2PZwJPDxz=B!&}KPtrx?oE4o$T6;Xwsgq**`I z1^ah~^~+SX0qf-(jcBz(%X0rTn!gWQ6lU=VfOpk1=5Nqh?H{HSNvJ^Y3ys((K>4nZ z7&LMv?0Dw8`iAe!*vCKLwG#OT$1mTt7WoD$Ly#*o5s4PLm+2Qq-ihZR(<%@0PPaB< zL<2Ez-U;a0M;(dJmjOcAm@gUG7^eF8XJh`=h&Y^Y5DAo}-XzKle9YmxidBzGHs%V$ zt}@-nHybmGqK`it^L0n&nDXP3jrq7U+l(9$GVyAL;-fzr@e%b{ETx_TfIQew7&ML! zl25YaT~8#Y4SBG)GW_);Wn`2kMnLBlfAYrMwL+VmS5~?$ily7();&3$k@bQ1cYn&p z%;~E~qM=g>_0t||m{h4vL^Jvs7c*05B&xc6*2c7YBhz99q${7dP=k#fav1{A!WS&O zPJ1ytnQ}~!@A{&R8M+7#p& z-L^*KwRM=`6n)_J-LA&!WsCuVZ*=<_4;T;M>1M8;Hf;4v#z@? zD)#K!U0ixWu{GH%iumidCa-9bdm;#H-&&_PKYy{U=we%jP5}NSp)rzDfkYe>y?%hR zMKw;bw!WCbMxzzsQ#D<5)#Ex{>EVf@n2RWX`>;wj_?+kpjZ}PTDb=QIjjRc`B2(Hl@v_fIu}(*H>@-69tcyl=l4=fg%8p~W#IuL`t{z>;G4(<_12^TI~Uv_EERWPQB_>EY)pT_h-b;>5a#V%Jth7Za4@v_@p5 zmn$rGHIJ8+{HcMNM@kSkA7r5A;3issK3~bluzOW%-Ye2seJes3aE}oA4Rm0^pyM2_ zDYeBY=k>ST6}sypW%=ngLbqK&F7uJyoqVI?7fQ}mSZj1NyK^wA7!7rUe$huOQajU8 zr@(KO3{KBYO)l)4yKH`8ZhGdzzyT?88bN&Z1@3Rzrd4xS`mzh%SL)vg1 zhcb_ia(f2+*(>?XQA0kJ$Fk;c6Bbh#!MqJg%Y&5$&hH2(9mGhHD35DC+qwUA7a`40 zXIU9gCUcvKVk1ODp+|An5e-(OUhm3lJ6W{f)mfMb7E|y9pDc^SR zdh08x)B#EPj)T^xTJdn`0E+2D_VMMsLv>d(cZXLUK@p=NKmB_SeOGpS?s45>JS3Uj znz}_gcueh4OY_c=Kk}`bHidP#HL#(?bRl2$?xp?TSJ3TLWSHq9MY>kiPbG*kQ7reH znm+$v895H}A8VYzRik37711^JK>ktVcn5up=|R5Z*J_;nu~VedcSoY`Y?YZLy=K%* z(t&oKy}6c1#^X!qI;3wwp%l*{h-|)Y@-~alimEQ{dR0BJ(qC+?5Sjf$t~)8F4oK)X zYwG+<{lpTAcGkSD%q#4p*l=(lweAPHTmGS@XROigmkpFm(Jqj{HZrMn<|hD}UeWVPK$()xl*?2lHwx$ zc!r1Txff#nKy<#+!(-{mL}$dZat-Ei5H}DciK#`_U>HR8Lrw9FMyjrSTF1kKn0}&I ziiu7zx-yCxN*YU%QRMWTAaW?(Dn&(^ky9&MMAjj=P>ZpE2lB|ux)WBe?tsWz!g=IL z8_hEYV#)y4T7#9PLjc*i2Q)KQVP&ZKg4OC$3onN}qLa2i+;H;hoGZC~1FPgaZQP&} zAe9)D4SHq6RqS5Lsf=jg>7)~9HmFzUV99X-cVA-T=HV{z=$>Qagj!++7&YX|wl^ezK63J6?ee-1%YGyithj_5!t%I0OCBS@f ziCJ8@dt#NE0r?)CV0tkpXCKX(x2Z|OTq{=lJwD!Ybg;jan&SX-`KfX)6(XO~o(VCc z{oJ>GTh6~#Gy=AY^#oNtzh6^1w{QP!mVL4)wm8Q}E0(&$_Mp4k?X}#EB4YW8)Y7__{kNoayx`;(< z*xOui`Xo_85qGzFsEe&3ogXwhx|UdHLphs=x^qeujpbH*lsuymnPt!8FD)C#p-p>z zK!@D(YH2fAEJqQ4j&ovfvNXj+O|?5{R{P$pmb7NbiUC{xE04oVodaI$LQd|!w#-ab zs|Rye`5;TJQOllExuyaSSMfdkOOKn%9Rr7FMD*hG5K z+3|aQ^git#t*Veiy2Y&3EuLNEk-gorkzP7fjD>cn zJkqj^TsT}jS}g>=aTFsXo4nncQ${`>>(7+STaB8${(x-W?dph0`D{>h(N?mFmoM7u{5D|?-Wm( z*2b~!f$a3_J#PC!h?vhHulo9m;yqKBRaa|f*rfVTEUK#sSxRcu7jdtdq zS#eY$rpMzEpN;phKFi=`hG;zE9q}IOKQm~`5Q|6r63*6q+d$G=JUtN+OC->M-&u$p z`w#kVs$Yx;?Axu3SyNFzCBzSp{RFZXx>V9pbt~Prf9#pqzM=g8J#AFw&u8)EBU-_^ z)VtXH<-=}OiX&C$QC<3%hLzzMF-J!V@-gq{@Rby#N>T?Jjl?s$J))l+H~fo%-0cl{ z-vtDhY7VM2?lWdK-G@h&_*)xPX7}KM7jmwFo7bmB(b3BdzGkV;fsTr0i$ad^$9ZPc zMFv_{Ume(=p@YfWlg4fH?r+Q>(|J5>-tP^Y$Cx>69Gq;6;~d zIcmhy;=aE{XC`CIwA8Mi7m?WW2=m9zOg5NBYk9fbGzK3sA10_QFcZhgh6Z9P(Z1J6W5&RAg8^pE&W^eVBvkE)!BL6wS?6ok&%mRd;EEdy{P=lN0Y^ z2X8ncKqp)k|D&GgCP-8*%*yPMz*(1jd@G! zD^5$P*utRP&HD}dsHewO202#5it=3wk5iITQplNqoHirCzPaAXsb&F#V?&B zo%Z^uwV2M)h|Y6e`TrRl^^erbsd)<~KSzU=qP?1G%Yc0DGWl7d6+?Anoo%qivxrus zzc#qZk>~KB4JPF$>T>wFiIv=ei>P|5fy8Trdsw%aDxh^=b+P7m*en#!7s^mPR{4#k z)-h##jEfB?r46kHPw~;lO5OV$Ue4{9*_B2e+RgMH7cHH(NKTJWmRoRmIZs!@OxeWA zB?b5?A2sX=OG>-DcF=7H7t2aS4|uQihYV}k;89ue09Auh=>*w{?>Vzr(&;#Wa?XNm z)}qT~FK-jjrit&InT{DO`ejB{OvHc~T$@UOf{WBcI;1L;es}JnMi9RB? zdC>vMZlYK^qo`}|b&kfAK6*rS<@5r7kNBOz|4NqMe7_%TvyQ9edqBB z&QpzVw8kt|8^O7*nzo)Hi8=@3=2_QJ=kl4V%PmGXXJ-;=kJ#TcNt%BPX-{5TL40%f z5VAkfV(X85wCND188bM^V!e%64UTX=7^Buv51(O&7&UhSf-EgVdBYAWM8^=ONfN4Z{)55c^m;1t)ZS~XW{sCdQR7m&w}LvTZe{4opmTt_3_1g^ z>>{2`q@AA*BF;O-7qOlIzv#BcDyC`l(}Qvf}{AOJ4rJUSogo*~X> zku{Vret1aMxG^__oFQtbL%3OF4CQSgZYsFaYA5P4L zAgnhTSlnNoTE9nqHLrEC+=WQ4p_}40j^`OG5mV;77gBqOI-+i2co!AgSgHGh!%N?p zkWz;pjWE@6@E$6ulnsGTIh#2o-*i(gg96E)*?#v9!Be>}O-B$+V*Wj(>D4M9t$owh1A39BWu32i-lf-l7u>TZYHQRv z&IuXC^NZG^*E)!Ky2Fq*eZa9E$FEQ8fsQ!je&kxUPAZ;O)CFC!DH%w_TK*)*v z$FSZ6!visHM2a_&pZYAr8X7YT&9N9i;;o)d_>Tbi0i!IIYLumYy!SD2N-p1{9JL?LOkqWiX)v%)RX;fqEpdW9xSM+v=dTdG?35y zPK{P_GZfH?r3FPfzrJ2YorzZ@?*;@Eez&HOkKwB}rzgj8z{-D5<57!hC8Qy?if1um zfB00kf37iks~B;%>{2ZP#~Mgck>-EjL3OW?kYXXZ`GJR3tYp}u3wZj|Ygdw5@sw;0 zBL)nPm`>1bbEaCs$lfrjx_ESz@2ASJV;02`AHSwSYmc^NRC2r0T^zIq&Q*(Idw^u< zU(9*U(OV5F8~%4-WP_H(;3N#a{t{=Y|NQ3WKJr7Y9sF79fp)s2{^l~G8<$OR7zuV?|d#yAVJ?! z{=3H9w|6!SD&{S~{F%ku$$c{s=87?ajsInB_e$Q*T{gQA5nM4UklUYIl&F-0;-#ih96;lfA!V9dmg;CE7 zgUaOy%<0Q4tIG+^FsPVPpfCSn%_*fb!;o@1f&Kfss)pCHyAW}T#8d*rn_1eje>zO0 z7!kaL5*4F^7R}{A0C<&Z0d3 zu+FG{*QEv>g*Q4#jOP8)>8DeG z`rF-WkA#~|$|?1WVRAZw7rn8La~UyfJ{+BZeXZKoF{*Fq6r^liS@))Et1f8y`7=$)CJ$n)9$>hSN z#o|i8eW)0AuS(oQi24*a1#rtYBztid&nD2%4JTBbHE7Lqw*ji*eknw0c{k-s>%cgD z=Z`7rwdb~-d~YQ3)*qsB(GDW*8B3f~prKm=+|ALoj;Q>Esw~)4rrROpKW`3D$&CoD zwY414C5VRpPGw7NTGLM=L;Kb55umkuxLBcs$lT*0#da52!V?0xd^BYUSZtMmpZW2C zG^MXFsAuPQAw+lUg_yUf+x6K2L_VOaAO@$|2BbAV4WM%1kV$Jm#_bycSz_cImI>vd zih%uP++1>u*16B9c*(XDjJ-xZq14f1PqSFMkmmkNfZOCc1=%guTrkV`P*Hb7u{y+- zGH`3HL2EUUUgSId$dT)8{#sn^ zBuAEVXe`>@aW6-P)T%!0Z7#abA+BPLLEUeEa3m<#`ii9X6o<39Y!Zs4PIEB53k2m{ z1@_>c&Ri-xz$tk)47RGsaY0;jZwFVcad~72&t+yv`JTYCkHK1TD% z6R#VfK6Oo-y8UaE2Y19$P9Kn#Yt?wWI&C_$cqgY$?8y^T2hgreK9b3ks%~pFq=ZUdJw_oXmF*^u|1cn^bL0OC}@c;3=@4H?n6i zq1l6COP2nY-L3jCR4z7aS@@GPrIrs`R|Hd_6r+UZ1pSX#QmVuv0>;J??%fU$? zp(ojBc_b9z-PFL->$~j=$~6L5nWfsFAW6}9p4k@LH6WWeb13vDP>crriJ5v;s_0`h zk32a?fj@C`hrW==PS|rLg-KdVD4a7l~tTgItd0U;Is8Q2vkU(y3 zU+aZ|HeR`Tp^Hc@UvAKuQ*KrrxvB0TO|>;Z^LINGcDSG@qu;R9SeM-8yzH124S`2qFEku0znw`9w+e9LeJ?>a~5}S|>*|hGgTG zCYJ9ciRTK%?t?lDKf80P$|2`K1Z%-rYBveRnvB?5IlyQB*h`Oe-jIFXU+bBH77!IV zPXUGJm=p$`GAV^fTJB_0xJ;L8*~}DEh9a=LXv%2Y4zjbQcp zriYoK&lh+qGg=>No@VH+i)i~9)Y))_hetK|O$F^)8zgrpp;+wp5nK;cYynWO%zt{b zd3^c^CqvYx@8bfxa#fI0e_M=HSJ1sqX9h88Mh|p)MYp%yx7AcWvk^T#ljL|V$YHu> zbdckeD%3M`vPX4>{zZ`adWT0T;T3KJqj+8;i02S*4|^0+oVbbG>cSH%#s>E3Cn4-y zJ&X~W`4p$O262;jUILB1B#4-h`LAb?6|m8MD% z;Owh?&ayL_iU{^Ae>aR6a8|@J3s659L@nC=^huOFs0&E33t6c_DL+7rQ5cir2ta*Gu4 z9qvFr*~xWgvGi7kLu&M};lxx%A_~4!@9`Fui+pZ_>tu_mLpj=C)qBkpb&K6m;;M@gH-7Blnk*7s@$LI&^hR) z-YbhJe3&znj24(kxwL{k8&3>SSnztu`M*@D1zK`9OG`Rs3r{K@(2`viZ!5e2bH(ci z(2~g@X1bQ3HRRTo)l1JDBdiBlvg14IVqSvCVBX@T%24OnRRkn-)~u)SvG<$3%TVQ- z2)y%WT(|0vSL;TJH^0MH2{A{3bY5V2019tvvPiFpp?cA;d>Yel83H`*yEFzC3^7lE zHGPt`MiEaHUNE&KmmPpR8O8NdTXI|w_54MUzd7PqbjSUJTw9=TJuNR(D!gru(m6&w z8;32c=LQ5)B;KJm1Gt`7AojsJHF}&|*44 zM(ZsRT(6B-uA2b$sg^xZx|u0^hj@H?7&RD1i+K!I(09ae{g6-0Wkm0Z;kgY4L}Gfu z?7lHfub(y$Q;TvkuMSfiTH3_8=xmnPg>hAOmMYlxqAEs4m7C{;`Rpey#i&TC?iZ$) zQQISDbG=xqfEIl#OzmN{TP=~x=#J^XLb%0%wx-ipNX3t=L}yW^_-6<|nd9h;r`uTZ z{%V&};&gkM66_55Rg^)#t%d9@ykdDqnXws*zufJz+G_iUXUQ=mbGnh{^tF}_g-wN6 zcYsBHoke4fm&F4Id9l8Ysty@f*r}O$Ky&uo%w1h&*mGAm@p(Gd+|^%N_J>{X z^c^CofBXzfKWaR`#YCzfD1-cZ8#BF{3!>uNdssPaE28f9w)Q8VCycP}U}0sD6i|gf z$&$>Fb0?J%wDw;WK+7?6sABzw5N6Pglv0Yir}tYDTJp7aUUN{4{W3_F)j(X(n2k*iVe$(A@RwJ>{*=u-H6tK5flt+i+q{k62LNb94KfR<%9@ ztvJXr&G2B$IVw?%8;NN+PJJlCo!GWLjbg;#6FlU$b409^PP8NA?e&RAn!n474qL^t zih7WrAHthR-t7lG{I>=Wlkp-F%bj=sRs!2J zv}8E}Gxs5nw(;7q7lrV~YQx?UKpdwH`-vr+Jb&Y~Vdq*N1)+`AhF#N@&9U0B=eaXC zRvUJeOWT-j*gMRbBd;jks-RlUCX>1f?RfZtk43m+^#%WE>Y<`|oObjRrmQNo@!HWB zgz&~{N8c4d9H$-qg*SiWw4<*yeL_+-JNjIA=EiDA`z~!`wxhpuDF8c;s?Bk;R)#)bE^5XWbcGxV(igfATn&PfA3@lIZvm%{oAbDaaMnW0g zf2g}v+pX2k3hfRKCtT#1p!)ZZVN7o+5J$0~JNC;_Om{gDqXJ655<_*C1TkhrO7Bck z`cFa3ba_Qm^wl8dcqR91K4vKB%qqFx2xE>_a=#wM9H-=dGln`w$^BLkbG(xK?I7lO zCHFfXrgDYdBzIQH{azSztdjfPDCRgN_n%{^W0c(Q2QkMhxjzVErb{lW;Qdp*d$`>i zj<)%(op>Ds*~_mwSiW;7MMIQ*%|`R4E+^L4Z7grf#8?pzv3!vi&llRQ`9)JUI!m1`McWg6DKAkKb+b>OFZ@|4 zd~b+CM+L+bf||~2Jv>hhn#p_ zzCwu60CihEG+#W$c!0WBIMOoS%;z?jI!{!jw4q(J+fB4|Bw(S>Gmwt>0wR|Gtq}>i zCCUH!8f%!?Kfg87`E@d(TwtK2cC~DcoPc>N!g*@#?RVNs!n?R#IkYUYtK#-V+kI>--w2Cm4^ehs3oU)UMp!#6EYB>;>551Q+p5Q3 zzv@9;U2+N-V%-KPlQl)FOWSM}6Qclse^-MNFd$+iV0-_%j-ywX+7mWG^4S40{=ph& z(4Hu^ZW^;j?W<2?VzljBbD)9QnyP1u(USXYQ6#1*s zFx^x^`*Tw%jQCQg5idVk*WBq2HUqI(?WXQ>M|$=HZ9lqeoz`E=sDtL$CX%}uBrDRt8%SHuA16(} zG?2D!PWIR$-5$3iyL7$U@?LqcJ6Kuk_nkwor8W@lPrOj|#9g{DHM47K7oXWz?4RFp z;Z%`+-Xq!}d>h3}A2s=;*@(60_3Sq)O7St%&znG*kAGlFcTdmG7qqF)NexKn5v`l= zv~c*`RogX?Vj*ATL%c>`I5jghx8vesX2;&C`GB~HwH$d{|G`pfBf6p@$BWqgjU+1{ z^eObjM9fi;U4Joayh&e?;T&y%w}tlyTX^HWiR=R|KLY|IL(-m7eVx$Ve_i(L;sPsfvI-6S}xwo4U;)gjOanar#llEdP zrwVA}cUkutqr5dUbcCcB4|y8@!4lfwc}GV|`G>IHXVK;#DJaE4^7vKupfp_^VCJ}u z8bwJTtEHm|948^4vxww#{p}+f$v-4R%0rY3xS^ge#wj{S66GG%eLt#c+P_9O+oi6q zz$S0u)nIyle*g5$g~hJv`GsP3-}KBv1|J5+Nc$qFu8EY+A39_5FIcw&lzK)|ES=jT z(#dxDu`D%v=5}r?cFfLA-GAr4U62(VJF4PZUr-0-qSblEA#1G?}? zpF)qNVjB~wZkQQ8YGyKGO2v3UK7XiZu*P%QDMkaccN>p7kD2n>19%%v>Ns)l zr|iXeXx;szmQLa(@6$xdZFNt+Z{KotvJSe*Y^lg(cOmh%H1p36)zbwE;1YG$sY&SR!{?oe;_CZ4;C_fasPO4XJ~)_|IW zHawc`<=$ORNm|M`R9k#Zg%C;~iE$#fgS*5ZSL67}Bl)~UIL3AFKd*5X2Cd$3xj#re z*AeC39$RCDl1E~ykQ~f&cgNmcsXeQa)r+%x3l+k+>*#h1H{6LKpnjk3>%6&ea z^R3GBo7^`uzc9ChQoQp;`(USiC^3tTvb-m9P0B;{U3oF35qrV;)>{TKQ`bVYSLXRa z#0;xEkervXS206#xx0A4^vo7V?WFuf+0U0WNK2jN*7{0f?+x;Df5CT0lvFLP)BWd* z-F~8UBFcX5pe;KGzKXdBY}bz)EMNS^whQ_0zqFAGsvaeFccQxDGuf9eXN-4>_10Gx zJA=Y0SIOxE(Zatq^fBVF(;jvEPSdt@=1_Omj~u)lo$1JT`$2=Z(r=~S6pys+XExH9 zwe4RWv}A3ItO4vZ{;(C8>PX`oxtd{G2WKMZq|5NsrG_U7p_fSuWZ%U=Ji~8~JZ}GT9Oyw=I zr4I^Fn1QDeul;o5=_=nxW%6{opko^8n&`II&MTiwfO{y6OZ%EL;6`HoQ;6ONyBwYl zh)`BaSA0r&)mmF$q{}=LeH*lDeSot-_RPAXE2k5z%75l_))QT^ZUSr2_4yiTn-n7g znZ4Xc!sT^U64gHL0F4SAf8m#iVkyZg?ynWOtCfj>1jwL1qlQE%K=l)cet$(%%S+qZ1W(zzJfSHrs~ z_p-mUZ|D8WECyZZG)9{}YheWsg_G+XsDnI|=S;bC3$|GPP~`V7ToYpX zYb&Hm;GLtf#E7U$yj;`fZH<%86Y70_75h9)*D_hBLMaws!RQbsMg*(Opq6+8aq(yX zRL)J1-91oqbEP-YbB%`_3Fz3t8i`H52PNes%0qTFQg>-$#YwPcrRj1LiEO=X5OdOW z$V3{Blctp#iRke~LQE5oh#8JcS;rV@bi`RE#Ym9|n9mb?L# z|G>Q``#fX@wiR0}Ehr!UUjfvm&Pr$0@qwi}fmXO%2KekNh7=La>}3H&ifhW5U7G0H zOqL>}nY}kxf}NS=WM+n$jb!@HA**wPIBG#F`^@yNG>W$a?2}Z?YRhs(F=La}O~j5^ z+s#DxB^bLs=#IMWmJ_hcbt)2Lo=xB2<6%itCZye8Pu`=BYA^pDpnjb3^tA(0<|UTI z+(oh3HI;A7vc+}7>0L#-Cl0cmuh;yn(0n5$rVhpL|EleAh38J57!C3A`&v>fG;iv} zb}-_Z+?n*^!4@y)7j`V{&vQmhL>EsX%yYDSGKCdpI!`0EkL#^xhp0^FE67J)+RWnI z#iS6vh)QP><$TU-II7TGW{R;QwwyiZKXWMa*eKVA2-@j{Hmxb!N2eG~-5)r9a$F!W zhc%TAuJ0U3`HDP}KXWOKxqNaufi3-+){KfyUr^3Hunrde_4#<0S8Zt zi~NI!xKz95SIlGNAKc%y6P^K<(uRE3U79vBzSA?i_hneg5OweI@LXn!sRP#UUYeIR zbsjUtbB7}P8=BPZpQ7_gGUhRWm-l?F8ANA|>n~?wTG9DxKk+bQ3z~RFBh{3RWCL#C zaoAtbqJ`dapQ+zl>h;u%HRn(LU_qNE5dX;Nwt^0i~s2A4E3a-;@x zH_vcf;Ri?AX9j`^~@Ok?d9$AS^#cF5OZ_1Zy zD)Lmi9`3=>D6yiBx>A=sJg*dybsjJG@Os{sA~8QBzWk|Vd3r&-B0Vb~v37SP%vB$= zb7iV-02)8w=_IwmZY~C$D{N3PUqK|=Gc3>i?9R&;f`>AT5rGBxyQ&QHx< zLLL4W?+a~)lVbvne21P*1Jh-!91+arLg_>jTta zOOlx8?Ew9GSA*^~C5h3`i+F((MEiq65@w_{!|6S-c13LTIrI%~hQ2`{!6(H=8L%gW zc<-8PF~3oN;m1SNdInocBg)SIO4HbCw>xViitLAL{oasns!zs6x_o0zDesEu9_|$F z^-+I$IRk1$o4A+f42`KOtcgutbl%k;w(W=(^_F#n)M4kc9%FWv~+#IaXve6p$d%k#z>5F6-`24(U zY5GX{yi4VzNXWK4Q`1IBsyNf_Ejx#kiSZ&)6Zd;wW#V;*!*x1U%Of!B?0s1y_In-5 z=2uiEYCDq7OEltIYcT8->x0y8c2xa8Q_Bhwx850!c&*>$nKL<0Bb9L8^M2P5=H?=Y ze-SxpmTy_RyXLDw>E;}^26-5F(3Y)6?GAa%XD@kwKk`<8=+Rn9Z;nU+RHkq5&8(p{ z_5ztzqF(B8SykWsYy0G=AWLAQDwTo7UXPG`r5o!$~VC0_f691qyJdENI@<7Ma< z0rV~Sc*(sRC|A3pdqw!@veniRo!lu_I=us0ypq4t7IxU}9a!m<{$&n3gz{%E z)2QTK7Q@5sm44d~gQS)Z^#JbT)1ddwPR-2EUrhHY&J`rNHe1DLK!T?Eo>>!(!Y&6+ ztRdSYYYFdGc$%_$6?J?z51kpsr)%_SJL9{FOdT>ZrTwFjGz+h~K~Jqfxx+9Bm>;1U~bVOpccH6-(XaL~TTK z_!QI9bz55|+O4&M?5iy{Qfr6K&icJtFRMB94_K4)6ZisOw6KQ5&fsu2IYSTdUZs4U znl{24ttX#DhJ1mioBGZtjTejS-IYk^IbpfP{|7dClbvb9qYyr-`)TFf6 zS8J4O+@w;9a)rB0O&lKVU%5<2@H?q3DIVhHP77~Dt?|hf0btp_Y|b4OAKEQCg5N!c zO|FT+vVFxt>;)mE97XH=HO+ON*7ylp>(i_n>O6eo0EubDC(L+?U^to(e2 z##`wwE>T@K2r1gj1`Ghd9VF_`RxCF8Y@Hh3tEw`rQ!>X zmfQ<~xcCKi(wD~aiaBB~MzRci*V11qo4MBMky!5PCVNT|pPsYTe^jS$l}MbDR}n?K zyLOQDAW`Q4>i>jLm%0b2E|7?dEcL_KuFUS7nwZ@&wSPvrcE>{@e%lb_`EU{b`ijg9qz; zZeoS57L=m_4LGdPsMZ2;d;=@WU8RG8el`lkAdhzIpA|B?f4=Cp@SYscnJO@IgTN4X9sBvYnm3-GG z^7bB9^L43nh%N(go0G(}A-nl-jnywgoAJdn7qKoJA3UPQ;x6;4OX#@7=~)US3)Yad z_yAG($QpHRKn0`G(KTn`lTx@fvhMK>)Q_sMGUz*!kY{j4lRXtB{gZp=ZT5*J1bHft zHfbt$T|^yTt<}WH3fZzhxAEq8%nrJT>CpZ?>9=fw%+!ZCBG(+d){>>!J(Kh2*c)Tj zXvOT@^d$vpXJF|NQ;M?3-?Xek7K;FE(Bte`%%vxhNai%s&Bt4ab2)7-un2GGJ5sc+ zFzWi^O1JG9c(FwQynT-~lY|*G2~tGlcRa!3Er$ZOl1Q=88vSsKIu&;8*nepv9#~1< z&h=tFg9=Ysy4fAmbBU;+`u9YSqs8Rh#pA`uI{y@xwoINR+P(c$A2X+g1Nw0WSFW^vFn6lX09C0YHRZrrc49iw!iwXhiGkjUfq`7ECc&3M%)8|FD z>MfSf%k!Gi?*)85#aoGT`M$^>eU``P4E`_hF5cj2O&%W@t$T0sR-deXFrfC?LGEVo zg#qSs!kFp)aKskgifr+7Ys^5oQW`y>NUdG_!e#ZsbA+W>XhnOTMN`BH7W)mTw|9nn z3faDw)a|#R3cYfPHDt1;!IKD;YOBgIcmfL@Tm^Bc2R?Fwp5C?N9bh#@7cANUGn!>Tx>bT zpyTC*wnPOSY$>%UzxiLaw_8#haIU3j$OpPky-FKsvEq&xHzGyn(44N@mO)Y3;HKZb zi|!r#Lx965n2^$qx{)94@H-Gl$YmE;;1@Zvo6SOiwdTb(CUED)oQ+rswubMlz4=m- zl#`HU^Einn|V!_3qJ>?FDv6?yY7x9Ox%+Xj=`0kon$r_P;} zc7Vfr)jLX?X*#XdG+Y#4AF(4A#!Zh}fR+q=Ith=D4DiSl&n4;wd4)HZ*&-&erp(z9 z6LU9H)P(X0uME(dF>(U4`&QfPDtfa;Pk_&_3R0XSfjs4*F|x-nbJ`{Q5ADbHtti^$ii!^!O8L(5EA_n4+}JO^QHaWPz5*J5 zp`w9OX7=vbGsPX;B&)WAD3=@HA^p-toWCdwCen;s7<{Ge=6n!BDurMcf9{|i>KyGJ zKG5mekYY;%X7PMOQrWI4Ycp0!y_rE{g%~hzVj4lG@ly@^T_d_AitzwXPYO`zsiIsn zz>0jHK_MU2F*!dwLtB9g?|2+JDyVKgU1i%#3&5!U@!3+YBH#TthW0bs@}Ns6IIbM! zBbI$ab0Ys1At#?Sh^){5b2v=)z%~W)`2<}-|KZR{N5-{Q*aSHyPs&^53*1V1&y5TX zTg!<%I+0)X!~mMJ`BBbMV9(bKy=3iJY#o?5lD>BYSb`5n5b2(YM9D!_np+zduT511 z_c#i%!~mZDwL#%hr#(1IS0N2O#gHOyjpzlRHFE=lI{(-zF;XN}=QFbY$Iw7p_UR;G z=XkTM(s{B$7jNQjjYb1H{WsOyh~(JrLiGL4qHko`a9cdZTm|#@djr)!oKlPwkxlM# z{8K|VlRXT;$8W21drGTGXTPk{Sq7ydq~B-`P@iZ~N2qj3Je{Jfkke*wTSO;LC!Stt zc&LijH9D`M;B|tmsSPXF4&cT8!H^mg z6Drk2l$Ab}PXguYEM=uRrkJP#3|m3Oh#jrxP8v)Fs#?#(uN za-@jd@cEU$P!(X}=r%rC(ogk?c?rCWKiXIvW&4RfF?C2jU!!Wh6?J^#V{y^{SKN1p zNmf?r8vu1zlvOc-iey1#rY9n%n(msRou2Ndt9qCLJx~ABf4y~byyv6Vw8~B~g+N>G z9M2tfyr^_LdJ7uWLbBz&xyg(%}C{OyTDXOziPGZKo zi119}q*!Qf@*;&c##+^XP(&q9&QA~%SI4`01AgwAUkD;UkU<@kY0KV`*y!zsDCR4$ z{4)|Sx*;l6t20q$e9NRUOq6pK#NaJfJWC zZc=ElRBVMHI=xfDi$1u>-HpS(XJABc@i1JTlzR09p7qT4Lp;adl@_P~0hPcK0 z1+4ac8S+e-F0013@dDTo`u^pjB;(r<B4!^)1v}+9N0!R?# z3?J0+`nQfPEEVew+IzTvQnzo2ONGIO<^C(3WR|`iZD1wO)1*0|R~M<6+I7J1eaOyZ zL$G3R05IPa?`FrfO02a5It|klV**`zbLMLmOuE#sI$Ak*9o-S0rTwSM-7HlK5W&%x zf19!jl&Q^d{dLLF&*N$Hhh5ZqYZJ=Tj>#lTYf2P4X{z3wi}+!7dS5pR@xCRH@cPVK z5c=u_JxqS+h~W<>UZ1PrCb0DCYp>Dj1-R3W@|MM9wz#4HPSt?nOZ1W`y?m*flh}qG zG;@{H$s#&0r1b^8;=TI)!h|sOR_=4O3qv3dzycDn~mFdT)%j z{ItSGj0o&y#DN&%r3N&;d56kX_71h)O2>2e4She+RVih}hEr+fQ3vE{SDLgod|$#u z8PmUKcx)k*ptYA`|J&$T#46S%N44*a%J7Cvdw9WM ztWj^zYsxCe1O40|s(2w@FLHPRo*G@1@sX(u@O}~6Yk0egw!P75F8J>CA`iYRi;sgn zF~69I`b52)+~S^8-}=(nsFf>XomuOM$Gm;_ku2Yv_kOY5kyrAZcrN2-knK0Ld;07w zn_LL+4w|Fd<6W?8Gwy|`20-t0A>&`%T#7@H{%DCBi$&LL3G?vSiThhT6<9bJZ^a|@SE^7UA z0FXu9H$&yVA}ztKbZfhO>w8p_ekqwPZA`vhQdLN7ji6rpZ4x^+2KrhF^ewJPtZ`$s z-2ZB*x5|$)l)HUZL!;2|iw0u;iJ6vgjxpD1@6kUNlv_TSk$s~tH+mRwwo=+srXy@K z<5RW~wj34s)5*SO>Ztx!4=Sgx+bQ+8d7!D^h^09-F+RF8e$?75`a{~_f5hH2L(|zQ z#&Sdq?&f_>qs(BVTwferC!PX*J3~8jwloolmnhdiJ=V~emnotzKhgH-^%e>P@YLb4 zd2)ML{GEPGAumZ*sxzhWNlI<}brfZ%rMRXsQN4K!eBAdPlm_50i1$l5O1G7!r^hGh z#*|KGP%AknN9O=Bgftx$<58qT_pl)9Buc#wvXVEMJdOONh&By=9(STi_DersYwfa#S%rG{$F5poz-$|htK70gP&n+gY9BD1HJlXhCSW)6#={wh|@P4 zcsgsv)PWrDR|cBFOtB=8{^C!=;NTO-J^nda~SJ)J_{oy#~s)-;ip^a<{QE-?piw7|)@R@vMUDq*(ti zpn>6mD3}#Es!zUe^vzUqT{_;Rm-JHVkkqcvkQxn58KpQ#|KGtCQp`neRK)ttmi%5Y%b(_?CLpjfnd7?B!)CJkbK~no}LRq6eS3F(cOVNVdgaQ)#euC5LYD z;IU~_TUQNiQq5oE=zP$}?|1lNA8D;00@A)41_)7mxz}vBJbea2x-mft!Zj3E4v&5B zIK9#_wtBs92ORjN`zSb3!CQ&@KuBzVBXvTJzp2;_Nc* zUV2Ap;5B{}>tp^ErpS9w5bc1R9p`cio?g0(YYc>UQ$pX$++wr7m2TD<_d;G*hBC%gok`oI*#{`%topi)@%Wk#a;}g%{Wm zjTVfUufPg_JkXl{EvcwtX~P7i@KFhc)0K)_jA9Cb-Jfnj)P*R<16s4ef@g?O&Ql=6 zzi`)%ZDYr2YgR|QYu(+EezZ9#-q+&{mhi~YwC4GJ&t0+#zZ@~wKm^asI4sa!gSYAC3kR~E5&s7h`h-E$|s7o zhiGWzy=aenUT3RVl4#FzL!PfeIwy#q=Oh#^HI~}cXQNy9dsGJ|_9%`BbYIe$TN0}< z!hjeB^q6nWp%kx?%Za>ND~pR(I4N!DtA_thZ z$e>Op^t-sF9e*&OF+3>tUH=d45tZp;Y_xNFHybu(8YI}F+(Z<3Tbj*H!7tV_~`g*H~$1l^ph>mSBsgU;kuZZ?AHs#PT_9l1#KheFd z$`Kb&AoN4+=wa*%WQu>)?W!;H5S9f{?_sAlfNh~V=BG*S5r0FbIu5BGqc0DBrr<;i z+IbJTHwLxE&vRINxs(YruK|d^&=G@tUyQcaewiZ1O*}h^a;`dJ`$NeZf2AQ>Nt7c3 zi}-bd$a9FHRcr?(cF3qfDmGL-txvLXMhjCt0U2J;yOo?B5*j^RkaU4mvlq({^)G&t z%FzF-I8_5?rU@+qFYT zzfUL%@{JhE?Eau41(zG@mHaJ<@_i}?MX6DoiLC)$yt+N9&UDNGStOb;ZN4YjeWhF; zb1!Cy=|p!M&dBf<=2njc`hE-L7h@@+HQ39k1HIC%DVB3RLyU)LD`$AN1r0G4lH7QT zMJpOZk=(Wvkwc)-v=>u{wlx08{)S$%P{V;V&t2oFS?*0)(w_zhzBM@V&woxZY>NzH zexd5%FDa6_#31Dw%7XsL(-eMTByy}T$f2c)Ayifkq3?+<40N$O-bDKUzQ2?EAbYA#c)6a8M6)mUD303RXtF9raoSvSc z6fUP%CEQ!LK7gE1ZZVysDwy>Gz4$;5uV}rvVt}<~W0Cgzx(uaoy|^rgRjmEqIM6`i zT~xH3W(QQQTkYGAM0wc%4k#j&!sWC&qo`o}Jtv1W4EsGY$HgFe;pofpWx>AE`wm~IMjE5?b-5Fl5v0pp)EJi|EMu{(`^mU~FAq%(oJSjt3@|sL;eLO>OQY}GW ztDTqev5#gEoD>hq?Pl&nRc5B6(b{4?(#m16+z`@D3eqNDi8*{d@4?@wAk`Q7{iHugZvId~T=C>4Li&+{q^;%2H3WFb8xo}Ln@Sbib7NvObSvb$ zDjM$s&K-zWNO&qUrFw$88@H;M&6d8zET#}`!Twl9^WI!TQ^;FVtoRmoREn0`^URXDUn|-*Nefn;n)Z>6oKoP=zMtY!D5oKIJThqd z>M7b{`hf#6+Ek=O|0hAs@8$0DMO^F1lDI2Ji7iFH5Z_B6tG`o*!m{hqH+!CTfojvW zeCw&QW3pTw4{~V@#fBxGL?&4Nz6^95*W{`4_hgQ0hj-~dmmC}uee=B!vWj~ncIfY{l-J>gwj?T`MMt7PYT1xXi zWZ%!x(L&gOV-9p2QTGBJk1b)TS?{#9kHy6{jb03CyXx*-ob|2rPpm* z^BSyJqCkIM!d-~G{`hMvkmtK}8six0N$Da6^El)g0 z^x%BsJ61f+JmtQ~k=b+q^9%#gf1d>Hkj)MBCzd1INv&RA>D204`&v#Tkm8Mb8X1#? zs4-QltLq*0?`q=d^K=^P{LLL%2|e=1MGe0p(bRu{m||q52aI3PIj~GO^XD6Tn{{pF zQc5|BY|qqjX$Lu?vt>>!U7$K=NZWHOJKgbDG}tha25) ztk0al*LT;NzTOa23{@Sw-I=E@mUlgb{KbVjW~@z3?`xB&WA+bSshUNs9DxkMdy%CnWH zSrE-)M(le*hO~3Q*F24!DACL5zIhqYp<5iNOI_bC39`_hg}X*!A(y8krgKmGJPVzU zv{#M`q*;$ z(4`#Od}Fae0}2CB>JLySaU_rDeK8qL{?E)I5lNO)Rbsk8hkMUJH(6={JSy8tR3F@A zr?cK^_UJ`Xp;&J#7fei0qu))~;8pK6$aX0Q$_d1JDh)0_bL z8<5}GIog8dZ6J31Er*x1oaiG|&)9+N;t~yUICk+N4Yg>yI7!1BhFxsWX(`Jxj9s99 zz`JvZ{iiOs(~EGM>GhlH4%LxMGb{9MaXUq=(4J#;N1PNd)S8PcordLcYq`I3WOc`q zC)j1h_P-Q}s>lsC%q8tuznn@?Eq^Q3-W-R6^heQD^}{-yX4)*L64b0)bUaS<$oH)@ zy1ug$P@zA@hT7}WW^KCPB?J z)7#+4N7j)~Xjw4}nWZ=~hlkOxINbIt!p$`t^z&`Fd)SbvU~07DDN=n-4FzJYMiZnT z+w`p82d9e&DzH?)*E_l-ClSpTTXE?U3N4EJ&t6fLxCtQpcf=9RJFLj@Gba}3CFZsx z9-T_uKFp?J{RdWJWcskE&A_J5LqI`JDFnc?tCO&%^T+GHTC!pjpaMG=;p_zzdUC zAbmMM&sqPR!r^m|A}{d!Jd&e07IPC={Uh>toJWMy8Aq>y_m!WeqlU^20j0O)G2_n> z4g~TvC`Wv3URwvKJW!^0vpSlC6Xy)bNeHdO8{sAZ{GkI{XDl1-av zzfpx0^A=PX-?vd|9Z-o;LH_bO9o0xj#c04rKdPfSQc*D`u+ejLNe1k*qh8=;Hr%0j z!iVTwW{L~;gpami4#5*1VdL@;JmEeYZsDHrcpH}s_Jom*(n3Aqqiu*`JR$H+pBnHs zo6kq}#YU~=UC)7jz>iGK5Y-hxeENX5IVuC(WI-L?Lrp~g7z5(yr31Vj>sFl>l_s`K z&A3*O#Zd-S$!{N^a{1;6YC-dp+v$);RNYaH#x_yi6c0WukKIWrL|yDV&{2;B(Nt0? z63V^qm_y={m`cMCv^jK!@9o|xhuEaqk?)tGh>v&9Vez3lzl;)1j}FQq#i!L&D6u}G z9rb7OyV0}b(bRIIMdxKakRl1QpM7Eoe052=T2P z=tYh5?FphWZkl#F?T!^vOecs769YOKk=JajfMSh7GlrkvEu*p7T3#VLZ?`$%s=}0G z0=}+SsANo=D8+mQap7k*MS|f9Fu`j(c1ce0gbd`K}K0adiZ5H*J4Wp?HehvQ||D~QAKGDjGgLA(sG`cnt?z>*AU^~feB2HF}R7X($= z(E}9916R=$h>wJX@!0_L5d&_dfZyq4_B^ckCqT4-`fcs(s``+sF04l`!qIy^S;NI5zS*Wu5pI?QwqRfiW$ znhV$A2b-8dbQs;6o*iHsEq}2`LNR;Wz&bf0>1&bd=A|ANbvkPUEK-*`o$OM9#8jc| z;OPS-R?g%QS`g|S({g^Z=E6I<7rA+kT=JG z7M`Ng7vSYF^wo7urOn1lx!-qqD!%W0<3Yqr9$#-?6P0PiJ32EFPl71B)}B5WOVGhn zzKiy4_Kz0SmI)h_+TCn>Io#ximkAq^+EI>k7Ss^bqJGUQG}+Re#y5iimC~gq8eI`= z*1WS8hc7*v^yrlq%mA_kh|7nlvgFwpU0~N5sABB_d_7FF6-Er9IcSIc3!28Jm{E6+ zszPE)LFeXGnl!B|QF4C(BFU?DM1QXbbmuY)TGVQ4Mk(be@&Mn`5RFd&f^ze<_fl=c ze_DfRdyPgLWo@cz%4q|-`C1dr6rC6m(bv*EO>;z36fqjgJATRipInRz;$eVSd#dKu zV!QwxMKr!nlVQ9&=c_Zo-d}ISix!quNU6P}2}WDfnZ30|YBhOpxqwWr$*&p@^k%X| zFUu~_I)?p;1-ZTg&;8S!zEX5r9U0~!Gr(-&avNT}G3BYbK##gP&1DY9G{%^bUWmx`$RSz&zW)jnqqZ_#Yk7vT!H$e5fycWln3D!ptuHWQgWpZ?<9v zut~tzx8yMC#nEmfL{$fJgCFPQIM5o4L57s%7ZgOgOU*uDad)k|+fS0n8h@f=_IzJB zM)}>vxvG_C3PEyMVEs4csf+E;up{dEi{JlcPNsHjbwgT`%L9YMIB<@9}43oA4dRl=Yr4wBYezA?t7&Fi{5{J(|nQY@_5Iev<5`g^Y{b&B`(}By5#Uqd=u|E zN#z`kmS?I_X?BMtDUxe1=t#UR)uI$pS0Xtc(Auw=6dFn-jdN%-;$tSBrR5wF@$ZKw z8AQy{>C*U&MTlZVz|${V5OpDn@qm`jC;jHWmc|qsLKJHas=4l#`kqm`6KP?m9L>=i zJc6w7pP5ZCn$Ai&7N`^cMWxJOV@SFEYlcM|Ch@^dGZ_$5hq?hrCH=>ErzJ-8<|e8Z z?ru`(&rwt@@Lp0}!Sc?|wsQ51sj(2+i9Fi9c{@qR^rsTkC)Xx(!eldP6@5sum+m%e z!%(rV0?d2qn5*MUiQW??q^*Z4+QSnN;~b>iIslDlrL`?Q}3x@xz4jnwFYg*&M6$7Z!Y-m&!K)&+L>eN(Zk^0Z=@i(9j5Y9KT;&t zOT@*0Q?SesA(a@KZ5*R`v$#^^%b?yDSs*AU#8nd3-mkYsmWyv?&TO zX?5hq$B{<;M9Fp-lfU5zQH`U%LtXLdyL-Lms5RI0eHRK{Z2E`d+4Y1~s<)`F`G&&L zrCP794FbiQiekw96iqc!Mmd(Fcf)h5FQvUsj*ga+Ta1SC{x6zn-aB6C*5|281mT%P z$nUjKfAyNIHYL6?a+DI=ZEQ zlmpc^+!0d?{NJ9`A7wV=n_D8?eW-;_|C|qL($N+~j@iX)(lHL?Vm0Yl2WkjSLRG_Y zDQ>79K8mBqt7wJ_iERW_wI`%l6H`-LXQ#Pc5#swrv^j911#_X<+STZUs9I1|eV7G# zkj>kgQS!(JGV7Bp*xi*NyAq%WcCwCIHx6vdsRVcr*YOsbi`r6EP`pzNyiUU#57^5i zbUa=qre1WB-!Po2V}`gV5Blt@bi6`6&}tp6yL+WK-`=McMq;g5@7U6MIAypaDQ5ij zR(Y~IvlFG)Qjd$U*I;ZTy$*?ezjV*WO1H6$C&fmyskJt`jnrO@2yAto4be>P#hQh> zMeA*toZOp8)phz{#Lnyh!DjaGjj<>;-RK!~T= z5INBDFDx_}rDarChop1v?3<|x=> zd7O&XU{=~bnvi0m8n~olhKQrU|7=px;&H2~FjD%E7Z^1W<2P}N_djC*Ie`ChWcnvk zTq~Q%JsP}NNfz@O;BI!~8U#ymkq&QBam~*_#U24=MjuRPmT^RjE5-Jrw!$YyMDym; z)9ud~(K`!6{_YHwm;U(|=;V&8SnXD0vDwnfe5szG>C)p>JWE?jjOLiP@HYrgOSd0l zsl{lts-&h`Vm(1SU{A3ldQb3?zHC)_O4+kYpp>I%;xLh7kvl1mR^ts}{`Q*=GW4{g zC1PAh_v>LK$(N;k9pEt%)8||7$O!n=?`=B8od$iI-Pqf3!iS{$r8?aydWa1h zRBun}bkqARoyLMK84_C%iX>Ah?)293&JY{u$abbxG=EIiLBL>D(|ODbqk9o?7C zKL@DZ`2gZ*Mdzr$mO3)X2a~>3bu{mIg5K zJ@p0cLv1ne0^OnnncanH2PC19O+zJ88mW*Zzi-7WdYA7sgR`*%=$b2pA!+@rjaJSF z^y8aiuY+>0%U!4iQ+sb4kAvg^XsYogE44a?r4>Z>pDS%>rLIzFg5zLbNz}F@<0< z{zfaF)y0dYi26Qna^e~;UXBZV?OW`)mX8mmTt>cjRP3pWS7|06GRBVCjpRiU4?BNLtrHmZH9#AfOo`E=+VOUxvVwr*r zD>874|0eH=DrTYIp7M5sELs6pR0-e658%M--&NY z-NneLQd!Am4Sfq5Xjq8bA;1&Qq|?8dav#?>t3`2UkHKI6%ogoCtTL$MtcZ`K)oZz};9!PXP zB&~`V%U6HU=Gu}%mA~$w8DJ~Js!q+6qtWV)DA1(Sp)*GlFRxDhKqW=>k8Q|CK9O!6 zWQgQ@Rz>xdPKOqu=!+-MPSkowXJ|Fi`^on|?c#HsjS5_EW# z6Nuk`b)YvoowoNZ(@`g!Lb!iJxO9tZx#xRF3}vr>ccJeO@&%eB1K_>ViS*8ws%4G+ z5e4Ze{z5`^;bQA@NSkBGr|lk`D(z+RWld^>#Xe2_0b*@O6P&gsS1>=nmeP#A8u*x&P`vt(1#x+$v)rclz?!YyjgFr9$vNzhF&^4eEe5SHp0{nuJ`#`E}(d|UA{qlHHyo(IXE38 zLIFS?%(?b>{_IB3Iq@)+$l ztZ2CYIWp3sbG1B%{O)So2RvfVI=lh)i7p|9Kzw_xszYh`c;hC_kVHyVFWj+d{H0zb}hCscA(q^NcMpiE{Dh< zP=@$%%?C53p|S_$Bc7jTOx2m$N;SmyQx1FO=>2UCEznE>MAF+eMDFgZ36WS|f#%$1 zL9?s_1@%KWo0uHc^bc%;Vm>CVEBac)ku=DZ81VM47R(U75Bb}>STI9)0%Vc@mQED= zyd_VdDy&?Rj;#ZJKjXO?h3t32bRN)zc3&E|x0fagp3oke@{_UjMxE69(S&xtLY05E zg>EE{rPS%Xc z|G-a7HOPamwNuR@tYb^Uq}V7A`dpf8DpZ?gVNl=j8auDe5GqDR628ohY6+!ME~B~d z8v*iiqtWsI78%j~YA3oaw2J9=Y!seEG2m9ac5zU*jO{`qf5vW8jBE+*Vq`~Ncp}j} zVyD?U%#q@vJb$a5Vp~H=Y*nZ_U$WC{1Sv7CAh&p+omNUQR(obNC_3%1+YzJMJ}nb- z8QJi806Rc*0{R>Q9Z&@_Sa8vBZu(Ufa9-s>RFujg+K?n-*z|M)^?Ow+F*wFE~gib%wbwkZ}v7f z)s`YyOf!)7XY9yvabaIXm7=4s=AN7O{{nt117@X1r!{zt*J+&JsP`h<0c$apAUdC` zqQ(-nf{Jwt)yN0Z8kr||^o_0>9>iGaF2Dmb3KyHTF26|X+xv4wV4m5%Fzv&|ufy;= zh+3K>mY%~xjwQ4UQ$F&buDQ^prT#|LJFx7zL5lWrs;Li-S4IQA4vwsGRzvNdFI3e= z%vm7Em!zHe{@sk)9=(++MMIsiZ>8Vo_0j5{uZ*EDPT}EoqGyZ>@vE`w`w*8Qzjsl!g$1G;LDAgHc ze=o{(lra6VP-K5`}elaSaXsGp8e7{{n_CBBLD-o%Q!}B z*So&H8hyEPQK~D1mdsw`^}C2ZhSSnPu@^vlY0q>c8_)Gg`HOmn&w{v7qqSEJ`C@EG z#D5s+?z7$40p4LmUhp{>*(6&oYe!_^O}UG$=t*8@h+B+}>W(+0l`(5LeHRtrO)!-G z{8-1MDMyI!uuxy)5{173`WnFhK3B&Iauox8lf zN!w26tA--Y6i^npC*|wzUT-;S%{AL9m{@aA7Wnd%wt+=vwNYd|Jt#*8)5KQ*Wb^qi zDTmQ^<)u0@d!Yc-BE5a371N(ilxKe`?I`EGZDfD!Ov>N24$0n^{NVLzb?CeGh^+FM zbXG^_N1O8nPg!1sZ%SQHyQMQ7N55$m^`s_O*;9Z7g|-Wxc^sGmQ}X8E(2)sIus9`5Qk$Our*4aL?#Z zR{Hx6CPY=d*1`J+5cXwhe6TodF`v=g>bGe|5hGE5%1@(EC+xq|Z&4B~;~aNT+Fqk_ z(EyWb3+kLqWwgbY=&cWNh^a%d{gQN=I#`*Czr`p{dVAAskh0EDeN2Z9@Hg_WO{K?p zx!OS`F(^-8r(m|)z0v~pOjN*-TJw4xZ&PEzID;pr(BW5kPwNc|Vu)T8syE-Lpatv* zfiBeLDrUIejHBnqUCb*K%s?0E9X)WKu)Zn7^S(xpqQj%pE>NIL^bVSiCYnxDu=-uR z`4xRpL~MP)!@Ml5j?y8ntw567AJEP#Gs)#N(`@^Q>2&1H{FUpQ?U-iUM@%W|>3urw z`{ZASa5R3z$Y^?UMH-8{E6dC6PLFN@rSIXW&RmR(tmV=)mkQILMY+^M%H0IZNZrJ= zA-uPwIy87ABBJ*xJb8)mE=jYE{%W=*xe?Qcww&IY(ih@Q3Pjo4G$hN(C^2Pd-{9>w zyePgl7tx|jv$abVquBF+xOi!jqt@u1F@AX?#9MfvV|k?wFU))xpuXLO>OUg}sQ>Ol z^?ys!Q5AEq^i?_3fbSauI?qY=kw}N)?gQ^nuuT2A3-aU_=IA6;i{gsy1VrdpSkSC$ zEA|X%cKT`us=-(}D#(CdWJ9$yRHXbx)6A<9AGmi7`ytK-RHrAW(9yFyifrUPIkaFK zx{kY#4Z-R&+$t4>=_3!mMnL&N^|60Jfve81@c{`_;y z(>`u{k4lHXfK&m@vGx`kwB}lInP*sED_Z7e* z$YjdAjj3IjTfdf;Izu2kqzi)qd#27OLn};-$s3Ijh(@AWFXmdOr0WRJFwV>9KM&QURRlXZp=5<#O7;NXF1glDf5K$ zCKtNfoPy$i+9GeJz8w%BWu*Hp^tbBtY*$SS4PvU1xBjw)YC_#d?;3b+5TKmqU#zqi z>qV}yQp%Vko?Zk=^@C1SU*CoH>+Wr$E?B~mSd&l$KFpM9vm5Pe)b>Q)uTvupKHtP8 zyr@fGl4^z{_LU$y{LtiZi_@Gye$r84okV`}0+U|gqQo?VxOA8qmk8NTvJ@A2i?tSt zm-!(>ZJ}F=i7KGqn(|!^CtuXTf2WB|8$Oh_n+deoei7~=CYJ}*iDABCT;w;7;SEGJ za}QP(q2BPZ7F>$8(a3VG+uhgh%=>B=u;Jqz*a@^6kfeHzZ0UFx@;*OIw6k}D6Vuv+ z7i$-y_iv^(@k)iE(o!BHdhck*Y*X`%-cM@w4ydda(~GqFEv6Os2OSa3u11LL0=4?D z2-~0IAR3=#MyCA%y*20vK0Ze7?yk+Z_eEpn%HTAPH?^n&KRo7h4zsf_TJqlbMVtN~ z;SN%5WIifYCRg+Dp*&hul~`&&h`tZ=yLz>eW*@CQIlHYqQ>vE7JP{rG!#gb3_URiS zj!#z0Tgo#koY+bcKR>GARjM=NlUr0cF+Txy`*~i@{M=HWBu-95lcjBC6;4bY+66e3 zw?`Roe7ZC?HdC%tRIre=y@GdT6|87-RE3k%=GfHX?W3C$yyh|uQ&b=+U1%o%u~j|0R_h`tJM>oMj|P^rn#SYhTEsuTHT@IRb3`Bdi}O zSOMM>1)g!Mg4JnQ9%7d3zGI$$BzcctD|p@7Ud_*Pif*=Z+&;WS#QwrY>}>JdcSatHr&^7mKWO^PFQYj_|`>8f_LH^ zD5fh#GszQ65c#oBru41M(I-O&c~V}YC^unXnZ!x)Q0%!U$MCsU9KkKE5;-3obD<;1 zk9~sk6T+Hr?u~+A0sp+4{R?B!sZn}In}+kA8J=U>#@{(zH=wJJ<2{1_QSOriq@|U` zp-AjgIlLee1KRP~0ao{dP8jU~SmzG3o_4x}V4)g#h4-l`YWHj4P2<(5@G4P3EWQSQ zvVs?)r-0(xJJ|pCkBibHSKi+>IkbeoIJlU%x9N~iR2m(n(wCb;qch{v)$yrG)tQLB zB+{49vmL~!+@T4kFJK#XjIAL<+%|1fP&tjjkNuZQ*;@tPkbLiB2Hh zd8>jrXxEINT^_5Bdv|Qml=={kd#Nl3xMAc8H0TS8JjYAx!XN?-`l5;$q|b+PzyrMR zoAPyXc49(x0n(fd^%TFP&=$gB!jk4r3KY6miYQKVCi=^(Jbp3QunQ|u~5DCgPf*>@YV?H z*}VV4k)b@weDtOZ%~)T~dtZI5>8;ZohJsvO2mQQDGwOzd_lq2b!7^UQjPMw;@t@f6 zLf9RMNIP>pO=RM z3dw&?(yneysc*Cey_rrb#U0i138M&qoej^o zss>#BSfV|wIV{Cs89u5fj!a~^b!OALs5Bkmb{NRhR!p=_Q)AwlA@HbAQ4y*AG*+sX zRO1NgQ4cln%9C0-D7Ok=|MyR3qkZ`ieS}vqPrsqiIC@5TbZcdHTX8(SMWK;qO{NIt zJOvf~td3_CFJg@WHt~0bn>;rhEjTLPS)s2wKDt#Or-|tUe)|#?ZEFbaMBm0Q8(BS$5j%=vIO3=n#8D-!X4{Y zo#uy!>cbn7s&{gV)U-TP-t32kIwUuyylnKk^%@OhXq2bI1=W_Dc*Bgd#i`NCbQBK_ z=wqa5Uqs;7)+Ck~BgP{G-w6z;)PAkd$7q#msXFVKL7`mctBEJ=(>F7rC;M{w0d7tw zv)>qPioRXb&#sCs4|vh73K~K2+|E~50NxITmxMP<(^p?S;5%Vj#j31^%SE4>b_`DNApOnJQL%AJoE&Oy6sb2%VQyQ6nL21 z6-=tMw^NLmn9>5Sm`b3frzu?Ja+^HbjK)^EmI4}EDveYZPLQL~!-SMZ6mwT4z4R%n zC1%W2G$huANqnE)R34#*P|353KoifSa#$89xzvEI@5`{Zj%^M?nZx$@TaCM=Xj?}s ztG&O~0CXLqB2m_|MRUP$_*+Dr8p>W|B-@2U9&9#G8GV6Z&LB79Wk?W zT1$<@^ntGOj}1KDEuzM&FD9^qpXiv|DX!{^n_|sGmr8F|5eMD#(&Sj-9rRmNWZD`T zpN_ZURFxG|i*)u@6_XPQ{eXxZ59rWOEqF5)BE@>^n49r#+RsePs61&?Bq=KLa6ea3 z4R>IvTOoAbWqIhNc^# zRAz{>U#8J9-P7^SsDM2@JC#_97J!#%_VOGHqBlPs831ol|0?CDeSK3ZJ4D;B6D%5m zWVwbaJ~1B1Pk&>@GX*HdbaYL4d+oP&OkIRx`$K;0cX>>^80C0?#;f_ZDbJW#jtQR0 zRyn4l?mwFN`XMW(&Q_@;(QfSS#H$gN5ltpN^%T(dg5*mEMw%*>r=z%&=-UGWe(jNY z#A(_qvjK|bhy3*Oo)=gvu zBMOf9YzcIM=aMaeYK6ZXoSi9+YRQW~%yV1!k9jRB5Zysqam*Ro{IEG=;x5$-esZ&F=8j5LCsECb?yd6@UIw(gDRb z4s!KQ@-206=4jW->2uUPM^jETt9Y>#(bJP5OZbOEqyN?tisk<_ zuxPMZo$;)J5Ox2nAo5Vd&(2Ynd7Fx5X@E<06M2=}6*T`E1bLM^B%P_)KXYARj!dMq zp>E$D4ZLE#%AE{6Z?6J;=AAXPc;i!5OR-NunsShWXM8Fi6zgCGYrFmdXHcv|6fA!Y zK|P|oC|KUw0X7Fd%DE7qqwg%#N7hm*yWD9mHKNt4M%H@j2%7tT+K#$m{YDj3Y~_H` z>vEWD){U%BC|$Q^y$UMU8q}luxE*z5)mn|zps1g;qpn%C!F%fzaQIVpRMM&iX4dy)_un`Vl+o#?`0!av0?opW}Ur-Sj>NJ;T<2kWE$HkoIys&+?liwc%c%{!gYb zM&%3C!LB8P_;@P&+7!`xic)Typr%-*;03v`3(!_8Xd!NFp}6%b?qxMc=EA)Dfoi2s zq)5ZsBe)?&bPs67_6KUSy*w?YcW{PxyZ?ZK7|0TU4}B2#eVY6p;4p98kMu2K@CxBD zZrqpqJ}p5U!j1biDvgETxPPBQVKA@lxLbAtbuQkeAP(=w{T=u_uUKa}J`L-}{W?XS z!?-S z*v&j$kzCdP#yyBomn)nc-p%<(DKr*;bN`?>=16wpROQ=yg84i39sPIhm=n0 z|8WK0s4e+b;Ao=#Xho8ilk;Lvif+!|BlY0v?RRdw7k+d8mel@JT$-DB@5OZl zcjWJ}Vi^wW=KNz4zcYlJ^ILgunyDMY&H2YBHaN7K^Q8=N2sh^sPBbOhMM|WXcQern zzB&KcR4<3~waeqIcmcKn9h<(#P_m}sU5#q^>5h4)zybpc9a66(4?GW9aVPh;RNMgsNIXiig#zBzvkPuN&XhH!KK zrF=WQk2R#5^DoIE4&%oCgK~K3#KhCa(c2kMw&8`aJ1{ZXl4(r#F{J-D1;8Gz%c!(| zf+e**HDGu}I{6~_Cen>axKWW4B+?qvOMEes-4)x~z-I7_?P;Sm2muOCgR`7lF zH>rq)-<)4m`Psh#UtkR0m~^0rcys;^3TE*)=SvD+@i*u1qvQGSc!MuhKA>nQPt}UP zIsab@V$nC}Z&1++zd8S&#BZl}(c`a;lChz$Edoi7C6!Z(T=dQPvJJ7ooAYNR`BX|F zukWiYmFB}}7xD*5)jNcn^P5v%4(I0lhmuG!w43w)Oe}FIH|L*kpcQ>{{xb?k>G@WD zz$C9_z}DrZ3R=-O=O3b=(f2au=Q48YK&AFx9k1Y<^Z%*g6@PQSY#;`>XAJaZMzIIJ z8?LLT)N`Uv!jlZ@ioH4ic#XPY+?>CYLgO%Q&i_iGlFRL)Z_fW&LoEL0{EbOxdk8n@ z4fa^vomfvJdP7w^+##kD&CIr`bPnah{iKS?X-lCO?x!qxMPIm|HZg~A z;r>h&)o|WYe~L8cSIK;!ucyKG($E(Cj7py#F2t6BJitZCZfbnJ>m9bU(kl^&1sa`-ligZdt&4jf2U%3(}k{Rd^MS74Dt1Zuclf% zjMo#ssiFdp)@~0lvUC!DA-mVm?B=BMynLf43A=7qF(W{EQsFx1hT89{IoA3OJ#>>n@zCj zrg@fA`b{j6zus=eGX*H75$uznWyjP-DAySjecAE+OPdGe>mU~seS0};s zoonofA@mY_dwU-Ts<-EK#0P#o;kaZoi6rTNxfErCcTtf7@DkOvuh-DLdFYTEzn*Yi zPHz71nxnh6%L-MMX_JZKsOq@V@F1e=0~%e1lMEUMcIIds&g%*H&(T->>j{stp!v%W zeUE*t4N*4)u?&%oeIy;Y3`0EMhCEx4E7oOv{8hpQ=0NK|$ zDs4k}J)xRpUw!)Y#|*@hLsjfAliV`KD*p9^M<(BeWq1X@o^Y-rzhYlcc!G*m=<5mR z=~xBdIgboHqZKaKOprl8(ZJIkvow;UNKjMI(zgtJGiXQ6b2Q}+Gl~~W5j{N_%J}9K z8jF2Bp>ALm{d&T@f>`Y92@Ms?(g2t0CYlN@C}{pQ2#N>0bgY8C%5DR%Sg+DF@VvbW z=w+U-p%wjl!X5?BIOZVs&qym56|7=kPgqj0{51r1N?Qt+w|0OC_m-q@*=a;^I@Fu% zssTspMNnmYN`D)zO&2lJM}j@kKy>?Vf4bc5-=7Y3(-&Q!`(N_!m7;|wqQMlOXHB{oH@d&+`x#bHp83w?6^23wH+i4>=?+AHI+2ZijXS~Q zGg>Q4QM1=r(nKh?XGdPiGrDICDC{(Pon~XNubnxvgZmNEMFS*@QpzcE%&3nboM+~7 zOhL)991(@5#Lr5xI=gG#-M)4Wxc6<&9a}YeX0N`q?1_Ww#S^(+Y>za<)r)HZ|31h$ z|1#@%WIB1dq#VA3z5H=ZS0Bl6z*3)x`Up>raV}VCtTdv9W@}y*RY;`$G4BRQ{t?pQ z1$j62njBJyD2eoMQ;vV67oA$K-SOlh(7$)*C^OVTu7AMKzC%IU@0(`;q-W(gxZG&$ zDUN%O&C#^n_Vr3ABF^V&>NHy#`+`d9Uc4Q!+_$T4^GTi&5q-h*C*JI!w^R4ldX1=5 zu0*gDlKKvWe47o~SrAE)(VplH{Jla#^UUblm}aBw6C*nE?uU@~x|w$`x)jk${7O{u zox0C(q)zd|b?T6PT){o%?jEW#8_Q9>z3f{>ql)&~ob$w30V-M$b)KW(M9V$jIN;C` zuFWn^uvWai7^r728K4Bn3qVZ!4*N=y52Hkl{i^$ydrCmha}#>}vk#EDJ#T;#BJ)5t zbUk|};#;#Db=#d@LrdM{oCEsy`~gkH<{W!?`=2Nx6sjflwvg1vt_Ae$%}W?86d5CJ7oH#+R4w*XakH?)G(OfniWl z5gA0CAA^dhsECTFh=_=Yh=_`ah=_`ah^UB&h#CJxInY}%;kM5l{qj!dkw?Ahd-7{;pX06&$sR?gU z>Y~j`y?44&7xydmzUy+jWSUZ%E=CA?|F(wKBP4n>rw^Q>l%_infQqzL)Re$U55N=x(p%cqq`fr5FzMt{MK|HLZT;g z`q-&TX}T97=;MnG-HZ_Q3E*hD2_fhT{MK|8LeM8?82UIu(3N`|0>+g@Pv!KfmQtD? zMhN;e>P6Gt2tl7gx|)#YXFyjSXy{^upwI4N=xl^UcqT+wpJC`xgrLu@GV~*aplcQw zx*j3u^GH|I2M~g;on+`7ghWs0^aVUaO^+i4UANlMy$C^HTxRHYgrMu^8M+1`=u3wi zx*Q?shJ6gZ2O;Ro6AW!cNc31vH})%~>3)QuudFb18$!@cD32y!+ywgSfrc(Y2)cO> zL+2tS+MLtZ&QeO#pAdp>88(DxaSQ0{1BM<#2)Y&ZsOdh0pl_i3njS<5`sNBlcOe9Q z>v%&qBLv+x&(N(1LElEcHG%hS(Cxj3K8+Cco#}=?j1Y9k0ftbfJ3!yv-O%|6L3d6x z^iG7J?`>xYb@@G_Cvv)LNGVMy<6WTd_Zzw!A?WT!hHgX%`T_E#33>Vf=$?ZOU5XI& z!>NXlryqiTG}+Jv2thxdWC(fuG3egy4Wa(;C3-TapA0Ic={|&@`(A12c7&jx9%~3~ z_NSox4>xofLeS5EtLbcnM4NJYU{onhzd{K5`D+Z_i4gSQ979(j1pQ)fL+Go&06jF( z5X$lp=$8`=or#d>@tl5js#2QnK?wRa>QU1*2tg0;XXqk?M4NN^4a%+QUWA}W<{7#g zA?UYL44s1z^r$kl9wE{FIsI;hQkw2U2zm_V(u6WS2KxO}L+?ZgdK~4@G>VW2bwl)r zQw-gM5cI?nL$@FV{c(n&4CeMTX?hSLXwynVcOnG+Wr3k<5rUpP z)X;|!g8qtfYkD(6qD?tHwMr>XXd_R7{)YT%Lf-xcdb-EZ#}R`5j&f_lv->;I(>ZNM zy=%G~A?P2+8oB}D4JuPJ41E|OD4SyFe1t@sbDGdnnWhI2g0@*~=vsuJZIO~3iV(E_6hmke`x7Buq63y0x)mYlg*}EYM+iC)dYayh zkO*}}bkLw7l<6SQ!HW!Cj}UYS@HJh65OnAyL#UfWiJr*muzrR%A-CR3b;}OIgZfvNnUNHAjYP&3>MhAlvGV4XzvSAK5VMDwOdHRxDm#>ll`MdBfjjthv{D9s;hwAQ2QY+PQ&Ar8f@pIPgP4ybjaD6*vrno%HcoxH(bsAe-ME6F5V6l^i)n=g=`qefZt1ZLm(}_k zV|}gW=s5avQH}_gX$>@oi>~QKvxqf~@!IOd<}61Z zLjjFi5tV|gwN5&5X|3MhkD+nxXv>UtwhQHLWQ$^jz(A{k2H+(m>xBU0f<;rz)nTO zR=bek+Kr91{`z=5q*kyTd0J&)lF*Q251uXM6iSTGHJif&BSmu!;W+|a_jT)#PwWn}+*JMMlfFDSosXYe&{M>`>r7a+hmUr6Eo? zCEf772JNvuJ!*e`M=10x+tV`{N~kgkp-pe;L~c3T)3e!;ZwZ}S(z9$&kL4wz$|SgU z=s^=)9$!k*BuK1*%$SK>6&xmAs}GG1xRbB zxW~peU=0{dA|RAZqqYuny3mW1YQ{^9NrzH386T~W4+guEO;5`4l!{lk|DX#NmoFZQ z83@?k-xkHVfb$CX(H#M;?&eHBu0 zgxoY*WA!a&Ldu8~TG-VHmOW>1+5F*!ge}LH#!D`+ZlShqnu4=#p~tZ_UqzqbZ$P+Q ziznl2bC)lf>1H!1644)M4te9Cqo0d#{bkGNrZescM0KOt7YP`tcq*|%$W;7t&_pe= zl|pqO*c_cPq9yQUVkz_u)|Ogzufgv=^>B91=o^SR3%rdzUIy;wcdo5HVW z8yl%-!PZE0ev1i&d%7S`9k`@>s$eC{6NP$TA6{+zvDp|(haCyXvj&G@W&4{gv&*n< z^{LqM7^{tsV8<9c_yPfklPO7?8jWQYlS_)~^oD4^gbt039e~J?&kX9omS9-S(d(|F zktnt4_$Z1fm_eNgB2#3DeRUjdV2BrwlSLAOT_$)ZDh@--qRPhd15aLC^x7(-wVXas z(Qhyz$D>O*bn?*2OypEXAGeBB>HIYx;T)494PmW}@*hEapCC&|I;TJRp%ZcXM{0xh z;r_9~`e|YumGN3~ofxY6>8FXW6$c#U+XDPDn&cWAM@P_5aWn&4mD*aI1htxVar70F z$hF5C!`i%QY~3g&)DTNKtQ34U>A53Hc{ZhAo_cpP-+Yh>hPafTjxTo*u+O_@WW0&O zi0q`Kid4K^TCK%SweWkUU1IZwBI8YZ`FZh*m5yK;ZROb9%#{_aLY{AJmd_WNsP%D{ zlouOdr7WTgxqR6kXgXTl;TBr!T3C)-Xs-Yc*V8KPJ)){y#MMU&t?O18(`Euz*Y5fi z6AM{~9^2|QTCEW=>!WHhk%f%^HrG-%+L5cRoHgU<+Hx33F4V8vX1_QKWU4_)mKvMC z$>Lys!FX0*>O}INV%n**2t`D487$ja%E#<9|7H_gsP-3ITm9X)TCj&S@PIu`3%6?iNM0rr$QU5n()GMSFM|7+6EqpjSA zz!;Fn6%u~0-e7z6V110{iGA4GS!3rx&VEKzgwk)0L5sRAFBOXn=aM^{Pes7!Al4xLB&Eb-kv*S?gG~o3iR-E~7(im+F_oJeC zS&Jy*lkGQW=D%}JF^iP~EZUK))mN`>HP(9*U(C(ygjkBW`bE~tmkHM`*jf+kY#6-d zR_-E)lHtjEYs?l`VCzeB{8-NGIZA*@NP4Tqo5S;1BUMhp%d*lA2(hv0k&ko~k?&8S zoQ{>8&$B5D;|!U)U|D&mJ5s_r%JOLe;GC?JOc7nk@rl30_0|MB0cSSvs5smLC13J} zE5t03Ez|1sH&(9`eSqLiq?HNmfss@ZZRO<9L?U)%qW^E<>^&-CQ+KATvPvAL)sbiE zQbqEt2F?2tr`VLspa|E`2hn1KMfQzc-xDeH?a{Q%tT?fzOt`a1DeiJ@>iRy5H-n_~ zIH!>IA80XyBpq{_?Ut{Iw&{dUy=8tw60UZB-6YW4tTGdDb;p~1ry;}6sXQwK_GC+m zxOM`)Oh5}2X#{LJHEt1KNMfdCnnh@o#5CRI$24oBV)tFcIm%k3&}Z{6=eaOWAsrfS z%@}NDyn|+$tj8|&+yiDu&t-Ex=UCa-bOgArJWuvjCBM*g&zh;G$IEkO`kBu;-7aEd zZAx-xD)A-H(XbQEpo(Q$9X(N$lEvIHWOH1`=@i^1w4pgZ$kqld;Vnq&)Vx-dM-;rk z^o37G%q)PEjHEYt;o@xWLWi8;gKd{Xd69A6L2!^A&~sXi!HW6%Vt1of)$Vt=9DQp`Q)5XmHK>(ncUBzoCX9)7roD2xfM~w z-%ytanE7wbq5GWt>FGP1y4|ktIl@jdJbV2B52;aXP}D{m8S?_MvBkq6eTSzt64`KB zxqKkyB4fFP1H-Zq%0Z$cJQk%Ns)jNymx$)TtAqT)w08wL&vS%nqh(FFvG#W`FA-)Q z9l5?8VcO_WZhDF*W2F+g>2aSJ zYWC!py9+rlBA3HG7*w&`BSaipn~B>BpIb-f{xL!g!Lta3YO&PR|AX!>Qj zcdXq%s?>#`-7i<_JkXP%Q$GgJJfOw!qH;56&L`ku2{h*lc%TB!_#`}Hf%d)`c!Fv~IpBt2V4`{-dQD)F%p#B@- zAqceMEAYGoT5uC|KnH#mp2|Rb+^p2Opv|DOz6S3#pka8Dc^EYCb<`VZ)vfSC1X}$K zcnJcn_@+{KfsX$c>IO9LHh6^sE%-KmgL-d=7cbEC@4!15=zu$b1={_)N}Ugy2oE^# z1a0>{NpXA0jQ#91SfHuDM}2@MJdXT;eg!(^55NE|c>*4}Kr{Y`b^)69C$v@2 zX3+4T@jO5)HzDt!1%H9JGSHzBnxVAwA2lV*)cK&zpw@&;Jpfv~O{T5|&Db_mmw+ZdD^q8Ko&>#i zyG-2*n(^#Ry$7`2_L+JEXcK5)hfLiETDoJVZUjx=DN~n%CQr=NnV?5Nr|g`myFiO} z$<)=LY0t^jd7y14WojenQP9Ay$OmZ2|_S-8{7lS76ovE`xkAhY`FH?7ej@c(uSAeEJKT{Wiww(%W&?BH# zFUZtApyQ_j8+6RRnYs#e@P5bxXv+Sm3(zB=We1=xKs_(a)a9Tl2WINcpiQ8`gMbBE zba1Aw2OWF}>Jl{RP~->n1gQV8Ox+2ZHys$DsV_oZfZj3zW1D)G+D<)NZLfAvJF1=3 zM76WpMLkDNQoE|jYB#mJdal|-?Wv}yz0}_7d1@c^d^J_QKuuHos{Pdd>HzgZb)Y&( z9jp#fhpNNWboC;2xOy?3`%KlNj!?a7mYS`OR7a_!)l1Y%)yve&)iLT7YL1$#=BfE= zfm)~*see(&s^ir0>IAh|ov4J;_w>b0t- zR;jvLt@>2IYN!FVMh&W_I#r#fhSXX$tVYzRdYx*iF*UB%sr71u+Ne%fXQ=;BXR7~H zXQ|h#H>fwNv(=l_o7G#?IqI$IT=h0}p879!zIwa5K)pk~Q@u<5xB7qTLiIoDBK2{qKz&eMsy+m#Rv%H9sgJ75)yLGw)hE;y>XYh9^(pmf^%-@Q`mDNI zeNJ7YKCiA-Ur^VnFRJU+m(&gF%j!n;6?K#Ps=8TyP2Hltu5MM|P~TMFQn#sZtJ~Fg z)E(-(>Q41Nb(i|Sx?BA~-J^b}ex!b^?o~fg_o<(%`_<3X1M27MLG=sukou+imHM@M zSp7ylqJE1Z;&v~1sOzij{Pfb50Yf!RUX!Pz0%q1j>C^z231;n|C`8QILNCp#kR&1Pk@vm>*k zvZJ$?WG~HLmc2YXCVNFTC!3pPYQq1uzyE80|KHl*ylj59AX}JGxQ+0bWnEZ>9AsG@ zrl+|MnTpUo?!w;9I;QFyaSYrnquj$GpGoeTPRH5lx&Gly!HuIOZ%tCfbLHy(pNzVr z>|nR!mMQLfsq}(`#i2DQSG6)42Rd?np-p3jb0mr>jxX%8M>;MNBDNro2=GHLizr_v z9(FFq&c{U1DRJ(7h)GeTwe4ndFUPiq@C4x(z^fo4rdCv3O;1CEX=p95q4>0S=rf(O@f(U zb6+f+ZCYcT&CF;B-`ZRl!(f|K#4J~9BpsvJ1Y{}EKpZzGR!(!6StlXnagJq|VHm^k z+#3l?#13|a#bkg-8-~SsjZIG+Y_dqlP|tD#XOET@I)}47YDabeCnqiDBUi(+Nt%_*M`{dK6C)^iVYQ;cB_nE*Mlx6mxFisWhnQ!qL)NK;4Md^HpC+MH|+uAJ6 zSkMTId-YtmlxY77JWq!X8SHRe+|m{T_V}Mi#zqmUk+LGnYffCZ?K|VHa+QnTt`5#q zn8Bc}X3C1?6fYUse75FFH3#>`PO75dX|v5#yH}b88jhp=li?!e@*vno<*i*7+4O)d zTpPBqbW&9wUb53Mf^eASp`vAqBfv5nq$gN`bS2+Unua1_*ljTxBakfTYIAdT`7@M) z4;(qSv&wmIqhUdow~S|q_GVu>Q?W7m{6k+WrANV{D_#qAwJ^Ln(+QrY9oBf9e`}E5 zzoNxk@!}P3Ba+uCdDhThDUH5t^17Gli>0o(%$~Tls6|bTe+!YgY;HRr{tazZ z#}@{5LhgM%lfE0x3S7FgiC4J?N@yiACyXZ{SRC$OP}MY^*q zEol$`Y+7bIB^C-=u$}8sMPf#&%GD;T6T7BV@be2wZQL@ln$`l7isRp+2~3wru#G!D z7N^2BokEn|oGG7FWE`jLgyugKAHN-Ap$c+ zqC>YGY;Fouw5oR$NU`Fz11(DT5n?w7NFZ=EfTAOI|2eA|yDD1mYb|b=mOrF6?CdE8 z{g!4UB)xwr9+RFtJ&KUl@kY&ePe`I+n|7;G$wIvlmNw`%I%ZLB`F5D1+!Q;l<=Un! zRba#-9e;60u{5UGrLt(ymYMf&XECCgd>uv+p)rW!qjuA_WTp^h3CdE*6&s~yc@<5W z9Sml~Tx`AQRK-}MV;l=jmOF~9A(kM{Cwqivz=@1V9lgEAkO$z`RcqvwCohu#=l_~wuQIiK8w&Ynw# z&Mc*bKDqRw%Ja*Tl^<(5rnD?lEE1_W)v zgMu`(sq(3p{PfhMUMkVtGw}r%+G`2w}50lqzd4YAzM8rb7my%iNuz>Bv$kqz_hxom{Xh8Al4#ep!r z()C~x_-Kg!42Y9nd0rb}@K1X%Ha1)3*=?BTUXrFwNoP|_Dl#TNuJwgXf7z0d=Qn|J zU=I;J$4{E+e-cBYhrYkze(XYO|26=boEU7znPV0;00rQu6Z>z1z%-2w8-DR+c@MKb}m4M2>0M%##Z z{u4~q+c~uBErHmPuPDfDxZ?rz+%smWKuaQh%B;u2fD?1Wrb?&t=7=^sCk{x^n2|`I z*opLsolHOcDFPY*BOe}+%XBxx{+9xLiAdw6tZG*J(*Rp&C^{9svl_s6POqa9sf-3r zvIFS^Jn2WJY{3EzC2)A{x2Av)JK^?W!{^+-Tx39@iVkjv_$egE6-q~Lk@yL)9eH*N zo|5yVaJ0)q+0aUU{^&Qyk~{n%>4wK*YVi9TssmgTg}c z+&v)U-p#f}$VY%sMVYZ7`0A7UFs`=bntc+PCr2dTF!4pi{!9o)2t<*jR1A!U-r~&O z&kJKmfw&AmzfY$Y%TQqB$WJIACuq0})lbRwt})xwYIi(c2tHV}@k<#I2uVG(8zAqDIlIWUA#28?Zl)CmkQ zS~g)P;Uy3pi76H7_DIJRo>gTk(MdNcc~%rsw_pce!G(Hhvf(H*Q+S6XtSjQYpi|TM zESho@^iaw?k4i9Ydm*DD78tHj={YpUiTDrow!0|TuHR25O~=2d%Z+&Xw6+?KI2I2< z7oNhyn$8p?X?E{UV>r*<(9LPN(@L?=_o+>jFSVfRd z(8Hzda8dh@5`a0SEF+~Y2#c@ah|;kODV3ecQ*I+tvJ1b9WmIl2!haVp13p%B?~N6l zLxzB)9SK9^3~zp57Wd`Liswqt@4Q_pnwOa^Mn~AOGAZ*wD#E3rWNC{N8Ab0jX9tfG z5!NS;M)bv{6{RJLR1La447^k*A=x@9W(!*~Bociy5Hq$FL%c2Qm{^f~ofBO6YY~5^ zgrei)J8`)!i>xkZEGJ>Jo#M8K^eziiL;`&+q$Brixj^YrF9uRdgpw(&USwJH#*21y z>uncEZ!UE(kA2@=7_mli@8w7LIjGK(yY!eMHHuwXcm7||?)U=x>Alwb! zZs>0!FVsP5w@J@NBqd0HJAy{mPd>5P*BTic85o~-@UlauEk16^37YHtGZDW@krE)U zI`qFu`1e`*e;fw6AnOricVzt~>K|~$k^_p(o*omQ~phWj~#{K^0*V1p0sR5ZNb9j^OqgB6rWeAV2jqh*3vU; zCTlGdbZfaD`O5RFf~}>$EQJ0aYb{4u7PXek?GF=DYoTSg?o^|D?YPpuX%*Ti3U>$ggsP6dAV+G207 zX^PWUVGN)ix;UfJYYI?K2i3^ba)9ia#GojCRC#u@ZIgF!4gtoeEDmjm1xz}5J88ew z^v({KaBrZV!I3*IcD=FDu~M?)S5f2tPp@>qqg{s|Dl92wfRES<{K=cwk(#Dx(-q8(CxGt8qF>gs9mYmL>bo!w650dtZ>cl zk21ndW8O|ZtL)C|wKp;X>;ueQ8D>{%HBmmek}S&i&#F^Es#?%Ey|X%+nor6%u!v&^m4&NbeaA#Uv-$-A8@*h>kyxEbl;9y|Ft!K(N z8i(rYduuV_dRGbrT-)!h*^$0E1LZu);uTxDcC-~Y5JU#}k4p8Nz(3K$x4pJ|_^CGy z&Dm+u6}ni#%efWrw@B-vH_chP)FrCEup!|1k1BPXn)AKEDI*;}>3bj?r2SUh6CNq1 z0qx(N@)07;c{;;O%xcdLlu(}^+6KVz6MG~C$XlkJVv@bgf^{~>VcT3?6tn&>6tE>^AHTC-jPa`Z~Q zBr-RoouhL-Ja!9_1BonDLQS-uB?T&OLWs+a02rgOKVl)jhbj&M_B;C2F+tfvK3`#m)>-qIV5&Kip{ zI@f(WLrs;C&TmUpZ)(zh2@`XLb9g_&Bv)Qf?yQWd9rQCi+}!-GL&U`UWynV?t%(IJ z|50TeO6@pY!=I&I#E`vTehro5v_Gd#oo&(Cd(nb4sm+%skUfU zj$I|kYQMy(UUa5gVme(69WJy#Hb&+zbb9(Zx4ibMhA1fiQK^O_bM8ZdMg}pWhI4zx z(%zMWiM~_?IkozKD1w|D#|zl@>o_qg?-aq+hW7%N|EN;h)a>x>95w8~fy1?3)2WkO zvSTWqv9}SxVXKrf)oXU2`C~mI^SpK6*Z%y@^w+2y5{~H`@EBa01oxZ_E z4o*xtewDJOM&ZxPHiTJl*H!?Ll`EZ|JRC$#PA9thUVn~<&m8CQ>TUbonrc^M4_v%k zX^<#xzvq{H1#sKtO(EkWq(S6h^J*VCvYYrKloy{XjU$^c;dEH;1Uf##>Y)36i8@4& zjF*R@?0ZGfZ98`+9PQV8WF(>8&0XELW-oMW_cw67;DGa5s4}J;87Vgz5YwlMMLYMf zOZQA1xBannc4CaVAeIYL{rTsOI>S$`_}}5;cV)#tJF?G8C-U37?X9q*DK7wu0Zsg< z^3+p1uK1|2eCl0X_ovo|JG!{yB4=mMH`TtHE^c{w7uP857ppqMKQgi!C-eKhIKJxx zOk{%psPxPeEe;=^md`wNQI-R?-{KPJFAkyGlN5Waz9aNh|9;Hv-=pSwZ%2r!xA?nU z#IEje%}%^Wf9)cd0}2`KkK@BL;>or@lBedV$GXp%ZVMZKaH6u?euEwv*~g^IW-kk( z<~!BG&z#5t|52rPrAD>|p&S(M>p0R@)OTX%cwq>4%(}&U=5UV-;o^2}?ryI$+>~w8 zF)7?G?QW(<@k z54d&h`T^j@6JuJHvd)gYuW9%EDzB`L=f%#DBehIxft|fFd)^B=!;Y*4Xbtq)P^pDu z1OeUl2%fT${GErboh}GK{-eqhPMsP**Tu{GuxLfy9jSjFMl`-6c-giBH?p=O%Y!{Q zu5``NVQEu6XwNum?sP#EnE$BqWK+m=^Rrmd%JSwOEjgH|flA1cSqPn`?&Ts2Hx&X( z{HTPRnDNm~P*Gxm8>sHKdv0pJN!El3bnQVyRC(LzsdpjW6BFpPO=ca!30VH4QjI4@ zN_{UJ3DO6{^jBjUYFFwzGUJhUEM46o^J>5i!)p?+cwf($P=dB0w z_apUg-y4f4IR8=Qsi)R9uXnNY^{aM4$8olzwi9!ai{hw(%I5i~RNlmy6TPjq0JFF)(fQq@#Ch3&yR}P4uHD&p zO!VE4M^L+EZIqmIh3eY9-qrSKk-F`APN=lnd2)xXIPqN1jbV~gW&z88RB6YvB6ANK zkEgk)o!f&%#w0@8*G0>HVeITN2SsxTF`}VY3cm2D#c`V9A#x5Y3!?<LK2eh_{xw98p;6JL=L28ynYx=y-T}Sw0$Q3`TV5Uwp=vGx2Gxr+F%h!H=r%HQ} zL}q^bMFGW+PD@K`c~)A6*^SbsJf5tyBSrZQ0#UX6N0m~hcHI7COWDO+KB*bXJBzYm zg>Ju?zzfv&Gfbhqqd;RHV(1Jla=J-lAbA1PEvDPImm)jGw8usJ)H&u*quvsgCw^3E zCn+mq+8NGq%-1M7tHnr(Xog4o-v+6R-oAPxt0CHaM zcX}heH!_c;z1!0SdROiXCVKx9_DQ0K%MaCbR=25sc@e|YEeN~RqAQ9YRoZFFwubhk zH45!tv3+m>B7Ss=NETHkVz;b;Q#E>|k2ofZBz{yXU!q4ICD6Kg-!i$oEl}-eiFECX z(rv{!5P4J43}zDRiM2k9T6(LI(7ex7spXUn8VEr(<5h5CrD+25%z zmDJAJC!8E~YcD;u$MaH-i4UxZhuQw@C-L@rTp-!+cy)-ESWA7B<8{+6IkDsVGLBh% zS1dnGl~v2jU8UuwYzAK*L=7HZxBo;FHT(w;xA;mLFP#TMYGluu_+U=^Pamu^MD>$nDww)+o z`%g2`e&z_Q@|$^`A*S{{HVH&`h~>Cd`bNs8p}|{C_!EB|PPE@D*r_ww{UvtsvA@5_pUwcQ_6v#P%ctd3_@iJhgtTBO+La77{ck1G8l_0BlmjydI5 zc6svc_rb*5_Y1a^;^VynuI=ZS+Pylizzcj7SitfhRcbUfvpHU%%5M#Goc8BasZ+EQ zENaKLbg6Tm#TG?>8o9&LMBapSL*T>`XSlyP+~M3JRiY&pNq@eF2=Sv*DHCg^ ze+}Yw!{R3Oc3)%b*8i$^M>U%|eVkQdcFQkQVlJ^CL+jFMU}D#8nSF|6vzpr4S>2h95`V@OdNU1UIZMx?`ba2B=z@nMMa7qm1;H7=Rd&9*A>h0 z)LGQ4IGQ`9Z@Z_b-oX=i9d_MgPU<~zDKBF;Po)xL=}x?~-Sm``ST#-OnBDgflR!Sy zMeeS5m_%=Rlt0_9c!o)>Wj@5wx_VZV+UH-%QT4a~>Vr5%5u?sltezrcEUhO>O578|9dGuX zrmrPAm)hDN?<4aOvIg!=BX?Zt)R%xiES~dVcg{5;Hi>l0VU8#(P8!Vk*A45$)H`)< z3b!`ud|s;Uew)}Q|2I*?-P$Kl&B0C)W%ZXOZI>>wC%>9wb=7lCYOml+yiUiv>a`~F z1|_?PT|`;C>#-(fL36!Z+AeylNwuTj3*62<)ueU{Udyq%yC$-$V`D& zV;>1%cH@L4bq-PEm>W8soup1zRuxFyd55HIA(s~Y(0PB_2 z>GGnqT^L;x=N@%|gDoZ;UOQXbZO=qf>%Y|@yujvU+i#G>`?1erN-sto&e>CMkNz-X zz@<&w%znAsQ(Q3LrT3vFSF(CitowPiQ=^uX+wRu z)AeTR?KM>3w3_abMZ4ob$`WeW;H>XC!hTqwE8n0>%~?knW(cgCCQA5Hj`mNg)ssuio_|)YzLsM?dPm+?&3A7?#q4I^zoJA8L3Q;_@yQaaoAnvlAEVm`8wjz#r>X5PjCaG% vRv9UqfsKUL?CI|wT58mulkK2t_=+aFpS~>YT#Rn}$)&L78Z5k$f>{3xQ@@kn literal 0 HcmV?d00001 diff --git a/ext/openssl-win64/inc32/openssl/asn1.h b/ext/openssl-win64/inc32/openssl/asn1.h new file mode 100644 index 00000000..bb6ac95b --- /dev/null +++ b/ext/openssl-win64/inc32/openssl/asn1.h @@ -0,0 +1,1418 @@ +/* crypto/asn1/asn1.h */ +/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) + * All rights reserved. + * + * This package is an SSL implementation written + * by Eric Young (eay@cryptsoft.com). + * The implementation was written so as to conform with Netscapes SSL. + * + * This library is free for commercial and non-commercial use as long as + * the following conditions are aheared to. The following conditions + * apply to all code found in this distribution, be it the RC4, RSA, + * lhash, DES, etc., code; not just the SSL code. The SSL documentation + * included with this distribution is covered by the same copyright terms + * except that the holder is Tim Hudson (tjh@cryptsoft.com). + * + * Copyright remains Eric Young's, and as such any Copyright notices in + * the code are not to be removed. + * If this package is used in a product, Eric Young should be given attribution + * as the author of the parts of the library used. + * This can be in the form of a textual message at program startup or + * in documentation (online or textual) provided with the package. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * "This product includes cryptographic software written by + * Eric Young (eay@cryptsoft.com)" + * The word 'cryptographic' can be left out if the rouines from the library + * being used are not cryptographic related :-). + * 4. If you include any Windows specific code (or a derivative thereof) from + * the apps directory (application code) you must include an acknowledgement: + * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" + * + * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * The licence and distribution terms for any publically available version or + * derivative of this code cannot be changed. i.e. this code cannot simply be + * copied and put under another distribution licence + * [including the GNU Public Licence.] + */ + +#ifndef HEADER_ASN1_H +# define HEADER_ASN1_H + +# include +# include +# ifndef OPENSSL_NO_BIO +# include +# endif +# include +# include + +# include + +# include +# ifndef OPENSSL_NO_DEPRECATED +# include +# endif + +# ifdef OPENSSL_BUILD_SHLIBCRYPTO +# undef OPENSSL_EXTERN +# define OPENSSL_EXTERN OPENSSL_EXPORT +# endif + +#ifdef __cplusplus +extern "C" { +#endif + +# define V_ASN1_UNIVERSAL 0x00 +# define V_ASN1_APPLICATION 0x40 +# define V_ASN1_CONTEXT_SPECIFIC 0x80 +# define V_ASN1_PRIVATE 0xc0 + +# define V_ASN1_CONSTRUCTED 0x20 +# define V_ASN1_PRIMITIVE_TAG 0x1f +# define V_ASN1_PRIMATIVE_TAG 0x1f + +# define V_ASN1_APP_CHOOSE -2/* let the recipient choose */ +# define V_ASN1_OTHER -3/* used in ASN1_TYPE */ +# define V_ASN1_ANY -4/* used in ASN1 template code */ + +# define V_ASN1_NEG 0x100/* negative flag */ + +# define V_ASN1_UNDEF -1 +# define V_ASN1_EOC 0 +# define V_ASN1_BOOLEAN 1 /**/ +# define V_ASN1_INTEGER 2 +# define V_ASN1_NEG_INTEGER (2 | V_ASN1_NEG) +# define V_ASN1_BIT_STRING 3 +# define V_ASN1_OCTET_STRING 4 +# define V_ASN1_NULL 5 +# define V_ASN1_OBJECT 6 +# define V_ASN1_OBJECT_DESCRIPTOR 7 +# define V_ASN1_EXTERNAL 8 +# define V_ASN1_REAL 9 +# define V_ASN1_ENUMERATED 10 +# define V_ASN1_NEG_ENUMERATED (10 | V_ASN1_NEG) +# define V_ASN1_UTF8STRING 12 +# define V_ASN1_SEQUENCE 16 +# define V_ASN1_SET 17 +# define V_ASN1_NUMERICSTRING 18 /**/ +# define V_ASN1_PRINTABLESTRING 19 +# define V_ASN1_T61STRING 20 +# define V_ASN1_TELETEXSTRING 20/* alias */ +# define V_ASN1_VIDEOTEXSTRING 21 /**/ +# define V_ASN1_IA5STRING 22 +# define V_ASN1_UTCTIME 23 +# define V_ASN1_GENERALIZEDTIME 24 /**/ +# define V_ASN1_GRAPHICSTRING 25 /**/ +# define V_ASN1_ISO64STRING 26 /**/ +# define V_ASN1_VISIBLESTRING 26/* alias */ +# define V_ASN1_GENERALSTRING 27 /**/ +# define V_ASN1_UNIVERSALSTRING 28 /**/ +# define V_ASN1_BMPSTRING 30 +/* For use with d2i_ASN1_type_bytes() */ +# define B_ASN1_NUMERICSTRING 0x0001 +# define B_ASN1_PRINTABLESTRING 0x0002 +# define B_ASN1_T61STRING 0x0004 +# define B_ASN1_TELETEXSTRING 0x0004 +# define B_ASN1_VIDEOTEXSTRING 0x0008 +# define B_ASN1_IA5STRING 0x0010 +# define B_ASN1_GRAPHICSTRING 0x0020 +# define B_ASN1_ISO64STRING 0x0040 +# define B_ASN1_VISIBLESTRING 0x0040 +# define B_ASN1_GENERALSTRING 0x0080 +# define B_ASN1_UNIVERSALSTRING 0x0100 +# define B_ASN1_OCTET_STRING 0x0200 +# define B_ASN1_BIT_STRING 0x0400 +# define B_ASN1_BMPSTRING 0x0800 +# define B_ASN1_UNKNOWN 0x1000 +# define B_ASN1_UTF8STRING 0x2000 +# define B_ASN1_UTCTIME 0x4000 +# define B_ASN1_GENERALIZEDTIME 0x8000 +# define B_ASN1_SEQUENCE 0x10000 +/* For use with ASN1_mbstring_copy() */ +# define MBSTRING_FLAG 0x1000 +# define MBSTRING_UTF8 (MBSTRING_FLAG) +# define MBSTRING_ASC (MBSTRING_FLAG|1) +# define MBSTRING_BMP (MBSTRING_FLAG|2) +# define MBSTRING_UNIV (MBSTRING_FLAG|4) +# define SMIME_OLDMIME 0x400 +# define SMIME_CRLFEOL 0x800 +# define SMIME_STREAM 0x1000 + struct X509_algor_st; +DECLARE_STACK_OF(X509_ALGOR) + +# define DECLARE_ASN1_SET_OF(type)/* filled in by mkstack.pl */ +# define IMPLEMENT_ASN1_SET_OF(type)/* nothing, no longer needed */ + +/* + * We MUST make sure that, except for constness, asn1_ctx_st and + * asn1_const_ctx are exactly the same. Fortunately, as soon as the old ASN1 + * parsing macros are gone, we can throw this away as well... + */ +typedef struct asn1_ctx_st { + unsigned char *p; /* work char pointer */ + int eos; /* end of sequence read for indefinite + * encoding */ + int error; /* error code to use when returning an error */ + int inf; /* constructed if 0x20, indefinite is 0x21 */ + int tag; /* tag from last 'get object' */ + int xclass; /* class from last 'get object' */ + long slen; /* length of last 'get object' */ + unsigned char *max; /* largest value of p allowed */ + unsigned char *q; /* temporary variable */ + unsigned char **pp; /* variable */ + int line; /* used in error processing */ +} ASN1_CTX; + +typedef struct asn1_const_ctx_st { + const unsigned char *p; /* work char pointer */ + int eos; /* end of sequence read for indefinite + * encoding */ + int error; /* error code to use when returning an error */ + int inf; /* constructed if 0x20, indefinite is 0x21 */ + int tag; /* tag from last 'get object' */ + int xclass; /* class from last 'get object' */ + long slen; /* length of last 'get object' */ + const unsigned char *max; /* largest value of p allowed */ + const unsigned char *q; /* temporary variable */ + const unsigned char **pp; /* variable */ + int line; /* used in error processing */ +} ASN1_const_CTX; + +/* + * These are used internally in the ASN1_OBJECT to keep track of whether the + * names and data need to be free()ed + */ +# define ASN1_OBJECT_FLAG_DYNAMIC 0x01/* internal use */ +# define ASN1_OBJECT_FLAG_CRITICAL 0x02/* critical x509v3 object id */ +# define ASN1_OBJECT_FLAG_DYNAMIC_STRINGS 0x04/* internal use */ +# define ASN1_OBJECT_FLAG_DYNAMIC_DATA 0x08/* internal use */ +struct asn1_object_st { + const char *sn, *ln; + int nid; + int length; + const unsigned char *data; /* data remains const after init */ + int flags; /* Should we free this one */ +}; + +# define ASN1_STRING_FLAG_BITS_LEFT 0x08/* Set if 0x07 has bits left value */ +/* + * This indicates that the ASN1_STRING is not a real value but just a place + * holder for the location where indefinite length constructed data should be + * inserted in the memory buffer + */ +# define ASN1_STRING_FLAG_NDEF 0x010 + +/* + * This flag is used by the CMS code to indicate that a string is not + * complete and is a place holder for content when it had all been accessed. + * The flag will be reset when content has been written to it. + */ + +# define ASN1_STRING_FLAG_CONT 0x020 +/* + * This flag is used by ASN1 code to indicate an ASN1_STRING is an MSTRING + * type. + */ +# define ASN1_STRING_FLAG_MSTRING 0x040 +/* This is the base type that holds just about everything :-) */ +struct asn1_string_st { + int length; + int type; + unsigned char *data; + /* + * The value of the following field depends on the type being held. It + * is mostly being used for BIT_STRING so if the input data has a + * non-zero 'unused bits' value, it will be handled correctly + */ + long flags; +}; + +/* + * ASN1_ENCODING structure: this is used to save the received encoding of an + * ASN1 type. This is useful to get round problems with invalid encodings + * which can break signatures. + */ + +typedef struct ASN1_ENCODING_st { + unsigned char *enc; /* DER encoding */ + long len; /* Length of encoding */ + int modified; /* set to 1 if 'enc' is invalid */ +} ASN1_ENCODING; + +/* Used with ASN1 LONG type: if a long is set to this it is omitted */ +# define ASN1_LONG_UNDEF 0x7fffffffL + +# define STABLE_FLAGS_MALLOC 0x01 +# define STABLE_NO_MASK 0x02 +# define DIRSTRING_TYPE \ + (B_ASN1_PRINTABLESTRING|B_ASN1_T61STRING|B_ASN1_BMPSTRING|B_ASN1_UTF8STRING) +# define PKCS9STRING_TYPE (DIRSTRING_TYPE|B_ASN1_IA5STRING) + +typedef struct asn1_string_table_st { + int nid; + long minsize; + long maxsize; + unsigned long mask; + unsigned long flags; +} ASN1_STRING_TABLE; + +DECLARE_STACK_OF(ASN1_STRING_TABLE) + +/* size limits: this stuff is taken straight from RFC2459 */ + +# define ub_name 32768 +# define ub_common_name 64 +# define ub_locality_name 128 +# define ub_state_name 128 +# define ub_organization_name 64 +# define ub_organization_unit_name 64 +# define ub_title 64 +# define ub_email_address 128 + +/* + * Declarations for template structures: for full definitions see asn1t.h + */ +typedef struct ASN1_TEMPLATE_st ASN1_TEMPLATE; +typedef struct ASN1_TLC_st ASN1_TLC; +/* This is just an opaque pointer */ +typedef struct ASN1_VALUE_st ASN1_VALUE; + +/* Declare ASN1 functions: the implement macro in in asn1t.h */ + +# define DECLARE_ASN1_FUNCTIONS(type) DECLARE_ASN1_FUNCTIONS_name(type, type) + +# define DECLARE_ASN1_ALLOC_FUNCTIONS(type) \ + DECLARE_ASN1_ALLOC_FUNCTIONS_name(type, type) + +# define DECLARE_ASN1_FUNCTIONS_name(type, name) \ + DECLARE_ASN1_ALLOC_FUNCTIONS_name(type, name) \ + DECLARE_ASN1_ENCODE_FUNCTIONS(type, name, name) + +# define DECLARE_ASN1_FUNCTIONS_fname(type, itname, name) \ + DECLARE_ASN1_ALLOC_FUNCTIONS_name(type, name) \ + DECLARE_ASN1_ENCODE_FUNCTIONS(type, itname, name) + +# define DECLARE_ASN1_ENCODE_FUNCTIONS(type, itname, name) \ + type *d2i_##name(type **a, const unsigned char **in, long len); \ + int i2d_##name(type *a, unsigned char **out); \ + DECLARE_ASN1_ITEM(itname) + +# define DECLARE_ASN1_ENCODE_FUNCTIONS_const(type, name) \ + type *d2i_##name(type **a, const unsigned char **in, long len); \ + int i2d_##name(const type *a, unsigned char **out); \ + DECLARE_ASN1_ITEM(name) + +# define DECLARE_ASN1_NDEF_FUNCTION(name) \ + int i2d_##name##_NDEF(name *a, unsigned char **out); + +# define DECLARE_ASN1_FUNCTIONS_const(name) \ + DECLARE_ASN1_ALLOC_FUNCTIONS(name) \ + DECLARE_ASN1_ENCODE_FUNCTIONS_const(name, name) + +# define DECLARE_ASN1_ALLOC_FUNCTIONS_name(type, name) \ + type *name##_new(void); \ + void name##_free(type *a); + +# define DECLARE_ASN1_PRINT_FUNCTION(stname) \ + DECLARE_ASN1_PRINT_FUNCTION_fname(stname, stname) + +# define DECLARE_ASN1_PRINT_FUNCTION_fname(stname, fname) \ + int fname##_print_ctx(BIO *out, stname *x, int indent, \ + const ASN1_PCTX *pctx); + +# define D2I_OF(type) type *(*)(type **,const unsigned char **,long) +# define I2D_OF(type) int (*)(type *,unsigned char **) +# define I2D_OF_const(type) int (*)(const type *,unsigned char **) + +# define CHECKED_D2I_OF(type, d2i) \ + ((d2i_of_void*) (1 ? d2i : ((D2I_OF(type))0))) +# define CHECKED_I2D_OF(type, i2d) \ + ((i2d_of_void*) (1 ? i2d : ((I2D_OF(type))0))) +# define CHECKED_NEW_OF(type, xnew) \ + ((void *(*)(void)) (1 ? xnew : ((type *(*)(void))0))) +# define CHECKED_PTR_OF(type, p) \ + ((void*) (1 ? p : (type*)0)) +# define CHECKED_PPTR_OF(type, p) \ + ((void**) (1 ? p : (type**)0)) + +# define TYPEDEF_D2I_OF(type) typedef type *d2i_of_##type(type **,const unsigned char **,long) +# define TYPEDEF_I2D_OF(type) typedef int i2d_of_##type(type *,unsigned char **) +# define TYPEDEF_D2I2D_OF(type) TYPEDEF_D2I_OF(type); TYPEDEF_I2D_OF(type) + +TYPEDEF_D2I2D_OF(void); + +/*- + * The following macros and typedefs allow an ASN1_ITEM + * to be embedded in a structure and referenced. Since + * the ASN1_ITEM pointers need to be globally accessible + * (possibly from shared libraries) they may exist in + * different forms. On platforms that support it the + * ASN1_ITEM structure itself will be globally exported. + * Other platforms will export a function that returns + * an ASN1_ITEM pointer. + * + * To handle both cases transparently the macros below + * should be used instead of hard coding an ASN1_ITEM + * pointer in a structure. + * + * The structure will look like this: + * + * typedef struct SOMETHING_st { + * ... + * ASN1_ITEM_EXP *iptr; + * ... + * } SOMETHING; + * + * It would be initialised as e.g.: + * + * SOMETHING somevar = {...,ASN1_ITEM_ref(X509),...}; + * + * and the actual pointer extracted with: + * + * const ASN1_ITEM *it = ASN1_ITEM_ptr(somevar.iptr); + * + * Finally an ASN1_ITEM pointer can be extracted from an + * appropriate reference with: ASN1_ITEM_rptr(X509). This + * would be used when a function takes an ASN1_ITEM * argument. + * + */ + +# ifndef OPENSSL_EXPORT_VAR_AS_FUNCTION + +/* ASN1_ITEM pointer exported type */ +typedef const ASN1_ITEM ASN1_ITEM_EXP; + +/* Macro to obtain ASN1_ITEM pointer from exported type */ +# define ASN1_ITEM_ptr(iptr) (iptr) + +/* Macro to include ASN1_ITEM pointer from base type */ +# define ASN1_ITEM_ref(iptr) (&(iptr##_it)) + +# define ASN1_ITEM_rptr(ref) (&(ref##_it)) + +# define DECLARE_ASN1_ITEM(name) \ + OPENSSL_EXTERN const ASN1_ITEM name##_it; + +# else + +/* + * Platforms that can't easily handle shared global variables are declared as + * functions returning ASN1_ITEM pointers. + */ + +/* ASN1_ITEM pointer exported type */ +typedef const ASN1_ITEM *ASN1_ITEM_EXP (void); + +/* Macro to obtain ASN1_ITEM pointer from exported type */ +# define ASN1_ITEM_ptr(iptr) (iptr()) + +/* Macro to include ASN1_ITEM pointer from base type */ +# define ASN1_ITEM_ref(iptr) (iptr##_it) + +# define ASN1_ITEM_rptr(ref) (ref##_it()) + +# define DECLARE_ASN1_ITEM(name) \ + const ASN1_ITEM * name##_it(void); + +# endif + +/* Parameters used by ASN1_STRING_print_ex() */ + +/* + * These determine which characters to escape: RFC2253 special characters, + * control characters and MSB set characters + */ + +# define ASN1_STRFLGS_ESC_2253 1 +# define ASN1_STRFLGS_ESC_CTRL 2 +# define ASN1_STRFLGS_ESC_MSB 4 + +/* + * This flag determines how we do escaping: normally RC2253 backslash only, + * set this to use backslash and quote. + */ + +# define ASN1_STRFLGS_ESC_QUOTE 8 + +/* These three flags are internal use only. */ + +/* Character is a valid PrintableString character */ +# define CHARTYPE_PRINTABLESTRING 0x10 +/* Character needs escaping if it is the first character */ +# define CHARTYPE_FIRST_ESC_2253 0x20 +/* Character needs escaping if it is the last character */ +# define CHARTYPE_LAST_ESC_2253 0x40 + +/* + * NB the internal flags are safely reused below by flags handled at the top + * level. + */ + +/* + * If this is set we convert all character strings to UTF8 first + */ + +# define ASN1_STRFLGS_UTF8_CONVERT 0x10 + +/* + * If this is set we don't attempt to interpret content: just assume all + * strings are 1 byte per character. This will produce some pretty odd + * looking output! + */ + +# define ASN1_STRFLGS_IGNORE_TYPE 0x20 + +/* If this is set we include the string type in the output */ +# define ASN1_STRFLGS_SHOW_TYPE 0x40 + +/* + * This determines which strings to display and which to 'dump' (hex dump of + * content octets or DER encoding). We can only dump non character strings or + * everything. If we don't dump 'unknown' they are interpreted as character + * strings with 1 octet per character and are subject to the usual escaping + * options. + */ + +# define ASN1_STRFLGS_DUMP_ALL 0x80 +# define ASN1_STRFLGS_DUMP_UNKNOWN 0x100 + +/* + * These determine what 'dumping' does, we can dump the content octets or the + * DER encoding: both use the RFC2253 #XXXXX notation. + */ + +# define ASN1_STRFLGS_DUMP_DER 0x200 + +/* + * All the string flags consistent with RFC2253, escaping control characters + * isn't essential in RFC2253 but it is advisable anyway. + */ + +# define ASN1_STRFLGS_RFC2253 (ASN1_STRFLGS_ESC_2253 | \ + ASN1_STRFLGS_ESC_CTRL | \ + ASN1_STRFLGS_ESC_MSB | \ + ASN1_STRFLGS_UTF8_CONVERT | \ + ASN1_STRFLGS_DUMP_UNKNOWN | \ + ASN1_STRFLGS_DUMP_DER) + +DECLARE_STACK_OF(ASN1_INTEGER) +DECLARE_ASN1_SET_OF(ASN1_INTEGER) + +DECLARE_STACK_OF(ASN1_GENERALSTRING) + +typedef struct asn1_type_st { + int type; + union { + char *ptr; + ASN1_BOOLEAN boolean; + ASN1_STRING *asn1_string; + ASN1_OBJECT *object; + ASN1_INTEGER *integer; + ASN1_ENUMERATED *enumerated; + ASN1_BIT_STRING *bit_string; + ASN1_OCTET_STRING *octet_string; + ASN1_PRINTABLESTRING *printablestring; + ASN1_T61STRING *t61string; + ASN1_IA5STRING *ia5string; + ASN1_GENERALSTRING *generalstring; + ASN1_BMPSTRING *bmpstring; + ASN1_UNIVERSALSTRING *universalstring; + ASN1_UTCTIME *utctime; + ASN1_GENERALIZEDTIME *generalizedtime; + ASN1_VISIBLESTRING *visiblestring; + ASN1_UTF8STRING *utf8string; + /* + * set and sequence are left complete and still contain the set or + * sequence bytes + */ + ASN1_STRING *set; + ASN1_STRING *sequence; + ASN1_VALUE *asn1_value; + } value; +} ASN1_TYPE; + +DECLARE_STACK_OF(ASN1_TYPE) +DECLARE_ASN1_SET_OF(ASN1_TYPE) + +typedef STACK_OF(ASN1_TYPE) ASN1_SEQUENCE_ANY; + +DECLARE_ASN1_ENCODE_FUNCTIONS_const(ASN1_SEQUENCE_ANY, ASN1_SEQUENCE_ANY) +DECLARE_ASN1_ENCODE_FUNCTIONS_const(ASN1_SEQUENCE_ANY, ASN1_SET_ANY) + +typedef struct NETSCAPE_X509_st { + ASN1_OCTET_STRING *header; + X509 *cert; +} NETSCAPE_X509; + +/* This is used to contain a list of bit names */ +typedef struct BIT_STRING_BITNAME_st { + int bitnum; + const char *lname; + const char *sname; +} BIT_STRING_BITNAME; + +# define M_ASN1_STRING_length(x) ((x)->length) +# define M_ASN1_STRING_length_set(x, n) ((x)->length = (n)) +# define M_ASN1_STRING_type(x) ((x)->type) +# define M_ASN1_STRING_data(x) ((x)->data) + +/* Macros for string operations */ +# define M_ASN1_BIT_STRING_new() (ASN1_BIT_STRING *)\ + ASN1_STRING_type_new(V_ASN1_BIT_STRING) +# define M_ASN1_BIT_STRING_free(a) ASN1_STRING_free((ASN1_STRING *)a) +# define M_ASN1_BIT_STRING_dup(a) (ASN1_BIT_STRING *)\ + ASN1_STRING_dup((const ASN1_STRING *)a) +# define M_ASN1_BIT_STRING_cmp(a,b) ASN1_STRING_cmp(\ + (const ASN1_STRING *)a,(const ASN1_STRING *)b) +# define M_ASN1_BIT_STRING_set(a,b,c) ASN1_STRING_set((ASN1_STRING *)a,b,c) + +# define M_ASN1_INTEGER_new() (ASN1_INTEGER *)\ + ASN1_STRING_type_new(V_ASN1_INTEGER) +# define M_ASN1_INTEGER_free(a) ASN1_STRING_free((ASN1_STRING *)a) +# define M_ASN1_INTEGER_dup(a) (ASN1_INTEGER *)\ + ASN1_STRING_dup((const ASN1_STRING *)a) +# define M_ASN1_INTEGER_cmp(a,b) ASN1_STRING_cmp(\ + (const ASN1_STRING *)a,(const ASN1_STRING *)b) + +# define M_ASN1_ENUMERATED_new() (ASN1_ENUMERATED *)\ + ASN1_STRING_type_new(V_ASN1_ENUMERATED) +# define M_ASN1_ENUMERATED_free(a) ASN1_STRING_free((ASN1_STRING *)a) +# define M_ASN1_ENUMERATED_dup(a) (ASN1_ENUMERATED *)\ + ASN1_STRING_dup((const ASN1_STRING *)a) +# define M_ASN1_ENUMERATED_cmp(a,b) ASN1_STRING_cmp(\ + (const ASN1_STRING *)a,(const ASN1_STRING *)b) + +# define M_ASN1_OCTET_STRING_new() (ASN1_OCTET_STRING *)\ + ASN1_STRING_type_new(V_ASN1_OCTET_STRING) +# define M_ASN1_OCTET_STRING_free(a) ASN1_STRING_free((ASN1_STRING *)a) +# define M_ASN1_OCTET_STRING_dup(a) (ASN1_OCTET_STRING *)\ + ASN1_STRING_dup((const ASN1_STRING *)a) +# define M_ASN1_OCTET_STRING_cmp(a,b) ASN1_STRING_cmp(\ + (const ASN1_STRING *)a,(const ASN1_STRING *)b) +# define M_ASN1_OCTET_STRING_set(a,b,c) ASN1_STRING_set((ASN1_STRING *)a,b,c) +# define M_ASN1_OCTET_STRING_print(a,b) ASN1_STRING_print(a,(ASN1_STRING *)b) +# define M_i2d_ASN1_OCTET_STRING(a,pp) \ + i2d_ASN1_bytes((ASN1_STRING *)a,pp,V_ASN1_OCTET_STRING,\ + V_ASN1_UNIVERSAL) + +# define B_ASN1_TIME \ + B_ASN1_UTCTIME | \ + B_ASN1_GENERALIZEDTIME + +# define B_ASN1_PRINTABLE \ + B_ASN1_NUMERICSTRING| \ + B_ASN1_PRINTABLESTRING| \ + B_ASN1_T61STRING| \ + B_ASN1_IA5STRING| \ + B_ASN1_BIT_STRING| \ + B_ASN1_UNIVERSALSTRING|\ + B_ASN1_BMPSTRING|\ + B_ASN1_UTF8STRING|\ + B_ASN1_SEQUENCE|\ + B_ASN1_UNKNOWN + +# define B_ASN1_DIRECTORYSTRING \ + B_ASN1_PRINTABLESTRING| \ + B_ASN1_TELETEXSTRING|\ + B_ASN1_BMPSTRING|\ + B_ASN1_UNIVERSALSTRING|\ + B_ASN1_UTF8STRING + +# define B_ASN1_DISPLAYTEXT \ + B_ASN1_IA5STRING| \ + B_ASN1_VISIBLESTRING| \ + B_ASN1_BMPSTRING|\ + B_ASN1_UTF8STRING + +# define M_ASN1_PRINTABLE_new() ASN1_STRING_type_new(V_ASN1_T61STRING) +# define M_ASN1_PRINTABLE_free(a) ASN1_STRING_free((ASN1_STRING *)a) +# define M_i2d_ASN1_PRINTABLE(a,pp) i2d_ASN1_bytes((ASN1_STRING *)a,\ + pp,a->type,V_ASN1_UNIVERSAL) +# define M_d2i_ASN1_PRINTABLE(a,pp,l) \ + d2i_ASN1_type_bytes((ASN1_STRING **)a,pp,l, \ + B_ASN1_PRINTABLE) + +# define M_DIRECTORYSTRING_new() ASN1_STRING_type_new(V_ASN1_PRINTABLESTRING) +# define M_DIRECTORYSTRING_free(a) ASN1_STRING_free((ASN1_STRING *)a) +# define M_i2d_DIRECTORYSTRING(a,pp) i2d_ASN1_bytes((ASN1_STRING *)a,\ + pp,a->type,V_ASN1_UNIVERSAL) +# define M_d2i_DIRECTORYSTRING(a,pp,l) \ + d2i_ASN1_type_bytes((ASN1_STRING **)a,pp,l, \ + B_ASN1_DIRECTORYSTRING) + +# define M_DISPLAYTEXT_new() ASN1_STRING_type_new(V_ASN1_VISIBLESTRING) +# define M_DISPLAYTEXT_free(a) ASN1_STRING_free((ASN1_STRING *)a) +# define M_i2d_DISPLAYTEXT(a,pp) i2d_ASN1_bytes((ASN1_STRING *)a,\ + pp,a->type,V_ASN1_UNIVERSAL) +# define M_d2i_DISPLAYTEXT(a,pp,l) \ + d2i_ASN1_type_bytes((ASN1_STRING **)a,pp,l, \ + B_ASN1_DISPLAYTEXT) + +# define M_ASN1_PRINTABLESTRING_new() (ASN1_PRINTABLESTRING *)\ + ASN1_STRING_type_new(V_ASN1_PRINTABLESTRING) +# define M_ASN1_PRINTABLESTRING_free(a) ASN1_STRING_free((ASN1_STRING *)a) +# define M_i2d_ASN1_PRINTABLESTRING(a,pp) \ + i2d_ASN1_bytes((ASN1_STRING *)a,pp,V_ASN1_PRINTABLESTRING,\ + V_ASN1_UNIVERSAL) +# define M_d2i_ASN1_PRINTABLESTRING(a,pp,l) \ + (ASN1_PRINTABLESTRING *)d2i_ASN1_type_bytes\ + ((ASN1_STRING **)a,pp,l,B_ASN1_PRINTABLESTRING) + +# define M_ASN1_T61STRING_new() (ASN1_T61STRING *)\ + ASN1_STRING_type_new(V_ASN1_T61STRING) +# define M_ASN1_T61STRING_free(a) ASN1_STRING_free((ASN1_STRING *)a) +# define M_i2d_ASN1_T61STRING(a,pp) \ + i2d_ASN1_bytes((ASN1_STRING *)a,pp,V_ASN1_T61STRING,\ + V_ASN1_UNIVERSAL) +# define M_d2i_ASN1_T61STRING(a,pp,l) \ + (ASN1_T61STRING *)d2i_ASN1_type_bytes\ + ((ASN1_STRING **)a,pp,l,B_ASN1_T61STRING) + +# define M_ASN1_IA5STRING_new() (ASN1_IA5STRING *)\ + ASN1_STRING_type_new(V_ASN1_IA5STRING) +# define M_ASN1_IA5STRING_free(a) ASN1_STRING_free((ASN1_STRING *)a) +# define M_ASN1_IA5STRING_dup(a) \ + (ASN1_IA5STRING *)ASN1_STRING_dup((const ASN1_STRING *)a) +# define M_i2d_ASN1_IA5STRING(a,pp) \ + i2d_ASN1_bytes((ASN1_STRING *)a,pp,V_ASN1_IA5STRING,\ + V_ASN1_UNIVERSAL) +# define M_d2i_ASN1_IA5STRING(a,pp,l) \ + (ASN1_IA5STRING *)d2i_ASN1_type_bytes((ASN1_STRING **)a,pp,l,\ + B_ASN1_IA5STRING) + +# define M_ASN1_UTCTIME_new() (ASN1_UTCTIME *)\ + ASN1_STRING_type_new(V_ASN1_UTCTIME) +# define M_ASN1_UTCTIME_free(a) ASN1_STRING_free((ASN1_STRING *)a) +# define M_ASN1_UTCTIME_dup(a) (ASN1_UTCTIME *)\ + ASN1_STRING_dup((const ASN1_STRING *)a) + +# define M_ASN1_GENERALIZEDTIME_new() (ASN1_GENERALIZEDTIME *)\ + ASN1_STRING_type_new(V_ASN1_GENERALIZEDTIME) +# define M_ASN1_GENERALIZEDTIME_free(a) ASN1_STRING_free((ASN1_STRING *)a) +# define M_ASN1_GENERALIZEDTIME_dup(a) (ASN1_GENERALIZEDTIME *)ASN1_STRING_dup(\ + (const ASN1_STRING *)a) + +# define M_ASN1_TIME_new() (ASN1_TIME *)\ + ASN1_STRING_type_new(V_ASN1_UTCTIME) +# define M_ASN1_TIME_free(a) ASN1_STRING_free((ASN1_STRING *)a) +# define M_ASN1_TIME_dup(a) (ASN1_TIME *)\ + ASN1_STRING_dup((const ASN1_STRING *)a) + +# define M_ASN1_GENERALSTRING_new() (ASN1_GENERALSTRING *)\ + ASN1_STRING_type_new(V_ASN1_GENERALSTRING) +# define M_ASN1_GENERALSTRING_free(a) ASN1_STRING_free((ASN1_STRING *)a) +# define M_i2d_ASN1_GENERALSTRING(a,pp) \ + i2d_ASN1_bytes((ASN1_STRING *)a,pp,V_ASN1_GENERALSTRING,\ + V_ASN1_UNIVERSAL) +# define M_d2i_ASN1_GENERALSTRING(a,pp,l) \ + (ASN1_GENERALSTRING *)d2i_ASN1_type_bytes\ + ((ASN1_STRING **)a,pp,l,B_ASN1_GENERALSTRING) + +# define M_ASN1_UNIVERSALSTRING_new() (ASN1_UNIVERSALSTRING *)\ + ASN1_STRING_type_new(V_ASN1_UNIVERSALSTRING) +# define M_ASN1_UNIVERSALSTRING_free(a) ASN1_STRING_free((ASN1_STRING *)a) +# define M_i2d_ASN1_UNIVERSALSTRING(a,pp) \ + i2d_ASN1_bytes((ASN1_STRING *)a,pp,V_ASN1_UNIVERSALSTRING,\ + V_ASN1_UNIVERSAL) +# define M_d2i_ASN1_UNIVERSALSTRING(a,pp,l) \ + (ASN1_UNIVERSALSTRING *)d2i_ASN1_type_bytes\ + ((ASN1_STRING **)a,pp,l,B_ASN1_UNIVERSALSTRING) + +# define M_ASN1_BMPSTRING_new() (ASN1_BMPSTRING *)\ + ASN1_STRING_type_new(V_ASN1_BMPSTRING) +# define M_ASN1_BMPSTRING_free(a) ASN1_STRING_free((ASN1_STRING *)a) +# define M_i2d_ASN1_BMPSTRING(a,pp) \ + i2d_ASN1_bytes((ASN1_STRING *)a,pp,V_ASN1_BMPSTRING,\ + V_ASN1_UNIVERSAL) +# define M_d2i_ASN1_BMPSTRING(a,pp,l) \ + (ASN1_BMPSTRING *)d2i_ASN1_type_bytes\ + ((ASN1_STRING **)a,pp,l,B_ASN1_BMPSTRING) + +# define M_ASN1_VISIBLESTRING_new() (ASN1_VISIBLESTRING *)\ + ASN1_STRING_type_new(V_ASN1_VISIBLESTRING) +# define M_ASN1_VISIBLESTRING_free(a) ASN1_STRING_free((ASN1_STRING *)a) +# define M_i2d_ASN1_VISIBLESTRING(a,pp) \ + i2d_ASN1_bytes((ASN1_STRING *)a,pp,V_ASN1_VISIBLESTRING,\ + V_ASN1_UNIVERSAL) +# define M_d2i_ASN1_VISIBLESTRING(a,pp,l) \ + (ASN1_VISIBLESTRING *)d2i_ASN1_type_bytes\ + ((ASN1_STRING **)a,pp,l,B_ASN1_VISIBLESTRING) + +# define M_ASN1_UTF8STRING_new() (ASN1_UTF8STRING *)\ + ASN1_STRING_type_new(V_ASN1_UTF8STRING) +# define M_ASN1_UTF8STRING_free(a) ASN1_STRING_free((ASN1_STRING *)a) +# define M_i2d_ASN1_UTF8STRING(a,pp) \ + i2d_ASN1_bytes((ASN1_STRING *)a,pp,V_ASN1_UTF8STRING,\ + V_ASN1_UNIVERSAL) +# define M_d2i_ASN1_UTF8STRING(a,pp,l) \ + (ASN1_UTF8STRING *)d2i_ASN1_type_bytes\ + ((ASN1_STRING **)a,pp,l,B_ASN1_UTF8STRING) + + /* for the is_set parameter to i2d_ASN1_SET */ +# define IS_SEQUENCE 0 +# define IS_SET 1 + +DECLARE_ASN1_FUNCTIONS_fname(ASN1_TYPE, ASN1_ANY, ASN1_TYPE) + +int ASN1_TYPE_get(ASN1_TYPE *a); +void ASN1_TYPE_set(ASN1_TYPE *a, int type, void *value); +int ASN1_TYPE_set1(ASN1_TYPE *a, int type, const void *value); +int ASN1_TYPE_cmp(const ASN1_TYPE *a, const ASN1_TYPE *b); + +ASN1_OBJECT *ASN1_OBJECT_new(void); +void ASN1_OBJECT_free(ASN1_OBJECT *a); +int i2d_ASN1_OBJECT(ASN1_OBJECT *a, unsigned char **pp); +ASN1_OBJECT *c2i_ASN1_OBJECT(ASN1_OBJECT **a, const unsigned char **pp, + long length); +ASN1_OBJECT *d2i_ASN1_OBJECT(ASN1_OBJECT **a, const unsigned char **pp, + long length); + +DECLARE_ASN1_ITEM(ASN1_OBJECT) + +DECLARE_STACK_OF(ASN1_OBJECT) +DECLARE_ASN1_SET_OF(ASN1_OBJECT) + +ASN1_STRING *ASN1_STRING_new(void); +void ASN1_STRING_free(ASN1_STRING *a); +int ASN1_STRING_copy(ASN1_STRING *dst, const ASN1_STRING *str); +ASN1_STRING *ASN1_STRING_dup(const ASN1_STRING *a); +ASN1_STRING *ASN1_STRING_type_new(int type); +int ASN1_STRING_cmp(const ASN1_STRING *a, const ASN1_STRING *b); + /* + * Since this is used to store all sorts of things, via macros, for now, + * make its data void * + */ +int ASN1_STRING_set(ASN1_STRING *str, const void *data, int len); +void ASN1_STRING_set0(ASN1_STRING *str, void *data, int len); +int ASN1_STRING_length(const ASN1_STRING *x); +void ASN1_STRING_length_set(ASN1_STRING *x, int n); +int ASN1_STRING_type(ASN1_STRING *x); +unsigned char *ASN1_STRING_data(ASN1_STRING *x); + +DECLARE_ASN1_FUNCTIONS(ASN1_BIT_STRING) +int i2c_ASN1_BIT_STRING(ASN1_BIT_STRING *a, unsigned char **pp); +ASN1_BIT_STRING *c2i_ASN1_BIT_STRING(ASN1_BIT_STRING **a, + const unsigned char **pp, long length); +int ASN1_BIT_STRING_set(ASN1_BIT_STRING *a, unsigned char *d, int length); +int ASN1_BIT_STRING_set_bit(ASN1_BIT_STRING *a, int n, int value); +int ASN1_BIT_STRING_get_bit(ASN1_BIT_STRING *a, int n); +int ASN1_BIT_STRING_check(ASN1_BIT_STRING *a, + unsigned char *flags, int flags_len); + +# ifndef OPENSSL_NO_BIO +int ASN1_BIT_STRING_name_print(BIO *out, ASN1_BIT_STRING *bs, + BIT_STRING_BITNAME *tbl, int indent); +# endif +int ASN1_BIT_STRING_num_asc(char *name, BIT_STRING_BITNAME *tbl); +int ASN1_BIT_STRING_set_asc(ASN1_BIT_STRING *bs, char *name, int value, + BIT_STRING_BITNAME *tbl); + +int i2d_ASN1_BOOLEAN(int a, unsigned char **pp); +int d2i_ASN1_BOOLEAN(int *a, const unsigned char **pp, long length); + +DECLARE_ASN1_FUNCTIONS(ASN1_INTEGER) +int i2c_ASN1_INTEGER(ASN1_INTEGER *a, unsigned char **pp); +ASN1_INTEGER *c2i_ASN1_INTEGER(ASN1_INTEGER **a, const unsigned char **pp, + long length); +ASN1_INTEGER *d2i_ASN1_UINTEGER(ASN1_INTEGER **a, const unsigned char **pp, + long length); +ASN1_INTEGER *ASN1_INTEGER_dup(const ASN1_INTEGER *x); +int ASN1_INTEGER_cmp(const ASN1_INTEGER *x, const ASN1_INTEGER *y); + +DECLARE_ASN1_FUNCTIONS(ASN1_ENUMERATED) + +int ASN1_UTCTIME_check(const ASN1_UTCTIME *a); +ASN1_UTCTIME *ASN1_UTCTIME_set(ASN1_UTCTIME *s, time_t t); +ASN1_UTCTIME *ASN1_UTCTIME_adj(ASN1_UTCTIME *s, time_t t, + int offset_day, long offset_sec); +int ASN1_UTCTIME_set_string(ASN1_UTCTIME *s, const char *str); +int ASN1_UTCTIME_cmp_time_t(const ASN1_UTCTIME *s, time_t t); +# if 0 +time_t ASN1_UTCTIME_get(const ASN1_UTCTIME *s); +# endif + +int ASN1_GENERALIZEDTIME_check(const ASN1_GENERALIZEDTIME *a); +ASN1_GENERALIZEDTIME *ASN1_GENERALIZEDTIME_set(ASN1_GENERALIZEDTIME *s, + time_t t); +ASN1_GENERALIZEDTIME *ASN1_GENERALIZEDTIME_adj(ASN1_GENERALIZEDTIME *s, + time_t t, int offset_day, + long offset_sec); +int ASN1_GENERALIZEDTIME_set_string(ASN1_GENERALIZEDTIME *s, const char *str); +int ASN1_TIME_diff(int *pday, int *psec, + const ASN1_TIME *from, const ASN1_TIME *to); + +DECLARE_ASN1_FUNCTIONS(ASN1_OCTET_STRING) +ASN1_OCTET_STRING *ASN1_OCTET_STRING_dup(const ASN1_OCTET_STRING *a); +int ASN1_OCTET_STRING_cmp(const ASN1_OCTET_STRING *a, + const ASN1_OCTET_STRING *b); +int ASN1_OCTET_STRING_set(ASN1_OCTET_STRING *str, const unsigned char *data, + int len); + +DECLARE_ASN1_FUNCTIONS(ASN1_VISIBLESTRING) +DECLARE_ASN1_FUNCTIONS(ASN1_UNIVERSALSTRING) +DECLARE_ASN1_FUNCTIONS(ASN1_UTF8STRING) +DECLARE_ASN1_FUNCTIONS(ASN1_NULL) +DECLARE_ASN1_FUNCTIONS(ASN1_BMPSTRING) + +int UTF8_getc(const unsigned char *str, int len, unsigned long *val); +int UTF8_putc(unsigned char *str, int len, unsigned long value); + +DECLARE_ASN1_FUNCTIONS_name(ASN1_STRING, ASN1_PRINTABLE) + +DECLARE_ASN1_FUNCTIONS_name(ASN1_STRING, DIRECTORYSTRING) +DECLARE_ASN1_FUNCTIONS_name(ASN1_STRING, DISPLAYTEXT) +DECLARE_ASN1_FUNCTIONS(ASN1_PRINTABLESTRING) +DECLARE_ASN1_FUNCTIONS(ASN1_T61STRING) +DECLARE_ASN1_FUNCTIONS(ASN1_IA5STRING) +DECLARE_ASN1_FUNCTIONS(ASN1_GENERALSTRING) +DECLARE_ASN1_FUNCTIONS(ASN1_UTCTIME) +DECLARE_ASN1_FUNCTIONS(ASN1_GENERALIZEDTIME) +DECLARE_ASN1_FUNCTIONS(ASN1_TIME) + +DECLARE_ASN1_ITEM(ASN1_OCTET_STRING_NDEF) + +ASN1_TIME *ASN1_TIME_set(ASN1_TIME *s, time_t t); +ASN1_TIME *ASN1_TIME_adj(ASN1_TIME *s, time_t t, + int offset_day, long offset_sec); +int ASN1_TIME_check(ASN1_TIME *t); +ASN1_GENERALIZEDTIME *ASN1_TIME_to_generalizedtime(ASN1_TIME *t, ASN1_GENERALIZEDTIME + **out); +int ASN1_TIME_set_string(ASN1_TIME *s, const char *str); + +int i2d_ASN1_SET(STACK_OF(OPENSSL_BLOCK) *a, unsigned char **pp, + i2d_of_void *i2d, int ex_tag, int ex_class, int is_set); +STACK_OF(OPENSSL_BLOCK) *d2i_ASN1_SET(STACK_OF(OPENSSL_BLOCK) **a, + const unsigned char **pp, + long length, d2i_of_void *d2i, + void (*free_func) (OPENSSL_BLOCK), + int ex_tag, int ex_class); + +# ifndef OPENSSL_NO_BIO +int i2a_ASN1_INTEGER(BIO *bp, ASN1_INTEGER *a); +int a2i_ASN1_INTEGER(BIO *bp, ASN1_INTEGER *bs, char *buf, int size); +int i2a_ASN1_ENUMERATED(BIO *bp, ASN1_ENUMERATED *a); +int a2i_ASN1_ENUMERATED(BIO *bp, ASN1_ENUMERATED *bs, char *buf, int size); +int i2a_ASN1_OBJECT(BIO *bp, ASN1_OBJECT *a); +int a2i_ASN1_STRING(BIO *bp, ASN1_STRING *bs, char *buf, int size); +int i2a_ASN1_STRING(BIO *bp, ASN1_STRING *a, int type); +# endif +int i2t_ASN1_OBJECT(char *buf, int buf_len, ASN1_OBJECT *a); + +int a2d_ASN1_OBJECT(unsigned char *out, int olen, const char *buf, int num); +ASN1_OBJECT *ASN1_OBJECT_create(int nid, unsigned char *data, int len, + const char *sn, const char *ln); + +int ASN1_INTEGER_set(ASN1_INTEGER *a, long v); +long ASN1_INTEGER_get(const ASN1_INTEGER *a); +ASN1_INTEGER *BN_to_ASN1_INTEGER(const BIGNUM *bn, ASN1_INTEGER *ai); +BIGNUM *ASN1_INTEGER_to_BN(const ASN1_INTEGER *ai, BIGNUM *bn); + +int ASN1_ENUMERATED_set(ASN1_ENUMERATED *a, long v); +long ASN1_ENUMERATED_get(ASN1_ENUMERATED *a); +ASN1_ENUMERATED *BN_to_ASN1_ENUMERATED(BIGNUM *bn, ASN1_ENUMERATED *ai); +BIGNUM *ASN1_ENUMERATED_to_BN(ASN1_ENUMERATED *ai, BIGNUM *bn); + +/* General */ +/* given a string, return the correct type, max is the maximum length */ +int ASN1_PRINTABLE_type(const unsigned char *s, int max); + +int i2d_ASN1_bytes(ASN1_STRING *a, unsigned char **pp, int tag, int xclass); +ASN1_STRING *d2i_ASN1_bytes(ASN1_STRING **a, const unsigned char **pp, + long length, int Ptag, int Pclass); +unsigned long ASN1_tag2bit(int tag); +/* type is one or more of the B_ASN1_ values. */ +ASN1_STRING *d2i_ASN1_type_bytes(ASN1_STRING **a, const unsigned char **pp, + long length, int type); + +/* PARSING */ +int asn1_Finish(ASN1_CTX *c); +int asn1_const_Finish(ASN1_const_CTX *c); + +/* SPECIALS */ +int ASN1_get_object(const unsigned char **pp, long *plength, int *ptag, + int *pclass, long omax); +int ASN1_check_infinite_end(unsigned char **p, long len); +int ASN1_const_check_infinite_end(const unsigned char **p, long len); +void ASN1_put_object(unsigned char **pp, int constructed, int length, + int tag, int xclass); +int ASN1_put_eoc(unsigned char **pp); +int ASN1_object_size(int constructed, int length, int tag); + +/* Used to implement other functions */ +void *ASN1_dup(i2d_of_void *i2d, d2i_of_void *d2i, void *x); + +# define ASN1_dup_of(type,i2d,d2i,x) \ + ((type*)ASN1_dup(CHECKED_I2D_OF(type, i2d), \ + CHECKED_D2I_OF(type, d2i), \ + CHECKED_PTR_OF(type, x))) + +# define ASN1_dup_of_const(type,i2d,d2i,x) \ + ((type*)ASN1_dup(CHECKED_I2D_OF(const type, i2d), \ + CHECKED_D2I_OF(type, d2i), \ + CHECKED_PTR_OF(const type, x))) + +void *ASN1_item_dup(const ASN1_ITEM *it, void *x); + +/* ASN1 alloc/free macros for when a type is only used internally */ + +# define M_ASN1_new_of(type) (type *)ASN1_item_new(ASN1_ITEM_rptr(type)) +# define M_ASN1_free_of(x, type) \ + ASN1_item_free(CHECKED_PTR_OF(type, x), ASN1_ITEM_rptr(type)) + +# ifndef OPENSSL_NO_FP_API +void *ASN1_d2i_fp(void *(*xnew) (void), d2i_of_void *d2i, FILE *in, void **x); + +# define ASN1_d2i_fp_of(type,xnew,d2i,in,x) \ + ((type*)ASN1_d2i_fp(CHECKED_NEW_OF(type, xnew), \ + CHECKED_D2I_OF(type, d2i), \ + in, \ + CHECKED_PPTR_OF(type, x))) + +void *ASN1_item_d2i_fp(const ASN1_ITEM *it, FILE *in, void *x); +int ASN1_i2d_fp(i2d_of_void *i2d, FILE *out, void *x); + +# define ASN1_i2d_fp_of(type,i2d,out,x) \ + (ASN1_i2d_fp(CHECKED_I2D_OF(type, i2d), \ + out, \ + CHECKED_PTR_OF(type, x))) + +# define ASN1_i2d_fp_of_const(type,i2d,out,x) \ + (ASN1_i2d_fp(CHECKED_I2D_OF(const type, i2d), \ + out, \ + CHECKED_PTR_OF(const type, x))) + +int ASN1_item_i2d_fp(const ASN1_ITEM *it, FILE *out, void *x); +int ASN1_STRING_print_ex_fp(FILE *fp, ASN1_STRING *str, unsigned long flags); +# endif + +int ASN1_STRING_to_UTF8(unsigned char **out, ASN1_STRING *in); + +# ifndef OPENSSL_NO_BIO +void *ASN1_d2i_bio(void *(*xnew) (void), d2i_of_void *d2i, BIO *in, void **x); + +# define ASN1_d2i_bio_of(type,xnew,d2i,in,x) \ + ((type*)ASN1_d2i_bio( CHECKED_NEW_OF(type, xnew), \ + CHECKED_D2I_OF(type, d2i), \ + in, \ + CHECKED_PPTR_OF(type, x))) + +void *ASN1_item_d2i_bio(const ASN1_ITEM *it, BIO *in, void *x); +int ASN1_i2d_bio(i2d_of_void *i2d, BIO *out, unsigned char *x); + +# define ASN1_i2d_bio_of(type,i2d,out,x) \ + (ASN1_i2d_bio(CHECKED_I2D_OF(type, i2d), \ + out, \ + CHECKED_PTR_OF(type, x))) + +# define ASN1_i2d_bio_of_const(type,i2d,out,x) \ + (ASN1_i2d_bio(CHECKED_I2D_OF(const type, i2d), \ + out, \ + CHECKED_PTR_OF(const type, x))) + +int ASN1_item_i2d_bio(const ASN1_ITEM *it, BIO *out, void *x); +int ASN1_UTCTIME_print(BIO *fp, const ASN1_UTCTIME *a); +int ASN1_GENERALIZEDTIME_print(BIO *fp, const ASN1_GENERALIZEDTIME *a); +int ASN1_TIME_print(BIO *fp, const ASN1_TIME *a); +int ASN1_STRING_print(BIO *bp, const ASN1_STRING *v); +int ASN1_STRING_print_ex(BIO *out, ASN1_STRING *str, unsigned long flags); +int ASN1_bn_print(BIO *bp, const char *number, const BIGNUM *num, + unsigned char *buf, int off); +int ASN1_parse(BIO *bp, const unsigned char *pp, long len, int indent); +int ASN1_parse_dump(BIO *bp, const unsigned char *pp, long len, int indent, + int dump); +# endif +const char *ASN1_tag2str(int tag); + +/* Used to load and write netscape format cert */ + +DECLARE_ASN1_FUNCTIONS(NETSCAPE_X509) + +int ASN1_UNIVERSALSTRING_to_string(ASN1_UNIVERSALSTRING *s); + +int ASN1_TYPE_set_octetstring(ASN1_TYPE *a, unsigned char *data, int len); +int ASN1_TYPE_get_octetstring(ASN1_TYPE *a, unsigned char *data, int max_len); +int ASN1_TYPE_set_int_octetstring(ASN1_TYPE *a, long num, + unsigned char *data, int len); +int ASN1_TYPE_get_int_octetstring(ASN1_TYPE *a, long *num, + unsigned char *data, int max_len); + +STACK_OF(OPENSSL_BLOCK) *ASN1_seq_unpack(const unsigned char *buf, int len, + d2i_of_void *d2i, + void (*free_func) (OPENSSL_BLOCK)); +unsigned char *ASN1_seq_pack(STACK_OF(OPENSSL_BLOCK) *safes, i2d_of_void *i2d, + unsigned char **buf, int *len); +void *ASN1_unpack_string(ASN1_STRING *oct, d2i_of_void *d2i); +void *ASN1_item_unpack(ASN1_STRING *oct, const ASN1_ITEM *it); +ASN1_STRING *ASN1_pack_string(void *obj, i2d_of_void *i2d, + ASN1_OCTET_STRING **oct); + +# define ASN1_pack_string_of(type,obj,i2d,oct) \ + (ASN1_pack_string(CHECKED_PTR_OF(type, obj), \ + CHECKED_I2D_OF(type, i2d), \ + oct)) + +ASN1_STRING *ASN1_item_pack(void *obj, const ASN1_ITEM *it, + ASN1_OCTET_STRING **oct); + +void ASN1_STRING_set_default_mask(unsigned long mask); +int ASN1_STRING_set_default_mask_asc(const char *p); +unsigned long ASN1_STRING_get_default_mask(void); +int ASN1_mbstring_copy(ASN1_STRING **out, const unsigned char *in, int len, + int inform, unsigned long mask); +int ASN1_mbstring_ncopy(ASN1_STRING **out, const unsigned char *in, int len, + int inform, unsigned long mask, + long minsize, long maxsize); + +ASN1_STRING *ASN1_STRING_set_by_NID(ASN1_STRING **out, + const unsigned char *in, int inlen, + int inform, int nid); +ASN1_STRING_TABLE *ASN1_STRING_TABLE_get(int nid); +int ASN1_STRING_TABLE_add(int, long, long, unsigned long, unsigned long); +void ASN1_STRING_TABLE_cleanup(void); + +/* ASN1 template functions */ + +/* Old API compatible functions */ +ASN1_VALUE *ASN1_item_new(const ASN1_ITEM *it); +void ASN1_item_free(ASN1_VALUE *val, const ASN1_ITEM *it); +ASN1_VALUE *ASN1_item_d2i(ASN1_VALUE **val, const unsigned char **in, + long len, const ASN1_ITEM *it); +int ASN1_item_i2d(ASN1_VALUE *val, unsigned char **out, const ASN1_ITEM *it); +int ASN1_item_ndef_i2d(ASN1_VALUE *val, unsigned char **out, + const ASN1_ITEM *it); + +void ASN1_add_oid_module(void); + +ASN1_TYPE *ASN1_generate_nconf(char *str, CONF *nconf); +ASN1_TYPE *ASN1_generate_v3(char *str, X509V3_CTX *cnf); + +/* ASN1 Print flags */ + +/* Indicate missing OPTIONAL fields */ +# define ASN1_PCTX_FLAGS_SHOW_ABSENT 0x001 +/* Mark start and end of SEQUENCE */ +# define ASN1_PCTX_FLAGS_SHOW_SEQUENCE 0x002 +/* Mark start and end of SEQUENCE/SET OF */ +# define ASN1_PCTX_FLAGS_SHOW_SSOF 0x004 +/* Show the ASN1 type of primitives */ +# define ASN1_PCTX_FLAGS_SHOW_TYPE 0x008 +/* Don't show ASN1 type of ANY */ +# define ASN1_PCTX_FLAGS_NO_ANY_TYPE 0x010 +/* Don't show ASN1 type of MSTRINGs */ +# define ASN1_PCTX_FLAGS_NO_MSTRING_TYPE 0x020 +/* Don't show field names in SEQUENCE */ +# define ASN1_PCTX_FLAGS_NO_FIELD_NAME 0x040 +/* Show structure names of each SEQUENCE field */ +# define ASN1_PCTX_FLAGS_SHOW_FIELD_STRUCT_NAME 0x080 +/* Don't show structure name even at top level */ +# define ASN1_PCTX_FLAGS_NO_STRUCT_NAME 0x100 + +int ASN1_item_print(BIO *out, ASN1_VALUE *ifld, int indent, + const ASN1_ITEM *it, const ASN1_PCTX *pctx); +ASN1_PCTX *ASN1_PCTX_new(void); +void ASN1_PCTX_free(ASN1_PCTX *p); +unsigned long ASN1_PCTX_get_flags(ASN1_PCTX *p); +void ASN1_PCTX_set_flags(ASN1_PCTX *p, unsigned long flags); +unsigned long ASN1_PCTX_get_nm_flags(ASN1_PCTX *p); +void ASN1_PCTX_set_nm_flags(ASN1_PCTX *p, unsigned long flags); +unsigned long ASN1_PCTX_get_cert_flags(ASN1_PCTX *p); +void ASN1_PCTX_set_cert_flags(ASN1_PCTX *p, unsigned long flags); +unsigned long ASN1_PCTX_get_oid_flags(ASN1_PCTX *p); +void ASN1_PCTX_set_oid_flags(ASN1_PCTX *p, unsigned long flags); +unsigned long ASN1_PCTX_get_str_flags(ASN1_PCTX *p); +void ASN1_PCTX_set_str_flags(ASN1_PCTX *p, unsigned long flags); + +BIO_METHOD *BIO_f_asn1(void); + +BIO *BIO_new_NDEF(BIO *out, ASN1_VALUE *val, const ASN1_ITEM *it); + +int i2d_ASN1_bio_stream(BIO *out, ASN1_VALUE *val, BIO *in, int flags, + const ASN1_ITEM *it); +int PEM_write_bio_ASN1_stream(BIO *out, ASN1_VALUE *val, BIO *in, int flags, + const char *hdr, const ASN1_ITEM *it); +int SMIME_write_ASN1(BIO *bio, ASN1_VALUE *val, BIO *data, int flags, + int ctype_nid, int econt_nid, + STACK_OF(X509_ALGOR) *mdalgs, const ASN1_ITEM *it); +ASN1_VALUE *SMIME_read_ASN1(BIO *bio, BIO **bcont, const ASN1_ITEM *it); +int SMIME_crlf_copy(BIO *in, BIO *out, int flags); +int SMIME_text(BIO *in, BIO *out); + +/* BEGIN ERROR CODES */ +/* + * The following lines are auto generated by the script mkerr.pl. Any changes + * made after this point may be overwritten when the script is next run. + */ +void ERR_load_ASN1_strings(void); + +/* Error codes for the ASN1 functions. */ + +/* Function codes. */ +# define ASN1_F_A2D_ASN1_OBJECT 100 +# define ASN1_F_A2I_ASN1_ENUMERATED 101 +# define ASN1_F_A2I_ASN1_INTEGER 102 +# define ASN1_F_A2I_ASN1_STRING 103 +# define ASN1_F_APPEND_EXP 176 +# define ASN1_F_ASN1_BIT_STRING_SET_BIT 183 +# define ASN1_F_ASN1_CB 177 +# define ASN1_F_ASN1_CHECK_TLEN 104 +# define ASN1_F_ASN1_COLLATE_PRIMITIVE 105 +# define ASN1_F_ASN1_COLLECT 106 +# define ASN1_F_ASN1_D2I_EX_PRIMITIVE 108 +# define ASN1_F_ASN1_D2I_FP 109 +# define ASN1_F_ASN1_D2I_READ_BIO 107 +# define ASN1_F_ASN1_DIGEST 184 +# define ASN1_F_ASN1_DO_ADB 110 +# define ASN1_F_ASN1_DUP 111 +# define ASN1_F_ASN1_ENUMERATED_SET 112 +# define ASN1_F_ASN1_ENUMERATED_TO_BN 113 +# define ASN1_F_ASN1_EX_C2I 204 +# define ASN1_F_ASN1_FIND_END 190 +# define ASN1_F_ASN1_GENERALIZEDTIME_ADJ 216 +# define ASN1_F_ASN1_GENERALIZEDTIME_SET 185 +# define ASN1_F_ASN1_GENERATE_V3 178 +# define ASN1_F_ASN1_GET_OBJECT 114 +# define ASN1_F_ASN1_HEADER_NEW 115 +# define ASN1_F_ASN1_I2D_BIO 116 +# define ASN1_F_ASN1_I2D_FP 117 +# define ASN1_F_ASN1_INTEGER_SET 118 +# define ASN1_F_ASN1_INTEGER_TO_BN 119 +# define ASN1_F_ASN1_ITEM_D2I_FP 206 +# define ASN1_F_ASN1_ITEM_DUP 191 +# define ASN1_F_ASN1_ITEM_EX_COMBINE_NEW 121 +# define ASN1_F_ASN1_ITEM_EX_D2I 120 +# define ASN1_F_ASN1_ITEM_I2D_BIO 192 +# define ASN1_F_ASN1_ITEM_I2D_FP 193 +# define ASN1_F_ASN1_ITEM_PACK 198 +# define ASN1_F_ASN1_ITEM_SIGN 195 +# define ASN1_F_ASN1_ITEM_SIGN_CTX 220 +# define ASN1_F_ASN1_ITEM_UNPACK 199 +# define ASN1_F_ASN1_ITEM_VERIFY 197 +# define ASN1_F_ASN1_MBSTRING_NCOPY 122 +# define ASN1_F_ASN1_OBJECT_NEW 123 +# define ASN1_F_ASN1_OUTPUT_DATA 214 +# define ASN1_F_ASN1_PACK_STRING 124 +# define ASN1_F_ASN1_PCTX_NEW 205 +# define ASN1_F_ASN1_PKCS5_PBE_SET 125 +# define ASN1_F_ASN1_SEQ_PACK 126 +# define ASN1_F_ASN1_SEQ_UNPACK 127 +# define ASN1_F_ASN1_SIGN 128 +# define ASN1_F_ASN1_STR2TYPE 179 +# define ASN1_F_ASN1_STRING_SET 186 +# define ASN1_F_ASN1_STRING_TABLE_ADD 129 +# define ASN1_F_ASN1_STRING_TYPE_NEW 130 +# define ASN1_F_ASN1_TEMPLATE_EX_D2I 132 +# define ASN1_F_ASN1_TEMPLATE_NEW 133 +# define ASN1_F_ASN1_TEMPLATE_NOEXP_D2I 131 +# define ASN1_F_ASN1_TIME_ADJ 217 +# define ASN1_F_ASN1_TIME_SET 175 +# define ASN1_F_ASN1_TYPE_GET_INT_OCTETSTRING 134 +# define ASN1_F_ASN1_TYPE_GET_OCTETSTRING 135 +# define ASN1_F_ASN1_UNPACK_STRING 136 +# define ASN1_F_ASN1_UTCTIME_ADJ 218 +# define ASN1_F_ASN1_UTCTIME_SET 187 +# define ASN1_F_ASN1_VERIFY 137 +# define ASN1_F_B64_READ_ASN1 209 +# define ASN1_F_B64_WRITE_ASN1 210 +# define ASN1_F_BIO_NEW_NDEF 208 +# define ASN1_F_BITSTR_CB 180 +# define ASN1_F_BN_TO_ASN1_ENUMERATED 138 +# define ASN1_F_BN_TO_ASN1_INTEGER 139 +# define ASN1_F_C2I_ASN1_BIT_STRING 189 +# define ASN1_F_C2I_ASN1_INTEGER 194 +# define ASN1_F_C2I_ASN1_OBJECT 196 +# define ASN1_F_COLLECT_DATA 140 +# define ASN1_F_D2I_ASN1_BIT_STRING 141 +# define ASN1_F_D2I_ASN1_BOOLEAN 142 +# define ASN1_F_D2I_ASN1_BYTES 143 +# define ASN1_F_D2I_ASN1_GENERALIZEDTIME 144 +# define ASN1_F_D2I_ASN1_HEADER 145 +# define ASN1_F_D2I_ASN1_INTEGER 146 +# define ASN1_F_D2I_ASN1_OBJECT 147 +# define ASN1_F_D2I_ASN1_SET 148 +# define ASN1_F_D2I_ASN1_TYPE_BYTES 149 +# define ASN1_F_D2I_ASN1_UINTEGER 150 +# define ASN1_F_D2I_ASN1_UTCTIME 151 +# define ASN1_F_D2I_AUTOPRIVATEKEY 207 +# define ASN1_F_D2I_NETSCAPE_RSA 152 +# define ASN1_F_D2I_NETSCAPE_RSA_2 153 +# define ASN1_F_D2I_PRIVATEKEY 154 +# define ASN1_F_D2I_PUBLICKEY 155 +# define ASN1_F_D2I_RSA_NET 200 +# define ASN1_F_D2I_RSA_NET_2 201 +# define ASN1_F_D2I_X509 156 +# define ASN1_F_D2I_X509_CINF 157 +# define ASN1_F_D2I_X509_PKEY 159 +# define ASN1_F_I2D_ASN1_BIO_STREAM 211 +# define ASN1_F_I2D_ASN1_SET 188 +# define ASN1_F_I2D_ASN1_TIME 160 +# define ASN1_F_I2D_DSA_PUBKEY 161 +# define ASN1_F_I2D_EC_PUBKEY 181 +# define ASN1_F_I2D_PRIVATEKEY 163 +# define ASN1_F_I2D_PUBLICKEY 164 +# define ASN1_F_I2D_RSA_NET 162 +# define ASN1_F_I2D_RSA_PUBKEY 165 +# define ASN1_F_LONG_C2I 166 +# define ASN1_F_OID_MODULE_INIT 174 +# define ASN1_F_PARSE_TAGGING 182 +# define ASN1_F_PKCS5_PBE2_SET_IV 167 +# define ASN1_F_PKCS5_PBE_SET 202 +# define ASN1_F_PKCS5_PBE_SET0_ALGOR 215 +# define ASN1_F_PKCS5_PBKDF2_SET 219 +# define ASN1_F_SMIME_READ_ASN1 212 +# define ASN1_F_SMIME_TEXT 213 +# define ASN1_F_X509_CINF_NEW 168 +# define ASN1_F_X509_CRL_ADD0_REVOKED 169 +# define ASN1_F_X509_INFO_NEW 170 +# define ASN1_F_X509_NAME_ENCODE 203 +# define ASN1_F_X509_NAME_EX_D2I 158 +# define ASN1_F_X509_NAME_EX_NEW 171 +# define ASN1_F_X509_NEW 172 +# define ASN1_F_X509_PKEY_NEW 173 + +/* Reason codes. */ +# define ASN1_R_ADDING_OBJECT 171 +# define ASN1_R_ASN1_PARSE_ERROR 203 +# define ASN1_R_ASN1_SIG_PARSE_ERROR 204 +# define ASN1_R_AUX_ERROR 100 +# define ASN1_R_BAD_CLASS 101 +# define ASN1_R_BAD_OBJECT_HEADER 102 +# define ASN1_R_BAD_PASSWORD_READ 103 +# define ASN1_R_BAD_TAG 104 +# define ASN1_R_BMPSTRING_IS_WRONG_LENGTH 214 +# define ASN1_R_BN_LIB 105 +# define ASN1_R_BOOLEAN_IS_WRONG_LENGTH 106 +# define ASN1_R_BUFFER_TOO_SMALL 107 +# define ASN1_R_CIPHER_HAS_NO_OBJECT_IDENTIFIER 108 +# define ASN1_R_CONTEXT_NOT_INITIALISED 217 +# define ASN1_R_DATA_IS_WRONG 109 +# define ASN1_R_DECODE_ERROR 110 +# define ASN1_R_DECODING_ERROR 111 +# define ASN1_R_DEPTH_EXCEEDED 174 +# define ASN1_R_DIGEST_AND_KEY_TYPE_NOT_SUPPORTED 198 +# define ASN1_R_ENCODE_ERROR 112 +# define ASN1_R_ERROR_GETTING_TIME 173 +# define ASN1_R_ERROR_LOADING_SECTION 172 +# define ASN1_R_ERROR_PARSING_SET_ELEMENT 113 +# define ASN1_R_ERROR_SETTING_CIPHER_PARAMS 114 +# define ASN1_R_EXPECTING_AN_INTEGER 115 +# define ASN1_R_EXPECTING_AN_OBJECT 116 +# define ASN1_R_EXPECTING_A_BOOLEAN 117 +# define ASN1_R_EXPECTING_A_TIME 118 +# define ASN1_R_EXPLICIT_LENGTH_MISMATCH 119 +# define ASN1_R_EXPLICIT_TAG_NOT_CONSTRUCTED 120 +# define ASN1_R_FIELD_MISSING 121 +# define ASN1_R_FIRST_NUM_TOO_LARGE 122 +# define ASN1_R_HEADER_TOO_LONG 123 +# define ASN1_R_ILLEGAL_BITSTRING_FORMAT 175 +# define ASN1_R_ILLEGAL_BOOLEAN 176 +# define ASN1_R_ILLEGAL_CHARACTERS 124 +# define ASN1_R_ILLEGAL_FORMAT 177 +# define ASN1_R_ILLEGAL_HEX 178 +# define ASN1_R_ILLEGAL_IMPLICIT_TAG 179 +# define ASN1_R_ILLEGAL_INTEGER 180 +# define ASN1_R_ILLEGAL_NESTED_TAGGING 181 +# define ASN1_R_ILLEGAL_NULL 125 +# define ASN1_R_ILLEGAL_NULL_VALUE 182 +# define ASN1_R_ILLEGAL_OBJECT 183 +# define ASN1_R_ILLEGAL_OPTIONAL_ANY 126 +# define ASN1_R_ILLEGAL_OPTIONS_ON_ITEM_TEMPLATE 170 +# define ASN1_R_ILLEGAL_TAGGED_ANY 127 +# define ASN1_R_ILLEGAL_TIME_VALUE 184 +# define ASN1_R_INTEGER_NOT_ASCII_FORMAT 185 +# define ASN1_R_INTEGER_TOO_LARGE_FOR_LONG 128 +# define ASN1_R_INVALID_BIT_STRING_BITS_LEFT 220 +# define ASN1_R_INVALID_BMPSTRING_LENGTH 129 +# define ASN1_R_INVALID_DIGIT 130 +# define ASN1_R_INVALID_MIME_TYPE 205 +# define ASN1_R_INVALID_MODIFIER 186 +# define ASN1_R_INVALID_NUMBER 187 +# define ASN1_R_INVALID_OBJECT_ENCODING 216 +# define ASN1_R_INVALID_SEPARATOR 131 +# define ASN1_R_INVALID_TIME_FORMAT 132 +# define ASN1_R_INVALID_UNIVERSALSTRING_LENGTH 133 +# define ASN1_R_INVALID_UTF8STRING 134 +# define ASN1_R_IV_TOO_LARGE 135 +# define ASN1_R_LENGTH_ERROR 136 +# define ASN1_R_LIST_ERROR 188 +# define ASN1_R_MIME_NO_CONTENT_TYPE 206 +# define ASN1_R_MIME_PARSE_ERROR 207 +# define ASN1_R_MIME_SIG_PARSE_ERROR 208 +# define ASN1_R_MISSING_EOC 137 +# define ASN1_R_MISSING_SECOND_NUMBER 138 +# define ASN1_R_MISSING_VALUE 189 +# define ASN1_R_MSTRING_NOT_UNIVERSAL 139 +# define ASN1_R_MSTRING_WRONG_TAG 140 +# define ASN1_R_NESTED_ASN1_STRING 197 +# define ASN1_R_NON_HEX_CHARACTERS 141 +# define ASN1_R_NOT_ASCII_FORMAT 190 +# define ASN1_R_NOT_ENOUGH_DATA 142 +# define ASN1_R_NO_CONTENT_TYPE 209 +# define ASN1_R_NO_DEFAULT_DIGEST 201 +# define ASN1_R_NO_MATCHING_CHOICE_TYPE 143 +# define ASN1_R_NO_MULTIPART_BODY_FAILURE 210 +# define ASN1_R_NO_MULTIPART_BOUNDARY 211 +# define ASN1_R_NO_SIG_CONTENT_TYPE 212 +# define ASN1_R_NULL_IS_WRONG_LENGTH 144 +# define ASN1_R_OBJECT_NOT_ASCII_FORMAT 191 +# define ASN1_R_ODD_NUMBER_OF_CHARS 145 +# define ASN1_R_PRIVATE_KEY_HEADER_MISSING 146 +# define ASN1_R_SECOND_NUMBER_TOO_LARGE 147 +# define ASN1_R_SEQUENCE_LENGTH_MISMATCH 148 +# define ASN1_R_SEQUENCE_NOT_CONSTRUCTED 149 +# define ASN1_R_SEQUENCE_OR_SET_NEEDS_CONFIG 192 +# define ASN1_R_SHORT_LINE 150 +# define ASN1_R_SIG_INVALID_MIME_TYPE 213 +# define ASN1_R_STREAMING_NOT_SUPPORTED 202 +# define ASN1_R_STRING_TOO_LONG 151 +# define ASN1_R_STRING_TOO_SHORT 152 +# define ASN1_R_TAG_VALUE_TOO_HIGH 153 +# define ASN1_R_THE_ASN1_OBJECT_IDENTIFIER_IS_NOT_KNOWN_FOR_THIS_MD 154 +# define ASN1_R_TIME_NOT_ASCII_FORMAT 193 +# define ASN1_R_TOO_LONG 155 +# define ASN1_R_TYPE_NOT_CONSTRUCTED 156 +# define ASN1_R_TYPE_NOT_PRIMITIVE 218 +# define ASN1_R_UNABLE_TO_DECODE_RSA_KEY 157 +# define ASN1_R_UNABLE_TO_DECODE_RSA_PRIVATE_KEY 158 +# define ASN1_R_UNEXPECTED_EOC 159 +# define ASN1_R_UNIVERSALSTRING_IS_WRONG_LENGTH 215 +# define ASN1_R_UNKNOWN_FORMAT 160 +# define ASN1_R_UNKNOWN_MESSAGE_DIGEST_ALGORITHM 161 +# define ASN1_R_UNKNOWN_OBJECT_TYPE 162 +# define ASN1_R_UNKNOWN_PUBLIC_KEY_TYPE 163 +# define ASN1_R_UNKNOWN_SIGNATURE_ALGORITHM 199 +# define ASN1_R_UNKNOWN_TAG 194 +# define ASN1_R_UNKOWN_FORMAT 195 +# define ASN1_R_UNSUPPORTED_ANY_DEFINED_BY_TYPE 164 +# define ASN1_R_UNSUPPORTED_CIPHER 165 +# define ASN1_R_UNSUPPORTED_ENCRYPTION_ALGORITHM 166 +# define ASN1_R_UNSUPPORTED_PUBLIC_KEY_TYPE 167 +# define ASN1_R_UNSUPPORTED_TYPE 196 +# define ASN1_R_WRONG_PUBLIC_KEY_TYPE 200 +# define ASN1_R_WRONG_TAG 168 +# define ASN1_R_WRONG_TYPE 169 + +#ifdef __cplusplus +} +#endif +#endif diff --git a/ext/openssl-win64/inc32/openssl/bio.h b/ext/openssl-win64/inc32/openssl/bio.h new file mode 100644 index 00000000..60083bfd --- /dev/null +++ b/ext/openssl-win64/inc32/openssl/bio.h @@ -0,0 +1,878 @@ +/* crypto/bio/bio.h */ +/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) + * All rights reserved. + * + * This package is an SSL implementation written + * by Eric Young (eay@cryptsoft.com). + * The implementation was written so as to conform with Netscapes SSL. + * + * This library is free for commercial and non-commercial use as long as + * the following conditions are aheared to. The following conditions + * apply to all code found in this distribution, be it the RC4, RSA, + * lhash, DES, etc., code; not just the SSL code. The SSL documentation + * included with this distribution is covered by the same copyright terms + * except that the holder is Tim Hudson (tjh@cryptsoft.com). + * + * Copyright remains Eric Young's, and as such any Copyright notices in + * the code are not to be removed. + * If this package is used in a product, Eric Young should be given attribution + * as the author of the parts of the library used. + * This can be in the form of a textual message at program startup or + * in documentation (online or textual) provided with the package. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * "This product includes cryptographic software written by + * Eric Young (eay@cryptsoft.com)" + * The word 'cryptographic' can be left out if the rouines from the library + * being used are not cryptographic related :-). + * 4. If you include any Windows specific code (or a derivative thereof) from + * the apps directory (application code) you must include an acknowledgement: + * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" + * + * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * The licence and distribution terms for any publically available version or + * derivative of this code cannot be changed. i.e. this code cannot simply be + * copied and put under another distribution licence + * [including the GNU Public Licence.] + */ + +#ifndef HEADER_BIO_H +# define HEADER_BIO_H + +# include + +# ifndef OPENSSL_NO_FP_API +# include +# endif +# include + +# include + +# ifndef OPENSSL_NO_SCTP +# ifndef OPENSSL_SYS_VMS +# include +# else +# include +# endif +# endif + +#ifdef __cplusplus +extern "C" { +#endif + +/* These are the 'types' of BIOs */ +# define BIO_TYPE_NONE 0 +# define BIO_TYPE_MEM (1|0x0400) +# define BIO_TYPE_FILE (2|0x0400) + +# define BIO_TYPE_FD (4|0x0400|0x0100) +# define BIO_TYPE_SOCKET (5|0x0400|0x0100) +# define BIO_TYPE_NULL (6|0x0400) +# define BIO_TYPE_SSL (7|0x0200) +# define BIO_TYPE_MD (8|0x0200)/* passive filter */ +# define BIO_TYPE_BUFFER (9|0x0200)/* filter */ +# define BIO_TYPE_CIPHER (10|0x0200)/* filter */ +# define BIO_TYPE_BASE64 (11|0x0200)/* filter */ +# define BIO_TYPE_CONNECT (12|0x0400|0x0100)/* socket - connect */ +# define BIO_TYPE_ACCEPT (13|0x0400|0x0100)/* socket for accept */ +# define BIO_TYPE_PROXY_CLIENT (14|0x0200)/* client proxy BIO */ +# define BIO_TYPE_PROXY_SERVER (15|0x0200)/* server proxy BIO */ +# define BIO_TYPE_NBIO_TEST (16|0x0200)/* server proxy BIO */ +# define BIO_TYPE_NULL_FILTER (17|0x0200) +# define BIO_TYPE_BER (18|0x0200)/* BER -> bin filter */ +# define BIO_TYPE_BIO (19|0x0400)/* (half a) BIO pair */ +# define BIO_TYPE_LINEBUFFER (20|0x0200)/* filter */ +# define BIO_TYPE_DGRAM (21|0x0400|0x0100) +# ifndef OPENSSL_NO_SCTP +# define BIO_TYPE_DGRAM_SCTP (24|0x0400|0x0100) +# endif +# define BIO_TYPE_ASN1 (22|0x0200)/* filter */ +# define BIO_TYPE_COMP (23|0x0200)/* filter */ + +# define BIO_TYPE_DESCRIPTOR 0x0100/* socket, fd, connect or accept */ +# define BIO_TYPE_FILTER 0x0200 +# define BIO_TYPE_SOURCE_SINK 0x0400 + +/* + * BIO_FILENAME_READ|BIO_CLOSE to open or close on free. + * BIO_set_fp(in,stdin,BIO_NOCLOSE); + */ +# define BIO_NOCLOSE 0x00 +# define BIO_CLOSE 0x01 + +/* + * These are used in the following macros and are passed to BIO_ctrl() + */ +# define BIO_CTRL_RESET 1/* opt - rewind/zero etc */ +# define BIO_CTRL_EOF 2/* opt - are we at the eof */ +# define BIO_CTRL_INFO 3/* opt - extra tit-bits */ +# define BIO_CTRL_SET 4/* man - set the 'IO' type */ +# define BIO_CTRL_GET 5/* man - get the 'IO' type */ +# define BIO_CTRL_PUSH 6/* opt - internal, used to signify change */ +# define BIO_CTRL_POP 7/* opt - internal, used to signify change */ +# define BIO_CTRL_GET_CLOSE 8/* man - set the 'close' on free */ +# define BIO_CTRL_SET_CLOSE 9/* man - set the 'close' on free */ +# define BIO_CTRL_PENDING 10/* opt - is their more data buffered */ +# define BIO_CTRL_FLUSH 11/* opt - 'flush' buffered output */ +# define BIO_CTRL_DUP 12/* man - extra stuff for 'duped' BIO */ +# define BIO_CTRL_WPENDING 13/* opt - number of bytes still to write */ +/* callback is int cb(BIO *bio,state,ret); */ +# define BIO_CTRL_SET_CALLBACK 14/* opt - set callback function */ +# define BIO_CTRL_GET_CALLBACK 15/* opt - set callback function */ + +# define BIO_CTRL_SET_FILENAME 30/* BIO_s_file special */ + +/* dgram BIO stuff */ +# define BIO_CTRL_DGRAM_CONNECT 31/* BIO dgram special */ +# define BIO_CTRL_DGRAM_SET_CONNECTED 32/* allow for an externally connected + * socket to be passed in */ +# define BIO_CTRL_DGRAM_SET_RECV_TIMEOUT 33/* setsockopt, essentially */ +# define BIO_CTRL_DGRAM_GET_RECV_TIMEOUT 34/* getsockopt, essentially */ +# define BIO_CTRL_DGRAM_SET_SEND_TIMEOUT 35/* setsockopt, essentially */ +# define BIO_CTRL_DGRAM_GET_SEND_TIMEOUT 36/* getsockopt, essentially */ + +# define BIO_CTRL_DGRAM_GET_RECV_TIMER_EXP 37/* flag whether the last */ +# define BIO_CTRL_DGRAM_GET_SEND_TIMER_EXP 38/* I/O operation tiemd out */ + +/* #ifdef IP_MTU_DISCOVER */ +# define BIO_CTRL_DGRAM_MTU_DISCOVER 39/* set DF bit on egress packets */ +/* #endif */ + +# define BIO_CTRL_DGRAM_QUERY_MTU 40/* as kernel for current MTU */ +# define BIO_CTRL_DGRAM_GET_FALLBACK_MTU 47 +# define BIO_CTRL_DGRAM_GET_MTU 41/* get cached value for MTU */ +# define BIO_CTRL_DGRAM_SET_MTU 42/* set cached value for MTU. + * want to use this if asking + * the kernel fails */ + +# define BIO_CTRL_DGRAM_MTU_EXCEEDED 43/* check whether the MTU was + * exceed in the previous write + * operation */ + +# define BIO_CTRL_DGRAM_GET_PEER 46 +# define BIO_CTRL_DGRAM_SET_PEER 44/* Destination for the data */ + +# define BIO_CTRL_DGRAM_SET_NEXT_TIMEOUT 45/* Next DTLS handshake timeout + * to adjust socket timeouts */ +# define BIO_CTRL_DGRAM_SET_DONT_FRAG 48 + +# define BIO_CTRL_DGRAM_GET_MTU_OVERHEAD 49 + +# ifndef OPENSSL_NO_SCTP +/* SCTP stuff */ +# define BIO_CTRL_DGRAM_SCTP_SET_IN_HANDSHAKE 50 +# define BIO_CTRL_DGRAM_SCTP_ADD_AUTH_KEY 51 +# define BIO_CTRL_DGRAM_SCTP_NEXT_AUTH_KEY 52 +# define BIO_CTRL_DGRAM_SCTP_AUTH_CCS_RCVD 53 +# define BIO_CTRL_DGRAM_SCTP_GET_SNDINFO 60 +# define BIO_CTRL_DGRAM_SCTP_SET_SNDINFO 61 +# define BIO_CTRL_DGRAM_SCTP_GET_RCVINFO 62 +# define BIO_CTRL_DGRAM_SCTP_SET_RCVINFO 63 +# define BIO_CTRL_DGRAM_SCTP_GET_PRINFO 64 +# define BIO_CTRL_DGRAM_SCTP_SET_PRINFO 65 +# define BIO_CTRL_DGRAM_SCTP_SAVE_SHUTDOWN 70 +# endif + +/* modifiers */ +# define BIO_FP_READ 0x02 +# define BIO_FP_WRITE 0x04 +# define BIO_FP_APPEND 0x08 +# define BIO_FP_TEXT 0x10 + +# define BIO_FLAGS_READ 0x01 +# define BIO_FLAGS_WRITE 0x02 +# define BIO_FLAGS_IO_SPECIAL 0x04 +# define BIO_FLAGS_RWS (BIO_FLAGS_READ|BIO_FLAGS_WRITE|BIO_FLAGS_IO_SPECIAL) +# define BIO_FLAGS_SHOULD_RETRY 0x08 +# ifndef BIO_FLAGS_UPLINK +/* + * "UPLINK" flag denotes file descriptors provided by application. It + * defaults to 0, as most platforms don't require UPLINK interface. + */ +# define BIO_FLAGS_UPLINK 0 +# endif + +/* Used in BIO_gethostbyname() */ +# define BIO_GHBN_CTRL_HITS 1 +# define BIO_GHBN_CTRL_MISSES 2 +# define BIO_GHBN_CTRL_CACHE_SIZE 3 +# define BIO_GHBN_CTRL_GET_ENTRY 4 +# define BIO_GHBN_CTRL_FLUSH 5 + +/* Mostly used in the SSL BIO */ +/*- + * Not used anymore + * #define BIO_FLAGS_PROTOCOL_DELAYED_READ 0x10 + * #define BIO_FLAGS_PROTOCOL_DELAYED_WRITE 0x20 + * #define BIO_FLAGS_PROTOCOL_STARTUP 0x40 + */ + +# define BIO_FLAGS_BASE64_NO_NL 0x100 + +/* + * This is used with memory BIOs: it means we shouldn't free up or change the + * data in any way. + */ +# define BIO_FLAGS_MEM_RDONLY 0x200 + +typedef struct bio_st BIO; + +void BIO_set_flags(BIO *b, int flags); +int BIO_test_flags(const BIO *b, int flags); +void BIO_clear_flags(BIO *b, int flags); + +# define BIO_get_flags(b) BIO_test_flags(b, ~(0x0)) +# define BIO_set_retry_special(b) \ + BIO_set_flags(b, (BIO_FLAGS_IO_SPECIAL|BIO_FLAGS_SHOULD_RETRY)) +# define BIO_set_retry_read(b) \ + BIO_set_flags(b, (BIO_FLAGS_READ|BIO_FLAGS_SHOULD_RETRY)) +# define BIO_set_retry_write(b) \ + BIO_set_flags(b, (BIO_FLAGS_WRITE|BIO_FLAGS_SHOULD_RETRY)) + +/* These are normally used internally in BIOs */ +# define BIO_clear_retry_flags(b) \ + BIO_clear_flags(b, (BIO_FLAGS_RWS|BIO_FLAGS_SHOULD_RETRY)) +# define BIO_get_retry_flags(b) \ + BIO_test_flags(b, (BIO_FLAGS_RWS|BIO_FLAGS_SHOULD_RETRY)) + +/* These should be used by the application to tell why we should retry */ +# define BIO_should_read(a) BIO_test_flags(a, BIO_FLAGS_READ) +# define BIO_should_write(a) BIO_test_flags(a, BIO_FLAGS_WRITE) +# define BIO_should_io_special(a) BIO_test_flags(a, BIO_FLAGS_IO_SPECIAL) +# define BIO_retry_type(a) BIO_test_flags(a, BIO_FLAGS_RWS) +# define BIO_should_retry(a) BIO_test_flags(a, BIO_FLAGS_SHOULD_RETRY) + +/* + * The next three are used in conjunction with the BIO_should_io_special() + * condition. After this returns true, BIO *BIO_get_retry_BIO(BIO *bio, int + * *reason); will walk the BIO stack and return the 'reason' for the special + * and the offending BIO. Given a BIO, BIO_get_retry_reason(bio) will return + * the code. + */ +/* + * Returned from the SSL bio when the certificate retrieval code had an error + */ +# define BIO_RR_SSL_X509_LOOKUP 0x01 +/* Returned from the connect BIO when a connect would have blocked */ +# define BIO_RR_CONNECT 0x02 +/* Returned from the accept BIO when an accept would have blocked */ +# define BIO_RR_ACCEPT 0x03 + +/* These are passed by the BIO callback */ +# define BIO_CB_FREE 0x01 +# define BIO_CB_READ 0x02 +# define BIO_CB_WRITE 0x03 +# define BIO_CB_PUTS 0x04 +# define BIO_CB_GETS 0x05 +# define BIO_CB_CTRL 0x06 + +/* + * The callback is called before and after the underling operation, The + * BIO_CB_RETURN flag indicates if it is after the call + */ +# define BIO_CB_RETURN 0x80 +# define BIO_CB_return(a) ((a)|BIO_CB_RETURN)) +# define BIO_cb_pre(a) (!((a)&BIO_CB_RETURN)) +# define BIO_cb_post(a) ((a)&BIO_CB_RETURN) + +long (*BIO_get_callback(const BIO *b)) (struct bio_st *, int, const char *, + int, long, long); +void BIO_set_callback(BIO *b, + long (*callback) (struct bio_st *, int, const char *, + int, long, long)); +char *BIO_get_callback_arg(const BIO *b); +void BIO_set_callback_arg(BIO *b, char *arg); + +const char *BIO_method_name(const BIO *b); +int BIO_method_type(const BIO *b); + +typedef void bio_info_cb (struct bio_st *, int, const char *, int, long, + long); + +typedef struct bio_method_st { + int type; + const char *name; + int (*bwrite) (BIO *, const char *, int); + int (*bread) (BIO *, char *, int); + int (*bputs) (BIO *, const char *); + int (*bgets) (BIO *, char *, int); + long (*ctrl) (BIO *, int, long, void *); + int (*create) (BIO *); + int (*destroy) (BIO *); + long (*callback_ctrl) (BIO *, int, bio_info_cb *); +} BIO_METHOD; + +struct bio_st { + BIO_METHOD *method; + /* bio, mode, argp, argi, argl, ret */ + long (*callback) (struct bio_st *, int, const char *, int, long, long); + char *cb_arg; /* first argument for the callback */ + int init; + int shutdown; + int flags; /* extra storage */ + int retry_reason; + int num; + void *ptr; + struct bio_st *next_bio; /* used by filter BIOs */ + struct bio_st *prev_bio; /* used by filter BIOs */ + int references; + unsigned long num_read; + unsigned long num_write; + CRYPTO_EX_DATA ex_data; +}; + +DECLARE_STACK_OF(BIO) + +typedef struct bio_f_buffer_ctx_struct { + /*- + * Buffers are setup like this: + * + * <---------------------- size -----------------------> + * +---------------------------------------------------+ + * | consumed | remaining | free space | + * +---------------------------------------------------+ + * <-- off --><------- len -------> + */ + /*- BIO *bio; *//* + * this is now in the BIO struct + */ + int ibuf_size; /* how big is the input buffer */ + int obuf_size; /* how big is the output buffer */ + char *ibuf; /* the char array */ + int ibuf_len; /* how many bytes are in it */ + int ibuf_off; /* write/read offset */ + char *obuf; /* the char array */ + int obuf_len; /* how many bytes are in it */ + int obuf_off; /* write/read offset */ +} BIO_F_BUFFER_CTX; + +/* Prefix and suffix callback in ASN1 BIO */ +typedef int asn1_ps_func (BIO *b, unsigned char **pbuf, int *plen, + void *parg); + +# ifndef OPENSSL_NO_SCTP +/* SCTP parameter structs */ +struct bio_dgram_sctp_sndinfo { + uint16_t snd_sid; + uint16_t snd_flags; + uint32_t snd_ppid; + uint32_t snd_context; +}; + +struct bio_dgram_sctp_rcvinfo { + uint16_t rcv_sid; + uint16_t rcv_ssn; + uint16_t rcv_flags; + uint32_t rcv_ppid; + uint32_t rcv_tsn; + uint32_t rcv_cumtsn; + uint32_t rcv_context; +}; + +struct bio_dgram_sctp_prinfo { + uint16_t pr_policy; + uint32_t pr_value; +}; +# endif + +/* connect BIO stuff */ +# define BIO_CONN_S_BEFORE 1 +# define BIO_CONN_S_GET_IP 2 +# define BIO_CONN_S_GET_PORT 3 +# define BIO_CONN_S_CREATE_SOCKET 4 +# define BIO_CONN_S_CONNECT 5 +# define BIO_CONN_S_OK 6 +# define BIO_CONN_S_BLOCKED_CONNECT 7 +# define BIO_CONN_S_NBIO 8 +/* + * #define BIO_CONN_get_param_hostname BIO_ctrl + */ + +# define BIO_C_SET_CONNECT 100 +# define BIO_C_DO_STATE_MACHINE 101 +# define BIO_C_SET_NBIO 102 +# define BIO_C_SET_PROXY_PARAM 103 +# define BIO_C_SET_FD 104 +# define BIO_C_GET_FD 105 +# define BIO_C_SET_FILE_PTR 106 +# define BIO_C_GET_FILE_PTR 107 +# define BIO_C_SET_FILENAME 108 +# define BIO_C_SET_SSL 109 +# define BIO_C_GET_SSL 110 +# define BIO_C_SET_MD 111 +# define BIO_C_GET_MD 112 +# define BIO_C_GET_CIPHER_STATUS 113 +# define BIO_C_SET_BUF_MEM 114 +# define BIO_C_GET_BUF_MEM_PTR 115 +# define BIO_C_GET_BUFF_NUM_LINES 116 +# define BIO_C_SET_BUFF_SIZE 117 +# define BIO_C_SET_ACCEPT 118 +# define BIO_C_SSL_MODE 119 +# define BIO_C_GET_MD_CTX 120 +# define BIO_C_GET_PROXY_PARAM 121 +# define BIO_C_SET_BUFF_READ_DATA 122/* data to read first */ +# define BIO_C_GET_CONNECT 123 +# define BIO_C_GET_ACCEPT 124 +# define BIO_C_SET_SSL_RENEGOTIATE_BYTES 125 +# define BIO_C_GET_SSL_NUM_RENEGOTIATES 126 +# define BIO_C_SET_SSL_RENEGOTIATE_TIMEOUT 127 +# define BIO_C_FILE_SEEK 128 +# define BIO_C_GET_CIPHER_CTX 129 +# define BIO_C_SET_BUF_MEM_EOF_RETURN 130/* return end of input + * value */ +# define BIO_C_SET_BIND_MODE 131 +# define BIO_C_GET_BIND_MODE 132 +# define BIO_C_FILE_TELL 133 +# define BIO_C_GET_SOCKS 134 +# define BIO_C_SET_SOCKS 135 + +# define BIO_C_SET_WRITE_BUF_SIZE 136/* for BIO_s_bio */ +# define BIO_C_GET_WRITE_BUF_SIZE 137 +# define BIO_C_MAKE_BIO_PAIR 138 +# define BIO_C_DESTROY_BIO_PAIR 139 +# define BIO_C_GET_WRITE_GUARANTEE 140 +# define BIO_C_GET_READ_REQUEST 141 +# define BIO_C_SHUTDOWN_WR 142 +# define BIO_C_NREAD0 143 +# define BIO_C_NREAD 144 +# define BIO_C_NWRITE0 145 +# define BIO_C_NWRITE 146 +# define BIO_C_RESET_READ_REQUEST 147 +# define BIO_C_SET_MD_CTX 148 + +# define BIO_C_SET_PREFIX 149 +# define BIO_C_GET_PREFIX 150 +# define BIO_C_SET_SUFFIX 151 +# define BIO_C_GET_SUFFIX 152 + +# define BIO_C_SET_EX_ARG 153 +# define BIO_C_GET_EX_ARG 154 + +# define BIO_set_app_data(s,arg) BIO_set_ex_data(s,0,arg) +# define BIO_get_app_data(s) BIO_get_ex_data(s,0) + +/* BIO_s_connect() and BIO_s_socks4a_connect() */ +# define BIO_set_conn_hostname(b,name) BIO_ctrl(b,BIO_C_SET_CONNECT,0,(char *)name) +# define BIO_set_conn_port(b,port) BIO_ctrl(b,BIO_C_SET_CONNECT,1,(char *)port) +# define BIO_set_conn_ip(b,ip) BIO_ctrl(b,BIO_C_SET_CONNECT,2,(char *)ip) +# define BIO_set_conn_int_port(b,port) BIO_ctrl(b,BIO_C_SET_CONNECT,3,(char *)port) +# define BIO_get_conn_hostname(b) BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,0) +# define BIO_get_conn_port(b) BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,1) +# define BIO_get_conn_ip(b) BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,2) +# define BIO_get_conn_int_port(b) BIO_int_ctrl(b,BIO_C_GET_CONNECT,3,0) + +# define BIO_set_nbio(b,n) BIO_ctrl(b,BIO_C_SET_NBIO,(n),NULL) + +/* BIO_s_accept_socket() */ +# define BIO_set_accept_port(b,name) BIO_ctrl(b,BIO_C_SET_ACCEPT,0,(char *)name) +# define BIO_get_accept_port(b) BIO_ptr_ctrl(b,BIO_C_GET_ACCEPT,0) +/* #define BIO_set_nbio(b,n) BIO_ctrl(b,BIO_C_SET_NBIO,(n),NULL) */ +# define BIO_set_nbio_accept(b,n) BIO_ctrl(b,BIO_C_SET_ACCEPT,1,(n)?(void *)"a":NULL) +# define BIO_set_accept_bios(b,bio) BIO_ctrl(b,BIO_C_SET_ACCEPT,2,(char *)bio) + +# define BIO_BIND_NORMAL 0 +# define BIO_BIND_REUSEADDR_IF_UNUSED 1 +# define BIO_BIND_REUSEADDR 2 +# define BIO_set_bind_mode(b,mode) BIO_ctrl(b,BIO_C_SET_BIND_MODE,mode,NULL) +# define BIO_get_bind_mode(b,mode) BIO_ctrl(b,BIO_C_GET_BIND_MODE,0,NULL) + +# define BIO_do_connect(b) BIO_do_handshake(b) +# define BIO_do_accept(b) BIO_do_handshake(b) +# define BIO_do_handshake(b) BIO_ctrl(b,BIO_C_DO_STATE_MACHINE,0,NULL) + +/* BIO_s_proxy_client() */ +# define BIO_set_url(b,url) BIO_ctrl(b,BIO_C_SET_PROXY_PARAM,0,(char *)(url)) +# define BIO_set_proxies(b,p) BIO_ctrl(b,BIO_C_SET_PROXY_PARAM,1,(char *)(p)) +/* BIO_set_nbio(b,n) */ +# define BIO_set_filter_bio(b,s) BIO_ctrl(b,BIO_C_SET_PROXY_PARAM,2,(char *)(s)) +/* BIO *BIO_get_filter_bio(BIO *bio); */ +# define BIO_set_proxy_cb(b,cb) BIO_callback_ctrl(b,BIO_C_SET_PROXY_PARAM,3,(void *(*cb)())) +# define BIO_set_proxy_header(b,sk) BIO_ctrl(b,BIO_C_SET_PROXY_PARAM,4,(char *)sk) +# define BIO_set_no_connect_return(b,bool) BIO_int_ctrl(b,BIO_C_SET_PROXY_PARAM,5,bool) + +# define BIO_get_proxy_header(b,skp) BIO_ctrl(b,BIO_C_GET_PROXY_PARAM,0,(char *)skp) +# define BIO_get_proxies(b,pxy_p) BIO_ctrl(b,BIO_C_GET_PROXY_PARAM,1,(char *)(pxy_p)) +# define BIO_get_url(b,url) BIO_ctrl(b,BIO_C_GET_PROXY_PARAM,2,(char *)(url)) +# define BIO_get_no_connect_return(b) BIO_ctrl(b,BIO_C_GET_PROXY_PARAM,5,NULL) + +# define BIO_set_fd(b,fd,c) BIO_int_ctrl(b,BIO_C_SET_FD,c,fd) +# define BIO_get_fd(b,c) BIO_ctrl(b,BIO_C_GET_FD,0,(char *)c) + +# define BIO_set_fp(b,fp,c) BIO_ctrl(b,BIO_C_SET_FILE_PTR,c,(char *)fp) +# define BIO_get_fp(b,fpp) BIO_ctrl(b,BIO_C_GET_FILE_PTR,0,(char *)fpp) + +# define BIO_seek(b,ofs) (int)BIO_ctrl(b,BIO_C_FILE_SEEK,ofs,NULL) +# define BIO_tell(b) (int)BIO_ctrl(b,BIO_C_FILE_TELL,0,NULL) + +/* + * name is cast to lose const, but might be better to route through a + * function so we can do it safely + */ +# ifdef CONST_STRICT +/* + * If you are wondering why this isn't defined, its because CONST_STRICT is + * purely a compile-time kludge to allow const to be checked. + */ +int BIO_read_filename(BIO *b, const char *name); +# else +# define BIO_read_filename(b,name) BIO_ctrl(b,BIO_C_SET_FILENAME, \ + BIO_CLOSE|BIO_FP_READ,(char *)name) +# endif +# define BIO_write_filename(b,name) BIO_ctrl(b,BIO_C_SET_FILENAME, \ + BIO_CLOSE|BIO_FP_WRITE,name) +# define BIO_append_filename(b,name) BIO_ctrl(b,BIO_C_SET_FILENAME, \ + BIO_CLOSE|BIO_FP_APPEND,name) +# define BIO_rw_filename(b,name) BIO_ctrl(b,BIO_C_SET_FILENAME, \ + BIO_CLOSE|BIO_FP_READ|BIO_FP_WRITE,name) + +/* + * WARNING WARNING, this ups the reference count on the read bio of the SSL + * structure. This is because the ssl read BIO is now pointed to by the + * next_bio field in the bio. So when you free the BIO, make sure you are + * doing a BIO_free_all() to catch the underlying BIO. + */ +# define BIO_set_ssl(b,ssl,c) BIO_ctrl(b,BIO_C_SET_SSL,c,(char *)ssl) +# define BIO_get_ssl(b,sslp) BIO_ctrl(b,BIO_C_GET_SSL,0,(char *)sslp) +# define BIO_set_ssl_mode(b,client) BIO_ctrl(b,BIO_C_SSL_MODE,client,NULL) +# define BIO_set_ssl_renegotiate_bytes(b,num) \ + BIO_ctrl(b,BIO_C_SET_SSL_RENEGOTIATE_BYTES,num,NULL); +# define BIO_get_num_renegotiates(b) \ + BIO_ctrl(b,BIO_C_GET_SSL_NUM_RENEGOTIATES,0,NULL); +# define BIO_set_ssl_renegotiate_timeout(b,seconds) \ + BIO_ctrl(b,BIO_C_SET_SSL_RENEGOTIATE_TIMEOUT,seconds,NULL); + +/* defined in evp.h */ +/* #define BIO_set_md(b,md) BIO_ctrl(b,BIO_C_SET_MD,1,(char *)md) */ + +# define BIO_get_mem_data(b,pp) BIO_ctrl(b,BIO_CTRL_INFO,0,(char *)pp) +# define BIO_set_mem_buf(b,bm,c) BIO_ctrl(b,BIO_C_SET_BUF_MEM,c,(char *)bm) +# define BIO_get_mem_ptr(b,pp) BIO_ctrl(b,BIO_C_GET_BUF_MEM_PTR,0,(char *)pp) +# define BIO_set_mem_eof_return(b,v) \ + BIO_ctrl(b,BIO_C_SET_BUF_MEM_EOF_RETURN,v,NULL) + +/* For the BIO_f_buffer() type */ +# define BIO_get_buffer_num_lines(b) BIO_ctrl(b,BIO_C_GET_BUFF_NUM_LINES,0,NULL) +# define BIO_set_buffer_size(b,size) BIO_ctrl(b,BIO_C_SET_BUFF_SIZE,size,NULL) +# define BIO_set_read_buffer_size(b,size) BIO_int_ctrl(b,BIO_C_SET_BUFF_SIZE,size,0) +# define BIO_set_write_buffer_size(b,size) BIO_int_ctrl(b,BIO_C_SET_BUFF_SIZE,size,1) +# define BIO_set_buffer_read_data(b,buf,num) BIO_ctrl(b,BIO_C_SET_BUFF_READ_DATA,num,buf) + +/* Don't use the next one unless you know what you are doing :-) */ +# define BIO_dup_state(b,ret) BIO_ctrl(b,BIO_CTRL_DUP,0,(char *)(ret)) + +# define BIO_reset(b) (int)BIO_ctrl(b,BIO_CTRL_RESET,0,NULL) +# define BIO_eof(b) (int)BIO_ctrl(b,BIO_CTRL_EOF,0,NULL) +# define BIO_set_close(b,c) (int)BIO_ctrl(b,BIO_CTRL_SET_CLOSE,(c),NULL) +# define BIO_get_close(b) (int)BIO_ctrl(b,BIO_CTRL_GET_CLOSE,0,NULL) +# define BIO_pending(b) (int)BIO_ctrl(b,BIO_CTRL_PENDING,0,NULL) +# define BIO_wpending(b) (int)BIO_ctrl(b,BIO_CTRL_WPENDING,0,NULL) +/* ...pending macros have inappropriate return type */ +size_t BIO_ctrl_pending(BIO *b); +size_t BIO_ctrl_wpending(BIO *b); +# define BIO_flush(b) (int)BIO_ctrl(b,BIO_CTRL_FLUSH,0,NULL) +# define BIO_get_info_callback(b,cbp) (int)BIO_ctrl(b,BIO_CTRL_GET_CALLBACK,0, \ + cbp) +# define BIO_set_info_callback(b,cb) (int)BIO_callback_ctrl(b,BIO_CTRL_SET_CALLBACK,cb) + +/* For the BIO_f_buffer() type */ +# define BIO_buffer_get_num_lines(b) BIO_ctrl(b,BIO_CTRL_GET,0,NULL) + +/* For BIO_s_bio() */ +# define BIO_set_write_buf_size(b,size) (int)BIO_ctrl(b,BIO_C_SET_WRITE_BUF_SIZE,size,NULL) +# define BIO_get_write_buf_size(b,size) (size_t)BIO_ctrl(b,BIO_C_GET_WRITE_BUF_SIZE,size,NULL) +# define BIO_make_bio_pair(b1,b2) (int)BIO_ctrl(b1,BIO_C_MAKE_BIO_PAIR,0,b2) +# define BIO_destroy_bio_pair(b) (int)BIO_ctrl(b,BIO_C_DESTROY_BIO_PAIR,0,NULL) +# define BIO_shutdown_wr(b) (int)BIO_ctrl(b, BIO_C_SHUTDOWN_WR, 0, NULL) +/* macros with inappropriate type -- but ...pending macros use int too: */ +# define BIO_get_write_guarantee(b) (int)BIO_ctrl(b,BIO_C_GET_WRITE_GUARANTEE,0,NULL) +# define BIO_get_read_request(b) (int)BIO_ctrl(b,BIO_C_GET_READ_REQUEST,0,NULL) +size_t BIO_ctrl_get_write_guarantee(BIO *b); +size_t BIO_ctrl_get_read_request(BIO *b); +int BIO_ctrl_reset_read_request(BIO *b); + +/* ctrl macros for dgram */ +# define BIO_ctrl_dgram_connect(b,peer) \ + (int)BIO_ctrl(b,BIO_CTRL_DGRAM_CONNECT,0, (char *)peer) +# define BIO_ctrl_set_connected(b, state, peer) \ + (int)BIO_ctrl(b, BIO_CTRL_DGRAM_SET_CONNECTED, state, (char *)peer) +# define BIO_dgram_recv_timedout(b) \ + (int)BIO_ctrl(b, BIO_CTRL_DGRAM_GET_RECV_TIMER_EXP, 0, NULL) +# define BIO_dgram_send_timedout(b) \ + (int)BIO_ctrl(b, BIO_CTRL_DGRAM_GET_SEND_TIMER_EXP, 0, NULL) +# define BIO_dgram_get_peer(b,peer) \ + (int)BIO_ctrl(b, BIO_CTRL_DGRAM_GET_PEER, 0, (char *)peer) +# define BIO_dgram_set_peer(b,peer) \ + (int)BIO_ctrl(b, BIO_CTRL_DGRAM_SET_PEER, 0, (char *)peer) +# define BIO_dgram_get_mtu_overhead(b) \ + (unsigned int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_MTU_OVERHEAD, 0, NULL) + +/* These two aren't currently implemented */ +/* int BIO_get_ex_num(BIO *bio); */ +/* void BIO_set_ex_free_func(BIO *bio,int idx,void (*cb)()); */ +int BIO_set_ex_data(BIO *bio, int idx, void *data); +void *BIO_get_ex_data(BIO *bio, int idx); +int BIO_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new *new_func, + CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func); +unsigned long BIO_number_read(BIO *bio); +unsigned long BIO_number_written(BIO *bio); + +/* For BIO_f_asn1() */ +int BIO_asn1_set_prefix(BIO *b, asn1_ps_func *prefix, + asn1_ps_func *prefix_free); +int BIO_asn1_get_prefix(BIO *b, asn1_ps_func **pprefix, + asn1_ps_func **pprefix_free); +int BIO_asn1_set_suffix(BIO *b, asn1_ps_func *suffix, + asn1_ps_func *suffix_free); +int BIO_asn1_get_suffix(BIO *b, asn1_ps_func **psuffix, + asn1_ps_func **psuffix_free); + +# ifndef OPENSSL_NO_FP_API +BIO_METHOD *BIO_s_file(void); +BIO *BIO_new_file(const char *filename, const char *mode); +BIO *BIO_new_fp(FILE *stream, int close_flag); +# define BIO_s_file_internal BIO_s_file +# endif +BIO *BIO_new(BIO_METHOD *type); +int BIO_set(BIO *a, BIO_METHOD *type); +int BIO_free(BIO *a); +void BIO_vfree(BIO *a); +int BIO_read(BIO *b, void *data, int len); +int BIO_gets(BIO *bp, char *buf, int size); +int BIO_write(BIO *b, const void *data, int len); +int BIO_puts(BIO *bp, const char *buf); +int BIO_indent(BIO *b, int indent, int max); +long BIO_ctrl(BIO *bp, int cmd, long larg, void *parg); +long BIO_callback_ctrl(BIO *b, int cmd, + void (*fp) (struct bio_st *, int, const char *, int, + long, long)); +char *BIO_ptr_ctrl(BIO *bp, int cmd, long larg); +long BIO_int_ctrl(BIO *bp, int cmd, long larg, int iarg); +BIO *BIO_push(BIO *b, BIO *append); +BIO *BIO_pop(BIO *b); +void BIO_free_all(BIO *a); +BIO *BIO_find_type(BIO *b, int bio_type); +BIO *BIO_next(BIO *b); +BIO *BIO_get_retry_BIO(BIO *bio, int *reason); +int BIO_get_retry_reason(BIO *bio); +BIO *BIO_dup_chain(BIO *in); + +int BIO_nread0(BIO *bio, char **buf); +int BIO_nread(BIO *bio, char **buf, int num); +int BIO_nwrite0(BIO *bio, char **buf); +int BIO_nwrite(BIO *bio, char **buf, int num); + +long BIO_debug_callback(BIO *bio, int cmd, const char *argp, int argi, + long argl, long ret); + +BIO_METHOD *BIO_s_mem(void); +BIO *BIO_new_mem_buf(void *buf, int len); +BIO_METHOD *BIO_s_socket(void); +BIO_METHOD *BIO_s_connect(void); +BIO_METHOD *BIO_s_accept(void); +BIO_METHOD *BIO_s_fd(void); +# ifndef OPENSSL_SYS_OS2 +BIO_METHOD *BIO_s_log(void); +# endif +BIO_METHOD *BIO_s_bio(void); +BIO_METHOD *BIO_s_null(void); +BIO_METHOD *BIO_f_null(void); +BIO_METHOD *BIO_f_buffer(void); +# ifdef OPENSSL_SYS_VMS +BIO_METHOD *BIO_f_linebuffer(void); +# endif +BIO_METHOD *BIO_f_nbio_test(void); +# ifndef OPENSSL_NO_DGRAM +BIO_METHOD *BIO_s_datagram(void); +# ifndef OPENSSL_NO_SCTP +BIO_METHOD *BIO_s_datagram_sctp(void); +# endif +# endif + +/* BIO_METHOD *BIO_f_ber(void); */ + +int BIO_sock_should_retry(int i); +int BIO_sock_non_fatal_error(int error); +int BIO_dgram_non_fatal_error(int error); + +int BIO_fd_should_retry(int i); +int BIO_fd_non_fatal_error(int error); +int BIO_dump_cb(int (*cb) (const void *data, size_t len, void *u), + void *u, const char *s, int len); +int BIO_dump_indent_cb(int (*cb) (const void *data, size_t len, void *u), + void *u, const char *s, int len, int indent); +int BIO_dump(BIO *b, const char *bytes, int len); +int BIO_dump_indent(BIO *b, const char *bytes, int len, int indent); +# ifndef OPENSSL_NO_FP_API +int BIO_dump_fp(FILE *fp, const char *s, int len); +int BIO_dump_indent_fp(FILE *fp, const char *s, int len, int indent); +# endif +int BIO_hex_string(BIO *out, int indent, int width, unsigned char *data, + int datalen); + +struct hostent *BIO_gethostbyname(const char *name); +/*- + * We might want a thread-safe interface too: + * struct hostent *BIO_gethostbyname_r(const char *name, + * struct hostent *result, void *buffer, size_t buflen); + * or something similar (caller allocates a struct hostent, + * pointed to by "result", and additional buffer space for the various + * substructures; if the buffer does not suffice, NULL is returned + * and an appropriate error code is set). + */ +int BIO_sock_error(int sock); +int BIO_socket_ioctl(int fd, long type, void *arg); +int BIO_socket_nbio(int fd, int mode); +int BIO_get_port(const char *str, unsigned short *port_ptr); +int BIO_get_host_ip(const char *str, unsigned char *ip); +int BIO_get_accept_socket(char *host_port, int mode); +int BIO_accept(int sock, char **ip_port); +int BIO_sock_init(void); +void BIO_sock_cleanup(void); +int BIO_set_tcp_ndelay(int sock, int turn_on); + +BIO *BIO_new_socket(int sock, int close_flag); +BIO *BIO_new_dgram(int fd, int close_flag); +# ifndef OPENSSL_NO_SCTP +BIO *BIO_new_dgram_sctp(int fd, int close_flag); +int BIO_dgram_is_sctp(BIO *bio); +int BIO_dgram_sctp_notification_cb(BIO *b, + void (*handle_notifications) (BIO *bio, + void + *context, + void *buf), + void *context); +int BIO_dgram_sctp_wait_for_dry(BIO *b); +int BIO_dgram_sctp_msg_waiting(BIO *b); +# endif +BIO *BIO_new_fd(int fd, int close_flag); +BIO *BIO_new_connect(const char *host_port); +BIO *BIO_new_accept(const char *host_port); + +int BIO_new_bio_pair(BIO **bio1, size_t writebuf1, + BIO **bio2, size_t writebuf2); +/* + * If successful, returns 1 and in *bio1, *bio2 two BIO pair endpoints. + * Otherwise returns 0 and sets *bio1 and *bio2 to NULL. Size 0 uses default + * value. + */ + +void BIO_copy_next_retry(BIO *b); + +/* + * long BIO_ghbn_ctrl(int cmd,int iarg,char *parg); + */ + +# ifdef __GNUC__ +# define __bio_h__attr__ __attribute__ +# else +# define __bio_h__attr__(x) +# endif +int BIO_printf(BIO *bio, const char *format, ...) +__bio_h__attr__((__format__(__printf__, 2, 3))); +int BIO_vprintf(BIO *bio, const char *format, va_list args) +__bio_h__attr__((__format__(__printf__, 2, 0))); +int BIO_snprintf(char *buf, size_t n, const char *format, ...) +__bio_h__attr__((__format__(__printf__, 3, 4))); +int BIO_vsnprintf(char *buf, size_t n, const char *format, va_list args) +__bio_h__attr__((__format__(__printf__, 3, 0))); +# undef __bio_h__attr__ + +/* BEGIN ERROR CODES */ +/* + * The following lines are auto generated by the script mkerr.pl. Any changes + * made after this point may be overwritten when the script is next run. + */ +void ERR_load_BIO_strings(void); + +/* Error codes for the BIO functions. */ + +/* Function codes. */ +# define BIO_F_ACPT_STATE 100 +# define BIO_F_BIO_ACCEPT 101 +# define BIO_F_BIO_BER_GET_HEADER 102 +# define BIO_F_BIO_CALLBACK_CTRL 131 +# define BIO_F_BIO_CTRL 103 +# define BIO_F_BIO_GETHOSTBYNAME 120 +# define BIO_F_BIO_GETS 104 +# define BIO_F_BIO_GET_ACCEPT_SOCKET 105 +# define BIO_F_BIO_GET_HOST_IP 106 +# define BIO_F_BIO_GET_PORT 107 +# define BIO_F_BIO_MAKE_PAIR 121 +# define BIO_F_BIO_NEW 108 +# define BIO_F_BIO_NEW_FILE 109 +# define BIO_F_BIO_NEW_MEM_BUF 126 +# define BIO_F_BIO_NREAD 123 +# define BIO_F_BIO_NREAD0 124 +# define BIO_F_BIO_NWRITE 125 +# define BIO_F_BIO_NWRITE0 122 +# define BIO_F_BIO_PUTS 110 +# define BIO_F_BIO_READ 111 +# define BIO_F_BIO_SOCK_INIT 112 +# define BIO_F_BIO_WRITE 113 +# define BIO_F_BUFFER_CTRL 114 +# define BIO_F_CONN_CTRL 127 +# define BIO_F_CONN_STATE 115 +# define BIO_F_DGRAM_SCTP_READ 132 +# define BIO_F_FILE_CTRL 116 +# define BIO_F_FILE_READ 130 +# define BIO_F_LINEBUFFER_CTRL 129 +# define BIO_F_MEM_READ 128 +# define BIO_F_MEM_WRITE 117 +# define BIO_F_SSL_NEW 118 +# define BIO_F_WSASTARTUP 119 + +/* Reason codes. */ +# define BIO_R_ACCEPT_ERROR 100 +# define BIO_R_BAD_FOPEN_MODE 101 +# define BIO_R_BAD_HOSTNAME_LOOKUP 102 +# define BIO_R_BROKEN_PIPE 124 +# define BIO_R_CONNECT_ERROR 103 +# define BIO_R_EOF_ON_MEMORY_BIO 127 +# define BIO_R_ERROR_SETTING_NBIO 104 +# define BIO_R_ERROR_SETTING_NBIO_ON_ACCEPTED_SOCKET 105 +# define BIO_R_ERROR_SETTING_NBIO_ON_ACCEPT_SOCKET 106 +# define BIO_R_GETHOSTBYNAME_ADDR_IS_NOT_AF_INET 107 +# define BIO_R_INVALID_ARGUMENT 125 +# define BIO_R_INVALID_IP_ADDRESS 108 +# define BIO_R_IN_USE 123 +# define BIO_R_KEEPALIVE 109 +# define BIO_R_NBIO_CONNECT_ERROR 110 +# define BIO_R_NO_ACCEPT_PORT_SPECIFIED 111 +# define BIO_R_NO_HOSTNAME_SPECIFIED 112 +# define BIO_R_NO_PORT_DEFINED 113 +# define BIO_R_NO_PORT_SPECIFIED 114 +# define BIO_R_NO_SUCH_FILE 128 +# define BIO_R_NULL_PARAMETER 115 +# define BIO_R_TAG_MISMATCH 116 +# define BIO_R_UNABLE_TO_BIND_SOCKET 117 +# define BIO_R_UNABLE_TO_CREATE_SOCKET 118 +# define BIO_R_UNABLE_TO_LISTEN_SOCKET 119 +# define BIO_R_UNINITIALIZED 120 +# define BIO_R_UNSUPPORTED_METHOD 121 +# define BIO_R_WRITE_TO_READ_ONLY_BIO 126 +# define BIO_R_WSASTARTUP 122 + +#ifdef __cplusplus +} +#endif +#endif diff --git a/ext/openssl-win64/inc32/openssl/bn.h b/ext/openssl-win64/inc32/openssl/bn.h new file mode 100644 index 00000000..78709d38 --- /dev/null +++ b/ext/openssl-win64/inc32/openssl/bn.h @@ -0,0 +1,934 @@ +/* crypto/bn/bn.h */ +/* Copyright (C) 1995-1997 Eric Young (eay@cryptsoft.com) + * All rights reserved. + * + * This package is an SSL implementation written + * by Eric Young (eay@cryptsoft.com). + * The implementation was written so as to conform with Netscapes SSL. + * + * This library is free for commercial and non-commercial use as long as + * the following conditions are aheared to. The following conditions + * apply to all code found in this distribution, be it the RC4, RSA, + * lhash, DES, etc., code; not just the SSL code. The SSL documentation + * included with this distribution is covered by the same copyright terms + * except that the holder is Tim Hudson (tjh@cryptsoft.com). + * + * Copyright remains Eric Young's, and as such any Copyright notices in + * the code are not to be removed. + * If this package is used in a product, Eric Young should be given attribution + * as the author of the parts of the library used. + * This can be in the form of a textual message at program startup or + * in documentation (online or textual) provided with the package. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * "This product includes cryptographic software written by + * Eric Young (eay@cryptsoft.com)" + * The word 'cryptographic' can be left out if the rouines from the library + * being used are not cryptographic related :-). + * 4. If you include any Windows specific code (or a derivative thereof) from + * the apps directory (application code) you must include an acknowledgement: + * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" + * + * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * The licence and distribution terms for any publically available version or + * derivative of this code cannot be changed. i.e. this code cannot simply be + * copied and put under another distribution licence + * [including the GNU Public Licence.] + */ +/* ==================================================================== + * Copyright (c) 1998-2006 The OpenSSL Project. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. All advertising materials mentioning features or use of this + * software must display the following acknowledgment: + * "This product includes software developed by the OpenSSL Project + * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" + * + * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to + * endorse or promote products derived from this software without + * prior written permission. For written permission, please contact + * openssl-core@openssl.org. + * + * 5. Products derived from this software may not be called "OpenSSL" + * nor may "OpenSSL" appear in their names without prior written + * permission of the OpenSSL Project. + * + * 6. Redistributions of any form whatsoever must retain the following + * acknowledgment: + * "This product includes software developed by the OpenSSL Project + * for use in the OpenSSL Toolkit (http://www.openssl.org/)" + * + * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY + * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * ==================================================================== + * + * This product includes cryptographic software written by Eric Young + * (eay@cryptsoft.com). This product includes software written by Tim + * Hudson (tjh@cryptsoft.com). + * + */ +/* ==================================================================== + * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED. + * + * Portions of the attached software ("Contribution") are developed by + * SUN MICROSYSTEMS, INC., and are contributed to the OpenSSL project. + * + * The Contribution is licensed pursuant to the Eric Young open source + * license provided above. + * + * The binary polynomial arithmetic software is originally written by + * Sheueling Chang Shantz and Douglas Stebila of Sun Microsystems Laboratories. + * + */ + +#ifndef HEADER_BN_H +# define HEADER_BN_H + +# include +# ifndef OPENSSL_NO_FP_API +# include /* FILE */ +# endif +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * These preprocessor symbols control various aspects of the bignum headers + * and library code. They're not defined by any "normal" configuration, as + * they are intended for development and testing purposes. NB: defining all + * three can be useful for debugging application code as well as openssl + * itself. BN_DEBUG - turn on various debugging alterations to the bignum + * code BN_DEBUG_RAND - uses random poisoning of unused words to trip up + * mismanagement of bignum internals. You must also define BN_DEBUG. + */ +/* #define BN_DEBUG */ +/* #define BN_DEBUG_RAND */ + +# ifndef OPENSSL_SMALL_FOOTPRINT +# define BN_MUL_COMBA +# define BN_SQR_COMBA +# define BN_RECURSION +# endif + +/* + * This next option uses the C libraries (2 word)/(1 word) function. If it is + * not defined, I use my C version (which is slower). The reason for this + * flag is that when the particular C compiler library routine is used, and + * the library is linked with a different compiler, the library is missing. + * This mostly happens when the library is built with gcc and then linked + * using normal cc. This would be a common occurrence because gcc normally + * produces code that is 2 times faster than system compilers for the big + * number stuff. For machines with only one compiler (or shared libraries), + * this should be on. Again this in only really a problem on machines using + * "long long's", are 32bit, and are not using my assembler code. + */ +# if defined(OPENSSL_SYS_MSDOS) || defined(OPENSSL_SYS_WINDOWS) || \ + defined(OPENSSL_SYS_WIN32) || defined(linux) +# ifndef BN_DIV2W +# define BN_DIV2W +# endif +# endif + +/* + * assuming long is 64bit - this is the DEC Alpha unsigned long long is only + * 64 bits :-(, don't define BN_LLONG for the DEC Alpha + */ +# ifdef SIXTY_FOUR_BIT_LONG +# define BN_ULLONG unsigned long long +# define BN_ULONG unsigned long +# define BN_LONG long +# define BN_BITS 128 +# define BN_BYTES 8 +# define BN_BITS2 64 +# define BN_BITS4 32 +# define BN_MASK (0xffffffffffffffffffffffffffffffffLL) +# define BN_MASK2 (0xffffffffffffffffL) +# define BN_MASK2l (0xffffffffL) +# define BN_MASK2h (0xffffffff00000000L) +# define BN_MASK2h1 (0xffffffff80000000L) +# define BN_TBIT (0x8000000000000000L) +# define BN_DEC_CONV (10000000000000000000UL) +# define BN_DEC_FMT1 "%lu" +# define BN_DEC_FMT2 "%019lu" +# define BN_DEC_NUM 19 +# define BN_HEX_FMT1 "%lX" +# define BN_HEX_FMT2 "%016lX" +# endif + +/* + * This is where the long long data type is 64 bits, but long is 32. For + * machines where there are 64bit registers, this is the mode to use. IRIX, + * on R4000 and above should use this mode, along with the relevant assembler + * code :-). Do NOT define BN_LLONG. + */ +# ifdef SIXTY_FOUR_BIT +# undef BN_LLONG +# undef BN_ULLONG +# define BN_ULONG unsigned long long +# define BN_LONG long long +# define BN_BITS 128 +# define BN_BYTES 8 +# define BN_BITS2 64 +# define BN_BITS4 32 +# define BN_MASK2 (0xffffffffffffffffLL) +# define BN_MASK2l (0xffffffffL) +# define BN_MASK2h (0xffffffff00000000LL) +# define BN_MASK2h1 (0xffffffff80000000LL) +# define BN_TBIT (0x8000000000000000LL) +# define BN_DEC_CONV (10000000000000000000ULL) +# define BN_DEC_FMT1 "%llu" +# define BN_DEC_FMT2 "%019llu" +# define BN_DEC_NUM 19 +# define BN_HEX_FMT1 "%llX" +# define BN_HEX_FMT2 "%016llX" +# endif + +# ifdef THIRTY_TWO_BIT +# ifdef BN_LLONG +# if defined(_WIN32) && !defined(__GNUC__) +# define BN_ULLONG unsigned __int64 +# define BN_MASK (0xffffffffffffffffI64) +# else +# define BN_ULLONG unsigned long long +# define BN_MASK (0xffffffffffffffffLL) +# endif +# endif +# define BN_ULONG unsigned int +# define BN_LONG int +# define BN_BITS 64 +# define BN_BYTES 4 +# define BN_BITS2 32 +# define BN_BITS4 16 +# define BN_MASK2 (0xffffffffL) +# define BN_MASK2l (0xffff) +# define BN_MASK2h1 (0xffff8000L) +# define BN_MASK2h (0xffff0000L) +# define BN_TBIT (0x80000000L) +# define BN_DEC_CONV (1000000000L) +# define BN_DEC_FMT1 "%u" +# define BN_DEC_FMT2 "%09u" +# define BN_DEC_NUM 9 +# define BN_HEX_FMT1 "%X" +# define BN_HEX_FMT2 "%08X" +# endif + +# define BN_DEFAULT_BITS 1280 + +# define BN_FLG_MALLOCED 0x01 +# define BN_FLG_STATIC_DATA 0x02 + +/* + * avoid leaking exponent information through timing, + * BN_mod_exp_mont() will call BN_mod_exp_mont_consttime, + * BN_div() will call BN_div_no_branch, + * BN_mod_inverse() will call BN_mod_inverse_no_branch. + */ +# define BN_FLG_CONSTTIME 0x04 + +# ifdef OPENSSL_NO_DEPRECATED +/* deprecated name for the flag */ +# define BN_FLG_EXP_CONSTTIME BN_FLG_CONSTTIME +/* + * avoid leaking exponent information through timings + * (BN_mod_exp_mont() will call BN_mod_exp_mont_consttime) + */ +# endif + +# ifndef OPENSSL_NO_DEPRECATED +# define BN_FLG_FREE 0x8000 + /* used for debuging */ +# endif +# define BN_set_flags(b,n) ((b)->flags|=(n)) +# define BN_get_flags(b,n) ((b)->flags&(n)) + +/* + * get a clone of a BIGNUM with changed flags, for *temporary* use only (the + * two BIGNUMs cannot not be used in parallel!) + */ +# define BN_with_flags(dest,b,n) ((dest)->d=(b)->d, \ + (dest)->top=(b)->top, \ + (dest)->dmax=(b)->dmax, \ + (dest)->neg=(b)->neg, \ + (dest)->flags=(((dest)->flags & BN_FLG_MALLOCED) \ + | ((b)->flags & ~BN_FLG_MALLOCED) \ + | BN_FLG_STATIC_DATA \ + | (n))) + +/* Already declared in ossl_typ.h */ +# if 0 +typedef struct bignum_st BIGNUM; +/* Used for temp variables (declaration hidden in bn_lcl.h) */ +typedef struct bignum_ctx BN_CTX; +typedef struct bn_blinding_st BN_BLINDING; +typedef struct bn_mont_ctx_st BN_MONT_CTX; +typedef struct bn_recp_ctx_st BN_RECP_CTX; +typedef struct bn_gencb_st BN_GENCB; +# endif + +struct bignum_st { + BN_ULONG *d; /* Pointer to an array of 'BN_BITS2' bit + * chunks. */ + int top; /* Index of last used d +1. */ + /* The next are internal book keeping for bn_expand. */ + int dmax; /* Size of the d array. */ + int neg; /* one if the number is negative */ + int flags; +}; + +/* Used for montgomery multiplication */ +struct bn_mont_ctx_st { + int ri; /* number of bits in R */ + BIGNUM RR; /* used to convert to montgomery form */ + BIGNUM N; /* The modulus */ + BIGNUM Ni; /* R*(1/R mod N) - N*Ni = 1 (Ni is only + * stored for bignum algorithm) */ + BN_ULONG n0[2]; /* least significant word(s) of Ni; (type + * changed with 0.9.9, was "BN_ULONG n0;" + * before) */ + int flags; +}; + +/* + * Used for reciprocal division/mod functions It cannot be shared between + * threads + */ +struct bn_recp_ctx_st { + BIGNUM N; /* the divisor */ + BIGNUM Nr; /* the reciprocal */ + int num_bits; + int shift; + int flags; +}; + +/* Used for slow "generation" functions. */ +struct bn_gencb_st { + unsigned int ver; /* To handle binary (in)compatibility */ + void *arg; /* callback-specific data */ + union { + /* if(ver==1) - handles old style callbacks */ + void (*cb_1) (int, int, void *); + /* if(ver==2) - new callback style */ + int (*cb_2) (int, int, BN_GENCB *); + } cb; +}; +/* Wrapper function to make using BN_GENCB easier, */ +int BN_GENCB_call(BN_GENCB *cb, int a, int b); +/* Macro to populate a BN_GENCB structure with an "old"-style callback */ +# define BN_GENCB_set_old(gencb, callback, cb_arg) { \ + BN_GENCB *tmp_gencb = (gencb); \ + tmp_gencb->ver = 1; \ + tmp_gencb->arg = (cb_arg); \ + tmp_gencb->cb.cb_1 = (callback); } +/* Macro to populate a BN_GENCB structure with a "new"-style callback */ +# define BN_GENCB_set(gencb, callback, cb_arg) { \ + BN_GENCB *tmp_gencb = (gencb); \ + tmp_gencb->ver = 2; \ + tmp_gencb->arg = (cb_arg); \ + tmp_gencb->cb.cb_2 = (callback); } + +# define BN_prime_checks 0 /* default: select number of iterations based + * on the size of the number */ + +/* + * number of Miller-Rabin iterations for an error rate of less than 2^-80 for + * random 'b'-bit input, b >= 100 (taken from table 4.4 in the Handbook of + * Applied Cryptography [Menezes, van Oorschot, Vanstone; CRC Press 1996]; + * original paper: Damgaard, Landrock, Pomerance: Average case error + * estimates for the strong probable prime test. -- Math. Comp. 61 (1993) + * 177-194) + */ +# define BN_prime_checks_for_size(b) ((b) >= 1300 ? 2 : \ + (b) >= 850 ? 3 : \ + (b) >= 650 ? 4 : \ + (b) >= 550 ? 5 : \ + (b) >= 450 ? 6 : \ + (b) >= 400 ? 7 : \ + (b) >= 350 ? 8 : \ + (b) >= 300 ? 9 : \ + (b) >= 250 ? 12 : \ + (b) >= 200 ? 15 : \ + (b) >= 150 ? 18 : \ + /* b >= 100 */ 27) + +# define BN_num_bytes(a) ((BN_num_bits(a)+7)/8) + +/* Note that BN_abs_is_word didn't work reliably for w == 0 until 0.9.8 */ +# define BN_abs_is_word(a,w) ((((a)->top == 1) && ((a)->d[0] == (BN_ULONG)(w))) || \ + (((w) == 0) && ((a)->top == 0))) +# define BN_is_zero(a) ((a)->top == 0) +# define BN_is_one(a) (BN_abs_is_word((a),1) && !(a)->neg) +# define BN_is_word(a,w) (BN_abs_is_word((a),(w)) && (!(w) || !(a)->neg)) +# define BN_is_odd(a) (((a)->top > 0) && ((a)->d[0] & 1)) + +# define BN_one(a) (BN_set_word((a),1)) +# define BN_zero_ex(a) \ + do { \ + BIGNUM *_tmp_bn = (a); \ + _tmp_bn->top = 0; \ + _tmp_bn->neg = 0; \ + } while(0) +# ifdef OPENSSL_NO_DEPRECATED +# define BN_zero(a) BN_zero_ex(a) +# else +# define BN_zero(a) (BN_set_word((a),0)) +# endif + +const BIGNUM *BN_value_one(void); +char *BN_options(void); +BN_CTX *BN_CTX_new(void); +# ifndef OPENSSL_NO_DEPRECATED +void BN_CTX_init(BN_CTX *c); +# endif +void BN_CTX_free(BN_CTX *c); +void BN_CTX_start(BN_CTX *ctx); +BIGNUM *BN_CTX_get(BN_CTX *ctx); +void BN_CTX_end(BN_CTX *ctx); +int BN_rand(BIGNUM *rnd, int bits, int top, int bottom); +int BN_pseudo_rand(BIGNUM *rnd, int bits, int top, int bottom); +int BN_rand_range(BIGNUM *rnd, const BIGNUM *range); +int BN_pseudo_rand_range(BIGNUM *rnd, const BIGNUM *range); +int BN_num_bits(const BIGNUM *a); +int BN_num_bits_word(BN_ULONG); +BIGNUM *BN_new(void); +void BN_init(BIGNUM *); +void BN_clear_free(BIGNUM *a); +BIGNUM *BN_copy(BIGNUM *a, const BIGNUM *b); +void BN_swap(BIGNUM *a, BIGNUM *b); +BIGNUM *BN_bin2bn(const unsigned char *s, int len, BIGNUM *ret); +int BN_bn2bin(const BIGNUM *a, unsigned char *to); +BIGNUM *BN_mpi2bn(const unsigned char *s, int len, BIGNUM *ret); +int BN_bn2mpi(const BIGNUM *a, unsigned char *to); +int BN_sub(BIGNUM *r, const BIGNUM *a, const BIGNUM *b); +int BN_usub(BIGNUM *r, const BIGNUM *a, const BIGNUM *b); +int BN_uadd(BIGNUM *r, const BIGNUM *a, const BIGNUM *b); +int BN_add(BIGNUM *r, const BIGNUM *a, const BIGNUM *b); +int BN_mul(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx); +int BN_sqr(BIGNUM *r, const BIGNUM *a, BN_CTX *ctx); +/** BN_set_negative sets sign of a BIGNUM + * \param b pointer to the BIGNUM object + * \param n 0 if the BIGNUM b should be positive and a value != 0 otherwise + */ +void BN_set_negative(BIGNUM *b, int n); +/** BN_is_negative returns 1 if the BIGNUM is negative + * \param a pointer to the BIGNUM object + * \return 1 if a < 0 and 0 otherwise + */ +# define BN_is_negative(a) ((a)->neg != 0) + +int BN_div(BIGNUM *dv, BIGNUM *rem, const BIGNUM *m, const BIGNUM *d, + BN_CTX *ctx); +# define BN_mod(rem,m,d,ctx) BN_div(NULL,(rem),(m),(d),(ctx)) +int BN_nnmod(BIGNUM *r, const BIGNUM *m, const BIGNUM *d, BN_CTX *ctx); +int BN_mod_add(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, const BIGNUM *m, + BN_CTX *ctx); +int BN_mod_add_quick(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, + const BIGNUM *m); +int BN_mod_sub(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, const BIGNUM *m, + BN_CTX *ctx); +int BN_mod_sub_quick(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, + const BIGNUM *m); +int BN_mod_mul(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, const BIGNUM *m, + BN_CTX *ctx); +int BN_mod_sqr(BIGNUM *r, const BIGNUM *a, const BIGNUM *m, BN_CTX *ctx); +int BN_mod_lshift1(BIGNUM *r, const BIGNUM *a, const BIGNUM *m, BN_CTX *ctx); +int BN_mod_lshift1_quick(BIGNUM *r, const BIGNUM *a, const BIGNUM *m); +int BN_mod_lshift(BIGNUM *r, const BIGNUM *a, int n, const BIGNUM *m, + BN_CTX *ctx); +int BN_mod_lshift_quick(BIGNUM *r, const BIGNUM *a, int n, const BIGNUM *m); + +BN_ULONG BN_mod_word(const BIGNUM *a, BN_ULONG w); +BN_ULONG BN_div_word(BIGNUM *a, BN_ULONG w); +int BN_mul_word(BIGNUM *a, BN_ULONG w); +int BN_add_word(BIGNUM *a, BN_ULONG w); +int BN_sub_word(BIGNUM *a, BN_ULONG w); +int BN_set_word(BIGNUM *a, BN_ULONG w); +BN_ULONG BN_get_word(const BIGNUM *a); + +int BN_cmp(const BIGNUM *a, const BIGNUM *b); +void BN_free(BIGNUM *a); +int BN_is_bit_set(const BIGNUM *a, int n); +int BN_lshift(BIGNUM *r, const BIGNUM *a, int n); +int BN_lshift1(BIGNUM *r, const BIGNUM *a); +int BN_exp(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx); + +int BN_mod_exp(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, + const BIGNUM *m, BN_CTX *ctx); +int BN_mod_exp_mont(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, + const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx); +int BN_mod_exp_mont_consttime(BIGNUM *rr, const BIGNUM *a, const BIGNUM *p, + const BIGNUM *m, BN_CTX *ctx, + BN_MONT_CTX *in_mont); +int BN_mod_exp_mont_word(BIGNUM *r, BN_ULONG a, const BIGNUM *p, + const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx); +int BN_mod_exp2_mont(BIGNUM *r, const BIGNUM *a1, const BIGNUM *p1, + const BIGNUM *a2, const BIGNUM *p2, const BIGNUM *m, + BN_CTX *ctx, BN_MONT_CTX *m_ctx); +int BN_mod_exp_simple(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, + const BIGNUM *m, BN_CTX *ctx); + +int BN_mask_bits(BIGNUM *a, int n); +# ifndef OPENSSL_NO_FP_API +int BN_print_fp(FILE *fp, const BIGNUM *a); +# endif +# ifdef HEADER_BIO_H +int BN_print(BIO *fp, const BIGNUM *a); +# else +int BN_print(void *fp, const BIGNUM *a); +# endif +int BN_reciprocal(BIGNUM *r, const BIGNUM *m, int len, BN_CTX *ctx); +int BN_rshift(BIGNUM *r, const BIGNUM *a, int n); +int BN_rshift1(BIGNUM *r, const BIGNUM *a); +void BN_clear(BIGNUM *a); +BIGNUM *BN_dup(const BIGNUM *a); +int BN_ucmp(const BIGNUM *a, const BIGNUM *b); +int BN_set_bit(BIGNUM *a, int n); +int BN_clear_bit(BIGNUM *a, int n); +char *BN_bn2hex(const BIGNUM *a); +char *BN_bn2dec(const BIGNUM *a); +int BN_hex2bn(BIGNUM **a, const char *str); +int BN_dec2bn(BIGNUM **a, const char *str); +int BN_asc2bn(BIGNUM **a, const char *str); +int BN_gcd(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx); +int BN_kronecker(const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx); /* returns + * -2 for + * error */ +BIGNUM *BN_mod_inverse(BIGNUM *ret, + const BIGNUM *a, const BIGNUM *n, BN_CTX *ctx); +BIGNUM *BN_mod_sqrt(BIGNUM *ret, + const BIGNUM *a, const BIGNUM *n, BN_CTX *ctx); + +void BN_consttime_swap(BN_ULONG swap, BIGNUM *a, BIGNUM *b, int nwords); + +/* Deprecated versions */ +# ifndef OPENSSL_NO_DEPRECATED +BIGNUM *BN_generate_prime(BIGNUM *ret, int bits, int safe, + const BIGNUM *add, const BIGNUM *rem, + void (*callback) (int, int, void *), void *cb_arg); +int BN_is_prime(const BIGNUM *p, int nchecks, + void (*callback) (int, int, void *), + BN_CTX *ctx, void *cb_arg); +int BN_is_prime_fasttest(const BIGNUM *p, int nchecks, + void (*callback) (int, int, void *), BN_CTX *ctx, + void *cb_arg, int do_trial_division); +# endif /* !defined(OPENSSL_NO_DEPRECATED) */ + +/* Newer versions */ +int BN_generate_prime_ex(BIGNUM *ret, int bits, int safe, const BIGNUM *add, + const BIGNUM *rem, BN_GENCB *cb); +int BN_is_prime_ex(const BIGNUM *p, int nchecks, BN_CTX *ctx, BN_GENCB *cb); +int BN_is_prime_fasttest_ex(const BIGNUM *p, int nchecks, BN_CTX *ctx, + int do_trial_division, BN_GENCB *cb); + +int BN_X931_generate_Xpq(BIGNUM *Xp, BIGNUM *Xq, int nbits, BN_CTX *ctx); + +int BN_X931_derive_prime_ex(BIGNUM *p, BIGNUM *p1, BIGNUM *p2, + const BIGNUM *Xp, const BIGNUM *Xp1, + const BIGNUM *Xp2, const BIGNUM *e, BN_CTX *ctx, + BN_GENCB *cb); +int BN_X931_generate_prime_ex(BIGNUM *p, BIGNUM *p1, BIGNUM *p2, BIGNUM *Xp1, + BIGNUM *Xp2, const BIGNUM *Xp, const BIGNUM *e, + BN_CTX *ctx, BN_GENCB *cb); + +BN_MONT_CTX *BN_MONT_CTX_new(void); +void BN_MONT_CTX_init(BN_MONT_CTX *ctx); +int BN_mod_mul_montgomery(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, + BN_MONT_CTX *mont, BN_CTX *ctx); +# define BN_to_montgomery(r,a,mont,ctx) BN_mod_mul_montgomery(\ + (r),(a),&((mont)->RR),(mont),(ctx)) +int BN_from_montgomery(BIGNUM *r, const BIGNUM *a, + BN_MONT_CTX *mont, BN_CTX *ctx); +void BN_MONT_CTX_free(BN_MONT_CTX *mont); +int BN_MONT_CTX_set(BN_MONT_CTX *mont, const BIGNUM *mod, BN_CTX *ctx); +BN_MONT_CTX *BN_MONT_CTX_copy(BN_MONT_CTX *to, BN_MONT_CTX *from); +BN_MONT_CTX *BN_MONT_CTX_set_locked(BN_MONT_CTX **pmont, int lock, + const BIGNUM *mod, BN_CTX *ctx); + +/* BN_BLINDING flags */ +# define BN_BLINDING_NO_UPDATE 0x00000001 +# define BN_BLINDING_NO_RECREATE 0x00000002 + +BN_BLINDING *BN_BLINDING_new(const BIGNUM *A, const BIGNUM *Ai, BIGNUM *mod); +void BN_BLINDING_free(BN_BLINDING *b); +int BN_BLINDING_update(BN_BLINDING *b, BN_CTX *ctx); +int BN_BLINDING_convert(BIGNUM *n, BN_BLINDING *b, BN_CTX *ctx); +int BN_BLINDING_invert(BIGNUM *n, BN_BLINDING *b, BN_CTX *ctx); +int BN_BLINDING_convert_ex(BIGNUM *n, BIGNUM *r, BN_BLINDING *b, BN_CTX *); +int BN_BLINDING_invert_ex(BIGNUM *n, const BIGNUM *r, BN_BLINDING *b, + BN_CTX *); +# ifndef OPENSSL_NO_DEPRECATED +unsigned long BN_BLINDING_get_thread_id(const BN_BLINDING *); +void BN_BLINDING_set_thread_id(BN_BLINDING *, unsigned long); +# endif +CRYPTO_THREADID *BN_BLINDING_thread_id(BN_BLINDING *); +unsigned long BN_BLINDING_get_flags(const BN_BLINDING *); +void BN_BLINDING_set_flags(BN_BLINDING *, unsigned long); +BN_BLINDING *BN_BLINDING_create_param(BN_BLINDING *b, + const BIGNUM *e, BIGNUM *m, BN_CTX *ctx, + int (*bn_mod_exp) (BIGNUM *r, + const BIGNUM *a, + const BIGNUM *p, + const BIGNUM *m, + BN_CTX *ctx, + BN_MONT_CTX *m_ctx), + BN_MONT_CTX *m_ctx); + +# ifndef OPENSSL_NO_DEPRECATED +void BN_set_params(int mul, int high, int low, int mont); +int BN_get_params(int which); /* 0, mul, 1 high, 2 low, 3 mont */ +# endif + +void BN_RECP_CTX_init(BN_RECP_CTX *recp); +BN_RECP_CTX *BN_RECP_CTX_new(void); +void BN_RECP_CTX_free(BN_RECP_CTX *recp); +int BN_RECP_CTX_set(BN_RECP_CTX *recp, const BIGNUM *rdiv, BN_CTX *ctx); +int BN_mod_mul_reciprocal(BIGNUM *r, const BIGNUM *x, const BIGNUM *y, + BN_RECP_CTX *recp, BN_CTX *ctx); +int BN_mod_exp_recp(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, + const BIGNUM *m, BN_CTX *ctx); +int BN_div_recp(BIGNUM *dv, BIGNUM *rem, const BIGNUM *m, + BN_RECP_CTX *recp, BN_CTX *ctx); + +# ifndef OPENSSL_NO_EC2M + +/* + * Functions for arithmetic over binary polynomials represented by BIGNUMs. + * The BIGNUM::neg property of BIGNUMs representing binary polynomials is + * ignored. Note that input arguments are not const so that their bit arrays + * can be expanded to the appropriate size if needed. + */ + +/* + * r = a + b + */ +int BN_GF2m_add(BIGNUM *r, const BIGNUM *a, const BIGNUM *b); +# define BN_GF2m_sub(r, a, b) BN_GF2m_add(r, a, b) +/* + * r=a mod p + */ +int BN_GF2m_mod(BIGNUM *r, const BIGNUM *a, const BIGNUM *p); +/* r = (a * b) mod p */ +int BN_GF2m_mod_mul(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, + const BIGNUM *p, BN_CTX *ctx); +/* r = (a * a) mod p */ +int BN_GF2m_mod_sqr(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx); +/* r = (1 / b) mod p */ +int BN_GF2m_mod_inv(BIGNUM *r, const BIGNUM *b, const BIGNUM *p, BN_CTX *ctx); +/* r = (a / b) mod p */ +int BN_GF2m_mod_div(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, + const BIGNUM *p, BN_CTX *ctx); +/* r = (a ^ b) mod p */ +int BN_GF2m_mod_exp(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, + const BIGNUM *p, BN_CTX *ctx); +/* r = sqrt(a) mod p */ +int BN_GF2m_mod_sqrt(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, + BN_CTX *ctx); +/* r^2 + r = a mod p */ +int BN_GF2m_mod_solve_quad(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, + BN_CTX *ctx); +# define BN_GF2m_cmp(a, b) BN_ucmp((a), (b)) +/*- + * Some functions allow for representation of the irreducible polynomials + * as an unsigned int[], say p. The irreducible f(t) is then of the form: + * t^p[0] + t^p[1] + ... + t^p[k] + * where m = p[0] > p[1] > ... > p[k] = 0. + */ +/* r = a mod p */ +int BN_GF2m_mod_arr(BIGNUM *r, const BIGNUM *a, const int p[]); +/* r = (a * b) mod p */ +int BN_GF2m_mod_mul_arr(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, + const int p[], BN_CTX *ctx); +/* r = (a * a) mod p */ +int BN_GF2m_mod_sqr_arr(BIGNUM *r, const BIGNUM *a, const int p[], + BN_CTX *ctx); +/* r = (1 / b) mod p */ +int BN_GF2m_mod_inv_arr(BIGNUM *r, const BIGNUM *b, const int p[], + BN_CTX *ctx); +/* r = (a / b) mod p */ +int BN_GF2m_mod_div_arr(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, + const int p[], BN_CTX *ctx); +/* r = (a ^ b) mod p */ +int BN_GF2m_mod_exp_arr(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, + const int p[], BN_CTX *ctx); +/* r = sqrt(a) mod p */ +int BN_GF2m_mod_sqrt_arr(BIGNUM *r, const BIGNUM *a, + const int p[], BN_CTX *ctx); +/* r^2 + r = a mod p */ +int BN_GF2m_mod_solve_quad_arr(BIGNUM *r, const BIGNUM *a, + const int p[], BN_CTX *ctx); +int BN_GF2m_poly2arr(const BIGNUM *a, int p[], int max); +int BN_GF2m_arr2poly(const int p[], BIGNUM *a); + +# endif + +/* + * faster mod functions for the 'NIST primes' 0 <= a < p^2 + */ +int BN_nist_mod_192(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx); +int BN_nist_mod_224(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx); +int BN_nist_mod_256(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx); +int BN_nist_mod_384(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx); +int BN_nist_mod_521(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx); + +const BIGNUM *BN_get0_nist_prime_192(void); +const BIGNUM *BN_get0_nist_prime_224(void); +const BIGNUM *BN_get0_nist_prime_256(void); +const BIGNUM *BN_get0_nist_prime_384(void); +const BIGNUM *BN_get0_nist_prime_521(void); + +/* library internal functions */ + +# define bn_expand(a,bits) ((((((bits+BN_BITS2-1))/BN_BITS2)) <= (a)->dmax)?\ + (a):bn_expand2((a),(bits+BN_BITS2-1)/BN_BITS2)) +# define bn_wexpand(a,words) (((words) <= (a)->dmax)?(a):bn_expand2((a),(words))) +BIGNUM *bn_expand2(BIGNUM *a, int words); +# ifndef OPENSSL_NO_DEPRECATED +BIGNUM *bn_dup_expand(const BIGNUM *a, int words); /* unused */ +# endif + +/*- + * Bignum consistency macros + * There is one "API" macro, bn_fix_top(), for stripping leading zeroes from + * bignum data after direct manipulations on the data. There is also an + * "internal" macro, bn_check_top(), for verifying that there are no leading + * zeroes. Unfortunately, some auditing is required due to the fact that + * bn_fix_top() has become an overabused duct-tape because bignum data is + * occasionally passed around in an inconsistent state. So the following + * changes have been made to sort this out; + * - bn_fix_top()s implementation has been moved to bn_correct_top() + * - if BN_DEBUG isn't defined, bn_fix_top() maps to bn_correct_top(), and + * bn_check_top() is as before. + * - if BN_DEBUG *is* defined; + * - bn_check_top() tries to pollute unused words even if the bignum 'top' is + * consistent. (ed: only if BN_DEBUG_RAND is defined) + * - bn_fix_top() maps to bn_check_top() rather than "fixing" anything. + * The idea is to have debug builds flag up inconsistent bignums when they + * occur. If that occurs in a bn_fix_top(), we examine the code in question; if + * the use of bn_fix_top() was appropriate (ie. it follows directly after code + * that manipulates the bignum) it is converted to bn_correct_top(), and if it + * was not appropriate, we convert it permanently to bn_check_top() and track + * down the cause of the bug. Eventually, no internal code should be using the + * bn_fix_top() macro. External applications and libraries should try this with + * their own code too, both in terms of building against the openssl headers + * with BN_DEBUG defined *and* linking with a version of OpenSSL built with it + * defined. This not only improves external code, it provides more test + * coverage for openssl's own code. + */ + +# ifdef BN_DEBUG + +/* We only need assert() when debugging */ +# include + +# ifdef BN_DEBUG_RAND +/* To avoid "make update" cvs wars due to BN_DEBUG, use some tricks */ +# ifndef RAND_pseudo_bytes +int RAND_pseudo_bytes(unsigned char *buf, int num); +# define BN_DEBUG_TRIX +# endif +# define bn_pollute(a) \ + do { \ + const BIGNUM *_bnum1 = (a); \ + if(_bnum1->top < _bnum1->dmax) { \ + unsigned char _tmp_char; \ + /* We cast away const without the compiler knowing, any \ + * *genuinely* constant variables that aren't mutable \ + * wouldn't be constructed with top!=dmax. */ \ + BN_ULONG *_not_const; \ + memcpy(&_not_const, &_bnum1->d, sizeof(BN_ULONG*)); \ + RAND_pseudo_bytes(&_tmp_char, 1); \ + memset((unsigned char *)(_not_const + _bnum1->top), _tmp_char, \ + (_bnum1->dmax - _bnum1->top) * sizeof(BN_ULONG)); \ + } \ + } while(0) +# ifdef BN_DEBUG_TRIX +# undef RAND_pseudo_bytes +# endif +# else +# define bn_pollute(a) +# endif +# define bn_check_top(a) \ + do { \ + const BIGNUM *_bnum2 = (a); \ + if (_bnum2 != NULL) { \ + assert((_bnum2->top == 0) || \ + (_bnum2->d[_bnum2->top - 1] != 0)); \ + bn_pollute(_bnum2); \ + } \ + } while(0) + +# define bn_fix_top(a) bn_check_top(a) + +# define bn_check_size(bn, bits) bn_wcheck_size(bn, ((bits+BN_BITS2-1))/BN_BITS2) +# define bn_wcheck_size(bn, words) \ + do { \ + const BIGNUM *_bnum2 = (bn); \ + assert((words) <= (_bnum2)->dmax && (words) >= (_bnum2)->top); \ + /* avoid unused variable warning with NDEBUG */ \ + (void)(_bnum2); \ + } while(0) + +# else /* !BN_DEBUG */ + +# define bn_pollute(a) +# define bn_check_top(a) +# define bn_fix_top(a) bn_correct_top(a) +# define bn_check_size(bn, bits) +# define bn_wcheck_size(bn, words) + +# endif + +# define bn_correct_top(a) \ + { \ + BN_ULONG *ftl; \ + int tmp_top = (a)->top; \ + if (tmp_top > 0) \ + { \ + for (ftl= &((a)->d[tmp_top-1]); tmp_top > 0; tmp_top--) \ + if (*(ftl--)) break; \ + (a)->top = tmp_top; \ + } \ + bn_pollute(a); \ + } + +BN_ULONG bn_mul_add_words(BN_ULONG *rp, const BN_ULONG *ap, int num, + BN_ULONG w); +BN_ULONG bn_mul_words(BN_ULONG *rp, const BN_ULONG *ap, int num, BN_ULONG w); +void bn_sqr_words(BN_ULONG *rp, const BN_ULONG *ap, int num); +BN_ULONG bn_div_words(BN_ULONG h, BN_ULONG l, BN_ULONG d); +BN_ULONG bn_add_words(BN_ULONG *rp, const BN_ULONG *ap, const BN_ULONG *bp, + int num); +BN_ULONG bn_sub_words(BN_ULONG *rp, const BN_ULONG *ap, const BN_ULONG *bp, + int num); + +/* Primes from RFC 2409 */ +BIGNUM *get_rfc2409_prime_768(BIGNUM *bn); +BIGNUM *get_rfc2409_prime_1024(BIGNUM *bn); + +/* Primes from RFC 3526 */ +BIGNUM *get_rfc3526_prime_1536(BIGNUM *bn); +BIGNUM *get_rfc3526_prime_2048(BIGNUM *bn); +BIGNUM *get_rfc3526_prime_3072(BIGNUM *bn); +BIGNUM *get_rfc3526_prime_4096(BIGNUM *bn); +BIGNUM *get_rfc3526_prime_6144(BIGNUM *bn); +BIGNUM *get_rfc3526_prime_8192(BIGNUM *bn); + +int BN_bntest_rand(BIGNUM *rnd, int bits, int top, int bottom); + +/* BEGIN ERROR CODES */ +/* + * The following lines are auto generated by the script mkerr.pl. Any changes + * made after this point may be overwritten when the script is next run. + */ +void ERR_load_BN_strings(void); + +/* Error codes for the BN functions. */ + +/* Function codes. */ +# define BN_F_BNRAND 127 +# define BN_F_BN_BLINDING_CONVERT_EX 100 +# define BN_F_BN_BLINDING_CREATE_PARAM 128 +# define BN_F_BN_BLINDING_INVERT_EX 101 +# define BN_F_BN_BLINDING_NEW 102 +# define BN_F_BN_BLINDING_UPDATE 103 +# define BN_F_BN_BN2DEC 104 +# define BN_F_BN_BN2HEX 105 +# define BN_F_BN_CTX_GET 116 +# define BN_F_BN_CTX_NEW 106 +# define BN_F_BN_CTX_START 129 +# define BN_F_BN_DIV 107 +# define BN_F_BN_DIV_NO_BRANCH 138 +# define BN_F_BN_DIV_RECP 130 +# define BN_F_BN_EXP 123 +# define BN_F_BN_EXPAND2 108 +# define BN_F_BN_EXPAND_INTERNAL 120 +# define BN_F_BN_GF2M_MOD 131 +# define BN_F_BN_GF2M_MOD_EXP 132 +# define BN_F_BN_GF2M_MOD_MUL 133 +# define BN_F_BN_GF2M_MOD_SOLVE_QUAD 134 +# define BN_F_BN_GF2M_MOD_SOLVE_QUAD_ARR 135 +# define BN_F_BN_GF2M_MOD_SQR 136 +# define BN_F_BN_GF2M_MOD_SQRT 137 +# define BN_F_BN_MOD_EXP2_MONT 118 +# define BN_F_BN_MOD_EXP_MONT 109 +# define BN_F_BN_MOD_EXP_MONT_CONSTTIME 124 +# define BN_F_BN_MOD_EXP_MONT_WORD 117 +# define BN_F_BN_MOD_EXP_RECP 125 +# define BN_F_BN_MOD_EXP_SIMPLE 126 +# define BN_F_BN_MOD_INVERSE 110 +# define BN_F_BN_MOD_INVERSE_NO_BRANCH 139 +# define BN_F_BN_MOD_LSHIFT_QUICK 119 +# define BN_F_BN_MOD_MUL_RECIPROCAL 111 +# define BN_F_BN_MOD_SQRT 121 +# define BN_F_BN_MPI2BN 112 +# define BN_F_BN_NEW 113 +# define BN_F_BN_RAND 114 +# define BN_F_BN_RAND_RANGE 122 +# define BN_F_BN_USUB 115 + +/* Reason codes. */ +# define BN_R_ARG2_LT_ARG3 100 +# define BN_R_BAD_RECIPROCAL 101 +# define BN_R_BIGNUM_TOO_LONG 114 +# define BN_R_CALLED_WITH_EVEN_MODULUS 102 +# define BN_R_DIV_BY_ZERO 103 +# define BN_R_ENCODING_ERROR 104 +# define BN_R_EXPAND_ON_STATIC_BIGNUM_DATA 105 +# define BN_R_INPUT_NOT_REDUCED 110 +# define BN_R_INVALID_LENGTH 106 +# define BN_R_INVALID_RANGE 115 +# define BN_R_NOT_A_SQUARE 111 +# define BN_R_NOT_INITIALIZED 107 +# define BN_R_NO_INVERSE 108 +# define BN_R_NO_SOLUTION 116 +# define BN_R_P_IS_NOT_PRIME 112 +# define BN_R_TOO_MANY_ITERATIONS 113 +# define BN_R_TOO_MANY_TEMPORARY_VARIABLES 109 + +#ifdef __cplusplus +} +#endif +#endif diff --git a/ext/openssl-win64/inc32/openssl/buffer.h b/ext/openssl-win64/inc32/openssl/buffer.h new file mode 100644 index 00000000..c343dd77 --- /dev/null +++ b/ext/openssl-win64/inc32/openssl/buffer.h @@ -0,0 +1,119 @@ +/* crypto/buffer/buffer.h */ +/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) + * All rights reserved. + * + * This package is an SSL implementation written + * by Eric Young (eay@cryptsoft.com). + * The implementation was written so as to conform with Netscapes SSL. + * + * This library is free for commercial and non-commercial use as long as + * the following conditions are aheared to. The following conditions + * apply to all code found in this distribution, be it the RC4, RSA, + * lhash, DES, etc., code; not just the SSL code. The SSL documentation + * included with this distribution is covered by the same copyright terms + * except that the holder is Tim Hudson (tjh@cryptsoft.com). + * + * Copyright remains Eric Young's, and as such any Copyright notices in + * the code are not to be removed. + * If this package is used in a product, Eric Young should be given attribution + * as the author of the parts of the library used. + * This can be in the form of a textual message at program startup or + * in documentation (online or textual) provided with the package. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * "This product includes cryptographic software written by + * Eric Young (eay@cryptsoft.com)" + * The word 'cryptographic' can be left out if the rouines from the library + * being used are not cryptographic related :-). + * 4. If you include any Windows specific code (or a derivative thereof) from + * the apps directory (application code) you must include an acknowledgement: + * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" + * + * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * The licence and distribution terms for any publically available version or + * derivative of this code cannot be changed. i.e. this code cannot simply be + * copied and put under another distribution licence + * [including the GNU Public Licence.] + */ + +#ifndef HEADER_BUFFER_H +# define HEADER_BUFFER_H + +# include + +#ifdef __cplusplus +extern "C" { +#endif + +# include + +# if !defined(NO_SYS_TYPES_H) +# include +# endif + +/* Already declared in ossl_typ.h */ +/* typedef struct buf_mem_st BUF_MEM; */ + +struct buf_mem_st { + size_t length; /* current number of bytes */ + char *data; + size_t max; /* size of buffer */ +}; + +BUF_MEM *BUF_MEM_new(void); +void BUF_MEM_free(BUF_MEM *a); +int BUF_MEM_grow(BUF_MEM *str, size_t len); +int BUF_MEM_grow_clean(BUF_MEM *str, size_t len); +size_t BUF_strnlen(const char *str, size_t maxlen); +char *BUF_strdup(const char *str); +char *BUF_strndup(const char *str, size_t siz); +void *BUF_memdup(const void *data, size_t siz); +void BUF_reverse(unsigned char *out, const unsigned char *in, size_t siz); + +/* safe string functions */ +size_t BUF_strlcpy(char *dst, const char *src, size_t siz); +size_t BUF_strlcat(char *dst, const char *src, size_t siz); + +/* BEGIN ERROR CODES */ +/* + * The following lines are auto generated by the script mkerr.pl. Any changes + * made after this point may be overwritten when the script is next run. + */ +void ERR_load_BUF_strings(void); + +/* Error codes for the BUF functions. */ + +/* Function codes. */ +# define BUF_F_BUF_MEMDUP 103 +# define BUF_F_BUF_MEM_GROW 100 +# define BUF_F_BUF_MEM_GROW_CLEAN 105 +# define BUF_F_BUF_MEM_NEW 101 +# define BUF_F_BUF_STRDUP 102 +# define BUF_F_BUF_STRNDUP 104 + +/* Reason codes. */ + +#ifdef __cplusplus +} +#endif +#endif diff --git a/ext/openssl-win64/inc32/openssl/comp.h b/ext/openssl-win64/inc32/openssl/comp.h new file mode 100644 index 00000000..406c428a --- /dev/null +++ b/ext/openssl-win64/inc32/openssl/comp.h @@ -0,0 +1,79 @@ + +#ifndef HEADER_COMP_H +# define HEADER_COMP_H + +# include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct comp_ctx_st COMP_CTX; + +typedef struct comp_method_st { + int type; /* NID for compression library */ + const char *name; /* A text string to identify the library */ + int (*init) (COMP_CTX *ctx); + void (*finish) (COMP_CTX *ctx); + int (*compress) (COMP_CTX *ctx, + unsigned char *out, unsigned int olen, + unsigned char *in, unsigned int ilen); + int (*expand) (COMP_CTX *ctx, + unsigned char *out, unsigned int olen, + unsigned char *in, unsigned int ilen); + /* + * The following two do NOTHING, but are kept for backward compatibility + */ + long (*ctrl) (void); + long (*callback_ctrl) (void); +} COMP_METHOD; + +struct comp_ctx_st { + COMP_METHOD *meth; + unsigned long compress_in; + unsigned long compress_out; + unsigned long expand_in; + unsigned long expand_out; + CRYPTO_EX_DATA ex_data; +}; + +COMP_CTX *COMP_CTX_new(COMP_METHOD *meth); +void COMP_CTX_free(COMP_CTX *ctx); +int COMP_compress_block(COMP_CTX *ctx, unsigned char *out, int olen, + unsigned char *in, int ilen); +int COMP_expand_block(COMP_CTX *ctx, unsigned char *out, int olen, + unsigned char *in, int ilen); +COMP_METHOD *COMP_rle(void); +COMP_METHOD *COMP_zlib(void); +void COMP_zlib_cleanup(void); + +# ifdef HEADER_BIO_H +# ifdef ZLIB +BIO_METHOD *BIO_f_zlib(void); +# endif +# endif + +/* BEGIN ERROR CODES */ +/* + * The following lines are auto generated by the script mkerr.pl. Any changes + * made after this point may be overwritten when the script is next run. + */ +void ERR_load_COMP_strings(void); + +/* Error codes for the COMP functions. */ + +/* Function codes. */ +# define COMP_F_BIO_ZLIB_FLUSH 99 +# define COMP_F_BIO_ZLIB_NEW 100 +# define COMP_F_BIO_ZLIB_READ 101 +# define COMP_F_BIO_ZLIB_WRITE 102 + +/* Reason codes. */ +# define COMP_R_ZLIB_DEFLATE_ERROR 99 +# define COMP_R_ZLIB_INFLATE_ERROR 100 +# define COMP_R_ZLIB_NOT_SUPPORTED 101 + +#ifdef __cplusplus +} +#endif +#endif diff --git a/ext/openssl-win64/inc32/openssl/crypto.h b/ext/openssl-win64/inc32/openssl/crypto.h new file mode 100644 index 00000000..c450d7a3 --- /dev/null +++ b/ext/openssl-win64/inc32/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 void *a, const void *b, size_t len); + +/* BEGIN ERROR CODES */ +/* + * The following lines are auto generated by the script mkerr.pl. Any changes + * made after this point may be overwritten when the script is next run. + */ +void ERR_load_CRYPTO_strings(void); + +/* Error codes for the CRYPTO functions. */ + +/* Function codes. */ +# define CRYPTO_F_CRYPTO_GET_EX_NEW_INDEX 100 +# define CRYPTO_F_CRYPTO_GET_NEW_DYNLOCKID 103 +# define CRYPTO_F_CRYPTO_GET_NEW_LOCKID 101 +# define CRYPTO_F_CRYPTO_SET_EX_DATA 102 +# define CRYPTO_F_DEF_ADD_INDEX 104 +# define CRYPTO_F_DEF_GET_CLASS 105 +# define CRYPTO_F_FIPS_MODE_SET 109 +# define CRYPTO_F_INT_DUP_EX_DATA 106 +# define CRYPTO_F_INT_FREE_EX_DATA 107 +# define CRYPTO_F_INT_NEW_EX_DATA 108 + +/* Reason codes. */ +# define CRYPTO_R_FIPS_MODE_NOT_SUPPORTED 101 +# define CRYPTO_R_NO_DYNLOCK_CREATE_CALLBACK 100 + +#ifdef __cplusplus +} +#endif +#endif diff --git a/ext/openssl-win64/inc32/openssl/dh.h b/ext/openssl-win64/inc32/openssl/dh.h new file mode 100644 index 00000000..0502f1a9 --- /dev/null +++ b/ext/openssl-win64/inc32/openssl/dh.h @@ -0,0 +1,392 @@ +/* crypto/dh/dh.h */ +/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) + * All rights reserved. + * + * This package is an SSL implementation written + * by Eric Young (eay@cryptsoft.com). + * The implementation was written so as to conform with Netscapes SSL. + * + * This library is free for commercial and non-commercial use as long as + * the following conditions are aheared to. The following conditions + * apply to all code found in this distribution, be it the RC4, RSA, + * lhash, DES, etc., code; not just the SSL code. The SSL documentation + * included with this distribution is covered by the same copyright terms + * except that the holder is Tim Hudson (tjh@cryptsoft.com). + * + * Copyright remains Eric Young's, and as such any Copyright notices in + * the code are not to be removed. + * If this package is used in a product, Eric Young should be given attribution + * as the author of the parts of the library used. + * This can be in the form of a textual message at program startup or + * in documentation (online or textual) provided with the package. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * "This product includes cryptographic software written by + * Eric Young (eay@cryptsoft.com)" + * The word 'cryptographic' can be left out if the rouines from the library + * being used are not cryptographic related :-). + * 4. If you include any Windows specific code (or a derivative thereof) from + * the apps directory (application code) you must include an acknowledgement: + * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" + * + * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * The licence and distribution terms for any publically available version or + * derivative of this code cannot be changed. i.e. this code cannot simply be + * copied and put under another distribution licence + * [including the GNU Public Licence.] + */ + +#ifndef HEADER_DH_H +# define HEADER_DH_H + +# include + +# ifdef OPENSSL_NO_DH +# error DH is disabled. +# endif + +# ifndef OPENSSL_NO_BIO +# include +# endif +# include +# ifndef OPENSSL_NO_DEPRECATED +# include +# endif + +# ifndef OPENSSL_DH_MAX_MODULUS_BITS +# define OPENSSL_DH_MAX_MODULUS_BITS 10000 +# endif + +# define DH_FLAG_CACHE_MONT_P 0x01 + +/* + * new with 0.9.7h; the built-in DH + * implementation now uses constant time + * modular exponentiation for secret exponents + * by default. This flag causes the + * faster variable sliding window method to + * be used for all exponents. + */ +# define DH_FLAG_NO_EXP_CONSTTIME 0x02 + +/* + * If this flag is set the DH method is FIPS compliant and can be used in + * FIPS mode. This is set in the validated module method. If an application + * sets this flag in its own methods it is its reposibility to ensure the + * result is compliant. + */ + +# define DH_FLAG_FIPS_METHOD 0x0400 + +/* + * If this flag is set the operations normally disabled in FIPS mode are + * permitted it is then the applications responsibility to ensure that the + * usage is compliant. + */ + +# define DH_FLAG_NON_FIPS_ALLOW 0x0400 + +#ifdef __cplusplus +extern "C" { +#endif + +/* Already defined in ossl_typ.h */ +/* typedef struct dh_st DH; */ +/* typedef struct dh_method DH_METHOD; */ + +struct dh_method { + const char *name; + /* Methods here */ + int (*generate_key) (DH *dh); + int (*compute_key) (unsigned char *key, const BIGNUM *pub_key, DH *dh); + /* Can be null */ + int (*bn_mod_exp) (const DH *dh, BIGNUM *r, const BIGNUM *a, + const BIGNUM *p, const BIGNUM *m, BN_CTX *ctx, + BN_MONT_CTX *m_ctx); + int (*init) (DH *dh); + int (*finish) (DH *dh); + int flags; + char *app_data; + /* If this is non-NULL, it will be used to generate parameters */ + int (*generate_params) (DH *dh, int prime_len, int generator, + BN_GENCB *cb); +}; + +struct dh_st { + /* + * This first argument is used to pick up errors when a DH is passed + * instead of a EVP_PKEY + */ + int pad; + int version; + BIGNUM *p; + BIGNUM *g; + long length; /* optional */ + BIGNUM *pub_key; /* g^x */ + BIGNUM *priv_key; /* x */ + int flags; + BN_MONT_CTX *method_mont_p; + /* Place holders if we want to do X9.42 DH */ + BIGNUM *q; + BIGNUM *j; + unsigned char *seed; + int seedlen; + BIGNUM *counter; + int references; + CRYPTO_EX_DATA ex_data; + const DH_METHOD *meth; + ENGINE *engine; +}; + +# define DH_GENERATOR_2 2 +/* #define DH_GENERATOR_3 3 */ +# define DH_GENERATOR_5 5 + +/* DH_check error codes */ +# define DH_CHECK_P_NOT_PRIME 0x01 +# define DH_CHECK_P_NOT_SAFE_PRIME 0x02 +# define DH_UNABLE_TO_CHECK_GENERATOR 0x04 +# define DH_NOT_SUITABLE_GENERATOR 0x08 +# define DH_CHECK_Q_NOT_PRIME 0x10 +# define DH_CHECK_INVALID_Q_VALUE 0x20 +# define DH_CHECK_INVALID_J_VALUE 0x40 + +/* DH_check_pub_key error codes */ +# define DH_CHECK_PUBKEY_TOO_SMALL 0x01 +# define DH_CHECK_PUBKEY_TOO_LARGE 0x02 + +/* + * primes p where (p-1)/2 is prime too are called "safe"; we define this for + * backward compatibility: + */ +# define DH_CHECK_P_NOT_STRONG_PRIME DH_CHECK_P_NOT_SAFE_PRIME + +# define d2i_DHparams_fp(fp,x) (DH *)ASN1_d2i_fp((char *(*)())DH_new, \ + (char *(*)())d2i_DHparams,(fp),(unsigned char **)(x)) +# define i2d_DHparams_fp(fp,x) ASN1_i2d_fp(i2d_DHparams,(fp), \ + (unsigned char *)(x)) +# define d2i_DHparams_bio(bp,x) ASN1_d2i_bio_of(DH,DH_new,d2i_DHparams,bp,x) +# define i2d_DHparams_bio(bp,x) ASN1_i2d_bio_of_const(DH,i2d_DHparams,bp,x) + +DH *DHparams_dup(DH *); + +const DH_METHOD *DH_OpenSSL(void); + +void DH_set_default_method(const DH_METHOD *meth); +const DH_METHOD *DH_get_default_method(void); +int DH_set_method(DH *dh, const DH_METHOD *meth); +DH *DH_new_method(ENGINE *engine); + +DH *DH_new(void); +void DH_free(DH *dh); +int DH_up_ref(DH *dh); +int DH_size(const DH *dh); +int DH_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new *new_func, + CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func); +int DH_set_ex_data(DH *d, int idx, void *arg); +void *DH_get_ex_data(DH *d, int idx); + +/* Deprecated version */ +# ifndef OPENSSL_NO_DEPRECATED +DH *DH_generate_parameters(int prime_len, int generator, + void (*callback) (int, int, void *), void *cb_arg); +# endif /* !defined(OPENSSL_NO_DEPRECATED) */ + +/* New version */ +int DH_generate_parameters_ex(DH *dh, int prime_len, int generator, + BN_GENCB *cb); + +int DH_check(const DH *dh, int *codes); +int DH_check_pub_key(const DH *dh, const BIGNUM *pub_key, int *codes); +int DH_generate_key(DH *dh); +int DH_compute_key(unsigned char *key, const BIGNUM *pub_key, DH *dh); +int DH_compute_key_padded(unsigned char *key, const BIGNUM *pub_key, DH *dh); +DH *d2i_DHparams(DH **a, const unsigned char **pp, long length); +int i2d_DHparams(const DH *a, unsigned char **pp); +DH *d2i_DHxparams(DH **a, const unsigned char **pp, long length); +int i2d_DHxparams(const DH *a, unsigned char **pp); +# ifndef OPENSSL_NO_FP_API +int DHparams_print_fp(FILE *fp, const DH *x); +# endif +# ifndef OPENSSL_NO_BIO +int DHparams_print(BIO *bp, const DH *x); +# else +int DHparams_print(char *bp, const DH *x); +# endif + +/* RFC 5114 parameters */ +DH *DH_get_1024_160(void); +DH *DH_get_2048_224(void); +DH *DH_get_2048_256(void); + +/* RFC2631 KDF */ +int DH_KDF_X9_42(unsigned char *out, size_t outlen, + const unsigned char *Z, size_t Zlen, + ASN1_OBJECT *key_oid, + const unsigned char *ukm, size_t ukmlen, const EVP_MD *md); + +# define EVP_PKEY_CTX_set_dh_paramgen_prime_len(ctx, len) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DH, EVP_PKEY_OP_PARAMGEN, \ + EVP_PKEY_CTRL_DH_PARAMGEN_PRIME_LEN, len, NULL) + +# define EVP_PKEY_CTX_set_dh_paramgen_subprime_len(ctx, len) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DH, EVP_PKEY_OP_PARAMGEN, \ + EVP_PKEY_CTRL_DH_PARAMGEN_SUBPRIME_LEN, len, NULL) + +# define EVP_PKEY_CTX_set_dh_paramgen_type(ctx, typ) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DH, EVP_PKEY_OP_PARAMGEN, \ + EVP_PKEY_CTRL_DH_PARAMGEN_TYPE, typ, NULL) + +# define EVP_PKEY_CTX_set_dh_paramgen_generator(ctx, gen) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DH, EVP_PKEY_OP_PARAMGEN, \ + EVP_PKEY_CTRL_DH_PARAMGEN_GENERATOR, gen, NULL) + +# define EVP_PKEY_CTX_set_dh_rfc5114(ctx, gen) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, EVP_PKEY_OP_PARAMGEN, \ + EVP_PKEY_CTRL_DH_RFC5114, gen, NULL) + +# define EVP_PKEY_CTX_set_dhx_rfc5114(ctx, gen) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, EVP_PKEY_OP_PARAMGEN, \ + EVP_PKEY_CTRL_DH_RFC5114, gen, NULL) + +# define EVP_PKEY_CTX_set_dh_kdf_type(ctx, kdf) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_DH_KDF_TYPE, kdf, NULL) + +# define EVP_PKEY_CTX_get_dh_kdf_type(ctx) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_DH_KDF_TYPE, -2, NULL) + +# define EVP_PKEY_CTX_set0_dh_kdf_oid(ctx, oid) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_DH_KDF_OID, 0, (void *)oid) + +# define EVP_PKEY_CTX_get0_dh_kdf_oid(ctx, poid) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_GET_DH_KDF_OID, 0, (void *)poid) + +# define EVP_PKEY_CTX_set_dh_kdf_md(ctx, md) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_DH_KDF_MD, 0, (void *)md) + +# define EVP_PKEY_CTX_get_dh_kdf_md(ctx, pmd) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_GET_DH_KDF_MD, 0, (void *)pmd) + +# define EVP_PKEY_CTX_set_dh_kdf_outlen(ctx, len) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_DH_KDF_OUTLEN, len, NULL) + +# define EVP_PKEY_CTX_get_dh_kdf_outlen(ctx, plen) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_GET_DH_KDF_OUTLEN, 0, (void *)plen) + +# define EVP_PKEY_CTX_set0_dh_kdf_ukm(ctx, p, plen) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_DH_KDF_UKM, plen, (void *)p) + +# define EVP_PKEY_CTX_get0_dh_kdf_ukm(ctx, p) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_GET_DH_KDF_UKM, 0, (void *)p) + +# define EVP_PKEY_CTRL_DH_PARAMGEN_PRIME_LEN (EVP_PKEY_ALG_CTRL + 1) +# define EVP_PKEY_CTRL_DH_PARAMGEN_GENERATOR (EVP_PKEY_ALG_CTRL + 2) +# define EVP_PKEY_CTRL_DH_RFC5114 (EVP_PKEY_ALG_CTRL + 3) +# define EVP_PKEY_CTRL_DH_PARAMGEN_SUBPRIME_LEN (EVP_PKEY_ALG_CTRL + 4) +# define EVP_PKEY_CTRL_DH_PARAMGEN_TYPE (EVP_PKEY_ALG_CTRL + 5) +# define EVP_PKEY_CTRL_DH_KDF_TYPE (EVP_PKEY_ALG_CTRL + 6) +# define EVP_PKEY_CTRL_DH_KDF_MD (EVP_PKEY_ALG_CTRL + 7) +# define EVP_PKEY_CTRL_GET_DH_KDF_MD (EVP_PKEY_ALG_CTRL + 8) +# define EVP_PKEY_CTRL_DH_KDF_OUTLEN (EVP_PKEY_ALG_CTRL + 9) +# define EVP_PKEY_CTRL_GET_DH_KDF_OUTLEN (EVP_PKEY_ALG_CTRL + 10) +# define EVP_PKEY_CTRL_DH_KDF_UKM (EVP_PKEY_ALG_CTRL + 11) +# define EVP_PKEY_CTRL_GET_DH_KDF_UKM (EVP_PKEY_ALG_CTRL + 12) +# define EVP_PKEY_CTRL_DH_KDF_OID (EVP_PKEY_ALG_CTRL + 13) +# define EVP_PKEY_CTRL_GET_DH_KDF_OID (EVP_PKEY_ALG_CTRL + 14) + +/* KDF types */ +# define EVP_PKEY_DH_KDF_NONE 1 +# define EVP_PKEY_DH_KDF_X9_42 2 + +/* BEGIN ERROR CODES */ +/* + * The following lines are auto generated by the script mkerr.pl. Any changes + * made after this point may be overwritten when the script is next run. + */ +void ERR_load_DH_strings(void); + +/* Error codes for the DH functions. */ + +/* Function codes. */ +# define DH_F_COMPUTE_KEY 102 +# define DH_F_DHPARAMS_PRINT_FP 101 +# define DH_F_DH_BUILTIN_GENPARAMS 106 +# define DH_F_DH_CMS_DECRYPT 117 +# define DH_F_DH_CMS_SET_PEERKEY 118 +# define DH_F_DH_CMS_SET_SHARED_INFO 119 +# define DH_F_DH_COMPUTE_KEY 114 +# define DH_F_DH_GENERATE_KEY 115 +# define DH_F_DH_GENERATE_PARAMETERS_EX 116 +# define DH_F_DH_NEW_METHOD 105 +# define DH_F_DH_PARAM_DECODE 107 +# define DH_F_DH_PRIV_DECODE 110 +# define DH_F_DH_PRIV_ENCODE 111 +# define DH_F_DH_PUB_DECODE 108 +# define DH_F_DH_PUB_ENCODE 109 +# define DH_F_DO_DH_PRINT 100 +# define DH_F_GENERATE_KEY 103 +# define DH_F_GENERATE_PARAMETERS 104 +# define DH_F_PKEY_DH_DERIVE 112 +# define DH_F_PKEY_DH_KEYGEN 113 + +/* Reason codes. */ +# define DH_R_BAD_GENERATOR 101 +# define DH_R_BN_DECODE_ERROR 109 +# define DH_R_BN_ERROR 106 +# define DH_R_DECODE_ERROR 104 +# define DH_R_INVALID_PUBKEY 102 +# define DH_R_KDF_PARAMETER_ERROR 112 +# define DH_R_KEYS_NOT_SET 108 +# define DH_R_KEY_SIZE_TOO_SMALL 110 +# define DH_R_MODULUS_TOO_LARGE 103 +# define DH_R_NON_FIPS_METHOD 111 +# define DH_R_NO_PARAMETERS_SET 107 +# define DH_R_NO_PRIVATE_VALUE 100 +# define DH_R_PARAMETER_ENCODING_ERROR 105 +# define DH_R_PEER_KEY_ERROR 113 +# define DH_R_SHARED_INFO_ERROR 114 + +#ifdef __cplusplus +} +#endif +#endif diff --git a/ext/openssl-win64/inc32/openssl/dsa.h b/ext/openssl-win64/inc32/openssl/dsa.h new file mode 100644 index 00000000..545358fd --- /dev/null +++ b/ext/openssl-win64/inc32/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/ext/openssl-win64/inc32/openssl/dtls1.h b/ext/openssl-win64/inc32/openssl/dtls1.h new file mode 100644 index 00000000..4af7e4a7 --- /dev/null +++ b/ext/openssl-win64/inc32/openssl/dtls1.h @@ -0,0 +1,271 @@ +/* ssl/dtls1.h */ +/* + * DTLS implementation written by Nagendra Modadugu + * (nagendra@cs.stanford.edu) for the OpenSSL project 2005. + */ +/* ==================================================================== + * Copyright (c) 1999-2005 The OpenSSL Project. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. All advertising materials mentioning features or use of this + * software must display the following acknowledgment: + * "This product includes software developed by the OpenSSL Project + * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" + * + * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to + * endorse or promote products derived from this software without + * prior written permission. For written permission, please contact + * openssl-core@OpenSSL.org. + * + * 5. Products derived from this software may not be called "OpenSSL" + * nor may "OpenSSL" appear in their names without prior written + * permission of the OpenSSL Project. + * + * 6. Redistributions of any form whatsoever must retain the following + * acknowledgment: + * "This product includes software developed by the OpenSSL Project + * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" + * + * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY + * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * ==================================================================== + * + * This product includes cryptographic software written by Eric Young + * (eay@cryptsoft.com). This product includes software written by Tim + * Hudson (tjh@cryptsoft.com). + * + */ + +#ifndef HEADER_DTLS1_H +# define HEADER_DTLS1_H + +# include +# include +# ifdef OPENSSL_SYS_VMS +# include +# include +# endif +# ifdef OPENSSL_SYS_WIN32 +/* Needed for struct timeval */ +# include +# elif defined(OPENSSL_SYS_NETWARE) && !defined(_WINSOCK2API_) +# include +# else +# if defined(OPENSSL_SYS_VXWORKS) +# include +# else +# include +# endif +# endif + +#ifdef __cplusplus +extern "C" { +#endif + +# define DTLS1_VERSION 0xFEFF +# define DTLS1_2_VERSION 0xFEFD +# define DTLS_MAX_VERSION DTLS1_2_VERSION + +# define DTLS1_BAD_VER 0x0100 + +/* Special value for method supporting multiple versions */ +# define DTLS_ANY_VERSION 0x1FFFF + +# if 0 +/* this alert description is not specified anywhere... */ +# define DTLS1_AD_MISSING_HANDSHAKE_MESSAGE 110 +# endif + +/* lengths of messages */ +# define DTLS1_COOKIE_LENGTH 256 + +# define DTLS1_RT_HEADER_LENGTH 13 + +# define DTLS1_HM_HEADER_LENGTH 12 + +# define DTLS1_HM_BAD_FRAGMENT -2 +# define DTLS1_HM_FRAGMENT_RETRY -3 + +# define DTLS1_CCS_HEADER_LENGTH 1 + +# ifdef DTLS1_AD_MISSING_HANDSHAKE_MESSAGE +# define DTLS1_AL_HEADER_LENGTH 7 +# else +# define DTLS1_AL_HEADER_LENGTH 2 +# endif + +# ifndef OPENSSL_NO_SSL_INTERN + +# ifndef OPENSSL_NO_SCTP +# define DTLS1_SCTP_AUTH_LABEL "EXPORTER_DTLS_OVER_SCTP" +# endif + +/* Max MTU overhead we know about so far is 40 for IPv6 + 8 for UDP */ +# define DTLS1_MAX_MTU_OVERHEAD 48 + +typedef struct dtls1_bitmap_st { + unsigned long map; /* track 32 packets on 32-bit systems and 64 + * - on 64-bit systems */ + unsigned char max_seq_num[8]; /* max record number seen so far, 64-bit + * value in big-endian encoding */ +} DTLS1_BITMAP; + +struct dtls1_retransmit_state { + EVP_CIPHER_CTX *enc_write_ctx; /* cryptographic state */ + EVP_MD_CTX *write_hash; /* used for mac generation */ +# ifndef OPENSSL_NO_COMP + COMP_CTX *compress; /* compression */ +# else + char *compress; +# endif + SSL_SESSION *session; + unsigned short epoch; +}; + +struct hm_header_st { + unsigned char type; + unsigned long msg_len; + unsigned short seq; + unsigned long frag_off; + unsigned long frag_len; + unsigned int is_ccs; + struct dtls1_retransmit_state saved_retransmit_state; +}; + +struct ccs_header_st { + unsigned char type; + unsigned short seq; +}; + +struct dtls1_timeout_st { + /* Number of read timeouts so far */ + unsigned int read_timeouts; + /* Number of write timeouts so far */ + unsigned int write_timeouts; + /* Number of alerts received so far */ + unsigned int num_alerts; +}; + +typedef struct record_pqueue_st { + unsigned short epoch; + pqueue q; +} record_pqueue; + +typedef struct hm_fragment_st { + struct hm_header_st msg_header; + unsigned char *fragment; + unsigned char *reassembly; +} hm_fragment; + +typedef struct dtls1_state_st { + unsigned int send_cookie; + unsigned char cookie[DTLS1_COOKIE_LENGTH]; + unsigned char rcvd_cookie[DTLS1_COOKIE_LENGTH]; + unsigned int cookie_len; + /* + * The current data and handshake epoch. This is initially + * undefined, and starts at zero once the initial handshake is + * completed + */ + unsigned short r_epoch; + unsigned short w_epoch; + /* records being received in the current epoch */ + DTLS1_BITMAP bitmap; + /* renegotiation starts a new set of sequence numbers */ + DTLS1_BITMAP next_bitmap; + /* handshake message numbers */ + unsigned short handshake_write_seq; + unsigned short next_handshake_write_seq; + unsigned short handshake_read_seq; + /* save last sequence number for retransmissions */ + unsigned char last_write_sequence[8]; + /* Received handshake records (processed and unprocessed) */ + record_pqueue unprocessed_rcds; + record_pqueue processed_rcds; + /* Buffered handshake messages */ + pqueue buffered_messages; + /* Buffered (sent) handshake records */ + pqueue sent_messages; + /* + * Buffered application records. Only for records between CCS and + * Finished to prevent either protocol violation or unnecessary message + * loss. + */ + record_pqueue buffered_app_data; + /* Is set when listening for new connections with dtls1_listen() */ + unsigned int listen; + unsigned int link_mtu; /* max on-the-wire DTLS packet size */ + unsigned int mtu; /* max DTLS packet size */ + struct hm_header_st w_msg_hdr; + struct hm_header_st r_msg_hdr; + struct dtls1_timeout_st timeout; + /* + * Indicates when the last handshake msg or heartbeat sent will timeout + */ + struct timeval next_timeout; + /* Timeout duration */ + unsigned short timeout_duration; + /* + * storage for Alert/Handshake protocol data received but not yet + * processed by ssl3_read_bytes: + */ + unsigned char alert_fragment[DTLS1_AL_HEADER_LENGTH]; + unsigned int alert_fragment_len; + unsigned char handshake_fragment[DTLS1_HM_HEADER_LENGTH]; + unsigned int handshake_fragment_len; + unsigned int retransmitting; + /* + * Set when the handshake is ready to process peer's ChangeCipherSpec message. + * Cleared after the message has been processed. + */ + unsigned int change_cipher_spec_ok; +# ifndef OPENSSL_NO_SCTP + /* used when SSL_ST_XX_FLUSH is entered */ + int next_state; + int shutdown_received; +# endif +} DTLS1_STATE; + +typedef struct dtls1_record_data_st { + unsigned char *packet; + unsigned int packet_length; + SSL3_BUFFER rbuf; + SSL3_RECORD rrec; +# ifndef OPENSSL_NO_SCTP + struct bio_dgram_sctp_rcvinfo recordinfo; +# endif +} DTLS1_RECORD_DATA; + +# endif + +/* Timeout multipliers (timeout slice is defined in apps/timeouts.h */ +# define DTLS1_TMO_READ_COUNT 2 +# define DTLS1_TMO_WRITE_COUNT 2 + +# define DTLS1_TMO_ALERT_COUNT 12 + +#ifdef __cplusplus +} +#endif +#endif diff --git a/ext/openssl-win64/inc32/openssl/e_os2.h b/ext/openssl-win64/inc32/openssl/e_os2.h new file mode 100644 index 00000000..613607f8 --- /dev/null +++ b/ext/openssl-win64/inc32/openssl/e_os2.h @@ -0,0 +1,322 @@ +/* e_os2.h */ +/* ==================================================================== + * Copyright (c) 1998-2000 The OpenSSL Project. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. All advertising materials mentioning features or use of this + * software must display the following acknowledgment: + * "This product includes software developed by the OpenSSL Project + * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" + * + * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to + * endorse or promote products derived from this software without + * prior written permission. For written permission, please contact + * openssl-core@openssl.org. + * + * 5. Products derived from this software may not be called "OpenSSL" + * nor may "OpenSSL" appear in their names without prior written + * permission of the OpenSSL Project. + * + * 6. Redistributions of any form whatsoever must retain the following + * acknowledgment: + * "This product includes software developed by the OpenSSL Project + * for use in the OpenSSL Toolkit (http://www.openssl.org/)" + * + * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY + * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * ==================================================================== + * + * This product includes cryptographic software written by Eric Young + * (eay@cryptsoft.com). This product includes software written by Tim + * Hudson (tjh@cryptsoft.com). + * + */ + +#include + +#ifndef HEADER_E_OS2_H +# define HEADER_E_OS2_H + +#ifdef __cplusplus +extern "C" { +#endif + +/****************************************************************************** + * Detect operating systems. This probably needs completing. + * The result is that at least one OPENSSL_SYS_os macro should be defined. + * However, if none is defined, Unix is assumed. + **/ + +# define OPENSSL_SYS_UNIX + +/* ---------------------- Macintosh, before MacOS X ----------------------- */ +# if defined(__MWERKS__) && defined(macintosh) || defined(OPENSSL_SYSNAME_MAC) +# undef OPENSSL_SYS_UNIX +# define OPENSSL_SYS_MACINTOSH_CLASSIC +# endif + +/* ---------------------- NetWare ----------------------------------------- */ +# if defined(NETWARE) || defined(OPENSSL_SYSNAME_NETWARE) +# undef OPENSSL_SYS_UNIX +# define OPENSSL_SYS_NETWARE +# endif + +/* --------------------- Microsoft operating systems ---------------------- */ + +/* + * Note that MSDOS actually denotes 32-bit environments running on top of + * MS-DOS, such as DJGPP one. + */ +# if defined(OPENSSL_SYSNAME_MSDOS) +# undef OPENSSL_SYS_UNIX +# define OPENSSL_SYS_MSDOS +# endif + +/* + * For 32 bit environment, there seems to be the CygWin environment and then + * all the others that try to do the same thing Microsoft does... + */ +# if defined(OPENSSL_SYSNAME_UWIN) +# undef OPENSSL_SYS_UNIX +# define OPENSSL_SYS_WIN32_UWIN +# else +# if defined(__CYGWIN__) || defined(OPENSSL_SYSNAME_CYGWIN) +# undef OPENSSL_SYS_UNIX +# define OPENSSL_SYS_WIN32_CYGWIN +# else +# if defined(_WIN32) || defined(OPENSSL_SYSNAME_WIN32) +# undef OPENSSL_SYS_UNIX +# define OPENSSL_SYS_WIN32 +# endif +# if defined(OPENSSL_SYSNAME_WINNT) +# undef OPENSSL_SYS_UNIX +# define OPENSSL_SYS_WINNT +# endif +# if defined(OPENSSL_SYSNAME_WINCE) +# undef OPENSSL_SYS_UNIX +# define OPENSSL_SYS_WINCE +# endif +# endif +# endif + +/* Anything that tries to look like Microsoft is "Windows" */ +# if defined(OPENSSL_SYS_WIN32) || defined(OPENSSL_SYS_WINNT) || defined(OPENSSL_SYS_WINCE) +# undef OPENSSL_SYS_UNIX +# define OPENSSL_SYS_WINDOWS +# ifndef OPENSSL_SYS_MSDOS +# define OPENSSL_SYS_MSDOS +# endif +# endif + +/* + * DLL settings. This part is a bit tough, because it's up to the + * application implementor how he or she will link the application, so it + * requires some macro to be used. + */ +# ifdef OPENSSL_SYS_WINDOWS +# ifndef OPENSSL_OPT_WINDLL +# if defined(_WINDLL) /* This is used when building OpenSSL to + * indicate that DLL linkage should be used */ +# define OPENSSL_OPT_WINDLL +# endif +# endif +# endif + +/* ------------------------------- OpenVMS -------------------------------- */ +# if defined(__VMS) || defined(VMS) || defined(OPENSSL_SYSNAME_VMS) +# undef OPENSSL_SYS_UNIX +# define OPENSSL_SYS_VMS +# if defined(__DECC) +# define OPENSSL_SYS_VMS_DECC +# elif defined(__DECCXX) +# define OPENSSL_SYS_VMS_DECC +# define OPENSSL_SYS_VMS_DECCXX +# else +# define OPENSSL_SYS_VMS_NODECC +# endif +# endif + +/* -------------------------------- OS/2 ---------------------------------- */ +# if defined(__EMX__) || defined(__OS2__) +# undef OPENSSL_SYS_UNIX +# define OPENSSL_SYS_OS2 +# endif + +/* -------------------------------- Unix ---------------------------------- */ +# ifdef OPENSSL_SYS_UNIX +# if defined(linux) || defined(__linux__) || defined(OPENSSL_SYSNAME_LINUX) +# define OPENSSL_SYS_LINUX +# endif +# ifdef OPENSSL_SYSNAME_MPE +# define OPENSSL_SYS_MPE +# endif +# ifdef OPENSSL_SYSNAME_SNI +# define OPENSSL_SYS_SNI +# endif +# ifdef OPENSSL_SYSNAME_ULTRASPARC +# define OPENSSL_SYS_ULTRASPARC +# endif +# ifdef OPENSSL_SYSNAME_NEWS4 +# define OPENSSL_SYS_NEWS4 +# endif +# ifdef OPENSSL_SYSNAME_MACOSX +# define OPENSSL_SYS_MACOSX +# endif +# ifdef OPENSSL_SYSNAME_MACOSX_RHAPSODY +# define OPENSSL_SYS_MACOSX_RHAPSODY +# define OPENSSL_SYS_MACOSX +# endif +# ifdef OPENSSL_SYSNAME_SUNOS +# define OPENSSL_SYS_SUNOS +# endif +# if defined(_CRAY) || defined(OPENSSL_SYSNAME_CRAY) +# define OPENSSL_SYS_CRAY +# endif +# if defined(_AIX) || defined(OPENSSL_SYSNAME_AIX) +# define OPENSSL_SYS_AIX +# endif +# endif + +/* -------------------------------- VOS ----------------------------------- */ +# if defined(__VOS__) || defined(OPENSSL_SYSNAME_VOS) +# define OPENSSL_SYS_VOS +# ifdef __HPPA__ +# define OPENSSL_SYS_VOS_HPPA +# endif +# ifdef __IA32__ +# define OPENSSL_SYS_VOS_IA32 +# endif +# endif + +/* ------------------------------ VxWorks --------------------------------- */ +# ifdef OPENSSL_SYSNAME_VXWORKS +# define OPENSSL_SYS_VXWORKS +# endif + +/* -------------------------------- BeOS ---------------------------------- */ +# if defined(__BEOS__) +# define OPENSSL_SYS_BEOS +# include +# if defined(BONE_VERSION) +# define OPENSSL_SYS_BEOS_BONE +# else +# define OPENSSL_SYS_BEOS_R5 +# endif +# endif + +/** + * That's it for OS-specific stuff + *****************************************************************************/ + +/* Specials for I/O an exit */ +# ifdef OPENSSL_SYS_MSDOS +# define OPENSSL_UNISTD_IO +# define OPENSSL_DECLARE_EXIT extern void exit(int); +# else +# define OPENSSL_UNISTD_IO OPENSSL_UNISTD +# define OPENSSL_DECLARE_EXIT /* declared in unistd.h */ +# endif + +/*- + * Definitions of OPENSSL_GLOBAL and OPENSSL_EXTERN, to define and declare + * certain global symbols that, with some compilers under VMS, have to be + * defined and declared explicitely with globaldef and globalref. + * Definitions of OPENSSL_EXPORT and OPENSSL_IMPORT, to define and declare + * DLL exports and imports for compilers under Win32. These are a little + * more complicated to use. Basically, for any library that exports some + * global variables, the following code must be present in the header file + * that declares them, before OPENSSL_EXTERN is used: + * + * #ifdef SOME_BUILD_FLAG_MACRO + * # undef OPENSSL_EXTERN + * # define OPENSSL_EXTERN OPENSSL_EXPORT + * #endif + * + * The default is to have OPENSSL_EXPORT, OPENSSL_IMPORT and OPENSSL_GLOBAL + * have some generally sensible values, and for OPENSSL_EXTERN to have the + * value OPENSSL_IMPORT. + */ + +# if defined(OPENSSL_SYS_VMS_NODECC) +# define OPENSSL_EXPORT globalref +# define OPENSSL_IMPORT globalref +# define OPENSSL_GLOBAL globaldef +# elif defined(OPENSSL_SYS_WINDOWS) && defined(OPENSSL_OPT_WINDLL) +# define OPENSSL_EXPORT extern __declspec(dllexport) +# define OPENSSL_IMPORT extern __declspec(dllimport) +# define OPENSSL_GLOBAL +# else +# define OPENSSL_EXPORT extern +# define OPENSSL_IMPORT extern +# define OPENSSL_GLOBAL +# endif +# define OPENSSL_EXTERN OPENSSL_IMPORT + +/*- + * Macros to allow global variables to be reached through function calls when + * required (if a shared library version requires it, for example. + * The way it's done allows definitions like this: + * + * // in foobar.c + * OPENSSL_IMPLEMENT_GLOBAL(int,foobar,0) + * // in foobar.h + * OPENSSL_DECLARE_GLOBAL(int,foobar); + * #define foobar OPENSSL_GLOBAL_REF(foobar) + */ +# ifdef OPENSSL_EXPORT_VAR_AS_FUNCTION +# define OPENSSL_IMPLEMENT_GLOBAL(type,name,value) \ + type *_shadow_##name(void) \ + { static type _hide_##name=value; return &_hide_##name; } +# define OPENSSL_DECLARE_GLOBAL(type,name) type *_shadow_##name(void) +# define OPENSSL_GLOBAL_REF(name) (*(_shadow_##name())) +# else +# define OPENSSL_IMPLEMENT_GLOBAL(type,name,value) OPENSSL_GLOBAL type _shadow_##name=value; +# define OPENSSL_DECLARE_GLOBAL(type,name) OPENSSL_EXPORT type _shadow_##name +# define OPENSSL_GLOBAL_REF(name) _shadow_##name +# endif + +# if defined(OPENSSL_SYS_MACINTOSH_CLASSIC) && macintosh==1 && !defined(MAC_OS_GUSI_SOURCE) +# define ossl_ssize_t long +# endif + +# ifdef OPENSSL_SYS_MSDOS +# define ossl_ssize_t long +# endif + +# if defined(NeXT) || defined(OPENSSL_SYS_NEWS4) || defined(OPENSSL_SYS_SUNOS) +# define ssize_t int +# endif + +# if defined(__ultrix) && !defined(ssize_t) +# define ossl_ssize_t int +# endif + +# ifndef ossl_ssize_t +# define ossl_ssize_t ssize_t +# endif + +#ifdef __cplusplus +} +#endif +#endif diff --git a/ext/openssl-win64/inc32/openssl/ec.h b/ext/openssl-win64/inc32/openssl/ec.h new file mode 100644 index 00000000..98edfdf8 --- /dev/null +++ b/ext/openssl-win64/inc32/openssl/ec.h @@ -0,0 +1,1281 @@ +/* crypto/ec/ec.h */ +/* + * Originally written by Bodo Moeller for the OpenSSL project. + */ +/** + * \file crypto/ec/ec.h Include file for the OpenSSL EC functions + * \author Originally written by Bodo Moeller for the OpenSSL project + */ +/* ==================================================================== + * Copyright (c) 1998-2005 The OpenSSL Project. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. All advertising materials mentioning features or use of this + * software must display the following acknowledgment: + * "This product includes software developed by the OpenSSL Project + * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" + * + * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to + * endorse or promote products derived from this software without + * prior written permission. For written permission, please contact + * openssl-core@openssl.org. + * + * 5. Products derived from this software may not be called "OpenSSL" + * nor may "OpenSSL" appear in their names without prior written + * permission of the OpenSSL Project. + * + * 6. Redistributions of any form whatsoever must retain the following + * acknowledgment: + * "This product includes software developed by the OpenSSL Project + * for use in the OpenSSL Toolkit (http://www.openssl.org/)" + * + * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY + * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * ==================================================================== + * + * This product includes cryptographic software written by Eric Young + * (eay@cryptsoft.com). This product includes software written by Tim + * Hudson (tjh@cryptsoft.com). + * + */ +/* ==================================================================== + * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED. + * + * Portions of the attached software ("Contribution") are developed by + * SUN MICROSYSTEMS, INC., and are contributed to the OpenSSL project. + * + * The Contribution is licensed pursuant to the OpenSSL open source + * license provided above. + * + * The elliptic curve binary polynomial software is originally written by + * Sheueling Chang Shantz and Douglas Stebila of Sun Microsystems Laboratories. + * + */ + +#ifndef HEADER_EC_H +# define HEADER_EC_H + +# include + +# ifdef OPENSSL_NO_EC +# error EC is disabled. +# endif + +# include +# include +# ifndef OPENSSL_NO_DEPRECATED +# include +# endif + +# ifdef __cplusplus +extern "C" { +# elif defined(__SUNPRO_C) +# if __SUNPRO_C >= 0x520 +# pragma error_messages (off,E_ARRAY_OF_INCOMPLETE_NONAME,E_ARRAY_OF_INCOMPLETE) +# endif +# endif + +# ifndef OPENSSL_ECC_MAX_FIELD_BITS +# define OPENSSL_ECC_MAX_FIELD_BITS 661 +# endif + +/** Enum for the point conversion form as defined in X9.62 (ECDSA) + * for the encoding of a elliptic curve point (x,y) */ +typedef enum { + /** the point is encoded as z||x, where the octet z specifies + * which solution of the quadratic equation y is */ + POINT_CONVERSION_COMPRESSED = 2, + /** the point is encoded as z||x||y, where z is the octet 0x02 */ + POINT_CONVERSION_UNCOMPRESSED = 4, + /** the point is encoded as z||x||y, where the octet z specifies + * which solution of the quadratic equation y is */ + POINT_CONVERSION_HYBRID = 6 +} point_conversion_form_t; + +typedef struct ec_method_st EC_METHOD; + +typedef struct ec_group_st + /*- + EC_METHOD *meth; + -- field definition + -- curve coefficients + -- optional generator with associated information (order, cofactor) + -- optional extra data (precomputed table for fast computation of multiples of generator) + -- ASN1 stuff + */ + EC_GROUP; + +typedef struct ec_point_st EC_POINT; + +/********************************************************************/ +/* EC_METHODs for curves over GF(p) */ +/********************************************************************/ + +/** Returns the basic GFp ec methods which provides the basis for the + * optimized methods. + * \return EC_METHOD object + */ +const EC_METHOD *EC_GFp_simple_method(void); + +/** Returns GFp methods using montgomery multiplication. + * \return EC_METHOD object + */ +const EC_METHOD *EC_GFp_mont_method(void); + +/** Returns GFp methods using optimized methods for NIST recommended curves + * \return EC_METHOD object + */ +const EC_METHOD *EC_GFp_nist_method(void); + +# ifndef OPENSSL_NO_EC_NISTP_64_GCC_128 +/** Returns 64-bit optimized methods for nistp224 + * \return EC_METHOD object + */ +const EC_METHOD *EC_GFp_nistp224_method(void); + +/** Returns 64-bit optimized methods for nistp256 + * \return EC_METHOD object + */ +const EC_METHOD *EC_GFp_nistp256_method(void); + +/** Returns 64-bit optimized methods for nistp521 + * \return EC_METHOD object + */ +const EC_METHOD *EC_GFp_nistp521_method(void); +# endif + +# ifndef OPENSSL_NO_EC2M +/********************************************************************/ +/* EC_METHOD for curves over GF(2^m) */ +/********************************************************************/ + +/** Returns the basic GF2m ec method + * \return EC_METHOD object + */ +const EC_METHOD *EC_GF2m_simple_method(void); + +# endif + +/********************************************************************/ +/* EC_GROUP functions */ +/********************************************************************/ + +/** Creates a new EC_GROUP object + * \param meth EC_METHOD to use + * \return newly created EC_GROUP object or NULL in case of an error. + */ +EC_GROUP *EC_GROUP_new(const EC_METHOD *meth); + +/** Frees a EC_GROUP object + * \param group EC_GROUP object to be freed. + */ +void EC_GROUP_free(EC_GROUP *group); + +/** Clears and frees a EC_GROUP object + * \param group EC_GROUP object to be cleared and freed. + */ +void EC_GROUP_clear_free(EC_GROUP *group); + +/** Copies EC_GROUP objects. Note: both EC_GROUPs must use the same EC_METHOD. + * \param dst destination EC_GROUP object + * \param src source EC_GROUP object + * \return 1 on success and 0 if an error occurred. + */ +int EC_GROUP_copy(EC_GROUP *dst, const EC_GROUP *src); + +/** Creates a new EC_GROUP object and copies the copies the content + * form src to the newly created EC_KEY object + * \param src source EC_GROUP object + * \return newly created EC_GROUP object or NULL in case of an error. + */ +EC_GROUP *EC_GROUP_dup(const EC_GROUP *src); + +/** Returns the EC_METHOD of the EC_GROUP object. + * \param group EC_GROUP object + * \return EC_METHOD used in this EC_GROUP object. + */ +const EC_METHOD *EC_GROUP_method_of(const EC_GROUP *group); + +/** Returns the field type of the EC_METHOD. + * \param meth EC_METHOD object + * \return NID of the underlying field type OID. + */ +int EC_METHOD_get_field_type(const EC_METHOD *meth); + +/** Sets the generator and it's order/cofactor of a EC_GROUP object. + * \param group EC_GROUP object + * \param generator EC_POINT object with the generator. + * \param order the order of the group generated by the generator. + * \param cofactor the index of the sub-group generated by the generator + * in the group of all points on the elliptic curve. + * \return 1 on success and 0 if an error occured + */ +int EC_GROUP_set_generator(EC_GROUP *group, const EC_POINT *generator, + const BIGNUM *order, const BIGNUM *cofactor); + +/** Returns the generator of a EC_GROUP object. + * \param group EC_GROUP object + * \return the currently used generator (possibly NULL). + */ +const EC_POINT *EC_GROUP_get0_generator(const EC_GROUP *group); + +/** Returns the montgomery data for order(Generator) + * \param group EC_GROUP object + * \return the currently used generator (possibly NULL). +*/ +BN_MONT_CTX *EC_GROUP_get_mont_data(const EC_GROUP *group); + +/** Gets the order of a EC_GROUP + * \param group EC_GROUP object + * \param order BIGNUM to which the order is copied + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occured + */ +int EC_GROUP_get_order(const EC_GROUP *group, BIGNUM *order, BN_CTX *ctx); + +/** Gets the cofactor of a EC_GROUP + * \param group EC_GROUP object + * \param cofactor BIGNUM to which the cofactor is copied + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occured + */ +int EC_GROUP_get_cofactor(const EC_GROUP *group, BIGNUM *cofactor, + BN_CTX *ctx); + +/** Sets the name of a EC_GROUP object + * \param group EC_GROUP object + * \param nid NID of the curve name OID + */ +void EC_GROUP_set_curve_name(EC_GROUP *group, int nid); + +/** Returns the curve name of a EC_GROUP object + * \param group EC_GROUP object + * \return NID of the curve name OID or 0 if not set. + */ +int EC_GROUP_get_curve_name(const EC_GROUP *group); + +void EC_GROUP_set_asn1_flag(EC_GROUP *group, int flag); +int EC_GROUP_get_asn1_flag(const EC_GROUP *group); + +void EC_GROUP_set_point_conversion_form(EC_GROUP *group, + point_conversion_form_t form); +point_conversion_form_t EC_GROUP_get_point_conversion_form(const EC_GROUP *); + +unsigned char *EC_GROUP_get0_seed(const EC_GROUP *x); +size_t EC_GROUP_get_seed_len(const EC_GROUP *); +size_t EC_GROUP_set_seed(EC_GROUP *, const unsigned char *, size_t len); + +/** Sets the parameter of a ec over GFp defined by y^2 = x^3 + a*x + b + * \param group EC_GROUP object + * \param p BIGNUM with the prime number + * \param a BIGNUM with parameter a of the equation + * \param b BIGNUM with parameter b of the equation + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occured + */ +int EC_GROUP_set_curve_GFp(EC_GROUP *group, const BIGNUM *p, const BIGNUM *a, + const BIGNUM *b, BN_CTX *ctx); + +/** Gets the parameter of the ec over GFp defined by y^2 = x^3 + a*x + b + * \param group EC_GROUP object + * \param p BIGNUM for the prime number + * \param a BIGNUM for parameter a of the equation + * \param b BIGNUM for parameter b of the equation + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occured + */ +int EC_GROUP_get_curve_GFp(const EC_GROUP *group, BIGNUM *p, BIGNUM *a, + BIGNUM *b, BN_CTX *ctx); + +# ifndef OPENSSL_NO_EC2M +/** Sets the parameter of a ec over GF2m defined by y^2 + x*y = x^3 + a*x^2 + b + * \param group EC_GROUP object + * \param p BIGNUM with the polynomial defining the underlying field + * \param a BIGNUM with parameter a of the equation + * \param b BIGNUM with parameter b of the equation + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occured + */ +int EC_GROUP_set_curve_GF2m(EC_GROUP *group, const BIGNUM *p, const BIGNUM *a, + const BIGNUM *b, BN_CTX *ctx); + +/** Gets the parameter of the ec over GF2m defined by y^2 + x*y = x^3 + a*x^2 + b + * \param group EC_GROUP object + * \param p BIGNUM for the polynomial defining the underlying field + * \param a BIGNUM for parameter a of the equation + * \param b BIGNUM for parameter b of the equation + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occured + */ +int EC_GROUP_get_curve_GF2m(const EC_GROUP *group, BIGNUM *p, BIGNUM *a, + BIGNUM *b, BN_CTX *ctx); +# endif +/** Returns the number of bits needed to represent a field element + * \param group EC_GROUP object + * \return number of bits needed to represent a field element + */ +int EC_GROUP_get_degree(const EC_GROUP *group); + +/** Checks whether the parameter in the EC_GROUP define a valid ec group + * \param group EC_GROUP object + * \param ctx BN_CTX object (optional) + * \return 1 if group is a valid ec group and 0 otherwise + */ +int EC_GROUP_check(const EC_GROUP *group, BN_CTX *ctx); + +/** Checks whether the discriminant of the elliptic curve is zero or not + * \param group EC_GROUP object + * \param ctx BN_CTX object (optional) + * \return 1 if the discriminant is not zero and 0 otherwise + */ +int EC_GROUP_check_discriminant(const EC_GROUP *group, BN_CTX *ctx); + +/** Compares two EC_GROUP objects + * \param a first EC_GROUP object + * \param b second EC_GROUP object + * \param ctx BN_CTX object (optional) + * \return 0 if both groups are equal and 1 otherwise + */ +int EC_GROUP_cmp(const EC_GROUP *a, const EC_GROUP *b, BN_CTX *ctx); + +/* + * EC_GROUP_new_GF*() calls EC_GROUP_new() and EC_GROUP_set_GF*() after + * choosing an appropriate EC_METHOD + */ + +/** Creates a new EC_GROUP object with the specified parameters defined + * over GFp (defined by the equation y^2 = x^3 + a*x + b) + * \param p BIGNUM with the prime number + * \param a BIGNUM with the parameter a of the equation + * \param b BIGNUM with the parameter b of the equation + * \param ctx BN_CTX object (optional) + * \return newly created EC_GROUP object with the specified parameters + */ +EC_GROUP *EC_GROUP_new_curve_GFp(const BIGNUM *p, const BIGNUM *a, + const BIGNUM *b, BN_CTX *ctx); +# ifndef OPENSSL_NO_EC2M +/** Creates a new EC_GROUP object with the specified parameters defined + * over GF2m (defined by the equation y^2 + x*y = x^3 + a*x^2 + b) + * \param p BIGNUM with the polynomial defining the underlying field + * \param a BIGNUM with the parameter a of the equation + * \param b BIGNUM with the parameter b of the equation + * \param ctx BN_CTX object (optional) + * \return newly created EC_GROUP object with the specified parameters + */ +EC_GROUP *EC_GROUP_new_curve_GF2m(const BIGNUM *p, const BIGNUM *a, + const BIGNUM *b, BN_CTX *ctx); +# endif +/** Creates a EC_GROUP object with a curve specified by a NID + * \param nid NID of the OID of the curve name + * \return newly created EC_GROUP object with specified curve or NULL + * if an error occurred + */ +EC_GROUP *EC_GROUP_new_by_curve_name(int nid); + +/********************************************************************/ +/* handling of internal curves */ +/********************************************************************/ + +typedef struct { + int nid; + const char *comment; +} EC_builtin_curve; + +/* + * EC_builtin_curves(EC_builtin_curve *r, size_t size) returns number of all + * available curves or zero if a error occurred. In case r ist not zero + * nitems EC_builtin_curve structures are filled with the data of the first + * nitems internal groups + */ +size_t EC_get_builtin_curves(EC_builtin_curve *r, size_t nitems); + +const char *EC_curve_nid2nist(int nid); +int EC_curve_nist2nid(const char *name); + +/********************************************************************/ +/* EC_POINT functions */ +/********************************************************************/ + +/** Creates a new EC_POINT object for the specified EC_GROUP + * \param group EC_GROUP the underlying EC_GROUP object + * \return newly created EC_POINT object or NULL if an error occurred + */ +EC_POINT *EC_POINT_new(const EC_GROUP *group); + +/** Frees a EC_POINT object + * \param point EC_POINT object to be freed + */ +void EC_POINT_free(EC_POINT *point); + +/** Clears and frees a EC_POINT object + * \param point EC_POINT object to be cleared and freed + */ +void EC_POINT_clear_free(EC_POINT *point); + +/** Copies EC_POINT object + * \param dst destination EC_POINT object + * \param src source EC_POINT object + * \return 1 on success and 0 if an error occured + */ +int EC_POINT_copy(EC_POINT *dst, const EC_POINT *src); + +/** Creates a new EC_POINT object and copies the content of the supplied + * EC_POINT + * \param src source EC_POINT object + * \param group underlying the EC_GROUP object + * \return newly created EC_POINT object or NULL if an error occurred + */ +EC_POINT *EC_POINT_dup(const EC_POINT *src, const EC_GROUP *group); + +/** Returns the EC_METHOD used in EC_POINT object + * \param point EC_POINT object + * \return the EC_METHOD used + */ +const EC_METHOD *EC_POINT_method_of(const EC_POINT *point); + +/** Sets a point to infinity (neutral element) + * \param group underlying EC_GROUP object + * \param point EC_POINT to set to infinity + * \return 1 on success and 0 if an error occured + */ +int EC_POINT_set_to_infinity(const EC_GROUP *group, EC_POINT *point); + +/** Sets the jacobian projective coordinates of a EC_POINT over GFp + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM with the x-coordinate + * \param y BIGNUM with the y-coordinate + * \param z BIGNUM with the z-coordinate + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occured + */ +int EC_POINT_set_Jprojective_coordinates_GFp(const EC_GROUP *group, + EC_POINT *p, const BIGNUM *x, + const BIGNUM *y, const BIGNUM *z, + BN_CTX *ctx); + +/** Gets the jacobian projective coordinates of a EC_POINT over GFp + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM for the x-coordinate + * \param y BIGNUM for the y-coordinate + * \param z BIGNUM for the z-coordinate + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occured + */ +int EC_POINT_get_Jprojective_coordinates_GFp(const EC_GROUP *group, + const EC_POINT *p, BIGNUM *x, + BIGNUM *y, BIGNUM *z, + BN_CTX *ctx); + +/** Sets the affine coordinates of a EC_POINT over GFp + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM with the x-coordinate + * \param y BIGNUM with the y-coordinate + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occured + */ +int EC_POINT_set_affine_coordinates_GFp(const EC_GROUP *group, EC_POINT *p, + const BIGNUM *x, const BIGNUM *y, + BN_CTX *ctx); + +/** Gets the affine coordinates of a EC_POINT over GFp + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM for the x-coordinate + * \param y BIGNUM for the y-coordinate + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occured + */ +int EC_POINT_get_affine_coordinates_GFp(const EC_GROUP *group, + const EC_POINT *p, BIGNUM *x, + BIGNUM *y, BN_CTX *ctx); + +/** Sets the x9.62 compressed coordinates of a EC_POINT over GFp + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM with x-coordinate + * \param y_bit integer with the y-Bit (either 0 or 1) + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occured + */ +int EC_POINT_set_compressed_coordinates_GFp(const EC_GROUP *group, + EC_POINT *p, const BIGNUM *x, + int y_bit, BN_CTX *ctx); +# ifndef OPENSSL_NO_EC2M +/** Sets the affine coordinates of a EC_POINT over GF2m + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM with the x-coordinate + * \param y BIGNUM with the y-coordinate + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occured + */ +int EC_POINT_set_affine_coordinates_GF2m(const EC_GROUP *group, EC_POINT *p, + const BIGNUM *x, const BIGNUM *y, + BN_CTX *ctx); + +/** Gets the affine coordinates of a EC_POINT over GF2m + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM for the x-coordinate + * \param y BIGNUM for the y-coordinate + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occured + */ +int EC_POINT_get_affine_coordinates_GF2m(const EC_GROUP *group, + const EC_POINT *p, BIGNUM *x, + BIGNUM *y, BN_CTX *ctx); + +/** Sets the x9.62 compressed coordinates of a EC_POINT over GF2m + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM with x-coordinate + * \param y_bit integer with the y-Bit (either 0 or 1) + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occured + */ +int EC_POINT_set_compressed_coordinates_GF2m(const EC_GROUP *group, + EC_POINT *p, const BIGNUM *x, + int y_bit, BN_CTX *ctx); +# endif +/** Encodes a EC_POINT object to a octet string + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param form point conversion form + * \param buf memory buffer for the result. If NULL the function returns + * required buffer size. + * \param len length of the memory buffer + * \param ctx BN_CTX object (optional) + * \return the length of the encoded octet string or 0 if an error occurred + */ +size_t EC_POINT_point2oct(const EC_GROUP *group, const EC_POINT *p, + point_conversion_form_t form, + unsigned char *buf, size_t len, BN_CTX *ctx); + +/** Decodes a EC_POINT from a octet string + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param buf memory buffer with the encoded ec point + * \param len length of the encoded ec point + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occured + */ +int EC_POINT_oct2point(const EC_GROUP *group, EC_POINT *p, + const unsigned char *buf, size_t len, BN_CTX *ctx); + +/* other interfaces to point2oct/oct2point: */ +BIGNUM *EC_POINT_point2bn(const EC_GROUP *, const EC_POINT *, + point_conversion_form_t form, BIGNUM *, BN_CTX *); +EC_POINT *EC_POINT_bn2point(const EC_GROUP *, const BIGNUM *, + EC_POINT *, BN_CTX *); +char *EC_POINT_point2hex(const EC_GROUP *, const EC_POINT *, + point_conversion_form_t form, BN_CTX *); +EC_POINT *EC_POINT_hex2point(const EC_GROUP *, const char *, + EC_POINT *, BN_CTX *); + +/********************************************************************/ +/* functions for doing EC_POINT arithmetic */ +/********************************************************************/ + +/** Computes the sum of two EC_POINT + * \param group underlying EC_GROUP object + * \param r EC_POINT object for the result (r = a + b) + * \param a EC_POINT object with the first summand + * \param b EC_POINT object with the second summand + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occured + */ +int EC_POINT_add(const EC_GROUP *group, EC_POINT *r, const EC_POINT *a, + const EC_POINT *b, BN_CTX *ctx); + +/** Computes the double of a EC_POINT + * \param group underlying EC_GROUP object + * \param r EC_POINT object for the result (r = 2 * a) + * \param a EC_POINT object + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occured + */ +int EC_POINT_dbl(const EC_GROUP *group, EC_POINT *r, const EC_POINT *a, + BN_CTX *ctx); + +/** Computes the inverse of a EC_POINT + * \param group underlying EC_GROUP object + * \param a EC_POINT object to be inverted (it's used for the result as well) + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occured + */ +int EC_POINT_invert(const EC_GROUP *group, EC_POINT *a, BN_CTX *ctx); + +/** Checks whether the point is the neutral element of the group + * \param group the underlying EC_GROUP object + * \param p EC_POINT object + * \return 1 if the point is the neutral element and 0 otherwise + */ +int EC_POINT_is_at_infinity(const EC_GROUP *group, const EC_POINT *p); + +/** Checks whether the point is on the curve + * \param group underlying EC_GROUP object + * \param point EC_POINT object to check + * \param ctx BN_CTX object (optional) + * \return 1 if point if on the curve and 0 otherwise + */ +int EC_POINT_is_on_curve(const EC_GROUP *group, const EC_POINT *point, + BN_CTX *ctx); + +/** Compares two EC_POINTs + * \param group underlying EC_GROUP object + * \param a first EC_POINT object + * \param b second EC_POINT object + * \param ctx BN_CTX object (optional) + * \return 0 if both points are equal and a value != 0 otherwise + */ +int EC_POINT_cmp(const EC_GROUP *group, const EC_POINT *a, const EC_POINT *b, + BN_CTX *ctx); + +int EC_POINT_make_affine(const EC_GROUP *group, EC_POINT *point, BN_CTX *ctx); +int EC_POINTs_make_affine(const EC_GROUP *group, size_t num, + EC_POINT *points[], BN_CTX *ctx); + +/** Computes r = generator * n sum_{i=0}^{num-1} p[i] * m[i] + * \param group underlying EC_GROUP object + * \param r EC_POINT object for the result + * \param n BIGNUM with the multiplier for the group generator (optional) + * \param num number futher summands + * \param p array of size num of EC_POINT objects + * \param m array of size num of BIGNUM objects + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occured + */ +int EC_POINTs_mul(const EC_GROUP *group, EC_POINT *r, const BIGNUM *n, + size_t num, const EC_POINT *p[], const BIGNUM *m[], + BN_CTX *ctx); + +/** Computes r = generator * n + q * m + * \param group underlying EC_GROUP object + * \param r EC_POINT object for the result + * \param n BIGNUM with the multiplier for the group generator (optional) + * \param q EC_POINT object with the first factor of the second summand + * \param m BIGNUM with the second factor of the second summand + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occured + */ +int EC_POINT_mul(const EC_GROUP *group, EC_POINT *r, const BIGNUM *n, + const EC_POINT *q, const BIGNUM *m, BN_CTX *ctx); + +/** Stores multiples of generator for faster point multiplication + * \param group EC_GROUP object + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occured + */ +int EC_GROUP_precompute_mult(EC_GROUP *group, BN_CTX *ctx); + +/** Reports whether a precomputation has been done + * \param group EC_GROUP object + * \return 1 if a pre-computation has been done and 0 otherwise + */ +int EC_GROUP_have_precompute_mult(const EC_GROUP *group); + +/********************************************************************/ +/* ASN1 stuff */ +/********************************************************************/ + +/* + * EC_GROUP_get_basis_type() returns the NID of the basis type used to + * represent the field elements + */ +int EC_GROUP_get_basis_type(const EC_GROUP *); +# ifndef OPENSSL_NO_EC2M +int EC_GROUP_get_trinomial_basis(const EC_GROUP *, unsigned int *k); +int EC_GROUP_get_pentanomial_basis(const EC_GROUP *, unsigned int *k1, + unsigned int *k2, unsigned int *k3); +# endif + +# define OPENSSL_EC_NAMED_CURVE 0x001 + +typedef struct ecpk_parameters_st ECPKPARAMETERS; + +EC_GROUP *d2i_ECPKParameters(EC_GROUP **, const unsigned char **in, long len); +int i2d_ECPKParameters(const EC_GROUP *, unsigned char **out); + +# define d2i_ECPKParameters_bio(bp,x) ASN1_d2i_bio_of(EC_GROUP,NULL,d2i_ECPKParameters,bp,x) +# define i2d_ECPKParameters_bio(bp,x) ASN1_i2d_bio_of_const(EC_GROUP,i2d_ECPKParameters,bp,x) +# define d2i_ECPKParameters_fp(fp,x) (EC_GROUP *)ASN1_d2i_fp(NULL, \ + (char *(*)())d2i_ECPKParameters,(fp),(unsigned char **)(x)) +# define i2d_ECPKParameters_fp(fp,x) ASN1_i2d_fp(i2d_ECPKParameters,(fp), \ + (unsigned char *)(x)) + +# ifndef OPENSSL_NO_BIO +int ECPKParameters_print(BIO *bp, const EC_GROUP *x, int off); +# endif +# ifndef OPENSSL_NO_FP_API +int ECPKParameters_print_fp(FILE *fp, const EC_GROUP *x, int off); +# endif + +/********************************************************************/ +/* EC_KEY functions */ +/********************************************************************/ + +typedef struct ec_key_st EC_KEY; + +/* some values for the encoding_flag */ +# define EC_PKEY_NO_PARAMETERS 0x001 +# define EC_PKEY_NO_PUBKEY 0x002 + +/* some values for the flags field */ +# define EC_FLAG_NON_FIPS_ALLOW 0x1 +# define EC_FLAG_FIPS_CHECKED 0x2 + +/** Creates a new EC_KEY object. + * \return EC_KEY object or NULL if an error occurred. + */ +EC_KEY *EC_KEY_new(void); + +int EC_KEY_get_flags(const EC_KEY *key); + +void EC_KEY_set_flags(EC_KEY *key, int flags); + +void EC_KEY_clear_flags(EC_KEY *key, int flags); + +/** Creates a new EC_KEY object using a named curve as underlying + * EC_GROUP object. + * \param nid NID of the named curve. + * \return EC_KEY object or NULL if an error occurred. + */ +EC_KEY *EC_KEY_new_by_curve_name(int nid); + +/** Frees a EC_KEY object. + * \param key EC_KEY object to be freed. + */ +void EC_KEY_free(EC_KEY *key); + +/** Copies a EC_KEY object. + * \param dst destination EC_KEY object + * \param src src EC_KEY object + * \return dst or NULL if an error occurred. + */ +EC_KEY *EC_KEY_copy(EC_KEY *dst, const EC_KEY *src); + +/** Creates a new EC_KEY object and copies the content from src to it. + * \param src the source EC_KEY object + * \return newly created EC_KEY object or NULL if an error occurred. + */ +EC_KEY *EC_KEY_dup(const EC_KEY *src); + +/** Increases the internal reference count of a EC_KEY object. + * \param key EC_KEY object + * \return 1 on success and 0 if an error occurred. + */ +int EC_KEY_up_ref(EC_KEY *key); + +/** Returns the EC_GROUP object of a EC_KEY object + * \param key EC_KEY object + * \return the EC_GROUP object (possibly NULL). + */ +const EC_GROUP *EC_KEY_get0_group(const EC_KEY *key); + +/** Sets the EC_GROUP of a EC_KEY object. + * \param key EC_KEY object + * \param group EC_GROUP to use in the EC_KEY object (note: the EC_KEY + * object will use an own copy of the EC_GROUP). + * \return 1 on success and 0 if an error occurred. + */ +int EC_KEY_set_group(EC_KEY *key, const EC_GROUP *group); + +/** Returns the private key of a EC_KEY object. + * \param key EC_KEY object + * \return a BIGNUM with the private key (possibly NULL). + */ +const BIGNUM *EC_KEY_get0_private_key(const EC_KEY *key); + +/** Sets the private key of a EC_KEY object. + * \param key EC_KEY object + * \param prv BIGNUM with the private key (note: the EC_KEY object + * will use an own copy of the BIGNUM). + * \return 1 on success and 0 if an error occurred. + */ +int EC_KEY_set_private_key(EC_KEY *key, const BIGNUM *prv); + +/** Returns the public key of a EC_KEY object. + * \param key the EC_KEY object + * \return a EC_POINT object with the public key (possibly NULL) + */ +const EC_POINT *EC_KEY_get0_public_key(const EC_KEY *key); + +/** Sets the public key of a EC_KEY object. + * \param key EC_KEY object + * \param pub EC_POINT object with the public key (note: the EC_KEY object + * will use an own copy of the EC_POINT object). + * \return 1 on success and 0 if an error occurred. + */ +int EC_KEY_set_public_key(EC_KEY *key, const EC_POINT *pub); + +unsigned EC_KEY_get_enc_flags(const EC_KEY *key); +void EC_KEY_set_enc_flags(EC_KEY *eckey, unsigned int flags); +point_conversion_form_t EC_KEY_get_conv_form(const EC_KEY *key); +void EC_KEY_set_conv_form(EC_KEY *eckey, point_conversion_form_t cform); +/* functions to set/get method specific data */ +void *EC_KEY_get_key_method_data(EC_KEY *key, + void *(*dup_func) (void *), + void (*free_func) (void *), + void (*clear_free_func) (void *)); +/** Sets the key method data of an EC_KEY object, if none has yet been set. + * \param key EC_KEY object + * \param data opaque data to install. + * \param dup_func a function that duplicates |data|. + * \param free_func a function that frees |data|. + * \param clear_free_func a function that wipes and frees |data|. + * \return the previously set data pointer, or NULL if |data| was inserted. + */ +void *EC_KEY_insert_key_method_data(EC_KEY *key, void *data, + void *(*dup_func) (void *), + void (*free_func) (void *), + void (*clear_free_func) (void *)); +/* wrapper functions for the underlying EC_GROUP object */ +void EC_KEY_set_asn1_flag(EC_KEY *eckey, int asn1_flag); + +/** Creates a table of pre-computed multiples of the generator to + * accelerate further EC_KEY operations. + * \param key EC_KEY object + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred. + */ +int EC_KEY_precompute_mult(EC_KEY *key, BN_CTX *ctx); + +/** Creates a new ec private (and optional a new public) key. + * \param key EC_KEY object + * \return 1 on success and 0 if an error occurred. + */ +int EC_KEY_generate_key(EC_KEY *key); + +/** Verifies that a private and/or public key is valid. + * \param key the EC_KEY object + * \return 1 on success and 0 otherwise. + */ +int EC_KEY_check_key(const EC_KEY *key); + +/** Sets a public key from affine coordindates performing + * neccessary NIST PKV tests. + * \param key the EC_KEY object + * \param x public key x coordinate + * \param y public key y coordinate + * \return 1 on success and 0 otherwise. + */ +int EC_KEY_set_public_key_affine_coordinates(EC_KEY *key, BIGNUM *x, + BIGNUM *y); + +/********************************************************************/ +/* de- and encoding functions for SEC1 ECPrivateKey */ +/********************************************************************/ + +/** Decodes a private key from a memory buffer. + * \param key a pointer to a EC_KEY object which should be used (or NULL) + * \param in pointer to memory with the DER encoded private key + * \param len length of the DER encoded private key + * \return the decoded private key or NULL if an error occurred. + */ +EC_KEY *d2i_ECPrivateKey(EC_KEY **key, const unsigned char **in, long len); + +/** Encodes a private key object and stores the result in a buffer. + * \param key the EC_KEY object to encode + * \param out the buffer for the result (if NULL the function returns number + * of bytes needed). + * \return 1 on success and 0 if an error occurred. + */ +int i2d_ECPrivateKey(EC_KEY *key, unsigned char **out); + +/********************************************************************/ +/* de- and encoding functions for EC parameters */ +/********************************************************************/ + +/** Decodes ec parameter from a memory buffer. + * \param key a pointer to a EC_KEY object which should be used (or NULL) + * \param in pointer to memory with the DER encoded ec parameters + * \param len length of the DER encoded ec parameters + * \return a EC_KEY object with the decoded parameters or NULL if an error + * occurred. + */ +EC_KEY *d2i_ECParameters(EC_KEY **key, const unsigned char **in, long len); + +/** Encodes ec parameter and stores the result in a buffer. + * \param key the EC_KEY object with ec paramters to encode + * \param out the buffer for the result (if NULL the function returns number + * of bytes needed). + * \return 1 on success and 0 if an error occurred. + */ +int i2d_ECParameters(EC_KEY *key, unsigned char **out); + +/********************************************************************/ +/* de- and encoding functions for EC public key */ +/* (octet string, not DER -- hence 'o2i' and 'i2o') */ +/********************************************************************/ + +/** Decodes a ec public key from a octet string. + * \param key a pointer to a EC_KEY object which should be used + * \param in memory buffer with the encoded public key + * \param len length of the encoded public key + * \return EC_KEY object with decoded public key or NULL if an error + * occurred. + */ +EC_KEY *o2i_ECPublicKey(EC_KEY **key, const unsigned char **in, long len); + +/** Encodes a ec public key in an octet string. + * \param key the EC_KEY object with the public key + * \param out the buffer for the result (if NULL the function returns number + * of bytes needed). + * \return 1 on success and 0 if an error occurred + */ +int i2o_ECPublicKey(EC_KEY *key, unsigned char **out); + +# ifndef OPENSSL_NO_BIO +/** Prints out the ec parameters on human readable form. + * \param bp BIO object to which the information is printed + * \param key EC_KEY object + * \return 1 on success and 0 if an error occurred + */ +int ECParameters_print(BIO *bp, const EC_KEY *key); + +/** Prints out the contents of a EC_KEY object + * \param bp BIO object to which the information is printed + * \param key EC_KEY object + * \param off line offset + * \return 1 on success and 0 if an error occurred + */ +int EC_KEY_print(BIO *bp, const EC_KEY *key, int off); + +# endif +# ifndef OPENSSL_NO_FP_API +/** Prints out the ec parameters on human readable form. + * \param fp file descriptor to which the information is printed + * \param key EC_KEY object + * \return 1 on success and 0 if an error occurred + */ +int ECParameters_print_fp(FILE *fp, const EC_KEY *key); + +/** Prints out the contents of a EC_KEY object + * \param fp file descriptor to which the information is printed + * \param key EC_KEY object + * \param off line offset + * \return 1 on success and 0 if an error occurred + */ +int EC_KEY_print_fp(FILE *fp, const EC_KEY *key, int off); + +# endif + +# define ECParameters_dup(x) ASN1_dup_of(EC_KEY,i2d_ECParameters,d2i_ECParameters,x) + +# ifndef __cplusplus +# if defined(__SUNPRO_C) +# if __SUNPRO_C >= 0x520 +# pragma error_messages (default,E_ARRAY_OF_INCOMPLETE_NONAME,E_ARRAY_OF_INCOMPLETE) +# endif +# endif +# endif + +# define EVP_PKEY_CTX_set_ec_paramgen_curve_nid(ctx, nid) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ + EVP_PKEY_OP_PARAMGEN|EVP_PKEY_OP_KEYGEN, \ + EVP_PKEY_CTRL_EC_PARAMGEN_CURVE_NID, nid, NULL) + +# define EVP_PKEY_CTX_set_ec_param_enc(ctx, flag) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ + EVP_PKEY_OP_PARAMGEN|EVP_PKEY_OP_KEYGEN, \ + EVP_PKEY_CTRL_EC_PARAM_ENC, flag, NULL) + +# define EVP_PKEY_CTX_set_ecdh_cofactor_mode(ctx, flag) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_EC_ECDH_COFACTOR, flag, NULL) + +# define EVP_PKEY_CTX_get_ecdh_cofactor_mode(ctx) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_EC_ECDH_COFACTOR, -2, NULL) + +# define EVP_PKEY_CTX_set_ecdh_kdf_type(ctx, kdf) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_EC_KDF_TYPE, kdf, NULL) + +# define EVP_PKEY_CTX_get_ecdh_kdf_type(ctx) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_EC_KDF_TYPE, -2, NULL) + +# define EVP_PKEY_CTX_set_ecdh_kdf_md(ctx, md) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_EC_KDF_MD, 0, (void *)md) + +# define EVP_PKEY_CTX_get_ecdh_kdf_md(ctx, pmd) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_GET_EC_KDF_MD, 0, (void *)pmd) + +# define EVP_PKEY_CTX_set_ecdh_kdf_outlen(ctx, len) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_EC_KDF_OUTLEN, len, NULL) + +# define EVP_PKEY_CTX_get_ecdh_kdf_outlen(ctx, plen) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_GET_EC_KDF_OUTLEN, 0, (void *)plen) + +# define EVP_PKEY_CTX_set0_ecdh_kdf_ukm(ctx, p, plen) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_EC_KDF_UKM, plen, (void *)p) + +# define EVP_PKEY_CTX_get0_ecdh_kdf_ukm(ctx, p) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_GET_EC_KDF_UKM, 0, (void *)p) + +# define EVP_PKEY_CTRL_EC_PARAMGEN_CURVE_NID (EVP_PKEY_ALG_CTRL + 1) +# define EVP_PKEY_CTRL_EC_PARAM_ENC (EVP_PKEY_ALG_CTRL + 2) +# define EVP_PKEY_CTRL_EC_ECDH_COFACTOR (EVP_PKEY_ALG_CTRL + 3) +# define EVP_PKEY_CTRL_EC_KDF_TYPE (EVP_PKEY_ALG_CTRL + 4) +# define EVP_PKEY_CTRL_EC_KDF_MD (EVP_PKEY_ALG_CTRL + 5) +# define EVP_PKEY_CTRL_GET_EC_KDF_MD (EVP_PKEY_ALG_CTRL + 6) +# define EVP_PKEY_CTRL_EC_KDF_OUTLEN (EVP_PKEY_ALG_CTRL + 7) +# define EVP_PKEY_CTRL_GET_EC_KDF_OUTLEN (EVP_PKEY_ALG_CTRL + 8) +# define EVP_PKEY_CTRL_EC_KDF_UKM (EVP_PKEY_ALG_CTRL + 9) +# define EVP_PKEY_CTRL_GET_EC_KDF_UKM (EVP_PKEY_ALG_CTRL + 10) +/* KDF types */ +# define EVP_PKEY_ECDH_KDF_NONE 1 +# define EVP_PKEY_ECDH_KDF_X9_62 2 + +/* BEGIN ERROR CODES */ +/* + * The following lines are auto generated by the script mkerr.pl. Any changes + * made after this point may be overwritten when the script is next run. + */ +void ERR_load_EC_strings(void); + +/* Error codes for the EC functions. */ + +/* Function codes. */ +# define EC_F_BN_TO_FELEM 224 +# define EC_F_COMPUTE_WNAF 143 +# define EC_F_D2I_ECPARAMETERS 144 +# define EC_F_D2I_ECPKPARAMETERS 145 +# define EC_F_D2I_ECPRIVATEKEY 146 +# define EC_F_DO_EC_KEY_PRINT 221 +# define EC_F_ECDH_CMS_DECRYPT 238 +# define EC_F_ECDH_CMS_SET_SHARED_INFO 239 +# define EC_F_ECKEY_PARAM2TYPE 223 +# define EC_F_ECKEY_PARAM_DECODE 212 +# define EC_F_ECKEY_PRIV_DECODE 213 +# define EC_F_ECKEY_PRIV_ENCODE 214 +# define EC_F_ECKEY_PUB_DECODE 215 +# define EC_F_ECKEY_PUB_ENCODE 216 +# define EC_F_ECKEY_TYPE2PARAM 220 +# define EC_F_ECPARAMETERS_PRINT 147 +# define EC_F_ECPARAMETERS_PRINT_FP 148 +# define EC_F_ECPKPARAMETERS_PRINT 149 +# define EC_F_ECPKPARAMETERS_PRINT_FP 150 +# define EC_F_ECP_NIST_MOD_192 203 +# define EC_F_ECP_NIST_MOD_224 204 +# define EC_F_ECP_NIST_MOD_256 205 +# define EC_F_ECP_NIST_MOD_521 206 +# define EC_F_EC_ASN1_GROUP2CURVE 153 +# define EC_F_EC_ASN1_GROUP2FIELDID 154 +# define EC_F_EC_ASN1_GROUP2PARAMETERS 155 +# define EC_F_EC_ASN1_GROUP2PKPARAMETERS 156 +# define EC_F_EC_ASN1_PARAMETERS2GROUP 157 +# define EC_F_EC_ASN1_PKPARAMETERS2GROUP 158 +# define EC_F_EC_EX_DATA_SET_DATA 211 +# define EC_F_EC_GF2M_MONTGOMERY_POINT_MULTIPLY 208 +# define EC_F_EC_GF2M_SIMPLE_GROUP_CHECK_DISCRIMINANT 159 +# define EC_F_EC_GF2M_SIMPLE_GROUP_SET_CURVE 195 +# define EC_F_EC_GF2M_SIMPLE_OCT2POINT 160 +# define EC_F_EC_GF2M_SIMPLE_POINT2OCT 161 +# define EC_F_EC_GF2M_SIMPLE_POINT_GET_AFFINE_COORDINATES 162 +# define EC_F_EC_GF2M_SIMPLE_POINT_SET_AFFINE_COORDINATES 163 +# define EC_F_EC_GF2M_SIMPLE_SET_COMPRESSED_COORDINATES 164 +# define EC_F_EC_GFP_MONT_FIELD_DECODE 133 +# define EC_F_EC_GFP_MONT_FIELD_ENCODE 134 +# define EC_F_EC_GFP_MONT_FIELD_MUL 131 +# define EC_F_EC_GFP_MONT_FIELD_SET_TO_ONE 209 +# define EC_F_EC_GFP_MONT_FIELD_SQR 132 +# define EC_F_EC_GFP_MONT_GROUP_SET_CURVE 189 +# define EC_F_EC_GFP_MONT_GROUP_SET_CURVE_GFP 135 +# define EC_F_EC_GFP_NISTP224_GROUP_SET_CURVE 225 +# define EC_F_EC_GFP_NISTP224_POINTS_MUL 228 +# define EC_F_EC_GFP_NISTP224_POINT_GET_AFFINE_COORDINATES 226 +# define EC_F_EC_GFP_NISTP256_GROUP_SET_CURVE 230 +# define EC_F_EC_GFP_NISTP256_POINTS_MUL 231 +# define EC_F_EC_GFP_NISTP256_POINT_GET_AFFINE_COORDINATES 232 +# define EC_F_EC_GFP_NISTP521_GROUP_SET_CURVE 233 +# define EC_F_EC_GFP_NISTP521_POINTS_MUL 234 +# define EC_F_EC_GFP_NISTP521_POINT_GET_AFFINE_COORDINATES 235 +# define EC_F_EC_GFP_NIST_FIELD_MUL 200 +# define EC_F_EC_GFP_NIST_FIELD_SQR 201 +# define EC_F_EC_GFP_NIST_GROUP_SET_CURVE 202 +# define EC_F_EC_GFP_SIMPLE_GROUP_CHECK_DISCRIMINANT 165 +# define EC_F_EC_GFP_SIMPLE_GROUP_SET_CURVE 166 +# define EC_F_EC_GFP_SIMPLE_GROUP_SET_CURVE_GFP 100 +# define EC_F_EC_GFP_SIMPLE_GROUP_SET_GENERATOR 101 +# define EC_F_EC_GFP_SIMPLE_MAKE_AFFINE 102 +# define EC_F_EC_GFP_SIMPLE_OCT2POINT 103 +# define EC_F_EC_GFP_SIMPLE_POINT2OCT 104 +# define EC_F_EC_GFP_SIMPLE_POINTS_MAKE_AFFINE 137 +# define EC_F_EC_GFP_SIMPLE_POINT_GET_AFFINE_COORDINATES 167 +# define EC_F_EC_GFP_SIMPLE_POINT_GET_AFFINE_COORDINATES_GFP 105 +# define EC_F_EC_GFP_SIMPLE_POINT_SET_AFFINE_COORDINATES 168 +# define EC_F_EC_GFP_SIMPLE_POINT_SET_AFFINE_COORDINATES_GFP 128 +# define EC_F_EC_GFP_SIMPLE_SET_COMPRESSED_COORDINATES 169 +# define EC_F_EC_GFP_SIMPLE_SET_COMPRESSED_COORDINATES_GFP 129 +# define EC_F_EC_GROUP_CHECK 170 +# define EC_F_EC_GROUP_CHECK_DISCRIMINANT 171 +# define EC_F_EC_GROUP_COPY 106 +# define EC_F_EC_GROUP_GET0_GENERATOR 139 +# define EC_F_EC_GROUP_GET_COFACTOR 140 +# define EC_F_EC_GROUP_GET_CURVE_GF2M 172 +# define EC_F_EC_GROUP_GET_CURVE_GFP 130 +# define EC_F_EC_GROUP_GET_DEGREE 173 +# define EC_F_EC_GROUP_GET_ORDER 141 +# define EC_F_EC_GROUP_GET_PENTANOMIAL_BASIS 193 +# define EC_F_EC_GROUP_GET_TRINOMIAL_BASIS 194 +# define EC_F_EC_GROUP_NEW 108 +# define EC_F_EC_GROUP_NEW_BY_CURVE_NAME 174 +# define EC_F_EC_GROUP_NEW_FROM_DATA 175 +# define EC_F_EC_GROUP_PRECOMPUTE_MULT 142 +# define EC_F_EC_GROUP_SET_CURVE_GF2M 176 +# define EC_F_EC_GROUP_SET_CURVE_GFP 109 +# define EC_F_EC_GROUP_SET_EXTRA_DATA 110 +# define EC_F_EC_GROUP_SET_GENERATOR 111 +# define EC_F_EC_KEY_CHECK_KEY 177 +# define EC_F_EC_KEY_COPY 178 +# define EC_F_EC_KEY_GENERATE_KEY 179 +# define EC_F_EC_KEY_NEW 182 +# define EC_F_EC_KEY_PRINT 180 +# define EC_F_EC_KEY_PRINT_FP 181 +# define EC_F_EC_KEY_SET_PUBLIC_KEY_AFFINE_COORDINATES 229 +# define EC_F_EC_POINTS_MAKE_AFFINE 136 +# define EC_F_EC_POINT_ADD 112 +# define EC_F_EC_POINT_CMP 113 +# define EC_F_EC_POINT_COPY 114 +# define EC_F_EC_POINT_DBL 115 +# define EC_F_EC_POINT_GET_AFFINE_COORDINATES_GF2M 183 +# define EC_F_EC_POINT_GET_AFFINE_COORDINATES_GFP 116 +# define EC_F_EC_POINT_GET_JPROJECTIVE_COORDINATES_GFP 117 +# define EC_F_EC_POINT_INVERT 210 +# define EC_F_EC_POINT_IS_AT_INFINITY 118 +# define EC_F_EC_POINT_IS_ON_CURVE 119 +# define EC_F_EC_POINT_MAKE_AFFINE 120 +# define EC_F_EC_POINT_MUL 184 +# define EC_F_EC_POINT_NEW 121 +# define EC_F_EC_POINT_OCT2POINT 122 +# define EC_F_EC_POINT_POINT2OCT 123 +# define EC_F_EC_POINT_SET_AFFINE_COORDINATES_GF2M 185 +# define EC_F_EC_POINT_SET_AFFINE_COORDINATES_GFP 124 +# define EC_F_EC_POINT_SET_COMPRESSED_COORDINATES_GF2M 186 +# define EC_F_EC_POINT_SET_COMPRESSED_COORDINATES_GFP 125 +# define EC_F_EC_POINT_SET_JPROJECTIVE_COORDINATES_GFP 126 +# define EC_F_EC_POINT_SET_TO_INFINITY 127 +# define EC_F_EC_PRE_COMP_DUP 207 +# define EC_F_EC_PRE_COMP_NEW 196 +# define EC_F_EC_WNAF_MUL 187 +# define EC_F_EC_WNAF_PRECOMPUTE_MULT 188 +# define EC_F_I2D_ECPARAMETERS 190 +# define EC_F_I2D_ECPKPARAMETERS 191 +# define EC_F_I2D_ECPRIVATEKEY 192 +# define EC_F_I2O_ECPUBLICKEY 151 +# define EC_F_NISTP224_PRE_COMP_NEW 227 +# define EC_F_NISTP256_PRE_COMP_NEW 236 +# define EC_F_NISTP521_PRE_COMP_NEW 237 +# define EC_F_ECP_NISTZ256_GET_AFFINE 240 +# define EC_F_ECP_NISTZ256_POINTS_MUL 241 +# define EC_F_ECP_NISTZ256_WINDOWED_MUL 242 +# define EC_F_ECP_NISTZ256_MULT_PRECOMPUTE 243 +# define EC_F_ECP_NISTZ256_PRE_COMP_NEW 244 +# define EC_F_O2I_ECPUBLICKEY 152 +# define EC_F_OLD_EC_PRIV_DECODE 222 +# define EC_F_PKEY_EC_CTRL 197 +# define EC_F_PKEY_EC_CTRL_STR 198 +# define EC_F_PKEY_EC_DERIVE 217 +# define EC_F_PKEY_EC_KEYGEN 199 +# define EC_F_PKEY_EC_PARAMGEN 219 +# define EC_F_PKEY_EC_SIGN 218 + +/* Reason codes. */ +# define EC_R_ASN1_ERROR 115 +# define EC_R_ASN1_UNKNOWN_FIELD 116 +# define EC_R_BIGNUM_OUT_OF_RANGE 144 +# define EC_R_BUFFER_TOO_SMALL 100 +# define EC_R_COORDINATES_OUT_OF_RANGE 146 +# define EC_R_D2I_ECPKPARAMETERS_FAILURE 117 +# define EC_R_DECODE_ERROR 142 +# define EC_R_DISCRIMINANT_IS_ZERO 118 +# define EC_R_EC_GROUP_NEW_BY_NAME_FAILURE 119 +# define EC_R_FIELD_TOO_LARGE 143 +# define EC_R_GF2M_NOT_SUPPORTED 147 +# define EC_R_GROUP2PKPARAMETERS_FAILURE 120 +# define EC_R_I2D_ECPKPARAMETERS_FAILURE 121 +# define EC_R_INCOMPATIBLE_OBJECTS 101 +# define EC_R_INVALID_ARGUMENT 112 +# define EC_R_INVALID_COMPRESSED_POINT 110 +# define EC_R_INVALID_COMPRESSION_BIT 109 +# define EC_R_INVALID_CURVE 141 +# define EC_R_INVALID_DIGEST 151 +# define EC_R_INVALID_DIGEST_TYPE 138 +# define EC_R_INVALID_ENCODING 102 +# define EC_R_INVALID_FIELD 103 +# define EC_R_INVALID_FORM 104 +# define EC_R_INVALID_GROUP_ORDER 122 +# define EC_R_INVALID_PENTANOMIAL_BASIS 132 +# define EC_R_INVALID_PRIVATE_KEY 123 +# define EC_R_INVALID_TRINOMIAL_BASIS 137 +# define EC_R_KDF_PARAMETER_ERROR 148 +# define EC_R_KEYS_NOT_SET 140 +# define EC_R_MISSING_PARAMETERS 124 +# define EC_R_MISSING_PRIVATE_KEY 125 +# define EC_R_NOT_A_NIST_PRIME 135 +# define EC_R_NOT_A_SUPPORTED_NIST_PRIME 136 +# define EC_R_NOT_IMPLEMENTED 126 +# define EC_R_NOT_INITIALIZED 111 +# define EC_R_NO_FIELD_MOD 133 +# define EC_R_NO_PARAMETERS_SET 139 +# define EC_R_PASSED_NULL_PARAMETER 134 +# define EC_R_PEER_KEY_ERROR 149 +# define EC_R_PKPARAMETERS2GROUP_FAILURE 127 +# define EC_R_POINT_AT_INFINITY 106 +# define EC_R_POINT_IS_NOT_ON_CURVE 107 +# define EC_R_SHARED_INFO_ERROR 150 +# define EC_R_SLOT_FULL 108 +# define EC_R_UNDEFINED_GENERATOR 113 +# define EC_R_UNDEFINED_ORDER 128 +# define EC_R_UNKNOWN_GROUP 129 +# define EC_R_UNKNOWN_ORDER 114 +# define EC_R_UNSUPPORTED_FIELD 131 +# define EC_R_WRONG_CURVE_PARAMETERS 145 +# define EC_R_WRONG_ORDER 130 + +#ifdef __cplusplus +} +#endif +#endif diff --git a/ext/openssl-win64/inc32/openssl/ecdh.h b/ext/openssl-win64/inc32/openssl/ecdh.h new file mode 100644 index 00000000..25348b30 --- /dev/null +++ b/ext/openssl-win64/inc32/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/ext/openssl-win64/inc32/openssl/ecdsa.h b/ext/openssl-win64/inc32/openssl/ecdsa.h new file mode 100644 index 00000000..c4016ac3 --- /dev/null +++ b/ext/openssl-win64/inc32/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(ECDSA_METHOD *ecdsa_method); + +/** frees a ECDSA_METHOD structure + * \param ecdsa_method pointer to the ECDSA_METHOD structure + */ +void ECDSA_METHOD_free(ECDSA_METHOD *ecdsa_method); + +/** Sets application specific data in the ECDSA_METHOD + * \param ecdsa_method pointer to existing ECDSA_METHOD + * \param app application specific data to set + */ + +void ECDSA_METHOD_set_app_data(ECDSA_METHOD *ecdsa_method, void *app); + +/** Returns application specific data from a ECDSA_METHOD structure + * \param ecdsa_method pointer to ECDSA_METHOD structure + * \return pointer to application specific data. + */ + +void *ECDSA_METHOD_get_app_data(ECDSA_METHOD *ecdsa_method); + +/** Set the ECDSA_do_sign function in the ECDSA_METHOD + * \param ecdsa_method pointer to existing ECDSA_METHOD + * \param ecdsa_do_sign a funtion of type ECDSA_do_sign + */ + +void ECDSA_METHOD_set_sign(ECDSA_METHOD *ecdsa_method, + ECDSA_SIG *(*ecdsa_do_sign) (const unsigned char + *dgst, int dgst_len, + const BIGNUM *inv, + const BIGNUM *rp, + EC_KEY *eckey)); + +/** Set the ECDSA_sign_setup function in the ECDSA_METHOD + * \param ecdsa_method pointer to existing ECDSA_METHOD + * \param ecdsa_sign_setup a funtion of type ECDSA_sign_setup + */ + +void ECDSA_METHOD_set_sign_setup(ECDSA_METHOD *ecdsa_method, + int (*ecdsa_sign_setup) (EC_KEY *eckey, + BN_CTX *ctx, + BIGNUM **kinv, + BIGNUM **r)); + +/** Set the ECDSA_do_verify function in the ECDSA_METHOD + * \param ecdsa_method pointer to existing ECDSA_METHOD + * \param ecdsa_do_verify a funtion of type ECDSA_do_verify + */ + +void ECDSA_METHOD_set_verify(ECDSA_METHOD *ecdsa_method, + int (*ecdsa_do_verify) (const unsigned char + *dgst, int dgst_len, + const ECDSA_SIG *sig, + EC_KEY *eckey)); + +void ECDSA_METHOD_set_flags(ECDSA_METHOD *ecdsa_method, int flags); + +/** Set the flags field in the ECDSA_METHOD + * \param ecdsa_method pointer to existing ECDSA_METHOD + * \param flags flags value to set + */ + +void ECDSA_METHOD_set_name(ECDSA_METHOD *ecdsa_method, char *name); + +/** Set the name field in the ECDSA_METHOD + * \param ecdsa_method pointer to existing ECDSA_METHOD + * \param name name to set + */ + +/* BEGIN ERROR CODES */ +/* + * The following lines are auto generated by the script mkerr.pl. Any changes + * made after this point may be overwritten when the script is next run. + */ +void ERR_load_ECDSA_strings(void); + +/* Error codes for the ECDSA functions. */ + +/* Function codes. */ +# define ECDSA_F_ECDSA_CHECK 104 +# define ECDSA_F_ECDSA_DATA_NEW_METHOD 100 +# define ECDSA_F_ECDSA_DO_SIGN 101 +# define ECDSA_F_ECDSA_DO_VERIFY 102 +# define ECDSA_F_ECDSA_METHOD_NEW 105 +# define ECDSA_F_ECDSA_SIGN_SETUP 103 + +/* Reason codes. */ +# define ECDSA_R_BAD_SIGNATURE 100 +# define ECDSA_R_DATA_TOO_LARGE_FOR_KEY_SIZE 101 +# define ECDSA_R_ERR_EC_LIB 102 +# define ECDSA_R_MISSING_PARAMETERS 103 +# define ECDSA_R_NEED_NEW_SETUP_VALUES 106 +# define ECDSA_R_NON_FIPS_METHOD 107 +# define ECDSA_R_RANDOM_NUMBER_GENERATION_FAILED 104 +# define ECDSA_R_SIGNATURE_MALLOC_FAILED 105 + +#ifdef __cplusplus +} +#endif +#endif diff --git a/ext/openssl-win64/inc32/openssl/err.h b/ext/openssl-win64/inc32/openssl/err.h new file mode 100644 index 00000000..585aa8ba --- /dev/null +++ b/ext/openssl-win64/inc32/openssl/err.h @@ -0,0 +1,389 @@ +/* crypto/err/err.h */ +/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) + * All rights reserved. + * + * This package is an SSL implementation written + * by Eric Young (eay@cryptsoft.com). + * The implementation was written so as to conform with Netscapes SSL. + * + * This library is free for commercial and non-commercial use as long as + * the following conditions are aheared to. The following conditions + * apply to all code found in this distribution, be it the RC4, RSA, + * lhash, DES, etc., code; not just the SSL code. The SSL documentation + * included with this distribution is covered by the same copyright terms + * except that the holder is Tim Hudson (tjh@cryptsoft.com). + * + * Copyright remains Eric Young's, and as such any Copyright notices in + * the code are not to be removed. + * If this package is used in a product, Eric Young should be given attribution + * as the author of the parts of the library used. + * This can be in the form of a textual message at program startup or + * in documentation (online or textual) provided with the package. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * "This product includes cryptographic software written by + * Eric Young (eay@cryptsoft.com)" + * The word 'cryptographic' can be left out if the rouines from the library + * being used are not cryptographic related :-). + * 4. If you include any Windows specific code (or a derivative thereof) from + * the apps directory (application code) you must include an acknowledgement: + * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" + * + * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * The licence and distribution terms for any publically available version or + * derivative of this code cannot be changed. i.e. this code cannot simply be + * copied and put under another distribution licence + * [including the GNU Public Licence.] + */ +/* ==================================================================== + * Copyright (c) 1998-2006 The OpenSSL Project. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. All advertising materials mentioning features or use of this + * software must display the following acknowledgment: + * "This product includes software developed by the OpenSSL Project + * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" + * + * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to + * endorse or promote products derived from this software without + * prior written permission. For written permission, please contact + * openssl-core@openssl.org. + * + * 5. Products derived from this software may not be called "OpenSSL" + * nor may "OpenSSL" appear in their names without prior written + * permission of the OpenSSL Project. + * + * 6. Redistributions of any form whatsoever must retain the following + * acknowledgment: + * "This product includes software developed by the OpenSSL Project + * for use in the OpenSSL Toolkit (http://www.openssl.org/)" + * + * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY + * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * ==================================================================== + * + * This product includes cryptographic software written by Eric Young + * (eay@cryptsoft.com). This product includes software written by Tim + * Hudson (tjh@cryptsoft.com). + * + */ + +#ifndef HEADER_ERR_H +# define HEADER_ERR_H + +# include + +# ifndef OPENSSL_NO_FP_API +# include +# include +# endif + +# include +# ifndef OPENSSL_NO_BIO +# include +# endif +# ifndef OPENSSL_NO_LHASH +# include +# endif + +#ifdef __cplusplus +extern "C" { +#endif + +# ifndef OPENSSL_NO_ERR +# define ERR_PUT_error(a,b,c,d,e) ERR_put_error(a,b,c,d,e) +# else +# define ERR_PUT_error(a,b,c,d,e) ERR_put_error(a,b,c,NULL,0) +# endif + +# include + +# define ERR_TXT_MALLOCED 0x01 +# define ERR_TXT_STRING 0x02 + +# define ERR_FLAG_MARK 0x01 + +# define ERR_NUM_ERRORS 16 +typedef struct err_state_st { + CRYPTO_THREADID tid; + int err_flags[ERR_NUM_ERRORS]; + unsigned long err_buffer[ERR_NUM_ERRORS]; + char *err_data[ERR_NUM_ERRORS]; + int err_data_flags[ERR_NUM_ERRORS]; + const char *err_file[ERR_NUM_ERRORS]; + int err_line[ERR_NUM_ERRORS]; + int top, bottom; +} ERR_STATE; + +/* library */ +# define ERR_LIB_NONE 1 +# define ERR_LIB_SYS 2 +# define ERR_LIB_BN 3 +# define ERR_LIB_RSA 4 +# define ERR_LIB_DH 5 +# define ERR_LIB_EVP 6 +# define ERR_LIB_BUF 7 +# define ERR_LIB_OBJ 8 +# define ERR_LIB_PEM 9 +# define ERR_LIB_DSA 10 +# define ERR_LIB_X509 11 +/* #define ERR_LIB_METH 12 */ +# define ERR_LIB_ASN1 13 +# define ERR_LIB_CONF 14 +# define ERR_LIB_CRYPTO 15 +# define ERR_LIB_EC 16 +# define ERR_LIB_SSL 20 +/* #define ERR_LIB_SSL23 21 */ +/* #define ERR_LIB_SSL2 22 */ +/* #define ERR_LIB_SSL3 23 */ +/* #define ERR_LIB_RSAREF 30 */ +/* #define ERR_LIB_PROXY 31 */ +# define ERR_LIB_BIO 32 +# define ERR_LIB_PKCS7 33 +# define ERR_LIB_X509V3 34 +# define ERR_LIB_PKCS12 35 +# define ERR_LIB_RAND 36 +# define ERR_LIB_DSO 37 +# define ERR_LIB_ENGINE 38 +# define ERR_LIB_OCSP 39 +# define ERR_LIB_UI 40 +# define ERR_LIB_COMP 41 +# define ERR_LIB_ECDSA 42 +# define ERR_LIB_ECDH 43 +# define ERR_LIB_STORE 44 +# define ERR_LIB_FIPS 45 +# define ERR_LIB_CMS 46 +# define ERR_LIB_TS 47 +# define ERR_LIB_HMAC 48 +# define ERR_LIB_JPAKE 49 + +# define ERR_LIB_USER 128 + +# define SYSerr(f,r) ERR_PUT_error(ERR_LIB_SYS,(f),(r),__FILE__,__LINE__) +# define BNerr(f,r) ERR_PUT_error(ERR_LIB_BN,(f),(r),__FILE__,__LINE__) +# define RSAerr(f,r) ERR_PUT_error(ERR_LIB_RSA,(f),(r),__FILE__,__LINE__) +# define DHerr(f,r) ERR_PUT_error(ERR_LIB_DH,(f),(r),__FILE__,__LINE__) +# define EVPerr(f,r) ERR_PUT_error(ERR_LIB_EVP,(f),(r),__FILE__,__LINE__) +# define BUFerr(f,r) ERR_PUT_error(ERR_LIB_BUF,(f),(r),__FILE__,__LINE__) +# define OBJerr(f,r) ERR_PUT_error(ERR_LIB_OBJ,(f),(r),__FILE__,__LINE__) +# define PEMerr(f,r) ERR_PUT_error(ERR_LIB_PEM,(f),(r),__FILE__,__LINE__) +# define DSAerr(f,r) ERR_PUT_error(ERR_LIB_DSA,(f),(r),__FILE__,__LINE__) +# define X509err(f,r) ERR_PUT_error(ERR_LIB_X509,(f),(r),__FILE__,__LINE__) +# define ASN1err(f,r) ERR_PUT_error(ERR_LIB_ASN1,(f),(r),__FILE__,__LINE__) +# define CONFerr(f,r) ERR_PUT_error(ERR_LIB_CONF,(f),(r),__FILE__,__LINE__) +# define CRYPTOerr(f,r) ERR_PUT_error(ERR_LIB_CRYPTO,(f),(r),__FILE__,__LINE__) +# define ECerr(f,r) ERR_PUT_error(ERR_LIB_EC,(f),(r),__FILE__,__LINE__) +# define SSLerr(f,r) ERR_PUT_error(ERR_LIB_SSL,(f),(r),__FILE__,__LINE__) +# define BIOerr(f,r) ERR_PUT_error(ERR_LIB_BIO,(f),(r),__FILE__,__LINE__) +# define PKCS7err(f,r) ERR_PUT_error(ERR_LIB_PKCS7,(f),(r),__FILE__,__LINE__) +# define X509V3err(f,r) ERR_PUT_error(ERR_LIB_X509V3,(f),(r),__FILE__,__LINE__) +# define PKCS12err(f,r) ERR_PUT_error(ERR_LIB_PKCS12,(f),(r),__FILE__,__LINE__) +# define RANDerr(f,r) ERR_PUT_error(ERR_LIB_RAND,(f),(r),__FILE__,__LINE__) +# define DSOerr(f,r) ERR_PUT_error(ERR_LIB_DSO,(f),(r),__FILE__,__LINE__) +# define ENGINEerr(f,r) ERR_PUT_error(ERR_LIB_ENGINE,(f),(r),__FILE__,__LINE__) +# define OCSPerr(f,r) ERR_PUT_error(ERR_LIB_OCSP,(f),(r),__FILE__,__LINE__) +# define UIerr(f,r) ERR_PUT_error(ERR_LIB_UI,(f),(r),__FILE__,__LINE__) +# define COMPerr(f,r) ERR_PUT_error(ERR_LIB_COMP,(f),(r),__FILE__,__LINE__) +# define ECDSAerr(f,r) ERR_PUT_error(ERR_LIB_ECDSA,(f),(r),__FILE__,__LINE__) +# define ECDHerr(f,r) ERR_PUT_error(ERR_LIB_ECDH,(f),(r),__FILE__,__LINE__) +# define STOREerr(f,r) ERR_PUT_error(ERR_LIB_STORE,(f),(r),__FILE__,__LINE__) +# define FIPSerr(f,r) ERR_PUT_error(ERR_LIB_FIPS,(f),(r),__FILE__,__LINE__) +# define CMSerr(f,r) ERR_PUT_error(ERR_LIB_CMS,(f),(r),__FILE__,__LINE__) +# define TSerr(f,r) ERR_PUT_error(ERR_LIB_TS,(f),(r),__FILE__,__LINE__) +# define HMACerr(f,r) ERR_PUT_error(ERR_LIB_HMAC,(f),(r),__FILE__,__LINE__) +# define JPAKEerr(f,r) ERR_PUT_error(ERR_LIB_JPAKE,(f),(r),__FILE__,__LINE__) + +/* + * Borland C seems too stupid to be able to shift and do longs in the + * pre-processor :-( + */ +# define ERR_PACK(l,f,r) (((((unsigned long)l)&0xffL)*0x1000000)| \ + ((((unsigned long)f)&0xfffL)*0x1000)| \ + ((((unsigned long)r)&0xfffL))) +# define ERR_GET_LIB(l) (int)((((unsigned long)l)>>24L)&0xffL) +# define ERR_GET_FUNC(l) (int)((((unsigned long)l)>>12L)&0xfffL) +# define ERR_GET_REASON(l) (int)((l)&0xfffL) +# define ERR_FATAL_ERROR(l) (int)((l)&ERR_R_FATAL) + +/* OS functions */ +# define SYS_F_FOPEN 1 +# define SYS_F_CONNECT 2 +# define SYS_F_GETSERVBYNAME 3 +# define SYS_F_SOCKET 4 +# define SYS_F_IOCTLSOCKET 5 +# define SYS_F_BIND 6 +# define SYS_F_LISTEN 7 +# define SYS_F_ACCEPT 8 +# define SYS_F_WSASTARTUP 9/* Winsock stuff */ +# define SYS_F_OPENDIR 10 +# define SYS_F_FREAD 11 + +/* reasons */ +# define ERR_R_SYS_LIB ERR_LIB_SYS/* 2 */ +# define ERR_R_BN_LIB ERR_LIB_BN/* 3 */ +# define ERR_R_RSA_LIB ERR_LIB_RSA/* 4 */ +# define ERR_R_DH_LIB ERR_LIB_DH/* 5 */ +# define ERR_R_EVP_LIB ERR_LIB_EVP/* 6 */ +# define ERR_R_BUF_LIB ERR_LIB_BUF/* 7 */ +# define ERR_R_OBJ_LIB ERR_LIB_OBJ/* 8 */ +# define ERR_R_PEM_LIB ERR_LIB_PEM/* 9 */ +# define ERR_R_DSA_LIB ERR_LIB_DSA/* 10 */ +# define ERR_R_X509_LIB ERR_LIB_X509/* 11 */ +# define ERR_R_ASN1_LIB ERR_LIB_ASN1/* 13 */ +# define ERR_R_CONF_LIB ERR_LIB_CONF/* 14 */ +# define ERR_R_CRYPTO_LIB ERR_LIB_CRYPTO/* 15 */ +# define ERR_R_EC_LIB ERR_LIB_EC/* 16 */ +# define ERR_R_SSL_LIB ERR_LIB_SSL/* 20 */ +# define ERR_R_BIO_LIB ERR_LIB_BIO/* 32 */ +# define ERR_R_PKCS7_LIB ERR_LIB_PKCS7/* 33 */ +# define ERR_R_X509V3_LIB ERR_LIB_X509V3/* 34 */ +# define ERR_R_PKCS12_LIB ERR_LIB_PKCS12/* 35 */ +# define ERR_R_RAND_LIB ERR_LIB_RAND/* 36 */ +# define ERR_R_DSO_LIB ERR_LIB_DSO/* 37 */ +# define ERR_R_ENGINE_LIB ERR_LIB_ENGINE/* 38 */ +# define ERR_R_OCSP_LIB ERR_LIB_OCSP/* 39 */ +# define ERR_R_UI_LIB ERR_LIB_UI/* 40 */ +# define ERR_R_COMP_LIB ERR_LIB_COMP/* 41 */ +# define ERR_R_ECDSA_LIB ERR_LIB_ECDSA/* 42 */ +# define ERR_R_ECDH_LIB ERR_LIB_ECDH/* 43 */ +# define ERR_R_STORE_LIB ERR_LIB_STORE/* 44 */ +# define ERR_R_TS_LIB ERR_LIB_TS/* 45 */ + +# define ERR_R_NESTED_ASN1_ERROR 58 +# define ERR_R_BAD_ASN1_OBJECT_HEADER 59 +# define ERR_R_BAD_GET_ASN1_OBJECT_CALL 60 +# define ERR_R_EXPECTING_AN_ASN1_SEQUENCE 61 +# define ERR_R_ASN1_LENGTH_MISMATCH 62 +# define ERR_R_MISSING_ASN1_EOS 63 + +/* fatal error */ +# define ERR_R_FATAL 64 +# define ERR_R_MALLOC_FAILURE (1|ERR_R_FATAL) +# define ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED (2|ERR_R_FATAL) +# define ERR_R_PASSED_NULL_PARAMETER (3|ERR_R_FATAL) +# define ERR_R_INTERNAL_ERROR (4|ERR_R_FATAL) +# define ERR_R_DISABLED (5|ERR_R_FATAL) + +/* + * 99 is the maximum possible ERR_R_... code, higher values are reserved for + * the individual libraries + */ + +typedef struct ERR_string_data_st { + unsigned long error; + const char *string; +} ERR_STRING_DATA; + +void ERR_put_error(int lib, int func, int reason, const char *file, int line); +void ERR_set_error_data(char *data, int flags); + +unsigned long ERR_get_error(void); +unsigned long ERR_get_error_line(const char **file, int *line); +unsigned long ERR_get_error_line_data(const char **file, int *line, + const char **data, int *flags); +unsigned long ERR_peek_error(void); +unsigned long ERR_peek_error_line(const char **file, int *line); +unsigned long ERR_peek_error_line_data(const char **file, int *line, + const char **data, int *flags); +unsigned long ERR_peek_last_error(void); +unsigned long ERR_peek_last_error_line(const char **file, int *line); +unsigned long ERR_peek_last_error_line_data(const char **file, int *line, + const char **data, int *flags); +void ERR_clear_error(void); +char *ERR_error_string(unsigned long e, char *buf); +void ERR_error_string_n(unsigned long e, char *buf, size_t len); +const char *ERR_lib_error_string(unsigned long e); +const char *ERR_func_error_string(unsigned long e); +const char *ERR_reason_error_string(unsigned long e); +void ERR_print_errors_cb(int (*cb) (const char *str, size_t len, void *u), + void *u); +# ifndef OPENSSL_NO_FP_API +void ERR_print_errors_fp(FILE *fp); +# endif +# ifndef OPENSSL_NO_BIO +void ERR_print_errors(BIO *bp); +# endif +void ERR_add_error_data(int num, ...); +void ERR_add_error_vdata(int num, va_list args); +void ERR_load_strings(int lib, ERR_STRING_DATA str[]); +void ERR_unload_strings(int lib, ERR_STRING_DATA str[]); +void ERR_load_ERR_strings(void); +void ERR_load_crypto_strings(void); +void ERR_free_strings(void); + +void ERR_remove_thread_state(const CRYPTO_THREADID *tid); +# ifndef OPENSSL_NO_DEPRECATED +void ERR_remove_state(unsigned long pid); /* if zero we look it up */ +# endif +ERR_STATE *ERR_get_state(void); + +# ifndef OPENSSL_NO_LHASH +LHASH_OF(ERR_STRING_DATA) *ERR_get_string_table(void); +LHASH_OF(ERR_STATE) *ERR_get_err_state_table(void); +void ERR_release_err_state_table(LHASH_OF(ERR_STATE) **hash); +# endif + +int ERR_get_next_error_library(void); + +int ERR_set_mark(void); +int ERR_pop_to_mark(void); + +/* Already defined in ossl_typ.h */ +/* typedef struct st_ERR_FNS ERR_FNS; */ +/* + * An application can use this function and provide the return value to + * loaded modules that should use the application's ERR state/functionality + */ +const ERR_FNS *ERR_get_implementation(void); +/* + * A loaded module should call this function prior to any ERR operations + * using the application's "ERR_FNS". + */ +int ERR_set_implementation(const ERR_FNS *fns); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/ext/openssl-win64/inc32/openssl/evp.h b/ext/openssl-win64/inc32/openssl/evp.h new file mode 100644 index 00000000..47abbac4 --- /dev/null +++ b/ext/openssl-win64/inc32/openssl/evp.h @@ -0,0 +1,1519 @@ +/* crypto/evp/evp.h */ +/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) + * All rights reserved. + * + * This package is an SSL implementation written + * by Eric Young (eay@cryptsoft.com). + * The implementation was written so as to conform with Netscapes SSL. + * + * This library is free for commercial and non-commercial use as long as + * the following conditions are aheared to. The following conditions + * apply to all code found in this distribution, be it the RC4, RSA, + * lhash, DES, etc., code; not just the SSL code. The SSL documentation + * included with this distribution is covered by the same copyright terms + * except that the holder is Tim Hudson (tjh@cryptsoft.com). + * + * Copyright remains Eric Young's, and as such any Copyright notices in + * the code are not to be removed. + * If this package is used in a product, Eric Young should be given attribution + * as the author of the parts of the library used. + * This can be in the form of a textual message at program startup or + * in documentation (online or textual) provided with the package. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * "This product includes cryptographic software written by + * Eric Young (eay@cryptsoft.com)" + * The word 'cryptographic' can be left out if the rouines from the library + * being used are not cryptographic related :-). + * 4. If you include any Windows specific code (or a derivative thereof) from + * the apps directory (application code) you must include an acknowledgement: + * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" + * + * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * The licence and distribution terms for any publically available version or + * derivative of this code cannot be changed. i.e. this code cannot simply be + * copied and put under another distribution licence + * [including the GNU Public Licence.] + */ + +#ifndef HEADER_ENVELOPE_H +# define HEADER_ENVELOPE_H + +# ifdef OPENSSL_ALGORITHM_DEFINES +# include +# else +# define OPENSSL_ALGORITHM_DEFINES +# include +# undef OPENSSL_ALGORITHM_DEFINES +# endif + +# include + +# include + +# ifndef OPENSSL_NO_BIO +# include +# endif + +/*- +#define EVP_RC2_KEY_SIZE 16 +#define EVP_RC4_KEY_SIZE 16 +#define EVP_BLOWFISH_KEY_SIZE 16 +#define EVP_CAST5_KEY_SIZE 16 +#define EVP_RC5_32_12_16_KEY_SIZE 16 +*/ +# define EVP_MAX_MD_SIZE 64/* longest known is SHA512 */ +# define EVP_MAX_KEY_LENGTH 64 +# define EVP_MAX_IV_LENGTH 16 +# define EVP_MAX_BLOCK_LENGTH 32 + +# define PKCS5_SALT_LEN 8 +/* Default PKCS#5 iteration count */ +# define PKCS5_DEFAULT_ITER 2048 + +# include + +# define EVP_PK_RSA 0x0001 +# define EVP_PK_DSA 0x0002 +# define EVP_PK_DH 0x0004 +# define EVP_PK_EC 0x0008 +# define EVP_PKT_SIGN 0x0010 +# define EVP_PKT_ENC 0x0020 +# define EVP_PKT_EXCH 0x0040 +# define EVP_PKS_RSA 0x0100 +# define EVP_PKS_DSA 0x0200 +# define EVP_PKS_EC 0x0400 +# define EVP_PKT_EXP 0x1000 /* <= 512 bit key */ + +# define EVP_PKEY_NONE NID_undef +# define EVP_PKEY_RSA NID_rsaEncryption +# define EVP_PKEY_RSA2 NID_rsa +# define EVP_PKEY_DSA NID_dsa +# define EVP_PKEY_DSA1 NID_dsa_2 +# define EVP_PKEY_DSA2 NID_dsaWithSHA +# define EVP_PKEY_DSA3 NID_dsaWithSHA1 +# define EVP_PKEY_DSA4 NID_dsaWithSHA1_2 +# define EVP_PKEY_DH NID_dhKeyAgreement +# define EVP_PKEY_DHX NID_dhpublicnumber +# define EVP_PKEY_EC NID_X9_62_id_ecPublicKey +# define EVP_PKEY_HMAC NID_hmac +# define EVP_PKEY_CMAC NID_cmac + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Type needs to be a bit field Sub-type needs to be for variations on the + * method, as in, can it do arbitrary encryption.... + */ +struct evp_pkey_st { + int type; + int save_type; + int references; + const EVP_PKEY_ASN1_METHOD *ameth; + ENGINE *engine; + union { + char *ptr; +# ifndef OPENSSL_NO_RSA + struct rsa_st *rsa; /* RSA */ +# endif +# ifndef OPENSSL_NO_DSA + struct dsa_st *dsa; /* DSA */ +# endif +# ifndef OPENSSL_NO_DH + struct dh_st *dh; /* DH */ +# endif +# ifndef OPENSSL_NO_EC + struct ec_key_st *ec; /* ECC */ +# endif + } pkey; + int save_parameters; + STACK_OF(X509_ATTRIBUTE) *attributes; /* [ 0 ] */ +} /* EVP_PKEY */ ; + +# define EVP_PKEY_MO_SIGN 0x0001 +# define EVP_PKEY_MO_VERIFY 0x0002 +# define EVP_PKEY_MO_ENCRYPT 0x0004 +# define EVP_PKEY_MO_DECRYPT 0x0008 + +# ifndef EVP_MD +struct env_md_st { + int type; + int pkey_type; + int md_size; + unsigned long flags; + int (*init) (EVP_MD_CTX *ctx); + int (*update) (EVP_MD_CTX *ctx, const void *data, size_t count); + int (*final) (EVP_MD_CTX *ctx, unsigned char *md); + int (*copy) (EVP_MD_CTX *to, const EVP_MD_CTX *from); + int (*cleanup) (EVP_MD_CTX *ctx); + /* FIXME: prototype these some day */ + int (*sign) (int type, const unsigned char *m, unsigned int m_length, + unsigned char *sigret, unsigned int *siglen, void *key); + int (*verify) (int type, const unsigned char *m, unsigned int m_length, + const unsigned char *sigbuf, unsigned int siglen, + void *key); + int required_pkey_type[5]; /* EVP_PKEY_xxx */ + int block_size; + int ctx_size; /* how big does the ctx->md_data need to be */ + /* control function */ + int (*md_ctrl) (EVP_MD_CTX *ctx, int cmd, int p1, void *p2); +} /* EVP_MD */ ; + +typedef int evp_sign_method(int type, const unsigned char *m, + unsigned int m_length, unsigned char *sigret, + unsigned int *siglen, void *key); +typedef int evp_verify_method(int type, const unsigned char *m, + unsigned int m_length, + const unsigned char *sigbuf, + unsigned int siglen, void *key); + +/* digest can only handle a single block */ +# define EVP_MD_FLAG_ONESHOT 0x0001 + +/* + * digest is a "clone" digest used + * which is a copy of an existing + * one for a specific public key type. + * EVP_dss1() etc + */ +# define EVP_MD_FLAG_PKEY_DIGEST 0x0002 + +/* Digest uses EVP_PKEY_METHOD for signing instead of MD specific signing */ + +# define EVP_MD_FLAG_PKEY_METHOD_SIGNATURE 0x0004 + +/* DigestAlgorithmIdentifier flags... */ + +# define EVP_MD_FLAG_DIGALGID_MASK 0x0018 + +/* NULL or absent parameter accepted. Use NULL */ + +# define EVP_MD_FLAG_DIGALGID_NULL 0x0000 + +/* NULL or absent parameter accepted. Use NULL for PKCS#1 otherwise absent */ + +# define EVP_MD_FLAG_DIGALGID_ABSENT 0x0008 + +/* Custom handling via ctrl */ + +# define EVP_MD_FLAG_DIGALGID_CUSTOM 0x0018 + +/* Note if suitable for use in FIPS mode */ +# define EVP_MD_FLAG_FIPS 0x0400 + +/* Digest ctrls */ + +# define EVP_MD_CTRL_DIGALGID 0x1 +# define EVP_MD_CTRL_MICALG 0x2 + +/* Minimum Algorithm specific ctrl value */ + +# define EVP_MD_CTRL_ALG_CTRL 0x1000 + +# define EVP_PKEY_NULL_method NULL,NULL,{0,0,0,0} + +# ifndef OPENSSL_NO_DSA +# define EVP_PKEY_DSA_method (evp_sign_method *)DSA_sign, \ + (evp_verify_method *)DSA_verify, \ + {EVP_PKEY_DSA,EVP_PKEY_DSA2,EVP_PKEY_DSA3, \ + EVP_PKEY_DSA4,0} +# else +# define EVP_PKEY_DSA_method EVP_PKEY_NULL_method +# endif + +# ifndef OPENSSL_NO_ECDSA +# define EVP_PKEY_ECDSA_method (evp_sign_method *)ECDSA_sign, \ + (evp_verify_method *)ECDSA_verify, \ + {EVP_PKEY_EC,0,0,0} +# else +# define EVP_PKEY_ECDSA_method EVP_PKEY_NULL_method +# endif + +# ifndef OPENSSL_NO_RSA +# define EVP_PKEY_RSA_method (evp_sign_method *)RSA_sign, \ + (evp_verify_method *)RSA_verify, \ + {EVP_PKEY_RSA,EVP_PKEY_RSA2,0,0} +# define EVP_PKEY_RSA_ASN1_OCTET_STRING_method \ + (evp_sign_method *)RSA_sign_ASN1_OCTET_STRING, \ + (evp_verify_method *)RSA_verify_ASN1_OCTET_STRING, \ + {EVP_PKEY_RSA,EVP_PKEY_RSA2,0,0} +# else +# define EVP_PKEY_RSA_method EVP_PKEY_NULL_method +# define EVP_PKEY_RSA_ASN1_OCTET_STRING_method EVP_PKEY_NULL_method +# endif + +# endif /* !EVP_MD */ + +struct env_md_ctx_st { + const EVP_MD *digest; + ENGINE *engine; /* functional reference if 'digest' is + * ENGINE-provided */ + unsigned long flags; + void *md_data; + /* Public key context for sign/verify */ + EVP_PKEY_CTX *pctx; + /* Update function: usually copied from EVP_MD */ + int (*update) (EVP_MD_CTX *ctx, const void *data, size_t count); +} /* EVP_MD_CTX */ ; + +/* values for EVP_MD_CTX flags */ + +# define EVP_MD_CTX_FLAG_ONESHOT 0x0001/* digest update will be + * called once only */ +# define EVP_MD_CTX_FLAG_CLEANED 0x0002/* context has already been + * cleaned */ +# define EVP_MD_CTX_FLAG_REUSE 0x0004/* Don't free up ctx->md_data + * in EVP_MD_CTX_cleanup */ +/* + * FIPS and pad options are ignored in 1.0.0, definitions are here so we + * don't accidentally reuse the values for other purposes. + */ + +# define EVP_MD_CTX_FLAG_NON_FIPS_ALLOW 0x0008/* Allow use of non FIPS + * digest in FIPS mode */ + +/* + * The following PAD options are also currently ignored in 1.0.0, digest + * parameters are handled through EVP_DigestSign*() and EVP_DigestVerify*() + * instead. + */ +# define EVP_MD_CTX_FLAG_PAD_MASK 0xF0/* RSA mode to use */ +# define EVP_MD_CTX_FLAG_PAD_PKCS1 0x00/* PKCS#1 v1.5 mode */ +# define EVP_MD_CTX_FLAG_PAD_X931 0x10/* X9.31 mode */ +# define EVP_MD_CTX_FLAG_PAD_PSS 0x20/* PSS mode */ + +# define EVP_MD_CTX_FLAG_NO_INIT 0x0100/* Don't initialize md_data */ + +struct evp_cipher_st { + int nid; + int block_size; + /* Default value for variable length ciphers */ + int key_len; + int iv_len; + /* Various flags */ + unsigned long flags; + /* init key */ + int (*init) (EVP_CIPHER_CTX *ctx, const unsigned char *key, + const unsigned char *iv, int enc); + /* encrypt/decrypt data */ + int (*do_cipher) (EVP_CIPHER_CTX *ctx, unsigned char *out, + const unsigned char *in, size_t inl); + /* cleanup ctx */ + int (*cleanup) (EVP_CIPHER_CTX *); + /* how big ctx->cipher_data needs to be */ + int ctx_size; + /* Populate a ASN1_TYPE with parameters */ + int (*set_asn1_parameters) (EVP_CIPHER_CTX *, ASN1_TYPE *); + /* Get parameters from a ASN1_TYPE */ + int (*get_asn1_parameters) (EVP_CIPHER_CTX *, ASN1_TYPE *); + /* Miscellaneous operations */ + int (*ctrl) (EVP_CIPHER_CTX *, int type, int arg, void *ptr); + /* Application data */ + void *app_data; +} /* EVP_CIPHER */ ; + +/* Values for cipher flags */ + +/* Modes for ciphers */ + +# define EVP_CIPH_STREAM_CIPHER 0x0 +# define EVP_CIPH_ECB_MODE 0x1 +# define EVP_CIPH_CBC_MODE 0x2 +# define EVP_CIPH_CFB_MODE 0x3 +# define EVP_CIPH_OFB_MODE 0x4 +# define EVP_CIPH_CTR_MODE 0x5 +# define EVP_CIPH_GCM_MODE 0x6 +# define EVP_CIPH_CCM_MODE 0x7 +# define EVP_CIPH_XTS_MODE 0x10001 +# define EVP_CIPH_WRAP_MODE 0x10002 +# define EVP_CIPH_MODE 0xF0007 +/* Set if variable length cipher */ +# define EVP_CIPH_VARIABLE_LENGTH 0x8 +/* Set if the iv handling should be done by the cipher itself */ +# define EVP_CIPH_CUSTOM_IV 0x10 +/* Set if the cipher's init() function should be called if key is NULL */ +# define EVP_CIPH_ALWAYS_CALL_INIT 0x20 +/* Call ctrl() to init cipher parameters */ +# define EVP_CIPH_CTRL_INIT 0x40 +/* Don't use standard key length function */ +# define EVP_CIPH_CUSTOM_KEY_LENGTH 0x80 +/* Don't use standard block padding */ +# define EVP_CIPH_NO_PADDING 0x100 +/* cipher handles random key generation */ +# define EVP_CIPH_RAND_KEY 0x200 +/* cipher has its own additional copying logic */ +# define EVP_CIPH_CUSTOM_COPY 0x400 +/* Allow use default ASN1 get/set iv */ +# define EVP_CIPH_FLAG_DEFAULT_ASN1 0x1000 +/* Buffer length in bits not bytes: CFB1 mode only */ +# define EVP_CIPH_FLAG_LENGTH_BITS 0x2000 +/* Note if suitable for use in FIPS mode */ +# define EVP_CIPH_FLAG_FIPS 0x4000 +/* Allow non FIPS cipher in FIPS mode */ +# define EVP_CIPH_FLAG_NON_FIPS_ALLOW 0x8000 +/* + * Cipher handles any and all padding logic as well as finalisation. + */ +# define EVP_CIPH_FLAG_CUSTOM_CIPHER 0x100000 +# define EVP_CIPH_FLAG_AEAD_CIPHER 0x200000 +# define EVP_CIPH_FLAG_TLS1_1_MULTIBLOCK 0x400000 + +/* + * Cipher context flag to indicate we can handle wrap mode: if allowed in + * older applications it could overflow buffers. + */ + +# define EVP_CIPHER_CTX_FLAG_WRAP_ALLOW 0x1 + +/* ctrl() values */ + +# define EVP_CTRL_INIT 0x0 +# define EVP_CTRL_SET_KEY_LENGTH 0x1 +# define EVP_CTRL_GET_RC2_KEY_BITS 0x2 +# define EVP_CTRL_SET_RC2_KEY_BITS 0x3 +# define EVP_CTRL_GET_RC5_ROUNDS 0x4 +# define EVP_CTRL_SET_RC5_ROUNDS 0x5 +# define EVP_CTRL_RAND_KEY 0x6 +# define EVP_CTRL_PBE_PRF_NID 0x7 +# define EVP_CTRL_COPY 0x8 +# define EVP_CTRL_GCM_SET_IVLEN 0x9 +# define EVP_CTRL_GCM_GET_TAG 0x10 +# define EVP_CTRL_GCM_SET_TAG 0x11 +# define EVP_CTRL_GCM_SET_IV_FIXED 0x12 +# define EVP_CTRL_GCM_IV_GEN 0x13 +# define EVP_CTRL_CCM_SET_IVLEN EVP_CTRL_GCM_SET_IVLEN +# define EVP_CTRL_CCM_GET_TAG EVP_CTRL_GCM_GET_TAG +# define EVP_CTRL_CCM_SET_TAG EVP_CTRL_GCM_SET_TAG +# define EVP_CTRL_CCM_SET_L 0x14 +# define EVP_CTRL_CCM_SET_MSGLEN 0x15 +/* + * AEAD cipher deduces payload length and returns number of bytes required to + * store MAC and eventual padding. Subsequent call to EVP_Cipher even + * appends/verifies MAC. + */ +# define EVP_CTRL_AEAD_TLS1_AAD 0x16 +/* Used by composite AEAD ciphers, no-op in GCM, CCM... */ +# define EVP_CTRL_AEAD_SET_MAC_KEY 0x17 +/* Set the GCM invocation field, decrypt only */ +# define EVP_CTRL_GCM_SET_IV_INV 0x18 + +# define EVP_CTRL_TLS1_1_MULTIBLOCK_AAD 0x19 +# define EVP_CTRL_TLS1_1_MULTIBLOCK_ENCRYPT 0x1a +# define EVP_CTRL_TLS1_1_MULTIBLOCK_DECRYPT 0x1b +# define EVP_CTRL_TLS1_1_MULTIBLOCK_MAX_BUFSIZE 0x1c + +typedef struct { + unsigned char *out; + const unsigned char *inp; + size_t len; + unsigned int interleave; +} EVP_CTRL_TLS1_1_MULTIBLOCK_PARAM; + +/* GCM TLS constants */ +/* Length of fixed part of IV derived from PRF */ +# define EVP_GCM_TLS_FIXED_IV_LEN 4 +/* Length of explicit part of IV part of TLS records */ +# define EVP_GCM_TLS_EXPLICIT_IV_LEN 8 +/* Length of tag for TLS */ +# define EVP_GCM_TLS_TAG_LEN 16 + +typedef struct evp_cipher_info_st { + const EVP_CIPHER *cipher; + unsigned char iv[EVP_MAX_IV_LENGTH]; +} EVP_CIPHER_INFO; + +struct evp_cipher_ctx_st { + const EVP_CIPHER *cipher; + ENGINE *engine; /* functional reference if 'cipher' is + * ENGINE-provided */ + int encrypt; /* encrypt or decrypt */ + int buf_len; /* number we have left */ + unsigned char oiv[EVP_MAX_IV_LENGTH]; /* original iv */ + unsigned char iv[EVP_MAX_IV_LENGTH]; /* working iv */ + unsigned char buf[EVP_MAX_BLOCK_LENGTH]; /* saved partial block */ + int num; /* used by cfb/ofb/ctr mode */ + void *app_data; /* application stuff */ + int key_len; /* May change for variable length cipher */ + unsigned long flags; /* Various flags */ + void *cipher_data; /* per EVP data */ + int final_used; + int block_mask; + unsigned char final[EVP_MAX_BLOCK_LENGTH]; /* possible final block */ +} /* EVP_CIPHER_CTX */ ; + +typedef struct evp_Encode_Ctx_st { + /* number saved in a partial encode/decode */ + int num; + /* + * The length is either the output line length (in input bytes) or the + * shortest input line length that is ok. Once decoding begins, the + * length is adjusted up each time a longer line is decoded + */ + int length; + /* data to encode */ + unsigned char enc_data[80]; + /* number read on current line */ + int line_num; + int expect_nl; +} EVP_ENCODE_CTX; + +/* Password based encryption function */ +typedef int (EVP_PBE_KEYGEN) (EVP_CIPHER_CTX *ctx, const char *pass, + int passlen, ASN1_TYPE *param, + const EVP_CIPHER *cipher, const EVP_MD *md, + int en_de); + +# ifndef OPENSSL_NO_RSA +# define EVP_PKEY_assign_RSA(pkey,rsa) EVP_PKEY_assign((pkey),EVP_PKEY_RSA,\ + (char *)(rsa)) +# endif + +# ifndef OPENSSL_NO_DSA +# define EVP_PKEY_assign_DSA(pkey,dsa) EVP_PKEY_assign((pkey),EVP_PKEY_DSA,\ + (char *)(dsa)) +# endif + +# ifndef OPENSSL_NO_DH +# define EVP_PKEY_assign_DH(pkey,dh) EVP_PKEY_assign((pkey),EVP_PKEY_DH,\ + (char *)(dh)) +# endif + +# ifndef OPENSSL_NO_EC +# define EVP_PKEY_assign_EC_KEY(pkey,eckey) EVP_PKEY_assign((pkey),EVP_PKEY_EC,\ + (char *)(eckey)) +# endif + +/* Add some extra combinations */ +# define EVP_get_digestbynid(a) EVP_get_digestbyname(OBJ_nid2sn(a)) +# define EVP_get_digestbyobj(a) EVP_get_digestbynid(OBJ_obj2nid(a)) +# define EVP_get_cipherbynid(a) EVP_get_cipherbyname(OBJ_nid2sn(a)) +# define EVP_get_cipherbyobj(a) EVP_get_cipherbynid(OBJ_obj2nid(a)) + +int EVP_MD_type(const EVP_MD *md); +# define EVP_MD_nid(e) EVP_MD_type(e) +# define EVP_MD_name(e) OBJ_nid2sn(EVP_MD_nid(e)) +int EVP_MD_pkey_type(const EVP_MD *md); +int EVP_MD_size(const EVP_MD *md); +int EVP_MD_block_size(const EVP_MD *md); +unsigned long EVP_MD_flags(const EVP_MD *md); + +const EVP_MD *EVP_MD_CTX_md(const EVP_MD_CTX *ctx); +# define EVP_MD_CTX_size(e) EVP_MD_size(EVP_MD_CTX_md(e)) +# define EVP_MD_CTX_block_size(e) EVP_MD_block_size(EVP_MD_CTX_md(e)) +# define EVP_MD_CTX_type(e) EVP_MD_type(EVP_MD_CTX_md(e)) + +int EVP_CIPHER_nid(const EVP_CIPHER *cipher); +# define EVP_CIPHER_name(e) OBJ_nid2sn(EVP_CIPHER_nid(e)) +int EVP_CIPHER_block_size(const EVP_CIPHER *cipher); +int EVP_CIPHER_key_length(const EVP_CIPHER *cipher); +int EVP_CIPHER_iv_length(const EVP_CIPHER *cipher); +unsigned long EVP_CIPHER_flags(const EVP_CIPHER *cipher); +# define EVP_CIPHER_mode(e) (EVP_CIPHER_flags(e) & EVP_CIPH_MODE) + +const EVP_CIPHER *EVP_CIPHER_CTX_cipher(const EVP_CIPHER_CTX *ctx); +int EVP_CIPHER_CTX_nid(const EVP_CIPHER_CTX *ctx); +int EVP_CIPHER_CTX_block_size(const EVP_CIPHER_CTX *ctx); +int EVP_CIPHER_CTX_key_length(const EVP_CIPHER_CTX *ctx); +int EVP_CIPHER_CTX_iv_length(const EVP_CIPHER_CTX *ctx); +int EVP_CIPHER_CTX_copy(EVP_CIPHER_CTX *out, const EVP_CIPHER_CTX *in); +void *EVP_CIPHER_CTX_get_app_data(const EVP_CIPHER_CTX *ctx); +void EVP_CIPHER_CTX_set_app_data(EVP_CIPHER_CTX *ctx, void *data); +# define EVP_CIPHER_CTX_type(c) EVP_CIPHER_type(EVP_CIPHER_CTX_cipher(c)) +unsigned long EVP_CIPHER_CTX_flags(const EVP_CIPHER_CTX *ctx); +# define EVP_CIPHER_CTX_mode(e) (EVP_CIPHER_CTX_flags(e) & EVP_CIPH_MODE) + +# define EVP_ENCODE_LENGTH(l) (((l+2)/3*4)+(l/48+1)*2+80) +# define EVP_DECODE_LENGTH(l) ((l+3)/4*3+80) + +# define EVP_SignInit_ex(a,b,c) EVP_DigestInit_ex(a,b,c) +# define EVP_SignInit(a,b) EVP_DigestInit(a,b) +# define EVP_SignUpdate(a,b,c) EVP_DigestUpdate(a,b,c) +# define EVP_VerifyInit_ex(a,b,c) EVP_DigestInit_ex(a,b,c) +# define EVP_VerifyInit(a,b) EVP_DigestInit(a,b) +# define EVP_VerifyUpdate(a,b,c) EVP_DigestUpdate(a,b,c) +# define EVP_OpenUpdate(a,b,c,d,e) EVP_DecryptUpdate(a,b,c,d,e) +# define EVP_SealUpdate(a,b,c,d,e) EVP_EncryptUpdate(a,b,c,d,e) +# define EVP_DigestSignUpdate(a,b,c) EVP_DigestUpdate(a,b,c) +# define EVP_DigestVerifyUpdate(a,b,c) EVP_DigestUpdate(a,b,c) + +# ifdef CONST_STRICT +void BIO_set_md(BIO *, const EVP_MD *md); +# else +# define BIO_set_md(b,md) BIO_ctrl(b,BIO_C_SET_MD,0,(char *)md) +# endif +# define BIO_get_md(b,mdp) BIO_ctrl(b,BIO_C_GET_MD,0,(char *)mdp) +# define BIO_get_md_ctx(b,mdcp) BIO_ctrl(b,BIO_C_GET_MD_CTX,0,(char *)mdcp) +# define BIO_set_md_ctx(b,mdcp) BIO_ctrl(b,BIO_C_SET_MD_CTX,0,(char *)mdcp) +# define BIO_get_cipher_status(b) BIO_ctrl(b,BIO_C_GET_CIPHER_STATUS,0,NULL) +# define BIO_get_cipher_ctx(b,c_pp) BIO_ctrl(b,BIO_C_GET_CIPHER_CTX,0,(char *)c_pp) + +int EVP_Cipher(EVP_CIPHER_CTX *c, + unsigned char *out, const unsigned char *in, unsigned int inl); + +# define EVP_add_cipher_alias(n,alias) \ + OBJ_NAME_add((alias),OBJ_NAME_TYPE_CIPHER_METH|OBJ_NAME_ALIAS,(n)) +# define EVP_add_digest_alias(n,alias) \ + OBJ_NAME_add((alias),OBJ_NAME_TYPE_MD_METH|OBJ_NAME_ALIAS,(n)) +# define EVP_delete_cipher_alias(alias) \ + OBJ_NAME_remove(alias,OBJ_NAME_TYPE_CIPHER_METH|OBJ_NAME_ALIAS); +# define EVP_delete_digest_alias(alias) \ + OBJ_NAME_remove(alias,OBJ_NAME_TYPE_MD_METH|OBJ_NAME_ALIAS); + +void EVP_MD_CTX_init(EVP_MD_CTX *ctx); +int EVP_MD_CTX_cleanup(EVP_MD_CTX *ctx); +EVP_MD_CTX *EVP_MD_CTX_create(void); +void EVP_MD_CTX_destroy(EVP_MD_CTX *ctx); +int EVP_MD_CTX_copy_ex(EVP_MD_CTX *out, const EVP_MD_CTX *in); +void EVP_MD_CTX_set_flags(EVP_MD_CTX *ctx, int flags); +void EVP_MD_CTX_clear_flags(EVP_MD_CTX *ctx, int flags); +int EVP_MD_CTX_test_flags(const EVP_MD_CTX *ctx, int flags); +int EVP_DigestInit_ex(EVP_MD_CTX *ctx, const EVP_MD *type, ENGINE *impl); +int EVP_DigestUpdate(EVP_MD_CTX *ctx, const void *d, size_t cnt); +int EVP_DigestFinal_ex(EVP_MD_CTX *ctx, unsigned char *md, unsigned int *s); +int EVP_Digest(const void *data, size_t count, + unsigned char *md, unsigned int *size, const EVP_MD *type, + ENGINE *impl); + +int EVP_MD_CTX_copy(EVP_MD_CTX *out, const EVP_MD_CTX *in); +int EVP_DigestInit(EVP_MD_CTX *ctx, const EVP_MD *type); +int EVP_DigestFinal(EVP_MD_CTX *ctx, unsigned char *md, unsigned int *s); + +int EVP_read_pw_string(char *buf, int length, const char *prompt, int verify); +int EVP_read_pw_string_min(char *buf, int minlen, int maxlen, + const char *prompt, int verify); +void EVP_set_pw_prompt(const char *prompt); +char *EVP_get_pw_prompt(void); + +int EVP_BytesToKey(const EVP_CIPHER *type, const EVP_MD *md, + const unsigned char *salt, const unsigned char *data, + int datal, int count, unsigned char *key, + unsigned char *iv); + +void EVP_CIPHER_CTX_set_flags(EVP_CIPHER_CTX *ctx, int flags); +void EVP_CIPHER_CTX_clear_flags(EVP_CIPHER_CTX *ctx, int flags); +int EVP_CIPHER_CTX_test_flags(const EVP_CIPHER_CTX *ctx, int flags); + +int EVP_EncryptInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, + const unsigned char *key, const unsigned char *iv); +int EVP_EncryptInit_ex(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, + ENGINE *impl, const unsigned char *key, + const unsigned char *iv); +int EVP_EncryptUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl, + const unsigned char *in, int inl); +int EVP_EncryptFinal_ex(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl); +int EVP_EncryptFinal(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl); + +int EVP_DecryptInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, + const unsigned char *key, const unsigned char *iv); +int EVP_DecryptInit_ex(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, + ENGINE *impl, const unsigned char *key, + const unsigned char *iv); +int EVP_DecryptUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl, + const unsigned char *in, int inl); +int EVP_DecryptFinal(EVP_CIPHER_CTX *ctx, unsigned char *outm, int *outl); +int EVP_DecryptFinal_ex(EVP_CIPHER_CTX *ctx, unsigned char *outm, int *outl); + +int EVP_CipherInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, + const unsigned char *key, const unsigned char *iv, + int enc); +int EVP_CipherInit_ex(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, + ENGINE *impl, const unsigned char *key, + const unsigned char *iv, int enc); +int EVP_CipherUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl, + const unsigned char *in, int inl); +int EVP_CipherFinal(EVP_CIPHER_CTX *ctx, unsigned char *outm, int *outl); +int EVP_CipherFinal_ex(EVP_CIPHER_CTX *ctx, unsigned char *outm, int *outl); + +int EVP_SignFinal(EVP_MD_CTX *ctx, unsigned char *md, unsigned int *s, + EVP_PKEY *pkey); + +int EVP_VerifyFinal(EVP_MD_CTX *ctx, const unsigned char *sigbuf, + unsigned int siglen, EVP_PKEY *pkey); + +int EVP_DigestSignInit(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx, + const EVP_MD *type, ENGINE *e, EVP_PKEY *pkey); +int EVP_DigestSignFinal(EVP_MD_CTX *ctx, + unsigned char *sigret, size_t *siglen); + +int EVP_DigestVerifyInit(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx, + const EVP_MD *type, ENGINE *e, EVP_PKEY *pkey); +int EVP_DigestVerifyFinal(EVP_MD_CTX *ctx, + const unsigned char *sig, size_t siglen); + +int EVP_OpenInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *type, + const unsigned char *ek, int ekl, const unsigned char *iv, + EVP_PKEY *priv); +int EVP_OpenFinal(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl); + +int EVP_SealInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *type, + unsigned char **ek, int *ekl, unsigned char *iv, + EVP_PKEY **pubk, int npubk); +int EVP_SealFinal(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl); + +void EVP_EncodeInit(EVP_ENCODE_CTX *ctx); +void EVP_EncodeUpdate(EVP_ENCODE_CTX *ctx, unsigned char *out, int *outl, + const unsigned char *in, int inl); +void EVP_EncodeFinal(EVP_ENCODE_CTX *ctx, unsigned char *out, int *outl); +int EVP_EncodeBlock(unsigned char *t, const unsigned char *f, int n); + +void EVP_DecodeInit(EVP_ENCODE_CTX *ctx); +int EVP_DecodeUpdate(EVP_ENCODE_CTX *ctx, unsigned char *out, int *outl, + const unsigned char *in, int inl); +int EVP_DecodeFinal(EVP_ENCODE_CTX *ctx, unsigned + char *out, int *outl); +int EVP_DecodeBlock(unsigned char *t, const unsigned char *f, int n); + +void EVP_CIPHER_CTX_init(EVP_CIPHER_CTX *a); +int EVP_CIPHER_CTX_cleanup(EVP_CIPHER_CTX *a); +EVP_CIPHER_CTX *EVP_CIPHER_CTX_new(void); +void EVP_CIPHER_CTX_free(EVP_CIPHER_CTX *a); +int EVP_CIPHER_CTX_set_key_length(EVP_CIPHER_CTX *x, int keylen); +int EVP_CIPHER_CTX_set_padding(EVP_CIPHER_CTX *c, int pad); +int EVP_CIPHER_CTX_ctrl(EVP_CIPHER_CTX *ctx, int type, int arg, void *ptr); +int EVP_CIPHER_CTX_rand_key(EVP_CIPHER_CTX *ctx, unsigned char *key); + +# ifndef OPENSSL_NO_BIO +BIO_METHOD *BIO_f_md(void); +BIO_METHOD *BIO_f_base64(void); +BIO_METHOD *BIO_f_cipher(void); +BIO_METHOD *BIO_f_reliable(void); +void BIO_set_cipher(BIO *b, const EVP_CIPHER *c, const unsigned char *k, + const unsigned char *i, int enc); +# endif + +const EVP_MD *EVP_md_null(void); +# ifndef OPENSSL_NO_MD2 +const EVP_MD *EVP_md2(void); +# endif +# ifndef OPENSSL_NO_MD4 +const EVP_MD *EVP_md4(void); +# endif +# ifndef OPENSSL_NO_MD5 +const EVP_MD *EVP_md5(void); +# endif +# ifndef OPENSSL_NO_SHA +const EVP_MD *EVP_sha(void); +const EVP_MD *EVP_sha1(void); +const EVP_MD *EVP_dss(void); +const EVP_MD *EVP_dss1(void); +const EVP_MD *EVP_ecdsa(void); +# endif +# ifndef OPENSSL_NO_SHA256 +const EVP_MD *EVP_sha224(void); +const EVP_MD *EVP_sha256(void); +# endif +# ifndef OPENSSL_NO_SHA512 +const EVP_MD *EVP_sha384(void); +const EVP_MD *EVP_sha512(void); +# endif +# ifndef OPENSSL_NO_MDC2 +const EVP_MD *EVP_mdc2(void); +# endif +# ifndef OPENSSL_NO_RIPEMD +const EVP_MD *EVP_ripemd160(void); +# endif +# ifndef OPENSSL_NO_WHIRLPOOL +const EVP_MD *EVP_whirlpool(void); +# endif +const EVP_CIPHER *EVP_enc_null(void); /* does nothing :-) */ +# ifndef OPENSSL_NO_DES +const EVP_CIPHER *EVP_des_ecb(void); +const EVP_CIPHER *EVP_des_ede(void); +const EVP_CIPHER *EVP_des_ede3(void); +const EVP_CIPHER *EVP_des_ede_ecb(void); +const EVP_CIPHER *EVP_des_ede3_ecb(void); +const EVP_CIPHER *EVP_des_cfb64(void); +# define EVP_des_cfb EVP_des_cfb64 +const EVP_CIPHER *EVP_des_cfb1(void); +const EVP_CIPHER *EVP_des_cfb8(void); +const EVP_CIPHER *EVP_des_ede_cfb64(void); +# define EVP_des_ede_cfb EVP_des_ede_cfb64 +# if 0 +const EVP_CIPHER *EVP_des_ede_cfb1(void); +const EVP_CIPHER *EVP_des_ede_cfb8(void); +# endif +const EVP_CIPHER *EVP_des_ede3_cfb64(void); +# define EVP_des_ede3_cfb EVP_des_ede3_cfb64 +const EVP_CIPHER *EVP_des_ede3_cfb1(void); +const EVP_CIPHER *EVP_des_ede3_cfb8(void); +const EVP_CIPHER *EVP_des_ofb(void); +const EVP_CIPHER *EVP_des_ede_ofb(void); +const EVP_CIPHER *EVP_des_ede3_ofb(void); +const EVP_CIPHER *EVP_des_cbc(void); +const EVP_CIPHER *EVP_des_ede_cbc(void); +const EVP_CIPHER *EVP_des_ede3_cbc(void); +const EVP_CIPHER *EVP_desx_cbc(void); +const EVP_CIPHER *EVP_des_ede3_wrap(void); +/* + * This should now be supported through the dev_crypto ENGINE. But also, why + * are rc4 and md5 declarations made here inside a "NO_DES" precompiler + * branch? + */ +# if 0 +# ifdef OPENSSL_OPENBSD_DEV_CRYPTO +const EVP_CIPHER *EVP_dev_crypto_des_ede3_cbc(void); +const EVP_CIPHER *EVP_dev_crypto_rc4(void); +const EVP_MD *EVP_dev_crypto_md5(void); +# endif +# endif +# endif +# ifndef OPENSSL_NO_RC4 +const EVP_CIPHER *EVP_rc4(void); +const EVP_CIPHER *EVP_rc4_40(void); +# ifndef OPENSSL_NO_MD5 +const EVP_CIPHER *EVP_rc4_hmac_md5(void); +# endif +# endif +# ifndef OPENSSL_NO_IDEA +const EVP_CIPHER *EVP_idea_ecb(void); +const EVP_CIPHER *EVP_idea_cfb64(void); +# define EVP_idea_cfb EVP_idea_cfb64 +const EVP_CIPHER *EVP_idea_ofb(void); +const EVP_CIPHER *EVP_idea_cbc(void); +# endif +# ifndef OPENSSL_NO_RC2 +const EVP_CIPHER *EVP_rc2_ecb(void); +const EVP_CIPHER *EVP_rc2_cbc(void); +const EVP_CIPHER *EVP_rc2_40_cbc(void); +const EVP_CIPHER *EVP_rc2_64_cbc(void); +const EVP_CIPHER *EVP_rc2_cfb64(void); +# define EVP_rc2_cfb EVP_rc2_cfb64 +const EVP_CIPHER *EVP_rc2_ofb(void); +# endif +# ifndef OPENSSL_NO_BF +const EVP_CIPHER *EVP_bf_ecb(void); +const EVP_CIPHER *EVP_bf_cbc(void); +const EVP_CIPHER *EVP_bf_cfb64(void); +# define EVP_bf_cfb EVP_bf_cfb64 +const EVP_CIPHER *EVP_bf_ofb(void); +# endif +# ifndef OPENSSL_NO_CAST +const EVP_CIPHER *EVP_cast5_ecb(void); +const EVP_CIPHER *EVP_cast5_cbc(void); +const EVP_CIPHER *EVP_cast5_cfb64(void); +# define EVP_cast5_cfb EVP_cast5_cfb64 +const EVP_CIPHER *EVP_cast5_ofb(void); +# endif +# ifndef OPENSSL_NO_RC5 +const EVP_CIPHER *EVP_rc5_32_12_16_cbc(void); +const EVP_CIPHER *EVP_rc5_32_12_16_ecb(void); +const EVP_CIPHER *EVP_rc5_32_12_16_cfb64(void); +# define EVP_rc5_32_12_16_cfb EVP_rc5_32_12_16_cfb64 +const EVP_CIPHER *EVP_rc5_32_12_16_ofb(void); +# endif +# ifndef OPENSSL_NO_AES +const EVP_CIPHER *EVP_aes_128_ecb(void); +const EVP_CIPHER *EVP_aes_128_cbc(void); +const EVP_CIPHER *EVP_aes_128_cfb1(void); +const EVP_CIPHER *EVP_aes_128_cfb8(void); +const EVP_CIPHER *EVP_aes_128_cfb128(void); +# define EVP_aes_128_cfb EVP_aes_128_cfb128 +const EVP_CIPHER *EVP_aes_128_ofb(void); +const EVP_CIPHER *EVP_aes_128_ctr(void); +const EVP_CIPHER *EVP_aes_128_ccm(void); +const EVP_CIPHER *EVP_aes_128_gcm(void); +const EVP_CIPHER *EVP_aes_128_xts(void); +const EVP_CIPHER *EVP_aes_128_wrap(void); +const EVP_CIPHER *EVP_aes_192_ecb(void); +const EVP_CIPHER *EVP_aes_192_cbc(void); +const EVP_CIPHER *EVP_aes_192_cfb1(void); +const EVP_CIPHER *EVP_aes_192_cfb8(void); +const EVP_CIPHER *EVP_aes_192_cfb128(void); +# define EVP_aes_192_cfb EVP_aes_192_cfb128 +const EVP_CIPHER *EVP_aes_192_ofb(void); +const EVP_CIPHER *EVP_aes_192_ctr(void); +const EVP_CIPHER *EVP_aes_192_ccm(void); +const EVP_CIPHER *EVP_aes_192_gcm(void); +const EVP_CIPHER *EVP_aes_192_wrap(void); +const EVP_CIPHER *EVP_aes_256_ecb(void); +const EVP_CIPHER *EVP_aes_256_cbc(void); +const EVP_CIPHER *EVP_aes_256_cfb1(void); +const EVP_CIPHER *EVP_aes_256_cfb8(void); +const EVP_CIPHER *EVP_aes_256_cfb128(void); +# define EVP_aes_256_cfb EVP_aes_256_cfb128 +const EVP_CIPHER *EVP_aes_256_ofb(void); +const EVP_CIPHER *EVP_aes_256_ctr(void); +const EVP_CIPHER *EVP_aes_256_ccm(void); +const EVP_CIPHER *EVP_aes_256_gcm(void); +const EVP_CIPHER *EVP_aes_256_xts(void); +const EVP_CIPHER *EVP_aes_256_wrap(void); +# if !defined(OPENSSL_NO_SHA) && !defined(OPENSSL_NO_SHA1) +const EVP_CIPHER *EVP_aes_128_cbc_hmac_sha1(void); +const EVP_CIPHER *EVP_aes_256_cbc_hmac_sha1(void); +# endif +# ifndef OPENSSL_NO_SHA256 +const EVP_CIPHER *EVP_aes_128_cbc_hmac_sha256(void); +const EVP_CIPHER *EVP_aes_256_cbc_hmac_sha256(void); +# endif +# endif +# ifndef OPENSSL_NO_CAMELLIA +const EVP_CIPHER *EVP_camellia_128_ecb(void); +const EVP_CIPHER *EVP_camellia_128_cbc(void); +const EVP_CIPHER *EVP_camellia_128_cfb1(void); +const EVP_CIPHER *EVP_camellia_128_cfb8(void); +const EVP_CIPHER *EVP_camellia_128_cfb128(void); +# define EVP_camellia_128_cfb EVP_camellia_128_cfb128 +const EVP_CIPHER *EVP_camellia_128_ofb(void); +const EVP_CIPHER *EVP_camellia_192_ecb(void); +const EVP_CIPHER *EVP_camellia_192_cbc(void); +const EVP_CIPHER *EVP_camellia_192_cfb1(void); +const EVP_CIPHER *EVP_camellia_192_cfb8(void); +const EVP_CIPHER *EVP_camellia_192_cfb128(void); +# define EVP_camellia_192_cfb EVP_camellia_192_cfb128 +const EVP_CIPHER *EVP_camellia_192_ofb(void); +const EVP_CIPHER *EVP_camellia_256_ecb(void); +const EVP_CIPHER *EVP_camellia_256_cbc(void); +const EVP_CIPHER *EVP_camellia_256_cfb1(void); +const EVP_CIPHER *EVP_camellia_256_cfb8(void); +const EVP_CIPHER *EVP_camellia_256_cfb128(void); +# define EVP_camellia_256_cfb EVP_camellia_256_cfb128 +const EVP_CIPHER *EVP_camellia_256_ofb(void); +# endif + +# ifndef OPENSSL_NO_SEED +const EVP_CIPHER *EVP_seed_ecb(void); +const EVP_CIPHER *EVP_seed_cbc(void); +const EVP_CIPHER *EVP_seed_cfb128(void); +# define EVP_seed_cfb EVP_seed_cfb128 +const EVP_CIPHER *EVP_seed_ofb(void); +# endif + +void OPENSSL_add_all_algorithms_noconf(void); +void OPENSSL_add_all_algorithms_conf(void); + +# ifdef OPENSSL_LOAD_CONF +# define OpenSSL_add_all_algorithms() \ + OPENSSL_add_all_algorithms_conf() +# else +# define OpenSSL_add_all_algorithms() \ + OPENSSL_add_all_algorithms_noconf() +# endif + +void OpenSSL_add_all_ciphers(void); +void OpenSSL_add_all_digests(void); +# define SSLeay_add_all_algorithms() OpenSSL_add_all_algorithms() +# define SSLeay_add_all_ciphers() OpenSSL_add_all_ciphers() +# define SSLeay_add_all_digests() OpenSSL_add_all_digests() + +int EVP_add_cipher(const EVP_CIPHER *cipher); +int EVP_add_digest(const EVP_MD *digest); + +const EVP_CIPHER *EVP_get_cipherbyname(const char *name); +const EVP_MD *EVP_get_digestbyname(const char *name); +void EVP_cleanup(void); + +void EVP_CIPHER_do_all(void (*fn) (const EVP_CIPHER *ciph, + const char *from, const char *to, void *x), + void *arg); +void EVP_CIPHER_do_all_sorted(void (*fn) + (const EVP_CIPHER *ciph, const char *from, + const char *to, void *x), void *arg); + +void EVP_MD_do_all(void (*fn) (const EVP_MD *ciph, + const char *from, const char *to, void *x), + void *arg); +void EVP_MD_do_all_sorted(void (*fn) + (const EVP_MD *ciph, const char *from, + const char *to, void *x), void *arg); + +int EVP_PKEY_decrypt_old(unsigned char *dec_key, + const unsigned char *enc_key, int enc_key_len, + EVP_PKEY *private_key); +int EVP_PKEY_encrypt_old(unsigned char *enc_key, + const unsigned char *key, int key_len, + EVP_PKEY *pub_key); +int EVP_PKEY_type(int type); +int EVP_PKEY_id(const EVP_PKEY *pkey); +int EVP_PKEY_base_id(const EVP_PKEY *pkey); +int EVP_PKEY_bits(EVP_PKEY *pkey); +int EVP_PKEY_size(EVP_PKEY *pkey); +int EVP_PKEY_set_type(EVP_PKEY *pkey, int type); +int EVP_PKEY_set_type_str(EVP_PKEY *pkey, const char *str, int len); +int EVP_PKEY_assign(EVP_PKEY *pkey, int type, void *key); +void *EVP_PKEY_get0(EVP_PKEY *pkey); + +# ifndef OPENSSL_NO_RSA +struct rsa_st; +int EVP_PKEY_set1_RSA(EVP_PKEY *pkey, struct rsa_st *key); +struct rsa_st *EVP_PKEY_get1_RSA(EVP_PKEY *pkey); +# endif +# ifndef OPENSSL_NO_DSA +struct dsa_st; +int EVP_PKEY_set1_DSA(EVP_PKEY *pkey, struct dsa_st *key); +struct dsa_st *EVP_PKEY_get1_DSA(EVP_PKEY *pkey); +# endif +# ifndef OPENSSL_NO_DH +struct dh_st; +int EVP_PKEY_set1_DH(EVP_PKEY *pkey, struct dh_st *key); +struct dh_st *EVP_PKEY_get1_DH(EVP_PKEY *pkey); +# endif +# ifndef OPENSSL_NO_EC +struct ec_key_st; +int EVP_PKEY_set1_EC_KEY(EVP_PKEY *pkey, struct ec_key_st *key); +struct ec_key_st *EVP_PKEY_get1_EC_KEY(EVP_PKEY *pkey); +# endif + +EVP_PKEY *EVP_PKEY_new(void); +void EVP_PKEY_free(EVP_PKEY *pkey); + +EVP_PKEY *d2i_PublicKey(int type, EVP_PKEY **a, const unsigned char **pp, + long length); +int i2d_PublicKey(EVP_PKEY *a, unsigned char **pp); + +EVP_PKEY *d2i_PrivateKey(int type, EVP_PKEY **a, const unsigned char **pp, + long length); +EVP_PKEY *d2i_AutoPrivateKey(EVP_PKEY **a, const unsigned char **pp, + long length); +int i2d_PrivateKey(EVP_PKEY *a, unsigned char **pp); + +int EVP_PKEY_copy_parameters(EVP_PKEY *to, const EVP_PKEY *from); +int EVP_PKEY_missing_parameters(const EVP_PKEY *pkey); +int EVP_PKEY_save_parameters(EVP_PKEY *pkey, int mode); +int EVP_PKEY_cmp_parameters(const EVP_PKEY *a, const EVP_PKEY *b); + +int EVP_PKEY_cmp(const EVP_PKEY *a, const EVP_PKEY *b); + +int EVP_PKEY_print_public(BIO *out, const EVP_PKEY *pkey, + int indent, ASN1_PCTX *pctx); +int EVP_PKEY_print_private(BIO *out, const EVP_PKEY *pkey, + int indent, ASN1_PCTX *pctx); +int EVP_PKEY_print_params(BIO *out, const EVP_PKEY *pkey, + int indent, ASN1_PCTX *pctx); + +int EVP_PKEY_get_default_digest_nid(EVP_PKEY *pkey, int *pnid); + +int EVP_CIPHER_type(const EVP_CIPHER *ctx); + +/* calls methods */ +int EVP_CIPHER_param_to_asn1(EVP_CIPHER_CTX *c, ASN1_TYPE *type); +int EVP_CIPHER_asn1_to_param(EVP_CIPHER_CTX *c, ASN1_TYPE *type); + +/* These are used by EVP_CIPHER methods */ +int EVP_CIPHER_set_asn1_iv(EVP_CIPHER_CTX *c, ASN1_TYPE *type); +int EVP_CIPHER_get_asn1_iv(EVP_CIPHER_CTX *c, ASN1_TYPE *type); + +/* PKCS5 password based encryption */ +int PKCS5_PBE_keyivgen(EVP_CIPHER_CTX *ctx, const char *pass, int passlen, + ASN1_TYPE *param, const EVP_CIPHER *cipher, + const EVP_MD *md, int en_de); +int PKCS5_PBKDF2_HMAC_SHA1(const char *pass, int passlen, + const unsigned char *salt, int saltlen, int iter, + int keylen, unsigned char *out); +int PKCS5_PBKDF2_HMAC(const char *pass, int passlen, + const unsigned char *salt, int saltlen, int iter, + const EVP_MD *digest, int keylen, unsigned char *out); +int PKCS5_v2_PBE_keyivgen(EVP_CIPHER_CTX *ctx, const char *pass, int passlen, + ASN1_TYPE *param, const EVP_CIPHER *cipher, + const EVP_MD *md, int en_de); + +void PKCS5_PBE_add(void); + +int EVP_PBE_CipherInit(ASN1_OBJECT *pbe_obj, const char *pass, int passlen, + ASN1_TYPE *param, EVP_CIPHER_CTX *ctx, int en_de); + +/* PBE type */ + +/* Can appear as the outermost AlgorithmIdentifier */ +# define EVP_PBE_TYPE_OUTER 0x0 +/* Is an PRF type OID */ +# define EVP_PBE_TYPE_PRF 0x1 + +int EVP_PBE_alg_add_type(int pbe_type, int pbe_nid, int cipher_nid, + int md_nid, EVP_PBE_KEYGEN *keygen); +int EVP_PBE_alg_add(int nid, const EVP_CIPHER *cipher, const EVP_MD *md, + EVP_PBE_KEYGEN *keygen); +int EVP_PBE_find(int type, int pbe_nid, int *pcnid, int *pmnid, + EVP_PBE_KEYGEN **pkeygen); +void EVP_PBE_cleanup(void); + +# define ASN1_PKEY_ALIAS 0x1 +# define ASN1_PKEY_DYNAMIC 0x2 +# define ASN1_PKEY_SIGPARAM_NULL 0x4 + +# define ASN1_PKEY_CTRL_PKCS7_SIGN 0x1 +# define ASN1_PKEY_CTRL_PKCS7_ENCRYPT 0x2 +# define ASN1_PKEY_CTRL_DEFAULT_MD_NID 0x3 +# define ASN1_PKEY_CTRL_CMS_SIGN 0x5 +# define ASN1_PKEY_CTRL_CMS_ENVELOPE 0x7 +# define ASN1_PKEY_CTRL_CMS_RI_TYPE 0x8 + +int EVP_PKEY_asn1_get_count(void); +const EVP_PKEY_ASN1_METHOD *EVP_PKEY_asn1_get0(int idx); +const EVP_PKEY_ASN1_METHOD *EVP_PKEY_asn1_find(ENGINE **pe, int type); +const EVP_PKEY_ASN1_METHOD *EVP_PKEY_asn1_find_str(ENGINE **pe, + const char *str, int len); +int EVP_PKEY_asn1_add0(const EVP_PKEY_ASN1_METHOD *ameth); +int EVP_PKEY_asn1_add_alias(int to, int from); +int EVP_PKEY_asn1_get0_info(int *ppkey_id, int *pkey_base_id, + int *ppkey_flags, const char **pinfo, + const char **ppem_str, + const EVP_PKEY_ASN1_METHOD *ameth); + +const EVP_PKEY_ASN1_METHOD *EVP_PKEY_get0_asn1(EVP_PKEY *pkey); +EVP_PKEY_ASN1_METHOD *EVP_PKEY_asn1_new(int id, int flags, + const char *pem_str, + const char *info); +void EVP_PKEY_asn1_copy(EVP_PKEY_ASN1_METHOD *dst, + const EVP_PKEY_ASN1_METHOD *src); +void EVP_PKEY_asn1_free(EVP_PKEY_ASN1_METHOD *ameth); +void EVP_PKEY_asn1_set_public(EVP_PKEY_ASN1_METHOD *ameth, + int (*pub_decode) (EVP_PKEY *pk, + X509_PUBKEY *pub), + int (*pub_encode) (X509_PUBKEY *pub, + const EVP_PKEY *pk), + int (*pub_cmp) (const EVP_PKEY *a, + const EVP_PKEY *b), + int (*pub_print) (BIO *out, + const EVP_PKEY *pkey, + int indent, ASN1_PCTX *pctx), + int (*pkey_size) (const EVP_PKEY *pk), + int (*pkey_bits) (const EVP_PKEY *pk)); +void EVP_PKEY_asn1_set_private(EVP_PKEY_ASN1_METHOD *ameth, + int (*priv_decode) (EVP_PKEY *pk, + PKCS8_PRIV_KEY_INFO + *p8inf), + int (*priv_encode) (PKCS8_PRIV_KEY_INFO *p8, + const EVP_PKEY *pk), + int (*priv_print) (BIO *out, + const EVP_PKEY *pkey, + int indent, + ASN1_PCTX *pctx)); +void EVP_PKEY_asn1_set_param(EVP_PKEY_ASN1_METHOD *ameth, + int (*param_decode) (EVP_PKEY *pkey, + const unsigned char **pder, + int derlen), + int (*param_encode) (const EVP_PKEY *pkey, + unsigned char **pder), + int (*param_missing) (const EVP_PKEY *pk), + int (*param_copy) (EVP_PKEY *to, + const EVP_PKEY *from), + int (*param_cmp) (const EVP_PKEY *a, + const EVP_PKEY *b), + int (*param_print) (BIO *out, + const EVP_PKEY *pkey, + int indent, + ASN1_PCTX *pctx)); + +void EVP_PKEY_asn1_set_free(EVP_PKEY_ASN1_METHOD *ameth, + void (*pkey_free) (EVP_PKEY *pkey)); +void EVP_PKEY_asn1_set_ctrl(EVP_PKEY_ASN1_METHOD *ameth, + int (*pkey_ctrl) (EVP_PKEY *pkey, int op, + long arg1, void *arg2)); + +# define EVP_PKEY_OP_UNDEFINED 0 +# define EVP_PKEY_OP_PARAMGEN (1<<1) +# define EVP_PKEY_OP_KEYGEN (1<<2) +# define EVP_PKEY_OP_SIGN (1<<3) +# define EVP_PKEY_OP_VERIFY (1<<4) +# define EVP_PKEY_OP_VERIFYRECOVER (1<<5) +# define EVP_PKEY_OP_SIGNCTX (1<<6) +# define EVP_PKEY_OP_VERIFYCTX (1<<7) +# define EVP_PKEY_OP_ENCRYPT (1<<8) +# define EVP_PKEY_OP_DECRYPT (1<<9) +# define EVP_PKEY_OP_DERIVE (1<<10) + +# define EVP_PKEY_OP_TYPE_SIG \ + (EVP_PKEY_OP_SIGN | EVP_PKEY_OP_VERIFY | EVP_PKEY_OP_VERIFYRECOVER \ + | EVP_PKEY_OP_SIGNCTX | EVP_PKEY_OP_VERIFYCTX) + +# define EVP_PKEY_OP_TYPE_CRYPT \ + (EVP_PKEY_OP_ENCRYPT | EVP_PKEY_OP_DECRYPT) + +# define EVP_PKEY_OP_TYPE_NOGEN \ + (EVP_PKEY_OP_SIG | EVP_PKEY_OP_CRYPT | EVP_PKEY_OP_DERIVE) + +# define EVP_PKEY_OP_TYPE_GEN \ + (EVP_PKEY_OP_PARAMGEN | EVP_PKEY_OP_KEYGEN) + +# define EVP_PKEY_CTX_set_signature_md(ctx, md) \ + EVP_PKEY_CTX_ctrl(ctx, -1, EVP_PKEY_OP_TYPE_SIG, \ + EVP_PKEY_CTRL_MD, 0, (void *)md) + +# define EVP_PKEY_CTX_get_signature_md(ctx, pmd) \ + EVP_PKEY_CTX_ctrl(ctx, -1, EVP_PKEY_OP_TYPE_SIG, \ + EVP_PKEY_CTRL_GET_MD, 0, (void *)pmd) + +# define EVP_PKEY_CTRL_MD 1 +# define EVP_PKEY_CTRL_PEER_KEY 2 + +# define EVP_PKEY_CTRL_PKCS7_ENCRYPT 3 +# define EVP_PKEY_CTRL_PKCS7_DECRYPT 4 + +# define EVP_PKEY_CTRL_PKCS7_SIGN 5 + +# define EVP_PKEY_CTRL_SET_MAC_KEY 6 + +# define EVP_PKEY_CTRL_DIGESTINIT 7 + +/* Used by GOST key encryption in TLS */ +# define EVP_PKEY_CTRL_SET_IV 8 + +# define EVP_PKEY_CTRL_CMS_ENCRYPT 9 +# define EVP_PKEY_CTRL_CMS_DECRYPT 10 +# define EVP_PKEY_CTRL_CMS_SIGN 11 + +# define EVP_PKEY_CTRL_CIPHER 12 + +# define EVP_PKEY_CTRL_GET_MD 13 + +# define EVP_PKEY_ALG_CTRL 0x1000 + +# define EVP_PKEY_FLAG_AUTOARGLEN 2 +/* + * Method handles all operations: don't assume any digest related defaults. + */ +# define EVP_PKEY_FLAG_SIGCTX_CUSTOM 4 + +const EVP_PKEY_METHOD *EVP_PKEY_meth_find(int type); +EVP_PKEY_METHOD *EVP_PKEY_meth_new(int id, int flags); +void EVP_PKEY_meth_get0_info(int *ppkey_id, int *pflags, + const EVP_PKEY_METHOD *meth); +void EVP_PKEY_meth_copy(EVP_PKEY_METHOD *dst, const EVP_PKEY_METHOD *src); +void EVP_PKEY_meth_free(EVP_PKEY_METHOD *pmeth); +int EVP_PKEY_meth_add0(const EVP_PKEY_METHOD *pmeth); + +EVP_PKEY_CTX *EVP_PKEY_CTX_new(EVP_PKEY *pkey, ENGINE *e); +EVP_PKEY_CTX *EVP_PKEY_CTX_new_id(int id, ENGINE *e); +EVP_PKEY_CTX *EVP_PKEY_CTX_dup(EVP_PKEY_CTX *ctx); +void EVP_PKEY_CTX_free(EVP_PKEY_CTX *ctx); + +int EVP_PKEY_CTX_ctrl(EVP_PKEY_CTX *ctx, int keytype, int optype, + int cmd, int p1, void *p2); +int EVP_PKEY_CTX_ctrl_str(EVP_PKEY_CTX *ctx, const char *type, + const char *value); + +int EVP_PKEY_CTX_get_operation(EVP_PKEY_CTX *ctx); +void EVP_PKEY_CTX_set0_keygen_info(EVP_PKEY_CTX *ctx, int *dat, int datlen); + +EVP_PKEY *EVP_PKEY_new_mac_key(int type, ENGINE *e, + const unsigned char *key, int keylen); + +void EVP_PKEY_CTX_set_data(EVP_PKEY_CTX *ctx, void *data); +void *EVP_PKEY_CTX_get_data(EVP_PKEY_CTX *ctx); +EVP_PKEY *EVP_PKEY_CTX_get0_pkey(EVP_PKEY_CTX *ctx); + +EVP_PKEY *EVP_PKEY_CTX_get0_peerkey(EVP_PKEY_CTX *ctx); + +void EVP_PKEY_CTX_set_app_data(EVP_PKEY_CTX *ctx, void *data); +void *EVP_PKEY_CTX_get_app_data(EVP_PKEY_CTX *ctx); + +int EVP_PKEY_sign_init(EVP_PKEY_CTX *ctx); +int EVP_PKEY_sign(EVP_PKEY_CTX *ctx, + unsigned char *sig, size_t *siglen, + const unsigned char *tbs, size_t tbslen); +int EVP_PKEY_verify_init(EVP_PKEY_CTX *ctx); +int EVP_PKEY_verify(EVP_PKEY_CTX *ctx, + const unsigned char *sig, size_t siglen, + const unsigned char *tbs, size_t tbslen); +int EVP_PKEY_verify_recover_init(EVP_PKEY_CTX *ctx); +int EVP_PKEY_verify_recover(EVP_PKEY_CTX *ctx, + unsigned char *rout, size_t *routlen, + const unsigned char *sig, size_t siglen); +int EVP_PKEY_encrypt_init(EVP_PKEY_CTX *ctx); +int EVP_PKEY_encrypt(EVP_PKEY_CTX *ctx, + unsigned char *out, size_t *outlen, + const unsigned char *in, size_t inlen); +int EVP_PKEY_decrypt_init(EVP_PKEY_CTX *ctx); +int EVP_PKEY_decrypt(EVP_PKEY_CTX *ctx, + unsigned char *out, size_t *outlen, + const unsigned char *in, size_t inlen); + +int EVP_PKEY_derive_init(EVP_PKEY_CTX *ctx); +int EVP_PKEY_derive_set_peer(EVP_PKEY_CTX *ctx, EVP_PKEY *peer); +int EVP_PKEY_derive(EVP_PKEY_CTX *ctx, unsigned char *key, size_t *keylen); + +typedef int EVP_PKEY_gen_cb (EVP_PKEY_CTX *ctx); + +int EVP_PKEY_paramgen_init(EVP_PKEY_CTX *ctx); +int EVP_PKEY_paramgen(EVP_PKEY_CTX *ctx, EVP_PKEY **ppkey); +int EVP_PKEY_keygen_init(EVP_PKEY_CTX *ctx); +int EVP_PKEY_keygen(EVP_PKEY_CTX *ctx, EVP_PKEY **ppkey); + +void EVP_PKEY_CTX_set_cb(EVP_PKEY_CTX *ctx, EVP_PKEY_gen_cb *cb); +EVP_PKEY_gen_cb *EVP_PKEY_CTX_get_cb(EVP_PKEY_CTX *ctx); + +int EVP_PKEY_CTX_get_keygen_info(EVP_PKEY_CTX *ctx, int idx); + +void EVP_PKEY_meth_set_init(EVP_PKEY_METHOD *pmeth, + int (*init) (EVP_PKEY_CTX *ctx)); + +void EVP_PKEY_meth_set_copy(EVP_PKEY_METHOD *pmeth, + int (*copy) (EVP_PKEY_CTX *dst, + EVP_PKEY_CTX *src)); + +void EVP_PKEY_meth_set_cleanup(EVP_PKEY_METHOD *pmeth, + void (*cleanup) (EVP_PKEY_CTX *ctx)); + +void EVP_PKEY_meth_set_paramgen(EVP_PKEY_METHOD *pmeth, + int (*paramgen_init) (EVP_PKEY_CTX *ctx), + int (*paramgen) (EVP_PKEY_CTX *ctx, + EVP_PKEY *pkey)); + +void EVP_PKEY_meth_set_keygen(EVP_PKEY_METHOD *pmeth, + int (*keygen_init) (EVP_PKEY_CTX *ctx), + int (*keygen) (EVP_PKEY_CTX *ctx, + EVP_PKEY *pkey)); + +void EVP_PKEY_meth_set_sign(EVP_PKEY_METHOD *pmeth, + int (*sign_init) (EVP_PKEY_CTX *ctx), + int (*sign) (EVP_PKEY_CTX *ctx, + unsigned char *sig, size_t *siglen, + const unsigned char *tbs, + size_t tbslen)); + +void EVP_PKEY_meth_set_verify(EVP_PKEY_METHOD *pmeth, + int (*verify_init) (EVP_PKEY_CTX *ctx), + int (*verify) (EVP_PKEY_CTX *ctx, + const unsigned char *sig, + size_t siglen, + const unsigned char *tbs, + size_t tbslen)); + +void EVP_PKEY_meth_set_verify_recover(EVP_PKEY_METHOD *pmeth, + int (*verify_recover_init) (EVP_PKEY_CTX + *ctx), + int (*verify_recover) (EVP_PKEY_CTX + *ctx, + unsigned char + *sig, + size_t *siglen, + const unsigned + char *tbs, + size_t tbslen)); + +void EVP_PKEY_meth_set_signctx(EVP_PKEY_METHOD *pmeth, + int (*signctx_init) (EVP_PKEY_CTX *ctx, + EVP_MD_CTX *mctx), + int (*signctx) (EVP_PKEY_CTX *ctx, + unsigned char *sig, + size_t *siglen, + EVP_MD_CTX *mctx)); + +void EVP_PKEY_meth_set_verifyctx(EVP_PKEY_METHOD *pmeth, + int (*verifyctx_init) (EVP_PKEY_CTX *ctx, + EVP_MD_CTX *mctx), + int (*verifyctx) (EVP_PKEY_CTX *ctx, + const unsigned char *sig, + int siglen, + EVP_MD_CTX *mctx)); + +void EVP_PKEY_meth_set_encrypt(EVP_PKEY_METHOD *pmeth, + int (*encrypt_init) (EVP_PKEY_CTX *ctx), + int (*encryptfn) (EVP_PKEY_CTX *ctx, + unsigned char *out, + size_t *outlen, + const unsigned char *in, + size_t inlen)); + +void EVP_PKEY_meth_set_decrypt(EVP_PKEY_METHOD *pmeth, + int (*decrypt_init) (EVP_PKEY_CTX *ctx), + int (*decrypt) (EVP_PKEY_CTX *ctx, + unsigned char *out, + size_t *outlen, + const unsigned char *in, + size_t inlen)); + +void EVP_PKEY_meth_set_derive(EVP_PKEY_METHOD *pmeth, + int (*derive_init) (EVP_PKEY_CTX *ctx), + int (*derive) (EVP_PKEY_CTX *ctx, + unsigned char *key, + size_t *keylen)); + +void EVP_PKEY_meth_set_ctrl(EVP_PKEY_METHOD *pmeth, + int (*ctrl) (EVP_PKEY_CTX *ctx, int type, int p1, + void *p2), + int (*ctrl_str) (EVP_PKEY_CTX *ctx, + const char *type, + const char *value)); + +void EVP_add_alg_module(void); + +/* BEGIN ERROR CODES */ +/* + * The following lines are auto generated by the script mkerr.pl. Any changes + * made after this point may be overwritten when the script is next run. + */ +void ERR_load_EVP_strings(void); + +/* Error codes for the EVP functions. */ + +/* Function codes. */ +# define EVP_F_AESNI_INIT_KEY 165 +# define EVP_F_AESNI_XTS_CIPHER 176 +# define EVP_F_AES_INIT_KEY 133 +# define EVP_F_AES_T4_INIT_KEY 178 +# define EVP_F_AES_XTS 172 +# define EVP_F_AES_XTS_CIPHER 175 +# define EVP_F_ALG_MODULE_INIT 177 +# define EVP_F_CAMELLIA_INIT_KEY 159 +# define EVP_F_CMAC_INIT 173 +# define EVP_F_CMLL_T4_INIT_KEY 179 +# define EVP_F_D2I_PKEY 100 +# define EVP_F_DO_SIGVER_INIT 161 +# define EVP_F_DSAPKEY2PKCS8 134 +# define EVP_F_DSA_PKEY2PKCS8 135 +# define EVP_F_ECDSA_PKEY2PKCS8 129 +# define EVP_F_ECKEY_PKEY2PKCS8 132 +# define EVP_F_EVP_CIPHERINIT_EX 123 +# define EVP_F_EVP_CIPHER_CTX_COPY 163 +# define EVP_F_EVP_CIPHER_CTX_CTRL 124 +# define EVP_F_EVP_CIPHER_CTX_SET_KEY_LENGTH 122 +# define EVP_F_EVP_DECRYPTFINAL_EX 101 +# define EVP_F_EVP_DIGESTINIT_EX 128 +# define EVP_F_EVP_ENCRYPTFINAL_EX 127 +# define EVP_F_EVP_MD_CTX_COPY_EX 110 +# define EVP_F_EVP_MD_SIZE 162 +# define EVP_F_EVP_OPENINIT 102 +# define EVP_F_EVP_PBE_ALG_ADD 115 +# define EVP_F_EVP_PBE_ALG_ADD_TYPE 160 +# define EVP_F_EVP_PBE_CIPHERINIT 116 +# define EVP_F_EVP_PKCS82PKEY 111 +# define EVP_F_EVP_PKCS82PKEY_BROKEN 136 +# define EVP_F_EVP_PKEY2PKCS8_BROKEN 113 +# define EVP_F_EVP_PKEY_COPY_PARAMETERS 103 +# define EVP_F_EVP_PKEY_CTX_CTRL 137 +# define EVP_F_EVP_PKEY_CTX_CTRL_STR 150 +# define EVP_F_EVP_PKEY_CTX_DUP 156 +# define EVP_F_EVP_PKEY_DECRYPT 104 +# define EVP_F_EVP_PKEY_DECRYPT_INIT 138 +# define EVP_F_EVP_PKEY_DECRYPT_OLD 151 +# define EVP_F_EVP_PKEY_DERIVE 153 +# define EVP_F_EVP_PKEY_DERIVE_INIT 154 +# define EVP_F_EVP_PKEY_DERIVE_SET_PEER 155 +# define EVP_F_EVP_PKEY_ENCRYPT 105 +# define EVP_F_EVP_PKEY_ENCRYPT_INIT 139 +# define EVP_F_EVP_PKEY_ENCRYPT_OLD 152 +# define EVP_F_EVP_PKEY_GET1_DH 119 +# define EVP_F_EVP_PKEY_GET1_DSA 120 +# define EVP_F_EVP_PKEY_GET1_ECDSA 130 +# define EVP_F_EVP_PKEY_GET1_EC_KEY 131 +# define EVP_F_EVP_PKEY_GET1_RSA 121 +# define EVP_F_EVP_PKEY_KEYGEN 146 +# define EVP_F_EVP_PKEY_KEYGEN_INIT 147 +# define EVP_F_EVP_PKEY_NEW 106 +# define EVP_F_EVP_PKEY_PARAMGEN 148 +# define EVP_F_EVP_PKEY_PARAMGEN_INIT 149 +# define EVP_F_EVP_PKEY_SIGN 140 +# define EVP_F_EVP_PKEY_SIGN_INIT 141 +# define EVP_F_EVP_PKEY_VERIFY 142 +# define EVP_F_EVP_PKEY_VERIFY_INIT 143 +# define EVP_F_EVP_PKEY_VERIFY_RECOVER 144 +# define EVP_F_EVP_PKEY_VERIFY_RECOVER_INIT 145 +# define EVP_F_EVP_RIJNDAEL 126 +# define EVP_F_EVP_SIGNFINAL 107 +# define EVP_F_EVP_VERIFYFINAL 108 +# define EVP_F_FIPS_CIPHERINIT 166 +# define EVP_F_FIPS_CIPHER_CTX_COPY 170 +# define EVP_F_FIPS_CIPHER_CTX_CTRL 167 +# define EVP_F_FIPS_CIPHER_CTX_SET_KEY_LENGTH 171 +# define EVP_F_FIPS_DIGESTINIT 168 +# define EVP_F_FIPS_MD_CTX_COPY 169 +# define EVP_F_HMAC_INIT_EX 174 +# define EVP_F_INT_CTX_NEW 157 +# define EVP_F_PKCS5_PBE_KEYIVGEN 117 +# define EVP_F_PKCS5_V2_PBE_KEYIVGEN 118 +# define EVP_F_PKCS5_V2_PBKDF2_KEYIVGEN 164 +# define EVP_F_PKCS8_SET_BROKEN 112 +# define EVP_F_PKEY_SET_TYPE 158 +# define EVP_F_RC2_MAGIC_TO_METH 109 +# define EVP_F_RC5_CTRL 125 + +/* Reason codes. */ +# define EVP_R_AES_IV_SETUP_FAILED 162 +# define EVP_R_AES_KEY_SETUP_FAILED 143 +# define EVP_R_ASN1_LIB 140 +# define EVP_R_BAD_BLOCK_LENGTH 136 +# define EVP_R_BAD_DECRYPT 100 +# define EVP_R_BAD_KEY_LENGTH 137 +# define EVP_R_BN_DECODE_ERROR 112 +# define EVP_R_BN_PUBKEY_ERROR 113 +# define EVP_R_BUFFER_TOO_SMALL 155 +# define EVP_R_CAMELLIA_KEY_SETUP_FAILED 157 +# define EVP_R_CIPHER_PARAMETER_ERROR 122 +# define EVP_R_COMMAND_NOT_SUPPORTED 147 +# define EVP_R_CTRL_NOT_IMPLEMENTED 132 +# define EVP_R_CTRL_OPERATION_NOT_IMPLEMENTED 133 +# define EVP_R_DATA_NOT_MULTIPLE_OF_BLOCK_LENGTH 138 +# define EVP_R_DECODE_ERROR 114 +# define EVP_R_DIFFERENT_KEY_TYPES 101 +# define EVP_R_DIFFERENT_PARAMETERS 153 +# define EVP_R_DISABLED_FOR_FIPS 163 +# define EVP_R_ENCODE_ERROR 115 +# define EVP_R_ERROR_LOADING_SECTION 165 +# define EVP_R_ERROR_SETTING_FIPS_MODE 166 +# define EVP_R_EVP_PBE_CIPHERINIT_ERROR 119 +# define EVP_R_EXPECTING_AN_RSA_KEY 127 +# define EVP_R_EXPECTING_A_DH_KEY 128 +# define EVP_R_EXPECTING_A_DSA_KEY 129 +# define EVP_R_EXPECTING_A_ECDSA_KEY 141 +# define EVP_R_EXPECTING_A_EC_KEY 142 +# define EVP_R_FIPS_MODE_NOT_SUPPORTED 167 +# define EVP_R_INITIALIZATION_ERROR 134 +# define EVP_R_INPUT_NOT_INITIALIZED 111 +# define EVP_R_INVALID_DIGEST 152 +# define EVP_R_INVALID_FIPS_MODE 168 +# define EVP_R_INVALID_KEY_LENGTH 130 +# define EVP_R_INVALID_OPERATION 148 +# define EVP_R_IV_TOO_LARGE 102 +# define EVP_R_KEYGEN_FAILURE 120 +# define EVP_R_MESSAGE_DIGEST_IS_NULL 159 +# define EVP_R_METHOD_NOT_SUPPORTED 144 +# define EVP_R_MISSING_PARAMETERS 103 +# define EVP_R_NO_CIPHER_SET 131 +# define EVP_R_NO_DEFAULT_DIGEST 158 +# define EVP_R_NO_DIGEST_SET 139 +# define EVP_R_NO_DSA_PARAMETERS 116 +# define EVP_R_NO_KEY_SET 154 +# define EVP_R_NO_OPERATION_SET 149 +# define EVP_R_NO_SIGN_FUNCTION_CONFIGURED 104 +# define EVP_R_NO_VERIFY_FUNCTION_CONFIGURED 105 +# define EVP_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE 150 +# define EVP_R_OPERATON_NOT_INITIALIZED 151 +# define EVP_R_PKCS8_UNKNOWN_BROKEN_TYPE 117 +# define EVP_R_PRIVATE_KEY_DECODE_ERROR 145 +# define EVP_R_PRIVATE_KEY_ENCODE_ERROR 146 +# define EVP_R_PUBLIC_KEY_NOT_RSA 106 +# define EVP_R_TOO_LARGE 164 +# define EVP_R_UNKNOWN_CIPHER 160 +# define EVP_R_UNKNOWN_DIGEST 161 +# define EVP_R_UNKNOWN_OPTION 169 +# define EVP_R_UNKNOWN_PBE_ALGORITHM 121 +# define EVP_R_UNSUPORTED_NUMBER_OF_ROUNDS 135 +# define EVP_R_UNSUPPORTED_ALGORITHM 156 +# define EVP_R_UNSUPPORTED_CIPHER 107 +# define EVP_R_UNSUPPORTED_KEYLENGTH 123 +# define EVP_R_UNSUPPORTED_KEY_DERIVATION_FUNCTION 124 +# define EVP_R_UNSUPPORTED_KEY_SIZE 108 +# define EVP_R_UNSUPPORTED_PRF 125 +# define EVP_R_UNSUPPORTED_PRIVATE_KEY_ALGORITHM 118 +# define EVP_R_UNSUPPORTED_SALT_TYPE 126 +# define EVP_R_WRAP_MODE_NOT_ALLOWED 170 +# define EVP_R_WRONG_FINAL_BLOCK_LENGTH 109 +# define EVP_R_WRONG_PUBLIC_KEY_TYPE 110 + +#ifdef __cplusplus +} +#endif +#endif diff --git a/ext/openssl-win64/inc32/openssl/hmac.h b/ext/openssl-win64/inc32/openssl/hmac.h new file mode 100644 index 00000000..b8b55cda --- /dev/null +++ b/ext/openssl-win64/inc32/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/ext/openssl-win64/inc32/openssl/kssl.h b/ext/openssl-win64/inc32/openssl/kssl.h new file mode 100644 index 00000000..9a576728 --- /dev/null +++ b/ext/openssl-win64/inc32/openssl/kssl.h @@ -0,0 +1,197 @@ +/* ssl/kssl.h -*- mode: C; c-file-style: "eay" -*- */ +/* + * Written by Vern Staats for the OpenSSL project + * 2000. project 2000. + */ +/* ==================================================================== + * Copyright (c) 2000 The OpenSSL Project. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. All advertising materials mentioning features or use of this + * software must display the following acknowledgment: + * "This product includes software developed by the OpenSSL Project + * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" + * + * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to + * endorse or promote products derived from this software without + * prior written permission. For written permission, please contact + * licensing@OpenSSL.org. + * + * 5. Products derived from this software may not be called "OpenSSL" + * nor may "OpenSSL" appear in their names without prior written + * permission of the OpenSSL Project. + * + * 6. Redistributions of any form whatsoever must retain the following + * acknowledgment: + * "This product includes software developed by the OpenSSL Project + * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" + * + * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY + * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * ==================================================================== + * + * This product includes cryptographic software written by Eric Young + * (eay@cryptsoft.com). This product includes software written by Tim + * Hudson (tjh@cryptsoft.com). + * + */ + +/* + ** 19990701 VRS Started. + */ + +#ifndef KSSL_H +# define KSSL_H + +# include + +# ifndef OPENSSL_NO_KRB5 + +# include +# include +# include +# ifdef OPENSSL_SYS_WIN32 +/* + * These can sometimes get redefined indirectly by krb5 header files after + * they get undefed in ossl_typ.h + */ +# undef X509_NAME +# undef X509_EXTENSIONS +# undef OCSP_REQUEST +# undef OCSP_RESPONSE +# endif + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Depending on which KRB5 implementation used, some types from + * the other may be missing. Resolve that here and now + */ +# ifdef KRB5_HEIMDAL +typedef unsigned char krb5_octet; +# define FAR +# else + +# ifndef FAR +# define FAR +# endif + +# endif + +/*- + * Uncomment this to debug kssl problems or + * to trace usage of the Kerberos session key + * + * #define KSSL_DEBUG + */ + +# ifndef KRB5SVC +# define KRB5SVC "host" +# endif + +# ifndef KRB5KEYTAB +# define KRB5KEYTAB "/etc/krb5.keytab" +# endif + +# ifndef KRB5SENDAUTH +# define KRB5SENDAUTH 1 +# endif + +# ifndef KRB5CHECKAUTH +# define KRB5CHECKAUTH 1 +# endif + +# ifndef KSSL_CLOCKSKEW +# define KSSL_CLOCKSKEW 300; +# endif + +# define KSSL_ERR_MAX 255 +typedef struct kssl_err_st { + int reason; + char text[KSSL_ERR_MAX + 1]; +} KSSL_ERR; + +/*- Context for passing + * (1) Kerberos session key to SSL, and + * (2) Config data between application and SSL lib + */ +typedef struct kssl_ctx_st { + /* used by: disposition: */ + char *service_name; /* C,S default ok (kssl) */ + char *service_host; /* C input, REQUIRED */ + char *client_princ; /* S output from krb5 ticket */ + char *keytab_file; /* S NULL (/etc/krb5.keytab) */ + char *cred_cache; /* C NULL (default) */ + krb5_enctype enctype; + int length; + krb5_octet FAR *key; +} KSSL_CTX; + +# define KSSL_CLIENT 1 +# define KSSL_SERVER 2 +# define KSSL_SERVICE 3 +# define KSSL_KEYTAB 4 + +# define KSSL_CTX_OK 0 +# define KSSL_CTX_ERR 1 +# define KSSL_NOMEM 2 + +/* Public (for use by applications that use OpenSSL with Kerberos 5 support */ +krb5_error_code kssl_ctx_setstring(KSSL_CTX *kssl_ctx, int which, char *text); +KSSL_CTX *kssl_ctx_new(void); +KSSL_CTX *kssl_ctx_free(KSSL_CTX *kssl_ctx); +void kssl_ctx_show(KSSL_CTX *kssl_ctx); +krb5_error_code kssl_ctx_setprinc(KSSL_CTX *kssl_ctx, int which, + krb5_data *realm, krb5_data *entity, + int nentities); +krb5_error_code kssl_cget_tkt(KSSL_CTX *kssl_ctx, krb5_data **enc_tktp, + krb5_data *authenp, KSSL_ERR *kssl_err); +krb5_error_code kssl_sget_tkt(KSSL_CTX *kssl_ctx, krb5_data *indata, + krb5_ticket_times *ttimes, KSSL_ERR *kssl_err); +krb5_error_code kssl_ctx_setkey(KSSL_CTX *kssl_ctx, krb5_keyblock *session); +void kssl_err_set(KSSL_ERR *kssl_err, int reason, char *text); +void kssl_krb5_free_data_contents(krb5_context context, krb5_data *data); +krb5_error_code kssl_build_principal_2(krb5_context context, + krb5_principal *princ, int rlen, + const char *realm, int slen, + const char *svc, int hlen, + const char *host); +krb5_error_code kssl_validate_times(krb5_timestamp atime, + krb5_ticket_times *ttimes); +krb5_error_code kssl_check_authent(KSSL_CTX *kssl_ctx, krb5_data *authentp, + krb5_timestamp *atimep, + KSSL_ERR *kssl_err); +unsigned char *kssl_skip_confound(krb5_enctype enctype, unsigned char *authn); + +void SSL_set0_kssl_ctx(SSL *s, KSSL_CTX *kctx); +KSSL_CTX *SSL_get0_kssl_ctx(SSL *s); +char *kssl_ctx_get0_client_princ(KSSL_CTX *kctx); + +#ifdef __cplusplus +} +#endif +# endif /* OPENSSL_NO_KRB5 */ +#endif /* KSSL_H */ diff --git a/ext/openssl-win64/inc32/openssl/lhash.h b/ext/openssl-win64/inc32/openssl/lhash.h new file mode 100644 index 00000000..b6c328bf --- /dev/null +++ b/ext/openssl-win64/inc32/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/ext/openssl-win64/inc32/openssl/obj_mac.h b/ext/openssl-win64/inc32/openssl/obj_mac.h new file mode 100644 index 00000000..779c309b --- /dev/null +++ b/ext/openssl-win64/inc32/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/ext/openssl-win64/inc32/openssl/objects.h b/ext/openssl-win64/inc32/openssl/objects.h new file mode 100644 index 00000000..b8dafa89 --- /dev/null +++ b/ext/openssl-win64/inc32/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/ext/openssl-win64/inc32/openssl/opensslconf.h b/ext/openssl-win64/inc32/openssl/opensslconf.h new file mode 100644 index 00000000..910baef8 --- /dev/null +++ b/ext/openssl-win64/inc32/openssl/opensslconf.h @@ -0,0 +1,259 @@ +/* opensslconf.h */ +/* WARNING: Generated automatically from opensslconf.h.in by Configure. */ + +#ifdef __cplusplus +extern "C" { +#endif +/* OpenSSL was configured with the following options: */ +#ifndef OPENSSL_SYSNAME_WIN64A +# define OPENSSL_SYSNAME_WIN64A +#endif +#ifndef OPENSSL_DOING_MAKEDEPEND + + +#ifndef OPENSSL_NO_EC_NISTP_64_GCC_128 +# define OPENSSL_NO_EC_NISTP_64_GCC_128 +#endif +#ifndef OPENSSL_NO_GMP +# define OPENSSL_NO_GMP +#endif +#ifndef OPENSSL_NO_JPAKE +# define OPENSSL_NO_JPAKE +#endif +#ifndef OPENSSL_NO_KRB5 +# define OPENSSL_NO_KRB5 +#endif +#ifndef OPENSSL_NO_LIBUNBOUND +# define OPENSSL_NO_LIBUNBOUND +#endif +#ifndef OPENSSL_NO_MD2 +# define OPENSSL_NO_MD2 +#endif +#ifndef OPENSSL_NO_RC5 +# define OPENSSL_NO_RC5 +#endif +#ifndef OPENSSL_NO_RFC3779 +# define OPENSSL_NO_RFC3779 +#endif +#ifndef OPENSSL_NO_SCTP +# define OPENSSL_NO_SCTP +#endif +#ifndef OPENSSL_NO_SSL_TRACE +# define OPENSSL_NO_SSL_TRACE +#endif +#ifndef OPENSSL_NO_STORE +# define OPENSSL_NO_STORE +#endif +#ifndef OPENSSL_NO_UNIT_TEST +# define OPENSSL_NO_UNIT_TEST +#endif + +#endif /* OPENSSL_DOING_MAKEDEPEND */ + +#ifndef OPENSSL_THREADS +# define OPENSSL_THREADS +#endif + +/* The OPENSSL_NO_* macros are also defined as NO_* if the application + asks for it. This is a transient feature that is provided for those + who haven't had the time to do the appropriate changes in their + applications. */ +#ifdef OPENSSL_ALGORITHM_DEFINES +# if defined(OPENSSL_NO_EC_NISTP_64_GCC_128) && !defined(NO_EC_NISTP_64_GCC_128) +# define NO_EC_NISTP_64_GCC_128 +# endif +# if defined(OPENSSL_NO_GMP) && !defined(NO_GMP) +# define NO_GMP +# endif +# if defined(OPENSSL_NO_JPAKE) && !defined(NO_JPAKE) +# define NO_JPAKE +# endif +# if defined(OPENSSL_NO_KRB5) && !defined(NO_KRB5) +# define NO_KRB5 +# endif +# if defined(OPENSSL_NO_LIBUNBOUND) && !defined(NO_LIBUNBOUND) +# define NO_LIBUNBOUND +# endif +# if defined(OPENSSL_NO_MD2) && !defined(NO_MD2) +# define NO_MD2 +# endif +# if defined(OPENSSL_NO_RC5) && !defined(NO_RC5) +# define NO_RC5 +# endif +# if defined(OPENSSL_NO_RFC3779) && !defined(NO_RFC3779) +# define NO_RFC3779 +# endif +# if defined(OPENSSL_NO_SCTP) && !defined(NO_SCTP) +# define NO_SCTP +# endif +# if defined(OPENSSL_NO_SSL_TRACE) && !defined(NO_SSL_TRACE) +# define NO_SSL_TRACE +# endif +# if defined(OPENSSL_NO_STORE) && !defined(NO_STORE) +# define NO_STORE +# endif +# if defined(OPENSSL_NO_UNIT_TEST) && !defined(NO_UNIT_TEST) +# define NO_UNIT_TEST +# endif +#endif + +#define OPENSSL_CPUID_OBJ + +/* crypto/opensslconf.h.in */ + +/* Generate 80386 code? */ +#undef I386_ONLY + +#if !(defined(VMS) || defined(__VMS)) /* VMS uses logical names instead */ +#if defined(HEADER_CRYPTLIB_H) && !defined(OPENSSLDIR) +#define ENGINESDIR "/usr/local/ssl/lib/engines" +#define OPENSSLDIR "/usr/local/ssl" +#endif +#endif + +#undef OPENSSL_UNISTD +#define OPENSSL_UNISTD + +#undef OPENSSL_EXPORT_VAR_AS_FUNCTION +#define OPENSSL_EXPORT_VAR_AS_FUNCTION + +#if defined(HEADER_IDEA_H) && !defined(IDEA_INT) +#define IDEA_INT unsigned int +#endif + +#if defined(HEADER_MD2_H) && !defined(MD2_INT) +#define MD2_INT unsigned int +#endif + +#if defined(HEADER_RC2_H) && !defined(RC2_INT) +/* I need to put in a mod for the alpha - eay */ +#define RC2_INT unsigned int +#endif + +#if defined(HEADER_RC4_H) +#if !defined(RC4_INT) +/* using int types make the structure larger but make the code faster + * on most boxes I have tested - up to %20 faster. */ +/* + * I don't know what does "most" mean, but declaring "int" is a must on: + * - Intel P6 because partial register stalls are very expensive; + * - elder Alpha because it lacks byte load/store instructions; + */ +#define RC4_INT unsigned int +#endif +#if !defined(RC4_CHUNK) +/* + * This enables code handling data aligned at natural CPU word + * boundary. See crypto/rc4/rc4_enc.c for further details. + */ +#define RC4_CHUNK unsigned long long +#endif +#endif + +#if (defined(HEADER_NEW_DES_H) || defined(HEADER_DES_H)) && !defined(DES_LONG) +/* If this is set to 'unsigned int' on a DEC Alpha, this gives about a + * %20 speed up (longs are 8 bytes, int's are 4). */ +#ifndef DES_LONG +#define DES_LONG unsigned int +#endif +#endif + +#if defined(HEADER_BN_H) && !defined(CONFIG_HEADER_BN_H) +#define CONFIG_HEADER_BN_H +#undef BN_LLONG + +/* Should we define BN_DIV2W here? */ + +/* Only one for the following should be defined */ +#undef SIXTY_FOUR_BIT_LONG +#define SIXTY_FOUR_BIT +#undef THIRTY_TWO_BIT +#endif + +#if defined(HEADER_RC4_LOCL_H) && !defined(CONFIG_HEADER_RC4_LOCL_H) +#define CONFIG_HEADER_RC4_LOCL_H +/* if this is defined data[i] is used instead of *data, this is a %20 + * speedup on x86 */ +#undef RC4_INDEX +#endif + +#if defined(HEADER_BF_LOCL_H) && !defined(CONFIG_HEADER_BF_LOCL_H) +#define CONFIG_HEADER_BF_LOCL_H +#undef BF_PTR +#endif /* HEADER_BF_LOCL_H */ + +#if defined(HEADER_DES_LOCL_H) && !defined(CONFIG_HEADER_DES_LOCL_H) +#define CONFIG_HEADER_DES_LOCL_H +#ifndef DES_DEFAULT_OPTIONS +/* the following is tweaked from a config script, that is why it is a + * protected undef/define */ +#ifndef DES_PTR +#undef DES_PTR +#endif + +/* This helps C compiler generate the correct code for multiple functional + * units. It reduces register dependancies at the expense of 2 more + * registers */ +#ifndef DES_RISC1 +#undef DES_RISC1 +#endif + +#ifndef DES_RISC2 +#undef DES_RISC2 +#endif + +#if defined(DES_RISC1) && defined(DES_RISC2) +YOU SHOULD NOT HAVE BOTH DES_RISC1 AND DES_RISC2 DEFINED!!!!! +#endif + +/* Unroll the inner loop, this sometimes helps, sometimes hinders. + * Very mucy CPU dependant */ +#ifndef DES_UNROLL +#undef DES_UNROLL +#endif + +/* These default values were supplied by + * Peter Gutman + * They are only used if nothing else has been defined */ +#if !defined(DES_PTR) && !defined(DES_RISC1) && !defined(DES_RISC2) && !defined(DES_UNROLL) +/* Special defines which change the way the code is built depending on the + CPU and OS. For SGI machines you can use _MIPS_SZLONG (32 or 64) to find + even newer MIPS CPU's, but at the moment one size fits all for + optimization options. Older Sparc's work better with only UNROLL, but + there's no way to tell at compile time what it is you're running on */ + +#if defined( sun ) /* Newer Sparc's */ +# define DES_PTR +# define DES_RISC1 +# define DES_UNROLL +#elif defined( __ultrix ) /* Older MIPS */ +# define DES_PTR +# define DES_RISC2 +# define DES_UNROLL +#elif defined( __osf1__ ) /* Alpha */ +# define DES_PTR +# define DES_RISC2 +#elif defined ( _AIX ) /* RS6000 */ + /* Unknown */ +#elif defined( __hpux ) /* HP-PA */ + /* Unknown */ +#elif defined( __aux ) /* 68K */ + /* Unknown */ +#elif defined( __dgux ) /* 88K (but P6 in latest boxes) */ +# define DES_UNROLL +#elif defined( __sgi ) /* Newer MIPS */ +# define DES_PTR +# define DES_RISC2 +# define DES_UNROLL +#elif defined(i386) || defined(__i386__) /* x86 boxes, should be gcc */ +# define DES_PTR +# define DES_RISC1 +# define DES_UNROLL +#endif /* Systems-specific speed defines */ +#endif + +#endif /* DES_DEFAULT_OPTIONS */ +#endif /* HEADER_DES_LOCL_H */ +#ifdef __cplusplus +} +#endif diff --git a/ext/openssl-win64/inc32/openssl/opensslv.h b/ext/openssl-win64/inc32/openssl/opensslv.h new file mode 100644 index 00000000..e277caee --- /dev/null +++ b/ext/openssl-win64/inc32/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 0x1000200fL +# ifdef OPENSSL_FIPS +# define OPENSSL_VERSION_TEXT "OpenSSL 1.0.2-fips 22 Jan 2015" +# else +# define OPENSSL_VERSION_TEXT "OpenSSL 1.0.2 22 Jan 2015" +# endif +# define OPENSSL_VERSION_PTEXT " part of " OPENSSL_VERSION_TEXT + +/*- + * The macros below are to be used for shared library (.so, .dll, ...) + * versioning. That kind of versioning works a bit differently between + * operating systems. The most usual scheme is to set a major and a minor + * number, and have the runtime loader check that the major number is equal + * to what it was at application link time, while the minor number has to + * be greater or equal to what it was at application link time. With this + * scheme, the version number is usually part of the file name, like this: + * + * libcrypto.so.0.9 + * + * Some unixen also make a softlink with the major verson number only: + * + * libcrypto.so.0 + * + * On Tru64 and IRIX 6.x it works a little bit differently. There, the + * shared library version is stored in the file, and is actually a series + * of versions, separated by colons. The rightmost version present in the + * library when linking an application is stored in the application to be + * matched at run time. When the application is run, a check is done to + * see if the library version stored in the application matches any of the + * versions in the version string of the library itself. + * This version string can be constructed in any way, depending on what + * kind of matching is desired. However, to implement the same scheme as + * the one used in the other unixen, all compatible versions, from lowest + * to highest, should be part of the string. Consecutive builds would + * give the following versions strings: + * + * 3.0 + * 3.0:3.1 + * 3.0:3.1:3.2 + * 4.0 + * 4.0:4.1 + * + * Notice how version 4 is completely incompatible with version, and + * therefore give the breach you can see. + * + * There may be other schemes as well that I haven't yet discovered. + * + * So, here's the way it works here: first of all, the library version + * number doesn't need at all to match the overall OpenSSL version. + * However, it's nice and more understandable if it actually does. + * The current library version is stored in the macro SHLIB_VERSION_NUMBER, + * which is just a piece of text in the format "M.m.e" (Major, minor, edit). + * For the sake of Tru64, IRIX, and any other OS that behaves in similar ways, + * we need to keep a history of version numbers, which is done in the + * macro SHLIB_VERSION_HISTORY. The numbers are separated by colons and + * should only keep the versions that are binary compatible with the current. + */ +# define SHLIB_VERSION_HISTORY "" +# define SHLIB_VERSION_NUMBER "1.0.0" + + +#ifdef __cplusplus +} +#endif +#endif /* HEADER_OPENSSLV_H */ diff --git a/ext/openssl-win64/inc32/openssl/ossl_typ.h b/ext/openssl-win64/inc32/openssl/ossl_typ.h new file mode 100644 index 00000000..9144ea2c --- /dev/null +++ b/ext/openssl-win64/inc32/openssl/ossl_typ.h @@ -0,0 +1,211 @@ +/* ==================================================================== + * Copyright (c) 1998-2001 The OpenSSL Project. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. All advertising materials mentioning features or use of this + * software must display the following acknowledgment: + * "This product includes software developed by the OpenSSL Project + * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" + * + * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to + * endorse or promote products derived from this software without + * prior written permission. For written permission, please contact + * openssl-core@openssl.org. + * + * 5. Products derived from this software may not be called "OpenSSL" + * nor may "OpenSSL" appear in their names without prior written + * permission of the OpenSSL Project. + * + * 6. Redistributions of any form whatsoever must retain the following + * acknowledgment: + * "This product includes software developed by the OpenSSL Project + * for use in the OpenSSL Toolkit (http://www.openssl.org/)" + * + * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY + * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * ==================================================================== + * + * This product includes cryptographic software written by Eric Young + * (eay@cryptsoft.com). This product includes software written by Tim + * Hudson (tjh@cryptsoft.com). + * + */ + +#ifndef HEADER_OPENSSL_TYPES_H +# define HEADER_OPENSSL_TYPES_H + +#ifdef __cplusplus +extern "C" { +#endif + +# include + +# ifdef NO_ASN1_TYPEDEFS +# define ASN1_INTEGER ASN1_STRING +# define ASN1_ENUMERATED ASN1_STRING +# define ASN1_BIT_STRING ASN1_STRING +# define ASN1_OCTET_STRING ASN1_STRING +# define ASN1_PRINTABLESTRING ASN1_STRING +# define ASN1_T61STRING ASN1_STRING +# define ASN1_IA5STRING ASN1_STRING +# define ASN1_UTCTIME ASN1_STRING +# define ASN1_GENERALIZEDTIME ASN1_STRING +# define ASN1_TIME ASN1_STRING +# define ASN1_GENERALSTRING ASN1_STRING +# define ASN1_UNIVERSALSTRING ASN1_STRING +# define ASN1_BMPSTRING ASN1_STRING +# define ASN1_VISIBLESTRING ASN1_STRING +# define ASN1_UTF8STRING ASN1_STRING +# define ASN1_BOOLEAN int +# define ASN1_NULL int +# else +typedef struct asn1_string_st ASN1_INTEGER; +typedef struct asn1_string_st ASN1_ENUMERATED; +typedef struct asn1_string_st ASN1_BIT_STRING; +typedef struct asn1_string_st ASN1_OCTET_STRING; +typedef struct asn1_string_st ASN1_PRINTABLESTRING; +typedef struct asn1_string_st ASN1_T61STRING; +typedef struct asn1_string_st ASN1_IA5STRING; +typedef struct asn1_string_st ASN1_GENERALSTRING; +typedef struct asn1_string_st ASN1_UNIVERSALSTRING; +typedef struct asn1_string_st ASN1_BMPSTRING; +typedef struct asn1_string_st ASN1_UTCTIME; +typedef struct asn1_string_st ASN1_TIME; +typedef struct asn1_string_st ASN1_GENERALIZEDTIME; +typedef struct asn1_string_st ASN1_VISIBLESTRING; +typedef struct asn1_string_st ASN1_UTF8STRING; +typedef struct asn1_string_st ASN1_STRING; +typedef int ASN1_BOOLEAN; +typedef int ASN1_NULL; +# endif + +typedef struct asn1_object_st ASN1_OBJECT; + +typedef struct ASN1_ITEM_st ASN1_ITEM; +typedef struct asn1_pctx_st ASN1_PCTX; + +# ifdef OPENSSL_SYS_WIN32 +# undef X509_NAME +# undef X509_EXTENSIONS +# undef X509_CERT_PAIR +# undef PKCS7_ISSUER_AND_SERIAL +# undef OCSP_REQUEST +# undef OCSP_RESPONSE +# endif + +# ifdef BIGNUM +# undef BIGNUM +# endif +typedef struct bignum_st BIGNUM; +typedef struct bignum_ctx BN_CTX; +typedef struct bn_blinding_st BN_BLINDING; +typedef struct bn_mont_ctx_st BN_MONT_CTX; +typedef struct bn_recp_ctx_st BN_RECP_CTX; +typedef struct bn_gencb_st BN_GENCB; + +typedef struct buf_mem_st BUF_MEM; + +typedef struct evp_cipher_st EVP_CIPHER; +typedef struct evp_cipher_ctx_st EVP_CIPHER_CTX; +typedef struct env_md_st EVP_MD; +typedef struct env_md_ctx_st EVP_MD_CTX; +typedef struct evp_pkey_st EVP_PKEY; + +typedef struct evp_pkey_asn1_method_st EVP_PKEY_ASN1_METHOD; + +typedef struct evp_pkey_method_st EVP_PKEY_METHOD; +typedef struct evp_pkey_ctx_st EVP_PKEY_CTX; + +typedef struct dh_st DH; +typedef struct dh_method DH_METHOD; + +typedef struct dsa_st DSA; +typedef struct dsa_method DSA_METHOD; + +typedef struct rsa_st RSA; +typedef struct rsa_meth_st RSA_METHOD; + +typedef struct rand_meth_st RAND_METHOD; + +typedef struct ecdh_method ECDH_METHOD; +typedef struct ecdsa_method ECDSA_METHOD; + +typedef struct x509_st X509; +typedef struct X509_algor_st X509_ALGOR; +typedef struct X509_crl_st X509_CRL; +typedef struct x509_crl_method_st X509_CRL_METHOD; +typedef struct x509_revoked_st X509_REVOKED; +typedef struct X509_name_st X509_NAME; +typedef struct X509_pubkey_st X509_PUBKEY; +typedef struct x509_store_st X509_STORE; +typedef struct x509_store_ctx_st X509_STORE_CTX; + +typedef struct pkcs8_priv_key_info_st PKCS8_PRIV_KEY_INFO; + +typedef struct v3_ext_ctx X509V3_CTX; +typedef struct conf_st CONF; + +typedef struct store_st STORE; +typedef struct store_method_st STORE_METHOD; + +typedef struct ui_st UI; +typedef struct ui_method_st UI_METHOD; + +typedef struct st_ERR_FNS ERR_FNS; + +typedef struct engine_st ENGINE; +typedef struct ssl_st SSL; +typedef struct ssl_ctx_st SSL_CTX; + +typedef struct X509_POLICY_NODE_st X509_POLICY_NODE; +typedef struct X509_POLICY_LEVEL_st X509_POLICY_LEVEL; +typedef struct X509_POLICY_TREE_st X509_POLICY_TREE; +typedef struct X509_POLICY_CACHE_st X509_POLICY_CACHE; + +typedef struct AUTHORITY_KEYID_st AUTHORITY_KEYID; +typedef struct DIST_POINT_st DIST_POINT; +typedef struct ISSUING_DIST_POINT_st ISSUING_DIST_POINT; +typedef struct NAME_CONSTRAINTS_st NAME_CONSTRAINTS; + + /* If placed in pkcs12.h, we end up with a circular depency with pkcs7.h */ +# define DECLARE_PKCS12_STACK_OF(type)/* Nothing */ +# define IMPLEMENT_PKCS12_STACK_OF(type)/* Nothing */ + +typedef struct crypto_ex_data_st CRYPTO_EX_DATA; +/* Callback types for crypto.h */ +typedef int CRYPTO_EX_new (void *parent, void *ptr, CRYPTO_EX_DATA *ad, + int idx, long argl, void *argp); +typedef void CRYPTO_EX_free (void *parent, void *ptr, CRYPTO_EX_DATA *ad, + int idx, long argl, void *argp); +typedef int CRYPTO_EX_dup (CRYPTO_EX_DATA *to, CRYPTO_EX_DATA *from, + void *from_d, int idx, long argl, void *argp); + +typedef struct ocsp_req_ctx_st OCSP_REQ_CTX; +typedef struct ocsp_response_st OCSP_RESPONSE; +typedef struct ocsp_responder_id_st OCSP_RESPID; + +#ifdef __cplusplus +} +#endif +#endif /* def HEADER_OPENSSL_TYPES_H */ diff --git a/ext/openssl-win64/inc32/openssl/pem.h b/ext/openssl-win64/inc32/openssl/pem.h new file mode 100644 index 00000000..d3b23fc9 --- /dev/null +++ b/ext/openssl-win64/inc32/openssl/pem.h @@ -0,0 +1,615 @@ +/* crypto/pem/pem.h */ +/* Copyright (C) 1995-1997 Eric Young (eay@cryptsoft.com) + * All rights reserved. + * + * This package is an SSL implementation written + * by Eric Young (eay@cryptsoft.com). + * The implementation was written so as to conform with Netscapes SSL. + * + * This library is free for commercial and non-commercial use as long as + * the following conditions are aheared to. The following conditions + * apply to all code found in this distribution, be it the RC4, RSA, + * lhash, DES, etc., code; not just the SSL code. The SSL documentation + * included with this distribution is covered by the same copyright terms + * except that the holder is Tim Hudson (tjh@cryptsoft.com). + * + * Copyright remains Eric Young's, and as such any Copyright notices in + * the code are not to be removed. + * If this package is used in a product, Eric Young should be given attribution + * as the author of the parts of the library used. + * This can be in the form of a textual message at program startup or + * in documentation (online or textual) provided with the package. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * "This product includes cryptographic software written by + * Eric Young (eay@cryptsoft.com)" + * The word 'cryptographic' can be left out if the rouines from the library + * being used are not cryptographic related :-). + * 4. If you include any Windows specific code (or a derivative thereof) from + * the apps directory (application code) you must include an acknowledgement: + * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" + * + * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * The licence and distribution terms for any publically available version or + * derivative of this code cannot be changed. i.e. this code cannot simply be + * copied and put under another distribution licence + * [including the GNU Public Licence.] + */ + +#ifndef HEADER_PEM_H +# define HEADER_PEM_H + +# include +# ifndef OPENSSL_NO_BIO +# include +# endif +# ifndef OPENSSL_NO_STACK +# include +# endif +# include +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +# define PEM_BUFSIZE 1024 + +# define PEM_OBJ_UNDEF 0 +# define PEM_OBJ_X509 1 +# define PEM_OBJ_X509_REQ 2 +# define PEM_OBJ_CRL 3 +# define PEM_OBJ_SSL_SESSION 4 +# define PEM_OBJ_PRIV_KEY 10 +# define PEM_OBJ_PRIV_RSA 11 +# define PEM_OBJ_PRIV_DSA 12 +# define PEM_OBJ_PRIV_DH 13 +# define PEM_OBJ_PUB_RSA 14 +# define PEM_OBJ_PUB_DSA 15 +# define PEM_OBJ_PUB_DH 16 +# define PEM_OBJ_DHPARAMS 17 +# define PEM_OBJ_DSAPARAMS 18 +# define PEM_OBJ_PRIV_RSA_PUBLIC 19 +# define PEM_OBJ_PRIV_ECDSA 20 +# define PEM_OBJ_PUB_ECDSA 21 +# define PEM_OBJ_ECPARAMETERS 22 + +# define PEM_ERROR 30 +# define PEM_DEK_DES_CBC 40 +# define PEM_DEK_IDEA_CBC 45 +# define PEM_DEK_DES_EDE 50 +# define PEM_DEK_DES_ECB 60 +# define PEM_DEK_RSA 70 +# define PEM_DEK_RSA_MD2 80 +# define PEM_DEK_RSA_MD5 90 + +# define PEM_MD_MD2 NID_md2 +# define PEM_MD_MD5 NID_md5 +# define PEM_MD_SHA NID_sha +# define PEM_MD_MD2_RSA NID_md2WithRSAEncryption +# define PEM_MD_MD5_RSA NID_md5WithRSAEncryption +# define PEM_MD_SHA_RSA NID_sha1WithRSAEncryption + +# define PEM_STRING_X509_OLD "X509 CERTIFICATE" +# define PEM_STRING_X509 "CERTIFICATE" +# define PEM_STRING_X509_PAIR "CERTIFICATE PAIR" +# define PEM_STRING_X509_TRUSTED "TRUSTED CERTIFICATE" +# define PEM_STRING_X509_REQ_OLD "NEW CERTIFICATE REQUEST" +# define PEM_STRING_X509_REQ "CERTIFICATE REQUEST" +# define PEM_STRING_X509_CRL "X509 CRL" +# define PEM_STRING_EVP_PKEY "ANY PRIVATE KEY" +# define PEM_STRING_PUBLIC "PUBLIC KEY" +# define PEM_STRING_RSA "RSA PRIVATE KEY" +# define PEM_STRING_RSA_PUBLIC "RSA PUBLIC KEY" +# define PEM_STRING_DSA "DSA PRIVATE KEY" +# define PEM_STRING_DSA_PUBLIC "DSA PUBLIC KEY" +# define PEM_STRING_PKCS7 "PKCS7" +# define PEM_STRING_PKCS7_SIGNED "PKCS #7 SIGNED DATA" +# define PEM_STRING_PKCS8 "ENCRYPTED PRIVATE KEY" +# define PEM_STRING_PKCS8INF "PRIVATE KEY" +# define PEM_STRING_DHPARAMS "DH PARAMETERS" +# define PEM_STRING_DHXPARAMS "X9.42 DH PARAMETERS" +# define PEM_STRING_SSL_SESSION "SSL SESSION PARAMETERS" +# define PEM_STRING_DSAPARAMS "DSA PARAMETERS" +# define PEM_STRING_ECDSA_PUBLIC "ECDSA PUBLIC KEY" +# define PEM_STRING_ECPARAMETERS "EC PARAMETERS" +# define PEM_STRING_ECPRIVATEKEY "EC PRIVATE KEY" +# define PEM_STRING_PARAMETERS "PARAMETERS" +# define PEM_STRING_CMS "CMS" + + /* + * Note that this structure is initialised by PEM_SealInit and cleaned up + * by PEM_SealFinal (at least for now) + */ +typedef struct PEM_Encode_Seal_st { + EVP_ENCODE_CTX encode; + EVP_MD_CTX md; + EVP_CIPHER_CTX cipher; +} PEM_ENCODE_SEAL_CTX; + +/* enc_type is one off */ +# define PEM_TYPE_ENCRYPTED 10 +# define PEM_TYPE_MIC_ONLY 20 +# define PEM_TYPE_MIC_CLEAR 30 +# define PEM_TYPE_CLEAR 40 + +typedef struct pem_recip_st { + char *name; + X509_NAME *dn; + int cipher; + int key_enc; + /* char iv[8]; unused and wrong size */ +} PEM_USER; + +typedef struct pem_ctx_st { + int type; /* what type of object */ + struct { + int version; + int mode; + } proc_type; + + char *domain; + + struct { + int cipher; + /*- + unused, and wrong size + unsigned char iv[8]; */ + } DEK_info; + + PEM_USER *originator; + + int num_recipient; + PEM_USER **recipient; +/*- + XXX(ben): don#t think this is used! + STACK *x509_chain; / * certificate chain */ + EVP_MD *md; /* signature type */ + + int md_enc; /* is the md encrypted or not? */ + int md_len; /* length of md_data */ + char *md_data; /* message digest, could be pkey encrypted */ + + EVP_CIPHER *dec; /* date encryption cipher */ + int key_len; /* key length */ + unsigned char *key; /* key */ + /*- + unused, and wrong size + unsigned char iv[8]; */ + + int data_enc; /* is the data encrypted */ + int data_len; + unsigned char *data; +} PEM_CTX; + +/* + * These macros make the PEM_read/PEM_write functions easier to maintain and + * write. Now they are all implemented with either: IMPLEMENT_PEM_rw(...) or + * IMPLEMENT_PEM_rw_cb(...) + */ + +# ifdef OPENSSL_NO_FP_API + +# define IMPLEMENT_PEM_read_fp(name, type, str, asn1) /**/ +# define IMPLEMENT_PEM_write_fp(name, type, str, asn1) /**/ +# define IMPLEMENT_PEM_write_fp_const(name, type, str, asn1) /**/ +# define IMPLEMENT_PEM_write_cb_fp(name, type, str, asn1) /**/ +# define IMPLEMENT_PEM_write_cb_fp_const(name, type, str, asn1) /**/ +# else + +# define IMPLEMENT_PEM_read_fp(name, type, str, asn1) \ +type *PEM_read_##name(FILE *fp, type **x, pem_password_cb *cb, void *u)\ +{ \ +return PEM_ASN1_read((d2i_of_void *)d2i_##asn1, str,fp,(void **)x,cb,u); \ +} + +# define IMPLEMENT_PEM_write_fp(name, type, str, asn1) \ +int PEM_write_##name(FILE *fp, type *x) \ +{ \ +return PEM_ASN1_write((i2d_of_void *)i2d_##asn1,str,fp,x,NULL,NULL,0,NULL,NULL); \ +} + +# define IMPLEMENT_PEM_write_fp_const(name, type, str, asn1) \ +int PEM_write_##name(FILE *fp, const type *x) \ +{ \ +return PEM_ASN1_write((i2d_of_void *)i2d_##asn1,str,fp,(void *)x,NULL,NULL,0,NULL,NULL); \ +} + +# define IMPLEMENT_PEM_write_cb_fp(name, type, str, asn1) \ +int PEM_write_##name(FILE *fp, type *x, const EVP_CIPHER *enc, \ + unsigned char *kstr, int klen, pem_password_cb *cb, \ + void *u) \ + { \ + return PEM_ASN1_write((i2d_of_void *)i2d_##asn1,str,fp,x,enc,kstr,klen,cb,u); \ + } + +# define IMPLEMENT_PEM_write_cb_fp_const(name, type, str, asn1) \ +int PEM_write_##name(FILE *fp, type *x, const EVP_CIPHER *enc, \ + unsigned char *kstr, int klen, pem_password_cb *cb, \ + void *u) \ + { \ + return PEM_ASN1_write((i2d_of_void *)i2d_##asn1,str,fp,x,enc,kstr,klen,cb,u); \ + } + +# endif + +# define IMPLEMENT_PEM_read_bio(name, type, str, asn1) \ +type *PEM_read_bio_##name(BIO *bp, type **x, pem_password_cb *cb, void *u)\ +{ \ +return PEM_ASN1_read_bio((d2i_of_void *)d2i_##asn1, str,bp,(void **)x,cb,u); \ +} + +# define IMPLEMENT_PEM_write_bio(name, type, str, asn1) \ +int PEM_write_bio_##name(BIO *bp, type *x) \ +{ \ +return PEM_ASN1_write_bio((i2d_of_void *)i2d_##asn1,str,bp,x,NULL,NULL,0,NULL,NULL); \ +} + +# define IMPLEMENT_PEM_write_bio_const(name, type, str, asn1) \ +int PEM_write_bio_##name(BIO *bp, const type *x) \ +{ \ +return PEM_ASN1_write_bio((i2d_of_void *)i2d_##asn1,str,bp,(void *)x,NULL,NULL,0,NULL,NULL); \ +} + +# define IMPLEMENT_PEM_write_cb_bio(name, type, str, asn1) \ +int PEM_write_bio_##name(BIO *bp, type *x, const EVP_CIPHER *enc, \ + unsigned char *kstr, int klen, pem_password_cb *cb, void *u) \ + { \ + return PEM_ASN1_write_bio((i2d_of_void *)i2d_##asn1,str,bp,x,enc,kstr,klen,cb,u); \ + } + +# define IMPLEMENT_PEM_write_cb_bio_const(name, type, str, asn1) \ +int PEM_write_bio_##name(BIO *bp, type *x, const EVP_CIPHER *enc, \ + unsigned char *kstr, int klen, pem_password_cb *cb, void *u) \ + { \ + return PEM_ASN1_write_bio((i2d_of_void *)i2d_##asn1,str,bp,(void *)x,enc,kstr,klen,cb,u); \ + } + +# define IMPLEMENT_PEM_write(name, type, str, asn1) \ + IMPLEMENT_PEM_write_bio(name, type, str, asn1) \ + IMPLEMENT_PEM_write_fp(name, type, str, asn1) + +# define IMPLEMENT_PEM_write_const(name, type, str, asn1) \ + IMPLEMENT_PEM_write_bio_const(name, type, str, asn1) \ + IMPLEMENT_PEM_write_fp_const(name, type, str, asn1) + +# define IMPLEMENT_PEM_write_cb(name, type, str, asn1) \ + IMPLEMENT_PEM_write_cb_bio(name, type, str, asn1) \ + IMPLEMENT_PEM_write_cb_fp(name, type, str, asn1) + +# define IMPLEMENT_PEM_write_cb_const(name, type, str, asn1) \ + IMPLEMENT_PEM_write_cb_bio_const(name, type, str, asn1) \ + IMPLEMENT_PEM_write_cb_fp_const(name, type, str, asn1) + +# define IMPLEMENT_PEM_read(name, type, str, asn1) \ + IMPLEMENT_PEM_read_bio(name, type, str, asn1) \ + IMPLEMENT_PEM_read_fp(name, type, str, asn1) + +# define IMPLEMENT_PEM_rw(name, type, str, asn1) \ + IMPLEMENT_PEM_read(name, type, str, asn1) \ + IMPLEMENT_PEM_write(name, type, str, asn1) + +# define IMPLEMENT_PEM_rw_const(name, type, str, asn1) \ + IMPLEMENT_PEM_read(name, type, str, asn1) \ + IMPLEMENT_PEM_write_const(name, type, str, asn1) + +# define IMPLEMENT_PEM_rw_cb(name, type, str, asn1) \ + IMPLEMENT_PEM_read(name, type, str, asn1) \ + IMPLEMENT_PEM_write_cb(name, type, str, asn1) + +/* These are the same except they are for the declarations */ + +# if defined(OPENSSL_NO_FP_API) + +# define DECLARE_PEM_read_fp(name, type) /**/ +# define DECLARE_PEM_write_fp(name, type) /**/ +# define DECLARE_PEM_write_cb_fp(name, type) /**/ +# else + +# define DECLARE_PEM_read_fp(name, type) \ + type *PEM_read_##name(FILE *fp, type **x, pem_password_cb *cb, void *u); + +# define DECLARE_PEM_write_fp(name, type) \ + int PEM_write_##name(FILE *fp, type *x); + +# define DECLARE_PEM_write_fp_const(name, type) \ + int PEM_write_##name(FILE *fp, const type *x); + +# define DECLARE_PEM_write_cb_fp(name, type) \ + int PEM_write_##name(FILE *fp, type *x, const EVP_CIPHER *enc, \ + unsigned char *kstr, int klen, pem_password_cb *cb, void *u); + +# endif + +# ifndef OPENSSL_NO_BIO +# define DECLARE_PEM_read_bio(name, type) \ + type *PEM_read_bio_##name(BIO *bp, type **x, pem_password_cb *cb, void *u); + +# define DECLARE_PEM_write_bio(name, type) \ + int PEM_write_bio_##name(BIO *bp, type *x); + +# define DECLARE_PEM_write_bio_const(name, type) \ + int PEM_write_bio_##name(BIO *bp, const type *x); + +# define DECLARE_PEM_write_cb_bio(name, type) \ + int PEM_write_bio_##name(BIO *bp, type *x, const EVP_CIPHER *enc, \ + unsigned char *kstr, int klen, pem_password_cb *cb, void *u); + +# else + +# define DECLARE_PEM_read_bio(name, type) /**/ +# define DECLARE_PEM_write_bio(name, type) /**/ +# define DECLARE_PEM_write_bio_const(name, type) /**/ +# define DECLARE_PEM_write_cb_bio(name, type) /**/ +# endif +# define DECLARE_PEM_write(name, type) \ + DECLARE_PEM_write_bio(name, type) \ + DECLARE_PEM_write_fp(name, type) +# define DECLARE_PEM_write_const(name, type) \ + DECLARE_PEM_write_bio_const(name, type) \ + DECLARE_PEM_write_fp_const(name, type) +# define DECLARE_PEM_write_cb(name, type) \ + DECLARE_PEM_write_cb_bio(name, type) \ + DECLARE_PEM_write_cb_fp(name, type) +# define DECLARE_PEM_read(name, type) \ + DECLARE_PEM_read_bio(name, type) \ + DECLARE_PEM_read_fp(name, type) +# define DECLARE_PEM_rw(name, type) \ + DECLARE_PEM_read(name, type) \ + DECLARE_PEM_write(name, type) +# define DECLARE_PEM_rw_const(name, type) \ + DECLARE_PEM_read(name, type) \ + DECLARE_PEM_write_const(name, type) +# define DECLARE_PEM_rw_cb(name, type) \ + DECLARE_PEM_read(name, type) \ + DECLARE_PEM_write_cb(name, type) +# if 1 +/* "userdata": new with OpenSSL 0.9.4 */ +typedef int pem_password_cb (char *buf, int size, int rwflag, void *userdata); +# else +/* OpenSSL 0.9.3, 0.9.3a */ +typedef int pem_password_cb (char *buf, int size, int rwflag); +# endif + +int PEM_get_EVP_CIPHER_INFO(char *header, EVP_CIPHER_INFO *cipher); +int PEM_do_header(EVP_CIPHER_INFO *cipher, unsigned char *data, long *len, + pem_password_cb *callback, void *u); + +# ifndef OPENSSL_NO_BIO +int PEM_read_bio(BIO *bp, char **name, char **header, + unsigned char **data, long *len); +int PEM_write_bio(BIO *bp, const char *name, const char *hdr, + const unsigned char *data, long len); +int PEM_bytes_read_bio(unsigned char **pdata, long *plen, char **pnm, + const char *name, BIO *bp, pem_password_cb *cb, + void *u); +void *PEM_ASN1_read_bio(d2i_of_void *d2i, const char *name, BIO *bp, void **x, + pem_password_cb *cb, void *u); +int PEM_ASN1_write_bio(i2d_of_void *i2d, const char *name, BIO *bp, void *x, + const EVP_CIPHER *enc, unsigned char *kstr, int klen, + pem_password_cb *cb, void *u); + +STACK_OF(X509_INFO) *PEM_X509_INFO_read_bio(BIO *bp, STACK_OF(X509_INFO) *sk, + pem_password_cb *cb, void *u); +int PEM_X509_INFO_write_bio(BIO *bp, X509_INFO *xi, EVP_CIPHER *enc, + unsigned char *kstr, int klen, + pem_password_cb *cd, void *u); +# endif + +int PEM_read(FILE *fp, char **name, char **header, + unsigned char **data, long *len); +int PEM_write(FILE *fp, const char *name, const char *hdr, + const unsigned char *data, long len); +void *PEM_ASN1_read(d2i_of_void *d2i, const char *name, FILE *fp, void **x, + pem_password_cb *cb, void *u); +int PEM_ASN1_write(i2d_of_void *i2d, const char *name, FILE *fp, + void *x, const EVP_CIPHER *enc, unsigned char *kstr, + int klen, pem_password_cb *callback, void *u); +STACK_OF(X509_INFO) *PEM_X509_INFO_read(FILE *fp, STACK_OF(X509_INFO) *sk, + pem_password_cb *cb, void *u); + +int PEM_SealInit(PEM_ENCODE_SEAL_CTX *ctx, EVP_CIPHER *type, + EVP_MD *md_type, unsigned char **ek, int *ekl, + unsigned char *iv, EVP_PKEY **pubk, int npubk); +void PEM_SealUpdate(PEM_ENCODE_SEAL_CTX *ctx, unsigned char *out, int *outl, + unsigned char *in, int inl); +int PEM_SealFinal(PEM_ENCODE_SEAL_CTX *ctx, unsigned char *sig, int *sigl, + unsigned char *out, int *outl, EVP_PKEY *priv); + +void PEM_SignInit(EVP_MD_CTX *ctx, EVP_MD *type); +void PEM_SignUpdate(EVP_MD_CTX *ctx, unsigned char *d, unsigned int cnt); +int PEM_SignFinal(EVP_MD_CTX *ctx, unsigned char *sigret, + unsigned int *siglen, EVP_PKEY *pkey); + +int PEM_def_callback(char *buf, int num, int w, void *key); +void PEM_proc_type(char *buf, int type); +void PEM_dek_info(char *buf, const char *type, int len, char *str); + +# include + +DECLARE_PEM_rw(X509, X509) +DECLARE_PEM_rw(X509_AUX, X509) +DECLARE_PEM_rw(X509_CERT_PAIR, X509_CERT_PAIR) +DECLARE_PEM_rw(X509_REQ, X509_REQ) +DECLARE_PEM_write(X509_REQ_NEW, X509_REQ) +DECLARE_PEM_rw(X509_CRL, X509_CRL) +DECLARE_PEM_rw(PKCS7, PKCS7) +DECLARE_PEM_rw(NETSCAPE_CERT_SEQUENCE, NETSCAPE_CERT_SEQUENCE) +DECLARE_PEM_rw(PKCS8, X509_SIG) +DECLARE_PEM_rw(PKCS8_PRIV_KEY_INFO, PKCS8_PRIV_KEY_INFO) +# ifndef OPENSSL_NO_RSA +DECLARE_PEM_rw_cb(RSAPrivateKey, RSA) +DECLARE_PEM_rw_const(RSAPublicKey, RSA) +DECLARE_PEM_rw(RSA_PUBKEY, RSA) +# endif +# ifndef OPENSSL_NO_DSA +DECLARE_PEM_rw_cb(DSAPrivateKey, DSA) +DECLARE_PEM_rw(DSA_PUBKEY, DSA) +DECLARE_PEM_rw_const(DSAparams, DSA) +# endif +# ifndef OPENSSL_NO_EC +DECLARE_PEM_rw_const(ECPKParameters, EC_GROUP) +DECLARE_PEM_rw_cb(ECPrivateKey, EC_KEY) +DECLARE_PEM_rw(EC_PUBKEY, EC_KEY) +# endif +# ifndef OPENSSL_NO_DH +DECLARE_PEM_rw_const(DHparams, DH) +DECLARE_PEM_write_const(DHxparams, DH) +# endif +DECLARE_PEM_rw_cb(PrivateKey, EVP_PKEY) +DECLARE_PEM_rw(PUBKEY, EVP_PKEY) + +int PEM_write_bio_PKCS8PrivateKey_nid(BIO *bp, EVP_PKEY *x, int nid, + char *kstr, int klen, + pem_password_cb *cb, void *u); +int PEM_write_bio_PKCS8PrivateKey(BIO *, EVP_PKEY *, const EVP_CIPHER *, + char *, int, pem_password_cb *, void *); +int i2d_PKCS8PrivateKey_bio(BIO *bp, EVP_PKEY *x, const EVP_CIPHER *enc, + char *kstr, int klen, + pem_password_cb *cb, void *u); +int i2d_PKCS8PrivateKey_nid_bio(BIO *bp, EVP_PKEY *x, int nid, + char *kstr, int klen, + pem_password_cb *cb, void *u); +EVP_PKEY *d2i_PKCS8PrivateKey_bio(BIO *bp, EVP_PKEY **x, pem_password_cb *cb, + void *u); + +int i2d_PKCS8PrivateKey_fp(FILE *fp, EVP_PKEY *x, const EVP_CIPHER *enc, + char *kstr, int klen, + pem_password_cb *cb, void *u); +int i2d_PKCS8PrivateKey_nid_fp(FILE *fp, EVP_PKEY *x, int nid, + char *kstr, int klen, + pem_password_cb *cb, void *u); +int PEM_write_PKCS8PrivateKey_nid(FILE *fp, EVP_PKEY *x, int nid, + char *kstr, int klen, + pem_password_cb *cb, void *u); + +EVP_PKEY *d2i_PKCS8PrivateKey_fp(FILE *fp, EVP_PKEY **x, pem_password_cb *cb, + void *u); + +int PEM_write_PKCS8PrivateKey(FILE *fp, EVP_PKEY *x, const EVP_CIPHER *enc, + char *kstr, int klen, pem_password_cb *cd, + void *u); + +EVP_PKEY *PEM_read_bio_Parameters(BIO *bp, EVP_PKEY **x); +int PEM_write_bio_Parameters(BIO *bp, EVP_PKEY *x); + +EVP_PKEY *b2i_PrivateKey(const unsigned char **in, long length); +EVP_PKEY *b2i_PublicKey(const unsigned char **in, long length); +EVP_PKEY *b2i_PrivateKey_bio(BIO *in); +EVP_PKEY *b2i_PublicKey_bio(BIO *in); +int i2b_PrivateKey_bio(BIO *out, EVP_PKEY *pk); +int i2b_PublicKey_bio(BIO *out, EVP_PKEY *pk); +# ifndef OPENSSL_NO_RC4 +EVP_PKEY *b2i_PVK_bio(BIO *in, pem_password_cb *cb, void *u); +int i2b_PVK_bio(BIO *out, EVP_PKEY *pk, int enclevel, + pem_password_cb *cb, void *u); +# endif + +/* BEGIN ERROR CODES */ +/* + * The following lines are auto generated by the script mkerr.pl. Any changes + * made after this point may be overwritten when the script is next run. + */ +void ERR_load_PEM_strings(void); + +/* Error codes for the PEM functions. */ + +/* Function codes. */ +# define PEM_F_B2I_DSS 127 +# define PEM_F_B2I_PVK_BIO 128 +# define PEM_F_B2I_RSA 129 +# define PEM_F_CHECK_BITLEN_DSA 130 +# define PEM_F_CHECK_BITLEN_RSA 131 +# define PEM_F_D2I_PKCS8PRIVATEKEY_BIO 120 +# define PEM_F_D2I_PKCS8PRIVATEKEY_FP 121 +# define PEM_F_DO_B2I 132 +# define PEM_F_DO_B2I_BIO 133 +# define PEM_F_DO_BLOB_HEADER 134 +# define PEM_F_DO_PK8PKEY 126 +# define PEM_F_DO_PK8PKEY_FP 125 +# define PEM_F_DO_PVK_BODY 135 +# define PEM_F_DO_PVK_HEADER 136 +# define PEM_F_I2B_PVK 137 +# define PEM_F_I2B_PVK_BIO 138 +# define PEM_F_LOAD_IV 101 +# define PEM_F_PEM_ASN1_READ 102 +# define PEM_F_PEM_ASN1_READ_BIO 103 +# define PEM_F_PEM_ASN1_WRITE 104 +# define PEM_F_PEM_ASN1_WRITE_BIO 105 +# define PEM_F_PEM_DEF_CALLBACK 100 +# define PEM_F_PEM_DO_HEADER 106 +# define PEM_F_PEM_F_PEM_WRITE_PKCS8PRIVATEKEY 118 +# define PEM_F_PEM_GET_EVP_CIPHER_INFO 107 +# define PEM_F_PEM_PK8PKEY 119 +# define PEM_F_PEM_READ 108 +# define PEM_F_PEM_READ_BIO 109 +# define PEM_F_PEM_READ_BIO_DHPARAMS 141 +# define PEM_F_PEM_READ_BIO_PARAMETERS 140 +# define PEM_F_PEM_READ_BIO_PRIVATEKEY 123 +# define PEM_F_PEM_READ_DHPARAMS 142 +# define PEM_F_PEM_READ_PRIVATEKEY 124 +# define PEM_F_PEM_SEALFINAL 110 +# define PEM_F_PEM_SEALINIT 111 +# define PEM_F_PEM_SIGNFINAL 112 +# define PEM_F_PEM_WRITE 113 +# define PEM_F_PEM_WRITE_BIO 114 +# define PEM_F_PEM_WRITE_PRIVATEKEY 139 +# define PEM_F_PEM_X509_INFO_READ 115 +# define PEM_F_PEM_X509_INFO_READ_BIO 116 +# define PEM_F_PEM_X509_INFO_WRITE_BIO 117 + +/* Reason codes. */ +# define PEM_R_BAD_BASE64_DECODE 100 +# define PEM_R_BAD_DECRYPT 101 +# define PEM_R_BAD_END_LINE 102 +# define PEM_R_BAD_IV_CHARS 103 +# define PEM_R_BAD_MAGIC_NUMBER 116 +# define PEM_R_BAD_PASSWORD_READ 104 +# define PEM_R_BAD_VERSION_NUMBER 117 +# define PEM_R_BIO_WRITE_FAILURE 118 +# define PEM_R_CIPHER_IS_NULL 127 +# define PEM_R_ERROR_CONVERTING_PRIVATE_KEY 115 +# define PEM_R_EXPECTING_PRIVATE_KEY_BLOB 119 +# define PEM_R_EXPECTING_PUBLIC_KEY_BLOB 120 +# define PEM_R_INCONSISTENT_HEADER 121 +# define PEM_R_KEYBLOB_HEADER_PARSE_ERROR 122 +# define PEM_R_KEYBLOB_TOO_SHORT 123 +# define PEM_R_NOT_DEK_INFO 105 +# define PEM_R_NOT_ENCRYPTED 106 +# define PEM_R_NOT_PROC_TYPE 107 +# define PEM_R_NO_START_LINE 108 +# define PEM_R_PROBLEMS_GETTING_PASSWORD 109 +# define PEM_R_PUBLIC_KEY_NO_RSA 110 +# define PEM_R_PVK_DATA_TOO_SHORT 124 +# define PEM_R_PVK_TOO_SHORT 125 +# define PEM_R_READ_KEY 111 +# define PEM_R_SHORT_HEADER 112 +# define PEM_R_UNSUPPORTED_CIPHER 113 +# define PEM_R_UNSUPPORTED_ENCRYPTION 114 +# define PEM_R_UNSUPPORTED_KEY_COMPONENTS 126 + +#ifdef __cplusplus +} +#endif +#endif diff --git a/ext/openssl-win64/inc32/openssl/pem2.h b/ext/openssl-win64/inc32/openssl/pem2.h new file mode 100644 index 00000000..84897d5e --- /dev/null +++ b/ext/openssl-win64/inc32/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/ext/openssl-win64/inc32/openssl/pkcs7.h b/ext/openssl-win64/inc32/openssl/pkcs7.h new file mode 100644 index 00000000..b51b3863 --- /dev/null +++ b/ext/openssl-win64/inc32/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/ext/openssl-win64/inc32/openssl/pqueue.h b/ext/openssl-win64/inc32/openssl/pqueue.h new file mode 100644 index 00000000..d40d9c7d --- /dev/null +++ b/ext/openssl-win64/inc32/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/ext/openssl-win64/inc32/openssl/rsa.h b/ext/openssl-win64/inc32/openssl/rsa.h new file mode 100644 index 00000000..d2ee3740 --- /dev/null +++ b/ext/openssl-win64/inc32/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/ext/openssl-win64/inc32/openssl/safestack.h b/ext/openssl-win64/inc32/openssl/safestack.h new file mode 100644 index 00000000..1d4f87ea --- /dev/null +++ b/ext/openssl-win64/inc32/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/ext/openssl-win64/inc32/openssl/sha.h b/ext/openssl-win64/inc32/openssl/sha.h new file mode 100644 index 00000000..e5169e4f --- /dev/null +++ b/ext/openssl-win64/inc32/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/ext/openssl-win64/inc32/openssl/srtp.h b/ext/openssl-win64/inc32/openssl/srtp.h new file mode 100644 index 00000000..2279c32b --- /dev/null +++ b/ext/openssl-win64/inc32/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/ext/openssl-win64/inc32/openssl/ssl.h b/ext/openssl-win64/inc32/openssl/ssl.h new file mode 100644 index 00000000..2b0f6628 --- /dev/null +++ b/ext/openssl-win64/inc32/openssl/ssl.h @@ -0,0 +1,3159 @@ +/* ssl/ssl.h */ +/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) + * All rights reserved. + * + * This package is an SSL implementation written + * by Eric Young (eay@cryptsoft.com). + * The implementation was written so as to conform with Netscapes SSL. + * + * This library is free for commercial and non-commercial use as long as + * the following conditions are aheared to. The following conditions + * apply to all code found in this distribution, be it the RC4, RSA, + * lhash, DES, etc., code; not just the SSL code. The SSL documentation + * included with this distribution is covered by the same copyright terms + * except that the holder is Tim Hudson (tjh@cryptsoft.com). + * + * Copyright remains Eric Young's, and as such any Copyright notices in + * the code are not to be removed. + * If this package is used in a product, Eric Young should be given attribution + * as the author of the parts of the library used. + * This can be in the form of a textual message at program startup or + * in documentation (online or textual) provided with the package. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * "This product includes cryptographic software written by + * Eric Young (eay@cryptsoft.com)" + * The word 'cryptographic' can be left out if the rouines from the library + * being used are not cryptographic related :-). + * 4. If you include any Windows specific code (or a derivative thereof) from + * the apps directory (application code) you must include an acknowledgement: + * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" + * + * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * The licence and distribution terms for any publically available version or + * derivative of this code cannot be changed. i.e. this code cannot simply be + * copied and put under another distribution licence + * [including the GNU Public Licence.] + */ +/* ==================================================================== + * Copyright (c) 1998-2007 The OpenSSL Project. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. All advertising materials mentioning features or use of this + * software must display the following acknowledgment: + * "This product includes software developed by the OpenSSL Project + * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" + * + * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to + * endorse or promote products derived from this software without + * prior written permission. For written permission, please contact + * openssl-core@openssl.org. + * + * 5. Products derived from this software may not be called "OpenSSL" + * nor may "OpenSSL" appear in their names without prior written + * permission of the OpenSSL Project. + * + * 6. Redistributions of any form whatsoever must retain the following + * acknowledgment: + * "This product includes software developed by the OpenSSL Project + * for use in the OpenSSL Toolkit (http://www.openssl.org/)" + * + * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY + * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * ==================================================================== + * + * This product includes cryptographic software written by Eric Young + * (eay@cryptsoft.com). This product includes software written by Tim + * Hudson (tjh@cryptsoft.com). + * + */ +/* ==================================================================== + * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED. + * ECC cipher suite support in OpenSSL originally developed by + * SUN MICROSYSTEMS, INC., and contributed to the OpenSSL project. + */ +/* ==================================================================== + * Copyright 2005 Nokia. All rights reserved. + * + * The portions of the attached software ("Contribution") is developed by + * Nokia Corporation and is licensed pursuant to the OpenSSL open source + * license. + * + * The Contribution, originally written by Mika Kousa and Pasi Eronen of + * Nokia Corporation, consists of the "PSK" (Pre-Shared Key) ciphersuites + * support (see RFC 4279) to OpenSSL. + * + * No patent licenses or other rights except those expressly stated in + * the OpenSSL open source license shall be deemed granted or received + * expressly, by implication, estoppel, or otherwise. + * + * No assurances are provided by Nokia that the Contribution does not + * infringe the patent or other intellectual property rights of any third + * party or that the license provides you with all the necessary rights + * to make use of the Contribution. + * + * THE SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. IN + * ADDITION TO THE DISCLAIMERS INCLUDED IN THE LICENSE, NOKIA + * SPECIFICALLY DISCLAIMS ANY LIABILITY FOR CLAIMS BROUGHT BY YOU OR ANY + * OTHER ENTITY BASED ON INFRINGEMENT OF INTELLECTUAL PROPERTY RIGHTS OR + * OTHERWISE. + */ + +#ifndef HEADER_SSL_H +# define HEADER_SSL_H + +# include + +# ifndef OPENSSL_NO_COMP +# include +# endif +# ifndef OPENSSL_NO_BIO +# include +# endif +# ifndef OPENSSL_NO_DEPRECATED +# ifndef OPENSSL_NO_X509 +# include +# endif +# include +# include +# include +# endif +# include +# include + +# include +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +/* SSLeay version number for ASN.1 encoding of the session information */ +/*- + * Version 0 - initial version + * Version 1 - added the optional peer certificate + */ +# define SSL_SESSION_ASN1_VERSION 0x0001 + +/* text strings for the ciphers */ +# define SSL_TXT_NULL_WITH_MD5 SSL2_TXT_NULL_WITH_MD5 +# define SSL_TXT_RC4_128_WITH_MD5 SSL2_TXT_RC4_128_WITH_MD5 +# define SSL_TXT_RC4_128_EXPORT40_WITH_MD5 SSL2_TXT_RC4_128_EXPORT40_WITH_MD5 +# define SSL_TXT_RC2_128_CBC_WITH_MD5 SSL2_TXT_RC2_128_CBC_WITH_MD5 +# define SSL_TXT_RC2_128_CBC_EXPORT40_WITH_MD5 SSL2_TXT_RC2_128_CBC_EXPORT40_WITH_MD5 +# define SSL_TXT_IDEA_128_CBC_WITH_MD5 SSL2_TXT_IDEA_128_CBC_WITH_MD5 +# define SSL_TXT_DES_64_CBC_WITH_MD5 SSL2_TXT_DES_64_CBC_WITH_MD5 +# define SSL_TXT_DES_64_CBC_WITH_SHA SSL2_TXT_DES_64_CBC_WITH_SHA +# define SSL_TXT_DES_192_EDE3_CBC_WITH_MD5 SSL2_TXT_DES_192_EDE3_CBC_WITH_MD5 +# define SSL_TXT_DES_192_EDE3_CBC_WITH_SHA SSL2_TXT_DES_192_EDE3_CBC_WITH_SHA + +/* + * VRS Additional Kerberos5 entries + */ +# define SSL_TXT_KRB5_DES_64_CBC_SHA SSL3_TXT_KRB5_DES_64_CBC_SHA +# define SSL_TXT_KRB5_DES_192_CBC3_SHA SSL3_TXT_KRB5_DES_192_CBC3_SHA +# define SSL_TXT_KRB5_RC4_128_SHA SSL3_TXT_KRB5_RC4_128_SHA +# define SSL_TXT_KRB5_IDEA_128_CBC_SHA SSL3_TXT_KRB5_IDEA_128_CBC_SHA +# define SSL_TXT_KRB5_DES_64_CBC_MD5 SSL3_TXT_KRB5_DES_64_CBC_MD5 +# define SSL_TXT_KRB5_DES_192_CBC3_MD5 SSL3_TXT_KRB5_DES_192_CBC3_MD5 +# define SSL_TXT_KRB5_RC4_128_MD5 SSL3_TXT_KRB5_RC4_128_MD5 +# define SSL_TXT_KRB5_IDEA_128_CBC_MD5 SSL3_TXT_KRB5_IDEA_128_CBC_MD5 + +# define SSL_TXT_KRB5_DES_40_CBC_SHA SSL3_TXT_KRB5_DES_40_CBC_SHA +# define SSL_TXT_KRB5_RC2_40_CBC_SHA SSL3_TXT_KRB5_RC2_40_CBC_SHA +# define SSL_TXT_KRB5_RC4_40_SHA SSL3_TXT_KRB5_RC4_40_SHA +# define SSL_TXT_KRB5_DES_40_CBC_MD5 SSL3_TXT_KRB5_DES_40_CBC_MD5 +# define SSL_TXT_KRB5_RC2_40_CBC_MD5 SSL3_TXT_KRB5_RC2_40_CBC_MD5 +# define SSL_TXT_KRB5_RC4_40_MD5 SSL3_TXT_KRB5_RC4_40_MD5 + +# define SSL_TXT_KRB5_DES_40_CBC_SHA SSL3_TXT_KRB5_DES_40_CBC_SHA +# define SSL_TXT_KRB5_DES_40_CBC_MD5 SSL3_TXT_KRB5_DES_40_CBC_MD5 +# define SSL_TXT_KRB5_DES_64_CBC_SHA SSL3_TXT_KRB5_DES_64_CBC_SHA +# define SSL_TXT_KRB5_DES_64_CBC_MD5 SSL3_TXT_KRB5_DES_64_CBC_MD5 +# define SSL_TXT_KRB5_DES_192_CBC3_SHA SSL3_TXT_KRB5_DES_192_CBC3_SHA +# define SSL_TXT_KRB5_DES_192_CBC3_MD5 SSL3_TXT_KRB5_DES_192_CBC3_MD5 +# define SSL_MAX_KRB5_PRINCIPAL_LENGTH 256 + +# define SSL_MAX_SSL_SESSION_ID_LENGTH 32 +# define SSL_MAX_SID_CTX_LENGTH 32 + +# define SSL_MIN_RSA_MODULUS_LENGTH_IN_BYTES (512/8) +# define SSL_MAX_KEY_ARG_LENGTH 8 +# define SSL_MAX_MASTER_KEY_LENGTH 48 + +/* These are used to specify which ciphers to use and not to use */ + +# define SSL_TXT_EXP40 "EXPORT40" +# define SSL_TXT_EXP56 "EXPORT56" +# define SSL_TXT_LOW "LOW" +# define SSL_TXT_MEDIUM "MEDIUM" +# define SSL_TXT_HIGH "HIGH" +# define SSL_TXT_FIPS "FIPS" + +# define SSL_TXT_kFZA "kFZA"/* unused! */ +# define SSL_TXT_aFZA "aFZA"/* unused! */ +# define SSL_TXT_eFZA "eFZA"/* unused! */ +# define SSL_TXT_FZA "FZA"/* unused! */ + +# define SSL_TXT_aNULL "aNULL" +# define SSL_TXT_eNULL "eNULL" +# define SSL_TXT_NULL "NULL" + +# define SSL_TXT_kRSA "kRSA" +# define SSL_TXT_kDHr "kDHr" +# define SSL_TXT_kDHd "kDHd" +# define SSL_TXT_kDH "kDH" +# define SSL_TXT_kEDH "kEDH" +# define SSL_TXT_kDHE "kDHE"/* alias for kEDH */ +# define SSL_TXT_kKRB5 "kKRB5" +# define SSL_TXT_kECDHr "kECDHr" +# define SSL_TXT_kECDHe "kECDHe" +# define SSL_TXT_kECDH "kECDH" +# define SSL_TXT_kEECDH "kEECDH" +# define SSL_TXT_kECDHE "kECDHE"/* alias for kEECDH */ +# define SSL_TXT_kPSK "kPSK" +# define SSL_TXT_kGOST "kGOST" +# define SSL_TXT_kSRP "kSRP" + +# define SSL_TXT_aRSA "aRSA" +# define SSL_TXT_aDSS "aDSS" +# define SSL_TXT_aDH "aDH" +# define SSL_TXT_aECDH "aECDH" +# define SSL_TXT_aKRB5 "aKRB5" +# define SSL_TXT_aECDSA "aECDSA" +# define SSL_TXT_aPSK "aPSK" +# define SSL_TXT_aGOST94 "aGOST94" +# define SSL_TXT_aGOST01 "aGOST01" +# define SSL_TXT_aGOST "aGOST" +# define SSL_TXT_aSRP "aSRP" + +# define SSL_TXT_DSS "DSS" +# define SSL_TXT_DH "DH" +# define SSL_TXT_EDH "EDH"/* same as "kEDH:-ADH" */ +# define SSL_TXT_DHE "DHE"/* alias for EDH */ +# define SSL_TXT_ADH "ADH" +# define SSL_TXT_RSA "RSA" +# define SSL_TXT_ECDH "ECDH" +# define SSL_TXT_EECDH "EECDH"/* same as "kEECDH:-AECDH" */ +# define SSL_TXT_ECDHE "ECDHE"/* alias for ECDHE" */ +# define SSL_TXT_AECDH "AECDH" +# define SSL_TXT_ECDSA "ECDSA" +# define SSL_TXT_KRB5 "KRB5" +# define SSL_TXT_PSK "PSK" +# define SSL_TXT_SRP "SRP" + +# define SSL_TXT_DES "DES" +# define SSL_TXT_3DES "3DES" +# define SSL_TXT_RC4 "RC4" +# define SSL_TXT_RC2 "RC2" +# define SSL_TXT_IDEA "IDEA" +# define SSL_TXT_SEED "SEED" +# define SSL_TXT_AES128 "AES128" +# define SSL_TXT_AES256 "AES256" +# define SSL_TXT_AES "AES" +# define SSL_TXT_AES_GCM "AESGCM" +# define SSL_TXT_CAMELLIA128 "CAMELLIA128" +# define SSL_TXT_CAMELLIA256 "CAMELLIA256" +# define SSL_TXT_CAMELLIA "CAMELLIA" + +# define SSL_TXT_MD5 "MD5" +# define SSL_TXT_SHA1 "SHA1" +# define SSL_TXT_SHA "SHA"/* same as "SHA1" */ +# define SSL_TXT_GOST94 "GOST94" +# define SSL_TXT_GOST89MAC "GOST89MAC" +# define SSL_TXT_SHA256 "SHA256" +# define SSL_TXT_SHA384 "SHA384" + +# define SSL_TXT_SSLV2 "SSLv2" +# define SSL_TXT_SSLV3 "SSLv3" +# define SSL_TXT_TLSV1 "TLSv1" +# define SSL_TXT_TLSV1_1 "TLSv1.1" +# define SSL_TXT_TLSV1_2 "TLSv1.2" + +# define SSL_TXT_EXP "EXP" +# define SSL_TXT_EXPORT "EXPORT" + +# define SSL_TXT_ALL "ALL" + +/*- + * COMPLEMENTOF* definitions. These identifiers are used to (de-select) + * ciphers normally not being used. + * Example: "RC4" will activate all ciphers using RC4 including ciphers + * without authentication, which would normally disabled by DEFAULT (due + * the "!ADH" being part of default). Therefore "RC4:!COMPLEMENTOFDEFAULT" + * will make sure that it is also disabled in the specific selection. + * COMPLEMENTOF* identifiers are portable between version, as adjustments + * to the default cipher setup will also be included here. + * + * COMPLEMENTOFDEFAULT does not experience the same special treatment that + * DEFAULT gets, as only selection is being done and no sorting as needed + * for DEFAULT. + */ +# define SSL_TXT_CMPALL "COMPLEMENTOFALL" +# define SSL_TXT_CMPDEF "COMPLEMENTOFDEFAULT" + +/* + * The following cipher list is used by default. It also is substituted when + * an application-defined cipher list string starts with 'DEFAULT'. + */ +# define SSL_DEFAULT_CIPHER_LIST "ALL:!aNULL:!eNULL:!SSLv2" +/* + * As of OpenSSL 1.0.0, ssl_create_cipher_list() in ssl/ssl_ciph.c always + * starts with a reasonable order, and all we have to do for DEFAULT is + * throwing out anonymous and unencrypted ciphersuites! (The latter are not + * actually enabled by ALL, but "ALL:RSA" would enable some of them.) + */ + +/* Used in SSL_set_shutdown()/SSL_get_shutdown(); */ +# define SSL_SENT_SHUTDOWN 1 +# define SSL_RECEIVED_SHUTDOWN 2 + +#ifdef __cplusplus +} +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +# if (defined(OPENSSL_NO_RSA) || defined(OPENSSL_NO_MD5)) && !defined(OPENSSL_NO_SSL2) +# define OPENSSL_NO_SSL2 +# endif + +# define SSL_FILETYPE_ASN1 X509_FILETYPE_ASN1 +# define SSL_FILETYPE_PEM X509_FILETYPE_PEM + +/* + * This is needed to stop compilers complaining about the 'struct ssl_st *' + * function parameters used to prototype callbacks in SSL_CTX. + */ +typedef struct ssl_st *ssl_crock_st; +typedef struct tls_session_ticket_ext_st TLS_SESSION_TICKET_EXT; +typedef struct ssl_method_st SSL_METHOD; +typedef struct ssl_cipher_st SSL_CIPHER; +typedef struct ssl_session_st SSL_SESSION; +typedef struct tls_sigalgs_st TLS_SIGALGS; +typedef struct ssl_conf_ctx_st SSL_CONF_CTX; + +DECLARE_STACK_OF(SSL_CIPHER) + +/* SRTP protection profiles for use with the use_srtp extension (RFC 5764)*/ +typedef struct srtp_protection_profile_st { + const char *name; + unsigned long id; +} SRTP_PROTECTION_PROFILE; + +DECLARE_STACK_OF(SRTP_PROTECTION_PROFILE) + +typedef int (*tls_session_ticket_ext_cb_fn) (SSL *s, + const unsigned char *data, + int len, void *arg); +typedef int (*tls_session_secret_cb_fn) (SSL *s, void *secret, + int *secret_len, + STACK_OF(SSL_CIPHER) *peer_ciphers, + SSL_CIPHER **cipher, void *arg); + +# ifndef OPENSSL_NO_TLSEXT + +/* Typedefs for handling custom extensions */ + +typedef int (*custom_ext_add_cb) (SSL *s, unsigned int ext_type, + const unsigned char **out, + size_t *outlen, int *al, void *add_arg); + +typedef void (*custom_ext_free_cb) (SSL *s, unsigned int ext_type, + const unsigned char *out, void *add_arg); + +typedef int (*custom_ext_parse_cb) (SSL *s, unsigned int ext_type, + const unsigned char *in, + size_t inlen, int *al, void *parse_arg); + +# endif + +# ifndef OPENSSL_NO_SSL_INTERN + +/* used to hold info on the particular ciphers used */ +struct ssl_cipher_st { + int valid; + const char *name; /* text name */ + unsigned long id; /* id, 4 bytes, first is version */ + /* + * changed in 0.9.9: these four used to be portions of a single value + * 'algorithms' + */ + unsigned long algorithm_mkey; /* key exchange algorithm */ + unsigned long algorithm_auth; /* server authentication */ + unsigned long algorithm_enc; /* symmetric encryption */ + unsigned long algorithm_mac; /* symmetric authentication */ + unsigned long algorithm_ssl; /* (major) protocol version */ + unsigned long algo_strength; /* strength and export flags */ + unsigned long algorithm2; /* Extra flags */ + int strength_bits; /* Number of bits really used */ + int alg_bits; /* Number of bits for algorithm */ +}; + +/* Used to hold functions for SSLv2 or SSLv3/TLSv1 functions */ +struct ssl_method_st { + int version; + int (*ssl_new) (SSL *s); + void (*ssl_clear) (SSL *s); + void (*ssl_free) (SSL *s); + int (*ssl_accept) (SSL *s); + int (*ssl_connect) (SSL *s); + int (*ssl_read) (SSL *s, void *buf, int len); + int (*ssl_peek) (SSL *s, void *buf, int len); + int (*ssl_write) (SSL *s, const void *buf, int len); + int (*ssl_shutdown) (SSL *s); + int (*ssl_renegotiate) (SSL *s); + int (*ssl_renegotiate_check) (SSL *s); + long (*ssl_get_message) (SSL *s, int st1, int stn, int mt, long + max, int *ok); + int (*ssl_read_bytes) (SSL *s, int type, unsigned char *buf, int len, + int peek); + int (*ssl_write_bytes) (SSL *s, int type, const void *buf_, int len); + int (*ssl_dispatch_alert) (SSL *s); + long (*ssl_ctrl) (SSL *s, int cmd, long larg, void *parg); + long (*ssl_ctx_ctrl) (SSL_CTX *ctx, int cmd, long larg, void *parg); + const SSL_CIPHER *(*get_cipher_by_char) (const unsigned char *ptr); + int (*put_cipher_by_char) (const SSL_CIPHER *cipher, unsigned char *ptr); + int (*ssl_pending) (const SSL *s); + int (*num_ciphers) (void); + const SSL_CIPHER *(*get_cipher) (unsigned ncipher); + const struct ssl_method_st *(*get_ssl_method) (int version); + long (*get_timeout) (void); + struct ssl3_enc_method *ssl3_enc; /* Extra SSLv3/TLS stuff */ + int (*ssl_version) (void); + long (*ssl_callback_ctrl) (SSL *s, int cb_id, void (*fp) (void)); + long (*ssl_ctx_callback_ctrl) (SSL_CTX *s, int cb_id, void (*fp) (void)); +}; + +/*- + * Lets make this into an ASN.1 type structure as follows + * SSL_SESSION_ID ::= SEQUENCE { + * version INTEGER, -- structure version number + * SSLversion INTEGER, -- SSL version number + * Cipher OCTET STRING, -- the 3 byte cipher ID + * Session_ID OCTET STRING, -- the Session ID + * Master_key OCTET STRING, -- the master key + * KRB5_principal OCTET STRING -- optional Kerberos principal + * Key_Arg [ 0 ] IMPLICIT OCTET STRING, -- the optional Key argument + * Time [ 1 ] EXPLICIT INTEGER, -- optional Start Time + * Timeout [ 2 ] EXPLICIT INTEGER, -- optional Timeout ins seconds + * Peer [ 3 ] EXPLICIT X509, -- optional Peer Certificate + * Session_ID_context [ 4 ] EXPLICIT OCTET STRING, -- the Session ID context + * Verify_result [ 5 ] EXPLICIT INTEGER, -- X509_V_... code for `Peer' + * HostName [ 6 ] EXPLICIT OCTET STRING, -- optional HostName from servername TLS extension + * PSK_identity_hint [ 7 ] EXPLICIT OCTET STRING, -- optional PSK identity hint + * PSK_identity [ 8 ] EXPLICIT OCTET STRING, -- optional PSK identity + * Ticket_lifetime_hint [9] EXPLICIT INTEGER, -- server's lifetime hint for session ticket + * Ticket [10] EXPLICIT OCTET STRING, -- session ticket (clients only) + * Compression_meth [11] EXPLICIT OCTET STRING, -- optional compression method + * SRP_username [ 12 ] EXPLICIT OCTET STRING -- optional SRP username + * } + * Look in ssl/ssl_asn1.c for more details + * I'm using EXPLICIT tags so I can read the damn things using asn1parse :-). + */ +struct ssl_session_st { + int ssl_version; /* what ssl version session info is being + * kept in here? */ + /* only really used in SSLv2 */ + unsigned int key_arg_length; + unsigned char key_arg[SSL_MAX_KEY_ARG_LENGTH]; + int master_key_length; + unsigned char master_key[SSL_MAX_MASTER_KEY_LENGTH]; + /* session_id - valid? */ + unsigned int session_id_length; + unsigned char session_id[SSL_MAX_SSL_SESSION_ID_LENGTH]; + /* + * this is used to determine whether the session is being reused in the + * appropriate context. It is up to the application to set this, via + * SSL_new + */ + unsigned int sid_ctx_length; + unsigned char sid_ctx[SSL_MAX_SID_CTX_LENGTH]; +# ifndef OPENSSL_NO_KRB5 + unsigned int krb5_client_princ_len; + unsigned char krb5_client_princ[SSL_MAX_KRB5_PRINCIPAL_LENGTH]; +# endif /* OPENSSL_NO_KRB5 */ +# ifndef OPENSSL_NO_PSK + char *psk_identity_hint; + char *psk_identity; +# endif + /* + * Used to indicate that session resumption is not allowed. Applications + * can also set this bit for a new session via not_resumable_session_cb + * to disable session caching and tickets. + */ + int not_resumable; + /* The cert is the certificate used to establish this connection */ + struct sess_cert_st /* SESS_CERT */ *sess_cert; + /* + * This is the cert for the other end. On clients, it will be the same as + * sess_cert->peer_key->x509 (the latter is not enough as sess_cert is + * not retained in the external representation of sessions, see + * ssl_asn1.c). + */ + X509 *peer; + /* + * when app_verify_callback accepts a session where the peer's + * certificate is not ok, we must remember the error for session reuse: + */ + long verify_result; /* only for servers */ + int references; + long timeout; + long time; + unsigned int compress_meth; /* Need to lookup the method */ + const SSL_CIPHER *cipher; + unsigned long cipher_id; /* when ASN.1 loaded, this needs to be used + * to load the 'cipher' structure */ + STACK_OF(SSL_CIPHER) *ciphers; /* shared ciphers? */ + CRYPTO_EX_DATA ex_data; /* application specific data */ + /* + * These are used to make removal of session-ids more efficient and to + * implement a maximum cache size. + */ + struct ssl_session_st *prev, *next; +# ifndef OPENSSL_NO_TLSEXT + char *tlsext_hostname; +# ifndef OPENSSL_NO_EC + size_t tlsext_ecpointformatlist_length; + unsigned char *tlsext_ecpointformatlist; /* peer's list */ + size_t tlsext_ellipticcurvelist_length; + unsigned char *tlsext_ellipticcurvelist; /* peer's list */ +# endif /* OPENSSL_NO_EC */ + /* RFC4507 info */ + unsigned char *tlsext_tick; /* Session ticket */ + size_t tlsext_ticklen; /* Session ticket length */ + long tlsext_tick_lifetime_hint; /* Session lifetime hint in seconds */ +# endif +# ifndef OPENSSL_NO_SRP + char *srp_username; +# endif +}; + +# endif + +# define SSL_OP_MICROSOFT_SESS_ID_BUG 0x00000001L +# define SSL_OP_NETSCAPE_CHALLENGE_BUG 0x00000002L +/* Allow initial connection to servers that don't support RI */ +# define SSL_OP_LEGACY_SERVER_CONNECT 0x00000004L +# define SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG 0x00000008L +# define SSL_OP_TLSEXT_PADDING 0x00000010L +# define SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER 0x00000020L +# define SSL_OP_SAFARI_ECDHE_ECDSA_BUG 0x00000040L +# define SSL_OP_SSLEAY_080_CLIENT_DH_BUG 0x00000080L +# define SSL_OP_TLS_D5_BUG 0x00000100L +# define SSL_OP_TLS_BLOCK_PADDING_BUG 0x00000200L + +/* Hasn't done anything since OpenSSL 0.9.7h, retained for compatibility */ +# define SSL_OP_MSIE_SSLV2_RSA_PADDING 0x0 +/* Refers to ancient SSLREF and SSLv2, retained for compatibility */ +# define SSL_OP_SSLREF2_REUSE_CERT_TYPE_BUG 0x0 + +/* + * Disable SSL 3.0/TLS 1.0 CBC vulnerability workaround that was added in + * OpenSSL 0.9.6d. Usually (depending on the application protocol) the + * workaround is not needed. Unfortunately some broken SSL/TLS + * implementations cannot handle it at all, which is why we include it in + * SSL_OP_ALL. + */ +/* added in 0.9.6e */ +# define SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS 0x00000800L + +/* + * SSL_OP_ALL: various bug workarounds that should be rather harmless. This + * used to be 0x000FFFFFL before 0.9.7. + */ +# define SSL_OP_ALL 0x80000BFFL + +/* DTLS options */ +# define SSL_OP_NO_QUERY_MTU 0x00001000L +/* Turn on Cookie Exchange (on relevant for servers) */ +# define SSL_OP_COOKIE_EXCHANGE 0x00002000L +/* Don't use RFC4507 ticket extension */ +# define SSL_OP_NO_TICKET 0x00004000L +/* Use Cisco's "speshul" version of DTLS_BAD_VER (as client) */ +# define SSL_OP_CISCO_ANYCONNECT 0x00008000L + +/* As server, disallow session resumption on renegotiation */ +# define SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION 0x00010000L +/* Don't use compression even if supported */ +# define SSL_OP_NO_COMPRESSION 0x00020000L +/* Permit unsafe legacy renegotiation */ +# define SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION 0x00040000L +/* If set, always create a new key when using tmp_ecdh parameters */ +# define SSL_OP_SINGLE_ECDH_USE 0x00080000L +/* If set, always create a new key when using tmp_dh parameters */ +# define SSL_OP_SINGLE_DH_USE 0x00100000L +/* Does nothing: retained for compatibiity */ +# define SSL_OP_EPHEMERAL_RSA 0x0 +/* + * Set on servers to choose the cipher according to the server's preferences + */ +# define SSL_OP_CIPHER_SERVER_PREFERENCE 0x00400000L +/* + * If set, a server will allow a client to issue a SSLv3.0 version number as + * latest version supported in the premaster secret, even when TLSv1.0 + * (version 3.1) was announced in the client hello. Normally this is + * forbidden to prevent version rollback attacks. + */ +# define SSL_OP_TLS_ROLLBACK_BUG 0x00800000L + +# define SSL_OP_NO_SSLv2 0x01000000L +# define SSL_OP_NO_SSLv3 0x02000000L +# define SSL_OP_NO_TLSv1 0x04000000L +# define SSL_OP_NO_TLSv1_2 0x08000000L +# define SSL_OP_NO_TLSv1_1 0x10000000L + +# define SSL_OP_NO_DTLSv1 0x04000000L +# define SSL_OP_NO_DTLSv1_2 0x08000000L + +# define SSL_OP_NO_SSL_MASK (SSL_OP_NO_SSLv2|SSL_OP_NO_SSLv3|\ + SSL_OP_NO_TLSv1|SSL_OP_NO_TLSv1_1|SSL_OP_NO_TLSv1_2) + +/* + * These next two were never actually used for anything since SSLeay zap so + * we have some more flags. + */ +/* + * The next flag deliberately changes the ciphertest, this is a check for the + * PKCS#1 attack + */ +# define SSL_OP_PKCS1_CHECK_1 0x0 +# define SSL_OP_PKCS1_CHECK_2 0x0 + +# define SSL_OP_NETSCAPE_CA_DN_BUG 0x20000000L +# define SSL_OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUG 0x40000000L +/* + * Make server add server-hello extension from early version of cryptopro + * draft, when GOST ciphersuite is negotiated. Required for interoperability + * with CryptoPro CSP 3.x + */ +# define SSL_OP_CRYPTOPRO_TLSEXT_BUG 0x80000000L + +/* + * Allow SSL_write(..., n) to return r with 0 < r < n (i.e. report success + * when just a single record has been written): + */ +# define SSL_MODE_ENABLE_PARTIAL_WRITE 0x00000001L +/* + * Make it possible to retry SSL_write() with changed buffer location (buffer + * contents must stay the same!); this is not the default to avoid the + * misconception that non-blocking SSL_write() behaves like non-blocking + * write(): + */ +# define SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER 0x00000002L +/* + * Never bother the application with retries if the transport is blocking: + */ +# define SSL_MODE_AUTO_RETRY 0x00000004L +/* Don't attempt to automatically build certificate chain */ +# define SSL_MODE_NO_AUTO_CHAIN 0x00000008L +/* + * Save RAM by releasing read and write buffers when they're empty. (SSL3 and + * TLS only.) "Released" buffers are put onto a free-list in the context or + * just freed (depending on the context's setting for freelist_max_len). + */ +# define SSL_MODE_RELEASE_BUFFERS 0x00000010L +/* + * Send the current time in the Random fields of the ClientHello and + * ServerHello records for compatibility with hypothetical implementations + * that require it. + */ +# define SSL_MODE_SEND_CLIENTHELLO_TIME 0x00000020L +# define SSL_MODE_SEND_SERVERHELLO_TIME 0x00000040L +/* + * Send TLS_FALLBACK_SCSV in the ClientHello. To be set only by applications + * that reconnect with a downgraded protocol version; see + * draft-ietf-tls-downgrade-scsv-00 for details. DO NOT ENABLE THIS if your + * application attempts a normal handshake. Only use this in explicit + * fallback retries, following the guidance in + * draft-ietf-tls-downgrade-scsv-00. + */ +# define SSL_MODE_SEND_FALLBACK_SCSV 0x00000080L + +/* Cert related flags */ +/* + * Many implementations ignore some aspects of the TLS standards such as + * enforcing certifcate chain algorithms. When this is set we enforce them. + */ +# define SSL_CERT_FLAG_TLS_STRICT 0x00000001L + +/* Suite B modes, takes same values as certificate verify flags */ +# define SSL_CERT_FLAG_SUITEB_128_LOS_ONLY 0x10000 +/* Suite B 192 bit only mode */ +# define SSL_CERT_FLAG_SUITEB_192_LOS 0x20000 +/* Suite B 128 bit mode allowing 192 bit algorithms */ +# define SSL_CERT_FLAG_SUITEB_128_LOS 0x30000 + +/* Perform all sorts of protocol violations for testing purposes */ +# define SSL_CERT_FLAG_BROKEN_PROTOCOL 0x10000000 + +/* Flags for building certificate chains */ +/* Treat any existing certificates as untrusted CAs */ +# define SSL_BUILD_CHAIN_FLAG_UNTRUSTED 0x1 +/* Don't include root CA in chain */ +# define SSL_BUILD_CHAIN_FLAG_NO_ROOT 0x2 +/* Just check certificates already there */ +# define SSL_BUILD_CHAIN_FLAG_CHECK 0x4 +/* Ignore verification errors */ +# define SSL_BUILD_CHAIN_FLAG_IGNORE_ERROR 0x8 +/* Clear verification errors from queue */ +# define SSL_BUILD_CHAIN_FLAG_CLEAR_ERROR 0x10 + +/* Flags returned by SSL_check_chain */ +/* Certificate can be used with this session */ +# define CERT_PKEY_VALID 0x1 +/* Certificate can also be used for signing */ +# define CERT_PKEY_SIGN 0x2 +/* EE certificate signing algorithm OK */ +# define CERT_PKEY_EE_SIGNATURE 0x10 +/* CA signature algorithms OK */ +# define CERT_PKEY_CA_SIGNATURE 0x20 +/* EE certificate parameters OK */ +# define CERT_PKEY_EE_PARAM 0x40 +/* CA certificate parameters OK */ +# define CERT_PKEY_CA_PARAM 0x80 +/* Signing explicitly allowed as opposed to SHA1 fallback */ +# define CERT_PKEY_EXPLICIT_SIGN 0x100 +/* Client CA issuer names match (always set for server cert) */ +# define CERT_PKEY_ISSUER_NAME 0x200 +/* Cert type matches client types (always set for server cert) */ +# define CERT_PKEY_CERT_TYPE 0x400 +/* Cert chain suitable to Suite B */ +# define CERT_PKEY_SUITEB 0x800 + +# define SSL_CONF_FLAG_CMDLINE 0x1 +# define SSL_CONF_FLAG_FILE 0x2 +# define SSL_CONF_FLAG_CLIENT 0x4 +# define SSL_CONF_FLAG_SERVER 0x8 +# define SSL_CONF_FLAG_SHOW_ERRORS 0x10 +# define SSL_CONF_FLAG_CERTIFICATE 0x20 +/* Configuration value types */ +# define SSL_CONF_TYPE_UNKNOWN 0x0 +# define SSL_CONF_TYPE_STRING 0x1 +# define SSL_CONF_TYPE_FILE 0x2 +# define SSL_CONF_TYPE_DIR 0x3 + +/* + * Note: SSL[_CTX]_set_{options,mode} use |= op on the previous value, they + * cannot be used to clear bits. + */ + +# define SSL_CTX_set_options(ctx,op) \ + SSL_CTX_ctrl((ctx),SSL_CTRL_OPTIONS,(op),NULL) +# define SSL_CTX_clear_options(ctx,op) \ + SSL_CTX_ctrl((ctx),SSL_CTRL_CLEAR_OPTIONS,(op),NULL) +# define SSL_CTX_get_options(ctx) \ + SSL_CTX_ctrl((ctx),SSL_CTRL_OPTIONS,0,NULL) +# define SSL_set_options(ssl,op) \ + SSL_ctrl((ssl),SSL_CTRL_OPTIONS,(op),NULL) +# define SSL_clear_options(ssl,op) \ + SSL_ctrl((ssl),SSL_CTRL_CLEAR_OPTIONS,(op),NULL) +# define SSL_get_options(ssl) \ + SSL_ctrl((ssl),SSL_CTRL_OPTIONS,0,NULL) + +# define SSL_CTX_set_mode(ctx,op) \ + SSL_CTX_ctrl((ctx),SSL_CTRL_MODE,(op),NULL) +# define SSL_CTX_clear_mode(ctx,op) \ + SSL_CTX_ctrl((ctx),SSL_CTRL_CLEAR_MODE,(op),NULL) +# define SSL_CTX_get_mode(ctx) \ + SSL_CTX_ctrl((ctx),SSL_CTRL_MODE,0,NULL) +# define SSL_clear_mode(ssl,op) \ + SSL_ctrl((ssl),SSL_CTRL_CLEAR_MODE,(op),NULL) +# define SSL_set_mode(ssl,op) \ + SSL_ctrl((ssl),SSL_CTRL_MODE,(op),NULL) +# define SSL_get_mode(ssl) \ + SSL_ctrl((ssl),SSL_CTRL_MODE,0,NULL) +# define SSL_set_mtu(ssl, mtu) \ + SSL_ctrl((ssl),SSL_CTRL_SET_MTU,(mtu),NULL) +# define DTLS_set_link_mtu(ssl, mtu) \ + SSL_ctrl((ssl),DTLS_CTRL_SET_LINK_MTU,(mtu),NULL) +# define DTLS_get_link_min_mtu(ssl) \ + SSL_ctrl((ssl),DTLS_CTRL_GET_LINK_MIN_MTU,0,NULL) + +# define SSL_get_secure_renegotiation_support(ssl) \ + SSL_ctrl((ssl), SSL_CTRL_GET_RI_SUPPORT, 0, NULL) + +# ifndef OPENSSL_NO_HEARTBEATS +# define SSL_heartbeat(ssl) \ + SSL_ctrl((ssl),SSL_CTRL_TLS_EXT_SEND_HEARTBEAT,0,NULL) +# endif + +# define SSL_CTX_set_cert_flags(ctx,op) \ + SSL_CTX_ctrl((ctx),SSL_CTRL_CERT_FLAGS,(op),NULL) +# define SSL_set_cert_flags(s,op) \ + SSL_ctrl((s),SSL_CTRL_CERT_FLAGS,(op),NULL) +# define SSL_CTX_clear_cert_flags(ctx,op) \ + SSL_CTX_ctrl((ctx),SSL_CTRL_CLEAR_CERT_FLAGS,(op),NULL) +# define SSL_clear_cert_flags(s,op) \ + SSL_ctrl((s),SSL_CTRL_CLEAR_CERT_FLAGS,(op),NULL) + +void SSL_CTX_set_msg_callback(SSL_CTX *ctx, + void (*cb) (int write_p, int version, + int content_type, const void *buf, + size_t len, SSL *ssl, void *arg)); +void SSL_set_msg_callback(SSL *ssl, + void (*cb) (int write_p, int version, + int content_type, const void *buf, + size_t len, SSL *ssl, void *arg)); +# define SSL_CTX_set_msg_callback_arg(ctx, arg) SSL_CTX_ctrl((ctx), SSL_CTRL_SET_MSG_CALLBACK_ARG, 0, (arg)) +# define SSL_set_msg_callback_arg(ssl, arg) SSL_ctrl((ssl), SSL_CTRL_SET_MSG_CALLBACK_ARG, 0, (arg)) + +# ifndef OPENSSL_NO_SRP + +# ifndef OPENSSL_NO_SSL_INTERN + +typedef struct srp_ctx_st { + /* param for all the callbacks */ + void *SRP_cb_arg; + /* set client Hello login callback */ + int (*TLS_ext_srp_username_callback) (SSL *, int *, void *); + /* set SRP N/g param callback for verification */ + int (*SRP_verify_param_callback) (SSL *, void *); + /* set SRP client passwd callback */ + char *(*SRP_give_srp_client_pwd_callback) (SSL *, void *); + char *login; + BIGNUM *N, *g, *s, *B, *A; + BIGNUM *a, *b, *v; + char *info; + int strength; + unsigned long srp_Mask; +} SRP_CTX; + +# endif + +/* see tls_srp.c */ +int SSL_SRP_CTX_init(SSL *s); +int SSL_CTX_SRP_CTX_init(SSL_CTX *ctx); +int SSL_SRP_CTX_free(SSL *ctx); +int SSL_CTX_SRP_CTX_free(SSL_CTX *ctx); +int SSL_srp_server_param_with_username(SSL *s, int *ad); +int SRP_generate_server_master_secret(SSL *s, unsigned char *master_key); +int SRP_Calc_A_param(SSL *s); +int SRP_generate_client_master_secret(SSL *s, unsigned char *master_key); + +# endif + +# if defined(OPENSSL_SYS_MSDOS) && !defined(OPENSSL_SYS_WIN32) +# define SSL_MAX_CERT_LIST_DEFAULT 1024*30 + /* 30k max cert list :-) */ +# else +# define SSL_MAX_CERT_LIST_DEFAULT 1024*100 + /* 100k max cert list :-) */ +# endif + +# define SSL_SESSION_CACHE_MAX_SIZE_DEFAULT (1024*20) + +/* + * This callback type is used inside SSL_CTX, SSL, and in the functions that + * set them. It is used to override the generation of SSL/TLS session IDs in + * a server. Return value should be zero on an error, non-zero to proceed. + * Also, callbacks should themselves check if the id they generate is unique + * otherwise the SSL handshake will fail with an error - callbacks can do + * this using the 'ssl' value they're passed by; + * SSL_has_matching_session_id(ssl, id, *id_len) The length value passed in + * is set at the maximum size the session ID can be. In SSLv2 this is 16 + * bytes, whereas SSLv3/TLSv1 it is 32 bytes. The callback can alter this + * length to be less if desired, but under SSLv2 session IDs are supposed to + * be fixed at 16 bytes so the id will be padded after the callback returns + * in this case. It is also an error for the callback to set the size to + * zero. + */ +typedef int (*GEN_SESSION_CB) (const SSL *ssl, unsigned char *id, + unsigned int *id_len); + +typedef struct ssl_comp_st SSL_COMP; + +# ifndef OPENSSL_NO_SSL_INTERN + +struct ssl_comp_st { + int id; + const char *name; +# ifndef OPENSSL_NO_COMP + COMP_METHOD *method; +# else + char *method; +# endif +}; + +DECLARE_STACK_OF(SSL_COMP) +DECLARE_LHASH_OF(SSL_SESSION); + +struct ssl_ctx_st { + const SSL_METHOD *method; + STACK_OF(SSL_CIPHER) *cipher_list; + /* same as above but sorted for lookup */ + STACK_OF(SSL_CIPHER) *cipher_list_by_id; + struct x509_store_st /* X509_STORE */ *cert_store; + LHASH_OF(SSL_SESSION) *sessions; + /* + * Most session-ids that will be cached, default is + * SSL_SESSION_CACHE_MAX_SIZE_DEFAULT. 0 is unlimited. + */ + unsigned long session_cache_size; + struct ssl_session_st *session_cache_head; + struct ssl_session_st *session_cache_tail; + /* + * This can have one of 2 values, ored together, SSL_SESS_CACHE_CLIENT, + * SSL_SESS_CACHE_SERVER, Default is SSL_SESSION_CACHE_SERVER, which + * means only SSL_accept which cache SSL_SESSIONS. + */ + int session_cache_mode; + /* + * If timeout is not 0, it is the default timeout value set when + * SSL_new() is called. This has been put in to make life easier to set + * things up + */ + long session_timeout; + /* + * If this callback is not null, it will be called each time a session id + * is added to the cache. If this function returns 1, it means that the + * callback will do a SSL_SESSION_free() when it has finished using it. + * Otherwise, on 0, it means the callback has finished with it. If + * remove_session_cb is not null, it will be called when a session-id is + * removed from the cache. After the call, OpenSSL will + * SSL_SESSION_free() it. + */ + int (*new_session_cb) (struct ssl_st *ssl, SSL_SESSION *sess); + void (*remove_session_cb) (struct ssl_ctx_st *ctx, SSL_SESSION *sess); + SSL_SESSION *(*get_session_cb) (struct ssl_st *ssl, + unsigned char *data, int len, int *copy); + struct { + int sess_connect; /* SSL new conn - started */ + int sess_connect_renegotiate; /* SSL reneg - requested */ + int sess_connect_good; /* SSL new conne/reneg - finished */ + int sess_accept; /* SSL new accept - started */ + int sess_accept_renegotiate; /* SSL reneg - requested */ + int sess_accept_good; /* SSL accept/reneg - finished */ + int sess_miss; /* session lookup misses */ + int sess_timeout; /* reuse attempt on timeouted session */ + int sess_cache_full; /* session removed due to full cache */ + int sess_hit; /* session reuse actually done */ + int sess_cb_hit; /* session-id that was not in the cache was + * passed back via the callback. This + * indicates that the application is + * supplying session-id's from other + * processes - spooky :-) */ + } stats; + + int references; + + /* if defined, these override the X509_verify_cert() calls */ + int (*app_verify_callback) (X509_STORE_CTX *, void *); + void *app_verify_arg; + /* + * before OpenSSL 0.9.7, 'app_verify_arg' was ignored + * ('app_verify_callback' was called with just one argument) + */ + + /* Default password callback. */ + pem_password_cb *default_passwd_callback; + + /* Default password callback user data. */ + void *default_passwd_callback_userdata; + + /* get client cert callback */ + int (*client_cert_cb) (SSL *ssl, X509 **x509, EVP_PKEY **pkey); + + /* cookie generate callback */ + int (*app_gen_cookie_cb) (SSL *ssl, unsigned char *cookie, + unsigned int *cookie_len); + + /* verify cookie callback */ + int (*app_verify_cookie_cb) (SSL *ssl, unsigned char *cookie, + unsigned int cookie_len); + + CRYPTO_EX_DATA ex_data; + + const EVP_MD *rsa_md5; /* For SSLv2 - name is 'ssl2-md5' */ + const EVP_MD *md5; /* For SSLv3/TLSv1 'ssl3-md5' */ + const EVP_MD *sha1; /* For SSLv3/TLSv1 'ssl3->sha1' */ + + STACK_OF(X509) *extra_certs; + STACK_OF(SSL_COMP) *comp_methods; /* stack of SSL_COMP, SSLv3/TLSv1 */ + + /* Default values used when no per-SSL value is defined follow */ + + /* used if SSL's info_callback is NULL */ + void (*info_callback) (const SSL *ssl, int type, int val); + + /* what we put in client cert requests */ + STACK_OF(X509_NAME) *client_CA; + + /* + * Default values to use in SSL structures follow (these are copied by + * SSL_new) + */ + + unsigned long options; + unsigned long mode; + long max_cert_list; + + struct cert_st /* CERT */ *cert; + int read_ahead; + + /* callback that allows applications to peek at protocol messages */ + void (*msg_callback) (int write_p, int version, int content_type, + const void *buf, size_t len, SSL *ssl, void *arg); + void *msg_callback_arg; + + int verify_mode; + unsigned int sid_ctx_length; + unsigned char sid_ctx[SSL_MAX_SID_CTX_LENGTH]; + /* called 'verify_callback' in the SSL */ + int (*default_verify_callback) (int ok, X509_STORE_CTX *ctx); + + /* Default generate session ID callback. */ + GEN_SESSION_CB generate_session_id; + + X509_VERIFY_PARAM *param; + +# if 0 + int purpose; /* Purpose setting */ + int trust; /* Trust setting */ +# endif + + int quiet_shutdown; + + /* + * Maximum amount of data to send in one fragment. actual record size can + * be more than this due to padding and MAC overheads. + */ + unsigned int max_send_fragment; + +# ifndef OPENSSL_NO_ENGINE + /* + * Engine to pass requests for client certs to + */ + ENGINE *client_cert_engine; +# endif + +# ifndef OPENSSL_NO_TLSEXT + /* TLS extensions servername callback */ + int (*tlsext_servername_callback) (SSL *, int *, void *); + void *tlsext_servername_arg; + /* RFC 4507 session ticket keys */ + unsigned char tlsext_tick_key_name[16]; + unsigned char tlsext_tick_hmac_key[16]; + unsigned char tlsext_tick_aes_key[16]; + /* Callback to support customisation of ticket key setting */ + int (*tlsext_ticket_key_cb) (SSL *ssl, + unsigned char *name, unsigned char *iv, + EVP_CIPHER_CTX *ectx, + HMAC_CTX *hctx, int enc); + + /* certificate status request info */ + /* Callback for status request */ + int (*tlsext_status_cb) (SSL *ssl, void *arg); + void *tlsext_status_arg; + + /* draft-rescorla-tls-opaque-prf-input-00.txt information */ + int (*tlsext_opaque_prf_input_callback) (SSL *, void *peerinput, + size_t len, void *arg); + void *tlsext_opaque_prf_input_callback_arg; +# endif + +# ifndef OPENSSL_NO_PSK + char *psk_identity_hint; + unsigned int (*psk_client_callback) (SSL *ssl, const char *hint, + char *identity, + unsigned int max_identity_len, + unsigned char *psk, + unsigned int max_psk_len); + unsigned int (*psk_server_callback) (SSL *ssl, const char *identity, + unsigned char *psk, + unsigned int max_psk_len); +# endif + +# ifndef OPENSSL_NO_BUF_FREELISTS +# define SSL_MAX_BUF_FREELIST_LEN_DEFAULT 32 + unsigned int freelist_max_len; + struct ssl3_buf_freelist_st *wbuf_freelist; + struct ssl3_buf_freelist_st *rbuf_freelist; +# endif +# ifndef OPENSSL_NO_SRP + SRP_CTX srp_ctx; /* ctx for SRP authentication */ +# endif + +# ifndef OPENSSL_NO_TLSEXT + +# ifndef OPENSSL_NO_NEXTPROTONEG + /* Next protocol negotiation information */ + /* (for experimental NPN extension). */ + + /* + * For a server, this contains a callback function by which the set of + * advertised protocols can be provided. + */ + int (*next_protos_advertised_cb) (SSL *s, const unsigned char **buf, + unsigned int *len, void *arg); + void *next_protos_advertised_cb_arg; + /* + * For a client, this contains a callback function that selects the next + * protocol from the list provided by the server. + */ + int (*next_proto_select_cb) (SSL *s, unsigned char **out, + unsigned char *outlen, + const unsigned char *in, + unsigned int inlen, void *arg); + void *next_proto_select_cb_arg; +# endif + /* SRTP profiles we are willing to do from RFC 5764 */ + STACK_OF(SRTP_PROTECTION_PROFILE) *srtp_profiles; + + /* + * ALPN information (we are in the process of transitioning from NPN to + * ALPN.) + */ + + /*- + * For a server, this contains a callback function that allows the + * server to select the protocol for the connection. + * out: on successful return, this must point to the raw protocol + * name (without the length prefix). + * outlen: on successful return, this contains the length of |*out|. + * in: points to the client's list of supported protocols in + * wire-format. + * inlen: the length of |in|. + */ + int (*alpn_select_cb) (SSL *s, + const unsigned char **out, + unsigned char *outlen, + const unsigned char *in, + unsigned int inlen, void *arg); + void *alpn_select_cb_arg; + + /* + * For a client, this contains the list of supported protocols in wire + * format. + */ + unsigned char *alpn_client_proto_list; + unsigned alpn_client_proto_list_len; + +# ifndef OPENSSL_NO_EC + /* EC extension values inherited by SSL structure */ + size_t tlsext_ecpointformatlist_length; + unsigned char *tlsext_ecpointformatlist; + size_t tlsext_ellipticcurvelist_length; + unsigned char *tlsext_ellipticcurvelist; +# endif /* OPENSSL_NO_EC */ +# endif +}; + +# endif + +# define SSL_SESS_CACHE_OFF 0x0000 +# define SSL_SESS_CACHE_CLIENT 0x0001 +# define SSL_SESS_CACHE_SERVER 0x0002 +# define SSL_SESS_CACHE_BOTH (SSL_SESS_CACHE_CLIENT|SSL_SESS_CACHE_SERVER) +# define SSL_SESS_CACHE_NO_AUTO_CLEAR 0x0080 +/* enough comments already ... see SSL_CTX_set_session_cache_mode(3) */ +# define SSL_SESS_CACHE_NO_INTERNAL_LOOKUP 0x0100 +# define SSL_SESS_CACHE_NO_INTERNAL_STORE 0x0200 +# define SSL_SESS_CACHE_NO_INTERNAL \ + (SSL_SESS_CACHE_NO_INTERNAL_LOOKUP|SSL_SESS_CACHE_NO_INTERNAL_STORE) + +LHASH_OF(SSL_SESSION) *SSL_CTX_sessions(SSL_CTX *ctx); +# define SSL_CTX_sess_number(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_NUMBER,0,NULL) +# define SSL_CTX_sess_connect(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_CONNECT,0,NULL) +# define SSL_CTX_sess_connect_good(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_CONNECT_GOOD,0,NULL) +# define SSL_CTX_sess_connect_renegotiate(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_CONNECT_RENEGOTIATE,0,NULL) +# define SSL_CTX_sess_accept(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_ACCEPT,0,NULL) +# define SSL_CTX_sess_accept_renegotiate(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_ACCEPT_RENEGOTIATE,0,NULL) +# define SSL_CTX_sess_accept_good(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_ACCEPT_GOOD,0,NULL) +# define SSL_CTX_sess_hits(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_HIT,0,NULL) +# define SSL_CTX_sess_cb_hits(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_CB_HIT,0,NULL) +# define SSL_CTX_sess_misses(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_MISSES,0,NULL) +# define SSL_CTX_sess_timeouts(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_TIMEOUTS,0,NULL) +# define SSL_CTX_sess_cache_full(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_CACHE_FULL,0,NULL) + +void SSL_CTX_sess_set_new_cb(SSL_CTX *ctx, + int (*new_session_cb) (struct ssl_st *ssl, + SSL_SESSION *sess)); +int (*SSL_CTX_sess_get_new_cb(SSL_CTX *ctx)) (struct ssl_st *ssl, + SSL_SESSION *sess); +void SSL_CTX_sess_set_remove_cb(SSL_CTX *ctx, + void (*remove_session_cb) (struct ssl_ctx_st + *ctx, + SSL_SESSION + *sess)); +void (*SSL_CTX_sess_get_remove_cb(SSL_CTX *ctx)) (struct ssl_ctx_st *ctx, + SSL_SESSION *sess); +void SSL_CTX_sess_set_get_cb(SSL_CTX *ctx, + SSL_SESSION *(*get_session_cb) (struct ssl_st + *ssl, + unsigned char + *data, int len, + int *copy)); +SSL_SESSION *(*SSL_CTX_sess_get_get_cb(SSL_CTX *ctx)) (struct ssl_st *ssl, + unsigned char *Data, + int len, int *copy); +void SSL_CTX_set_info_callback(SSL_CTX *ctx, + void (*cb) (const SSL *ssl, int type, + int val)); +void (*SSL_CTX_get_info_callback(SSL_CTX *ctx)) (const SSL *ssl, int type, + int val); +void SSL_CTX_set_client_cert_cb(SSL_CTX *ctx, + int (*client_cert_cb) (SSL *ssl, X509 **x509, + EVP_PKEY **pkey)); +int (*SSL_CTX_get_client_cert_cb(SSL_CTX *ctx)) (SSL *ssl, X509 **x509, + EVP_PKEY **pkey); +# ifndef OPENSSL_NO_ENGINE +int SSL_CTX_set_client_cert_engine(SSL_CTX *ctx, ENGINE *e); +# endif +void SSL_CTX_set_cookie_generate_cb(SSL_CTX *ctx, + int (*app_gen_cookie_cb) (SSL *ssl, + unsigned char + *cookie, + unsigned int + *cookie_len)); +void SSL_CTX_set_cookie_verify_cb(SSL_CTX *ctx, + int (*app_verify_cookie_cb) (SSL *ssl, + unsigned char + *cookie, + unsigned int + cookie_len)); +# ifndef OPENSSL_NO_NEXTPROTONEG +void SSL_CTX_set_next_protos_advertised_cb(SSL_CTX *s, + int (*cb) (SSL *ssl, + const unsigned char + **out, + unsigned int *outlen, + void *arg), void *arg); +void SSL_CTX_set_next_proto_select_cb(SSL_CTX *s, + int (*cb) (SSL *ssl, + unsigned char **out, + unsigned char *outlen, + const unsigned char *in, + unsigned int inlen, + void *arg), void *arg); +void SSL_get0_next_proto_negotiated(const SSL *s, const unsigned char **data, + unsigned *len); +# endif + +# ifndef OPENSSL_NO_TLSEXT +int SSL_select_next_proto(unsigned char **out, unsigned char *outlen, + const unsigned char *in, unsigned int inlen, + const unsigned char *client, + unsigned int client_len); +# endif + +# define OPENSSL_NPN_UNSUPPORTED 0 +# define OPENSSL_NPN_NEGOTIATED 1 +# define OPENSSL_NPN_NO_OVERLAP 2 + +int SSL_CTX_set_alpn_protos(SSL_CTX *ctx, const unsigned char *protos, + unsigned protos_len); +int SSL_set_alpn_protos(SSL *ssl, const unsigned char *protos, + unsigned protos_len); +void SSL_CTX_set_alpn_select_cb(SSL_CTX *ctx, + int (*cb) (SSL *ssl, + const unsigned char **out, + unsigned char *outlen, + const unsigned char *in, + unsigned int inlen, + void *arg), void *arg); +void SSL_get0_alpn_selected(const SSL *ssl, const unsigned char **data, + unsigned *len); + +# ifndef OPENSSL_NO_PSK +/* + * the maximum length of the buffer given to callbacks containing the + * resulting identity/psk + */ +# define PSK_MAX_IDENTITY_LEN 128 +# define PSK_MAX_PSK_LEN 256 +void SSL_CTX_set_psk_client_callback(SSL_CTX *ctx, + unsigned int (*psk_client_callback) (SSL + *ssl, + const + char + *hint, + char + *identity, + unsigned + int + max_identity_len, + unsigned + char + *psk, + unsigned + int + max_psk_len)); +void SSL_set_psk_client_callback(SSL *ssl, + unsigned int (*psk_client_callback) (SSL + *ssl, + const + char + *hint, + char + *identity, + unsigned + int + max_identity_len, + unsigned + char + *psk, + unsigned + int + max_psk_len)); +void SSL_CTX_set_psk_server_callback(SSL_CTX *ctx, + unsigned int (*psk_server_callback) (SSL + *ssl, + const + char + *identity, + unsigned + char + *psk, + unsigned + int + max_psk_len)); +void SSL_set_psk_server_callback(SSL *ssl, + unsigned int (*psk_server_callback) (SSL + *ssl, + const + char + *identity, + unsigned + char + *psk, + unsigned + int + max_psk_len)); +int SSL_CTX_use_psk_identity_hint(SSL_CTX *ctx, const char *identity_hint); +int SSL_use_psk_identity_hint(SSL *s, const char *identity_hint); +const char *SSL_get_psk_identity_hint(const SSL *s); +const char *SSL_get_psk_identity(const SSL *s); +# endif + +# ifndef OPENSSL_NO_TLSEXT +/* Register callbacks to handle custom TLS Extensions for client or server. */ + +int SSL_CTX_add_client_custom_ext(SSL_CTX *ctx, unsigned int ext_type, + custom_ext_add_cb add_cb, + custom_ext_free_cb free_cb, + void *add_arg, + custom_ext_parse_cb parse_cb, + void *parse_arg); + +int SSL_CTX_add_server_custom_ext(SSL_CTX *ctx, unsigned int ext_type, + custom_ext_add_cb add_cb, + custom_ext_free_cb free_cb, + void *add_arg, + custom_ext_parse_cb parse_cb, + void *parse_arg); + +int SSL_extension_supported(unsigned int ext_type); + +# endif + +# define SSL_NOTHING 1 +# define SSL_WRITING 2 +# define SSL_READING 3 +# define SSL_X509_LOOKUP 4 + +/* These will only be used when doing non-blocking IO */ +# define SSL_want_nothing(s) (SSL_want(s) == SSL_NOTHING) +# define SSL_want_read(s) (SSL_want(s) == SSL_READING) +# define SSL_want_write(s) (SSL_want(s) == SSL_WRITING) +# define SSL_want_x509_lookup(s) (SSL_want(s) == SSL_X509_LOOKUP) + +# define SSL_MAC_FLAG_READ_MAC_STREAM 1 +# define SSL_MAC_FLAG_WRITE_MAC_STREAM 2 + +# ifndef OPENSSL_NO_SSL_INTERN + +struct ssl_st { + /* + * protocol version (one of SSL2_VERSION, SSL3_VERSION, TLS1_VERSION, + * DTLS1_VERSION) + */ + int version; + /* SSL_ST_CONNECT or SSL_ST_ACCEPT */ + int type; + /* SSLv3 */ + const SSL_METHOD *method; + /* + * There are 2 BIO's even though they are normally both the same. This + * is so data can be read and written to different handlers + */ +# ifndef OPENSSL_NO_BIO + /* used by SSL_read */ + BIO *rbio; + /* used by SSL_write */ + BIO *wbio; + /* used during session-id reuse to concatenate messages */ + BIO *bbio; +# else + /* used by SSL_read */ + char *rbio; + /* used by SSL_write */ + char *wbio; + char *bbio; +# endif + /* + * This holds a variable that indicates what we were doing when a 0 or -1 + * is returned. This is needed for non-blocking IO so we know what + * request needs re-doing when in SSL_accept or SSL_connect + */ + int rwstate; + /* true when we are actually in SSL_accept() or SSL_connect() */ + int in_handshake; + int (*handshake_func) (SSL *); + /* + * Imagine that here's a boolean member "init" that is switched as soon + * as SSL_set_{accept/connect}_state is called for the first time, so + * that "state" and "handshake_func" are properly initialized. But as + * handshake_func is == 0 until then, we use this test instead of an + * "init" member. + */ + /* are we the server side? - mostly used by SSL_clear */ + int server; + /* + * Generate a new session or reuse an old one. + * NB: For servers, the 'new' session may actually be a previously + * cached session or even the previous session unless + * SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION is set + */ + int new_session; + /* don't send shutdown packets */ + int quiet_shutdown; + /* we have shut things down, 0x01 sent, 0x02 for received */ + int shutdown; + /* where we are */ + int state; + /* where we are when reading */ + int rstate; + BUF_MEM *init_buf; /* buffer used during init */ + void *init_msg; /* pointer to handshake message body, set by + * ssl3_get_message() */ + int init_num; /* amount read/written */ + int init_off; /* amount read/written */ + /* used internally to point at a raw packet */ + unsigned char *packet; + unsigned int packet_length; + struct ssl2_state_st *s2; /* SSLv2 variables */ + struct ssl3_state_st *s3; /* SSLv3 variables */ + struct dtls1_state_st *d1; /* DTLSv1 variables */ + int read_ahead; /* Read as many input bytes as possible (for + * non-blocking reads) */ + /* callback that allows applications to peek at protocol messages */ + void (*msg_callback) (int write_p, int version, int content_type, + const void *buf, size_t len, SSL *ssl, void *arg); + void *msg_callback_arg; + int hit; /* reusing a previous session */ + X509_VERIFY_PARAM *param; +# if 0 + int purpose; /* Purpose setting */ + int trust; /* Trust setting */ +# endif + /* crypto */ + STACK_OF(SSL_CIPHER) *cipher_list; + STACK_OF(SSL_CIPHER) *cipher_list_by_id; + /* + * These are the ones being used, the ones in SSL_SESSION are the ones to + * be 'copied' into these ones + */ + int mac_flags; + EVP_CIPHER_CTX *enc_read_ctx; /* cryptographic state */ + EVP_MD_CTX *read_hash; /* used for mac generation */ +# ifndef OPENSSL_NO_COMP + COMP_CTX *expand; /* uncompress */ +# else + char *expand; +# endif + EVP_CIPHER_CTX *enc_write_ctx; /* cryptographic state */ + EVP_MD_CTX *write_hash; /* used for mac generation */ +# ifndef OPENSSL_NO_COMP + COMP_CTX *compress; /* compression */ +# else + char *compress; +# endif + /* session info */ + /* client cert? */ + /* This is used to hold the server certificate used */ + struct cert_st /* CERT */ *cert; + /* + * the session_id_context is used to ensure sessions are only reused in + * the appropriate context + */ + unsigned int sid_ctx_length; + unsigned char sid_ctx[SSL_MAX_SID_CTX_LENGTH]; + /* This can also be in the session once a session is established */ + SSL_SESSION *session; + /* Default generate session ID callback. */ + GEN_SESSION_CB generate_session_id; + /* Used in SSL2 and SSL3 */ + /* + * 0 don't care about verify failure. + * 1 fail if verify fails + */ + int verify_mode; + /* fail if callback returns 0 */ + int (*verify_callback) (int ok, X509_STORE_CTX *ctx); + /* optional informational callback */ + void (*info_callback) (const SSL *ssl, int type, int val); + /* error bytes to be written */ + int error; + /* actual code */ + int error_code; +# ifndef OPENSSL_NO_KRB5 + /* Kerberos 5 context */ + KSSL_CTX *kssl_ctx; +# endif /* OPENSSL_NO_KRB5 */ +# ifndef OPENSSL_NO_PSK + unsigned int (*psk_client_callback) (SSL *ssl, const char *hint, + char *identity, + unsigned int max_identity_len, + unsigned char *psk, + unsigned int max_psk_len); + unsigned int (*psk_server_callback) (SSL *ssl, const char *identity, + unsigned char *psk, + unsigned int max_psk_len); +# endif + SSL_CTX *ctx; + /* + * set this flag to 1 and a sleep(1) is put into all SSL_read() and + * SSL_write() calls, good for nbio debuging :-) + */ + int debug; + /* extra application data */ + long verify_result; + CRYPTO_EX_DATA ex_data; + /* for server side, keep the list of CA_dn we can use */ + STACK_OF(X509_NAME) *client_CA; + int references; + /* protocol behaviour */ + unsigned long options; + /* API behaviour */ + unsigned long mode; + long max_cert_list; + int first_packet; + /* what was passed, used for SSLv3/TLS rollback check */ + int client_version; + unsigned int max_send_fragment; +# ifndef OPENSSL_NO_TLSEXT + /* TLS extension debug callback */ + void (*tlsext_debug_cb) (SSL *s, int client_server, int type, + unsigned char *data, int len, void *arg); + void *tlsext_debug_arg; + char *tlsext_hostname; + /*- + * no further mod of servername + * 0 : call the servername extension callback. + * 1 : prepare 2, allow last ack just after in server callback. + * 2 : don't call servername callback, no ack in server hello + */ + int servername_done; + /* certificate status request info */ + /* Status type or -1 if no status type */ + int tlsext_status_type; + /* Expect OCSP CertificateStatus message */ + int tlsext_status_expected; + /* OCSP status request only */ + STACK_OF(OCSP_RESPID) *tlsext_ocsp_ids; + X509_EXTENSIONS *tlsext_ocsp_exts; + /* OCSP response received or to be sent */ + unsigned char *tlsext_ocsp_resp; + int tlsext_ocsp_resplen; + /* RFC4507 session ticket expected to be received or sent */ + int tlsext_ticket_expected; +# ifndef OPENSSL_NO_EC + size_t tlsext_ecpointformatlist_length; + /* our list */ + unsigned char *tlsext_ecpointformatlist; + size_t tlsext_ellipticcurvelist_length; + /* our list */ + unsigned char *tlsext_ellipticcurvelist; +# endif /* OPENSSL_NO_EC */ + /* + * draft-rescorla-tls-opaque-prf-input-00.txt information to be used for + * handshakes + */ + void *tlsext_opaque_prf_input; + size_t tlsext_opaque_prf_input_len; + /* TLS Session Ticket extension override */ + TLS_SESSION_TICKET_EXT *tlsext_session_ticket; + /* TLS Session Ticket extension callback */ + tls_session_ticket_ext_cb_fn tls_session_ticket_ext_cb; + void *tls_session_ticket_ext_cb_arg; + /* TLS pre-shared secret session resumption */ + tls_session_secret_cb_fn tls_session_secret_cb; + void *tls_session_secret_cb_arg; + SSL_CTX *initial_ctx; /* initial ctx, used to store sessions */ +# ifndef OPENSSL_NO_NEXTPROTONEG + /* + * Next protocol negotiation. For the client, this is the protocol that + * we sent in NextProtocol and is set when handling ServerHello + * extensions. For a server, this is the client's selected_protocol from + * NextProtocol and is set when handling the NextProtocol message, before + * the Finished message. + */ + unsigned char *next_proto_negotiated; + unsigned char next_proto_negotiated_len; +# endif +# define session_ctx initial_ctx + /* What we'll do */ + STACK_OF(SRTP_PROTECTION_PROFILE) *srtp_profiles; + /* What's been chosen */ + SRTP_PROTECTION_PROFILE *srtp_profile; + /*- + * Is use of the Heartbeat extension negotiated? + * 0: disabled + * 1: enabled + * 2: enabled, but not allowed to send Requests + */ + unsigned int tlsext_heartbeat; + /* Indicates if a HeartbeatRequest is in flight */ + unsigned int tlsext_hb_pending; + /* HeartbeatRequest sequence number */ + unsigned int tlsext_hb_seq; +# else +# define session_ctx ctx +# endif /* OPENSSL_NO_TLSEXT */ + /*- + * 1 if we are renegotiating. + * 2 if we are a server and are inside a handshake + * (i.e. not just sending a HelloRequest) + */ + int renegotiate; +# ifndef OPENSSL_NO_SRP + /* ctx for SRP authentication */ + SRP_CTX srp_ctx; +# endif +# ifndef OPENSSL_NO_TLSEXT + /* + * For a client, this contains the list of supported protocols in wire + * format. + */ + unsigned char *alpn_client_proto_list; + unsigned alpn_client_proto_list_len; +# endif /* OPENSSL_NO_TLSEXT */ +}; + +# endif + +#ifdef __cplusplus +} +#endif + +# include +# include +# include /* This is mostly sslv3 with a few tweaks */ +# include /* Datagram TLS */ +# include +# include /* Support for the use_srtp extension */ + +#ifdef __cplusplus +extern "C" { +#endif + +/* compatibility */ +# define SSL_set_app_data(s,arg) (SSL_set_ex_data(s,0,(char *)arg)) +# define SSL_get_app_data(s) (SSL_get_ex_data(s,0)) +# define SSL_SESSION_set_app_data(s,a) (SSL_SESSION_set_ex_data(s,0,(char *)a)) +# define SSL_SESSION_get_app_data(s) (SSL_SESSION_get_ex_data(s,0)) +# define SSL_CTX_get_app_data(ctx) (SSL_CTX_get_ex_data(ctx,0)) +# define SSL_CTX_set_app_data(ctx,arg) (SSL_CTX_set_ex_data(ctx,0,(char *)arg)) + +/* + * The following are the possible values for ssl->state are are used to + * indicate where we are up to in the SSL connection establishment. The + * macros that follow are about the only things you should need to use and + * even then, only when using non-blocking IO. It can also be useful to work + * out where you were when the connection failed + */ + +# define SSL_ST_CONNECT 0x1000 +# define SSL_ST_ACCEPT 0x2000 +# define SSL_ST_MASK 0x0FFF +# define SSL_ST_INIT (SSL_ST_CONNECT|SSL_ST_ACCEPT) +# define SSL_ST_BEFORE 0x4000 +# define SSL_ST_OK 0x03 +# define SSL_ST_RENEGOTIATE (0x04|SSL_ST_INIT) + +# define SSL_CB_LOOP 0x01 +# define SSL_CB_EXIT 0x02 +# define SSL_CB_READ 0x04 +# define SSL_CB_WRITE 0x08 +# define SSL_CB_ALERT 0x4000/* used in callback */ +# define SSL_CB_READ_ALERT (SSL_CB_ALERT|SSL_CB_READ) +# define SSL_CB_WRITE_ALERT (SSL_CB_ALERT|SSL_CB_WRITE) +# define SSL_CB_ACCEPT_LOOP (SSL_ST_ACCEPT|SSL_CB_LOOP) +# define SSL_CB_ACCEPT_EXIT (SSL_ST_ACCEPT|SSL_CB_EXIT) +# define SSL_CB_CONNECT_LOOP (SSL_ST_CONNECT|SSL_CB_LOOP) +# define SSL_CB_CONNECT_EXIT (SSL_ST_CONNECT|SSL_CB_EXIT) +# define SSL_CB_HANDSHAKE_START 0x10 +# define SSL_CB_HANDSHAKE_DONE 0x20 + +/* Is the SSL_connection established? */ +# define SSL_get_state(a) SSL_state(a) +# define SSL_is_init_finished(a) (SSL_state(a) == SSL_ST_OK) +# define SSL_in_init(a) (SSL_state(a)&SSL_ST_INIT) +# define SSL_in_before(a) (SSL_state(a)&SSL_ST_BEFORE) +# define SSL_in_connect_init(a) (SSL_state(a)&SSL_ST_CONNECT) +# define SSL_in_accept_init(a) (SSL_state(a)&SSL_ST_ACCEPT) + +/* + * The following 2 states are kept in ssl->rstate when reads fail, you should + * not need these + */ +# define SSL_ST_READ_HEADER 0xF0 +# define SSL_ST_READ_BODY 0xF1 +# define SSL_ST_READ_DONE 0xF2 + +/*- + * Obtain latest Finished message + * -- that we sent (SSL_get_finished) + * -- that we expected from peer (SSL_get_peer_finished). + * Returns length (0 == no Finished so far), copies up to 'count' bytes. + */ +size_t SSL_get_finished(const SSL *s, void *buf, size_t count); +size_t SSL_get_peer_finished(const SSL *s, void *buf, size_t count); + +/* + * use either SSL_VERIFY_NONE or SSL_VERIFY_PEER, the last 2 options are + * 'ored' with SSL_VERIFY_PEER if they are desired + */ +# define SSL_VERIFY_NONE 0x00 +# define SSL_VERIFY_PEER 0x01 +# define SSL_VERIFY_FAIL_IF_NO_PEER_CERT 0x02 +# define SSL_VERIFY_CLIENT_ONCE 0x04 + +# define OpenSSL_add_ssl_algorithms() SSL_library_init() +# define SSLeay_add_ssl_algorithms() SSL_library_init() + +/* this is for backward compatibility */ +# if 0 /* NEW_SSLEAY */ +# define SSL_CTX_set_default_verify(a,b,c) SSL_CTX_set_verify(a,b,c) +# define SSL_set_pref_cipher(c,n) SSL_set_cipher_list(c,n) +# define SSL_add_session(a,b) SSL_CTX_add_session((a),(b)) +# define SSL_remove_session(a,b) SSL_CTX_remove_session((a),(b)) +# define SSL_flush_sessions(a,b) SSL_CTX_flush_sessions((a),(b)) +# endif +/* More backward compatibility */ +# define SSL_get_cipher(s) \ + SSL_CIPHER_get_name(SSL_get_current_cipher(s)) +# define SSL_get_cipher_bits(s,np) \ + SSL_CIPHER_get_bits(SSL_get_current_cipher(s),np) +# define SSL_get_cipher_version(s) \ + SSL_CIPHER_get_version(SSL_get_current_cipher(s)) +# define SSL_get_cipher_name(s) \ + SSL_CIPHER_get_name(SSL_get_current_cipher(s)) +# define SSL_get_time(a) SSL_SESSION_get_time(a) +# define SSL_set_time(a,b) SSL_SESSION_set_time((a),(b)) +# define SSL_get_timeout(a) SSL_SESSION_get_timeout(a) +# define SSL_set_timeout(a,b) SSL_SESSION_set_timeout((a),(b)) + +# define d2i_SSL_SESSION_bio(bp,s_id) ASN1_d2i_bio_of(SSL_SESSION,SSL_SESSION_new,d2i_SSL_SESSION,bp,s_id) +# define i2d_SSL_SESSION_bio(bp,s_id) ASN1_i2d_bio_of(SSL_SESSION,i2d_SSL_SESSION,bp,s_id) + +DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION) +# define SSL_AD_REASON_OFFSET 1000/* offset to get SSL_R_... value + * from SSL_AD_... */ +/* These alert types are for SSLv3 and TLSv1 */ +# define SSL_AD_CLOSE_NOTIFY SSL3_AD_CLOSE_NOTIFY +/* fatal */ +# define SSL_AD_UNEXPECTED_MESSAGE SSL3_AD_UNEXPECTED_MESSAGE +/* fatal */ +# define SSL_AD_BAD_RECORD_MAC SSL3_AD_BAD_RECORD_MAC +# define SSL_AD_DECRYPTION_FAILED TLS1_AD_DECRYPTION_FAILED +# define SSL_AD_RECORD_OVERFLOW TLS1_AD_RECORD_OVERFLOW +/* fatal */ +# define SSL_AD_DECOMPRESSION_FAILURE SSL3_AD_DECOMPRESSION_FAILURE +/* fatal */ +# define SSL_AD_HANDSHAKE_FAILURE SSL3_AD_HANDSHAKE_FAILURE +/* Not for TLS */ +# define SSL_AD_NO_CERTIFICATE SSL3_AD_NO_CERTIFICATE +# define SSL_AD_BAD_CERTIFICATE SSL3_AD_BAD_CERTIFICATE +# define SSL_AD_UNSUPPORTED_CERTIFICATE SSL3_AD_UNSUPPORTED_CERTIFICATE +# define SSL_AD_CERTIFICATE_REVOKED SSL3_AD_CERTIFICATE_REVOKED +# define SSL_AD_CERTIFICATE_EXPIRED SSL3_AD_CERTIFICATE_EXPIRED +# define SSL_AD_CERTIFICATE_UNKNOWN SSL3_AD_CERTIFICATE_UNKNOWN +/* fatal */ +# define SSL_AD_ILLEGAL_PARAMETER SSL3_AD_ILLEGAL_PARAMETER +/* fatal */ +# define SSL_AD_UNKNOWN_CA TLS1_AD_UNKNOWN_CA +/* fatal */ +# define SSL_AD_ACCESS_DENIED TLS1_AD_ACCESS_DENIED +/* fatal */ +# define SSL_AD_DECODE_ERROR TLS1_AD_DECODE_ERROR +# define SSL_AD_DECRYPT_ERROR TLS1_AD_DECRYPT_ERROR +/* fatal */ +# define SSL_AD_EXPORT_RESTRICTION TLS1_AD_EXPORT_RESTRICTION +/* fatal */ +# define SSL_AD_PROTOCOL_VERSION TLS1_AD_PROTOCOL_VERSION +/* fatal */ +# define SSL_AD_INSUFFICIENT_SECURITY TLS1_AD_INSUFFICIENT_SECURITY +/* fatal */ +# define SSL_AD_INTERNAL_ERROR TLS1_AD_INTERNAL_ERROR +# define SSL_AD_USER_CANCELLED TLS1_AD_USER_CANCELLED +# define SSL_AD_NO_RENEGOTIATION TLS1_AD_NO_RENEGOTIATION +# define SSL_AD_UNSUPPORTED_EXTENSION TLS1_AD_UNSUPPORTED_EXTENSION +# define SSL_AD_CERTIFICATE_UNOBTAINABLE TLS1_AD_CERTIFICATE_UNOBTAINABLE +# define SSL_AD_UNRECOGNIZED_NAME TLS1_AD_UNRECOGNIZED_NAME +# define SSL_AD_BAD_CERTIFICATE_STATUS_RESPONSE TLS1_AD_BAD_CERTIFICATE_STATUS_RESPONSE +# define SSL_AD_BAD_CERTIFICATE_HASH_VALUE TLS1_AD_BAD_CERTIFICATE_HASH_VALUE +/* fatal */ +# define SSL_AD_UNKNOWN_PSK_IDENTITY TLS1_AD_UNKNOWN_PSK_IDENTITY +/* fatal */ +# define SSL_AD_INAPPROPRIATE_FALLBACK TLS1_AD_INAPPROPRIATE_FALLBACK +# define SSL_ERROR_NONE 0 +# define SSL_ERROR_SSL 1 +# define SSL_ERROR_WANT_READ 2 +# define SSL_ERROR_WANT_WRITE 3 +# define SSL_ERROR_WANT_X509_LOOKUP 4 +# define SSL_ERROR_SYSCALL 5/* look at error stack/return + * value/errno */ +# define SSL_ERROR_ZERO_RETURN 6 +# define SSL_ERROR_WANT_CONNECT 7 +# define SSL_ERROR_WANT_ACCEPT 8 +# define SSL_CTRL_NEED_TMP_RSA 1 +# define SSL_CTRL_SET_TMP_RSA 2 +# define SSL_CTRL_SET_TMP_DH 3 +# define SSL_CTRL_SET_TMP_ECDH 4 +# define SSL_CTRL_SET_TMP_RSA_CB 5 +# define SSL_CTRL_SET_TMP_DH_CB 6 +# define SSL_CTRL_SET_TMP_ECDH_CB 7 +# define SSL_CTRL_GET_SESSION_REUSED 8 +# define SSL_CTRL_GET_CLIENT_CERT_REQUEST 9 +# define SSL_CTRL_GET_NUM_RENEGOTIATIONS 10 +# define SSL_CTRL_CLEAR_NUM_RENEGOTIATIONS 11 +# define SSL_CTRL_GET_TOTAL_RENEGOTIATIONS 12 +# define SSL_CTRL_GET_FLAGS 13 +# define SSL_CTRL_EXTRA_CHAIN_CERT 14 +# define SSL_CTRL_SET_MSG_CALLBACK 15 +# define SSL_CTRL_SET_MSG_CALLBACK_ARG 16 +/* only applies to datagram connections */ +# define SSL_CTRL_SET_MTU 17 +/* Stats */ +# define SSL_CTRL_SESS_NUMBER 20 +# define SSL_CTRL_SESS_CONNECT 21 +# define SSL_CTRL_SESS_CONNECT_GOOD 22 +# define SSL_CTRL_SESS_CONNECT_RENEGOTIATE 23 +# define SSL_CTRL_SESS_ACCEPT 24 +# define SSL_CTRL_SESS_ACCEPT_GOOD 25 +# define SSL_CTRL_SESS_ACCEPT_RENEGOTIATE 26 +# define SSL_CTRL_SESS_HIT 27 +# define SSL_CTRL_SESS_CB_HIT 28 +# define SSL_CTRL_SESS_MISSES 29 +# define SSL_CTRL_SESS_TIMEOUTS 30 +# define SSL_CTRL_SESS_CACHE_FULL 31 +# define SSL_CTRL_OPTIONS 32 +# define SSL_CTRL_MODE 33 +# define SSL_CTRL_GET_READ_AHEAD 40 +# define SSL_CTRL_SET_READ_AHEAD 41 +# define SSL_CTRL_SET_SESS_CACHE_SIZE 42 +# define SSL_CTRL_GET_SESS_CACHE_SIZE 43 +# define SSL_CTRL_SET_SESS_CACHE_MODE 44 +# define SSL_CTRL_GET_SESS_CACHE_MODE 45 +# define SSL_CTRL_GET_MAX_CERT_LIST 50 +# define SSL_CTRL_SET_MAX_CERT_LIST 51 +# define SSL_CTRL_SET_MAX_SEND_FRAGMENT 52 +/* see tls1.h for macros based on these */ +# ifndef OPENSSL_NO_TLSEXT +# define SSL_CTRL_SET_TLSEXT_SERVERNAME_CB 53 +# define SSL_CTRL_SET_TLSEXT_SERVERNAME_ARG 54 +# define SSL_CTRL_SET_TLSEXT_HOSTNAME 55 +# define SSL_CTRL_SET_TLSEXT_DEBUG_CB 56 +# define SSL_CTRL_SET_TLSEXT_DEBUG_ARG 57 +# define SSL_CTRL_GET_TLSEXT_TICKET_KEYS 58 +# define SSL_CTRL_SET_TLSEXT_TICKET_KEYS 59 +# define SSL_CTRL_SET_TLSEXT_OPAQUE_PRF_INPUT 60 +# define SSL_CTRL_SET_TLSEXT_OPAQUE_PRF_INPUT_CB 61 +# define SSL_CTRL_SET_TLSEXT_OPAQUE_PRF_INPUT_CB_ARG 62 +# define SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB 63 +# define SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB_ARG 64 +# define SSL_CTRL_SET_TLSEXT_STATUS_REQ_TYPE 65 +# define SSL_CTRL_GET_TLSEXT_STATUS_REQ_EXTS 66 +# define SSL_CTRL_SET_TLSEXT_STATUS_REQ_EXTS 67 +# define SSL_CTRL_GET_TLSEXT_STATUS_REQ_IDS 68 +# define SSL_CTRL_SET_TLSEXT_STATUS_REQ_IDS 69 +# define SSL_CTRL_GET_TLSEXT_STATUS_REQ_OCSP_RESP 70 +# define SSL_CTRL_SET_TLSEXT_STATUS_REQ_OCSP_RESP 71 +# define SSL_CTRL_SET_TLSEXT_TICKET_KEY_CB 72 +# define SSL_CTRL_SET_TLS_EXT_SRP_USERNAME_CB 75 +# define SSL_CTRL_SET_SRP_VERIFY_PARAM_CB 76 +# define SSL_CTRL_SET_SRP_GIVE_CLIENT_PWD_CB 77 +# define SSL_CTRL_SET_SRP_ARG 78 +# define SSL_CTRL_SET_TLS_EXT_SRP_USERNAME 79 +# define SSL_CTRL_SET_TLS_EXT_SRP_STRENGTH 80 +# define SSL_CTRL_SET_TLS_EXT_SRP_PASSWORD 81 +# ifndef OPENSSL_NO_HEARTBEATS +# define SSL_CTRL_TLS_EXT_SEND_HEARTBEAT 85 +# define SSL_CTRL_GET_TLS_EXT_HEARTBEAT_PENDING 86 +# define SSL_CTRL_SET_TLS_EXT_HEARTBEAT_NO_REQUESTS 87 +# endif +# endif /* OPENSSL_NO_TLSEXT */ +# define DTLS_CTRL_GET_TIMEOUT 73 +# define DTLS_CTRL_HANDLE_TIMEOUT 74 +# define DTLS_CTRL_LISTEN 75 +# define SSL_CTRL_GET_RI_SUPPORT 76 +# define SSL_CTRL_CLEAR_OPTIONS 77 +# define SSL_CTRL_CLEAR_MODE 78 +# define SSL_CTRL_GET_EXTRA_CHAIN_CERTS 82 +# define SSL_CTRL_CLEAR_EXTRA_CHAIN_CERTS 83 +# define SSL_CTRL_CHAIN 88 +# define SSL_CTRL_CHAIN_CERT 89 +# define SSL_CTRL_GET_CURVES 90 +# define SSL_CTRL_SET_CURVES 91 +# define SSL_CTRL_SET_CURVES_LIST 92 +# define SSL_CTRL_GET_SHARED_CURVE 93 +# define SSL_CTRL_SET_ECDH_AUTO 94 +# define SSL_CTRL_SET_SIGALGS 97 +# define SSL_CTRL_SET_SIGALGS_LIST 98 +# define SSL_CTRL_CERT_FLAGS 99 +# define SSL_CTRL_CLEAR_CERT_FLAGS 100 +# define SSL_CTRL_SET_CLIENT_SIGALGS 101 +# define SSL_CTRL_SET_CLIENT_SIGALGS_LIST 102 +# define SSL_CTRL_GET_CLIENT_CERT_TYPES 103 +# define SSL_CTRL_SET_CLIENT_CERT_TYPES 104 +# define SSL_CTRL_BUILD_CERT_CHAIN 105 +# define SSL_CTRL_SET_VERIFY_CERT_STORE 106 +# define SSL_CTRL_SET_CHAIN_CERT_STORE 107 +# define SSL_CTRL_GET_PEER_SIGNATURE_NID 108 +# define SSL_CTRL_GET_SERVER_TMP_KEY 109 +# define SSL_CTRL_GET_RAW_CIPHERLIST 110 +# define SSL_CTRL_GET_EC_POINT_FORMATS 111 +# define SSL_CTRL_GET_CHAIN_CERTS 115 +# define SSL_CTRL_SELECT_CURRENT_CERT 116 +# define SSL_CTRL_SET_CURRENT_CERT 117 +# define SSL_CTRL_CHECK_PROTO_VERSION 119 +# define DTLS_CTRL_SET_LINK_MTU 120 +# define DTLS_CTRL_GET_LINK_MIN_MTU 121 +# define SSL_CERT_SET_FIRST 1 +# define SSL_CERT_SET_NEXT 2 +# define SSL_CERT_SET_SERVER 3 +# define DTLSv1_get_timeout(ssl, arg) \ + SSL_ctrl(ssl,DTLS_CTRL_GET_TIMEOUT,0, (void *)arg) +# define DTLSv1_handle_timeout(ssl) \ + SSL_ctrl(ssl,DTLS_CTRL_HANDLE_TIMEOUT,0, NULL) +# define DTLSv1_listen(ssl, peer) \ + SSL_ctrl(ssl,DTLS_CTRL_LISTEN,0, (void *)peer) +# define SSL_session_reused(ssl) \ + SSL_ctrl((ssl),SSL_CTRL_GET_SESSION_REUSED,0,NULL) +# define SSL_num_renegotiations(ssl) \ + SSL_ctrl((ssl),SSL_CTRL_GET_NUM_RENEGOTIATIONS,0,NULL) +# define SSL_clear_num_renegotiations(ssl) \ + SSL_ctrl((ssl),SSL_CTRL_CLEAR_NUM_RENEGOTIATIONS,0,NULL) +# define SSL_total_renegotiations(ssl) \ + SSL_ctrl((ssl),SSL_CTRL_GET_TOTAL_RENEGOTIATIONS,0,NULL) +# define SSL_CTX_need_tmp_RSA(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_NEED_TMP_RSA,0,NULL) +# define SSL_CTX_set_tmp_rsa(ctx,rsa) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_TMP_RSA,0,(char *)rsa) +# define SSL_CTX_set_tmp_dh(ctx,dh) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_TMP_DH,0,(char *)dh) +# define SSL_CTX_set_tmp_ecdh(ctx,ecdh) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_TMP_ECDH,0,(char *)ecdh) +# define SSL_need_tmp_RSA(ssl) \ + SSL_ctrl(ssl,SSL_CTRL_NEED_TMP_RSA,0,NULL) +# define SSL_set_tmp_rsa(ssl,rsa) \ + SSL_ctrl(ssl,SSL_CTRL_SET_TMP_RSA,0,(char *)rsa) +# define SSL_set_tmp_dh(ssl,dh) \ + SSL_ctrl(ssl,SSL_CTRL_SET_TMP_DH,0,(char *)dh) +# define SSL_set_tmp_ecdh(ssl,ecdh) \ + SSL_ctrl(ssl,SSL_CTRL_SET_TMP_ECDH,0,(char *)ecdh) +# define SSL_CTX_add_extra_chain_cert(ctx,x509) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_EXTRA_CHAIN_CERT,0,(char *)x509) +# define SSL_CTX_get_extra_chain_certs(ctx,px509) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_GET_EXTRA_CHAIN_CERTS,0,px509) +# define SSL_CTX_get_extra_chain_certs_only(ctx,px509) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_GET_EXTRA_CHAIN_CERTS,1,px509) +# define SSL_CTX_clear_extra_chain_certs(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_CLEAR_EXTRA_CHAIN_CERTS,0,NULL) +# define SSL_CTX_set0_chain(ctx,sk) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_CHAIN,0,(char *)sk) +# define SSL_CTX_set1_chain(ctx,sk) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_CHAIN,1,(char *)sk) +# define SSL_CTX_add0_chain_cert(ctx,x509) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_CHAIN_CERT,0,(char *)x509) +# define SSL_CTX_add1_chain_cert(ctx,x509) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_CHAIN_CERT,1,(char *)x509) +# define SSL_CTX_get0_chain_certs(ctx,px509) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_GET_CHAIN_CERTS,0,px509) +# define SSL_CTX_clear_chain_certs(ctx) \ + SSL_CTX_set0_chain(ctx,NULL) +# define SSL_CTX_build_cert_chain(ctx, flags) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_BUILD_CERT_CHAIN, flags, NULL) +# define SSL_CTX_select_current_cert(ctx,x509) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SELECT_CURRENT_CERT,0,(char *)x509) +# define SSL_CTX_set_current_cert(ctx, op) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_CURRENT_CERT, op, NULL) +# define SSL_CTX_set0_verify_cert_store(ctx,st) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_VERIFY_CERT_STORE,0,(char *)st) +# define SSL_CTX_set1_verify_cert_store(ctx,st) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_VERIFY_CERT_STORE,1,(char *)st) +# define SSL_CTX_set0_chain_cert_store(ctx,st) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_CHAIN_CERT_STORE,0,(char *)st) +# define SSL_CTX_set1_chain_cert_store(ctx,st) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_CHAIN_CERT_STORE,1,(char *)st) +# define SSL_set0_chain(ctx,sk) \ + SSL_ctrl(ctx,SSL_CTRL_CHAIN,0,(char *)sk) +# define SSL_set1_chain(ctx,sk) \ + SSL_ctrl(ctx,SSL_CTRL_CHAIN,1,(char *)sk) +# define SSL_add0_chain_cert(ctx,x509) \ + SSL_ctrl(ctx,SSL_CTRL_CHAIN_CERT,0,(char *)x509) +# define SSL_add1_chain_cert(ctx,x509) \ + SSL_ctrl(ctx,SSL_CTRL_CHAIN_CERT,1,(char *)x509) +# define SSL_get0_chain_certs(ctx,px509) \ + SSL_ctrl(ctx,SSL_CTRL_GET_CHAIN_CERTS,0,px509) +# define SSL_clear_chain_certs(ctx) \ + SSL_set0_chain(ctx,NULL) +# define SSL_build_cert_chain(s, flags) \ + SSL_ctrl(s,SSL_CTRL_BUILD_CERT_CHAIN, flags, NULL) +# define SSL_select_current_cert(ctx,x509) \ + SSL_ctrl(ctx,SSL_CTRL_SELECT_CURRENT_CERT,0,(char *)x509) +# define SSL_set_current_cert(ctx,op) \ + SSL_ctrl(ctx,SSL_CTRL_SET_CURRENT_CERT, op, NULL) +# define SSL_set0_verify_cert_store(s,st) \ + SSL_ctrl(s,SSL_CTRL_SET_VERIFY_CERT_STORE,0,(char *)st) +# define SSL_set1_verify_cert_store(s,st) \ + SSL_ctrl(s,SSL_CTRL_SET_VERIFY_CERT_STORE,1,(char *)st) +# define SSL_set0_chain_cert_store(s,st) \ + SSL_ctrl(s,SSL_CTRL_SET_CHAIN_CERT_STORE,0,(char *)st) +# define SSL_set1_chain_cert_store(s,st) \ + SSL_ctrl(s,SSL_CTRL_SET_CHAIN_CERT_STORE,1,(char *)st) +# define SSL_get1_curves(ctx, s) \ + SSL_ctrl(ctx,SSL_CTRL_GET_CURVES,0,(char *)s) +# define SSL_CTX_set1_curves(ctx, clist, clistlen) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_CURVES,clistlen,(char *)clist) +# define SSL_CTX_set1_curves_list(ctx, s) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_CURVES_LIST,0,(char *)s) +# define SSL_set1_curves(ctx, clist, clistlen) \ + SSL_ctrl(ctx,SSL_CTRL_SET_CURVES,clistlen,(char *)clist) +# define SSL_set1_curves_list(ctx, s) \ + SSL_ctrl(ctx,SSL_CTRL_SET_CURVES_LIST,0,(char *)s) +# define SSL_get_shared_curve(s, n) \ + SSL_ctrl(s,SSL_CTRL_GET_SHARED_CURVE,n,NULL) +# define SSL_CTX_set_ecdh_auto(ctx, onoff) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_ECDH_AUTO,onoff,NULL) +# define SSL_set_ecdh_auto(s, onoff) \ + SSL_ctrl(s,SSL_CTRL_SET_ECDH_AUTO,onoff,NULL) +# define SSL_CTX_set1_sigalgs(ctx, slist, slistlen) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_SIGALGS,slistlen,(int *)slist) +# define SSL_CTX_set1_sigalgs_list(ctx, s) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_SIGALGS_LIST,0,(char *)s) +# define SSL_set1_sigalgs(ctx, slist, slistlen) \ + SSL_ctrl(ctx,SSL_CTRL_SET_SIGALGS,clistlen,(int *)slist) +# define SSL_set1_sigalgs_list(ctx, s) \ + SSL_ctrl(ctx,SSL_CTRL_SET_SIGALGS_LIST,0,(char *)s) +# define SSL_CTX_set1_client_sigalgs(ctx, slist, slistlen) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_CLIENT_SIGALGS,slistlen,(int *)slist) +# define SSL_CTX_set1_client_sigalgs_list(ctx, s) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_CLIENT_SIGALGS_LIST,0,(char *)s) +# define SSL_set1_client_sigalgs(ctx, slist, slistlen) \ + SSL_ctrl(ctx,SSL_CTRL_SET_CLIENT_SIGALGS,clistlen,(int *)slist) +# define SSL_set1_client_sigalgs_list(ctx, s) \ + SSL_ctrl(ctx,SSL_CTRL_SET_CLIENT_SIGALGS_LIST,0,(char *)s) +# define SSL_get0_certificate_types(s, clist) \ + SSL_ctrl(s, SSL_CTRL_GET_CLIENT_CERT_TYPES, 0, (char *)clist) +# define SSL_CTX_set1_client_certificate_types(ctx, clist, clistlen) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_CLIENT_CERT_TYPES,clistlen,(char *)clist) +# define SSL_set1_client_certificate_types(s, clist, clistlen) \ + SSL_ctrl(s,SSL_CTRL_SET_CLIENT_CERT_TYPES,clistlen,(char *)clist) +# define SSL_get_peer_signature_nid(s, pn) \ + SSL_ctrl(s,SSL_CTRL_GET_PEER_SIGNATURE_NID,0,pn) +# define SSL_get_server_tmp_key(s, pk) \ + SSL_ctrl(s,SSL_CTRL_GET_SERVER_TMP_KEY,0,pk) +# define SSL_get0_raw_cipherlist(s, plst) \ + SSL_ctrl(s,SSL_CTRL_GET_RAW_CIPHERLIST,0,(char *)plst) +# define SSL_get0_ec_point_formats(s, plst) \ + SSL_ctrl(s,SSL_CTRL_GET_EC_POINT_FORMATS,0,(char *)plst) +# ifndef OPENSSL_NO_BIO +BIO_METHOD *BIO_f_ssl(void); +BIO *BIO_new_ssl(SSL_CTX *ctx, int client); +BIO *BIO_new_ssl_connect(SSL_CTX *ctx); +BIO *BIO_new_buffer_ssl_connect(SSL_CTX *ctx); +int BIO_ssl_copy_session_id(BIO *to, BIO *from); +void BIO_ssl_shutdown(BIO *ssl_bio); + +# endif + +int SSL_CTX_set_cipher_list(SSL_CTX *, const char *str); +SSL_CTX *SSL_CTX_new(const SSL_METHOD *meth); +void SSL_CTX_free(SSL_CTX *); +long SSL_CTX_set_timeout(SSL_CTX *ctx, long t); +long SSL_CTX_get_timeout(const SSL_CTX *ctx); +X509_STORE *SSL_CTX_get_cert_store(const SSL_CTX *); +void SSL_CTX_set_cert_store(SSL_CTX *, X509_STORE *); +int SSL_want(const SSL *s); +int SSL_clear(SSL *s); + +void SSL_CTX_flush_sessions(SSL_CTX *ctx, long tm); + +const SSL_CIPHER *SSL_get_current_cipher(const SSL *s); +int SSL_CIPHER_get_bits(const SSL_CIPHER *c, int *alg_bits); +char *SSL_CIPHER_get_version(const SSL_CIPHER *c); +const char *SSL_CIPHER_get_name(const SSL_CIPHER *c); +unsigned long SSL_CIPHER_get_id(const SSL_CIPHER *c); + +int SSL_get_fd(const SSL *s); +int SSL_get_rfd(const SSL *s); +int SSL_get_wfd(const SSL *s); +const char *SSL_get_cipher_list(const SSL *s, int n); +char *SSL_get_shared_ciphers(const SSL *s, char *buf, int len); +int SSL_get_read_ahead(const SSL *s); +int SSL_pending(const SSL *s); +# ifndef OPENSSL_NO_SOCK +int SSL_set_fd(SSL *s, int fd); +int SSL_set_rfd(SSL *s, int fd); +int SSL_set_wfd(SSL *s, int fd); +# endif +# ifndef OPENSSL_NO_BIO +void SSL_set_bio(SSL *s, BIO *rbio, BIO *wbio); +BIO *SSL_get_rbio(const SSL *s); +BIO *SSL_get_wbio(const SSL *s); +# endif +int SSL_set_cipher_list(SSL *s, const char *str); +void SSL_set_read_ahead(SSL *s, int yes); +int SSL_get_verify_mode(const SSL *s); +int SSL_get_verify_depth(const SSL *s); +int (*SSL_get_verify_callback(const SSL *s)) (int, X509_STORE_CTX *); +void SSL_set_verify(SSL *s, int mode, + int (*callback) (int ok, X509_STORE_CTX *ctx)); +void SSL_set_verify_depth(SSL *s, int depth); +void SSL_set_cert_cb(SSL *s, int (*cb) (SSL *ssl, void *arg), void *arg); +# ifndef OPENSSL_NO_RSA +int SSL_use_RSAPrivateKey(SSL *ssl, RSA *rsa); +# endif +int SSL_use_RSAPrivateKey_ASN1(SSL *ssl, unsigned char *d, long len); +int SSL_use_PrivateKey(SSL *ssl, EVP_PKEY *pkey); +int SSL_use_PrivateKey_ASN1(int pk, SSL *ssl, const unsigned char *d, + long len); +int SSL_use_certificate(SSL *ssl, X509 *x); +int SSL_use_certificate_ASN1(SSL *ssl, const unsigned char *d, int len); + +# ifndef OPENSSL_NO_TLSEXT +/* Set serverinfo data for the current active cert. */ +int SSL_CTX_use_serverinfo(SSL_CTX *ctx, const unsigned char *serverinfo, + size_t serverinfo_length); +# ifndef OPENSSL_NO_STDIO +int SSL_CTX_use_serverinfo_file(SSL_CTX *ctx, const char *file); +# endif /* NO_STDIO */ + +# endif + +# ifndef OPENSSL_NO_STDIO +int SSL_use_RSAPrivateKey_file(SSL *ssl, const char *file, int type); +int SSL_use_PrivateKey_file(SSL *ssl, const char *file, int type); +int SSL_use_certificate_file(SSL *ssl, const char *file, int type); +int SSL_CTX_use_RSAPrivateKey_file(SSL_CTX *ctx, const char *file, int type); +int SSL_CTX_use_PrivateKey_file(SSL_CTX *ctx, const char *file, int type); +int SSL_CTX_use_certificate_file(SSL_CTX *ctx, const char *file, int type); +/* PEM type */ +int SSL_CTX_use_certificate_chain_file(SSL_CTX *ctx, const char *file); +STACK_OF(X509_NAME) *SSL_load_client_CA_file(const char *file); +int SSL_add_file_cert_subjects_to_stack(STACK_OF(X509_NAME) *stackCAs, + const char *file); +# ifndef OPENSSL_SYS_VMS +/* XXXXX: Better scheme needed! [was: #ifndef MAC_OS_pre_X] */ +# ifndef OPENSSL_SYS_MACINTOSH_CLASSIC +int SSL_add_dir_cert_subjects_to_stack(STACK_OF(X509_NAME) *stackCAs, + const char *dir); +# endif +# endif + +# endif + +void SSL_load_error_strings(void); +const char *SSL_state_string(const SSL *s); +const char *SSL_rstate_string(const SSL *s); +const char *SSL_state_string_long(const SSL *s); +const char *SSL_rstate_string_long(const SSL *s); +long SSL_SESSION_get_time(const SSL_SESSION *s); +long SSL_SESSION_set_time(SSL_SESSION *s, long t); +long SSL_SESSION_get_timeout(const SSL_SESSION *s); +long SSL_SESSION_set_timeout(SSL_SESSION *s, long t); +void SSL_copy_session_id(SSL *to, const SSL *from); +X509 *SSL_SESSION_get0_peer(SSL_SESSION *s); +int SSL_SESSION_set1_id_context(SSL_SESSION *s, const unsigned char *sid_ctx, + unsigned int sid_ctx_len); + +SSL_SESSION *SSL_SESSION_new(void); +const unsigned char *SSL_SESSION_get_id(const SSL_SESSION *s, + unsigned int *len); +unsigned int SSL_SESSION_get_compress_id(const SSL_SESSION *s); +# ifndef OPENSSL_NO_FP_API +int SSL_SESSION_print_fp(FILE *fp, const SSL_SESSION *ses); +# endif +# ifndef OPENSSL_NO_BIO +int SSL_SESSION_print(BIO *fp, const SSL_SESSION *ses); +# endif +void SSL_SESSION_free(SSL_SESSION *ses); +int i2d_SSL_SESSION(SSL_SESSION *in, unsigned char **pp); +int SSL_set_session(SSL *to, SSL_SESSION *session); +int SSL_CTX_add_session(SSL_CTX *s, SSL_SESSION *c); +int SSL_CTX_remove_session(SSL_CTX *, SSL_SESSION *c); +int SSL_CTX_set_generate_session_id(SSL_CTX *, GEN_SESSION_CB); +int SSL_set_generate_session_id(SSL *, GEN_SESSION_CB); +int SSL_has_matching_session_id(const SSL *ssl, const unsigned char *id, + unsigned int id_len); +SSL_SESSION *d2i_SSL_SESSION(SSL_SESSION **a, const unsigned char **pp, + long length); + +# ifdef HEADER_X509_H +X509 *SSL_get_peer_certificate(const SSL *s); +# endif + +STACK_OF(X509) *SSL_get_peer_cert_chain(const SSL *s); + +int SSL_CTX_get_verify_mode(const SSL_CTX *ctx); +int SSL_CTX_get_verify_depth(const SSL_CTX *ctx); +int (*SSL_CTX_get_verify_callback(const SSL_CTX *ctx)) (int, + X509_STORE_CTX *); +void SSL_CTX_set_verify(SSL_CTX *ctx, int mode, + int (*callback) (int, X509_STORE_CTX *)); +void SSL_CTX_set_verify_depth(SSL_CTX *ctx, int depth); +void SSL_CTX_set_cert_verify_callback(SSL_CTX *ctx, + int (*cb) (X509_STORE_CTX *, void *), + void *arg); +void SSL_CTX_set_cert_cb(SSL_CTX *c, int (*cb) (SSL *ssl, void *arg), + void *arg); +# ifndef OPENSSL_NO_RSA +int SSL_CTX_use_RSAPrivateKey(SSL_CTX *ctx, RSA *rsa); +# endif +int SSL_CTX_use_RSAPrivateKey_ASN1(SSL_CTX *ctx, const unsigned char *d, + long len); +int SSL_CTX_use_PrivateKey(SSL_CTX *ctx, EVP_PKEY *pkey); +int SSL_CTX_use_PrivateKey_ASN1(int pk, SSL_CTX *ctx, + const unsigned char *d, long len); +int SSL_CTX_use_certificate(SSL_CTX *ctx, X509 *x); +int SSL_CTX_use_certificate_ASN1(SSL_CTX *ctx, int len, + const unsigned char *d); + +void SSL_CTX_set_default_passwd_cb(SSL_CTX *ctx, pem_password_cb *cb); +void SSL_CTX_set_default_passwd_cb_userdata(SSL_CTX *ctx, void *u); + +int SSL_CTX_check_private_key(const SSL_CTX *ctx); +int SSL_check_private_key(const SSL *ctx); + +int SSL_CTX_set_session_id_context(SSL_CTX *ctx, const unsigned char *sid_ctx, + unsigned int sid_ctx_len); + +SSL *SSL_new(SSL_CTX *ctx); +int SSL_set_session_id_context(SSL *ssl, const unsigned char *sid_ctx, + unsigned int sid_ctx_len); + +int SSL_CTX_set_purpose(SSL_CTX *s, int purpose); +int SSL_set_purpose(SSL *s, int purpose); +int SSL_CTX_set_trust(SSL_CTX *s, int trust); +int SSL_set_trust(SSL *s, int trust); + +int SSL_CTX_set1_param(SSL_CTX *ctx, X509_VERIFY_PARAM *vpm); +int SSL_set1_param(SSL *ssl, X509_VERIFY_PARAM *vpm); + +X509_VERIFY_PARAM *SSL_CTX_get0_param(SSL_CTX *ctx); +X509_VERIFY_PARAM *SSL_get0_param(SSL *ssl); + +# ifndef OPENSSL_NO_SRP +int SSL_CTX_set_srp_username(SSL_CTX *ctx, char *name); +int SSL_CTX_set_srp_password(SSL_CTX *ctx, char *password); +int SSL_CTX_set_srp_strength(SSL_CTX *ctx, int strength); +int SSL_CTX_set_srp_client_pwd_callback(SSL_CTX *ctx, + char *(*cb) (SSL *, void *)); +int SSL_CTX_set_srp_verify_param_callback(SSL_CTX *ctx, + int (*cb) (SSL *, void *)); +int SSL_CTX_set_srp_username_callback(SSL_CTX *ctx, + int (*cb) (SSL *, int *, void *)); +int SSL_CTX_set_srp_cb_arg(SSL_CTX *ctx, void *arg); + +int SSL_set_srp_server_param(SSL *s, const BIGNUM *N, const BIGNUM *g, + BIGNUM *sa, BIGNUM *v, char *info); +int SSL_set_srp_server_param_pw(SSL *s, const char *user, const char *pass, + const char *grp); + +BIGNUM *SSL_get_srp_g(SSL *s); +BIGNUM *SSL_get_srp_N(SSL *s); + +char *SSL_get_srp_username(SSL *s); +char *SSL_get_srp_userinfo(SSL *s); +# endif + +void SSL_certs_clear(SSL *s); +void SSL_free(SSL *ssl); +int SSL_accept(SSL *ssl); +int SSL_connect(SSL *ssl); +int SSL_read(SSL *ssl, void *buf, int num); +int SSL_peek(SSL *ssl, void *buf, int num); +int SSL_write(SSL *ssl, const void *buf, int num); +long SSL_ctrl(SSL *ssl, int cmd, long larg, void *parg); +long SSL_callback_ctrl(SSL *, int, void (*)(void)); +long SSL_CTX_ctrl(SSL_CTX *ctx, int cmd, long larg, void *parg); +long SSL_CTX_callback_ctrl(SSL_CTX *, int, void (*)(void)); + +int SSL_get_error(const SSL *s, int ret_code); +const char *SSL_get_version(const SSL *s); + +/* This sets the 'default' SSL version that SSL_new() will create */ +int SSL_CTX_set_ssl_version(SSL_CTX *ctx, const SSL_METHOD *meth); + +# ifndef OPENSSL_NO_SSL2 +const SSL_METHOD *SSLv2_method(void); /* SSLv2 */ +const SSL_METHOD *SSLv2_server_method(void); /* SSLv2 */ +const SSL_METHOD *SSLv2_client_method(void); /* SSLv2 */ +# endif + +# ifndef OPENSSL_NO_SSL3_METHOD +const SSL_METHOD *SSLv3_method(void); /* SSLv3 */ +const SSL_METHOD *SSLv3_server_method(void); /* SSLv3 */ +const SSL_METHOD *SSLv3_client_method(void); /* SSLv3 */ +# endif + +const SSL_METHOD *SSLv23_method(void); /* Negotiate highest available SSL/TLS + * version */ +const SSL_METHOD *SSLv23_server_method(void); /* Negotiate highest available + * SSL/TLS version */ +const SSL_METHOD *SSLv23_client_method(void); /* Negotiate highest available + * SSL/TLS version */ + +const SSL_METHOD *TLSv1_method(void); /* TLSv1.0 */ +const SSL_METHOD *TLSv1_server_method(void); /* TLSv1.0 */ +const SSL_METHOD *TLSv1_client_method(void); /* TLSv1.0 */ + +const SSL_METHOD *TLSv1_1_method(void); /* TLSv1.1 */ +const SSL_METHOD *TLSv1_1_server_method(void); /* TLSv1.1 */ +const SSL_METHOD *TLSv1_1_client_method(void); /* TLSv1.1 */ + +const SSL_METHOD *TLSv1_2_method(void); /* TLSv1.2 */ +const SSL_METHOD *TLSv1_2_server_method(void); /* TLSv1.2 */ +const SSL_METHOD *TLSv1_2_client_method(void); /* TLSv1.2 */ + +const SSL_METHOD *DTLSv1_method(void); /* DTLSv1.0 */ +const SSL_METHOD *DTLSv1_server_method(void); /* DTLSv1.0 */ +const SSL_METHOD *DTLSv1_client_method(void); /* DTLSv1.0 */ + +const SSL_METHOD *DTLSv1_2_method(void); /* DTLSv1.2 */ +const SSL_METHOD *DTLSv1_2_server_method(void); /* DTLSv1.2 */ +const SSL_METHOD *DTLSv1_2_client_method(void); /* DTLSv1.2 */ + +const SSL_METHOD *DTLS_method(void); /* DTLS 1.0 and 1.2 */ +const SSL_METHOD *DTLS_server_method(void); /* DTLS 1.0 and 1.2 */ +const SSL_METHOD *DTLS_client_method(void); /* DTLS 1.0 and 1.2 */ + +STACK_OF(SSL_CIPHER) *SSL_get_ciphers(const SSL *s); + +int SSL_do_handshake(SSL *s); +int SSL_renegotiate(SSL *s); +int SSL_renegotiate_abbreviated(SSL *s); +int SSL_renegotiate_pending(SSL *s); +int SSL_shutdown(SSL *s); + +const SSL_METHOD *SSL_CTX_get_ssl_method(SSL_CTX *ctx); +const SSL_METHOD *SSL_get_ssl_method(SSL *s); +int SSL_set_ssl_method(SSL *s, const SSL_METHOD *method); +const char *SSL_alert_type_string_long(int value); +const char *SSL_alert_type_string(int value); +const char *SSL_alert_desc_string_long(int value); +const char *SSL_alert_desc_string(int value); + +void SSL_set_client_CA_list(SSL *s, STACK_OF(X509_NAME) *name_list); +void SSL_CTX_set_client_CA_list(SSL_CTX *ctx, STACK_OF(X509_NAME) *name_list); +STACK_OF(X509_NAME) *SSL_get_client_CA_list(const SSL *s); +STACK_OF(X509_NAME) *SSL_CTX_get_client_CA_list(const SSL_CTX *s); +int SSL_add_client_CA(SSL *ssl, X509 *x); +int SSL_CTX_add_client_CA(SSL_CTX *ctx, X509 *x); + +void SSL_set_connect_state(SSL *s); +void SSL_set_accept_state(SSL *s); + +long SSL_get_default_timeout(const SSL *s); + +int SSL_library_init(void); + +char *SSL_CIPHER_description(const SSL_CIPHER *, char *buf, int size); +STACK_OF(X509_NAME) *SSL_dup_CA_list(STACK_OF(X509_NAME) *sk); + +SSL *SSL_dup(SSL *ssl); + +X509 *SSL_get_certificate(const SSL *ssl); +/* + * EVP_PKEY + */ struct evp_pkey_st *SSL_get_privatekey(const SSL *ssl); + +X509 *SSL_CTX_get0_certificate(const SSL_CTX *ctx); +EVP_PKEY *SSL_CTX_get0_privatekey(const SSL_CTX *ctx); + +void SSL_CTX_set_quiet_shutdown(SSL_CTX *ctx, int mode); +int SSL_CTX_get_quiet_shutdown(const SSL_CTX *ctx); +void SSL_set_quiet_shutdown(SSL *ssl, int mode); +int SSL_get_quiet_shutdown(const SSL *ssl); +void SSL_set_shutdown(SSL *ssl, int mode); +int SSL_get_shutdown(const SSL *ssl); +int SSL_version(const SSL *ssl); +int SSL_CTX_set_default_verify_paths(SSL_CTX *ctx); +int SSL_CTX_load_verify_locations(SSL_CTX *ctx, const char *CAfile, + const char *CApath); +# define SSL_get0_session SSL_get_session/* just peek at pointer */ +SSL_SESSION *SSL_get_session(const SSL *ssl); +SSL_SESSION *SSL_get1_session(SSL *ssl); /* obtain a reference count */ +SSL_CTX *SSL_get_SSL_CTX(const SSL *ssl); +SSL_CTX *SSL_set_SSL_CTX(SSL *ssl, SSL_CTX *ctx); +void SSL_set_info_callback(SSL *ssl, + void (*cb) (const SSL *ssl, int type, int val)); +void (*SSL_get_info_callback(const SSL *ssl)) (const SSL *ssl, int type, + int val); +int SSL_state(const SSL *ssl); +void SSL_set_state(SSL *ssl, int state); + +void SSL_set_verify_result(SSL *ssl, long v); +long SSL_get_verify_result(const SSL *ssl); + +int SSL_set_ex_data(SSL *ssl, int idx, void *data); +void *SSL_get_ex_data(const SSL *ssl, int idx); +int SSL_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new *new_func, + CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func); + +int SSL_SESSION_set_ex_data(SSL_SESSION *ss, int idx, void *data); +void *SSL_SESSION_get_ex_data(const SSL_SESSION *ss, int idx); +int SSL_SESSION_get_ex_new_index(long argl, void *argp, + CRYPTO_EX_new *new_func, + CRYPTO_EX_dup *dup_func, + CRYPTO_EX_free *free_func); + +int SSL_CTX_set_ex_data(SSL_CTX *ssl, int idx, void *data); +void *SSL_CTX_get_ex_data(const SSL_CTX *ssl, int idx); +int SSL_CTX_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new *new_func, + CRYPTO_EX_dup *dup_func, + CRYPTO_EX_free *free_func); + +int SSL_get_ex_data_X509_STORE_CTX_idx(void); + +# define SSL_CTX_sess_set_cache_size(ctx,t) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_SESS_CACHE_SIZE,t,NULL) +# define SSL_CTX_sess_get_cache_size(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_GET_SESS_CACHE_SIZE,0,NULL) +# define SSL_CTX_set_session_cache_mode(ctx,m) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_SESS_CACHE_MODE,m,NULL) +# define SSL_CTX_get_session_cache_mode(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_GET_SESS_CACHE_MODE,0,NULL) + +# define SSL_CTX_get_default_read_ahead(ctx) SSL_CTX_get_read_ahead(ctx) +# define SSL_CTX_set_default_read_ahead(ctx,m) SSL_CTX_set_read_ahead(ctx,m) +# define SSL_CTX_get_read_ahead(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_GET_READ_AHEAD,0,NULL) +# define SSL_CTX_set_read_ahead(ctx,m) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_READ_AHEAD,m,NULL) +# define SSL_CTX_get_max_cert_list(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_GET_MAX_CERT_LIST,0,NULL) +# define SSL_CTX_set_max_cert_list(ctx,m) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_MAX_CERT_LIST,m,NULL) +# define SSL_get_max_cert_list(ssl) \ + SSL_ctrl(ssl,SSL_CTRL_GET_MAX_CERT_LIST,0,NULL) +# define SSL_set_max_cert_list(ssl,m) \ + SSL_ctrl(ssl,SSL_CTRL_SET_MAX_CERT_LIST,m,NULL) + +# define SSL_CTX_set_max_send_fragment(ctx,m) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_MAX_SEND_FRAGMENT,m,NULL) +# define SSL_set_max_send_fragment(ssl,m) \ + SSL_ctrl(ssl,SSL_CTRL_SET_MAX_SEND_FRAGMENT,m,NULL) + + /* NB: the keylength is only applicable when is_export is true */ +# ifndef OPENSSL_NO_RSA +void SSL_CTX_set_tmp_rsa_callback(SSL_CTX *ctx, + RSA *(*cb) (SSL *ssl, int is_export, + int keylength)); + +void SSL_set_tmp_rsa_callback(SSL *ssl, + RSA *(*cb) (SSL *ssl, int is_export, + int keylength)); +# endif +# ifndef OPENSSL_NO_DH +void SSL_CTX_set_tmp_dh_callback(SSL_CTX *ctx, + DH *(*dh) (SSL *ssl, int is_export, + int keylength)); +void SSL_set_tmp_dh_callback(SSL *ssl, + DH *(*dh) (SSL *ssl, int is_export, + int keylength)); +# endif +# ifndef OPENSSL_NO_ECDH +void SSL_CTX_set_tmp_ecdh_callback(SSL_CTX *ctx, + EC_KEY *(*ecdh) (SSL *ssl, int is_export, + int keylength)); +void SSL_set_tmp_ecdh_callback(SSL *ssl, + EC_KEY *(*ecdh) (SSL *ssl, int is_export, + int keylength)); +# endif + +# ifndef OPENSSL_NO_COMP +const COMP_METHOD *SSL_get_current_compression(SSL *s); +const COMP_METHOD *SSL_get_current_expansion(SSL *s); +const char *SSL_COMP_get_name(const COMP_METHOD *comp); +STACK_OF(SSL_COMP) *SSL_COMP_get_compression_methods(void); +STACK_OF(SSL_COMP) *SSL_COMP_set0_compression_methods(STACK_OF(SSL_COMP) + *meths); +void SSL_COMP_free_compression_methods(void); +int SSL_COMP_add_compression_method(int id, COMP_METHOD *cm); +# else +const void *SSL_get_current_compression(SSL *s); +const void *SSL_get_current_expansion(SSL *s); +const char *SSL_COMP_get_name(const void *comp); +void *SSL_COMP_get_compression_methods(void); +int SSL_COMP_add_compression_method(int id, void *cm); +# endif + +const SSL_CIPHER *SSL_CIPHER_find(SSL *ssl, const unsigned char *ptr); + +/* TLS extensions functions */ +int SSL_set_session_ticket_ext(SSL *s, void *ext_data, int ext_len); + +int SSL_set_session_ticket_ext_cb(SSL *s, tls_session_ticket_ext_cb_fn cb, + void *arg); + +/* Pre-shared secret session resumption functions */ +int SSL_set_session_secret_cb(SSL *s, + tls_session_secret_cb_fn tls_session_secret_cb, + void *arg); + +void SSL_set_debug(SSL *s, int debug); +int SSL_cache_hit(SSL *s); +int SSL_is_server(SSL *s); + +SSL_CONF_CTX *SSL_CONF_CTX_new(void); +int SSL_CONF_CTX_finish(SSL_CONF_CTX *cctx); +void SSL_CONF_CTX_free(SSL_CONF_CTX *cctx); +unsigned int SSL_CONF_CTX_set_flags(SSL_CONF_CTX *cctx, unsigned int flags); +unsigned int SSL_CONF_CTX_clear_flags(SSL_CONF_CTX *cctx, unsigned int flags); +int SSL_CONF_CTX_set1_prefix(SSL_CONF_CTX *cctx, const char *pre); + +void SSL_CONF_CTX_set_ssl(SSL_CONF_CTX *cctx, SSL *ssl); +void SSL_CONF_CTX_set_ssl_ctx(SSL_CONF_CTX *cctx, SSL_CTX *ctx); + +int SSL_CONF_cmd(SSL_CONF_CTX *cctx, const char *cmd, const char *value); +int SSL_CONF_cmd_argv(SSL_CONF_CTX *cctx, int *pargc, char ***pargv); +int SSL_CONF_cmd_value_type(SSL_CONF_CTX *cctx, const char *cmd); + +# ifndef OPENSSL_NO_SSL_TRACE +void SSL_trace(int write_p, int version, int content_type, + const void *buf, size_t len, SSL *ssl, void *arg); +const char *SSL_CIPHER_standard_name(const SSL_CIPHER *c); +# endif + +# ifndef OPENSSL_NO_UNIT_TEST +const struct openssl_ssl_test_functions *SSL_test_functions(void); +# endif + +/* BEGIN ERROR CODES */ +/* + * The following lines are auto generated by the script mkerr.pl. Any changes + * made after this point may be overwritten when the script is next run. + */ +void ERR_load_SSL_strings(void); + +/* Error codes for the SSL functions. */ + +/* Function codes. */ +# define SSL_F_CHECK_SUITEB_CIPHER_LIST 331 +# define SSL_F_CLIENT_CERTIFICATE 100 +# define SSL_F_CLIENT_FINISHED 167 +# define SSL_F_CLIENT_HELLO 101 +# define SSL_F_CLIENT_MASTER_KEY 102 +# define SSL_F_D2I_SSL_SESSION 103 +# define SSL_F_DO_DTLS1_WRITE 245 +# define SSL_F_DO_SSL3_WRITE 104 +# define SSL_F_DTLS1_ACCEPT 246 +# define SSL_F_DTLS1_ADD_CERT_TO_BUF 295 +# define SSL_F_DTLS1_BUFFER_RECORD 247 +# define SSL_F_DTLS1_CHECK_TIMEOUT_NUM 316 +# define SSL_F_DTLS1_CLIENT_HELLO 248 +# define SSL_F_DTLS1_CONNECT 249 +# define SSL_F_DTLS1_ENC 250 +# define SSL_F_DTLS1_GET_HELLO_VERIFY 251 +# define SSL_F_DTLS1_GET_MESSAGE 252 +# define SSL_F_DTLS1_GET_MESSAGE_FRAGMENT 253 +# define SSL_F_DTLS1_GET_RECORD 254 +# define SSL_F_DTLS1_HANDLE_TIMEOUT 297 +# define SSL_F_DTLS1_HEARTBEAT 305 +# define SSL_F_DTLS1_OUTPUT_CERT_CHAIN 255 +# define SSL_F_DTLS1_PREPROCESS_FRAGMENT 288 +# define SSL_F_DTLS1_PROCESS_OUT_OF_SEQ_MESSAGE 256 +# define SSL_F_DTLS1_PROCESS_RECORD 257 +# define SSL_F_DTLS1_READ_BYTES 258 +# define SSL_F_DTLS1_READ_FAILED 259 +# define SSL_F_DTLS1_SEND_CERTIFICATE_REQUEST 260 +# define SSL_F_DTLS1_SEND_CLIENT_CERTIFICATE 261 +# define SSL_F_DTLS1_SEND_CLIENT_KEY_EXCHANGE 262 +# define SSL_F_DTLS1_SEND_CLIENT_VERIFY 263 +# define SSL_F_DTLS1_SEND_HELLO_VERIFY_REQUEST 264 +# define SSL_F_DTLS1_SEND_SERVER_CERTIFICATE 265 +# define SSL_F_DTLS1_SEND_SERVER_HELLO 266 +# define SSL_F_DTLS1_SEND_SERVER_KEY_EXCHANGE 267 +# define SSL_F_DTLS1_WRITE_APP_DATA_BYTES 268 +# define SSL_F_GET_CLIENT_FINISHED 105 +# define SSL_F_GET_CLIENT_HELLO 106 +# define SSL_F_GET_CLIENT_MASTER_KEY 107 +# define SSL_F_GET_SERVER_FINISHED 108 +# define SSL_F_GET_SERVER_HELLO 109 +# define SSL_F_GET_SERVER_VERIFY 110 +# define SSL_F_I2D_SSL_SESSION 111 +# define SSL_F_READ_N 112 +# define SSL_F_REQUEST_CERTIFICATE 113 +# define SSL_F_SERVER_FINISH 239 +# define SSL_F_SERVER_HELLO 114 +# define SSL_F_SERVER_VERIFY 240 +# define SSL_F_SSL23_ACCEPT 115 +# define SSL_F_SSL23_CLIENT_HELLO 116 +# define SSL_F_SSL23_CONNECT 117 +# define SSL_F_SSL23_GET_CLIENT_HELLO 118 +# define SSL_F_SSL23_GET_SERVER_HELLO 119 +# define SSL_F_SSL23_PEEK 237 +# define SSL_F_SSL23_READ 120 +# define SSL_F_SSL23_WRITE 121 +# define SSL_F_SSL2_ACCEPT 122 +# define SSL_F_SSL2_CONNECT 123 +# define SSL_F_SSL2_ENC_INIT 124 +# define SSL_F_SSL2_GENERATE_KEY_MATERIAL 241 +# define SSL_F_SSL2_PEEK 234 +# define SSL_F_SSL2_READ 125 +# define SSL_F_SSL2_READ_INTERNAL 236 +# define SSL_F_SSL2_SET_CERTIFICATE 126 +# define SSL_F_SSL2_WRITE 127 +# define SSL_F_SSL3_ACCEPT 128 +# define SSL_F_SSL3_ADD_CERT_TO_BUF 296 +# define SSL_F_SSL3_CALLBACK_CTRL 233 +# define SSL_F_SSL3_CHANGE_CIPHER_STATE 129 +# define SSL_F_SSL3_CHECK_CERT_AND_ALGORITHM 130 +# define SSL_F_SSL3_CHECK_CLIENT_HELLO 304 +# define SSL_F_SSL3_CLIENT_HELLO 131 +# define SSL_F_SSL3_CONNECT 132 +# define SSL_F_SSL3_CTRL 213 +# define SSL_F_SSL3_CTX_CTRL 133 +# define SSL_F_SSL3_DIGEST_CACHED_RECORDS 293 +# define SSL_F_SSL3_DO_CHANGE_CIPHER_SPEC 292 +# define SSL_F_SSL3_ENC 134 +# define SSL_F_SSL3_GENERATE_KEY_BLOCK 238 +# define SSL_F_SSL3_GET_CERTIFICATE_REQUEST 135 +# define SSL_F_SSL3_GET_CERT_STATUS 289 +# define SSL_F_SSL3_GET_CERT_VERIFY 136 +# define SSL_F_SSL3_GET_CLIENT_CERTIFICATE 137 +# define SSL_F_SSL3_GET_CLIENT_HELLO 138 +# define SSL_F_SSL3_GET_CLIENT_KEY_EXCHANGE 139 +# define SSL_F_SSL3_GET_FINISHED 140 +# define SSL_F_SSL3_GET_KEY_EXCHANGE 141 +# define SSL_F_SSL3_GET_MESSAGE 142 +# define SSL_F_SSL3_GET_NEW_SESSION_TICKET 283 +# define SSL_F_SSL3_GET_NEXT_PROTO 306 +# define SSL_F_SSL3_GET_RECORD 143 +# define SSL_F_SSL3_GET_SERVER_CERTIFICATE 144 +# define SSL_F_SSL3_GET_SERVER_DONE 145 +# define SSL_F_SSL3_GET_SERVER_HELLO 146 +# define SSL_F_SSL3_HANDSHAKE_MAC 285 +# define SSL_F_SSL3_NEW_SESSION_TICKET 287 +# define SSL_F_SSL3_OUTPUT_CERT_CHAIN 147 +# define SSL_F_SSL3_PEEK 235 +# define SSL_F_SSL3_READ_BYTES 148 +# define SSL_F_SSL3_READ_N 149 +# define SSL_F_SSL3_SEND_CERTIFICATE_REQUEST 150 +# define SSL_F_SSL3_SEND_CLIENT_CERTIFICATE 151 +# define SSL_F_SSL3_SEND_CLIENT_KEY_EXCHANGE 152 +# define SSL_F_SSL3_SEND_CLIENT_VERIFY 153 +# define SSL_F_SSL3_SEND_SERVER_CERTIFICATE 154 +# define SSL_F_SSL3_SEND_SERVER_HELLO 242 +# define SSL_F_SSL3_SEND_SERVER_KEY_EXCHANGE 155 +# define SSL_F_SSL3_SETUP_KEY_BLOCK 157 +# define SSL_F_SSL3_SETUP_READ_BUFFER 156 +# define SSL_F_SSL3_SETUP_WRITE_BUFFER 291 +# define SSL_F_SSL3_WRITE_BYTES 158 +# define SSL_F_SSL3_WRITE_PENDING 159 +# define SSL_F_SSL_ADD_CERT_CHAIN 318 +# define SSL_F_SSL_ADD_CERT_TO_BUF 319 +# define SSL_F_SSL_ADD_CLIENTHELLO_RENEGOTIATE_EXT 298 +# define SSL_F_SSL_ADD_CLIENTHELLO_TLSEXT 277 +# define SSL_F_SSL_ADD_CLIENTHELLO_USE_SRTP_EXT 307 +# define SSL_F_SSL_ADD_DIR_CERT_SUBJECTS_TO_STACK 215 +# define SSL_F_SSL_ADD_FILE_CERT_SUBJECTS_TO_STACK 216 +# define SSL_F_SSL_ADD_SERVERHELLO_RENEGOTIATE_EXT 299 +# define SSL_F_SSL_ADD_SERVERHELLO_TLSEXT 278 +# define SSL_F_SSL_ADD_SERVERHELLO_USE_SRTP_EXT 308 +# define SSL_F_SSL_BAD_METHOD 160 +# define SSL_F_SSL_BUILD_CERT_CHAIN 332 +# define SSL_F_SSL_BYTES_TO_CIPHER_LIST 161 +# define SSL_F_SSL_CERT_DUP 221 +# define SSL_F_SSL_CERT_INST 222 +# define SSL_F_SSL_CERT_INSTANTIATE 214 +# define SSL_F_SSL_CERT_NEW 162 +# define SSL_F_SSL_CHECK_PRIVATE_KEY 163 +# define SSL_F_SSL_CHECK_SERVERHELLO_TLSEXT 280 +# define SSL_F_SSL_CHECK_SRVR_ECC_CERT_AND_ALG 279 +# define SSL_F_SSL_CIPHER_PROCESS_RULESTR 230 +# define SSL_F_SSL_CIPHER_STRENGTH_SORT 231 +# define SSL_F_SSL_CLEAR 164 +# define SSL_F_SSL_COMP_ADD_COMPRESSION_METHOD 165 +# define SSL_F_SSL_CONF_CMD 334 +# define SSL_F_SSL_CREATE_CIPHER_LIST 166 +# define SSL_F_SSL_CTRL 232 +# define SSL_F_SSL_CTX_CHECK_PRIVATE_KEY 168 +# define SSL_F_SSL_CTX_MAKE_PROFILES 309 +# define SSL_F_SSL_CTX_NEW 169 +# define SSL_F_SSL_CTX_SET_CIPHER_LIST 269 +# define SSL_F_SSL_CTX_SET_CLIENT_CERT_ENGINE 290 +# define SSL_F_SSL_CTX_SET_PURPOSE 226 +# define SSL_F_SSL_CTX_SET_SESSION_ID_CONTEXT 219 +# define SSL_F_SSL_CTX_SET_SSL_VERSION 170 +# define SSL_F_SSL_CTX_SET_TRUST 229 +# define SSL_F_SSL_CTX_USE_CERTIFICATE 171 +# define SSL_F_SSL_CTX_USE_CERTIFICATE_ASN1 172 +# define SSL_F_SSL_CTX_USE_CERTIFICATE_CHAIN_FILE 220 +# define SSL_F_SSL_CTX_USE_CERTIFICATE_FILE 173 +# define SSL_F_SSL_CTX_USE_PRIVATEKEY 174 +# define SSL_F_SSL_CTX_USE_PRIVATEKEY_ASN1 175 +# define SSL_F_SSL_CTX_USE_PRIVATEKEY_FILE 176 +# define SSL_F_SSL_CTX_USE_PSK_IDENTITY_HINT 272 +# define SSL_F_SSL_CTX_USE_RSAPRIVATEKEY 177 +# define SSL_F_SSL_CTX_USE_RSAPRIVATEKEY_ASN1 178 +# define SSL_F_SSL_CTX_USE_RSAPRIVATEKEY_FILE 179 +# define SSL_F_SSL_CTX_USE_SERVERINFO 336 +# define SSL_F_SSL_CTX_USE_SERVERINFO_FILE 337 +# define SSL_F_SSL_DO_HANDSHAKE 180 +# define SSL_F_SSL_GET_NEW_SESSION 181 +# define SSL_F_SSL_GET_PREV_SESSION 217 +# define SSL_F_SSL_GET_SERVER_CERT_INDEX 322 +# define SSL_F_SSL_GET_SERVER_SEND_CERT 182 +# define SSL_F_SSL_GET_SERVER_SEND_PKEY 317 +# define SSL_F_SSL_GET_SIGN_PKEY 183 +# define SSL_F_SSL_INIT_WBIO_BUFFER 184 +# define SSL_F_SSL_LOAD_CLIENT_CA_FILE 185 +# define SSL_F_SSL_NEW 186 +# define SSL_F_SSL_PARSE_CLIENTHELLO_RENEGOTIATE_EXT 300 +# define SSL_F_SSL_PARSE_CLIENTHELLO_TLSEXT 302 +# define SSL_F_SSL_PARSE_CLIENTHELLO_USE_SRTP_EXT 310 +# define SSL_F_SSL_PARSE_SERVERHELLO_RENEGOTIATE_EXT 301 +# define SSL_F_SSL_PARSE_SERVERHELLO_TLSEXT 303 +# define SSL_F_SSL_PARSE_SERVERHELLO_USE_SRTP_EXT 311 +# define SSL_F_SSL_PEEK 270 +# define SSL_F_SSL_PREPARE_CLIENTHELLO_TLSEXT 281 +# define SSL_F_SSL_PREPARE_SERVERHELLO_TLSEXT 282 +# define SSL_F_SSL_READ 223 +# define SSL_F_SSL_RSA_PRIVATE_DECRYPT 187 +# define SSL_F_SSL_RSA_PUBLIC_ENCRYPT 188 +# define SSL_F_SSL_SCAN_CLIENTHELLO_TLSEXT 320 +# define SSL_F_SSL_SCAN_SERVERHELLO_TLSEXT 321 +# define SSL_F_SSL_SESSION_NEW 189 +# define SSL_F_SSL_SESSION_PRINT_FP 190 +# define SSL_F_SSL_SESSION_SET1_ID_CONTEXT 312 +# define SSL_F_SSL_SESS_CERT_NEW 225 +# define SSL_F_SSL_SET_CERT 191 +# define SSL_F_SSL_SET_CIPHER_LIST 271 +# define SSL_F_SSL_SET_FD 192 +# define SSL_F_SSL_SET_PKEY 193 +# define SSL_F_SSL_SET_PURPOSE 227 +# define SSL_F_SSL_SET_RFD 194 +# define SSL_F_SSL_SET_SESSION 195 +# define SSL_F_SSL_SET_SESSION_ID_CONTEXT 218 +# define SSL_F_SSL_SET_SESSION_TICKET_EXT 294 +# define SSL_F_SSL_SET_TRUST 228 +# define SSL_F_SSL_SET_WFD 196 +# define SSL_F_SSL_SHUTDOWN 224 +# define SSL_F_SSL_SRP_CTX_INIT 313 +# define SSL_F_SSL_UNDEFINED_CONST_FUNCTION 243 +# define SSL_F_SSL_UNDEFINED_FUNCTION 197 +# define SSL_F_SSL_UNDEFINED_VOID_FUNCTION 244 +# define SSL_F_SSL_USE_CERTIFICATE 198 +# define SSL_F_SSL_USE_CERTIFICATE_ASN1 199 +# define SSL_F_SSL_USE_CERTIFICATE_FILE 200 +# define SSL_F_SSL_USE_PRIVATEKEY 201 +# define SSL_F_SSL_USE_PRIVATEKEY_ASN1 202 +# define SSL_F_SSL_USE_PRIVATEKEY_FILE 203 +# define SSL_F_SSL_USE_PSK_IDENTITY_HINT 273 +# define SSL_F_SSL_USE_RSAPRIVATEKEY 204 +# define SSL_F_SSL_USE_RSAPRIVATEKEY_ASN1 205 +# define SSL_F_SSL_USE_RSAPRIVATEKEY_FILE 206 +# define SSL_F_SSL_VERIFY_CERT_CHAIN 207 +# define SSL_F_SSL_WRITE 208 +# define SSL_F_TLS12_CHECK_PEER_SIGALG 333 +# define SSL_F_TLS1_CERT_VERIFY_MAC 286 +# define SSL_F_TLS1_CHANGE_CIPHER_STATE 209 +# define SSL_F_TLS1_CHECK_SERVERHELLO_TLSEXT 274 +# define SSL_F_TLS1_ENC 210 +# define SSL_F_TLS1_EXPORT_KEYING_MATERIAL 314 +# define SSL_F_TLS1_GET_CURVELIST 338 +# define SSL_F_TLS1_HEARTBEAT 315 +# define SSL_F_TLS1_PREPARE_CLIENTHELLO_TLSEXT 275 +# define SSL_F_TLS1_PREPARE_SERVERHELLO_TLSEXT 276 +# define SSL_F_TLS1_PRF 284 +# define SSL_F_TLS1_SETUP_KEY_BLOCK 211 +# define SSL_F_TLS1_SET_SERVER_SIGALGS 335 +# define SSL_F_WRITE_PENDING 212 + +/* Reason codes. */ +# define SSL_R_APP_DATA_IN_HANDSHAKE 100 +# define SSL_R_ATTEMPT_TO_REUSE_SESSION_IN_DIFFERENT_CONTEXT 272 +# define SSL_R_BAD_ALERT_RECORD 101 +# define SSL_R_BAD_AUTHENTICATION_TYPE 102 +# define SSL_R_BAD_CHANGE_CIPHER_SPEC 103 +# define SSL_R_BAD_CHECKSUM 104 +# define SSL_R_BAD_DATA 390 +# define SSL_R_BAD_DATA_RETURNED_BY_CALLBACK 106 +# define SSL_R_BAD_DECOMPRESSION 107 +# define SSL_R_BAD_DH_G_LENGTH 108 +# define SSL_R_BAD_DH_PUB_KEY_LENGTH 109 +# define SSL_R_BAD_DH_P_LENGTH 110 +# define SSL_R_BAD_DIGEST_LENGTH 111 +# define SSL_R_BAD_DSA_SIGNATURE 112 +# define SSL_R_BAD_ECC_CERT 304 +# define SSL_R_BAD_ECDSA_SIGNATURE 305 +# define SSL_R_BAD_ECPOINT 306 +# define SSL_R_BAD_HANDSHAKE_LENGTH 332 +# define SSL_R_BAD_HELLO_REQUEST 105 +# define SSL_R_BAD_LENGTH 271 +# define SSL_R_BAD_MAC_DECODE 113 +# define SSL_R_BAD_MAC_LENGTH 333 +# define SSL_R_BAD_MESSAGE_TYPE 114 +# define SSL_R_BAD_PACKET_LENGTH 115 +# define SSL_R_BAD_PROTOCOL_VERSION_NUMBER 116 +# define SSL_R_BAD_PSK_IDENTITY_HINT_LENGTH 316 +# define SSL_R_BAD_RESPONSE_ARGUMENT 117 +# define SSL_R_BAD_RSA_DECRYPT 118 +# define SSL_R_BAD_RSA_ENCRYPT 119 +# define SSL_R_BAD_RSA_E_LENGTH 120 +# define SSL_R_BAD_RSA_MODULUS_LENGTH 121 +# define SSL_R_BAD_RSA_SIGNATURE 122 +# define SSL_R_BAD_SIGNATURE 123 +# define SSL_R_BAD_SRP_A_LENGTH 347 +# define SSL_R_BAD_SRP_B_LENGTH 348 +# define SSL_R_BAD_SRP_G_LENGTH 349 +# define SSL_R_BAD_SRP_N_LENGTH 350 +# define SSL_R_BAD_SRP_PARAMETERS 371 +# define SSL_R_BAD_SRP_S_LENGTH 351 +# define SSL_R_BAD_SRTP_MKI_VALUE 352 +# define SSL_R_BAD_SRTP_PROTECTION_PROFILE_LIST 353 +# define SSL_R_BAD_SSL_FILETYPE 124 +# define SSL_R_BAD_SSL_SESSION_ID_LENGTH 125 +# define SSL_R_BAD_STATE 126 +# define SSL_R_BAD_VALUE 384 +# define SSL_R_BAD_WRITE_RETRY 127 +# define SSL_R_BIO_NOT_SET 128 +# define SSL_R_BLOCK_CIPHER_PAD_IS_WRONG 129 +# define SSL_R_BN_LIB 130 +# define SSL_R_CA_DN_LENGTH_MISMATCH 131 +# define SSL_R_CA_DN_TOO_LONG 132 +# define SSL_R_CCS_RECEIVED_EARLY 133 +# define SSL_R_CERTIFICATE_VERIFY_FAILED 134 +# define SSL_R_CERT_CB_ERROR 377 +# define SSL_R_CERT_LENGTH_MISMATCH 135 +# define SSL_R_CHALLENGE_IS_DIFFERENT 136 +# define SSL_R_CIPHER_CODE_WRONG_LENGTH 137 +# define SSL_R_CIPHER_OR_HASH_UNAVAILABLE 138 +# define SSL_R_CIPHER_TABLE_SRC_ERROR 139 +# define SSL_R_CLIENTHELLO_TLSEXT 226 +# define SSL_R_COMPRESSED_LENGTH_TOO_LONG 140 +# define SSL_R_COMPRESSION_DISABLED 343 +# define SSL_R_COMPRESSION_FAILURE 141 +# define SSL_R_COMPRESSION_ID_NOT_WITHIN_PRIVATE_RANGE 307 +# define SSL_R_COMPRESSION_LIBRARY_ERROR 142 +# define SSL_R_CONNECTION_ID_IS_DIFFERENT 143 +# define SSL_R_CONNECTION_TYPE_NOT_SET 144 +# define SSL_R_COOKIE_MISMATCH 308 +# define SSL_R_DATA_BETWEEN_CCS_AND_FINISHED 145 +# define SSL_R_DATA_LENGTH_TOO_LONG 146 +# define SSL_R_DECRYPTION_FAILED 147 +# define SSL_R_DECRYPTION_FAILED_OR_BAD_RECORD_MAC 281 +# define SSL_R_DH_PUBLIC_VALUE_LENGTH_IS_WRONG 148 +# define SSL_R_DIGEST_CHECK_FAILED 149 +# define SSL_R_DTLS_MESSAGE_TOO_BIG 334 +# define SSL_R_DUPLICATE_COMPRESSION_ID 309 +# define SSL_R_ECC_CERT_NOT_FOR_KEY_AGREEMENT 317 +# define SSL_R_ECC_CERT_NOT_FOR_SIGNING 318 +# define SSL_R_ECC_CERT_SHOULD_HAVE_RSA_SIGNATURE 322 +# define SSL_R_ECC_CERT_SHOULD_HAVE_SHA1_SIGNATURE 323 +# define SSL_R_ECDH_REQUIRED_FOR_SUITEB_MODE 374 +# define SSL_R_ECGROUP_TOO_LARGE_FOR_CIPHER 310 +# define SSL_R_EMPTY_SRTP_PROTECTION_PROFILE_LIST 354 +# define SSL_R_ENCRYPTED_LENGTH_TOO_LONG 150 +# define SSL_R_ERROR_GENERATING_TMP_RSA_KEY 282 +# define SSL_R_ERROR_IN_RECEIVED_CIPHER_LIST 151 +# define SSL_R_EXCESSIVE_MESSAGE_SIZE 152 +# define SSL_R_EXTRA_DATA_IN_MESSAGE 153 +# define SSL_R_GOT_A_FIN_BEFORE_A_CCS 154 +# define SSL_R_GOT_NEXT_PROTO_BEFORE_A_CCS 355 +# define SSL_R_GOT_NEXT_PROTO_WITHOUT_EXTENSION 356 +# define SSL_R_HTTPS_PROXY_REQUEST 155 +# define SSL_R_HTTP_REQUEST 156 +# define SSL_R_ILLEGAL_PADDING 283 +# define SSL_R_ILLEGAL_SUITEB_DIGEST 380 +# define SSL_R_INAPPROPRIATE_FALLBACK 373 +# define SSL_R_INCONSISTENT_COMPRESSION 340 +# define SSL_R_INVALID_CHALLENGE_LENGTH 158 +# define SSL_R_INVALID_COMMAND 280 +# define SSL_R_INVALID_COMPRESSION_ALGORITHM 341 +# define SSL_R_INVALID_NULL_CMD_NAME 385 +# define SSL_R_INVALID_PURPOSE 278 +# define SSL_R_INVALID_SERVERINFO_DATA 388 +# define SSL_R_INVALID_SRP_USERNAME 357 +# define SSL_R_INVALID_STATUS_RESPONSE 328 +# define SSL_R_INVALID_TICKET_KEYS_LENGTH 325 +# define SSL_R_INVALID_TRUST 279 +# define SSL_R_KEY_ARG_TOO_LONG 284 +# define SSL_R_KRB5 285 +# define SSL_R_KRB5_C_CC_PRINC 286 +# define SSL_R_KRB5_C_GET_CRED 287 +# define SSL_R_KRB5_C_INIT 288 +# define SSL_R_KRB5_C_MK_REQ 289 +# define SSL_R_KRB5_S_BAD_TICKET 290 +# define SSL_R_KRB5_S_INIT 291 +# define SSL_R_KRB5_S_RD_REQ 292 +# define SSL_R_KRB5_S_TKT_EXPIRED 293 +# define SSL_R_KRB5_S_TKT_NYV 294 +# define SSL_R_KRB5_S_TKT_SKEW 295 +# define SSL_R_LENGTH_MISMATCH 159 +# define SSL_R_LENGTH_TOO_SHORT 160 +# define SSL_R_LIBRARY_BUG 274 +# define SSL_R_LIBRARY_HAS_NO_CIPHERS 161 +# define SSL_R_MESSAGE_TOO_LONG 296 +# define SSL_R_MISSING_DH_DSA_CERT 162 +# define SSL_R_MISSING_DH_KEY 163 +# define SSL_R_MISSING_DH_RSA_CERT 164 +# define SSL_R_MISSING_DSA_SIGNING_CERT 165 +# define SSL_R_MISSING_ECDH_CERT 382 +# define SSL_R_MISSING_ECDSA_SIGNING_CERT 381 +# define SSL_R_MISSING_EXPORT_TMP_DH_KEY 166 +# define SSL_R_MISSING_EXPORT_TMP_RSA_KEY 167 +# define SSL_R_MISSING_RSA_CERTIFICATE 168 +# define SSL_R_MISSING_RSA_ENCRYPTING_CERT 169 +# define SSL_R_MISSING_RSA_SIGNING_CERT 170 +# define SSL_R_MISSING_SRP_PARAM 358 +# define SSL_R_MISSING_TMP_DH_KEY 171 +# define SSL_R_MISSING_TMP_ECDH_KEY 311 +# define SSL_R_MISSING_TMP_RSA_KEY 172 +# define SSL_R_MISSING_TMP_RSA_PKEY 173 +# define SSL_R_MISSING_VERIFY_MESSAGE 174 +# define SSL_R_MULTIPLE_SGC_RESTARTS 346 +# define SSL_R_NON_SSLV2_INITIAL_PACKET 175 +# define SSL_R_NO_CERTIFICATES_RETURNED 176 +# define SSL_R_NO_CERTIFICATE_ASSIGNED 177 +# define SSL_R_NO_CERTIFICATE_RETURNED 178 +# define SSL_R_NO_CERTIFICATE_SET 179 +# define SSL_R_NO_CERTIFICATE_SPECIFIED 180 +# define SSL_R_NO_CIPHERS_AVAILABLE 181 +# define SSL_R_NO_CIPHERS_PASSED 182 +# define SSL_R_NO_CIPHERS_SPECIFIED 183 +# define SSL_R_NO_CIPHER_LIST 184 +# define SSL_R_NO_CIPHER_MATCH 185 +# define SSL_R_NO_CLIENT_CERT_METHOD 331 +# define SSL_R_NO_CLIENT_CERT_RECEIVED 186 +# define SSL_R_NO_COMPRESSION_SPECIFIED 187 +# define SSL_R_NO_GOST_CERTIFICATE_SENT_BY_PEER 330 +# define SSL_R_NO_METHOD_SPECIFIED 188 +# define SSL_R_NO_PEM_EXTENSIONS 389 +# define SSL_R_NO_PRIVATEKEY 189 +# define SSL_R_NO_PRIVATE_KEY_ASSIGNED 190 +# define SSL_R_NO_PROTOCOLS_AVAILABLE 191 +# define SSL_R_NO_PUBLICKEY 192 +# define SSL_R_NO_RENEGOTIATION 339 +# define SSL_R_NO_REQUIRED_DIGEST 324 +# define SSL_R_NO_SHARED_CIPHER 193 +# define SSL_R_NO_SHARED_SIGATURE_ALGORITHMS 376 +# define SSL_R_NO_SRTP_PROFILES 359 +# define SSL_R_NO_VERIFY_CALLBACK 194 +# define SSL_R_NULL_SSL_CTX 195 +# define SSL_R_NULL_SSL_METHOD_PASSED 196 +# define SSL_R_OLD_SESSION_CIPHER_NOT_RETURNED 197 +# define SSL_R_OLD_SESSION_COMPRESSION_ALGORITHM_NOT_RETURNED 344 +# define SSL_R_ONLY_DTLS_1_2_ALLOWED_IN_SUITEB_MODE 387 +# define SSL_R_ONLY_TLS_1_2_ALLOWED_IN_SUITEB_MODE 379 +# define SSL_R_ONLY_TLS_ALLOWED_IN_FIPS_MODE 297 +# define SSL_R_OPAQUE_PRF_INPUT_TOO_LONG 327 +# define SSL_R_PACKET_LENGTH_TOO_LONG 198 +# define SSL_R_PARSE_TLSEXT 227 +# define SSL_R_PATH_TOO_LONG 270 +# define SSL_R_PEER_DID_NOT_RETURN_A_CERTIFICATE 199 +# define SSL_R_PEER_ERROR 200 +# define SSL_R_PEER_ERROR_CERTIFICATE 201 +# define SSL_R_PEER_ERROR_NO_CERTIFICATE 202 +# define SSL_R_PEER_ERROR_NO_CIPHER 203 +# define SSL_R_PEER_ERROR_UNSUPPORTED_CERTIFICATE_TYPE 204 +# define SSL_R_PEM_NAME_BAD_PREFIX 391 +# define SSL_R_PEM_NAME_TOO_SHORT 392 +# define SSL_R_PRE_MAC_LENGTH_TOO_LONG 205 +# define SSL_R_PROBLEMS_MAPPING_CIPHER_FUNCTIONS 206 +# define SSL_R_PROTOCOL_IS_SHUTDOWN 207 +# define SSL_R_PSK_IDENTITY_NOT_FOUND 223 +# define SSL_R_PSK_NO_CLIENT_CB 224 +# define SSL_R_PSK_NO_SERVER_CB 225 +# define SSL_R_PUBLIC_KEY_ENCRYPT_ERROR 208 +# define SSL_R_PUBLIC_KEY_IS_NOT_RSA 209 +# define SSL_R_PUBLIC_KEY_NOT_RSA 210 +# define SSL_R_READ_BIO_NOT_SET 211 +# define SSL_R_READ_TIMEOUT_EXPIRED 312 +# define SSL_R_READ_WRONG_PACKET_TYPE 212 +# define SSL_R_RECORD_LENGTH_MISMATCH 213 +# define SSL_R_RECORD_TOO_LARGE 214 +# define SSL_R_RECORD_TOO_SMALL 298 +# define SSL_R_RENEGOTIATE_EXT_TOO_LONG 335 +# define SSL_R_RENEGOTIATION_ENCODING_ERR 336 +# define SSL_R_RENEGOTIATION_MISMATCH 337 +# define SSL_R_REQUIRED_CIPHER_MISSING 215 +# define SSL_R_REQUIRED_COMPRESSSION_ALGORITHM_MISSING 342 +# define SSL_R_REUSE_CERT_LENGTH_NOT_ZERO 216 +# define SSL_R_REUSE_CERT_TYPE_NOT_ZERO 217 +# define SSL_R_REUSE_CIPHER_LIST_NOT_ZERO 218 +# define SSL_R_SCSV_RECEIVED_WHEN_RENEGOTIATING 345 +# define SSL_R_SERVERHELLO_TLSEXT 275 +# define SSL_R_SESSION_ID_CONTEXT_UNINITIALIZED 277 +# define SSL_R_SHORT_READ 219 +# define SSL_R_SIGNATURE_ALGORITHMS_ERROR 360 +# define SSL_R_SIGNATURE_FOR_NON_SIGNING_CERTIFICATE 220 +# define SSL_R_SRP_A_CALC 361 +# define SSL_R_SRTP_COULD_NOT_ALLOCATE_PROFILES 362 +# define SSL_R_SRTP_PROTECTION_PROFILE_LIST_TOO_LONG 363 +# define SSL_R_SRTP_UNKNOWN_PROTECTION_PROFILE 364 +# define SSL_R_SSL23_DOING_SESSION_ID_REUSE 221 +# define SSL_R_SSL2_CONNECTION_ID_TOO_LONG 299 +# define SSL_R_SSL3_EXT_INVALID_ECPOINTFORMAT 321 +# define SSL_R_SSL3_EXT_INVALID_SERVERNAME 319 +# define SSL_R_SSL3_EXT_INVALID_SERVERNAME_TYPE 320 +# define SSL_R_SSL3_SESSION_ID_TOO_LONG 300 +# define SSL_R_SSL3_SESSION_ID_TOO_SHORT 222 +# define SSL_R_SSLV3_ALERT_BAD_CERTIFICATE 1042 +# define SSL_R_SSLV3_ALERT_BAD_RECORD_MAC 1020 +# define SSL_R_SSLV3_ALERT_CERTIFICATE_EXPIRED 1045 +# define SSL_R_SSLV3_ALERT_CERTIFICATE_REVOKED 1044 +# define SSL_R_SSLV3_ALERT_CERTIFICATE_UNKNOWN 1046 +# define SSL_R_SSLV3_ALERT_DECOMPRESSION_FAILURE 1030 +# define SSL_R_SSLV3_ALERT_HANDSHAKE_FAILURE 1040 +# define SSL_R_SSLV3_ALERT_ILLEGAL_PARAMETER 1047 +# define SSL_R_SSLV3_ALERT_NO_CERTIFICATE 1041 +# define SSL_R_SSLV3_ALERT_UNEXPECTED_MESSAGE 1010 +# define SSL_R_SSLV3_ALERT_UNSUPPORTED_CERTIFICATE 1043 +# define SSL_R_SSL_CTX_HAS_NO_DEFAULT_SSL_VERSION 228 +# define SSL_R_SSL_HANDSHAKE_FAILURE 229 +# define SSL_R_SSL_LIBRARY_HAS_NO_CIPHERS 230 +# define SSL_R_SSL_SESSION_ID_CALLBACK_FAILED 301 +# define SSL_R_SSL_SESSION_ID_CONFLICT 302 +# define SSL_R_SSL_SESSION_ID_CONTEXT_TOO_LONG 273 +# define SSL_R_SSL_SESSION_ID_HAS_BAD_LENGTH 303 +# define SSL_R_SSL_SESSION_ID_IS_DIFFERENT 231 +# define SSL_R_TLSV1_ALERT_ACCESS_DENIED 1049 +# define SSL_R_TLSV1_ALERT_DECODE_ERROR 1050 +# define SSL_R_TLSV1_ALERT_DECRYPTION_FAILED 1021 +# define SSL_R_TLSV1_ALERT_DECRYPT_ERROR 1051 +# define SSL_R_TLSV1_ALERT_EXPORT_RESTRICTION 1060 +# define SSL_R_TLSV1_ALERT_INAPPROPRIATE_FALLBACK 1086 +# define SSL_R_TLSV1_ALERT_INSUFFICIENT_SECURITY 1071 +# define SSL_R_TLSV1_ALERT_INTERNAL_ERROR 1080 +# define SSL_R_TLSV1_ALERT_NO_RENEGOTIATION 1100 +# define SSL_R_TLSV1_ALERT_PROTOCOL_VERSION 1070 +# define SSL_R_TLSV1_ALERT_RECORD_OVERFLOW 1022 +# define SSL_R_TLSV1_ALERT_UNKNOWN_CA 1048 +# define SSL_R_TLSV1_ALERT_USER_CANCELLED 1090 +# define SSL_R_TLSV1_BAD_CERTIFICATE_HASH_VALUE 1114 +# define SSL_R_TLSV1_BAD_CERTIFICATE_STATUS_RESPONSE 1113 +# define SSL_R_TLSV1_CERTIFICATE_UNOBTAINABLE 1111 +# define SSL_R_TLSV1_UNRECOGNIZED_NAME 1112 +# define SSL_R_TLSV1_UNSUPPORTED_EXTENSION 1110 +# define SSL_R_TLS_CLIENT_CERT_REQ_WITH_ANON_CIPHER 232 +# define SSL_R_TLS_HEARTBEAT_PEER_DOESNT_ACCEPT 365 +# define SSL_R_TLS_HEARTBEAT_PENDING 366 +# define SSL_R_TLS_ILLEGAL_EXPORTER_LABEL 367 +# define SSL_R_TLS_INVALID_ECPOINTFORMAT_LIST 157 +# define SSL_R_TLS_PEER_DID_NOT_RESPOND_WITH_CERTIFICATE_LIST 233 +# define SSL_R_TLS_RSA_ENCRYPTED_VALUE_LENGTH_IS_WRONG 234 +# define SSL_R_TRIED_TO_USE_UNSUPPORTED_CIPHER 235 +# define SSL_R_UNABLE_TO_DECODE_DH_CERTS 236 +# define SSL_R_UNABLE_TO_DECODE_ECDH_CERTS 313 +# define SSL_R_UNABLE_TO_EXTRACT_PUBLIC_KEY 237 +# define SSL_R_UNABLE_TO_FIND_DH_PARAMETERS 238 +# define SSL_R_UNABLE_TO_FIND_ECDH_PARAMETERS 314 +# define SSL_R_UNABLE_TO_FIND_PUBLIC_KEY_PARAMETERS 239 +# define SSL_R_UNABLE_TO_FIND_SSL_METHOD 240 +# define SSL_R_UNABLE_TO_LOAD_SSL2_MD5_ROUTINES 241 +# define SSL_R_UNABLE_TO_LOAD_SSL3_MD5_ROUTINES 242 +# define SSL_R_UNABLE_TO_LOAD_SSL3_SHA1_ROUTINES 243 +# define SSL_R_UNEXPECTED_MESSAGE 244 +# define SSL_R_UNEXPECTED_RECORD 245 +# define SSL_R_UNINITIALIZED 276 +# define SSL_R_UNKNOWN_ALERT_TYPE 246 +# define SSL_R_UNKNOWN_CERTIFICATE_TYPE 247 +# define SSL_R_UNKNOWN_CIPHER_RETURNED 248 +# define SSL_R_UNKNOWN_CIPHER_TYPE 249 +# define SSL_R_UNKNOWN_CMD_NAME 386 +# define SSL_R_UNKNOWN_DIGEST 368 +# define SSL_R_UNKNOWN_KEY_EXCHANGE_TYPE 250 +# define SSL_R_UNKNOWN_PKEY_TYPE 251 +# define SSL_R_UNKNOWN_PROTOCOL 252 +# define SSL_R_UNKNOWN_REMOTE_ERROR_TYPE 253 +# define SSL_R_UNKNOWN_SSL_VERSION 254 +# define SSL_R_UNKNOWN_STATE 255 +# define SSL_R_UNSAFE_LEGACY_RENEGOTIATION_DISABLED 338 +# define SSL_R_UNSUPPORTED_CIPHER 256 +# define SSL_R_UNSUPPORTED_COMPRESSION_ALGORITHM 257 +# define SSL_R_UNSUPPORTED_DIGEST_TYPE 326 +# define SSL_R_UNSUPPORTED_ELLIPTIC_CURVE 315 +# define SSL_R_UNSUPPORTED_PROTOCOL 258 +# define SSL_R_UNSUPPORTED_SSL_VERSION 259 +# define SSL_R_UNSUPPORTED_STATUS_TYPE 329 +# define SSL_R_USE_SRTP_NOT_NEGOTIATED 369 +# define SSL_R_WRITE_BIO_NOT_SET 260 +# define SSL_R_WRONG_CERTIFICATE_TYPE 383 +# define SSL_R_WRONG_CIPHER_RETURNED 261 +# define SSL_R_WRONG_CURVE 378 +# define SSL_R_WRONG_MESSAGE_TYPE 262 +# define SSL_R_WRONG_NUMBER_OF_KEY_BITS 263 +# define SSL_R_WRONG_SIGNATURE_LENGTH 264 +# define SSL_R_WRONG_SIGNATURE_SIZE 265 +# define SSL_R_WRONG_SIGNATURE_TYPE 370 +# define SSL_R_WRONG_SSL_VERSION 266 +# define SSL_R_WRONG_VERSION_NUMBER 267 +# define SSL_R_X509_LIB 268 +# define SSL_R_X509_VERIFICATION_SETUP_PROBLEMS 269 + +#ifdef __cplusplus +} +#endif +#endif diff --git a/ext/openssl-win64/inc32/openssl/ssl2.h b/ext/openssl-win64/inc32/openssl/ssl2.h new file mode 100644 index 00000000..03c7dd8c --- /dev/null +++ b/ext/openssl-win64/inc32/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/ext/openssl-win64/inc32/openssl/ssl23.h b/ext/openssl-win64/inc32/openssl/ssl23.h new file mode 100644 index 00000000..9de4685a --- /dev/null +++ b/ext/openssl-win64/inc32/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/ext/openssl-win64/inc32/openssl/ssl3.h b/ext/openssl-win64/inc32/openssl/ssl3.h new file mode 100644 index 00000000..e681d50a --- /dev/null +++ b/ext/openssl-win64/inc32/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/ext/openssl-win64/inc32/openssl/stack.h b/ext/openssl-win64/inc32/openssl/stack.h new file mode 100644 index 00000000..eb072166 --- /dev/null +++ b/ext/openssl-win64/inc32/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/ext/openssl-win64/inc32/openssl/symhacks.h b/ext/openssl-win64/inc32/openssl/symhacks.h new file mode 100644 index 00000000..239fa4fb --- /dev/null +++ b/ext/openssl-win64/inc32/openssl/symhacks.h @@ -0,0 +1,516 @@ +/* ==================================================================== + * Copyright (c) 1999 The OpenSSL Project. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. All advertising materials mentioning features or use of this + * software must display the following acknowledgment: + * "This product includes software developed by the OpenSSL Project + * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" + * + * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to + * endorse or promote products derived from this software without + * prior written permission. For written permission, please contact + * openssl-core@openssl.org. + * + * 5. Products derived from this software may not be called "OpenSSL" + * nor may "OpenSSL" appear in their names without prior written + * permission of the OpenSSL Project. + * + * 6. Redistributions of any form whatsoever must retain the following + * acknowledgment: + * "This product includes software developed by the OpenSSL Project + * for use in the OpenSSL Toolkit (http://www.openssl.org/)" + * + * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY + * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * ==================================================================== + * + * This product includes cryptographic software written by Eric Young + * (eay@cryptsoft.com). This product includes software written by Tim + * Hudson (tjh@cryptsoft.com). + * + */ + +#ifndef HEADER_SYMHACKS_H +# define HEADER_SYMHACKS_H + +# include + +/* + * Hacks to solve the problem with linkers incapable of handling very long + * symbol names. In the case of VMS, the limit is 31 characters on VMS for + * VAX. + */ +/* + * Note that this affects util/libeay.num and util/ssleay.num... you may + * change those manually, but that's not recommended, as those files are + * controlled centrally and updated on Unix, and the central definition may + * disagree with yours, which in turn may come with shareable library + * incompatibilities. + */ +# ifdef OPENSSL_SYS_VMS + +/* Hack a long name in crypto/ex_data.c */ +# undef CRYPTO_get_ex_data_implementation +# define CRYPTO_get_ex_data_implementation CRYPTO_get_ex_data_impl +# undef CRYPTO_set_ex_data_implementation +# define CRYPTO_set_ex_data_implementation CRYPTO_set_ex_data_impl + +/* Hack a long name in crypto/asn1/a_mbstr.c */ +# undef ASN1_STRING_set_default_mask_asc +# define ASN1_STRING_set_default_mask_asc ASN1_STRING_set_def_mask_asc + +# if 0 /* No longer needed, since safestack macro + * magic does the job */ +/* Hack the names created with DECLARE_ASN1_SET_OF(PKCS7_SIGNER_INFO) */ +# undef i2d_ASN1_SET_OF_PKCS7_SIGNER_INFO +# define i2d_ASN1_SET_OF_PKCS7_SIGNER_INFO i2d_ASN1_SET_OF_PKCS7_SIGINF +# undef d2i_ASN1_SET_OF_PKCS7_SIGNER_INFO +# define d2i_ASN1_SET_OF_PKCS7_SIGNER_INFO d2i_ASN1_SET_OF_PKCS7_SIGINF +# endif + +# if 0 /* No longer needed, since safestack macro + * magic does the job */ +/* Hack the names created with DECLARE_ASN1_SET_OF(PKCS7_RECIP_INFO) */ +# undef i2d_ASN1_SET_OF_PKCS7_RECIP_INFO +# define i2d_ASN1_SET_OF_PKCS7_RECIP_INFO i2d_ASN1_SET_OF_PKCS7_RECINF +# undef d2i_ASN1_SET_OF_PKCS7_RECIP_INFO +# define d2i_ASN1_SET_OF_PKCS7_RECIP_INFO d2i_ASN1_SET_OF_PKCS7_RECINF +# endif + +# if 0 /* No longer needed, since safestack macro + * magic does the job */ +/* Hack the names created with DECLARE_ASN1_SET_OF(ACCESS_DESCRIPTION) */ +# undef i2d_ASN1_SET_OF_ACCESS_DESCRIPTION +# define i2d_ASN1_SET_OF_ACCESS_DESCRIPTION i2d_ASN1_SET_OF_ACC_DESC +# undef d2i_ASN1_SET_OF_ACCESS_DESCRIPTION +# define d2i_ASN1_SET_OF_ACCESS_DESCRIPTION d2i_ASN1_SET_OF_ACC_DESC +# endif + +/* Hack the names created with DECLARE_PEM_rw(NETSCAPE_CERT_SEQUENCE) */ +# undef PEM_read_NETSCAPE_CERT_SEQUENCE +# define PEM_read_NETSCAPE_CERT_SEQUENCE PEM_read_NS_CERT_SEQ +# undef PEM_write_NETSCAPE_CERT_SEQUENCE +# define PEM_write_NETSCAPE_CERT_SEQUENCE PEM_write_NS_CERT_SEQ +# undef PEM_read_bio_NETSCAPE_CERT_SEQUENCE +# define PEM_read_bio_NETSCAPE_CERT_SEQUENCE PEM_read_bio_NS_CERT_SEQ +# undef PEM_write_bio_NETSCAPE_CERT_SEQUENCE +# define PEM_write_bio_NETSCAPE_CERT_SEQUENCE PEM_write_bio_NS_CERT_SEQ +# undef PEM_write_cb_bio_NETSCAPE_CERT_SEQUENCE +# define PEM_write_cb_bio_NETSCAPE_CERT_SEQUENCE PEM_write_cb_bio_NS_CERT_SEQ + +/* Hack the names created with DECLARE_PEM_rw(PKCS8_PRIV_KEY_INFO) */ +# undef PEM_read_PKCS8_PRIV_KEY_INFO +# define PEM_read_PKCS8_PRIV_KEY_INFO PEM_read_P8_PRIV_KEY_INFO +# undef PEM_write_PKCS8_PRIV_KEY_INFO +# define PEM_write_PKCS8_PRIV_KEY_INFO PEM_write_P8_PRIV_KEY_INFO +# undef PEM_read_bio_PKCS8_PRIV_KEY_INFO +# define PEM_read_bio_PKCS8_PRIV_KEY_INFO PEM_read_bio_P8_PRIV_KEY_INFO +# undef PEM_write_bio_PKCS8_PRIV_KEY_INFO +# define PEM_write_bio_PKCS8_PRIV_KEY_INFO PEM_write_bio_P8_PRIV_KEY_INFO +# undef PEM_write_cb_bio_PKCS8_PRIV_KEY_INFO +# define PEM_write_cb_bio_PKCS8_PRIV_KEY_INFO PEM_wrt_cb_bio_P8_PRIV_KEY_INFO + +/* Hack other PEM names */ +# undef PEM_write_bio_PKCS8PrivateKey_nid +# define PEM_write_bio_PKCS8PrivateKey_nid PEM_write_bio_PKCS8PrivKey_nid + +/* Hack some long X509 names */ +# undef X509_REVOKED_get_ext_by_critical +# define X509_REVOKED_get_ext_by_critical X509_REVOKED_get_ext_by_critic +# undef X509_policy_tree_get0_user_policies +# define X509_policy_tree_get0_user_policies X509_pcy_tree_get0_usr_policies +# undef X509_policy_node_get0_qualifiers +# define X509_policy_node_get0_qualifiers X509_pcy_node_get0_qualifiers +# undef X509_STORE_CTX_get_explicit_policy +# define X509_STORE_CTX_get_explicit_policy X509_STORE_CTX_get_expl_policy +# undef X509_STORE_CTX_get0_current_issuer +# define X509_STORE_CTX_get0_current_issuer X509_STORE_CTX_get0_cur_issuer + +/* Hack some long CRYPTO names */ +# undef CRYPTO_set_dynlock_destroy_callback +# define CRYPTO_set_dynlock_destroy_callback CRYPTO_set_dynlock_destroy_cb +# undef CRYPTO_set_dynlock_create_callback +# define CRYPTO_set_dynlock_create_callback CRYPTO_set_dynlock_create_cb +# undef CRYPTO_set_dynlock_lock_callback +# define CRYPTO_set_dynlock_lock_callback CRYPTO_set_dynlock_lock_cb +# undef CRYPTO_get_dynlock_lock_callback +# define CRYPTO_get_dynlock_lock_callback CRYPTO_get_dynlock_lock_cb +# undef CRYPTO_get_dynlock_destroy_callback +# define CRYPTO_get_dynlock_destroy_callback CRYPTO_get_dynlock_destroy_cb +# undef CRYPTO_get_dynlock_create_callback +# define CRYPTO_get_dynlock_create_callback CRYPTO_get_dynlock_create_cb +# undef CRYPTO_set_locked_mem_ex_functions +# define CRYPTO_set_locked_mem_ex_functions CRYPTO_set_locked_mem_ex_funcs +# undef CRYPTO_get_locked_mem_ex_functions +# define CRYPTO_get_locked_mem_ex_functions CRYPTO_get_locked_mem_ex_funcs + +/* Hack some long SSL/TLS names */ +# undef SSL_CTX_set_default_verify_paths +# define SSL_CTX_set_default_verify_paths SSL_CTX_set_def_verify_paths +# undef SSL_get_ex_data_X509_STORE_CTX_idx +# define SSL_get_ex_data_X509_STORE_CTX_idx SSL_get_ex_d_X509_STORE_CTX_idx +# undef SSL_add_file_cert_subjects_to_stack +# define SSL_add_file_cert_subjects_to_stack SSL_add_file_cert_subjs_to_stk +# undef SSL_add_dir_cert_subjects_to_stack +# define SSL_add_dir_cert_subjects_to_stack SSL_add_dir_cert_subjs_to_stk +# undef SSL_CTX_use_certificate_chain_file +# define SSL_CTX_use_certificate_chain_file SSL_CTX_use_cert_chain_file +# undef SSL_CTX_set_cert_verify_callback +# define SSL_CTX_set_cert_verify_callback SSL_CTX_set_cert_verify_cb +# undef SSL_CTX_set_default_passwd_cb_userdata +# define SSL_CTX_set_default_passwd_cb_userdata SSL_CTX_set_def_passwd_cb_ud +# undef SSL_COMP_get_compression_methods +# define SSL_COMP_get_compression_methods SSL_COMP_get_compress_methods +# undef SSL_COMP_set0_compression_methods +# define SSL_COMP_set0_compression_methods SSL_COMP_set0_compress_methods +# undef SSL_COMP_free_compression_methods +# define SSL_COMP_free_compression_methods SSL_COMP_free_compress_methods +# undef ssl_add_clienthello_renegotiate_ext +# define ssl_add_clienthello_renegotiate_ext ssl_add_clienthello_reneg_ext +# undef ssl_add_serverhello_renegotiate_ext +# define ssl_add_serverhello_renegotiate_ext ssl_add_serverhello_reneg_ext +# undef ssl_parse_clienthello_renegotiate_ext +# define ssl_parse_clienthello_renegotiate_ext ssl_parse_clienthello_reneg_ext +# undef ssl_parse_serverhello_renegotiate_ext +# define ssl_parse_serverhello_renegotiate_ext ssl_parse_serverhello_reneg_ext +# undef SSL_srp_server_param_with_username +# define SSL_srp_server_param_with_username SSL_srp_server_param_with_un +# undef SSL_CTX_set_srp_client_pwd_callback +# define SSL_CTX_set_srp_client_pwd_callback SSL_CTX_set_srp_client_pwd_cb +# undef SSL_CTX_set_srp_verify_param_callback +# define SSL_CTX_set_srp_verify_param_callback SSL_CTX_set_srp_vfy_param_cb +# undef SSL_CTX_set_srp_username_callback +# define SSL_CTX_set_srp_username_callback SSL_CTX_set_srp_un_cb +# undef ssl_add_clienthello_use_srtp_ext +# define ssl_add_clienthello_use_srtp_ext ssl_add_clihello_use_srtp_ext +# undef ssl_add_serverhello_use_srtp_ext +# define ssl_add_serverhello_use_srtp_ext ssl_add_serhello_use_srtp_ext +# undef ssl_parse_clienthello_use_srtp_ext +# define ssl_parse_clienthello_use_srtp_ext ssl_parse_clihello_use_srtp_ext +# undef ssl_parse_serverhello_use_srtp_ext +# define ssl_parse_serverhello_use_srtp_ext ssl_parse_serhello_use_srtp_ext +# undef SSL_CTX_set_next_protos_advertised_cb +# define SSL_CTX_set_next_protos_advertised_cb SSL_CTX_set_next_protos_adv_cb +# undef SSL_CTX_set_next_proto_select_cb +# define SSL_CTX_set_next_proto_select_cb SSL_CTX_set_next_proto_sel_cb + +# undef tls1_send_server_supplemental_data +# define tls1_send_server_supplemental_data tls1_send_server_suppl_data +# undef tls1_send_client_supplemental_data +# define tls1_send_client_supplemental_data tls1_send_client_suppl_data +# undef tls1_get_server_supplemental_data +# define tls1_get_server_supplemental_data tls1_get_server_suppl_data +# undef tls1_get_client_supplemental_data +# define tls1_get_client_supplemental_data tls1_get_client_suppl_data + +# undef ssl3_cbc_record_digest_supported +# define ssl3_cbc_record_digest_supported ssl3_cbc_record_digest_support +# undef ssl_check_clienthello_tlsext_late +# define ssl_check_clienthello_tlsext_late ssl_check_clihello_tlsext_late +# undef ssl_check_clienthello_tlsext_early +# define ssl_check_clienthello_tlsext_early ssl_check_clihello_tlsext_early + +/* Hack some RSA long names */ +# undef RSA_padding_check_PKCS1_OAEP_mgf1 +# define RSA_padding_check_PKCS1_OAEP_mgf1 RSA_pad_check_PKCS1_OAEP_mgf1 + +/* Hack some ENGINE long names */ +# undef ENGINE_get_default_BN_mod_exp_crt +# define ENGINE_get_default_BN_mod_exp_crt ENGINE_get_def_BN_mod_exp_crt +# undef ENGINE_set_default_BN_mod_exp_crt +# define ENGINE_set_default_BN_mod_exp_crt ENGINE_set_def_BN_mod_exp_crt +# undef ENGINE_set_load_privkey_function +# define ENGINE_set_load_privkey_function ENGINE_set_load_privkey_fn +# undef ENGINE_get_load_privkey_function +# define ENGINE_get_load_privkey_function ENGINE_get_load_privkey_fn +# undef ENGINE_unregister_pkey_asn1_meths +# define ENGINE_unregister_pkey_asn1_meths ENGINE_unreg_pkey_asn1_meths +# undef ENGINE_register_all_pkey_asn1_meths +# define ENGINE_register_all_pkey_asn1_meths ENGINE_reg_all_pkey_asn1_meths +# undef ENGINE_set_default_pkey_asn1_meths +# define ENGINE_set_default_pkey_asn1_meths ENGINE_set_def_pkey_asn1_meths +# undef ENGINE_get_pkey_asn1_meth_engine +# define ENGINE_get_pkey_asn1_meth_engine ENGINE_get_pkey_asn1_meth_eng +# undef ENGINE_set_load_ssl_client_cert_function +# define ENGINE_set_load_ssl_client_cert_function \ + ENGINE_set_ld_ssl_clnt_cert_fn +# undef ENGINE_get_ssl_client_cert_function +# define ENGINE_get_ssl_client_cert_function ENGINE_get_ssl_client_cert_fn + +/* Hack some long OCSP names */ +# undef OCSP_REQUEST_get_ext_by_critical +# define OCSP_REQUEST_get_ext_by_critical OCSP_REQUEST_get_ext_by_crit +# undef OCSP_BASICRESP_get_ext_by_critical +# define OCSP_BASICRESP_get_ext_by_critical OCSP_BASICRESP_get_ext_by_crit +# undef OCSP_SINGLERESP_get_ext_by_critical +# define OCSP_SINGLERESP_get_ext_by_critical OCSP_SINGLERESP_get_ext_by_crit + +/* Hack some long DES names */ +# undef _ossl_old_des_ede3_cfb64_encrypt +# define _ossl_old_des_ede3_cfb64_encrypt _ossl_odes_ede3_cfb64_encrypt +# undef _ossl_old_des_ede3_ofb64_encrypt +# define _ossl_old_des_ede3_ofb64_encrypt _ossl_odes_ede3_ofb64_encrypt + +/* Hack some long EVP names */ +# undef OPENSSL_add_all_algorithms_noconf +# define OPENSSL_add_all_algorithms_noconf OPENSSL_add_all_algo_noconf +# undef OPENSSL_add_all_algorithms_conf +# define OPENSSL_add_all_algorithms_conf OPENSSL_add_all_algo_conf +# undef EVP_PKEY_meth_set_verify_recover +# define EVP_PKEY_meth_set_verify_recover EVP_PKEY_meth_set_vrfy_recover + +/* Hack some long EC names */ +# undef EC_GROUP_set_point_conversion_form +# define EC_GROUP_set_point_conversion_form EC_GROUP_set_point_conv_form +# undef EC_GROUP_get_point_conversion_form +# define EC_GROUP_get_point_conversion_form EC_GROUP_get_point_conv_form +# undef EC_GROUP_clear_free_all_extra_data +# define EC_GROUP_clear_free_all_extra_data EC_GROUP_clr_free_all_xtra_data +# undef EC_KEY_set_public_key_affine_coordinates +# define EC_KEY_set_public_key_affine_coordinates \ + EC_KEY_set_pub_key_aff_coords +# undef EC_POINT_set_Jprojective_coordinates_GFp +# define EC_POINT_set_Jprojective_coordinates_GFp \ + EC_POINT_set_Jproj_coords_GFp +# undef EC_POINT_get_Jprojective_coordinates_GFp +# define EC_POINT_get_Jprojective_coordinates_GFp \ + EC_POINT_get_Jproj_coords_GFp +# undef EC_POINT_set_affine_coordinates_GFp +# define EC_POINT_set_affine_coordinates_GFp EC_POINT_set_affine_coords_GFp +# undef EC_POINT_get_affine_coordinates_GFp +# define EC_POINT_get_affine_coordinates_GFp EC_POINT_get_affine_coords_GFp +# undef EC_POINT_set_compressed_coordinates_GFp +# define EC_POINT_set_compressed_coordinates_GFp EC_POINT_set_compr_coords_GFp +# undef EC_POINT_set_affine_coordinates_GF2m +# define EC_POINT_set_affine_coordinates_GF2m EC_POINT_set_affine_coords_GF2m +# undef EC_POINT_get_affine_coordinates_GF2m +# define EC_POINT_get_affine_coordinates_GF2m EC_POINT_get_affine_coords_GF2m +# undef EC_POINT_set_compressed_coordinates_GF2m +# define EC_POINT_set_compressed_coordinates_GF2m \ + EC_POINT_set_compr_coords_GF2m +# undef ec_GF2m_simple_group_clear_finish +# define ec_GF2m_simple_group_clear_finish ec_GF2m_simple_grp_clr_finish +# undef ec_GF2m_simple_group_check_discriminant +# define ec_GF2m_simple_group_check_discriminant ec_GF2m_simple_grp_chk_discrim +# undef ec_GF2m_simple_point_clear_finish +# define ec_GF2m_simple_point_clear_finish ec_GF2m_simple_pt_clr_finish +# undef ec_GF2m_simple_point_set_to_infinity +# define ec_GF2m_simple_point_set_to_infinity ec_GF2m_simple_pt_set_to_inf +# undef ec_GF2m_simple_points_make_affine +# define ec_GF2m_simple_points_make_affine ec_GF2m_simple_pts_make_affine +# undef ec_GF2m_simple_point_set_affine_coordinates +# define ec_GF2m_simple_point_set_affine_coordinates \ + ec_GF2m_smp_pt_set_af_coords +# undef ec_GF2m_simple_point_get_affine_coordinates +# define ec_GF2m_simple_point_get_affine_coordinates \ + ec_GF2m_smp_pt_get_af_coords +# undef ec_GF2m_simple_set_compressed_coordinates +# define ec_GF2m_simple_set_compressed_coordinates \ + ec_GF2m_smp_set_compr_coords +# undef ec_GFp_simple_group_set_curve_GFp +# define ec_GFp_simple_group_set_curve_GFp ec_GFp_simple_grp_set_curve_GFp +# undef ec_GFp_simple_group_get_curve_GFp +# define ec_GFp_simple_group_get_curve_GFp ec_GFp_simple_grp_get_curve_GFp +# undef ec_GFp_simple_group_clear_finish +# define ec_GFp_simple_group_clear_finish ec_GFp_simple_grp_clear_finish +# undef ec_GFp_simple_group_set_generator +# define ec_GFp_simple_group_set_generator ec_GFp_simple_grp_set_generator +# undef ec_GFp_simple_group_get0_generator +# define ec_GFp_simple_group_get0_generator ec_GFp_simple_grp_gt0_generator +# undef ec_GFp_simple_group_get_cofactor +# define ec_GFp_simple_group_get_cofactor ec_GFp_simple_grp_get_cofactor +# undef ec_GFp_simple_point_clear_finish +# define ec_GFp_simple_point_clear_finish ec_GFp_simple_pt_clear_finish +# undef ec_GFp_simple_point_set_to_infinity +# define ec_GFp_simple_point_set_to_infinity ec_GFp_simple_pt_set_to_inf +# undef ec_GFp_simple_points_make_affine +# define ec_GFp_simple_points_make_affine ec_GFp_simple_pts_make_affine +# undef ec_GFp_simple_set_Jprojective_coordinates_GFp +# define ec_GFp_simple_set_Jprojective_coordinates_GFp \ + ec_GFp_smp_set_Jproj_coords_GFp +# undef ec_GFp_simple_get_Jprojective_coordinates_GFp +# define ec_GFp_simple_get_Jprojective_coordinates_GFp \ + ec_GFp_smp_get_Jproj_coords_GFp +# undef ec_GFp_simple_point_set_affine_coordinates_GFp +# define ec_GFp_simple_point_set_affine_coordinates_GFp \ + ec_GFp_smp_pt_set_af_coords_GFp +# undef ec_GFp_simple_point_get_affine_coordinates_GFp +# define ec_GFp_simple_point_get_affine_coordinates_GFp \ + ec_GFp_smp_pt_get_af_coords_GFp +# undef ec_GFp_simple_set_compressed_coordinates_GFp +# define ec_GFp_simple_set_compressed_coordinates_GFp \ + ec_GFp_smp_set_compr_coords_GFp +# undef ec_GFp_simple_point_set_affine_coordinates +# define ec_GFp_simple_point_set_affine_coordinates \ + ec_GFp_smp_pt_set_af_coords +# undef ec_GFp_simple_point_get_affine_coordinates +# define ec_GFp_simple_point_get_affine_coordinates \ + ec_GFp_smp_pt_get_af_coords +# undef ec_GFp_simple_set_compressed_coordinates +# define ec_GFp_simple_set_compressed_coordinates \ + ec_GFp_smp_set_compr_coords +# undef ec_GFp_simple_group_check_discriminant +# define ec_GFp_simple_group_check_discriminant ec_GFp_simple_grp_chk_discrim + +/* Hack som long STORE names */ +# undef STORE_method_set_initialise_function +# define STORE_method_set_initialise_function STORE_meth_set_initialise_fn +# undef STORE_method_set_cleanup_function +# define STORE_method_set_cleanup_function STORE_meth_set_cleanup_fn +# undef STORE_method_set_generate_function +# define STORE_method_set_generate_function STORE_meth_set_generate_fn +# undef STORE_method_set_modify_function +# define STORE_method_set_modify_function STORE_meth_set_modify_fn +# undef STORE_method_set_revoke_function +# define STORE_method_set_revoke_function STORE_meth_set_revoke_fn +# undef STORE_method_set_delete_function +# define STORE_method_set_delete_function STORE_meth_set_delete_fn +# undef STORE_method_set_list_start_function +# define STORE_method_set_list_start_function STORE_meth_set_list_start_fn +# undef STORE_method_set_list_next_function +# define STORE_method_set_list_next_function STORE_meth_set_list_next_fn +# undef STORE_method_set_list_end_function +# define STORE_method_set_list_end_function STORE_meth_set_list_end_fn +# undef STORE_method_set_update_store_function +# define STORE_method_set_update_store_function STORE_meth_set_update_store_fn +# undef STORE_method_set_lock_store_function +# define STORE_method_set_lock_store_function STORE_meth_set_lock_store_fn +# undef STORE_method_set_unlock_store_function +# define STORE_method_set_unlock_store_function STORE_meth_set_unlock_store_fn +# undef STORE_method_get_initialise_function +# define STORE_method_get_initialise_function STORE_meth_get_initialise_fn +# undef STORE_method_get_cleanup_function +# define STORE_method_get_cleanup_function STORE_meth_get_cleanup_fn +# undef STORE_method_get_generate_function +# define STORE_method_get_generate_function STORE_meth_get_generate_fn +# undef STORE_method_get_modify_function +# define STORE_method_get_modify_function STORE_meth_get_modify_fn +# undef STORE_method_get_revoke_function +# define STORE_method_get_revoke_function STORE_meth_get_revoke_fn +# undef STORE_method_get_delete_function +# define STORE_method_get_delete_function STORE_meth_get_delete_fn +# undef STORE_method_get_list_start_function +# define STORE_method_get_list_start_function STORE_meth_get_list_start_fn +# undef STORE_method_get_list_next_function +# define STORE_method_get_list_next_function STORE_meth_get_list_next_fn +# undef STORE_method_get_list_end_function +# define STORE_method_get_list_end_function STORE_meth_get_list_end_fn +# undef STORE_method_get_update_store_function +# define STORE_method_get_update_store_function STORE_meth_get_update_store_fn +# undef STORE_method_get_lock_store_function +# define STORE_method_get_lock_store_function STORE_meth_get_lock_store_fn +# undef STORE_method_get_unlock_store_function +# define STORE_method_get_unlock_store_function STORE_meth_get_unlock_store_fn + +/* Hack some long TS names */ +# undef TS_RESP_CTX_set_status_info_cond +# define TS_RESP_CTX_set_status_info_cond TS_RESP_CTX_set_stat_info_cond +# undef TS_RESP_CTX_set_clock_precision_digits +# define TS_RESP_CTX_set_clock_precision_digits TS_RESP_CTX_set_clk_prec_digits +# undef TS_CONF_set_clock_precision_digits +# define TS_CONF_set_clock_precision_digits TS_CONF_set_clk_prec_digits + +/* Hack some long CMS names */ +# undef CMS_RecipientInfo_ktri_get0_algs +# define CMS_RecipientInfo_ktri_get0_algs CMS_RecipInfo_ktri_get0_algs +# undef CMS_RecipientInfo_ktri_get0_signer_id +# define CMS_RecipientInfo_ktri_get0_signer_id CMS_RecipInfo_ktri_get0_sigr_id +# undef CMS_OtherRevocationInfoFormat_it +# define CMS_OtherRevocationInfoFormat_it CMS_OtherRevocInfoFormat_it +# undef CMS_KeyAgreeRecipientIdentifier_it +# define CMS_KeyAgreeRecipientIdentifier_it CMS_KeyAgreeRecipIdentifier_it +# undef CMS_OriginatorIdentifierOrKey_it +# define CMS_OriginatorIdentifierOrKey_it CMS_OriginatorIdOrKey_it +# undef cms_SignerIdentifier_get0_signer_id +# define cms_SignerIdentifier_get0_signer_id cms_SignerId_get0_signer_id +# undef CMS_RecipientInfo_kari_get0_orig_id +# define CMS_RecipientInfo_kari_get0_orig_id CMS_RecipInfo_kari_get0_orig_id +# undef CMS_RecipientInfo_kari_get0_reks +# define CMS_RecipientInfo_kari_get0_reks CMS_RecipInfo_kari_get0_reks +# undef CMS_RecipientEncryptedKey_cert_cmp +# define CMS_RecipientEncryptedKey_cert_cmp CMS_RecipEncryptedKey_cert_cmp +# undef CMS_RecipientInfo_kari_set0_pkey +# define CMS_RecipientInfo_kari_set0_pkey CMS_RecipInfo_kari_set0_pkey +# undef CMS_RecipientEncryptedKey_get0_id +# define CMS_RecipientEncryptedKey_get0_id CMS_RecipEncryptedKey_get0_id +# undef CMS_RecipientInfo_kari_orig_id_cmp +# define CMS_RecipientInfo_kari_orig_id_cmp CMS_RecipInfo_kari_orig_id_cmp + +/* Hack some long DTLS1 names */ +# undef dtls1_retransmit_buffered_messages +# define dtls1_retransmit_buffered_messages dtls1_retransmit_buffered_msgs + +/* Hack some long SRP names */ +# undef SRP_generate_server_master_secret +# define SRP_generate_server_master_secret SRP_gen_server_master_secret +# undef SRP_generate_client_master_secret +# define SRP_generate_client_master_secret SRP_gen_client_master_secret + +/* Hack some long UI names */ +# undef UI_method_get_prompt_constructor +# define UI_method_get_prompt_constructor UI_method_get_prompt_constructr +# undef UI_method_set_prompt_constructor +# define UI_method_set_prompt_constructor UI_method_set_prompt_constructr + +# endif /* defined OPENSSL_SYS_VMS */ + +/* Case insensitive linking causes problems.... */ +# if defined(OPENSSL_SYS_VMS) || defined(OPENSSL_SYS_OS2) +# undef ERR_load_CRYPTO_strings +# define ERR_load_CRYPTO_strings ERR_load_CRYPTOlib_strings +# undef OCSP_crlID_new +# define OCSP_crlID_new OCSP_crlID2_new + +# undef d2i_ECPARAMETERS +# define d2i_ECPARAMETERS d2i_UC_ECPARAMETERS +# undef i2d_ECPARAMETERS +# define i2d_ECPARAMETERS i2d_UC_ECPARAMETERS +# undef d2i_ECPKPARAMETERS +# define d2i_ECPKPARAMETERS d2i_UC_ECPKPARAMETERS +# undef i2d_ECPKPARAMETERS +# define i2d_ECPKPARAMETERS i2d_UC_ECPKPARAMETERS + +/* + * These functions do not seem to exist! However, I'm paranoid... Original + * command in x509v3.h: These functions are being redefined in another + * directory, and clash when the linker is case-insensitive, so let's hide + * them a little, by giving them an extra 'o' at the beginning of the name... + */ +# undef X509v3_cleanup_extensions +# define X509v3_cleanup_extensions oX509v3_cleanup_extensions +# undef X509v3_add_extension +# define X509v3_add_extension oX509v3_add_extension +# undef X509v3_add_netscape_extensions +# define X509v3_add_netscape_extensions oX509v3_add_netscape_extensions +# undef X509v3_add_standard_extensions +# define X509v3_add_standard_extensions oX509v3_add_standard_extensions + +/* This one clashes with CMS_data_create */ +# undef cms_Data_create +# define cms_Data_create priv_cms_Data_create + +# endif + +#endif /* ! defined HEADER_VMS_IDHACKS_H */ diff --git a/ext/openssl-win64/inc32/openssl/tls1.h b/ext/openssl-win64/inc32/openssl/tls1.h new file mode 100644 index 00000000..5929607f --- /dev/null +++ b/ext/openssl-win64/inc32/openssl/tls1.h @@ -0,0 +1,813 @@ +/* ssl/tls1.h */ +/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) + * All rights reserved. + * + * This package is an SSL implementation written + * by Eric Young (eay@cryptsoft.com). + * The implementation was written so as to conform with Netscapes SSL. + * + * This library is free for commercial and non-commercial use as long as + * the following conditions are aheared to. The following conditions + * apply to all code found in this distribution, be it the RC4, RSA, + * lhash, DES, etc., code; not just the SSL code. The SSL documentation + * included with this distribution is covered by the same copyright terms + * except that the holder is Tim Hudson (tjh@cryptsoft.com). + * + * Copyright remains Eric Young's, and as such any Copyright notices in + * the code are not to be removed. + * If this package is used in a product, Eric Young should be given attribution + * as the author of the parts of the library used. + * This can be in the form of a textual message at program startup or + * in documentation (online or textual) provided with the package. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * "This product includes cryptographic software written by + * Eric Young (eay@cryptsoft.com)" + * The word 'cryptographic' can be left out if the rouines from the library + * being used are not cryptographic related :-). + * 4. If you include any Windows specific code (or a derivative thereof) from + * the apps directory (application code) you must include an acknowledgement: + * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" + * + * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * The licence and distribution terms for any publically available version or + * derivative of this code cannot be changed. i.e. this code cannot simply be + * copied and put under another distribution licence + * [including the GNU Public Licence.] + */ +/* ==================================================================== + * Copyright (c) 1998-2006 The OpenSSL Project. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. All advertising materials mentioning features or use of this + * software must display the following acknowledgment: + * "This product includes software developed by the OpenSSL Project + * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" + * + * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to + * endorse or promote products derived from this software without + * prior written permission. For written permission, please contact + * openssl-core@openssl.org. + * + * 5. Products derived from this software may not be called "OpenSSL" + * nor may "OpenSSL" appear in their names without prior written + * permission of the OpenSSL Project. + * + * 6. Redistributions of any form whatsoever must retain the following + * acknowledgment: + * "This product includes software developed by the OpenSSL Project + * for use in the OpenSSL Toolkit (http://www.openssl.org/)" + * + * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY + * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * ==================================================================== + * + * This product includes cryptographic software written by Eric Young + * (eay@cryptsoft.com). This product includes software written by Tim + * Hudson (tjh@cryptsoft.com). + * + */ +/* ==================================================================== + * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED. + * + * Portions of the attached software ("Contribution") are developed by + * SUN MICROSYSTEMS, INC., and are contributed to the OpenSSL project. + * + * The Contribution is licensed pursuant to the OpenSSL open source + * license provided above. + * + * ECC cipher suite support in OpenSSL originally written by + * Vipul Gupta and Sumit Gupta of Sun Microsystems Laboratories. + * + */ +/* ==================================================================== + * Copyright 2005 Nokia. All rights reserved. + * + * The portions of the attached software ("Contribution") is developed by + * Nokia Corporation and is licensed pursuant to the OpenSSL open source + * license. + * + * The Contribution, originally written by Mika Kousa and Pasi Eronen of + * Nokia Corporation, consists of the "PSK" (Pre-Shared Key) ciphersuites + * support (see RFC 4279) to OpenSSL. + * + * No patent licenses or other rights except those expressly stated in + * the OpenSSL open source license shall be deemed granted or received + * expressly, by implication, estoppel, or otherwise. + * + * No assurances are provided by Nokia that the Contribution does not + * infringe the patent or other intellectual property rights of any third + * party or that the license provides you with all the necessary rights + * to make use of the Contribution. + * + * THE SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. IN + * ADDITION TO THE DISCLAIMERS INCLUDED IN THE LICENSE, NOKIA + * SPECIFICALLY DISCLAIMS ANY LIABILITY FOR CLAIMS BROUGHT BY YOU OR ANY + * OTHER ENTITY BASED ON INFRINGEMENT OF INTELLECTUAL PROPERTY RIGHTS OR + * OTHERWISE. + */ + +#ifndef HEADER_TLS1_H +# define HEADER_TLS1_H + +# include + +#ifdef __cplusplus +extern "C" { +#endif + +# define TLS1_ALLOW_EXPERIMENTAL_CIPHERSUITES 0 + +# define TLS1_VERSION 0x0301 +# define TLS1_1_VERSION 0x0302 +# define TLS1_2_VERSION 0x0303 +# define TLS_MAX_VERSION TLS1_2_VERSION + +# define TLS1_VERSION_MAJOR 0x03 +# define TLS1_VERSION_MINOR 0x01 + +# define TLS1_1_VERSION_MAJOR 0x03 +# define TLS1_1_VERSION_MINOR 0x02 + +# define TLS1_2_VERSION_MAJOR 0x03 +# define TLS1_2_VERSION_MINOR 0x03 + +# define TLS1_get_version(s) \ + ((s->version >> 8) == TLS1_VERSION_MAJOR ? s->version : 0) + +# define TLS1_get_client_version(s) \ + ((s->client_version >> 8) == TLS1_VERSION_MAJOR ? s->client_version : 0) + +# define TLS1_AD_DECRYPTION_FAILED 21 +# define TLS1_AD_RECORD_OVERFLOW 22 +# define TLS1_AD_UNKNOWN_CA 48/* fatal */ +# define TLS1_AD_ACCESS_DENIED 49/* fatal */ +# define TLS1_AD_DECODE_ERROR 50/* fatal */ +# define TLS1_AD_DECRYPT_ERROR 51 +# define TLS1_AD_EXPORT_RESTRICTION 60/* fatal */ +# define TLS1_AD_PROTOCOL_VERSION 70/* fatal */ +# define TLS1_AD_INSUFFICIENT_SECURITY 71/* fatal */ +# define TLS1_AD_INTERNAL_ERROR 80/* fatal */ +# define TLS1_AD_INAPPROPRIATE_FALLBACK 86/* fatal */ +# define TLS1_AD_USER_CANCELLED 90 +# define TLS1_AD_NO_RENEGOTIATION 100 +/* codes 110-114 are from RFC3546 */ +# define TLS1_AD_UNSUPPORTED_EXTENSION 110 +# define TLS1_AD_CERTIFICATE_UNOBTAINABLE 111 +# define TLS1_AD_UNRECOGNIZED_NAME 112 +# define TLS1_AD_BAD_CERTIFICATE_STATUS_RESPONSE 113 +# define TLS1_AD_BAD_CERTIFICATE_HASH_VALUE 114 +# define TLS1_AD_UNKNOWN_PSK_IDENTITY 115/* fatal */ + +/* ExtensionType values from RFC3546 / RFC4366 / RFC6066 */ +# define TLSEXT_TYPE_server_name 0 +# define TLSEXT_TYPE_max_fragment_length 1 +# define TLSEXT_TYPE_client_certificate_url 2 +# define TLSEXT_TYPE_trusted_ca_keys 3 +# define TLSEXT_TYPE_truncated_hmac 4 +# define TLSEXT_TYPE_status_request 5 +/* ExtensionType values from RFC4681 */ +# define TLSEXT_TYPE_user_mapping 6 +/* ExtensionType values from RFC5878 */ +# define TLSEXT_TYPE_client_authz 7 +# define TLSEXT_TYPE_server_authz 8 +/* ExtensionType values from RFC6091 */ +# define TLSEXT_TYPE_cert_type 9 + +/* ExtensionType values from RFC4492 */ +# define TLSEXT_TYPE_elliptic_curves 10 +# define TLSEXT_TYPE_ec_point_formats 11 + +/* ExtensionType value from RFC5054 */ +# define TLSEXT_TYPE_srp 12 + +/* ExtensionType values from RFC5246 */ +# define TLSEXT_TYPE_signature_algorithms 13 + +/* ExtensionType value from RFC5764 */ +# define TLSEXT_TYPE_use_srtp 14 + +/* ExtensionType value from RFC5620 */ +# define TLSEXT_TYPE_heartbeat 15 + +/* ExtensionType value from draft-ietf-tls-applayerprotoneg-00 */ +# define TLSEXT_TYPE_application_layer_protocol_negotiation 16 + +/* + * ExtensionType value for TLS padding extension. + * http://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml + * http://tools.ietf.org/html/draft-agl-tls-padding-03 + */ +# define TLSEXT_TYPE_padding 21 + +/* ExtensionType value from RFC4507 */ +# define TLSEXT_TYPE_session_ticket 35 + +/* ExtensionType value from draft-rescorla-tls-opaque-prf-input-00.txt */ +# if 0 +/* + * will have to be provided externally for now , + * i.e. build with -DTLSEXT_TYPE_opaque_prf_input=38183 + * using whatever extension number you'd like to try + */ +# define TLSEXT_TYPE_opaque_prf_input ?? +# endif + +/* Temporary extension type */ +# define TLSEXT_TYPE_renegotiate 0xff01 + +# ifndef OPENSSL_NO_NEXTPROTONEG +/* This is not an IANA defined extension number */ +# define TLSEXT_TYPE_next_proto_neg 13172 +# endif + +/* NameType value from RFC 3546 */ +# define TLSEXT_NAMETYPE_host_name 0 +/* status request value from RFC 3546 */ +# define TLSEXT_STATUSTYPE_ocsp 1 + +/* ECPointFormat values from draft-ietf-tls-ecc-12 */ +# define TLSEXT_ECPOINTFORMAT_first 0 +# define TLSEXT_ECPOINTFORMAT_uncompressed 0 +# define TLSEXT_ECPOINTFORMAT_ansiX962_compressed_prime 1 +# define TLSEXT_ECPOINTFORMAT_ansiX962_compressed_char2 2 +# define TLSEXT_ECPOINTFORMAT_last 2 + +/* Signature and hash algorithms from RFC 5246 */ + +# define TLSEXT_signature_anonymous 0 +# define TLSEXT_signature_rsa 1 +# define TLSEXT_signature_dsa 2 +# define TLSEXT_signature_ecdsa 3 + +/* Total number of different signature algorithms */ +# define TLSEXT_signature_num 4 + +# define TLSEXT_hash_none 0 +# define TLSEXT_hash_md5 1 +# define TLSEXT_hash_sha1 2 +# define TLSEXT_hash_sha224 3 +# define TLSEXT_hash_sha256 4 +# define TLSEXT_hash_sha384 5 +# define TLSEXT_hash_sha512 6 + +/* Total number of different digest algorithms */ + +# define TLSEXT_hash_num 7 + +/* Flag set for unrecognised algorithms */ +# define TLSEXT_nid_unknown 0x1000000 + +/* ECC curves */ + +# define TLSEXT_curve_P_256 23 +# define TLSEXT_curve_P_384 24 + +# ifndef OPENSSL_NO_TLSEXT + +# define TLSEXT_MAXLEN_host_name 255 + +const char *SSL_get_servername(const SSL *s, const int type); +int SSL_get_servername_type(const SSL *s); +/* + * SSL_export_keying_material exports a value derived from the master secret, + * as specified in RFC 5705. It writes |olen| bytes to |out| given a label and + * optional context. (Since a zero length context is allowed, the |use_context| + * flag controls whether a context is included.) It returns 1 on success and + * zero otherwise. + */ +int SSL_export_keying_material(SSL *s, unsigned char *out, size_t olen, + const char *label, size_t llen, + const unsigned char *p, size_t plen, + int use_context); + +int SSL_get_sigalgs(SSL *s, int idx, + int *psign, int *phash, int *psignandhash, + unsigned char *rsig, unsigned char *rhash); + +int SSL_get_shared_sigalgs(SSL *s, int idx, + int *psign, int *phash, int *psignandhash, + unsigned char *rsig, unsigned char *rhash); + +int SSL_check_chain(SSL *s, X509 *x, EVP_PKEY *pk, STACK_OF(X509) *chain); + +# define SSL_set_tlsext_host_name(s,name) \ +SSL_ctrl(s,SSL_CTRL_SET_TLSEXT_HOSTNAME,TLSEXT_NAMETYPE_host_name,(char *)name) + +# define SSL_set_tlsext_debug_callback(ssl, cb) \ +SSL_callback_ctrl(ssl,SSL_CTRL_SET_TLSEXT_DEBUG_CB,(void (*)(void))cb) + +# define SSL_set_tlsext_debug_arg(ssl, arg) \ +SSL_ctrl(ssl,SSL_CTRL_SET_TLSEXT_DEBUG_ARG,0, (void *)arg) + +# define SSL_set_tlsext_status_type(ssl, type) \ +SSL_ctrl(ssl,SSL_CTRL_SET_TLSEXT_STATUS_REQ_TYPE,type, NULL) + +# define SSL_get_tlsext_status_exts(ssl, arg) \ +SSL_ctrl(ssl,SSL_CTRL_GET_TLSEXT_STATUS_REQ_EXTS,0, (void *)arg) + +# define SSL_set_tlsext_status_exts(ssl, arg) \ +SSL_ctrl(ssl,SSL_CTRL_SET_TLSEXT_STATUS_REQ_EXTS,0, (void *)arg) + +# define SSL_get_tlsext_status_ids(ssl, arg) \ +SSL_ctrl(ssl,SSL_CTRL_GET_TLSEXT_STATUS_REQ_IDS,0, (void *)arg) + +# define SSL_set_tlsext_status_ids(ssl, arg) \ +SSL_ctrl(ssl,SSL_CTRL_SET_TLSEXT_STATUS_REQ_IDS,0, (void *)arg) + +# define SSL_get_tlsext_status_ocsp_resp(ssl, arg) \ +SSL_ctrl(ssl,SSL_CTRL_GET_TLSEXT_STATUS_REQ_OCSP_RESP,0, (void *)arg) + +# define SSL_set_tlsext_status_ocsp_resp(ssl, arg, arglen) \ +SSL_ctrl(ssl,SSL_CTRL_SET_TLSEXT_STATUS_REQ_OCSP_RESP,arglen, (void *)arg) + +# define SSL_CTX_set_tlsext_servername_callback(ctx, cb) \ +SSL_CTX_callback_ctrl(ctx,SSL_CTRL_SET_TLSEXT_SERVERNAME_CB,(void (*)(void))cb) + +# define SSL_TLSEXT_ERR_OK 0 +# define SSL_TLSEXT_ERR_ALERT_WARNING 1 +# define SSL_TLSEXT_ERR_ALERT_FATAL 2 +# define SSL_TLSEXT_ERR_NOACK 3 + +# define SSL_CTX_set_tlsext_servername_arg(ctx, arg) \ +SSL_CTX_ctrl(ctx,SSL_CTRL_SET_TLSEXT_SERVERNAME_ARG,0, (void *)arg) + +# define SSL_CTX_get_tlsext_ticket_keys(ctx, keys, keylen) \ + SSL_CTX_ctrl((ctx),SSL_CTRL_GET_TLSEXT_TICKET_KEYS,(keylen),(keys)) +# define SSL_CTX_set_tlsext_ticket_keys(ctx, keys, keylen) \ + SSL_CTX_ctrl((ctx),SSL_CTRL_SET_TLSEXT_TICKET_KEYS,(keylen),(keys)) + +# define SSL_CTX_set_tlsext_status_cb(ssl, cb) \ +SSL_CTX_callback_ctrl(ssl,SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB,(void (*)(void))cb) + +# define SSL_CTX_set_tlsext_status_arg(ssl, arg) \ +SSL_CTX_ctrl(ssl,SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB_ARG,0, (void *)arg) + +# define SSL_set_tlsext_opaque_prf_input(s, src, len) \ +SSL_ctrl(s,SSL_CTRL_SET_TLSEXT_OPAQUE_PRF_INPUT, len, src) +# define SSL_CTX_set_tlsext_opaque_prf_input_callback(ctx, cb) \ +SSL_CTX_callback_ctrl(ctx,SSL_CTRL_SET_TLSEXT_OPAQUE_PRF_INPUT_CB, (void (*)(void))cb) +# define SSL_CTX_set_tlsext_opaque_prf_input_callback_arg(ctx, arg) \ +SSL_CTX_ctrl(ctx,SSL_CTRL_SET_TLSEXT_OPAQUE_PRF_INPUT_CB_ARG, 0, arg) + +# define SSL_CTX_set_tlsext_ticket_key_cb(ssl, cb) \ +SSL_CTX_callback_ctrl(ssl,SSL_CTRL_SET_TLSEXT_TICKET_KEY_CB,(void (*)(void))cb) + +# ifndef OPENSSL_NO_HEARTBEATS +# define SSL_TLSEXT_HB_ENABLED 0x01 +# define SSL_TLSEXT_HB_DONT_SEND_REQUESTS 0x02 +# define SSL_TLSEXT_HB_DONT_RECV_REQUESTS 0x04 + +# define SSL_get_tlsext_heartbeat_pending(ssl) \ + SSL_ctrl((ssl),SSL_CTRL_GET_TLS_EXT_HEARTBEAT_PENDING,0,NULL) +# define SSL_set_tlsext_heartbeat_no_requests(ssl, arg) \ + SSL_ctrl((ssl),SSL_CTRL_SET_TLS_EXT_HEARTBEAT_NO_REQUESTS,arg,NULL) +# endif +# endif + +/* PSK ciphersuites from 4279 */ +# define TLS1_CK_PSK_WITH_RC4_128_SHA 0x0300008A +# define TLS1_CK_PSK_WITH_3DES_EDE_CBC_SHA 0x0300008B +# define TLS1_CK_PSK_WITH_AES_128_CBC_SHA 0x0300008C +# define TLS1_CK_PSK_WITH_AES_256_CBC_SHA 0x0300008D + +/* + * Additional TLS ciphersuites from expired Internet Draft + * draft-ietf-tls-56-bit-ciphersuites-01.txt (available if + * TLS1_ALLOW_EXPERIMENTAL_CIPHERSUITES is defined, see s3_lib.c). We + * actually treat them like SSL 3.0 ciphers, which we probably shouldn't. + * Note that the first two are actually not in the IDs. + */ +# define TLS1_CK_RSA_EXPORT1024_WITH_RC4_56_MD5 0x03000060/* not in + * ID */ +# define TLS1_CK_RSA_EXPORT1024_WITH_RC2_CBC_56_MD5 0x03000061/* not in + * ID */ +# define TLS1_CK_RSA_EXPORT1024_WITH_DES_CBC_SHA 0x03000062 +# define TLS1_CK_DHE_DSS_EXPORT1024_WITH_DES_CBC_SHA 0x03000063 +# define TLS1_CK_RSA_EXPORT1024_WITH_RC4_56_SHA 0x03000064 +# define TLS1_CK_DHE_DSS_EXPORT1024_WITH_RC4_56_SHA 0x03000065 +# define TLS1_CK_DHE_DSS_WITH_RC4_128_SHA 0x03000066 + +/* AES ciphersuites from RFC3268 */ + +# define TLS1_CK_RSA_WITH_AES_128_SHA 0x0300002F +# define TLS1_CK_DH_DSS_WITH_AES_128_SHA 0x03000030 +# define TLS1_CK_DH_RSA_WITH_AES_128_SHA 0x03000031 +# define TLS1_CK_DHE_DSS_WITH_AES_128_SHA 0x03000032 +# define TLS1_CK_DHE_RSA_WITH_AES_128_SHA 0x03000033 +# define TLS1_CK_ADH_WITH_AES_128_SHA 0x03000034 + +# define TLS1_CK_RSA_WITH_AES_256_SHA 0x03000035 +# define TLS1_CK_DH_DSS_WITH_AES_256_SHA 0x03000036 +# define TLS1_CK_DH_RSA_WITH_AES_256_SHA 0x03000037 +# define TLS1_CK_DHE_DSS_WITH_AES_256_SHA 0x03000038 +# define TLS1_CK_DHE_RSA_WITH_AES_256_SHA 0x03000039 +# define TLS1_CK_ADH_WITH_AES_256_SHA 0x0300003A + +/* TLS v1.2 ciphersuites */ +# define TLS1_CK_RSA_WITH_NULL_SHA256 0x0300003B +# define TLS1_CK_RSA_WITH_AES_128_SHA256 0x0300003C +# define TLS1_CK_RSA_WITH_AES_256_SHA256 0x0300003D +# define TLS1_CK_DH_DSS_WITH_AES_128_SHA256 0x0300003E +# define TLS1_CK_DH_RSA_WITH_AES_128_SHA256 0x0300003F +# define TLS1_CK_DHE_DSS_WITH_AES_128_SHA256 0x03000040 + +/* Camellia ciphersuites from RFC4132 */ +# define TLS1_CK_RSA_WITH_CAMELLIA_128_CBC_SHA 0x03000041 +# define TLS1_CK_DH_DSS_WITH_CAMELLIA_128_CBC_SHA 0x03000042 +# define TLS1_CK_DH_RSA_WITH_CAMELLIA_128_CBC_SHA 0x03000043 +# define TLS1_CK_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA 0x03000044 +# define TLS1_CK_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA 0x03000045 +# define TLS1_CK_ADH_WITH_CAMELLIA_128_CBC_SHA 0x03000046 + +/* TLS v1.2 ciphersuites */ +# define TLS1_CK_DHE_RSA_WITH_AES_128_SHA256 0x03000067 +# define TLS1_CK_DH_DSS_WITH_AES_256_SHA256 0x03000068 +# define TLS1_CK_DH_RSA_WITH_AES_256_SHA256 0x03000069 +# define TLS1_CK_DHE_DSS_WITH_AES_256_SHA256 0x0300006A +# define TLS1_CK_DHE_RSA_WITH_AES_256_SHA256 0x0300006B +# define TLS1_CK_ADH_WITH_AES_128_SHA256 0x0300006C +# define TLS1_CK_ADH_WITH_AES_256_SHA256 0x0300006D + +/* Camellia ciphersuites from RFC4132 */ +# define TLS1_CK_RSA_WITH_CAMELLIA_256_CBC_SHA 0x03000084 +# define TLS1_CK_DH_DSS_WITH_CAMELLIA_256_CBC_SHA 0x03000085 +# define TLS1_CK_DH_RSA_WITH_CAMELLIA_256_CBC_SHA 0x03000086 +# define TLS1_CK_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA 0x03000087 +# define TLS1_CK_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA 0x03000088 +# define TLS1_CK_ADH_WITH_CAMELLIA_256_CBC_SHA 0x03000089 + +/* SEED ciphersuites from RFC4162 */ +# define TLS1_CK_RSA_WITH_SEED_SHA 0x03000096 +# define TLS1_CK_DH_DSS_WITH_SEED_SHA 0x03000097 +# define TLS1_CK_DH_RSA_WITH_SEED_SHA 0x03000098 +# define TLS1_CK_DHE_DSS_WITH_SEED_SHA 0x03000099 +# define TLS1_CK_DHE_RSA_WITH_SEED_SHA 0x0300009A +# define TLS1_CK_ADH_WITH_SEED_SHA 0x0300009B + +/* TLS v1.2 GCM ciphersuites from RFC5288 */ +# define TLS1_CK_RSA_WITH_AES_128_GCM_SHA256 0x0300009C +# define TLS1_CK_RSA_WITH_AES_256_GCM_SHA384 0x0300009D +# define TLS1_CK_DHE_RSA_WITH_AES_128_GCM_SHA256 0x0300009E +# define TLS1_CK_DHE_RSA_WITH_AES_256_GCM_SHA384 0x0300009F +# define TLS1_CK_DH_RSA_WITH_AES_128_GCM_SHA256 0x030000A0 +# define TLS1_CK_DH_RSA_WITH_AES_256_GCM_SHA384 0x030000A1 +# define TLS1_CK_DHE_DSS_WITH_AES_128_GCM_SHA256 0x030000A2 +# define TLS1_CK_DHE_DSS_WITH_AES_256_GCM_SHA384 0x030000A3 +# define TLS1_CK_DH_DSS_WITH_AES_128_GCM_SHA256 0x030000A4 +# define TLS1_CK_DH_DSS_WITH_AES_256_GCM_SHA384 0x030000A5 +# define TLS1_CK_ADH_WITH_AES_128_GCM_SHA256 0x030000A6 +# define TLS1_CK_ADH_WITH_AES_256_GCM_SHA384 0x030000A7 + +/* + * ECC ciphersuites from draft-ietf-tls-ecc-12.txt with changes soon to be in + * draft 13 + */ +# define TLS1_CK_ECDH_ECDSA_WITH_NULL_SHA 0x0300C001 +# define TLS1_CK_ECDH_ECDSA_WITH_RC4_128_SHA 0x0300C002 +# define TLS1_CK_ECDH_ECDSA_WITH_DES_192_CBC3_SHA 0x0300C003 +# define TLS1_CK_ECDH_ECDSA_WITH_AES_128_CBC_SHA 0x0300C004 +# define TLS1_CK_ECDH_ECDSA_WITH_AES_256_CBC_SHA 0x0300C005 + +# define TLS1_CK_ECDHE_ECDSA_WITH_NULL_SHA 0x0300C006 +# define TLS1_CK_ECDHE_ECDSA_WITH_RC4_128_SHA 0x0300C007 +# define TLS1_CK_ECDHE_ECDSA_WITH_DES_192_CBC3_SHA 0x0300C008 +# define TLS1_CK_ECDHE_ECDSA_WITH_AES_128_CBC_SHA 0x0300C009 +# define TLS1_CK_ECDHE_ECDSA_WITH_AES_256_CBC_SHA 0x0300C00A + +# define TLS1_CK_ECDH_RSA_WITH_NULL_SHA 0x0300C00B +# define TLS1_CK_ECDH_RSA_WITH_RC4_128_SHA 0x0300C00C +# define TLS1_CK_ECDH_RSA_WITH_DES_192_CBC3_SHA 0x0300C00D +# define TLS1_CK_ECDH_RSA_WITH_AES_128_CBC_SHA 0x0300C00E +# define TLS1_CK_ECDH_RSA_WITH_AES_256_CBC_SHA 0x0300C00F + +# define TLS1_CK_ECDHE_RSA_WITH_NULL_SHA 0x0300C010 +# define TLS1_CK_ECDHE_RSA_WITH_RC4_128_SHA 0x0300C011 +# define TLS1_CK_ECDHE_RSA_WITH_DES_192_CBC3_SHA 0x0300C012 +# define TLS1_CK_ECDHE_RSA_WITH_AES_128_CBC_SHA 0x0300C013 +# define TLS1_CK_ECDHE_RSA_WITH_AES_256_CBC_SHA 0x0300C014 + +# define TLS1_CK_ECDH_anon_WITH_NULL_SHA 0x0300C015 +# define TLS1_CK_ECDH_anon_WITH_RC4_128_SHA 0x0300C016 +# define TLS1_CK_ECDH_anon_WITH_DES_192_CBC3_SHA 0x0300C017 +# define TLS1_CK_ECDH_anon_WITH_AES_128_CBC_SHA 0x0300C018 +# define TLS1_CK_ECDH_anon_WITH_AES_256_CBC_SHA 0x0300C019 + +/* SRP ciphersuites from RFC 5054 */ +# define TLS1_CK_SRP_SHA_WITH_3DES_EDE_CBC_SHA 0x0300C01A +# define TLS1_CK_SRP_SHA_RSA_WITH_3DES_EDE_CBC_SHA 0x0300C01B +# define TLS1_CK_SRP_SHA_DSS_WITH_3DES_EDE_CBC_SHA 0x0300C01C +# define TLS1_CK_SRP_SHA_WITH_AES_128_CBC_SHA 0x0300C01D +# define TLS1_CK_SRP_SHA_RSA_WITH_AES_128_CBC_SHA 0x0300C01E +# define TLS1_CK_SRP_SHA_DSS_WITH_AES_128_CBC_SHA 0x0300C01F +# define TLS1_CK_SRP_SHA_WITH_AES_256_CBC_SHA 0x0300C020 +# define TLS1_CK_SRP_SHA_RSA_WITH_AES_256_CBC_SHA 0x0300C021 +# define TLS1_CK_SRP_SHA_DSS_WITH_AES_256_CBC_SHA 0x0300C022 + +/* ECDH HMAC based ciphersuites from RFC5289 */ + +# define TLS1_CK_ECDHE_ECDSA_WITH_AES_128_SHA256 0x0300C023 +# define TLS1_CK_ECDHE_ECDSA_WITH_AES_256_SHA384 0x0300C024 +# define TLS1_CK_ECDH_ECDSA_WITH_AES_128_SHA256 0x0300C025 +# define TLS1_CK_ECDH_ECDSA_WITH_AES_256_SHA384 0x0300C026 +# define TLS1_CK_ECDHE_RSA_WITH_AES_128_SHA256 0x0300C027 +# define TLS1_CK_ECDHE_RSA_WITH_AES_256_SHA384 0x0300C028 +# define TLS1_CK_ECDH_RSA_WITH_AES_128_SHA256 0x0300C029 +# define TLS1_CK_ECDH_RSA_WITH_AES_256_SHA384 0x0300C02A + +/* ECDH GCM based ciphersuites from RFC5289 */ +# define TLS1_CK_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 0x0300C02B +# define TLS1_CK_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 0x0300C02C +# define TLS1_CK_ECDH_ECDSA_WITH_AES_128_GCM_SHA256 0x0300C02D +# define TLS1_CK_ECDH_ECDSA_WITH_AES_256_GCM_SHA384 0x0300C02E +# define TLS1_CK_ECDHE_RSA_WITH_AES_128_GCM_SHA256 0x0300C02F +# define TLS1_CK_ECDHE_RSA_WITH_AES_256_GCM_SHA384 0x0300C030 +# define TLS1_CK_ECDH_RSA_WITH_AES_128_GCM_SHA256 0x0300C031 +# define TLS1_CK_ECDH_RSA_WITH_AES_256_GCM_SHA384 0x0300C032 + +/* + * XXX * Backward compatibility alert: + * Older versions of OpenSSL gave + * some DHE ciphers names with "EDH" + * instead of "DHE". Going forward, we + * should be using DHE + * everywhere, though we may indefinitely maintain + * aliases for users + * or configurations that used "EDH" + + */ +# define TLS1_TXT_RSA_EXPORT1024_WITH_RC4_56_MD5 "EXP1024-RC4-MD5" +# define TLS1_TXT_RSA_EXPORT1024_WITH_RC2_CBC_56_MD5 "EXP1024-RC2-CBC-MD5" +# define TLS1_TXT_RSA_EXPORT1024_WITH_DES_CBC_SHA "EXP1024-DES-CBC-SHA" +# define TLS1_TXT_DHE_DSS_EXPORT1024_WITH_DES_CBC_SHA "EXP1024-DHE-DSS-DES-CBC-SHA" +# define TLS1_TXT_RSA_EXPORT1024_WITH_RC4_56_SHA "EXP1024-RC4-SHA" +# define TLS1_TXT_DHE_DSS_EXPORT1024_WITH_RC4_56_SHA "EXP1024-DHE-DSS-RC4-SHA" +# define TLS1_TXT_DHE_DSS_WITH_RC4_128_SHA "DHE-DSS-RC4-SHA" + +/* AES ciphersuites from RFC3268 */ +# define TLS1_TXT_RSA_WITH_AES_128_SHA "AES128-SHA" +# define TLS1_TXT_DH_DSS_WITH_AES_128_SHA "DH-DSS-AES128-SHA" +# define TLS1_TXT_DH_RSA_WITH_AES_128_SHA "DH-RSA-AES128-SHA" +# define TLS1_TXT_DHE_DSS_WITH_AES_128_SHA "DHE-DSS-AES128-SHA" +# define TLS1_TXT_DHE_RSA_WITH_AES_128_SHA "DHE-RSA-AES128-SHA" +# define TLS1_TXT_ADH_WITH_AES_128_SHA "ADH-AES128-SHA" + +# define TLS1_TXT_RSA_WITH_AES_256_SHA "AES256-SHA" +# define TLS1_TXT_DH_DSS_WITH_AES_256_SHA "DH-DSS-AES256-SHA" +# define TLS1_TXT_DH_RSA_WITH_AES_256_SHA "DH-RSA-AES256-SHA" +# define TLS1_TXT_DHE_DSS_WITH_AES_256_SHA "DHE-DSS-AES256-SHA" +# define TLS1_TXT_DHE_RSA_WITH_AES_256_SHA "DHE-RSA-AES256-SHA" +# define TLS1_TXT_ADH_WITH_AES_256_SHA "ADH-AES256-SHA" + +/* ECC ciphersuites from draft-ietf-tls-ecc-01.txt (Mar 15, 2001) */ +# define TLS1_TXT_ECDH_ECDSA_WITH_NULL_SHA "ECDH-ECDSA-NULL-SHA" +# define TLS1_TXT_ECDH_ECDSA_WITH_RC4_128_SHA "ECDH-ECDSA-RC4-SHA" +# define TLS1_TXT_ECDH_ECDSA_WITH_DES_192_CBC3_SHA "ECDH-ECDSA-DES-CBC3-SHA" +# define TLS1_TXT_ECDH_ECDSA_WITH_AES_128_CBC_SHA "ECDH-ECDSA-AES128-SHA" +# define TLS1_TXT_ECDH_ECDSA_WITH_AES_256_CBC_SHA "ECDH-ECDSA-AES256-SHA" + +# define TLS1_TXT_ECDHE_ECDSA_WITH_NULL_SHA "ECDHE-ECDSA-NULL-SHA" +# define TLS1_TXT_ECDHE_ECDSA_WITH_RC4_128_SHA "ECDHE-ECDSA-RC4-SHA" +# define TLS1_TXT_ECDHE_ECDSA_WITH_DES_192_CBC3_SHA "ECDHE-ECDSA-DES-CBC3-SHA" +# define TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_CBC_SHA "ECDHE-ECDSA-AES128-SHA" +# define TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_CBC_SHA "ECDHE-ECDSA-AES256-SHA" + +# define TLS1_TXT_ECDH_RSA_WITH_NULL_SHA "ECDH-RSA-NULL-SHA" +# define TLS1_TXT_ECDH_RSA_WITH_RC4_128_SHA "ECDH-RSA-RC4-SHA" +# define TLS1_TXT_ECDH_RSA_WITH_DES_192_CBC3_SHA "ECDH-RSA-DES-CBC3-SHA" +# define TLS1_TXT_ECDH_RSA_WITH_AES_128_CBC_SHA "ECDH-RSA-AES128-SHA" +# define TLS1_TXT_ECDH_RSA_WITH_AES_256_CBC_SHA "ECDH-RSA-AES256-SHA" + +# define TLS1_TXT_ECDHE_RSA_WITH_NULL_SHA "ECDHE-RSA-NULL-SHA" +# define TLS1_TXT_ECDHE_RSA_WITH_RC4_128_SHA "ECDHE-RSA-RC4-SHA" +# define TLS1_TXT_ECDHE_RSA_WITH_DES_192_CBC3_SHA "ECDHE-RSA-DES-CBC3-SHA" +# define TLS1_TXT_ECDHE_RSA_WITH_AES_128_CBC_SHA "ECDHE-RSA-AES128-SHA" +# define TLS1_TXT_ECDHE_RSA_WITH_AES_256_CBC_SHA "ECDHE-RSA-AES256-SHA" + +# define TLS1_TXT_ECDH_anon_WITH_NULL_SHA "AECDH-NULL-SHA" +# define TLS1_TXT_ECDH_anon_WITH_RC4_128_SHA "AECDH-RC4-SHA" +# define TLS1_TXT_ECDH_anon_WITH_DES_192_CBC3_SHA "AECDH-DES-CBC3-SHA" +# define TLS1_TXT_ECDH_anon_WITH_AES_128_CBC_SHA "AECDH-AES128-SHA" +# define TLS1_TXT_ECDH_anon_WITH_AES_256_CBC_SHA "AECDH-AES256-SHA" + +/* PSK ciphersuites from RFC 4279 */ +# define TLS1_TXT_PSK_WITH_RC4_128_SHA "PSK-RC4-SHA" +# define TLS1_TXT_PSK_WITH_3DES_EDE_CBC_SHA "PSK-3DES-EDE-CBC-SHA" +# define TLS1_TXT_PSK_WITH_AES_128_CBC_SHA "PSK-AES128-CBC-SHA" +# define TLS1_TXT_PSK_WITH_AES_256_CBC_SHA "PSK-AES256-CBC-SHA" + +/* SRP ciphersuite from RFC 5054 */ +# define TLS1_TXT_SRP_SHA_WITH_3DES_EDE_CBC_SHA "SRP-3DES-EDE-CBC-SHA" +# define TLS1_TXT_SRP_SHA_RSA_WITH_3DES_EDE_CBC_SHA "SRP-RSA-3DES-EDE-CBC-SHA" +# define TLS1_TXT_SRP_SHA_DSS_WITH_3DES_EDE_CBC_SHA "SRP-DSS-3DES-EDE-CBC-SHA" +# define TLS1_TXT_SRP_SHA_WITH_AES_128_CBC_SHA "SRP-AES-128-CBC-SHA" +# define TLS1_TXT_SRP_SHA_RSA_WITH_AES_128_CBC_SHA "SRP-RSA-AES-128-CBC-SHA" +# define TLS1_TXT_SRP_SHA_DSS_WITH_AES_128_CBC_SHA "SRP-DSS-AES-128-CBC-SHA" +# define TLS1_TXT_SRP_SHA_WITH_AES_256_CBC_SHA "SRP-AES-256-CBC-SHA" +# define TLS1_TXT_SRP_SHA_RSA_WITH_AES_256_CBC_SHA "SRP-RSA-AES-256-CBC-SHA" +# define TLS1_TXT_SRP_SHA_DSS_WITH_AES_256_CBC_SHA "SRP-DSS-AES-256-CBC-SHA" + +/* Camellia ciphersuites from RFC4132 */ +# define TLS1_TXT_RSA_WITH_CAMELLIA_128_CBC_SHA "CAMELLIA128-SHA" +# define TLS1_TXT_DH_DSS_WITH_CAMELLIA_128_CBC_SHA "DH-DSS-CAMELLIA128-SHA" +# define TLS1_TXT_DH_RSA_WITH_CAMELLIA_128_CBC_SHA "DH-RSA-CAMELLIA128-SHA" +# define TLS1_TXT_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA "DHE-DSS-CAMELLIA128-SHA" +# define TLS1_TXT_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA "DHE-RSA-CAMELLIA128-SHA" +# define TLS1_TXT_ADH_WITH_CAMELLIA_128_CBC_SHA "ADH-CAMELLIA128-SHA" + +# define TLS1_TXT_RSA_WITH_CAMELLIA_256_CBC_SHA "CAMELLIA256-SHA" +# define TLS1_TXT_DH_DSS_WITH_CAMELLIA_256_CBC_SHA "DH-DSS-CAMELLIA256-SHA" +# define TLS1_TXT_DH_RSA_WITH_CAMELLIA_256_CBC_SHA "DH-RSA-CAMELLIA256-SHA" +# define TLS1_TXT_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA "DHE-DSS-CAMELLIA256-SHA" +# define TLS1_TXT_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA "DHE-RSA-CAMELLIA256-SHA" +# define TLS1_TXT_ADH_WITH_CAMELLIA_256_CBC_SHA "ADH-CAMELLIA256-SHA" + +/* SEED ciphersuites from RFC4162 */ +# define TLS1_TXT_RSA_WITH_SEED_SHA "SEED-SHA" +# define TLS1_TXT_DH_DSS_WITH_SEED_SHA "DH-DSS-SEED-SHA" +# define TLS1_TXT_DH_RSA_WITH_SEED_SHA "DH-RSA-SEED-SHA" +# define TLS1_TXT_DHE_DSS_WITH_SEED_SHA "DHE-DSS-SEED-SHA" +# define TLS1_TXT_DHE_RSA_WITH_SEED_SHA "DHE-RSA-SEED-SHA" +# define TLS1_TXT_ADH_WITH_SEED_SHA "ADH-SEED-SHA" + +/* TLS v1.2 ciphersuites */ +# define TLS1_TXT_RSA_WITH_NULL_SHA256 "NULL-SHA256" +# define TLS1_TXT_RSA_WITH_AES_128_SHA256 "AES128-SHA256" +# define TLS1_TXT_RSA_WITH_AES_256_SHA256 "AES256-SHA256" +# define TLS1_TXT_DH_DSS_WITH_AES_128_SHA256 "DH-DSS-AES128-SHA256" +# define TLS1_TXT_DH_RSA_WITH_AES_128_SHA256 "DH-RSA-AES128-SHA256" +# define TLS1_TXT_DHE_DSS_WITH_AES_128_SHA256 "DHE-DSS-AES128-SHA256" +# define TLS1_TXT_DHE_RSA_WITH_AES_128_SHA256 "DHE-RSA-AES128-SHA256" +# define TLS1_TXT_DH_DSS_WITH_AES_256_SHA256 "DH-DSS-AES256-SHA256" +# define TLS1_TXT_DH_RSA_WITH_AES_256_SHA256 "DH-RSA-AES256-SHA256" +# define TLS1_TXT_DHE_DSS_WITH_AES_256_SHA256 "DHE-DSS-AES256-SHA256" +# define TLS1_TXT_DHE_RSA_WITH_AES_256_SHA256 "DHE-RSA-AES256-SHA256" +# define TLS1_TXT_ADH_WITH_AES_128_SHA256 "ADH-AES128-SHA256" +# define TLS1_TXT_ADH_WITH_AES_256_SHA256 "ADH-AES256-SHA256" + +/* TLS v1.2 GCM ciphersuites from RFC5288 */ +# define TLS1_TXT_RSA_WITH_AES_128_GCM_SHA256 "AES128-GCM-SHA256" +# define TLS1_TXT_RSA_WITH_AES_256_GCM_SHA384 "AES256-GCM-SHA384" +# define TLS1_TXT_DHE_RSA_WITH_AES_128_GCM_SHA256 "DHE-RSA-AES128-GCM-SHA256" +# define TLS1_TXT_DHE_RSA_WITH_AES_256_GCM_SHA384 "DHE-RSA-AES256-GCM-SHA384" +# define TLS1_TXT_DH_RSA_WITH_AES_128_GCM_SHA256 "DH-RSA-AES128-GCM-SHA256" +# define TLS1_TXT_DH_RSA_WITH_AES_256_GCM_SHA384 "DH-RSA-AES256-GCM-SHA384" +# define TLS1_TXT_DHE_DSS_WITH_AES_128_GCM_SHA256 "DHE-DSS-AES128-GCM-SHA256" +# define TLS1_TXT_DHE_DSS_WITH_AES_256_GCM_SHA384 "DHE-DSS-AES256-GCM-SHA384" +# define TLS1_TXT_DH_DSS_WITH_AES_128_GCM_SHA256 "DH-DSS-AES128-GCM-SHA256" +# define TLS1_TXT_DH_DSS_WITH_AES_256_GCM_SHA384 "DH-DSS-AES256-GCM-SHA384" +# define TLS1_TXT_ADH_WITH_AES_128_GCM_SHA256 "ADH-AES128-GCM-SHA256" +# define TLS1_TXT_ADH_WITH_AES_256_GCM_SHA384 "ADH-AES256-GCM-SHA384" + +/* ECDH HMAC based ciphersuites from RFC5289 */ + +# define TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_SHA256 "ECDHE-ECDSA-AES128-SHA256" +# define TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_SHA384 "ECDHE-ECDSA-AES256-SHA384" +# define TLS1_TXT_ECDH_ECDSA_WITH_AES_128_SHA256 "ECDH-ECDSA-AES128-SHA256" +# define TLS1_TXT_ECDH_ECDSA_WITH_AES_256_SHA384 "ECDH-ECDSA-AES256-SHA384" +# define TLS1_TXT_ECDHE_RSA_WITH_AES_128_SHA256 "ECDHE-RSA-AES128-SHA256" +# define TLS1_TXT_ECDHE_RSA_WITH_AES_256_SHA384 "ECDHE-RSA-AES256-SHA384" +# define TLS1_TXT_ECDH_RSA_WITH_AES_128_SHA256 "ECDH-RSA-AES128-SHA256" +# define TLS1_TXT_ECDH_RSA_WITH_AES_256_SHA384 "ECDH-RSA-AES256-SHA384" + +/* ECDH GCM based ciphersuites from RFC5289 */ +# define TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 "ECDHE-ECDSA-AES128-GCM-SHA256" +# define TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 "ECDHE-ECDSA-AES256-GCM-SHA384" +# define TLS1_TXT_ECDH_ECDSA_WITH_AES_128_GCM_SHA256 "ECDH-ECDSA-AES128-GCM-SHA256" +# define TLS1_TXT_ECDH_ECDSA_WITH_AES_256_GCM_SHA384 "ECDH-ECDSA-AES256-GCM-SHA384" +# define TLS1_TXT_ECDHE_RSA_WITH_AES_128_GCM_SHA256 "ECDHE-RSA-AES128-GCM-SHA256" +# define TLS1_TXT_ECDHE_RSA_WITH_AES_256_GCM_SHA384 "ECDHE-RSA-AES256-GCM-SHA384" +# define TLS1_TXT_ECDH_RSA_WITH_AES_128_GCM_SHA256 "ECDH-RSA-AES128-GCM-SHA256" +# define TLS1_TXT_ECDH_RSA_WITH_AES_256_GCM_SHA384 "ECDH-RSA-AES256-GCM-SHA384" + +# define TLS_CT_RSA_SIGN 1 +# define TLS_CT_DSS_SIGN 2 +# define TLS_CT_RSA_FIXED_DH 3 +# define TLS_CT_DSS_FIXED_DH 4 +# define TLS_CT_ECDSA_SIGN 64 +# define TLS_CT_RSA_FIXED_ECDH 65 +# define TLS_CT_ECDSA_FIXED_ECDH 66 +# define TLS_CT_GOST94_SIGN 21 +# define TLS_CT_GOST01_SIGN 22 +/* + * when correcting this number, correct also SSL3_CT_NUMBER in ssl3.h (see + * comment there) + */ +# define TLS_CT_NUMBER 9 + +# define TLS1_FINISH_MAC_LENGTH 12 + +# define TLS_MD_MAX_CONST_SIZE 20 +# define TLS_MD_CLIENT_FINISH_CONST "client finished" +# define TLS_MD_CLIENT_FINISH_CONST_SIZE 15 +# define TLS_MD_SERVER_FINISH_CONST "server finished" +# define TLS_MD_SERVER_FINISH_CONST_SIZE 15 +# define TLS_MD_SERVER_WRITE_KEY_CONST "server write key" +# define TLS_MD_SERVER_WRITE_KEY_CONST_SIZE 16 +# define TLS_MD_KEY_EXPANSION_CONST "key expansion" +# define TLS_MD_KEY_EXPANSION_CONST_SIZE 13 +# define TLS_MD_CLIENT_WRITE_KEY_CONST "client write key" +# define TLS_MD_CLIENT_WRITE_KEY_CONST_SIZE 16 +# define TLS_MD_SERVER_WRITE_KEY_CONST "server write key" +# define TLS_MD_SERVER_WRITE_KEY_CONST_SIZE 16 +# define TLS_MD_IV_BLOCK_CONST "IV block" +# define TLS_MD_IV_BLOCK_CONST_SIZE 8 +# define TLS_MD_MASTER_SECRET_CONST "master secret" +# define TLS_MD_MASTER_SECRET_CONST_SIZE 13 + +# ifdef CHARSET_EBCDIC +# undef TLS_MD_CLIENT_FINISH_CONST +/* + * client finished + */ +# define TLS_MD_CLIENT_FINISH_CONST "\x63\x6c\x69\x65\x6e\x74\x20\x66\x69\x6e\x69\x73\x68\x65\x64" + +# undef TLS_MD_SERVER_FINISH_CONST +/* + * server finished + */ +# define TLS_MD_SERVER_FINISH_CONST "\x73\x65\x72\x76\x65\x72\x20\x66\x69\x6e\x69\x73\x68\x65\x64" + +# undef TLS_MD_SERVER_WRITE_KEY_CONST +/* + * server write key + */ +# define TLS_MD_SERVER_WRITE_KEY_CONST "\x73\x65\x72\x76\x65\x72\x20\x77\x72\x69\x74\x65\x20\x6b\x65\x79" + +# undef TLS_MD_KEY_EXPANSION_CONST +/* + * key expansion + */ +# define TLS_MD_KEY_EXPANSION_CONST "\x6b\x65\x79\x20\x65\x78\x70\x61\x6e\x73\x69\x6f\x6e" + +# undef TLS_MD_CLIENT_WRITE_KEY_CONST +/* + * client write key + */ +# define TLS_MD_CLIENT_WRITE_KEY_CONST "\x63\x6c\x69\x65\x6e\x74\x20\x77\x72\x69\x74\x65\x20\x6b\x65\x79" + +# undef TLS_MD_SERVER_WRITE_KEY_CONST +/* + * server write key + */ +# define TLS_MD_SERVER_WRITE_KEY_CONST "\x73\x65\x72\x76\x65\x72\x20\x77\x72\x69\x74\x65\x20\x6b\x65\x79" + +# undef TLS_MD_IV_BLOCK_CONST +/* + * IV block + */ +# define TLS_MD_IV_BLOCK_CONST "\x49\x56\x20\x62\x6c\x6f\x63\x6b" + +# undef TLS_MD_MASTER_SECRET_CONST +/* + * master secret + */ +# define TLS_MD_MASTER_SECRET_CONST "\x6d\x61\x73\x74\x65\x72\x20\x73\x65\x63\x72\x65\x74" +# endif + +/* TLS Session Ticket extension struct */ +struct tls_session_ticket_ext_st { + unsigned short length; + void *data; +}; + +#ifdef __cplusplus +} +#endif +#endif diff --git a/ext/openssl-win64/inc32/openssl/x509.h b/ext/openssl-win64/inc32/openssl/x509.h new file mode 100644 index 00000000..99337b84 --- /dev/null +++ b/ext/openssl-win64/inc32/openssl/x509.h @@ -0,0 +1,1327 @@ +/* crypto/x509/x509.h */ +/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) + * All rights reserved. + * + * This package is an SSL implementation written + * by Eric Young (eay@cryptsoft.com). + * The implementation was written so as to conform with Netscapes SSL. + * + * This library is free for commercial and non-commercial use as long as + * the following conditions are aheared to. The following conditions + * apply to all code found in this distribution, be it the RC4, RSA, + * lhash, DES, etc., code; not just the SSL code. The SSL documentation + * included with this distribution is covered by the same copyright terms + * except that the holder is Tim Hudson (tjh@cryptsoft.com). + * + * Copyright remains Eric Young's, and as such any Copyright notices in + * the code are not to be removed. + * If this package is used in a product, Eric Young should be given attribution + * as the author of the parts of the library used. + * This can be in the form of a textual message at program startup or + * in documentation (online or textual) provided with the package. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * "This product includes cryptographic software written by + * Eric Young (eay@cryptsoft.com)" + * The word 'cryptographic' can be left out if the rouines from the library + * being used are not cryptographic related :-). + * 4. If you include any Windows specific code (or a derivative thereof) from + * the apps directory (application code) you must include an acknowledgement: + * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" + * + * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * The licence and distribution terms for any publically available version or + * derivative of this code cannot be changed. i.e. this code cannot simply be + * copied and put under another distribution licence + * [including the GNU Public Licence.] + */ +/* ==================================================================== + * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED. + * ECDH support in OpenSSL originally developed by + * SUN MICROSYSTEMS, INC., and contributed to the OpenSSL project. + */ + +#ifndef HEADER_X509_H +# define HEADER_X509_H + +# include +# include +# ifndef OPENSSL_NO_BUFFER +# include +# endif +# ifndef OPENSSL_NO_EVP +# include +# endif +# ifndef OPENSSL_NO_BIO +# include +# endif +# include +# include +# include + +# ifndef OPENSSL_NO_EC +# include +# endif + +# ifndef OPENSSL_NO_ECDSA +# include +# endif + +# ifndef OPENSSL_NO_ECDH +# include +# endif + +# ifndef OPENSSL_NO_DEPRECATED +# ifndef OPENSSL_NO_RSA +# include +# endif +# ifndef OPENSSL_NO_DSA +# include +# endif +# ifndef OPENSSL_NO_DH +# include +# endif +# endif + +# ifndef OPENSSL_NO_SHA +# include +# endif +# include + +#ifdef __cplusplus +extern "C" { +#endif + +# ifdef OPENSSL_SYS_WIN32 +/* Under Win32 these are defined in wincrypt.h */ +# undef X509_NAME +# undef X509_CERT_PAIR +# undef X509_EXTENSIONS +# endif + +# define X509_FILETYPE_PEM 1 +# define X509_FILETYPE_ASN1 2 +# define X509_FILETYPE_DEFAULT 3 + +# define X509v3_KU_DIGITAL_SIGNATURE 0x0080 +# define X509v3_KU_NON_REPUDIATION 0x0040 +# define X509v3_KU_KEY_ENCIPHERMENT 0x0020 +# define X509v3_KU_DATA_ENCIPHERMENT 0x0010 +# define X509v3_KU_KEY_AGREEMENT 0x0008 +# define X509v3_KU_KEY_CERT_SIGN 0x0004 +# define X509v3_KU_CRL_SIGN 0x0002 +# define X509v3_KU_ENCIPHER_ONLY 0x0001 +# define X509v3_KU_DECIPHER_ONLY 0x8000 +# define X509v3_KU_UNDEF 0xffff + +typedef struct X509_objects_st { + int nid; + int (*a2i) (void); + int (*i2a) (void); +} X509_OBJECTS; + +struct X509_algor_st { + ASN1_OBJECT *algorithm; + ASN1_TYPE *parameter; +} /* X509_ALGOR */ ; + +DECLARE_ASN1_SET_OF(X509_ALGOR) + +typedef STACK_OF(X509_ALGOR) X509_ALGORS; + +typedef struct X509_val_st { + ASN1_TIME *notBefore; + ASN1_TIME *notAfter; +} X509_VAL; + +struct X509_pubkey_st { + X509_ALGOR *algor; + ASN1_BIT_STRING *public_key; + EVP_PKEY *pkey; +}; + +typedef struct X509_sig_st { + X509_ALGOR *algor; + ASN1_OCTET_STRING *digest; +} X509_SIG; + +typedef struct X509_name_entry_st { + ASN1_OBJECT *object; + ASN1_STRING *value; + int set; + int size; /* temp variable */ +} X509_NAME_ENTRY; + +DECLARE_STACK_OF(X509_NAME_ENTRY) +DECLARE_ASN1_SET_OF(X509_NAME_ENTRY) + +/* we always keep X509_NAMEs in 2 forms. */ +struct X509_name_st { + STACK_OF(X509_NAME_ENTRY) *entries; + int modified; /* true if 'bytes' needs to be built */ +# ifndef OPENSSL_NO_BUFFER + BUF_MEM *bytes; +# else + char *bytes; +# endif +/* unsigned long hash; Keep the hash around for lookups */ + unsigned char *canon_enc; + int canon_enclen; +} /* X509_NAME */ ; + +DECLARE_STACK_OF(X509_NAME) + +# define X509_EX_V_NETSCAPE_HACK 0x8000 +# define X509_EX_V_INIT 0x0001 +typedef struct X509_extension_st { + ASN1_OBJECT *object; + ASN1_BOOLEAN critical; + ASN1_OCTET_STRING *value; +} X509_EXTENSION; + +typedef STACK_OF(X509_EXTENSION) X509_EXTENSIONS; + +DECLARE_STACK_OF(X509_EXTENSION) +DECLARE_ASN1_SET_OF(X509_EXTENSION) + +/* a sequence of these are used */ +typedef struct x509_attributes_st { + ASN1_OBJECT *object; + int single; /* 0 for a set, 1 for a single item (which is + * wrong) */ + union { + char *ptr; + /* + * 0 + */ STACK_OF(ASN1_TYPE) *set; + /* + * 1 + */ ASN1_TYPE *single; + } value; +} X509_ATTRIBUTE; + +DECLARE_STACK_OF(X509_ATTRIBUTE) +DECLARE_ASN1_SET_OF(X509_ATTRIBUTE) + +typedef struct X509_req_info_st { + ASN1_ENCODING enc; + ASN1_INTEGER *version; + X509_NAME *subject; + X509_PUBKEY *pubkey; + /* d=2 hl=2 l= 0 cons: cont: 00 */ + STACK_OF(X509_ATTRIBUTE) *attributes; /* [ 0 ] */ +} X509_REQ_INFO; + +typedef struct X509_req_st { + X509_REQ_INFO *req_info; + X509_ALGOR *sig_alg; + ASN1_BIT_STRING *signature; + int references; +} X509_REQ; + +typedef struct x509_cinf_st { + ASN1_INTEGER *version; /* [ 0 ] default of v1 */ + ASN1_INTEGER *serialNumber; + X509_ALGOR *signature; + X509_NAME *issuer; + X509_VAL *validity; + X509_NAME *subject; + X509_PUBKEY *key; + ASN1_BIT_STRING *issuerUID; /* [ 1 ] optional in v2 */ + ASN1_BIT_STRING *subjectUID; /* [ 2 ] optional in v2 */ + STACK_OF(X509_EXTENSION) *extensions; /* [ 3 ] optional in v3 */ + ASN1_ENCODING enc; +} X509_CINF; + +/* + * This stuff is certificate "auxiliary info" it contains details which are + * useful in certificate stores and databases. When used this is tagged onto + * the end of the certificate itself + */ + +typedef struct x509_cert_aux_st { + STACK_OF(ASN1_OBJECT) *trust; /* trusted uses */ + STACK_OF(ASN1_OBJECT) *reject; /* rejected uses */ + ASN1_UTF8STRING *alias; /* "friendly name" */ + ASN1_OCTET_STRING *keyid; /* key id of private key */ + STACK_OF(X509_ALGOR) *other; /* other unspecified info */ +} X509_CERT_AUX; + +struct x509_st { + X509_CINF *cert_info; + X509_ALGOR *sig_alg; + ASN1_BIT_STRING *signature; + int valid; + int references; + char *name; + CRYPTO_EX_DATA ex_data; + /* These contain copies of various extension values */ + long ex_pathlen; + long ex_pcpathlen; + unsigned long ex_flags; + unsigned long ex_kusage; + unsigned long ex_xkusage; + unsigned long ex_nscert; + ASN1_OCTET_STRING *skid; + AUTHORITY_KEYID *akid; + X509_POLICY_CACHE *policy_cache; + STACK_OF(DIST_POINT) *crldp; + STACK_OF(GENERAL_NAME) *altname; + NAME_CONSTRAINTS *nc; +# ifndef OPENSSL_NO_RFC3779 + STACK_OF(IPAddressFamily) *rfc3779_addr; + struct ASIdentifiers_st *rfc3779_asid; +# endif +# ifndef OPENSSL_NO_SHA + unsigned char sha1_hash[SHA_DIGEST_LENGTH]; +# endif + X509_CERT_AUX *aux; +} /* X509 */ ; + +DECLARE_STACK_OF(X509) +DECLARE_ASN1_SET_OF(X509) + +/* This is used for a table of trust checking functions */ + +typedef struct x509_trust_st { + int trust; + int flags; + int (*check_trust) (struct x509_trust_st *, X509 *, int); + char *name; + int arg1; + void *arg2; +} X509_TRUST; + +DECLARE_STACK_OF(X509_TRUST) + +typedef struct x509_cert_pair_st { + X509 *forward; + X509 *reverse; +} X509_CERT_PAIR; + +/* standard trust ids */ + +# define X509_TRUST_DEFAULT -1/* Only valid in purpose settings */ + +# define X509_TRUST_COMPAT 1 +# define X509_TRUST_SSL_CLIENT 2 +# define X509_TRUST_SSL_SERVER 3 +# define X509_TRUST_EMAIL 4 +# define X509_TRUST_OBJECT_SIGN 5 +# define X509_TRUST_OCSP_SIGN 6 +# define X509_TRUST_OCSP_REQUEST 7 +# define X509_TRUST_TSA 8 + +/* Keep these up to date! */ +# define X509_TRUST_MIN 1 +# define X509_TRUST_MAX 8 + +/* trust_flags values */ +# define X509_TRUST_DYNAMIC 1 +# define X509_TRUST_DYNAMIC_NAME 2 + +/* check_trust return codes */ + +# define X509_TRUST_TRUSTED 1 +# define X509_TRUST_REJECTED 2 +# define X509_TRUST_UNTRUSTED 3 + +/* Flags for X509_print_ex() */ + +# define X509_FLAG_COMPAT 0 +# define X509_FLAG_NO_HEADER 1L +# define X509_FLAG_NO_VERSION (1L << 1) +# define X509_FLAG_NO_SERIAL (1L << 2) +# define X509_FLAG_NO_SIGNAME (1L << 3) +# define X509_FLAG_NO_ISSUER (1L << 4) +# define X509_FLAG_NO_VALIDITY (1L << 5) +# define X509_FLAG_NO_SUBJECT (1L << 6) +# define X509_FLAG_NO_PUBKEY (1L << 7) +# define X509_FLAG_NO_EXTENSIONS (1L << 8) +# define X509_FLAG_NO_SIGDUMP (1L << 9) +# define X509_FLAG_NO_AUX (1L << 10) +# define X509_FLAG_NO_ATTRIBUTES (1L << 11) +# define X509_FLAG_NO_IDS (1L << 12) + +/* Flags specific to X509_NAME_print_ex() */ + +/* The field separator information */ + +# define XN_FLAG_SEP_MASK (0xf << 16) + +# define XN_FLAG_COMPAT 0/* Traditional SSLeay: use old + * X509_NAME_print */ +# define XN_FLAG_SEP_COMMA_PLUS (1 << 16)/* RFC2253 ,+ */ +# define XN_FLAG_SEP_CPLUS_SPC (2 << 16)/* ,+ spaced: more readable */ +# define XN_FLAG_SEP_SPLUS_SPC (3 << 16)/* ;+ spaced */ +# define XN_FLAG_SEP_MULTILINE (4 << 16)/* One line per field */ + +# define XN_FLAG_DN_REV (1 << 20)/* Reverse DN order */ + +/* How the field name is shown */ + +# define XN_FLAG_FN_MASK (0x3 << 21) + +# define XN_FLAG_FN_SN 0/* Object short name */ +# define XN_FLAG_FN_LN (1 << 21)/* Object long name */ +# define XN_FLAG_FN_OID (2 << 21)/* Always use OIDs */ +# define XN_FLAG_FN_NONE (3 << 21)/* No field names */ + +# define XN_FLAG_SPC_EQ (1 << 23)/* Put spaces round '=' */ + +/* + * This determines if we dump fields we don't recognise: RFC2253 requires + * this. + */ + +# define XN_FLAG_DUMP_UNKNOWN_FIELDS (1 << 24) + +# define XN_FLAG_FN_ALIGN (1 << 25)/* Align field names to 20 + * characters */ + +/* Complete set of RFC2253 flags */ + +# define XN_FLAG_RFC2253 (ASN1_STRFLGS_RFC2253 | \ + XN_FLAG_SEP_COMMA_PLUS | \ + XN_FLAG_DN_REV | \ + XN_FLAG_FN_SN | \ + XN_FLAG_DUMP_UNKNOWN_FIELDS) + +/* readable oneline form */ + +# define XN_FLAG_ONELINE (ASN1_STRFLGS_RFC2253 | \ + ASN1_STRFLGS_ESC_QUOTE | \ + XN_FLAG_SEP_CPLUS_SPC | \ + XN_FLAG_SPC_EQ | \ + XN_FLAG_FN_SN) + +/* readable multiline form */ + +# define XN_FLAG_MULTILINE (ASN1_STRFLGS_ESC_CTRL | \ + ASN1_STRFLGS_ESC_MSB | \ + XN_FLAG_SEP_MULTILINE | \ + XN_FLAG_SPC_EQ | \ + XN_FLAG_FN_LN | \ + XN_FLAG_FN_ALIGN) + +struct x509_revoked_st { + ASN1_INTEGER *serialNumber; + ASN1_TIME *revocationDate; + STACK_OF(X509_EXTENSION) /* optional */ *extensions; + /* Set up if indirect CRL */ + STACK_OF(GENERAL_NAME) *issuer; + /* Revocation reason */ + int reason; + int sequence; /* load sequence */ +}; + +DECLARE_STACK_OF(X509_REVOKED) +DECLARE_ASN1_SET_OF(X509_REVOKED) + +typedef struct X509_crl_info_st { + ASN1_INTEGER *version; + X509_ALGOR *sig_alg; + X509_NAME *issuer; + ASN1_TIME *lastUpdate; + ASN1_TIME *nextUpdate; + STACK_OF(X509_REVOKED) *revoked; + STACK_OF(X509_EXTENSION) /* [0] */ *extensions; + ASN1_ENCODING enc; +} X509_CRL_INFO; + +struct X509_crl_st { + /* actual signature */ + X509_CRL_INFO *crl; + X509_ALGOR *sig_alg; + ASN1_BIT_STRING *signature; + int references; + int flags; + /* Copies of various extensions */ + AUTHORITY_KEYID *akid; + ISSUING_DIST_POINT *idp; + /* Convenient breakdown of IDP */ + int idp_flags; + int idp_reasons; + /* CRL and base CRL numbers for delta processing */ + ASN1_INTEGER *crl_number; + ASN1_INTEGER *base_crl_number; +# ifndef OPENSSL_NO_SHA + unsigned char sha1_hash[SHA_DIGEST_LENGTH]; +# endif + STACK_OF(GENERAL_NAMES) *issuers; + const X509_CRL_METHOD *meth; + void *meth_data; +} /* X509_CRL */ ; + +DECLARE_STACK_OF(X509_CRL) +DECLARE_ASN1_SET_OF(X509_CRL) + +typedef struct private_key_st { + int version; + /* The PKCS#8 data types */ + X509_ALGOR *enc_algor; + ASN1_OCTET_STRING *enc_pkey; /* encrypted pub key */ + /* When decrypted, the following will not be NULL */ + EVP_PKEY *dec_pkey; + /* used to encrypt and decrypt */ + int key_length; + char *key_data; + int key_free; /* true if we should auto free key_data */ + /* expanded version of 'enc_algor' */ + EVP_CIPHER_INFO cipher; + int references; +} X509_PKEY; + +# ifndef OPENSSL_NO_EVP +typedef struct X509_info_st { + X509 *x509; + X509_CRL *crl; + X509_PKEY *x_pkey; + EVP_CIPHER_INFO enc_cipher; + int enc_len; + char *enc_data; + int references; +} X509_INFO; + +DECLARE_STACK_OF(X509_INFO) +# endif + +/* + * The next 2 structures and their 8 routines were sent to me by Pat Richard + * and are used to manipulate Netscapes spki structures - + * useful if you are writing a CA web page + */ +typedef struct Netscape_spkac_st { + X509_PUBKEY *pubkey; + ASN1_IA5STRING *challenge; /* challenge sent in atlas >= PR2 */ +} NETSCAPE_SPKAC; + +typedef struct Netscape_spki_st { + NETSCAPE_SPKAC *spkac; /* signed public key and challenge */ + X509_ALGOR *sig_algor; + ASN1_BIT_STRING *signature; +} NETSCAPE_SPKI; + +/* Netscape certificate sequence structure */ +typedef struct Netscape_certificate_sequence { + ASN1_OBJECT *type; + STACK_OF(X509) *certs; +} NETSCAPE_CERT_SEQUENCE; + +/*- Unused (and iv length is wrong) +typedef struct CBCParameter_st + { + unsigned char iv[8]; + } CBC_PARAM; +*/ + +/* Password based encryption structure */ + +typedef struct PBEPARAM_st { + ASN1_OCTET_STRING *salt; + ASN1_INTEGER *iter; +} PBEPARAM; + +/* Password based encryption V2 structures */ + +typedef struct PBE2PARAM_st { + X509_ALGOR *keyfunc; + X509_ALGOR *encryption; +} PBE2PARAM; + +typedef struct PBKDF2PARAM_st { +/* Usually OCTET STRING but could be anything */ + ASN1_TYPE *salt; + ASN1_INTEGER *iter; + ASN1_INTEGER *keylength; + X509_ALGOR *prf; +} PBKDF2PARAM; + +/* PKCS#8 private key info structure */ + +struct pkcs8_priv_key_info_st { + /* Flag for various broken formats */ + int broken; +# define PKCS8_OK 0 +# define PKCS8_NO_OCTET 1 +# define PKCS8_EMBEDDED_PARAM 2 +# define PKCS8_NS_DB 3 +# define PKCS8_NEG_PRIVKEY 4 + ASN1_INTEGER *version; + X509_ALGOR *pkeyalg; + /* Should be OCTET STRING but some are broken */ + ASN1_TYPE *pkey; + STACK_OF(X509_ATTRIBUTE) *attributes; +}; + +#ifdef __cplusplus +} +#endif + +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +# define X509_EXT_PACK_UNKNOWN 1 +# define X509_EXT_PACK_STRING 2 + +# define X509_get_version(x) ASN1_INTEGER_get((x)->cert_info->version) +/* #define X509_get_serialNumber(x) ((x)->cert_info->serialNumber) */ +# define X509_get_notBefore(x) ((x)->cert_info->validity->notBefore) +# define X509_get_notAfter(x) ((x)->cert_info->validity->notAfter) +# define X509_extract_key(x) X509_get_pubkey(x)/*****/ +# define X509_REQ_get_version(x) ASN1_INTEGER_get((x)->req_info->version) +# define X509_REQ_get_subject_name(x) ((x)->req_info->subject) +# define X509_REQ_extract_key(a) X509_REQ_get_pubkey(a) +# define X509_name_cmp(a,b) X509_NAME_cmp((a),(b)) +# define X509_get_signature_type(x) EVP_PKEY_type(OBJ_obj2nid((x)->sig_alg->algorithm)) + +# define X509_CRL_get_version(x) ASN1_INTEGER_get((x)->crl->version) +# define X509_CRL_get_lastUpdate(x) ((x)->crl->lastUpdate) +# define X509_CRL_get_nextUpdate(x) ((x)->crl->nextUpdate) +# define X509_CRL_get_issuer(x) ((x)->crl->issuer) +# define X509_CRL_get_REVOKED(x) ((x)->crl->revoked) + +void X509_CRL_set_default_method(const X509_CRL_METHOD *meth); +X509_CRL_METHOD *X509_CRL_METHOD_new(int (*crl_init) (X509_CRL *crl), + int (*crl_free) (X509_CRL *crl), + int (*crl_lookup) (X509_CRL *crl, + X509_REVOKED **ret, + ASN1_INTEGER *ser, + X509_NAME *issuer), + int (*crl_verify) (X509_CRL *crl, + EVP_PKEY *pk)); +void X509_CRL_METHOD_free(X509_CRL_METHOD *m); + +void X509_CRL_set_meth_data(X509_CRL *crl, void *dat); +void *X509_CRL_get_meth_data(X509_CRL *crl); + +/* + * This one is only used so that a binary form can output, as in + * i2d_X509_NAME(X509_get_X509_PUBKEY(x),&buf) + */ +# define X509_get_X509_PUBKEY(x) ((x)->cert_info->key) + +const char *X509_verify_cert_error_string(long n); + +# ifndef OPENSSL_NO_EVP +int X509_verify(X509 *a, EVP_PKEY *r); + +int X509_REQ_verify(X509_REQ *a, EVP_PKEY *r); +int X509_CRL_verify(X509_CRL *a, EVP_PKEY *r); +int NETSCAPE_SPKI_verify(NETSCAPE_SPKI *a, EVP_PKEY *r); + +NETSCAPE_SPKI *NETSCAPE_SPKI_b64_decode(const char *str, int len); +char *NETSCAPE_SPKI_b64_encode(NETSCAPE_SPKI *x); +EVP_PKEY *NETSCAPE_SPKI_get_pubkey(NETSCAPE_SPKI *x); +int NETSCAPE_SPKI_set_pubkey(NETSCAPE_SPKI *x, EVP_PKEY *pkey); + +int NETSCAPE_SPKI_print(BIO *out, NETSCAPE_SPKI *spki); + +int X509_signature_dump(BIO *bp, const ASN1_STRING *sig, int indent); +int X509_signature_print(BIO *bp, X509_ALGOR *alg, ASN1_STRING *sig); + +int X509_sign(X509 *x, EVP_PKEY *pkey, const EVP_MD *md); +int X509_sign_ctx(X509 *x, EVP_MD_CTX *ctx); +int X509_http_nbio(OCSP_REQ_CTX *rctx, X509 **pcert); +int X509_REQ_sign(X509_REQ *x, EVP_PKEY *pkey, const EVP_MD *md); +int X509_REQ_sign_ctx(X509_REQ *x, EVP_MD_CTX *ctx); +int X509_CRL_sign(X509_CRL *x, EVP_PKEY *pkey, const EVP_MD *md); +int X509_CRL_sign_ctx(X509_CRL *x, EVP_MD_CTX *ctx); +int X509_CRL_http_nbio(OCSP_REQ_CTX *rctx, X509_CRL **pcrl); +int NETSCAPE_SPKI_sign(NETSCAPE_SPKI *x, EVP_PKEY *pkey, const EVP_MD *md); + +int X509_pubkey_digest(const X509 *data, const EVP_MD *type, + unsigned char *md, unsigned int *len); +int X509_digest(const X509 *data, const EVP_MD *type, + unsigned char *md, unsigned int *len); +int X509_CRL_digest(const X509_CRL *data, const EVP_MD *type, + unsigned char *md, unsigned int *len); +int X509_REQ_digest(const X509_REQ *data, const EVP_MD *type, + unsigned char *md, unsigned int *len); +int X509_NAME_digest(const X509_NAME *data, const EVP_MD *type, + unsigned char *md, unsigned int *len); +# endif + +# ifndef OPENSSL_NO_FP_API +X509 *d2i_X509_fp(FILE *fp, X509 **x509); +int i2d_X509_fp(FILE *fp, X509 *x509); +X509_CRL *d2i_X509_CRL_fp(FILE *fp, X509_CRL **crl); +int i2d_X509_CRL_fp(FILE *fp, X509_CRL *crl); +X509_REQ *d2i_X509_REQ_fp(FILE *fp, X509_REQ **req); +int i2d_X509_REQ_fp(FILE *fp, X509_REQ *req); +# ifndef OPENSSL_NO_RSA +RSA *d2i_RSAPrivateKey_fp(FILE *fp, RSA **rsa); +int i2d_RSAPrivateKey_fp(FILE *fp, RSA *rsa); +RSA *d2i_RSAPublicKey_fp(FILE *fp, RSA **rsa); +int i2d_RSAPublicKey_fp(FILE *fp, RSA *rsa); +RSA *d2i_RSA_PUBKEY_fp(FILE *fp, RSA **rsa); +int i2d_RSA_PUBKEY_fp(FILE *fp, RSA *rsa); +# endif +# ifndef OPENSSL_NO_DSA +DSA *d2i_DSA_PUBKEY_fp(FILE *fp, DSA **dsa); +int i2d_DSA_PUBKEY_fp(FILE *fp, DSA *dsa); +DSA *d2i_DSAPrivateKey_fp(FILE *fp, DSA **dsa); +int i2d_DSAPrivateKey_fp(FILE *fp, DSA *dsa); +# endif +# ifndef OPENSSL_NO_EC +EC_KEY *d2i_EC_PUBKEY_fp(FILE *fp, EC_KEY **eckey); +int i2d_EC_PUBKEY_fp(FILE *fp, EC_KEY *eckey); +EC_KEY *d2i_ECPrivateKey_fp(FILE *fp, EC_KEY **eckey); +int i2d_ECPrivateKey_fp(FILE *fp, EC_KEY *eckey); +# endif +X509_SIG *d2i_PKCS8_fp(FILE *fp, X509_SIG **p8); +int i2d_PKCS8_fp(FILE *fp, X509_SIG *p8); +PKCS8_PRIV_KEY_INFO *d2i_PKCS8_PRIV_KEY_INFO_fp(FILE *fp, + PKCS8_PRIV_KEY_INFO **p8inf); +int i2d_PKCS8_PRIV_KEY_INFO_fp(FILE *fp, PKCS8_PRIV_KEY_INFO *p8inf); +int i2d_PKCS8PrivateKeyInfo_fp(FILE *fp, EVP_PKEY *key); +int i2d_PrivateKey_fp(FILE *fp, EVP_PKEY *pkey); +EVP_PKEY *d2i_PrivateKey_fp(FILE *fp, EVP_PKEY **a); +int i2d_PUBKEY_fp(FILE *fp, EVP_PKEY *pkey); +EVP_PKEY *d2i_PUBKEY_fp(FILE *fp, EVP_PKEY **a); +# endif + +# ifndef OPENSSL_NO_BIO +X509 *d2i_X509_bio(BIO *bp, X509 **x509); +int i2d_X509_bio(BIO *bp, X509 *x509); +X509_CRL *d2i_X509_CRL_bio(BIO *bp, X509_CRL **crl); +int i2d_X509_CRL_bio(BIO *bp, X509_CRL *crl); +X509_REQ *d2i_X509_REQ_bio(BIO *bp, X509_REQ **req); +int i2d_X509_REQ_bio(BIO *bp, X509_REQ *req); +# ifndef OPENSSL_NO_RSA +RSA *d2i_RSAPrivateKey_bio(BIO *bp, RSA **rsa); +int i2d_RSAPrivateKey_bio(BIO *bp, RSA *rsa); +RSA *d2i_RSAPublicKey_bio(BIO *bp, RSA **rsa); +int i2d_RSAPublicKey_bio(BIO *bp, RSA *rsa); +RSA *d2i_RSA_PUBKEY_bio(BIO *bp, RSA **rsa); +int i2d_RSA_PUBKEY_bio(BIO *bp, RSA *rsa); +# endif +# ifndef OPENSSL_NO_DSA +DSA *d2i_DSA_PUBKEY_bio(BIO *bp, DSA **dsa); +int i2d_DSA_PUBKEY_bio(BIO *bp, DSA *dsa); +DSA *d2i_DSAPrivateKey_bio(BIO *bp, DSA **dsa); +int i2d_DSAPrivateKey_bio(BIO *bp, DSA *dsa); +# endif +# ifndef OPENSSL_NO_EC +EC_KEY *d2i_EC_PUBKEY_bio(BIO *bp, EC_KEY **eckey); +int i2d_EC_PUBKEY_bio(BIO *bp, EC_KEY *eckey); +EC_KEY *d2i_ECPrivateKey_bio(BIO *bp, EC_KEY **eckey); +int i2d_ECPrivateKey_bio(BIO *bp, EC_KEY *eckey); +# endif +X509_SIG *d2i_PKCS8_bio(BIO *bp, X509_SIG **p8); +int i2d_PKCS8_bio(BIO *bp, X509_SIG *p8); +PKCS8_PRIV_KEY_INFO *d2i_PKCS8_PRIV_KEY_INFO_bio(BIO *bp, + PKCS8_PRIV_KEY_INFO **p8inf); +int i2d_PKCS8_PRIV_KEY_INFO_bio(BIO *bp, PKCS8_PRIV_KEY_INFO *p8inf); +int i2d_PKCS8PrivateKeyInfo_bio(BIO *bp, EVP_PKEY *key); +int i2d_PrivateKey_bio(BIO *bp, EVP_PKEY *pkey); +EVP_PKEY *d2i_PrivateKey_bio(BIO *bp, EVP_PKEY **a); +int i2d_PUBKEY_bio(BIO *bp, EVP_PKEY *pkey); +EVP_PKEY *d2i_PUBKEY_bio(BIO *bp, EVP_PKEY **a); +# endif + +X509 *X509_dup(X509 *x509); +X509_ATTRIBUTE *X509_ATTRIBUTE_dup(X509_ATTRIBUTE *xa); +X509_EXTENSION *X509_EXTENSION_dup(X509_EXTENSION *ex); +X509_CRL *X509_CRL_dup(X509_CRL *crl); +X509_REVOKED *X509_REVOKED_dup(X509_REVOKED *rev); +X509_REQ *X509_REQ_dup(X509_REQ *req); +X509_ALGOR *X509_ALGOR_dup(X509_ALGOR *xn); +int X509_ALGOR_set0(X509_ALGOR *alg, ASN1_OBJECT *aobj, int ptype, + void *pval); +void X509_ALGOR_get0(ASN1_OBJECT **paobj, int *pptype, void **ppval, + X509_ALGOR *algor); +void X509_ALGOR_set_md(X509_ALGOR *alg, const EVP_MD *md); +int X509_ALGOR_cmp(const X509_ALGOR *a, const X509_ALGOR *b); + +X509_NAME *X509_NAME_dup(X509_NAME *xn); +X509_NAME_ENTRY *X509_NAME_ENTRY_dup(X509_NAME_ENTRY *ne); + +int X509_cmp_time(const ASN1_TIME *s, time_t *t); +int X509_cmp_current_time(const ASN1_TIME *s); +ASN1_TIME *X509_time_adj(ASN1_TIME *s, long adj, time_t *t); +ASN1_TIME *X509_time_adj_ex(ASN1_TIME *s, + int offset_day, long offset_sec, time_t *t); +ASN1_TIME *X509_gmtime_adj(ASN1_TIME *s, long adj); + +const char *X509_get_default_cert_area(void); +const char *X509_get_default_cert_dir(void); +const char *X509_get_default_cert_file(void); +const char *X509_get_default_cert_dir_env(void); +const char *X509_get_default_cert_file_env(void); +const char *X509_get_default_private_dir(void); + +X509_REQ *X509_to_X509_REQ(X509 *x, EVP_PKEY *pkey, const EVP_MD *md); +X509 *X509_REQ_to_X509(X509_REQ *r, int days, EVP_PKEY *pkey); + +DECLARE_ASN1_FUNCTIONS(X509_ALGOR) +DECLARE_ASN1_ENCODE_FUNCTIONS(X509_ALGORS, X509_ALGORS, X509_ALGORS) +DECLARE_ASN1_FUNCTIONS(X509_VAL) + +DECLARE_ASN1_FUNCTIONS(X509_PUBKEY) + +int X509_PUBKEY_set(X509_PUBKEY **x, EVP_PKEY *pkey); +EVP_PKEY *X509_PUBKEY_get(X509_PUBKEY *key); +int X509_get_pubkey_parameters(EVP_PKEY *pkey, STACK_OF(X509) *chain); +int i2d_PUBKEY(EVP_PKEY *a, unsigned char **pp); +EVP_PKEY *d2i_PUBKEY(EVP_PKEY **a, const unsigned char **pp, long length); +# ifndef OPENSSL_NO_RSA +int i2d_RSA_PUBKEY(RSA *a, unsigned char **pp); +RSA *d2i_RSA_PUBKEY(RSA **a, const unsigned char **pp, long length); +# endif +# ifndef OPENSSL_NO_DSA +int i2d_DSA_PUBKEY(DSA *a, unsigned char **pp); +DSA *d2i_DSA_PUBKEY(DSA **a, const unsigned char **pp, long length); +# endif +# ifndef OPENSSL_NO_EC +int i2d_EC_PUBKEY(EC_KEY *a, unsigned char **pp); +EC_KEY *d2i_EC_PUBKEY(EC_KEY **a, const unsigned char **pp, long length); +# endif + +DECLARE_ASN1_FUNCTIONS(X509_SIG) +DECLARE_ASN1_FUNCTIONS(X509_REQ_INFO) +DECLARE_ASN1_FUNCTIONS(X509_REQ) + +DECLARE_ASN1_FUNCTIONS(X509_ATTRIBUTE) +X509_ATTRIBUTE *X509_ATTRIBUTE_create(int nid, int atrtype, void *value); + +DECLARE_ASN1_FUNCTIONS(X509_EXTENSION) +DECLARE_ASN1_ENCODE_FUNCTIONS(X509_EXTENSIONS, X509_EXTENSIONS, X509_EXTENSIONS) + +DECLARE_ASN1_FUNCTIONS(X509_NAME_ENTRY) + +DECLARE_ASN1_FUNCTIONS(X509_NAME) + +int X509_NAME_set(X509_NAME **xn, X509_NAME *name); + +DECLARE_ASN1_FUNCTIONS(X509_CINF) + +DECLARE_ASN1_FUNCTIONS(X509) +DECLARE_ASN1_FUNCTIONS(X509_CERT_AUX) + +DECLARE_ASN1_FUNCTIONS(X509_CERT_PAIR) + +int X509_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new *new_func, + CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func); +int X509_set_ex_data(X509 *r, int idx, void *arg); +void *X509_get_ex_data(X509 *r, int idx); +int i2d_X509_AUX(X509 *a, unsigned char **pp); +X509 *d2i_X509_AUX(X509 **a, const unsigned char **pp, long length); + +int i2d_re_X509_tbs(X509 *x, unsigned char **pp); + +void X509_get0_signature(ASN1_BIT_STRING **psig, X509_ALGOR **palg, + const X509 *x); +int X509_get_signature_nid(const X509 *x); + +int X509_alias_set1(X509 *x, unsigned char *name, int len); +int X509_keyid_set1(X509 *x, unsigned char *id, int len); +unsigned char *X509_alias_get0(X509 *x, int *len); +unsigned char *X509_keyid_get0(X509 *x, int *len); +int (*X509_TRUST_set_default(int (*trust) (int, X509 *, int))) (int, X509 *, + int); +int X509_TRUST_set(int *t, int trust); +int X509_add1_trust_object(X509 *x, ASN1_OBJECT *obj); +int X509_add1_reject_object(X509 *x, ASN1_OBJECT *obj); +void X509_trust_clear(X509 *x); +void X509_reject_clear(X509 *x); + +DECLARE_ASN1_FUNCTIONS(X509_REVOKED) +DECLARE_ASN1_FUNCTIONS(X509_CRL_INFO) +DECLARE_ASN1_FUNCTIONS(X509_CRL) + +int X509_CRL_add0_revoked(X509_CRL *crl, X509_REVOKED *rev); +int X509_CRL_get0_by_serial(X509_CRL *crl, + X509_REVOKED **ret, ASN1_INTEGER *serial); +int X509_CRL_get0_by_cert(X509_CRL *crl, X509_REVOKED **ret, X509 *x); + +X509_PKEY *X509_PKEY_new(void); +void X509_PKEY_free(X509_PKEY *a); +int i2d_X509_PKEY(X509_PKEY *a, unsigned char **pp); +X509_PKEY *d2i_X509_PKEY(X509_PKEY **a, const unsigned char **pp, + long length); + +DECLARE_ASN1_FUNCTIONS(NETSCAPE_SPKI) +DECLARE_ASN1_FUNCTIONS(NETSCAPE_SPKAC) +DECLARE_ASN1_FUNCTIONS(NETSCAPE_CERT_SEQUENCE) + +# ifndef OPENSSL_NO_EVP +X509_INFO *X509_INFO_new(void); +void X509_INFO_free(X509_INFO *a); +char *X509_NAME_oneline(X509_NAME *a, char *buf, int size); + +int ASN1_verify(i2d_of_void *i2d, X509_ALGOR *algor1, + ASN1_BIT_STRING *signature, char *data, EVP_PKEY *pkey); + +int ASN1_digest(i2d_of_void *i2d, const EVP_MD *type, char *data, + unsigned char *md, unsigned int *len); + +int ASN1_sign(i2d_of_void *i2d, X509_ALGOR *algor1, + X509_ALGOR *algor2, ASN1_BIT_STRING *signature, + char *data, EVP_PKEY *pkey, const EVP_MD *type); + +int ASN1_item_digest(const ASN1_ITEM *it, const EVP_MD *type, void *data, + unsigned char *md, unsigned int *len); + +int ASN1_item_verify(const ASN1_ITEM *it, X509_ALGOR *algor1, + ASN1_BIT_STRING *signature, void *data, EVP_PKEY *pkey); + +int ASN1_item_sign(const ASN1_ITEM *it, X509_ALGOR *algor1, + X509_ALGOR *algor2, ASN1_BIT_STRING *signature, void *data, + EVP_PKEY *pkey, const EVP_MD *type); +int ASN1_item_sign_ctx(const ASN1_ITEM *it, X509_ALGOR *algor1, + X509_ALGOR *algor2, ASN1_BIT_STRING *signature, + void *asn, EVP_MD_CTX *ctx); +# endif + +int X509_set_version(X509 *x, long version); +int X509_set_serialNumber(X509 *x, ASN1_INTEGER *serial); +ASN1_INTEGER *X509_get_serialNumber(X509 *x); +int X509_set_issuer_name(X509 *x, X509_NAME *name); +X509_NAME *X509_get_issuer_name(X509 *a); +int X509_set_subject_name(X509 *x, X509_NAME *name); +X509_NAME *X509_get_subject_name(X509 *a); +int X509_set_notBefore(X509 *x, const ASN1_TIME *tm); +int X509_set_notAfter(X509 *x, const ASN1_TIME *tm); +int X509_set_pubkey(X509 *x, EVP_PKEY *pkey); +EVP_PKEY *X509_get_pubkey(X509 *x); +ASN1_BIT_STRING *X509_get0_pubkey_bitstr(const X509 *x); +int X509_certificate_type(X509 *x, EVP_PKEY *pubkey /* optional */ ); + +int X509_REQ_set_version(X509_REQ *x, long version); +int X509_REQ_set_subject_name(X509_REQ *req, X509_NAME *name); +int X509_REQ_set_pubkey(X509_REQ *x, EVP_PKEY *pkey); +EVP_PKEY *X509_REQ_get_pubkey(X509_REQ *req); +int X509_REQ_extension_nid(int nid); +int *X509_REQ_get_extension_nids(void); +void X509_REQ_set_extension_nids(int *nids); +STACK_OF(X509_EXTENSION) *X509_REQ_get_extensions(X509_REQ *req); +int X509_REQ_add_extensions_nid(X509_REQ *req, STACK_OF(X509_EXTENSION) *exts, + int nid); +int X509_REQ_add_extensions(X509_REQ *req, STACK_OF(X509_EXTENSION) *exts); +int X509_REQ_get_attr_count(const X509_REQ *req); +int X509_REQ_get_attr_by_NID(const X509_REQ *req, int nid, int lastpos); +int X509_REQ_get_attr_by_OBJ(const X509_REQ *req, ASN1_OBJECT *obj, + int lastpos); +X509_ATTRIBUTE *X509_REQ_get_attr(const X509_REQ *req, int loc); +X509_ATTRIBUTE *X509_REQ_delete_attr(X509_REQ *req, int loc); +int X509_REQ_add1_attr(X509_REQ *req, X509_ATTRIBUTE *attr); +int X509_REQ_add1_attr_by_OBJ(X509_REQ *req, + const ASN1_OBJECT *obj, int type, + const unsigned char *bytes, int len); +int X509_REQ_add1_attr_by_NID(X509_REQ *req, + int nid, int type, + const unsigned char *bytes, int len); +int X509_REQ_add1_attr_by_txt(X509_REQ *req, + const char *attrname, int type, + const unsigned char *bytes, int len); + +int X509_CRL_set_version(X509_CRL *x, long version); +int X509_CRL_set_issuer_name(X509_CRL *x, X509_NAME *name); +int X509_CRL_set_lastUpdate(X509_CRL *x, const ASN1_TIME *tm); +int X509_CRL_set_nextUpdate(X509_CRL *x, const ASN1_TIME *tm); +int X509_CRL_sort(X509_CRL *crl); + +int X509_REVOKED_set_serialNumber(X509_REVOKED *x, ASN1_INTEGER *serial); +int X509_REVOKED_set_revocationDate(X509_REVOKED *r, ASN1_TIME *tm); + +X509_CRL *X509_CRL_diff(X509_CRL *base, X509_CRL *newer, + EVP_PKEY *skey, const EVP_MD *md, unsigned int flags); + +int X509_REQ_check_private_key(X509_REQ *x509, EVP_PKEY *pkey); + +int X509_check_private_key(X509 *x509, EVP_PKEY *pkey); +int X509_chain_check_suiteb(int *perror_depth, + X509 *x, STACK_OF(X509) *chain, + unsigned long flags); +int X509_CRL_check_suiteb(X509_CRL *crl, EVP_PKEY *pk, unsigned long flags); +STACK_OF(X509) *X509_chain_up_ref(STACK_OF(X509) *chain); + +int X509_issuer_and_serial_cmp(const X509 *a, const X509 *b); +unsigned long X509_issuer_and_serial_hash(X509 *a); + +int X509_issuer_name_cmp(const X509 *a, const X509 *b); +unsigned long X509_issuer_name_hash(X509 *a); + +int X509_subject_name_cmp(const X509 *a, const X509 *b); +unsigned long X509_subject_name_hash(X509 *x); + +# ifndef OPENSSL_NO_MD5 +unsigned long X509_issuer_name_hash_old(X509 *a); +unsigned long X509_subject_name_hash_old(X509 *x); +# endif + +int X509_cmp(const X509 *a, const X509 *b); +int X509_NAME_cmp(const X509_NAME *a, const X509_NAME *b); +unsigned long X509_NAME_hash(X509_NAME *x); +unsigned long X509_NAME_hash_old(X509_NAME *x); + +int X509_CRL_cmp(const X509_CRL *a, const X509_CRL *b); +int X509_CRL_match(const X509_CRL *a, const X509_CRL *b); +# ifndef OPENSSL_NO_FP_API +int X509_print_ex_fp(FILE *bp, X509 *x, unsigned long nmflag, + unsigned long cflag); +int X509_print_fp(FILE *bp, X509 *x); +int X509_CRL_print_fp(FILE *bp, X509_CRL *x); +int X509_REQ_print_fp(FILE *bp, X509_REQ *req); +int X509_NAME_print_ex_fp(FILE *fp, X509_NAME *nm, int indent, + unsigned long flags); +# endif + +# ifndef OPENSSL_NO_BIO +int X509_NAME_print(BIO *bp, X509_NAME *name, int obase); +int X509_NAME_print_ex(BIO *out, X509_NAME *nm, int indent, + unsigned long flags); +int X509_print_ex(BIO *bp, X509 *x, unsigned long nmflag, + unsigned long cflag); +int X509_print(BIO *bp, X509 *x); +int X509_ocspid_print(BIO *bp, X509 *x); +int X509_CERT_AUX_print(BIO *bp, X509_CERT_AUX *x, int indent); +int X509_CRL_print(BIO *bp, X509_CRL *x); +int X509_REQ_print_ex(BIO *bp, X509_REQ *x, unsigned long nmflag, + unsigned long cflag); +int X509_REQ_print(BIO *bp, X509_REQ *req); +# endif + +int X509_NAME_entry_count(X509_NAME *name); +int X509_NAME_get_text_by_NID(X509_NAME *name, int nid, char *buf, int len); +int X509_NAME_get_text_by_OBJ(X509_NAME *name, ASN1_OBJECT *obj, + char *buf, int len); + +/* + * NOTE: you should be passsing -1, not 0 as lastpos. The functions that use + * lastpos, search after that position on. + */ +int X509_NAME_get_index_by_NID(X509_NAME *name, int nid, int lastpos); +int X509_NAME_get_index_by_OBJ(X509_NAME *name, ASN1_OBJECT *obj, + int lastpos); +X509_NAME_ENTRY *X509_NAME_get_entry(X509_NAME *name, int loc); +X509_NAME_ENTRY *X509_NAME_delete_entry(X509_NAME *name, int loc); +int X509_NAME_add_entry(X509_NAME *name, X509_NAME_ENTRY *ne, + int loc, int set); +int X509_NAME_add_entry_by_OBJ(X509_NAME *name, ASN1_OBJECT *obj, int type, + unsigned char *bytes, int len, int loc, + int set); +int X509_NAME_add_entry_by_NID(X509_NAME *name, int nid, int type, + unsigned char *bytes, int len, int loc, + int set); +X509_NAME_ENTRY *X509_NAME_ENTRY_create_by_txt(X509_NAME_ENTRY **ne, + const char *field, int type, + const unsigned char *bytes, + int len); +X509_NAME_ENTRY *X509_NAME_ENTRY_create_by_NID(X509_NAME_ENTRY **ne, int nid, + int type, unsigned char *bytes, + int len); +int X509_NAME_add_entry_by_txt(X509_NAME *name, const char *field, int type, + const unsigned char *bytes, int len, int loc, + int set); +X509_NAME_ENTRY *X509_NAME_ENTRY_create_by_OBJ(X509_NAME_ENTRY **ne, + ASN1_OBJECT *obj, int type, + const unsigned char *bytes, + int len); +int X509_NAME_ENTRY_set_object(X509_NAME_ENTRY *ne, ASN1_OBJECT *obj); +int X509_NAME_ENTRY_set_data(X509_NAME_ENTRY *ne, int type, + const unsigned char *bytes, int len); +ASN1_OBJECT *X509_NAME_ENTRY_get_object(X509_NAME_ENTRY *ne); +ASN1_STRING *X509_NAME_ENTRY_get_data(X509_NAME_ENTRY *ne); + +int X509v3_get_ext_count(const STACK_OF(X509_EXTENSION) *x); +int X509v3_get_ext_by_NID(const STACK_OF(X509_EXTENSION) *x, + int nid, int lastpos); +int X509v3_get_ext_by_OBJ(const STACK_OF(X509_EXTENSION) *x, + ASN1_OBJECT *obj, int lastpos); +int X509v3_get_ext_by_critical(const STACK_OF(X509_EXTENSION) *x, + int crit, int lastpos); +X509_EXTENSION *X509v3_get_ext(const STACK_OF(X509_EXTENSION) *x, int loc); +X509_EXTENSION *X509v3_delete_ext(STACK_OF(X509_EXTENSION) *x, int loc); +STACK_OF(X509_EXTENSION) *X509v3_add_ext(STACK_OF(X509_EXTENSION) **x, + X509_EXTENSION *ex, int loc); + +int X509_get_ext_count(X509 *x); +int X509_get_ext_by_NID(X509 *x, int nid, int lastpos); +int X509_get_ext_by_OBJ(X509 *x, ASN1_OBJECT *obj, int lastpos); +int X509_get_ext_by_critical(X509 *x, int crit, int lastpos); +X509_EXTENSION *X509_get_ext(X509 *x, int loc); +X509_EXTENSION *X509_delete_ext(X509 *x, int loc); +int X509_add_ext(X509 *x, X509_EXTENSION *ex, int loc); +void *X509_get_ext_d2i(X509 *x, int nid, int *crit, int *idx); +int X509_add1_ext_i2d(X509 *x, int nid, void *value, int crit, + unsigned long flags); + +int X509_CRL_get_ext_count(X509_CRL *x); +int X509_CRL_get_ext_by_NID(X509_CRL *x, int nid, int lastpos); +int X509_CRL_get_ext_by_OBJ(X509_CRL *x, ASN1_OBJECT *obj, int lastpos); +int X509_CRL_get_ext_by_critical(X509_CRL *x, int crit, int lastpos); +X509_EXTENSION *X509_CRL_get_ext(X509_CRL *x, int loc); +X509_EXTENSION *X509_CRL_delete_ext(X509_CRL *x, int loc); +int X509_CRL_add_ext(X509_CRL *x, X509_EXTENSION *ex, int loc); +void *X509_CRL_get_ext_d2i(X509_CRL *x, int nid, int *crit, int *idx); +int X509_CRL_add1_ext_i2d(X509_CRL *x, int nid, void *value, int crit, + unsigned long flags); + +int X509_REVOKED_get_ext_count(X509_REVOKED *x); +int X509_REVOKED_get_ext_by_NID(X509_REVOKED *x, int nid, int lastpos); +int X509_REVOKED_get_ext_by_OBJ(X509_REVOKED *x, ASN1_OBJECT *obj, + int lastpos); +int X509_REVOKED_get_ext_by_critical(X509_REVOKED *x, int crit, int lastpos); +X509_EXTENSION *X509_REVOKED_get_ext(X509_REVOKED *x, int loc); +X509_EXTENSION *X509_REVOKED_delete_ext(X509_REVOKED *x, int loc); +int X509_REVOKED_add_ext(X509_REVOKED *x, X509_EXTENSION *ex, int loc); +void *X509_REVOKED_get_ext_d2i(X509_REVOKED *x, int nid, int *crit, int *idx); +int X509_REVOKED_add1_ext_i2d(X509_REVOKED *x, int nid, void *value, int crit, + unsigned long flags); + +X509_EXTENSION *X509_EXTENSION_create_by_NID(X509_EXTENSION **ex, + int nid, int crit, + ASN1_OCTET_STRING *data); +X509_EXTENSION *X509_EXTENSION_create_by_OBJ(X509_EXTENSION **ex, + ASN1_OBJECT *obj, int crit, + ASN1_OCTET_STRING *data); +int X509_EXTENSION_set_object(X509_EXTENSION *ex, ASN1_OBJECT *obj); +int X509_EXTENSION_set_critical(X509_EXTENSION *ex, int crit); +int X509_EXTENSION_set_data(X509_EXTENSION *ex, ASN1_OCTET_STRING *data); +ASN1_OBJECT *X509_EXTENSION_get_object(X509_EXTENSION *ex); +ASN1_OCTET_STRING *X509_EXTENSION_get_data(X509_EXTENSION *ne); +int X509_EXTENSION_get_critical(X509_EXTENSION *ex); + +int X509at_get_attr_count(const STACK_OF(X509_ATTRIBUTE) *x); +int X509at_get_attr_by_NID(const STACK_OF(X509_ATTRIBUTE) *x, int nid, + int lastpos); +int X509at_get_attr_by_OBJ(const STACK_OF(X509_ATTRIBUTE) *sk, + ASN1_OBJECT *obj, int lastpos); +X509_ATTRIBUTE *X509at_get_attr(const STACK_OF(X509_ATTRIBUTE) *x, int loc); +X509_ATTRIBUTE *X509at_delete_attr(STACK_OF(X509_ATTRIBUTE) *x, int loc); +STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr(STACK_OF(X509_ATTRIBUTE) **x, + X509_ATTRIBUTE *attr); +STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr_by_OBJ(STACK_OF(X509_ATTRIBUTE) + **x, const ASN1_OBJECT *obj, + int type, + const unsigned char *bytes, + int len); +STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr_by_NID(STACK_OF(X509_ATTRIBUTE) + **x, int nid, int type, + const unsigned char *bytes, + int len); +STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr_by_txt(STACK_OF(X509_ATTRIBUTE) + **x, const char *attrname, + int type, + const unsigned char *bytes, + int len); +void *X509at_get0_data_by_OBJ(STACK_OF(X509_ATTRIBUTE) *x, ASN1_OBJECT *obj, + int lastpos, int type); +X509_ATTRIBUTE *X509_ATTRIBUTE_create_by_NID(X509_ATTRIBUTE **attr, int nid, + int atrtype, const void *data, + int len); +X509_ATTRIBUTE *X509_ATTRIBUTE_create_by_OBJ(X509_ATTRIBUTE **attr, + const ASN1_OBJECT *obj, + int atrtype, const void *data, + int len); +X509_ATTRIBUTE *X509_ATTRIBUTE_create_by_txt(X509_ATTRIBUTE **attr, + const char *atrname, int type, + const unsigned char *bytes, + int len); +int X509_ATTRIBUTE_set1_object(X509_ATTRIBUTE *attr, const ASN1_OBJECT *obj); +int X509_ATTRIBUTE_set1_data(X509_ATTRIBUTE *attr, int attrtype, + const void *data, int len); +void *X509_ATTRIBUTE_get0_data(X509_ATTRIBUTE *attr, int idx, int atrtype, + void *data); +int X509_ATTRIBUTE_count(X509_ATTRIBUTE *attr); +ASN1_OBJECT *X509_ATTRIBUTE_get0_object(X509_ATTRIBUTE *attr); +ASN1_TYPE *X509_ATTRIBUTE_get0_type(X509_ATTRIBUTE *attr, int idx); + +int EVP_PKEY_get_attr_count(const EVP_PKEY *key); +int EVP_PKEY_get_attr_by_NID(const EVP_PKEY *key, int nid, int lastpos); +int EVP_PKEY_get_attr_by_OBJ(const EVP_PKEY *key, ASN1_OBJECT *obj, + int lastpos); +X509_ATTRIBUTE *EVP_PKEY_get_attr(const EVP_PKEY *key, int loc); +X509_ATTRIBUTE *EVP_PKEY_delete_attr(EVP_PKEY *key, int loc); +int EVP_PKEY_add1_attr(EVP_PKEY *key, X509_ATTRIBUTE *attr); +int EVP_PKEY_add1_attr_by_OBJ(EVP_PKEY *key, + const ASN1_OBJECT *obj, int type, + const unsigned char *bytes, int len); +int EVP_PKEY_add1_attr_by_NID(EVP_PKEY *key, + int nid, int type, + const unsigned char *bytes, int len); +int EVP_PKEY_add1_attr_by_txt(EVP_PKEY *key, + const char *attrname, int type, + const unsigned char *bytes, int len); + +int X509_verify_cert(X509_STORE_CTX *ctx); + +/* lookup a cert from a X509 STACK */ +X509 *X509_find_by_issuer_and_serial(STACK_OF(X509) *sk, X509_NAME *name, + ASN1_INTEGER *serial); +X509 *X509_find_by_subject(STACK_OF(X509) *sk, X509_NAME *name); + +DECLARE_ASN1_FUNCTIONS(PBEPARAM) +DECLARE_ASN1_FUNCTIONS(PBE2PARAM) +DECLARE_ASN1_FUNCTIONS(PBKDF2PARAM) + +int PKCS5_pbe_set0_algor(X509_ALGOR *algor, int alg, int iter, + const unsigned char *salt, int saltlen); + +X509_ALGOR *PKCS5_pbe_set(int alg, int iter, + const unsigned char *salt, int saltlen); +X509_ALGOR *PKCS5_pbe2_set(const EVP_CIPHER *cipher, int iter, + unsigned char *salt, int saltlen); +X509_ALGOR *PKCS5_pbe2_set_iv(const EVP_CIPHER *cipher, int iter, + unsigned char *salt, int saltlen, + unsigned char *aiv, int prf_nid); + +X509_ALGOR *PKCS5_pbkdf2_set(int iter, unsigned char *salt, int saltlen, + int prf_nid, int keylen); + +/* PKCS#8 utilities */ + +DECLARE_ASN1_FUNCTIONS(PKCS8_PRIV_KEY_INFO) + +EVP_PKEY *EVP_PKCS82PKEY(PKCS8_PRIV_KEY_INFO *p8); +PKCS8_PRIV_KEY_INFO *EVP_PKEY2PKCS8(EVP_PKEY *pkey); +PKCS8_PRIV_KEY_INFO *EVP_PKEY2PKCS8_broken(EVP_PKEY *pkey, int broken); +PKCS8_PRIV_KEY_INFO *PKCS8_set_broken(PKCS8_PRIV_KEY_INFO *p8, int broken); + +int PKCS8_pkey_set0(PKCS8_PRIV_KEY_INFO *priv, ASN1_OBJECT *aobj, + int version, int ptype, void *pval, + unsigned char *penc, int penclen); +int PKCS8_pkey_get0(ASN1_OBJECT **ppkalg, + const unsigned char **pk, int *ppklen, + X509_ALGOR **pa, PKCS8_PRIV_KEY_INFO *p8); + +int X509_PUBKEY_set0_param(X509_PUBKEY *pub, ASN1_OBJECT *aobj, + int ptype, void *pval, + unsigned char *penc, int penclen); +int X509_PUBKEY_get0_param(ASN1_OBJECT **ppkalg, + const unsigned char **pk, int *ppklen, + X509_ALGOR **pa, X509_PUBKEY *pub); + +int X509_check_trust(X509 *x, int id, int flags); +int X509_TRUST_get_count(void); +X509_TRUST *X509_TRUST_get0(int idx); +int X509_TRUST_get_by_id(int id); +int X509_TRUST_add(int id, int flags, int (*ck) (X509_TRUST *, X509 *, int), + char *name, int arg1, void *arg2); +void X509_TRUST_cleanup(void); +int X509_TRUST_get_flags(X509_TRUST *xp); +char *X509_TRUST_get0_name(X509_TRUST *xp); +int X509_TRUST_get_trust(X509_TRUST *xp); + +/* BEGIN ERROR CODES */ +/* + * The following lines are auto generated by the script mkerr.pl. Any changes + * made after this point may be overwritten when the script is next run. + */ +void ERR_load_X509_strings(void); + +/* Error codes for the X509 functions. */ + +/* Function codes. */ +# define X509_F_ADD_CERT_DIR 100 +# define X509_F_BY_FILE_CTRL 101 +# define X509_F_CHECK_POLICY 145 +# define X509_F_DIR_CTRL 102 +# define X509_F_GET_CERT_BY_SUBJECT 103 +# define X509_F_NETSCAPE_SPKI_B64_DECODE 129 +# define X509_F_NETSCAPE_SPKI_B64_ENCODE 130 +# define X509_F_X509AT_ADD1_ATTR 135 +# define X509_F_X509V3_ADD_EXT 104 +# define X509_F_X509_ATTRIBUTE_CREATE_BY_NID 136 +# define X509_F_X509_ATTRIBUTE_CREATE_BY_OBJ 137 +# define X509_F_X509_ATTRIBUTE_CREATE_BY_TXT 140 +# define X509_F_X509_ATTRIBUTE_GET0_DATA 139 +# define X509_F_X509_ATTRIBUTE_SET1_DATA 138 +# define X509_F_X509_CHECK_PRIVATE_KEY 128 +# define X509_F_X509_CRL_DIFF 105 +# define X509_F_X509_CRL_PRINT_FP 147 +# define X509_F_X509_EXTENSION_CREATE_BY_NID 108 +# define X509_F_X509_EXTENSION_CREATE_BY_OBJ 109 +# define X509_F_X509_GET_PUBKEY_PARAMETERS 110 +# define X509_F_X509_LOAD_CERT_CRL_FILE 132 +# define X509_F_X509_LOAD_CERT_FILE 111 +# define X509_F_X509_LOAD_CRL_FILE 112 +# define X509_F_X509_NAME_ADD_ENTRY 113 +# define X509_F_X509_NAME_ENTRY_CREATE_BY_NID 114 +# define X509_F_X509_NAME_ENTRY_CREATE_BY_TXT 131 +# define X509_F_X509_NAME_ENTRY_SET_OBJECT 115 +# define X509_F_X509_NAME_ONELINE 116 +# define X509_F_X509_NAME_PRINT 117 +# define X509_F_X509_PRINT_EX_FP 118 +# define X509_F_X509_PUBKEY_GET 119 +# define X509_F_X509_PUBKEY_SET 120 +# define X509_F_X509_REQ_CHECK_PRIVATE_KEY 144 +# define X509_F_X509_REQ_PRINT_EX 121 +# define X509_F_X509_REQ_PRINT_FP 122 +# define X509_F_X509_REQ_TO_X509 123 +# define X509_F_X509_STORE_ADD_CERT 124 +# define X509_F_X509_STORE_ADD_CRL 125 +# define X509_F_X509_STORE_CTX_GET1_ISSUER 146 +# define X509_F_X509_STORE_CTX_INIT 143 +# define X509_F_X509_STORE_CTX_NEW 142 +# define X509_F_X509_STORE_CTX_PURPOSE_INHERIT 134 +# define X509_F_X509_TO_X509_REQ 126 +# define X509_F_X509_TRUST_ADD 133 +# define X509_F_X509_TRUST_SET 141 +# define X509_F_X509_VERIFY_CERT 127 + +/* Reason codes. */ +# define X509_R_AKID_MISMATCH 110 +# define X509_R_BAD_X509_FILETYPE 100 +# define X509_R_BASE64_DECODE_ERROR 118 +# define X509_R_CANT_CHECK_DH_KEY 114 +# define X509_R_CERT_ALREADY_IN_HASH_TABLE 101 +# define X509_R_CRL_ALREADY_DELTA 127 +# define X509_R_CRL_VERIFY_FAILURE 131 +# define X509_R_ERR_ASN1_LIB 102 +# define X509_R_IDP_MISMATCH 128 +# define X509_R_INVALID_DIRECTORY 113 +# define X509_R_INVALID_FIELD_NAME 119 +# define X509_R_INVALID_TRUST 123 +# define X509_R_ISSUER_MISMATCH 129 +# define X509_R_KEY_TYPE_MISMATCH 115 +# define X509_R_KEY_VALUES_MISMATCH 116 +# define X509_R_LOADING_CERT_DIR 103 +# define X509_R_LOADING_DEFAULTS 104 +# define X509_R_METHOD_NOT_SUPPORTED 124 +# define X509_R_NEWER_CRL_NOT_NEWER 132 +# define X509_R_NO_CERT_SET_FOR_US_TO_VERIFY 105 +# define X509_R_NO_CRL_NUMBER 130 +# define X509_R_PUBLIC_KEY_DECODE_ERROR 125 +# define X509_R_PUBLIC_KEY_ENCODE_ERROR 126 +# define X509_R_SHOULD_RETRY 106 +# define X509_R_UNABLE_TO_FIND_PARAMETERS_IN_CHAIN 107 +# define X509_R_UNABLE_TO_GET_CERTS_PUBLIC_KEY 108 +# define X509_R_UNKNOWN_KEY_TYPE 117 +# define X509_R_UNKNOWN_NID 109 +# define X509_R_UNKNOWN_PURPOSE_ID 121 +# define X509_R_UNKNOWN_TRUST_ID 120 +# define X509_R_UNSUPPORTED_ALGORITHM 111 +# define X509_R_WRONG_LOOKUP_TYPE 112 +# define X509_R_WRONG_TYPE 122 + +#ifdef __cplusplus +} +#endif +#endif diff --git a/ext/openssl-win64/inc32/openssl/x509_vfy.h b/ext/openssl-win64/inc32/openssl/x509_vfy.h new file mode 100644 index 00000000..a6f0df54 --- /dev/null +++ b/ext/openssl-win64/inc32/openssl/x509_vfy.h @@ -0,0 +1,641 @@ +/* crypto/x509/x509_vfy.h */ +/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) + * All rights reserved. + * + * This package is an SSL implementation written + * by Eric Young (eay@cryptsoft.com). + * The implementation was written so as to conform with Netscapes SSL. + * + * This library is free for commercial and non-commercial use as long as + * the following conditions are aheared to. The following conditions + * apply to all code found in this distribution, be it the RC4, RSA, + * lhash, DES, etc., code; not just the SSL code. The SSL documentation + * included with this distribution is covered by the same copyright terms + * except that the holder is Tim Hudson (tjh@cryptsoft.com). + * + * Copyright remains Eric Young's, and as such any Copyright notices in + * the code are not to be removed. + * If this package is used in a product, Eric Young should be given attribution + * as the author of the parts of the library used. + * This can be in the form of a textual message at program startup or + * in documentation (online or textual) provided with the package. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * "This product includes cryptographic software written by + * Eric Young (eay@cryptsoft.com)" + * The word 'cryptographic' can be left out if the rouines from the library + * being used are not cryptographic related :-). + * 4. If you include any Windows specific code (or a derivative thereof) from + * the apps directory (application code) you must include an acknowledgement: + * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" + * + * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * The licence and distribution terms for any publically available version or + * derivative of this code cannot be changed. i.e. this code cannot simply be + * copied and put under another distribution licence + * [including the GNU Public Licence.] + */ + +#ifndef HEADER_X509_H +# include +/* + * openssl/x509.h ends up #include-ing this file at about the only + * appropriate moment. + */ +#endif + +#ifndef HEADER_X509_VFY_H +# define HEADER_X509_VFY_H + +# include +# ifndef OPENSSL_NO_LHASH +# include +# endif +# include +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +# if 0 +/* Outer object */ +typedef struct x509_hash_dir_st { + int num_dirs; + char **dirs; + int *dirs_type; + int num_dirs_alloced; +} X509_HASH_DIR_CTX; +# endif + +typedef struct x509_file_st { + int num_paths; /* number of paths to files or directories */ + int num_alloced; + char **paths; /* the list of paths or directories */ + int *path_type; +} X509_CERT_FILE_CTX; + +/*******************************/ +/*- +SSL_CTX -> X509_STORE + -> X509_LOOKUP + ->X509_LOOKUP_METHOD + -> X509_LOOKUP + ->X509_LOOKUP_METHOD + +SSL -> X509_STORE_CTX + ->X509_STORE + +The X509_STORE holds the tables etc for verification stuff. +A X509_STORE_CTX is used while validating a single certificate. +The X509_STORE has X509_LOOKUPs for looking up certs. +The X509_STORE then calls a function to actually verify the +certificate chain. +*/ + +# define X509_LU_RETRY -1 +# define X509_LU_FAIL 0 +# define X509_LU_X509 1 +# define X509_LU_CRL 2 +# define X509_LU_PKEY 3 + +typedef struct x509_object_st { + /* one of the above types */ + int type; + union { + char *ptr; + X509 *x509; + X509_CRL *crl; + EVP_PKEY *pkey; + } data; +} X509_OBJECT; + +typedef struct x509_lookup_st X509_LOOKUP; + +DECLARE_STACK_OF(X509_LOOKUP) +DECLARE_STACK_OF(X509_OBJECT) + +/* This is a static that defines the function interface */ +typedef struct x509_lookup_method_st { + const char *name; + int (*new_item) (X509_LOOKUP *ctx); + void (*free) (X509_LOOKUP *ctx); + int (*init) (X509_LOOKUP *ctx); + int (*shutdown) (X509_LOOKUP *ctx); + int (*ctrl) (X509_LOOKUP *ctx, int cmd, const char *argc, long argl, + char **ret); + int (*get_by_subject) (X509_LOOKUP *ctx, int type, X509_NAME *name, + X509_OBJECT *ret); + int (*get_by_issuer_serial) (X509_LOOKUP *ctx, int type, X509_NAME *name, + ASN1_INTEGER *serial, X509_OBJECT *ret); + int (*get_by_fingerprint) (X509_LOOKUP *ctx, int type, + unsigned char *bytes, int len, + X509_OBJECT *ret); + int (*get_by_alias) (X509_LOOKUP *ctx, int type, char *str, int len, + X509_OBJECT *ret); +} X509_LOOKUP_METHOD; + +typedef struct X509_VERIFY_PARAM_ID_st X509_VERIFY_PARAM_ID; + +/* + * This structure hold all parameters associated with a verify operation by + * including an X509_VERIFY_PARAM structure in related structures the + * parameters used can be customized + */ + +typedef struct X509_VERIFY_PARAM_st { + char *name; + time_t check_time; /* Time to use */ + unsigned long inh_flags; /* Inheritance flags */ + unsigned long flags; /* Various verify flags */ + int purpose; /* purpose to check untrusted certificates */ + int trust; /* trust setting to check */ + int depth; /* Verify depth */ + STACK_OF(ASN1_OBJECT) *policies; /* Permissible policies */ + X509_VERIFY_PARAM_ID *id; /* opaque ID data */ +} X509_VERIFY_PARAM; + +DECLARE_STACK_OF(X509_VERIFY_PARAM) + +/* + * This is used to hold everything. It is used for all certificate + * validation. Once we have a certificate chain, the 'verify' function is + * then called to actually check the cert chain. + */ +struct x509_store_st { + /* The following is a cache of trusted certs */ + int cache; /* if true, stash any hits */ + STACK_OF(X509_OBJECT) *objs; /* Cache of all objects */ + /* These are external lookup methods */ + STACK_OF(X509_LOOKUP) *get_cert_methods; + X509_VERIFY_PARAM *param; + /* Callbacks for various operations */ + /* called to verify a certificate */ + int (*verify) (X509_STORE_CTX *ctx); + /* error callback */ + int (*verify_cb) (int ok, X509_STORE_CTX *ctx); + /* get issuers cert from ctx */ + int (*get_issuer) (X509 **issuer, X509_STORE_CTX *ctx, X509 *x); + /* check issued */ + int (*check_issued) (X509_STORE_CTX *ctx, X509 *x, X509 *issuer); + /* Check revocation status of chain */ + int (*check_revocation) (X509_STORE_CTX *ctx); + /* retrieve CRL */ + int (*get_crl) (X509_STORE_CTX *ctx, X509_CRL **crl, X509 *x); + /* Check CRL validity */ + int (*check_crl) (X509_STORE_CTX *ctx, X509_CRL *crl); + /* Check certificate against CRL */ + int (*cert_crl) (X509_STORE_CTX *ctx, X509_CRL *crl, X509 *x); + STACK_OF(X509) *(*lookup_certs) (X509_STORE_CTX *ctx, X509_NAME *nm); + STACK_OF(X509_CRL) *(*lookup_crls) (X509_STORE_CTX *ctx, X509_NAME *nm); + int (*cleanup) (X509_STORE_CTX *ctx); + CRYPTO_EX_DATA ex_data; + int references; +} /* X509_STORE */ ; + +int X509_STORE_set_depth(X509_STORE *store, int depth); + +# define X509_STORE_set_verify_cb_func(ctx,func) ((ctx)->verify_cb=(func)) +# define X509_STORE_set_verify_func(ctx,func) ((ctx)->verify=(func)) + +/* This is the functions plus an instance of the local variables. */ +struct x509_lookup_st { + int init; /* have we been started */ + int skip; /* don't use us. */ + X509_LOOKUP_METHOD *method; /* the functions */ + char *method_data; /* method data */ + X509_STORE *store_ctx; /* who owns us */ +} /* X509_LOOKUP */ ; + +/* + * This is a used when verifying cert chains. Since the gathering of the + * cert chain can take some time (and have to be 'retried', this needs to be + * kept and passed around. + */ +struct x509_store_ctx_st { /* X509_STORE_CTX */ + X509_STORE *ctx; + /* used when looking up certs */ + int current_method; + /* The following are set by the caller */ + /* The cert to check */ + X509 *cert; + /* chain of X509s - untrusted - passed in */ + STACK_OF(X509) *untrusted; + /* set of CRLs passed in */ + STACK_OF(X509_CRL) *crls; + X509_VERIFY_PARAM *param; + /* Other info for use with get_issuer() */ + void *other_ctx; + /* Callbacks for various operations */ + /* called to verify a certificate */ + int (*verify) (X509_STORE_CTX *ctx); + /* error callback */ + int (*verify_cb) (int ok, X509_STORE_CTX *ctx); + /* get issuers cert from ctx */ + int (*get_issuer) (X509 **issuer, X509_STORE_CTX *ctx, X509 *x); + /* check issued */ + int (*check_issued) (X509_STORE_CTX *ctx, X509 *x, X509 *issuer); + /* Check revocation status of chain */ + int (*check_revocation) (X509_STORE_CTX *ctx); + /* retrieve CRL */ + int (*get_crl) (X509_STORE_CTX *ctx, X509_CRL **crl, X509 *x); + /* Check CRL validity */ + int (*check_crl) (X509_STORE_CTX *ctx, X509_CRL *crl); + /* Check certificate against CRL */ + int (*cert_crl) (X509_STORE_CTX *ctx, X509_CRL *crl, X509 *x); + int (*check_policy) (X509_STORE_CTX *ctx); + STACK_OF(X509) *(*lookup_certs) (X509_STORE_CTX *ctx, X509_NAME *nm); + STACK_OF(X509_CRL) *(*lookup_crls) (X509_STORE_CTX *ctx, X509_NAME *nm); + int (*cleanup) (X509_STORE_CTX *ctx); + /* The following is built up */ + /* if 0, rebuild chain */ + int valid; + /* index of last untrusted cert */ + int last_untrusted; + /* chain of X509s - built up and trusted */ + STACK_OF(X509) *chain; + /* Valid policy tree */ + X509_POLICY_TREE *tree; + /* Require explicit policy value */ + int explicit_policy; + /* When something goes wrong, this is why */ + int error_depth; + int error; + X509 *current_cert; + /* cert currently being tested as valid issuer */ + X509 *current_issuer; + /* current CRL */ + X509_CRL *current_crl; + /* score of current CRL */ + int current_crl_score; + /* Reason mask */ + unsigned int current_reasons; + /* For CRL path validation: parent context */ + X509_STORE_CTX *parent; + CRYPTO_EX_DATA ex_data; +} /* X509_STORE_CTX */ ; + +void X509_STORE_CTX_set_depth(X509_STORE_CTX *ctx, int depth); + +# define X509_STORE_CTX_set_app_data(ctx,data) \ + X509_STORE_CTX_set_ex_data(ctx,0,data) +# define X509_STORE_CTX_get_app_data(ctx) \ + X509_STORE_CTX_get_ex_data(ctx,0) + +# define X509_L_FILE_LOAD 1 +# define X509_L_ADD_DIR 2 + +# define X509_LOOKUP_load_file(x,name,type) \ + X509_LOOKUP_ctrl((x),X509_L_FILE_LOAD,(name),(long)(type),NULL) + +# define X509_LOOKUP_add_dir(x,name,type) \ + X509_LOOKUP_ctrl((x),X509_L_ADD_DIR,(name),(long)(type),NULL) + +# define X509_V_OK 0 +/* illegal error (for uninitialized values, to avoid X509_V_OK): 1 */ + +# define X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT 2 +# define X509_V_ERR_UNABLE_TO_GET_CRL 3 +# define X509_V_ERR_UNABLE_TO_DECRYPT_CERT_SIGNATURE 4 +# define X509_V_ERR_UNABLE_TO_DECRYPT_CRL_SIGNATURE 5 +# define X509_V_ERR_UNABLE_TO_DECODE_ISSUER_PUBLIC_KEY 6 +# define X509_V_ERR_CERT_SIGNATURE_FAILURE 7 +# define X509_V_ERR_CRL_SIGNATURE_FAILURE 8 +# define X509_V_ERR_CERT_NOT_YET_VALID 9 +# define X509_V_ERR_CERT_HAS_EXPIRED 10 +# define X509_V_ERR_CRL_NOT_YET_VALID 11 +# define X509_V_ERR_CRL_HAS_EXPIRED 12 +# define X509_V_ERR_ERROR_IN_CERT_NOT_BEFORE_FIELD 13 +# define X509_V_ERR_ERROR_IN_CERT_NOT_AFTER_FIELD 14 +# define X509_V_ERR_ERROR_IN_CRL_LAST_UPDATE_FIELD 15 +# define X509_V_ERR_ERROR_IN_CRL_NEXT_UPDATE_FIELD 16 +# define X509_V_ERR_OUT_OF_MEM 17 +# define X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT 18 +# define X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN 19 +# define X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY 20 +# define X509_V_ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE 21 +# define X509_V_ERR_CERT_CHAIN_TOO_LONG 22 +# define X509_V_ERR_CERT_REVOKED 23 +# define X509_V_ERR_INVALID_CA 24 +# define X509_V_ERR_PATH_LENGTH_EXCEEDED 25 +# define X509_V_ERR_INVALID_PURPOSE 26 +# define X509_V_ERR_CERT_UNTRUSTED 27 +# define X509_V_ERR_CERT_REJECTED 28 +/* These are 'informational' when looking for issuer cert */ +# define X509_V_ERR_SUBJECT_ISSUER_MISMATCH 29 +# define X509_V_ERR_AKID_SKID_MISMATCH 30 +# define X509_V_ERR_AKID_ISSUER_SERIAL_MISMATCH 31 +# define X509_V_ERR_KEYUSAGE_NO_CERTSIGN 32 + +# define X509_V_ERR_UNABLE_TO_GET_CRL_ISSUER 33 +# define X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION 34 +# define X509_V_ERR_KEYUSAGE_NO_CRL_SIGN 35 +# define X509_V_ERR_UNHANDLED_CRITICAL_CRL_EXTENSION 36 +# define X509_V_ERR_INVALID_NON_CA 37 +# define X509_V_ERR_PROXY_PATH_LENGTH_EXCEEDED 38 +# define X509_V_ERR_KEYUSAGE_NO_DIGITAL_SIGNATURE 39 +# define X509_V_ERR_PROXY_CERTIFICATES_NOT_ALLOWED 40 + +# define X509_V_ERR_INVALID_EXTENSION 41 +# define X509_V_ERR_INVALID_POLICY_EXTENSION 42 +# define X509_V_ERR_NO_EXPLICIT_POLICY 43 +# define X509_V_ERR_DIFFERENT_CRL_SCOPE 44 +# define X509_V_ERR_UNSUPPORTED_EXTENSION_FEATURE 45 + +# define X509_V_ERR_UNNESTED_RESOURCE 46 + +# define X509_V_ERR_PERMITTED_VIOLATION 47 +# define X509_V_ERR_EXCLUDED_VIOLATION 48 +# define X509_V_ERR_SUBTREE_MINMAX 49 +# define X509_V_ERR_UNSUPPORTED_CONSTRAINT_TYPE 51 +# define X509_V_ERR_UNSUPPORTED_CONSTRAINT_SYNTAX 52 +# define X509_V_ERR_UNSUPPORTED_NAME_SYNTAX 53 +# define X509_V_ERR_CRL_PATH_VALIDATION_ERROR 54 + +/* Suite B mode algorithm violation */ +# define X509_V_ERR_SUITE_B_INVALID_VERSION 56 +# define X509_V_ERR_SUITE_B_INVALID_ALGORITHM 57 +# define X509_V_ERR_SUITE_B_INVALID_CURVE 58 +# define X509_V_ERR_SUITE_B_INVALID_SIGNATURE_ALGORITHM 59 +# define X509_V_ERR_SUITE_B_LOS_NOT_ALLOWED 60 +# define X509_V_ERR_SUITE_B_CANNOT_SIGN_P_384_WITH_P_256 61 + +/* Host, email and IP check errors */ +# define X509_V_ERR_HOSTNAME_MISMATCH 62 +# define X509_V_ERR_EMAIL_MISMATCH 63 +# define X509_V_ERR_IP_ADDRESS_MISMATCH 64 + +/* The application is not happy */ +# define X509_V_ERR_APPLICATION_VERIFICATION 50 + +/* Certificate verify flags */ + +/* Send issuer+subject checks to verify_cb */ +# define X509_V_FLAG_CB_ISSUER_CHECK 0x1 +/* Use check time instead of current time */ +# define X509_V_FLAG_USE_CHECK_TIME 0x2 +/* Lookup CRLs */ +# define X509_V_FLAG_CRL_CHECK 0x4 +/* Lookup CRLs for whole chain */ +# define X509_V_FLAG_CRL_CHECK_ALL 0x8 +/* Ignore unhandled critical extensions */ +# define X509_V_FLAG_IGNORE_CRITICAL 0x10 +/* Disable workarounds for broken certificates */ +# define X509_V_FLAG_X509_STRICT 0x20 +/* Enable proxy certificate validation */ +# define X509_V_FLAG_ALLOW_PROXY_CERTS 0x40 +/* Enable policy checking */ +# define X509_V_FLAG_POLICY_CHECK 0x80 +/* Policy variable require-explicit-policy */ +# define X509_V_FLAG_EXPLICIT_POLICY 0x100 +/* Policy variable inhibit-any-policy */ +# define X509_V_FLAG_INHIBIT_ANY 0x200 +/* Policy variable inhibit-policy-mapping */ +# define X509_V_FLAG_INHIBIT_MAP 0x400 +/* Notify callback that policy is OK */ +# define X509_V_FLAG_NOTIFY_POLICY 0x800 +/* Extended CRL features such as indirect CRLs, alternate CRL signing keys */ +# define X509_V_FLAG_EXTENDED_CRL_SUPPORT 0x1000 +/* Delta CRL support */ +# define X509_V_FLAG_USE_DELTAS 0x2000 +/* Check selfsigned CA signature */ +# define X509_V_FLAG_CHECK_SS_SIGNATURE 0x4000 +/* Use trusted store first */ +# define X509_V_FLAG_TRUSTED_FIRST 0x8000 +/* Suite B 128 bit only mode: not normally used */ +# define X509_V_FLAG_SUITEB_128_LOS_ONLY 0x10000 +/* Suite B 192 bit only mode */ +# define X509_V_FLAG_SUITEB_192_LOS 0x20000 +/* Suite B 128 bit mode allowing 192 bit algorithms */ +# define X509_V_FLAG_SUITEB_128_LOS 0x30000 + +/* Allow partial chains if at least one certificate is in trusted store */ +# define X509_V_FLAG_PARTIAL_CHAIN 0x80000 + +# define X509_VP_FLAG_DEFAULT 0x1 +# define X509_VP_FLAG_OVERWRITE 0x2 +# define X509_VP_FLAG_RESET_FLAGS 0x4 +# define X509_VP_FLAG_LOCKED 0x8 +# define X509_VP_FLAG_ONCE 0x10 + +/* Internal use: mask of policy related options */ +# define X509_V_FLAG_POLICY_MASK (X509_V_FLAG_POLICY_CHECK \ + | X509_V_FLAG_EXPLICIT_POLICY \ + | X509_V_FLAG_INHIBIT_ANY \ + | X509_V_FLAG_INHIBIT_MAP) + +int X509_OBJECT_idx_by_subject(STACK_OF(X509_OBJECT) *h, int type, + X509_NAME *name); +X509_OBJECT *X509_OBJECT_retrieve_by_subject(STACK_OF(X509_OBJECT) *h, + int type, X509_NAME *name); +X509_OBJECT *X509_OBJECT_retrieve_match(STACK_OF(X509_OBJECT) *h, + X509_OBJECT *x); +void X509_OBJECT_up_ref_count(X509_OBJECT *a); +void X509_OBJECT_free_contents(X509_OBJECT *a); +X509_STORE *X509_STORE_new(void); +void X509_STORE_free(X509_STORE *v); + +STACK_OF(X509) *X509_STORE_get1_certs(X509_STORE_CTX *st, X509_NAME *nm); +STACK_OF(X509_CRL) *X509_STORE_get1_crls(X509_STORE_CTX *st, X509_NAME *nm); +int X509_STORE_set_flags(X509_STORE *ctx, unsigned long flags); +int X509_STORE_set_purpose(X509_STORE *ctx, int purpose); +int X509_STORE_set_trust(X509_STORE *ctx, int trust); +int X509_STORE_set1_param(X509_STORE *ctx, X509_VERIFY_PARAM *pm); + +void X509_STORE_set_verify_cb(X509_STORE *ctx, + int (*verify_cb) (int, X509_STORE_CTX *)); + +void X509_STORE_set_lookup_crls_cb(X509_STORE *ctx, + STACK_OF(X509_CRL) *(*cb) (X509_STORE_CTX + *ctx, + X509_NAME *nm)); + +X509_STORE_CTX *X509_STORE_CTX_new(void); + +int X509_STORE_CTX_get1_issuer(X509 **issuer, X509_STORE_CTX *ctx, X509 *x); + +void X509_STORE_CTX_free(X509_STORE_CTX *ctx); +int X509_STORE_CTX_init(X509_STORE_CTX *ctx, X509_STORE *store, + X509 *x509, STACK_OF(X509) *chain); +void X509_STORE_CTX_trusted_stack(X509_STORE_CTX *ctx, STACK_OF(X509) *sk); +void X509_STORE_CTX_cleanup(X509_STORE_CTX *ctx); + +X509_STORE *X509_STORE_CTX_get0_store(X509_STORE_CTX *ctx); + +X509_LOOKUP *X509_STORE_add_lookup(X509_STORE *v, X509_LOOKUP_METHOD *m); + +X509_LOOKUP_METHOD *X509_LOOKUP_hash_dir(void); +X509_LOOKUP_METHOD *X509_LOOKUP_file(void); + +int X509_STORE_add_cert(X509_STORE *ctx, X509 *x); +int X509_STORE_add_crl(X509_STORE *ctx, X509_CRL *x); + +int X509_STORE_get_by_subject(X509_STORE_CTX *vs, int type, X509_NAME *name, + X509_OBJECT *ret); + +int X509_LOOKUP_ctrl(X509_LOOKUP *ctx, int cmd, const char *argc, + long argl, char **ret); + +# ifndef OPENSSL_NO_STDIO +int X509_load_cert_file(X509_LOOKUP *ctx, const char *file, int type); +int X509_load_crl_file(X509_LOOKUP *ctx, const char *file, int type); +int X509_load_cert_crl_file(X509_LOOKUP *ctx, const char *file, int type); +# endif + +X509_LOOKUP *X509_LOOKUP_new(X509_LOOKUP_METHOD *method); +void X509_LOOKUP_free(X509_LOOKUP *ctx); +int X509_LOOKUP_init(X509_LOOKUP *ctx); +int X509_LOOKUP_by_subject(X509_LOOKUP *ctx, int type, X509_NAME *name, + X509_OBJECT *ret); +int X509_LOOKUP_by_issuer_serial(X509_LOOKUP *ctx, int type, X509_NAME *name, + ASN1_INTEGER *serial, X509_OBJECT *ret); +int X509_LOOKUP_by_fingerprint(X509_LOOKUP *ctx, int type, + unsigned char *bytes, int len, + X509_OBJECT *ret); +int X509_LOOKUP_by_alias(X509_LOOKUP *ctx, int type, char *str, int len, + X509_OBJECT *ret); +int X509_LOOKUP_shutdown(X509_LOOKUP *ctx); + +# ifndef OPENSSL_NO_STDIO +int X509_STORE_load_locations(X509_STORE *ctx, + const char *file, const char *dir); +int X509_STORE_set_default_paths(X509_STORE *ctx); +# endif + +int X509_STORE_CTX_get_ex_new_index(long argl, void *argp, + CRYPTO_EX_new *new_func, + CRYPTO_EX_dup *dup_func, + CRYPTO_EX_free *free_func); +int X509_STORE_CTX_set_ex_data(X509_STORE_CTX *ctx, int idx, void *data); +void *X509_STORE_CTX_get_ex_data(X509_STORE_CTX *ctx, int idx); +int X509_STORE_CTX_get_error(X509_STORE_CTX *ctx); +void X509_STORE_CTX_set_error(X509_STORE_CTX *ctx, int s); +int X509_STORE_CTX_get_error_depth(X509_STORE_CTX *ctx); +X509 *X509_STORE_CTX_get_current_cert(X509_STORE_CTX *ctx); +X509 *X509_STORE_CTX_get0_current_issuer(X509_STORE_CTX *ctx); +X509_CRL *X509_STORE_CTX_get0_current_crl(X509_STORE_CTX *ctx); +X509_STORE_CTX *X509_STORE_CTX_get0_parent_ctx(X509_STORE_CTX *ctx); +STACK_OF(X509) *X509_STORE_CTX_get_chain(X509_STORE_CTX *ctx); +STACK_OF(X509) *X509_STORE_CTX_get1_chain(X509_STORE_CTX *ctx); +void X509_STORE_CTX_set_cert(X509_STORE_CTX *c, X509 *x); +void X509_STORE_CTX_set_chain(X509_STORE_CTX *c, STACK_OF(X509) *sk); +void X509_STORE_CTX_set0_crls(X509_STORE_CTX *c, STACK_OF(X509_CRL) *sk); +int X509_STORE_CTX_set_purpose(X509_STORE_CTX *ctx, int purpose); +int X509_STORE_CTX_set_trust(X509_STORE_CTX *ctx, int trust); +int X509_STORE_CTX_purpose_inherit(X509_STORE_CTX *ctx, int def_purpose, + int purpose, int trust); +void X509_STORE_CTX_set_flags(X509_STORE_CTX *ctx, unsigned long flags); +void X509_STORE_CTX_set_time(X509_STORE_CTX *ctx, unsigned long flags, + time_t t); +void X509_STORE_CTX_set_verify_cb(X509_STORE_CTX *ctx, + int (*verify_cb) (int, X509_STORE_CTX *)); + +X509_POLICY_TREE *X509_STORE_CTX_get0_policy_tree(X509_STORE_CTX *ctx); +int X509_STORE_CTX_get_explicit_policy(X509_STORE_CTX *ctx); + +X509_VERIFY_PARAM *X509_STORE_CTX_get0_param(X509_STORE_CTX *ctx); +void X509_STORE_CTX_set0_param(X509_STORE_CTX *ctx, X509_VERIFY_PARAM *param); +int X509_STORE_CTX_set_default(X509_STORE_CTX *ctx, const char *name); + +/* X509_VERIFY_PARAM functions */ + +X509_VERIFY_PARAM *X509_VERIFY_PARAM_new(void); +void X509_VERIFY_PARAM_free(X509_VERIFY_PARAM *param); +int X509_VERIFY_PARAM_inherit(X509_VERIFY_PARAM *to, + const X509_VERIFY_PARAM *from); +int X509_VERIFY_PARAM_set1(X509_VERIFY_PARAM *to, + const X509_VERIFY_PARAM *from); +int X509_VERIFY_PARAM_set1_name(X509_VERIFY_PARAM *param, const char *name); +int X509_VERIFY_PARAM_set_flags(X509_VERIFY_PARAM *param, + unsigned long flags); +int X509_VERIFY_PARAM_clear_flags(X509_VERIFY_PARAM *param, + unsigned long flags); +unsigned long X509_VERIFY_PARAM_get_flags(X509_VERIFY_PARAM *param); +int X509_VERIFY_PARAM_set_purpose(X509_VERIFY_PARAM *param, int purpose); +int X509_VERIFY_PARAM_set_trust(X509_VERIFY_PARAM *param, int trust); +void X509_VERIFY_PARAM_set_depth(X509_VERIFY_PARAM *param, int depth); +void X509_VERIFY_PARAM_set_time(X509_VERIFY_PARAM *param, time_t t); +int X509_VERIFY_PARAM_add0_policy(X509_VERIFY_PARAM *param, + ASN1_OBJECT *policy); +int X509_VERIFY_PARAM_set1_policies(X509_VERIFY_PARAM *param, + STACK_OF(ASN1_OBJECT) *policies); + +int X509_VERIFY_PARAM_set1_host(X509_VERIFY_PARAM *param, + const char *name, size_t namelen); +int X509_VERIFY_PARAM_add1_host(X509_VERIFY_PARAM *param, + const char *name, size_t namelen); +void X509_VERIFY_PARAM_set_hostflags(X509_VERIFY_PARAM *param, + unsigned int flags); +char *X509_VERIFY_PARAM_get0_peername(X509_VERIFY_PARAM *); +int X509_VERIFY_PARAM_set1_email(X509_VERIFY_PARAM *param, + const char *email, size_t emaillen); +int X509_VERIFY_PARAM_set1_ip(X509_VERIFY_PARAM *param, + const unsigned char *ip, size_t iplen); +int X509_VERIFY_PARAM_set1_ip_asc(X509_VERIFY_PARAM *param, + const char *ipasc); + +int X509_VERIFY_PARAM_get_depth(const X509_VERIFY_PARAM *param); +const char *X509_VERIFY_PARAM_get0_name(const X509_VERIFY_PARAM *param); + +int X509_VERIFY_PARAM_add0_table(X509_VERIFY_PARAM *param); +int X509_VERIFY_PARAM_get_count(void); +const X509_VERIFY_PARAM *X509_VERIFY_PARAM_get0(int id); +const X509_VERIFY_PARAM *X509_VERIFY_PARAM_lookup(const char *name); +void X509_VERIFY_PARAM_table_cleanup(void); + +int X509_policy_check(X509_POLICY_TREE **ptree, int *pexplicit_policy, + STACK_OF(X509) *certs, + STACK_OF(ASN1_OBJECT) *policy_oids, unsigned int flags); + +void X509_policy_tree_free(X509_POLICY_TREE *tree); + +int X509_policy_tree_level_count(const X509_POLICY_TREE *tree); +X509_POLICY_LEVEL *X509_policy_tree_get0_level(const X509_POLICY_TREE *tree, + int i); + +STACK_OF(X509_POLICY_NODE) *X509_policy_tree_get0_policies(const + X509_POLICY_TREE + *tree); + +STACK_OF(X509_POLICY_NODE) *X509_policy_tree_get0_user_policies(const + X509_POLICY_TREE + *tree); + +int X509_policy_level_node_count(X509_POLICY_LEVEL *level); + +X509_POLICY_NODE *X509_policy_level_get0_node(X509_POLICY_LEVEL *level, + int i); + +const ASN1_OBJECT *X509_policy_node_get0_policy(const X509_POLICY_NODE *node); + +STACK_OF(POLICYQUALINFO) *X509_policy_node_get0_qualifiers(const + X509_POLICY_NODE + *node); +const X509_POLICY_NODE *X509_policy_node_get0_parent(const X509_POLICY_NODE + *node); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/ext/openssl-win64/out32dll/libeay32.lib b/ext/openssl-win64/out32dll/libeay32.lib new file mode 100644 index 0000000000000000000000000000000000000000..1ac1f9e3a7a76a2095b61b205558e1ff754decb0 GIT binary patch literal 801728 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

S`rUaFJG6rK~g+Q#r&e3eA-V`Iapz%{LG6 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 C1ae>i literal 0 HcmV?d00001 diff --git a/ext/openssl-win64/out32dll/ssleay32.lib b/ext/openssl-win64/out32dll/ssleay32.lib new file mode 100644 index 0000000000000000000000000000000000000000..b00d5fd7a8886f3a919910536b9fe91a7daeab77 GIT binary patch literal 75730 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 Date: Tue, 28 Apr 2015 11:55:59 -0700 Subject: [PATCH 04/12] Changing ns plugin to use new binaries instead of older source directory. #4587 --- src/lib/plugin/ns/CMakeLists.txt | 35 ++++++++++++++++++-------------- 1 file changed, 20 insertions(+), 15 deletions(-) diff --git a/src/lib/plugin/ns/CMakeLists.txt b/src/lib/plugin/ns/CMakeLists.txt index 81a6da44..952ae76e 100644 --- a/src/lib/plugin/ns/CMakeLists.txt +++ b/src/lib/plugin/ns/CMakeLists.txt @@ -21,7 +21,12 @@ if (SYNERGY_ADD_HEADERS) endif() if (WIN32) - set(OPENSSL_INCLUDE ../../../../ext/openssl/inc32) + if(CMAKE_SIZEOF_VOID_P EQUAL 8) + set(OPENSSL_PLAT_DIR openssl-win64) + else() + set(OPENSSL_PLAT_DIR openssl-win32) + endif() + set(OPENSSL_INCLUDE ../../../../ext/${OPENSSL_PLAT_DIR}/inc32) endif() if (APPLE) @@ -37,21 +42,21 @@ include_directories( add_library(ns SHARED ${sources}) if (WIN32) - set(OPENSSL_LIBS - ${CMAKE_SOURCE_DIR}/ext/openssl/out32dll/libeay32.lib - ${CMAKE_SOURCE_DIR}/ext/openssl/out32dll/ssleay32.lib - ) + set(OPENSSL_LIBS + ${CMAKE_SOURCE_DIR}/ext/${OPENSSL_PLAT_DIR}/out32dll/libeay32.lib + ${CMAKE_SOURCE_DIR}/ext/${OPENSSL_PLAT_DIR}/out32dll/ssleay32.lib + ) endif() if (UNIX) - if (APPLE) - set(OPENSSL_LIBS - ${CMAKE_SOURCE_DIR}/ext/openssl/libssl.a - ${CMAKE_SOURCE_DIR}/ext/openssl/libcrypto.a - ) - else() - set(OPENSSL_LIBS ssl crypto) - endif() + if (APPLE) + set(OPENSSL_LIBS + ${CMAKE_SOURCE_DIR}/ext/openssl/libssl.a + ${CMAKE_SOURCE_DIR}/ext/openssl/libcrypto.a + ) + else() + set(OPENSSL_LIBS ssl crypto) + endif() endif() target_link_libraries(ns @@ -69,14 +74,14 @@ if (WIN32) TARGET ns POST_BUILD COMMAND xcopy /Y /Q - ..\\..\\..\\..\\..\\ext\\openssl\\out32dll\\libeay32.* + ..\\..\\..\\..\\..\\ext\\${OPENSSL_PLAT_DIR}\\out32dll\\libeay32.* ..\\..\\..\\..\\..\\bin\\${CMAKE_CFG_INTDIR} ) add_custom_command( TARGET ns POST_BUILD COMMAND xcopy /Y /Q - ..\\..\\..\\..\\..\\ext\\openssl\\out32dll\\ssleay32.* + ..\\..\\..\\..\\..\\ext\\${OPENSSL_PLAT_DIR}\\out32dll\\ssleay32.* ..\\..\\..\\..\\..\\bin\\${CMAKE_CFG_INTDIR} ) else() From 39c26f38f1f31735aab183caff6398a1e5cff45e Mon Sep 17 00:00:00 2001 From: Adam Potolsky Date: Wed, 29 Apr 2015 10:26:25 -0700 Subject: [PATCH 05/12] Removed wrong libs and replaced them with correct ones #4587 --- ext/openssl-win32/out32dll/libeay32.dll | Bin 0 -> 1265664 bytes ext/openssl-win32/out32dll/libeay32.lib | Bin 820100 -> 0 bytes ext/openssl-win32/out32dll/ssleay32.dll | Bin 0 -> 293376 bytes ext/openssl-win32/out32dll/ssleay32.lib | Bin 77302 -> 0 bytes ext/openssl-win64/out32dll/libeay32.dll | Bin 0 -> 1265664 bytes ext/openssl-win64/out32dll/libeay32.lib | Bin 801728 -> 0 bytes ext/openssl-win64/out32dll/ssleay32.dll | Bin 0 -> 293376 bytes ext/openssl-win64/out32dll/ssleay32.lib | Bin 75730 -> 0 bytes 8 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 ext/openssl-win32/out32dll/libeay32.dll delete mode 100644 ext/openssl-win32/out32dll/libeay32.lib create mode 100644 ext/openssl-win32/out32dll/ssleay32.dll delete mode 100644 ext/openssl-win32/out32dll/ssleay32.lib create mode 100644 ext/openssl-win64/out32dll/libeay32.dll delete mode 100644 ext/openssl-win64/out32dll/libeay32.lib create mode 100644 ext/openssl-win64/out32dll/ssleay32.dll delete mode 100644 ext/openssl-win64/out32dll/ssleay32.lib diff --git a/ext/openssl-win32/out32dll/libeay32.dll b/ext/openssl-win32/out32dll/libeay32.dll new file mode 100644 index 0000000000000000000000000000000000000000..135d44d76d654fd98f5779285fab0392835c0cdc GIT binary patch literal 1265664 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 z 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 z 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 z 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

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

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

b9n0oMe5GX{DpM7S_N;w5vYFxk(3! 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℘s_J)rVWNM z?AvM&^8~J6`pOQ@Sw7|Fp->?m$$q(pY%#|}Q=;cdot6lWczL!jsq4y@(etFx*mWCo z4fT9wA4jum&MSJGR4eThDK$IiyrQ>B{cQU9J`&0Ap}U_&WG_o8xnCacVsy{buPnb7o2tW=Jqp z8%*0Q=eJYJv><5i!#Rze<1TW%z-e|94E9jokCn=}udU-473v0K1JroK>aw;1NmcrR zOb`?EIj>kS8f%HM!^LMbXwnD~Em~?#dG=8E$3Dh;Cf50OE>{=~d7y$%3^q!SeGeXB z{Ka|N?=aHo2DF|wXc9s>*w6)b$q`J^CG0fPLBB(!q=&4*4vO4x{!wRgLqWCEZyU5K zqlK2q5zqb+#HN5pBk>;g_nZP~m?~k0jE%#_732q>UOYzPIWy!E(^MVeI3qF14IlEfw-2+dZ`*nimLjG{%52P5W3NQ0ql zw^BG-P--JQfP#plIoE6-uFoly&wjoN8BJd`Jew!jQfNqrs061~_+7gOKUgbtMsZw# ztJ>&X&1&PJGrlW(?>3(at3eOp2F3U`9bV(bk!pZA-?Q%tT)1+$-_Rwd9MY3jMyf3WrvO41J<40RXs+CW_ z5`(<>pp$Jy?jQm!TyYI-@TUIsXXD39*Ow=jU*txTgJD z`g7{X!73gwxOQ{;AnoQmxD$AmPLZf-=nf!d=PH1+&qH*xe5HerxyIrtx~^eyGeBC; zmP1L4i%=yF5Re)sc-uNsDUi&pQtGIg$6-PWJp^7RCX7UyOyFU zbs>h0QwLIWSAi+Ga4T~*?yC-!%IVpgaq7o{Rj{c(-vh(`&_gqDAHph zKm7=%iu+q+DnBuf%+ynufmd9=IfsF#fn{Pg%ZUpH8&oY?Q{^f0Ga74nlq z#dw%Xh*4t6H_VyshFWvp7btSCqqqp5G=&KxEy89YR8)ZxoLMJm9v0)yg#y;Cn>wMWX1v&Ydys&rN6^Xe)cue5uF^~ls z)un0@q*+NY>Lw>anI9r%<4IPm?g}v)^kzM3#rv~5Ub;12drLg(MoI4x;qInovB7-% z0Gok5I^&B^s)i53tOUNGC9TVY)81G=A`VcYnR=cTRnuSmogXE`ie$}tOcSJ_(xIdN zkykZXeqo>#+f|1t$=A~3=M9w5?~d-4@4iBH>Jw8l#E05goHsyx(tp3RG09z8(t2Y7 zR-Zi3C|ii$(2ac;RK56WYWMcXo$`WQus@#{q@mSSQvFLY{f$dN5wMBmFHT*{%B$FK z@bzSLK`Nt~!iMoEtZsik$@o7qAyh5#F@B>n$PUlYPlk)*t+D#CS zSA5$E)ew&QI2(+z=rPAV;f^ptYAsv0k-RjK>|!eQZkqp)H|190JIa@Dc~ zev||&4_r#pRI98Ji^V1@tsI({x|CD%vGetk?9AVo{4 zoly!U-oxe_zcR~`Bla6$*Rw?M4ya;r&1rvCoK)a_J5l~&cS}$2z{s^&r)4vqP-Ah! z0LUI~&kni33mea$e+CciktxB#!RR5>$u`D>5C^cg*_Buew3!Lkd+iJb`hg+Up7r={ zDHhs*(&<1#Nrp_Y65In>!b1H2dW+nXOI1-9_|^31*>J*md;tvVy~)HrD^RpIl9!eh zVP}mdw9ZgPdr3p9sr)#jo}GjRUBYIB$~oi)^^xLu@pl~lpM8jOf^ur&D5cRCT%u>I z(-9sbMaxt-!P&H!fhSh)C>GHnUIUH)AflYnr~XCWsP>m1q1yE<2)o1R{}>G`(P{5d zFXOide*Xn;W*D7e(X)X_IvFP~A!)MkSb7ev^FSz45Mytic^k^yAdk|s-J^+(pxoC| zjCv@>K;YtYMX_KSxE9sQ3j)ytY~{4HF5_EfG(&8Ls+8?9uAqwxp-4E29ZlnvRj6e% zu|5rNIdPc9bCbnW6c6HgDOB)pUxF1u+Re`?E(!2@Jk2tk`s$5TsPZsr6jK4eAr<3j zUW{S*G_V`LB0e@D<;j?)=~<6VisJU>X*=mPi)&gLk>3EkQEaW0+#e>JBoi z^0#D$EnnjC;cVg8aG@O#Ezi44Z(hxq{dWJ7QpaZW%m@tDdcr1@3wThErrFptW~%k% zj~7P`R|SCes_$iXHU{`S_it=oJ2{E^rP8ZTGijIS08iXljf5~34z-0|NMAt5DhjbcDYit_L7=7XSG zY=dp^>DVs3v^N@93Pnr!x=Zui(|A8dTz28_#}wG)o__897_;S|C*I4&{yS!cyl(~# zhwKgI3H{e}6k08gk|f~1krVY6c-{!h0T_?tF%^*+>it0Dkuo>qO&G@RNIZEKe~}#> za@rL%4Wm1`*|4Y*s%kZGz}e5kb$H)1ik2x}8&9BK>~&av@p@ta{X%G%4kv62AQ6lw z?j&1D+gWt_H`40afPN%Y&{0qpT9$)dOe+zZLaMo7uPTlAfW*>ucq#O(VeLpHA_yNk zQ{nXl=(HeI5ZB(g<0FWhNH)rfj;RgaCwMIf)F{S^4KcVC=~Rbz4SWy}{^hMj{?FkM z&+l#JH(JV{R8xNL^zY@5%HW-+Sbi#Sq?WC=ph(h&PQ}r1_Tq2VC|Zc%Tsx*kPFjsx z^+R<7q6F~zF^Twv)xwWE{X2eR&eXz>lp}Y8NVkYW9NQLSSEBWmQAgPpF=cnPdV~wqwzON)(IE#8M*D0PK9mRu{lU&&HfaA36~4 z5pzKb!MPKId%jLElAj{Sd4P3@9>AZ=f{Y(ZlEQ@}82PUV94MrHxRXK@=%ZnvQg$!ftnFx@R~WHXAL<1AcyHD=IJk2 zTZt3QXW3N{)=%N~5AtZ)7#**FMD#^}vg3@E3!CVJ*)A~|JlOlw>qJ3*U%XC~TIjs3 z#*SJU*J6t2F+Rp60HQ1(45&((16uQ_E6^Sb60o zNJp{s|5g>HT_G329A%$bD56;O2oe$uR07@Sh}A-RN7}4 zy$M!elXK7}_Y!3KF}w+OEaw8A6oB~ggRD~I($o|q0cSjpfyEOSUP=2l@T8Xf*R)hT zEfZcGwWi}-HelbX|4;ZNiD@|0q(MV@Lm;bI#mnr&6booU5`u=b^zuU`QLuPWSJ#-Y z7SKSydQv;w!uM{}p0LCU3Ss1jkq~jd8z=X_bN)fGf-U?{yOtPu^RX@l&KUh2rOJu~ zH_?PZ!Ze9gt;pV77c`WWHAIGB;;hy<+&il|kW^`-n4-G9w&&x|Q9}#GbpEZF*YJUVHhK9zqC{%mlS2A$iT{uSy*2&|D=!T$8Jx1gFfWWjwHQC zA0C!{koK?i;gKTmyq!KZ^`-q##AotH|HMc1V_Id@yp*<-#q>aUX?ZR_iR9Us#|BZyb{|t`B8lt zKKv(rL_g*`mAq=wGm<-NB3?nWwr?JmUBhMEx3yoiZysrF+1u$;Q(v-=M0|=q_$NN1 zAKN_T4SdL*%^gRs)$c{}uq^W5@!^pi{{z6zW0QnJpWc-WfFZU;38%+Oyz);75ME{l5i2(U0Ap{04sH&Wr4BBrh0svwQLctUEqiXQtDfs5^Z){v(LvpR!jD@YaBw4M#u$;k&8cmbO<}h zofdIgTG!tNoEVN|bFWa*aq~Hu}jXIKTW#lY)l5M>Wm z@g=M$c7v?z*?94ZZ$0`77xX%|DiI6e`Sq6L1mwC zMo?6lTO`h@@#S*X@F`XuQI%@k4*Cwq`SrB%Z;y;{XQmsX3gSXFq6Y#_%l zGt9e>#IWG^cZ~~O)X}r{3AL%t+Z+hLP}Y+ZR?B*J5($enXGJdU9_Tn>9yZ}8f7Fp| z4qpOSf|!>gh?snleE8(#5a`#wS&_ML>jhDzKvv1yZB*bWT@~9fULRhNo?j zC9)U14QvZ)R3sSD(mj&7!x^c2M6oaM#l5sd%N^q=x;q_(RpeyJaNZr`|9EnP<^yEo zOItrD*c~V0gzhyAj{Od=Cti2FO?Zn$yi$hMX+`d0lo4(!@w5xRTuifQw-*OcCL7rA z>8Ln5Ss%kLBM*LfelR;lpR`uqAFag&c{&?(xI4j`#St2G?YTY88x1-=HUM(7t&WZe zjgvE4)YQGv+|j_!ApTq_0?u+o#8s1pAQsh$gf+1Y! zV8vfl0${Ajy(E5V6uGA;ZgWDu+~=Vp_aLk>thohkMeh6L-GHpPn1SmL5`1FvOLOov zOOZ5~tKtlIkccQe{81!Ll<+HS$8Uki5S~ifkG2#o%rt~dv>h$A72{=O%~{^S8dI%_g2?t@K_%X! z!~Sj;x9TlubK_AsUXBuxfccnjUwagSv(b}f@k8KP;bSL5t0l{JI)z;bW`AvW5Ui}y zMX?|pSH>HLD40=x6nkW>2ONaM*gV7QQ1g|3SiOJRseqb*3QssXQ)mgI_NJ568l2za zr=6XV;mDc{2OvYV^=S~OIR8!+R;x7B$lS5G`wLFn>sfFIv@#Xail!|5pq~NGJcrSg zLn!VyzyV&`oI~(+v*z!SjC(14NOs_CNewmTH4?=wh|?Rc(2$+aOcpns#gpNviNRz* zb*Ru-B2YKZV7Fj4djjf~T9vP!%>ll=S*cOmDnkriML#vt$}ne7(KU$tERQhlhBLLu@C+0@l_OfN!{>&GZq!+!VPU;+MN3 zw>`et=@ded+EG(jabG7Eb~JxQ?rCaAg=FOyoT!&)J75*tk|Otea#$xips^@&*TMni zbO*uQsDZ_>zeZTfs>r1Q5ZZ_vHL?Tz(i}B1Itn!bVR1jhd%7j8X#^5M3)P|3nWkAC zgNa9xKzDee^+iTOpH+2?j__2%(}O&8Z01yJERssNEULpnyrCj4dgg}`$FPp0s7Y$@ zi@50Bn$s8I$I|JGA1zUdjnm%RIBUlLkXkVYP*#bG7a1U!%|rigt@s6$296Y%niB%3 zcs*M_g^(gCRM&fyOtGxcz;+>qo=FfE5&+dsTR39Hm#)OZQcd>>eF(?~y`w3Hmb$@b zVd8F$Ft_`GMoN^f6NDTR!SF;SEb0w6NT;S&HZ>-uQMC+<@=L3XHjntg`w>=+8Yw)l1(^{`=WF%`v2aaLnmg*_>ia^VxeqS?5KsZ zIby0c1r*maZ#v+KL}@Or)%&VVa$h@>%(uQ-KHp#JpPO&K9U~MN7G_EL{VJ<4DZ+J^ z0NU!D*+(eFMUqZ;Mg2sI1F}w9<2+zn<;1Xn%t>Q%+)FMU3+CAd5A?xkWBU2w7-H4M zg;ZR8pC8?;O1Kvhu~61U_+_3lD|Ei9SN@-M<;wZ8Uir*skVX+PPu4A~2X~gqRo%F| zY>>v5ySIe9&1sv{@EC+Nx*d^7vg{&|sC1rk%8qQ`Zs^N>ewkIzpFT~Gz4BpE35SJO zoeDZV^_#EiHczGS_xWY!<5=KgJ^$GdZ3e<}k3J?QrlM3hSioA_9@H(A`E@!<459M8 zB%IQF<_|W^8=+|opw)bpNj2Eq8lx&TUW}d>t!a#Rq@`tb!Q1NjjbL}7^A3t#4~26D zw`@RH*__iR`}yw?W#$D+0=MDyZA8ksX)8P{xF;*PDQobGhpIxT_iKkj51sR;!uGUK zQE<1e?db*&c(5l3_Aw6@Ly6`5-T!T|eQ-@-MoSUN=x);aF5N^-qr2JU6xj0jS*hW~ zjye*E8wEA}qLpL#d<)IXou5}aFbu5?SIt-qeKd(;ecPdf3&MD+J3gR~1HU=YK2al2 zjmIF4jL{fw<4$wyHV<)*7k!#ffteIu@s15p>jk;G%i?!3l8uL-*J+dqf_d4&yn(V& zc%OU$&l4T}mIicEhH#=&*JR=l4Z62wHSV>s$N4Pdi)wPiUQ->NDv{{_*hR~xy%NdDwf?lC>jG19FjgR~OzHU0v#F>Q zpl`jmt!GKxfhz#BoEH=78r8Nm%=iP@@~Ay14ZS>y`695M_2f~w;+@xvW2uix_1~-y z>>JSCV39NA!hL2-MHS~_rV-E&`cg!j?wvUDqnIQvT5XSEICw?r*PMbRX(NZM1o=l6LS+JQ zcskpP!ytaYi|hjJ4hv_&&;M<&&*X`mw}}ZM=e@!&44WNd&)FMS&kgLOS$uknk~*NN z(<4n-v)~3;Mo*PPEc2tDI?`ZRLH$v~3CY(hd=KWn5;hmJ4n4~TlTfFDK{{to*1sv; zgzHcT_|xt$P7OK3PiBiKH2<88W4hpGjW*dfIYrMRrGydsamAu&_!yGw>JggnXtTpO zC_&spr>dQ4d`|c1c-^_vWe*A`L#ig4VJ^oYi0CE5@{2Qc5P3a`Le6ToHrqm1#UdKr zTlDP(%divlF}$E(rNMkDvhW?Gm_th~#`)C@YtN!xs#_+;WAG4kIJoKXyjo@{a%oHm zWr4yBOaxqOt-mO8JCe`4a`@ojLXnRz!?2u&123aySTHnAL>J=%1k@mK zkVs#D&QVY(q*#E{_%za^LFhY#CG=;D(?1NO>RWRt8;M&Md13ZA^p+Q+Bv)iBfkvAr zrhz24PJ!e&Pmf$1jTM#4sbCzu zrVMr%IXqU+rgJ7E4Q{w577K#Y7d&yS(wSI$PXLvDSDhO9h1W!B(1sVtQIcq{J3cSX zDn6FP0KyLl;9118D>gnn5mJhE)k|271{*msq_o93lZr!0E!kPKfJ~kNQq0_?v ztj~a&?fU%Jj$m1CiZ_i4Vt;e8gR;}NVJRX_uE-4p-*~4%%Z)Gpz>0(yK3?m5zi4LR zSf9s=TqpSEr7H7M?ekJ`TUVafB`;Ma1ltP{%Diym3ZE;c#yZxo(!$R^hZVW!K?zI) zeQ6Tsv>fw0RH&By@E2!+7}ls?_1v`rZbF1yD1eZ_K+@X17HRn-D3idony@7LpPbWTuJYc4UR)=_MAQ5y`0AhcTF3AVf6K!GZ7_uwtPmZzhyC%W!YG zi_c3_M{$a0sh7482vjdPBZjkq7RQDbM?GuIPvMiUG%d{wdFOBsl8K_!5^;Mjqwio} z!Na;IV>+RUBl*eyBGYwqNa=j1VWCwW9yiZHo!VcRh| zfg@DNC~{YU(ljxowoXlU0Zehu`JVXYY?{vJM3c~w-aQwD_j>W)<8nl)TrwN#))Ib6pO%ologYO|VW*;JQy+*%nSo&aN;a5Yy&2R$6 z_K=aQ$tME?C>T0n6?Y{vk{wHLM8Wg;1l>G9E;rDSUPpHZr~pcm?6gip_eJKMR^;v^ z6QtZiCZyMwWF9kxV?fcJ-FqO4v?Xw~3@lbbhJb5@U#TwGNlSnVqq2p?xNla!*fyWS(Jz&Dho)6dKjtdNC%4>Ex&lsid!_lXaRvM zE+3F&hJSb5I$FW=kQ;lT4*2lPzzkI1wN`s<^HCJ&OLVI4<4oz$ck)IkT9@_3e0wi& zr2KOZDf7DF-k`+nW9(~99QQCfP%@TPcC5tIZ_3AGWv#G+v{dr~qySQ8PCom*88iT( z`;g99_;HuuP$7yL$%2qIb&D8pa@Ld+@0HmIN5Cli!3`Fc!!3NU9C27R%SECw$T}Tu zkzY~V?x=9cRRX06K1Va^3k5@$3X(jTrm!{-F>cdWx&Fp~&-35Q{FmWZ6e8JA{W6`h zpQG!>g8fI)M|4AWZ`($0N$&Tj_PW;y#aQ5A#f!KUCF?;0>P6P}!d< zJ$32StyAY495X+vc!>L#2^b?Cg^#M@rtPT=2Or3%$?}YPJ_tKW8t!!(GPQP|ItpsZ zjwi^oBjoN=(aN+uJ6bZbM@ab_*&U_Ae1IRNB`+?MCusJ!B$d7yBYX^s_I{Ty>{%P#n8hK$WAnKd@2 za+c`~53J6)QGOx+0wmv698J2K!WXujfh8>+`TkKl=k%0T7hE)gy=FEolxNQ_Ko!r* zDdq#ToYRsrcZ;v+eqMCHC@CXps;W3hq0M_PV7Zdun8=b;Jwz`zR8I}P#Ol0{Bk_eq z4AAU|NR+bR|4BcpE)}mXWp#BC2^E}#cHveUdR=;hio(yr8Q}uuGm03f$~6INHv+UI z-mWsMs?5qNvwf9WZd599yMh`7+sr#kXUqz!^u}zEqsnO;q6`(v^;J$DVDEMAsE2iK z_`!kqI$rsHqj14T!unw}WIXEJP{~^2t4OB#qba@}@jaB!I4R4>NS#-{-ryZ*Z}#-A zQ(V$WIkR2DTAD~yH6)ubM3$5ILL&4?Kt4ZdkVWY&czWfR=0nux%&?a#=4{7Tg3yp6 z2}5OK(7ZrG&s1G;h;-{z%`BOmF0A53fLbA@8iYhi{Q;;nDu-jCsydD(L>(Wr~k@jXe zvT<@lhTbi^!xc9;$zb&;ATnwQO6x)ADkpNT;zchlMIQeX-51s9=2Y648Uoo_lwRpJ zM6BvT)gbh6N1j#ZKmh6ha<~UoP1QL_fK;MMG-4ShdkS=m`X9xs&iF6C=K#ECxlgchv9(_??Aa}cV3th!}h#Dxp2Ph8{!-% zl7mCV6gW$8=J3j2N2Ku%d|`&xbdfIL6Ku;IJ7_O~62KwLa8%$p7)^L8JP=08;h7hR z6RUY)FY+0G4|{P;td@M!to%p zZ@VGwbtTt8q=uL2*Xca{w)~BLdlb`e-xK&9yTGZE8x3!BqvcU<)H%cr*L-et-VbBd z;yUFpptoV&4Q|TTF_;SjI?qB`gCYbTTB7uC6p zFV3zcMDpgGN0ha{@z2Znta37eQP#O3X0ntWCh8=kg=WFgn2xHfa!SW%PG1TjF+&F_ zTT5Y#ly;R<3jAq*_@*vYdrcG^!*k|ASG)CO{3OWMN>5c46QREmcVml7Lm`w5&1W zVEC99c)7}aqv{;z`zmt@zNqQEUfY+M2B;Jwr{7_MEkyAvXHlSx_!`jA5H4`{xB>A4 z^kaaou_KuZuDaZ&syL@e=JP7!KB+IR((m!0Q1tV!p>SS}G7-Y$d%}i6xrMjX#21(rkiARi&rXJ#JdsMO8U!~J4c2BJ9bsD!J z<<4jxEpQ222(kBhnqemlk=tJId7e>!Ku*4!&$$eSH;ZURsrGn@>>DT-0y>q{6z>I!hf-BRiAdlJOMZ~D)g>;h zowbN;q(w5^R&o;MBvx{9qBHyye$(#<=taUPx5(6RPNB)JqIey(xUxk3!oW(jmu#@A zV1D6chKTpYw^w2b{(?{awa)G2kHJTfkC4 z7J&Y6SSA|>0J0&Kvmqg}Aq=yzVVaFedbSCW3Fr=}2j~S*0MLPFW6?Vs2d}bmW+)qd zbvEXq+35hJnw8EV;57|5u{P;Dasi*kY4WjQThQ?NVZBuG$7(;g8BN+|IU#gVk z=PD(xne`>9X=?xU^pvF3@zHT(QWD7?p$!bz=|W>I?h?tH4hUmR%QUIuC}Mn^DJd;g zVopt(ke-q_Au-jIn4lhOPL1cz)p28Z9&WDb?yer5Lpt6xAu6NV%{Z32ob zkz|_EG7@1X#>b{-B*t>*F{xxvAi)fie`m(w+nj{&)Nx6vh>$QPH6<;6yd)trO_Go} z#yl=|LR<=5C=ZGmrSp#+gQ6xRrH-R?G7{qw5|T0`;}T7oi5Zi|Oi7KKK>5N><*T+2 z7!>hZdOU7iY67L30h8>RnJKXoC?0J1=Jw3Q%*@#M#0=DVwVh~1VJ*($w<$}K)x*O( z)>81qN$Iia;}fS)x)~^C0)YExBu*qZ{vDr@QvGcS%-xex$AVXQ81hfdicN?!#Yqw~ zG9i3ga0aLVa)1O- z*$$Hzzzx7}fJ1=&fX#pnfKLHS0Sf@RfNVe(zywGE7y%;y(ST4u0KgYuTc=)whK`M! zb{P?$F(uuUCK@S8W4gpkcu7zW)Op;5qNCk!vfS@BeDRVfH9ux&H>hXi4KVh^bgRf;S`{Yh~){WI~%;zor5zy@Dl`>qVAlU zmXbCutyVnUP+hoxSfDjR0FM|O8t5M$>mMEv8-@>r4vh^A4;aKhV+Te>$LazH#zY0i zhDXE(1ZtxK2l__`)=F~#;_AX;wf+cch=>AKHFys4_wtO@=>luxZV4Y25guJDq{THj z$a4Z*bs_%UC{^*(vq#SwOOI}z7E4$_56f3nSU|U)9u|v#pw9B8*VcR+LIy>JY9k^b zxp}g|A^y4$%eR%PF}lE5f2}rjQ24v*&V#zt!VX1`8rb7?hp>R!r9y~zqXxVYWU$u% z-P)u=AYHV7^q_$taPXk;KsElT-p81eQcUW!)IREr#Pp1`1ao{6x*Ih)gQX#&64mC^ z%=E0(;GZRU!2LuMi1_wsR4h;3z=`42tfPmOR;Q@g|U>_JYR2v;Zfn%+r*y@IE zCN?#3axC>(Nz{p0!dl%e<>6kn{g4htLqC?7CFzKGUGY;*leAdsR*58%uz>FB^tcR= zeQdStdK*2#W&bH0SoXh$>-Jv)BE8OF{QnYELSfM^{!`eL#8h>^zG@G3`}UAvscPT8 zYBxyY4w*?)6Vt}J#hbD^_e1yE0VJxSn{h&1{0REtq?087k62dT3<>iesJ3+a^iAm* zY(=1NxqCz9qfT!hlaW9DjUFg{>zGaS6@SwaW(^=8pbV%9UtQ-G++#6(F&Rbt2@m>9 zNBCkudSFdFa?gLmPHxsek068xSndC279)%{SgQO79_clB7!$MjNQQo@!^IP==|{xX zO3#6{=th+f_{fo?M#aUA8IzDOZk*9Le*A<9sj2DdnVDwu zq)AhzOr1J?`m9;m**Q6L=FFX&mp6a@f(45gfAGPFA1+<`$tRzFx^m@bpRHcKcI_8m ztY822*Bdr$+O%cMx8H8twtf4~ox67J-Meq!{{27wR8Vm6;GsiBMMsYwKmN-vCr=g^ zpE+~(?74FnE?m5L`SR7PB_-Fd|Ml0+o28|QrM+xHR5^zV5(ul4u1el*rkXjM}7z(kt07j>~^r*!EOh;9rA-e z04DN-za0Jmn6TR+KRNP4!iWnKc01VZV7G%E{)p=VfQkIzkGLKHn6M*#@y`YkfFw;V z`3LMU)oL4RLjW5YtN_^6u)`hx02|)OWQeChKn+YWAnb^sK{!MP*vQ}yfF1En48kicGGQ^X?om69M z5Dxx;M#x(UfF1GRkGx?=IQ&WJ2Z=~|VI)%6@m~g0CM5((Y*9gN0kBJ9hr0}>Ov)W7 z5GW%hYS|z@0Ct#&4?kM~S~*O_hac?J>R}>2Y7#%FU>QsqOo<)rs9+gPnH{3ak)Is- z!IZ(2*uf5W8BCcS@{=P!Ir4*v_%?_SfE^~{!w>n%ksnONhac>4M|=SC!yiaam`E+0 z2s=j#cJh)a@q>jBi6h+cDTiGSyBv1>iB&|zlPakI0GL!5*byH9(-Ed4++jz28R7$| zYEdFo8&OmuZA1kDz@$RKE}=tbN|=r?9pMhU9CkVEa@aZHQLUW#(ndr808AnV?1&G5 z=?K#i?yw_1@`edJ6##!Ih)4i(s9hjf)c_Cp!<2f!PYr-6g(-zQ(V&JvZx$GSh^It2 zN0^R?r$js@Oh=fG9%6L-Dv`eu1VeHFm>?kR@KFO0P6`wG!w!In{9)%=E0Mnv6`}+| z@dch}#6$i{P- z*n}ttiNcvyE=4?m99uII0Q`AlfInwS_`{BPb}#{yEoD%jG6K{`{?yd!BX1i3W~tPI zY~XJLe;fG2E`uE=pg!`p0n|tSHh}ub+Xhe{dD{TsZv%fD_}joA;Smo2f7oFnZ(aai zdMTlU;?O@rT?!6{1FssCUI~BLrLe;te(;w_)Nlbv++YGEYWM;qZZO>t4rG@C;ID)~ z?1%?|KkP&vi-1Aiwg4iREr3XCi#*`3M1xnN^h)@{E`=TL@Pog^MvZs?8{};ZutDCo z02`!ji#*`3gufF0O8CQ$cmVjr4m|lEY774%nF$>LOkNQXwQx|wqK3a3{;&gJ!XI|g zo1{JkmC4#7H~^*$Cj1cq02BTQ-xhWNO!&hNvJ&ZGB7Hg1ClU~si3}hkvI1bj-wpm$ zMA&U$2guY24}gjE5x*_$0GLQ0b~VBSV8S2a+rkcj34hp;I{%a6_iaF)Z*wO%`ok(# z0v1^Q%k&I$Ox=G9hy>lRQe^$#f$~X8$dbe-WyaIDCmGpZizCvA#MJm$T5-Z~ z{2%Uo@+o`8O-QRd)N%-FxNtA3S{Y_(?_O z(`V0L;7wGC)W%j;r*1vDUHt|Y!@i+|Lh0D3vC64QQ|D&QTe!4r)mq)AZ99#t_}l&+ zw+h~8^Nw5T%PE7` zod4{|%w9R2Cg~Q92~C(6AUyw~>58F`-`^h5I4*F)Lc7^BJbzs5S2lO|vKWd7&~oMe zr2}m%9gChUx!3RSx`k)E9v$22cR9QDM|RZRirjB9Hunfi?)Y)@(-Vg|4Kls^dGRQj z^ZMHdOZ-z6k;hMHKG>>V`zYOe`Sd<>+U?mf^@UB(;jS^Cbn86w*{9d%fB0>ks~wc% zQuZA?Bf0tOwbdKkG+V(?;eeB-ve(7@f;icfezFalA{#R<_ zt62qG1_cEEr%8TNLSh`BR1;(2Z(eeL%^CT+IbG&AYaEc7ZrirE-TLBgpLh85Sr>U; zO8D)YZQKGUH!kk|>)7Z6DfXq^cX!yFe?>d}*v_-L{hQha@4Rrf$%ieTPs#hLLAO(z zcV7MUQpU@!yRSAczO(h(o{wj?PYzr%ec$p~?)QV2uhmqfe6an`2U2;H7mMbcS0}|M zg&QWWdo^VJ%)TEzT5MX@aLBGj8AE;%Cf*(F^j^#L(bIMg9d^+BtjDUxqaSo^x9!y7 z@;Rg3oTvEze6RPVJ=-o%S>)i{XSCq3I;G$IR@(|DJN^F7yWM`g*mY~x=nvEwB3cicKRdhJK08PgqAcei)kpB6vz@WxJ0 zx;dMg^c!)q)kp8I^xAiB>xf@9DYJE+Qzy?|=JsjGVxO&h-yPqA{dDM~Hg022*qx92 zU}Kx-qc=|v@yxzGa^%R|d*7Mol-jgwe|cVu#Io7_^4cBV{PCHGX%iIQ10LnP7to-K zOr5)aaQV@sQ7c=o9$-AuW<^Trleks(rkMWU{eq^m(_h6(6tjirkda;9lwt zpQ(+t0L|~ky+Rt*$I(N@rIq>j2OZ1M)tlC0 zdG`4!zqwZY!JahNzPj!cI%U_7B`KfmtD7&|6|u44(CE+o4z3l zzq0SW8>iil@@XCUVuJfJkCg#|vrpLlIBKh``1*mDgT4N!=cX9D{oO9j3>%K;D@;cN zy<;1kzV!Ue-XHU)#MJj3-Ta7T?YSu#?tZUaKOc8uUF+wSrC%`eV-}!tJO1$ceK9WDeU5a#M!`uR5D=t!-^1C{C>Ti<#1Po_o02dHJ7tCrctW?ATq> z_~mS$L(?y8*m8R87qLz1OkS3)$~^JWWL5JviRvvk=RVsx`SF10qF;M__S}B!FJ)`; z`b|62!vEZ$nXSIC0vmpa|667+KpkLLha0cjfbx3*T?zBich2aCw?|y__-U4$Diw8vAo`@(`z4l zuzNRqcMdBU=~_NleI>MgS$gh~()Z#=ooHp#f4tG|*u8!IRL-CHu1!xKpW9=WaqgdM zqUz{Y?e0}i`;AL(y?!IU{bSbcfEkPSJZNI*b+OO3hW6TWS!$e#2b;Zaw)~-M-;_FDG_TwETPdxx9Yau1Cj4 zWgQFclDu8HYM+DCk*r&PF4g(I`0`Qb`mMeWuXxb6Q_G%;_TJ4#PdV63{&l;kU5y%7 zq`ulxHnw%)t!07xujd?{_SLCgv%YhyS|Gi5#k26sVJQdZv>B3U^XVp|;>(kFeU^2- zv}MMfLTy-DrXXnz=%=sC>jw|z%P z-?OEwyH)IIli#dC^vdOHV&9*+ykgmg8GXmBnAfXva_8%x#C~+gadsnPlMeHGIGk&J zvuN$rKR#Z*Z%EdcxsMI;8Esos73Qq`IOt&WvijS9iT3ECyAg6>v0JzO6Yf1I8*;1a zNcXrqZm%+Zr{BGx8a(p)?gXY9sT@$!xSx90pLYXqZTe=NQ$)(8;)vtV20R*2wDX7L zdo6t;66>`2#eembR_BYt=FCkFe)ooU%YjWnjShuUFpitv9>qFD= zqz3bIgXetzpYV zo4C5tt*^Rj!u`M7^m7{AciZAlpI^UOu_fn{aaiBd3cuM)UD}5}>E0n}X@%O!zv4HW zNnOT2+HaJ6@!Ld={I}#sYOmeD?H;%_PNMDd#Jg2cpym@(L>ragJmII7FP4RE{b1+E zXRbU-5A3>T>}|XKKh62%N892Fn`g=99PhUMowASpy#=8sGzVpSa{t*kdywB>EEZDj0+@q<}Tb=yoc5JUR z%hzR{9MEyRUys$V)O+VVys+ta@4G^HBcFzaF8jE6|F{h?LsmGg zjqkAWgx95O%k_ghe)ZI~TYs0Ck48=J)?tYat9+T>^&Qy=rysJfySvp1aVl8WcEXVx z{TmmAT%M~ax_j(tJwTN$fmw};UoPFfY>a$HLiytpf2XY*6#Xn@#{2KQ{H(Cm!hR3^vpYXK zp8wIc@3F#be-3RjAYg9eM)gx~+h6E-Ytz~Aaa$8&H_W{_uk@z_uL^G@7_#?&HaEYb zymDIB=&;eYql0o@p4!&B_Y>K-fs;?X==rd>>?n!v0mGWfns3>U z%LfF-#B~|+)8a=%!oPTVV%zMA^=~$g<(e|S;56nCEUU(4{*S>6O?$wsU z6o=&8KbOURuxMy%P`Y7<`h%FW3qt>}Id*MxgT2Ld-uoeB%m&BR8%^e2&1UVkyS%Yv ztzGA_UO}FRY+4Uv3l5aqxvp70SotcoWy`*Mn_pf3Wdp^7xoeZ|8{Kj)?!Nr0uD4<3 z$v@Xd&H5!mI?7S|ET`_*hj!Ymd8hbh!*>=`uJE7Re{$W>(SVd?7zGz3=%$iY;NI?rB?9-i-V1 zf@;nezKtVO{w_M3b}0Os{^U;`d-ghduhylIUMfkn*-kAd{_b>l!k>gpXOvO(#T{@qec1Th*zQuywflJo5 zIq+TT_d8O1CU@NwVwjS;bpPo|>y8{fI4JRMr9wC3kA*=k>t~)l5>^~~=?Cu)+Msq8a#&ZL2TW7e83FFD^ePEV*>0 z*6FXs=Y}Wjd-_Ftw`+a+d_8yB#&=7{#N0b`uWQl8il~aDG+FoRU(Jx7>-Xy^x6U)B|LXdA>y>*R zY{}ShZdmB!dBY}d?oe{`%Vs4nH*X7G`Rt=R3lE)PCk#Gr9mbxmbnDW1$_LWeteDZ} zI{^+KS1cHH=K60F>NxG2@MxZE+*;co%MgYUlij*}zZDlgPOI4<(Urq~a+oQQ17!WLcj z=sjl0XaA47Hvy;W{r`UVXz$HtW1Giqo^A6yZ9~W$k|=YM%u|w?kc1@7rZh=NQpubU zGN-7JN+ltcN^(BC@3-Ht|M&Sl=lq}Noa>zHtm|6VUiTXB`}2OkJ}i6Pw`Tq~Nck(@el66;_Dc>kOQZ|gZ7z%}{OgW*$7+19kx}1^8@78k z4XdS9b0VcNH8X-bCkk&A-(s*R34WNOYZ#JJNl~{FGO)!qh zc4(vhHS+HtQ2v%D;W{`7?wqgWaK}rR>JYwmok65WwgtUjekJ$c$Zgz2^5@+`?|!unPI;|ZaG zSnr1+2?qVUYI(S@g7WK~!?|fEMc2N#tcZOUi&nXytbVBg)!(<(J9+79{e0B+A`PzK zzKG$>qu$4#4_e+%=FhXY=Gb~atf}k%YetU!Dhz`&W~bslcC0&I=|PY#dB13pX#6tV zq>c?>4--XUt{)iay(xDly1&(c&2ePbh|9C7QfsNoT;dEx>rV8;O{<-y)iIu)Q54&s zz3Gp0-W;m=c4dFUm2cMW?H0U;53QkI?&&~&o0)$U@O3n=XL}M+@QkUGV8{y?Te({S0N>7G(vi@jOa$sJiQsyNT2wt1{n4dsfR`!wSi-n)5_e8;Ut~-?F_t za$|?uhLusf*}7qoa+TuXmwSH6Kb)%`)Q(+KxLO+2Fj{6$Jl*!uNHkN+E|@sp^74Fm znVTI|(0VJcPw=%r+!@E-9s_nKQ{VJCZC7@%TB5AM*n2{EBUN>TJzZY`-gkG(n#CKWu-Va zX9N}ul~o@cmdzjDdd1TuYn(aC-B|KmT|rM;7>`07VlPMIiwM2D%_Xs#-cFV0%zRU_ zRSZ)Gcw#O*EOS*ve89Zk_cP0$P-)oy#X|*asFmE^=@am1dvA14N^&sCjrUkrru3gN_4~NCy3(0md2G^|Uwn4- ziec0FffwcP6i_ylb5|vry6c>$-kmttGIlR{~;=BfZv*ke+U!<8?A z`>qHXI*6XW=y0XabVPQEwmq(D?Z61Okbyt{<$Ky|m5v*uyG7A`jGjF~30e>L)&{oh zTMOOO^90TOTzhJC!iRO*_mhVCW9gCY$NS9dI!KLCYy1u;)ce-#_6%g#-(?h@+5EG! zh4nq-MMf9xt5j2rp<`{Pm*Rfy>DXQ=mt5NXnVd&g1&$vWkv-cRg(Pg8y}#t=*7ewE z@=0tA%lpxHrsk0<0=4IQ#h*1f2_$?oWm~Fc5g%T!i#qPCd9}P+>cFUtN4LZAsJyMO zIU6gMFz9W|@|XwjH2IK|S6Xs58{APZ*^pEx*u-@_30AthOS0mG#Hz*Cvs-s=4Eih( z2d?`Zm@#7tUABKW7A}1`{bG}Fb*P2d=n7ND#aJ6%g%h-CUZ@>HKi)Os2B~!;kRT#fw$y;exggeYTI?(ZD=kRJwQa7>?)>Klzkr zW${sI9JRg#tMSJ5SPka~!jp}+2N9-ET}_WI*7c>{S?lkZPNq!^)yfid+m?&I#SOf! zm}E9ax-HJVq-~T+Fnmp#Nn*Vxy#K>#?#uW0kDOQ9_A@d2`3YOYH!%T6kH*Foe;0S_ zCeNfI?p>8ow;%WLdbjGN%;D{0<;*O?wi~*W+SMH~;G^HF_Tphi!sAg9Ie+(LFJWAw z_o{Z9l8}b3%lympzEsaM{W_1-H{In|KqsFgenv{&*q?SXc51fd@XFph$CT1ocV5<% z_!$!NNmzHIbkEvhO5|a)T&c3@Cu%xfwgGmTKc?Q;7-S+?7IS=E)emc#9ol7*B)EQB z5c2TB3RNG8H|#04X(y6$*l!q){G4HwepqpOMrup@g|Q~5qLzka&GWJ$zx+u*A-r6s5EPazDBrF`Yi=1(VDc6isn=HI&eSm1+H-Qi$` zN#wx$JA)$^-1U=g5-!G6TbJKZebgPNT`2crC&rP*!z*MV+1F%_vX8v;#%Uj(=c1(o znM0EPx8Gc}Op2Rm5S37H-l;hpzD1yLIMzCg`9A8#VGFmP=lKJRYt9dFUJ}465zBn0 z!ZLfQ&u_o&xleT5_`t+%CNiro?Q}y=#-~_jj`rbzf?)8$Eg1Wi^j$*tk!mZ2@?}c) z_>0P9Qh_IT+P4VT6OyH-?!NCY$8>MGpt{jdi$XhXVf-ju2PebFG^1Dzt?>qPvq>2O<&yhe9O?zb?PMVLzUe9-}WedHCRH8 zol-tY`fl7_Ge3Kg!Scv`qS(YOX{D5;?v>|H!)iT7y7>>`Jv&>Q-}IDw*?hiq_dEPP zdQve(^hRiBN|x=D$9L5PvR`uvDaF3kmAde5qvrmtCtd*-*Aa#fHyU)MpW?TFnJ_s~ zG_y)=;Eg_iS|GPX^Wf9kk&9dn1s%on!Q_hu_wU{})^y;zE4_R1kso?XWy~H0s|6`_ zu3_O6#b9^B+Q*}ly)y51em=U5BhhYKeq2DRQ{N?jNefTj^mkXS4v%_jrGA?hV?LCi zwbyd^H6zh8?Ydxu`eXC^wNKw|wZ2-H+++UcJFB~^HFc_2|G&RMrcyI4s?F!GZ(B_s1Y;;EI@_R8e zqxQv|;vL^5TJ-bgaXqYWHWEGI$w;w=>3!kDc@G|5Yx!2&{O-Zp2YcRuH`j1e4h)$r zM=h{bOQ|_}Gh?iwM~mZG*>1=C;znQ2Uf(Hgr%$<5eS13P`S)x|{}RR6@RZi;hR$*? zPFWl)S{%J=xRd?Ej}4J^ez%l`PUoXWWiITfR6g5{#OXV8n^Ly0aJU?4S&dN5OfEkB z#`edBiu#nE2Eo=#zU{>>%60^Q55uO9ZL1qbKXMv`+lB*=oPHH&(xP8;((3+X{p;2o zpOa^kodvp!N`n=Uo255rc7}y?^pV?5ZY`VO_UdI3Qazq6knG(mGVxDGwn}|Cke6*VEL=Z( zpmnbF#;#X8z20`5rF_+!9XjSoD?iiEvMJhK_ryCy^1er-@-F7dM2|H)}Fk z#wk-jZaD6_Y3J4!&r&Ij7rw@GkTnRu{v%6z;~QI_Rlqg(Jz_Qwp0jrzHkALVFgSdC z+v3-WEdww8-8c&mTWq!@Ub=bvZc47ZS>Q;P<}pv5%RPwqj$6V^Ev+&bjqXN_3;3%Y z_>vHY(r}))+n^4X-Scc2Zbci81})yOA3AJ~%j5}0I2*nyyF2>&Hdhj+OjXOJ$UmMk zuAfVKt{V3>T-C0xaz|%obj<}s91;tKoU!f%fi2uP}+L%kA1JeYdPd{D)Fs)p{E|ZFtzknyBT@ z_)Xt*iF7|G*wa$S$DZD{_n#XGBK7K~|Z?#kyo4OCJ!HZ4veJ5@^s z97o=!YN~&rVCv33e|uASF|PUIiL!{{$vC^sE{CgpO)w7WLoBH88~ddbd~T9nm#TXZ zD9iJ)CTFqhwGBnSKEl2$Q=5gvJrX&j`)`%m86ix1D54!iC8m*eJI#vLCkO>W&NvQn zJ~o>V{tgdF)_EIYKRtLAJbbZyKYx;m5AghW5hOPjfpkpzxzpgy*H5ReBBkaMJwDtT z_A;JgICT14qr|&{@TrZohseyZ&lsym`nr-KWr(!VgxB*4P9@esrk@|J?47E#l>FRP za;@#KszyPAp}iL+W@JX|CL5Z?KD_Zd%U4DF>B{FZIq#E&id;7N+sz=HRC{ujDFG)N z1@RS_jtwl2y3MS+e&YRI-4`zRx$Srt@_r&eB`wl}(6EZhZGrOqX3+ ztLk|G*Mmq-Z~ly_1|tEHZ|C?b;xsuB-G_uQXd^bl@JrXGv8_Y1W6^KyjLP$=&)>v3 zUwruv@xJ{P@j~Mbn~kQeb5{dYpQ+byzn2noVW{b@KAGRqy;UIDFOb)ZV`o%vdN8UL z*Bs-l(*FLFVU|Kqi<^Y*`@sgjqy}-_pqxdYF3OLJT^&i%T4%5-4;c?R^<3#1FMY4_ zoe#6!n@dnW59#l;KkD>q%&4+*jb#30NT0^0Y^E-YJ+Gg{Zhy6P-g*yeBf(_Ljp$rz zMbbCs+5X6b^O%VRO!H;#sZTueXA>hEZmh~yQfxXF4+Ihvoyut3>LoW{eKFP-kvt$E zPx{>M^=)E{-&f`K;Q$g@qAZc?arZ|a%!T88h)PLLW)XK~pZDR6JJ)~Sv3!D$+F+d3pzr3$gR#txYs49(((1;c@V%uk-h~CPoD!xE^$u{SJ#Pza#$A0} zYTCP%bUM2uQyck!+F9GL+KH}x|K%(<;F<*2_p6}dxY2Vb=+2_sfOClMwQP~a*opp;H z6}N_Oes~9E5PP4_TUf4+7bL;cA5kb?l&rB1!l)1kzui^XHKF=Ze zvBQWv+an%}HpuoS`)KKif4RDUy*VIpuIzO`rE7`H!t!2H+vh$bu5>MnOEsLmJlU@| zo?o#>GFo_Cxz3LH!Er+3#o{0>=Z2B(+RY>4KLzgOpiW<=VHlnHdi`?m%zbhQm*B1_ z9DmQy#(1Kl=*n$v=yNdE#%Fcqqft`z?ycvD3)zJ?*fO`z&(ypoWNZza9>4fg##Z6g zE+0he5DI(b>bi zsOs)Xyd<4`vQQuKP1yb9h}KW04O`+noH#?R9ra3dz->EhVOL({#Y;6CrOu1(WoKSV zDcro^W4!0JFv4$Y7on5ouJf}gXNKo8ry_*%qq3^G1@gO8b|3qimGljo$l`kEr?;R5fM)qTMy*Bs)?mH~wHDmkg7>R2R zPqt2sKY!UMPTR`#;MkC}3n}>3%ye^onpd$nNn*h(v#ASzUEt^t}R8|ywSy<5-^r# zIA&pb%Q`rMRff=Z-=in{)0u?(lQPv*uNuDU;h& zJ?#3j*wt*rj6Cu2Nruz?N!xEPS3)d;xZjZv5V|S^eNrMkOh2V=)tJzi*q2}SrX@#F{JuXN z+}6CBDY+Z7dFAUDQfT6tl9I|zj?#PIx|c6R&m<~c4IGx)t$CTGkuLjlmfOFmL7WnJ z`E#K}|DzV6jotF5&QZ+_#mlGsroRbV-u}RYL#o|+pw!6uQ}j(L!6nnunV=6?S&v-hgJzeTzAfkf38bNI=^8z#Gvcik7>Uv+d=@gx+t zEW9Y4I_t8Odi&sl&#enL`LvsNK37@IUD2w|%JQ;YR&CPcZJoH!@Ht_p_sf&-@a1~5 zVzzzby|Ml#r53!$Im*YZdVX%^<|y68Q}Rw>GOZ-U;u2xASLUS?)d-n<*Ih^->60^_ z#FcKn#eIq@ykmnL?@0s0xCg7@luLsNytMV23)q5**}ymbBh8U|6$+Xbris=@qxBOV zEO&w~@@nIse7I9wGcalCNc6Wwp3!%w-EQ*T6dBE*LouDYSB;b_Oq2%2mGS?sKq_sLaYh?XA^twgj?ji3R zEsCN879m$9G72tV_M2>SoLdW-+qdrj)<^v^Q=6RHk+=M%Zf%qc;# zl}5#mB(_R!pRhYA{3fekx^SUbb-hJx->o1sjK_(C5~8}@_j;PQwkcf6@wV&S`PrqJ zQS?PiaQ<+iTbFHX$4Bv#JBEx)5}Erqq=Ms?4n4iZ&}J4v6%+b&P>f4mGV9&zV>PO( zAMYn{R!7QdzKoCvuy}m=Z5E1aMR3tuN9#q##po{;D~=W#kv^=2l$?NQGu-I+oA%#i zUB%Q_H8O(NtXm(RkH4b8x%bj>bnlLz%$=3E@gLNCB80}JsjPj?FFaK3a!q^4o1$_C zv2y8Sw=HPLFi%hC61or0EyPEtp6b9NXvPlQggqC!S6Ci}BeGJWDbmfWmoK07S80iI za~nmhJJxNRt?6YHC8cs)&lScGgpZIn>-FtY{&KiELx3SOw~`B*a)_E@(2rAEJQo(3ESd3i z)JPTggldvNYu`!SD^1AEe|+@w7p2R1>`Fpm)5cmu$lG1*C$7E>X?-72D|^H9?!*bT zLiTH=YZ~KL3YFg_Nb^5d&Wq(Af1yuIl(4L}D7cH@(AXT3{08xnL(9bITY0Bn zb0nSK#hiC=8{@Xm+%Y^Jy_am-eF=jRDSdV8&{4iy0oxWlkGpji@t=JEj_g_>v)r(b z{GM|J|M|JhKebh`g%In|98gDQ@Q@JP{ZmuF5~)_yB;NPlWF}#5&M~@W!o3Y z9lL9@=3cHpu8DOwSf#!qkyuI&kBHBGA zUpDzg?H3mJz5LW7Wmi>Q$3aiB^rflCOdkb;)SI(nSRcNj)#;UyzH6>|N5Wig zc+UkP;Ya(w-*G46mNiYiPtM)sdOU2L$$p$MxV2)&|6C-Q5C0>4RePw`Omo|}ZBx7h zTUR@pmF@($it~%$WHQ^$5|wxMuyr1}`*zb^EspQ6?{D7r=FXlUvHPvmeFjZA-M*FR?mGo47Wcy zX_m)#D}6$dFLtXO4!YeuH#)CyHoKW&EjAYKC^{E25S4vCXOV4Ncj|P=zQCLd+&f@!+Hw1HQv17-{n5AaHN#KJxs69+bHeygdsOeA@?2+=nzc_dxr9H- zaBm?|e^D+dB|2^1R$?H>V%J!Y2F-R(`T?U?`@m&O{i)ltcV6ds-1M!!cJ%dFmkt4Y z>0CTg?qjGS_xTPkp=aO5r#Ulj)!L8Q70adE+3xKfi`;XDzg6+_Aq!5UIj(W}?N}qx zQ^N(PS`=n)n`K~yo;s=p%ba`^va#3lpk=WDZsEn$ka75}YYESJ`L-Hh4~JB73hedX zW!>%+CM$=3r!6yIuvGJu``X9RZEMHM&RK6A*s|+q>WO6RJ;e@3?P$e-M@W2I$p{PA zTv73`7;c_^&kY$kMHt+IZk;hWrQs~U#izdqbnzx=2(vOu&x@zU^s zf5SD;KrId){f@gz@vS9V9~rpTPdoT@ z*T{7U9jQ%AeYilHn8?ZKiY@#2hJX5)RY+J~`5~)9W+ko{KQ^8bZOe zkx?d;x7mnLl19=IZyeAZy0H{%dt-g!9A-x;C(~|aW{d658?%iU&hAov^S*1YFxQZu zcPgA&H7Ux$7}Y1+Fa=?VswRZ6j}FRXbyEv(8aMVMS1`GXP4M_s9srrV-mtW zx@j#;G>=_t^whD3RRQL=ydS$AcOG0x@h@82Wy^Gnv&7s@Fl2h&`qsT8?ZM%1Tz>4^ z?`yi_;K_oqY)>=`W$zb{r`qKRrX3%veXglI%1$62W(~EpA8Eu)osg0JL_CrIDd@E0 zvxIXN>G=$}gx+n6i;=pu8`Ld*c=O?YsRRKxk@@p4hL`oU_TS*;iMBJ=_Dolwd(M6K zwfekN+?VQ}Tc7V}^!wi<)Usx^#kB~|eC6wBz~2uIb5h-@u-)?cD8t}=U-|p3ck7r3 z_0@87Lyh^zVo2V0k}box#LqRfar#PBY_fed{?#*C)1acia9;)Ine@yev)3M7aUH}v zxXH@$Xa=FvqKR>eY0Bfp65`>Xn!n!q;gR~W?Nd-;?dRh^mKfKq$vdCp#p8DC9K{LAH6{F~FBPR-p3o#-`YycXZT-|dadm+gjQhiwKZ(xc}e zo>v-*U7J6s_OyRQ)loM+rvAsG=DrMu&ewHGuRh({ZJSWn-C1@niTS{MuJ$oISu#su zgNZ==2Wk^pL$vGx!!x;pDb1`D@p~QfD_0x7aJoF(r?wd4<^SUtZR&wO+%-gJOKk`Nv-9~WFj%~G=y#8uj3yBPOx%-?Yf~@T8W|xqE z><(4WK7~ERck{4VRN?WM>D>Ko-$X>*_8-5MF=V47DKkZMxKn)KQ}TijTa}+{+`Hg# z1m965Bes~J353@(;%4+F;i{S`H&5S=g>#o)&x;-!o_koLF;{Z?g0C|{C7o3>cfRWZ zc20rh;*cemLYUgi7tr+aCHobUfLX@=vMmYfOS!_-ysp`5ta`%UKsb$x5&V9~)XF_vy`tN*q0J_ci z@9c)~f_G}@FX;q$?fvx?18L|`z&~;~MS?=_c*EG*&cw>Y(Q><)3`HM$9DrAi=*4EX zzq)du7s0DFGL!=cD8I^0&HhU{d|lz+@7utI++p?z@b{y?6%SpmK<@=1QIYfoygW}| z1Vqz&KKg6ARGKA|mYj|q9lp;sIMP9OvNz=rU}F}%T5?!kTm&oO?qDMbuXv+*Sn)gp z>?}g|4m7qOOMQCX?GG3|eN4opDR^m9BUAc&R+KaOIfB#Et(55(?V{bS-FOZ%j{AIR zy2RnsToM9}M(>NT(!Euet;}+26l-s2Cb*q;xpxFi}sHWO%70Q(8#{rSf#B zU+~k%`x=p~CVsB=9<%mdT<{Q@!YMeQGM9A92j&!3gLv!1f&3yOT?=$QRwa_|W zc2JU)9mRgNJeN8;)XC}TMH6Z5=s@47NmDbT(UA6AjM)!_+2|im&SA#GYmEYAlJJTA zEM9tR^RN+kG4M{By`u^F(@K}-^h}$`kL7;-$nZ@X@?s>axEM~VrY1=#Gc}uuh+<*6 zRGtn0Fia8M>usx;SCC4!rr9v>_Og^Y5NfT5M-m8l6eHu^x?IEevjfznl@8T=ZJpS( z)C?R4D~998$A<>Ko~GhYhaU>bi?S$Mm{>9Kuru;uPz($d5v0g&A1gUu?@f~MS|aMx za;JLU(G>Q~ltYX}1d&)%m#TUo+}2=lu$6UR_+}kb6LZ|LqX)TO&U8wMi!w+iB_$!Q zmgXot9T^ZVDNPnpQbH)Hsp2%RmK{-4Q(@5HV8e1!L{XwzN_eeLOZU{ymuEm+A9JbJ)>cGc z#{g+`q>KAjO{NwRO(GpmIl^LOY>c9ap~dp@liBuqTFXBk>E%CPk|wUEgi%{sZd0}} zvcR{tx1;v@*irSAnf2vGm=%nSj1YIPA2HBVVKKN{b6Bsntqpmp?2zoO>xXo#jcr++ z9LzYiRGD<24)zJ`_Oy^b5MgI{ChxGo-p}+am>O?l zxKW#~E-l6+=j&xA@%7^ao$1*Qv0JrS+BLPw%4Z64h26K<3VmJf(SG^jzGThy6zHi2 zsr=@}1KGV^HVW>JcET^G?};xhwJP?gq^ux43|LhFn({8lL=7Zq0n&XB)yRa9>;?N@0%UMNSnol# zI6yj|ASA6I9aFH%G$3jeFhLKG9)$ET*!=|HM;bz54Y>FOVbTNKoQLN73N|K!JfA`+ z9z%0WgVcRN%KN}#;$Ss-2>B8qArxd`1kE-I)-?j@v;sy#K}NoSzpG%wOt9%Ekor}S zd=gk$0I=5$NRbB_TmtE+0mcRaO?W`rdyw@Tz@UIN?+?Jm0gzTJgjxx#_z7&72_f1IlBfYx4FXyzAm>rADgtZ;Z?9r7 zAh+FMl~4#X2BiEL(0c|ja{_SW36i}F@_7k1*#;ZVGtd0Xa?sa^C~K4g*^5g6)q1w)X*c-2p{(yO#j=J;6#8z>zgzz8g?U zm;D)#p%&nS2)L04i`)Wi?FC7n0eo%)94`T4@&HpyU{?!3={~@8AE1H*?EMweKqy!} z5-fB8kf26?aU4?@=R1XyMXBrgs2a)*?639RV^Y0U^yUmD<&15lF*so@0Rw+1lx5^!Jv zcG(ArItJ=tk4AP zASDNAjwP@`JIKHX>_-747=c77bO}P!PlNSefGk?U%4D!(DO@%cLWu?$ML@Oczyf5j z%`jNz1%y2mnllM(tqS%pf$FJ%WQV}cA0gbKAjN5Do_w$v8m#09GPDQmI6`=9A*@KK zHU*Hv3bu^^9OQv)SV2~;Ah(ZD^&zk-1)66TtR7Bp0tj&dSZWCDmjWSZ1GITU^V-ub z0pXbiY#<>7*Fn-pA&e%_M0FtFEg-*kkZdR*vJ51~4p=M)DGq_%ya0h6Ajuj)2o1u# z1?(IK_DKfIBLEp>uw_174?p8k zIasa?Y~&50E&#jHAnaZsi%^h05<-jui`D@`XTer0fR{E1c`C@673}a4tm6qN9|k*$ z0%}db-t2&26jFpD0{Hd;Bzgl;X?z>>*;gfPIv3Rq?saJmF&%>%4CfE809 zO|$|&R{$q8u!k~W+XoQd3Ms4ua5)0$s|L`9hE$OPm^TJwi9ssLhg9PU$Q%K?lmNn& zAQdcw-HjmCw9``?q!(pKha!LzBS7hONGmFkvT6X)ZGinUK-+alImVC@9l%PefYm|3 zu_vG_0x*~dDQ6JuWekYf0(gjkbXWoym;oFZLyD}0bR-6L_X0G11l-O-8la=T7EoCL zc-jK#YZ>tU0+4bYQi3v|?gb#w3vlBIXqX0+EkO!tgS43hX_6hVs{)9zhcq?_sn{D* zun43DG^AuzNbS>rDl(uD2{;RbG>`|W#T!s43aQ{Iga{A2bVGHSLD~nQ=>|YD4?zN{ z(0rL7^IW<`psHpNk}j~iDKwEC$cJu2E0BH%T+$dWg@&r7!=(vO-6TLjJA^$0kkSE7 zo(v&Hg7g@`szhkY!ypp|kfaqzcL1u92_dlt`)2|&a1hpeP%Q?K&OHc8J4nY2tkMRE zx(}Ej(Zd5FJpy*m1pMG36t;ki`}AMb05|E-d_7=eW{~FqgrXaon+c@838cIkvOf;2 zMuL#H0TSr4FotHk2iB#5bXox;CLkkoz~5o8VK&&b3#6U{l1~CFlK^`U04YSe3_v;< zz*sw=i3w2l5MO@rU5STAlGg{mO0qs2%rED_Ur`op&@krfS-d9_AHR^0N}y~ zq}2wYMuHVP!G?z*M4Lep$$+XhKq~^|+yz#p+X{ujATS^|3$O|e!i)nc_X2uz05e&D zBN|Bd2*~F?*u)Z0+7HO4LD-W(rhO3dLx8$eKub2*yA|x13>G1Q#mxZ^j3CDjKyDx4 zD+kb$3${N9*tP=fS_6tw!0yR_eG{+}8gOI-nC}Ku9s$`O1{pE}K8S!D7O==6z?LmY zIv4P{8F1VVh)DrVb%0$h0i_mz={`UO7VO;%X}}1qZUz>z10-Mp;|NF@Xh4`LNZ*D5 z{s4n?U<%0X1k|R1B_03*34qQ`fK>wE?jhLK2+)jz6x0goAqOOn1&cj^G=T)mw9}?Jy(-f?l0%?;OQYIGCh8^G@0e0U6w(kdPT0mMbhV;@4ShWR|J%H5H z1L*GubRr zyEsU1U62MbfU`6}X)mM~6G#n=kP0#&1@-`Tts(WLLK@Bm%svEUF#(=7Lu$+TS3e!} zz9=Ky{e6OzRkYy2!G*u4e{J^;cJ~hUfc|0WPZj=n-tbqsZ$R{aEce?N`d7JefIr3d zS3k4=t;Zz@djBS@@yztDZ+?BIUlT?DfkdI;_d+z}(O(nx9}~m>#f1C6IYCbU|8)9C zJpSs$7@FlD<N5MUtN%NuFf_sjoC3xP_-jdz_dkw{2n+vp z8~-f#_xZan^y5)L3oHVMU_vlMS6^fVH$o60jF3RcAmk8KggQbOp^q>@m?JC^cF>oz zD*}45M))HF5kZJBL?R*;k%h=c6e5ZcXA$Lyi-;;j9ikr5f@ni@BDxSGh$+M@;uYd8 zViB>7SOc2ikjzLDk`u{`qKN z<$!WQxuQH!ey9LcASwoxj7mjipmINSIvbsfE<%^0FQco_b?DpZ zE_5$?2tAITLcc;Uqd%k9(CcU%hJYbqcrpAK35*m*0b__U!I)tzF?JYd%npnXCIFL& zNycPj3NU9e<(SKuT1*qB4bz3`#|&V`Ff*8W%sOTRgT@lDOj!6^56g|^$4X&kuvDxA z)&;u*>xYfOCS!B41=vFDNo+CpBDNA+g{{N3V0*B=*a7Sib__d-ox`qR*RVJSW(GC} zZU$inF$OsXDuX@)jlrD3lEH?-k-?e4jlqv0mLZWLl_8zsEJGkI@O87GXB!fE2na8@`woCD4o=YsRX1>quavAAqp4(=?j7*~&L z#C70$aQ(Oe+z4(GH-nqUE#OvhSUd^Oi5J0(;id30cvZY1o`!e8JK|mOJMbR(0DKre z6@MCEjIY2~;hXR+_zrw8eiHu-KZAdZU&MdLf5T%5ID#NSj37afBTxzI1QUWK!G>T* za3;7CJP3h=FhUF=osdPyC7dRd6D|{~2wj9HgjvEoVUh5euu51bkQs#;MHrPCwHfsp zEg4-Hy%>EM{TV|TqZs2D6B&~k(;2fF3mA(SPcjxWUS_OhtY>UuY-1c?e8TvOagK3; zahY+25zWNL#L2|ZB*rAeq`+jzWX|NkrUs_lOdU+U zOan~Mm}Z#XGJR%RW5N-ch-^d&B9*92q!HbS9z-u<5HW%nLrf)R5%Y@&J&l3tHd?SGm9|GF)J|ZGaEA7F*`E{Fvl_{Gp93WFlRI8 zFqbn|GB+?cF?TWdF!wW$Fpn`$GQVP;V_soiXWn2YuyC^ovWT!qu~1pmS#(*fSX@|K zS$41lvV^fjvBa}vu;j87vYckAWocl!&Cn-Hn^m9Hkkx@TfHi_OmNkwwoi&3spS6JXENeMy1#2~HEo&od8*2~i9P2Xc z3hO#6mW_#xlTC_EflZsujLn?QmCb|Ahb@3Dge{pZl`V(uG+QZK1=~foO12KRPPQSo zake?OMYhjuYi!Kyg6zWVV(c>Pa_q|Nn(Q=ob9P5|5B4zj2=-X^c=lZOBKB(bI`(?@ z+w3juZS4K*L+n%R>+Co(GntnxMOGkdl1<2FWJ|Ig*@e7=>`x9L2a)5*$>a=jHaVYM zKt4+@CRdXi$sOb|@)PnDd7ivLULk)YZ;<&pL^!A%svNo;W*jygt{j0JAsk^GQ5-oO zCpn5aN;zsd8aSFbdO5~8W;y0Ku$)YsY@FPj!kiMEGMsXpnwO7h}x;!R4mOM5*&OH7+VLUNB@jQt<={&hSr+LouT;!?ZspGlL)5g=qGsH8_ z^Mq%L=M~R9&u5->9!_3edNeldOtek#8*zb3yfKaJm<-;Upz-<98wKaf9yKaoF` zKcD|B|3&^5{!acO{&D^%{EPgn`~(5A0Iz_QfSiDWfU1DLfSG`mfSrJ|K!iZDK(;`R zz)68}feL|ofd+vdff<1nfo}o?L4H9IK`}vfL2W@pL7JeIprhapK_9^Y!7#xn!8pNq z!3@DH!9u~4g2jRrf)@qr1RDf91;+&^1!n|53w{$s3gLv9gvdhNLJ~r9LR2ArAxj|} zAv>WUp)jE=pMbiWG^Iid2i#iPVd&_Gnh08yAW9PD7Znke z5S0^E7S$HD615Zc5%m|15RDQ|6ipY+5X~1oD_SgCF4`d4BswWNBl=2oL3C9VEk+Py z5|a{>5u=K!im8j4i8+Wlin)sUhy{wJisgzGid__|5~~$!5$hD|5gQYGCN?X!D7GT@ zO$;l}B+f0)D=s6hFHRFT5w{Wd5cd}k6ps~;7f%#V7e6gtDqbyKFWxBLDc&pIFFr2* zMEsffl=x@yRq-`(qy$caEWs-wC7~>#FJU5KC1EEKA(1SRBT*nxBym=vSfWy*R-#Fw zUt&PwiNuV=s>C-5tR#~pNs?1iN>WBrT~b%lP|`}$QPNe?PclFS+)}(!>Qb6gHd2mK&Qcyyfl@(I5mGTyiBg49r=`wH zU6iVps*}1c)h5*`H6%4FwJ3#_#z`|vlco8kg{4KLm8JEi4W%um9i-i)cSw6l`%6bj zCrcMe7fUxvH%Yfik4Zm~o|K-FUXWguM$2Gj*knXx#AFO*%w=}S_{jvwgvdn6q{?K- zQz_FT(;+h^GcGeL^Hyd-W<>@mOO_Rsm5`;%+Q~Z0ddT|82FeD>M#!eh zX31vD7RjEKy)D})+bP>G`%HFLc3yT_c1@NnCncvWrz)o}XDDYSXD8<@7a$iT7a|uY zmm^mscT%ogu0rmzT$5bC+??FJ+=|>cxpg^$JV~BgUQC`UuP(1GPm_0%ca;y2kC9K7 z&yX*WFP5*8uaj?(@0A~rpOl}GpOt?rzbL;Uk5dp-5LVDtFj25nuuq#3?c>@+t}|N+>EQsw!$KYAYHlx+uCShA74=CMu>Y z7AO`eo>eSYtWc~~Y*1`d>`?4i98sK8oL9tB2~;L38&!%bL#0v8s8&=Pssq)98bXbt z##582sniN;CAE&)K^>qDQ75U-sB_c>>SyXVDpHAANlZybNmEHz$yv!&$xX>$DNHF= zDPAdEDPO5jsa)x@(ru*{r7opjr6Hwpr75LXN{dQsO6y8!Wr8xVvWT*jvVyXp zvX$}|J zRaIA|shX?0sd}jTs|Kn@sK%-$s-~)zs+Ox(soqv?Q|(n9QJq&^R$W&`s*%*lYP@Rv zYMN?hYR+mdYCdWKYC&qrYT0V}YDH>i)hg7g)f&}$)JD{1)RxsY)ClU_>VoPD>ZNIr+bwBkG^)U4q^*Hr-^ZjF9)f?2C)LYa$)W_7Hsn4k|s$(^98f+S3 z8p;~bXQhU&hK+`uhNFh7hL=X5Mvz9fMy^JcMzzLmjYf@rjUkO$jkg-B8c0pFCQg%I z(@@h)(^At;bBCsvW|U^4W{zgL=4H)F%^uA$%_+@g%@xg6O{^A^mWY!j92tp=@5tsbobtud`}t!G*@TC-XkT1ag{Z82>LZ5eH< zw!St^+eX_>J5W1TJ6=0gJ6k(nyHNYIcB%G7?P~2h?MCeu?SAcN+OM?dwHLM5w9z_b z9Znr#9Vs0-9c3LW9S0pZ9UmQkogkf9oeZ4{oy$56I{i9hIx{-2bmnzdbk=pyx@@}q zx+1z_x(d45x@NkLx~{q&x?#F;y2-j(x~FxEbt`l)>Q?DC=-$@t(CyV7(jC{G(Vf-( zth=F$)MM6T)8p0?)|1gw*E7+x({t2w)AQ2{)CbwQomZiUcXVl zO}|HfKz~IaYd|m{8L$}$8i*Ol7*GvV4QK`~20jLU1~CT71{nsW2Dc5G3|b623_1;Z z48{#64Q34H3>FPG444d=4K)pQ4fPFahOUMlhJJ?rhOvh6hS`SshE;|whW&;khR+P& z8qOOo8?GDj8;KZ67|9ta8yOmz7?~OEF!D0;HwrS!Fv>S7H@a+8Yt&%WWHf0sWi)TJ zYV^&BKx3k@(Ku-$G*y~9O_yd!bEWyw0%+ti+6wI(4Qq@u z<~0^J7BiMHrW%_VI~qG1yBT{KM;ON&ry8dlXBp=k7a5;5t~c&9?lm4Uer7ytyljj! zA(;r9NSH{OsG4Y+Xq(uXxR?Z(WSiue6qr<)TsEmTsW)jd=`tBGnK79&nKxN5SvL7* zLNH}A2V0$(bpe(abE(9L=1~yv${Axa?Q%ks?4g*8qK=QB11wbL0-YJlt{lI z7?#B=JeCse6&^qzSqO$ngK><0Zx4VmmwpX37J&$*1VsEA$_1Wu&(8m}1 zYiuYOpDG|4#!{l}_X`g}&_|?!(Uf8W;QK><(J(LxJk^QX8}+N6f1ie4-CtewdV9fr z!Du)zRt_A7KzN1wt59GB9ayT;uLFY#MMXq;)0gz;HuN9A>hSkEy&MLK`L$nAXn+cR z_%wPMT+xI6T;})Zps2mj^Y6be^SgX+#O{Dykse`D0Wg5h-^cykt{%Z59^P;{pWT1o z2mPG?YV*JMg=X@I_%$NjzpqO#gKLHUJ|BHOC?q)2BPJxA-n9Qixlc%NL}cWz5dU-A zAL}Z=PV)Eh^ud+>UCF=B`DYpZxPPyQ?2Yz=I(qqfc){>!|C4S1wHzAkzw8H<_;a29 z*=(CVeWWQEImm2_Eqxp@c>W5zL6o2aX4piYVv+u7ji@|k_VYDYxOIve~s8ISiOTYI0R~h|8 zf9~@uko2*N{yNXU_WNs4B@g&2oLA7__wny-A#}(6b&#>`7O4FH@GOuX_y6>4kskm5 zSRNYi*AvHoJX3_WQ~CWU^4Ifa4BQMBW>%P?CwuzXiwI7bjbNt147Y+XgV`Qt2bi5; zc82*M=k?#E@@q)8U(Yk?&ot?yD*rkCUWXx@|I74yojw}zpA-FgD1G|%>>HN9*Z*hd z`MsTf%%A6>fBtCwjc-+t%m@{yovleoypR(zpG2%|Gvj{+Yh*pUdB6zweKJ z>fh(2fBy3v^!0yEzt2ZMhW`1_`u%fX`Z|64?|T2UzW-@|dYyl_!$0f)pZ2G>!S8mV zfBycTcKW02cm3)2|NFk^_4vL1XM57i{#Wb!$EE)FKEe$Q7BI6iz_sZ!eWKszKkw_; zhX0ixe+un?>(0;!i(|~JFcvHP7vispeqXns3=d2COrPjwCkmNaiLj*4^od^f<~TEb z1dU(p`CY~X$NqD_Bq)P1U=j40KGBce2Ir%5i$2pQdRZo%j|Z0YnLg3WjEb09MPNyv z=@Y%|cU5~x6J;X1+tu#f_s&jwDljC2vc(_r?~6n+HDAyrpB8o4jE_B{hIzJF$XnO1 zW5TZ_#~Ad{gG1A9Mm;FVp&drEuaEZLnQ;G;wei~vIvSMU=l#9>fAsvC3xP}0J)*UpprMzV7ek|Et%3>89U~IB=`frv-ar!a_s9 zdE`_8m*J&#@d1xiza3&v%d3tHc&}`wq;F|FHztD%J$^jMpQvuT`R)nKa^zn81F;CH z-}n7{`Twi?=Mg!elDBh{qQ*nr*>f@SJS+#%r=?QM-s8%0>pOQWg;;O-KiGQ{aH_tq zar_Dyif$=U(JdJo%o3W+L*_XRuIZZRnPg~?G|-4rNrTcrNhDLVlu~I_qJe~{RFwFw zea=1iUf1pO>HWR$|NH!(=l7n+b7k5R=1*Soq|ogvQcvf56Zt0Y|4-#V|GNAc)yYCUR}Q;MJ*~{6^Vde6<&E8f zsUJfeSC1aMwkTuV#^WvTZk_sec59=6>Ql+ByPKCuyB@gr_Myy_hoAgDEB+k)JeA+$ zS>&j&B{jYtHq+;dOaypCZ}{I>=7hgLrL5Pua-jJ)dAsSl z2b7aq4{Hg%6Ziks|9?>bGx)itgf5zpx2g4MO2|HPMcGQ3tZTAjzP)c2P1)_Oc5%{} z7t-t7Yv(kWeQ3OVwUMW3d%wc=fr-;AYmdvtIT=~_RjC{(|GlGq$)sNmG`?zq$$z2ydW^PM+btQSINNA-`M1?ZD`yeq zPTc>u{Qn;+|4|!us$ctg;bB~`%$0_h=UrqBn{G!)MlLQ}P|-KEd-R!uw!-flH57G} zxXu>(+IFSOK2x5YAzPTdVzbzbC5;{T_fPE7zvo|eui^64#)OGRt#_qORVmiibDtLI z29@@5E!g_7%4vNq*GF zxzyO@(}XJdm1DxgpS14omkhY8J&UOK#QlHk|Nqwi|7Yrd<#?y?BRhj848DJ-5fyjw zq{{29&nmCihh0)GTUeuVaod4Mr10r^RjC6;UDA=?cljNi<*9YbJ$uEwZ{BKB7sBU$ zz8x)gNH|gxu;)A7Z>!xw}@r(i%N?(YK=9=;Hx%MEaKM_sPFj7H$qd<*ROx@gXZmdi52L zuhVYu8*Y^7KV>Ywx-0(hxyR&+_%`#fpI`m1N#4)(o}X^m+p+1;PHh3bEymOQpQh|1 zDLnq9G55B((D8v$fku0lzcX@(YR^BYWc4P}VfX8r=?)(fF9n9U+)jLz+4bl((e4dG z!8Yp@6cOkp8%D7*)w7jSrr6l(Fzr5}VXmv-N2R&OAcGRa9z@{1Xn_b1asF!KD+(;Z86c$dgwKW47mDJ{A z-y9st&ou~r?K>(IKI}$eawTloVBwCSQ38Cz!oVmE>qhvs7wiR^QF0i zPr!o~7>>R(A4)h9a5+4KLMh?i;9CgrAcckbN2*dngYa+2Q(VKtu}{g9!d$@!Pk#p( zjG94U_>7@=y83`&e^{8iH_hFT2mn1mwW0(C6D|zQslX@*q^A%Jg*!BYS)cvfK{=2R zi&G((t{e6=82pE`r!evb?-3LF98L?4iJ&NOO~6~n=Pdkv}5d_~Y zL{1SJSkC<^!ITgre_({aKgEp(Nzo{9E<5C%S?9nf6C44%NMScebZ}50C?EN3=t&{P zpwEQ|d64Mt5DMl50Y?X_K>n`K1cKbdX~>m>xob!y^g1;9mODlm768J7uO=h_R~y|E zfxdZ<1fxfyL~E)l6P1j>g@>YY3uVx-lq~~?>L$WNkq^T$ng)1p2!2Gl;MyC3XV77K zWnnwlqWGe^{*qwta0{CgXLL;D9p+G3g;PVOyQ63rK0r+6fc&zPX zr3r2@th%CF0og+SGt@6ID_wwVIOcdl{x)X$V{wRTK^h(gJP2BURH-mpdR5~XHj)n( zk520aAIgLt5jqN2%z=m03T1)UdDOayK1B(2Ch=*-AT;;4%!@DK`?Gnp>Oi>jG>~@Pnl|EYfD8H3?g$1 zLp)jVI<^+dR7*WO13Rj%oeemThKJ*{NPa2@O2h|+5plw3;Ss@9Y#TW?2%&H*dtE9V zhhV91fb+sT2r7Mu7=~ly8jAC(<*RkQv)VPuB^(AyBdYmbx5z61seNKTOBNI31~i`DQVG!@}?)K(&Jkwc;Pc zIr7HiTk05Cv6kU*xtKJJJPeZodR*vGS<{AKdTvJIiQKT$56{WScr4*qJ?9*sSsDKr z&Zc`LD>H|<7C6U6S{f-Ao_ic`VQ*%JDxjH(9&uC$rWaN`R3RHDD?1iER4g4k14ab8 ze0Uss7!ipz%-m8Rd4!2FLG;8k_+F{>p$|*P+{jQFRc>=|TB5uK&;o)&W2k5}#b6UV z19Pf_fsKiw69&T+6-_8;ROqpg#}>t5#S!Tk=s2-w7o%mtGbBemFg#m!+3`dKgx52- zMNN*OFT9;#-8YtwuDywworwk2)WFHezyi;kj+v3A4L!3~5I{wY@VwbTw*XJzvmK6S z!nP(xz=jFy+1Z$(eu^Cju%($k#v1DZZ|+Bi|o;OrI>cF8q~bW}1N)(XLX${g1aFp1=dN0ku*M$F~W#DEjt-P;fGu|RVy&=W@) z&;$$-(XSD_VIqTqN8r)K2m+A$vHrzM$41B8mK1D@P2mkA0^Lby&TT{s#GYZb;*C8( zIw%fm$@C~B`h3dJhvx5r#6a^VGwiq=62U`Gc7u*TnMA!$wA$_3>@f$cVMBafx_`gLUN3#GwhC^`>tsDyu@kM^qX-M7_ zoQ@k{%qPl%0~B`k0DpFV?^tjIzh`tDA*V*M5PZ@ezYy;l2)7KT1;W^cnhCM2zz7Jx zGm;hQF&*M+yYi6hU3kdVaL@7NA@{iPkb~h@4bQ>uJmf_9;oL|5*Y<%p5Uv!(LncEU z7Zfj;huj>(LlyyYlpd1v|Lbc+dqxX(Z@eRL52AT`!soGJX0C6(xS`S)lMEQvpXeFskxGAtksPKKR47uYHIOC>r{l17CxT&kp%Uw4cqXA? z1<8lf!0t3x>`u(XkbMQsmV?2*fe0}k^!X~WejXveduTA)E#?K%Fv2{*jt4(9@j0o@{>YQAcxE4D6<@h;J!;jY0Y#=sB2i*;N?V_-8I4vm2gY&byS7hP5Y z{J%+?$S378-p}*HojsqN3f|I~%kSVn7U}(L5-y_&_8P z!MG6t)oHrLj)e)+hQwsd#L;atm`M>cQPPNA&tSU<9QHgc7}+&K=(Y=JPgFf!`dl70 zF!~|^oBJae&Fw)pG>=Ch>pb2^#RJ2kHi^P;dk3SPB3f(`kHSzoXs;`J#_SeY-f>#O zR)O&cy9C{wfYGwrDX?&4U!W5(VEVcO!I<5EZb!hv(R7+HNI*Uij& zWNZWOurPXmgm4}~jI3h(0LHR_!icpNHX^}l3(O6O2ICyYA{`qJt$R>(LS-Zm6(5Ff ziGCCah$=L)eg@%-9Vki?s(1g1xsTp|FfGIXU|J#n!L(3Wp&z=?`0=h%h+JRDL$*2( zzfvBu_GOsk7QtMl80NU}Tz?VfxbUkkgLyB&q!I{+Uo-qD05`)g5#m`@z#Y*e8u~S& zPh**@8fl@^a$t`({cc6S!}yC$%+Q<^O&+DghR-vhPRd&`Iz8w|81qqhX3jH75DnuW zO24B#qrSMg66CLf{J{@ElJ+(HUQfSQ)A5vQWI$Gi!I?Xm=T`oW&*RaKXm+Hv5yG!4}wk@ zImTeZ3vahjVEThzz9BJb+!eRp4g8V6gP;?{|f^tH|4D9fV z0(gDEd*&V#8XAGD)X>F({Tl4!Kuoy8Tq&5RXn3mN0}b@>2d5{vLL@v{K7*c+>v`1g?oerQC$7OZ{QIF zFZY0N#skuU7azd82+9h8*PkFE+=WPTG_g=sq1s!RS?Zwa2OYMxGBdG*DU?T zI)PCNnY`#U7CPnzR6R=zFr8tP1m4`h#t6kEV4O3a&N53A3)V0rGfQ0^Gc!v|Q+q3_ zp}mD3oi{6<;G+v~l~5gY7&2in7RLeXfkY0_Ga&(bCh~=zu^6^a=14Zy9O0<}DN_s> z!z|(b6?k996OCtE<$m5`1orHc2?Zi zh-gvy5b?bHgWO#G0TtvI5lrU=FWX==G!H5x859rU83;P9XDAITe-!Q>9_mlU&^54RR0QmqjXj2=R|xEx$%@2;afw;Rjv!d?1ySkiHDpg`>%$mx z6k^^Y8|4$Isv`R*GDe$5cDZ5aB0)M>T3CFvx`aM0CID4CL<(aO`YCuI|1%n!R>4mZ zewclPrmA8=i^hgl0yacGR0!9@T!?l-LH^z}|6o-W+d$XgFz+CY))d|uGcZ$CQP9Wz z1gn549Op#!@Q&70Q-K@AkHlwlBwu*O!w3xOSHN`$&fhSY<3lh>-x$_>bQ>&!*{|xC z!^bs#AYfl3qV*K99wg>qxCUTuxEI15&DnF{4mZY?iQvslTPqKQ zqyrAEGYKA)+w^rXgdtfHA)E+HgfLz@w~27~VB^m&H;PZlO^=4zDv9+jkr$M|I2Jh& zEfPE&a8|Ea$8Yad9^Qnd0oEjRTcf@)#T?(kz&b8tv@mPO>y5q-nBr*i#x#F_=7}y}+ z8PiP0#KC$GrH$4f#`NU}dSF?GK^-3EF2-P%Wf%jdFT*gHb=d{+S-X4`{--6^urQQa zpoJkC-UG(GY^Xh9?k-#87&q3jF+lHm8p5f8EO;ve0~;(?bR6LtLo~$l3{*mRO;Fqs z%QKRmrMZe+HlIHsKfwT)hW1dQ}Y&>$bFlqw4m3WN*UYS0f|s9mPqg?85g zbNDVEa^VlS_rdQI*dx1PJ`B&=-(U_8znmVxf94^l1C0y(f&te9cf=or*&^_Z8aI`-wAb=JK6E1mrW01%DLM@6kW~vTDrd*=W z#B9^jN-EK)Uq}5XLclxLUZFuSA@p>04-X2(Xc#znZBOkE2|BsVU5f# z17Wcb(Oafaet!CE{yg)5yx&_}X;W6Izg|#fP;sF~h+1HMxcctOZnXs zkVR%+og3 zY^fJ>IuIp)q#$hjgQIRwQgbi*a0ymP*iILS=1)P4mXk$0gpZd^JqcRRb)rSik3_m>VQ*Cig+xtZA#v08c4dKLYRt<9Vip7VJ6gdgOvm)*)ux5C!RD(zaWGqG)yXyeAsgvGLzQoR>K zDvtW@9}FGr@)=dMd$7DEX$P18whO;}9qL35XurLyS)BA$k(wZx>)XAVH|m}Ho9D0G zvmSJZ{z8blPw^Mjmo|`f@=tR`zZlxolZ>5z29n|`s80@nVe~`I- zyjn-%=gPPctMfO%7uUIjzpy*7OQ1pW<4m4OMsHGYPqnFc%PZZYc4dXEY<=&tQCZ?- zpU5jueV?4*N_VcbNfvaAJGb_R&7rHLr~_fAel8oE$2EQDtDfVR$QH}i9e+FY?moY7 za(Kbktj%jGoBXX#|4v&q=IepC`{XUVRkTlMOqwFuzD%I8R-pUo&nOKaYRLFN*@vR8 z6ACh~DCrd+<<{YP8sYvW;u^WlPH^v$YcpEMR0wi4G&#ua-Td9Lv|7f+DkNrUZPEAS z3$5$#)J~K3;GOthzs2jhwAj&NufyNBo7?P-QhTO#>S&eqzJNuag;R~^d)e5?r6|7`gO((v9Fo%T)%O1Tfz%ZhvDO(LV-Hf|_6e^KnBBWDKS)4r{PSy~O8Mtq4PO8F+2APtdGde%v^C2~oRw|Im^ep$g&ylaPIP@39AiS^~%b=SqTdT4Y#S@$sVTB_TL()>BCYokmjcDBEF z?|t>fG4_^n|6VSdAW28$?TTY!m$zQ+lbew47PK|KDr`adIU~QZQ~k9n?Tg2pUe;wf zwA8RN%IZoZS^DspDOxeTe0G%X8ENP8%#16#Ts*C!6vmi~gzcYKwDi%hZytk%{71$_ z6iKcU~?A?+cMB&?loGx-c7DJwC4|=Jp8Z0yqlX(GOh+ zM}7c4d$^+?x)81x==k7{e(1vJ9*(3VKjMIUJn|iHa>GbE1HJ#^e4XaLisnwNP;t4? zT4OK#tDnV7&e;aztTZoK8-9iGvy$Z{yU6j9gW+d2hnHNvgO{9+?(n0`1v>bp&jVU{ zh^H`ooG(-YSRLrJU|x^`eBfTc2zV`ppZ0KC7k%IZKU^Z_f5zB{$qfg$1Ozj-5)pD& zL%e4ADH%XI@Ut@f&&geA1Tq`ra$CVY2Yx;9W0#w8myerzF5A4A1 zjBtL~)D68n5~f1Tpm8%PDcCg(jJ&uZm_Y?`FxxJOj$S_i5MW>lb&&>hc(6TVuq%aO z&!$+Ipl`hqXF#E|omep}{!IEp7_H}s^=vpCk{uKPCqq%(T*G{rd*^{2+AoYPbO~Bm z=7+luqh|U*@vPzcBk18J2<(g;223vx0wz4SD31h=&?N(gMQ14N|3@#&fXSapN5_Ny zu;O6l0lV8Hkg9MTTDF2&9NsIUzxRS%yd?0MQs68emeRpY&zPke%Zth%!r*`$3MvqW z`oZpv@`Y`}$2Z8++$p#^V6}}7y~6DCgmE0w_V5XFhtl#1bj7O?b|@CYtN8p;CifuF zEyM_?g<)UAgKZteQCB3l2v1M66CW(`^tV93?+k8oIF1W_IFCV!z57En272SbaJ0}+ zWWd1e7Y2IBM~t?WGGM}o%8H}Arx`Sajf3F9vK5sn570j)u76y*M2g4)TIO0{**zrCpLBsNgeD;uEyp^F0 z!$rrLvM!40I2O+y${#h#LdTFL*H|CPz@waE`el)r71p=6!otDnVTU;o!h_)8GDep* zJZu@flZW0GgO4sk889j#oE{d8WJY`$d{7yn#tPbIC;dA*6|BD)MvIrjKl9^A!^R6M zYZZ8dibZCCROr12BTc-DG4q928x|PeN+c==YyN%0s6l~LqWfaf1Ku^9sa{4p(7}Pb zhDnF&+~4Y&SwH`*mp{_5>BYkhH4CO3?m@w*GBV_J$M+#KU~nI?(nISRrVyZmt^uo6 zxakMmls~e7=sXZD3^n*GC-k@&%o2{32tABpuS8=Q9fwIwJfqhQi9Kt8GqSM+4<2%o zF^6Ȳ_xrNMGL8y%{?j-3t@kLaA%=(1^N;gDWyu(*srW$6ng$AI8Jr0UhI}X-ADWrzBb)~f-r}MS z$8pLxq9yRG`Nr@;xJ8gn9wioqGvr{_Ej(ZN3lgluAyXDC4A+UF6%0w{R%QlNRA8tR zwlT1^1(UO$rKJtLj{qihTPP_jq%-Inp=Y9>xrh}!=S~UHBDt8n@oo&IpkrtV?%BmG zCXJrGje`NbaE7OWO_A^tLbLc0Wrv4zs3Jt((DZ=H&V`-^7KTl6&@rD(-Yj@xK7iF1 zgbzl;JYK4Q(mbPn4X4Ma5Ug@xy#7J9U~F20))CN7IG6J9v>5ap(n4YXm=;V&{ww)X zA?P`!1!3%I(d)XoB}^wcl{~#nurp5C!mvGgI-yTK~D@z+`69{$oeLk@gQo&WRSEvCw5_rpau$M823|>?+3d z%^uF7VPWN{VopT`X=Dj|9pH62Y;I?65AUs6nIQ)y&=@So#xhJtXvY)6VQ;@$nKB)l zDp*Cp==9v%*r=?C^ze9wCI)8u@HPWG9_x947G~@)hlfn* zQ=x(5@mX-tct+w>z(a!gvCt`Ns?c#P^K;g@3&_uyrQ>)yJsTF^6broB@F+br9kO$> zGEl)3iN{B{VQyeL9qW!HOptmN@R zw31iVK!s!_j~5`^u|l(gqxexlnaa;!fC}4GUQJ08yQ^rZ;&)a2uB?vkx^y~SI-RaO zP6v04PFEhMvoX}8%vV>{#Em@^blwHnS>`LNAgcs!e1Sa$xV?!pEy(-#v?@w}O$+(| zds>yhmjU$n*L;=LImrv^B?$_cSlQCt6-`VH6fIr-{9$JXHj|`CsS!$4)|iha1lzpO zvFDf;6$Aw=Fe8gkI649yJF5VyovjW8SfeeNXlo}5fUQNeK+HOX#hZcBMAx6wRb`|* z|9?1LM>{iHEO%g{!RrUqNe((>(1Aq?r{k3f zRbW=#bD~pK*Z4cS`I>)6r-Uo!-_liCfLFqQrGu9FH~COe`n!C<_dNcJpYj5{@%@{8 z(20!XhsGsETLV3#;bj6H*I&~@=l0jM(6NoA9htleCskthE=*R%k+lta%8`tr4UXik ztjUS;4|?FJGY&jCsrDb`<;a+`yquZ`mM;!!Q07F;L0)A}I>6c{hswaIcjwTKi9!S0 z3EE?h4@4a3ICkoo{{JKZ#~8T%lY_W0IAc{|m>hp7UycLfNPThAz#r4+*x_>E$+2G^ zNyjlbFa~cFW@Z?0ssjaBsUDYsEa-!onCj3c8j>J&+kxzCa+|fIH$Y-cza5kt$ zSJ9)(agW@iB+AE@8G9cSXUfs<=;(A#7l9w}n87RlK0C2(TweRB&{;|*gQZQKR}3$m z6Wew|xKJtmdt4QzL+@}3sdq^5_qrkS1U~V(dxmOWM7xv6clph#dmPpubyzaScsy$& zSxtTF6a8+VyYNsBo68e&qdk2{?urmKqpZib23{HzA3AdBRGRPZEjL)>qh}x^E-tn( zLUx26yud5CaV$^Ksc$+e4p#bwB~PoKmC26L)RVFwx=NZF&p#m5qi`G9Uwi{A50<5o>pqR_paAuO_dG#IWIiQ z*bDzp>HHc0-{vqtvfi`glI!+q`=;;QHzVibM(t0zFG5#l6;1kDdSUa9?Vkl&9KMXZp79AX=3Yh%e<0y=u`||dZs{EU#b3S@ZdltM ze7E^{}6It_wm-B-&7QR{o<;VPLgvR-Ff#Zu*64?gnVph z27X}XgvD1iSMb*6=`KEd_qLHsUW1#o-(w%qwX>s=NHFTfmpYC<(j3syT5C9ilBah(6=PLeY{(E z!KJ5kY;|>EM9lWxi7tIAQ`aW2FuSH%qD%P&Ydb!?YZqL7 zHc;EH)^<#ep&?eYn6S$|GRQ zUAr(bD|2r1p*#CpMcFtE4GsN$zFZSdd8;`3Umkocl+`mUd+Dd;mrQfGx5j=j+qzzH zo<@Pd^G&kB)|A^bE;}ETneDsi<(IFHjyWHHZz@%4TgfH;uJNPrElNPn0N3-vB$Y$O z_DzAkE>dfUw!AB2l?vp!pZCE@FREc;wZ@F{sY>^#khs$!$Eld_ALEL=MQ5Bpr%RAA*Y>3^)8j zIMxfWsGDb8EMWsHZq9#}ueGbKsH4I@GBdfHCNaA3u5ID>h4&UMk$vc5>NokpmzH_D zMt$Y2@7<4Te~IE=n9q5N!Y)=tz%i-xPzi|@2NWaDLdc0 zb5YxSL6!A4lom>uNVB~4=b6082RD4ZRC{&6UD_Ij5&0B`XH3vb+&t+QuhWaSykmSIo|?OB+$BUGEeVXQagEd|Bo)Jmb@$h&?y0)U#&SM&erL@IW_Np20 z*Hpp$@2iA+=2g#|`UUjz39 zW~jdwEO=J>)G6*TFQwj;NEdCg!}2RE#7K2)wU&NZy?PAji~aLLtnk2xh?pznnBK+D zW@Rm!_sRK@==2{pTQ={PA1mh)cWmCux115#J7@jdp;*>U#z)?X@lbsblabd=>x)9FBlX~V-pud^sg5mX`z|MytlE3cOK<+3*1elI@yXuS$W0EDCfhFj z+NWy3sL+I<3Gl!PIY640Q8{2&5xa$Uy6;d@L&KRHw4Vl~WqXUgw|@(hGxYG;?0s#^ zC6PM=>qt_^{hzzh^0RQYWBXZ|!nLCkOM2BLjy*W{vDts^enrKAYzMi#4La`i zlPZ(dwAbaQJa<++z>@Bu%$I@5<9rN#!<&9@LwZD)1pKf^7DCoX5b`~?2?wM8um0mD z9X430YTlFeT4_M;u+LGi_IJS%C&$IpgfEsHT}6uLKh%{_rlz~D_ScgiZ^eI97gjjE zsWol14{$xkqFW^5%MTAbT{qPBoD7LPbnXXU50Eqz6bL_7nc1Ep3j^r&)Bn!J7gOmO z-~aORY5N?vJ@+<^;TyGopi%yw+;gWdNh?MBCTALJy@--Ia-FvN=&u3c@%$%#PrhJ$ ze50Lswo!fBFLFaEyG&(gU$zz)=Payx=)ARFT}Ou~k8vR7i1PT|_K&jDUne7IhHH*A ziVkyiezc$RY(YCtMx;lyqmc?6NK7L*{_CAh0-T;r4jf5H0}xl;?bPNsO^(Z|RGH;T ztlQc2_5a&7dIsbY*-22jVSDV`q)suqO^3m%v^ypz5uR~@0+dpu#~yFHHRzH3VL9ao z=|knaM{i{K^u@L`x8IT?9SCy`n%{eBBHz>bZdb;Uj>##>#w`D|;eoRABe7&cr_b+p zrfR+qB9TU#?JT^LQh^-=iA>R?P)*RxqtSWhAQ=D zCoxN|W3j$#WNMwiDb|&W8fB1*&fKVE0wt=Xc{ z{f~4=NoD=hUuUXbAD1mAqUXLoi*IXS{E@As>0vb@rc*8YTdc6b8@P^AmfEAW+oKpe zEn%cQm>3O&DpnwQ-j0xm`~8W{;!kS_s&uG)S0~fL&hwPY_!{1Da6BDm_BM?xZN^S+ zhnLU3^jj&Pp~*|_nOfv|VzhBjKyr-sG4+6hGOOD=W{o4{;qtM|Rpr@#lHPbw`JfB6 zGo&B3v{4Z0Huj(GA5qf7&|ISiMXGJrl#f51&-Zj!lSP2@s@bxk2UVTIP#p32a@ID&uzXdl+|~v8`lqF`H%AOT}+vm-+jVzkKND)xr&rGh7Y6X zyx|jZm9KkwLGaXWzZbJ>cl^-mUtaK>+b3gh#woqcQJWpSHajFl$3{mUw>P}08$02slo|9xM0*m4WKemLm!7@FsMApiH_q+oRvOlxn6f2uktT0U>xj+Fu=Z&Q z`LRZOQ{Zz=`;DUk}J#Ou3UZpOxY-9B3ExxIdxp$vhXwh zuY;O;t6XE;Y(t+_-)JF8zs>rRzF@-LuOAO;O?i+|SVWoX`{UkJ-eL9P*4JfGY5H1s zcM6x8;DU^hzvKc@`K=e!91f~~F?0MM<>zw$y25(F)q6{hcO`p?j~R1)Nu5td)TrS7 zq}!JdZkBC$VzwZD&iReLD@EUSmwcDd6Fp0MesQh10=HKU_t%3{;@8zqJZ?Q-@T_Zm z8rQwust$bDcuvo5Yx?!Pmh0Qze%YC3P51p-<>y*)%3&(WPULRGr>w_J`Oy=yL!ct! zBrBunSb3pH|CNi2D^#UyqgH&_l+UxjDE3a=<9<~9s^2$3vjc(MXIy2t8g18heh@GD zG0uL4*LB$wb^AZ3cIPBu|g{CV$m=30noEE-#<4P<0`t{hn^p;CSlV zwDdEipSNG%IlW%w@(j(-mm{d%v~tbqTh#mdI>JJJ+i&3_`SKqX=bk@0`u#?^%Bs{c z-F;qpwdx^3@mzgm8#bkiw1>ATruxj}mXP7T-~5#5&xrC#guLOGHu1o`v$0|Z{KXU3 z?3{}yHl1AG9wv}-e3R^n^ABXMn_a!TW)96>TxtHxNM(MW&kAiMwrKPnQzatHl4&@$8 zGG6grW{L8`nA~r?{hHF-N?xV6?6TY%T==?Ep-Z~dKK^ue;+vMtzPie~6&|826m;Ui>~CE z6W4vF2z&LBC}*@c2$eIZHV5dDS0V%T->Jn6CV%n3MRMt(($Y+>oY6YBd0fbb8N$B> zHofJmF_S%gzqJ2*+|}zYVh4-!^W8qpR5({;uYJFL)B;1Uw?4dM;w*Gemr0zi;+dVT z<`S*AWBXCrRuyYn`$zKI7gT@U_8T^n^0RYem%DcwKWmorqZ@3Q12W@jkh=bS!$*p? z@OAsO&X3-<)vh#MwZ61jl6s%0M@WxIhuT@iM;-g09EzE-SisD*&Ro}R#+d(*Zn;P^ zj$N(!bf{yM>Ar}CYmEF7p6Duk{`$(x$n|H|lhd*_Cl6`fMJ9e@T|6S(T=b_kE&CiLVO}_WaHZP&4DOfGE0R;kCt5pjpFQOgV_|nW zW^W$J_1yhae(%4|t;$*WV!nkGh(zcRNNO*XGhx%FnZ&H9{an?t!xUM413RxPkx_OWSU?H*%!stS)%jg$C>?_70e6PJ9x zb>wgAtcaLZ%jbRW?}~PuXxx#Yqj6E`nd$o{ni`Tjnl7vwj7oElBXbe$1C<}*IVWfN z4=rKUQ^tPd;1u;6S_vXj*!ji(eSQCrl_}S#Ug7weGrsI;njJE^-(rnvicJY~H3>Ry#Ifa42E6eP}E< zH%UUR)M2*2Xmx|oqNfppyB<8;Lp>pQtan^ZEX!rwH=4? zlZ%f}+OSy9M(ya#=IFf=|_8lLkN_+;)e zBrlFpIdpe%c*;1{%OAM!aCJ(}nCj$t=A*>YO+P*^H$K}_QhNw>4EV*>I<98jv|Hw9 z3$EY@b~$a6%y@JF8-o}QPLq;bFh4ZcI(=C3_B+^Cb@qLDso zs#Nmp2ZwGj3*h&6^Oi|d8cWj1d7S06y7T$@s*{Wr)@NV!Bc&YWG}aF?w=lN7fsS-$7IRR~ip?7~4tD9o65rCeG1(Ow;|;nXNWP5&c`6 zD(>)Jn(s7rlJn$`#vMz)hHTlq_}f0-dZwI%Q$9@`H(qdPuZRFsPV_Vxet}?p8qu#~ zLh_N`wKmS)GkTTw+5?)U^?TRs4K_W|etQgQ^$R1xN{@+6+pnmem21EJbf8nPdFTsi zo9NYKugr_2{+=xtPJD3rI(uvLGRI6(&{5lL`7^JclogAvb-ke8@_g<&Ux#@p(Vezo z8J$PJPjt+BGFMRi-snM@GferA-3i&3QGa70Qfnv6C~td3*?n6#Bm#cqHHu5l({_!Q zmyNrx_cxkdi;T9cpU1%;Hf~-D2HlR+Nzp-Gh5S=@?>X|^&h1;1;Ngv(>P0X5a#cq6 zU;mQz^!$`;^&Jbo)GTYs7m8fjrlwld@2omorA;{3pmvtnN8$cNv0vIOiSpzMr(a9= zs@Zk<5@X&?$c>G2A>E4Ivl#WXvibR{Nr^1+nUABmw8?T&=220%N<0HZJU{ADLS!vB z4{^1Lji&HylPj;_zBns8OKfi3)(07+Yi`$lxikdMm)xBycX!36oxW$*|CWnBnDplM z+bZ&8J-uYNfQerldnUU)pP{v6+Sk}ly|tdH6lP*1E32)ghiG!Mn*EX(<1-;QI$OTk z)>{7N210Htud~qs(-T?ZGapBB`E&6ZISA~SIg{+LV_MYH_^7<7wzjr}J0XKp`ep8K zh}qoTz3qb2clX`T$EloII_blL)n;!joAmTIH*GR(o1DyLCD0nEaZ=`$-3ragu6rF< zXF6r62l_rTYtD;%I$_P|%1QRj%XRD+aqkIL7v)lyV16cIUNIE}G9DaRkC|%oQYZHfa zU_w~Fbd|WG9P_+>zLUyy*dOjL-C!$Hz~?FB5mVw|*Gjco@R6po_kK^^y7O0-Dc)CD z+81TBvDhF~k^5s^iK$$Fy+u07r{<+m&PKJt$cL9mB~QDRzXcznj5W*Ub?{O(Gbs34 zoU`!Efv3*%LQd{-b69I<`{QTe%=j8r)>;PjZBdZiM(J$jw*#*y8P2kiXU!KnJnkT0 z5Tm?WBoDoc>Zj=ZbH2EwHidiodPN3!M*fIyjlAfSHQCd%b(3enCeNF`hkSR7N0lA& z)w9kzJzzaL{_&=7;x{^rbxPmqjBk?A4*uR=Z!VW@v3bX$x3*(`w{vH#)jenUShH$s zlSTGUg%!dDfzBelmq_OKRtY~HbUNa||5al_jp(y6F}<#1?+&|8n@o84{B`=0{**1L z!e&E6`;me?jpj5CFiVF%M2sQr$l1}ekXp9v{N3Jci&rzp70QLk>sCh0ou@5eURGC} z{EI>g@#?-k_x#&?ajE%3YAtiJ?Sr|W-qH#xAT7=Mes{yV_u4;5uKZ<}=Y1;wv57a8 z*S~V?pqqS@RPN^HRKBw!-9qFCA+NTP$hUkPMK?-z`{jM#q~NOi>!D7m(vb7O>CW0h z=TW59O$R_~F4E6$B6iJh4;t@$9jKfgS|cjT{nH?SO;)PtnlwqbJu~nO5c!k^P=P}~ z!OSMh6F(p6w~&vr$zieY)~zpF6Db=P#8Xq`r&^EE7bS&XkxPtLU%|b%rZtIF(U|ex z{+M9;cD=%BG24&5I3ArQnHys<@GZo%^oq8oi=_R!Fzrf`_!_BYfos}i0h$h`V4x5C3RTu^2rspU{*Nubc-5bOB++EcCM_V-LAtEAY(?$_}p zJ15GFu{-o~>dxwgsE>K<;5g^h=|twkDEU=8UQJ$_R_yx1J4;kwj~6*W;Ueme!i@=L$1ypEhrtZ5M1jK{9*K*BFUsJbN{bzgnJM(`#`;iuN+vd(iRSS@}2Pl~!nn z@KkUW$obVy`I20InDycIuQb1nHyk$4qvUn$wQLJH7~Y#6u?^IVE~4Hj!gKIHw-1aS z{i86R_(;tUKS>MNjQ;lKXn)ttL(`=LV{+bHu+I?MCX~GLxl#0u$R~<|CDz$>bEc&G zz7--3OqkrDBA9M4FH&%MSDjMLtI_)xsTpW2IAZa5Y_ZAYmaF6CH$3p@)$jXZl+5Ex zB5!;XVVm^w?%ON&u|LUId#bOlb1=M7v`o{i{O6V{ely$JHn+=G&IlUS@=L^*N?Nnz zT*b>Wx5v-U^X|8C%oqq;H_wST+fB=0NJH=5hrYN68&|wIAvuT7s&w27DJW?!Qo6PL z$%4?r^(N0#S2x@$v{k6JzQ_IM!MKI7H)1L_wF{ipKK@y`{rU7fm7bETC3^)vIn&KY~A;`XcWl){dz(e-;0 z{DVH$x!QTZCY!(6TbD+DegXVKYqw0&b2{~FYJ%OyLbHzKbqikIZhDb9$7|n;9sAt^ zEUZqv3Y$uf&2rP2Ui^%&N=9tLxa!r5yiOiyaede;ATx8YHhAj0Z{v)XhghU;y8Pw% z^6srO+HQ2W)6}Q?&(5m8YE;cu*u@TVdB(&X9dk6}{o|{_(W57mdQF#o?!4+Q z%pbj~9%XDp>oHH9~I?|*F?SU7{yN6 zeodp_NXIif!(H@+`wV6pPCFW`W@{gG8Nl`vBf~bJGfzUc#Knob_GC@nFiS6LhRyBfGfaLX z3TQdumf^c&vUcRT=9X;DYURP?jaO=$wcp>| zC)aHVzc{(OM_z_X@L1~aEw7F5ofuRleY-lxBR>D)(M`66syF-#d(s6JR~g$bpgx&+ zF+JJ0VrA(Ts9~$$tg^4yWG1pZ=SyI_g>ee*#hzN z9K5d1)JmUIT&sV8w4vmEQB&MquG=j9Im$=u6M1??Enh~@GkK1fl61s_r<)27@i}I^ z*!(TNrh3TxSnIr#_xz{L&g4FR#deIfh1i^Dg*9t$jZJ(a=T1ub zyj?P5{zK2kqEHQg?J+{>v(Lqq(}e1^%kv$6gjRVIWE5G^+iXevK)EN|B#La%=#_b@)g^E6

hc1b=II&8*YblKx`s!Pf?-*a#E?@147?A5hM7@QcXaL1%?XKM8= zm)RE{Cvu0kf19|(Ve7-COU>hiOeJ+{?g~xwt)NaZY&08|-XG+qK-)p>_vA0f#>1aZ zmM`%XOh2%GTWH|I?^2ItC~_1LV~Od3woz+W2t*9bQ*!+DJwiz*cBt)FqWu+_m#h5S zmznB+RVseY`h59mT-BZpqO({1Xu0Qi_odj-R=$f{9-h5)C*JYSJX2%EfuxdxOHHyZ zZ!4s(YU$fn?7OGpW*6T#|JsY|zccy_r%ZH}xP3LsKt#T4yWJ`YyIYDpJ{fHCg>2P~ zJyPs?{71T^@VX3RhdiPj{x&~s{Mhpw?m5r(y3#X?ql2D#VT;E^mQ?NPxL%-WBJKM= ziEFTZF3*t<9gD8qZz~C#DRN$m=4w)KSoeBtLHXR6!#f-lM0k7Uv;5boY2FA(STnQ5 zP+uqBr~G1*X1y#);?#$)E2VE&vZepW{K(PE=aI7!MZMgzq-9aG^Fyv?T7TO8WtpiDL2qC;oRpU1=%HU$2g>w751&a+tCoPbYW?3-h7d79WgIF#f1wu4xQ}X z`8DF?+GODiHvH>%ANXCa`{;~#vbJ|>P|H#swLNwh_T5!}S(jpI1a=|ts%{QaRPyAhPZ_qid=9KoX zSqV|H&U|`9UE@R6eLQ(9Ix7FP@2y8R1`m7`wzqJ|$FYlP6OPCmE8O~&yu3Ymhy6SpH^n$C8l}wc;7b|$~~@?RB~mhUy9L@ zw)oGMZyOV82gg>BKYWmBR#SgsnBTqW{2QZ&0?E`$i3m#n)uXG7s%Dr+K9F?rU8v@JqNxUYMdX zs-1^MBkIflt-k({-k1D#k|y+>@Y$ z=gTZiNnF(xJb#7ig^*8TO__!AmyV47QcxE<|Hqu9{fVb0bUd-0JS%dr&T!7Dq3c89 zQ+NAP?Vi==E9#{1-<3Ya>*MxlwDsYM1rH-uJW>x&*k!abc6#l?lrI-^`R@)I?&e=^ ze)aqgnTV>D2ba&5`-A-dsxNJN{mOrJptQ05`j({)t!Gtl5AfYl+E!F_`=Rg?_w3qW zRsN8*=KD$eZ+h#VtvfuY^+;l?T+)!D{JNVPw|mTMV*jaE9Myv1eV<~J%K2B)RW zZtTAEYTM#|QSu2jo!XC??&b1bt5=+m);cVx@cH(ZeKo}i<0t3M{c`J4+m+MiQ3Jbc z|0}dF`ImTQYFm{!m%V=_Cs5&@DEdPx>Fm3TX9~|fR?JXQ$TsucwXy3^aPf1|D;E~J zed?_j*gmvydi0z6hHX|4yw~iyw3ZqdU}dE3>+HQ{{!D@LOMNrfHfgMOa98Q9{#bSL ze)P=WUj%-TW*u8IC5LolWyWge)d7_T*VVTcB7-~B*$qz zQ*uva5K)X|j>TxkpL-t6#h--n4gJ_DPZtQGfrZ%Hv<;`M2`y ziMw3huRrZ)NuXHzJMRr2-_H0kcFY}c{8S{gmR#plN?MAZ`5eqQ&5< zwCx32r21wt;ao>CFWn^`!uM89h~6~$(v`B&cdi~EEZewY*76$xO$W|JY=f!q;&o-# zVXGRK9L>s)%6qa~%j3t9FVr_dql>5J%k2G`KL5o^ThqsTz7>qit=YN2f5YjP%N9!F zC8BE8JyMS!)Z;IKcy zB`E$>CR_?|4-0%5;F@W8xIWOA16(M9!_xq+K(HhZ_jU=9D*^s69f$7%Tm`V$3>-cR z@N0mBXX0=iz|8=&mUjz^&r*Nh0L-edw*a%Y&vyW`wx{<1D{8q? zv(|?X0JGMIb`+nUJ`d1$0o+WNH@#Dc{0U%hDV)C;z*%4{;-7`XA3C6Y0i4bP?*~{+ z8V@gr@N9rfS>OWzFPFi?(;@sIz+_n_dYRArYLSOn~$D?yu5nf4IMOAIS z`T`A29bG+r1MGY+Hd^fbS40a3ilGC|;CN3s0}YA+KTsAwEIF9v#4w0}&MLHixBsh$f z2BMLOIM~rEa2nlmO{%&I6+eT{4Z>aFhvS&%)nT-DF~NvIu!1{$fRq{@6@;F#Gd~C( z@OdpAJ@}L*oEBuFN40ab1acDb9U%0s7SIRlVyCyG=Wv$ipg<-*2tHF9O6O^1U}2|Y zVQFrngM1%;un*o34o&k@Mx2?~^##J@X85ihfkFQJYBn6QgO<~A(ADGLzXKSm33iQz z|0e*ZgP7ek2jKKHoG;>uE-MW@4h8NAW_^hUrLi0FNaZKzL;E5wgik^E6n^q4Hhdi5 zwS9(vb08XU?D+`>Tq5vA#tvl5M7-?)X9aPI{AAK)Lt!XCC>%Yb3&~I9hnTAocr!!? zvJp000LuzhoI z8Xbr7i7ph6_%5+);`HoB1gut9xznsG(Yf3wveev~Fl-cgz) zz@@X`kdFI+7puG|Gd+ku=#!8a*>>O2aqx&;SRF-iQJJ#fP6IB7B@INEiQ)nsQFRg_ zKSW-!x`o17E>8K0Lur9tF{cF3qIki8D}=NV4#|r0NrJN|m;>(iZFU{hj&E+_{&HkI#Pg zcjwIa{O8P>GiT1*oSD(9`Be;-m!%uxZzs5QP zMNx>+Z|U*OPQIs7&Utfd_`pZ}?LNLU)85nBKiECorQ(fxfOEw$O8Q$pe^ONg+V&~F z1@lSb_i4WS@a@A_`EtomNG95By))B6q)_#J+Z5`R>4to%DKYm)E7 z6*~ChTU0TCAfxHf+L!p0rs)P=klGjWc8k9+Sns;^z8v3h44)Is zWfuAy<#k>*`w5QCE>y#je_hM+S-BNW z4O-JNm&R*g4KLOm;hLNMJUqeSov6Rd*O5~D%Xjg0q%MCRshIbR-?hBdwtr~IUnB}I z9nQ6fYosvD7fDm!7kRK@aq=DQ@UB+9dcO42pV2#9b%v5JddBZ{ZR9ny!QE2#I~-6t zjzjGn&`|MvPvLse*F==islN+frJc&RZeyf!@Vr@EKJrXLQZB1Zoy>YFjfk5+{)yiR zaYzzsi0`1Z>jUJu-u9lJ{wSUJh7KQ3$@lXmmrcFvc#|tRUb$Q!nehk6`6NoN(4o)4 zJ1uxKbZ4L5c^p20t@LZD<5SbEjl5Sl`DTPzzJCob_3U1+?-O`kn-b4xJ)8`E6(HI; z;q@WmlVgcK>asdoge+M+&Z6I%q2a;cxv*`q+945Jhphc|r8%HQ@vA zMSn4(66|{mytA7|*R{VHu_ti~ z;S#}_sckN0x%K(`ZwV3BKFiEAm$0IFW-%XBa8xo2n^wHymYUk0Rj<4+^KeUD%W(T( z$UV`q4fk^_98iB>&(<8KrQfcKbN8k`eMyS%Gj+e3Tq~RK+FLg6;g$7;zT8lM#|A!I zT;v^uO441zc|~bHrt}}$J9E9=d@g9Xql;iOeSF$Vm%A!Ex(R$^iZ2{>bnz<5p3uM1 zca-}F`Rvg^p`)9Qi{cV9e?3dpsfQJR52|}0rw`ckk(rFnwf47eYuKZ3{86s<^*KJ?GfW)Ar;T!4 zw!^$@Cl~g{MegW0jeeUA-e}nHuP( zr>Ad5CyCV4-@k#2RBU}eAMnrzzc^OM&R=E9guK&Qx3ZPb_GDUGmWFFt*YU$En_3rf zjB>ABRM&trvy?AaaGft+v~o@O+|uGEKAU0B;PywD8kX=r_BAc_t<8~d{fgzw*R-_K z*Vg;Daoa8(7Du-xFxAdedVxtzgkyXuj!^t#9r%B+J>ly{9&HN zwIokDT$N*Sm~ol6#!%ZYB(e2vk4DbHA|fLe?I)9|t8eBD*-^SWlSHLA0hX4pLws$a z(5u3Hd0X_&dmVEwU(mKC=# z#da+(nUJ}KFmgHKsqa?@cMf;36kDZmv{YO5mfMH;zV+av-5rJdnVOf8I{ODSOp;kY zJdo)c9v)D}P&#QjT<8gfia4v8;f{f_v?;bfX*+w6D=%iMNOTp5x*neKW;gCtoVMVupfDFemByK7`8VOV`;ahZZ zD{j`EHFwU=&7PfmX?tI8cFnB2i^n#k4OWL=h1}ECKGgO9vwhfLb@M99 z14B9g-A|ijQ)rXOpJvKncY$x5Q7J|yBm2i&=W?a~ef@k*sfW5VF(~yf^Tevuf3Psn z)80|sy4=6JkDNN31b)f(Id$3OBfZe8vlcDkmI`Y*O2eK@`m3bTdJt= z-+~3n^`j2R>RwWeC7JY*{!O_)`oet0F=`evTAPb6mBn>0o0(IobKhNeZQi{3PPG-( z6YL-CyvyIAylZ{?#yh))dsR{0Il`YJFi2l!GrE&*g4XLP1RMFzi`+UE)h}{4uUx() z7rt>xglOr}u3O*Dh2uU`)HGF_3frjdMDFCvpfpoMD=R;^u2bQ}eo^~%NF`J7$}7$3 zTxli8*T2-FRfK5UEUJ5CjiRz<;Uj$13l>(?#-IhD!Z@r`xP)}0!lVTlj-@nR71K3* z`7tV&6qo34%7SQllb4gd9JipgOO25^vzPNh3E9N!i@OJh1eyo?J7{z!2Fbb&8Vl_M zb7n84O&*0%T#pQ*^|W8a>wEf#3a$P9Jza$!0%+-L9~kQD4^dDw7Az?Y^Sz5r1Bqg0ddd+cVPFgft>jGfGm011>pC`W>K=@39#+hvzgY{Gvd_LuZ}^S(sQs4w zZChMo_b~Ao%xuUE5$|@?&AR&8%L~JG1KkV5S5eg;Qy4HMA?K&NV~9iyY*A}nb5k*; z>KYy@S(nWdAJE^Y9*CCTe?UbnS7|%n0`B9Zm^A%|yZGYo=Juf^C+ApKaZF>ZdYISo z(|4hT)TcZjeP`9*{cUITp`_DwY1msS703>o_`IyHM;Q>O)JR77UhR77=)kGEbdg2h zbnRD@B@^5|g}%<=u9E&9<*`2MDQmhzj5KpSZ`{N{AgQJP2$xud``78~pYg7PUobcC z;;K=5sgL%C(nTS~9hcUYX#8YFeM@uXqQA6!2|bi(t)XQ_aOj$j{hJ@GZ{Z#FVccca z-8J(bniILj@3oQIEi$0I2usF`gMIzVN19tBFZE#-+dLD-{DKAd;0QD3jLrmS^P**8 zxnki_eO5oaG~>~qB&2KivB)DV$|P{8*fpM zU1KLv`PDUmGuE+D?srnK!)=|ZJgObgl~>$^KQ#RGQgB_+O524qy4k0o~&ab}Codk0M@1}{1^ zK9X!fpJJ#zy_!*eNO@%nq`Wc>-F#cP zP~FI}_j2_myBaKuhri*R_!slrARkK7SkQ*P{>>qg0%-oin5vT~_r)>X&lpp+_Di@A zkEuF@&T08&{Ev>Q8u-eX)V-#`!PQ)_swwp~LY(R+=VkYM z>$#(l%1I2O3^5M5M!9RvP)9WGflV_XrB0hM2&|G)e7ThtPG{lfZcl{M9T<4s)leD!2R zd+`zNXV;Ew4==aRcU8xCs;ap?m0^8oI3Jw2TexU@3eD|9Ly1*GqoT}**08P~;;V)F zQZCo*^V{-Wncvx#L;l@uXaDZu&Ps<`5?79Pq(d6nru0xowkbV?=dme?`p7mVQO*ps z6bE{nTbdWuH!*Lefx2t3y}NIK_G&YyWO!ET`e1sUxR>~|Ug|%)rqq9SO^H9pRpQTj zssHTK@cHyli9fluWP8?2{qHH=Ki^=(Ki?J2GKwlc%CI4>h!yPx4fs(1bJeVH*>xp8*fBS{zI*d`vzl31KR3FrmoOlA>)V=Jq;K%i zQOq#|E7vyE-pLi(-nTWz&1rO*GUjX?+v~Vw&;AH1-hK6e8f{6~9la_4`ub%YXYAKm;Pz(T$*o_R6EcrargO-ZYVI=`DP!m@&HnJWCedQ*L!o4SX( z3Q@?+LmBKJ?(gXDQTKF^yGw+hDfD%xT3KrNP4k5I`)K^rx(FSR0SiU^mq0VfXHG5WU#Ru22HG_~_S_^}{?6N0y_9DM6HkDm^(}Aw7L&U5nj`|9ksBS7TPCYantuO3n2tKU0 z_r$TGPS`}ZlfjXCnpsTSp=GKxE}rXVBGcYSYUN6zqx{LJ^+4=f;;FvHqjPd}-^pAI zW!JA#NG(nyXbB&185)OA|VjRu)!H&x?9oC(*W>wFdo7>DJrChRuJL5e(Uzpma zTHBQGMS-V+d7iM@VJhTQTt^C*J%uPo;m(;mV&pnGSfxp_|H!UnN3xkWHx<_G+F5h& zt*)I{j7*fIN_74luh=TYA{EyfrNO#|-C=y<5?U-ahe9_K`N?yr;@cl`FZ1#^hYbc~Gd-E>r>m$NPzF#lfjC zLpj{Maxv|i_0=i|2Yt{48QH}#%+ZO4$)?)%j@-5Lsyo!W2w}#ywyT|27O#18!}cuF zafm7{Z=)#UjK&8;penEx&2Zf6$}eHJak{6&2}ay;QnX}V?l(eR7R=IV6wY^9{q;MB z6~#PNj*JvmFzN^+eo=)SxoK4r-_2d!gFWhd;%3Z_8$82ZYdmgIvd)*_Rrf!PKi+gy zncGlYrz2XjPG_KWT_2KCXdIZloH&aGMdn(DC55jXZ;2cjOm)#rtd76y1ht;PzREPEoFImq(&QC3A zSF&HulUT`q%k8w^OYGRkC3diKJMUL{r+mL+<@+tM^L|V1qWzZIMf)wW^M2XICHoaC z-*1VX_giWg?YGn}+HZ-S_Ursxa=gyRCHpP6(|#|pV;`5;!OHEz@kZBE$$lC5Es3A@ z;p;B33&&e-r{gUPFAUy9c1!{&bWn({Xy4FN*h*|>FRxaa8u*-2&T4%9H1&0Luj?Mp zX}F5V2f8~{#&t&!mY~=^0=Z@F0|Q){lyw7PqvE=+>yq#o^GX8R+&)mfd8o6xJKsw( zQqpbaRv#77$b8oG@S2f1?S>J<;er~G-}^kAdT&H~Mhr*fB=m@!gdUM|VQ{vF@4j~y zBddu!JZ309w`N|#aVLCs?VN<;F7i1kn>i_)IYpaU^X3dv-G}|k9q)J6Jt>Ym#gp)7 z&6!o)7I$JZE43|d^8r3~pSYvZ?XcegE{QnIfoN3PoKg6ATe5!9&B(LkJP?gSNA|dj zHnVGsHn@{;X3Z{g+~OUxhx^vejSiq=_CVjdIrr3V#v|}Kch7q?xW#McMjZF-duK=P ze%y2BJxU(vm~A)bJ!~t^xlY_fI&sHg&aUyk*ml;uSxGo@$Kl8wha-0!j@)rLv+lj8 z=)Px8WKTRfk&(UK*vC)5#!tS+PrY*0>7iOCdGS1kCVo`&cx^Qe5QZL{U$xAHdYcAO zHA7Y;A8i-k=w*Cru(Q3d`_*AQE~8s#YQU+yFq-mnDXZYDo$a4sqmBiJN(4o;TQc?&8D_@_`$z8w%XRGaqJ=HG4SkNUq?5OW#po} z;=My{&C5CNqHRlW``|FcBl(_wrk*HGdWRCWG-gfFT&QS#JGUZrc@4$$q$0nPOK&Li zDz%lXx%o{uWK;EU=A|o|mbX?nwXCRaYHh1-%|tYliPpk>JKd-&US%zdS{0{oF7v%% zKDo|weZ#WF;zJDZa&NOQU%kBlQ6}0I*O#?xjJ}=&E46zl^bCr2FAW`r;(A>#7ez;V z-=Zy{qgAqx2FA+=X;q~6+r&e9)kuuVFq-+Vnd!OY2{y$^P5bJWLPta4(UxvavTUla z&+%~PaCpL`Xqwoz_HV!h4{Y_w*Pv$SJl_zt=krPXOXp#*zkiq^rPeNPp=G>!IK zwog4q%60?oTj`1q=Q_E+vAKO~X#ml_LwuT-Jp2fOCt<3%(tg=TJ*i&JKIkZt48`3i ze&JZWzu3N2XK8lSKTnv_B6X)E=H7QIM&637 zLkF;uX@PV)mHA^^GImE-6s?4*4t4Ysra9+@{7TM3*tR-qLxUcETpWGo6I*(|b7CALa(Vum$h%gh9GDmUaeqJtmY%a`6&trjIS=wEx!;2LcNp+^EhstP;R2y*zt{-3>AfP z+tmK*gKb&-1B*9KhZ*fT39o&ixa)WyX3^H(HpNP|4ZBU*#Jfy~6?Pff=!7Rb^w^Nj zYYF$Z2}^I^u~CJ;ni$K5I*Vz}bsSx^A+?hD#4Jfag;|8@IO#x&=Q`SVX_`hXL?#KZ zxv8yB1$`l3j7xJ<0~a`jt7)8Gi!|XljpGJAHcs-LgzVJuLvl~n7 zlDtT?NeIlF=O9XLmZcoh$HZY>AV|4kK&r<(Ox6o97QhdF%H|zk@K;}`FY4u zj`K&%N!FI<$>;I0IG>jsbHw6})B6%jT{m$)PaP9^CS=8EYj2xk@$m$^@_5TG-fes= zF)Po%sq>NK>9X(=9-PidR@x@;+IOyZgx>(IjX&Q5hh(s834+&B_XjFWI0S2Q&B@n~y& zY+QGYp2yc?F})(5UN5?N`9v6TPr~3uOgsXf?4!AEc}Ulkzc(PxQ5zLo)wl6fW-3LV z2crHN3fol6ZxNNd?4vq2;_WmZ6%VG;YLZs2e7oMEPHm>S=mbbBk>(FUhHyHxf;*~d zbBlTyzZvZBqXwmw(l~3O~tm`3!XqYautZCVz+_J`yhhl$)x#jMf z8hSI#UrIHe;Q9WJO={dVZ(7In{P5@}^NjM{y5E#IJV(%9?fZjlyc(OQ&`GVhCPXKzNId4uiMn!qvMErSe&Q!?w;l_ zr-&ALVFlCVqxrzEVlvI}GCbFX={UTLtT;$P4E>~#o-6I9ch5V|QuCw-IPrrc%p2CA1*Y|>E6Kg5IyRZ8C>5{J9~EVfJj^23T4jM zmSK8jG*I#@Ru+dp!hV`)xVP~>x{bQ>h8b{K$NWp*^b2XsLof;>xYONn7?aEfdJ5r+ zXVVqo4wP)m@)c>Iv&;iv$^tgaFK83q&3cdG7)7IlTZ>JdeLVWsRCjj^x5D~5TedPEZwuRYmyxjD5+0-A0m4)m z^*#j=Qx7iWwIrA_9`$a*_UvO*M^7g2a=fvh=d+qLKDH@(By43t&rET?d-5r4%6-jp z`+7#sinkHVx07$wb!5MnY^#YA@UndcdWmf`Ojd3iXll%=IKP%#rZLy8zIdETxA&P9An)-7*o%B`Ar=RJf+J>6Zs zYF@S6zJIm6pWFWNMBrTAqm(Fm8kcgpA0E~dTOLSjZ6D;}Ag(puA0t=k7_GyM#$ZZD zj5)4w|13Rftm{5hDLS_Hj`nIQIbDQ9nfPXRD)d|(FOX4z>3iMsiV-4)xe$4d`Gdo%y&c&GAZ0e8vo=34N>r6o48e~%fDs$vSyw8p}yV$ zE#uNxe$-#87SzPxdF1fUQ{@-E`!vHSBc-WYGT~9sjGpgIuP+OAko;*^boTPA`5S{A ze>C4CYUV`lZfxb>RHvuAbbR?t!-@vAGcqeyE@9rcx63iHT4R($yoV!sW8aYSR!wSE z&l0F>8aJCVi63FN4sK$0Z!|_k`N_Y__ zH!vLD!xVy{lfs$T84dN8{faagF&vbm9uzpTg>)jk62E#z5?@UZsEhaf*pDtpcq}kPv3_CqAlb?`RNsXdiA8hKLo2_S9=#pJfyYe;do}FfGap4m+jQVR&_A%0b{fTw zCc#H>Pw|z00zMqCIDL@8t<6MGr^;arItzuPPgrM^7|Hsh4F1wr-Nb2idMiB2VKP^7 zzgj1*$^Lo<+nZN37o!*NGf#6k4D;g~Gg9~x#!zjz`rN}z!le-C9-xOY9OqxhljkBx zdqXqEaN|y*TBJ!BYC^3HZ-^^0o#$bSIc^E|hcRo15%KW&ZqyNq_ZK=m#e75YQq5z9 zoR%m|uQO(rJOMdN$1C2~pDLNmxJ5L##&P5k4Fw#!)TDffcg!{oudmf(E1|w%TX;Qh zic(z^9)Y1rJ{aoilpifWotsbuC=SUs8@gQ>Mcuqh!raguRsNx4Qasjp`_wfQJzJ6r z8=GiAA!13M^0wianA^vbHJua>Ou&tv;EK7k|HJLw!|qrS4)*aowW-r}c|>UqA1pko zS$zXtgEY}~jIa%btxBmdKbU!iiESw-d2LTEAHDU86J1hX5mu>Rd@)4(+0>Ujv%@fp zuSK?@-W()TMVE>9(b3MyX`>(+E)>%fTkh6HPw}*D?d`4W;f6>QHkSq)=rGh1D27eG z>MQk#>^s`Y!0MNUi!l_~9A7A~S@QTkZ$N3IS|WVSX^NcYt>JDAW|5y)qiq)P8o!qC z=7Gc?6chCYbxT48<*p%RW!mun`ou|u^m59n%=0DlX+87!dn)IsM+g*va4 ziq?zi%?s}+LkF1l%N0kuX+0#B-TfUyp-dM~>a*kuV;{CFw$eI6(HHa3?bR4TxPq(a z%~8C(O_^V9ZOV^0C3YJM?b@SWt`-I0?bAGLY)+Y+Y}+x&t!B9D(OJnQQ;bK%X{?3U z)0gx3601()R%V}Y>h`ct>g=$jUJgsLcUXpjBjORqjj}KD-w@TA;T?YXZ&bzN`08Y+ zJ)Kdz85YkS?ylzDUP_Vv^()ph8lH@mJfBV70LC=roW3K5(-JC;u=n?)_*VT6)!;y}v7PX$t9uP`=iYEeDCh7rP-pSCUWYY!Kj zeoD7#uU4rR8tl=qN9q{qsB!w;R#uG=nw{m_%SM+XMXqc@J9H!)-fs9?!=N_tXxu~k zl0zt0ipL$rMf-_;%l(SI+m(g&(Y4`o5^bx(+2iQJpnQ93KaGX|)?*0cjI<*Z)=0;w zv@8s&Z<{_Z(f%X9;)vs=`|s`T9#)YWorrROwvYPTG^^5n!|{pny@a%1NC34?X#FY9 zO4Jg6;!6>qN}5uCYC<+uokvw!wyo2PwB)(gVmrB*=FBFbDByU)P~;`&lj;BARFA?E|W+l9VcqGxs()Lk-=X#kO-2Cx_jr+4$)&dwUjzx7sx_c~Cv$v|rp8 z4@Xg!1~iOS4ka!1WIH-ws{i8_P1MUs#WV2_t(xGS-ZoAHRiz;}M)Z$Lm*?N!{+DdeiL7Rz ztR&3-Fho$wqOMpe>*y`bZ;aNK^? zJ*%!eV&qSrX~!-a+u#)GB3AesK8RQA>paj*N_4bG!^%n&*~qpo+~=S<7usxof7o1La==u;KPRxh>c9fAcb#t_#P z=*8-hu32?``7nDgJQUEpaFOQE&Z>^8x7dy+gfOE%3OxOE=#Qc1((68n0E z9@}+YV3NyTaI^T&T~sh#7_?W%sB1tViKD#8m0bPifp@rFViO?}jk-E^w9<|vZ&?!b6G ztj6Q^8ckdoUa!SCyWSZNh}KCPkHgbs9&Xo*6S$Ov-e(#@98uj~M~skW(9APa5D~Vy}aKv^%_ORNj}^cIkoBq}}AQa}f{o zc5C``|1e|a(YRAVC`HPGXZ}Q9HDoA$Igs4Lg>||59*vacRJ^i`XFGB|1ujfnZ0pp! z#FoJVPE%w{S-U}<4@PWOv53!kC_u|z#lyXTXzZM8#Bb-xWM0in*m6Acz-R|Ajg00M zynJa>m>)N|iFe9HuZ%3QSh;i&W!>H3UfRm~yTg4ntuv3D_YK`0?zd@O_s+Dg`)0wP zdu+j<(wb|OuS@V`i%N2C$|&x-H?y*dx9&B-Sx;=_m*PBy>kJr0nCB^G#liR)idoeZ zf;=V~KSE01_3ltNXg_Qp*B=>fdner2cvN51GqK?A=;5^vIsK4heO*gybi}GR#dXwr z#!p;#8e^`bkGWDH=FvlKwh#3d1C8O;?m8MqP{PeH&M`SWo(T|+B|gNEPRpBBg(c@( zS9f}LYV=Gg6*}c~nuq5}!IUTAZM<@FFO4_NP(8OSXO0dxKKfh%EMZ-B+T5CAorXIk zirzD&(NVo$O3U7S$Lu(Q(LJ`P|0%A0ENh6?*R78da^d3W2~pNV0Xdj-35B+Owl9j|?FN1Z#>7-QsHPjQafD&68 z!ES4{>B|m;*B-5h)ndK4lFtHdroM?Vb_QNghgTeDh^!T6kzEpQJg5bbPXX+sXiK)_C21XD zM0AK|%HY7ADSyQ$u8UK_YGBAu^6Q%u z`|4Vu*`g**JjXK`@bK6{IJopa;%g`t5Vl)Uc>7D!rq06;_(+ z6cx{dO6_pX`x(1X)y4jyNJ!2DUgQH;A0=5O)OF+y`74iv`bhgzF4g{2Kk1x?Tg(^3d&K`SBOMNwMUIamm{PonhKPIMmbtuDm3WtBnAc*8JbSpg(=$^qn? zzWgG;cGz$CD25ZgjX1(l*wHqn;pDZOXg`EqI=_@zw63gHw3YhBd1(dPFyMR1J9k@J znWw2)fb?!+TXjTylRqH!H)wS7?&rv&p0u%)h5;UEN3g9 ztE1OW-4#vlnMrT05oneA?WOXFL9b$Rq# z5iLfI@^W;vtjyZG!Uh!;wy3Cxy++4gqbu9mvTfPQw(OX;?AW&KxVG$sw(MnX=m0-R@^bEa?}|8jMvXt{aks+n2K!08|IHqVpus! z{3`ui5rt40EXO&x@$oW_%=kDm*THRc zwN1OCZCX{^v@6@DUDY=21#QzNw@u5nO}jZH+xy!pMzxKrETDW__V%_cr}2)qX*Vc7 zoX*j0*@EiwPP1fP<-Xk5j89vl5udQsu!C@*84_4+uL*@`#bJF4R9#C45b6UY>i?}SQiC%XxiaXMuy z+NNFKHtp)RX;bbf;O7LNm}Ja}acnClR>UWNVv@rrR>Y@&VnuxZCr&7CJfXPtgyQBC zirY^p1~4HBVfz-ra3~eyC$(j7Ys=ml1>&%3ycVy<%lO=kznwVn|8#BmiT9JlHHu-y_^QO= z;sz8Ojju`~Toot!_^LRl@l|o6kFSbjKfWqc+&EL*I#b*{Q`|mN3?P#VA-Qm?GRdV| zm7GkXR}42fnb2am$;pHk!>uTWTTu*mR58AB*-8qGD#mwIG2Btb_>L-uJE|D&s8qN~ z=~Xo9oXJVAiVH<;Ry<3iu1rqYsH=+37ZjaIuB{rC4rFao`z;o^kM*IQ+}KpGjU`;bm2{tnhv- zyx$7%mx?UJw!-_Z@O~@2-wN+{R9uSNzS8#8#bNtO$1CgO%zA&+D#1VN{bjv<*4t;j zeb)QSdVkqCJRfJ)$C>qUW__GlALnTAceM9Ax*`Vgk&liKeRO>6qvL}g9UuMZxC|aW z%HfQ0Fk|9%AI}&c&sh79wf|WAkB$9(ykmX5V|~11eY|m|8SCSXv&~o^*I1vwv1%BR ztHxgCA(Lh+-f`a>SB-!C#czA>zs<~7yfAiUFK??D&HueFz2a!b z`(t+@r6rqciE+9>w5p~_>eay*ITbc&NJURK18%Gi;O9TQ?lWr8Y4$1Gd4PkggQ z-!X~Z*u64&I!b#>ypCU#XM2T?I9VM+WdlK535@vBJU zSCPc8VqCIq64Qz#4Js~6d?zNZ%M({}L>0*qRU~n)Na9>kjPte0wo?+ zO-o!aN?bQ2u3HjUe5&&mw(0b=SK_KkT(c6_?8G%Eam`I! zcPFlU64$+ntF|p$t!rBsJw3fba0QxJr3765`ElF=w`%bp3|z10ok4=<#h?SHrG#E8GgX+HJ+F>7c%dZK;T_j$57;abvzB zZpv504f%>mE^$Z2h5D$tP#+Z+>a<4hctf`Hj?O#Os#U!b)f_An5LGo0S1O@*MI{ot zR$9i~l}+eTiMz7NM3qft=tzmHSE8j-L`xllmSLoTr4B&r>V{~kj;faGfM}`ShnDJk zXsLdOmXkRYTDbg-)z4J@Ow-SJ{fyJki}Z7YescP`Q9l#(bCZ5<)=ySHqxEx*ey-I| zg?>iq=L-Ey(a#I@bDe&!*H5K>s`PWEex~c^7X7?fKev*=*$Vws>W37s$d1+znV}*( zRzKtPGhROv^mCbhCNlhzX`6Oq+q8Rbf77^~PdrHdPt~6|D~rx-#urEBs2M*PQ<=H<_BV6&>t}p$RfgYe_>IVf;C?~) zog99z4!_rg-)qC~y71c(ekWB#i%eL&$cqTx5Ut(dwXok&H$?lqA=>E;qr-MLjENRw z!y*@Lmy0&YMH}Rz4RX;2H%4LJ7@6D{ncN(0cXQ--bL4k(No7%EBw`HfdWp8QA zzPK%WYg=|kTlTKDY)xBsR$F#te4YBTkLUow4Jt*in;Qc4WW!V&vEpXO_Xscql6w=c!0)fKVX5BpLx7#kCWLLgg5x zF;O`xV@Ec2jE)^+V#nCnF)ntDj~x?Y$7Qi&V(hp)cEp1`ba~z|y6P>B4}=1);<60o zRRtX|{i?{TxQwDLGEf;;F)0{K3I>yc!KBa&s`!hoqe8zt8(c-E{!zqKSSUBl9~H_A zJJpo3lWKV9=Oq{YVp)qu!N#Hwna^ceg9tJ+4t?BwCd(Np zYyMgD=`3?-wE36Kt5{0f=XmsW^KmTCeQr{f_9^~d^E0rMNc$B3f%!4mK_n(UW4;fz z1L?z+;(u$t4VFij!F0_3Y`z*MO@!%~e{Q}CwiI0s(=q>xc_VB-nq+>?ycRYCU19$3 z=F?$SlKFp{PlR3g?4+tI&Hu~%JnS^O%KW1F(l1?JwRZaDRWE=mt$$;F3R`J1Oleek zC_2~2VbawwrNd?Bhhfq+=9A6$!K7==rG3#&oX;L1ZQ&1b-J=tbran@@pNp&QIsn~#HKP|m#F{QSX5RcFwR z@buql*hzE~P3L(|Ln9@s8)3tY#$(c$cXZ9^|Ev)=+6K)06h zF4$T$ql~YHtwOiKl|EY?elx5V(M<~cb>=f+Idn%^I90F=nh94t-(>p>pW%8$)eh$! z=Fh>NL7GRA{yPbi?gA>DUA8|8lXNp!`EZZ|(j;ev^Q`$)*u_szs?v>c zm0AB}ehzjL-3L=ToHIWLJA{7E{DS#@*d8<=p8neb+k);-L)<;Ewdf^fycxCt@fbtN zUoEUgeo*C;%on2aVLEIgssrh`Mw@407d|zqYM~gKWPT2I8r7S>!2AU4FlvA+oGIo9 zVbUV=8_oB^cA~`&=XUdLupYF;_IH`Dg)K#m=C$VYVbf8Qd7XI`?EHaARWCJvsrhrT z6X-$n7V{&p{Ydj36#v!cyJ1_fza5kGyg;k+uSo&`q zOnMnm_0BfipZg^F2d#vu-g%?>G1wubNeJR^Hs1r=f|$w?_zv?fSR-OeNZ{`cIFe4svb6fkNIiXaimGjvfpif7`6vJV*Y;fZLqcI<>pVAuYxtBSHP7% ze`wwaTYy%>(towE8uZFE#61I+L%(0fr@*Sv8o27mPdNN6?83*1lliC3&%w^1c6j>l zH0&f=mxj1cz>cC0+)9VfIh-S~!zge51@i+isbGHCoYfKkc40e!I`LKbPue~YTZOt{ zx*q??yb&gK+y0y83t-Z#%>USYE=<~B{vGofu&JmAuJdx-yb6{@n!}&|yRd&!)mhY+ zhPa=FokIO({0K}MfGhkTI{ZVh{b(ah<>yb#_rP|dL0I~48*CU20hJDaYx|R5y}T+f zKbXS#2lG|1rD&7w|HYiu5&!06I|FUTS8daOvwaRW1#N+;JilOG1sjL9!b<*N7d|$r z>eVHXdH{9?y{3#m2RnftgKNK;FGl6_G1wvWT9DcyW6bx$wxQR-luxcS-vX0fFIzO( zd;lhGgDHKkGta{s&>LVnt{cs3VN=i>&2KZG2)p>vNmXw$pJjd)_6*u?KF|C(>?!nS z^E&f`upQ_vaJA8!%pZfTLT@#1F<%OsiFTO3(tJ8Bi{575X@2n|)Klo~<{QmV!49K$ zz?BbQV}1a(Q-Ucyx0`Q+b)k2fztwydtP#D-{O#roU^CIX;mV)yG@k;?pj|K>@8jm@ z_K|MrJ?4AOkHhw($IU-sz8f}x-fMoyd^KzV+HL+v<~6X%=zZqL%qPO6KY%M=J#BvB z!{l4^e)GRHKL?Zcm_KKJ1}1&L{FmmZVbT-k|80H(CVkL+^p~Q1egr1%h3mXjnID2l ze`x+f^L;SsLvW?%P3F5`(ud7wn(u%~`^@h#-v*OD0@r>Qm~VkeA2n|>?}AAmgX?-( zX}%iPfcBfe+M z%pWs<43E8&ioAQIQjxy>G@^zqcG`<=3h5I3_F0nWd0rVy|A6=u=$^v?|^Mb zUxuguw!pg3SAZ4hN48%JTZ*29>3ILbya6^JJq6Qs{g>u*VKdNIVJdI`#(V+wk@QC} z9oKW_Ic%k`nV&VE0;@tt;5zT;%`-6R>oA?KUz?xbOZygm!+h-F=sG$BlfG$wrTH^3 z>8Sbj<|km%x6E%bKLV5f*!(W@gD~ma=JU+=z@%evl_&M)+hNjo%$J)Fz@+b*KVrTb zCVkI5Z$2L;9XIbcp9+({Z~kiYiytJvp+7Nyv-xS5^rz;#%#XvQ6XqW@KLnHh%={DP zdtlPj=3g-14wHUhe#CqLCY?0@p7|=6^h5JMH=hra{@nbp&8Nbo|6_i}JOh(Xng6@_ zb5BgFl73|Vzvjnb(qEX5|8kUn4#A`!n@=|14U?WRzrlPMCjF)P?dGj8=_lrQo6m+~mW6Z}q8Re_}Flns$<>q@~(m3J{2bEMvKB( zVO}MMt~7txJPVVqGGAkUb~o23dVzVT`6-w**}UKUI83_Qe6#sMm~@T#>& zG(Z1d$^dkO`S;A9gGo8_ADBM_lWsKsvH3BWbd&i{%@4w)o6Y~xd^b#*ZvIR29Wdz@ z^Iw^7f#uPQ&3|LQ3f72jH6Qy_bY0Ac)u0*XSD4R$<B*P2g+Nw=HdV1E8_(g)pP zeyjOum^9P;F7snBsoMNr^Mf$yPV)!M_rRpP%$JyNgGn{!E6npSX_ooJ=8Z6Ew)qi8BXp1X>&;KWq)zWE{ZR+x0Z`B%;7!laj&|FQX0nDl`8pPFZ2(gO2S z=4WTf#QZ2sT4BDz{2)wfHhFlnWEr};2UYBBFOUk#I5%{QAbg-LDZ zuQ#uSNe`L7)qFZkdf5Ek<`ZGkD)aZ7pMMwS33|l*!{(=8(#y?1X?_$Yy~6zS<_BTY zYV#+}_rRoAnt#)rtT*D{4s4}0w*Q{(dtlO9^B z^Bc@}!5%{!%x^UxhV@A1cbTt(HK1O&%By?L=fi4HpZNmw8L+9S-@M6u9PI2)`oQKZ z&7XsvLL1FrVSWsD2o0L&&G*4}pds^K^DVHoXxRKw^Hnfullkk-n_<$U<~z(AV6|wo z`FqS~!lW(mEa~us`Ba#+6|Qli51CJdoqY%6|L{@pkC~r=J%?Tc=Rfmt^JihF(POs% zg!w7h3G`aH#-k3HAB7!8uY)T-pD{lO+lO9n{(19Vux*n0m&~`o2GASKpES?IR-reV zf6crZ)`;F@{!Q}*FloE_x6S9mW}r92l|J7yp9-r&Z-FacoiLvWyZCm-|KS?%`jPp0 z*jcp0{HNwimr%Z;x53kYC$T+@-VRr~{gdqvz@&G;m2PLv_rZ3cop8nHocUug>78)Z zcmHMH1zU>VWnS?$x6@$r(YwvZo6m(wyWon?mF78E7QM%OviZ5Uksr|G=GU5^gdIZf zHNVb0PKVv_^xuAL_n`N|mHyLgzY`|?0bKpNo6HAb()-PCGhYjn_L$e0x5A_kz(fDY zyb&fnVg7*me3^CjjrFln#(3iIhO=?~2xHlG5MK4iYed?HNxuz9EX#U11;v=6T1 z?KeLUdlr2JuJit=`6<|O^ilKIn;(H4LLW2VVZI->2kke1kNHm6HuQ1xC(MUoUFZ|$ zA2VMKYet_mKWN?nt3?OQzid7emP4O1|AzTw*f{iQ^Y58od@Exx=riUg&7XrkgASVi zrTGciQS@2!pP3(o?M9!2D?k6-d>gC_eIBlK{)PEc*i3ZD{6EYm!!Evs@qhD+=I3G3 z7vcP8Dvw0h*JQ@jr7r=s->msLY^B2vXRP@dnDk}1^5-P;Q!wc(aGm#S%#XmNC(Um# zKLC@SGM{0-7bbnxe3to6nDj?*m1Fmr55T0anKzi{VbT%v<>sqk($~#bnK#3vZYz1u*Fc<`d0pVbV$SYs_cDq#v5+%%{VoKR3VKd@4-( zKjw4I$HAmi<}We7u$?hW^ds{|^D{8%FU(h(KLe9~Y`)t37)*M`e7*T0nDm$C1Lpf- z(of7^ZN3{O{gwH4^KCHcwE4Tt2Vl})o9{92f=Pd4{!#O0nDkTggXRq|=~?rynAgIj zzcoK=e%ukt5gh|ht|Bd;@H*sB{zc)W)eg-D}gZaOiKLeBg(fp$M zQJ8ebe9SkZ{B{5){gZi>`EHo>&*s;eKL(S2Za&?-2PU00ztg-GCjE!=(Q<|Frp1nDjqz z)sKhFYhcnv^C!)x!lYlr6`yaISHYzJHUE}5CL{ih!}iP@$TM_C)E_x!`_r%!r~;_) zziWOJb`Xs+|GxP?m{e(g!hAPO%9{VcdpW8;BMVFhOGk+E)O)@`kejFxU zVSd5<5KPho6*{hq=6hh$mFAgmM%VRrm~@qS)_eday}*2&`C6DX*?gjTGfcYLyvlq& zOuEK=viS^{bglUm^T{x2iuqLY3`}~VdCvUo>nTgnb>`E}pMgo&o6j&m3X`Uq&on;> zlct&1nD2&3FEXENz6~bbU|wrJ0F!d&^UYVoq#Ml_m^Z?to6H-`=fb3$%^S^gFloB^ zQuB#0=@#>5^9!$|EI}_eZ#91oCf#bj%KRiunqj`${0L0C&3vu-ewcK-dER^{OuECo z%X|w=nrYr+o`*@*<^$$SVbY!E!{&2g(p~0T%%{Sn8uQ1@voL9v`8M-&ujRT!v(2}g zpN2_u%y*a{he>nIcbXrDNq3v?GT#T2?lIqOz6&PZYre;P3rwmt-)o+SN%PG2nK#3v z`^@*7&xc9BXMVtZ227f7e$ad}OuFCvka-3sy~O;m`Ps*~?$86~Pnn;BNej%6m>-2n zb>>IS55lB{=Eux;!=!ri*3MReO{5kWBuc3}b51OAbKLeANnx8d41(TMUpEExKla`yGH$MQAR+wKf z-vyJJ%`cj7fk`hj&m4`)|2#}uX`VH2hDj~v<_pZ9gGuYm8_Z9@qz>~&^QT}^-h8R~ z0hm-UZ#Lfzlh&KJns0$go#v~|*TSSO^VQ}{VN$pGTJu_%^eXeb`Ba#+!Mw|SB24Nr z?=io)h4L2lnh%&Che>_r!{$%H_M?9DE#|vm(g0lT=f}*q!K97mZ!qtHNrUEZF>i%Q zL+0-=UjUPa&3Bp4gh`vs-)BArCOvBYgn1TrZZqTmaJA<@Z2m0l1lnT$ar38O`_WeO z&zSF$Eqb;27tHgprRX*0Pny@lq{rZDAAa3@I!t=4`M1o+!KBxjf5-g7qvU7wdh_p_ zpMgo+%>T^%BusjP`47#H!lXCCb-sRNei(KDy$P=Iw4a#of=S!q8c+L~`3~4N^k#Va zZveIyy`_vdz-FMg!s*&%e(rE4!!B&1Oo3}W?X3AZ*a`GD^ZztI0y~J_UKajd*iQ70 zGX5B>M}B2|HEbz*XBnRln~C04#;3w2qIZ|^4D9?cX;j9~z)qw0l<^a=Bk1umeh{`7 zy|;|-hHXc?;p)d_z7^FYTVT@r%qz_YVA3DJ)ejwGz81Csy&tagd%5{c*i^K~{A%-Y zu!}>C|C>)UKMOmBo`5Spx0oM=9Y!Ct{S5O1uw7^`T=}QQd^@ZM{h|3h^R=)>^da+w z=JR3G(TB|+G@lBajP{wgnoopf(MQZ*X?}5#^MyWYzTW&S>^bx?^M3OaFlj$r`F4x> z5t#IGxYA*(`BO0I6L9`BkC`8WNuRX+>&$n z^Jiev)8=nCKLL||VE%6NqcG{D`EK*WFzJWpA22@vlm6WNL*{#7(*H64nE5W4bjtjI z`F5D}BlFLiZ-GgFVg5z)9+>oF^C!*M!lY-+kC?Z@q`x%(mU$yg`ic2>&F90UzcT+* z^BS0R+We&XbeQzl=07r@0+as6{3qranDkTgpPHZPr~QMTHGj_hBux5S^M5jb3MT!` z{1@i?VA9{2|GW7PnDm_a1@i%z^!Mh!HeUsk{=t0Ix1;i80ZjTw^RebLVA2`$iRM)> z>7UH6G|$4$^)dbrS9|gr^Jihl(a+(kkFGO64BLawnol#|0o#WD1)lyJfOVl?l<`*B z0`yC`=9%Xl&P>=8bk6(^^Q>4e#V2zt zDo=V~($(hU%~!*uYs{}QZ-7bH!qqRh-h3uZnqq#F`4lnqLb#6WHuEe@y3Tx-`MEBx zcXYk^JoD2qX{vdh`AL{G&AiF{C`@{h`OC}?!K53^A2HttlXB+m=DT3hjpp6v+hEd7 zaHZ!)^8uK2v-zvd^Dt>TT>1P>=Br@REpWBF-e$fOCcW7FUFI`j8FZ_|d9V5DPTC1* zhWQ7~55V@I+sr>~z8yAz^a@VJ=i}yiSTnlA{4?f_uv#?J{0rtaupFv3f6{z1Ou7@E z{u>87zn<}b+kf5m&%#ci8uM?PKLy)|W|@EAd?#!Rnr;3A^JbVd2d@12Bl8-VG}rvJ zc@<2$+x+j$&lafb&^_k=Y<>bJ-E01@=KEn%t@#D>$6(St^WT`a!le7m$9yNc9%sU& z-!s45{9>N6AI&$PY<>bJ@gC0TdNkh$lU`zelleB7^nm$o=Br@R0`nU48kkgPey{mB zn6%LRCFaj|P>!K`^F`)Q!K4QBrRKX}(jxN~^DdaQ*!<<@jWB76dAoTICN-LOnO|5( zos62y`^`_nq?ejMYQ7&PJ!t+~^DQuGsrh#EJWN_<{tok{vPH|yA2+XsNh{1hV4j0X z&F1^eC&JFOGyV@(`T0rn)39S`rTOR0pMvd0E#^;}55pQztNAz0r^3#xW&Gd#d*;Vs zd(lJYKQJFR^YW_Q@Q2~)za6jvv+j5~VA3mW z|8w(;Ysmj-wfQg1&%&fvn*Xc$X_)l;=I70i!lX6kzcN1rlh&I5xA}gU)NcN3^Bpj0 zoq6WFu1{e-sKdO{d@W4Mn~yPXgh>VS@#b@3(t7iW=2Kx(r}-7;S(wyiewF#T-={uB z-R4)DpMpuRGM{380w!%Rzux>9OzJUzk@;bm)N6jD`9YY}XFlD0FHGt;ztwyvOd2r1 z-TX0_w9&lUJP(rw&1=jXVbYNK9P=8OG;Ds4`Ba#+$$XyqIGFUP`F!*9ucZD$o6R3E ze-0*XF<)qY3MOqeUu1q1CcWCc(flAxdX4#m=KEpNW9G}vcf+LD!qpCZnfa>f%d2+6 zUk6YBJq8;`7V{69AAm`3HQ#T(7q$!SfT#bq!?vKemGK_fTJ-iZz7!_C z1FrP^ti!K`NjuG-GM^5U-f8}A^D5YdS1|q$SO5BH^K-B>=-qIo|DT(mhMh#a%>T;# z80;zZ9(eliAZ#Ccyo~RHZA0%Z<6W?3w7ZPg!gA<+Wqcg$+{+pNFXPX_oJIK5hPX^93;J zGv>R@r^2Lz=6_&*eihd>`Yc@eVXygdnDjZ@f82a8O!~a}XUqp+(joINm^Z+rFPJ}R zUJH}H2v7gbfJt8}<5jQ=4^vl_@n>Pj(U;5kA=n=Dl`_5qHh`Xl>ptVx9iP>(1?VaB z@0rhpRiUq%|Ij=GJNpph|K@*Xej0WZeGRVi=kLuA!FHh|=I6|}!Mf1b&Hu-|hnq}# z21VDqj#u*Ab1QllMdgZ~CDHY-G|+P*y7#I3mMSy#{E40^(eofG3zQyu z)i_?pJXG_IvF zJB>?etWV=>8XMENmd5PVc_@plP^s z=nga=y#(EeW}^Giv_2@Qu2TQeqCn^r;wXmCDH>2t3 zPNa8A={-@px2^lwqp`b!b+wWC&s4CD>V`qI2B}Wi4tpEYb6WFYeJrnJsrOtRMz3N0 zDwY~=)!3@8xdZ6`a`*1>aaHC1{{RI_DG;GRxyj~IDbSWQEl^4exlP;9Gzqzs7K_tK zX3`8zGQ&(#Qba6>0&**gii%nV6cDj09#K(y6g^&0t8$L0s8vx>@mLj)=t23tKkKq* z&(0(*e!qWwU%&mzCu^-|J?pyHdiJ_JYmM6C13>q_y#+i7?gVcG&0s6I1H2z3!3V(W zf#gUp<_Ezna2j|Om<_ZZkp}vfjA32{HiOrKQE)Xl0!ZH9LcTPPUk?VrmEa7}07~F} z=ykNU|~*r#La z{;f}g*8%DNp9D?>w}Jo^fX>8h1Y*uI(QMg^z)^QFMaTj5yz!KW6Vo1hoGGR z^exkOOW!DckM!-)cShe7eLwWA(04)K0LgpFcFA$+!mq>p1Zim>QhS2h|I?o8N5I42 zqd(8E9|Io;+K<%UqxKm;2fhF_Hr9EAPmsq~VAt89yRhGf-+s8)V%K>1 z988_tyBS=E{SBZFoDJRyHh?u?1m0JHSwQkhGEMSMGEDmOUjowK*V(H#fm;Zp@#;p! zfhpN5xqLiseHZi%ki3^{mmJqOO5Y=Wd-R>rH$~%yYl!Pg%&Wn}gw+`(oiovy6`d=Q zF8;p*omJ7flpDe0;AHqu0Y`&vxR1d+790nT2Qxt}@m&u_vA+?XE#M*Ci@-Ht1a}{P zIcBbRY;YRr0kc6jI0GCCrjgG+&38xF+Y1}+5` zfez3Pxmz*KN4;a`n; z5Lge=U>!(-%fLs8cYn-%!6D!N6l0`CUz1P4Rg0QLj-67D{59`+^RLT~|C z3hKf6U@>R}4In}IFJOEh=#I7@gWcc<;3wc|@GSTZ_;2ug@LTW;@N4iK_!ama_&N9` zcn0WRH{B`s6nGN+C-?*SDcA*m26liy1Kqv#SMV3`NAM@`JotC;0{A@mF8ChU3BC=! z2@aeg*cof)%)1 z!9`#(Xa~zd8#o`V1TElZunI_L=y!zs5f~&tzroxD3i$mQ^VeV}Na6QM%uj)T13v{{ z1)m0wfk(lAfX@M%;8<`pmi~uYoUue*Cs#4q@)V{5Cj% zFxSJs89RT8pY!kCn5ST#3{C~_!~JT7flqoe(uw&JcpQ8gNQXuGD$-4n9*T5Mz5$*9 z?;`9EiQ}8tzXiSxc7pGK?}G0E>1_Nb_%HB%@D%s~_#yZacpCf|`~+M_T*Kt$&6qjj zz7~|QUxD9#-~ez9cpbPJydGQ&t^-@Z{$L-lFPH*Spa2HJl^_pBz$P#XhQMpV7}yN1 z0wquc!(b!W00zM2AP4$D8mtGsAPf3I1{@FS!D4U}I1HQ*mVl$dOi%+FzzN_L;FX{e zG=USrQg94d1LlDaa2B{2Tmn{uW{?B{I0>8#mVxD91vmwq3TA;8a4a|+TmUWv$AMaK z4p;!XKsQ(j&IUc;BCry?3Y-RJgI2H#w1LyX8Q@IN4$cLKg85(?I1n5Jrh++OE;ty> z0Mo%CU=cVE90865ouCf92CM~_f_324;4-j~_V5+j!*1{fa3{1LX#3D+Zo}P){ZE*G z1Xn@39J~elddyys2H(Iv3%n8D%fW-haV73Yz!?7LLYof?*uMiUk2#9@LHIrdehPjK zo&~=FyTH%D&%rOiGvJrtSKw5_X24$w|6bzU2J~#i{Weelx8Z*mydQ%;g!=^W3G5mR ze+E1X{P^_^&^6||2A&(i^|;@Nxdn^>jR`fr(^%^)pz)r@cpCd@e5Em;#!QmYk~{G+ zlg45iH*F`bhrvg|$AJ1p^!p&${weTo=Hl0%X~x8qd1x(@SNpf;nnG96Rx>bLM-iv1F>0jvSHg8fKqE#@uY z8lW-xbMUUluJ5Y8q3^=|R^qq={0_V1yKl>C$9KW^DCVcZPvAKToCt0O0r)%^1nMjI zVBQJ;BVY@-5BHm)-wJNT{Q=w>+uf#kN1mGm_E5iH$ zd>8n+@9VHH!f$WpzANBs0T+RlpcO0!^`HSXf+n!1`R+OJoDHUtb|2^k8E`wuf_|`_ z{QJ4=k??8`dla|<9Dx7pFq<%!fh1@KH$%Gx+zO`S&VkFp0Jxa=?x(&E#NGxj1s8!1 z&juO>eSf%PB_)`1kb41AP2*dKFW za0oaI913c{+o_v_F*ktyz#aeg2C5d0YI20s8l0Z)Tx z!EeBSgWrSSf?t4NgXh4n!0*7%!7su8ALgegQ;t)>sbC(sm%9BXb(O`gdFtg{rBK|0Pnjg#9(x30}^;^)rM$4ty5O07rsjz_H+HFcU=Q ztP{;u_cTx4MEU+n-aY|d3BCrt2zrVCgJ2do4ZI4>2K$3Fcq`$?Fs}le!E1r$vriCq z6#JE6EA}C1J21Zuj(~OmxSqP)jQbts1E+&Cz?q;OoC^*G^T9N5AUFt21#`e$a4?twrh`MkB5)o!0vriC zK^<5JUJWh-r}JLxK?yW~d!W4!Yy)?L_k;I<4}kZAGvHYWzCyd*4QjC83H?vl{|Nlt zHUoVPz*eaiZqv`o2i!Yyblw2QCMa|B~U7J?gWnGu7c0 zKyw?7`I`4bOJaL%mtcL>KogH*$5<`0^sG^GVGFV`c~f# zzC+yK1y6x*f^UHx;NQWQ!Q}@HF@__z5V0D?kyHzz7%xo4|G8r(hTO8TdK)1$YMh68sAM8axYr15TxGG@j5{ z@-#3ToDR+aXM#CkE;tL+0XdfQP|H!FKR5@Nw`7@Cf)M z_&4w=@F@5+_zd_gcno|Fd>(uOypyuL3%ncL4c-IZ3*HBgA#cZmx@0bCDW1?@C28@v(sBj9xGXMi)o955Hm180F+Fdx)`1z;gK8=M2q1&crp zWjqgaF=ztKAPKZ)u^jldhKsPT1g&5dXant_16&L`K^N!-JzzDs1grsT!KL8UGD&Y8 z=4BuS)`K+Y1$`g`vY;Q_4mN-RkOP;4yY&9RyTQjP|0lpk=!4)D#62Ax0v1C*AN(8i zPk~3lr@Bnw#E&pXQA0X`q z!H2>7$@3cW_9o0%<99yh60j6p04@aepaC?3AutT`pa8A_MNk4GU=(ZuSAusE@4LXe zRd(R|1{&g5QAOg5QDX!0*9-gFk@X;E&)>;LqTB@E7nu;4|Q};4$zy@OkhB zumk)%xDk92d@K$gq zcpLaIcoVn*+z4(0Z4EV98MfZfG4s4C-^V$eee|c0r(;K5qKK>82kkM6zl>& z13w490MCG5f?t7OgJ;2Sz;D6tz;odD;J?8iz;5tI@F(zR@I3en_#g0B@H&Bfy@2^Q z@OSXP;6?Bc@K5j(NboM+j`0p~7kDRl7kD=~8GM#F9s{2P^VanhHy1|o>+-#qXZuD< zGE z8qQvs$_;0-W0p5FS}=Tl#cX;cYia3BCS|i_WhvP;a&;=^6lXsJ^K@r#z^r%nMoiI1 zz%oz|n!tLH0tbKrpm>e|SAcpT{*tqcekD*Ph+ndNA0YcS%zDhbFeSsc0nsJPB|l`B zOqU#yU9w&BM0Sm}^eC*xT;8rRf_OyNSV3{ht}%n+lwD&7#VNaFllYZq$tdy5ej0X- zaW%g6<6Vt&HLem}<0_4>WY_pg-yuE9o8)Xg=EpG~0E%CBjd>Nn>>B$jKeB5Kto+C> z`K+*?z|^={VP)6&SYc(~4ir{)jh7Wx_StQR)hq;8gL<$Aw1PW92HXf91zXz>t9b$x zux|qofycoLXfwh6;2E$J+Nqe2fZgC}+_jiHz>DBn+)FU0gS){~pc||QgJ29)?Hgmo zY(EXZp|Pnsxor80mWx)lu4-%VxVW>cyJz(!Yt~+x?(NHD`!@{aF5fsfG@LJ7Q7ny& zZn|=8^HsI;>lQ3L`w1cM~a_C_-uQ>dO8Al#<^vq*y$YYN?{)AVa7@TzSDW}eQ)oHU& zKjX|fbLX965@NOJjMv-Tia z?XfR?z2lGrYigz)SOeL7<9BR6u%-iSfiBuB0irDov!4sIW0Ejh--w2p;=*h_XySBE zh@^p)US#uDJ4u+W@I=$`dFwcM;&kqqAk6yd6Nk~5TXm)ikvR?QIPAch9j=a6;Nj~H zFY{c+f91`GIT*Xb)E{cosTSrnu`ttJm;~XlCaQ&52i@mQJO=@#vu%=ePL708SgItk z>lNg!#-^ijRlGc>K#P`VKOcs0Sj|{09%f!FjK1wkXU8PzoC;60JW5kxcDp*LmbWt_ zVN7`rPb7k)se>bI-ZWPB&kpFaF98+habXHGCJu8!EX))aCNW7m0bwf2?B~KvR-OxEVN@QaGg)~~a(PlZdiHT)CM(ZdT%U{QEjV)G zI(X{@VRlUt=As{eV9w@ePugGObJe-e0Fy-2E?D+Il20fa)s9|{Qi)9!5+m5qg zf=C-O0r;o&G|w;EJ}yk{@e_y9`kQZe3OmJx**ZxWt=C1v?B~MloFvQ(@i3&N@^qXq zao+xSf-p6cgwcFYr}be7wpaC*Kv1g=0-&&aQ*T-aj)vKrdi#4k3~BAD-u^K` zn91s`a_p4qV^}mem`j^6^8Tc$e5;&#Bm>r;cwo&|VBGou#hx^7g;7{NdlN?MU5d~{ zZGMN+32ZthLK9p0U$roWQy6ERI&m1St@$(*ljMui*)d5v)xs#9npqR4qqRHLflo_q zMClY>W*DV2Ss1MkM$=KdQaalwNvB#Er88NWH@kM_%cHT1(y4vb#C1?DjMAAb%&ilo zvwM>AR12eYCJS?;>%+c0YO5+w;^{eQ!`0j-|yO+FVEhz>uO2n=VsU5e0lb! zT~`aEbS7)pw@r}FWNoxs7^O2=n44U?_T|}|c3mxu(wVGXYkxuQEdVn2rd?MHqjV-~ z*V@bQ>5$A`wd-nOlupeg?Ld1a{DtM&n|56-jM6Dgl8*LcqUr2SyRH^S>1>}Qom*Uc z3n-K7Z*SUlwJ=I&vUYv@1nErHMyrKUI+KNYvuoGBJbTlwtA$ZIleKH@v+4b)&a_sr zX+~{gH)DffKJ{=0;}Od1p8{^#tA*J*Z}KqOuTwher+b@DwJ>{1NBe%hz3pu})xzv4 zojW4ws8X(&u}@;xNzC;Y+B%vVskfbVmR2oH$AZbjyv3zcPa1ohPPH(5N@t5p$G3wk zXVfHioJ<=%*XDhND%Cw(&bG8_VQS!?EX*5RI=&t3O*+-W>?s}X{YKlt-lS74%%0NG zUbSDFky*z&!Oq3ZkEAIGnu&YlW2B!&=xNzby()-an@L@D{QaU>(2{V;2o?m%Tc!gO%Nth0J zqV=irY$r^j!RBo%?)bXmEEh&;DeOgHcN2Zlg_%Oa>yv!jnh&hmiHWz-k@w|Mn3XO} zZKL(C7G^d)(J-wpOoFtq8a=FdI&1f6qIVZ?F~k;JeS8Qd6j( zQloub?OjKodK~K`1jQXKm*U$AcKwU-X^-m+FvF!$(?T7ATHr{DJ>@Us88PcY15kW= zPl|8*MZ8~t(>yOHKJ7(&{VK&*Aik|&+snwG_SXHgjrg?hA3#uiTmBE@)1J6=2Wnk> zyOb}=TCe4@`hoJoJ{y&UQdbE1#&42dF$k%#Mh~&?CRW%gup@>f- zc0uoVUr_D+)_-tH%{HKV7q4_QmH|EWAlhEUBme(f@kvKyJ@Acfx5~Ma_W>ZAX9s<4 zM?>}groMHm#ssi z7gBk)*o~l$(M!1vRq30u#azEOlwf88_3>BmzpndiQp5}O}stdTtNqA|%N3J3bNaGYS9Dm5Cd{Flq~d)pt<&t}Lbtf%E}_;rs}%crbruR&6Tsc7sxS zaKy(Ir5D_LR#IW(h=nZ_`zzuSuZ9guI~teh85$uC2epHse{|UDAH;aVj7RBK<)Sja zarrR~H5eWp>dh9Vgi_3p4rfZ_!Ro#hdb6=ISbDx-)F47WpVmk|9}K388&r@;jjIxi zr8Kli-IxZO4YI{zzNm6X{b=l}{IcK1zS5$==c>1u-$=W2?~zVjOpj1IN+ma(8_A^y zsY)XPhVy~#!(r70efi=3+=kJjVZdK~zp5{OHfq&;DJwCYfM#BmT-YnlkSji>FEV#k6(9R~Q{JS*fhZ&}G|U_+GMO1!=_4ztTar zPj!PXdIe2YWXKhCPmS_s2F8USR;zKr6R14}YLB+^l%sO{Fd0&Pn!J=tWa)$XbVhmf z+B@XYsDqWmXL6-RfnTz`MIm>nLee8myEYEzA{l#srdskR|rb*?a& zRbPq;mA;YUVELukN*;oBh$Pe)jlXHbQ7ZKO&`^4Kd;@WfC~SYeG=3vb^`Rao6bh5 ztg}_&I-Bayfm`0vlRN=h)kw%Q!VnqcxXJpm{{zl&~8g2sqGM^-+ zi#3c>G%6`{o7PC($N4-x%8Q<~>NgC_dn<<=M=$ej$d1fUb#^sG!x~z$NiU)z&gIGO z`Ke@6Gu&Z1hF6qG8kV-AA}m5e9U+w;G~bdiyr;Vgi_ajoN=M#(;%!=Gx^YWi)`qfi(QVBT zN^!U@Y;vuhEn3pPPScIl-9>9QA8W;81%RPh`B%Xg>CO^Lv{a`Y>*^umZ)#5QL}}EX zNv~X1mtK>qNcCiE(bTJ2Ym64B;I0VN+>So+^3|yB8WECcu4^$dD88mut*xo=s`ReN(!Ytly8knBpW>F#o6V*SFpjTwzvbmhROgS)Mz zBBTimEy`uryOdY|Xg#U6P@a!^x;OnduI}t}!u-qb>GRL43+b|l^twf5I(EKc3Z`-x z6SvsqHm2OL8Mn;7bZKO6UoW#M)mvA$w~Ov+GWqmh*`F&77&|kjMke+BVCPU(}o8Etg^vTyDMM#1}X&DY$Trl%FNXbLf4 zQoI#$X}+1?Xy(}61KHq;(Olog0MWoXn*RJ)aQWy^fl-#ePr(TOgXyc7;N&-)RtkF4 zeH-T~J`Dk+gIN);@>rnTnV79^?uqd12WoD!?L=#*OQI@-1f zEpRlg;pq|INsgvotcjB62ZuzQB9{%n<`A{6~1oa(1>I?T$N# zz}X6xA+$tWnP%baR9~@R4r34r!`pHr_VbB~JUV_Y<5$u(JM+Cma{?Xlh^J+E`n7^o zC9GLls-O??o!USTi1KS-y)Ny}gxN;Eq@`_jLu*U3bfv@aj;}X2!bjWksqA_OLbaz4 z;&h<4ax^&KK{VNC)z)RI;ZpqK>5h){jSQ8O-DA3YPJ7{Ar_I>Vq}|ZfHb2$fvP%6} zeKxT}|H_X#@0vG8&N#U`8_5lsHdu%3oPXZvE}n>ourLQ&W>T<{17*o`VjmIjBZH6Fj!fPT&by+1$5$w#=SP6H&6u zKhCkwJ}>Pfyfg&`=XEq_eJt1Y%&J{DxF)ggl3BHjFym#UgxN8w=@fWR2CA4~X^>!j zG;w}l<+|kk9PDe(u01csz^J{mD-o`vF%mA*S;O*+L4=7ub8g|cquxB#$Y{|ei=V%N zGk>>Rnkngxht)WdYWA<5#ox5-9Q zu6J~VVVvs7)K6*DoJAJ9dHnk}jv1A8r1D<1mFF4wY9o1598W`wzB|>|PQ@3g z&&Nn-Kj`;jDxt^m_h+6>y*6}rceXV4bR)>kNxXR_7U}Gm(z(r|tFI%avE*jkXRw+_ zv^kC@KILr%ZXZVFIvzJh_{_kqzG#?3D(g#;y1J!G9E~l@+j>^n06u=XzIyH9CjOl+ zow%RsSALhawzsKaIzvGdQQl{Xhi?7)nYY;d#{I-!gI~P;53;?X){hL=5ZJau9Yl}X zX_Vc`&NfMgHkPX^_)^I>UIa4@*5;bqWR&ADerxUfkw@eS>(S9v_fL?&U~9R}J&D_w zLzVPc#I0bD;4U0v+p=WZ%v&qp)i(SUuYc~sUE|um_*caEug71!JK*U!&c?evz<%=7 znwk@)nz*8kVa$aeBV4>*bxu_E+LtYk_)c!xZ4(`wG_qqOS-zn8Vfwf0*F7!G%} z(QMIJRd2aWZUo8b>9SS6ce!VSJ7jTByx*I4eILKq7m)?N&qe#8+I!7ymGVL5og!L9 z21{nd<;YBEv-xdH$&s6|tKCXYyr4RwUyG)98Gz>;O>-Lc@l(MrXu+q;@4l8a)gWhL zF2sD&)wSYPo)j)Pr7XvAn&+$VZR34;x5~aZ@@CHMR^H6O93afPhxt81eY2aAo!zO9 zhL%p|%vnZ8rEG#v;g#uP#5>8i0@J%R=+KE22 z{egd;Bu&YbTOC1pe!|gIUOjqWk3-uU83*WnJtjWtS7CkKJOWMc)w_4$_UY-}-HSWg zUhc+SbLvz>Qy8Uxr=$5e)^9EMMdjss{B8Z%b@@J4{Jh(L!>BK|+A@h@8hcNHT@ED2 zAZs1oZumQst6Ab}CQ8+BzR&CtH5*>hqR)z08&*D_Ctn(a`0^=l@wPPe4*PBum)hww zgpu9L7TI^#PBq^(mDfMj`cbvE6z?;7FHgCA`S_IJ6S2JNT|6$@=~HXe7xXB9@%)dG ze|=xqW6s8W#N}UcE3E@SFu&a9ahhj4e7lI-yH#J+@*n^9E_#ctuK=@^F!vHqT)y$X z&7dhx*LX%AZOQJgriPAWs;gsV3vswHj~U;U3LDd~RPZ!3Au9*iE9Ytjnn}gu$0wd> z-aC1#xux936K}0-pU>d$`DH$hd;5aQy4VRVD*x1W;&stXyplC~RM$HQ6PC^N{jTK2 zJ;}DFq?PsR@9}5*!g9LauW+s%)BE?XGCe|C>W9A1J?YBy7^d=eH)fc&IuA5`Uliv+ zHqFYvY~`o+&hi*lRHZQ+S~QJCxP3oR8Z&WMzS9gd(!!|TX%)IzMX01}mRgP9&<+3S zuvY)rcMjOKXNNQ#>mu+g;~HT<>I&1&X3amxRPEwmR!QH5KD1_XeY$yqvCI5A<2P$j zsWW@UC~GXN5+=hB>|*hYCtbU^wiX9`4dL(_U-|WfdD4Dw&=IQMh#&tlA!zVAJBtJQ zoqM|M*gO(2XrU{Zv|~JrXHl2rVKpBU1^_A%7YYTlXO(KlW(|&=uI!q4k%DPO(8N2= z^;25(e_R1gyv^CZL|cASqMeURSGJI77~PP#Xmk(^Csw65CmISx%wl3$wl~3bAc<){ zBd#!fr-JsTu8v?JT^gV;@wy+QiK+5^Fki-K82NSixlLu&BpRtmt((}ZGAMH?m{pev zv|O|}{5Naf8IUuxc!R<6RoyCkRX)d~X1{4c5FI|LE`8Q|hI2H4pru*w26~GbP6ZX@ zay=;XZD>xInQovU36cCGFFWxyUI|ZM?Z#z#QJ!WKGOsoNE|v2^&mHCl9f z3m(@m1Jfye)kiX9GHJ&tL2HiqW>W#DlbLw`@!v?^k(Ez0^mtdNtxF{Nx}sjH_9hcS z5H$HOWYER(!0-l}>45g_C908LEEq^}kp8WxiL<)&k|gbETiMorNn4^VJ5uUP7qWrA z*W=5=DyVKIGomqgr~Yjn$U*})8!If12A2{Srkhc^kcUMwYzhPJgz&bjR; z-w_S1y{Q|nF6P2*%TsOKf#rCYHMY06CL5$^V%MHy?y@t{+|rqB>Td5`Yh%IP)zR9p zwmZ3|+lK8R^6rMlR$6#PK78EKJT|WCaM4)ap0*Ztc)J=}J=Mjrx}~dy7(La*i(X8! zlih<$lg)0a+{Mw|RN;1f6=7Q%&aQBGpEJM09hSjUT|Rocmo0K6Tc3>=Q5iPfww_jv zLoGd0&z{!Eo^dp6lBE_3(9N{MgwgWF@+31j`$U_hr>%I89WR;=x{866g0KYd3MfTIXlvM9ee5 zPw(JpUDO(Rj3{z`9kU}ISmigx`5j<(2+RKRd;Z<_9aY9?_ZFU+z)!qSPT;55A9sG^ z+7hzuA^f8ByKrm$U*WWtHDg=ld`JG#c79`wzd6P)|0;5@P_(M;3G>Znh^nfP$O;-7 zyIA>4EJL8^gWKKNBST|1!^Qu>3_7=?C58~%aAa7kZmj;*Gh8U<`%py3OFB9X?M%00 zeDOM2g4a$zk>vw@R|AnJJ<6Jrmcu} zM0q}WDsHuj>6rRlKKuU4Hly{9T}PMas){4N_n~l46E3>usUb+xp!RGswWM)F+g2O;wKwQAqjRWHHYSZBPWTvw_WtzSp$Wy?L4^-{nc z?ZX+|TJuy=>cdarmfb(yxV8N(cV(HRC?g-+zWf;nr>NkaMxSkbIPR7;HxkC<)KF>2 z?Q(Muc%Bx#VB!4vbI)6-^ic_#d-nV~V=h><(3nzsnmd>Kzv&xId0z7H$Xt!676&7Y zyw55OrgOuGOp`D7r0YqxHPiQuRYYTHOfGL}D^tUGis|7J8q{->QnofjU3*l;4WLnU~Ih=Vnvr5Xl*^4CBaz1T6ns?%I+&#dt z0sgp2wCk)@=u8B*)PXx(;LCOL`9ZHvex!?=m!7N$%v*8qWk{!T78KXFSfOEknFqvQ(!081i1y+0dcymNPFlCesjOwyf%CZD}$pnhETQDlQG zcXVs&k!WW_E;5xcc9S1BonTs#@Y6S$^4tD^mGSyk+>c%B_OiDwKh((n{juK*UEfQ6 zi|=+kvft^#N;ckzU8Zoo@%^8S96K!j$igEjz?pF7w)(Dm;HI{;@6n| zS?r2m_NTBPf~h&ePV6d+>^rb4UCnVGas0Ax$F6v0fO{QX_B*jF9@(#V_T#W$ja}uE zeFVGWKOAHnkFhgW(YIS4-u2KGzw8C*vcCeXbM$?AlO5Q_FMF$_?}NSG(PdwRU1{x) zz1G2%Pf_a?mEUlE_fx2|*>6AXytSpPJFz0U zhPiH2OAGuX=?w~&uw&4rjEhlv3+m33E?{iRo>-0$SrL%|t5GO!k92YycK+E4>+B07 z_64#>rtY3+zUZAvt4rjE>X3AoJ$)-c9l5EqrGv!|(bPwSu6{_`m2Ltq=YQ#6p_z3Sbn4XB-|9gRU( zJ63;E-xqse_G7c*2vp2!h6j<{&DM17UB(k*4cxM z)XnBQTh_R_S|atEssRy{l@3P zoptTis=LpZrNz!>#`0x(&@mWFk0_sPA8?Lw&~|1G$86Qu#)H2-1xePk`9AUcm0*@V zbqZEzAk`4Hd1Pjk6Yw}c)vq~SsK&}LbQ2?ykfw%<5`%UTREOr^DEdRju6-VzKTMbU zaygxZG})IdvfDrAnCU=n!+@7dhEN*d46(wy;)PM-&Zbc^-C!auA8q9w_+@}VV>4T` zgjYlyE*vJmC2ax@_i>D}sDp&Ta5kGM1!SJ1yCyB~ul&Z!6oz%3b0}A$AbsRo@xshe zN_*b9d~7ySy@B0_C2I_DRWtca7=S~a>~M2v-|DfAuPvR>9ruDsmovXAHi>I^XiE$& z972YpZ_68{XEv9Q`YIk%7S(FsKt4weneGHV7B`1uhx4Nw1_Cn&s`6TiYnZZ*nG&UG z5W0(C*zUaQ0~Of!$vD@&*l2(DG{qaXZ}RRc&2JZm?uvSk@TtL@HlW%;ER`Z>z74$^ zEnZmS8`LI_J<{rBvU8QsK97#{FY;ybXP?8oyE3{i8J?Fmd!Mc+_%Nlcw0v37B3(~& z?SUq1X1XEWHncJyR|>EVoK?_}C)x*meCT$Y!<*jSJ5-3}upFMHIrpy2DqS#`?Kl0A zb*=1%EMFvlCf^)xmbRe6TEA-TB8LXY1~xOJ`@SJ9yHxsmJ; zD+iokcG^FcJVa_jM#37|T6UZMW0XHDX{NqhdajKkmNuCF>CXJbx%Q#4XH^y}=nt0j zXCz5Xj)neJ}z~Q=KXuwd+ zw`o2y{fcM6XH6eZ(Oka|Rd+<|LqSgC-1O*}FN!@kUq!|lK^v2CjIUG+?rphsO>>mi z9+)=koI1SDW9<$6=u~n|sv3=hpfSF-ruOD!NRzI*wuOCM?1SszZ7o_mR`buLA)Qy3 zK$jMBQd-$y&E42lAt}vJ+!_5s@5W4joen)K9eZw{n;S%^mD;>LB2Yn(@|lqQ{)}i1 zon6UPcf)d47?o)9-p%^FvD+Q=m0FUwZabth1o3iu z+y^!O=FF`<;*e;mYc>V+=Z?g0_9eCH;NmlGE$bqw8Tcfmb!Fa<+cVIaT;q27!``j% zvMcZ8HC2aOVV&F9qj{HKMjSu>@`lzhI+BlvHTm`nCoXME^D`40 zpP{KIr+PQ*P=nGiG*<_q+s#pwFXLa1#+1|0RwNsm+0G4l;)^-aeAwj5>G=g4S8pah zCY*l%xT(Fhl?iI9xuLrOmPDV=r^{F9j^rz(MdE2}OO51XC5X_X(>Tp{nf#`j8cDCQ z#q=nrL4f<5g{ezATe_1bF6(AqZ5tH)CjZP3xM|AT-MjGp$M}0%I&-HiUr^v~G6eTG^6MwY9VUnBv{V z=|(73@*nbw5n^KDq0z0hv6W%+IYH%S|R(`4;n(7Cm6 zJ(5jrS`d~mCL=2PN8B&kPnNZ`HFJ)o+1Clxp-+ZMr`(HuamLZZw&(88FyXjxp`p3a z^14I8mM%fA&W#lC=}9nBeW5?;v$npfr5kk~&*OwvSXQ~!)gp{0eA9|#)5=sgzkp`r zL*f{ES#GIXXaV$>jt&aV%kN+;;$@)iXJvOp28KN4I)Tr9=bY?}tqa*NfnCN-X#G~} zJuOFh7M?p6Yz2%4>+`Y>)2IGx7U>cadiF9D(w6i=+8` zZHwh=3vTb1c)Y9^pfY6e^Kly!x7YQNJ6>+lRMruN^_{c*^x(iil3KJo^GUU(YjHdwm?&P{CQIo5$8Ok z=S}Z-b+Q$624MyeTnuro4Fgd z(>X<6w?O}bGqeey`&7(@nP&#`7ewx(-~vnKqa(R$FIMK!VG4h1wR|3aTz=eYePN); z?Vy_aY8A+=u+DLdshr)=<&LblW~EU*i;1h2HqqN+Z3tZ-lbcd0uu&j5I?(uX${`Eq zkl)6J=DBVt#@>F@-1fHCwJL|~P3X&ZVh>fKus0`H&NT-rf`~2&bfd4p4u>(VE(v!Q zb(wi%aLTy>$GO{hJ!UwsA)I7(m7Vewbws79XO1QQ2qL*u&)t&g-#Y;pN1pjpbHCJr!`9 zHJGsJKnvBVZ{uSIqKyS0wj}mHb8g${Q@Y^$<_H z9!7i&;my)kWRrlPe%*<_W$)!=c+18PU%$wDz1D-Y`J>G%zZNXoPhK*^K-v>1J)ljJ(IwZ5(!P>RP>3Z!~e2 zW3+t6?b7W+9Q*qS6>k?}*x$wG-BEutB#tB@9z$zhVcN9%Wk}NmI>zfuk?QalY?Lbb zWAS)?qBVSSdwa*qMP@}t>1o;#xo^mPH$`8T(tlSo`nJaMlgX#TP9#poU;KdH;GizC z^68jyd887>SEku~8FwVJA&<*&Ydcd3RAq8?y{V4XE6w|DscV!y!4yO!w~~TdO>Z*|G_Oy0ntm?n_9MIN?XWaL$uyN4@bfZv;y0CkL zR?f;Dm8F&OZQ9sBWOahi8Z8yi;wP=sgJ*Gl+F4ElBodYMxcjU=BnDErDt#VBN$@-0 z_ES}?x$7dT zrt6MxR`KH$aL&fFW}XIAh~mA~D=6n>leu7>a zE9@)#G$%t5l53Oc1`3#+C3l8@u_RX>*=tBFp5=Tufy*+iKkO?6<>xeUvH8 z-Rxn@kjL*onmQ&A-fj1?q=Z|hk(5#NH|y&eu21&~5snh0R=}pR*>U09Nx|*PSovcq zT6$1|Pr4j~Xzs$N3h_j$UdLS7kTEw8_NDp8_YGvZV9;M3&3Dq=g8Qopi z0MZ+|AUl#l(+O;bQc9Dg?cR!+9N3j6!(-iMfzr5H12d+(Bgojh(23$&Qx+CoGvtT? z*GgzZH|B2^9%D3ZZN>R$r1Mku-BiRuKDg#?a6C;#@cGihmh54fbVm`Aj74Cxs2B2C z8oQ$|KJl6Q6}Plc>>W>r-|m!{iix_(s7=?$<<<=ikA#d(*zy=RBUU%aDf8$)nzd#f z%Ws0k{rYGo__fvC-N)j*;cX5Q#oweKU$`0{*f|mT41jAHG7Auqx6W}^HXUK^Q&IMeJq_} z)el$bSgIZFR`Cmm!stYDr?;+oY2+I59;^Jzr!~BD+>S*$+L>ILIVx=W(uV#G&D{B| z@a}sYjt9obr1}0z)=l{R-LwF&@nKY~3BwHPLIyj>u%7^F4XO@WIs)oMDt2WFl^o)> z|MBF+3eI>aXJt;t5~G@fG%gMhkeW|v=_Kfw%aM=ZN`9vVtGVhn!Z%vnRPjR>Mp0x$ zM+aKlyUKiC_$xwl_#mQ0N4~>!Jzuh^Dd9(gzc9g1pj^DFBf0?} zWeQ_XlU4pGL3HkG6fg~sIaLvqHV==a5pa|7STzhj@l>5-ui!WJ9bxigiWpsQZ#XxE z3W&5IxOman%?t5A5Tp5L-{2_P5B%~&FT2LvvyjW9JHvF5@kF+W`kv13kN50c))Xu_ z_uTUseU$Q}#XkG`;G?(erw16YAmq4J*ZVUv=!vWs&;jk;RY53L#iRBO7(jixe+vu!q%!hOu}ypP0KbLrd868W-T&4M1-1bxsg+(684Z@ zgwy2Fq?;b)w?G&v@XIkY8W(5DUM}IJL^x`x~xl0Y8nQ zwM(^VT@_6>i+MhWeD{O?L3DC#cq0XzhE$|emeq<9d*blz5`Ds67wN)QbB~XA9KXHbB@CdBtoMfCVn%{~SfnnZbn$8Nj%K@=iZx#ewaX}f zHGeNC>?bh%8J>!8q0otRqVoH8(-YSb%b&vNyM{+v@2^o|EJTXTD zIc#&xg302_cCl%}I_5CF`qHRv&`Ztb_3h?#G3%_(9XJBBmkR%+b9?{3&Q|r4gk*}b zkUn4VCR(edM`TyTzk$<6Ui~()k}rOgpt+t;$EoNhnx#t{Ba%)9Me$S+$P3@Z&TL^c z!&ldgN!!@Rh!Wf&OIh>7$V9UnctwfK<5kU3*}(UdPb)Md7_d1xVQBO#V;cDY6T?{b zxD4!!V|611=Q7x2RozA8jTu9ELF4cNaI)_>X4XclEs7 za7MZ2UkKM`QhWL7`R{=XzSl;TcbiL}tyW*P-G}E2!^>Xa)7>v^49vRxRGCAXqOtwQ zlpv{-3OcrF?}NeIE~pg1`wOkXLGp-mL z)(shqyAUXm;d{j#C;oew;bhS)J7~;i_bNiV;&Zgf`5k^abJU3J@)$2NE<<43{S3c1 z5%J4pM;Kn2^?xTK%)qu^_Z5(qn~z^Pzz?C=dDCEec*CfEMph#^hCvz#2Y!n0`R)3L ziHU_AEh!B0lY;)8l;e#~vHWViJB}Hq9pMRSVJ6~%%stFzLB;Nslz)g*!}T!g*x5Yu zH8OQTS^RW2tQnOrvcI)e6}r>?QbkO7x1V>1 zZZr3Gt%4c0^cyPp&00@ofqhut)72FbPlx8wPpF=P6T)rX;7rkU=UA+Z%;cAc6zQy7`q(_;zHYy)U4 z7x4-G%DOXGvCl)As8F+rs3jZ`%=Rq5sZ<&%|`T0L%~Va<u&$2qo=c@onuEf8+PBr z(`Z&?&Cpga(3Vdr%dbP3iLmxFpdpk~W@u(Ett#`1?wgViZ)mRTdK$wy9U>SuI)N@u z(NOFU)0JCQ5DjC3MEJ=mXRYk@^-(@k0>>vFlh;U@pt09TVwA;b)iZH3LrmScB|hkE zmvpAgk5d^P^@i>hk>8hCjXsClgJCbfJ0Z8-dEsYYJ32VX)fJ^xObW$owgoGwqzS#H ztE-0}I5hW>8Fz=WfhtSW$}W>H@iccNHlbVMjsw`ZvSZ_D3ZOVl!D3@)(V34m`#7u3 zUB%PT)4igdb3JP{@Mf2>l4g{$8k(AtXtpp`_xkr`J$=jH#bq5_XS1xu>Lzxr(Frg$ z3zT6;?K)uvjkEd6m!;|T#rYg9qSs%+>%!ZHsGVV*h9y2y<*rhGCZU~>Rvn~^GInWB zLD^(Cx=Nlvn36A(x%|VQzKYPJdGO&Q7Xfub>u738$kg5&Z6tx#hiXi8wJ&oap=&!` zoar(xu&p!6QA9STc-q>#Tbgv9$N9C?t&Y5x%6E{fE5%N8vDa4D%bao(ZZ2J9S z*XR?*o?O+?!sLOal(5Y-t!P*ITli(p2JTHpdAYTkzxBK{na~-JXx~ttqi$8IyECed zk3}i&FL!2MF}p!3mMpH)G;rrS8tjH8c23l5A-L1+OSP2G;b!J#GdTwEBbybq!iCFk zhLD*zwy?I=$7KB5x-6^G?C)DtSLd9#%?Qyrlg%yYa&@ou?*O6flSmAcQiHju%q&GF z+Phci%1QIGv~NfEQIW!D+n?>+b*rOH!PK3A(ckI1AD-wM(w(?(3S;2@BHRJ%P@-u% ztvJRUO>RwUpNqvYfcr-1dc?mDcYW(LL-TR8Lerd4d`e$@^%2^Bj#dk88@l-_gLs4h zntn4%VfS~m8fZIQ8oIAYe9!->oW_BU_AE5riKwts9qlR6nB)6;sD0kv35B=e`6~X3 z&p(giu3u&6?Pgy2m&!GP`|hdCJjAcWVkA2Ck4J6L+RFcTrKi;tdMn?n z_pOqb5>sfC8R?OU?^0me>3!AX5YO(uX*F9imHsRRaQ#5l^^CMnBRzO!dNXxyj_#Xv zIh2Y!TiVrTx)m|cwhfi>T59G0V4%zsl{5P7zOA=b${GE3pJ-mrbiYt3tES@Cx{CR^ z1X_md(ced)$=WCKJ5!#t^Q>|{Jk6W8c+1NS_na3X6NK9qDZ5WXWsf@`sDyaY>Jh=DOPscUqxN4WL-Z>K(ufGg;J0JIw7I`R#(AWs=SLG6TF9kx3fO3 zF)LwnnUWos(ucKHrs&+XFL66|^|P(HiQAC)gW+j4HJ4ZCnexAOFGqZO6yJ+~x8Ek; z-kag^O-kRY=kXV>fBgA2h1DZ-H#{}u%g1qJERJXK*UxHP%8XUN)-Xpuzfm+|RqKzd z?ePwLPzE-?^RediYU}%@v0?i|vUbeMAeOY5rE`bVa9#tg=u!~QL{Aq(6*IooyuV;B z+_3z`tR{zcTzqj)L#sKqkSJU+%6u=QF&O!?oQj8|orTh9(X0o#agz&c!Pikz`BN$D2?jq)6E?%+Ks?#Z65SHW|&<@5C|{v9te7RXz=#sbs-QTdMKAC31B z+!||W+@eQu-4AUiark$(ggBz_{q9H{;=dEO#&Gv40{4i1BXo_a?(;-U(Z`^76e`Pj zr%Pi?EWZj`fZyzSkRiWrz8>0+NFH~^@+g1h-#^{Bcao;3DIcxSwnctV@zj4-ma`sz zA6{my<5yTcGEWr`ecIR6KrD`#_*eN>_R$v19w%))>2<)mS>EtdWua8dEL?F+J9uyLi%i8&@~y`vHqZ61}V>z z>9g$ndfinH3K(?)eMv+w<%gIerAurT8@DzzMOT_C7krVpIRC<$1Jf$=o3VUCI{ajQh3vPSEKlg=W*Hd#{WxKc3 z^8fWWO{>{;eVJ#i8%Mv~aEfuwFSrYoABa}lyb(D&2GoxSFxLP@-HcfaOk2jB35+bj zeD-hluGJ?o9|xMVY{k49Nd6CEt^>YLLK^q%++xe($1qCgF7l-L%A2t(Z=zifO}|y@ z<;?bdYK;9Z%<1@#;C~0Ee+F>ZTsy5|9=IM_f^n?AwTef1?1rYaeE)o&_*|8mx#9}^ zmA-#!ac?DFxmB*#eeDlrd;b7`AJ<*@X>O-yCfNB>v__pq$eFZmDwn+P`CYy?b_QC?w-`%fRVefP; zJ0|F{+OWxAHp(yW}K8wL&j2jnV#s%lz7svAKUofl09+j~uz7T3KsF7$HAur@LN zDh~^d7&5X@(HLPC^Cdq-5ww`2Hi$T%O01hEB3;zTjfMu=7+RNm|$4VTc|K)y-2%ilj0NQuMI%Dz?)%#o#2<<&HdewcSGR~~@Y2BagT@y9jb z4jTA7Xq@i?zXO^_RB0#L_A>Lm@>*@>nxI{vP5HZw&HAD=Ed3Z>KOmCNBoZGZO|{*^ zd&+VTXT`G{zry<}{cj_m|4O)M#E7L^%G4zRLF{*o#8;x9h`X#HjP z-DR1v1%B@*^A`Anxk0r$bT=FD?V>Dtb}X1)5!O;G{}2}CS`QlEw-z~?UXNbZUAPf1=2738jXT=6W{ThC zLEq!2aXWTn$iK?FC=8_wW_<0+U$NuGfx#SlA-43ZPw5gQ#r&i1xSOfB<_V&y>?-3DNAq<-Gpwu&+$}b*fz3=1=2pLR%7B=kadihsTyCq? z1)G$Z-v6vKR9t6$$vZk zTeer{dEuNx!!|Eo)zOUySJs=_$QDQQ_4ZZV(SA_C?bllr&pO<-q$`@Q`xTDn;|Qi# z*8M{KtJJ0Tj!j+qdQ<%2St9Iyg_xz{vm$oZkr#6}i9L^`FdhE5+ z<9jtG#U1A>^lj#@3Y6yg5>)dW=Dejo64m^qy)==Z&acVuQ@)`qah}4H(`vQ?>#F=; z^ZhdYGyh^Z{d%tb1zqZK-u#87d9!L4WG)?-|4j>0rM?lrL}#*Pia;bqj`}pGyj*o5(~V2xF~$ z*L_2!bpV}{Uez`CB&E8zwuzlsb7PJ)fjUNejRS2x4wCg4J8Qzm6o04t!7I+0ae=lj zG7n3-Iz4E09wU4b5|O zx5t$aQ_gWY(VC3%r;?WVj`eYuw0E&DmhKxD2YUND3FNbC;zbWXl6#w0(*MSp%QQEU z@`GMzAZ0T)G4d4FLbMX0^VV_&9o11w;wxNkKc;D!G&`d_gkineEIeoC6}SmU?v2@v zSTNJh&4QQBTRShL7>j_=VVlI>t)JCWoprchAB?f<>_jtdh06*mYg%DeCRfJU;pZX< z_a5+%v|Muzqrz?C$Zj@AE#eUseYwLI!LAE+G`evpQctd&VZSR!-(G~@*O%*+qA1Pw zke{B-XxP)kJVeva%GQ-Lv-;w1qhjPN~c{y!4VtGe~hxN|PWK=)l5K46N zmdHlx+uKctbmeh*DK|7zUN@WLotIm?>cP(F8iq4nW-Hxp514w1dv{Af-rJsVHa zcyq;loa>A1zdU<%<(Tye+@4?NW4N_;;m5IxV>`5{4$_>Nm2un|i9`I?g*^^ z(FUPOFX%?>id(dG5t@d)qP0e78j^{o{j-{1PYcJ|1=2Tb@c3!IvydK8* z^oTYEn#S&ayuLeDhUbnd$DuG!<5oS~p#*po$4+QFS)10Hwh~-;Ot~JkzVJva4oHa( z@*y+&RQsLW?S!q3@G9AD&~*2yzvonG+zCzhocj1=+2Z&-P3zt}Z?b#S3ak3o`g_5J zm0RJql7H=4jA7PeuE!rEd|GkG+rkoP(YCPY*m4~x&&NmNP@T=dz5C3{_pbN3J@P)U zj>Yl9k(K%I_2u84;(Z35=)JH?dndGd;*HkV4rqa+`EoxBZAT=1)z?GNwn6jnb_aQi z?p@rCzmFI8L_A*Q$;a!{={~NqZf+zFh4s(24<9;iZFLYHl}qa&dQ`48(4y_`F5>mm z75$##l32XHz7$@M^0o+`c>4-mT84>#YF{RW0wmf&4jL{#v*YLg?Z}X_jYfZ`i#((UcBzQPq5`)f~owii^VV?lqB43}cOzlc7R9%aa9bkfewuiF-KlP8MB>G1o^7stzC91T(#qY1 znD@f5^N7l};M?6+7hdU3CEl&XqrFMRqqL?dFO(6hc~m#PEh>y2c|J${g-9KXz6097 z(pH`z&%V4$?;+yx<*Gli+{Ps*Z<(N6N?(ui`2Vr@9#BqJTf_eY%+S$*sMsGB1eFpH z1-+mdW(F8(kr|4LPKKEQMg}HMp(twX6iZa>Eh?64jb8QIjf#prc2v};sEDXhQL%r& zeM<5qjQ8H}ec$!1|N5`@S!?Iy?6c24`|Q*EDrkIPWb=i@%f>-yXGfb*8m-{4`(gT$kM9uE;a=!vV?Mdsc@NBS(~ zzsMuFT?GfN;Do2(dV+HePSQYdUBUScPV5T61;ANZrn@@71u#XfbdT2an^%u1Xi}cK zUHm1%CE?3o^+~!s04|-^F02A4ZL4hq)|&9ele7^WtIqHcoJ~jhFQ3H0w%H27j|!hU zH9%MvC*i+wx^ACsSkw2+=0PD`@*jki9|s95KMt$m>&^Fb;A_JizL(F}$q3aOv-e+w z`CrlRba+XAUJ75ESMznF`YA>?(zZ&vOZgjb{PI_Q((a4}C*@w~Bt9-MB99JKt7+0T zk52S&`wCVUo6v>Tljwg-cglz`UdH5vw z6nSx{JbVIt8vM?A_&9iHV`tw>dHAcq`@r`=Xm7Yn!Morg&wSJO*8RK^%nZ`=Cy+-k zPMN+5i6`qyf?EV{KeSe7LwoCbV^>U3iMWfK{pMh|eO2MH2s-N~W(Dq&7TpappZ=CS z`Vr7eev(gg-w%6g$Bw>p_;2fd}3)(tlt&vguh>Qie%YXZALXFLwZMRBu!C9svaVPw8m>y5m=poEz(n}idCmseh4dJZ@# zYj*#SgdH(-f)iZ`zh;B8a;Ea)P=kAB-rdgi)-}jfZ+1T0;?+hB<>crIQhmTtCX5$0 zR)y_JPxfNyEz3-^c&;O2zCclBE-*6o%(+R=5d;p2SF5SNIwk__CAxX;dT!7-dfk}k zam}2KNKoaS|IDSEo8#zpGxIw(XqoG zUaicegGy#z)#T~JERMMyC9y%NnI8`0W+yw8((Tg`M1ScZPd1N(1r0t55R|sB>scZZU6Fo2;Mn^t6-fR+ZTimrF(1Jgd#~200nio`26P-yFYV^PPDE z$kJr>A=LW1K8e2)k+lwn|T11GM6vSEpFMnYyBt zx*>-qa|>jaw*+eoyrHejOvZXHf~5IS*Kms|Rg$+Jp_DN>D%XeVG*l_B9$Hl^Dwzly zI>`@Pxq2(1t@PxnpyVz-T~4KjCLSI)dlNudE`DMI0jHWx5y^<4=883cJ)h2-PG+4? z+u3{|&u}U_Ne-SgRh6EEl{U@HmZ0lE9U=R-eO7(oyU%8p(x4-hM3af;j%U5bt z?!soFvh{H1vKAF7*k*IY`A%YtQcnqJ^0-1P@l@-Wa{6AJ|I%GW#;mJM&JCZ{$gF^^$fw+`fUW3& z_0vk0L}&ji8H7fO&{#V+tEb#}W@rqv*5Z<(LEkD*<)*8w<;q3fI%T((HRIF@Z&Ul4 zybE9Hmt!_p4G?TB5>K_Q|DFC-J%$ zn|v$vx%qMx7p0&~eXP?`(U;ods$aPhSrl!yn#l6@9G1#3H?pYu)x?ir)Qft&^qE-) zES)&DbUcq=lz6HEDLbX!wR)ZqsFP!_|b2OBPS>!$8( z;Fbuvk*}m|j66}McqqKdT0$#2E6&-Wl8tUFZkfcE_+(o=&6^uhXcuTyIH)Ag_gYzK zKL?viRmq_2jkY4tPhJQ=g*S!JZu~KLc@o@o!nyaRscB(Dqh2q@kJn9UF5^dc$Ibgd z*+_3S#%; zaLY=6^(LGuV-;q&DbRja{FlS4N=Oj6OH|Q zsL0Y}RiOPSyAmU7x3pQ2m7Da`|IL$2p1e&inju-q?jGdKUt>c{m^(yO4wkz_Cr))1 zEO1ATbSF+3Pwy~WE;4?r!e)=@w6ci@3_&iAw$GO%KIRP~Ei;z?qHOq-66`ofAKjE`P!c(h%q{Hp=p?rfE*+tUh_`rLtz`3~gwAsy8<)Wrt;@9tXk0 zgHvOfti5d1lnM@tXJ~B8CvynaU#44b_y`O7>be_baL~w=NHSc47wVOrrRv@IEN|7L zRvXdZfZYJl)4(K0)_JjR?HGouSIONjKWu?^wyDk91S?bt2wyN+eEd8i8?; z%!e2qsDAuBx!aAQk7v&+|E&asGf?@23huNjwe{p$^zYfjYG^n+A_4LB1ne4%*zJV* z+7Wt9;TBB6%leDmlOuk->n~n>40`{GUDW!E7rzpGa!D7TtTTD>OTdRu?xNOZy!f!- zPwAr8WxV(r@M-8_lk=q)=i-DQJk0F#VB+1brBpo2yT;JkwUo$6y_PZuQ)Cl&>y`p1 z|K$_6p@gk0=10~OWRI6!^C$p60~+sovgj%(aXFz&=In>83G`dZo(lGA$-0`X3&MmcvPpM>2JoLw^#oOsys zx2@x{37lOI6uCt&DRAOf?BXwcs9yJ)j_G255qFHt*V=x${4->|4$EB|zc-JEjjPp_ z#B~)k;gfRXdKtJhIGd(3;M>kfBJp0D$5)(!hKG&M2K)&Bdod+FXXN>@vWQ>#{z~tQ z@aN4N5`Gw5{<_k5!FkRV3O~DN#jXiUI!fHU`;&$TvT+lI562xN^I18q&Lr)u&MZ#C zYAp|2J=(ok|CKy!(;$kRvj0s!S!3?~7jh~Benci4zU48zC^vufgokyz3^(y3pHjeo zz~2XrH*F+-w%jU4{78Cv_YYY7rbDu2N9vgkgm2x%T!*{(?QW3y^u0#q(yxI&)7J^l zt!^4NBRqFlw*RK*>6L?CxPY(5nbyK!bJolB9IsmEu;Un7hs?!A7N=Vi%^*9rk&!lU z!!+qfmsC?nm|MBell6kF@SZ7N-L^@eMNOCgi?tYO$%HO{US9C|Z?I@h;38cvhDvsV zUgKNCNl!pHQT{}|Tg`}Xg*SAJdh=$awSSA(lG*Sx`pt_iojA4dq!I%?%DB)*OLg%~ zM+JOl^sQIRYSn6$WTRHyax|@IGHYy}bj_?6WX5`QMCd;A^px~C=%biBnnftHOqt1N z)=k~ttS<1CQv>;HI(nrbi$_0_n3>q9ew$1j%G&V1%L>wWv$Q$c!Ne)EmTl&F5SiW} z*L3HvrPN*)SbWiuxgDbqtt2A1h$nNLxxWb`lPjqu{~VP@W3jrht& z@n$!#aAsdZAExa3J$Iq@jKx(2sM@ERhB|%eV=HY}X4gt9ZW0+a=*)2&JY+_A@DM3D z%1wmCD%Ta17md!2HNlB}R1x<}Ypv*fkj0xfQwGlD^*H;#scIJ2+^UJWflYI$EtI3S zTU&;Y;%#Vanz*4#PNQi1B5wcIY38we+|`K^l}C_gLQ%1r>}RZ~>scKqJyz5bA)x28 z{WXh{KFQF-^;kmsrt(QYNA~Ci6J0X>?*KI3K5l>PirD=0#va)&yAN3Pm7dc3A}wDD zYm2;P*rSH0@aQOZ&YBpMGTd=mmNagHxCZe0*;1zazp*_027|vg55E?C z{u?T-jq_fFF6q(99OSTlT#1{wd*!gQUy>KzBhb0qb@E-Bhrb=X=8A@lV_i$XIgei4TPx?)jp5uklB8ZSbwG7v zEA@(TlNLfMh}L*YL;hE8l=8o-%-Q0t-evdTYd>e}AW6A{fIYi|h~mey}@RH;mJ)-6D1 z7Ds-_?yE3V*}tP}W`J2K*4UBS_JkVCpQV=El1CtjTN zQjZ#6HcEHk=*wBVbl{LFW1mOG;h#c_n5D)WvDJ?%DB2EP*(FTDHMLaFVG)%B^z?JpxOf&-+{wTq0qR1J*{?EYgfnYsc_ z27%&9#(&-cp*%on$G_ATbgr{wWmUPVPGA;S%?3)l`e^+r95Irx<E!;XRk~Pfa0kHWzeA`&FP!?+S+u6dK=0L6W zYEF9nhs2U-$w)k#XhN%qvToV!z%ou3z1nqao9i-o^HeS}aK2i_1AfL2diAW1nN~!* z@m{T7z0ELW)mX*I?qy`n)h>oPHLc{2nmLNxn`Im|IY3sOCj)$ya55s-*;I5Q0&$gs zX*E>5R9#@bG;@o)+MQT8Kionam5bL%m40Zxc2RA03y*r$laltyDw%SSV5>5zj$6IV z9kBb=cL2O8C*rtC|U6?9m8-Jjv2hPNos$Cp%c5( zm9eX*V@gLCO&MQNsWwV^=%_oYTIxNE_Qp+LyPge$_9hdasHc+kTl222-kW0lDL0*A z)l#38UE_6TRSt%JygX?$xpcy$sc6lMqtdo^DQ5P+Y!YB5XhDu$8ZW8N5O*tlRnz>z z*3s}+8x7jrrpyR|&IH^ZODk5v*|f3%Iv4@mRIV^Au=nQ0*dP8XRhUiLwF?JAP3 z(Aj;bnf6du1T!!)jb7_+`t8)ZnvsqTOC_)*Cf{I@rHlunu!?DE`*dv!@lALjX$4!*_S8l3Wz_GRX$hI``r{0H<$CZ#@{a1TZ zC#nAuFFl#Y{m^AW9*j1-@{gK#je( zvq)nGFl)^Je(ZrzHF~ApQ8KxB=)N4{X`=EZFG(fUZ(nv#@&2Fe6WN+xa>BmjO&cvw zSJ-1Y>V9)uv8q8GPh8BSPt@OR;!zbEa+FR8R>-ESa_04Tq0On0Zf#vPeQsTsHKBXE z4@s+E7yA4>fLkSdX(X$f_Pj~Ism>@*ntEMs+{{A~?o1Bi$Q>&(G?W$=*@|k|u~Ow` z9(>X-u`ircM}JNGZ<4KKF5_CM%jxkTw|SX@$@@9vB>1tIWkgWVLm)PX?#Qp_4k9-Jjlu$=+gC3gN zha>Ezla`H#-Y0}gTIjTMAG=#OOGewOXU*>ZYQ2R=-f?yNnb#)~eBz|asl{VUi^t{Y zL}Zne6s5?2*=%T2LR|<)7mUq%jfW|`Z($?XLbQ8 zJQrP;mC%>dm*gT!GbS6Ff2YkpI02@3_9hd9YH194)- zNI8~f?gY%@$nr97scET}i`6W?hNB@hMn+Z?#+Ryqq$gir>*Ye&oJN}xChyiFAG63@ z@!i}4Q~3`I6CWPUE3YW3m{M-$pv}w?Ve2_)dNK`jRaw&Z*$r}+wbF&`g{Na^wlWbH zdkxiOb>}%OJUF?FFypU0h!QownTyA9D$D+#XvQ*ze|d1y#PU+bN9$?SVyZun-Nq?H zKk7)ebIj^h%b@*M$e}zwLwm#&wVRrIvDCU@ReiZ#G=)Z`n>mMQ>9g@v4mrv;hZfas zgyw&Pev!(AH;GMOrAM$AOVY{giuQ28Pq9q&tFY8LfD*H}3+;^64^1&%YvH8{G^7!V zR+g$rJ>8?1*k!-``-BQ`lKX@l&fi~b$fQlX_aeP_NXnr!QvR8_bGW-=H{{9~!9FGL z-Ui{@6&mlp6XE+?RW45UEacx~wG@BiUp@&WjUQz(KO3+o26WBHtKtC8eK5N}Xfr&# zbMdQjzre%9u6qbh;wU`sg+}h3wqc9Bw+L>a4omonyesp<8eW|%?-{s5miZQ8Pr$>5 zFZ^qSFLAK?T?G%XycKyoO0ehe*BLH2(#`VNkjJB69*ot62g=Ff4p+sE<8NzK=Ku* z+~t$-H&+t>Av&+x@KfNt;V1LLPvWi^n4bjp1UxKG_~+Ld694=&!?m6Pe^Vz+Bg$5^aI0G7ar@-o^ z=j_~k-i&*ue=4`x&yXJmv3h9Z6zhG$1Ejq;#O2;}CVAA-!yus>V5;|Soh_ZdZ<)7; zYPxmqMnAky6Fbe_u@x1;L4ybS1w+4DH;HOoRjjvyXZt5v8Rm!xyc=C1ep-={?wIPn zIK%y{-3~pVHJWM}NVej)sZpJFq5Ur^mXku6ckgtIuJ&26mcR+V6I63A`-Ua1T)$r9 zG&e4mDPgrY$M$aRLJoV)*)l$_w#H~iWM>jpp0wln5wYp-fjPRbw+d6zdnKl%?NUrh zza^Nm9$Alx;nZMC8m^|S34MABcWUun#+yBYx9|K^Kqq|c`#$z)LnA#y;U{qrCCXbgbX3KY)q@tcNvS~Nf~I543q01ZmY@Ey zTUL{iuQjDmB3%|G^a`o%DXJ}L>TH9^k&1RTLhe=F;d71G8`3VJS$Q8xHi%Hx7r zddWCv4c8Q*2K{QitS(Bq)RN|Jm~2vNV(ix7%CnNp+lboKl<{KLQ|VIc`8R{-$uw1z z9sOPoyV+PFvlHe9mr;gyJvZOYmir8z(X_=iHZWmb&5Sh$3!rlGb!Lp?GGQ+33u;b0 zJ6KSA=TH%Js$Z@AstsYpNv*%A0f?(M9x1!Yx{Pe9#2+{r(wMT>#OT|tof}iYG0_rs`IxRr`9Yi z8-0ET0Wxl$K-JkA-1NkksLpX_qC*=W#tAYs$sCl?>wnUoRPst=>0pVM>ie_wEp=|? ze0|O<2d7b*&PH8M9uKZm>d5dgO1GzK6%UJ($lI_~hNx`GjBzIvRTPgkFN-slQ~uPj zyHe#lS=UoIHR)hqAUARwTuFJ3y`*$}>6oGl4qMwWB~|5Qx|-QHv`Ts_Z4ORJtHRVY z%+GLK)r@&dcpqN5@xXa;DRW6om73S)Wqnw-Ok~QLWK&tdGwU^ye_4M}<*Z50Rf&8a zTs`YG_%?Y}kGj8&z1Jy1kDo5@)A+zMc$`%?I@$sus+b?bO*Y%p4LKUDbqD zHM+e}GO;C=$zRzQqo!8G-(2mi{i`xqK4k)URcv*T$f74nbi9HxWnsdT|2jqzAJ*!n zQ>@O$@lT!RtqSXz6x1U33@J`wugn!?$W)>ERg9~!`mwu7noN96be-n8&C0iuB}kSk zmY01fXQ;*IOZjg^)_jS#QHwLzgq`10R=%H3Kp6VT^} z|9}T)!@pf{%oT`CHvCoKe5YxdB#si$N^l~RjsH@@F9a{2jGNEEJ&3uDAovyuJv`*U z$lI|cS6<~Vj^+zPpD%9>IPZMQaCmsrqe8;43^2#H!XuE!V@V#5p?N&|x5A@$9*;yG zkDj<&y|@c<@A-@$pDSb6R`?fy%g-0T;ZO2~jKyubY!+Up=cdaha8_@U9+DR8h0e_9 z$XHFze616HXJ~#Mu*(^&H;iAIACdg+0;|O@bdr`<*D>*XW;QL~AdWa^K5@_Voq3$P zwxxE4Hgx?go4h*laL=ND1$4}N^$PV$Eb_12d+&4hF1%~>KF>UJ*fS^pe8B@7Hk`d- zyM~v3J^So^&K`f=b}u~ez`GCpedfIGZQ2yH=~&pd)1*mzP8v1;nr;UjwDzDozOKLW zrkk$6>Bxd3{(SAVhSxrL^uew_{P6t`zqbEro5hQNUi?kuyGt4xu4|}#`2+t27o2>- zZ{Hj?Z}Q|RlW*;?YD*||b*S&}i7}5n^86#q7StYi<&{&fy#1y9hn;s`+w%&}X|w!> z8}7g1`0bB=t!r0**U*Sw^(UVA?TLRb|M83i4}9am`#w4@vfFOWyKSgDe*JULwR^7p^XI>^ z@4l<{opSEvC7nC>>m1yx=TUdx{m0!OO*$nQi#-&p+xeL1=FYu)?kVrS)$`0V2c9|O zwjJMj^wF0eJ+*1}h+~eaJLa{a51r5Kl`j%>qnkJXwE6pXKXiEEg)T4bkXZ5lp@(ic z^s8rf7hxiEWFDb}AY&{j{bP zD|T4X|LQI`-+c2;Hy_ca{Ku0{`r@QlR{nC&#TU=Nc-^nV%GRzOv-Z4e@0j}QuP^+% z!vAIX>#wi^!odD`R0HFUOeE;KWE)vU423IVc$J7 zqix%cZGD{!dfa;Jg|{9&yzHXmkALU*yKedTgEeb9tl8$3bD!C1r<$GCoHXRsva*BA z8p9X?H{Sc)u`MT6R7|M2Vy9bPzUZO_ z7j63VZ>Q|F*V4VZ-C8oJrsmw54qvRP{`T8XzJ0I9pZhg6z1sBn^`E`iqsQ1D(W82w z76|MXIOLef2^~AS9RvM*W1o6z|EH#Ixbosnn=ajSz==8wj%{PuvOZN>7+E4#dM&>N@!y#M~U?_YZM z)cFe*JiXx3e{A~bw9|&1RukXpv$x(l<*h&des{lJcB$WG?ZShey6?WP?|b6th0S-} zb=F=q0j6MU#!Y-4F@r_vtdmrwit`!BzLq1Ug&{r-gi>U8Li zZ@#(moBf-gT7B4Iza94JQzySWWlGtU3wOQs+3T;r=laFIBj4M&@%)YLYM=X}wsu+V zwwsCSuZ`R<;d1B=If_Sxf~RUi54ncHkLe4Fq=yPmwq9!vJvQhn&>GiP2rbJ$O-r@ZmT z!Z*IY;l4v|x#fym_8l_e)JrazdCBU{gD3y|^HV=xdB`_2pMLs)r)T|m=?#7Qtn72( z-G}>*JaX}o-?{hPcE%a|ol$Y;_Q}S^Hyi(X^ZKU`K6w4XZ@%BSY5e#Biy ztv&Ynzdf>Y(W2iMeST*8+Tp`f!{1*U{`8!4I-k??tisD)eYN`4XYP4?#~W|F^Twhs z)7F3d@m(JmPk86Ls;bMY25otA;y?cJ<3GMFJ#o~Yd!Di9_BW0idev2jU$yeBJ{@=8 zebMgeStGtKF795u*W|ORo_+Rj&o21wqPu_l?d{+GvHz!&3JQD$ZqJUrk2vDUBkt*V z{U?`Se(dFsJUgh*ym^10H)-{|dv)tJwA-A6cdq^Amsfr{{lG64fB50iAKrh)4Rt4< z{OQSWU-{eLd-sm^9(nKBo&NT>O@Dj(?FE0_cH1Sl4IVk}ikDyBg2SKi>bO ztEM0E`s;IFf9rvV3qSw-;m_yJc>SFD^KYC#?S*v*uU?x;wbjpX<{1N;6->>=mp2H?B-EY5J_M328#q5V4e(T}8 z=gsZ>#1nfzG5X_c&n_=NqWt={H+{Qq-L!RguDG$WOPBs#ruW^U{OYSGUVYW;ecRO6 z-%&s2iM9I=9=v++#Xrnk)!h72^Vtt>`2NQq|NQZjPTy`ndUWCF&c)}9zy0>*w|Cm7 z^u}e&c3(E)(rxeS*)!NPR?_d@k3PELqoYTC_|OhJOy40svHwkn9J1k%mtJfBsjlw9 zx`yOy?K^eq-D&KA9!25s`{A4KNWFdk{U6`|PQ~#J$>i+h%l~|I_piRX=&Qe-{OnsV zzPRIy1K&II<58owAGP1KGv-`&*-@9>`{aQBt5)5*s%)DnU-j!3>vzo3V9Sgd^Jcs| z_<^&wYv z$6WLLfX6%Ban$Jtc+Xuh*p_+MoOwL9>SngpNS(vkW+ueLYAY8957c|K&HCz0HE+?( zP*#p{$#$2_!3X>`H&wYUOh@RMG;NnLkLM~*rlO-7=~Zecl4 zX98!=PK%_T9aj=FkH_qXn*HOxoR&s>$efDc*s82f9y6{qhsN2c%ZBM@k4tu+vE zo!wJSg6gTuJe=9Ag05xm&yHc`ztO20h*y-GX+YU1X(qxvI5ux^$B3nY7ysGLq2E`P zi6ipQ);P5jV{2NbM!1J{YrIZ#y{{{uze=B0!e#tlY0_w`@F@x0aa7IBhYCyfuhuO2sjN;k_x$5-~osbl97uHr3tJrAgzEME4YGIu3c+*M91s~B6!6i0Dc zxq83d(#ZZ(`{Jy{NlN?`&y1Vo_(r|&INu-p?kY_ckde{)ll&(0C;5I_)0xc?URv^Q ztGoq2k9?U=D@C=Xv34t+v3*Hq@@!tp_|perWV%sR4;p`jQinI2c=0xicyZqBA@~X9 zV=Bug$Q)0F;w5#b;6?p2#gf)fH%>f4hItmL%wlnPBAVD9cO5SI;&ZE_M%( z(8_i=d(UB|?71oT(3?ch(5ZRja*;{siIaUz7q$Lw3HjxoJjo6M5nI%9dvK8_I~h zIJ*!-rKlH=Wg$=2#wJQ#&cYmRr`eS$yH<&}Y7X5=ESkDv&o0?%_ssa;gvVNaCOp}- zXqGEv_FNi0+A@7^g%uU{NYXaZ?lDbZCvhbR_Qut^lnHL0Zjci*Qe`yK#9*`RXs@!B zI6UPL6OYTX`%TW!*rOQ>C_nnthURHx!840YdZpLWn!S=ZvA0#iuVCl3M}8c@n9jk! z^kn3Rx-YG+YS|lF8fhoDmP+``>@YhuXU?l@mIGFExH4PN`id7FZ`Sv@m!35TQGn_> z*mt`nvKh&xAH#hE4XlZ=M?jps{h&;T$IV_DF1nWGV0I7=wEwHMp4qZ3OKSt2X;mbH z{86;WsfT36G6tDM;Dzi>mQ$^n2Pm2bS~ul~PJk*vm{P#{yZEKwq6(o{M(a9GC9>qO zPPmurwbGi}rfM!Lk!b6@*U+MFLY&z^a!aPwblMGlt3Q(($q5K-^L3GF&&07prG|8B zw4ZX-rkVphpeB+*IsaDQ!uI5W@b63ws|D+9Ws_tFlkiLX)g6Kr3|Y@l~0 zA9@{_D-o>eor|SeUfI<0Wr$*9Qh?grPuuI4StH}4UbHT1E0ee9hXVp znp2(T5V49w4o#+qkxP|BV_Uskk{liB;-m_Vu5@Z8f&(301(}>kys3LcB(g(MrV6oR zgxZ=?TX#_2^thq6M%R*}Gb!;o9>LLXETNc>wr{^;H%X-2*s9{)i;M3}Ve;aq=^_cg zg}O{SjkQu9DIVZv>+(2_;y9s!_RZM0Y7eNN$toyzHWHn9E>KG(bTj>(Edha)@dy z?fK3Oty;y)rIEh9?E}ew-48k>KRu`i^|_1cIdy97dS**qJr%C(@5=O1&40BXX?g0B zZQc#my-H3;*nJDUDXyyB+Gav0cx_t|{GzFUczK`(GGVAWFBp&`nJVk5zLXO@?O;^p_ zmnnSAZJp+(PSr<~{+1qF<6r06%=jUvH)(QkrVp)O{;_@(uS`E$%C5-c=`$KVS{>pq z+kaH+uPPp7Zt-V3(>9(|ud>$a9cy{|(vCx8&x;S0km&#FLQ`Sn`Nl_c@2V@nEdb8D zJ~kb@U9*w(96xruF7*KaWi3cPSr7V+*?na(KX(7M#R>o3_z8Zk*Zc%8JbQujzHun) zl|FE?1|?z1CyWcgC3vgtT!qo=QmJ!!GuiA3H)v`{YibP70PJp>t?-$hh>o+Chd2En_3(`q#{b1H`B)F1d$Fz`CYP6#pEYa2F&B3% z7<0+DBfk3i=hb&hS`;5LV-(F$&CG`88BL36hGs9G!7S(exdRr~%|Bqs3~8fkX3(RX zVYcJUpl5!-ked4X8SH_sty+A*kb&WvnY=&RtyL-4$-*{YJ^KU1`~$Q59qoNP0@f~O z(&H}nl{;_;FJB0=84!PBe=(2lv|gIdy07)PciFj{Z+BqEWtpt#B>3NRuWrutOR_lk za-ZXKyE$V$xZ}V%-~t}M>%nc=vzt?JY1Z$Ot9;HQ(1ksId&GQBKX9#mqu{Y0Fj@HX z{RsaJz&hYXz-RFLUF&mp208=jYkbbTz-r)DAOLPTW+N~I7!Mo@3QP0?Y?Oz^#CMy{{k)U<6PCj0cVaW&-uV z0w4lJfh&MjKpc1kSOe?~tOGs+z6Q1c1y}l=1_lDdfl!(H|4HCU;7(vAun3Tkb|%st zpiYgDYa*1($Tk4&LZlg>;}oGniLj?5G7Q)jVC)>B-jD1EaEEtveHfg4eDL50_W=w5!N!cjr2>vSnwL=jn?VVya zfi>64IRz#QxD^AUd2$Kn3(Ak`0Tx$>6+#?H-xndyO!FTF~+EdMMX|6q1Uq~zP6;;*;7#$J5%U&S{?ZcDx2o3rHxt6 zPlfDqtDeI?(rw%GubFFFobL;pSi_k=%W`<#pmIURyR%mQd$PC99s0$$Z`?}CD4eL19wXK{z&k&45{$}QN4x03&FUI8XLwtl6ymAD2Ir!}SsWRzcNW5{0sUW4IIF3)cCNFea25&C zn;YsI7P8H_oz^YvZ^xAr+2A?~PGz2#R9Z?d zYARIO!P!RK@Jw&GP)&RA?`+bLM=H?5+l5A<&V=%*#ghm7{krt-DY;3OFe~-!YU5CO zIEc;5&d_$;l_fcd>%*FzouE@2s@b>Qg1+Ky85qgTW8*yM?(BaaRe8EiWtEIwv{Zx1 zoyFns^y+Z)XvU|+;a9Z72(G4fX3Ol^ET+t1xXjEIbk!80`RZm`HRw{K#wPyaOFg4> zZUGl>$%xZA8fq#Z7B{6N?5%S1T<1A-tT8*aDaFAQW~a2RDcMCeY^;~N%eEH`vmHFp zGnO6N^|jO#PfNKiZfWFFsOE|}lAYu0Bu!|k#)6Y2U0Ns%)|*+82Us4&IyqK-4O&1g#TcymgB zM7#0a7hr5iI@wWFhILaxd5(m$+f86od7T`ou4tIXoNY1t&YedK%GJzO1tq?sL5Zox ztP7Q#87Jo=u~)G5x0tz7YJr>E9l`13#X+VOrK)7AUpbJDPk8iYG>yU@Z#$;GVP;kR zgxY!Btsph1oK2tFX0#N>Vh%_()Yq2D#Yv;|X8Min{gxS_V1r6$ZWPeB?pph%wq=t3 zlIk*n#-zb~w&mYbP+nhK8+N|%x~gWSk<;>q$Vn7b$b2_TjI}l^IEk&Lc3v--G9SKV z0||k$K&6j{B(pj)5GwinXIwrTD*Ma&(Fx~uWtjXfNvl7@UN{lRq`>Bsc$?)Z7oIejp5H^aL*!vXub zZ**|{uXk`lZ+38E5Az>LJp^D+{zyyzYey%B8T+N96CKsj3H|^Gp2y15=YxN%gA;!W zf2AFr@G~8p#P^sVf%_O9-@@a4;HQpG=#vgkdOcxm=07yf&(Ljx<~w>99ojm9PHmmk z?`@pKA8njKm$pul|DoU7STQqZ`snsfx+Aj<-P+SxY45nx+B;$X2abi;@b*ryjxdhu z;6#V%8Hwml;C62B_`5(;fFDfx5|!GF9Sa^F>CW)N%{{8U6Y5~xxxVWt2S4Eb@QGXx&GrS3ANn-({v8UO&~kV$<9{uD_~J*mL$CV3 zQ^Efma61uypK4t49R4qW@3DjhUmp-V1AeEsb5dfSg=`GKqAM`rn?{}>;YIIn=Y$VK z2J)N_oP)pcpM_2w@B<^7J=3})>kw3_lo_F*1@ zPH2>gkt7h{e{e6-bvJOm9VgTm`U4#&MxJ*VEeHGHhMzEWG3Y~>aTnmfe?x&2P8B%O z&(H;?@5=(m1?K?4Ed@@jQ=yZ(uE0rMi+dbAUvO1{6Icxn2;5ZQByTQo($_=F|0uY~ z)9_hMUU`~0JpepJ+CNA-KSSOC0*{cs;1l4&l(9JZ#JLw8i4G#kd0rAPxlfz}^9SJ7k6? z1hn?0k0yT|C1nKjNb=IiHcn(j8z**18z+tF8%o^C?$^Cv|dshjnri2X%4+J9l!TJ9ctH zJ9R=g;D8hm+#CEZxbF!qe*F6o=HJL8y)j3EKL(mH&;qd{WI7sqF|-rF1>ggJ|Nh`+ zbaLXQ0CZvKf>Q}+6g1?$ICN3yq9X`@9B!lGI~M-p4!<<~!te{=&lR5i;0c`%Iv;dN z@XnF&fi3`@4|^JZ$y2&G2_Ogr#5@@j@Sj8-03^T0&l2hcAc;KzL{IGEL;ycHSMbm$ z03W#I3H%5Cr@r(Jq|fz~l^AJv4dozCx`B&bOPamg#tD8%oAnlL)mr|4g!wl1Pue*C z&-uSWw_)i@>IlHUEA_`P>V^ughnXnC zeF=5eNz`E{Vpe0Gz?2bVHTmx@(yBEdPqMHTixN}D*03^1j z?g5;=Y0vlS=%o60bdo^&1=8{i((fG10kru*6r3LjiW}eq0)qdX{{!LkJn0Lh9|Q*^ zo+Gccbaf&E*h69m(l6uh0Kyo83~!TH00&6EMcxGBKNF6ae~`~GQ*U;1BACuIgtHp| zJ0T+we7&>co#21`Noaw<6Ues&J_&$)6Wf_MJ&u3O5V-VH@WD*LC(M8MBuw0*XF@v~ zzPr;ec^6sU!woZWA2I@NH~0WPAOJ*rQoaE{y7K|aW$?vJABz1j+zB%b1OY$#i7i65 z&xq4Y{0D;QIEonp!aziDKmdGdJNNH=fp+?eY zIg~!lqx3=Epw3$GHKKC5rv6Q^^C~X9IKmA;H1!?gf?Sq)~dEIl#+rQKIrQPZ)T8{X7K5$ZKZfI2EgeH8*C)MEkatCZAb;Gv&yP1s2ezo!Z7p-qywmwX|`fVeoh1z6f(^8^>La z&d$aDci>jqJ|OW_8z)`|UTE(C&Zj+$;*LFV2{f0(=ZZE?3VnxwAP|Xkb;5x1gWuFj z;3D`ujeqkct|uN3(k9=8%%q2F(kXBbcG4+KddI;BNvH5TwDqJ2cK=$pl{r%0O+X%miB9fuujun<(J^h)IkZhcNC12EeC!v|K3zyVwUYmsp$nh` z7sd4B9y}ZTa?EA)6<5&jTMGSIlyd?8``{IW#=)M#OaKA!{s#QLP2X#+?jHrupHX3xsVgpETyqh11Yh`E$~1iABb;!~kFrZtv*49a~3uqZvQJCw3ln(P{1IzZjkY0xXhHY1;$JV0=x#8Ck>h zJp;7+4()yN>n=|EI_h8`1;hdQk{6PP(uGbEd(7aXhcO=NNjxzl!>OZyAP|tTL$JdLpM-PfW+05C(P7Ur2q8* zvirZFo&wyB*?4$^4P660{+t~;Iw`56)}W_i>Y3-sv;2>aq3&WwKm_oO@9YFk;7_X7za3i$eVW)7q?eWlJ$xL;={h#3WfdxP7nv*X{dvlAZxj`@u=raK6JgK=ZS zV-zzov@>Ih&Q6SaIz{*a!c0>id%py3&I`yW@*szNNy>1XIzI{|KBYbWjP(7SI$wZx zHhvHF@&x1nqCgDrO(c9E$^SGEnU3sLtZ>cLyB|UaVjcwDOVkNL+6o{Yr2I^xo({t2 zSp3c=K0q39c<0!U|0Hp8dK1Pl%_odKft!43$%CtCKUR_+dl3E%$~IuX@Hq1S%hVY+ z5-tz~LO`G+`UQfWFah;FLVfr-{RGS;5Py`kf0B9>hyjtONdFhIX&!n7`ZvH~hTa9% zLGuB)_woB7`6Pw^Coq9@0=}3IX6kWd#qd0^88O0WJ^* z66h@j#DKKu@PEI5se#Bm$}8Z`rEJ$z4#j>PWxE&oZ9et}+<+wi!R zzaKLK#DEYG2b|+^2U7g^Vj=@5kSsh`2ZP8W8Nw*y9W8{%7f5t)VTU zT*c{6{!e{@(~u7c11^v_6*+(ykOl%k2nYi%kQk`zvj3^@|Ci7Iy$0Ov$#=A`VcJ^X z3G{`i7lVUHw^!+d(ie{bN#MWrE&Ff!|8E8Uzn=e{2Be*h96>$*4fQ)_05bvvCexl` zkEE&VvB&xE1LtCfF@5LJ2LT@wfW~(`bxIG~-jyAk$R)J5Q=py7oWKIcdY$Qq1F07J zSJ-7^Pk{B8$kc4V;@`>n|JprqE&UkgPW|_FrSGWMWd0{*h|v#BG7lfS0p91LzZK|t z5#?<;?e0R#4E8vti|NBmW2U>K!_V=zzQBplH%aq94n$(i-F%8Y#n=FTadF3tVMZ~- z^bvjK9i0T>#Lpw0F&!~C(jVGD|EL0*jm)u;Hfj1WY3Vn=guBcK@wsL$Ec6U%eXg#z zlM~1rS7+<+$oSkoK>)Y#KKRE>_sh03p&y7J{ii5yVdlFMtmlLnD@A`t4*FB}^AV@~ zFAcr@{J5u)FLF;;;-ls8)1ObWt}I`WIU65wh#{x14SBg#%jbKAy3LH|EwA)w^7~En zaae2eGneE1PTqxA)ThG>UXR`QSAO~sZg={96SR8*|M4&JH-$dow!}-u7RVPlFRLFV zljvd`yckpZm$Ji{eq)rekbEK0RV$zGC(>ax{9n-WyBE-Y8ePYcHH`lhag7nSd~tM= zfPZu|>4R=mIN(F*F2Z;s#n>ib!b;z$d8QrYVJ||?rAUuRTjE1Li<3^kjF$P0pcDat}*2b_|t|5)l zb?`Q5?x3Id4!VDU`WEp0ld%=D$zu zfUGY?;FH9Rz6$ytE_yebFuX)J30B=A458 zWD)4ZTqp9!kzc+@9qGrMY3MHIeqN&9c!qlXS?cfCblwSK4*^n^!k7_gqHCzLU*rZ1(W6I}FW895B#J-0prcc^o=zRQ-K@(X`dp#LlKeu)L zs~G%$=qFL||F&-#{`!A5@BAmK4E&2QQ(Y)e?3r+WCqD(5`y@}fWz_LwsgH&+2E0|* z8PPc9m-LLW&n2~-G9&w1=!41Uk=@-g@Vp_|Ez-h&oPtovVG1t|9ypB9cfbozmorDzWXc61^%VYN`C_`O&y9~X?IfXnUh+f{i5{T4o7YIi?8qVP??SH6hI)m{JhVFq!NFHSfiVRRH`E;jlSKt1g1fxqqGb3j*zI~E;hCuE$3t_L8`AfOLz@)E+I%m2>M z?n3^cy-f~gZH)EfBy+RDgNQS-r}qc94e8)A*RXq`6Dy_8`HplPM%>|--k&_jf9_*+ zQqAa&_2LA)ViTYn3VwU=ax&>a=vjk{(hf;{0>~A5y^Rx&Vn39%kuwSJZ{T()q|RpD ziSR?~SyO;_su4cRX~)inZ!Pqac471@Va*{-c*WR56h8ua1`;l^1SSF#7|+tCrpZge zkJsS-<#IKZ}1pgDv zMFn3b@6s1fvfdd&S7GLOH#-J<0zPS9tj7k0qF6i@`t08b{(q+S2XO3HdF6 zpD4O;8~A@L?J0Wpql*CfAp9-!|LiYFzJfl8UmCacW29?# z_3xA)`s3k?&ZI2HL@$&}ANf8&yaI%u8r;^2vj;Q9I!S^&5vJdgknu?q^yt!0{&9&f z@B270*~haT`HOyU5MBAvM_BX?A6N1X_$d4PV#GOw4kIVPm%Qvy&&9+)a=2Y7H@lE$ zb_FOiDf)*=`fq9C5TlMr;4cQh2>x8sD9Zlg6mbdA?}<_-5-rFK{|M{Z3Cgyw5EY|if67Pl zEW(}zFUh;K-N~ovUO@OE z4{u623DTFd$WH1H>H_rOKo=mtxx_a*hc;t0{(Y2h(!$r1^1)h{OL$T08b4tqz(tr# z2(y16)I=E2h4C97j|`+`V0-){kDu}oANwKr+GiE_X^ zFK-Aj2aFt~b(Hw0fe>-zrcKHX`2xS8BZ%vz?VQLS@Rc-1pJ_>V%DE4E-Vkzm1^;sc;14g8dq6yXK7gI5p2 z-M-KXU(8w@euCg*=r2N=1QtLeb>eu+CVORrgyW-~N^`| zEc6NF_WwzpPCVp`kWZoq5FaTgxJAjMVHsOUxke{G@mrQOc=x~MZ4+J7AFZmdxCADnFWdw4JyNqt8{!clj0AC!kN3)) zAnD>GEnMYPkg&Ya$d51P5j9%lPV3HmY!VS}Q2acz2JD0SfEX({xYzM~6^N|;Ptbw-dKICGb zN4TEy1YH`CIUmWNp)fkV2RTG1ls(xGlG>Xvo}(^)UdE5Wo1`yk8#;x!1NIBCcQny~ z@dV){hmdCuXiL9L=baSvQOaK&J*26d;`~oyCb0(zGcW^r8_@%1O6FJCr=7q|15qF* z|G^~>Cf=LL#}0F{sZh8_kKy^-;0y~enS@&J|4a?6Rv+5{o5<__&-Ve-r5)XtaW_wKFZd; z^gDqt|C5+e%oq>=T)-#rc{|0{e>n9WkSIfMfc?Vb7*`!bzhVYu>uBa5FdZOThJEL) z=Lg~^(&iUH|2TbZ$uHe0Bi(em``ObJy;a9Y@=KC2OoTqOe1TiAFC*MS<~`=nuJVPT z4FK+^v{g@&<|{Nluq}CM83ZSjF9}P&IDPi$?>a6i#)k6w&LW@xpmFh2rS8Z7G}4|j z@9RNZcN+BwJcEa88T`oOZbRR_R)-^VFTM%-zn^$GW{xgR_)=DqlsoU2rff>NaKD8o zX&Bf--wj?eR^uqFBK0pP+}{j;=d54Cw5Q+D9!;b@W^Y&0%qIy?Uq{0D9KE3T0Q`N# zD}vpJj4|4=Ai9??HIup)ovDwx&)}b&xuMUJOhQ9Ae&XvVeEY?gVMh=4^W!)14CR&m zZt<50b0_+^-|KV{nh0r_j1caL$a)L$Izh*Y&axAc^go%hLOm2dJR64My~faCaW@io z%60UoEMK7sGY*Yg9b)%O9^;GB7qDOIAKH(d-;JUx=Y7)S8+3CTw9I*giBlT>@})PE zuFI(JP5SwaT;U$b@D=H_nR|hqSx%XH!}kJdNShNAJ=1>;NS-|gewgybwqp!Vz77#?KxoL1 zK|nsKXViH?(mlNi+$ZqbOS?r)-I3s&LlS=pqoY_YGI3VSG4)W;$R601aEO11ydK@C zd4wr50m^_1i*%7MNLVTIT%sNI<>}-(^b$wDa2amIDN4SG(sz$DMoo&HG8{UEbfUgY zQ4Zs?NCVO&zCy8c0@N2VDWC9BANTA!|P{qyK%6#3BP zfAJfo9`Q^0LT_pEe3&`kkV#+J*Ph-)8ShM8-j#enT^eVvYW!<-EAcV93*AlsnQ>PH z`2#7!p&pY@%2Fx~?H!CEkllTibTeVg8OX>u+$G;VtLwld`b?ZDbvW$@{+w~tz0}$E zi!4M=(kFBkG?dHKGV&sOdE?J&nh-b_y~Ip=5+RTIiC5@sbWA(~r!((B90R6aiXlsa zGzt^11ZgN=3|S&CQ08XCe=0Ik??iEzxQD23(~PAgjbb~J5Ad6kbB!CBa~C_{00AHb zBybZQ_eN||{ySr1z0wEv__<;Zr z0pdUcNCHtH2BZKV`;T3~FZ+7{{a4@Lvi~}r*T?%i5%VOpNmY$<`Ws=7Zl#4hd>yaqJPph;hq%wZ=m@OxsWk} z%&9Fv2jT~$hmm&Bq}#*e15Cnop-mu1690*Q$X(iRA{~j(xn#a@Bx!=(D`Tl z?FamSLYUOKY2p-smwzt(GvrGmlS`iVL7Tb@nQ@c4HGClD{s!ctE%YOw^SCY#af$bp z#Cs}Xu=XEB7m?Fh^CFyNFJwV?epws-3fWB^AG2i%S$)LaL7q7J3BfBCM_@>7CDnV&Rl33ok*J&|0gosjNIrTejRecGlb4!Kw>E}ts$+@YvS*e zJH||jhlx8n3tfSqFEG(Tlr(V(KgE1nOwPI>cbqwDks(ePNp$MmgkSWKT!5}5AHY8v zrVU?B{0TdFC^+=)Bi*F!2=t^6M}9~W2mh6n^IMUXJQCZ;_+NC7oGIcFd;$I`{y(O5 znxG5^NQb!Sg?J~>QyBRY(EG>_sYeNmv`KCz?Z^v0`; z4S#?;|D*4thj-}@A3?rBE|>I?wjx1Zi|#o@slw8lJ58k;}*g#%();R@r#gu zBIwy4m--tw@=)p_%NrgLY;k0bK_8X84t;<$3lK*idXc(1GLkeU z{tokO0p{eBq_dBCL>Ic~;lx?;J>klHZyY~K(GT+Y(M6K{oxYxa&kA@Wds@mPWhq4Z z2VcfN`AXJZgOn|oI3>v6qK`1?leqf-@O2l^QCyG1hQ~HLJ3iY||FyJ8DHJX479ePV z;1WU-LXZ$3xVyW%7k4P`?q1y8DaDI??;=6k|Ce)~lbt&=*YBM>v)K*LLs!xdX}?;1 z=o{&HhBuS+*tdYP=O?Yex@|vW{v34`sFMJJGQ`s+p>O+LN9O&cwD~>SGy~_19SLs@<6==*0UY&a~%1cNL}YI!}TT5hRpQ?DaSd= z87OZ&ZI$#m{f+t(7!v~n>5?e&tdcs=DN8Cy2^9vT!4$N^K zSJ5V;=m*q8{*m;BzWlzy@yrYkZ<9No?IqGOZ5^!t=`kvE=Yangb@hZpf zAfJIUlZQY%t!KX2Uxo7BVjt%P!UAQ@u!!-vfjSsQ{EQ>#74^H9`q@MMGPecVO`zYz zQ=Wn3V?A}6pR^s0twr1duR9VpFwkDtxR<3&`3F%h#(q4nLwWCIKl5n*^Q6g`5B-zB zZ`{r2Ix3T&C8T%uO??IChl#Y+e$pDq?+lEu47B07%apGj_Y!+34|79kU@rTeHUDGc z$jiPwut7W=JOD)DM*T1!Bjy}UTY@*f1W;P^4l0coeO;5&U5n1{(%Z% zY)^ba+WZdn^7<8drC(!^6}i@3F-3p9!bAo z-~YH@PaBwS8dh^WTo}YU<2cHukaSgP% z&gA7e<3Ef+eg}SPUFG`3dv5#reJ?*_kk_GDfOA(kp5N>5yeVJc_>Qdq^YeV`^*^W# z1pLQOhBL$wNgZk)%FevcXNWVfy`JrXfo*;#?Zh*NF7zdx@xkx>{2rK}bpjS}U$;L6 zb0p4btTox^6yP|X351Sk{=LTgDfG+N|N+^K*t0Tobq#szu)pj18w4+eKKr=Avz>tB&032d-sFLkKtMSDd^5 z8~OwFkzwzfV_wf&MRnmE=bU3r-mw_Z1vp;d*mE2w+@#EG@8{lqBJ25h(hy2fH>8=A zb+c1~xHvza?ffQl1!bwl?|41~=x~3YlyaZrI-DU;Hym@W7yX$rF9f!2;-r3(@qJaf zP!@I327NFd^RXU>a29v*5A=er@I6u^FUlbTacGT!n1(gjkDGXfFAKRs8t{MOglcGn zP8f=*Sb;q_hX+s#lMd3O7$VUQ!!Qp!Z~;=VD|~|tD2i%mh>jS9$ykCdID#v946TSO ze2tXIjH0NF7_`73Ovf4=#&x_xlA^AV9C=U{bY)vW zUPGsgM<=(EzQ`4TCTm^RN#4a0=J(2x=MH6seINA*hB1XotQSjX79@ z{Wyc$cmX4ndO-#hKp5(x6?$VBreOtk<2bJ4F}!7|SA35&$b(SSMgn?Z2284OR*lia0KV@0BU(x_zoFR5amz@jnE6fV;K(NGM>O6MmyqX z{DwlPh*-2hXAHnt%)}yW#2%c&-|$voEZ}>jK>?IQ3|gQs#$qN`VLvY5CZ54lk$m7M zWI|39L3ub_iJs}Nppd_lG9$KLXCgKll!%6E63LZnPPTEL? zdNj&rz;$B@G57x)HgkQGHy360Sm!!ZNPumy*49WS8P zqJJYZ@}UGOA_h&-4qY)2BQPDyunk9X75DHQW(4(%ACVThQ5IDYgJ$S}-WY~ySd4Yp ziaj`v^LPxcHsc51;3uRY^z+pf`qNGUj0=cHs>(nNbQ+Xp4Rr zgPGWfeK>(jxQFL(qv&(Uj&f*#?wEv?ID*?SqRB6EpgP)PBo^Ty{(@V_6*8g%nqw4J z;sl=J>lo$>)IuAK!7}W{B|L#sm$INRBG3Wjum%Tk6`oky1Nl%2RnZvzFb#{b9>;JE zLOt?^G{}wuD1+)~fR^Zo=~#n(IFH+S47)ycge)k5>Zpg#7=#I!k1aTb+js#w07-#St zMkB6SNQ=U#jwa}fDOicaID=bw3ST_!j$9~%2sA}+jK@4|#Sz@V3%HG4AsK!{QB*@y z48$~S#2Gw;*2EQ(A}flaCR$@4=3pHT;WAzzNmJSpMNl0r(I2z09;a{%astO974o4n z>Z2Oh1rUbj=#ObwiPLz2uUpWbsDQ@k zjVV}x{Wygicm=y9^?=MMhKh(q7fit#oW>m}t++lRC9<5qzzwFBC*H zx?vL5<20Va--fi25k*lQ3FwW9SdJYygS+syWlls&WJNJlMnkkfR}8~6ti*m?#dCbt zjtxljxhPz&*Bj{%s3g;;~VIE`Bn+LK>=k4z|rYG{N`7>o&+g~iy6L%5E=Aa)?{ z$b^C@huUa~9vFkkSb(iKf{VC`hmbnbPmm1RQ3BzJM+XeRR4l_ToWylJfz^q5A3x(a zP1VcH=y*;|ZkB^b@2+Rs^FoYM>4pqb+)4H0ELrcHtCm;T5bdte24% zIZ+0cQ5*Hq8AC7|E3q3#a28kb2%fIYZAgpUD36+Gh}P(XDOiG?xPZSQcVk>4J@TU} z8lwlsVFeE0EbibrwC=3ukOqZO5e?BDBQX<8un~uF1~(z}pskSx1yBj~&<=w!32Sfw zXK)Ko;q6KNAQM6mffg8m-?0`4aUIX`Z7=S}5QfGWfXSGTow$If@b~80h61RJc=W(5 zti~Rk!!109+=q1;enA0LMniPQ5X{4F9K}6&`!X*eIdY&hB9VY@7>h+XiR+O1(Vy@m zvY;SBQ3LhR5|gkMH}C>xe^*F>oG63ZXoR*HfJs<_ZMcUd1IP<%qc^5t1-9WhZbBT$ zyntlLjC`nwNHjqojKFlP#cmwK6+DDzkSlzFl*oc2sEo$wicwgE?Kq3aa0WAnBOj`v zA-ZD}=3q0<;vU2y)Du!6JF1`+dSMh6<1p^S9Ln_)c@c&v^u$Cg!zP@?L->YqJw_Ik zL^#@@J0@Z=w&4`+!#kY5hKwkNT4;qKn1jtYgJ<}11ak~3p*i|vI@aMVo;3(7eSMmn~@PkQ62Ts4P&qfdvG2Pp-tg>ikv8o z7<9r=OvgH$!~^)JGUuZxYN0uLViFc%2hQLDJSdN7v_W5t$8zk$b-ci5v$#)22~OeK93H~EkTyqVlt2VpqYuVm5jNvb+`==Mi^w~EK@OBg9dyAUjK>_T z#y*_EZM?vji)jlKLKtGu56nj|*o8BA2ze#_8%dECIZ+Z}sDZj@iuUM*5txrHIE5>C0PiaD zgw)7|lBkK+7>vnSjIFqUXRudOpU8?_D2b}5i#F(vff$FG*np$B18EIwI{b`m2u2uU z&=S2d5lgTGCvg+cVXvjU$b`ZOLo}MB8-`&fR$(vB;tpQIS;x7^h#bg+q6kGz#G)Zu zpdui#0fm^SBFX6LUF!M0(^#NmNEH)JJ=C$7n3X zYHY_LoW%`1g0z|YMSO=;$c#|Lpc95+A-3ZRlr6M13Zo)o(F(mW3Nx`52XGk=A#WwW zNP~Q+h!}LlP|U|p+<>x;`4`EM1;MC@cyz-!%*PI#!83fZoxX>1sEwxRjtN+ZT{w+9 z5O#1penuXYMI@S|7e-?a)?hbI;Vy)olmRJ`8=;6sYxKh;EX6jQz+>3E7>CG*>PWy4 zEW)370Pk+*cw|8-)J97TzyvJBMjXXeJb|%?_CgxuLkZMCJi1~CW?&tT;ttfk^cQ4D zanwW{+F=MLV;T12GG4;o$2rJ^GKfJN^ubuH#u?nfOPKpP9vM&wl~5lo(Hmp20^4x{ zx9|_F1I$0jghHr2pnf^&EV|55I%krNfs0G-hnqcIm7a2$6a9iz^W z2}KZt7U+RVSclWN1Nk_|A`^a0S8(VP(@=4Yy z$b=$@LU+u-8vKd7&`&Y$kPqb$i|!bQCD@0HcmVk{^9NEP7s{YETA({dV=gw}5U$__ z%roQ{!3aY=v_>CHz#rI*W4MIB;XTWG8flOPr4Wtw7=)>qkF_|At9SwJ9QBFR$c6H# zi;ftK-?0YU@h7h1ANbERzVI6gpdw<>4g)a_%dic{a1+mAU0{uZoCrk}nxhwHU<=OS zIs6wHN63!~sE4-bi*Z<@j{%s0tvH7V&@Qts!LJBL6(pb=CSftw zVjs@p4qm~$LOmff3ZgWspaD8!ES6yp&fz-#hJ2O#5u`&tltpc{M?Z|jJZ#1ZT*Y(v zt}z!O2g)J}P0$eoF%b)~9jEa(pG(>asz!)sTMjXWzJi<$ucevL;c2q_a48lC@ z!Ua5rahI`)5~zn>n2Z(Jj}y3xe_-FE{g4GEQ62Ts9z8G_v+)Nu;0*qT`4{(R$b@_d zMGZ7Ydvrz*48~Z@#xktME*!;W+`?0M?$bUxgrF)Kp)>knJQiUGPT(%2XXFjp zPztrs0zEMiE3g9>@B}~n!#s;hXpDZCfz7y#7fAA)c^v6b1eMVctYcmnekc|i_@ARH|*6tl1ir||$j z!7uy|Sx^Es(HLDY26M0;yKxS8@C;tjFZl5ja-bAyp&5E%H0EOy4&xN=K$86YpH@Hr z@7OQoMR`<1WAwmq%)xpb#5FvIF8hV=@hb|VGU}rvhGRB%<2)WgSNy_{$cjp6fKKR% z;h2PF*oworfcp?Ue!<4qNQSg1fU>BC#^{B~ScyZpfXC2-{K5~&jFJdPBXq%FOvXZN z#vxq7Q)phwhKwkVs%VAYn1~hFi_3TfOQp?_0R>SR4bcHZFcZtM1E+8k&*1Y>F8qRQ zD1wTpi*^`-1=xcdcmY?Vtq_cwh({NU#WL)~N!*60)3*2-IT3=2h(ZhW#AwXNCLG6I z2!>zy0?CjK!Ki@Rh(~vf$9!zVSv<#Qre8>fd?<&SXo%M6g)vx${kVo#_|l>eAty?r zD(ayfMq?Rv;tZa_Z*x5IqAVJs8zx{LR^tF}!RPq-oCocQf+&x=XoX%FkJUJVCoo+4 zC~~3#>Y^=%VF5PdES@2WpZY;glt2|ULVFCxTx`b$Jcs@neF|xi10_%map;P{n1gM& z3h8sd@GVj!JIbII;?V=c@jL#&9-P77@FejI-yt(fAR28k5Yw?7yKoA3AbvqQ$bvG6 zK^Kh2Vr;^GT*X89zT|jhMkz$26GmY!R$wcR;3}RX$yfAo6hdXxK}+<)C@jWyoWoy` zzxE4XAu~eJ7=1AfOR*JKpnOAr!1qXlf~bh*7=^_+i2E?U^$RIc09DZ%L$C;Ya2w8d zejz!sp&}Zg7bamPj^GZw|6`s-E>uJudSEIx;0UhaC9Lm>6FE>G4bc{ZF&~?89FJlB zK%YWxlt4|yp$kT0E;iyQuHXgqq>LdXM?r+64Mt%Bw&5b=ADIi03zg6qy)hBXa2WTX z{lpkXVML)L#$q*2;33>(j42dCH8ep748Q~|#U7l+UA%ymoOZ&m$cs?Kpf&nnC}v?f zw&O5P<2H;Gj7y|JAyh&Pnqv@VV+SrlPRW=@MifOD>Y^=%VFp%UFV5g8?4Riy$c>Vy zhUOTI=~#oKIE%Y@g)dW)ALK<*R6%|8z*KC&8N5Q0U&s$ak$^!Mi&9H)4pcxRbi+if zz(L%CmVr7!Zd5@d^u;V}#d$o2o{{+p>5(6yh(IHBL~jhobo_zsIE?eSix;pmF^3`* zGNTk~p%uDeD5hg6w&5_&<1U^-|Bd+zDUb<8Pzf<;iryHHh1iHcaTh_ESq~sJvZEMk zqA_}7BIaT(4&W?q;}yQj!W@e{2ty=VU=XHZIricTp25w^ngtn=7bQ^(@#ugdn1)r@ zkMp<(IUD^MKO#NyAQTa3f*u%ynOKG0IE~wovy)GxM}Cw;ELx%u#$g^d;Rvqa5qvqQ z7o#aL}nC3 zNz_0ibi+t2!490jJ*c@^J0Tfzp&aU=J0@X1R^uSf;{p76I3DSc2PIGy4bcJpFab-k z6DM&GN?yh=k|P_6pbF}v89HGQreYNi;1q7+DLnaTOC(1&6h$?}p&hzo7^Y!4w%{mk z;0ZkWnFo;y*---FXoyZ2fC-p`wb+NVxQ7?e3UEG>Atyo+gZ3DPIoN~~xQ18wtRVSC zW)wy!BGC-JFd7T71;=n5FYrYn?j4XHWf6`>=!TJ4h;2BG%XosI!py};i@Yd@ShPc5 z{En5_k8602&w{zmA`^OJ$i4asm1e%~LMq@5^;23V>B|a~~`T;pn2G!9L zLogc~aRyJ}mZUyV3>6WHR_KW_Sb?25f=jp$u@q?_B{HK3s-rPFV+3Yn8Ft|eZbK-| z7{+%tRSgVorDGq?k(4C4^Vkrug865(io_85c-n1i+0hqJhkpiuIS zRLF`VD353~M|X_CR4l|=?8FJ&z)O5pmg@)dp$sCCfbJN9Sy+YbIEia`0e?BljTFd) zoG6SEsDk?FfDxFA1z3TtIDiwlfroeny*zyjDUb#EQ4*CAiFmZdNG!p29LHTeM^G4b zfp3uv>5vuqQ3_$Gg&4%4H9DggMqx5$VJX&PD-PotoSGKFzC-naA4{9fPYYt)BBHS5)*i}G07Nb zd?AeHOZbQTHhFjJy84yyHUGXnje5p6$Q!I?(EE5B8(W=kgp}5|e609?!uP@i^S=3m zkW~0lxUN6ff72iP4rzV$!p0@vBR#KHQ~O2#!nkRM8~Kd?IZL#>{xaGzZJ@Wf`jc== zNhY-R-O$tM8_ndx4duF$Lb#~KduQq6^e?o}jhjkJ;g$D+wpG2RXZs)O6C@Ga9LQ$cZ5F!-kdEOZR zOe3?9!~V-EC6souJJa0Kg3nt<5Y14btWZv<;w>+X^_BNl@{U$Vsb#$tykSBGVY^&W zs3cSl{2KyqRpE$PO{mUu!Ehl$h~zoQO)Ehpo)ukHW& zdi(nL8t^2pr`ggvEcdl^bC0Z=hvahR3ah`fS6;6+6gH}HN}RAk9b`T<&zdXEI%YNV zGt0F2eoJeaHOWk27Pcyzh0R0eNwc-t#|%>%35}F^o=e^~VwD)Bu2N5VU_Uob+D(L} zLQSWc&_cK_H|KfZ1Yb-3*=}p0jZn~TD_oP?2@RF@LI>fp+)?NxbmpmMJL`XDfAd#M zGTT_^l&(U8P((p-6M!kp7Q|Kie(dy}agzKKZe8o#GUjwDTFhEFels5Y5 zxwV19AfdkUmo`xM>IwP~;U{INa77*_xaL1*Gb_9Gy_HrQE{qUH3ZsP4eBHze-xy(% zZ>%s*7%xl^GFfMpiNYjdvT#+NtN)=)5jIIvh0W45;df!W@VhaCZzf#j%oJuAvyA2D zIR9DsoP1h7BcGDb%O~Y&`X0}8ZMVnp`}~?;_d9;qZ~84BQnj%=+Jo&3?r3|e-P3Mj zZ?_}tiS`_Oq210u(7)M^@elAf^|$o*^AGcP^SAK#^3SrD+O6!?_Bwlp{hNQMJ;Wa3 zpJ{isGrJq?9dsBka}o z5_^+f*Pdigw^!N&>@D^@r>VWdUT#O(YwSLDbGxNo&mL*_wd>on?P5w%rG?T`X{EGQ z!tJ~24Rw~#%9zdb>A6B{qm9wd=wLK6IvR1tJi+jq-j+tZ(cEZaj56994UGh&h4GiF z8d6YZT?}gMZ{#oI6n2I<`P}sGQ|Gpm*O|{ZHtup$`G59*?oZ?yTje??sFFiThxWZBB6oGSJfyd^(Deh`I_e^e`^1){xAG#{ptL__*3{l z^MB+2pMR;))YsS-?`z__CFeC9+tif$3L(}fDvi{Y!YaOmaka2U zSSzd(3fPj8-2b)zTmO%K-MhzatTs{C3)77aJmuXe#QEy`8u{+XU+J5K1KMTJX8vzT zQ}wvEMR;y+6~6Ruv$k71tew^_Ymc?p+Gp*z4p^$}lXcmU_o>@eQ?_JVcI54fD=#8*rgyhc%Ny;j>aFJ8BQ(}mxqF3u!b9&~t+Kku z`4N5bix9{3&eq zMtR42j|#_x<9tiQ31OvsQaB}i?OagLs;AX6>NwvywXW}!nnQb_9#Idg$JEruEbX{j z+c~K&v<|9=)LHIPHIH^eO=^6j_w_e6b6H=Q4NZ@A%KXmy#v1OQD3nL?X4_kVf|ZU zs&&kiwcX|vEvYrloMt_BQ<(#;8s=&9k@=-H!pvo+u#A?n7Wm5Rg|xZ8Ex!4_ zqrNUyZ)>G*xv#vnNn59%^F?UKe9L@0d^ych)^6W4pVwHWN!lyzXWgey^{w*N)DQU< z`j+}4jjP%c-!@-XCykTJedy$Hin(i@KYY9G{ALkjmT!obUAynArET!d^Znr8V;}Ub zaK6-bXy2GYW(F-ri?XWf(Rv;$#QMwkM7v|I*GK6kwY09~=F-~g#q{k?QfISohHr{* zsQJ0I*SFs1F`H^R_2a%3z5~9+zIoPhbE9vU@30=F)pB+@jg0wvOMQyI##hDI=Ue2f zt?klw+1q{D-7&l^9i`XR;?3pOMg4{^n|apvTpQ@NbEg^Em0Rv<;f!!!Jz`!gb+>5N)6G-4yQ0w}jimd3AvGo0U|b?7Jh}748XjjlYD? zJj3O&>fgd~{?SYy<$>@}cqBX)p70eOU5(C07vr}1RA{0-6aEpN^OZ#}gz9b%yb6cx?!EL zYx;KTm+YL%Rf}5`*RgXe|5!=wZhYpZcMP$iv(qs}OSDBtbj3)`FP73j6BXUC7b@RrBeVv3u$IkEZ7X(0 zyNWy3S?=n#Y(KX?7n6vMgMRUZxoJEIIoDyOXb zg|pag=3IB?I~AN*%Q0tLWz8R*c205kE9ZN6xI4)?>uhtfISbvgj_MwAiaTG3-JHMV zy5?5-OEIl7)cM-|*-GZNaeBDvltNBH=PR+ITh1w?_V;Et|MJF}J*|S)OtYHP%uVN1 zbZWRa-2}J3d&3QPhq?3IK2Az!vEy^6JCoe0?qDaxJ>|@CZaQC!--xB0DehD!&Kcn( zalRFEstdiXOiP{Z{_IS1zH`14|0gb;depowd$e7p#lcpYl=p zn0#FRMNBR3HqwY2jbFvIVmdLsxX;KSt}vz;8O4tNOyY0icq6lzMa(K@6SIqbtQ=xa zF_)NI%p>L%^NIPzZoYzIA#tv}RxYg+7K6niVo|Y}xK94cA0lpZFDfB+DZ7MS#4awD z5KD@G8TXC5#y!L97SX;o9{3I#ON@2O-`ZMbl$*&}ql|Y)IzMWwl`MK;x1;m9+0aTb zH^^tTznzuZQDd{bQP#ChawfO5JJac+Jy2kTd~uk|0a=f0Wxm&Q}Qw^rULYy7U~)7EH?kzViU>+I|5>*VX=D<_s0!^Hb? z1+k)7NvteZ5&OA5Gl@CO9BYg=?x?raYwA69fOcEGs$NuYs+ZL(YG38P)=#M_hHBNs z2Htw!>SBHG8oh>C*Bk4tDTa%~oFr~n_l)O=e#%o)DWkO3|Ik8}vPwCnyi!Y??A&m+ zIJLz{F-p87M~f5P#!ekEMyxBwiuJ_$Vkz(MP6M%_*kAcV|Ht>lmqf3u=P@+H(JE+L z^t+m3NbWT4vhRXkT}xx6)+*^)jT(9}qnTdAxT)Rq{iM&)QtNf}v0AtuY829!>$weG zAEsT`G(A`^u6Ybat88R9?r6vLsrqU+)QZ`R*+EKlio=ab>Wz>=wPkrh1jQV&zt3Ft3q*v5ceW+ed^K0GpE!tnY zsr{_=(K8vL`c=KIUQrvSm(xeF&7v=rJSUpc$HUEe=PAFCHKi&=e*K8EO-V>C4i`u}u~x;_29&1d#L zd!nzOao8PW6!I7FA99bll1JiuzB)MhR9WBaoozf9Ux;ly>$O&%q@ES}_nsD>zkSU- zabhDeUTiEj5u1t$Vl%P1*g|Y6wh~*5d$cZk8?mj}PHZoB5c}I5#ZKZnZ)dT#mEQW% z8lZF$9|k=QI_d2yb`uxL%e~#jw%$c%53#4%OPp)>7W;@lt9`{XW+!W{IZ){*J`4IQ zXeS@#>@N-w=gCRcf#UDp8P*_iusB4lZ4c#v&oD8wI$X?Y)wI5{1}P)NCqW)>g8ENT zNAE~+l(Yi#ycuT99Xqu6QiZJ>Br!QSK?9dv1BM>3&Zi z&GBT_`dJT@hspx$Z{^cG}lNE296SJXd_4>gq)8 zFXg`SrRTBoN)bGzwKm!c?WK~;Sfu@9+zEQlN5CYn=zZX%_VjZy_+@WV?Qea$_>(b1 zoGG@{W{I=KpN%=rjMbvYoo;nhGAR?~u~sK#f?Q9%<7D>MRXe&1oLXvf&occdPZG~= z?XEJ>+2{Q1IjEG<4k!mb^Ys0mKRr3M!yenrZ=En3SXE8aoMc@$ZWz~$o5m&MmQh(5 zsqPc^i@Vhb-vRZ27_S@@oBPJ89rZ)vVR5EbMcJbs5&smAiWlT#;&JhWcv3tio)*uD zpDUj!u98IYE9b;2`gw7I*1_M&AMd{)=JMzCXZ1fa4#@lElHOJFMe&jtZDsQ+ibu)n zt*TrWuZWGjJCvdRXU1PHoj_5Qr-o12sSNUKimn*SW5ZOgir2*J;tlbpcuTx3%1RdR zVe^i7SG*@~)BY0gi%*P~Zm?a{E@T(C3){u)lJ?)?1M#8wNc>xVEG{*#n(3_TX0X-4 z8g7=cmRJ+5G1f@yj2UJ7L~e??vG^PXjHJXRBwkXNxDjXNPB-XS*k}md^95 z+s*CcrgmRB1DrW-24}o8!_DV>;~aI0IuY&}r^<=xiqGiRy$iyP@E zZhN<~bJ=O?)^Kw2g&wn=Yfb|vqZ8`XbN4vkI(?lb?s;dWQ^;-L#yd@&aObMi#I52y zae6q*oL`&@?p!y{t>b2Ok2ovbB5oeHv-5}3$!+LTOjJKdRL>a0KQyK-?`c7@QGC~=t98pI5M=7I~hCw%d z?esCqSS2o~u65NnP8qLEP?`iyRE(fWieX&$p7WgbOjf2SQ8SwQ?jH8e?^}yInqyVF4vX((r41=QWEKy_o7qV|IByL z`9j*Q>{8OXOSRASz0PfJO23q{`O|4%Nu}+trEjEfrSGKwN#9F9NcFU&(vQ+lQZgyI zltM}={Vb)Devwj3X{2AJv{E`Ly_7-9C}onqP=Av$OIf6>QWHI!lwHap<&;`^k9u2p zb4j_SJW^gMpOjxJAQhAfNrk0gsfhH4o6{&N6_Y}w_P(~h;!+7|kgudP&{s+-EtQc* zSfNr`Np_oS<)rdbg7b@7L~ZRo;mxjY@lNpi)!p99-U3FLRM4m(O;abTQ`8x1Wp73A zD)VU?VF&ES0|}c)i7@vZ)GX3UPY=ZO*N`Xq2B6J4XLISE@ko8k|HF_ zs4YcGb^K9Mv{Xlmk?KmZQi8XvR!>T=-SO3zzSkQ_4W$L%b?ydtfw|tDVnzGMr~`Zt zk`HB2gE}?8PT3hS(_WtR8>3!k7pYx*nr!_4w#5wp5E)?dM#WBqP!HhXG6 zs@2q%(${KVZ)>T%Kg>VCJz`Y$SMi7YtNMre+DMZ6lUh-2EA{iWliEuiq$uAAd8FJ? ziq@+6BYkD;PEu#7i_}%>CUuv_c`tZ-NIj)qQg5k`G|k&r>L>M=21wQY1EoPyJ^x^7 zh%{6hCT(;NYd@J|e2cxqr8V*h>9W?tx@*Rosm<mKbVIhmYXP9dk1pXh=3chgg@aHPTwCpwiSzqTSaQ=;!p}`fa_aUPpVWXErh#qntEfW7O9$&;A`P) zq~Dc;Qq!Qx#vv(>Czt22bVO?By`uC|rz?9s1MN4YSzzp78X**zzvuGV04sCC1Ib#UdYJxHlk^_?4CRz`S}O0H_MDN<`!eabefzXBMscH(cEvYR@2Bn3Q)(}@?0Q2j zz1rIIgQvMi^>{p{$Mt;c`Ob4zIwzf%E=U)pOVVZOigZ=FCS8|qNX^yuYBJBGpudCe z2R#njuN?3k@mw^n8XmQ$udnZ>)K%@K-jZ%hcci=0J!yfwOpfvO@#paW!-amfH?1e5 zC&KCNgg9l~|G81_bLUT|y_4FBaoaj~odeEs&tKAgsh0h>w8~phZEQV|9!ig-$I=t& zsT5{Elm3yOOE09C(kqtEqAba>tjHcYNM3DivesK`tqs;jYn`>y+Nz{5mMiJx^l}Dy zxUDOd?sHC=aKIz^nD`buSk(t>}ulw6;r*VnQcuk`%JXT}nJyM9`q zuN0CC%SGLjo?v;I_K)6M->ePQzSkCN%eBHxIHgI)yP z3)-jb^BnSAF)kY$z1@91eC6csY8SP<941$gE6SDRh4KnH+Si*uw^-_3@6E6N>dD~o zJD)pCozI-)Zjd|HUGFqxgp*+?9t9eX0t{hf2DF@}O)*fY}5+^s3}`~Z zVa?)NG>M2$+u4Wq;3o5aTbJHgk@@=45b%^HSBG>!aMHYoUih5cX0evrFTp>NCgK}izB z5;L3_@;*~#%9IQ)P&%=uf=gE@6|OL91SQ7*L0Dqp zJ_t)_6kf3On+S^({3I(ygG-Z>k|9-t3x|c23J#Bms`uu|Pj`IKq@V73UmKt9d6(%= z!xMA<>5dOt_tRa8CHs#Z;Y}0h7BL^?{9jG=_Pn>@pJeTAXkx}f3S{|L1n4#+TIiyWk8cCsMeug>eH4Ylf)j^->B7N9 z5<7dD5BDV2%15DzRr68k2Wfv8MPd#<4E*nWB-T!7p|HvyRK@Gfz{C?7-6SErPJ@UT zro=$06LX6fU#Exv$B7B8;@@_)^1)>*1eY!p{L#fE zG4Nev<>_7@UTxkM;&p+TwW8iM;76g64Wc9B-i^AC_9PCpx1ovM^4)f$crJ*69`QCH zDk34`uy>u}eMn+Gg?)O3`}nfB~- z9hDH<@a-rFs}dUg{-W`E>w|m*b|!Y(*E<9KidR?E1 z3zl~QA2e=aP{a7}Kuw3g9b50h-&gRvki=ZQjs1OY-UfWo;_uE$tiuliKFMm4?EkJ0 z2E^OI_lYJ3C8k?3qeNz{D16?$`s4$xY3&~6WDk++eC3M()4X*Ctlp&bbDftBi6U$ zEitV5Z*O7=bn8a7>qSStJv%m2)cYg?8}E`Jn+?NB^UZ1Rwmvxa?fy?r_#k6%&UrVF zzuscP{5Z?|AXN@YtmxNAd~(9aM}J(NKpy{9s5s`*K;M~Awcx1xc>%;3Kn#Fw*Mf2z;v31^F@fy~CGt9yx6EA{^ zLA2bv3*(zc3UA6R_9n4Flpl5b_=qM=6Zi2lJgV8dH8ELk7@H8=Jo-z5A|;osG0g|K2}%7uhg2@feUbYES`@e8IEkhi$hEdpF>T6a*Xfs_UiV5kcQ)HZDc7%ECAhPoZK zlbL3^@`q+kX07~@KjwLU`+J|Gyfgof*1CGm@7cfo{k_lL`&eRSmVqmF=}ljIX7Wo%dLLbszH3>J@URuLS z9sQU?Vk|C9T|%EF;!I%#=Vsd7`Q^1mroYJ`^kXw^8Dfe>HsR)>jT{$&rAU>mc6WLD z3I^U(AseKuPqe32RDO|UXTfQKv86f!bdxg}j2m)(8U5#iN-|pNEU!3!B)nKRJ8#t$ zgCfvfRtXC`bmG#NxcFt%y7Dj&5A}$MzIi#waiJ}uSLp&$&e+$oO&qD(un%kxy*e&V z^O=))E3{r28h^n`UVWq{v#&F?pfZ^R`u8RF;0zXJDV$cCQ~6GVxdolIBB)g2<5l#F zm)7R26)%5S6BW;j;+~r7aqa4**%hfnzRWtfI;&C?%bBQ<%2Xbe&Cas&UV2mIa|bhc zn~a^c?z~t+Kcv#%`rq{%sICk_81rtB4qYiMtfk^gx2=-_4<-@1jJGzmb)f4PPP7lo zJT9bcI83Rvg;Ypa<0$%Nma6^x4sK!?G&9 zyo7EU0nBrpKL<227p*piFw8GcUwP~itkgOcBX)J3C8WK8Lh6|;bXb@IEUFHjmZC=+FTd1} zHFqq=*yoj%{?76u%9A$46vTf2#MDF-ra78k-tV)zNtyUkqc^{o+cIj-;@p7m}n6C3Hq!S}@W2HSy~Ca}$zX zGWtd^EMYRu5+=JWq4UhjC@+kNFSi%j`$_!9MuuAAlX2J*#$iinhpns~zW9Y_Phc3h z!m&L^^q5OZ%@W?u_AYk5$WVl&udd4wC$4WUuSnSNDyRPvn(%XIV3*7j9ykI4x73fp zr+z}usGqKO7Sxk8AQ*v(Q!>OOuf}?u9azD{oJ)cvIRTcngYKJCn!ywZCh$&&LYG+p zI-Y4!;}DwJ%Rg=xi!Uf{1}E7_mL_QWTZ6 z*H49vXFl6`6Bw+Q-#{k^w{HLc`xB!@6tuX>bHQT&|^sot?7nrO*?vRYH@A0japPXec`3{ zt0S-KbpS0~URlPl!xPk)&r*`1Fvdt#+BH0`%wkl0)q(t5`!Z2B7+FwGJ{Y|YOXE}x#fkSk+F%vaCM?ghxs@s(oJf8xe6?s{kp_TFZsg>CoQ)HHBR6QSOh*Wiy(UxdR zC`D5?HJD@(-4)@(=*9+Dk(AN`!B^*&*a?bbY}keJ)au%b7c|d1n!3dE>>~On@bW-R z8DJ>_zB!CyPOqs)(N!!*Wo-P!4!XW(dkC&B%q^e`njM;7UYMR$*(_#bv)3^C;a)hV zj52mMZFod?8tcOJQiK)LO4#-+qC0+$!|X)Vt{JCJNa^$>=gSF>8&!3RlvH{dOGrKr zC)?etm}X65a-u_7K&)c)GPQ#7oUb~)d=-o1U6m}dl1T^nU^*Qo>3&BEW|NSp>Wzus zGsiZrt=A2pB7>9(O-v0^uMGn)m3D0`HM6vhJ(P`;?saT6aag6v~;% zxHNQz^;s<)2il}VcNUki{3tqna)~68NhBQ=^f^k^i(2TKHpqLU4ERC<^X+-x6>xlo zCP6S-E>J$><%XfxmYk~W31}~3)k-<0nl!yjPF_?wUTqT@8avw_9>w&qb>6+Tj!6#f zBRwgiW3RU+&bPUtUhQIsmSwn+-N+MX#zqE*@kU*SO-jdcoWI4~+RBQIHX@z{$-IZj zS(=|>szx@L0{hyaAqq5>Q>P0pc9yZM!P2fAMc&I|u90yffpNF<5T&JA+mUK^`YLs& zSkeL}wypF`2R=Q06|Z_j8^tbbwq0aH4Pygu5p}!@2pz`m4a=y*4JYiz0;8#Tcc>!d zqI@NcwLo2Sbuhw%7{-}^#fW+3*?t?O)oxL02drrojUQqo4wSNC(o46a%Ertk zw0BY!oy;<4mb!E>sdg2S!rmE=L6;a)EMT!+EWxfUf2lq5CDhyLE1dUezt%c&BIz`f zm%P)982TDrKa6~iEefaKJ80)G=L(=^q5>GQVHRk!C_zKE(1vO9R7|x6zf@|6Kn)nW?O~+D}8B_WCCR)t~8K9dIy9_5b&I)qv&y;jjt}DQvIm&SQQG{0RRu@FnUu*mOSS? zm3_^zv8K>Z?krH-X9}%4K6mFOA`7!y~)Fgc(zYPThaEGku~ zWS+xHtt9jQPOFO(+@IvhD56}cQSMPe2=4C5aU4!qJ+C`taHB%ORr%?lc{5h?CSk+p znMZXsZxY$WfTnpWxUs9 zZ{a)6Ms(lWOvA5Gn|+o2YO}Ay_~!~Y6{7s{sCIFsrA9&JBu!6d@e*mDG9RhrioP)~ zs)sbAyZh9`&^W4x#;~X!8nb+0)LRLit8Qb2Cawn^ZfOWRr53U6EPNqh$?#OAQwHw_ zBc8T56tQeDif|stz;^mm4_Qwof$sPqt4y z-!yW6^W>>EUrme6)wYuHYFf)?0YYu1G^}ZTwGu=(7y<`@n&g~4CVt*EvYu-cJuBRC z4~H-s#};TjNtCdzh;1fTQ181#k#D_+N3mgN;{4d_{&|#`#B4gIB=Do-t+Ru#PmElg z(8=!+V#k?leLZV$pBuzsDVYb#s7MCw!qtJ1c`)XIUXSXx8I)CX)XdG2k3UeJBk`a&~ z1VOedbH<$S(wG!jSfZagvqy%|=;+q``TmlKrac$IZ?}agNFd9b(&rPdpbJ|N3(E)A zy=XuIWm18$R@beZnXXid_YxU# zv(1SFAOzBwVQ!A|M{H#rhaD(R;D#bAvD>#oXbZX6H2oD0 z16eKMyR#Tb`IMaCk%Ar4IL(7Wue|mQ)Tfu{rlwaTciYozE0`g3Uvub+;l04JkSSVM z8=U~;XJ#)42|$i}8BNXgRIxo64OI{{bO?Cky?k{6?WqJmGUlqeZsfXnH`Jb6UWtOs z)WIUjQfQF_;6hjDr)0bHtZ4$V6Vl63RgN$haIUE;t7E}Rh4-UHX+a~CbbgZhyqBbS zpI;mVY0Y?ajt!R!2I(T_ecp54(P55}*TWsZJdl<*6#J(&RZL05Sw+3}#i124R0vfY zGDrwUHbWG%08d%*voTCN-S)p^t-*2IKlabY^5B_g)CXg4^W zvmJs2nx)nB5SD-kx~;HeLmiZ%X=mq&h*U+AkG0ZuPb<=|ZYZaD*!kkpz%?#H|g*@R&wK!M3AVEdF05Cl$Y9 za_+0-B`0;*fO1|+#EX?$Ch`|&wOm`KO zblfZ+m(~^*R~K|HqLvJgwg$&0UU$>&fWgc;kR{*Fy*zr3*M7lG`-q4y&7r@Q+affL z4vPLN9ka>Vh}b-c;xv1Gc6x19j_Vo&zK8Ih@qXR8!K2fV%^6m$rr*RFNk#$6Q$`rG zacv^f_@FOhgcumhh|yOV8$350$f5mlER2l!=4xklonv%Tb{ph0vs+h(!v>q5Z7~X)YEEy(77wPc#di!9fq-N36Nv zbs4wJtDV+G$%S*Gs~ANQg6blzgc(Ap)RMRDI;A9)P2;A@l?{rR$$~ugL)!oei}!3( zSFu&bcg3s@`CKqCQNEjewPQYyUYU_oK)wr6+>MW3i|TR<# z5k!RjI5(x{lATUQEmL68t#Ij+44IRhK-26(cq4RxKe3 z*QttB)Tz=ywWa%XqE4Z>6Sd}16PxResp$8%l=rDJ)+m><1^v+4lC9~k%=x4%K_2Uu zxR5SX_sg57?iDwW4eFW4N2Sm+i3*`-vQG-d8bLytS@+nOY;%!2KlB<#KwXnVBqQL| z{90WOLRncc#Wy0_m>7cMR9epkP-aQsHBH_ohjVaF4Jq1swgGL;bN$Jeu-BLa^&I8G zFXKaY6>dwLQI}hvRM@d`ePs&A^o@}o(P(#7%)HP*Js)(b7jk-6>8of8D;KKB`*okh zQQ;h?PSD~-yr(D!F=9>GaG$d;Te$PA+9j3a@x~|5adkiTjPHqZB*0kUU)Rb!~^< z*XQcACiG4*$Fn0*?SXCTNJX3LqC9^%kw z>kLA~L+`Rj9oq)5Js>hseN>Lcsy=UKj+Onz{?G@x`X*MF)um8RF9bxStRjURn|=3w zH#AdI(TKao_d&e1ISK_=0*Xycx_JpDYj>f;a+iQQ$v+An}KD~u@(_74zExrGY7 zN9>#2kCSs!7AjClW%Gt_r8vX!!Wok*Ur#Z(!VJ3!u=3|(p7TobgKs2o>ci8+Jv#Zs zEskN7wi0HxFmf}Y=cFWT-Y4|}fgw~^ril%Cd`XU(MzXwBx7wq;o55*N3>Ea14OAJ% zJGz<+oeVlEi3$(^*ZO~qQfBRC}Hr=^meB_&7do>wrpNhkT|6DA&-^IeJ4Qmc3_ zzd9UT2f~c@D09K6Ps=MOPYtpOfw76sjSCu1NpBbTsRdIMwI!~&I}2gUp;e;F4>qdb zV7$6*CBI&SbafhnOf+nr0%3axJX@Z7TU>5YvZ>rUJ))~(K;d2s^|k_WqKcNClO*l? z39U4TB{)e1j^|GGxA3-8izBZ?0vCzxODoG)`1+p?@ZG3f?PB_yfMK^D>Pgq?TU6bu z&!Dx#tLNF-71QurCzVMN9rgyk1sNSh&g+3z%)(*39OnzEDhG|_44gX}hBmNG}6i%odyyx4>Xw4Dh% z1UT8uQz&8!Qy7xkuu#>GM&KEPLSFbdcMZF|Xj%bekbfNCv(K9geVdeX&Iu{8M-_J3v-;qI zbxsqJeZvO92{R-t4pI`BN6sryCuDWkluAW#u_<6Mt@ax`E|cKaibze}FW_4YZeb`i z2Nj_W{#f^nt9{A6y?Qp@jZHXRPNrB|LR8&oc3ag_~UYn2HR#Z^$ghB|L zQEMoCP?>~bb_e|my9H-rdT$p@u@H0_Ry$X2J(I8iT7z8KvL?2}5511l)9On_LNo1> z+8TvbH=ubrkSz$-#B9ejWiB${og{c8;Z>1HA#`=2+vN$9qM9D$2m7C^Q+jij@j4$Z z!$j3jtt*J3*Q#q4sc(i@lAM~38o93Q_p>`lUBV#G!)mDrzrG0*S4$y-Y6-?0)3B@= zChSncETa@f*N(d+K6d0KQk;ECjvUZrE-ORcSsKSNb2p}=WCw8L!Cc_AXoQdMSB7(D z;|X$>l(&RHQLSxDl26Tc<#GocIf~`>JPSy7eoD2Oo~AYF$AKP}Xlpi&O`yJv6MZ?N zUyT&4ow-X9p$CIT0Y~2gH*gj_kZ~L=kmXhiKNL8e=oG%t&tr3;>^n&FAk>=hL#-$; z)Fk{+Lk>a>IS4i6Ak>h9P$OM~P-@wxyGzvA#Lp2i^WrA5A2&mIanqEGn-E^yDEo1v z?8l9=A2-UmxS1Tegzp*X%-|!>C`!&iFn-|CI5%xhW%7;)V=p94>~gG*V$7>}2CVTo zAoD>$mgR#$G9LuZ=7OO3I0#_#K>(Qx0#h~@1R--lFl-zI%|}5Xn+pO-7liKWbDrNK z+02{9+V*pv1C*>yZ`BeLZ|jCUn_z1}mjx}UFj6oT|neG>IWxBt8vT0*O5#O*e1(;&+Y`vw4@s-cU)0JuEDG=^zFHWi^(gZ{u z<$Y7XHc&b|@ry{S*Eww*9Z~c`2iNiP04oD6XBSLxlz_siYmdk#L?W0Vad;7?Cwfoi zpy@?H@KmgLf=Atdg5@>MntkqsO0hTR7giQK%ga~}zBn<0kBJP+PWTJsgD>l&pandK z`gv`R{azYvjdMrptb5{ssH8vYDu+q+&AlN7Cqsg+`HbB86cAj$2?&{+1&mA^mRIpH zn{#N_Lv1lr7peqyqL9e3tw2G>nxR{WVzVv&$X16yUCcs%#xI)Ym^P?`EMwu z#Ti^iEdPS_O0tUJ#KuZ8*RT?cj9T;)N)7ttQAT|BiOZNG==D*)p5lur?=Y|=aRHA& z7qATXD`TghYY(=@M!xm*`C)zhBjR8=VnT~*6~w9VdsCj|l<|qJ;lYVPU*AyHiXj49 zBj@lv$}n`$GpujdaIy8sPpG+2DyO6%Nw9~`j10Xpj_+nkYKD~Y%j#H<@CA=3a)vQ> zjO<(CjKp~Z4HBLOidLT=k{xop(j{b$GqxOKEl!NW-3iYlO&BX$bo#Hv={=ztYeUPl za`rq5Aq-v}KFMEO6<|I|`Q^g|Ue9&qd>AENeqSAa4*Jho{pXDSbAkSIPJgH$7KZw* z4LoWu@T6Up^uhiN`++ufXfQ`hs^?flBgZk0=VZsnw~d~|3261K7i5fNu3glI6me!! zNy;m6fsblYRvEFQR(CD7XSFsdbKRm-Qhk+H;bs@_QLZvns_Y74k#wJINIjd>#%^szQ}q8U1fm5Ox_^p)2NJd zaKsFYG?61w2u7t6h5o31BIMW<7rH0w1EH>(xI2Hj#Ux4%q5Pl-A!%_Qb#7z~ANW?W zvLdyuKuzwwks^s%yA#Y3nl;rgmLl1_TCy|>mvcnAA!`KBu=>ESu31WL;1HQ>2Ku{^ zG^U6&!OA10OI;kcot|$80(MD?><5+W)U=>4tap#v?XH+|4rggB zy|^R?dT5LB;PR+E~mMqpsY`} zBX~mU;1(l%>yTf&JfAb8QB3P~^a2wpAdw@;M&$v&vzj+6@_@|>gM?J$XQ_)V(G=1B z3{xDn#!&>^7rl=IYUw&MM4^rtDcMXIwn};fkEm$bMOqWa2`vWp$0r6SF6d#abwrcC zJxw{gV`t6hKb19+tqqZ^^7(V9uHRaawa&mLyXN9d)wGM8Ci22LD z;(ZFg=d&E@&abYbS!JCw&f3<=5b~kGKt(<(Y8x4=$9~Co3H>JT+yA0r$6Kdy!;xPl z*)A&1C4gbPBp7eGLA3TkQ@%CP32X)Rn0|rqZ9ok4F+SAuJL`*3z8xX*wu1b5?ffe^ z49brZ`&r>w=bq!Nlh}p$8b$$U&+Ac?1jQqbWsh=pu?rEc-k2W?ZZ}k%wP_j8;<=a4 zqA4rvrp7U!bcU`bdVE|NJtLO{9+|I_p<$sXy0!)tGjARF)U)lkpWrJqd? zn}GUbw>aF~!B_3D80kzf29g8oYpct1_yDh|CA>UiS~Ys|Q4GmvkHi-~r)O2w@mTJc zUBjS<^-R$+2=!z=0u_c1V}pS6R0!pUyy|jVJV~vGB{DbS7eU4GLx(kBda4Hex3u*O%fMyUUWNy2AZ5o?6Rl#kIoWsS2Skb~^ z7p8_Ma~;ezYt*6(fdoi(z;8_k~RyMtpYwA{HA>0+%c;dTA=P~E2zhK zgEQ;90%|GdkbeF6o@nX3bU`YXcBt=+m>me*9_V9eyp?CE&D5Av= zYN{O@)UtsSe{eucbVM+>a(c}8U`uU0c?Ii1#(JAq*|jd5#!70y>76T9Exh*3se&(X z6gy91H|^>Wr>Hn#f(gyJp%Leh`uMx`Pwkft#WvP%Uy~O+Ha#S+u~$VQ!nT+FXxVlX zqzROB;b%s>&`P!sUbq-B61Udi=vd5;osAgG6&%CKh>a?Qc94}M^4TeDaip|SE()5D zvzGLJ*{jV8vRIiE`tg;rnpUIiHq@yw9i$ZOm+fLFD!IbBEmJ|F7Ue(n_bD32C|^9Z zNnzZ>VnWS)QL$`6adBpTk+G~PHm*ff&5kKBN(xGgq42>ZTxHmm1lC-x_*mYLnw|TjbG8Iay_r*wtA2oC7#IhF_FU@e? zlvgb%d(Ta-m3F3v)R4W%kTVz6IA?N{DuiDm_5UKJ`tJAI9BO%GlN^6({?QB>{%+X z`^pGMHt^GU|LP#9@iQTbkvPZqMu#Ha?k!y7PHXKWqai_eK59xW!i8#He2tbDEKVgb zapv|DoHdy?UXYfh8toS4xfNW}G_%Odk#f3$8K;$=J-(duM9ll978xZQM>^h}nw#~t zD5ED+>CTW`n!4P7T}Ehmj^9=_s%WrqwoOas#75T(gUq+IIZqj3gRfENn4I69#NgZ} zHaS0bMpve++8LJ*3#;-$5;+an=CZNX0FUKn%<9D~;5+!Bkt6`(XbccwhQiMiLwU*T zWh5T?y#`}n+?-m&-CKS_3fp->4n^sZX$s*AS$>M$s9fSA3yy&rLM?UJWRq0^KONVW zioMr-7ywH~K~U>OzO&5!eq9z!P{<+sL%RLy%P*Y}jpx+iK3$)b#Ik3r6DiJF+uT@W ztyl)tbI`cdxipI_9Ps{_$?{y=h&*X*nb4e4Q?1chl`AuIzAM-IC4@nkUT6U5|pPb!Bzeg%yP=pScW-GYGtNwDT050Fo4qFRr|y^E|;L z%Zthz7^{<;FxE#mtbwtH^-X@eTd$r-1!31>95o-Uj_u(iF*@C;&Gtoq@7rf}5A%Yo zz2OXt`mnaAVL83vW4&i&)R)bj$K-G^tO{A^zZk7(hZz_Y41BCd(Z1Uzwk`?fjHdF0 zZTYa;T;vF~FU`qnZA=16{nz9ijrQ3bEz{ak<5Wm&piRl*ZWX2GcWy6mJs;a7l!;fk zrC_S)7#G;bT4%Kla{46+KLd;NWF2}9z( zD61sD^qf)$|B-J^tt%G+Fh{h^)YGTy>KUgOjR$${eZU)1gz)CtAni;-c_sFjIysOokbz% z+%sC@*4X)rxRXHc5aKI**)%^sdj6btV_#!Bx38gdStXqBm}abfEz^ozdW9Dqvr}JE z&nPhJK~~z;quEO*%CncX0v_-x9Lw=aY4#d=0rkl5)TrzI#0J{|xhRL{N0+s2wPh5F z%1UP$ch87+r#ribZH1o8U&K3G+@=wFhp%tUV!j|&cof1sX|MEs#@e{RfBi;M6x0lz zp)QSKOD~RJ*cpS!JP{Hwrk$oK&SL~-rb5vS$1@_EtU#!b@aH6d_WQkjwq~PPB^u_5 zkTLV5_Z~Z0dJ!kOoz9Na?_Gkm1-W}FWKb&nB?hZu)*Lt>fGhzaZy5m#7-&0%;`jKwauH>$1G%Bsi+t=`mXNY4&l zlrEz@%N0U2Hc_J`PmSl8d|BW9BrUp1Pv(dOuGpx3_43?_eaw-v`V5cZsL7_qdN;rKj5hQvhR9<>2@TCSrawtOz*?XB%7L zOd5*dH^qw3>pmi&G3N1IlXk)}RoFCO!GXUM@=rIml+{5Gd2&sxh`M#fGf&kia2CN? zt9wz!xm4|1{iv5BnR=EvbnW-Mxv#SVaS;^Y= z7+&a4El#(QhvxCLd(_w5OEw#0?sdUNuz*{0R<6tAYuH+^S5D}z64?=8yZRbj@RSyK zZ?%IPq{MbI{Q>Q&jwHjBJmfu`zUp}X9&=6g9UO`o`1?^wNwNEQ&{r>4P zC^e!}U^l~zU&NaivuD)^47lbc*nE~w20M>NvG(-x$e2XG~v5pLL@yS=1GG?Ll?#dhtvn7d|5p62|9*v2&~|flzAGTh0fF1ZnV5K z6Y@+3-?}uNc~=#kbCtC3D$2h}N8ZGQl@h!xq5E<&iy>a^PSM6H_b?e=hR0lp$TJdH zu`Eg~!^Rf<#zxV#m8t2Fq)W~o)wuiZ3Ic>h75R)BCdmu23VWwzbS|qdq>teVg-BI1laHkWa&5U>A_$=>n!4zNTKK2q-S~V56s> zfRZtakJF4fAiF8y#;fBmw?|*)amEQ53rCbGbG{lgk$VCes+hmpl^FQ6E?+(s6b#=$ za}>a=#%r@)*@R) z9`VtRdMpnzfn*+2xR-9 zrgZMm>0GKx#o_9pml`@JV*g18{*%c0PcrgftqtjS4!F5c1r@t&d5a;lb#7{5aczb7 znqiBZ1ll*0YyV>w*GR^ctG==+pN_kH*A6mi^+w{rKKWH#Bb^I@O*`!Xqvy9r)+-v= zHYsHHZI=SIumuW?P&DyPVSXAC*Z26*rl+c{C^QM1jKE2~wyB$q&`9=5=aWJ_b7owY z3^RcWTx$2jqC0o9pW23=i@hc$K`t>T^fu}sGbD%P5=>*QFwgw_iV8b&Fp7c=frLEH zem#)S1zqz@LA4%l0;COAO(^v-Ia%G)@%1SaZJ*P@_o*NjW`Wgj4J{WoiH=rDZDqf4 zw4@1)C78N?K@SXcTN!g+gIQ#xTg@UPzv;}G+x9bOq8rhemzFdjqvkX)vu#?y`ki%P z5VUxKiR-lkTHZdPjD#d^n~6EE*|fU4Kv=oBG_d>@W)=7B`tA=Xr5(8SHf2m^uBsNUYHm?t2TRg-i&2#1LN=z zYBJd2M+72{O=6DX7Y8okY8zZ)Z|p8Ckqq7A1W&E&X%9?8W_?AA4l8TZOc}Yx2#UG^ z*9$Eqc!wkqXA)Ldmd!_Gg~1Yv`W%7t810_)Bwkn)6$RRnq1{{*9W(h{YAlm{mli%6#_k z@B^g*AF&DDVj<7jlG5&LvRdbYLNXr|vbms;{LG+GAr};qE+}jS5O(H-OKBdBz)Xz> z)HZWGr$E-MG-{>L(3B-?BvF@4sFCIcCu7F%NfL~SmrgNzrb`$2gc3Sk`nEHpV`p3E z&!2Tq?b8dZdcDe;>QyTz%W9VswLY6Ve47Pt-`YcCXQd569?q2tcw7q-8gO#JMrS`h zX93E-!?dd|ruKX*a*!OBEmmX8MIN+;YM~+WpmFdoDxMrUow=O?NXaH^b(5JMbhDW6fPJ{ zN(_~kW~NqTYOLl6UE>ao)qPyfz9OWz$f*h2cE!TlM#Blk2U))*#EX3IW`ZUx zHf?xHK_=@4*T%9v$Wev7Ij0pR%1K;LysC6%OL}sYCICz z7X#b|gVG;6Ek?4TC9-1^&N}ZB&r(Rh6NNsCf$yX2Wx%N|S8UYw22#c=t7Cn#jH~v_ z8V`EKP6-#dC5&?n^G4qeMXOH1X`->0Nv2C>w*Nv|8-@sMy*e^+#%yzu1f@Mq28yWm zP4uRg^^Y9rml|TXL>m0AZ3t7j@c9|jkSB!X%|Pdwh%h={k-*w}TyR{C~KQz#uaJ>WRQE27lp zeIso-Fm7G-bM@-f>a=RZ#E~G|{Bj7Fg3d>@+2%##AL|Lt^v*e1Ne&G79W`&*VI3<7 zKi%P{3yajvw9mPXRTY=XTw}q6L$%4u4}7}GnXB1>lI^A=*CJcW%wqI{uJ~4DX!F$> z+Q!ULuCzIhc^Bq>XvU3^Q8=YQ`HhaVVe;28Hd`IVbluNO$=3oe$@^YL&4!59tF!0N zzj6V0X7GA2esV;T&5_ubd3kolD`L(_7aPB-Im7On*R*R|CY8SXvUMpSxUJbIWXsIV zf*OLfwL7v7;A_Q^>CUgM&fvAAa!Q6;*o!{)dQk}}G_^&f(A4&Zo~bQC9_NaXN3smL zauON%x#k&}lHyS|${rV%hsYr3w6x$$tN6aCB&DcZE@&6?Mq&B{w!*~W?FG(x(*Z=j z>W!|Ro@w^QXY9|zz9VnMBW#qo(r!oYl9N@Od~5=vFg7&eEB#_i#w4_3N0{pJK`FKT z(u#{xkcDC9Ve625FxDx1)lK56nsjXGic~m%)w2xcF-m~aLGVU~)aeTjg1NI;S8Z*w zFms&|463O%TA9Vb9NQwlqPf>8X{%~`jh|Pt-PYxmh&K9qL+82k!z11VLZ1!v`g?Vv zpG~QXos;oFE1p^mXp_`h%lRgU9=RG2s6&oi8Ec)#1`3pFqo)XePKq!p5@FKAb)Qjh zWhJ))y6gH_k7q*bX{hh6q<^smuQK@V6gh&$9W$absx}3<9uRd7mNKbm37d|36+xY_ zP)QU}3^(7XO7wFkC@K4x*p@@v;rPs-?aCWrX=^NRr|)8>hM=e{{G5txlCeS1Ef3EP zIN$wthkn{NoPzZ{^urZpDk1kVHol5Co6c3XAE7^n$t8?$5TuJW@G@Ha7Y0mM>YQ1` z>swlFa`>4W=`5#!InO6jIX5kpn z_-`Bzib-hKPCkqsm-kB1%YQ{MgE$MEp5oS?VY{SY9FPo@6E^48u3o|tu@ozu;PP5* zO2#8TTTkS>^6HXz{bdVfd*VDU=d*9~BM#BTcM#TAR(N2G=XXELTn$SLRlL5!g+m;N ziMVZMA+fP+8fxP#j2@mw=3OkG7n$IeHQ6AP4=>jEF8dS-mkMQgK6dmtqBFp|iHq!RriogSQv9+}JXK z5{LX>S=6nXb4m;fbCreEEe!-Viqn@C^dvb>B4t#Nb~KQ8VMR8~yM-u4Xh*#qDlpLL zP~@DvWG%4b_3vRURXfOS8j&rrfdhqDRi0Lh?$|2L>c_q{PBY=c8b@kzdHITI43%Zq z6e=0jO5HISWSU~5oCL|{FBpp|M`WiU?*L#+6gU(WBBbgGe<-M|tBjkQ!Ye@-;&{8C z6v{Bl)xz8%sUj?eFiKLI7UUc0T;7n3@?~P|0?yMRO;y;G7z{NP#b(M^q3rdaR*5NT z#(|FXItWL4#n6#nm=%dI`~ETtK|Og5pN4mtPsvnZKHGfK@A1|3aELC(+-fJLl+L{A z>eMBiYbrFvNt$IdrVT7I+00jt^ESOes*~|5EG}UKx1#jToAFD!Zgd`-`*Wb2nb#2K z%)Cqq%z~ydF!AeRU{IX)$iNc?=}Ouk$_6fp;Xa8jW(#_npSQKpk!vaP*&+7!NkB1^ z^1)5Bg?9bkEcVrJU~^`S#(s$mf5W<*v+bJUypfw}1!hu`?JgII49b5r9u;O~majvC zwL9UZPR6twX3D}H=OVg+P%_g{B^}#zeM(*JB#P%fR z&5E)!t(Q8L9*S#!|FWA8QCS&A`_e~x~7sdXX;jH3yq3xnv4rP4TeK>3q^DQy=MJkHLQJT9Cg83V8DGnAbZk;uLMAn8w9ovcO}>U+>8hcN$L!DR#f zREQRAR=VW_q1Cdu*KwVzZ2GmLNhANOHBC!o1URJHp$ui;u>1mIh<_LU6WSe?9gi`d{#V^ zFbDpL4HX#rXZyOGRoR^;Y@v=y4X>d4Nhtdv&DyaTuxy+^Sh2pcue-yt zmL@o&kdcG#CH%E5Gmo%q0UiLCGWMF1$K2HaIad>^O5o*(&MV3MiY8sPf&f*cfdM z4iDq_)_5qj&kYH&z)L4eQ{AN#+(W#8&5rW?^6cvPEH0tp=SqZ-hLYzEl!*7j=v{mp z{4CzgC1r|dx#~k~!VNXDv63w8S_xaFWd+<4-KlHZQ;Za*u`5@ZT*uDVY4yxjczS*r zUv5C_xQJ=52^I}7xI#18!Q@EnF`r}IOGv2JYp=+uWO;U%)P|zdFjvErM8QbPTwRl; zO7f*8jDW7SoxmdxxUU!|;b5em`uTWu4IkA&`LmiNtkC`9iYKgH(gIRL6^qlO_Kph6 znPOoHU6xeI!@3&=Q<%N*Y&nVp3*``Q&Y8e1Op4~IZO>g%74FrRE?|zrj`Wd1&z@II zt&%Q^qu)LCv6M+z#PCS1ib|#GP#Op23Z+uBu-7sJSc;VbA7JbGC&&JMNm>3FO z;=zDe>9x`EQA94L)n!uF54i}&<8Vpw`LWT7*VQ|GRU}j#tqHCR#+!I?0iRiFxjI5h zKEdeU877L{-#Yrz=n&c~*`F~wGOl=Bpfseml8o{QFI~XJ7VWXw>Dh(O>KL0EtjZdi zw*|;Ewj{c5E-R<(rQlR>SAmN(in}oJHsW%*ds;)>QL)12A(Iw@y3d&u@ zt%)$_{0sGMTmn*u!hLx|xf6%mnwwzb`)pVipLkvR9QmwUx%u0SXFTX zix{2b7q+Rb$lPbug$}wmdf^kQfY5{RW8GrYeJ48-`Mqn8Lh6|r^PXLG7{L*j8a7w2b^Z8pP&8~Lw zxujX%zAl7(Ps)C3)lpK(Rl^`El+}4;PluoMbfWsArIRsB<=&xy;5Qn5LVvR`q-=_c z&pegxdqbJu67=oJzJ$;-ls)}5K&Qw8C|~sRDf3A>#hH&KiDbWOWF&bZqy_tJA|>-C zxPI>ujpxg%tjZl<{cUrNyRW0KQ1>a*U}#&qnyL$dSPbMzU)5~w*^8J%hD|pwSq@lr zx2{L!?k@Js+`Ypd$z;S()rCd~b(wF(+Pir@-j5;fbyck)qve0Jz*q8lUp>4`)cO!# z8X7ni+6jEO?WBao8AVroDu3)Ho}Or~=Ty{wH(Gk8YI~z1)CU(NP1QC;8*C+-h==XG z>#$wut%i+4&{v`6J6qy+z*u)eR(nq}=b9k`tCn;&*@PJn{c9I3=k7&xluH-*9rsQi zrM;0Wn#8s|>4pPm!p&t%Vg}i}jHZCHQ3*9oih|`D9CJ%O`uf~-rb8o!<1MF%+b2xE zYBNvOyYIo+Fem}b07?<3MQ?X@x0$Ht<(`uI2hu1vWoRadW3m2Ur9X-Ee#i)ye z!pJAA9EFzHQ^0pNoDl|lww+e?!I&hmgibz@?NJBkiltNoD{6K;VkNXa*wXK8aci+B zxq>A&Onw?63MMl(2&R|I+KO~S&I2@xPQXqFCj{;ws+`cS%uV;7#PLBaw_^$TL=$)K z<>?omKV{fwpX-0#C_ne?^96K&^JJ0sv&|R!3$)>Pkt5HaIB5god3ox@7y3){n7L!| zL@kt*@a@8)NvF`9V0x2B%b7`%CG=d+%6g2y(0|EJ<>lEmaZF30YcNwJvwlVTFlq}WnY?}x>Ocv9?iWKwKJJt?*_h7B_Q@d=p}dxV)32b4^T0|sN; zK$c0d$GAzcCA~?pO&7P^G~J1Inl9A7({yL5r|CkdS%Z6YsbHt+Vi@*3Zo=*Kt%i+4 z(0c~cZ%MR(vF?PdPAHN&*9;L@wWPBt({x4xt_0I`!+FzmOSyEREq$`mDDKiraQ?MEU|%Ha~?1YZEtFfZJJxc z52ik&=G@>k-TKC9x)p-xYBz8_tvI`SsS8E?KDCz;%XDT(8onYd|IBu2Xf2KkdY&Vo7(~Y@& z6e`m4IIFvck7(ixo8pu?(@tlt`|@DaF{PBveX={2yU3TZ1cupz&Hs*ku2X`p9vS8i zUV5%!*C+Ob+h-mU)Vz+Mk+2nViu)Y2>^Z=zQw)uRC0Fe8a>qW(HPPCt+!2VyBsu9k zh^;Ac*2HFh4jD85<2_x(R+dFfd9_4PUb|P2xwF_=&(9@@AUSQHWX}dA91a6Wx@g44 z389!gpmfsksoU<#c1hAq69sL4Nk*QrCk|8xNufZMA3o!@Lvo0`25#GI&#f&@i#)$D zrwn+X4D{BPx`tABrh)s;*_Gvz+YN+OuhKP>7T!(@a{iP|lzd`5$1uYGzyJGM#Blph zm9ky@N}nrb4g3c1o5XJ&zfJtM@!Q3(^ffTYZvekZ{MPZ?#BUqFUHnQ%vY$bE1Y{Wn`G z9li${{v5vP@r|j^*|0PG)#z8+s~pIF1nvwZ2R`{>x>r5$gxE?Byi1%+4%{bpk^`H> z_2j^9;zn}dCUKy0;0AFsInW_y)dQ2nt>nN(;j0IRiH+)kQ^HpcG>O~Efn&sV_)lzB z50r@m)dL^@5U^D}@BwkMdf*YUQ$4UnT(2J3ByLm>+!FK3f$PMb}yK>+xu~j*6 zQuxY&W5iwfBbXd05x3y}2C!2(utVHS4m==kR1UmDEL9F{60^#IJH$rizy@)%a$ud< zgug`nhjc$M4;lGz;39AZcm_BJJPy1JYyjth8E^r(_k(G+1bhPg4&WnT7x)mk415Q8 z1$Y;@2;2a!0^b65fUCeS0w;l2fdfDjo+Hzr%kKPSnhhK+XY1cs&bAumta+@Q4LnoM z8sByx>wGhK{EU7Mx2xsdUx0g!T6u?<)ymt%fuww&*sPT|iF?)Z2C-Bt-yrT*%ZtR# zTKNs)PPIHNSSz0-X4P_oxK$}<#NArCL~JGH54V7mNqL9ZNy-n1>q&W&xRI1^5w~jP z>%{F^d7jv)mM;?bYUMM;&7^!v%q!*N#Ada8gg8(wfBN&l7UD&mtd`#+cB8`bhH;%2pcgV?B-7m4e& z@x{3A}nzjuJ0O8Fz=dZqk`xLYaTC$?(kJ4F45@?3rkGRkxL zIuPZ!{00!^xO@hPa$G(IM7b?DfGDTsDiGzg{Lw#>@>qTXMENdn1K$GP1EO4)Zv(#* zcpdmtz)4^SI1Ic2JP!PB;8Vcw0)F~4Y4&B{hrkWsyTDE0ec%rQ?*jiC@D}igfH#1D zAGiqoKHvoKE^rw56TsuZ9{?T&{taLm__u%`{lhf-Vc=unj{@HX{&nDe;NJvp0{=4b zCJA+rTq_MhB@ew4V8)O(4|O8wJc2M$!~9}!!X`V-=0rT&Pxnbfz5TS5DudLL;a|qgpBfEKL$j5Tt5OtJ*u<(qrTLu zkWpXiA3v1xUf%_xe$^iVQLpMOKd3MD`;bvj>YG5+tNJY<%2&MuM0u*SJQ#mJK%6(; zE@yi`gSP!=U79zyAmeBB3^o@&r@30+#eW5NvRdC6Vx!jgBC%QPdzv^<>pLo#^z{;3 zN#Cdc5;&Rk?GYQ*zFp#0rSCmrC+T}YTu=JmCT=8scZr)x-)&;E+IN$)+V|1F0B%+L9urHIzDLA?YTq_7tMqLV zx2t`dB3Juv5jWv4u~F%p7rELuLENbJogp?WeW!>6mA>P|R<*AoSm}F;I0^rWol4)w z?*exbf8t)X?>%Ct+V_CCUg>*>I9ctxOWdjSy(L)f>xg-^Z<4rC>1z@7AIeGJDagqG zzGFb-b6+nI?LuD}h;q`m_s^vr?%M%koY40Gh;q|+8;J7OcLRuW)7Jr_J?Og#M7is0 z0z1H?K$N4tPyd;e!@eCL%2(ezK$P3Q4WJ3nI`jPh!{1%#Z~k66+x*vP6LwJceqWWn zf%j21|HPHU><`gi{82gk^ta&te=KL){|WL3<*b9>I(|7XCzFF0A3?X392_QYCI^p; zTse4@I9WMZC3Y$Y_kIW1s2toSHY*2rhy#^__lXQ=Mr_owjJSgzaraR6(fmZM4YT;AAShj z>doFKZue%}#GT&k9pY|pc89o8%ibbx*0M$7RxN80w`6RyDgvoUCRyiOp)(A!cdT zA`VouQ^cK~>?pBQ%|89#XnrVrLL4}hZ4(=ZvJK+op{zsf9Lgq$>xZ&q#EnB)nYei< z`|tzc)}ibHalJR&ByRL(H;J3Q*&?xpa1$r%*)ifkl9hx{vM2v5`6SyWc9QIE;(C&8 z5I3sXqVV->K;$IL#Jrw;@Sk8_s%H0z8};laF{@@5iJSH83~{TT9Tz#tj*48(%Eawz z_R)VN*0cACjcWFgxKq#G7OZBsiCJ&9D(1b}1aUjbhKalN>}ld&J-XZQK*==IhldTgQJ=rR;*^^BYCwsC9;y_O}OlRpNRz+xuUD zrAoF-%qrOqu~EskiOov3MeOusH;Dt4Y=+pXWT%LYG<%vjS;;bDr;>g0AAsv{Pp~K3 zA#T7u;$|g#hqzVA?g-zLb%@)Q?5vpgWDVjD-1+yw-AeX|xQB2Eq8tzhdb17UR!{a8 zal0p5B<}WP7m0g_FR|2{HHn>C)*vTSUQ|-6SKqF+r-A<>=vQO58}ZPyQXS)0=%r+)A_eiJPc@ME!?;DSH4J z{ZDoexB=V%q8-a_05QJKCV?2IX2U>?t24Hb7@uaxA!D4G^#U=j&p!PV8GmLU0x{ms z9sx0a&bEMPZ?ikV4)84?+Rl z%oDOVfN0M%&fmWbJPR4~iHz+!<_+0N$e4FzY|k-2$c{ipzmb)JX#ca19?Lu=V>^%j zBHM+GaY6P7xDI>>#QY$82Z;V4y9>m8C%Xy!Az%lHc|$e>H2L%Rzogk8e08a`1NUPwZ40Z-}`{5adVWEM(+I<3%9y zqwzEl^|NslhN;eQQiYMmx~B z2t>QmI15BO(>Mi0y>1)@c7SCd>Sg2Op+l^Pja}e6a0iI?u(1t9d)U|lqTOrU0iwNY ztOL>BHRge6-x?QzXx|#cK(rr?<3O}ajRw$U|5ueurDMqV&etSZ(?*~FwHOEdY4q_= zC0O%@j30HeN>w_`^6_;^w)qQ{tfesn?!e9-e$*=;ER`mp*F2hJjsH5yn*R;l!7n?K zWLwn5k9uDX_hz8C_unPi0Dim2lB|Q@Km-2&w~+Cp-a)wc4#W3(xPjjee&pAmhKyem zKgzw(yAQpMe)!AZ3yLp23%8nx#|g;b{uJ7dkD*sO1%Dv#b>Q!>RkIf4P0EZvo@>x6 zok2YQ0_^>HgnbZx4**|;4t2kv^iueHaTM`bfP6X0T1(2`#v)`qZ_Fw=gL~`H8-Rb? z%b~vmkk|2}zh8rNxevXpi*)-U_*G?p>pJ2Dxdmi=|1|u44878qkq&PmY(Vm*??!yT z3-b3UdEgHGx(j!1gTpWTdq^|<&@LRCKL`7h$+3&Xf#ldQQU9S_A3F{i<^R}IK$QDq zpS&vd;@A`54CF^ZqmL%q{C(Bx1>wJXM&W@8h2>#|2ahXEGKG~-CPcsbL}Bfb!umsn zJ(~*Cn+gvtDm>g$n4MDi)YA$ZM-={aR-u(vjivy~>mRhCKN%E7W(s5!32}WEmm5vfO z(2){1(J~RYN~ID}|FQUeJa#BM0Q?AuVo~}4h-@!C0Vcrrffe8*U={c-um*extOM@@ zdw_2PQ{Y|TA>an^Fz_uPJ-h*Y3b+bv02hIO1~>`)df)``8-Qnk$AB*a`+z5be-`*O z@Ed_gf!_>#3i#)NCE#BGeE6-0vKN7mfZqb#0{%td9pGOAz6Bfr-T)2)7lEgN!@wcn zao{lUC~yS$Vauh{I%JkTrps?Iu{M(Gk#mPxo~ymYR#Gh!Hi<(EYrcW;_P1jUk00xA5A^1tw{xkI z?ZLdUpmcZV&}Ks3!jF1&=)L$&X|{C*^MUWs?!nQ$#Y#2_JKOw05A(L<$X{XjdXh4+ zRZTwr%fLoY@&R$Xo;)G$)ssiWtS5OWaxHnAxKmH=5}Q5AP2xb3+#qK4WRW;oP2M1O zs>xa5tH~+iKs7l=+^QrQu~|<({chlPCHauJSxMd_wvyyNu~bbqiF=jg7I8O8t`i&Z zhd7xeZxEZ6-FS4;zm8WPu#61 z_lP@4Ct|CTyhWU>B#Xp>deS16D#?q)-CA;-xPy2IR+3&ZR~6zX(Di?E{V?ZG$u1D{ zmE?WkP2e^V^(DCv#JncC2kZd3UWM^XavL(%{S(g9@E#+%4jJQ*WD@uzz%#(NfKA|+ zff?`zfFHeinB$&=^ElMQ@nG^0`2E05Al_poH-Q+hCaXYC?#VjB^L=RlzSp&L*_ZMB-Ic6^AKSU+1I%rH zFU=nOQ>+WTcqqGbJk56gT$()w_akW6*~S}3tEEP13uDm6FDmyM2aRu~((W%gKge!< zZ589ws#xuOT{X+_bJ}=1Qq3Crw*_qC*ZQwQotqie~XYo6O-!Ogy z_`QhVDf~|2*TnBQeoy0f3_pfD{%aKcQRnSnPP32ggLPJeJ#?tdhamoA^aH6?qYq7qVvN&1Lbs-zEyStZ>hZuh3QiMu`NTg3G=ohNSeq-TkZp7fMpC4HLM ztfWVX1C_K&Y*o@ve*-vKNk1fZD(U;g-QIMYxYv_z5jQI7ZQ^<*T_=`$(?w#|n_eVN z_NHfu&EE7BaXU?q5j(wUMr`$_pZ+><6aEmlD(Pe5WSYK9+^(cs#GT%BQ?QcWBJNhw z8^pazx=1Wl(@A2pCv6cod(r`7R!yHKHmYex9H^$BJOs9?=?BDSHGM?fNYjVJy?Xi% zak84;B6g~2hqzu%-ym+L=^5fyPkNHL0r!bnnjRrG(zHq}rRgWX1{~-~KO$~c)Axy6 z)pVP<)04hKZ1kpghy%UpP2zSny)Nd}bcVQFO4SY}C>cu~|#^ zeib-SOLvK_TKb4MSxX-fJGJy4aj!SsAg7UD^4*3-MhfqHt2*r=!LVqQ-> z#L0R(L)@*W6C(Gd!^BQKZ4x(o(}u`MU*cApe*6G9kft9HTWR{3xL!}+BW~2wE#hW9 z-6U@HrniW@we-5k@Q=7%PcIU8>ggGx{`*JBz*CTa2Y3wl2-pimznqqU=s(ks|FQH} z=`IlcQu+vpekOev_-}!41JU24n?Up<=}jQ|gOvR?+W&MO@*e|RK(zDe01)kb%KjPs zW!i-NbHE1hUjje<6&VMl?4N%Y@`sS$0kWUQxFCH58U1^@1w=od-T|UNOy2^ce@i<+ z^fT!jK=kM701*9b+5n>eN;4qF5$UJDEd5pb5%A|B?*O-e+d%YR={vw*0Nw@uB5(uv zOTg>E`@nhNF9TaZ^l#|^@K=Dxf&UnI6o`H;?WB@Y7#9oIM790K_;U-2q}els*K08F&|naY=d; zi2gd|cmw0E^g85+z(wHi0Vja}8aM#l0X_}Hcq}~%`~hGY`0K!re^JIC=@Z~B$nOFF z1@J!bZvZ!ezX7}j{F}fVz~2Wh0)Gq0@yibaCm{bD;3?oA02{#ffxW;D;K#pkIQvcD z6ClPZ>3cwoQ_^>UKLWfBybZh#{9C{`fZMW$6>( zk3oJ9i1Aa(eJcMHxCI&G&Ga7dF7OucPk`5f7=Na305J|rPXRGrOP>b*5wHr}1b*`K zGG0pG2mS=)Z6L;*>D$161-u3PXTWvfKL=7D(}6pMDDXBIKV2Hh}K}dx7r( zIWBq|Sb~i4So-nLxq6Htjr!ZG)Smub^3~c=Vpgp^MQl`SC1SH$`{)sHy;6IhxKXJ+ zBo0(-_ld1)?QP;@wRVTNTdCb5?o?_wh@EP!LtL-cCW#x>+C}1KwRV=+N@~Nz$)t9Y z*hy*);(Aich#N`m)87FOB()ETn@R04ak5f-K-@}do5W6~cAL1J)NT@YlG=4a_$z$1 zc80iBsWpkah_CRKT2xK*v)BQ`6w4dOthcAeO& z)Fz4g5A9*?EM&BYHO^Nsey_a<8SP>1IB*qs1c-LA#`bXyScZ&tsJ8c8QtxZKK(tr2 zZ6MmE+C3oJrP@s(+NIhm5baX!A`s)~+At99YV9Nt?P~295bbL1DInU_S{aD;wD#e9 z(w^4d2cq4oZ3EFB)wY0WUu*Y(9pG&s+Rqxx8QRa<4ajJpYLh?{Pqeco^a=8}eG7YY z29ln4{*dXB^xP$8wVqqV$)snU*hzX8g|GIsh>dE`N#UzK4dQyzlL=OP_TGoQQSI3w zZdZG@h+Ea3+r-Uk&vjy{+A~SqNP1etX07K%;&#$=l(>`heEJ8#-K1xiI8g0*kGPlg z+$WYQJ)6X=(sPU0sPrrno7JAPf|Z^oaiG$3l-R2D^b#j4J)is=V5idaA#uIZ^O#tw z^*khQRC?YfZdQ736Spco>%?uiPu!{WTqHISUgBQ0=V{_@wdX0~WVPqx-=|#Z*(J7+ z4#b^m&o*(d((?{c|Dk{E`G44Z52&clweNdSoEeHZc4B1)9k9*p-uE8ts6?>_V?)Ij zQBkp*h#gBJ#zqtsOYBCB*c&Fq5{*G)izT8GgEiO^TlD?k8$I!y=X~GyylZ`Hz3W}i z8Q1nVd+%Yl`?{|_kb!l`T~I0rISNV!F>XQeAmlKp35Yl~hytPigQ|g$%b;K|1$>!j zj(1QY2zd)S146EXazWUapllHG7?cS@euHL%kmsP$AmlhG0famSk$7|p7>jktV-N+x zE(L{wkh35=2ssKW`q7lrpnMQ=8nh3DoCalpm=8gzAmlZOV|L$MwAZNB{9 z*>1;n+@JX>_0IOEznIU}++uyRJq5=v#P;kr>$Z2cU%>XS->lo;kX+9RY@hmOJ?@=r zezVD9c~yLG|5(SHRD3Q6+f!cuy|1WLpd-&O@EI>)O+XC`xjzbw#6s?=0vL?tHC|Z#r`OZ#Wzf4(e7-YaE*5gW zEHD!bIp1t>G!}Bc{$Lyy^L(I$g`BTGSPP4JKF}Wvd2Wxd;rLkIJ$Gj1K-7Q!zIR7x zAmZ-7*VAyV(yx#oEbFl3V+p;9UIHwsSfc-g4aH}wJw=TD1oDlgKF*Pi^)oMFhp|7) z;&6;FDC4+`ZCTF|n`H(=o(EJ7U+s2%(S^;2(xUiC_+ns zizCdjxgrUZ?5=7i16;v`Q30;U56J!i*JZ*YtLp?|n$5L~FgC!onlQ!YN+Zm)yOIf` z?5+fJzugr_NZDP{gz-2ZVVK<&NthMj3L}iNx`GLFtgfd;pvC6OCk(T>P7qQyR}Nu* zfNK+>!{*8$%(J;t&FwZ<5@C_e)s@hK^AS4iE{>22bcGSd;yi>|c308wV3N&snK0h! z$~9?s?J~DpU76;(%{7}a*5(>bm>1wmA}k7UbtOy-aK#W(xG%!609Q3aM}W&tm>J-D zdLOg|x-Jk#;XVj+?5-@rG^;CvFvaScO_*tQB@<>@T?vG-fvyhbe!HuQ$p9Bcn2&KH zEV8@o=DO8YbPwx!R@Y_1G`s7lxo&r56TW#tzq?jr9eUc84km!9U>`6MTnEO23&1Ea z6O06*S6mf9=zrJCyQcr_$_G=hegd2UW`ppfU6~;Cy(<;$3nqim_pS~g^uJ337lE}v z_z5ltm<~R^WBRkMd~g-k^FY`K*DetDz?A`h38sQ;z+`X**cF7|;)(%b4_q7wd*BKK zVFz5n;B1h@F^C^rFK?TEj4K~R+~LXtr-9iZ{B_rS5OIKO3b-0f2B(7wAmR#F2M~71 z6$Qd>xk$W%IK&l(^;9qzgxzsHzGd1?S3Wok>qkMv0j^9C_SKaJ!mhc-gGpclI3J7w z5r4Qe5OIR58i+W-Wd{)-xC#o*_`tOfM10_y4I&`+9E|O=3y>#VceJ$C)#k5bZJgmQ!7sA!hQR!Ix@IDnBjfLpp{$LyyqKBJ+ z6c(a~Yk{Fyh#t0ph0sw}ygdWvVj;RW8(fVg0PoYl@mK=!J`wDSd7Ot*gUy}4x48a zVSJz`jWEpS8BIvpJaL3kHjhLYYx7hijJJ90gpNSZV+KsJc?t>{M>p4Eg=c26o{ ztlcx(+#l$PCoBr^G$FJEdMLtpyQczSTA=4C1%?HAE)W(4dUg@!1$yQa<^+0@2=fCy zF@#BWPkq7^yC;}1&F;DD1vBlQ6NFiI&nChgyJt3Gp52p3m~Zz)6BgM$VT4J69t)u* zz*FD>QvyA?gpL5uI>JnxpU@KInPP4a@+1?61$g2JDclcXRDee!j1BOF5yl62{0Wl+ zJVgz_lmO2K!n6R-KEliZPX-|s=t(8a3h<04%n9%$66OVX;tAipdRr`>7_4srDKHbP z049J>>pO@Y@mvP`g4rPSz9$px52k|~!0{mTxu-vf7|;_7LVtVegV5ieU=aG-bGM#@ z=x@&%5OIp%bLYItV-B84p6QdOCoxKb|NM_Qq2Sgr4*GgIQpHT?dJC zJfuzrJLoxqb;Jjr)gbh?Cl%ZTCW9-%Sa21{fvdqzp4Z;q35<%E0PgfB3 z(i08BUV1nX_RSLt!v1;eU>aBy;UMNdaN^ zJzYWAdruSyd+VtMZUbMs9mGC*@@)XULpBj+T0=4jv#cShgce&!GGUH2B%UzO8WKb3u!Tes=37H3!Z2G%7-5k$qyk~A zHN;N%<^}l_K*)W_d@u$NIxFtQ-}lWn2#Yvup^i+A(uhS%aB}RSKhqrZ{PfbxE1sLKR)u0J^$_v zK2;*hl0tTsu#|`b@WQ*d|NLM9|Mj2w3G;*GQ~&tr+aLLF5H^$idY1|9_1C8^?(ZWbx~rA^q2}C+m0x{{6{!KK$Pp`QlIi2vO0^JgLybEVW!== zk1)mR%p$bdoEawV&e?=%R_A!aOsg}IFw5$UBMh@SqX}c}PL43j?hGTOY)%JZJkCd0 zWOEiZ19NQ7%Y(82lF}@vqWAQs;zU(uJNyP`3<&?p$${`QoWxIoKjI{HI@l*?Ft)>=auzi<{RQU*5Pp>NCU!1c+_%F_65Pp`E_&czV&Umb+fW*&%pW=+hI{Xx87zjVdN$PkL$#(3A z9d-I+JM5_QZX?qlb)EoWcb&UH*lXu%5O&!)8%zR;KLfk!9F29@U1tJFREzm?*u(wX zVLizj{z!_x@Utl=qyS=R6*!aQqu0%4{#JccmG8qN{M z+QLH#^R40jghkfyqFB&k3%^Y0!12v>dw4csm@Pb$kg|oR62{xYM-wL5!V?HnY~itl znYM6^Fv}KRpD@fGUV)IZhretC=G(#x33F`WX9)9f9>O;-$X|FC)*)Bn=^*4UoX92o zm2gsThunmxVmst7JORWwhm*Vw#wk1+>v;a*5{Ty?9tpyK39km?`G@<1c>dv!Tbs{6 z{4$8=AAS_X^AFDk@%+QrfsnKCR1oteJQ2h^3hw}7-h@ja=0|uK`1ZOjl(kMa8K)>~ zoz;Y~);jYEsfVVK>W zLzoieUS~4EJ)f`$_d%E+7 zJD7Uaod>31JsX4`ai@cjV|OYDId&(2kYjfY2sw5~fskW&eGvNAO}>9K0}RDF^q<=w zgdTMlwKw&(J0FDny7Ry!Fc-x9ac6;P;A#;15Z@0l?SMN4gxtH6K^@IO07UVt2g(dcIIO4G2OV3H6oZW)*A72 zFqmnL$S2IQM&uFZSR?ikQnrY7gn8D8`GjG%h$)2m)`%p+C|g8V!Xj%#6rsfyQJ*l@ z77!U94LB8Z(z0q-W7dMzRsOu~8= zh;fU^0HN0+rhw3E5&c1oZ$t+WauGr78}wQPv2T!rh$h&MagV4E!VX4M10m-T{vhNg zg49PLrx67M|GsZL*T^$TSkJRY?jww{My@6-vPNbQ##$p&3FEDi$%OgV$gYG**2rkW zOlu@Xm}QL&BTTVIItbIOkru)?FFc>fe2g!iYh)gX=NFj+;(0}G0`dGK(?LA{$SEM6 zUt}Wq_UEI9;#rNwck0I!%US-%;JCkK4*4)|>NI>l-|8JrSY-7k5?XBD4ulSyS0fCw zdBX@}1HAr(Q32k&Q$fn+Jwq5}^X?;zwRu;Y>sD`?xo-8Q5XM`*NrXvOZyaHY)f+|V z2=LY?3=8l&2-B?Ims7xao40^4$>u#lm}2wpB22S+GYKUFt$L5VC%)|8( z=G(lr2#ajq3WOHB_vvKNVfW?}hS|Njgp}R8jxfsZolO{P_l_ovw|hGfCfU83xgOxH zMVMmuRv^r@dY?`Lv#j2H!ZaL@FcZf!x7)pGggJI^GGU(G+m$fi?rlO?WcO0$eyg{Z zx!>xoKxhf@T1*y?AoQuXXrif~y#*k~+e_vdyU5nE-(em1gC+sLCCu|34~mD zV?oG|m-wlWe{X%PLyo)-5c1`{8_X5^2PrSsR#C-7X!#d`HHxtCX z^rnHBA6_yaF~7Z|v5tA_CG!jO)Y}#7&;#CR5dOB81CgKe)&k)VdL3XAXaS)oyoD1? zz2LnJVqSWWf|!@yO(5pAHyy;h_7cDGt$c^ha5!G3Ivhn<3b5p1$;CqUr-4NG_6LbB zjsio#P_PV`Kiy$|a1&S->v7NweHjyzKHV#V)meE)eu*6`&$1F`ia(oFS$BzWb z@hgDj_!f|S@b0YQ<6i*D@sENxtaoy})ekT4(s<i9cHoZ&WaQLgL4bJ)`+c^( ziP`kUp44GRB- zFBrT0Ldm1s=kIuN>DE*JtD%#=&0F^XQLkzX zH?O)J-mTB%9zWLlYn`vsfW<#`tR_TXOfPk?_ljNPE#K%}3huV;8`f)>{76 zm&<2-_+p@R|K3jP;~iaJ2MxR@uDR7H=JDZAy7wBneQH6|Z`uwT#9wP8R_O6?P+&c( zYGdVxZSO7k{fa;L*%*7vwyq`R)ino#N+h4?H`Cs_M4eOBE~m`ubvT#%roVIL#WKf= zpZeebe?eQhWBlXy=j5zOyS(%Dv_n_se42hcd*1pFv(84$wdPfePI8XCQgzps^Vd%% z)#+LD-fvynPFtadulzPGv(3Va;Hrwyy(XLtT*{QnP(|GMmQ z#D-hQLSAG}=Iy}mzW~WXUhmG+T2Utk)p$1l=DFnLpe_v#mb)Jx?dv0;Njvih)76>l>|cRz1+*zfzvoe!R#E&4s)HKfs&^Yz-c z4P#r?K5?^og$b9c?mcsIPvXfY_bM#;@y;dVV(5$yr)5Pfs!U&qNW0hmqpYv|sD@tY z(yt-ymuSWjO4>0bJk zlw{RpU)%l%9UXP`gZMZe6Q}cqj1SXV< zqsLnfq;4lByd2IQDGIN$?t?q!ZR1O>_V>74KhK=<^1!aYZZzn#^v3Z@bHYa-dr&Vq zJDltPq~ODh-W!#^wN?+D_s7WE_nN<)d2nsbWXn%WKi$C`Rrk=lhv(%UxG?)Fvwp|; zQBuLLugVSid{uJivIqV%|Nmnr|Ht`BdAso)2$D!63tq$~md8@C|L@;p{&qWw$zJ}O z?c`@F9Qd!FCqKu{cQ^|1GkI9*&^Rhcwgs$#E%~VL4t9CAndv#`ptH&7)hiY!&l<>o&1%+qLh|vC{`}oj>f^t9L@5 zzWw?S_-J6_put0uh7KE^JYwXi(PPGXyyO_<)%s@C-mUK)Y*M`Tx8MGD{XhJFdjfuD zk4EUwPy69ZJ@`E-*ce|_&T_frKkp@LmrHW^zmuiCr3e0RYH5de zEi7#;t+Cz$|2M;X^4jnJ`>SH1C4x&Nu$Vrw6EB>`+-k18`A@<5{BXQv%P`9T%V0}C z9BqIl(b5M;9&G7r8G_GMGCxCEI7IC-7S7VkjNivv8sKLe<1>Tst7>}U^J8!|J+X$2 z5MCWD{qZggSC<41##!21Vz3^Ia}BY4gl)ZX-ul?mAH?7Ouqa5>crByMe;$0M_~(XO z@b^nBWPKQ}uUJewSt{e)Z?Clpjx`)dBlnPmBMrc3ksZS8U(ekh=jw^i^|2)2y!cZ% zxR+t(7G#(3s*hiZ@b_^$;d8@qlh1b{)ENS2w&y%!&Q+h?T4lKXWrfiSu1{e|N65YTrd8JjCqaGmI^pV@l#B&j4+?# zf9JV(z*8B5V+_Q3k-NivkbC{-Pq#c#!*wLSyUR8POYFeQ{PiRQkSV)R1x)zdQFw0gXv0iO`4};=(h9+bPqb2 zo~q0xw2e1M{|w2wp?#+C^wm#%dO(Ja^G^Nxa*vaFV8#q zHvCF{8-Iwu#6RQ93zQ%V?+asu>B0(Ozi>@>Aoz(D#o8h-HWb^6ABiKxmEuI*#s6C(s|!N%SOoF`Y@Tp*PUq&==`^`ZisHslh~Ij6_Cfx-#+1N6dI8 zg_+4LW_B}&m~+f8%wr~)b+A>~x@-%KQ$KbrJCj|^ZeaJY*VtR^eT-5NSA(mKF&e-P z=2md)xvwxn$GKm)U%83=8h#UR6TCtvp}R0q_(E7Fd@o!Pt_v2itmqU6iKE0t;!<&~ zxKrFG9ucpJ_eFoHvQ$@+r6y84=|icvlqe-j6Ql*wCMiqGmUc-erC+5#C4Y=nQ@O2t zU$!VttRJUij8L5vjf;! z>^3%s&11`QEEmI#=WcOB_}}?IdAm?kkc1|}hr%EsMVKQj7S;*dghP17uLOr!L#!n> z5TnGVVi(ANviOOZCaw}Uird7!;$h5!V5z1gNNuF9(lBYNlrF86zLs*N@1;WNC7y9< zxuP5<3-U^Ni+n&nDqoPF$^J?irHT@+)KwZPZIqtMN6KJjv@%Uuq-<1nDBmf+DX%aB zL29TPskTrP)#>VDb+>v)_0y_q(OMtvGp&SPU2m>;)O+XyF&F0P>H2DYo4#K!XVf%k zLoo~^+URTyGbR{wjm5??W1X?vIBi@t9vIJ!SBBm9o{#bQFhf4{b@%o6jq!c%TkhNH z+v7XnJBnwIc@l;1?f@mIGL#d~-a|=L3uv-msCIM;y_f!(UJw0KjaAq(oXQR1KILe> zG2fc+$Gc=k{!Bh7pO(Az3?=Uloh$Qlr%V>QLO#cj|TA(M`RCvCzPY zVo9qnzD*(5l3%D5G;(sXzER87RK0_4Nx|>&!}>tXE0z6_t*6GQdm)W68a8I3D+bs@ z-aGuv_hV_ir~EAN!7Z1Rje4%G8cU7UhQn9cXNmH&L}Gg@stc3O)aOQUXSp6iZ*jMn zEq$s~R#kP3dd^tov&0tr@s+4CR2MdxwZ!|u?prJmq(Hf{Tw7-4hH@LZn>gVce^`cs!K2l$+GqrWvKJBFDuZLi?>gYT4GkT%^T&FNTEsT!Fb>k(j$K{Lm zb%mxH<=f=D;IkwV@5*8+M>V2aQf;UXRA;I?)rT5Rji+Wam$)##79Yvi=P91!C0^sB z_$GWbAH&D;9r!rDD?d=_tnN{BHK)jcxb!+bRzU!GCdmhXfE@RnZo|cE#fZ-$>L~nyqF?R z5mUw4m<#j8bTLEB6jzJu#7$zBm@V#tCdv_W#iQa0F;6@rUcfBL7YoEf@vc}T21#Wh z7qrq?X|HsJeN9cY_njgGM#Ous7W2$;0}9-D=R*dI>>QyS2T!MfFZd1OR3%t-z>0;c)zmOpvPiYQN~xSGsTw4{i5d-yR-`@F zo@y^Oi|()6^Mwf%+d1-;xA#45UQLw06=pFPiSknh|2vdiVndVGu<`X83S;VYm zjx(p3pP78-J`>1>vNhTI(B*B|PHZ=JAe+KYXBV&s+3(@)Tx0LDRbWG9t_jzQn+A=P zj=S5&?comLu1fL2d}Y1{Uz=w!TRz}>@gw<(d@8?;U(aXr-}9&V3w*FpUZ^hA6=)$= zh!^?^ zMo5cbXZK3qNSCD$xtbgSjhG;hl0Shg&5^gtC*`y94OrbLu)CENm(l<;p{3GRiBpCv zpDJsV&B_VoC*>yQL5NyUZKifo6V!p~5_Pkht>&uN)I#+S^)JX%RjrOjX-%|vtsnfP z5!z%eU0beg*3N6!wOiUV=p9DaF+;lQz4gVg#aYmT$Mti18KaWngf;dWI;=!DqrWlS z7;AiHd;yER19RvEG}A4k2)ZfESJx-{3|}I&(x5HDt%|2pZvUTC9D)3c@a-+G4+)T*jLCEAO?louS%kZImGyZ+P6W@dXl%LNp zgP$CgDRYG> z&9-7cVW+ao*){B5_8V4}#!J(rOq_q8bXY2l5wpaWFm2e^#D>KezkevskSv)c5cOLu z-RMv0AL!D|`y>I8Q^Ncez%j5xgXOXEQh64auhp|9gqkXNN)h=syAWN*?1l~qZ zeWX4WzQ#)Zf__ym(qHN|4Y$D?jg1t@&vN*4Iq<@-8+Q$tuZ~agHG_^w@=fr4>O1SZ z3?1>pXUQvJISRR{1dpyhB~Xd5Y*P>$ZG(7w+){9mlBSGHlKF2DWJ^lyl z;3{)&jzY}(5jO@=>oVA?ozUc$5VbzwUU2oH#~VSDC-TGj6n-YZg5SvR=W{WVulUkJ zWsIaIv=TaEBu5HU;nC*^N1(~`;m?;6E5M_dpv_y0apI@&URGc{u0X!2y~bLk6d9sKzd(ofQL>8?~wcFVl%lRtz;A1;54kz6KkmUqg9^6zGZ>xMSh zlxENk{gjbP3jFy!$}wp32g*~$hM1}zv_nJ8y)o)!%)AVBC!(r6c#QYe7iyqZ0VCO3 z>jr&39W!u=_9aI0Fy`P@t+ZZQcVjeLV-_apgY{H>j=oIa0BwFnzl(VoVz`X@h5)~^ zy)nQ@GE{h#gD_r}q7tSLJdVC3Zj@%pg*QY&?dzQl~3i?=PITk-4oal!-eX7O2KX(=8#fgGc{uLx)JH~rCQ>Jt4So6kzH z#S@V;T7jHV5U(T3$QND+(-HaJLzdx7d9Qp8@$4(PEd2LNN@;k$uk<=bQ+O4<5a*Zi zwen5#EhYEh@HfY07PFE0p1IEa#yn?+vm4o;*&_BCH;_Ln+!2DrdSWYRSfX8NEeV+) zS|5TO&oW~ZyphL{hL=WV__)n|Iq*Vo%rJj5{~C-;&QR)8stU4a7wJIe47->+! zE*1X7d@nC1i2cPxF$u9rfjC53kC{9bari?b=aj!$cbQKwWPXKadCm3br@%67;D3Nk zC@9^PjCxYz^>(m=tC43?5kY_8>*-s7n9|?U6^DzU%F-;|g1(FE z2xER^NOsPH+`~h*0w-|sutkTtP5gI!9*(_F6s4ZhTxp|pReB~hM4qgwI!FChZKQpu z1?fLvW`FM6PVO_--^{C*rpD6S=;!o9W&(0X9M=%~@EZ4sE6)pjU+BNK$PVp*#j+z? zw^jU2jF5hjZpwa&gcy9M(ggXl>Us-(yiOwv)7BVd%rI6M+l^DkJtM&9^zpuK$OA0( z?e?AX{o%93`x7m=(+qObu9(t!yBdz)j&& zx!GLW|6_!6mGk3yJ{f-hW4^A?Q%Dzzgb?I+dg3m!MOj*k@u((;YMr%ESV~-En!l+F z?{H-VMu?LN)MVX~SuD?`sIpW|DwSGI?L$uL9>vp-=hL|`tCT`?GEF!qS{fj2ky@`1V^R_#4AOL!96 zJxHga+rLB(U(uEs2%T2QY(X@ChP}XEW;=5|xna;+Um|+A!WD22 zxo2EeWT#pn)7^ug3;A8cXYtqh+sLYxHS^sKg_*)!Wc>CBRYh7mxok^LO4XBrX6 zvEe52{mq=t_tXRGL;4Y;u{)vnzJx|S$kpZ>@|}@2o5`Q%R|zx4YmoL=%1yP5)=2wU z+pUSn@O^50YrHn*`@SZ}Dk|1j7HS=Jm8wk7Lrk#&xq@d*b+!@Pi=Bk1;(Pc{H0Hrz zWH^^|N4VeN{chz4iBZUGv{H5;I>d4CmoG>zD;yF=o>@Lyz!t*uDqX*`+j9`YWkQBh`j{c0cIG3;JulhjAYo zF&=RXjuBhR)azZSiu88K-97pt{U<#hIhq6TC~h&m;hP5YQ!y{=3MwLpisEs3o3aZs zQBfTQ@BA1226BG9Q3x&j&?xH*_j!=*8;Lj?$Br*W(wdf!5I291xhg5H^)dEP#!B~ z;9q9KjyzI>wcc7SeW|`jzpZzL#-C|q;YvP%S9717KdF>u9Z-{MNcDu@zM48n{YC{M z3%CSY!4CV?o!QLv#H=a-?L31!z>Vcs!^eIGtvL)C@>@blWd06`PsI7se(3_VeSlm? zZh;7Aul!Q>Dj&iFo}pwZ-zr5)9b~|IsUy@>b)$L$dLcxst$m<|IGX0p(G4uV{X6!svQ(m&m z_~$$?t`}|a4p$=kQbz6|i%MT*rgBknAPO3e++ZnFmzSf5Ajfu-=}G27W+~IZ97lH* zXNuRwD$+UJNs(M%>8ox~>uJr9!*#*;jz#2a$tq>~vgPs2T2XQE^3GsZ)ARxQ6GrE& zLU)vwx~iA8e62t$gcdH&`IUs%zSFo$o_S6w%V=NZlRp2oIox;Tx(=}ZsZ$& zzVh&qIwCjsu`d-l{gWhGgFY=~`lVHnm0833leIy@ON}_TyQvF`7q>(35!^fh^bQe#;YU;f(ilLfQcThtTk@K#ItYbBnF>9w^ zv9a73{wOaCsi=J#;+ODryGWxD3GSB8O9_bc7OJbE=N9NbWJC`jA9@!VQMa$DZ@h1X z?_1xmK8wR@$;TrvL)D>FR2Vx_{g55ohn!dutk~0kla1esdhba@3NPvUOcXnV-NG`+ zV_JBB-j2MbgRg+xS2bwhT4wIQ2P#w5QIp~j#SRrGiN9m~D5(W}$qSJAe5n9gth=zv zkEN%mK&_D1L0j*Wdnie!u1;0FYGbvhIt;#SnmS(<5OF5L)=WY6FhlzowWNc3o_=0; z7!{1IMliAf$+)w0$isG2=6)oy6lS#)0af95le}LVBL2hF&(t3nFPi?Co=bm;`A~$r zDT}yEflo1(`IK3P%=XvFXn(`}#8hQJX4C#nHlEn;`P>?=I^O`bq%nLZe}dPLlNkvA zBUM-m*+C1-XvZu)v#;>By#bVQg~{?cJwF&=ct07|UqpL&Q0UkmXR=hU{5( zBJvi|LJacC9fUZcE3(V)#-i=uX*VF9w38QLJk;s-& z6o)FDMnzFgPz$vqqw*Caq2}L;8^zt^o^X};>ii2K193%N=@V(Gq9e=qxms46sm;|4 zy{W#-w-1q1E_CV%U!Ly_s!f+s6)*4=k}-|7S}p*Hhj5p{l;a=gi9vR^12kP%DxON9 z`a_DJqi$%}epTc~VvrH} zR9m4P(vG9nd|j)jOL|Mam%dQHtUuPP7#~4yAg3 zaV|2{YpJamtLLz_%VE!JqgFo#cHjs+UOV#9lh|djxw}vsy3Af@pRh03V6F~qUnAra zhj5=DvRDMY_Z4zbW%;4}I7AQ!`0s^=$S%(jN5Be``tFzNDcHBCYEvyno2{qm^I%`HCx8E2#wSa%khhdKAh-IZ? zQXb-xQt~ckpOT~GDo0Tz$b(080Tr`+cwdFeUD(;jcwR42XZ2U@$m@QM9APW?Nr#Y2 z$U_cS(RFCSSl<-n^X9>>S}o&o`j7ubl5?q}sMh4cvRyz=L_Squc18THyB;7Lt1_wR zL|KFk>~&@ivUkha(`;2Pnw!O)<3f;U?Zl7ZBT-R5BGf>htU#`-q^gJX7RCbKSCF@- zu)|hTs!5<)oaxN;XGWodcN`iqhF!uA<)(8BxFu#L zVkfsB{SlY&oI?3}yaBI13BKug_+fMSbbc+o)C2r)X3SMZXezWvCE%9ONn8jSJR<%e zUJ-A=r~lKe+mC~;d?f|TRgnXea^hBia~M!tyaz6E{%OfHG6e`WMYcooI$ zV2OiXxr=N^b7as{)h|)YZj6|Hpf*X{sU6W;Ay1x6G6ecg{d@gq{SG=+UhAdMt3q;g zJ&`BRGtL_o5pQqAEd15?kn}oaS}kFC9yTfjbKQfQnS~C3kxAWwnfU;fc{i#lZ6UeS;6-fZeuS2I z4#^GYJ*X6aglPT?bpBj}Ur`#BFJ5Ra3>VG|yr`qcXDnjjz3}ahi|56M;xpuWB9LqA zkC=5eV!r*-QK>CF&+YK^&fq!Sk{`pHCeLP!as+vxUm=Mv%pQ_zY6LQ#I=sL3@Yprf z!++NrqGw^AehkmWib_;}RBm^mH{oaF4*cWk$fc}9q_YPe@^NUXbG{qCJHAIgeE->! zjOR0ynqbc3Wsun&)Dh|uBEu)t2dEZ&LQh6U;B(CD_0YlR5Fb8=59>ldNJFNjnR_0< zOhxb1H+X8-nA@l)K1F{>ZFElcVu#?V&164=9It1;gU=noiCk;5e$Wd~kK~`{pgQ^k zc^-R%+Tg(2atJf0KM=5YC2o=Ly*^#h=FeDt4JL^r&xEAZnYPPzU`>o zhSQDF88DchO3$ZP(pmI%`gcfWAQOT-YhCm}NlY82Bhw37bpm|zY-SIvU_b03q z%MV7q^)?>_$*KYgl8|%0Ew_ZeSD~qns?$-sIE-pj3Dm}`>h<6swleD$lTf`}gKU`1 z2s6eR+fbos?~C(YdgIqxExFKPWzZwk09|+QL&qPYexfd-i|Z9tk}gkIr|ZxSks17k zK2Kk!3z1U^V|ZpHe33)UVN-wo!9<{b)E(ph4f{5Cbc)O4&%ndH%(p{SN2-cb;cI5X zu5HDrej}VhZ_s_Arszh_(uW?bdFTc@gIcgIEk_-3Kf0^Da%1^@c?PP6H{^TJf4!6o z>I1cg7NKp_ZfXwngGi{UA25)O&$p64>xsHvV?47jAftAcg)N$asOBj%YonuN$>33S8P zW=Fwk=@PQn5AhsI$mK8sq}xiB8_DfZ!RaLrLk(w={5dkoE9I}Do4$4r7mE@4(; zw(N!GoQeqSJ6M)-TzxK%Ys9zW+o6+UAU_P2B$GcQTo5j!##VrSiM!}I>5bl?7veBw z9P|>Yldm+rx^I+BWCpKcF8FCZ^#1xH{fI6a{mlB2&CInlMCWWzWb{{1bJ-Qh=^iq> zJKpEUp;u)O=O>kwoDz*3^H#~v%z+$|PsubSelDc_nnI(yY$Cc8tD;}%g*MALLaNU2 zZ*68>V<0sO_Q8#gz%=9w%X6I}W!<5{Pa@tk5MNvnz7yv_GRi3NI9gj&!kg&PdJJO! z4tg9qDdP2psIZZWXgYcoaol*DnZpTXoNPTDwI%dOe{>g}WPihRD#evSCU^!i!H>{u zTbA#__c5cI4e(EnBAXMAb4DW`=xf#`o5EY3Oe&J-ANeubSCk#yU3JmdWuRxZKRt{dkJvq!sf2t^XY>#cf>(7I z{X`ehA6bR1h3bR^?bik!33J#l(2ubh*-3K!ZMiO7f8VNU^Tp@{`wG!`9{l|RbfZ2M!=(n2f^O84QX;&; z%g~4(g*W?vGtoV<4pys!8i#&_cyzivK;3!+tj{d?r^R|>09B8E%6L)bXoB|bmf?lVY8EWaF{L}OT)-;v{)C%%We+$d=kqWCJvu74x{DaR|zkk?33w<51T zU)!dml9FXJ>nIzkddwZRCx3?@EYw3R+)3_-?9gP){(4Fx;)R=t35IApP#IXI8;El8 zdu&Xd+yl9tIaE`o9g~O*vYVZadGWSqt`&EhyUTS!WvMoNml)B9yDsh@-iQ9yTJM*TWfO7yFCkSW_-Xum z%0gueM(LdLhx!4!iNDtR>(9`iwAiqbxs`7-b8UX;g)E{%&?QgNU0|`NvrE}QoE^F2 zjubXG9*={V@hd+1Y_(KVBdyznyQF3;oM%A>329+)bXcOE1do3-^2aIq6x8DD89mT#debQFYmKg{JLF#Q+vJIjA3zmbyj}D@)CgbD z&6qEl1kAi}t~)mm9pClPm9`l5iM{+)jOA;1=AFb$sU$jxqtKIh4LQ2fN*(CBj>^Z% z7pSy2(f!d`8wzjkkah)`yRv$1}jXBzvAE5;v)Ia>NY@?At$ z1HYfhl8);Mp;+{6y+VF|IWo`XnK{fvJl);UxWA%?@ILy{CnD9Rm_|4c-xsa_8KCp9H}ev(Vxoe(eHm&{sT2(r=pv+sj28{JA%kGQQfX4LULEb z>$t70gTEP!F0@9d@D>_>A@_$13bUK~v@tanefgKD$FvQR&VFTJ&b`R`T=p3ANq^_ zelpj%zqt2!ns55fQ+dTVK+SBA;DbIqCniguN@p;GH$dk#Lv|xs$$(}$3Lm`&`a@;- zWOLD5|GoO7T2ixXjnUsd2oknZTd!?FF6b)8w7T8}UinYZRwC^5TxgbY=-1wdnzP-q z3)fm1-#3{~El2IKH#&AlB4W&;`@(APLyTMq?H$UiLL*#JFMOv%6T6~POCwu295F`* zGMc|gzoAE|v`qY}w#dm`MkH5RiB`sK61L{)UV~I5LGQV%#J= zyJd(Ko?{fNBA3?EScE?FL&g#KwAWCr_w$wUMff@+6FnAD|2E{)P9U0tM;L22d)Dmu zrc6C#vf5Cisn4iYi0ABxEe0aq{e`wNr4dm~L=Wsi<`{Ae@3A^Mg%XixIKckMmPTaT z05KZr;hzLueTAzATiQq1hd!TN#9SwYcz9I_(hcPCYvKDS^<@e&A;}tgu-3_&idvIGLy_ty9ZssrtKFn`T6Z#oJB4_oTkWn}2z<971*@qL_n_%=>=VKQ6!k3NV(m&&^_tA0giL3L=#wn`sm zB7CpS=ySS;?!vOLg)NX@9s#-DjPC7gxWckp1FePD6FsVP(Vu!uyQV#XrfPt0gr52c zeXhP4w)mR%ixH-uzaQUDfY$??ZMWnBrQr4G z=#d|a?^vxs=jqR|ucc5m(CN;o6i=n!#sb%nJt>XM();KjoQ&+rBlN&@$M-=F;LcC5 zD%X`8X@2MC1axjVYI&LH`3pmiJyNWXzCV&_*TkRD=QkOV!!AT!gP~n$MZ|0-+2#4D zO=h42W;LvHX|*aWp-*k9jy9uie=QJ^)=KRs=;vzaVt8NghWg|OxW}&$SzN?7maOD{ zGVNxMM%nE=oqPiF4bQ07tnE6 zkfW-osIXVt;fti9#+DC%CkEZ}V~{H?M9$@geqXPL?;MQ5InSd)dySkk%WlR?RqzCt zqi6R4^(R#w-vmg+b6bM^ePd+q&!W?0J$I73iW*c?c*;NW--=fyr%WTZ9ROKafX>*T zOB{453x=l`a*|@GsFe> z4#Y0_p;ZvWH9{|FA9R9Gk@iTxLkm?zez6VWvq^}`?#gu#HK!pm-=Q2vcAG|D=PG;` z=Ar7vh>h1$P>V^`W@|?=OXecOy+q#*8+8ibqI%D0W9-6r9IWWAeIN11PpHuq+wuO? z5NZLn7hTtZ|KeP4m))EF3-?h%b|Lc+Q^F#Ht4*Cpx(hJd7a239klkvc( zo`t!+7XHF5jBagI^r9eJGm%&5g53Qf?t6^kX!r~ita1)&sE?$PsGQ%GpJVn+gk1Tc zw?0OX?N(%T@1Y;F5#qno$VfH%w>oM8^wTj&H|`d>hXB)`R;ig(1~rH_kOLTqm{4as zqe3&4E#g|D&*Njh96AtJ2y29mfgpfD z!e;8bQM<2YbVrZ=9CDtp08>x2LMPZ?G>PZ3nEr?}n?YhbAy>Hx*6<*A?0>a){_%Cs zXa7H)V@{gW_Oy#SZL>#FkE2#`k$$=cK<;o7v;L+x^GaAK&|K&gaMbx?b1o z$Ms=)`70_~HolVEnJIj{r+?142S>%xutjUYXLnMq_u~nE1Ts1a=kQ%{Qs=?8Z3GKl zfK%XaoZHJ`RrK0y391tuN{xNV_FH;$mSZW;Z!^5vS+Hi0<8C{YzkWSuXmj%}oo~B{_xyJ9B$5F9z&0CXf2RE`D%SO|Rll@v zMMXFe4dHk=-%HUQ*YG=E`2PfjC%py7PEIx-1GG>#jJd>2iR_`0QQ)ZH%oR7Y}96a$T+}rz^ zv&r^ zQ07O@V_`ccQR7d{%*AW{Ty_Jqc7o=iUbFwf(dc>yf5?R}thbVF{8iRFs2yJi&mT_( zc@P)CZ{**OCTPxZ0ypH~ z$C0i9cU#7D8FzaR&uq+egC^HzEk`?Cfm*T&&%u5MSjbCVhkzv3!wCF6YXvUk^&~&~(N|~rQ%HU+B1^Oa z-+2Uo!^?PB{?2(!frnqjoV$WP6yXUak~^D=uQy0$@dobUTJAM}e3;+BIZXu7+jw>t zgODZjz81euqJ1ut`^g~t5V&(S*y1kxybVlAIJM6>cS$&IXHioIKHPU!!^`=Q6lezH^0yE0PeE&F#AvA2z`O6 z@lTGeqz&G6yyy4_jBEla?1SLE(w#P^3*O65f5;()ck+Lh&wqoR7}Di>D`z_uoxwb{+_$+VubvL^zW-VHW*%hTDvrI&e6~gQZ!ECgW7~*! z`w!c(Wb2whK#Ndof8tn(irUFr;B;Mshvq$3s{2gl_~#X8ec$sdYQh~E4`m#LcPcY$ zz3)N(QWrV0DZBy4(utO%5D5zTBWmUc*$HUZ-^BaOcjR>(RCgs?RK!s>k5!jy32Jh{>m3z*Px6&gWfd5bAsnQ6pJV5 z*nh-XT}|KImhnUS$)mog<#IJ}Q>_nmf@@$A2!vTX`OJ{{^1wRF?yPLM;mJ#qePX zsD=yZOzW8y7vcSpH2G9gv`52(EM_iPMY?1MXEcwgGvV>F?ThS}^JaE) zZ!V%g-NxJbEKg|!O?J#-a2lN^r)*4cfu9zFpKd0%-vc(!Kt1`P>t^oQ(=Z!D_)bP# zqo}emr_}xKrb7m4<>jsi> zjrb^BumJveQnvs%Z=vtI^z2{y-tc|s6W-`5e={2>jJN<@I8Xe%f#bTsW!X28!`Vn* z*#`4>ILu!Neg8mka9hqR^vsEd2+zq*n!DO|8@gnWr0X}BL&7AgZv}r(b)7|8VJ5uV zO>PJ3@j{;dVeE9ci-hU#Vb%8c&PDB*PY1lhJC!NoBwU}D;`v;M<8uoc(zzt5FG2gg z(08Nn1>dkQAIy3lh`h^xCf>UJNY`(G`+J``dN$gXc>Gs^t~TU6pYxW~?a)NSApc2V zj&}3TE+N5nm+c|W@VNW#XVmFuaEN~u{oruNQ4Xi06mID;HjumnelKH(#k)9=7Qzy4 zhP})ON!3uz!f==g9;+uE56BXH1vjD>+|E?pgVTO4^YjVu$v5L3U6=7V*lH8n>3gIH z4rFS&$NMYqTomrD@KCd05D$k#JT*()YdutfVGvaimEck~B1C*C{$kiXJ5OUt_RpzJ z!=TqOP}32dlCr?kKm}Ojy})(2UHE>Zp_A*}pZ?^=m3JDBrsZ7eBlO&($ZMQqzZBov zI<9mJ9cU`oc@kabQaZ~z_@^z7Z4NtoB!YBHN#1VNCIpKT!kKxK6XF-=`-pz4 z&|lpXJZ8@{&k?ZDr-AP7MoZW)BOzl7ti=-2;wx~%z6915&NavxzJrcFJ991!%KXgp z@JipF86j7EAbS1nxVJ36>As`k4J84##5YK4B8A*vI_|wvrn3_k;&=ADyQt$w1gbgh{O@*8RE)TQZc#`MvlwnC#)yO*7b`9- zg?ssv=K^w4-_Q7gavAr~8=v8qzlk<|nD+=Y=@Rb+-Z1I*J8?+&z+wbRK^L*Zp(Lv` z>&Iv%J3MG__zIaRLvWHI?te+nPvkfBPgHLG2e#kZis1sDgzv0$oCPu+c3uJha0FU^ z13L0J?=X$b$tKm3hdm>nQO_7!qinpfvx!J%2H8O*y2B1d_)2`t6Edgbo3Z1MSLPp< zQgjGA6{Lj>w9E_}(5tqP$echPv%_=|>KrncdH!gUI62gUj~s3~cLEB; z`7lArXrX{{*CEuVfkOC znNvs}PDBBFiVS?U=On7ycypdjd8#r_+lW#3G>pAAbEL=wqv9;g;l>8<#?#G}8 ztoHpc*LoqdYXVO0G~Q5Kb~5QPan)i&Y<(ZXFD4tIL9G(FpGXs=bQ)LaZnMS zq*J$NtcTe<568kAnNGUc@3PW-=fV1H!=X|RYihv<^nFfrI$rD7@OB@nBvvZc=a#b?I$>ftjvEWvPtL)dh^NX>$;6zDQ{V>IZD5Y6_zdsDGxt?b zisxuf`(wPLCuEdlEF~9X%gl%4D`hU6f#dCJI`U+HGI)z@3EaldnW;2;Q1cn&x=d$IRp2UALi;WI9LKqSeKx)CgDQb58mv0Him2faY+j8EBMj3;4q4v`7*HijpWrg z;4gX~SBahdT^HiMSd9nvEq1mX0@ramde)Dq1rMRRy~W#dh|VtK-R9lwNp$OZFw@IW zNbUoxyolFk659jjkzrUy7rKx4|HasQRh_84Z-VVmc8lCe>SCRJ8rlCH)7;I@`5@{S zK!vB{&1-a@LWcikPc9oD=90w!16^b$dh?rE>2bBE*>^fvX(^1gg_Qhjyk*C;+2o>} zt8*Tc^Ab)}?b^r2sZF-E_8d62AZeT;)PiTJRvX=GaDr{|oS*S6?|Y&VbMoKLUK&tt zCX%S0f@AocokOntb~L0^ z@^cr0aDL66k7oRE^GJifnSCgC>00>T_X9`chfGx6=v3;{N4CS5hi|~sIK}BEKfeLp ze#~_c{!TMm*ekfyR&bKv@h(8E-Dj+! zN?OhiDkILBW?`?oW4}L}xv|vtb6h!{uBY7=via7GWK~`^QPV77-^Faj=mWnW#yt2& zW;U3;Eh`IU>0(s)P5vjdPp2|;2WI4yiqnD~lc?UMGi-M_pCh5t>3#{1fRViSI?n04 zbmqyN)i*Po-cs)}ILMpOh^0Fm2gWR=zM0wE(|}4n%|FNQ@qg2QE{gHB@FCBm#lG%8 z8@=;g(AXiIqiQ_nt8yN}r~0z&Lm5s~|NQ>8StJCCnSUO@Lp=mPc`T~z5A4S{3Si=X zP44+%cxflx!>K4A-+^HWv%zMqdc-Ef3!IMba5XOH``~c?U_ZF~aU&cou=WJNX3eq+W%mm-TZS^3Dl*+4aHfAl zKRkv?l7*Le89MX>%9*|ZUOt2wSvb=bIQXs&JV7SlS#qz_aqgW)ML7%3Y85++o>O)i z?#yD=?;gy7J@~e=%Xcsp+(Wiz@h+Je5r^4{+@ta@sH8 zeJeu!spWkh^Bw9>^E>>Hb9FCpIwxm;jaqpkdf`HREvrE1S-ADi4*Z71tS9F@a@tyF zQq20^8A&rOXVPwFB9NTXp}cjs;H>OLOCP}Z@;|sJ=8$i?-}x9-XbZpjO=qra3Es4) zQTN_N-AlpSaT-rEQS$W1?RtkJv;B?u9^+XT8t-t6+X-jRL1w2wr9h; zEymNm3Ju^sZ>jGnc#oANo{kM%jAy4iAUXIq(H+c+|BSX|y3HB3A$yn_KF$W#fta5J zWp}$);4Cf3I0CeJIXqEjRxXP0PqMD@zei;n&VDxMb-9*c>{^m}zv`Kx-m_WAn7rvc z!gVu>!y5KSbg+SH0B7_B&jIYAapQ734L3t2p5N7Y>>hv#GG-i#!>)lzqMWqTIx?*5 zNnTIonOuqjJD6FFU*ie7@K@QJRtP@3-?zwrAql62fo*UQX03@o2Fb317d{J3WFuV5 z189F|aBjPq+fPCFyBY@KE;fNaj(=sbXC;66ubvrTs6sr)GrSoj%Z&KZPr|*Iz{Z+x zwEkJXESzX7{nI*ze|U>hC^9LLt5TDk6!S@+K++6rvnWZo_XYrVvsd>dr(5YOW| z=X=hRsb$BJXk88$SBJmu1+p1$!FlB2e_iga1%DdYoU;g2RSjqJJFZmrX3gU7AH#He zt9ohfWna#El+;c9rp?SC`!N?z^UdM6o$tHKcMoUl1@xsY?9F;dH)k3BiT-K+88F^Q z!g&`_kps`Dr|gr4KPls9%AIZI*e zr*8K=t%CP@hRI_a81yL8?C0Q)UWKag47GL}PLc0<-bQ=A0p~_J7LL8c4*Wr9 z(vz;|3_Sr`@E6X|Z1yY_QzPEN4}Tn5*|$k|UV%UFZr%;qxVDXb3g@yhQ~cNg7Z(#T zYsUI{JSK0G*t|C|3l|a$Qj1yhRnNljeZX}dLBA`)ZGS%Oz{xQ2vz#lOFO%B5o#e?K z_}H`Aq~_09h)=Ydja-l75beh`{~@~CNibaBM2b--HuxlVfpL>lb?({A7RpG$2fNUaQ;EzxJDcbuVX6Nl3js!&6Jao^P2pfZnMrk26WP&k>By5a`f6q>>GH`Q(Y%>&f9rT zXER%g!uVrPGyZ|7=PA#N%vg)?lMJHD{sI;H?^)~M9b52i^uQ=GxzNXCpH_?fjefK0 zq08{bS=rcli~UaY?VU#=BEBj|m`+wfNT7vk!O>-E9`tPjW5aAw|24 z)ZmpMjTYC#Z2x--ZsS<|r@wHIx)a%oa1cqB>-cq};Ebsm2QhWmqv1XXTeE>JN$=pZ z6E2{fUj8Z*_W}6F4r0gY>6r`JarGT=)sOIMOe2RNyR8<$Lfwo*Mt1%t`eu+xIoo%u z?~mZa3H}58Q~jAZKPBCFD`|wUDW`r$_V=>yW`@}x7J4o-jBlrXB`?YTkepdLJ~**O zWSnn9rT&#T8kyP6>JLaHy*L*QDu@boC3C`~u$f!&fR6Kgx3Ir7iYoGVSj}1VbMXXS z=~&I)i}9{;0=or6xP#V`QQgET{D*S}p1w3Ur?<7e;|c%TVvo2tMK z{UY0O=7P7^f?i+t1~U_J^lcCWEIZ$G`G1eJ1xT@9Pao*Foj}sQ$bJbM5uPA_cme0+ zR#zHs`f9h`I~T>r=U;(K|Dzb!W0|CRxoK?LD#V*u!oTt)z1;)`In3$9!95=j_xZ|| zN2nb?*EGdn*oSg3S??oBFrLVBKMy}=NV&?p^eTRb4|gJora2_S7Qkwq%O;AY+a&ut#qS$NjqQc?@2Ah3=?X4<$2{QBB!ij% zB3rV$OaDCyL}V4uu@yd~9c{6L zNvO*`o@p9&kGTyVqsIhuY4LbNMm=9A1`PSmaiO6xrUS6 zK+P2 zTzA&u%d5>951aJuf{&ZC+Yf+xmuK(IyQ_pa>82K z`P;$V(}Qj^z!@9ilo{Eyk;ImbRHkkh=PZwtRtU2rC#?dPObt7v>d3Y?a^700FC8$h zJ=B!}=G+nZ6(grEiF23AHf9%_nDdy`3pshEJlzV;UJa+O4nDgP4_zxyx`XrAL!NNJ zJ;ZF)Lq!;*CdfUO`I}LE*^+HV<4B9As|>l5bw7)2JCHpGK{}lwIN6ZG>sN#Ga);x3TqofF zBRX044$GUG!hS%TZU)S!&K7D#E9Z_1zZTY9Rg-2|qNG>4s2Tkza>KeO!=$?-Qq(Q( z<^D?LDB>QM#qV(~6{KD(NDCFDof^`OM1s>8`=CXRd=Pg?0I<>y_gDQv67UbT`oloY@+t9Rg zHRV>Md6tkSS!#86K}5F}MA;lHy>6IY3#NcMU?qv0%9ccLz)yxSNP@5gy|r8`U`-&* z?!*R?04;%5+yk9#AM4e$noLP!pk)g?MN)KQwHFMRhm)v?ok(SDimiZEtIb)7Qr8ID zZNnws30L2P5;@2o4z>n>u_w!#L)}v$-vvk}EpKBlMlLym0%lCvQ4v!AL9IFuBD&ik zio3ZNm)tOw%b?xFN=7c#?q&0Nkg8RpyUr`s9Ur#0P_LqNm@e%w12~~asaGc5CYi#Q z9@6nu`;u%&y zgh^3Oif)VX>W=uJqJlC|K?S`>&QZN8Z7qrqIu#l8<7yrP{|hp(pxq~X(%6pXqBBWf zD$=bbA>Ex>tGy@!L(mMv9wl?pt=Z2(HtCJvoR@B7RTkH#eJEc$P>F6~tkli%Vci+u z!oIzzZi(+@4jf<-9HkvKDKCm?4&;S zaFPe9k)zZ|BQ-Lab8N$DDs{4eb6kS!BSa#uifzte^3oB_fwbwCm~PE&46^ZQgmY}l zGINeobbInR`YGfbmw|vPRaFnG+rLRsP!tr@#X0V$iVkZPHR&Gs6y?Xfiid)lZ7d_V zSHWqn^{wPIOWLHx*G4t%)N0zVb#zoKsKswZHA-W*w~JGqkB`3yUtTHaTB>TTU+QTD zJlf2;j)Gmf)p0+lyQU1fS>8%TP32sBajN8NcC|!PYL%K#3+qObCf!96&F;+Z;%xV4 z4{*9iaZi}QvPqopGZ1G%JxgPIR6Lv^lDgtJn=-Odum0-BvQJJC;m#3-}~OzjEN! z?;8a5%LZloO@nGp!PILCy@hRO?TRRS6j2Uw-en`AMR&)hv18E1dCv!*6sc++LbaB; zBMd%?=(heg-P7LNLz(k70?r3oF%E7}jqSH0d6ssD6*2 zSNHG@>jplPP5~)Q0qN9$T<}Rym8UW$xC&}OE%>BfcU-pM`EI8Mbc0X&b>J^K& z==UNz^-B@`ii$=Rd0MY~<}060UPuKfV-Bd)Z#snOD*^!EWy|ETQx8;+fS6C6$wr#}sEi#Lu0i{LQJ z=!zYndc2X-Z)G}3(=VLl>bFgb^s6QzzGqU!=?^oV zM05j18{NJ`=SkTQGR$;h(CyJyCd*V#znAGG-w|XwDbWm3B~GUrPJcbqNfTa z(@8H~e}L0J%5-9)>nCyg)0j@Y>M{XbP@sqRB`&lOec};Y(NL6znAG`P(6_b-5Y0x6G-Lsdznu1 z^$Rg2I7Z5Khi?t1znYR0TT!yiPN8kgU_q8X;3$pmFfQM zYMn>x@$)ru`rGhYbbi%?!mIsKJi2MsPKt1e4i)(NA-vTp{1}~AT zY*VqKe!=_^*oZb|oqE1-tly+xhKl|h(7xqMy#Kl4{UQtkx z@$AL%y=DA-e;mG#A^T3;Grj)@(ER^JEWa;Ez8A)G@c(l>KMX7S&!PE#JP3m2_Z7*v zkrxmYKaSxA!T*Qwd&(5epqV}+e(z@6=pcSMLGFUvZDR9jXlYVWEKChn zSV7?pWOlIavNL!0UAE%;-!rXLZyQD-5Daco70#s`ToKwp8T?yFzb(~#gRZWFssMCX!uHV;O+ z6866t-b&c2BxY2ZOsl}8f<%SMx57IWFl|<|fuI|;(+Hd7g+nT5c8svkv^4aIZ&oQGn`K@Ol}30Uuu3|EIU#%MLw0t_gj;6V{s*}$Y$oXem2S`@s#sXjH=*V zg>M~T^0J}^6))6YaWR6`CaF zAo9^>%3vPqx!WzO$_yymD4S)<;1)z#97GLBhC2wNw@Cg*HiNX0Iq1}Fy`q)Iw)3W_ z&LXL^m|7~+L5vw}fEf^trAv81c_PB^%Tpp{GVtjqFN5>j(K@Txw@rJru(q& z8x~C8&rCm@Eli$GpP5YX)g*|+ah0+U-cGo>6#aUn%;+IHcXfO}jUhBeJqxjOC1 zsB)WOdt=jHZd|bmZCAcJd85tBh1`Y*9e0mx~~iNM0DO#n3JkFcM|3t zG_&O`S9On4bPu_!a!(_ihgMjTP81Khv%`GHKo}7VY>03n1#ltbJZLp~#<1L@@RaR) zx21AP&5{k@1>9-5&oML<(esjq((0!w7I2S4y2nT67uhEkg}>-Qtr$dG9fQ4yDXVgi z^L1t^XJ&~hs%ChJ7$=#l=StGfm8cQ5aFJcgK90aX#_Q-Y@`F_hNX?h!1R|dNiL9^)<9yc;Ycf?!b3~p|my$#uHu&MI9Vp?wnTxu=) zNdru3Gb*p_pNpW`wsP9V6EOfIGQ#hXZyI(}%S72UC_|r$&gQ446~fJzQ`zL%H=wSy zqOEno$O|7omSy6btSLAXyzD{`;vSI=sMX5AH>#G|iIUlmf;sB5qJ^dCQJaNRQF4%%Eg#fJ1N@wG5mjrRKZz3SH5IOeR;&eX1K&?q{!2^Kh4 zzYZ*4X$ZsjNGBRp2S|!~4~o=f5Z3Nv7@lGnAa_QOR5slKK3 zLgArS!b3&S$alVyA^xiPY?8GT7E+f(`j?yd%R%jCvD%s%*Sjm=b8FDM+tG1G$X=&w z|7znYN|%xv8RYzy>a(j+J-SJm(@ws#VL-=}CznQ_%BKPrqhOYER;3Cy^2WBqa0tI4 zbuh+mrYJJXgV`*^^DeH9T2600os3Q;pL{m7#kE2U`ax=(L6mbR^{o&Mp+r3nF&cKGQ#>OH-vVb^^N8et6Ec+b0F3xq9{#Ip$}gH<(x9_8L+ z9V;KrO*&RN{(13!i0`8pTwqa5P>zb$NO~%Yx2Tf@z%aa-xQhz3FZH8pkD!Ga@e7pc zH;fy>0&S{Vi#tFRYZF{{nEuof_wtAjpk5Uz(e?*96Qbvv=|Abz$6QsHOZ>tok5|MR zxa4|zO%ptFhhk4*e^V6+6iaQhSmYDb2Jw=Zl+{a9WxjwqUkqxg0=I-e#^+$+m#3)D zA&;70gnCzja@T-vC!Bo;oP96VUFmoDQ{dw^B3xw+oJ5P|pY& zoe8BqnW_+D=Yz`3SHR85yCpl|+O#)x!^p?(fd!2{l`ia6F1|>4_$oT_N<0nC{ub5X zdeGpccL-t{e;*4}O|L*rui<^H)Av!3dMEGWAaCRtZ=^-FHXABiAyfB`_pyO)(n2@s zpqmK78lsyRR9ll?y`z^1;;Kb4Z=mwFuz9HiMm;udkMfOPi+-b5`nPm%=`2C?@iNuN zS5i|V@aL^mmJX)v9^LaV-CTNk3U9s(-Ykzdz7%!5k{-U2E*_!cNWYP{T`=3ID&tmo z@>o?bLKBy6BN(m@hP+9udQ`cw0T7*Vd2?z&es%Gh)1fZ7!MN&eRo2T-y$e$DN~k;Hfs;&W3oN(Py-;Ckpo6&VrNL$1Xz!f_gZ zjxy887eEA!2}YQw}8kSAHAeWOWL&n}*1 zKTmRmCn;4c6@P;~$pR2;3Eq_o?W}dWrB`sQoTENGe`DxeqH@U@k}0Bu`YdOtR(osg z40Y36rH&YI1qqI|p=alVvx?EOD^apnf@C8&E9C@rGi~&vV9R~C(1#5{i|!99=3fqT zE~BVq(yM!Y&76yNaEIJaL0NJ##yA@?gK(2dEb5Q;qu2()7^NsS6?=IX`_XB{n<4!= z75`Ws?u;VbW3u^0-bFzn@-BApHVO(6RAj<2X5Gb=SxyJ6jw>-OOd|3&_Tms5!5t=j zS301LS+GE-!4Tey8g$os-pFR&$aXZBJ~S86TaD<3S1G zk&~IKE{?Uvd%a+-B)!UAdwm6-le)P3RAw%jdIwOOcKUXOp{Nb8jSI;>j>7Dnw z9#UVXSzQl#idBj~H#g?WPxWG2(K=E%OM-rFoG34z%>S$#b6>rfW1K!S-5{B6kWN4F z^KKUKb{50Tlye5FIE5?WXBt4r&3GN!VGg=bJNwx5FvM9LBb{Z2tx0BIXgcW3&xtJH zOcsN6%T?{H#uHzwtU@c8twX;m*$0m^gwJ-2Z>yNWZpk;_DwPS#g=;ZSoet6iq-NL0T~4ivsA3ho3!Z5RUUbYSb9WM5AvNv<&(jH9dP6z> zMd=Q8;HyRuR;#}quA_?%(FevF0%eKIAqmu<%H9DN+(#ZAx)AIyUhE3ce~sd;2A$Mf zL0ld5>K?lF0R4Id++~ErN`fOzrDMD3*?G7e3Kf5qGZ9n;YM2P>@Gv&wa%iR7bkJ>j z=r#j%n-RK=QTul?9Xy?H?fGH83UE0TqkNR>*V1Z0WOZP&M!2w6CgKh@ANOcKAEKj= zNuLT$GvsSMFvE@|QwP%N>VEoq0r`$%P+B?Xz6zJqN>ZH-ob~3to_6D>y0GiM5D&IZ zT@K=LDxx};(O)X*qoQ$&%b`hU;Z|kvqS{lt;!f-_`i=OoQ^{M+aGR0^4;N|c!_SAS$B6{AKyl3`^kBl-=A zR-BSi-Pzx*S&2S%J`X8cFl$~yutJ_PY{j3sdZaUX?O8ikGF|Sd935cCo=>SAg)lUw znjEQO8e2&XX<#DjfT`|}>5zG$T>X+V|5YpJC{th)tYd5j>|=Tu*6CqvJMWRK z$V%7`;rhI|r*f6?D*#`~Tv)3pt4{q>5oJW0)kW2=F3L{jMtamsIq+YR_4q9K;)2U`f+(+RHVhb0(|VT$lHLmSx$i#jJ=nurLhVp9=!Obh2z zuV|u4*@AXBu$h{CE2P&zuS7tJAWJ9|*BOwf)>P{&sU8g}`XSDUh- z9h#pImZ+D^moN;2XcIeE3KJ@YMS0R>=CE`sgezABWX2UqIU zQLA%t13t?pojlq!Ya#P-FVn}E`Yf%wFGqL)zosmT;&`K$st~3o2+9~|i6vvPFB8Xq zvLaMz%JlQD2|Mt^XRQkDd(0kE8InK4?9uZnlZPQP%}~y{74Eb|87pB>E0mAeTfc1n zob!+)UuYV#b&o9M$Df2<=kL!leaB|+ig<5qRPSNOK2O~H_WlcEc73ihcS!kGQDq|P z(`eO%=Dy(OJyG+He)wtce)0C1d)I!r>&z|8Y%E)l`h`s09iPk0E!}ZYwf6Yj-7+n{ zKXvE1J6HMi0@bLCcbmPfu!;tF;wE^XZgd+1OutRj{=)T(j#!{hfFk&V5)>TCL55UU h6t4x7{+Ivr$L-AKUEPr%&Iz-YOe2OM{@xw}YZC&jm$Y zF9${4?hH!rU#b+nc5&difW_JB9^ zF*c%bX9r^mD$p+BjWdjcDD>=SJdMJex)^Iv=+)Msj9vm|2ydnz%5fBW(+_1I3UBFe zY(}BaZN_p`xbC>CE+|q?q0o1tL7)1<-ISwH#@*1btFab^dpa4Ed5>_@(SKo3q|ny> z@YZ_cED8gr8i!GM+Yn^Zy(qk+kFgPj!JUl7sBqr# z&S^oB!W_I4h72(1;}951KNad83d4#F$`~eGb_}lyij?Chj2LC?L185AQ7CgHjOt=g z<|u*j67F4K(7t`TG}^i!da55Sa( z24zlxcT=vi9fhfstE@%g!D3?(D$q}1+7x3S3h(J_Y(QZ;`=_!H70x-{J1Hnq_M~ z)KmsV3S(0PvxgXr&1{&{-C%6yKrQ`LmY~9A$K0BrNI8MRLlX_!`ViF7K83c`!Mtw9 zN>sS&sGk`WDF;w!7-(!kq4753F;uwZcz9Y+q#Q({i9CgzCTPCZSdI$RC$!LRc~_ zQ41BY#v~2M&S#c4d(v~!eYnM#sXAeyo4{0HFlt|m3dWY`&Qwq<0~_Q zBIN)I+xi*nQ21)8u>=(^I<`*>ij@5*e2so9n^1U`ek;pR;gaL)H9?Vb0)-v4Q`w2a zH+mSWP~nM zWB=5kNI8hYcZV3eP&ja>u?~grQI5i#eNVXLI5;CHQVyf=ea2CF28Bbn8>>9mg0KWitvt?PM%Mh0~7XqkoSJ6rN8uOrM_G@;>068yDEyNC3#Z8yeo2mSrmw*m zoPl30Fgl>ZImg+uph!7{!mnwk!rc5C&UH1eq41j;$GMek!*5PF&W{U<6#8}^e%sTa z&A){U#RhY5K{)C79eD~lzk`d^r!ck`1?E}!J?&IjL%)YhjEh3qm*5W_4Cd|+!WqY9 z%2#%y@W&p;Dpa6P!WH_Z(4Q;tC&oc}289=v8n>as1;?LhmqMHV3|D&_Yf<5*<1bY~ zk#ZP?YyFI;QTXfa2KD?^V19(_v|rhY!r$&NR-;Zgw`7pu%~_ zKPCl53T^+#b3wbHpRoajf9qr{Mukg`Hq(N3%03kSeUPyog|>GZYf*SnTcZ&b&O3_A zf_BOt6x#JLR-?joM{#}7PC1Q2$t2?-3Z=u0T`07tAIdW*bf8@2DHL9OyRiy|j1cdj3uaW)zPUXXs293;idFNVO(Acx3H~TM&V^m2C*-L&iEB#JHyNCjEgATieI^a z!Yk$&XHd9ps&NQ~R}MCwMd9{d#%2^=)!kT+LKph2FehE$)uje~e6?`h(UpEG^nrUs z?Orq8IDkU8!NyJ$UfbJPheCJ8Pg#r#^hJ2xOydX&cZ_ztzDv+fS%JbG^hJ363yvO@ zK|6&$_kcGHF{t|ua3}p%oYdnKOSvP~W zmcauZ49a{!psm7`DuXhoz`H3|Ie@~{K?Y+m6&_@Ml}#v2W1f^XD7+^y7NEj8$MmT| zJLND6?`58pohZ!cW6;(aP)>Ul+FCBqR$*qPaT0}!iN-+`xNqcOtSey_uNBD^Ps-iXhMZkj)qA=J7q5ljf|VJ5rv048%t5)ilb?6&`vpzLi0?6a+{%Lyg}Pr zU_Rw48&Fu#(O8BGmmQDP1nrbFC@f?>Dd$jl6u)vDg+)`1!zjFOq9K37;?c%_6y86~ z*p0%Heg_K69UxPKf96n5*vH%s%I#$qcg}PV3f6^~y2MUk(GS;H-k+w!7DzMgtm5h(F z9fgn5Ze=AZ+;FU_3)(3sQ25vggSGcDSl!)Njl##<81(hy0(A*%#v9L}@Cn9W*^I&y zw;Ib);fmvv(}Q-(J`|oLPuYmVf03swMuiKGwKIcu%5fAvHOipPpMrJWjVDp~G~=W! zKn2d+7djb>QQ@3}dqV9L*5K3d#eN2D{vvF- z!&rmDmx>J5#g_!ugz(HTgPdpJ%j7BKd>OU|#vD{Q=J*QZq&$tnwp)xPsBqEo)fquM zsPU7aY5$1?`jrD15WO@eB&PyBLq7@GZtgnTranRbkHvgSz&>w|g4vP}tki zcnlS&U-(X?L0`WE&y6*9q3}O_ji*uAM|+gjC~z;xu@n_9I`&Ts+9~@{_%7ur8&NpW z$yk93*Bsxg585f`P&hcnpp1j?{XWK1C>-iwEI@@bjvtVx975qR^Qde`;fFnpwJ02+ z9|~*eh(JGtAJrI)@sHqn##z~h!jBmbg+BaPxam0B7_?K)q41OG#t{^bjWTwl@KeS| z*@VLJ+l`ed{2%R8X~dgRwp@&=%phl?HA3EnFCD>_Opoy^ZxKTy2e`~UDfIEOaK-V*89_Vc912(F8W&Oc6Mp3o3NKKuvIB)b_cWeD;cBtb zf(n!={AG%90EKIepYj|Ee;sAu`zu_ZXfQ_C;cw#&V*ds=7$=1>x&eRhXe>ho`X}6E zTolISCj5hXm2K#@pg8DaJdVP@wK3{Y;e?~j#GqK&jl#e8FxH^ZHZbZ@;gsV=%is!cfXlSX)D3*a(9)It+&QGB%}nra+G;oiZBDTVeDLkK8}U^%8dOej2mQZL*f2A z4Ce5D7*D?y*3Ni=GKC3s#%UBLQm#Uo6X9J0jIAh4>TXcxB$&)RDGN~HyrXPpP^>(U z!UJOs%6tH(^fNZ0@a|g;#`4|53y!JuTVX7x!h^I=VJshnY4lrRET_SHx*Drd;ihAH zeNe2NMB%*?4cfwUK*clI4;1>yb3n!A^iz2fg_&)Q#i(%EQBe~VD~w$QR8BJXp)iZ_ zQ?{T`b%#NjRZ!j0SdI$U95r);VudnmU^e@c!dT9RIpd83C~!Z=u@i;4tXJhJ6dvkq zJcbI_9d-3Vv2q55d5nufne(82u%qGDpjaWdLAdH@tO|;iqbSrr<9K*PP^>T~4?|No zV-+eeFG4f*EA+7$xUb{bi^6>N31LC8u?Q8;J06)D6f3NSM_}O~gLW*0N4q(=H&iS< z`h;Uqo1j=}M1@n1_ffyH2ZhDtDC<#peaNCW z6h7Y8Sbz$b9BXQVVud=^z$Yde`%!pefUyOIPcr|?8Wf(ST!l6Cq;T2sUyOrt428Ah zjOS4J)IftV`4p_9T!pr-6K*&@JtrtuXxpdZsVN3+dkQ{7Im%WP)^|53V?BJ9_9=@| zfw>hn&_0EIYy*65i17>x8@n2-P~oQI|1|~0${7?kO)?Im@cCf|bMkrE+~3%M!WTLk z%TR&&7M`v#j-&9!vBq8$w)8Prvs>Uxv`={gg=ab#kD&tNCw!UqDi=`LT4kI-;VZOX zq3vIRZDWmnD13FWu?2_%jfJRi$?Q5; z7?W=Zlq2k%X&ge~zXuqbQP_36!CdcxZ!!)FZTY5f*0FnHP^|1h;aiNSLfzkjJ>)5i zP~nQ>+jT*)u$T4=-#+2kyPIwJPA_8}3eOcA3s8ajh5sotod7dN8bhR+bG<_DHaYMaD0D2P^@f5;ZSFTu|FhG zx9|hTUpb7zVe*tsDEyGNE7bKvI6}Pe!;6k1$JmA+F?Pxx6rS(v`0?#QvG6=?5PrPc zakOnvtWf4rf%1f(95txpCvc2%70NsY+`Dm5)=%O1Eyhw*pbX*vrW(w}|G|k~##$79 zM*T`73MWSx+fevD@RbcI>gw9!e1D7Wi<-d z7#C$JDo~E_*BQnU6t2@>WiJYUV|*3*@;A6~o3R)bSewG%ryBcExY^&>fWkkDjTTfm zrIZ9^f#U!Q|2EjzhC-We#u^mY2y2V(I3RfNNs)7>b zC{D3O60M%?(PF<0!mxgh9?L;da`ktU?9ygjdxYw}qbb(jjZcx{&p=$?Y zIVxOpyk<^NqMSgX+a%*43a=exJc~ki`ma!CcX(Zq!I-^Hxa_#2DkxEoq40Xzr|dwX z2jwWMQQ?N;4YWt0Pj7%b$y0Wt@Wwk0>V6~iq<*CZ70x)`G(IR%cA?OVJY@|k(0}30 zmBvvNdJi<7LE$akjg_cy)zOD_r!Yo+;I4kgdKCH=8w*h3wBzovL5cD#3jKN;n^3r? zi@{vq1N|vSVQl*g*Bx)AOocwY6$Z2zXHj_D6k{I>18JYazBCZt-pP0j6|Oo4%?V1B zV<^01n6V9o!HlD_4uyA8j1nJ*VQjIn2osetwCkf{qlcxkF%6=5e1{kc- zGI*e?!P4^y9V9EBC*4c7Du_|N{vW)vR3#aMz0 z^jG-EOyd9wEBhInQ26NW26gk?PsvAbI##s=CCYgeJ~qvuEgyr`^h0?Tg^%|!)}yed zld&8Xt~)+a7nCTJ@dC{a$L@c$+n&!Mo1aunLS2|nN5*oeaBCB{`$=;Zi9Q&6H@LgDEd#`7qAk?~gc zps=N{u>plI-C{5XUlMLOo~aK?l(Q&&nf59NP}n-apsicsD?N;-P}s&eD63HTYFlF| zDqMGLZwyKl#%Vizjd2p5on#zF;cKTIUmqWoDA>LZJBAs%Q1}M@Q=UO#C+$+!qwwFI zjO8foYGW)!g-ecaGVjU>6n2j_cB1et%2n2(z&#+x5>&YC_;yuLqCAhn-Vw$Q6uxt( zu@;5rN)5*7If3>F|3iC}GbrqvXzWAbf9bcf5rzG%Z-qJCFR*5W?^2FJTfPeih8WvX z_#W+1uA^{}`BBcH@VzyT@6QNIlp`n{8fGx&hu{ad8>>(_92hOAaN6-h`l0MW;Ye>| z6AC}N&7h1Q2{#?j(=LTJJr6&o9A!5OM=3{HkHSwF4`mq&$7VQwa)oU;_Ppb#^h058 zehSAK4}~>-9R81aRu-Yc1;>f$L5Xq*g`W*Fwxe*ehp`TYpHq&q7!@u#PSph^%6Sxi zQE8k+;WYhJ4xsSMfyP!8&U81{pztfkU17X_B`{XP*_p;s6n;J0*p0%uzQz_5e$&l( z5{2`Or?L`--xeE7QQ?Z?LQPPjJdeWfMi|ubJGjU^DNm#Dd*)kNgTkdY2IF!`IO+Jq z*q}t&iNfVOjVDm}V<%%FDx7t2kEcW-=L-C(r|}dDFWhRZM&ZwGjRmN1%5im6P@+7G z!e6Lgp^U%4wGPH&RJiE)E90RYMdA8jV>=3e>tV1){suRSj76w$&hdBFuRrOp^ogJ}Xk#>@!fD69O$kbsgDA8aY&?U)zu#soM}=#SwsV3~5l%Q>MxL@0h0fiL)u=%K zgqP1XsO#l$Yky+{3a=6N6G^ zHwtg>VXQ%gYmPxxL8(F?2EjW98jAf`mj&Sc3;{XbysZSwiG>qwJ z(5ErNWyjbVL8(GrW8uC*##R)@F^ktb#xtJ^b2%O+^faD8VPdhd5EU*s z-bJ25Ti*qf1{hmVm`pzv#&WW7-cdF+C{+%l@W2RT7YbAEG}fc=?#{;JC`@f*(3YtJ z6DJs0+c;AemR5^^o;t|G96y8rc%4QUn+-|Hyg`18KFy9Ju_5oNr z%{YR>2L~IB^#@^DcZ0SqgAXxp%5oGQ3ydYGz?caCQD>Y+VLA0Ew0${zc$BdRg%zwb z=*KLRT!8V6AL=wO4sd=ysQVbGUV@Ue~tWBoDV zieq(UP^wVoYWVnQV;2f*C`Wk`g-^6G=r{LyO1a0QJTWXNRkoq<$sWd96u8ghSb_?d z9X$I}svJdOE#sx^K;ctejFqUs_z3G7jk73xdWvxng{S%$n^5@7Z3c7s8R5EPJ$+D4 zqVU;?#vT+lP>!+@h0igL$}&{A>ex6ZC{-wf`#q)H?{VxyVbcg>CkmhMWo$rUb7x}( z3STHT7Nf#t$J6vvc@BjyQjS6yUxY2RPg#Tt=Nw-u3rdx}C_K~KcoG#DQ{l@s#&Hz3 zjxwG_;VX9->rmkLTn^g24Za!}^{8;hv7P#r{V05Gps@{wXS*A#QTTcrqY)KOId+T- zN)_g22YiG6D^H=Yvy-tD6*w@8)92KrP{+E6! zGMCn#0Upz!@^2K(0c;m{!CSrmTI z+t`4@;ZDXg`x!y0@;nNch8f#X_yg-$*?_`j%2g=yGW?PDDwO$0;i}_GV^FG`LE%rd zS7DC$9arfKql}#>{JF333<_6!7>vnP_)D>|5Eafku1yU}6~_7+{B?k_9fj+?j7=!~ zjrJ>#qrwfxjX6Q7aukKXk1#0X?{M=DV=W5*XlpD+1^Nx`gBIfw3jbDP97Unc5Mu`l z|Ney01BJGw#zGWcROV=Vj%|3+K?nDJ+ACX8;J%N8^4dW$k7KJ-XjTI=oo^53r3OxdYzVr~TI^Iwpv{%lfaOX_p6bf&gVlZZJgr4+Q zIfMew>^SzK(2H?YwxRImJB_(wqZ-Y7L2lsR`9zzA{5&Ab8^u0g4mHsLRQ5e8FQFfv5Hp*4DpfIqT@dOHQ z?_exKg^P|s(}MO2ZRLJWd!EyA>_A~~Ph&j_@1z`sxqGK@$uVSV&|cYx!q6cGeI5$K z`WxF(7|!@BlsOzm+-5w9!brwNc^rjNZH>jK@PgysIYE2n6bhs1kHVVZea`L2j57|P zFqZx)dr`P=pz$mU4h2xlDcrher)6sGnu)}ioV8>0~w zE;*)E2JMxDD7=SxRH*wsFrEG@t5A4vv9S~tZa8Kv2-+(zpioX7%4rm4mKl3dsOW2K zLZPyYK^>LCO~uunuP}%9Dd$nB9dGPL zVQx=j0}2n_VmyWl7aeuegZ9cH6y~v?D$Kz=s2^KCs0^H`;ahlM zwi-UpI4QK@*M$eWeMA!c6^ogD9q7Ug=>!ObA$HEF%-VWJSp2zc($jp4u!9GFqWah zWyg-npuIw$cEC62mqHu90XzE|v}Y&$_wB}NRJiWgRTs2Zn2TNT%@M{96u4*OScAg1 z+8QmWaNe&Y4I5IP6uN+3?TV%*8R`isPp3V)esknUYUx*-v$}<_iu3Hc7rjxAuvY5-)9;}P`Ek7*owkGx*Ct8 z!d0b1P#HK5q400Rj2$Sn>1Aw0;oomFR-w?gt+5Cd&N*H*J?NkuMxki1@eB&>ZZ{r7 zg{zL@nxKPn9EFn6#vT+(`xvyP6x!cnP)2*EB^XHj_V9R_v37P^-j3sB*l<8@Pl4$6KM?x6q5(@Rni5vncfGZZL*@;I6=EM1?aB?)!95_M&iiA7c{={it7AfeOrr za8Hf#JPQ2>8_%HdR`Qg`P~oa$z?`6iatwvH(Qai63IlI99!G_njEQvbrg?sxN8&DYC!B~U}v`-i_-5_TSjAd;p&!BK$H)Ayld4>lT%^@A{Nw6PO~_uT22UL14~ z-t(kmI%BQS-|6sP=1F0U-U~ArCuKbfBPdi2F`h-Cn*ItkZ5`E5unjdW##t12mdCLlg*mia*@QxEC*v_xxaOEUGw7hu z=DF}tKVuyVb#06}sBqLVZ$!{R*?~fRFJmnV4df~82Mxk8MHnyO!ptHeRSpbg|8_fG7!Ue~|89@i-APSE%e#&|j z7PU3zq5^dZ?;B`rL}4-OLuo;UQ;zpDUdk2}mUK2~!xG`N;{)S^4$2M`mUc0gqrxS} z2g`yE%3c(fQMW?7m%)c_QA*x-Bq({`%<}Rv_fMQKsjPg&$jQSejhR?BVN&_HF~dd< zeemwSL3#Q32gZ%dMg$)SLtH@F=m*B%S3Y8B+0dYT^5k*V6_1iyJFl@k+8R21_{hnV zqe{k17++q~R9zj06?Eq~YFk>#5@$|Mef1-)B&m1k$jRlEwdJ+5tIMnFXEi1Bu-segzDfPV#*~#$E}JxF{JrI~ z=2XvmDC)69W}WGr#O{|$alUlMY(}m!)grH+$eqqBoT7Vcs_y!VdDZ2OO||v${?|%G zx-Nf5Pp8Q-AQL}-UU^0HtU_Z~AG*_dtfE3W>dJ|4tsYsF+KjxsR>oZN)a~-_pJ)pr zJGm)WDn30$QFJ^*kts98NslXe!h~@nhmKFL-(j9v<3^5u;Qo=5hL(*Skvtv9)Mb3> z3>I8s4!i_)rQ=hb^unWFdbV^o)2?*s=@sF{$1B1!wltIv8(*mX=F~by`J-mXJ{g~c zT_f)uIiA5BH)h(%5oKfUA6Z^eH8)W~u0J<3dq7F&T10MkX7#0$z2i&Tm71hHcW#~O z=}IT6KQ}XbtV!ouL~eF^+S9r5+~;`8n_D>0&2Dv)C?E>+TTp0Ew`vmZoV@&TwybD> zNETLLj4df1;W0z+NmTDG+O$hs78_HoN;*=p>DI)-UQ5Q8jl6f{r1Dww8WV#&#<#n2 z%~CZ#KT_?9$jmAa3-wlaXi6Wd681!?=@GDIMKcm+W_oXd*}kV&XjnqLGDA!Dkd*Rh zOZ6i`rt_XPj!Jb#W1^nuR=OLpQA?RHZ0yM4W#zM)sw-OJ4-0biOL_e0OxrBhn-{aB z+UHsQ^3rXzuy~{=3@;lQU5kw$F>+M;yq6!~>hN>Z%QTUv&TLM4!6tIzRhuwpN62r5 zKTf_qJz8mBwr!b_^HU0pUwXMF8Xm9NiNnjLX0I7MtF}hB<-&AUbyG`uOv%EpcOY_{xJa16)@;tZ8<0Dqt&|%|77CNU*%niuRP3=PI z%;?ydc4Ve3Ri!t3p(khONV$?NOdqqNCa5D7Td+Olc`a#qv@v<`j>~o~Eq(IHcRet2 z{P2-^AAB>uWJYROqv&WnCv$wx`8@5LU5W1Vv`#md&sB+w2AhA+na!D1S6xw`x`asN zMFH8|^hH7y|+3{<-xSyjnnnv*v(EGrx1mrz$-Kf7g4Ui(8&Hd<~570z&8KP$cLtzq$+ zH$(O#MbhDysj=nN3-j6$`|>i%Ym%3$ejOC3Zakk|ak<=31!l!fK!Aub*1 zj)vYz#*6ljlx6+zGDl{INxQU$*qA!-B^{~Q^x}3u3ACaptv=1g#V}ciGVmaGow0x2NZ*y5s@NKrl$lQpvSXk2R_5%V_BJ;tQBUi=mHcdP9~eJo%E(ERhmI?B%*YSW zdeg4dj*{oj%}Wn^@n?AS ztXkh~d7}mtT#TGu6TWmtW>}(lZ)74{c5sp|Eq%(E$zxjiyq4$A$xAgXnH9AyX-+pU z$E!8*(V|>FpU!KjnqQYZu%}%bUs<1XHj0fJqwAW3QcZ1rZHs(~o&5BY=XQB~Tgr!h z`3kX>?1DjBMpfThzK3c^99tt>6p^}Kl>jk0KVSPcC-=T8GdX|iBS-vM!<{ARas8}@ z`s5`<+NC8$#szmL+MBRjB*)*%xz)3h?b5T9nKiDqZ&jxEku8cy^PKCA23ZGe=M@Q9ixs;~|My zhAcZkgsMFencfe>LgQnoTJkGT*PL5zs!lfZ=OuE)?GsbpyoB~RvYrnwu6N#rl(szf zc+uWNF7iR&1xDX`>tOld|8kdwkvA8hzt$ZBUTsylyJ0s4Tj4GeilKh0L1xlpz z#L@HX^V=BO=2dmCD6XxGSjmF`Sdp1BW_@+6}ljLy!SNDZz->CNIo_Z*<5)<S=ujiajPNXBN4F;TF0oQZ541Ck90OIAm+ zj0TV*@> z2%&G`Zyx{4ZA;27k>L}7QClJlUim=dJqqYshK;$GN0hwpMm)o?F%!xwX3eUOpA_{i z`ge2vU2^k;i}&i9+UNwB>q;1#=hqa94_#5bw7x+3zAF(Q7GlF89g(K$Cp)WJ;%8OV z)m6%gYgS8BU3gr|aj1!JK2qOBX3T2f#L9h{g)QYx)h$iY={wh@#&p%X9eQ+hc{-qq z(jK1geS&BuAmMtXiED=P+4C!!D(YL}2a;QliM)+`%JLrI$=V}JQ?(3kt1Zn7iSi#Q zR8{Pd*sAKv`Lm;W^QSEB(dgMt74ypL8|uqz`0l5!yt=8WAvyuJ5}+>c5+vRZ|Kezp zsGMLmMgI5#IAMx5YPrIV9|6snQ--|iTnWiq&6ZQS=W%7z-Z>Su(dBK*D4R99)A-#C zEzVn6(OliXU(z4iEP{QlIx*li<&|c05wmI==cFS-n~RtiT`k>ORA!>2nrs}%dipuyVMcS&{RjnPSFJ(xvgtQMvyG zOvAu5aqi1{KZTV{sgP6RXnYPNdI{^5V zgcj#zK2v8Rx&QBM5;3p3WljStJ=M~L*^5iBV~cZUiSw`7!cDW655Ir1-%y!(HHCh8 z1}z=nY+=O2`-V?`YdXY?VNCYgMk)%eVU!$X8Y^lOM=^sdJ*iJDk+(K^yi&i~qKL%8S3j1}JCD0@9Ea0wh|FPJ_AntOg;p1}FtPW@ zg^$%E*8+VKRhUKdd(-CjGzgiOeJ9ie?7EgNU z+_rd{qtzQ<_{KID;oZje4DQdI72M2?C0o`mMh@5M1>CF$ac6Z=$@SYDtzQ00t=-V# z@>qiY6f|?#!Qg!EtnK$KK94s?tJ3%TE0xRBM9H$Lp95G2CpK)mYAXvM&CWVxC8B_2Fvu`W@Lcf(wQ6=$S4r zDq)WzGZ)x01L0+N6eVBaB<4bboH2@N<)U57%=n|sKf{~0T$0io@-dv=snF<$eXZpfZ{VKw{X4Fo?mLh?`I~4$jfkcKT@u* zlKX}i?m5#rEpz1PSza5Ti&A-BfS+4iaNt5uHoCyDxde6kIh<*uRpzxx&3>F5CJOf4 zbEb2=j@cUVYLPrIz|Zx}**wqb=ge>9tPx+}dKHBpqUC{i?@L|ZVt=QWL;Qri`I%>L z$i%G{^Cpfut~xvBxQ*n1OLjQc@^^DfMPf(sY?ROMh=vc-6M)wM-zYJo`tn=M_?g>; zDcWdi>f6{*7vDAt^CEi~$ye)sT~fH3JU=I*__EasBF35hxT@L(Ic1frITcr^Ok%U; zRxgaNn!Nhe?3at7P`Q!Ik7t+3Yp=0q(IHx(>Cbfx0`y-ZiNEGi1do{ns#Xl_Qx z@(eR%)%VR=u(6%U`zMSq(*uS7^<~!XTT%y&sD$Vo5?N9Qh?LzgGkK_p0>k4)WZ*FB zt<$90FHa7)bzB5h`@6Is9(l={G;;Vv9fMTQQg%Nw)w3uvI{rnLWY3ajzrhN&L;T`c}ptH)8|7%G&y*FEoe`mv_H4HaH(&CwZMESPjm{9iF654bC^O zF?y=TGw7dsA6vl1oO_WpswwnGm+@|UoBoh^z;EkhR)?Ooo_I3z>9 z))$q>t@MG!=0__0b41#qvGJ1%(I$T|KFP5T4dP3j(8BYWoTHkm`G3UhX!0Z%p4(ER5{*YqQ-hqS>sw|w%&Ydk9+LOPq&$>8dzL?Ux+PY9 zZdxv>W!Lh0lXhfcle=LuJiG$snyF8DeJzW`?JRe_t#6`=9Iw`swD;}XuazwI=4IW} zzqKs!=49PHptZWxo0D}<-{@KCLSAQgpIqXbF){%Rj(nVvJ2GxFwQeLLS~u*i$(0%! z$W0xZqa$){v+QQ>Cpyt}wr`Z&=FAF+O`bnF>tRSZ-_dqW1^cA`bxK?V-=Bp(zueGT zpn`;(yoZ_^xIy}m_kB;oMnqlnoZ6cB8Ft?i{p~Ff7p`+4KdO=u^QXzPk*!z0iOcWE z5_`EwtBs!^%i7JtUfx&tVy`h$nrDwAvoWs4F1|o9W{yiyLww-O7Mcl2=cbmZwb!LZ zYc;f{j+05VS8_A2!SZfKyJ2P+cxKEwELK0|#?O7Ft+t(=f2laKCZlra%3?!bA|o|s z{_2Tp2@|7zE^a{RvNDq&79=eEoM3ozxoHzNlEgs(1lsd%4CeNQ9yf7#}BSlXKMe`b2D2MaD_h>@29eTWndlM$vXs(`L z)nHebQP~M=GD<>c`ZS5%oi&LZii`_6muJ_Os-XAUq1_{u~!+d$;Vt z>9Qh|)Rnv{cbnMxb(20x8NcVr>s6l9%dvN@GktIN6G@apqy!yXt_e*eh(lTRonY+=OgriS=NtVKARAK|_uiR$v=LQfd&AG|Eg z9l_Y(%P#*jhG&uNrfP21d#6y}Bz~R&NM(l>^VZF(h|dNt!I>hz_em@Ci^=@;+2Wlk z^z%z}e+a0)UQNS?PA=m?rOfLjvvz06d+ssMqc%SF`ERpK+H@=DS=jpXZ4` z#TWAC*}b(|&^`SAp*-}<9dh~L@4Xr#YmY77Zx2$&Xfx5(unK34V)T=$ds>XI*`r$| zh5eDo?^sy4+B9NRZGC+C2{^+su4UekbYRYm4K`( z^^kNc0a+J2;9ZG5Fw?R)!euY0u4`ztRwv)fRoE|{N!7EeYa3f8xyN+vm0o?q!(nR? zIlkoT&lDc+2N{R%5qg@7J_qNNo`}lvCl^wxW8qp#nN!Ot&ucZ+HrBGnqvdg5^`q`h zOx_9pUx_Rnquqk7B}+(! zWy^V}qNz4-r%M)-j4Duy)>Tm#J<$12!&(bS9Hw>odgG$a(dsm;wQ?GoYG-@j+W$+T ztpznzKa}2MavSF23Y27x@?T8xuS6Dz;lR|VT$V!W7?N(67nf5~^+PNK9n%7Pgs$d? zl3|6);TPS7_EN8yFe;}M-U8D4&hCmyh7~9$T$ioQn-t{5wN{e+mX2ozTOFmSI4?L` zrcOw!^A<-G$Zo7?ZuUQ){nM~Q0sp)iZiQv@{RempdBr|?PDN97mChT-wT7zb16Kj3 znq{org@J$nJJ%H%o3svn(P3&4PS&YQxl?)GDzIy9X?vXL`SUX8vGV;Z%xrELk(Zr! zKu^~l$K;hD3$CJNep7OEQ_c5+3YC#r;pt{b85Wc(gGI|PsGM77!9Of{rDVg>@5!=Gs8PFv{A&5^t1ay?z3HkTU*Ng3RI=u*S ze^T`VZs5vm`ejYJBK$UJ3Hd=$8R-$$9A}JU;vcOgZP8X!c-@h{2G-(I-khww<4`I! z4zc{ZQkTN1o@d=rUQVCy($j_e^g_jKX8LTlsFb)@x#gwZQJ!1cnbwA8i?i=F%A4o$ z)$6SIyX%7P$WbUEvPY3E+|{gT;!b|#iq}4aAkU(u10;7=!#sW`*_>Fcu}vc6+3nPa z+k`QUNq)q2AxCn(A_b)F?50!CqC}Qo$RDqC49evlw)>7aFS^XOv@O zqKC>vL%ee_zvFOyv8>!C5%1YGGIg?+s$9?IFZpgoZhH7fgQPtyqnf8qmQ>!7Kliy%e^OR13J}10hmabnt zl7>yn^g0`o%r8_WdFINAk47-BI!%ir3S{RGaad{I2uHqI4fB)NX*R#<0Ij)&XZE9? z3HcWJdp;jRvgbkH>Y~yM$X^`u>$BectY}E$LCYpbL50gm4PAa2(fZ7Hr&eeyL5X%G z)?rRJ68=Oclha49DWa*(NzVqQ%gC(OsO918yCY7<9F1#!wb?bBTSB3s4=ay4m)mZx zx>74QTZx58et52rTO3+qZ{AVWMa7=s6YkGG1e`KPoBqAoFwfoNm#uJjDX)}AkfYro z&!r{uaF2ZJo{dgAG`1;zG$`KIzZTWiMvtC&hUm}C*GbYINs1l3X@ z@n-x^grrTk68GDsSi8e6f3gnbS!Va{ZZ2+Wxbx`$h*1kD92C0c=?#9A8jr6lIxKPvv;buwl()bcP1uV9p3B!4DU$eXdd0us&f3k}_wJpY&C1)Lf4 z{N|>_`v6)A$hh=tkAlrKZz4-BcM?CHD&)=BTWzNl8wY4^T|@lS56=+&nOVV-;EZuh zY6WYE*fheXnTxE%5cp<4PL@O5MmrkGYPW=>-_K0;E}NP3dztb>UmkXfe(s#>N*cYF zUF0|trpyStjx_Vj2^soKY<3s+6U>{)nqObAj?ks?JhIbVU0%miW{H{b%^D{I6&_aH z+Yu7+dG08WYn=F1plR#yN#n{#jNyrki4!t!;mY@=t=<=asj~Fjzm&~Cz2v!uPkNC5 zcC}pohfeq3L`MD0I=oo*|o!R2bMo$_!bOi4{^X~||Qj@MseEg(Kt}A1l-_+#a zNle!fy3={GABDdQPjx10U@|6M!kh|kmq}IYeCZ5XIsdHAWK3QOoUZu&PV}3URzvcf zjSW0R=$-FUO_v5lA(k)qwi4GME+;ly98VI-Vv24V*+Ixfr=7{1=w?b@PUH-8X3dj& zD!gO2)!{jku?5=X;v;8nPWh}^^WxVjwHlIiM$Jz4$<-M-b8}j&(=x-5WPajno5Y|v zPcoXxj(?Do>q;7V!$fLlVQge7)DgzI|2Fro%sn$}PR5Ma-;+yf3+}+gX2@Ilr;M z%H?6u*kjSQ#^nipKBw^|c4{}y@mprjT-awY*FxEdt4mBm(&d#G{c1KFE~6l~V=a2N zcR)`B`;KI6bTH40kDR$VxqGG6WSL<|GC$f0^6HG7xjA8htz?EF$^6tsyPFMbZ0Jj7 z-rsh>Ja25%f3)o?FA;wl7m>{g@Xm%o=HLj;xX`isSLiqkXN?R?HcZH%T1&7@m4x3`MHt#rTvRVd10w?xFyxv z5J+>9Azr?8$GynaD?fS2qDQ$=xuxWvC1q6NGNPDN3IAkRvm>9%|7Sh${9dLkx%GAM)?*PS%NYX;5mz42ZmK2g&*v@4B+^e3@n25y32O?CD7F)w;Q^jM2LdmnvL;7#GK9?@7=MHCl{JN^~4c ztn!2>jOLEgti)w>Y98d5gz12Sx#8t-vf4}uVOX}D=yIb_2~j}7+_3O}QbHIOmcy?g zWyz(Fb@D4mvs)y;)sfFKQ9}~-q@9+-n;kjm*FT(HQAW69r3wzsaa;p0Vv!G_IbCb2o|p7mmVA!*XV*9dV!RTby?o7LW`{<^Qu}&mU$cegK*>+NSr0zC@EeyG1T^=bHSZXWBWO*Fx9v zBK6!~dFJ}!jQpc?l$3HO@-oMEKPz_nIob1pm*Y9(oYajr8@4Db<&N^AdjP3~$R0)J z{XR7;KH-ZqQomD;qC>8k2TMd9t7Qk3xnuMD`K<9#wwQ%ZYe?^e|4!7;dK4 zP{yo=ydVAMILs7JuIo|8tOos0|LBJNj=r`f`Xx=iPp$q>i9Lh-X%lyMcy3PGWQ)nV zJFj6$yG0fVjLjNXReg8fK9%qDt$Z#F7ehQk)mEJ6jB^T2fJ;hx{j9X6ul1?D$tA2GW8z7eB%8)SLEc&|#>h?v0t{4;s-xM=u23tk-@ z&u81Ar@WEZmiW!JjMy%bJPmx9q%$%S zBRg5aKIAzqC))=Jj;t1ysa=9Xqr`as31_s)AAAkR|Gwt6Iy8(Jt<%r1590sSHff8t z5^sD;Ta(+~+n;hABgXJ9*s=+e9!&h7*fw{$zH~`|U4ZSyBHRlJ+oF_R~b8~R|` z$f;$?oi$_UiK!^kZ$r}RMA%t~Was)c!~0?`-j=@-57&DJ{nLB+D&CgATR?;D{{sZOlw*1AjxAAK+J%jw2I40Vr z*)zvPbw^f-YOH9PQ~4;LZ=#=~q^+`@cXW&UoaYU*@`hC6V|y4Gj#{$Z&>BX`8Vna@ z{5WwTuh_%mSX^#s89AKmW&1?hKl((Pw(553Q)$wsTRER9vv#!Iks~^1xZY&# zzD3S|iO)a18Pkf!#>6AF ztpp@o-VT(tCoIyZR%=NHWO5S+z(U@P-9PLWaAwT@6>R}$t~tC|h~_7r4(XeJJ(0-| zF9{0dhHjUa-Jz%{GP;=bwSC$eZ)c`ZQq|~UQrGw?V`9_0I?mc7OV}B|uigg*7uV{J zPIvSCab~ph_;pB1}YRDwE34tM_tnR_#TbWspaQ?65U8vj3K-vg)Vb(QrQ%L_|bHL_|bHL_|bHtcZw+ z6)PelB4Vwz)>rs1*Z^0a{<2xzXIHm3|Fj7)U zEEzj6H}fG?LHfE)t(}xp!m2{;eCt3tR8Q+HCP(%h zQdyYAbw!7MZL3nrikoiVirZ^=ZX-{d)HXJ+s#~IvG9Z0K$W4D#GKw``_^?%-MMsRm za3hPoruMFHvAIo&CT~)1hBmI!dj$ z>C#m^Yz9x8)bdl@U^pW;#Tu{9SrQbpqcqXN!Jd*&1hnU8pUBI^)l=&hFG#v-?yO#w z=UNd{FndMhq!`M)y&4kDNM_xYkZ8FM(t$iBZ!>PG91jCDu9^pXdP>Q~*M!#MLFNtm zxN#Jpw(r%n@jG7I*d?TxbX!WN#CC4eKrmEiD&tze~pUFpd^wyw6 z*;tcbLM&E~%y656lu22691lq!8tGVTV7k<|HHe0m0(f)u#w4zYzA24Z^6w=SOT(we{|pXW+V zx5Q0f<;3Iq>a%!1h0n{z!*JDuA1~PXbSj3OPiL%tXRbydOpfgJBzcu9N;=wGKkC%6 zVk927hWhSZKsX33)s#I&VaBPEW=GA8sA(Mi|2ZpesyC6tj%jWvQr%J1uJ+~;+q0q@ zP@fefq8ks|6dCu7c0lOla-`nmw5yDBJ4$ZiVo_%Il%o7SQJN zBHiokZf{J|^E}nrJb`!xIy{0{U$Q&_EseWt$J;wc+j)%8m*0q-otaylT3UIcSx6NS z2C6HV8rT5(+}CNP^MC%_-2AM$5-Vg@{zmuO-OAgiNo94|?1j5?Rar@!v8-_4)beOK z#omG?DK_DKiwNh9bj**+M+3w^eS$GosPaihlRzi{6#Ko_A1*) zI&OalaWu@7UJakOu;*S$I?M+xzCuBfND@Vc2ey0t>W19 zF(F2l&-c0V0_})qXeGLwyd!?lcpI5$w9?bsI!U|hm!8^qMm;elV|$|fYT2Y9jEW5m zmjbu4qIPvlE59_9jq1OR!gwF3%Wh3>YnyScG|$?UGT}7CrFMW ziTt}+B~LpV;0EDFR5J{#*jUqv9T@2Ah3O+^Bf4&1s^ifHMeFoAm!s&iOL(P~AJ6g1 zbGN2?44b|5mRttP2YjZLNqHJwef`A}?a!}1;sap5F40?CCW;^v)qV~{68YD&I$z@YaT;ki z-scv|UQ?yaQekmUg!ZY^v$9cjS$Xd%6%?l^wD)T&B=&D)VVse5#vy!t(GE;a$4OvL zfu8&|gGK?hra5(3q|Q+~4hDn@t7y^bpM@@BaI%xooZ}3H`O{}KsiG5E;VOsHhfIT! zRv4}BJb_?+<+O)=!qBE-dF7e!wq3JQO2V}2xQ)w=J9U7_C#+L(axGQxP9LyzkXo-# zD928Uojy_=o4z8%$nyEVQ@o`8n>K3{K`CXV=z5DH@NUM5Zj?sZixv$ksx$GIqIo?= zy|>YH_+T~?nDpU=U86hqImz2gv_C(s@i!9eRv4w0CofH138U1_lat1)QE2bri3#Pa ztYt`ZYC@VPCIwW{+!K)|CyrO1>26~5lMqU9y2Ysl1GRE9QSe3{yK zm~<%z?y}S1UOBAGx}BC7QqxkP{6k{BvNSj=@hWsT8+1)`B>B+uaO6Balf&mm^pB}M zTKTDkyj4x0(ct4y>UTCR%uK7cODr3gOc%d+ThSg{@LfFI&Q*f%>>aEg$bNaF6os=- zF>?+xST$+esi<00PbpPS9`v!lUN34n_MjgOrk3aNoqGNq+H?@UQdv@b&dlMJ=Z=fv zs>giaK~YtI>1^LYbK*fCgzV+XaMgppk=S)Hr1HT>-}*k9tUhVq>#moh#gBF^>Qu6( zsvfU1b{#aQJo@d(uZ)-E#e*)a-9#*@eRS$|z~nB*7u_0Cc~!7+sZ`bHNodKk_i=Rf z!>QA&H4+I|JudgV&8+6c1K&)oaa_g>S3Rbe`-vEwsEnD80T5p%)(y`ff;{CQLTW>SESs{6Nws`ptLE40oB7ONZI-xx?ySzM{o?TiQ;%lAyr7jO^omuv; zg!vsWh3FqdJxmejmX|NhE)ADwm*%D}`1Av^_3?SJPBljsclioPN(q}+%+JlAOZDR_ zr{x+CpEcuBb7o+dv6iC?|C#6Ua?Hx!`OSJK;80Rc&n-TNx}9FRlD^bocB&j9a8$Zu zm!aDRE~NLtS-Pv<9&t{E4ZQGPzj+4OdWyn(>vvw9TY7WRf%t`>S1P7l{89NT&nImP zru`$zr9d~i&8{}q&q|!XSxsX766N(b=zZ<0Y9W+!s=V{0$CM*owZQr69&XcP#;etX zUZ>{uaTcRx9_HoE9_>=0!Sg0HZzX~MsQy9DaUUT@S5}@#*?fCZkUH&*tXFuq0Yu@v zF_cK=!ql}u`SLP4%uIMcz~Dr3yz*S*&$Z}%b33Ghv8NAy>JO4BM57%Z?j0Pd{W5Be zBp2b8XRi(0w&N3#_Ry#w&{c5^tMKi5Mm1HfIOQ?2Z)j5a=vO^zsTox&Za11*QbPq5 z>v-kKr$V>vhE-l>Pm!9f1hZ~?|JvrkS-kpb+gZa-r?(=akX6b|RnK8@tSKWa6KYjq zND{h;m-aEgtBV69^@7)^ZMt~w2>lFpU)b0@Lnnil7`W=1dP%wrSDi0ulGT!?oVM*$vhDD<=h2R|X51nn%H0*Rf2US{g zz*ti(h1Qsob=3qSbP<=aCs!x0imI^*jB`<$sxI~7Gg9!Xyo@i;Z$011i6OmDoSWp5 zxawg}2CkBHzRd21=Zk?UN&=c(8o26w&XTO=DIJ%(sC8uV98bEsE(4Sb_e$5Tv{-sU z27|1Y(?e>g0C8A~;G>2`qcDY_9ABK_`w0KuTfjKA%+_nosaV2lFE@`ba+$*`z?IT7 zIw~G1*x|Z}GoiHkwHe)pSuBiFZ@WuNmL^!~)Z2Qs+6Yt{x^^~mkQ`8P%0o}inkv?0 z_KD|SNJ0}?Tc%bfZUK!(=2C%Fxa<*?PtC8875;J6PZunnWBEBGL%~_olGo%oUH|^rTD(Ty$Gley)2r zi4w*NJdHm+xriM%j7FhJHTwiakXltmt!lV-u=lLm9gGTsBvJ?=i%%MD+#NdU713zv zahK1G=o4vt^b?(&9hRp(E;Qord{Zeqg?%uh)YW7W+VO@kk+^+>I;aQG7sH~uADzr=3} z;l?#q)8G`>QetfWc_<4{cL|n9gT@bAHXN%xVNJ$pD9g0MB2cz@5xG<+Y=%t%@9NySeobo`&Fb}74juPy2z3h{?%{`;s`7p-`>d5hu z)~5aJX^VR#&Q=cN^Ht!eRt+bqgr~AQgTo=ujdncH(P`Jzg<>RCU?=s6;ZTFlw#y!f}?vT+~bjHFe;Dtg@cpv{Di%aB~*+whhTJ);Rg zNsJ=f>%TDZb;Hvp#q!QcT3bAHkIqYtlvjhWY57(9xkR3&v%vmDC6J_(CWuYL6xiwF zZZDHe8fe6WRw>7`7sXh0I16F5n}skI&O#JpV~3|yQm4IvN{?a;?Q#Nz4Q>cLZBvP^ z^z31;^bFBBCAYt>E4Big4*N!Pw(7`i;1$g+s+at_%w0urxxDo9DS|ddY#tsB_$qed zThHFGEUqGGeZ$M1I3~9BD*e7!%)+;xJdeV?R&y#znpM$yhtnJJbh8|TuOHPd08JOB zE<%nhXj3d-tLT-q@I6l~lUm0csO?o&a+e}hT`$te5~Lum4BLl?^eJMl(0Jx`J&;KH z(Mf90PaI*vlHF^$RIcG9W^G(op_OQ~@n~8c{463ZmSeV^xmvQO#0%_tQ}yhGvyUG? zd#^kR_vJ|;{S5t(_q&%*h%{$G!%J%Dr{SzaaHkAr9Z70t9SoJ3g)4&LZ1iZ>!E!t6 z0MtJEq)BombX?Ykx4=d3?tsJLz>NZQ822E>)Lf`90Xt9*{S#@v1k`8Jd{~ABSEU7( zSo!1+M`6QxkKVA7orLcA#WiA`)tR-txw>=K|EjM*N`(&R+)Y%)Sb?T!qg0SIm*d|j z4NN*b@4+LQtA1C=fGO&-&aE~H#VBY|rP-lAFG*EUR&5>*Pfni3lR5bsWCJ^3c#THM z!)vSN24l4b(t@7vWc>>GNQoiW>&HN-YD$U(8{O6#ieyS%q?z&Rp025m?}(}n<|HY~7?7quaDwhaM9ZCGF( zFKj~yZ5!e|i`quu5-|h%)KxjY$zj;j~rA~j@CS63}()4)LBF6q^yaIMFPS|g{h)-n;-nvhXiomxviARC`Jm_C{4lYOcirHc;HqmfN-EW^bl7A~K#o&h}3goN@E%-OLF_rkt?l0CBo*$=KVe&3Db(GIHXFrRR#r1Qd7DDwMEp7kK7cth;@l6 zUs16IH&IUl!-O}Ljg9D1{U?5X(mK*HF$e3D!&4`Gxiwl;51xut z1uZIfiKIXb3Gb_q6}9&0&{dv5C5Edy;-%&e)=kavVe&hLa_Tw&#YkcK$%U(6(o~$4 zo3x$yyXoiPiNaMnE2P%xsiiud>d5B^j^-W?rH4hCnVdAu2ab`#+M7pW3CZmJr@b#D znSJ1-IRoI!NM?1jfJ!mneQo<-XMbd}Fp zT9MIu@vo>YtbeuWuxIBMm+8Tw46X{0Kj|5DDZc~H&Cbs*;az9?YRHVX&?@z20}M|kyXUR|dvvWNS8K5T$w|H zjjmIb^yvwwM8wA|4&P`?JY%%S490Z??5@!KaDt04rx3!?<7PFW9H`vjqu<4 z=L-eMpXyx|i}6u;*(Qzi2BOUgXcvN+x#gAo{Yia(b?Jbp&DbFWST$ykJ->A3f#KBR z((F6VEXVKmHxW}YGqg6a0;1G;6i}Kl)ieSm)uolkW~NrAfCEO~T3=}C7qMe;z>9hd!mTY{2%oGokp8`f%GMr8!t{BKOVYG2hRGXy2r25z0 zOyeAJ`mx#R^UIemw#hrjs$B*|EA=3VuLMhQ)YBr z2aFciNSieI>y+s@NLXNwwzxDmKizy8Fr*ylGEf6a9xCLs;TVp*GB=)wpm~M@39T8PvZ{Rz_llY zR0FEM6?5|_$Jyam&duL1)n}k|kQdgLX`Tb~;qmqT;o7#m5#~{KT=yMwU^+Av!}&`{ zWzD{84V(aagtdEoeGQ-4k(-H#sn{WX)Ot@IK?HF)%;7vOGPth*w%^OR(kHcU;0H#ojQClyped2jc`t(DBt7jh$`I zmlx0DUcz*U;-)D{ErCG}E8(+0ttr>VbidX8D%E^WBl2g}0u)!q4Su zv1)#B%RAIdzf%=9$4`~~Hn-6sWkI@uEBQ;; z_df3!EFX)@oYnzabz0yS>kB6yv^{6s2^C}2K^J7LsZBvRI7Xzvy5TUEw4n>& ztp)`vozDQPYTA6*BwJCAw1D5;X5Y~tXhPn3HYZ?pQfFTV_1KZ;CNwGqtWKq=lB`!f zBO`XSXj8DfPD2KZ(5Wp+)<=U#%}Y7^dE<{DH5nPYiHf4*9S$6A2C6KI(+(LfLKbLW z*Zs1C^uK)UJD`R+8oJ-y{Mm)J*IUA9UD8DRxH#5(vC+a|$Ro z)pH8kISC@#q|}@S#Y3G31+pDob+1@p(uqz5}oAFj3#) zkhX6zgw{TR&o^Gz58X^KD=^fxqa#^b5fBFQ(_Yjvr_Z=i?y3i-0ntE1Ki@2&DNrJ< z53Osk{fTqJ?P!#E@NyEb9=|J;S2Fu7FP?c~#VvUWDF-(FtOQa$tw3#GGmJ!Tevpe8 ziv`)>C?*$-M470BM2)6DbSosdRtBj7MZ4n&DDd3A0m+_SC!h(I&9CIFZSyHhi zM+);9@>GhBPgP)czZ5hreM3T1PVX}#>Y5jUnygqRN1i`-0aNW!H}%U{&k|~a2+f4U zI;$(RB0AHKj>4zfTp*O6x<)7zSAqEEzN_(R=4pi)ORaNU((EU54K;GN?xO0X9!*N( zD0N;E^L5H`(+pKzfDmIakAZkKMi9b@@TFLwcCLcywGJ ztJ0mTN~f^OEB$1mT06-TtaRn4l15nw)>0wy{y8uIT51Q} zkYW(ksuukks2uRDR`1Oe5Cy_EFvs}CJP4^7R`2a@V!lYfC}QU)`<&NPtjA6)*lh5) zeyGQze2kFCv?~|x2%4}B=RHnxyPIKG`4qPGYFp2^W!m^{AM$2F^_wI;*5J8f+A*-C zX9bZj)puAzRq6S8VhPIAcfBy##8s@t)eouxVW4ultBzd~FI3ha?w2h;jkdy7M?d|z zl0ueHtHM~(3~)4}=O30bS$%>!ggBw1qRYW>-TwMTLrb|-2xmPI(G99YP2S? zc&%t>GmSc>QdCc(eXcysei(O#hd0*oftKbn$#GkRF-=^hMxLixsWR0)$2#w^&Lo$+GAWh>JPCwo5?>h zPQ9_c)wDpCC#vYTSMQ%(U)>*~5BcI5O7wc^LC!~7jv$J|!_9*m+iE^nWR=j`qhq~V zKxs2kv}q05@%GNq_HN!7sm}hgTdXM&@RUr?0kTg)i)wd|`)}LaiYVH{YkTkBT0K%f z73QFd5bY5j1RnTGKFnxU9pG*F%^;tcISHfGy8`ABqvYV|pi)JTb7B%FfzO1%3s{7| z#EU9*1}s=L<}Or3`TkRm)%}gZY8-ucA`%AaOBNWlX141os*udmw2DWd^k#AG6iM3B z-Y>mF-1QS0U!j;>oLZW)tMxrvk88;-R*zK49f-p)DGiFoB$N~c32&200>&24oS!)x zmdWEj@dHcW0G?^pzTT`y zt-Fe=O08K6X-aL4z8%XQ!>8mKQezc2_6FM7SzE2E)muCv&tgGb-OSfwe6%;TKi4>r z4l&c^caQV8YpD*)XxgQTz;*=dX17QO(xGpQbX=I>^u=YJ6tM{t#mr-NXV8GC(DKw` z+Vt~${R~Wx)%bAn(iyx;(`01^AE7Ul*7vfsJXIJ`&rUC%Uu?Dy?b4d)7X?8TseB~2 zwNrAPV#Cm;9I_CW)~(30^QI1ZGD(%bNAytRmQkaU4OBd8kB4}p=rX^I?zn0-(rRXKzUkxrn!ky741(uS8j>4K0dqYeRq9--+ z;t`4R=SQW2wIh>an%JlP=o4gg^eDyA{JHs$_Rgnblk{YJN@9@UJW8`FX^Iz{7M z2e*!M6?k9iD6yx|#xEQRsczh8SfFr3v}6-My`&Y6jN%!Mj+G2XNK3Y9MkA&8$Y|Nz zC}e=*rTMCxZYi*8>Ihh?J_#$M)z6hdsFe$)^mdqRd@ODJq|E~-;fzN&XLg>JO6SK! zpNi*eN_IR9{L~4ky(H7Ei%?bH8~MC*Pgf%~!(*xdH8xh@v>qOOQar|KflWjC>NhrS zB675zA*gJnxr74xL-GibN~;-+vs=cMQnhANA&RRWZkY5=j<$YvgpAxOYrLfQ1U|x5 z4?k?ClGib_9{T~)Gd5;CR4N}gPHM&ulAdwtxZzQ$?bw)}5dgz$uV2}AEGqF(*qR1L z+E&b<(WIw8c%-?xD(~oz5LhZ4nQ4fZ`D-dwhUllHZZdEY-lkGVaNjd1Ze_if4CJw! z(9X{e=Ao~ZH2%_CJI=y4p1rZ33mT38MEEg2O4Vy@%A>CZIgN0XNSqWXPFiT2YH!Ss zg7maDV&@t`nQX2T0!puo(q%VMw5h49MR>Mxx<)iIMtsF7Syge8Fo-oG7y9ZWA#ZjC z>Iz-johuQ$H&-J@)yzMvdBwZ5R8I^&6>mM=MJsZ4lGeXoy?X9d(Rj<5(D4=CddAl} zszrajD_DHZvuvBjsB542hS$H!M%O^g2I+>^Lh*9fLygDR#8yG)@ySWl%F1KQQ)jWZ zT>W$sQCWXx>YRNGuEjOd1Z98zJtif>$NKje59esK$6d4XJmx&w9VQ-1;8|uSuA(cUDX=#Cc#-&^v z#;VObS0UxVrowY@?qW{cR(BCIlhyPyD%JwgCYSh*v;0WhV->C!d^WHGwhp$j_GE{* ze(ogEN_zfkeaA?NB6)`p(;`%6MwJRnAy#*&!F|Udu_l$z;p$fX*)cUXsT1sU@c`R?KZ99QzW00BR-L7?UM~qSP(GmV z(Bo@SE{B4ODt)#UzqZNt0wJY9-Eo@m^j+-Q^)Mqzg-r`rOovEN;g9fMRVn92eJj38 zYXUDuVWrjj!Si(&@-D53ef*Ni9S1$Y6$HO+U&jXzH7}lxR7#1aqlyepIK$*f1#3?) z!(??kvgi>7fA6o-&he&-1zb>eyl5aRvz#AYB3eu($=rkPUKWL?;+I_I|-fr z(gN9_Fq+6(8s#SQAmu9DQc90;Y=nzp*=u<5+*$e3fkx=>2WX{?p9m%Vs9vV)qtSk-b1u{3a_KZ?ro?V(d zn|2JX31q$ElE=*4IeI7EU)LVOLRv)_t(}>Pvdn`8aAT*%Q$*}-xAeqfl)PoE+Gn6> zYYqz1WWf*;b%_1Di^>)cg!qhb+xu|NOLUP@ftP4g0EIl(t}PjHKyB@I`I?YnfZFDSStg zQeT?Ix~O6ECTxdnV0u}B1|M5#DrglnzP^~stCmlJO~E|Zq=2EZn=$5+2MtEEcITLY zFp$rC4pH-+fhNxyR}q(bO~87?wqB)<%}nee9%IqLxowrC^$!b^9bJhs8W&5GZ7NM; z=%V@7$f5KLfI&olHK^i4H-hME1tsSB$TO;o>St@C;$eL_I;DntOq?)B*td0!-`t`P zqU(1GZl)6cWQh`uT1chg#j`l#Wr(BAUHe7sn}{0v@H*ayz}pD+G@~2oQbrMY-(!0x z`%qf-%{9YR)zeIKdkgz}MIMG!KK7qGTnMbhA%#QI)~ zf%1X+?2$&&-+YPSZgt>tZ5dJLQ@rV(kZY>y^SisNyY$M{!M4vU`2~{d-}ZSu!jpTe zaNbcb7so;>9~r%xl!QrYf8D58ist-K=fyrgPloU79X)3|pn_9$TpmyGTJ-dFAFFOi z@u|(=S`;pZs~+Y1^SZpGF1S*r^S{Xpy^BTHm2zH?cXW-?c#Y~?Fvxfyss2aL@4G>k z(n)Am@vOm=Pt7AJIA4i46*q`BWR1w9dl@u*a6=ZK>-%^^G`@ZwZaXsj*i{ichLx2P zNr9~f@F9Q|-2R%i<*f8v@<>m2Y$Fzo6mBtSbK4g4k*7UFyk9wAJnqh(kWQ)56&Md9 zjt^I_njUbPo3k=Wou3iwf}ge{`sq5n*7j6jinEWv{2H*0q+q2(SCp6L8#n>fTh|Wu zp0$tBPt%he!58VfDCtXfi@0-L@V728+j{91@jj_NJZf4aBo`Mh%uPSh-cNd1=~OnV ziqo%$I$?*VNbk5bb)l20qnzHSF6x>Cftp-cCPk*F9`a2N^Duxj9?*fG&z142IWusR zyOzx^Vt}D|&*v}9~>ob{^HD4KMvZC=Ne%`fwVRKdX zlraz=U??raSv}^z_=P^hWrSJT$vq927UQGMt2Qzp7bd+(XrhBJXj0u!w`&^Vzqht= zN!2@yc$AN6zK5?3ZD0?^qicIMKMlto={qL~Zt|v3R_*WA4=F1k{du@~jE@bp)wgd5 z)?(+GgXf2;sKS;e`7$_ZV)(v75kpIlJvAKJ7d)JnbE;?LOg|i+({fS56 zl84zB#Xx+J7JpLfnF`kM625$d59#`Aasx9!A1V%&mLRR02N;MB@Oj-Rl7U%g@6QZG z2lxnYoF_++mMRg`3aJYXElr=QIR3=(aBrVJ7$h@g1JOYfPeDs_SYVWB#twm2bWg`N*;aig>$MMyAo z!-c8Y#Ua1XZ`X^(oJUP?6Dx|ZE(AUhQv}ki^W+daHs}jNgR^pZxtH-pPdUBKwo;c| zE68QqGZgvC+wMO(ytaCHO>Owq;)Ja2VDlz=#EOmabXZs<=AkQXh3{`uMQR*moQVTZ zj3FJt^6czPbhFjs3E5gZIjJ6urUHc&gYNXO7$2FtD;3V*NojApEXGH;zv|`AQ>>>> zsit=p(`)_G-}HZbd!!NmTi+BZfd6c6g*?i~_6Ep6IGCK2Tf%ab{%!IFWx=w-<&6Xh z%6yYDDGErM2OccvRXIxkmUMFKv9e%U;nRNLL6tTRqPjtP8qbkRhD>4wgy#O!x`y~D zp(RJ+2(DmR;c`g=sUbQj$(RrYM2rVc%FL!5rGHC0;s|BIvcjcJ0!f<=q8f5|j#M&a z5-T7ysu2gYX0>EQ^aUW!Wvk{X%#a4jyQEq}7i9V3+{IZe(B8oYVc51>^5o&9!)p&4 zJXTtrf|X9afb3CqOk=C;_0-}CIZ~hY(@6R|J+q=qi_MnCwX(@r5;ClHLDrHo6U$4B z!|BzX^B4 z86Rx43r0O!kLdv}KDT*{^mSq>gdwZXw%Q@pqxD$bXF8A%c^%0Rx2<~{!+DdmW0d+# zS1k;w(=7Gb-Mx434zJGRR`j60g5T$v;dg`5)MVS%NZL|bQGtGV#+1alFiT!kt!3_b z)p&RY^LjjIqC^kXC(b>(dTNcf>UcIs;ueL0NOJ>tW*asDw2-@^DpCoh}i|Yg4nl7iy z2mvVk5`LCPhoi$)N|S!3P@XYe{P^cJT7l?26wzpP^Kf_(gE4A#(Q5I6P+j56E5`?` z>oOgQIgL`Ln~YGXOc*Ua-$cD)DJl(#v{Gujq zaY;4ny!g3t`GrtA6xTi#x?CBG!g%wV$*``{k}=h46l?PkTh-ILRr=n@wbkvWH+4ih z&AkKc>WxRazFU!N<+KOa%647L8FL!7%NrxcV0aoqUpoosdV6X{ZO~0cVpIh z*+E%*FyqwGkf(hV?>wmyMwF`3fnUE=WA4FH_%em)p#HW3q=%)*H@8Z#X+VE_Yo13F?-HaiORW7e@Ew#!*d)u`#OEmQc7=X#?(VTmusym zuc+QgZ|jYaUcEU^#g6NZ^ulCyS~Q&Bv7KJI;?BR8W|msMR6-_XU+PGh;E7%F^pUfXk;&P!7% zw#zkiiOlD-Ue+HF2I`#qc3dbP!8vcv_xJ*blT8sNmTNIzw+*fRdLtG&Rjzp8Vza&V zJch^g(NmvNLpwh@Gt5hsecmxgQA6b9G6#?46@21&IlVt^J5Iwmwd+P&F1<;Ew)q;y zMOSSmolpBH9-if8pkVsnQd%G02#AYjjhDG4sB(g}j%L@cnnYYV?a@<9jfy{=Bf*ue z!|OE26RE47Xq=b|^m3md?cv=-(ebvo6Onhhr--J4B7MApcOUfM6NP{kfs^^P?!&k1X z3}?>d4*}an*ddicQza=xu8VX)7ehP%GmE;jtEDoyjV~3eUu#m30%i@Z&XB8XQY0wz zyr#hkGInWhm_Gwqc#YuiODl61Fqy=vkbQjUH&s>xJAiiVR=)-GSm6Bh^x$Ccpmk}f ztf$+iSZ)|m?;oSa_x5%+SLKI|m@{Zo1j^6$E(I%8*3+s8v!K7lGlDaZrsl<8Dw9Gx z4j#DqgYtNtdh6cxx_f3w5tx=Gl(nA{-QlEE8;8gt{@B1)8wY#O%kohP;R(`Wl_tL9 z8ns+YWxZ*i8XS=fBkH*2D12%NX;tIVRBv@CRMxvXH#u?~JoK3@hxh}hEjAzGpJCgk zjmYA&cYLI~lO)eRjx0X7t-}i^>O^F5L9MEjnFkT2z~EonB{^`!H` zFwV=ML!UxspVW2Dr!yl4Sju4ffoEqAgOlnl0cSn7c8(9P^<0FsK707UaL=W1)*}sQ zb%fjN1?D@Q;~P!tVgM-$fI!ZP?NZFl>Tk6F?1fQa|@YX$HD~FcLhNNs>iYfqBu!b zA~O5P_+i9?W>pxmfLT+9Tob5(m$3Kc{KCrIv|V7?zzV3#z#OO!b#2xZ7`?P|_B5UH zvZc5J_)lDEESG?V1j3Rgba*Ilt40BtR)o8ijTnu^eI-?e z)9Eh+g_Hu-<2#S4V?C>EUy-*8D+CMwP19W^H>h(n()& zDmLGT2YJZ2SE?5ULrQ@+R(EjUBzJrfld<_JydROaY_y9h`+R25Yflc_O000zVY-dY zQC1Ilu~7PL)SsDj4umQd1*JNc_vl*OBYfZMs+W@CFqsT}hRyJ4-I#AY)oY$H*PzE( zZzyxI9-DDGAA9S%2#!N{$Ntj*<&s@+ne$8?$6X@_=_aP`jfWkqVAx>=(~)p0Zu zQBXS)%zSn1G$CxUPZ zR=PTSbf7v^vqz7rW7KDqVuG!1SQi8ZM1t^Hg1Ix7R`3Ga-f?{iJmx%#JCC|Iafb|H z`CYJ{K>UG(oD+^Knr;O3>)~ikmp!UKdXCmOw&_Dsi>e<9*7hYwx#-k+%=5}VA2EAt z&)_m?JEbJZv5O+|racZu`6k|Z`ra+c5#h8=FBdU0PK|DTa#UR?KJqLj4f`4U76p6r zxBI3pU1^5Xv@d8TT72BT~X;k04K zSzKFf8k-abnW$)rNyk3vf>lM6AW2kOxQ_&~5Ts|B6tQ4FU5#61lYWufJY1YzdCcuZ zDsc?w(I|d)uqj|(cLKlf+`!@;b2CtGr4=b@z~?0YjOOOP#Yd6aM=t_taY53HnTN;t z%9pJE>yQ<8*JgSSz}IV0=%qF4bS0sts(!m}ZskCANSl+J;f&+)`!{)HV!+J_1d~Y3 z7)}y38=ylTTk+GOexpSKSh9if{8H@<-la7Wwic2}xL3;M)YWZv5IXYn7usA{?qMh| z(~)0YdDBm{YMKb`j6^4#*~ZJ=A8?m1g=Efn&_l!a`cl$Stax2JI@%xZs+R#HMzCPO zAxQY^t4Hf*8qWF6sHmdB!j2Nb#R5IjTqnx0yGQ2)S;&N>iK}Dh3GPUVA@jcW`n{_@ zZp53UEFb&hn0bwri~wdgVb+y$6Q6Ra1iEUzGq8+CvR3uq-SJtFl^f?YZw%EYvrY7sbJH{#U7$hcD>Kdv~&MW!?8 zCbeNDf&Ylw-~orflNtDx!iKd$o<+dE@yt-6RpqOIMRjbwu&{9c(jr|Qn`iaIhU2Ie z#fM3*ZXUEFb4TI4^Vk_o4647=xCn>G?VVut6;^xcg(oep5xs43iyK7k{n_Fg;mu7q zw$1a#Qp=Uo9(u)Ei)+NUbFPS{r4O$iA8laE5i?|FapgENKbOYW2A7`j!<_1+eNjJ# z9}L47bu4HtIK zR#DUTk9N5&>ir`hmb=8bLM&S&+i&!=xI)}bVoH?2s^QiM9;LF@kkuzXf7E=0ovB}U z+FDUHDuKL)Ra(-wb*t!jhiz@VU0V}J`-P26+6ZjQh3Y131l8C7q%q{0OQ=;1_jc^V z6j3Ios-rQ(juzoKQLif;8QbV$Pj35Q)e<$ucEZ3)eJ@u5+=H7dm1A5~sQulaaj18I z3}eJA^rC(7xLn&rv6lxrpkc+1V?!_rWH9x7)n2 zd6N*KER56MjptlQ2z_UsxwIQ}6?W;Nr z*cAEF8Tyz~n*)t&CC=y*b_cc|>u}S57E^cx%VTB++&QLD9j&Q}6iwAd0?Lz7wZWr6mk2hqWj9liaJ&>cU&C@S!+tFxF)zk=YZ%$uL9y$B?Q zKp|Y7j?x!Xn~E}A^~gV3xUN*@uT|%!sZ@RSzKxEgw!%U?R^m1n3ks!XsdR|52|q1e z$L1$Zp)@5i>Ff)upc0L?*ENfa@S$haF}0`dm%_9IQ7$fL-;6|sF!gBXMLmhhvH0J_ z7qs!)KVFMEBNe4kq7Q}}ncGq(qd~@wFYRQN{PbK^j{Q{C5|StO^|REfr7sbP7UQk$ z&23#p660Sg#hq8=S16;;bJh0JOL-(OD=@y%?*+w8xa#45FJNi?y`UU6zZY0S;$hn& z`nx$b1s7%cdBD|4fwS)N!ui>mbcI1@_3JD#NJawhOYP@!ByNc_9_2Q^5ja^zz)f_I9j-qH(1sg_N8Qe5nOX5mpwKW_gn`x&KfdaJgljS95Mu7c~>8AbQb> zA@-3yz@q^?Be%1HQ8JgViIaZxFk?n1R8dCJ%y!}<1RaVCWY@%E=bTczoL{6MsxS)g zI*YrHP5WHPhtaYq&f(GC!N>?%(E6UVyUC6aL{zEWum_@sa1KF@s&Rp!IFngqcJ$9r@|)p8I^j)g(m0mmZt|N<^%Ik$HHxJl>6-P8DSMUj`tZWfa$=l%XK(LWH(9Uo3#oiMbCPC0 z!dE1-f2Rtf$p((ci{!$b^`MD+^n*q!1>B54`SPay*#48Jq0tcK1+)1tK(53U6pfqgkV5YG=)j-(f~5$vOLJ$RNMEp~?t@>(+KFD?yNkciZAG0JN2_b~ zqxGXTA&c)=@425`d>)FV^`}mJ5DX6{f)TYbnu~^UR@V-LH>XO#wrP=9d*U>%`uu6h z{mspT=2yE>vM?XzLACC2x`QCAMH2hBH$6TN=;d`ZZ^-sk?Md47qp82~7D4M<<_*1q z7rymuPA^?w_4;Zuf}udZgV#n(Y>Wp#o-~n*rW0ZGnMH}`ldt2yjR)+#YGQ8^bbW{F z^IJC&b?DK(oO7UlEpBUv$2axanocrR779u?9#IoT68qnzr=uKY2#fux89#>@N*2eF zDa)vmh$xQH+~W9J&--F_yqg=H);&pDf4NPi2dP`L8!6v;oD~m_H zhoh?>PZ+vxmMvb*uLg8C#J?mY1?>yN?~|Exk(Z!nSn24T2y_W%9o_b9Z*AkwV$*C; z)*%y2Pag0bZWEs)2;TMM?@&2f`K3isCRfR$5LrvnSD$rL#FS`)m2O>j?RB6!Y=3-C z!7{Ft%{ZBa3068c9wwEHf#t9n_bj2~(L+(Yj3#R{p|ri#1Pm6+lNzcOUG zB9)K5TTarl;xix73FX(9c}hnlz5l&i>Fe*@3ar0dH|69Ls)wgNNU50M_GE}vR+`POV9K+kMKHb)1~t;!9Pu8g?M*=t)`4wvie{F3V(m3 zSv|&1maSgtU9`9gf)z7YuhYc<4|u#gO&97Vg@Cxja28cIMj57jX1 zK&kapM%pb_o-M);`FHU;V@Aq+?NxA^t0o-SUf01TsUYa~l>l=NIJ&4^8(wS?C0 z;N68Cu3mgMVZ;80pS>DM>rbxbsf`*gOaQIX5g4cTr4am@=EM^L}p2&qkqw$M4IS$P-WDRFR=umfDj#f3i zo|V23?YDBtSGK}%+W9V>AOD)DmS8PCgONFp%7DQ|sfJGznAC<7kKMhasV!WS8+j$P z_RQv%U&uqTAuf!l%QV1cy1=5dmvE=HWcBG?sVOtTm6~AuTGi}>Vek~)uV+S+LXE>{>pwaLdtvXGSF`krZMKQe(VbaeliW8oc^n{NeE(wg{>2Np7$&Rvszuv&1ovQYY3b_MyxWoV8Fo6UmD=N!T-d;?tukaP zy_ivM8@*R^QPfGP`@9?XQ~T3draPoYDKd`rgQ;2oM`SJKu8kLMg zoG2gZMHa4i#J$9-!ll?$sEVAqCoe3_r`5_Sx<4N79UkrsPrU6xROaFE05@xU*Krfd z&q_y7_%`=&n0)b4H*PGR=P&WFhX$OE(pXlYv{o z`(90N$&EpH->Z{U?6Vb~Jc0(PY#$Eay}A1A5Kkn0N|p+I;WIqMZzA-YjcGhh1b(|T zymWe^;{tErDNM?qjQx9w!&_02?>@ZgT;Pp6dJNssP;8jMGhZiy zhBZvzQ(s}|dO>5Nz4%1F^u4{w{nf+6cjMERO-<1!c`V(FQ9}5-<_L=H`qMZ6Oe-Z% z`4nJC%D2UC!Un0*ZCy~=74G=#VH$;JOxs7z2}rJnjUw;{{X^VWOd|27zRS0_Dm^kr zlz&Mek%9knBYL>wlK0`YRqP}-oS9wDzmuoX9k}s1z~`3IQ$giXLDsKMZVacE=TGLX zRtCccNMr8mV8b_#t7VO1X} z{@mu#^5(maF_7Z{EsG4IlzgW^UtG*Ob*xm_DF=7LCRGb5?ZzH%Kd{F#CtD6IkM-jC z^iC0^Bc-4TLi*vDCH2s0(knWm(J%7|h>vHbSIt_)MLS%*Q7Vg4Oov+Y+;DwzJ7*h@ z;P}Au+mrYjR!ZnOyjm=u#$t$WW!A6lZLe?Q24M%QcBIZjMnxtbPna>z@6(Uw5=~)B zO+!zJkxB&EkaoSL4-z)6>#>7}{FmAQra!LWxbFS?58aEZOkJSuPsjg8qW#Sh@>LtlWIJ3BXx zDLL=fH#eKTLPGgnTpmuRO&90zz4esRv)yZd;e&OrnB_=4P}m8JZ`;s9#f?1 zy9W&6qXIK?cr$Hrp_Z4vo?yTlZ{{&xhm`w6J<}imlrQgJ+XrA%~PR~y9yXxE{VwGI8x;snUs2|gbXVE@|5pFGZyM-(}awpYrUSQ zwIuy+9-}suGV81AiWnuf%A?I9MJLCR%49h!gZvgoWmZErGPW?OiSvQsO>bGADu-1w zJB{idN)&adHH+sLsoUiha#Vw}(-t%8R;v)BbfX8NDkN6cTGVP^kA^EX*?>9)X}VNA zISe#93#Dn?xj#Eyh?=-YRMZ*Vz%Q*lL7U2^rkpj1QexuD-^40oGtFcLu)4YBZYs~3NbO+jgI+L?rxYAA=L9YmRUTJXX6I*SXNI&{>ZRqWb0zlyUcK})jXah+ zDAuO@XsMpzP_ZcIbzn{U2(R(aFP(W{IJJo1=g%z6WkgA-YU0I%gH+|h^zvewYvIA+ zV$yodsdS5I^o|&EGm+w=G@w|2LsXJl;!8~yUs*;&NasSgEf)N<>Q1G^bWM$7a=9ok3_)#UJ}<8VbiC+7@>ct{Yh z#8qJFiN$<+C8Gf$;hYw?3EAW6Ohtl0d<{I!|<_=4Z?tD7gis_s2cd+#=sY ztLnj$y^4AdIw9zXqtbI8;+Yd6p>nAS&H)M>`3z_0OL1)?itv7>lRV^S$*DSY7kNmn zOD>6=u9NaQ^Cj1Yu&HZWr{QtuHN+(0GS4dOkjANbVx*tTsr8NO;k1*O90#0F-PH8y zI0YM%j&zhVj~*^!*1jNJsezTx!iBl%CsZ}5W3PJ0rKt;ESuv$vTDbB=zOA5d$jWEW za@X$DK1TY$f_5v2QmXssaxd*!)s*QY27aVVs8nt}RFTwuCHHG}9H~^AqHNlqfs?O?Rf9=fJ=0RPIjEzpnKgQ!UrUxOx2R2}=9Dr{>Wailo1LPLawDA1i~&sw zGz*t{Ne7l+n3`Qo+xg_{GqO80pw%zp{+6c-O0F@dR(+KMxBa!ErVh%Dzw5V3t;%1- z1l9DHub}K@<|qe_Pj$nr_FY+~pS>i$x+B7HyDMp;YAUKL#AP1)+5 zAm+%Q3E@t+>Y!F^T4Ezn6sHF7c}<=;Rg+R)3GaE` zf8rrLNyzzDUJ37cp;p2iCcNkM;K@_9231-K?|Gd*`L-~J2~S?vumlZDOVcXS!O$Hh z&GzJKxU!~)D=%7yq8G2QiwB)vmI{bi5T`85KSWpnrz^jeimm`fw^moJZBMEL#n-7n zp9?H=m{Q9uw~8%PwCnAvDy;ZxL8q4*5wRdeiPf>eYN%~mH5=f{i&rP9RbK4kL9eeX zpQ^lKUR~BcRc%3>()OLa;8%lApMOHCtDz)?hKW5(&+vW)cV24clXxi1tIOJ_sx639 zrsYo})2pEbESzS&DUE!qg zx|k^hU1YbCNn9N6yfD1cwPSM??-7cN2E9HlbE?vGtW@}EG+5!p4lxz^Vpd3Z)7C44 zRUa%)B98#BKKv`0U$aDBA));I@+9{0pw;`eNyWwE)+=9ekRwFrgN8RvmSut|wO`D{ z8Sr4$*ELNftVdcQOPZ2I4wc3)W@4oWwO%b~N?HXNovdieGC7V^c`=ifniWn=*{6B| zq+)ArYMMsxTg)t%;@gDQrOv$zSLPb&6rdOtG5L|FT-j5OBbCW=d64CL7_B!-_g6Zz z8nTi3=AN`t5}=><(J)PU9HAMwfx zr=oVS^+EShE1ZgpMU_Xel8Jo+yn5+1N_a{_4i1X7tyK39Dwbd2M4=Ix_F z@K~fyd8taBlZ4_*n||4@AqDagLC6XxBNsIG(78x4ntasdOcJ<4E~>0&5~(1qlAjuB zAp=fFv(~)ANu&yM>aw6oqy_N0vYx353sRM`9*G}LmPvA|u^tzA=haMrC`hYJ>zTAtuW(YhtY(U^CT>~IWW;)flOf8? zn(NfAa5B2IoGE~s^wnA>C0D5P(2JSGL4#gjS2I<4#Ts>8%%tQMRQkH4iIw%RYSfY@ z(x^kD$!nUj#H?^im|D=(04h>m)x;9B!l@#8K~n?xD8ss#NogzC=w&sNk_*4!SBk+7_(BquAJ1d#PiE#ji!F=bxiRHXt1+Paj<=qud%l;u6zp;JJk>$q1 zWtj1PYP;AM*3`HTDdcGXPFZPVhH zHEbI+Wp9>;rOwyDDrL1wjK%8MtLh4|s;rn&_m_pSW1sdh${MliRuHAkKiIM+|Ls}T zl&om#HlfmB^-x7}cklI#HT_6bDouw)F>AwCF=a<->q8kXYCWtPtRm9cBAtUe+L~FT z_w{7SQe7=-Q>i&E8LCLEwAm@@C^y3C%oxz5kQR#NZ0J>E1u_f7LeR$3E5wRiV@{p> zrzrDrq%w6-9;WaR5vo=Bi`e!bStv${%R!Bmmx>9i`yLh;)m3ApFhGp~*sL1MQiJu> zwY)ZpZ*|9(atE+U3HM3qLI5HE?OBsP6hXR#s`SdCi$n{>a>3KxXT!Us?5Z*4Y7;Z7 z#FG^o@^JRGY+fmSAsB8^(73{^U5H+#(f zdDWN_X2hk98#&b?eB>0oPE6vcRbztLyhr&qJ&F!$8V8%{+&@}7Oc^mi(e2UO>194Z zItLWpVOo2j7mI9924Gh|IXj>DOfB6f9hPj#5eLdJhK_-HmqH z(Dq~iR=xY_g47O*wNxoqD($$jxoY>J-ENQ^lX1I4Y|>gxsj-D_-My2w2GPp0$#7DY zBc*Wrh_cRMT3z=4OuBNU6tpW^-W)h>63NO2bspFvj<%I`9tKSwJJ<3)+k>I{vvPZ@ zJ3EO=e^~~f8@pQBbR>$jM;@Z4KLp?2#b*+Z*sc629DgSUF6#R+bVQ$HIXqfD!ujhC ztEXtvMaSs$b*K=>hpShcs0OsL6=hRsi0XHI9Uqq7q>Wc7)p{g~gH3FbiBHzBpdJWc z3!VS6jAVpaS4ym(Nnb}m+VXeuuir+hey*tn*Z@hlPvy!jtN+$4H)0}Hd+uYW zoMU`b2HyZ249!9I%{+grukh-_eHkiU#~qp&$m78(Z)8|h0vKJ&XiB%u=`L?9pChCL zankRAXGr?4ApGaz7z^bPtp zX-LNYW_a-ahP3`m)2BFn-ix*P88GP&(YJVKRk?b#h*R1Nm&h%geV)Zgwuw(??(IK6 z7#^ATz(`w>b13Yz*d;Pi*Vu>m7{5XFC2mOC|hsossl z(zDf{;)9*F5BV!498(>Mg8MIARX=HtZ*gH}2=1<#4o5y|w%+TA(@0 ziSqg1Kc>B3iQ_-S4_%aD{#T>)S(xG0@h&zbg%|bY3RK;-?XB#e{;CWrBzf{5f*0OTHuz51YrX(F*o&|$_lylb06X!8V}tL8-Ts!b!B@dvhCTH~V}qZ8ow|2y@O`j5 zzj$o$&9GbF3JvUK*w&Yf4L$^$zi({tQ?LiWbZqdwus56-8+o?DlQ+57^7Ft!KstABHVHi@31+b`THtrt4#aZ-BiDdwLi3 z1bh45*x>tNZ`dCjd=2a+*pu%<`@!CR01o#0L-ZBctFW!3vB59FW{%MYus7Wp8+;S& zmUpB7z&-+d{5jMs?B3^*f7osBLH=Pc!Jhiv=v%PU??rpV-tc?I244?*6}ItJC>!jN z-wO`*+V`PMu$N#@|2}ZAN52~7hTZx5(PpsMd=2sj`wVR751`M(R=yTxgFXBQk$>15 zzYb-Cy#jmZ9~v9{EbPIrM_a)r{xJG9>=Urd-vB?@+y4msU~l+F+TTp)3oBzbv;2U9|fo*;3*x(mnZ~v1xuVJtK zHuN*ttFUW-3VyJMza1Rx&OeQIf(^a{bqf19Z1K-vJb}ISJCSeL9e);m4E6$S@w>pm z?)`J<3$V|^u6;LR!XEwe=y$NYz6UX3pN6gd1+)R|^!K8kVXym(C_n7Iu=(#pEZDdG zCG;EEE#Hq=uwQ^Z@|U59z2*mSF2Ozyd;G7U&%)mPgNP4%753C$MLoh!{Sew8cH3V= zJHkE*d-8{IKEO`@b@WNt>)t;$_-fcou&uv=ehYj2M^JyTd;TWs5B6!;#*d=iV2}JQ zoY%0o{@B>yJ79PGZJbZA&%kzn9Q_Zr_;-*#?BSn4*afIa#T#|A$Jd&^IwY_Qw@5y}R8 z3HH>_pk85*{Nu5~55V5|vp6?kgMTtM*oS=-cH!r6PQo7ir^p-Zbw3Y(*bA`ve}=k* z-SrFT)3BFd@BHT&TVN-C5#@#5@-L8I*oR<`{u0^)cE`WOSOohR?Cgh-Hteo{g+34a z6ztlEkv44QU!x4LM?ZpeV0Zr;v>EJEuqQu?c7dJvx42%xUi&fBE9{;B4m|$-ApV{F zIPw6y@$WI-z+Ql@d;;wPd-Ok`Jg~c7KzqTq{v%@J-w)&83%`u?VE6tf#D-10h%&%F z0=w{^!NKnOB=QS;3AXZIP)D#6FF_Bx{lB7ou#dwoyo~+{yXU{5Z@@kc+j<4*z#jeY zC_C(ZpF*3%UWBdu55$7q_bS>H_F34*|3o{%PJJ5Z8|;n$3qG(HU>81vJ^*|3|3=%v zZuu3AE3jXJJ^FtzF2G**S+p7Kmtjl)7x7`I2IGV8g5B|}#s}|(y##ymmhr()!5;qA zsB$KLNXEe0=atu+PADC&mXKgDw5q@xjl)&fGRW z_%Yb2UpGGZ0oXmaj}N{B_Qqd7KKMr1t*;p$d@XG3H;fOy3ic}O=#KHhE3p0Fh`hk| zUpqc{8FuiSfW!7*2OPHZo5u&Agzdk6eDEUd+HV;jd>nS=4da8Kg+20H#|Q6+z4eXb zgYSji{oBR|-wAu;ohS?Jw%?94VV{8=-Gww@@BAI(gP(>y@}}{@kHYTzyz#-e!^ZAL z-N0UiJ^lIPgP(^z_U7@yonJ6M_&V78@%N|j@7g^`8}{fI!XNh5x1hYR+rMaha0B*H z*vh>~19tk0Q75oF--;Np&%$=TWE}IO@xj^qP;amkUy8PYO`I4XJO}$EZ0jWI8202O z@&SAN{_(+&!yY^}KKLQnTOJr6d^2qDAku`r0^5BEd55i?Mjl{GZyO){9PIJ8qn%;* zeHqe$-TpArfxQTO^2^5uAAsHa2w)(p~uot;G=g57m?eDDphThE~`VK2d+dJOr1&CHDtegyXB$B`Cn;yg64mtap{ zKsjNLTtxX`ch95!V6R(1y}@o>L_5Mh4cmGL@&}t=Lf?cmXYsfe3P3z->Z-I?%ARg=$*wH5XJnY66d|^*t9UpuQcKI6m z5$w@zv;pkVXV4#Dr=LY%gWb1-J`KC;I`Rmc*hSmGJ_=jf8z1~6?8H9W2KKsljSt=j zdjj<2jTaw)H&vChW?4PzSKZ z-;IA^kG*$%@Ily_--CV#JM~qF1-s+-jt{;D_G#Ge`w$Cu`S+n*u!p}Ibpm_S?;pop z2zBx`$Up33u*E-swu4Q6E$S9F_6Jcvuus6Qd>#B@XZ{e{3ij5oM_+*5`iC(Nz&-+d z>>JSEU~l>(=x?xJf$e-F+8Q?VM^S&UyT1uz7VMTkhIC;cfz5w2>H>D^kE3p3um2W| zO|VyB@B9hrQu@P^Yk0 zU|W9y{;-F?7x{(V@fVRN*bA`v??WBJPW>gshQ0aw(NADwe;IWF`!MXx4}gQc`LBS3 z4So<~DD0PDkNnl~!S}&l`$Op0uusCC`fI3r*y$ez2YdZr$N2|)6}I*M@xd>^9{C%n zd)OO)1pNs1BJAnEiG0G&{wV4P_U6BZc7c5g_T-P@+=D&%w{f1r?)>rb!PmnEe+PXP z_958JPrwg$@83m#fW77?Q3tS3!PfpB(uF<#0h}MO$-j@h!S4Jiv@h(oe}KLZ`y}ki z527w%lm8HH2)pB_k$>2yVY~kb^#;5AGtj_J{9}yUu-ktYZ2|i@?D9WB`C*Uz9Lfm0 z=bxhQ!EXC`)Di5Hu&sZFJi}&w0sR|x=RZdpu+PHwe-UZG-uW+3AF#8(ggybA{FfMS zU~l{o>IHV&zrw$;!H3bFuusFD`PXO{*y2Z!KiI?n26Y0v_oF!1V6XqT@PXa(G1Lw0 zQ?QMH2Orp@A4lJTz3$(mKf_*y?R)}df?fU(7^7fse*y7eC;lVq81~v#NgXuuN|Kld=2c=u>FaN!6#r({@RJb&%++OZDQ~f zuv5QoV(^2oyKbKtd@F3?*G~-I1A7_v%xjP)?D5|)G58VKeRoU@z5{mWZ$y09#A_!8 zH()Qpc7M~v;6>QR>m~*tf-U{#iNOb9r(O?V*jsP-`a?}y#}dB_XwwRcYp zz796{eB>YYDs2DF6N6V^`(H3Icmej*Jrjdpge`sH#NcOPr{6L$_#W76zi49cKG@5! zr|ty@d-#h{FR;7ciukbGzXTfCtFWE>P?xYLzZ7)|d;G-2;HO|`PfiRz0DJr7#Nhp~ zd+tX$V6QzjG5BiOOR%j6kQdm-gA;>K!k&Bxd4fH58s&mbzHMUgy|6pqj`oF3d>QHh z_6qEohbIOfhpl}%>J9ezBj^jT`@RD00=xauiNROFUV^Pnp}t@*4igYk|s%#B#m)tk|yTH491ul6Ov=DW|*5ZGj2&zNs=T zNs=T04;qX0ZGy-D{oCXzT=qHd_j=UhD0`^oQ z9h?M(Rp@iD4D#fWumv;^=wv!L3o5G7CdjDK$p$dD7Csw=xCV#7fYI;+=sE^*hTr|4uWNPG~sfmT!DSD-$G_yi|F z*)-?~vK~fW&~rNU0Bs&Y{DWpQ(6>N-6tM!1g5sGd12P{&AA|T==r_>(af}rp&xVh{ zF);KA*av#g!I%VHo`f!-`CQZs&VZ7qP#?&hhx$O5rx7!t#eC!e@-v7Ta0CopfIb7= zo`ugrvxVp{a25ofLw|#;Md%lh_&jU@ofqq50r0&5zkw5=cnQWONPiK13u2eTx1iZe z=s&=gAx^*<5O^7LDkxlzc^G89g8D)F3iuu*ybAk4vz5>V$giRAz)_ID3S~h0>$oO> zcB>Hs!1o4p0Y|~mHJIx_{G0GOXu1}51NIi`0S7?lI>Zo&eH-NgTMr+D?XARKI*{lMEo8DLq0(Jpv#Bw0cf%rF$B(nF(08{ zwqUNr?`HhQe+(T#qfekeI0lA(ir4}1TM>i6_ZiB8q1(`B_}z)$^v|I`h}#bPzCa!L zoq=C@2l9d=V8@pz1JZXQFNpgJ`9Q;6&=nj31HOhGpzUsq6Ci(saR!q2U>*d`zeT-3 z+>3q#`$5)s@D1{8#Bc0A!~*brkC*}n!J7TZ1DgMUxelBFB?mB%f!;qN9ke=#*al}o z;ZNv)(D4xF9AN$o8^C^$aTxhQi(gO|I1ciUz&4QnE3N^c#Zl-8&VZ8N5I@IYCus0H z`V<@hyCBavj+gHy6z zF~}@%77TAHrUsb~&Vq`|kOop?&<<#NIm!Xn4EBLjpyUep0Aw{c$QID` zN`tHdEn6TjP_Ke+;20=uX^@>D^=kM6v}|RN8Q=^kxdv^4)YkANXnifp1GNqO1onfB z>tGvb-4=ZSPJ#UE;a||Dok5m?7B?7V8aN4t#zH61vAsd&13eDD1N%UF2j~gfbu`E# z5Yq{E1HCi!1*gHN8_@=+iAO(y+?(J>(6I~p2{gDF{RB>elCH1~B;JBJ0j(1ZtotC( ztp=G0PJ!XwP!AZ=-5`5FPNG3Jg4iU)4e%wSZEz9{Pl28wGZpa%y7qw2Kx|Lc589*| zWDd~N4KfZK2l>6w7a+Yi`~=$cf!)BDVUS7S1SsqaJweY*gRB9q`=K77X2DKy5aebX zdz#vnB zSq=NaL6B2}wn4{QgDeJ3Mj;P435rL<#~^DA+61v<(Z9eq4zU1^gT(O|Zy@F_*bGj9 zArlbGApLIi4QM$L;{%)l#rGIwJ4l=aTS2pX(H=MrO74TNKhJrjPl?tsF`k%LtxM&s0XCZz_;f&GLjQn9 z^I#t!Pope24oc>ue$e|F_#Sjw03U+J&mz9T2~fNcu>~@p!`K2{7NK6y;(62yCM-rD zfd(M(0(1gHmcX~5=ZnxA#4SaCfrc+Z2XF>dEJGZD%$MOS5WgJtf>y5}MnK~gh$kSw ziarLXLDfp=1d3lnEUbdPU>}Y%UdJ&=T#eWUac^LpfmUnaFVNsk_!Nk15pUoqD0vHg z4AR#jHbASlF&+S051YU-Q1}k)0LdFLSAf>@e}9{ntlrV0ojU}0sBDaXYeOz zw+(RxntYBt;4G-xj=DhR7wCV`ZU<}!jlM)*f+0K6=lI=@-^8zA4`{s$z6R`T!~{4D z2Jgl^1iF3$T|uio@C#tyV!i=KLD^o!Fv$N7u>msop$|cq?-4(s#eUcX$Pds990WrT zU@U^3KSDnccM$U%X#Nwf-=NVUj1i#!4Bvv|p!hKK16^Z+6;Nfp=!as`uY0STf>mVqXc zNhX6+phPywZjh;%WE1G3A`fV$nPfU3x=AL0(_oZgl7k?}L|)L2nq)R0%p_%C2S~I~ z9yIl#JU9aiFF+dT*}x<#LDLJ72E>La2X=#=7nx)YXwk?dGr(yu{9=>?og15E0WdEy zNdW8v8BI*G0mNR4G|-@_NhX4$ApbIy1F114Sq)lWZjw2`Y-W;i;4m0)1#AFqo10`7 zkgtS&;0PGh!X#Tk*Q-pj6f|fFAAlpE_-d0J0E1gWZ;*S9Nw$NYtxeqTK%Z-2KWN(q zWkKufpdV=5)+E!w2{80}lmW@@pdV;`gGuHC77P8r5s=d!I)Kh`C=bjI=reE{1Ui~z zKgj6>AAs1-CYc9(H=1M*=oXK*LBpHi6L1)0c7cAN)y*cE2~L5+u4n@!+=Bd|K?3$c zfrB9HR`dsG*$sUK&Vq5Mdw6%~4!R_oWHD%v1mA!oU{EsR40KE}$s*7&)g+U^5s=%% zB%48(o=5|}G_(bdfg$NA2fFq$$#T%DH~I_s`alU=+G!Qy~gh9{&#NKX_C7{`0 z=mN|;;D2x$R1853f?U5zJ^|f^BCbKpJd?}?4f0_(I1Q=_U<1f4M7)8HMbH7TV#FIb z1agO=ZIDm`pM$og$OG7L)B}!#;t?j<1rp297HC zeL=gs5DTE`1jINv3##shZD7zulWYSC_dsvZViM{D>|Xd2ko%xNI0?$`hhM><$*3Qs zK46mdpyL$u1!(#p<_2&U1g1i7Q1}q^1)0-eGe~$C?SPik(GKuE0=>a;kUs-?LC;4K z51{2t%wIr!3~hs5AaRySR)AKIqu+r!8~TA`VCWN=S3v3`d&9Q+TG7s1D%?emxi zK%>PbnF90|(1+j{$X#NRjiBv|$OC*!F$Tavkn?6`+Xv7UwEPflfJU34GhiQ~EpQB!Y=M1X(8uU6(Df7e0<`-SJ_HT6 z!Uk|06n+N1KiRe zL6GwU`VAx=K;MAa9}#OH<{;*OVE%->;0P!_ggyc}KO>GnyTix}Vt#@DfbR(W29AOu zzrx2L@hE%@TK)!qftX{+3(Vh<7n}rD$6*u5`2#kA)D!4e5cem11X`VhEoM^1I(6`OabQAluQDo71{wOLB%zc90EgIQ?eK2 zUJKnoMjMKET=>0?k_{lPEhQ^J>+4|;XxxsH=|H~$J_V;hAQtw4!uFKx23c{GYz65Z zDE9KehK{fSH0VUhec%+R>Wub5?v3a(kQz_PTF~w$_!ur0fV}tUXXYT z>;!ER;6K1_g?->C7|;#=2i>}(ZO}Q9l9ix!67qs3$?zj+kb?dOaw;X`!3j{(1HJ%* zdcqf=cN!&|L1H?50lM^}WEF_(jrans`@k;HJOh0K)V`<-90IwS&;!KxLtfA<3o!#u zfs$-Wc7ntl=muK!M}Gk`7q)`^Aon&(HiFmzl*|R4EJj)AfXl;luDH2uz1x@p}lrgC9Z6f%F-$4J15@ zIzXG5@DYf447vd}3uS=#IQkeI2gS2tGZ^v&<_?fG2eyOwC(%A=G8bjQNl^S0>;Z}M zFwQ`ur_pcVILMz5{XzUQXcIJ806%~uAop3s4~Soga-hX?=ofGrlr2KLpy%`O5oo>` zY2YL%egW-)ge52kVqQcVI1LJy!f&AWOPK3GyJd(a(Bx&rCcx$cQU&&a^j9zzRv;gK zm*6+%RoDbhf#EALo)|8N01y7_+5hECLhCAa1xY!0$V}qr>FH{Z0{z23Oy8Z+^K(j+g1E)d7&+r$>I*eEc@xMS<(C7&4 z04G54uZX*&@E3lU;J5K_@FO@20>=eu3-mM? zSr1}O)B_q)#LyGe%~B)1deYMz(|G=8UWYEw4m*V76dn6gUWSuVUl_(6J>WOF+!kjEJqE z1AYVe&AkTg;CC~Am$YWs--A5Y!d7qw3~vKlLHc#D6?AON$YRj=dPXLL;~>8sBRfFi z4bTI$h=q=Tv}dFW><3wK@B@hLz{n!dxFaJ|z-dt233h;l&ge7H_(t>xI0;JP;YW~o z6Z{97c41^HI18$7X5=s!&=v6ky57R@P7D2!0Q-P?D{KTuKyf$N0kXOyFGx*fWF6?7 zgfbu|8Tx=TV0a4hf&r=U3yAB%$O6E6BF?}OFgOiqAU+*BgXXchw; z5SIa)!T7$2C2$brWTIa{*M4XpG|fW$-~ z2YZ2;k2nMe!GHq9A?Q|!J_ap{U~4fWv+!Gk-vc0b7;FM@C9oGXC`CVlQ()+D)D1e0 zU}P>3%h0!A2S_f*xCU)25WhgIL?3{ipj#E<5;Pu(u>}r+tN{8Bw62D2fYcyA*Z~r1 z5htM0DEI~FqhUKZ42FzhWDAHJ3)_J_4&}fO(B)2yao`&dd%#|hd>85hjV7QDun%P1 z4P8OZM8rQh3Ucm2Y=ec9P&a6JFMM?;*5<)GF@z{YCD`#u@P>on>Psx*BNvbcLd1-Xi}Bv+GGquL2J!wa7 zAhD!9i6b5GWk)B{ncPU?$xWmSxtVk&w~z#KE9pkMlSGn4l1U0lB|S(_l19==FVdUz zAsM7E$t3+q7RkoWf&L_y+(rhFfn*T5oeU;-kRilRhLSwYyal9?6p>;wjFga4GMtPc zWu%-`kV>q+k0b$7jVIAsGK!2Lqsdq@j@(Jcle@?SayOYs?je)Nz2rV}KbcG(AXCVL zWGZ=xOd}7I>EsbIgFH%Rl3C<2@;I4Io*;9`lVmP=ip(QVllkNse68{m zLZwh8j1&SwwNN9}3ZsP4!Wdz!FiyBr7%$u97O?X(CE<7U45FQm~3Xci1gvW*1!V|(A;Ynex@RTr5cv_e*JR>X+o)s1f&k2i! z=Y_?>3&IlNMPaG%lCVs8Sy(Q-BCHTz6;=wb39E$Hh1J3v!W!XCVXd%EcuRO&STDRI zyen)FHVW?vn}qj;4}=eeEy8BuBjID=6X8=~tMHkyP54~cE_@;E5WW<43SSAkgs+9& z!Z*Sm;ag#^@SU(v_+HpA{2&|P%mgo~N5F3aWiVek! z#75%9Vq@_Vv59!8*i^hsj1eyvn~7J5&BZIl7UET6OYv&4m3WQVTD(?lBVH%A6|WcD zi8qL`VtX-8>>zd&JBgje8^w6>Cb5fnv)EOv5%M`_7yY5eqxrGE#`_jVt?^Aaez2b93&>fLh(6qk@&p0SbRZTBEBdt6<-pUi7$)G#aF}?;;Z6H@ilRk_`0}Sd_!C# zzA3I1-xAk}Z;R{2cf<|iyW&RiJ#mxxzW9Oop}1N6NZcZREPf(>DsB}&6Ss+2+#`M~?iIfi_le(&`^6u`1LBY3LGdT?kodEBSo}piBK|5K z6@L?tiNA}-#XrOo;-BJ4@h|a|__ugk{6{<^{wtmp{}YKMNTMW3vZP3=q)EDDNTx(3 zCRvhCx24 zQfuj2sf~1<)Kf2Xb(a#Q zBq>=+ky51|Qco#ON|$;`y`?@j5JmnC*3KH zm+q1#NOwyUrF*1F(!J7s(*4q8=>chq^q@3VdPtfkJuFR^9+759k4iJ8$D~=(q%>E0N}4A4@~JbX59HIwt)t9hd%)PDp=BC#AonQ_|nkY3U#7jP$Q`R{BpOvLK7H zB+IfQtFk8RvLTx?m6>eGKKTNUnRGcua;ZM*T}8qYvnfbb#hzzdbyo^gB&Zjm*eCPa!0w7+*!U+j+bweyT~`o zUFBQk1o>9Eo7`Pal#}FSIYmyDd&oWIG&x=FCHI#5$Qg29IaBT@XUW-ej@)0)m2Z;= z$OGj;^6m0q`3`xA?3ahid2+s7AQ#F-a^XPn7SGC&~B9_sRFmljR5GDe{BzRQVx!n*6XlU4BHK zAwMe5lpm94$&bskF%d6!#=;Vd7b>Wyk34s-XOm#ZE%L|mC-SHAR{1k|oBX-FUH(GeA%7|Fl)sX9$zRL6!Lp~w@DW8=8l26Hh%ctdk z%&mnJ9uHDv}~AilQo-qAP}CDpX;LrTCN!lm^O$N<-x$rIB*6(pb4fX`)=J zG*vEBVwB63X37;xbLC2seBQn^}brCg)5R<2drDAy@%mFtyu$_+}a(q6eyiBmc# z9hFW>XC+>_N$H~8taMdwQ4*9}m2OJ9(p^bZl9Xg6MM+h9C_R-lrI*rM>7!&QeU(h5 zpOU3yD>+JkC0Dsk8K4YQ1}V2IgOxj!A&Oras^ls8N`X?S6e-2ZFr`E(Rfa1glrp7U zsZc7FDrKY+P^y(0rB)fGj8?`dW0i5royvISE@gspw=z+=N13GDtK6sDuS`}RP^Ksk zDpQq*lxfPt%5>!sWrp&oGE;d>nWa3g%vPRI<|t1pbCsu*dCJqueB~Ksf%2@fP^uCh^iPuZlruY90{h-}_9)*fdzJ5$eaiRBe&q+{fbyeqQ29yuSvjN}R(?^AD8DL4mEV+O%J0f?<%IHw z@~3iA`Aa#a{H>f;{!z{-|0-t{qW-4{s;Ek;tSYLiYO1aps;N?ysXo(zGZ4QhKePVJy}R6D7i)p+$r^(M88db8S9y+ut>Z&kag-SG!alGJ21MNL(Es6Ev* zHC^qc_E!6-8ERkr!I6GymYS{RsQuMkb+CGyIzSz$4pMJd?@))Res!ptr{=2#YN1-B z7OTV5617wvu8vU4)N-{#tyHVjk!nD#R%_H+b(A_<9ixs_$EkO!Z9sR^)Ypp`nWn-CpHkPq!Bb(Q+Mx>|ih zU8BCKu2tVs*Qsx->(zJE4eGn7kS^Y@eqJFG?qJFAwRXX+(H^(%Fk`n9@S{YKrReyi?Pzfdu8AJhZtkLp47C-so}vwB$lMLnYa zsvcE;Q;(^?tH;$p)D!BT>Phu4^_2RzdRqNQJ){1so>l)-i6&^GCTX&!XsV`Zx@Ksm zMm45cnoqkxYoJ}IHPkNB8fh16jkQa(CfcQ1Q|&S>M!Q^Vrd^>m*RIrBXjf@1wX3yO z+BI5h?OLskcAeH%yIyOj-Jr#4?X@_qgVs^&q;=MA)Z(?9v@Y7sT378BEkV0g>!x+r z615~PSxeDUwH{heElo?;dTG72K3ay>SIgA;X<1sfmZSC8a<$vE0op)qkaoK^Si3_T zqWQI)LAV4Q-9~rnXjlOIxSCt*zJI(KcxBY8$opv`yOk+6UT)+Ggz|ZHxA? z_KEhXwpIH~+opZ4ZP&igc4%K}JGHO0UE0^$ZtWXwkM^y$SNl%er+u&O*M86rXg_KP zwV$*@+Rxfy?HBEc_N#VO`%OEh{h|G?9oJ51e`+VSzqC`@-`Z*IAMK3xuXa}ZPb0dZ zi@K!Cx}vMPrt7+)hFVY+77we7nOY|oCrFv8SGCfAWTyLgd zp*PpB)LZCR=`HoE^;Y^ddTae!y^VgI-d4X}Z>Qg&$Lj6%IK6}3QSYR8)^F6~^_%oA z`1Gx-ev6)izUAd{&mD_t$gv z+w=kYKz)!tSifDrLm#61^`Uy6p05|^g?f=*tPj&m^iqAeK0+_k%k>JqQm@iS>H)o4 zuhDDqq19-8j6PN$r{AfM*YDCN=y&TA^?US5`n~#n`u+N3{Q-T7{-8cpe@LIEKdevJ zAJJ#%kLok^$MjkHI?Pf^hNsf`eOYBeTn{} zzEponU#7pTFV|nuSLm4tYW)p;jsB*-R)0%hr@yVQ*Wb}M=B|*ZOY#8-0)dt-e?P zPT!}0ukY7?&=2T8>Ie0o^h5g3`eFSS{fPdnepLTWKc@e#AJ_lTPw0Q@C-uMdQ~KZf zY5gDljQ+2FmVcUI2!?1#hHNN?YG{UT7=~$3gBh0LGcGV17#A81jf;#%#>GZs;}WBZ zajDVNxXg$#E;pJPR~XHWD~%S$RYptWYNM5LjnUe;)@Wl~XS6l0H`*CD7_mlsBhKhx zbTm2{osA6RMkC(1$>?I-Y;-klF%pbhjc!JFBhg4Ql8qE2)#zdLG}4T8qnFX!=wtLX zGL3#lmXU4b82yc0<2GY}G0+%f+-?ju?l6WJeq*SSXXG0NMxjw;6dS{g5~I`@ZpdVW zQD&4I6-K2|WsEceMzv96)Ec9V(Z(2KtTE2G(-?2uWlS*cHYOVP7?X^9jr)xIjmgFX z#uVd0W2*6xG0k|`m~K2`%rG7`W*Uzfvy8`$*~Syb9OFr2uJM#H&v@FHZ#-ixFrGCQ z8qXPvjOUHT#tX(0<3(es@shF3c-dHPyke{{UNu%4uNkY1*NxT28^#*rO=GR`ma)!w z+gNYBV{9@dDGb{bz9 zyNs`m-NrY@9^+eMukoF+&-mWhZ~R~!Fn%-+8b29_jGv9e#xKSZ<5%OT@tbkX_}w^e z{9&9h{xnV+e;KEYzm3zzKgJp3U*oKSO{%6~il$`Bredn5X6mM4nkF@wX_-Fr0<(d6 zq1n*9$ZTX@Y&OQ`&nD)jW>fPrGse6eTRE>Vo10gfEzGOTmgd!FEAtw&wRx@C#=OpK zYhG`*GjA|s&Gu#-HcoalJDHu$8_jt0CbNrqv)R?W#Y`}7HM^PJ%|tWFOg2-@RI`WK z(@Znd&0c12vyYi!_BAujerA@LZRVK$&0O;~bAUO}9Aw^Z4#sA{A*SCPYUY{wW`S8~ z7MaE7FtfxgHHVuc%rdha+wv;SDs!Y6z^1zzv(_ACjyA`bW6g2qo#uG+E^~r;w>i!JbId2rx#m;m zJo9ODzWI!~z^JR0n`HH#1eAQfOzGkj6UpH5q zZlv&8_BV<~H+l zbG!M4xx@U@+-ZJg?!tzp-R3vu9`jpsulb$1&-@-+j(#u?m_M2av7zXY`LlW0{KY(C z{%RgIe>0C^GthDK5A%fir+L!+%RFWNZJsv&G0&L)n%J&G|1$+DQkhCrp(@p=P7P{O zN*T4Nk6u6<&ls2W8(HMF;ZAP!4&FPi21-**4q*v2c^cvcl zUQ651>u6hgJ#9yCps}<)jiViCN7{*YrZ>`fdK2wJZ>C-8Ei{4NO1shSG?6CJWST-# zX%E_yrqOiTi}t2{Xa?;|Gig7XMYCxR?N4**ZFB$~NC(l|>0o*X9YXzdD9xk!w15`U zB3ev`(Gprphtm16r05Li zeVeYQ@6ZkOUAmFJM>o;;=?C;fx|x1Nx6qI2C-hUgm3~II(a-62`UTxVzoa|qS9BNs zn(n6G&^`29x|e=O_tEd^e)2dl8JwgAZ zC+T1G6#bi?rvK10^j~_G;>9Hsn8+k1Gli*4V>&aK$tYvYVm@{OYrrmK4cSGk5xbZ* zW|y!g>{8a0UB+VA<*XUIf(h8=jt7bJ?+(ttJ2?OD;QYIT^Y0GMzdJbp?%@2pgY)kW z&c8c2|L)-YyMy!Z4$i+j_<#D{LB21~cmDms`S%BppMQUF{{6xE_Xp?SADn-GaQ^+l z`S%B*_Xo|{m8=E3inU}{vsUaH)|y?*+OX?bTXsEb$J(%wkkUD+)xf!)fwvFM^RuBWkL9xhR>+E2F&oB8SScIMMzAtg&MH_Xt70QrfK{^^R?9}Q z(QFJG%f_)g*}fWiJ;N5TXW2sb99zVmXN%bjYzcdjEoCpUW$b0PoV~(U zu$Amp_8NPgtzxU$8ukWzldWZMv32Ziww}GiHn4ZuM)n@t#NKBgun*a0_7U5{K4zb= zPuW)X8QaD_XWQ8qYzO<2?POoEUF>VNn|;Ifuy5I3_8r^DzGwT{59|Q@ksV||u|w=< zc9{Lbj<8?ZQT7`<#(rnV*&pl#`;(nyf3Z{SZ+4pf!_KgO*;)16U337PXjVSw8CmtATZ))zG@gYGhq(HMTCXnpl@wO|2N~GV5}ynRSKL+`7_gVO?dl zw63w2r5b%PaawYTD|4pv92lhxU}(TcZjvbtC|TV1VNtOV;; ztDDu`O0<%!WGlr=wR%`Rtu!m$>Sgt|`dArOUn|qA2T6tE!RbUlbMOLvj%qp=;t>M-PtIR65Dy&MY${J|}tZJ*qsLbn^^om_TM^|H0x zdc|5{y=twrUb9wNuUo6FH>@?*o7P(EEo+_iwzb}R$J$`MYi+dNvo=}pTOU{-TAQtp ztS#2Z)+g4d)>i8?Yn%1CwcYx{+F^ZZ?Xo@C|^}BW4`olV5{b`-F{<8kIPFbg|f2=dszt&mn zKa2PTpXif)l27reKFz2544>(vKIXH0KHmkt2EGe@4Sg5+8u>2vHTGTNYvQ}qcbTuL zFUEJdubJ-(UvuA;z81c#d@X%f`&#*~@wN6{>uck?&ezs=y|10`24AeNy)Vw!!Pn8( z$=BI;qc7ffldp^KW?xs|ExrWbt-fx)?!H7{k}uhp;!E}Q@b&bi`OOvJ zzD!>~UzRW1m*ea2%k|yn8{ix08|1s)H`sTF&+i-J8|phh1D&6N&d)&SXQ2OkGmu35 z-IJ11va|j8_nJvrX_+}`eKXvDq*_lxDgMD}J!1QRyz+nWn_ucL#Xqxl|3@$KLROGp z5G5$iZyy(5S5`+7ou?*Hr=0sA$(@#py#GF(Hyxoz9mOi^(W5f>pU><4cf~?_eS4>L&j|Z1C8K|zl&tPKDaqd2JW@EwRo^2Fwc(M48}SIkc6x+0mHxyG zx6;(aXpP)|kefCrB{?UpPl`XUaJZW{I>p=3(P^IEj!p_GADs}kAUeg{=h10l6YEKF z|CMm00d;%NE$JpiE9i>D>ZNt>RJV?>FjPJ)@|4ZUN$HW2#s3MjtCjozx}E=eZO3F# z;&Eb76b^@=B;1-?bKSPWE(#X%hCoLD-o3rSXP<{^wa>y;_DxJrNy_mT1d8zQ&s_st znMYe!5~{>K_f(UVlak|iotTlFk{TWn-v2)C@lu4?{s-Z#YkR#Y*p2LBu0tDqy} z|Mfjm9_|IVuy=;_itPVy?yb?z2&um~$`^IofFL%qRUT9MWBnOv$#v!Dwu_hYrh2Z? zuBMpH`sbv^M^@?$4CivqC7u|{>D=Be@9}h47z&rLDD1VII+x9;Yo&eay+GQ6!qVbm zS4;cc+c3Y@hTG(4p62+ew~Or3VUGt-BQJNh6uuc&R8bVjD=QsWR9I759vm$>12a=R z^Q(R8)rTjCBil~q@rRo)e`P^UQ4J=C(u!e0Yuw!DO7fV(b9yv)PuqJd;ywO9+TqD{ zRp_6QmYb55-Mx3+PK{0qxj8x^tY&ly+!$eS|C}V-z2Uo~pv2qhAz68qpS#{49EQOJ zkHdqauySq_9;IA~Hxh!y!Y=hlqIFJxbVwF%JvS{ot=_pmG9gq+q&Qp; zCRqEDQ(jqETNaGQ{ECS9ww;I=C@!rit>KSe!8y60vZ5LnKK_VNUvgnwDelxO-C*Kp zp=qiRk4n`+|A%iNoWX%MDo}NBaE64VI=EHw(67uNUQ`gQp){`0(-J=mwFHgJ{b<`Q z8a(x8cXLFS@v7()3tbfKQ%t*2_40{0P!#lHFcZ}AHjYeT_uF}*%S083GLCCo*TM=+ z%3SPiDXN*OywH=N-K;loZ9#SEunKQ^e(o=*8RM1JRzz1bswhxe9K4{G=Q{(_Ul6{? zhGgi}(3RKeK7TdlLAQEdZ{!fE$_rG7Q*n&D^3aVsv@b8MDIHbhb$M7Aw!Nyh#$Qw! zeC*_B5usCEG}7-eiJwN;=y6I--mtjv<1s&jv99*$m8vq_g?mCGB=YocNEYs@kSMIO zqd=rHLT>J#)3a|@TFyX!T1IN$;8Ka(M7?SD98hnH(_$#8SIWS&(35YJG_n#Wr(Ha; zdv;oqKdEm9rmgO{Bh7aEqpqA+QCI3zk{Y>&lZf-;{LUT2%PWwC7GiK5u@1w}D+&T* zt9S#cek{5~l?*MpAeCRQMie1l6VrO&ao@hmC#LoF=M@wb*%k2P>WcRKa*J88sJImI zZ)XS!t80rRg}ll-Il0iAvmmdmET4yXK~12{sgd8shMp~W6MTGNau`$N4;0k|Y#kvC z=f{z)7M}MCk!579J%`#QgGr+U7|Q-(wRwTOiW)u@g;J|9Z`=0>AxWT!D|wE}Mn~i? zEXuDP<`3H7)LJ+!kXP=nsI2f8XopBmGLf?kP_ADDpDaE|S7m%U^ zktLi=o`O}l=H!)PuHwat?d}R5=jT-yb?z8CLsu2KIu-j1N~=o3XXThHo$?j9Ncn3* zzAW}v)RwtjR1Ei&mFDI1OQW5+uzrJ!3;oq4m9=HOTS7gD>t&()NMx6_FAc#XKjOiu zlLwj;eg5jof)V`bfM??3NQZkR{=5Kg_k#KOrO1AU@dz-ma8WKSa>JJwE~&)jx)hHJ z!E9BP0Z(hT>O3u+!4V-usw-W0qaI#O{#d^L7s`ldZ(e5!6bas$@pEtY@_Wc|ESK|Y z;LK1ZuE2Rv;ANeO!8!0J^~rWx;8yV^itt%xucYi7!>8VH%ro=8t;#EPgMdqLYf)j} zI=HR)?LZFKQ0xW<&s$s??0Nglbsax0$7MLb7WXK@TD*P7$FQ5ihnMFN4`FtJ+VcFO zfIapi1bq0`6uGX(iZ2GUn{FSwrK>7kMeIwst3wsmDZ>7(s;$P;CvOT@Jhykks#Hfz zch%0#5YJp4>78mjtoS&0>ZG1a(P>clmlg@TbDj%!=$ z8L|94BF?$MU0ShK$7xMLl^-Ermgml$)fHY3@gDMrmJaMPT;iFx>>T_q*Hx7#*E_-4 z8S9RCCkFhbcp!2Iw=3aOj8i9{XS`~UaxUFmn^9h6M@8x$422ATV(+w!WWL~yIL1u@ zSGBItUMYx>qw{fLz%7;Cm!1-C`yL6ODuRxU64#XQAo7>;koF{%)}x6dtD^|UPGnhc zH+rh%;&Zfi4smT2=0HANGW>k4(0)vDk3%-{1eh1f+9ceK8h(IN7b4J)Vyczzo>XOo8X8<^dj=p^1nrq;w z%SUA}?A&9_1*Lr10LE}hu(#afIJ={~sr3uOVN)k>I3nCS!|@UnRF~q}+L_q7$iA@f zg#lM5k7+zP!o2W#lp#*8C}D7pAQ;JEfg8dhK`?ehf?&{ARG>y%Oa6*J z6b-?XuomIx=nNjG_Jf;yq`IiKurfToc+RqW}e1_F!`yEU8CB0p7Q0%_7wPmwnJ#f0 zD8fyj9sM}LvsNep$7Kb1Jo21`vI2Wrc1|k1*(&fNiujYdXXiw&x;T=^)e~D5T6wY0 zBGz6UNpSVWK8sp^v1Pm)>{XW}&$3HWN>)x?-z zziFRfEv1$}592}ApM;ASRyEQpiYtTmL`iL1qGWD+k;Uy%7E~@v&`gfGKh67j7kgov`!)0 zyY@)H1*V=#gMNsrFXRfyORGxZ%aC=wipDx`+U)`7R#{ITyJh~E5|PF3l5jLTRyw8a zqzJc#8n=_|3ab#q;ogYMFd{Ed8rdcFq}#RRm0{_ou3mNpb_O>PZFhRK3umYdln%2W z!v0q+fua#%uSZwo*5KUNoud{+O01uoT(7o8BVh0UaPtT|19nx^?J3)#Bk;=dTwNK? z5Oi4mmhdX<9DJ1?>nZhjxNXNd%y4YXtFCsg19d&|Kb_#LR`EjFC3%6O!e9_p7P?bG zHrLA;t@8ea_8052D}P- zn&inIM|w)b5$*B5#!lvHJ3-;ifV4Wo;A@L0yB#sVE#xz$QwrD8Sbq{~E-fy_g{&y4 zq_VW2$nAJLF{@}4?z(D9D=WBcTnrhE)V4dL>oz3xHs2se>Z*2Y5<#l)0yP4l69G$-~QV_o8F_udV`~VT8rjaCMMJR}dOcTwfkl{CeyJ ziEV-Xu-4w6SHs^za^s?x>)Xe>7?u<~b?(ggSR}|n+?snq1vQj(?hYmfr>U}ftb{DVq@l=OZa=c4+Px&Se`^>$;&+);;fyEA9{RdpN4$q8inhao7-b$ zRF!T@J&idj{ACYT4e&zAZZ;&e7Y8Fm9_50$9Ifn^MG;wRD?FL)tsed|EZDhiIMboK zyV8DF=t*#Q2PI|o_9v&|DK@jOXX8P%)PBZ@%ISo0*1*i1zJC6}hx2g-S_q5y_Z1;Q zPS32A?#b93;oPb@xxzyJpzRh73u^-b=hh}FH;=O5+pfCBO7d(sN0s5;ICmMIikQcu zGZucM_27wBl~}8>M}$)^V!~ee4&}xNG~5m0CnG1HD-K_yU2#D<&z)z-VT7no1y0W3 z9YR4tIe$0rs))0Qk8SD|`|B;^-b+Wc4MX`$mB?DKNhd6FKE`Pu-YgQ#>m+!-1&U0l zW52Wen7_ftj29f{t};Ql!7-2t@xeeA< z)$y3?LH@oUmjv8{huVzLm7mlpYYT(#a9mA?)s0S96dj$B;;2q>6Qdm*DXzavXtH#S zc8f&BtSj@*L#_z>O|aX7Uo#_0M@F}s*BjluAA{q%?p(oB-R^Mj$p3eqLbnU+Ogi3* zxa0qKHNi`rYYLQz9xuGUU?MJ+@2b?TCKHU8*LDwLGuP-1f`Od0{0=91M zwK?3n6Ds!J4K!Me`$c|V5RN#mjVI5!GhicC{q6E?A(L=g!Qgm6o72)0q$4T^e zovsbomxB;3=J&9U`Ft0SE%Ap$(UYiq9$fo(3kHg!dH{k-yi(?uoQM|q{CnIfuPB6L&@3;O9A_JIo{VpJQ}lq2AHT6M5C= z8m*D((W5n(TJLBLCf1{o`@+WUX3tI*S28Bz0*wel1ka6* zC%^YLCnS!zJ@K>}zGMcoM!x+CNkeadf|5EzB$&XRV=ofnb8y=#46Ir_zz0u5!_yW- zzKwE4VZ&^J{rv%|&YGUhRm*|q5vyA{Ej+!=I;1%Pq{UC`{_Bu{iEm1HLloQ$m1!P=tpBR z4m+E>sM=Ye;^`F;pUrbgJ$gYDX+UTo@B&qJs^D9P{GJ}=FL<$^Bh=yCMt@vz0TDAQ zuf`SzWsWE!O579Yn#I@Gc%h&W7jYf{UU4O!Z@jU9+fhCR;0~b3L~1P`4^z*)Uf=*lA+jEF;?A>Bd$XZ92R`5j!UJAPf@rfK}PS5G6ynu6tMO7Gv^+>GQ1;Z@(8454#u2b5F_G$t@ z;tv~jM!qYLtjKxB%EK%e)q?W?#6Jsg^cYrFnUBv($|@^IINi_}$MzKx^kFDBQsBOgQZRpC$Q>>oe@~CI5-^ZBnC&Jli>9_tPD?xPI72UbWTH) zV#KLEb%i96^`E2H&=gPcIz23k>^I2I(Q$4{R3&x0&g&(6rs6jNj=tWBD=6VpmvbC8 zC9_v1{}jN!w+POp*Z^HeYR^?js4sJr%+2a-ig#aa2j}aQB#5i*4V9rG>dN@zceJdY z(pi1`=6prS<3CD{Pt$$%xH1r}HTM+Ogm6KNsG8rR*I#i-p1qg8C^&;+gRHlkoe;ybi>E?& znsTk-!w;{f>vaoH3;Hp_!QKR~gR$M>9E#X8A^%7;s?WK+-X^>W-X_BGs6ONg?wwXd zlyJHIj^}^4p63Y#DZbxz7Xa;BJ9LCCaR!X@r*wj{;0WOvg5!f9heiiK3ElpAtFy-i zcDeG4w_BSn!cEaA{w-3Sym*ExD=mnY+ct#*$!QKVEgqOd7Z+Q79?W$mXvLjf!a>gK zD6OdGH#z4@4n`2qT7UfTl=_0fk=vW2U90W8z~Jo2lX+j*-x!A?B`D?h7m>E|ymf8m z(nwpmB+}VjQlGDFd0kgWiv4-`$hm^w@L(Rm%!=;~LcJKi>j~aO*sd=v!soA{Y0Z8o z>wHZBH#lebIK>WAyCz5E{mdkk&t3=)p9MqEDN&e@+uTrMFeII{P*6IjT&;BM)aQRG zf`5?XF@|4`Jk{`=buA80y5aij&E>6%f94TwrSmPEr#)N%^7x-s;jfDLidD!SBw*UK zrwfm?JZ}Wne(fIdN}X?L-I>o((f)cMR9i5Loiu!vSVuEkQ~T3{P$5TTe>xN;Lj|7Z zdBFVt^DfU>uixAm*HQ1BxxC)xnSxtSa2<*4(K^+gGiP*_SQ@I^8F*1rpWh+=Ka{=M zcAPiP1=^2f%W)@tDNE&8$F`)_;7laDrGstCh_b%k;UvaEn`dA;BcN|xzN~Mb*QH|FlJ*adcTdiKH){tD;u?Shv?dRK zJvd|#KniYu!wB~`7{)b#OTjVTN%qRsPQ@4M70!>s(^h}2u3nz?c6+7BevbKpBM&_{ z-Y+K5E_oNmy5m`Y>MTR^X7RbUP-yb=bl3gH>loWAjmky^3TF?=&Ak$ zLVx-deOp3d&2+6XV2zptA(w(mx)q=6 zTO!<;!j(gtiGh^jP0>G8y3v4fyevDlMzs1!Zn>NFleC{MrVef$G44zsV#k>a!x;j$ zo}N-pAaNw*V4qq-IbJTO3}qtLW$F!olZl+VmO-5pQkTCcW!@J!P-j~N_&SiJd6q<{ zxsezo;cAh~77I$)mgMydJ*S_V4i}}LF=^v}zC}sD(k3ZtIXweWtR_aU9iw_&S4fDm znSrzPT`hsJqj_=1vrbk}TLH76pZ=&0wXXYA)8J3ndNs`o31(>7+Ag_QAlzKK$Hw-w z`ij8;XX;J2&@t0q8|XR&i)PHOD`?ENA84TOA{)#-geA%40Q9YV6Eh(q5Oojf_ka`c$#GQd5O~s7!1B)(|`^&`QoJlc`_% zX=;eSU2PU1u(-M-i>)&L_BBN$+Ci{kOcgX8Q%NZUn=4Em>_VX$95k=^P)I|VBpC`_ zlf=STJS%dg#X2^{lUr8$N$7oQ;F*(kKQkC=GWv^H8U4H05Q_skvDvsSw6a#9Jtz?~ zO3Tl5lqN;H;n|?vIVOX0V+g(TIKGq94c`Q2&8pExJ7?qB%YEwU?EczkR@82(qqbf8tQOd@2l>DT&NSIo_DV zi`0R*gmcqE;QqtY1tVHiTAef%RxPAe3MrB@NYjxk>YAdISYU~2B*z^bdgzU#ta>#Z zCnGGYT=*FT$gPbrH#yLsz4;Zz8|(GwY^w;Hl!wIu9c zjuRC3oHBIpG-E!-<^NGI1DCztnGk+XaCQP2oE9B{7{@Hn4-)XVx3B*7<;{eUz&a~W z2rj?J)vAToqG9`Q)1m@snv_uZC8z$cZ6<(GP-hp4m4<_vSmL?6c)}4^(T340RCIBE zU8I$UihFsus1(_B0hc9VKv9i#NFE$sLU6pKnU<5>q`+8Q@iyH}InQZ&fP$1Gfrh{_ zNjs3VIurP$e5;s|N;nVH~X>-CUv%S3~gy+gYU2dfCQ!*~C~I`rAYM_x%^;P>9a@dqfzzz=fg3@12b zv(uAw&>K?pMX|u{wm||-*P;WcYi1s-3m5^_l`#);m@r%Do>)Ga1NfagXcAyPn1L%8 z6H>FHv6`+?df^h21#$+1(YdC2l9-p7lr3tJ%u{g~hlU&_RMjX|mRZoANxU9WYrbM;EKVgA5*B^=TT? zGDkv!PErLTlM`Q;FsZKmZFA~Cmm!$Rr~M8rr#JyN$RZfij_Q1oh}c77g?sV^t}#0E zDqzwn5L4I;!O@JVK4g(rqyjoggLw;+75{nP2i2hy7_0>^ws`9yD>WvUcA8zoYQ+Ni+ zR3m?O(;vTEl=kZ}M1?6kJ18KT3Si_Cb)y!68!R}g)i|O2W#<@s$@TZ*cl-nxe=jee z9{!Lc7|e^C&k{SSjbjet{GkgFP942%+A?xm2)!o4$E;RQZ7gYGm6YOPgt19AJoLnbI&2~klY z$zcjd;W0b|Fe(@AZDAPubJe)MVh=-Gx8{IgL; z$7`fMsqpy^=4~mY!J(@+rf;;+&>b!jx|)A9Qagm}YK&G>3RV=ZuzzFQQAisEuQwZB zZ%X?GUq2ko?k?&PyPAJez6!;5s;eYIwPQnpQ5$VqC&n#!>>oFBqO%7fXoS0n^;cs30*Lt{EZ6qcN?!pbg@*BNp^X;PaxrVoq zc6hyvUf+mUJOXS1+)W*koia;p$!;zqQs<$S1s6BH9K=QN0In~3K*PFNZE)k(u>5O> z7e52wq>{rIpdhXQirE4XaRmV23jn|u0Dvz50ABzY+v{6^RvX69k>n~$h_;*pxN=s+ zma|}{oPyYL5^&`t;L1tBm6O0&&Q?*Ec*>>L5&!1hTdgttYFXj$CiJRaK4zSime!-K ztOHyN90{e=4sO{yG*JXqnJ7XuQKZ15B1#w(0h}lTbX0`49u*OERHVX#B83nYAv`KV z)F`rferq+5pS?=2um|wg3gOS58f&%k5GY$TmJqri`O!*HepNpyKa0Bj)wGl!4BuHL z@*cPU2ZI&m%(B-PhK;R8Nca;Ysq?BDA1rmlG`BJ3vMQa$iIv{#@~^m zZ#JbwtE=k`o<}8!X;pa~iN82~)sdvW22@cUPa^vGC%&R^E{CV{kbHf;lCTE$SGSo^ zn{nhap??I`?owX^)`RWBWX<883!@BHn5bOlIj`SVB1 z{^_b@k3S&3X7!VHx=km&)&6JMekokM{ti3nR@oAFmI}UpM2v5_yUh~F9hs(>{(>*p zW+yDfP)&9rPCZQuu=ioH_wf{O z8mfIg)^coIJv+Q`6bo9RmaGCU6~CxVX5b-W)9`ms!k5DL%$)~Ov4bsPhkDwx0|-B} z*%hRvD!)yVk3%J#6{sgFfTa3#1V<(5^Zrlr&$75WelOM2`PUh?NH==5kw2@af8NJv zgnxRXw=L0IpXjYgw1+*eJJO6 z{&R51_yGE&EK9YYEjnu<^EX3{>d%s+h~eL5HCu_CCTK|3CHm8jwWzEHk~2A#iKmq8 z-x}&vx#a{?S3rxgI6K|j#f#Q*!k|4hUzE#+a6XEPh7M{_g{mrLpc!eroY7>O&j{CT;-rSq$Ai1%iH;asf(PHS28CtH1X zqyJs9z+9Y|OkDT}muodQ?hY2J0decAEDwD{({L6n+&hq$|J}}1CcZ+vrYNkjRVWb6W*p+6>5np z;8LA05c4`|L}0EYQ}&7uR;>h|zeq^zTDgl2i=PJ6H=KmnO`8ydZ6k*@Zlzg6iRPoB z%77D#Z4NnV`p z9aH0ER5izlftl}#{I|iU$L|oQ%(Y(jsR|lvRLI)n^w`YuOEv{_DTT`?^sSyb0&$7( z+b6+9wSK3zyaaQ}1W6M5TKjVJ5x1fF-o2}z4jY*r>|$|p^$TVkpN{GbPBb!TOK&if z94A-NXP&t7@Pw*@J#m9<+QVNzp%=`@y;FP{cdBW%hA=c-Lo?7gknOtv)}vaw~eOgCnECLJ%{JR)o}mTe6Qvo4A8@bdg{gD2cuQ(~N&EA1}z zfgq`SgW`ebD}0zlm?yAbIK|@FtL!=%Hb9*T3qS=U2vL&hN16=io^k#aprb5_1e!=}zosLo= zyjqApM_0R=me};gA(j`ubR-GE@xqs6(U;nll-`?V`XO@MF&G%wHMx&%cR z>n=5kQ8OfxZc~@koG?>?RfwxXI+mN73BU<<%K!{I;kND}Y_zOlql5ODJ4CVg*JHH8U-*TQbo*Q)1cNA_?dTi@mE)*o?aFs@eqN&g7OO9YMdW+zTAAj z!a3mL+sBJT#6e{&P3#EJGzQ?RcSqnH_#(kW)3;yo;@tDMJM7RPTE$j|`-i}SH;-TL z@p^I1Mn0k#BEJFh42=2x_yV^_X&HK`GJU<{v&Hc@+?O9er2xuz8Xt9w4l|~cf3|+7yv!L=yze^k~NEZ;k`VM(i32Yp)Ig*-#>_{);JYk)x(4H zf8OAsB{sprwRy%IhLf1~`w2T{D<=t^!TkWjqC0p^8Y!_Vc_JU!nyCFOV@vxjU32@T z9V||^!V~t_EV%y7{y?f+cZS%3212`Nh|{Y(h=Q_P7cBd4X4QX5R`?ls^=Dz#AB7W< z7=z%BD1ZO0NpL|+F4U>_^1fF4sg0~bB`mZ5-FeJ$4YKs(8ueFQ&6D5#_(uJy>wfi@ zWtQa=nFDntJ=V48xTxC+m%Kp3L881H#Eh`iXTrHF@(0#HcyLyJJuK@~nLjy8;Pz0t zMM8~~k53|(<2K~$T1s}fSEy|AtH$uP(CO~69w7S2rL8IgaW;3C$LH^`knF*F2&pmp z@P&pMgiJ6_5DjwMLKnZBap4IcREK*DBa6qWe-6K~rQ4K{8Uw@JPv2GnH_K;ty z7!EN_aXCum4FvYFAoKvEmN>-j`EL=DVjk}voD77MPZ7dbih<-~s1+N(_yU`!;~?fx zNn}KgrsXTNu`q>@3Y*qC6HRJfNqIg$^Z+J~UQjXX2@RWigK$L87SJ4xb0(geZRRqR zMq1)Fg_K(%xDR;~7iw_kMxE$fslm;iOpmI)RdXc$>Ak38cxevtOEJ9AKm{EAsu5f< z8#>C!+)3F-U#fT_dz%+&GUGxWDE?!BSmP;4mv*}$rkzkpZG5gEp?_2~ajH)69@X%~ z7TuSW%R7?6f)`mzbs>X!|55kkLdxOdKh`PWZ{ep7?U)qFyOG^$^vvLT1>(nB!kjrK zQ|y08oKpxh2Q9?Jc!e@LDhYFEE!4DHl{U%i$BxV7gY!0UVk+^-SPuf`4qoN`(#g@u z8%x%|s-FnU;Ov5i9@g+rZ8mKV6gYOWT_k7|YsaQRNm=t~c-lld)i;xdho)lj(p)qY z!7h#zobJBI@}kU=6@0h*Yh7++g}vUvP7aXBq4Q{E;5ies)L4==)Ff?~PyTVi*%R`C z%T$rTPCo<`9|ip0Xk7e_jnVaYIjvukvP4nkf|cb&&uEKQ`K)^Uz`^G{j|bth6TYBI za^kweWPqC|#811vWyG?P+Y#jx*QAsUUh^BDpBJ|*TrVzj++5t?d6r3Twk~Cryzzj51$Lf8C^M2)=khygX-GfggX?i+e@Gfqz5bRv_YDdh{P{{3mwLKCu5X;A?>nNZ*X`%!?%5eaT42S#wfBO3L70p8 zdWwnp{)~05U%BJfJ-r!^t8UB{kI92KtpKr%a&KOc)Vszn%JjE<{u}s%ZH7n5dUNY$Q)=;C=gjm0Q zX4Fuq3^aWEn6~ zDlBe4xtw(CA=g4^SYp*2sS_LqZ<;CYk@# z7rE9|6=?S%O9E+{s!=my^Ex>>q>OIN{F$2=Tt`-#Z2;oATDB&pj_d17Q$qyH))60l z#|k)}g{TrqoEf#zo}BRn4zAHX)|m8Bf;Y(}NL61(0XmzWrLH;v?ls!VLbTq0YstCP zPM5Vwy?ZlRERd6Fot=zL6#kY)akZ(1#SMM!mX}Xr6KNly;uP3CM0l?=j7epEQP8@R z#X|k!KZ;Bb7b(@k5pVX!L*Hnh7(HJ$7kqL_#XB!FPf99PB4waHu^(mtR#OFN&KiV5 zE>P-Cf@6%mN4-PF;bDiXvJq8Pk3Jpj{ccB(4oI^8)A0ZMeD~9krhz?OgG^cuyX`D) zX+e^SBXk)KwsJo29v|ZzK>4Op5e2Ii=RqU0@~OO&qu&t9Ln3_fu!P*mI6XKztYW5g zkvOFq;m4{;DXyd_P!~}ENhLAsutl`Gz?#1NfH#%DWHX}t-3~?y&+2RC!CyFUfK7|S zxB4!vRJizNR|)MYzuAFE@G4%H<||@?>Pca+mfw#Lj07d5$Ia>mr$()O>}fwCTusOo z?+dN?MI)(r-=_Upa;yQ<3qz(y-BJ}6T^wKmAPHx@ao4AR)Cjzy968{`?ViZf7? z_S?VSyk360;2Y2M2uQ;NHusEVh8n;QvPbAYV9~Q3S{3+N?$wZ@jf#Kaik#Z6H-t16|E2^McxNEvlSl$RHD(ZYhg+o3h2xdukX z93MNI%x{T1za?P(4!;pqxHd9XPv=_HiGS(h{?XnUt_ta6u$7B}A<0$467%mmW$J&= z(ko}_Kbm_+v{dZr0$-4>OIJj$aQ1Fnz-CqX<+^o6>Qa~dLdVW4?9G}2(n`{wU_Ip@ zWl@DoE4AB}zqQAfKTT&XziU5@A95*F|2L_DmJ3ORWK;0!C}CXcE?+X`SIdzkpC=I` zL#~`675+Ce_^Zj_50gSJrXmIYH!1k5rQi>rD-k2ZBRT`=muImqBp{0pR5wzb6O>ufSs$WQrNUGDO3@A9xD zQS6o1P(^=~Z!*<={Q3992~SPwiL2Oltm>5)Gxk%y`9g|Ut~)#0vwD7ZATgcI~w zZE#eQYfU`B`|W~(0&E(2of8vHk4nyKek@tux-#Q1jFmj|>&z)trG&wNtP(v@3o)Nh ze_bAY<}KYbovR0|`J-iI#qu1eC>IHL8!d{(tLs_JJB+1BEob6MsN#8F&5PiX0WNSz zuZ&{ww>@!RAs!_yfAfY|Dv>BnyqmJfU_o6!*775z_hlZQ_h*hTbX<-G&&Bide9xBwx2%rL zSi6^;6nYsaRo6pxS~AF#^XG|CB*RYRx^1Wva&X7ODO6?;^+bIyge;KP+bv1S4b)^b?P7pJa8yRNi>p+D_-=~Nrwde(+Eof<-OyO!W6wWE!o?QJt!?Q%1k z>vso+-uVus+5<;|cEb*heX%3k5au71*h ziIdR1^XemIY6cP$GZ4U12;!Dn0`ljzG_E3 z3ij#OBRo3dCdzCl7WwULx&N+QHmWOpX9|`)^#|JxrW|DruyE*0*r;OV;U{hTAzz>W zSmNE7a*IR$K0iD7B~fx4zdM8eME55z%xetM{ng-ibEAj7*ZIS+4(vmsU?Ipw?Ac(Jq)VHN_X@a0^Z2sTQsZ!x!ZRmjbK0GVi^YJ3Y=*!OF@?#ykBM5 z+pej_VzF2pJv?o=WLjc=YX@WiRF}(&jaMSb7#@jrV1AF9tJX1{3|&sT4rbhOFye6k z8BGF1LBZsbq8`1eYeR(sTjFt^on99-F6Qp{*B4LnX|JCz@c*8m#_@}Yj6fr!z)RyX z%tE5`p%d(;>gWqrZO};+@lpxS$nB$QqeFRPrKN54@ON7bE8+wzW1WFi9}b~T+NdV( z6X15TbH9>BY0*U}I{{JsmfM_7sKC!yHa2X&@=MR%OT66WJVwtrFqQt+OXub{hDViJ z=uvmp&ein6EkT+JuAA3R~XR0a)jCs|6fhIcYpfTOo3VVB8a|;(cC~$X@qAUfKoR6?)43|d`4LSLu;+;r zua*^wbBn}`+N--$yBBuM_+kfHqrojaQSV}e%$dq{S3OOu_73&R?ilSn%~vWL zhj*iyWM1v^jeU*$?)iN>I{J8y2s8}sCoeKdIXa4iykA#O*8MuIIFxIXow|9kgG9mg zd)Vfor_>xG=jAOThoG+4Wxlg4vUF|3@(sn>e0zDm#ujiflT7h&@!{n6)OAvF_nnm7 zM_EJezGXn;Tn43|7zYXzSCfX;T*zR(@CFQi5-6j183*p4`HZv}RuVMO_o*W-*vh2~ zhLUI?J&QV!#H{NnX~Ws3aFRdHYvNFuon8qXjZHHPt1TBnS*%LR1`lR z$9Yn{e9JIcAxZ1&zgSq`qzmn7g)aphoc%F_9pXx2JucENhilgIOPJ*Z=8y_Z)qs2 zD0Hiz4;Ct0;ZlVT-9BYw#;D-BD`wnB0{&_$gp7>0lMP;hIr<&8kd0_|Iw7|TjaIT0Z=^=C^lcc!&iKKK3wbyUu-{ikstl=Axd(Rma(Bs*+(Tb+*r6Xqr`aS<>l!K10yDmwN*|SbXHt-Ym!BX9d$x- zkVJg*xk#5|UrU4vsS8GdVS^opl!Qo$dcrG|6&hh#Q=&6w+RjsTTgdsYQLJujr9u%- z4*PZ2tHP{iE?+6fcttO|su>A^>u`Sx=}@$r5bNy>z_5of;wJ*~K5_fq755?jYEB3}Wg^ z_k*M9uGmABk2GAzz=7mCcNc;=St{ZH`sORZ!_}rXOZ=`~xy%Tbm^;_18fbmpI3rLZQomIGwTjdum-xom)*uUNk7{1yn#g3&F>tAU^ z#_b`Z?#sFZI)_<3$Gi#fIBR>JcDx7Nsa=hV`}$@I2A)klr|&igaP!7ecYq> zBRji(QqG=AUs3cf&@Gl@Z$&knXyp@_VoFCO?uPe56`X})4da8cxn*VGDWF2b!&F@+omsL7$ls{Wu6yUf~^s%GzW{gemW9b zUmXc;p&Eo?Q5l$cK6eNy-bw+%EC?&708x+1I1^yIf$wkRGrO%Q;&+@i0HQ?8QhvLP zJDbbb!+x+bw9-ibuRWQ`3xP)nn!dj{-9rozEC?(=9lTrY{?11wmxt${aDpasfPl+q zOWtfI?)`VjUH&(4jR4T0NpWIyfS%ytv8;S_h#gH)LU&F)se~Aaq?da>Mjp`t;~n4K z!{6m=y~ri>?x03x&}o0G!$8!DX`Ya-j2Y@I>6{`{h%%n!qOIQqjqre}ekkNAVa%CA zw6k3Go~9g&^Z8g~SCo<1rfj5G&_)K}ksM1L z>7(C8j%b*K-tKga1)2Fvky6NcAqp`T;b8aeOll_uiJdS=(^v{R_b~dG7z?@&o8Uvm z)CAEnD;_l}`Ofr-X0KvKXOtmqP)E>^r(iKd%nW!?LvJ8CFE5lqbisr0f)3(M$eZQi zKHk=i=`4dROc-n1fH^}|IO3?KmAfs^ts2K_IPTY|jhcdT0N{#JU2x0jWvMMA-QR6X z_<&EiEs3!%G9$<0iLNNtR$WP-WJl6mS5mj=O7cWk25s1V_X!b=@mJlKwT21|p-Ls_ zgGoOWyCxsUu9h^qW+%+0>7jL_XMLO}n`bmyQ2rFLU6N@@F@>0gvuoEn9kK1ASVh#3 znmYDMC3S3X6_!v!qbxmdnBd$n8{wf%7V&H;b<^tZf_I0;wDk$N8AZ=jjnr6ECChP~ zvjq7P9A)Wud-;+d$#CXObHG^GN!iKArw3a`Y)=ki zJuyngU?)FomXfG0lShiai!zF@i_V7s?ovB3EWSSCvPDLL+Xa%|*T8-nqm7y*@_0+qDPjwU z55qW4-ptkYd<#FV@7B+J;CiSkn5K}TJsB-x#aC;sAYk=YiGeqGO?a?8!Ng*N(Vy|a zP+XEDh6201;U$l^JgFU>xe$jPv0cQ4wa0@u8vL)&VJXE@ns3xDUfoQ z{xzjreHsJat!l9+i`4@y6RW9=Km_PKkVjxJgzVxwuExMtkt4MW9cfnVdz?Zu0mzFu zpgxXx!^7hByZ1gGdE;wwY8w(FlXu)NP(vbTG!lid@Zcqr^Ur3U`R?F|L4h#&g7^@Yq^9$_a4s z4Fdo>K@@)}kMacqjze_DZ&2KiBea5go#o@#S!}@?I;WhR=^_gptHyT5$bx2(7|=Z- zAuj9Me2JCF(4KMZ7s*Obe7xW#UC)hK`@IB<@US%K$a~}5n^N_Fj8E#@9l7wf!1D41 zk$61g=ws|39T&T(0cZ<9tPt$Y;jW4FWsXr{c96JN<|xu>j);@`_~5)xCZJCLN2~?M zT7N|NDJvHou+t@D=mJfk|#~Rv5lVYE1^V=+a1>v_GYU)U&2JV*XBqvtF-Sd70!#fd$~GO6gPCIslnNu`*H>1^EWmNxnD3!T~D=D z%0yZ8In6&zcB5Mb;#OU@5?>xM#`XEvq1<9K3nVaQ+|w!$3}kdAlk-DO=Ltwac!y{Zuec$NayoaF&{mg4TEw>Ogq;8}{z!!5q7aV9b?e5X#+|2H+y=D$x{ zQrJpwrb7};z(#Acu68{B8E=H@RY|i7f%bf958fd${q7Lg;_Jg5o?kPHeZ8_~Xmu;~XW8m|SxLpBcYTFp?J%kmU;k^zrSw#J z0HFVZ4_X%P=$Pp zY3L2&OSz9!92YA>@HwwEpY)F>L_5I;qV4!@H{aGbRuKhkxw#EZjcu`IfN?`qLC_ z)uDDs;l~PT+SI@|><0T5-C@_18|>R~gMH(@zej$?Bs?4%e7ZtW_izvw{(zS1JXe03 zEhDn%JC$KjFet|hzRlXIEwJ+E$isJ&V|_oxCai#M!kk0ML$nf452y9{M(fL3_Ar=!i#8Ps#X2(}e4N{X69@us;FeCeDN1blF!4GL_H;W2_pr zIbcf^bA7MxbE~@v*MYpaW`G*s(LjvQeb;;iONh%o4HtI6fcsuCPct?Nshnm$k@i)t zIH${nR`BY2pLb%SYe2YX2zx}-*)zZeUOOKU4&0wZ5OvMNpQ)vUlhxH~{rG&M8z<$^ z?W^YHBS$n%5FoWDy+E6|B-wZy1`)xGpz5pjt*{?g8dTLz+Dj%0r)b36(6#oZ(8?&4 zofy95DGZ6>J%eN+PkDzL_H2J#Jgu{8PPjxO-T<3xEy9HD$9W3d!_yisSZ%RGm-w{$ zBi5d=m+%#7(<%_d2`9V~H!yA2q)ufeuKs{!M9ZxT3LBq!>mO^b-ZfJkKhvYcKW3|D z-d0+Q6F%x(<&%(8Yeo7Us>k-)P^@Pl60(L8c{WH>UT6x1FshJgs1PFwMtm(d zw!y@r*~VnqAZ9}H2O)yBl*o@GhMBYyFk^bP+(V8fmc!n+hc#Z67+6kPh%nk$xdx`F zxd@lgUEMN*J=Kmfjsb!Cn0OypUWc(DD1y*i!Gw}#ROB_6JhXA=NwnI6c+?Y)ysVa+ zJFHe+^)(mT92w2=`gTE<@Cwh_V4!z~xBIIU&fj4Qp`f2dC>AcINc#HNbFYmupm42W z7>^w-s|n8#`Vx(Dk!c}^?R<;Vxv~1;w4X|g>FJgCXBQ2cNXT4=Cxb(Cw2TGA^+CxU}!uCLwDq~Y=H=r|? za*2CNnwJ6c+lBAE2#urMr#6`&tU}-1rD0xh-f(RBFL*MEqhN0Dk(y|mGX;fnreO8P zG_iZ5Z?n8*8f-rhx0R<^x8BU}<{jk>H82j7Wo(Q-fAo3W^w_JQo%a)~b%Dyv+)nX8RYsSW zO{~GaOoo>DvZ-&zO&H|+E|tw5ajqDtsc=S-aq=XrOsow7Lv0j;pbK^Bjh)gA3w^4P z(s?KZE1T`0ideak%m$Jp427vFRDW~K#3g&V9}>!;=koZFsR|u-)Zg@&lq);Q?wmg# z?btuSde!mKa1=Ju%$IpcWt->8?+9D5WWWXubI|hd1V%at@Y#ox#qK_i_u5YkP0>kx zA#N{{G;HlmDBDCmQ8VMwz%9j;K|Ia&qx520tQ$S8+h%3dk}Qu8SgGzCK81zTSl5%O z0$4<(A>%59BgR==Azs}v<%MZGjxZ6asp>rQ>guka;4GQ~OM-Ev#O0Rs?n~2Y1|#(Y z5ne8i!-v|#*=lNoIBH=*w1`yl5LKj#O+%DaqOMl*Y$wJPclNS!q;W}7BG0%<2p5Ue z(pWZIYWLX^!*Etgr!14AJ7Svt`VxbY?Wt5OVK$hs%Tkmk^$s@aHzEuHldTDbu0Ii2 zo(#SIA3C`!iB0GlA=cU__Aj*}2R*OwxKE#dYeAB-5t>L75;ZWN04nF}tSuEn-j+Nu zb%4T>SD+_uOCJUzr*zWJir}%&E(DyR#%bR^S90>Q)>+bxt&?6ie-sd#ou zq0z#`yyBB4UdgNtv%rm@hGG$P6))}LMFm3_Bye`hq7b5K1eV+O$dG4k*3a$qq|l!J z*Oz7q6f?Z3bw&&(c#{cEOe5^qt2bE{TN+xBw_PXBO1BcRH<#0t=@}7`dw+#h=>D}> zF?R!^fV4+D%Ve;2B-CKeNH%KCNPNI5!sx$x z`Hl}e?ZB>1u}%tY?XS!rAC@2Y-{XMz@~2+YAC^bB;Cg!csTJ#ksvdtcoUbz(_^=TF zQlA{tNz%SUQJCv%Q_K(Ua}~VpEVEVLz;bY|gzs({v_zeXvC8PniR0^6J3lR7|FfNT zk<6Z#JFkBFWoZsWI=CN(EO1@;^$T%@7>44G4xb7j0W%7cV~|Pjm}W@gm?6Bpi<_=+c)XZG>4{$L7fo*?JqPs*|UvZ2SYmkG}<4?Q4pW#he z?;i%Yf;zVsQr1BA*+{!~(AP(m=7hOaxxk66R7@^G>h{ro1n!^i4lNH*eS0&Zqx$ChbDvZin3WEqHU)&deCxUXV2~&L7@yHkqLBcUhi)uJ8LoD&^p| z5JC)LOzi$u!0#9B$UPac{RT5(4+^_1zA5?85#)9IR05cFQvT)`G3jj!HOq#nxRZk~ zq!~H-B(l1FxI`$3`fN~b*heDC78-jG{rozWbS|$K;z#j(i0kry7-*fbw)r?NQ==SN z0Wv37ZW_GSK;QkKlHQpYdl+-dG~=IbnjvVIXb6@}Aq1aSPa}smYVo1}5aQeQ+0P4v&e?Yzsw1!n7mtr_J*zOPd9 zShuiH9L$upy>+P#LBTMfInWF&4bODg>N8M>^s$0FA@dqgx4KQCr($Q0GumH9jXs6d zQjSAO#rt5QNHoUr$74PlE%RnSBI07|KrT=A_cTtNy5Fhm_SxVtj zV;IRxnyI{#qjMY~;Wt$6KAEDUxRSlWn+cKN+zN$mTWVt(p%z51HjmLy)i3mu|Kh^xkZXmL4Wj)AkF4|i*fqf+ct zYuTDFgVY9ZTrTk-O$zoxW#1zDTWXY(#!_J7)}AU z)--0@vSYsSDC6~I`#5ZjzDX%xXjBTaF#iwk=ki%j2D~ul;Iv{;nEa#V;y~ABr@W(B z1|Y~Sr15tKJuooisVnSq^87~IjcDZu8N-uwszcJdi$AbODYZY+R?pvX$=i)8S{QR* zyyfECqVgdQ)1)L)K644ZiBW6vrWM46EOzGW6dWm68u7&YUcxQbU zQ9`WN{qlrf*U(Z!G-6u9N}X8IkhdnEShXfc$p2JrY@I#)ubl+QSX^v!Q@!P)*3{5S z&x{$D33?TP!g&&-YPOv$lcoCaHf?X#Po~%Cg8k&B<3j^wWpl9FmI=;i_MWNBlC$re z^>F^U#aEP1-y_|^<~|g9E;c5nF^$|fm1!S8xsrPH4DXFg-kp_T+vopk`x))18z z7CAJ4JIhgZA>uUE#a%yfZ$*cl1xw1N*y<_O$Kpqmp*~&Pz%W*9Fl4abI52jXK?B7- z*1=_-R$nog_wQJ`-()R)WZla31GRso@(F)}e;+u1#H44VQd4i8`$thT#Z##w|Z#sryyVWCOX8f?2 zcyb~~;Uzw}UkY}V?>6AZ0wi58bYaB_tDMjv1HSB=F`#hKqI}BtR!AIE+o?Ey!XPW1 z-7ful0@4<;*=MjIuHu@{=7BO;LB5yLv-T`8sq)B)79AJUpDub#*UI6i;U$@xX;hz= z+h>N9&OibHYHDXQAxh+Uxpbb;4l`40G7XrA1N>t$2~#lr-dxkP*eyLDw?x5{pCyJ!IT;Pmu-ak4yJoE+?ain2U0O7zqq7l*12`L2a% z8B}z%DAf_IQ1n6X{)b)1vxkqXzJUdF@8I|Yiok%N5~BrYV9kLf&!AJA=H!8hO?VSd zbTLxHGvkrN?ly+RcHh90{Nh%i*&P8-;($IJ%JVF4i7b%5^R&rVvp(tRTsYmz5NgKM zf!!1GLM7fYBu~uG#_@v^k!72`NdKYgWa2##^Zr_>ND1~o%SV=W(WA-P=cFiGeGtbA zvGkLqQUYH0dU`fzue$wa+K3zQq)ZQSVG4uz|I=FBYNxysrO52fX@jH?QiD@v-0nY1 z=3X5Vtp#~+L&gQz9=&WL4onE%&QCOD_W^pDU>~QEu2=8uCG8Fm>L_>2RMAv6@2F)` z8XnYyD3X#KDx4=sGWT0XEUF-*HXV+#g)->U(3JfYw+<$Gkd#ZCss9BLaBluL5vRl` zaDk9SNrfsrNK!bLF)9V_R&llsSUeb|kdhoG6;;lqBoW8VhVT$h(xZKQ9ULP8h_zg9TyiTpO5lte_2@Dll2Ph+P%% zIH>>>xp?M$a4v$e;*Z}gO7E9Z5Q*8HaDcg(puj_}q{YJwCCLpofou)&v+9?fV;t7< z=;C*PAm!-t^6B9Zb2OF0dEQGRu!nh#BXHIlMM^3=AGFfkT+k9Q$|0=tYV{Om4=p=o z*g{Qb7B;#4*a%tsZ<F8pIFN~46>k2!;hW0^CU7?z!ZlMCeYYH%x=m4Sk0 zvcBkFluc_UwC{p@kz+%Fe~U;`Qa@H|n4e44355=sD=Ds;dP_|RMPJM{0au31S0o)P z%)Wc+3rK3(x?0*{I@`;_#ASm!FOo3GG17$2Ya;{9w|q0-w(qsH64;ZS)fm8Z2JS9n z_aqqTw$ZPBAmx^>;BxR}P`VNyZbPpMXGtQf8lij}EfGg}mX*-Nu;})Nv@0LTp=DL@ zTxca``lrs3Imf@C2-q8sq?a73a_GC)Q`YNHIWUun^OUPN5 zBLsS9HuK=*pfiLir*tcwn#~^?b=FD^L)x+$eb!7GL!7L7?Iso1QcItSA$X|T#*ub@ zj%wa7Xsx(0go|{}J7|5SGuk)KG>pAOkdtP$-fS2RNs5y9rCI%RYI1ksuYpwUrdFwh zym!)-U*Q?Y??OavhtCnIutLp8ppD#)YL^9vx`G|kUQ6+$0}{fd*AiORYk@G%+}Thn zA)RET?n5v)Vf;oB4!-0|06O18 z_)vf78;(fIxYkQl_pYrMT&y+{T^JE+Ch+nbeSP!o!i{+*U1Km$QL;5RmaBg4&%y}1 zm1Zg7xF!_$mDV!wUs@GLu&7K5;%jCw!W(6<4X$hpg?M8F`@eP=gerxTJjtDzpx`@W zQI(S8i3z}-nE-HR0>GIG0B0sZRcB=_aPx?vf+IuXGQu+2OW?#_6(8+YD1*HOAMHgr zu@~XQUW5~S5uVvAxXk5Ev>*}2BC{R@EGPveWPDY_yfOZ9@IX%s_8W-ah>`3p>4-r^ zN1G}O*P1Fz+Em#>oGGj1iLxM0l?834EbDcqtk7o4R^mk2Le7;Xai%P3gR-0Fx1*K< zMz^}cp7+~PIKe1&+!w_1XUs;RV1t5re=eXaFtJchfv(+WV}ah-)={xcof^H*^+7#B zw1}mQ+A$JfuHu_$uqG(>1BEcrb!_^TKhHPIHdGx1{59m(<9c&AyWVV^eO6c3n+t1U zd_>?i4Zmy0k3pSZT=Kqvt0nnRl>L#M_V_1OQ*ds(-&}zf>+6+-=(HIt7Hdh+U=YDV z(eJKZFM412;aH}->#H5h@^rPc{OMJ+9?^gPl%b(>Amh-N6AZc&3aUR{Io0tK zig?w2(g8MiQ8cyqf5IbPS2f5DKLjTDkAc1P!;hthljoc{oC2%aDTBc zH}TI;cYh7nGe@#ntQd*rQ}O-5@hKdfa4a z3HH$shnt-Thuh^ZN07CVhv#prr$f`sM-~_C-H~(EZ740rF5j}5d1$s*OHsx4I4-fU zq^g{rzdJiw_}Z;WD{a)YQjD2D;OX3|9{};kM(1;=ULKv7d_# zFngDR`F&HKQ{qu16Lry6cS7!lNQlN3A5Y%BUG5&AEdKrOXx~TS2&67C5K?JwslF#z zW>TypDeL*!hyC3%A6d~;qMVvyPzHp>;n}2chL{Mf=_WFhBC5QhkOhu%_C753KAxWY z$G)YQjS{qKcoelb+{+DC2|-YW6FFSbvCbt5fuHy&g=iFVd~$HOH{6pKIh_xe@^RtL0Um!YT{9(P_jaOCAYM@bUMZ0Uja_#cr`VYwL)6}CoMoSp9N9^=pj&&-}K{(X)n>BqvuoW&SDXUK9n zJ^qMs(HX2JR#GBW2@`1tODu_C^NEL=nmvq2rQp!7?l0Ue*y&z4u#lq_!&A%Yg*k&$+NXtMYUbBF>xp;{33J(n z8n*3^hFqkC{>j)m6QXS*u0(%&dcx_p`U6jI`hj5EKegnj;xA%If&vewD|irJ&`kE} z+3wl7|2l3N6j~yzPzHe~pP=igl)zDpfKkE`KG_%lo;zKq50zd>6L%}rLAQcW9j()6 z8E$bgpO{XFM(O-`u#KKo7=n!p8jTDK9~{0%+;DShLn^%zf|v>?a?Tfcjdj{Z zAYo+~tXFB1`l{qiN0B+Lv6`~fi!*niW!*x;5-TlXNoy_gjn!5;MuSTkX9jocIJM?v zu|%rk8`dNHi48~3%qaOF6Fo9=N1#r5#qRjGKs`{Gxv81NLa=Wy`}1J zhqy$T-o3_Il>dh6JUxDgw=|Oei({9P2HRG`Xx-D};aj~ZQ7DNlNs)=ldO~UiJP`vl z6N1k>|1Ht<5lSLR@TsWGbG{sXL`=L%htP>bUY!)P!;QZ$nE8G>@?R>VyP*Y%hB64m zjX#W2Cy6b1r%y>yTqBIq4uAcGac0}><`k=XooDF140+Ol8IGaR8QQcP^E}%WC>>qa znT}W*{?C z_LUArSBMMd`Uyk3f4IMD-?`$DhREBtFMZn2`Il1d$D>K)zZ`|Yys_ans3*9}x2Lgs z8iv;N6Kq+}S&j-Tj+OZJwF$SXl6W*ZN%3@>^ep5;n8=wM>_es_)_S}+#0zoQ(LpE|V`u|&C%9Rp;BZ;23fyvK-~pe9 z-|ldR12JR&2HX8Z%DB1OdAaW&y(Jr2{^-wLA5|Dxt=q#14Sjq;Lx!b#F!oCNdiT8U zCks4^=GT`bN(Rc01CBRCk=7S)cCIcS5u>S{&8za<8d8yjzGC(CeQi2nLwJ6%D?^1K zE3h^6q8`WWeRSc$%+>Zj1-*ZeN*FD(`S$SV&Be3%gfA&J&zL#4!_KuF=pJ#RXO-jt z%Ke0d+S|F zXNW5Rll(FZMGBvHx+(Bl{*!g zxsh~MeEQ{3EOFM|^WSoU80vWU;ABER`IHl|Bry=onnp7pmoqY7BR=&vA#Sx$;g}hs zkSD%J>JR*{u*`i>8MfvBH+_+Ua(}Fp(I*?_2YxAhdCL^ia5u+Q+ZG39>g_IEIi_x0 z7`9n3b!VoVx^yGX-MX_RuHA^iy@wG^`~Be93T9qiDSwR~Sx7T)Z{);KjW&}ycXCZS z>t!o-n&*#wTSW|x-C^g|2F|@MWw3jQ^jyORq4n$gcS zMdsv&l6ttMd-pb!%(t~kah>^a@gLiEL^CK>t}bqAm}oHS zv$?owOC=@^;kHInaH@WJ@pb1f`;DTNWl30f4;AB&EEQ=rBFJV`+OGT*ZU*bYMdBcs z-_jS)&rkTMZVOH=0i(8bqlT1r>8_+0+;;tp{o<;o+0bqLAY*qJ%cv67Eat$}j~7>e zh>2mhKu58uc2e1uGS>0va6ld}`lYO*nq+(Nf`@04Y82w*&o)AlP4@UR%99eYr4h>T zc*zxZ#M=wFu3pF5l9k$|7GLhS>RZUE#*LQitUC`$mUQ8r;S${B~?5VwZyS(T<4mIYt%$!qa|X$;EVu{PLE|>92U|jun-1mC1fxI zbk~T(a#7M&&^w^p`ExYvf4GyoSL_ab4S+;}_|7ZQk=hnu28p$v0OD`rtLcVHvhnLw8prT`ckiL&?$%I;-JXk-lR~~o z1Q~CiGA#xr;taD5x91}? zof_KQfANbN!>AqUzBVH@)a@@)WXz*pHWy!Ahw)4O#PGT#&EgjgunYfchh12m1*VgD z5v(*He^%mG=~eY(%+8MDaEUvWj%te-X|{kzpAPnZALjxcHi9}hNci{p?x%^AMv9Ue zVUWg&S-U*wdJj>-k)u>c93_9=JwC<(O1EyJLJP$^k0%Xz)igGrlcV1dC0L%R;K|hm z;{}`^936VWQ!bOolxN89SoL(KlGKF|g%;Szk>_J@{9<*{Zo~sfcJ*FloyJdMrfsy?lykxxuiDXXl<3kTzA|f6) zs~22A8+E|3zNh~!bNx10{phO`B8TBETuyAMqMLt*xG>N4_NTstUDr@)f|diW)*=)~ zT&6f7%m67FAq?;2MTm}!GxSsBMBt8GDvOCOuq*bH`E&X3_>6Nyy>j<{;^(SMaDbhO zeG_WrqyqkWafj`MrlZ4^=uYw{Ox!ZFy-nu{yK!3c@TI( zJ4)yAHXk6YhkdP60Cd4D$Yr}E{>Hi)gMzP|a|9em%A0oysfVBqJwTy`*B~_?UcTe; zNq;T0(ndizsP}-bz&?jT=3qPu9MdwWPy(0tR%8O9bxW7AWy?91cVBPXG7^;-*-*XP z<*@#LEQZs*=y!(r&&)0sl5V{NxrJ^}vA6DI#_6Ud#m=1elx{0cq?9BLyX_k8d31A9leR`U zWyW)swNtT0v|ko11Apsg_R-!M;&x!_hbfv*(ciXW3ja|I;u0w<4!J@KqqAVi@T|DsoDd8HG-Ex6niEnOaj_CzEoc{|`L`c(1+k;8 z0K-5ls2^hinfP4#Ymf~N7cZo+jgop?FR~!Yp?l|9L9oJJ@(E7ZUffUW_=Eef9LvzMMwt?d^I>#l4S*`|Ff!>}_Sr zNIlI_sk0nOO>#sJQfpCz;MimL$XkLYv82zN3#R9nVy*5i&9Q=;Ndz~j|}01$AjsG zHy7($Y=*i`ODVJExxMIdry{XGa~LT@KPbTsnDOAIB{MouxqqDLOY$>rV%r;AHq%&1 zMJkPyj0;U0(ph8Pzf9sEjt@>$Is`Zlw64{?j5PhV3R?~;q#ZK8Gc!X7L)tI9d~~nQ zPJ@SB=U~m3%iCGyi(}X)8>@2L zJSOp$yiLOsf+1olNS--nSxcB1ppaQr?o>i8L7_i~(v?_OvhU_?Xeq&zmgGxsDVY)K zZfr7eHBvfyb*dY}8k~${jTW?TI4d=2&yMbgwMZJrwv59Ma2ZE3$_;FBs2dpkco)gG zQ*yL?G;zdars(L|kmDGJDWjv>qek#$PwUSOMAA5zwUpjt8@$zB*)X@c3h6&E zBw410BypP|N#ANnGRzH0>dcTr%MD4=XvjVnh;P`T5)3gkJ43N+96pV&8@*`p>DQx^ zbe6<6Ki1lBXUqL}CGv;gw>eXi(@P=t1el4s;GczijW{Caqf+^~@YVWmg=7_~V&?}- zzFv$~4}+Ya9emPD<&S?(VBYaDA6*b56a1&Aho_vxL2O2Od_ke`V!`U7eJmG&>wD7D zytpXkLKBxHb$E&TVI+r~mn+tUeVGHv%82b(^@*F83-J@7A)cQe{ufsNNx%v{!c}BN zCn+zwQu3mA+E8?oW<|9A0=3{PI1edn5Tgl&`0(Ua#wRgszo-sG(fWKFC?xe4w=Y{Lsr*tH1hBEs>Xj6gh<3H^8#0Bcg>)xF zLD5X~1N8O*4r*GDq21iRZ1CDdPQ*LXSbfN8>babhB7eB@!-S8mekMbjf0B+}D5m|X z(xgq5CUK@TX@5s)^39YcZBW{Dzpy*qVW?n6sK5%6u_Ptc1*w6Z#L?e~rmUfL;Hdkd z1dn!KdgmSPi>d~+r8s;43mvCjMmZ;d*4cpnd^kAybbNHwdg=x&->skhrb;KdeWecD z?V65yAsp1cyy2Oy<=)9B>EPjc?X*NfMs)I&&ea2s4?iH!k|SxYMUyE7x|hHMZIT(2 zVVSvgY$4Sa9hO2{ZvIG=3FpF$(1{v^?d4UI!c311YCCrW!(|e6*m;_;*M{GO2{q`f z)LPXO9Alc|dF(}0P9NmIw z*kmZ#2*u5S4561S$wi4{v2a5jVd|2GQxtIhUdfD|rxf^>2e3kBLVRvpktRvzjAguy zmRs&}&TY@PQjVfF4x&LZfwGzu-dwOup%U)inH#~TGdC!T*^WDVc-hwxm4It%2k*|$ zu!;Tf(vQhR8ivV!X(T0vZ~ZBc`P!fInDF+2XRu>af3#&I!7pFANqZ0~bOgaSuN7n* z_WXXJ$Es;r57pBssG`@~loEQPlpK3TxTC@K^*}T!L7SE$D$@ue3THffTLkg|M) zFl2=FvqTWlD1+FL9P2#5QnIw`EsvSjFfUtzlV9V>)x zVo;|k!$S#8C_8SmP}Xoga}|hz{2&tj8Z{C9Z}mj=8yIvnJ6h@2Lfi z+I%`X`go2o+k8`Jec>k2%TB{}$FHlWv6*y^;_OLJ)Oj{9;{ac%cEwFBUvPU*#Np=Y z42#Qw|Le7zeb;i>HC>x#Vv^0bm*;C7MRTT?PZnImKly!&L#Is9qf@3h>oQEy?+s~i zd_$w(4sIRji3b^u;Mj%|4QEKH-v;_DTN$hGpP$;vCaEk*+(_BjHFBgjcQR6gn`pm1 z>pJk~iupUKCRO<85FK%r6IU?C$-WTt%49W4ve6q!l5K&hO&mvR6LRpB>sAq!A(aq6 z^z`L4X^s!KezGRT%)Bb~CtRPvjh%LdqMLT?jYP1H+Wl@#NWi5&zeJ&$!eO0hQOL!f zM%&=0EN>$F&ap78um7UavaYRgJgx9Oj!S@lmu;N36hV3&An_ZyH9Po?pwXn|O61|u z{$gBjD8a_YiKqsj<;2k0sKc-PVO_C#p@xbs=%AOxV&iz0@9%?UfP%D@0O-!36`)G-Ku9Ic5pHB&W)_RA#jQhd|i;o#bkF}v(kqe__B+|o0X zH~Q#_MI~Pn-z^R-IoZDy+AN*8UFLCP*UxOzp1%`9uTKIR#*fNEmWi??m41KhFsk_M zLriG#L#%?>e0FQ2;-fg?NE;1KkbH}sEaY7%c8d9Oh+$yigG^0aCp$B8nAKE~i4Uth z`qV71Ld)INB`3@1u>(u`NmW&>xn<7nCB@Z=Dq-+ZO*ZKpYL)~=}Z1!r2%LY%pgk+*8 zs%}lbW7F?J=UhRcgueX&gJc-mLlh%d5S9q@>*t7pZG%1YEev?l$lfy;ONNaod1Ps> z@Q);P3!2k9V@7(QWJ@-B;N%*Qb@|0DS75ZZ@w0E>fUo$|6q!1IJ>rhX8oi*q>k&AI zZ|k1d+#w%do*r@T04m^6M0DlmR%jXUzNcG1kaYP%-{wqgTEp_GOTV@1n7pj^O=?9s z=Ji3k)Y_Kx+v|%G+~JmBe$tCIx8z~Z*ChhR38XiY4mRfCbC4nFR|r}4jG&^48k~zw z>On|7`k4_-%I(9$A7R8%%_e;oIwF0dEOQwp=I#U<$C&J6PBWDISPWO|B7qonb7x2O zyiUH5R3_`Lt|mWTAS7yHI_1edjI^0=kfzp?7L?Z=ndZ(z>dZ4p%e~_4SL9WntTL0@xrscT7_lp&p?ba z){i#e^F*2Ll_D95ubLZ}sU)j~lWZ#>kOlSZ8r8(*Dx9 zHrjChMJ9x&6%RjTdrU%>{%ArSKCNUcXFS8AFssLPVH}f7Oj38QRjN#;#h4$h7$2$6h@Dbde43dWj^i>ihcS4s>iT_LITamG|BaYcmq?2rR#$+}sG zbw0d$#vSCLMsycBSqNeB=3T=ws!(;0d7NI97gWvLs^XRTiIP&P-e86^g(JtX17=J! zOU{8*g48(^*o5g0T9`c|A^`#=p!9z7tnkp?w=fj^BtRhJFk9^82`NhyXE$umP-$GJ zEjPrZcXeehgj;Ns-AYk#6YbhB*f}s&HlJoGj}PiJK-cq`7~1-n~J;krCdlZsIy0#U(uv;b}i3#92>5 zVz#W$j>+o;U|7!Y-PiR?IA7RFV-4AjhM_lc#GxM=sLQw`zj=9l#8EG--LyR_R}jur z@G;+BrIvcFAkui|^86GwG(66EvrLSA%_Vynbxk2Ilo~v}cSpT0uq{?2{oDL4o{XH4 z97fMb4qK5RPc{ibk#@~9ILvmG3-Yj$r>O+ab*+iEiyS-1?{8=wRRmTW2EM*1SW2=GQiU@%$Wy( zI?Qy8ZFu#^=B2$XIFdsU!oZM45*}D$Aj7~gSFglTd{gVnCqzWWH`_%gF&Be~>(v`E z!q!r*gzLve6}~jMa>(`mN-q6PiUq2>syrl~8>|##XDXRVC+57_;wS6P^3T=9A2z;- z*NS7`2D6&>iRsDrNf1rX@i)u{mhIIY0#y499)G9;rZ{LU^VU!r8H$>lcWWb*R?6qf zclaFGpNJ&TCQ@Ec-Uh|2O?f662}`@7o~8dYTvYZv9Kol>An^fxBxa85=SflPE#Qac z4&+Qq(wU}t{gqY9=Gz6%oi6wBNTRMn*yM)zguAb1j(mZa-WZXRLky0tRnuMUtQB4y zo_}7P?4B+52U3Vn*pm1VwS<3N974t?IWuR)931cN?<1zoX$me6+hbxBvSy&?#<;nc zP_65JQS5@yudCFw3d+Gz@Cz0>aYN>UD{SKl7iS1XKQw^#)Xg(DrG z9vI3V`*Mqt$uTkM^A%wkxj$2<%aZUS@5eC062Mh~_ zE4;4TLo9(&f!1{cxqG>l*-A`KJYt*wK8@JRrN>Yg+7{j&#Q4jN6xu?=eXG)ji7lW0 z8G_Xj#>hk)VAI`0$o@0Dhf&QYRJP7B>rVQ7>|0!?;P&@ocN8|Z>6WCl)Pw(9?4Kb( z?x07ZPcl5%eLJK0Sf(w%!}Cw=f_ekJ(K?(2z-~l|m$>`x)2MQzOjJ8v{QDel=q;AJ zhrbWyJzcaev1J7;q!==DbIdC9+f>0j?^+eKRm#O!RhX&Nfzg4duc9=3ouFY z<>2%H2Afdbb0AF(2@^k(@ILR+$-&w0dO%eD+1au&;NjaIGf~98JU<){-3uv*G<>jU zpRBPGc?I&|{lOkaCOMsauxNt_(;}Gia!(InA0U*BO9|4+>T0!qd_Lh&(Kj_~LKEXs zAl&NOKfuQH@eyjrWfR{5C;RXMxPS+E01$^$ejlw3(Z`>5e?P+wAFF21F-P5CDp_Pt ziw^|b_m0HAJX2}4&vr^6ro5iW&e0@~c1XM}*q03Wz+sRgr*hithWg?lL zR0uJ>Pxp55Vye_<9dB$_jpOwAV}C-IHnWt2Gzpil96wtCK6fA8+v^ zJnO9;EkjEV6zOH#%%A#50>T;*aZGXY$vdnhIKuqDFYGlrz<8rz5CZ%h<5Gg39=}6R z={!*~p!Ts^8zE7M{CG#rwYb7B2XIrh(BQrt?BVg-_Fd9S!dAC?c78GnJVh({gwhA= zo_#H+d*#2NnFQGg*P_1NJUEk+Cdq!6%e3 zI2KX9XLN5CR6XjO$5Cc`^Ef4N{O1eC8ByPb9Vx>*zavY3j(4Q7F8k+hS6^^_t2R&6 z9-AG>iPi8Ns2dDvv|r`}Q6wjc{Y#HgiTIRbqEckZ@<@|K#yZ3-^*u(Xiaf^`+n3%j ztFIn9{@F`^Ba;eoxLgn$kvKS)`(>dRZBpO_G;|QsDM3&+i9$!*E8Aw^2r&;&^x2R$ z%c_v zb4oOiPZt_2h+$AuBoP9>EU_OGBsGTPV2=uWV*oWVi9?BM?AHmL0Nj^NO?L`-naisgl+e`bXp{kF)FNz$MS zM#urfA>{$fvg$VF!sXM=)y_`{&Gq=iP2|_Fc7CctM(WT1{3Q_IyxsX{P5SoDKj+k) zS3hk@`{vcpZ8lZ1HIkv;7Rmp7{Zmxgr2XafznbK4Slh)-Jze*&s;+k~wk!(@mCJ(T zN?s#{g`|f2#kB_eb&2)PWn2apsE=@_3Wd@J5l6s7Rr%^A7PFN!sEO@}>2fHd5zYlx zQd|!0iTrYC!!simVUy+1mNZ=sZPZ~ov{U?YXv6JtXai%772UG;09%^2=-C~rBx{sd z(I zJ8kTuoVe<#7o>r|^%fo&_%JtX@uCeRZpzk|3K#4+J~7jl@3mR9fxL zoDyxunxjb`b%r}+VAnEBo}=}KRZnu}tDc22ta=u_b=y{Rx3U@B!qL3;ZGqFvszn_H zRYH)Gta^&Fzh_sNA0>`=MSr% zj$jr(BAyD1tDY@USoO5HnNv1+SoLfazv|gxzv@Z6tz611y$&nZGL6Hndb+fr{C~u~ z2b^42bw4iCF)gN~()1}qQUSzG7-IcKkS>1r%bS!m(y>Q{nc4dYuL_uHm}UAryjMlo_d&^YBS<6$IYy# zG45nNtv6=Y(|XYa#@4Wz^)z01Sx^1W&w4hm+^nbZ#?5-FS8mpm2feIkHE5+b%P}wO zsfMkrXES1DJ&j>E>uJ1lvYy5p$EW#{XY&!N|LCZ=8TE6a%{x06>WtgDQ2V8q3vFHpczIsL2~mk;BPUV+5hG8^ zZ>}z5+kD8**s5_Wo6(GT#H-J_WCR_ZCe7;o5&e1h4}}~+EB9)yJ=O~s z!+vSc55J2c)#IVRr{8&h&dk^{^9Ui7v8`YE8C(6vn+N_=Ri50DDC3R&g{+J%|79m* z%R`jNbThWqa3Evrzj4_^f6n+lXIfP%RqrpT{+N^dGDdA;)Gs#~Tm3mZV`~n3zaPlh zR-do)uclZLU_Bh5QopiM{ERIlxZaY=;#nEn`cqEEwi$Law#}O+F{{Uv%V%V4?H6Xo zws~V@Y@5L*V{49CNlfd7Bbka$j$~~nsbQU$HF<8ov3!5^%FNhmU>>wHw)&Nsv26xD z-BN#>1kw8{ES#>hSbx|R3OybmwmLA%`};=5R)0MsW2?tPe6?Zdid6LlMvF!YpwIDY zZLJ#cVVT7XCEmPO#e&(@*PW<7;N=ag@o-jbR06u0w8Qai;^9beXpc7nveapXwnTK* zcxV%ZdK1`cQI7YlZ3Sv9*y~@uS+fq7QDfZWTWtg}o7VNaYR`lDZiS9dr$*xDx(FWV zw^sBig7q_PtJc>?)0ny2n;z|pCsv(=N^&stNY#E*3)v%AjC%-!wbWn;uaH;yewZ3jis7K73qpLCV zf-@@6s1q=E(7uC+%()*4h+h4Xxyh~SuNZq5hQwV}L~t}-kB2mVc!)%~LnkTp*N)ay zt1(l&^?=zR&x6gWQS@X^PW4Dl=f)p3#h*T4PZJLei=o;kY5a~cKlBNDDthaUp7Bt# zxs0BSX(^v9vEm`RA

oG!ga_@BJ*6*L!*g0sYSKV0YR2m~m`By-@^hvYEePj%x$!{z5qiU^}0BWp3ot1MU_+??ok`^quTi zjv04f8r!VwSJlolYtY!FXN^1C^W1kajB>Lb?MsY&_uytc`;YT>J$H?D5={0%+*tTikKI#m@S)y}8bMMb<-atFvA>8|tigkaT+!o&9@y@wJAXjdRvJ zYs;MV#@Z|wdQ>@TekD1h4zN6EpYZ*I?ud!fGgeg z=C{b}z+ZMYycxUM%&l(5u-@e6ZEw@N)J*4759&2WkJMFC9xx5lhJr_o4Q$q<+PcOg z)uuJI?W*2qrXDUdH>#--V~d)4wl}A#p?X_d{ZMX5Q%|H+)uNyu%S~wdQExxfBjv`k z^0C@-RzIlCX6k_(AH2ec|jk~Q9 z&0y2h(2UjH40^ZSu@q-i(MgHEG? z91T6Gl^WDt16Ess{iLFQbIo&E4R1c9i|W>p zDyO?6&aXBlbp1hHJU2&F*<2481#>-Cm&%)gx=79=y7=vs$E|l&VcZ>~lDIX*iMMK~ zDTAv|SOst%aZBHNtS)+619iE(87vFk`nfJ~>j7QdHb=^`wlSg$+SXWE%C?5Mh;0p& z2HpOaVtSM8g!KOgXk49;_daR1l<&#m4Rs&Tby7{>(K^p^2@!1&E zWoKhdYq(Kru3uA;S^ucZ%gu-`EL%fON!c8(i^tu3D#w@ac8uiV`&7O4Bu{)^5>o0neMRDEruVA?!4rBXE( zFOoK|>++}?sfq^8&jvf1VyJrUEFEqE)c%ZK0*pjGe}apX&L6Ud8hCrSW)6?qi>oLzXjMbA^Ugou~S9T;I{cRld_-OFeSIQGd2BHJSs)AGXSi)o1E5q5doNfCZ}u z>%V4}5&17QD~u}gRHeiEjV>BC15LTG8RJ5serigD_E1?IY{pbsuzBQyp!rl)$E+dE zQ1xBw@}K^QQTX%6Di1{cW?AghpE1jPdax|;HIIh$slTBoyMA)Nuq6TdL-jmV1J!m5 z4WoTc^m0 z=vJluJptmxZaj+iL@wpzULsmUdho9EwhtRf%z=j9CpTSHH=s^RVy6l7B zz3RTVf4v@T!hbHvmRl<7@L!MEWLF>a!hiko>P)X#&tgi-bcf=bi*E4^Z4PZT5yBT^!$NJSLEN{UXGyYK7 zzF)nsV|{)!V*T>bj`gcCBi64*3_r^qY3TA|{qmz04NYLLXR;ZpDX?RG^;gVTzaDU6 z{d(Ar_0?z~*5`3M)^|r}rRAYetk2_3Y+rt^c`gI?<}*6hw}w=#?~XXX+Qj<$gF4nX zM^vn@2aH%>kJYh$Gf>C+JQ9obt#?(d?~YNdZw>K^Ukx>}zWRg}>+^^k>+7*P*0%=g zSic!8V}1Qx$NGAJT$i#p$s8$TePcw&`qo$(>svz{>ste5tZxh%vA!NPWBq2ZiS>=K zCe~MjO{~w4Myy{wR?Fl)Ukdu zqGNq)sEPH>;X2lD#saZ^^RjFfZ=TKAzZtD#e`lnQ{q12R_HSNT)Z2~V&4+5!u(sRZL!^k*8b+ei@IRAPa8O{+hrBT(bn`Y7ih^t(C-VGbCdwsH{FXX@;N z{wwu>^-c9){nyMK1plRGX8_b1Yistb|-HCl45$5JTjA*0uJLlGEkKHaq5 z(#M*nTY9M4ZR?-(ujm%rrn%N@t2G;HjaJ&KDYfj=tRGbSZ1qr6TtDiT*=j(sLI2Ec zveiS`AX`6hYi#{<*%VtnmF=)=#zV-m0ZrkJz~tYQ!{JUDZ?B zDL$3|R_&_%z>TW(uWC^(|84$M z*_KM9sv))f*JwrMfwBpee^TwI^n-3ZrJt*oQ~IfFHg(!egAJx`r|5>l9U(<_hnNeG zym)%&)Q-!xOsMQuv2fA;nLUMyQ%xb&!`)>G? zo#%G>29Q%H>Q^_XA3jh2`{!!ln)L5|H*ES)^||fU@P-@n4}@2Ljvw#4VdICcLI2)t z!}a-b!wpTMPTz2|Ke;Xq@*m{?PNe_!58rfew>{_&`^%$^XUv_s@#5*3J?gFVe>bFO z{zd)+8#Y`^{q!gF|JPPOnK1M%+Wplv`nvtYFWvCJ|62p{@9=;8{jRa0rux1cHmGlW zupUwLG14{bk*)k08rYyev#lB7@l*K!s{i<}Z`g46>WTlk#)bv@|Du@QJG*agL7%|A zZ?34nHNE6qr~e5cF7@votF%mP+iXb7HI%fxSA9GFjvIo~vZP)$|7S?cmU@(><@NPL z^)E}yc%=?RV^EASIT!d0y0xeLn%x>EfMrAv7^P4cGw2@|! z8i#4eQ{^S3BGyXc@RsGKO{QBRnm3AA1ey=W#8p7wvozZB;^v9-bJ15DPlvuc5`AAV z5sw4j`whHo^Z|}OQ{#;W`8c{YqK&s9j(+zBmBdsVSZv`GOAC&bp3{$Go^D;6&Irc33)~>Arx;O9|^gJMy#S)lN|A!ZQB~Q zmvk(q;9Uu-?0J&{|U=zXc{{N0{JxuPZp)0p7;;e^bq7+z|d+T{@npeE(6iey$$f|xO z@%EAsZ&l)mQYmz8Zz6|*#d)3b3mr-FoI(@-n79jk?hgkMDZ$nnwrxVisDRFUg*ePf z923NPNTu_8Av)R0rqcMfaGb6q5tQweP-7Ph= z9*&7hVA(&RExUo}ij9000gczvnqeS%f+L9+eEyak@%t2J*M#ALn#AL4`ng&BAnu@Su1y;)o0 zs&vj3XG<&OYmP3^1#-+g8w$%)5>%btQc1Bz*al|sJ|13%6$bE=*jd?tnxCH2DW@;8 zl5$OAQEOt2mn@%vx_OVA$#aMD0|aJMmppshBR1>|Lb}(DG@5Y^PQfkp>3Ip@IlV@& zeP)xGzW|z2bWD;8Fz>0g!ouWcGZV&oI3~=9*0ZW!leNxSZv9+MQqRMBtN^UJ*`|76&lw_ z+MU6uSYBxz7+RA0f3UG2+jP*!4M0lyx(#T`vwg%Kol2X7&d5s1okDN(QTu!Yf)6XE z6`(%NmLZ;1Y8cIdx;28zUctj`)O5`Ra{E>ri!}21$n6b$+#GWW>XvG?SBO#8K!(J7~q4#7>E zMP%`QplyJK*CWdIv@aQ|A(RmY2HJmWXPPTB5`PeIyspo>R~5FtLwm zy#hYKO`EX2}1@m|_m$S)P z5mZ}xub zF5h@{*nR_|oZ}!qc(NO*Y z{^Xc|t1s3x>cim19Cck+M?npu>#mDu5v-dh>Q$`4%fM40H-(O57qaz`p}g9gwNJ@s z_xp`wVr~Mf{_SS=7%R{$CPhQJ?#IybTxx`(Y^l4vY^%Fi7ZBR38(m=9GWe2c2gyrp zPP!@}r!3+DaOU-$Hf5gpOXm#L51*v_u+*Go@TZXM|BH>5?qdM^{BE6nRFv_GUmmlN zD3fT#Z#A}rWs=ss1Dzh-WVh12sz+*UbaWPRbv-3xTAT2si^it=(@r0zljxvY_{ly6#frCF=@^s&1&`xEd{8M^HcLtv#s;xUzDo0TlA75v5mBQ|K*bay%fV=W82p z;04uREHx3^!~4C@G3K#8AUR(&$0sg4+t5Xg=n1TtuV6NJ zYra}%><3sYMg8C-M`z}!)7;d#8jO`%bwNnnpHNXnr{)Y3y^XCAo67zp z?;xs>+?If>diP4*Azo%aNG5wEElwiPoV(P#|F3<-!&?%i17*xMYEE)FxxaXMr=2=) z5$nlX&b8!n-uMvW@yb1~gbh}*+(%YF*5se)b%>1CYC&pdPncLffS>(G56fqx7!UY` zTYWs2m2!;(c>k%rrIMEcLn6jQ>)e-hCcMOR%}GvPKF#K3=ZG&VV%pFi#3}7HDB1`w zLrezd?qBS=BRtY_TNUK=0leRN{7m=4PzLTkwygNf6jO&Jv#`-TR*EGPSe3JEP6my$ z7!S|JiRBV` z40q6xf#PL`*Z|S?PFo9x-2=T;ivr~2KDy?sXk)aZJxcD60-7*u)3@HsF?#^-Yc}5D z&Y-(|bc`H*mX4QK7t7>smafxCT*p4&9-WKOh~%@cIYdhJ59O3Ovs8MTrT<*0y9P`I zc|?csey($8EG)sKnONhuMzUs{i9A))N4Mw=ouq>p3E7s1Y7aso(HRZyp%5llk15sy zlJZl%>X8v!?T)&KJ2^ZgU|-G&AbLxKn4>7u@DaW8t*z5xsD0-+LNOMaJn@zE#fNH}}EUb``mZEKq$R*c{xQbKq(O>SwI3ODTfnEzntpgL@ zVTxkeKyrA6UI!S9R)W+u2Y9n@)>=m4_}U5`$lwQBQa++;&C7kf46y-<>`rcGuBLFT z@xd*$hp9R0nXQ~0{h8LcQr9xAagkaA*S=2IIu~+@q_m;a@A!I|Vn^so;lSb})n4gN z&aBa_%kfNmCy!lFEb$HQm?P?f7gLBSLwr1|qAYqbg&Zv+og5>bU87ak2c~fl&Dc2= zl6^H{8XlUlyViK2iz2e}kWbQN+2CfwLmekzmm>iWdy)N_opk;5{=MGzaFdhA5@90V z@g-k`v#)5i+nqJ1uqLJmtpcZUR!$)edz-nbn2PqD<*t*ulG26{FXs+z3vsxKFhumbG6-CSy|-tPJ1+1v4bV?EP}}PI^0#P@MwR1mQ#3; z%)C!of2NKSa&-R0k&(K1)KPUQeW+7_uYoJ+^VlfXKjhiV;!O_WVW~Nk|U1x=yiC z%1`7QZmfNaW!k*nOWn(Za<3QER4o^atzl>TR$KVx9E{`!xWnu21{S%49mjNJ#kxm> z)$XnxOvj2yKX)A7v%y+T?rDkGVeX%NPVFHr7d`5aD@MuQ1CqgeHB|N1R~$D}K39?5 zM%;n=O_fQZ^<|ls?3He7(QRH9qoMOO@1yBj!b_PPH4;^F<@vq_>hNHHeTDtM(IC~k z1vRi88j-AHhSSy1O1)EK@g4N0CHy~Rh=2u|G;s=wf)cUN8M;$776;5_j80eFw+|)X z*95%gThtL3W7bh#DvgoM)SZdGdx!9f*1*~NE7t^I#qLsTJJZO0j^4pvru-aBmIa;r zce;Z{=~>!Cu#|qT5uorwQ*sXWhqOI5@jN56f?s5!t@Q`VnWRXRwUKb9O)O=<*vGU5 zH0SKy&&Q*nZrFERFS&dI8uu8OJb8;p`C`g68jXuqnXstV0N z=1Hn+TO)GM=OWD1d`z!kfe3hCou_3(Jh^v1QLlinaDj=$_cqv2V!1%E;p^*ojj5X5 zGdX{r4JMu^;4SYn<|$L{0C*%P*4ZtljDwD~RyQ?nLoz>WQb*gVdg*(PfRB8QI*Y*6 zsq9wbyhVI1t^(fQq-;4gPDB=Q&O+)YM^nho&s$iIn6;au9_jFO`gkUPDs z#_s6KYKwrtiN+Ugw`SH0AM>fY1k}mA7b+$ak?>m(%J!q`}FNwFg#ju|dk?AAuEPNn?#O`+A=`y65JB zgQDCH&g7qczR}6d23RS_K2n0lZe;F`)i)0{BR#J!%Zy_`+Pc~9#t!=iAv!b zb&}Ff?BqBAS(JZt`Rgl#SnH70e40xq*Qhgi5~w@)hVG0q=I9{D!$mhSM~8A*pLcoN z4Tx@5?q1)ev_$koSFE96jrg)lC1v{4)(9j&^Dc$#_l{Y9-s{RNW9E{d$jWgl*@S1P z`kG-Aa$y3m`wQ-DuCG!1h*O*w%Ph*j{+;r=X9~X3+BDiS% zxo~P`a;Hj3*pnre3Lt;Kt+94btkS{fsVfhtDSy{O8Vn}Z`YXwiGob8!CLSG*o5n+w z?>OKfQ8LFVmP=<0p*_e&Tk0N8q%Go8a|i3qt99l=mJi}$L1^Qp@5U}-=SX6`2>J4- zxZEVP@zQrAmp<}`#y5ZO4xo*fzE`^(U0rw50b*?c@_Cm4S_b+eD*?x1Q!Yn`{S`VU z>WX!@v@Tu~&>10@xpX$DKDlCKWN)TC8D4grl%H8FYJo$!{Zta$q?4{-0knFZxU`^W8N#apZVK#k|S(s}V*`g}K6jtAn| zD_r_KXIHEd0Bzu+QEZvGLIHdFZ>nc_rqFZ8k?acRb{&^Z&QYKdmsc}5H#Iq{By`LY zbI`>bv&3{=ys=8mAr~!OVj}SopM>`tm6M+-F1=vOW;!-zz^63wd5v^EMC$1lk*+7m_j2MKt|(gU_Qr~Hq{bnbToZ;U%fe^O=M7JCzPJd-Wx zIr(;FLl5m!86VD_Dmz8=tga>A$$+YcuT)j9nPQR7+n}-`ox9-(w_J}R`BC19e6->o zSL_|vT#gf2sW}IBm5D=5ZjMtR$BNi^zCq)m7M8y_i=_`(yNA_S?$N?xiqMH6la(!3 zcMGY@_l8%t5;GfUXV1fHs*+E-Mwa!*m4zVlkZ$q796h3<#!GgI=LoGxy~;jtl55au zr_K(@PCl}sC&$_cIQOU;$-T%#&N+bcuaz8l$vQa-=m>mtMN7IpKsC}o*C>6?dGjbhukF8PEo!wl>XQw%BwMChZM^u@zt8rY#oJ8k5+@Z>J zP=#w#(d*LUTYAfzFPN|i&5HVr2hA5s0xSsa{C2x8y~8w+Zt`THKZ+W?uCtV z%*ecP7U%JmMthjaSsb)W_9N=d=$Ycspii5O52c?F1@!ERm9(r34|bQGU`eb2k=f%t z#!s?vlI>zPRF&hfrtn$Rk{ZX<=nUyO%%_*_FO{bffgizvH$=UNumy6KT3$bUVrrpRp- z%gVPORyj)6stkMs^gO?!$1A#v=|MihO{*ADrMcKK@RD3oSwLuiaM8TvR!+3TRdlFn z^O9OQ(JpY&yku5Rv^%l;#ClmxQ7+FDr1VDtXEig?mHSWqPVu1exY{qpYP zDY~3(YHr8E)UGrsN45XgRx?#&PR}e%T{tyo17=-6K6;HZM@#!h9QQ2ejJ>X+YrX9@ zIpsw8SWOFwpv^Kd3aCQ7zM|!DYh}GtP#wpHlFtsndV|8+zq{BwwKvCorl>acMicA6 zpzmy17t@90{0%BES<%H<<#|7;oCH4Sn@sAwz*sCFz+Zorid2aLQ(K{d9|P1F~5-WUf@V<%4eT_uffZCGcd5d-`0qE?gmEO z{Eo)Tcsnql?OP3Ap8J8p%>A>*%6daEpzfO*k)wqSH}?W-|9bXCCnHz)%Gb8be~egW!fd?RP@Lb%Bt_}f5#&gWv(Ca>K{4{yZw zb8_#F$#UB$?P%zwuiz0Xd7r_FHePzKJixkvg_WU)8OZ7lEiBayTb}z#M^!r;Y{WW( zeAtsLTu)TwSU~e{s&C*2>vD-XMf;`BdPa*kp4s?(XF}b zK(`|JMV`8L^&KmhtjXT$Ace-n%x$?^Lq6FTQh>U!W#Rzix zTDd*4j@*@I_*D^9wQ8y)Q)-_p%5wfy1l=`PQkg~`<=Y~dp1~5YqT3@r$!6m7Bg!>r zz96~ku61cG&?aP0=V;NUBUB47Jt_YN5f5w=eS>G=Z=fbT_4G|-vp;6=z2tye4aaUf z4|;Sf+&s23l6N_m`2EZbx zMSKoh2RQI#@D0d$*;KFsCa&d30^c0Ab%#2KNd59yTA=%XgV4K6Id~7W@2Uv;h)54F zb5iX?vj0$kUR$12**`B*9o|a1_o1u9A9fG)=+?I6l@@sIZwh}0CHUi&`>kQUD^;#F z9H#d(Y>)8%EaLrV0NuXAOQjC^l+O(#``6csS6SpeKey)g{K3|svsAk^{UxU;ET$C1 z`hQVVI?r-khQH~1Tv1%~I16#0sLW$WQ2f~spysk4DE@q+o>OHf6txO>mF#wM_Huh9 zZ*(?k&w30w?5v6#pL~xoRv+Z7p+K3H8%A(Z7L>d zHoMDR>MQ6>9_)A99mf&LN%hMtFw0h z-ca5A=@x1bPHYEICiB@A-iUT3v<6F==tQ>eF*RJ_l66_l8n*1rf>*;{>ikk$;Dgh&o!BVj&PV|EYl@u{JLr&My# zX&0||@N#(LsP|$}<7KJ8p#9qquaTDh1{pC2BNmL;^_SK-DoiIYsVQzb23m|7$?@Kq zP+w!A&g*1>11Yy@k-Xv^3G?k1W-xe?;{pBqgoW3sdT17ot|evzkT3B{3$yf>QhADE zrRQ0Ae!@^JGeA<`VPIwU=OdMGJ_Y7)EmZb)$H~vP*l2?l2TaV*NTu%%MA`FeEIP(* zsWWP|54zVjh|z#He6mJUD{e+@h}6+eBMRSOVOH9psyGf?<$4e7%oPS|gt1~gcVCSFIKB)7R}jYg^Gq@!%b`(v2J;?ZJeI&t?R zLVhPg-na99HlwAQiI6{vkVi+HDV8Fmj8xY_Uh1rL=xpOL&+)4rROR?^oXB&W%xQGq z)*F4~0I^aIqk7EyB8Wk87Hcm;ekMTnm@G$*tZQeG)&F=5x!qq+&6cCn1Kz?r3c0J7 z_K$UvZ`npCbBt;V*L#_ADM(A-+n}i>G@~U3HMRG|QG>!O)*67_!PuVo=EVL0#!k1# z5nq>gNj=rW&S;SVzpwOgGuvd~mmUpa=djA4R(&Xn85C`~bp+Tig4mvD%dsQbA?|Q_ zS{!@Kwt1yS4kd`hG@{-4e`zCS@{>^vKFw!sOzztoy9`fiolp+?A`2_M=Nx%UM>JNw z$Q6rxxnPh7Nt8=`sK&W!rJH!V2jbsDlKyK6>hWIgxMfX5|F&fCp z{FQ|^?6kR=#12Q;FvAohckeug=XdhP& z9u`C`zktnJ@k|1L?GZuLUMqDUEUMr=Du}s0929pHgXOXdP#^7~ zQpz@qG$9`MgQ$6UjMm1tXiZ(|yVt-==Ms5oH@a?ZYZ+&}Yt@ZytmL%{S-PWo-YV0R zd=?t&YreuoV?!4f61h%*$oNVZmsKJcZe)e#z3D>-cSx%;ovVD%R)49SA|LL>KH{L0 zTCt48gd2&%hkJPGdWhD_UJx(f?8xN@%;UO;y57q`XCw>C)x9Gckxu*^c8V3cP%lwx zfG_YX?H#jX)Q;q8XLQg#xLPW!C=YslO(UaHF0{97lPI4

;Iib=ZQ>U0m#%rjxs7 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 diff --git a/ext/openssl-win64/out32dll/libeay32.dll b/ext/openssl-win64/out32dll/libeay32.dll new file mode 100644 index 0000000000000000000000000000000000000000..135d44d76d654fd98f5779285fab0392835c0cdc GIT binary patch literal 1265664 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 z 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 z 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 z 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

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

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

b9n0oMe5GX{DpM7S_N;w5vYFxk(3! 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℘s_J)rVWNM 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Ȳ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 h6t4x7{+Ivr5Y1<@i zne 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

S`rUaFJG6rK~g+Q#r&e3eA-V`Iapz%{LG6 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 C1ae>i diff --git a/ext/openssl-win64/out32dll/ssleay32.dll b/ext/openssl-win64/out32dll/ssleay32.dll new file mode 100644 index 0000000000000000000000000000000000000000..db49ae6c8e4119b607647ebb5dcdd77f51c9e7c1 GIT binary patch literal 293376 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 Date: Wed, 29 Apr 2015 10:26:40 -0700 Subject: [PATCH 06/12] Added additional required files #4587 --- ext/openssl-win32/out32dll/openssl.exe | Bin 0 -> 443392 bytes ext/openssl-win64/out32dll/openssl.exe | Bin 0 -> 497664 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 ext/openssl-win32/out32dll/openssl.exe create mode 100644 ext/openssl-win64/out32dll/openssl.exe diff --git a/ext/openssl-win32/out32dll/openssl.exe b/ext/openssl-win32/out32dll/openssl.exe new file mode 100644 index 0000000000000000000000000000000000000000..840cf5628e897c2d5864c803f67a1142b308c165 GIT binary patch literal 443392 zcmeFaeSBP1wfH@0rtP$(%m7muAV7ctBMlfxkhBR9Ae3-T;mjm6Q=mY_s>fKR;*1n; zD8ZRX+i9?BRrI2QRz&40S1Tq`Fr}p}Ql%h5kr#Or_c#U0TPd&keb?G&CMoJ|!tZ%L z&p%K5nanwB@3r>YYp=cb+H1eeoby-uDt$hmpU?2H&o{ug{A<;}|NEaEB=3FLZ};}C znevCj2P!)LaCn#dsn6Fey6n6%MEUUOOIvo)XkY)#v_oi(4i zbiv1un>KA~)Fb`zBahg0_~{+1N}qEYA6Rt+@8>lBebteC*UtLus-yIM>#CzQ-<(z7 zn=R?jt@@P0A6`|X-}mcx{8Jxuh1S30+&R!|Si=BB45N_n32O{mzbVye$~D^iF~ zQ1JH#c@FV7B$8>h&m>LsRcLzY+qYwq6&}z^U+dMHQSby=zwOtevnTn^0UEBKpThU3f2~kB?y`?By!2x} zU-DuSsGDy--wXaJ-|0aA|9}4usLWdu!?a zsK(v%A65UJ_qzAI*Y5V7?}+*vhI)IVflGql7-~OClzO84abm;MC2Mwr-x;1B)u+Jv zE!mTO&TOAAnA?T0Zrpxfn=e0Yhy0!XDt~_%A@RmtJT046&0~Jr+wwfUMxLkpAo9bg zv5MzVsFkM> zPc`}!=BZwvYI*9_r#hZm^{I^~N1xhxny*hCJT2mB+4Q+Q{cs+CmQ9<_-%S&>>ePE6 zz^iS5d|Nc!naD4URwYyJ{6Dq%oQ6j`^DpJ6MZY}T*Ik*6ng4ihf-k=-yCKpy9L(JY zcHhp-#5?DbHR(G1EwyM3VitL3H&hvOt>2g5(YG`G#T(OUSWK9$0_lj>#8Qc*xq}xW zIFvr0@~iot>LksL3Jn0M@gU1ABx%0LLo#p7LJMekwD0*P$GIKu%`s8?);FABCF%Zgn(gcc{DDF|V%h5VIRXw9ViP6GTvbL&4k}NqJK{~TQLGSVy6cQQg~D*OoD7!3U1)%W^QR7Hv{g>!}K+Yf3J zjho+5?Q{BjD7O|~qqzsSE9J4a&lEJjt*}-QpH;+_W5qmN^u?1Ny0?b57%jc}V)x)< z<6$M3`<$rP*74wE4q0}r7={lnjCOd1&*U-K|N7g*!^J7RryLv19V|*hAI*0~>$Qt@ z#vOCkKV(Rt28|edx}jL_E0&3Q3z$#yjiC=YF>}5=9{cQlwABuhnqSFG82)o7T3DTK zgQYj)-xCRyIuIv=tmlPB>kMr$- z9d^vKJdP@lp{=pAxtKnvyCTs&A!&YRF(_^SgnKi=E#xi z?5?!-#WC~#CfzB5f>$@M59Z#c>B-wd-lHtb?!ppA%zUVvxkfVIXEV2IX04Muzmz#{ zPA_MUO6DJs89Nz9Ty5!Tlo4{w?@&t3D)teB^F#igMmxi5?zxD~?W#I_AG+8PUhuS`EEKH(JC%xlJHSSDZWdW~Kdu=-G%+ zYLWC5$NWH(L~J1o$d>`t?gKXnC!Ys`2x|2;W){dRhSY7kQTR^CYg@FAhR0WEUVp)r z69?!Qu+!wZv1JE%AOPIl^k0mR;#Ea(Cmw0o*)WXnkoyuzDYIIL?Z85ZozA3L$s0P2 zI-V%}byDXDjMO-850(@Cx9NpmaHXl;d4S{Ql|DhMDlY7MK69Mg1Ptwd1>V_l| zrbDs1)2%1LG3z{xS;>S6k|~+rWh#_-Rl`o)q2rS&QzTD*n~ar@F4!!S-j6diNKnc%sNPZghfK8<|p_;m1T=Tpn4iBFhM3!ey|YCZuzA!xK>)_u(z zaTwmr`Kk5`{6$Nw!?5w+I1KB_q%PK3^y9pPS!Hn$x9z^X6pN z`;9~G^1B$_Yn$KA9O!BJ+DD{qQd(r7&<<|)or>U!y%}+fllrB<`0@>dYsmE;|04Im zd;N>t1Ec&4gnz^wC3Tq$-e>sXz%l=`Mc5PO)mH3F`r1k*l`A((Q#mI<@>Kk1Be(F1ow(JspD6FHW4PI|)jGZ6BSA8m6 zE%>X(i|U#!hguBccVeZn63OJLSMBvmNK_pEqy&u_=?b+uQWY>Y|p)6e@ky)p;yx1nqvE4my#Ky z)Pj9?P_(7AnI~IwG$$%HLppH(+iwjIGrWDQ*Y7iP`Qw-l{^qwa)JM!&3TWmp)yNy1 z%ckZhg1H@Z(dHL|Im35p!c*hOTqj`ynmIHRD;UhJ5bhU7s}tRo-3vR-_N#;tV@vQW zpCUyqT*7UkMvnOdP4IicvFy5mk)f2*$35rHpr%l+ARTyA6(lNQ(JZ8RHh-9dpeHMjAlOe4&hy z-O%c`DAFasMEAsgcABGMot{lwv^KwxN!mtplHJ{%CZ!oeB(*iakUr0C0zF|~wCJcx zBZJo&wg$GX;${+wDqF{V{7P-o!ge~g*UFNrt$fwb62sG<#HJMPCDnWrIP^lz8-uw! z0JsuPc1(pWNvy+#~zk>XMKQO6ch!$qLs z7#w2>p|~xigvEh$eI&(D@9ULK9YIeA!~h!d=F@a8v?;7PD<5Jm@wjHK!ta?a*(!JR zU#nD*REbFD_l37bv%8pv5FE1Yji*bI^(Mb_cv#&1s=l4Ur5hz1b>;WYpeJ6h@8Vk2_8gd?C1~ICUN2x zINd(xr3+1^AnZuthSZvGY1R<&uXxftt1tfSu1V>1cGtwTo1g8^yMcT?bZS#)n1^h7 z^S0oMOEI{xU)Q{`=W1W@jpxI9ye#pbC1r+3R|e%z++@7 zP8@hp{6E__*UF>0O)`4(tFT3CLW2s@_OwCAj2(TCrv1%NESZph0vR{<-IG44v+{0c zbo(kFGUYqMV`H_lv0xM%cYRUhRE3_75ID#ac~9|} zDel9dGZ!X&#h|Tz+@zJ7|H2D|nq&H;AQ~8TB%*dP4r? zhI@Kv&B!|vTa5<4vF_|x_i*=c+(~wto0PPKU_X>N%lwBesCienKBgW^@E==p&X(vn#^o-?a>k^EA2N3@PY^NuuDG)C7y zv|RSDQnSq;m8_qs+r5zXf|^?fs!#`$B$nElNakN^cs_-Wgv2o+&N){oLAQ33PgaET z`_L0ZL@VmxCW<}CeMF2;P-0@$aq|H!PK;8YSQv0?+(nN{hnQ?rY>m*}^~)!<)c1s2 zW?m%*Cu*rD3qPlf?n$l-4kmr8dT(Mc0{s_FDy);lS->BZc!!-tr6=Xzn(=ONf4qIC z!utQq1Fba88#C@=N()<&WZY!6;%az=C*tsqaur-GaweuLau%+rSrl_4|C0oO&jb$y znUz|FJx&Svv!_hT97_*A=#0+c>Dz=GBroD_#v zArEVLa690j)0_tf8cIRdhd`yK)2$;RX402yA0J^2j?7OaHv>h0spqkdBjK5D@+A^P z{I8L;UD*va^rn4M<}zMW#Pe5vK~*Vf{#yz9!8}A}xt(r+a^j}yz2%4qvZo9uGC@-d z4XM?n!c;gm``Oo-lY+T7-%&GK<39TrY28f}k}%J|mz2auBQYyZr1?7O6kQiLckr}q z5|SmlB^?7(@Sq~YUOEcAp7o5c0ZFhtkP|d)WMWx`S+2Q4#eJbupP!6|&sRu5mO?T| zzAMg{(?ix;?*6nlL zN{0AufA^%M`HM;x#ki`L&QRm_LMUYpg;2`WKqzT`sX0cemzcE+Rnf}Pj4fLR@Ckk9 zq2*xYUrN&VB);J@uYgR+GU`WAN$Fu>#=3_}rDiHGI&Xca7=+iAYihLQ*!~4kANJs{ zK=Rv!Z-VnHiZY4C;x0J=8}NIZ85{8M1=cv8x1J(Go$mFjcW3^8rSi5(_5MwHKSxvlRe85*z02kOmleamFK_m! z^4$NWyi@*7c^$i#H{*XPFN6Y^hX{$@*h;9lVZ*Xqv`Xd)xoDU#f?T&mqdZ_s0yp+7 zX04ItYIu|tkpq!uNZpQ9+}%R+Ip*ZgYm?d0q_eYoub64KAXx(X5-sQYpyk=cK^oY; zV}o@i%`x8>1yI)|>26k)C=e3KZip^N8D|kTmDy^`)XZhgZv}G`d2Tu^n0u#8xGfq% zBj%S0cX)(jW;QUIwb;H?Vy=fsO)^o>Zx?=)5hmEOR*Wqcr}81l7O(jPeIh*7SG>06 zxXfOxLr^<(|ep7>e{UlL_KiphgvS0JvS9*?4!fm62#*0Vh zS43+OLG!)A6*7%&UKhOf8opJIG1pHf$L#zZtsxx32!f7@@ba{@j1%BX^E7NRbBLf` zy+N99y*HYUq#Zw!<_+y@RG8O883VpMA^)h%tD^M~gisw{@%$=ndvPYHZjA)sBQmhR zqHTih)IOYo-qfUz}19X-ajY|(nyP-(-X_~X>)ATbS=t(2ph6El^{SjhH$ z(VV#1+k$q}oTR%LB{f%3zBZU@jfH(2m`c$qj$>|Jq>6KcV2I{Ov#T z)B#D^O@Rh3m()z6ed%?QR#qVG4pxC;#RD-t)y?>wdRidXw}y@!rcJ84hgAyF!bhs`#d$9+du&q$x&YLYfgb#QACyPRhS&@kueq41P5BQeo_3|cG`}7c&C5#^3AP{2HVrWQ- zWEOiWY#tZa9JreS#LZ>^wswnocg%ofu#t%t#rW|EMwMcGvy8FrF~Ruq2*y?b zF_Qs6>_1@+Qc39)^JJEm**uWFceuD0o_jqLsR;UfMuG`)wRuS~{Ic@04d0XLv+}ts zf4M)u5m`$hnZ_nQSMm?DyZk*T3~r{p{U!YP-Z*pmseEy(v|(6tLQytMrKm>55u#I6B?dprBa#`2i-5;ZcNCe{BidN zd<5WH$$$r8Xaf z*s4*){8F5(o_Yk@rT=_g2;g{B;}}jfzxy31)PnO>p89GsD?CZ38!esHfyQ0y!>7a5V-l0sy zc08FkI_6ZUqw0kxF{;_M(OaSJ3+A5ZO-SQtH#_DY%_H98ah^pe8<;NY6EkmiQxhBC zs|64@1pqj3**^}`>*`j{CIA!Zdp?-^26PkV3QLa|*tIzTtbKhH2y53D`#a4d<+BPS z5~cLJJ9pE8Ihts7V1MBelT>O#@gL1r;lx{Mn`++vl;3xU=s>4!d{6L`rJbo=x$WAe z?Y<$X<TS_r0-ue z_o7h*+AV>9)!fqBwXyuU0a+1lMNjhYn3%3A%UtttrZSPj3h6p$`K>K=+_1LK`Ou_a zGz_s7=|Zfv*mlPJp(Qfri|t>pK0)zGI-M#@)Et>kcG$pr*_(+vr>73q5p!hDVdEC*O&^ zm5mQwGHx!rKAPioQ!YBd7da(GmU+{M+Gp8zR>h~5oU-D=<2*jH1FfD7viKu@-K7 z4A=U-afU^x9ujFUwQ~k z+$`XLGC;OIL2^4TcumIEgV3s?i7~;aGh1Ssfl;4d)PV37Qv#W5J&>DC@^7Gh>3B6KPMUM+x zCPVTTOL9SJzBOjiRS3P3{kcKt^$5My@0Z^HfbG?Hl@4izI-z&{xaqNjLAEk|ROprJ zyA}TE7FMkvWCdn$rP3X16Q5*hPJ<@99BVQMnKv)iHEZ21xf6m`6tUuGdBAeiV3%XX zj}9)?Vn*#3*|U64w`JW3QOat{>|?IAWnt@rx#dz;N{VQr2;7xVlPK;Hlbg?yR@lkx zez133wF_>VC?O5)^S=@F#p6N`jdFSlmka*Fap8->TC9c7666JnJa&60#Xm;-DurEs zD9jsI@q#admg0+(?rq^3t8NH>ZwY^~;E!)>vsB;i|7sTGE@gh4_PSMeOcdV2AsuWV zFTS_`>39nFl$gm_ZQQ&)vbS(LX@&0!^;V@mE`2`E>ht}e+y3bEuTW1jX08}1;+G^B zW=Ro^TEy7fU*wn8#(Rs&{b1dA>o4uMy3~HMS#~h0B*xnQQhr3s|4%^n?=2;~( zR(Upf_76-?UrIY({L9*+J>rbY-Z!MyBU7t_tep&Q8&?sYN}eJ`=nxj`G%sDCb`(Eg zB~-=K9!7HE$Gi+~85ebLgWi*1mId0vSTOW{sC-AL*kOz?Sn=T5NpqTV>W9-Di8!K{ z47uiI}iU^JSn2%!M6zjKTtQN)kX&KA)DaN-)FmC<3l(V#iAw|yzvCjy`lYbKoUl~IfSqUs| zwkJw5Xyx58kMZv5KtPf16@ab(z_Wt!+cHKk?~eKD2u3Y{nECby#@1)F{$-4nygO!b z8AJG(3yk`YAVn3a69Dmt!ig`T9(QS4m;}IOa-JgeU>VON{zl1mD6UU*EH8OqA2>O9Wyj1OZ`6PFiR- z*}H5SA%#@hIMAre1n!CwM%+9>n&fX|>*{)zEdn-gW9BH!T~8^iV}4c6+NfC{kBed| z3yVs*Vy2&5%7SqDO)37@}B8zL(1T1Ep5~wptK8Y&e>z@cPyMgV4!M+KyfTD_!blWH~R#^DL z@Nm*pX%<=M>$^y@Xpc&|)nthm&L+!XgvW8jhcbSo-bw>?NY!tH5l=dSQaxklQjwY0 zK$`6Ci`s27|IwqrofFR9$CP(bB&QcPLp#8-A|%2ipFyGz+om8+Lk6i?;Wz;LYaMiI!pSNBBgddYod8#TRIYRU%UiP>H0OoO(c zyHZ-o{Nr2%Ba3p%Z_E`GcL7Opb010B4UxkCK(G1UOe3?~d9v-v^%_*`S*oEN8(jI2 z9{Hnv>!p3K0FM@`Nw*`LnmBv8X3z@Q7gp!wuv!gArS_9{VNsObj4?BGx9A5#Ub0v* zW}7#a1=-ViA7M*bj#vO9t6|nta$BUr=4hz{-NCK@&1o3MZ%fN-b=Xn%WnO5NdekSw zV|GI=TiQ?|5T2#!`@hk(BRB4-_r|!#0FFU)$l6 zUc%WV&|f0#-@)k@+g4itZXqA*-(J4MZN9MG3}$*M(-s)aO%mEH9aEK6Qg1^24G#!S zS$JOW$$FiaqPnpVRq_al2L4j2%vMgM3RDN>4JrXm0S`NK5vtRyz{OQF0PX>|? zq7uu_iy%DjY7955?BDzmE9m8ar)&zeRrpWri1{mm)niE2&5R_UA_Ivn>HWGVB+MPQ zeI!EW2xe)9m#$)W?00NpF_bXNcyv0=>RZJ&=)SqbB|EH!VhQu{5h_y!oba*HhyCv{ zbLL3Oj^{`@Q!I23Se>15*<)c2)eKl04pvJBk7C6L-T>f~`G-`VZtJIG=Y9l;O#oYM zQwZ+Y1!C?)2%-V~t2o-s#(}t*0iCibuK~vC2PGX<8AQdo()5J55&<$Wph{V)W5L|7 z*&YGMa-@AOjTiDp6ekAl)SuPRiaQ}QVKrKgS$4J{`wJCt)Y+Np>|YUWhb*%AzEnX+ z+IW9Xk4174LSX6WLiT{*Ro2?%R1&0CVK#1_({`01Z!hc26u$E}SQ2C11xxhf@{ASR z-B@BN6Y&hAd86I(^Ep97G1y<>iXIHXvM5Q~+ugC_ucF-_Rqg|YGbA@>EnuqN>pxq` z5Hqc0pyWDjC{G$OcZjsOIr?VNjz~%E=>bkE|7Y|4KZ=}iwlh(W)D24NHRUWoNJMy{ zx`f@IrPu>Doh}XGqwGVeV3hfFEM$+q#NCz3=2{Lt(Lz`_iEajS;&rOV_pRVbq$20z zGlwFlaLoMtKU4&C&(NJpm|^h}DTy61I0aW~GR_tS%E}f;^uKHykxm)H>soOlnc4ZR zgOJ;+%s0V&NyOhgOXyb>_p?KKT3I~6)(#eXVJUqC536~|90;F_GjfYZIx~&Gi!zfN zb`}cQ0qoGGqb%`M3ZQEq30p~X zs>+}WMT&UUN5ylxU=9=PLO|lvXoV==V3EAV$sCM%Op!t&p!D%%kR9E!U%#53`9k$XOpXTI5Z8ZB6p)*! zaD;8 zh0XawKbdsvpBD~4*CrAQU378jB!K15yZ_-llvtEk*k$i{4IM6NURD&wz{S(kXOw`C zmw;Ckq2FR#fw>EX#7q^5rC!*5h8B3S?w#QXLSVgIOi(YI7{zq;i}~R+%i^SYm7K`E z4fU^yF)R74>ONlD5;>R_akpv(ZdH1L3ohmWg-}zQ7jXx);IEewM@lQT8|iWLdD6XM z>w(jSuc`}1F~*s&I$!#H<{BY6U;|4Z6_%JXFz2X_r)0BBtq8>&SYj=6p{IWHIaw}QoZ6(kE2#a@Q>z*va8^#)|ZysH6jip-fXQRe0%km4ZCvY zt~UG5gv_bji7~XKIzJq|EqqGc&B0WsSpwbJRFzv$LOstxvW;6hG-ZKh@xl>eG$lGz zi|6xGTlIFURYAvHtSHA@6ltdz+y2|4t>oXICToj3?n2G7w`K_y_p?PUP~aPlhw1E4tDdconOn%EVBf_oG7oNs<@}~G887NG4YAo3&iw^>gCdXZzJn4r(-dD} zn=B9O27^uI_0c_;PVl|`4?hMupY&73WvimSLT;Im)2$wxM&e<6rsu7frG(yWrAH{H z&?3avYRz_Ae;YHs$wKcOr6>Dkw)>%{`#mVHF_d@|9piPWFdIaw99WTD8cxQoJ zR=foTiR=$HSz6y6| zQszHfb&$}{Ou}VUG?_M;?`Y1(+-#O7@1^*lD5lF z>TP0#`V5cWEfUX?*D;I8>-lUC0*IN51z_h2tCZR~0CfCx=PJf2BN+9HaqI|2m10zv zF`j)%%BUK_7yuA6Z#9+5$g(266j*vRFyPxJOS_B?Q493+u!gPs{p_`M|HmUdm~{(oJS{T7mwPtUAnr9f_Wu zB;TwheTZ*7| z>D4#PRw$%+h+9jEN%MDk32|>h`5N7sR>P4&D`t_a6o_(69H$w?Uh)SqxogVS2+{Fif+yS>0e&pv~)-H%kpo1R-mOam@4+MGjTPT3gwa zyF$gY3UF!q^>U+R2^A;mUB46|PuggEKxBdJ$g_plRlQ#7Ax*F-Pw9?U%stT+{l;b89LVuI|kzW&^ zb~8{W86D2m8!V+ zNct|Fils~=kn9FA7V}ZSKH2J?a2ur--aPtuaPBqxp<0PhA&qZgSIdfz?ACM$xYgWZ zb4mEs+E0DDO%xTdQWwTxZK~e(S2EZFvdzRc5&{^BSd=YSpP6gbF{gvXV^? zHC#BdLUFN+NU}O}7z*IB9!DhNVZrT)E{>UBtNw(AQw*m}%rc(gk(IlI`ESX&N?D-} zi$IDdUAgyMRv-wWOU)L?^7fRPKo(&s;^s{~8r2HfXhGHz8lFd(9k9`uX$1rAN+0H! z6SQy{sP}bX&T&|M=rorp*V0LlWSSiv&(q|N`Ln7BH^MdSgjUq!HhAr?#c&)V%YDVk z-uweDL;3LkKw)lN*1a6_-0@oB8lY-4uBwU;{|O&q7zT?;GS+~TmdZF%30F^ga@v&n zlD^AMfTa{9kom-JVkV+BtS4R}&U+N38ofrPB5tmrFiM%-yha5YTp=HzGgFcHirSa&C@I;K?OMQZR5;@NG;s%;)QSrx;wCK3 zgx|#|X!D(0MvPj(DP_Q13;2vj30rm%x4DWntMl^M^X1SBb82xa(W$F9tfuniAm2bE zZ)PKLC#{j(U-~;5S?2VzktWJVt|+zFmiEZ)Yg|QoDYbUY$86pI_p3;o$fT5!BJ1n# zd{s=n#vF#(CeMJ|mJdqYudQKc;touZ?<4F_q`(?Jat~^hqw%$Tn%Jk%nth8c`!`6} zES=&SoBv6VKjI^bd^APa?Ur$K+G62Fn!L6!OC}|w4{z;ZMkO}HQhZR@(XE$`dGT`g zpRmV6u9j;mJck^2J8-gRng?2%y+YHTn!u(PzAJ?6X_GP6*Q4}dp;S5_5-oHJCGR-d zIOZGF)}tqNDsMEcDO3u*rLVWWcR%r-YdWnwpZXn*{@(rAW5bu>#8!zcgzPRbsMIS-)~SrgumGhVe9ou1pGQY5Lp#iDc?JTeJ4|lbt3Jpi%-?5U7{?x z7pzZ~NJo53?q%fH7rY#3x7?fEcPd%BIhQ^4N5nb({4qhgWIb;MwF3sfrt1?Ct865NWj50<@F^U4P zbFOVW1>-LOJp0k+4gli*s}ZE@0mRI0BS`ZV=|=!?9jHQth%l=Gjq7#OM5pyqM?fP zRJWEgh9APx2w(z$z-WLUz>}|y$`JrCR02?9$d{Sw-Y^Q#=nLk)DykqiU(N||@2F_x z(ByAtpPt;`G9jM`#Mcd1nhikRY2W+{1`~Q4eu9_gMo!`{_@QdA)G|oB6xenZqjY>JPV8K2Z5U ze%*|_GAsosql}YbD$G(qFy_uJfg-0doCq22h#7Pp3uf|@KfQ``;d^V5^`nZE{ccj^ zIi7#<|5VAfT5`e->$e-QUyr>ijgUyVx0D`w^ucxPSBw3s)vuHhy=5%yp%u~y5Z|GN z#%l3p7P4cX>(9}Sc*^|?b750UPm+nwe%W^_^>+rssMItC2GB>DMV#dI#Q@Y}=Bu@( zp2be94_M?j+k5R2pI>lHw^R;CkTxuJ%KRqVIZKN*eB1lfKYX&+c@lb|`tv21L~clz zo6<|(K`YO4i+UUP&B)E^;;P6k>mfc-byYUNBzNRkR{wWbrJqcmsS#HtzO3x3e4q+F z?%~q(V8f8!o{og;`Lqm_Jr*Vf035WdOC61)m^aIMLD^FoPduH*^Zb=nqx_YxURv^3 znhF;IAE&?KQIy{aDfug>mMJ=gDxo;~c!XL=eYV#J^}n3fZ}ymu)zeqS|BOVb$MP`bM|T65BZ3gTC^c^P~W3m;Ab15Nh{e- zF)~gb#=v)Qr@8%6_*9S8aU)vk4`_yvFd58!57OqTXsID}(@ofM%`TDGJ2g5EQ<00Q zY8Zti$l-aHgpXE(mfcXzb<63K%vXhmNiwsnF;{5<_tFOYbY(`_BaWfuB*IW#5`gK_ ztbWU3+`M*}$_S~loy0bPnI@E#1o3XHjIfgAXK0kg^P%bawK)LX%B_WPB~|)7@yLkv z%yp9NeEl2hjYkKsr+I~O3GE9i$ACEnBw|ED3tv%wM2w4bgMDe~NgneTz!^z}9%ek+ zI^1*$sF3H~yvvhgUKZwMho6k@avgFd!5I9`S>DVj)!m&mo0Lw7N;EO=NuP?-o}T5^ zKpYwLUvmTs`$9P-F{PyWnnfbAyeT!Z-~1(p#BLw$SRKq=Lp#bgG>N3wI&Srkm_^Ov zkGTicE$)pdYNh33=6+FSnB)r9Ow?U~%u2EkQixZx&mO7`U-$|ouzO!nyrx~vGukCh zyRm$dB4$oj1iy~^!bT)HY9cpV@zIRhVn~=sn&T`)=6)~&tuI2$m5E8=v&aln)&hIp z=1SS4r&GoiT1W_&v(=ZLnn;YZl18sy-#o-N;&13t z-hApLOBB)mc+}>|Z<68vt+`A)bD0}Ovt%B#ukiR!^O(2MM0bchu0sQ*^4rWtPd8;A zv)`zBjHqNmGFFpu_@PeE!AA?Cc2@H<5IfynnB%;$vzlt1Vm!a(BjW%4@AHdSK^uN( zPcxf8FtgcibFu_rXEu#m?B-F$+L_Jsdzws*x5(Y6GM$~?RECG$r!uQc47RZqG`pb= zL$H_Qu2d)r?Uv>^>(B@0H&`H<`gZt&eP2SOkf$ShEkE&8lW^=Dr%iihRq-gj5|M+2dVTyy1gxF9#q}~nqF&7hT%>7fSbU>hIfy`>TA-Z?JY~MX&-AadWvP!M?!@ z*LUhJPlm;$+5RDw7r#w9ykySuIlhf&`g~_{JO63@r)_PSa=Cx`=HdbUr~R&F;^h;2 z*WFXxt3USr-Zv*+Ue~+sC;9c?o^jXC^%d#B{ktkR29WO1Q~vvREv>3Qqxr8rzq-iV z$#|i6K&A&a9JAvwRfR=dz-KO>FwNWMt0CV)cJnQaF5(km2SG0+c%09ti%*)*LOw2^7DlNiz8yY` z`E>AUi6WEAP!c zka=$8M?LS(OtJH5LJA(PV{WJxsrz*eKHU6H=IrLzGG`918X-R>%ISS!QC8?;?qX02 z0UR~1XnU51$+ks9{&Ta#MDA~udz5(1*AJ%2H8TI%BjeL(z8Y!n!nv#(c+=F8`$hJM zf4F6!SC$-vfp&j($d9^60IIF<7R&#;#n<;pFKX%4m*_cVdaHD8sc^H9T&R^ClK?YE zT8dAACmee0<>k&iQMN)#2-?W~*a&)6?)M1pR^`S*K*;GPEPGkq9&0SW3|dpTpBdPo zYuj$r`oSKtrTy&e_bWnSfl?Sp`w9Mh+x~(-@BQG5v*{}Y1;1;&_)>eP@FyI`!4Ab8 zTN?=5c1!DZg4#At)Gp=tLP2d+)Ka`)kMfq?daVUKa^GOfI1BC3LJf}TVAD8JbuFau z--22{K7K_|7W-1cjw<#z^uts38$j0nJ<=Zu1s4t$nl(z(uAl8uel@l?Iv%}|-iVV> z;AaYbgApa?-9NM^dcnRe=-#>P15k@7w(vEGD65Obbm+Ybsb!2`!}_c2GJyy*zZT5N zN?_9M1>0T9(7$n_{3XOb>e~KKOP1m3Z{u1FNGjHR^exxTcP}|{P~gkEDu&PQeRFDh zV(**NGJ*Duy-JJp>C3Asdf$+QH%2Akjs;g7B5Yc=X`*VuD9G?T7#>gkGhX}XG4=P_ z-?;@jn>iR7Py2ZEZUyn5+Ivx9hR~}T4?VBF#l-Axec2IVH&q7SPklor{zi{C3k!Lg z)9ygsI7WS(#_m^90_gdQ=ki0wnJ`!UJR8=ryZP?)BvdC{{IF~w$WIvb!Ry!zl>XBB z$Ozqk5qI6t|-TH zIQ1HHWoKn+`Ww>3D(jxh4oh|e1WWF@yA}fO&HRa(zYEklsMia0snWh5sKxCO;C%i# zX6*<8@hDseXw2L+LO_N%w^a$OED?}cS) zOEg^32Y0R#IBA4{T$t@vD}lpD2#9LCuf8h;_9_v`ZfJM619FG>!!JziU6#avKv(dG zyA}j$CD9{Lmp^f{38X-pVw3Tx$-bcEX34pN)1O|&a>~~$(^PW`r<1$+@$?a$=4w?Janc&` zs1MQ#ce-=Q?G(b~G7peJQ{PE{bou0ld$>4%hMaF2>UXwg-<)#!l>Vw^{T=OFi&L_@ zKFyB<(s!1hRdE(~=|3u~MTB))(o?f+5=+Le31lxhl_ipluxgAoJIbRv8a=Clo z=e7XSU-~oOqHsD&SAJXnITHqw{3g`vh5YZ=6%MQXy`AyDuZM^W(vsoTD*&QLtl%t0+f*me;(=BftO4U&aRAnOY}1 z1d8~eG9!J4Zzj}TzI21`mQ9&Q(KUVKe0W(!`B~9B%9=?G=T=^_8*01|&k%!1utW;)K`IBWE@$kbEv6BYiS2vV| zGytu&kJnn7u8jq}MWQWHS-1%1z6%Z0j-VWKlOjs@>X5ejJ#I0Xy9iyT5At?f{}&pl z-HuT7GM;ICvh?^koF@ZO(#*E907&m|MB;U9%YFvJ`EA7$QgV|=!ZcY1DdQ{hYmlR& zt9mp_0ys(Y3&COElthH2NiM;0r5&n8zb~aIzzzp}IXEkK`e}LH0UKLqq)8*%Ht19`Qj_<=`rrFPw#W|p-xm#DUKw~Ossg)Q z{BTnmT{_6kIT0`SzCxNM2r_)AyR}qL$GpaEMpg-IM96Jaj#hYRtl9X?rP>j`t03tJ z_0kdK*SXn&)5JO7{8smBk(xRtZHia<`9L4}u@Ac*T1l0yYlV+_doQ?AbbAO{u5F9VU zpJ{YM(ALdG4Z|ygx26qEg`Oq7bU4uScYBWiA@LF!)3a9vd`ntgpXNb4kp{%? zpSd`&IpIjt5d&0h@kJo8>ERlX%{?k-fFsQ3t#swGF2es5l=sb2pR zwW=~T;YT{MHK-KrEBu2$5Ul6e>**?}0KeGBh!6YoV%#k70e~{;Vy$sWZ8Ftqc1;v< zR`EkCeTT{dFn9IE$u|tx%Xif_ZRfo@O_%0n=*djC>Tjq3XIm5;D1HuR=F2)`t+2v9 zoE`l5jd_I5QEJQw$}@j`@wGX=^#|5NR>w4;e{s6amULHZ zwp$cjb%7&IA4Dcf1e=Gy! zR5&^ACW}ZfwKQtBDy2--TBDG%qHPRFTRU2MD_)psr(ys z%0T`v{p}UYL#@Oz-7T^au6+R$e*$vTuwx`)$dqcjdO#X)5$cuH` zJ>K4b-Bd{B*E5WJznka%PO6-Cie%pnK&`ns-G1ptEdJ=l8eq-xQSKt zj}DZOBOvYUr$@})6{I;@pO|?}6nT@>puIxYpURSxYv7tVY;(KCU>HygZp;Lb6bf9- z^F5x)*BUoZSBk>1rfIsh^tLFQRnL>s8J81eufx7ws;JQAQihN5oPen|w%w(8#`9Yd z?WJ+$FiKb4oD7WpZ28x+?}WZ^WdD^fu6xmcR(_ZaQKkbj(I=OYGs5f-Zp8CjYMF{WA3JPmWS^!;yTo=~r|guB7Q8+K~@P@!)lSizwa zF6A-*E?C*WSLFYYnK&4NVSJ@fem!H5pTaw0A~;r=vXBwi{->`$cmF^7{qg)CL7TBT zeE`j&OXm6$oX|YqmN#(J*y}V>b@CU1(ptq5NnY6F*d&z zEsowzC`JAc`SqoOr;<*E=oZ3sJ!kP@nhOvjSHCM!y5N^Sh+hSd{339}1QCJ1;hu&E zO7?PjTexFsTh+Y&(sBr6z*ZD)FBh9$0f2DMg=9kl90{x|))+EZy5sa#hlcKX5n1Z#nT*TdiPn{aP z?W;F1MGfB8(Q@I^{qy%{pAO2l&UI$eUUx0;m87M!Dq_=Of>8tWr|R&hXS{3zd~jja=;fV#|7 z{?-R`575wB)S7ZpQ_Px*(M9c(-@BXT^f{%Xu9&FHbV5FqeVUfGZ59xKQ!xtCPI-VP zj0R0mP~~V)rGosUL4E~I91WVNph=@alN2<0G-z^u|Ba^yd^3+j(07#uJuq6(VmZ(Q z;ZQ(a$FR;0A{a_8y;!Ut0P9-!;%w%`Zf(;8N^ap6; z#?_>%680$FmdAm4;yQnGpONu87o7`8{Sq!!LH}h*b`c;vo(_1IiL4xQl>1HOA{9C8 z*up2wr=5@7c`~0*H6OVqMeahW=QEd&y>Mk7OS>Es<1Aj2d6l0p;J0@8OP4JDX4K)O zvk$xdX4D;IQnruWpDy8pPN_ZM|;{M-HiY11)>U5qR>h9+DR?QY_ z7$Re>1nNVceMJ5t=4CHY-~1A}mqX^P&+s-_J(<=V+wBi{juZRmRuq3Z7#SDRG(;Q~ z5f?Iy0fV7&AqV>1io(f)r^{iRM*qIlp7;J9Gjp~-n0uMRXEH)_EP^L{u>m}Z6DGfT z+EREN>u8s2-xvL_S^71>KC#gDq66sHD1EkI7OoWf0j>A=_^*a-$Q}~PDmz9yK6zP%?q$e4@VeB7xP9pr0|1G(6sXdJka!*dobS3)bBuWF4EaxU0Iel$Im zmXqMJk7FYYc)pAue_D1v)k;7QmLfPO$5C#rdq26dLle~RaA16qS^b9aP{nf_A8z*w z=6(Pcge3MmM1GLZhFGK#7jb3}=Y#j+?|e+#Srz|g1hS|4sGkHUZ2h`Q^%J!sYi)jVLeBHf=Vu!ESqnX{Tt4LM#2k*~#qr_N z{T$3ClH6)8*(o8RTH#xw0niWTF?9dm#THi>q4nto4o2-ZLZCg8G+W&4CxAG7Nf%4SezX z%V&?P$y*P+QMP95p`I71h-04NZ`ldh_-}Ss4Unni1khktCdy90r=%C+ilB0>ve}YIu^j7ieVv!5HlSbbE4_OE7%-OXc?#3l%(i=OlD7b__(OQOk%3sjz`R-XV!` zAx{+KYXsTu6&mw-;r%WD%Rw!lk*F=UdS@-h%0snx%A$0FhcnVD*suJUQI)O`)w5Bz zNg+XIPa&=>mAKXD;}>E+@u>R0Dw*s+&=C-OyOr(Ob|8rI&K;S&dqc;r$zq{@Apnc9 z1wh<5d^o&9<&XL|rNMw#6 zWa!r+Yz^xcnU5%|j>+w?y~o>xn(4a?kyDNxRnVT346c#4=g&HvhPUP zMY4ie3=Se3lr#md^sviydZ2;2d4)0lBY=>loQ&xSfw*ZR)wYWq5O7Sb=8l-#=y}r9 z#o)dp&Clipom3|={lC$^OUN{sdrH!*c&No%YC%rI8UDeWQN*!!jZd4ITI8|(l?bvQVb2*^%1fHPZBejs zY|_l6-i|p|YtP-e$LMRM^m?$qR+e68DW-pTh4PnO@7KGXXRguLC70!o-NLw)KUt0# zugr&kMI(e`?rP~&!+(~sYbbpb?HblqJ$faV%$OTru9QGvG_I3E*xV52w~_t7Vn;W4 z!w?7Uu z_2;D#LU!Ds_xpY6X$%PgdXm5JTd5mY>_Co&dnCdkHPy<$j-C1>*9o-dBvpuT_o3-Qj+q z(#7|yG-{D5i0zGzo2Irg zGk3elys984new6K6Izm7xL?lI%}JpJny+5-g^E2b@r+!RV;A1K<8jwfsfE1sc`au` z0C`w7=sq*%wvd7K59woE%+zelZ|Te&Amwy-I&Q6&@JBDhLBTt>N(vXthBe{WHbEMD zXTEKXci~Ek`yr|I?CiUfdJ3{H|AOp>$nM?=@eFZ?%|^m}orzS#qvi=TieSOFXkwNc zSRpWIMXRS1H$qX2e7O0oOdxyjaN#)7fH^*n$IDL`3`ww%Fx>=qEo`NhR!<(DzE!$j zSG2z2p1z^{>HgsN)}eP%Hk;J4BR6J#qMXaD;M%8QB)O7$iST5Lvi(_rtI5Hsu}P?X zZ&T9#tPof6d4(`^Y6*mr8y=vQAoRVv@^>|_%X~!c)w^%30;bjdzxKywv(PT4Du6``(CmR8Qw-*-H3jdk??!Mf>zvcyPjtJd zpqyi-8ip?5hw2%-J5y%6H2#jHc|!X+OM<0em`J&=QscNeb9c1cH((60R-xkQLLtR4 z_FYAVkxaFYjVX77h|=t}JEkDrz7}kLQzSj{_FH+9MMV>lMwbl{va{zR+f z-~4)Ovg}$?e|k~{3d1m(mNh1gSCrP*CC%-b%JfO>Sj7tG zckK^wfdW740i)Sn)c_p@p63C%=(LF;3`Kgij5huooQZEoPQ$w?r`QnuZ#GgL~QqODu}{PDwchB zawgD!QAOdm`Vz=ofG=Fy3Gys5ikU&p9w=-gN4GC=`y`RaF_uj#ifM&ab=ec{1~54P z=@sw|aw6TjzI)OaEvqP=pM7@U^pgW%P4+Abv_{ijF{i5`im$I zC>fQd%Fzcb{bEzYqmT@KWBnPT-$-`CGFd3B=SfEG(6Ufbeqewf*|5$0dIbt_Ami^v1x?PfpRDd8`qLIMQ-JGe`0h@{2-A2E!=sMTH_U%?n;DTiNomPf-?ukEJ%;r)Uo2JH>T~ z`|wROW>4-Q6vj}HZp|OS>1|IHmiVjlyE0Q4p)6oPj3fd1OjUNcK3%nGwm%Gj=ggGs z690ag%4M_t3G*8ddslsCDs!1#Wbvgl3G@BY@Fo8JgMF(=kzo6-L({XeyQ(fcZdWtphkynsParE2b{d9as!RmG_?~M{umwvqR7n_!02?ehOgQ%?1$XNl zzql{8<`8YiDl+CiLq^ARl?zyajivnvY6{<-Y-1D~=nb(~?2~L#XM4a&6dV zX=l%CQ|)!!E(rY}*3Je#&Z64?X`4czX*bZc1PBmdfj|QU8Zad(q!1urkubo|!pk&YXEWbLPw$?myjTZ9Dig@8SnGd7jRi>wP6mAg{lBk>eFae` zi*;!(6Fz|JgCrn$8O~frNJH<|7cezmml?xpa=zzNq>rspSl^Wr;KN$kT%ua}`EPx# z%vRQet8JAf_(7PU=KTp~S%M{Dfwf!l(w%2I=jSsWrZ+={ zdjcZ*_DQ(Ukw_Vvg1e*0YpVQ^QYiYce`PBG^X1ljWXbZz_OVI#%Y?vEJPV;DDaSEs!rj&ngC)P3T+W|KV|uRfWdd+M|0=!{?!B$T6HOfX zhWmdA%TB&=G|h)~^1f@{os9T+FiYxv*Sw|I3AL#;J9x>AU9*WtsHa<_SNB7~PJrx% z(~=!W(tK!4W7phEoUflmdO7b&_hrksaA1NE&mzO~G2uC{Q031d2peLC1l(n335o_K zuojR=w^@{^t%ca*Fy+_Mc}7La7yr4H$+O#EOnPP90j}%?$9^vQE|hcRnHy7E7z@!jVotEhYN*A(97#t7QdB8 zdtPQg$SG@VZS5NewPk!Xn|t9~jOLQg>2(@*V_jdT~S-3>CS63?&%B#b3j{{=8Cdy>YXIyh6v$KCebs3cSyqo5sS-zJ<{q ztWu?OX3CETv#oruTZ)3dd~pz2xm-1i1S#FpYCO66{ucVKt}>9H0OBcbbO#%FVKCii zVDcSnA33dN)bw?v>O72i<-nCot4%`dIL%X0YAD(A)mlKJTSSBP?ePT?faD_nLc2=wV{CL~kWw2yYD!DMPlo1ay7 z#boyC{Osg(4N1PPRPRpvl`4R7=WwG}%I;dO;VSos0(j%h(97x*98;+IIrozCjzxTzt+fl%bB&d+ zszx{=n7)`SH;$GE?rL9%(v4^X++54EL~u6?7Zc`U?Q&N@QTgHqT`D4%jTMU%Iu0R6 z)0K-G3JI;|wQ6xfY328^dU1nXKh`duS3+-0V{F9ueMQu)J1Tq|PCyf_%SIn8S^f3(#xauwfkm(E@)>DIabh!qH#TUMhQ#$P%qc+veJ=gjm_>l)1ksS41%F zgTxWRPJ*rB@~yQo?Ov5+_elr{hsI6M8LO_yK7JYc+0ymQ+z6#jZl%!d)N;1m?J#;J zB$Rm$wx(wvs$ugOBAVQ1t>TM(Vb)AZCr-T>#qO(~ z74(do8UXJrjO>|Vob={ixJY6nbf#RK|I8B0#ZQ0t06j$$Er&)4m-L`Z2^5kHV-&t33|G9u z^~BY`N5qaeAWEVrJqLn}G(5`MOBNtr2}1WBJ7PAEF|#Bnhs|Eg?fc`kEcBaNxMI+{ zB$pr4uuI{Bt^_n&R-S`&Qts}}*7p~Ux!k(XD`woU@?1ujqbPVNUCSu zv$2@&MoZJ^6!vPi*{Vv_tv>{f>3Wuq(H!+vRoy`%RJUBu%g;_opHK7*i*IzFA)3g# z>}0e@Ne&TyTMK-7(3_e5P=sbtX%UkXDiC*$m9yus~1f)=^%0b0(x5V#R@M0 z*{sv(4kEmhEb}LaNZb;13GLR5qEw;oieiKwv{cWbh0TJrIpDUnK{pSZgWf zg(+qY*x*}1OruK?L%tkJx^H?Rk$t7w8BAs;!|}!E6-1@#n`rZDIPgt2 z%uK83r`Vp=jUh~nYkZ5(&8$V5<22O_+%DSW_cxA}{(z3wl#<0;v5piK>u3n#w}nR7)MWt!B)PW4R|`JcH+o8_ZOHDhGRT;w=*2pF7q zYmb1P(0cadqgIX5vS+qlENHce16|8E#Ixo=9m*xh;0JPe^BpRP@_yEE(++bENx7QR9k5 z20NZuq~=^hY#=2P{?nF~i3%-E?$^&yJ`{wndFoL89Ba)iy<7knGO1_B$uLv&nT*ZrF3F_ppAE6)gXX z?8eLcedVd+`2F*@wM?fuK}6b@+O}6`bK4E|J|>aGRKm?Tl6?%zB_U7xkR?1A!_%YK z&L;FuAKK*~OZ`I<9_Ta~>uk_We$D)9`RQ8aw|uG<{vnxd@oHPw6DNUyo zjLHepRwa+EK4t;0&->Rp5_m~qHmlI(rjHF{G2k-XJTq@Ag@VDgW?L zpD+~aF+z=bh%s0VE;w1Zn~fR6!z-~ZoktrD-eO<4w{!%h)djZds8$OP3VMeXYIqq7 zTAjk6=L@>X@*c{6*bwzUWc|HK8_U(-%-|?t%^yLDhD7=;A@%jgrfTp^AxO9T+Us9m z@3Co|GF1JYBh*%ZDE78u%0k~_MyUw2_7oEo-a)B!G%KV{y*@0 zJtT(xWr|lu^{-Sa4xbop!sfC!(*)5 z1b07e4w$1B=vZP^$K~!b>r4|-#k#dc_PVwZXiS&ee)eY{LD)(s;598{Y+YvJ2b0;QyLKnR4(=abOOc)UnQ14)cbeL#*o%m3q$bAv%T}pq9veQZ!9% zhmwH<)DM``duLk~1N85E9G`~F=xAl+< z0}za*Mv%pjZSXQ>5wS~I;5ArT1YZ*RO(T#QhnyVW}hv0m874iuz0oGg*eUeq4xBXgT60u6Ml+tv1{P*jsnjD?!fNSYY0eh08fic+4~xMzmWIN4Z4h?L>qZtbJm*9|GhlPEq+isyf^sYv&^=Z zxdQvUQfass2?QOdRC&|0(p`VV;R>M}4V+)PVS7;HH#benO!XPCG_=~*T$ z0xWo2R+ix&$Xoy$-9!T{3cd|sO<$&{#q}DI`Dj+esq7??U|AtVy?9W#-@(om09kZ$ zUSzXVx3^6;Qy7+hbElaK2KyC3r`yOXJ=+K!;|cw)R0!yvi!H8Kaqja^?A{#|gVuo1 z-+wy2=2gx`P`qb;Bo1gpdtdkW)oiMrV2;@nt_*ax`-VB&zHXbMVkuWdXv#fiKn2wSi) zbSbGD-A8@m;EhA+rX>VfCmn`evF_$dXUB{0zE0CK)d1|AVUnp#;;p+XA|*4iHQ}Br zHCEAh)T;X^{{yIP$B_pA$Gl=Lz1o(a?j63^e^b~N8qRj%`n`p{s4z#zQ2TSgu(0*~ z*JheOlvo11H3W8rB9Ck`JLl`Qg8b}w2 z1mB3{?wMW7#!A?*%%&8E74u?U-TiE)B>Py;JRQ5WGi)2NWbiGsK*osIgBjbI{Ewh4PEy<_up5_a| zAu+IksltyB>3d0QeZSFN;i;>6f+3~nUOHs)jd|Fh<=1|g+sSk5v9K528NnspaRcC5 z-Uk;gi3YadTLFgh*GX*6qvoB=2WYMWXheD?$lWP?P#tU3Xu9v_KOY(PCz^f~t8ZSJi8d7W#7yeL?U`&fT={!{r+*ZLL_4Vm3L#&zDO{m~f>e%-wod z6x>02cl#6(&6s=rkxk| zd%dj%3(tUKAE9?+e?B>TegR{I`@}YlRW$!tmtru1SLoOM$e_@VDfHsP?4$H@$=7vk zM*MZk#)Z>P>=-?xVI^15e~A>GyGF;B$f^E~qp;gLsKQ^StZ!ulPvq z*w|N2SG+gk`fc`unDgZ)&vnM~5OSv^apjhYR zV;ub*4UQg(I~5$EW@n~V)HO=xH-4+FGOi>58LG)mnHW}Atn1Zc8=Q8+I2unq#F24H z77JZ3xTNET>o@}~Y;r3eg*@6(K8GA*-7Cd!pM~5AG`iiZltn?11+5`Cw>bUzEDQi`&ni>S3kCEYz?R1HzFheu7hxRBjs%aA1V4SINR4I3V-#RH(_9U#)JlV^W#*`!@+VncU@P6=JS$n%`PaVDH zL!od=XQK!C(R(uplkSHeA!@KT>LxEZm0ZJGUTHb@SOT3P^a&2|WaXSFFCyj03IlHFO2D%daVH*J*>pJ||M+Z6V8<|yWY z1$HGSUZXr2(0^PwI0Rh>4)8m;AZosi?yq-?M@1O;&6b!qa6DM$#kzw*_Rn*^qTJWk zGRswfx7Vl}xL-I7Ic_@5x*F4(*$nMh+E85py`jx_n{o3FD@H-^G;U>?8)tK$tyL12 z$srZaR=#^3jr8+}-6@-P2qSlHr|9hUrUA8?#jpBb|fcRQPB6x7Wr7A?2T&)W2 z7XlUUj{OO|UWfEeF2y1CxM4rU!wo`N>QP=nluTZ9PvLAGIrfRtigwRG1jbK+F+3Q7 ztr>>Vw1JNfWX^Ib8s~JK0)zSU zfBKSM2MomG+VuiE%{Dn4;dUG$3O4yveJ3WIdY?@$8aNw(3KtEVNtkfoB_XzBzF3S* zYP4PgZNWoz$Rb=SM4hrFy~;B9gk?||yu)U&tEC(eTL!UV$G3BH?!1uJXGui)B%+gr zsZDlY2_o9?`fDO=oIi8X(H<;+Q1Da$UVUS=`PdW#Himf098fK32I_P+XFYu{KQ zh9)}8;tL6BN-0intr(cn3iX;qVRk1^2+4CVZky@lcZ*XD~GZ&y3;>MWinz;ZuTcf$NTW$HYNABmx>*`p(89hREZ;v zNxt>Mw{b*eu1NZ|klq_a|1zcIW475?=?z;fzu**S#1VZ9fxg8NrHnWd0?_z;D>8QY zR;1UYTk)$LJO0Qf@^zP3)5&oo;iiALzu9~s8bV@S50RLB%!Ha|^9HFRZur5?H=Etx z@y#Yn@~N*OGt}iHxZN~?#?e<0Zm%y5>4#flhuC6W**BQT++8Ip54j_|HTqT5FhXCE zk-4HjgCe-iAy?Ef#ieyT1v^v7<_%~xW(l`IEW$HHYcgB>Jv{42E#`|aH#h0Y0nF_hM%#Ab#6__jV15;1KVXOcbz4%rOV%;l_mCq z`21M6=m${))Fu2_iDR*OHkf_uj?lofwY7a*!u^0xj*3~2_p1fXWpcXPzCRms{z}CP zdiP=Bm^;(3%mR$+!;MN?u&uyOi)sF2rC!EqG4I|dU1g*0i35`Uh@>g^6d|4^iF6@p z8r^;h!BQQX=e8zIROU9Oe9a7HD*hLNqb#9--RM5JZ%&H7Qc;b!W7l%EsD1qY8rfEWUcK}t`CselrG~2M7B#^&Q(_N}No0R%_r6Sd zfvd~D0JifGj?d|Qe00q_3ts5k?_*D#n^#%Mr*TMMC(Yyk=&L@t@m##hmHL{10_BuQ zZ-;Y@ZvMB$xk7x8Xu#-MW|2wnC-L(Zrv`hI3}o>s_!eoXgL15;<&f^*ec$G7oVeNL zU7xJA5f>}klkP(TLXd#tmF5tu&i&X>7Rw>lyj6oNwn(fen3SUDDtioUy|+- z;Jtw8VU+eOq;=c=gMKwYLAqMmHM*OXe#_LiVP?&5V_i>^G==5wjhGn|L<5_JA!D}< zUw+lL47jA*1vbbGxo_vZ zIugfrn4SKQi53H8A4js%oGY4bX0&~)k9JELKdFSc4q}#&l$KPVbf*%lVZVZt2R6VK zY7p8*|8PxwXLm}x4EWTQ@HeQ27sM-Q?v;x4lMIuG$o#jbijYFbc-KKvCa2s7t=J4} z5y9(>;B;8AUjr?uUZLl3nos?QWoJ{A0Eu^{BZXEaT*zVN4?Q9jvPLW>(TScN)6!b$lHfecf9&> z@FtRUr>F((f=8uzg|ud)mQf6-dAibd!1#9A7hq0PP&9RRl#@FxsoW6MX<$YFcCLHq zo65m-S5v+2D&FcIwS?ZmQ_hjdy>Ke&w%%?Og`F00y+A6xheb8BJa>#~ou*k#4ktJ# zq}**MO*6FGKR!f_*<~zD%Y9U9iu7@%$A`IPEf#l;Rf)rn{&GgAcxP!#tcsCIg8*v< zT(ts4>2wN_1<<+n;IiD&RG&S5;78W2Ao{jd?!XmIx zpRlbBGT6xUvm!T={kt_zD3NRkk2$0@(KlH5s>w0wejyUV5z9TMk0rJ-gO_=IEVJF1 zq+6*EBnl%PKM~Ka(Du=9ErS9k#5S7a1e>c8?#eJ*6OF;3ZBXj#fksiU*~`w!Wexye z#uIg&^$Ph*=Fs%fzQ>_`I#_QyrsmGiLkV7w&mk!$Rg6ODq2Cc!op29$;u;9>u`hkY z$I`MJ-Bid4`;fbj_dBHiLqanu3*A~pdzr)z-^jh~186U9*r0o<9S=hqTq#cRRc zd8=)HVib^x$N81>E957~d^knmPLnclCS0-Q5S|wJSMJOMNHxT87I%C<+@;#L&U2fD z1GF63SQBT9Yu7OL<;nXtIh9y$j9(J+u+^_JFWk4Q!|%r1`Dzxi948oHA36;E;8EUR z_)|h+-oBIWPrns0`D9WW=$3-s_-jHu+@0eP<7b8Oe0fkug2`d547SoN23pGwgT{kB zjmHS%#lmRk6mAismA=fwzn>$-^=l0sk$3a5;C$g)zBl|EPyh1=K*tD2g*SK|K0SiB z=_^=IMfa{Km$go0uQ?3f2wsywUeGD{r6YykANX>?_njA-*$lAX8%F-u`MOyQ2JbIl zZB^~ENB5U-I`4pGbTqF#L}hi?TX>S#b&LAR4*s+K&oLhNM+F#nn(ful!gbTh@dwZ}&d3wxd0o>?141;`5_*2JGtwvyG$`mWBBsR z&MU~)Y1L5PH!Jj7zr%7z61e`3{?n`}_nODT{Jme3tFr95g(Z>AWn9Xh zSDeMW$h-o^f^ue|%Tjn{JURqgcio3@-V(Dfonx&)Ki|@t+1K6sb++fnx|oeeiov16 z{+!pIOl87WQ;xN|r2wYRaW8l#)ofXCKRhbuROQST8uY^!%#?H8bbKG&%~y5{UUZK) z>U9~ba1wC4%|;Qff8s(38z)KJe9zn-arrPYi@NPwX8LpPiuAWQdiz#wgM(;aZ{3T?Vh?P zm?iV_&Pln=q-u31_)xg=MD|S_+#A-FVD%+Sx=TGzsKfnQ+!p%?+g7jt@IpZUne{bs z@Vjg8l>Z0$;+6MZe)7bteaBLDSKi~(riVubj|NY|9pth3qk>OlhCV8|gTq9WU(-7c zt2#Sw>f1KWU(~r?)4T+V3UwHMn&xXe|G_D}zo|=24JY}~-gOw`^HCQW^oKQfHszB+ z(jD+(G{2Vza%?%$`Q2kgouv(VFrsh%RfMrJI7=7@oQ4?&jR$*-KT-)lD2x=k%=`xT zzIFUw&xa3ELnD_DCVN_r7cIsw9N1R$eX`dXA;Xk`V%?ImJ*HQ9qoq%D5B8|ttNqA8 z>VGt^dG@usuM-uDe_uAh_4%r`o8b{AVIcnaCb??hFoH|?E+ne0K8CVg0s$AA;-TM)b=g$B1LuN2e zpYB`As2)9~-8zgUv&zL$g8$~S%)`yp0Q7u@;U53zuNr2A|Hq4~C!poE)45ZqzVvia4D zkZK>(KDWtz+@iD`y;)|i(FQ(NBG|Ny>6pe?)#R4ia4kO`80j$LdWy>}|AJipN%yfE zl@Io`@XZ(VT@wnnTX;dRj&L^}WMC?mxz9ZcI979qX*gE!**@7l!swx~t9{bq8AXe) zE_Oduz=w+Y%1+i+&1@T9M0D3Dh2ctQ&_^2|0$hAvAzrW##6`>5zT^y5CA28)E=27v zwY)0Q+BCEHx`K>cS{KRNf-_1rt5upkI@pR(emqTZqSZ~nbYCO(y7^5^>qW`)+!~+0 zX6J$zEW}++0Bx0}Vm^`w=Wb-iBLfITwHEi+#bS`!o6T!8c`0Tm^>xbAcd_T#Hsjd+ zB=l@Xw`V|w!Ivn2nOwBE`#c^*ht*+?_03UrO^4p%#uoSQ#-IWwg2<#~j!kNp0vAqZ z4=u8~>N{D(xOmfdOjxgemaMca3Rq8D15Ucd2Ee^il1r9btnOQ5B3bM|R2aVkJ;Acq z`n1Fc{J_H!VD|*63wgIFYwA>glTobQk@F8wOHk+^Ai*on-E>afpOjDYtc2qEMCjDI zPR-Be*Tzqtu;=lUH*9&j(UJEIKb@}E8F`(oPw>-O`38P-_?5cR(3(9>wM3&VGv;ut zuF72k$qDx%Pk40Z{V=@B557_7I1(5T)ry9EN03{=Uc&b2w8IiCx4ECE(6Hr&*c6Bp zl@jdd$Ln3~qe=I2{`xDveXNZ)Q$U*yFYd$`y`H5u_e1h4f#{;n-OPl?G50Uk`T20c zE4zr$uKA4TG6&w67?QSoo~0_{;fu z#J!T>Bq8>Td_VUNo5FtpnJaNs@ZU^{z2!3R8sIPCkUe8N($~d3!WNZR{m=x!fG)%l zB*Qvf@X*)VbNhwI6enFO2A$N5#ATG=kf_!<4#_%o|&(=ZKUn% zK!&!WI{K$3$@1VjA!#-w!)3@I42hst7#c>zfhoR@#!>vRPxolk#+6Sn)uSfJH^3T5 z?cF=mh#NM422ocRd`l?m_P%_XV74$+?LCHBfz;livTCn*TyL6_-uT|rP!W8C7Smf| z7zXN#_T1iL1KUeOUt@2PAsKdkNMB_;6Md7Rr;gc}gxBeU7W)70Kr$g-GQh ze|-xzO4Y~HP3@x+?W0m|9Fd)Nydu`rK8Dbg+qKYw+;*OTzriC1K11MaDv_|UeRRrg z@@WxPJUBtUA^5pGo0@vOnMZ5V9c|$VU>%ovX=&$)$hW~CZ4?Pb?dTl*r!8&a9hF?9 z^sxSkJ&%(z;X(Zw_zOstI|I+e_-gPSA#2IYo?XB;+5)VwmYAbc*-~x(vQ5v3U6IH4 zC&@nM1V2L9s6Y49f4ZW8Mgme*L~Cjx=MJJa4+yb%rc!%E=l+10zxoxV^o;> zcFoh*C2Y?KOod>Yva8=7tf#9=K|RI$#vaU@@=H(IJ1-sjZ0D<$osaF0ug-TXR8`;c z2+L(4Q}d?SZ_xFCkF1yvr6S^vd)9egDX9*g#1&ji13nnu+qX4%$i zKE9ZqY&(V3ijMB+rb;dyC){!p85L9=OR2Aof4elH5wSA}CZe0|1q9e)_Ox;g>8>4qGh zPY6%A%KGMGkyKw6{EUHq;3}(Rgm@AxlSZnPO?~#M){R!~dNGPug zjutw<_z2I>?}^TT!uJW`v+}d*st%rGDha(V?H#^Dg)dr#%nTTm@_JX9sJwUhp4QwJ zmA4_7DtrU)n;t3u=t%wLtq*?B4AYyLsuk-n=^Ib?DWS*Z1^*@3xduCe_9uARt>*P4wfzymYxN)n zQ(oVNy^Gk!ja(e=iO+(wRdU~ftU9VbXM^%$F0n%BxZ1{$PE%Id@Y(Yy+ERCL2Xl^$ zd`xHDgjn;v7Z5NxCz0KWcu_42_SvjctNlo>YagortRb?DfxG*8hzv!xJ54`+d&Xwr zV6qK;VH_9gVzbcbzG#u!_inR!Almo7itrGN-}i1-fY-}!KUMO|IRyAAcNO0WH?<#P z2?34nsD6kxgE$}uQE3pP`XP!8V&^qc9@4{aJw@4UCCq2DlJA7uq%>Zc-bO&9`$-Nc zU2YI}=OEsy6vXZQ5L*bq|3yEkO#5AE?BD&dCAoJlV?6 zcX|V_o;u3k4{;QD&qU=<=NZH+1VBP?DWfBzQElc3{ugJW zQ|DV*04Lo;mZ%^&okZ?MJ`(O}3(C(rOWuNc8GAa#9lHFetn;s9I>z?Q*astkzmDoS zxM#+GeOhUhb?(aV7)SaN?v=vITJ;iOfIQL)~&vQB;5CDY<;KxuQ2cau6{7g z`8#te3tUMcZ7kNkR@utJ1F$3x)7=}_!qEkS*_B=bA+4?k(pgS3Otz8#f`Y%YSv$>R0rgO$~reRuh*v0fP*)BpU2hQAk{rR z->Yo3h(>FcZKT*jFppze?#pu-VD6w-l38Mu*@fJUIAQV=_M?8`G-&^(>)C(aPs0gB z|9%?db7;FUU1Et@d(z!&gZKJZPJ4&%HLY|aThF@Shr*ZmfbD&a%)T|G?>~euviB?x zwEHrI|J&i)s$3*|QF*I_3BotT{@0%Q7ux6igKGEXW&i7eXr&wvenj{{_h-YW@cY6T zmAERP>fgVf8V0ug)i6hU|AGy^0tW22?zwyhKPGrh%c{i7~;6f-l=!_ zQ9&Q0Rk*J?aKC7H?Pnt87ku7c(7!M3chac7dA)BjwGH2hU0@T(^iAt^1~z#3!4M+5LkP6+ZjVgmTyxqAikUi=*x;=LZ*{u*SHkKCI(0*|MS{c2#zrjk;1azz0S0&w<9#5j4+SAhsaA5yRinI=qXPt$l z*iCA4e^3>)Gy&J(&QR&m{A2%o{h_{LRRNlCpCn6=w~yLAX~i$<^JsdLbP@K(+on90 z-Sx}eQ=j5oE_)m&?Y{Al8}pA}RC@fP(K9Zr`Ne{rY8?|Bkc~e(Z+E;qbLNb^*n>Kc zEkU1Z-~v;wQEK`GBIgCM2N5EuRg2&{Q6j1oQ5k!Xqxta4B9aM3Oj5)_L!f%QU4$01 zZreXy3h6-{Srl?7>k^R$T4rA6I5IEgvb<3Vw%+1aFw%FN8dlnlD}^Dy?))-~fI04V) z0xEsLW4V9^nk|Nfwd>NwP&`&$}9 z{rL#-9WQ)lWDJYzf?FiS4B9UkA--R0bdAbe8=ND2gZ2wXh;Om*MON0;!JBl1Pys&7 z^6p1hC=GrhxPkibJ&`ehcgK)tH|0)f5%yx1Pwr84&VYZ+v}U;n+Q z+y!qdKd(Q3pZA`J(2K~9;T=5$m!+|SPzNSBa>mxR1(JmJ>&Lr7EJ=2zLltxIc@0V4t&6m8#e-$mQEFy0WJHG8Rf_x7gH!JF%&fW*uf!ci z0cm8=QxsZZq;EAse{)IHE*f18@6x&zDLxQsI=TsA#_}NfCG&C>PqnRy4Nb zZI+ixygF2I8!Hm-e^@lAY3o{>P#vE22q@c6!nDD6hy~%yOl^7zH2EB}r|m#Ilst+- zwnVwc5^_4uicw_h@qWrM0JowgV%;Ckb*}kVy!W60wpWut8t2nhA?TZtR!}Q@4e|xn z<)v?al~F)tBBPUXfzJ>qjqEuFT5h27v?xbZ%}Sl%I7TBNe`!-;rH{Q`c)Z&6B?}bt zZo@OA+V#UBo8EM#}Z=US>27HZYkuTX}?eMb^qlGma0ePwy3 zdHp#trg?qDk`!oRRA!9NpSru|ot#h0S@0<7UYZql{DhmvD=naJ5&~6K|FQj}EI7aB z6&*7;&8W?#6@7rH>G*(IWPtkUZxthHl z)1LS^I@ryS&t2|z6m?wE6&vSCG?kVz|-~g5`nAv#gTYtnyU0b2~&}j>*bSS=s!aJUVMOL`_*qpl5KUcicw&oWIKF} z&*o&iggYyTF&HlJ1Iw1BA#+vm-c<9^$GJu1K;g4<4tgqvPd! zrN7+{F*!-LBIppl3fui3xZW5>S;y0`YSr+9Q-q_-i~vSZKEcaqA}`PuTzBgwiDn-V)m3HR6@%=-k;eY%6wE(s?Ip+6i;%vPkfh3z z>6w3Lt9SRLO_~liV3)^{z)Of{Y$&4>R7FIW=!mMRwf?M2dg!a}lx8*+j^$s%9m0Q{ z_s@+tyGa(XAOD#Y?3DjZ`G(aY8F{|x))O~W{~(WWlDA`G&o&7_o5AQbV%@m^2%|Me zk)p}n8>V2Ux2`Q+le>7edQ>4wsv1Bmy~Kr<3#_LE=an|a}aV}z}c<=5SGXEeuy>rB}lr82tq>W za&uL1a6eG70TuKEZ9PN9d#5oX%sV&uBi|umx00aI{fYpzRhqOe;~anIhQ#`mgs~R) zlEoCEj<`8*z+udGMoklGn%tV9Q#5E?rIAKFbGx)(_etgKIX~Y>o2>xW4z|PWy(KWc zr`-N6qNtLI?<$`@>AsnWO3@5x!X0TD7Y4u6h$bP2nemYJyq0w7UEKb02LIemG;^!= zvc5x^A@N^DTAvGN1brkl(y-BTMu!dO7^UmUEz0>w-X$5b+3x+^X7Klr+BY)io24qs09P`wer?SsY`Q_kD@@o*PV z&Hfy3J|HM1zBJDo+FiNM&0)4Fv=uGs2^y@-5%G7Z;BUYUh!e?n&9 zGIh~OUYTW=^Q)kIg$#3fyvt;~0gIJtw;F;IZlx#te>V^RB8eI zmNoQ$&KlF|=4E3LI8)t_!p&`v&4M>em-)IR;W@<3m2|LV33He!u*30SNdHrV?LpC} z4rMPsSNdO%bfqT7&_H>`I3y|3BedDSXkMeLR>be1r7ABg7{Kea=duK3Gpp57z&V z5MP1tMdhsvt`WXL`ri@aQ`5_pw>CIh_`FtiD0}fC_%~i+8N*Xv@J9r-_v=&lM33NS z8T@|<{@pVr&HpQV;`iqt>;4US4{j5-Qu(aBl!4oHy}dgP?GUEm@5k67jdn?Ju&CK) zU<21Tdu*R7PYIQj7jWc_)yasf(Kc0t>Y{ZXd z@w#{22>78AndUecs}imDJPFrZd*Vl|I|UG9SDDwBuN)yiI+VL@&jmy4%lFj2w9YD4 zng2;&J{-78gOk1ah6`{%##^Y5K!Q&Q-NMfT>?{>v-}X0pPo zm$i8_(rcy;-mIS8*VU)B%d)#aTzh<~J6Z;{S5zy#L`yu8KkaXj65akB(_xh;tlI7m5 z70@3Q=F7i^0M>s5`0_8|8!3YCbb{ANJo`~UMBE_mB!CrDAl0~gln*@DDvfii?PI0I z7vM6FP_^gcSn42)c{kwHFY1wCxlq&{ojTF_- z^=DgQgJ}?E>(W+N=84eC^%~Tb5pUG#$#Hf@=VeNR0+qx!g?!`t(;gF|cKN7|>7=a4 z9FS^FS4yy-?WZ36R#&8_aO3sjWSz6s(I1^=yma|AQieIe!W%~Yyu^vKW}ao~$HtZMqs z2utHd?SEKkL7zW*n%;(ffW4hCFz1(ch6Ut%EAD1v05_=0zuyf1p)z{=?F)^Xd@L&n zEB9duYk|^mSA-_rXXZi*J2%XVByTT(lPq7V-NF>t2$Ybx#L4^O{E z3U!{Ug5ck2V7Pj7-vw#UEP0v6ef`VV)el!$Ao!kh?fM1iJ7D&+oB7u0JMTQn066)vj)1pGIg4+1WrI607 z&f}*=h|Z*@`ON{Yl4l)1ElP^{$sxgOb*ewYGO zhUgnYoVM6`38c}w@? zN||U;GEBg5MKVMim@Jx14hQwDfoqaslybb}Sf=~D;3xbKS0=+G$%N=)a?kVLf&8Lm zn82~_%i)1?rwQi;)0MklkqjGwdF2>_A!9+DW611*i;`h5MDCW@c| zGq_s7o2^w0cmFAD?`^?pf_=aJ(J%?07sy#ow0AYK{u0YR&d@iXUrBI}u=owE;q8Y) zfB8`3)8{EpZhXqX+LFH1NKQRSYB^FkhN$Ml6&?*z4N(fs9X_!J_@1B3SJ20&v6D5M ze+if1KN|hjcD0sku&`SGGd&?|;|Zu|oR_t`c_L-hA%AyYLCyBd+bK8J0E&pNSM-&+ zXl-Vh1pE7Hp_ByM-~}u#+rD(0CYVA*x0$gnoqK3%a)%?hq|c=!J;jg1bc}3hH%Tg? z&Am_qsjhQ_xigxzFXRA-u-)gS1!mLk{Xx15|5^baV#fu7c#!}Pv4(GaTl7OLAfVAb zn1j$_Zl(c!CkIquKws+zTGt?;8*)JDGyzFBF9%Vhj+4?GjkBj z_~!gu4nm8$gaIAW4^(DA`{jVPpJ(Miohn+*Ya}W=0>bjA38wr6`102q#1l&3H|`1u zp#1$1Po67?y9j^;?~Y^CpZ>hlf@6ZoMiX9_EjI zMP8t5Fk9SLri&!G9P4hkfO-7^AC6W|E$MB*V@F=4#D&2+%{6RUa}!7n$?5Q=++=(L zuYITUVQz6IHKo#1W2{I1+RJbB2{jK)<$E13JQEEXO4ocdjc1 z%7|E(DG<=3G*N@!?hlp?3O%m8#r>I<3TCWhce+2Q)%s20F^@gEYm6-b} zQY`QRFIt<-M|9|d79aNYQ>^m*^#ot?AE2Pc3&lHhU{7eZKO8cDJ*=;6O7+gCmAke# zu${ril<#@^PWW%dr}bUuziat!(|4u+Zs5CF-(`IB-oShI1$Q7{>3ZHjTYP2rF^A#oufnvy>7MFbM?ByUeDk)l}ab<<3#_FXCGyJFbNTP@7aPc63{Gr z9jn(`d;QzV2JdDl$!mP1SJ~^UdR=6%FY@XURoeFx9%OT!KpwJm_Ii(A7uf5add=AD zZF+6C*PD3N%v@z(3l&jpuN`{bVXBjMy>7GDEA+a>UYqs0)?P2r>q>h)Q?D!Rbt@zlmPJNac@9U2x6HPAfk0v43 zyqP&P<;LK6+2cs0WzK~Ck0Fsajrp;zn>1Q}1d_5lCAY4_Yzu`UmaHY|^BBm}wa_-$ ziiwt4#NczBFNOx6EI=t&xc-Umuk2hm7NzLp z#N@8DOdr8S)H8ondU;As^`o?Ui6NMibsXc#T}nj4y-nuO)8txd6B?8l1JwW5w{pLV z?v5;B*#CmB`|QT*!!w60tUf6-v97wL z7n`?~`#Ub=ZJN|k56D5sJy8bV3soD=dTmE6R z5~ zmmdpF3$h-(0U%0K(TZmVL>{uLO6S$-TC)N^DOu!gSyT@fVaEoP;GoH0^b=4C+eSz%!THK3(qk2zTYqQxnk8o~y5g({;b&=OaE-pNa zvIpp@!Lt4sD^HA~Y*CWNBAK@&bTgv+i`5KM2G;=)#|>#)dE{k|Z*^z*DF<)-rD6Nz zjzD)fq5i)ZvF`dlZsXeq1ZItO?W0@WV<7a_Gp(?voa>g}BLwzTrjqV8UZJ88(pz;; zVjXSqIisMON$V6?z6n&MSf__)QFy|J)16od{pda2yJtq*Ff5;esnE0cvsAy>`*uf8 z)t}8d_pv0!)Zp9Yq%dhyDN^ZG zAmr{uAAg0}>0BNWwMHgI?pjtH+C_-tq%uV_$nK)rAE9z}Z7RP}37m zvW8;h!@RJjDzdEMex^d573R@t3vX11~l-5sq$ThjG>H@RC4tf=!n zIc2J~pl*+;?`YayQM%f~t`5Uu2tpRnW&wrgckUj&;O6L}Elwm1{#&zx+0cENb;}*O z`xurJWW!byLzFD_&7aG3ok?QNYy0yo(q{21MpdM{w0KSMo6D!vjy$A`C!~~DjV8S6 z-oPS$@&Qv%@Cu($Mh<-4>C?|6GR@~U|2c=(4L;p6|BzJzff`+Ss8{n?$G!eh z?c+3(l0^NH#}5B^OAnl<60+RCR`IHliibuc9@@$zO#`ngGOu;KZugN3{UhJ!v5GG^ zv*2(a`mTS(ePopft_HZ=hdinH40}--6pG$CP6^MMq|jKzYn<1e9?LEtGMkWfKBUNF z(b9-OjmbciEj~?SKb~=lQ@dZ(ofYn8`X9UlO{mVZXs_z?6Zdd_dQbWiy5&@I63!`)hscF^1Bm@ejz)Jhu0I&=h*b*< z{>aYSNVcs0RTdvn7U5Ctb#tRE7QvUGOIdhlIK$G4lZAHO-dBqEz!RO?zAVfF)pHOR z{$;aS{0wh91^ltaC#qGTFDMWG`vAa~j0k*4CSM`)>s+FEt9TJ-|ue@;FlbTh4& zF?z>Q)|C|3MqF@P5mapFgzfOFA~6&J6P1x~O}i&;wbK-ls)xL~PbHgB@}CP=lWxh8 zMn~|n^7j^!!)(WzA=%L-#1T6*BL(+zC3tigY()N_hQuEie$S63 z=7=^(2!EUPm=Wk}q5lIz@p}Wkwf zCbH4|p!16wV!osdnn#qukQMwccyjG#ZZJh?8w~C6_S^nd{oX0O{&e0lo5_RCg`nPI zO>$)XKVvAy)C<2cMrQimW!72Ykf~yiBQj`He${(X-$U~0d9da9ln%xSdBup>f5}kA z_@dAno3y6;7GsW9CU%4R2}Chs*0Hp4zd6iC%sPbGIwb5T`IPve4gAlsJ=k0Jf2ZV4 zZ8KVj(YmI1ASL$^1tkrlq{&m#fK=bWlJCp`l)Qnde{Zo-GNSS9q@fryN907~gGq5J z>=I>BU|9@*{E<1&`^L-sTyYzF{7vwzKmSuxtch*^O-8}t%FW*sBzvFX4*%1J%5NFC z!uHDAXilSh{jOYQ^Of0s_{iD2^Q%L)*SPZY{SP&8&?M~M`enGqn81j$)~;9&CJ8!k zL~YDNZ_~j3Vgb-^T{;qB%0p{46Wk`~9eV+-l|*oxmGwqsldGpl;O8G z53j{Su$5i4-t8kif9v73fC-ihezTE3(){lg{j&u>B6}&ubDzH!mqDrE{e@k_&Og@m zn|**b80C>Uye&G7T6cnrC(t-p(XW8F7+p-$T zd@`hbTd(XQ`BwUqV4koiJof*){Jb4(Ir&YxpP)$i>;He@?-KrKewS{?E{lo`&PGK4 zIGQ2XsRf@#N6}kt1dd4l@P?452)e=-Zv^&gx$#oEr(g&Fddm#S@cWaezdm5M1xH~c zr{9m)PAv=-2J+De^Y`#u1z#cfyb;0|E?#B&tKfA|^zOPu-FPJJyDZ$F+yW$$=Yd|f z4ROi`Pw!^KIo$D4{9J45N1RspyZ=Vm9#)xJuJ1?=MjcZua!pJgBy zAGv{`U-O1?tmkVx%&SZhT8+3@Dj-vHqUSRb`3e!G%Te>wX5*OyP5H~-0*ja>Pg%4( z`v6t}etRm6MPh8myDFPh^KVj`VreWELQcBk4UX3zCN)vc3@6SJ(Udnd@ zA3*=)4Pq7j8Dj2Os4M*RPeptcB}w1D;eL=m$CdVX`F)Y(xx4&m^sfdFN}~1TfN8 z&FD|M)zo`WS3J!pYrGYFwdXbUEV28T*-2YWfOjNujAvt0y8cz|QNIdWD+iuOd1Z4l zI7CJ8JCw1mjf`wCZv{L+`(`D>>p+D{^?S4=ZWBNWw~qg|E5=4gXfTy@e;V)W@n_Pe zthJp3c1_L;O;B|;Sjyet^9=WZ-2Gzz7G3%^&pm5V#T5PnA%QDGgr5UptG6@^X{I*T zhBv&W+-(2`No6`l4dNwOlC3M&>o4rp`r`&(JLebB0<^{3&R z!4dz>#ONZ(?M4qyTs{|17gB!DNA4Shs*u3lg(@-EtfP1VOIlcdDkY3JA!|ECy1{v* zR}-R7H5U19f`1!bC+S)lf-zon-zH1iXo+ZEB6w3xbhNtBjBk;i;u=LfDZj}JZD_Ei z=j94)j+X&ZLXW=?MB$>eUNPLv(&)Zvfja(MrdsWr3_uBe>9GF92l-5AXA7V)#Pw$@ zzvZ$^`jeU5L~#IaGI%LL_4;Uk^sg0-5r=L~EXo#0C2$Y1>_0CvgJm`qRpCi?7L)E~ z#rTa2icVjTvD26K$bt^&Bm3ES2voA2m}^|bOUkucQz+u7nKw|~`eF5|N$@}9^%??_ zF5fDoC^%mfb=eLBTgP__tFIEdlV&iH+q~PaWV;gwBywqsKj~Q4fdKigEE~u;fEq$z zRwlg??7r$WHYeQWzzVV}zKkTQwigNwcn-V6be~%Z&Fh%Jn^uN2x-R~wmx3j|NdFe_ z&)vps;TDWjf11aCb$=aol27Q|g*E@NzwcAmf}Y)VZC%k|OZrb9niHZafCJojOz52E zQ2$LYnHU}bq@f3=3J3UM%#)C#8iW0X?YpUfeQo9{gkXs#c{&95`b5hbj?~-t7XQue za~-$MPidL@wmZl2p?_Uh%Ka!O^98EAN!N0oJI>;YYj!T!4oE`;QZxwUU5W?D)gI(6 zE35~p$Ds4=nvJop^{5kiJ~c|)Nb(FE`A3<7cKK7=oc^c<2W-Os}0(|vMj1UgQ}s-QSMoA{Jl2}rAZ zRfSBsQy93+At7Ew2xm$P#(Fqac*iGOT`vh`2Jky;$cz$lNOBK~7TwBwWq;ROt{~7K zt#mZU0yV|25SVf+6qJcqvRnNq0Ilwq;0$wJV7w{`Zbs=q;kJ=$tm_2-Ayr7M>v;d+ zM9-Nr*Vt`y0v$S2A~uzn33bA4E)e~N!MUV|JH_b)#cgzlS_TEdNgj;^n2v&0n|HWT zbCqp_b{yX7{sXL@>;CrD8w_1h@HW~2lC4wrB%4Pv8#(?TYwrVCbyffW4;VOcaAyvj zI&|gCDbr9;hk#8*B%{3dj@_Z6Qjwpx6N~K5Pzlj(#=K0a50!nQ0-?e_R#c==q*D;E zNXdVZT9KKZ+fcE{MydNfp0D$M-+PDjb?fuX*nPjx`@H^~*Lj`Sd7Xc+6DV84T^eS4 z+-K_vvz@POGEbH*>BfiI*7|H30JeMp=F5XRtK%c=J4Ykkn}_IPqSzga$Z5uiLxCyx z2U43d+ufVLXKUD&l4%I%t_CigvHGQ$9G z?HR_Nk`EKbM@Lle1f=`8)}AzJ)5OSwCY;nM7{ znMOc7nz(7HZE_tX=g40s@-tzdli=Xv&Y=+KZVyxfP^>*oPmOj|1S&#jTlG4A(9Dg) ztl7rh-6)H>HcP8F@F@{gBe4ee2m2mEEjK83Z)JTS5qI-|0+}GKnX%u2nUiOpPygU$HiJ zl>3NDoc|zK=E>Fo4}6Z)dB0 zu7oT0xvbT`2<4Rf>rimg^JPkK@v7;9Dw5{IWOg+KU6x}fIcUG*UpL;KTU2lUKQQoD zI!yK8kI*LFw}fkJ>u&KkS?sB`=tkg#%NUZ9X`HTore)7_c47CSp|_pUeqG6LbfNr)3E49Tm)~ECO&7)B zmIE2g7h{XhWh_g6N%uoin%rE|E7Buk(eF#^t|G$*WjM_;EVc}5av5+IQtnkW--MTPx0^I7vS0J4cK{h{ zzgG;f=Y>x35Z8stvg;_O#ygi*&zI8UKwg5W8B@tUkNcD-jw|45Z(!_ z$AF2zVvok|V3(&1iQi#HlhAN^?B1yV>1?Z1LT5Sm3vgfZ+ips3atl1dnFJdvoAjH7 zk7X5!g(9ys#w8hg+jaat4)XeYYAVx7V_@IJL#HBQ-tn71ybLvM2Sv`3zR5j zRtGj$j@=iZR#7L25o(|)D=&aL6F{u}KK_Qa)WcS;g!|$kitEu?iDPZ+$#1nqOz>b2 znM7eRa5f?jhYiba#`C1F!4k&Ww5cmZy2Fsx3n@+wELG_q_-CZ3TsyMKB4oM`A!0es zcnO>K!Yq?nY%HbfYH<_Rke8o7TAngI{<-i|)O{^Q*uz81+@=Qiu$k?W?pX++BH_NP z9!nQfU>Lv3v)s_)20GNM;6vl1u0Z#WgwmSMk$Ut;t99xKuyOZ7Z6& zQd~q5ciGQKm&+%nIiz$bKohcE08#Ktav$veaj&(Cb5csZ)R-tsx&w|_wNy4WfM;fU zxcj?zBDxc9P?+IDU8*^=)3?(^XPfCo!?rey?(_y5hIyP0Nfs@&H%yX5d6x6z?gm-h zeaTyMyzBNxCP9KYMa_LcGeCrhkd`@lHup4a1Ky+cc|pc1}J=7 zvZ77333rInOqbqN+EfDkxC{K(AmNUr1bnSYx(DCns~-i%-4FE=7ROyH49l%!NV++C z@eM5Q8bW#mpt4 zSFe~owIoAyE7{R@5LttyJLbyu(-~CUvPC;FH~ahaUS~YsIR5374;9VcNtCaws00De zv#=I0F-Xr<{2Rx=TK-k=uhgku!!%d(QqEYW?W+KpvVx%w0{S?a=XwQoo%9G1^*#!V zahKvReEEoakE9QNnaWr)88W(>#<<&ig;kJ@STC-mt1wKZ9uss*!5`fLx$;UGvK?<& zU1xWaU2&*q*foJ4VvKSB0S%vLJ^&MuE`$G>&6w3 z9$0(>X4pm`qiQU3QTCVo-FTPB(eHT296%A+as%t<9C57eQo;DZa{Yv98Rg6UQ6Mv) zRP?nhn;)Xn>HR%lPkBT69W6W-k%RiH%Ki$C*|_vSk>5ynJsurM%Cd^fw6V>Q^nd+f zq-#cx41R{-7Y-PHFCDAFmkK^TVEFGu@H=Sn8|Mueer^Q6RPb{L41a6{KSS`d2MoW9 z&e@k=@G}Ms|Ah!%9`MG=1BRaw!Ks@67Df2c!)}a_*o9ZT`q|4<{@-{Ny4qj zL-@*)p)R$uZ!{<81?$^&fzZPKM8AiI@3?xy7-mXIOg&d5W|F^K9Mgl=Mq zyYd`F^Q7iU!Fs2$Xz%M$aay-b4=N0>n>6nmy~xg-xOHKcE9zbWAJp{f`kz?Yng;^2LdUP7`4}Z6k%Skch$zYvHd^R`oa^)UAn!vwG{>dYfcO+-1jDPZ$poY)$2~fw~M?Hc6x6gAHnT(Y8dEOwxcsK^D)ASjk z!cfKf$c1@>y(@VaW&r#1!v1%Y;G;;h6S6v!5n8|Kyk^R?LlN<9m6^!n{@my)lRM-{VPnWuITeBa3AzvV`eLp z=T{pJON{ta4lU&kK`n`mZj3QodWABwn$KBi0JUf14*vn)^B7-}hM)w9 zgzM%KKQ#MF13`N#Sik#69(8&|$~|MS6y)Y{L7TBt0oF!$vjn9tmV=u+Nl#jp3CDF4;`93Jg?L zb1(L%oCDIgiU_-bBo7697*D8$cQyAiclbT^d12}pU)4>)^QP>t{Ut2uYX4GFgy0fbeMKGmiJQ|Y7K8Qw`_didxoJ6ejaxJ*li zMR4spO<)q_OX9yW*aRc2e?qv)?Z}E9E}oGzn|w}Y^NhE`6VP5>x8aWKX1CI&)Yhrh zv6J1GfuO>v>dzT0w#x2>JM7f%_h=$jcf=hwmY5&h5ogaQ=P!vnY`9$xr~M|^!Hdb@ zF!nhZN0s4u`{*F{26@kJ81$``;Le85s+?9itmSfA`6oxVn14E8Q-RIVJfxgmO|n%G z3C)jy>f`P%U$f@bGD-Kr59S=!n_1RvXaaT|Zd;N2Bn-LRX-NogDr4fzZ&R%Iou$Qs zG#S*dwO=C#uli*jbR5|EsCQ4iusGIM33wFX^$T1)M$4wxn2^PN$7vZPKd-+ISA`)& zo_T+WPsvHX6KS~l?WxD7_{7@#Mz_#SKfyC`2M zQ&2972{+{ONN?|a4s8v)$r%(X>Hf^E7bZ?3&Hc&DPIjdh!Hs-zy{q#CsN8MCrjx;XMO9r)YMpQ1(?9Y@R-Dnx=pO}s! znA@#H@4@Po7o|(|`X+foXQ2$>gj)u1D21N6lETd-82(@v?{W7@W$-gpYe`7BEAkL& zgZNMmqRt?uke&fo?k6txESFmf44qFX=-`b_mNwbXK+gV{;L0rbaVG30G=6;?TjC(IHJu z6%qFjuCjLt-$Hi1_NGq@>YmZwnD>fX_3JpsRqD%(v8EtxoJ}@HO0yuvPDe(xiZviK z3?QNrGTj2o@?hNk=Yp;i20c@3!nx77ErU6>>Ci_WVg4InbV+9gGojFZxVzXFiKNql zwXaN#^tL)D#e}Q+qllGewQ5c4QxvMpaS6JoAc6^6rK{qhnx>%z`Z9K9>%RoKUIq!v zyWK}Bm}`57!10^doFk9I^HCMbx8CIYJ=KJHXi4{-7mO+@H@PT1O(-dX;_X*};8%1a z-G@O^p_?AC9tB_j=HnungN;=)u$egH?sAWe#$diM(G7jImKxco?Q6*uOcG74F23Bm zY%-m)5};~!6%>Vx^o zX+`d6O2FHoU>$EA(^ylqB2~05D&e)17T1+lh@Q=gu2bk9gz;Ri(&W^XwF<7Zt=NV_ z=_6LHG#s1#s{$;62;%jj1s;S z+eCm#y1NagEHh;X9A_RM==xRqXk)J_6>Pam3^sUl*_UK_d_mIGkriPrIhf(}OlC$o z*id8~F5254>2AyEnGs6&)t?9!0+MuZ?Y3IsvNpOgRaledFIJ4AOEyzqC2^OO#?kcp z#$_y?v~`hoZInP)O)v`D=Eo86bOZiC5m}~} zXW}J^%=F@9CSIDUFVjYma$VVdHOS3HzTt3+Sh{U+9DoRFT8RKhTeC|rOABUZpFQbq z(^%|9Lviy6ck4BIeAl+28&Dw(YVYcKRN?A{`m+FkmyM1Pj*&vN})p+8ce)oK;1H|WnM{n?^FJM?EKe>VGmVA(>k`PlEMDQ_42 zZnmE(!H<6v9IpswlP&4KO{xd0GO#b_!FJ!IO1v!(wvvRTYso>Rd5^n~=OHE=#LOIo zLPPGoQ9$)MpiR6JM=KAsjD&raa3*re9ybvmQkGqHS5bo2W@q-+MT#a?4CEeF@Knr+}yUsk&Oaoe&0}5&k;+h;p zkwILRhuC?Yl|K)$h6Ku=gP6yA+?|wz5Fa%LG%63Y?^9O(9MDeQDL+j%6!S_F67G*m z@a0b%#1ka=@=rI2hw~8S2JwSD#8dM{V`T(k@*s)w=Yf`zkZ=q0K!E{W69ENN4dSvq zM3q5Yl!tiZlUDv5#8bRe{yfAw5)!T=2O&n57*KHzXtn|Edlv1Sz+=ONN0B;6qqg!mXo67~O^s5H6xvV{A+61@)WyGDSI zk>F*pmiM@OAO{u9BY{0~Bm}a%W@|ib(tSAxR%KwH%YmuMT6Q)5g!_a(c!Il|Mey<* zKs`aDFJb*8IHu!%hF5-LeC`PSe*_7qr{r;6r?Ml)W- z?;zmacIziTX)vXkL+E-BCEy(+!lKJI;|NZPGi7|Qt?0|qJ0x>q2~$CvTc@aFD@q>= zp5R_XQEPlCInm%=e$qO0O}$-~a|$cm#*%!7j7yd||)ky`X33y1T=>B$^k2xoa6~*JzHQGRaf5o@#B4 ze4>>OkLq@F)HDLB2sRn&UH%hP%j8>hPlax*?NRXsQq8=*@oW5*V5Q}r&NJHwv-jvb zvWm6erl*U`gL!;UxZ6E8Zg74^8MREy)PDLza8=Q6RsYOpuy0RKw&wdio>H#MJ0WB% zzrwqN&sxdC`((HI7e3cq8O`f{H%u$8zGaK#x|z8cE_Svt*M%hncdF1d3=7XS86T!o zqZFd6KA}~JIs8SSaa`3Ic!y8x&DJB%#LY%_b&OnYG@h8iU`e}qP|_9AZ&|LJ#{_jI zjTJ}(4AY7KjZN1mOk+3_2dY5FnRhqn za!sCT`!2g!A28Y|T)2quOJJ2c{`FMzc^<=Zwpgi_IO}ENrd}7F0=;UM*{6}hsi_8c zt)b#m`f`)_G8}`FKnYmC$_dWOGMuv^Q(gd-y= zc6KyzWf96a29d)fK5rfoX;8LT0h(Ei3dNp?H(!`^*_|f5)|)GsN)GnWV2C6u76)@E z>jB&%v`QE#eo=NS7&MTABaZ69TuI09OugoJN;?LP@5;5O)+zEDZ8KnnO+#0<%=aU! zsztIT|3jmvmhJL}^VrXZCXV*wmgd1hC0P<~gjIcM?7s4I{1-+qXAQ!U-UqBwJJX{F zQL~f&cHKjUnsK1~&$xTikn8gK>e&6$i!){DdPRdxCNsQlaxp70cM%Lq=M758aZ8|!#ep!@Wk#ZMW`eaK#pL7hiQ8_y0 zYVA{*eX5B-j!L<5OW#8giGLoY6MXxP$3p5m?bF|BiiT{MQ|?hq zUvBA-Skv{?36T9g`?SD5eJ27Ln{r<=Dz$#Xezj_X@w9}(CO0yAtBG>^)(*25tjuLi<^9JilBr3lpmZaSN zU*;LPV*wVZb&3X3MFb4Dev>0w?^EccbE*24{@i}P@q$m2+{_%&hnR{DddW~pYb=-W5uMiY-fhf z7Ye)BqZfl`i6-ebvVX62OSK~BJ~$6l2GbPG<}vOr1uIl4{Iq+@%`p~q>Z7D6J<+lT zGc4yga$=s!u~lW3u2%d5CHiR+KV%(lT%xpx8zMO%qcc8#GN?90f2Pq;(<$eEVPYan zG}Tf@hJ@Q{892Ype=G=o-m;agEg_qgDsYRXG2bZ2HY4SleYW;4yQGFF!Mn-j^&r@w zNB0R&xOK{QsZOlz>zWSr%&#Cr!hMJgnNj*`1xyA@4DL)NkJzq>CZnGS=98Xu$CAEE z$-$>NCmPJQ%$G~`X)?9aHO+i`gqepMI%nnQvphO0VbR#l@nnK__2kbbjw;r4W9{FN zlKR5NMJxLU64VHb={K6(z2<{RxXh$UQG)5@O1P!IX=b+=xXtU-8>^q@L&{xa6f_xi zbleRiDO~TbHO?qfbOmIFHeb^4)+ zXGk84#^&NtaCYykNNOc-XeQc$*Dk=ctP6kV@%RpBhtcGC>rJLcItEY%Eqa6)(yGv=|}oDl^G>g z@zK&G;CYo?OTlW@BHaaCi{aNP& zQ)6$K)IU+frZVzv8(dkGzRk23J~mhpPY%}A3GOf3$i9XovQv#i4OBg5S%a(N8{Tf_ zl%0%yx<~o_pR=pWyN8FHo$#kxr)aJYWAQK**Wf+{i1e!%NA}Kkk|a(!lm zb%vptP-mEQ|De@{eWW@=9IwBbqf;JrhDT-M<;GXi`og$-#J5we5?JF_XGkmuOXV7g zJzMik+;J0~Axu0$+H}g;+B5VshxAsrzwz61VfQ6cWn>!MGd!uRraGuv*+ogZwyCDN z(y`iRTHQyCFLTL%L)k*=rKY8)dFt72JmXkfFbq{&A+fU9f2_KM=Hg^fOwQh?X(@8* zHDC#|3~o7IB%6oFgPzucEZUnEWl0~(N=~eOp)Pcw*J~b{2=*4_ZU2})%&RVIePrlj zHf@+W$o!ovVevq2AGvsc6({X^%gy=Ki!y)i(>6>@iV?_@&5P4zSuQAyO+1H zJ;vJCX}hL55J~qFuSwYzqy=4&ZgStC%)v@~T&~Bv?6E_SvR6%R5s$KaRTIzHgD@7I zv}{$tZ>Dq|%U>ViBfjnYe<|k@+9Ou4e3E5cxGO|3g*-Ub3`+QqPVAdoR84IE=+lW= z|Hb)tI1J_+5370Pt`Bl&T%$W5{Jcf}xlL zifJ5E-cokU3s@!2abMK>^S91xDd!HiinKo}-Q-pn>Jp_byeDK@Wie|>MO85WP{~lr zO*CF8p{!pg6&s8*GW%&Aw_gBzj8Vov*VdK(=;X6oKCo&p7VIZSlWpviQpBsp%!X8B zW8*(wi7rDftrvHtj&!vNC5Z7#uBwYoc;4bF}%pZW?2KRBkYVx7Ua%su1!=8{{ zkrnGbmMujhF#p9*&~vL)X1JyQQb3Zv3%@@W} zr(g;BSz|@12wpU7$J$#-7TKbcmUNg;3NyS3If|EE9qRb0((%^aL%K_)@!{KG4Bs&6 z|MISBi_hTz?G7!a_Y6^!>rEGr@9G|E&53UYwYM)M3a9_4n;>egZM z-`|}Xp?r$8VEGnXz7b)*QE)>eeP7GFGozG^OUrw*uDWUNV)h$hH9-jZ0b0 zl4H~u)Q~ahE;0P2ty5&p2FKbTMJMf=pKw1-I|qoqZ{H9ko6*xb@+|ZO^s5IR4S@p~pPh`kUVNN7Gl+D=fOEGhOq>#tK0Dy`3jL zZe!U%^0ypfCaZgBu$bx5Cif>RRY}xJ%dpS{3rf1)Bt`3c`bA~%0S zl#}kWmc7`_9DBV6+pAX0-yO1Z{q2s`d*zEda(YXst{$9)}!@x-hoY?Y9E_$OM1=D?U|qkHvkTtaSK zk9k1m#yzBOqs))vya+h@_;GjhHS*)Ca(>*2WXriWxN(<1AX&+ctHz6aFJ9cNLH>N0 z*JpLHHtukLCZ{)&a_Q)ZlI|*aiPK?hnl;NMbCya?tytTA0yq{fd+11yG9nM%;aOWJUvdQQX?(KR%^BVB#}5jPr}EE zFyG93M@JZ)l5YH-doduLGfwRd?Z=?W!_&o+N3;}w;KMC{ZJpAEl__c&)B4uXmWos` z2WHrtDF0K0fNlkvnN&PuJcF&prw*T%f|rXxAGM6FT`G7DneV(9-%p&~LtX?-`&k&} zT4}kg{bXxwzGRb8zAAEeeqpVtxVzD>xXgf)xSL^6CEaI)!cuC&of)P^yIbl=O}bm* z$zbE|X2Vt5JcQT-n~asq8r=rd5@wFn96w_yxb@6B8rn+K)>ievmPWjPqu@<$sJiSP zrYd|;!eEWD^<%?dlFPf5ylPE47N!jdinG-}P5UuBway1hER@3;G*>5_GW^+HH%uIO-f|+g9 zbN&vx%*e41PkQLnqcYn_D{S9mAMPHUc__}7O zU$>G?hX2sYA9SkKjn;F06a+g*UQozT(omUj&Rz3U^=_rw@ z_{H?FZ74H@ffm|n39QVVuFCyzX;2zrNpuWzr+|iGZ&i|QM@@9;HSW{oU-brs?U)u$ zMg%)lpB-l?(XBN*P;Ilswu`2$p^=&KDf+n0Y6O*QqHmM+tC;l3;+FF>XJsDA{Jize z;_J#Y$4)w`<@8op%rU>#t;KZDpWcHs&ZR>?w&iF>GuNM~9{q|zEhE^weEmtce_-(0 zA0CXqb2F2NEkE#$rL0|z5>#FS%6Ji$bPrX{#{76@N5HE%Tj>!j-9vC@W=w=Yroewo=BmG5ZE zmo096*vhwG<$E+e{`RA-eESDoUvvAVVfpqCzW$iolY`Gr4Nf0H(4{h8#_wKn+2vP4 zP8*a^{&Y#^;?FBC;f_tCie?7?4=QC)Vg=2cYMN?ppMEo$b$cWkJ|n!904;;hQePuGxS zc3Ssu)$u}mS#O~>nu3obPt#D_IvTeXM^wT3GEK{sQqXd0GTMQr$Ri0i)0#y|_IjHn z@v}A;h7FrNO~&iA`i|O<0#ujm)k=ZXI%IX`&ioO=7jugGRX~QXcTK#R95$SbDfw;*(K`C=$yj@ zakb`$-u=^MJBfpadQOmfBHTK67Nw;9PS6pc17iO_N%f zU-kgU+KFDIMORHn)+RTi6Wq|p5-4HhsE!2Xc^t;s==0-A}^PZOlQo0 zp|_XjQ=tYP#b3h%s2GAtZD?X#uKasx0T);S%QYj~5)RfDn-um))B3CnI`fLkqN&ig zuM2Jj1hd_DU2u&hGON?*-uyvGbSDq=t`JRU;Nc-&qY2Stm=NuG<=n6V1oMp-ZzW0w z;c1Qi9o2g0X_y6c$+oj=jP?g+NgCZTRu&wEAuL+{((OP7xT{N^M;Bu450E9R6$(GE znuMP}Mf}v~_=&aOg2a4(ZS6dm2?yLtP7{nKjAtWd#^=AWezZUw_2C?F+@^*T?mO0O zOPLz>t3#R^PP*lm>WBMrn3xkW@zZrVp|m5Ed+n7;;$gAR4Tg8*QuZocZ7zzB z&3M*8r2S;RW`C!%x#0qn32m$=lzl`WJO}lBVD*&`jqU}*Upl4tElrvCQfdUsn3DZP zMVJYGiuti!)?N?-j=QJPKm6Y6%o)l>3#2pZeWoEZM!9>R378I_mFp$cI=Xk z)<3d&aJ=`K%qXQKd!Ix-%l>gxe`SUC5qm)GF1d6f=~IqjKE} z0c9ICx~CLksV%^AyD3J#CcGSmlLO8Kj)t%llzz8IP-`Xa2B>)mF?zo*aebG+sI2B; zLMi(J*CU1+hmW;Wo3LjB?SD~u?wIziq5b6r;X1h{LE>(?2Vl8O?$DK2=$30%>;B0+ z+AUk;L2cgi^0`HCcIW@;{cxJZD1J}p_jLX8uPp1|8%UEIwqY-&aJPZT_KP*Jr|Ur# zZ2Y5G|8e}&X08d^oy>EiL`iMcyZz60pCQ^%R!znQeANLFe%9(|g^yr2n~PUxSI_0& zJpRq(-wZyj^Y9CK+`%J7FrR?e#r{hjk1y)c-$5N-O~9MP!Ot@PqhM~lt<(>J8?T}d zO7p(OCvWn}6@1e6w|f4~hP}J|*PZ@rmHYAcP`c&SZ|Hq$wRXU%qv;r>6@}GWPH;`X z3hzJX^7x8|=on6Y-0kq%=C3ei)o;TRY_?`3aOg)Vvj0!fX{?4~%2 zWR^z9>1&%s&*LiZ3W$!~*7^u5on;+k;u1AJqN zLHe^~{eXFX3@~pj&CjF0BTUQ16i|$h-4>QWtcx}U4GWX`P*I|H)Gq5|7kvBz_J~pF~_PWiWm6Kqy6ij?B?mWm1h^o3d$pS zEtI_eF&ZKh{_n+E&=tLO=9+beJ!BbEGI$!UC zXNQWw?g0@{54J%%{3ut%Z+vQia?t@Ot}Q@uk5Jgy72xSU!Xf-r!Ov3j-i4>q@Qfi`7E?=k zR!%6u^AX|kY{_k3H=yb}tYgY-Jkso8AlbNb!14!troeYFQrx)Azz1ZHRsZX){)M2* zH_-w3KL>4}C6uMFdUIALdy*(DHWvSn?Q<=d3h>kZm)bBmyR{4w^9LmVgSO8L`w}n% zps{iG<023YhyXRD;a>J+fzCG2TzuqrZeNFc=nmTkn$^u48{-2dueI^){|a=fCqIDt zJ*;DlfzLDWK{Bob(l1KCR^)31Kf%Zk6#ibp@8JfojdeCK87RCKd$RWmzIx#Fk-y+O zrZ^2>t`e5=0m=XUc?Zs8^8TDgseb@lfg0nMjs=B%%^cxcZ@Btf40SV`WI(G0d+&f@*9g{ehG64LgYCEfDZ)zy{J#QT zV!#9OZ;=0btABwnH1GlG>p}f%6{J94@vrxZMu}*o2UNaT`)4WK!P-PyUmA@pPjy&~ zmGQ54E*P|owd=Eg(XxN+wpd#^IWwm$XP%BjC8sB}(VShQv9@7KH;~N3(}2l=Oxk7V1y_iM6je&98Urjiu!}x2R>c~$VT7SERg1O({6$az~Qwfx24P5>QB^UH1XYTh7 zk((cp(}snOMQ53D`zl}h-Cm_{Pmw=6Nf_eB@BsB~g>>N!CJr}FA9#6V+lC6BrL&^! z2H~hT9Q|%DAw27^McD;{uNxTrsIa}cUdg~{!WB?BtN zXm{&@Sk?&38y%+61MvSwyVDQEbg3}yHB9}jP^_pny=31jP&XjZi3c-o-v&>Cy|8KY zaG_zfHmqdtD~8Z+U)lk+UpReU2o?&#Q-)wb_Wq#rfjuBAU{~{7Pl?EpB2swo$~*f{ z2klSp>WiQLWT((u6!$eY3Ec1Yf6(DjU0?h*-dZLLk-|=F+&-ZCJSc%*gQu^6mfMA1 z*}u~QHm)BKfikX#+6Qyic781Qdj|x6Pzj&emq8?~P*vHK(61Q~`hzOSufbDLegr&X zfokw|JoAmq2ZaBi^8HL-{MNtrr~#IH-hv44wld zv{w>RU%PSsfbgGkFpJXI7r&b5cJOz9X5;LEAdj{G1BMPpKq^^KfIfpgo$b}y?M}h^ ziKLS@*|dKiVxmuob-wV2-rk90)XB%%?h#UU330yW>pc3g+Bg`FyWf1?#%kGpjQZZr z&%yxAOq@-Q)@mEIOXkR_;WBr2K6^d9i}z`s*#BS)wuc*mWKdxgK4TP0-RFPEXs{D9 zsi5XJO!0>2{$_=ruhZvG@YxOSB=GNV?_hC!gzS^g*aY3)*Wi(fK(;)$nYXUFxT&yL zpYZc@3Qu?YNHM3~haBR!BiOYz$lJTj7xXYlOdK;G#4W>DX|d4)%S{}khSXA;8KDO2 zn^nkR=Tz<_bx)oVmYK*k3?rFnoD*xGh&Hg>Z5)+hbz;k1;YfH1*RB%cggtj_jU(Mi zIhzdxY$y^}3HRuoVyHNKBj||J<5a1m#E?huybv@r0pIfywU@hPyAZ`~A&Rp=u}Vuv zlQyTri|&IigXiE55#IKA1XHW$Nqr6#|0~RJrf)=o<1%JNLTN1*T)d$XdB4i`J8dQR z7xY2cp9+Y(ks;j&8LxVYg}`agG_dD~Oi!(5uV4=FX=+tvzDpq0-9r_5c>;_vp7J#5SP9=>aVpWKM+xS$_Dxj~T zermNbWFb{HH`dlJ;N{gT^)t14F5GLLz(L7FS|^1j?oohtUd zQk6Ep(>Y`pz& zYfssA;US!*d?o(lQlTvg_oAzO@J7bOMF@U#mAGniRIvmWp5?H=t>2aEaAd~)1XcxM%-9)80SEj_xgPP*TuUcHi zS&~q-=1T5hkW0hdMHy(}UHb9c=5%N84qj>G-lffhKME17Fg%{%tw~Tv{b8NpG_p>g zwYuY8SMVe6`t-?OM?Y^uDz*@*=x9}Bjy`1hi?eSr_MAB8E<_k>8-#Bb?#3)P1$lr> zrod>$zt`ar-sDMzRRa#PCjBctq^aBcTQn>Dsm&Yl7j@`i(%;gf{1)Aw+hpgaTiHswxw%A!Ie3cH zggf1*x=m{Y=G7E|AC`1y^2L}&Q9)vRP{>W>}9c7lFGV>2FETL!B<5p83Vn3MX6?5=uy^1-rdLFegn^wG>S9R5r zj*fgcvut9k)3LT?j1E`5NID`o(Km2z{WXSVy>p)7_kD$D=P17_iu_gBg(aedx0`B6 zCgSe!JYt=LfIJ;~`gmALtG**1=CXR9Nksjx}-(0|`6;?T44Asuc9K;`#GCXdADp|D;FmHm<&-Ff$vQ~#Z-+Yt* zOb~?q)sMUqW#`HojnJM=FUlZZOV5#X*MP#Vc)7c zO_M56J`Kh>(m8_@2Q#_TkqOL1>_PN88I1egxkZ7_62ueT)BWg`jGUq;(^LS;ld%V9 zR@cXavZum~iDdV2eAM*=Q^{B!k3Gnc1C#WpFasv=&y3T&D-j*1sc^@CzqgmsL;P}+ z5|ZR>@$YX|jTDF8t4|w)W+)93B#aE|Rw**$r!7@6qj0|k`a06|+0+P0_^y>!aH=K} zR^$=_L-fQ-Av!sSXnsLzc`miq19w}s3fn@T@N6z&f=_rkWWWyTQhO)*{b`wz3HLqn zW>O{G1$)&d4p=Y!ehGGqh6&|U!QVqn4#dxmBok1*oJ**PyT72?$YHAN zxP84dC;D=q@Gj4asU9gY_T~F59X6J*vwJ@MswiCp29Qp_^0HgD?1kOjvG5J_iJX6B z1hcCAMh-X^SM#nDbQP;=c@K86gP!vrl-0gtJ5j_^!tozXp7&)&Sf({(O1Mv&KuWrg z;tN4g^d%82<`bhi-+ETPfq?zlbDiso2Rq-(u&>FzW^5`r#S(2-;==mR$>g+75lcl1 zI4WfEreKZ{8fMt=&}Fj2s}dgbCK}7jX;!6syAfTL@Fbc~`OD4oh_yXV8RM?TcSD8O zB^*ypU><66HzIHsf+}L`_2G31gH=`k{N&bahnLQNFBPi)KYV##(H67ebVWvsvDX-yh{-G<{_RZA=s%u%lVUVpU=bUT7aZmoP*V^0C6`z2TMl~ z=wg6`o1F*JMF2_n!5oke`adZL6wEX-C+8s)ct7cm%0X0+fm>pM&r*_z%rP?E9jXe_^it z8%Uu1B=|~Q%6r`XS{aNn@evr%<~)$%;V0b>b3o$^=G_HwQG1_qh979>{%OKudE#!8#I> z?xq~XeBR^knmk0UL0p=LaLWYofgHqI-s5g!4nlmikw*FRKtAMsc?6UTZ%@SA9AGfh zpkBQ(CxdDu^*a*040hisQjaNvm%&OBxc@Q-A=-0DOS*egpYEc%0nosJ@;ScAQZ!%nWh|s_)rl0gnKt>^ftMUDva5n-lN3s zf_$n)oqdmco<$wZx^PTjWL*A2!uT$| z@$3!a3^R!TdxKF`m*6Q|?2p&n5m;(yZKb2i>~asPzhb$8=uEM;+tpukocC7!_NEuL zE-Efsv>-F=^`b%PPZ6J_xjy9{vkqR-F0SN~r^|?^c%P*(DoTII@-(>bIy*k4AV}h7w4#dob~~UQQp{=w@Ih>A0YFXoGuy z_+p`QPBw^QU9Ur&kOm2qYZu+B>s2%ZiM72-SyFC^k~E%FWRT}cB5Qf;qEeO-ba7M5 zu+~LogIcciD)zi}IoB)z#H-jY5@`QQFbNYKCSUJ6E%%gMZf?D-$!m#vD`JW9wROul zLce^~yNeWAVZc?9M3fQjGsO*8L0NaW%y4E+9SB-9i}nHUtv&TO$C@&~aHn%fU1jNN z`Dw`EJmYYK2MD8rZzut~d!6~kRPa8AXhHe^&;<^{pt(Q7V5cI1S@&I?;S_NoOQ+Zc zRon2NOUUXj+o}mj!lF1n2Si#I%R@<9);=2 z$744qs|M_GH{5f3Ks$L0n!g;OOm8rzhrjxXWS+*0n|oj;*3*dCSWR>=iNezvx zaaHorG`@HIbHrpRW$;waVq-OFth6wz(8w0Xa`&}QLq+Xm((hw!_oFO9&sT9`seiey zMeb@$PlG$0rsI9hJN{dFiogP!m5P}3Dml2@D{VQ5iGazWkkyH%V2?1l6U}&qfx8Kr zmIUUf1~b;$F&Bey&CKPx^2mIs}n&>y44Jh6~*yLt8wlC${uj z)-o+_WXk;nNY2&Ir%<%?FnWzQX2A}_eV5@TT#Ltj2!^kWrA17}EW=&m3#W+XP40Nh zOr(cWamctfX;I8mF6lWe5QMuNPX;-%jzmK@2?UB?o^tQ?dAmmj_ZkPIJqN@}K>uPF<+;MRJA#PPc}SZui+71The<~!^Q6OD^Lf;evE%@Y?>aW_vi(Hmxs^5L$=KCE@N zO2jsi?BTruMCa!P0ZuW5m6LiFejnCm8nK%oMpMp_J-ryyA%I-H8Y~9VOr5c{~QtqD7~iZD9%fF#o}C~aSy=f z`}n2ZQT)>K`pjmkY<%z7hYyHfnsPT7Up{^*ak>55g<<^COs-@}|AE1nx`34&NaN?~ zLlnHMgJQ7qXH{H5?2<$5{bRn$8vx%6QT z?#l;cSz}q+eU{cKB{a9*^tmXnMd2z>HoBW(XO+_9!BWdSi_Dl%O$F8H(#YTOo~wXg z8K!Y)U8&ZH%jxcqHIk(?v(lpLPYD(pk|TtK*&i9?B>MT4LL^HKNfk;NSmu{#&8S(U zdwHH7=<;xZIApHy_$jyDz7n8mKVLyL+~h}q(i+(gLPttv6|X+!z9zFUO6fjSeadA> zS=GZRK5jAUxd%g8MkpnCfv(fKOYWvok0tqq3+3QOO8UZD8z+=Bs?@$}v$6Q?Neq7w?@zZXx62a5cja<3q{3#qzE zmTBRO7N$4ler*CJuJvuEU&W#2>mnI(Dtd43LYy+o8io-~xt}V_QtKAbFalm2%8bD+ zTgouzkzeZPPqxZEoKamu)U>GtSfgyy5^mx(B+``z%T`bZ+{Sg30>!0fah{G07Ao0& z)e=iWx8{<~O%3K_aM{iMm{2pygcCbHm}|MOCAa1=nu{B#x;x1M!Z1`_P-j^#A`32M z%Ka}UE-16KGf8W5512#6{U_dqvLK0#nLVv9_H3w>gHuE)^1XNkNtp{u8#dDQ6{Rfp zbBO^GqJxMJLC1RAUdH2W{?+iWoKA3oh3a7A0nc+ZeL#9W|0a{&frt}IT2J7oM?dR* z6pZ!NEB%`m7f96NIzL*Q;pYwiv)KRa_CH(vkEWZ+vcvzh`5*bJBx=hFq~ki#&$PBy z7f9XiQ|ox#HLo4%R2u>CvF5vKWk&`u(L*yo@h&3Eymsds+lN`Ojd?&M(tv59`wZ!13FN8H`yawM{2W=CdUlxs30+xOHo> z#f(@zivxhGOI5bd>bl|5*4{y}rE@rgo;h~o^1GSJAx5v?soVC%f$>Ayo+yYPf&n`2 zVvrbuQ98uFwO9x5$DsenEqKDHpJZ2A9XaMyJlBvM1cL*kX@;ldzw_ zS2Jb|0cE)D(Ddv?XJd(00+@JjeoFZ@U2-Hn?M&9`8^n+|7ulY2o^jVQrxl)0en;*& z4x-b^Rbjxj{%1>X_=DC>AvPsX;b7NXTM?AfEi6kA=X#G zki**NjAaxam?M?}nKEPi5zFG!0Ko{?^D1plW} z;Qe97fxsUd!GBZmRo*=HTb?7`uFFFKd|dGUAm>2nuZ!SM5WGK4*?;(Vxnu~>pmloo z4{V<=JW2VE`u;9gS_r>N@cs;C|8(J9ZtHAcexv^p!55sId`J4Se;XqEdAy+g;mLm5 zzgYYG4rovH;K;RE24PWj#O6o8uJGA-!D6%&>l`Lz%6_DqEJ4@_W3aATmP!G56ahoj@UgC z6R4S<>`g-HWAF73<$DUb{CWY(Ll_xP&W;tnt^rhvv_>;R9Fi@{zFY#d54|OBV(ko* ziw-gHDHP&v;XYHieWb0Nz5EaH z&nUou2>rz#;eSS_(hrE2)Gz!kQu)AC{tLq4Lni&7$`6{T{F3crE5C62U`e_1x4e_R zczeCY3vf$8w+Q#M!@yk-C28Pj_k$r~St8vbw5>wx5373n)Gv9)+TR0kp{}hcKptb_ zX;$_mVfLp~qxk4vmn#8ndxD_1{2nmK{#_q^K9ELT0gWS>7?_ZKgw}FE{Lff>RfwMf zXNW)6PCrx>4&@C5 z*pds$$>z=xizlB|+c|Aeto?XUbr#1Wmxq=1t2)|d%w|p+dw4Ecge>5KE>7S%H5O%S0n%=I<-jAR+t}tBr zc#s2>WyBn)h#Vz^cO6*Xs)O)%Q2mlDBYYH-0D8i=>_B||ZVz>UOK_^J?9Z943d0cO z)|Up@zD@v7VLk5xWmM0yY3oGiqoT9Wcnuh4OKS%FSFbljWNKL)Z7g9LlXC9+HA>8 z3-y%uG%|A1Xr{O>rXPNachO+!CfbfR&S?B1Ve>%Qq2jvDTwh;uR!WxJ)F}51v6twC z$HlBoo*IsD!?hi>|6GXUA!fmmVm-U#kYjQo-ZSxI91PWWsJMeBg*VYKrVFe_juOp$1|~SC3rx?e!2(0EiNlSv;6I7E)trf z#bcZKA(3x`fy(1k@BH^}OY-*JKGT7Xye1OvxAq8eBb+ggCyf7t#lSL%lj0q}snDZ@^ z$!EdDO1|MM%U&q%tQd++x)`{mJL2!AUgEZf&!N5`Z}$OKT1`(_I3MSSS|X<*mpkSX z9o>$#Pv#{Qj6c48w~;EzN=t>4Nahr7>=?i)Qzty8p-t|-=i6ZyjRuUK27 zy=Z2ZFVlH(--ce?U2Q;I)ul<#qSXS8wVi93H9<*cwVP&c531YAeI;F0ad#e#!_Qt) zqkTV}s87N{ji7S!SUivDbeqj~N$Zj>u|pCvoz~dLS6VG99e3+#xIkxLQ8ZWXiA%V; z8GiGDrcvY4a3)nlw8TyL5UTZ{^7=3p5|CN|TY8@Ppkd;}8Uf5;m!HXt6Vrn@E!gC` z|7p4=p%>`<*M!kx(&FKOO8^XqJ%R)ue@nLqA zfihCWb9mN@<4E!B*YmYySLTo7C)Jcy+61Gp z6SFsJQb$gx#P@+QJf`8D!|;U6LXaighm4JqU|rRDY{&Sv7u72DMg;3rGC$jq?cE?!In*SQR zzb!p$h`0;(Lf-H4K`+(<#r@=!T=ZSJ@Y&W)ws!=6nAh}&=9}D)KHv+!)Yh5($;Bpj z8L8B`c1wiXru)2avbh=gMn9y z77w+Rv+V3O{*44(CCs}~P{cMvyLjThZbKU}=R}HjMhb^+9DKQ(r~(X;o^?&#nJIVK zg(^!Wh&9_RWZ#Dn$mSP$CDZO5UtY1CZ;$l|p0lc6HL_R0L1u)kL}rxC2<=&dh>No3 zR`K?wWm`Q-C0D>n%Sj2FWL?MX+Z3@>?SuAUUMoW-?YhFmTD`>rPO;=85@k5vg|C> z*DFTKT?Z-c;@?C*87C|aLv^WWMY8)oHg0~93{CF+#*vh`8l_R+fr2g8&$}Dk&I<&q z$PF_j>9a}J7Ob<_W$(X8#OkNQ-lgXoYS~?I6SizGrPAz!$N-ZyU1u;CfNl;N(P@!e z&cLcdLg}&@ElR|hvO=BwX3TAkm};Hsut zeKi+pFY-{7A-rm_!42b!jzcVHaQ`}AnbZ#3&jU8BI)BmPP|&AbhY=~wz6yr%y-iKJ zWbsf-E6ZAMHM4qL((U&SMrQB$UJ5BjV{JHpMebQXa7GU8#tpgFZ9Q(s3#sm%KZWrwMwV$ZZvhRm}otCtnCzX2kYuMi0pm?->cM%QyT;~ZXe1g57pFM z*5InGSY;EZXuXwv?aZYtP<@m8jRDt=?@e*qWHw(L+&;?E;2eML&cz`Q;f}R| z6lI)2+hZoBir&7G-*Nn_;CTZ7>iIW=f0H${GZfunysXAl-sjiFl{BE6DKfK)cP;*n+whs*~K?PV?%_vhgQ?%u7gufgm@y} zh_tJp^peFbUWQtocv)Vhop4CyqLl1sjzo?S8+l09_8su4_qXPB+M?`jRr1V9hdc*O?n%|bE(m*}F>Ut$5}BrXC}jEKiKn(~jIeG+Kbl-U95t~w%c>=m zSh=!$2fYerlJ2u)Ma_dUEAl6KgR&PHZR7}*A{3d0mFp??VS3$XaH@#hqx>rFUPDuA z{)5Td0CtZs0f z9{8T3ak7&d{G?LNr48=d2&&~>1zp+r-mE-v3y?Q)z4d0XwwFkOmnHn*8>VAzah@n) zIt)f$t^$UmM;lf(xKDx|h50ByDfdG&TxD7FM&+y7KrbHb`I=nl;r5k|R(qjfu}a9j zP6l+eoG=ExHEUu*T*;J-9D^Cvb2DdXgp{CP`Gt;wsT-YJw5Yh3PdwH|m}txfoV26q zarf18O$9MDbr6!bB!fxs`+e*>Zs9l$Be)d`yV`6b(q{Yo%E%|E7hnUy=*$76DgkaH zS%6I><04Myl>=SWF89WPX_~KuiEZmuuVIGt&}nRjcwy3BKl{qDwpgqBu?Baf&)(s) z_j-I#s-RFI1Y5=#t-9`&ssO7iM1KIPOg*m~2RvHXeqQ+)u3wN}0-ea`GJNgx0Eq_<-2&!E6L!t7qp{*X`b z*8VIXrOm$4A1 zujb)UG7a*C8;_20+Gt{AZ8ZNQ>6;3u7WAHt{gZo^&x^HB;UzSB>$&zd>GmN!)AB~V z$T}gZ0O;UIe!d?CV@@fRPG@IWvj8nt<=n?;mTC|F~jUtyNyiT?(0x(6|tSl zGBup6Dn}j1f!2;MWG^LWFqcw>uC2S!YP#fYbWamqb76y0Gv&wnjAmUnKtQaT>Ii?V zeGvKihM8-By~i3&MfPPLyxz|=y?@SHV@dXD(mnm&rDno|aVGbl^1Z=5P6->_(f9e-cRG1|Bt)(509$2{>L|A6INK*RRaVJy6UP?f<%Khkf2cm z;=8E33E9Q+(-!qM#Y*k2qKy#TjRkI^v_-2et)R5hmint`6QvMLBv?^VDT08awRW~E z6{}(tG@sY&%-zi&Y3xL&Y3f3X3oq#(kjDWrTW>oq@LAWDJtqH zY2!UK*Jw?L;(R*cVVwyB#0r$9)85mxKpNLhke0YJ=t9Aq-Z$R#~F#`)nqw^z8FW@{+Cwz3iGz_X~M#(37 z5l(t3PQIc1fU1>RoOqw#?fqJLKPUMNgq~-L4$3;M>Fu+Sp=-*i=000xf$C9kbjOrE=6Wt42YtQE+#}pcIpBTPxU=S~V9) z!L-nfRf5u~U2BdfZm$e$frNC^zJzq=5Hi)iJK-5iz&`^eAtmh2AM0qcJO4{R$F^c< zwc4}o!*Wn!ofPkgy~`IJx!=9mHVq1H4#EI_CVm_7dl0`5=jwMCUURW+D1H(AJ}@q} zjYt0EVSYpc%F7OW5O@460Ecso+PT;Z8vwHsPZt?$@w9YOp8B**63PtQHB87=N+;wP zDP)1ikDTE5 z5u~LXek)L_+6fblH!h$982Q&}vOSZUW@!8#mNZa0|NBgEs^6q!Dw8y~T8gwj;kWv| zML7K0mZcDINa`3;(_D`2%8zO(-5dm;v8M_E`nfw&ob%&;Ma{f*glnqyHk(LoInMlI zTV}7I;LxBVCGS&cN7CwpKfpb6Re_+f3kw}a^Y78?%@5R-=qKhNzB6_s zeeq@+bc?+8bC6VH@E*g{)CxQmsJl>AgZ?T2?PmuX;4eB*g$#3H!TmtLrODx|_F&yJ zR6WeEu0*OiG}2mzn;v!NLs2~G>1n)el5OLDR2?5+O-A9*V-9Xy`@4y@aiiNokZ@LG zEgp0ilY1m^#Uz%LCyuq|XjN6bj&dpP3Y zWF81z@+_RlY5sQ%S%AlJ@+$1A(rnO=p%2VKrQkEpQeW|i&9-ls<_@`K4k4f9Br#0! zygGRBWFS3dKEIed*Na>Y?=ts^AcEIl)LiYxO4)X#AlQLmi9QMkx|M^Rd{I5T0`r;u zhz;w9ZO(aEIm46@tL3GjRG9C=?KeTomA~K;hs`12kv#2p`tn1WN6a zq1YX-Kt6XhHsm%V!K%y`X>nH%GG7IDQ*fU~^-%wk72Y`NSfVdISHDJH2wGvk79XlA zkVWh{xIID6eBx zW?!DySo0tjKCFA`{p!YZGi`fda-zQC$QJuvSb>pd2kcNZ&hz>eNA^u?U;M>K5EfVc zZp`Y;^SHCAOLs+KJ==^8sIFtDIpIC7@nOre<24}hH08_e=QA4Rt(D$_Z^%0rA7*hi zZ_6p~j-C1ysKo=_{_3H|x>Sf(_tO+tvqQIGDBI9aT9KNo1qizrAKs6gH9KP;0IQB6 z^C4zhfMEk0b3uj*Rd)^r)`^3&A-pvVDWe zezZF^J*1|ZQX~SEQ=u+qOn+SzZ)W2PA($}#!%E-cR%))qvH0W=DCf(Y8$<9sP^*xw zQ>)EK((eCO2KLQ>17FyQdshs)*#(WsFasczUi^yDduFiXBJROY)}axW<5$*}MX6$BS#g-&CnvlW%JihC+Ff1kQwxyEf_39d0uz8AYXX*>*V zE(4Zu4aZIphVWZpWO&dp?3m&g!fye7HENdbddQFqREArVXj*T6_21D%$PrtNl8wg` zg?(Lp@}SmGy3P_KjKI#{8D8XeT?Aj$w! zK^?5r!73fB(ZO0Btkc1xI#{oRMjdR>L9-58b+A!ACl1*TE4T*mR@qI&kQ~sROqTauCq_69XWGH4g_8G4INMIureev%!mVu_S(* z!*%Do88T_f$06i{f9d@x4i{Fd^OjDa){E`H+HaFe1GoZ+MX;)4=Q&CCzc(iW37}^V ztx&J)u8dw)hNIZS%xv6GKU#V>k_wso@5l`chcW`>G4+%B&+k3*$H@xLnHbYhWN|Eq z@F}1C>dE&$j1#S0@t;ck`9T8xHJ)mm1XmlEQN1`xr`Y3glxlh>4GJBf#PC5HudyGo zfcz1|*$ zkNjX6!jG$1zzQiK9ePlq3jA=wFG(Aonpog>WAmbETUzuW{)Gwn`v^ZTZGI%-uOfVN z-|HVvcq8rl$0qRKjn)08#r zMYm~5+VC9ub^8fllQuj}0D-@X@blA#r|qEIPx!fM!_(*x_}y;6`_hJ=n}ENM@TF

ljG@Ur6@OuJ%lP&R7M`1Or5GM6=9m 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 z z&=8uDV(5tblt^}PFxz5d=!r?eD>h3|8`q&VZVNQ!!>G#VyvrmxZ-d32k%EsU1D_oQ zvJm{cEY7q>;;|AcWZgG=Af3<`dZRE5^+%E#o5FXU!<1QyBDKNaOd4X3e}F{9DV*vn zc$2AYXEEj2NsHmXkWES*by6f~@}W$YLYIu7N_t@1T2g)3YAbw+&LF_P(m?hZM!{XD z@xH=5eC*}q?>9;*yyhm}oBE$u{qEsnybN|s;$R>J!o^SmL_YsNZ~8S1H$y)XFZv~t zF&!Md=QjyGX;ydvSxxc&-4A3gcC+tym~F9h_&C?W4-dGhp-5~bGn*-S$Z?g3l#NJi zJUNj{?Az8Q)72u_vmsE@_XJw{DPE1cLgp(Kr2Ybb zRlL*@FXsclmXgbXvkdY*RpeUiwKS1ip|^HsYd~ZR-I{6Q|@-3Mj>JXUi)JspSN6%XO57L8iSUog$H~wZZg@F+rww z7QX!wy5%}v9NPwS*cbTs=g@Yqvlsk;{uzP^WhP^mhYV2(+;JuOUAm;;Y7M}`kqfk(V50gequVvNZNtP5rPb$Yw zjuGSlYLRtr0>A3O8wNc|&JW}r1K~$bBX2nmJiQ!5y%7yzC%Y4ef^5=7oSa*9wkIeF zF(ggn$eI?=i-E4o>xyoXwy#ENpds^AynxY_EvtUGJ)i4i$S@`8vv~1j37bCa^dE5E zc9Us39K85)nLX3nnzIBSrbE5f^F<;cDm>=ISM38{~F-HLbr zI`iIAUy@S8cz0+5eK^^iXD%Y~zZQ2S1ufwh)P&=tnlG|I7WlGM>$C9GhqCV*SU(FBBv+B=lJ^`VS|7+K~C!Pdk)81iz`xguS^leaDpp_QNU zFM?BVkxzvOt%XB~2atK6Fte0B$bXcO%7R=q9G^;34c;phDKxR&*&S`DKUw^dBtxbI znZ?&TH5vo`)9XMpM_@=Lq;|(k}FbxebO>P2L1Ks zU!6!p6rwh0L|sAC{esQwF_B3irCGddu!N1}b-~*ryV0)?gS5}_%ESN9~8s z`nfs=pH-xK7l3S5lG*qn*e~BlLj43Uz+7fG^>&b|3ZcekMvu)yx~7CymOUg5>{E&C zZ`~l7-wsu%J2UeyRq#* zft{tbya#qrKgqjTmx6b(gic$W?5Bk*B(_o8v7g`5=*v5zqv?igNcn9iA#w<>=oU`; zzp#MZB;m`0FOI>d3du`BL7l@cU9W)ictUHz0^5mk2a8jIRNLmf}fq4H&RQGgLcRvH6m%& zodkz?8+8tU^#;`61J)@L1*z5xG6nH=5xX2d8vl+Wv7tQtBh`E0DfEd0yeUHxS={qb zX8s{u-cbG6zzgZj%}xY2^_K>NoJNw-pTPZ20zJ*a?OjA(ekBNM11}wY5H5-_XnV<7oe&1;mkM%@$8Wn;MSJ_Qp1(U=U_!wz+1P%sUWT= zBxpjBm`Hk1S6n0>+*Ke_1msnQZF30@V1T|7aC&P*>hS(wBf3N@Fjz;j|J&LAI)KBO z%HG!txsa=Mq8n{b4}EP}s)s9@-T41(KO}PwXq;@dx<(F=W2t!Qvtb zs*vAsz~WVy7InP(fjaR&S&sg}i#a2~JiWh5{`giqFt3DS`XlE}93U?#{ICP4D(tT;evP4~psuDHzg7k@~C{a(MnnW#$N)mM>sz}t3s34I@5fvorM^ulf9Z@-= zZba3Hnh_Nv>P1wGs1;EuqE1AWh#C3`wDC zeqn|jXNFv4hTNiho=`n8%#b){hM%o^F+(~sLlT)GgUNP@Ey5&b z$O2}_N@mCp!F%5a@FGr;m%KvqAeHRF3zU-du=jZ0-6_IWA*cMm|NGw)_}>%wzdV8e E2i9mttN;K2 literal 0 HcmV?d00001 diff --git a/ext/openssl-win64/out32dll/openssl.exe b/ext/openssl-win64/out32dll/openssl.exe new file mode 100644 index 0000000000000000000000000000000000000000..ffc29df9928797c5c53a7b78a69255a23766064a GIT binary patch literal 497664 zcmeFad3;nw7WdsGGzm-FL2X0?2^u9BmS_aQfTW>YJK9lHf~X)-K%;^nb_*zhXp%AU z(ufO+&Wz&dDC07NqhiE`ge_qUi;5^Jaj&*Ta8wAQ^!q(k-AT}}Jn#Gb`SPK2Z~f}j zsZ&*_wo}W^yJo&E(Pp!?<`<3HY?VCaUylBJ3e%GAkICQR(>aI{N{vA+K2$A+D; zV1LK>@8U0S>ev(a#a~{bpS^e8(y@njPwaS_rfcZ<#Dn60WykRvzoBEAeooNOD{dZN zD7@m5kMP=T6aHei)!*UBk7Ijmr`g&kw6obhCe>RLH2m9_yr<~boL2IXcf9QKhkx;> zZF7>zEU-jd&OPx!v9O?qN&F#U1(|xA-F7L@a(RY|r|L@DTG zw>5{GQMCNJr?oBh%$B_b?HialBf#^Vk7DVRwDZ6Dzf_{_J8i=Cf$MFycW2`RPg^n1 z&kiNbK|T5!GTY)_v%T%2VGU)sfJLek+j-Qg0^uKZ^})+mQk5x`D}~1RuZjCRjDNu&{GT)aG5+<@CJ{{dzZ~LU`6vGy5AmP> zC;tl%@h@!VpL1nps-!T@P*jS37yo+0TecjV&FR@5b!9_ry=T=TTk5qW{`6*nNngp3 zwW8(D(hF!Md?EXWgVAV>{l78I_f^l@>GLtK`<;2^nIVSmNAt}(6` zjccTF{nNNEHLj<`6|(0%WHQ!-lfAp$r+)<{Q_|#`O>58gIgV^}9~PSmXN4xUMp;?Z$PvacwoOON?uSae2iRvdbe@GzPm9MPIS-K2XM0~QuU$)oh^z4bc z3Pq-ns|>cjkT273t%wE=g+T6-ReRkf zzx9}Y1Hm#Q(P-}YRnDcQ34WK&X3f1fhlek5T@+pUAZx9f;!L!?E4gZ|k-Q?q0%Vxv z)R>jtvaf>9l7k7sc7}F1v?W7&BZ)0&SN*iG1d)(Ufo`1tODpH;uXr}C zSU)GF&G2UJa_a#bI z(5RdJAzy(vbfHr{WLV^bXKfY6B@GEw3TG*m%4X%=1aW1tDb1pqG#gnljnBUT3O-I@b!o6`>wXz@-nI=f;fM-b7{xn&ZVteWo!;69aV||Ec^zySTTJTK26rJ&Pr^1&UzcVQ z2ZVLVo&j6K)7jla$8=2m)-mLd=a=CZ4W}7?KaKu>!SAj=@k* z<=47nMs1URtPP&#sp#M1rXiBQF4eD1)YW${6_%Dd)opF_(GZqJ z0|UHPo!_ca9U+9MKktZNb`?E_<@jtSox+bxbk*D{@0al&{)!THzbUgj1X0_8R1JS( zG1h7Fc#LoV5{q#e;=__S_XbYUajsE+hm<(G&@&QeFXD{c-^6&1Fg{Lm^X`+*VGxaW z8btKNB+W-_NB`_NAGy3CccQ;yLRzZ&YM1269$$rbr*4)8B5Ncu*ZRe0d82VA`$qkd z$uBdSGkHogX@JRxn#oUyE=+!hNm882x<4^latMbE9;i%+xm2)&r%xAH#pTV#ZF;t6q{y7bi#do@pw)4MlHm%cJNyXdA_8{F?8 zB2gS{;KBu2JCA8%Z#kJe zMt#=atQ~n)IG66z`i@a&o^)#ef(he^2r>9Wp0om=MS{qXJ!&fuRpn|A1JVLUi*!}9 zJ0ejUJsSC;{P;(lrt%I1Q`rDAJbYL`*Q+v~CAIX;%?EUaO~W~ceZf97aL>^0!}nQv z5ZtGO%NREpX(@Dk|jvy!6geI+%_NIYp%)ns`3^+Y0g3Y-dscgXell@wz@v-m8W*v4in zInc^E_jW{bc8AEVa;_dTNPb)W_U`K-&5B}(9sVL6UKc^wGE6?Y z;>ZbdP$=4t7QV&=cYLPj{<2_z| z)^sg|shv`HLJ$2GjjC>oY50%lk4!;Y^JLni5@PP3pBJ2-o(4xcl>%uPu4VpD9xb~? zb6roPkm(5xdrnnr;xRNmWjmauZy@)wNs@2Ydb(&R9#c<2L7qPFuuhZX8myY6WjNK# zZ>?10b$EvdR8>DGqpnYU)=%LtA@*BIv>s;}`kyYN^%wxLpB`f>`0>r~Qw@{o6wSIp zNZT9edjtJ0Py_4<_>qCSkeTXh1FbPoPl2`?=v4!a6ll4D78&SvfnG9D$UuJ)=y3zx zWuRvS`ip^XGSCu%?l90u1AQ$}fq~ox>Vk@>JOlML(DOodzJX3LkYA{J8YtO79R)hk zK)>9kbK*9ES{djI13fIz5C4p3bfic|ZA*ltY?rg_ps0^)PNcOhlz$7OVZT)?{+~cE zJ#C>bWErGUfILOsT+S-)sGF1War}Vv|xX(hMBefvO$P#v%`-Wop}v z^vkEgq;UY_(h^H|hvFrRivBL)>4$NwS9@`wmK`WdhcLV!hItIb8T{0#jd6oO zhU0k`zJO*&T?|LRHhwuv&j45^>lh;QdK0oV1yJm6qjmnsxQaQ0v+Mz0N@md|2hUYD zEmf_$iy&rp<1GDz2y^v#N#|IewbO4M$hCIJ$YG$2-alC;Yc8ZYE2_rD;(DGydVcF0 z|Dn6m_;1Qh9F?pd)D*L`6B`H-x=*}(<2S1_H5}X=o~+a7czaS3vu|cl*l#wgHjJw+ z8Sa!1)zaLiGcqR@*-}zK#%AqReGM}2SrDd(%&)C&lI1DjWJS~!RAkcl?TkE5Gd_Et z5g$h$(V!29c(=_L{-Ww1??<- zREx1eJqA$H&?az6NrOFbVJBeKo1s;9%`9n3YOr1* zMUFHQ@BKprBa6e=is>ihXafpI8t)00Af?k&O^5|1#9pd^dRm8Y+zX_lPsc-d(}p9* zBt!U5A)EnW9PD+A^9_cLdHw_HDBTfFee*RRRL_MTCeMbW<|qy z!JyH!tY7r_^eVFkkSgZgjC!|4bHFfozqL8nTIaQ@)qUDvEK}paNiu__rI@V+Tu(tC zuO{&>HqJ4mk5z(kE7djH7k4F12n!+tns^VLUl@C~9vA08sGbxXDKnY9~7fB99 zF7?u!d8F9C24E&MaK5pQZ^o%3rb7Bsd?cYUzEezmC}Ul8rFt2{?CrDGntUb4QEMiR zGFdDpC&=lX#zyYY`CMmh)I&TO%)K}0}cx~ZRkz8%TG01CkmZq3=bSJP#dmkaC8-5XgI3!3h zO9uL|1z@9>T+G^v@k_T!OCZvjsP2rtW%?=-O^(jf$Rlaec}nM=DqM2`dCEk6pm{~x z)KFd{?X5hU>ZSvci#wQwhFo9BvK2y&)G*J#iBJ(L%6j!Zf|gayX$#qxkVQV!#dig! zqiDdtOmq)3p6=GyGo(G}liCkx^T+~`T5Lj}PUwxXNOl8BWV`=rvUUz`B1`mHEBztX zV{)x)Gjpw5dEVj6wZ1&GZc2;zhxSk}>aY@(L!@fH*g!MtF|uUsqO#>m_1rGi6H92O zdPt(C=gcI7#eQPd39nQY&{8@}XTd_+WS#IJnLvBfXTJ4;AfztRx@4W-W@yrI_y3S>PByfiA2537rkJKz~Tz zRh0#jvZZ1jm3IC|-9oTRY3xbr9isNf8xlzz^9z$WzfRmn6whLKG25w=F75uK1R+~= zOH-=T)vQ6xsw$&tAQPNVRUvgjyc;r|(Vz1_CSRw+$=B^D^7Z+%e7}(|arwT|dG!BX zzB~VOnEWduf+OW$h|$U)^6!Rb@_GJ`<;%IU(YRGPf>jx{1FNPkTKkqu=>W4>rz}m& z!N+<#tx6uRrB%wq{_7R8e2gJ+yI%~6Khg5q%b zI$GmlS`>Ha^7bl2P#WK1QvNxNgkkNoK2T4gfT-tpe%gX2A9b(5mSg$#ntK}4EkCSl z7t)kudIp_w6C!!aC#2;BZ;HBZ_)J*9b(t__)Eady|5RebdT}c)oO9{Ow4Bnd&eH2} z6#v>TaDMTxeS^0Z&q{N*3*Ho~J9Bl?eOVjStCBDGtdcxxoP=Dv@;Hc2?i*iS zJgfE4cFwXV@s6&=O*&iWl<%hz6`l%SoZlNnl$YTzZLd}`Um|V#-QWUt63}v7X*d_)C%QHU29eB?AqOsFA$^Vg`%8EP zZ;ZNr-hs_U6pf%-*RBN6x>l%l&9xFr(YC8&+LkTaHo17ni{R~o6OPnYXBve=+3a@< zwN|&f;%r-BZ9Ez8iNv>%)g)73CW9=kWW$PQ zWk%7mr^$P*Wy99A&a@q>WeKue_6IHNYnJVLUWb;Qzd*F?6B-Z7<~FTmSBaK&M|VWM zWD|gFBw_Z-xTaB?q`at_Wj`4e`edvw&>~s1QIF`7SPP^sV@71r^_)G)0Czm*+f%EPu8FCf^Q{G=jz}A;ho13`Sm$8NL=eO<{Y|nB+X;tt?hGX_qs!Fy;C2?1vL?VuT zA=x<4^$>qi=SCT-kin?)|5^NETR*1wMelU{X*&K>|1ZVA?U>UakAG3Fr2h&2{@+Od z74SK>^fUfoYEI2qOUa&bFPnhIsF$HBX_(*)Wuv)NvwJR1 z!p!e2W;IXsdQhr{o_TdpH_XQo>NXkw7^8O&VKf0ogm*U!AC@3`2N9d0PQwukc)PE; z1Q|NuNU8jeL>=0nHc~`T?eU>`bEt0~Xe|qNBhkxvDuRdb_*P45cr2&Ek?wSa=23$W zJW|v@;NdP=AN4Rq9ucv781Ig-%8JQ@Tx(PcO-+ujrL;l=F_w)KGFetk*Xz+@h4Sbv z2xnsij7=D3r4>k9nufV3a#EgkAxoXEhhz+5IZ8&;iatt=VlYDZ-K6qC#F$`>#)`OJ%|<%x8O)wnqfnzH%_tOO0;5w`BuD|!uChCnW)Vc$zTW7Rve-JF70nW`;W{zz>MJGi<*KzNQl@p->%k$aD?ouFZ_cL z@9Pwg)N#M01IN|sHGH&MJwVX7TERkWiif1*!DcLOjp? zF2Vd#6--hy=AvZ1pnC-Ze@2z8H~wkA866O7&|aq}3~N8Ep&xs(=KBJ{)GnCB>b{t5 zr{!ykD-Fd29%?!in0HH7jW84bao3{xj#jW@zAdJt9F^Ww(6V&i2PVjUA)%S>ssS(v zpMZ+twa%;gUt;(#kp$8!OYN3Xgil?k#n~eX9Ht(#M7D_R#i>*8l6Gk!-+>mlw{%zF zG6qnKaeAz|X^VLJ^`>3QF;(609hH4L5nfG%vM5kSaI;M~_#fc=M`{t@qp7Ei)x*RT zxlw9q7hxtA8yTGmb5=9dvthXPiUEGHKh+RRCV)gsO_2sjne=Tf5_d&>HG#WUSpHA*-iRV+G5nNQuaS8_adz_?1)~= zwhL-UK+az9ER@E#rfd=UEpMLC&8>VDd3!2Ci$P?##&3kj+V5eHHLs)b^zkGA^A_@3 zEMQJWXo;a736$fpeyqq_1U`XZL5+7a8wYF^d2i$LSL9Xkm|78%i-E-Sq7%5 z!2#-o`=uOfm0g|{_7&no`__&1zfI!fSOO9nrT2e$LKmi}Z50A1d9${f<>VS~rHD^V zljI58?f#1Vbbgucw`3K}o&BkE?vl2w3C)k~?-&qY(QkSAJ2kpqhuJ`w_}aYM@*nnh zcq_w~0aE3zISLQFF5;X8+uP59@IG5o+o!;c8p zvSXd}-*uGmr^m}5^0@q{oTw1Bz!$#9u*q&>Blee;+lS#XUN320-i6Y+9j^|S=?Wz- zXX%65D^|?3ZaeT4d?t9fgNf_gbK+UnIA3i!zV5O32AlX6OML%O^Gtk;BlAf9ltx}H zv!HtQ>3KntEsSYSvg?kc(6hyRa#eVeA-?n&h>OER4e_8R;=}E~66TA-PDB5}+3{S! zzS^?zLjQJnC#^e@Z#+7EI}b|`6T<&C0hTldINbg%O+PX`+tANF7J63C!exIJRH?a7R1 zY?D2tWqvySQ^T_vh9JeWP2mo+-%ZmOgfBJpj~pBQh_Gy`ga6cHqxXk@pl(7x;#lZM zvhh-m+CZOqRQh;Z^u1L6#?6S{`tU5nVQ;^9&K)7YX2tghZf~SMoPM1XFMl0heD9)K zt@j%Sr2iEYPkhK1-i3p7lsEA`O8d||#=ooPZ}f}(&Uq!eK}yyQk`2G`!-n$(jhtIf z-^nq48z66%KPoZ~u{t&dK3si`ho5_B_=ZUL+)!>S^`CpSTm{I*DZC2r5;II|9MDNW z9g_K(`hAYfH@%(NcF&Z~@tmHijxG0x@@mb3Tko&*v8A#ssR9Ne6 z(1T9t%UI@K!-~PWW1NAf3VbUtkl#Q>0*yA%AOqbikk>$G8t5s3&N0vl26|hd?gp|M zXstjU477_mEP`wkX#Z>- zJz=1`4KzWZ`wUcQpvMIY7%1OBO9i^#K*J35oLGG9T}Bj7c2YL$qAvJ9xWNind}Qp zfG16W?h@dI#sI`I#4rzxf$L0&)Jx0FvBoE11lA3Iny@wm%-X6}5>$p#Nh*35)`FhM zkl73S1;e#e1UClQ01Z#A>ZIN4Rf2xHJ~&qk-btdknt6bX?6Qf%KWJh>a0n5-1_2Sh zPNu{4*K`EUZ;b6hiH$v2wd$W*De{&eh0p1g3G@=5HJ05mJDg>|=*H7=i{W&);j~>i zwHHoUhbz3YkH%TH9!fPBrdfLtpf;F}09hv3EEB9+g1rv~VQMAGcGUqF)a9DmZm6#_ z)GrG4bB4OyP=7X4qI7(krIU4`p?gN?W(%D*RXfWTiy*H;iiy|9RwoMHS^Awx$3INa zXm6b(l@fHg1eFB*Rl?m(xUkrQuml!n?Tzotk)d3=vBcbNGJiCjghpMf-4362=NIaY zCM(rYP+|HbmK8*vHcTtmB~&HZ0jy)0?+|UMRma6h^U!}tFEXSvVx%KPpox%Dke!hi zgIr7YxU#L4I-#EJ7_Kn`jcw4yw@vrOju+3-Ip&8aitu?)lI_=dDa8jRg1!W$Dw@Hr z;AHJntA52{PTS?EpY?mK`i7_8-^)I&%^i@RprtkPV&#uU`1{?m5?rM&eoLQT94JQ@ z1JugREN&e~?BtFZf-)f;2dUWrWr@y-b#2wBgyJnnvz@BhI(DC}Wv{2LLiQmd`+P0U zcBoLHwbMmRSBi;Q%+tGiaI#kH*)p`J*5)|N%$&vXjN$dH;nhocd19&5yowC3RXI8p zvit05c(GtPg1F4)>#3&;;J8|I3W+(4f*EfZCJV!Svd_{U99hFgPH3Orob2?ht1!4^ z+P{pBk=|J>GK7o=S(6HL5An+pu|lyhj{8v5f`W=|nl2sPp5|z(FBFn}tSu<$W?g=+ zH!?-#G?98kLyl)Pv>+Bv6mcOQQu;|oP1j>aAd}CfqZ8lv??m^)T&lvB<9ptbv=;L# zx{ys#g(dsj1nedI1Hpj^{ICf(Njk`<2;_-pfMcfdxeFh6rG!>Nenk6Bl*qS$~QYhFcitm`T(Hy8mZf)R1sA^`ZP%72sW zxWyRm7Qk87B6Rt-upU97rj}vQ|2fy``Hd=9?in=kZMjP$hc4})=n-2C+n zU8#BX(Yyk$k<@z!>s)q9e#|2@w)qiZ>0l_mbf#E-8S6*|$cVa5C7I+udC$&lX>;zD z0NzS=2?WofB7oG8?UAAJ%#y`OIZJdUbYvFSiI7?8m1GtfjQoktvL3v|n+9P}41?H` zSqHS_bjJJP*3gJtvgh_knG_G2#ilOtP8091F>%R}g0g!>dj>T!aF%|E5A{kG9I*If zW@mC#uk(iXD?KY(#_ID1tH$|A60M7f3tg{`ynAJT$6kCMc1rnp2K;))o8L<6qaG4xtBN2`&u zw2$`nve$i+G~nFQv0079FXB`qc*q*ZW_2mSq(zo(+_~0?X+msW(OIR(m?-RBxmJ>t zgfG=+wN-8Lka|^GXME7IfT$JT6e3AWR`sMrlf0-&nwVDWG&@Tl);PO?h0qLKO6Pzf zkSw^0&PWWCG_+pbIZamkXwDZ=804yKyUvp>r5~Cm@)OO*wel=cJ58ik3Pi3*`~0HD z7f9edYm+oPPw5EsiPUX_w64x!Oe8)#r=mzd({-Zpi)j>>$QiR7nEV^M#t3siFbkKJ zu*B~n{FGBd(wK+{DHIe7o#aQ>R@0Jm5sT_?#O!Ls6dKi4LwdNPMYS1GW8tNpm_^#D zqOt;*VMP5c!?YmhN`$#Bh?=NHec$BG1zOZ#N5V(2TdTq;ggQZo8e1c~(wmC>}Nx?+e8yR#$Ybkkj1s zPV5@npq6cv?9!EMxx`RT47tLlqOb$8oYssb>^!j3oI|cxgyk$)mJ}_rIZMm6q^3pB zs*>a7X0#MMSz@{Fc2=Xg$N&Y&(c0HXo957{4Js2qHnm0rqNNlde`~GdBoQ~H4)j7OJB!`BI&oW$`u9?6rNtR0jr{O5D1y3m{Dz*h( zIHuZy$CX8c?Xs#kb{&3&=7p9oQ(C;yQCIKR8e2R%9clN=;U`13*GZp9`v}s-$Mf^R zkfI+_5dG$}h(6m0)>Q<1d@{x9kqAnP=Gy}2ab3cE*;$?uX|z|x?t|%&?#ZZ*-^V^d?qDY_7I zixR{%O(Y61$&(y*mi`S{4f9QE6448D%3lk_-Ae0`RPKb5{5~FDJD5;LUEM_fE+Rj3 z0FAU4I#SS0Qqa%_TI}dr2q79apXk!%p0igOi)%q?1gWR)V6B}FMV z#IsoU*2is<4A|L#%$wyxjQt<~%`l7;@pLl%0+5x0$$z9iL*$s-Ht-1arf zoOU~>m^d=(*@7-xGi42a7N;tnBobtQkOvye*xH}5(z)~mxsxc-+)1>u%-l(Ip$tC8 zL$^2~c>c0fiNe|xb=~?O*pfi>txkfW zwyk7U>UBTqqg#4YLriS0ev2Os$s{Hf6tkxYzn!yMY~m$)l-(HZ1e=4v6UPniQhC9 z>;&~!V)1}_aAV9HLB9cw4E0gv3T=UcL*hOgLLIHlCR4>`#@I7e(yFzc9;p`$-qCCw zbxdj1=Y=|fE98AB?>d3u@wy2lXyoLkta?)F$U@!6l9B6(pBC^0k0=DTxlQUgA`kZ@ zBzLVP1ie{1Nb~7>{7!q^hIp@zC1*16Fd>Vs$>wOzEH@7V8dvE=fzs^#tk^>C>F(WIvm6bm@j%N^Bw!tDB^? zgZxWvc!`((CbbEVtQ}Tl5W>wKqUGn>x4?-~(h}RlvDlu6j)b-D3-)}B>BC@>vei0e zoLg|YWIWrBlr-(eX*~ZE*WY}(ztC*WnUuDuvH%@Z{}L;c90syK)fIKr8>&Ze8iZpZ zY@>m3E!~G(pCETzpSUX}Ki-sr=Gw1fU&UB%Ih$DNq4rMYg?8XK9!q3P;|x#5#P@5w zi|GG_c0NB=H72I=Qz%OT<;R}MiB&>7OJ<>k`0N3BmS+RM&b+f?fl8xTEYAx25aSUzGwS;F zMe%WDfapsXn5-5s2YOCjri0jz$3q6_wJPTYGnyX{bMBu(0rJz`=7LbyJj_d>yma*% zis6pd<(8~YM!>~f_2ZluVm8Dja=A$7u@2-Bk}b7;oMo{U`3icB*kvq-TW@lZT{EOT z2oGT>fmP`0rZ6pD;GzT27B?=%_dZI1QxRI<;50YF@HN+BVq=n^!s`Ht@_$$eV`8=# zWfO;g9m;_n7>0w`L=A_dt=Bg38ha?O+VEh*E6~WRY8ARm&Wj1Ui74$Zbke-fClo?D<&~#-1g4G^&Y9_fnF5xcwr18k5H` z5^nhnKpY=sFsXwn-G*B5PcgrGi^F#s#`Y%0Eh1AXO{luftw`Fr)d3e4dp4v!!xb<_` zZ`bVQEF0{%o^j;lHfi?|0>pKb3@#7L5;+_?G{)I-f|@uSARC%-SQ!2o;22~W(pcti z5rsnT;u?~>9>_byw+;?}i*-sJ|&Il5&Rn^7JkYPa09SoR1m z$Ujflpc(@$Hc(sgMZIRA1qQl6pr;LVuYs-I^95@2-MF&DF$kbN~x{}`n{)4;{bu$ z8t6L%T`SPu>vXa|G*GcXUm9qYfffj~*+8!t=mmk^G0>9+suAb~16c<8UZBSeG{Zn0 zX-ib8hFlXh-dm>vMWJeZm%3RjjFN)inJSYc{vrXq~E6 z*J-Rl2A@;0^u8ZBl_Ahg+7rvUe!32xN%GNYk9OuaQ0fsNwrzBlK{9Pos+zV!MhjYj zHVJviwOC}|L5~*hfmGT&^qj6bOgjJ0iwtuahK{WbIyj6e{tLv+S%5BLgw#_SS1GKB zLWU#PCyB*AIA7MdIh0W+tH=dR*g~$79z=8j>43!@n(+v*-v znUpUPH9v>?*aPw4MTnlfaq@?o5F95GpX!OsyeG?h*%;)%o=%3S%Q^Wfk`BsS=v+`u zSOiXFwzvaOzj8h0Y^gzYXXp&rElTyVFkrDkG9Yj>3wVnlco_n1=X{SWucG=f-hfyN zfytSanunz{ZUv|I#hs$D$7H&(GvE zw#Q0hJx`03U(8ICVP!F+OX)^Z)qQ!bbW>%PL5k|d*6C#=&+u2hi1^Gl1~|JH!-%Wd zWrRN;kco0J)*D$4I_Y)297K?!db1o9gn;FsEt-fGokDdz1%ibg8po0}ojY#QqfRwh z{dXYMq+@cEe`FO*tK8Rtx`}{Ew%@G z=s6sl-ARnhAaB*I^5!o~CN1h_QGK+DspQy7cgfnQzMkm4H?N|!)P>?n<`(K)90ynK zjYQ=Nou%z{{*J9Q%ooO(%b=ZKxoSfs=$KfZf;4xC{_g3Bz6H^F|F69F<2~G7OG*qF z{TGuOGXcbI#y}hKnIvGxd6Nvnj&qzYhM?ReF$kWK7f{D!k)8FiIw_|_9qH^$bHU4Q z9T&UzO#$8csxF{Aq2*GS?RZi++{_?dfE7#?O)g!BG_mx_+=qxtPZiU1fvkgF>~SheoTwUD9#xq|Aw=WKL9n14zD_%W~?!|i+`i8lB}PTa*23FUA_J$Q`(xy zq)RN%*M}zA&*J20iFO1@Q<4F`SgLYJJoq1yd}w+XeJ|;(E34xAfd-QdE|qAdwvECp z8C~Vi{?a*jEH;8%>tJ|y?B=W-j-ka&7?nP0vm#<6N7Z2)8tuU?z~fYv9~O~-&&?=jptoD&SLInq6y1ng)V(w6QAz!`CCi;;%9m0H0M`+w?50$JA9vE zmeuwrj%DSo~GJ1s2BLj;)G7@)=Tij+r^Y~o6dTo3Ujjl_rB zPY|b1kDN_2)m`X0G#@J;4rjM;-@CJH6QX#n-;FZq{liG* z3EUK-;ac?&Pq}$&e$0KZe(sUA_fpw>j?!~OmVVjgEW3u6sO!6hhg?dzL0zN+ab}rT z#aT8+6Rj2^v#~(dg6KwiK!ve%A#%zc1ZCF>SMJo3S`%{I%|ov%uTr=08XkqO*~0wl zDSGgeM&GKIU!ha8$Uwb-^0*1)Uk1J3pjkrrsDY*%XrMqP2AW`?e1WDK=yC&16KJe~ zE-=s>fi5;shJoe^be@4a8|Z0)(hOub&>Dd{8t8vrbOPQJ=-}l#0Xq#;FHi(1ENhQV z7hZ1At?V8=$o>bO)?E}AURFQK$mXU)cVaxQ*2c&dX)=}ypAfPfy%j^wf5e-AS;uLc zFU2j>;^0K`zKZy1%PvP6HNi;cmG>1R^!;Pz>Q0>s#!Y4{09E4+pRbRU#F#^$vLPc! zmUv25`5M=Eu3gEDCDj(-8xmOM>(p!lfTYbV@b1#p zSh_=w^O2JNb%9nNv79eXXokPt3~#ORVVeHgW_Ys3uh971CY)Sw!2cSJ2f&dn9od{T zO1WHEpjM!=@={Wj^mxe^NujO@)dv#QOQP=Fn@ccvr2{>+)>}%=(3L5gO*!#SVvEMtq-h*sO$GfMDKTaVjoc{i_X4PTKgvZXXT48yl|F#Uu4U# z){1J?J#llW!xhz^CwQ_y;)H(4(e@O{oHyX&vCQ>;x#PL_%kgzLJ5AS#oujV5HuH0H z&`h>$Twt~6RBY8!IAiieT$>OaYN(=p3;PZwc-QZpHhe8EQf z4m{i>dkgZ7)beeE2$?R^GDTfA#yML1Ei;a5wc};un2p0@t+qZO{Ra746H;N2Wjeqt zoNrWl9PjvK_m5Gj+|fc+;phH+SL*%&2C`B$k3jL)oX>V96$((h?8J)Z_bM=QFD zI>@x5B>_Ie#k>X1m{CJ;R@rw!uTgrvZ_w}Z;uUa8rK_>8?W>- z7vFqTxrnG#E3szjb(%S_@MaO29_4)NsVMr8UyZ+_Xt&qe$Lo52@A2E@4NYkU%vX4d zuyhsi^&R;l24B>fP0TU^nkvrm7_!06TxHS zp9jtO=V>;La$K1x`0!8Bx9;UKxG^0SgL=Bgq8;AQRZ-oc%e?;({Ws&CH4K@LG~S7y zPaR0`_;^6|xI=csG=$%vKGX5ue~di1YOjgMr_;pVy(0`O;c-P1k0Xwk;^(UtH{<22 z$lDh_+weKAiBF5;i+K3LL&JX?{!#kHkbN7>nY3MIMHu{?Q7kv608~vuRw#xpD8F|iO#((zEG<&2F-et{*iwS=i`uKS;8T~XnPqs6X#?*BV4TM+o zSsQh|HcvXjz%;Beb7oI+>urV226ek=3zW*08kjGQ$%5ncz)t1QO<>>V9QtX;n>K7U z^rfEa3hx|iY>n(PE2m_{W)ZVMk0TV34wNS7R+xnk$_k`>gT`_UH-2xQjNfHCB1fiy zss$Qspl$|QBTz2`wKLF{0(CObzK%K`8;Mhi2KvfC4uSUgbW5_uKwSj-)IjeV=pupE z8R$g=jS=V#11&U=^fBsL1C<%*Ie{KD&@=;mDbQ>KjWbYZ6iMA`AisgU0*yA%AfU$c zT!RTN=eY(Ozix(no{;x4P&)$+7pRkg_ND0bFA*paDEuf312W9P{zrMd$zPk(^JB!W z-^Al@y285N)dB7Q=_i*`IK9?tnY??ub6ox;bw3+snUC+JneM`zpFfsko{4C=MD)Z( z^hc>;4LC(z@RQIwrWkL9H+v-13@Ah^WTi!&cZu}BD52%>8M4nI6U)`*kcpvSl$DQ) zdYz0UWqvL@wdogS5*xF){&2CBBX>;)&Qzb6cbQbI=T)w;71q0)j4N-skSutZ1!}cK zQ#n2qbflm~g5C)l6XhLz(9n0a#O$4}S1Tcd(X+qKPA?pJgs|G76+GKN<%4bt@u>mD3Cj#iVL&vNQ zqK_fhbi%nSWr3P8>mIdAYpGt1EBmM9K*%v!bG{1BVdoF(`8Qa9|BEsNubkW0_jP`?NaGN zjwc%hYJG@6*EH^DIKq5KUdKx&~I;zXtt7+s}y8neA`n5b~<>m2>HBldNU@2LPXcV`A!PlaNe<{}=A z(|A6{(X?Ys-xnSG9>IJpHG0C~W^%iqU7F6N$;=PRM0Eq#_~l-Kkn2h$lC&oxl*j7! z(ywjAsY|HaQ#jn5bBIN`?m_sEx3itpgt0#(s913L$I4-avF>axAvv-ixFp48J;=VLdF zkZJ^RanD&1A@auSc4VV^i8OOx>P>Nb9NX@a)(|9GBUfRLaEEd>4{kfX4RBSY3$EpZ z?bF-1i>uZ~I^cQ=*M+$LWvzTXW5wQ;tpe@0G;m9%C%JX6h{Ih~-`Y6KTlb2t%>HcF z(|Ql2NiQ2Tv6jnafhF>}24r2BtYxjhLa3e{DzZj6cc8yV+`@jom(s*UR9Qe9qPC5U zm7IOU&y0^GrfG6LbP9m9TR9e(^TdDXso&pJ775|uPidrp%mc1Of@5<>4`g|HdZT z!|i94{45OjHuO&)E4_SI7g=T=o&MBVeGrLq>15a-CiQ`PS;KD|COJ(^S}c*1V;s7` zA&*vBa|qvM0w*;FZh3#9v+OhSF2-RyVVYzJxwam!J51&abEH*kpta#Vxn|sd_D^kS zhN_ko6Pzi@8v7&whBIqsLn?G*pkufjb!`BVb9$c*bmT%4=n~tH61y6_eQtDRwA#%b zy5 zTE|zJh{w6C-sLPAC8`s0Wl;O|H!TTu9-)BBQy5?jKaW9WKMq9#Tm=w0$-HOCd;8eI zu_tj5E*fpaR}Bfk`%kK0eAXMEmyFNr z#^+t}dBylVWPFm0&j#^%%=pYOK0}Pp3h^m2KGzwa<;JI0e8w9ekMZeYeD;b@uJJj` z_>40?ttkxE&-kPmpWmH2J?D#$%lPa)s8f2;9-RjT;&Y(C&Vx^k&*vu0U&QBgD2pNEZ4!1%=Sx=ws%8lP*7&zC05_u@0o z_~hUNn~u~usLz7NQ8~qk_h(_^izK$K< zpa%>aRT}i{rgPfZkle}^lzmx05@los`>B``@8u)hm{=awIwMV9@NC$=@w*lz89~@K zqN>gnS%@Gsu2qcvWZ0|M;-Pi~rZ|@}@rg1N?;k&}UmJ37E@@~xy*(rS<(|+i_vT33 zlKr8_j!vp3~qe(E-)afdETkTdU$9cNUI%FoZ=7xq{y%-oh$JWt{Z_rBfLzb3}k z^oE66^MMrCe9h@DIEBX8u3*k|x+Dx9qjlRJ>OZlnKPfR7@H8HszAQSq>xvuv`9n0p6yoTKeQowYq^3EZ_lXoU;2*Oq8F zyv8ioSvHYuWd2)8ssnlG(ya%iD&{TH)=Lfz1=3R0ZuUZ;YHa3q`0*xUX)DxdBGG)^ zq3c?O?K0}Jf{Qd)CtP*=*+$rx6fL$n%Vf)mhf9wO*xTjOb+g;4JUFSv_b+^0kE~81 z$4K)hqQBf9r)fgP1Y1_iAGvygp+~Cvn=U<6#vdvZUoz2aZO|9Etf9m=QNKvc$Qgz5 zB|B*o;8|{XzN6cb7I^xO%=2!|Gx(BR+C0NuJUESS7Mk2_&A^5XnPnD)M3wn~2mp zVU{E1=W~|+2UhA12}crlWy+K3WNd@(6V!R5!m{&vmrh`<+Nqze(*2^deC-=&Nm02i z;8;d`qoE42im_e+#`A@kwcWCK+g8W1C*qAO8UkZ@d|XWJ;rfjnF z2vr5|$yKSl$1kOP0&RD9h6@9Pe>g%H~>0 zX}{h2s6MEx>v7ZoK6^%O$lGIf->xJ{h*Ulk6uuJ@V!YUWem6}{j7y#Bh)5+3$+AwJ z&zHxmqzeDuPh$c0AG$trz&c&C&TlZmq?j5E2}hqr8WU9T`Z)f)5xl{dZQpxWYg$Qo zZ4_RgP*IuS?$I~6xCgdr;fo-of?>vts*LF>QTMnOde(SEeZUT&_alaG?9e+wO!Le~i**)SwCQJO9C&eAVU;>fO) zSf(#yS0&k6_Ko(@;b;#A??d4)>l-Wcn4*jE#d7ozuP6J6Qc_o?7%_jR>~|ZT8c=g@bl!b7QzA23Xh#Jf(rWMP{$=D{x}aW${r#iY04 zZ?V-QIQe{C3tMbaz+h)-ChjFakWk9%@($!k53SF7W3AS{9Cu|-EF)fFyCtomkPZ;i zy{L#9tSd;ZDkQzKTEd0T2x>l?NOM|@W-q%Z#^3^IN{Z&1^WVkGY{gXKz2pkprVFTa z(8`wvbFB}U-KCr3z=TvAAtBxYBJPhuUaOvy?BhI6dp){X@{6AJsH)zQb&jWTs#AFn z7f4Nzn-|&(doHw_MR0k=I3taH4$;N$01?F+Z(`CJbDxQ6u!*UNm?DofwJMJR%bHJx zcw4T%L@CYyPN{k}XK5JGb?pwGhtc6F!+L0l-u}3$9jDTnzC``2+RDZLs7xoT5)d?nAe?M^c%3ziz{6JcgM`MI@ zJ~o;FmHtRv8*mihOiFwrg6Z242J=E$zs}rM)t(jacLK#SfauOZ&a-t(qD!f$;Ot_87n#s;fZICM|{r~NxiC>iAzv!~v_bKXvpq0d>L zB)fP%&a;&4X#de?Z5i0AS?jtYT9q^K{NQfBv}4uq^{}tMY-3Baxt+^??oOXIFfnla z{2_3TeZC3WLFU^`B@M0bl$%zj&_<#S);l{c!EsuG{zigJwFCpT z1ovwOhn1g?zc9{qw)ZFQ5k;(%e&Iy)?@#Gv2M~n&y62WelXa9`Oq5wV%4{9w zNjhzLHR>}8Urj_E>7C>V0qutx5p%LeBO`{%(g=lIGm<6i@@h<8sH;G&8o#xJOpkvL zt0~3O32TPfn&|{pFT*2nD322~nn&J|plzzPaXzMUMX1ea96TP23H4UY853%|k@2xu z(6xXjkBg9cQBCJT&MSgSndphddq>}myH|{ zqC1$iQ%9_RB84&GWS69rg2##=g1hAFR;!>TODqe3?zXuKGCs~NX*h0HopY)8H|Nq|flbA-oL6?~9 zUWU1xD&B1vUC@p5S@^iTm3-38SF*CTwZd2ZU7OsJ>co=zq1XXicP=0P8=o7`tyZl| z>Ydf~39ME5+OLy9zls0J<->p1ff7pU6RYc6aO=>1Rs6P2uL9Bx9w|&Ie~%GZ`wDHKm#T!?LEd$5?(R$=x&YMKgE4xq)Vh z*f=uk<%?$fbLA6MAA7irhVA(x#U)0H30jKBv=o~Qp)cE|y(by(GVQ%kd%uD=+QyM3 zoKzaQ&ub7v+`uiqK|xzkPB8sNlRt(3o9LNMorZcbhoG|tixsLyJzw}q+y;>-0X z+$!1L=X|$SEML>hseuBxn-IR+W+mp7PfZx~T3RtIf(~BFd2yERn?1CE|YFI(F(DRchkV6fJ@Gs z99qB54(`@h>qsT@Wv{+7mGT-L?8LyNYebJU`ooKj#_EjITHA8U&+QlI74HN1N}lx5 z@QJe!-RWlpDQ7g{uH2*rdE~~JGH{_1-v!^K+Dq13drIC;E2boD!FIe!iP-|_am;Te z(iQ%YAgOX4kj{kb1D)Q@>al$^PqNQ{uTHnp{fwiPPWQ(;x-*E5AzlGN_;ymDAMb@W znK8O{CyKF6uB%iddN7wd9qdaO=v$H2sKJ8C-7}AAx-}{TK#vFhxJu2a-zQ7e?&jME zn%3((>nn|$4r|qm?d$?EE$Jc9x!YnxAii6x^~?T3xQ&flXM7cpq*aj(`bevM2U9Aw z9Nh|da7Yeuu1oMmywXL<>wI42DcdjQS*g8f*}kV6l(19f&n)@Foixv;72~fDggu)k zqh`S;NVvr~nEkLsJuX#Br&e7q&kFl-$R_hQmZ;ZH6d%WLstw<4(o58Qv&pGW(*f*X z1Dhr46Ief!i4-5YwW*XCy9A!{u{);0g?gIB6{j?B)8VP_o?(h4cco&XcusBZE)mVu znZbE#f9UdLQscKiB5;9BXrChA@~lf(h*+7-=Rb2xRwU=iZCm$&V}`mRDotheVb74Y zWp-QOu?|LFg?PwOh#f*)@miW>SL9v-q#RR#0E?`b)0Yz9+k;0IXF%?tv$*dW?bU`j zDgHd`j%0~9mN-c#Z8*0Ky`~F4ypQQ2oEJ24KHUD_EY18Dcyhs8*$q5%t>N)Z6TZHR zQmtqb9j6WdZa5EZM4OLd#2j_Z^Gg6cfGM9ZPk-`jnK(_>1Qi*YD z@VMAzWgaE|mUL%F%DNr&pOO3l}gchDg3RIYMqy@yQurebyO5?A-C|)*jI{mJpfX zvlxpe^Un6-Nmy;JHXo`i?M?j=G5#jEd|9Sd4?CohLkr~F1qDX7nOZhEED&`KLAFEA zlXyZG@o`%W6dTpm-RS$bODRhpEaPHtYCY%datR}ix!qHq8aY=^scpuK%ja~iY*amB z;kdaXG*|oSuu)e^EZ_#o1j&JT`XnbLKc)X@o)sQGlxQ*t3ix?xIwpr16IEQl30&k=nBR=~zQ5>pjj(#_17$)y$hDe2(JqDYQW z2KrE-8w@nuK%WS7nSnA5)b>}P!3OGPpuPh2GEh4MjTfksf%Y*iB*qy6B^u}}11%6} zPiHN}76biPpid3-u7SQ4Xq|yxG|XAhGo$OIE)r8r zp~*dMu)Rt^G1!VSoP~Ie*4vYC$ViUTl`>}{u>j+d7+qzQV(vA#H3!3M^Lq`(>0OdJ zSDLv)pbyOT1&~Y5Vv~N-8dSS)mxsU`ap%==l9oi}&Qo>p>n#nxAjwG6)7sIS;%_dDfpJ`@a($-z|jo1=0>Nx?wB5SWF zG^5&Q*{@-CX?;Xp&P9u|b}_W_X6=;^Z<;zOr$~JCq|(ml)61fM>E;UxdI&Uz*rm0- zRGt;~_OO#$!w{%;jQBYAGo1_N>jPpQw!f+FI)MEPU^4_txz-GUQpi+u#s#IG*N6R1w`bXKc~)@fOZ^2MvQ+ zzW9e58?)2a_#^o16}am{DCat?<` z-RROKc9DTb2y~@^&Na|PfpQGg!$9{6)W<-_8R#j2x)|udr&#FXUqgBq4>>(^@I)QY zPW+IsO2{Jy+F+nx1ln$(H-Xdu-Wl-8+DV<7Bdp^!b^sMZ-#qfSwEu^>H-V0_$o{{> z5{O9KD7NATQ5i*XkP#OUbP`Rl`H?6hAda9>TyRHC6qO}T5+yz~GNZVQIBvKOI>1B) z49XG=5ZrMc+{Sv0B5sIlzn|}|?oQwr!2fyw=RI%ENk7kX>(;GXx3*iiZdH{lM-@x* zn$PWZT&L%Jd)Lwd@%Jz?kjCh^9oo8wWoJWaLoAd^i9IXh3;*cs%;LAJ2SapW`=TUgu!C_5US zWvEWZ){n&cyt9l+WU;HP=2N+^2RaMi%g~V_dl`)B_Fkzugx=>v$C*@Dx!HsQt@hBn zl=cij?f`3WUPX9PZ1M*8=ZAKozp2Ti`ngFx;Kb%{rFCRLChW@Yy$Mmz@;N@@{f_t;_g5~x?P@&N zxlVdkXRiXP-h)eTZ$c*I=6N8^FTMS67jks%PE1>qt)kN&GC>sP&;nomg@R;qR-(4Q zHTS4-?n&Y+$M@OOR$qs6E;Wgn=2ovFmiFexg8(PJ-6Lcj>$f7^#;d!%>APItH#U7= zXs`9|1L7td;uTACH28`mzxp^P8Snp}iI-uYX1@JCCBR5dHR%TH?CT$43HCr^0BAkF zG(#5^QGL@#|Hv4Zj5UDSxNkfd_C5iT&|uF4i&Osnb7X>0X>$DXkDOMHjg?hy?~ot%q~Hn}*|J@gHF%wK z)hxIj!6LYYeJyo6_y|u~iyI6@ZwCz(t9ix0d;%iihjB)yF7wk@KY99z_suEoJU!*V z*g^jLi}U*SEn6Rb?(1&IvK}w^{F?hPTU9J>?Lv|-lFxvSm|?hL781GOZEI7{$X&jy z6AkYJM4j`3XV$?+TD*Y$58RjGMXkA)R_QK5c}p$8341q zun(hhMd`u*{1i5o9y*MIOfD}#APO#+GO9h|HpGtYD_4|JzQsA-prV?Y7}44-Fad&+ zmR`@bCOw^T<&KIXy?d<*BEX#TA4k{~2{|6+dYz2$>j{`=}B+Dq%nmuz`wDva>3p`rxvhiiV_}fnPkP z-JoEEbWqvA?D(f4?zHX7{6?`S<^+y~_nma9mU1dbbN-VnRqWn~;7c z?;zPcx!!%rmln|fX$j(rVnuebJinTq6mJETKk6l^_N(0t!>!Xc;!3?@i_q?>|Gs82 zK9J)NB;&6-NXCs%BH+Ufv_71Te!=?l4ECY2Ahw#vpx}dM_A0ZEv&>v{k`0;>HDzp@ z{okALDc38ESvn{)VQv7q6+gufOozAi~S32)%%(jQ>TnW3-HmB|)?d zSt_kF-9p8%_FIGlSZ)zxGm8Mjx_4?mUCmW79M#o|K}sXr3a5522UrmNH&|a$&sytm z1;Kjv4k;%_9AcGy1N&QxiGhZ~*mVepm$IVRyC_l8DjA!Q3TO``o*3Io2NxdYKDR1O zH%SlN-nF9@&Z6%$#rAtBrpUPaN}2mu%Kg znMs6Vb{MqRs6gI*X8}(q3k3jpk{ccPr%M)xG0@K<4E@dH8rlDfgZ%UxAuUOXq(n0>%`U3$sViYtxd(`EN=0V=_Nm0_ou9 zI%E|O?%lwnD0tG@V_sZkxKNA2!MslVvc$Oo+)cu@O^k&M&Q-aDAaHrS1ywx^O@~6> zE9D&MCZI$7>pEUX@>*1_YngFVtuA&&Tpte>u(BySi^q084(r}GzhY(5T}U@XpgM0W zkkzZL#CK=;)xDE#1JBZ(NF53VvYF}tMSe!=r$j$v^+OrITlzoRviz1h^XrFd)@C%h zS|oBUG~Ewv>EMGO1_eKar?r(NAlkpZ5g z8LSz)I2;WM+L`h(o|10hO0_wz2Qj33Xv0fEFi$a=-{c3}3D@9GQU+;V9CdoEy)rjg z>;A}VLBC@jRNoqGD9yuM;W`7WxUTKq!6wdUB^STau=(DttYby8cWFm9 zorB}sTGvY_s?$x5r$=4wUK9SN-eo($eHU?mj-U%u&<-LMt-1{o#ID%XwX|2orjDft zX^nMoj=Raw=zjYhZ-!;DKm1&D)}HX_`T^?*tVL9bMli* zl+|3MQ_z21bZRS_o;wVRT6(2;daHEviMxSK5VX%9Sw(ffw85%C6`)YU<>+|8&(iWN z_g{hK-fs$4nQ4TII3;sj9%`c`gQpaxw+ zgDV6WaI5GwQ7(dDJ!>@ds1uD59ktrvMj1EjQ2f~K8aszf6$E%r)D`z!(`@`^WAqNV zee8<=%geeCYccK=jhaX9Y`tqMXmaCcxP}5NN66v`J`ODaLOmgZnyP|f}P3O^pQtIlZz z9iy@vouW?6-;FmOnATXR%ja9aSx+mT?oPLNJC~O4n&3Cr83+kIjUV_F9izla&vVpT zyJ@o6TNOYqkaARc&3)(_Qsq&GM>k5O>MD9#DOyFrCACRhDpy%ip4eI^5l5#UY06D$ z_udu93|+u*p!4WgyGlY;60;%LtPVyiHAEK#PokE~0ma()sF$ryeyKV+wiQjt8c$ZV z()LYMmz9gh@ME!*i2WP4P|B6|8Rzu_r z^iDq1aoh?T3|6eLj4i;o!riR!Q)!kJ$zDz9RbzMc}a#u^+O1a42Ie@_K>qu-*`k@5J|? zp&P#7!#XSMpL!<)ztIl8SG6*48&O`8;f(!q;=du;hG1lDg>eUw^n!3?m;4je$K45m zU=vP21JdV>za_z}5m;}ksh3$}uXk7SB+hfaX&yovor-%+J+(8ZVsZ}m=3z;izY*Kk zb!4%TVrXzZ6`O3Ah(XPh_VWzxB?fz?84Q2c8go!KJHO)CtkNTN-l2?K@#nHh%w0yW zrtXIF8ySg3f+Q1-hip11h#uAEs=1 zILG8-{O$9qTD&_FO4`PiM<&!f{!RpCbZ7NzLGcuK9RQyPsWsB(Cp8Lw_j^Kf6AKzgKtmyg7C&+TpY8!JNU{#8HP@pk zu`@vI=o4G2#JYgoIEYTg(qdd3Dm;z8J~b3U4}Z2`c)8*%qxz{Vby!n{DY;o} z+hG0M6L>)c&V~RNUY3v)DUP)iBS(OcfBlLa;>jobFVG=cHy>@5qV*)2>C%xMfDYmk zOKz~tacdBzyrXvmeZz~Er8_}apZ(*HM&un2o%}V0{$D^93;U90mK~S2$cJ661YY*& zj{|D9_WLT(WrcAT1^)79YEhy%u5$spK!E+0$66cZo&xTzgaj;HLTp!Vlx(#AEIfHr zGKuSPe84rOkpZWbYD4Zwa2vVEdbPWiOqu$=*0r*lGI17tH?xWc_q8uL6j7UWyr+_7 z^c_NsqF^+8LyGH2@7KkuH}YdIl7Yp|7;T%ZDtDJy@iQf*{F=T@f1gFN^!1W!A{I4p zf4~}X;+aN&T28Pdw$xpPMZl1vF}R7ILibze_QSeVG=>X$0rz<~e_2~2^d`2f#NeF# zn&XTXSFF3YsFZ5G#2@Q=ZK8CTU1^u9>#QsQ9v5e037Zd(5RbeLiB=wLwV;UUmK^7F zb&|E>&b+XVQO6tILrU%y1Y1NG7zc0*0G0|yh@*I7aNqozli*>>$X0H+wV^dou=9?t z1rbTTR!hnJ_Xk*z9%b!nJ`OJyJzkB6tj+yIyZShCY?DBEgWH^BF4$8@B7-2jjp~%sI3xnfTiJ}TR zZZjTtF&@S70)&wjw$^tdb_vd?;Q?lYz(iWzTerUi#bad|8j6*Lbtg6Drn&v;n>mMK zl51`nD(aqdirIEgtR$hz?hH1sU!p`{4Wq;9?1PA%CdXP#Avi&7fQq}% z$`8}X2Dgm(q_96UI(y288|CG0Z=+oAE(STg07b@KOI;INaz_wb_)teaSVY37lW;f? z6fE?*A3)7t9v5a`;PzdstqZz)t3+k@b;QTyKiHCvPSfO(`F3C%vwB;qE*^}e{=X zgG%;qkd3eBYaEWm`*@`=9RGnW5$cCL0RZg9u~?9P(qzXpCT@cpoGC0 zG*V^ht(W4Q9ITO>ZV&zBy2HJYY~mAMX4Nrrp(pu#79_8NB&nPV$i4n8`)OIHIej*Noi-x-J9P?kZIXA zxQ9*F_xPp_+}Z@5qgf(GwdiZldbiQKFW+7>-drmH{_h5!S>GGgy^D1^W{Q@7laAMp z2VeLVfhRPzXFaJlUpJn=&Gdea8SbhJ*YR}xZ{U9uwi5UD*Ubi%MZO319S_N%#|-o7~lKinQgUofzCYzovjGw3{y( zCt^DS%&$2?lWMbk7UrsZGSxaY3@3z$@v_+{d=FBxQMhnz(;)l`N!cKLq7fUt&Yj|8 zZix3Ay(U_@s|u~(=(W+x4tkSJWd2DFtS=E;q9~&(pjfPdwHiQvXf0f0BkL##Yh?Wy z!O?ovyGoCq1zsp;Zf5+H7Go%u)@n%D2&#e`&9}x+6(9<`jh-sV(R?453w#srd~4(! z&ASbpR9^A@{fH5 z`6=Lv{4Q47iP%00nNCRK7$UV6mqJq(XuaGkaK{bE%&7tyYnMW<*h50 zRydSk?uiT9m@R)<7Iu_2w!&L|dZ$J<6UQ#civ`{~z?<7gWD=v-m<>q&2bp#E5GiEr zKmm6CjN8_b<|ck=Dmk_v3zs4?k#@?m-$V$Np$t#}I-7q9!IMp7fmvF{DxfU&FIF_^}w%b?`aMY;NM0N~O+S#xrrsB|5c(&!PYq z`3-IuKn6z~=kS+4=rAhlCG%Ihb(%yTq{%YX z_z+M@RWsqsJbGWDUk5t7+V2HhSP!pPHl@Irk5Hk<94O3_#ax-;(FR$qGSpSf_{W%R zB3(ePdiNT6A00u2KJU7&L?ON8T$;j!Mxq}{bQv6D13+kepO=e7dLvw2_Z9qf1-`EQ*r4wib=PRWXXzb=|7SS}sYQ%1?6KL4hcSV5EN?!s`(K8W(n)_l#bUm-;Zhpl|A< zx6pd0KIm90yZ1@5Hl+rz&j`YJe)S)PNj? zr%&A&DH*?nTCb{qM#?>UrS1o_3(jj4*{#Bmq!s}KwMLZn=1AVZu*3x$ihYOEgVsRJ zR(^8T3S5}0zF1W{TG?I0FwICQs}75^bRACD-LIcX)m^JUk&pD5h+X+5^cUzsap7gM=2LdJt*Nr%9t&)sO@I)<<7K*wVHL>H$JyYcN3ASzPv^~^7%xhHcnSm zZDuMH@LCVNPC(r_2UO0Uy7>l%_Y@>>e1|Hy!Q^$<@FB!XK~xggFF}T zKb?PeKaS4he*^z>`LE&sJ65d=gO8z6PDCEF{6npeuPJ;jubR%U)Xt*n(QLT8S6Sn+ zfk$EREx=p|jRjKY1Lk)t$vX0k$*hLj2|0ksOFJw2| z*A7M7lX>LT44D>5*p)Ppcz!byg(Jg*Q}JKhcKk?97PUo37XQe7LS*~srfj#EAa~MC z93QUq$ou>b?>C(pI?879DC`uD_7u8iD6}lkbo{3_kKZ@k$H%{7 zJHoL07!l^B7XKtGk7VqQ9y%TV)^IHjf(Yo`)tPKG?Wbv(pLF?l-He~Aa;j-~lc(1B zW}4czNxZ8OF;hjVW{JcJoGv_*ssL#AS+Td-7G=aN!&u?c9|aNp7wGu=};t{z)y(JR}xi1{fD!;K^K- zNxfwOq%&Z?%1srdP8m4BllXIn1cgyafc*1YDv!Oaa3@@m=7r%Wck0V7-qgS!~N8E8AYS6|+fO&u(y-Pee)mqh{;ANLf7|LE%xu^%6DiP`WsOfND z!LK`boyLUh*J!frwq26a#5=?fA$J%eX1n@NWQtwsUg9a|gp+$p&-L=i(Wv*GC05KiYMzVU z%BY3hWT_=)i``G`J@UYvaB-={h}@_5vw3%q^JAN~5>j8ZEYKfYsdiRM&)MpY(UfVQ z*VAR%a+T;n#*4Y( zY)|B%43TF3S}hAZO>ez92c*ZJETdNwj`Z}t&h%)%o8HXL=*`(z{CyYVSf)%q`n%~x zE3ug>%Ct8&;&ht24%5xpZlz4jUQ zwnH!7|4!PRUY_;8AtM}l9hhORqvordz?*`rq_m zwjK|FrariEQ#d-sOB0b6>tlK>cxtowRhk-vdwLRkZHGi!rM(CeMM3HY=MNx&C_c-m zv@Q4lIEz+K+z`(3*ef#Ftf#dsyEMPQnd@g-|E;Q3S<28%nzuAjX)(*`B7D9X3AkV; zS6C7r;Axzhp|PF%kS@zhn-N=HxFl7UCE=Se22b7oPw92toF27Qb)zJ_!PEOsL%MEk zhre`YSL0-mt{?D6J2rZa9C8tROvHM=f>%}x8=j+8w-7a@!cF0|DDbz07X`!DZ8?)F z3O>;6BvJcKGTFGR5B06rCR$9n+`P52`o*j7-2@Br`mFkwcu7PG;DUX)c#o$x@l@UA z1NvLQ8_fc)C&2xM(JjDXZWHDhHYDzx+KzJ5swA0cGr2xS`_#cy~2qrg4(7Fk>2qU4apAjVJ}uI+=VTr9^jIqX zg`kAbSf*o(47SpZ5NxJkSkth-u675DB`-eIie-P3S`pbDa_)cjl0Q!Am3+4sc{}0N zE!hL*q2ib)K!kCYP^ui{%2 zXY2c~L<;}nSDo(xk7SpwGXBpd4OgtRNuat)YMHpmc9V%Bxz02JY7O~;$xk0NN7>Iuxm!`*5qa=?x!rhc9Ig!Qf`kCQ z2-hc(EE0%=N_}%9!3pn@`)VRP?`2>;Yn!$A7S1<_7W}80^WcNnqMJ=BkMJOF59ryV zQFU1tcdBQhG%D+SojZJAU98)sG22zXj$Rm5DBxB+?EtJQQ+GEJCh+Gx?L7M`(}+Jz zfnT#Hm8&rBR;6Gs=viI0j@o8E2h;ZU4ZgC97k2+}#=N~ySFW@m{E26Q4EI@{`*51C zpXlrEeo;e82T>KTHw8ZX9fFbBUNXcbVxu$#I1sENj)l5d>Q!PmlZQIj=6IE#R?(uB zXDCHr$-S+q;5%v_hU;ETCi^cl7qM0M7_}ow0=GZ+=4&E&?i7g1jdCwj+wL{x;6683@AvD+Od72ZL zf1!K-D67iy^F7+L^f79M8)*Fe#*T!9X-I`baFLs?Sc%9xAeeoeH7cUDQ8by>Y!^2+ zb9X^sNuqd&cXZCxtm6P&Pl|%Y!CR%Bum1@$OeU{PMnBNMi?ie@aa-XYU87 zh{0%w^L*EM#X_l1I;gH<;Rbu_P%-g~tZ1eAtOPb2Rz`awp~DisoOn zNU_G}g{|eX}B|DyeV} z^=b4LM*ma-Kt`JSVZO0S!x=iq2ciX+wDVuHfURKHT)&8^4!?xxzdQA8^n zcNb@IX6Lwt><$g8?zB&g-N8B1Kmh;L;A=yWgVtOA(@<@6ig%)EMysaMO8{ZvC>YWS z?c&^Zei{94>pf1%0dy;Ug4)9u1{&OjJ^(Tt=)k!KyXL3#q8&M>As36%;*;iM{FTBMI?Xc? zyRgpc)dOJa5Ht787HAv22j+F4HNM4hussKN5ne&C0!A)L(I-&rn67M#$j^FBX<&*t z$&CTkowx9*wLrZQ90P1XpN`fic$`tUN36Wu*!Y3n}igt zj1!Mu<3PZK##5oMALBz07F932XJ?r3J|Z!lx&Gox3D57ol!yHS3YBW8w50bk=Fk#R zA`iO}73^n_XG_y~#=fq4ow3H%bVJ$SVR>)yAWRuvxq*7`=e8JiFiMFG~Ls z4;I#0>rR#)#!wkg-A2-2CkB01Z+SU_wZ&v?K__va(hR5^S+K?V$2+TT5br{$WGeYn zM1*p=r(AXl9n3y(2b1kQlP8F~MTTV_8h_%Zr=P0~W5BJ-M&t;ejjN8kIn zAomjrXP@`v0PH+ka0~jOZp$3LL5}4+(3w*X>bT#z#frC4Dsg-ZVIK_Xpm>9uN#WXD ztHE7oRS}=8DxV+S7Z5~dcp{4+f@6-G`SRv0e#CuMsw-Er#uSWxu>S|_fevC_d=^{r zpdvma2A(A%WmAefQTF>UK+IHLvwyUZAN40(+`bkgUod*QG?V;bC-l_uird63-0BU*@f|0H4aJpFP#k-od#XbfE>6JWSdY+V!N~6nQi8C5K!C?1nT^oM`AQ3xh8%&kW zD}&g>KJv{z@*G7zArl!)jO!ZR+;|9tkMh>1)=%&f3HADE$D$^k@_ehbv13Ko%|$yND#yk}L?4;Xl6?)@$@E|Drs}7TSEI zmyZ(_<423faw(2TX2&?|Y>Q|B)rFnNbYIK#^<)5vJ^fdc*j+r3*j|b|)Dn}#z^pAh z-QBpH>09xwxKvB2pX_6dwHU>>66;*WnuMr?RGX@Ib=AeUD)Hlpb}ZaY*Mu(-8zkI& zAQ*mR^9AMME6aP?Jz!nvvFbJ7zDigNzzT+sw+VZLdku92zGjOrWx2mcFBSR;LQjBh zm#v&^UaK*1cK0}0N_c;88jsX0=SM4uwJO!hk;X}6y=GSIlZ2R-Kz>*znb*5FOdLop zh?HJ0VZG_*7-)mI=vEX|%`#C&p7QbE5;M;cIn08tn?{nbtdxx9DIV)>VcjaMcWknf zSR*3Zz;PILDJWctS1g;(3Ul#Ck(L(})^f21AG7V_b(G8;zGm6in(B#n@SzzJ+edku z&RaalUQ!Ofe40{b{-TxL%MIyP2H5een{@J_KfqMA6%06CA^R69VG^rG6&D89Vvn5zeubw!|J+f5tES{~c zR`*+pbF5G>9PNhfvu7g-1jM8>a=wqY7E6=6k~mGhhh~}c)>Ee|Y#?HRi2Il(j;$Vk zPb2GHqsxQgRH4KMexY_2WN(Z|^Tx8nWeZHYHJ8i zlNc!@{h2o=3uhta@1I3n1xuPld@P-{D))8ZX2kq62&sCQrI}|U_P3Xa*AZ|y)FY0w zEqXeu2ghSoKrg6T@n2Et|=vm)cu3>-y@g635Pk>p#?p&1QStL0~lg~u#=*6Tr+|r9235dZrec{{$h(ep8J;o^ABX%KOxE9}k;8!uaRnEb<0{pgvqnnjh9u z=m(Oe=zL3~+0MkBAl3LU<)X+lcCU{oxaMXL6O{%v8&bE=H*=H@8R*nrbKE`DJrtTuzF?A0`;+||F!EAI|7U>5+rq@T~33DvuI+-hba#jZi0?a63*#=dl z12SPhn8xjIYungGWXo9DXr15xmkCTUC$5zcIq|C3xbv1D-}>B3mL1O>f%3lonh9AE zWJwVI>!o*YT%_uJ?>YqHr#jRlf;HU{{qG5uuyv1gFi)%cXwEyPjw9QRE+h4NKYUPm z$1={vIn*4e8}Ov+RYN}8&-Q(RP#rW^L@VI%pDEB$71{wfs{Tpj>6y6_X6z*%sxT+v z@u14`4?nY6;6s;M=qmT8Lw#r^p=4`MvPIk-m7fD(xF}fYNTDd0SI)!i-rhFJd4$Sr zEl_P{{>*g57x_ZtON@s|5V?v6?7W30>3W%L&=IQ?Lt0dotebAsLdh(4x{p!dW4x~z zzYyZj81(lWrkwDxH}^1|Zi*3EVJSw&Xa<;w%~iz9h#1aejzqEb=3LL0T8Bre$MB_* zjGfe)dHxK-VX>!=_sK%y9i?~^1>ZtHFU5Fj7SrX(7-nZ)t;9@+cTX885*Vntetxr+ zN3^P&*Uw+n?2I$XNJ!dy{Q^x-_xzVb>lBs?ZYsw~4L9QXe zV?;fO9KZwX_FQDzD24|h)1Y`R2zwJ!RZCb6VV@BeEoi7#NaUNV=%+dxVhutUxW;|< zd>iP`E!#(lbOEco=WeN}_J+0aDyCiiCQi3QRoeT&bqefEpxcQ)SM%5Es@bWstQ-hF z^|iNq4AN9bnKM761*_g2Oqg43J)Bpc_W;RgUzqE)|%cYiaESGxo`LM1i12JD|o zWklJKRgi4#3%{}m_Op7m&|@~Z0x&cE{cxKt#?DxPjLu>o9W(V>u}O8>!IqDtj-liA zh8bUvQJZ@B`Dkjz#Q2EKEp4jlO9W!!ltXzU_ZZx&d+G+AMZUUM9<#xA#g-0}7T$+# z_bc7AsirT%u&Rm#NQp*}7&4MVBjsFotqG~#O|!x%o?=pE?`yCQtD+a_D+pQ{$ktdC zGmSw-esn5$DVNMryPT-9}z0qv$~fo8;4t%zAxo?dW!5=u0YB}`6A zo~8IX0Ek_HZ&LF()1}U}UuLXMyTKByclG~P$(v_8=@pC7pkBvC_G&FAOV5J+6FmDv ze4y)okcFH8uRDuZ^d_;n4{Ta_)}rTxV{DIrx6+vA6P|34$Op_G-RY#N1%V@hHO<7r zUa3gw4)5b|?-Zms_(gbO$IURpU$M;#4lSBaxSr3{=2jkgr`YL=HF;#!{bwcl?75CZ zyAtCNME0qg#A?5Q?V8q4_w-f^J*N~i$?*q62EAv**iou@~e;viUgm`IpH@D0Ct*8?l!a8a;C&c1E!t~$pj5h>0|>~2nvmrm)l&X;fWB%=P4TJS9Z$>qAi|K9NDFVXoE0@`;+Y)W%T< zkNKfhmV3s)b?!lXG8)r;xO-E;o9$^6%*rznDU~`}If55;|5e{A+1L+1+Rkp<*b&r) zp9A!Mz`KzWnK(fv512Ou;)?0+B`!8Ya{q{$+fw^`O%P`ox2ldeBt@ zz2ZU7c+f2ZE%KoIJZP3ck9*Km4|-CdJ3Qzb4|-LgDi1o(gMJX`3J*HPgLb7H+?jyF za&nitw7~8{(%5kh0R{axmUUD^Zg7*I#n!hcrvSEzR$Wg6@#CQn8%>y2`sp-qGl_h6 zok`*kBA?|`{1A{k;~7N2dPZioTR`W`_S)R6Xyu6%Fz1bRv3pP4 z&Gb~9`N%1$o4S;B925-9EecA|_QrN98uLVV3BV)THAxn$ zO#Ri=kTWEdyR@5_4!!H=&YX|Tj%vCMqTbeacJwrE)`g;I0Lj>U8||1H*Foc*j+1lG z(dkeZF*QpMt9MUGSj+=4;^{MDLS4mt=TFembmtmqA*9mNAjl!*ds-5c2E!u#i%x}G z>9W%Nt&y^I2iZ@hU@BGzb=-;A!c+>6gDl>byN0KwQB8P0PNDQ*IR_z}4Q|*6KGT;H zmVH*x|F^P8O5{fo+_-aoMY2s<{}iYzASwsVGxF9oRyjt>e*Ezqi7c`Nkjv*?t3}x& z{-!q}KkjjVk#YCmsqjycX*l192R?kN!fz)$oC*AY-9KPDTl4e6SITs%A#o%7o{NGo zKiHTb{H6`i6O19wY~bmA152-CBXnV6V4I?VUC`WoLr7Kaq;u2NUy{8FmZb5ML#^x= zQ|}vbXRC9!7;-6VDh+P1A+3!EEPcFMimX<-1xls5kB&&McYm;O&SSPXWh;XZ8h3-( zI+`sax?fX2R+FFpr;06gt^9?cX4=zWeb9R1O(%5A?{HN2JlawEpl+`tr1XQ-p4c8# zW%uk76G@*hO*M%3`(tlSIjem`C@9mmTSb!-ev9f}YjcZH0?oz(pR5 zzf(x$8)jV1uL0^}5xy5e4H@y^(B{LxuE!dm-~avS)cG{g^QQapegsuux*YDeG9H?9GPL}$ zGAZZelvD0MnvuxcO8gGGacNxmAPKbt8wX(1fO&`(4~r8h4H{U&rD7p=NWdEk`Ks%&18vFpC!{DBeH!v}Th zTh~6pVBG)vXjPPOjXA5_9`u3XZhWc*o(TPLf9Uxk`pPovV~S)}o=j9~WQhlz3`p(h z0uTKk4?SIoBRuFR4=NGpcn|9CK@$b)?Lj+x&|L!U<3YdKtS|P6Kpi}&(Szm+^uy!E z$662iP@qpdXsHMNCeSN@!oN_XQ{DhfwfyCTZxVpeZr+Hj@y$)f9@zlqkK|uNa#=yT zKayxR(PgJrcniq-xt{(`R0nstPjVK11t{`DkbVrYjJge9@^D zJNoLwSG@Z8E*dv?8l*w5&fQBOr)ayojc1?wjvlX*`an(`UCEC3UIf!4A1MFIm2OW% zMr>=`_pBwbdUi74%8sFxuAJ-p<|OO60f?h=}gDD|o-|Q4lUj6&~JQ-kW0&Fz|qQntmR?^Yx$% ztk~41Y@Za>EU2c&j#p&#ewYK!8c{eRk3*8grUG>T7G)iaahuZV%ooQ=)1drSc4vx* zv}#qvN9O$XdB{6+1n&T%*pN(l;~%ae%Ra2MXLH4sYuep7{1*pHWK-jFDAKHTy7&0Q`pC5t8nVv zJ$hDWpXLKJh24#EK%6H4$xmH6#W>%|U2HM34+ZY0u%q#IQyp!@KZ47wJ~-PhvpP9N z_;^pa4k$HQW8lIsjqrRRDIL}BnA#OYKjlsDR^aX#Wn^r{&#j_U_r+qo*?hOFja@6Y zx*weJ&m!(3wgSH&%k8_`kAK9~DDshwB3q}y_-8a$o4Gng+B?M`h> z_xl@L-Y>)WXSDtbt;~dXfG2Tb6Cd3){>Z!UF(#k|*BYj&sJC(pSp0~tLS~kxZt(0sQuQb_=4aaz5^D@LXTfb?EUOIng zZ^4_|LAa|YcSVL=%RI3M$Yk8L8I8mht(3)CBD0ESNEZ7vk@5D0miS>mtjt?Z}D5%MUHJd>4$v`n{Fz7Y;=8b$ZbdY_N92a8LoNG%pXgv0h_ zpNfYYiAJ_A&al+7bkY&Vhf95g!P|*&a7qLXFqGDFbjs8)cTE>>shmehc(tb%*$%aI z@jbF3+T}-TK-gCH_*o^D^EP zaVzy9jX$#Se@Lju_VK9?L&!H)g+Ylyt=zPS)I(QxF9&2gfsUc^U8U-2;=edlxDWrK z0gUr6SGlWD+Wjd`(aKjTCLI!g3s1KK99w|#jyvvV`)1bL;3nCtUuT&KZvH|s&}Sn@ zEfsQ+bMOX3g^hXcL@*hXcP~hs*oI!*f;jk};n4LV$n9s8Y$fNQ4AIg{i#X?I79^o& z=RIfW{dRwvUc60WNNY1yrRaT3kh_APcw%bzT1B=qwPZ{GABz>O`V}Z+)!i4GKJbOs z@g5Uo6IE`_n%K zt0!1)_N+GkMnh>%UmIfNozn^U)ZSOcmuD~MQ-AI~aCKOdhGnTEv2>Q)6OSmQ!7T$r z^U|rNGH5e+FDCrj3@+tjtJmzZ{s7WcbB;;Vad4 z0tyeuG@|shs^k7Cp3`)6j*r+v161T=eB?Kgmm8Fdtn1{>%a}RH!^%ND$AFK72x}Kp zCR$)5n|O9f(-Osu60=cz?Uw1QmA=~fYNj)g%#bN%;&n*~Noiz4Qk=4%h&`y13L^8y zBHV*XL)W9_g{7oo-UoHAVy&vYs&DDX1?Z+@!M+h}91^D}E=Eqyq1#CPq4G%AO8Jq! z+g45yW}xUKTf-6ep;;rEJs>R&BsV<`pf32_vdH5;RD+a3YlCY`1eM+yWJjx95lu6` znknFV%j_N`ALb$HG^Ik^3@ZDmi3Q*1SNwv4a{wO&GEfv?Nh*@Th-3=^(cdZ`r)g;^ zPgf^=p_REG*w@<+Ew3zPY9U2jQbxK$<0>)|bWm4-ibUL<#!KWlK`|<_so^yj^ZdJ0 zRR%gEa*mw3Ua_o1y7>6t%h6^Okqi2-*U`SkP#e_Az5bxG7WsChB{Ggg>rvkQ<$FU~0cf%oKdHfFdKo?jtk;8q=#UeT0lPqPEEj3Q3 zD8_ZBaxMLz%|ceW*B?+bidH^IxD0VU5F3iK>NCl?Q%w|4LtY)mL6D;Y#{0a>)Tm6##&8N9Fl;!&QSh-U6FucYTwwgFk9M zyHiJY1L)X=M`e{_W99A_Aczo1Nml6}IV&&m+qWwg>=SMY-&|TQ!(E&kbxE{Ko2Myncr0XQZ&D zzw%zdsm7alrIphJYdJXUP#9Jz?yF~Y_6K9&k)Dgo!tY+EkjP3PiQyMu#V_Hq@TmLd zE`hV>0roSmkLd$cB}Y=NSUgmcCHfhctY3uInp!*bQ%9)|8g{sVNCvGzXvpdHrIbC9 z*1s)#Vpo=$hFF3_PPmRD zmhSoc;vc<5{PE!|AHUsp;-{qf6WGnCayDH`9XU}?@4c-e?MQ`Jr4Ik-le}>|_&Ei^ zmtiZ9dvykPEB05Ae+@AeOBO>j$XnkJe$7GW#)VDPVP9m*Y!1Pmq77LBQlkw!di;-YmE4veGezJb7s*Tm< z$m_zwKCfPV-3)s5ab_~nnE9*^x(SC*x0E2wCrp{f|KA7QsG!FP0z2@aTLrq^gT{N% zodQ*Q(77J8NTAC-Xs8E$EYKMq^k)y+AkbhBI>dt_h|~4;pglb3V1fSNLG3)~D1mnI zpl?T821f~$ywzA;=RwyC^o0kl@}T(wz3oBIdCYd(eI!^t?d5JSgfxYX#cN zgMJxh+5T0a91jXTXcziA_x&vtbrs!VK|j=#(tUJrF;?-&Qjc?@a9$D4S>U*@dDH0m zu|3xcd2BvMe&$#F+PZ9a+5Fpa*kt?0{rZ1j)-}IIidW-q6~DDD+o>Qiux&xV2d(ET zYr|EMs+}byG|Cdnj*yT|6?9(+oBCI2ffN(HYHB|2I*ou)hD-Gc7C9v;a+RdgF0rIhe*WK7&>7^kOmop%SZh* z?H%<>^T>!!ZMoHx3|3h^Sm|zopw)77m1s|1RL?F!{48guJxuxn&McgtP7F;{ReEve zpBz)+HDVn+JqMtU@|DJ{8G5Zfy-uwY?APg=^DMGm2a-_qk^b{%k_eV^`1BeuM!#h1 za_32+M@gcb!=XWe{=A%EP0=-5_cfWf9#k1?fzLA3An|!1Z6@)%J^WtaDT!BjNMM-1 z?Z}4Iir+d~k8-7-_$|SS-A%rk;{TqBzAFabqB4Qm;QH~U2xV+xfHB>hqk-LQ2l5E< z{Xqn*#{I-1M+82K|Lgkj|7N^cnX!p|8m5gVJPNmh}! z0l5*phi8M6T6U`GLBj6H2f@&6CNkH@D^%62_3`faprHai=|R&x=uCm`@}TQH=wg9x z^q{dGbd5lz9yHv8W(stc2OZ}@{}Sj#4?5I?oIw3OXm1btRiGXow1WqAP?sO`pp7G} zVI3+^YY+O^g9-%tDq(_H<3Xnh^qvPT^q@-xTH!&Dc~BtGd=I+agJui#fCp82&_aQx zd(h<`^f@3c_J!8~&Mfk6?*DOzg#RqFQ-qJ9a{(x~@6&i{D;U24LjBCxH~oBX zHx_QTWgEwT!eTS2qh>ZuaK?u_0YQy?o9=#F1kwvS<2NJVWfi_m7NK!(hDI~~T3)?K z^K;N<}$$33x`8DcHd*lA8{s@6JcODLa1k}uE1Xe#fm#ch+0Tj=8! zW#YCRBSIBbHEtDl^bvagjtHv$twK2v!CkxUM99gX+a~;{$Nk8h;ux-+|vTZ+@%1==}BJ3qDTQrZ_Dw z_vO$>gx)xr{nJzFO6KR&Ev;X6ptPKX-zZo8H5OwrtL0nsmttDjhRy1U*gTmd3H;0zCp5{Y1W4&VW4?g{6R_d!abKG#XY#wdA zU2{|M0S{Nh1B#J5>Sd|m!?a~OG6tBYqhtH9m7-QF2)1GClSXx^W!=EY_nf~&@9K(g zOmQCkCp^v;Ph$Idq8u)e^{3WZ1<^%b4a!f}M=Ng@Pe>L9gTqhF_%KBQ@^9EFmv73>)$CDb}M2gMwqcnBV zfn7InU0mbgn?<pilqrpEi$krm3PZJ)X*5%`)0~Zy}Q^(QnrL}?<*3) zho($EIlCLp*rq3t)c)`Ys4XCOJu|y-M~ka56Ake@q(Ycf#hmI{;cFfPURcmmcC zpQtNNBlAY1-Xsg7#>toewaef_W{N`85&bkQk5^tR>)9A#&f71?)tC zHpy&o6D_{6xg2GYB?LAjx<_HYXbkfl4&4bNUlvpi?3{A9pO;OoRlcghRM3-<2mh@2JBLBmvGx7Coe&a*%PwLbuR?erIT6=nyH|}TMU}0pgmd)8buJfJcwMj z_qi-b{;o5*1oT}I1$lWzsuhL5(NnPfh7}~+!n&%U?}IkXl=dv7O-diirI7KUBsSLW zDt~}*t6@H77X*WHZWE{uh*HhmI0ANzpVpk7g5xOe^p5K6NGr> z@112{`ODuyeH;q`Px$E>EX^UMWWAO&rYp^g<@BKI2L&wYvtr@34J2HE5|Z-1%J2VP zbSgb+lmEWg7ynB=-IltCc4SdsB5FoEdV02LM+M%V(t=;D# zdwII5rVn&JIuom9d7J%Pk-~mHnLRQQwp-rBeZmq9e}#bR%3~QJwTg!iY;TJVt3GJ&h$hKdk<-EhrgWcCby)lm{Lo!jeNk6Z# zvl-aCS?kxNkhXuRSEE$>6XhJ&<93{EJ;8z#Om&Il({T+qS#D-opG8>8vR)!phNVaK z?E8M~E$jcLIOut=6;>ivAvNX(rcL1{P37$RhBJN8tVapDh@iA3hFAqY=w1a4Aqdc) zJm@ijj`5(b9`sLv4)&lOJ!qvsyL-^4fyO~7P+JfB)Ppt(^z}p||EdRdMu_eM4|>6a zas{gQpeH=2P@ozQy3>QM5a=Nfy1|2P7wGREbfpKa6lk&sm3YwC0$uDu#UAvVK&N@o z(H^uvwb~8zpaVT9PoO>?w5tc5D^RWnwep~w1d4dj`a+Y$eFFV7!Lt3X2hA1eGeDu{ zhOWKgbB2^5IroD->s)BhwYF*CS2b}h1%GER8_UKfW5ZwEVwb=(79mpRQ<#FM97#kHEq%?IP``UL{*^V%2nR&_Bwb0Gq!v1}o*}vmi zr320GiK|+@+YK@(d55FIF`m}Kj20w~Wt1Q=Y{S`IM1|$WhIN^+v_ae((~nNZA|ytm znNK~y^wK*SI|r0O!El)*-4M7-#y$rEO7fvJN9D*dP&b@8AK+q-(U(-zZ33Qb!~ALoPm!^|S0qDk6;u+w0nu_KBi7q7Ao z!54M*(c@487hGel=U%<T} zi+uIxpO~8og)>T8Zhr8c#+_mM8EGR>VPZn}Rz-Y{)hBAEA7un7p~;u!x&MwA7jm{(%KV(zsRC+rpQN zr4$0Ah*tXcGxC1zdEGJIEHw*Fjecky{Nf*+rwyvC5yTezU^=t>=!{zIOm}p}WtGJ{ zjwr8p7v;)-HF6I~NZ}1cCwI(;O3h1hRCL;KIAFdwfpFUDIKFH|AJ6DsLa&pa2Qs$q zN&I=lk0&ArP^a^2x*))0ti!WNXJ6|wB1b9}HnXD=Os#7G|hu9^PoC`uJfQ#9`uGlV?Ah)2Yn>aa1T1tgMJX`I1k$2 zgZ8HSxkEjulL!4xpuGWwXCcUxuEa9$Y7~##-M$1M!JFTp2I9Y)jD7QOFm)JRN=4Cv zu&F3NT;VZSfr$k)8LJcKe^skfqb&vZgcAEFm`HDWe-rZxf$jl>0aR_EC^1Usi*PMB zqqEsMS7-DCz2t&JDPE=2%FcsM96E04(#DbGD~k~>d1uCUqbsBX1=ZLm00O^ zL2Cd~lohQ!$J)w?o!nZhnJ0FtsBM2|#YgQEd$(Tva~t;}(8OT*uWzIRl!ynSc%BTii)N;W^FPS1*gwO-9_>4q&P!n zK~`4H`6+mDvFp}mO`_w_#UHlr|250YiAd-BMfvS{Z7})mdMJQpmQ)=8 z+=baI-~Z>~J{(Dc0bF2T@$3AZKA9;Kf21_ZOWUSPK&TR%d%Y$xe20GD$-ZCnzUn#wR*vH}i z<5&AQP#*!N!Bp=~bsL!_cmJ}J^ZS3r?H!584KzDDi1BqdNX@HL#jkC&^TMj=7~dwl zQ}e!qVEC$?;~SZMl(qAx0lB%CQr!fHHZzaP+o|uVKK(<&Nuf1OEWhS9>TEK0nv5<8j0-F%*22TC?CQJ&VNQvN%U z!i|`6VQH=pKZ2IvY6%ZN*xbaMKO*J-tx2T!|5l8Q|MwH-|1CSOsr@L_bC8sj-P!6P z79k$KyvGY{nSNdvd?iphLDD-g`66Q}6B|;HJbi59Lx(kC^~G09KPCD>bEk9B&#?T& zrES<+qJH8S_eaZIo$ID&b@qElz$Nw{JizaKMzV^$3?wo9Jg>G7jJgdM3!MEgz+P+r zaE{m7Tj!|LYwxuhd7al9C;mcv`t^}0Dj!M`KEnQw`I2T_{af5(Sep2(Nf-)#vvP2kim2#gC~ zkb;%SUa%bkW+lZmkP@&&(bsQCe1 z&2z%<`ATYkIZIkCUcblQ@vOuJ?b4@|C7KdxalSPnl^GooQIv9^;X;A)ELvT0&pKsh zSkwKAJM>&r)}DiH=^DP|ytW+eKzl>YHW53{_*>J&Uk*IB?bNfbtUY%`5#b9?Ag}60 zLf8|+Swunz`)r3l3UsdZSdCXm#`mRVy!G<*TVNWG2Yqb@eQWbU=4Xs{DF^aDtK&*7 zH>rzbhl)QQg=5MRTB_?YRy|wBgZ!1=emeBG$Gn}JRr+CaBahS&ASHIJjNEjtS}7mE zrgKe1SkZ?@WCke6Y$pAeyZ?NKhxe^E$$k7p{yss7|2QJZP>5eJ@b02i@;MXH(?vNe`OlL6-@1mj_+vL6rjC=s{yW=uv@6J!rTG ztrqAk4?50+8U;GhgAVneF0^ac--Gt{pi2bm;Xyli&_4u)YB8;hob+_AJMbEImfEO zYkD7|_wQO-qK9}?HDV7Tg*&fC#?6uGF`Vcht>Je zpX?r)afns0om89dCl2LYpmHw4_ACXBbHGuBk0(u(ZEb{okIaU*5dea!0C(v@6>~hN zkeNAtXK)+Gr#^nWkdKSBQSsUg!L$|oJ%yc=A#=1R(?_QHvFQahs)VV>o?K@3otb?9 zT{O}Mdr#&=UE4mIMB;x!lMfrrS`c}vr)Bdf^#aeGO%77<+dRBsCh&g<{%`O%bAT}a zqEl;f$*Eg+HPuHt@=uU|fOWxm@V2{%Xcd!lbf;h<_KX4R-3ZZ=ubNK2=`G7+o;F|) zF_&pPWT=#Vl8Ld&sxK!E)h5KggM#mx=ChCe@Y&+e+oWc)KbGm9_6y)#^MPN_Vht)f zza5~VskA-^#EHepW&MAhz@e-V)6s3c{lxUEEhomF+`%bwPZ2jhW;xV4dTIk1Ds$cK zfNjG#0Y9_!uaqlRcTnuYtxhdl%kP93YGfSG=o6`F^$2Jk!c#jl{ zTJ)UMezcsPuSmbC<%S;VH)yAdFfSX1)6<8)-jH&py|EUgY#ZQ?BGt6Ng-EDK!zVq7 ztPF|f`nK)w+k%+Rn;jQob5+W(+?^3-=DgV!@W+R7kN?p2@jFtYs*YjIN4d5s%C<6> zZJ9g4mLKBCS#>?s`66&RcsnGNrPA;rkKAk9$m#ij%J*+@n64uv)0UXrsaVu=1@tDI zr~UL<$6*c2Dd_p4uVJs2H5Sqcb|_4gv<{E(>3wilI@UJv+lJYOpM3@RMLicc>F2FB z)6b(-KZ940IJ;eHlWQbFgl$#$>wIO^jpWTTbAE;`GE-vqzpe7emfH2_4a3 z+ls$)wCZ&6$A;Y_EJEaf?Xai%P^rSq_V}OQx$W!-U%iygQ7Dx+w}amq{Qrlu?|_f8 zc-{}?Ae7@Mo}!2ZK|v5fBMOFSf;qilf>A+0q+1YC5$+U}61+q?Uk*@Fv7p$#Vnb{g zu>}DW2qb`rC@Kh+eGMu$j0NxiJTvcIiV5NO*H3tFXJ=+-XLo03doJ+tq3LsOQg%NZ zCyTEa*4{pyww@2#SmSb7v5nEQDbIp!A47gUw^W_az*wo)@lsc?(lX%+T8t^VEd#gY zAJovH0!Dgph>|}Niy*h*A6nJP_;QJ8k`umCzDAaaO4vl`lzt#><cM$Zkf>tT$S%N-L&{GQ9M9|9$TBM*q33^mPvlMhADu@Xy zXp(};3A#l=!xS_et;I}GP={AtVf`W#TR}TfXP|$XQj!{rWXUTRm zm@v~=LEk87HrfA-i8^Rvn}T{0>q`Z_ub_FvDpAmj3i^Ur1qymdLE|acGYYy>K}}H+ z%)JVlrl6K2oCA=ot~=u$>{ZsqsXRoWIxL(Z?j~;Z7`hagIR6@3#wzj4-J1`YD;&)6 zG0dLCPNw1vgHDP*>BR#w>319REB#AET4*nh~zdiX=W$DPhPN{wX6_eh4 zIR*%~$cn zjfap!H97W|W*pK2Xdpo5{h?LX;aagYV*70V1{SD!IHSzu3ODr@D@TxH(nmRWm19ga zGd3Q?Euz2%1h>lY_EXXiC*&RJiV^~D8B!D6MG>bY1dawwu0Y*v5&@*4y&8%F4c(c9 zz+eb`&k3UFNzB7i$jwzpyypnZhsXdTp=z#m-%Ny=Kmd3Yz~-|dP!lghdgNZjj7JQl zo1Wmw`&=w#nF$Mzo#u9av92*(EIrn~v1SYqPjSO5DrTjjWD6K^v4fi?pxX%=;DB(1 z1z4Q(Hm3+Vmk>R9R}#>kIC|z++9UESv(CKYU5d9fq4|bEC&_=j58J3bAWXlyz*68Nq;@@i98y}QU+39 zgB`Yhh2mx{GC#wCo*|4ko4Z+Gz<4+|bEH6Q$p3Rr2&gli%Ia@=FE&h~`AjW5?9hbns zq7)vG=7Hlv@teznT>ZTWu~F|yOJE|-kn&=IL|oJFW;I$iozf!Pt z!-(OG<`syMUsA-tX$Foc5~VgNB($D(mb!7Z1~7hlFvgri^CWYOGT);{F2cT?+XjX7@IMdqTnLl0>KhPoUIVj(Jr5>!7?YI*$KAM z;5o<+@{*yJ{hv!DiC{J0cM4ot4Y*B#<)V$vW~~OdJIr54(BT^KvLB`Zk1I}VC%8z1 z_c+118hjqXN_i$L@b_xKVG2xx!5~||24^_I{u*5Euz&vR8l33_TWXNw1+qGX zaWpjim=pX_gKs*)-5Pw|32xEgD^75Y20w6uuWGQ!2|lI4bxv?Gg5{m~gar2Wx@X_d zN}78=Drp2&UBEbt2Qx~q9_n~n2KK>887be&@^l+?^SB7okL~BrUj|Ni!r-4q!DPo2 ze}#4hqdEYF^r&OS_}-6XO%g@0+zkLSvoA(kCnGHY4zw4XbmII&cq_m$L&>25dXn?m zqw8#?cRf&HZs0gLd!HWt6B~wOd!KHCM*@D!l;0)b$GuO_fhBU1%ba-f9>TxoVF(yo z=YA9bXJwq@C}?9WKIsJ)h~ItuV$NvFZ3(nRm^8VGCO2Di*qpz+;CJ~5YKE)eEX5yS z3d(y@C7yg*|5}&AfhaA1h1iV}^EtlGQuyv;WGTEguEOEF3s-hc)BV;+J&^;BbaYI- zA<^ks6nH9uv1#E>f{_8+9iwpr5}znea2PmUi83fhK~}qWu>;OaGP%JhH@lSt+!+uJ z6?7;nx5*hyf)aBgB)5mEf6`UsBkVEzAl}}A2P>=0IMR|O*0?WQXCKFNkb-0NQ6J94 z^R0=mxWC+w7a)R{V1$n*nbxm=;HdPue?p_V(^_EmC_TC+tzW<3epE#4v%rb%ey&IH zZ=g-8pftw%pn)U6$+jW3vNC`{P=nK^kpAE<`2fSs<6AbU!vv;TP(-ICb#1o5J> zzvdM|w&OIlc|Qw0+Hy6_pJf$s;;zK>ypQxHCJe5;>%&E>3&+s!)T_xneu`shobeRD ztojA#@$zb&h1%L)HZKpwriv*L#k|Zp)1G^{KN?rJf$g8kKVZm^Y5kmKeUE1_%w%YW zW7J}aE#_I(647IcIge40lsnW#1)rFC7ZLlNu8C-Qj+#F{N^;kVx%&#yb`d$DnYi%M zVR=_>c-teq7kAx>FFW;zG4i12Mel?zyd;8+GbV+Vo+++QNQ3YvBiO%}zX>iRML!L& zIXH+~^(>g+aHQ1Spq2|8?a1R(c^IouIb-6-OVoDmtI2af z&4hCkmW)5iZ#6R`s0AYbBqiH~Tl0X!bpc?|(($FfUNJ1bQOUI_px_1`Fdm6Ei_@T; z;`1eBU24vird(N!PG*vf z5X|^9r+9}H3}9c*qSe>}_E{Egos}P%`R8pQZvlPQLZdEYH-8&9c@#9rC!v6!$geYB1t z);jew(6#ljfc=Nfa}!Q4xbH{4aj z`iZJn5JPxd5Rh=0neT904iN6H4d7OsGP9NCSUCG=@-8#)N-HljZwpi_AkkR?FLx?n znVAMgzGTb+pq^!*W8lM)FkEsWFJ0d!n0TxbErcRHxRcPVF4tN@s#@hcM4?#J7cR>h(E7F7B$ zf8@okePCG&wqX9yMZVT-?M1##C$M0` zkpu+&;p|-eJfM(e`q`o%qaX2W!r2Mo?Bju5kU>`)6?5uG1mEr96;p`#d?4)q^{BZX6 zaCTuhdw4ke%y9OAaQ3or_L6Y+)8XulaQ3=zb`I#LhqK3qv%7~Qd77X&rr}5;5)4Oj z1(rP#QYYdMFL~SeOotd;7Yk=E3TICVX9Ki6oQ?Y!B0H5wcTr1(%7WbrXYUESS4N>% zb~@PqcQe&*?? zA3rih;ah3eWRP*bWQOKoa2FI5#vyXGE?xvdv@dyEv<#DOi5X$slo5*Jn(AwD^%^TP z{;NFS(+cCr|6#%TaCc*#6fF}5uY&>hLt_Ey!$fn>B%bF6@33#DeF)F?g3;BLjAHL; z)OP=6jNesN`K4F#>uSHG{QCai_#IW1-_Mv`bmS|xM=8Ibm&P-CIQiO1a|^pZJLF0T z`xe=ql)5NR9oJv&^M$ee<$*4)uW^;~%(FMUMPIYx9G(4Phv#=@Reo(M`Sr7BDZkVs z<2TqT&#yt{xAK>vX0h^mO^frTUO50y-daJpTne1M>o)`0Yk2Zr09qg;bAE#{E#@Xop#Mhz8efII zqlJiaPUP^piKU+*>EEL1KdiKmVaD3g1or#aE`LlLjjN@fPYY~crfeouvZ?j@++I!= z)&M=0h4knLFgk_ck`W%dy~wu++D)(zaf?C3^}zhNT!&>i?r*DbYjaHar_j2&>J|g@x?L#Y70w^Y*A#y^ICrTrCpb)<9ok>MxVm|r9QxkrYdX6s%v*9rCD$I2pL=V$`IA6}tB zj}+ehxzM29QAuvBr~S0k_H#f#`|WSxuOlmuRHoD^qmJ^3C6~wKRw&)HO1i_T_(1Fi z&C8Aqf4_}+Maq?24}QG=2YRfFh+hZRG2i|f=*V0IGSQZ@k(m zp9RY2gi1b#vvi(LiPQv&5C@S4aS`(a>G;E+2XfxamJJP zFyPVz${nrYa3C6ljTjx6U2Fz!FZ;8A9TKQedT+8`k`YY`e!1^mA~yujT1yhg(< zocCn|ycd2Zot^tRU;%9eky(-K>B+muLDrSqVsadg(k;-*#mIr3(hisrZ#mX_%lWcY zTXZkwP4VMc#AaDdz~w@4F;@s<*FIDMyqNYmKg>oV$gw{XSe=0dvK4obtkCoj{3`FI z*aKZN^#~R@!m`#T!rU$?h`*j;%__8l^XL;!!nNFic6<(CEC#9bkUVIXUO#!N=MGx6bS zMjG(wM2CIcffQ_Qf@c5_>39{s*jy}MSvO-LHzudKN!0u1tvpGBN38Lt zEN;x;tZrM7#WKaP);iv&i84z-7R?f1kp4VyUGW#V_9WN2;OZO}!4d`EqI%GLhzJza zO04DJJ*8WiqY^U$iF5 zG23@C+keSq(H2IJmS}nZ4$0(4XYi=@Tp&T#hLqI{k?{NApZGnk4xQM-%vA?7DG(C_iH*#RIMyC zg(WXFNgM1i6&LoxOxGcTPaxRqv)Oz^v61yN1ccQ(gfX3qngt`)PL{cg%?by}4Wvx# zXwbfY;PDQ4w}5?|(sUNVh9D*zFSS`iH)UEEC26tC>cg3cK~pVejmAO~ zDiGAW*|ZSwtUcv7Q`wCWlC-yQCFUp5Y>C+oefcfmWJ6U8DnwOxVN%IF+#3jlL%gj-!;W4IK71uEKa@VVlHL=izuBS3 z^2HQBVCv@N%miE@oHZf1NS}@5K205sXN7}1(^G!;%-@YE4eT`wz-G2bOG!`J92|_d z3vh7FabR51F~Wq(v-Tr&k_Fy_Zgf#@k{- zETjJoX}s^0;LQLMwZzPnhQVIM zlQ&Z4wMtBdz(y5d#f>N)F9n*FNcj`HqcgiTx=~E&;{tmJh(Y?67gOShrvuI$A6SME0`piI!byb?_GCFzPWMd zKu=)pP^=*imZ3KRTUv>=kytAg>q-af9mQ%PZt5oTdYV{wD^`+&wMemku;MAsCe~Gg z^%4h9!HbaAry6g@Arkd{Fh0=Xg0p~@Wd(DgpuPaXSRm)j?S_4DAl90b0Yr7*1Du_9 zGfjDH5Lch0o(zFPVpC(S5QS8pa#H!b2dhvA@JbK;-2{i@tjnMuynXo#Xv#YS7>EPA zn=c4t4-^2oc^|a+op+m7os|qiyzP+0z6-N3s6yR?y+nd-fW;(Of+%VJo6O@PSc!Rp zBtw)W$CJNR1~sE{$*rv1-b1?j%Hh*XN9j`l7Ddar6`V-Rpv{0Adq(mZkO4qQZo}28P=}!&^}Lk?%y6c zoVaNQ^;v4hA`Z`U;vvp2XEnjoqD#uxuyE(@L;sgM3m0yLN)ANVVgc70wKBkE*nKDn zs;ryH>7D7cr}hk5=%hvTMD%oh%r9(-*jEKHK%vqf=w4I$A&&Hwc0RZCvoPflyuT7g2DoZ^YzXCu8AK z(-NpPCJ$WuC_5)k1zLMip#`5$}}QiZz<_dr{jn`oEM53*^avh25>?o2acdm}u^k zMgX5BI~PN`r_t8x)NZ&(GPiF)8*4dMnm^+2Bs2c=Xq3wA4X$=33?S+Y))gCzuH6GfK<`W7Z~P~bab&q<1^4Sy zQY3&*aVs3lw#3AUo1@k$@=v=vCchCnq_iGlV#IANB_x)SX_}Gwk`WvNLq_IZCmBI) zMh%df;dr4kq^9(!EEq51$5{N3ybZT}>k!UCzVQKcI6i4`0=XbXOh}u*jFRAYAN)Qb zzp*EWfF$$VC#sFkkibr1RY_Uz$^Vc@mb*8GgV1>bm66g_lu^hSoSjm{&neg+*^np@&1fH-+bPMt(dI=g@>(aQ(3ny96zGtmx#2? zw-kW)K|F`e>!Dfm6Hp(lxQjDD@WtC%h+-@9%?C|F`D7Gs`(Thp0GtcVF!rmXnTWZ7 zKby(VzS27uBQf{^dm#z@-X8Q=%Sx(u~>0&L9ML4X-r?_ytb@o2tsperfI< zBdDv`ggKp_X?k=$Ueun`pQ9D~%HL(j{j3m1CuKj&?^pPHt^R%^55GBShqPV+51U6I zIhMc_LT+dlPQ+ZFj5{w+yOz@2&$-Ynw2=uue^#TNnS2*Myp+KB_O4;#24olH7tUa- zSpk-2#)&wLM6IBYZ7mmyBIb3*j6qD1uQj3)Y^gU^KIb>HtOzF^vMiZ=#Vi91q1Kuk zXE(q=38S1C)n1T>W*v_=pdn55H=uo8`2;kEc-aMJNiOW?Iu*g{yL@x|C+L3Qtnf>Fz(1Vd z2g3U!`Uy)OOtN?`LknPBRbR#CIDk+o^Z(`mAmVKY#&$2x%tgGPpj6Ndx_|FN{YMMo z)STRDb~GRuU|)z!Y0MTxAPb3RhW;oJ2>Xm;0qA_#wj^T7Mk%ue>Xv$UkpkHy&3XEp zM$i1MgftiCC;eT_-}~fu{xbab$M$~@(|Bnjw<=?tQj#CKwJPHM3oXYuX)Pgb#QPmV z{Uk|jW0KoJ(m=zqvm&zND|wSyf{_$=X>NgS&^?;d(y*b<&kc2Bbf@O1*sfw)!o;Dm zZN#_-ITs0;Yv}u9@AnUSkwRqbTwEo=Bt z%SGN|+8#4{)LK2Tj5Cl6mZ4bU{kh)1{25Hj;noLYuSGlv()fL6gBZZxu1eZE*SGmz z1j`H*7$Ym))JnSA7N9(NyHPygKe!UFF8-c8KBNKMldIt7A+5UB!(z{86oIVj{cFSR zpfdUflhsF}kUNQPITy(FSK3!9Y3rK*cbnDX?i`3+D3D)CQ=2k^Zu72GlmoF>v#+d| z;8G`rr)Y|?9#=0x2Zvy)5;U)u;A_-STP^qF4!l2(Q`mD>y8s+^^Ag65%h|J?p4sQ1U;spISQJBY#2*HlNGd{Sko0WLP2eb zb+v*nP|zHLE>%#ng60!+o`RAT^a??zD#)#%Qi6_E&|iB+`d{Cccp zXuE>?60}D_YZP<^L7Nq{LP0kXv|2%r0F?e#it6zJMEI;V<}r<%qv*?sZV`m>0)E@W zu-(->4*;J|$bqfB9EjX2?uU<>yiISI`)n2+RCfxZoZ0^^q&-o#%HnV*)?v)IBgKj3 zDQYZl>>SPIjra@AoWV{OLA(dQ!Wxpb4lcs>4`ekilWu>exg32gn8N{ee*_fBmq%H5 zw}-=%=`3%Qfsfn={T-mXyn%-;-oZIx`;kARQ7{Uez)}AdSm6X8tCA1r!xn>xr)Q+1 z;r<_uy_2cTKon;!O2lK3uF6QKnhCZzprQ^@iFpR`>}$_ZFgfw)5iYmF0gBBg*NJY2 zXe>{*Knlp`fVGsymy{f}{J6rTD1XE3_I|6ff674Gp~6Hz-Y5GFQh&Tha(^=9@}ZOd z@)(v4%0pg_*AYa-wcH0UQ%8y2^pFht@{4{ zs{Tk0vSD_d3NiS^t8=l_9wvon<|_2L)-)dST@FOt_KX*(xF(g?bs55NIl53{lwGPB z31R73Wb+$#HP;B<=vu^M1D3mDH$02WC-FvCyhGmFoFD|QuK-rZ!h>o=4L^Y$LUDVs z;6kju)#%SpMk6|0_l5pX-fwLQ(yAuOZ#UA;`3JQ7BVka2!EjXuY4!)&39hS$0d9B_ z2{27ng@J0#mR=S6BjP+N=O1eC9^jt{w*lZ5_fPt%Bxl9B)VZJ5lh=rZ*jG^nHxK1k zm;c~4f1&=c@B2vmuW#lYUSDo=NDA|S{iG7SQ!l~2P6{_G!F}}-jC2UnlweZ51YI2h zj}oNE367xu-iuis$v<=i#ku3OwHJ`vyxt*Lv_C?6W>7oou-FX1*I8bo z1;^2xVqPEA31HCRs1ok<|7{rT_;a8FQ(4)kDZlGzn!i0XFP!slPtG%d!?-Z0`5NRO zW*;1GCi5}AItuaRjbVP}us6=yWktQd;aC%_)+0S3RNkw0xe~bE4O@+)NhVcZf(fRv zCu4Sfh(^jEqTQHFK;iU8Sr(Rlx!C@Y838DIqt_)Dr!g1%z>d2)&>NMRP4bed`_N}` zKJ1N}fG87lA+61gUJCF2qI&$dZFCNIG`dY1#QUX8yl(;veTspQSr`d9Wgt%)$azNI zGAUDT(giefi0M7yxmKJGVM^09r2v-O%p4>G&{ze937V{+Yy~|=&KW6 z1toIYIaxtRDX1?&NeXJ9pdJLd74+k$qK=CR`m41Fu}eW$67-#diWM}MpzR8JLqU%b zv_?TsDrhZ1D-^U4ptvuz7ZLP@?$x+yivBgx=O}2bf{sPAGLsdQt)R0A8bJ{5XT)zP zD;Y870)V8}0B|A!k9%Zu23L_w&5wwUk8F2I;A_TU=0jSF$L>=s!FvS5n|O zW=_>Xt)7=`KXh37P(3u>i%vfdqJ_@E4gy>C;HL*XbM%Dsm{DsH zw^fA4Q$|;H^_w9O$!S){B5n=n#D^&}HzFI!g*LAUkRF+50MpEqz~>Yf+H5=gPunlV=2Ym!)41_=R|i8+nX5IGk^35C5hh4S6vCV#dr- zSEhvvRu1T?QtlS&gZP9%2c&)q^|r&|jweE(w=~Wu$Vp7yDzJl!8*5$wlB2k@Dc>

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

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

VGm659M#ra22b3 z6XoN&CEe9i{xwR^D@|0|OUq@Xmh&E1Gs2&@i_)%2XKK9GX+8U=(w8*;i&f80YM!Lw z9ID~IU+EdOzeVXF<-bF3E$=RkkGy#+;h3oD^s1Wos=Kkum-h-pZjFYgRNbel+;G)@ ztA=ldn(tA%Qt4<-x2M#M`5g5wR*E$onqN|iVJ*#rl|HTEi_mb%q#S?Vmz965ruVl> zH!5AL=^Cr)|G0+plo`HwZ&LUFRrC8AzeMGaSNfiY|3NkXsr5Ep!%vm3Gzk zFG17qR(1a`HOteT5|4c<-$!X%b=P0@pH}~FQGOTY-=y>fb+<*$ati=|-ll54S<`KX znx9izsPv%Hy-I!R9@iY?&-;Y=-H!soRRa*fp9IJdn0RZq6&%W4hpbfq$>$Dj9BrPnL%uGA!>iL(_*OkswYN{i~#VTK-)T#C79Zio)8vjJi z_bn!%-g`A1Ym~kcq8gscS{`aD{Y2@tAw6pTUfYE%4cBpN z4bgg9N%^ysKB{z;hU-o(Cm(72wkSVJ%iSV1%f|um=S@($Sl!K3`%OxD{{(VRsrkIh z->>p_Yy93-{kN(8wQB#V#%s8iuX<{qu5_x>NlG)+pA#D20;SI>b!vV!P`P!gf1~=h zTKT7xj@IyPQ#n}$mv|3U`W20q_fMr6Drc+vvueIU?Msw@TIqL6zg7B!(uG>i-VB9L z=}NUfq2?qF$5GY)gz^uo`TsOsUs89ss{C=ae_qS$Fr{9l5!$}ZQuC8aS18}D=BY}5 zQF@=!M^)|vHJ?)Yi1JUUIbZ1=%6~-5uU}~=wa-wRtNe9Z?hBRwti~r=?Y~lfUDf-F zntQ0bzG{A2X;YP3qcmO1+eA&bxyqle@^iGjEmZonmJ@mG2!GyH%5SLdD{8s>Nb^Tl zjYY1G=1)zvU!;0QDIKY_ul6TjYy9S_{!!}RaHaPs-JyD)Rk@vNUajW(>YrcD&D1HHAY@cNaG()dhMccV33USf1C?>B0HK;55I`%jgAtn_V-e}66Klhxc?<9V~{X{&UN z*57M19!u3cS?S~I-;JSoDxId`dSBCRrqXAXUZeg$tNwqcbd>U|sreO^AE@T>s`pd% zr@n^!X-)qDYJa`b2}*BNx<$kNwZ`uyEmswkexrK7QaViCO;S2b=|ZJ1Dt%quPge6O zb-zOWnW^PzzsBP(mHS!kn`u0X)I3b(`>6ajjbD3p=TUP7O|K?uKB4ZPS2Gw*xnS=T@Qu9rorp2Fkn3}7q`FD+1 zv4*>~>itCRdue)1R{KH?Uu|t4nk#Lfw58HdRqxL#KSI+7-(_bw8Y=yd`g2PA+v~Ml z+@Q6nT8ERim=V5V5gPI?*Pme$Eoti!)G=Ik{eP8R>gKD0rw6CVa ztJ-cptNHq;`WL0?JXYiPs)p}jP2c%S7buNa+E?|>Rd=%QCgD4x=FLh6s6TJ0d6}AL zt3QjB=4d!R(EJT*esVh=dIxHJ1}VKy>A$pm+@|$&pwgjAQ`CNSJPvu z%DI(Zukt&Uu2%lN>hC>D2PSTKd*YDb^YiS)qJh`-$7{$ z<=0U9poZ(ThG)E*@7H`Br{-FWj^({i`QNEOLzUjA?nf(qKytl0L<4r~WQt2_JJC$xw zx?Jf~N*_}?Md=WweU$c8+C^zQr7e`!QF>vV@&Am{Vx@&j3zX(7-Jo=}(q&2)D}7Aq z9HrBgPEa~b=|H9FN_#53QE8&mmP+d@ja3?@^tT61_)C?3t@OCk!%7R47AW1MbiLBm zN|z~pO6h#1bCga~I!WnBrGu6BQ`%c;Po-UzCMs>Mw6W6KN~1?IZ2J>Sl;JUu8vYO9K<+8&4!d=$`_Tii74aAuXbM<{>uMe-d<#ir#iSCC2^8@Vi6`6 zMbV~&^?zW3XVl31h0VVX*Ct-qu~X;kyWG&VTXN4^Q&M}~=1%KZv2FalO|_AG-awMYufY~56_(HneyPIG4Y~yKPuic zc2xY72PTc2JTZP!*2LkXro@jKHEGn82RxIf!0y3GUchukp`Nlzq^&fj6ERjS33T*AhEQQ>@% zqm~6~ej2u7E>g3WJF8gDTE47OHEa37aZ004%b69c=6LloUd>5rPE@n@dsdQ~y=vcA z&7p!nEM(RIbl$Du*8pUO>_Y`TWTrl+wK!~+7&)z#VY4W7S{uV=DbZS+=+;1i+K1Ak zNX?=2C{}YQJ#00H(&HyJhvI8}WWpb>e#ELdNzL(U_NqBi&7t&23Yj$kLqh2RdC9-N zA$vM-TEoI-6WYh`n{dq-WSnt!3bTeao`5 zpUk`&sbk4lsrc#2Ns^b|C5HCvpVI&AyjI6!U#@lA;%$>QJ-a_+li1&SXo=zP{PQVYt z=#V*bcv(2E^s6Z>N^4oxHE2j?G>EjCR;^@J^;EGUJ4au{kEj=A)x%uUBVM<(So#OI#HDCw(OYNFhwVHbz zR`ZcDR&(fV4xP=X)G3INa6w-q=xYQwjoysStkI>z*y8F%F`3m8BbrsUnnm1hIZDgL z9=?koMd;Oj!@pVLhv@P|UBqJ^4v0p6RkoUTtUau$R56$r53{Tq4=SRde>Wp5nTc0t=&aDDQ~XM9V}NwYbz8t30ET16m@xvWgWo3 zmEs=y0_Q4Y(yji?)C)kU4D+p%hKbWv1hy%tgMw}$0< z%J|AUCTW3#!z6 z9uR*qFSe2uyR(@UJ+kRVZX@bcw(3OGx2lv@E{-fR^}&?+Z7A~vDDzuU=JU(Sqn7!N z7!I@T`$^hAED|57ZY5$7U?2V+(J){(`9ln?Vd##kMpzYTOZgYNp!9Shyj|BtN%t=jek)C0hHM!2vRc=N0bDD;A2Dr7yuM0Yvg95y8-mDf$r&U@G&!+WqB*J zV>?b%T32?Qnm8)Qu9{7_uO;OJ@?#m+sf{{XS2HpxFv7zdw9@2jQOv3b$z_(ftqW*{7XjGQg zzr$_1W_|T8R#Wd_vY&t0z456&_o>-Fch&05yt7WE-HxCk?-7)r zp!^*ue>=(+d`D#kd}AyKUcoSG_~z%h=@OJAZG+M&(s|=kNRRt@2&wxIu}}gtfM0^N}7P7Y<-fh|BMTLB+ib z{cr17b8b5fH=h4SpZhJT3-nQ%&V~t{XTx>^Z}%UZarZ;U*izTNm=S)4@?a?O9KJh- zJ*-^TdwzC+cZje-uzdn58tgL3Lk&Ze-q>1 z*ZS|MkfZJ!gA|9^f#tpiqsD)LZ;Yc%7}9M2WAIvh&$DiU7kG@q zbiU^}f}A*Z$9dsx?_%Zl4m4_SVSuzgg}#LLZGH}O$xAM|(dUliyJxqyCHs!fL%wX7 zlk`7>Ja<|i{=VlCeG8SZ!5~rgbTgQX7hf0tNS?0-vPL`1Fo%Y@a%ky^Uu87 zbVF(BJizIDauBlh$K8WB?!SKT+xJ|%tA6MCJ4Ue{6aE3-fpLX)8~?yM3NrfR^N?A= zS010mdP?}-R(Jm_`JQtx9Ngrt;`=7sBKRE4g!MhL)ja|_dF0?7?vdGh-oESF9p{zK zA5QM?+mU!Wf7A5|t!{?_^#Oe6pHzJE_h;}uXz%>J+>DLy{L zdEop`Y)%gy{8Pv!-|V^u7=@T*<8-v|z@R&TLne=cmplqy@+f#Bue68pX0%7Ta^KwKX7Sy#hwwW2{a@pK z2jAK6^HZH+2eE4veEvTFhiIZNf4P5CCJY8E z|LOdF{afF?zdz0^>#DxNeynwZJS6L?1nnZd93))>hnV9Wjmw9Pm=gAvhGAAD1fZ_T_|1CVRpQW=d${jMI%Hm11EO5jv)l_k3)WlE&kREb7=As~v($0e>7U?x z=U!`D>rNMki5{VJkNXJP_mP8lxsSYl@3p?^Ep8fgbU)-cmCc;{XE1X6EqpJt9N>_@ z_kU=!EBSIUKXrt?wI!SHp?>!e_?W}|=8%65-=FgN+rs)D9B>aVKtjF_jxuUv{&k(B z-hjW1-@x|<^TL_MBk%RQ55F_u?s@AjH`uxZbLyar)AX_4S!gS;?(3mHFdY~82l(`( z;M0%JDj#_PGRa@yduku*;+Q$O+r?o@yHC16yEEG7qkRVR?50uG8`L24FK6`zlo2VX zLeKYDsdjHyuXUdCv8uAJV1D$$$av&dAA6Y;{jy-g*MzPXHfJ%{qDZmf$LmF?cBxn#GUT`*SFN!z7xQUj>(r$&l!x# z*)S%r8V^fwnCegP-LoHcaqO4wc5#@_z4v17-R>TFUFP1p;_PnV47yj;hrW}w#bXYJ zG&KHw3k!RUGvQSS2i^9kHoI|rudxom#NP|}ewFWnr#pcs&@Iwt;wUGhyaALKmm%}z z?3NoC8A=cHKk7z5w%IlD?H|)RGVj9cvuTuWznIc3#+auGl`Z}*=;f<{=c6kG_BWr| z>}C&bcAsWFEVq<%aoElg=t7_)dk8u*;fm3C*tz#Z7+ZheJ&JNO`ZFmTH1rN}2mao| z&L?Q&O&oCfV|@D$Xq(#K8F$Cg&F&8f3vq?~)RT6Eqs#%68RzfYzS(U*qHFKIom<^b z^zY8sQ>`WYY5R%I?o;^2a!V!*Y23-p?iqZ)Y%ucoS$wbZ-NOXB?FctM73c4JV8A_a z1lsKDUMB#3@+UXDXJ6c`@;J)_PaXho&V&Pu8%UEo1%AMKWzM`a6DD*F+I|Ey`$)s+ zIF&=sv%S}F5NiL~&F*Pj^&@=?9bg=`6S{?a`*yfk*Z(H+i7eEDb-=;zaj%`*?0yB` z*H{MPGVhejk#1{SI-$4uM?r5p+?Ml7hgvRlb8xxz8GPTf^7#9Q@ck{mvz>2kmG}@w z9JPR>`7N2ek*?u<9}YG@KmQ?jNai@m;m|+y-M@*?(Z_J8>>kYjgYVppvau6iy3<|5 zZS{YQ@61zHXIoew<;w;%IpC{(Pu>arJM{3F=bk)xhkJ7D(Hq}$edpUBzV@K-&$kPk z-T#g6ud*!Qhrd6C13z!_ov?GfgAZiFxo`9iXalkW*UWJlwr0Mzscz%5wAr02Z+8FQ z!wOuy8HM%Xu;>)py%Tzlofs=S$L_pFIFip`OyheH*HS572Qy(ip^v=pC$sxJA-yyOYcdBtHnp&x$W^;A3Kd9(Hj<|X1^_KUDjggIvzbI$O=t!{YC%Q4^! z?7Hg#$td%~Qu310_tcNnX?gL^k5HvFcni?7l zD~G!5;gp6kFFt{J@uM;?vM)z}c(c2R@3ZiNq#NUJXLBtQV#rMJJeCNWQ*9YI; zdX2n*Fr9}3jbFs~J?6(dfB*0JUiUD9Cw7F*Z^`77y;so0PS6!;UUhiSW8L>0)_u=n z-S@E+hck-9H~O^x7mD z@WQ(!K7@_l=|;x9qx&D?u5>lI&kbO&u@35QCYH{{x$Hf)va!I9(y#P?H%A< z+^Z3}YyohI?)|}zbx7Z%Tz5Z=IUQxU?fX5pwI6aQ7VMyn*S@jY{VcveM%ZP3%7)pR z{=DuZ9>gBto^{K6``>MLe~xclUM38P>$^SUn|#|cf3ZFw8I zHQ~{({l#YYPw{<$`2^OxT^uI-{&msZL;j-tt8J{~_fO;d1?H2zQ=O~haH$J?m*aw-)^_{y5RaeVN3czTQ3c|m)_atKK0gC z=&%RfgJa4uS=ZIm{q7t1e#`3S??1u!UA{jG{Wa)%`&-<%xlhuCIKkZmnf$_|e^KPC zy6h*3zV0s2I_UlNJL<}_e-to6E{=G1f-Y8>_#wzB_XU~wD&X4*9n`MA>Fl@|-893t zotHHR{=5YnrnCL-_woIy!-~VqyNumzn!fMb>b~z!KXT)d>kq%ZqyFLZ56wI{+BZZ# zehU2lXy@1fEH}Q;?+*WU;EHvy%ob$8D6B8RoDLm9au92r+52zYdtG&jeJ}O9mkxeN zbl*Fl_z?C;@7|Qo*2hcSpC%6WVa*J^$D{K<3|{a<;00fF+l{9YcYVW{ z(+@&7G4}9{9oHXv`+;ls)$cvOeMV)admt-8UP2!{Ih)E#y2irV3UgP+wk5N#gEgz) z*AW{P@J*EUD9Xa#3hZDo=RxKj!W=U+8_j*fvqk`C(gly`FYv4LKhf`A!}sX(hRe1v z8OIp+ejL9BXIuXO-v@%+1^yO?0Z-fC=y%WId!1$CoxjiF`>XcO-xYkn=Iexv))9vJ zE0a%X2Ww2^^JVuv-0vP9!%hxtgm#W>#aiq?bMfw&&?aemH|FBLA9Z475a|VGe4q7w zZ-v~gEBJjYy)_69Hx4( zbRLp&=D+N={!+jDWqkLHYdI5d0cZIB0n3%S_&;}fQMSihWQljlrYSn+bG+E zh6cg+zx6Ns9pnDdzvy@G{Z7Ao`{=O7T)%GV|l=RY5RbCZ6Xc(dkEY9Cy-f} z(y(7ZSpC5P_vZOD?AJas;70Era959{Vc)-s-!~LqUx$C*_CJ~8i8#6Ke^Myp>TUm% ziU$mTe!{tn+x{mNAGiHaDjvRS^l{t&q~c>m9xw;TehNNUZ~LEAJp9nT`n>IbQt|N9 z*pk8L>J2?ub@jIYNyW!0dAO^${ZA@BZu_59JYXk|pWFT?xmW`p&fD|0|4GG1zsVuD z{ZA@BZu_59Jlys_sd%{Ue^T*q+yA8E;kN%t#lvm?lZuDi{wEa=e`Ipi@7nXW|4GHm zZU2*shodkf!RP92|C5S`8FlD#^|t>>#Rrau@pJXI|4GHeZU2*shui)q6%V)lPb!1B z?SE47aNGZ+j0?AB^5)O#>s8$zxb1&()bMfJ|D^KI+x{mN4?{LyuG;gq|4GHmZU2*s zhi{kv$+@{xljAQR7~2a^Y`8}HT+0DqMg_&^$f zcgx~3TJXF4wOU-MyJr{&%>4R5vso;xqRm$aD$Q!`Qn}&&?!ZcU1?_|9qyaoGF03uO zf1x=GE%z0)tP6i8Jy5<}LEh*4^R3EC`C|v&S0yjg|KX0K`hh({nFP%$a zjaI%?URYaNDmU`WwHnB@?|IgaHnqwxyzuh)xpUv|Ug^)Tt)j*Y?ga8+@YGfX^gjb_ zGxWa%9c#$7{<&(oTz9i>g5-ZfZ~&iSljz-!#!7)~Q0XHL0WNzjqU8QL8*J z4FhGmqva~-0thRgb>+>cYZvWzW%KE^YO8YO3KG}OR!ZfG#O8?xIW~;n155k$R zF&BS1_aCvIG|IiqcLRbcn(hZTPh8gSogVJA!OzhSPI%8h2F21+^D zcdW8nlD4_$<@d1)s8B(5zqEN4UBefQWU0MXG8DLj17|t-CGwBl~Vpc)RAkt*%6@g}h) zo%!PA?9}8b&!1&hus_}(@K3@nnBs%~ei`py!S@Y(M`5q@_wdAFK6AfWzFctVI=HICbCH8O2V!olf!Bam`N>6Zx#e;d zla-r(aS-WePe}&6H(R9&7za=AyIiqR&6jGIz)LavaG5K(~crG;qd904&n*v(_vu zl@BF=rm}b?dBubEDt;;^5~4$21uFjGYkjRz2mFaW8N{X*m&?TquR4dEke9&xg6w1%;z{Ox<)|<&uV1_ z!c7ixO})^d_~Fl9Fi38Uceo)RaTO7LBPTz`zuP3=z>sPPY3!G-0DhxfKLfJ0a2q${53cG2&O;%av~rge62`% zBUx&t)FVPl>$H zT;0!d(R~Hr)5=FzmXcw{5!VTU&%g z;B+3lP`-lB$lJ6Q!>2JAGo0`|{&NVGa_egg{Fz%VUy^qP!7<*~li{fd2M8`#$C{J8 zmQM!Ylj98yd@dAPMXabH8cVrSew`WXnr;;WIOe@Z`Lp1+l_dtV{^b(*ES5}bSddG3 z#=9k*&WxG)ItNtntg6JX7FNo>e36hX9FbCfb8X=>U@=ne<)=oU@%h+!xeL{`(h^xd z;Hc%|pd9ltTt*QHa;=MRItDmI55&NV{mx8D`;d6fe4cJFy1o{ zz(j5*qk-Yw=8NPxcDC~L?7RVn1d?UGws`|on3*^@V_=rmNkh{c0U4viTh9!>d`l`E z%E}j@LU~aFU!I?dk{mlD<#O^y!s2*90c(&+IAjtCG9*Nw(#k<#wNgwFfkaxL&PzUB zsg|tPS~gIV*~w2K9rX_hB`Atg_OUlnMF?L5@-;R3kRRkzIE(---|XCYVj+x1xk9|Y z*hD8r$Oero^_E;yVvsAyNbkig%>w@HM`C$T0?DmeS*Sv;!Q~~5(j{~&CWwobqA(=z z$Q6zlZMPAy)oitJiZUz?Hxo;u?a%@00fkoTBDp(J%$Q5HMk&F-ZD>`1lQF{9B@5wX z;c-5&h88p~m|)ULTJlMMs^AhzVOT+DSM3kP0BBDtegeUA81oe>V#ZcYaIEbmGZBD> zicCCI6sa`H#XK_cjZdJ2s8`uQriJwC+wGr}=%pU1ctoy^(Zo%*h7bgyem6o0iooFu zu%{p#kaf9;#?wdn65G;f77i^`TFrEdEF|D@2?>hvApc>;%f!)yfIaAposrB)XIf4P z-WJ;_RGjDL#q_uy{9Rd(Ewcs+GMFezhD zH#qb-h>gS}0#Di)G6q!vf(BC5>(D1s-c!LxSavCyJvycG7V#SODc`JgS@R@1d4&|l zUkc3&lzMs9&=Q195t=+u)-hn`XqDg@6PYi-#_6u9$+NpWp)EsGg~cBw1C#EUkCT$m zm3W3$NF+GOIVb{aV30D%ry#4fy#zlj*IZhH{#q_vEJH2?Sv1N-35UUwn%iz!LNyYub=k5ukaQ_oxMF}qWK(Gkh$l3Vv%|#5Qgw>-mp6e-$Y9t>88dkv* zE<2_C_X7)si$sJZmZ%?{zl)e{3Ps@=oN~_0AA33(G0_$afQgeQ*%ksOa6wqp>? znbB38X%0$T@`4=Auk!6u89E4bgP(bn?1!596)I>5=NXab6`5;Thfp{YMkW%Hb3i+Y zrA?l;IF?hmto5ByHUI(>j&Hp~~-<&ocwJ_%CDFnio+AT3PI-6 z_MS5RQHTf>WFR}~hrGuJ^g%+;X@D-w(5|LxM^D;fXbEe>Le;O^7)@3w$d#heD=|2x zxAO4#KI;wFjL8Wv>hi$Nj!zvucJkCD+s;q>yT=EoGRDX9f-UaB8o17CE`$BR^R0ex zUE6B8Tw)ZLtr)A=*2790njjXnN2EF|n|%5(%Oy$)yM~(ZrV5|ox@;wJ6=a!(+>okc zxkZZ5eu+|}fsF9*WAfu%>HNx%^FrJfPHe3bddUDUsA>LQzTCL`wGIQV9N> zmFa1`x>SS8VR=Oq6^tWYnCt*Lpq?&E7>Fai8no0yiueOEC1sX72xb!v@JW;ZIB&8a`&XT9_~yJ)(X zF)ldOVNV{SfH9rs1q?I%hDs6gm}-!9>JjPTQl(lYbE-h|3ne?XV}T!uW(|X_k(t(Q zq(WvnOYwt)F;l5k)J!g!bb_7aDn+v7XpF~XO2h*SM@Oer0Gb!QF$;s_hW>?|1Bza( zl&j#Olx|oTb%0=_koZK_S*R9PFIYz%12d68%L2g(W%(8su<8`OmdZ8Y(kBTCptLDXbLFOne?C;h1+vB zNNS?L!6H|8`GK{p^riU+XE={=jm<8lc(_=@ra87)my%(yuSQ`QlZ~gLL8p|!O<7&D z^y*SW-~ommd$ zMm+d{|K`#u|0|Sa8!RAf(5YNP4Q)E7^X}E2leuWkVYOiWo6XPgJ?+`6uunnHftE!Y z$QB@S09tv*_FW2ra}Mo&5^^Nw7i?5e*_`9y=?>*nI~WUTNV1P6H5-3JXXs zBPdAwWH#^0P63qQpX-@Y%kv_jDHl|oKyq_w3(F!wd$}ox{kwxAeR)j}C<7aW+=hfE zge&_D@OwXv?TF^5OH0kx-Xh8+7scWbMn>3{1JpSL<{(%H9WWBGe(HC*2OIRoI?>|2 zVZRUuSz6K+sF|~UH{gX6pOmq@Qed4_P=|e6RjcJIQ2S__GFAYHU!X}4^x2D*dJ}(E zVO;|`4mKCiqhUX<+$z*o8wMEcT30u|SJX;;<$&Uknd31ZEs@apEdeMm%NJ z^+G{DXgz(spShJEhjoK#+6Uc;VstnAf*(!iH$`m}2!?eM5_q8ip95JL^Y@FJ1=x;I zEDeGXG3Dt%3h(mH@L!9fi$7 ziZ|bT8agyOCUaEsWLnQq({tOD@A`CXN4I_7%zmsAC+1%o{2)E02*Y-~b;Tx-M z-Vp#8PI=Jgo?xfad*9K|PSgwPa>@8mMupMcUIjEx9;F#P!RyktO9qzjc^o)}m7lJ7 zVP}E4Q1_e=@5>7buunvU7?(-(g%ilp6X`g>RN1yaDWXDBfQ*h!O92)?!j%JSG2lqj3_OCLN(p+0bE&3Mn+1@hmW4fL&r3- zdv|j9a6(Iz-O$@X9#|cb7XborY%4A2o~s`|GL?tCGq$jbtb}Hoja=R5+0k8r}HNMl11 z><-(+VNQlx9WymVPSJoJJpugx<@3p2`}|{`ck&t9lePt-87JIij2oK5ZgeXkWkcvc z9sHn;B=^)!miJW8@=%PE9ZZmn6_#$3l8z|pgNFrR!ZX?Soeii)}VtKpDxc>6zc^TL?*#o}z`Tp_BB20f5lM|EUuxZOb_bxv-_&98eDvOGTp7VHbfj|Waz`&1}BewNUuL6W7Pt*VZPEPnd zMCUw@`9YM}{fVq_lLP@lVH@K6N8Yz05v0a+ZcGnT0@1?TXVY2MP zK9BmST=Z9wvqxoo$2&Eff$9`%2MWEwBP3h?61^kcqqry8Gc&(I%<-Q7*xL^`0sMGD`zQEDd1PhwnOjxh@ag;o}3JUaaVQ}GqIFybwqm+-)L#3%! zfi1{LFtFv(isA*dUiP(^G%Uk4o3-{p&@4Y=JnLI2EJ5XvIgXO4 z4-_91Ao#sTfraMM#DK>);UaA-M^!3H)q|$T>>khd(fEa$4#J3X#TLfD1BT2y z(`aKXDCDk6j6`5M{#<@OBYpy92MKjM%g zx*gB`_!jC7Jkt4;=Spl-4m=R+RoDPC9;OfUf{<%*P&@ZghBeBFm*aZ!en!tx3Tc!g z)#fXnSh(27CwrbkXE!NN;L0qPAo(ftII~*0oDyBSo8XsuWKy~PnY?^Cee@}riXwsy zc?A~2BRI%rT`%9B1jl2cfdd`k=!wiY&IKHL^FS?+%nasU7qK$J+6OelN~vCznJ2AN zIys<8X9^|}7_~pr#Q4=Mz4V%t@B1yyvdW(F8)m>iO_KdKyd6l8*$Er!E7-)XYQ56u zX(9LpU8=1H!D*EiGV!((W@DVn0kgj1u=4a0IbhobYXd)=p9 z!PW7viC=a6h7S$wNSEARR|GyQZq?-x(n1J-C+;x*C2o|Ri_fj**Ia?`Dm{bs&KT$P zCu=t&Z-8yOp4j-U=L@P;3kbG23ueR|alJ+zRl&1Uwhr zZnWuHX%mF}n`lqAoSIuhxp}vM=VDaW$586`;rp~U?xxBu06LbXFnXwb2^--@A*l;I zo_4a(DMahTzcC&wXq8gteh2mFhIE;&FQ%px^L31ay!6RsYd!Ssnf}VQL~|xcQ*oa| zkJf|Y{G*!jF8mKA{s_#}B%2PX-FdjSJH{cUb zqSd~}ZgrehJ=dWG2XI%-M9A}Gs>g<4!`rdtM7O}E^&)iEFR10tNU z_j-1}4;ks(nb!OoKrL8WPF}$>2gl(fwLA2(Tqw#+gk8YY!i6#tnkxsGI1wbdpbyT; zrhIR;uYefodo}&~YF(5c_Tx0Yf8Aiy-xQ2&K=zzkI>EeeT`L=s7K2}0HuTi?O0&bC z@0PyQSNK8onK!Ekh8$AhNrR#4W$fkPE?D@Opv1kObcbMA9Ks2PWWx?O0#<9! z#U3uS1xBaE0{4_rt_UB9l5?bV5aK%`m&_NcI1EjsWoq zy$AMJ#C22ysR9msK}Z)-jHD$x4EpInU};U| zKFPNXJ7*Yj$=_UZLY^CBgaKR&utP6jPF{Zb^y#BVPn*XJZ2e$_NTR_g_A+2U2r?f?Ppg&WC0YH)N-3Us6QH4vF=P`_c ziXE#*13`PBKb${=*>>nHLKSo{d%VAn9vYQ>C=2JEYdF~q3sEaW`x~7+tP#WPVq3~f z|A8Y4o3sqM_)te6C6vo_!OntkLAer+{z?fZAa|IG`Lpf-Ps<6wfx2?CYz0iJH4|PG zmkc!xl{HPTK+|O}${`{H^|Kt(HQE^=SlZVtSD_(=6`p=_YLb^d9w@e9Bvnoikc4Z+ z3XSsBW=z(V(R|{|IV+~_fZSV8MyvmkrfHVA&l^GM;Z#KcZR#+}pp${2L3B{Y%>8{K z-XB4(S-(K5(PDvkL~S@(jD>GQ0Lmp9cnp@PROKOrhn>|VtAdWs@K)s+DNukY3-@3F zB?sua(B=}4KHf;E(tiR(+N4}^jLeFbS~$ZEXD?IGf@3|X<`d~TdkKYzfpZD4ot4sp zuLBvYzFo~Gyy&G}+g?6)l+dBRd`U@yMs-pq=%2pOU<3?6_yIo>A2W?|4vHZRV|Me= zDQgb!xLPa2-(S^|hxAb8Nz%#F<0ns{xjdjChchCSLb>IS4kbE>rOHgbJV__WgenS1 z#Q1Jj%J3uzb)ltWfE`>?J1{}JI)$UXDZt=7v9?;FMj{;2^Zf}$MGae-F0w8Gj2?N)T$^O=QW{UCN)*=f zNGS0_cQT^Bq9Y8{e^V!~Azy_; z0H&-3*uqlIuzwk`m#RGc!mx@X0W{{cDtrrYK z{kNnnHgN!W#C!~pIKHhPIP(T1-3m@@yhAX;DPucmjrPqg*DhsG9a9KG5+yN?ugs}z z9qVdf>s^{ahRJj{_P}J?axeVDffxEv@r*ss+4IZxyk^gD*)#b^n*N+UU$f`i_Dp_O z~O5 z?K$!b8ozAMH|&}G6AgdUp3C-h|AU5q)6%hz`0fkxjU+^7CRvN1*d-h;z9{R;w8nf&eFmRRCmrF+HnC6Rxkb}ae&Ra| zV)|AM0vw)#52bPV3p6%?aB05{H>Q_#c&8`eCN>^?JiM?1qiK5ja-|QJ3e?MNSAJqV z4$^Xz9klPCiUyzM`hAg!>8WF^Tm2yC<(2WKKPVQU+hgr!$*{M$x+rjMbWUB@J+xoZ zMTpGsesN*jxT8=)YPz=b^U*rQ@A%pwy*z1;3?Y7JIq|u8IT3|42cOBF3xA0sy@ki; z*!LjpX3w#EUnrPOF)Qb7{sufS^x-ZpiUQ679iA+=Tlf%Uuu0kX!Gw%01Y*cI-ca+g zLH7gCgLYLomb2MEfDG~bFc6^mJMH-=#$&k}V>J~E30lWH(r1!n-$m%k7Kvr0Z2k$7 z2LYE#OHw%gM8i>nxO#*~YZ>nh@OYM0rETILO8n_Bg|A!s2uQP(X6!n=+sKw)loPZr;v$ZLRw&0{_Tlbk>YnzD?~%Xk0#5F$jZ#?%kFmw*e^lorY4(=cKW z^kT=J+n&K+h=sSmWA3GPhpq*=MQTpbP#(~T{<-;meOV*Hk$E0I>iB6h0YF(YHQAia zvi1G_`Z4kCiNqMGSKft~S%=ZM9QB1CkTtB)Fov^wAq@4G@rhJL>{(yF7mIWrQ^lL_ z?9AveLPYv+L+xq(R1vXZ=3qko)Iue83048{hT5({GK~>s3D^Z?03<#}NBwx|9aZ+z(qwKU|G0nI@q-w`5J72YgkSM26Lc6BSSDYB6a7l-`Q()=`&MZQ z1^bxE+4+;lPEL%^pPZh8`e$fL&?c~)2jP5gmzB{e+=RkgAjN&ri(oQ!wJT? z3(f%`9objgtfPx~z!5_(Oh6{s)Xu@%Uifl+7afJ%k{qEun=V(qy$Z$3n1`smamwVm z?n^?JiF~TR6zq8UE;}xm+gq#nam4yOEi-Ez?&Wrdchb37WW&vMg^G@>vbfT0t{Kbr z?qo#ijB<3mdixcD2+dU-u*;|rBEAtLJqSLS8sDIuz3?V>4|MouBax0=FfCAEz?MMj zKw9zX4GrSnGrHr%>^lkYOvtG*asRbM7FkQJFTi=b0Y1uYN?{J&6<1|KrzB`5<)nd}s}SKhln^+&uBUj{J; z(_C?YqVRxd!#;to;!Ka_;Zp$|PHFAKorEgRv-)>}57|QXrED<8Onmqw*hG!L9)*RLL6Xe>EN~%0;BXntl%JNA#iX7@=Jv=Ud(ddRJ5y2*)}0 zA)Z3}Gx%jQoAmFaXc)|*A>nagK|RxX_QOCedLw#Ktz>#O)6aJMR0a{Bc0!AAY1CMg zRhkq`cx{oL=uV^@$rRluM77!lE*5a0mb{u}V$&6K84*>)o&-FQTgx|sZ=-m^Asmbq zaaO(}xF#}EM?NKZ@qo(;RynDQ0H@0Ik{gVvVUHZgR#1gu;k*$?bNHn5#90u!U(MBE z(CFKv<->is>`Q65*E_JQjWVWikPv$oo$<%GP!NQ&($09}RqFA{;#uw_R2JrLR1e2y zdICf%Qi|WfA+m^~h=_q4uNRZ@!~wk@Pdb^1{35HbLBB3i!)Pq6yhB4$sdvp!q-54b zNDa0TB^LWV7ORsJ+o68hz8&Q%@J44n%M}o8+#qc{KOa@HksB=HaPR?TeTF`?N#z{C zkMW4b3MD3W-N1RX9n~hMitnXV{+vwCo;-CbnVOzYj!Y&N-XXGXnBLkO>j~MP8@+Ed z&TLZYC}*R5CT9U(s$dP`w81%lZa#nXh|b4>UwWfqz^!sa+wwb%wjhskJ2?b4pg!RkInbd_G-Gjs!AJu(JrBNC zq)35x0SP?MLfG39Zc}SV_}m&i&p_vw$$@gtm`gU66WY@bFVb1Lio*7HICSv-{R9qd zYfYrPFc^p9nO9d>#B>8A5G;-+uob`LC0t0cJQe^br5LQ+;o6L;rWdCXBR?5qEFYLI zpWyyW0}jn_=N)!^up&h~w}eje1|aYc`E_yfLy7qRq_vZ{2Mf2lFPE8&f7DUW{Y`-p)>^&@;?ETEt$(JVKrtVZG zm2E<6tOJ$m(tN$} z=kupqfLI@ykCeFH_IN|T>~nIPmV2;7H}lZW&+o}%pA|6(^Zt6U@kA$e*pJ0iw@M_> zI{S-k3kLcv`|n{su`dE#VmT80>nL5o6eqqmgkT`OHAFMurRTLFmL5FEOw}OxraB$# z04Xm`;LC&Ps0nBv6cCYcuMHkLscGeag*c9N2aFz32gP0~-RBe6Jzm1seAMDYy)KIe zY9OOQFM~zem+@<$*LoOK-t>#>9s?iv$k>70k_`wE#9bOgiXuI*J(+py7mCe~o6A$F zvQ563d2wPc6VLKI61x?MILhT7{77D+rV{&UZ548#9_4h>?`jQ*2c4oownJ=_STbMm zv3cD#0R3oqe{{<7+UPWkvo3_%MyG8!>CC|LQ!?x%)HXT|<#}AHeIpT|rNpGAyF{e7 zWtiMiu7YDJyAN<;-00O)sy#=bc;(&*2nq)dVGRocM@S79dYb){bU?@jIhg|iWmE3m zlY9nuB-$8}mC$hLAl=~GfbNteQKBc5HoEg_T9f1b4ouu?&H3%7M_V^Q@bGJ0;vC*G zYyfM#*Yk?HAQSKHyMZfkCCx-g+vy8-Q<-6z3)^xu0v$;iBYK1Uyq(^VKRXOF1$6iu zOORf96mpR~u$U$T;Pgx@LWmsPvsO4`I!)mu>7|wU19o_)O0883AD(k+dRey9-AnYtE~cmL)ewX z_B+UH=&}&rejly&mi7V3-V%EBg?vhvxNkI&qeS5vB2RYu9?>}iXm6%uCDA;4P-<3| zdd{ztwr<4kC9JQ+GnU*9(S)9!v%bcAJ0{Yj4VZ|?NIyN(wW%zOSgD_oOIYna+@Ek7 z#mh1mH34q#!_n)houQ%qCqEHU$BfLVK9|o~mob$@Zbqr>itP@lRqZ9prNK zUH0E~FdudtCQQQ**)3+~74N?qa`Z7&Y|f$&qs*~$v>*GR^BCGGZSF>goIipb|}4r{3yaW(v6`3mel*fzhmkl&g3l%R9J2~if|c6BGAHlf-NC%~l)EMzo#j`Jz}nRRv|XMcUr24{0Q1hVrP$0YsE zgl=`ytFZ3_PW%Zu9GK7rnDDkhR!(_r@}id%W-N;jIBoa+uugtFa@D#beJ^vKJ`|QM z!QRNyYbPMT>Dh3ONd4_>q)-2#^A!3w)J^y^b5ms%(RzPEeBL0)NkRg4Z-bwwM6SU6 z#>;eZid8MPQ7)Xo*p=(>#Zk~Zhiip$opr*6pVUod1m7<|b3lEXK!9KbKIVU4{CLQ_ zjbDjmyg9G&?-?^~?)ckYJYdJl8t*W;S8cF1zdOAQy7vBVr-zBu4oIrbmXr3bhR>Sg zlaq2=@3Al{JiYq(X`Q^H1SwstwW=VE_IEAcuY+~e9gXx>gd{XMHJibGc)0lE5N|C- zxv5Gq&;;l~*B>@u+s8Af-8g{_XD-sE4CDt5r71LjN_FkWR-+;5*Td-|7ju^fOl73N zMU2nTvIF<~qOBlJa3QSKl^#Pvt)J;)Z6F4Jqao)6GTC)1lYS+QhC=Xzia(s`NG^_H z77kv;K!>31_HmwZG587in_5hy;o|Z9LSS8P7=mwIiVoJUfy79k``%GRD=l;pFdge5~)}*WdKjtT&irAWoIo-LSrqA#}ykxWuZCp^x_e*$i zn07G=^`nS1fiKUCQHambE6~k-Q5fyWs*vS>(0fS~;l};!m=}G?WGN+)4)L?K$aP{l zM0QEpI_suLnrZVuhQHn-cLhyggJC`Y?OA_VCGoaJuVoEBOTbBpb(-_jSd7K$J29k zj7hII$U1^Y)p`Mo_(>|t2`cfFFL!!Ih6z$1>|T{)c&G8$Mv|j<>3WvqJVV@J|5?C_ z_J_ruE(;ry*t)}CKB0?LG})hbUjLq!W+7bEf;=%Ey}xxH8`^-(To9&och~*c~xn+x!}4!0t0F(*v|zc#u$JayUCk#}ykI()IiikHijj%}wM_bm-bV*0Y)r;YYA#;Gn`MNe6y6 zd|bk1Jc83=ghwP4H}v#t=1U9J_#fPH079w8#r{wO$`;sILXhbNZwEdj4%CUB4fXS~ z{+X05HmR|<+#+IUP$>3V2l;i6FY;FTeOj*B&81rh9);2$8_oyOIw#!SNK_%W=jF6* z%3(7f=Ah)?a{fFed+cH36z}=MfLRj8IOUO<&=wgZZpXT{ehx09nTeC2TD|7Jq)K6aCOKm!}2%9Z%-)F z2+!bAKh2G-{%BxpQo#o|BpAavn?40G@*6Pi$0lXrB5ZBMzm3j^5ll_B?PS3n^CGTd zwgVL#%!~$C3by~X?hN1)t@rdihDft@W4S2PepogF?jX4OPRYW3lQUQsI6CMz;(;-F z2m;#dx>?-K>L`RJCeF;hGzt6pxry16Gvcd)2LQ)kf^$lql5l3(M}DrBf9UmK*NO{su4JAx}!~Hp5B7fhM4u^&l#L2lnvRO(WcvdY+!C6lHp_Z?HpO(rbLQ>s7!@76=cX;J5M=x2X){ z2jRuqVxb80KY5>=$RD4bJ~N}r4(4jq*6MkvJTAheTYACmHpZB;J^ska<5Oo&gT|h0t<>}TE&m>U9m~ER2&Mb(ciZ+o3CCI$ zX#H$jfo}21eS>!It}imZP8Tg>t8fBOFVwa7-Fx&--t=}}T#mU^gPyP4Xs|J=-(Y!! zDN|mdtvtTpLV0Xdro4r=^7wv}WZJl`o)M5%C?KYpw}BIwwYNGtSlVEuLjkG|J@ zKjs%!$0Te-D$`>2YcW<>7GLbrO#9GLZ7tLgv{3+zu1Id{1W>B7>CO z{Uzg|4FVr#FpTwt0puX(!&7?b=s!QM+Ny|xt(F5lYq54d7WxqmayX95Fh!{~Jmv)r z+3wtpk(!~~!EG3<`@?Wl{3)7|68$2IJq-x`CIrHg;`lM>)yBKUi(c7b*a+rsVH{2kgXd4$NMWMNZ?_cTr~A68a$|FqX5`g}g>gRbLxvTNf+ zx3=$4#y&&0U5DQL1h)!*S3UPo6EykCs~C`v+Zb=> zW9SBs@>eQwGZLQ;z1{lfWKt_z@C?}Jf@{NQ2gH!H8~U{Qr|-H*llt5Afa{*KfhTFb z(-8Y_Z2+LG;LjZUk64$C$Ld9_;NXxYXcztJPb`j*RMJDqkYst)xK)#Ow&L4{b@AiR-(*j`hYf3_ zSMN%2jV|YcLV6AEJl|vKv~-r=yaK!OD=VU}$&^NN4CSZkb)D#))0j*6kWS#Rb4MN) z9LLCU!Yz%Ff>t~jVy;yOp~*RY}`onD|}$t+!c zt$`I(SS17;gG{5dBQUg+WMmu)2UQG_gl2r+|e6be3q^73nq ziWQhCZ?@d5*Kq!+k(`-5CD&I#&%~3dWIp-{?JFd^?9l42xWiEgVTZn<+K~8=uUIX^ z$1If>{;+FA8oR%7cA}A@CTYJk&*u1R> zW;(zrLq+P9f^u-DAa8M>5VxHLX*(gJDG7Ku5Ric)?R>$DxCGU-Y$)%|xr9TySQ^5G zVwHCCboWa&j~s+Tt7AxHW=IZ{Lof+>$Co+l<{Dqu8zv^W>Om;0lS9~yWrAI6sS?Yp>^Lqp}`+@yNCV_b# zF?*5~9+}3GYo3VFiC^%IXltqfkja;}07sBJ^P_47I`h|DN{AC&wgU4F_GZoXl=T*6 z4+sVdJJ5iBpBT5PSfL>tGGVJ}b%%b~k8`##0<&E^%yLy@V#Q$`Vy^|B0J0OmD2PA_ zIL{OO<%kzQ;0XT#AD1qchs_P}nMsYB(lDtDd)qQnJYBWvg+2V_L=)JI!|@_^N}yZZ zyEL{Bf1cWxNT0zgtANKH@ok{`T*@)=f01Z?7k1~6^afF+(KYhJ@NZE z4;x)rAP^8Qs^XS&`3j8M!;1|yPiyvs!uTv~ysS0EGtNjtH;(Zhe6=me{aN8$CC7pe znuriWzh&&OSl-R*IfXdEkHBm;#ETfKsV_?QVBll8DW?VBEckS|dg|_#N_3P6#tnr11w!F{>c+cDOx;?*Y&!<1E@yqu7 zvORy-PMzh5xcW-?Z?r+jHx~nts%t=j{2KJ+ImGhCN5V zN7J9T=WF)7X3y=9X#5NIyll^}+Vku7Odhpz?D?8KuiJCAzijW{viGmq`#0^m{V`4dnmw=E^PD|LcWHdxo?o@+b$jl3T;oZD{B+%) zrI3#}f1VgKMCQH~+#UQ`=JoMYHSEvo@{vzWCgfC1f$}jMf$rt}aB5sgnLvgC_hq?E z!x|*L$3*g_!`X2uD1}*hdJ0QJ!n9xsA~q}`Ie=0u=T%5%elJE@`rr?WQlA+l+O11m z9!Po>kTio&Z$gu~O_H@#BKy={JhJjVd$3o?V%R$)LVUcpd-7tc57(&#>4AuF3lZS4 zES@yo3c zFI*4eoCWAME%}|L*LYo^B1q#aVgE9S>mk31;n92Ce{It}%7cqLSX$dPRM7uG8=+zG zK9og+&UJZmlYR)ip8>CK7<9)-jwK3Q3LuZ+akAD;K04r4ISrzQZWWn?hP`IG8`eRC ztkBOwM)!VaM94`m)AX0vgme%us}*R1sJ(-v9Z$N$L$Yfc4L1SI6h6*B#hx}f1>ZWd zspIF`Fqz9>LC&-4HyZ7Ly22kOl?M8QSK5U6HnGf0zmbzy^USL@IVU5z3*htaKGqR0 z^#pFkOX_E`J;fZr=;B{evJtX0{)71uw^gYgGC;W#ZRa8(;AVp6pd927z8DE$$pOGK zIls4j`G6bS`wTyO5hNcSeuoo#b-q3ypzPx?e4^Bnajw{(gTAASpNI&Eu-c^J-=E{f zzM$W4myYw{zTUI+oPZjZYH**mydqw?8K?9T=)a?%u$^Tf!xymZWNC>AH_cBr-1Y;B zBH1j5e?;^o7mK{e<=nY*{%WK=8SE=VrB@Gso&bA&Z)bX?3|@GYrd}_7B$!1ReEC7S zWIc{|(d&2upcs#lx1pbno^$IqmrNAMoK3!<|2y_a!^`KWs)vg_|<*Xzp%{rMta zxTGRmus;5-t&921hEAH=+`9wWnL@33rmJ%@pbqhFfxenFk zP-)O}dp{3#u!R+gq(e-iQx}ZfS1cE5aOAPoE@K?!W{#$>OCCa z?$pK3;mFBp(R%@bIB_I6_VQv5%rbZEAY>GLy`1IGPr(kDc%)kp@>Frp!KWGfiPwy= zry>7|_Y8T$AOms&*o(Qpko@8O8QcJm{QjMZ`Oc}|MsgEFjrMzzbOV%&Xdoy8~$w=hM#Gk(o>u>+VAB3j% zNc%zoBxI?%4dChF2c-u*Cy!2!cWYo`9rRb%zX?aYXq6O$hBKmpor?i9teP!S5%mQ| zNM0Fd>7@ilbv?b!e2WKt7s-AI_8Us205AUKxbm^ zpDa&n6n!DYgoE8?R z#9#Y|MPv`>1-k=gXp>)nU~*yHi&SXPhu0pegrV^)E>rK+z*To>MQugA!1LNBNGIG? zNJV&UrfPs#{zm)g(Yz<_8&bxdJrIWhnmVmPxpJEa3r7bJRnPh1iWvO_-Wc(vaHbSV z0-yXY@yC=O;-Hx4hyFAj7MI>ttL_I&p9c+k`&gm%XT(2wBeVKyV8WZ^oe{sh+5GGB z%81`>SY9_?7x;KP{ra|T$Zt7;{Z;k@75K|7X=Z!zl?aWw_sdH-lA>}F*+p50mq_|H zn(oD4qH=Rs;AW2XDa*s=Yf8&FnMC6Dg@f~$njn=!g<*DMmi7RY9|~= zS`eX)?T*C(&_OiAQ}1NQ|IP&p@$qUZ)OG|!aOY(O&EnGocd(M~Au;5h)fPP$s*#!B zni(P?o_GdiT-X}eE)JlWTapL>H_kc;pO-(#AG(Iubou!p?Pu(;FA1;&Bvtn?SalK} z^%;6#7aUTxt=|Xjme+bJc^1i^>pUrlpeQ&lhgJO?yY$&=GHqJA&hv9M@PyhH)p-q{VAKe=04- zh=vOasCWz!GvP=KI+};$u5jSuGHd%p?FbO+_|l=Oj)|#$v|hk{ z4W7!{z(~WfzNM__@0XJ0bf!EcNQ?Z&xo02xjsJMp554{F-(Rbp`sc6z_KUxF;A{Q= z?w&vVu|NLG4zJ5k%UEg-_seJlwkg=@s{Aw63@p zEWF;lz+DKGl`k$JgWwN`L?t;ko%PPeChan2=3caWI9f{AdlLAqwF2|i@+y|}A;Dqe zoXk`vZbF$pM~b~<1eWTe+olEwyU17wQ+-V#m-!8tkkL>s`|}gxDuNvWT%#2&0Tbk; zKGJtphHEDe3Zw#n>&>i{%z}EEEaa zRIC|Lp3)lzFacFWhEiGI-0Tb)Wkal(4yQMbpFtQ#pBNo*WO|zerVmuxB<&w+&kuI7 zSUb!+%ag$j9k4zHA?<&Y!<*L0Dv9&v>Q@Kh$%Aq=uM!XLuwk9RgJ3|L1!IR{#2bkM zNuso2J&8G1%XjW{*UM;HtfUfE6qa#*yE}>V>t1(u$Gdk4e%m{(zjNoickXoi8~JT) z>Rd|e1>R$fJxjFsm->x3C5`%v!IOKpK|Xb7Gei1*(jI^?w8r@dn3@ zv7dg{%U%OxqN1TuE|x23e-ziWfwxFC-AdGZ^dxl+p2>N{lda_Vz8kD`C&m|UVph`^=_&mwvRpfV zfLVfId4U&=@*<=QV6<2PRd5l`#Q5G$@oXM46C97juoHlRvT>EC+}8z?Wd#|Om}D8j zlP8b&#x?H)piX!|th~BM{Z5GQd37p4Wj(J(+1mjv8mPc_7S^o=D&0xfgSKG%E&J{| zo;XPbLq3cq(k%+=9ZSTp4NJ+D$|`sVRgmo0 zV+0@h1b)HXW#vrB*#^I@=++sYEQid}10em0Rf61M~@g>C6ULX64 zZc!wXQ;^md2qV--AZ~#?P>$W-;jKN13@ae$cPW}pj1OzQxDSXkm43*PDK3!&{B2pd z7LM23VSj0yq1Wwo|2MuK%$-L80n@L+yq{2arQ#J&FYv(J92)Kc6pG&E|AY$9E<8{ zR?{u2_H+l*bggQ0KMphNCr$@B4KAjwMA(lr-Tt2G_G^int}A>}URrO71^R?>y+`AO z;6E{do#_lf)C>Oz>?HZ*aC5Erz_8G0Jg>CYe60!aHwRV&+ph}==n{B7J%2_(#QY_f zu~|~^7dpsla{|s3)*zwJv}+8`Ql%+Sq+R3FS=V$)r(L7;9x&9FF2zttr(M%6-ClN0 znohd9YdUtdq$`1n^@DL{O-PyA(Gxyhx#&}NOGoBs*kQStjhg}S7%8^Sm$E`-YYO6l7Lj!_F``p$9a{ojrTj*P4Jny5xTrfG$6moS2`V*|&f1s1+xpeeXVv z^u?haOco0K;N^v)>_-p@v9z>B5)WZ;RSxQ;n;2qNP5=lbSWDqZSJNvx!~V1$Da$1% zy~zv(16**9S&BkTs+83ICf`8r-{m=PRxTT(J+2l>BKPbAp@Oq{Z2(X$DRo&g3~n17 z()8SqvUywPSUU)y^NfU$6i&bxb_z43ELFoQ)d2MKK2zrxu}tNX1?mMHvJrI(pd&>| zM4?InDa@+2^#jEvf<5C0U%=a#pDB8-_k~DPKs~yg2B}_&6KQ*QrqxqRr0agBi}U3m zEi;TCIVT;!LECz)TiW31wv5s8+5y^dT?_UMq?@#zlL?a-cTj$#>_Q3%oznFBg&@c& zU#j4)DqH7xmPx`x5zs>%d}{RL3&4h_Be?oQYUAjTn956q;uX~jc-;Z;P*(nL#b_eb z4s}FGG*aS4(BLU4nt@Lml#851&4tPi)HHAq6iS%eTNPfp=_RT3oaNNaRNByFM0OfM zyp&<7h^1f$B1&?ADBoMVjhqX}TAMUgr;3r@j>0QMumlBiqpoC-1^ecVUT;6Z)EJ-A;jXF>(_P9Y1wbEfsQ7`ou_s zLYfLuIHoG|UJT678i3|f0%8g|t)>*nDT(i9k`PUj%9;y{wv}Ihx zxDjnS;yvRalM{{y^+RSz9ZGfK#P}TMgCfLRp5x?tMqQ;0Z)nIP!q zOYno$mL4{rvR@P8Z9BnX`6>GfzF%l>Yg-EGp&CT``;O4%)TXN?s%$i951889b;g@+ z+Z5*+2^U$tdf(SC>c~><(kjg+Sg(>9)zFe8s8tz<@fh;qHzsSn-(1z;X?o~4A*<-S zsT)GRpbpXyQP)^O^4k)s+9)juYGZaC&s$MiLpxZ7y&#X_D+Ex@Tr5Dj>dV8Ji32$2 zdia^7+x9~o?o}NSd*PHSf=jP+4e)RVi1Jx1%BOmR^#nB_Q{f#}{rPfjQQsI}%f~@n zrU7)@DL}lAUH{A*Qwr}k6NGoLB`I3><2aPbOLV|dr4Z`H?*KbRb;3rKAD?hBT{Z{_ zpDo)ZE8nqb5V&ReUVK<>5!iJrivvWFOS#AmWju}^$ z+YG|lyo>V0GC`gY_vK09nDJc0*;DMEx%%Y0tU~wObIi%Il;N^G_0K%B%EvE9`I5tu zQ=TcAqaVH4EXh;*9ok7TkB%#{d`S?!s~F2Pq;S;8apo(|h%ZdT>77q6c1UTOCrqo1 zM;YNAld2`_d5^5JT1r>4z=4@D*IkgtW&I?J60YMt`|oKl>Sw8xM?)@34@P+sb6wI& zT$k_&%aof%ecUBk*J{>Dub}9-AoJt608_9QYB)|KWP^Qq>?xardbO_?oLX=1c4%{L zv2qB81AaLM?$5n=aV3G{a#w0=vYJbE5$xmdmVH|a76)nqK~v}A_2J%wr5cv`bkYP5 zcF3hGNjb=Z^Ap}|Gy;4wZ3RYrH zR=^KFIWzv^Bsa~#E8u%0pjm}e6Da-p8Xw(NSxc1$rZ(*f@E@*BgP{=A4Y2qS>81jy zmxD$G<3o^ZU{B+_&y7z^OwP>XT+Kn)fLG9pU={C)OQe91UecN23;Hl#ZuwmDTR;)b#X=@cybKl$78X3P_TpdWvF;$1TD*EsajL zchM59VWrY+qMMNPERMUDlOw05Ctj3{le4qav-suP)3qL&8)`Ma+zsmywY*i+UI)0BctM#PrnE!xCa8R$>GKe;vk$j%Sgk-YImR}Q`7T=Xs!&0%rHC3DCkbk4MFX?t|6>Tkj(dwM ztI!}}+ec(2E;QMb5)XkyH;;z*?j6QlU`7!kKAWHV6(s_|70QRrGe>=`aYf=({^pK9 zClsdAEXPisn)Li`F9`}|?5!`?*+#ze$Ss%Ngv~-g zXaAX5nXS?9>AW&IH$Q&l)XBLMoLt(+XOu3?Kk`GH8RBS2k;!ikk;{(+TDL`Rq2^l9y*}Z?w;PDL9t@Qnl-f- zqYpWIiY4M25d*^~+!mpJ2xog{N#~JmQ-_^8zf0}&C6;>QKf~6INGRYC5b>$73wGZrxZVV{!(trz zED&94FTdETr}_WV?Bz|;Q&XewsJ(kb@r`-LZ&#yRBS}&@Kaed;^T>cuObJxrLVqDY zHQ%-un#sShA*Sq4hw4%POq+I({Vw%`W?8lZC3dya-y)ktf3o}03s}}gxnO69HhcXu z`G(XVz(@U5PVgNoxpnQkvj+sl+hlOpBr|3&d+l4b%T$%Wp$Pa%?Kq_xELzQk6D?zV zz}#$@$S^(HsMTestWnOba3RQzYD>X07{NZINfU`VlhaT7^$zXQfqsu*Yynrx<@yNx z9uyXN+OrJ44SrfEjf^1(0+Y;>d}&?*OIVRTK_ESWm(AKGc7+)Epd8v8g7L%z7j!M6 zvlK>;`r%&;1}pmUUOjEz0N>HRVoR{4CnrOq#_@I(EE}Z$HhW*pNpL%WWxskoxfOdz zVTGh4+r%NDNxBh3NONjQOw&!j=_eN2m{!0eB|U}i2(P;KX6Fne7c`)Z*2ylMi;=GI zeDdb)TNS?dYi})$H1wlg5KzP95U|Jg+b)yuC%nRGFFJ_#SYtyf<=8mF3*!SRR`oK% zLWob>l`?#WjVr+?R{GdGZZDNd(|skuna2-j{&18{?KEPwA#!RxH*eSJ_i|V#=vg<8 z$ebF|XxIuu#mKWTSO=*xpJWLFO@^6BRLznvwwx!e@Lio0WzvRv@>S46TRnWW4S#S* zQ~#?JbOH``YTkrbFeLD1?Lt38jTH)^&LcGo)pq4+1}`^baInG_uLct*QmdZ4fF4lK zU0hhD(qt)_(lfl|uF^gj1VBNAwKTe)o>^hYU%`n#3L+Y)w__7CQz>2G%v-wuj&id0 zsTp_=SgY7B*?3FsQ$spYCwTKzpUxYU=90E_w1HH7vpgkYX?r$ZRBxMoYDkwcPer}n zS|i^qHZKAh{)|)p*!ZbaN5&^!%+F2Cz2pl9AIjRFLgg(iyNeB~!pjX*fSiXnWB(K0 zjP0lVASV3}x;UoJ0m{xrl#5x;^CyL%!wypoMyLlRv*xlGC#0)-uuE>*qj6?xeCfq= z^xrMn)AObc?BobBk}HHB@IS;}3iFE)yV-zqotg2jM|x0|mSy97!R2YH>k9G&XC?S30MEY!&KLsQXS)4FEpH)9<)Wy<1`;NFTj?HXxP zM_h(Em8eh$-A5^UYuL!F)qj`*;3;fe#x?0W0&mvO)7{K{r4{q+JhjTkZ=?h(M!~vo zM;qY+if!I1lqrMry|X3H0^b7qVd_`P7+r&orC#U!&Xi<-q^`&$4i|}q!|YvUX+Pp} z##jAOv@|S5OXkZ>g@bF?3k;|@fK5lDeHay9N|wH+(*1O3WLj3IXl>F++m$#?A#+L0 zmEtDv9z=gEeMvQzrv9H(G4j7t;eTJh74++WK>yT~7m3WlymxbsGZ+M75{OPH{Z9&A zi~goL&%s#`K_eAidJb7=2(!XZ#vr2|0J$ziUyv!V)%bKAYGCF8_hZ^FfLUIwAA8b; z=2JR)h>p(ulXb_$C0=oHydLA#ODgP8mQpZO{bb3SYJ9H5DERqIh>4AkGos@X4BWCr z#nL-vT-GssyL^Nq{Pp9t#{1rPYOxDfivL_rU(l{!UW&e-kZT1GXeB zZ%&Sd|GvJP(p4j!HQG{4{LEvj#8}5V6}BHM5JmcDloERxeKY%fp<@HF`vMK+5jNRn zMAH27VV8wXCOH=_&p5w64j?~=Ep{E@QuNcHcIMDeqjJQ)>Mxi_{K>!4^wKE7$;KiK zIf))d7KKQ0oW(G{N}bW6-)V{^B;!@ z+)x}bH}oauhQ7qo(3gIuJuURN7BCB^gEXb1$N8i_+E1jMCa)YqUi726%@JIC7{pIy z^Q&hk@?5QlSz@z;zGNE2TT((=o@I=oX`Aos*PMF5FX4 zkeg>yxKj6AQ5_q?y1LEW=9TWnF_TH z#w7KTG&xO{TCWBIam&@#8*J!8Qe#Aqq|S8a(e<}B+ftm9o$GDW05XGcyw1-E7Y-^M z(c!sXeDd>YZ)uf1m>=Gx2|F4q4j!12nhKsPuV6qE$ql_v zRhcA(OaIfm?>2mIjPnfH4QkVXURAc`8dcHo4EUUaq}MC4xF5e({F_Kg=po=?fJc}w z)FA7O4x7X;>Z7K$RBZROj{Dqn61&?Z(Zq|AV36(}MLaL-klt&^;||{5T}d(BqT+fa z8F^`>@1nJ3poh!)Qs(uu3R?;tlHOZiPqSVV=_hHr&gr(5qV=qpbG5*_IBbEHum!f{ zy|dAwk0DGfS4HJ*)nMO%CcYe_dQVjA%#avYYKb}%3rIVjIDodwj`PHC4n(_^tI{-#X_Zx;6~z+Gspvx z5A#`>PNQ@jH&bAA+DwfF`)Eqw!o^e_<#W8t!Z8kGz)_Y0oXm%-)sO4)Kc%mx_O3KS z8b4YLOv?m44*S&Y&{w1JqjKyvRBvL)fqAS$jtOQ)5=#PW=46VH00gwTs-MEj<+`fe zZOrVhkg;XL%a(DKjc|S4Y|W;Naji$LFZ1a3!wY(xoHJ`{+^W6<`p(Y$EUf1Kg~7F( zZOFY8_R!$!tG@ni&qB|21&=LWHuUdae_l%NG48SNdc~A2SH@Kaa9%k(W8=-^d+oda z?7-3e6P6eJk#YCPx%WT!PQbLuUv#MFD!;2?<=WFft{ND)aMr>m`DMR=ybB96IGwbiHi7dZV zS+=~=k7F~3PRf1wn{{my$6fro?%|bh=8pNs)no35+dXBCuIIdO4UB1&a(8r=7SM0cIX`yanqJEWsPc8-wo~cY@4c;`%Z3>{A1a;>pD%YIdyr@cB?Ng z*>(C-m5pVM+g@n&bl<(3c3p}Yes7(in1gXgfA9Xs>p2&@)cB=K!pgBh@Ygc7?7yi0 z9(lyI@2SWmZ6f;~yzcYuueRMXuIS9lh0hQAB`l)RZ5Iai=$3!!*qe{F3@~0@A2l?$ zSN~q8k3U&=%d{Vwh2MJj@%t9$9bL4p+L${N-^)K*XGq)6n%o{$f9yY>_i0)oxZ3^o zijP-ob70E(0de=mb}HM|y*}>l<+Fc?2zF1ea%t?0CvL90>*S@N*Asil06a3L@z!?J zdcXUG>y|UWhMx%8e%-C#EIT^S9e2;NuUme2^v^wQ?#@3u`t*-qbniZF;)NqkE01u` zJ$d2X1{>$^-FS4;u!Pp>VIwzu(eTsQuOe^Uv1oHnId?(5bvf5vxTRu~;D5dITj6(K zcAnberV4Gk9jY?+=)hB5p8xuI)wgnwo&I}j(QKp1mN%mRz#KR~`K1YOeb;EI=fh^F z=4?#Jym8kbhbotSKJLQMebLW-y6E67jlNlS{TF>-tv2bqw1EA=lQW)}ysy?vqfXzy z{r1T(Z}?#+K>XPCx|8J}jZKOCcG;RIA593_JY~e|H&(ASs%76FgGW?8T{hy1$ODC*&bn~gTn_s(m&V6OuSB{uB=g9It+q$IeZ+@)hu=%U2 zBt)dWKK9K#*Q=-Ze;0G(sMQNSuii9m+WEVie=>9RL(4K=PiVjXofZQ}j)^W`_R#YY zKw|xpt+91}yR-g`i?58CGVh(`!P7SUF!uYb+g1$zXOUn%C^l%;-=;x;yUdBcNEdjHiRVc?N39`JUW5_ofRxqFI#KT)^Z&i$RB>0K4aJ(IHYjT8I7d+7O&v%d}RHup$EqqE=6zCLPt z@m--ejycVv#=y+=8 zS2drTx9-%)a=XjcFn*~r^RM%lrX9NNhdEoH>%Zti%Wg8k$Ch!qKKiKAiU!lCbopTQ z_}8|t{i(PC_bea3aRXudE-CtHFF(%V^G!KyFaw#`kMP!Cx5c$rMjNz zaW%f*{zu12Kg_S!Y{lGWKM#6@sLiozukzxY+1N3Q>4`;3#>)tWqe z`#tAEJl`K#|IEOUr^Y^Z?8TmsrRE)e{!GuG2TzN6bk>92!g~L`w|w=b!&WV+x+7#> zjS34ctm?5Z`@yb3eR`fb^6b)p;-@QAc<%80?mZ$e-JgBq2kwYhmaaN*q~UEVs_*!D z?)K*gj@kU(?W1ZE4m&E`boWo&U;ldZ!|O&?Z@#U;=X+whr={P#xk9x|*SB4olJjF? zs|Ig=RQ0*pW#WE1HQ@Zv^M~hz=ly7S+rB)!;jWaqXKr0kuS(-><9m$?y!-Uxq%S?Q zx6TQ8J>d%UIKR?T~V}M#s+W zQ}&TD6}w*e`jDq{apcOoU9*B#)j#sd$OrSIW^T%U>GL1XHfn#NUEfX}TYY$>;JM+I zzjU(qA7yL1+V&}QpD%_mU$@7dDV`NQaChj6@#zyPwtRf% z?Ajmv*!tcB|2+NDiN>KDT72IBgJ<1^O^?i@dFGZ7qK;KXJ%}c{^)VJd`!>pWZXe4jlRLT|s{>-rTfCT&3}q?u-23 zV83dc>d$B}C3#*cRKdD$$>Y$ z)8laKU9mU*^~6V&@0{PU*R;DIJ^R%i2j{pvhdyoDzy8X{cg;WAb^e{h>%O;R!Ymer?dG|8U+3>w}|Eluldu4z8?$m~1tv|U`w03E1c#92jzXpC^ z{gy7q-(9k9`FQm0k&AA6{eEaQc`LUbNRXO)kjSZb^9qs@0 z+I#PQYxrAj>R(*Y=$rTM*!}VczxQ|7-RyblkB@)&tn8p$8a8?1wPCJr_B|YVwnOU$ zzh|EPeofZJsb!9r>98`k*P?q?Zy(V!r`#v)Cr`e&$L{&fU9)E$D|fW+??cxPtKP2W z3)41#|JTmdKkV9Cv0dw+Z+FCuZh8H5j5ZY$&7XH)g`z>~C^^jr(Hh*{*y4nC=?-?a8@A3f8RZv}68v zTOMeZ`&rSDpARk!ojkPqibkLRnQ-gxr*3fl^j`3~T?rF^2`Rdv0t_QblU1OE&iTAYhKI1;in&{ zwrfH4_s-v0t!I(}}+v7tYYjvL}yf1&2g6+v}3938l%#&vHWn)KX+aa+s((X+VYL;DZ( zzuhw|wBB`V%lz|Q@T%pn6&_ePduf;by>ITZzuB3ez7A{A>+4}Ng5SS?Z|pnI*7?`Y z&NW6q@NxfF8=XrWJ+Z2L;7# zF>++NJG-1(d0@hx?`I4O$U1v6E2HlpUqp}mCI3RssG`_chyFad?AaRK7Dh~K_hIT? zgCA%GH{5`~6gp2jBm> z)}x`X7tPywB4}g8%)NIfSDjo`J8gT}F+rJIW?k&=jakwEn;-94`f7Bw)yLw$t5zX- zTc4lL)IN|@WyzV(pW1r!#Vrvvo;`kWMPYKq{-0JmGotmhSB!NB-}?RN%d<9C*gUVn zvyYwHzxmMNGquZj`d+LxEcb?cHg0NI`JMZ(zu`k>XO7hNE?Rw{a?X@H)+8S9J^SZ7 z``7r_kjRgF*ZR2rk#%?6e`EFfQAw4z-gn|a+Q^U2UVNnRk&kb_y-w$)+dlkw_H7k9 zPTBcoUAMdKgQ5H8Og$ZOsrP5?XWp9p(>HHC*RJ-xgL)@-E;im;TK}2W#uKvwpZj^x zy6PQjWVZqh zcSauhS5ob9cdST0Ik$fBzV`cP*6TBM-Ip(% zJka&K8+ROj)3a{npM9VDW%q_vm3s`X+&ZBCphZ8|NU8c)vkp%;9zV2j=8Qjw4f|rr z)bhWNxvSUd8hoG{OO*EX_F#9=y0;zx=YVBm~*k{pV!d|u81Zb zd*xKSwQti;R%Q1ZKB@As-wPIJe&cR=aP5>cWj$Z?tp3C8TUw1-^j6bycYU|E`QA4o z9}m4@`pk!#w;3@%@6j!{emCLZ@#Z&7{qXd4don*sYkl^gvz?l?+Sqng<=)MoedO13 z1A}Tmm|2`&b}+L;!3&A=l6f5UdX2v z(px<-`|;o29o>J*g?Hu-+1LGn)oHG8{SFOqo>Fb^vd9qCX&+^v)nUyzk z<%BPjM;Euhessl}EAMXTsdBK^;!mENvTqCZLG?1f^&B%R-!(en%h@kHHU5E_fnA?@ zbw==pVXOZ2)5fo+Zb-W2)+Ifj2^>-_ExvA(-o1wnD*w~@=ckpA7%+R`-ET~)Iscw2 z+2?BYO4%JgGIW`{<$JSJmwbGoMTZV2>JRWd`^1e8=Z)=n`{YfZy}q_<)TI$Ee+&8H z((hB&_5Qwbze-65V!F+JdRpDZ&8hpjE{RLZFc{g2lpNQz_GagpS=4( z{XdK+UI`B0HswHrJ6BF!QD@_ii*5<%KCZ{a9U)cIzS=$I&0DIC{dj^aw!yfC4^Iz1 z^x{i9yQcACc=U#+o?7U-uGP@J8Oy)eykPM1_-$?8nl-2S$Gd{3e}D6({vXcHOo`k) zuigW9MHM`~@~)IALvLQNcK6T~_tvaB(Y?H9%0mN>za0HQyZEYKzx&SaIiAFiUYK^^ zr9W%`wKO+!_pPt&eB_RozdtZ{QgpeU(Ur$_j{UOimi0@9&6)hR8 z@X(BB|C||j^ppIu?l$FL`z3tpSBsaN-B#(Aw~qzP|8sV$HIpvgb$;u~>Jo3hY!AVOSe(_cQ;|ESX7nwa}#M5OmyS)$< zeN*JRtwG;yjNTMm`TgT-?s+}<+oRL|`F7bSJ(ixkcgC~v9qZgm4AY!fDjl1Z`EK&r z2&VV>}9#<%2u1)vfsF#BY#W0 zu5JDC@4p)`XcNJ}?_%Qb@hjTT4DI=7;_xF+)SVY|aqu*XfA)^7srP()vT@b?T92No zwdq`~leZ<#j;^phHNIJwvaJ(B$~|%a`Q#n-E5wcH`tED(pZV*_gZDLC>wa+egH_vS zyf|cJ=(x5M4{dzhyY2q$GBF=4|MdBQUpvk?6!O~M_xmQVsRZ|Nue$nWzql<%* zy05OXf5EmUTk8*+K6L+!nTryty;$y9V`QCg)~43%)Z+R9)s9Slt@h_FtEJqA1D)&a z^`XZvWLGHn)r3j4-TF z=f<`ld1PFrbzNR*mpkEuh=Gkpo_M}ft&r*SD&G0cz-D)CZ1d=o%WED;44!tN&sgvD zwnd>&cN(5>al*m9i$=73CUesGXCC|Hu9c%6?ULBH&liI|wI=3n%Xo9p#1eow7!_-N-#`=2h~E_vcj^S$*e8U5DWJFnes zPc}H1`q+mf3R4p=r8HPPd`87*-}$54{G^+ESNJWa@cL~%M%CMP%bCsl9!x1S>a)Qs zyPeq=*66X!GY=WFmVf)_!HU@tx6YY)w9HEH!hxgqG(BFq?CPciW}f-@#~+U@cw$i0 zO_PQ!`|XPvujHgRbDhkd!d&F2SFCQhugwXol|uH8GG*!ZumV}~y-ShD6o;>qGwCsuYIJt_RQ z9nU{8a$%=cb6$Vy+=#;Xo>P0B`0dYC@4i0a(esUekLbDJ<>yzmbVUa&`s32wdtxVa zoEcfCU+&foTkZ+1ROjROrqo}z_qJNQ_x*8rR($7jL2m{hj+vM|t5<`kTdXi%zw}Du zlY5`qy({e5C*yn1`!(s*Z-1uM_-(?t!XZB-%=zf-(emX-ywdQFt-n4HJN}zJ^M~zu zCgbrYU%at<*!frYL{%?djI{R*gizzCY{nNiBl9e_w5AlU^ehy!PGb7gFzUKO*z?X_Z>8t<&$eOE*WKeQDX9^*;LY z(}M1|eIGq%*xvV6)+!tH*uKNP#*X^qi3)983r7sPr@@Sy2M#^>Rr!O}f;#;3<;1l+ zXD&Fuse5{jf9*M+-D&KK+M_G3J`p(X&UWptTV5xi-z$5PKJtwGXxW_~ym>D3i)Vt0 zZ|M`3cKX!JODh+~Ro~yF_RFo`T+*`LsOcX(x#-Qn=>>mI9dlEw+Ix?^JH2oCk>1(Q zg><;DZ0Oi^1HT_wvC&WKqjzkXaO|d#hko7EYHHo*>sI+PEG6^4Ho*_{o%iR5oj*CV zFYWf7Po}>c_SudFJKoH0()rd|H6o9ns1s7_qdSuKzjPwM__iMwAN(!YweaBbTQ}V_ zGPlFNRne{%-F8L4)~0pz(A7mB) zh9t<;m8&2pJ+ws#zG-1DxVa?fx%`DAN7k3|49O>dMKBeI1S!YfeBC((E;eIr#WxQ{ zZSI^@z-r3b3(}gqn>B3`Dj}B(<^YCfz}|_5l}5%jRQUn8lF9^p!WCW`-Eh;$NrX3t zTL~24&0!#+>IidbH^XKj8=k<$mac$EI^&xP+ht~X4HW4GS#T4Dn`3hQ3BBur?EJhu zdatbe3pkm0W(|O~53k@AiYh1!FN7wZ6sF(7m*w8lwOGD4sP9ecTSa|qt8abv4N~6_ z^=+xXoz=I$`WCD281Uw!k{ zcZ~YJq4HHho7+>vX;Uqae}=r%vHUSc;u5mZla$GKk>oXs-|sdT+-To8mQ%yqE z!d&Fgi{RXVe*nI0y5M_ahJ52^%eTtY@@bqEd zH>vLt^}XQ@$#1A{i2Aly-`?t*slH>>cY*q@R^LrJ9yqMWzXSM3bAAl|Rm41b3Bh0R z?+%1%zTNL9&R37ux1GM}ZclbfJ~T3@I_{@DBdTY-sGrdoBaU9xz#Ny;K_@iR(m|8F zbPG@A@K%p~18X>19}@S&>cIzVv=K87 zr?1{$2&kg>oMwhwHRZ6O(m|RXVeAihrRZ_#bSyVVnDSFPO%0R2Qz5nAz=lXOFJKd% zR=TPb@!^5NP06e!;ccdCBoI${s>epO_CrIktnqCc64sK|JcsesVa(m#_duj+LAo6;#>@1GQg^^-8dpW=yT==}6IrPEL2Eg?k{h+?S-UUT`1P$5pj zia=T6<}Dog6(KUy72(lgO=!%pA^=uc7Q7i&3*8J`3!U-Nghi*P`oK$V>V&5Whne32 zFVoh1YA?bRK`Y$c z5hfbJ5h_2?3ZF1>TqZoEW3RNrc6ve}^t#dY>2;#RYJHjT6umJFO>k638@(|UZ%NCC z|5i(!bLxDcBW6DRx1ukcPp>oLKN*k}Aq2%RBkbT6Z-DkHg28_f#o#}PWXO1cu1LQq zLW2egWszhWcW(+!Y(xD89#sCqWY&M7qa_X#Sp9{m%Mdu8Ca%O2OQ8R1ss92tDh?CM zUN22hNuiag|I+1XHL5sAIbMebrSJ+=e<^e`$+?k=B5Wm_##YuTqss}5uKEkr%3oBi z{AE?^qS_c;PGNM_U%DKlD{;1ReEy+{>yjUzdu(Ak@976t}X zo)`$7LGuNI9Q-@O>kdFLuRyQim7y52wWu6mQ>;Ax1swAQIL?Y11b?BHn_iUWfg=F2 zUhiQ|MAno9g98f#rlNTtSg~a{oN4ri7SGh_A$*FLY{x0iM^LiifhH6fk@2wS2wXKF zJX{x(MXbrjp6*EjSlLf9lu>DVkt4sPOt4MFIgvKMHlBo}kkF>h!kV|ZuVt&0RLTjS z2f64yT24`RVU{@Q!&=X$#sC;q;Dwa~xEx{A6?m)*6+<&tTec;;hm5Lvgi)fL#;b8c zXgE|e!ICg{qN81;t{KQCpUih0s06Ogph8Y;jDE*WH4Fb;5+fB~0w-!`$#PP4~%jT4$(2_Ie5(Ki%XTEE!hOW;EF z+0q@DG)@S+8az~$)*!)&5-`z|CBP-&k~7E_Uji@PM}(g(pAUY`uY{jf)aofiPdG^| zt;ZZGC2(`3+AwOI(BkUwDbZupN^WOoTenfW*%O~>ER8I8s3k~k;B-7%2CWgB(C{ct z4?oz36jmbb69l($!hM&)%MCSVgF)rxTb)GkHI*h90s0XR{!Yq-K^XNox&gms#n^|2 zgoLm|6H&v)%T?&&;#mQ|SSA~*`n9UdMNhIdAtl&>_bD}P3gFi`nn?p43;1UQhQg;? z2ES>f2o*Ls5&sDcZ3!i6&?o#<*WxdVY2sB8O^9|hj>bAK;{Rua2a*?5`O&@=7*-?( zKmuC^x5&V|M)MPzL4i{j2*7ksO0i}(z%t1yC%gT4TLc$7u)IgEwS&N6Wu$pt$p%<)XQM7c&iH6l(sIyGia7O0XWzX+9KY?dYhXe)jxUUK|RLNBWuF zjgaF;EgcJ=(tvyG3E&^;p&7je}ai{Yl>v@A+{^LA(~vDq)PtF_85avE7YK_~G!NOnI9g z8o7fag?!MN#@2y&Gzs^0FbAV)zNR?Rsenf|hOsSZ^SNw2SlcS6`T_#5BUlhECg*-W zR@jr8@WBftEl52l)33{@vH-kp8%ifK!jNqg>bI9LB*fz^C$&;)!^sAavNh^K*3&dT zHR2r}dp#q&r8s-4mRawa@v_*4rEYj>?WXqfGgIJrxqRA&JLUgx^^fAc_;jk@DH8nu zR(}vI`o(vNOr$&7{6T46`o`lw`S_>y?Uej{FWYkQ4eR%i1cS#@8K9>ySrrJ!w*dd* z@B*FQ83GUveau?3eHCm4IDluQq+zn7@41YTpIMON^|)X%q(uEa=n!v~vEHAhq_S=J zI)sBKcL-JMBAT!3mv`-n8Q0bp7HG%h$NNUzKrifOvAmV%D=h#s z7n^+oU;<&*pPmcXSnyg!k-#+>ONwT;s|mu8o1hsvrT_!!v@qCm8?`~Fv%O%dDlc^) zu@!+{vEMIvXuAwD8)Q3Y29wD%)fQ~(!;*((pj7J&s zQQ=1bq}_B|L!H8mFvGROBd*ptPMLW9jCly2+m?^Zk>FfxVUpDpGUui}-wUVC9SL~W zJvZT40*vblaHI;D`s7MW!ZRIG;hqkB8c$^t6Dnif-#MajFU0`RlJM z;7hzBA)(RrZNIs%T`Ru-)A%^Yo#zL75BF_XInMs@v&|bmlVia6>oYIRei53Ig*DFA zW1N!JSwO;|O)@DZNVE#ejvhLj>7blhDdN?SX&D{nwYeJ3PhJ4vbejvHydv#pd7@luzi|LViS%cb5K?Y zx(vWP8CFu)*;gT1gpmK6jlJm2R&_HK6*_+QhoWy%QIa!>|ist+* zDTe(|!YDT{g9pc}hA3NoF-9!tWPr(@!Mc9NM=^^O2Y<=jJ&+$WL_2Isx6dCqKH^SD z%gfipi9IZT7&Tw!uco8smgp02`gl+j7X3F22xq0a662ENBa%A9Urt0vsu!k+SYMV+ z^AX9V2qP-CQ%r1>HhoD%LOZ2UN(Qo7B0e!HDY*yiP$b91CPgJgM?^*uRB8`N=`h-2 zMAIZ$w({5yt@{IM7Z})#tO4S4MR6#KLaF=v;Iv%2={MyWCLiRR9_Qm%%4Z#`djx9} z;<--zCsrw&9I@wsI}6fYp2?R`&E?s>(^_b;D0d){PPu%v*5qiqFt(Au;nYmF6>=eb#_*6x~Djt9Eb&}e`2WG>Q7ycn|_(>%xkjU z4%_(9xafAOFArGh{p;)>t6zQN?d>z#=#eOGJg-#09S=KxRL-jZ+Q(hn||Acs#h1p7$}B4N^ z)?r&S4~AEr&t8_UNb`#5Amo8z{Y>ylWRipg{6ryHv`_UYRCzAKPc$E3>Zz+q-Hr&o z$_>P!_ls=_m!*ot2xJg%3HVO#J0DE7NAKq&(ap;#$y?LI+3qI>Z^?3&}i8&K5uf z%c5#5tpNooIdn|SO2?WOPZ>f|c%H*Po`E{4?^(wTrdlEU^gb2zpuWM%P>60cA( z&IciR2M?C62Ud`&9KsRgu!D>ulOG@jN4&b@N{8~$Ka0Mz9L#2aig^@szjfwwn1ZAO zwV5y8W+c+2r7|*PeBE~30TtkTf1DkFi0sd%{X`27q>=2#nQp5e>9}!l{nzUy5}zf~ zLfp8k`q?-s5g>az%#4BF#>y|15otBRNFpoQbeBd<8r_c2feTHNyLWs;ip6UnjR)QC z>vU?j+@=(RXm*4aDy1ia6SBf`UoIu6yp^A>omCyGgv3aHc8W_(Y87TA5-Nljg+oFm zOmKR{c8QJa1#b;dxDP@&QT#{pItJ+lJ_3gTuq8etB6|QW;LIFutF)=HE1vv55_;5Y zqET$FdCC(8Z;4cYqW0=&L}h1ZK|Y>FM(c-oKqttjL^N})>MoP;E5c4G7QRIHm5h1y zZq=eG9lqG`7f2pv32y{+UrO?pwr$(GO3O!^c~ih_-MTg4@-E5m479y4wxx&kcJ10} zdIXm!sVoQehc}_B%Tu`k)q!T~VD4{-Obat#1iWq#(Wm^0Vs|cy+%tFafKDPFR~t0G z5ODK#EsKykc6J0=ZvinNKUOB{FYs8{+FACMZ}bh!?}w4i#mmIE3&qngxd#$j{%QR4QlEHTn(&5~%C0d{u}SXEQC+*n*}~l-5^;cbcZuplC|LQTV`AA=A;(g@7=5(L zt1wwJkM3iomnfGI)x8HyW!jOq*JEoFRTT*XgabTcxiAqTQ&qjIGi(n+_ji!yC*Tt! zg*`T_3_;M|DFpkb`x?IPzX*E9k13ne{iGv^vBS*^P!rx&3moYHQpoo*GX8;D4Z;w<50)MOjm}eH5r%ylRrII64y6LgXSqGD3 z>*U}&PGHHg&3UPP`FXh}TU%m0;ep$mnaoEj=||nKK6d1T4EEYYY%zL_*Bx8j=2(=( zdSj|+h54_ZklkhsGfQzfi`B4|!=4dUjExP8iSfYtxAHm4+v@441b__3mS1Ysa2U^$ z@S~NVdd>#?J9}_qNQJybl{3S(+6jMKysc}&sRt5M-xoH~$%hm;h3w*f6b1jBv=QQG z*z|5?4`Im**GGCZ83ic=_;4&RIKC7^t37bN=u*cdvbqW)?WJ%ot|zhIbnX@ri9L#k zA5=h%7bJ`YIC13XgRddL3NECWnZqfp@G--*eE9@ViTJ@~mvA}42Vmb8*TYIa2aZU7 z#5xIom16Q<L0tvN@`W~Jjm(kRGuIqJiwlVNW}Ekh9B% z!ItpVzmh|N)R8bGi>qQTP}d`JD)DA-*iujd*jnOzG2;3v7=^$?GH9-#)Et7B%9qS1 zP(%suNy2=cj>&2T^*K~IM(ZrptMoIb@fz9ZiGf7(YJG5iwH+ zwe>)B#>x?`L6^o9-iUp&0^{0v>XCdnIUTZ44hzKn}DY! zT%v;*GHz6#B_Cl8A){AJY+_twmmotG5+I=oL zGpSNarc3bYo*5Dv5^tss!}MZf%ZNAWpaAAGDdmrghhHI_$wbcWa+zhRpR}esuy@82 zVEtYtA{uvVQAw(W5KFOdW_5})+Z|XGtp88dy0rWj@-qU4T}ZMz>#@ep8SlS-A3NEC_3lU%>m`RA; zNueKtZXiw-Bt*n^jE?CVh5LX~RFu#jHrq~D4=GIO_^wm>Sv3F-0Ri6t-wbT9kL8og zZlfUq=NlsZ?t+dpbkv88S)O89{UH(n-wts@@5qgpO>SI=y1_%Z^YIUSxjTjAI04{G zNZ(Zv6T{s%Wk_mXMt*uf!j978l>Qga-oZ_crcI3pfMU~-P_k!0=~(g&yJn>pq!h4h znD5~bXTFy(49aIX{%P1&{pd|{3Ybn>Rx$x84`l7|*CsB6O^szYI)+@<6758Xx^b`( z)oM}>ZrCv@fgZl%Z(u@lD#H!Vg7RtrZsk+BQ~=~}5d97;SS^+QW7bEvJ63I4X^i39 z3s~?=6aXeX=x(A!)V|z2MBxwo;3t(hJL_k9Qih9S%^aeG(mgm3WlJAPIilEBF`x*T z)Il~%Zcw|pGAko{3WoNI%Fc)}9-wTDis}UN7APK0H5M@)>Hb?$)9uHEZ#kmAC)79O zxWxBY-|6bRM}4dOCh0BJx4-&Qo9L&89dlNOkK8JQ#{Ro<-82_+t zxm9)@UP{2eXYVKyMY3B4qTi|`)l4(F0H$Ju76w>%n~g5XIwV@27?nt_;yBNL3a>Y= znFtWUaV!8QT36C9^F>Roe?#~V?DBg3ai`%whI@#8&VW#)LQVtk+39#)kOCI4xUh&k z2a{GZs3ER9iDsdiCUgSPV6mnYA)z)9O)}g)?Qq#QIJrq9zJ_YxeBgWxRf1KXTN{6sg{12PyKq}NsC;AY7Lgrz<`fgI+6Y5*#4@nPEU)?Vy z^}gZb7m32hpuILuj&LQxBGpHK(~mI{p?i?yg9U7+m&~M6Ars|02xn0h;yms`bmCy4 zp|pkwCW($>u`kPwxW(vUh2xYAiH%WIn3WB&4v_3Y`+@<%$zY?edi%zE0(-VqtBa-! z4HPNi6WQdQO3zNUIH+z((5p!j1V3t^ijPf%1Vy1?TUn8;AH=#8YT6T7HJ7zr@7Gp= zl|jaX_;}_5(P*fY+CVtd&5kg$fNX+M_ww5T59Gk~h5#o(qTNI{_}HlFIQjthx!G2{ zI=17Emro-Fv=662p-h*yLkB+}== zM)qO6>-G|0E~gBP5U)@7+K}^+Js5$R;(?xcOYHyn;;xv!#90Hc9FlRQP$I!L!*Zc) zhJ_6$oN?4BfNii8T$(dFre8f89l=vlXwFkUNJIb^Nam+9&(FL((l{M0p=eI0-lsBM zyFsdtZ)76NP3R0{Py~L!hd4{#A2>{%M*UA;%mmIv`6x`j+f{_=*HFLv5JfYY@8O21 z(L1L+mn?1GQ-bPWUa96>wy8x^+vq2AKxHFV+p+EN1mUchL+A;$lpyG_T==P%RhUz< zf;3$8C(qUl04KO4CE+PX9HjZM^P1jW5x!UX^h&Tme&+M*(tqoU)d7xxB1=XAM8@gx z9ZnItJD6SoLB<@eoP?!A!*nL58yH8)U|ZTM1LhYZb$`lRUzH1*8o0*K9S|fwyc`9{3P4s#&?}9soqBQdFX0-$K#w-#-yj9w}54%wziN3-gWixH7G$0<82!WnSUBP`)H_U z(0nDLt*Vp!B)e8+a7_dU_YlSEr&-9ab^t13<;Nm$WYqhF049jOITSr(c&d5@Po3Dg zh>54#CnYDewjs!ctN=hE!jaiVxN7RJj{&?7(z1|px+nBJwl5f&pQX$J1j(0 zPW65UvWqjLFyq7Q3(tt}5JiciYhg}W2N0T%vOfwKrFda0##9LOoI1^XO`6y_B2=(I zd8}$rvF#Qd>M4I#4lyK6gfB4%$iSvukY?K-WIyLp_WgkisE20uGJ4;a0&30i=0Si; z7H}&Cb9sL%GkgH4GGCRI9rQPeg?O6|OrvT7)5L429s&8XjLH<^G=yYA2l(M71xyuu zdQerEr{}j54rTNs#Zm=`M-n||D%mY7tsu{vmr-cwXbqQmDhqZ5_yvC1jH@xR+e4cJ z2FX(6Ch3*Mg=jG9oC7HzANxuyGrZ-ZcWgOX+)ubt62%qj522^<{|Sz~t%5`RJ@Mxj zAD}sS%7@X^ZbNO1$jlJR*eLd)7K?eEEj1pbC<0zF(t!eurMkYCs7MC zU%YyWwv1s@lc3y8TnQ=C7%Q#+>H4lUCaKjXR`ErC#7E`i7uuVPB%%d0BPpG}t$SE{ z8Ac&03`}PL1QU0!P<{}2T31fbE9Wj}ozLAvaK;=G>eBg?Sj5br<4Y@#viSuhx5l~7 z%$E>dV)8#9IT44_LDS@(AwZJO>E`Up-*WOTuGbx*MtHByk zyqpxIa?H&(H-<@&+YO&+f+8mg+1Lq)yxb6AD05yT=f1yecXZ6X=Rc-CFWS{l&*QeD zQ<1Fr4t=r!tD?$X3GRQI?vzieN=g!W@0 z?%mZw(ffcxo8DM)%9Z+A(N)L3K;z2v%ZJX>exs(jO}3= z;bBsJgAOiuu3_5-u|-i9wcOO4whA~Tm>`FcE)i?5wdiy)y?#tnw6wom%edLb#cHBH z6rz7@>7|aFlWvwou*5h)exXliNTa37{G`Cq`eVcS5=mcvGe1dMQ=D691JMZPLuqSc zx`K4(NM%Bh{KOX2{RDX+?^n2w@#cmCU9GX~&h!+MjQ}d`CK-!>!T!x+ZT%&kXv827 zTbjXFZB;6}!yf>{f({F5Gr5Tr;eyZ1r^4V)a&qX{mCCQw4Cxb`kM&TKEQdE(k9H-` zAQDaeS7sWWdoB1kIrQh*kFS z1~J>}52YVQqfk_sZK{X4EINcu!Xxrm(K?eQ$Ml5mueh9poNzy5{Pd*~FJ@~|N%WbA1@S!}|~r?D%B-7!A;ywdy~bGG;AeaaAP9 zwiY3)TDN9S)pLA1V8Mo*RT9*?Hf_23`0 z)1(hNzv3iIYl6%tp&vRs^pc327vN{T#FT=_fV!;2+}X2&NMMe$%fDqFFa_n z3o>#cZ3y$Pr@6Yh0*c_SIG>v7z?01{>5Qt~_N7llfqE5XP#IN7sx-GJ((7|BoNHY- z{^qx>a~U7Wr{(m%qlNvC21ZQMm6G2Y4ZYw69x*yJlsK=$o{wGrBl|VRWttjKg^3Gpy?^aYd#E99Lo=3m`2im6*!&l zvMC>kGuf?h=cLo$G-~EL0^fBXdXeuV1t#bamw`i}un^?OSL@>FvxDMGd971=i!jmS z`7i17(A5d?mr715Q_c$W4Fuy#S5f$b`CPjm6unor;^_{F&JU!rng&%po!^^-XWr03 z6TLBQ8q(FWPIj!_A)rdX>ZOTrkk}3@I8gSuCCN}t|mVrg@l+_h8 zoq8V(vObrqdk~YJ#>g{E#pm+2hvC8M=VEg2>EPRmdmvs&*RS=7v|ZWK?IcvlOeWk=oQ6Kxi`BKo{FEw9hjZHG1+jv{7AmTvy+~4IeK5@kw4A8sHeaf56z%R z1|3rQKq$ExCN!vRaJTMbDOLYBDRXQ{z3el~p;t&$+@l%-Q3 z`7|(mbvv2Q)4DN&zg=I&nJ+Oas-qrQrW;`)8l(fB=q;G~1HzvR9r2sLMVLU=^hjka z0T-l-GqQRNtF(~9Osl5QX2BnpB8#rb2aaDw8A~(f-_esX`>8be4n-M7e>8d`=1`li znkUvl6)i=6`v&dEua~fGjp*SKx<+(XYLaqZJO;%}6I*^(576}zZz?b`UmW^mip|hc z)lw>kSt@$mg2^vT4ay5WmimcZfW9g8Zf$vZzUAf-{dV?;t_K=+f)KO~wcRQu!iNV9 zqUX+Xh1f8>*`%MNn}q9jkusV3o^m?HZM>6oiMB42k4<*e#}8l(oFX`aWvGqZDiW9r~RLzKz+! z6J2FNpEn-b2Fy0lg7rBsOa1opgdN_+G~^jype!` z|GBb)6wiM3?!qefZ!2g~r!glZu*@}T?@eNih<2;Z68eZ*j#*Nka3y`IQY+x`mxkE~ zk!FQzuIozWXco{3icZ`1ayEIXMFTDI1K+1Qh#xgnu|f8EE$1=){vxpnuPhtmCH1hr zl1Uh7)@#PxhKHs__GDMdjX+xNuU&!agtB(5B_uZv`c%vrbJhhF_$CV zdPb|{JM>nJ(2!QxEwm=($;0eukU9HL9xJ)Ey&4+Rs3!c3t*7i%9@e`u@+e z`n*f$Swb1sRnj~#ividr&bPuHAx9zI5$SWUS;C!`!_PF_B(F?H3kZgiKk@mN<3;L2 zsJrFBMpkLqK#&gW9N2fnju_=-v5Pv#T878uTpOhoDM)$`b2&;2$nA_*OP1>O$h#Rj z)4PWj;Mj_`>$AF?@A(`|eDoF0?Pk8qo!g0RhRac@33Uk@?FfULw!)f=)v^LJ?C0H1 zx(A+MZ0)9VwmSE#^Sth2eO@QalsG!Gl_RVF?dN_i50Eh|aqee1BhL5w+)s-`@rg9% z0FQG&>;x$SVAg?b98UmsAtyOXvIn{HInsopFPI(T7FyA!sn9@FAy-(6C-T#y4=#KLl*V5!I*vUZe%>C*A$#Xm~3WI%*D4BjMC-NYD zDwU1bc|!ZYMV`a0#&Q!uf&KWR)}Wjs{(ql~;GXDKv zFDH`y*~rZaCj$`lCdj&@giOL$;mb#V#4(0U{}DqQvJ!CU^sARE{ZGk*9H&n9Wb$vy zs~mcDdIkTVmn)fe?|EuptNcc8+W$Ww5BhJ(&olv0-+x;^XS)VD z+`n5+@X_-^GiunR_|)!l%KfeZpZ`qmXH9&fKQz*bEW2S-oILP`ftBwwYp8<_-$*5oF z)r@MdM$D{Nx`EE8kh&yS^*RLO{hpf?NPmDy@9$W|lBYKMuGsT!pcroWS8W5XSkcSH>QA<}| z#Y)`gxQ7hEnH(2Yu!IBAdLA@l!Oo>;dD-(f!&VS*@r5Hj+z7F6XEhs2gQo#zd-+C^ zU+^o6o}DrP_tP3_1vmgUvP*?y2SjcQu`jSLVYc2N2pl2uF#bV5(HbtdRf+Byxaxs3 zYU&MR!hYuTFp<@8gdv1!8wNxgm#{Pd@606K z8Up2YGQCbXS;+8T4O#w$Nsiqu19gxlEu*B}Qt2CKpK|U(^3jFyF^7a#ITQq7eTI}xO*JoHo4)YC!zbQ zaauiXXn@!TM#=yf=TiNs{28h@52WS**)usxvc|>PAP@p(5wmdPZgvE9i`jlSd;)Mm z;A-nnAx}W2OW-Vej6>%p<$t(Ic2+9=ODB!%f?#i6U9^)dtv9qy%SP(ux)BT0&D;lc zUo6OIW1{TS8GT4cD|D*vO1`tFXZd)o!IMk6OO}WcH6Yk%zyRwiACciD5o&-LnVoI* zw9Z6+g9`u1gzzFvK+w2^Rs^5W=&&0;T`fhxWBq~qq zzcm@?3+v5xD`fq&#uZrA zgW~%-C`8Hqr3uQIJOWu?rZ6Z2`69v9`0@i)4MIYr_%bBDw}$T zDh+TKu}e3=Q13nIK9p<%q8twc$wgS787>NdE8nMy776Yn#BUwOMfCEu{utqb7ws@H zsP%5)1clL+eB{6aF?{=mJao^RpA6v)tmUF8-;eRB1b?ghJHD@DWg2~HX3M9e_`XdU zNhka{j5DZqphsamK4+JBNJg8~i;v;A13*6?o1E(uRv(v%(VhJ8V=0wknhH8Y(MK`hstMgzwYisI$SkIc4Li zn2NE+JtDfun@oOXLPD%@H}jMEOEqu#u8A6rALEJcmk_sSFij_Jr%89cXJ>Wiid{V3b z`q-WYRYksl2nOMcX=n8zL6E~8*$|f_5iAqYbl0PaA*xIBk&I~Q_3i-Rw>(!%Lu{32 zB5&_3{7vRNxkgDuezUuX9+xO0<8+x)(oUyJE9zl&E5FTTT}q88x6>DZzw**dXL;-OI5GZXh6e~lJ&5He;{_5{u6F3O_<~^ITW0cO#G1rENIrr4{~65AM*Ke9D0)u z$;bkk$Kl4Y&ZLBDm)@Ave#e9h zPLr~7igKhp_Ch*UL3Ed&lADGrEAnZ8V{Of#O!Jk9gq;sjbVZJwW+ELkGz|2Qec#u;bQ$`lROjjF$TZ2kpR@5R zCh88n{Qy-Hg7BxoQ2dgBkn$G(Bq6np7!{>*!WWsfYI<6lmOqI#aQviWwABlI5O%ai z;EFPB3AhsNGaBZ+*6m=d)itxUBc0_LN=hP|Bk8qpKbB}2^U5SQvsEukkEj$p=gJV$ za%N?E+>e4c)&r;t+4>6V6~up`**cqGjP>MG2xSpxE6N##XSSv?*PuLnV4ER^TAMCl zms!I15I-s%>!`%S-ByjcBkRfOwQc8sL)XF%?u6*7CTWz2j-k5D$?YgF=LK!gz)q1E zs2)DlBTph6HI?#80+rdedX2K?zttotUCW@f{oMi}xD)!K4=CO8Q6piz$2pF&+R1 zS+ubE_Rqm~sq>=$_q5VqBwM0Jmf9Lw2l}9DYYv>q@fnw%TIAwI0vW=^{P5XzMabmX zB+x(3rG_)5Ii*WZIvO)8-Nwu!zE_H9HWOjyinaM_6D2Rd0gR<*ZLq6tpAk&|oR9Hg znNxmh^*RR?NzVQ%nah895j3b0&PJGUDYfLhC5)tAJ&wFe`P3-wDt+LBc%qU#j))yP zsFbz}Tp#+NHd;GhAo+aOmE_|l`@=8699PakQXj}qaH{zQQ)s)&8bUh2j>gxh90G9J_Favodyt47o594Nk8VP|55^saF#~jJ#@y+^ggLjh#4V znCcHM>LWTAf@G?~01Yj!2aoCP}xIb96x>+~C51qdDUhURba^i&PyN zJ3W8Q`*--ep_=F@EOSK4;{-3}YMeA3sObAow>FxNae%HpJ1TK|VSE;0mdgo0XugLR z*^SX4P~EIyf`S%8L~QP7(#}Njg$V8j*G|^{Pc<-tGa+ZrXwI1k&TYZxVd}qr8guLCV8Xm z#^5i+b^-WV$Tr#TfF*CGU4`<4&B!MEU-Wk&nMVXmPk$@bCyf5n{9!jt7x8~WDV&BRTn&42(nDK>5D1wrWHJ@=46=8M z16R#k9sNyHhrYb)v4AbO&^wr7h?*#pprdFxtE-E=0&XkMI07SvP@HX2Q`;!?rjX}t z;^zpkIm3LxtEZ$|e}?iZ_J$x3rle^m*wR5oF+Id}>jXJdQdVy=b*+vsts86`JsMa* zaP^|0zoq@ck~q_m!kMWzkWpqhRBfqiWWIn3XOmHWnyolxsNNxj^psKkr?`V_7=Kjg zrvqgSErcEI!TFS>Nogr~lmkhVmj58E`^j*dYnP9$W&*7{5cH^sKFPc+$j(X+oBf+2 zW!8-aXo{oA%Sz|+w1zN4L+MNO00MsW2`@p~OFRZQCP44&pvGxTzi=(14kAI=A(a{a z91s@rGijsk>fVvd(LGoR_&n1CTqZw8&NJC@rrv0Ti80eb{|P&LDz#teN;xBc3xX~ zULo8?NgX#gFDikl5Syqae+{s5X32ACqm0WnrC zpm}%2f<=BdV-2gwL(QJyxth$Wh?3gAzDcUNiw>InP{qCRabb-p1fxN3uL5mU1uosYKL8x=LCwow0eump~L}13KA3IZBwtOTwNd`08^Ld zU>i2kMvF>h=UBV8D9Yi55j_<(Kz(E73xAw6=k(r}o$k^n=>R+I5~WJuYaO5**rMNK zv(jOv&LA8NRk^ux6%y1xnk-UZ(9b$&sD7k4tT9fczl9#a)*F)g* zBgztOoOPM9aJi`Bl(a&60fRV@LL!g)=tj*2JZUKYP!v=MTM3pz9Th|lR%m2HEJ3Gg zsfoAc%fk((9g658tL{=CI1HW0#MS#Hp=sNOG;>JheSf^YQ-1E&t9Hrc3x<1!P=gg3 zwR{x+0*(~*%6{&9e&VY*YF3H!k)1E3bl>$(OpVtIgTT2kIEdes_(tiUEA!8wK)k=x zRdWitmu6?$$ymK4xUOq-h)9frBjd;OJ-r+X{qRAkJk)) z(o$UoX<-s>)s)j=lEw^EdMdUKDo^%fsC-^Vh8d=GlDO*U`DP`EQ%`GLxp{79Iu#<^ z(!$8}4S3xETe?Dm%4cwOCDT=Tr1M|Yp=SLWNmV`rHKh*oIMY>mGR=T&)F1rzhkU$J zSefZT8JU}?Cy(F|p2*9U@)!1r)R*B9eWI}HW49;W!++~|gqul=R6YPz<=tucI{+Cq zJdRNCsB)c;{xrcEYEN-GexizxzsngvTg9($=Zt?!=TCFSFHrGDp)-E5ig%54 z#=ordKjDmDrsCJX>Wp8l^DlSCuUGNYS2^Q1src52q*k8D&Ba+89!0QkD1_%@2cWMra9xMYdEhv#&~T)DC?3`I|Ld=)?O zhM)KlKk@DT#K-%I@9!smjGy=ge&W~ri9g^c-j!E+KNR}Of0Lj18h+r^_7h*h0_&KHg7!Z$I&we&X}}#E~tS^?u^F`-wl`C;o&_ye7B4Uww}UAtxQnT%?Xf&*@1h3I~wT zs+SU4dI2x$ILt$~4xz06n{q@Z^odW3OD;%;_9(KDUXi>Kp^%k6)RxYIIF;=3#RF0W zk^>qIDMNC4>VV|5RJ`?tM7trO`oG#c`{=mJI*7k%%T-b&RcTP#h0mlf3N)f3nG`Oo*2|4IPdD}Bf@;_;@~2~d-iki zevkLBXTE!18w=M{=|#Oq`<@lsckfrbh;Oj%yr3SGf9^UatA*7SalN0-LYTAm_2spz zoHYl1?bbHayKMTbgY!p%Sul70h#h0)lvjV-VD(<0_k8z*zt7FR{8_Cv%`6|d+q*CR z|8~1-`QOxce`A(@W&0`b{hr$Tf7;H!_qZR>-s-%XeV%U3ob4>2JD=&lo>flwt%7P_ zR@a>lXQ9*SV@B~{AM3adU&2C(K1j0Az31lOcZ2o3vUC>BqgpEB1LD;W;cJ!gODt#x z^=AoIt-h)H!TG}%xPP?x1GZ;*>F;iCpXROCcPAC?8oSK7pK$)_Rr&*$|8xJq`|F+8 z;(m-;$D)7du3g0+X1V_0_MB()56%iL2iREddHP?Equ+e!zU%+qVw=My;~M^)(KRdG z``X_BH9MX=@8Be7zwiJ4`@epFeYHjZX14#~lm|ay_S-9hzq@wZfdgyX%nnrl{S_X3 zo$S^=^#4Cv4+H|N2a)?iH5P)4s~&-?s~&@`RZqZt)eCU2>LoZ_^$MJP6u)y}T8$-+ zHhX!zS!Q01Rp7}J%vz4Eari4dii_8Og!gK3)?e%%GJuN@O*Cu6#r>oex8ux~9M5Cp ztjpNT^=8eJ*+0CTb*b>PRvPBKD$@uy@L&U%xTR+xpUBkm*XaPgZ_juRKZO`7loJnAa5Ex33E zDd3{kyOX%MkhSskIImZ2BF}z9IBQk5iG+`@akznX`g&aKBXzj=);cr8S;MlM@8mrO zJPwb%%N>gVNqFqT?pzAOJ2o+n zl(U{?A004j_;`)O0zL^Bm;TIb0v?4uMDw8lui4B#=P?K1GbBkJ@t9vy2N$=IHMsa9 zS&54W$THj>F}twHv9Qkw-1r#%NqG_OeS-O*I$O+s_Z)K%FT)$RF}H&?4!7fTaPgQS z`UMwfkN_@TKn#z-p%*wu@G?B<_w*Ycf(ywgE_RTexVW7R;-aTa+i-C#N#f!ZlEB5; zB#wvSy(Dr%jYE5hzQx5Ky-eTY;wCZy7k@?kIBSSDWxU5$;vx7OvJDsae#~P7xah6( zSRNNoJ;r0}RUck>tjFz7c=ZV$+eJC+k9On?kL|}=S12Jj|+M14qUuqw#Q<) z_yCFG;!jBg7k8ZPu}OFtE}F|@ajj#$(oS4N+bCy^(#|K-PpWZvRHMhn;o?P0JyxNP z_*GKI#UGFo&N`+oz1U-M>We2{MnB-o#k$_Tta!L(0qW%3pYFGcN8Wd0edB?6EdH06+Ij`Uj7~cZkk$ z)^P33EwqjD;FBI(_%v<9BXIs8`#%|n(SLF0fEX+>S3g00n0t=#n8LXXhe#VP`nItx zE{-Rwad8D{!o{zVMqKPA4Y(NiSNZ`LecRo~3cz!o_t;L##Uozu*dQ)`lVoslH`$1b zAKvMf2jDzXH?_v$Rk$A)zd%N)AA)8w7b|7@3K#d1HMn@^%k&E_zV!;{ z4lZ81oAJWM?~o8Kc90-mfO|=8J^O*nhG_%k;?=J*pK);wDdFPXq=+ZrkBN>&+`Nar zVn5>Jqz*5^ue`>1F@NH)@lS3aMxgigYJbA>NtF6xCs~Y(KO=MSBK$~&$K_{|AY4SI zGatl<$v9j*`c03GQeS-hZQ75EZ;=u%PTj|TaPd>52N&0o4Y=4wVt5ihQ}4Af`!B(N zo94A9ybLc1d7W!f6#7r|I`c39FPQ1IX6i)XKcDWFC*fJMyv`gBi=;puu|hWB;*3vv zZ9N`>o-@3*1rNZ}$uf>zypGJm#k#Y+7R1F(WE?J@FxzYU*;c%DuGjY9Vu9?$#kzT3 zOK4lTf~>>EENRAhkA(XTXd51dlW+1m{U3s(Rkt->8zdT+67;Wi`y>EoS3L~hAcNGg zo4xjtTfA1wIV&!>mE)&e>?dWs03Y1pwLEpiJK zr4OkiMql$<3oh;@D{*n`8}uVCE+7l>(x1Jy<4v#i;AOaIgyY1;-;ok7_U-lBM!Wz& z{};E-G57f;vTY}_Eg}j`#BdVufVUq!#u&o9i$Z(N5~r7{_3^02RL3l4p(}7wiS=T zUy^aB);PT0=d)4D#XHF`o`3^>p9QH?g!^iI&g%jjq!hgKs0t0c=%DShv7S9G5ZwX zINE0oxOntnRVzJtxw) zcmvahNpV6?oIh?*8NOv(tPQr#uS3Mzo)}NVekQwCO(U!Nmn+10I3j zJH=;1cmjU?RE`;s!|g;rZG&og2V8K7LOkUTD) zvY2xL7w;rxT>K#^;Ys-t_A?oW_btPD?Vp4jKg%)C;=F^WT}uDs;@T$KkBbR10T+Lx zuW@npWsDInewQ@k;zgHpO~WJbIx>QbcaojB_$(R3#WA1bxNvbk$>S0D&~nB`*8x~0 zngimBEBKl|kHSZZt`$Z2I*H)oF;~)exHxr%&nDs__}iD8PkxH#$a zj2AAROImU9LehdqU}~j1-wLql8s;J8Vu1|f;&WsOFT*pxK)GJCz&z1wgaSOP*`2Fl zc)==M>j3a}xvm57W7oMJgv-e+>WD9sATDnBBJ)$v1@I3fhKrZ1W*c1GO%~%7*!(4T z4#(ig_3q=^4L+MkMyMm+OUk%dA%of$Zi#W6cnN;|M#hNa3c~LZ&9MaBL6%W2K6(>v z#>MSq0$zsSTH~I-3AlYN*I1Rq8*b(t!DDdpSKK<>*J6*};`U(?K7T81R(*Kf?er0kuad8^y!MQ)i_I1$C zv$%%jX-l_z&IaKE(n`5FzQ<=#T*An$P_vqLY|3#ZAFTuBnwiPGr=URu0F*1OQ zzaZMS2wx?EvuhmQ{tn|p9q~J47oLERkuY_{r3Yv~E?!0^;!$|5`JMIW7|fD&l#70k z-&W${G_n{E!TV45+rV7<2mYFrDHp#u%Ws=;G1lO>JT7*UHe4)`R=f<4pY3<%d=UPK z)XiZH4UW#?v2k(MT)&M_KMe0BEtHE{vJw~nX&!CE#krA z3HD#2W1tOi@n;Dhfp=Z%_IU!nDyLlBa5-(m#pg&I7ypy2#$)ZA{f6Hr;sNNn!*308_!`mA(iJ%4TYigB9)eF3=eh*{ z+{(C8Zg(jT%1SBxY$It z;^HbYfQyfk3@)CW;@ENV3~~o9Hjp)V7@ptm_D=+MrTw;t@&X*rFgL>VCp>qP-zMP^ z__+c4Y9ez6K2D;Pi;w<{xq*vMkvVt?&i%RH`Pm>0d#hf6+lZb|%Wz-S?H7LANSx~f ze4Aw0kNAhp^cOC^PU5)3$Cy`m9NtG%o`khe_$@r2pBv#InU0H7w$RVGxPbU^aTVFa zw&Igd`fUgo$3DgOxOgkshzHAlyPh<$Z45p~qWCuW1}Wl!mzam78D9uH$!fd@PJe~| z$Hjd__4mUgc2&29m;XE09Lkr&9}?9`!hxz6VeCKrmZV(#Hc_2ckqqMEXw?(D{q`)` zN%=1Lz%b_vUV?uj+i-F0A6*Z?nN_z#|Ne1%Ai(PZT3??F=Nfaxj#5Xtqtd}!y!l{0 zln>`4`Di|tkLMHlWWJCu=1ciX-Z}%F!Ol=;xHHlj?TmHCI}@GB&O&Fgv(#DctaMse zpexuF>I!#7x}sgNu6S3XtJpQzWd+uSd8}ApOJBUNwJ*`v)|c$d_Z9jE`igyneWkvk zzH;AiU!`xf&-!co1O0XV!T$RGP=7;zxWBPK(%;k{?Qian^|$oL`&;`H{cZhL;(TMD z@$S~{M0ZAHnjKMIYFv>X8G7@!+MLna@z<4w=B2A1*Go#YdRqh(@s&tKZReDBy zthcr|&|B9V?5*z&^)~c|dmDQry-mH*-sWB_xQ`oEo62L1x5sTTJCq&Hj%I6fb-DUn z19RttMw5z_F*X52QcbC7syP))wWKV3nDJJQkXqLn@qV zOsT#_-Fl&PLpq#pOn>mWu%p;vR`i%@FWQIppzZZ&@l?XmWj_SW`9d$K*>KG0rlFSQS~54Ts^EnS>lnIbYU~I z{D5p4;<=&Lp|{S+ynm&#-hI` literal 0 HcmV?d00001 From 503a6e26bfdc2d89707dc87ce0673108f7f1de77 Mon Sep 17 00:00:00 2001 From: Adam Potolsky Date: Wed, 29 Apr 2015 10:27:41 -0700 Subject: [PATCH 07/12] Added variable to define location of windows binaries #4587 --- src/setup/win32/Include.wxi | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/setup/win32/Include.wxi b/src/setup/win32/Include.wxi index 91eda561..bd7fc0d9 100644 --- a/src/setup/win32/Include.wxi +++ b/src/setup/win32/Include.wxi @@ -20,10 +20,12 @@ + + From fb1a4456a60334f37ebb70d3df8fb72ff61edaf8 Mon Sep 17 00:00:00 2001 From: Adam Potolsky Date: Wed, 29 Apr 2015 11:02:49 -0700 Subject: [PATCH 08/12] Correcting binaries for #4587 --- ext/openssl-win32/out32dll/libeay32.lib | Bin 0 -> 820100 bytes ext/openssl-win32/out32dll/ssleay32.lib | Bin 0 -> 77302 bytes ext/openssl-win64/out32dll/libeay32.dll | Bin 1265664 -> 2074624 bytes ext/openssl-win64/out32dll/libeay32.lib | Bin 0 -> 801728 bytes ext/openssl-win64/out32dll/ssleay32.dll | Bin 293376 -> 377856 bytes ext/openssl-win64/out32dll/ssleay32.lib | Bin 0 -> 75730 bytes 6 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 ext/openssl-win32/out32dll/libeay32.lib create mode 100644 ext/openssl-win32/out32dll/ssleay32.lib create mode 100644 ext/openssl-win64/out32dll/libeay32.lib create mode 100644 ext/openssl-win64/out32dll/ssleay32.lib diff --git a/ext/openssl-win32/out32dll/libeay32.lib b/ext/openssl-win32/out32dll/libeay32.lib new file mode 100644 index 0000000000000000000000000000000000000000..0a50e76586bd7b8009f2ed411306027ab6c3e62a GIT binary patch literal 820100 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

;Iib=ZQ>U0m#%rjxs7 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 literal 0 HcmV?d00001 diff --git a/ext/openssl-win64/out32dll/libeay32.dll b/ext/openssl-win64/out32dll/libeay32.dll index 135d44d76d654fd98f5779285fab0392835c0cdc..07995d901dd772bc1d1abb5d2b79489652ac2da1 100644 GIT binary patch literal 2074624 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

}h~ zo+KVX!5rt2&!Pb!#Y7}fheOziM=T)2<=hKjS66>!pHfeO8l>=HL4i-Qhs`0^_AcU= zxlhBHF@P-uy)umiC%}YGQ-dVpMi6uO9fePDHH72vt?srU0zq^@&0r>)5NCsF2eXq* zh!`QyYcc+y*T%T_f_Lwt3pubGii_Y5w3A`xCY#2ZXszq3 ziM&LLZm2`h2-kJ6WrN<4i4_omStk2|Ff!`N7Eu#i5{jT;Jz0siA`)(b0#^hB(y|+u z$A{$2K?fpMXerSaLPm5U~AXY#aY_tecPbL_^1W(r^F{w=)`D4t1A?*};(+oL zPE$QZL1eB9=&B#;Qud4fS6O?6m}5@&5WCxmAJJxj!FCAl0QQoA^pqgJV>5(wgUWe+?P8UpSM$k{Q}|2iKW?#Fgz zuU=Va+DCPqRAq-_r?QXX1rF~HYlJDNF&Z08)`k=VG{7300!)#)N`M8*PDhfR$U6WP zC7-AcXxdEgni{|*U>QlY1lDvH%3Y3Q#LEe$ zeK5nGbik!Fv~8vjw|ckF(a*B(T)@NjDVnfLe8Sv* z?9i&G_=J>5{11il%9B%+$@8v^|4Gy1f70DO#s63+K4D&u@js~Q5})uqKCfC|L_rt- zo%o+=fY&`fAzhFEnWsKRq?0+kdi+l^V^TOi;XJ;2%FhFPiT~m4l{@BzG{fP;b%_5-=b=4=_4pqO@EOG7e<;QW(LuBEK&a0g zJP`PEJ01uFx&sdc1J{~z)miMM$yj?E$BZKnRS=XjeX|GFaH=5OgSJ;uk?(|0!TrAHfH)>9Mc zn*l7|W+5!K+P)jvuJJYVewfxQ;MEq0VcURwx_@`?>D9c6s)41FFU8pa#<|PI~ z^@S<@Q|BzHFHHN>&o3^nFHGM&<8?PM*)SK=-5q}@X ztN!b~Z(_WaXO>UEc(p%V`7mxqV>T&%C6~;A7dR+fe)x{nL@nT+m(Gp<(-&y}3 z1ibF{FiT(mm#B{s>Hm>EyxFYJ4v+sG2+%#+Lkb_GKN3XzR}ES(IF1#)_8+WBRbooqu1uFzMjc7d~%W;6( z?Lj-smWc=@o}J~JxDd&ankz8zE@VcauW#brNZEZ87vYiVo46Q{;l7FY;E~~*Sc-?u zH}PJz7~t{OKUOTkUkya$??haQPDJGIL`42hMC9+psrZ?LVV2>!P>Jz&q+6=!gKypr zTe%KdG1tP}SHOj=9L#VCyN6`PbP%(Va<&BZ9xT#Uj#zT&?4f-mn{sJR%0nu}4G z;44m4rf4okq2^)~YA!}$KVPv$nPS!YvL`U?Px&}s;Q(LpHOiC}t(HAeo2u0g^c7#L zOi9yf*%P&cwA#VG;_H+t=~^v&qIQT@JJeS^tZhHUL$UA{{|Avg8#k}yhZVD@)mJ=- zyI{qGebcYw=8gMnSFC`q(l6`q(-E`q)AM`q)YU`q)wc`q)|k`q*Ls z`q*l~>9YYzwKKAi?^T8HLeA(LzM~s`V+fP3^zrv0MjB9ox4pf17vdGbjQHEUzE4#B zQSdZUFV)ao&42dIruubBM4t}0?TdH|p7j*XqfbmV}~>6?e#NvuZ>_%uIu z;x9A-$N`^W%YKwi(|{cCx&Lk9GED|@z~_;SHP_ITAlEBC*u%%sB5kGDYtyusbhdQ% zCw?oh5awJtc8a5>VoM2A`&}7(rDW7pp{5emv{&4rz8dOpz@p=yJ(Vpd_=xuK&9sit zR71GNz{{X!)o6y5z)1~#>*bvaJ>g86Z#{j{6`yo> zqRQr5-xSGZ`PS3R+kjl;TTh>fMQWmNeFINPzV-D;DOg{~*siBPbigwhU`IHE0k$K9 z0jM1YsEgzjOxs<6cB3d;x&gCi*0}vYrIZ+mUOjD#KERQ;Leu zB*h|OfeNbmJ`+#m`smFYD$4Q|#_*KQSE$v};={{e%FR55Wr7wU_Sb4PSoqErM+6!$Ed^kCybQo@>8yz;5Cx0K3^&{6hf4 z(xm~@QUErNmjT!Nt~}3qK4);WGaTJQ7X}SEYTw*3_q-c+X{+e`@OCs9mkWV7gXQ%K@VY$kF3cb`;c6_0o zwR}ylu+lKwTBvR(=ES*_g-I@DiM2gJ@BQSHg3{lDYt*H9iToJC zJ>}DuJz`!9ZlW?eiu|vRVi9mg6dl9$mtfrCQXa&&QCeV7(4kGR?9J<-wx^2xn@8}r zyQ%w5wB0V?t1of~-LRv}am%i}Q)nt?s1yC0hVr&ec^!0PCm3<-xzsA3!ktx;C?6pd z=#o{;IOc!r7HVqTmv@Tp4vqCd0GIYEIlS^kj8B+R%NGCZH?fu|QR)86h-=|#_)}!Z z2!RyPwM(aKqW{&=eEbMq7(bop!bfO8mt{|ctl_+Age+iSlRJO_IvghsXk_7=3qyF@ zXtJi+ zW%jWki=hynuL6c`6j{?IfGk2FA9R5O8eM|_^_yAK2w@Z{3A$$3C&;HMz=BU0QnrXN z(k*P>F~PW}c?ZOiMVHdNQO`EYB{2diWsgWD^fVgd?TK7vdNpGu^1B4SD+ns>^$uX%?N_tO-^#UwRJzDT(= zjdmn+BLd4pDDqU}Uf^cjN%z7WH7j^912V?=h16IQTZ+?UlgyJRG4KGNQPOLQ=nT{&1S+1^2;;{eUBiU#W|K@ zCqd>|sm6U=MHy0<57H)^e37w;$vslB{?~8h&5wa%rluUHET&ShKZH?kgi~>_LO1Xp zm_UteunIWjaLt0&v=M(a!eK&4xEU2ugcGA6*Q8%igyYENGqRDudkLEcv-VL`bF3iV zq-W@Ogz%ccbpojr|62tdt1#IdseDb_#)9w^yCx*CDkSc_Lxga`X#&%@d?xU*+GNAD zknQEoBUBSgV_{B!5LAjuyQU(98@_z9c?6>(LN!MTLJs{y{1TIOt{`BTo$N5{5KT7W z1Q91KL_d;rO*vp~V2n9VVVXIYV6$mOh~r|eX$Ikx1Eb7)go)-TS-FfSF&WqN0x0G7 zD&r|k#-UFn<4_8+cu0-yRmLIQB;(KuCgZlSj6*GYlX1v4lX3JV8Mo_JVM1?04y7O= zPiI1&rA>B@y*C-h43IRT*C&iSFaliO@rj^UZ=eV*F|QSb!LWf%8JBf={{YB9%3H{Y z0!AxwDx-soeH;lpbs5z| z%xDkmd@G@s%OovFK0}#&7)DJAtPp*UYdiWH>w&76@rkDV9|1Qg4cd|x%k9WcfPDmm zVAx0pc+XF$=g#I@F{4#810Mptd@gtB{|PMx#2u8TkuLCV8grU=MDd2OgF27^qCdkt zmNADaphufWFgi8v5MQI%1BVBE1OTuHivnj4tQM&T>!z~@m`1S&SjB=n=zRvsB+eV8 z?9dR7DQ69FHOv{p2bx7v3C(J!td+5bQd!Ux-jlP2F*U*)<`*&91cXnBmz+B=W~4H_ zr_P<)DDD6$C=CfIl(ZGOG%h%>X{0)gMqO}rL~(|2!a@XGt@35cq%+=73OcuG2Z7qx= zREXnr#UcZpAvce&F-e*u4U}MQZ{i)USYvb-kF7D*upgC03d1`@Ev>Zdh5b8PW3Y;8 zYfKI)3Zo#hu<~^ennl_S&0=dzT6m3tZfzRExy6rO+HkP?n7Y(+ccQ9jiQ(%l*K4!{!?z)e~N>wb7aEQ za$F$WEo`-bKgURgg?6bUB0FN=M;3Hx*t_UWc2_?AMh zAfre|k&GhzjWDd%Of047)(z#p0l`S<2Sn?Y` z!wCB=x9koYEcp%Z;)Av)Q24baf7j=zXh20RRqRE@NfdsG$_vpw4x{2M3cp3=x#%9d zQSluLJO86GjJ=IP6+MnY6+MnY6+P0?>liV;jX@PXjzJYYjzJYY@~YP{OwnWTS?2RW z74K@ZjXBnNOT~M`Q;!Lcv_2e`gEQgQ0-AGKC>1Q70VW!j>Qgw%WYVMw(pm`HnkiOG z7UVFCimFiTP;86h!vWrhxmtx+E6hC|zo*&g_w7t4c9JGwPVx=!xxGOru^~vg4=L41 zznV)eYh&$5T|&iLkKIa1Fl{Y7DoQrDn?P@{DF)m+_I2KS#Kb!M>THthO*!^b%d+En z^jfa*99pkxiOu*ZuL;tB%(x@i&=>7a*5>V#zcyj5M*YcSu!%d&D8@*+#!DGH3EZK) z7ULJeJ=A)|_B=vu)ukk;>ZkHyye|=l{L1~q@^&Bs-gufQ-j#7OZwHkg7;0<|?&^zV z`?0)wc`t&{lc@Z341S;dIPVK;Jv~6XfXf;0QQ7glFN{sWM$C9w+t+zt(}=tAtMicj z5#Hi}X<7C~UURU{Y&?b5tB%BG?8^g#PPXB5HBF3~ro6-QP7@Yxg4V_;NB^}ccH?&$ zAO1hwy$g6$*L5$hK>}n09#NA7YHW{)oQMRsn#4)v*r{hQ6OUpI$Z?2q9pW(x1UGE~cBgrX3_Oq{Q6 zy;G#%=p%bAg*)7bd9~#ZB?JuSth+1JfuYal^*$L)H%5%s4~8j)fx?Tp6FukF)%cy& zeHYy#%61M$5ABB}U>#Roa-ZYiFQN6i_wou4K_bp*pOOGn)8>wbj$_Z5U!$m>W4uF20i)?N05FfOdt@}d z7&2Nv90nK!1)$$!qQF@_bP*^3bq*=EPf!3fuexSp09*iQ1c5U;q(p$x=mrGt;b{70 z{UCUee@$h`$)83O8x*eL;v7!x2T_EyhBL=qvC{%GqhL$l!B?25clT5wcU;@?)_wHr^0-!!NJ)U-3|QC09zN;46bT*42qgyJ}}iC z=K$E5V5@fmcsYazAT^n??j4-l;A^*|6}X%YV$}^7!OT9HnC^?1!VcPu4lwBw3$v;* z)CEp)?VzK_eTdB5%2^8$?E>FmrUi@_0a)Di0hgjP z8qDT{nadO09ic8V14Yr~xermsVCJObFc_XnX0}~4giQI0U_tpTgj*oGU!{ejgo87B zk)ow&T9w_8?NwOr1}tV6;w3k_V?f5Sd1{eJ8q5+kS0=bGhW3*g=!quF9W^X_w}4kr zv-ctx3>^obf?_dFAl(OMU4=MPcwN;T+5s#$qgO@5qAsuoZM9>fLO{JD>mr&e#cS2R z5M+)P&{u(&B(UgQ`{4wdB=XdH2S!m`xLquDq!)~b4go1p14Pt*5sH8@5_Hd_Spw&w zeHZ}!j=O`?58Mnv>?MUbQ$St?*#jf6R3dwF`LGM~4s33R&jFi*qJ?{CgVeyP;CiG5 zH0k2lu0sdTwO1$5%8<kwFYD6a|FD;Z|>_hTv-i_V?54a2Oq!o%ASf z*c5@imOHzM21WsV)eeLk7r|wtC`I&(`3NTW!Kn>Qd9VdjCZjALvCiG}X`$m1Af{6hgCwX-;)0SD+Qq&ul|KRE?n%Q3uT#WnZv;;0;(x@t>Z|rm+?f_gKAnc$mjE7t{!uGpO+dq$9AYt-!i2d(^E=rXB zZ!+!wQPch#u#4?h_Wv-(bC1pbZ!_&bJS>JN+#5#DZ~&Of)Q9B&4vQM@Pd5G7o}89Q zNjIh}zRblEa4bU3OEyAaC7*^}L@6d+$WKkSh3*mVwq*NmAj}d=dROltvD)PFA@=~$B!WX?CiL?q2rIbQk z07CeF!_7JRMLFJF>;hDcuka#8$*sWVusCH&p*k;g$;-{+_j^MXQ{9KWs45i3&i?Gu zM<1~uV2U`Ya}jJ@rZ+CmxFq93jEnEaB^MW3TwZZWjYUWl5amRfQBaT@1Vr(8oyGsg zToHetf7RzK{@UyKSokJBzV!}1zO%Ee?#t!1qpQMf2jAX92I{zysB?Nl8O)i zoA{`B2OlFPsekj?5tCG{aU&+3=G|EJM1$7&dsPm8lojyv5f?unFVRkJ%-POKr=5Hz zXP6{Mj=!VP1-s^64zR^jRkLEdg z3is=+$T8t(!16W>ak7zn%+MMiiFO;q+lWYtSqC_7M=IvfWo-Mv@%5>CtC@GI@tGVy z66t2buMoQ;pJOye!f~RdSdn z<7Lran>Oc>M4uWhGt0ONwNsBfhw@c236}S%!GY!DdDNcX7#*Sp!7?OhsqP-F(aU6# zsuOfbG6|Ls-5J*+SpI0L-WW6TNHsu{WpAXPs^kDomc7vdn>Oz!3FMFjD-|h&tModz z=j#I$ACRh2N1P&55S$jq_EUkFCD8_Jh+SZ-Q%WSq`8yhp-!HO?u2iaG*KA+IbvsU1c)M; z;aD8!^j-v7@P9Mu{|GQf2*e(z&ohyoz|?FyKQ&w27pV=$93D{yi~we;NTz^^jN(>5i@6GJi|HfDEmIi9BaBX@1w789gA^W- zwHQ2BKJ9GG*H4%UVrai$`I3*htE@9OSfG{ak zjOs^_3Nj~TNFjPhCTPkLwhi1(Wn`i7X$nuPeB8M$p9TsnA{kT?#JMDb;9;*RNth}~ zQgT2_l6J~~ge6nG6$v01oymYh^p5<`6eElkxSLImm|7UfME*crKH}8!X>Guyq<|D1 z&aX13029qhq{{A?c|{Q|j)4Z+5;7XPsPAIJ2LS*FgKjY#U>ivv9*&?mMUgViFc6!N z@R3y}6b57^<CKdP4z!+Ge>ENhB+x14~ zdXSGw{b(m3d*pj~7unHM#jt} z@@z(iNrh62P7{-;8)yVso-#3N08oj6a8nbK;VJPaO5SF0j7*OMfC1V~6@a&$N)2Lg ztmJzJcr(lm-LcY&n43h^Kq1KO#Ml@EfJO}Dn<|jJPRTt{USSDqqX_<^qESf&(anwII?uuQ|uG;%o*+7mY=${m>o1)z{z zF42~N7s=)f;2Jg6C>F_nG6!?9B=GASb?;U!QZ z`G;X(4A%#aC80BrYuILREGeCEY>5mUBdL=hR+(f#EEb8oHxiDC>nB67>+u^}8{-2y&;zbL4kT93?7|0PmE{a7@te>K{qH7>=$FOlZy|H$O- zSnRac_$5i`mPW!_5=F{ATrYTiU7BNZZie(LB99dKTSn(;62? zyU|_yox))log)8gk6kc3T^#8)J6#+-%jV}a?_#6VdVKFfJGC4+6*@hZr#DCY(5a?1 z2BJOaw1Ye%D{78?Xm%Hf^qAcRqP=X`r+EWLcMa0rQsg`6?s%TAM~BcI!gF7=AKe{d zcgR@u*hgk}zDU2>oi94ThJ%{dXLJ`vcja|&71iKxWQH}#Z3o(^=X#D!&`wtL4Hh=L zuScA=dpy)CeavUBN3lWM`Wo%zhQ0xuG&(M7mCyBrZ{y?LNSilB8ww9EaJ=s(mq=x< zBdYM`E`C`%>F*nIG_mpf(s=s>`p8WY{G7l^H#T$*ysDjC*>_#@Zi?-3^s?PaY1cQQ zut~JWFD5N;oNy0%bCOvGh z?YerWj20&c3ESHehm9E(Z864-s-P&WpeCj-^I%Q1=sEf+S+D1tHyXc{BVPpMy1wNvY6Odw25{JJl4e8;uQ z<;>(@lK^5@-BdRY&#;||U$-(;)ayA6vIrwU3U>@CTixti+0aC=TM*m`YZXCXtBdRA z&E;(q!eYSq%PD8vmoTt-!hQ|dugjasb|!q?g4}kD$5VIDZ}5&eJ>4=hcWRYOnfSr% zL30Z*DjbS}<0BJWD8s{`{NNY~Upq29438bghbE&!>qs|-R-QBJ2J;D|FSpBh{!12O?ALF2HX8S2wtO zY5bANUFEoG^*J09sqTXqfMNUrS1dEn^=a;dT=ygSOeUoP|5xYG(2~kVv%m zrxHOSN59v77ztZfk_=?{h4d(4)FO7cqp8MTIB53-OHaF-=mtz#(Ef8g@rjA?7;XSg zrjSmi+uh6Ii}4?(d$IrK$j?I@3_DyL4@59*^ya{G+|477H*ciz+I>PGAK5<~f;oCR z0gfj=Z809h7Xaghbg5I_O&q>>fMIwLCt!};1?6)*9*)OAK!Wnkffp&2ryXzcNaM9T zhQ;&Thv^keZPOiaJaK!4@fcnKMoX0MQOXxzFbo0W4$P4+fbuz>Ajgw-HbCWmrSf6g zHpg4;KA38(GNps5P%O6UyQ%Q&J`Vh@9LBe4kWBkFOi>Jh8o_E!DkjBkyquQBSJSfi zT3QzC)3W$RTHfAF%iCLNd22|^o0gWhooRX7o0hk5THa2l<*hp{Z|5!EfXYDK-!u9y ztNS_sn0Z!ifqMD65-$;PxJ2G7hFb787H<~M82!DPKKg^*8FMHPpYle^Al8gu-yD%=6{si2=nQ%2I>sEDWA5!t8I;0E zNIaT4@HTl?F?VvfZAPGDjtYYZo@Y&>fOi?pr%vd?mE1Bl4 zDDC`Aj)~)u5Fv8$OmtsY~Y1vE;cWsewS~HR^z?C8ia$oG1F99xj zNebI-ajj)nI9s=4;ho8Bav*DqVbjVqP3Q`rm{(*JY>>?w@hkZno@mskHG#*(m=sK*LTl8HP%Of9Lo7OC6k-IPso-ITnhf z(Pb(aNi>a^a{NL`RdB-$MHp#@kWhO(dNd;^BW6s6EQyg3DUPU`%mPFy2x3woIAmZb zrNN|$!K|E>LP4FB3*)gNLPo3)iDw7#8Y1QtR_GyXw`z$pV6(c0f+94Cs8Py_rW#pY zDfLSut7ksXGA1Mx= z96Sw3f$>4Q>LHHCdi4o#(yYE(0r`?H=3AxNBx zYH80f8;Q|j9SREoj9B9ZSB%R{70huV?>9i9s>GU zJH@&!2Amw}N-5WHS*!`LqKk1$*o%5?|1jf<0b!L2O9Bjl<0W4V$aD_ofKU(+Aef3m z4Ok?B3N$LgN%O*9Cy)V!Wk7-dVj;6xvG$HJO8$e-p8e<}zQW1kx;)dK-{@a%VKdTy zZhtY-e}1ifr2qWh>q!4|CpdB@PnwuF<>s66owrPzntaY{yvH`Y_o(0Nb}d^~Rr!6_ zvumGPvu;Jz+SM+6xHgo2`N=QeGtc$lHy*F}=AwtZfk$1-HoESAs=9h@m8YtD`I>d> zR{ciR+VB0gwe^&U>SKQ2_xZQw$9$bHE=9E}{u{qfV((b|#;^0Gui>)4*5ko%{PyFw zevRMxU5PKVR;T-&-!}>BKuCV>_v|D*pP;gj;pZy`;TO3tDSmAD?HvXqzr?w}uKJy_ zx_4Nh`guOi`QyN6u?wo5!bts>VRNiN?c=4s+FKXa&G;mL*Z65;%)Z)3^Nefj7UNpC zkdtp9niQuR6vrrv@&3udfJ``WGeDKBFb9}W^C^%p36Zzh& z+|3nxrk%h~Gk9M(rS?o4QhTNaev8*mpn(V5sX>1QzMFPqM>QN_&$NH$T3Bqk2DLh0 zSvE5#$J{W@`&e1%l)v$09=1&j`s-%=H@r5*4tu|k4f?Pl1U57OW>E!y`guw1hjm!{k`cqIc{vm{uy6L_lCB6oqN5F z&A0eM`+aWwPSn1eeC|W?Gg|KLzQP^2HPPodifgzv1ucAzYu?a~1-Z*}yzcE@cNZE= z@?vL`!jI5kg3oc@>mEX4;B%bv*R9U;IW8@zU6JPvwfpcjR7Gh)XonZ>1(X(m4gB0% zp3i-}5dD)<8?KQOTR5&Q2z8MX?z_ne2sL>vLO%B(LL{H#q$1P@La1jn`$8QCA#doA z*Nva5uAG8H6mR`Bw9iPA1^mgS`gYDACY?y z8iJlUpal-fZiX*(%xlRmw8Li%sEY%d;dOT`P$R2|8KnvUh z&=0hv$WU%GeW7-*B{yHF%crp5RVte4b?@^jFnAqDaZyof7ubpH(7>x?7dmJg&k(c& z9VtQt-E3c|*=qycA)ms+0=JB4w%2`pfx-edUBg91sF_0&(BZz4TWF_!K>bh;ltc|J z5DmFTnnvF(a$%ZeYaSJiJdcX9Hjj!&o=3%5oJaFUnn&}pHjhe1o<}9wn@9JIG>`7d z+B_;9c^;K!Z64h}@;tgf^LZ4nSMUce@hh^wUxd+}hs~OTDdr2syp8)O_}pi_jpuW5 zak9^S)!TUSW?Y@_bDziAg52+7+n3y;B1}aw6x-2koIDy?%m;@Mi*N`J=MBXY8C;+k zRQ%zD{1x+qjt~Zhz7PzKiz6g|hy(72EDZkoMk&F0ZB3mjm@`=gX1N4h@h~8hsEA#L3j@t6qijA3JS-`WrN3=U=iEy81tlW zR1z#DgW~BK#)*!{!_$Mi*_2>`#a{0yL3lqIWQ-v5SX4YdF#=e0fkVi`5a4L0F|EvZ z@q5&WEGR!?7LP+@0q*dFnfMiBi@ni8FpnHECP`}uvlWwYo)m*eh{Kr0qY)uY3^`;d zGlC_|Mkqu6=23`{hQZ)yO(A}m6c(F7PU2w*S6oiz-5sLr>;~7UhR(|4_r*f7AK)+2r#ln!a^!@ATfs-+1wXKWYEY?4Kr|zy1%C4?CWC>DS(U#a*;* z)6~Vu=g%&EcWvxnj@SI%q@#cNZ0}z-CZ9Jx{gn0J0to0m7D+fXG;rj`;BX>=LK$^R{Ci2`8U_yy!=0I{@ow^#;&FpUYWP{Pm<4n z(*2+R^Whc0{$_RU!%ctv$f_O5=d-&1q_t?$Uv#|krCTmn*Z*!o^7$tl-bLGF z|Dpf0Z~tQJJ;~?)YwGNKzy1%07cScU<0mdv{l?1V^NTP3=-H~uzu7Qj!_JrUC+v7F z`F!xBceg}VRlITauLs`k+wjcx+?@_Z!1Dfb;a@A^r zCu8L1dfpb?>_Y1^X6rC6YIzu;2s)A6sg6XSlJFL+c_ux==b3cxleRsE_})eAw@V*3`W z33d$S$!;`@9pJ|<=PRF4J4YTM^aspIuo`gvit|wZCFf?$l+BNEBgr?hkt8NmF(*_p zCsZ*eRQlZ{6X$BGv()o<_#1{7&Qq-;y<~9CeYPm*ocsGl)tKfl7uBFS4%ClFj`RW| zalZ{n^{d_Z1u0DGN%+5z^ZZ+w2&FkYaP*xLyq(z9&uunKbM~X{av-w`F930h{Y+zF zoUQlptP4k*g1B@R|NHPC6B1wL!rKh|MQs85lR3HF2e!R(;(J_(y>!`+(*M$h8deSP z_=yD}gtB{aG=$18-Vo?McN^|aM7@@p3Fr9=HC*NKAd;%t=p8k2G}$)=58*XO7b@sD zx{QY=p%9HNmfCVz>~%!2DVQ_H%JqZ=j`wiAW3tyVgoFqBA41(-(negqf)dpwUkK(Z z`aXHUI}e|GFL~fIsIPO|r!(F{)b;V`+AC8Q;QOQ4X&Svp-HCO|b%dxvpcn&oL;84L1=(WsP+*1k4=QO}sw=uS|Sy^2D1HrP2#2 zRew~28w>E&MpQ+hjCEc4XoZKsCIoSULg1hw2t49*Krz+*6{@TbDPSkFs;ged01_6A zgse$wuNcDb#843=NFf~aDn+37s~9T8dw^pL@Ga1(Y=l=R(tu;H{s_M@aR?Q8biY1_ zJYe{E=p!(<&*$jIYpb{>8hnm^ob|90>>yC?DdO<)=t*A)SC8TdzxYEIbg$9_s>0O& zi9BzihO0at%7YRLe0+xmRVggs1q)uK;PC`3;Nb<1b9kQxqI@qi!Rt6k#ZGn%qC`yj z40;_>f}wIz4TKsjEb!%u`zSTQNANm~>N?{q#G5!u@X8cuVg?lf=&+qa0^Y&kWeZyx zvXJK>?*)#tc-;j?$TJv$@c|STI0jfnc0kSw3JXF=PS~4*0$qRW%y%>HeG42BJTXuqFTp_g2&8n?F@&@Mqd0W4*PIOGhLZvP zD;(f$jZX;x1!lp4uW&Ce0tU0$hA)ncaRUWZfPlbd3|v6K(zK%+Z^hyoz&HO00t^$s z&_fVBi+Y_x!70lk3{V2YEW$~fMd*h`z#cX?XcG7ib+}0w$kZfY$MYLD37qd>B|9bo z)q(UT;gH=V3})LT%p(@kngov>4R(`YXu>cFn0SUsfX^_{5VmZ>Aki?)CY-X_gaO(F zIGG!>34G%?%q9$GXcO)kgH7Nx%9c$i9myti*=@p5R&B!lBiMwX9R+rqU}(Uw39vqv zO(?1P0P&fZflapUAA)9hNt$4lUA(S z9JDv?o8yyExnzr1!x1Z9Ipfr9Q@qmes$OkAS9#k+KdXE!I~7(9*UC=eR>h+l&Q$qP z_8Iq~aD&QqDz9mHOyw;NKKWu+oTTb_4VF5nA z<-*5zWQWWh$fq}AH8OWF+Ry!k4(S82<@nmwQ#oCFZ)~+oKO0-`(NDxS1!XHEhHJ!@Xl;|(fVniR4~Qaj)(t0#?a114 zkx26aqzqly#O?AeNTvAzZM)vcltwvCeSirw8XB$>JtG(583PIt?j$e`H}j=WiGD$D7C@#1ZIUUY>udV5Xpi!t?ADD%cArU+juiRKfNgcHjh z3t?o~WCCflkhUB%Z}J&1!4#T=d)X3P&_|OnZ-a?_aMUtR2 z*SrUkafb~k+*8DzM^7m2s{mO$wGlZn8yhilT>G-7N(0bfcev$T0U~74K2m3)40|cs z=Xz0+H?(gh&J>kWzxa63K37*6qNfIxw-@rFedY7nn`qy1{32z``&+tKAwYui@d#Mn ztAYV`EXqg9tRezK1N%sVae?R{bW}J%Fd)i@nH3HYBA_c^#+ zv~xh|U**Pe{TuWCM2w4-jm-E)=lx)o=e>%kEaj(}_a|aUvo-He#4z)W^q>^VANrNd zds4N{`xCMCK{fAHs3wZPk$E4_gB_^LvunfYvnRvd8wBa;<6hq8;BCI$^y_@unA^5# zZS&+dCvG`#oA2iH%5Rgn;j(S>)^gQ0FKzSCHs>6lp{#4G8y^}qZRy+c#7K+{w)a>L zm@N$F%X^03@TVRrGB0gEkjv^L`Mu za(r>8XZky%V-|>wj+rwX9n-~))w>xT)1w(3>k7JN@M?2mF>R#L(zPwb z%nGK*;!8x@%72KomFM79%$GQ(OH?VISbQxc&^WWQn@70w%7o1M<-8y|!)x`UcBKO`@HSL@D8=0_Wi+;W8tNFY(SoJmT zjI)qC<9v%d<9tVU#>p#^%}V(T2HdT5hlc%eup6{&SGu3umEyO<97x)=BTU*?BVWHR z`TBC?>sOesUtqp|hWYw+yzln8Kg3@wWaf&T1|;p*k)a`{x{jP3i(dEgb$4WnO|sHX zHZ{fjs~;EDpu!EWtv!fsG-vS}@q>9h?w>NhE)TzUKl{_z#jb6#Hovs*q|beww|XXl zqaD2Eb7OO$9oR0eEmyu0|4Cf@Jk$Ahr1QMeGmW3!6Xw^=_;q~m{CzPx@1wzW=Jf81 zzPj1>;pI0-bl}DIpB23fW>ER&L+576c7~^(>lvJaZol|Y-HbWh32=%we`VhZFIYjN zzDa2GK5u~))F9E(p_|F$DX=o*bM76|2hJ}|<-Qa?}`hU@Qn(E~5EY z5FK!PzXiFk6}>8q>?Mt}v-p5)z&HR-W_;nHx~YY-4dDFhzA$BiM!l1?ra(>)Z-Em; z5$JY1NuC5FQ|H3&V#xg!ywWGEoC7PfrwG4FCro^iV*>!2L%Hf8YtmQ68uiQ5#qC2}`9 zo3aU&gyA-2HOdKu+sHQMOsp$on}XWHe+8RzCWgg4S+^-?V%Quw(WVUj->@kLAC^ry zgHpr|*pz>)fl*Uy{~y8|cvcZT@lXX&iyM^0_#|#eNG)uJB|Nc5BxW=cHySK2EU*F) z?r|0mJ`&@Oc+5e}o8bnJ?V*MhWyGxkm(Tf8aUe5iXYn&0RcHwjMLd{DnDjic#}HQd zAj6Qzf$QYTQSE2%5x8o5w4fzK3h^L;-CC2GCm%D9A*mn=5F~+U0H5(Wt0ja0@u|vQ zEzi#ryVEy^LEoZ$Jp}b#%f~1BcP+uSTW+0fSRS1xc5iORH+T(YPB;K+B?@$8<=iZO z#vON}(~kRV_GA0VqaL$~i+1t5BF=*UFQ$m+#ZY ze@bAPlM$1T+my)v6-3&wlOEuJynGcGW5+$WrG_IS^? z#U}{(H|jU;2PGH~YkUBi+RF*ZmvAI(}0V1vcB4 zHCbXy|Aoyz_?z>r>dhZ2014w(5~LwqKg_#lHgg!}m;czVr&NW52daEXCoz zYE%7pNg;BgszGkY9&$_kbsl`Fbof4U<+U4H%0jPm7wodooAvk;2-P2!KlZ)k0-<+$ za1lh7sZHY6&cGt7pt(Jpxgp$m@3Z##s`UG;q0TsxJi&UGv7g-U z=h)xwO>;OmW2myf-8|g5kqz6D+NNH=h5g%Jx+iJ>wx%425c{`%YWV(b)4uX?`?n<) zq`76A^@XYqwQJiiifS+l5V%4;8T zmDesRF0Xy8q`daY()j*3e%Zk7Z?S=!-@U)Q_A`NyUKZM3=G*!-zLXn(-1mo@I2 z7;qmd4;2-axwi)jci>iDz;P7UaBC7;1RU4OLOaT_uNoSZxx3KdmaOHz<{dc9gl>NvRxcV0*Cqfcv<=5Cll74Hrp@ zO&r(CLtP}r25#~KQcYzRsepU1+;Jix`;g5HIQl@Upe)oJ2z3~w%0h?A+|48vaPJ_g zf`GfDtPli9YA-G-Qq34uAaqEP>IkS&1wu#cqZ%l8oC?TZWEfR1NWlsn3xxI=r2L`% zW$t4n<){3x4N1Vg&tFLSfRu)diqtU~)qX{4UpX%~-x3J5*hkf0?g$5DmoSV9`$n#C zm4)Gs2cama3mcN< zmx}<41EFJOmH_>s9RYJxT^v<$nY*K0jjGJC*H1|i795pd36KqxuF6A=@lln#2cRgZ z3#4Y2ivUXkq4qLMfPqj~K*6F+>8hm6y)U3(QRX;`i;7gcAW#H|24zZs{?I}DsD_{@ zs7sBC2rLbRn#*hmJQPr{D0j=KO3U2G%M~oj92zbvQq3|dK_D7n(olf@&`$fP`k^SO zOO1-U@{BaCzFXwU;=J;YJg@v&oL3bi&#Q_o&Z{LO&#NU_oL9k-=T$I^^J?YD^J--l z=T-H{^QtG$^J+s@=9T&V{&MVwg6%f2UONyvkEuAh+|d&V#mXA@e=guYQ`UHX za#?G0z@!}+0yfxrHkF#=YG~zGE_HLM$Vmh|t(Q$HjEEMx6 za9FN5#6@z5GjdqL5Bf=%9J)%dI8J_&JR(TAAM!9*>>HgBmykvAuVk@tt4ouE#5e0FNHx5fU*B�z# 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 z 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 z zg91Xd0rp|Wow85G2)Y*XY#k>?&Fg@Qah5svTv-fJ*rfYXUT9s=hz7=QFBW`Z0@AkN zk)^B0{mrFQ&EsWPL!v^(0#zkZa>h$HAa}4@4ff3!nyVp#iN56WHD9F#jo{rgfw1GJcgAMwNuwl$nRAo!4YEfM3_eeTmF zcLY}6vFR42KiCJ4{8$Vx;ip90BqFm;!%Lw+!7(G^MXCvS4k~qKW>1+CY=eKTNbb@- zZlO#Flgz1PU}VT_#J<&UUhm1dqao>+Q!aU0d0rskdAf|h@mhIPJm@%Ly)vQGwx&ZG zMl6)dCy-d!^q-&?SvZ(74I*|JR-V7{>G0(En9pLfCFHf=qtK`~d9vZaNI@wGhBf;n z0V`CtWr>p2mTCF5nS0lK)*$+%G+-WlMQB^8JCFDok*8%s%AZw#$?N*hI{#w?ofDr!|{38&(Tx4(#cQ~)5yTn>F7<^r zNhAbkm24<;E{&$nvT=1(`sCaKJ6CI{WEzwJ~np=BYxf1ur6lzP+5md@czmj!ir5$8)C+*2<|V*xpm zvpMf-&V8AjKxfW2&1tqdsmWr^n_!nXNEQbufffWr> zU9+F#i9?Qb?lM23ERvgE!k=4ksC+;bxn%+sUMBFqRZ*0&#Rt1U3Xu^tcWjdt^hL~X zzS0$hrwH*(f1(`$Huf#twcO_{fw?jWKa+Fd^gRDc3D6-_r#^*pyZQ1q#oT6b$ebvc zgG&}c&>i_11g!-B48OQOjob=zblb*SJY&?E`Bl=jD4L7`5!c!BAmYpL_hOnoTid14 zYlo;8g}Ci!?wrjvN*L7@LX9t+{>UBbJnK0j>!`&=B70um-fZP-_673a1h?T zl(}GLlW za58q3_v945-WKMb*hh7|qUId0R7WaF%FBoP5UtkOl+Kyxp|kN-i#p;yV*~XEY^GU& zJfQhHdEc~8Zs)XZ_5eg48RyMycD&hC3g~N#`~Gv2D?ioK#G&D=n}*w^GFxfn+Yxo6 zGD9uSlm+@HSy)F;Cxv?xgeu&CyOBTXrVwvvH;Y2Y;xo|NS$}~iAOeGfk9T_eNzjko?Km#qBhRkKC6gE#4*5zK%Rv7cr z$#$j}Vjw3BAxeS+pq3f$5V_P9exigqnuRx7_>Jt48xqv$BG3fV9jw~yZ<-4Hflh^Z z11~kbY^%aTic4AgEQcypU<{t8IXFD_dAN&&y><0wd2hxKKwvSLl5 zypnpEXY~1<&B#N9LY{e@^>S7S6JH=ba=mfwwSXY%`N9oVPzb=OUzZv5ODIY&Sb3aC z3d8Eto0R9qYR7kjA?#po{-aF8(Vw;k?8o@$pQ-AXC({AE7){*+$otdBoRrA{Nf1mbf1*7BT`rTP?vwn+@+_C z?v@!;@UQv>f7b^sMt=+Wn!g1xV$}TffsT&$eT;H_i8gW2_h)}gy~G$hU+T*}dHtEt z>C~ogQGaqU95sWb{`FFS=eN7Rm$b|XF#f;Yk0HW%qWXMW`QoW9^(CO~;D5`Wklp+p zcCuhwS#?++1Aeg2?q(hX9Iy>cQ{7sp4R~9eis{=l%WF=CpnX%o(B*POEk< z{SJ|pP~c6MCinMT>P@w!`?pl@X6;tw6y=pah^Nwnrq}Vp>SSAK`bO(!Ph4`znae<1 zg+(xt6;}VVWm<=rSlcNX*r1Y)IT>JNERfDmKqm?(DMB&S^@q?@aKppPd#a%Be~ z-IX4e?C80)U&|<=$DU!kTSh%0%aIOh=Pl9QOl}Zy9l+4k&Rx~Md`ux{B3^p)c3O|% zgzH7VNG37O!sgyD%p$d`NFM_sUw|!`ZXOh!g@&ZX8;WHk zWDT5ukY)igQKiCcm8VWpN@#Ik3JKdSZ*j*W<#;GBKJ+1(V>KoKp9utKLZ1K07kWWn zt6y@J^H^6MY$WO|xJ4oe&D71}dwLI0{G)83TUuuBfn^_-Dx~qFwDAZ&!fuzwt4q+o zwvAH?eL~xQa#QK7#Fl2=1KpH?=uh?^;n%VVX3v8MmnpsyCSV*kOkuO>Ol8TySlEz! z@epMS1B98A=mjOt6mX>0jwk7Tt^(KR46@MzDno*3u)*Y$0Vl%Qz3tT$@d{&myDy1M7gk`))1EN^6$ ziZ)m4my|GqXNy8=J(y949n9T!sd-Bq&T_yU{7e(@iRF#=7f)L?W{E8#cFE}?v>2El zHc@XFxqx$MLv+S|rX-ayhNqgd+~P=>YLqAHuCSMyR3SbB^5ccOCJpz-C$LP#I2pu; zIqr4Aj-4xZOephsR_vF*b0LcbK%k8!EmX+2J>-j*?3y&Hh~GUV2fCQE+gY!!?N>|t z4+Y}m6-^JW{eCEs?%G%sFV-G*ZS)deBHIfa$VVR!dE-5IO{&aS&xgF9mw4hm+8dcM zC?_*p75@h#<=d#n_}^^bc9>o3_w7=Dg4DOQCQ#qD^w8JUr}4_Z@nM)O5@tyqlv%ssS- zpNfh5Wse=XQT?g>Hos|FMcmgkZTNxbZ|nDz`t27`zdL|(^ATdAJBYi1)Jy=Dk1Ocv z;lDf`xF@O};-Oezcv5m%<%9$pZ?R<&^X@6KGmv^L4)VZr(y5~9eQEncKuiGTKt zu8u5-w$C9V7Bp?CLOHZVY%(}CV>Fv!0O!$R48u|Y-<;ON*#nf**fv8DnV)v067R4X zH72Lj5G@tO?;qE|;i94Rz`wN|JAW`5O25!wy6uB#BCWESNDDr&MvvGKK(arpH-GHdK=<{po|hR@66Bj zOp&wPCucdQ>{0gGEGMh;eMYVpF`Ok=4cD_oUsy`TmtuMINfw4V9Dsd4ETsS4)fIBH z^{>1I5>k(w&z9;issfiiim(oUVNr0UPpWU7IqWon6x251P0p;CP+uRD_)ZuU$=gi; zFL!5*84{N)+(de-+TzEoSnQQY>3BcV`-IJ3#z}pA(v_wAub5fU$cUTgmI>7@12u>* zb?mjW5VpG)IP~3!3K+XQ=taf3iyJw6QGGJh#%k$4C?=Pl|*{u9afELRqgw>5_Y{$DFlO zd6E)_P_@P1BF|ZH?KPyruka8B)|@8hz{|(QM;*U{FUdW{i)P|eWyzhzf#l4}y!1r= z=BKOp>rJ2Bb8cn2lCOdEar~Wt>-d?KW$D9DJ67NyIBhK}n+U9!St$#h20oRIG}$o) z{an-bY3@kYECf0ldN*ng{Y+6#58j%HDP~$D6+WBehmRS(tXJkp9R)0wjp{kKB5Y1k zRYz|$DwZ>EjRerq*twDB>d|H!Kln1vw7n;Lq8!xPs^5^^?c}{qcPcULtH%MTGICLz zb`xbiJ!L$GMrGlX(khz*Z4#7uJhVB@TuEB;*|O&9GYMwU2U6tISVa~K{%$txmcB*X zCxS0S*t`tbMTGdI2QA%H2dX3MC38>I-1@e#DueW)EO6R60=oic7d5RXD1x#pPl=k# zwAAO5Eknb)l031KpFxzV{7juWX_9V7vWE)9Bj%M8a|W^GMwuPUVijHF2eayucFUSO ziUZ&0^D{no@cAX5*K$7hx!>hqm%J!_^toF*F~XTbqn70?i1jp|-tc*c;g-_jROh4@ zn>R@Zj;ZP_?@hgv()7qR#=a`$B2&+*`{nu`4R&|Njd8xy7TT945dG_4P563exfvC}H@TNQ!3 z_n&JlJudHroM@tTLhgwbKyCxF2K$7ox0-@jvH2Pu=#y(qobAWhbLqNIynjhm?z0jmV0i7w4XJQRB;4^TWI=P}id&Jr;--Qv zU&7eCH(jlfTR8XT`%zkV`zYF@S8V?~+st5&{kL^~;n%;fNuInf{RquZ2&QnB%-rfn z+dQ)b*$<=5GM$d3o5)jo29PTE1x*W^Bh+zC_xHWqzM+4~ll})DpnscZzQiSDm;NQ) zyzz%F{cBls?=zCvz5feXceCTFT>D#zl|J8U)WqdIVo8J*Efw_)E+g0f)8!PFS3vSt z9?q6Fzrc$nSGqYY$$1#tZlSg0vlq1KdoOR|P_qVVaYC1IUzzD89-$fasNizY$`RvF zah*9yifqSYGeoaK0=pkENd0+LQVdfR*Zw@$9);Jh9P66c@|Gn{bsnKW#N5w!F=l}R|5&~v4Ks~5QE7JhxVq+Ryi?8htw|eR^@qy? zIi$Cvy;x3-8)TKXXux1Z#C!)edCo60x61Y6*>e^uBlochuZ`_6Pua&nG7hd!(^2AC&{t5*Y z74b^@#P6-hUZuLOE;BI#%ug}E0!Ku&TfoW!mRJ?O>RsQok}UdiG&(%BbJ#WB34$1@ zdR~y!S{Qrs3h690)hou$fv0qhrPeFdavqam&CFBS)taGAKpU1yqSb#FZ4?b%lyz!! zs>iI*GbgAap5xPq=P7FnI)R;|R7e*xpV;Aw#%_O>h8$NUjIHMXN|ypbwMtD-c0@5Q zeX=80XuEui92c_348@#2owCpH(DU6t7?{!BL4`!QqAk)NhjW-}6Nt89uJi}(d zBlOYQlWHGfH*D&~nLd`=dk?G(W8GkXhCL2qv))!D8Y=Wl0c`W^~xDIUkR2r0&py` zE{+{znug?1n6|tT)W~nHvUDYjY|NwmZSLtg^Eohl3V-dcVJCcJf(q{!#bdv6oAj@hXFR4GLV>>1r(l2UflqK#oKL2(=tSal{D)Et zlDF)dmf#@h2bCbo<|xvEaG7ESJ`kk~$kt5lM3lW}ruu_=hacji-m>v7UH`uer9oC0 z5fCPeF(bd>{8;Mb||BYA=gH>svhSAM|e znaelp!e(1=B;8a$A*oq?6D@1{KBh; zy<2+^0c=wk>pb6^%9VsSmCLx&~)xi1Hja~1Q6zhR|D`hzg6Q#NxMsBdtqeV+y{MP*a zJ$Ll}wM!|;dxRhnub8isp%0@HXTZkrz}pPS*z}S#$UUh4X*}XYILYdGDlOy(L>K#k z4n*f4$FH+pxOp_s<4go^EY7=%tQ8m#oUa2Y!GPdK^5hXw{ITH7$9d!d zd0hMzbF$)$uJd_7?Pp6Z17YW+HHb$nHPlu_YkbdfA#e>f4j2`aK;WGDS{wTqsjaMi z*V-pbZN&emy7#GbHoPbH0JJON$r&6sc5VaBP7SqFIVJ+!LXGazkM;CZRcoGQbUTTY&Jf}p66KDs(l6V>B~z;&d^TB6TvQ!KfVE;9r}cu;)k#s}c4)O>n{ zViNcLqSn3)0gr;9a@;T4@vmj_7Jtb5UsX+DSyAf=S|&BCB(<t-^7k2 z&qKuN+~g&dIGyM;ukJf`K;lI#REfP;n>RL+m)JsY~Zks1v@2%X`jYr9U3#$4k3cS)&FQvN}q6_^OEnL(8+(Q zJb*aEa!Gt+^RPFnUQU>>6ker)Lxh*y-jc|hT;ExL z-tO&l2NCP?-4n8Wx6Gec!G_djfZ#M4GLdFF-c)qLObUQEF3vk4vAA(@{t1bzBP|OG zBut0Rhqe;?!u{SC^{jB-E!q2cI)B(EhR}2Fyw;Ox<@~nBr5+-0rg{O^BWju0riO63 zXiPyONSva&zCqAx79_s!7julb`PAaM!dLOuP(qT_RM_wDIVAh z#RK~tTJtuVPCi?azAU+~EHMj(cUONHAKFsb^?xn?*71L>WySw>a$ixR$O+&nJzbpK z=V!Z#)6}RbwBx{aYGBDz>4EA9J8CMamo5skKkw5M#8qT{E5fYMuteei>FqL#5}^>g zc+Shb)@NUzt-LDbo1P>Xat+>c&wB*d=F{+2d7amsh@_f(&lz3`=S*VzBP0lb&Jb@r zpIJF}8?OKBQ)i=x_kCW+phk1rT1Ns%iJ?$QV@L3*=hNT)cOw60)>{6}-iHIJLTmrH z0r-Ve&l`CkM0n&p&hJ`&zpw4XVs*J#TKyJo9>NcD!Pxeu%vexmk^28ho#jDwZWF28 z$_Ie8@6;+S-fFGgX|%;w0j-+%`&;{*NrJZT^Vd&E&N=(C_S$Q&z4p58zVZ5$m6{>o zk&*T7pzkO0eS{_oJ%fz`M}e*Ta|I_L&2_iGXy_3^oX3`dmRQ{86q_>pW2zrR|NVE4 zOx?~;3>a<*e?QG{A1`*xDSmxcBZqU}*yHHBx3-%5;?<++dZ{i3(y4pZdo05it`w?4 zZB-MaZ3@-8h6uyS71b!}F?3Cp38{|4W$vUg8jaG+aVZ;H`JKFl#(zb_=&Nd(1}Tx) zXU3|-%5pLFc;=LbCG}eepSw=0#v6S6!>OmK15$U?5KR zK*;CU10ezl=f0J>zxghkdv_aN(tQ(|>Q;9E<^Y0x8e{n3<-KWu%+xXTE4c0m!?3op9g5BKn;P8c z5az9yz6foG;>?}D8kxFWeOi9#H_fM_9;Xm}RZ|c9{Gy3=6+>~wm*Lznvw0|q> zp8x4*^k3qi=}0{@rAlhV^z~5urA)*K<_E&q4%NtWZ-3n1H!7&L0{{G;s3UHB2J!tF z&W%d%(Hz9>^9y{|p#fWp`$TLf|9e26b>FhKQOyov z)gE7|IBWd$69?-j61*yQ)}{G{oWkbwfs_+41j+hk_gxA=#m6FhK-?b0da`G-dwlaQbk_44ckf3sY z`JoHL1eHC*xKw3Gg33ch*}6iws_no1h%~~!Z{qYp{J*ABKskk^v;FY@*j;kPa$1_!KjVn}9_}Y(4v@2UzN+m!KfYPLyV9;^2-aDq0q!fQv@I5# z0Ir*K=b0Ul-q6=$;++2D869>Vu9i_w6)|bo~3cG!O*mI9Y3bL zDdTQg>TL%)l*}kr6)uibTAoGo;}!8HPIKRAm9|#mbvc3ruZyXcb+IvJ?)o#O*H86+ z2%s%)6;H)Ve>76_ZL@l2GM{u_70#HysmTo|==L+`Ez*~~010(GdQk5nf*ga$@E|i} zY-opG8;vdZE1I*tYVP05oVTpdR&@OYU& z1TT+k42Bok_)7PI7pv?>@OW_y;hH|}rcM8xR5`NdkJ|=-__E?xbOaL#G;O)eG^R96O1P+@>Z1e2!_%O3x1 z)S8cX57+z?h+qGacD`*9-Ba=BNTE0Q7SdaBY?Es;%Wim4ZSUoJd$sXIk_3iVTrN4j z#DR>NYX7MQ1~--uOnsg7qSJ6AC2v1Jc3FmmBv*-QmINrcH|u?!yM+if&oNd>Y9ZeJ zX2q;+fKU0?ofDvmmGR3yn3+pj{C(&4yx=jP2lZ2DW*T(|L798-BpOB@vk*2J+(_T+ z=3DFNC9vhA3T+}W_gvqhBta1_s{MZ=!I&OzE=s&70bVzozpCcsp-qDX`X3^~1pe^8 z;;6Q}*Q6iGJ6TJIQ0sp8q>;DMA>hnnWrZVe&Q$^&> z?29NArf>RxoW9>%6m?CnVqt=JOEv9LYm~;<5%~EZ+qll!nA&$j)~zHptpg6b0R7Er#k+lbQ-Or#DbazY?$d_>M+*T-1Qsolb3+rIn!#~P?q z*OCLqWZW4kn~l$NlS!G7EEKiuKYYHoLu|g6&H=KJCpDoz>dy*~jA5tYtyMiCmtMH@P;` z%*PJ@tB7J$$1?t%Njj{)3B|d}Z!^lTEa7ACqMb9I=m{5hZZa1M-2ZsEGA_NASxi7M zWuz6yj&b??N!myBk`+US%Kt%tVZfHsqS^hE6~$a~hGaUIR~K9Oz}z*tKiE=>_srFC z&MrtfWsp9>$Gcs*a2U7Dd1dug@XTrNw54G_)o!=b;N%Q1QU88EPCmy|__MpYYhJwL z$^Jq$6P#`_Q$e7lRRk)W6)P-G6c!WbeBn%YDu8OQOQBCokcc&rTp_20zT-Ilu^hIW zF*la%)PlTU{+Z0`jx$c+&1<~LxM>)zG@bJj;H~tn+rI4-eMqBm z70V_+)_14FT$G7ckh3}xO}h2>&!(J+GXTjwt86Ebj|66xKIW~}-CSyFJGm71=a22% zo>T2^hV!sq`}DBy;BBjOj;|xK*YJG3G|Lk)2eaHP-zT3&T)xoe63f+gE$$2wUo%qX z*bDydqIEWOFN_m;Gw8Tu_uIugmd`B9?-wXuGthLk$(inli*O0smos4S_MrD8-Adle zC9GkljN$Yme}^%g2!PX6qdW`~^I*;PzEj5<8~k4|^AQ%sE!{?x)DPo-j`RDMxJMm( zMy!cBNP9OV#1}WwukC?FU(?NbX47Lv=;k>V^`Y~S#BDPW_PYnI2=m>3lv$|d_`~`0 z9$t$K<1@~Rp&H?^FQGAp3~?9$i{zCaxH-m&^b+3!>Yhj8b-MB^jA8OUvT$QtW+mio zD^!qWG2gOzL`5!BY)v$0n@~v{S^{BTV5=@R;PK`@$4fN(&zOskrfDa%-i`Cz=&-j< zm%gMME0%PZqOSo`4#C0>K=G{30O9w%-|Ca9F3yxz4oc}kmg0Twv&tK;uw z6DqV#W(sS0J582XvRYjN|0A)wcTulm%=<(|^Ql(%@qc;#uf#b^(39sX`sc}Hjj+EVzcdIn=4~^k`Tv(sprTM=UC6|irIvD_cpnDUT~hZb`v;tGATwAcxdD~ zr{zcB7YUf#V?Wo%E2ELZ;dnc(Kil?&V2zNMa=9fTqhcuIjb7j!ROhPcqdm-Q&-ib= z{k}o9n4==9KekfY3%I_U^HP6qc%ePkH>xb?ksx;Q=FQB_%3pu9vR4BgRa3i`>9 z;r=799_+2BWJguG)DR0290NA3vGuO~Rj&0t4Te6gUa~9v)>EZ4n^W}>TxhTBmEIfi zsyaeW@2k8RSTa6d;Klh~pPBZYW7=lLgjT!dzD;rT`-CG&X+4`@A*dA3=Np=kX&al0 zj==XC*JOpEk@jXFhR_>T0v8m!Z63WAd$mto3sMlApt%(-X&Oi<|h zqQ8WNaQqGM-`Vf!^k73zyH4MNhJGk`EFSY7V_xnjV9V@}jNffdt}t!rh|OiFKkpQV z&Pim!T*}S$)n_!sysU~HX-kXt^s41k~YN$=FiH%Sd4%fK1WaDm=H3f>2oi_+L9faq)pFV60 zhBO=Cu6120~(rI>?=`W%F5$e8GCY^HJLObAvuEyMm9m%H-4Y(c)EYfY};d6 ziPT^ zV=j5GqYuV=^FRZ8Q|3oJQr%1trTVA(`g=$9U*ed|SoXA1WQ71A>t{H}LNO25SPSS zP+lAnt+C`Pkwe!-G2x>@a*NsDi2dKOP~mBd9fyEWD=Ls;%(%}yjW zno!QQJs#yt*KSodnQuqs+V{Ce{$D&2k824_BlfRjF}_`A`I4ACUMl5*cPEyr2iWT+ z5jVRQ-m#C&Aw?tc+GOYu+PMBbzmPrtJd84aIrDK5I|m~Jd&~8@F)jcLnRri`CVu_1<|-Jqk4p|!cVdrPa5JC}8Ir)IRr+UFN5i1&Su5jhOY51J-I z(9h5c)e)_Vw1T(T3fE#8pT%@}i1BKi7troD&`y1O?9$cNtvA0(b_get362$Y8Bo>c zvUqMg6QVbq@P2>vUGrzk7I~txPMRUFpD@ni!c=h0(~^h|)yh6(+D4E%V@a(2@aQ0Z zMb=IM(Lp@bza0nh(SF@~>5S9*$LyUTXLiTBRQ;0JrCf!9o!>eQm~ zyXw0_5q^rKQ+@2dfAzOPgl))%y-(@1Tk%hg)D}Ma$}&Pax2)B9I5!eF(-1~~-;V6P zX({C4bosbmYaOoG*j}@FZEb$|F#?&Jk6Gxsk@elnDz$uz8x~$%gznQ!cCH4Ol;jF! z>>z8w7 zxs|4RvO5}HgN*s84N{jUk~Wbe>8}kjwrjp22w1}m3{IT9N=oC7o_F7A}0x)EAYPCpEdyMKu>orwMV%uls2+ zS!fh1B~F3ck(r()$!piZJa<{t71K4n=sVKg&F;s3eMT0?0dM|DKDy@!@F># ziPlcrsJkzxa#~Fns+*vNYJO@8HHnRs_c|FAq7gw}hEMY0uFGQ^s~ z0owRF4lT=7XWb=qlyP6Q5=@K@qTPpp1BZd|rRVV*V9*cnyMfrL%PigKV4(;f~)n~s)BgJ&o!*1Lk5 z26m}`JjiC^;63CSiEZFnUnBj-1&0mTJKhw{+$tLf8H+k#P5hvYr8Y55IWelB_MhctOPl0M9&zdU(G!CLtw`BnL) z1ZE++40KQ4(l!b4qt5NRu%uW>cIsXM#D$%HX_ycnu2(JPk175=P`wuS*9D&EgWqK5 zUVLuhY|CE*p^K0@`X?u^_?SO9Uazj@_vz>^lK0H2 z{m$CgtH};C?VZ9|DW3P(?yMBAQrpc-^EBQ+#r@L+J^4TDzLUK9k?QTTX=-mbPZjsn zo0PqwvffP8o4CE90lnGlJ3QH+jgxrXyM(VtF7NrBkhON7)9bgMcVb~d_2jJ;j{{=O z=^g#C^X9KCziQs@_;g;C9Y;OxG;gdpeeLVu`jOza#^l0+S}N6@&L&-5 zmi#JlH2r;hX5G)gFGS8B#jF{nwYa@(-D?LokAhRU^BZ=Paj)UVuD>X6bfooa^7Fds zMt=!K+v!D_%iZZ&BIn`9m;>)uF5<80IwjWH@mMPIZ$WnqPqF(ysA4kklrYw5QcBJd zU-?SO)go;#&fo*zOnY>8ei+5}*_c*oTd+HXjctf|1 zH?7ES6e%{Okp?q3ZY($c9>teEXC?l1u^MT>+>|<<1(XV=VxG>rH+jus>>HCQHdJS< z@pqT$mG_x!4j!=D4^nJp!|p2=j-&ozv3$d2AC%`0Ud{C?Yzn86Ni7q6)T8#Uwf0gW za6hrim-(*iiVJHqjeQ4Q_CWrYB-&Y z;P|gmp8#OumT(95*}8^CF$TBZV!%ijx2!63YDpOk3dXBxa=(f`C$ByMQV~D1O>-N8 z-~DWiNhTJ;r`vbUf#*td{gGYC75(>^zDX(dm^BRrgbFk)A!d zrM{|{Lm8g+;12eUigFUxu)-9K7;=i^T;U(<_m@jm7;3TIlZikEAE)JJoB^Ye3E(L0i;QaGmBN2c7)- zE$c~_ET7ozrnIZ-#Hp;{5Np+~Wa2nG>;8L+$_cHNvapau>+Gm8?nzZk=lGVu^mgRS z*h|G@zS#i`hx!i>e`*N)=k6E5zZ38qXPy+qjdM-h&%;wg+e*TLS7ce+McjWgnfJ%n z)it@}zpdmMpZru3RCRq%u8D~x6zp(&eaP?hI?iiuwB3ca!e*b{*Eg%IaJL3mMZ*a? zgq!mj(f9v62saXT=nRdyt28Y;y83On)8O@AW^~5d$?ZFzs~>MJwQhGWT;`X;;l2Y! zLugr@8|$movR)^MEY#K$&WpF9IuUuj-Ree?M=j$zF9liNIFcJz9Lo{9c84evNiL-Tb%Wy|$Zo{g#a)-<@gtpuCH zrO&iDoms4n+yP4pC&U&l?g3e4Wwu&Q=?J{RZ`8IiMXaW+vrB_GK`44 zP7mdO1z>%Zx2E^iYB?P5gHi5g(V|0{+042k;q>vhgs99N#7-K(f5PEabUcC(Q@F9_x}DLgM1ROeSCnllX2g;kkt`xNk<@EvRpTP%d(x_ zTCXKR@41~?-OGEh=^<8R-1wa$p!Rq7sEMrGf0-?w;KC9%W(9Zng?ra)eo}1ZvY#vQ z!x-02y<(D~ybrr&C4O3J7&M*(R!8GuIOBuMqE7t%D|h;Sj`jVhn~WO=h~b#>yHwYrr!ba6lX1p~~aDciQAoAw^bRth5=-XWfL z*h&xfyGuZ8w!4h-V##7z_diQ0`P!?7q+$>G7L0p@`IJ0SC}~3RUwyN(Zj0$HA=%vY zqC9^_xc3hr6so46vuHxWfL94?h8))s@xVt3;5q&dXAYGw=15^k{h}8_H5Yd zSl_YTFiY0GjC+48W!Lm+u_079Bbi?RXCzbhI1)CwFYV2lWo*_hJVc6utlKNY?@H`< zM{};#=EQw#8TW3T^{*=U9_-WVp4;63@Vx}rXmc^yRgT&Q#@Aj^0sQ98nV^4Px}3(( zG5lQ2Pdz`g`3X^Dzr4INb|3t$*m)Cpa{dARZRFMvTOt$5h^$lxm($DUnIPyAcye`6 z&bc<@_T4jF>1-b3f?Fey+RkV@3$*mVZ1Bjrfp(g`UsPFJMb_QTA`GO&RhEXIFfL_N zv#3(?>u7-LKwXtB>F2`Gswst9Kq+{^X(0$m+3*{7g{H4Xaa&^J@Kq+VMP-){67cU2B28 z?{oKcv>#TMBk->ddxSZZ`wf(9LNqe1fz>s;4DIjKZJux5=6U+AL(5;f&GQS}JkP8d zTE26e=a;v6uH9`&c^j`rTf{$zW2GP7#B*)9rBMt}?CML0)?dA5o9F7?hqNCdk{)C} zt849QuWoe*6Q9vm-s%=#<9C3bd1>(FB{&X4TPu`tPtF#gdY3y5mX38Oug~%~ei~eU z*I0e*(Ee7(#|`O!b=@}4uW$2QS39J<@G&fZp2tWrp2fg%DCsjx&?L?Y2|))PpnLmJ zF@8L$s^OQ1X5CVPEP3|!&F+p5h7p2}o}|{=P@S<#lALije-Sle7I)11O|D3U6`orC zz)*NrAGXI3_*Va9o9D9eL%-K-^E_$7(C=k+L!LEIpjv_qJe|K$0&E8T7s@B1n)Q6g zU!{srYT;(Kx(>;j?K{|IPZPX}6fZIuc(p%5yokyj8FZ4VtyI)ShiFep$R}T*!K?Yn zg}+y0gB$GcyZY*Fo*&rexopp&iD{S3$Z$0)uPFs64XpgrOdJbqf=6q zxNJx=kJgEZv45uBj;24Fsg`s4b*1dYUc zFME0DbFJ!YsZxe;9HK&w@EIz7h9%o_`K}1{L7FI@5>3ANLd*Larm*%q^nWZr&eBBx z-^(xm%=U>r_T#^U&-BN0wc%qXi8lTC5pZv@JTlup;v;ETeZ{V}wM_=^kJ}-4i4K>e8 zUH|xAD0S^lh&y>Q`1jPrYj#Imykl*=5ax31ZaX%Z4nZOmS_HvQ~!o*E7^+X zGuau}#1j*NLwx_(d|cX{6JveDIK%eBSwVL#Xg6SVM`u$8_r1#qp~nm_)prE`Q|^A1 z)&v8A^x5^evJaZy)p1NF?w)Z2_RG$?7_VBg+!U%%kB#~5-Gvh+UpLm6SXXp?`)=;6 zOH-&kw}-n#2PXG9z6s?;XF_6&%T*hZ^$jcbah~3#ZDEixB5eCIvfEeJ+s9sIWC)bU z);#H3-SV`TR?%LyAL!5LSrbZIT-}a_4K6M{$JaoSMx69<12vYv(CYT%k=^z1kw~uj z9gGIfZFO!Zz18M=(2C6$O)UYRAvw_1PUv7S${)qGlY%k08mJ7+*Pk~qnV)!lpFHpX zzP&YHyt*y{&?qs9+;TtNT|rwyW4Ea}`hGhg4N0H(F6WwEIq`14v!C6cS|jn|mim9? zdpX-?-3Gn@wFxYu2I6M&T!)%*3*XiU1fv~u<19~<2k>hG@J#S{qz6zd86_+B{(msn zDD`k4%2&`dQ=YZ};*3k9x{}p-sr40KBo(ZP#PoSBZn*XLT3^`T&h)1vr0?$<^>+dN zJ^P%#V-h&U?sg8=;pvv{Wis?IAF@+`ufv8)m1Y?b0 zMAv=}0T0m;y$bQK#r=(gnAX513RH7j&d(WzfnK_HAjH?)>x8dy5&XLV|EneV|3~m& z3^2(Eel8K^G*t~{PR_c5kEeh9=1 zv=bzDZQUJw7mgsh+xWA|tmRX%cRgmD48pDTS1}vyT4FIpsxjI;B8igN*j6EZ;BiB!&W_rZ%w) zxnJ%m#MR7LT34GZpPg-R2l(>npr7MDcOKBVOa+_u8}RGqMi;=Dnjs(9-a8mkS8T|- zPrfdYRANGKTnQw({zV|29D*e0GKgvB=I+}3IowbDSHlBhQF=>vSuNadbgR3AeS_9` zS)E0lexq+3_>ZLKL7ty7lJD>y;;d=%6#BTk$O4U^|tMz`m#DkCuvF!Pgxiy~wp*8DH+L+%GYr6Orm z2jTRKj*2}Datgsz*S^E@bejHma^xHm03W-4^GyZF-0aOvP%M9t26@K+7(C!@&tgC0 z(=(wH+Y^cF*ZVw1GshQVvR^^4x0|P#bN;^BFR&Nw;Q9V96KYm`pONSP z(l;@XD~VrMXGViK^GO>-->+KSBh&+fw5o${m1&SO?yzfpE6lOIm7W!QTj^~L<2T|D zHz8FQ&jJkz)DQ;uA@g*8+ucBN64d*GdG)TUZ zY$j^r;wI)3b=M~MHLF}RZ4GfHKUhPJQ@ZAqm0V>FMDLHfd92ru)d-*#xdHQ2gRcJYgiVR5?4hsj zW`Aw>?5~BRPOfqgAQUy#;vHmMY;~XGt9Z`stIFkANF;5der;Yh;bC|1a&c$wb5uFNicfZLF-Da1b_yp}A>B=p zR9WsXEBcos(3KE!PG2&(HhQuo4u+xCj~j-(mS43a;^8-7$K(o^aqBt#;!}+P8#i!t z{=eiJM6m666s|7sl9d&A+hO?@s!6l91GuY`fB4<|Xq2)L94a#5b2TEbdv#yh#L*2d z|AhmD5s#A|ULyzt{b3BGmIx3RV}xX1?CSEEAfIO-uX~$lKaz8q>%aBbNRUgUq2-rh zWKnl;XH>TBoHiAFY)HY+9Pb+wqVZN+ryB3^8t=|L+J1C(INpl9)Ci&nGCsg>j-n#t z=h(Mu>cF6ycir z3MDN6y72tt{=mMWg??V8N|eqG@`vZ_aQ$eb1AjRw3on>~9?nzsw`j;NodwPvee;8F zZt|lJjvP|HEugS_G@NGI%eue*SqMPyus6d?+^XYRe!QI~k%F@B$%uL7N5ilFV5DHe zvOix?M~AE7?zf-+s2_^HdN*d+o8j`q7F*D2dUN;8{3wakuf445aU>dbGC}>xXFcmq zFLi=7rr9Hx}OO9yZR<$Jf`n};megsPlzLKp=7#A;e z_fo`PjjT+yt?o-mK3-Vrw3r5g#KD0TRj2U-Vl8UZb4}n>$W&DzzT^k@g}w_o%G9*5 z5#Mo@(E@yC0$ao{d7@VRYawj8qgv*O{Z1CZFV7%Ubl}(26m!|EgyZo(B{!SR{Gizr0 z`~)CD5fuK40y~%afCUY_H46r`klb2`KubGKR}H~a)N$W`$;NnyQG_hG`%{{Ogqw@K zK;m8+&M_tU#{jm1o2UoWF%LEP84NL&D6tk-c^K6b$#T|omAGHMD^PV7bJ0S1-9tswss@2V~5IlZ3%x24W+GOYX?8_d> zn7iJH;0-LPO$f5$O&O7~nv&lTZCS)Z#=W7H#gJnRd0cQ%iNDOkyJ|m|_LU<>g*+tD zt^G>2A}Gy>uYE7{?@;H(yllo6H_LWW37@ASx;68bVo=V@A?38V{f*SMUZI@i3i)*v_M*Be@0!pi1+^QU-b!Q$uAEpE+=gNY^BGXmLPE-9!NM@6q2QdFpKhQ}^{Y=FmB zz#gIcr|A0M@z|7at#A0lnuV-8HEu(KTi~iNZAcF#etP4kZ*7l&{eBoRA=d5RbUciO z^rG)>pMo+k1xJkhu5Hah&F4%Jd!47j%d8selrKBqt<&QMnT6nN^aNkvMNyQFD`$Rm z#}UJq?bA~^oId)-cVLg>O>9|pPbHkJtdGQw!$@UvM8&eoo=WzYGQ#(9(n|R@IWyg+ zD?#byla8pD&qe;#3sQ8p+1_(uUAdYWu4dGg3}OxL315k3))Uu820ORc??VLam>b$_ zT5e_EDRpuT@r(0xN%l8+rGQ{YL&8YX!wS+eK`Nkk@Id#CqJO=&HOuv^4Q@fH>w7zn zC|@GD^l{J*6b4}SbhxtIQSyrWE#GZQEFYCm+r6J#@t`11d$Sk<55jsP(}kyz>oaLe zdnVcAE!DifHR11@ar;N#a_b65M5eRS)Y%^_4T~?#?LB8qV1F`|Um$17Q_9MGP5 z@jo=O)&fn_fpHeN}qN}YFb&|AV=MOOoU zY2;@biy?Vlt+qllNPoG}4A8Ca>ld14j(ZJDUJFOocz)F`(i_09astOObngi!()oaT74&@)R>T@INR#nMh!@6W+}mvCn?QW)LufhWXSxB_7SR;UX0a-ZY1UN zMU5Td?>8d~2_>QOpC#OZX2!A!-s4jfyyvflzVs3rv4l}L#i9{N*Kf&hH}Ec-hP5?8 z)TVB9=h_4?k;zrsAaoL_Yw`TzbUu~lFS%lwK0_Wy4%Cp3kIw(Z49`&EO^U%L@I-h^ zz-rj7${A%}QsW%Mz=>a;>bFnkB}Fdhf3*7oK10W&|n5eatIR5kdd5jB93S`Eww{-uB$7J=FWdRnj3Z)I-2JegrnJ# z`_yP|-g)q7Lj6V!z7iH4QseF-W&}(qLEO>EiDa0WQ-^;wEN2jNhNSgcJPlBX7aMDh zFN#g_P*Y-(JjCrmYX-KMDwKjc!u(f+6njpAABqodt|`XxU8z&7N{##GdKty8d0PMe z^Z=aEk;@YGeaX&ip&Yyy56Ze7UWdeWcD?wd=4N*{{>&@* zpTD}*Eqd6Hq|jHl#iLT+#PReLKt6il_U|lK%h1Ue(RC;7yL%@ zpCqJ4_u@`+E|s%|v_L0XWzI6=N_9U+T_7#@kY-%ID}waMV13jMX>qZ2a+t(%dN|fXgRdbj!Ais>H)OJ9+0`VQ)tGk{61y ziGF{v%@qtpeEf@=r;VbC4Sp&XRvX$^Y+SxWD?@S%|7?p27>a`Rf;8R*SzIqUUojIp zASEcfdoTjY$q&>LG8#1dxf}0N?R2Y)4{65lE789me{9(31y41Dm2vdlKE=_SeQTVm z1xbvPg^uX_y&yj0#CUGFJ4%kJ*_cHV+;Xu24v`(o){MaSBVORYPi6q4$=u!?>=LM_ z_x;z0yoqC`-XK5k2DjALM7YF>U!$fV7ovaeBbBqvEd#c7jbZhvLh}V^wQhXwq3u)C z9))I4w&=lgL>cF_vP#m3xbbMoL`LK7Y{>+#vsP+cfg48?@*-{-){Th$}Dd z+TgGVt!?L7YDs&9zAGDs9Xe}RZqJ}4>Lf54 z3i~<5_cLu{uZ*9T!oOEr6de-V{Dafbu4ij?$CGozU{<;Y_q+J92!m_d&sN-Yd9YPO z#8%l@2-izHjHCEsq5UvN=&hy|9y42`6@`z*`&;9g%DQiLx6_#DJPn=K24DJ281K8& za5rtESAnd&O5G@>B@m8&!+6O#MmwiKPdE%*{E76wr}}-#>qide6)Y#w6|2k0QH<~# zsOq_`Y6(iwt!}6$(sfzsf>OkWS{~nwTP!t}mNv$cuOl14%29}wlmpPGKaWh?jBQ{y zcch%UQRR7OVf0;9Yr`IL=ezCc&3vb~NBB66_-+adY*XgZYj(@4yKe4yt6~9KJmnkX z8wgseTG(2^xOYqX@N_DY{lUz++B_$bfbuGkFhMLyhyTwpsO-GC%{Eh!VZR3Bw zPXw8`ws&bmhT2!=3z%=|2#{?Jenzvd&T8#PE%rT2YDtE_wtoBA>XanR7C^Fd1f_$$ znMn68I#Kd#mO4^#eQ0$(1I0H0a>( zOU2U^*9Y`%QR}&O$nv3^RC>6LOK57-yD6IfcdeY>WrNFj(fZJydX3Xt2*HuuM-%E_ zRcfkgj#H6)OGRqhCWX~*D!nUB#Ao5(SQnPUcg-W|8MA%;n?uyvpNDkM`NtTtKmRP| z{L}C1az-Jn!r3JKn#hwWgzDeV5yL&=rEu9@q zi%VIRbePU+%LZ|JZ(sZ-`2@@+A+yIMWc=&eB%y-!`~>fPA-N^EO0b;kX-d4Z5jJiSGcar^ETQpS@zL7Qy+R4z$o_VlHAZggOYi3VHbnxhoQ~bK z(fj-t-6UKb?c}{D3d2j(uB5$2UEFf!If6x0a|HBYu8^?+-=c5|ba&@|?(v`5?85Go z?y%>Wz*e{8(PEZLzGz~k-RC=<b{HqU)EfgI?<`&zL zaeT*gZN?m;|21FdUuk3l)v3&Llz~3{*2s%h5A&kf zdYBFy(GK0@esQ_#RC5W6QV(Gf>S{PFBbs)PU8gUcgE&p7CTpmpJzYlr(SI?qoTV9Jc_urLQ1S5QG%VAr10itT=JG-E+G#B&rA>P$!_5>+@y_n?x}zCq z)#eWfj*gBKrcw1-<@a-s-fA=e3q1uyp2oKRL)z?kG>|}QVp%KsAG?Jl+ZcY$RL?l; zFs{@sLrj11?Gn~+s&)Jx1&Rx5xqtJJkNN{Hx%TTK1Cdv|Jw|enD+#aXMIZ6d`6ks^H`n~c zaMmlM2H>OA3`du0#Aq<=tEDNH7n{b{cP^a;mqaZ!y2W%Wxx?MPo$pJgz7fGPO7wkQ zha*}v$+rg4i@BP*iIZ}f>Ylvf(bfmf`ESa2d!tjqXZm< z;^s_41ojpAg5E@+JD@Q6OQBY7iGl=vz;#F>fk85jc8z$k!aN`@Gn>=D*-g&}7Upl- zJM5;jS&wKF-$9!gq+8fcUtFq>ylvkLOl{zaerus{aY-w=6@Wt3Mf3NEf z8pV%#jxu4=_`JC^=+HC(Aor_1$O2L719Avw-2+c+p`Lz(1V#0@IbX&7Lloh`EShaQ zyGdwI3nK~_#xPqDEXaBq%NymPsQ$@MZ7S`g=Uf=N2#a75sa zF+1W6xw5d;t}L`8&avT@g?7X_(qCDaJ0y_kVjb8K$NE_2`{*0Td_sG+@}_{j>s~VY zV_v;O00TiS@-Qk-5gc=2N?}ND3bxJCVFLV_KG^i%X6%C4c0&KXFgRA@`m%w*&?wQ1Pl5L3Qo9CJI3Cu6U2Z!wO%y1`hm87}CH36A zjGO;W;XtRj8Q%7g^|ptFTF}|1wh;ri2i-hus90wA$uo|B-4u>vu`CZYZOi@lv!m}D z2fo`H8jP&L_`d0((x5(#?{5w?GRWQ_H#?@&+iON(PASf;HjB&%8EIyveTKAwxzS(b z7rKx2Du0a0j$j5Y{heuqm{^hk%B|1sjqTg>Jw)x3DGhFd+eLde@>y+{GVItOhz7e* zn7<$T)#eR0narmf)=ExpS- z*g=_lfLt7`FM&|ewa`S?AAI~?zc-K>WFxz{Xot}9t9ae<=%m8pbfF!|N&S$Dc6_rN zXFNAvm?z)I(HZw_hw)(MZ7jUWe95uZJ^@3t%|G|o(4%b-eKVMtZduwrP^vADkxK(@ zd?4lTH-@wzHvlDH!4#e9^bOQ*QCbI0^Kl(2mboR)#4v7}TP+Xdrs<2E&-dAW$x6{xqze z0JY}gDcs9?z8o#nt@T@SJG40T;C^1bb4TCg;%qXk9CIo1cX(zX7wM8PRq}f#3Q8_r z^&7g9CTBad8!Gbus~2kCAp&$V?IobjvTL;gYLW-4SEEMeO&5<#7h8zFVM~}KsnU(O zLiMFpKbMKF4U{U=veU5$l{4HU8ueY{Y$s6kF28xn!({HBXZ7&@T;Q zH7ZZO+Tv_(j={n8854ZWXnfl+PGY!l|a(&%@?B!k$U4iOGKP5Aj3`!@O^ z4k%z$p{88IQ~Zh&AE)Xc%kLH39)a&A)T{l}jQ4=PjNGkh}|R zw3Rozt3NDFk~Ag7dDZv=wT-k`@HV!DgaPkSFIP3cg3j_mGyA#Qzi-&-eNw3BDh>

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

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

b9n0oMe5GX{DpM7S_N;w5vYFxk(3! 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℘s_J)rVWNM z?AvM&^8~J6`pOQ@Sw7|Fp->?m$$q(pY%#|}Q=;cdot6lWczL!jsq4y@(etFx*mWCo z4fT9wA4jum&MSJGR4eThDK$IiyrQ>B{cQU9J`&0Ap}U_&WG_o8xnCacVsy{buPnb7o2tW=Jqp z8%*0Q=eJYJv><5i!#Rze<1TW%z-e|94E9jokCn=}udU-473v0K1JroK>aw;1NmcrR zOb`?EIj>kS8f%HM!^LMbXwnD~Em~?#dG=8E$3Dh;Cf50OE>{=~d7y$%3^q!SeGeXB z{Ka|N?=aHo2DF|wXc9s>*w6)b$q`J^CG0fPLBB(!q=&4*4vO4x{!wRgLqWCEZyU5K zqlK2q5zqb+#HN5pBk>;g_nZP~m?~k0jE%#_732q>UOYzPIWy!E(^MVeI3qF14IlEfw-2+dZ`*nimLjG{%52P5W3NQ0ql zw^BG-P--JQfP#plIoE6-uFoly&wjoN8BJd`Jew!jQfNqrs061~_+7gOKUgbtMsZw# ztJ>&X&1&PJGrlW(?>3(at3eOp2F3U`9bV(bk!pZA-?Q%tT)1+$-_Rwd9MY3jMyf3WrvO41J<40RXs+CW_ z5`(<>pp$Jy?jQm!TyYI-@TUIsXXD39*Ow=jU*txTgJD z`g7{X!73gwxOQ{;AnoQmxD$AmPLZf-=nf!d=PH1+&qH*xe5HerxyIrtx~^eyGeBC; zmP1L4i%=yF5Re)sc-uNsDUi&pQtGIg$6-PWJp^7RCX7UyOyFU zbs>h0QwLIWSAi+Ga4T~*?yC-!%IVpgaq7o{Rj{c(-vh(`&_gqDAHph zKm7=%iu+q+DnBuf%+ynufmd9=IfsF#fn{Pg%ZUpH8&oY?Q{^f0Ga74nlq z#dw%Xh*4t6H_VyshFWvp7btSCqqqp5G=&KxEy89YR8)ZxoLMJm9v0)yg#y;Cn>wMWX1v&Ydys&rN6^Xe)cue5uF^~ls z)un0@q*+NY>Lw>anI9r%<4IPm?g}v)^kzM3#rv~5Ub;12drLg(MoI4x;qInovB7-% z0Gok5I^&B^s)i53tOUNGC9TVY)81G=A`VcYnR=cTRnuSmogXE`ie$}tOcSJ_(xIdN zkykZXeqo>#+f|1t$=A~3=M9w5?~d-4@4iBH>Jw8l#E05goHsyx(tp3RG09z8(t2Y7 zR-Zi3C|ii$(2ac;RK56WYWMcXo$`WQus@#{q@mSSQvFLY{f$dN5wMBmFHT*{%B$FK z@bzSLK`Nt~!iMoEtZsik$@o7qAyh5#F@B>n$PUlYPlk)*t+D#CS zSA5$E)ew&QI2(+z=rPAV;f^ptYAsv0k-RjK>|!eQZkqp)H|190JIa@Dc~ zev||&4_r#pRI98Ji^V1@tsI({x|CD%vGetk?9AVo{4 zoly!U-oxe_zcR~`Bla6$*Rw?M4ya;r&1rvCoK)a_J5l~&cS}$2z{s^&r)4vqP-Ah! z0LUI~&kni33mea$e+CciktxB#!RR5>$u`D>5C^cg*_Buew3!Lkd+iJb`hg+Up7r={ zDHhs*(&<1#Nrp_Y65In>!b1H2dW+nXOI1-9_|^31*>J*md;tvVy~)HrD^RpIl9!eh zVP}mdw9ZgPdr3p9sr)#jo}GjRUBYIB$~oi)^^xLu@pl~lpM8jOf^ur&D5cRCT%u>I z(-9sbMaxt-!P&H!fhSh)C>GHnUIUH)AflYnr~XCWsP>m1q1yE<2)o1R{}>G`(P{5d zFXOide*Xn;W*D7e(X)X_IvFP~A!)MkSb7ev^FSz45Mytic^k^yAdk|s-J^+(pxoC| zjCv@>K;YtYMX_KSxE9sQ3j)ytY~{4HF5_EfG(&8Ls+8?9uAqwxp-4E29ZlnvRj6e% zu|5rNIdPc9bCbnW6c6HgDOB)pUxF1u+Re`?E(!2@Jk2tk`s$5TsPZsr6jK4eAr<3j zUW{S*G_V`LB0e@D<;j?)=~<6VisJU>X*=mPi)&gLk>3EkQEaW0+#e>JBoi z^0#D$EnnjC;cVg8aG@O#Ezi44Z(hxq{dWJ7QpaZW%m@tDdcr1@3wThErrFptW~%k% zj~7P`R|SCes_$iXHU{`S_it=oJ2{E^rP8ZTGijIS08iXljf5~34z-0|NMAt5DhjbcDYit_L7=7XSG zY=dp^>DVs3v^N@93Pnr!x=Zui(|A8dTz28_#}wG)o__897_;S|C*I4&{yS!cyl(~# zhwKgI3H{e}6k08gk|f~1krVY6c-{!h0T_?tF%^*+>it0Dkuo>qO&G@RNIZEKe~}#> za@rL%4Wm1`*|4Y*s%kZGz}e5kb$H)1ik2x}8&9BK>~&av@p@ta{X%G%4kv62AQ6lw z?j&1D+gWt_H`40afPN%Y&{0qpT9$)dOe+zZLaMo7uPTlAfW*>ucq#O(VeLpHA_yNk zQ{nXl=(HeI5ZB(g<0FWhNH)rfj;RgaCwMIf)F{S^4KcVC=~Rbz4SWy}{^hMj{?FkM z&+l#JH(JV{R8xNL^zY@5%HW-+Sbi#Sq?WC=ph(h&PQ}r1_Tq2VC|Zc%Tsx*kPFjsx z^+R<7q6F~zF^Twv)xwWE{X2eR&eXz>lp}Y8NVkYW9NQLSSEBWmQAgPpF=cnPdV~wqwzON)(IE#8M*D0PK9mRu{lU&&HfaA36~4 z5pzKb!MPKId%jLElAj{Sd4P3@9>AZ=f{Y(ZlEQ@}82PUV94MrHxRXK@=%ZnvQg$!ftnFx@R~WHXAL<1AcyHD=IJk2 zTZt3QXW3N{)=%N~5AtZ)7#**FMD#^}vg3@E3!CVJ*)A~|JlOlw>qJ3*U%XC~TIjs3 z#*SJU*J6t2F+Rp60HQ1(45&((16uQ_E6^Sb60o zNJp{s|5g>HT_G329A%$bD56;O2oe$uR07@Sh}A-RN7}4 zy$M!elXK7}_Y!3KF}w+OEaw8A6oB~ggRD~I($o|q0cSjpfyEOSUP=2l@T8Xf*R)hT zEfZcGwWi}-HelbX|4;ZNiD@|0q(MV@Lm;bI#mnr&6booU5`u=b^zuU`QLuPWSJ#-Y z7SKSydQv;w!uM{}p0LCU3Ss1jkq~jd8z=X_bN)fGf-U?{yOtPu^RX@l&KUh2rOJu~ zH_?PZ!Ze9gt;pV77c`WWHAIGB;;hy<+&il|kW^`-n4-G9w&&x|Q9}#GbpEZF*YJUVHhK9zqC{%mlS2A$iT{uSy*2&|D=!T$8Jx1gFfWWjwHQC zA0C!{koK?i;gKTmyq!KZ^`-q##AotH|HMc1V_Id@yp*<-#q>aUX?ZR_iR9Us#|BZyb{|t`B8lt zKKv(rL_g*`mAq=wGm<-NB3?nWwr?JmUBhMEx3yoiZysrF+1u$;Q(v-=M0|=q_$NN1 zAKN_T4SdL*%^gRs)$c{}uq^W5@!^pi{{z6zW0QnJpWc-WfFZU;38%+Oyz);75ME{l5i2(U0Ap{04sH&Wr4BBrh0svwQLctUEqiXQtDfs5^Z){v(LvpR!jD@YaBw4M#u$;k&8cmbO<}h zofdIgTG!tNoEVN|bFWa*aq~Hu}jXIKTW#lY)l5M>Wm z@g=M$c7v?z*?94ZZ$0`77xX%|DiI6e`Sq6L1mwC zMo?6lTO`h@@#S*X@F`XuQI%@k4*Cwq`SrB%Z;y;{XQmsX3gSXFq6Y#_%l zGt9e>#IWG^cZ~~O)X}r{3AL%t+Z+hLP}Y+ZR?B*J5($enXGJdU9_Tn>9yZ}8f7Fp| z4qpOSf|!>gh?snleE8(#5a`#wS&_ML>jhDzKvv1yZB*bWT@~9fULRhNo?j zC9)U14QvZ)R3sSD(mj&7!x^c2M6oaM#l5sd%N^q=x;q_(RpeyJaNZr`|9EnP<^yEo zOItrD*c~V0gzhyAj{Od=Cti2FO?Zn$yi$hMX+`d0lo4(!@w5xRTuifQw-*OcCL7rA z>8Ln5Ss%kLBM*LfelR;lpR`uqAFag&c{&?(xI4j`#St2G?YTY88x1-=HUM(7t&WZe zjgvE4)YQGv+|j_!ApTq_0?u+o#8s1pAQsh$gf+1Y! zV8vfl0${Ajy(E5V6uGA;ZgWDu+~=Vp_aLk>thohkMeh6L-GHpPn1SmL5`1FvOLOov zOOZ5~tKtlIkccQe{81!Ll<+HS$8Uki5S~ifkG2#o%rt~dv>h$A72{=O%~{^S8dI%_g2?t@K_%X! z!~Sj;x9TlubK_AsUXBuxfccnjUwagSv(b}f@k8KP;bSL5t0l{JI)z;bW`AvW5Ui}y zMX?|pSH>HLD40=x6nkW>2ONaM*gV7QQ1g|3SiOJRseqb*3QssXQ)mgI_NJ568l2za zr=6XV;mDc{2OvYV^=S~OIR8!+R;x7B$lS5G`wLFn>sfFIv@#Xail!|5pq~NGJcrSg zLn!VyzyV&`oI~(+v*z!SjC(14NOs_CNewmTH4?=wh|?Rc(2$+aOcpns#gpNviNRz* zb*Ru-B2YKZV7Fj4djjf~T9vP!%>ll=S*cOmDnkriML#vt$}ne7(KU$tERQhlhBLLu@C+0@l_OfN!{>&GZq!+!VPU;+MN3 zw>`et=@ded+EG(jabG7Eb~JxQ?rCaAg=FOyoT!&)J75*tk|Otea#$xips^@&*TMni zbO*uQsDZ_>zeZTfs>r1Q5ZZ_vHL?Tz(i}B1Itn!bVR1jhd%7j8X#^5M3)P|3nWkAC zgNa9xKzDee^+iTOpH+2?j__2%(}O&8Z01yJERssNEULpnyrCj4dgg}`$FPp0s7Y$@ zi@50Bn$s8I$I|JGA1zUdjnm%RIBUlLkXkVYP*#bG7a1U!%|rigt@s6$296Y%niB%3 zcs*M_g^(gCRM&fyOtGxcz;+>qo=FfE5&+dsTR39Hm#)OZQcd>>eF(?~y`w3Hmb$@b zVd8F$Ft_`GMoN^f6NDTR!SF;SEb0w6NT;S&HZ>-uQMC+<@=L3XHjntg`w>=+8Yw)l1(^{`=WF%`v2aaLnmg*_>ia^VxeqS?5KsZ zIby0c1r*maZ#v+KL}@Or)%&VVa$h@>%(uQ-KHp#JpPO&K9U~MN7G_EL{VJ<4DZ+J^ z0NU!D*+(eFMUqZ;Mg2sI1F}w9<2+zn<;1Xn%t>Q%+)FMU3+CAd5A?xkWBU2w7-H4M zg;ZR8pC8?;O1Kvhu~61U_+_3lD|Ei9SN@-M<;wZ8Uir*skVX+PPu4A~2X~gqRo%F| zY>>v5ySIe9&1sv{@EC+Nx*d^7vg{&|sC1rk%8qQ`Zs^N>ewkIzpFT~Gz4BpE35SJO zoeDZV^_#EiHczGS_xWY!<5=KgJ^$GdZ3e<}k3J?QrlM3hSioA_9@H(A`E@!<459M8 zB%IQF<_|W^8=+|opw)bpNj2Eq8lx&TUW}d>t!a#Rq@`tb!Q1NjjbL}7^A3t#4~26D zw`@RH*__iR`}yw?W#$D+0=MDyZA8ksX)8P{xF;*PDQobGhpIxT_iKkj51sR;!uGUK zQE<1e?db*&c(5l3_Aw6@Ly6`5-T!T|eQ-@-MoSUN=x);aF5N^-qr2JU6xj0jS*hW~ zjye*E8wEA}qLpL#d<)IXou5}aFbu5?SIt-qeKd(;ecPdf3&MD+J3gR~1HU=YK2al2 zjmIF4jL{fw<4$wyHV<)*7k!#ffteIu@s15p>jk;G%i?!3l8uL-*J+dqf_d4&yn(V& zc%OU$&l4T}mIicEhH#=&*JR=l4Z62wHSV>s$N4Pdi)wPiUQ->NDv{{_*hR~xy%NdDwf?lC>jG19FjgR~OzHU0v#F>Q zpl`jmt!GKxfhz#BoEH=78r8Nm%=iP@@~Ay14ZS>y`695M_2f~w;+@xvW2uix_1~-y z>>JSCV39NA!hL2-MHS~_rV-E&`cg!j?wvUDqnIQvT5XSEICw?r*PMbRX(NZM1o=l6LS+JQ zcskpP!ytaYi|hjJ4hv_&&;M<&&*X`mw}}ZM=e@!&44WNd&)FMS&kgLOS$uknk~*NN z(<4n-v)~3;Mo*PPEc2tDI?`ZRLH$v~3CY(hd=KWn5;hmJ4n4~TlTfFDK{{to*1sv; zgzHcT_|xt$P7OK3PiBiKH2<88W4hpGjW*dfIYrMRrGydsamAu&_!yGw>JggnXtTpO zC_&spr>dQ4d`|c1c-^_vWe*A`L#ig4VJ^oYi0CE5@{2Qc5P3a`Le6ToHrqm1#UdKr zTlDP(%divlF}$E(rNMkDvhW?Gm_th~#`)C@YtN!xs#_+;WAG4kIJoKXyjo@{a%oHm zWr4yBOaxqOt-mO8JCe`4a`@ojLXnRz!?2u&123aySTHnAL>J=%1k@mK zkVs#D&QVY(q*#E{_%za^LFhY#CG=;D(?1NO>RWRt8;M&Md13ZA^p+Q+Bv)iBfkvAr zrhz24PJ!e&Pmf$1jTM#4sbCzu zrVMr%IXqU+rgJ7E4Q{w577K#Y7d&yS(wSI$PXLvDSDhO9h1W!B(1sVtQIcq{J3cSX zDn6FP0KyLl;9118D>gnn5mJhE)k|271{*msq_o93lZr!0E!kPKfJ~kNQq0_?v ztj~a&?fU%Jj$m1CiZ_i4Vt;e8gR;}NVJRX_uE-4p-*~4%%Z)Gpz>0(yK3?m5zi4LR zSf9s=TqpSEr7H7M?ekJ`TUVafB`;Ma1ltP{%Diym3ZE;c#yZxo(!$R^hZVW!K?zI) zeQ6Tsv>fw0RH&By@E2!+7}ls?_1v`rZbF1yD1eZ_K+@X17HRn-D3idony@7LpPbWTuJYc4UR)=_MAQ5y`0AhcTF3AVf6K!GZ7_uwtPmZzhyC%W!YG zi_c3_M{$a0sh7482vjdPBZjkq7RQDbM?GuIPvMiUG%d{wdFOBsl8K_!5^;Mjqwio} z!Na;IV>+RUBl*eyBGYwqNa=j1VWCwW9yiZHo!VcRh| zfg@DNC~{YU(ljxowoXlU0Zehu`JVXYY?{vJM3c~w-aQwD_j>W)<8nl)TrwN#))Ib6pO%ologYO|VW*;JQy+*%nSo&aN;a5Yy&2R$6 z_K=aQ$tME?C>T0n6?Y{vk{wHLM8Wg;1l>G9E;rDSUPpHZr~pcm?6gip_eJKMR^;v^ z6QtZiCZyMwWF9kxV?fcJ-FqO4v?Xw~3@lbbhJb5@U#TwGNlSnVqq2p?xNla!*fyWS(Jz&Dho)6dKjtdNC%4>Ex&lsid!_lXaRvM zE+3F&hJSb5I$FW=kQ;lT4*2lPzzkI1wN`s<^HCJ&OLVI4<4oz$ck)IkT9@_3e0wi& zr2KOZDf7DF-k`+nW9(~99QQCfP%@TPcC5tIZ_3AGWv#G+v{dr~qySQ8PCom*88iT( z`;g99_;HuuP$7yL$%2qIb&D8pa@Ld+@0HmIN5Cli!3`Fc!!3NU9C27R%SECw$T}Tu zkzY~V?x=9cRRX06K1Va^3k5@$3X(jTrm!{-F>cdWx&Fp~&-35Q{FmWZ6e8JA{W6`h zpQG!>g8fI)M|4AWZ`($0N$&Tj_PW;y#aQ5A#f!KUCF?;0>P6P}!d< zJ$32StyAY495X+vc!>L#2^b?Cg^#M@rtPT=2Or3%$?}YPJ_tKW8t!!(GPQP|ItpsZ zjwi^oBjoN=(aN+uJ6bZbM@ab_*&U_Ae1IRNB`+?MCusJ!B$d7yBYX^s_I{Ty>{%P#n8hK$WAnKd@2 za+c`~53J6)QGOx+0wmv698J2K!WXujfh8>+`TkKl=k%0T7hE)gy=FEolxNQ_Ko!r* zDdq#ToYRsrcZ;v+eqMCHC@CXps;W3hq0M_PV7Zdun8=b;Jwz`zR8I}P#Ol0{Bk_eq z4AAU|NR+bR|4BcpE)}mXWp#BC2^E}#cHveUdR=;hio(yr8Q}uuGm03f$~6INHv+UI z-mWsMs?5qNvwf9WZd599yMh`7+sr#kXUqz!^u}zEqsnO;q6`(v^;J$DVDEMAsE2iK z_`!kqI$rsHqj14T!unw}WIXEJP{~^2t4OB#qba@}@jaB!I4R4>NS#-{-ryZ*Z}#-A zQ(V$WIkR2DTAD~yH6)ubM3$5ILL&4?Kt4ZdkVWY&czWfR=0nux%&?a#=4{7Tg3yp6 z2}5OK(7ZrG&s1G;h;-{z%`BOmF0A53fLbA@8iYhi{Q;;nDu-jCsydD(L>(Wr~k@jXe zvT<@lhTbi^!xc9;$zb&;ATnwQO6x)ADkpNT;zchlMIQeX-51s9=2Y648Uoo_lwRpJ zM6BvT)gbh6N1j#ZKmh6ha<~UoP1QL_fK;MMG-4ShdkS=m`X9xs&iF6C=K#ECxlgchv9(_??Aa}cV3th!}h#Dxp2Ph8{!-% zl7mCV6gW$8=J3j2N2Ku%d|`&xbdfIL6Ku;IJ7_O~62KwLa8%$p7)^L8JP=08;h7hR z6RUY)FY+0G4|{P;td@M!to%p zZ@VGwbtTt8q=uL2*Xca{w)~BLdlb`e-xK&9yTGZE8x3!BqvcU<)H%cr*L-et-VbBd z;yUFpptoV&4Q|TTF_;SjI?qB`gCYbTTB7uC6p zFV3zcMDpgGN0ha{@z2Znta37eQP#O3X0ntWCh8=kg=WFgn2xHfa!SW%PG1TjF+&F_ zTT5Y#ly;R<3jAq*_@*vYdrcG^!*k|ASG)CO{3OWMN>5c46QREmcVml7Lm`w5&1W zVEC99c)7}aqv{;z`zmt@zNqQEUfY+M2B;Jwr{7_MEkyAvXHlSx_!`jA5H4`{xB>A4 z^kaaou_KuZuDaZ&syL@e=JP7!KB+IR((m!0Q1tV!p>SS}G7-Y$d%}i6xrMjX#21(rkiARi&rXJ#JdsMO8U!~J4c2BJ9bsD!J z<<4jxEpQ222(kBhnqemlk=tJId7e>!Ku*4!&$$eSH;ZURsrGn@>>DT-0y>q{6z>I!hf-BRiAdlJOMZ~D)g>;h zowbN;q(w5^R&o;MBvx{9qBHyye$(#<=taUPx5(6RPNB)JqIey(xUxk3!oW(jmu#@A zV1D6chKTpYw^w2b{(?{awa)G2kHJTfkC4 z7J&Y6SSA|>0J0&Kvmqg}Aq=yzVVaFedbSCW3Fr=}2j~S*0MLPFW6?Vs2d}bmW+)qd zbvEXq+35hJnw8EV;57|5u{P;Dasi*kY4WjQThQ?NVZBuG$7(;g8BN+|IU#gVk z=PD(xne`>9X=?xU^pvF3@zHT(QWD7?p$!bz=|W>I?h?tH4hUmR%QUIuC}Mn^DJd;g zVopt(ke-q_Au-jIn4lhOPL1cz)p28Z9&WDb?yer5Lpt6xAu6NV%{Z32ob zkz|_EG7@1X#>b{-B*t>*F{xxvAi)fie`m(w+nj{&)Nx6vh>$QPH6<;6yd)trO_Go} z#yl=|LR<=5C=ZGmrSp#+gQ6xRrH-R?G7{qw5|T0`;}T7oi5Zi|Oi7KKK>5N><*T+2 z7!>hZdOU7iY67L30h8>RnJKXoC?0J1=Jw3Q%*@#M#0=DVwVh~1VJ*($w<$}K)x*O( z)>81qN$Iia;}fS)x)~^C0)YExBu*qZ{vDr@QvGcS%-xex$AVXQ81hfdicN?!#Yqw~ zG9i3ga0aLVa)1O- z*$$Hzzzx7}fJ1=&fX#pnfKLHS0Sf@RfNVe(zywGE7y%;y(ST4u0KgYuTc=)whK`M! zb{P?$F(uuUCK@S8W4gpkcu7zW)Op;5qNCk!vfS@BeDRVfH9ux&H>hXi4KVh^bgRf;S`{Yh~){WI~%;zor5zy@Dl`>qVAlU zmXbCutyVnUP+hoxSfDjR0FM|O8t5M$>mMEv8-@>r4vh^A4;aKhV+Te>$LazH#zY0i zhDXE(1ZtxK2l__`)=F~#;_AX;wf+cch=>AKHFys4_wtO@=>luxZV4Y25guJDq{THj z$a4Z*bs_%UC{^*(vq#SwOOI}z7E4$_56f3nSU|U)9u|v#pw9B8*VcR+LIy>JY9k^b zxp}g|A^y4$%eR%PF}lE5f2}rjQ24v*&V#zt!VX1`8rb7?hp>R!r9y~zqXxVYWU$u% z-P)u=AYHV7^q_$taPXk;KsElT-p81eQcUW!)IREr#Pp1`1ao{6x*Ih)gQX#&64mC^ z%=E0(;GZRU!2LuMi1_wsR4h;3z=`42tfPmOR;Q@g|U>_JYR2v;Zfn%+r*y@IE zCN?#3axC>(Nz{p0!dl%e<>6kn{g4htLqC?7CFzKGUGY;*leAdsR*58%uz>FB^tcR= zeQdStdK*2#W&bH0SoXh$>-Jv)BE8OF{QnYELSfM^{!`eL#8h>^zG@G3`}UAvscPT8 zYBxyY4w*?)6Vt}J#hbD^_e1yE0VJxSn{h&1{0REtq?087k62dT3<>iesJ3+a^iAm* zY(=1NxqCz9qfT!hlaW9DjUFg{>zGaS6@SwaW(^=8pbV%9UtQ-G++#6(F&Rbt2@m>9 zNBCkudSFdFa?gLmPHxsek068xSndC279)%{SgQO79_clB7!$MjNQQo@!^IP==|{xX zO3#6{=th+f_{fo?M#aUA8IzDOZk*9Le*A<9sj2DdnVDwu zq)AhzOr1J?`m9;m**Q6L=FFX&mp6a@f(45gfAGPFA1+<`$tRzFx^m@bpRHcKcI_8m ztY822*Bdr$+O%cMx8H8twtf4~ox67J-Meq!{{27wR8Vm6;GsiBMMsYwKmN-vCr=g^ zpE+~(?74FnE?m5L`SR7PB_-Fd|Ml0+o28|QrM+xHR5^zV5(ul4u1el*rkXjM}7z(kt07j>~^r*!EOh;9rA-e z04DN-za0Jmn6TR+KRNP4!iWnKc01VZV7G%E{)p=VfQkIzkGLKHn6M*#@y`YkfFw;V z`3LMU)oL4RLjW5YtN_^6u)`hx02|)OWQeChKn+YWAnb^sK{!MP*vQ}yfF1En48kicGGQ^X?om69M z5Dxx;M#x(UfF1GRkGx?=IQ&WJ2Z=~|VI)%6@m~g0CM5((Y*9gN0kBJ9hr0}>Ov)W7 z5GW%hYS|z@0Ct#&4?kM~S~*O_hac?J>R}>2Y7#%FU>QsqOo<)rs9+gPnH{3ak)Is- z!IZ(2*uf5W8BCcS@{=P!Ir4*v_%?_SfE^~{!w>n%ksnONhac>4M|=SC!yiaam`E+0 z2s=j#cJh)a@q>jBi6h+cDTiGSyBv1>iB&|zlPakI0GL!5*byH9(-Ed4++jz28R7$| zYEdFo8&OmuZA1kDz@$RKE}=tbN|=r?9pMhU9CkVEa@aZHQLUW#(ndr808AnV?1&G5 z=?K#i?yw_1@`edJ6##!Ih)4i(s9hjf)c_Cp!<2f!PYr-6g(-zQ(V&JvZx$GSh^It2 zN0^R?r$js@Oh=fG9%6L-Dv`eu1VeHFm>?kR@KFO0P6`wG!w!In{9)%=E0Mnv6`}+| z@dch}#6$i{P- z*n}ttiNcvyE=4?m99uII0Q`AlfInwS_`{BPb}#{yEoD%jG6K{`{?yd!BX1i3W~tPI zY~XJLe;fG2E`uE=pg!`p0n|tSHh}ub+Xhe{dD{TsZv%fD_}joA;Smo2f7oFnZ(aai zdMTlU;?O@rT?!6{1FssCUI~BLrLe;te(;w_)Nlbv++YGEYWM;qZZO>t4rG@C;ID)~ z?1%?|KkP&vi-1Aiwg4iREr3XCi#*`3M1xnN^h)@{E`=TL@Pog^MvZs?8{};ZutDCo z02`!ji#*`3gufF0O8CQ$cmVjr4m|lEY774%nF$>LOkNQXwQx|wqK3a3{;&gJ!XI|g zo1{JkmC4#7H~^*$Cj1cq02BTQ-xhWNO!&hNvJ&ZGB7Hg1ClU~si3}hkvI1bj-wpm$ zMA&U$2guY24}gjE5x*_$0GLQ0b~VBSV8S2a+rkcj34hp;I{%a6_iaF)Z*wO%`ok(# z0v1^Q%k&I$Ox=G9hy>lRQe^$#f$~X8$dbe-WyaIDCmGpZizCvA#MJm$T5-Z~ z{2%Uo@+o`8O-QRd)N%-FxNtA3S{Y_(?_O z(`V0L;7wGC)W%j;r*1vDUHt|Y!@i+|Lh0D3vC64QQ|D&QTe!4r)mq)AZ99#t_}l&+ zw+h~8^Nw5T%PE7` zod4{|%w9R2Cg~Q92~C(6AUyw~>58F`-`^h5I4*F)Lc7^BJbzs5S2lO|vKWd7&~oMe zr2}m%9gChUx!3RSx`k)E9v$22cR9QDM|RZRirjB9Hunfi?)Y)@(-Vg|4Kls^dGRQj z^ZMHdOZ-z6k;hMHKG>>V`zYOe`Sd<>+U?mf^@UB(;jS^Cbn86w*{9d%fB0>ks~wc% zQuZA?Bf0tOwbdKkG+V(?;eeB-ve(7@f;icfezFalA{#R<_ zt62qG1_cEEr%8TNLSh`BR1;(2Z(eeL%^CT+IbG&AYaEc7ZrirE-TLBgpLh85Sr>U; zO8D)YZQKGUH!kk|>)7Z6DfXq^cX!yFe?>d}*v_-L{hQha@4Rrf$%ieTPs#hLLAO(z zcV7MUQpU@!yRSAczO(h(o{wj?PYzr%ec$p~?)QV2uhmqfe6an`2U2;H7mMbcS0}|M zg&QWWdo^VJ%)TEzT5MX@aLBGj8AE;%Cf*(F^j^#L(bIMg9d^+BtjDUxqaSo^x9!y7 z@;Rg3oTvEze6RPVJ=-o%S>)i{XSCq3I;G$IR@(|DJN^F7yWM`g*mY~x=nvEwB3cicKRdhJK08PgqAcei)kpB6vz@WxJ0 zx;dMg^c!)q)kp8I^xAiB>xf@9DYJE+Qzy?|=JsjGVxO&h-yPqA{dDM~Hg022*qx92 zU}Kx-qc=|v@yxzGa^%R|d*7Mol-jgwe|cVu#Io7_^4cBV{PCHGX%iIQ10LnP7to-K zOr5)aaQV@sQ7c=o9$-AuW<^Trleks(rkMWU{eq^m(_h6(6tjirkda;9lwt zpQ(+t0L|~ky+Rt*$I(N@rIq>j2OZ1M)tlC0 zdG`4!zqwZY!JahNzPj!cI%U_7B`KfmtD7&|6|u44(CE+o4z3l zzq0SW8>iil@@XCUVuJfJkCg#|vrpLlIBKh``1*mDgT4N!=cX9D{oO9j3>%K;D@;cN zy<;1kzV!Ue-XHU)#MJj3-Ta7T?YSu#?tZUaKOc8uUF+wSrC%`eV-}!tJO1$ceK9WDeU5a#M!`uR5D=t!-^1C{C>Ti<#1Po_o02dHJ7tCrctW?ATq> z_~mS$L(?y8*m8R87qLz1OkS3)$~^JWWL5JviRvvk=RVsx`SF10qF;M__S}B!FJ)`; z`b|62!vEZ$nXSIC0vmpa|667+KpkLLha0cjfbx3*T?zBich2aCw?|y__-U4$Diw8vAo`@(`z4l zuzNRqcMdBU=~_NleI>MgS$gh~()Z#=ooHp#f4tG|*u8!IRL-CHu1!xKpW9=WaqgdM zqUz{Y?e0}i`;AL(y?!IU{bSbcfEkPSJZNI*b+OO3hW6TWS!$e#2b;Zaw)~-M-;_FDG_TwETPdxx9Yau1Cj4 zWgQFclDu8HYM+DCk*r&PF4g(I`0`Qb`mMeWuXxb6Q_G%;_TJ4#PdV63{&l;kU5y%7 zq`ulxHnw%)t!07xujd?{_SLCgv%YhyS|Gi5#k26sVJQdZv>B3U^XVp|;>(kFeU^2- zv}MMfLTy-DrXXnz=%=sC>jw|z%P z-?OEwyH)IIli#dC^vdOHV&9*+ykgmg8GXmBnAfXva_8%x#C~+gadsnPlMeHGIGk&J zvuN$rKR#Z*Z%EdcxsMI;8Esos73Qq`IOt&WvijS9iT3ECyAg6>v0JzO6Yf1I8*;1a zNcXrqZm%+Zr{BGx8a(p)?gXY9sT@$!xSx90pLYXqZTe=NQ$)(8;)vtV20R*2wDX7L zdo6t;66>`2#eembR_BYt=FCkFe)ooU%YjWnjShuUFpitv9>qFD= zqz3bIgXetzpYV zo4C5tt*^Rj!u`M7^m7{AciZAlpI^UOu_fn{aaiBd3cuM)UD}5}>E0n}X@%O!zv4HW zNnOT2+HaJ6@!Ld={I}#sYOmeD?H;%_PNMDd#Jg2cpym@(L>ragJmII7FP4RE{b1+E zXRbU-5A3>T>}|XKKh62%N892Fn`g=99PhUMowASpy#=8sGzVpSa{t*kdywB>EEZDj0+@q<}Tb=yoc5JUR z%hzR{9MEyRUys$V)O+VVys+ta@4G^HBcFzaF8jE6|F{h?LsmGg zjqkAWgx95O%k_ghe)ZI~TYs0Ck48=J)?tYat9+T>^&Qy=rysJfySvp1aVl8WcEXVx z{TmmAT%M~ax_j(tJwTN$fmw};UoPFfY>a$HLiytpf2XY*6#Xn@#{2KQ{H(Cm!hR3^vpYXK zp8wIc@3F#be-3RjAYg9eM)gx~+h6E-Ytz~Aaa$8&H_W{_uk@z_uL^G@7_#?&HaEYb zymDIB=&;eYql0o@p4!&B_Y>K-fs;?X==rd>>?n!v0mGWfns3>U z%LfF-#B~|+)8a=%!oPTVV%zMA^=~$g<(e|S;56nCEUU(4{*S>6O?$wsU z6o=&8KbOURuxMy%P`Y7<`h%FW3qt>}Id*MxgT2Ld-uoeB%m&BR8%^e2&1UVkyS%Yv ztzGA_UO}FRY+4Uv3l5aqxvp70SotcoWy`*Mn_pf3Wdp^7xoeZ|8{Kj)?!Nr0uD4<3 z$v@Xd&H5!mI?7S|ET`_*hj!Ymd8hbh!*>=`uJE7Re{$W>(SVd?7zGz3=%$iY;NI?rB?9-i-V1 zf@;nezKtVO{w_M3b}0Os{^U;`d-ghduhylIUMfkn*-kAd{_b>l!k>gpXOvO(#T{@qec1Th*zQuywflJo5 zIq+TT_d8O1CU@NwVwjS;bpPo|>y8{fI4JRMr9wC3kA*=k>t~)l5>^~~=?Cu)+Msq8a#&ZL2TW7e83FFD^ePEV*>0 z*6FXs=Y}Wjd-_Ftw`+a+d_8yB#&=7{#N0b`uWQl8il~aDG+FoRU(Jx7>-Xy^x6U)B|LXdA>y>*R zY{}ShZdmB!dBY}d?oe{`%Vs4nH*X7G`Rt=R3lE)PCk#Gr9mbxmbnDW1$_LWeteDZ} zI{^+KS1cHH=K60F>NxG2@MxZE+*;co%MgYUlij*}zZDlgPOI4<(Urq~a+oQQ17!WLcj z=sjl0XaA47Hvy;W{r`UVXz$HtW1Giqo^A6yZ9~W$k|=YM%u|w?kc1@7rZh=NQpubU zGN-7JN+ltcN^(BC@3-Ht|M&Sl=lq}Noa>zHtm|6VUiTXB`}2OkJ}i6Pw`Tq~Nck(@el66;_Dc>kOQZ|gZ7z%}{OgW*$7+19kx}1^8@78k z4XdS9b0VcNH8X-bCkk&A-(s*R34WNOYZ#JJNl~{FGO)!qh zc4(vhHS+HtQ2v%D;W{`7?wqgWaK}rR>JYwmok65WwgtUjekJ$c$Zgz2^5@+`?|!unPI;|ZaG zSnr1+2?qVUYI(S@g7WK~!?|fEMc2N#tcZOUi&nXytbVBg)!(<(J9+79{e0B+A`PzK zzKG$>qu$4#4_e+%=FhXY=Gb~atf}k%YetU!Dhz`&W~bslcC0&I=|PY#dB13pX#6tV zq>c?>4--XUt{)iay(xDly1&(c&2ePbh|9C7QfsNoT;dEx>rV8;O{<-y)iIu)Q54&s zz3Gp0-W;m=c4dFUm2cMW?H0U;53QkI?&&~&o0)$U@O3n=XL}M+@QkUGV8{y?Te({S0N>7G(vi@jOa$sJiQsyNT2wt1{n4dsfR`!wSi-n)5_e8;Ut~-?F_t za$|?uhLusf*}7qoa+TuXmwSH6Kb)%`)Q(+KxLO+2Fj{6$Jl*!uNHkN+E|@sp^74Fm znVTI|(0VJcPw=%r+!@E-9s_nKQ{VJCZC7@%TB5AM*n2{EBUN>TJzZY`-gkG(n#CKWu-Va zX9N}ul~o@cmdzjDdd1TuYn(aC-B|KmT|rM;7>`07VlPMIiwM2D%_Xs#-cFV0%zRU_ zRSZ)Gcw#O*EOS*ve89Zk_cP0$P-)oy#X|*asFmE^=@am1dvA14N^&sCjrUkrru3gN_4~NCy3(0md2G^|Uwn4- ziec0FffwcP6i_ylb5|vry6c>$-kmttGIlR{~;=BfZv*ke+U!<8?A z`>qHXI*6XW=y0XabVPQEwmq(D?Z61Okbyt{<$Ky|m5v*uyG7A`jGjF~30e>L)&{oh zTMOOO^90TOTzhJC!iRO*_mhVCW9gCY$NS9dI!KLCYy1u;)ce-#_6%g#-(?h@+5EG! zh4nq-MMf9xt5j2rp<`{Pm*Rfy>DXQ=mt5NXnVd&g1&$vWkv-cRg(Pg8y}#t=*7ewE z@=0tA%lpxHrsk0<0=4IQ#h*1f2_$?oWm~Fc5g%T!i#qPCd9}P+>cFUtN4LZAsJyMO zIU6gMFz9W|@|XwjH2IK|S6Xs58{APZ*^pEx*u-@_30AthOS0mG#Hz*Cvs-s=4Eih( z2d?`Zm@#7tUABKW7A}1`{bG}Fb*P2d=n7ND#aJ6%g%h-CUZ@>HKi)Os2B~!;kRT#fw$y;exggeYTI?(ZD=kRJwQa7>?)>Klzkr zW${sI9JRg#tMSJ5SPka~!jp}+2N9-ET}_WI*7c>{S?lkZPNq!^)yfid+m?&I#SOf! zm}E9ax-HJVq-~T+Fnmp#Nn*Vxy#K>#?#uW0kDOQ9_A@d2`3YOYH!%T6kH*Foe;0S_ zCeNfI?p>8ow;%WLdbjGN%;D{0<;*O?wi~*W+SMH~;G^HF_Tphi!sAg9Ie+(LFJWAw z_o{Z9l8}b3%lympzEsaM{W_1-H{In|KqsFgenv{&*q?SXc51fd@XFph$CT1ocV5<% z_!$!NNmzHIbkEvhO5|a)T&c3@Cu%xfwgGmTKc?Q;7-S+?7IS=E)emc#9ol7*B)EQB z5c2TB3RNG8H|#04X(y6$*l!q){G4HwepqpOMrup@g|Q~5qLzka&GWJ$zx+u*A-r6s5EPazDBrF`Yi=1(VDc6isn=HI&eSm1+H-Qi$` zN#wx$JA)$^-1U=g5-!G6TbJKZebgPNT`2crC&rP*!z*MV+1F%_vX8v;#%Uj(=c1(o znM0EPx8Gc}Op2Rm5S37H-l;hpzD1yLIMzCg`9A8#VGFmP=lKJRYt9dFUJ}465zBn0 z!ZLfQ&u_o&xleT5_`t+%CNiro?Q}y=#-~_jj`rbzf?)8$Eg1Wi^j$*tk!mZ2@?}c) z_>0P9Qh_IT+P4VT6OyH-?!NCY$8>MGpt{jdi$XhXVf-ju2PebFG^1Dzt?>qPvq>2O<&yhe9O?zb?PMVLzUe9-}WedHCRH8 zol-tY`fl7_Ge3Kg!Scv`qS(YOX{D5;?v>|H!)iT7y7>>`Jv&>Q-}IDw*?hiq_dEPP zdQve(^hRiBN|x=D$9L5PvR`uvDaF3kmAde5qvrmtCtd*-*Aa#fHyU)MpW?TFnJ_s~ zG_y)=;Eg_iS|GPX^Wf9kk&9dn1s%on!Q_hu_wU{})^y;zE4_R1kso?XWy~H0s|6`_ zu3_O6#b9^B+Q*}ly)y51em=U5BhhYKeq2DRQ{N?jNefTj^mkXS4v%_jrGA?hV?LCi zwbyd^H6zh8?Ydxu`eXC^wNKw|wZ2-H+++UcJFB~^HFc_2|G&RMrcyI4s?F!GZ(B_s1Y;;EI@_R8e zqxQv|;vL^5TJ-bgaXqYWHWEGI$w;w=>3!kDc@G|5Yx!2&{O-Zp2YcRuH`j1e4h)$r zM=h{bOQ|_}Gh?iwM~mZG*>1=C;znQ2Uf(Hgr%$<5eS13P`S)x|{}RR6@RZi;hR$*? zPFWl)S{%J=xRd?Ej}4J^ez%l`PUoXWWiITfR6g5{#OXV8n^Ly0aJU?4S&dN5OfEkB z#`edBiu#nE2Eo=#zU{>>%60^Q55uO9ZL1qbKXMv`+lB*=oPHH&(xP8;((3+X{p;2o zpOa^kodvp!N`n=Uo255rc7}y?^pV?5ZY`VO_UdI3Qazq6knG(mGVxDGwn}|Cke6*VEL=Z( zpmnbF#;#X8z20`5rF_+!9XjSoD?iiEvMJhK_ryCy^1er-@-F7dM2|H)}Fk z#wk-jZaD6_Y3J4!&r&Ij7rw@GkTnRu{v%6z;~QI_Rlqg(Jz_Qwp0jrzHkALVFgSdC z+v3-WEdww8-8c&mTWq!@Ub=bvZc47ZS>Q;P<}pv5%RPwqj$6V^Ev+&bjqXN_3;3%Y z_>vHY(r}))+n^4X-Scc2Zbci81})yOA3AJ~%j5}0I2*nyyF2>&Hdhj+OjXOJ$UmMk zuAfVKt{V3>T-C0xaz|%obj<}s91;tKoU!f%fi2uP}+L%kA1JeYdPd{D)Fs)p{E|ZFtzknyBT@ z_)Xt*iF7|G*wa$S$DZD{_n#XGBK7K~|Z?#kyo4OCJ!HZ4veJ5@^s z97o=!YN~&rVCv33e|uASF|PUIiL!{{$vC^sE{CgpO)w7WLoBH88~ddbd~T9nm#TXZ zD9iJ)CTFqhwGBnSKEl2$Q=5gvJrX&j`)`%m86ix1D54!iC8m*eJI#vLCkO>W&NvQn zJ~o>V{tgdF)_EIYKRtLAJbbZyKYx;m5AghW5hOPjfpkpzxzpgy*H5ReBBkaMJwDtT z_A;JgICT14qr|&{@TrZohseyZ&lsym`nr-KWr(!VgxB*4P9@esrk@|J?47E#l>FRP za;@#KszyPAp}iL+W@JX|CL5Z?KD_Zd%U4DF>B{FZIq#E&id;7N+sz=HRC{ujDFG)N z1@RS_jtwl2y3MS+e&YRI-4`zRx$Srt@_r&eB`wl}(6EZhZGrOqX3+ ztLk|G*Mmq-Z~ly_1|tEHZ|C?b;xsuB-G_uQXd^bl@JrXGv8_Y1W6^KyjLP$=&)>v3 zUwruv@xJ{P@j~Mbn~kQeb5{dYpQ+byzn2noVW{b@KAGRqy;UIDFOb)ZV`o%vdN8UL z*Bs-l(*FLFVU|Kqi<^Y*`@sgjqy}-_pqxdYF3OLJT^&i%T4%5-4;c?R^<3#1FMY4_ zoe#6!n@dnW59#l;KkD>q%&4+*jb#30NT0^0Y^E-YJ+Gg{Zhy6P-g*yeBf(_Ljp$rz zMbbCs+5X6b^O%VRO!H;#sZTueXA>hEZmh~yQfxXF4+Ihvoyut3>LoW{eKFP-kvt$E zPx{>M^=)E{-&f`K;Q$g@qAZc?arZ|a%!T88h)PLLW)XK~pZDR6JJ)~Sv3!D$+F+d3pzr3$gR#txYs49(((1;c@V%uk-h~CPoD!xE^$u{SJ#Pza#$A0} zYTCP%bUM2uQyck!+F9GL+KH}x|K%(<;F<*2_p6}dxY2Vb=+2_sfOClMwQP~a*opp;H z6}N_Oes~9E5PP4_TUf4+7bL;cA5kb?l&rB1!l)1kzui^XHKF=Ze zvBQWv+an%}HpuoS`)KKif4RDUy*VIpuIzO`rE7`H!t!2H+vh$bu5>MnOEsLmJlU@| zo?o#>GFo_Cxz3LH!Er+3#o{0>=Z2B(+RY>4KLzgOpiW<=VHlnHdi`?m%zbhQm*B1_ z9DmQy#(1Kl=*n$v=yNdE#%Fcqqft`z?ycvD3)zJ?*fO`z&(ypoWNZza9>4fg##Z6g zE+0he5DI(b>bi zsOs)Xyd<4`vQQuKP1yb9h}KW04O`+noH#?R9ra3dz->EhVOL({#Y;6CrOu1(WoKSV zDcro^W4!0JFv4$Y7on5ouJf}gXNKo8ry_*%qq3^G1@gO8b|3qimGljo$l`kEr?;R5fM)qTMy*Bs)?mH~wHDmkg7>R2R zPqt2sKY!UMPTR`#;MkC}3n}>3%ye^onpd$nNn*h(v#ASzUEt^t}R8|ywSy<5-^r# zIA&pb%Q`rMRff=Z-=in{)0u?(lQPv*uNuDU;h& zJ?#3j*wt*rj6Cu2Nruz?N!xEPS3)d;xZjZv5V|S^eNrMkOh2V=)tJzi*q2}SrX@#F{JuXN z+}6CBDY+Z7dFAUDQfT6tl9I|zj?#PIx|c6R&m<~c4IGx)t$CTGkuLjlmfOFmL7WnJ z`E#K}|DzV6jotF5&QZ+_#mlGsroRbV-u}RYL#o|+pw!6uQ}j(L!6nnunV=6?S&v-hgJzeTzAfkf38bNI=^8z#Gvcik7>Uv+d=@gx+t zEW9Y4I_t8Odi&sl&#enL`LvsNK37@IUD2w|%JQ;YR&CPcZJoH!@Ht_p_sf&-@a1~5 zVzzzby|Ml#r53!$Im*YZdVX%^<|y68Q}Rw>GOZ-U;u2xASLUS?)d-n<*Ih^->60^_ z#FcKn#eIq@ykmnL?@0s0xCg7@luLsNytMV23)q5**}ymbBh8U|6$+Xbris=@qxBOV zEO&w~@@nIse7I9wGcalCNc6Wwp3!%w-EQ*T6dBE*LouDYSB;b_Oq2%2mGS?sKq_sLaYh?XA^twgj?ji3R zEsCN879m$9G72tV_M2>SoLdW-+qdrj)<^v^Q=6RHk+=M%Zf%qc;# zl}5#mB(_R!pRhYA{3fekx^SUbb-hJx->o1sjK_(C5~8}@_j;PQwkcf6@wV&S`PrqJ zQS?PiaQ<+iTbFHX$4Bv#JBEx)5}Erqq=Ms?4n4iZ&}J4v6%+b&P>f4mGV9&zV>PO( zAMYn{R!7QdzKoCvuy}m=Z5E1aMR3tuN9#q##po{;D~=W#kv^=2l$?NQGu-I+oA%#i zUB%Q_H8O(NtXm(RkH4b8x%bj>bnlLz%$=3E@gLNCB80}JsjPj?FFaK3a!q^4o1$_C zv2y8Sw=HPLFi%hC61or0EyPEtp6b9NXvPlQggqC!S6Ci}BeGJWDbmfWmoK07S80iI za~nmhJJxNRt?6YHC8cs)&lScGgpZIn>-FtY{&KiELx3SOw~`B*a)_E@(2rAEJQo(3ESd3i z)JPTggldvNYu`!SD^1AEe|+@w7p2R1>`Fpm)5cmu$lG1*C$7E>X?-72D|^H9?!*bT zLiTH=YZ~KL3YFg_Nb^5d&Wq(Af1yuIl(4L}D7cH@(AXT3{08xnL(9bITY0Bn zb0nSK#hiC=8{@Xm+%Y^Jy_am-eF=jRDSdV8&{4iy0oxWlkGpji@t=JEj_g_>v)r(b z{GM|J|M|JhKebh`g%In|98gDQ@Q@JP{ZmuF5~)_yB;NPlWF}#5&M~@W!o3Y z9lL9@=3cHpu8DOwSf#!qkyuI&kBHBGA zUpDzg?H3mJz5LW7Wmi>Q$3aiB^rflCOdkb;)SI(nSRcNj)#;UyzH6>|N5Wig zc+UkP;Ya(w-*G46mNiYiPtM)sdOU2L$$p$MxV2)&|6C-Q5C0>4RePw`Omo|}ZBx7h zTUR@pmF@($it~%$WHQ^$5|wxMuyr1}`*zb^EspQ6?{D7r=FXlUvHPvmeFjZA-M*FR?mGo47Wcy zX_m)#D}6$dFLtXO4!YeuH#)CyHoKW&EjAYKC^{E25S4vCXOV4Ncj|P=zQCLd+&f@!+Hw1HQv17-{n5AaHN#KJxs69+bHeygdsOeA@?2+=nzc_dxr9H- zaBm?|e^D+dB|2^1R$?H>V%J!Y2F-R(`T?U?`@m&O{i)ltcV6ds-1M!!cJ%dFmkt4Y z>0CTg?qjGS_xTPkp=aO5r#Ulj)!L8Q70adE+3xKfi`;XDzg6+_Aq!5UIj(W}?N}qx zQ^N(PS`=n)n`K~yo;s=p%ba`^va#3lpk=WDZsEn$ka75}YYESJ`L-Hh4~JB73hedX zW!>%+CM$=3r!6yIuvGJu``X9RZEMHM&RK6A*s|+q>WO6RJ;e@3?P$e-M@W2I$p{PA zTv73`7;c_^&kY$kMHt+IZk;hWrQs~U#izdqbnzx=2(vOu&x@zU^s zf5SD;KrId){f@gz@vS9V9~rpTPdoT@ z*T{7U9jQ%AeYilHn8?ZKiY@#2hJX5)RY+J~`5~)9W+ko{KQ^8bZOe zkx?d;x7mnLl19=IZyeAZy0H{%dt-g!9A-x;C(~|aW{d658?%iU&hAov^S*1YFxQZu zcPgA&H7Ux$7}Y1+Fa=?VswRZ6j}FRXbyEv(8aMVMS1`GXP4M_s9srrV-mtW zx@j#;G>=_t^whD3RRQL=ydS$AcOG0x@h@82Wy^Gnv&7s@Fl2h&`qsT8?ZM%1Tz>4^ z?`yi_;K_oqY)>=`W$zb{r`qKRrX3%veXglI%1$62W(~EpA8Eu)osg0JL_CrIDd@E0 zvxIXN>G=$}gx+n6i;=pu8`Ld*c=O?YsRRKxk@@p4hL`oU_TS*;iMBJ=_Dolwd(M6K zwfekN+?VQ}Tc7V}^!wi<)Usx^#kB~|eC6wBz~2uIb5h-@u-)?cD8t}=U-|p3ck7r3 z_0@87Lyh^zVo2V0k}box#LqRfar#PBY_fed{?#*C)1acia9;)Ine@yev)3M7aUH}v zxXH@$Xa=FvqKR>eY0Bfp65`>Xn!n!q;gR~W?Nd-;?dRh^mKfKq$vdCp#p8DC9K{LAH6{F~FBPR-p3o#-`YycXZT-|dadm+gjQhiwKZ(xc}e zo>v-*U7J6s_OyRQ)loM+rvAsG=DrMu&ewHGuRh({ZJSWn-C1@niTS{MuJ$oISu#su zgNZ==2Wk^pL$vGx!!x;pDb1`D@p~QfD_0x7aJoF(r?wd4<^SUtZR&wO+%-gJOKk`Nv-9~WFj%~G=y#8uj3yBPOx%-?Yf~@T8W|xqE z><(4WK7~ERck{4VRN?WM>D>Ko-$X>*_8-5MF=V47DKkZMxKn)KQ}TijTa}+{+`Hg# z1m965Bes~J353@(;%4+F;i{S`H&5S=g>#o)&x;-!o_koLF;{Z?g0C|{C7o3>cfRWZ zc20rh;*cemLYUgi7tr+aCHobUfLX@=vMmYfOS!_-ysp`5ta`%UKsb$x5&V9~)XF_vy`tN*q0J_ci z@9c)~f_G}@FX;q$?fvx?18L|`z&~;~MS?=_c*EG*&cw>Y(Q><)3`HM$9DrAi=*4EX zzq)du7s0DFGL!=cD8I^0&HhU{d|lz+@7utI++p?z@b{y?6%SpmK<@=1QIYfoygW}| z1Vqz&KKg6ARGKA|mYj|q9lp;sIMP9OvNz=rU}F}%T5?!kTm&oO?qDMbuXv+*Sn)gp z>?}g|4m7qOOMQCX?GG3|eN4opDR^m9BUAc&R+KaOIfB#Et(55(?V{bS-FOZ%j{AIR zy2RnsToM9}M(>NT(!Euet;}+26l-s2Cb*q;xpxFi}sHWO%70Q(8#{rSf#B zU+~k%`x=p~CVsB=9<%mdT<{Q@!YMeQGM9A92j&!3gLv!1f&3yOT?=$QRwa_|W zc2JU)9mRgNJeN8;)XC}TMH6Z5=s@47NmDbT(UA6AjM)!_+2|im&SA#GYmEYAlJJTA zEM9tR^RN+kG4M{By`u^F(@K}-^h}$`kL7;-$nZ@X@?s>axEM~VrY1=#Gc}uuh+<*6 zRGtn0Fia8M>usx;SCC4!rr9v>_Og^Y5NfT5M-m8l6eHu^x?IEevjfznl@8T=ZJpS( z)C?R4D~998$A<>Ko~GhYhaU>bi?S$Mm{>9Kuru;uPz($d5v0g&A1gUu?@f~MS|aMx za;JLU(G>Q~ltYX}1d&)%m#TUo+}2=lu$6UR_+}kb6LZ|LqX)TO&U8wMi!w+iB_$!Q zmgXot9T^ZVDNPnpQbH)Hsp2%RmK{-4Q(@5HV8e1!L{XwzN_eeLOZU{ymuEm+A9JbJ)>cGc z#{g+`q>KAjO{NwRO(GpmIl^LOY>c9ap~dp@liBuqTFXBk>E%CPk|wUEgi%{sZd0}} zvcR{tx1;v@*irSAnf2vGm=%nSj1YIPA2HBVVKKN{b6Bsntqpmp?2zoO>xXo#jcr++ z9LzYiRGD<24)zJ`_Oy^b5MgI{ChxGo-p}+am>O?l zxKW#~E-l6+=j&xA@%7^ao$1*Qv0JrS+BLPw%4Z64h26K<3VmJf(SG^jzGThy6zHi2 zsr=@}1KGV^HVW>JcET^G?};xhwJP?gq^ux43|LhFn({8lL=7Zq0n&XB)yRa9>;?N@0%UMNSnol# zI6yj|ASA6I9aFH%G$3jeFhLKG9)$ET*!=|HM;bz54Y>FOVbTNKoQLN73N|K!JfA`+ z9z%0WgVcRN%KN}#;$Ss-2>B8qArxd`1kE-I)-?j@v;sy#K}NoSzpG%wOt9%Ekor}S zd=gk$0I=5$NRbB_TmtE+0mcRaO?W`rdyw@Tz@UIN?+?Jm0gzTJgjxx#_z7&72_f1IlBfYx4FXyzAm>rADgtZ;Z?9r7 zAh+FMl~4#X2BiEL(0c|ja{_SW36i}F@_7k1*#;ZVGtd0Xa?sa^C~K4g*^5g6)q1w)X*c-2p{(yO#j=J;6#8z>zgzz8g?U zm;D)#p%&nS2)L04i`)Wi?FC7n0eo%)94`T4@&HpyU{?!3={~@8AE1H*?EMweKqy!} z5-fB8kf26?aU4?@=R1XyMXBrgs2a)*?639RV^Y0U^yUmD<&15lF*so@0Rw+1lx5^!Jv zcG(ArItJ=tk4AP zASDNAjwP@`JIKHX>_-747=c77bO}P!PlNSefGk?U%4D!(DO@%cLWu?$ML@Oczyf5j z%`jNz1%y2mnllM(tqS%pf$FJ%WQV}cA0gbKAjN5Do_w$v8m#09GPDQmI6`=9A*@KK zHU*Hv3bu^^9OQv)SV2~;Ah(ZD^&zk-1)66TtR7Bp0tj&dSZWCDmjWSZ1GITU^V-ub z0pXbiY#<>7*Fn-pA&e%_M0FtFEg-*kkZdR*vJ51~4p=M)DGq_%ya0h6Ajuj)2o1u# z1?(IK_DKfIBLEp>uw_174?p8k zIasa?Y~&50E&#jHAnaZsi%^h05<-jui`D@`XTer0fR{E1c`C@673}a4tm6qN9|k*$ z0%}db-t2&26jFpD0{Hd;Bzgl;X?z>>*;gfPIv3Rq?saJmF&%>%4CfE809 zO|$|&R{$q8u!k~W+XoQd3Ms4ua5)0$s|L`9hE$OPm^TJwi9ssLhg9PU$Q%K?lmNn& zAQdcw-HjmCw9``?q!(pKha!LzBS7hONGmFkvT6X)ZGinUK-+alImVC@9l%PefYm|3 zu_vG_0x*~dDQ6JuWekYf0(gjkbXWoym;oFZLyD}0bR-6L_X0G11l-O-8la=T7EoCL zc-jK#YZ>tU0+4bYQi3v|?gb#w3vlBIXqX0+EkO!tgS43hX_6hVs{)9zhcq?_sn{D* zun43DG^AuzNbS>rDl(uD2{;RbG>`|W#T!s43aQ{Iga{A2bVGHSLD~nQ=>|YD4?zN{ z(0rL7^IW<`psHpNk}j~iDKwEC$cJu2E0BH%T+$dWg@&r7!=(vO-6TLjJA^$0kkSE7 zo(v&Hg7g@`szhkY!ypp|kfaqzcL1u92_dlt`)2|&a1hpeP%Q?K&OHc8J4nY2tkMRE zx(}Ej(Zd5FJpy*m1pMG36t;ki`}AMb05|E-d_7=eW{~FqgrXaon+c@838cIkvOf;2 zMuL#H0TSr4FotHk2iB#5bXox;CLkkoz~5o8VK&&b3#6U{l1~CFlK^`U04YSe3_v;< zz*sw=i3w2l5MO@rU5STAlGg{mO0qs2%rED_Ur`op&@krfS-d9_AHR^0N}y~ zq}2wYMuHVP!G?z*M4Lep$$+XhKq~^|+yz#p+X{ujATS^|3$O|e!i)nc_X2uz05e&D zBN|Bd2*~F?*u)Z0+7HO4LD-W(rhO3dLx8$eKub2*yA|x13>G1Q#mxZ^j3CDjKyDx4 zD+kb$3${N9*tP=fS_6tw!0yR_eG{+}8gOI-nC}Ku9s$`O1{pE}K8S!D7O==6z?LmY zIv4P{8F1VVh)DrVb%0$h0i_mz={`UO7VO;%X}}1qZUz>z10-Mp;|NF@Xh4`LNZ*D5 z{s4n?U<%0X1k|R1B_03*34qQ`fK>wE?jhLK2+)jz6x0goAqOOn1&cj^G=T)mw9}?Jy(-f?l0%?;OQYIGCh8^G@0e0U6w(kdPT0mMbhV;@4ShWR|J%H5H z1L*GubRr zyEsU1U62MbfU`6}X)mM~6G#n=kP0#&1@-`Tts(WLLK@Bm%svEUF#(=7Lu$+TS3e!} zz9=Ky{e6OzRkYy2!G*u4e{J^;cJ~hUfc|0WPZj=n-tbqsZ$R{aEce?N`d7JefIr3d zS3k4=t;Zz@djBS@@yztDZ+?BIUlT?DfkdI;_d+z}(O(nx9}~m>#f1C6IYCbU|8)9C zJpSs$7@FlD<N5MUtN%NuFf_sjoC3xP_-jdz_dkw{2n+vp z8~-f#_xZan^y5)L3oHVMU_vlMS6^fVH$o60jF3RcAmk8KggQbOp^q>@m?JC^cF>oz zD*}45M))HF5kZJBL?R*;k%h=c6e5ZcXA$Lyi-;;j9ikr5f@ni@BDxSGh$+M@;uYd8 zViB>7SOc2ikjzLDk`u{`qKN z<$!WQxuQH!ey9LcASwoxj7mjipmINSIvbsfE<%^0FQco_b?DpZ zE_5$?2tAITLcc;Uqd%k9(CcU%hJYbqcrpAK35*m*0b__U!I)tzF?JYd%npnXCIFL& zNycPj3NU9e<(SKuT1*qB4bz3`#|&V`Ff*8W%sOTRgT@lDOj!6^56g|^$4X&kuvDxA z)&;u*>xYfOCS!B41=vFDNo+CpBDNA+g{{N3V0*B=*a7Sib__d-ox`qR*RVJSW(GC} zZU$inF$OsXDuX@)jlrD3lEH?-k-?e4jlqv0mLZWLl_8zsEJGkI@O87GXB!fE2na8@`woCD4o=YsRX1>quavAAqp4(=?j7*~&L z#C70$aQ(Oe+z4(GH-nqUE#OvhSUd^Oi5J0(;id30cvZY1o`!e8JK|mOJMbR(0DKre z6@MCEjIY2~;hXR+_zrw8eiHu-KZAdZU&MdLf5T%5ID#NSj37afBTxzI1QUWK!G>T* za3;7CJP3h=FhUF=osdPyC7dRd6D|{~2wj9HgjvEoVUh5euu51bkQs#;MHrPCwHfsp zEg4-Hy%>EM{TV|TqZs2D6B&~k(;2fF3mA(SPcjxWUS_OhtY>UuY-1c?e8TvOagK3; zahY+25zWNL#L2|ZB*rAeq`+jzWX|NkrUs_lOdU+U zOan~Mm}Z#XGJR%RW5N-ch-^d&B9*92q!HbS9z-u<5HW%nLrf)R5%Y@&J&l3tHd?SGm9|GF)J|ZGaEA7F*`E{Fvl_{Gp93WFlRI8 zFqbn|GB+?cF?TWdF!wW$Fpn`$GQVP;V_soiXWn2YuyC^ovWT!qu~1pmS#(*fSX@|K zS$41lvV^fjvBa}vu;j87vYckAWocl!&Cn-Hn^m9Hkkx@TfHi_OmNkwwoi&3spS6JXENeMy1#2~HEo&od8*2~i9P2Xc z3hO#6mW_#xlTC_EflZsujLn?QmCb|Ahb@3Dge{pZl`V(uG+QZK1=~foO12KRPPQSo zake?OMYhjuYi!Kyg6zWVV(c>Pa_q|Nn(Q=ob9P5|5B4zj2=-X^c=lZOBKB(bI`(?@ z+w3juZS4K*L+n%R>+Co(GntnxMOGkdl1<2FWJ|Ig*@e7=>`x9L2a)5*$>a=jHaVYM zKt4+@CRdXi$sOb|@)PnDd7ivLULk)YZ;<&pL^!A%svNo;W*jygt{j0JAsk^GQ5-oO zCpn5aN;zsd8aSFbdO5~8W;y0Ku$)YsY@FPj!kiMEGMsXpnwO7h}x;!R4mOM5*&OH7+VLUNB@jQt<={&hSr+LouT;!?ZspGlL)5g=qGsH8_ z^Mq%L=M~R9&u5->9!_3edNeldOtek#8*zb3yfKaJm<-;Upz-<98wKaf9yKaoF` zKcD|B|3&^5{!acO{&D^%{EPgn`~(5A0Iz_QfSiDWfU1DLfSG`mfSrJ|K!iZDK(;`R zz)68}feL|ofd+vdff<1nfo}o?L4H9IK`}vfL2W@pL7JeIprhapK_9^Y!7#xn!8pNq z!3@DH!9u~4g2jRrf)@qr1RDf91;+&^1!n|53w{$s3gLv9gvdhNLJ~r9LR2ArAxj|} zAv>WUp)jE=pMbiWG^Iid2i#iPVd&_Gnh08yAW9PD7Znke z5S0^E7S$HD615Zc5%m|15RDQ|6ipY+5X~1oD_SgCF4`d4BswWNBl=2oL3C9VEk+Py z5|a{>5u=K!im8j4i8+Wlin)sUhy{wJisgzGid__|5~~$!5$hD|5gQYGCN?X!D7GT@ zO$;l}B+f0)D=s6hFHRFT5w{Wd5cd}k6ps~;7f%#V7e6gtDqbyKFWxBLDc&pIFFr2* zMEsffl=x@yRq-`(qy$caEWs-wC7~>#FJU5KC1EEKA(1SRBT*nxBym=vSfWy*R-#Fw zUt&PwiNuV=s>C-5tR#~pNs?1iN>WBrT~b%lP|`}$QPNe?PclFS+)}(!>Qb6gHd2mK&Qcyyfl@(I5mGTyiBg49r=`wH zU6iVps*}1c)h5*`H6%4FwJ3#_#z`|vlco8kg{4KLm8JEi4W%um9i-i)cSw6l`%6bj zCrcMe7fUxvH%Yfik4Zm~o|K-FUXWguM$2Gj*knXx#AFO*%w=}S_{jvwgvdn6q{?K- zQz_FT(;+h^GcGeL^Hyd-W<>@mOO_Rsm5`;%+Q~Z0ddT|82FeD>M#!eh zX31vD7RjEKy)D})+bP>G`%HFLc3yT_c1@NnCncvWrz)o}XDDYSXD8<@7a$iT7a|uY zmm^mscT%ogu0rmzT$5bC+??FJ+=|>cxpg^$JV~BgUQC`UuP(1GPm_0%ca;y2kC9K7 z&yX*WFP5*8uaj?(@0A~rpOl}GpOt?rzbL;Uk5dp-5LVDtFj25nuuq#3?c>@+t}|N+>EQsw!$KYAYHlx+uCShA74=CMu>Y z7AO`eo>eSYtWc~~Y*1`d>`?4i98sK8oL9tB2~;L38&!%bL#0v8s8&=Pssq)98bXbt z##582sniN;CAE&)K^>qDQ75U-sB_c>>SyXVDpHAANlZybNmEHz$yv!&$xX>$DNHF= zDPAdEDPO5jsa)x@(ru*{r7opjr6Hwpr75LXN{dQsO6y8!Wr8xVvWT*jvVyXp zvX$}|J zRaIA|shX?0sd}jTs|Kn@sK%-$s-~)zs+Ox(soqv?Q|(n9QJq&^R$W&`s*%*lYP@Rv zYMN?hYR+mdYCdWKYC&qrYT0V}YDH>i)hg7g)f&}$)JD{1)RxsY)ClU_>VoPD>ZNIr+bwBkG^)U4q^*Hr-^ZjF9)f?2C)LYa$)W_7Hsn4k|s$(^98f+S3 z8p;~bXQhU&hK+`uhNFh7hL=X5Mvz9fMy^JcMzzLmjYf@rjUkO$jkg-B8c0pFCQg%I z(@@h)(^At;bBCsvW|U^4W{zgL=4H)F%^uA$%_+@g%@xg6O{^A^mWY!j92tp=@5tsbobtud`}t!G*@TC-XkT1ag{Z82>LZ5eH< zw!St^+eX_>J5W1TJ6=0gJ6k(nyHNYIcB%G7?P~2h?MCeu?SAcN+OM?dwHLM5w9z_b z9Znr#9Vs0-9c3LW9S0pZ9UmQkogkf9oeZ4{oy$56I{i9hIx{-2bmnzdbk=pyx@@}q zx+1z_x(d45x@NkLx~{q&x?#F;y2-j(x~FxEbt`l)>Q?DC=-$@t(CyV7(jC{G(Vf-( zth=F$)MM6T)8p0?)|1gw*E7+x({t2w)AQ2{)CbwQomZiUcXVl zO}|HfKz~IaYd|m{8L$}$8i*Ol7*GvV4QK`~20jLU1~CT71{nsW2Dc5G3|b623_1;Z z48{#64Q34H3>FPG444d=4K)pQ4fPFahOUMlhJJ?rhOvh6hS`SshE;|whW&;khR+P& z8qOOo8?GDj8;KZ67|9ta8yOmz7?~OEF!D0;HwrS!Fv>S7H@a+8Yt&%WWHf0sWi)TJ zYV^&BKx3k@(Ku-$G*y~9O_yd!bEWyw0%+ti+6wI(4Qq@u z<~0^J7BiMHrW%_VI~qG1yBT{KM;ON&ry8dlXBp=k7a5;5t~c&9?lm4Uer7ytyljj! zA(;r9NSH{OsG4Y+Xq(uXxR?Z(WSiue6qr<)TsEmTsW)jd=`tBGnK79&nKxN5SvL7* zLNH}A2V0$(bpe(abE(9L=1~yv${Axa?Q%ks?4g*8qK=QB11wbL0-YJlt{lI z7?#B=JeCse6&^qzSqO$ngK><0Zx4VmmwpX37J&$*1VsEA$_1Wu&(8m}1 zYiuYOpDG|4#!{l}_X`g}&_|?!(Uf8W;QK><(J(LxJk^QX8}+N6f1ie4-CtewdV9fr z!Du)zRt_A7KzN1wt59GB9ayT;uLFY#MMXq;)0gz;HuN9A>hSkEy&MLK`L$nAXn+cR z_%wPMT+xI6T;})Zps2mj^Y6be^SgX+#O{Dykse`D0Wg5h-^cykt{%Z59^P;{pWT1o z2mPG?YV*JMg=X@I_%$NjzpqO#gKLHUJ|BHOC?q)2BPJxA-n9Qixlc%NL}cWz5dU-A zAL}Z=PV)Eh^ud+>UCF=B`DYpZxPPyQ?2Yz=I(qqfc){>!|C4S1wHzAkzw8H<_;a29 z*=(CVeWWQEImm2_Eqxp@c>W5zL6o2aX4piYVv+u7ji@|k_VYDYxOIve~s8ISiOTYI0R~h|8 zf9~@uko2*N{yNXU_WNs4B@g&2oLA7__wny-A#}(6b&#>`7O4FH@GOuX_y6>4kskm5 zSRNYi*AvHoJX3_WQ~CWU^4Ifa4BQMBW>%P?CwuzXiwI7bjbNt147Y+XgV`Qt2bi5; zc82*M=k?#E@@q)8U(Yk?&ot?yD*rkCUWXx@|I74yojw}zpA-FgD1G|%>>HN9*Z*hd z`MsTf%%A6>fBtCwjc-+t%m@{yovleoypR(zpG2%|Gvj{+Yh*pUdB6zweKJ z>fh(2fBy3v^!0yEzt2ZMhW`1_`u%fX`Z|64?|T2UzW-@|dYyl_!$0f)pZ2G>!S8mV zfBycTcKW02cm3)2|NFk^_4vL1XM57i{#Wb!$EE)FKEe$Q7BI6iz_sZ!eWKszKkw_; zhX0ixe+un?>(0;!i(|~JFcvHP7vispeqXns3=d2COrPjwCkmNaiLj*4^od^f<~TEb z1dU(p`CY~X$NqD_Bq)P1U=j40KGBce2Ir%5i$2pQdRZo%j|Z0YnLg3WjEb09MPNyv z=@Y%|cU5~x6J;X1+tu#f_s&jwDljC2vc(_r?~6n+HDAyrpB8o4jE_B{hIzJF$XnO1 zW5TZ_#~Ad{gG1A9Mm;FVp&drEuaEZLnQ;G;wei~vIvSMU=l#9>fAsvC3xP}0J)*UpprMzV7ek|Et%3>89U~IB=`frv-ar!a_s9 zdE`_8m*J&#@d1xiza3&v%d3tHc&}`wq;F|FHztD%J$^jMpQvuT`R)nKa^zn81F;CH z-}n7{`Twi?=Mg!elDBh{qQ*nr*>f@SJS+#%r=?QM-s8%0>pOQWg;;O-KiGQ{aH_tq zar_Dyif$=U(JdJo%o3W+L*_XRuIZZRnPg~?G|-4rNrTcrNhDLVlu~I_qJe~{RFwFw zea=1iUf1pO>HWR$|NH!(=l7n+b7k5R=1*Soq|ogvQcvf56Zt0Y|4-#V|GNAc)yYCUR}Q;MJ*~{6^Vde6<&E8f zsUJfeSC1aMwkTuV#^WvTZk_sec59=6>Ql+ByPKCuyB@gr_Myy_hoAgDEB+k)JeA+$ zS>&j&B{jYtHq+;dOaypCZ}{I>=7hgLrL5Pua-jJ)dAsSl z2b7aq4{Hg%6Ziks|9?>bGx)itgf5zpx2g4MO2|HPMcGQ3tZTAjzP)c2P1)_Oc5%{} z7t-t7Yv(kWeQ3OVwUMW3d%wc=fr-;AYmdvtIT=~_RjC{(|GlGq$)sNmG`?zq$$z2ydW^PM+btQSINNA-`M1?ZD`yeq zPTc>u{Qn;+|4|!us$ctg;bB~`%$0_h=UrqBn{G!)MlLQ}P|-KEd-R!uw!-flH57G} zxXu>(+IFSOK2x5YAzPTdVzbzbC5;{T_fPE7zvo|eui^64#)OGRt#_qORVmiibDtLI z29@@5E!g_7%4vNq*GF zxzyO@(}XJdm1DxgpS14omkhY8J&UOK#QlHk|Nqwi|7Yrd<#?y?BRhj848DJ-5fyjw zq{{29&nmCihh0)GTUeuVaod4Mr10r^RjC6;UDA=?cljNi<*9YbJ$uEwZ{BKB7sBU$ zz8x)gNH|gxu;)A7Z>!xw}@r(i%N?(YK=9=;Hx%MEaKM_sPFj7H$qd<*ROx@gXZmdi52L zuhVYu8*Y^7KV>Ywx-0(hxyR&+_%`#fpI`m1N#4)(o}X^m+p+1;PHh3bEymOQpQh|1 zDLnq9G55B((D8v$fku0lzcX@(YR^BYWc4P}VfX8r=?)(fF9n9U+)jLz+4bl((e4dG z!8Yp@6cOkp8%D7*)w7jSrr6l(Fzr5}VXmv-N2R&OAcGRa9z@{1Xn_b1asF!KD+(;Z86c$dgwKW47mDJ{A z-y9st&ou~r?K>(IKI}$eawTloVBwCSQ38Cz!oVmE>qhvs7wiR^QF0i zPr!o~7>>R(A4)h9a5+4KLMh?i;9CgrAcckbN2*dngYa+2Q(VKtu}{g9!d$@!Pk#p( zjG94U_>7@=y83`&e^{8iH_hFT2mn1mwW0(C6D|zQslX@*q^A%Jg*!BYS)cvfK{=2R zi&G((t{e6=82pE`r!evb?-3LF98L?4iJ&NOO~6~n=Pdkv}5d_~Y zL{1SJSkC<^!ITgre_({aKgEp(Nzo{9E<5C%S?9nf6C44%NMScebZ}50C?EN3=t&{P zpwEQ|d64Mt5DMl50Y?X_K>n`K1cKbdX~>m>xob!y^g1;9mODlm768J7uO=h_R~y|E zfxdZ<1fxfyL~E)l6P1j>g@>YY3uVx-lq~~?>L$WNkq^T$ng)1p2!2Gl;MyC3XV77K zWnnwlqWGe^{*qwta0{CgXLL;D9p+G3g;PVOyQ63rK0r+6fc&zPX zr3r2@th%CF0og+SGt@6ID_wwVIOcdl{x)X$V{wRTK^h(gJP2BURH-mpdR5~XHj)n( zk520aAIgLt5jqN2%z=m03T1)UdDOayK1B(2Ch=*-AT;;4%!@DK`?Gnp>Oi>jG>~@Pnl|EYfD8H3?g$1 zLp)jVI<^+dR7*WO13Rj%oeemThKJ*{NPa2@O2h|+5plw3;Ss@9Y#TW?2%&H*dtE9V zhhV91fb+sT2r7Mu7=~ly8jAC(<*RkQv)VPuB^(AyBdYmbx5z61seNKTOBNI31~i`DQVG!@}?)K(&Jkwc;Pc zIr7HiTk05Cv6kU*xtKJJJPeZodR*vGS<{AKdTvJIiQKT$56{WScr4*qJ?9*sSsDKr z&Zc`LD>H|<7C6U6S{f-Ao_ic`VQ*%JDxjH(9&uC$rWaN`R3RHDD?1iER4g4k14ab8 ze0Uss7!ipz%-m8Rd4!2FLG;8k_+F{>p$|*P+{jQFRc>=|TB5uK&;o)&W2k5}#b6UV z19Pf_fsKiw69&T+6-_8;ROqpg#}>t5#S!Tk=s2-w7o%mtGbBemFg#m!+3`dKgx52- zMNN*OFT9;#-8YtwuDywworwk2)WFHezyi;kj+v3A4L!3~5I{wY@VwbTw*XJzvmK6S z!nP(xz=jFy+1Z$(eu^Cju%($k#v1DZZ|+Bi|o;OrI>cF8q~bW}1N)(XLX${g1aFp1=dN0ku*M$F~W#DEjt-P;fGu|RVy&=W@) z&;$$-(XSD_VIqTqN8r)K2m+A$vHrzM$41B8mK1D@P2mkA0^Lby&TT{s#GYZb;*C8( zIw%fm$@C~B`h3dJhvx5r#6a^VGwiq=62U`Gc7u*TnMA!$wA$_3>@f$cVMBafx_`gLUN3#GwhC^`>tsDyu@kM^qX-M7_ zoQ@k{%qPl%0~B`k0DpFV?^tjIzh`tDA*V*M5PZ@ezYy;l2)7KT1;W^cnhCM2zz7Jx zGm;hQF&*M+yYi6hU3kdVaL@7NA@{iPkb~h@4bQ>uJmf_9;oL|5*Y<%p5Uv!(LncEU z7Zfj;huj>(LlyyYlpd1v|Lbc+dqxX(Z@eRL52AT`!soGJX0C6(xS`S)lMEQvpXeFskxGAtksPKKR47uYHIOC>r{l17CxT&kp%Uw4cqXA? z1<8lf!0t3x>`u(XkbMQsmV?2*fe0}k^!X~WejXveduTA)E#?K%Fv2{*jt4(9@j0o@{>YQAcxE4D6<@h;J!;jY0Y#=sB2i*;N?V_-8I4vm2gY&byS7hP5Y z{J%+?$S378-p}*HojsqN3f|I~%kSVn7U}(L5-y_&_8P z!MG6t)oHrLj)e)+hQwsd#L;atm`M>cQPPNA&tSU<9QHgc7}+&K=(Y=JPgFf!`dl70 zF!~|^oBJae&Fw)pG>=Ch>pb2^#RJ2kHi^P;dk3SPB3f(`kHSzoXs;`J#_SeY-f>#O zR)O&cy9C{wfYGwrDX?&4U!W5(VEVcO!I<5EZb!hv(R7+HNI*Uij& zWNZWOurPXmgm4}~jI3h(0LHR_!icpNHX^}l3(O6O2ICyYA{`qJt$R>(LS-Zm6(5Ff ziGCCah$=L)eg@%-9Vki?s(1g1xsTp|FfGIXU|J#n!L(3Wp&z=?`0=h%h+JRDL$*2( zzfvBu_GOsk7QtMl80NU}Tz?VfxbUkkgLyB&q!I{+Uo-qD05`)g5#m`@z#Y*e8u~S& zPh**@8fl@^a$t`({cc6S!}yC$%+Q<^O&+DghR-vhPRd&`Iz8w|81qqhX3jH75DnuW zO24B#qrSMg66CLf{J{@ElJ+(HUQfSQ)A5vQWI$Gi!I?Xm=T`oW&*RaKXm+Hv5yG!4}wk@ zImTeZ3vahjVEThzz9BJb+!eRp4g8V6gP;?{|f^tH|4D9fV z0(gDEd*&V#8XAGD)X>F({Tl4!Kuoy8Tq&5RXn3mN0}b@>2d5{vLL@v{K7*c+>v`1g?oerQC$7OZ{QIF zFZY0N#skuU7azd82+9h8*PkFE+=WPTG_g=sq1s!RS?Zwa2OYMxGBdG*DU?T zI)PCNnY`#U7CPnzR6R=zFr8tP1m4`h#t6kEV4O3a&N53A3)V0rGfQ0^Gc!v|Q+q3_ zp}mD3oi{6<;G+v~l~5gY7&2in7RLeXfkY0_Ga&(bCh~=zu^6^a=14Zy9O0<}DN_s> z!z|(b6?k996OCtE<$m5`1orHc2?Zi zh-gvy5b?bHgWO#G0TtvI5lrU=FWX==G!H5x859rU83;P9XDAITe-!Q>9_mlU&^54RR0QmqjXj2=R|xEx$%@2;afw;Rjv!d?1ySkiHDpg`>%$mx z6k^^Y8|4$Isv`R*GDe$5cDZ5aB0)M>T3CFvx`aM0CID4CL<(aO`YCuI|1%n!R>4mZ zewclPrmA8=i^hgl0yacGR0!9@T!?l-LH^z}|6o-W+d$XgFz+CY))d|uGcZ$CQP9Wz z1gn549Op#!@Q&70Q-K@AkHlwlBwu*O!w3xOSHN`$&fhSY<3lh>-x$_>bQ>&!*{|xC z!^bs#AYfl3qV*K99wg>qxCUTuxEI15&DnF{4mZY?iQvslTPqKQ zqyrAEGYKA)+w^rXgdtfHA)E+HgfLz@w~27~VB^m&H;PZlO^=4zDv9+jkr$M|I2Jh& zEfPE&a8|Ea$8Yad9^Qnd0oEjRTcf@)#T?(kz&b8tv@mPO>y5q-nBr*i#x#F_=7}y}+ z8PiP0#KC$GrH$4f#`NU}dSF?GK^-3EF2-P%Wf%jdFT*gHb=d{+S-X4`{--6^urQQa zpoJkC-UG(GY^Xh9?k-#87&q3jF+lHm8p5f8EO;ve0~;(?bR6LtLo~$l3{*mRO;Fqs z%QKRmrMZe+HlIHsKfwT)hW1dQ}Y&>$bFlqw4m3WN*UYS0f|s9mPqg?85g zbNDVEa^VlS_rdQI*dx1PJ`B&=-(U_8znmVxf94^l1C0y(f&te9cf=or*&^_Z8aI`-wAb=JK6E1mrW01%DLM@6kW~vTDrd*=W z#B9^jN-EK)Uq}5XLclxLUZFuSA@p>04-X2(Xc#znZBOkE2|BsVU5f# z17Wcb(Oafaet!CE{yg)5yx&_}X;W6Izg|#fP;sF~h+1HMxcctOZnXs zkVR%+og3 zY^fJ>IuIp)q#$hjgQIRwQgbi*a0ymP*iILS=1)P4mXk$0gpZd^JqcRRb)rSik3_m>VQ*Cig+xtZA#v08c4dKLYRt<9Vip7VJ6gdgOvm)*)ux5C!RD(zaWGqG)yXyeAsgvGLzQoR>K zDvtW@9}FGr@)=dMd$7DEX$P18whO;}9qL35XurLyS)BA$k(wZx>)XAVH|m}Ho9D0G zvmSJZ{z8blPw^Mjmo|`f@=tR`zZlxolZ>5z29n|`s80@nVe~`I- zyjn-%=gPPctMfO%7uUIjzpy*7OQ1pW<4m4OMsHGYPqnFc%PZZYc4dXEY<=&tQCZ?- zpU5jueV?4*N_VcbNfvaAJGb_R&7rHLr~_fAel8oE$2EQDtDfVR$QH}i9e+FY?moY7 za(Kbktj%jGoBXX#|4v&q=IepC`{XUVRkTlMOqwFuzD%I8R-pUo&nOKaYRLFN*@vR8 z6ACh~DCrd+<<{YP8sYvW;u^WlPH^v$YcpEMR0wi4G&#ua-Td9Lv|7f+DkNrUZPEAS z3$5$#)J~K3;GOthzs2jhwAj&NufyNBo7?P-QhTO#>S&eqzJNuag;R~^d)e5?r6|7`gO((v9Fo%T)%O1Tfz%ZhvDO(LV-Hf|_6e^KnBBWDKS)4r{PSy~O8Mtq4PO8F+2APtdGde%v^C2~oRw|Im^ep$g&ylaPIP@39AiS^~%b=SqTdT4Y#S@$sVTB_TL()>BCYokmjcDBEF z?|t>fG4_^n|6VSdAW28$?TTY!m$zQ+lbew47PK|KDr`adIU~QZQ~k9n?Tg2pUe;wf zwA8RN%IZoZS^DspDOxeTe0G%X8ENP8%#16#Ts*C!6vmi~gzcYKwDi%hZytk%{71$_ z6iKcU~?A?+cMB&?loGx-c7DJwC4|=Jp8Z0yqlX(GOh+ zM}7c4d$^+?x)81x==k7{e(1vJ9*(3VKjMIUJn|iHa>GbE1HJ#^e4XaLisnwNP;t4? zT4OK#tDnV7&e;aztTZoK8-9iGvy$Z{yU6j9gW+d2hnHNvgO{9+?(n0`1v>bp&jVU{ zh^H`ooG(-YSRLrJU|x^`eBfTc2zV`ppZ0KC7k%IZKU^Z_f5zB{$qfg$1Ozj-5)pD& zL%e4ADH%XI@Ut@f&&geA1Tq`ra$CVY2Yx;9W0#w8myerzF5A4A1 zjBtL~)D68n5~f1Tpm8%PDcCg(jJ&uZm_Y?`FxxJOj$S_i5MW>lb&&>hc(6TVuq%aO z&!$+Ipl`hqXF#E|omep}{!IEp7_H}s^=vpCk{uKPCqq%(T*G{rd*^{2+AoYPbO~Bm z=7+luqh|U*@vPzcBk18J2<(g;223vx0wz4SD31h=&?N(gMQ14N|3@#&fXSapN5_Ny zu;O6l0lV8Hkg9MTTDF2&9NsIUzxRS%yd?0MQs68emeRpY&zPke%Zth%!r*`$3MvqW z`oZpv@`Y`}$2Z8++$p#^V6}}7y~6DCgmE0w_V5XFhtl#1bj7O?b|@CYtN8p;CifuF zEyM_?g<)UAgKZteQCB3l2v1M66CW(`^tV93?+k8oIF1W_IFCV!z57En272SbaJ0}+ zWWd1e7Y2IBM~t?WGGM}o%8H}Arx`Sajf3F9vK5sn570j)u76y*M2g4)TIO0{**zrCpLBsNgeD;uEyp^F0 z!$rrLvM!40I2O+y${#h#LdTFL*H|CPz@waE`el)r71p=6!otDnVTU;o!h_)8GDep* zJZu@flZW0GgO4sk889j#oE{d8WJY`$d{7yn#tPbIC;dA*6|BD)MvIrjKl9^A!^R6M zYZZ8dibZCCROr12BTc-DG4q928x|PeN+c==YyN%0s6l~LqWfaf1Ku^9sa{4p(7}Pb zhDnF&+~4Y&SwH`*mp{_5>BYkhH4CO3?m@w*GBV_J$M+#KU~nI?(nISRrVyZmt^uo6 zxakMmls~e7=sXZD3^n*GC-k@&%o2{32tABpuS8=Q9fwIwJfqhQi9Kt8GqSM+4<2%o zF^6Ȳ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 h6t4x7{+Ivr5Y1<@i zne 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

S`rUaFJG6rK~g+Q#r&e3eA-V`Iapz%{LG6 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 C1ae>i literal 0 HcmV?d00001 diff --git a/ext/openssl-win64/out32dll/ssleay32.dll b/ext/openssl-win64/out32dll/ssleay32.dll index db49ae6c8e4119b607647ebb5dcdd77f51c9e7c1..cdeae0ad3a96cbd685a1761e9b36bcf28a523164 100644 GIT binary patch literal 377856 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

nCKh4^vqE+=r{4x?%Ew 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 literal 293376 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 Date: Wed, 29 Apr 2015 11:35:12 -0700 Subject: [PATCH 09/12] Added code to fetch openssl libs from archetecture specific location #4587 --- src/setup/win32/Product.wxs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/setup/win32/Product.wxs b/src/setup/win32/Product.wxs index 884e329b..d5266484 100644 --- a/src/setup/win32/Product.wxs +++ b/src/setup/win32/Product.wxs @@ -118,9 +118,9 @@ - - - + + + From 54ca552aa67729c231e081beb5372248d6eccd8d Mon Sep 17 00:00:00 2001 From: Adam Potolsky Date: Wed, 29 Apr 2015 11:42:15 -0700 Subject: [PATCH 10/12] added gvim swap files to gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 9628af09..5aebb495 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ config.h *.pyc *~ +\.*.swp /bin /lib /build From fcf68d1ce49f8330fba9d9febb9634f65b22b230 Mon Sep 17 00:00:00 2001 From: Adam Potolsky Date: Fri, 1 May 2015 16:55:29 -0700 Subject: [PATCH 11/12] Adding OSX binaries and headers for compilation from binaries #4587 --- ext/openssl-osx/include/nope/aes.h | 149 + ext/openssl-osx/include/nope/asn1t.h | 973 ++++ ext/openssl-osx/include/nope/blowfish.h | 130 + ext/openssl-osx/include/nope/camellia.h | 132 + ext/openssl-osx/include/nope/cast.h | 107 + ext/openssl-osx/include/nope/cmac.h | 82 + ext/openssl-osx/include/nope/cms.h | 555 +++ ext/openssl-osx/include/nope/conf.h | 267 ++ ext/openssl-osx/include/nope/conf_api.h | 89 + ext/openssl-osx/include/nope/des.h | 257 + ext/openssl-osx/include/nope/des_old.h | 497 ++ ext/openssl-osx/include/nope/dso.h | 451 ++ ext/openssl-osx/include/nope/ebcdic.h | 26 + ext/openssl-osx/include/nope/engine.h | 960 ++++ ext/openssl-osx/include/nope/idea.h | 105 + ext/openssl-osx/include/nope/krb5_asn.h | 240 + ext/openssl-osx/include/nope/md4.h | 119 + ext/openssl-osx/include/nope/md5.h | 119 + ext/openssl-osx/include/nope/mdc2.h | 94 + ext/openssl-osx/include/nope/modes.h | 163 + ext/openssl-osx/include/nope/ocsp.h | 637 +++ ext/openssl-osx/include/nope/pkcs12.h | 342 ++ ext/openssl-osx/include/nope/rand.h | 150 + ext/openssl-osx/include/nope/rc2.h | 103 + ext/openssl-osx/include/nope/rc4.h | 88 + ext/openssl-osx/include/nope/ripemd.h | 105 + ext/openssl-osx/include/nope/seed.h | 149 + ext/openssl-osx/include/nope/srp.h | 169 + ext/openssl-osx/include/nope/ts.h | 862 ++++ ext/openssl-osx/include/nope/txt_db.h | 112 + ext/openssl-osx/include/nope/ui.h | 415 ++ ext/openssl-osx/include/nope/ui_compat.h | 88 + ext/openssl-osx/include/nope/whrlpool.h | 41 + ext/openssl-osx/include/nope/x509v3.h | 1055 +++++ ext/openssl-osx/include/openssl/asn1.h | 1418 ++++++ ext/openssl-osx/include/openssl/asn1_mac.h | 579 +++ ext/openssl-osx/include/openssl/bio.h | 878 ++++ ext/openssl-osx/include/openssl/bn.h | 934 ++++ ext/openssl-osx/include/openssl/buffer.h | 119 + ext/openssl-osx/include/openssl/comp.h | 79 + ext/openssl-osx/include/openssl/crypto.h | 661 +++ ext/openssl-osx/include/openssl/dh.h | 392 ++ ext/openssl-osx/include/openssl/dsa.h | 332 ++ ext/openssl-osx/include/openssl/dtls1.h | 271 ++ ext/openssl-osx/include/openssl/e_os2.h | 322 ++ ext/openssl-osx/include/openssl/ec.h | 1281 +++++ ext/openssl-osx/include/openssl/ecdh.h | 134 + ext/openssl-osx/include/openssl/ecdsa.h | 335 ++ ext/openssl-osx/include/openssl/err.h | 389 ++ ext/openssl-osx/include/openssl/evp.h | 1519 ++++++ ext/openssl-osx/include/openssl/hmac.h | 109 + ext/openssl-osx/include/openssl/kssl.h | 197 + ext/openssl-osx/include/openssl/lhash.h | 240 + ext/openssl-osx/include/openssl/obj_mac.h | 4194 +++++++++++++++++ ext/openssl-osx/include/openssl/objects.h | 1143 +++++ ext/openssl-osx/include/openssl/opensslconf.h | 261 + ext/openssl-osx/include/openssl/opensslv.h | 97 + ext/openssl-osx/include/openssl/ossl_typ.h | 211 + ext/openssl-osx/include/openssl/pem.h | 615 +++ ext/openssl-osx/include/openssl/pem2.h | 70 + ext/openssl-osx/include/openssl/pkcs7.h | 481 ++ ext/openssl-osx/include/openssl/pqueue.h | 99 + ext/openssl-osx/include/openssl/rsa.h | 664 +++ ext/openssl-osx/include/openssl/safestack.h | 2672 +++++++++++ ext/openssl-osx/include/openssl/sha.h | 214 + ext/openssl-osx/include/openssl/srtp.h | 147 + ext/openssl-osx/include/openssl/ssl.h | 3159 +++++++++++++ ext/openssl-osx/include/openssl/ssl2.h | 265 ++ ext/openssl-osx/include/openssl/ssl23.h | 84 + ext/openssl-osx/include/openssl/ssl3.h | 774 +++ ext/openssl-osx/include/openssl/stack.h | 107 + ext/openssl-osx/include/openssl/symhacks.h | 516 ++ ext/openssl-osx/include/openssl/tls1.h | 813 ++++ ext/openssl-osx/include/openssl/x509.h | 1327 ++++++ ext/openssl-osx/include/openssl/x509_vfy.h | 641 +++ ext/openssl-osx/libcrypto.a | Bin 0 -> 2700624 bytes ext/openssl-osx/libssl.a | Bin 0 -> 510536 bytes 77 files changed, 38574 insertions(+) create mode 100644 ext/openssl-osx/include/nope/aes.h create mode 100644 ext/openssl-osx/include/nope/asn1t.h create mode 100644 ext/openssl-osx/include/nope/blowfish.h create mode 100644 ext/openssl-osx/include/nope/camellia.h create mode 100644 ext/openssl-osx/include/nope/cast.h create mode 100644 ext/openssl-osx/include/nope/cmac.h create mode 100644 ext/openssl-osx/include/nope/cms.h create mode 100644 ext/openssl-osx/include/nope/conf.h create mode 100644 ext/openssl-osx/include/nope/conf_api.h create mode 100644 ext/openssl-osx/include/nope/des.h create mode 100644 ext/openssl-osx/include/nope/des_old.h create mode 100644 ext/openssl-osx/include/nope/dso.h create mode 100644 ext/openssl-osx/include/nope/ebcdic.h create mode 100644 ext/openssl-osx/include/nope/engine.h create mode 100644 ext/openssl-osx/include/nope/idea.h create mode 100644 ext/openssl-osx/include/nope/krb5_asn.h create mode 100644 ext/openssl-osx/include/nope/md4.h create mode 100644 ext/openssl-osx/include/nope/md5.h create mode 100644 ext/openssl-osx/include/nope/mdc2.h create mode 100644 ext/openssl-osx/include/nope/modes.h create mode 100644 ext/openssl-osx/include/nope/ocsp.h create mode 100644 ext/openssl-osx/include/nope/pkcs12.h create mode 100644 ext/openssl-osx/include/nope/rand.h create mode 100644 ext/openssl-osx/include/nope/rc2.h create mode 100644 ext/openssl-osx/include/nope/rc4.h create mode 100644 ext/openssl-osx/include/nope/ripemd.h create mode 100644 ext/openssl-osx/include/nope/seed.h create mode 100644 ext/openssl-osx/include/nope/srp.h create mode 100644 ext/openssl-osx/include/nope/ts.h create mode 100644 ext/openssl-osx/include/nope/txt_db.h create mode 100644 ext/openssl-osx/include/nope/ui.h create mode 100644 ext/openssl-osx/include/nope/ui_compat.h create mode 100644 ext/openssl-osx/include/nope/whrlpool.h create mode 100644 ext/openssl-osx/include/nope/x509v3.h create mode 100644 ext/openssl-osx/include/openssl/asn1.h create mode 100644 ext/openssl-osx/include/openssl/asn1_mac.h create mode 100644 ext/openssl-osx/include/openssl/bio.h create mode 100644 ext/openssl-osx/include/openssl/bn.h create mode 100644 ext/openssl-osx/include/openssl/buffer.h create mode 100644 ext/openssl-osx/include/openssl/comp.h create mode 100644 ext/openssl-osx/include/openssl/crypto.h create mode 100644 ext/openssl-osx/include/openssl/dh.h create mode 100644 ext/openssl-osx/include/openssl/dsa.h create mode 100644 ext/openssl-osx/include/openssl/dtls1.h create mode 100644 ext/openssl-osx/include/openssl/e_os2.h create mode 100644 ext/openssl-osx/include/openssl/ec.h create mode 100644 ext/openssl-osx/include/openssl/ecdh.h create mode 100644 ext/openssl-osx/include/openssl/ecdsa.h create mode 100644 ext/openssl-osx/include/openssl/err.h create mode 100644 ext/openssl-osx/include/openssl/evp.h create mode 100644 ext/openssl-osx/include/openssl/hmac.h create mode 100644 ext/openssl-osx/include/openssl/kssl.h create mode 100644 ext/openssl-osx/include/openssl/lhash.h create mode 100644 ext/openssl-osx/include/openssl/obj_mac.h create mode 100644 ext/openssl-osx/include/openssl/objects.h create mode 100644 ext/openssl-osx/include/openssl/opensslconf.h create mode 100644 ext/openssl-osx/include/openssl/opensslv.h create mode 100644 ext/openssl-osx/include/openssl/ossl_typ.h create mode 100644 ext/openssl-osx/include/openssl/pem.h create mode 100644 ext/openssl-osx/include/openssl/pem2.h create mode 100644 ext/openssl-osx/include/openssl/pkcs7.h create mode 100644 ext/openssl-osx/include/openssl/pqueue.h create mode 100644 ext/openssl-osx/include/openssl/rsa.h create mode 100644 ext/openssl-osx/include/openssl/safestack.h create mode 100644 ext/openssl-osx/include/openssl/sha.h create mode 100644 ext/openssl-osx/include/openssl/srtp.h create mode 100644 ext/openssl-osx/include/openssl/ssl.h create mode 100644 ext/openssl-osx/include/openssl/ssl2.h create mode 100644 ext/openssl-osx/include/openssl/ssl23.h create mode 100644 ext/openssl-osx/include/openssl/ssl3.h create mode 100644 ext/openssl-osx/include/openssl/stack.h create mode 100644 ext/openssl-osx/include/openssl/symhacks.h create mode 100644 ext/openssl-osx/include/openssl/tls1.h create mode 100644 ext/openssl-osx/include/openssl/x509.h create mode 100644 ext/openssl-osx/include/openssl/x509_vfy.h create mode 100644 ext/openssl-osx/libcrypto.a create mode 100644 ext/openssl-osx/libssl.a diff --git a/ext/openssl-osx/include/nope/aes.h b/ext/openssl-osx/include/nope/aes.h new file mode 100644 index 00000000..87bf60f6 --- /dev/null +++ b/ext/openssl-osx/include/nope/aes.h @@ -0,0 +1,149 @@ +/* crypto/aes/aes.h -*- mode:C; c-file-style: "eay" -*- */ +/* ==================================================================== + * 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/ext/openssl-osx/include/nope/asn1t.h b/ext/openssl-osx/include/nope/asn1t.h new file mode 100644 index 00000000..99bc0eec --- /dev/null +++ b/ext/openssl-osx/include/nope/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/ext/openssl-osx/include/nope/blowfish.h b/ext/openssl-osx/include/nope/blowfish.h new file mode 100644 index 00000000..83293027 --- /dev/null +++ b/ext/openssl-osx/include/nope/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/ext/openssl-osx/include/nope/camellia.h b/ext/openssl-osx/include/nope/camellia.h new file mode 100644 index 00000000..9be7c0fd --- /dev/null +++ b/ext/openssl-osx/include/nope/camellia.h @@ -0,0 +1,132 @@ +/* crypto/camellia/camellia.h -*- mode:C; c-file-style: "eay" -*- */ +/* ==================================================================== + * 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/ext/openssl-osx/include/nope/cast.h b/ext/openssl-osx/include/nope/cast.h new file mode 100644 index 00000000..0003ec9c --- /dev/null +++ b/ext/openssl-osx/include/nope/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/ext/openssl-osx/include/nope/cmac.h b/ext/openssl-osx/include/nope/cmac.h new file mode 100644 index 00000000..175be834 --- /dev/null +++ b/ext/openssl-osx/include/nope/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/ext/openssl-osx/include/nope/cms.h b/ext/openssl-osx/include/nope/cms.h new file mode 100644 index 00000000..e6c7f964 --- /dev/null +++ b/ext/openssl-osx/include/nope/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/ext/openssl-osx/include/nope/conf.h b/ext/openssl-osx/include/nope/conf.h new file mode 100644 index 00000000..8d926d5d --- /dev/null +++ b/ext/openssl-osx/include/nope/conf.h @@ -0,0 +1,267 @@ +/* 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_HAS_NO_VALUE 104 + +#ifdef __cplusplus +} +#endif +#endif diff --git a/ext/openssl-osx/include/nope/conf_api.h b/ext/openssl-osx/include/nope/conf_api.h new file mode 100644 index 00000000..e478f7df --- /dev/null +++ b/ext/openssl-osx/include/nope/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/ext/openssl-osx/include/nope/des.h b/ext/openssl-osx/include/nope/des.h new file mode 100644 index 00000000..1b40144e --- /dev/null +++ b/ext/openssl-osx/include/nope/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/ext/openssl-osx/include/nope/des_old.h b/ext/openssl-osx/include/nope/des_old.h new file mode 100644 index 00000000..f1e1e2cb --- /dev/null +++ b/ext/openssl-osx/include/nope/des_old.h @@ -0,0 +1,497 @@ +/* crypto/des/des_old.h -*- mode:C; c-file-style: "eay" -*- */ + +/*- + * 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/ext/openssl-osx/include/nope/dso.h b/ext/openssl-osx/include/nope/dso.h new file mode 100644 index 00000000..7c4a1dc4 --- /dev/null +++ b/ext/openssl-osx/include/nope/dso.h @@ -0,0 +1,451 @@ +/* dso.h -*- mode:C; c-file-style: "eay" -*- */ +/* + * 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/ext/openssl-osx/include/nope/ebcdic.h b/ext/openssl-osx/include/nope/ebcdic.h new file mode 100644 index 00000000..4cbdfeb7 --- /dev/null +++ b/ext/openssl-osx/include/nope/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/ext/openssl-osx/include/nope/engine.h b/ext/openssl-osx/include/nope/engine.h new file mode 100644 index 00000000..bd7b5914 --- /dev/null +++ b/ext/openssl-osx/include/nope/engine.h @@ -0,0 +1,960 @@ +/* openssl/engine.h */ +/* + * Written by Geoff Thorpe (geoff@geoffthorpe.net) for the OpenSSL project + * 2000. + */ +/* ==================================================================== + * 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). + * + */ +/* ==================================================================== + * 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_ENGINE_H +# define HEADER_ENGINE_H + +# include + +# ifdef OPENSSL_NO_ENGINE +# error ENGINE is disabled. +# endif + +# ifndef OPENSSL_NO_DEPRECATED +# include +# ifndef OPENSSL_NO_RSA +# include +# endif +# ifndef OPENSSL_NO_DSA +# include +# endif +# ifndef OPENSSL_NO_DH +# include +# endif +# ifndef OPENSSL_NO_ECDH +# include +# endif +# ifndef OPENSSL_NO_ECDSA +# include +# endif +# include +# include +# include +# endif + +# include +# include + +# include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * These flags are used to control combinations of algorithm (methods) by + * bitwise "OR"ing. + */ +# define ENGINE_METHOD_RSA (unsigned int)0x0001 +# define ENGINE_METHOD_DSA (unsigned int)0x0002 +# define ENGINE_METHOD_DH (unsigned int)0x0004 +# define ENGINE_METHOD_RAND (unsigned int)0x0008 +# define ENGINE_METHOD_ECDH (unsigned int)0x0010 +# define ENGINE_METHOD_ECDSA (unsigned int)0x0020 +# define ENGINE_METHOD_CIPHERS (unsigned int)0x0040 +# define ENGINE_METHOD_DIGESTS (unsigned int)0x0080 +# define ENGINE_METHOD_STORE (unsigned int)0x0100 +# define ENGINE_METHOD_PKEY_METHS (unsigned int)0x0200 +# define ENGINE_METHOD_PKEY_ASN1_METHS (unsigned int)0x0400 +/* Obvious all-or-nothing cases. */ +# define ENGINE_METHOD_ALL (unsigned int)0xFFFF +# define ENGINE_METHOD_NONE (unsigned int)0x0000 + +/* + * This(ese) flag(s) controls behaviour of the ENGINE_TABLE mechanism used + * internally to control registration of ENGINE implementations, and can be + * set by ENGINE_set_table_flags(). The "NOINIT" flag prevents attempts to + * initialise registered ENGINEs if they are not already initialised. + */ +# define ENGINE_TABLE_FLAG_NOINIT (unsigned int)0x0001 + +/* ENGINE flags that can be set by ENGINE_set_flags(). */ +/* Not used */ +/* #define ENGINE_FLAGS_MALLOCED 0x0001 */ + +/* + * This flag is for ENGINEs that wish to handle the various 'CMD'-related + * control commands on their own. Without this flag, ENGINE_ctrl() handles + * these control commands on behalf of the ENGINE using their "cmd_defns" + * data. + */ +# define ENGINE_FLAGS_MANUAL_CMD_CTRL (int)0x0002 + +/* + * This flag is for ENGINEs who return new duplicate structures when found + * via "ENGINE_by_id()". When an ENGINE must store state (eg. if + * ENGINE_ctrl() commands are called in sequence as part of some stateful + * process like key-generation setup and execution), it can set this flag - + * then each attempt to obtain the ENGINE will result in it being copied into + * a new structure. Normally, ENGINEs don't declare this flag so + * ENGINE_by_id() just increments the existing ENGINE's structural reference + * count. + */ +# define ENGINE_FLAGS_BY_ID_COPY (int)0x0004 + +/* + * This flag if for an ENGINE that does not want its methods registered as + * part of ENGINE_register_all_complete() for example if the methods are not + * usable as default methods. + */ + +# define ENGINE_FLAGS_NO_REGISTER_ALL (int)0x0008 + +/* + * ENGINEs can support their own command types, and these flags are used in + * ENGINE_CTRL_GET_CMD_FLAGS to indicate to the caller what kind of input + * each command expects. Currently only numeric and string input is + * supported. If a control command supports none of the _NUMERIC, _STRING, or + * _NO_INPUT options, then it is regarded as an "internal" control command - + * and not for use in config setting situations. As such, they're not + * available to the ENGINE_ctrl_cmd_string() function, only raw ENGINE_ctrl() + * access. Changes to this list of 'command types' should be reflected + * carefully in ENGINE_cmd_is_executable() and ENGINE_ctrl_cmd_string(). + */ + +/* accepts a 'long' input value (3rd parameter to ENGINE_ctrl) */ +# define ENGINE_CMD_FLAG_NUMERIC (unsigned int)0x0001 +/* + * accepts string input (cast from 'void*' to 'const char *', 4th parameter + * to ENGINE_ctrl) + */ +# define ENGINE_CMD_FLAG_STRING (unsigned int)0x0002 +/* + * Indicates that the control command takes *no* input. Ie. the control + * command is unparameterised. + */ +# define ENGINE_CMD_FLAG_NO_INPUT (unsigned int)0x0004 +/* + * Indicates that the control command is internal. This control command won't + * be shown in any output, and is only usable through the ENGINE_ctrl_cmd() + * function. + */ +# define ENGINE_CMD_FLAG_INTERNAL (unsigned int)0x0008 + +/* + * NB: These 3 control commands are deprecated and should not be used. + * ENGINEs relying on these commands should compile conditional support for + * compatibility (eg. if these symbols are defined) but should also migrate + * the same functionality to their own ENGINE-specific control functions that + * can be "discovered" by calling applications. The fact these control + * commands wouldn't be "executable" (ie. usable by text-based config) + * doesn't change the fact that application code can find and use them + * without requiring per-ENGINE hacking. + */ + +/* + * These flags are used to tell the ctrl function what should be done. All + * command numbers are shared between all engines, even if some don't make + * sense to some engines. In such a case, they do nothing but return the + * error ENGINE_R_CTRL_COMMAND_NOT_IMPLEMENTED. + */ +# define ENGINE_CTRL_SET_LOGSTREAM 1 +# define ENGINE_CTRL_SET_PASSWORD_CALLBACK 2 +# define ENGINE_CTRL_HUP 3/* Close and reinitialise + * any handles/connections + * etc. */ +# define ENGINE_CTRL_SET_USER_INTERFACE 4/* Alternative to callback */ +# define ENGINE_CTRL_SET_CALLBACK_DATA 5/* User-specific data, used + * when calling the password + * callback and the user + * interface */ +# define ENGINE_CTRL_LOAD_CONFIGURATION 6/* Load a configuration, + * given a string that + * represents a file name + * or so */ +# define ENGINE_CTRL_LOAD_SECTION 7/* Load data from a given + * section in the already + * loaded configuration */ + +/* + * These control commands allow an application to deal with an arbitrary + * engine in a dynamic way. Warn: Negative return values indicate errors FOR + * THESE COMMANDS because zero is used to indicate 'end-of-list'. Other + * commands, including ENGINE-specific command types, return zero for an + * error. An ENGINE can choose to implement these ctrl functions, and can + * internally manage things however it chooses - it does so by setting the + * ENGINE_FLAGS_MANUAL_CMD_CTRL flag (using ENGINE_set_flags()). Otherwise + * the ENGINE_ctrl() code handles this on the ENGINE's behalf using the + * cmd_defns data (set using ENGINE_set_cmd_defns()). This means an ENGINE's + * ctrl() handler need only implement its own commands - the above "meta" + * commands will be taken care of. + */ + +/* + * Returns non-zero if the supplied ENGINE has a ctrl() handler. If "not", + * then all the remaining control commands will return failure, so it is + * worth checking this first if the caller is trying to "discover" the + * engine's capabilities and doesn't want errors generated unnecessarily. + */ +# define ENGINE_CTRL_HAS_CTRL_FUNCTION 10 +/* + * Returns a positive command number for the first command supported by the + * engine. Returns zero if no ctrl commands are supported. + */ +# define ENGINE_CTRL_GET_FIRST_CMD_TYPE 11 +/* + * The 'long' argument specifies a command implemented by the engine, and the + * return value is the next command supported, or zero if there are no more. + */ +# define ENGINE_CTRL_GET_NEXT_CMD_TYPE 12 +/* + * The 'void*' argument is a command name (cast from 'const char *'), and the + * return value is the command that corresponds to it. + */ +# define ENGINE_CTRL_GET_CMD_FROM_NAME 13 +/* + * The next two allow a command to be converted into its corresponding string + * form. In each case, the 'long' argument supplies the command. In the + * NAME_LEN case, the return value is the length of the command name (not + * counting a trailing EOL). In the NAME case, the 'void*' argument must be a + * string buffer large enough, and it will be populated with the name of the + * command (WITH a trailing EOL). + */ +# define ENGINE_CTRL_GET_NAME_LEN_FROM_CMD 14 +# define ENGINE_CTRL_GET_NAME_FROM_CMD 15 +/* The next two are similar but give a "short description" of a command. */ +# define ENGINE_CTRL_GET_DESC_LEN_FROM_CMD 16 +# define ENGINE_CTRL_GET_DESC_FROM_CMD 17 +/* + * With this command, the return value is the OR'd combination of + * ENGINE_CMD_FLAG_*** values that indicate what kind of input a given + * engine-specific ctrl command expects. + */ +# define ENGINE_CTRL_GET_CMD_FLAGS 18 + +/* + * ENGINE implementations should start the numbering of their own control + * commands from this value. (ie. ENGINE_CMD_BASE, ENGINE_CMD_BASE + 1, etc). + */ +# define ENGINE_CMD_BASE 200 + +/* + * NB: These 2 nCipher "chil" control commands are deprecated, and their + * functionality is now available through ENGINE-specific control commands + * (exposed through the above-mentioned 'CMD'-handling). Code using these 2 + * commands should be migrated to the more general command handling before + * these are removed. + */ + +/* Flags specific to the nCipher "chil" engine */ +# define ENGINE_CTRL_CHIL_SET_FORKCHECK 100 + /* + * Depending on the value of the (long)i argument, this sets or + * unsets the SimpleForkCheck flag in the CHIL API to enable or + * disable checking and workarounds for applications that fork(). + */ +# define ENGINE_CTRL_CHIL_NO_LOCKING 101 + /* + * This prevents the initialisation function from providing mutex + * callbacks to the nCipher library. + */ + +/* + * If an ENGINE supports its own specific control commands and wishes the + * framework to handle the above 'ENGINE_CMD_***'-manipulation commands on + * its behalf, it should supply a null-terminated array of ENGINE_CMD_DEFN + * entries to ENGINE_set_cmd_defns(). It should also implement a ctrl() + * handler that supports the stated commands (ie. the "cmd_num" entries as + * described by the array). NB: The array must be ordered in increasing order + * of cmd_num. "null-terminated" means that the last ENGINE_CMD_DEFN element + * has cmd_num set to zero and/or cmd_name set to NULL. + */ +typedef struct ENGINE_CMD_DEFN_st { + unsigned int cmd_num; /* The command number */ + const char *cmd_name; /* The command name itself */ + const char *cmd_desc; /* A short description of the command */ + unsigned int cmd_flags; /* The input the command expects */ +} ENGINE_CMD_DEFN; + +/* Generic function pointer */ +typedef int (*ENGINE_GEN_FUNC_PTR) (void); +/* Generic function pointer taking no arguments */ +typedef int (*ENGINE_GEN_INT_FUNC_PTR) (ENGINE *); +/* Specific control function pointer */ +typedef int (*ENGINE_CTRL_FUNC_PTR) (ENGINE *, int, long, void *, + void (*f) (void)); +/* Generic load_key function pointer */ +typedef EVP_PKEY *(*ENGINE_LOAD_KEY_PTR)(ENGINE *, const char *, + UI_METHOD *ui_method, + void *callback_data); +typedef int (*ENGINE_SSL_CLIENT_CERT_PTR) (ENGINE *, SSL *ssl, + STACK_OF(X509_NAME) *ca_dn, + X509 **pcert, EVP_PKEY **pkey, + STACK_OF(X509) **pother, + UI_METHOD *ui_method, + void *callback_data); +/*- + * These callback types are for an ENGINE's handler for cipher and digest logic. + * These handlers have these prototypes; + * int foo(ENGINE *e, const EVP_CIPHER **cipher, const int **nids, int nid); + * int foo(ENGINE *e, const EVP_MD **digest, const int **nids, int nid); + * Looking at how to implement these handlers in the case of cipher support, if + * the framework wants the EVP_CIPHER for 'nid', it will call; + * foo(e, &p_evp_cipher, NULL, nid); (return zero for failure) + * If the framework wants a list of supported 'nid's, it will call; + * foo(e, NULL, &p_nids, 0); (returns number of 'nids' or -1 for error) + */ +/* + * Returns to a pointer to the array of supported cipher 'nid's. If the + * second parameter is non-NULL it is set to the size of the returned array. + */ +typedef int (*ENGINE_CIPHERS_PTR) (ENGINE *, const EVP_CIPHER **, + const int **, int); +typedef int (*ENGINE_DIGESTS_PTR) (ENGINE *, const EVP_MD **, const int **, + int); +typedef int (*ENGINE_PKEY_METHS_PTR) (ENGINE *, EVP_PKEY_METHOD **, + const int **, int); +typedef int (*ENGINE_PKEY_ASN1_METHS_PTR) (ENGINE *, EVP_PKEY_ASN1_METHOD **, + const int **, int); +/* + * STRUCTURE functions ... all of these functions deal with pointers to + * ENGINE structures where the pointers have a "structural reference". This + * means that their reference is to allowed access to the structure but it + * does not imply that the structure is functional. To simply increment or + * decrement the structural reference count, use ENGINE_by_id and + * ENGINE_free. NB: This is not required when iterating using ENGINE_get_next + * as it will automatically decrement the structural reference count of the + * "current" ENGINE and increment the structural reference count of the + * ENGINE it returns (unless it is NULL). + */ + +/* Get the first/last "ENGINE" type available. */ +ENGINE *ENGINE_get_first(void); +ENGINE *ENGINE_get_last(void); +/* Iterate to the next/previous "ENGINE" type (NULL = end of the list). */ +ENGINE *ENGINE_get_next(ENGINE *e); +ENGINE *ENGINE_get_prev(ENGINE *e); +/* Add another "ENGINE" type into the array. */ +int ENGINE_add(ENGINE *e); +/* Remove an existing "ENGINE" type from the array. */ +int ENGINE_remove(ENGINE *e); +/* Retrieve an engine from the list by its unique "id" value. */ +ENGINE *ENGINE_by_id(const char *id); +/* Add all the built-in engines. */ +void ENGINE_load_openssl(void); +void ENGINE_load_dynamic(void); +# ifndef OPENSSL_NO_STATIC_ENGINE +void ENGINE_load_4758cca(void); +void ENGINE_load_aep(void); +void ENGINE_load_atalla(void); +void ENGINE_load_chil(void); +void ENGINE_load_cswift(void); +void ENGINE_load_nuron(void); +void ENGINE_load_sureware(void); +void ENGINE_load_ubsec(void); +void ENGINE_load_padlock(void); +void ENGINE_load_capi(void); +# ifndef OPENSSL_NO_GMP +void ENGINE_load_gmp(void); +# endif +# ifndef OPENSSL_NO_GOST +void ENGINE_load_gost(void); +# endif +# endif +void ENGINE_load_cryptodev(void); +void ENGINE_load_rdrand(void); +void ENGINE_load_builtin_engines(void); + +/* + * Get and set global flags (ENGINE_TABLE_FLAG_***) for the implementation + * "registry" handling. + */ +unsigned int ENGINE_get_table_flags(void); +void ENGINE_set_table_flags(unsigned int flags); + +/*- Manage registration of ENGINEs per "table". For each type, there are 3 + * functions; + * ENGINE_register_***(e) - registers the implementation from 'e' (if it has one) + * ENGINE_unregister_***(e) - unregister the implementation from 'e' + * ENGINE_register_all_***() - call ENGINE_register_***() for each 'e' in the list + * Cleanup is automatically registered from each table when required, so + * ENGINE_cleanup() will reverse any "register" operations. + */ + +int ENGINE_register_RSA(ENGINE *e); +void ENGINE_unregister_RSA(ENGINE *e); +void ENGINE_register_all_RSA(void); + +int ENGINE_register_DSA(ENGINE *e); +void ENGINE_unregister_DSA(ENGINE *e); +void ENGINE_register_all_DSA(void); + +int ENGINE_register_ECDH(ENGINE *e); +void ENGINE_unregister_ECDH(ENGINE *e); +void ENGINE_register_all_ECDH(void); + +int ENGINE_register_ECDSA(ENGINE *e); +void ENGINE_unregister_ECDSA(ENGINE *e); +void ENGINE_register_all_ECDSA(void); + +int ENGINE_register_DH(ENGINE *e); +void ENGINE_unregister_DH(ENGINE *e); +void ENGINE_register_all_DH(void); + +int ENGINE_register_RAND(ENGINE *e); +void ENGINE_unregister_RAND(ENGINE *e); +void ENGINE_register_all_RAND(void); + +int ENGINE_register_STORE(ENGINE *e); +void ENGINE_unregister_STORE(ENGINE *e); +void ENGINE_register_all_STORE(void); + +int ENGINE_register_ciphers(ENGINE *e); +void ENGINE_unregister_ciphers(ENGINE *e); +void ENGINE_register_all_ciphers(void); + +int ENGINE_register_digests(ENGINE *e); +void ENGINE_unregister_digests(ENGINE *e); +void ENGINE_register_all_digests(void); + +int ENGINE_register_pkey_meths(ENGINE *e); +void ENGINE_unregister_pkey_meths(ENGINE *e); +void ENGINE_register_all_pkey_meths(void); + +int ENGINE_register_pkey_asn1_meths(ENGINE *e); +void ENGINE_unregister_pkey_asn1_meths(ENGINE *e); +void ENGINE_register_all_pkey_asn1_meths(void); + +/* + * These functions register all support from the above categories. Note, use + * of these functions can result in static linkage of code your application + * may not need. If you only need a subset of functionality, consider using + * more selective initialisation. + */ +int ENGINE_register_complete(ENGINE *e); +int ENGINE_register_all_complete(void); + +/* + * Send parametrised control commands to the engine. The possibilities to + * send down an integer, a pointer to data or a function pointer are + * provided. Any of the parameters may or may not be NULL, depending on the + * command number. In actuality, this function only requires a structural + * (rather than functional) reference to an engine, but many control commands + * may require the engine be functional. The caller should be aware of trying + * commands that require an operational ENGINE, and only use functional + * references in such situations. + */ +int ENGINE_ctrl(ENGINE *e, int cmd, long i, void *p, void (*f) (void)); + +/* + * This function tests if an ENGINE-specific command is usable as a + * "setting". Eg. in an application's config file that gets processed through + * ENGINE_ctrl_cmd_string(). If this returns zero, it is not available to + * ENGINE_ctrl_cmd_string(), only ENGINE_ctrl(). + */ +int ENGINE_cmd_is_executable(ENGINE *e, int cmd); + +/* + * This function works like ENGINE_ctrl() with the exception of taking a + * command name instead of a command number, and can handle optional + * commands. See the comment on ENGINE_ctrl_cmd_string() for an explanation + * on how to use the cmd_name and cmd_optional. + */ +int ENGINE_ctrl_cmd(ENGINE *e, const char *cmd_name, + long i, void *p, void (*f) (void), int cmd_optional); + +/* + * This function passes a command-name and argument to an ENGINE. The + * cmd_name is converted to a command number and the control command is + * called using 'arg' as an argument (unless the ENGINE doesn't support such + * a command, in which case no control command is called). The command is + * checked for input flags, and if necessary the argument will be converted + * to a numeric value. If cmd_optional is non-zero, then if the ENGINE + * doesn't support the given cmd_name the return value will be success + * anyway. This function is intended for applications to use so that users + * (or config files) can supply engine-specific config data to the ENGINE at + * run-time to control behaviour of specific engines. As such, it shouldn't + * be used for calling ENGINE_ctrl() functions that return data, deal with + * binary data, or that are otherwise supposed to be used directly through + * ENGINE_ctrl() in application code. Any "return" data from an ENGINE_ctrl() + * operation in this function will be lost - the return value is interpreted + * as failure if the return value is zero, success otherwise, and this + * function returns a boolean value as a result. In other words, vendors of + * 'ENGINE'-enabled devices should write ENGINE implementations with + * parameterisations that work in this scheme, so that compliant ENGINE-based + * applications can work consistently with the same configuration for the + * same ENGINE-enabled devices, across applications. + */ +int ENGINE_ctrl_cmd_string(ENGINE *e, const char *cmd_name, const char *arg, + int cmd_optional); + +/* + * These functions are useful for manufacturing new ENGINE structures. They + * don't address reference counting at all - one uses them to populate an + * ENGINE structure with personalised implementations of things prior to + * using it directly or adding it to the builtin ENGINE list in OpenSSL. + * These are also here so that the ENGINE structure doesn't have to be + * exposed and break binary compatibility! + */ +ENGINE *ENGINE_new(void); +int ENGINE_free(ENGINE *e); +int ENGINE_up_ref(ENGINE *e); +int ENGINE_set_id(ENGINE *e, const char *id); +int ENGINE_set_name(ENGINE *e, const char *name); +int ENGINE_set_RSA(ENGINE *e, const RSA_METHOD *rsa_meth); +int ENGINE_set_DSA(ENGINE *e, const DSA_METHOD *dsa_meth); +int ENGINE_set_ECDH(ENGINE *e, const ECDH_METHOD *ecdh_meth); +int ENGINE_set_ECDSA(ENGINE *e, const ECDSA_METHOD *ecdsa_meth); +int ENGINE_set_DH(ENGINE *e, const DH_METHOD *dh_meth); +int ENGINE_set_RAND(ENGINE *e, const RAND_METHOD *rand_meth); +int ENGINE_set_STORE(ENGINE *e, const STORE_METHOD *store_meth); +int ENGINE_set_destroy_function(ENGINE *e, ENGINE_GEN_INT_FUNC_PTR destroy_f); +int ENGINE_set_init_function(ENGINE *e, ENGINE_GEN_INT_FUNC_PTR init_f); +int ENGINE_set_finish_function(ENGINE *e, ENGINE_GEN_INT_FUNC_PTR finish_f); +int ENGINE_set_ctrl_function(ENGINE *e, ENGINE_CTRL_FUNC_PTR ctrl_f); +int ENGINE_set_load_privkey_function(ENGINE *e, + ENGINE_LOAD_KEY_PTR loadpriv_f); +int ENGINE_set_load_pubkey_function(ENGINE *e, ENGINE_LOAD_KEY_PTR loadpub_f); +int ENGINE_set_load_ssl_client_cert_function(ENGINE *e, + ENGINE_SSL_CLIENT_CERT_PTR + loadssl_f); +int ENGINE_set_ciphers(ENGINE *e, ENGINE_CIPHERS_PTR f); +int ENGINE_set_digests(ENGINE *e, ENGINE_DIGESTS_PTR f); +int ENGINE_set_pkey_meths(ENGINE *e, ENGINE_PKEY_METHS_PTR f); +int ENGINE_set_pkey_asn1_meths(ENGINE *e, ENGINE_PKEY_ASN1_METHS_PTR f); +int ENGINE_set_flags(ENGINE *e, int flags); +int ENGINE_set_cmd_defns(ENGINE *e, const ENGINE_CMD_DEFN *defns); +/* These functions allow control over any per-structure ENGINE data. */ +int ENGINE_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new *new_func, + CRYPTO_EX_dup *dup_func, + CRYPTO_EX_free *free_func); +int ENGINE_set_ex_data(ENGINE *e, int idx, void *arg); +void *ENGINE_get_ex_data(const ENGINE *e, int idx); + +/* + * This function cleans up anything that needs it. Eg. the ENGINE_add() + * function automatically ensures the list cleanup function is registered to + * be called from ENGINE_cleanup(). Similarly, all ENGINE_register_*** + * functions ensure ENGINE_cleanup() will clean up after them. + */ +void ENGINE_cleanup(void); + +/* + * These return values from within the ENGINE structure. These can be useful + * with functional references as well as structural references - it depends + * which you obtained. Using the result for functional purposes if you only + * obtained a structural reference may be problematic! + */ +const char *ENGINE_get_id(const ENGINE *e); +const char *ENGINE_get_name(const ENGINE *e); +const RSA_METHOD *ENGINE_get_RSA(const ENGINE *e); +const DSA_METHOD *ENGINE_get_DSA(const ENGINE *e); +const ECDH_METHOD *ENGINE_get_ECDH(const ENGINE *e); +const ECDSA_METHOD *ENGINE_get_ECDSA(const ENGINE *e); +const DH_METHOD *ENGINE_get_DH(const ENGINE *e); +const RAND_METHOD *ENGINE_get_RAND(const ENGINE *e); +const STORE_METHOD *ENGINE_get_STORE(const ENGINE *e); +ENGINE_GEN_INT_FUNC_PTR ENGINE_get_destroy_function(const ENGINE *e); +ENGINE_GEN_INT_FUNC_PTR ENGINE_get_init_function(const ENGINE *e); +ENGINE_GEN_INT_FUNC_PTR ENGINE_get_finish_function(const ENGINE *e); +ENGINE_CTRL_FUNC_PTR ENGINE_get_ctrl_function(const ENGINE *e); +ENGINE_LOAD_KEY_PTR ENGINE_get_load_privkey_function(const ENGINE *e); +ENGINE_LOAD_KEY_PTR ENGINE_get_load_pubkey_function(const ENGINE *e); +ENGINE_SSL_CLIENT_CERT_PTR ENGINE_get_ssl_client_cert_function(const ENGINE + *e); +ENGINE_CIPHERS_PTR ENGINE_get_ciphers(const ENGINE *e); +ENGINE_DIGESTS_PTR ENGINE_get_digests(const ENGINE *e); +ENGINE_PKEY_METHS_PTR ENGINE_get_pkey_meths(const ENGINE *e); +ENGINE_PKEY_ASN1_METHS_PTR ENGINE_get_pkey_asn1_meths(const ENGINE *e); +const EVP_CIPHER *ENGINE_get_cipher(ENGINE *e, int nid); +const EVP_MD *ENGINE_get_digest(ENGINE *e, int nid); +const EVP_PKEY_METHOD *ENGINE_get_pkey_meth(ENGINE *e, int nid); +const EVP_PKEY_ASN1_METHOD *ENGINE_get_pkey_asn1_meth(ENGINE *e, int nid); +const EVP_PKEY_ASN1_METHOD *ENGINE_get_pkey_asn1_meth_str(ENGINE *e, + const char *str, + int len); +const EVP_PKEY_ASN1_METHOD *ENGINE_pkey_asn1_find_str(ENGINE **pe, + const char *str, + int len); +const ENGINE_CMD_DEFN *ENGINE_get_cmd_defns(const ENGINE *e); +int ENGINE_get_flags(const ENGINE *e); + +/* + * FUNCTIONAL functions. These functions deal with ENGINE structures that + * have (or will) be initialised for use. Broadly speaking, the structural + * functions are useful for iterating the list of available engine types, + * creating new engine types, and other "list" operations. These functions + * actually deal with ENGINEs that are to be used. As such these functions + * can fail (if applicable) when particular engines are unavailable - eg. if + * a hardware accelerator is not attached or not functioning correctly. Each + * ENGINE has 2 reference counts; structural and functional. Every time a + * functional reference is obtained or released, a corresponding structural + * reference is automatically obtained or released too. + */ + +/* + * Initialise a engine type for use (or up its reference count if it's + * already in use). This will fail if the engine is not currently operational + * and cannot initialise. + */ +int ENGINE_init(ENGINE *e); +/* + * Free a functional reference to a engine type. This does not require a + * corresponding call to ENGINE_free as it also releases a structural + * reference. + */ +int ENGINE_finish(ENGINE *e); + +/* + * The following functions handle keys that are stored in some secondary + * location, handled by the engine. The storage may be on a card or + * whatever. + */ +EVP_PKEY *ENGINE_load_private_key(ENGINE *e, const char *key_id, + UI_METHOD *ui_method, void *callback_data); +EVP_PKEY *ENGINE_load_public_key(ENGINE *e, const char *key_id, + UI_METHOD *ui_method, void *callback_data); +int ENGINE_load_ssl_client_cert(ENGINE *e, SSL *s, + STACK_OF(X509_NAME) *ca_dn, X509 **pcert, + EVP_PKEY **ppkey, STACK_OF(X509) **pother, + UI_METHOD *ui_method, void *callback_data); + +/* + * This returns a pointer for the current ENGINE structure that is (by + * default) performing any RSA operations. The value returned is an + * incremented reference, so it should be free'd (ENGINE_finish) before it is + * discarded. + */ +ENGINE *ENGINE_get_default_RSA(void); +/* Same for the other "methods" */ +ENGINE *ENGINE_get_default_DSA(void); +ENGINE *ENGINE_get_default_ECDH(void); +ENGINE *ENGINE_get_default_ECDSA(void); +ENGINE *ENGINE_get_default_DH(void); +ENGINE *ENGINE_get_default_RAND(void); +/* + * These functions can be used to get a functional reference to perform + * ciphering or digesting corresponding to "nid". + */ +ENGINE *ENGINE_get_cipher_engine(int nid); +ENGINE *ENGINE_get_digest_engine(int nid); +ENGINE *ENGINE_get_pkey_meth_engine(int nid); +ENGINE *ENGINE_get_pkey_asn1_meth_engine(int nid); + +/* + * This sets a new default ENGINE structure for performing RSA operations. If + * the result is non-zero (success) then the ENGINE structure will have had + * its reference count up'd so the caller should still free their own + * reference 'e'. + */ +int ENGINE_set_default_RSA(ENGINE *e); +int ENGINE_set_default_string(ENGINE *e, const char *def_list); +/* Same for the other "methods" */ +int ENGINE_set_default_DSA(ENGINE *e); +int ENGINE_set_default_ECDH(ENGINE *e); +int ENGINE_set_default_ECDSA(ENGINE *e); +int ENGINE_set_default_DH(ENGINE *e); +int ENGINE_set_default_RAND(ENGINE *e); +int ENGINE_set_default_ciphers(ENGINE *e); +int ENGINE_set_default_digests(ENGINE *e); +int ENGINE_set_default_pkey_meths(ENGINE *e); +int ENGINE_set_default_pkey_asn1_meths(ENGINE *e); + +/* + * The combination "set" - the flags are bitwise "OR"d from the + * ENGINE_METHOD_*** defines above. As with the "ENGINE_register_complete()" + * function, this function can result in unnecessary static linkage. If your + * application requires only specific functionality, consider using more + * selective functions. + */ +int ENGINE_set_default(ENGINE *e, unsigned int flags); + +void ENGINE_add_conf_module(void); + +/* Deprecated functions ... */ +/* int ENGINE_clear_defaults(void); */ + +/**************************/ +/* DYNAMIC ENGINE SUPPORT */ +/**************************/ + +/* Binary/behaviour compatibility levels */ +# define OSSL_DYNAMIC_VERSION (unsigned long)0x00020000 +/* + * Binary versions older than this are too old for us (whether we're a loader + * or a loadee) + */ +# define OSSL_DYNAMIC_OLDEST (unsigned long)0x00020000 + +/* + * When compiling an ENGINE entirely as an external shared library, loadable + * by the "dynamic" ENGINE, these types are needed. The 'dynamic_fns' + * structure type provides the calling application's (or library's) error + * functionality and memory management function pointers to the loaded + * library. These should be used/set in the loaded library code so that the + * loading application's 'state' will be used/changed in all operations. The + * 'static_state' pointer allows the loaded library to know if it shares the + * same static data as the calling application (or library), and thus whether + * these callbacks need to be set or not. + */ +typedef void *(*dyn_MEM_malloc_cb) (size_t); +typedef void *(*dyn_MEM_realloc_cb) (void *, size_t); +typedef void (*dyn_MEM_free_cb) (void *); +typedef struct st_dynamic_MEM_fns { + dyn_MEM_malloc_cb malloc_cb; + dyn_MEM_realloc_cb realloc_cb; + dyn_MEM_free_cb free_cb; +} dynamic_MEM_fns; +/* + * FIXME: Perhaps the memory and locking code (crypto.h) should declare and + * use these types so we (and any other dependant code) can simplify a bit?? + */ +typedef void (*dyn_lock_locking_cb) (int, int, const char *, int); +typedef int (*dyn_lock_add_lock_cb) (int *, int, int, const char *, int); +typedef struct CRYPTO_dynlock_value *(*dyn_dynlock_create_cb) (const char *, + int); +typedef void (*dyn_dynlock_lock_cb) (int, struct CRYPTO_dynlock_value *, + const char *, int); +typedef void (*dyn_dynlock_destroy_cb) (struct CRYPTO_dynlock_value *, + const char *, int); +typedef struct st_dynamic_LOCK_fns { + dyn_lock_locking_cb lock_locking_cb; + dyn_lock_add_lock_cb lock_add_lock_cb; + dyn_dynlock_create_cb dynlock_create_cb; + dyn_dynlock_lock_cb dynlock_lock_cb; + dyn_dynlock_destroy_cb dynlock_destroy_cb; +} dynamic_LOCK_fns; +/* The top-level structure */ +typedef struct st_dynamic_fns { + void *static_state; + const ERR_FNS *err_fns; + const CRYPTO_EX_DATA_IMPL *ex_data_fns; + dynamic_MEM_fns mem_fns; + dynamic_LOCK_fns lock_fns; +} dynamic_fns; + +/* + * The version checking function should be of this prototype. NB: The + * ossl_version value passed in is the OSSL_DYNAMIC_VERSION of the loading + * code. If this function returns zero, it indicates a (potential) version + * incompatibility and the loaded library doesn't believe it can proceed. + * Otherwise, the returned value is the (latest) version supported by the + * loading library. The loader may still decide that the loaded code's + * version is unsatisfactory and could veto the load. The function is + * expected to be implemented with the symbol name "v_check", and a default + * implementation can be fully instantiated with + * IMPLEMENT_DYNAMIC_CHECK_FN(). + */ +typedef unsigned long (*dynamic_v_check_fn) (unsigned long ossl_version); +# define IMPLEMENT_DYNAMIC_CHECK_FN() \ + OPENSSL_EXPORT unsigned long v_check(unsigned long v); \ + OPENSSL_EXPORT unsigned long v_check(unsigned long v) { \ + if(v >= OSSL_DYNAMIC_OLDEST) return OSSL_DYNAMIC_VERSION; \ + return 0; } + +/* + * This function is passed the ENGINE structure to initialise with its own + * function and command settings. It should not adjust the structural or + * functional reference counts. If this function returns zero, (a) the load + * will be aborted, (b) the previous ENGINE state will be memcpy'd back onto + * the structure, and (c) the shared library will be unloaded. So + * implementations should do their own internal cleanup in failure + * circumstances otherwise they could leak. The 'id' parameter, if non-NULL, + * represents the ENGINE id that the loader is looking for. If this is NULL, + * the shared library can choose to return failure or to initialise a + * 'default' ENGINE. If non-NULL, the shared library must initialise only an + * ENGINE matching the passed 'id'. The function is expected to be + * implemented with the symbol name "bind_engine". A standard implementation + * can be instantiated with IMPLEMENT_DYNAMIC_BIND_FN(fn) where the parameter + * 'fn' is a callback function that populates the ENGINE structure and + * returns an int value (zero for failure). 'fn' should have prototype; + * [static] int fn(ENGINE *e, const char *id); + */ +typedef int (*dynamic_bind_engine) (ENGINE *e, const char *id, + const dynamic_fns *fns); +# define IMPLEMENT_DYNAMIC_BIND_FN(fn) \ + OPENSSL_EXPORT \ + int bind_engine(ENGINE *e, const char *id, const dynamic_fns *fns); \ + OPENSSL_EXPORT \ + int bind_engine(ENGINE *e, const char *id, const dynamic_fns *fns) { \ + if(ENGINE_get_static_state() == fns->static_state) goto skip_cbs; \ + if(!CRYPTO_set_mem_functions(fns->mem_fns.malloc_cb, \ + fns->mem_fns.realloc_cb, fns->mem_fns.free_cb)) \ + return 0; \ + CRYPTO_set_locking_callback(fns->lock_fns.lock_locking_cb); \ + CRYPTO_set_add_lock_callback(fns->lock_fns.lock_add_lock_cb); \ + CRYPTO_set_dynlock_create_callback(fns->lock_fns.dynlock_create_cb); \ + CRYPTO_set_dynlock_lock_callback(fns->lock_fns.dynlock_lock_cb); \ + CRYPTO_set_dynlock_destroy_callback(fns->lock_fns.dynlock_destroy_cb); \ + if(!CRYPTO_set_ex_data_implementation(fns->ex_data_fns)) \ + return 0; \ + if(!ERR_set_implementation(fns->err_fns)) return 0; \ + skip_cbs: \ + if(!fn(e,id)) return 0; \ + return 1; } + +/* + * If the loading application (or library) and the loaded ENGINE library + * share the same static data (eg. they're both dynamically linked to the + * same libcrypto.so) we need a way to avoid trying to set system callbacks - + * this would fail, and for the same reason that it's unnecessary to try. If + * the loaded ENGINE has (or gets from through the loader) its own copy of + * the libcrypto static data, we will need to set the callbacks. The easiest + * way to detect this is to have a function that returns a pointer to some + * static data and let the loading application and loaded ENGINE compare + * their respective values. + */ +void *ENGINE_get_static_state(void); + +# if defined(__OpenBSD__) || defined(__FreeBSD__) || defined(HAVE_CRYPTODEV) +void ENGINE_setup_bsd_cryptodev(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_ENGINE_strings(void); + +/* Error codes for the ENGINE functions. */ + +/* Function codes. */ +# define ENGINE_F_DYNAMIC_CTRL 180 +# define ENGINE_F_DYNAMIC_GET_DATA_CTX 181 +# define ENGINE_F_DYNAMIC_LOAD 182 +# define ENGINE_F_DYNAMIC_SET_DATA_CTX 183 +# define ENGINE_F_ENGINE_ADD 105 +# define ENGINE_F_ENGINE_BY_ID 106 +# define ENGINE_F_ENGINE_CMD_IS_EXECUTABLE 170 +# define ENGINE_F_ENGINE_CTRL 142 +# define ENGINE_F_ENGINE_CTRL_CMD 178 +# define ENGINE_F_ENGINE_CTRL_CMD_STRING 171 +# define ENGINE_F_ENGINE_FINISH 107 +# define ENGINE_F_ENGINE_FREE_UTIL 108 +# define ENGINE_F_ENGINE_GET_CIPHER 185 +# define ENGINE_F_ENGINE_GET_DEFAULT_TYPE 177 +# define ENGINE_F_ENGINE_GET_DIGEST 186 +# define ENGINE_F_ENGINE_GET_NEXT 115 +# define ENGINE_F_ENGINE_GET_PKEY_ASN1_METH 193 +# define ENGINE_F_ENGINE_GET_PKEY_METH 192 +# define ENGINE_F_ENGINE_GET_PREV 116 +# define ENGINE_F_ENGINE_INIT 119 +# define ENGINE_F_ENGINE_LIST_ADD 120 +# define ENGINE_F_ENGINE_LIST_REMOVE 121 +# define ENGINE_F_ENGINE_LOAD_PRIVATE_KEY 150 +# define ENGINE_F_ENGINE_LOAD_PUBLIC_KEY 151 +# define ENGINE_F_ENGINE_LOAD_SSL_CLIENT_CERT 194 +# define ENGINE_F_ENGINE_NEW 122 +# define ENGINE_F_ENGINE_REMOVE 123 +# define ENGINE_F_ENGINE_SET_DEFAULT_STRING 189 +# define ENGINE_F_ENGINE_SET_DEFAULT_TYPE 126 +# define ENGINE_F_ENGINE_SET_ID 129 +# define ENGINE_F_ENGINE_SET_NAME 130 +# define ENGINE_F_ENGINE_TABLE_REGISTER 184 +# define ENGINE_F_ENGINE_UNLOAD_KEY 152 +# define ENGINE_F_ENGINE_UNLOCKED_FINISH 191 +# define ENGINE_F_ENGINE_UP_REF 190 +# define ENGINE_F_INT_CTRL_HELPER 172 +# define ENGINE_F_INT_ENGINE_CONFIGURE 188 +# define ENGINE_F_INT_ENGINE_MODULE_INIT 187 +# define ENGINE_F_LOG_MESSAGE 141 + +/* Reason codes. */ +# define ENGINE_R_ALREADY_LOADED 100 +# define ENGINE_R_ARGUMENT_IS_NOT_A_NUMBER 133 +# define ENGINE_R_CMD_NOT_EXECUTABLE 134 +# define ENGINE_R_COMMAND_TAKES_INPUT 135 +# define ENGINE_R_COMMAND_TAKES_NO_INPUT 136 +# define ENGINE_R_CONFLICTING_ENGINE_ID 103 +# define ENGINE_R_CTRL_COMMAND_NOT_IMPLEMENTED 119 +# define ENGINE_R_DH_NOT_IMPLEMENTED 139 +# define ENGINE_R_DSA_NOT_IMPLEMENTED 140 +# define ENGINE_R_DSO_FAILURE 104 +# define ENGINE_R_DSO_NOT_FOUND 132 +# define ENGINE_R_ENGINES_SECTION_ERROR 148 +# define ENGINE_R_ENGINE_CONFIGURATION_ERROR 102 +# define ENGINE_R_ENGINE_IS_NOT_IN_LIST 105 +# define ENGINE_R_ENGINE_SECTION_ERROR 149 +# define ENGINE_R_FAILED_LOADING_PRIVATE_KEY 128 +# define ENGINE_R_FAILED_LOADING_PUBLIC_KEY 129 +# define ENGINE_R_FINISH_FAILED 106 +# define ENGINE_R_GET_HANDLE_FAILED 107 +# define ENGINE_R_ID_OR_NAME_MISSING 108 +# define ENGINE_R_INIT_FAILED 109 +# define ENGINE_R_INTERNAL_LIST_ERROR 110 +# define ENGINE_R_INVALID_ARGUMENT 143 +# define ENGINE_R_INVALID_CMD_NAME 137 +# define ENGINE_R_INVALID_CMD_NUMBER 138 +# define ENGINE_R_INVALID_INIT_VALUE 151 +# define ENGINE_R_INVALID_STRING 150 +# define ENGINE_R_NOT_INITIALISED 117 +# define ENGINE_R_NOT_LOADED 112 +# define ENGINE_R_NO_CONTROL_FUNCTION 120 +# define ENGINE_R_NO_INDEX 144 +# define ENGINE_R_NO_LOAD_FUNCTION 125 +# define ENGINE_R_NO_REFERENCE 130 +# define ENGINE_R_NO_SUCH_ENGINE 116 +# define ENGINE_R_NO_UNLOAD_FUNCTION 126 +# define ENGINE_R_PROVIDE_PARAMETERS 113 +# define ENGINE_R_RSA_NOT_IMPLEMENTED 141 +# define ENGINE_R_UNIMPLEMENTED_CIPHER 146 +# define ENGINE_R_UNIMPLEMENTED_DIGEST 147 +# define ENGINE_R_UNIMPLEMENTED_PUBLIC_KEY_METHOD 101 +# define ENGINE_R_VERSION_INCOMPATIBILITY 145 + +#ifdef __cplusplus +} +#endif +#endif diff --git a/ext/openssl-osx/include/nope/idea.h b/ext/openssl-osx/include/nope/idea.h new file mode 100644 index 00000000..60759840 --- /dev/null +++ b/ext/openssl-osx/include/nope/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/ext/openssl-osx/include/nope/krb5_asn.h b/ext/openssl-osx/include/nope/krb5_asn.h new file mode 100644 index 00000000..9cf5a26d --- /dev/null +++ b/ext/openssl-osx/include/nope/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/ext/openssl-osx/include/nope/md4.h b/ext/openssl-osx/include/nope/md4.h new file mode 100644 index 00000000..11fd7129 --- /dev/null +++ b/ext/openssl-osx/include/nope/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/ext/openssl-osx/include/nope/md5.h b/ext/openssl-osx/include/nope/md5.h new file mode 100644 index 00000000..2659038a --- /dev/null +++ b/ext/openssl-osx/include/nope/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/ext/openssl-osx/include/nope/mdc2.h b/ext/openssl-osx/include/nope/mdc2.h new file mode 100644 index 00000000..7efe53bc --- /dev/null +++ b/ext/openssl-osx/include/nope/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/ext/openssl-osx/include/nope/modes.h b/ext/openssl-osx/include/nope/modes.h new file mode 100644 index 00000000..fd488499 --- /dev/null +++ b/ext/openssl-osx/include/nope/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/ext/openssl-osx/include/nope/ocsp.h b/ext/openssl-osx/include/nope/ocsp.h new file mode 100644 index 00000000..ca2ee76d --- /dev/null +++ b/ext/openssl-osx/include/nope/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/ext/openssl-osx/include/nope/pkcs12.h b/ext/openssl-osx/include/nope/pkcs12.h new file mode 100644 index 00000000..a39adf5e --- /dev/null +++ b/ext/openssl-osx/include/nope/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, char *oldpass, 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/ext/openssl-osx/include/nope/rand.h b/ext/openssl-osx/include/nope/rand.h new file mode 100644 index 00000000..2553afda --- /dev/null +++ b/ext/openssl-osx/include/nope/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/ext/openssl-osx/include/nope/rc2.h b/ext/openssl-osx/include/nope/rc2.h new file mode 100644 index 00000000..29d02d73 --- /dev/null +++ b/ext/openssl-osx/include/nope/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/ext/openssl-osx/include/nope/rc4.h b/ext/openssl-osx/include/nope/rc4.h new file mode 100644 index 00000000..39162b16 --- /dev/null +++ b/ext/openssl-osx/include/nope/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/ext/openssl-osx/include/nope/ripemd.h b/ext/openssl-osx/include/nope/ripemd.h new file mode 100644 index 00000000..b88ef25e --- /dev/null +++ b/ext/openssl-osx/include/nope/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/ext/openssl-osx/include/nope/seed.h b/ext/openssl-osx/include/nope/seed.h new file mode 100644 index 00000000..8cbf0d92 --- /dev/null +++ b/ext/openssl-osx/include/nope/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/ext/openssl-osx/include/nope/srp.h b/ext/openssl-osx/include/nope/srp.h new file mode 100644 index 00000000..d072536f --- /dev/null +++ b/ext/openssl-osx/include/nope/srp.h @@ -0,0 +1,169 @@ +/* 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 { + char *id; + BIGNUM *s; + BIGNUM *v; + const BIGNUM *g; + const BIGNUM *N; + char *info; +} SRP_user_pwd; + +DECLARE_STACK_OF(SRP_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); +SRP_user_pwd *SRP_VBASE_get_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/ext/openssl-osx/include/nope/ts.h b/ext/openssl-osx/include/nope/ts.h new file mode 100644 index 00000000..16eccbb3 --- /dev/null +++ b/ext/openssl-osx/include/nope/ts.h @@ -0,0 +1,862 @@ +/* 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 + +/* 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/ext/openssl-osx/include/nope/txt_db.h b/ext/openssl-osx/include/nope/txt_db.h new file mode 100644 index 00000000..98e23a20 --- /dev/null +++ b/ext/openssl-osx/include/nope/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/ext/openssl-osx/include/nope/ui.h b/ext/openssl-osx/include/nope/ui.h new file mode 100644 index 00000000..b917edab --- /dev/null +++ b/ext/openssl-osx/include/nope/ui.h @@ -0,0 +1,415 @@ +/* crypto/ui/ui.h -*- mode:C; c-file-style: "eay" -*- */ +/* + * 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/ext/openssl-osx/include/nope/ui_compat.h b/ext/openssl-osx/include/nope/ui_compat.h new file mode 100644 index 00000000..42fb9ff6 --- /dev/null +++ b/ext/openssl-osx/include/nope/ui_compat.h @@ -0,0 +1,88 @@ +/* crypto/ui/ui.h -*- mode:C; c-file-style: "eay" -*- */ +/* + * 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/ext/openssl-osx/include/nope/whrlpool.h b/ext/openssl-osx/include/nope/whrlpool.h new file mode 100644 index 00000000..73c749da --- /dev/null +++ b/ext/openssl-osx/include/nope/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/ext/openssl-osx/include/nope/x509v3.h b/ext/openssl-osx/include/nope/x509v3.h new file mode 100644 index 00000000..f5c61560 --- /dev/null +++ b/ext/openssl-osx/include/nope/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/ext/openssl-osx/include/openssl/asn1.h b/ext/openssl-osx/include/openssl/asn1.h new file mode 100644 index 00000000..bb6ac95b --- /dev/null +++ b/ext/openssl-osx/include/openssl/asn1.h @@ -0,0 +1,1418 @@ +/* crypto/asn1/asn1.h */ +/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) + * All rights reserved. + * + * This package is an SSL implementation written + * by Eric Young (eay@cryptsoft.com). + * The implementation was written so as to conform with Netscapes SSL. + * + * This library is free for commercial and non-commercial use as long as + * the following conditions are aheared to. The following conditions + * apply to all code found in this distribution, be it the RC4, RSA, + * lhash, DES, etc., code; not just the SSL code. The SSL documentation + * included with this distribution is covered by the same copyright terms + * except that the holder is Tim Hudson (tjh@cryptsoft.com). + * + * Copyright remains Eric Young's, and as such any Copyright notices in + * the code are not to be removed. + * If this package is used in a product, Eric Young should be given attribution + * as the author of the parts of the library used. + * This can be in the form of a textual message at program startup or + * in documentation (online or textual) provided with the package. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * "This product includes cryptographic software written by + * Eric Young (eay@cryptsoft.com)" + * The word 'cryptographic' can be left out if the rouines from the library + * being used are not cryptographic related :-). + * 4. If you include any Windows specific code (or a derivative thereof) from + * the apps directory (application code) you must include an acknowledgement: + * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" + * + * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * The licence and distribution terms for any publically available version or + * derivative of this code cannot be changed. i.e. this code cannot simply be + * copied and put under another distribution licence + * [including the GNU Public Licence.] + */ + +#ifndef HEADER_ASN1_H +# define HEADER_ASN1_H + +# include +# include +# ifndef OPENSSL_NO_BIO +# include +# endif +# include +# include + +# include + +# include +# ifndef OPENSSL_NO_DEPRECATED +# include +# endif + +# ifdef OPENSSL_BUILD_SHLIBCRYPTO +# undef OPENSSL_EXTERN +# define OPENSSL_EXTERN OPENSSL_EXPORT +# endif + +#ifdef __cplusplus +extern "C" { +#endif + +# define V_ASN1_UNIVERSAL 0x00 +# define V_ASN1_APPLICATION 0x40 +# define V_ASN1_CONTEXT_SPECIFIC 0x80 +# define V_ASN1_PRIVATE 0xc0 + +# define V_ASN1_CONSTRUCTED 0x20 +# define V_ASN1_PRIMITIVE_TAG 0x1f +# define V_ASN1_PRIMATIVE_TAG 0x1f + +# define V_ASN1_APP_CHOOSE -2/* let the recipient choose */ +# define V_ASN1_OTHER -3/* used in ASN1_TYPE */ +# define V_ASN1_ANY -4/* used in ASN1 template code */ + +# define V_ASN1_NEG 0x100/* negative flag */ + +# define V_ASN1_UNDEF -1 +# define V_ASN1_EOC 0 +# define V_ASN1_BOOLEAN 1 /**/ +# define V_ASN1_INTEGER 2 +# define V_ASN1_NEG_INTEGER (2 | V_ASN1_NEG) +# define V_ASN1_BIT_STRING 3 +# define V_ASN1_OCTET_STRING 4 +# define V_ASN1_NULL 5 +# define V_ASN1_OBJECT 6 +# define V_ASN1_OBJECT_DESCRIPTOR 7 +# define V_ASN1_EXTERNAL 8 +# define V_ASN1_REAL 9 +# define V_ASN1_ENUMERATED 10 +# define V_ASN1_NEG_ENUMERATED (10 | V_ASN1_NEG) +# define V_ASN1_UTF8STRING 12 +# define V_ASN1_SEQUENCE 16 +# define V_ASN1_SET 17 +# define V_ASN1_NUMERICSTRING 18 /**/ +# define V_ASN1_PRINTABLESTRING 19 +# define V_ASN1_T61STRING 20 +# define V_ASN1_TELETEXSTRING 20/* alias */ +# define V_ASN1_VIDEOTEXSTRING 21 /**/ +# define V_ASN1_IA5STRING 22 +# define V_ASN1_UTCTIME 23 +# define V_ASN1_GENERALIZEDTIME 24 /**/ +# define V_ASN1_GRAPHICSTRING 25 /**/ +# define V_ASN1_ISO64STRING 26 /**/ +# define V_ASN1_VISIBLESTRING 26/* alias */ +# define V_ASN1_GENERALSTRING 27 /**/ +# define V_ASN1_UNIVERSALSTRING 28 /**/ +# define V_ASN1_BMPSTRING 30 +/* For use with d2i_ASN1_type_bytes() */ +# define B_ASN1_NUMERICSTRING 0x0001 +# define B_ASN1_PRINTABLESTRING 0x0002 +# define B_ASN1_T61STRING 0x0004 +# define B_ASN1_TELETEXSTRING 0x0004 +# define B_ASN1_VIDEOTEXSTRING 0x0008 +# define B_ASN1_IA5STRING 0x0010 +# define B_ASN1_GRAPHICSTRING 0x0020 +# define B_ASN1_ISO64STRING 0x0040 +# define B_ASN1_VISIBLESTRING 0x0040 +# define B_ASN1_GENERALSTRING 0x0080 +# define B_ASN1_UNIVERSALSTRING 0x0100 +# define B_ASN1_OCTET_STRING 0x0200 +# define B_ASN1_BIT_STRING 0x0400 +# define B_ASN1_BMPSTRING 0x0800 +# define B_ASN1_UNKNOWN 0x1000 +# define B_ASN1_UTF8STRING 0x2000 +# define B_ASN1_UTCTIME 0x4000 +# define B_ASN1_GENERALIZEDTIME 0x8000 +# define B_ASN1_SEQUENCE 0x10000 +/* For use with ASN1_mbstring_copy() */ +# define MBSTRING_FLAG 0x1000 +# define MBSTRING_UTF8 (MBSTRING_FLAG) +# define MBSTRING_ASC (MBSTRING_FLAG|1) +# define MBSTRING_BMP (MBSTRING_FLAG|2) +# define MBSTRING_UNIV (MBSTRING_FLAG|4) +# define SMIME_OLDMIME 0x400 +# define SMIME_CRLFEOL 0x800 +# define SMIME_STREAM 0x1000 + struct X509_algor_st; +DECLARE_STACK_OF(X509_ALGOR) + +# define DECLARE_ASN1_SET_OF(type)/* filled in by mkstack.pl */ +# define IMPLEMENT_ASN1_SET_OF(type)/* nothing, no longer needed */ + +/* + * We MUST make sure that, except for constness, asn1_ctx_st and + * asn1_const_ctx are exactly the same. Fortunately, as soon as the old ASN1 + * parsing macros are gone, we can throw this away as well... + */ +typedef struct asn1_ctx_st { + unsigned char *p; /* work char pointer */ + int eos; /* end of sequence read for indefinite + * encoding */ + int error; /* error code to use when returning an error */ + int inf; /* constructed if 0x20, indefinite is 0x21 */ + int tag; /* tag from last 'get object' */ + int xclass; /* class from last 'get object' */ + long slen; /* length of last 'get object' */ + unsigned char *max; /* largest value of p allowed */ + unsigned char *q; /* temporary variable */ + unsigned char **pp; /* variable */ + int line; /* used in error processing */ +} ASN1_CTX; + +typedef struct asn1_const_ctx_st { + const unsigned char *p; /* work char pointer */ + int eos; /* end of sequence read for indefinite + * encoding */ + int error; /* error code to use when returning an error */ + int inf; /* constructed if 0x20, indefinite is 0x21 */ + int tag; /* tag from last 'get object' */ + int xclass; /* class from last 'get object' */ + long slen; /* length of last 'get object' */ + const unsigned char *max; /* largest value of p allowed */ + const unsigned char *q; /* temporary variable */ + const unsigned char **pp; /* variable */ + int line; /* used in error processing */ +} ASN1_const_CTX; + +/* + * These are used internally in the ASN1_OBJECT to keep track of whether the + * names and data need to be free()ed + */ +# define ASN1_OBJECT_FLAG_DYNAMIC 0x01/* internal use */ +# define ASN1_OBJECT_FLAG_CRITICAL 0x02/* critical x509v3 object id */ +# define ASN1_OBJECT_FLAG_DYNAMIC_STRINGS 0x04/* internal use */ +# define ASN1_OBJECT_FLAG_DYNAMIC_DATA 0x08/* internal use */ +struct asn1_object_st { + const char *sn, *ln; + int nid; + int length; + const unsigned char *data; /* data remains const after init */ + int flags; /* Should we free this one */ +}; + +# define ASN1_STRING_FLAG_BITS_LEFT 0x08/* Set if 0x07 has bits left value */ +/* + * This indicates that the ASN1_STRING is not a real value but just a place + * holder for the location where indefinite length constructed data should be + * inserted in the memory buffer + */ +# define ASN1_STRING_FLAG_NDEF 0x010 + +/* + * This flag is used by the CMS code to indicate that a string is not + * complete and is a place holder for content when it had all been accessed. + * The flag will be reset when content has been written to it. + */ + +# define ASN1_STRING_FLAG_CONT 0x020 +/* + * This flag is used by ASN1 code to indicate an ASN1_STRING is an MSTRING + * type. + */ +# define ASN1_STRING_FLAG_MSTRING 0x040 +/* This is the base type that holds just about everything :-) */ +struct asn1_string_st { + int length; + int type; + unsigned char *data; + /* + * The value of the following field depends on the type being held. It + * is mostly being used for BIT_STRING so if the input data has a + * non-zero 'unused bits' value, it will be handled correctly + */ + long flags; +}; + +/* + * ASN1_ENCODING structure: this is used to save the received encoding of an + * ASN1 type. This is useful to get round problems with invalid encodings + * which can break signatures. + */ + +typedef struct ASN1_ENCODING_st { + unsigned char *enc; /* DER encoding */ + long len; /* Length of encoding */ + int modified; /* set to 1 if 'enc' is invalid */ +} ASN1_ENCODING; + +/* Used with ASN1 LONG type: if a long is set to this it is omitted */ +# define ASN1_LONG_UNDEF 0x7fffffffL + +# define STABLE_FLAGS_MALLOC 0x01 +# define STABLE_NO_MASK 0x02 +# define DIRSTRING_TYPE \ + (B_ASN1_PRINTABLESTRING|B_ASN1_T61STRING|B_ASN1_BMPSTRING|B_ASN1_UTF8STRING) +# define PKCS9STRING_TYPE (DIRSTRING_TYPE|B_ASN1_IA5STRING) + +typedef struct asn1_string_table_st { + int nid; + long minsize; + long maxsize; + unsigned long mask; + unsigned long flags; +} ASN1_STRING_TABLE; + +DECLARE_STACK_OF(ASN1_STRING_TABLE) + +/* size limits: this stuff is taken straight from RFC2459 */ + +# define ub_name 32768 +# define ub_common_name 64 +# define ub_locality_name 128 +# define ub_state_name 128 +# define ub_organization_name 64 +# define ub_organization_unit_name 64 +# define ub_title 64 +# define ub_email_address 128 + +/* + * Declarations for template structures: for full definitions see asn1t.h + */ +typedef struct ASN1_TEMPLATE_st ASN1_TEMPLATE; +typedef struct ASN1_TLC_st ASN1_TLC; +/* This is just an opaque pointer */ +typedef struct ASN1_VALUE_st ASN1_VALUE; + +/* Declare ASN1 functions: the implement macro in in asn1t.h */ + +# define DECLARE_ASN1_FUNCTIONS(type) DECLARE_ASN1_FUNCTIONS_name(type, type) + +# define DECLARE_ASN1_ALLOC_FUNCTIONS(type) \ + DECLARE_ASN1_ALLOC_FUNCTIONS_name(type, type) + +# define DECLARE_ASN1_FUNCTIONS_name(type, name) \ + DECLARE_ASN1_ALLOC_FUNCTIONS_name(type, name) \ + DECLARE_ASN1_ENCODE_FUNCTIONS(type, name, name) + +# define DECLARE_ASN1_FUNCTIONS_fname(type, itname, name) \ + DECLARE_ASN1_ALLOC_FUNCTIONS_name(type, name) \ + DECLARE_ASN1_ENCODE_FUNCTIONS(type, itname, name) + +# define DECLARE_ASN1_ENCODE_FUNCTIONS(type, itname, name) \ + type *d2i_##name(type **a, const unsigned char **in, long len); \ + int i2d_##name(type *a, unsigned char **out); \ + DECLARE_ASN1_ITEM(itname) + +# define DECLARE_ASN1_ENCODE_FUNCTIONS_const(type, name) \ + type *d2i_##name(type **a, const unsigned char **in, long len); \ + int i2d_##name(const type *a, unsigned char **out); \ + DECLARE_ASN1_ITEM(name) + +# define DECLARE_ASN1_NDEF_FUNCTION(name) \ + int i2d_##name##_NDEF(name *a, unsigned char **out); + +# define DECLARE_ASN1_FUNCTIONS_const(name) \ + DECLARE_ASN1_ALLOC_FUNCTIONS(name) \ + DECLARE_ASN1_ENCODE_FUNCTIONS_const(name, name) + +# define DECLARE_ASN1_ALLOC_FUNCTIONS_name(type, name) \ + type *name##_new(void); \ + void name##_free(type *a); + +# define DECLARE_ASN1_PRINT_FUNCTION(stname) \ + DECLARE_ASN1_PRINT_FUNCTION_fname(stname, stname) + +# define DECLARE_ASN1_PRINT_FUNCTION_fname(stname, fname) \ + int fname##_print_ctx(BIO *out, stname *x, int indent, \ + const ASN1_PCTX *pctx); + +# define D2I_OF(type) type *(*)(type **,const unsigned char **,long) +# define I2D_OF(type) int (*)(type *,unsigned char **) +# define I2D_OF_const(type) int (*)(const type *,unsigned char **) + +# define CHECKED_D2I_OF(type, d2i) \ + ((d2i_of_void*) (1 ? d2i : ((D2I_OF(type))0))) +# define CHECKED_I2D_OF(type, i2d) \ + ((i2d_of_void*) (1 ? i2d : ((I2D_OF(type))0))) +# define CHECKED_NEW_OF(type, xnew) \ + ((void *(*)(void)) (1 ? xnew : ((type *(*)(void))0))) +# define CHECKED_PTR_OF(type, p) \ + ((void*) (1 ? p : (type*)0)) +# define CHECKED_PPTR_OF(type, p) \ + ((void**) (1 ? p : (type**)0)) + +# define TYPEDEF_D2I_OF(type) typedef type *d2i_of_##type(type **,const unsigned char **,long) +# define TYPEDEF_I2D_OF(type) typedef int i2d_of_##type(type *,unsigned char **) +# define TYPEDEF_D2I2D_OF(type) TYPEDEF_D2I_OF(type); TYPEDEF_I2D_OF(type) + +TYPEDEF_D2I2D_OF(void); + +/*- + * The following macros and typedefs allow an ASN1_ITEM + * to be embedded in a structure and referenced. Since + * the ASN1_ITEM pointers need to be globally accessible + * (possibly from shared libraries) they may exist in + * different forms. On platforms that support it the + * ASN1_ITEM structure itself will be globally exported. + * Other platforms will export a function that returns + * an ASN1_ITEM pointer. + * + * To handle both cases transparently the macros below + * should be used instead of hard coding an ASN1_ITEM + * pointer in a structure. + * + * The structure will look like this: + * + * typedef struct SOMETHING_st { + * ... + * ASN1_ITEM_EXP *iptr; + * ... + * } SOMETHING; + * + * It would be initialised as e.g.: + * + * SOMETHING somevar = {...,ASN1_ITEM_ref(X509),...}; + * + * and the actual pointer extracted with: + * + * const ASN1_ITEM *it = ASN1_ITEM_ptr(somevar.iptr); + * + * Finally an ASN1_ITEM pointer can be extracted from an + * appropriate reference with: ASN1_ITEM_rptr(X509). This + * would be used when a function takes an ASN1_ITEM * argument. + * + */ + +# ifndef OPENSSL_EXPORT_VAR_AS_FUNCTION + +/* ASN1_ITEM pointer exported type */ +typedef const ASN1_ITEM ASN1_ITEM_EXP; + +/* Macro to obtain ASN1_ITEM pointer from exported type */ +# define ASN1_ITEM_ptr(iptr) (iptr) + +/* Macro to include ASN1_ITEM pointer from base type */ +# define ASN1_ITEM_ref(iptr) (&(iptr##_it)) + +# define ASN1_ITEM_rptr(ref) (&(ref##_it)) + +# define DECLARE_ASN1_ITEM(name) \ + OPENSSL_EXTERN const ASN1_ITEM name##_it; + +# else + +/* + * Platforms that can't easily handle shared global variables are declared as + * functions returning ASN1_ITEM pointers. + */ + +/* ASN1_ITEM pointer exported type */ +typedef const ASN1_ITEM *ASN1_ITEM_EXP (void); + +/* Macro to obtain ASN1_ITEM pointer from exported type */ +# define ASN1_ITEM_ptr(iptr) (iptr()) + +/* Macro to include ASN1_ITEM pointer from base type */ +# define ASN1_ITEM_ref(iptr) (iptr##_it) + +# define ASN1_ITEM_rptr(ref) (ref##_it()) + +# define DECLARE_ASN1_ITEM(name) \ + const ASN1_ITEM * name##_it(void); + +# endif + +/* Parameters used by ASN1_STRING_print_ex() */ + +/* + * These determine which characters to escape: RFC2253 special characters, + * control characters and MSB set characters + */ + +# define ASN1_STRFLGS_ESC_2253 1 +# define ASN1_STRFLGS_ESC_CTRL 2 +# define ASN1_STRFLGS_ESC_MSB 4 + +/* + * This flag determines how we do escaping: normally RC2253 backslash only, + * set this to use backslash and quote. + */ + +# define ASN1_STRFLGS_ESC_QUOTE 8 + +/* These three flags are internal use only. */ + +/* Character is a valid PrintableString character */ +# define CHARTYPE_PRINTABLESTRING 0x10 +/* Character needs escaping if it is the first character */ +# define CHARTYPE_FIRST_ESC_2253 0x20 +/* Character needs escaping if it is the last character */ +# define CHARTYPE_LAST_ESC_2253 0x40 + +/* + * NB the internal flags are safely reused below by flags handled at the top + * level. + */ + +/* + * If this is set we convert all character strings to UTF8 first + */ + +# define ASN1_STRFLGS_UTF8_CONVERT 0x10 + +/* + * If this is set we don't attempt to interpret content: just assume all + * strings are 1 byte per character. This will produce some pretty odd + * looking output! + */ + +# define ASN1_STRFLGS_IGNORE_TYPE 0x20 + +/* If this is set we include the string type in the output */ +# define ASN1_STRFLGS_SHOW_TYPE 0x40 + +/* + * This determines which strings to display and which to 'dump' (hex dump of + * content octets or DER encoding). We can only dump non character strings or + * everything. If we don't dump 'unknown' they are interpreted as character + * strings with 1 octet per character and are subject to the usual escaping + * options. + */ + +# define ASN1_STRFLGS_DUMP_ALL 0x80 +# define ASN1_STRFLGS_DUMP_UNKNOWN 0x100 + +/* + * These determine what 'dumping' does, we can dump the content octets or the + * DER encoding: both use the RFC2253 #XXXXX notation. + */ + +# define ASN1_STRFLGS_DUMP_DER 0x200 + +/* + * All the string flags consistent with RFC2253, escaping control characters + * isn't essential in RFC2253 but it is advisable anyway. + */ + +# define ASN1_STRFLGS_RFC2253 (ASN1_STRFLGS_ESC_2253 | \ + ASN1_STRFLGS_ESC_CTRL | \ + ASN1_STRFLGS_ESC_MSB | \ + ASN1_STRFLGS_UTF8_CONVERT | \ + ASN1_STRFLGS_DUMP_UNKNOWN | \ + ASN1_STRFLGS_DUMP_DER) + +DECLARE_STACK_OF(ASN1_INTEGER) +DECLARE_ASN1_SET_OF(ASN1_INTEGER) + +DECLARE_STACK_OF(ASN1_GENERALSTRING) + +typedef struct asn1_type_st { + int type; + union { + char *ptr; + ASN1_BOOLEAN boolean; + ASN1_STRING *asn1_string; + ASN1_OBJECT *object; + ASN1_INTEGER *integer; + ASN1_ENUMERATED *enumerated; + ASN1_BIT_STRING *bit_string; + ASN1_OCTET_STRING *octet_string; + ASN1_PRINTABLESTRING *printablestring; + ASN1_T61STRING *t61string; + ASN1_IA5STRING *ia5string; + ASN1_GENERALSTRING *generalstring; + ASN1_BMPSTRING *bmpstring; + ASN1_UNIVERSALSTRING *universalstring; + ASN1_UTCTIME *utctime; + ASN1_GENERALIZEDTIME *generalizedtime; + ASN1_VISIBLESTRING *visiblestring; + ASN1_UTF8STRING *utf8string; + /* + * set and sequence are left complete and still contain the set or + * sequence bytes + */ + ASN1_STRING *set; + ASN1_STRING *sequence; + ASN1_VALUE *asn1_value; + } value; +} ASN1_TYPE; + +DECLARE_STACK_OF(ASN1_TYPE) +DECLARE_ASN1_SET_OF(ASN1_TYPE) + +typedef STACK_OF(ASN1_TYPE) ASN1_SEQUENCE_ANY; + +DECLARE_ASN1_ENCODE_FUNCTIONS_const(ASN1_SEQUENCE_ANY, ASN1_SEQUENCE_ANY) +DECLARE_ASN1_ENCODE_FUNCTIONS_const(ASN1_SEQUENCE_ANY, ASN1_SET_ANY) + +typedef struct NETSCAPE_X509_st { + ASN1_OCTET_STRING *header; + X509 *cert; +} NETSCAPE_X509; + +/* This is used to contain a list of bit names */ +typedef struct BIT_STRING_BITNAME_st { + int bitnum; + const char *lname; + const char *sname; +} BIT_STRING_BITNAME; + +# define M_ASN1_STRING_length(x) ((x)->length) +# define M_ASN1_STRING_length_set(x, n) ((x)->length = (n)) +# define M_ASN1_STRING_type(x) ((x)->type) +# define M_ASN1_STRING_data(x) ((x)->data) + +/* Macros for string operations */ +# define M_ASN1_BIT_STRING_new() (ASN1_BIT_STRING *)\ + ASN1_STRING_type_new(V_ASN1_BIT_STRING) +# define M_ASN1_BIT_STRING_free(a) ASN1_STRING_free((ASN1_STRING *)a) +# define M_ASN1_BIT_STRING_dup(a) (ASN1_BIT_STRING *)\ + ASN1_STRING_dup((const ASN1_STRING *)a) +# define M_ASN1_BIT_STRING_cmp(a,b) ASN1_STRING_cmp(\ + (const ASN1_STRING *)a,(const ASN1_STRING *)b) +# define M_ASN1_BIT_STRING_set(a,b,c) ASN1_STRING_set((ASN1_STRING *)a,b,c) + +# define M_ASN1_INTEGER_new() (ASN1_INTEGER *)\ + ASN1_STRING_type_new(V_ASN1_INTEGER) +# define M_ASN1_INTEGER_free(a) ASN1_STRING_free((ASN1_STRING *)a) +# define M_ASN1_INTEGER_dup(a) (ASN1_INTEGER *)\ + ASN1_STRING_dup((const ASN1_STRING *)a) +# define M_ASN1_INTEGER_cmp(a,b) ASN1_STRING_cmp(\ + (const ASN1_STRING *)a,(const ASN1_STRING *)b) + +# define M_ASN1_ENUMERATED_new() (ASN1_ENUMERATED *)\ + ASN1_STRING_type_new(V_ASN1_ENUMERATED) +# define M_ASN1_ENUMERATED_free(a) ASN1_STRING_free((ASN1_STRING *)a) +# define M_ASN1_ENUMERATED_dup(a) (ASN1_ENUMERATED *)\ + ASN1_STRING_dup((const ASN1_STRING *)a) +# define M_ASN1_ENUMERATED_cmp(a,b) ASN1_STRING_cmp(\ + (const ASN1_STRING *)a,(const ASN1_STRING *)b) + +# define M_ASN1_OCTET_STRING_new() (ASN1_OCTET_STRING *)\ + ASN1_STRING_type_new(V_ASN1_OCTET_STRING) +# define M_ASN1_OCTET_STRING_free(a) ASN1_STRING_free((ASN1_STRING *)a) +# define M_ASN1_OCTET_STRING_dup(a) (ASN1_OCTET_STRING *)\ + ASN1_STRING_dup((const ASN1_STRING *)a) +# define M_ASN1_OCTET_STRING_cmp(a,b) ASN1_STRING_cmp(\ + (const ASN1_STRING *)a,(const ASN1_STRING *)b) +# define M_ASN1_OCTET_STRING_set(a,b,c) ASN1_STRING_set((ASN1_STRING *)a,b,c) +# define M_ASN1_OCTET_STRING_print(a,b) ASN1_STRING_print(a,(ASN1_STRING *)b) +# define M_i2d_ASN1_OCTET_STRING(a,pp) \ + i2d_ASN1_bytes((ASN1_STRING *)a,pp,V_ASN1_OCTET_STRING,\ + V_ASN1_UNIVERSAL) + +# define B_ASN1_TIME \ + B_ASN1_UTCTIME | \ + B_ASN1_GENERALIZEDTIME + +# define B_ASN1_PRINTABLE \ + B_ASN1_NUMERICSTRING| \ + B_ASN1_PRINTABLESTRING| \ + B_ASN1_T61STRING| \ + B_ASN1_IA5STRING| \ + B_ASN1_BIT_STRING| \ + B_ASN1_UNIVERSALSTRING|\ + B_ASN1_BMPSTRING|\ + B_ASN1_UTF8STRING|\ + B_ASN1_SEQUENCE|\ + B_ASN1_UNKNOWN + +# define B_ASN1_DIRECTORYSTRING \ + B_ASN1_PRINTABLESTRING| \ + B_ASN1_TELETEXSTRING|\ + B_ASN1_BMPSTRING|\ + B_ASN1_UNIVERSALSTRING|\ + B_ASN1_UTF8STRING + +# define B_ASN1_DISPLAYTEXT \ + B_ASN1_IA5STRING| \ + B_ASN1_VISIBLESTRING| \ + B_ASN1_BMPSTRING|\ + B_ASN1_UTF8STRING + +# define M_ASN1_PRINTABLE_new() ASN1_STRING_type_new(V_ASN1_T61STRING) +# define M_ASN1_PRINTABLE_free(a) ASN1_STRING_free((ASN1_STRING *)a) +# define M_i2d_ASN1_PRINTABLE(a,pp) i2d_ASN1_bytes((ASN1_STRING *)a,\ + pp,a->type,V_ASN1_UNIVERSAL) +# define M_d2i_ASN1_PRINTABLE(a,pp,l) \ + d2i_ASN1_type_bytes((ASN1_STRING **)a,pp,l, \ + B_ASN1_PRINTABLE) + +# define M_DIRECTORYSTRING_new() ASN1_STRING_type_new(V_ASN1_PRINTABLESTRING) +# define M_DIRECTORYSTRING_free(a) ASN1_STRING_free((ASN1_STRING *)a) +# define M_i2d_DIRECTORYSTRING(a,pp) i2d_ASN1_bytes((ASN1_STRING *)a,\ + pp,a->type,V_ASN1_UNIVERSAL) +# define M_d2i_DIRECTORYSTRING(a,pp,l) \ + d2i_ASN1_type_bytes((ASN1_STRING **)a,pp,l, \ + B_ASN1_DIRECTORYSTRING) + +# define M_DISPLAYTEXT_new() ASN1_STRING_type_new(V_ASN1_VISIBLESTRING) +# define M_DISPLAYTEXT_free(a) ASN1_STRING_free((ASN1_STRING *)a) +# define M_i2d_DISPLAYTEXT(a,pp) i2d_ASN1_bytes((ASN1_STRING *)a,\ + pp,a->type,V_ASN1_UNIVERSAL) +# define M_d2i_DISPLAYTEXT(a,pp,l) \ + d2i_ASN1_type_bytes((ASN1_STRING **)a,pp,l, \ + B_ASN1_DISPLAYTEXT) + +# define M_ASN1_PRINTABLESTRING_new() (ASN1_PRINTABLESTRING *)\ + ASN1_STRING_type_new(V_ASN1_PRINTABLESTRING) +# define M_ASN1_PRINTABLESTRING_free(a) ASN1_STRING_free((ASN1_STRING *)a) +# define M_i2d_ASN1_PRINTABLESTRING(a,pp) \ + i2d_ASN1_bytes((ASN1_STRING *)a,pp,V_ASN1_PRINTABLESTRING,\ + V_ASN1_UNIVERSAL) +# define M_d2i_ASN1_PRINTABLESTRING(a,pp,l) \ + (ASN1_PRINTABLESTRING *)d2i_ASN1_type_bytes\ + ((ASN1_STRING **)a,pp,l,B_ASN1_PRINTABLESTRING) + +# define M_ASN1_T61STRING_new() (ASN1_T61STRING *)\ + ASN1_STRING_type_new(V_ASN1_T61STRING) +# define M_ASN1_T61STRING_free(a) ASN1_STRING_free((ASN1_STRING *)a) +# define M_i2d_ASN1_T61STRING(a,pp) \ + i2d_ASN1_bytes((ASN1_STRING *)a,pp,V_ASN1_T61STRING,\ + V_ASN1_UNIVERSAL) +# define M_d2i_ASN1_T61STRING(a,pp,l) \ + (ASN1_T61STRING *)d2i_ASN1_type_bytes\ + ((ASN1_STRING **)a,pp,l,B_ASN1_T61STRING) + +# define M_ASN1_IA5STRING_new() (ASN1_IA5STRING *)\ + ASN1_STRING_type_new(V_ASN1_IA5STRING) +# define M_ASN1_IA5STRING_free(a) ASN1_STRING_free((ASN1_STRING *)a) +# define M_ASN1_IA5STRING_dup(a) \ + (ASN1_IA5STRING *)ASN1_STRING_dup((const ASN1_STRING *)a) +# define M_i2d_ASN1_IA5STRING(a,pp) \ + i2d_ASN1_bytes((ASN1_STRING *)a,pp,V_ASN1_IA5STRING,\ + V_ASN1_UNIVERSAL) +# define M_d2i_ASN1_IA5STRING(a,pp,l) \ + (ASN1_IA5STRING *)d2i_ASN1_type_bytes((ASN1_STRING **)a,pp,l,\ + B_ASN1_IA5STRING) + +# define M_ASN1_UTCTIME_new() (ASN1_UTCTIME *)\ + ASN1_STRING_type_new(V_ASN1_UTCTIME) +# define M_ASN1_UTCTIME_free(a) ASN1_STRING_free((ASN1_STRING *)a) +# define M_ASN1_UTCTIME_dup(a) (ASN1_UTCTIME *)\ + ASN1_STRING_dup((const ASN1_STRING *)a) + +# define M_ASN1_GENERALIZEDTIME_new() (ASN1_GENERALIZEDTIME *)\ + ASN1_STRING_type_new(V_ASN1_GENERALIZEDTIME) +# define M_ASN1_GENERALIZEDTIME_free(a) ASN1_STRING_free((ASN1_STRING *)a) +# define M_ASN1_GENERALIZEDTIME_dup(a) (ASN1_GENERALIZEDTIME *)ASN1_STRING_dup(\ + (const ASN1_STRING *)a) + +# define M_ASN1_TIME_new() (ASN1_TIME *)\ + ASN1_STRING_type_new(V_ASN1_UTCTIME) +# define M_ASN1_TIME_free(a) ASN1_STRING_free((ASN1_STRING *)a) +# define M_ASN1_TIME_dup(a) (ASN1_TIME *)\ + ASN1_STRING_dup((const ASN1_STRING *)a) + +# define M_ASN1_GENERALSTRING_new() (ASN1_GENERALSTRING *)\ + ASN1_STRING_type_new(V_ASN1_GENERALSTRING) +# define M_ASN1_GENERALSTRING_free(a) ASN1_STRING_free((ASN1_STRING *)a) +# define M_i2d_ASN1_GENERALSTRING(a,pp) \ + i2d_ASN1_bytes((ASN1_STRING *)a,pp,V_ASN1_GENERALSTRING,\ + V_ASN1_UNIVERSAL) +# define M_d2i_ASN1_GENERALSTRING(a,pp,l) \ + (ASN1_GENERALSTRING *)d2i_ASN1_type_bytes\ + ((ASN1_STRING **)a,pp,l,B_ASN1_GENERALSTRING) + +# define M_ASN1_UNIVERSALSTRING_new() (ASN1_UNIVERSALSTRING *)\ + ASN1_STRING_type_new(V_ASN1_UNIVERSALSTRING) +# define M_ASN1_UNIVERSALSTRING_free(a) ASN1_STRING_free((ASN1_STRING *)a) +# define M_i2d_ASN1_UNIVERSALSTRING(a,pp) \ + i2d_ASN1_bytes((ASN1_STRING *)a,pp,V_ASN1_UNIVERSALSTRING,\ + V_ASN1_UNIVERSAL) +# define M_d2i_ASN1_UNIVERSALSTRING(a,pp,l) \ + (ASN1_UNIVERSALSTRING *)d2i_ASN1_type_bytes\ + ((ASN1_STRING **)a,pp,l,B_ASN1_UNIVERSALSTRING) + +# define M_ASN1_BMPSTRING_new() (ASN1_BMPSTRING *)\ + ASN1_STRING_type_new(V_ASN1_BMPSTRING) +# define M_ASN1_BMPSTRING_free(a) ASN1_STRING_free((ASN1_STRING *)a) +# define M_i2d_ASN1_BMPSTRING(a,pp) \ + i2d_ASN1_bytes((ASN1_STRING *)a,pp,V_ASN1_BMPSTRING,\ + V_ASN1_UNIVERSAL) +# define M_d2i_ASN1_BMPSTRING(a,pp,l) \ + (ASN1_BMPSTRING *)d2i_ASN1_type_bytes\ + ((ASN1_STRING **)a,pp,l,B_ASN1_BMPSTRING) + +# define M_ASN1_VISIBLESTRING_new() (ASN1_VISIBLESTRING *)\ + ASN1_STRING_type_new(V_ASN1_VISIBLESTRING) +# define M_ASN1_VISIBLESTRING_free(a) ASN1_STRING_free((ASN1_STRING *)a) +# define M_i2d_ASN1_VISIBLESTRING(a,pp) \ + i2d_ASN1_bytes((ASN1_STRING *)a,pp,V_ASN1_VISIBLESTRING,\ + V_ASN1_UNIVERSAL) +# define M_d2i_ASN1_VISIBLESTRING(a,pp,l) \ + (ASN1_VISIBLESTRING *)d2i_ASN1_type_bytes\ + ((ASN1_STRING **)a,pp,l,B_ASN1_VISIBLESTRING) + +# define M_ASN1_UTF8STRING_new() (ASN1_UTF8STRING *)\ + ASN1_STRING_type_new(V_ASN1_UTF8STRING) +# define M_ASN1_UTF8STRING_free(a) ASN1_STRING_free((ASN1_STRING *)a) +# define M_i2d_ASN1_UTF8STRING(a,pp) \ + i2d_ASN1_bytes((ASN1_STRING *)a,pp,V_ASN1_UTF8STRING,\ + V_ASN1_UNIVERSAL) +# define M_d2i_ASN1_UTF8STRING(a,pp,l) \ + (ASN1_UTF8STRING *)d2i_ASN1_type_bytes\ + ((ASN1_STRING **)a,pp,l,B_ASN1_UTF8STRING) + + /* for the is_set parameter to i2d_ASN1_SET */ +# define IS_SEQUENCE 0 +# define IS_SET 1 + +DECLARE_ASN1_FUNCTIONS_fname(ASN1_TYPE, ASN1_ANY, ASN1_TYPE) + +int ASN1_TYPE_get(ASN1_TYPE *a); +void ASN1_TYPE_set(ASN1_TYPE *a, int type, void *value); +int ASN1_TYPE_set1(ASN1_TYPE *a, int type, const void *value); +int ASN1_TYPE_cmp(const ASN1_TYPE *a, const ASN1_TYPE *b); + +ASN1_OBJECT *ASN1_OBJECT_new(void); +void ASN1_OBJECT_free(ASN1_OBJECT *a); +int i2d_ASN1_OBJECT(ASN1_OBJECT *a, unsigned char **pp); +ASN1_OBJECT *c2i_ASN1_OBJECT(ASN1_OBJECT **a, const unsigned char **pp, + long length); +ASN1_OBJECT *d2i_ASN1_OBJECT(ASN1_OBJECT **a, const unsigned char **pp, + long length); + +DECLARE_ASN1_ITEM(ASN1_OBJECT) + +DECLARE_STACK_OF(ASN1_OBJECT) +DECLARE_ASN1_SET_OF(ASN1_OBJECT) + +ASN1_STRING *ASN1_STRING_new(void); +void ASN1_STRING_free(ASN1_STRING *a); +int ASN1_STRING_copy(ASN1_STRING *dst, const ASN1_STRING *str); +ASN1_STRING *ASN1_STRING_dup(const ASN1_STRING *a); +ASN1_STRING *ASN1_STRING_type_new(int type); +int ASN1_STRING_cmp(const ASN1_STRING *a, const ASN1_STRING *b); + /* + * Since this is used to store all sorts of things, via macros, for now, + * make its data void * + */ +int ASN1_STRING_set(ASN1_STRING *str, const void *data, int len); +void ASN1_STRING_set0(ASN1_STRING *str, void *data, int len); +int ASN1_STRING_length(const ASN1_STRING *x); +void ASN1_STRING_length_set(ASN1_STRING *x, int n); +int ASN1_STRING_type(ASN1_STRING *x); +unsigned char *ASN1_STRING_data(ASN1_STRING *x); + +DECLARE_ASN1_FUNCTIONS(ASN1_BIT_STRING) +int i2c_ASN1_BIT_STRING(ASN1_BIT_STRING *a, unsigned char **pp); +ASN1_BIT_STRING *c2i_ASN1_BIT_STRING(ASN1_BIT_STRING **a, + const unsigned char **pp, long length); +int ASN1_BIT_STRING_set(ASN1_BIT_STRING *a, unsigned char *d, int length); +int ASN1_BIT_STRING_set_bit(ASN1_BIT_STRING *a, int n, int value); +int ASN1_BIT_STRING_get_bit(ASN1_BIT_STRING *a, int n); +int ASN1_BIT_STRING_check(ASN1_BIT_STRING *a, + unsigned char *flags, int flags_len); + +# ifndef OPENSSL_NO_BIO +int ASN1_BIT_STRING_name_print(BIO *out, ASN1_BIT_STRING *bs, + BIT_STRING_BITNAME *tbl, int indent); +# endif +int ASN1_BIT_STRING_num_asc(char *name, BIT_STRING_BITNAME *tbl); +int ASN1_BIT_STRING_set_asc(ASN1_BIT_STRING *bs, char *name, int value, + BIT_STRING_BITNAME *tbl); + +int i2d_ASN1_BOOLEAN(int a, unsigned char **pp); +int d2i_ASN1_BOOLEAN(int *a, const unsigned char **pp, long length); + +DECLARE_ASN1_FUNCTIONS(ASN1_INTEGER) +int i2c_ASN1_INTEGER(ASN1_INTEGER *a, unsigned char **pp); +ASN1_INTEGER *c2i_ASN1_INTEGER(ASN1_INTEGER **a, const unsigned char **pp, + long length); +ASN1_INTEGER *d2i_ASN1_UINTEGER(ASN1_INTEGER **a, const unsigned char **pp, + long length); +ASN1_INTEGER *ASN1_INTEGER_dup(const ASN1_INTEGER *x); +int ASN1_INTEGER_cmp(const ASN1_INTEGER *x, const ASN1_INTEGER *y); + +DECLARE_ASN1_FUNCTIONS(ASN1_ENUMERATED) + +int ASN1_UTCTIME_check(const ASN1_UTCTIME *a); +ASN1_UTCTIME *ASN1_UTCTIME_set(ASN1_UTCTIME *s, time_t t); +ASN1_UTCTIME *ASN1_UTCTIME_adj(ASN1_UTCTIME *s, time_t t, + int offset_day, long offset_sec); +int ASN1_UTCTIME_set_string(ASN1_UTCTIME *s, const char *str); +int ASN1_UTCTIME_cmp_time_t(const ASN1_UTCTIME *s, time_t t); +# if 0 +time_t ASN1_UTCTIME_get(const ASN1_UTCTIME *s); +# endif + +int ASN1_GENERALIZEDTIME_check(const ASN1_GENERALIZEDTIME *a); +ASN1_GENERALIZEDTIME *ASN1_GENERALIZEDTIME_set(ASN1_GENERALIZEDTIME *s, + time_t t); +ASN1_GENERALIZEDTIME *ASN1_GENERALIZEDTIME_adj(ASN1_GENERALIZEDTIME *s, + time_t t, int offset_day, + long offset_sec); +int ASN1_GENERALIZEDTIME_set_string(ASN1_GENERALIZEDTIME *s, const char *str); +int ASN1_TIME_diff(int *pday, int *psec, + const ASN1_TIME *from, const ASN1_TIME *to); + +DECLARE_ASN1_FUNCTIONS(ASN1_OCTET_STRING) +ASN1_OCTET_STRING *ASN1_OCTET_STRING_dup(const ASN1_OCTET_STRING *a); +int ASN1_OCTET_STRING_cmp(const ASN1_OCTET_STRING *a, + const ASN1_OCTET_STRING *b); +int ASN1_OCTET_STRING_set(ASN1_OCTET_STRING *str, const unsigned char *data, + int len); + +DECLARE_ASN1_FUNCTIONS(ASN1_VISIBLESTRING) +DECLARE_ASN1_FUNCTIONS(ASN1_UNIVERSALSTRING) +DECLARE_ASN1_FUNCTIONS(ASN1_UTF8STRING) +DECLARE_ASN1_FUNCTIONS(ASN1_NULL) +DECLARE_ASN1_FUNCTIONS(ASN1_BMPSTRING) + +int UTF8_getc(const unsigned char *str, int len, unsigned long *val); +int UTF8_putc(unsigned char *str, int len, unsigned long value); + +DECLARE_ASN1_FUNCTIONS_name(ASN1_STRING, ASN1_PRINTABLE) + +DECLARE_ASN1_FUNCTIONS_name(ASN1_STRING, DIRECTORYSTRING) +DECLARE_ASN1_FUNCTIONS_name(ASN1_STRING, DISPLAYTEXT) +DECLARE_ASN1_FUNCTIONS(ASN1_PRINTABLESTRING) +DECLARE_ASN1_FUNCTIONS(ASN1_T61STRING) +DECLARE_ASN1_FUNCTIONS(ASN1_IA5STRING) +DECLARE_ASN1_FUNCTIONS(ASN1_GENERALSTRING) +DECLARE_ASN1_FUNCTIONS(ASN1_UTCTIME) +DECLARE_ASN1_FUNCTIONS(ASN1_GENERALIZEDTIME) +DECLARE_ASN1_FUNCTIONS(ASN1_TIME) + +DECLARE_ASN1_ITEM(ASN1_OCTET_STRING_NDEF) + +ASN1_TIME *ASN1_TIME_set(ASN1_TIME *s, time_t t); +ASN1_TIME *ASN1_TIME_adj(ASN1_TIME *s, time_t t, + int offset_day, long offset_sec); +int ASN1_TIME_check(ASN1_TIME *t); +ASN1_GENERALIZEDTIME *ASN1_TIME_to_generalizedtime(ASN1_TIME *t, ASN1_GENERALIZEDTIME + **out); +int ASN1_TIME_set_string(ASN1_TIME *s, const char *str); + +int i2d_ASN1_SET(STACK_OF(OPENSSL_BLOCK) *a, unsigned char **pp, + i2d_of_void *i2d, int ex_tag, int ex_class, int is_set); +STACK_OF(OPENSSL_BLOCK) *d2i_ASN1_SET(STACK_OF(OPENSSL_BLOCK) **a, + const unsigned char **pp, + long length, d2i_of_void *d2i, + void (*free_func) (OPENSSL_BLOCK), + int ex_tag, int ex_class); + +# ifndef OPENSSL_NO_BIO +int i2a_ASN1_INTEGER(BIO *bp, ASN1_INTEGER *a); +int a2i_ASN1_INTEGER(BIO *bp, ASN1_INTEGER *bs, char *buf, int size); +int i2a_ASN1_ENUMERATED(BIO *bp, ASN1_ENUMERATED *a); +int a2i_ASN1_ENUMERATED(BIO *bp, ASN1_ENUMERATED *bs, char *buf, int size); +int i2a_ASN1_OBJECT(BIO *bp, ASN1_OBJECT *a); +int a2i_ASN1_STRING(BIO *bp, ASN1_STRING *bs, char *buf, int size); +int i2a_ASN1_STRING(BIO *bp, ASN1_STRING *a, int type); +# endif +int i2t_ASN1_OBJECT(char *buf, int buf_len, ASN1_OBJECT *a); + +int a2d_ASN1_OBJECT(unsigned char *out, int olen, const char *buf, int num); +ASN1_OBJECT *ASN1_OBJECT_create(int nid, unsigned char *data, int len, + const char *sn, const char *ln); + +int ASN1_INTEGER_set(ASN1_INTEGER *a, long v); +long ASN1_INTEGER_get(const ASN1_INTEGER *a); +ASN1_INTEGER *BN_to_ASN1_INTEGER(const BIGNUM *bn, ASN1_INTEGER *ai); +BIGNUM *ASN1_INTEGER_to_BN(const ASN1_INTEGER *ai, BIGNUM *bn); + +int ASN1_ENUMERATED_set(ASN1_ENUMERATED *a, long v); +long ASN1_ENUMERATED_get(ASN1_ENUMERATED *a); +ASN1_ENUMERATED *BN_to_ASN1_ENUMERATED(BIGNUM *bn, ASN1_ENUMERATED *ai); +BIGNUM *ASN1_ENUMERATED_to_BN(ASN1_ENUMERATED *ai, BIGNUM *bn); + +/* General */ +/* given a string, return the correct type, max is the maximum length */ +int ASN1_PRINTABLE_type(const unsigned char *s, int max); + +int i2d_ASN1_bytes(ASN1_STRING *a, unsigned char **pp, int tag, int xclass); +ASN1_STRING *d2i_ASN1_bytes(ASN1_STRING **a, const unsigned char **pp, + long length, int Ptag, int Pclass); +unsigned long ASN1_tag2bit(int tag); +/* type is one or more of the B_ASN1_ values. */ +ASN1_STRING *d2i_ASN1_type_bytes(ASN1_STRING **a, const unsigned char **pp, + long length, int type); + +/* PARSING */ +int asn1_Finish(ASN1_CTX *c); +int asn1_const_Finish(ASN1_const_CTX *c); + +/* SPECIALS */ +int ASN1_get_object(const unsigned char **pp, long *plength, int *ptag, + int *pclass, long omax); +int ASN1_check_infinite_end(unsigned char **p, long len); +int ASN1_const_check_infinite_end(const unsigned char **p, long len); +void ASN1_put_object(unsigned char **pp, int constructed, int length, + int tag, int xclass); +int ASN1_put_eoc(unsigned char **pp); +int ASN1_object_size(int constructed, int length, int tag); + +/* Used to implement other functions */ +void *ASN1_dup(i2d_of_void *i2d, d2i_of_void *d2i, void *x); + +# define ASN1_dup_of(type,i2d,d2i,x) \ + ((type*)ASN1_dup(CHECKED_I2D_OF(type, i2d), \ + CHECKED_D2I_OF(type, d2i), \ + CHECKED_PTR_OF(type, x))) + +# define ASN1_dup_of_const(type,i2d,d2i,x) \ + ((type*)ASN1_dup(CHECKED_I2D_OF(const type, i2d), \ + CHECKED_D2I_OF(type, d2i), \ + CHECKED_PTR_OF(const type, x))) + +void *ASN1_item_dup(const ASN1_ITEM *it, void *x); + +/* ASN1 alloc/free macros for when a type is only used internally */ + +# define M_ASN1_new_of(type) (type *)ASN1_item_new(ASN1_ITEM_rptr(type)) +# define M_ASN1_free_of(x, type) \ + ASN1_item_free(CHECKED_PTR_OF(type, x), ASN1_ITEM_rptr(type)) + +# ifndef OPENSSL_NO_FP_API +void *ASN1_d2i_fp(void *(*xnew) (void), d2i_of_void *d2i, FILE *in, void **x); + +# define ASN1_d2i_fp_of(type,xnew,d2i,in,x) \ + ((type*)ASN1_d2i_fp(CHECKED_NEW_OF(type, xnew), \ + CHECKED_D2I_OF(type, d2i), \ + in, \ + CHECKED_PPTR_OF(type, x))) + +void *ASN1_item_d2i_fp(const ASN1_ITEM *it, FILE *in, void *x); +int ASN1_i2d_fp(i2d_of_void *i2d, FILE *out, void *x); + +# define ASN1_i2d_fp_of(type,i2d,out,x) \ + (ASN1_i2d_fp(CHECKED_I2D_OF(type, i2d), \ + out, \ + CHECKED_PTR_OF(type, x))) + +# define ASN1_i2d_fp_of_const(type,i2d,out,x) \ + (ASN1_i2d_fp(CHECKED_I2D_OF(const type, i2d), \ + out, \ + CHECKED_PTR_OF(const type, x))) + +int ASN1_item_i2d_fp(const ASN1_ITEM *it, FILE *out, void *x); +int ASN1_STRING_print_ex_fp(FILE *fp, ASN1_STRING *str, unsigned long flags); +# endif + +int ASN1_STRING_to_UTF8(unsigned char **out, ASN1_STRING *in); + +# ifndef OPENSSL_NO_BIO +void *ASN1_d2i_bio(void *(*xnew) (void), d2i_of_void *d2i, BIO *in, void **x); + +# define ASN1_d2i_bio_of(type,xnew,d2i,in,x) \ + ((type*)ASN1_d2i_bio( CHECKED_NEW_OF(type, xnew), \ + CHECKED_D2I_OF(type, d2i), \ + in, \ + CHECKED_PPTR_OF(type, x))) + +void *ASN1_item_d2i_bio(const ASN1_ITEM *it, BIO *in, void *x); +int ASN1_i2d_bio(i2d_of_void *i2d, BIO *out, unsigned char *x); + +# define ASN1_i2d_bio_of(type,i2d,out,x) \ + (ASN1_i2d_bio(CHECKED_I2D_OF(type, i2d), \ + out, \ + CHECKED_PTR_OF(type, x))) + +# define ASN1_i2d_bio_of_const(type,i2d,out,x) \ + (ASN1_i2d_bio(CHECKED_I2D_OF(const type, i2d), \ + out, \ + CHECKED_PTR_OF(const type, x))) + +int ASN1_item_i2d_bio(const ASN1_ITEM *it, BIO *out, void *x); +int ASN1_UTCTIME_print(BIO *fp, const ASN1_UTCTIME *a); +int ASN1_GENERALIZEDTIME_print(BIO *fp, const ASN1_GENERALIZEDTIME *a); +int ASN1_TIME_print(BIO *fp, const ASN1_TIME *a); +int ASN1_STRING_print(BIO *bp, const ASN1_STRING *v); +int ASN1_STRING_print_ex(BIO *out, ASN1_STRING *str, unsigned long flags); +int ASN1_bn_print(BIO *bp, const char *number, const BIGNUM *num, + unsigned char *buf, int off); +int ASN1_parse(BIO *bp, const unsigned char *pp, long len, int indent); +int ASN1_parse_dump(BIO *bp, const unsigned char *pp, long len, int indent, + int dump); +# endif +const char *ASN1_tag2str(int tag); + +/* Used to load and write netscape format cert */ + +DECLARE_ASN1_FUNCTIONS(NETSCAPE_X509) + +int ASN1_UNIVERSALSTRING_to_string(ASN1_UNIVERSALSTRING *s); + +int ASN1_TYPE_set_octetstring(ASN1_TYPE *a, unsigned char *data, int len); +int ASN1_TYPE_get_octetstring(ASN1_TYPE *a, unsigned char *data, int max_len); +int ASN1_TYPE_set_int_octetstring(ASN1_TYPE *a, long num, + unsigned char *data, int len); +int ASN1_TYPE_get_int_octetstring(ASN1_TYPE *a, long *num, + unsigned char *data, int max_len); + +STACK_OF(OPENSSL_BLOCK) *ASN1_seq_unpack(const unsigned char *buf, int len, + d2i_of_void *d2i, + void (*free_func) (OPENSSL_BLOCK)); +unsigned char *ASN1_seq_pack(STACK_OF(OPENSSL_BLOCK) *safes, i2d_of_void *i2d, + unsigned char **buf, int *len); +void *ASN1_unpack_string(ASN1_STRING *oct, d2i_of_void *d2i); +void *ASN1_item_unpack(ASN1_STRING *oct, const ASN1_ITEM *it); +ASN1_STRING *ASN1_pack_string(void *obj, i2d_of_void *i2d, + ASN1_OCTET_STRING **oct); + +# define ASN1_pack_string_of(type,obj,i2d,oct) \ + (ASN1_pack_string(CHECKED_PTR_OF(type, obj), \ + CHECKED_I2D_OF(type, i2d), \ + oct)) + +ASN1_STRING *ASN1_item_pack(void *obj, const ASN1_ITEM *it, + ASN1_OCTET_STRING **oct); + +void ASN1_STRING_set_default_mask(unsigned long mask); +int ASN1_STRING_set_default_mask_asc(const char *p); +unsigned long ASN1_STRING_get_default_mask(void); +int ASN1_mbstring_copy(ASN1_STRING **out, const unsigned char *in, int len, + int inform, unsigned long mask); +int ASN1_mbstring_ncopy(ASN1_STRING **out, const unsigned char *in, int len, + int inform, unsigned long mask, + long minsize, long maxsize); + +ASN1_STRING *ASN1_STRING_set_by_NID(ASN1_STRING **out, + const unsigned char *in, int inlen, + int inform, int nid); +ASN1_STRING_TABLE *ASN1_STRING_TABLE_get(int nid); +int ASN1_STRING_TABLE_add(int, long, long, unsigned long, unsigned long); +void ASN1_STRING_TABLE_cleanup(void); + +/* ASN1 template functions */ + +/* Old API compatible functions */ +ASN1_VALUE *ASN1_item_new(const ASN1_ITEM *it); +void ASN1_item_free(ASN1_VALUE *val, const ASN1_ITEM *it); +ASN1_VALUE *ASN1_item_d2i(ASN1_VALUE **val, const unsigned char **in, + long len, const ASN1_ITEM *it); +int ASN1_item_i2d(ASN1_VALUE *val, unsigned char **out, const ASN1_ITEM *it); +int ASN1_item_ndef_i2d(ASN1_VALUE *val, unsigned char **out, + const ASN1_ITEM *it); + +void ASN1_add_oid_module(void); + +ASN1_TYPE *ASN1_generate_nconf(char *str, CONF *nconf); +ASN1_TYPE *ASN1_generate_v3(char *str, X509V3_CTX *cnf); + +/* ASN1 Print flags */ + +/* Indicate missing OPTIONAL fields */ +# define ASN1_PCTX_FLAGS_SHOW_ABSENT 0x001 +/* Mark start and end of SEQUENCE */ +# define ASN1_PCTX_FLAGS_SHOW_SEQUENCE 0x002 +/* Mark start and end of SEQUENCE/SET OF */ +# define ASN1_PCTX_FLAGS_SHOW_SSOF 0x004 +/* Show the ASN1 type of primitives */ +# define ASN1_PCTX_FLAGS_SHOW_TYPE 0x008 +/* Don't show ASN1 type of ANY */ +# define ASN1_PCTX_FLAGS_NO_ANY_TYPE 0x010 +/* Don't show ASN1 type of MSTRINGs */ +# define ASN1_PCTX_FLAGS_NO_MSTRING_TYPE 0x020 +/* Don't show field names in SEQUENCE */ +# define ASN1_PCTX_FLAGS_NO_FIELD_NAME 0x040 +/* Show structure names of each SEQUENCE field */ +# define ASN1_PCTX_FLAGS_SHOW_FIELD_STRUCT_NAME 0x080 +/* Don't show structure name even at top level */ +# define ASN1_PCTX_FLAGS_NO_STRUCT_NAME 0x100 + +int ASN1_item_print(BIO *out, ASN1_VALUE *ifld, int indent, + const ASN1_ITEM *it, const ASN1_PCTX *pctx); +ASN1_PCTX *ASN1_PCTX_new(void); +void ASN1_PCTX_free(ASN1_PCTX *p); +unsigned long ASN1_PCTX_get_flags(ASN1_PCTX *p); +void ASN1_PCTX_set_flags(ASN1_PCTX *p, unsigned long flags); +unsigned long ASN1_PCTX_get_nm_flags(ASN1_PCTX *p); +void ASN1_PCTX_set_nm_flags(ASN1_PCTX *p, unsigned long flags); +unsigned long ASN1_PCTX_get_cert_flags(ASN1_PCTX *p); +void ASN1_PCTX_set_cert_flags(ASN1_PCTX *p, unsigned long flags); +unsigned long ASN1_PCTX_get_oid_flags(ASN1_PCTX *p); +void ASN1_PCTX_set_oid_flags(ASN1_PCTX *p, unsigned long flags); +unsigned long ASN1_PCTX_get_str_flags(ASN1_PCTX *p); +void ASN1_PCTX_set_str_flags(ASN1_PCTX *p, unsigned long flags); + +BIO_METHOD *BIO_f_asn1(void); + +BIO *BIO_new_NDEF(BIO *out, ASN1_VALUE *val, const ASN1_ITEM *it); + +int i2d_ASN1_bio_stream(BIO *out, ASN1_VALUE *val, BIO *in, int flags, + const ASN1_ITEM *it); +int PEM_write_bio_ASN1_stream(BIO *out, ASN1_VALUE *val, BIO *in, int flags, + const char *hdr, const ASN1_ITEM *it); +int SMIME_write_ASN1(BIO *bio, ASN1_VALUE *val, BIO *data, int flags, + int ctype_nid, int econt_nid, + STACK_OF(X509_ALGOR) *mdalgs, const ASN1_ITEM *it); +ASN1_VALUE *SMIME_read_ASN1(BIO *bio, BIO **bcont, const ASN1_ITEM *it); +int SMIME_crlf_copy(BIO *in, BIO *out, int flags); +int SMIME_text(BIO *in, BIO *out); + +/* BEGIN ERROR CODES */ +/* + * The following lines are auto generated by the script mkerr.pl. Any changes + * made after this point may be overwritten when the script is next run. + */ +void ERR_load_ASN1_strings(void); + +/* Error codes for the ASN1 functions. */ + +/* Function codes. */ +# define ASN1_F_A2D_ASN1_OBJECT 100 +# define ASN1_F_A2I_ASN1_ENUMERATED 101 +# define ASN1_F_A2I_ASN1_INTEGER 102 +# define ASN1_F_A2I_ASN1_STRING 103 +# define ASN1_F_APPEND_EXP 176 +# define ASN1_F_ASN1_BIT_STRING_SET_BIT 183 +# define ASN1_F_ASN1_CB 177 +# define ASN1_F_ASN1_CHECK_TLEN 104 +# define ASN1_F_ASN1_COLLATE_PRIMITIVE 105 +# define ASN1_F_ASN1_COLLECT 106 +# define ASN1_F_ASN1_D2I_EX_PRIMITIVE 108 +# define ASN1_F_ASN1_D2I_FP 109 +# define ASN1_F_ASN1_D2I_READ_BIO 107 +# define ASN1_F_ASN1_DIGEST 184 +# define ASN1_F_ASN1_DO_ADB 110 +# define ASN1_F_ASN1_DUP 111 +# define ASN1_F_ASN1_ENUMERATED_SET 112 +# define ASN1_F_ASN1_ENUMERATED_TO_BN 113 +# define ASN1_F_ASN1_EX_C2I 204 +# define ASN1_F_ASN1_FIND_END 190 +# define ASN1_F_ASN1_GENERALIZEDTIME_ADJ 216 +# define ASN1_F_ASN1_GENERALIZEDTIME_SET 185 +# define ASN1_F_ASN1_GENERATE_V3 178 +# define ASN1_F_ASN1_GET_OBJECT 114 +# define ASN1_F_ASN1_HEADER_NEW 115 +# define ASN1_F_ASN1_I2D_BIO 116 +# define ASN1_F_ASN1_I2D_FP 117 +# define ASN1_F_ASN1_INTEGER_SET 118 +# define ASN1_F_ASN1_INTEGER_TO_BN 119 +# define ASN1_F_ASN1_ITEM_D2I_FP 206 +# define ASN1_F_ASN1_ITEM_DUP 191 +# define ASN1_F_ASN1_ITEM_EX_COMBINE_NEW 121 +# define ASN1_F_ASN1_ITEM_EX_D2I 120 +# define ASN1_F_ASN1_ITEM_I2D_BIO 192 +# define ASN1_F_ASN1_ITEM_I2D_FP 193 +# define ASN1_F_ASN1_ITEM_PACK 198 +# define ASN1_F_ASN1_ITEM_SIGN 195 +# define ASN1_F_ASN1_ITEM_SIGN_CTX 220 +# define ASN1_F_ASN1_ITEM_UNPACK 199 +# define ASN1_F_ASN1_ITEM_VERIFY 197 +# define ASN1_F_ASN1_MBSTRING_NCOPY 122 +# define ASN1_F_ASN1_OBJECT_NEW 123 +# define ASN1_F_ASN1_OUTPUT_DATA 214 +# define ASN1_F_ASN1_PACK_STRING 124 +# define ASN1_F_ASN1_PCTX_NEW 205 +# define ASN1_F_ASN1_PKCS5_PBE_SET 125 +# define ASN1_F_ASN1_SEQ_PACK 126 +# define ASN1_F_ASN1_SEQ_UNPACK 127 +# define ASN1_F_ASN1_SIGN 128 +# define ASN1_F_ASN1_STR2TYPE 179 +# define ASN1_F_ASN1_STRING_SET 186 +# define ASN1_F_ASN1_STRING_TABLE_ADD 129 +# define ASN1_F_ASN1_STRING_TYPE_NEW 130 +# define ASN1_F_ASN1_TEMPLATE_EX_D2I 132 +# define ASN1_F_ASN1_TEMPLATE_NEW 133 +# define ASN1_F_ASN1_TEMPLATE_NOEXP_D2I 131 +# define ASN1_F_ASN1_TIME_ADJ 217 +# define ASN1_F_ASN1_TIME_SET 175 +# define ASN1_F_ASN1_TYPE_GET_INT_OCTETSTRING 134 +# define ASN1_F_ASN1_TYPE_GET_OCTETSTRING 135 +# define ASN1_F_ASN1_UNPACK_STRING 136 +# define ASN1_F_ASN1_UTCTIME_ADJ 218 +# define ASN1_F_ASN1_UTCTIME_SET 187 +# define ASN1_F_ASN1_VERIFY 137 +# define ASN1_F_B64_READ_ASN1 209 +# define ASN1_F_B64_WRITE_ASN1 210 +# define ASN1_F_BIO_NEW_NDEF 208 +# define ASN1_F_BITSTR_CB 180 +# define ASN1_F_BN_TO_ASN1_ENUMERATED 138 +# define ASN1_F_BN_TO_ASN1_INTEGER 139 +# define ASN1_F_C2I_ASN1_BIT_STRING 189 +# define ASN1_F_C2I_ASN1_INTEGER 194 +# define ASN1_F_C2I_ASN1_OBJECT 196 +# define ASN1_F_COLLECT_DATA 140 +# define ASN1_F_D2I_ASN1_BIT_STRING 141 +# define ASN1_F_D2I_ASN1_BOOLEAN 142 +# define ASN1_F_D2I_ASN1_BYTES 143 +# define ASN1_F_D2I_ASN1_GENERALIZEDTIME 144 +# define ASN1_F_D2I_ASN1_HEADER 145 +# define ASN1_F_D2I_ASN1_INTEGER 146 +# define ASN1_F_D2I_ASN1_OBJECT 147 +# define ASN1_F_D2I_ASN1_SET 148 +# define ASN1_F_D2I_ASN1_TYPE_BYTES 149 +# define ASN1_F_D2I_ASN1_UINTEGER 150 +# define ASN1_F_D2I_ASN1_UTCTIME 151 +# define ASN1_F_D2I_AUTOPRIVATEKEY 207 +# define ASN1_F_D2I_NETSCAPE_RSA 152 +# define ASN1_F_D2I_NETSCAPE_RSA_2 153 +# define ASN1_F_D2I_PRIVATEKEY 154 +# define ASN1_F_D2I_PUBLICKEY 155 +# define ASN1_F_D2I_RSA_NET 200 +# define ASN1_F_D2I_RSA_NET_2 201 +# define ASN1_F_D2I_X509 156 +# define ASN1_F_D2I_X509_CINF 157 +# define ASN1_F_D2I_X509_PKEY 159 +# define ASN1_F_I2D_ASN1_BIO_STREAM 211 +# define ASN1_F_I2D_ASN1_SET 188 +# define ASN1_F_I2D_ASN1_TIME 160 +# define ASN1_F_I2D_DSA_PUBKEY 161 +# define ASN1_F_I2D_EC_PUBKEY 181 +# define ASN1_F_I2D_PRIVATEKEY 163 +# define ASN1_F_I2D_PUBLICKEY 164 +# define ASN1_F_I2D_RSA_NET 162 +# define ASN1_F_I2D_RSA_PUBKEY 165 +# define ASN1_F_LONG_C2I 166 +# define ASN1_F_OID_MODULE_INIT 174 +# define ASN1_F_PARSE_TAGGING 182 +# define ASN1_F_PKCS5_PBE2_SET_IV 167 +# define ASN1_F_PKCS5_PBE_SET 202 +# define ASN1_F_PKCS5_PBE_SET0_ALGOR 215 +# define ASN1_F_PKCS5_PBKDF2_SET 219 +# define ASN1_F_SMIME_READ_ASN1 212 +# define ASN1_F_SMIME_TEXT 213 +# define ASN1_F_X509_CINF_NEW 168 +# define ASN1_F_X509_CRL_ADD0_REVOKED 169 +# define ASN1_F_X509_INFO_NEW 170 +# define ASN1_F_X509_NAME_ENCODE 203 +# define ASN1_F_X509_NAME_EX_D2I 158 +# define ASN1_F_X509_NAME_EX_NEW 171 +# define ASN1_F_X509_NEW 172 +# define ASN1_F_X509_PKEY_NEW 173 + +/* Reason codes. */ +# define ASN1_R_ADDING_OBJECT 171 +# define ASN1_R_ASN1_PARSE_ERROR 203 +# define ASN1_R_ASN1_SIG_PARSE_ERROR 204 +# define ASN1_R_AUX_ERROR 100 +# define ASN1_R_BAD_CLASS 101 +# define ASN1_R_BAD_OBJECT_HEADER 102 +# define ASN1_R_BAD_PASSWORD_READ 103 +# define ASN1_R_BAD_TAG 104 +# define ASN1_R_BMPSTRING_IS_WRONG_LENGTH 214 +# define ASN1_R_BN_LIB 105 +# define ASN1_R_BOOLEAN_IS_WRONG_LENGTH 106 +# define ASN1_R_BUFFER_TOO_SMALL 107 +# define ASN1_R_CIPHER_HAS_NO_OBJECT_IDENTIFIER 108 +# define ASN1_R_CONTEXT_NOT_INITIALISED 217 +# define ASN1_R_DATA_IS_WRONG 109 +# define ASN1_R_DECODE_ERROR 110 +# define ASN1_R_DECODING_ERROR 111 +# define ASN1_R_DEPTH_EXCEEDED 174 +# define ASN1_R_DIGEST_AND_KEY_TYPE_NOT_SUPPORTED 198 +# define ASN1_R_ENCODE_ERROR 112 +# define ASN1_R_ERROR_GETTING_TIME 173 +# define ASN1_R_ERROR_LOADING_SECTION 172 +# define ASN1_R_ERROR_PARSING_SET_ELEMENT 113 +# define ASN1_R_ERROR_SETTING_CIPHER_PARAMS 114 +# define ASN1_R_EXPECTING_AN_INTEGER 115 +# define ASN1_R_EXPECTING_AN_OBJECT 116 +# define ASN1_R_EXPECTING_A_BOOLEAN 117 +# define ASN1_R_EXPECTING_A_TIME 118 +# define ASN1_R_EXPLICIT_LENGTH_MISMATCH 119 +# define ASN1_R_EXPLICIT_TAG_NOT_CONSTRUCTED 120 +# define ASN1_R_FIELD_MISSING 121 +# define ASN1_R_FIRST_NUM_TOO_LARGE 122 +# define ASN1_R_HEADER_TOO_LONG 123 +# define ASN1_R_ILLEGAL_BITSTRING_FORMAT 175 +# define ASN1_R_ILLEGAL_BOOLEAN 176 +# define ASN1_R_ILLEGAL_CHARACTERS 124 +# define ASN1_R_ILLEGAL_FORMAT 177 +# define ASN1_R_ILLEGAL_HEX 178 +# define ASN1_R_ILLEGAL_IMPLICIT_TAG 179 +# define ASN1_R_ILLEGAL_INTEGER 180 +# define ASN1_R_ILLEGAL_NESTED_TAGGING 181 +# define ASN1_R_ILLEGAL_NULL 125 +# define ASN1_R_ILLEGAL_NULL_VALUE 182 +# define ASN1_R_ILLEGAL_OBJECT 183 +# define ASN1_R_ILLEGAL_OPTIONAL_ANY 126 +# define ASN1_R_ILLEGAL_OPTIONS_ON_ITEM_TEMPLATE 170 +# define ASN1_R_ILLEGAL_TAGGED_ANY 127 +# define ASN1_R_ILLEGAL_TIME_VALUE 184 +# define ASN1_R_INTEGER_NOT_ASCII_FORMAT 185 +# define ASN1_R_INTEGER_TOO_LARGE_FOR_LONG 128 +# define ASN1_R_INVALID_BIT_STRING_BITS_LEFT 220 +# define ASN1_R_INVALID_BMPSTRING_LENGTH 129 +# define ASN1_R_INVALID_DIGIT 130 +# define ASN1_R_INVALID_MIME_TYPE 205 +# define ASN1_R_INVALID_MODIFIER 186 +# define ASN1_R_INVALID_NUMBER 187 +# define ASN1_R_INVALID_OBJECT_ENCODING 216 +# define ASN1_R_INVALID_SEPARATOR 131 +# define ASN1_R_INVALID_TIME_FORMAT 132 +# define ASN1_R_INVALID_UNIVERSALSTRING_LENGTH 133 +# define ASN1_R_INVALID_UTF8STRING 134 +# define ASN1_R_IV_TOO_LARGE 135 +# define ASN1_R_LENGTH_ERROR 136 +# define ASN1_R_LIST_ERROR 188 +# define ASN1_R_MIME_NO_CONTENT_TYPE 206 +# define ASN1_R_MIME_PARSE_ERROR 207 +# define ASN1_R_MIME_SIG_PARSE_ERROR 208 +# define ASN1_R_MISSING_EOC 137 +# define ASN1_R_MISSING_SECOND_NUMBER 138 +# define ASN1_R_MISSING_VALUE 189 +# define ASN1_R_MSTRING_NOT_UNIVERSAL 139 +# define ASN1_R_MSTRING_WRONG_TAG 140 +# define ASN1_R_NESTED_ASN1_STRING 197 +# define ASN1_R_NON_HEX_CHARACTERS 141 +# define ASN1_R_NOT_ASCII_FORMAT 190 +# define ASN1_R_NOT_ENOUGH_DATA 142 +# define ASN1_R_NO_CONTENT_TYPE 209 +# define ASN1_R_NO_DEFAULT_DIGEST 201 +# define ASN1_R_NO_MATCHING_CHOICE_TYPE 143 +# define ASN1_R_NO_MULTIPART_BODY_FAILURE 210 +# define ASN1_R_NO_MULTIPART_BOUNDARY 211 +# define ASN1_R_NO_SIG_CONTENT_TYPE 212 +# define ASN1_R_NULL_IS_WRONG_LENGTH 144 +# define ASN1_R_OBJECT_NOT_ASCII_FORMAT 191 +# define ASN1_R_ODD_NUMBER_OF_CHARS 145 +# define ASN1_R_PRIVATE_KEY_HEADER_MISSING 146 +# define ASN1_R_SECOND_NUMBER_TOO_LARGE 147 +# define ASN1_R_SEQUENCE_LENGTH_MISMATCH 148 +# define ASN1_R_SEQUENCE_NOT_CONSTRUCTED 149 +# define ASN1_R_SEQUENCE_OR_SET_NEEDS_CONFIG 192 +# define ASN1_R_SHORT_LINE 150 +# define ASN1_R_SIG_INVALID_MIME_TYPE 213 +# define ASN1_R_STREAMING_NOT_SUPPORTED 202 +# define ASN1_R_STRING_TOO_LONG 151 +# define ASN1_R_STRING_TOO_SHORT 152 +# define ASN1_R_TAG_VALUE_TOO_HIGH 153 +# define ASN1_R_THE_ASN1_OBJECT_IDENTIFIER_IS_NOT_KNOWN_FOR_THIS_MD 154 +# define ASN1_R_TIME_NOT_ASCII_FORMAT 193 +# define ASN1_R_TOO_LONG 155 +# define ASN1_R_TYPE_NOT_CONSTRUCTED 156 +# define ASN1_R_TYPE_NOT_PRIMITIVE 218 +# define ASN1_R_UNABLE_TO_DECODE_RSA_KEY 157 +# define ASN1_R_UNABLE_TO_DECODE_RSA_PRIVATE_KEY 158 +# define ASN1_R_UNEXPECTED_EOC 159 +# define ASN1_R_UNIVERSALSTRING_IS_WRONG_LENGTH 215 +# define ASN1_R_UNKNOWN_FORMAT 160 +# define ASN1_R_UNKNOWN_MESSAGE_DIGEST_ALGORITHM 161 +# define ASN1_R_UNKNOWN_OBJECT_TYPE 162 +# define ASN1_R_UNKNOWN_PUBLIC_KEY_TYPE 163 +# define ASN1_R_UNKNOWN_SIGNATURE_ALGORITHM 199 +# define ASN1_R_UNKNOWN_TAG 194 +# define ASN1_R_UNKOWN_FORMAT 195 +# define ASN1_R_UNSUPPORTED_ANY_DEFINED_BY_TYPE 164 +# define ASN1_R_UNSUPPORTED_CIPHER 165 +# define ASN1_R_UNSUPPORTED_ENCRYPTION_ALGORITHM 166 +# define ASN1_R_UNSUPPORTED_PUBLIC_KEY_TYPE 167 +# define ASN1_R_UNSUPPORTED_TYPE 196 +# define ASN1_R_WRONG_PUBLIC_KEY_TYPE 200 +# define ASN1_R_WRONG_TAG 168 +# define ASN1_R_WRONG_TYPE 169 + +#ifdef __cplusplus +} +#endif +#endif diff --git a/ext/openssl-osx/include/openssl/asn1_mac.h b/ext/openssl-osx/include/openssl/asn1_mac.h new file mode 100644 index 00000000..abc6dc35 --- /dev/null +++ b/ext/openssl-osx/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/ext/openssl-osx/include/openssl/bio.h b/ext/openssl-osx/include/openssl/bio.h new file mode 100644 index 00000000..60083bfd --- /dev/null +++ b/ext/openssl-osx/include/openssl/bio.h @@ -0,0 +1,878 @@ +/* crypto/bio/bio.h */ +/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) + * All rights reserved. + * + * This package is an SSL implementation written + * by Eric Young (eay@cryptsoft.com). + * The implementation was written so as to conform with Netscapes SSL. + * + * This library is free for commercial and non-commercial use as long as + * the following conditions are aheared to. The following conditions + * apply to all code found in this distribution, be it the RC4, RSA, + * lhash, DES, etc., code; not just the SSL code. The SSL documentation + * included with this distribution is covered by the same copyright terms + * except that the holder is Tim Hudson (tjh@cryptsoft.com). + * + * Copyright remains Eric Young's, and as such any Copyright notices in + * the code are not to be removed. + * If this package is used in a product, Eric Young should be given attribution + * as the author of the parts of the library used. + * This can be in the form of a textual message at program startup or + * in documentation (online or textual) provided with the package. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * "This product includes cryptographic software written by + * Eric Young (eay@cryptsoft.com)" + * The word 'cryptographic' can be left out if the rouines from the library + * being used are not cryptographic related :-). + * 4. If you include any Windows specific code (or a derivative thereof) from + * the apps directory (application code) you must include an acknowledgement: + * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" + * + * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * The licence and distribution terms for any publically available version or + * derivative of this code cannot be changed. i.e. this code cannot simply be + * copied and put under another distribution licence + * [including the GNU Public Licence.] + */ + +#ifndef HEADER_BIO_H +# define HEADER_BIO_H + +# include + +# ifndef OPENSSL_NO_FP_API +# include +# endif +# include + +# include + +# ifndef OPENSSL_NO_SCTP +# ifndef OPENSSL_SYS_VMS +# include +# else +# include +# endif +# endif + +#ifdef __cplusplus +extern "C" { +#endif + +/* These are the 'types' of BIOs */ +# define BIO_TYPE_NONE 0 +# define BIO_TYPE_MEM (1|0x0400) +# define BIO_TYPE_FILE (2|0x0400) + +# define BIO_TYPE_FD (4|0x0400|0x0100) +# define BIO_TYPE_SOCKET (5|0x0400|0x0100) +# define BIO_TYPE_NULL (6|0x0400) +# define BIO_TYPE_SSL (7|0x0200) +# define BIO_TYPE_MD (8|0x0200)/* passive filter */ +# define BIO_TYPE_BUFFER (9|0x0200)/* filter */ +# define BIO_TYPE_CIPHER (10|0x0200)/* filter */ +# define BIO_TYPE_BASE64 (11|0x0200)/* filter */ +# define BIO_TYPE_CONNECT (12|0x0400|0x0100)/* socket - connect */ +# define BIO_TYPE_ACCEPT (13|0x0400|0x0100)/* socket for accept */ +# define BIO_TYPE_PROXY_CLIENT (14|0x0200)/* client proxy BIO */ +# define BIO_TYPE_PROXY_SERVER (15|0x0200)/* server proxy BIO */ +# define BIO_TYPE_NBIO_TEST (16|0x0200)/* server proxy BIO */ +# define BIO_TYPE_NULL_FILTER (17|0x0200) +# define BIO_TYPE_BER (18|0x0200)/* BER -> bin filter */ +# define BIO_TYPE_BIO (19|0x0400)/* (half a) BIO pair */ +# define BIO_TYPE_LINEBUFFER (20|0x0200)/* filter */ +# define BIO_TYPE_DGRAM (21|0x0400|0x0100) +# ifndef OPENSSL_NO_SCTP +# define BIO_TYPE_DGRAM_SCTP (24|0x0400|0x0100) +# endif +# define BIO_TYPE_ASN1 (22|0x0200)/* filter */ +# define BIO_TYPE_COMP (23|0x0200)/* filter */ + +# define BIO_TYPE_DESCRIPTOR 0x0100/* socket, fd, connect or accept */ +# define BIO_TYPE_FILTER 0x0200 +# define BIO_TYPE_SOURCE_SINK 0x0400 + +/* + * BIO_FILENAME_READ|BIO_CLOSE to open or close on free. + * BIO_set_fp(in,stdin,BIO_NOCLOSE); + */ +# define BIO_NOCLOSE 0x00 +# define BIO_CLOSE 0x01 + +/* + * These are used in the following macros and are passed to BIO_ctrl() + */ +# define BIO_CTRL_RESET 1/* opt - rewind/zero etc */ +# define BIO_CTRL_EOF 2/* opt - are we at the eof */ +# define BIO_CTRL_INFO 3/* opt - extra tit-bits */ +# define BIO_CTRL_SET 4/* man - set the 'IO' type */ +# define BIO_CTRL_GET 5/* man - get the 'IO' type */ +# define BIO_CTRL_PUSH 6/* opt - internal, used to signify change */ +# define BIO_CTRL_POP 7/* opt - internal, used to signify change */ +# define BIO_CTRL_GET_CLOSE 8/* man - set the 'close' on free */ +# define BIO_CTRL_SET_CLOSE 9/* man - set the 'close' on free */ +# define BIO_CTRL_PENDING 10/* opt - is their more data buffered */ +# define BIO_CTRL_FLUSH 11/* opt - 'flush' buffered output */ +# define BIO_CTRL_DUP 12/* man - extra stuff for 'duped' BIO */ +# define BIO_CTRL_WPENDING 13/* opt - number of bytes still to write */ +/* callback is int cb(BIO *bio,state,ret); */ +# define BIO_CTRL_SET_CALLBACK 14/* opt - set callback function */ +# define BIO_CTRL_GET_CALLBACK 15/* opt - set callback function */ + +# define BIO_CTRL_SET_FILENAME 30/* BIO_s_file special */ + +/* dgram BIO stuff */ +# define BIO_CTRL_DGRAM_CONNECT 31/* BIO dgram special */ +# define BIO_CTRL_DGRAM_SET_CONNECTED 32/* allow for an externally connected + * socket to be passed in */ +# define BIO_CTRL_DGRAM_SET_RECV_TIMEOUT 33/* setsockopt, essentially */ +# define BIO_CTRL_DGRAM_GET_RECV_TIMEOUT 34/* getsockopt, essentially */ +# define BIO_CTRL_DGRAM_SET_SEND_TIMEOUT 35/* setsockopt, essentially */ +# define BIO_CTRL_DGRAM_GET_SEND_TIMEOUT 36/* getsockopt, essentially */ + +# define BIO_CTRL_DGRAM_GET_RECV_TIMER_EXP 37/* flag whether the last */ +# define BIO_CTRL_DGRAM_GET_SEND_TIMER_EXP 38/* I/O operation tiemd out */ + +/* #ifdef IP_MTU_DISCOVER */ +# define BIO_CTRL_DGRAM_MTU_DISCOVER 39/* set DF bit on egress packets */ +/* #endif */ + +# define BIO_CTRL_DGRAM_QUERY_MTU 40/* as kernel for current MTU */ +# define BIO_CTRL_DGRAM_GET_FALLBACK_MTU 47 +# define BIO_CTRL_DGRAM_GET_MTU 41/* get cached value for MTU */ +# define BIO_CTRL_DGRAM_SET_MTU 42/* set cached value for MTU. + * want to use this if asking + * the kernel fails */ + +# define BIO_CTRL_DGRAM_MTU_EXCEEDED 43/* check whether the MTU was + * exceed in the previous write + * operation */ + +# define BIO_CTRL_DGRAM_GET_PEER 46 +# define BIO_CTRL_DGRAM_SET_PEER 44/* Destination for the data */ + +# define BIO_CTRL_DGRAM_SET_NEXT_TIMEOUT 45/* Next DTLS handshake timeout + * to adjust socket timeouts */ +# define BIO_CTRL_DGRAM_SET_DONT_FRAG 48 + +# define BIO_CTRL_DGRAM_GET_MTU_OVERHEAD 49 + +# ifndef OPENSSL_NO_SCTP +/* SCTP stuff */ +# define BIO_CTRL_DGRAM_SCTP_SET_IN_HANDSHAKE 50 +# define BIO_CTRL_DGRAM_SCTP_ADD_AUTH_KEY 51 +# define BIO_CTRL_DGRAM_SCTP_NEXT_AUTH_KEY 52 +# define BIO_CTRL_DGRAM_SCTP_AUTH_CCS_RCVD 53 +# define BIO_CTRL_DGRAM_SCTP_GET_SNDINFO 60 +# define BIO_CTRL_DGRAM_SCTP_SET_SNDINFO 61 +# define BIO_CTRL_DGRAM_SCTP_GET_RCVINFO 62 +# define BIO_CTRL_DGRAM_SCTP_SET_RCVINFO 63 +# define BIO_CTRL_DGRAM_SCTP_GET_PRINFO 64 +# define BIO_CTRL_DGRAM_SCTP_SET_PRINFO 65 +# define BIO_CTRL_DGRAM_SCTP_SAVE_SHUTDOWN 70 +# endif + +/* modifiers */ +# define BIO_FP_READ 0x02 +# define BIO_FP_WRITE 0x04 +# define BIO_FP_APPEND 0x08 +# define BIO_FP_TEXT 0x10 + +# define BIO_FLAGS_READ 0x01 +# define BIO_FLAGS_WRITE 0x02 +# define BIO_FLAGS_IO_SPECIAL 0x04 +# define BIO_FLAGS_RWS (BIO_FLAGS_READ|BIO_FLAGS_WRITE|BIO_FLAGS_IO_SPECIAL) +# define BIO_FLAGS_SHOULD_RETRY 0x08 +# ifndef BIO_FLAGS_UPLINK +/* + * "UPLINK" flag denotes file descriptors provided by application. It + * defaults to 0, as most platforms don't require UPLINK interface. + */ +# define BIO_FLAGS_UPLINK 0 +# endif + +/* Used in BIO_gethostbyname() */ +# define BIO_GHBN_CTRL_HITS 1 +# define BIO_GHBN_CTRL_MISSES 2 +# define BIO_GHBN_CTRL_CACHE_SIZE 3 +# define BIO_GHBN_CTRL_GET_ENTRY 4 +# define BIO_GHBN_CTRL_FLUSH 5 + +/* Mostly used in the SSL BIO */ +/*- + * Not used anymore + * #define BIO_FLAGS_PROTOCOL_DELAYED_READ 0x10 + * #define BIO_FLAGS_PROTOCOL_DELAYED_WRITE 0x20 + * #define BIO_FLAGS_PROTOCOL_STARTUP 0x40 + */ + +# define BIO_FLAGS_BASE64_NO_NL 0x100 + +/* + * This is used with memory BIOs: it means we shouldn't free up or change the + * data in any way. + */ +# define BIO_FLAGS_MEM_RDONLY 0x200 + +typedef struct bio_st BIO; + +void BIO_set_flags(BIO *b, int flags); +int BIO_test_flags(const BIO *b, int flags); +void BIO_clear_flags(BIO *b, int flags); + +# define BIO_get_flags(b) BIO_test_flags(b, ~(0x0)) +# define BIO_set_retry_special(b) \ + BIO_set_flags(b, (BIO_FLAGS_IO_SPECIAL|BIO_FLAGS_SHOULD_RETRY)) +# define BIO_set_retry_read(b) \ + BIO_set_flags(b, (BIO_FLAGS_READ|BIO_FLAGS_SHOULD_RETRY)) +# define BIO_set_retry_write(b) \ + BIO_set_flags(b, (BIO_FLAGS_WRITE|BIO_FLAGS_SHOULD_RETRY)) + +/* These are normally used internally in BIOs */ +# define BIO_clear_retry_flags(b) \ + BIO_clear_flags(b, (BIO_FLAGS_RWS|BIO_FLAGS_SHOULD_RETRY)) +# define BIO_get_retry_flags(b) \ + BIO_test_flags(b, (BIO_FLAGS_RWS|BIO_FLAGS_SHOULD_RETRY)) + +/* These should be used by the application to tell why we should retry */ +# define BIO_should_read(a) BIO_test_flags(a, BIO_FLAGS_READ) +# define BIO_should_write(a) BIO_test_flags(a, BIO_FLAGS_WRITE) +# define BIO_should_io_special(a) BIO_test_flags(a, BIO_FLAGS_IO_SPECIAL) +# define BIO_retry_type(a) BIO_test_flags(a, BIO_FLAGS_RWS) +# define BIO_should_retry(a) BIO_test_flags(a, BIO_FLAGS_SHOULD_RETRY) + +/* + * The next three are used in conjunction with the BIO_should_io_special() + * condition. After this returns true, BIO *BIO_get_retry_BIO(BIO *bio, int + * *reason); will walk the BIO stack and return the 'reason' for the special + * and the offending BIO. Given a BIO, BIO_get_retry_reason(bio) will return + * the code. + */ +/* + * Returned from the SSL bio when the certificate retrieval code had an error + */ +# define BIO_RR_SSL_X509_LOOKUP 0x01 +/* Returned from the connect BIO when a connect would have blocked */ +# define BIO_RR_CONNECT 0x02 +/* Returned from the accept BIO when an accept would have blocked */ +# define BIO_RR_ACCEPT 0x03 + +/* These are passed by the BIO callback */ +# define BIO_CB_FREE 0x01 +# define BIO_CB_READ 0x02 +# define BIO_CB_WRITE 0x03 +# define BIO_CB_PUTS 0x04 +# define BIO_CB_GETS 0x05 +# define BIO_CB_CTRL 0x06 + +/* + * The callback is called before and after the underling operation, The + * BIO_CB_RETURN flag indicates if it is after the call + */ +# define BIO_CB_RETURN 0x80 +# define BIO_CB_return(a) ((a)|BIO_CB_RETURN)) +# define BIO_cb_pre(a) (!((a)&BIO_CB_RETURN)) +# define BIO_cb_post(a) ((a)&BIO_CB_RETURN) + +long (*BIO_get_callback(const BIO *b)) (struct bio_st *, int, const char *, + int, long, long); +void BIO_set_callback(BIO *b, + long (*callback) (struct bio_st *, int, const char *, + int, long, long)); +char *BIO_get_callback_arg(const BIO *b); +void BIO_set_callback_arg(BIO *b, char *arg); + +const char *BIO_method_name(const BIO *b); +int BIO_method_type(const BIO *b); + +typedef void bio_info_cb (struct bio_st *, int, const char *, int, long, + long); + +typedef struct bio_method_st { + int type; + const char *name; + int (*bwrite) (BIO *, const char *, int); + int (*bread) (BIO *, char *, int); + int (*bputs) (BIO *, const char *); + int (*bgets) (BIO *, char *, int); + long (*ctrl) (BIO *, int, long, void *); + int (*create) (BIO *); + int (*destroy) (BIO *); + long (*callback_ctrl) (BIO *, int, bio_info_cb *); +} BIO_METHOD; + +struct bio_st { + BIO_METHOD *method; + /* bio, mode, argp, argi, argl, ret */ + long (*callback) (struct bio_st *, int, const char *, int, long, long); + char *cb_arg; /* first argument for the callback */ + int init; + int shutdown; + int flags; /* extra storage */ + int retry_reason; + int num; + void *ptr; + struct bio_st *next_bio; /* used by filter BIOs */ + struct bio_st *prev_bio; /* used by filter BIOs */ + int references; + unsigned long num_read; + unsigned long num_write; + CRYPTO_EX_DATA ex_data; +}; + +DECLARE_STACK_OF(BIO) + +typedef struct bio_f_buffer_ctx_struct { + /*- + * Buffers are setup like this: + * + * <---------------------- size -----------------------> + * +---------------------------------------------------+ + * | consumed | remaining | free space | + * +---------------------------------------------------+ + * <-- off --><------- len -------> + */ + /*- BIO *bio; *//* + * this is now in the BIO struct + */ + int ibuf_size; /* how big is the input buffer */ + int obuf_size; /* how big is the output buffer */ + char *ibuf; /* the char array */ + int ibuf_len; /* how many bytes are in it */ + int ibuf_off; /* write/read offset */ + char *obuf; /* the char array */ + int obuf_len; /* how many bytes are in it */ + int obuf_off; /* write/read offset */ +} BIO_F_BUFFER_CTX; + +/* Prefix and suffix callback in ASN1 BIO */ +typedef int asn1_ps_func (BIO *b, unsigned char **pbuf, int *plen, + void *parg); + +# ifndef OPENSSL_NO_SCTP +/* SCTP parameter structs */ +struct bio_dgram_sctp_sndinfo { + uint16_t snd_sid; + uint16_t snd_flags; + uint32_t snd_ppid; + uint32_t snd_context; +}; + +struct bio_dgram_sctp_rcvinfo { + uint16_t rcv_sid; + uint16_t rcv_ssn; + uint16_t rcv_flags; + uint32_t rcv_ppid; + uint32_t rcv_tsn; + uint32_t rcv_cumtsn; + uint32_t rcv_context; +}; + +struct bio_dgram_sctp_prinfo { + uint16_t pr_policy; + uint32_t pr_value; +}; +# endif + +/* connect BIO stuff */ +# define BIO_CONN_S_BEFORE 1 +# define BIO_CONN_S_GET_IP 2 +# define BIO_CONN_S_GET_PORT 3 +# define BIO_CONN_S_CREATE_SOCKET 4 +# define BIO_CONN_S_CONNECT 5 +# define BIO_CONN_S_OK 6 +# define BIO_CONN_S_BLOCKED_CONNECT 7 +# define BIO_CONN_S_NBIO 8 +/* + * #define BIO_CONN_get_param_hostname BIO_ctrl + */ + +# define BIO_C_SET_CONNECT 100 +# define BIO_C_DO_STATE_MACHINE 101 +# define BIO_C_SET_NBIO 102 +# define BIO_C_SET_PROXY_PARAM 103 +# define BIO_C_SET_FD 104 +# define BIO_C_GET_FD 105 +# define BIO_C_SET_FILE_PTR 106 +# define BIO_C_GET_FILE_PTR 107 +# define BIO_C_SET_FILENAME 108 +# define BIO_C_SET_SSL 109 +# define BIO_C_GET_SSL 110 +# define BIO_C_SET_MD 111 +# define BIO_C_GET_MD 112 +# define BIO_C_GET_CIPHER_STATUS 113 +# define BIO_C_SET_BUF_MEM 114 +# define BIO_C_GET_BUF_MEM_PTR 115 +# define BIO_C_GET_BUFF_NUM_LINES 116 +# define BIO_C_SET_BUFF_SIZE 117 +# define BIO_C_SET_ACCEPT 118 +# define BIO_C_SSL_MODE 119 +# define BIO_C_GET_MD_CTX 120 +# define BIO_C_GET_PROXY_PARAM 121 +# define BIO_C_SET_BUFF_READ_DATA 122/* data to read first */ +# define BIO_C_GET_CONNECT 123 +# define BIO_C_GET_ACCEPT 124 +# define BIO_C_SET_SSL_RENEGOTIATE_BYTES 125 +# define BIO_C_GET_SSL_NUM_RENEGOTIATES 126 +# define BIO_C_SET_SSL_RENEGOTIATE_TIMEOUT 127 +# define BIO_C_FILE_SEEK 128 +# define BIO_C_GET_CIPHER_CTX 129 +# define BIO_C_SET_BUF_MEM_EOF_RETURN 130/* return end of input + * value */ +# define BIO_C_SET_BIND_MODE 131 +# define BIO_C_GET_BIND_MODE 132 +# define BIO_C_FILE_TELL 133 +# define BIO_C_GET_SOCKS 134 +# define BIO_C_SET_SOCKS 135 + +# define BIO_C_SET_WRITE_BUF_SIZE 136/* for BIO_s_bio */ +# define BIO_C_GET_WRITE_BUF_SIZE 137 +# define BIO_C_MAKE_BIO_PAIR 138 +# define BIO_C_DESTROY_BIO_PAIR 139 +# define BIO_C_GET_WRITE_GUARANTEE 140 +# define BIO_C_GET_READ_REQUEST 141 +# define BIO_C_SHUTDOWN_WR 142 +# define BIO_C_NREAD0 143 +# define BIO_C_NREAD 144 +# define BIO_C_NWRITE0 145 +# define BIO_C_NWRITE 146 +# define BIO_C_RESET_READ_REQUEST 147 +# define BIO_C_SET_MD_CTX 148 + +# define BIO_C_SET_PREFIX 149 +# define BIO_C_GET_PREFIX 150 +# define BIO_C_SET_SUFFIX 151 +# define BIO_C_GET_SUFFIX 152 + +# define BIO_C_SET_EX_ARG 153 +# define BIO_C_GET_EX_ARG 154 + +# define BIO_set_app_data(s,arg) BIO_set_ex_data(s,0,arg) +# define BIO_get_app_data(s) BIO_get_ex_data(s,0) + +/* BIO_s_connect() and BIO_s_socks4a_connect() */ +# define BIO_set_conn_hostname(b,name) BIO_ctrl(b,BIO_C_SET_CONNECT,0,(char *)name) +# define BIO_set_conn_port(b,port) BIO_ctrl(b,BIO_C_SET_CONNECT,1,(char *)port) +# define BIO_set_conn_ip(b,ip) BIO_ctrl(b,BIO_C_SET_CONNECT,2,(char *)ip) +# define BIO_set_conn_int_port(b,port) BIO_ctrl(b,BIO_C_SET_CONNECT,3,(char *)port) +# define BIO_get_conn_hostname(b) BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,0) +# define BIO_get_conn_port(b) BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,1) +# define BIO_get_conn_ip(b) BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,2) +# define BIO_get_conn_int_port(b) BIO_int_ctrl(b,BIO_C_GET_CONNECT,3,0) + +# define BIO_set_nbio(b,n) BIO_ctrl(b,BIO_C_SET_NBIO,(n),NULL) + +/* BIO_s_accept_socket() */ +# define BIO_set_accept_port(b,name) BIO_ctrl(b,BIO_C_SET_ACCEPT,0,(char *)name) +# define BIO_get_accept_port(b) BIO_ptr_ctrl(b,BIO_C_GET_ACCEPT,0) +/* #define BIO_set_nbio(b,n) BIO_ctrl(b,BIO_C_SET_NBIO,(n),NULL) */ +# define BIO_set_nbio_accept(b,n) BIO_ctrl(b,BIO_C_SET_ACCEPT,1,(n)?(void *)"a":NULL) +# define BIO_set_accept_bios(b,bio) BIO_ctrl(b,BIO_C_SET_ACCEPT,2,(char *)bio) + +# define BIO_BIND_NORMAL 0 +# define BIO_BIND_REUSEADDR_IF_UNUSED 1 +# define BIO_BIND_REUSEADDR 2 +# define BIO_set_bind_mode(b,mode) BIO_ctrl(b,BIO_C_SET_BIND_MODE,mode,NULL) +# define BIO_get_bind_mode(b,mode) BIO_ctrl(b,BIO_C_GET_BIND_MODE,0,NULL) + +# define BIO_do_connect(b) BIO_do_handshake(b) +# define BIO_do_accept(b) BIO_do_handshake(b) +# define BIO_do_handshake(b) BIO_ctrl(b,BIO_C_DO_STATE_MACHINE,0,NULL) + +/* BIO_s_proxy_client() */ +# define BIO_set_url(b,url) BIO_ctrl(b,BIO_C_SET_PROXY_PARAM,0,(char *)(url)) +# define BIO_set_proxies(b,p) BIO_ctrl(b,BIO_C_SET_PROXY_PARAM,1,(char *)(p)) +/* BIO_set_nbio(b,n) */ +# define BIO_set_filter_bio(b,s) BIO_ctrl(b,BIO_C_SET_PROXY_PARAM,2,(char *)(s)) +/* BIO *BIO_get_filter_bio(BIO *bio); */ +# define BIO_set_proxy_cb(b,cb) BIO_callback_ctrl(b,BIO_C_SET_PROXY_PARAM,3,(void *(*cb)())) +# define BIO_set_proxy_header(b,sk) BIO_ctrl(b,BIO_C_SET_PROXY_PARAM,4,(char *)sk) +# define BIO_set_no_connect_return(b,bool) BIO_int_ctrl(b,BIO_C_SET_PROXY_PARAM,5,bool) + +# define BIO_get_proxy_header(b,skp) BIO_ctrl(b,BIO_C_GET_PROXY_PARAM,0,(char *)skp) +# define BIO_get_proxies(b,pxy_p) BIO_ctrl(b,BIO_C_GET_PROXY_PARAM,1,(char *)(pxy_p)) +# define BIO_get_url(b,url) BIO_ctrl(b,BIO_C_GET_PROXY_PARAM,2,(char *)(url)) +# define BIO_get_no_connect_return(b) BIO_ctrl(b,BIO_C_GET_PROXY_PARAM,5,NULL) + +# define BIO_set_fd(b,fd,c) BIO_int_ctrl(b,BIO_C_SET_FD,c,fd) +# define BIO_get_fd(b,c) BIO_ctrl(b,BIO_C_GET_FD,0,(char *)c) + +# define BIO_set_fp(b,fp,c) BIO_ctrl(b,BIO_C_SET_FILE_PTR,c,(char *)fp) +# define BIO_get_fp(b,fpp) BIO_ctrl(b,BIO_C_GET_FILE_PTR,0,(char *)fpp) + +# define BIO_seek(b,ofs) (int)BIO_ctrl(b,BIO_C_FILE_SEEK,ofs,NULL) +# define BIO_tell(b) (int)BIO_ctrl(b,BIO_C_FILE_TELL,0,NULL) + +/* + * name is cast to lose const, but might be better to route through a + * function so we can do it safely + */ +# ifdef CONST_STRICT +/* + * If you are wondering why this isn't defined, its because CONST_STRICT is + * purely a compile-time kludge to allow const to be checked. + */ +int BIO_read_filename(BIO *b, const char *name); +# else +# define BIO_read_filename(b,name) BIO_ctrl(b,BIO_C_SET_FILENAME, \ + BIO_CLOSE|BIO_FP_READ,(char *)name) +# endif +# define BIO_write_filename(b,name) BIO_ctrl(b,BIO_C_SET_FILENAME, \ + BIO_CLOSE|BIO_FP_WRITE,name) +# define BIO_append_filename(b,name) BIO_ctrl(b,BIO_C_SET_FILENAME, \ + BIO_CLOSE|BIO_FP_APPEND,name) +# define BIO_rw_filename(b,name) BIO_ctrl(b,BIO_C_SET_FILENAME, \ + BIO_CLOSE|BIO_FP_READ|BIO_FP_WRITE,name) + +/* + * WARNING WARNING, this ups the reference count on the read bio of the SSL + * structure. This is because the ssl read BIO is now pointed to by the + * next_bio field in the bio. So when you free the BIO, make sure you are + * doing a BIO_free_all() to catch the underlying BIO. + */ +# define BIO_set_ssl(b,ssl,c) BIO_ctrl(b,BIO_C_SET_SSL,c,(char *)ssl) +# define BIO_get_ssl(b,sslp) BIO_ctrl(b,BIO_C_GET_SSL,0,(char *)sslp) +# define BIO_set_ssl_mode(b,client) BIO_ctrl(b,BIO_C_SSL_MODE,client,NULL) +# define BIO_set_ssl_renegotiate_bytes(b,num) \ + BIO_ctrl(b,BIO_C_SET_SSL_RENEGOTIATE_BYTES,num,NULL); +# define BIO_get_num_renegotiates(b) \ + BIO_ctrl(b,BIO_C_GET_SSL_NUM_RENEGOTIATES,0,NULL); +# define BIO_set_ssl_renegotiate_timeout(b,seconds) \ + BIO_ctrl(b,BIO_C_SET_SSL_RENEGOTIATE_TIMEOUT,seconds,NULL); + +/* defined in evp.h */ +/* #define BIO_set_md(b,md) BIO_ctrl(b,BIO_C_SET_MD,1,(char *)md) */ + +# define BIO_get_mem_data(b,pp) BIO_ctrl(b,BIO_CTRL_INFO,0,(char *)pp) +# define BIO_set_mem_buf(b,bm,c) BIO_ctrl(b,BIO_C_SET_BUF_MEM,c,(char *)bm) +# define BIO_get_mem_ptr(b,pp) BIO_ctrl(b,BIO_C_GET_BUF_MEM_PTR,0,(char *)pp) +# define BIO_set_mem_eof_return(b,v) \ + BIO_ctrl(b,BIO_C_SET_BUF_MEM_EOF_RETURN,v,NULL) + +/* For the BIO_f_buffer() type */ +# define BIO_get_buffer_num_lines(b) BIO_ctrl(b,BIO_C_GET_BUFF_NUM_LINES,0,NULL) +# define BIO_set_buffer_size(b,size) BIO_ctrl(b,BIO_C_SET_BUFF_SIZE,size,NULL) +# define BIO_set_read_buffer_size(b,size) BIO_int_ctrl(b,BIO_C_SET_BUFF_SIZE,size,0) +# define BIO_set_write_buffer_size(b,size) BIO_int_ctrl(b,BIO_C_SET_BUFF_SIZE,size,1) +# define BIO_set_buffer_read_data(b,buf,num) BIO_ctrl(b,BIO_C_SET_BUFF_READ_DATA,num,buf) + +/* Don't use the next one unless you know what you are doing :-) */ +# define BIO_dup_state(b,ret) BIO_ctrl(b,BIO_CTRL_DUP,0,(char *)(ret)) + +# define BIO_reset(b) (int)BIO_ctrl(b,BIO_CTRL_RESET,0,NULL) +# define BIO_eof(b) (int)BIO_ctrl(b,BIO_CTRL_EOF,0,NULL) +# define BIO_set_close(b,c) (int)BIO_ctrl(b,BIO_CTRL_SET_CLOSE,(c),NULL) +# define BIO_get_close(b) (int)BIO_ctrl(b,BIO_CTRL_GET_CLOSE,0,NULL) +# define BIO_pending(b) (int)BIO_ctrl(b,BIO_CTRL_PENDING,0,NULL) +# define BIO_wpending(b) (int)BIO_ctrl(b,BIO_CTRL_WPENDING,0,NULL) +/* ...pending macros have inappropriate return type */ +size_t BIO_ctrl_pending(BIO *b); +size_t BIO_ctrl_wpending(BIO *b); +# define BIO_flush(b) (int)BIO_ctrl(b,BIO_CTRL_FLUSH,0,NULL) +# define BIO_get_info_callback(b,cbp) (int)BIO_ctrl(b,BIO_CTRL_GET_CALLBACK,0, \ + cbp) +# define BIO_set_info_callback(b,cb) (int)BIO_callback_ctrl(b,BIO_CTRL_SET_CALLBACK,cb) + +/* For the BIO_f_buffer() type */ +# define BIO_buffer_get_num_lines(b) BIO_ctrl(b,BIO_CTRL_GET,0,NULL) + +/* For BIO_s_bio() */ +# define BIO_set_write_buf_size(b,size) (int)BIO_ctrl(b,BIO_C_SET_WRITE_BUF_SIZE,size,NULL) +# define BIO_get_write_buf_size(b,size) (size_t)BIO_ctrl(b,BIO_C_GET_WRITE_BUF_SIZE,size,NULL) +# define BIO_make_bio_pair(b1,b2) (int)BIO_ctrl(b1,BIO_C_MAKE_BIO_PAIR,0,b2) +# define BIO_destroy_bio_pair(b) (int)BIO_ctrl(b,BIO_C_DESTROY_BIO_PAIR,0,NULL) +# define BIO_shutdown_wr(b) (int)BIO_ctrl(b, BIO_C_SHUTDOWN_WR, 0, NULL) +/* macros with inappropriate type -- but ...pending macros use int too: */ +# define BIO_get_write_guarantee(b) (int)BIO_ctrl(b,BIO_C_GET_WRITE_GUARANTEE,0,NULL) +# define BIO_get_read_request(b) (int)BIO_ctrl(b,BIO_C_GET_READ_REQUEST,0,NULL) +size_t BIO_ctrl_get_write_guarantee(BIO *b); +size_t BIO_ctrl_get_read_request(BIO *b); +int BIO_ctrl_reset_read_request(BIO *b); + +/* ctrl macros for dgram */ +# define BIO_ctrl_dgram_connect(b,peer) \ + (int)BIO_ctrl(b,BIO_CTRL_DGRAM_CONNECT,0, (char *)peer) +# define BIO_ctrl_set_connected(b, state, peer) \ + (int)BIO_ctrl(b, BIO_CTRL_DGRAM_SET_CONNECTED, state, (char *)peer) +# define BIO_dgram_recv_timedout(b) \ + (int)BIO_ctrl(b, BIO_CTRL_DGRAM_GET_RECV_TIMER_EXP, 0, NULL) +# define BIO_dgram_send_timedout(b) \ + (int)BIO_ctrl(b, BIO_CTRL_DGRAM_GET_SEND_TIMER_EXP, 0, NULL) +# define BIO_dgram_get_peer(b,peer) \ + (int)BIO_ctrl(b, BIO_CTRL_DGRAM_GET_PEER, 0, (char *)peer) +# define BIO_dgram_set_peer(b,peer) \ + (int)BIO_ctrl(b, BIO_CTRL_DGRAM_SET_PEER, 0, (char *)peer) +# define BIO_dgram_get_mtu_overhead(b) \ + (unsigned int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_MTU_OVERHEAD, 0, NULL) + +/* These two aren't currently implemented */ +/* int BIO_get_ex_num(BIO *bio); */ +/* void BIO_set_ex_free_func(BIO *bio,int idx,void (*cb)()); */ +int BIO_set_ex_data(BIO *bio, int idx, void *data); +void *BIO_get_ex_data(BIO *bio, int idx); +int BIO_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new *new_func, + CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func); +unsigned long BIO_number_read(BIO *bio); +unsigned long BIO_number_written(BIO *bio); + +/* For BIO_f_asn1() */ +int BIO_asn1_set_prefix(BIO *b, asn1_ps_func *prefix, + asn1_ps_func *prefix_free); +int BIO_asn1_get_prefix(BIO *b, asn1_ps_func **pprefix, + asn1_ps_func **pprefix_free); +int BIO_asn1_set_suffix(BIO *b, asn1_ps_func *suffix, + asn1_ps_func *suffix_free); +int BIO_asn1_get_suffix(BIO *b, asn1_ps_func **psuffix, + asn1_ps_func **psuffix_free); + +# ifndef OPENSSL_NO_FP_API +BIO_METHOD *BIO_s_file(void); +BIO *BIO_new_file(const char *filename, const char *mode); +BIO *BIO_new_fp(FILE *stream, int close_flag); +# define BIO_s_file_internal BIO_s_file +# endif +BIO *BIO_new(BIO_METHOD *type); +int BIO_set(BIO *a, BIO_METHOD *type); +int BIO_free(BIO *a); +void BIO_vfree(BIO *a); +int BIO_read(BIO *b, void *data, int len); +int BIO_gets(BIO *bp, char *buf, int size); +int BIO_write(BIO *b, const void *data, int len); +int BIO_puts(BIO *bp, const char *buf); +int BIO_indent(BIO *b, int indent, int max); +long BIO_ctrl(BIO *bp, int cmd, long larg, void *parg); +long BIO_callback_ctrl(BIO *b, int cmd, + void (*fp) (struct bio_st *, int, const char *, int, + long, long)); +char *BIO_ptr_ctrl(BIO *bp, int cmd, long larg); +long BIO_int_ctrl(BIO *bp, int cmd, long larg, int iarg); +BIO *BIO_push(BIO *b, BIO *append); +BIO *BIO_pop(BIO *b); +void BIO_free_all(BIO *a); +BIO *BIO_find_type(BIO *b, int bio_type); +BIO *BIO_next(BIO *b); +BIO *BIO_get_retry_BIO(BIO *bio, int *reason); +int BIO_get_retry_reason(BIO *bio); +BIO *BIO_dup_chain(BIO *in); + +int BIO_nread0(BIO *bio, char **buf); +int BIO_nread(BIO *bio, char **buf, int num); +int BIO_nwrite0(BIO *bio, char **buf); +int BIO_nwrite(BIO *bio, char **buf, int num); + +long BIO_debug_callback(BIO *bio, int cmd, const char *argp, int argi, + long argl, long ret); + +BIO_METHOD *BIO_s_mem(void); +BIO *BIO_new_mem_buf(void *buf, int len); +BIO_METHOD *BIO_s_socket(void); +BIO_METHOD *BIO_s_connect(void); +BIO_METHOD *BIO_s_accept(void); +BIO_METHOD *BIO_s_fd(void); +# ifndef OPENSSL_SYS_OS2 +BIO_METHOD *BIO_s_log(void); +# endif +BIO_METHOD *BIO_s_bio(void); +BIO_METHOD *BIO_s_null(void); +BIO_METHOD *BIO_f_null(void); +BIO_METHOD *BIO_f_buffer(void); +# ifdef OPENSSL_SYS_VMS +BIO_METHOD *BIO_f_linebuffer(void); +# endif +BIO_METHOD *BIO_f_nbio_test(void); +# ifndef OPENSSL_NO_DGRAM +BIO_METHOD *BIO_s_datagram(void); +# ifndef OPENSSL_NO_SCTP +BIO_METHOD *BIO_s_datagram_sctp(void); +# endif +# endif + +/* BIO_METHOD *BIO_f_ber(void); */ + +int BIO_sock_should_retry(int i); +int BIO_sock_non_fatal_error(int error); +int BIO_dgram_non_fatal_error(int error); + +int BIO_fd_should_retry(int i); +int BIO_fd_non_fatal_error(int error); +int BIO_dump_cb(int (*cb) (const void *data, size_t len, void *u), + void *u, const char *s, int len); +int BIO_dump_indent_cb(int (*cb) (const void *data, size_t len, void *u), + void *u, const char *s, int len, int indent); +int BIO_dump(BIO *b, const char *bytes, int len); +int BIO_dump_indent(BIO *b, const char *bytes, int len, int indent); +# ifndef OPENSSL_NO_FP_API +int BIO_dump_fp(FILE *fp, const char *s, int len); +int BIO_dump_indent_fp(FILE *fp, const char *s, int len, int indent); +# endif +int BIO_hex_string(BIO *out, int indent, int width, unsigned char *data, + int datalen); + +struct hostent *BIO_gethostbyname(const char *name); +/*- + * We might want a thread-safe interface too: + * struct hostent *BIO_gethostbyname_r(const char *name, + * struct hostent *result, void *buffer, size_t buflen); + * or something similar (caller allocates a struct hostent, + * pointed to by "result", and additional buffer space for the various + * substructures; if the buffer does not suffice, NULL is returned + * and an appropriate error code is set). + */ +int BIO_sock_error(int sock); +int BIO_socket_ioctl(int fd, long type, void *arg); +int BIO_socket_nbio(int fd, int mode); +int BIO_get_port(const char *str, unsigned short *port_ptr); +int BIO_get_host_ip(const char *str, unsigned char *ip); +int BIO_get_accept_socket(char *host_port, int mode); +int BIO_accept(int sock, char **ip_port); +int BIO_sock_init(void); +void BIO_sock_cleanup(void); +int BIO_set_tcp_ndelay(int sock, int turn_on); + +BIO *BIO_new_socket(int sock, int close_flag); +BIO *BIO_new_dgram(int fd, int close_flag); +# ifndef OPENSSL_NO_SCTP +BIO *BIO_new_dgram_sctp(int fd, int close_flag); +int BIO_dgram_is_sctp(BIO *bio); +int BIO_dgram_sctp_notification_cb(BIO *b, + void (*handle_notifications) (BIO *bio, + void + *context, + void *buf), + void *context); +int BIO_dgram_sctp_wait_for_dry(BIO *b); +int BIO_dgram_sctp_msg_waiting(BIO *b); +# endif +BIO *BIO_new_fd(int fd, int close_flag); +BIO *BIO_new_connect(const char *host_port); +BIO *BIO_new_accept(const char *host_port); + +int BIO_new_bio_pair(BIO **bio1, size_t writebuf1, + BIO **bio2, size_t writebuf2); +/* + * If successful, returns 1 and in *bio1, *bio2 two BIO pair endpoints. + * Otherwise returns 0 and sets *bio1 and *bio2 to NULL. Size 0 uses default + * value. + */ + +void BIO_copy_next_retry(BIO *b); + +/* + * long BIO_ghbn_ctrl(int cmd,int iarg,char *parg); + */ + +# ifdef __GNUC__ +# define __bio_h__attr__ __attribute__ +# else +# define __bio_h__attr__(x) +# endif +int BIO_printf(BIO *bio, const char *format, ...) +__bio_h__attr__((__format__(__printf__, 2, 3))); +int BIO_vprintf(BIO *bio, const char *format, va_list args) +__bio_h__attr__((__format__(__printf__, 2, 0))); +int BIO_snprintf(char *buf, size_t n, const char *format, ...) +__bio_h__attr__((__format__(__printf__, 3, 4))); +int BIO_vsnprintf(char *buf, size_t n, const char *format, va_list args) +__bio_h__attr__((__format__(__printf__, 3, 0))); +# undef __bio_h__attr__ + +/* BEGIN ERROR CODES */ +/* + * The following lines are auto generated by the script mkerr.pl. Any changes + * made after this point may be overwritten when the script is next run. + */ +void ERR_load_BIO_strings(void); + +/* Error codes for the BIO functions. */ + +/* Function codes. */ +# define BIO_F_ACPT_STATE 100 +# define BIO_F_BIO_ACCEPT 101 +# define BIO_F_BIO_BER_GET_HEADER 102 +# define BIO_F_BIO_CALLBACK_CTRL 131 +# define BIO_F_BIO_CTRL 103 +# define BIO_F_BIO_GETHOSTBYNAME 120 +# define BIO_F_BIO_GETS 104 +# define BIO_F_BIO_GET_ACCEPT_SOCKET 105 +# define BIO_F_BIO_GET_HOST_IP 106 +# define BIO_F_BIO_GET_PORT 107 +# define BIO_F_BIO_MAKE_PAIR 121 +# define BIO_F_BIO_NEW 108 +# define BIO_F_BIO_NEW_FILE 109 +# define BIO_F_BIO_NEW_MEM_BUF 126 +# define BIO_F_BIO_NREAD 123 +# define BIO_F_BIO_NREAD0 124 +# define BIO_F_BIO_NWRITE 125 +# define BIO_F_BIO_NWRITE0 122 +# define BIO_F_BIO_PUTS 110 +# define BIO_F_BIO_READ 111 +# define BIO_F_BIO_SOCK_INIT 112 +# define BIO_F_BIO_WRITE 113 +# define BIO_F_BUFFER_CTRL 114 +# define BIO_F_CONN_CTRL 127 +# define BIO_F_CONN_STATE 115 +# define BIO_F_DGRAM_SCTP_READ 132 +# define BIO_F_FILE_CTRL 116 +# define BIO_F_FILE_READ 130 +# define BIO_F_LINEBUFFER_CTRL 129 +# define BIO_F_MEM_READ 128 +# define BIO_F_MEM_WRITE 117 +# define BIO_F_SSL_NEW 118 +# define BIO_F_WSASTARTUP 119 + +/* Reason codes. */ +# define BIO_R_ACCEPT_ERROR 100 +# define BIO_R_BAD_FOPEN_MODE 101 +# define BIO_R_BAD_HOSTNAME_LOOKUP 102 +# define BIO_R_BROKEN_PIPE 124 +# define BIO_R_CONNECT_ERROR 103 +# define BIO_R_EOF_ON_MEMORY_BIO 127 +# define BIO_R_ERROR_SETTING_NBIO 104 +# define BIO_R_ERROR_SETTING_NBIO_ON_ACCEPTED_SOCKET 105 +# define BIO_R_ERROR_SETTING_NBIO_ON_ACCEPT_SOCKET 106 +# define BIO_R_GETHOSTBYNAME_ADDR_IS_NOT_AF_INET 107 +# define BIO_R_INVALID_ARGUMENT 125 +# define BIO_R_INVALID_IP_ADDRESS 108 +# define BIO_R_IN_USE 123 +# define BIO_R_KEEPALIVE 109 +# define BIO_R_NBIO_CONNECT_ERROR 110 +# define BIO_R_NO_ACCEPT_PORT_SPECIFIED 111 +# define BIO_R_NO_HOSTNAME_SPECIFIED 112 +# define BIO_R_NO_PORT_DEFINED 113 +# define BIO_R_NO_PORT_SPECIFIED 114 +# define BIO_R_NO_SUCH_FILE 128 +# define BIO_R_NULL_PARAMETER 115 +# define BIO_R_TAG_MISMATCH 116 +# define BIO_R_UNABLE_TO_BIND_SOCKET 117 +# define BIO_R_UNABLE_TO_CREATE_SOCKET 118 +# define BIO_R_UNABLE_TO_LISTEN_SOCKET 119 +# define BIO_R_UNINITIALIZED 120 +# define BIO_R_UNSUPPORTED_METHOD 121 +# define BIO_R_WRITE_TO_READ_ONLY_BIO 126 +# define BIO_R_WSASTARTUP 122 + +#ifdef __cplusplus +} +#endif +#endif diff --git a/ext/openssl-osx/include/openssl/bn.h b/ext/openssl-osx/include/openssl/bn.h new file mode 100644 index 00000000..78709d38 --- /dev/null +++ b/ext/openssl-osx/include/openssl/bn.h @@ -0,0 +1,934 @@ +/* crypto/bn/bn.h */ +/* Copyright (C) 1995-1997 Eric Young (eay@cryptsoft.com) + * All rights reserved. + * + * This package is an SSL implementation written + * by Eric Young (eay@cryptsoft.com). + * The implementation was written so as to conform with Netscapes SSL. + * + * This library is free for commercial and non-commercial use as long as + * the following conditions are aheared to. The following conditions + * apply to all code found in this distribution, be it the RC4, RSA, + * lhash, DES, etc., code; not just the SSL code. The SSL documentation + * included with this distribution is covered by the same copyright terms + * except that the holder is Tim Hudson (tjh@cryptsoft.com). + * + * Copyright remains Eric Young's, and as such any Copyright notices in + * the code are not to be removed. + * If this package is used in a product, Eric Young should be given attribution + * as the author of the parts of the library used. + * This can be in the form of a textual message at program startup or + * in documentation (online or textual) provided with the package. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * "This product includes cryptographic software written by + * Eric Young (eay@cryptsoft.com)" + * The word 'cryptographic' can be left out if the rouines from the library + * being used are not cryptographic related :-). + * 4. If you include any Windows specific code (or a derivative thereof) from + * the apps directory (application code) you must include an acknowledgement: + * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" + * + * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * The licence and distribution terms for any publically available version or + * derivative of this code cannot be changed. i.e. this code cannot simply be + * copied and put under another distribution licence + * [including the GNU Public Licence.] + */ +/* ==================================================================== + * Copyright (c) 1998-2006 The OpenSSL Project. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. All advertising materials mentioning features or use of this + * software must display the following acknowledgment: + * "This product includes software developed by the OpenSSL Project + * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" + * + * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to + * endorse or promote products derived from this software without + * prior written permission. For written permission, please contact + * openssl-core@openssl.org. + * + * 5. Products derived from this software may not be called "OpenSSL" + * nor may "OpenSSL" appear in their names without prior written + * permission of the OpenSSL Project. + * + * 6. Redistributions of any form whatsoever must retain the following + * acknowledgment: + * "This product includes software developed by the OpenSSL Project + * for use in the OpenSSL Toolkit (http://www.openssl.org/)" + * + * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY + * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * ==================================================================== + * + * This product includes cryptographic software written by Eric Young + * (eay@cryptsoft.com). This product includes software written by Tim + * Hudson (tjh@cryptsoft.com). + * + */ +/* ==================================================================== + * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED. + * + * Portions of the attached software ("Contribution") are developed by + * SUN MICROSYSTEMS, INC., and are contributed to the OpenSSL project. + * + * The Contribution is licensed pursuant to the Eric Young open source + * license provided above. + * + * The binary polynomial arithmetic software is originally written by + * Sheueling Chang Shantz and Douglas Stebila of Sun Microsystems Laboratories. + * + */ + +#ifndef HEADER_BN_H +# define HEADER_BN_H + +# include +# ifndef OPENSSL_NO_FP_API +# include /* FILE */ +# endif +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * These preprocessor symbols control various aspects of the bignum headers + * and library code. They're not defined by any "normal" configuration, as + * they are intended for development and testing purposes. NB: defining all + * three can be useful for debugging application code as well as openssl + * itself. BN_DEBUG - turn on various debugging alterations to the bignum + * code BN_DEBUG_RAND - uses random poisoning of unused words to trip up + * mismanagement of bignum internals. You must also define BN_DEBUG. + */ +/* #define BN_DEBUG */ +/* #define BN_DEBUG_RAND */ + +# ifndef OPENSSL_SMALL_FOOTPRINT +# define BN_MUL_COMBA +# define BN_SQR_COMBA +# define BN_RECURSION +# endif + +/* + * This next option uses the C libraries (2 word)/(1 word) function. If it is + * not defined, I use my C version (which is slower). The reason for this + * flag is that when the particular C compiler library routine is used, and + * the library is linked with a different compiler, the library is missing. + * This mostly happens when the library is built with gcc and then linked + * using normal cc. This would be a common occurrence because gcc normally + * produces code that is 2 times faster than system compilers for the big + * number stuff. For machines with only one compiler (or shared libraries), + * this should be on. Again this in only really a problem on machines using + * "long long's", are 32bit, and are not using my assembler code. + */ +# if defined(OPENSSL_SYS_MSDOS) || defined(OPENSSL_SYS_WINDOWS) || \ + defined(OPENSSL_SYS_WIN32) || defined(linux) +# ifndef BN_DIV2W +# define BN_DIV2W +# endif +# endif + +/* + * assuming long is 64bit - this is the DEC Alpha unsigned long long is only + * 64 bits :-(, don't define BN_LLONG for the DEC Alpha + */ +# ifdef SIXTY_FOUR_BIT_LONG +# define BN_ULLONG unsigned long long +# define BN_ULONG unsigned long +# define BN_LONG long +# define BN_BITS 128 +# define BN_BYTES 8 +# define BN_BITS2 64 +# define BN_BITS4 32 +# define BN_MASK (0xffffffffffffffffffffffffffffffffLL) +# define BN_MASK2 (0xffffffffffffffffL) +# define BN_MASK2l (0xffffffffL) +# define BN_MASK2h (0xffffffff00000000L) +# define BN_MASK2h1 (0xffffffff80000000L) +# define BN_TBIT (0x8000000000000000L) +# define BN_DEC_CONV (10000000000000000000UL) +# define BN_DEC_FMT1 "%lu" +# define BN_DEC_FMT2 "%019lu" +# define BN_DEC_NUM 19 +# define BN_HEX_FMT1 "%lX" +# define BN_HEX_FMT2 "%016lX" +# endif + +/* + * This is where the long long data type is 64 bits, but long is 32. For + * machines where there are 64bit registers, this is the mode to use. IRIX, + * on R4000 and above should use this mode, along with the relevant assembler + * code :-). Do NOT define BN_LLONG. + */ +# ifdef SIXTY_FOUR_BIT +# undef BN_LLONG +# undef BN_ULLONG +# define BN_ULONG unsigned long long +# define BN_LONG long long +# define BN_BITS 128 +# define BN_BYTES 8 +# define BN_BITS2 64 +# define BN_BITS4 32 +# define BN_MASK2 (0xffffffffffffffffLL) +# define BN_MASK2l (0xffffffffL) +# define BN_MASK2h (0xffffffff00000000LL) +# define BN_MASK2h1 (0xffffffff80000000LL) +# define BN_TBIT (0x8000000000000000LL) +# define BN_DEC_CONV (10000000000000000000ULL) +# define BN_DEC_FMT1 "%llu" +# define BN_DEC_FMT2 "%019llu" +# define BN_DEC_NUM 19 +# define BN_HEX_FMT1 "%llX" +# define BN_HEX_FMT2 "%016llX" +# endif + +# ifdef THIRTY_TWO_BIT +# ifdef BN_LLONG +# if defined(_WIN32) && !defined(__GNUC__) +# define BN_ULLONG unsigned __int64 +# define BN_MASK (0xffffffffffffffffI64) +# else +# define BN_ULLONG unsigned long long +# define BN_MASK (0xffffffffffffffffLL) +# endif +# endif +# define BN_ULONG unsigned int +# define BN_LONG int +# define BN_BITS 64 +# define BN_BYTES 4 +# define BN_BITS2 32 +# define BN_BITS4 16 +# define BN_MASK2 (0xffffffffL) +# define BN_MASK2l (0xffff) +# define BN_MASK2h1 (0xffff8000L) +# define BN_MASK2h (0xffff0000L) +# define BN_TBIT (0x80000000L) +# define BN_DEC_CONV (1000000000L) +# define BN_DEC_FMT1 "%u" +# define BN_DEC_FMT2 "%09u" +# define BN_DEC_NUM 9 +# define BN_HEX_FMT1 "%X" +# define BN_HEX_FMT2 "%08X" +# endif + +# define BN_DEFAULT_BITS 1280 + +# define BN_FLG_MALLOCED 0x01 +# define BN_FLG_STATIC_DATA 0x02 + +/* + * avoid leaking exponent information through timing, + * BN_mod_exp_mont() will call BN_mod_exp_mont_consttime, + * BN_div() will call BN_div_no_branch, + * BN_mod_inverse() will call BN_mod_inverse_no_branch. + */ +# define BN_FLG_CONSTTIME 0x04 + +# ifdef OPENSSL_NO_DEPRECATED +/* deprecated name for the flag */ +# define BN_FLG_EXP_CONSTTIME BN_FLG_CONSTTIME +/* + * avoid leaking exponent information through timings + * (BN_mod_exp_mont() will call BN_mod_exp_mont_consttime) + */ +# endif + +# ifndef OPENSSL_NO_DEPRECATED +# define BN_FLG_FREE 0x8000 + /* used for debuging */ +# endif +# define BN_set_flags(b,n) ((b)->flags|=(n)) +# define BN_get_flags(b,n) ((b)->flags&(n)) + +/* + * get a clone of a BIGNUM with changed flags, for *temporary* use only (the + * two BIGNUMs cannot not be used in parallel!) + */ +# define BN_with_flags(dest,b,n) ((dest)->d=(b)->d, \ + (dest)->top=(b)->top, \ + (dest)->dmax=(b)->dmax, \ + (dest)->neg=(b)->neg, \ + (dest)->flags=(((dest)->flags & BN_FLG_MALLOCED) \ + | ((b)->flags & ~BN_FLG_MALLOCED) \ + | BN_FLG_STATIC_DATA \ + | (n))) + +/* Already declared in ossl_typ.h */ +# if 0 +typedef struct bignum_st BIGNUM; +/* Used for temp variables (declaration hidden in bn_lcl.h) */ +typedef struct bignum_ctx BN_CTX; +typedef struct bn_blinding_st BN_BLINDING; +typedef struct bn_mont_ctx_st BN_MONT_CTX; +typedef struct bn_recp_ctx_st BN_RECP_CTX; +typedef struct bn_gencb_st BN_GENCB; +# endif + +struct bignum_st { + BN_ULONG *d; /* Pointer to an array of 'BN_BITS2' bit + * chunks. */ + int top; /* Index of last used d +1. */ + /* The next are internal book keeping for bn_expand. */ + int dmax; /* Size of the d array. */ + int neg; /* one if the number is negative */ + int flags; +}; + +/* Used for montgomery multiplication */ +struct bn_mont_ctx_st { + int ri; /* number of bits in R */ + BIGNUM RR; /* used to convert to montgomery form */ + BIGNUM N; /* The modulus */ + BIGNUM Ni; /* R*(1/R mod N) - N*Ni = 1 (Ni is only + * stored for bignum algorithm) */ + BN_ULONG n0[2]; /* least significant word(s) of Ni; (type + * changed with 0.9.9, was "BN_ULONG n0;" + * before) */ + int flags; +}; + +/* + * Used for reciprocal division/mod functions It cannot be shared between + * threads + */ +struct bn_recp_ctx_st { + BIGNUM N; /* the divisor */ + BIGNUM Nr; /* the reciprocal */ + int num_bits; + int shift; + int flags; +}; + +/* Used for slow "generation" functions. */ +struct bn_gencb_st { + unsigned int ver; /* To handle binary (in)compatibility */ + void *arg; /* callback-specific data */ + union { + /* if(ver==1) - handles old style callbacks */ + void (*cb_1) (int, int, void *); + /* if(ver==2) - new callback style */ + int (*cb_2) (int, int, BN_GENCB *); + } cb; +}; +/* Wrapper function to make using BN_GENCB easier, */ +int BN_GENCB_call(BN_GENCB *cb, int a, int b); +/* Macro to populate a BN_GENCB structure with an "old"-style callback */ +# define BN_GENCB_set_old(gencb, callback, cb_arg) { \ + BN_GENCB *tmp_gencb = (gencb); \ + tmp_gencb->ver = 1; \ + tmp_gencb->arg = (cb_arg); \ + tmp_gencb->cb.cb_1 = (callback); } +/* Macro to populate a BN_GENCB structure with a "new"-style callback */ +# define BN_GENCB_set(gencb, callback, cb_arg) { \ + BN_GENCB *tmp_gencb = (gencb); \ + tmp_gencb->ver = 2; \ + tmp_gencb->arg = (cb_arg); \ + tmp_gencb->cb.cb_2 = (callback); } + +# define BN_prime_checks 0 /* default: select number of iterations based + * on the size of the number */ + +/* + * number of Miller-Rabin iterations for an error rate of less than 2^-80 for + * random 'b'-bit input, b >= 100 (taken from table 4.4 in the Handbook of + * Applied Cryptography [Menezes, van Oorschot, Vanstone; CRC Press 1996]; + * original paper: Damgaard, Landrock, Pomerance: Average case error + * estimates for the strong probable prime test. -- Math. Comp. 61 (1993) + * 177-194) + */ +# define BN_prime_checks_for_size(b) ((b) >= 1300 ? 2 : \ + (b) >= 850 ? 3 : \ + (b) >= 650 ? 4 : \ + (b) >= 550 ? 5 : \ + (b) >= 450 ? 6 : \ + (b) >= 400 ? 7 : \ + (b) >= 350 ? 8 : \ + (b) >= 300 ? 9 : \ + (b) >= 250 ? 12 : \ + (b) >= 200 ? 15 : \ + (b) >= 150 ? 18 : \ + /* b >= 100 */ 27) + +# define BN_num_bytes(a) ((BN_num_bits(a)+7)/8) + +/* Note that BN_abs_is_word didn't work reliably for w == 0 until 0.9.8 */ +# define BN_abs_is_word(a,w) ((((a)->top == 1) && ((a)->d[0] == (BN_ULONG)(w))) || \ + (((w) == 0) && ((a)->top == 0))) +# define BN_is_zero(a) ((a)->top == 0) +# define BN_is_one(a) (BN_abs_is_word((a),1) && !(a)->neg) +# define BN_is_word(a,w) (BN_abs_is_word((a),(w)) && (!(w) || !(a)->neg)) +# define BN_is_odd(a) (((a)->top > 0) && ((a)->d[0] & 1)) + +# define BN_one(a) (BN_set_word((a),1)) +# define BN_zero_ex(a) \ + do { \ + BIGNUM *_tmp_bn = (a); \ + _tmp_bn->top = 0; \ + _tmp_bn->neg = 0; \ + } while(0) +# ifdef OPENSSL_NO_DEPRECATED +# define BN_zero(a) BN_zero_ex(a) +# else +# define BN_zero(a) (BN_set_word((a),0)) +# endif + +const BIGNUM *BN_value_one(void); +char *BN_options(void); +BN_CTX *BN_CTX_new(void); +# ifndef OPENSSL_NO_DEPRECATED +void BN_CTX_init(BN_CTX *c); +# endif +void BN_CTX_free(BN_CTX *c); +void BN_CTX_start(BN_CTX *ctx); +BIGNUM *BN_CTX_get(BN_CTX *ctx); +void BN_CTX_end(BN_CTX *ctx); +int BN_rand(BIGNUM *rnd, int bits, int top, int bottom); +int BN_pseudo_rand(BIGNUM *rnd, int bits, int top, int bottom); +int BN_rand_range(BIGNUM *rnd, const BIGNUM *range); +int BN_pseudo_rand_range(BIGNUM *rnd, const BIGNUM *range); +int BN_num_bits(const BIGNUM *a); +int BN_num_bits_word(BN_ULONG); +BIGNUM *BN_new(void); +void BN_init(BIGNUM *); +void BN_clear_free(BIGNUM *a); +BIGNUM *BN_copy(BIGNUM *a, const BIGNUM *b); +void BN_swap(BIGNUM *a, BIGNUM *b); +BIGNUM *BN_bin2bn(const unsigned char *s, int len, BIGNUM *ret); +int BN_bn2bin(const BIGNUM *a, unsigned char *to); +BIGNUM *BN_mpi2bn(const unsigned char *s, int len, BIGNUM *ret); +int BN_bn2mpi(const BIGNUM *a, unsigned char *to); +int BN_sub(BIGNUM *r, const BIGNUM *a, const BIGNUM *b); +int BN_usub(BIGNUM *r, const BIGNUM *a, const BIGNUM *b); +int BN_uadd(BIGNUM *r, const BIGNUM *a, const BIGNUM *b); +int BN_add(BIGNUM *r, const BIGNUM *a, const BIGNUM *b); +int BN_mul(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx); +int BN_sqr(BIGNUM *r, const BIGNUM *a, BN_CTX *ctx); +/** BN_set_negative sets sign of a BIGNUM + * \param b pointer to the BIGNUM object + * \param n 0 if the BIGNUM b should be positive and a value != 0 otherwise + */ +void BN_set_negative(BIGNUM *b, int n); +/** BN_is_negative returns 1 if the BIGNUM is negative + * \param a pointer to the BIGNUM object + * \return 1 if a < 0 and 0 otherwise + */ +# define BN_is_negative(a) ((a)->neg != 0) + +int BN_div(BIGNUM *dv, BIGNUM *rem, const BIGNUM *m, const BIGNUM *d, + BN_CTX *ctx); +# define BN_mod(rem,m,d,ctx) BN_div(NULL,(rem),(m),(d),(ctx)) +int BN_nnmod(BIGNUM *r, const BIGNUM *m, const BIGNUM *d, BN_CTX *ctx); +int BN_mod_add(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, const BIGNUM *m, + BN_CTX *ctx); +int BN_mod_add_quick(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, + const BIGNUM *m); +int BN_mod_sub(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, const BIGNUM *m, + BN_CTX *ctx); +int BN_mod_sub_quick(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, + const BIGNUM *m); +int BN_mod_mul(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, const BIGNUM *m, + BN_CTX *ctx); +int BN_mod_sqr(BIGNUM *r, const BIGNUM *a, const BIGNUM *m, BN_CTX *ctx); +int BN_mod_lshift1(BIGNUM *r, const BIGNUM *a, const BIGNUM *m, BN_CTX *ctx); +int BN_mod_lshift1_quick(BIGNUM *r, const BIGNUM *a, const BIGNUM *m); +int BN_mod_lshift(BIGNUM *r, const BIGNUM *a, int n, const BIGNUM *m, + BN_CTX *ctx); +int BN_mod_lshift_quick(BIGNUM *r, const BIGNUM *a, int n, const BIGNUM *m); + +BN_ULONG BN_mod_word(const BIGNUM *a, BN_ULONG w); +BN_ULONG BN_div_word(BIGNUM *a, BN_ULONG w); +int BN_mul_word(BIGNUM *a, BN_ULONG w); +int BN_add_word(BIGNUM *a, BN_ULONG w); +int BN_sub_word(BIGNUM *a, BN_ULONG w); +int BN_set_word(BIGNUM *a, BN_ULONG w); +BN_ULONG BN_get_word(const BIGNUM *a); + +int BN_cmp(const BIGNUM *a, const BIGNUM *b); +void BN_free(BIGNUM *a); +int BN_is_bit_set(const BIGNUM *a, int n); +int BN_lshift(BIGNUM *r, const BIGNUM *a, int n); +int BN_lshift1(BIGNUM *r, const BIGNUM *a); +int BN_exp(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx); + +int BN_mod_exp(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, + const BIGNUM *m, BN_CTX *ctx); +int BN_mod_exp_mont(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, + const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx); +int BN_mod_exp_mont_consttime(BIGNUM *rr, const BIGNUM *a, const BIGNUM *p, + const BIGNUM *m, BN_CTX *ctx, + BN_MONT_CTX *in_mont); +int BN_mod_exp_mont_word(BIGNUM *r, BN_ULONG a, const BIGNUM *p, + const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx); +int BN_mod_exp2_mont(BIGNUM *r, const BIGNUM *a1, const BIGNUM *p1, + const BIGNUM *a2, const BIGNUM *p2, const BIGNUM *m, + BN_CTX *ctx, BN_MONT_CTX *m_ctx); +int BN_mod_exp_simple(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, + const BIGNUM *m, BN_CTX *ctx); + +int BN_mask_bits(BIGNUM *a, int n); +# ifndef OPENSSL_NO_FP_API +int BN_print_fp(FILE *fp, const BIGNUM *a); +# endif +# ifdef HEADER_BIO_H +int BN_print(BIO *fp, const BIGNUM *a); +# else +int BN_print(void *fp, const BIGNUM *a); +# endif +int BN_reciprocal(BIGNUM *r, const BIGNUM *m, int len, BN_CTX *ctx); +int BN_rshift(BIGNUM *r, const BIGNUM *a, int n); +int BN_rshift1(BIGNUM *r, const BIGNUM *a); +void BN_clear(BIGNUM *a); +BIGNUM *BN_dup(const BIGNUM *a); +int BN_ucmp(const BIGNUM *a, const BIGNUM *b); +int BN_set_bit(BIGNUM *a, int n); +int BN_clear_bit(BIGNUM *a, int n); +char *BN_bn2hex(const BIGNUM *a); +char *BN_bn2dec(const BIGNUM *a); +int BN_hex2bn(BIGNUM **a, const char *str); +int BN_dec2bn(BIGNUM **a, const char *str); +int BN_asc2bn(BIGNUM **a, const char *str); +int BN_gcd(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx); +int BN_kronecker(const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx); /* returns + * -2 for + * error */ +BIGNUM *BN_mod_inverse(BIGNUM *ret, + const BIGNUM *a, const BIGNUM *n, BN_CTX *ctx); +BIGNUM *BN_mod_sqrt(BIGNUM *ret, + const BIGNUM *a, const BIGNUM *n, BN_CTX *ctx); + +void BN_consttime_swap(BN_ULONG swap, BIGNUM *a, BIGNUM *b, int nwords); + +/* Deprecated versions */ +# ifndef OPENSSL_NO_DEPRECATED +BIGNUM *BN_generate_prime(BIGNUM *ret, int bits, int safe, + const BIGNUM *add, const BIGNUM *rem, + void (*callback) (int, int, void *), void *cb_arg); +int BN_is_prime(const BIGNUM *p, int nchecks, + void (*callback) (int, int, void *), + BN_CTX *ctx, void *cb_arg); +int BN_is_prime_fasttest(const BIGNUM *p, int nchecks, + void (*callback) (int, int, void *), BN_CTX *ctx, + void *cb_arg, int do_trial_division); +# endif /* !defined(OPENSSL_NO_DEPRECATED) */ + +/* Newer versions */ +int BN_generate_prime_ex(BIGNUM *ret, int bits, int safe, const BIGNUM *add, + const BIGNUM *rem, BN_GENCB *cb); +int BN_is_prime_ex(const BIGNUM *p, int nchecks, BN_CTX *ctx, BN_GENCB *cb); +int BN_is_prime_fasttest_ex(const BIGNUM *p, int nchecks, BN_CTX *ctx, + int do_trial_division, BN_GENCB *cb); + +int BN_X931_generate_Xpq(BIGNUM *Xp, BIGNUM *Xq, int nbits, BN_CTX *ctx); + +int BN_X931_derive_prime_ex(BIGNUM *p, BIGNUM *p1, BIGNUM *p2, + const BIGNUM *Xp, const BIGNUM *Xp1, + const BIGNUM *Xp2, const BIGNUM *e, BN_CTX *ctx, + BN_GENCB *cb); +int BN_X931_generate_prime_ex(BIGNUM *p, BIGNUM *p1, BIGNUM *p2, BIGNUM *Xp1, + BIGNUM *Xp2, const BIGNUM *Xp, const BIGNUM *e, + BN_CTX *ctx, BN_GENCB *cb); + +BN_MONT_CTX *BN_MONT_CTX_new(void); +void BN_MONT_CTX_init(BN_MONT_CTX *ctx); +int BN_mod_mul_montgomery(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, + BN_MONT_CTX *mont, BN_CTX *ctx); +# define BN_to_montgomery(r,a,mont,ctx) BN_mod_mul_montgomery(\ + (r),(a),&((mont)->RR),(mont),(ctx)) +int BN_from_montgomery(BIGNUM *r, const BIGNUM *a, + BN_MONT_CTX *mont, BN_CTX *ctx); +void BN_MONT_CTX_free(BN_MONT_CTX *mont); +int BN_MONT_CTX_set(BN_MONT_CTX *mont, const BIGNUM *mod, BN_CTX *ctx); +BN_MONT_CTX *BN_MONT_CTX_copy(BN_MONT_CTX *to, BN_MONT_CTX *from); +BN_MONT_CTX *BN_MONT_CTX_set_locked(BN_MONT_CTX **pmont, int lock, + const BIGNUM *mod, BN_CTX *ctx); + +/* BN_BLINDING flags */ +# define BN_BLINDING_NO_UPDATE 0x00000001 +# define BN_BLINDING_NO_RECREATE 0x00000002 + +BN_BLINDING *BN_BLINDING_new(const BIGNUM *A, const BIGNUM *Ai, BIGNUM *mod); +void BN_BLINDING_free(BN_BLINDING *b); +int BN_BLINDING_update(BN_BLINDING *b, BN_CTX *ctx); +int BN_BLINDING_convert(BIGNUM *n, BN_BLINDING *b, BN_CTX *ctx); +int BN_BLINDING_invert(BIGNUM *n, BN_BLINDING *b, BN_CTX *ctx); +int BN_BLINDING_convert_ex(BIGNUM *n, BIGNUM *r, BN_BLINDING *b, BN_CTX *); +int BN_BLINDING_invert_ex(BIGNUM *n, const BIGNUM *r, BN_BLINDING *b, + BN_CTX *); +# ifndef OPENSSL_NO_DEPRECATED +unsigned long BN_BLINDING_get_thread_id(const BN_BLINDING *); +void BN_BLINDING_set_thread_id(BN_BLINDING *, unsigned long); +# endif +CRYPTO_THREADID *BN_BLINDING_thread_id(BN_BLINDING *); +unsigned long BN_BLINDING_get_flags(const BN_BLINDING *); +void BN_BLINDING_set_flags(BN_BLINDING *, unsigned long); +BN_BLINDING *BN_BLINDING_create_param(BN_BLINDING *b, + const BIGNUM *e, BIGNUM *m, BN_CTX *ctx, + int (*bn_mod_exp) (BIGNUM *r, + const BIGNUM *a, + const BIGNUM *p, + const BIGNUM *m, + BN_CTX *ctx, + BN_MONT_CTX *m_ctx), + BN_MONT_CTX *m_ctx); + +# ifndef OPENSSL_NO_DEPRECATED +void BN_set_params(int mul, int high, int low, int mont); +int BN_get_params(int which); /* 0, mul, 1 high, 2 low, 3 mont */ +# endif + +void BN_RECP_CTX_init(BN_RECP_CTX *recp); +BN_RECP_CTX *BN_RECP_CTX_new(void); +void BN_RECP_CTX_free(BN_RECP_CTX *recp); +int BN_RECP_CTX_set(BN_RECP_CTX *recp, const BIGNUM *rdiv, BN_CTX *ctx); +int BN_mod_mul_reciprocal(BIGNUM *r, const BIGNUM *x, const BIGNUM *y, + BN_RECP_CTX *recp, BN_CTX *ctx); +int BN_mod_exp_recp(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, + const BIGNUM *m, BN_CTX *ctx); +int BN_div_recp(BIGNUM *dv, BIGNUM *rem, const BIGNUM *m, + BN_RECP_CTX *recp, BN_CTX *ctx); + +# ifndef OPENSSL_NO_EC2M + +/* + * Functions for arithmetic over binary polynomials represented by BIGNUMs. + * The BIGNUM::neg property of BIGNUMs representing binary polynomials is + * ignored. Note that input arguments are not const so that their bit arrays + * can be expanded to the appropriate size if needed. + */ + +/* + * r = a + b + */ +int BN_GF2m_add(BIGNUM *r, const BIGNUM *a, const BIGNUM *b); +# define BN_GF2m_sub(r, a, b) BN_GF2m_add(r, a, b) +/* + * r=a mod p + */ +int BN_GF2m_mod(BIGNUM *r, const BIGNUM *a, const BIGNUM *p); +/* r = (a * b) mod p */ +int BN_GF2m_mod_mul(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, + const BIGNUM *p, BN_CTX *ctx); +/* r = (a * a) mod p */ +int BN_GF2m_mod_sqr(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx); +/* r = (1 / b) mod p */ +int BN_GF2m_mod_inv(BIGNUM *r, const BIGNUM *b, const BIGNUM *p, BN_CTX *ctx); +/* r = (a / b) mod p */ +int BN_GF2m_mod_div(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, + const BIGNUM *p, BN_CTX *ctx); +/* r = (a ^ b) mod p */ +int BN_GF2m_mod_exp(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, + const BIGNUM *p, BN_CTX *ctx); +/* r = sqrt(a) mod p */ +int BN_GF2m_mod_sqrt(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, + BN_CTX *ctx); +/* r^2 + r = a mod p */ +int BN_GF2m_mod_solve_quad(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, + BN_CTX *ctx); +# define BN_GF2m_cmp(a, b) BN_ucmp((a), (b)) +/*- + * Some functions allow for representation of the irreducible polynomials + * as an unsigned int[], say p. The irreducible f(t) is then of the form: + * t^p[0] + t^p[1] + ... + t^p[k] + * where m = p[0] > p[1] > ... > p[k] = 0. + */ +/* r = a mod p */ +int BN_GF2m_mod_arr(BIGNUM *r, const BIGNUM *a, const int p[]); +/* r = (a * b) mod p */ +int BN_GF2m_mod_mul_arr(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, + const int p[], BN_CTX *ctx); +/* r = (a * a) mod p */ +int BN_GF2m_mod_sqr_arr(BIGNUM *r, const BIGNUM *a, const int p[], + BN_CTX *ctx); +/* r = (1 / b) mod p */ +int BN_GF2m_mod_inv_arr(BIGNUM *r, const BIGNUM *b, const int p[], + BN_CTX *ctx); +/* r = (a / b) mod p */ +int BN_GF2m_mod_div_arr(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, + const int p[], BN_CTX *ctx); +/* r = (a ^ b) mod p */ +int BN_GF2m_mod_exp_arr(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, + const int p[], BN_CTX *ctx); +/* r = sqrt(a) mod p */ +int BN_GF2m_mod_sqrt_arr(BIGNUM *r, const BIGNUM *a, + const int p[], BN_CTX *ctx); +/* r^2 + r = a mod p */ +int BN_GF2m_mod_solve_quad_arr(BIGNUM *r, const BIGNUM *a, + const int p[], BN_CTX *ctx); +int BN_GF2m_poly2arr(const BIGNUM *a, int p[], int max); +int BN_GF2m_arr2poly(const int p[], BIGNUM *a); + +# endif + +/* + * faster mod functions for the 'NIST primes' 0 <= a < p^2 + */ +int BN_nist_mod_192(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx); +int BN_nist_mod_224(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx); +int BN_nist_mod_256(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx); +int BN_nist_mod_384(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx); +int BN_nist_mod_521(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx); + +const BIGNUM *BN_get0_nist_prime_192(void); +const BIGNUM *BN_get0_nist_prime_224(void); +const BIGNUM *BN_get0_nist_prime_256(void); +const BIGNUM *BN_get0_nist_prime_384(void); +const BIGNUM *BN_get0_nist_prime_521(void); + +/* library internal functions */ + +# define bn_expand(a,bits) ((((((bits+BN_BITS2-1))/BN_BITS2)) <= (a)->dmax)?\ + (a):bn_expand2((a),(bits+BN_BITS2-1)/BN_BITS2)) +# define bn_wexpand(a,words) (((words) <= (a)->dmax)?(a):bn_expand2((a),(words))) +BIGNUM *bn_expand2(BIGNUM *a, int words); +# ifndef OPENSSL_NO_DEPRECATED +BIGNUM *bn_dup_expand(const BIGNUM *a, int words); /* unused */ +# endif + +/*- + * Bignum consistency macros + * There is one "API" macro, bn_fix_top(), for stripping leading zeroes from + * bignum data after direct manipulations on the data. There is also an + * "internal" macro, bn_check_top(), for verifying that there are no leading + * zeroes. Unfortunately, some auditing is required due to the fact that + * bn_fix_top() has become an overabused duct-tape because bignum data is + * occasionally passed around in an inconsistent state. So the following + * changes have been made to sort this out; + * - bn_fix_top()s implementation has been moved to bn_correct_top() + * - if BN_DEBUG isn't defined, bn_fix_top() maps to bn_correct_top(), and + * bn_check_top() is as before. + * - if BN_DEBUG *is* defined; + * - bn_check_top() tries to pollute unused words even if the bignum 'top' is + * consistent. (ed: only if BN_DEBUG_RAND is defined) + * - bn_fix_top() maps to bn_check_top() rather than "fixing" anything. + * The idea is to have debug builds flag up inconsistent bignums when they + * occur. If that occurs in a bn_fix_top(), we examine the code in question; if + * the use of bn_fix_top() was appropriate (ie. it follows directly after code + * that manipulates the bignum) it is converted to bn_correct_top(), and if it + * was not appropriate, we convert it permanently to bn_check_top() and track + * down the cause of the bug. Eventually, no internal code should be using the + * bn_fix_top() macro. External applications and libraries should try this with + * their own code too, both in terms of building against the openssl headers + * with BN_DEBUG defined *and* linking with a version of OpenSSL built with it + * defined. This not only improves external code, it provides more test + * coverage for openssl's own code. + */ + +# ifdef BN_DEBUG + +/* We only need assert() when debugging */ +# include + +# ifdef BN_DEBUG_RAND +/* To avoid "make update" cvs wars due to BN_DEBUG, use some tricks */ +# ifndef RAND_pseudo_bytes +int RAND_pseudo_bytes(unsigned char *buf, int num); +# define BN_DEBUG_TRIX +# endif +# define bn_pollute(a) \ + do { \ + const BIGNUM *_bnum1 = (a); \ + if(_bnum1->top < _bnum1->dmax) { \ + unsigned char _tmp_char; \ + /* We cast away const without the compiler knowing, any \ + * *genuinely* constant variables that aren't mutable \ + * wouldn't be constructed with top!=dmax. */ \ + BN_ULONG *_not_const; \ + memcpy(&_not_const, &_bnum1->d, sizeof(BN_ULONG*)); \ + RAND_pseudo_bytes(&_tmp_char, 1); \ + memset((unsigned char *)(_not_const + _bnum1->top), _tmp_char, \ + (_bnum1->dmax - _bnum1->top) * sizeof(BN_ULONG)); \ + } \ + } while(0) +# ifdef BN_DEBUG_TRIX +# undef RAND_pseudo_bytes +# endif +# else +# define bn_pollute(a) +# endif +# define bn_check_top(a) \ + do { \ + const BIGNUM *_bnum2 = (a); \ + if (_bnum2 != NULL) { \ + assert((_bnum2->top == 0) || \ + (_bnum2->d[_bnum2->top - 1] != 0)); \ + bn_pollute(_bnum2); \ + } \ + } while(0) + +# define bn_fix_top(a) bn_check_top(a) + +# define bn_check_size(bn, bits) bn_wcheck_size(bn, ((bits+BN_BITS2-1))/BN_BITS2) +# define bn_wcheck_size(bn, words) \ + do { \ + const BIGNUM *_bnum2 = (bn); \ + assert((words) <= (_bnum2)->dmax && (words) >= (_bnum2)->top); \ + /* avoid unused variable warning with NDEBUG */ \ + (void)(_bnum2); \ + } while(0) + +# else /* !BN_DEBUG */ + +# define bn_pollute(a) +# define bn_check_top(a) +# define bn_fix_top(a) bn_correct_top(a) +# define bn_check_size(bn, bits) +# define bn_wcheck_size(bn, words) + +# endif + +# define bn_correct_top(a) \ + { \ + BN_ULONG *ftl; \ + int tmp_top = (a)->top; \ + if (tmp_top > 0) \ + { \ + for (ftl= &((a)->d[tmp_top-1]); tmp_top > 0; tmp_top--) \ + if (*(ftl--)) break; \ + (a)->top = tmp_top; \ + } \ + bn_pollute(a); \ + } + +BN_ULONG bn_mul_add_words(BN_ULONG *rp, const BN_ULONG *ap, int num, + BN_ULONG w); +BN_ULONG bn_mul_words(BN_ULONG *rp, const BN_ULONG *ap, int num, BN_ULONG w); +void bn_sqr_words(BN_ULONG *rp, const BN_ULONG *ap, int num); +BN_ULONG bn_div_words(BN_ULONG h, BN_ULONG l, BN_ULONG d); +BN_ULONG bn_add_words(BN_ULONG *rp, const BN_ULONG *ap, const BN_ULONG *bp, + int num); +BN_ULONG bn_sub_words(BN_ULONG *rp, const BN_ULONG *ap, const BN_ULONG *bp, + int num); + +/* Primes from RFC 2409 */ +BIGNUM *get_rfc2409_prime_768(BIGNUM *bn); +BIGNUM *get_rfc2409_prime_1024(BIGNUM *bn); + +/* Primes from RFC 3526 */ +BIGNUM *get_rfc3526_prime_1536(BIGNUM *bn); +BIGNUM *get_rfc3526_prime_2048(BIGNUM *bn); +BIGNUM *get_rfc3526_prime_3072(BIGNUM *bn); +BIGNUM *get_rfc3526_prime_4096(BIGNUM *bn); +BIGNUM *get_rfc3526_prime_6144(BIGNUM *bn); +BIGNUM *get_rfc3526_prime_8192(BIGNUM *bn); + +int BN_bntest_rand(BIGNUM *rnd, int bits, int top, int bottom); + +/* BEGIN ERROR CODES */ +/* + * The following lines are auto generated by the script mkerr.pl. Any changes + * made after this point may be overwritten when the script is next run. + */ +void ERR_load_BN_strings(void); + +/* Error codes for the BN functions. */ + +/* Function codes. */ +# define BN_F_BNRAND 127 +# define BN_F_BN_BLINDING_CONVERT_EX 100 +# define BN_F_BN_BLINDING_CREATE_PARAM 128 +# define BN_F_BN_BLINDING_INVERT_EX 101 +# define BN_F_BN_BLINDING_NEW 102 +# define BN_F_BN_BLINDING_UPDATE 103 +# define BN_F_BN_BN2DEC 104 +# define BN_F_BN_BN2HEX 105 +# define BN_F_BN_CTX_GET 116 +# define BN_F_BN_CTX_NEW 106 +# define BN_F_BN_CTX_START 129 +# define BN_F_BN_DIV 107 +# define BN_F_BN_DIV_NO_BRANCH 138 +# define BN_F_BN_DIV_RECP 130 +# define BN_F_BN_EXP 123 +# define BN_F_BN_EXPAND2 108 +# define BN_F_BN_EXPAND_INTERNAL 120 +# define BN_F_BN_GF2M_MOD 131 +# define BN_F_BN_GF2M_MOD_EXP 132 +# define BN_F_BN_GF2M_MOD_MUL 133 +# define BN_F_BN_GF2M_MOD_SOLVE_QUAD 134 +# define BN_F_BN_GF2M_MOD_SOLVE_QUAD_ARR 135 +# define BN_F_BN_GF2M_MOD_SQR 136 +# define BN_F_BN_GF2M_MOD_SQRT 137 +# define BN_F_BN_MOD_EXP2_MONT 118 +# define BN_F_BN_MOD_EXP_MONT 109 +# define BN_F_BN_MOD_EXP_MONT_CONSTTIME 124 +# define BN_F_BN_MOD_EXP_MONT_WORD 117 +# define BN_F_BN_MOD_EXP_RECP 125 +# define BN_F_BN_MOD_EXP_SIMPLE 126 +# define BN_F_BN_MOD_INVERSE 110 +# define BN_F_BN_MOD_INVERSE_NO_BRANCH 139 +# define BN_F_BN_MOD_LSHIFT_QUICK 119 +# define BN_F_BN_MOD_MUL_RECIPROCAL 111 +# define BN_F_BN_MOD_SQRT 121 +# define BN_F_BN_MPI2BN 112 +# define BN_F_BN_NEW 113 +# define BN_F_BN_RAND 114 +# define BN_F_BN_RAND_RANGE 122 +# define BN_F_BN_USUB 115 + +/* Reason codes. */ +# define BN_R_ARG2_LT_ARG3 100 +# define BN_R_BAD_RECIPROCAL 101 +# define BN_R_BIGNUM_TOO_LONG 114 +# define BN_R_CALLED_WITH_EVEN_MODULUS 102 +# define BN_R_DIV_BY_ZERO 103 +# define BN_R_ENCODING_ERROR 104 +# define BN_R_EXPAND_ON_STATIC_BIGNUM_DATA 105 +# define BN_R_INPUT_NOT_REDUCED 110 +# define BN_R_INVALID_LENGTH 106 +# define BN_R_INVALID_RANGE 115 +# define BN_R_NOT_A_SQUARE 111 +# define BN_R_NOT_INITIALIZED 107 +# define BN_R_NO_INVERSE 108 +# define BN_R_NO_SOLUTION 116 +# define BN_R_P_IS_NOT_PRIME 112 +# define BN_R_TOO_MANY_ITERATIONS 113 +# define BN_R_TOO_MANY_TEMPORARY_VARIABLES 109 + +#ifdef __cplusplus +} +#endif +#endif diff --git a/ext/openssl-osx/include/openssl/buffer.h b/ext/openssl-osx/include/openssl/buffer.h new file mode 100644 index 00000000..c343dd77 --- /dev/null +++ b/ext/openssl-osx/include/openssl/buffer.h @@ -0,0 +1,119 @@ +/* crypto/buffer/buffer.h */ +/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) + * All rights reserved. + * + * This package is an SSL implementation written + * by Eric Young (eay@cryptsoft.com). + * The implementation was written so as to conform with Netscapes SSL. + * + * This library is free for commercial and non-commercial use as long as + * the following conditions are aheared to. The following conditions + * apply to all code found in this distribution, be it the RC4, RSA, + * lhash, DES, etc., code; not just the SSL code. The SSL documentation + * included with this distribution is covered by the same copyright terms + * except that the holder is Tim Hudson (tjh@cryptsoft.com). + * + * Copyright remains Eric Young's, and as such any Copyright notices in + * the code are not to be removed. + * If this package is used in a product, Eric Young should be given attribution + * as the author of the parts of the library used. + * This can be in the form of a textual message at program startup or + * in documentation (online or textual) provided with the package. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * "This product includes cryptographic software written by + * Eric Young (eay@cryptsoft.com)" + * The word 'cryptographic' can be left out if the rouines from the library + * being used are not cryptographic related :-). + * 4. If you include any Windows specific code (or a derivative thereof) from + * the apps directory (application code) you must include an acknowledgement: + * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" + * + * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * The licence and distribution terms for any publically available version or + * derivative of this code cannot be changed. i.e. this code cannot simply be + * copied and put under another distribution licence + * [including the GNU Public Licence.] + */ + +#ifndef HEADER_BUFFER_H +# define HEADER_BUFFER_H + +# include + +#ifdef __cplusplus +extern "C" { +#endif + +# include + +# if !defined(NO_SYS_TYPES_H) +# include +# endif + +/* Already declared in ossl_typ.h */ +/* typedef struct buf_mem_st BUF_MEM; */ + +struct buf_mem_st { + size_t length; /* current number of bytes */ + char *data; + size_t max; /* size of buffer */ +}; + +BUF_MEM *BUF_MEM_new(void); +void BUF_MEM_free(BUF_MEM *a); +int BUF_MEM_grow(BUF_MEM *str, size_t len); +int BUF_MEM_grow_clean(BUF_MEM *str, size_t len); +size_t BUF_strnlen(const char *str, size_t maxlen); +char *BUF_strdup(const char *str); +char *BUF_strndup(const char *str, size_t siz); +void *BUF_memdup(const void *data, size_t siz); +void BUF_reverse(unsigned char *out, const unsigned char *in, size_t siz); + +/* safe string functions */ +size_t BUF_strlcpy(char *dst, const char *src, size_t siz); +size_t BUF_strlcat(char *dst, const char *src, size_t siz); + +/* BEGIN ERROR CODES */ +/* + * The following lines are auto generated by the script mkerr.pl. Any changes + * made after this point may be overwritten when the script is next run. + */ +void ERR_load_BUF_strings(void); + +/* Error codes for the BUF functions. */ + +/* Function codes. */ +# define BUF_F_BUF_MEMDUP 103 +# define BUF_F_BUF_MEM_GROW 100 +# define BUF_F_BUF_MEM_GROW_CLEAN 105 +# define BUF_F_BUF_MEM_NEW 101 +# define BUF_F_BUF_STRDUP 102 +# define BUF_F_BUF_STRNDUP 104 + +/* Reason codes. */ + +#ifdef __cplusplus +} +#endif +#endif diff --git a/ext/openssl-osx/include/openssl/comp.h b/ext/openssl-osx/include/openssl/comp.h new file mode 100644 index 00000000..406c428a --- /dev/null +++ b/ext/openssl-osx/include/openssl/comp.h @@ -0,0 +1,79 @@ + +#ifndef HEADER_COMP_H +# define HEADER_COMP_H + +# include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct comp_ctx_st COMP_CTX; + +typedef struct comp_method_st { + int type; /* NID for compression library */ + const char *name; /* A text string to identify the library */ + int (*init) (COMP_CTX *ctx); + void (*finish) (COMP_CTX *ctx); + int (*compress) (COMP_CTX *ctx, + unsigned char *out, unsigned int olen, + unsigned char *in, unsigned int ilen); + int (*expand) (COMP_CTX *ctx, + unsigned char *out, unsigned int olen, + unsigned char *in, unsigned int ilen); + /* + * The following two do NOTHING, but are kept for backward compatibility + */ + long (*ctrl) (void); + long (*callback_ctrl) (void); +} COMP_METHOD; + +struct comp_ctx_st { + COMP_METHOD *meth; + unsigned long compress_in; + unsigned long compress_out; + unsigned long expand_in; + unsigned long expand_out; + CRYPTO_EX_DATA ex_data; +}; + +COMP_CTX *COMP_CTX_new(COMP_METHOD *meth); +void COMP_CTX_free(COMP_CTX *ctx); +int COMP_compress_block(COMP_CTX *ctx, unsigned char *out, int olen, + unsigned char *in, int ilen); +int COMP_expand_block(COMP_CTX *ctx, unsigned char *out, int olen, + unsigned char *in, int ilen); +COMP_METHOD *COMP_rle(void); +COMP_METHOD *COMP_zlib(void); +void COMP_zlib_cleanup(void); + +# ifdef HEADER_BIO_H +# ifdef ZLIB +BIO_METHOD *BIO_f_zlib(void); +# endif +# endif + +/* BEGIN ERROR CODES */ +/* + * The following lines are auto generated by the script mkerr.pl. Any changes + * made after this point may be overwritten when the script is next run. + */ +void ERR_load_COMP_strings(void); + +/* Error codes for the COMP functions. */ + +/* Function codes. */ +# define COMP_F_BIO_ZLIB_FLUSH 99 +# define COMP_F_BIO_ZLIB_NEW 100 +# define COMP_F_BIO_ZLIB_READ 101 +# define COMP_F_BIO_ZLIB_WRITE 102 + +/* Reason codes. */ +# define COMP_R_ZLIB_DEFLATE_ERROR 99 +# define COMP_R_ZLIB_INFLATE_ERROR 100 +# define COMP_R_ZLIB_NOT_SUPPORTED 101 + +#ifdef __cplusplus +} +#endif +#endif diff --git a/ext/openssl-osx/include/openssl/crypto.h b/ext/openssl-osx/include/openssl/crypto.h new file mode 100644 index 00000000..c450d7a3 --- /dev/null +++ b/ext/openssl-osx/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 void *a, const void *b, size_t len); + +/* BEGIN ERROR CODES */ +/* + * The following lines are auto generated by the script mkerr.pl. Any changes + * made after this point may be overwritten when the script is next run. + */ +void ERR_load_CRYPTO_strings(void); + +/* Error codes for the CRYPTO functions. */ + +/* Function codes. */ +# define CRYPTO_F_CRYPTO_GET_EX_NEW_INDEX 100 +# define CRYPTO_F_CRYPTO_GET_NEW_DYNLOCKID 103 +# define CRYPTO_F_CRYPTO_GET_NEW_LOCKID 101 +# define CRYPTO_F_CRYPTO_SET_EX_DATA 102 +# define CRYPTO_F_DEF_ADD_INDEX 104 +# define CRYPTO_F_DEF_GET_CLASS 105 +# define CRYPTO_F_FIPS_MODE_SET 109 +# define CRYPTO_F_INT_DUP_EX_DATA 106 +# define CRYPTO_F_INT_FREE_EX_DATA 107 +# define CRYPTO_F_INT_NEW_EX_DATA 108 + +/* Reason codes. */ +# define CRYPTO_R_FIPS_MODE_NOT_SUPPORTED 101 +# define CRYPTO_R_NO_DYNLOCK_CREATE_CALLBACK 100 + +#ifdef __cplusplus +} +#endif +#endif diff --git a/ext/openssl-osx/include/openssl/dh.h b/ext/openssl-osx/include/openssl/dh.h new file mode 100644 index 00000000..0502f1a9 --- /dev/null +++ b/ext/openssl-osx/include/openssl/dh.h @@ -0,0 +1,392 @@ +/* crypto/dh/dh.h */ +/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) + * All rights reserved. + * + * This package is an SSL implementation written + * by Eric Young (eay@cryptsoft.com). + * The implementation was written so as to conform with Netscapes SSL. + * + * This library is free for commercial and non-commercial use as long as + * the following conditions are aheared to. The following conditions + * apply to all code found in this distribution, be it the RC4, RSA, + * lhash, DES, etc., code; not just the SSL code. The SSL documentation + * included with this distribution is covered by the same copyright terms + * except that the holder is Tim Hudson (tjh@cryptsoft.com). + * + * Copyright remains Eric Young's, and as such any Copyright notices in + * the code are not to be removed. + * If this package is used in a product, Eric Young should be given attribution + * as the author of the parts of the library used. + * This can be in the form of a textual message at program startup or + * in documentation (online or textual) provided with the package. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * "This product includes cryptographic software written by + * Eric Young (eay@cryptsoft.com)" + * The word 'cryptographic' can be left out if the rouines from the library + * being used are not cryptographic related :-). + * 4. If you include any Windows specific code (or a derivative thereof) from + * the apps directory (application code) you must include an acknowledgement: + * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" + * + * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * The licence and distribution terms for any publically available version or + * derivative of this code cannot be changed. i.e. this code cannot simply be + * copied and put under another distribution licence + * [including the GNU Public Licence.] + */ + +#ifndef HEADER_DH_H +# define HEADER_DH_H + +# include + +# ifdef OPENSSL_NO_DH +# error DH is disabled. +# endif + +# ifndef OPENSSL_NO_BIO +# include +# endif +# include +# ifndef OPENSSL_NO_DEPRECATED +# include +# endif + +# ifndef OPENSSL_DH_MAX_MODULUS_BITS +# define OPENSSL_DH_MAX_MODULUS_BITS 10000 +# endif + +# define DH_FLAG_CACHE_MONT_P 0x01 + +/* + * new with 0.9.7h; the built-in DH + * implementation now uses constant time + * modular exponentiation for secret exponents + * by default. This flag causes the + * faster variable sliding window method to + * be used for all exponents. + */ +# define DH_FLAG_NO_EXP_CONSTTIME 0x02 + +/* + * If this flag is set the DH method is FIPS compliant and can be used in + * FIPS mode. This is set in the validated module method. If an application + * sets this flag in its own methods it is its reposibility to ensure the + * result is compliant. + */ + +# define DH_FLAG_FIPS_METHOD 0x0400 + +/* + * If this flag is set the operations normally disabled in FIPS mode are + * permitted it is then the applications responsibility to ensure that the + * usage is compliant. + */ + +# define DH_FLAG_NON_FIPS_ALLOW 0x0400 + +#ifdef __cplusplus +extern "C" { +#endif + +/* Already defined in ossl_typ.h */ +/* typedef struct dh_st DH; */ +/* typedef struct dh_method DH_METHOD; */ + +struct dh_method { + const char *name; + /* Methods here */ + int (*generate_key) (DH *dh); + int (*compute_key) (unsigned char *key, const BIGNUM *pub_key, DH *dh); + /* Can be null */ + int (*bn_mod_exp) (const DH *dh, BIGNUM *r, const BIGNUM *a, + const BIGNUM *p, const BIGNUM *m, BN_CTX *ctx, + BN_MONT_CTX *m_ctx); + int (*init) (DH *dh); + int (*finish) (DH *dh); + int flags; + char *app_data; + /* If this is non-NULL, it will be used to generate parameters */ + int (*generate_params) (DH *dh, int prime_len, int generator, + BN_GENCB *cb); +}; + +struct dh_st { + /* + * This first argument is used to pick up errors when a DH is passed + * instead of a EVP_PKEY + */ + int pad; + int version; + BIGNUM *p; + BIGNUM *g; + long length; /* optional */ + BIGNUM *pub_key; /* g^x */ + BIGNUM *priv_key; /* x */ + int flags; + BN_MONT_CTX *method_mont_p; + /* Place holders if we want to do X9.42 DH */ + BIGNUM *q; + BIGNUM *j; + unsigned char *seed; + int seedlen; + BIGNUM *counter; + int references; + CRYPTO_EX_DATA ex_data; + const DH_METHOD *meth; + ENGINE *engine; +}; + +# define DH_GENERATOR_2 2 +/* #define DH_GENERATOR_3 3 */ +# define DH_GENERATOR_5 5 + +/* DH_check error codes */ +# define DH_CHECK_P_NOT_PRIME 0x01 +# define DH_CHECK_P_NOT_SAFE_PRIME 0x02 +# define DH_UNABLE_TO_CHECK_GENERATOR 0x04 +# define DH_NOT_SUITABLE_GENERATOR 0x08 +# define DH_CHECK_Q_NOT_PRIME 0x10 +# define DH_CHECK_INVALID_Q_VALUE 0x20 +# define DH_CHECK_INVALID_J_VALUE 0x40 + +/* DH_check_pub_key error codes */ +# define DH_CHECK_PUBKEY_TOO_SMALL 0x01 +# define DH_CHECK_PUBKEY_TOO_LARGE 0x02 + +/* + * primes p where (p-1)/2 is prime too are called "safe"; we define this for + * backward compatibility: + */ +# define DH_CHECK_P_NOT_STRONG_PRIME DH_CHECK_P_NOT_SAFE_PRIME + +# define d2i_DHparams_fp(fp,x) (DH *)ASN1_d2i_fp((char *(*)())DH_new, \ + (char *(*)())d2i_DHparams,(fp),(unsigned char **)(x)) +# define i2d_DHparams_fp(fp,x) ASN1_i2d_fp(i2d_DHparams,(fp), \ + (unsigned char *)(x)) +# define d2i_DHparams_bio(bp,x) ASN1_d2i_bio_of(DH,DH_new,d2i_DHparams,bp,x) +# define i2d_DHparams_bio(bp,x) ASN1_i2d_bio_of_const(DH,i2d_DHparams,bp,x) + +DH *DHparams_dup(DH *); + +const DH_METHOD *DH_OpenSSL(void); + +void DH_set_default_method(const DH_METHOD *meth); +const DH_METHOD *DH_get_default_method(void); +int DH_set_method(DH *dh, const DH_METHOD *meth); +DH *DH_new_method(ENGINE *engine); + +DH *DH_new(void); +void DH_free(DH *dh); +int DH_up_ref(DH *dh); +int DH_size(const DH *dh); +int DH_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new *new_func, + CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func); +int DH_set_ex_data(DH *d, int idx, void *arg); +void *DH_get_ex_data(DH *d, int idx); + +/* Deprecated version */ +# ifndef OPENSSL_NO_DEPRECATED +DH *DH_generate_parameters(int prime_len, int generator, + void (*callback) (int, int, void *), void *cb_arg); +# endif /* !defined(OPENSSL_NO_DEPRECATED) */ + +/* New version */ +int DH_generate_parameters_ex(DH *dh, int prime_len, int generator, + BN_GENCB *cb); + +int DH_check(const DH *dh, int *codes); +int DH_check_pub_key(const DH *dh, const BIGNUM *pub_key, int *codes); +int DH_generate_key(DH *dh); +int DH_compute_key(unsigned char *key, const BIGNUM *pub_key, DH *dh); +int DH_compute_key_padded(unsigned char *key, const BIGNUM *pub_key, DH *dh); +DH *d2i_DHparams(DH **a, const unsigned char **pp, long length); +int i2d_DHparams(const DH *a, unsigned char **pp); +DH *d2i_DHxparams(DH **a, const unsigned char **pp, long length); +int i2d_DHxparams(const DH *a, unsigned char **pp); +# ifndef OPENSSL_NO_FP_API +int DHparams_print_fp(FILE *fp, const DH *x); +# endif +# ifndef OPENSSL_NO_BIO +int DHparams_print(BIO *bp, const DH *x); +# else +int DHparams_print(char *bp, const DH *x); +# endif + +/* RFC 5114 parameters */ +DH *DH_get_1024_160(void); +DH *DH_get_2048_224(void); +DH *DH_get_2048_256(void); + +/* RFC2631 KDF */ +int DH_KDF_X9_42(unsigned char *out, size_t outlen, + const unsigned char *Z, size_t Zlen, + ASN1_OBJECT *key_oid, + const unsigned char *ukm, size_t ukmlen, const EVP_MD *md); + +# define EVP_PKEY_CTX_set_dh_paramgen_prime_len(ctx, len) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DH, EVP_PKEY_OP_PARAMGEN, \ + EVP_PKEY_CTRL_DH_PARAMGEN_PRIME_LEN, len, NULL) + +# define EVP_PKEY_CTX_set_dh_paramgen_subprime_len(ctx, len) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DH, EVP_PKEY_OP_PARAMGEN, \ + EVP_PKEY_CTRL_DH_PARAMGEN_SUBPRIME_LEN, len, NULL) + +# define EVP_PKEY_CTX_set_dh_paramgen_type(ctx, typ) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DH, EVP_PKEY_OP_PARAMGEN, \ + EVP_PKEY_CTRL_DH_PARAMGEN_TYPE, typ, NULL) + +# define EVP_PKEY_CTX_set_dh_paramgen_generator(ctx, gen) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DH, EVP_PKEY_OP_PARAMGEN, \ + EVP_PKEY_CTRL_DH_PARAMGEN_GENERATOR, gen, NULL) + +# define EVP_PKEY_CTX_set_dh_rfc5114(ctx, gen) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, EVP_PKEY_OP_PARAMGEN, \ + EVP_PKEY_CTRL_DH_RFC5114, gen, NULL) + +# define EVP_PKEY_CTX_set_dhx_rfc5114(ctx, gen) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, EVP_PKEY_OP_PARAMGEN, \ + EVP_PKEY_CTRL_DH_RFC5114, gen, NULL) + +# define EVP_PKEY_CTX_set_dh_kdf_type(ctx, kdf) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_DH_KDF_TYPE, kdf, NULL) + +# define EVP_PKEY_CTX_get_dh_kdf_type(ctx) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_DH_KDF_TYPE, -2, NULL) + +# define EVP_PKEY_CTX_set0_dh_kdf_oid(ctx, oid) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_DH_KDF_OID, 0, (void *)oid) + +# define EVP_PKEY_CTX_get0_dh_kdf_oid(ctx, poid) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_GET_DH_KDF_OID, 0, (void *)poid) + +# define EVP_PKEY_CTX_set_dh_kdf_md(ctx, md) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_DH_KDF_MD, 0, (void *)md) + +# define EVP_PKEY_CTX_get_dh_kdf_md(ctx, pmd) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_GET_DH_KDF_MD, 0, (void *)pmd) + +# define EVP_PKEY_CTX_set_dh_kdf_outlen(ctx, len) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_DH_KDF_OUTLEN, len, NULL) + +# define EVP_PKEY_CTX_get_dh_kdf_outlen(ctx, plen) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_GET_DH_KDF_OUTLEN, 0, (void *)plen) + +# define EVP_PKEY_CTX_set0_dh_kdf_ukm(ctx, p, plen) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_DH_KDF_UKM, plen, (void *)p) + +# define EVP_PKEY_CTX_get0_dh_kdf_ukm(ctx, p) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_GET_DH_KDF_UKM, 0, (void *)p) + +# define EVP_PKEY_CTRL_DH_PARAMGEN_PRIME_LEN (EVP_PKEY_ALG_CTRL + 1) +# define EVP_PKEY_CTRL_DH_PARAMGEN_GENERATOR (EVP_PKEY_ALG_CTRL + 2) +# define EVP_PKEY_CTRL_DH_RFC5114 (EVP_PKEY_ALG_CTRL + 3) +# define EVP_PKEY_CTRL_DH_PARAMGEN_SUBPRIME_LEN (EVP_PKEY_ALG_CTRL + 4) +# define EVP_PKEY_CTRL_DH_PARAMGEN_TYPE (EVP_PKEY_ALG_CTRL + 5) +# define EVP_PKEY_CTRL_DH_KDF_TYPE (EVP_PKEY_ALG_CTRL + 6) +# define EVP_PKEY_CTRL_DH_KDF_MD (EVP_PKEY_ALG_CTRL + 7) +# define EVP_PKEY_CTRL_GET_DH_KDF_MD (EVP_PKEY_ALG_CTRL + 8) +# define EVP_PKEY_CTRL_DH_KDF_OUTLEN (EVP_PKEY_ALG_CTRL + 9) +# define EVP_PKEY_CTRL_GET_DH_KDF_OUTLEN (EVP_PKEY_ALG_CTRL + 10) +# define EVP_PKEY_CTRL_DH_KDF_UKM (EVP_PKEY_ALG_CTRL + 11) +# define EVP_PKEY_CTRL_GET_DH_KDF_UKM (EVP_PKEY_ALG_CTRL + 12) +# define EVP_PKEY_CTRL_DH_KDF_OID (EVP_PKEY_ALG_CTRL + 13) +# define EVP_PKEY_CTRL_GET_DH_KDF_OID (EVP_PKEY_ALG_CTRL + 14) + +/* KDF types */ +# define EVP_PKEY_DH_KDF_NONE 1 +# define EVP_PKEY_DH_KDF_X9_42 2 + +/* BEGIN ERROR CODES */ +/* + * The following lines are auto generated by the script mkerr.pl. Any changes + * made after this point may be overwritten when the script is next run. + */ +void ERR_load_DH_strings(void); + +/* Error codes for the DH functions. */ + +/* Function codes. */ +# define DH_F_COMPUTE_KEY 102 +# define DH_F_DHPARAMS_PRINT_FP 101 +# define DH_F_DH_BUILTIN_GENPARAMS 106 +# define DH_F_DH_CMS_DECRYPT 117 +# define DH_F_DH_CMS_SET_PEERKEY 118 +# define DH_F_DH_CMS_SET_SHARED_INFO 119 +# define DH_F_DH_COMPUTE_KEY 114 +# define DH_F_DH_GENERATE_KEY 115 +# define DH_F_DH_GENERATE_PARAMETERS_EX 116 +# define DH_F_DH_NEW_METHOD 105 +# define DH_F_DH_PARAM_DECODE 107 +# define DH_F_DH_PRIV_DECODE 110 +# define DH_F_DH_PRIV_ENCODE 111 +# define DH_F_DH_PUB_DECODE 108 +# define DH_F_DH_PUB_ENCODE 109 +# define DH_F_DO_DH_PRINT 100 +# define DH_F_GENERATE_KEY 103 +# define DH_F_GENERATE_PARAMETERS 104 +# define DH_F_PKEY_DH_DERIVE 112 +# define DH_F_PKEY_DH_KEYGEN 113 + +/* Reason codes. */ +# define DH_R_BAD_GENERATOR 101 +# define DH_R_BN_DECODE_ERROR 109 +# define DH_R_BN_ERROR 106 +# define DH_R_DECODE_ERROR 104 +# define DH_R_INVALID_PUBKEY 102 +# define DH_R_KDF_PARAMETER_ERROR 112 +# define DH_R_KEYS_NOT_SET 108 +# define DH_R_KEY_SIZE_TOO_SMALL 110 +# define DH_R_MODULUS_TOO_LARGE 103 +# define DH_R_NON_FIPS_METHOD 111 +# define DH_R_NO_PARAMETERS_SET 107 +# define DH_R_NO_PRIVATE_VALUE 100 +# define DH_R_PARAMETER_ENCODING_ERROR 105 +# define DH_R_PEER_KEY_ERROR 113 +# define DH_R_SHARED_INFO_ERROR 114 + +#ifdef __cplusplus +} +#endif +#endif diff --git a/ext/openssl-osx/include/openssl/dsa.h b/ext/openssl-osx/include/openssl/dsa.h new file mode 100644 index 00000000..545358fd --- /dev/null +++ b/ext/openssl-osx/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/ext/openssl-osx/include/openssl/dtls1.h b/ext/openssl-osx/include/openssl/dtls1.h new file mode 100644 index 00000000..4af7e4a7 --- /dev/null +++ b/ext/openssl-osx/include/openssl/dtls1.h @@ -0,0 +1,271 @@ +/* ssl/dtls1.h */ +/* + * DTLS implementation written by Nagendra Modadugu + * (nagendra@cs.stanford.edu) for the OpenSSL project 2005. + */ +/* ==================================================================== + * Copyright (c) 1999-2005 The OpenSSL Project. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. All advertising materials mentioning features or use of this + * software must display the following acknowledgment: + * "This product includes software developed by the OpenSSL Project + * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" + * + * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to + * endorse or promote products derived from this software without + * prior written permission. For written permission, please contact + * openssl-core@OpenSSL.org. + * + * 5. Products derived from this software may not be called "OpenSSL" + * nor may "OpenSSL" appear in their names without prior written + * permission of the OpenSSL Project. + * + * 6. Redistributions of any form whatsoever must retain the following + * acknowledgment: + * "This product includes software developed by the OpenSSL Project + * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" + * + * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY + * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * ==================================================================== + * + * This product includes cryptographic software written by Eric Young + * (eay@cryptsoft.com). This product includes software written by Tim + * Hudson (tjh@cryptsoft.com). + * + */ + +#ifndef HEADER_DTLS1_H +# define HEADER_DTLS1_H + +# include +# include +# ifdef OPENSSL_SYS_VMS +# include +# include +# endif +# ifdef OPENSSL_SYS_WIN32 +/* Needed for struct timeval */ +# include +# elif defined(OPENSSL_SYS_NETWARE) && !defined(_WINSOCK2API_) +# include +# else +# if defined(OPENSSL_SYS_VXWORKS) +# include +# else +# include +# endif +# endif + +#ifdef __cplusplus +extern "C" { +#endif + +# define DTLS1_VERSION 0xFEFF +# define DTLS1_2_VERSION 0xFEFD +# define DTLS_MAX_VERSION DTLS1_2_VERSION + +# define DTLS1_BAD_VER 0x0100 + +/* Special value for method supporting multiple versions */ +# define DTLS_ANY_VERSION 0x1FFFF + +# if 0 +/* this alert description is not specified anywhere... */ +# define DTLS1_AD_MISSING_HANDSHAKE_MESSAGE 110 +# endif + +/* lengths of messages */ +# define DTLS1_COOKIE_LENGTH 256 + +# define DTLS1_RT_HEADER_LENGTH 13 + +# define DTLS1_HM_HEADER_LENGTH 12 + +# define DTLS1_HM_BAD_FRAGMENT -2 +# define DTLS1_HM_FRAGMENT_RETRY -3 + +# define DTLS1_CCS_HEADER_LENGTH 1 + +# ifdef DTLS1_AD_MISSING_HANDSHAKE_MESSAGE +# define DTLS1_AL_HEADER_LENGTH 7 +# else +# define DTLS1_AL_HEADER_LENGTH 2 +# endif + +# ifndef OPENSSL_NO_SSL_INTERN + +# ifndef OPENSSL_NO_SCTP +# define DTLS1_SCTP_AUTH_LABEL "EXPORTER_DTLS_OVER_SCTP" +# endif + +/* Max MTU overhead we know about so far is 40 for IPv6 + 8 for UDP */ +# define DTLS1_MAX_MTU_OVERHEAD 48 + +typedef struct dtls1_bitmap_st { + unsigned long map; /* track 32 packets on 32-bit systems and 64 + * - on 64-bit systems */ + unsigned char max_seq_num[8]; /* max record number seen so far, 64-bit + * value in big-endian encoding */ +} DTLS1_BITMAP; + +struct dtls1_retransmit_state { + EVP_CIPHER_CTX *enc_write_ctx; /* cryptographic state */ + EVP_MD_CTX *write_hash; /* used for mac generation */ +# ifndef OPENSSL_NO_COMP + COMP_CTX *compress; /* compression */ +# else + char *compress; +# endif + SSL_SESSION *session; + unsigned short epoch; +}; + +struct hm_header_st { + unsigned char type; + unsigned long msg_len; + unsigned short seq; + unsigned long frag_off; + unsigned long frag_len; + unsigned int is_ccs; + struct dtls1_retransmit_state saved_retransmit_state; +}; + +struct ccs_header_st { + unsigned char type; + unsigned short seq; +}; + +struct dtls1_timeout_st { + /* Number of read timeouts so far */ + unsigned int read_timeouts; + /* Number of write timeouts so far */ + unsigned int write_timeouts; + /* Number of alerts received so far */ + unsigned int num_alerts; +}; + +typedef struct record_pqueue_st { + unsigned short epoch; + pqueue q; +} record_pqueue; + +typedef struct hm_fragment_st { + struct hm_header_st msg_header; + unsigned char *fragment; + unsigned char *reassembly; +} hm_fragment; + +typedef struct dtls1_state_st { + unsigned int send_cookie; + unsigned char cookie[DTLS1_COOKIE_LENGTH]; + unsigned char rcvd_cookie[DTLS1_COOKIE_LENGTH]; + unsigned int cookie_len; + /* + * The current data and handshake epoch. This is initially + * undefined, and starts at zero once the initial handshake is + * completed + */ + unsigned short r_epoch; + unsigned short w_epoch; + /* records being received in the current epoch */ + DTLS1_BITMAP bitmap; + /* renegotiation starts a new set of sequence numbers */ + DTLS1_BITMAP next_bitmap; + /* handshake message numbers */ + unsigned short handshake_write_seq; + unsigned short next_handshake_write_seq; + unsigned short handshake_read_seq; + /* save last sequence number for retransmissions */ + unsigned char last_write_sequence[8]; + /* Received handshake records (processed and unprocessed) */ + record_pqueue unprocessed_rcds; + record_pqueue processed_rcds; + /* Buffered handshake messages */ + pqueue buffered_messages; + /* Buffered (sent) handshake records */ + pqueue sent_messages; + /* + * Buffered application records. Only for records between CCS and + * Finished to prevent either protocol violation or unnecessary message + * loss. + */ + record_pqueue buffered_app_data; + /* Is set when listening for new connections with dtls1_listen() */ + unsigned int listen; + unsigned int link_mtu; /* max on-the-wire DTLS packet size */ + unsigned int mtu; /* max DTLS packet size */ + struct hm_header_st w_msg_hdr; + struct hm_header_st r_msg_hdr; + struct dtls1_timeout_st timeout; + /* + * Indicates when the last handshake msg or heartbeat sent will timeout + */ + struct timeval next_timeout; + /* Timeout duration */ + unsigned short timeout_duration; + /* + * storage for Alert/Handshake protocol data received but not yet + * processed by ssl3_read_bytes: + */ + unsigned char alert_fragment[DTLS1_AL_HEADER_LENGTH]; + unsigned int alert_fragment_len; + unsigned char handshake_fragment[DTLS1_HM_HEADER_LENGTH]; + unsigned int handshake_fragment_len; + unsigned int retransmitting; + /* + * Set when the handshake is ready to process peer's ChangeCipherSpec message. + * Cleared after the message has been processed. + */ + unsigned int change_cipher_spec_ok; +# ifndef OPENSSL_NO_SCTP + /* used when SSL_ST_XX_FLUSH is entered */ + int next_state; + int shutdown_received; +# endif +} DTLS1_STATE; + +typedef struct dtls1_record_data_st { + unsigned char *packet; + unsigned int packet_length; + SSL3_BUFFER rbuf; + SSL3_RECORD rrec; +# ifndef OPENSSL_NO_SCTP + struct bio_dgram_sctp_rcvinfo recordinfo; +# endif +} DTLS1_RECORD_DATA; + +# endif + +/* Timeout multipliers (timeout slice is defined in apps/timeouts.h */ +# define DTLS1_TMO_READ_COUNT 2 +# define DTLS1_TMO_WRITE_COUNT 2 + +# define DTLS1_TMO_ALERT_COUNT 12 + +#ifdef __cplusplus +} +#endif +#endif diff --git a/ext/openssl-osx/include/openssl/e_os2.h b/ext/openssl-osx/include/openssl/e_os2.h new file mode 100644 index 00000000..613607f8 --- /dev/null +++ b/ext/openssl-osx/include/openssl/e_os2.h @@ -0,0 +1,322 @@ +/* e_os2.h */ +/* ==================================================================== + * Copyright (c) 1998-2000 The OpenSSL Project. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. All advertising materials mentioning features or use of this + * software must display the following acknowledgment: + * "This product includes software developed by the OpenSSL Project + * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" + * + * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to + * endorse or promote products derived from this software without + * prior written permission. For written permission, please contact + * openssl-core@openssl.org. + * + * 5. Products derived from this software may not be called "OpenSSL" + * nor may "OpenSSL" appear in their names without prior written + * permission of the OpenSSL Project. + * + * 6. Redistributions of any form whatsoever must retain the following + * acknowledgment: + * "This product includes software developed by the OpenSSL Project + * for use in the OpenSSL Toolkit (http://www.openssl.org/)" + * + * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY + * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * ==================================================================== + * + * This product includes cryptographic software written by Eric Young + * (eay@cryptsoft.com). This product includes software written by Tim + * Hudson (tjh@cryptsoft.com). + * + */ + +#include + +#ifndef HEADER_E_OS2_H +# define HEADER_E_OS2_H + +#ifdef __cplusplus +extern "C" { +#endif + +/****************************************************************************** + * Detect operating systems. This probably needs completing. + * The result is that at least one OPENSSL_SYS_os macro should be defined. + * However, if none is defined, Unix is assumed. + **/ + +# define OPENSSL_SYS_UNIX + +/* ---------------------- Macintosh, before MacOS X ----------------------- */ +# if defined(__MWERKS__) && defined(macintosh) || defined(OPENSSL_SYSNAME_MAC) +# undef OPENSSL_SYS_UNIX +# define OPENSSL_SYS_MACINTOSH_CLASSIC +# endif + +/* ---------------------- NetWare ----------------------------------------- */ +# if defined(NETWARE) || defined(OPENSSL_SYSNAME_NETWARE) +# undef OPENSSL_SYS_UNIX +# define OPENSSL_SYS_NETWARE +# endif + +/* --------------------- Microsoft operating systems ---------------------- */ + +/* + * Note that MSDOS actually denotes 32-bit environments running on top of + * MS-DOS, such as DJGPP one. + */ +# if defined(OPENSSL_SYSNAME_MSDOS) +# undef OPENSSL_SYS_UNIX +# define OPENSSL_SYS_MSDOS +# endif + +/* + * For 32 bit environment, there seems to be the CygWin environment and then + * all the others that try to do the same thing Microsoft does... + */ +# if defined(OPENSSL_SYSNAME_UWIN) +# undef OPENSSL_SYS_UNIX +# define OPENSSL_SYS_WIN32_UWIN +# else +# if defined(__CYGWIN__) || defined(OPENSSL_SYSNAME_CYGWIN) +# undef OPENSSL_SYS_UNIX +# define OPENSSL_SYS_WIN32_CYGWIN +# else +# if defined(_WIN32) || defined(OPENSSL_SYSNAME_WIN32) +# undef OPENSSL_SYS_UNIX +# define OPENSSL_SYS_WIN32 +# endif +# if defined(OPENSSL_SYSNAME_WINNT) +# undef OPENSSL_SYS_UNIX +# define OPENSSL_SYS_WINNT +# endif +# if defined(OPENSSL_SYSNAME_WINCE) +# undef OPENSSL_SYS_UNIX +# define OPENSSL_SYS_WINCE +# endif +# endif +# endif + +/* Anything that tries to look like Microsoft is "Windows" */ +# if defined(OPENSSL_SYS_WIN32) || defined(OPENSSL_SYS_WINNT) || defined(OPENSSL_SYS_WINCE) +# undef OPENSSL_SYS_UNIX +# define OPENSSL_SYS_WINDOWS +# ifndef OPENSSL_SYS_MSDOS +# define OPENSSL_SYS_MSDOS +# endif +# endif + +/* + * DLL settings. This part is a bit tough, because it's up to the + * application implementor how he or she will link the application, so it + * requires some macro to be used. + */ +# ifdef OPENSSL_SYS_WINDOWS +# ifndef OPENSSL_OPT_WINDLL +# if defined(_WINDLL) /* This is used when building OpenSSL to + * indicate that DLL linkage should be used */ +# define OPENSSL_OPT_WINDLL +# endif +# endif +# endif + +/* ------------------------------- OpenVMS -------------------------------- */ +# if defined(__VMS) || defined(VMS) || defined(OPENSSL_SYSNAME_VMS) +# undef OPENSSL_SYS_UNIX +# define OPENSSL_SYS_VMS +# if defined(__DECC) +# define OPENSSL_SYS_VMS_DECC +# elif defined(__DECCXX) +# define OPENSSL_SYS_VMS_DECC +# define OPENSSL_SYS_VMS_DECCXX +# else +# define OPENSSL_SYS_VMS_NODECC +# endif +# endif + +/* -------------------------------- OS/2 ---------------------------------- */ +# if defined(__EMX__) || defined(__OS2__) +# undef OPENSSL_SYS_UNIX +# define OPENSSL_SYS_OS2 +# endif + +/* -------------------------------- Unix ---------------------------------- */ +# ifdef OPENSSL_SYS_UNIX +# if defined(linux) || defined(__linux__) || defined(OPENSSL_SYSNAME_LINUX) +# define OPENSSL_SYS_LINUX +# endif +# ifdef OPENSSL_SYSNAME_MPE +# define OPENSSL_SYS_MPE +# endif +# ifdef OPENSSL_SYSNAME_SNI +# define OPENSSL_SYS_SNI +# endif +# ifdef OPENSSL_SYSNAME_ULTRASPARC +# define OPENSSL_SYS_ULTRASPARC +# endif +# ifdef OPENSSL_SYSNAME_NEWS4 +# define OPENSSL_SYS_NEWS4 +# endif +# ifdef OPENSSL_SYSNAME_MACOSX +# define OPENSSL_SYS_MACOSX +# endif +# ifdef OPENSSL_SYSNAME_MACOSX_RHAPSODY +# define OPENSSL_SYS_MACOSX_RHAPSODY +# define OPENSSL_SYS_MACOSX +# endif +# ifdef OPENSSL_SYSNAME_SUNOS +# define OPENSSL_SYS_SUNOS +# endif +# if defined(_CRAY) || defined(OPENSSL_SYSNAME_CRAY) +# define OPENSSL_SYS_CRAY +# endif +# if defined(_AIX) || defined(OPENSSL_SYSNAME_AIX) +# define OPENSSL_SYS_AIX +# endif +# endif + +/* -------------------------------- VOS ----------------------------------- */ +# if defined(__VOS__) || defined(OPENSSL_SYSNAME_VOS) +# define OPENSSL_SYS_VOS +# ifdef __HPPA__ +# define OPENSSL_SYS_VOS_HPPA +# endif +# ifdef __IA32__ +# define OPENSSL_SYS_VOS_IA32 +# endif +# endif + +/* ------------------------------ VxWorks --------------------------------- */ +# ifdef OPENSSL_SYSNAME_VXWORKS +# define OPENSSL_SYS_VXWORKS +# endif + +/* -------------------------------- BeOS ---------------------------------- */ +# if defined(__BEOS__) +# define OPENSSL_SYS_BEOS +# include +# if defined(BONE_VERSION) +# define OPENSSL_SYS_BEOS_BONE +# else +# define OPENSSL_SYS_BEOS_R5 +# endif +# endif + +/** + * That's it for OS-specific stuff + *****************************************************************************/ + +/* Specials for I/O an exit */ +# ifdef OPENSSL_SYS_MSDOS +# define OPENSSL_UNISTD_IO +# define OPENSSL_DECLARE_EXIT extern void exit(int); +# else +# define OPENSSL_UNISTD_IO OPENSSL_UNISTD +# define OPENSSL_DECLARE_EXIT /* declared in unistd.h */ +# endif + +/*- + * Definitions of OPENSSL_GLOBAL and OPENSSL_EXTERN, to define and declare + * certain global symbols that, with some compilers under VMS, have to be + * defined and declared explicitely with globaldef and globalref. + * Definitions of OPENSSL_EXPORT and OPENSSL_IMPORT, to define and declare + * DLL exports and imports for compilers under Win32. These are a little + * more complicated to use. Basically, for any library that exports some + * global variables, the following code must be present in the header file + * that declares them, before OPENSSL_EXTERN is used: + * + * #ifdef SOME_BUILD_FLAG_MACRO + * # undef OPENSSL_EXTERN + * # define OPENSSL_EXTERN OPENSSL_EXPORT + * #endif + * + * The default is to have OPENSSL_EXPORT, OPENSSL_IMPORT and OPENSSL_GLOBAL + * have some generally sensible values, and for OPENSSL_EXTERN to have the + * value OPENSSL_IMPORT. + */ + +# if defined(OPENSSL_SYS_VMS_NODECC) +# define OPENSSL_EXPORT globalref +# define OPENSSL_IMPORT globalref +# define OPENSSL_GLOBAL globaldef +# elif defined(OPENSSL_SYS_WINDOWS) && defined(OPENSSL_OPT_WINDLL) +# define OPENSSL_EXPORT extern __declspec(dllexport) +# define OPENSSL_IMPORT extern __declspec(dllimport) +# define OPENSSL_GLOBAL +# else +# define OPENSSL_EXPORT extern +# define OPENSSL_IMPORT extern +# define OPENSSL_GLOBAL +# endif +# define OPENSSL_EXTERN OPENSSL_IMPORT + +/*- + * Macros to allow global variables to be reached through function calls when + * required (if a shared library version requires it, for example. + * The way it's done allows definitions like this: + * + * // in foobar.c + * OPENSSL_IMPLEMENT_GLOBAL(int,foobar,0) + * // in foobar.h + * OPENSSL_DECLARE_GLOBAL(int,foobar); + * #define foobar OPENSSL_GLOBAL_REF(foobar) + */ +# ifdef OPENSSL_EXPORT_VAR_AS_FUNCTION +# define OPENSSL_IMPLEMENT_GLOBAL(type,name,value) \ + type *_shadow_##name(void) \ + { static type _hide_##name=value; return &_hide_##name; } +# define OPENSSL_DECLARE_GLOBAL(type,name) type *_shadow_##name(void) +# define OPENSSL_GLOBAL_REF(name) (*(_shadow_##name())) +# else +# define OPENSSL_IMPLEMENT_GLOBAL(type,name,value) OPENSSL_GLOBAL type _shadow_##name=value; +# define OPENSSL_DECLARE_GLOBAL(type,name) OPENSSL_EXPORT type _shadow_##name +# define OPENSSL_GLOBAL_REF(name) _shadow_##name +# endif + +# if defined(OPENSSL_SYS_MACINTOSH_CLASSIC) && macintosh==1 && !defined(MAC_OS_GUSI_SOURCE) +# define ossl_ssize_t long +# endif + +# ifdef OPENSSL_SYS_MSDOS +# define ossl_ssize_t long +# endif + +# if defined(NeXT) || defined(OPENSSL_SYS_NEWS4) || defined(OPENSSL_SYS_SUNOS) +# define ssize_t int +# endif + +# if defined(__ultrix) && !defined(ssize_t) +# define ossl_ssize_t int +# endif + +# ifndef ossl_ssize_t +# define ossl_ssize_t ssize_t +# endif + +#ifdef __cplusplus +} +#endif +#endif diff --git a/ext/openssl-osx/include/openssl/ec.h b/ext/openssl-osx/include/openssl/ec.h new file mode 100644 index 00000000..98edfdf8 --- /dev/null +++ b/ext/openssl-osx/include/openssl/ec.h @@ -0,0 +1,1281 @@ +/* crypto/ec/ec.h */ +/* + * Originally written by Bodo Moeller for the OpenSSL project. + */ +/** + * \file crypto/ec/ec.h Include file for the OpenSSL EC functions + * \author Originally written by Bodo Moeller for the OpenSSL project + */ +/* ==================================================================== + * Copyright (c) 1998-2005 The OpenSSL Project. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. All advertising materials mentioning features or use of this + * software must display the following acknowledgment: + * "This product includes software developed by the OpenSSL Project + * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" + * + * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to + * endorse or promote products derived from this software without + * prior written permission. For written permission, please contact + * openssl-core@openssl.org. + * + * 5. Products derived from this software may not be called "OpenSSL" + * nor may "OpenSSL" appear in their names without prior written + * permission of the OpenSSL Project. + * + * 6. Redistributions of any form whatsoever must retain the following + * acknowledgment: + * "This product includes software developed by the OpenSSL Project + * for use in the OpenSSL Toolkit (http://www.openssl.org/)" + * + * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY + * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * ==================================================================== + * + * This product includes cryptographic software written by Eric Young + * (eay@cryptsoft.com). This product includes software written by Tim + * Hudson (tjh@cryptsoft.com). + * + */ +/* ==================================================================== + * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED. + * + * Portions of the attached software ("Contribution") are developed by + * SUN MICROSYSTEMS, INC., and are contributed to the OpenSSL project. + * + * The Contribution is licensed pursuant to the OpenSSL open source + * license provided above. + * + * The elliptic curve binary polynomial software is originally written by + * Sheueling Chang Shantz and Douglas Stebila of Sun Microsystems Laboratories. + * + */ + +#ifndef HEADER_EC_H +# define HEADER_EC_H + +# include + +# ifdef OPENSSL_NO_EC +# error EC is disabled. +# endif + +# include +# include +# ifndef OPENSSL_NO_DEPRECATED +# include +# endif + +# ifdef __cplusplus +extern "C" { +# elif defined(__SUNPRO_C) +# if __SUNPRO_C >= 0x520 +# pragma error_messages (off,E_ARRAY_OF_INCOMPLETE_NONAME,E_ARRAY_OF_INCOMPLETE) +# endif +# endif + +# ifndef OPENSSL_ECC_MAX_FIELD_BITS +# define OPENSSL_ECC_MAX_FIELD_BITS 661 +# endif + +/** Enum for the point conversion form as defined in X9.62 (ECDSA) + * for the encoding of a elliptic curve point (x,y) */ +typedef enum { + /** the point is encoded as z||x, where the octet z specifies + * which solution of the quadratic equation y is */ + POINT_CONVERSION_COMPRESSED = 2, + /** the point is encoded as z||x||y, where z is the octet 0x02 */ + POINT_CONVERSION_UNCOMPRESSED = 4, + /** the point is encoded as z||x||y, where the octet z specifies + * which solution of the quadratic equation y is */ + POINT_CONVERSION_HYBRID = 6 +} point_conversion_form_t; + +typedef struct ec_method_st EC_METHOD; + +typedef struct ec_group_st + /*- + EC_METHOD *meth; + -- field definition + -- curve coefficients + -- optional generator with associated information (order, cofactor) + -- optional extra data (precomputed table for fast computation of multiples of generator) + -- ASN1 stuff + */ + EC_GROUP; + +typedef struct ec_point_st EC_POINT; + +/********************************************************************/ +/* EC_METHODs for curves over GF(p) */ +/********************************************************************/ + +/** Returns the basic GFp ec methods which provides the basis for the + * optimized methods. + * \return EC_METHOD object + */ +const EC_METHOD *EC_GFp_simple_method(void); + +/** Returns GFp methods using montgomery multiplication. + * \return EC_METHOD object + */ +const EC_METHOD *EC_GFp_mont_method(void); + +/** Returns GFp methods using optimized methods for NIST recommended curves + * \return EC_METHOD object + */ +const EC_METHOD *EC_GFp_nist_method(void); + +# ifndef OPENSSL_NO_EC_NISTP_64_GCC_128 +/** Returns 64-bit optimized methods for nistp224 + * \return EC_METHOD object + */ +const EC_METHOD *EC_GFp_nistp224_method(void); + +/** Returns 64-bit optimized methods for nistp256 + * \return EC_METHOD object + */ +const EC_METHOD *EC_GFp_nistp256_method(void); + +/** Returns 64-bit optimized methods for nistp521 + * \return EC_METHOD object + */ +const EC_METHOD *EC_GFp_nistp521_method(void); +# endif + +# ifndef OPENSSL_NO_EC2M +/********************************************************************/ +/* EC_METHOD for curves over GF(2^m) */ +/********************************************************************/ + +/** Returns the basic GF2m ec method + * \return EC_METHOD object + */ +const EC_METHOD *EC_GF2m_simple_method(void); + +# endif + +/********************************************************************/ +/* EC_GROUP functions */ +/********************************************************************/ + +/** Creates a new EC_GROUP object + * \param meth EC_METHOD to use + * \return newly created EC_GROUP object or NULL in case of an error. + */ +EC_GROUP *EC_GROUP_new(const EC_METHOD *meth); + +/** Frees a EC_GROUP object + * \param group EC_GROUP object to be freed. + */ +void EC_GROUP_free(EC_GROUP *group); + +/** Clears and frees a EC_GROUP object + * \param group EC_GROUP object to be cleared and freed. + */ +void EC_GROUP_clear_free(EC_GROUP *group); + +/** Copies EC_GROUP objects. Note: both EC_GROUPs must use the same EC_METHOD. + * \param dst destination EC_GROUP object + * \param src source EC_GROUP object + * \return 1 on success and 0 if an error occurred. + */ +int EC_GROUP_copy(EC_GROUP *dst, const EC_GROUP *src); + +/** Creates a new EC_GROUP object and copies the copies the content + * form src to the newly created EC_KEY object + * \param src source EC_GROUP object + * \return newly created EC_GROUP object or NULL in case of an error. + */ +EC_GROUP *EC_GROUP_dup(const EC_GROUP *src); + +/** Returns the EC_METHOD of the EC_GROUP object. + * \param group EC_GROUP object + * \return EC_METHOD used in this EC_GROUP object. + */ +const EC_METHOD *EC_GROUP_method_of(const EC_GROUP *group); + +/** Returns the field type of the EC_METHOD. + * \param meth EC_METHOD object + * \return NID of the underlying field type OID. + */ +int EC_METHOD_get_field_type(const EC_METHOD *meth); + +/** Sets the generator and it's order/cofactor of a EC_GROUP object. + * \param group EC_GROUP object + * \param generator EC_POINT object with the generator. + * \param order the order of the group generated by the generator. + * \param cofactor the index of the sub-group generated by the generator + * in the group of all points on the elliptic curve. + * \return 1 on success and 0 if an error occured + */ +int EC_GROUP_set_generator(EC_GROUP *group, const EC_POINT *generator, + const BIGNUM *order, const BIGNUM *cofactor); + +/** Returns the generator of a EC_GROUP object. + * \param group EC_GROUP object + * \return the currently used generator (possibly NULL). + */ +const EC_POINT *EC_GROUP_get0_generator(const EC_GROUP *group); + +/** Returns the montgomery data for order(Generator) + * \param group EC_GROUP object + * \return the currently used generator (possibly NULL). +*/ +BN_MONT_CTX *EC_GROUP_get_mont_data(const EC_GROUP *group); + +/** Gets the order of a EC_GROUP + * \param group EC_GROUP object + * \param order BIGNUM to which the order is copied + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occured + */ +int EC_GROUP_get_order(const EC_GROUP *group, BIGNUM *order, BN_CTX *ctx); + +/** Gets the cofactor of a EC_GROUP + * \param group EC_GROUP object + * \param cofactor BIGNUM to which the cofactor is copied + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occured + */ +int EC_GROUP_get_cofactor(const EC_GROUP *group, BIGNUM *cofactor, + BN_CTX *ctx); + +/** Sets the name of a EC_GROUP object + * \param group EC_GROUP object + * \param nid NID of the curve name OID + */ +void EC_GROUP_set_curve_name(EC_GROUP *group, int nid); + +/** Returns the curve name of a EC_GROUP object + * \param group EC_GROUP object + * \return NID of the curve name OID or 0 if not set. + */ +int EC_GROUP_get_curve_name(const EC_GROUP *group); + +void EC_GROUP_set_asn1_flag(EC_GROUP *group, int flag); +int EC_GROUP_get_asn1_flag(const EC_GROUP *group); + +void EC_GROUP_set_point_conversion_form(EC_GROUP *group, + point_conversion_form_t form); +point_conversion_form_t EC_GROUP_get_point_conversion_form(const EC_GROUP *); + +unsigned char *EC_GROUP_get0_seed(const EC_GROUP *x); +size_t EC_GROUP_get_seed_len(const EC_GROUP *); +size_t EC_GROUP_set_seed(EC_GROUP *, const unsigned char *, size_t len); + +/** Sets the parameter of a ec over GFp defined by y^2 = x^3 + a*x + b + * \param group EC_GROUP object + * \param p BIGNUM with the prime number + * \param a BIGNUM with parameter a of the equation + * \param b BIGNUM with parameter b of the equation + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occured + */ +int EC_GROUP_set_curve_GFp(EC_GROUP *group, const BIGNUM *p, const BIGNUM *a, + const BIGNUM *b, BN_CTX *ctx); + +/** Gets the parameter of the ec over GFp defined by y^2 = x^3 + a*x + b + * \param group EC_GROUP object + * \param p BIGNUM for the prime number + * \param a BIGNUM for parameter a of the equation + * \param b BIGNUM for parameter b of the equation + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occured + */ +int EC_GROUP_get_curve_GFp(const EC_GROUP *group, BIGNUM *p, BIGNUM *a, + BIGNUM *b, BN_CTX *ctx); + +# ifndef OPENSSL_NO_EC2M +/** Sets the parameter of a ec over GF2m defined by y^2 + x*y = x^3 + a*x^2 + b + * \param group EC_GROUP object + * \param p BIGNUM with the polynomial defining the underlying field + * \param a BIGNUM with parameter a of the equation + * \param b BIGNUM with parameter b of the equation + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occured + */ +int EC_GROUP_set_curve_GF2m(EC_GROUP *group, const BIGNUM *p, const BIGNUM *a, + const BIGNUM *b, BN_CTX *ctx); + +/** Gets the parameter of the ec over GF2m defined by y^2 + x*y = x^3 + a*x^2 + b + * \param group EC_GROUP object + * \param p BIGNUM for the polynomial defining the underlying field + * \param a BIGNUM for parameter a of the equation + * \param b BIGNUM for parameter b of the equation + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occured + */ +int EC_GROUP_get_curve_GF2m(const EC_GROUP *group, BIGNUM *p, BIGNUM *a, + BIGNUM *b, BN_CTX *ctx); +# endif +/** Returns the number of bits needed to represent a field element + * \param group EC_GROUP object + * \return number of bits needed to represent a field element + */ +int EC_GROUP_get_degree(const EC_GROUP *group); + +/** Checks whether the parameter in the EC_GROUP define a valid ec group + * \param group EC_GROUP object + * \param ctx BN_CTX object (optional) + * \return 1 if group is a valid ec group and 0 otherwise + */ +int EC_GROUP_check(const EC_GROUP *group, BN_CTX *ctx); + +/** Checks whether the discriminant of the elliptic curve is zero or not + * \param group EC_GROUP object + * \param ctx BN_CTX object (optional) + * \return 1 if the discriminant is not zero and 0 otherwise + */ +int EC_GROUP_check_discriminant(const EC_GROUP *group, BN_CTX *ctx); + +/** Compares two EC_GROUP objects + * \param a first EC_GROUP object + * \param b second EC_GROUP object + * \param ctx BN_CTX object (optional) + * \return 0 if both groups are equal and 1 otherwise + */ +int EC_GROUP_cmp(const EC_GROUP *a, const EC_GROUP *b, BN_CTX *ctx); + +/* + * EC_GROUP_new_GF*() calls EC_GROUP_new() and EC_GROUP_set_GF*() after + * choosing an appropriate EC_METHOD + */ + +/** Creates a new EC_GROUP object with the specified parameters defined + * over GFp (defined by the equation y^2 = x^3 + a*x + b) + * \param p BIGNUM with the prime number + * \param a BIGNUM with the parameter a of the equation + * \param b BIGNUM with the parameter b of the equation + * \param ctx BN_CTX object (optional) + * \return newly created EC_GROUP object with the specified parameters + */ +EC_GROUP *EC_GROUP_new_curve_GFp(const BIGNUM *p, const BIGNUM *a, + const BIGNUM *b, BN_CTX *ctx); +# ifndef OPENSSL_NO_EC2M +/** Creates a new EC_GROUP object with the specified parameters defined + * over GF2m (defined by the equation y^2 + x*y = x^3 + a*x^2 + b) + * \param p BIGNUM with the polynomial defining the underlying field + * \param a BIGNUM with the parameter a of the equation + * \param b BIGNUM with the parameter b of the equation + * \param ctx BN_CTX object (optional) + * \return newly created EC_GROUP object with the specified parameters + */ +EC_GROUP *EC_GROUP_new_curve_GF2m(const BIGNUM *p, const BIGNUM *a, + const BIGNUM *b, BN_CTX *ctx); +# endif +/** Creates a EC_GROUP object with a curve specified by a NID + * \param nid NID of the OID of the curve name + * \return newly created EC_GROUP object with specified curve or NULL + * if an error occurred + */ +EC_GROUP *EC_GROUP_new_by_curve_name(int nid); + +/********************************************************************/ +/* handling of internal curves */ +/********************************************************************/ + +typedef struct { + int nid; + const char *comment; +} EC_builtin_curve; + +/* + * EC_builtin_curves(EC_builtin_curve *r, size_t size) returns number of all + * available curves or zero if a error occurred. In case r ist not zero + * nitems EC_builtin_curve structures are filled with the data of the first + * nitems internal groups + */ +size_t EC_get_builtin_curves(EC_builtin_curve *r, size_t nitems); + +const char *EC_curve_nid2nist(int nid); +int EC_curve_nist2nid(const char *name); + +/********************************************************************/ +/* EC_POINT functions */ +/********************************************************************/ + +/** Creates a new EC_POINT object for the specified EC_GROUP + * \param group EC_GROUP the underlying EC_GROUP object + * \return newly created EC_POINT object or NULL if an error occurred + */ +EC_POINT *EC_POINT_new(const EC_GROUP *group); + +/** Frees a EC_POINT object + * \param point EC_POINT object to be freed + */ +void EC_POINT_free(EC_POINT *point); + +/** Clears and frees a EC_POINT object + * \param point EC_POINT object to be cleared and freed + */ +void EC_POINT_clear_free(EC_POINT *point); + +/** Copies EC_POINT object + * \param dst destination EC_POINT object + * \param src source EC_POINT object + * \return 1 on success and 0 if an error occured + */ +int EC_POINT_copy(EC_POINT *dst, const EC_POINT *src); + +/** Creates a new EC_POINT object and copies the content of the supplied + * EC_POINT + * \param src source EC_POINT object + * \param group underlying the EC_GROUP object + * \return newly created EC_POINT object or NULL if an error occurred + */ +EC_POINT *EC_POINT_dup(const EC_POINT *src, const EC_GROUP *group); + +/** Returns the EC_METHOD used in EC_POINT object + * \param point EC_POINT object + * \return the EC_METHOD used + */ +const EC_METHOD *EC_POINT_method_of(const EC_POINT *point); + +/** Sets a point to infinity (neutral element) + * \param group underlying EC_GROUP object + * \param point EC_POINT to set to infinity + * \return 1 on success and 0 if an error occured + */ +int EC_POINT_set_to_infinity(const EC_GROUP *group, EC_POINT *point); + +/** Sets the jacobian projective coordinates of a EC_POINT over GFp + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM with the x-coordinate + * \param y BIGNUM with the y-coordinate + * \param z BIGNUM with the z-coordinate + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occured + */ +int EC_POINT_set_Jprojective_coordinates_GFp(const EC_GROUP *group, + EC_POINT *p, const BIGNUM *x, + const BIGNUM *y, const BIGNUM *z, + BN_CTX *ctx); + +/** Gets the jacobian projective coordinates of a EC_POINT over GFp + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM for the x-coordinate + * \param y BIGNUM for the y-coordinate + * \param z BIGNUM for the z-coordinate + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occured + */ +int EC_POINT_get_Jprojective_coordinates_GFp(const EC_GROUP *group, + const EC_POINT *p, BIGNUM *x, + BIGNUM *y, BIGNUM *z, + BN_CTX *ctx); + +/** Sets the affine coordinates of a EC_POINT over GFp + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM with the x-coordinate + * \param y BIGNUM with the y-coordinate + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occured + */ +int EC_POINT_set_affine_coordinates_GFp(const EC_GROUP *group, EC_POINT *p, + const BIGNUM *x, const BIGNUM *y, + BN_CTX *ctx); + +/** Gets the affine coordinates of a EC_POINT over GFp + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM for the x-coordinate + * \param y BIGNUM for the y-coordinate + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occured + */ +int EC_POINT_get_affine_coordinates_GFp(const EC_GROUP *group, + const EC_POINT *p, BIGNUM *x, + BIGNUM *y, BN_CTX *ctx); + +/** Sets the x9.62 compressed coordinates of a EC_POINT over GFp + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM with x-coordinate + * \param y_bit integer with the y-Bit (either 0 or 1) + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occured + */ +int EC_POINT_set_compressed_coordinates_GFp(const EC_GROUP *group, + EC_POINT *p, const BIGNUM *x, + int y_bit, BN_CTX *ctx); +# ifndef OPENSSL_NO_EC2M +/** Sets the affine coordinates of a EC_POINT over GF2m + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM with the x-coordinate + * \param y BIGNUM with the y-coordinate + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occured + */ +int EC_POINT_set_affine_coordinates_GF2m(const EC_GROUP *group, EC_POINT *p, + const BIGNUM *x, const BIGNUM *y, + BN_CTX *ctx); + +/** Gets the affine coordinates of a EC_POINT over GF2m + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM for the x-coordinate + * \param y BIGNUM for the y-coordinate + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occured + */ +int EC_POINT_get_affine_coordinates_GF2m(const EC_GROUP *group, + const EC_POINT *p, BIGNUM *x, + BIGNUM *y, BN_CTX *ctx); + +/** Sets the x9.62 compressed coordinates of a EC_POINT over GF2m + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM with x-coordinate + * \param y_bit integer with the y-Bit (either 0 or 1) + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occured + */ +int EC_POINT_set_compressed_coordinates_GF2m(const EC_GROUP *group, + EC_POINT *p, const BIGNUM *x, + int y_bit, BN_CTX *ctx); +# endif +/** Encodes a EC_POINT object to a octet string + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param form point conversion form + * \param buf memory buffer for the result. If NULL the function returns + * required buffer size. + * \param len length of the memory buffer + * \param ctx BN_CTX object (optional) + * \return the length of the encoded octet string or 0 if an error occurred + */ +size_t EC_POINT_point2oct(const EC_GROUP *group, const EC_POINT *p, + point_conversion_form_t form, + unsigned char *buf, size_t len, BN_CTX *ctx); + +/** Decodes a EC_POINT from a octet string + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param buf memory buffer with the encoded ec point + * \param len length of the encoded ec point + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occured + */ +int EC_POINT_oct2point(const EC_GROUP *group, EC_POINT *p, + const unsigned char *buf, size_t len, BN_CTX *ctx); + +/* other interfaces to point2oct/oct2point: */ +BIGNUM *EC_POINT_point2bn(const EC_GROUP *, const EC_POINT *, + point_conversion_form_t form, BIGNUM *, BN_CTX *); +EC_POINT *EC_POINT_bn2point(const EC_GROUP *, const BIGNUM *, + EC_POINT *, BN_CTX *); +char *EC_POINT_point2hex(const EC_GROUP *, const EC_POINT *, + point_conversion_form_t form, BN_CTX *); +EC_POINT *EC_POINT_hex2point(const EC_GROUP *, const char *, + EC_POINT *, BN_CTX *); + +/********************************************************************/ +/* functions for doing EC_POINT arithmetic */ +/********************************************************************/ + +/** Computes the sum of two EC_POINT + * \param group underlying EC_GROUP object + * \param r EC_POINT object for the result (r = a + b) + * \param a EC_POINT object with the first summand + * \param b EC_POINT object with the second summand + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occured + */ +int EC_POINT_add(const EC_GROUP *group, EC_POINT *r, const EC_POINT *a, + const EC_POINT *b, BN_CTX *ctx); + +/** Computes the double of a EC_POINT + * \param group underlying EC_GROUP object + * \param r EC_POINT object for the result (r = 2 * a) + * \param a EC_POINT object + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occured + */ +int EC_POINT_dbl(const EC_GROUP *group, EC_POINT *r, const EC_POINT *a, + BN_CTX *ctx); + +/** Computes the inverse of a EC_POINT + * \param group underlying EC_GROUP object + * \param a EC_POINT object to be inverted (it's used for the result as well) + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occured + */ +int EC_POINT_invert(const EC_GROUP *group, EC_POINT *a, BN_CTX *ctx); + +/** Checks whether the point is the neutral element of the group + * \param group the underlying EC_GROUP object + * \param p EC_POINT object + * \return 1 if the point is the neutral element and 0 otherwise + */ +int EC_POINT_is_at_infinity(const EC_GROUP *group, const EC_POINT *p); + +/** Checks whether the point is on the curve + * \param group underlying EC_GROUP object + * \param point EC_POINT object to check + * \param ctx BN_CTX object (optional) + * \return 1 if point if on the curve and 0 otherwise + */ +int EC_POINT_is_on_curve(const EC_GROUP *group, const EC_POINT *point, + BN_CTX *ctx); + +/** Compares two EC_POINTs + * \param group underlying EC_GROUP object + * \param a first EC_POINT object + * \param b second EC_POINT object + * \param ctx BN_CTX object (optional) + * \return 0 if both points are equal and a value != 0 otherwise + */ +int EC_POINT_cmp(const EC_GROUP *group, const EC_POINT *a, const EC_POINT *b, + BN_CTX *ctx); + +int EC_POINT_make_affine(const EC_GROUP *group, EC_POINT *point, BN_CTX *ctx); +int EC_POINTs_make_affine(const EC_GROUP *group, size_t num, + EC_POINT *points[], BN_CTX *ctx); + +/** Computes r = generator * n sum_{i=0}^{num-1} p[i] * m[i] + * \param group underlying EC_GROUP object + * \param r EC_POINT object for the result + * \param n BIGNUM with the multiplier for the group generator (optional) + * \param num number futher summands + * \param p array of size num of EC_POINT objects + * \param m array of size num of BIGNUM objects + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occured + */ +int EC_POINTs_mul(const EC_GROUP *group, EC_POINT *r, const BIGNUM *n, + size_t num, const EC_POINT *p[], const BIGNUM *m[], + BN_CTX *ctx); + +/** Computes r = generator * n + q * m + * \param group underlying EC_GROUP object + * \param r EC_POINT object for the result + * \param n BIGNUM with the multiplier for the group generator (optional) + * \param q EC_POINT object with the first factor of the second summand + * \param m BIGNUM with the second factor of the second summand + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occured + */ +int EC_POINT_mul(const EC_GROUP *group, EC_POINT *r, const BIGNUM *n, + const EC_POINT *q, const BIGNUM *m, BN_CTX *ctx); + +/** Stores multiples of generator for faster point multiplication + * \param group EC_GROUP object + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occured + */ +int EC_GROUP_precompute_mult(EC_GROUP *group, BN_CTX *ctx); + +/** Reports whether a precomputation has been done + * \param group EC_GROUP object + * \return 1 if a pre-computation has been done and 0 otherwise + */ +int EC_GROUP_have_precompute_mult(const EC_GROUP *group); + +/********************************************************************/ +/* ASN1 stuff */ +/********************************************************************/ + +/* + * EC_GROUP_get_basis_type() returns the NID of the basis type used to + * represent the field elements + */ +int EC_GROUP_get_basis_type(const EC_GROUP *); +# ifndef OPENSSL_NO_EC2M +int EC_GROUP_get_trinomial_basis(const EC_GROUP *, unsigned int *k); +int EC_GROUP_get_pentanomial_basis(const EC_GROUP *, unsigned int *k1, + unsigned int *k2, unsigned int *k3); +# endif + +# define OPENSSL_EC_NAMED_CURVE 0x001 + +typedef struct ecpk_parameters_st ECPKPARAMETERS; + +EC_GROUP *d2i_ECPKParameters(EC_GROUP **, const unsigned char **in, long len); +int i2d_ECPKParameters(const EC_GROUP *, unsigned char **out); + +# define d2i_ECPKParameters_bio(bp,x) ASN1_d2i_bio_of(EC_GROUP,NULL,d2i_ECPKParameters,bp,x) +# define i2d_ECPKParameters_bio(bp,x) ASN1_i2d_bio_of_const(EC_GROUP,i2d_ECPKParameters,bp,x) +# define d2i_ECPKParameters_fp(fp,x) (EC_GROUP *)ASN1_d2i_fp(NULL, \ + (char *(*)())d2i_ECPKParameters,(fp),(unsigned char **)(x)) +# define i2d_ECPKParameters_fp(fp,x) ASN1_i2d_fp(i2d_ECPKParameters,(fp), \ + (unsigned char *)(x)) + +# ifndef OPENSSL_NO_BIO +int ECPKParameters_print(BIO *bp, const EC_GROUP *x, int off); +# endif +# ifndef OPENSSL_NO_FP_API +int ECPKParameters_print_fp(FILE *fp, const EC_GROUP *x, int off); +# endif + +/********************************************************************/ +/* EC_KEY functions */ +/********************************************************************/ + +typedef struct ec_key_st EC_KEY; + +/* some values for the encoding_flag */ +# define EC_PKEY_NO_PARAMETERS 0x001 +# define EC_PKEY_NO_PUBKEY 0x002 + +/* some values for the flags field */ +# define EC_FLAG_NON_FIPS_ALLOW 0x1 +# define EC_FLAG_FIPS_CHECKED 0x2 + +/** Creates a new EC_KEY object. + * \return EC_KEY object or NULL if an error occurred. + */ +EC_KEY *EC_KEY_new(void); + +int EC_KEY_get_flags(const EC_KEY *key); + +void EC_KEY_set_flags(EC_KEY *key, int flags); + +void EC_KEY_clear_flags(EC_KEY *key, int flags); + +/** Creates a new EC_KEY object using a named curve as underlying + * EC_GROUP object. + * \param nid NID of the named curve. + * \return EC_KEY object or NULL if an error occurred. + */ +EC_KEY *EC_KEY_new_by_curve_name(int nid); + +/** Frees a EC_KEY object. + * \param key EC_KEY object to be freed. + */ +void EC_KEY_free(EC_KEY *key); + +/** Copies a EC_KEY object. + * \param dst destination EC_KEY object + * \param src src EC_KEY object + * \return dst or NULL if an error occurred. + */ +EC_KEY *EC_KEY_copy(EC_KEY *dst, const EC_KEY *src); + +/** Creates a new EC_KEY object and copies the content from src to it. + * \param src the source EC_KEY object + * \return newly created EC_KEY object or NULL if an error occurred. + */ +EC_KEY *EC_KEY_dup(const EC_KEY *src); + +/** Increases the internal reference count of a EC_KEY object. + * \param key EC_KEY object + * \return 1 on success and 0 if an error occurred. + */ +int EC_KEY_up_ref(EC_KEY *key); + +/** Returns the EC_GROUP object of a EC_KEY object + * \param key EC_KEY object + * \return the EC_GROUP object (possibly NULL). + */ +const EC_GROUP *EC_KEY_get0_group(const EC_KEY *key); + +/** Sets the EC_GROUP of a EC_KEY object. + * \param key EC_KEY object + * \param group EC_GROUP to use in the EC_KEY object (note: the EC_KEY + * object will use an own copy of the EC_GROUP). + * \return 1 on success and 0 if an error occurred. + */ +int EC_KEY_set_group(EC_KEY *key, const EC_GROUP *group); + +/** Returns the private key of a EC_KEY object. + * \param key EC_KEY object + * \return a BIGNUM with the private key (possibly NULL). + */ +const BIGNUM *EC_KEY_get0_private_key(const EC_KEY *key); + +/** Sets the private key of a EC_KEY object. + * \param key EC_KEY object + * \param prv BIGNUM with the private key (note: the EC_KEY object + * will use an own copy of the BIGNUM). + * \return 1 on success and 0 if an error occurred. + */ +int EC_KEY_set_private_key(EC_KEY *key, const BIGNUM *prv); + +/** Returns the public key of a EC_KEY object. + * \param key the EC_KEY object + * \return a EC_POINT object with the public key (possibly NULL) + */ +const EC_POINT *EC_KEY_get0_public_key(const EC_KEY *key); + +/** Sets the public key of a EC_KEY object. + * \param key EC_KEY object + * \param pub EC_POINT object with the public key (note: the EC_KEY object + * will use an own copy of the EC_POINT object). + * \return 1 on success and 0 if an error occurred. + */ +int EC_KEY_set_public_key(EC_KEY *key, const EC_POINT *pub); + +unsigned EC_KEY_get_enc_flags(const EC_KEY *key); +void EC_KEY_set_enc_flags(EC_KEY *eckey, unsigned int flags); +point_conversion_form_t EC_KEY_get_conv_form(const EC_KEY *key); +void EC_KEY_set_conv_form(EC_KEY *eckey, point_conversion_form_t cform); +/* functions to set/get method specific data */ +void *EC_KEY_get_key_method_data(EC_KEY *key, + void *(*dup_func) (void *), + void (*free_func) (void *), + void (*clear_free_func) (void *)); +/** Sets the key method data of an EC_KEY object, if none has yet been set. + * \param key EC_KEY object + * \param data opaque data to install. + * \param dup_func a function that duplicates |data|. + * \param free_func a function that frees |data|. + * \param clear_free_func a function that wipes and frees |data|. + * \return the previously set data pointer, or NULL if |data| was inserted. + */ +void *EC_KEY_insert_key_method_data(EC_KEY *key, void *data, + void *(*dup_func) (void *), + void (*free_func) (void *), + void (*clear_free_func) (void *)); +/* wrapper functions for the underlying EC_GROUP object */ +void EC_KEY_set_asn1_flag(EC_KEY *eckey, int asn1_flag); + +/** Creates a table of pre-computed multiples of the generator to + * accelerate further EC_KEY operations. + * \param key EC_KEY object + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred. + */ +int EC_KEY_precompute_mult(EC_KEY *key, BN_CTX *ctx); + +/** Creates a new ec private (and optional a new public) key. + * \param key EC_KEY object + * \return 1 on success and 0 if an error occurred. + */ +int EC_KEY_generate_key(EC_KEY *key); + +/** Verifies that a private and/or public key is valid. + * \param key the EC_KEY object + * \return 1 on success and 0 otherwise. + */ +int EC_KEY_check_key(const EC_KEY *key); + +/** Sets a public key from affine coordindates performing + * neccessary NIST PKV tests. + * \param key the EC_KEY object + * \param x public key x coordinate + * \param y public key y coordinate + * \return 1 on success and 0 otherwise. + */ +int EC_KEY_set_public_key_affine_coordinates(EC_KEY *key, BIGNUM *x, + BIGNUM *y); + +/********************************************************************/ +/* de- and encoding functions for SEC1 ECPrivateKey */ +/********************************************************************/ + +/** Decodes a private key from a memory buffer. + * \param key a pointer to a EC_KEY object which should be used (or NULL) + * \param in pointer to memory with the DER encoded private key + * \param len length of the DER encoded private key + * \return the decoded private key or NULL if an error occurred. + */ +EC_KEY *d2i_ECPrivateKey(EC_KEY **key, const unsigned char **in, long len); + +/** Encodes a private key object and stores the result in a buffer. + * \param key the EC_KEY object to encode + * \param out the buffer for the result (if NULL the function returns number + * of bytes needed). + * \return 1 on success and 0 if an error occurred. + */ +int i2d_ECPrivateKey(EC_KEY *key, unsigned char **out); + +/********************************************************************/ +/* de- and encoding functions for EC parameters */ +/********************************************************************/ + +/** Decodes ec parameter from a memory buffer. + * \param key a pointer to a EC_KEY object which should be used (or NULL) + * \param in pointer to memory with the DER encoded ec parameters + * \param len length of the DER encoded ec parameters + * \return a EC_KEY object with the decoded parameters or NULL if an error + * occurred. + */ +EC_KEY *d2i_ECParameters(EC_KEY **key, const unsigned char **in, long len); + +/** Encodes ec parameter and stores the result in a buffer. + * \param key the EC_KEY object with ec paramters to encode + * \param out the buffer for the result (if NULL the function returns number + * of bytes needed). + * \return 1 on success and 0 if an error occurred. + */ +int i2d_ECParameters(EC_KEY *key, unsigned char **out); + +/********************************************************************/ +/* de- and encoding functions for EC public key */ +/* (octet string, not DER -- hence 'o2i' and 'i2o') */ +/********************************************************************/ + +/** Decodes a ec public key from a octet string. + * \param key a pointer to a EC_KEY object which should be used + * \param in memory buffer with the encoded public key + * \param len length of the encoded public key + * \return EC_KEY object with decoded public key or NULL if an error + * occurred. + */ +EC_KEY *o2i_ECPublicKey(EC_KEY **key, const unsigned char **in, long len); + +/** Encodes a ec public key in an octet string. + * \param key the EC_KEY object with the public key + * \param out the buffer for the result (if NULL the function returns number + * of bytes needed). + * \return 1 on success and 0 if an error occurred + */ +int i2o_ECPublicKey(EC_KEY *key, unsigned char **out); + +# ifndef OPENSSL_NO_BIO +/** Prints out the ec parameters on human readable form. + * \param bp BIO object to which the information is printed + * \param key EC_KEY object + * \return 1 on success and 0 if an error occurred + */ +int ECParameters_print(BIO *bp, const EC_KEY *key); + +/** Prints out the contents of a EC_KEY object + * \param bp BIO object to which the information is printed + * \param key EC_KEY object + * \param off line offset + * \return 1 on success and 0 if an error occurred + */ +int EC_KEY_print(BIO *bp, const EC_KEY *key, int off); + +# endif +# ifndef OPENSSL_NO_FP_API +/** Prints out the ec parameters on human readable form. + * \param fp file descriptor to which the information is printed + * \param key EC_KEY object + * \return 1 on success and 0 if an error occurred + */ +int ECParameters_print_fp(FILE *fp, const EC_KEY *key); + +/** Prints out the contents of a EC_KEY object + * \param fp file descriptor to which the information is printed + * \param key EC_KEY object + * \param off line offset + * \return 1 on success and 0 if an error occurred + */ +int EC_KEY_print_fp(FILE *fp, const EC_KEY *key, int off); + +# endif + +# define ECParameters_dup(x) ASN1_dup_of(EC_KEY,i2d_ECParameters,d2i_ECParameters,x) + +# ifndef __cplusplus +# if defined(__SUNPRO_C) +# if __SUNPRO_C >= 0x520 +# pragma error_messages (default,E_ARRAY_OF_INCOMPLETE_NONAME,E_ARRAY_OF_INCOMPLETE) +# endif +# endif +# endif + +# define EVP_PKEY_CTX_set_ec_paramgen_curve_nid(ctx, nid) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ + EVP_PKEY_OP_PARAMGEN|EVP_PKEY_OP_KEYGEN, \ + EVP_PKEY_CTRL_EC_PARAMGEN_CURVE_NID, nid, NULL) + +# define EVP_PKEY_CTX_set_ec_param_enc(ctx, flag) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ + EVP_PKEY_OP_PARAMGEN|EVP_PKEY_OP_KEYGEN, \ + EVP_PKEY_CTRL_EC_PARAM_ENC, flag, NULL) + +# define EVP_PKEY_CTX_set_ecdh_cofactor_mode(ctx, flag) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_EC_ECDH_COFACTOR, flag, NULL) + +# define EVP_PKEY_CTX_get_ecdh_cofactor_mode(ctx) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_EC_ECDH_COFACTOR, -2, NULL) + +# define EVP_PKEY_CTX_set_ecdh_kdf_type(ctx, kdf) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_EC_KDF_TYPE, kdf, NULL) + +# define EVP_PKEY_CTX_get_ecdh_kdf_type(ctx) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_EC_KDF_TYPE, -2, NULL) + +# define EVP_PKEY_CTX_set_ecdh_kdf_md(ctx, md) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_EC_KDF_MD, 0, (void *)md) + +# define EVP_PKEY_CTX_get_ecdh_kdf_md(ctx, pmd) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_GET_EC_KDF_MD, 0, (void *)pmd) + +# define EVP_PKEY_CTX_set_ecdh_kdf_outlen(ctx, len) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_EC_KDF_OUTLEN, len, NULL) + +# define EVP_PKEY_CTX_get_ecdh_kdf_outlen(ctx, plen) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_GET_EC_KDF_OUTLEN, 0, (void *)plen) + +# define EVP_PKEY_CTX_set0_ecdh_kdf_ukm(ctx, p, plen) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_EC_KDF_UKM, plen, (void *)p) + +# define EVP_PKEY_CTX_get0_ecdh_kdf_ukm(ctx, p) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_GET_EC_KDF_UKM, 0, (void *)p) + +# define EVP_PKEY_CTRL_EC_PARAMGEN_CURVE_NID (EVP_PKEY_ALG_CTRL + 1) +# define EVP_PKEY_CTRL_EC_PARAM_ENC (EVP_PKEY_ALG_CTRL + 2) +# define EVP_PKEY_CTRL_EC_ECDH_COFACTOR (EVP_PKEY_ALG_CTRL + 3) +# define EVP_PKEY_CTRL_EC_KDF_TYPE (EVP_PKEY_ALG_CTRL + 4) +# define EVP_PKEY_CTRL_EC_KDF_MD (EVP_PKEY_ALG_CTRL + 5) +# define EVP_PKEY_CTRL_GET_EC_KDF_MD (EVP_PKEY_ALG_CTRL + 6) +# define EVP_PKEY_CTRL_EC_KDF_OUTLEN (EVP_PKEY_ALG_CTRL + 7) +# define EVP_PKEY_CTRL_GET_EC_KDF_OUTLEN (EVP_PKEY_ALG_CTRL + 8) +# define EVP_PKEY_CTRL_EC_KDF_UKM (EVP_PKEY_ALG_CTRL + 9) +# define EVP_PKEY_CTRL_GET_EC_KDF_UKM (EVP_PKEY_ALG_CTRL + 10) +/* KDF types */ +# define EVP_PKEY_ECDH_KDF_NONE 1 +# define EVP_PKEY_ECDH_KDF_X9_62 2 + +/* BEGIN ERROR CODES */ +/* + * The following lines are auto generated by the script mkerr.pl. Any changes + * made after this point may be overwritten when the script is next run. + */ +void ERR_load_EC_strings(void); + +/* Error codes for the EC functions. */ + +/* Function codes. */ +# define EC_F_BN_TO_FELEM 224 +# define EC_F_COMPUTE_WNAF 143 +# define EC_F_D2I_ECPARAMETERS 144 +# define EC_F_D2I_ECPKPARAMETERS 145 +# define EC_F_D2I_ECPRIVATEKEY 146 +# define EC_F_DO_EC_KEY_PRINT 221 +# define EC_F_ECDH_CMS_DECRYPT 238 +# define EC_F_ECDH_CMS_SET_SHARED_INFO 239 +# define EC_F_ECKEY_PARAM2TYPE 223 +# define EC_F_ECKEY_PARAM_DECODE 212 +# define EC_F_ECKEY_PRIV_DECODE 213 +# define EC_F_ECKEY_PRIV_ENCODE 214 +# define EC_F_ECKEY_PUB_DECODE 215 +# define EC_F_ECKEY_PUB_ENCODE 216 +# define EC_F_ECKEY_TYPE2PARAM 220 +# define EC_F_ECPARAMETERS_PRINT 147 +# define EC_F_ECPARAMETERS_PRINT_FP 148 +# define EC_F_ECPKPARAMETERS_PRINT 149 +# define EC_F_ECPKPARAMETERS_PRINT_FP 150 +# define EC_F_ECP_NIST_MOD_192 203 +# define EC_F_ECP_NIST_MOD_224 204 +# define EC_F_ECP_NIST_MOD_256 205 +# define EC_F_ECP_NIST_MOD_521 206 +# define EC_F_EC_ASN1_GROUP2CURVE 153 +# define EC_F_EC_ASN1_GROUP2FIELDID 154 +# define EC_F_EC_ASN1_GROUP2PARAMETERS 155 +# define EC_F_EC_ASN1_GROUP2PKPARAMETERS 156 +# define EC_F_EC_ASN1_PARAMETERS2GROUP 157 +# define EC_F_EC_ASN1_PKPARAMETERS2GROUP 158 +# define EC_F_EC_EX_DATA_SET_DATA 211 +# define EC_F_EC_GF2M_MONTGOMERY_POINT_MULTIPLY 208 +# define EC_F_EC_GF2M_SIMPLE_GROUP_CHECK_DISCRIMINANT 159 +# define EC_F_EC_GF2M_SIMPLE_GROUP_SET_CURVE 195 +# define EC_F_EC_GF2M_SIMPLE_OCT2POINT 160 +# define EC_F_EC_GF2M_SIMPLE_POINT2OCT 161 +# define EC_F_EC_GF2M_SIMPLE_POINT_GET_AFFINE_COORDINATES 162 +# define EC_F_EC_GF2M_SIMPLE_POINT_SET_AFFINE_COORDINATES 163 +# define EC_F_EC_GF2M_SIMPLE_SET_COMPRESSED_COORDINATES 164 +# define EC_F_EC_GFP_MONT_FIELD_DECODE 133 +# define EC_F_EC_GFP_MONT_FIELD_ENCODE 134 +# define EC_F_EC_GFP_MONT_FIELD_MUL 131 +# define EC_F_EC_GFP_MONT_FIELD_SET_TO_ONE 209 +# define EC_F_EC_GFP_MONT_FIELD_SQR 132 +# define EC_F_EC_GFP_MONT_GROUP_SET_CURVE 189 +# define EC_F_EC_GFP_MONT_GROUP_SET_CURVE_GFP 135 +# define EC_F_EC_GFP_NISTP224_GROUP_SET_CURVE 225 +# define EC_F_EC_GFP_NISTP224_POINTS_MUL 228 +# define EC_F_EC_GFP_NISTP224_POINT_GET_AFFINE_COORDINATES 226 +# define EC_F_EC_GFP_NISTP256_GROUP_SET_CURVE 230 +# define EC_F_EC_GFP_NISTP256_POINTS_MUL 231 +# define EC_F_EC_GFP_NISTP256_POINT_GET_AFFINE_COORDINATES 232 +# define EC_F_EC_GFP_NISTP521_GROUP_SET_CURVE 233 +# define EC_F_EC_GFP_NISTP521_POINTS_MUL 234 +# define EC_F_EC_GFP_NISTP521_POINT_GET_AFFINE_COORDINATES 235 +# define EC_F_EC_GFP_NIST_FIELD_MUL 200 +# define EC_F_EC_GFP_NIST_FIELD_SQR 201 +# define EC_F_EC_GFP_NIST_GROUP_SET_CURVE 202 +# define EC_F_EC_GFP_SIMPLE_GROUP_CHECK_DISCRIMINANT 165 +# define EC_F_EC_GFP_SIMPLE_GROUP_SET_CURVE 166 +# define EC_F_EC_GFP_SIMPLE_GROUP_SET_CURVE_GFP 100 +# define EC_F_EC_GFP_SIMPLE_GROUP_SET_GENERATOR 101 +# define EC_F_EC_GFP_SIMPLE_MAKE_AFFINE 102 +# define EC_F_EC_GFP_SIMPLE_OCT2POINT 103 +# define EC_F_EC_GFP_SIMPLE_POINT2OCT 104 +# define EC_F_EC_GFP_SIMPLE_POINTS_MAKE_AFFINE 137 +# define EC_F_EC_GFP_SIMPLE_POINT_GET_AFFINE_COORDINATES 167 +# define EC_F_EC_GFP_SIMPLE_POINT_GET_AFFINE_COORDINATES_GFP 105 +# define EC_F_EC_GFP_SIMPLE_POINT_SET_AFFINE_COORDINATES 168 +# define EC_F_EC_GFP_SIMPLE_POINT_SET_AFFINE_COORDINATES_GFP 128 +# define EC_F_EC_GFP_SIMPLE_SET_COMPRESSED_COORDINATES 169 +# define EC_F_EC_GFP_SIMPLE_SET_COMPRESSED_COORDINATES_GFP 129 +# define EC_F_EC_GROUP_CHECK 170 +# define EC_F_EC_GROUP_CHECK_DISCRIMINANT 171 +# define EC_F_EC_GROUP_COPY 106 +# define EC_F_EC_GROUP_GET0_GENERATOR 139 +# define EC_F_EC_GROUP_GET_COFACTOR 140 +# define EC_F_EC_GROUP_GET_CURVE_GF2M 172 +# define EC_F_EC_GROUP_GET_CURVE_GFP 130 +# define EC_F_EC_GROUP_GET_DEGREE 173 +# define EC_F_EC_GROUP_GET_ORDER 141 +# define EC_F_EC_GROUP_GET_PENTANOMIAL_BASIS 193 +# define EC_F_EC_GROUP_GET_TRINOMIAL_BASIS 194 +# define EC_F_EC_GROUP_NEW 108 +# define EC_F_EC_GROUP_NEW_BY_CURVE_NAME 174 +# define EC_F_EC_GROUP_NEW_FROM_DATA 175 +# define EC_F_EC_GROUP_PRECOMPUTE_MULT 142 +# define EC_F_EC_GROUP_SET_CURVE_GF2M 176 +# define EC_F_EC_GROUP_SET_CURVE_GFP 109 +# define EC_F_EC_GROUP_SET_EXTRA_DATA 110 +# define EC_F_EC_GROUP_SET_GENERATOR 111 +# define EC_F_EC_KEY_CHECK_KEY 177 +# define EC_F_EC_KEY_COPY 178 +# define EC_F_EC_KEY_GENERATE_KEY 179 +# define EC_F_EC_KEY_NEW 182 +# define EC_F_EC_KEY_PRINT 180 +# define EC_F_EC_KEY_PRINT_FP 181 +# define EC_F_EC_KEY_SET_PUBLIC_KEY_AFFINE_COORDINATES 229 +# define EC_F_EC_POINTS_MAKE_AFFINE 136 +# define EC_F_EC_POINT_ADD 112 +# define EC_F_EC_POINT_CMP 113 +# define EC_F_EC_POINT_COPY 114 +# define EC_F_EC_POINT_DBL 115 +# define EC_F_EC_POINT_GET_AFFINE_COORDINATES_GF2M 183 +# define EC_F_EC_POINT_GET_AFFINE_COORDINATES_GFP 116 +# define EC_F_EC_POINT_GET_JPROJECTIVE_COORDINATES_GFP 117 +# define EC_F_EC_POINT_INVERT 210 +# define EC_F_EC_POINT_IS_AT_INFINITY 118 +# define EC_F_EC_POINT_IS_ON_CURVE 119 +# define EC_F_EC_POINT_MAKE_AFFINE 120 +# define EC_F_EC_POINT_MUL 184 +# define EC_F_EC_POINT_NEW 121 +# define EC_F_EC_POINT_OCT2POINT 122 +# define EC_F_EC_POINT_POINT2OCT 123 +# define EC_F_EC_POINT_SET_AFFINE_COORDINATES_GF2M 185 +# define EC_F_EC_POINT_SET_AFFINE_COORDINATES_GFP 124 +# define EC_F_EC_POINT_SET_COMPRESSED_COORDINATES_GF2M 186 +# define EC_F_EC_POINT_SET_COMPRESSED_COORDINATES_GFP 125 +# define EC_F_EC_POINT_SET_JPROJECTIVE_COORDINATES_GFP 126 +# define EC_F_EC_POINT_SET_TO_INFINITY 127 +# define EC_F_EC_PRE_COMP_DUP 207 +# define EC_F_EC_PRE_COMP_NEW 196 +# define EC_F_EC_WNAF_MUL 187 +# define EC_F_EC_WNAF_PRECOMPUTE_MULT 188 +# define EC_F_I2D_ECPARAMETERS 190 +# define EC_F_I2D_ECPKPARAMETERS 191 +# define EC_F_I2D_ECPRIVATEKEY 192 +# define EC_F_I2O_ECPUBLICKEY 151 +# define EC_F_NISTP224_PRE_COMP_NEW 227 +# define EC_F_NISTP256_PRE_COMP_NEW 236 +# define EC_F_NISTP521_PRE_COMP_NEW 237 +# define EC_F_ECP_NISTZ256_GET_AFFINE 240 +# define EC_F_ECP_NISTZ256_POINTS_MUL 241 +# define EC_F_ECP_NISTZ256_WINDOWED_MUL 242 +# define EC_F_ECP_NISTZ256_MULT_PRECOMPUTE 243 +# define EC_F_ECP_NISTZ256_PRE_COMP_NEW 244 +# define EC_F_O2I_ECPUBLICKEY 152 +# define EC_F_OLD_EC_PRIV_DECODE 222 +# define EC_F_PKEY_EC_CTRL 197 +# define EC_F_PKEY_EC_CTRL_STR 198 +# define EC_F_PKEY_EC_DERIVE 217 +# define EC_F_PKEY_EC_KEYGEN 199 +# define EC_F_PKEY_EC_PARAMGEN 219 +# define EC_F_PKEY_EC_SIGN 218 + +/* Reason codes. */ +# define EC_R_ASN1_ERROR 115 +# define EC_R_ASN1_UNKNOWN_FIELD 116 +# define EC_R_BIGNUM_OUT_OF_RANGE 144 +# define EC_R_BUFFER_TOO_SMALL 100 +# define EC_R_COORDINATES_OUT_OF_RANGE 146 +# define EC_R_D2I_ECPKPARAMETERS_FAILURE 117 +# define EC_R_DECODE_ERROR 142 +# define EC_R_DISCRIMINANT_IS_ZERO 118 +# define EC_R_EC_GROUP_NEW_BY_NAME_FAILURE 119 +# define EC_R_FIELD_TOO_LARGE 143 +# define EC_R_GF2M_NOT_SUPPORTED 147 +# define EC_R_GROUP2PKPARAMETERS_FAILURE 120 +# define EC_R_I2D_ECPKPARAMETERS_FAILURE 121 +# define EC_R_INCOMPATIBLE_OBJECTS 101 +# define EC_R_INVALID_ARGUMENT 112 +# define EC_R_INVALID_COMPRESSED_POINT 110 +# define EC_R_INVALID_COMPRESSION_BIT 109 +# define EC_R_INVALID_CURVE 141 +# define EC_R_INVALID_DIGEST 151 +# define EC_R_INVALID_DIGEST_TYPE 138 +# define EC_R_INVALID_ENCODING 102 +# define EC_R_INVALID_FIELD 103 +# define EC_R_INVALID_FORM 104 +# define EC_R_INVALID_GROUP_ORDER 122 +# define EC_R_INVALID_PENTANOMIAL_BASIS 132 +# define EC_R_INVALID_PRIVATE_KEY 123 +# define EC_R_INVALID_TRINOMIAL_BASIS 137 +# define EC_R_KDF_PARAMETER_ERROR 148 +# define EC_R_KEYS_NOT_SET 140 +# define EC_R_MISSING_PARAMETERS 124 +# define EC_R_MISSING_PRIVATE_KEY 125 +# define EC_R_NOT_A_NIST_PRIME 135 +# define EC_R_NOT_A_SUPPORTED_NIST_PRIME 136 +# define EC_R_NOT_IMPLEMENTED 126 +# define EC_R_NOT_INITIALIZED 111 +# define EC_R_NO_FIELD_MOD 133 +# define EC_R_NO_PARAMETERS_SET 139 +# define EC_R_PASSED_NULL_PARAMETER 134 +# define EC_R_PEER_KEY_ERROR 149 +# define EC_R_PKPARAMETERS2GROUP_FAILURE 127 +# define EC_R_POINT_AT_INFINITY 106 +# define EC_R_POINT_IS_NOT_ON_CURVE 107 +# define EC_R_SHARED_INFO_ERROR 150 +# define EC_R_SLOT_FULL 108 +# define EC_R_UNDEFINED_GENERATOR 113 +# define EC_R_UNDEFINED_ORDER 128 +# define EC_R_UNKNOWN_GROUP 129 +# define EC_R_UNKNOWN_ORDER 114 +# define EC_R_UNSUPPORTED_FIELD 131 +# define EC_R_WRONG_CURVE_PARAMETERS 145 +# define EC_R_WRONG_ORDER 130 + +#ifdef __cplusplus +} +#endif +#endif diff --git a/ext/openssl-osx/include/openssl/ecdh.h b/ext/openssl-osx/include/openssl/ecdh.h new file mode 100644 index 00000000..25348b30 --- /dev/null +++ b/ext/openssl-osx/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/ext/openssl-osx/include/openssl/ecdsa.h b/ext/openssl-osx/include/openssl/ecdsa.h new file mode 100644 index 00000000..c4016ac3 --- /dev/null +++ b/ext/openssl-osx/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(ECDSA_METHOD *ecdsa_method); + +/** frees a ECDSA_METHOD structure + * \param ecdsa_method pointer to the ECDSA_METHOD structure + */ +void ECDSA_METHOD_free(ECDSA_METHOD *ecdsa_method); + +/** Sets application specific data in the ECDSA_METHOD + * \param ecdsa_method pointer to existing ECDSA_METHOD + * \param app application specific data to set + */ + +void ECDSA_METHOD_set_app_data(ECDSA_METHOD *ecdsa_method, void *app); + +/** Returns application specific data from a ECDSA_METHOD structure + * \param ecdsa_method pointer to ECDSA_METHOD structure + * \return pointer to application specific data. + */ + +void *ECDSA_METHOD_get_app_data(ECDSA_METHOD *ecdsa_method); + +/** Set the ECDSA_do_sign function in the ECDSA_METHOD + * \param ecdsa_method pointer to existing ECDSA_METHOD + * \param ecdsa_do_sign a funtion of type ECDSA_do_sign + */ + +void ECDSA_METHOD_set_sign(ECDSA_METHOD *ecdsa_method, + ECDSA_SIG *(*ecdsa_do_sign) (const unsigned char + *dgst, int dgst_len, + const BIGNUM *inv, + const BIGNUM *rp, + EC_KEY *eckey)); + +/** Set the ECDSA_sign_setup function in the ECDSA_METHOD + * \param ecdsa_method pointer to existing ECDSA_METHOD + * \param ecdsa_sign_setup a funtion of type ECDSA_sign_setup + */ + +void ECDSA_METHOD_set_sign_setup(ECDSA_METHOD *ecdsa_method, + int (*ecdsa_sign_setup) (EC_KEY *eckey, + BN_CTX *ctx, + BIGNUM **kinv, + BIGNUM **r)); + +/** Set the ECDSA_do_verify function in the ECDSA_METHOD + * \param ecdsa_method pointer to existing ECDSA_METHOD + * \param ecdsa_do_verify a funtion of type ECDSA_do_verify + */ + +void ECDSA_METHOD_set_verify(ECDSA_METHOD *ecdsa_method, + int (*ecdsa_do_verify) (const unsigned char + *dgst, int dgst_len, + const ECDSA_SIG *sig, + EC_KEY *eckey)); + +void ECDSA_METHOD_set_flags(ECDSA_METHOD *ecdsa_method, int flags); + +/** Set the flags field in the ECDSA_METHOD + * \param ecdsa_method pointer to existing ECDSA_METHOD + * \param flags flags value to set + */ + +void ECDSA_METHOD_set_name(ECDSA_METHOD *ecdsa_method, char *name); + +/** Set the name field in the ECDSA_METHOD + * \param ecdsa_method pointer to existing ECDSA_METHOD + * \param name name to set + */ + +/* BEGIN ERROR CODES */ +/* + * The following lines are auto generated by the script mkerr.pl. Any changes + * made after this point may be overwritten when the script is next run. + */ +void ERR_load_ECDSA_strings(void); + +/* Error codes for the ECDSA functions. */ + +/* Function codes. */ +# define ECDSA_F_ECDSA_CHECK 104 +# define ECDSA_F_ECDSA_DATA_NEW_METHOD 100 +# define ECDSA_F_ECDSA_DO_SIGN 101 +# define ECDSA_F_ECDSA_DO_VERIFY 102 +# define ECDSA_F_ECDSA_METHOD_NEW 105 +# define ECDSA_F_ECDSA_SIGN_SETUP 103 + +/* Reason codes. */ +# define ECDSA_R_BAD_SIGNATURE 100 +# define ECDSA_R_DATA_TOO_LARGE_FOR_KEY_SIZE 101 +# define ECDSA_R_ERR_EC_LIB 102 +# define ECDSA_R_MISSING_PARAMETERS 103 +# define ECDSA_R_NEED_NEW_SETUP_VALUES 106 +# define ECDSA_R_NON_FIPS_METHOD 107 +# define ECDSA_R_RANDOM_NUMBER_GENERATION_FAILED 104 +# define ECDSA_R_SIGNATURE_MALLOC_FAILED 105 + +#ifdef __cplusplus +} +#endif +#endif diff --git a/ext/openssl-osx/include/openssl/err.h b/ext/openssl-osx/include/openssl/err.h new file mode 100644 index 00000000..585aa8ba --- /dev/null +++ b/ext/openssl-osx/include/openssl/err.h @@ -0,0 +1,389 @@ +/* crypto/err/err.h */ +/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) + * All rights reserved. + * + * This package is an SSL implementation written + * by Eric Young (eay@cryptsoft.com). + * The implementation was written so as to conform with Netscapes SSL. + * + * This library is free for commercial and non-commercial use as long as + * the following conditions are aheared to. The following conditions + * apply to all code found in this distribution, be it the RC4, RSA, + * lhash, DES, etc., code; not just the SSL code. The SSL documentation + * included with this distribution is covered by the same copyright terms + * except that the holder is Tim Hudson (tjh@cryptsoft.com). + * + * Copyright remains Eric Young's, and as such any Copyright notices in + * the code are not to be removed. + * If this package is used in a product, Eric Young should be given attribution + * as the author of the parts of the library used. + * This can be in the form of a textual message at program startup or + * in documentation (online or textual) provided with the package. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * "This product includes cryptographic software written by + * Eric Young (eay@cryptsoft.com)" + * The word 'cryptographic' can be left out if the rouines from the library + * being used are not cryptographic related :-). + * 4. If you include any Windows specific code (or a derivative thereof) from + * the apps directory (application code) you must include an acknowledgement: + * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" + * + * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * The licence and distribution terms for any publically available version or + * derivative of this code cannot be changed. i.e. this code cannot simply be + * copied and put under another distribution licence + * [including the GNU Public Licence.] + */ +/* ==================================================================== + * Copyright (c) 1998-2006 The OpenSSL Project. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. All advertising materials mentioning features or use of this + * software must display the following acknowledgment: + * "This product includes software developed by the OpenSSL Project + * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" + * + * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to + * endorse or promote products derived from this software without + * prior written permission. For written permission, please contact + * openssl-core@openssl.org. + * + * 5. Products derived from this software may not be called "OpenSSL" + * nor may "OpenSSL" appear in their names without prior written + * permission of the OpenSSL Project. + * + * 6. Redistributions of any form whatsoever must retain the following + * acknowledgment: + * "This product includes software developed by the OpenSSL Project + * for use in the OpenSSL Toolkit (http://www.openssl.org/)" + * + * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY + * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * ==================================================================== + * + * This product includes cryptographic software written by Eric Young + * (eay@cryptsoft.com). This product includes software written by Tim + * Hudson (tjh@cryptsoft.com). + * + */ + +#ifndef HEADER_ERR_H +# define HEADER_ERR_H + +# include + +# ifndef OPENSSL_NO_FP_API +# include +# include +# endif + +# include +# ifndef OPENSSL_NO_BIO +# include +# endif +# ifndef OPENSSL_NO_LHASH +# include +# endif + +#ifdef __cplusplus +extern "C" { +#endif + +# ifndef OPENSSL_NO_ERR +# define ERR_PUT_error(a,b,c,d,e) ERR_put_error(a,b,c,d,e) +# else +# define ERR_PUT_error(a,b,c,d,e) ERR_put_error(a,b,c,NULL,0) +# endif + +# include + +# define ERR_TXT_MALLOCED 0x01 +# define ERR_TXT_STRING 0x02 + +# define ERR_FLAG_MARK 0x01 + +# define ERR_NUM_ERRORS 16 +typedef struct err_state_st { + CRYPTO_THREADID tid; + int err_flags[ERR_NUM_ERRORS]; + unsigned long err_buffer[ERR_NUM_ERRORS]; + char *err_data[ERR_NUM_ERRORS]; + int err_data_flags[ERR_NUM_ERRORS]; + const char *err_file[ERR_NUM_ERRORS]; + int err_line[ERR_NUM_ERRORS]; + int top, bottom; +} ERR_STATE; + +/* library */ +# define ERR_LIB_NONE 1 +# define ERR_LIB_SYS 2 +# define ERR_LIB_BN 3 +# define ERR_LIB_RSA 4 +# define ERR_LIB_DH 5 +# define ERR_LIB_EVP 6 +# define ERR_LIB_BUF 7 +# define ERR_LIB_OBJ 8 +# define ERR_LIB_PEM 9 +# define ERR_LIB_DSA 10 +# define ERR_LIB_X509 11 +/* #define ERR_LIB_METH 12 */ +# define ERR_LIB_ASN1 13 +# define ERR_LIB_CONF 14 +# define ERR_LIB_CRYPTO 15 +# define ERR_LIB_EC 16 +# define ERR_LIB_SSL 20 +/* #define ERR_LIB_SSL23 21 */ +/* #define ERR_LIB_SSL2 22 */ +/* #define ERR_LIB_SSL3 23 */ +/* #define ERR_LIB_RSAREF 30 */ +/* #define ERR_LIB_PROXY 31 */ +# define ERR_LIB_BIO 32 +# define ERR_LIB_PKCS7 33 +# define ERR_LIB_X509V3 34 +# define ERR_LIB_PKCS12 35 +# define ERR_LIB_RAND 36 +# define ERR_LIB_DSO 37 +# define ERR_LIB_ENGINE 38 +# define ERR_LIB_OCSP 39 +# define ERR_LIB_UI 40 +# define ERR_LIB_COMP 41 +# define ERR_LIB_ECDSA 42 +# define ERR_LIB_ECDH 43 +# define ERR_LIB_STORE 44 +# define ERR_LIB_FIPS 45 +# define ERR_LIB_CMS 46 +# define ERR_LIB_TS 47 +# define ERR_LIB_HMAC 48 +# define ERR_LIB_JPAKE 49 + +# define ERR_LIB_USER 128 + +# define SYSerr(f,r) ERR_PUT_error(ERR_LIB_SYS,(f),(r),__FILE__,__LINE__) +# define BNerr(f,r) ERR_PUT_error(ERR_LIB_BN,(f),(r),__FILE__,__LINE__) +# define RSAerr(f,r) ERR_PUT_error(ERR_LIB_RSA,(f),(r),__FILE__,__LINE__) +# define DHerr(f,r) ERR_PUT_error(ERR_LIB_DH,(f),(r),__FILE__,__LINE__) +# define EVPerr(f,r) ERR_PUT_error(ERR_LIB_EVP,(f),(r),__FILE__,__LINE__) +# define BUFerr(f,r) ERR_PUT_error(ERR_LIB_BUF,(f),(r),__FILE__,__LINE__) +# define OBJerr(f,r) ERR_PUT_error(ERR_LIB_OBJ,(f),(r),__FILE__,__LINE__) +# define PEMerr(f,r) ERR_PUT_error(ERR_LIB_PEM,(f),(r),__FILE__,__LINE__) +# define DSAerr(f,r) ERR_PUT_error(ERR_LIB_DSA,(f),(r),__FILE__,__LINE__) +# define X509err(f,r) ERR_PUT_error(ERR_LIB_X509,(f),(r),__FILE__,__LINE__) +# define ASN1err(f,r) ERR_PUT_error(ERR_LIB_ASN1,(f),(r),__FILE__,__LINE__) +# define CONFerr(f,r) ERR_PUT_error(ERR_LIB_CONF,(f),(r),__FILE__,__LINE__) +# define CRYPTOerr(f,r) ERR_PUT_error(ERR_LIB_CRYPTO,(f),(r),__FILE__,__LINE__) +# define ECerr(f,r) ERR_PUT_error(ERR_LIB_EC,(f),(r),__FILE__,__LINE__) +# define SSLerr(f,r) ERR_PUT_error(ERR_LIB_SSL,(f),(r),__FILE__,__LINE__) +# define BIOerr(f,r) ERR_PUT_error(ERR_LIB_BIO,(f),(r),__FILE__,__LINE__) +# define PKCS7err(f,r) ERR_PUT_error(ERR_LIB_PKCS7,(f),(r),__FILE__,__LINE__) +# define X509V3err(f,r) ERR_PUT_error(ERR_LIB_X509V3,(f),(r),__FILE__,__LINE__) +# define PKCS12err(f,r) ERR_PUT_error(ERR_LIB_PKCS12,(f),(r),__FILE__,__LINE__) +# define RANDerr(f,r) ERR_PUT_error(ERR_LIB_RAND,(f),(r),__FILE__,__LINE__) +# define DSOerr(f,r) ERR_PUT_error(ERR_LIB_DSO,(f),(r),__FILE__,__LINE__) +# define ENGINEerr(f,r) ERR_PUT_error(ERR_LIB_ENGINE,(f),(r),__FILE__,__LINE__) +# define OCSPerr(f,r) ERR_PUT_error(ERR_LIB_OCSP,(f),(r),__FILE__,__LINE__) +# define UIerr(f,r) ERR_PUT_error(ERR_LIB_UI,(f),(r),__FILE__,__LINE__) +# define COMPerr(f,r) ERR_PUT_error(ERR_LIB_COMP,(f),(r),__FILE__,__LINE__) +# define ECDSAerr(f,r) ERR_PUT_error(ERR_LIB_ECDSA,(f),(r),__FILE__,__LINE__) +# define ECDHerr(f,r) ERR_PUT_error(ERR_LIB_ECDH,(f),(r),__FILE__,__LINE__) +# define STOREerr(f,r) ERR_PUT_error(ERR_LIB_STORE,(f),(r),__FILE__,__LINE__) +# define FIPSerr(f,r) ERR_PUT_error(ERR_LIB_FIPS,(f),(r),__FILE__,__LINE__) +# define CMSerr(f,r) ERR_PUT_error(ERR_LIB_CMS,(f),(r),__FILE__,__LINE__) +# define TSerr(f,r) ERR_PUT_error(ERR_LIB_TS,(f),(r),__FILE__,__LINE__) +# define HMACerr(f,r) ERR_PUT_error(ERR_LIB_HMAC,(f),(r),__FILE__,__LINE__) +# define JPAKEerr(f,r) ERR_PUT_error(ERR_LIB_JPAKE,(f),(r),__FILE__,__LINE__) + +/* + * Borland C seems too stupid to be able to shift and do longs in the + * pre-processor :-( + */ +# define ERR_PACK(l,f,r) (((((unsigned long)l)&0xffL)*0x1000000)| \ + ((((unsigned long)f)&0xfffL)*0x1000)| \ + ((((unsigned long)r)&0xfffL))) +# define ERR_GET_LIB(l) (int)((((unsigned long)l)>>24L)&0xffL) +# define ERR_GET_FUNC(l) (int)((((unsigned long)l)>>12L)&0xfffL) +# define ERR_GET_REASON(l) (int)((l)&0xfffL) +# define ERR_FATAL_ERROR(l) (int)((l)&ERR_R_FATAL) + +/* OS functions */ +# define SYS_F_FOPEN 1 +# define SYS_F_CONNECT 2 +# define SYS_F_GETSERVBYNAME 3 +# define SYS_F_SOCKET 4 +# define SYS_F_IOCTLSOCKET 5 +# define SYS_F_BIND 6 +# define SYS_F_LISTEN 7 +# define SYS_F_ACCEPT 8 +# define SYS_F_WSASTARTUP 9/* Winsock stuff */ +# define SYS_F_OPENDIR 10 +# define SYS_F_FREAD 11 + +/* reasons */ +# define ERR_R_SYS_LIB ERR_LIB_SYS/* 2 */ +# define ERR_R_BN_LIB ERR_LIB_BN/* 3 */ +# define ERR_R_RSA_LIB ERR_LIB_RSA/* 4 */ +# define ERR_R_DH_LIB ERR_LIB_DH/* 5 */ +# define ERR_R_EVP_LIB ERR_LIB_EVP/* 6 */ +# define ERR_R_BUF_LIB ERR_LIB_BUF/* 7 */ +# define ERR_R_OBJ_LIB ERR_LIB_OBJ/* 8 */ +# define ERR_R_PEM_LIB ERR_LIB_PEM/* 9 */ +# define ERR_R_DSA_LIB ERR_LIB_DSA/* 10 */ +# define ERR_R_X509_LIB ERR_LIB_X509/* 11 */ +# define ERR_R_ASN1_LIB ERR_LIB_ASN1/* 13 */ +# define ERR_R_CONF_LIB ERR_LIB_CONF/* 14 */ +# define ERR_R_CRYPTO_LIB ERR_LIB_CRYPTO/* 15 */ +# define ERR_R_EC_LIB ERR_LIB_EC/* 16 */ +# define ERR_R_SSL_LIB ERR_LIB_SSL/* 20 */ +# define ERR_R_BIO_LIB ERR_LIB_BIO/* 32 */ +# define ERR_R_PKCS7_LIB ERR_LIB_PKCS7/* 33 */ +# define ERR_R_X509V3_LIB ERR_LIB_X509V3/* 34 */ +# define ERR_R_PKCS12_LIB ERR_LIB_PKCS12/* 35 */ +# define ERR_R_RAND_LIB ERR_LIB_RAND/* 36 */ +# define ERR_R_DSO_LIB ERR_LIB_DSO/* 37 */ +# define ERR_R_ENGINE_LIB ERR_LIB_ENGINE/* 38 */ +# define ERR_R_OCSP_LIB ERR_LIB_OCSP/* 39 */ +# define ERR_R_UI_LIB ERR_LIB_UI/* 40 */ +# define ERR_R_COMP_LIB ERR_LIB_COMP/* 41 */ +# define ERR_R_ECDSA_LIB ERR_LIB_ECDSA/* 42 */ +# define ERR_R_ECDH_LIB ERR_LIB_ECDH/* 43 */ +# define ERR_R_STORE_LIB ERR_LIB_STORE/* 44 */ +# define ERR_R_TS_LIB ERR_LIB_TS/* 45 */ + +# define ERR_R_NESTED_ASN1_ERROR 58 +# define ERR_R_BAD_ASN1_OBJECT_HEADER 59 +# define ERR_R_BAD_GET_ASN1_OBJECT_CALL 60 +# define ERR_R_EXPECTING_AN_ASN1_SEQUENCE 61 +# define ERR_R_ASN1_LENGTH_MISMATCH 62 +# define ERR_R_MISSING_ASN1_EOS 63 + +/* fatal error */ +# define ERR_R_FATAL 64 +# define ERR_R_MALLOC_FAILURE (1|ERR_R_FATAL) +# define ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED (2|ERR_R_FATAL) +# define ERR_R_PASSED_NULL_PARAMETER (3|ERR_R_FATAL) +# define ERR_R_INTERNAL_ERROR (4|ERR_R_FATAL) +# define ERR_R_DISABLED (5|ERR_R_FATAL) + +/* + * 99 is the maximum possible ERR_R_... code, higher values are reserved for + * the individual libraries + */ + +typedef struct ERR_string_data_st { + unsigned long error; + const char *string; +} ERR_STRING_DATA; + +void ERR_put_error(int lib, int func, int reason, const char *file, int line); +void ERR_set_error_data(char *data, int flags); + +unsigned long ERR_get_error(void); +unsigned long ERR_get_error_line(const char **file, int *line); +unsigned long ERR_get_error_line_data(const char **file, int *line, + const char **data, int *flags); +unsigned long ERR_peek_error(void); +unsigned long ERR_peek_error_line(const char **file, int *line); +unsigned long ERR_peek_error_line_data(const char **file, int *line, + const char **data, int *flags); +unsigned long ERR_peek_last_error(void); +unsigned long ERR_peek_last_error_line(const char **file, int *line); +unsigned long ERR_peek_last_error_line_data(const char **file, int *line, + const char **data, int *flags); +void ERR_clear_error(void); +char *ERR_error_string(unsigned long e, char *buf); +void ERR_error_string_n(unsigned long e, char *buf, size_t len); +const char *ERR_lib_error_string(unsigned long e); +const char *ERR_func_error_string(unsigned long e); +const char *ERR_reason_error_string(unsigned long e); +void ERR_print_errors_cb(int (*cb) (const char *str, size_t len, void *u), + void *u); +# ifndef OPENSSL_NO_FP_API +void ERR_print_errors_fp(FILE *fp); +# endif +# ifndef OPENSSL_NO_BIO +void ERR_print_errors(BIO *bp); +# endif +void ERR_add_error_data(int num, ...); +void ERR_add_error_vdata(int num, va_list args); +void ERR_load_strings(int lib, ERR_STRING_DATA str[]); +void ERR_unload_strings(int lib, ERR_STRING_DATA str[]); +void ERR_load_ERR_strings(void); +void ERR_load_crypto_strings(void); +void ERR_free_strings(void); + +void ERR_remove_thread_state(const CRYPTO_THREADID *tid); +# ifndef OPENSSL_NO_DEPRECATED +void ERR_remove_state(unsigned long pid); /* if zero we look it up */ +# endif +ERR_STATE *ERR_get_state(void); + +# ifndef OPENSSL_NO_LHASH +LHASH_OF(ERR_STRING_DATA) *ERR_get_string_table(void); +LHASH_OF(ERR_STATE) *ERR_get_err_state_table(void); +void ERR_release_err_state_table(LHASH_OF(ERR_STATE) **hash); +# endif + +int ERR_get_next_error_library(void); + +int ERR_set_mark(void); +int ERR_pop_to_mark(void); + +/* Already defined in ossl_typ.h */ +/* typedef struct st_ERR_FNS ERR_FNS; */ +/* + * An application can use this function and provide the return value to + * loaded modules that should use the application's ERR state/functionality + */ +const ERR_FNS *ERR_get_implementation(void); +/* + * A loaded module should call this function prior to any ERR operations + * using the application's "ERR_FNS". + */ +int ERR_set_implementation(const ERR_FNS *fns); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/ext/openssl-osx/include/openssl/evp.h b/ext/openssl-osx/include/openssl/evp.h new file mode 100644 index 00000000..47abbac4 --- /dev/null +++ b/ext/openssl-osx/include/openssl/evp.h @@ -0,0 +1,1519 @@ +/* crypto/evp/evp.h */ +/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) + * All rights reserved. + * + * This package is an SSL implementation written + * by Eric Young (eay@cryptsoft.com). + * The implementation was written so as to conform with Netscapes SSL. + * + * This library is free for commercial and non-commercial use as long as + * the following conditions are aheared to. The following conditions + * apply to all code found in this distribution, be it the RC4, RSA, + * lhash, DES, etc., code; not just the SSL code. The SSL documentation + * included with this distribution is covered by the same copyright terms + * except that the holder is Tim Hudson (tjh@cryptsoft.com). + * + * Copyright remains Eric Young's, and as such any Copyright notices in + * the code are not to be removed. + * If this package is used in a product, Eric Young should be given attribution + * as the author of the parts of the library used. + * This can be in the form of a textual message at program startup or + * in documentation (online or textual) provided with the package. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * "This product includes cryptographic software written by + * Eric Young (eay@cryptsoft.com)" + * The word 'cryptographic' can be left out if the rouines from the library + * being used are not cryptographic related :-). + * 4. If you include any Windows specific code (or a derivative thereof) from + * the apps directory (application code) you must include an acknowledgement: + * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" + * + * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * The licence and distribution terms for any publically available version or + * derivative of this code cannot be changed. i.e. this code cannot simply be + * copied and put under another distribution licence + * [including the GNU Public Licence.] + */ + +#ifndef HEADER_ENVELOPE_H +# define HEADER_ENVELOPE_H + +# ifdef OPENSSL_ALGORITHM_DEFINES +# include +# else +# define OPENSSL_ALGORITHM_DEFINES +# include +# undef OPENSSL_ALGORITHM_DEFINES +# endif + +# include + +# include + +# ifndef OPENSSL_NO_BIO +# include +# endif + +/*- +#define EVP_RC2_KEY_SIZE 16 +#define EVP_RC4_KEY_SIZE 16 +#define EVP_BLOWFISH_KEY_SIZE 16 +#define EVP_CAST5_KEY_SIZE 16 +#define EVP_RC5_32_12_16_KEY_SIZE 16 +*/ +# define EVP_MAX_MD_SIZE 64/* longest known is SHA512 */ +# define EVP_MAX_KEY_LENGTH 64 +# define EVP_MAX_IV_LENGTH 16 +# define EVP_MAX_BLOCK_LENGTH 32 + +# define PKCS5_SALT_LEN 8 +/* Default PKCS#5 iteration count */ +# define PKCS5_DEFAULT_ITER 2048 + +# include + +# define EVP_PK_RSA 0x0001 +# define EVP_PK_DSA 0x0002 +# define EVP_PK_DH 0x0004 +# define EVP_PK_EC 0x0008 +# define EVP_PKT_SIGN 0x0010 +# define EVP_PKT_ENC 0x0020 +# define EVP_PKT_EXCH 0x0040 +# define EVP_PKS_RSA 0x0100 +# define EVP_PKS_DSA 0x0200 +# define EVP_PKS_EC 0x0400 +# define EVP_PKT_EXP 0x1000 /* <= 512 bit key */ + +# define EVP_PKEY_NONE NID_undef +# define EVP_PKEY_RSA NID_rsaEncryption +# define EVP_PKEY_RSA2 NID_rsa +# define EVP_PKEY_DSA NID_dsa +# define EVP_PKEY_DSA1 NID_dsa_2 +# define EVP_PKEY_DSA2 NID_dsaWithSHA +# define EVP_PKEY_DSA3 NID_dsaWithSHA1 +# define EVP_PKEY_DSA4 NID_dsaWithSHA1_2 +# define EVP_PKEY_DH NID_dhKeyAgreement +# define EVP_PKEY_DHX NID_dhpublicnumber +# define EVP_PKEY_EC NID_X9_62_id_ecPublicKey +# define EVP_PKEY_HMAC NID_hmac +# define EVP_PKEY_CMAC NID_cmac + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Type needs to be a bit field Sub-type needs to be for variations on the + * method, as in, can it do arbitrary encryption.... + */ +struct evp_pkey_st { + int type; + int save_type; + int references; + const EVP_PKEY_ASN1_METHOD *ameth; + ENGINE *engine; + union { + char *ptr; +# ifndef OPENSSL_NO_RSA + struct rsa_st *rsa; /* RSA */ +# endif +# ifndef OPENSSL_NO_DSA + struct dsa_st *dsa; /* DSA */ +# endif +# ifndef OPENSSL_NO_DH + struct dh_st *dh; /* DH */ +# endif +# ifndef OPENSSL_NO_EC + struct ec_key_st *ec; /* ECC */ +# endif + } pkey; + int save_parameters; + STACK_OF(X509_ATTRIBUTE) *attributes; /* [ 0 ] */ +} /* EVP_PKEY */ ; + +# define EVP_PKEY_MO_SIGN 0x0001 +# define EVP_PKEY_MO_VERIFY 0x0002 +# define EVP_PKEY_MO_ENCRYPT 0x0004 +# define EVP_PKEY_MO_DECRYPT 0x0008 + +# ifndef EVP_MD +struct env_md_st { + int type; + int pkey_type; + int md_size; + unsigned long flags; + int (*init) (EVP_MD_CTX *ctx); + int (*update) (EVP_MD_CTX *ctx, const void *data, size_t count); + int (*final) (EVP_MD_CTX *ctx, unsigned char *md); + int (*copy) (EVP_MD_CTX *to, const EVP_MD_CTX *from); + int (*cleanup) (EVP_MD_CTX *ctx); + /* FIXME: prototype these some day */ + int (*sign) (int type, const unsigned char *m, unsigned int m_length, + unsigned char *sigret, unsigned int *siglen, void *key); + int (*verify) (int type, const unsigned char *m, unsigned int m_length, + const unsigned char *sigbuf, unsigned int siglen, + void *key); + int required_pkey_type[5]; /* EVP_PKEY_xxx */ + int block_size; + int ctx_size; /* how big does the ctx->md_data need to be */ + /* control function */ + int (*md_ctrl) (EVP_MD_CTX *ctx, int cmd, int p1, void *p2); +} /* EVP_MD */ ; + +typedef int evp_sign_method(int type, const unsigned char *m, + unsigned int m_length, unsigned char *sigret, + unsigned int *siglen, void *key); +typedef int evp_verify_method(int type, const unsigned char *m, + unsigned int m_length, + const unsigned char *sigbuf, + unsigned int siglen, void *key); + +/* digest can only handle a single block */ +# define EVP_MD_FLAG_ONESHOT 0x0001 + +/* + * digest is a "clone" digest used + * which is a copy of an existing + * one for a specific public key type. + * EVP_dss1() etc + */ +# define EVP_MD_FLAG_PKEY_DIGEST 0x0002 + +/* Digest uses EVP_PKEY_METHOD for signing instead of MD specific signing */ + +# define EVP_MD_FLAG_PKEY_METHOD_SIGNATURE 0x0004 + +/* DigestAlgorithmIdentifier flags... */ + +# define EVP_MD_FLAG_DIGALGID_MASK 0x0018 + +/* NULL or absent parameter accepted. Use NULL */ + +# define EVP_MD_FLAG_DIGALGID_NULL 0x0000 + +/* NULL or absent parameter accepted. Use NULL for PKCS#1 otherwise absent */ + +# define EVP_MD_FLAG_DIGALGID_ABSENT 0x0008 + +/* Custom handling via ctrl */ + +# define EVP_MD_FLAG_DIGALGID_CUSTOM 0x0018 + +/* Note if suitable for use in FIPS mode */ +# define EVP_MD_FLAG_FIPS 0x0400 + +/* Digest ctrls */ + +# define EVP_MD_CTRL_DIGALGID 0x1 +# define EVP_MD_CTRL_MICALG 0x2 + +/* Minimum Algorithm specific ctrl value */ + +# define EVP_MD_CTRL_ALG_CTRL 0x1000 + +# define EVP_PKEY_NULL_method NULL,NULL,{0,0,0,0} + +# ifndef OPENSSL_NO_DSA +# define EVP_PKEY_DSA_method (evp_sign_method *)DSA_sign, \ + (evp_verify_method *)DSA_verify, \ + {EVP_PKEY_DSA,EVP_PKEY_DSA2,EVP_PKEY_DSA3, \ + EVP_PKEY_DSA4,0} +# else +# define EVP_PKEY_DSA_method EVP_PKEY_NULL_method +# endif + +# ifndef OPENSSL_NO_ECDSA +# define EVP_PKEY_ECDSA_method (evp_sign_method *)ECDSA_sign, \ + (evp_verify_method *)ECDSA_verify, \ + {EVP_PKEY_EC,0,0,0} +# else +# define EVP_PKEY_ECDSA_method EVP_PKEY_NULL_method +# endif + +# ifndef OPENSSL_NO_RSA +# define EVP_PKEY_RSA_method (evp_sign_method *)RSA_sign, \ + (evp_verify_method *)RSA_verify, \ + {EVP_PKEY_RSA,EVP_PKEY_RSA2,0,0} +# define EVP_PKEY_RSA_ASN1_OCTET_STRING_method \ + (evp_sign_method *)RSA_sign_ASN1_OCTET_STRING, \ + (evp_verify_method *)RSA_verify_ASN1_OCTET_STRING, \ + {EVP_PKEY_RSA,EVP_PKEY_RSA2,0,0} +# else +# define EVP_PKEY_RSA_method EVP_PKEY_NULL_method +# define EVP_PKEY_RSA_ASN1_OCTET_STRING_method EVP_PKEY_NULL_method +# endif + +# endif /* !EVP_MD */ + +struct env_md_ctx_st { + const EVP_MD *digest; + ENGINE *engine; /* functional reference if 'digest' is + * ENGINE-provided */ + unsigned long flags; + void *md_data; + /* Public key context for sign/verify */ + EVP_PKEY_CTX *pctx; + /* Update function: usually copied from EVP_MD */ + int (*update) (EVP_MD_CTX *ctx, const void *data, size_t count); +} /* EVP_MD_CTX */ ; + +/* values for EVP_MD_CTX flags */ + +# define EVP_MD_CTX_FLAG_ONESHOT 0x0001/* digest update will be + * called once only */ +# define EVP_MD_CTX_FLAG_CLEANED 0x0002/* context has already been + * cleaned */ +# define EVP_MD_CTX_FLAG_REUSE 0x0004/* Don't free up ctx->md_data + * in EVP_MD_CTX_cleanup */ +/* + * FIPS and pad options are ignored in 1.0.0, definitions are here so we + * don't accidentally reuse the values for other purposes. + */ + +# define EVP_MD_CTX_FLAG_NON_FIPS_ALLOW 0x0008/* Allow use of non FIPS + * digest in FIPS mode */ + +/* + * The following PAD options are also currently ignored in 1.0.0, digest + * parameters are handled through EVP_DigestSign*() and EVP_DigestVerify*() + * instead. + */ +# define EVP_MD_CTX_FLAG_PAD_MASK 0xF0/* RSA mode to use */ +# define EVP_MD_CTX_FLAG_PAD_PKCS1 0x00/* PKCS#1 v1.5 mode */ +# define EVP_MD_CTX_FLAG_PAD_X931 0x10/* X9.31 mode */ +# define EVP_MD_CTX_FLAG_PAD_PSS 0x20/* PSS mode */ + +# define EVP_MD_CTX_FLAG_NO_INIT 0x0100/* Don't initialize md_data */ + +struct evp_cipher_st { + int nid; + int block_size; + /* Default value for variable length ciphers */ + int key_len; + int iv_len; + /* Various flags */ + unsigned long flags; + /* init key */ + int (*init) (EVP_CIPHER_CTX *ctx, const unsigned char *key, + const unsigned char *iv, int enc); + /* encrypt/decrypt data */ + int (*do_cipher) (EVP_CIPHER_CTX *ctx, unsigned char *out, + const unsigned char *in, size_t inl); + /* cleanup ctx */ + int (*cleanup) (EVP_CIPHER_CTX *); + /* how big ctx->cipher_data needs to be */ + int ctx_size; + /* Populate a ASN1_TYPE with parameters */ + int (*set_asn1_parameters) (EVP_CIPHER_CTX *, ASN1_TYPE *); + /* Get parameters from a ASN1_TYPE */ + int (*get_asn1_parameters) (EVP_CIPHER_CTX *, ASN1_TYPE *); + /* Miscellaneous operations */ + int (*ctrl) (EVP_CIPHER_CTX *, int type, int arg, void *ptr); + /* Application data */ + void *app_data; +} /* EVP_CIPHER */ ; + +/* Values for cipher flags */ + +/* Modes for ciphers */ + +# define EVP_CIPH_STREAM_CIPHER 0x0 +# define EVP_CIPH_ECB_MODE 0x1 +# define EVP_CIPH_CBC_MODE 0x2 +# define EVP_CIPH_CFB_MODE 0x3 +# define EVP_CIPH_OFB_MODE 0x4 +# define EVP_CIPH_CTR_MODE 0x5 +# define EVP_CIPH_GCM_MODE 0x6 +# define EVP_CIPH_CCM_MODE 0x7 +# define EVP_CIPH_XTS_MODE 0x10001 +# define EVP_CIPH_WRAP_MODE 0x10002 +# define EVP_CIPH_MODE 0xF0007 +/* Set if variable length cipher */ +# define EVP_CIPH_VARIABLE_LENGTH 0x8 +/* Set if the iv handling should be done by the cipher itself */ +# define EVP_CIPH_CUSTOM_IV 0x10 +/* Set if the cipher's init() function should be called if key is NULL */ +# define EVP_CIPH_ALWAYS_CALL_INIT 0x20 +/* Call ctrl() to init cipher parameters */ +# define EVP_CIPH_CTRL_INIT 0x40 +/* Don't use standard key length function */ +# define EVP_CIPH_CUSTOM_KEY_LENGTH 0x80 +/* Don't use standard block padding */ +# define EVP_CIPH_NO_PADDING 0x100 +/* cipher handles random key generation */ +# define EVP_CIPH_RAND_KEY 0x200 +/* cipher has its own additional copying logic */ +# define EVP_CIPH_CUSTOM_COPY 0x400 +/* Allow use default ASN1 get/set iv */ +# define EVP_CIPH_FLAG_DEFAULT_ASN1 0x1000 +/* Buffer length in bits not bytes: CFB1 mode only */ +# define EVP_CIPH_FLAG_LENGTH_BITS 0x2000 +/* Note if suitable for use in FIPS mode */ +# define EVP_CIPH_FLAG_FIPS 0x4000 +/* Allow non FIPS cipher in FIPS mode */ +# define EVP_CIPH_FLAG_NON_FIPS_ALLOW 0x8000 +/* + * Cipher handles any and all padding logic as well as finalisation. + */ +# define EVP_CIPH_FLAG_CUSTOM_CIPHER 0x100000 +# define EVP_CIPH_FLAG_AEAD_CIPHER 0x200000 +# define EVP_CIPH_FLAG_TLS1_1_MULTIBLOCK 0x400000 + +/* + * Cipher context flag to indicate we can handle wrap mode: if allowed in + * older applications it could overflow buffers. + */ + +# define EVP_CIPHER_CTX_FLAG_WRAP_ALLOW 0x1 + +/* ctrl() values */ + +# define EVP_CTRL_INIT 0x0 +# define EVP_CTRL_SET_KEY_LENGTH 0x1 +# define EVP_CTRL_GET_RC2_KEY_BITS 0x2 +# define EVP_CTRL_SET_RC2_KEY_BITS 0x3 +# define EVP_CTRL_GET_RC5_ROUNDS 0x4 +# define EVP_CTRL_SET_RC5_ROUNDS 0x5 +# define EVP_CTRL_RAND_KEY 0x6 +# define EVP_CTRL_PBE_PRF_NID 0x7 +# define EVP_CTRL_COPY 0x8 +# define EVP_CTRL_GCM_SET_IVLEN 0x9 +# define EVP_CTRL_GCM_GET_TAG 0x10 +# define EVP_CTRL_GCM_SET_TAG 0x11 +# define EVP_CTRL_GCM_SET_IV_FIXED 0x12 +# define EVP_CTRL_GCM_IV_GEN 0x13 +# define EVP_CTRL_CCM_SET_IVLEN EVP_CTRL_GCM_SET_IVLEN +# define EVP_CTRL_CCM_GET_TAG EVP_CTRL_GCM_GET_TAG +# define EVP_CTRL_CCM_SET_TAG EVP_CTRL_GCM_SET_TAG +# define EVP_CTRL_CCM_SET_L 0x14 +# define EVP_CTRL_CCM_SET_MSGLEN 0x15 +/* + * AEAD cipher deduces payload length and returns number of bytes required to + * store MAC and eventual padding. Subsequent call to EVP_Cipher even + * appends/verifies MAC. + */ +# define EVP_CTRL_AEAD_TLS1_AAD 0x16 +/* Used by composite AEAD ciphers, no-op in GCM, CCM... */ +# define EVP_CTRL_AEAD_SET_MAC_KEY 0x17 +/* Set the GCM invocation field, decrypt only */ +# define EVP_CTRL_GCM_SET_IV_INV 0x18 + +# define EVP_CTRL_TLS1_1_MULTIBLOCK_AAD 0x19 +# define EVP_CTRL_TLS1_1_MULTIBLOCK_ENCRYPT 0x1a +# define EVP_CTRL_TLS1_1_MULTIBLOCK_DECRYPT 0x1b +# define EVP_CTRL_TLS1_1_MULTIBLOCK_MAX_BUFSIZE 0x1c + +typedef struct { + unsigned char *out; + const unsigned char *inp; + size_t len; + unsigned int interleave; +} EVP_CTRL_TLS1_1_MULTIBLOCK_PARAM; + +/* GCM TLS constants */ +/* Length of fixed part of IV derived from PRF */ +# define EVP_GCM_TLS_FIXED_IV_LEN 4 +/* Length of explicit part of IV part of TLS records */ +# define EVP_GCM_TLS_EXPLICIT_IV_LEN 8 +/* Length of tag for TLS */ +# define EVP_GCM_TLS_TAG_LEN 16 + +typedef struct evp_cipher_info_st { + const EVP_CIPHER *cipher; + unsigned char iv[EVP_MAX_IV_LENGTH]; +} EVP_CIPHER_INFO; + +struct evp_cipher_ctx_st { + const EVP_CIPHER *cipher; + ENGINE *engine; /* functional reference if 'cipher' is + * ENGINE-provided */ + int encrypt; /* encrypt or decrypt */ + int buf_len; /* number we have left */ + unsigned char oiv[EVP_MAX_IV_LENGTH]; /* original iv */ + unsigned char iv[EVP_MAX_IV_LENGTH]; /* working iv */ + unsigned char buf[EVP_MAX_BLOCK_LENGTH]; /* saved partial block */ + int num; /* used by cfb/ofb/ctr mode */ + void *app_data; /* application stuff */ + int key_len; /* May change for variable length cipher */ + unsigned long flags; /* Various flags */ + void *cipher_data; /* per EVP data */ + int final_used; + int block_mask; + unsigned char final[EVP_MAX_BLOCK_LENGTH]; /* possible final block */ +} /* EVP_CIPHER_CTX */ ; + +typedef struct evp_Encode_Ctx_st { + /* number saved in a partial encode/decode */ + int num; + /* + * The length is either the output line length (in input bytes) or the + * shortest input line length that is ok. Once decoding begins, the + * length is adjusted up each time a longer line is decoded + */ + int length; + /* data to encode */ + unsigned char enc_data[80]; + /* number read on current line */ + int line_num; + int expect_nl; +} EVP_ENCODE_CTX; + +/* Password based encryption function */ +typedef int (EVP_PBE_KEYGEN) (EVP_CIPHER_CTX *ctx, const char *pass, + int passlen, ASN1_TYPE *param, + const EVP_CIPHER *cipher, const EVP_MD *md, + int en_de); + +# ifndef OPENSSL_NO_RSA +# define EVP_PKEY_assign_RSA(pkey,rsa) EVP_PKEY_assign((pkey),EVP_PKEY_RSA,\ + (char *)(rsa)) +# endif + +# ifndef OPENSSL_NO_DSA +# define EVP_PKEY_assign_DSA(pkey,dsa) EVP_PKEY_assign((pkey),EVP_PKEY_DSA,\ + (char *)(dsa)) +# endif + +# ifndef OPENSSL_NO_DH +# define EVP_PKEY_assign_DH(pkey,dh) EVP_PKEY_assign((pkey),EVP_PKEY_DH,\ + (char *)(dh)) +# endif + +# ifndef OPENSSL_NO_EC +# define EVP_PKEY_assign_EC_KEY(pkey,eckey) EVP_PKEY_assign((pkey),EVP_PKEY_EC,\ + (char *)(eckey)) +# endif + +/* Add some extra combinations */ +# define EVP_get_digestbynid(a) EVP_get_digestbyname(OBJ_nid2sn(a)) +# define EVP_get_digestbyobj(a) EVP_get_digestbynid(OBJ_obj2nid(a)) +# define EVP_get_cipherbynid(a) EVP_get_cipherbyname(OBJ_nid2sn(a)) +# define EVP_get_cipherbyobj(a) EVP_get_cipherbynid(OBJ_obj2nid(a)) + +int EVP_MD_type(const EVP_MD *md); +# define EVP_MD_nid(e) EVP_MD_type(e) +# define EVP_MD_name(e) OBJ_nid2sn(EVP_MD_nid(e)) +int EVP_MD_pkey_type(const EVP_MD *md); +int EVP_MD_size(const EVP_MD *md); +int EVP_MD_block_size(const EVP_MD *md); +unsigned long EVP_MD_flags(const EVP_MD *md); + +const EVP_MD *EVP_MD_CTX_md(const EVP_MD_CTX *ctx); +# define EVP_MD_CTX_size(e) EVP_MD_size(EVP_MD_CTX_md(e)) +# define EVP_MD_CTX_block_size(e) EVP_MD_block_size(EVP_MD_CTX_md(e)) +# define EVP_MD_CTX_type(e) EVP_MD_type(EVP_MD_CTX_md(e)) + +int EVP_CIPHER_nid(const EVP_CIPHER *cipher); +# define EVP_CIPHER_name(e) OBJ_nid2sn(EVP_CIPHER_nid(e)) +int EVP_CIPHER_block_size(const EVP_CIPHER *cipher); +int EVP_CIPHER_key_length(const EVP_CIPHER *cipher); +int EVP_CIPHER_iv_length(const EVP_CIPHER *cipher); +unsigned long EVP_CIPHER_flags(const EVP_CIPHER *cipher); +# define EVP_CIPHER_mode(e) (EVP_CIPHER_flags(e) & EVP_CIPH_MODE) + +const EVP_CIPHER *EVP_CIPHER_CTX_cipher(const EVP_CIPHER_CTX *ctx); +int EVP_CIPHER_CTX_nid(const EVP_CIPHER_CTX *ctx); +int EVP_CIPHER_CTX_block_size(const EVP_CIPHER_CTX *ctx); +int EVP_CIPHER_CTX_key_length(const EVP_CIPHER_CTX *ctx); +int EVP_CIPHER_CTX_iv_length(const EVP_CIPHER_CTX *ctx); +int EVP_CIPHER_CTX_copy(EVP_CIPHER_CTX *out, const EVP_CIPHER_CTX *in); +void *EVP_CIPHER_CTX_get_app_data(const EVP_CIPHER_CTX *ctx); +void EVP_CIPHER_CTX_set_app_data(EVP_CIPHER_CTX *ctx, void *data); +# define EVP_CIPHER_CTX_type(c) EVP_CIPHER_type(EVP_CIPHER_CTX_cipher(c)) +unsigned long EVP_CIPHER_CTX_flags(const EVP_CIPHER_CTX *ctx); +# define EVP_CIPHER_CTX_mode(e) (EVP_CIPHER_CTX_flags(e) & EVP_CIPH_MODE) + +# define EVP_ENCODE_LENGTH(l) (((l+2)/3*4)+(l/48+1)*2+80) +# define EVP_DECODE_LENGTH(l) ((l+3)/4*3+80) + +# define EVP_SignInit_ex(a,b,c) EVP_DigestInit_ex(a,b,c) +# define EVP_SignInit(a,b) EVP_DigestInit(a,b) +# define EVP_SignUpdate(a,b,c) EVP_DigestUpdate(a,b,c) +# define EVP_VerifyInit_ex(a,b,c) EVP_DigestInit_ex(a,b,c) +# define EVP_VerifyInit(a,b) EVP_DigestInit(a,b) +# define EVP_VerifyUpdate(a,b,c) EVP_DigestUpdate(a,b,c) +# define EVP_OpenUpdate(a,b,c,d,e) EVP_DecryptUpdate(a,b,c,d,e) +# define EVP_SealUpdate(a,b,c,d,e) EVP_EncryptUpdate(a,b,c,d,e) +# define EVP_DigestSignUpdate(a,b,c) EVP_DigestUpdate(a,b,c) +# define EVP_DigestVerifyUpdate(a,b,c) EVP_DigestUpdate(a,b,c) + +# ifdef CONST_STRICT +void BIO_set_md(BIO *, const EVP_MD *md); +# else +# define BIO_set_md(b,md) BIO_ctrl(b,BIO_C_SET_MD,0,(char *)md) +# endif +# define BIO_get_md(b,mdp) BIO_ctrl(b,BIO_C_GET_MD,0,(char *)mdp) +# define BIO_get_md_ctx(b,mdcp) BIO_ctrl(b,BIO_C_GET_MD_CTX,0,(char *)mdcp) +# define BIO_set_md_ctx(b,mdcp) BIO_ctrl(b,BIO_C_SET_MD_CTX,0,(char *)mdcp) +# define BIO_get_cipher_status(b) BIO_ctrl(b,BIO_C_GET_CIPHER_STATUS,0,NULL) +# define BIO_get_cipher_ctx(b,c_pp) BIO_ctrl(b,BIO_C_GET_CIPHER_CTX,0,(char *)c_pp) + +int EVP_Cipher(EVP_CIPHER_CTX *c, + unsigned char *out, const unsigned char *in, unsigned int inl); + +# define EVP_add_cipher_alias(n,alias) \ + OBJ_NAME_add((alias),OBJ_NAME_TYPE_CIPHER_METH|OBJ_NAME_ALIAS,(n)) +# define EVP_add_digest_alias(n,alias) \ + OBJ_NAME_add((alias),OBJ_NAME_TYPE_MD_METH|OBJ_NAME_ALIAS,(n)) +# define EVP_delete_cipher_alias(alias) \ + OBJ_NAME_remove(alias,OBJ_NAME_TYPE_CIPHER_METH|OBJ_NAME_ALIAS); +# define EVP_delete_digest_alias(alias) \ + OBJ_NAME_remove(alias,OBJ_NAME_TYPE_MD_METH|OBJ_NAME_ALIAS); + +void EVP_MD_CTX_init(EVP_MD_CTX *ctx); +int EVP_MD_CTX_cleanup(EVP_MD_CTX *ctx); +EVP_MD_CTX *EVP_MD_CTX_create(void); +void EVP_MD_CTX_destroy(EVP_MD_CTX *ctx); +int EVP_MD_CTX_copy_ex(EVP_MD_CTX *out, const EVP_MD_CTX *in); +void EVP_MD_CTX_set_flags(EVP_MD_CTX *ctx, int flags); +void EVP_MD_CTX_clear_flags(EVP_MD_CTX *ctx, int flags); +int EVP_MD_CTX_test_flags(const EVP_MD_CTX *ctx, int flags); +int EVP_DigestInit_ex(EVP_MD_CTX *ctx, const EVP_MD *type, ENGINE *impl); +int EVP_DigestUpdate(EVP_MD_CTX *ctx, const void *d, size_t cnt); +int EVP_DigestFinal_ex(EVP_MD_CTX *ctx, unsigned char *md, unsigned int *s); +int EVP_Digest(const void *data, size_t count, + unsigned char *md, unsigned int *size, const EVP_MD *type, + ENGINE *impl); + +int EVP_MD_CTX_copy(EVP_MD_CTX *out, const EVP_MD_CTX *in); +int EVP_DigestInit(EVP_MD_CTX *ctx, const EVP_MD *type); +int EVP_DigestFinal(EVP_MD_CTX *ctx, unsigned char *md, unsigned int *s); + +int EVP_read_pw_string(char *buf, int length, const char *prompt, int verify); +int EVP_read_pw_string_min(char *buf, int minlen, int maxlen, + const char *prompt, int verify); +void EVP_set_pw_prompt(const char *prompt); +char *EVP_get_pw_prompt(void); + +int EVP_BytesToKey(const EVP_CIPHER *type, const EVP_MD *md, + const unsigned char *salt, const unsigned char *data, + int datal, int count, unsigned char *key, + unsigned char *iv); + +void EVP_CIPHER_CTX_set_flags(EVP_CIPHER_CTX *ctx, int flags); +void EVP_CIPHER_CTX_clear_flags(EVP_CIPHER_CTX *ctx, int flags); +int EVP_CIPHER_CTX_test_flags(const EVP_CIPHER_CTX *ctx, int flags); + +int EVP_EncryptInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, + const unsigned char *key, const unsigned char *iv); +int EVP_EncryptInit_ex(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, + ENGINE *impl, const unsigned char *key, + const unsigned char *iv); +int EVP_EncryptUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl, + const unsigned char *in, int inl); +int EVP_EncryptFinal_ex(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl); +int EVP_EncryptFinal(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl); + +int EVP_DecryptInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, + const unsigned char *key, const unsigned char *iv); +int EVP_DecryptInit_ex(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, + ENGINE *impl, const unsigned char *key, + const unsigned char *iv); +int EVP_DecryptUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl, + const unsigned char *in, int inl); +int EVP_DecryptFinal(EVP_CIPHER_CTX *ctx, unsigned char *outm, int *outl); +int EVP_DecryptFinal_ex(EVP_CIPHER_CTX *ctx, unsigned char *outm, int *outl); + +int EVP_CipherInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, + const unsigned char *key, const unsigned char *iv, + int enc); +int EVP_CipherInit_ex(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, + ENGINE *impl, const unsigned char *key, + const unsigned char *iv, int enc); +int EVP_CipherUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl, + const unsigned char *in, int inl); +int EVP_CipherFinal(EVP_CIPHER_CTX *ctx, unsigned char *outm, int *outl); +int EVP_CipherFinal_ex(EVP_CIPHER_CTX *ctx, unsigned char *outm, int *outl); + +int EVP_SignFinal(EVP_MD_CTX *ctx, unsigned char *md, unsigned int *s, + EVP_PKEY *pkey); + +int EVP_VerifyFinal(EVP_MD_CTX *ctx, const unsigned char *sigbuf, + unsigned int siglen, EVP_PKEY *pkey); + +int EVP_DigestSignInit(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx, + const EVP_MD *type, ENGINE *e, EVP_PKEY *pkey); +int EVP_DigestSignFinal(EVP_MD_CTX *ctx, + unsigned char *sigret, size_t *siglen); + +int EVP_DigestVerifyInit(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx, + const EVP_MD *type, ENGINE *e, EVP_PKEY *pkey); +int EVP_DigestVerifyFinal(EVP_MD_CTX *ctx, + const unsigned char *sig, size_t siglen); + +int EVP_OpenInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *type, + const unsigned char *ek, int ekl, const unsigned char *iv, + EVP_PKEY *priv); +int EVP_OpenFinal(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl); + +int EVP_SealInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *type, + unsigned char **ek, int *ekl, unsigned char *iv, + EVP_PKEY **pubk, int npubk); +int EVP_SealFinal(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl); + +void EVP_EncodeInit(EVP_ENCODE_CTX *ctx); +void EVP_EncodeUpdate(EVP_ENCODE_CTX *ctx, unsigned char *out, int *outl, + const unsigned char *in, int inl); +void EVP_EncodeFinal(EVP_ENCODE_CTX *ctx, unsigned char *out, int *outl); +int EVP_EncodeBlock(unsigned char *t, const unsigned char *f, int n); + +void EVP_DecodeInit(EVP_ENCODE_CTX *ctx); +int EVP_DecodeUpdate(EVP_ENCODE_CTX *ctx, unsigned char *out, int *outl, + const unsigned char *in, int inl); +int EVP_DecodeFinal(EVP_ENCODE_CTX *ctx, unsigned + char *out, int *outl); +int EVP_DecodeBlock(unsigned char *t, const unsigned char *f, int n); + +void EVP_CIPHER_CTX_init(EVP_CIPHER_CTX *a); +int EVP_CIPHER_CTX_cleanup(EVP_CIPHER_CTX *a); +EVP_CIPHER_CTX *EVP_CIPHER_CTX_new(void); +void EVP_CIPHER_CTX_free(EVP_CIPHER_CTX *a); +int EVP_CIPHER_CTX_set_key_length(EVP_CIPHER_CTX *x, int keylen); +int EVP_CIPHER_CTX_set_padding(EVP_CIPHER_CTX *c, int pad); +int EVP_CIPHER_CTX_ctrl(EVP_CIPHER_CTX *ctx, int type, int arg, void *ptr); +int EVP_CIPHER_CTX_rand_key(EVP_CIPHER_CTX *ctx, unsigned char *key); + +# ifndef OPENSSL_NO_BIO +BIO_METHOD *BIO_f_md(void); +BIO_METHOD *BIO_f_base64(void); +BIO_METHOD *BIO_f_cipher(void); +BIO_METHOD *BIO_f_reliable(void); +void BIO_set_cipher(BIO *b, const EVP_CIPHER *c, const unsigned char *k, + const unsigned char *i, int enc); +# endif + +const EVP_MD *EVP_md_null(void); +# ifndef OPENSSL_NO_MD2 +const EVP_MD *EVP_md2(void); +# endif +# ifndef OPENSSL_NO_MD4 +const EVP_MD *EVP_md4(void); +# endif +# ifndef OPENSSL_NO_MD5 +const EVP_MD *EVP_md5(void); +# endif +# ifndef OPENSSL_NO_SHA +const EVP_MD *EVP_sha(void); +const EVP_MD *EVP_sha1(void); +const EVP_MD *EVP_dss(void); +const EVP_MD *EVP_dss1(void); +const EVP_MD *EVP_ecdsa(void); +# endif +# ifndef OPENSSL_NO_SHA256 +const EVP_MD *EVP_sha224(void); +const EVP_MD *EVP_sha256(void); +# endif +# ifndef OPENSSL_NO_SHA512 +const EVP_MD *EVP_sha384(void); +const EVP_MD *EVP_sha512(void); +# endif +# ifndef OPENSSL_NO_MDC2 +const EVP_MD *EVP_mdc2(void); +# endif +# ifndef OPENSSL_NO_RIPEMD +const EVP_MD *EVP_ripemd160(void); +# endif +# ifndef OPENSSL_NO_WHIRLPOOL +const EVP_MD *EVP_whirlpool(void); +# endif +const EVP_CIPHER *EVP_enc_null(void); /* does nothing :-) */ +# ifndef OPENSSL_NO_DES +const EVP_CIPHER *EVP_des_ecb(void); +const EVP_CIPHER *EVP_des_ede(void); +const EVP_CIPHER *EVP_des_ede3(void); +const EVP_CIPHER *EVP_des_ede_ecb(void); +const EVP_CIPHER *EVP_des_ede3_ecb(void); +const EVP_CIPHER *EVP_des_cfb64(void); +# define EVP_des_cfb EVP_des_cfb64 +const EVP_CIPHER *EVP_des_cfb1(void); +const EVP_CIPHER *EVP_des_cfb8(void); +const EVP_CIPHER *EVP_des_ede_cfb64(void); +# define EVP_des_ede_cfb EVP_des_ede_cfb64 +# if 0 +const EVP_CIPHER *EVP_des_ede_cfb1(void); +const EVP_CIPHER *EVP_des_ede_cfb8(void); +# endif +const EVP_CIPHER *EVP_des_ede3_cfb64(void); +# define EVP_des_ede3_cfb EVP_des_ede3_cfb64 +const EVP_CIPHER *EVP_des_ede3_cfb1(void); +const EVP_CIPHER *EVP_des_ede3_cfb8(void); +const EVP_CIPHER *EVP_des_ofb(void); +const EVP_CIPHER *EVP_des_ede_ofb(void); +const EVP_CIPHER *EVP_des_ede3_ofb(void); +const EVP_CIPHER *EVP_des_cbc(void); +const EVP_CIPHER *EVP_des_ede_cbc(void); +const EVP_CIPHER *EVP_des_ede3_cbc(void); +const EVP_CIPHER *EVP_desx_cbc(void); +const EVP_CIPHER *EVP_des_ede3_wrap(void); +/* + * This should now be supported through the dev_crypto ENGINE. But also, why + * are rc4 and md5 declarations made here inside a "NO_DES" precompiler + * branch? + */ +# if 0 +# ifdef OPENSSL_OPENBSD_DEV_CRYPTO +const EVP_CIPHER *EVP_dev_crypto_des_ede3_cbc(void); +const EVP_CIPHER *EVP_dev_crypto_rc4(void); +const EVP_MD *EVP_dev_crypto_md5(void); +# endif +# endif +# endif +# ifndef OPENSSL_NO_RC4 +const EVP_CIPHER *EVP_rc4(void); +const EVP_CIPHER *EVP_rc4_40(void); +# ifndef OPENSSL_NO_MD5 +const EVP_CIPHER *EVP_rc4_hmac_md5(void); +# endif +# endif +# ifndef OPENSSL_NO_IDEA +const EVP_CIPHER *EVP_idea_ecb(void); +const EVP_CIPHER *EVP_idea_cfb64(void); +# define EVP_idea_cfb EVP_idea_cfb64 +const EVP_CIPHER *EVP_idea_ofb(void); +const EVP_CIPHER *EVP_idea_cbc(void); +# endif +# ifndef OPENSSL_NO_RC2 +const EVP_CIPHER *EVP_rc2_ecb(void); +const EVP_CIPHER *EVP_rc2_cbc(void); +const EVP_CIPHER *EVP_rc2_40_cbc(void); +const EVP_CIPHER *EVP_rc2_64_cbc(void); +const EVP_CIPHER *EVP_rc2_cfb64(void); +# define EVP_rc2_cfb EVP_rc2_cfb64 +const EVP_CIPHER *EVP_rc2_ofb(void); +# endif +# ifndef OPENSSL_NO_BF +const EVP_CIPHER *EVP_bf_ecb(void); +const EVP_CIPHER *EVP_bf_cbc(void); +const EVP_CIPHER *EVP_bf_cfb64(void); +# define EVP_bf_cfb EVP_bf_cfb64 +const EVP_CIPHER *EVP_bf_ofb(void); +# endif +# ifndef OPENSSL_NO_CAST +const EVP_CIPHER *EVP_cast5_ecb(void); +const EVP_CIPHER *EVP_cast5_cbc(void); +const EVP_CIPHER *EVP_cast5_cfb64(void); +# define EVP_cast5_cfb EVP_cast5_cfb64 +const EVP_CIPHER *EVP_cast5_ofb(void); +# endif +# ifndef OPENSSL_NO_RC5 +const EVP_CIPHER *EVP_rc5_32_12_16_cbc(void); +const EVP_CIPHER *EVP_rc5_32_12_16_ecb(void); +const EVP_CIPHER *EVP_rc5_32_12_16_cfb64(void); +# define EVP_rc5_32_12_16_cfb EVP_rc5_32_12_16_cfb64 +const EVP_CIPHER *EVP_rc5_32_12_16_ofb(void); +# endif +# ifndef OPENSSL_NO_AES +const EVP_CIPHER *EVP_aes_128_ecb(void); +const EVP_CIPHER *EVP_aes_128_cbc(void); +const EVP_CIPHER *EVP_aes_128_cfb1(void); +const EVP_CIPHER *EVP_aes_128_cfb8(void); +const EVP_CIPHER *EVP_aes_128_cfb128(void); +# define EVP_aes_128_cfb EVP_aes_128_cfb128 +const EVP_CIPHER *EVP_aes_128_ofb(void); +const EVP_CIPHER *EVP_aes_128_ctr(void); +const EVP_CIPHER *EVP_aes_128_ccm(void); +const EVP_CIPHER *EVP_aes_128_gcm(void); +const EVP_CIPHER *EVP_aes_128_xts(void); +const EVP_CIPHER *EVP_aes_128_wrap(void); +const EVP_CIPHER *EVP_aes_192_ecb(void); +const EVP_CIPHER *EVP_aes_192_cbc(void); +const EVP_CIPHER *EVP_aes_192_cfb1(void); +const EVP_CIPHER *EVP_aes_192_cfb8(void); +const EVP_CIPHER *EVP_aes_192_cfb128(void); +# define EVP_aes_192_cfb EVP_aes_192_cfb128 +const EVP_CIPHER *EVP_aes_192_ofb(void); +const EVP_CIPHER *EVP_aes_192_ctr(void); +const EVP_CIPHER *EVP_aes_192_ccm(void); +const EVP_CIPHER *EVP_aes_192_gcm(void); +const EVP_CIPHER *EVP_aes_192_wrap(void); +const EVP_CIPHER *EVP_aes_256_ecb(void); +const EVP_CIPHER *EVP_aes_256_cbc(void); +const EVP_CIPHER *EVP_aes_256_cfb1(void); +const EVP_CIPHER *EVP_aes_256_cfb8(void); +const EVP_CIPHER *EVP_aes_256_cfb128(void); +# define EVP_aes_256_cfb EVP_aes_256_cfb128 +const EVP_CIPHER *EVP_aes_256_ofb(void); +const EVP_CIPHER *EVP_aes_256_ctr(void); +const EVP_CIPHER *EVP_aes_256_ccm(void); +const EVP_CIPHER *EVP_aes_256_gcm(void); +const EVP_CIPHER *EVP_aes_256_xts(void); +const EVP_CIPHER *EVP_aes_256_wrap(void); +# if !defined(OPENSSL_NO_SHA) && !defined(OPENSSL_NO_SHA1) +const EVP_CIPHER *EVP_aes_128_cbc_hmac_sha1(void); +const EVP_CIPHER *EVP_aes_256_cbc_hmac_sha1(void); +# endif +# ifndef OPENSSL_NO_SHA256 +const EVP_CIPHER *EVP_aes_128_cbc_hmac_sha256(void); +const EVP_CIPHER *EVP_aes_256_cbc_hmac_sha256(void); +# endif +# endif +# ifndef OPENSSL_NO_CAMELLIA +const EVP_CIPHER *EVP_camellia_128_ecb(void); +const EVP_CIPHER *EVP_camellia_128_cbc(void); +const EVP_CIPHER *EVP_camellia_128_cfb1(void); +const EVP_CIPHER *EVP_camellia_128_cfb8(void); +const EVP_CIPHER *EVP_camellia_128_cfb128(void); +# define EVP_camellia_128_cfb EVP_camellia_128_cfb128 +const EVP_CIPHER *EVP_camellia_128_ofb(void); +const EVP_CIPHER *EVP_camellia_192_ecb(void); +const EVP_CIPHER *EVP_camellia_192_cbc(void); +const EVP_CIPHER *EVP_camellia_192_cfb1(void); +const EVP_CIPHER *EVP_camellia_192_cfb8(void); +const EVP_CIPHER *EVP_camellia_192_cfb128(void); +# define EVP_camellia_192_cfb EVP_camellia_192_cfb128 +const EVP_CIPHER *EVP_camellia_192_ofb(void); +const EVP_CIPHER *EVP_camellia_256_ecb(void); +const EVP_CIPHER *EVP_camellia_256_cbc(void); +const EVP_CIPHER *EVP_camellia_256_cfb1(void); +const EVP_CIPHER *EVP_camellia_256_cfb8(void); +const EVP_CIPHER *EVP_camellia_256_cfb128(void); +# define EVP_camellia_256_cfb EVP_camellia_256_cfb128 +const EVP_CIPHER *EVP_camellia_256_ofb(void); +# endif + +# ifndef OPENSSL_NO_SEED +const EVP_CIPHER *EVP_seed_ecb(void); +const EVP_CIPHER *EVP_seed_cbc(void); +const EVP_CIPHER *EVP_seed_cfb128(void); +# define EVP_seed_cfb EVP_seed_cfb128 +const EVP_CIPHER *EVP_seed_ofb(void); +# endif + +void OPENSSL_add_all_algorithms_noconf(void); +void OPENSSL_add_all_algorithms_conf(void); + +# ifdef OPENSSL_LOAD_CONF +# define OpenSSL_add_all_algorithms() \ + OPENSSL_add_all_algorithms_conf() +# else +# define OpenSSL_add_all_algorithms() \ + OPENSSL_add_all_algorithms_noconf() +# endif + +void OpenSSL_add_all_ciphers(void); +void OpenSSL_add_all_digests(void); +# define SSLeay_add_all_algorithms() OpenSSL_add_all_algorithms() +# define SSLeay_add_all_ciphers() OpenSSL_add_all_ciphers() +# define SSLeay_add_all_digests() OpenSSL_add_all_digests() + +int EVP_add_cipher(const EVP_CIPHER *cipher); +int EVP_add_digest(const EVP_MD *digest); + +const EVP_CIPHER *EVP_get_cipherbyname(const char *name); +const EVP_MD *EVP_get_digestbyname(const char *name); +void EVP_cleanup(void); + +void EVP_CIPHER_do_all(void (*fn) (const EVP_CIPHER *ciph, + const char *from, const char *to, void *x), + void *arg); +void EVP_CIPHER_do_all_sorted(void (*fn) + (const EVP_CIPHER *ciph, const char *from, + const char *to, void *x), void *arg); + +void EVP_MD_do_all(void (*fn) (const EVP_MD *ciph, + const char *from, const char *to, void *x), + void *arg); +void EVP_MD_do_all_sorted(void (*fn) + (const EVP_MD *ciph, const char *from, + const char *to, void *x), void *arg); + +int EVP_PKEY_decrypt_old(unsigned char *dec_key, + const unsigned char *enc_key, int enc_key_len, + EVP_PKEY *private_key); +int EVP_PKEY_encrypt_old(unsigned char *enc_key, + const unsigned char *key, int key_len, + EVP_PKEY *pub_key); +int EVP_PKEY_type(int type); +int EVP_PKEY_id(const EVP_PKEY *pkey); +int EVP_PKEY_base_id(const EVP_PKEY *pkey); +int EVP_PKEY_bits(EVP_PKEY *pkey); +int EVP_PKEY_size(EVP_PKEY *pkey); +int EVP_PKEY_set_type(EVP_PKEY *pkey, int type); +int EVP_PKEY_set_type_str(EVP_PKEY *pkey, const char *str, int len); +int EVP_PKEY_assign(EVP_PKEY *pkey, int type, void *key); +void *EVP_PKEY_get0(EVP_PKEY *pkey); + +# ifndef OPENSSL_NO_RSA +struct rsa_st; +int EVP_PKEY_set1_RSA(EVP_PKEY *pkey, struct rsa_st *key); +struct rsa_st *EVP_PKEY_get1_RSA(EVP_PKEY *pkey); +# endif +# ifndef OPENSSL_NO_DSA +struct dsa_st; +int EVP_PKEY_set1_DSA(EVP_PKEY *pkey, struct dsa_st *key); +struct dsa_st *EVP_PKEY_get1_DSA(EVP_PKEY *pkey); +# endif +# ifndef OPENSSL_NO_DH +struct dh_st; +int EVP_PKEY_set1_DH(EVP_PKEY *pkey, struct dh_st *key); +struct dh_st *EVP_PKEY_get1_DH(EVP_PKEY *pkey); +# endif +# ifndef OPENSSL_NO_EC +struct ec_key_st; +int EVP_PKEY_set1_EC_KEY(EVP_PKEY *pkey, struct ec_key_st *key); +struct ec_key_st *EVP_PKEY_get1_EC_KEY(EVP_PKEY *pkey); +# endif + +EVP_PKEY *EVP_PKEY_new(void); +void EVP_PKEY_free(EVP_PKEY *pkey); + +EVP_PKEY *d2i_PublicKey(int type, EVP_PKEY **a, const unsigned char **pp, + long length); +int i2d_PublicKey(EVP_PKEY *a, unsigned char **pp); + +EVP_PKEY *d2i_PrivateKey(int type, EVP_PKEY **a, const unsigned char **pp, + long length); +EVP_PKEY *d2i_AutoPrivateKey(EVP_PKEY **a, const unsigned char **pp, + long length); +int i2d_PrivateKey(EVP_PKEY *a, unsigned char **pp); + +int EVP_PKEY_copy_parameters(EVP_PKEY *to, const EVP_PKEY *from); +int EVP_PKEY_missing_parameters(const EVP_PKEY *pkey); +int EVP_PKEY_save_parameters(EVP_PKEY *pkey, int mode); +int EVP_PKEY_cmp_parameters(const EVP_PKEY *a, const EVP_PKEY *b); + +int EVP_PKEY_cmp(const EVP_PKEY *a, const EVP_PKEY *b); + +int EVP_PKEY_print_public(BIO *out, const EVP_PKEY *pkey, + int indent, ASN1_PCTX *pctx); +int EVP_PKEY_print_private(BIO *out, const EVP_PKEY *pkey, + int indent, ASN1_PCTX *pctx); +int EVP_PKEY_print_params(BIO *out, const EVP_PKEY *pkey, + int indent, ASN1_PCTX *pctx); + +int EVP_PKEY_get_default_digest_nid(EVP_PKEY *pkey, int *pnid); + +int EVP_CIPHER_type(const EVP_CIPHER *ctx); + +/* calls methods */ +int EVP_CIPHER_param_to_asn1(EVP_CIPHER_CTX *c, ASN1_TYPE *type); +int EVP_CIPHER_asn1_to_param(EVP_CIPHER_CTX *c, ASN1_TYPE *type); + +/* These are used by EVP_CIPHER methods */ +int EVP_CIPHER_set_asn1_iv(EVP_CIPHER_CTX *c, ASN1_TYPE *type); +int EVP_CIPHER_get_asn1_iv(EVP_CIPHER_CTX *c, ASN1_TYPE *type); + +/* PKCS5 password based encryption */ +int PKCS5_PBE_keyivgen(EVP_CIPHER_CTX *ctx, const char *pass, int passlen, + ASN1_TYPE *param, const EVP_CIPHER *cipher, + const EVP_MD *md, int en_de); +int PKCS5_PBKDF2_HMAC_SHA1(const char *pass, int passlen, + const unsigned char *salt, int saltlen, int iter, + int keylen, unsigned char *out); +int PKCS5_PBKDF2_HMAC(const char *pass, int passlen, + const unsigned char *salt, int saltlen, int iter, + const EVP_MD *digest, int keylen, unsigned char *out); +int PKCS5_v2_PBE_keyivgen(EVP_CIPHER_CTX *ctx, const char *pass, int passlen, + ASN1_TYPE *param, const EVP_CIPHER *cipher, + const EVP_MD *md, int en_de); + +void PKCS5_PBE_add(void); + +int EVP_PBE_CipherInit(ASN1_OBJECT *pbe_obj, const char *pass, int passlen, + ASN1_TYPE *param, EVP_CIPHER_CTX *ctx, int en_de); + +/* PBE type */ + +/* Can appear as the outermost AlgorithmIdentifier */ +# define EVP_PBE_TYPE_OUTER 0x0 +/* Is an PRF type OID */ +# define EVP_PBE_TYPE_PRF 0x1 + +int EVP_PBE_alg_add_type(int pbe_type, int pbe_nid, int cipher_nid, + int md_nid, EVP_PBE_KEYGEN *keygen); +int EVP_PBE_alg_add(int nid, const EVP_CIPHER *cipher, const EVP_MD *md, + EVP_PBE_KEYGEN *keygen); +int EVP_PBE_find(int type, int pbe_nid, int *pcnid, int *pmnid, + EVP_PBE_KEYGEN **pkeygen); +void EVP_PBE_cleanup(void); + +# define ASN1_PKEY_ALIAS 0x1 +# define ASN1_PKEY_DYNAMIC 0x2 +# define ASN1_PKEY_SIGPARAM_NULL 0x4 + +# define ASN1_PKEY_CTRL_PKCS7_SIGN 0x1 +# define ASN1_PKEY_CTRL_PKCS7_ENCRYPT 0x2 +# define ASN1_PKEY_CTRL_DEFAULT_MD_NID 0x3 +# define ASN1_PKEY_CTRL_CMS_SIGN 0x5 +# define ASN1_PKEY_CTRL_CMS_ENVELOPE 0x7 +# define ASN1_PKEY_CTRL_CMS_RI_TYPE 0x8 + +int EVP_PKEY_asn1_get_count(void); +const EVP_PKEY_ASN1_METHOD *EVP_PKEY_asn1_get0(int idx); +const EVP_PKEY_ASN1_METHOD *EVP_PKEY_asn1_find(ENGINE **pe, int type); +const EVP_PKEY_ASN1_METHOD *EVP_PKEY_asn1_find_str(ENGINE **pe, + const char *str, int len); +int EVP_PKEY_asn1_add0(const EVP_PKEY_ASN1_METHOD *ameth); +int EVP_PKEY_asn1_add_alias(int to, int from); +int EVP_PKEY_asn1_get0_info(int *ppkey_id, int *pkey_base_id, + int *ppkey_flags, const char **pinfo, + const char **ppem_str, + const EVP_PKEY_ASN1_METHOD *ameth); + +const EVP_PKEY_ASN1_METHOD *EVP_PKEY_get0_asn1(EVP_PKEY *pkey); +EVP_PKEY_ASN1_METHOD *EVP_PKEY_asn1_new(int id, int flags, + const char *pem_str, + const char *info); +void EVP_PKEY_asn1_copy(EVP_PKEY_ASN1_METHOD *dst, + const EVP_PKEY_ASN1_METHOD *src); +void EVP_PKEY_asn1_free(EVP_PKEY_ASN1_METHOD *ameth); +void EVP_PKEY_asn1_set_public(EVP_PKEY_ASN1_METHOD *ameth, + int (*pub_decode) (EVP_PKEY *pk, + X509_PUBKEY *pub), + int (*pub_encode) (X509_PUBKEY *pub, + const EVP_PKEY *pk), + int (*pub_cmp) (const EVP_PKEY *a, + const EVP_PKEY *b), + int (*pub_print) (BIO *out, + const EVP_PKEY *pkey, + int indent, ASN1_PCTX *pctx), + int (*pkey_size) (const EVP_PKEY *pk), + int (*pkey_bits) (const EVP_PKEY *pk)); +void EVP_PKEY_asn1_set_private(EVP_PKEY_ASN1_METHOD *ameth, + int (*priv_decode) (EVP_PKEY *pk, + PKCS8_PRIV_KEY_INFO + *p8inf), + int (*priv_encode) (PKCS8_PRIV_KEY_INFO *p8, + const EVP_PKEY *pk), + int (*priv_print) (BIO *out, + const EVP_PKEY *pkey, + int indent, + ASN1_PCTX *pctx)); +void EVP_PKEY_asn1_set_param(EVP_PKEY_ASN1_METHOD *ameth, + int (*param_decode) (EVP_PKEY *pkey, + const unsigned char **pder, + int derlen), + int (*param_encode) (const EVP_PKEY *pkey, + unsigned char **pder), + int (*param_missing) (const EVP_PKEY *pk), + int (*param_copy) (EVP_PKEY *to, + const EVP_PKEY *from), + int (*param_cmp) (const EVP_PKEY *a, + const EVP_PKEY *b), + int (*param_print) (BIO *out, + const EVP_PKEY *pkey, + int indent, + ASN1_PCTX *pctx)); + +void EVP_PKEY_asn1_set_free(EVP_PKEY_ASN1_METHOD *ameth, + void (*pkey_free) (EVP_PKEY *pkey)); +void EVP_PKEY_asn1_set_ctrl(EVP_PKEY_ASN1_METHOD *ameth, + int (*pkey_ctrl) (EVP_PKEY *pkey, int op, + long arg1, void *arg2)); + +# define EVP_PKEY_OP_UNDEFINED 0 +# define EVP_PKEY_OP_PARAMGEN (1<<1) +# define EVP_PKEY_OP_KEYGEN (1<<2) +# define EVP_PKEY_OP_SIGN (1<<3) +# define EVP_PKEY_OP_VERIFY (1<<4) +# define EVP_PKEY_OP_VERIFYRECOVER (1<<5) +# define EVP_PKEY_OP_SIGNCTX (1<<6) +# define EVP_PKEY_OP_VERIFYCTX (1<<7) +# define EVP_PKEY_OP_ENCRYPT (1<<8) +# define EVP_PKEY_OP_DECRYPT (1<<9) +# define EVP_PKEY_OP_DERIVE (1<<10) + +# define EVP_PKEY_OP_TYPE_SIG \ + (EVP_PKEY_OP_SIGN | EVP_PKEY_OP_VERIFY | EVP_PKEY_OP_VERIFYRECOVER \ + | EVP_PKEY_OP_SIGNCTX | EVP_PKEY_OP_VERIFYCTX) + +# define EVP_PKEY_OP_TYPE_CRYPT \ + (EVP_PKEY_OP_ENCRYPT | EVP_PKEY_OP_DECRYPT) + +# define EVP_PKEY_OP_TYPE_NOGEN \ + (EVP_PKEY_OP_SIG | EVP_PKEY_OP_CRYPT | EVP_PKEY_OP_DERIVE) + +# define EVP_PKEY_OP_TYPE_GEN \ + (EVP_PKEY_OP_PARAMGEN | EVP_PKEY_OP_KEYGEN) + +# define EVP_PKEY_CTX_set_signature_md(ctx, md) \ + EVP_PKEY_CTX_ctrl(ctx, -1, EVP_PKEY_OP_TYPE_SIG, \ + EVP_PKEY_CTRL_MD, 0, (void *)md) + +# define EVP_PKEY_CTX_get_signature_md(ctx, pmd) \ + EVP_PKEY_CTX_ctrl(ctx, -1, EVP_PKEY_OP_TYPE_SIG, \ + EVP_PKEY_CTRL_GET_MD, 0, (void *)pmd) + +# define EVP_PKEY_CTRL_MD 1 +# define EVP_PKEY_CTRL_PEER_KEY 2 + +# define EVP_PKEY_CTRL_PKCS7_ENCRYPT 3 +# define EVP_PKEY_CTRL_PKCS7_DECRYPT 4 + +# define EVP_PKEY_CTRL_PKCS7_SIGN 5 + +# define EVP_PKEY_CTRL_SET_MAC_KEY 6 + +# define EVP_PKEY_CTRL_DIGESTINIT 7 + +/* Used by GOST key encryption in TLS */ +# define EVP_PKEY_CTRL_SET_IV 8 + +# define EVP_PKEY_CTRL_CMS_ENCRYPT 9 +# define EVP_PKEY_CTRL_CMS_DECRYPT 10 +# define EVP_PKEY_CTRL_CMS_SIGN 11 + +# define EVP_PKEY_CTRL_CIPHER 12 + +# define EVP_PKEY_CTRL_GET_MD 13 + +# define EVP_PKEY_ALG_CTRL 0x1000 + +# define EVP_PKEY_FLAG_AUTOARGLEN 2 +/* + * Method handles all operations: don't assume any digest related defaults. + */ +# define EVP_PKEY_FLAG_SIGCTX_CUSTOM 4 + +const EVP_PKEY_METHOD *EVP_PKEY_meth_find(int type); +EVP_PKEY_METHOD *EVP_PKEY_meth_new(int id, int flags); +void EVP_PKEY_meth_get0_info(int *ppkey_id, int *pflags, + const EVP_PKEY_METHOD *meth); +void EVP_PKEY_meth_copy(EVP_PKEY_METHOD *dst, const EVP_PKEY_METHOD *src); +void EVP_PKEY_meth_free(EVP_PKEY_METHOD *pmeth); +int EVP_PKEY_meth_add0(const EVP_PKEY_METHOD *pmeth); + +EVP_PKEY_CTX *EVP_PKEY_CTX_new(EVP_PKEY *pkey, ENGINE *e); +EVP_PKEY_CTX *EVP_PKEY_CTX_new_id(int id, ENGINE *e); +EVP_PKEY_CTX *EVP_PKEY_CTX_dup(EVP_PKEY_CTX *ctx); +void EVP_PKEY_CTX_free(EVP_PKEY_CTX *ctx); + +int EVP_PKEY_CTX_ctrl(EVP_PKEY_CTX *ctx, int keytype, int optype, + int cmd, int p1, void *p2); +int EVP_PKEY_CTX_ctrl_str(EVP_PKEY_CTX *ctx, const char *type, + const char *value); + +int EVP_PKEY_CTX_get_operation(EVP_PKEY_CTX *ctx); +void EVP_PKEY_CTX_set0_keygen_info(EVP_PKEY_CTX *ctx, int *dat, int datlen); + +EVP_PKEY *EVP_PKEY_new_mac_key(int type, ENGINE *e, + const unsigned char *key, int keylen); + +void EVP_PKEY_CTX_set_data(EVP_PKEY_CTX *ctx, void *data); +void *EVP_PKEY_CTX_get_data(EVP_PKEY_CTX *ctx); +EVP_PKEY *EVP_PKEY_CTX_get0_pkey(EVP_PKEY_CTX *ctx); + +EVP_PKEY *EVP_PKEY_CTX_get0_peerkey(EVP_PKEY_CTX *ctx); + +void EVP_PKEY_CTX_set_app_data(EVP_PKEY_CTX *ctx, void *data); +void *EVP_PKEY_CTX_get_app_data(EVP_PKEY_CTX *ctx); + +int EVP_PKEY_sign_init(EVP_PKEY_CTX *ctx); +int EVP_PKEY_sign(EVP_PKEY_CTX *ctx, + unsigned char *sig, size_t *siglen, + const unsigned char *tbs, size_t tbslen); +int EVP_PKEY_verify_init(EVP_PKEY_CTX *ctx); +int EVP_PKEY_verify(EVP_PKEY_CTX *ctx, + const unsigned char *sig, size_t siglen, + const unsigned char *tbs, size_t tbslen); +int EVP_PKEY_verify_recover_init(EVP_PKEY_CTX *ctx); +int EVP_PKEY_verify_recover(EVP_PKEY_CTX *ctx, + unsigned char *rout, size_t *routlen, + const unsigned char *sig, size_t siglen); +int EVP_PKEY_encrypt_init(EVP_PKEY_CTX *ctx); +int EVP_PKEY_encrypt(EVP_PKEY_CTX *ctx, + unsigned char *out, size_t *outlen, + const unsigned char *in, size_t inlen); +int EVP_PKEY_decrypt_init(EVP_PKEY_CTX *ctx); +int EVP_PKEY_decrypt(EVP_PKEY_CTX *ctx, + unsigned char *out, size_t *outlen, + const unsigned char *in, size_t inlen); + +int EVP_PKEY_derive_init(EVP_PKEY_CTX *ctx); +int EVP_PKEY_derive_set_peer(EVP_PKEY_CTX *ctx, EVP_PKEY *peer); +int EVP_PKEY_derive(EVP_PKEY_CTX *ctx, unsigned char *key, size_t *keylen); + +typedef int EVP_PKEY_gen_cb (EVP_PKEY_CTX *ctx); + +int EVP_PKEY_paramgen_init(EVP_PKEY_CTX *ctx); +int EVP_PKEY_paramgen(EVP_PKEY_CTX *ctx, EVP_PKEY **ppkey); +int EVP_PKEY_keygen_init(EVP_PKEY_CTX *ctx); +int EVP_PKEY_keygen(EVP_PKEY_CTX *ctx, EVP_PKEY **ppkey); + +void EVP_PKEY_CTX_set_cb(EVP_PKEY_CTX *ctx, EVP_PKEY_gen_cb *cb); +EVP_PKEY_gen_cb *EVP_PKEY_CTX_get_cb(EVP_PKEY_CTX *ctx); + +int EVP_PKEY_CTX_get_keygen_info(EVP_PKEY_CTX *ctx, int idx); + +void EVP_PKEY_meth_set_init(EVP_PKEY_METHOD *pmeth, + int (*init) (EVP_PKEY_CTX *ctx)); + +void EVP_PKEY_meth_set_copy(EVP_PKEY_METHOD *pmeth, + int (*copy) (EVP_PKEY_CTX *dst, + EVP_PKEY_CTX *src)); + +void EVP_PKEY_meth_set_cleanup(EVP_PKEY_METHOD *pmeth, + void (*cleanup) (EVP_PKEY_CTX *ctx)); + +void EVP_PKEY_meth_set_paramgen(EVP_PKEY_METHOD *pmeth, + int (*paramgen_init) (EVP_PKEY_CTX *ctx), + int (*paramgen) (EVP_PKEY_CTX *ctx, + EVP_PKEY *pkey)); + +void EVP_PKEY_meth_set_keygen(EVP_PKEY_METHOD *pmeth, + int (*keygen_init) (EVP_PKEY_CTX *ctx), + int (*keygen) (EVP_PKEY_CTX *ctx, + EVP_PKEY *pkey)); + +void EVP_PKEY_meth_set_sign(EVP_PKEY_METHOD *pmeth, + int (*sign_init) (EVP_PKEY_CTX *ctx), + int (*sign) (EVP_PKEY_CTX *ctx, + unsigned char *sig, size_t *siglen, + const unsigned char *tbs, + size_t tbslen)); + +void EVP_PKEY_meth_set_verify(EVP_PKEY_METHOD *pmeth, + int (*verify_init) (EVP_PKEY_CTX *ctx), + int (*verify) (EVP_PKEY_CTX *ctx, + const unsigned char *sig, + size_t siglen, + const unsigned char *tbs, + size_t tbslen)); + +void EVP_PKEY_meth_set_verify_recover(EVP_PKEY_METHOD *pmeth, + int (*verify_recover_init) (EVP_PKEY_CTX + *ctx), + int (*verify_recover) (EVP_PKEY_CTX + *ctx, + unsigned char + *sig, + size_t *siglen, + const unsigned + char *tbs, + size_t tbslen)); + +void EVP_PKEY_meth_set_signctx(EVP_PKEY_METHOD *pmeth, + int (*signctx_init) (EVP_PKEY_CTX *ctx, + EVP_MD_CTX *mctx), + int (*signctx) (EVP_PKEY_CTX *ctx, + unsigned char *sig, + size_t *siglen, + EVP_MD_CTX *mctx)); + +void EVP_PKEY_meth_set_verifyctx(EVP_PKEY_METHOD *pmeth, + int (*verifyctx_init) (EVP_PKEY_CTX *ctx, + EVP_MD_CTX *mctx), + int (*verifyctx) (EVP_PKEY_CTX *ctx, + const unsigned char *sig, + int siglen, + EVP_MD_CTX *mctx)); + +void EVP_PKEY_meth_set_encrypt(EVP_PKEY_METHOD *pmeth, + int (*encrypt_init) (EVP_PKEY_CTX *ctx), + int (*encryptfn) (EVP_PKEY_CTX *ctx, + unsigned char *out, + size_t *outlen, + const unsigned char *in, + size_t inlen)); + +void EVP_PKEY_meth_set_decrypt(EVP_PKEY_METHOD *pmeth, + int (*decrypt_init) (EVP_PKEY_CTX *ctx), + int (*decrypt) (EVP_PKEY_CTX *ctx, + unsigned char *out, + size_t *outlen, + const unsigned char *in, + size_t inlen)); + +void EVP_PKEY_meth_set_derive(EVP_PKEY_METHOD *pmeth, + int (*derive_init) (EVP_PKEY_CTX *ctx), + int (*derive) (EVP_PKEY_CTX *ctx, + unsigned char *key, + size_t *keylen)); + +void EVP_PKEY_meth_set_ctrl(EVP_PKEY_METHOD *pmeth, + int (*ctrl) (EVP_PKEY_CTX *ctx, int type, int p1, + void *p2), + int (*ctrl_str) (EVP_PKEY_CTX *ctx, + const char *type, + const char *value)); + +void EVP_add_alg_module(void); + +/* BEGIN ERROR CODES */ +/* + * The following lines are auto generated by the script mkerr.pl. Any changes + * made after this point may be overwritten when the script is next run. + */ +void ERR_load_EVP_strings(void); + +/* Error codes for the EVP functions. */ + +/* Function codes. */ +# define EVP_F_AESNI_INIT_KEY 165 +# define EVP_F_AESNI_XTS_CIPHER 176 +# define EVP_F_AES_INIT_KEY 133 +# define EVP_F_AES_T4_INIT_KEY 178 +# define EVP_F_AES_XTS 172 +# define EVP_F_AES_XTS_CIPHER 175 +# define EVP_F_ALG_MODULE_INIT 177 +# define EVP_F_CAMELLIA_INIT_KEY 159 +# define EVP_F_CMAC_INIT 173 +# define EVP_F_CMLL_T4_INIT_KEY 179 +# define EVP_F_D2I_PKEY 100 +# define EVP_F_DO_SIGVER_INIT 161 +# define EVP_F_DSAPKEY2PKCS8 134 +# define EVP_F_DSA_PKEY2PKCS8 135 +# define EVP_F_ECDSA_PKEY2PKCS8 129 +# define EVP_F_ECKEY_PKEY2PKCS8 132 +# define EVP_F_EVP_CIPHERINIT_EX 123 +# define EVP_F_EVP_CIPHER_CTX_COPY 163 +# define EVP_F_EVP_CIPHER_CTX_CTRL 124 +# define EVP_F_EVP_CIPHER_CTX_SET_KEY_LENGTH 122 +# define EVP_F_EVP_DECRYPTFINAL_EX 101 +# define EVP_F_EVP_DIGESTINIT_EX 128 +# define EVP_F_EVP_ENCRYPTFINAL_EX 127 +# define EVP_F_EVP_MD_CTX_COPY_EX 110 +# define EVP_F_EVP_MD_SIZE 162 +# define EVP_F_EVP_OPENINIT 102 +# define EVP_F_EVP_PBE_ALG_ADD 115 +# define EVP_F_EVP_PBE_ALG_ADD_TYPE 160 +# define EVP_F_EVP_PBE_CIPHERINIT 116 +# define EVP_F_EVP_PKCS82PKEY 111 +# define EVP_F_EVP_PKCS82PKEY_BROKEN 136 +# define EVP_F_EVP_PKEY2PKCS8_BROKEN 113 +# define EVP_F_EVP_PKEY_COPY_PARAMETERS 103 +# define EVP_F_EVP_PKEY_CTX_CTRL 137 +# define EVP_F_EVP_PKEY_CTX_CTRL_STR 150 +# define EVP_F_EVP_PKEY_CTX_DUP 156 +# define EVP_F_EVP_PKEY_DECRYPT 104 +# define EVP_F_EVP_PKEY_DECRYPT_INIT 138 +# define EVP_F_EVP_PKEY_DECRYPT_OLD 151 +# define EVP_F_EVP_PKEY_DERIVE 153 +# define EVP_F_EVP_PKEY_DERIVE_INIT 154 +# define EVP_F_EVP_PKEY_DERIVE_SET_PEER 155 +# define EVP_F_EVP_PKEY_ENCRYPT 105 +# define EVP_F_EVP_PKEY_ENCRYPT_INIT 139 +# define EVP_F_EVP_PKEY_ENCRYPT_OLD 152 +# define EVP_F_EVP_PKEY_GET1_DH 119 +# define EVP_F_EVP_PKEY_GET1_DSA 120 +# define EVP_F_EVP_PKEY_GET1_ECDSA 130 +# define EVP_F_EVP_PKEY_GET1_EC_KEY 131 +# define EVP_F_EVP_PKEY_GET1_RSA 121 +# define EVP_F_EVP_PKEY_KEYGEN 146 +# define EVP_F_EVP_PKEY_KEYGEN_INIT 147 +# define EVP_F_EVP_PKEY_NEW 106 +# define EVP_F_EVP_PKEY_PARAMGEN 148 +# define EVP_F_EVP_PKEY_PARAMGEN_INIT 149 +# define EVP_F_EVP_PKEY_SIGN 140 +# define EVP_F_EVP_PKEY_SIGN_INIT 141 +# define EVP_F_EVP_PKEY_VERIFY 142 +# define EVP_F_EVP_PKEY_VERIFY_INIT 143 +# define EVP_F_EVP_PKEY_VERIFY_RECOVER 144 +# define EVP_F_EVP_PKEY_VERIFY_RECOVER_INIT 145 +# define EVP_F_EVP_RIJNDAEL 126 +# define EVP_F_EVP_SIGNFINAL 107 +# define EVP_F_EVP_VERIFYFINAL 108 +# define EVP_F_FIPS_CIPHERINIT 166 +# define EVP_F_FIPS_CIPHER_CTX_COPY 170 +# define EVP_F_FIPS_CIPHER_CTX_CTRL 167 +# define EVP_F_FIPS_CIPHER_CTX_SET_KEY_LENGTH 171 +# define EVP_F_FIPS_DIGESTINIT 168 +# define EVP_F_FIPS_MD_CTX_COPY 169 +# define EVP_F_HMAC_INIT_EX 174 +# define EVP_F_INT_CTX_NEW 157 +# define EVP_F_PKCS5_PBE_KEYIVGEN 117 +# define EVP_F_PKCS5_V2_PBE_KEYIVGEN 118 +# define EVP_F_PKCS5_V2_PBKDF2_KEYIVGEN 164 +# define EVP_F_PKCS8_SET_BROKEN 112 +# define EVP_F_PKEY_SET_TYPE 158 +# define EVP_F_RC2_MAGIC_TO_METH 109 +# define EVP_F_RC5_CTRL 125 + +/* Reason codes. */ +# define EVP_R_AES_IV_SETUP_FAILED 162 +# define EVP_R_AES_KEY_SETUP_FAILED 143 +# define EVP_R_ASN1_LIB 140 +# define EVP_R_BAD_BLOCK_LENGTH 136 +# define EVP_R_BAD_DECRYPT 100 +# define EVP_R_BAD_KEY_LENGTH 137 +# define EVP_R_BN_DECODE_ERROR 112 +# define EVP_R_BN_PUBKEY_ERROR 113 +# define EVP_R_BUFFER_TOO_SMALL 155 +# define EVP_R_CAMELLIA_KEY_SETUP_FAILED 157 +# define EVP_R_CIPHER_PARAMETER_ERROR 122 +# define EVP_R_COMMAND_NOT_SUPPORTED 147 +# define EVP_R_CTRL_NOT_IMPLEMENTED 132 +# define EVP_R_CTRL_OPERATION_NOT_IMPLEMENTED 133 +# define EVP_R_DATA_NOT_MULTIPLE_OF_BLOCK_LENGTH 138 +# define EVP_R_DECODE_ERROR 114 +# define EVP_R_DIFFERENT_KEY_TYPES 101 +# define EVP_R_DIFFERENT_PARAMETERS 153 +# define EVP_R_DISABLED_FOR_FIPS 163 +# define EVP_R_ENCODE_ERROR 115 +# define EVP_R_ERROR_LOADING_SECTION 165 +# define EVP_R_ERROR_SETTING_FIPS_MODE 166 +# define EVP_R_EVP_PBE_CIPHERINIT_ERROR 119 +# define EVP_R_EXPECTING_AN_RSA_KEY 127 +# define EVP_R_EXPECTING_A_DH_KEY 128 +# define EVP_R_EXPECTING_A_DSA_KEY 129 +# define EVP_R_EXPECTING_A_ECDSA_KEY 141 +# define EVP_R_EXPECTING_A_EC_KEY 142 +# define EVP_R_FIPS_MODE_NOT_SUPPORTED 167 +# define EVP_R_INITIALIZATION_ERROR 134 +# define EVP_R_INPUT_NOT_INITIALIZED 111 +# define EVP_R_INVALID_DIGEST 152 +# define EVP_R_INVALID_FIPS_MODE 168 +# define EVP_R_INVALID_KEY_LENGTH 130 +# define EVP_R_INVALID_OPERATION 148 +# define EVP_R_IV_TOO_LARGE 102 +# define EVP_R_KEYGEN_FAILURE 120 +# define EVP_R_MESSAGE_DIGEST_IS_NULL 159 +# define EVP_R_METHOD_NOT_SUPPORTED 144 +# define EVP_R_MISSING_PARAMETERS 103 +# define EVP_R_NO_CIPHER_SET 131 +# define EVP_R_NO_DEFAULT_DIGEST 158 +# define EVP_R_NO_DIGEST_SET 139 +# define EVP_R_NO_DSA_PARAMETERS 116 +# define EVP_R_NO_KEY_SET 154 +# define EVP_R_NO_OPERATION_SET 149 +# define EVP_R_NO_SIGN_FUNCTION_CONFIGURED 104 +# define EVP_R_NO_VERIFY_FUNCTION_CONFIGURED 105 +# define EVP_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE 150 +# define EVP_R_OPERATON_NOT_INITIALIZED 151 +# define EVP_R_PKCS8_UNKNOWN_BROKEN_TYPE 117 +# define EVP_R_PRIVATE_KEY_DECODE_ERROR 145 +# define EVP_R_PRIVATE_KEY_ENCODE_ERROR 146 +# define EVP_R_PUBLIC_KEY_NOT_RSA 106 +# define EVP_R_TOO_LARGE 164 +# define EVP_R_UNKNOWN_CIPHER 160 +# define EVP_R_UNKNOWN_DIGEST 161 +# define EVP_R_UNKNOWN_OPTION 169 +# define EVP_R_UNKNOWN_PBE_ALGORITHM 121 +# define EVP_R_UNSUPORTED_NUMBER_OF_ROUNDS 135 +# define EVP_R_UNSUPPORTED_ALGORITHM 156 +# define EVP_R_UNSUPPORTED_CIPHER 107 +# define EVP_R_UNSUPPORTED_KEYLENGTH 123 +# define EVP_R_UNSUPPORTED_KEY_DERIVATION_FUNCTION 124 +# define EVP_R_UNSUPPORTED_KEY_SIZE 108 +# define EVP_R_UNSUPPORTED_PRF 125 +# define EVP_R_UNSUPPORTED_PRIVATE_KEY_ALGORITHM 118 +# define EVP_R_UNSUPPORTED_SALT_TYPE 126 +# define EVP_R_WRAP_MODE_NOT_ALLOWED 170 +# define EVP_R_WRONG_FINAL_BLOCK_LENGTH 109 +# define EVP_R_WRONG_PUBLIC_KEY_TYPE 110 + +#ifdef __cplusplus +} +#endif +#endif diff --git a/ext/openssl-osx/include/openssl/hmac.h b/ext/openssl-osx/include/openssl/hmac.h new file mode 100644 index 00000000..b8b55cda --- /dev/null +++ b/ext/openssl-osx/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/ext/openssl-osx/include/openssl/kssl.h b/ext/openssl-osx/include/openssl/kssl.h new file mode 100644 index 00000000..9a576728 --- /dev/null +++ b/ext/openssl-osx/include/openssl/kssl.h @@ -0,0 +1,197 @@ +/* ssl/kssl.h -*- mode: C; c-file-style: "eay" -*- */ +/* + * Written by Vern Staats for the OpenSSL project + * 2000. project 2000. + */ +/* ==================================================================== + * Copyright (c) 2000 The OpenSSL Project. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. All advertising materials mentioning features or use of this + * software must display the following acknowledgment: + * "This product includes software developed by the OpenSSL Project + * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" + * + * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to + * endorse or promote products derived from this software without + * prior written permission. For written permission, please contact + * licensing@OpenSSL.org. + * + * 5. Products derived from this software may not be called "OpenSSL" + * nor may "OpenSSL" appear in their names without prior written + * permission of the OpenSSL Project. + * + * 6. Redistributions of any form whatsoever must retain the following + * acknowledgment: + * "This product includes software developed by the OpenSSL Project + * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" + * + * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY + * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * ==================================================================== + * + * This product includes cryptographic software written by Eric Young + * (eay@cryptsoft.com). This product includes software written by Tim + * Hudson (tjh@cryptsoft.com). + * + */ + +/* + ** 19990701 VRS Started. + */ + +#ifndef KSSL_H +# define KSSL_H + +# include + +# ifndef OPENSSL_NO_KRB5 + +# include +# include +# include +# ifdef OPENSSL_SYS_WIN32 +/* + * These can sometimes get redefined indirectly by krb5 header files after + * they get undefed in ossl_typ.h + */ +# undef X509_NAME +# undef X509_EXTENSIONS +# undef OCSP_REQUEST +# undef OCSP_RESPONSE +# endif + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Depending on which KRB5 implementation used, some types from + * the other may be missing. Resolve that here and now + */ +# ifdef KRB5_HEIMDAL +typedef unsigned char krb5_octet; +# define FAR +# else + +# ifndef FAR +# define FAR +# endif + +# endif + +/*- + * Uncomment this to debug kssl problems or + * to trace usage of the Kerberos session key + * + * #define KSSL_DEBUG + */ + +# ifndef KRB5SVC +# define KRB5SVC "host" +# endif + +# ifndef KRB5KEYTAB +# define KRB5KEYTAB "/etc/krb5.keytab" +# endif + +# ifndef KRB5SENDAUTH +# define KRB5SENDAUTH 1 +# endif + +# ifndef KRB5CHECKAUTH +# define KRB5CHECKAUTH 1 +# endif + +# ifndef KSSL_CLOCKSKEW +# define KSSL_CLOCKSKEW 300; +# endif + +# define KSSL_ERR_MAX 255 +typedef struct kssl_err_st { + int reason; + char text[KSSL_ERR_MAX + 1]; +} KSSL_ERR; + +/*- Context for passing + * (1) Kerberos session key to SSL, and + * (2) Config data between application and SSL lib + */ +typedef struct kssl_ctx_st { + /* used by: disposition: */ + char *service_name; /* C,S default ok (kssl) */ + char *service_host; /* C input, REQUIRED */ + char *client_princ; /* S output from krb5 ticket */ + char *keytab_file; /* S NULL (/etc/krb5.keytab) */ + char *cred_cache; /* C NULL (default) */ + krb5_enctype enctype; + int length; + krb5_octet FAR *key; +} KSSL_CTX; + +# define KSSL_CLIENT 1 +# define KSSL_SERVER 2 +# define KSSL_SERVICE 3 +# define KSSL_KEYTAB 4 + +# define KSSL_CTX_OK 0 +# define KSSL_CTX_ERR 1 +# define KSSL_NOMEM 2 + +/* Public (for use by applications that use OpenSSL with Kerberos 5 support */ +krb5_error_code kssl_ctx_setstring(KSSL_CTX *kssl_ctx, int which, char *text); +KSSL_CTX *kssl_ctx_new(void); +KSSL_CTX *kssl_ctx_free(KSSL_CTX *kssl_ctx); +void kssl_ctx_show(KSSL_CTX *kssl_ctx); +krb5_error_code kssl_ctx_setprinc(KSSL_CTX *kssl_ctx, int which, + krb5_data *realm, krb5_data *entity, + int nentities); +krb5_error_code kssl_cget_tkt(KSSL_CTX *kssl_ctx, krb5_data **enc_tktp, + krb5_data *authenp, KSSL_ERR *kssl_err); +krb5_error_code kssl_sget_tkt(KSSL_CTX *kssl_ctx, krb5_data *indata, + krb5_ticket_times *ttimes, KSSL_ERR *kssl_err); +krb5_error_code kssl_ctx_setkey(KSSL_CTX *kssl_ctx, krb5_keyblock *session); +void kssl_err_set(KSSL_ERR *kssl_err, int reason, char *text); +void kssl_krb5_free_data_contents(krb5_context context, krb5_data *data); +krb5_error_code kssl_build_principal_2(krb5_context context, + krb5_principal *princ, int rlen, + const char *realm, int slen, + const char *svc, int hlen, + const char *host); +krb5_error_code kssl_validate_times(krb5_timestamp atime, + krb5_ticket_times *ttimes); +krb5_error_code kssl_check_authent(KSSL_CTX *kssl_ctx, krb5_data *authentp, + krb5_timestamp *atimep, + KSSL_ERR *kssl_err); +unsigned char *kssl_skip_confound(krb5_enctype enctype, unsigned char *authn); + +void SSL_set0_kssl_ctx(SSL *s, KSSL_CTX *kctx); +KSSL_CTX *SSL_get0_kssl_ctx(SSL *s); +char *kssl_ctx_get0_client_princ(KSSL_CTX *kctx); + +#ifdef __cplusplus +} +#endif +# endif /* OPENSSL_NO_KRB5 */ +#endif /* KSSL_H */ diff --git a/ext/openssl-osx/include/openssl/lhash.h b/ext/openssl-osx/include/openssl/lhash.h new file mode 100644 index 00000000..b6c328bf --- /dev/null +++ b/ext/openssl-osx/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/ext/openssl-osx/include/openssl/obj_mac.h b/ext/openssl-osx/include/openssl/obj_mac.h new file mode 100644 index 00000000..779c309b --- /dev/null +++ b/ext/openssl-osx/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/ext/openssl-osx/include/openssl/objects.h b/ext/openssl-osx/include/openssl/objects.h new file mode 100644 index 00000000..b8dafa89 --- /dev/null +++ b/ext/openssl-osx/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/ext/openssl-osx/include/openssl/opensslconf.h b/ext/openssl-osx/include/openssl/opensslconf.h new file mode 100644 index 00000000..96ef885f --- /dev/null +++ b/ext/openssl-osx/include/openssl/opensslconf.h @@ -0,0 +1,261 @@ +/* opensslconf.h */ +/* WARNING: Generated automatically from opensslconf.h.in by Configure. */ + +#ifdef __cplusplus +extern "C" { +#endif +/* OpenSSL was configured with the following options: */ +#ifndef OPENSSL_SYSNAME_MACOSX +# define OPENSSL_SYSNAME_MACOSX +#endif +#ifndef OPENSSL_DOING_MAKEDEPEND + + +#ifndef OPENSSL_NO_EC_NISTP_64_GCC_128 +# define OPENSSL_NO_EC_NISTP_64_GCC_128 +#endif +#ifndef OPENSSL_NO_GMP +# define OPENSSL_NO_GMP +#endif +#ifndef OPENSSL_NO_JPAKE +# define OPENSSL_NO_JPAKE +#endif +#ifndef OPENSSL_NO_KRB5 +# define OPENSSL_NO_KRB5 +#endif +#ifndef OPENSSL_NO_LIBUNBOUND +# define OPENSSL_NO_LIBUNBOUND +#endif +#ifndef OPENSSL_NO_MD2 +# define OPENSSL_NO_MD2 +#endif +#ifndef OPENSSL_NO_RC5 +# define OPENSSL_NO_RC5 +#endif +#ifndef OPENSSL_NO_RFC3779 +# define OPENSSL_NO_RFC3779 +#endif +#ifndef OPENSSL_NO_SCTP +# define OPENSSL_NO_SCTP +#endif +#ifndef OPENSSL_NO_SSL_TRACE +# define OPENSSL_NO_SSL_TRACE +#endif +#ifndef OPENSSL_NO_STORE +# define OPENSSL_NO_STORE +#endif +#ifndef OPENSSL_NO_UNIT_TEST +# define OPENSSL_NO_UNIT_TEST +#endif + +#endif /* OPENSSL_DOING_MAKEDEPEND */ + +#ifndef OPENSSL_THREADS +# define OPENSSL_THREADS +#endif +#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_EC_NISTP_64_GCC_128) && !defined(NO_EC_NISTP_64_GCC_128) +# define NO_EC_NISTP_64_GCC_128 +# endif +# if defined(OPENSSL_NO_GMP) && !defined(NO_GMP) +# define NO_GMP +# endif +# if defined(OPENSSL_NO_JPAKE) && !defined(NO_JPAKE) +# define NO_JPAKE +# endif +# if defined(OPENSSL_NO_KRB5) && !defined(NO_KRB5) +# define NO_KRB5 +# endif +# if defined(OPENSSL_NO_LIBUNBOUND) && !defined(NO_LIBUNBOUND) +# define NO_LIBUNBOUND +# endif +# if defined(OPENSSL_NO_MD2) && !defined(NO_MD2) +# define NO_MD2 +# endif +# if defined(OPENSSL_NO_RC5) && !defined(NO_RC5) +# define NO_RC5 +# endif +# if defined(OPENSSL_NO_RFC3779) && !defined(NO_RFC3779) +# define NO_RFC3779 +# endif +# if defined(OPENSSL_NO_SCTP) && !defined(NO_SCTP) +# define NO_SCTP +# endif +# if defined(OPENSSL_NO_SSL_TRACE) && !defined(NO_SSL_TRACE) +# define NO_SSL_TRACE +# endif +# if defined(OPENSSL_NO_STORE) && !defined(NO_STORE) +# define NO_STORE +# endif +# if defined(OPENSSL_NO_UNIT_TEST) && !defined(NO_UNIT_TEST) +# define NO_UNIT_TEST +# endif +#endif + +#define OPENSSL_CPUID_OBJ + +/* crypto/opensslconf.h.in */ + +/* Generate 80386 code? */ +#undef I386_ONLY + +#if !(defined(VMS) || defined(__VMS)) /* VMS uses logical names instead */ +#if defined(HEADER_CRYPTLIB_H) && !defined(OPENSSLDIR) +#define ENGINESDIR "/usr/local/ssl/lib/engines" +#define OPENSSLDIR "/usr/local/ssl" +#endif +#endif + +#undef OPENSSL_UNISTD +#define OPENSSL_UNISTD + +#undef OPENSSL_EXPORT_VAR_AS_FUNCTION + +#if defined(HEADER_IDEA_H) && !defined(IDEA_INT) +#define IDEA_INT unsigned int +#endif + +#if defined(HEADER_MD2_H) && !defined(MD2_INT) +#define MD2_INT unsigned int +#endif + +#if defined(HEADER_RC2_H) && !defined(RC2_INT) +/* I need to put in a mod for the alpha - eay */ +#define RC2_INT unsigned int +#endif + +#if defined(HEADER_RC4_H) +#if !defined(RC4_INT) +/* using int types make the structure larger but make the code faster + * on most boxes I have tested - up to %20 faster. */ +/* + * I don't know what does "most" mean, but declaring "int" is a must on: + * - Intel P6 because partial register stalls are very expensive; + * - elder Alpha because it lacks byte load/store instructions; + */ +#define RC4_INT unsigned int +#endif +#if !defined(RC4_CHUNK) +/* + * This enables code handling data aligned at natural CPU word + * boundary. See crypto/rc4/rc4_enc.c for further details. + */ +#define RC4_CHUNK unsigned long +#endif +#endif + +#if (defined(HEADER_NEW_DES_H) || defined(HEADER_DES_H)) && !defined(DES_LONG) +/* If this is set to 'unsigned int' on a DEC Alpha, this gives about a + * %20 speed up (longs are 8 bytes, int's are 4). */ +#ifndef DES_LONG +#define DES_LONG unsigned long +#endif +#endif + +#if defined(HEADER_BN_H) && !defined(CONFIG_HEADER_BN_H) +#define CONFIG_HEADER_BN_H +#define BN_LLONG + +/* Should we define BN_DIV2W here? */ + +/* Only one for the following should be defined */ +#undef SIXTY_FOUR_BIT_LONG +#undef SIXTY_FOUR_BIT +#define THIRTY_TWO_BIT +#endif + +#if defined(HEADER_RC4_LOCL_H) && !defined(CONFIG_HEADER_RC4_LOCL_H) +#define CONFIG_HEADER_RC4_LOCL_H +/* if this is defined data[i] is used instead of *data, this is a %20 + * speedup on x86 */ +#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) +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 ) /* Newer Sparc's */ +# define DES_PTR +# define DES_RISC1 +# define DES_UNROLL +#elif defined( __ultrix ) /* Older MIPS */ +# define DES_PTR +# define DES_RISC2 +# define DES_UNROLL +#elif defined( __osf1__ ) /* Alpha */ +# define DES_PTR +# define DES_RISC2 +#elif defined ( _AIX ) /* RS6000 */ + /* Unknown */ +#elif defined( __hpux ) /* HP-PA */ + /* Unknown */ +#elif defined( __aux ) /* 68K */ + /* Unknown */ +#elif defined( __dgux ) /* 88K (but P6 in latest boxes) */ +# define DES_UNROLL +#elif defined( __sgi ) /* Newer MIPS */ +# define DES_PTR +# define DES_RISC2 +# define DES_UNROLL +#elif defined(i386) || defined(__i386__) /* x86 boxes, should be gcc */ +# define DES_PTR +# define DES_RISC1 +# define DES_UNROLL +#endif /* Systems-specific speed defines */ +#endif + +#endif /* DES_DEFAULT_OPTIONS */ +#endif /* HEADER_DES_LOCL_H */ +#ifdef __cplusplus +} +#endif diff --git a/ext/openssl-osx/include/openssl/opensslv.h b/ext/openssl-osx/include/openssl/opensslv.h new file mode 100644 index 00000000..e277caee --- /dev/null +++ b/ext/openssl-osx/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 0x1000200fL +# ifdef OPENSSL_FIPS +# define OPENSSL_VERSION_TEXT "OpenSSL 1.0.2-fips 22 Jan 2015" +# else +# define OPENSSL_VERSION_TEXT "OpenSSL 1.0.2 22 Jan 2015" +# endif +# define OPENSSL_VERSION_PTEXT " part of " OPENSSL_VERSION_TEXT + +/*- + * The macros below are to be used for shared library (.so, .dll, ...) + * versioning. That kind of versioning works a bit differently between + * operating systems. The most usual scheme is to set a major and a minor + * number, and have the runtime loader check that the major number is equal + * to what it was at application link time, while the minor number has to + * be greater or equal to what it was at application link time. With this + * scheme, the version number is usually part of the file name, like this: + * + * libcrypto.so.0.9 + * + * Some unixen also make a softlink with the major verson number only: + * + * libcrypto.so.0 + * + * On Tru64 and IRIX 6.x it works a little bit differently. There, the + * shared library version is stored in the file, and is actually a series + * of versions, separated by colons. The rightmost version present in the + * library when linking an application is stored in the application to be + * matched at run time. When the application is run, a check is done to + * see if the library version stored in the application matches any of the + * versions in the version string of the library itself. + * This version string can be constructed in any way, depending on what + * kind of matching is desired. However, to implement the same scheme as + * the one used in the other unixen, all compatible versions, from lowest + * to highest, should be part of the string. Consecutive builds would + * give the following versions strings: + * + * 3.0 + * 3.0:3.1 + * 3.0:3.1:3.2 + * 4.0 + * 4.0:4.1 + * + * Notice how version 4 is completely incompatible with version, and + * therefore give the breach you can see. + * + * There may be other schemes as well that I haven't yet discovered. + * + * So, here's the way it works here: first of all, the library version + * number doesn't need at all to match the overall OpenSSL version. + * However, it's nice and more understandable if it actually does. + * The current library version is stored in the macro SHLIB_VERSION_NUMBER, + * which is just a piece of text in the format "M.m.e" (Major, minor, edit). + * For the sake of Tru64, IRIX, and any other OS that behaves in similar ways, + * we need to keep a history of version numbers, which is done in the + * macro SHLIB_VERSION_HISTORY. The numbers are separated by colons and + * should only keep the versions that are binary compatible with the current. + */ +# define SHLIB_VERSION_HISTORY "" +# define SHLIB_VERSION_NUMBER "1.0.0" + + +#ifdef __cplusplus +} +#endif +#endif /* HEADER_OPENSSLV_H */ diff --git a/ext/openssl-osx/include/openssl/ossl_typ.h b/ext/openssl-osx/include/openssl/ossl_typ.h new file mode 100644 index 00000000..9144ea2c --- /dev/null +++ b/ext/openssl-osx/include/openssl/ossl_typ.h @@ -0,0 +1,211 @@ +/* ==================================================================== + * Copyright (c) 1998-2001 The OpenSSL Project. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. All advertising materials mentioning features or use of this + * software must display the following acknowledgment: + * "This product includes software developed by the OpenSSL Project + * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" + * + * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to + * endorse or promote products derived from this software without + * prior written permission. For written permission, please contact + * openssl-core@openssl.org. + * + * 5. Products derived from this software may not be called "OpenSSL" + * nor may "OpenSSL" appear in their names without prior written + * permission of the OpenSSL Project. + * + * 6. Redistributions of any form whatsoever must retain the following + * acknowledgment: + * "This product includes software developed by the OpenSSL Project + * for use in the OpenSSL Toolkit (http://www.openssl.org/)" + * + * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY + * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * ==================================================================== + * + * This product includes cryptographic software written by Eric Young + * (eay@cryptsoft.com). This product includes software written by Tim + * Hudson (tjh@cryptsoft.com). + * + */ + +#ifndef HEADER_OPENSSL_TYPES_H +# define HEADER_OPENSSL_TYPES_H + +#ifdef __cplusplus +extern "C" { +#endif + +# include + +# ifdef NO_ASN1_TYPEDEFS +# define ASN1_INTEGER ASN1_STRING +# define ASN1_ENUMERATED ASN1_STRING +# define ASN1_BIT_STRING ASN1_STRING +# define ASN1_OCTET_STRING ASN1_STRING +# define ASN1_PRINTABLESTRING ASN1_STRING +# define ASN1_T61STRING ASN1_STRING +# define ASN1_IA5STRING ASN1_STRING +# define ASN1_UTCTIME ASN1_STRING +# define ASN1_GENERALIZEDTIME ASN1_STRING +# define ASN1_TIME ASN1_STRING +# define ASN1_GENERALSTRING ASN1_STRING +# define ASN1_UNIVERSALSTRING ASN1_STRING +# define ASN1_BMPSTRING ASN1_STRING +# define ASN1_VISIBLESTRING ASN1_STRING +# define ASN1_UTF8STRING ASN1_STRING +# define ASN1_BOOLEAN int +# define ASN1_NULL int +# else +typedef struct asn1_string_st ASN1_INTEGER; +typedef struct asn1_string_st ASN1_ENUMERATED; +typedef struct asn1_string_st ASN1_BIT_STRING; +typedef struct asn1_string_st ASN1_OCTET_STRING; +typedef struct asn1_string_st ASN1_PRINTABLESTRING; +typedef struct asn1_string_st ASN1_T61STRING; +typedef struct asn1_string_st ASN1_IA5STRING; +typedef struct asn1_string_st ASN1_GENERALSTRING; +typedef struct asn1_string_st ASN1_UNIVERSALSTRING; +typedef struct asn1_string_st ASN1_BMPSTRING; +typedef struct asn1_string_st ASN1_UTCTIME; +typedef struct asn1_string_st ASN1_TIME; +typedef struct asn1_string_st ASN1_GENERALIZEDTIME; +typedef struct asn1_string_st ASN1_VISIBLESTRING; +typedef struct asn1_string_st ASN1_UTF8STRING; +typedef struct asn1_string_st ASN1_STRING; +typedef int ASN1_BOOLEAN; +typedef int ASN1_NULL; +# endif + +typedef struct asn1_object_st ASN1_OBJECT; + +typedef struct ASN1_ITEM_st ASN1_ITEM; +typedef struct asn1_pctx_st ASN1_PCTX; + +# ifdef OPENSSL_SYS_WIN32 +# undef X509_NAME +# undef X509_EXTENSIONS +# undef X509_CERT_PAIR +# undef PKCS7_ISSUER_AND_SERIAL +# undef OCSP_REQUEST +# undef OCSP_RESPONSE +# endif + +# ifdef BIGNUM +# undef BIGNUM +# endif +typedef struct bignum_st BIGNUM; +typedef struct bignum_ctx BN_CTX; +typedef struct bn_blinding_st BN_BLINDING; +typedef struct bn_mont_ctx_st BN_MONT_CTX; +typedef struct bn_recp_ctx_st BN_RECP_CTX; +typedef struct bn_gencb_st BN_GENCB; + +typedef struct buf_mem_st BUF_MEM; + +typedef struct evp_cipher_st EVP_CIPHER; +typedef struct evp_cipher_ctx_st EVP_CIPHER_CTX; +typedef struct env_md_st EVP_MD; +typedef struct env_md_ctx_st EVP_MD_CTX; +typedef struct evp_pkey_st EVP_PKEY; + +typedef struct evp_pkey_asn1_method_st EVP_PKEY_ASN1_METHOD; + +typedef struct evp_pkey_method_st EVP_PKEY_METHOD; +typedef struct evp_pkey_ctx_st EVP_PKEY_CTX; + +typedef struct dh_st DH; +typedef struct dh_method DH_METHOD; + +typedef struct dsa_st DSA; +typedef struct dsa_method DSA_METHOD; + +typedef struct rsa_st RSA; +typedef struct rsa_meth_st RSA_METHOD; + +typedef struct rand_meth_st RAND_METHOD; + +typedef struct ecdh_method ECDH_METHOD; +typedef struct ecdsa_method ECDSA_METHOD; + +typedef struct x509_st X509; +typedef struct X509_algor_st X509_ALGOR; +typedef struct X509_crl_st X509_CRL; +typedef struct x509_crl_method_st X509_CRL_METHOD; +typedef struct x509_revoked_st X509_REVOKED; +typedef struct X509_name_st X509_NAME; +typedef struct X509_pubkey_st X509_PUBKEY; +typedef struct x509_store_st X509_STORE; +typedef struct x509_store_ctx_st X509_STORE_CTX; + +typedef struct pkcs8_priv_key_info_st PKCS8_PRIV_KEY_INFO; + +typedef struct v3_ext_ctx X509V3_CTX; +typedef struct conf_st CONF; + +typedef struct store_st STORE; +typedef struct store_method_st STORE_METHOD; + +typedef struct ui_st UI; +typedef struct ui_method_st UI_METHOD; + +typedef struct st_ERR_FNS ERR_FNS; + +typedef struct engine_st ENGINE; +typedef struct ssl_st SSL; +typedef struct ssl_ctx_st SSL_CTX; + +typedef struct X509_POLICY_NODE_st X509_POLICY_NODE; +typedef struct X509_POLICY_LEVEL_st X509_POLICY_LEVEL; +typedef struct X509_POLICY_TREE_st X509_POLICY_TREE; +typedef struct X509_POLICY_CACHE_st X509_POLICY_CACHE; + +typedef struct AUTHORITY_KEYID_st AUTHORITY_KEYID; +typedef struct DIST_POINT_st DIST_POINT; +typedef struct ISSUING_DIST_POINT_st ISSUING_DIST_POINT; +typedef struct NAME_CONSTRAINTS_st NAME_CONSTRAINTS; + + /* If placed in pkcs12.h, we end up with a circular depency with pkcs7.h */ +# define DECLARE_PKCS12_STACK_OF(type)/* Nothing */ +# define IMPLEMENT_PKCS12_STACK_OF(type)/* Nothing */ + +typedef struct crypto_ex_data_st CRYPTO_EX_DATA; +/* Callback types for crypto.h */ +typedef int CRYPTO_EX_new (void *parent, void *ptr, CRYPTO_EX_DATA *ad, + int idx, long argl, void *argp); +typedef void CRYPTO_EX_free (void *parent, void *ptr, CRYPTO_EX_DATA *ad, + int idx, long argl, void *argp); +typedef int CRYPTO_EX_dup (CRYPTO_EX_DATA *to, CRYPTO_EX_DATA *from, + void *from_d, int idx, long argl, void *argp); + +typedef struct ocsp_req_ctx_st OCSP_REQ_CTX; +typedef struct ocsp_response_st OCSP_RESPONSE; +typedef struct ocsp_responder_id_st OCSP_RESPID; + +#ifdef __cplusplus +} +#endif +#endif /* def HEADER_OPENSSL_TYPES_H */ diff --git a/ext/openssl-osx/include/openssl/pem.h b/ext/openssl-osx/include/openssl/pem.h new file mode 100644 index 00000000..d3b23fc9 --- /dev/null +++ b/ext/openssl-osx/include/openssl/pem.h @@ -0,0 +1,615 @@ +/* crypto/pem/pem.h */ +/* Copyright (C) 1995-1997 Eric Young (eay@cryptsoft.com) + * All rights reserved. + * + * This package is an SSL implementation written + * by Eric Young (eay@cryptsoft.com). + * The implementation was written so as to conform with Netscapes SSL. + * + * This library is free for commercial and non-commercial use as long as + * the following conditions are aheared to. The following conditions + * apply to all code found in this distribution, be it the RC4, RSA, + * lhash, DES, etc., code; not just the SSL code. The SSL documentation + * included with this distribution is covered by the same copyright terms + * except that the holder is Tim Hudson (tjh@cryptsoft.com). + * + * Copyright remains Eric Young's, and as such any Copyright notices in + * the code are not to be removed. + * If this package is used in a product, Eric Young should be given attribution + * as the author of the parts of the library used. + * This can be in the form of a textual message at program startup or + * in documentation (online or textual) provided with the package. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * "This product includes cryptographic software written by + * Eric Young (eay@cryptsoft.com)" + * The word 'cryptographic' can be left out if the rouines from the library + * being used are not cryptographic related :-). + * 4. If you include any Windows specific code (or a derivative thereof) from + * the apps directory (application code) you must include an acknowledgement: + * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" + * + * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * The licence and distribution terms for any publically available version or + * derivative of this code cannot be changed. i.e. this code cannot simply be + * copied and put under another distribution licence + * [including the GNU Public Licence.] + */ + +#ifndef HEADER_PEM_H +# define HEADER_PEM_H + +# include +# ifndef OPENSSL_NO_BIO +# include +# endif +# ifndef OPENSSL_NO_STACK +# include +# endif +# include +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +# define PEM_BUFSIZE 1024 + +# define PEM_OBJ_UNDEF 0 +# define PEM_OBJ_X509 1 +# define PEM_OBJ_X509_REQ 2 +# define PEM_OBJ_CRL 3 +# define PEM_OBJ_SSL_SESSION 4 +# define PEM_OBJ_PRIV_KEY 10 +# define PEM_OBJ_PRIV_RSA 11 +# define PEM_OBJ_PRIV_DSA 12 +# define PEM_OBJ_PRIV_DH 13 +# define PEM_OBJ_PUB_RSA 14 +# define PEM_OBJ_PUB_DSA 15 +# define PEM_OBJ_PUB_DH 16 +# define PEM_OBJ_DHPARAMS 17 +# define PEM_OBJ_DSAPARAMS 18 +# define PEM_OBJ_PRIV_RSA_PUBLIC 19 +# define PEM_OBJ_PRIV_ECDSA 20 +# define PEM_OBJ_PUB_ECDSA 21 +# define PEM_OBJ_ECPARAMETERS 22 + +# define PEM_ERROR 30 +# define PEM_DEK_DES_CBC 40 +# define PEM_DEK_IDEA_CBC 45 +# define PEM_DEK_DES_EDE 50 +# define PEM_DEK_DES_ECB 60 +# define PEM_DEK_RSA 70 +# define PEM_DEK_RSA_MD2 80 +# define PEM_DEK_RSA_MD5 90 + +# define PEM_MD_MD2 NID_md2 +# define PEM_MD_MD5 NID_md5 +# define PEM_MD_SHA NID_sha +# define PEM_MD_MD2_RSA NID_md2WithRSAEncryption +# define PEM_MD_MD5_RSA NID_md5WithRSAEncryption +# define PEM_MD_SHA_RSA NID_sha1WithRSAEncryption + +# define PEM_STRING_X509_OLD "X509 CERTIFICATE" +# define PEM_STRING_X509 "CERTIFICATE" +# define PEM_STRING_X509_PAIR "CERTIFICATE PAIR" +# define PEM_STRING_X509_TRUSTED "TRUSTED CERTIFICATE" +# define PEM_STRING_X509_REQ_OLD "NEW CERTIFICATE REQUEST" +# define PEM_STRING_X509_REQ "CERTIFICATE REQUEST" +# define PEM_STRING_X509_CRL "X509 CRL" +# define PEM_STRING_EVP_PKEY "ANY PRIVATE KEY" +# define PEM_STRING_PUBLIC "PUBLIC KEY" +# define PEM_STRING_RSA "RSA PRIVATE KEY" +# define PEM_STRING_RSA_PUBLIC "RSA PUBLIC KEY" +# define PEM_STRING_DSA "DSA PRIVATE KEY" +# define PEM_STRING_DSA_PUBLIC "DSA PUBLIC KEY" +# define PEM_STRING_PKCS7 "PKCS7" +# define PEM_STRING_PKCS7_SIGNED "PKCS #7 SIGNED DATA" +# define PEM_STRING_PKCS8 "ENCRYPTED PRIVATE KEY" +# define PEM_STRING_PKCS8INF "PRIVATE KEY" +# define PEM_STRING_DHPARAMS "DH PARAMETERS" +# define PEM_STRING_DHXPARAMS "X9.42 DH PARAMETERS" +# define PEM_STRING_SSL_SESSION "SSL SESSION PARAMETERS" +# define PEM_STRING_DSAPARAMS "DSA PARAMETERS" +# define PEM_STRING_ECDSA_PUBLIC "ECDSA PUBLIC KEY" +# define PEM_STRING_ECPARAMETERS "EC PARAMETERS" +# define PEM_STRING_ECPRIVATEKEY "EC PRIVATE KEY" +# define PEM_STRING_PARAMETERS "PARAMETERS" +# define PEM_STRING_CMS "CMS" + + /* + * Note that this structure is initialised by PEM_SealInit and cleaned up + * by PEM_SealFinal (at least for now) + */ +typedef struct PEM_Encode_Seal_st { + EVP_ENCODE_CTX encode; + EVP_MD_CTX md; + EVP_CIPHER_CTX cipher; +} PEM_ENCODE_SEAL_CTX; + +/* enc_type is one off */ +# define PEM_TYPE_ENCRYPTED 10 +# define PEM_TYPE_MIC_ONLY 20 +# define PEM_TYPE_MIC_CLEAR 30 +# define PEM_TYPE_CLEAR 40 + +typedef struct pem_recip_st { + char *name; + X509_NAME *dn; + int cipher; + int key_enc; + /* char iv[8]; unused and wrong size */ +} PEM_USER; + +typedef struct pem_ctx_st { + int type; /* what type of object */ + struct { + int version; + int mode; + } proc_type; + + char *domain; + + struct { + int cipher; + /*- + unused, and wrong size + unsigned char iv[8]; */ + } DEK_info; + + PEM_USER *originator; + + int num_recipient; + PEM_USER **recipient; +/*- + XXX(ben): don#t think this is used! + STACK *x509_chain; / * certificate chain */ + EVP_MD *md; /* signature type */ + + int md_enc; /* is the md encrypted or not? */ + int md_len; /* length of md_data */ + char *md_data; /* message digest, could be pkey encrypted */ + + EVP_CIPHER *dec; /* date encryption cipher */ + int key_len; /* key length */ + unsigned char *key; /* key */ + /*- + unused, and wrong size + unsigned char iv[8]; */ + + int data_enc; /* is the data encrypted */ + int data_len; + unsigned char *data; +} PEM_CTX; + +/* + * These macros make the PEM_read/PEM_write functions easier to maintain and + * write. Now they are all implemented with either: IMPLEMENT_PEM_rw(...) or + * IMPLEMENT_PEM_rw_cb(...) + */ + +# ifdef OPENSSL_NO_FP_API + +# define IMPLEMENT_PEM_read_fp(name, type, str, asn1) /**/ +# define IMPLEMENT_PEM_write_fp(name, type, str, asn1) /**/ +# define IMPLEMENT_PEM_write_fp_const(name, type, str, asn1) /**/ +# define IMPLEMENT_PEM_write_cb_fp(name, type, str, asn1) /**/ +# define IMPLEMENT_PEM_write_cb_fp_const(name, type, str, asn1) /**/ +# else + +# define IMPLEMENT_PEM_read_fp(name, type, str, asn1) \ +type *PEM_read_##name(FILE *fp, type **x, pem_password_cb *cb, void *u)\ +{ \ +return PEM_ASN1_read((d2i_of_void *)d2i_##asn1, str,fp,(void **)x,cb,u); \ +} + +# define IMPLEMENT_PEM_write_fp(name, type, str, asn1) \ +int PEM_write_##name(FILE *fp, type *x) \ +{ \ +return PEM_ASN1_write((i2d_of_void *)i2d_##asn1,str,fp,x,NULL,NULL,0,NULL,NULL); \ +} + +# define IMPLEMENT_PEM_write_fp_const(name, type, str, asn1) \ +int PEM_write_##name(FILE *fp, const type *x) \ +{ \ +return PEM_ASN1_write((i2d_of_void *)i2d_##asn1,str,fp,(void *)x,NULL,NULL,0,NULL,NULL); \ +} + +# define IMPLEMENT_PEM_write_cb_fp(name, type, str, asn1) \ +int PEM_write_##name(FILE *fp, type *x, const EVP_CIPHER *enc, \ + unsigned char *kstr, int klen, pem_password_cb *cb, \ + void *u) \ + { \ + return PEM_ASN1_write((i2d_of_void *)i2d_##asn1,str,fp,x,enc,kstr,klen,cb,u); \ + } + +# define IMPLEMENT_PEM_write_cb_fp_const(name, type, str, asn1) \ +int PEM_write_##name(FILE *fp, type *x, const EVP_CIPHER *enc, \ + unsigned char *kstr, int klen, pem_password_cb *cb, \ + void *u) \ + { \ + return PEM_ASN1_write((i2d_of_void *)i2d_##asn1,str,fp,x,enc,kstr,klen,cb,u); \ + } + +# endif + +# define IMPLEMENT_PEM_read_bio(name, type, str, asn1) \ +type *PEM_read_bio_##name(BIO *bp, type **x, pem_password_cb *cb, void *u)\ +{ \ +return PEM_ASN1_read_bio((d2i_of_void *)d2i_##asn1, str,bp,(void **)x,cb,u); \ +} + +# define IMPLEMENT_PEM_write_bio(name, type, str, asn1) \ +int PEM_write_bio_##name(BIO *bp, type *x) \ +{ \ +return PEM_ASN1_write_bio((i2d_of_void *)i2d_##asn1,str,bp,x,NULL,NULL,0,NULL,NULL); \ +} + +# define IMPLEMENT_PEM_write_bio_const(name, type, str, asn1) \ +int PEM_write_bio_##name(BIO *bp, const type *x) \ +{ \ +return PEM_ASN1_write_bio((i2d_of_void *)i2d_##asn1,str,bp,(void *)x,NULL,NULL,0,NULL,NULL); \ +} + +# define IMPLEMENT_PEM_write_cb_bio(name, type, str, asn1) \ +int PEM_write_bio_##name(BIO *bp, type *x, const EVP_CIPHER *enc, \ + unsigned char *kstr, int klen, pem_password_cb *cb, void *u) \ + { \ + return PEM_ASN1_write_bio((i2d_of_void *)i2d_##asn1,str,bp,x,enc,kstr,klen,cb,u); \ + } + +# define IMPLEMENT_PEM_write_cb_bio_const(name, type, str, asn1) \ +int PEM_write_bio_##name(BIO *bp, type *x, const EVP_CIPHER *enc, \ + unsigned char *kstr, int klen, pem_password_cb *cb, void *u) \ + { \ + return PEM_ASN1_write_bio((i2d_of_void *)i2d_##asn1,str,bp,(void *)x,enc,kstr,klen,cb,u); \ + } + +# define IMPLEMENT_PEM_write(name, type, str, asn1) \ + IMPLEMENT_PEM_write_bio(name, type, str, asn1) \ + IMPLEMENT_PEM_write_fp(name, type, str, asn1) + +# define IMPLEMENT_PEM_write_const(name, type, str, asn1) \ + IMPLEMENT_PEM_write_bio_const(name, type, str, asn1) \ + IMPLEMENT_PEM_write_fp_const(name, type, str, asn1) + +# define IMPLEMENT_PEM_write_cb(name, type, str, asn1) \ + IMPLEMENT_PEM_write_cb_bio(name, type, str, asn1) \ + IMPLEMENT_PEM_write_cb_fp(name, type, str, asn1) + +# define IMPLEMENT_PEM_write_cb_const(name, type, str, asn1) \ + IMPLEMENT_PEM_write_cb_bio_const(name, type, str, asn1) \ + IMPLEMENT_PEM_write_cb_fp_const(name, type, str, asn1) + +# define IMPLEMENT_PEM_read(name, type, str, asn1) \ + IMPLEMENT_PEM_read_bio(name, type, str, asn1) \ + IMPLEMENT_PEM_read_fp(name, type, str, asn1) + +# define IMPLEMENT_PEM_rw(name, type, str, asn1) \ + IMPLEMENT_PEM_read(name, type, str, asn1) \ + IMPLEMENT_PEM_write(name, type, str, asn1) + +# define IMPLEMENT_PEM_rw_const(name, type, str, asn1) \ + IMPLEMENT_PEM_read(name, type, str, asn1) \ + IMPLEMENT_PEM_write_const(name, type, str, asn1) + +# define IMPLEMENT_PEM_rw_cb(name, type, str, asn1) \ + IMPLEMENT_PEM_read(name, type, str, asn1) \ + IMPLEMENT_PEM_write_cb(name, type, str, asn1) + +/* These are the same except they are for the declarations */ + +# if defined(OPENSSL_NO_FP_API) + +# define DECLARE_PEM_read_fp(name, type) /**/ +# define DECLARE_PEM_write_fp(name, type) /**/ +# define DECLARE_PEM_write_cb_fp(name, type) /**/ +# else + +# define DECLARE_PEM_read_fp(name, type) \ + type *PEM_read_##name(FILE *fp, type **x, pem_password_cb *cb, void *u); + +# define DECLARE_PEM_write_fp(name, type) \ + int PEM_write_##name(FILE *fp, type *x); + +# define DECLARE_PEM_write_fp_const(name, type) \ + int PEM_write_##name(FILE *fp, const type *x); + +# define DECLARE_PEM_write_cb_fp(name, type) \ + int PEM_write_##name(FILE *fp, type *x, const EVP_CIPHER *enc, \ + unsigned char *kstr, int klen, pem_password_cb *cb, void *u); + +# endif + +# ifndef OPENSSL_NO_BIO +# define DECLARE_PEM_read_bio(name, type) \ + type *PEM_read_bio_##name(BIO *bp, type **x, pem_password_cb *cb, void *u); + +# define DECLARE_PEM_write_bio(name, type) \ + int PEM_write_bio_##name(BIO *bp, type *x); + +# define DECLARE_PEM_write_bio_const(name, type) \ + int PEM_write_bio_##name(BIO *bp, const type *x); + +# define DECLARE_PEM_write_cb_bio(name, type) \ + int PEM_write_bio_##name(BIO *bp, type *x, const EVP_CIPHER *enc, \ + unsigned char *kstr, int klen, pem_password_cb *cb, void *u); + +# else + +# define DECLARE_PEM_read_bio(name, type) /**/ +# define DECLARE_PEM_write_bio(name, type) /**/ +# define DECLARE_PEM_write_bio_const(name, type) /**/ +# define DECLARE_PEM_write_cb_bio(name, type) /**/ +# endif +# define DECLARE_PEM_write(name, type) \ + DECLARE_PEM_write_bio(name, type) \ + DECLARE_PEM_write_fp(name, type) +# define DECLARE_PEM_write_const(name, type) \ + DECLARE_PEM_write_bio_const(name, type) \ + DECLARE_PEM_write_fp_const(name, type) +# define DECLARE_PEM_write_cb(name, type) \ + DECLARE_PEM_write_cb_bio(name, type) \ + DECLARE_PEM_write_cb_fp(name, type) +# define DECLARE_PEM_read(name, type) \ + DECLARE_PEM_read_bio(name, type) \ + DECLARE_PEM_read_fp(name, type) +# define DECLARE_PEM_rw(name, type) \ + DECLARE_PEM_read(name, type) \ + DECLARE_PEM_write(name, type) +# define DECLARE_PEM_rw_const(name, type) \ + DECLARE_PEM_read(name, type) \ + DECLARE_PEM_write_const(name, type) +# define DECLARE_PEM_rw_cb(name, type) \ + DECLARE_PEM_read(name, type) \ + DECLARE_PEM_write_cb(name, type) +# if 1 +/* "userdata": new with OpenSSL 0.9.4 */ +typedef int pem_password_cb (char *buf, int size, int rwflag, void *userdata); +# else +/* OpenSSL 0.9.3, 0.9.3a */ +typedef int pem_password_cb (char *buf, int size, int rwflag); +# endif + +int PEM_get_EVP_CIPHER_INFO(char *header, EVP_CIPHER_INFO *cipher); +int PEM_do_header(EVP_CIPHER_INFO *cipher, unsigned char *data, long *len, + pem_password_cb *callback, void *u); + +# ifndef OPENSSL_NO_BIO +int PEM_read_bio(BIO *bp, char **name, char **header, + unsigned char **data, long *len); +int PEM_write_bio(BIO *bp, const char *name, const char *hdr, + const unsigned char *data, long len); +int PEM_bytes_read_bio(unsigned char **pdata, long *plen, char **pnm, + const char *name, BIO *bp, pem_password_cb *cb, + void *u); +void *PEM_ASN1_read_bio(d2i_of_void *d2i, const char *name, BIO *bp, void **x, + pem_password_cb *cb, void *u); +int PEM_ASN1_write_bio(i2d_of_void *i2d, const char *name, BIO *bp, void *x, + const EVP_CIPHER *enc, unsigned char *kstr, int klen, + pem_password_cb *cb, void *u); + +STACK_OF(X509_INFO) *PEM_X509_INFO_read_bio(BIO *bp, STACK_OF(X509_INFO) *sk, + pem_password_cb *cb, void *u); +int PEM_X509_INFO_write_bio(BIO *bp, X509_INFO *xi, EVP_CIPHER *enc, + unsigned char *kstr, int klen, + pem_password_cb *cd, void *u); +# endif + +int PEM_read(FILE *fp, char **name, char **header, + unsigned char **data, long *len); +int PEM_write(FILE *fp, const char *name, const char *hdr, + const unsigned char *data, long len); +void *PEM_ASN1_read(d2i_of_void *d2i, const char *name, FILE *fp, void **x, + pem_password_cb *cb, void *u); +int PEM_ASN1_write(i2d_of_void *i2d, const char *name, FILE *fp, + void *x, const EVP_CIPHER *enc, unsigned char *kstr, + int klen, pem_password_cb *callback, void *u); +STACK_OF(X509_INFO) *PEM_X509_INFO_read(FILE *fp, STACK_OF(X509_INFO) *sk, + pem_password_cb *cb, void *u); + +int PEM_SealInit(PEM_ENCODE_SEAL_CTX *ctx, EVP_CIPHER *type, + EVP_MD *md_type, unsigned char **ek, int *ekl, + unsigned char *iv, EVP_PKEY **pubk, int npubk); +void PEM_SealUpdate(PEM_ENCODE_SEAL_CTX *ctx, unsigned char *out, int *outl, + unsigned char *in, int inl); +int PEM_SealFinal(PEM_ENCODE_SEAL_CTX *ctx, unsigned char *sig, int *sigl, + unsigned char *out, int *outl, EVP_PKEY *priv); + +void PEM_SignInit(EVP_MD_CTX *ctx, EVP_MD *type); +void PEM_SignUpdate(EVP_MD_CTX *ctx, unsigned char *d, unsigned int cnt); +int PEM_SignFinal(EVP_MD_CTX *ctx, unsigned char *sigret, + unsigned int *siglen, EVP_PKEY *pkey); + +int PEM_def_callback(char *buf, int num, int w, void *key); +void PEM_proc_type(char *buf, int type); +void PEM_dek_info(char *buf, const char *type, int len, char *str); + +# include + +DECLARE_PEM_rw(X509, X509) +DECLARE_PEM_rw(X509_AUX, X509) +DECLARE_PEM_rw(X509_CERT_PAIR, X509_CERT_PAIR) +DECLARE_PEM_rw(X509_REQ, X509_REQ) +DECLARE_PEM_write(X509_REQ_NEW, X509_REQ) +DECLARE_PEM_rw(X509_CRL, X509_CRL) +DECLARE_PEM_rw(PKCS7, PKCS7) +DECLARE_PEM_rw(NETSCAPE_CERT_SEQUENCE, NETSCAPE_CERT_SEQUENCE) +DECLARE_PEM_rw(PKCS8, X509_SIG) +DECLARE_PEM_rw(PKCS8_PRIV_KEY_INFO, PKCS8_PRIV_KEY_INFO) +# ifndef OPENSSL_NO_RSA +DECLARE_PEM_rw_cb(RSAPrivateKey, RSA) +DECLARE_PEM_rw_const(RSAPublicKey, RSA) +DECLARE_PEM_rw(RSA_PUBKEY, RSA) +# endif +# ifndef OPENSSL_NO_DSA +DECLARE_PEM_rw_cb(DSAPrivateKey, DSA) +DECLARE_PEM_rw(DSA_PUBKEY, DSA) +DECLARE_PEM_rw_const(DSAparams, DSA) +# endif +# ifndef OPENSSL_NO_EC +DECLARE_PEM_rw_const(ECPKParameters, EC_GROUP) +DECLARE_PEM_rw_cb(ECPrivateKey, EC_KEY) +DECLARE_PEM_rw(EC_PUBKEY, EC_KEY) +# endif +# ifndef OPENSSL_NO_DH +DECLARE_PEM_rw_const(DHparams, DH) +DECLARE_PEM_write_const(DHxparams, DH) +# endif +DECLARE_PEM_rw_cb(PrivateKey, EVP_PKEY) +DECLARE_PEM_rw(PUBKEY, EVP_PKEY) + +int PEM_write_bio_PKCS8PrivateKey_nid(BIO *bp, EVP_PKEY *x, int nid, + char *kstr, int klen, + pem_password_cb *cb, void *u); +int PEM_write_bio_PKCS8PrivateKey(BIO *, EVP_PKEY *, const EVP_CIPHER *, + char *, int, pem_password_cb *, void *); +int i2d_PKCS8PrivateKey_bio(BIO *bp, EVP_PKEY *x, const EVP_CIPHER *enc, + char *kstr, int klen, + pem_password_cb *cb, void *u); +int i2d_PKCS8PrivateKey_nid_bio(BIO *bp, EVP_PKEY *x, int nid, + char *kstr, int klen, + pem_password_cb *cb, void *u); +EVP_PKEY *d2i_PKCS8PrivateKey_bio(BIO *bp, EVP_PKEY **x, pem_password_cb *cb, + void *u); + +int i2d_PKCS8PrivateKey_fp(FILE *fp, EVP_PKEY *x, const EVP_CIPHER *enc, + char *kstr, int klen, + pem_password_cb *cb, void *u); +int i2d_PKCS8PrivateKey_nid_fp(FILE *fp, EVP_PKEY *x, int nid, + char *kstr, int klen, + pem_password_cb *cb, void *u); +int PEM_write_PKCS8PrivateKey_nid(FILE *fp, EVP_PKEY *x, int nid, + char *kstr, int klen, + pem_password_cb *cb, void *u); + +EVP_PKEY *d2i_PKCS8PrivateKey_fp(FILE *fp, EVP_PKEY **x, pem_password_cb *cb, + void *u); + +int PEM_write_PKCS8PrivateKey(FILE *fp, EVP_PKEY *x, const EVP_CIPHER *enc, + char *kstr, int klen, pem_password_cb *cd, + void *u); + +EVP_PKEY *PEM_read_bio_Parameters(BIO *bp, EVP_PKEY **x); +int PEM_write_bio_Parameters(BIO *bp, EVP_PKEY *x); + +EVP_PKEY *b2i_PrivateKey(const unsigned char **in, long length); +EVP_PKEY *b2i_PublicKey(const unsigned char **in, long length); +EVP_PKEY *b2i_PrivateKey_bio(BIO *in); +EVP_PKEY *b2i_PublicKey_bio(BIO *in); +int i2b_PrivateKey_bio(BIO *out, EVP_PKEY *pk); +int i2b_PublicKey_bio(BIO *out, EVP_PKEY *pk); +# ifndef OPENSSL_NO_RC4 +EVP_PKEY *b2i_PVK_bio(BIO *in, pem_password_cb *cb, void *u); +int i2b_PVK_bio(BIO *out, EVP_PKEY *pk, int enclevel, + pem_password_cb *cb, void *u); +# endif + +/* BEGIN ERROR CODES */ +/* + * The following lines are auto generated by the script mkerr.pl. Any changes + * made after this point may be overwritten when the script is next run. + */ +void ERR_load_PEM_strings(void); + +/* Error codes for the PEM functions. */ + +/* Function codes. */ +# define PEM_F_B2I_DSS 127 +# define PEM_F_B2I_PVK_BIO 128 +# define PEM_F_B2I_RSA 129 +# define PEM_F_CHECK_BITLEN_DSA 130 +# define PEM_F_CHECK_BITLEN_RSA 131 +# define PEM_F_D2I_PKCS8PRIVATEKEY_BIO 120 +# define PEM_F_D2I_PKCS8PRIVATEKEY_FP 121 +# define PEM_F_DO_B2I 132 +# define PEM_F_DO_B2I_BIO 133 +# define PEM_F_DO_BLOB_HEADER 134 +# define PEM_F_DO_PK8PKEY 126 +# define PEM_F_DO_PK8PKEY_FP 125 +# define PEM_F_DO_PVK_BODY 135 +# define PEM_F_DO_PVK_HEADER 136 +# define PEM_F_I2B_PVK 137 +# define PEM_F_I2B_PVK_BIO 138 +# define PEM_F_LOAD_IV 101 +# define PEM_F_PEM_ASN1_READ 102 +# define PEM_F_PEM_ASN1_READ_BIO 103 +# define PEM_F_PEM_ASN1_WRITE 104 +# define PEM_F_PEM_ASN1_WRITE_BIO 105 +# define PEM_F_PEM_DEF_CALLBACK 100 +# define PEM_F_PEM_DO_HEADER 106 +# define PEM_F_PEM_F_PEM_WRITE_PKCS8PRIVATEKEY 118 +# define PEM_F_PEM_GET_EVP_CIPHER_INFO 107 +# define PEM_F_PEM_PK8PKEY 119 +# define PEM_F_PEM_READ 108 +# define PEM_F_PEM_READ_BIO 109 +# define PEM_F_PEM_READ_BIO_DHPARAMS 141 +# define PEM_F_PEM_READ_BIO_PARAMETERS 140 +# define PEM_F_PEM_READ_BIO_PRIVATEKEY 123 +# define PEM_F_PEM_READ_DHPARAMS 142 +# define PEM_F_PEM_READ_PRIVATEKEY 124 +# define PEM_F_PEM_SEALFINAL 110 +# define PEM_F_PEM_SEALINIT 111 +# define PEM_F_PEM_SIGNFINAL 112 +# define PEM_F_PEM_WRITE 113 +# define PEM_F_PEM_WRITE_BIO 114 +# define PEM_F_PEM_WRITE_PRIVATEKEY 139 +# define PEM_F_PEM_X509_INFO_READ 115 +# define PEM_F_PEM_X509_INFO_READ_BIO 116 +# define PEM_F_PEM_X509_INFO_WRITE_BIO 117 + +/* Reason codes. */ +# define PEM_R_BAD_BASE64_DECODE 100 +# define PEM_R_BAD_DECRYPT 101 +# define PEM_R_BAD_END_LINE 102 +# define PEM_R_BAD_IV_CHARS 103 +# define PEM_R_BAD_MAGIC_NUMBER 116 +# define PEM_R_BAD_PASSWORD_READ 104 +# define PEM_R_BAD_VERSION_NUMBER 117 +# define PEM_R_BIO_WRITE_FAILURE 118 +# define PEM_R_CIPHER_IS_NULL 127 +# define PEM_R_ERROR_CONVERTING_PRIVATE_KEY 115 +# define PEM_R_EXPECTING_PRIVATE_KEY_BLOB 119 +# define PEM_R_EXPECTING_PUBLIC_KEY_BLOB 120 +# define PEM_R_INCONSISTENT_HEADER 121 +# define PEM_R_KEYBLOB_HEADER_PARSE_ERROR 122 +# define PEM_R_KEYBLOB_TOO_SHORT 123 +# define PEM_R_NOT_DEK_INFO 105 +# define PEM_R_NOT_ENCRYPTED 106 +# define PEM_R_NOT_PROC_TYPE 107 +# define PEM_R_NO_START_LINE 108 +# define PEM_R_PROBLEMS_GETTING_PASSWORD 109 +# define PEM_R_PUBLIC_KEY_NO_RSA 110 +# define PEM_R_PVK_DATA_TOO_SHORT 124 +# define PEM_R_PVK_TOO_SHORT 125 +# define PEM_R_READ_KEY 111 +# define PEM_R_SHORT_HEADER 112 +# define PEM_R_UNSUPPORTED_CIPHER 113 +# define PEM_R_UNSUPPORTED_ENCRYPTION 114 +# define PEM_R_UNSUPPORTED_KEY_COMPONENTS 126 + +#ifdef __cplusplus +} +#endif +#endif diff --git a/ext/openssl-osx/include/openssl/pem2.h b/ext/openssl-osx/include/openssl/pem2.h new file mode 100644 index 00000000..84897d5e --- /dev/null +++ b/ext/openssl-osx/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/ext/openssl-osx/include/openssl/pkcs7.h b/ext/openssl-osx/include/openssl/pkcs7.h new file mode 100644 index 00000000..b51b3863 --- /dev/null +++ b/ext/openssl-osx/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/ext/openssl-osx/include/openssl/pqueue.h b/ext/openssl-osx/include/openssl/pqueue.h new file mode 100644 index 00000000..d40d9c7d --- /dev/null +++ b/ext/openssl-osx/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/ext/openssl-osx/include/openssl/rsa.h b/ext/openssl-osx/include/openssl/rsa.h new file mode 100644 index 00000000..d2ee3740 --- /dev/null +++ b/ext/openssl-osx/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/ext/openssl-osx/include/openssl/safestack.h b/ext/openssl-osx/include/openssl/safestack.h new file mode 100644 index 00000000..1d4f87ea --- /dev/null +++ b/ext/openssl-osx/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/ext/openssl-osx/include/openssl/sha.h b/ext/openssl-osx/include/openssl/sha.h new file mode 100644 index 00000000..e5169e4f --- /dev/null +++ b/ext/openssl-osx/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/ext/openssl-osx/include/openssl/srtp.h b/ext/openssl-osx/include/openssl/srtp.h new file mode 100644 index 00000000..2279c32b --- /dev/null +++ b/ext/openssl-osx/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/ext/openssl-osx/include/openssl/ssl.h b/ext/openssl-osx/include/openssl/ssl.h new file mode 100644 index 00000000..2b0f6628 --- /dev/null +++ b/ext/openssl-osx/include/openssl/ssl.h @@ -0,0 +1,3159 @@ +/* ssl/ssl.h */ +/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) + * All rights reserved. + * + * This package is an SSL implementation written + * by Eric Young (eay@cryptsoft.com). + * The implementation was written so as to conform with Netscapes SSL. + * + * This library is free for commercial and non-commercial use as long as + * the following conditions are aheared to. The following conditions + * apply to all code found in this distribution, be it the RC4, RSA, + * lhash, DES, etc., code; not just the SSL code. The SSL documentation + * included with this distribution is covered by the same copyright terms + * except that the holder is Tim Hudson (tjh@cryptsoft.com). + * + * Copyright remains Eric Young's, and as such any Copyright notices in + * the code are not to be removed. + * If this package is used in a product, Eric Young should be given attribution + * as the author of the parts of the library used. + * This can be in the form of a textual message at program startup or + * in documentation (online or textual) provided with the package. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * "This product includes cryptographic software written by + * Eric Young (eay@cryptsoft.com)" + * The word 'cryptographic' can be left out if the rouines from the library + * being used are not cryptographic related :-). + * 4. If you include any Windows specific code (or a derivative thereof) from + * the apps directory (application code) you must include an acknowledgement: + * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" + * + * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * The licence and distribution terms for any publically available version or + * derivative of this code cannot be changed. i.e. this code cannot simply be + * copied and put under another distribution licence + * [including the GNU Public Licence.] + */ +/* ==================================================================== + * Copyright (c) 1998-2007 The OpenSSL Project. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. All advertising materials mentioning features or use of this + * software must display the following acknowledgment: + * "This product includes software developed by the OpenSSL Project + * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" + * + * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to + * endorse or promote products derived from this software without + * prior written permission. For written permission, please contact + * openssl-core@openssl.org. + * + * 5. Products derived from this software may not be called "OpenSSL" + * nor may "OpenSSL" appear in their names without prior written + * permission of the OpenSSL Project. + * + * 6. Redistributions of any form whatsoever must retain the following + * acknowledgment: + * "This product includes software developed by the OpenSSL Project + * for use in the OpenSSL Toolkit (http://www.openssl.org/)" + * + * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY + * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * ==================================================================== + * + * This product includes cryptographic software written by Eric Young + * (eay@cryptsoft.com). This product includes software written by Tim + * Hudson (tjh@cryptsoft.com). + * + */ +/* ==================================================================== + * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED. + * ECC cipher suite support in OpenSSL originally developed by + * SUN MICROSYSTEMS, INC., and contributed to the OpenSSL project. + */ +/* ==================================================================== + * Copyright 2005 Nokia. All rights reserved. + * + * The portions of the attached software ("Contribution") is developed by + * Nokia Corporation and is licensed pursuant to the OpenSSL open source + * license. + * + * The Contribution, originally written by Mika Kousa and Pasi Eronen of + * Nokia Corporation, consists of the "PSK" (Pre-Shared Key) ciphersuites + * support (see RFC 4279) to OpenSSL. + * + * No patent licenses or other rights except those expressly stated in + * the OpenSSL open source license shall be deemed granted or received + * expressly, by implication, estoppel, or otherwise. + * + * No assurances are provided by Nokia that the Contribution does not + * infringe the patent or other intellectual property rights of any third + * party or that the license provides you with all the necessary rights + * to make use of the Contribution. + * + * THE SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. IN + * ADDITION TO THE DISCLAIMERS INCLUDED IN THE LICENSE, NOKIA + * SPECIFICALLY DISCLAIMS ANY LIABILITY FOR CLAIMS BROUGHT BY YOU OR ANY + * OTHER ENTITY BASED ON INFRINGEMENT OF INTELLECTUAL PROPERTY RIGHTS OR + * OTHERWISE. + */ + +#ifndef HEADER_SSL_H +# define HEADER_SSL_H + +# include + +# ifndef OPENSSL_NO_COMP +# include +# endif +# ifndef OPENSSL_NO_BIO +# include +# endif +# ifndef OPENSSL_NO_DEPRECATED +# ifndef OPENSSL_NO_X509 +# include +# endif +# include +# include +# include +# endif +# include +# include + +# include +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +/* SSLeay version number for ASN.1 encoding of the session information */ +/*- + * Version 0 - initial version + * Version 1 - added the optional peer certificate + */ +# define SSL_SESSION_ASN1_VERSION 0x0001 + +/* text strings for the ciphers */ +# define SSL_TXT_NULL_WITH_MD5 SSL2_TXT_NULL_WITH_MD5 +# define SSL_TXT_RC4_128_WITH_MD5 SSL2_TXT_RC4_128_WITH_MD5 +# define SSL_TXT_RC4_128_EXPORT40_WITH_MD5 SSL2_TXT_RC4_128_EXPORT40_WITH_MD5 +# define SSL_TXT_RC2_128_CBC_WITH_MD5 SSL2_TXT_RC2_128_CBC_WITH_MD5 +# define SSL_TXT_RC2_128_CBC_EXPORT40_WITH_MD5 SSL2_TXT_RC2_128_CBC_EXPORT40_WITH_MD5 +# define SSL_TXT_IDEA_128_CBC_WITH_MD5 SSL2_TXT_IDEA_128_CBC_WITH_MD5 +# define SSL_TXT_DES_64_CBC_WITH_MD5 SSL2_TXT_DES_64_CBC_WITH_MD5 +# define SSL_TXT_DES_64_CBC_WITH_SHA SSL2_TXT_DES_64_CBC_WITH_SHA +# define SSL_TXT_DES_192_EDE3_CBC_WITH_MD5 SSL2_TXT_DES_192_EDE3_CBC_WITH_MD5 +# define SSL_TXT_DES_192_EDE3_CBC_WITH_SHA SSL2_TXT_DES_192_EDE3_CBC_WITH_SHA + +/* + * VRS Additional Kerberos5 entries + */ +# define SSL_TXT_KRB5_DES_64_CBC_SHA SSL3_TXT_KRB5_DES_64_CBC_SHA +# define SSL_TXT_KRB5_DES_192_CBC3_SHA SSL3_TXT_KRB5_DES_192_CBC3_SHA +# define SSL_TXT_KRB5_RC4_128_SHA SSL3_TXT_KRB5_RC4_128_SHA +# define SSL_TXT_KRB5_IDEA_128_CBC_SHA SSL3_TXT_KRB5_IDEA_128_CBC_SHA +# define SSL_TXT_KRB5_DES_64_CBC_MD5 SSL3_TXT_KRB5_DES_64_CBC_MD5 +# define SSL_TXT_KRB5_DES_192_CBC3_MD5 SSL3_TXT_KRB5_DES_192_CBC3_MD5 +# define SSL_TXT_KRB5_RC4_128_MD5 SSL3_TXT_KRB5_RC4_128_MD5 +# define SSL_TXT_KRB5_IDEA_128_CBC_MD5 SSL3_TXT_KRB5_IDEA_128_CBC_MD5 + +# define SSL_TXT_KRB5_DES_40_CBC_SHA SSL3_TXT_KRB5_DES_40_CBC_SHA +# define SSL_TXT_KRB5_RC2_40_CBC_SHA SSL3_TXT_KRB5_RC2_40_CBC_SHA +# define SSL_TXT_KRB5_RC4_40_SHA SSL3_TXT_KRB5_RC4_40_SHA +# define SSL_TXT_KRB5_DES_40_CBC_MD5 SSL3_TXT_KRB5_DES_40_CBC_MD5 +# define SSL_TXT_KRB5_RC2_40_CBC_MD5 SSL3_TXT_KRB5_RC2_40_CBC_MD5 +# define SSL_TXT_KRB5_RC4_40_MD5 SSL3_TXT_KRB5_RC4_40_MD5 + +# define SSL_TXT_KRB5_DES_40_CBC_SHA SSL3_TXT_KRB5_DES_40_CBC_SHA +# define SSL_TXT_KRB5_DES_40_CBC_MD5 SSL3_TXT_KRB5_DES_40_CBC_MD5 +# define SSL_TXT_KRB5_DES_64_CBC_SHA SSL3_TXT_KRB5_DES_64_CBC_SHA +# define SSL_TXT_KRB5_DES_64_CBC_MD5 SSL3_TXT_KRB5_DES_64_CBC_MD5 +# define SSL_TXT_KRB5_DES_192_CBC3_SHA SSL3_TXT_KRB5_DES_192_CBC3_SHA +# define SSL_TXT_KRB5_DES_192_CBC3_MD5 SSL3_TXT_KRB5_DES_192_CBC3_MD5 +# define SSL_MAX_KRB5_PRINCIPAL_LENGTH 256 + +# define SSL_MAX_SSL_SESSION_ID_LENGTH 32 +# define SSL_MAX_SID_CTX_LENGTH 32 + +# define SSL_MIN_RSA_MODULUS_LENGTH_IN_BYTES (512/8) +# define SSL_MAX_KEY_ARG_LENGTH 8 +# define SSL_MAX_MASTER_KEY_LENGTH 48 + +/* These are used to specify which ciphers to use and not to use */ + +# define SSL_TXT_EXP40 "EXPORT40" +# define SSL_TXT_EXP56 "EXPORT56" +# define SSL_TXT_LOW "LOW" +# define SSL_TXT_MEDIUM "MEDIUM" +# define SSL_TXT_HIGH "HIGH" +# define SSL_TXT_FIPS "FIPS" + +# define SSL_TXT_kFZA "kFZA"/* unused! */ +# define SSL_TXT_aFZA "aFZA"/* unused! */ +# define SSL_TXT_eFZA "eFZA"/* unused! */ +# define SSL_TXT_FZA "FZA"/* unused! */ + +# define SSL_TXT_aNULL "aNULL" +# define SSL_TXT_eNULL "eNULL" +# define SSL_TXT_NULL "NULL" + +# define SSL_TXT_kRSA "kRSA" +# define SSL_TXT_kDHr "kDHr" +# define SSL_TXT_kDHd "kDHd" +# define SSL_TXT_kDH "kDH" +# define SSL_TXT_kEDH "kEDH" +# define SSL_TXT_kDHE "kDHE"/* alias for kEDH */ +# define SSL_TXT_kKRB5 "kKRB5" +# define SSL_TXT_kECDHr "kECDHr" +# define SSL_TXT_kECDHe "kECDHe" +# define SSL_TXT_kECDH "kECDH" +# define SSL_TXT_kEECDH "kEECDH" +# define SSL_TXT_kECDHE "kECDHE"/* alias for kEECDH */ +# define SSL_TXT_kPSK "kPSK" +# define SSL_TXT_kGOST "kGOST" +# define SSL_TXT_kSRP "kSRP" + +# define SSL_TXT_aRSA "aRSA" +# define SSL_TXT_aDSS "aDSS" +# define SSL_TXT_aDH "aDH" +# define SSL_TXT_aECDH "aECDH" +# define SSL_TXT_aKRB5 "aKRB5" +# define SSL_TXT_aECDSA "aECDSA" +# define SSL_TXT_aPSK "aPSK" +# define SSL_TXT_aGOST94 "aGOST94" +# define SSL_TXT_aGOST01 "aGOST01" +# define SSL_TXT_aGOST "aGOST" +# define SSL_TXT_aSRP "aSRP" + +# define SSL_TXT_DSS "DSS" +# define SSL_TXT_DH "DH" +# define SSL_TXT_EDH "EDH"/* same as "kEDH:-ADH" */ +# define SSL_TXT_DHE "DHE"/* alias for EDH */ +# define SSL_TXT_ADH "ADH" +# define SSL_TXT_RSA "RSA" +# define SSL_TXT_ECDH "ECDH" +# define SSL_TXT_EECDH "EECDH"/* same as "kEECDH:-AECDH" */ +# define SSL_TXT_ECDHE "ECDHE"/* alias for ECDHE" */ +# define SSL_TXT_AECDH "AECDH" +# define SSL_TXT_ECDSA "ECDSA" +# define SSL_TXT_KRB5 "KRB5" +# define SSL_TXT_PSK "PSK" +# define SSL_TXT_SRP "SRP" + +# define SSL_TXT_DES "DES" +# define SSL_TXT_3DES "3DES" +# define SSL_TXT_RC4 "RC4" +# define SSL_TXT_RC2 "RC2" +# define SSL_TXT_IDEA "IDEA" +# define SSL_TXT_SEED "SEED" +# define SSL_TXT_AES128 "AES128" +# define SSL_TXT_AES256 "AES256" +# define SSL_TXT_AES "AES" +# define SSL_TXT_AES_GCM "AESGCM" +# define SSL_TXT_CAMELLIA128 "CAMELLIA128" +# define SSL_TXT_CAMELLIA256 "CAMELLIA256" +# define SSL_TXT_CAMELLIA "CAMELLIA" + +# define SSL_TXT_MD5 "MD5" +# define SSL_TXT_SHA1 "SHA1" +# define SSL_TXT_SHA "SHA"/* same as "SHA1" */ +# define SSL_TXT_GOST94 "GOST94" +# define SSL_TXT_GOST89MAC "GOST89MAC" +# define SSL_TXT_SHA256 "SHA256" +# define SSL_TXT_SHA384 "SHA384" + +# define SSL_TXT_SSLV2 "SSLv2" +# define SSL_TXT_SSLV3 "SSLv3" +# define SSL_TXT_TLSV1 "TLSv1" +# define SSL_TXT_TLSV1_1 "TLSv1.1" +# define SSL_TXT_TLSV1_2 "TLSv1.2" + +# define SSL_TXT_EXP "EXP" +# define SSL_TXT_EXPORT "EXPORT" + +# define SSL_TXT_ALL "ALL" + +/*- + * COMPLEMENTOF* definitions. These identifiers are used to (de-select) + * ciphers normally not being used. + * Example: "RC4" will activate all ciphers using RC4 including ciphers + * without authentication, which would normally disabled by DEFAULT (due + * the "!ADH" being part of default). Therefore "RC4:!COMPLEMENTOFDEFAULT" + * will make sure that it is also disabled in the specific selection. + * COMPLEMENTOF* identifiers are portable between version, as adjustments + * to the default cipher setup will also be included here. + * + * COMPLEMENTOFDEFAULT does not experience the same special treatment that + * DEFAULT gets, as only selection is being done and no sorting as needed + * for DEFAULT. + */ +# define SSL_TXT_CMPALL "COMPLEMENTOFALL" +# define SSL_TXT_CMPDEF "COMPLEMENTOFDEFAULT" + +/* + * The following cipher list is used by default. It also is substituted when + * an application-defined cipher list string starts with 'DEFAULT'. + */ +# define SSL_DEFAULT_CIPHER_LIST "ALL:!aNULL:!eNULL:!SSLv2" +/* + * As of OpenSSL 1.0.0, ssl_create_cipher_list() in ssl/ssl_ciph.c always + * starts with a reasonable order, and all we have to do for DEFAULT is + * throwing out anonymous and unencrypted ciphersuites! (The latter are not + * actually enabled by ALL, but "ALL:RSA" would enable some of them.) + */ + +/* Used in SSL_set_shutdown()/SSL_get_shutdown(); */ +# define SSL_SENT_SHUTDOWN 1 +# define SSL_RECEIVED_SHUTDOWN 2 + +#ifdef __cplusplus +} +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +# if (defined(OPENSSL_NO_RSA) || defined(OPENSSL_NO_MD5)) && !defined(OPENSSL_NO_SSL2) +# define OPENSSL_NO_SSL2 +# endif + +# define SSL_FILETYPE_ASN1 X509_FILETYPE_ASN1 +# define SSL_FILETYPE_PEM X509_FILETYPE_PEM + +/* + * This is needed to stop compilers complaining about the 'struct ssl_st *' + * function parameters used to prototype callbacks in SSL_CTX. + */ +typedef struct ssl_st *ssl_crock_st; +typedef struct tls_session_ticket_ext_st TLS_SESSION_TICKET_EXT; +typedef struct ssl_method_st SSL_METHOD; +typedef struct ssl_cipher_st SSL_CIPHER; +typedef struct ssl_session_st SSL_SESSION; +typedef struct tls_sigalgs_st TLS_SIGALGS; +typedef struct ssl_conf_ctx_st SSL_CONF_CTX; + +DECLARE_STACK_OF(SSL_CIPHER) + +/* SRTP protection profiles for use with the use_srtp extension (RFC 5764)*/ +typedef struct srtp_protection_profile_st { + const char *name; + unsigned long id; +} SRTP_PROTECTION_PROFILE; + +DECLARE_STACK_OF(SRTP_PROTECTION_PROFILE) + +typedef int (*tls_session_ticket_ext_cb_fn) (SSL *s, + const unsigned char *data, + int len, void *arg); +typedef int (*tls_session_secret_cb_fn) (SSL *s, void *secret, + int *secret_len, + STACK_OF(SSL_CIPHER) *peer_ciphers, + SSL_CIPHER **cipher, void *arg); + +# ifndef OPENSSL_NO_TLSEXT + +/* Typedefs for handling custom extensions */ + +typedef int (*custom_ext_add_cb) (SSL *s, unsigned int ext_type, + const unsigned char **out, + size_t *outlen, int *al, void *add_arg); + +typedef void (*custom_ext_free_cb) (SSL *s, unsigned int ext_type, + const unsigned char *out, void *add_arg); + +typedef int (*custom_ext_parse_cb) (SSL *s, unsigned int ext_type, + const unsigned char *in, + size_t inlen, int *al, void *parse_arg); + +# endif + +# ifndef OPENSSL_NO_SSL_INTERN + +/* used to hold info on the particular ciphers used */ +struct ssl_cipher_st { + int valid; + const char *name; /* text name */ + unsigned long id; /* id, 4 bytes, first is version */ + /* + * changed in 0.9.9: these four used to be portions of a single value + * 'algorithms' + */ + unsigned long algorithm_mkey; /* key exchange algorithm */ + unsigned long algorithm_auth; /* server authentication */ + unsigned long algorithm_enc; /* symmetric encryption */ + unsigned long algorithm_mac; /* symmetric authentication */ + unsigned long algorithm_ssl; /* (major) protocol version */ + unsigned long algo_strength; /* strength and export flags */ + unsigned long algorithm2; /* Extra flags */ + int strength_bits; /* Number of bits really used */ + int alg_bits; /* Number of bits for algorithm */ +}; + +/* Used to hold functions for SSLv2 or SSLv3/TLSv1 functions */ +struct ssl_method_st { + int version; + int (*ssl_new) (SSL *s); + void (*ssl_clear) (SSL *s); + void (*ssl_free) (SSL *s); + int (*ssl_accept) (SSL *s); + int (*ssl_connect) (SSL *s); + int (*ssl_read) (SSL *s, void *buf, int len); + int (*ssl_peek) (SSL *s, void *buf, int len); + int (*ssl_write) (SSL *s, const void *buf, int len); + int (*ssl_shutdown) (SSL *s); + int (*ssl_renegotiate) (SSL *s); + int (*ssl_renegotiate_check) (SSL *s); + long (*ssl_get_message) (SSL *s, int st1, int stn, int mt, long + max, int *ok); + int (*ssl_read_bytes) (SSL *s, int type, unsigned char *buf, int len, + int peek); + int (*ssl_write_bytes) (SSL *s, int type, const void *buf_, int len); + int (*ssl_dispatch_alert) (SSL *s); + long (*ssl_ctrl) (SSL *s, int cmd, long larg, void *parg); + long (*ssl_ctx_ctrl) (SSL_CTX *ctx, int cmd, long larg, void *parg); + const SSL_CIPHER *(*get_cipher_by_char) (const unsigned char *ptr); + int (*put_cipher_by_char) (const SSL_CIPHER *cipher, unsigned char *ptr); + int (*ssl_pending) (const SSL *s); + int (*num_ciphers) (void); + const SSL_CIPHER *(*get_cipher) (unsigned ncipher); + const struct ssl_method_st *(*get_ssl_method) (int version); + long (*get_timeout) (void); + struct ssl3_enc_method *ssl3_enc; /* Extra SSLv3/TLS stuff */ + int (*ssl_version) (void); + long (*ssl_callback_ctrl) (SSL *s, int cb_id, void (*fp) (void)); + long (*ssl_ctx_callback_ctrl) (SSL_CTX *s, int cb_id, void (*fp) (void)); +}; + +/*- + * Lets make this into an ASN.1 type structure as follows + * SSL_SESSION_ID ::= SEQUENCE { + * version INTEGER, -- structure version number + * SSLversion INTEGER, -- SSL version number + * Cipher OCTET STRING, -- the 3 byte cipher ID + * Session_ID OCTET STRING, -- the Session ID + * Master_key OCTET STRING, -- the master key + * KRB5_principal OCTET STRING -- optional Kerberos principal + * Key_Arg [ 0 ] IMPLICIT OCTET STRING, -- the optional Key argument + * Time [ 1 ] EXPLICIT INTEGER, -- optional Start Time + * Timeout [ 2 ] EXPLICIT INTEGER, -- optional Timeout ins seconds + * Peer [ 3 ] EXPLICIT X509, -- optional Peer Certificate + * Session_ID_context [ 4 ] EXPLICIT OCTET STRING, -- the Session ID context + * Verify_result [ 5 ] EXPLICIT INTEGER, -- X509_V_... code for `Peer' + * HostName [ 6 ] EXPLICIT OCTET STRING, -- optional HostName from servername TLS extension + * PSK_identity_hint [ 7 ] EXPLICIT OCTET STRING, -- optional PSK identity hint + * PSK_identity [ 8 ] EXPLICIT OCTET STRING, -- optional PSK identity + * Ticket_lifetime_hint [9] EXPLICIT INTEGER, -- server's lifetime hint for session ticket + * Ticket [10] EXPLICIT OCTET STRING, -- session ticket (clients only) + * Compression_meth [11] EXPLICIT OCTET STRING, -- optional compression method + * SRP_username [ 12 ] EXPLICIT OCTET STRING -- optional SRP username + * } + * Look in ssl/ssl_asn1.c for more details + * I'm using EXPLICIT tags so I can read the damn things using asn1parse :-). + */ +struct ssl_session_st { + int ssl_version; /* what ssl version session info is being + * kept in here? */ + /* only really used in SSLv2 */ + unsigned int key_arg_length; + unsigned char key_arg[SSL_MAX_KEY_ARG_LENGTH]; + int master_key_length; + unsigned char master_key[SSL_MAX_MASTER_KEY_LENGTH]; + /* session_id - valid? */ + unsigned int session_id_length; + unsigned char session_id[SSL_MAX_SSL_SESSION_ID_LENGTH]; + /* + * this is used to determine whether the session is being reused in the + * appropriate context. It is up to the application to set this, via + * SSL_new + */ + unsigned int sid_ctx_length; + unsigned char sid_ctx[SSL_MAX_SID_CTX_LENGTH]; +# ifndef OPENSSL_NO_KRB5 + unsigned int krb5_client_princ_len; + unsigned char krb5_client_princ[SSL_MAX_KRB5_PRINCIPAL_LENGTH]; +# endif /* OPENSSL_NO_KRB5 */ +# ifndef OPENSSL_NO_PSK + char *psk_identity_hint; + char *psk_identity; +# endif + /* + * Used to indicate that session resumption is not allowed. Applications + * can also set this bit for a new session via not_resumable_session_cb + * to disable session caching and tickets. + */ + int not_resumable; + /* The cert is the certificate used to establish this connection */ + struct sess_cert_st /* SESS_CERT */ *sess_cert; + /* + * This is the cert for the other end. On clients, it will be the same as + * sess_cert->peer_key->x509 (the latter is not enough as sess_cert is + * not retained in the external representation of sessions, see + * ssl_asn1.c). + */ + X509 *peer; + /* + * when app_verify_callback accepts a session where the peer's + * certificate is not ok, we must remember the error for session reuse: + */ + long verify_result; /* only for servers */ + int references; + long timeout; + long time; + unsigned int compress_meth; /* Need to lookup the method */ + const SSL_CIPHER *cipher; + unsigned long cipher_id; /* when ASN.1 loaded, this needs to be used + * to load the 'cipher' structure */ + STACK_OF(SSL_CIPHER) *ciphers; /* shared ciphers? */ + CRYPTO_EX_DATA ex_data; /* application specific data */ + /* + * These are used to make removal of session-ids more efficient and to + * implement a maximum cache size. + */ + struct ssl_session_st *prev, *next; +# ifndef OPENSSL_NO_TLSEXT + char *tlsext_hostname; +# ifndef OPENSSL_NO_EC + size_t tlsext_ecpointformatlist_length; + unsigned char *tlsext_ecpointformatlist; /* peer's list */ + size_t tlsext_ellipticcurvelist_length; + unsigned char *tlsext_ellipticcurvelist; /* peer's list */ +# endif /* OPENSSL_NO_EC */ + /* RFC4507 info */ + unsigned char *tlsext_tick; /* Session ticket */ + size_t tlsext_ticklen; /* Session ticket length */ + long tlsext_tick_lifetime_hint; /* Session lifetime hint in seconds */ +# endif +# ifndef OPENSSL_NO_SRP + char *srp_username; +# endif +}; + +# endif + +# define SSL_OP_MICROSOFT_SESS_ID_BUG 0x00000001L +# define SSL_OP_NETSCAPE_CHALLENGE_BUG 0x00000002L +/* Allow initial connection to servers that don't support RI */ +# define SSL_OP_LEGACY_SERVER_CONNECT 0x00000004L +# define SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG 0x00000008L +# define SSL_OP_TLSEXT_PADDING 0x00000010L +# define SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER 0x00000020L +# define SSL_OP_SAFARI_ECDHE_ECDSA_BUG 0x00000040L +# define SSL_OP_SSLEAY_080_CLIENT_DH_BUG 0x00000080L +# define SSL_OP_TLS_D5_BUG 0x00000100L +# define SSL_OP_TLS_BLOCK_PADDING_BUG 0x00000200L + +/* Hasn't done anything since OpenSSL 0.9.7h, retained for compatibility */ +# define SSL_OP_MSIE_SSLV2_RSA_PADDING 0x0 +/* Refers to ancient SSLREF and SSLv2, retained for compatibility */ +# define SSL_OP_SSLREF2_REUSE_CERT_TYPE_BUG 0x0 + +/* + * Disable SSL 3.0/TLS 1.0 CBC vulnerability workaround that was added in + * OpenSSL 0.9.6d. Usually (depending on the application protocol) the + * workaround is not needed. Unfortunately some broken SSL/TLS + * implementations cannot handle it at all, which is why we include it in + * SSL_OP_ALL. + */ +/* added in 0.9.6e */ +# define SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS 0x00000800L + +/* + * SSL_OP_ALL: various bug workarounds that should be rather harmless. This + * used to be 0x000FFFFFL before 0.9.7. + */ +# define SSL_OP_ALL 0x80000BFFL + +/* DTLS options */ +# define SSL_OP_NO_QUERY_MTU 0x00001000L +/* Turn on Cookie Exchange (on relevant for servers) */ +# define SSL_OP_COOKIE_EXCHANGE 0x00002000L +/* Don't use RFC4507 ticket extension */ +# define SSL_OP_NO_TICKET 0x00004000L +/* Use Cisco's "speshul" version of DTLS_BAD_VER (as client) */ +# define SSL_OP_CISCO_ANYCONNECT 0x00008000L + +/* As server, disallow session resumption on renegotiation */ +# define SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION 0x00010000L +/* Don't use compression even if supported */ +# define SSL_OP_NO_COMPRESSION 0x00020000L +/* Permit unsafe legacy renegotiation */ +# define SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION 0x00040000L +/* If set, always create a new key when using tmp_ecdh parameters */ +# define SSL_OP_SINGLE_ECDH_USE 0x00080000L +/* If set, always create a new key when using tmp_dh parameters */ +# define SSL_OP_SINGLE_DH_USE 0x00100000L +/* Does nothing: retained for compatibiity */ +# define SSL_OP_EPHEMERAL_RSA 0x0 +/* + * Set on servers to choose the cipher according to the server's preferences + */ +# define SSL_OP_CIPHER_SERVER_PREFERENCE 0x00400000L +/* + * If set, a server will allow a client to issue a SSLv3.0 version number as + * latest version supported in the premaster secret, even when TLSv1.0 + * (version 3.1) was announced in the client hello. Normally this is + * forbidden to prevent version rollback attacks. + */ +# define SSL_OP_TLS_ROLLBACK_BUG 0x00800000L + +# define SSL_OP_NO_SSLv2 0x01000000L +# define SSL_OP_NO_SSLv3 0x02000000L +# define SSL_OP_NO_TLSv1 0x04000000L +# define SSL_OP_NO_TLSv1_2 0x08000000L +# define SSL_OP_NO_TLSv1_1 0x10000000L + +# define SSL_OP_NO_DTLSv1 0x04000000L +# define SSL_OP_NO_DTLSv1_2 0x08000000L + +# define SSL_OP_NO_SSL_MASK (SSL_OP_NO_SSLv2|SSL_OP_NO_SSLv3|\ + SSL_OP_NO_TLSv1|SSL_OP_NO_TLSv1_1|SSL_OP_NO_TLSv1_2) + +/* + * These next two were never actually used for anything since SSLeay zap so + * we have some more flags. + */ +/* + * The next flag deliberately changes the ciphertest, this is a check for the + * PKCS#1 attack + */ +# define SSL_OP_PKCS1_CHECK_1 0x0 +# define SSL_OP_PKCS1_CHECK_2 0x0 + +# define SSL_OP_NETSCAPE_CA_DN_BUG 0x20000000L +# define SSL_OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUG 0x40000000L +/* + * Make server add server-hello extension from early version of cryptopro + * draft, when GOST ciphersuite is negotiated. Required for interoperability + * with CryptoPro CSP 3.x + */ +# define SSL_OP_CRYPTOPRO_TLSEXT_BUG 0x80000000L + +/* + * Allow SSL_write(..., n) to return r with 0 < r < n (i.e. report success + * when just a single record has been written): + */ +# define SSL_MODE_ENABLE_PARTIAL_WRITE 0x00000001L +/* + * Make it possible to retry SSL_write() with changed buffer location (buffer + * contents must stay the same!); this is not the default to avoid the + * misconception that non-blocking SSL_write() behaves like non-blocking + * write(): + */ +# define SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER 0x00000002L +/* + * Never bother the application with retries if the transport is blocking: + */ +# define SSL_MODE_AUTO_RETRY 0x00000004L +/* Don't attempt to automatically build certificate chain */ +# define SSL_MODE_NO_AUTO_CHAIN 0x00000008L +/* + * Save RAM by releasing read and write buffers when they're empty. (SSL3 and + * TLS only.) "Released" buffers are put onto a free-list in the context or + * just freed (depending on the context's setting for freelist_max_len). + */ +# define SSL_MODE_RELEASE_BUFFERS 0x00000010L +/* + * Send the current time in the Random fields of the ClientHello and + * ServerHello records for compatibility with hypothetical implementations + * that require it. + */ +# define SSL_MODE_SEND_CLIENTHELLO_TIME 0x00000020L +# define SSL_MODE_SEND_SERVERHELLO_TIME 0x00000040L +/* + * Send TLS_FALLBACK_SCSV in the ClientHello. To be set only by applications + * that reconnect with a downgraded protocol version; see + * draft-ietf-tls-downgrade-scsv-00 for details. DO NOT ENABLE THIS if your + * application attempts a normal handshake. Only use this in explicit + * fallback retries, following the guidance in + * draft-ietf-tls-downgrade-scsv-00. + */ +# define SSL_MODE_SEND_FALLBACK_SCSV 0x00000080L + +/* Cert related flags */ +/* + * Many implementations ignore some aspects of the TLS standards such as + * enforcing certifcate chain algorithms. When this is set we enforce them. + */ +# define SSL_CERT_FLAG_TLS_STRICT 0x00000001L + +/* Suite B modes, takes same values as certificate verify flags */ +# define SSL_CERT_FLAG_SUITEB_128_LOS_ONLY 0x10000 +/* Suite B 192 bit only mode */ +# define SSL_CERT_FLAG_SUITEB_192_LOS 0x20000 +/* Suite B 128 bit mode allowing 192 bit algorithms */ +# define SSL_CERT_FLAG_SUITEB_128_LOS 0x30000 + +/* Perform all sorts of protocol violations for testing purposes */ +# define SSL_CERT_FLAG_BROKEN_PROTOCOL 0x10000000 + +/* Flags for building certificate chains */ +/* Treat any existing certificates as untrusted CAs */ +# define SSL_BUILD_CHAIN_FLAG_UNTRUSTED 0x1 +/* Don't include root CA in chain */ +# define SSL_BUILD_CHAIN_FLAG_NO_ROOT 0x2 +/* Just check certificates already there */ +# define SSL_BUILD_CHAIN_FLAG_CHECK 0x4 +/* Ignore verification errors */ +# define SSL_BUILD_CHAIN_FLAG_IGNORE_ERROR 0x8 +/* Clear verification errors from queue */ +# define SSL_BUILD_CHAIN_FLAG_CLEAR_ERROR 0x10 + +/* Flags returned by SSL_check_chain */ +/* Certificate can be used with this session */ +# define CERT_PKEY_VALID 0x1 +/* Certificate can also be used for signing */ +# define CERT_PKEY_SIGN 0x2 +/* EE certificate signing algorithm OK */ +# define CERT_PKEY_EE_SIGNATURE 0x10 +/* CA signature algorithms OK */ +# define CERT_PKEY_CA_SIGNATURE 0x20 +/* EE certificate parameters OK */ +# define CERT_PKEY_EE_PARAM 0x40 +/* CA certificate parameters OK */ +# define CERT_PKEY_CA_PARAM 0x80 +/* Signing explicitly allowed as opposed to SHA1 fallback */ +# define CERT_PKEY_EXPLICIT_SIGN 0x100 +/* Client CA issuer names match (always set for server cert) */ +# define CERT_PKEY_ISSUER_NAME 0x200 +/* Cert type matches client types (always set for server cert) */ +# define CERT_PKEY_CERT_TYPE 0x400 +/* Cert chain suitable to Suite B */ +# define CERT_PKEY_SUITEB 0x800 + +# define SSL_CONF_FLAG_CMDLINE 0x1 +# define SSL_CONF_FLAG_FILE 0x2 +# define SSL_CONF_FLAG_CLIENT 0x4 +# define SSL_CONF_FLAG_SERVER 0x8 +# define SSL_CONF_FLAG_SHOW_ERRORS 0x10 +# define SSL_CONF_FLAG_CERTIFICATE 0x20 +/* Configuration value types */ +# define SSL_CONF_TYPE_UNKNOWN 0x0 +# define SSL_CONF_TYPE_STRING 0x1 +# define SSL_CONF_TYPE_FILE 0x2 +# define SSL_CONF_TYPE_DIR 0x3 + +/* + * Note: SSL[_CTX]_set_{options,mode} use |= op on the previous value, they + * cannot be used to clear bits. + */ + +# define SSL_CTX_set_options(ctx,op) \ + SSL_CTX_ctrl((ctx),SSL_CTRL_OPTIONS,(op),NULL) +# define SSL_CTX_clear_options(ctx,op) \ + SSL_CTX_ctrl((ctx),SSL_CTRL_CLEAR_OPTIONS,(op),NULL) +# define SSL_CTX_get_options(ctx) \ + SSL_CTX_ctrl((ctx),SSL_CTRL_OPTIONS,0,NULL) +# define SSL_set_options(ssl,op) \ + SSL_ctrl((ssl),SSL_CTRL_OPTIONS,(op),NULL) +# define SSL_clear_options(ssl,op) \ + SSL_ctrl((ssl),SSL_CTRL_CLEAR_OPTIONS,(op),NULL) +# define SSL_get_options(ssl) \ + SSL_ctrl((ssl),SSL_CTRL_OPTIONS,0,NULL) + +# define SSL_CTX_set_mode(ctx,op) \ + SSL_CTX_ctrl((ctx),SSL_CTRL_MODE,(op),NULL) +# define SSL_CTX_clear_mode(ctx,op) \ + SSL_CTX_ctrl((ctx),SSL_CTRL_CLEAR_MODE,(op),NULL) +# define SSL_CTX_get_mode(ctx) \ + SSL_CTX_ctrl((ctx),SSL_CTRL_MODE,0,NULL) +# define SSL_clear_mode(ssl,op) \ + SSL_ctrl((ssl),SSL_CTRL_CLEAR_MODE,(op),NULL) +# define SSL_set_mode(ssl,op) \ + SSL_ctrl((ssl),SSL_CTRL_MODE,(op),NULL) +# define SSL_get_mode(ssl) \ + SSL_ctrl((ssl),SSL_CTRL_MODE,0,NULL) +# define SSL_set_mtu(ssl, mtu) \ + SSL_ctrl((ssl),SSL_CTRL_SET_MTU,(mtu),NULL) +# define DTLS_set_link_mtu(ssl, mtu) \ + SSL_ctrl((ssl),DTLS_CTRL_SET_LINK_MTU,(mtu),NULL) +# define DTLS_get_link_min_mtu(ssl) \ + SSL_ctrl((ssl),DTLS_CTRL_GET_LINK_MIN_MTU,0,NULL) + +# define SSL_get_secure_renegotiation_support(ssl) \ + SSL_ctrl((ssl), SSL_CTRL_GET_RI_SUPPORT, 0, NULL) + +# ifndef OPENSSL_NO_HEARTBEATS +# define SSL_heartbeat(ssl) \ + SSL_ctrl((ssl),SSL_CTRL_TLS_EXT_SEND_HEARTBEAT,0,NULL) +# endif + +# define SSL_CTX_set_cert_flags(ctx,op) \ + SSL_CTX_ctrl((ctx),SSL_CTRL_CERT_FLAGS,(op),NULL) +# define SSL_set_cert_flags(s,op) \ + SSL_ctrl((s),SSL_CTRL_CERT_FLAGS,(op),NULL) +# define SSL_CTX_clear_cert_flags(ctx,op) \ + SSL_CTX_ctrl((ctx),SSL_CTRL_CLEAR_CERT_FLAGS,(op),NULL) +# define SSL_clear_cert_flags(s,op) \ + SSL_ctrl((s),SSL_CTRL_CLEAR_CERT_FLAGS,(op),NULL) + +void SSL_CTX_set_msg_callback(SSL_CTX *ctx, + void (*cb) (int write_p, int version, + int content_type, const void *buf, + size_t len, SSL *ssl, void *arg)); +void SSL_set_msg_callback(SSL *ssl, + void (*cb) (int write_p, int version, + int content_type, const void *buf, + size_t len, SSL *ssl, void *arg)); +# define SSL_CTX_set_msg_callback_arg(ctx, arg) SSL_CTX_ctrl((ctx), SSL_CTRL_SET_MSG_CALLBACK_ARG, 0, (arg)) +# define SSL_set_msg_callback_arg(ssl, arg) SSL_ctrl((ssl), SSL_CTRL_SET_MSG_CALLBACK_ARG, 0, (arg)) + +# ifndef OPENSSL_NO_SRP + +# ifndef OPENSSL_NO_SSL_INTERN + +typedef struct srp_ctx_st { + /* param for all the callbacks */ + void *SRP_cb_arg; + /* set client Hello login callback */ + int (*TLS_ext_srp_username_callback) (SSL *, int *, void *); + /* set SRP N/g param callback for verification */ + int (*SRP_verify_param_callback) (SSL *, void *); + /* set SRP client passwd callback */ + char *(*SRP_give_srp_client_pwd_callback) (SSL *, void *); + char *login; + BIGNUM *N, *g, *s, *B, *A; + BIGNUM *a, *b, *v; + char *info; + int strength; + unsigned long srp_Mask; +} SRP_CTX; + +# endif + +/* see tls_srp.c */ +int SSL_SRP_CTX_init(SSL *s); +int SSL_CTX_SRP_CTX_init(SSL_CTX *ctx); +int SSL_SRP_CTX_free(SSL *ctx); +int SSL_CTX_SRP_CTX_free(SSL_CTX *ctx); +int SSL_srp_server_param_with_username(SSL *s, int *ad); +int SRP_generate_server_master_secret(SSL *s, unsigned char *master_key); +int SRP_Calc_A_param(SSL *s); +int SRP_generate_client_master_secret(SSL *s, unsigned char *master_key); + +# endif + +# if defined(OPENSSL_SYS_MSDOS) && !defined(OPENSSL_SYS_WIN32) +# define SSL_MAX_CERT_LIST_DEFAULT 1024*30 + /* 30k max cert list :-) */ +# else +# define SSL_MAX_CERT_LIST_DEFAULT 1024*100 + /* 100k max cert list :-) */ +# endif + +# define SSL_SESSION_CACHE_MAX_SIZE_DEFAULT (1024*20) + +/* + * This callback type is used inside SSL_CTX, SSL, and in the functions that + * set them. It is used to override the generation of SSL/TLS session IDs in + * a server. Return value should be zero on an error, non-zero to proceed. + * Also, callbacks should themselves check if the id they generate is unique + * otherwise the SSL handshake will fail with an error - callbacks can do + * this using the 'ssl' value they're passed by; + * SSL_has_matching_session_id(ssl, id, *id_len) The length value passed in + * is set at the maximum size the session ID can be. In SSLv2 this is 16 + * bytes, whereas SSLv3/TLSv1 it is 32 bytes. The callback can alter this + * length to be less if desired, but under SSLv2 session IDs are supposed to + * be fixed at 16 bytes so the id will be padded after the callback returns + * in this case. It is also an error for the callback to set the size to + * zero. + */ +typedef int (*GEN_SESSION_CB) (const SSL *ssl, unsigned char *id, + unsigned int *id_len); + +typedef struct ssl_comp_st SSL_COMP; + +# ifndef OPENSSL_NO_SSL_INTERN + +struct ssl_comp_st { + int id; + const char *name; +# ifndef OPENSSL_NO_COMP + COMP_METHOD *method; +# else + char *method; +# endif +}; + +DECLARE_STACK_OF(SSL_COMP) +DECLARE_LHASH_OF(SSL_SESSION); + +struct ssl_ctx_st { + const SSL_METHOD *method; + STACK_OF(SSL_CIPHER) *cipher_list; + /* same as above but sorted for lookup */ + STACK_OF(SSL_CIPHER) *cipher_list_by_id; + struct x509_store_st /* X509_STORE */ *cert_store; + LHASH_OF(SSL_SESSION) *sessions; + /* + * Most session-ids that will be cached, default is + * SSL_SESSION_CACHE_MAX_SIZE_DEFAULT. 0 is unlimited. + */ + unsigned long session_cache_size; + struct ssl_session_st *session_cache_head; + struct ssl_session_st *session_cache_tail; + /* + * This can have one of 2 values, ored together, SSL_SESS_CACHE_CLIENT, + * SSL_SESS_CACHE_SERVER, Default is SSL_SESSION_CACHE_SERVER, which + * means only SSL_accept which cache SSL_SESSIONS. + */ + int session_cache_mode; + /* + * If timeout is not 0, it is the default timeout value set when + * SSL_new() is called. This has been put in to make life easier to set + * things up + */ + long session_timeout; + /* + * If this callback is not null, it will be called each time a session id + * is added to the cache. If this function returns 1, it means that the + * callback will do a SSL_SESSION_free() when it has finished using it. + * Otherwise, on 0, it means the callback has finished with it. If + * remove_session_cb is not null, it will be called when a session-id is + * removed from the cache. After the call, OpenSSL will + * SSL_SESSION_free() it. + */ + int (*new_session_cb) (struct ssl_st *ssl, SSL_SESSION *sess); + void (*remove_session_cb) (struct ssl_ctx_st *ctx, SSL_SESSION *sess); + SSL_SESSION *(*get_session_cb) (struct ssl_st *ssl, + unsigned char *data, int len, int *copy); + struct { + int sess_connect; /* SSL new conn - started */ + int sess_connect_renegotiate; /* SSL reneg - requested */ + int sess_connect_good; /* SSL new conne/reneg - finished */ + int sess_accept; /* SSL new accept - started */ + int sess_accept_renegotiate; /* SSL reneg - requested */ + int sess_accept_good; /* SSL accept/reneg - finished */ + int sess_miss; /* session lookup misses */ + int sess_timeout; /* reuse attempt on timeouted session */ + int sess_cache_full; /* session removed due to full cache */ + int sess_hit; /* session reuse actually done */ + int sess_cb_hit; /* session-id that was not in the cache was + * passed back via the callback. This + * indicates that the application is + * supplying session-id's from other + * processes - spooky :-) */ + } stats; + + int references; + + /* if defined, these override the X509_verify_cert() calls */ + int (*app_verify_callback) (X509_STORE_CTX *, void *); + void *app_verify_arg; + /* + * before OpenSSL 0.9.7, 'app_verify_arg' was ignored + * ('app_verify_callback' was called with just one argument) + */ + + /* Default password callback. */ + pem_password_cb *default_passwd_callback; + + /* Default password callback user data. */ + void *default_passwd_callback_userdata; + + /* get client cert callback */ + int (*client_cert_cb) (SSL *ssl, X509 **x509, EVP_PKEY **pkey); + + /* cookie generate callback */ + int (*app_gen_cookie_cb) (SSL *ssl, unsigned char *cookie, + unsigned int *cookie_len); + + /* verify cookie callback */ + int (*app_verify_cookie_cb) (SSL *ssl, unsigned char *cookie, + unsigned int cookie_len); + + CRYPTO_EX_DATA ex_data; + + const EVP_MD *rsa_md5; /* For SSLv2 - name is 'ssl2-md5' */ + const EVP_MD *md5; /* For SSLv3/TLSv1 'ssl3-md5' */ + const EVP_MD *sha1; /* For SSLv3/TLSv1 'ssl3->sha1' */ + + STACK_OF(X509) *extra_certs; + STACK_OF(SSL_COMP) *comp_methods; /* stack of SSL_COMP, SSLv3/TLSv1 */ + + /* Default values used when no per-SSL value is defined follow */ + + /* used if SSL's info_callback is NULL */ + void (*info_callback) (const SSL *ssl, int type, int val); + + /* what we put in client cert requests */ + STACK_OF(X509_NAME) *client_CA; + + /* + * Default values to use in SSL structures follow (these are copied by + * SSL_new) + */ + + unsigned long options; + unsigned long mode; + long max_cert_list; + + struct cert_st /* CERT */ *cert; + int read_ahead; + + /* callback that allows applications to peek at protocol messages */ + void (*msg_callback) (int write_p, int version, int content_type, + const void *buf, size_t len, SSL *ssl, void *arg); + void *msg_callback_arg; + + int verify_mode; + unsigned int sid_ctx_length; + unsigned char sid_ctx[SSL_MAX_SID_CTX_LENGTH]; + /* called 'verify_callback' in the SSL */ + int (*default_verify_callback) (int ok, X509_STORE_CTX *ctx); + + /* Default generate session ID callback. */ + GEN_SESSION_CB generate_session_id; + + X509_VERIFY_PARAM *param; + +# if 0 + int purpose; /* Purpose setting */ + int trust; /* Trust setting */ +# endif + + int quiet_shutdown; + + /* + * Maximum amount of data to send in one fragment. actual record size can + * be more than this due to padding and MAC overheads. + */ + unsigned int max_send_fragment; + +# ifndef OPENSSL_NO_ENGINE + /* + * Engine to pass requests for client certs to + */ + ENGINE *client_cert_engine; +# endif + +# ifndef OPENSSL_NO_TLSEXT + /* TLS extensions servername callback */ + int (*tlsext_servername_callback) (SSL *, int *, void *); + void *tlsext_servername_arg; + /* RFC 4507 session ticket keys */ + unsigned char tlsext_tick_key_name[16]; + unsigned char tlsext_tick_hmac_key[16]; + unsigned char tlsext_tick_aes_key[16]; + /* Callback to support customisation of ticket key setting */ + int (*tlsext_ticket_key_cb) (SSL *ssl, + unsigned char *name, unsigned char *iv, + EVP_CIPHER_CTX *ectx, + HMAC_CTX *hctx, int enc); + + /* certificate status request info */ + /* Callback for status request */ + int (*tlsext_status_cb) (SSL *ssl, void *arg); + void *tlsext_status_arg; + + /* draft-rescorla-tls-opaque-prf-input-00.txt information */ + int (*tlsext_opaque_prf_input_callback) (SSL *, void *peerinput, + size_t len, void *arg); + void *tlsext_opaque_prf_input_callback_arg; +# endif + +# ifndef OPENSSL_NO_PSK + char *psk_identity_hint; + unsigned int (*psk_client_callback) (SSL *ssl, const char *hint, + char *identity, + unsigned int max_identity_len, + unsigned char *psk, + unsigned int max_psk_len); + unsigned int (*psk_server_callback) (SSL *ssl, const char *identity, + unsigned char *psk, + unsigned int max_psk_len); +# endif + +# ifndef OPENSSL_NO_BUF_FREELISTS +# define SSL_MAX_BUF_FREELIST_LEN_DEFAULT 32 + unsigned int freelist_max_len; + struct ssl3_buf_freelist_st *wbuf_freelist; + struct ssl3_buf_freelist_st *rbuf_freelist; +# endif +# ifndef OPENSSL_NO_SRP + SRP_CTX srp_ctx; /* ctx for SRP authentication */ +# endif + +# ifndef OPENSSL_NO_TLSEXT + +# ifndef OPENSSL_NO_NEXTPROTONEG + /* Next protocol negotiation information */ + /* (for experimental NPN extension). */ + + /* + * For a server, this contains a callback function by which the set of + * advertised protocols can be provided. + */ + int (*next_protos_advertised_cb) (SSL *s, const unsigned char **buf, + unsigned int *len, void *arg); + void *next_protos_advertised_cb_arg; + /* + * For a client, this contains a callback function that selects the next + * protocol from the list provided by the server. + */ + int (*next_proto_select_cb) (SSL *s, unsigned char **out, + unsigned char *outlen, + const unsigned char *in, + unsigned int inlen, void *arg); + void *next_proto_select_cb_arg; +# endif + /* SRTP profiles we are willing to do from RFC 5764 */ + STACK_OF(SRTP_PROTECTION_PROFILE) *srtp_profiles; + + /* + * ALPN information (we are in the process of transitioning from NPN to + * ALPN.) + */ + + /*- + * For a server, this contains a callback function that allows the + * server to select the protocol for the connection. + * out: on successful return, this must point to the raw protocol + * name (without the length prefix). + * outlen: on successful return, this contains the length of |*out|. + * in: points to the client's list of supported protocols in + * wire-format. + * inlen: the length of |in|. + */ + int (*alpn_select_cb) (SSL *s, + const unsigned char **out, + unsigned char *outlen, + const unsigned char *in, + unsigned int inlen, void *arg); + void *alpn_select_cb_arg; + + /* + * For a client, this contains the list of supported protocols in wire + * format. + */ + unsigned char *alpn_client_proto_list; + unsigned alpn_client_proto_list_len; + +# ifndef OPENSSL_NO_EC + /* EC extension values inherited by SSL structure */ + size_t tlsext_ecpointformatlist_length; + unsigned char *tlsext_ecpointformatlist; + size_t tlsext_ellipticcurvelist_length; + unsigned char *tlsext_ellipticcurvelist; +# endif /* OPENSSL_NO_EC */ +# endif +}; + +# endif + +# define SSL_SESS_CACHE_OFF 0x0000 +# define SSL_SESS_CACHE_CLIENT 0x0001 +# define SSL_SESS_CACHE_SERVER 0x0002 +# define SSL_SESS_CACHE_BOTH (SSL_SESS_CACHE_CLIENT|SSL_SESS_CACHE_SERVER) +# define SSL_SESS_CACHE_NO_AUTO_CLEAR 0x0080 +/* enough comments already ... see SSL_CTX_set_session_cache_mode(3) */ +# define SSL_SESS_CACHE_NO_INTERNAL_LOOKUP 0x0100 +# define SSL_SESS_CACHE_NO_INTERNAL_STORE 0x0200 +# define SSL_SESS_CACHE_NO_INTERNAL \ + (SSL_SESS_CACHE_NO_INTERNAL_LOOKUP|SSL_SESS_CACHE_NO_INTERNAL_STORE) + +LHASH_OF(SSL_SESSION) *SSL_CTX_sessions(SSL_CTX *ctx); +# define SSL_CTX_sess_number(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_NUMBER,0,NULL) +# define SSL_CTX_sess_connect(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_CONNECT,0,NULL) +# define SSL_CTX_sess_connect_good(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_CONNECT_GOOD,0,NULL) +# define SSL_CTX_sess_connect_renegotiate(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_CONNECT_RENEGOTIATE,0,NULL) +# define SSL_CTX_sess_accept(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_ACCEPT,0,NULL) +# define SSL_CTX_sess_accept_renegotiate(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_ACCEPT_RENEGOTIATE,0,NULL) +# define SSL_CTX_sess_accept_good(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_ACCEPT_GOOD,0,NULL) +# define SSL_CTX_sess_hits(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_HIT,0,NULL) +# define SSL_CTX_sess_cb_hits(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_CB_HIT,0,NULL) +# define SSL_CTX_sess_misses(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_MISSES,0,NULL) +# define SSL_CTX_sess_timeouts(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_TIMEOUTS,0,NULL) +# define SSL_CTX_sess_cache_full(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_CACHE_FULL,0,NULL) + +void SSL_CTX_sess_set_new_cb(SSL_CTX *ctx, + int (*new_session_cb) (struct ssl_st *ssl, + SSL_SESSION *sess)); +int (*SSL_CTX_sess_get_new_cb(SSL_CTX *ctx)) (struct ssl_st *ssl, + SSL_SESSION *sess); +void SSL_CTX_sess_set_remove_cb(SSL_CTX *ctx, + void (*remove_session_cb) (struct ssl_ctx_st + *ctx, + SSL_SESSION + *sess)); +void (*SSL_CTX_sess_get_remove_cb(SSL_CTX *ctx)) (struct ssl_ctx_st *ctx, + SSL_SESSION *sess); +void SSL_CTX_sess_set_get_cb(SSL_CTX *ctx, + SSL_SESSION *(*get_session_cb) (struct ssl_st + *ssl, + unsigned char + *data, int len, + int *copy)); +SSL_SESSION *(*SSL_CTX_sess_get_get_cb(SSL_CTX *ctx)) (struct ssl_st *ssl, + unsigned char *Data, + int len, int *copy); +void SSL_CTX_set_info_callback(SSL_CTX *ctx, + void (*cb) (const SSL *ssl, int type, + int val)); +void (*SSL_CTX_get_info_callback(SSL_CTX *ctx)) (const SSL *ssl, int type, + int val); +void SSL_CTX_set_client_cert_cb(SSL_CTX *ctx, + int (*client_cert_cb) (SSL *ssl, X509 **x509, + EVP_PKEY **pkey)); +int (*SSL_CTX_get_client_cert_cb(SSL_CTX *ctx)) (SSL *ssl, X509 **x509, + EVP_PKEY **pkey); +# ifndef OPENSSL_NO_ENGINE +int SSL_CTX_set_client_cert_engine(SSL_CTX *ctx, ENGINE *e); +# endif +void SSL_CTX_set_cookie_generate_cb(SSL_CTX *ctx, + int (*app_gen_cookie_cb) (SSL *ssl, + unsigned char + *cookie, + unsigned int + *cookie_len)); +void SSL_CTX_set_cookie_verify_cb(SSL_CTX *ctx, + int (*app_verify_cookie_cb) (SSL *ssl, + unsigned char + *cookie, + unsigned int + cookie_len)); +# ifndef OPENSSL_NO_NEXTPROTONEG +void SSL_CTX_set_next_protos_advertised_cb(SSL_CTX *s, + int (*cb) (SSL *ssl, + const unsigned char + **out, + unsigned int *outlen, + void *arg), void *arg); +void SSL_CTX_set_next_proto_select_cb(SSL_CTX *s, + int (*cb) (SSL *ssl, + unsigned char **out, + unsigned char *outlen, + const unsigned char *in, + unsigned int inlen, + void *arg), void *arg); +void SSL_get0_next_proto_negotiated(const SSL *s, const unsigned char **data, + unsigned *len); +# endif + +# ifndef OPENSSL_NO_TLSEXT +int SSL_select_next_proto(unsigned char **out, unsigned char *outlen, + const unsigned char *in, unsigned int inlen, + const unsigned char *client, + unsigned int client_len); +# endif + +# define OPENSSL_NPN_UNSUPPORTED 0 +# define OPENSSL_NPN_NEGOTIATED 1 +# define OPENSSL_NPN_NO_OVERLAP 2 + +int SSL_CTX_set_alpn_protos(SSL_CTX *ctx, const unsigned char *protos, + unsigned protos_len); +int SSL_set_alpn_protos(SSL *ssl, const unsigned char *protos, + unsigned protos_len); +void SSL_CTX_set_alpn_select_cb(SSL_CTX *ctx, + int (*cb) (SSL *ssl, + const unsigned char **out, + unsigned char *outlen, + const unsigned char *in, + unsigned int inlen, + void *arg), void *arg); +void SSL_get0_alpn_selected(const SSL *ssl, const unsigned char **data, + unsigned *len); + +# ifndef OPENSSL_NO_PSK +/* + * the maximum length of the buffer given to callbacks containing the + * resulting identity/psk + */ +# define PSK_MAX_IDENTITY_LEN 128 +# define PSK_MAX_PSK_LEN 256 +void SSL_CTX_set_psk_client_callback(SSL_CTX *ctx, + unsigned int (*psk_client_callback) (SSL + *ssl, + const + char + *hint, + char + *identity, + unsigned + int + max_identity_len, + unsigned + char + *psk, + unsigned + int + max_psk_len)); +void SSL_set_psk_client_callback(SSL *ssl, + unsigned int (*psk_client_callback) (SSL + *ssl, + const + char + *hint, + char + *identity, + unsigned + int + max_identity_len, + unsigned + char + *psk, + unsigned + int + max_psk_len)); +void SSL_CTX_set_psk_server_callback(SSL_CTX *ctx, + unsigned int (*psk_server_callback) (SSL + *ssl, + const + char + *identity, + unsigned + char + *psk, + unsigned + int + max_psk_len)); +void SSL_set_psk_server_callback(SSL *ssl, + unsigned int (*psk_server_callback) (SSL + *ssl, + const + char + *identity, + unsigned + char + *psk, + unsigned + int + max_psk_len)); +int SSL_CTX_use_psk_identity_hint(SSL_CTX *ctx, const char *identity_hint); +int SSL_use_psk_identity_hint(SSL *s, const char *identity_hint); +const char *SSL_get_psk_identity_hint(const SSL *s); +const char *SSL_get_psk_identity(const SSL *s); +# endif + +# ifndef OPENSSL_NO_TLSEXT +/* Register callbacks to handle custom TLS Extensions for client or server. */ + +int SSL_CTX_add_client_custom_ext(SSL_CTX *ctx, unsigned int ext_type, + custom_ext_add_cb add_cb, + custom_ext_free_cb free_cb, + void *add_arg, + custom_ext_parse_cb parse_cb, + void *parse_arg); + +int SSL_CTX_add_server_custom_ext(SSL_CTX *ctx, unsigned int ext_type, + custom_ext_add_cb add_cb, + custom_ext_free_cb free_cb, + void *add_arg, + custom_ext_parse_cb parse_cb, + void *parse_arg); + +int SSL_extension_supported(unsigned int ext_type); + +# endif + +# define SSL_NOTHING 1 +# define SSL_WRITING 2 +# define SSL_READING 3 +# define SSL_X509_LOOKUP 4 + +/* These will only be used when doing non-blocking IO */ +# define SSL_want_nothing(s) (SSL_want(s) == SSL_NOTHING) +# define SSL_want_read(s) (SSL_want(s) == SSL_READING) +# define SSL_want_write(s) (SSL_want(s) == SSL_WRITING) +# define SSL_want_x509_lookup(s) (SSL_want(s) == SSL_X509_LOOKUP) + +# define SSL_MAC_FLAG_READ_MAC_STREAM 1 +# define SSL_MAC_FLAG_WRITE_MAC_STREAM 2 + +# ifndef OPENSSL_NO_SSL_INTERN + +struct ssl_st { + /* + * protocol version (one of SSL2_VERSION, SSL3_VERSION, TLS1_VERSION, + * DTLS1_VERSION) + */ + int version; + /* SSL_ST_CONNECT or SSL_ST_ACCEPT */ + int type; + /* SSLv3 */ + const SSL_METHOD *method; + /* + * There are 2 BIO's even though they are normally both the same. This + * is so data can be read and written to different handlers + */ +# ifndef OPENSSL_NO_BIO + /* used by SSL_read */ + BIO *rbio; + /* used by SSL_write */ + BIO *wbio; + /* used during session-id reuse to concatenate messages */ + BIO *bbio; +# else + /* used by SSL_read */ + char *rbio; + /* used by SSL_write */ + char *wbio; + char *bbio; +# endif + /* + * This holds a variable that indicates what we were doing when a 0 or -1 + * is returned. This is needed for non-blocking IO so we know what + * request needs re-doing when in SSL_accept or SSL_connect + */ + int rwstate; + /* true when we are actually in SSL_accept() or SSL_connect() */ + int in_handshake; + int (*handshake_func) (SSL *); + /* + * Imagine that here's a boolean member "init" that is switched as soon + * as SSL_set_{accept/connect}_state is called for the first time, so + * that "state" and "handshake_func" are properly initialized. But as + * handshake_func is == 0 until then, we use this test instead of an + * "init" member. + */ + /* are we the server side? - mostly used by SSL_clear */ + int server; + /* + * Generate a new session or reuse an old one. + * NB: For servers, the 'new' session may actually be a previously + * cached session or even the previous session unless + * SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION is set + */ + int new_session; + /* don't send shutdown packets */ + int quiet_shutdown; + /* we have shut things down, 0x01 sent, 0x02 for received */ + int shutdown; + /* where we are */ + int state; + /* where we are when reading */ + int rstate; + BUF_MEM *init_buf; /* buffer used during init */ + void *init_msg; /* pointer to handshake message body, set by + * ssl3_get_message() */ + int init_num; /* amount read/written */ + int init_off; /* amount read/written */ + /* used internally to point at a raw packet */ + unsigned char *packet; + unsigned int packet_length; + struct ssl2_state_st *s2; /* SSLv2 variables */ + struct ssl3_state_st *s3; /* SSLv3 variables */ + struct dtls1_state_st *d1; /* DTLSv1 variables */ + int read_ahead; /* Read as many input bytes as possible (for + * non-blocking reads) */ + /* callback that allows applications to peek at protocol messages */ + void (*msg_callback) (int write_p, int version, int content_type, + const void *buf, size_t len, SSL *ssl, void *arg); + void *msg_callback_arg; + int hit; /* reusing a previous session */ + X509_VERIFY_PARAM *param; +# if 0 + int purpose; /* Purpose setting */ + int trust; /* Trust setting */ +# endif + /* crypto */ + STACK_OF(SSL_CIPHER) *cipher_list; + STACK_OF(SSL_CIPHER) *cipher_list_by_id; + /* + * These are the ones being used, the ones in SSL_SESSION are the ones to + * be 'copied' into these ones + */ + int mac_flags; + EVP_CIPHER_CTX *enc_read_ctx; /* cryptographic state */ + EVP_MD_CTX *read_hash; /* used for mac generation */ +# ifndef OPENSSL_NO_COMP + COMP_CTX *expand; /* uncompress */ +# else + char *expand; +# endif + EVP_CIPHER_CTX *enc_write_ctx; /* cryptographic state */ + EVP_MD_CTX *write_hash; /* used for mac generation */ +# ifndef OPENSSL_NO_COMP + COMP_CTX *compress; /* compression */ +# else + char *compress; +# endif + /* session info */ + /* client cert? */ + /* This is used to hold the server certificate used */ + struct cert_st /* CERT */ *cert; + /* + * the session_id_context is used to ensure sessions are only reused in + * the appropriate context + */ + unsigned int sid_ctx_length; + unsigned char sid_ctx[SSL_MAX_SID_CTX_LENGTH]; + /* This can also be in the session once a session is established */ + SSL_SESSION *session; + /* Default generate session ID callback. */ + GEN_SESSION_CB generate_session_id; + /* Used in SSL2 and SSL3 */ + /* + * 0 don't care about verify failure. + * 1 fail if verify fails + */ + int verify_mode; + /* fail if callback returns 0 */ + int (*verify_callback) (int ok, X509_STORE_CTX *ctx); + /* optional informational callback */ + void (*info_callback) (const SSL *ssl, int type, int val); + /* error bytes to be written */ + int error; + /* actual code */ + int error_code; +# ifndef OPENSSL_NO_KRB5 + /* Kerberos 5 context */ + KSSL_CTX *kssl_ctx; +# endif /* OPENSSL_NO_KRB5 */ +# ifndef OPENSSL_NO_PSK + unsigned int (*psk_client_callback) (SSL *ssl, const char *hint, + char *identity, + unsigned int max_identity_len, + unsigned char *psk, + unsigned int max_psk_len); + unsigned int (*psk_server_callback) (SSL *ssl, const char *identity, + unsigned char *psk, + unsigned int max_psk_len); +# endif + SSL_CTX *ctx; + /* + * set this flag to 1 and a sleep(1) is put into all SSL_read() and + * SSL_write() calls, good for nbio debuging :-) + */ + int debug; + /* extra application data */ + long verify_result; + CRYPTO_EX_DATA ex_data; + /* for server side, keep the list of CA_dn we can use */ + STACK_OF(X509_NAME) *client_CA; + int references; + /* protocol behaviour */ + unsigned long options; + /* API behaviour */ + unsigned long mode; + long max_cert_list; + int first_packet; + /* what was passed, used for SSLv3/TLS rollback check */ + int client_version; + unsigned int max_send_fragment; +# ifndef OPENSSL_NO_TLSEXT + /* TLS extension debug callback */ + void (*tlsext_debug_cb) (SSL *s, int client_server, int type, + unsigned char *data, int len, void *arg); + void *tlsext_debug_arg; + char *tlsext_hostname; + /*- + * no further mod of servername + * 0 : call the servername extension callback. + * 1 : prepare 2, allow last ack just after in server callback. + * 2 : don't call servername callback, no ack in server hello + */ + int servername_done; + /* certificate status request info */ + /* Status type or -1 if no status type */ + int tlsext_status_type; + /* Expect OCSP CertificateStatus message */ + int tlsext_status_expected; + /* OCSP status request only */ + STACK_OF(OCSP_RESPID) *tlsext_ocsp_ids; + X509_EXTENSIONS *tlsext_ocsp_exts; + /* OCSP response received or to be sent */ + unsigned char *tlsext_ocsp_resp; + int tlsext_ocsp_resplen; + /* RFC4507 session ticket expected to be received or sent */ + int tlsext_ticket_expected; +# ifndef OPENSSL_NO_EC + size_t tlsext_ecpointformatlist_length; + /* our list */ + unsigned char *tlsext_ecpointformatlist; + size_t tlsext_ellipticcurvelist_length; + /* our list */ + unsigned char *tlsext_ellipticcurvelist; +# endif /* OPENSSL_NO_EC */ + /* + * draft-rescorla-tls-opaque-prf-input-00.txt information to be used for + * handshakes + */ + void *tlsext_opaque_prf_input; + size_t tlsext_opaque_prf_input_len; + /* TLS Session Ticket extension override */ + TLS_SESSION_TICKET_EXT *tlsext_session_ticket; + /* TLS Session Ticket extension callback */ + tls_session_ticket_ext_cb_fn tls_session_ticket_ext_cb; + void *tls_session_ticket_ext_cb_arg; + /* TLS pre-shared secret session resumption */ + tls_session_secret_cb_fn tls_session_secret_cb; + void *tls_session_secret_cb_arg; + SSL_CTX *initial_ctx; /* initial ctx, used to store sessions */ +# ifndef OPENSSL_NO_NEXTPROTONEG + /* + * Next protocol negotiation. For the client, this is the protocol that + * we sent in NextProtocol and is set when handling ServerHello + * extensions. For a server, this is the client's selected_protocol from + * NextProtocol and is set when handling the NextProtocol message, before + * the Finished message. + */ + unsigned char *next_proto_negotiated; + unsigned char next_proto_negotiated_len; +# endif +# define session_ctx initial_ctx + /* What we'll do */ + STACK_OF(SRTP_PROTECTION_PROFILE) *srtp_profiles; + /* What's been chosen */ + SRTP_PROTECTION_PROFILE *srtp_profile; + /*- + * Is use of the Heartbeat extension negotiated? + * 0: disabled + * 1: enabled + * 2: enabled, but not allowed to send Requests + */ + unsigned int tlsext_heartbeat; + /* Indicates if a HeartbeatRequest is in flight */ + unsigned int tlsext_hb_pending; + /* HeartbeatRequest sequence number */ + unsigned int tlsext_hb_seq; +# else +# define session_ctx ctx +# endif /* OPENSSL_NO_TLSEXT */ + /*- + * 1 if we are renegotiating. + * 2 if we are a server and are inside a handshake + * (i.e. not just sending a HelloRequest) + */ + int renegotiate; +# ifndef OPENSSL_NO_SRP + /* ctx for SRP authentication */ + SRP_CTX srp_ctx; +# endif +# ifndef OPENSSL_NO_TLSEXT + /* + * For a client, this contains the list of supported protocols in wire + * format. + */ + unsigned char *alpn_client_proto_list; + unsigned alpn_client_proto_list_len; +# endif /* OPENSSL_NO_TLSEXT */ +}; + +# endif + +#ifdef __cplusplus +} +#endif + +# include +# include +# include /* This is mostly sslv3 with a few tweaks */ +# include /* Datagram TLS */ +# include +# include /* Support for the use_srtp extension */ + +#ifdef __cplusplus +extern "C" { +#endif + +/* compatibility */ +# define SSL_set_app_data(s,arg) (SSL_set_ex_data(s,0,(char *)arg)) +# define SSL_get_app_data(s) (SSL_get_ex_data(s,0)) +# define SSL_SESSION_set_app_data(s,a) (SSL_SESSION_set_ex_data(s,0,(char *)a)) +# define SSL_SESSION_get_app_data(s) (SSL_SESSION_get_ex_data(s,0)) +# define SSL_CTX_get_app_data(ctx) (SSL_CTX_get_ex_data(ctx,0)) +# define SSL_CTX_set_app_data(ctx,arg) (SSL_CTX_set_ex_data(ctx,0,(char *)arg)) + +/* + * The following are the possible values for ssl->state are are used to + * indicate where we are up to in the SSL connection establishment. The + * macros that follow are about the only things you should need to use and + * even then, only when using non-blocking IO. It can also be useful to work + * out where you were when the connection failed + */ + +# define SSL_ST_CONNECT 0x1000 +# define SSL_ST_ACCEPT 0x2000 +# define SSL_ST_MASK 0x0FFF +# define SSL_ST_INIT (SSL_ST_CONNECT|SSL_ST_ACCEPT) +# define SSL_ST_BEFORE 0x4000 +# define SSL_ST_OK 0x03 +# define SSL_ST_RENEGOTIATE (0x04|SSL_ST_INIT) + +# define SSL_CB_LOOP 0x01 +# define SSL_CB_EXIT 0x02 +# define SSL_CB_READ 0x04 +# define SSL_CB_WRITE 0x08 +# define SSL_CB_ALERT 0x4000/* used in callback */ +# define SSL_CB_READ_ALERT (SSL_CB_ALERT|SSL_CB_READ) +# define SSL_CB_WRITE_ALERT (SSL_CB_ALERT|SSL_CB_WRITE) +# define SSL_CB_ACCEPT_LOOP (SSL_ST_ACCEPT|SSL_CB_LOOP) +# define SSL_CB_ACCEPT_EXIT (SSL_ST_ACCEPT|SSL_CB_EXIT) +# define SSL_CB_CONNECT_LOOP (SSL_ST_CONNECT|SSL_CB_LOOP) +# define SSL_CB_CONNECT_EXIT (SSL_ST_CONNECT|SSL_CB_EXIT) +# define SSL_CB_HANDSHAKE_START 0x10 +# define SSL_CB_HANDSHAKE_DONE 0x20 + +/* Is the SSL_connection established? */ +# define SSL_get_state(a) SSL_state(a) +# define SSL_is_init_finished(a) (SSL_state(a) == SSL_ST_OK) +# define SSL_in_init(a) (SSL_state(a)&SSL_ST_INIT) +# define SSL_in_before(a) (SSL_state(a)&SSL_ST_BEFORE) +# define SSL_in_connect_init(a) (SSL_state(a)&SSL_ST_CONNECT) +# define SSL_in_accept_init(a) (SSL_state(a)&SSL_ST_ACCEPT) + +/* + * The following 2 states are kept in ssl->rstate when reads fail, you should + * not need these + */ +# define SSL_ST_READ_HEADER 0xF0 +# define SSL_ST_READ_BODY 0xF1 +# define SSL_ST_READ_DONE 0xF2 + +/*- + * Obtain latest Finished message + * -- that we sent (SSL_get_finished) + * -- that we expected from peer (SSL_get_peer_finished). + * Returns length (0 == no Finished so far), copies up to 'count' bytes. + */ +size_t SSL_get_finished(const SSL *s, void *buf, size_t count); +size_t SSL_get_peer_finished(const SSL *s, void *buf, size_t count); + +/* + * use either SSL_VERIFY_NONE or SSL_VERIFY_PEER, the last 2 options are + * 'ored' with SSL_VERIFY_PEER if they are desired + */ +# define SSL_VERIFY_NONE 0x00 +# define SSL_VERIFY_PEER 0x01 +# define SSL_VERIFY_FAIL_IF_NO_PEER_CERT 0x02 +# define SSL_VERIFY_CLIENT_ONCE 0x04 + +# define OpenSSL_add_ssl_algorithms() SSL_library_init() +# define SSLeay_add_ssl_algorithms() SSL_library_init() + +/* this is for backward compatibility */ +# if 0 /* NEW_SSLEAY */ +# define SSL_CTX_set_default_verify(a,b,c) SSL_CTX_set_verify(a,b,c) +# define SSL_set_pref_cipher(c,n) SSL_set_cipher_list(c,n) +# define SSL_add_session(a,b) SSL_CTX_add_session((a),(b)) +# define SSL_remove_session(a,b) SSL_CTX_remove_session((a),(b)) +# define SSL_flush_sessions(a,b) SSL_CTX_flush_sessions((a),(b)) +# endif +/* More backward compatibility */ +# define SSL_get_cipher(s) \ + SSL_CIPHER_get_name(SSL_get_current_cipher(s)) +# define SSL_get_cipher_bits(s,np) \ + SSL_CIPHER_get_bits(SSL_get_current_cipher(s),np) +# define SSL_get_cipher_version(s) \ + SSL_CIPHER_get_version(SSL_get_current_cipher(s)) +# define SSL_get_cipher_name(s) \ + SSL_CIPHER_get_name(SSL_get_current_cipher(s)) +# define SSL_get_time(a) SSL_SESSION_get_time(a) +# define SSL_set_time(a,b) SSL_SESSION_set_time((a),(b)) +# define SSL_get_timeout(a) SSL_SESSION_get_timeout(a) +# define SSL_set_timeout(a,b) SSL_SESSION_set_timeout((a),(b)) + +# define d2i_SSL_SESSION_bio(bp,s_id) ASN1_d2i_bio_of(SSL_SESSION,SSL_SESSION_new,d2i_SSL_SESSION,bp,s_id) +# define i2d_SSL_SESSION_bio(bp,s_id) ASN1_i2d_bio_of(SSL_SESSION,i2d_SSL_SESSION,bp,s_id) + +DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION) +# define SSL_AD_REASON_OFFSET 1000/* offset to get SSL_R_... value + * from SSL_AD_... */ +/* These alert types are for SSLv3 and TLSv1 */ +# define SSL_AD_CLOSE_NOTIFY SSL3_AD_CLOSE_NOTIFY +/* fatal */ +# define SSL_AD_UNEXPECTED_MESSAGE SSL3_AD_UNEXPECTED_MESSAGE +/* fatal */ +# define SSL_AD_BAD_RECORD_MAC SSL3_AD_BAD_RECORD_MAC +# define SSL_AD_DECRYPTION_FAILED TLS1_AD_DECRYPTION_FAILED +# define SSL_AD_RECORD_OVERFLOW TLS1_AD_RECORD_OVERFLOW +/* fatal */ +# define SSL_AD_DECOMPRESSION_FAILURE SSL3_AD_DECOMPRESSION_FAILURE +/* fatal */ +# define SSL_AD_HANDSHAKE_FAILURE SSL3_AD_HANDSHAKE_FAILURE +/* Not for TLS */ +# define SSL_AD_NO_CERTIFICATE SSL3_AD_NO_CERTIFICATE +# define SSL_AD_BAD_CERTIFICATE SSL3_AD_BAD_CERTIFICATE +# define SSL_AD_UNSUPPORTED_CERTIFICATE SSL3_AD_UNSUPPORTED_CERTIFICATE +# define SSL_AD_CERTIFICATE_REVOKED SSL3_AD_CERTIFICATE_REVOKED +# define SSL_AD_CERTIFICATE_EXPIRED SSL3_AD_CERTIFICATE_EXPIRED +# define SSL_AD_CERTIFICATE_UNKNOWN SSL3_AD_CERTIFICATE_UNKNOWN +/* fatal */ +# define SSL_AD_ILLEGAL_PARAMETER SSL3_AD_ILLEGAL_PARAMETER +/* fatal */ +# define SSL_AD_UNKNOWN_CA TLS1_AD_UNKNOWN_CA +/* fatal */ +# define SSL_AD_ACCESS_DENIED TLS1_AD_ACCESS_DENIED +/* fatal */ +# define SSL_AD_DECODE_ERROR TLS1_AD_DECODE_ERROR +# define SSL_AD_DECRYPT_ERROR TLS1_AD_DECRYPT_ERROR +/* fatal */ +# define SSL_AD_EXPORT_RESTRICTION TLS1_AD_EXPORT_RESTRICTION +/* fatal */ +# define SSL_AD_PROTOCOL_VERSION TLS1_AD_PROTOCOL_VERSION +/* fatal */ +# define SSL_AD_INSUFFICIENT_SECURITY TLS1_AD_INSUFFICIENT_SECURITY +/* fatal */ +# define SSL_AD_INTERNAL_ERROR TLS1_AD_INTERNAL_ERROR +# define SSL_AD_USER_CANCELLED TLS1_AD_USER_CANCELLED +# define SSL_AD_NO_RENEGOTIATION TLS1_AD_NO_RENEGOTIATION +# define SSL_AD_UNSUPPORTED_EXTENSION TLS1_AD_UNSUPPORTED_EXTENSION +# define SSL_AD_CERTIFICATE_UNOBTAINABLE TLS1_AD_CERTIFICATE_UNOBTAINABLE +# define SSL_AD_UNRECOGNIZED_NAME TLS1_AD_UNRECOGNIZED_NAME +# define SSL_AD_BAD_CERTIFICATE_STATUS_RESPONSE TLS1_AD_BAD_CERTIFICATE_STATUS_RESPONSE +# define SSL_AD_BAD_CERTIFICATE_HASH_VALUE TLS1_AD_BAD_CERTIFICATE_HASH_VALUE +/* fatal */ +# define SSL_AD_UNKNOWN_PSK_IDENTITY TLS1_AD_UNKNOWN_PSK_IDENTITY +/* fatal */ +# define SSL_AD_INAPPROPRIATE_FALLBACK TLS1_AD_INAPPROPRIATE_FALLBACK +# define SSL_ERROR_NONE 0 +# define SSL_ERROR_SSL 1 +# define SSL_ERROR_WANT_READ 2 +# define SSL_ERROR_WANT_WRITE 3 +# define SSL_ERROR_WANT_X509_LOOKUP 4 +# define SSL_ERROR_SYSCALL 5/* look at error stack/return + * value/errno */ +# define SSL_ERROR_ZERO_RETURN 6 +# define SSL_ERROR_WANT_CONNECT 7 +# define SSL_ERROR_WANT_ACCEPT 8 +# define SSL_CTRL_NEED_TMP_RSA 1 +# define SSL_CTRL_SET_TMP_RSA 2 +# define SSL_CTRL_SET_TMP_DH 3 +# define SSL_CTRL_SET_TMP_ECDH 4 +# define SSL_CTRL_SET_TMP_RSA_CB 5 +# define SSL_CTRL_SET_TMP_DH_CB 6 +# define SSL_CTRL_SET_TMP_ECDH_CB 7 +# define SSL_CTRL_GET_SESSION_REUSED 8 +# define SSL_CTRL_GET_CLIENT_CERT_REQUEST 9 +# define SSL_CTRL_GET_NUM_RENEGOTIATIONS 10 +# define SSL_CTRL_CLEAR_NUM_RENEGOTIATIONS 11 +# define SSL_CTRL_GET_TOTAL_RENEGOTIATIONS 12 +# define SSL_CTRL_GET_FLAGS 13 +# define SSL_CTRL_EXTRA_CHAIN_CERT 14 +# define SSL_CTRL_SET_MSG_CALLBACK 15 +# define SSL_CTRL_SET_MSG_CALLBACK_ARG 16 +/* only applies to datagram connections */ +# define SSL_CTRL_SET_MTU 17 +/* Stats */ +# define SSL_CTRL_SESS_NUMBER 20 +# define SSL_CTRL_SESS_CONNECT 21 +# define SSL_CTRL_SESS_CONNECT_GOOD 22 +# define SSL_CTRL_SESS_CONNECT_RENEGOTIATE 23 +# define SSL_CTRL_SESS_ACCEPT 24 +# define SSL_CTRL_SESS_ACCEPT_GOOD 25 +# define SSL_CTRL_SESS_ACCEPT_RENEGOTIATE 26 +# define SSL_CTRL_SESS_HIT 27 +# define SSL_CTRL_SESS_CB_HIT 28 +# define SSL_CTRL_SESS_MISSES 29 +# define SSL_CTRL_SESS_TIMEOUTS 30 +# define SSL_CTRL_SESS_CACHE_FULL 31 +# define SSL_CTRL_OPTIONS 32 +# define SSL_CTRL_MODE 33 +# define SSL_CTRL_GET_READ_AHEAD 40 +# define SSL_CTRL_SET_READ_AHEAD 41 +# define SSL_CTRL_SET_SESS_CACHE_SIZE 42 +# define SSL_CTRL_GET_SESS_CACHE_SIZE 43 +# define SSL_CTRL_SET_SESS_CACHE_MODE 44 +# define SSL_CTRL_GET_SESS_CACHE_MODE 45 +# define SSL_CTRL_GET_MAX_CERT_LIST 50 +# define SSL_CTRL_SET_MAX_CERT_LIST 51 +# define SSL_CTRL_SET_MAX_SEND_FRAGMENT 52 +/* see tls1.h for macros based on these */ +# ifndef OPENSSL_NO_TLSEXT +# define SSL_CTRL_SET_TLSEXT_SERVERNAME_CB 53 +# define SSL_CTRL_SET_TLSEXT_SERVERNAME_ARG 54 +# define SSL_CTRL_SET_TLSEXT_HOSTNAME 55 +# define SSL_CTRL_SET_TLSEXT_DEBUG_CB 56 +# define SSL_CTRL_SET_TLSEXT_DEBUG_ARG 57 +# define SSL_CTRL_GET_TLSEXT_TICKET_KEYS 58 +# define SSL_CTRL_SET_TLSEXT_TICKET_KEYS 59 +# define SSL_CTRL_SET_TLSEXT_OPAQUE_PRF_INPUT 60 +# define SSL_CTRL_SET_TLSEXT_OPAQUE_PRF_INPUT_CB 61 +# define SSL_CTRL_SET_TLSEXT_OPAQUE_PRF_INPUT_CB_ARG 62 +# define SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB 63 +# define SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB_ARG 64 +# define SSL_CTRL_SET_TLSEXT_STATUS_REQ_TYPE 65 +# define SSL_CTRL_GET_TLSEXT_STATUS_REQ_EXTS 66 +# define SSL_CTRL_SET_TLSEXT_STATUS_REQ_EXTS 67 +# define SSL_CTRL_GET_TLSEXT_STATUS_REQ_IDS 68 +# define SSL_CTRL_SET_TLSEXT_STATUS_REQ_IDS 69 +# define SSL_CTRL_GET_TLSEXT_STATUS_REQ_OCSP_RESP 70 +# define SSL_CTRL_SET_TLSEXT_STATUS_REQ_OCSP_RESP 71 +# define SSL_CTRL_SET_TLSEXT_TICKET_KEY_CB 72 +# define SSL_CTRL_SET_TLS_EXT_SRP_USERNAME_CB 75 +# define SSL_CTRL_SET_SRP_VERIFY_PARAM_CB 76 +# define SSL_CTRL_SET_SRP_GIVE_CLIENT_PWD_CB 77 +# define SSL_CTRL_SET_SRP_ARG 78 +# define SSL_CTRL_SET_TLS_EXT_SRP_USERNAME 79 +# define SSL_CTRL_SET_TLS_EXT_SRP_STRENGTH 80 +# define SSL_CTRL_SET_TLS_EXT_SRP_PASSWORD 81 +# ifndef OPENSSL_NO_HEARTBEATS +# define SSL_CTRL_TLS_EXT_SEND_HEARTBEAT 85 +# define SSL_CTRL_GET_TLS_EXT_HEARTBEAT_PENDING 86 +# define SSL_CTRL_SET_TLS_EXT_HEARTBEAT_NO_REQUESTS 87 +# endif +# endif /* OPENSSL_NO_TLSEXT */ +# define DTLS_CTRL_GET_TIMEOUT 73 +# define DTLS_CTRL_HANDLE_TIMEOUT 74 +# define DTLS_CTRL_LISTEN 75 +# define SSL_CTRL_GET_RI_SUPPORT 76 +# define SSL_CTRL_CLEAR_OPTIONS 77 +# define SSL_CTRL_CLEAR_MODE 78 +# define SSL_CTRL_GET_EXTRA_CHAIN_CERTS 82 +# define SSL_CTRL_CLEAR_EXTRA_CHAIN_CERTS 83 +# define SSL_CTRL_CHAIN 88 +# define SSL_CTRL_CHAIN_CERT 89 +# define SSL_CTRL_GET_CURVES 90 +# define SSL_CTRL_SET_CURVES 91 +# define SSL_CTRL_SET_CURVES_LIST 92 +# define SSL_CTRL_GET_SHARED_CURVE 93 +# define SSL_CTRL_SET_ECDH_AUTO 94 +# define SSL_CTRL_SET_SIGALGS 97 +# define SSL_CTRL_SET_SIGALGS_LIST 98 +# define SSL_CTRL_CERT_FLAGS 99 +# define SSL_CTRL_CLEAR_CERT_FLAGS 100 +# define SSL_CTRL_SET_CLIENT_SIGALGS 101 +# define SSL_CTRL_SET_CLIENT_SIGALGS_LIST 102 +# define SSL_CTRL_GET_CLIENT_CERT_TYPES 103 +# define SSL_CTRL_SET_CLIENT_CERT_TYPES 104 +# define SSL_CTRL_BUILD_CERT_CHAIN 105 +# define SSL_CTRL_SET_VERIFY_CERT_STORE 106 +# define SSL_CTRL_SET_CHAIN_CERT_STORE 107 +# define SSL_CTRL_GET_PEER_SIGNATURE_NID 108 +# define SSL_CTRL_GET_SERVER_TMP_KEY 109 +# define SSL_CTRL_GET_RAW_CIPHERLIST 110 +# define SSL_CTRL_GET_EC_POINT_FORMATS 111 +# define SSL_CTRL_GET_CHAIN_CERTS 115 +# define SSL_CTRL_SELECT_CURRENT_CERT 116 +# define SSL_CTRL_SET_CURRENT_CERT 117 +# define SSL_CTRL_CHECK_PROTO_VERSION 119 +# define DTLS_CTRL_SET_LINK_MTU 120 +# define DTLS_CTRL_GET_LINK_MIN_MTU 121 +# define SSL_CERT_SET_FIRST 1 +# define SSL_CERT_SET_NEXT 2 +# define SSL_CERT_SET_SERVER 3 +# define DTLSv1_get_timeout(ssl, arg) \ + SSL_ctrl(ssl,DTLS_CTRL_GET_TIMEOUT,0, (void *)arg) +# define DTLSv1_handle_timeout(ssl) \ + SSL_ctrl(ssl,DTLS_CTRL_HANDLE_TIMEOUT,0, NULL) +# define DTLSv1_listen(ssl, peer) \ + SSL_ctrl(ssl,DTLS_CTRL_LISTEN,0, (void *)peer) +# define SSL_session_reused(ssl) \ + SSL_ctrl((ssl),SSL_CTRL_GET_SESSION_REUSED,0,NULL) +# define SSL_num_renegotiations(ssl) \ + SSL_ctrl((ssl),SSL_CTRL_GET_NUM_RENEGOTIATIONS,0,NULL) +# define SSL_clear_num_renegotiations(ssl) \ + SSL_ctrl((ssl),SSL_CTRL_CLEAR_NUM_RENEGOTIATIONS,0,NULL) +# define SSL_total_renegotiations(ssl) \ + SSL_ctrl((ssl),SSL_CTRL_GET_TOTAL_RENEGOTIATIONS,0,NULL) +# define SSL_CTX_need_tmp_RSA(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_NEED_TMP_RSA,0,NULL) +# define SSL_CTX_set_tmp_rsa(ctx,rsa) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_TMP_RSA,0,(char *)rsa) +# define SSL_CTX_set_tmp_dh(ctx,dh) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_TMP_DH,0,(char *)dh) +# define SSL_CTX_set_tmp_ecdh(ctx,ecdh) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_TMP_ECDH,0,(char *)ecdh) +# define SSL_need_tmp_RSA(ssl) \ + SSL_ctrl(ssl,SSL_CTRL_NEED_TMP_RSA,0,NULL) +# define SSL_set_tmp_rsa(ssl,rsa) \ + SSL_ctrl(ssl,SSL_CTRL_SET_TMP_RSA,0,(char *)rsa) +# define SSL_set_tmp_dh(ssl,dh) \ + SSL_ctrl(ssl,SSL_CTRL_SET_TMP_DH,0,(char *)dh) +# define SSL_set_tmp_ecdh(ssl,ecdh) \ + SSL_ctrl(ssl,SSL_CTRL_SET_TMP_ECDH,0,(char *)ecdh) +# define SSL_CTX_add_extra_chain_cert(ctx,x509) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_EXTRA_CHAIN_CERT,0,(char *)x509) +# define SSL_CTX_get_extra_chain_certs(ctx,px509) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_GET_EXTRA_CHAIN_CERTS,0,px509) +# define SSL_CTX_get_extra_chain_certs_only(ctx,px509) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_GET_EXTRA_CHAIN_CERTS,1,px509) +# define SSL_CTX_clear_extra_chain_certs(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_CLEAR_EXTRA_CHAIN_CERTS,0,NULL) +# define SSL_CTX_set0_chain(ctx,sk) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_CHAIN,0,(char *)sk) +# define SSL_CTX_set1_chain(ctx,sk) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_CHAIN,1,(char *)sk) +# define SSL_CTX_add0_chain_cert(ctx,x509) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_CHAIN_CERT,0,(char *)x509) +# define SSL_CTX_add1_chain_cert(ctx,x509) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_CHAIN_CERT,1,(char *)x509) +# define SSL_CTX_get0_chain_certs(ctx,px509) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_GET_CHAIN_CERTS,0,px509) +# define SSL_CTX_clear_chain_certs(ctx) \ + SSL_CTX_set0_chain(ctx,NULL) +# define SSL_CTX_build_cert_chain(ctx, flags) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_BUILD_CERT_CHAIN, flags, NULL) +# define SSL_CTX_select_current_cert(ctx,x509) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SELECT_CURRENT_CERT,0,(char *)x509) +# define SSL_CTX_set_current_cert(ctx, op) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_CURRENT_CERT, op, NULL) +# define SSL_CTX_set0_verify_cert_store(ctx,st) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_VERIFY_CERT_STORE,0,(char *)st) +# define SSL_CTX_set1_verify_cert_store(ctx,st) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_VERIFY_CERT_STORE,1,(char *)st) +# define SSL_CTX_set0_chain_cert_store(ctx,st) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_CHAIN_CERT_STORE,0,(char *)st) +# define SSL_CTX_set1_chain_cert_store(ctx,st) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_CHAIN_CERT_STORE,1,(char *)st) +# define SSL_set0_chain(ctx,sk) \ + SSL_ctrl(ctx,SSL_CTRL_CHAIN,0,(char *)sk) +# define SSL_set1_chain(ctx,sk) \ + SSL_ctrl(ctx,SSL_CTRL_CHAIN,1,(char *)sk) +# define SSL_add0_chain_cert(ctx,x509) \ + SSL_ctrl(ctx,SSL_CTRL_CHAIN_CERT,0,(char *)x509) +# define SSL_add1_chain_cert(ctx,x509) \ + SSL_ctrl(ctx,SSL_CTRL_CHAIN_CERT,1,(char *)x509) +# define SSL_get0_chain_certs(ctx,px509) \ + SSL_ctrl(ctx,SSL_CTRL_GET_CHAIN_CERTS,0,px509) +# define SSL_clear_chain_certs(ctx) \ + SSL_set0_chain(ctx,NULL) +# define SSL_build_cert_chain(s, flags) \ + SSL_ctrl(s,SSL_CTRL_BUILD_CERT_CHAIN, flags, NULL) +# define SSL_select_current_cert(ctx,x509) \ + SSL_ctrl(ctx,SSL_CTRL_SELECT_CURRENT_CERT,0,(char *)x509) +# define SSL_set_current_cert(ctx,op) \ + SSL_ctrl(ctx,SSL_CTRL_SET_CURRENT_CERT, op, NULL) +# define SSL_set0_verify_cert_store(s,st) \ + SSL_ctrl(s,SSL_CTRL_SET_VERIFY_CERT_STORE,0,(char *)st) +# define SSL_set1_verify_cert_store(s,st) \ + SSL_ctrl(s,SSL_CTRL_SET_VERIFY_CERT_STORE,1,(char *)st) +# define SSL_set0_chain_cert_store(s,st) \ + SSL_ctrl(s,SSL_CTRL_SET_CHAIN_CERT_STORE,0,(char *)st) +# define SSL_set1_chain_cert_store(s,st) \ + SSL_ctrl(s,SSL_CTRL_SET_CHAIN_CERT_STORE,1,(char *)st) +# define SSL_get1_curves(ctx, s) \ + SSL_ctrl(ctx,SSL_CTRL_GET_CURVES,0,(char *)s) +# define SSL_CTX_set1_curves(ctx, clist, clistlen) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_CURVES,clistlen,(char *)clist) +# define SSL_CTX_set1_curves_list(ctx, s) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_CURVES_LIST,0,(char *)s) +# define SSL_set1_curves(ctx, clist, clistlen) \ + SSL_ctrl(ctx,SSL_CTRL_SET_CURVES,clistlen,(char *)clist) +# define SSL_set1_curves_list(ctx, s) \ + SSL_ctrl(ctx,SSL_CTRL_SET_CURVES_LIST,0,(char *)s) +# define SSL_get_shared_curve(s, n) \ + SSL_ctrl(s,SSL_CTRL_GET_SHARED_CURVE,n,NULL) +# define SSL_CTX_set_ecdh_auto(ctx, onoff) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_ECDH_AUTO,onoff,NULL) +# define SSL_set_ecdh_auto(s, onoff) \ + SSL_ctrl(s,SSL_CTRL_SET_ECDH_AUTO,onoff,NULL) +# define SSL_CTX_set1_sigalgs(ctx, slist, slistlen) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_SIGALGS,slistlen,(int *)slist) +# define SSL_CTX_set1_sigalgs_list(ctx, s) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_SIGALGS_LIST,0,(char *)s) +# define SSL_set1_sigalgs(ctx, slist, slistlen) \ + SSL_ctrl(ctx,SSL_CTRL_SET_SIGALGS,clistlen,(int *)slist) +# define SSL_set1_sigalgs_list(ctx, s) \ + SSL_ctrl(ctx,SSL_CTRL_SET_SIGALGS_LIST,0,(char *)s) +# define SSL_CTX_set1_client_sigalgs(ctx, slist, slistlen) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_CLIENT_SIGALGS,slistlen,(int *)slist) +# define SSL_CTX_set1_client_sigalgs_list(ctx, s) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_CLIENT_SIGALGS_LIST,0,(char *)s) +# define SSL_set1_client_sigalgs(ctx, slist, slistlen) \ + SSL_ctrl(ctx,SSL_CTRL_SET_CLIENT_SIGALGS,clistlen,(int *)slist) +# define SSL_set1_client_sigalgs_list(ctx, s) \ + SSL_ctrl(ctx,SSL_CTRL_SET_CLIENT_SIGALGS_LIST,0,(char *)s) +# define SSL_get0_certificate_types(s, clist) \ + SSL_ctrl(s, SSL_CTRL_GET_CLIENT_CERT_TYPES, 0, (char *)clist) +# define SSL_CTX_set1_client_certificate_types(ctx, clist, clistlen) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_CLIENT_CERT_TYPES,clistlen,(char *)clist) +# define SSL_set1_client_certificate_types(s, clist, clistlen) \ + SSL_ctrl(s,SSL_CTRL_SET_CLIENT_CERT_TYPES,clistlen,(char *)clist) +# define SSL_get_peer_signature_nid(s, pn) \ + SSL_ctrl(s,SSL_CTRL_GET_PEER_SIGNATURE_NID,0,pn) +# define SSL_get_server_tmp_key(s, pk) \ + SSL_ctrl(s,SSL_CTRL_GET_SERVER_TMP_KEY,0,pk) +# define SSL_get0_raw_cipherlist(s, plst) \ + SSL_ctrl(s,SSL_CTRL_GET_RAW_CIPHERLIST,0,(char *)plst) +# define SSL_get0_ec_point_formats(s, plst) \ + SSL_ctrl(s,SSL_CTRL_GET_EC_POINT_FORMATS,0,(char *)plst) +# ifndef OPENSSL_NO_BIO +BIO_METHOD *BIO_f_ssl(void); +BIO *BIO_new_ssl(SSL_CTX *ctx, int client); +BIO *BIO_new_ssl_connect(SSL_CTX *ctx); +BIO *BIO_new_buffer_ssl_connect(SSL_CTX *ctx); +int BIO_ssl_copy_session_id(BIO *to, BIO *from); +void BIO_ssl_shutdown(BIO *ssl_bio); + +# endif + +int SSL_CTX_set_cipher_list(SSL_CTX *, const char *str); +SSL_CTX *SSL_CTX_new(const SSL_METHOD *meth); +void SSL_CTX_free(SSL_CTX *); +long SSL_CTX_set_timeout(SSL_CTX *ctx, long t); +long SSL_CTX_get_timeout(const SSL_CTX *ctx); +X509_STORE *SSL_CTX_get_cert_store(const SSL_CTX *); +void SSL_CTX_set_cert_store(SSL_CTX *, X509_STORE *); +int SSL_want(const SSL *s); +int SSL_clear(SSL *s); + +void SSL_CTX_flush_sessions(SSL_CTX *ctx, long tm); + +const SSL_CIPHER *SSL_get_current_cipher(const SSL *s); +int SSL_CIPHER_get_bits(const SSL_CIPHER *c, int *alg_bits); +char *SSL_CIPHER_get_version(const SSL_CIPHER *c); +const char *SSL_CIPHER_get_name(const SSL_CIPHER *c); +unsigned long SSL_CIPHER_get_id(const SSL_CIPHER *c); + +int SSL_get_fd(const SSL *s); +int SSL_get_rfd(const SSL *s); +int SSL_get_wfd(const SSL *s); +const char *SSL_get_cipher_list(const SSL *s, int n); +char *SSL_get_shared_ciphers(const SSL *s, char *buf, int len); +int SSL_get_read_ahead(const SSL *s); +int SSL_pending(const SSL *s); +# ifndef OPENSSL_NO_SOCK +int SSL_set_fd(SSL *s, int fd); +int SSL_set_rfd(SSL *s, int fd); +int SSL_set_wfd(SSL *s, int fd); +# endif +# ifndef OPENSSL_NO_BIO +void SSL_set_bio(SSL *s, BIO *rbio, BIO *wbio); +BIO *SSL_get_rbio(const SSL *s); +BIO *SSL_get_wbio(const SSL *s); +# endif +int SSL_set_cipher_list(SSL *s, const char *str); +void SSL_set_read_ahead(SSL *s, int yes); +int SSL_get_verify_mode(const SSL *s); +int SSL_get_verify_depth(const SSL *s); +int (*SSL_get_verify_callback(const SSL *s)) (int, X509_STORE_CTX *); +void SSL_set_verify(SSL *s, int mode, + int (*callback) (int ok, X509_STORE_CTX *ctx)); +void SSL_set_verify_depth(SSL *s, int depth); +void SSL_set_cert_cb(SSL *s, int (*cb) (SSL *ssl, void *arg), void *arg); +# ifndef OPENSSL_NO_RSA +int SSL_use_RSAPrivateKey(SSL *ssl, RSA *rsa); +# endif +int SSL_use_RSAPrivateKey_ASN1(SSL *ssl, unsigned char *d, long len); +int SSL_use_PrivateKey(SSL *ssl, EVP_PKEY *pkey); +int SSL_use_PrivateKey_ASN1(int pk, SSL *ssl, const unsigned char *d, + long len); +int SSL_use_certificate(SSL *ssl, X509 *x); +int SSL_use_certificate_ASN1(SSL *ssl, const unsigned char *d, int len); + +# ifndef OPENSSL_NO_TLSEXT +/* Set serverinfo data for the current active cert. */ +int SSL_CTX_use_serverinfo(SSL_CTX *ctx, const unsigned char *serverinfo, + size_t serverinfo_length); +# ifndef OPENSSL_NO_STDIO +int SSL_CTX_use_serverinfo_file(SSL_CTX *ctx, const char *file); +# endif /* NO_STDIO */ + +# endif + +# ifndef OPENSSL_NO_STDIO +int SSL_use_RSAPrivateKey_file(SSL *ssl, const char *file, int type); +int SSL_use_PrivateKey_file(SSL *ssl, const char *file, int type); +int SSL_use_certificate_file(SSL *ssl, const char *file, int type); +int SSL_CTX_use_RSAPrivateKey_file(SSL_CTX *ctx, const char *file, int type); +int SSL_CTX_use_PrivateKey_file(SSL_CTX *ctx, const char *file, int type); +int SSL_CTX_use_certificate_file(SSL_CTX *ctx, const char *file, int type); +/* PEM type */ +int SSL_CTX_use_certificate_chain_file(SSL_CTX *ctx, const char *file); +STACK_OF(X509_NAME) *SSL_load_client_CA_file(const char *file); +int SSL_add_file_cert_subjects_to_stack(STACK_OF(X509_NAME) *stackCAs, + const char *file); +# ifndef OPENSSL_SYS_VMS +/* XXXXX: Better scheme needed! [was: #ifndef MAC_OS_pre_X] */ +# ifndef OPENSSL_SYS_MACINTOSH_CLASSIC +int SSL_add_dir_cert_subjects_to_stack(STACK_OF(X509_NAME) *stackCAs, + const char *dir); +# endif +# endif + +# endif + +void SSL_load_error_strings(void); +const char *SSL_state_string(const SSL *s); +const char *SSL_rstate_string(const SSL *s); +const char *SSL_state_string_long(const SSL *s); +const char *SSL_rstate_string_long(const SSL *s); +long SSL_SESSION_get_time(const SSL_SESSION *s); +long SSL_SESSION_set_time(SSL_SESSION *s, long t); +long SSL_SESSION_get_timeout(const SSL_SESSION *s); +long SSL_SESSION_set_timeout(SSL_SESSION *s, long t); +void SSL_copy_session_id(SSL *to, const SSL *from); +X509 *SSL_SESSION_get0_peer(SSL_SESSION *s); +int SSL_SESSION_set1_id_context(SSL_SESSION *s, const unsigned char *sid_ctx, + unsigned int sid_ctx_len); + +SSL_SESSION *SSL_SESSION_new(void); +const unsigned char *SSL_SESSION_get_id(const SSL_SESSION *s, + unsigned int *len); +unsigned int SSL_SESSION_get_compress_id(const SSL_SESSION *s); +# ifndef OPENSSL_NO_FP_API +int SSL_SESSION_print_fp(FILE *fp, const SSL_SESSION *ses); +# endif +# ifndef OPENSSL_NO_BIO +int SSL_SESSION_print(BIO *fp, const SSL_SESSION *ses); +# endif +void SSL_SESSION_free(SSL_SESSION *ses); +int i2d_SSL_SESSION(SSL_SESSION *in, unsigned char **pp); +int SSL_set_session(SSL *to, SSL_SESSION *session); +int SSL_CTX_add_session(SSL_CTX *s, SSL_SESSION *c); +int SSL_CTX_remove_session(SSL_CTX *, SSL_SESSION *c); +int SSL_CTX_set_generate_session_id(SSL_CTX *, GEN_SESSION_CB); +int SSL_set_generate_session_id(SSL *, GEN_SESSION_CB); +int SSL_has_matching_session_id(const SSL *ssl, const unsigned char *id, + unsigned int id_len); +SSL_SESSION *d2i_SSL_SESSION(SSL_SESSION **a, const unsigned char **pp, + long length); + +# ifdef HEADER_X509_H +X509 *SSL_get_peer_certificate(const SSL *s); +# endif + +STACK_OF(X509) *SSL_get_peer_cert_chain(const SSL *s); + +int SSL_CTX_get_verify_mode(const SSL_CTX *ctx); +int SSL_CTX_get_verify_depth(const SSL_CTX *ctx); +int (*SSL_CTX_get_verify_callback(const SSL_CTX *ctx)) (int, + X509_STORE_CTX *); +void SSL_CTX_set_verify(SSL_CTX *ctx, int mode, + int (*callback) (int, X509_STORE_CTX *)); +void SSL_CTX_set_verify_depth(SSL_CTX *ctx, int depth); +void SSL_CTX_set_cert_verify_callback(SSL_CTX *ctx, + int (*cb) (X509_STORE_CTX *, void *), + void *arg); +void SSL_CTX_set_cert_cb(SSL_CTX *c, int (*cb) (SSL *ssl, void *arg), + void *arg); +# ifndef OPENSSL_NO_RSA +int SSL_CTX_use_RSAPrivateKey(SSL_CTX *ctx, RSA *rsa); +# endif +int SSL_CTX_use_RSAPrivateKey_ASN1(SSL_CTX *ctx, const unsigned char *d, + long len); +int SSL_CTX_use_PrivateKey(SSL_CTX *ctx, EVP_PKEY *pkey); +int SSL_CTX_use_PrivateKey_ASN1(int pk, SSL_CTX *ctx, + const unsigned char *d, long len); +int SSL_CTX_use_certificate(SSL_CTX *ctx, X509 *x); +int SSL_CTX_use_certificate_ASN1(SSL_CTX *ctx, int len, + const unsigned char *d); + +void SSL_CTX_set_default_passwd_cb(SSL_CTX *ctx, pem_password_cb *cb); +void SSL_CTX_set_default_passwd_cb_userdata(SSL_CTX *ctx, void *u); + +int SSL_CTX_check_private_key(const SSL_CTX *ctx); +int SSL_check_private_key(const SSL *ctx); + +int SSL_CTX_set_session_id_context(SSL_CTX *ctx, const unsigned char *sid_ctx, + unsigned int sid_ctx_len); + +SSL *SSL_new(SSL_CTX *ctx); +int SSL_set_session_id_context(SSL *ssl, const unsigned char *sid_ctx, + unsigned int sid_ctx_len); + +int SSL_CTX_set_purpose(SSL_CTX *s, int purpose); +int SSL_set_purpose(SSL *s, int purpose); +int SSL_CTX_set_trust(SSL_CTX *s, int trust); +int SSL_set_trust(SSL *s, int trust); + +int SSL_CTX_set1_param(SSL_CTX *ctx, X509_VERIFY_PARAM *vpm); +int SSL_set1_param(SSL *ssl, X509_VERIFY_PARAM *vpm); + +X509_VERIFY_PARAM *SSL_CTX_get0_param(SSL_CTX *ctx); +X509_VERIFY_PARAM *SSL_get0_param(SSL *ssl); + +# ifndef OPENSSL_NO_SRP +int SSL_CTX_set_srp_username(SSL_CTX *ctx, char *name); +int SSL_CTX_set_srp_password(SSL_CTX *ctx, char *password); +int SSL_CTX_set_srp_strength(SSL_CTX *ctx, int strength); +int SSL_CTX_set_srp_client_pwd_callback(SSL_CTX *ctx, + char *(*cb) (SSL *, void *)); +int SSL_CTX_set_srp_verify_param_callback(SSL_CTX *ctx, + int (*cb) (SSL *, void *)); +int SSL_CTX_set_srp_username_callback(SSL_CTX *ctx, + int (*cb) (SSL *, int *, void *)); +int SSL_CTX_set_srp_cb_arg(SSL_CTX *ctx, void *arg); + +int SSL_set_srp_server_param(SSL *s, const BIGNUM *N, const BIGNUM *g, + BIGNUM *sa, BIGNUM *v, char *info); +int SSL_set_srp_server_param_pw(SSL *s, const char *user, const char *pass, + const char *grp); + +BIGNUM *SSL_get_srp_g(SSL *s); +BIGNUM *SSL_get_srp_N(SSL *s); + +char *SSL_get_srp_username(SSL *s); +char *SSL_get_srp_userinfo(SSL *s); +# endif + +void SSL_certs_clear(SSL *s); +void SSL_free(SSL *ssl); +int SSL_accept(SSL *ssl); +int SSL_connect(SSL *ssl); +int SSL_read(SSL *ssl, void *buf, int num); +int SSL_peek(SSL *ssl, void *buf, int num); +int SSL_write(SSL *ssl, const void *buf, int num); +long SSL_ctrl(SSL *ssl, int cmd, long larg, void *parg); +long SSL_callback_ctrl(SSL *, int, void (*)(void)); +long SSL_CTX_ctrl(SSL_CTX *ctx, int cmd, long larg, void *parg); +long SSL_CTX_callback_ctrl(SSL_CTX *, int, void (*)(void)); + +int SSL_get_error(const SSL *s, int ret_code); +const char *SSL_get_version(const SSL *s); + +/* This sets the 'default' SSL version that SSL_new() will create */ +int SSL_CTX_set_ssl_version(SSL_CTX *ctx, const SSL_METHOD *meth); + +# ifndef OPENSSL_NO_SSL2 +const SSL_METHOD *SSLv2_method(void); /* SSLv2 */ +const SSL_METHOD *SSLv2_server_method(void); /* SSLv2 */ +const SSL_METHOD *SSLv2_client_method(void); /* SSLv2 */ +# endif + +# ifndef OPENSSL_NO_SSL3_METHOD +const SSL_METHOD *SSLv3_method(void); /* SSLv3 */ +const SSL_METHOD *SSLv3_server_method(void); /* SSLv3 */ +const SSL_METHOD *SSLv3_client_method(void); /* SSLv3 */ +# endif + +const SSL_METHOD *SSLv23_method(void); /* Negotiate highest available SSL/TLS + * version */ +const SSL_METHOD *SSLv23_server_method(void); /* Negotiate highest available + * SSL/TLS version */ +const SSL_METHOD *SSLv23_client_method(void); /* Negotiate highest available + * SSL/TLS version */ + +const SSL_METHOD *TLSv1_method(void); /* TLSv1.0 */ +const SSL_METHOD *TLSv1_server_method(void); /* TLSv1.0 */ +const SSL_METHOD *TLSv1_client_method(void); /* TLSv1.0 */ + +const SSL_METHOD *TLSv1_1_method(void); /* TLSv1.1 */ +const SSL_METHOD *TLSv1_1_server_method(void); /* TLSv1.1 */ +const SSL_METHOD *TLSv1_1_client_method(void); /* TLSv1.1 */ + +const SSL_METHOD *TLSv1_2_method(void); /* TLSv1.2 */ +const SSL_METHOD *TLSv1_2_server_method(void); /* TLSv1.2 */ +const SSL_METHOD *TLSv1_2_client_method(void); /* TLSv1.2 */ + +const SSL_METHOD *DTLSv1_method(void); /* DTLSv1.0 */ +const SSL_METHOD *DTLSv1_server_method(void); /* DTLSv1.0 */ +const SSL_METHOD *DTLSv1_client_method(void); /* DTLSv1.0 */ + +const SSL_METHOD *DTLSv1_2_method(void); /* DTLSv1.2 */ +const SSL_METHOD *DTLSv1_2_server_method(void); /* DTLSv1.2 */ +const SSL_METHOD *DTLSv1_2_client_method(void); /* DTLSv1.2 */ + +const SSL_METHOD *DTLS_method(void); /* DTLS 1.0 and 1.2 */ +const SSL_METHOD *DTLS_server_method(void); /* DTLS 1.0 and 1.2 */ +const SSL_METHOD *DTLS_client_method(void); /* DTLS 1.0 and 1.2 */ + +STACK_OF(SSL_CIPHER) *SSL_get_ciphers(const SSL *s); + +int SSL_do_handshake(SSL *s); +int SSL_renegotiate(SSL *s); +int SSL_renegotiate_abbreviated(SSL *s); +int SSL_renegotiate_pending(SSL *s); +int SSL_shutdown(SSL *s); + +const SSL_METHOD *SSL_CTX_get_ssl_method(SSL_CTX *ctx); +const SSL_METHOD *SSL_get_ssl_method(SSL *s); +int SSL_set_ssl_method(SSL *s, const SSL_METHOD *method); +const char *SSL_alert_type_string_long(int value); +const char *SSL_alert_type_string(int value); +const char *SSL_alert_desc_string_long(int value); +const char *SSL_alert_desc_string(int value); + +void SSL_set_client_CA_list(SSL *s, STACK_OF(X509_NAME) *name_list); +void SSL_CTX_set_client_CA_list(SSL_CTX *ctx, STACK_OF(X509_NAME) *name_list); +STACK_OF(X509_NAME) *SSL_get_client_CA_list(const SSL *s); +STACK_OF(X509_NAME) *SSL_CTX_get_client_CA_list(const SSL_CTX *s); +int SSL_add_client_CA(SSL *ssl, X509 *x); +int SSL_CTX_add_client_CA(SSL_CTX *ctx, X509 *x); + +void SSL_set_connect_state(SSL *s); +void SSL_set_accept_state(SSL *s); + +long SSL_get_default_timeout(const SSL *s); + +int SSL_library_init(void); + +char *SSL_CIPHER_description(const SSL_CIPHER *, char *buf, int size); +STACK_OF(X509_NAME) *SSL_dup_CA_list(STACK_OF(X509_NAME) *sk); + +SSL *SSL_dup(SSL *ssl); + +X509 *SSL_get_certificate(const SSL *ssl); +/* + * EVP_PKEY + */ struct evp_pkey_st *SSL_get_privatekey(const SSL *ssl); + +X509 *SSL_CTX_get0_certificate(const SSL_CTX *ctx); +EVP_PKEY *SSL_CTX_get0_privatekey(const SSL_CTX *ctx); + +void SSL_CTX_set_quiet_shutdown(SSL_CTX *ctx, int mode); +int SSL_CTX_get_quiet_shutdown(const SSL_CTX *ctx); +void SSL_set_quiet_shutdown(SSL *ssl, int mode); +int SSL_get_quiet_shutdown(const SSL *ssl); +void SSL_set_shutdown(SSL *ssl, int mode); +int SSL_get_shutdown(const SSL *ssl); +int SSL_version(const SSL *ssl); +int SSL_CTX_set_default_verify_paths(SSL_CTX *ctx); +int SSL_CTX_load_verify_locations(SSL_CTX *ctx, const char *CAfile, + const char *CApath); +# define SSL_get0_session SSL_get_session/* just peek at pointer */ +SSL_SESSION *SSL_get_session(const SSL *ssl); +SSL_SESSION *SSL_get1_session(SSL *ssl); /* obtain a reference count */ +SSL_CTX *SSL_get_SSL_CTX(const SSL *ssl); +SSL_CTX *SSL_set_SSL_CTX(SSL *ssl, SSL_CTX *ctx); +void SSL_set_info_callback(SSL *ssl, + void (*cb) (const SSL *ssl, int type, int val)); +void (*SSL_get_info_callback(const SSL *ssl)) (const SSL *ssl, int type, + int val); +int SSL_state(const SSL *ssl); +void SSL_set_state(SSL *ssl, int state); + +void SSL_set_verify_result(SSL *ssl, long v); +long SSL_get_verify_result(const SSL *ssl); + +int SSL_set_ex_data(SSL *ssl, int idx, void *data); +void *SSL_get_ex_data(const SSL *ssl, int idx); +int SSL_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new *new_func, + CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func); + +int SSL_SESSION_set_ex_data(SSL_SESSION *ss, int idx, void *data); +void *SSL_SESSION_get_ex_data(const SSL_SESSION *ss, int idx); +int SSL_SESSION_get_ex_new_index(long argl, void *argp, + CRYPTO_EX_new *new_func, + CRYPTO_EX_dup *dup_func, + CRYPTO_EX_free *free_func); + +int SSL_CTX_set_ex_data(SSL_CTX *ssl, int idx, void *data); +void *SSL_CTX_get_ex_data(const SSL_CTX *ssl, int idx); +int SSL_CTX_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new *new_func, + CRYPTO_EX_dup *dup_func, + CRYPTO_EX_free *free_func); + +int SSL_get_ex_data_X509_STORE_CTX_idx(void); + +# define SSL_CTX_sess_set_cache_size(ctx,t) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_SESS_CACHE_SIZE,t,NULL) +# define SSL_CTX_sess_get_cache_size(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_GET_SESS_CACHE_SIZE,0,NULL) +# define SSL_CTX_set_session_cache_mode(ctx,m) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_SESS_CACHE_MODE,m,NULL) +# define SSL_CTX_get_session_cache_mode(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_GET_SESS_CACHE_MODE,0,NULL) + +# define SSL_CTX_get_default_read_ahead(ctx) SSL_CTX_get_read_ahead(ctx) +# define SSL_CTX_set_default_read_ahead(ctx,m) SSL_CTX_set_read_ahead(ctx,m) +# define SSL_CTX_get_read_ahead(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_GET_READ_AHEAD,0,NULL) +# define SSL_CTX_set_read_ahead(ctx,m) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_READ_AHEAD,m,NULL) +# define SSL_CTX_get_max_cert_list(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_GET_MAX_CERT_LIST,0,NULL) +# define SSL_CTX_set_max_cert_list(ctx,m) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_MAX_CERT_LIST,m,NULL) +# define SSL_get_max_cert_list(ssl) \ + SSL_ctrl(ssl,SSL_CTRL_GET_MAX_CERT_LIST,0,NULL) +# define SSL_set_max_cert_list(ssl,m) \ + SSL_ctrl(ssl,SSL_CTRL_SET_MAX_CERT_LIST,m,NULL) + +# define SSL_CTX_set_max_send_fragment(ctx,m) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_MAX_SEND_FRAGMENT,m,NULL) +# define SSL_set_max_send_fragment(ssl,m) \ + SSL_ctrl(ssl,SSL_CTRL_SET_MAX_SEND_FRAGMENT,m,NULL) + + /* NB: the keylength is only applicable when is_export is true */ +# ifndef OPENSSL_NO_RSA +void SSL_CTX_set_tmp_rsa_callback(SSL_CTX *ctx, + RSA *(*cb) (SSL *ssl, int is_export, + int keylength)); + +void SSL_set_tmp_rsa_callback(SSL *ssl, + RSA *(*cb) (SSL *ssl, int is_export, + int keylength)); +# endif +# ifndef OPENSSL_NO_DH +void SSL_CTX_set_tmp_dh_callback(SSL_CTX *ctx, + DH *(*dh) (SSL *ssl, int is_export, + int keylength)); +void SSL_set_tmp_dh_callback(SSL *ssl, + DH *(*dh) (SSL *ssl, int is_export, + int keylength)); +# endif +# ifndef OPENSSL_NO_ECDH +void SSL_CTX_set_tmp_ecdh_callback(SSL_CTX *ctx, + EC_KEY *(*ecdh) (SSL *ssl, int is_export, + int keylength)); +void SSL_set_tmp_ecdh_callback(SSL *ssl, + EC_KEY *(*ecdh) (SSL *ssl, int is_export, + int keylength)); +# endif + +# ifndef OPENSSL_NO_COMP +const COMP_METHOD *SSL_get_current_compression(SSL *s); +const COMP_METHOD *SSL_get_current_expansion(SSL *s); +const char *SSL_COMP_get_name(const COMP_METHOD *comp); +STACK_OF(SSL_COMP) *SSL_COMP_get_compression_methods(void); +STACK_OF(SSL_COMP) *SSL_COMP_set0_compression_methods(STACK_OF(SSL_COMP) + *meths); +void SSL_COMP_free_compression_methods(void); +int SSL_COMP_add_compression_method(int id, COMP_METHOD *cm); +# else +const void *SSL_get_current_compression(SSL *s); +const void *SSL_get_current_expansion(SSL *s); +const char *SSL_COMP_get_name(const void *comp); +void *SSL_COMP_get_compression_methods(void); +int SSL_COMP_add_compression_method(int id, void *cm); +# endif + +const SSL_CIPHER *SSL_CIPHER_find(SSL *ssl, const unsigned char *ptr); + +/* TLS extensions functions */ +int SSL_set_session_ticket_ext(SSL *s, void *ext_data, int ext_len); + +int SSL_set_session_ticket_ext_cb(SSL *s, tls_session_ticket_ext_cb_fn cb, + void *arg); + +/* Pre-shared secret session resumption functions */ +int SSL_set_session_secret_cb(SSL *s, + tls_session_secret_cb_fn tls_session_secret_cb, + void *arg); + +void SSL_set_debug(SSL *s, int debug); +int SSL_cache_hit(SSL *s); +int SSL_is_server(SSL *s); + +SSL_CONF_CTX *SSL_CONF_CTX_new(void); +int SSL_CONF_CTX_finish(SSL_CONF_CTX *cctx); +void SSL_CONF_CTX_free(SSL_CONF_CTX *cctx); +unsigned int SSL_CONF_CTX_set_flags(SSL_CONF_CTX *cctx, unsigned int flags); +unsigned int SSL_CONF_CTX_clear_flags(SSL_CONF_CTX *cctx, unsigned int flags); +int SSL_CONF_CTX_set1_prefix(SSL_CONF_CTX *cctx, const char *pre); + +void SSL_CONF_CTX_set_ssl(SSL_CONF_CTX *cctx, SSL *ssl); +void SSL_CONF_CTX_set_ssl_ctx(SSL_CONF_CTX *cctx, SSL_CTX *ctx); + +int SSL_CONF_cmd(SSL_CONF_CTX *cctx, const char *cmd, const char *value); +int SSL_CONF_cmd_argv(SSL_CONF_CTX *cctx, int *pargc, char ***pargv); +int SSL_CONF_cmd_value_type(SSL_CONF_CTX *cctx, const char *cmd); + +# ifndef OPENSSL_NO_SSL_TRACE +void SSL_trace(int write_p, int version, int content_type, + const void *buf, size_t len, SSL *ssl, void *arg); +const char *SSL_CIPHER_standard_name(const SSL_CIPHER *c); +# endif + +# ifndef OPENSSL_NO_UNIT_TEST +const struct openssl_ssl_test_functions *SSL_test_functions(void); +# endif + +/* BEGIN ERROR CODES */ +/* + * The following lines are auto generated by the script mkerr.pl. Any changes + * made after this point may be overwritten when the script is next run. + */ +void ERR_load_SSL_strings(void); + +/* Error codes for the SSL functions. */ + +/* Function codes. */ +# define SSL_F_CHECK_SUITEB_CIPHER_LIST 331 +# define SSL_F_CLIENT_CERTIFICATE 100 +# define SSL_F_CLIENT_FINISHED 167 +# define SSL_F_CLIENT_HELLO 101 +# define SSL_F_CLIENT_MASTER_KEY 102 +# define SSL_F_D2I_SSL_SESSION 103 +# define SSL_F_DO_DTLS1_WRITE 245 +# define SSL_F_DO_SSL3_WRITE 104 +# define SSL_F_DTLS1_ACCEPT 246 +# define SSL_F_DTLS1_ADD_CERT_TO_BUF 295 +# define SSL_F_DTLS1_BUFFER_RECORD 247 +# define SSL_F_DTLS1_CHECK_TIMEOUT_NUM 316 +# define SSL_F_DTLS1_CLIENT_HELLO 248 +# define SSL_F_DTLS1_CONNECT 249 +# define SSL_F_DTLS1_ENC 250 +# define SSL_F_DTLS1_GET_HELLO_VERIFY 251 +# define SSL_F_DTLS1_GET_MESSAGE 252 +# define SSL_F_DTLS1_GET_MESSAGE_FRAGMENT 253 +# define SSL_F_DTLS1_GET_RECORD 254 +# define SSL_F_DTLS1_HANDLE_TIMEOUT 297 +# define SSL_F_DTLS1_HEARTBEAT 305 +# define SSL_F_DTLS1_OUTPUT_CERT_CHAIN 255 +# define SSL_F_DTLS1_PREPROCESS_FRAGMENT 288 +# define SSL_F_DTLS1_PROCESS_OUT_OF_SEQ_MESSAGE 256 +# define SSL_F_DTLS1_PROCESS_RECORD 257 +# define SSL_F_DTLS1_READ_BYTES 258 +# define SSL_F_DTLS1_READ_FAILED 259 +# define SSL_F_DTLS1_SEND_CERTIFICATE_REQUEST 260 +# define SSL_F_DTLS1_SEND_CLIENT_CERTIFICATE 261 +# define SSL_F_DTLS1_SEND_CLIENT_KEY_EXCHANGE 262 +# define SSL_F_DTLS1_SEND_CLIENT_VERIFY 263 +# define SSL_F_DTLS1_SEND_HELLO_VERIFY_REQUEST 264 +# define SSL_F_DTLS1_SEND_SERVER_CERTIFICATE 265 +# define SSL_F_DTLS1_SEND_SERVER_HELLO 266 +# define SSL_F_DTLS1_SEND_SERVER_KEY_EXCHANGE 267 +# define SSL_F_DTLS1_WRITE_APP_DATA_BYTES 268 +# define SSL_F_GET_CLIENT_FINISHED 105 +# define SSL_F_GET_CLIENT_HELLO 106 +# define SSL_F_GET_CLIENT_MASTER_KEY 107 +# define SSL_F_GET_SERVER_FINISHED 108 +# define SSL_F_GET_SERVER_HELLO 109 +# define SSL_F_GET_SERVER_VERIFY 110 +# define SSL_F_I2D_SSL_SESSION 111 +# define SSL_F_READ_N 112 +# define SSL_F_REQUEST_CERTIFICATE 113 +# define SSL_F_SERVER_FINISH 239 +# define SSL_F_SERVER_HELLO 114 +# define SSL_F_SERVER_VERIFY 240 +# define SSL_F_SSL23_ACCEPT 115 +# define SSL_F_SSL23_CLIENT_HELLO 116 +# define SSL_F_SSL23_CONNECT 117 +# define SSL_F_SSL23_GET_CLIENT_HELLO 118 +# define SSL_F_SSL23_GET_SERVER_HELLO 119 +# define SSL_F_SSL23_PEEK 237 +# define SSL_F_SSL23_READ 120 +# define SSL_F_SSL23_WRITE 121 +# define SSL_F_SSL2_ACCEPT 122 +# define SSL_F_SSL2_CONNECT 123 +# define SSL_F_SSL2_ENC_INIT 124 +# define SSL_F_SSL2_GENERATE_KEY_MATERIAL 241 +# define SSL_F_SSL2_PEEK 234 +# define SSL_F_SSL2_READ 125 +# define SSL_F_SSL2_READ_INTERNAL 236 +# define SSL_F_SSL2_SET_CERTIFICATE 126 +# define SSL_F_SSL2_WRITE 127 +# define SSL_F_SSL3_ACCEPT 128 +# define SSL_F_SSL3_ADD_CERT_TO_BUF 296 +# define SSL_F_SSL3_CALLBACK_CTRL 233 +# define SSL_F_SSL3_CHANGE_CIPHER_STATE 129 +# define SSL_F_SSL3_CHECK_CERT_AND_ALGORITHM 130 +# define SSL_F_SSL3_CHECK_CLIENT_HELLO 304 +# define SSL_F_SSL3_CLIENT_HELLO 131 +# define SSL_F_SSL3_CONNECT 132 +# define SSL_F_SSL3_CTRL 213 +# define SSL_F_SSL3_CTX_CTRL 133 +# define SSL_F_SSL3_DIGEST_CACHED_RECORDS 293 +# define SSL_F_SSL3_DO_CHANGE_CIPHER_SPEC 292 +# define SSL_F_SSL3_ENC 134 +# define SSL_F_SSL3_GENERATE_KEY_BLOCK 238 +# define SSL_F_SSL3_GET_CERTIFICATE_REQUEST 135 +# define SSL_F_SSL3_GET_CERT_STATUS 289 +# define SSL_F_SSL3_GET_CERT_VERIFY 136 +# define SSL_F_SSL3_GET_CLIENT_CERTIFICATE 137 +# define SSL_F_SSL3_GET_CLIENT_HELLO 138 +# define SSL_F_SSL3_GET_CLIENT_KEY_EXCHANGE 139 +# define SSL_F_SSL3_GET_FINISHED 140 +# define SSL_F_SSL3_GET_KEY_EXCHANGE 141 +# define SSL_F_SSL3_GET_MESSAGE 142 +# define SSL_F_SSL3_GET_NEW_SESSION_TICKET 283 +# define SSL_F_SSL3_GET_NEXT_PROTO 306 +# define SSL_F_SSL3_GET_RECORD 143 +# define SSL_F_SSL3_GET_SERVER_CERTIFICATE 144 +# define SSL_F_SSL3_GET_SERVER_DONE 145 +# define SSL_F_SSL3_GET_SERVER_HELLO 146 +# define SSL_F_SSL3_HANDSHAKE_MAC 285 +# define SSL_F_SSL3_NEW_SESSION_TICKET 287 +# define SSL_F_SSL3_OUTPUT_CERT_CHAIN 147 +# define SSL_F_SSL3_PEEK 235 +# define SSL_F_SSL3_READ_BYTES 148 +# define SSL_F_SSL3_READ_N 149 +# define SSL_F_SSL3_SEND_CERTIFICATE_REQUEST 150 +# define SSL_F_SSL3_SEND_CLIENT_CERTIFICATE 151 +# define SSL_F_SSL3_SEND_CLIENT_KEY_EXCHANGE 152 +# define SSL_F_SSL3_SEND_CLIENT_VERIFY 153 +# define SSL_F_SSL3_SEND_SERVER_CERTIFICATE 154 +# define SSL_F_SSL3_SEND_SERVER_HELLO 242 +# define SSL_F_SSL3_SEND_SERVER_KEY_EXCHANGE 155 +# define SSL_F_SSL3_SETUP_KEY_BLOCK 157 +# define SSL_F_SSL3_SETUP_READ_BUFFER 156 +# define SSL_F_SSL3_SETUP_WRITE_BUFFER 291 +# define SSL_F_SSL3_WRITE_BYTES 158 +# define SSL_F_SSL3_WRITE_PENDING 159 +# define SSL_F_SSL_ADD_CERT_CHAIN 318 +# define SSL_F_SSL_ADD_CERT_TO_BUF 319 +# define SSL_F_SSL_ADD_CLIENTHELLO_RENEGOTIATE_EXT 298 +# define SSL_F_SSL_ADD_CLIENTHELLO_TLSEXT 277 +# define SSL_F_SSL_ADD_CLIENTHELLO_USE_SRTP_EXT 307 +# define SSL_F_SSL_ADD_DIR_CERT_SUBJECTS_TO_STACK 215 +# define SSL_F_SSL_ADD_FILE_CERT_SUBJECTS_TO_STACK 216 +# define SSL_F_SSL_ADD_SERVERHELLO_RENEGOTIATE_EXT 299 +# define SSL_F_SSL_ADD_SERVERHELLO_TLSEXT 278 +# define SSL_F_SSL_ADD_SERVERHELLO_USE_SRTP_EXT 308 +# define SSL_F_SSL_BAD_METHOD 160 +# define SSL_F_SSL_BUILD_CERT_CHAIN 332 +# define SSL_F_SSL_BYTES_TO_CIPHER_LIST 161 +# define SSL_F_SSL_CERT_DUP 221 +# define SSL_F_SSL_CERT_INST 222 +# define SSL_F_SSL_CERT_INSTANTIATE 214 +# define SSL_F_SSL_CERT_NEW 162 +# define SSL_F_SSL_CHECK_PRIVATE_KEY 163 +# define SSL_F_SSL_CHECK_SERVERHELLO_TLSEXT 280 +# define SSL_F_SSL_CHECK_SRVR_ECC_CERT_AND_ALG 279 +# define SSL_F_SSL_CIPHER_PROCESS_RULESTR 230 +# define SSL_F_SSL_CIPHER_STRENGTH_SORT 231 +# define SSL_F_SSL_CLEAR 164 +# define SSL_F_SSL_COMP_ADD_COMPRESSION_METHOD 165 +# define SSL_F_SSL_CONF_CMD 334 +# define SSL_F_SSL_CREATE_CIPHER_LIST 166 +# define SSL_F_SSL_CTRL 232 +# define SSL_F_SSL_CTX_CHECK_PRIVATE_KEY 168 +# define SSL_F_SSL_CTX_MAKE_PROFILES 309 +# define SSL_F_SSL_CTX_NEW 169 +# define SSL_F_SSL_CTX_SET_CIPHER_LIST 269 +# define SSL_F_SSL_CTX_SET_CLIENT_CERT_ENGINE 290 +# define SSL_F_SSL_CTX_SET_PURPOSE 226 +# define SSL_F_SSL_CTX_SET_SESSION_ID_CONTEXT 219 +# define SSL_F_SSL_CTX_SET_SSL_VERSION 170 +# define SSL_F_SSL_CTX_SET_TRUST 229 +# define SSL_F_SSL_CTX_USE_CERTIFICATE 171 +# define SSL_F_SSL_CTX_USE_CERTIFICATE_ASN1 172 +# define SSL_F_SSL_CTX_USE_CERTIFICATE_CHAIN_FILE 220 +# define SSL_F_SSL_CTX_USE_CERTIFICATE_FILE 173 +# define SSL_F_SSL_CTX_USE_PRIVATEKEY 174 +# define SSL_F_SSL_CTX_USE_PRIVATEKEY_ASN1 175 +# define SSL_F_SSL_CTX_USE_PRIVATEKEY_FILE 176 +# define SSL_F_SSL_CTX_USE_PSK_IDENTITY_HINT 272 +# define SSL_F_SSL_CTX_USE_RSAPRIVATEKEY 177 +# define SSL_F_SSL_CTX_USE_RSAPRIVATEKEY_ASN1 178 +# define SSL_F_SSL_CTX_USE_RSAPRIVATEKEY_FILE 179 +# define SSL_F_SSL_CTX_USE_SERVERINFO 336 +# define SSL_F_SSL_CTX_USE_SERVERINFO_FILE 337 +# define SSL_F_SSL_DO_HANDSHAKE 180 +# define SSL_F_SSL_GET_NEW_SESSION 181 +# define SSL_F_SSL_GET_PREV_SESSION 217 +# define SSL_F_SSL_GET_SERVER_CERT_INDEX 322 +# define SSL_F_SSL_GET_SERVER_SEND_CERT 182 +# define SSL_F_SSL_GET_SERVER_SEND_PKEY 317 +# define SSL_F_SSL_GET_SIGN_PKEY 183 +# define SSL_F_SSL_INIT_WBIO_BUFFER 184 +# define SSL_F_SSL_LOAD_CLIENT_CA_FILE 185 +# define SSL_F_SSL_NEW 186 +# define SSL_F_SSL_PARSE_CLIENTHELLO_RENEGOTIATE_EXT 300 +# define SSL_F_SSL_PARSE_CLIENTHELLO_TLSEXT 302 +# define SSL_F_SSL_PARSE_CLIENTHELLO_USE_SRTP_EXT 310 +# define SSL_F_SSL_PARSE_SERVERHELLO_RENEGOTIATE_EXT 301 +# define SSL_F_SSL_PARSE_SERVERHELLO_TLSEXT 303 +# define SSL_F_SSL_PARSE_SERVERHELLO_USE_SRTP_EXT 311 +# define SSL_F_SSL_PEEK 270 +# define SSL_F_SSL_PREPARE_CLIENTHELLO_TLSEXT 281 +# define SSL_F_SSL_PREPARE_SERVERHELLO_TLSEXT 282 +# define SSL_F_SSL_READ 223 +# define SSL_F_SSL_RSA_PRIVATE_DECRYPT 187 +# define SSL_F_SSL_RSA_PUBLIC_ENCRYPT 188 +# define SSL_F_SSL_SCAN_CLIENTHELLO_TLSEXT 320 +# define SSL_F_SSL_SCAN_SERVERHELLO_TLSEXT 321 +# define SSL_F_SSL_SESSION_NEW 189 +# define SSL_F_SSL_SESSION_PRINT_FP 190 +# define SSL_F_SSL_SESSION_SET1_ID_CONTEXT 312 +# define SSL_F_SSL_SESS_CERT_NEW 225 +# define SSL_F_SSL_SET_CERT 191 +# define SSL_F_SSL_SET_CIPHER_LIST 271 +# define SSL_F_SSL_SET_FD 192 +# define SSL_F_SSL_SET_PKEY 193 +# define SSL_F_SSL_SET_PURPOSE 227 +# define SSL_F_SSL_SET_RFD 194 +# define SSL_F_SSL_SET_SESSION 195 +# define SSL_F_SSL_SET_SESSION_ID_CONTEXT 218 +# define SSL_F_SSL_SET_SESSION_TICKET_EXT 294 +# define SSL_F_SSL_SET_TRUST 228 +# define SSL_F_SSL_SET_WFD 196 +# define SSL_F_SSL_SHUTDOWN 224 +# define SSL_F_SSL_SRP_CTX_INIT 313 +# define SSL_F_SSL_UNDEFINED_CONST_FUNCTION 243 +# define SSL_F_SSL_UNDEFINED_FUNCTION 197 +# define SSL_F_SSL_UNDEFINED_VOID_FUNCTION 244 +# define SSL_F_SSL_USE_CERTIFICATE 198 +# define SSL_F_SSL_USE_CERTIFICATE_ASN1 199 +# define SSL_F_SSL_USE_CERTIFICATE_FILE 200 +# define SSL_F_SSL_USE_PRIVATEKEY 201 +# define SSL_F_SSL_USE_PRIVATEKEY_ASN1 202 +# define SSL_F_SSL_USE_PRIVATEKEY_FILE 203 +# define SSL_F_SSL_USE_PSK_IDENTITY_HINT 273 +# define SSL_F_SSL_USE_RSAPRIVATEKEY 204 +# define SSL_F_SSL_USE_RSAPRIVATEKEY_ASN1 205 +# define SSL_F_SSL_USE_RSAPRIVATEKEY_FILE 206 +# define SSL_F_SSL_VERIFY_CERT_CHAIN 207 +# define SSL_F_SSL_WRITE 208 +# define SSL_F_TLS12_CHECK_PEER_SIGALG 333 +# define SSL_F_TLS1_CERT_VERIFY_MAC 286 +# define SSL_F_TLS1_CHANGE_CIPHER_STATE 209 +# define SSL_F_TLS1_CHECK_SERVERHELLO_TLSEXT 274 +# define SSL_F_TLS1_ENC 210 +# define SSL_F_TLS1_EXPORT_KEYING_MATERIAL 314 +# define SSL_F_TLS1_GET_CURVELIST 338 +# define SSL_F_TLS1_HEARTBEAT 315 +# define SSL_F_TLS1_PREPARE_CLIENTHELLO_TLSEXT 275 +# define SSL_F_TLS1_PREPARE_SERVERHELLO_TLSEXT 276 +# define SSL_F_TLS1_PRF 284 +# define SSL_F_TLS1_SETUP_KEY_BLOCK 211 +# define SSL_F_TLS1_SET_SERVER_SIGALGS 335 +# define SSL_F_WRITE_PENDING 212 + +/* Reason codes. */ +# define SSL_R_APP_DATA_IN_HANDSHAKE 100 +# define SSL_R_ATTEMPT_TO_REUSE_SESSION_IN_DIFFERENT_CONTEXT 272 +# define SSL_R_BAD_ALERT_RECORD 101 +# define SSL_R_BAD_AUTHENTICATION_TYPE 102 +# define SSL_R_BAD_CHANGE_CIPHER_SPEC 103 +# define SSL_R_BAD_CHECKSUM 104 +# define SSL_R_BAD_DATA 390 +# define SSL_R_BAD_DATA_RETURNED_BY_CALLBACK 106 +# define SSL_R_BAD_DECOMPRESSION 107 +# define SSL_R_BAD_DH_G_LENGTH 108 +# define SSL_R_BAD_DH_PUB_KEY_LENGTH 109 +# define SSL_R_BAD_DH_P_LENGTH 110 +# define SSL_R_BAD_DIGEST_LENGTH 111 +# define SSL_R_BAD_DSA_SIGNATURE 112 +# define SSL_R_BAD_ECC_CERT 304 +# define SSL_R_BAD_ECDSA_SIGNATURE 305 +# define SSL_R_BAD_ECPOINT 306 +# define SSL_R_BAD_HANDSHAKE_LENGTH 332 +# define SSL_R_BAD_HELLO_REQUEST 105 +# define SSL_R_BAD_LENGTH 271 +# define SSL_R_BAD_MAC_DECODE 113 +# define SSL_R_BAD_MAC_LENGTH 333 +# define SSL_R_BAD_MESSAGE_TYPE 114 +# define SSL_R_BAD_PACKET_LENGTH 115 +# define SSL_R_BAD_PROTOCOL_VERSION_NUMBER 116 +# define SSL_R_BAD_PSK_IDENTITY_HINT_LENGTH 316 +# define SSL_R_BAD_RESPONSE_ARGUMENT 117 +# define SSL_R_BAD_RSA_DECRYPT 118 +# define SSL_R_BAD_RSA_ENCRYPT 119 +# define SSL_R_BAD_RSA_E_LENGTH 120 +# define SSL_R_BAD_RSA_MODULUS_LENGTH 121 +# define SSL_R_BAD_RSA_SIGNATURE 122 +# define SSL_R_BAD_SIGNATURE 123 +# define SSL_R_BAD_SRP_A_LENGTH 347 +# define SSL_R_BAD_SRP_B_LENGTH 348 +# define SSL_R_BAD_SRP_G_LENGTH 349 +# define SSL_R_BAD_SRP_N_LENGTH 350 +# define SSL_R_BAD_SRP_PARAMETERS 371 +# define SSL_R_BAD_SRP_S_LENGTH 351 +# define SSL_R_BAD_SRTP_MKI_VALUE 352 +# define SSL_R_BAD_SRTP_PROTECTION_PROFILE_LIST 353 +# define SSL_R_BAD_SSL_FILETYPE 124 +# define SSL_R_BAD_SSL_SESSION_ID_LENGTH 125 +# define SSL_R_BAD_STATE 126 +# define SSL_R_BAD_VALUE 384 +# define SSL_R_BAD_WRITE_RETRY 127 +# define SSL_R_BIO_NOT_SET 128 +# define SSL_R_BLOCK_CIPHER_PAD_IS_WRONG 129 +# define SSL_R_BN_LIB 130 +# define SSL_R_CA_DN_LENGTH_MISMATCH 131 +# define SSL_R_CA_DN_TOO_LONG 132 +# define SSL_R_CCS_RECEIVED_EARLY 133 +# define SSL_R_CERTIFICATE_VERIFY_FAILED 134 +# define SSL_R_CERT_CB_ERROR 377 +# define SSL_R_CERT_LENGTH_MISMATCH 135 +# define SSL_R_CHALLENGE_IS_DIFFERENT 136 +# define SSL_R_CIPHER_CODE_WRONG_LENGTH 137 +# define SSL_R_CIPHER_OR_HASH_UNAVAILABLE 138 +# define SSL_R_CIPHER_TABLE_SRC_ERROR 139 +# define SSL_R_CLIENTHELLO_TLSEXT 226 +# define SSL_R_COMPRESSED_LENGTH_TOO_LONG 140 +# define SSL_R_COMPRESSION_DISABLED 343 +# define SSL_R_COMPRESSION_FAILURE 141 +# define SSL_R_COMPRESSION_ID_NOT_WITHIN_PRIVATE_RANGE 307 +# define SSL_R_COMPRESSION_LIBRARY_ERROR 142 +# define SSL_R_CONNECTION_ID_IS_DIFFERENT 143 +# define SSL_R_CONNECTION_TYPE_NOT_SET 144 +# define SSL_R_COOKIE_MISMATCH 308 +# define SSL_R_DATA_BETWEEN_CCS_AND_FINISHED 145 +# define SSL_R_DATA_LENGTH_TOO_LONG 146 +# define SSL_R_DECRYPTION_FAILED 147 +# define SSL_R_DECRYPTION_FAILED_OR_BAD_RECORD_MAC 281 +# define SSL_R_DH_PUBLIC_VALUE_LENGTH_IS_WRONG 148 +# define SSL_R_DIGEST_CHECK_FAILED 149 +# define SSL_R_DTLS_MESSAGE_TOO_BIG 334 +# define SSL_R_DUPLICATE_COMPRESSION_ID 309 +# define SSL_R_ECC_CERT_NOT_FOR_KEY_AGREEMENT 317 +# define SSL_R_ECC_CERT_NOT_FOR_SIGNING 318 +# define SSL_R_ECC_CERT_SHOULD_HAVE_RSA_SIGNATURE 322 +# define SSL_R_ECC_CERT_SHOULD_HAVE_SHA1_SIGNATURE 323 +# define SSL_R_ECDH_REQUIRED_FOR_SUITEB_MODE 374 +# define SSL_R_ECGROUP_TOO_LARGE_FOR_CIPHER 310 +# define SSL_R_EMPTY_SRTP_PROTECTION_PROFILE_LIST 354 +# define SSL_R_ENCRYPTED_LENGTH_TOO_LONG 150 +# define SSL_R_ERROR_GENERATING_TMP_RSA_KEY 282 +# define SSL_R_ERROR_IN_RECEIVED_CIPHER_LIST 151 +# define SSL_R_EXCESSIVE_MESSAGE_SIZE 152 +# define SSL_R_EXTRA_DATA_IN_MESSAGE 153 +# define SSL_R_GOT_A_FIN_BEFORE_A_CCS 154 +# define SSL_R_GOT_NEXT_PROTO_BEFORE_A_CCS 355 +# define SSL_R_GOT_NEXT_PROTO_WITHOUT_EXTENSION 356 +# define SSL_R_HTTPS_PROXY_REQUEST 155 +# define SSL_R_HTTP_REQUEST 156 +# define SSL_R_ILLEGAL_PADDING 283 +# define SSL_R_ILLEGAL_SUITEB_DIGEST 380 +# define SSL_R_INAPPROPRIATE_FALLBACK 373 +# define SSL_R_INCONSISTENT_COMPRESSION 340 +# define SSL_R_INVALID_CHALLENGE_LENGTH 158 +# define SSL_R_INVALID_COMMAND 280 +# define SSL_R_INVALID_COMPRESSION_ALGORITHM 341 +# define SSL_R_INVALID_NULL_CMD_NAME 385 +# define SSL_R_INVALID_PURPOSE 278 +# define SSL_R_INVALID_SERVERINFO_DATA 388 +# define SSL_R_INVALID_SRP_USERNAME 357 +# define SSL_R_INVALID_STATUS_RESPONSE 328 +# define SSL_R_INVALID_TICKET_KEYS_LENGTH 325 +# define SSL_R_INVALID_TRUST 279 +# define SSL_R_KEY_ARG_TOO_LONG 284 +# define SSL_R_KRB5 285 +# define SSL_R_KRB5_C_CC_PRINC 286 +# define SSL_R_KRB5_C_GET_CRED 287 +# define SSL_R_KRB5_C_INIT 288 +# define SSL_R_KRB5_C_MK_REQ 289 +# define SSL_R_KRB5_S_BAD_TICKET 290 +# define SSL_R_KRB5_S_INIT 291 +# define SSL_R_KRB5_S_RD_REQ 292 +# define SSL_R_KRB5_S_TKT_EXPIRED 293 +# define SSL_R_KRB5_S_TKT_NYV 294 +# define SSL_R_KRB5_S_TKT_SKEW 295 +# define SSL_R_LENGTH_MISMATCH 159 +# define SSL_R_LENGTH_TOO_SHORT 160 +# define SSL_R_LIBRARY_BUG 274 +# define SSL_R_LIBRARY_HAS_NO_CIPHERS 161 +# define SSL_R_MESSAGE_TOO_LONG 296 +# define SSL_R_MISSING_DH_DSA_CERT 162 +# define SSL_R_MISSING_DH_KEY 163 +# define SSL_R_MISSING_DH_RSA_CERT 164 +# define SSL_R_MISSING_DSA_SIGNING_CERT 165 +# define SSL_R_MISSING_ECDH_CERT 382 +# define SSL_R_MISSING_ECDSA_SIGNING_CERT 381 +# define SSL_R_MISSING_EXPORT_TMP_DH_KEY 166 +# define SSL_R_MISSING_EXPORT_TMP_RSA_KEY 167 +# define SSL_R_MISSING_RSA_CERTIFICATE 168 +# define SSL_R_MISSING_RSA_ENCRYPTING_CERT 169 +# define SSL_R_MISSING_RSA_SIGNING_CERT 170 +# define SSL_R_MISSING_SRP_PARAM 358 +# define SSL_R_MISSING_TMP_DH_KEY 171 +# define SSL_R_MISSING_TMP_ECDH_KEY 311 +# define SSL_R_MISSING_TMP_RSA_KEY 172 +# define SSL_R_MISSING_TMP_RSA_PKEY 173 +# define SSL_R_MISSING_VERIFY_MESSAGE 174 +# define SSL_R_MULTIPLE_SGC_RESTARTS 346 +# define SSL_R_NON_SSLV2_INITIAL_PACKET 175 +# define SSL_R_NO_CERTIFICATES_RETURNED 176 +# define SSL_R_NO_CERTIFICATE_ASSIGNED 177 +# define SSL_R_NO_CERTIFICATE_RETURNED 178 +# define SSL_R_NO_CERTIFICATE_SET 179 +# define SSL_R_NO_CERTIFICATE_SPECIFIED 180 +# define SSL_R_NO_CIPHERS_AVAILABLE 181 +# define SSL_R_NO_CIPHERS_PASSED 182 +# define SSL_R_NO_CIPHERS_SPECIFIED 183 +# define SSL_R_NO_CIPHER_LIST 184 +# define SSL_R_NO_CIPHER_MATCH 185 +# define SSL_R_NO_CLIENT_CERT_METHOD 331 +# define SSL_R_NO_CLIENT_CERT_RECEIVED 186 +# define SSL_R_NO_COMPRESSION_SPECIFIED 187 +# define SSL_R_NO_GOST_CERTIFICATE_SENT_BY_PEER 330 +# define SSL_R_NO_METHOD_SPECIFIED 188 +# define SSL_R_NO_PEM_EXTENSIONS 389 +# define SSL_R_NO_PRIVATEKEY 189 +# define SSL_R_NO_PRIVATE_KEY_ASSIGNED 190 +# define SSL_R_NO_PROTOCOLS_AVAILABLE 191 +# define SSL_R_NO_PUBLICKEY 192 +# define SSL_R_NO_RENEGOTIATION 339 +# define SSL_R_NO_REQUIRED_DIGEST 324 +# define SSL_R_NO_SHARED_CIPHER 193 +# define SSL_R_NO_SHARED_SIGATURE_ALGORITHMS 376 +# define SSL_R_NO_SRTP_PROFILES 359 +# define SSL_R_NO_VERIFY_CALLBACK 194 +# define SSL_R_NULL_SSL_CTX 195 +# define SSL_R_NULL_SSL_METHOD_PASSED 196 +# define SSL_R_OLD_SESSION_CIPHER_NOT_RETURNED 197 +# define SSL_R_OLD_SESSION_COMPRESSION_ALGORITHM_NOT_RETURNED 344 +# define SSL_R_ONLY_DTLS_1_2_ALLOWED_IN_SUITEB_MODE 387 +# define SSL_R_ONLY_TLS_1_2_ALLOWED_IN_SUITEB_MODE 379 +# define SSL_R_ONLY_TLS_ALLOWED_IN_FIPS_MODE 297 +# define SSL_R_OPAQUE_PRF_INPUT_TOO_LONG 327 +# define SSL_R_PACKET_LENGTH_TOO_LONG 198 +# define SSL_R_PARSE_TLSEXT 227 +# define SSL_R_PATH_TOO_LONG 270 +# define SSL_R_PEER_DID_NOT_RETURN_A_CERTIFICATE 199 +# define SSL_R_PEER_ERROR 200 +# define SSL_R_PEER_ERROR_CERTIFICATE 201 +# define SSL_R_PEER_ERROR_NO_CERTIFICATE 202 +# define SSL_R_PEER_ERROR_NO_CIPHER 203 +# define SSL_R_PEER_ERROR_UNSUPPORTED_CERTIFICATE_TYPE 204 +# define SSL_R_PEM_NAME_BAD_PREFIX 391 +# define SSL_R_PEM_NAME_TOO_SHORT 392 +# define SSL_R_PRE_MAC_LENGTH_TOO_LONG 205 +# define SSL_R_PROBLEMS_MAPPING_CIPHER_FUNCTIONS 206 +# define SSL_R_PROTOCOL_IS_SHUTDOWN 207 +# define SSL_R_PSK_IDENTITY_NOT_FOUND 223 +# define SSL_R_PSK_NO_CLIENT_CB 224 +# define SSL_R_PSK_NO_SERVER_CB 225 +# define SSL_R_PUBLIC_KEY_ENCRYPT_ERROR 208 +# define SSL_R_PUBLIC_KEY_IS_NOT_RSA 209 +# define SSL_R_PUBLIC_KEY_NOT_RSA 210 +# define SSL_R_READ_BIO_NOT_SET 211 +# define SSL_R_READ_TIMEOUT_EXPIRED 312 +# define SSL_R_READ_WRONG_PACKET_TYPE 212 +# define SSL_R_RECORD_LENGTH_MISMATCH 213 +# define SSL_R_RECORD_TOO_LARGE 214 +# define SSL_R_RECORD_TOO_SMALL 298 +# define SSL_R_RENEGOTIATE_EXT_TOO_LONG 335 +# define SSL_R_RENEGOTIATION_ENCODING_ERR 336 +# define SSL_R_RENEGOTIATION_MISMATCH 337 +# define SSL_R_REQUIRED_CIPHER_MISSING 215 +# define SSL_R_REQUIRED_COMPRESSSION_ALGORITHM_MISSING 342 +# define SSL_R_REUSE_CERT_LENGTH_NOT_ZERO 216 +# define SSL_R_REUSE_CERT_TYPE_NOT_ZERO 217 +# define SSL_R_REUSE_CIPHER_LIST_NOT_ZERO 218 +# define SSL_R_SCSV_RECEIVED_WHEN_RENEGOTIATING 345 +# define SSL_R_SERVERHELLO_TLSEXT 275 +# define SSL_R_SESSION_ID_CONTEXT_UNINITIALIZED 277 +# define SSL_R_SHORT_READ 219 +# define SSL_R_SIGNATURE_ALGORITHMS_ERROR 360 +# define SSL_R_SIGNATURE_FOR_NON_SIGNING_CERTIFICATE 220 +# define SSL_R_SRP_A_CALC 361 +# define SSL_R_SRTP_COULD_NOT_ALLOCATE_PROFILES 362 +# define SSL_R_SRTP_PROTECTION_PROFILE_LIST_TOO_LONG 363 +# define SSL_R_SRTP_UNKNOWN_PROTECTION_PROFILE 364 +# define SSL_R_SSL23_DOING_SESSION_ID_REUSE 221 +# define SSL_R_SSL2_CONNECTION_ID_TOO_LONG 299 +# define SSL_R_SSL3_EXT_INVALID_ECPOINTFORMAT 321 +# define SSL_R_SSL3_EXT_INVALID_SERVERNAME 319 +# define SSL_R_SSL3_EXT_INVALID_SERVERNAME_TYPE 320 +# define SSL_R_SSL3_SESSION_ID_TOO_LONG 300 +# define SSL_R_SSL3_SESSION_ID_TOO_SHORT 222 +# define SSL_R_SSLV3_ALERT_BAD_CERTIFICATE 1042 +# define SSL_R_SSLV3_ALERT_BAD_RECORD_MAC 1020 +# define SSL_R_SSLV3_ALERT_CERTIFICATE_EXPIRED 1045 +# define SSL_R_SSLV3_ALERT_CERTIFICATE_REVOKED 1044 +# define SSL_R_SSLV3_ALERT_CERTIFICATE_UNKNOWN 1046 +# define SSL_R_SSLV3_ALERT_DECOMPRESSION_FAILURE 1030 +# define SSL_R_SSLV3_ALERT_HANDSHAKE_FAILURE 1040 +# define SSL_R_SSLV3_ALERT_ILLEGAL_PARAMETER 1047 +# define SSL_R_SSLV3_ALERT_NO_CERTIFICATE 1041 +# define SSL_R_SSLV3_ALERT_UNEXPECTED_MESSAGE 1010 +# define SSL_R_SSLV3_ALERT_UNSUPPORTED_CERTIFICATE 1043 +# define SSL_R_SSL_CTX_HAS_NO_DEFAULT_SSL_VERSION 228 +# define SSL_R_SSL_HANDSHAKE_FAILURE 229 +# define SSL_R_SSL_LIBRARY_HAS_NO_CIPHERS 230 +# define SSL_R_SSL_SESSION_ID_CALLBACK_FAILED 301 +# define SSL_R_SSL_SESSION_ID_CONFLICT 302 +# define SSL_R_SSL_SESSION_ID_CONTEXT_TOO_LONG 273 +# define SSL_R_SSL_SESSION_ID_HAS_BAD_LENGTH 303 +# define SSL_R_SSL_SESSION_ID_IS_DIFFERENT 231 +# define SSL_R_TLSV1_ALERT_ACCESS_DENIED 1049 +# define SSL_R_TLSV1_ALERT_DECODE_ERROR 1050 +# define SSL_R_TLSV1_ALERT_DECRYPTION_FAILED 1021 +# define SSL_R_TLSV1_ALERT_DECRYPT_ERROR 1051 +# define SSL_R_TLSV1_ALERT_EXPORT_RESTRICTION 1060 +# define SSL_R_TLSV1_ALERT_INAPPROPRIATE_FALLBACK 1086 +# define SSL_R_TLSV1_ALERT_INSUFFICIENT_SECURITY 1071 +# define SSL_R_TLSV1_ALERT_INTERNAL_ERROR 1080 +# define SSL_R_TLSV1_ALERT_NO_RENEGOTIATION 1100 +# define SSL_R_TLSV1_ALERT_PROTOCOL_VERSION 1070 +# define SSL_R_TLSV1_ALERT_RECORD_OVERFLOW 1022 +# define SSL_R_TLSV1_ALERT_UNKNOWN_CA 1048 +# define SSL_R_TLSV1_ALERT_USER_CANCELLED 1090 +# define SSL_R_TLSV1_BAD_CERTIFICATE_HASH_VALUE 1114 +# define SSL_R_TLSV1_BAD_CERTIFICATE_STATUS_RESPONSE 1113 +# define SSL_R_TLSV1_CERTIFICATE_UNOBTAINABLE 1111 +# define SSL_R_TLSV1_UNRECOGNIZED_NAME 1112 +# define SSL_R_TLSV1_UNSUPPORTED_EXTENSION 1110 +# define SSL_R_TLS_CLIENT_CERT_REQ_WITH_ANON_CIPHER 232 +# define SSL_R_TLS_HEARTBEAT_PEER_DOESNT_ACCEPT 365 +# define SSL_R_TLS_HEARTBEAT_PENDING 366 +# define SSL_R_TLS_ILLEGAL_EXPORTER_LABEL 367 +# define SSL_R_TLS_INVALID_ECPOINTFORMAT_LIST 157 +# define SSL_R_TLS_PEER_DID_NOT_RESPOND_WITH_CERTIFICATE_LIST 233 +# define SSL_R_TLS_RSA_ENCRYPTED_VALUE_LENGTH_IS_WRONG 234 +# define SSL_R_TRIED_TO_USE_UNSUPPORTED_CIPHER 235 +# define SSL_R_UNABLE_TO_DECODE_DH_CERTS 236 +# define SSL_R_UNABLE_TO_DECODE_ECDH_CERTS 313 +# define SSL_R_UNABLE_TO_EXTRACT_PUBLIC_KEY 237 +# define SSL_R_UNABLE_TO_FIND_DH_PARAMETERS 238 +# define SSL_R_UNABLE_TO_FIND_ECDH_PARAMETERS 314 +# define SSL_R_UNABLE_TO_FIND_PUBLIC_KEY_PARAMETERS 239 +# define SSL_R_UNABLE_TO_FIND_SSL_METHOD 240 +# define SSL_R_UNABLE_TO_LOAD_SSL2_MD5_ROUTINES 241 +# define SSL_R_UNABLE_TO_LOAD_SSL3_MD5_ROUTINES 242 +# define SSL_R_UNABLE_TO_LOAD_SSL3_SHA1_ROUTINES 243 +# define SSL_R_UNEXPECTED_MESSAGE 244 +# define SSL_R_UNEXPECTED_RECORD 245 +# define SSL_R_UNINITIALIZED 276 +# define SSL_R_UNKNOWN_ALERT_TYPE 246 +# define SSL_R_UNKNOWN_CERTIFICATE_TYPE 247 +# define SSL_R_UNKNOWN_CIPHER_RETURNED 248 +# define SSL_R_UNKNOWN_CIPHER_TYPE 249 +# define SSL_R_UNKNOWN_CMD_NAME 386 +# define SSL_R_UNKNOWN_DIGEST 368 +# define SSL_R_UNKNOWN_KEY_EXCHANGE_TYPE 250 +# define SSL_R_UNKNOWN_PKEY_TYPE 251 +# define SSL_R_UNKNOWN_PROTOCOL 252 +# define SSL_R_UNKNOWN_REMOTE_ERROR_TYPE 253 +# define SSL_R_UNKNOWN_SSL_VERSION 254 +# define SSL_R_UNKNOWN_STATE 255 +# define SSL_R_UNSAFE_LEGACY_RENEGOTIATION_DISABLED 338 +# define SSL_R_UNSUPPORTED_CIPHER 256 +# define SSL_R_UNSUPPORTED_COMPRESSION_ALGORITHM 257 +# define SSL_R_UNSUPPORTED_DIGEST_TYPE 326 +# define SSL_R_UNSUPPORTED_ELLIPTIC_CURVE 315 +# define SSL_R_UNSUPPORTED_PROTOCOL 258 +# define SSL_R_UNSUPPORTED_SSL_VERSION 259 +# define SSL_R_UNSUPPORTED_STATUS_TYPE 329 +# define SSL_R_USE_SRTP_NOT_NEGOTIATED 369 +# define SSL_R_WRITE_BIO_NOT_SET 260 +# define SSL_R_WRONG_CERTIFICATE_TYPE 383 +# define SSL_R_WRONG_CIPHER_RETURNED 261 +# define SSL_R_WRONG_CURVE 378 +# define SSL_R_WRONG_MESSAGE_TYPE 262 +# define SSL_R_WRONG_NUMBER_OF_KEY_BITS 263 +# define SSL_R_WRONG_SIGNATURE_LENGTH 264 +# define SSL_R_WRONG_SIGNATURE_SIZE 265 +# define SSL_R_WRONG_SIGNATURE_TYPE 370 +# define SSL_R_WRONG_SSL_VERSION 266 +# define SSL_R_WRONG_VERSION_NUMBER 267 +# define SSL_R_X509_LIB 268 +# define SSL_R_X509_VERIFICATION_SETUP_PROBLEMS 269 + +#ifdef __cplusplus +} +#endif +#endif diff --git a/ext/openssl-osx/include/openssl/ssl2.h b/ext/openssl-osx/include/openssl/ssl2.h new file mode 100644 index 00000000..03c7dd8c --- /dev/null +++ b/ext/openssl-osx/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/ext/openssl-osx/include/openssl/ssl23.h b/ext/openssl-osx/include/openssl/ssl23.h new file mode 100644 index 00000000..9de4685a --- /dev/null +++ b/ext/openssl-osx/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/ext/openssl-osx/include/openssl/ssl3.h b/ext/openssl-osx/include/openssl/ssl3.h new file mode 100644 index 00000000..e681d50a --- /dev/null +++ b/ext/openssl-osx/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/ext/openssl-osx/include/openssl/stack.h b/ext/openssl-osx/include/openssl/stack.h new file mode 100644 index 00000000..eb072166 --- /dev/null +++ b/ext/openssl-osx/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/ext/openssl-osx/include/openssl/symhacks.h b/ext/openssl-osx/include/openssl/symhacks.h new file mode 100644 index 00000000..239fa4fb --- /dev/null +++ b/ext/openssl-osx/include/openssl/symhacks.h @@ -0,0 +1,516 @@ +/* ==================================================================== + * Copyright (c) 1999 The OpenSSL Project. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. All advertising materials mentioning features or use of this + * software must display the following acknowledgment: + * "This product includes software developed by the OpenSSL Project + * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" + * + * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to + * endorse or promote products derived from this software without + * prior written permission. For written permission, please contact + * openssl-core@openssl.org. + * + * 5. Products derived from this software may not be called "OpenSSL" + * nor may "OpenSSL" appear in their names without prior written + * permission of the OpenSSL Project. + * + * 6. Redistributions of any form whatsoever must retain the following + * acknowledgment: + * "This product includes software developed by the OpenSSL Project + * for use in the OpenSSL Toolkit (http://www.openssl.org/)" + * + * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY + * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * ==================================================================== + * + * This product includes cryptographic software written by Eric Young + * (eay@cryptsoft.com). This product includes software written by Tim + * Hudson (tjh@cryptsoft.com). + * + */ + +#ifndef HEADER_SYMHACKS_H +# define HEADER_SYMHACKS_H + +# include + +/* + * Hacks to solve the problem with linkers incapable of handling very long + * symbol names. In the case of VMS, the limit is 31 characters on VMS for + * VAX. + */ +/* + * Note that this affects util/libeay.num and util/ssleay.num... you may + * change those manually, but that's not recommended, as those files are + * controlled centrally and updated on Unix, and the central definition may + * disagree with yours, which in turn may come with shareable library + * incompatibilities. + */ +# ifdef OPENSSL_SYS_VMS + +/* Hack a long name in crypto/ex_data.c */ +# undef CRYPTO_get_ex_data_implementation +# define CRYPTO_get_ex_data_implementation CRYPTO_get_ex_data_impl +# undef CRYPTO_set_ex_data_implementation +# define CRYPTO_set_ex_data_implementation CRYPTO_set_ex_data_impl + +/* Hack a long name in crypto/asn1/a_mbstr.c */ +# undef ASN1_STRING_set_default_mask_asc +# define ASN1_STRING_set_default_mask_asc ASN1_STRING_set_def_mask_asc + +# if 0 /* No longer needed, since safestack macro + * magic does the job */ +/* Hack the names created with DECLARE_ASN1_SET_OF(PKCS7_SIGNER_INFO) */ +# undef i2d_ASN1_SET_OF_PKCS7_SIGNER_INFO +# define i2d_ASN1_SET_OF_PKCS7_SIGNER_INFO i2d_ASN1_SET_OF_PKCS7_SIGINF +# undef d2i_ASN1_SET_OF_PKCS7_SIGNER_INFO +# define d2i_ASN1_SET_OF_PKCS7_SIGNER_INFO d2i_ASN1_SET_OF_PKCS7_SIGINF +# endif + +# if 0 /* No longer needed, since safestack macro + * magic does the job */ +/* Hack the names created with DECLARE_ASN1_SET_OF(PKCS7_RECIP_INFO) */ +# undef i2d_ASN1_SET_OF_PKCS7_RECIP_INFO +# define i2d_ASN1_SET_OF_PKCS7_RECIP_INFO i2d_ASN1_SET_OF_PKCS7_RECINF +# undef d2i_ASN1_SET_OF_PKCS7_RECIP_INFO +# define d2i_ASN1_SET_OF_PKCS7_RECIP_INFO d2i_ASN1_SET_OF_PKCS7_RECINF +# endif + +# if 0 /* No longer needed, since safestack macro + * magic does the job */ +/* Hack the names created with DECLARE_ASN1_SET_OF(ACCESS_DESCRIPTION) */ +# undef i2d_ASN1_SET_OF_ACCESS_DESCRIPTION +# define i2d_ASN1_SET_OF_ACCESS_DESCRIPTION i2d_ASN1_SET_OF_ACC_DESC +# undef d2i_ASN1_SET_OF_ACCESS_DESCRIPTION +# define d2i_ASN1_SET_OF_ACCESS_DESCRIPTION d2i_ASN1_SET_OF_ACC_DESC +# endif + +/* Hack the names created with DECLARE_PEM_rw(NETSCAPE_CERT_SEQUENCE) */ +# undef PEM_read_NETSCAPE_CERT_SEQUENCE +# define PEM_read_NETSCAPE_CERT_SEQUENCE PEM_read_NS_CERT_SEQ +# undef PEM_write_NETSCAPE_CERT_SEQUENCE +# define PEM_write_NETSCAPE_CERT_SEQUENCE PEM_write_NS_CERT_SEQ +# undef PEM_read_bio_NETSCAPE_CERT_SEQUENCE +# define PEM_read_bio_NETSCAPE_CERT_SEQUENCE PEM_read_bio_NS_CERT_SEQ +# undef PEM_write_bio_NETSCAPE_CERT_SEQUENCE +# define PEM_write_bio_NETSCAPE_CERT_SEQUENCE PEM_write_bio_NS_CERT_SEQ +# undef PEM_write_cb_bio_NETSCAPE_CERT_SEQUENCE +# define PEM_write_cb_bio_NETSCAPE_CERT_SEQUENCE PEM_write_cb_bio_NS_CERT_SEQ + +/* Hack the names created with DECLARE_PEM_rw(PKCS8_PRIV_KEY_INFO) */ +# undef PEM_read_PKCS8_PRIV_KEY_INFO +# define PEM_read_PKCS8_PRIV_KEY_INFO PEM_read_P8_PRIV_KEY_INFO +# undef PEM_write_PKCS8_PRIV_KEY_INFO +# define PEM_write_PKCS8_PRIV_KEY_INFO PEM_write_P8_PRIV_KEY_INFO +# undef PEM_read_bio_PKCS8_PRIV_KEY_INFO +# define PEM_read_bio_PKCS8_PRIV_KEY_INFO PEM_read_bio_P8_PRIV_KEY_INFO +# undef PEM_write_bio_PKCS8_PRIV_KEY_INFO +# define PEM_write_bio_PKCS8_PRIV_KEY_INFO PEM_write_bio_P8_PRIV_KEY_INFO +# undef PEM_write_cb_bio_PKCS8_PRIV_KEY_INFO +# define PEM_write_cb_bio_PKCS8_PRIV_KEY_INFO PEM_wrt_cb_bio_P8_PRIV_KEY_INFO + +/* Hack other PEM names */ +# undef PEM_write_bio_PKCS8PrivateKey_nid +# define PEM_write_bio_PKCS8PrivateKey_nid PEM_write_bio_PKCS8PrivKey_nid + +/* Hack some long X509 names */ +# undef X509_REVOKED_get_ext_by_critical +# define X509_REVOKED_get_ext_by_critical X509_REVOKED_get_ext_by_critic +# undef X509_policy_tree_get0_user_policies +# define X509_policy_tree_get0_user_policies X509_pcy_tree_get0_usr_policies +# undef X509_policy_node_get0_qualifiers +# define X509_policy_node_get0_qualifiers X509_pcy_node_get0_qualifiers +# undef X509_STORE_CTX_get_explicit_policy +# define X509_STORE_CTX_get_explicit_policy X509_STORE_CTX_get_expl_policy +# undef X509_STORE_CTX_get0_current_issuer +# define X509_STORE_CTX_get0_current_issuer X509_STORE_CTX_get0_cur_issuer + +/* Hack some long CRYPTO names */ +# undef CRYPTO_set_dynlock_destroy_callback +# define CRYPTO_set_dynlock_destroy_callback CRYPTO_set_dynlock_destroy_cb +# undef CRYPTO_set_dynlock_create_callback +# define CRYPTO_set_dynlock_create_callback CRYPTO_set_dynlock_create_cb +# undef CRYPTO_set_dynlock_lock_callback +# define CRYPTO_set_dynlock_lock_callback CRYPTO_set_dynlock_lock_cb +# undef CRYPTO_get_dynlock_lock_callback +# define CRYPTO_get_dynlock_lock_callback CRYPTO_get_dynlock_lock_cb +# undef CRYPTO_get_dynlock_destroy_callback +# define CRYPTO_get_dynlock_destroy_callback CRYPTO_get_dynlock_destroy_cb +# undef CRYPTO_get_dynlock_create_callback +# define CRYPTO_get_dynlock_create_callback CRYPTO_get_dynlock_create_cb +# undef CRYPTO_set_locked_mem_ex_functions +# define CRYPTO_set_locked_mem_ex_functions CRYPTO_set_locked_mem_ex_funcs +# undef CRYPTO_get_locked_mem_ex_functions +# define CRYPTO_get_locked_mem_ex_functions CRYPTO_get_locked_mem_ex_funcs + +/* Hack some long SSL/TLS names */ +# undef SSL_CTX_set_default_verify_paths +# define SSL_CTX_set_default_verify_paths SSL_CTX_set_def_verify_paths +# undef SSL_get_ex_data_X509_STORE_CTX_idx +# define SSL_get_ex_data_X509_STORE_CTX_idx SSL_get_ex_d_X509_STORE_CTX_idx +# undef SSL_add_file_cert_subjects_to_stack +# define SSL_add_file_cert_subjects_to_stack SSL_add_file_cert_subjs_to_stk +# undef SSL_add_dir_cert_subjects_to_stack +# define SSL_add_dir_cert_subjects_to_stack SSL_add_dir_cert_subjs_to_stk +# undef SSL_CTX_use_certificate_chain_file +# define SSL_CTX_use_certificate_chain_file SSL_CTX_use_cert_chain_file +# undef SSL_CTX_set_cert_verify_callback +# define SSL_CTX_set_cert_verify_callback SSL_CTX_set_cert_verify_cb +# undef SSL_CTX_set_default_passwd_cb_userdata +# define SSL_CTX_set_default_passwd_cb_userdata SSL_CTX_set_def_passwd_cb_ud +# undef SSL_COMP_get_compression_methods +# define SSL_COMP_get_compression_methods SSL_COMP_get_compress_methods +# undef SSL_COMP_set0_compression_methods +# define SSL_COMP_set0_compression_methods SSL_COMP_set0_compress_methods +# undef SSL_COMP_free_compression_methods +# define SSL_COMP_free_compression_methods SSL_COMP_free_compress_methods +# undef ssl_add_clienthello_renegotiate_ext +# define ssl_add_clienthello_renegotiate_ext ssl_add_clienthello_reneg_ext +# undef ssl_add_serverhello_renegotiate_ext +# define ssl_add_serverhello_renegotiate_ext ssl_add_serverhello_reneg_ext +# undef ssl_parse_clienthello_renegotiate_ext +# define ssl_parse_clienthello_renegotiate_ext ssl_parse_clienthello_reneg_ext +# undef ssl_parse_serverhello_renegotiate_ext +# define ssl_parse_serverhello_renegotiate_ext ssl_parse_serverhello_reneg_ext +# undef SSL_srp_server_param_with_username +# define SSL_srp_server_param_with_username SSL_srp_server_param_with_un +# undef SSL_CTX_set_srp_client_pwd_callback +# define SSL_CTX_set_srp_client_pwd_callback SSL_CTX_set_srp_client_pwd_cb +# undef SSL_CTX_set_srp_verify_param_callback +# define SSL_CTX_set_srp_verify_param_callback SSL_CTX_set_srp_vfy_param_cb +# undef SSL_CTX_set_srp_username_callback +# define SSL_CTX_set_srp_username_callback SSL_CTX_set_srp_un_cb +# undef ssl_add_clienthello_use_srtp_ext +# define ssl_add_clienthello_use_srtp_ext ssl_add_clihello_use_srtp_ext +# undef ssl_add_serverhello_use_srtp_ext +# define ssl_add_serverhello_use_srtp_ext ssl_add_serhello_use_srtp_ext +# undef ssl_parse_clienthello_use_srtp_ext +# define ssl_parse_clienthello_use_srtp_ext ssl_parse_clihello_use_srtp_ext +# undef ssl_parse_serverhello_use_srtp_ext +# define ssl_parse_serverhello_use_srtp_ext ssl_parse_serhello_use_srtp_ext +# undef SSL_CTX_set_next_protos_advertised_cb +# define SSL_CTX_set_next_protos_advertised_cb SSL_CTX_set_next_protos_adv_cb +# undef SSL_CTX_set_next_proto_select_cb +# define SSL_CTX_set_next_proto_select_cb SSL_CTX_set_next_proto_sel_cb + +# undef tls1_send_server_supplemental_data +# define tls1_send_server_supplemental_data tls1_send_server_suppl_data +# undef tls1_send_client_supplemental_data +# define tls1_send_client_supplemental_data tls1_send_client_suppl_data +# undef tls1_get_server_supplemental_data +# define tls1_get_server_supplemental_data tls1_get_server_suppl_data +# undef tls1_get_client_supplemental_data +# define tls1_get_client_supplemental_data tls1_get_client_suppl_data + +# undef ssl3_cbc_record_digest_supported +# define ssl3_cbc_record_digest_supported ssl3_cbc_record_digest_support +# undef ssl_check_clienthello_tlsext_late +# define ssl_check_clienthello_tlsext_late ssl_check_clihello_tlsext_late +# undef ssl_check_clienthello_tlsext_early +# define ssl_check_clienthello_tlsext_early ssl_check_clihello_tlsext_early + +/* Hack some RSA long names */ +# undef RSA_padding_check_PKCS1_OAEP_mgf1 +# define RSA_padding_check_PKCS1_OAEP_mgf1 RSA_pad_check_PKCS1_OAEP_mgf1 + +/* Hack some ENGINE long names */ +# undef ENGINE_get_default_BN_mod_exp_crt +# define ENGINE_get_default_BN_mod_exp_crt ENGINE_get_def_BN_mod_exp_crt +# undef ENGINE_set_default_BN_mod_exp_crt +# define ENGINE_set_default_BN_mod_exp_crt ENGINE_set_def_BN_mod_exp_crt +# undef ENGINE_set_load_privkey_function +# define ENGINE_set_load_privkey_function ENGINE_set_load_privkey_fn +# undef ENGINE_get_load_privkey_function +# define ENGINE_get_load_privkey_function ENGINE_get_load_privkey_fn +# undef ENGINE_unregister_pkey_asn1_meths +# define ENGINE_unregister_pkey_asn1_meths ENGINE_unreg_pkey_asn1_meths +# undef ENGINE_register_all_pkey_asn1_meths +# define ENGINE_register_all_pkey_asn1_meths ENGINE_reg_all_pkey_asn1_meths +# undef ENGINE_set_default_pkey_asn1_meths +# define ENGINE_set_default_pkey_asn1_meths ENGINE_set_def_pkey_asn1_meths +# undef ENGINE_get_pkey_asn1_meth_engine +# define ENGINE_get_pkey_asn1_meth_engine ENGINE_get_pkey_asn1_meth_eng +# undef ENGINE_set_load_ssl_client_cert_function +# define ENGINE_set_load_ssl_client_cert_function \ + ENGINE_set_ld_ssl_clnt_cert_fn +# undef ENGINE_get_ssl_client_cert_function +# define ENGINE_get_ssl_client_cert_function ENGINE_get_ssl_client_cert_fn + +/* Hack some long OCSP names */ +# undef OCSP_REQUEST_get_ext_by_critical +# define OCSP_REQUEST_get_ext_by_critical OCSP_REQUEST_get_ext_by_crit +# undef OCSP_BASICRESP_get_ext_by_critical +# define OCSP_BASICRESP_get_ext_by_critical OCSP_BASICRESP_get_ext_by_crit +# undef OCSP_SINGLERESP_get_ext_by_critical +# define OCSP_SINGLERESP_get_ext_by_critical OCSP_SINGLERESP_get_ext_by_crit + +/* Hack some long DES names */ +# undef _ossl_old_des_ede3_cfb64_encrypt +# define _ossl_old_des_ede3_cfb64_encrypt _ossl_odes_ede3_cfb64_encrypt +# undef _ossl_old_des_ede3_ofb64_encrypt +# define _ossl_old_des_ede3_ofb64_encrypt _ossl_odes_ede3_ofb64_encrypt + +/* Hack some long EVP names */ +# undef OPENSSL_add_all_algorithms_noconf +# define OPENSSL_add_all_algorithms_noconf OPENSSL_add_all_algo_noconf +# undef OPENSSL_add_all_algorithms_conf +# define OPENSSL_add_all_algorithms_conf OPENSSL_add_all_algo_conf +# undef EVP_PKEY_meth_set_verify_recover +# define EVP_PKEY_meth_set_verify_recover EVP_PKEY_meth_set_vrfy_recover + +/* Hack some long EC names */ +# undef EC_GROUP_set_point_conversion_form +# define EC_GROUP_set_point_conversion_form EC_GROUP_set_point_conv_form +# undef EC_GROUP_get_point_conversion_form +# define EC_GROUP_get_point_conversion_form EC_GROUP_get_point_conv_form +# undef EC_GROUP_clear_free_all_extra_data +# define EC_GROUP_clear_free_all_extra_data EC_GROUP_clr_free_all_xtra_data +# undef EC_KEY_set_public_key_affine_coordinates +# define EC_KEY_set_public_key_affine_coordinates \ + EC_KEY_set_pub_key_aff_coords +# undef EC_POINT_set_Jprojective_coordinates_GFp +# define EC_POINT_set_Jprojective_coordinates_GFp \ + EC_POINT_set_Jproj_coords_GFp +# undef EC_POINT_get_Jprojective_coordinates_GFp +# define EC_POINT_get_Jprojective_coordinates_GFp \ + EC_POINT_get_Jproj_coords_GFp +# undef EC_POINT_set_affine_coordinates_GFp +# define EC_POINT_set_affine_coordinates_GFp EC_POINT_set_affine_coords_GFp +# undef EC_POINT_get_affine_coordinates_GFp +# define EC_POINT_get_affine_coordinates_GFp EC_POINT_get_affine_coords_GFp +# undef EC_POINT_set_compressed_coordinates_GFp +# define EC_POINT_set_compressed_coordinates_GFp EC_POINT_set_compr_coords_GFp +# undef EC_POINT_set_affine_coordinates_GF2m +# define EC_POINT_set_affine_coordinates_GF2m EC_POINT_set_affine_coords_GF2m +# undef EC_POINT_get_affine_coordinates_GF2m +# define EC_POINT_get_affine_coordinates_GF2m EC_POINT_get_affine_coords_GF2m +# undef EC_POINT_set_compressed_coordinates_GF2m +# define EC_POINT_set_compressed_coordinates_GF2m \ + EC_POINT_set_compr_coords_GF2m +# undef ec_GF2m_simple_group_clear_finish +# define ec_GF2m_simple_group_clear_finish ec_GF2m_simple_grp_clr_finish +# undef ec_GF2m_simple_group_check_discriminant +# define ec_GF2m_simple_group_check_discriminant ec_GF2m_simple_grp_chk_discrim +# undef ec_GF2m_simple_point_clear_finish +# define ec_GF2m_simple_point_clear_finish ec_GF2m_simple_pt_clr_finish +# undef ec_GF2m_simple_point_set_to_infinity +# define ec_GF2m_simple_point_set_to_infinity ec_GF2m_simple_pt_set_to_inf +# undef ec_GF2m_simple_points_make_affine +# define ec_GF2m_simple_points_make_affine ec_GF2m_simple_pts_make_affine +# undef ec_GF2m_simple_point_set_affine_coordinates +# define ec_GF2m_simple_point_set_affine_coordinates \ + ec_GF2m_smp_pt_set_af_coords +# undef ec_GF2m_simple_point_get_affine_coordinates +# define ec_GF2m_simple_point_get_affine_coordinates \ + ec_GF2m_smp_pt_get_af_coords +# undef ec_GF2m_simple_set_compressed_coordinates +# define ec_GF2m_simple_set_compressed_coordinates \ + ec_GF2m_smp_set_compr_coords +# undef ec_GFp_simple_group_set_curve_GFp +# define ec_GFp_simple_group_set_curve_GFp ec_GFp_simple_grp_set_curve_GFp +# undef ec_GFp_simple_group_get_curve_GFp +# define ec_GFp_simple_group_get_curve_GFp ec_GFp_simple_grp_get_curve_GFp +# undef ec_GFp_simple_group_clear_finish +# define ec_GFp_simple_group_clear_finish ec_GFp_simple_grp_clear_finish +# undef ec_GFp_simple_group_set_generator +# define ec_GFp_simple_group_set_generator ec_GFp_simple_grp_set_generator +# undef ec_GFp_simple_group_get0_generator +# define ec_GFp_simple_group_get0_generator ec_GFp_simple_grp_gt0_generator +# undef ec_GFp_simple_group_get_cofactor +# define ec_GFp_simple_group_get_cofactor ec_GFp_simple_grp_get_cofactor +# undef ec_GFp_simple_point_clear_finish +# define ec_GFp_simple_point_clear_finish ec_GFp_simple_pt_clear_finish +# undef ec_GFp_simple_point_set_to_infinity +# define ec_GFp_simple_point_set_to_infinity ec_GFp_simple_pt_set_to_inf +# undef ec_GFp_simple_points_make_affine +# define ec_GFp_simple_points_make_affine ec_GFp_simple_pts_make_affine +# undef ec_GFp_simple_set_Jprojective_coordinates_GFp +# define ec_GFp_simple_set_Jprojective_coordinates_GFp \ + ec_GFp_smp_set_Jproj_coords_GFp +# undef ec_GFp_simple_get_Jprojective_coordinates_GFp +# define ec_GFp_simple_get_Jprojective_coordinates_GFp \ + ec_GFp_smp_get_Jproj_coords_GFp +# undef ec_GFp_simple_point_set_affine_coordinates_GFp +# define ec_GFp_simple_point_set_affine_coordinates_GFp \ + ec_GFp_smp_pt_set_af_coords_GFp +# undef ec_GFp_simple_point_get_affine_coordinates_GFp +# define ec_GFp_simple_point_get_affine_coordinates_GFp \ + ec_GFp_smp_pt_get_af_coords_GFp +# undef ec_GFp_simple_set_compressed_coordinates_GFp +# define ec_GFp_simple_set_compressed_coordinates_GFp \ + ec_GFp_smp_set_compr_coords_GFp +# undef ec_GFp_simple_point_set_affine_coordinates +# define ec_GFp_simple_point_set_affine_coordinates \ + ec_GFp_smp_pt_set_af_coords +# undef ec_GFp_simple_point_get_affine_coordinates +# define ec_GFp_simple_point_get_affine_coordinates \ + ec_GFp_smp_pt_get_af_coords +# undef ec_GFp_simple_set_compressed_coordinates +# define ec_GFp_simple_set_compressed_coordinates \ + ec_GFp_smp_set_compr_coords +# undef ec_GFp_simple_group_check_discriminant +# define ec_GFp_simple_group_check_discriminant ec_GFp_simple_grp_chk_discrim + +/* Hack som long STORE names */ +# undef STORE_method_set_initialise_function +# define STORE_method_set_initialise_function STORE_meth_set_initialise_fn +# undef STORE_method_set_cleanup_function +# define STORE_method_set_cleanup_function STORE_meth_set_cleanup_fn +# undef STORE_method_set_generate_function +# define STORE_method_set_generate_function STORE_meth_set_generate_fn +# undef STORE_method_set_modify_function +# define STORE_method_set_modify_function STORE_meth_set_modify_fn +# undef STORE_method_set_revoke_function +# define STORE_method_set_revoke_function STORE_meth_set_revoke_fn +# undef STORE_method_set_delete_function +# define STORE_method_set_delete_function STORE_meth_set_delete_fn +# undef STORE_method_set_list_start_function +# define STORE_method_set_list_start_function STORE_meth_set_list_start_fn +# undef STORE_method_set_list_next_function +# define STORE_method_set_list_next_function STORE_meth_set_list_next_fn +# undef STORE_method_set_list_end_function +# define STORE_method_set_list_end_function STORE_meth_set_list_end_fn +# undef STORE_method_set_update_store_function +# define STORE_method_set_update_store_function STORE_meth_set_update_store_fn +# undef STORE_method_set_lock_store_function +# define STORE_method_set_lock_store_function STORE_meth_set_lock_store_fn +# undef STORE_method_set_unlock_store_function +# define STORE_method_set_unlock_store_function STORE_meth_set_unlock_store_fn +# undef STORE_method_get_initialise_function +# define STORE_method_get_initialise_function STORE_meth_get_initialise_fn +# undef STORE_method_get_cleanup_function +# define STORE_method_get_cleanup_function STORE_meth_get_cleanup_fn +# undef STORE_method_get_generate_function +# define STORE_method_get_generate_function STORE_meth_get_generate_fn +# undef STORE_method_get_modify_function +# define STORE_method_get_modify_function STORE_meth_get_modify_fn +# undef STORE_method_get_revoke_function +# define STORE_method_get_revoke_function STORE_meth_get_revoke_fn +# undef STORE_method_get_delete_function +# define STORE_method_get_delete_function STORE_meth_get_delete_fn +# undef STORE_method_get_list_start_function +# define STORE_method_get_list_start_function STORE_meth_get_list_start_fn +# undef STORE_method_get_list_next_function +# define STORE_method_get_list_next_function STORE_meth_get_list_next_fn +# undef STORE_method_get_list_end_function +# define STORE_method_get_list_end_function STORE_meth_get_list_end_fn +# undef STORE_method_get_update_store_function +# define STORE_method_get_update_store_function STORE_meth_get_update_store_fn +# undef STORE_method_get_lock_store_function +# define STORE_method_get_lock_store_function STORE_meth_get_lock_store_fn +# undef STORE_method_get_unlock_store_function +# define STORE_method_get_unlock_store_function STORE_meth_get_unlock_store_fn + +/* Hack some long TS names */ +# undef TS_RESP_CTX_set_status_info_cond +# define TS_RESP_CTX_set_status_info_cond TS_RESP_CTX_set_stat_info_cond +# undef TS_RESP_CTX_set_clock_precision_digits +# define TS_RESP_CTX_set_clock_precision_digits TS_RESP_CTX_set_clk_prec_digits +# undef TS_CONF_set_clock_precision_digits +# define TS_CONF_set_clock_precision_digits TS_CONF_set_clk_prec_digits + +/* Hack some long CMS names */ +# undef CMS_RecipientInfo_ktri_get0_algs +# define CMS_RecipientInfo_ktri_get0_algs CMS_RecipInfo_ktri_get0_algs +# undef CMS_RecipientInfo_ktri_get0_signer_id +# define CMS_RecipientInfo_ktri_get0_signer_id CMS_RecipInfo_ktri_get0_sigr_id +# undef CMS_OtherRevocationInfoFormat_it +# define CMS_OtherRevocationInfoFormat_it CMS_OtherRevocInfoFormat_it +# undef CMS_KeyAgreeRecipientIdentifier_it +# define CMS_KeyAgreeRecipientIdentifier_it CMS_KeyAgreeRecipIdentifier_it +# undef CMS_OriginatorIdentifierOrKey_it +# define CMS_OriginatorIdentifierOrKey_it CMS_OriginatorIdOrKey_it +# undef cms_SignerIdentifier_get0_signer_id +# define cms_SignerIdentifier_get0_signer_id cms_SignerId_get0_signer_id +# undef CMS_RecipientInfo_kari_get0_orig_id +# define CMS_RecipientInfo_kari_get0_orig_id CMS_RecipInfo_kari_get0_orig_id +# undef CMS_RecipientInfo_kari_get0_reks +# define CMS_RecipientInfo_kari_get0_reks CMS_RecipInfo_kari_get0_reks +# undef CMS_RecipientEncryptedKey_cert_cmp +# define CMS_RecipientEncryptedKey_cert_cmp CMS_RecipEncryptedKey_cert_cmp +# undef CMS_RecipientInfo_kari_set0_pkey +# define CMS_RecipientInfo_kari_set0_pkey CMS_RecipInfo_kari_set0_pkey +# undef CMS_RecipientEncryptedKey_get0_id +# define CMS_RecipientEncryptedKey_get0_id CMS_RecipEncryptedKey_get0_id +# undef CMS_RecipientInfo_kari_orig_id_cmp +# define CMS_RecipientInfo_kari_orig_id_cmp CMS_RecipInfo_kari_orig_id_cmp + +/* Hack some long DTLS1 names */ +# undef dtls1_retransmit_buffered_messages +# define dtls1_retransmit_buffered_messages dtls1_retransmit_buffered_msgs + +/* Hack some long SRP names */ +# undef SRP_generate_server_master_secret +# define SRP_generate_server_master_secret SRP_gen_server_master_secret +# undef SRP_generate_client_master_secret +# define SRP_generate_client_master_secret SRP_gen_client_master_secret + +/* Hack some long UI names */ +# undef UI_method_get_prompt_constructor +# define UI_method_get_prompt_constructor UI_method_get_prompt_constructr +# undef UI_method_set_prompt_constructor +# define UI_method_set_prompt_constructor UI_method_set_prompt_constructr + +# endif /* defined OPENSSL_SYS_VMS */ + +/* Case insensitive linking causes problems.... */ +# if defined(OPENSSL_SYS_VMS) || defined(OPENSSL_SYS_OS2) +# undef ERR_load_CRYPTO_strings +# define ERR_load_CRYPTO_strings ERR_load_CRYPTOlib_strings +# undef OCSP_crlID_new +# define OCSP_crlID_new OCSP_crlID2_new + +# undef d2i_ECPARAMETERS +# define d2i_ECPARAMETERS d2i_UC_ECPARAMETERS +# undef i2d_ECPARAMETERS +# define i2d_ECPARAMETERS i2d_UC_ECPARAMETERS +# undef d2i_ECPKPARAMETERS +# define d2i_ECPKPARAMETERS d2i_UC_ECPKPARAMETERS +# undef i2d_ECPKPARAMETERS +# define i2d_ECPKPARAMETERS i2d_UC_ECPKPARAMETERS + +/* + * These functions do not seem to exist! However, I'm paranoid... Original + * command in x509v3.h: These functions are being redefined in another + * directory, and clash when the linker is case-insensitive, so let's hide + * them a little, by giving them an extra 'o' at the beginning of the name... + */ +# undef X509v3_cleanup_extensions +# define X509v3_cleanup_extensions oX509v3_cleanup_extensions +# undef X509v3_add_extension +# define X509v3_add_extension oX509v3_add_extension +# undef X509v3_add_netscape_extensions +# define X509v3_add_netscape_extensions oX509v3_add_netscape_extensions +# undef X509v3_add_standard_extensions +# define X509v3_add_standard_extensions oX509v3_add_standard_extensions + +/* This one clashes with CMS_data_create */ +# undef cms_Data_create +# define cms_Data_create priv_cms_Data_create + +# endif + +#endif /* ! defined HEADER_VMS_IDHACKS_H */ diff --git a/ext/openssl-osx/include/openssl/tls1.h b/ext/openssl-osx/include/openssl/tls1.h new file mode 100644 index 00000000..5929607f --- /dev/null +++ b/ext/openssl-osx/include/openssl/tls1.h @@ -0,0 +1,813 @@ +/* ssl/tls1.h */ +/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) + * All rights reserved. + * + * This package is an SSL implementation written + * by Eric Young (eay@cryptsoft.com). + * The implementation was written so as to conform with Netscapes SSL. + * + * This library is free for commercial and non-commercial use as long as + * the following conditions are aheared to. The following conditions + * apply to all code found in this distribution, be it the RC4, RSA, + * lhash, DES, etc., code; not just the SSL code. The SSL documentation + * included with this distribution is covered by the same copyright terms + * except that the holder is Tim Hudson (tjh@cryptsoft.com). + * + * Copyright remains Eric Young's, and as such any Copyright notices in + * the code are not to be removed. + * If this package is used in a product, Eric Young should be given attribution + * as the author of the parts of the library used. + * This can be in the form of a textual message at program startup or + * in documentation (online or textual) provided with the package. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * "This product includes cryptographic software written by + * Eric Young (eay@cryptsoft.com)" + * The word 'cryptographic' can be left out if the rouines from the library + * being used are not cryptographic related :-). + * 4. If you include any Windows specific code (or a derivative thereof) from + * the apps directory (application code) you must include an acknowledgement: + * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" + * + * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * The licence and distribution terms for any publically available version or + * derivative of this code cannot be changed. i.e. this code cannot simply be + * copied and put under another distribution licence + * [including the GNU Public Licence.] + */ +/* ==================================================================== + * Copyright (c) 1998-2006 The OpenSSL Project. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. All advertising materials mentioning features or use of this + * software must display the following acknowledgment: + * "This product includes software developed by the OpenSSL Project + * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" + * + * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to + * endorse or promote products derived from this software without + * prior written permission. For written permission, please contact + * openssl-core@openssl.org. + * + * 5. Products derived from this software may not be called "OpenSSL" + * nor may "OpenSSL" appear in their names without prior written + * permission of the OpenSSL Project. + * + * 6. Redistributions of any form whatsoever must retain the following + * acknowledgment: + * "This product includes software developed by the OpenSSL Project + * for use in the OpenSSL Toolkit (http://www.openssl.org/)" + * + * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY + * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * ==================================================================== + * + * This product includes cryptographic software written by Eric Young + * (eay@cryptsoft.com). This product includes software written by Tim + * Hudson (tjh@cryptsoft.com). + * + */ +/* ==================================================================== + * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED. + * + * Portions of the attached software ("Contribution") are developed by + * SUN MICROSYSTEMS, INC., and are contributed to the OpenSSL project. + * + * The Contribution is licensed pursuant to the OpenSSL open source + * license provided above. + * + * ECC cipher suite support in OpenSSL originally written by + * Vipul Gupta and Sumit Gupta of Sun Microsystems Laboratories. + * + */ +/* ==================================================================== + * Copyright 2005 Nokia. All rights reserved. + * + * The portions of the attached software ("Contribution") is developed by + * Nokia Corporation and is licensed pursuant to the OpenSSL open source + * license. + * + * The Contribution, originally written by Mika Kousa and Pasi Eronen of + * Nokia Corporation, consists of the "PSK" (Pre-Shared Key) ciphersuites + * support (see RFC 4279) to OpenSSL. + * + * No patent licenses or other rights except those expressly stated in + * the OpenSSL open source license shall be deemed granted or received + * expressly, by implication, estoppel, or otherwise. + * + * No assurances are provided by Nokia that the Contribution does not + * infringe the patent or other intellectual property rights of any third + * party or that the license provides you with all the necessary rights + * to make use of the Contribution. + * + * THE SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. IN + * ADDITION TO THE DISCLAIMERS INCLUDED IN THE LICENSE, NOKIA + * SPECIFICALLY DISCLAIMS ANY LIABILITY FOR CLAIMS BROUGHT BY YOU OR ANY + * OTHER ENTITY BASED ON INFRINGEMENT OF INTELLECTUAL PROPERTY RIGHTS OR + * OTHERWISE. + */ + +#ifndef HEADER_TLS1_H +# define HEADER_TLS1_H + +# include + +#ifdef __cplusplus +extern "C" { +#endif + +# define TLS1_ALLOW_EXPERIMENTAL_CIPHERSUITES 0 + +# define TLS1_VERSION 0x0301 +# define TLS1_1_VERSION 0x0302 +# define TLS1_2_VERSION 0x0303 +# define TLS_MAX_VERSION TLS1_2_VERSION + +# define TLS1_VERSION_MAJOR 0x03 +# define TLS1_VERSION_MINOR 0x01 + +# define TLS1_1_VERSION_MAJOR 0x03 +# define TLS1_1_VERSION_MINOR 0x02 + +# define TLS1_2_VERSION_MAJOR 0x03 +# define TLS1_2_VERSION_MINOR 0x03 + +# define TLS1_get_version(s) \ + ((s->version >> 8) == TLS1_VERSION_MAJOR ? s->version : 0) + +# define TLS1_get_client_version(s) \ + ((s->client_version >> 8) == TLS1_VERSION_MAJOR ? s->client_version : 0) + +# define TLS1_AD_DECRYPTION_FAILED 21 +# define TLS1_AD_RECORD_OVERFLOW 22 +# define TLS1_AD_UNKNOWN_CA 48/* fatal */ +# define TLS1_AD_ACCESS_DENIED 49/* fatal */ +# define TLS1_AD_DECODE_ERROR 50/* fatal */ +# define TLS1_AD_DECRYPT_ERROR 51 +# define TLS1_AD_EXPORT_RESTRICTION 60/* fatal */ +# define TLS1_AD_PROTOCOL_VERSION 70/* fatal */ +# define TLS1_AD_INSUFFICIENT_SECURITY 71/* fatal */ +# define TLS1_AD_INTERNAL_ERROR 80/* fatal */ +# define TLS1_AD_INAPPROPRIATE_FALLBACK 86/* fatal */ +# define TLS1_AD_USER_CANCELLED 90 +# define TLS1_AD_NO_RENEGOTIATION 100 +/* codes 110-114 are from RFC3546 */ +# define TLS1_AD_UNSUPPORTED_EXTENSION 110 +# define TLS1_AD_CERTIFICATE_UNOBTAINABLE 111 +# define TLS1_AD_UNRECOGNIZED_NAME 112 +# define TLS1_AD_BAD_CERTIFICATE_STATUS_RESPONSE 113 +# define TLS1_AD_BAD_CERTIFICATE_HASH_VALUE 114 +# define TLS1_AD_UNKNOWN_PSK_IDENTITY 115/* fatal */ + +/* ExtensionType values from RFC3546 / RFC4366 / RFC6066 */ +# define TLSEXT_TYPE_server_name 0 +# define TLSEXT_TYPE_max_fragment_length 1 +# define TLSEXT_TYPE_client_certificate_url 2 +# define TLSEXT_TYPE_trusted_ca_keys 3 +# define TLSEXT_TYPE_truncated_hmac 4 +# define TLSEXT_TYPE_status_request 5 +/* ExtensionType values from RFC4681 */ +# define TLSEXT_TYPE_user_mapping 6 +/* ExtensionType values from RFC5878 */ +# define TLSEXT_TYPE_client_authz 7 +# define TLSEXT_TYPE_server_authz 8 +/* ExtensionType values from RFC6091 */ +# define TLSEXT_TYPE_cert_type 9 + +/* ExtensionType values from RFC4492 */ +# define TLSEXT_TYPE_elliptic_curves 10 +# define TLSEXT_TYPE_ec_point_formats 11 + +/* ExtensionType value from RFC5054 */ +# define TLSEXT_TYPE_srp 12 + +/* ExtensionType values from RFC5246 */ +# define TLSEXT_TYPE_signature_algorithms 13 + +/* ExtensionType value from RFC5764 */ +# define TLSEXT_TYPE_use_srtp 14 + +/* ExtensionType value from RFC5620 */ +# define TLSEXT_TYPE_heartbeat 15 + +/* ExtensionType value from draft-ietf-tls-applayerprotoneg-00 */ +# define TLSEXT_TYPE_application_layer_protocol_negotiation 16 + +/* + * ExtensionType value for TLS padding extension. + * http://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml + * http://tools.ietf.org/html/draft-agl-tls-padding-03 + */ +# define TLSEXT_TYPE_padding 21 + +/* ExtensionType value from RFC4507 */ +# define TLSEXT_TYPE_session_ticket 35 + +/* ExtensionType value from draft-rescorla-tls-opaque-prf-input-00.txt */ +# if 0 +/* + * will have to be provided externally for now , + * i.e. build with -DTLSEXT_TYPE_opaque_prf_input=38183 + * using whatever extension number you'd like to try + */ +# define TLSEXT_TYPE_opaque_prf_input ?? +# endif + +/* Temporary extension type */ +# define TLSEXT_TYPE_renegotiate 0xff01 + +# ifndef OPENSSL_NO_NEXTPROTONEG +/* This is not an IANA defined extension number */ +# define TLSEXT_TYPE_next_proto_neg 13172 +# endif + +/* NameType value from RFC 3546 */ +# define TLSEXT_NAMETYPE_host_name 0 +/* status request value from RFC 3546 */ +# define TLSEXT_STATUSTYPE_ocsp 1 + +/* ECPointFormat values from draft-ietf-tls-ecc-12 */ +# define TLSEXT_ECPOINTFORMAT_first 0 +# define TLSEXT_ECPOINTFORMAT_uncompressed 0 +# define TLSEXT_ECPOINTFORMAT_ansiX962_compressed_prime 1 +# define TLSEXT_ECPOINTFORMAT_ansiX962_compressed_char2 2 +# define TLSEXT_ECPOINTFORMAT_last 2 + +/* Signature and hash algorithms from RFC 5246 */ + +# define TLSEXT_signature_anonymous 0 +# define TLSEXT_signature_rsa 1 +# define TLSEXT_signature_dsa 2 +# define TLSEXT_signature_ecdsa 3 + +/* Total number of different signature algorithms */ +# define TLSEXT_signature_num 4 + +# define TLSEXT_hash_none 0 +# define TLSEXT_hash_md5 1 +# define TLSEXT_hash_sha1 2 +# define TLSEXT_hash_sha224 3 +# define TLSEXT_hash_sha256 4 +# define TLSEXT_hash_sha384 5 +# define TLSEXT_hash_sha512 6 + +/* Total number of different digest algorithms */ + +# define TLSEXT_hash_num 7 + +/* Flag set for unrecognised algorithms */ +# define TLSEXT_nid_unknown 0x1000000 + +/* ECC curves */ + +# define TLSEXT_curve_P_256 23 +# define TLSEXT_curve_P_384 24 + +# ifndef OPENSSL_NO_TLSEXT + +# define TLSEXT_MAXLEN_host_name 255 + +const char *SSL_get_servername(const SSL *s, const int type); +int SSL_get_servername_type(const SSL *s); +/* + * SSL_export_keying_material exports a value derived from the master secret, + * as specified in RFC 5705. It writes |olen| bytes to |out| given a label and + * optional context. (Since a zero length context is allowed, the |use_context| + * flag controls whether a context is included.) It returns 1 on success and + * zero otherwise. + */ +int SSL_export_keying_material(SSL *s, unsigned char *out, size_t olen, + const char *label, size_t llen, + const unsigned char *p, size_t plen, + int use_context); + +int SSL_get_sigalgs(SSL *s, int idx, + int *psign, int *phash, int *psignandhash, + unsigned char *rsig, unsigned char *rhash); + +int SSL_get_shared_sigalgs(SSL *s, int idx, + int *psign, int *phash, int *psignandhash, + unsigned char *rsig, unsigned char *rhash); + +int SSL_check_chain(SSL *s, X509 *x, EVP_PKEY *pk, STACK_OF(X509) *chain); + +# define SSL_set_tlsext_host_name(s,name) \ +SSL_ctrl(s,SSL_CTRL_SET_TLSEXT_HOSTNAME,TLSEXT_NAMETYPE_host_name,(char *)name) + +# define SSL_set_tlsext_debug_callback(ssl, cb) \ +SSL_callback_ctrl(ssl,SSL_CTRL_SET_TLSEXT_DEBUG_CB,(void (*)(void))cb) + +# define SSL_set_tlsext_debug_arg(ssl, arg) \ +SSL_ctrl(ssl,SSL_CTRL_SET_TLSEXT_DEBUG_ARG,0, (void *)arg) + +# define SSL_set_tlsext_status_type(ssl, type) \ +SSL_ctrl(ssl,SSL_CTRL_SET_TLSEXT_STATUS_REQ_TYPE,type, NULL) + +# define SSL_get_tlsext_status_exts(ssl, arg) \ +SSL_ctrl(ssl,SSL_CTRL_GET_TLSEXT_STATUS_REQ_EXTS,0, (void *)arg) + +# define SSL_set_tlsext_status_exts(ssl, arg) \ +SSL_ctrl(ssl,SSL_CTRL_SET_TLSEXT_STATUS_REQ_EXTS,0, (void *)arg) + +# define SSL_get_tlsext_status_ids(ssl, arg) \ +SSL_ctrl(ssl,SSL_CTRL_GET_TLSEXT_STATUS_REQ_IDS,0, (void *)arg) + +# define SSL_set_tlsext_status_ids(ssl, arg) \ +SSL_ctrl(ssl,SSL_CTRL_SET_TLSEXT_STATUS_REQ_IDS,0, (void *)arg) + +# define SSL_get_tlsext_status_ocsp_resp(ssl, arg) \ +SSL_ctrl(ssl,SSL_CTRL_GET_TLSEXT_STATUS_REQ_OCSP_RESP,0, (void *)arg) + +# define SSL_set_tlsext_status_ocsp_resp(ssl, arg, arglen) \ +SSL_ctrl(ssl,SSL_CTRL_SET_TLSEXT_STATUS_REQ_OCSP_RESP,arglen, (void *)arg) + +# define SSL_CTX_set_tlsext_servername_callback(ctx, cb) \ +SSL_CTX_callback_ctrl(ctx,SSL_CTRL_SET_TLSEXT_SERVERNAME_CB,(void (*)(void))cb) + +# define SSL_TLSEXT_ERR_OK 0 +# define SSL_TLSEXT_ERR_ALERT_WARNING 1 +# define SSL_TLSEXT_ERR_ALERT_FATAL 2 +# define SSL_TLSEXT_ERR_NOACK 3 + +# define SSL_CTX_set_tlsext_servername_arg(ctx, arg) \ +SSL_CTX_ctrl(ctx,SSL_CTRL_SET_TLSEXT_SERVERNAME_ARG,0, (void *)arg) + +# define SSL_CTX_get_tlsext_ticket_keys(ctx, keys, keylen) \ + SSL_CTX_ctrl((ctx),SSL_CTRL_GET_TLSEXT_TICKET_KEYS,(keylen),(keys)) +# define SSL_CTX_set_tlsext_ticket_keys(ctx, keys, keylen) \ + SSL_CTX_ctrl((ctx),SSL_CTRL_SET_TLSEXT_TICKET_KEYS,(keylen),(keys)) + +# define SSL_CTX_set_tlsext_status_cb(ssl, cb) \ +SSL_CTX_callback_ctrl(ssl,SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB,(void (*)(void))cb) + +# define SSL_CTX_set_tlsext_status_arg(ssl, arg) \ +SSL_CTX_ctrl(ssl,SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB_ARG,0, (void *)arg) + +# define SSL_set_tlsext_opaque_prf_input(s, src, len) \ +SSL_ctrl(s,SSL_CTRL_SET_TLSEXT_OPAQUE_PRF_INPUT, len, src) +# define SSL_CTX_set_tlsext_opaque_prf_input_callback(ctx, cb) \ +SSL_CTX_callback_ctrl(ctx,SSL_CTRL_SET_TLSEXT_OPAQUE_PRF_INPUT_CB, (void (*)(void))cb) +# define SSL_CTX_set_tlsext_opaque_prf_input_callback_arg(ctx, arg) \ +SSL_CTX_ctrl(ctx,SSL_CTRL_SET_TLSEXT_OPAQUE_PRF_INPUT_CB_ARG, 0, arg) + +# define SSL_CTX_set_tlsext_ticket_key_cb(ssl, cb) \ +SSL_CTX_callback_ctrl(ssl,SSL_CTRL_SET_TLSEXT_TICKET_KEY_CB,(void (*)(void))cb) + +# ifndef OPENSSL_NO_HEARTBEATS +# define SSL_TLSEXT_HB_ENABLED 0x01 +# define SSL_TLSEXT_HB_DONT_SEND_REQUESTS 0x02 +# define SSL_TLSEXT_HB_DONT_RECV_REQUESTS 0x04 + +# define SSL_get_tlsext_heartbeat_pending(ssl) \ + SSL_ctrl((ssl),SSL_CTRL_GET_TLS_EXT_HEARTBEAT_PENDING,0,NULL) +# define SSL_set_tlsext_heartbeat_no_requests(ssl, arg) \ + SSL_ctrl((ssl),SSL_CTRL_SET_TLS_EXT_HEARTBEAT_NO_REQUESTS,arg,NULL) +# endif +# endif + +/* PSK ciphersuites from 4279 */ +# define TLS1_CK_PSK_WITH_RC4_128_SHA 0x0300008A +# define TLS1_CK_PSK_WITH_3DES_EDE_CBC_SHA 0x0300008B +# define TLS1_CK_PSK_WITH_AES_128_CBC_SHA 0x0300008C +# define TLS1_CK_PSK_WITH_AES_256_CBC_SHA 0x0300008D + +/* + * Additional TLS ciphersuites from expired Internet Draft + * draft-ietf-tls-56-bit-ciphersuites-01.txt (available if + * TLS1_ALLOW_EXPERIMENTAL_CIPHERSUITES is defined, see s3_lib.c). We + * actually treat them like SSL 3.0 ciphers, which we probably shouldn't. + * Note that the first two are actually not in the IDs. + */ +# define TLS1_CK_RSA_EXPORT1024_WITH_RC4_56_MD5 0x03000060/* not in + * ID */ +# define TLS1_CK_RSA_EXPORT1024_WITH_RC2_CBC_56_MD5 0x03000061/* not in + * ID */ +# define TLS1_CK_RSA_EXPORT1024_WITH_DES_CBC_SHA 0x03000062 +# define TLS1_CK_DHE_DSS_EXPORT1024_WITH_DES_CBC_SHA 0x03000063 +# define TLS1_CK_RSA_EXPORT1024_WITH_RC4_56_SHA 0x03000064 +# define TLS1_CK_DHE_DSS_EXPORT1024_WITH_RC4_56_SHA 0x03000065 +# define TLS1_CK_DHE_DSS_WITH_RC4_128_SHA 0x03000066 + +/* AES ciphersuites from RFC3268 */ + +# define TLS1_CK_RSA_WITH_AES_128_SHA 0x0300002F +# define TLS1_CK_DH_DSS_WITH_AES_128_SHA 0x03000030 +# define TLS1_CK_DH_RSA_WITH_AES_128_SHA 0x03000031 +# define TLS1_CK_DHE_DSS_WITH_AES_128_SHA 0x03000032 +# define TLS1_CK_DHE_RSA_WITH_AES_128_SHA 0x03000033 +# define TLS1_CK_ADH_WITH_AES_128_SHA 0x03000034 + +# define TLS1_CK_RSA_WITH_AES_256_SHA 0x03000035 +# define TLS1_CK_DH_DSS_WITH_AES_256_SHA 0x03000036 +# define TLS1_CK_DH_RSA_WITH_AES_256_SHA 0x03000037 +# define TLS1_CK_DHE_DSS_WITH_AES_256_SHA 0x03000038 +# define TLS1_CK_DHE_RSA_WITH_AES_256_SHA 0x03000039 +# define TLS1_CK_ADH_WITH_AES_256_SHA 0x0300003A + +/* TLS v1.2 ciphersuites */ +# define TLS1_CK_RSA_WITH_NULL_SHA256 0x0300003B +# define TLS1_CK_RSA_WITH_AES_128_SHA256 0x0300003C +# define TLS1_CK_RSA_WITH_AES_256_SHA256 0x0300003D +# define TLS1_CK_DH_DSS_WITH_AES_128_SHA256 0x0300003E +# define TLS1_CK_DH_RSA_WITH_AES_128_SHA256 0x0300003F +# define TLS1_CK_DHE_DSS_WITH_AES_128_SHA256 0x03000040 + +/* Camellia ciphersuites from RFC4132 */ +# define TLS1_CK_RSA_WITH_CAMELLIA_128_CBC_SHA 0x03000041 +# define TLS1_CK_DH_DSS_WITH_CAMELLIA_128_CBC_SHA 0x03000042 +# define TLS1_CK_DH_RSA_WITH_CAMELLIA_128_CBC_SHA 0x03000043 +# define TLS1_CK_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA 0x03000044 +# define TLS1_CK_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA 0x03000045 +# define TLS1_CK_ADH_WITH_CAMELLIA_128_CBC_SHA 0x03000046 + +/* TLS v1.2 ciphersuites */ +# define TLS1_CK_DHE_RSA_WITH_AES_128_SHA256 0x03000067 +# define TLS1_CK_DH_DSS_WITH_AES_256_SHA256 0x03000068 +# define TLS1_CK_DH_RSA_WITH_AES_256_SHA256 0x03000069 +# define TLS1_CK_DHE_DSS_WITH_AES_256_SHA256 0x0300006A +# define TLS1_CK_DHE_RSA_WITH_AES_256_SHA256 0x0300006B +# define TLS1_CK_ADH_WITH_AES_128_SHA256 0x0300006C +# define TLS1_CK_ADH_WITH_AES_256_SHA256 0x0300006D + +/* Camellia ciphersuites from RFC4132 */ +# define TLS1_CK_RSA_WITH_CAMELLIA_256_CBC_SHA 0x03000084 +# define TLS1_CK_DH_DSS_WITH_CAMELLIA_256_CBC_SHA 0x03000085 +# define TLS1_CK_DH_RSA_WITH_CAMELLIA_256_CBC_SHA 0x03000086 +# define TLS1_CK_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA 0x03000087 +# define TLS1_CK_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA 0x03000088 +# define TLS1_CK_ADH_WITH_CAMELLIA_256_CBC_SHA 0x03000089 + +/* SEED ciphersuites from RFC4162 */ +# define TLS1_CK_RSA_WITH_SEED_SHA 0x03000096 +# define TLS1_CK_DH_DSS_WITH_SEED_SHA 0x03000097 +# define TLS1_CK_DH_RSA_WITH_SEED_SHA 0x03000098 +# define TLS1_CK_DHE_DSS_WITH_SEED_SHA 0x03000099 +# define TLS1_CK_DHE_RSA_WITH_SEED_SHA 0x0300009A +# define TLS1_CK_ADH_WITH_SEED_SHA 0x0300009B + +/* TLS v1.2 GCM ciphersuites from RFC5288 */ +# define TLS1_CK_RSA_WITH_AES_128_GCM_SHA256 0x0300009C +# define TLS1_CK_RSA_WITH_AES_256_GCM_SHA384 0x0300009D +# define TLS1_CK_DHE_RSA_WITH_AES_128_GCM_SHA256 0x0300009E +# define TLS1_CK_DHE_RSA_WITH_AES_256_GCM_SHA384 0x0300009F +# define TLS1_CK_DH_RSA_WITH_AES_128_GCM_SHA256 0x030000A0 +# define TLS1_CK_DH_RSA_WITH_AES_256_GCM_SHA384 0x030000A1 +# define TLS1_CK_DHE_DSS_WITH_AES_128_GCM_SHA256 0x030000A2 +# define TLS1_CK_DHE_DSS_WITH_AES_256_GCM_SHA384 0x030000A3 +# define TLS1_CK_DH_DSS_WITH_AES_128_GCM_SHA256 0x030000A4 +# define TLS1_CK_DH_DSS_WITH_AES_256_GCM_SHA384 0x030000A5 +# define TLS1_CK_ADH_WITH_AES_128_GCM_SHA256 0x030000A6 +# define TLS1_CK_ADH_WITH_AES_256_GCM_SHA384 0x030000A7 + +/* + * ECC ciphersuites from draft-ietf-tls-ecc-12.txt with changes soon to be in + * draft 13 + */ +# define TLS1_CK_ECDH_ECDSA_WITH_NULL_SHA 0x0300C001 +# define TLS1_CK_ECDH_ECDSA_WITH_RC4_128_SHA 0x0300C002 +# define TLS1_CK_ECDH_ECDSA_WITH_DES_192_CBC3_SHA 0x0300C003 +# define TLS1_CK_ECDH_ECDSA_WITH_AES_128_CBC_SHA 0x0300C004 +# define TLS1_CK_ECDH_ECDSA_WITH_AES_256_CBC_SHA 0x0300C005 + +# define TLS1_CK_ECDHE_ECDSA_WITH_NULL_SHA 0x0300C006 +# define TLS1_CK_ECDHE_ECDSA_WITH_RC4_128_SHA 0x0300C007 +# define TLS1_CK_ECDHE_ECDSA_WITH_DES_192_CBC3_SHA 0x0300C008 +# define TLS1_CK_ECDHE_ECDSA_WITH_AES_128_CBC_SHA 0x0300C009 +# define TLS1_CK_ECDHE_ECDSA_WITH_AES_256_CBC_SHA 0x0300C00A + +# define TLS1_CK_ECDH_RSA_WITH_NULL_SHA 0x0300C00B +# define TLS1_CK_ECDH_RSA_WITH_RC4_128_SHA 0x0300C00C +# define TLS1_CK_ECDH_RSA_WITH_DES_192_CBC3_SHA 0x0300C00D +# define TLS1_CK_ECDH_RSA_WITH_AES_128_CBC_SHA 0x0300C00E +# define TLS1_CK_ECDH_RSA_WITH_AES_256_CBC_SHA 0x0300C00F + +# define TLS1_CK_ECDHE_RSA_WITH_NULL_SHA 0x0300C010 +# define TLS1_CK_ECDHE_RSA_WITH_RC4_128_SHA 0x0300C011 +# define TLS1_CK_ECDHE_RSA_WITH_DES_192_CBC3_SHA 0x0300C012 +# define TLS1_CK_ECDHE_RSA_WITH_AES_128_CBC_SHA 0x0300C013 +# define TLS1_CK_ECDHE_RSA_WITH_AES_256_CBC_SHA 0x0300C014 + +# define TLS1_CK_ECDH_anon_WITH_NULL_SHA 0x0300C015 +# define TLS1_CK_ECDH_anon_WITH_RC4_128_SHA 0x0300C016 +# define TLS1_CK_ECDH_anon_WITH_DES_192_CBC3_SHA 0x0300C017 +# define TLS1_CK_ECDH_anon_WITH_AES_128_CBC_SHA 0x0300C018 +# define TLS1_CK_ECDH_anon_WITH_AES_256_CBC_SHA 0x0300C019 + +/* SRP ciphersuites from RFC 5054 */ +# define TLS1_CK_SRP_SHA_WITH_3DES_EDE_CBC_SHA 0x0300C01A +# define TLS1_CK_SRP_SHA_RSA_WITH_3DES_EDE_CBC_SHA 0x0300C01B +# define TLS1_CK_SRP_SHA_DSS_WITH_3DES_EDE_CBC_SHA 0x0300C01C +# define TLS1_CK_SRP_SHA_WITH_AES_128_CBC_SHA 0x0300C01D +# define TLS1_CK_SRP_SHA_RSA_WITH_AES_128_CBC_SHA 0x0300C01E +# define TLS1_CK_SRP_SHA_DSS_WITH_AES_128_CBC_SHA 0x0300C01F +# define TLS1_CK_SRP_SHA_WITH_AES_256_CBC_SHA 0x0300C020 +# define TLS1_CK_SRP_SHA_RSA_WITH_AES_256_CBC_SHA 0x0300C021 +# define TLS1_CK_SRP_SHA_DSS_WITH_AES_256_CBC_SHA 0x0300C022 + +/* ECDH HMAC based ciphersuites from RFC5289 */ + +# define TLS1_CK_ECDHE_ECDSA_WITH_AES_128_SHA256 0x0300C023 +# define TLS1_CK_ECDHE_ECDSA_WITH_AES_256_SHA384 0x0300C024 +# define TLS1_CK_ECDH_ECDSA_WITH_AES_128_SHA256 0x0300C025 +# define TLS1_CK_ECDH_ECDSA_WITH_AES_256_SHA384 0x0300C026 +# define TLS1_CK_ECDHE_RSA_WITH_AES_128_SHA256 0x0300C027 +# define TLS1_CK_ECDHE_RSA_WITH_AES_256_SHA384 0x0300C028 +# define TLS1_CK_ECDH_RSA_WITH_AES_128_SHA256 0x0300C029 +# define TLS1_CK_ECDH_RSA_WITH_AES_256_SHA384 0x0300C02A + +/* ECDH GCM based ciphersuites from RFC5289 */ +# define TLS1_CK_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 0x0300C02B +# define TLS1_CK_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 0x0300C02C +# define TLS1_CK_ECDH_ECDSA_WITH_AES_128_GCM_SHA256 0x0300C02D +# define TLS1_CK_ECDH_ECDSA_WITH_AES_256_GCM_SHA384 0x0300C02E +# define TLS1_CK_ECDHE_RSA_WITH_AES_128_GCM_SHA256 0x0300C02F +# define TLS1_CK_ECDHE_RSA_WITH_AES_256_GCM_SHA384 0x0300C030 +# define TLS1_CK_ECDH_RSA_WITH_AES_128_GCM_SHA256 0x0300C031 +# define TLS1_CK_ECDH_RSA_WITH_AES_256_GCM_SHA384 0x0300C032 + +/* + * XXX * Backward compatibility alert: + * Older versions of OpenSSL gave + * some DHE ciphers names with "EDH" + * instead of "DHE". Going forward, we + * should be using DHE + * everywhere, though we may indefinitely maintain + * aliases for users + * or configurations that used "EDH" + + */ +# define TLS1_TXT_RSA_EXPORT1024_WITH_RC4_56_MD5 "EXP1024-RC4-MD5" +# define TLS1_TXT_RSA_EXPORT1024_WITH_RC2_CBC_56_MD5 "EXP1024-RC2-CBC-MD5" +# define TLS1_TXT_RSA_EXPORT1024_WITH_DES_CBC_SHA "EXP1024-DES-CBC-SHA" +# define TLS1_TXT_DHE_DSS_EXPORT1024_WITH_DES_CBC_SHA "EXP1024-DHE-DSS-DES-CBC-SHA" +# define TLS1_TXT_RSA_EXPORT1024_WITH_RC4_56_SHA "EXP1024-RC4-SHA" +# define TLS1_TXT_DHE_DSS_EXPORT1024_WITH_RC4_56_SHA "EXP1024-DHE-DSS-RC4-SHA" +# define TLS1_TXT_DHE_DSS_WITH_RC4_128_SHA "DHE-DSS-RC4-SHA" + +/* AES ciphersuites from RFC3268 */ +# define TLS1_TXT_RSA_WITH_AES_128_SHA "AES128-SHA" +# define TLS1_TXT_DH_DSS_WITH_AES_128_SHA "DH-DSS-AES128-SHA" +# define TLS1_TXT_DH_RSA_WITH_AES_128_SHA "DH-RSA-AES128-SHA" +# define TLS1_TXT_DHE_DSS_WITH_AES_128_SHA "DHE-DSS-AES128-SHA" +# define TLS1_TXT_DHE_RSA_WITH_AES_128_SHA "DHE-RSA-AES128-SHA" +# define TLS1_TXT_ADH_WITH_AES_128_SHA "ADH-AES128-SHA" + +# define TLS1_TXT_RSA_WITH_AES_256_SHA "AES256-SHA" +# define TLS1_TXT_DH_DSS_WITH_AES_256_SHA "DH-DSS-AES256-SHA" +# define TLS1_TXT_DH_RSA_WITH_AES_256_SHA "DH-RSA-AES256-SHA" +# define TLS1_TXT_DHE_DSS_WITH_AES_256_SHA "DHE-DSS-AES256-SHA" +# define TLS1_TXT_DHE_RSA_WITH_AES_256_SHA "DHE-RSA-AES256-SHA" +# define TLS1_TXT_ADH_WITH_AES_256_SHA "ADH-AES256-SHA" + +/* ECC ciphersuites from draft-ietf-tls-ecc-01.txt (Mar 15, 2001) */ +# define TLS1_TXT_ECDH_ECDSA_WITH_NULL_SHA "ECDH-ECDSA-NULL-SHA" +# define TLS1_TXT_ECDH_ECDSA_WITH_RC4_128_SHA "ECDH-ECDSA-RC4-SHA" +# define TLS1_TXT_ECDH_ECDSA_WITH_DES_192_CBC3_SHA "ECDH-ECDSA-DES-CBC3-SHA" +# define TLS1_TXT_ECDH_ECDSA_WITH_AES_128_CBC_SHA "ECDH-ECDSA-AES128-SHA" +# define TLS1_TXT_ECDH_ECDSA_WITH_AES_256_CBC_SHA "ECDH-ECDSA-AES256-SHA" + +# define TLS1_TXT_ECDHE_ECDSA_WITH_NULL_SHA "ECDHE-ECDSA-NULL-SHA" +# define TLS1_TXT_ECDHE_ECDSA_WITH_RC4_128_SHA "ECDHE-ECDSA-RC4-SHA" +# define TLS1_TXT_ECDHE_ECDSA_WITH_DES_192_CBC3_SHA "ECDHE-ECDSA-DES-CBC3-SHA" +# define TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_CBC_SHA "ECDHE-ECDSA-AES128-SHA" +# define TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_CBC_SHA "ECDHE-ECDSA-AES256-SHA" + +# define TLS1_TXT_ECDH_RSA_WITH_NULL_SHA "ECDH-RSA-NULL-SHA" +# define TLS1_TXT_ECDH_RSA_WITH_RC4_128_SHA "ECDH-RSA-RC4-SHA" +# define TLS1_TXT_ECDH_RSA_WITH_DES_192_CBC3_SHA "ECDH-RSA-DES-CBC3-SHA" +# define TLS1_TXT_ECDH_RSA_WITH_AES_128_CBC_SHA "ECDH-RSA-AES128-SHA" +# define TLS1_TXT_ECDH_RSA_WITH_AES_256_CBC_SHA "ECDH-RSA-AES256-SHA" + +# define TLS1_TXT_ECDHE_RSA_WITH_NULL_SHA "ECDHE-RSA-NULL-SHA" +# define TLS1_TXT_ECDHE_RSA_WITH_RC4_128_SHA "ECDHE-RSA-RC4-SHA" +# define TLS1_TXT_ECDHE_RSA_WITH_DES_192_CBC3_SHA "ECDHE-RSA-DES-CBC3-SHA" +# define TLS1_TXT_ECDHE_RSA_WITH_AES_128_CBC_SHA "ECDHE-RSA-AES128-SHA" +# define TLS1_TXT_ECDHE_RSA_WITH_AES_256_CBC_SHA "ECDHE-RSA-AES256-SHA" + +# define TLS1_TXT_ECDH_anon_WITH_NULL_SHA "AECDH-NULL-SHA" +# define TLS1_TXT_ECDH_anon_WITH_RC4_128_SHA "AECDH-RC4-SHA" +# define TLS1_TXT_ECDH_anon_WITH_DES_192_CBC3_SHA "AECDH-DES-CBC3-SHA" +# define TLS1_TXT_ECDH_anon_WITH_AES_128_CBC_SHA "AECDH-AES128-SHA" +# define TLS1_TXT_ECDH_anon_WITH_AES_256_CBC_SHA "AECDH-AES256-SHA" + +/* PSK ciphersuites from RFC 4279 */ +# define TLS1_TXT_PSK_WITH_RC4_128_SHA "PSK-RC4-SHA" +# define TLS1_TXT_PSK_WITH_3DES_EDE_CBC_SHA "PSK-3DES-EDE-CBC-SHA" +# define TLS1_TXT_PSK_WITH_AES_128_CBC_SHA "PSK-AES128-CBC-SHA" +# define TLS1_TXT_PSK_WITH_AES_256_CBC_SHA "PSK-AES256-CBC-SHA" + +/* SRP ciphersuite from RFC 5054 */ +# define TLS1_TXT_SRP_SHA_WITH_3DES_EDE_CBC_SHA "SRP-3DES-EDE-CBC-SHA" +# define TLS1_TXT_SRP_SHA_RSA_WITH_3DES_EDE_CBC_SHA "SRP-RSA-3DES-EDE-CBC-SHA" +# define TLS1_TXT_SRP_SHA_DSS_WITH_3DES_EDE_CBC_SHA "SRP-DSS-3DES-EDE-CBC-SHA" +# define TLS1_TXT_SRP_SHA_WITH_AES_128_CBC_SHA "SRP-AES-128-CBC-SHA" +# define TLS1_TXT_SRP_SHA_RSA_WITH_AES_128_CBC_SHA "SRP-RSA-AES-128-CBC-SHA" +# define TLS1_TXT_SRP_SHA_DSS_WITH_AES_128_CBC_SHA "SRP-DSS-AES-128-CBC-SHA" +# define TLS1_TXT_SRP_SHA_WITH_AES_256_CBC_SHA "SRP-AES-256-CBC-SHA" +# define TLS1_TXT_SRP_SHA_RSA_WITH_AES_256_CBC_SHA "SRP-RSA-AES-256-CBC-SHA" +# define TLS1_TXT_SRP_SHA_DSS_WITH_AES_256_CBC_SHA "SRP-DSS-AES-256-CBC-SHA" + +/* Camellia ciphersuites from RFC4132 */ +# define TLS1_TXT_RSA_WITH_CAMELLIA_128_CBC_SHA "CAMELLIA128-SHA" +# define TLS1_TXT_DH_DSS_WITH_CAMELLIA_128_CBC_SHA "DH-DSS-CAMELLIA128-SHA" +# define TLS1_TXT_DH_RSA_WITH_CAMELLIA_128_CBC_SHA "DH-RSA-CAMELLIA128-SHA" +# define TLS1_TXT_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA "DHE-DSS-CAMELLIA128-SHA" +# define TLS1_TXT_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA "DHE-RSA-CAMELLIA128-SHA" +# define TLS1_TXT_ADH_WITH_CAMELLIA_128_CBC_SHA "ADH-CAMELLIA128-SHA" + +# define TLS1_TXT_RSA_WITH_CAMELLIA_256_CBC_SHA "CAMELLIA256-SHA" +# define TLS1_TXT_DH_DSS_WITH_CAMELLIA_256_CBC_SHA "DH-DSS-CAMELLIA256-SHA" +# define TLS1_TXT_DH_RSA_WITH_CAMELLIA_256_CBC_SHA "DH-RSA-CAMELLIA256-SHA" +# define TLS1_TXT_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA "DHE-DSS-CAMELLIA256-SHA" +# define TLS1_TXT_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA "DHE-RSA-CAMELLIA256-SHA" +# define TLS1_TXT_ADH_WITH_CAMELLIA_256_CBC_SHA "ADH-CAMELLIA256-SHA" + +/* SEED ciphersuites from RFC4162 */ +# define TLS1_TXT_RSA_WITH_SEED_SHA "SEED-SHA" +# define TLS1_TXT_DH_DSS_WITH_SEED_SHA "DH-DSS-SEED-SHA" +# define TLS1_TXT_DH_RSA_WITH_SEED_SHA "DH-RSA-SEED-SHA" +# define TLS1_TXT_DHE_DSS_WITH_SEED_SHA "DHE-DSS-SEED-SHA" +# define TLS1_TXT_DHE_RSA_WITH_SEED_SHA "DHE-RSA-SEED-SHA" +# define TLS1_TXT_ADH_WITH_SEED_SHA "ADH-SEED-SHA" + +/* TLS v1.2 ciphersuites */ +# define TLS1_TXT_RSA_WITH_NULL_SHA256 "NULL-SHA256" +# define TLS1_TXT_RSA_WITH_AES_128_SHA256 "AES128-SHA256" +# define TLS1_TXT_RSA_WITH_AES_256_SHA256 "AES256-SHA256" +# define TLS1_TXT_DH_DSS_WITH_AES_128_SHA256 "DH-DSS-AES128-SHA256" +# define TLS1_TXT_DH_RSA_WITH_AES_128_SHA256 "DH-RSA-AES128-SHA256" +# define TLS1_TXT_DHE_DSS_WITH_AES_128_SHA256 "DHE-DSS-AES128-SHA256" +# define TLS1_TXT_DHE_RSA_WITH_AES_128_SHA256 "DHE-RSA-AES128-SHA256" +# define TLS1_TXT_DH_DSS_WITH_AES_256_SHA256 "DH-DSS-AES256-SHA256" +# define TLS1_TXT_DH_RSA_WITH_AES_256_SHA256 "DH-RSA-AES256-SHA256" +# define TLS1_TXT_DHE_DSS_WITH_AES_256_SHA256 "DHE-DSS-AES256-SHA256" +# define TLS1_TXT_DHE_RSA_WITH_AES_256_SHA256 "DHE-RSA-AES256-SHA256" +# define TLS1_TXT_ADH_WITH_AES_128_SHA256 "ADH-AES128-SHA256" +# define TLS1_TXT_ADH_WITH_AES_256_SHA256 "ADH-AES256-SHA256" + +/* TLS v1.2 GCM ciphersuites from RFC5288 */ +# define TLS1_TXT_RSA_WITH_AES_128_GCM_SHA256 "AES128-GCM-SHA256" +# define TLS1_TXT_RSA_WITH_AES_256_GCM_SHA384 "AES256-GCM-SHA384" +# define TLS1_TXT_DHE_RSA_WITH_AES_128_GCM_SHA256 "DHE-RSA-AES128-GCM-SHA256" +# define TLS1_TXT_DHE_RSA_WITH_AES_256_GCM_SHA384 "DHE-RSA-AES256-GCM-SHA384" +# define TLS1_TXT_DH_RSA_WITH_AES_128_GCM_SHA256 "DH-RSA-AES128-GCM-SHA256" +# define TLS1_TXT_DH_RSA_WITH_AES_256_GCM_SHA384 "DH-RSA-AES256-GCM-SHA384" +# define TLS1_TXT_DHE_DSS_WITH_AES_128_GCM_SHA256 "DHE-DSS-AES128-GCM-SHA256" +# define TLS1_TXT_DHE_DSS_WITH_AES_256_GCM_SHA384 "DHE-DSS-AES256-GCM-SHA384" +# define TLS1_TXT_DH_DSS_WITH_AES_128_GCM_SHA256 "DH-DSS-AES128-GCM-SHA256" +# define TLS1_TXT_DH_DSS_WITH_AES_256_GCM_SHA384 "DH-DSS-AES256-GCM-SHA384" +# define TLS1_TXT_ADH_WITH_AES_128_GCM_SHA256 "ADH-AES128-GCM-SHA256" +# define TLS1_TXT_ADH_WITH_AES_256_GCM_SHA384 "ADH-AES256-GCM-SHA384" + +/* ECDH HMAC based ciphersuites from RFC5289 */ + +# define TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_SHA256 "ECDHE-ECDSA-AES128-SHA256" +# define TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_SHA384 "ECDHE-ECDSA-AES256-SHA384" +# define TLS1_TXT_ECDH_ECDSA_WITH_AES_128_SHA256 "ECDH-ECDSA-AES128-SHA256" +# define TLS1_TXT_ECDH_ECDSA_WITH_AES_256_SHA384 "ECDH-ECDSA-AES256-SHA384" +# define TLS1_TXT_ECDHE_RSA_WITH_AES_128_SHA256 "ECDHE-RSA-AES128-SHA256" +# define TLS1_TXT_ECDHE_RSA_WITH_AES_256_SHA384 "ECDHE-RSA-AES256-SHA384" +# define TLS1_TXT_ECDH_RSA_WITH_AES_128_SHA256 "ECDH-RSA-AES128-SHA256" +# define TLS1_TXT_ECDH_RSA_WITH_AES_256_SHA384 "ECDH-RSA-AES256-SHA384" + +/* ECDH GCM based ciphersuites from RFC5289 */ +# define TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 "ECDHE-ECDSA-AES128-GCM-SHA256" +# define TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 "ECDHE-ECDSA-AES256-GCM-SHA384" +# define TLS1_TXT_ECDH_ECDSA_WITH_AES_128_GCM_SHA256 "ECDH-ECDSA-AES128-GCM-SHA256" +# define TLS1_TXT_ECDH_ECDSA_WITH_AES_256_GCM_SHA384 "ECDH-ECDSA-AES256-GCM-SHA384" +# define TLS1_TXT_ECDHE_RSA_WITH_AES_128_GCM_SHA256 "ECDHE-RSA-AES128-GCM-SHA256" +# define TLS1_TXT_ECDHE_RSA_WITH_AES_256_GCM_SHA384 "ECDHE-RSA-AES256-GCM-SHA384" +# define TLS1_TXT_ECDH_RSA_WITH_AES_128_GCM_SHA256 "ECDH-RSA-AES128-GCM-SHA256" +# define TLS1_TXT_ECDH_RSA_WITH_AES_256_GCM_SHA384 "ECDH-RSA-AES256-GCM-SHA384" + +# define TLS_CT_RSA_SIGN 1 +# define TLS_CT_DSS_SIGN 2 +# define TLS_CT_RSA_FIXED_DH 3 +# define TLS_CT_DSS_FIXED_DH 4 +# define TLS_CT_ECDSA_SIGN 64 +# define TLS_CT_RSA_FIXED_ECDH 65 +# define TLS_CT_ECDSA_FIXED_ECDH 66 +# define TLS_CT_GOST94_SIGN 21 +# define TLS_CT_GOST01_SIGN 22 +/* + * when correcting this number, correct also SSL3_CT_NUMBER in ssl3.h (see + * comment there) + */ +# define TLS_CT_NUMBER 9 + +# define TLS1_FINISH_MAC_LENGTH 12 + +# define TLS_MD_MAX_CONST_SIZE 20 +# define TLS_MD_CLIENT_FINISH_CONST "client finished" +# define TLS_MD_CLIENT_FINISH_CONST_SIZE 15 +# define TLS_MD_SERVER_FINISH_CONST "server finished" +# define TLS_MD_SERVER_FINISH_CONST_SIZE 15 +# define TLS_MD_SERVER_WRITE_KEY_CONST "server write key" +# define TLS_MD_SERVER_WRITE_KEY_CONST_SIZE 16 +# define TLS_MD_KEY_EXPANSION_CONST "key expansion" +# define TLS_MD_KEY_EXPANSION_CONST_SIZE 13 +# define TLS_MD_CLIENT_WRITE_KEY_CONST "client write key" +# define TLS_MD_CLIENT_WRITE_KEY_CONST_SIZE 16 +# define TLS_MD_SERVER_WRITE_KEY_CONST "server write key" +# define TLS_MD_SERVER_WRITE_KEY_CONST_SIZE 16 +# define TLS_MD_IV_BLOCK_CONST "IV block" +# define TLS_MD_IV_BLOCK_CONST_SIZE 8 +# define TLS_MD_MASTER_SECRET_CONST "master secret" +# define TLS_MD_MASTER_SECRET_CONST_SIZE 13 + +# ifdef CHARSET_EBCDIC +# undef TLS_MD_CLIENT_FINISH_CONST +/* + * client finished + */ +# define TLS_MD_CLIENT_FINISH_CONST "\x63\x6c\x69\x65\x6e\x74\x20\x66\x69\x6e\x69\x73\x68\x65\x64" + +# undef TLS_MD_SERVER_FINISH_CONST +/* + * server finished + */ +# define TLS_MD_SERVER_FINISH_CONST "\x73\x65\x72\x76\x65\x72\x20\x66\x69\x6e\x69\x73\x68\x65\x64" + +# undef TLS_MD_SERVER_WRITE_KEY_CONST +/* + * server write key + */ +# define TLS_MD_SERVER_WRITE_KEY_CONST "\x73\x65\x72\x76\x65\x72\x20\x77\x72\x69\x74\x65\x20\x6b\x65\x79" + +# undef TLS_MD_KEY_EXPANSION_CONST +/* + * key expansion + */ +# define TLS_MD_KEY_EXPANSION_CONST "\x6b\x65\x79\x20\x65\x78\x70\x61\x6e\x73\x69\x6f\x6e" + +# undef TLS_MD_CLIENT_WRITE_KEY_CONST +/* + * client write key + */ +# define TLS_MD_CLIENT_WRITE_KEY_CONST "\x63\x6c\x69\x65\x6e\x74\x20\x77\x72\x69\x74\x65\x20\x6b\x65\x79" + +# undef TLS_MD_SERVER_WRITE_KEY_CONST +/* + * server write key + */ +# define TLS_MD_SERVER_WRITE_KEY_CONST "\x73\x65\x72\x76\x65\x72\x20\x77\x72\x69\x74\x65\x20\x6b\x65\x79" + +# undef TLS_MD_IV_BLOCK_CONST +/* + * IV block + */ +# define TLS_MD_IV_BLOCK_CONST "\x49\x56\x20\x62\x6c\x6f\x63\x6b" + +# undef TLS_MD_MASTER_SECRET_CONST +/* + * master secret + */ +# define TLS_MD_MASTER_SECRET_CONST "\x6d\x61\x73\x74\x65\x72\x20\x73\x65\x63\x72\x65\x74" +# endif + +/* TLS Session Ticket extension struct */ +struct tls_session_ticket_ext_st { + unsigned short length; + void *data; +}; + +#ifdef __cplusplus +} +#endif +#endif diff --git a/ext/openssl-osx/include/openssl/x509.h b/ext/openssl-osx/include/openssl/x509.h new file mode 100644 index 00000000..99337b84 --- /dev/null +++ b/ext/openssl-osx/include/openssl/x509.h @@ -0,0 +1,1327 @@ +/* crypto/x509/x509.h */ +/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) + * All rights reserved. + * + * This package is an SSL implementation written + * by Eric Young (eay@cryptsoft.com). + * The implementation was written so as to conform with Netscapes SSL. + * + * This library is free for commercial and non-commercial use as long as + * the following conditions are aheared to. The following conditions + * apply to all code found in this distribution, be it the RC4, RSA, + * lhash, DES, etc., code; not just the SSL code. The SSL documentation + * included with this distribution is covered by the same copyright terms + * except that the holder is Tim Hudson (tjh@cryptsoft.com). + * + * Copyright remains Eric Young's, and as such any Copyright notices in + * the code are not to be removed. + * If this package is used in a product, Eric Young should be given attribution + * as the author of the parts of the library used. + * This can be in the form of a textual message at program startup or + * in documentation (online or textual) provided with the package. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * "This product includes cryptographic software written by + * Eric Young (eay@cryptsoft.com)" + * The word 'cryptographic' can be left out if the rouines from the library + * being used are not cryptographic related :-). + * 4. If you include any Windows specific code (or a derivative thereof) from + * the apps directory (application code) you must include an acknowledgement: + * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" + * + * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * The licence and distribution terms for any publically available version or + * derivative of this code cannot be changed. i.e. this code cannot simply be + * copied and put under another distribution licence + * [including the GNU Public Licence.] + */ +/* ==================================================================== + * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED. + * ECDH support in OpenSSL originally developed by + * SUN MICROSYSTEMS, INC., and contributed to the OpenSSL project. + */ + +#ifndef HEADER_X509_H +# define HEADER_X509_H + +# include +# include +# ifndef OPENSSL_NO_BUFFER +# include +# endif +# ifndef OPENSSL_NO_EVP +# include +# endif +# ifndef OPENSSL_NO_BIO +# include +# endif +# include +# include +# include + +# ifndef OPENSSL_NO_EC +# include +# endif + +# ifndef OPENSSL_NO_ECDSA +# include +# endif + +# ifndef OPENSSL_NO_ECDH +# include +# endif + +# ifndef OPENSSL_NO_DEPRECATED +# ifndef OPENSSL_NO_RSA +# include +# endif +# ifndef OPENSSL_NO_DSA +# include +# endif +# ifndef OPENSSL_NO_DH +# include +# endif +# endif + +# ifndef OPENSSL_NO_SHA +# include +# endif +# include + +#ifdef __cplusplus +extern "C" { +#endif + +# ifdef OPENSSL_SYS_WIN32 +/* Under Win32 these are defined in wincrypt.h */ +# undef X509_NAME +# undef X509_CERT_PAIR +# undef X509_EXTENSIONS +# endif + +# define X509_FILETYPE_PEM 1 +# define X509_FILETYPE_ASN1 2 +# define X509_FILETYPE_DEFAULT 3 + +# define X509v3_KU_DIGITAL_SIGNATURE 0x0080 +# define X509v3_KU_NON_REPUDIATION 0x0040 +# define X509v3_KU_KEY_ENCIPHERMENT 0x0020 +# define X509v3_KU_DATA_ENCIPHERMENT 0x0010 +# define X509v3_KU_KEY_AGREEMENT 0x0008 +# define X509v3_KU_KEY_CERT_SIGN 0x0004 +# define X509v3_KU_CRL_SIGN 0x0002 +# define X509v3_KU_ENCIPHER_ONLY 0x0001 +# define X509v3_KU_DECIPHER_ONLY 0x8000 +# define X509v3_KU_UNDEF 0xffff + +typedef struct X509_objects_st { + int nid; + int (*a2i) (void); + int (*i2a) (void); +} X509_OBJECTS; + +struct X509_algor_st { + ASN1_OBJECT *algorithm; + ASN1_TYPE *parameter; +} /* X509_ALGOR */ ; + +DECLARE_ASN1_SET_OF(X509_ALGOR) + +typedef STACK_OF(X509_ALGOR) X509_ALGORS; + +typedef struct X509_val_st { + ASN1_TIME *notBefore; + ASN1_TIME *notAfter; +} X509_VAL; + +struct X509_pubkey_st { + X509_ALGOR *algor; + ASN1_BIT_STRING *public_key; + EVP_PKEY *pkey; +}; + +typedef struct X509_sig_st { + X509_ALGOR *algor; + ASN1_OCTET_STRING *digest; +} X509_SIG; + +typedef struct X509_name_entry_st { + ASN1_OBJECT *object; + ASN1_STRING *value; + int set; + int size; /* temp variable */ +} X509_NAME_ENTRY; + +DECLARE_STACK_OF(X509_NAME_ENTRY) +DECLARE_ASN1_SET_OF(X509_NAME_ENTRY) + +/* we always keep X509_NAMEs in 2 forms. */ +struct X509_name_st { + STACK_OF(X509_NAME_ENTRY) *entries; + int modified; /* true if 'bytes' needs to be built */ +# ifndef OPENSSL_NO_BUFFER + BUF_MEM *bytes; +# else + char *bytes; +# endif +/* unsigned long hash; Keep the hash around for lookups */ + unsigned char *canon_enc; + int canon_enclen; +} /* X509_NAME */ ; + +DECLARE_STACK_OF(X509_NAME) + +# define X509_EX_V_NETSCAPE_HACK 0x8000 +# define X509_EX_V_INIT 0x0001 +typedef struct X509_extension_st { + ASN1_OBJECT *object; + ASN1_BOOLEAN critical; + ASN1_OCTET_STRING *value; +} X509_EXTENSION; + +typedef STACK_OF(X509_EXTENSION) X509_EXTENSIONS; + +DECLARE_STACK_OF(X509_EXTENSION) +DECLARE_ASN1_SET_OF(X509_EXTENSION) + +/* a sequence of these are used */ +typedef struct x509_attributes_st { + ASN1_OBJECT *object; + int single; /* 0 for a set, 1 for a single item (which is + * wrong) */ + union { + char *ptr; + /* + * 0 + */ STACK_OF(ASN1_TYPE) *set; + /* + * 1 + */ ASN1_TYPE *single; + } value; +} X509_ATTRIBUTE; + +DECLARE_STACK_OF(X509_ATTRIBUTE) +DECLARE_ASN1_SET_OF(X509_ATTRIBUTE) + +typedef struct X509_req_info_st { + ASN1_ENCODING enc; + ASN1_INTEGER *version; + X509_NAME *subject; + X509_PUBKEY *pubkey; + /* d=2 hl=2 l= 0 cons: cont: 00 */ + STACK_OF(X509_ATTRIBUTE) *attributes; /* [ 0 ] */ +} X509_REQ_INFO; + +typedef struct X509_req_st { + X509_REQ_INFO *req_info; + X509_ALGOR *sig_alg; + ASN1_BIT_STRING *signature; + int references; +} X509_REQ; + +typedef struct x509_cinf_st { + ASN1_INTEGER *version; /* [ 0 ] default of v1 */ + ASN1_INTEGER *serialNumber; + X509_ALGOR *signature; + X509_NAME *issuer; + X509_VAL *validity; + X509_NAME *subject; + X509_PUBKEY *key; + ASN1_BIT_STRING *issuerUID; /* [ 1 ] optional in v2 */ + ASN1_BIT_STRING *subjectUID; /* [ 2 ] optional in v2 */ + STACK_OF(X509_EXTENSION) *extensions; /* [ 3 ] optional in v3 */ + ASN1_ENCODING enc; +} X509_CINF; + +/* + * This stuff is certificate "auxiliary info" it contains details which are + * useful in certificate stores and databases. When used this is tagged onto + * the end of the certificate itself + */ + +typedef struct x509_cert_aux_st { + STACK_OF(ASN1_OBJECT) *trust; /* trusted uses */ + STACK_OF(ASN1_OBJECT) *reject; /* rejected uses */ + ASN1_UTF8STRING *alias; /* "friendly name" */ + ASN1_OCTET_STRING *keyid; /* key id of private key */ + STACK_OF(X509_ALGOR) *other; /* other unspecified info */ +} X509_CERT_AUX; + +struct x509_st { + X509_CINF *cert_info; + X509_ALGOR *sig_alg; + ASN1_BIT_STRING *signature; + int valid; + int references; + char *name; + CRYPTO_EX_DATA ex_data; + /* These contain copies of various extension values */ + long ex_pathlen; + long ex_pcpathlen; + unsigned long ex_flags; + unsigned long ex_kusage; + unsigned long ex_xkusage; + unsigned long ex_nscert; + ASN1_OCTET_STRING *skid; + AUTHORITY_KEYID *akid; + X509_POLICY_CACHE *policy_cache; + STACK_OF(DIST_POINT) *crldp; + STACK_OF(GENERAL_NAME) *altname; + NAME_CONSTRAINTS *nc; +# ifndef OPENSSL_NO_RFC3779 + STACK_OF(IPAddressFamily) *rfc3779_addr; + struct ASIdentifiers_st *rfc3779_asid; +# endif +# ifndef OPENSSL_NO_SHA + unsigned char sha1_hash[SHA_DIGEST_LENGTH]; +# endif + X509_CERT_AUX *aux; +} /* X509 */ ; + +DECLARE_STACK_OF(X509) +DECLARE_ASN1_SET_OF(X509) + +/* This is used for a table of trust checking functions */ + +typedef struct x509_trust_st { + int trust; + int flags; + int (*check_trust) (struct x509_trust_st *, X509 *, int); + char *name; + int arg1; + void *arg2; +} X509_TRUST; + +DECLARE_STACK_OF(X509_TRUST) + +typedef struct x509_cert_pair_st { + X509 *forward; + X509 *reverse; +} X509_CERT_PAIR; + +/* standard trust ids */ + +# define X509_TRUST_DEFAULT -1/* Only valid in purpose settings */ + +# define X509_TRUST_COMPAT 1 +# define X509_TRUST_SSL_CLIENT 2 +# define X509_TRUST_SSL_SERVER 3 +# define X509_TRUST_EMAIL 4 +# define X509_TRUST_OBJECT_SIGN 5 +# define X509_TRUST_OCSP_SIGN 6 +# define X509_TRUST_OCSP_REQUEST 7 +# define X509_TRUST_TSA 8 + +/* Keep these up to date! */ +# define X509_TRUST_MIN 1 +# define X509_TRUST_MAX 8 + +/* trust_flags values */ +# define X509_TRUST_DYNAMIC 1 +# define X509_TRUST_DYNAMIC_NAME 2 + +/* check_trust return codes */ + +# define X509_TRUST_TRUSTED 1 +# define X509_TRUST_REJECTED 2 +# define X509_TRUST_UNTRUSTED 3 + +/* Flags for X509_print_ex() */ + +# define X509_FLAG_COMPAT 0 +# define X509_FLAG_NO_HEADER 1L +# define X509_FLAG_NO_VERSION (1L << 1) +# define X509_FLAG_NO_SERIAL (1L << 2) +# define X509_FLAG_NO_SIGNAME (1L << 3) +# define X509_FLAG_NO_ISSUER (1L << 4) +# define X509_FLAG_NO_VALIDITY (1L << 5) +# define X509_FLAG_NO_SUBJECT (1L << 6) +# define X509_FLAG_NO_PUBKEY (1L << 7) +# define X509_FLAG_NO_EXTENSIONS (1L << 8) +# define X509_FLAG_NO_SIGDUMP (1L << 9) +# define X509_FLAG_NO_AUX (1L << 10) +# define X509_FLAG_NO_ATTRIBUTES (1L << 11) +# define X509_FLAG_NO_IDS (1L << 12) + +/* Flags specific to X509_NAME_print_ex() */ + +/* The field separator information */ + +# define XN_FLAG_SEP_MASK (0xf << 16) + +# define XN_FLAG_COMPAT 0/* Traditional SSLeay: use old + * X509_NAME_print */ +# define XN_FLAG_SEP_COMMA_PLUS (1 << 16)/* RFC2253 ,+ */ +# define XN_FLAG_SEP_CPLUS_SPC (2 << 16)/* ,+ spaced: more readable */ +# define XN_FLAG_SEP_SPLUS_SPC (3 << 16)/* ;+ spaced */ +# define XN_FLAG_SEP_MULTILINE (4 << 16)/* One line per field */ + +# define XN_FLAG_DN_REV (1 << 20)/* Reverse DN order */ + +/* How the field name is shown */ + +# define XN_FLAG_FN_MASK (0x3 << 21) + +# define XN_FLAG_FN_SN 0/* Object short name */ +# define XN_FLAG_FN_LN (1 << 21)/* Object long name */ +# define XN_FLAG_FN_OID (2 << 21)/* Always use OIDs */ +# define XN_FLAG_FN_NONE (3 << 21)/* No field names */ + +# define XN_FLAG_SPC_EQ (1 << 23)/* Put spaces round '=' */ + +/* + * This determines if we dump fields we don't recognise: RFC2253 requires + * this. + */ + +# define XN_FLAG_DUMP_UNKNOWN_FIELDS (1 << 24) + +# define XN_FLAG_FN_ALIGN (1 << 25)/* Align field names to 20 + * characters */ + +/* Complete set of RFC2253 flags */ + +# define XN_FLAG_RFC2253 (ASN1_STRFLGS_RFC2253 | \ + XN_FLAG_SEP_COMMA_PLUS | \ + XN_FLAG_DN_REV | \ + XN_FLAG_FN_SN | \ + XN_FLAG_DUMP_UNKNOWN_FIELDS) + +/* readable oneline form */ + +# define XN_FLAG_ONELINE (ASN1_STRFLGS_RFC2253 | \ + ASN1_STRFLGS_ESC_QUOTE | \ + XN_FLAG_SEP_CPLUS_SPC | \ + XN_FLAG_SPC_EQ | \ + XN_FLAG_FN_SN) + +/* readable multiline form */ + +# define XN_FLAG_MULTILINE (ASN1_STRFLGS_ESC_CTRL | \ + ASN1_STRFLGS_ESC_MSB | \ + XN_FLAG_SEP_MULTILINE | \ + XN_FLAG_SPC_EQ | \ + XN_FLAG_FN_LN | \ + XN_FLAG_FN_ALIGN) + +struct x509_revoked_st { + ASN1_INTEGER *serialNumber; + ASN1_TIME *revocationDate; + STACK_OF(X509_EXTENSION) /* optional */ *extensions; + /* Set up if indirect CRL */ + STACK_OF(GENERAL_NAME) *issuer; + /* Revocation reason */ + int reason; + int sequence; /* load sequence */ +}; + +DECLARE_STACK_OF(X509_REVOKED) +DECLARE_ASN1_SET_OF(X509_REVOKED) + +typedef struct X509_crl_info_st { + ASN1_INTEGER *version; + X509_ALGOR *sig_alg; + X509_NAME *issuer; + ASN1_TIME *lastUpdate; + ASN1_TIME *nextUpdate; + STACK_OF(X509_REVOKED) *revoked; + STACK_OF(X509_EXTENSION) /* [0] */ *extensions; + ASN1_ENCODING enc; +} X509_CRL_INFO; + +struct X509_crl_st { + /* actual signature */ + X509_CRL_INFO *crl; + X509_ALGOR *sig_alg; + ASN1_BIT_STRING *signature; + int references; + int flags; + /* Copies of various extensions */ + AUTHORITY_KEYID *akid; + ISSUING_DIST_POINT *idp; + /* Convenient breakdown of IDP */ + int idp_flags; + int idp_reasons; + /* CRL and base CRL numbers for delta processing */ + ASN1_INTEGER *crl_number; + ASN1_INTEGER *base_crl_number; +# ifndef OPENSSL_NO_SHA + unsigned char sha1_hash[SHA_DIGEST_LENGTH]; +# endif + STACK_OF(GENERAL_NAMES) *issuers; + const X509_CRL_METHOD *meth; + void *meth_data; +} /* X509_CRL */ ; + +DECLARE_STACK_OF(X509_CRL) +DECLARE_ASN1_SET_OF(X509_CRL) + +typedef struct private_key_st { + int version; + /* The PKCS#8 data types */ + X509_ALGOR *enc_algor; + ASN1_OCTET_STRING *enc_pkey; /* encrypted pub key */ + /* When decrypted, the following will not be NULL */ + EVP_PKEY *dec_pkey; + /* used to encrypt and decrypt */ + int key_length; + char *key_data; + int key_free; /* true if we should auto free key_data */ + /* expanded version of 'enc_algor' */ + EVP_CIPHER_INFO cipher; + int references; +} X509_PKEY; + +# ifndef OPENSSL_NO_EVP +typedef struct X509_info_st { + X509 *x509; + X509_CRL *crl; + X509_PKEY *x_pkey; + EVP_CIPHER_INFO enc_cipher; + int enc_len; + char *enc_data; + int references; +} X509_INFO; + +DECLARE_STACK_OF(X509_INFO) +# endif + +/* + * The next 2 structures and their 8 routines were sent to me by Pat Richard + * and are used to manipulate Netscapes spki structures - + * useful if you are writing a CA web page + */ +typedef struct Netscape_spkac_st { + X509_PUBKEY *pubkey; + ASN1_IA5STRING *challenge; /* challenge sent in atlas >= PR2 */ +} NETSCAPE_SPKAC; + +typedef struct Netscape_spki_st { + NETSCAPE_SPKAC *spkac; /* signed public key and challenge */ + X509_ALGOR *sig_algor; + ASN1_BIT_STRING *signature; +} NETSCAPE_SPKI; + +/* Netscape certificate sequence structure */ +typedef struct Netscape_certificate_sequence { + ASN1_OBJECT *type; + STACK_OF(X509) *certs; +} NETSCAPE_CERT_SEQUENCE; + +/*- Unused (and iv length is wrong) +typedef struct CBCParameter_st + { + unsigned char iv[8]; + } CBC_PARAM; +*/ + +/* Password based encryption structure */ + +typedef struct PBEPARAM_st { + ASN1_OCTET_STRING *salt; + ASN1_INTEGER *iter; +} PBEPARAM; + +/* Password based encryption V2 structures */ + +typedef struct PBE2PARAM_st { + X509_ALGOR *keyfunc; + X509_ALGOR *encryption; +} PBE2PARAM; + +typedef struct PBKDF2PARAM_st { +/* Usually OCTET STRING but could be anything */ + ASN1_TYPE *salt; + ASN1_INTEGER *iter; + ASN1_INTEGER *keylength; + X509_ALGOR *prf; +} PBKDF2PARAM; + +/* PKCS#8 private key info structure */ + +struct pkcs8_priv_key_info_st { + /* Flag for various broken formats */ + int broken; +# define PKCS8_OK 0 +# define PKCS8_NO_OCTET 1 +# define PKCS8_EMBEDDED_PARAM 2 +# define PKCS8_NS_DB 3 +# define PKCS8_NEG_PRIVKEY 4 + ASN1_INTEGER *version; + X509_ALGOR *pkeyalg; + /* Should be OCTET STRING but some are broken */ + ASN1_TYPE *pkey; + STACK_OF(X509_ATTRIBUTE) *attributes; +}; + +#ifdef __cplusplus +} +#endif + +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +# define X509_EXT_PACK_UNKNOWN 1 +# define X509_EXT_PACK_STRING 2 + +# define X509_get_version(x) ASN1_INTEGER_get((x)->cert_info->version) +/* #define X509_get_serialNumber(x) ((x)->cert_info->serialNumber) */ +# define X509_get_notBefore(x) ((x)->cert_info->validity->notBefore) +# define X509_get_notAfter(x) ((x)->cert_info->validity->notAfter) +# define X509_extract_key(x) X509_get_pubkey(x)/*****/ +# define X509_REQ_get_version(x) ASN1_INTEGER_get((x)->req_info->version) +# define X509_REQ_get_subject_name(x) ((x)->req_info->subject) +# define X509_REQ_extract_key(a) X509_REQ_get_pubkey(a) +# define X509_name_cmp(a,b) X509_NAME_cmp((a),(b)) +# define X509_get_signature_type(x) EVP_PKEY_type(OBJ_obj2nid((x)->sig_alg->algorithm)) + +# define X509_CRL_get_version(x) ASN1_INTEGER_get((x)->crl->version) +# define X509_CRL_get_lastUpdate(x) ((x)->crl->lastUpdate) +# define X509_CRL_get_nextUpdate(x) ((x)->crl->nextUpdate) +# define X509_CRL_get_issuer(x) ((x)->crl->issuer) +# define X509_CRL_get_REVOKED(x) ((x)->crl->revoked) + +void X509_CRL_set_default_method(const X509_CRL_METHOD *meth); +X509_CRL_METHOD *X509_CRL_METHOD_new(int (*crl_init) (X509_CRL *crl), + int (*crl_free) (X509_CRL *crl), + int (*crl_lookup) (X509_CRL *crl, + X509_REVOKED **ret, + ASN1_INTEGER *ser, + X509_NAME *issuer), + int (*crl_verify) (X509_CRL *crl, + EVP_PKEY *pk)); +void X509_CRL_METHOD_free(X509_CRL_METHOD *m); + +void X509_CRL_set_meth_data(X509_CRL *crl, void *dat); +void *X509_CRL_get_meth_data(X509_CRL *crl); + +/* + * This one is only used so that a binary form can output, as in + * i2d_X509_NAME(X509_get_X509_PUBKEY(x),&buf) + */ +# define X509_get_X509_PUBKEY(x) ((x)->cert_info->key) + +const char *X509_verify_cert_error_string(long n); + +# ifndef OPENSSL_NO_EVP +int X509_verify(X509 *a, EVP_PKEY *r); + +int X509_REQ_verify(X509_REQ *a, EVP_PKEY *r); +int X509_CRL_verify(X509_CRL *a, EVP_PKEY *r); +int NETSCAPE_SPKI_verify(NETSCAPE_SPKI *a, EVP_PKEY *r); + +NETSCAPE_SPKI *NETSCAPE_SPKI_b64_decode(const char *str, int len); +char *NETSCAPE_SPKI_b64_encode(NETSCAPE_SPKI *x); +EVP_PKEY *NETSCAPE_SPKI_get_pubkey(NETSCAPE_SPKI *x); +int NETSCAPE_SPKI_set_pubkey(NETSCAPE_SPKI *x, EVP_PKEY *pkey); + +int NETSCAPE_SPKI_print(BIO *out, NETSCAPE_SPKI *spki); + +int X509_signature_dump(BIO *bp, const ASN1_STRING *sig, int indent); +int X509_signature_print(BIO *bp, X509_ALGOR *alg, ASN1_STRING *sig); + +int X509_sign(X509 *x, EVP_PKEY *pkey, const EVP_MD *md); +int X509_sign_ctx(X509 *x, EVP_MD_CTX *ctx); +int X509_http_nbio(OCSP_REQ_CTX *rctx, X509 **pcert); +int X509_REQ_sign(X509_REQ *x, EVP_PKEY *pkey, const EVP_MD *md); +int X509_REQ_sign_ctx(X509_REQ *x, EVP_MD_CTX *ctx); +int X509_CRL_sign(X509_CRL *x, EVP_PKEY *pkey, const EVP_MD *md); +int X509_CRL_sign_ctx(X509_CRL *x, EVP_MD_CTX *ctx); +int X509_CRL_http_nbio(OCSP_REQ_CTX *rctx, X509_CRL **pcrl); +int NETSCAPE_SPKI_sign(NETSCAPE_SPKI *x, EVP_PKEY *pkey, const EVP_MD *md); + +int X509_pubkey_digest(const X509 *data, const EVP_MD *type, + unsigned char *md, unsigned int *len); +int X509_digest(const X509 *data, const EVP_MD *type, + unsigned char *md, unsigned int *len); +int X509_CRL_digest(const X509_CRL *data, const EVP_MD *type, + unsigned char *md, unsigned int *len); +int X509_REQ_digest(const X509_REQ *data, const EVP_MD *type, + unsigned char *md, unsigned int *len); +int X509_NAME_digest(const X509_NAME *data, const EVP_MD *type, + unsigned char *md, unsigned int *len); +# endif + +# ifndef OPENSSL_NO_FP_API +X509 *d2i_X509_fp(FILE *fp, X509 **x509); +int i2d_X509_fp(FILE *fp, X509 *x509); +X509_CRL *d2i_X509_CRL_fp(FILE *fp, X509_CRL **crl); +int i2d_X509_CRL_fp(FILE *fp, X509_CRL *crl); +X509_REQ *d2i_X509_REQ_fp(FILE *fp, X509_REQ **req); +int i2d_X509_REQ_fp(FILE *fp, X509_REQ *req); +# ifndef OPENSSL_NO_RSA +RSA *d2i_RSAPrivateKey_fp(FILE *fp, RSA **rsa); +int i2d_RSAPrivateKey_fp(FILE *fp, RSA *rsa); +RSA *d2i_RSAPublicKey_fp(FILE *fp, RSA **rsa); +int i2d_RSAPublicKey_fp(FILE *fp, RSA *rsa); +RSA *d2i_RSA_PUBKEY_fp(FILE *fp, RSA **rsa); +int i2d_RSA_PUBKEY_fp(FILE *fp, RSA *rsa); +# endif +# ifndef OPENSSL_NO_DSA +DSA *d2i_DSA_PUBKEY_fp(FILE *fp, DSA **dsa); +int i2d_DSA_PUBKEY_fp(FILE *fp, DSA *dsa); +DSA *d2i_DSAPrivateKey_fp(FILE *fp, DSA **dsa); +int i2d_DSAPrivateKey_fp(FILE *fp, DSA *dsa); +# endif +# ifndef OPENSSL_NO_EC +EC_KEY *d2i_EC_PUBKEY_fp(FILE *fp, EC_KEY **eckey); +int i2d_EC_PUBKEY_fp(FILE *fp, EC_KEY *eckey); +EC_KEY *d2i_ECPrivateKey_fp(FILE *fp, EC_KEY **eckey); +int i2d_ECPrivateKey_fp(FILE *fp, EC_KEY *eckey); +# endif +X509_SIG *d2i_PKCS8_fp(FILE *fp, X509_SIG **p8); +int i2d_PKCS8_fp(FILE *fp, X509_SIG *p8); +PKCS8_PRIV_KEY_INFO *d2i_PKCS8_PRIV_KEY_INFO_fp(FILE *fp, + PKCS8_PRIV_KEY_INFO **p8inf); +int i2d_PKCS8_PRIV_KEY_INFO_fp(FILE *fp, PKCS8_PRIV_KEY_INFO *p8inf); +int i2d_PKCS8PrivateKeyInfo_fp(FILE *fp, EVP_PKEY *key); +int i2d_PrivateKey_fp(FILE *fp, EVP_PKEY *pkey); +EVP_PKEY *d2i_PrivateKey_fp(FILE *fp, EVP_PKEY **a); +int i2d_PUBKEY_fp(FILE *fp, EVP_PKEY *pkey); +EVP_PKEY *d2i_PUBKEY_fp(FILE *fp, EVP_PKEY **a); +# endif + +# ifndef OPENSSL_NO_BIO +X509 *d2i_X509_bio(BIO *bp, X509 **x509); +int i2d_X509_bio(BIO *bp, X509 *x509); +X509_CRL *d2i_X509_CRL_bio(BIO *bp, X509_CRL **crl); +int i2d_X509_CRL_bio(BIO *bp, X509_CRL *crl); +X509_REQ *d2i_X509_REQ_bio(BIO *bp, X509_REQ **req); +int i2d_X509_REQ_bio(BIO *bp, X509_REQ *req); +# ifndef OPENSSL_NO_RSA +RSA *d2i_RSAPrivateKey_bio(BIO *bp, RSA **rsa); +int i2d_RSAPrivateKey_bio(BIO *bp, RSA *rsa); +RSA *d2i_RSAPublicKey_bio(BIO *bp, RSA **rsa); +int i2d_RSAPublicKey_bio(BIO *bp, RSA *rsa); +RSA *d2i_RSA_PUBKEY_bio(BIO *bp, RSA **rsa); +int i2d_RSA_PUBKEY_bio(BIO *bp, RSA *rsa); +# endif +# ifndef OPENSSL_NO_DSA +DSA *d2i_DSA_PUBKEY_bio(BIO *bp, DSA **dsa); +int i2d_DSA_PUBKEY_bio(BIO *bp, DSA *dsa); +DSA *d2i_DSAPrivateKey_bio(BIO *bp, DSA **dsa); +int i2d_DSAPrivateKey_bio(BIO *bp, DSA *dsa); +# endif +# ifndef OPENSSL_NO_EC +EC_KEY *d2i_EC_PUBKEY_bio(BIO *bp, EC_KEY **eckey); +int i2d_EC_PUBKEY_bio(BIO *bp, EC_KEY *eckey); +EC_KEY *d2i_ECPrivateKey_bio(BIO *bp, EC_KEY **eckey); +int i2d_ECPrivateKey_bio(BIO *bp, EC_KEY *eckey); +# endif +X509_SIG *d2i_PKCS8_bio(BIO *bp, X509_SIG **p8); +int i2d_PKCS8_bio(BIO *bp, X509_SIG *p8); +PKCS8_PRIV_KEY_INFO *d2i_PKCS8_PRIV_KEY_INFO_bio(BIO *bp, + PKCS8_PRIV_KEY_INFO **p8inf); +int i2d_PKCS8_PRIV_KEY_INFO_bio(BIO *bp, PKCS8_PRIV_KEY_INFO *p8inf); +int i2d_PKCS8PrivateKeyInfo_bio(BIO *bp, EVP_PKEY *key); +int i2d_PrivateKey_bio(BIO *bp, EVP_PKEY *pkey); +EVP_PKEY *d2i_PrivateKey_bio(BIO *bp, EVP_PKEY **a); +int i2d_PUBKEY_bio(BIO *bp, EVP_PKEY *pkey); +EVP_PKEY *d2i_PUBKEY_bio(BIO *bp, EVP_PKEY **a); +# endif + +X509 *X509_dup(X509 *x509); +X509_ATTRIBUTE *X509_ATTRIBUTE_dup(X509_ATTRIBUTE *xa); +X509_EXTENSION *X509_EXTENSION_dup(X509_EXTENSION *ex); +X509_CRL *X509_CRL_dup(X509_CRL *crl); +X509_REVOKED *X509_REVOKED_dup(X509_REVOKED *rev); +X509_REQ *X509_REQ_dup(X509_REQ *req); +X509_ALGOR *X509_ALGOR_dup(X509_ALGOR *xn); +int X509_ALGOR_set0(X509_ALGOR *alg, ASN1_OBJECT *aobj, int ptype, + void *pval); +void X509_ALGOR_get0(ASN1_OBJECT **paobj, int *pptype, void **ppval, + X509_ALGOR *algor); +void X509_ALGOR_set_md(X509_ALGOR *alg, const EVP_MD *md); +int X509_ALGOR_cmp(const X509_ALGOR *a, const X509_ALGOR *b); + +X509_NAME *X509_NAME_dup(X509_NAME *xn); +X509_NAME_ENTRY *X509_NAME_ENTRY_dup(X509_NAME_ENTRY *ne); + +int X509_cmp_time(const ASN1_TIME *s, time_t *t); +int X509_cmp_current_time(const ASN1_TIME *s); +ASN1_TIME *X509_time_adj(ASN1_TIME *s, long adj, time_t *t); +ASN1_TIME *X509_time_adj_ex(ASN1_TIME *s, + int offset_day, long offset_sec, time_t *t); +ASN1_TIME *X509_gmtime_adj(ASN1_TIME *s, long adj); + +const char *X509_get_default_cert_area(void); +const char *X509_get_default_cert_dir(void); +const char *X509_get_default_cert_file(void); +const char *X509_get_default_cert_dir_env(void); +const char *X509_get_default_cert_file_env(void); +const char *X509_get_default_private_dir(void); + +X509_REQ *X509_to_X509_REQ(X509 *x, EVP_PKEY *pkey, const EVP_MD *md); +X509 *X509_REQ_to_X509(X509_REQ *r, int days, EVP_PKEY *pkey); + +DECLARE_ASN1_FUNCTIONS(X509_ALGOR) +DECLARE_ASN1_ENCODE_FUNCTIONS(X509_ALGORS, X509_ALGORS, X509_ALGORS) +DECLARE_ASN1_FUNCTIONS(X509_VAL) + +DECLARE_ASN1_FUNCTIONS(X509_PUBKEY) + +int X509_PUBKEY_set(X509_PUBKEY **x, EVP_PKEY *pkey); +EVP_PKEY *X509_PUBKEY_get(X509_PUBKEY *key); +int X509_get_pubkey_parameters(EVP_PKEY *pkey, STACK_OF(X509) *chain); +int i2d_PUBKEY(EVP_PKEY *a, unsigned char **pp); +EVP_PKEY *d2i_PUBKEY(EVP_PKEY **a, const unsigned char **pp, long length); +# ifndef OPENSSL_NO_RSA +int i2d_RSA_PUBKEY(RSA *a, unsigned char **pp); +RSA *d2i_RSA_PUBKEY(RSA **a, const unsigned char **pp, long length); +# endif +# ifndef OPENSSL_NO_DSA +int i2d_DSA_PUBKEY(DSA *a, unsigned char **pp); +DSA *d2i_DSA_PUBKEY(DSA **a, const unsigned char **pp, long length); +# endif +# ifndef OPENSSL_NO_EC +int i2d_EC_PUBKEY(EC_KEY *a, unsigned char **pp); +EC_KEY *d2i_EC_PUBKEY(EC_KEY **a, const unsigned char **pp, long length); +# endif + +DECLARE_ASN1_FUNCTIONS(X509_SIG) +DECLARE_ASN1_FUNCTIONS(X509_REQ_INFO) +DECLARE_ASN1_FUNCTIONS(X509_REQ) + +DECLARE_ASN1_FUNCTIONS(X509_ATTRIBUTE) +X509_ATTRIBUTE *X509_ATTRIBUTE_create(int nid, int atrtype, void *value); + +DECLARE_ASN1_FUNCTIONS(X509_EXTENSION) +DECLARE_ASN1_ENCODE_FUNCTIONS(X509_EXTENSIONS, X509_EXTENSIONS, X509_EXTENSIONS) + +DECLARE_ASN1_FUNCTIONS(X509_NAME_ENTRY) + +DECLARE_ASN1_FUNCTIONS(X509_NAME) + +int X509_NAME_set(X509_NAME **xn, X509_NAME *name); + +DECLARE_ASN1_FUNCTIONS(X509_CINF) + +DECLARE_ASN1_FUNCTIONS(X509) +DECLARE_ASN1_FUNCTIONS(X509_CERT_AUX) + +DECLARE_ASN1_FUNCTIONS(X509_CERT_PAIR) + +int X509_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new *new_func, + CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func); +int X509_set_ex_data(X509 *r, int idx, void *arg); +void *X509_get_ex_data(X509 *r, int idx); +int i2d_X509_AUX(X509 *a, unsigned char **pp); +X509 *d2i_X509_AUX(X509 **a, const unsigned char **pp, long length); + +int i2d_re_X509_tbs(X509 *x, unsigned char **pp); + +void X509_get0_signature(ASN1_BIT_STRING **psig, X509_ALGOR **palg, + const X509 *x); +int X509_get_signature_nid(const X509 *x); + +int X509_alias_set1(X509 *x, unsigned char *name, int len); +int X509_keyid_set1(X509 *x, unsigned char *id, int len); +unsigned char *X509_alias_get0(X509 *x, int *len); +unsigned char *X509_keyid_get0(X509 *x, int *len); +int (*X509_TRUST_set_default(int (*trust) (int, X509 *, int))) (int, X509 *, + int); +int X509_TRUST_set(int *t, int trust); +int X509_add1_trust_object(X509 *x, ASN1_OBJECT *obj); +int X509_add1_reject_object(X509 *x, ASN1_OBJECT *obj); +void X509_trust_clear(X509 *x); +void X509_reject_clear(X509 *x); + +DECLARE_ASN1_FUNCTIONS(X509_REVOKED) +DECLARE_ASN1_FUNCTIONS(X509_CRL_INFO) +DECLARE_ASN1_FUNCTIONS(X509_CRL) + +int X509_CRL_add0_revoked(X509_CRL *crl, X509_REVOKED *rev); +int X509_CRL_get0_by_serial(X509_CRL *crl, + X509_REVOKED **ret, ASN1_INTEGER *serial); +int X509_CRL_get0_by_cert(X509_CRL *crl, X509_REVOKED **ret, X509 *x); + +X509_PKEY *X509_PKEY_new(void); +void X509_PKEY_free(X509_PKEY *a); +int i2d_X509_PKEY(X509_PKEY *a, unsigned char **pp); +X509_PKEY *d2i_X509_PKEY(X509_PKEY **a, const unsigned char **pp, + long length); + +DECLARE_ASN1_FUNCTIONS(NETSCAPE_SPKI) +DECLARE_ASN1_FUNCTIONS(NETSCAPE_SPKAC) +DECLARE_ASN1_FUNCTIONS(NETSCAPE_CERT_SEQUENCE) + +# ifndef OPENSSL_NO_EVP +X509_INFO *X509_INFO_new(void); +void X509_INFO_free(X509_INFO *a); +char *X509_NAME_oneline(X509_NAME *a, char *buf, int size); + +int ASN1_verify(i2d_of_void *i2d, X509_ALGOR *algor1, + ASN1_BIT_STRING *signature, char *data, EVP_PKEY *pkey); + +int ASN1_digest(i2d_of_void *i2d, const EVP_MD *type, char *data, + unsigned char *md, unsigned int *len); + +int ASN1_sign(i2d_of_void *i2d, X509_ALGOR *algor1, + X509_ALGOR *algor2, ASN1_BIT_STRING *signature, + char *data, EVP_PKEY *pkey, const EVP_MD *type); + +int ASN1_item_digest(const ASN1_ITEM *it, const EVP_MD *type, void *data, + unsigned char *md, unsigned int *len); + +int ASN1_item_verify(const ASN1_ITEM *it, X509_ALGOR *algor1, + ASN1_BIT_STRING *signature, void *data, EVP_PKEY *pkey); + +int ASN1_item_sign(const ASN1_ITEM *it, X509_ALGOR *algor1, + X509_ALGOR *algor2, ASN1_BIT_STRING *signature, void *data, + EVP_PKEY *pkey, const EVP_MD *type); +int ASN1_item_sign_ctx(const ASN1_ITEM *it, X509_ALGOR *algor1, + X509_ALGOR *algor2, ASN1_BIT_STRING *signature, + void *asn, EVP_MD_CTX *ctx); +# endif + +int X509_set_version(X509 *x, long version); +int X509_set_serialNumber(X509 *x, ASN1_INTEGER *serial); +ASN1_INTEGER *X509_get_serialNumber(X509 *x); +int X509_set_issuer_name(X509 *x, X509_NAME *name); +X509_NAME *X509_get_issuer_name(X509 *a); +int X509_set_subject_name(X509 *x, X509_NAME *name); +X509_NAME *X509_get_subject_name(X509 *a); +int X509_set_notBefore(X509 *x, const ASN1_TIME *tm); +int X509_set_notAfter(X509 *x, const ASN1_TIME *tm); +int X509_set_pubkey(X509 *x, EVP_PKEY *pkey); +EVP_PKEY *X509_get_pubkey(X509 *x); +ASN1_BIT_STRING *X509_get0_pubkey_bitstr(const X509 *x); +int X509_certificate_type(X509 *x, EVP_PKEY *pubkey /* optional */ ); + +int X509_REQ_set_version(X509_REQ *x, long version); +int X509_REQ_set_subject_name(X509_REQ *req, X509_NAME *name); +int X509_REQ_set_pubkey(X509_REQ *x, EVP_PKEY *pkey); +EVP_PKEY *X509_REQ_get_pubkey(X509_REQ *req); +int X509_REQ_extension_nid(int nid); +int *X509_REQ_get_extension_nids(void); +void X509_REQ_set_extension_nids(int *nids); +STACK_OF(X509_EXTENSION) *X509_REQ_get_extensions(X509_REQ *req); +int X509_REQ_add_extensions_nid(X509_REQ *req, STACK_OF(X509_EXTENSION) *exts, + int nid); +int X509_REQ_add_extensions(X509_REQ *req, STACK_OF(X509_EXTENSION) *exts); +int X509_REQ_get_attr_count(const X509_REQ *req); +int X509_REQ_get_attr_by_NID(const X509_REQ *req, int nid, int lastpos); +int X509_REQ_get_attr_by_OBJ(const X509_REQ *req, ASN1_OBJECT *obj, + int lastpos); +X509_ATTRIBUTE *X509_REQ_get_attr(const X509_REQ *req, int loc); +X509_ATTRIBUTE *X509_REQ_delete_attr(X509_REQ *req, int loc); +int X509_REQ_add1_attr(X509_REQ *req, X509_ATTRIBUTE *attr); +int X509_REQ_add1_attr_by_OBJ(X509_REQ *req, + const ASN1_OBJECT *obj, int type, + const unsigned char *bytes, int len); +int X509_REQ_add1_attr_by_NID(X509_REQ *req, + int nid, int type, + const unsigned char *bytes, int len); +int X509_REQ_add1_attr_by_txt(X509_REQ *req, + const char *attrname, int type, + const unsigned char *bytes, int len); + +int X509_CRL_set_version(X509_CRL *x, long version); +int X509_CRL_set_issuer_name(X509_CRL *x, X509_NAME *name); +int X509_CRL_set_lastUpdate(X509_CRL *x, const ASN1_TIME *tm); +int X509_CRL_set_nextUpdate(X509_CRL *x, const ASN1_TIME *tm); +int X509_CRL_sort(X509_CRL *crl); + +int X509_REVOKED_set_serialNumber(X509_REVOKED *x, ASN1_INTEGER *serial); +int X509_REVOKED_set_revocationDate(X509_REVOKED *r, ASN1_TIME *tm); + +X509_CRL *X509_CRL_diff(X509_CRL *base, X509_CRL *newer, + EVP_PKEY *skey, const EVP_MD *md, unsigned int flags); + +int X509_REQ_check_private_key(X509_REQ *x509, EVP_PKEY *pkey); + +int X509_check_private_key(X509 *x509, EVP_PKEY *pkey); +int X509_chain_check_suiteb(int *perror_depth, + X509 *x, STACK_OF(X509) *chain, + unsigned long flags); +int X509_CRL_check_suiteb(X509_CRL *crl, EVP_PKEY *pk, unsigned long flags); +STACK_OF(X509) *X509_chain_up_ref(STACK_OF(X509) *chain); + +int X509_issuer_and_serial_cmp(const X509 *a, const X509 *b); +unsigned long X509_issuer_and_serial_hash(X509 *a); + +int X509_issuer_name_cmp(const X509 *a, const X509 *b); +unsigned long X509_issuer_name_hash(X509 *a); + +int X509_subject_name_cmp(const X509 *a, const X509 *b); +unsigned long X509_subject_name_hash(X509 *x); + +# ifndef OPENSSL_NO_MD5 +unsigned long X509_issuer_name_hash_old(X509 *a); +unsigned long X509_subject_name_hash_old(X509 *x); +# endif + +int X509_cmp(const X509 *a, const X509 *b); +int X509_NAME_cmp(const X509_NAME *a, const X509_NAME *b); +unsigned long X509_NAME_hash(X509_NAME *x); +unsigned long X509_NAME_hash_old(X509_NAME *x); + +int X509_CRL_cmp(const X509_CRL *a, const X509_CRL *b); +int X509_CRL_match(const X509_CRL *a, const X509_CRL *b); +# ifndef OPENSSL_NO_FP_API +int X509_print_ex_fp(FILE *bp, X509 *x, unsigned long nmflag, + unsigned long cflag); +int X509_print_fp(FILE *bp, X509 *x); +int X509_CRL_print_fp(FILE *bp, X509_CRL *x); +int X509_REQ_print_fp(FILE *bp, X509_REQ *req); +int X509_NAME_print_ex_fp(FILE *fp, X509_NAME *nm, int indent, + unsigned long flags); +# endif + +# ifndef OPENSSL_NO_BIO +int X509_NAME_print(BIO *bp, X509_NAME *name, int obase); +int X509_NAME_print_ex(BIO *out, X509_NAME *nm, int indent, + unsigned long flags); +int X509_print_ex(BIO *bp, X509 *x, unsigned long nmflag, + unsigned long cflag); +int X509_print(BIO *bp, X509 *x); +int X509_ocspid_print(BIO *bp, X509 *x); +int X509_CERT_AUX_print(BIO *bp, X509_CERT_AUX *x, int indent); +int X509_CRL_print(BIO *bp, X509_CRL *x); +int X509_REQ_print_ex(BIO *bp, X509_REQ *x, unsigned long nmflag, + unsigned long cflag); +int X509_REQ_print(BIO *bp, X509_REQ *req); +# endif + +int X509_NAME_entry_count(X509_NAME *name); +int X509_NAME_get_text_by_NID(X509_NAME *name, int nid, char *buf, int len); +int X509_NAME_get_text_by_OBJ(X509_NAME *name, ASN1_OBJECT *obj, + char *buf, int len); + +/* + * NOTE: you should be passsing -1, not 0 as lastpos. The functions that use + * lastpos, search after that position on. + */ +int X509_NAME_get_index_by_NID(X509_NAME *name, int nid, int lastpos); +int X509_NAME_get_index_by_OBJ(X509_NAME *name, ASN1_OBJECT *obj, + int lastpos); +X509_NAME_ENTRY *X509_NAME_get_entry(X509_NAME *name, int loc); +X509_NAME_ENTRY *X509_NAME_delete_entry(X509_NAME *name, int loc); +int X509_NAME_add_entry(X509_NAME *name, X509_NAME_ENTRY *ne, + int loc, int set); +int X509_NAME_add_entry_by_OBJ(X509_NAME *name, ASN1_OBJECT *obj, int type, + unsigned char *bytes, int len, int loc, + int set); +int X509_NAME_add_entry_by_NID(X509_NAME *name, int nid, int type, + unsigned char *bytes, int len, int loc, + int set); +X509_NAME_ENTRY *X509_NAME_ENTRY_create_by_txt(X509_NAME_ENTRY **ne, + const char *field, int type, + const unsigned char *bytes, + int len); +X509_NAME_ENTRY *X509_NAME_ENTRY_create_by_NID(X509_NAME_ENTRY **ne, int nid, + int type, unsigned char *bytes, + int len); +int X509_NAME_add_entry_by_txt(X509_NAME *name, const char *field, int type, + const unsigned char *bytes, int len, int loc, + int set); +X509_NAME_ENTRY *X509_NAME_ENTRY_create_by_OBJ(X509_NAME_ENTRY **ne, + ASN1_OBJECT *obj, int type, + const unsigned char *bytes, + int len); +int X509_NAME_ENTRY_set_object(X509_NAME_ENTRY *ne, ASN1_OBJECT *obj); +int X509_NAME_ENTRY_set_data(X509_NAME_ENTRY *ne, int type, + const unsigned char *bytes, int len); +ASN1_OBJECT *X509_NAME_ENTRY_get_object(X509_NAME_ENTRY *ne); +ASN1_STRING *X509_NAME_ENTRY_get_data(X509_NAME_ENTRY *ne); + +int X509v3_get_ext_count(const STACK_OF(X509_EXTENSION) *x); +int X509v3_get_ext_by_NID(const STACK_OF(X509_EXTENSION) *x, + int nid, int lastpos); +int X509v3_get_ext_by_OBJ(const STACK_OF(X509_EXTENSION) *x, + ASN1_OBJECT *obj, int lastpos); +int X509v3_get_ext_by_critical(const STACK_OF(X509_EXTENSION) *x, + int crit, int lastpos); +X509_EXTENSION *X509v3_get_ext(const STACK_OF(X509_EXTENSION) *x, int loc); +X509_EXTENSION *X509v3_delete_ext(STACK_OF(X509_EXTENSION) *x, int loc); +STACK_OF(X509_EXTENSION) *X509v3_add_ext(STACK_OF(X509_EXTENSION) **x, + X509_EXTENSION *ex, int loc); + +int X509_get_ext_count(X509 *x); +int X509_get_ext_by_NID(X509 *x, int nid, int lastpos); +int X509_get_ext_by_OBJ(X509 *x, ASN1_OBJECT *obj, int lastpos); +int X509_get_ext_by_critical(X509 *x, int crit, int lastpos); +X509_EXTENSION *X509_get_ext(X509 *x, int loc); +X509_EXTENSION *X509_delete_ext(X509 *x, int loc); +int X509_add_ext(X509 *x, X509_EXTENSION *ex, int loc); +void *X509_get_ext_d2i(X509 *x, int nid, int *crit, int *idx); +int X509_add1_ext_i2d(X509 *x, int nid, void *value, int crit, + unsigned long flags); + +int X509_CRL_get_ext_count(X509_CRL *x); +int X509_CRL_get_ext_by_NID(X509_CRL *x, int nid, int lastpos); +int X509_CRL_get_ext_by_OBJ(X509_CRL *x, ASN1_OBJECT *obj, int lastpos); +int X509_CRL_get_ext_by_critical(X509_CRL *x, int crit, int lastpos); +X509_EXTENSION *X509_CRL_get_ext(X509_CRL *x, int loc); +X509_EXTENSION *X509_CRL_delete_ext(X509_CRL *x, int loc); +int X509_CRL_add_ext(X509_CRL *x, X509_EXTENSION *ex, int loc); +void *X509_CRL_get_ext_d2i(X509_CRL *x, int nid, int *crit, int *idx); +int X509_CRL_add1_ext_i2d(X509_CRL *x, int nid, void *value, int crit, + unsigned long flags); + +int X509_REVOKED_get_ext_count(X509_REVOKED *x); +int X509_REVOKED_get_ext_by_NID(X509_REVOKED *x, int nid, int lastpos); +int X509_REVOKED_get_ext_by_OBJ(X509_REVOKED *x, ASN1_OBJECT *obj, + int lastpos); +int X509_REVOKED_get_ext_by_critical(X509_REVOKED *x, int crit, int lastpos); +X509_EXTENSION *X509_REVOKED_get_ext(X509_REVOKED *x, int loc); +X509_EXTENSION *X509_REVOKED_delete_ext(X509_REVOKED *x, int loc); +int X509_REVOKED_add_ext(X509_REVOKED *x, X509_EXTENSION *ex, int loc); +void *X509_REVOKED_get_ext_d2i(X509_REVOKED *x, int nid, int *crit, int *idx); +int X509_REVOKED_add1_ext_i2d(X509_REVOKED *x, int nid, void *value, int crit, + unsigned long flags); + +X509_EXTENSION *X509_EXTENSION_create_by_NID(X509_EXTENSION **ex, + int nid, int crit, + ASN1_OCTET_STRING *data); +X509_EXTENSION *X509_EXTENSION_create_by_OBJ(X509_EXTENSION **ex, + ASN1_OBJECT *obj, int crit, + ASN1_OCTET_STRING *data); +int X509_EXTENSION_set_object(X509_EXTENSION *ex, ASN1_OBJECT *obj); +int X509_EXTENSION_set_critical(X509_EXTENSION *ex, int crit); +int X509_EXTENSION_set_data(X509_EXTENSION *ex, ASN1_OCTET_STRING *data); +ASN1_OBJECT *X509_EXTENSION_get_object(X509_EXTENSION *ex); +ASN1_OCTET_STRING *X509_EXTENSION_get_data(X509_EXTENSION *ne); +int X509_EXTENSION_get_critical(X509_EXTENSION *ex); + +int X509at_get_attr_count(const STACK_OF(X509_ATTRIBUTE) *x); +int X509at_get_attr_by_NID(const STACK_OF(X509_ATTRIBUTE) *x, int nid, + int lastpos); +int X509at_get_attr_by_OBJ(const STACK_OF(X509_ATTRIBUTE) *sk, + ASN1_OBJECT *obj, int lastpos); +X509_ATTRIBUTE *X509at_get_attr(const STACK_OF(X509_ATTRIBUTE) *x, int loc); +X509_ATTRIBUTE *X509at_delete_attr(STACK_OF(X509_ATTRIBUTE) *x, int loc); +STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr(STACK_OF(X509_ATTRIBUTE) **x, + X509_ATTRIBUTE *attr); +STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr_by_OBJ(STACK_OF(X509_ATTRIBUTE) + **x, const ASN1_OBJECT *obj, + int type, + const unsigned char *bytes, + int len); +STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr_by_NID(STACK_OF(X509_ATTRIBUTE) + **x, int nid, int type, + const unsigned char *bytes, + int len); +STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr_by_txt(STACK_OF(X509_ATTRIBUTE) + **x, const char *attrname, + int type, + const unsigned char *bytes, + int len); +void *X509at_get0_data_by_OBJ(STACK_OF(X509_ATTRIBUTE) *x, ASN1_OBJECT *obj, + int lastpos, int type); +X509_ATTRIBUTE *X509_ATTRIBUTE_create_by_NID(X509_ATTRIBUTE **attr, int nid, + int atrtype, const void *data, + int len); +X509_ATTRIBUTE *X509_ATTRIBUTE_create_by_OBJ(X509_ATTRIBUTE **attr, + const ASN1_OBJECT *obj, + int atrtype, const void *data, + int len); +X509_ATTRIBUTE *X509_ATTRIBUTE_create_by_txt(X509_ATTRIBUTE **attr, + const char *atrname, int type, + const unsigned char *bytes, + int len); +int X509_ATTRIBUTE_set1_object(X509_ATTRIBUTE *attr, const ASN1_OBJECT *obj); +int X509_ATTRIBUTE_set1_data(X509_ATTRIBUTE *attr, int attrtype, + const void *data, int len); +void *X509_ATTRIBUTE_get0_data(X509_ATTRIBUTE *attr, int idx, int atrtype, + void *data); +int X509_ATTRIBUTE_count(X509_ATTRIBUTE *attr); +ASN1_OBJECT *X509_ATTRIBUTE_get0_object(X509_ATTRIBUTE *attr); +ASN1_TYPE *X509_ATTRIBUTE_get0_type(X509_ATTRIBUTE *attr, int idx); + +int EVP_PKEY_get_attr_count(const EVP_PKEY *key); +int EVP_PKEY_get_attr_by_NID(const EVP_PKEY *key, int nid, int lastpos); +int EVP_PKEY_get_attr_by_OBJ(const EVP_PKEY *key, ASN1_OBJECT *obj, + int lastpos); +X509_ATTRIBUTE *EVP_PKEY_get_attr(const EVP_PKEY *key, int loc); +X509_ATTRIBUTE *EVP_PKEY_delete_attr(EVP_PKEY *key, int loc); +int EVP_PKEY_add1_attr(EVP_PKEY *key, X509_ATTRIBUTE *attr); +int EVP_PKEY_add1_attr_by_OBJ(EVP_PKEY *key, + const ASN1_OBJECT *obj, int type, + const unsigned char *bytes, int len); +int EVP_PKEY_add1_attr_by_NID(EVP_PKEY *key, + int nid, int type, + const unsigned char *bytes, int len); +int EVP_PKEY_add1_attr_by_txt(EVP_PKEY *key, + const char *attrname, int type, + const unsigned char *bytes, int len); + +int X509_verify_cert(X509_STORE_CTX *ctx); + +/* lookup a cert from a X509 STACK */ +X509 *X509_find_by_issuer_and_serial(STACK_OF(X509) *sk, X509_NAME *name, + ASN1_INTEGER *serial); +X509 *X509_find_by_subject(STACK_OF(X509) *sk, X509_NAME *name); + +DECLARE_ASN1_FUNCTIONS(PBEPARAM) +DECLARE_ASN1_FUNCTIONS(PBE2PARAM) +DECLARE_ASN1_FUNCTIONS(PBKDF2PARAM) + +int PKCS5_pbe_set0_algor(X509_ALGOR *algor, int alg, int iter, + const unsigned char *salt, int saltlen); + +X509_ALGOR *PKCS5_pbe_set(int alg, int iter, + const unsigned char *salt, int saltlen); +X509_ALGOR *PKCS5_pbe2_set(const EVP_CIPHER *cipher, int iter, + unsigned char *salt, int saltlen); +X509_ALGOR *PKCS5_pbe2_set_iv(const EVP_CIPHER *cipher, int iter, + unsigned char *salt, int saltlen, + unsigned char *aiv, int prf_nid); + +X509_ALGOR *PKCS5_pbkdf2_set(int iter, unsigned char *salt, int saltlen, + int prf_nid, int keylen); + +/* PKCS#8 utilities */ + +DECLARE_ASN1_FUNCTIONS(PKCS8_PRIV_KEY_INFO) + +EVP_PKEY *EVP_PKCS82PKEY(PKCS8_PRIV_KEY_INFO *p8); +PKCS8_PRIV_KEY_INFO *EVP_PKEY2PKCS8(EVP_PKEY *pkey); +PKCS8_PRIV_KEY_INFO *EVP_PKEY2PKCS8_broken(EVP_PKEY *pkey, int broken); +PKCS8_PRIV_KEY_INFO *PKCS8_set_broken(PKCS8_PRIV_KEY_INFO *p8, int broken); + +int PKCS8_pkey_set0(PKCS8_PRIV_KEY_INFO *priv, ASN1_OBJECT *aobj, + int version, int ptype, void *pval, + unsigned char *penc, int penclen); +int PKCS8_pkey_get0(ASN1_OBJECT **ppkalg, + const unsigned char **pk, int *ppklen, + X509_ALGOR **pa, PKCS8_PRIV_KEY_INFO *p8); + +int X509_PUBKEY_set0_param(X509_PUBKEY *pub, ASN1_OBJECT *aobj, + int ptype, void *pval, + unsigned char *penc, int penclen); +int X509_PUBKEY_get0_param(ASN1_OBJECT **ppkalg, + const unsigned char **pk, int *ppklen, + X509_ALGOR **pa, X509_PUBKEY *pub); + +int X509_check_trust(X509 *x, int id, int flags); +int X509_TRUST_get_count(void); +X509_TRUST *X509_TRUST_get0(int idx); +int X509_TRUST_get_by_id(int id); +int X509_TRUST_add(int id, int flags, int (*ck) (X509_TRUST *, X509 *, int), + char *name, int arg1, void *arg2); +void X509_TRUST_cleanup(void); +int X509_TRUST_get_flags(X509_TRUST *xp); +char *X509_TRUST_get0_name(X509_TRUST *xp); +int X509_TRUST_get_trust(X509_TRUST *xp); + +/* BEGIN ERROR CODES */ +/* + * The following lines are auto generated by the script mkerr.pl. Any changes + * made after this point may be overwritten when the script is next run. + */ +void ERR_load_X509_strings(void); + +/* Error codes for the X509 functions. */ + +/* Function codes. */ +# define X509_F_ADD_CERT_DIR 100 +# define X509_F_BY_FILE_CTRL 101 +# define X509_F_CHECK_POLICY 145 +# define X509_F_DIR_CTRL 102 +# define X509_F_GET_CERT_BY_SUBJECT 103 +# define X509_F_NETSCAPE_SPKI_B64_DECODE 129 +# define X509_F_NETSCAPE_SPKI_B64_ENCODE 130 +# define X509_F_X509AT_ADD1_ATTR 135 +# define X509_F_X509V3_ADD_EXT 104 +# define X509_F_X509_ATTRIBUTE_CREATE_BY_NID 136 +# define X509_F_X509_ATTRIBUTE_CREATE_BY_OBJ 137 +# define X509_F_X509_ATTRIBUTE_CREATE_BY_TXT 140 +# define X509_F_X509_ATTRIBUTE_GET0_DATA 139 +# define X509_F_X509_ATTRIBUTE_SET1_DATA 138 +# define X509_F_X509_CHECK_PRIVATE_KEY 128 +# define X509_F_X509_CRL_DIFF 105 +# define X509_F_X509_CRL_PRINT_FP 147 +# define X509_F_X509_EXTENSION_CREATE_BY_NID 108 +# define X509_F_X509_EXTENSION_CREATE_BY_OBJ 109 +# define X509_F_X509_GET_PUBKEY_PARAMETERS 110 +# define X509_F_X509_LOAD_CERT_CRL_FILE 132 +# define X509_F_X509_LOAD_CERT_FILE 111 +# define X509_F_X509_LOAD_CRL_FILE 112 +# define X509_F_X509_NAME_ADD_ENTRY 113 +# define X509_F_X509_NAME_ENTRY_CREATE_BY_NID 114 +# define X509_F_X509_NAME_ENTRY_CREATE_BY_TXT 131 +# define X509_F_X509_NAME_ENTRY_SET_OBJECT 115 +# define X509_F_X509_NAME_ONELINE 116 +# define X509_F_X509_NAME_PRINT 117 +# define X509_F_X509_PRINT_EX_FP 118 +# define X509_F_X509_PUBKEY_GET 119 +# define X509_F_X509_PUBKEY_SET 120 +# define X509_F_X509_REQ_CHECK_PRIVATE_KEY 144 +# define X509_F_X509_REQ_PRINT_EX 121 +# define X509_F_X509_REQ_PRINT_FP 122 +# define X509_F_X509_REQ_TO_X509 123 +# define X509_F_X509_STORE_ADD_CERT 124 +# define X509_F_X509_STORE_ADD_CRL 125 +# define X509_F_X509_STORE_CTX_GET1_ISSUER 146 +# define X509_F_X509_STORE_CTX_INIT 143 +# define X509_F_X509_STORE_CTX_NEW 142 +# define X509_F_X509_STORE_CTX_PURPOSE_INHERIT 134 +# define X509_F_X509_TO_X509_REQ 126 +# define X509_F_X509_TRUST_ADD 133 +# define X509_F_X509_TRUST_SET 141 +# define X509_F_X509_VERIFY_CERT 127 + +/* Reason codes. */ +# define X509_R_AKID_MISMATCH 110 +# define X509_R_BAD_X509_FILETYPE 100 +# define X509_R_BASE64_DECODE_ERROR 118 +# define X509_R_CANT_CHECK_DH_KEY 114 +# define X509_R_CERT_ALREADY_IN_HASH_TABLE 101 +# define X509_R_CRL_ALREADY_DELTA 127 +# define X509_R_CRL_VERIFY_FAILURE 131 +# define X509_R_ERR_ASN1_LIB 102 +# define X509_R_IDP_MISMATCH 128 +# define X509_R_INVALID_DIRECTORY 113 +# define X509_R_INVALID_FIELD_NAME 119 +# define X509_R_INVALID_TRUST 123 +# define X509_R_ISSUER_MISMATCH 129 +# define X509_R_KEY_TYPE_MISMATCH 115 +# define X509_R_KEY_VALUES_MISMATCH 116 +# define X509_R_LOADING_CERT_DIR 103 +# define X509_R_LOADING_DEFAULTS 104 +# define X509_R_METHOD_NOT_SUPPORTED 124 +# define X509_R_NEWER_CRL_NOT_NEWER 132 +# define X509_R_NO_CERT_SET_FOR_US_TO_VERIFY 105 +# define X509_R_NO_CRL_NUMBER 130 +# define X509_R_PUBLIC_KEY_DECODE_ERROR 125 +# define X509_R_PUBLIC_KEY_ENCODE_ERROR 126 +# define X509_R_SHOULD_RETRY 106 +# define X509_R_UNABLE_TO_FIND_PARAMETERS_IN_CHAIN 107 +# define X509_R_UNABLE_TO_GET_CERTS_PUBLIC_KEY 108 +# define X509_R_UNKNOWN_KEY_TYPE 117 +# define X509_R_UNKNOWN_NID 109 +# define X509_R_UNKNOWN_PURPOSE_ID 121 +# define X509_R_UNKNOWN_TRUST_ID 120 +# define X509_R_UNSUPPORTED_ALGORITHM 111 +# define X509_R_WRONG_LOOKUP_TYPE 112 +# define X509_R_WRONG_TYPE 122 + +#ifdef __cplusplus +} +#endif +#endif diff --git a/ext/openssl-osx/include/openssl/x509_vfy.h b/ext/openssl-osx/include/openssl/x509_vfy.h new file mode 100644 index 00000000..a6f0df54 --- /dev/null +++ b/ext/openssl-osx/include/openssl/x509_vfy.h @@ -0,0 +1,641 @@ +/* crypto/x509/x509_vfy.h */ +/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) + * All rights reserved. + * + * This package is an SSL implementation written + * by Eric Young (eay@cryptsoft.com). + * The implementation was written so as to conform with Netscapes SSL. + * + * This library is free for commercial and non-commercial use as long as + * the following conditions are aheared to. The following conditions + * apply to all code found in this distribution, be it the RC4, RSA, + * lhash, DES, etc., code; not just the SSL code. The SSL documentation + * included with this distribution is covered by the same copyright terms + * except that the holder is Tim Hudson (tjh@cryptsoft.com). + * + * Copyright remains Eric Young's, and as such any Copyright notices in + * the code are not to be removed. + * If this package is used in a product, Eric Young should be given attribution + * as the author of the parts of the library used. + * This can be in the form of a textual message at program startup or + * in documentation (online or textual) provided with the package. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * "This product includes cryptographic software written by + * Eric Young (eay@cryptsoft.com)" + * The word 'cryptographic' can be left out if the rouines from the library + * being used are not cryptographic related :-). + * 4. If you include any Windows specific code (or a derivative thereof) from + * the apps directory (application code) you must include an acknowledgement: + * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" + * + * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * The licence and distribution terms for any publically available version or + * derivative of this code cannot be changed. i.e. this code cannot simply be + * copied and put under another distribution licence + * [including the GNU Public Licence.] + */ + +#ifndef HEADER_X509_H +# include +/* + * openssl/x509.h ends up #include-ing this file at about the only + * appropriate moment. + */ +#endif + +#ifndef HEADER_X509_VFY_H +# define HEADER_X509_VFY_H + +# include +# ifndef OPENSSL_NO_LHASH +# include +# endif +# include +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +# if 0 +/* Outer object */ +typedef struct x509_hash_dir_st { + int num_dirs; + char **dirs; + int *dirs_type; + int num_dirs_alloced; +} X509_HASH_DIR_CTX; +# endif + +typedef struct x509_file_st { + int num_paths; /* number of paths to files or directories */ + int num_alloced; + char **paths; /* the list of paths or directories */ + int *path_type; +} X509_CERT_FILE_CTX; + +/*******************************/ +/*- +SSL_CTX -> X509_STORE + -> X509_LOOKUP + ->X509_LOOKUP_METHOD + -> X509_LOOKUP + ->X509_LOOKUP_METHOD + +SSL -> X509_STORE_CTX + ->X509_STORE + +The X509_STORE holds the tables etc for verification stuff. +A X509_STORE_CTX is used while validating a single certificate. +The X509_STORE has X509_LOOKUPs for looking up certs. +The X509_STORE then calls a function to actually verify the +certificate chain. +*/ + +# define X509_LU_RETRY -1 +# define X509_LU_FAIL 0 +# define X509_LU_X509 1 +# define X509_LU_CRL 2 +# define X509_LU_PKEY 3 + +typedef struct x509_object_st { + /* one of the above types */ + int type; + union { + char *ptr; + X509 *x509; + X509_CRL *crl; + EVP_PKEY *pkey; + } data; +} X509_OBJECT; + +typedef struct x509_lookup_st X509_LOOKUP; + +DECLARE_STACK_OF(X509_LOOKUP) +DECLARE_STACK_OF(X509_OBJECT) + +/* This is a static that defines the function interface */ +typedef struct x509_lookup_method_st { + const char *name; + int (*new_item) (X509_LOOKUP *ctx); + void (*free) (X509_LOOKUP *ctx); + int (*init) (X509_LOOKUP *ctx); + int (*shutdown) (X509_LOOKUP *ctx); + int (*ctrl) (X509_LOOKUP *ctx, int cmd, const char *argc, long argl, + char **ret); + int (*get_by_subject) (X509_LOOKUP *ctx, int type, X509_NAME *name, + X509_OBJECT *ret); + int (*get_by_issuer_serial) (X509_LOOKUP *ctx, int type, X509_NAME *name, + ASN1_INTEGER *serial, X509_OBJECT *ret); + int (*get_by_fingerprint) (X509_LOOKUP *ctx, int type, + unsigned char *bytes, int len, + X509_OBJECT *ret); + int (*get_by_alias) (X509_LOOKUP *ctx, int type, char *str, int len, + X509_OBJECT *ret); +} X509_LOOKUP_METHOD; + +typedef struct X509_VERIFY_PARAM_ID_st X509_VERIFY_PARAM_ID; + +/* + * This structure hold all parameters associated with a verify operation by + * including an X509_VERIFY_PARAM structure in related structures the + * parameters used can be customized + */ + +typedef struct X509_VERIFY_PARAM_st { + char *name; + time_t check_time; /* Time to use */ + unsigned long inh_flags; /* Inheritance flags */ + unsigned long flags; /* Various verify flags */ + int purpose; /* purpose to check untrusted certificates */ + int trust; /* trust setting to check */ + int depth; /* Verify depth */ + STACK_OF(ASN1_OBJECT) *policies; /* Permissible policies */ + X509_VERIFY_PARAM_ID *id; /* opaque ID data */ +} X509_VERIFY_PARAM; + +DECLARE_STACK_OF(X509_VERIFY_PARAM) + +/* + * This is used to hold everything. It is used for all certificate + * validation. Once we have a certificate chain, the 'verify' function is + * then called to actually check the cert chain. + */ +struct x509_store_st { + /* The following is a cache of trusted certs */ + int cache; /* if true, stash any hits */ + STACK_OF(X509_OBJECT) *objs; /* Cache of all objects */ + /* These are external lookup methods */ + STACK_OF(X509_LOOKUP) *get_cert_methods; + X509_VERIFY_PARAM *param; + /* Callbacks for various operations */ + /* called to verify a certificate */ + int (*verify) (X509_STORE_CTX *ctx); + /* error callback */ + int (*verify_cb) (int ok, X509_STORE_CTX *ctx); + /* get issuers cert from ctx */ + int (*get_issuer) (X509 **issuer, X509_STORE_CTX *ctx, X509 *x); + /* check issued */ + int (*check_issued) (X509_STORE_CTX *ctx, X509 *x, X509 *issuer); + /* Check revocation status of chain */ + int (*check_revocation) (X509_STORE_CTX *ctx); + /* retrieve CRL */ + int (*get_crl) (X509_STORE_CTX *ctx, X509_CRL **crl, X509 *x); + /* Check CRL validity */ + int (*check_crl) (X509_STORE_CTX *ctx, X509_CRL *crl); + /* Check certificate against CRL */ + int (*cert_crl) (X509_STORE_CTX *ctx, X509_CRL *crl, X509 *x); + STACK_OF(X509) *(*lookup_certs) (X509_STORE_CTX *ctx, X509_NAME *nm); + STACK_OF(X509_CRL) *(*lookup_crls) (X509_STORE_CTX *ctx, X509_NAME *nm); + int (*cleanup) (X509_STORE_CTX *ctx); + CRYPTO_EX_DATA ex_data; + int references; +} /* X509_STORE */ ; + +int X509_STORE_set_depth(X509_STORE *store, int depth); + +# define X509_STORE_set_verify_cb_func(ctx,func) ((ctx)->verify_cb=(func)) +# define X509_STORE_set_verify_func(ctx,func) ((ctx)->verify=(func)) + +/* This is the functions plus an instance of the local variables. */ +struct x509_lookup_st { + int init; /* have we been started */ + int skip; /* don't use us. */ + X509_LOOKUP_METHOD *method; /* the functions */ + char *method_data; /* method data */ + X509_STORE *store_ctx; /* who owns us */ +} /* X509_LOOKUP */ ; + +/* + * This is a used when verifying cert chains. Since the gathering of the + * cert chain can take some time (and have to be 'retried', this needs to be + * kept and passed around. + */ +struct x509_store_ctx_st { /* X509_STORE_CTX */ + X509_STORE *ctx; + /* used when looking up certs */ + int current_method; + /* The following are set by the caller */ + /* The cert to check */ + X509 *cert; + /* chain of X509s - untrusted - passed in */ + STACK_OF(X509) *untrusted; + /* set of CRLs passed in */ + STACK_OF(X509_CRL) *crls; + X509_VERIFY_PARAM *param; + /* Other info for use with get_issuer() */ + void *other_ctx; + /* Callbacks for various operations */ + /* called to verify a certificate */ + int (*verify) (X509_STORE_CTX *ctx); + /* error callback */ + int (*verify_cb) (int ok, X509_STORE_CTX *ctx); + /* get issuers cert from ctx */ + int (*get_issuer) (X509 **issuer, X509_STORE_CTX *ctx, X509 *x); + /* check issued */ + int (*check_issued) (X509_STORE_CTX *ctx, X509 *x, X509 *issuer); + /* Check revocation status of chain */ + int (*check_revocation) (X509_STORE_CTX *ctx); + /* retrieve CRL */ + int (*get_crl) (X509_STORE_CTX *ctx, X509_CRL **crl, X509 *x); + /* Check CRL validity */ + int (*check_crl) (X509_STORE_CTX *ctx, X509_CRL *crl); + /* Check certificate against CRL */ + int (*cert_crl) (X509_STORE_CTX *ctx, X509_CRL *crl, X509 *x); + int (*check_policy) (X509_STORE_CTX *ctx); + STACK_OF(X509) *(*lookup_certs) (X509_STORE_CTX *ctx, X509_NAME *nm); + STACK_OF(X509_CRL) *(*lookup_crls) (X509_STORE_CTX *ctx, X509_NAME *nm); + int (*cleanup) (X509_STORE_CTX *ctx); + /* The following is built up */ + /* if 0, rebuild chain */ + int valid; + /* index of last untrusted cert */ + int last_untrusted; + /* chain of X509s - built up and trusted */ + STACK_OF(X509) *chain; + /* Valid policy tree */ + X509_POLICY_TREE *tree; + /* Require explicit policy value */ + int explicit_policy; + /* When something goes wrong, this is why */ + int error_depth; + int error; + X509 *current_cert; + /* cert currently being tested as valid issuer */ + X509 *current_issuer; + /* current CRL */ + X509_CRL *current_crl; + /* score of current CRL */ + int current_crl_score; + /* Reason mask */ + unsigned int current_reasons; + /* For CRL path validation: parent context */ + X509_STORE_CTX *parent; + CRYPTO_EX_DATA ex_data; +} /* X509_STORE_CTX */ ; + +void X509_STORE_CTX_set_depth(X509_STORE_CTX *ctx, int depth); + +# define X509_STORE_CTX_set_app_data(ctx,data) \ + X509_STORE_CTX_set_ex_data(ctx,0,data) +# define X509_STORE_CTX_get_app_data(ctx) \ + X509_STORE_CTX_get_ex_data(ctx,0) + +# define X509_L_FILE_LOAD 1 +# define X509_L_ADD_DIR 2 + +# define X509_LOOKUP_load_file(x,name,type) \ + X509_LOOKUP_ctrl((x),X509_L_FILE_LOAD,(name),(long)(type),NULL) + +# define X509_LOOKUP_add_dir(x,name,type) \ + X509_LOOKUP_ctrl((x),X509_L_ADD_DIR,(name),(long)(type),NULL) + +# define X509_V_OK 0 +/* illegal error (for uninitialized values, to avoid X509_V_OK): 1 */ + +# define X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT 2 +# define X509_V_ERR_UNABLE_TO_GET_CRL 3 +# define X509_V_ERR_UNABLE_TO_DECRYPT_CERT_SIGNATURE 4 +# define X509_V_ERR_UNABLE_TO_DECRYPT_CRL_SIGNATURE 5 +# define X509_V_ERR_UNABLE_TO_DECODE_ISSUER_PUBLIC_KEY 6 +# define X509_V_ERR_CERT_SIGNATURE_FAILURE 7 +# define X509_V_ERR_CRL_SIGNATURE_FAILURE 8 +# define X509_V_ERR_CERT_NOT_YET_VALID 9 +# define X509_V_ERR_CERT_HAS_EXPIRED 10 +# define X509_V_ERR_CRL_NOT_YET_VALID 11 +# define X509_V_ERR_CRL_HAS_EXPIRED 12 +# define X509_V_ERR_ERROR_IN_CERT_NOT_BEFORE_FIELD 13 +# define X509_V_ERR_ERROR_IN_CERT_NOT_AFTER_FIELD 14 +# define X509_V_ERR_ERROR_IN_CRL_LAST_UPDATE_FIELD 15 +# define X509_V_ERR_ERROR_IN_CRL_NEXT_UPDATE_FIELD 16 +# define X509_V_ERR_OUT_OF_MEM 17 +# define X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT 18 +# define X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN 19 +# define X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY 20 +# define X509_V_ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE 21 +# define X509_V_ERR_CERT_CHAIN_TOO_LONG 22 +# define X509_V_ERR_CERT_REVOKED 23 +# define X509_V_ERR_INVALID_CA 24 +# define X509_V_ERR_PATH_LENGTH_EXCEEDED 25 +# define X509_V_ERR_INVALID_PURPOSE 26 +# define X509_V_ERR_CERT_UNTRUSTED 27 +# define X509_V_ERR_CERT_REJECTED 28 +/* These are 'informational' when looking for issuer cert */ +# define X509_V_ERR_SUBJECT_ISSUER_MISMATCH 29 +# define X509_V_ERR_AKID_SKID_MISMATCH 30 +# define X509_V_ERR_AKID_ISSUER_SERIAL_MISMATCH 31 +# define X509_V_ERR_KEYUSAGE_NO_CERTSIGN 32 + +# define X509_V_ERR_UNABLE_TO_GET_CRL_ISSUER 33 +# define X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION 34 +# define X509_V_ERR_KEYUSAGE_NO_CRL_SIGN 35 +# define X509_V_ERR_UNHANDLED_CRITICAL_CRL_EXTENSION 36 +# define X509_V_ERR_INVALID_NON_CA 37 +# define X509_V_ERR_PROXY_PATH_LENGTH_EXCEEDED 38 +# define X509_V_ERR_KEYUSAGE_NO_DIGITAL_SIGNATURE 39 +# define X509_V_ERR_PROXY_CERTIFICATES_NOT_ALLOWED 40 + +# define X509_V_ERR_INVALID_EXTENSION 41 +# define X509_V_ERR_INVALID_POLICY_EXTENSION 42 +# define X509_V_ERR_NO_EXPLICIT_POLICY 43 +# define X509_V_ERR_DIFFERENT_CRL_SCOPE 44 +# define X509_V_ERR_UNSUPPORTED_EXTENSION_FEATURE 45 + +# define X509_V_ERR_UNNESTED_RESOURCE 46 + +# define X509_V_ERR_PERMITTED_VIOLATION 47 +# define X509_V_ERR_EXCLUDED_VIOLATION 48 +# define X509_V_ERR_SUBTREE_MINMAX 49 +# define X509_V_ERR_UNSUPPORTED_CONSTRAINT_TYPE 51 +# define X509_V_ERR_UNSUPPORTED_CONSTRAINT_SYNTAX 52 +# define X509_V_ERR_UNSUPPORTED_NAME_SYNTAX 53 +# define X509_V_ERR_CRL_PATH_VALIDATION_ERROR 54 + +/* Suite B mode algorithm violation */ +# define X509_V_ERR_SUITE_B_INVALID_VERSION 56 +# define X509_V_ERR_SUITE_B_INVALID_ALGORITHM 57 +# define X509_V_ERR_SUITE_B_INVALID_CURVE 58 +# define X509_V_ERR_SUITE_B_INVALID_SIGNATURE_ALGORITHM 59 +# define X509_V_ERR_SUITE_B_LOS_NOT_ALLOWED 60 +# define X509_V_ERR_SUITE_B_CANNOT_SIGN_P_384_WITH_P_256 61 + +/* Host, email and IP check errors */ +# define X509_V_ERR_HOSTNAME_MISMATCH 62 +# define X509_V_ERR_EMAIL_MISMATCH 63 +# define X509_V_ERR_IP_ADDRESS_MISMATCH 64 + +/* The application is not happy */ +# define X509_V_ERR_APPLICATION_VERIFICATION 50 + +/* Certificate verify flags */ + +/* Send issuer+subject checks to verify_cb */ +# define X509_V_FLAG_CB_ISSUER_CHECK 0x1 +/* Use check time instead of current time */ +# define X509_V_FLAG_USE_CHECK_TIME 0x2 +/* Lookup CRLs */ +# define X509_V_FLAG_CRL_CHECK 0x4 +/* Lookup CRLs for whole chain */ +# define X509_V_FLAG_CRL_CHECK_ALL 0x8 +/* Ignore unhandled critical extensions */ +# define X509_V_FLAG_IGNORE_CRITICAL 0x10 +/* Disable workarounds for broken certificates */ +# define X509_V_FLAG_X509_STRICT 0x20 +/* Enable proxy certificate validation */ +# define X509_V_FLAG_ALLOW_PROXY_CERTS 0x40 +/* Enable policy checking */ +# define X509_V_FLAG_POLICY_CHECK 0x80 +/* Policy variable require-explicit-policy */ +# define X509_V_FLAG_EXPLICIT_POLICY 0x100 +/* Policy variable inhibit-any-policy */ +# define X509_V_FLAG_INHIBIT_ANY 0x200 +/* Policy variable inhibit-policy-mapping */ +# define X509_V_FLAG_INHIBIT_MAP 0x400 +/* Notify callback that policy is OK */ +# define X509_V_FLAG_NOTIFY_POLICY 0x800 +/* Extended CRL features such as indirect CRLs, alternate CRL signing keys */ +# define X509_V_FLAG_EXTENDED_CRL_SUPPORT 0x1000 +/* Delta CRL support */ +# define X509_V_FLAG_USE_DELTAS 0x2000 +/* Check selfsigned CA signature */ +# define X509_V_FLAG_CHECK_SS_SIGNATURE 0x4000 +/* Use trusted store first */ +# define X509_V_FLAG_TRUSTED_FIRST 0x8000 +/* Suite B 128 bit only mode: not normally used */ +# define X509_V_FLAG_SUITEB_128_LOS_ONLY 0x10000 +/* Suite B 192 bit only mode */ +# define X509_V_FLAG_SUITEB_192_LOS 0x20000 +/* Suite B 128 bit mode allowing 192 bit algorithms */ +# define X509_V_FLAG_SUITEB_128_LOS 0x30000 + +/* Allow partial chains if at least one certificate is in trusted store */ +# define X509_V_FLAG_PARTIAL_CHAIN 0x80000 + +# define X509_VP_FLAG_DEFAULT 0x1 +# define X509_VP_FLAG_OVERWRITE 0x2 +# define X509_VP_FLAG_RESET_FLAGS 0x4 +# define X509_VP_FLAG_LOCKED 0x8 +# define X509_VP_FLAG_ONCE 0x10 + +/* Internal use: mask of policy related options */ +# define X509_V_FLAG_POLICY_MASK (X509_V_FLAG_POLICY_CHECK \ + | X509_V_FLAG_EXPLICIT_POLICY \ + | X509_V_FLAG_INHIBIT_ANY \ + | X509_V_FLAG_INHIBIT_MAP) + +int X509_OBJECT_idx_by_subject(STACK_OF(X509_OBJECT) *h, int type, + X509_NAME *name); +X509_OBJECT *X509_OBJECT_retrieve_by_subject(STACK_OF(X509_OBJECT) *h, + int type, X509_NAME *name); +X509_OBJECT *X509_OBJECT_retrieve_match(STACK_OF(X509_OBJECT) *h, + X509_OBJECT *x); +void X509_OBJECT_up_ref_count(X509_OBJECT *a); +void X509_OBJECT_free_contents(X509_OBJECT *a); +X509_STORE *X509_STORE_new(void); +void X509_STORE_free(X509_STORE *v); + +STACK_OF(X509) *X509_STORE_get1_certs(X509_STORE_CTX *st, X509_NAME *nm); +STACK_OF(X509_CRL) *X509_STORE_get1_crls(X509_STORE_CTX *st, X509_NAME *nm); +int X509_STORE_set_flags(X509_STORE *ctx, unsigned long flags); +int X509_STORE_set_purpose(X509_STORE *ctx, int purpose); +int X509_STORE_set_trust(X509_STORE *ctx, int trust); +int X509_STORE_set1_param(X509_STORE *ctx, X509_VERIFY_PARAM *pm); + +void X509_STORE_set_verify_cb(X509_STORE *ctx, + int (*verify_cb) (int, X509_STORE_CTX *)); + +void X509_STORE_set_lookup_crls_cb(X509_STORE *ctx, + STACK_OF(X509_CRL) *(*cb) (X509_STORE_CTX + *ctx, + X509_NAME *nm)); + +X509_STORE_CTX *X509_STORE_CTX_new(void); + +int X509_STORE_CTX_get1_issuer(X509 **issuer, X509_STORE_CTX *ctx, X509 *x); + +void X509_STORE_CTX_free(X509_STORE_CTX *ctx); +int X509_STORE_CTX_init(X509_STORE_CTX *ctx, X509_STORE *store, + X509 *x509, STACK_OF(X509) *chain); +void X509_STORE_CTX_trusted_stack(X509_STORE_CTX *ctx, STACK_OF(X509) *sk); +void X509_STORE_CTX_cleanup(X509_STORE_CTX *ctx); + +X509_STORE *X509_STORE_CTX_get0_store(X509_STORE_CTX *ctx); + +X509_LOOKUP *X509_STORE_add_lookup(X509_STORE *v, X509_LOOKUP_METHOD *m); + +X509_LOOKUP_METHOD *X509_LOOKUP_hash_dir(void); +X509_LOOKUP_METHOD *X509_LOOKUP_file(void); + +int X509_STORE_add_cert(X509_STORE *ctx, X509 *x); +int X509_STORE_add_crl(X509_STORE *ctx, X509_CRL *x); + +int X509_STORE_get_by_subject(X509_STORE_CTX *vs, int type, X509_NAME *name, + X509_OBJECT *ret); + +int X509_LOOKUP_ctrl(X509_LOOKUP *ctx, int cmd, const char *argc, + long argl, char **ret); + +# ifndef OPENSSL_NO_STDIO +int X509_load_cert_file(X509_LOOKUP *ctx, const char *file, int type); +int X509_load_crl_file(X509_LOOKUP *ctx, const char *file, int type); +int X509_load_cert_crl_file(X509_LOOKUP *ctx, const char *file, int type); +# endif + +X509_LOOKUP *X509_LOOKUP_new(X509_LOOKUP_METHOD *method); +void X509_LOOKUP_free(X509_LOOKUP *ctx); +int X509_LOOKUP_init(X509_LOOKUP *ctx); +int X509_LOOKUP_by_subject(X509_LOOKUP *ctx, int type, X509_NAME *name, + X509_OBJECT *ret); +int X509_LOOKUP_by_issuer_serial(X509_LOOKUP *ctx, int type, X509_NAME *name, + ASN1_INTEGER *serial, X509_OBJECT *ret); +int X509_LOOKUP_by_fingerprint(X509_LOOKUP *ctx, int type, + unsigned char *bytes, int len, + X509_OBJECT *ret); +int X509_LOOKUP_by_alias(X509_LOOKUP *ctx, int type, char *str, int len, + X509_OBJECT *ret); +int X509_LOOKUP_shutdown(X509_LOOKUP *ctx); + +# ifndef OPENSSL_NO_STDIO +int X509_STORE_load_locations(X509_STORE *ctx, + const char *file, const char *dir); +int X509_STORE_set_default_paths(X509_STORE *ctx); +# endif + +int X509_STORE_CTX_get_ex_new_index(long argl, void *argp, + CRYPTO_EX_new *new_func, + CRYPTO_EX_dup *dup_func, + CRYPTO_EX_free *free_func); +int X509_STORE_CTX_set_ex_data(X509_STORE_CTX *ctx, int idx, void *data); +void *X509_STORE_CTX_get_ex_data(X509_STORE_CTX *ctx, int idx); +int X509_STORE_CTX_get_error(X509_STORE_CTX *ctx); +void X509_STORE_CTX_set_error(X509_STORE_CTX *ctx, int s); +int X509_STORE_CTX_get_error_depth(X509_STORE_CTX *ctx); +X509 *X509_STORE_CTX_get_current_cert(X509_STORE_CTX *ctx); +X509 *X509_STORE_CTX_get0_current_issuer(X509_STORE_CTX *ctx); +X509_CRL *X509_STORE_CTX_get0_current_crl(X509_STORE_CTX *ctx); +X509_STORE_CTX *X509_STORE_CTX_get0_parent_ctx(X509_STORE_CTX *ctx); +STACK_OF(X509) *X509_STORE_CTX_get_chain(X509_STORE_CTX *ctx); +STACK_OF(X509) *X509_STORE_CTX_get1_chain(X509_STORE_CTX *ctx); +void X509_STORE_CTX_set_cert(X509_STORE_CTX *c, X509 *x); +void X509_STORE_CTX_set_chain(X509_STORE_CTX *c, STACK_OF(X509) *sk); +void X509_STORE_CTX_set0_crls(X509_STORE_CTX *c, STACK_OF(X509_CRL) *sk); +int X509_STORE_CTX_set_purpose(X509_STORE_CTX *ctx, int purpose); +int X509_STORE_CTX_set_trust(X509_STORE_CTX *ctx, int trust); +int X509_STORE_CTX_purpose_inherit(X509_STORE_CTX *ctx, int def_purpose, + int purpose, int trust); +void X509_STORE_CTX_set_flags(X509_STORE_CTX *ctx, unsigned long flags); +void X509_STORE_CTX_set_time(X509_STORE_CTX *ctx, unsigned long flags, + time_t t); +void X509_STORE_CTX_set_verify_cb(X509_STORE_CTX *ctx, + int (*verify_cb) (int, X509_STORE_CTX *)); + +X509_POLICY_TREE *X509_STORE_CTX_get0_policy_tree(X509_STORE_CTX *ctx); +int X509_STORE_CTX_get_explicit_policy(X509_STORE_CTX *ctx); + +X509_VERIFY_PARAM *X509_STORE_CTX_get0_param(X509_STORE_CTX *ctx); +void X509_STORE_CTX_set0_param(X509_STORE_CTX *ctx, X509_VERIFY_PARAM *param); +int X509_STORE_CTX_set_default(X509_STORE_CTX *ctx, const char *name); + +/* X509_VERIFY_PARAM functions */ + +X509_VERIFY_PARAM *X509_VERIFY_PARAM_new(void); +void X509_VERIFY_PARAM_free(X509_VERIFY_PARAM *param); +int X509_VERIFY_PARAM_inherit(X509_VERIFY_PARAM *to, + const X509_VERIFY_PARAM *from); +int X509_VERIFY_PARAM_set1(X509_VERIFY_PARAM *to, + const X509_VERIFY_PARAM *from); +int X509_VERIFY_PARAM_set1_name(X509_VERIFY_PARAM *param, const char *name); +int X509_VERIFY_PARAM_set_flags(X509_VERIFY_PARAM *param, + unsigned long flags); +int X509_VERIFY_PARAM_clear_flags(X509_VERIFY_PARAM *param, + unsigned long flags); +unsigned long X509_VERIFY_PARAM_get_flags(X509_VERIFY_PARAM *param); +int X509_VERIFY_PARAM_set_purpose(X509_VERIFY_PARAM *param, int purpose); +int X509_VERIFY_PARAM_set_trust(X509_VERIFY_PARAM *param, int trust); +void X509_VERIFY_PARAM_set_depth(X509_VERIFY_PARAM *param, int depth); +void X509_VERIFY_PARAM_set_time(X509_VERIFY_PARAM *param, time_t t); +int X509_VERIFY_PARAM_add0_policy(X509_VERIFY_PARAM *param, + ASN1_OBJECT *policy); +int X509_VERIFY_PARAM_set1_policies(X509_VERIFY_PARAM *param, + STACK_OF(ASN1_OBJECT) *policies); + +int X509_VERIFY_PARAM_set1_host(X509_VERIFY_PARAM *param, + const char *name, size_t namelen); +int X509_VERIFY_PARAM_add1_host(X509_VERIFY_PARAM *param, + const char *name, size_t namelen); +void X509_VERIFY_PARAM_set_hostflags(X509_VERIFY_PARAM *param, + unsigned int flags); +char *X509_VERIFY_PARAM_get0_peername(X509_VERIFY_PARAM *); +int X509_VERIFY_PARAM_set1_email(X509_VERIFY_PARAM *param, + const char *email, size_t emaillen); +int X509_VERIFY_PARAM_set1_ip(X509_VERIFY_PARAM *param, + const unsigned char *ip, size_t iplen); +int X509_VERIFY_PARAM_set1_ip_asc(X509_VERIFY_PARAM *param, + const char *ipasc); + +int X509_VERIFY_PARAM_get_depth(const X509_VERIFY_PARAM *param); +const char *X509_VERIFY_PARAM_get0_name(const X509_VERIFY_PARAM *param); + +int X509_VERIFY_PARAM_add0_table(X509_VERIFY_PARAM *param); +int X509_VERIFY_PARAM_get_count(void); +const X509_VERIFY_PARAM *X509_VERIFY_PARAM_get0(int id); +const X509_VERIFY_PARAM *X509_VERIFY_PARAM_lookup(const char *name); +void X509_VERIFY_PARAM_table_cleanup(void); + +int X509_policy_check(X509_POLICY_TREE **ptree, int *pexplicit_policy, + STACK_OF(X509) *certs, + STACK_OF(ASN1_OBJECT) *policy_oids, unsigned int flags); + +void X509_policy_tree_free(X509_POLICY_TREE *tree); + +int X509_policy_tree_level_count(const X509_POLICY_TREE *tree); +X509_POLICY_LEVEL *X509_policy_tree_get0_level(const X509_POLICY_TREE *tree, + int i); + +STACK_OF(X509_POLICY_NODE) *X509_policy_tree_get0_policies(const + X509_POLICY_TREE + *tree); + +STACK_OF(X509_POLICY_NODE) *X509_policy_tree_get0_user_policies(const + X509_POLICY_TREE + *tree); + +int X509_policy_level_node_count(X509_POLICY_LEVEL *level); + +X509_POLICY_NODE *X509_policy_level_get0_node(X509_POLICY_LEVEL *level, + int i); + +const ASN1_OBJECT *X509_policy_node_get0_policy(const X509_POLICY_NODE *node); + +STACK_OF(POLICYQUALINFO) *X509_policy_node_get0_qualifiers(const + X509_POLICY_NODE + *node); +const X509_POLICY_NODE *X509_policy_node_get0_parent(const X509_POLICY_NODE + *node); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/ext/openssl-osx/libcrypto.a b/ext/openssl-osx/libcrypto.a new file mode 100644 index 0000000000000000000000000000000000000000..037d63345ca5cee1e4461745841da4566a57dff1 GIT binary patch literal 2700624 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 CVvm1snPEJ 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%0AO<*5*8F&kLIrsqB3O);74Za3m1MUKO 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%0D+S=1zAK|@2+vPgZfYoo&oqN{q6_x4c9 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�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%0DmgLD+Bzu0p2;l(*a%@ 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%0D-h<*RtZ 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Ŏ^Vv%SxOxvJR)HXtc#QAUZ1ztoV@RLT1$7Ew@ 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

      aNQGI$^2DSh2Xa508~}YKyK1**~-26 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 z zgI)r95+L>cFJx2hUO=XMACU2{00+Mev;4c8-`%(1m3rP7L;0w~#b0L<2U&05Z z8Gh?*#rLNK`fAWAcRAn`z`lSN0A}fMDj@U!6n;y{_ckEy^nwmQ1juwHfK1m%hdTo@ z-M`LK>D~uq`E~=+Zd(CquNwG(H1%8r`V`Q!0V%J84u6C)F?=Q9<$#w0_5eH+upeL& zAnmXjes9>m*2Bl+HM)Km;?>Ange#5kz2GDNb)d)c2VXhp6F|RALq8z8Tbr(c-9Y~i zJhK76)bL}#OAy`)Uy(Bm`Okw+{q6?clz$7t_ZWOb!8a3py#d)y&jUOU@C-oO>r}w2 z0qJYU z;NP2J@w1lv-vb{2I{i#gkDY+jZzCY}dmL~o;2J>or(b1Q>+aCy+IJe(bD&d?t3Y?l zPx@F*zaW85e>5z|cc-iJMl^gKkmcF}$nrl5$nxI{$nw_!P6J#3$n<_dmXj|7SkAV9 zEN2t)z6$Vr__%b-NqyeJm-6X5hIXdEG0J}ckn(xMBjwKkBwr~Y`T7HrF9(o(=K_+? z>8R|nykoOHt_5wRrVlabJwR)t>4(yr`G1!VKkxXmzwHHNe)Rdo{9XoRzj{o^KM2Tt zmjMn2EC(D1I25oLuqWV1z;ghH0GuIhp(sv>}(%{<& zz9OXmBOu#%2=P86{$|jJf<7MfJ_a5BBjWf5==5iU?zRu+my*EuBWN67KLi{GxCM~q z{}UkX(;KimU^d{zfM){s1WX3Z2mBTftHuJ-9~0pl8a}V#;~L(tVV#DR8q%*1+jn_~ z=J}!%)DtB|AF{2U;24t`2v7>fKvh49!7!x z*Seh!04*KgNucjR{0a8!;HKU#t zfV5{HK+5R=NI5%`75#1vI|DKvJ~Ji$Nx;4cKdj*c8s4p85Rm+104dK4$a?JvNc}%) zrQj`q7a@EF;Q4@;YIqJ{FN9kGUJCdwjLr7@EFk5<7fh`Fe+L@(39%f-fYggWaS1Qc z@L~<&_gdt@KdQ+23cfD0wY|Tz#Gj_5+XXf(q|d@k`Kc}93RGZwg+n>z89knoC-TIziWv@cg`7WP$%@+wFqN< zuErn0_G;4_-O7jk~o z{9f>+pxu#YdM4VF#!FGS!=Q;w^yePXo%mkh+!RSX2jzHF%U_M~T20>z`WB6Q+rf9Q z=GhDA*K(%AV7oNW1K|0m#`gnfdlG%p@Cz5Rh(FL7d!jX+{`b(1g#IMpA2gl5D1W7K z`i$J9ary||t?}u=_rVSjDW9`pLl^&tL4V)CHyS)|BbCd4Hf-hMUl{Z|L3HWe40^SJ zpJVX6WYG5*IQO@@a&{RybTe@H;f?Y9&Pcn|NLyjhKR42@G4KOMd2#PWOeXt`t3yA7 z|KDgoE}g!6UHm13ezk$yhMun&cyB}g52zzo&Tu1b4+Bp(@LwBvnIZE@2yx|%HR!h( z{0EJEpD=i?GIW@4$ia4qR^->|L@|26O|v}c!or6IqMfnRLMJjI~X zXR@1?{s~?DO+&W~L;pqt=bYp6*BUar7(CY+GS?aW-xxf9Hh9!|72^P*d2*6R&*UJz zK2xZ?0vSgu$#C?ULid@2KJ%pxxzEQTDjp4!JE_#cE*`0t6Zl&EQJ$X?++xM#${{=+ zF~`~9#pSbk$Xs0ZEK$dShmKLOXjmD~n+vzjqS^72lwu~mn#82I{+}pW9R$PSb%khA zDlik?g%-}o$u@ZNQIwcwan5{9J~~a&r&6^<_c*+kV0w7c$|lHGLBsk9@pEy~TAv)F zWpUsRhmn=rmY9AZ<{m|aQ8cF<+=Prc*A|8g3w?Ti)+{Z=<>xUym8WtQp$;|c@;3Vo z(Q3Jep5v8O5@u?@13WCJDAGb$fM!y2!R72D-Tz4T%25${)iW+FQriH93c{-s3U~dC ziXcuZ8m5$%E)E(Jh|EBrlW!p=b~v_$IDO>!sBF+*VqT&oS)2niR?tyNsDxW0*hf;i zVc7I2{+JUtKDtBmFB?{<{isON=7aO@!AyPdG{#1{d+zjDaqRak#T|>zt{3CiDwB6f z@ak*Dv5B}qX;x5Gva3l#YLeAqI(1|gn$MnFLDvM*bk)gs^iHAi6uh(|BFeo^DLmzg zUnHKEXP%Oh{v#BEv+?@$ykH!NRM(cLomzXbW6S{yHDrFO(dkkx;XzUHcP4UKkw_r^ z5Y))aRI}#l_S-_D#0RhtqrKa(FiRG|r@(>$M!+)Hy8~6FP<8rH9sf3kz{5pLKG@i4 z#K!ESdem@T3SP5#;SExJxP_S8dzNc2q_{dbw*s|lq>=hlZdkIeHS_5P}wX`6gR5 z9s*kf65uxt-$&x7lNEUmFK(P?>VaYtOxvavG^oq}C*TG@e#%)92mIW>&NGRg&ayY# z2PIDSUTBsf!gukZqwj^TM_l4P%vr+Pe2=o;tF=*hjeD5C!#R==HftH>N7?bfoSUFf zhScp4jxv7-5NQB2H~o03UqMi9lt`AC#}U)8;sH?EejCIZ3VRsg9H5W^%!-64W5r{_ z#UGXYgjdw#f5VE`@SmRsxglI(?+AsoT`}zA81_L7+p96YB;@;C;eT{K%2<69lW z_G_&9ROt>-Smr_nlV2cA_Tlk?6?qkJ@|*XyujW>Nwju1EY2%do?T(@P67#I7YF{j% zYG3MIW6uZ()|HXlX#_b8f}@X66Pv7kcme6h3&;YeW)aNg6!@^qGu6iSm~qJ2uB9EF zntJ@lYsk}Vyb`?!2^)k0BHu=4;~nLoBR}D6L61RA=t#>4h7Pt01{+e?sTzv?=>Uxl z3des-j`R)s5eb5qHlz@O$;*fb@vn`Ad_xCY-|!2R)#p@K%|d=jFE{PQIZfuQSfe)$ zYNCK{4Jm{!b=Dv@grEn!tb5JNt&6^JWfweC;k(iXyeQ=}D8SU#fQ{!u(T0>HLwXjJ zH-a4+Qd&0$LoXB{6*fEk2LF)<{=-CG&|o4tCwpe>L?`zb^+k+R!(Z>AgIyMPJzAN& zz(8dvsqqd3!ecAKzkUEAX;l-j7b49U*}~(KBE~MBW4}<3Xc*p3X{aS9Ke9!wk;8gi z9$rd;{InS=ANRmFe(G6~d6aq|dmFZ`o~;`}+im0$#`z{hkCJdgcn14 z<86=`R|;WSr7{*vMX%K=NeoL(8}mR^5$=oYJ0@CnewWqt+eKQDr_R|yJ0r;x^mxfYj zqm%it+sVuQS+Tw7dW#BF_`959y!Cvcq{;>u?7@0XsDZY{p{DkWcjMn#^`X5<(N;Vd zTIAI9i;+|acuxt z!o#^e7pap|Av%&Rqzp~UA?XYum1vTeq*frspKRHW^N-F7_6sxyN{swXD9;;|*Mzdm zpllM#=LY3rP#RXa1Gck*gR?7fmBhINx3gle5w}Prafo)grwL`XK^Y~K{RZVyP|PW) z2f`uT3f|ZSh~68?la4avPH}$clRbfd=F2#ztzGToJ{y>BAVgxnP3Q-&r|w1cFtkz( zc0QhD#AZbvam1#+QUGir|MeEnGdsbM9UkQy2$(MQ2rmwtEZKbjfFp|-a~EG^M?(j( z!<~6xGU^$s|0#4Z$y56m4qoVV%o9y;VD9e5{hEd1w~~hGwWc$O)w?~_{{yIog4_cK z3c4hDYWOT3N6hx{`1>edf&DvQwUX7-Q_Z0f+aYTrr_(SMX;(nQi811Zu53Oas_ zCQm*AJ3uuVkG_CVwxTq!pl8W=v5k_TqG zv);SQ^GrQ0Tk}USy6Wa|1YvW6N~{43>hoMuTFfFC1b3-2c&dAY!<9Z&cKiee!9)Y4 zY%=oNVyouUX-NrPmRUp|#d%331{KvRn2wZeB4V;P!C^=Ll0@C3t?X#-S6oB!pn`Mj zoZPPlJjcH0smUZ8>u-2P*m(dXt|wg?Bh`7#n*V_AgkHw~hm!&YHBCWoN5`ZpI_gQa zr&jO`2xPr}2yS=8Yz;ZetX!prUVIAwtzen6VgsPPWlLk`%2B>PMACuet(@iSyVCFL z=d|5&FcqtTW!%TyH`<)18u#c+Bwu0>& zLRu|MaYS=hOkKq~3$4RBh)7ptel6N2X1MlbujKc-?`9Xa8B*woug}9y_!T z92;Db(e;rxai)i;@wW3~qV471Ws_hI+2v5rjPt45!AaGj# zTY)TlrKlva(YByuAgd}-?M%CsEd`3EHNYy6ud)`I60UXg3lGn9#?WQTnRXr1+8Y^T zOT67bdWL;#W_V1NeQTB`DJI#Ho+gqo>uQ*MA&^J}#~NkVVom+>)1vd@>bq(91T;KW zR$@~5b?`V(N^Uy_hX{ATk-zQMGn|Q8x*OQvL?%KQmiZ654dJ2qh9Ey2FQe#~8wz)C zE`QHq0zx;*aJvbcO$a~bE zY0;0RF+LrygEYoBcpMXr5oa@4%bR&(vLXM|KuYeOMlQaMxZg{h6Jm{^nO*NVtQFK! zMR;NsMz;*K1At6wp1&)QF<=xL>AAW^2yZl1Xqk3<-6qZjZzkG>w3=u-`fDbC#h`7d z79x2`SjI(S&$0KmSiBeFizg=j8fO=2pMbBS_D&>ZVrO_ysNYWdUmm9m>~p<k^(HI+_9ji2rePi+o*s=3q}Fgz9hC^(v8gqsSL z>@7S@?y0^Tk>OeyTAZP1vNDya3AZbH2O4GkgzH6GXGJ|yp#-v?TYy2|evuTX_5u92 zSM0<8=%5&v{GcoWSHp^W#PH*4O|@bNl3wCDN>MA&Mn=ex@*ousiDG*G@o25MT;u$+ zjZpuN4)Hu_eYAnrGsaUi=46&O;6e4K+EouDiDa-1+tK~d#*J_5NL=DsXfysXq&;SQ zdnI4<#MbMe;&~9~Vby;^`?93p&@)6fe=g>QtAbdrpnl|M4&S-b@Ey@sSj7H>x`+?( zm?VA|WNm|1J~UphJ#x4E0~1XFYqTE(h{4xsgBL$4?joZ){q9b2=VN&htJ-9GcXQ`M zSX=u_$VPW6;3JD(C&uR(@x&A2t7ME=E%J@=qFH{xNKag)Z+^bY zldwJx@i*eABx>~>;`0?g3}U?YlSiPibYZNpYrA5?LJN~la86T z$_wpN&st;JHEUB30Uqjmh?58WwwAM9<=GNL0K(&Z`0|23)%|?AH&P>9Rj`^48C80Hs9c5I1S%? z@FfEd1jN4kb$p+M&)S>tEONJ#so^>iABeyLyn${p!@?_kfoJE(PodIP3IgzMi0s z!#5Z7N<7IU-&8=R!;`(3yll{J#GXIW$6?>Nn-A~#yae>&pl1NGJpTrb@MFLn&^KUz zx5@ti=;ZIK`8oiyd|!E*`S#=a;S`T5{~*Beh`$Jse5WSxy$xRG_Xr^4^0`+cf9mopLY3h*6DvDWcjCEF+S-GeXddp97@5p31rCpElZ!&MqC(va^h znQo|t+{ZZ);d22?0Mh^`10HUxSq~dm5(qt&`y6%w$|+j56esX9hyELbhkc99{~F0 z;BS{e{}+}v7lXd6bv*wzq@g~K0{Rh8w^Iz~0#ZMo8ovaPlLG61EFksddm8pTJim|S z-wCu-eEWdD7mD@=d>Swh@H#-2qfo;xc)jiF%~#E%@EwEiSbW>V=A1rQ-mV(oi+0{$ z;~Xd4`;u2QpTrpPcb&E#I;3bGFL>_La(Gr~x5h2d|E+P}x6R|Sl*4mG?w(`by**LODFx5% z8eatbYgayW_GtZi*SJ^HbHMYw)@?O(TLRglKX_MadOGOYE*-l68a5@*en7N!!7BkX zG*1C|rs}l2I%0fr%MN_2=1&Lj8cp{?{v1uO2VAV_yc?VQQ<>Ll;9wIx9S|hJ0jxHf zrxX!vm*lSpvsc^7i+V}Y_<301J4GJOaI8A zKLJjc&Nk=bJ_CQ-z`rr@Dg)n(dU4Y}XW&m5INt}jJYO65BGj2nFE;R(4E(nS{*00K z9iv=V81#D#{7l%^mCt+7UEJIk`*))((+!!t6UsEVHyD7ww)?8j(Qg(fFf#v2uTopHyduao6)kU1g zxtWzEI!bY+K|~SE}y^f z`q=HWl3*6Dnv31Dh^mTdK?!V;)WWg_oz4~I#wLhF}}q_M@O`HUzcm? z7OwJAibK4||B zg$w7+Er$v8z0C1;fC4Js-N*{nuk(=zUiZkaO{ zZ?YeUHGaRbzEEdY@44~fxwAM<2*&AVTj-HMM)&xELyxYyYw6o{{9_A8jVdd=tQga* z^>gpZ>7AF8lV|L+<&bxxeYX4!V|mrQ&vi;mpM8av#q~fXAeMfyFL_U9pKX^5ReCIm ztV}=dGT|cQXY8|O`fIV?+1QIYHh)ZYaqIe$CCyRLEB-DP>RzGa&2&`7{ha7NmsPoH zAFdBSuuK_ldP3|O=FNdIQsR9s>$Hr4KTAe@S)PZCdOXLNpk-_rFV6sCc`7}Qe<#c` z*n{Pwe$jGrXd+roAn+n}pU=(>4q3R-xr++M`1IrO^6o+Fe3h zA+$nG3kmIZp^etGg+lvZp-s`WD~0wOpXvqvM=}v&}fl&CA0$}xKQ+lS8O7eyk=Ri`0-3O`L9WM zCi^Hj!z=!wrQ9d!{-UMSN$8cBlt@cbo~4v>k#bs3mHQ+~_l%?q^rk*?C(MdBVv@4R znWzu9)kMywq!&vVkGB~eMA9atgTh`m0>CUnzF5Y~BQKExa}LOV7qzhBU_} z2l!A4b$5%L|z`Hqeb6PZ}jp3-ugax{qd@r(VWmhZ}5NY_aaNNL)iW{dSU2bdN75qxU6V~+DZ{UYa<83Xq$~t+LB7CUbznM z0_;}KuuS{C(812jyM+#VmiG*oG=&bO+>n#I8?SuQoK9b8RofRF=yiVVQ z2NhPdSn}B<`3yic_HQ5yZ$OCE9JUwM?6kiPv{g~LJE6A6-xwXvqvcR%Q%s#zt3QT1 z(5%0m3JIqw9alej5p*o#YiVqW3v|%b@2Gi-{jJjqZ4r9{ha+S7x$JBw`?%xAem^pw z`-cyseWw12UBpw}l`LNc+GE=?Lfk+HSvhc`x~1wfI_s)BWI-2s2kEIf0Oba$m*P>N zXl0>;$-xWZbMNL%>`8o|G&JmRWw<*OL1X?2?=PW94VyhLi~5q))7^d-#^qN1%N6%; zHTN#f&DJ2?s%pE%_{S;!CpG^A!XKO%lk9S)2gfST9h&oc#o5!4+Dl7K4{~EXbpD&> z{e|!bI?%i@djpg~VPdb=@h)r^taL8E&*QsYL*o3tifX-iRdwCA5c>8;(%?;{}=@qEu42)gr&hxjm zVjCEYm-dHR@aAVHKK$P`I{jHuB&QkAl8|4Oh8)>>oGt5Eo3eI9!u%M6X9Q zsFT7q=Ni;|K$ZPph$;-%^f01sMHFPUf~@D5XP`^&9+B;=^07~Ly|I7rJa`@bZzBhM z#3Wf8nwpL@xzUCF+a0tE`#aUX2N3TR%yJ6)Kb#)uRMkY*Kt5qBD>%UZI=ns)`9{Y) zoa(90KwAyhd~}|aOWxzJ28C^cM;jVF2r$9zOmGfGz}+Nt2zIR56Ry1sR3*&gk2DnK z(e|+JN&tRY#$Evfn_toG3T|=f!*oYtBcV{hSD-O zSW^}lmx6>Elw6&ufBOjYmh4gqcY4?j1UbXqp&7=d*6$oi#GieWG&Z!jY3oe!U%mImY zFpFz|s?BeiakF&Xbj!=Qcg?uzI&LZ&AL6!{aZ`2NWZI%?^GjyjWF0qwi;AkvJI%NW zI&Vnyd4?gd!;|B4Xr3c>PP5>5#9-d+)KDv7!8{up_d-5i!n$pYPaPS ztW(-G;{QN=`{O$Y-&y!h$9F0jFTqBbigsHOoP5dz-zdNdfH{DrPa$^{Y@yCi(`d2V)6h`%%%9z&~*7^^o@y}4aPa6d`oLe(t;&G0yQP+!685v)s$oe z`vIw_Daj1>n)gNqaxJlw+c)^zr$G#wQhS=6kS4T-H=j!?&i^5JZ_R;Qxo5qkp;*{( zO_AqzE_PAeS>a;bVVP$C5FXBxEX&RfkIW8F{3*8H58wEKed7^(#KF*(j9&!5LEiSK z;ZgY?%-e;Vqy8s7I)yS|>q>}&S=GqDyV1`vPM_!c7F#;<%8c3HZ>!IV75Y6@=r>iNe?+0-rnkA!6VvR)iG_X-g-)x%>Nxl) zGKF-vzyTEaKwvrwJ=Ok?{bu~WMW-+=g!h54^Q*}6O^^SeGcLVmxBU{b9Gd3LRd&8S z-5!}{Pf2emRCX>@c78Sg8)R8;ZwYQdmXPgM@>FEGCol~*zQX>%K5W+SCC=Ei1H&_u z0(l|Y_aYpS=#hWe<9`cwhsj72%rr8IvhaH~p?KgwZB11@y zH|$j~>=d{mf8VH2)t=ImkssO<@_P&Uz3=h=bd2^iF3tXhYg+p)u_+r8^MhcwfTN@l zU4;Tpv0p|3o7*qi587{fdSdzBbIOeNtILP>n@~Qt;V?f4KH2i6(VqW5maoH6_4og{ ze6;8Pqw>9CA3Uo5GT2^J`#g;HqWXV}^>#-14}x)SvC_hbG{Ltltj3=( z&`4Vhlbo|su-3s^Rah`PVOrqWbY0DE?BJdiSb{n8jl}WkrgX7GVg7r8Jp04^cRl{E z?TB*)$0ivj(w%E#W7EWRdvRI=-IGFvS1|$2v0rK!s>Z1I@?Qy@DZ|BM(NmcbvxL&X z?5C7Q6;L|)z6lso@$T?PPv2^Fg4ClH`3`uRfPW3Gf^uXZVwrhni5b&Z0x9z&j zw+Oa?TZpa!Uj=USN`*#xpKEAK&M$(S)Q@OP!P(*3|L|8Mw17>xEtra>K%vNPwI#Sc z?p|4j2NZLnm-0XN)01Ln`NDNSAZb`l1rbi4o@d6SgbrOAY!lj%irYALq_9o!$wVb? z63k{&Cew4rH<9T`fTKq9AlRXC2bf8?9E3O@6;U@~z02RS ziviISvyiaV-V*wZ_X(tTJHn=eUs)&^jy8oCq=#=!LvkB^{v{FE6Bl<(@J+7Sz4WyF z(rk5!N+aJ#$-eaoJ|AYCb~UAGp6Vuw`Uv`Dp{cd2nVhbkPoWq1x!WGgKu`5)-~pio zv)J1tWqPWwSENyjC(BbkPZ81;!HY+vAm9;c22*AR&W1V}HKm~64tjil3jL5Ayqs0- zslE=8`2im^zD8l*U|S~zMfIXGP^qWbuS40+_T)7CZD$BN0uK1|!EUy_2p37FHw;(n zHb`jX;f>G_Nx_*SxrWD_DLK#||Nl=?8-}YD1cmQJJwpSOtno#luzhfxDgm1@a|q-y zw_pkz5%hD=PXcXm)vCQT9siZ)e30$67p3EB)P~_|H9cI7bPy1o6Z)Z5a3*Cr6Vn2n zD5x|o%8M8>qod^iaQR<=_Ti1o44Og<3&~K;ZJBUry0Twuh|ni4ipV1EA^#0|#)-3N z_6|?Y6L<^{y{1C8*G>gC9auKTm+d)m=UjR+Tej&4c-(wg`MGxjKHlg^2n>% zQOtB0#hgLDKv~=wq!TZRsdrsbsPSbgjN`N4)U|=1a^VrlsGd@JjvQY3tOrINR}Y>`|<(N(i-zJujy4y%OF&bY6a1b$#&G#&itZvEO5!7het?>ajdi&cS;FyKq!3 zcx5pUIpQHa>>WCkzx)h|>>2oL=-`FHZpAOKo}>L%ZmHa|1O5y`hgvPZM>q;cOlDYgj;tff+5e@d7Bu3W%+5 z?ZX(fPiYPhyDhmBHQOwjbz1y2132XmHQO)#I|FNU%)1P{ErF!#U*_S~yC6KA)+zL3 z8&5U&FrrYfC0=`681{Ec^7vnd3KP)S0#5%LdK@Ul1OB7*nd+PDEKJ64PUZR|!-tz^ z)SWQFQ;>FYeKV+Q^DJ3y^{e!1B@`N#o_#MkAJjQS)d3k$HYfJ-v zpa0?3P~ff5&LdrL%JaaM)>so%QDICu(N^uY*t=wY3v`+N{gxw10dLhSt?`CawDsrK z&;EYvkt8U~hx!ohkG5_1GHSpd8e#=|IAgP*8DB2I=M0uU6YOt2)nD+vqHCS(;3lF2^Ih7kaASBO9o4yUQr4;P26>P{K)&w+MM~67~URqJeVK@dM`&o(;%>vOi!l zAQyvZqZxb*i9!{?!~-MWHL-gf2VePi@0 zC{e&-ut7KGqt$>QLx}xtV-FRSkpw}$Lr1I(CI`AA!Rxnifu7~i3HvH`4`0pwD7Nmg(wj>2o z!_PheO0@HVEv*>fodMC)4s1yd*KHO4P2~4~V}DuoLlcJCpz1)XVscTsBgZ9h0b|cwC#iJn)-0< zE6jBL+sw2m5=CZw^cyS-ukVIcS@bG|(eZ*~!|S^ORHHFAo!4X~<#gW95N{=|T`=$hUPXp62{!$8~c8a4xTjsCD|0V_NgCcrQ=Yxy9|v?#o1d6887 zsPLM6yr@L+cexe6<~k6f`HHWAiGt^c*R<&XqE8W7k!$`%E;rjx8E~_G9lt))s}5Jf z8n@(zpFN)`Zwl8A0uKjJj3cSMJpw~8St3__gyDq0SW7oCEMrDNGUf`p^I?u&;G8+L zVD(Jke&88^bTP!U;A!F78(3V(#ZV#dG222W^m(=;^5#%AN`|WN8aC5L?zjrCX^*JJ zQljf4NZr_g-7Qk}flJtbzXL72{s{h~|295?$Z#Dk-8ccGU%0Lf(Gf(~v*R?{WLPiM zTVsO!y8V=cIlN{*{yyf;P{*&3_}g_nw?3)X)_5sU*dr&jx7AybaBWcdZXsXM z2aV?l-)|6VJPjz;o?pRyOVJ}18bHFXGAI-9N}$t@YHZ+5h{IK zxNkhl2GxSn>p zQ^=#|erY~Pn~Fd+tby}$vcZ9V=zK`FC(sWwi5HKLF0%35;?wuh^cuLTy!G7N1Ckz{ zMm&pcM^t`hAZ2*|Ps^hGd7+%nt;R9zRMBf%WXs=BJ1gqW!Z@)#b(+>+;-+A7Pj;%7 zAj-aj|C`Uv!;g$M(aKUpG*t3GKjF%3{FfC*8uq^-d*r!ob>jeF#`;~ANBPR2pNKs9 zNyF9nVAQN!MakoQY&GG^A!y#{{fqmCYd%5Uvag``rEg~MgZ1c}A29hLWbFQ$dhI6CEglJ8 z2QKU^yT~30zk|S$C6uxvQ-C8aC5w8mY4uo+=%kpOF0P#JA}7$%O@9``jU^~51*aK; ztpve5PfFDbS-6C9zw<8AW2DgjD`LNwV(krnK$5r3UOj0dR84bAWl{59=wH+AH$z_( zY(N9H+I=4!x`7ruu(egNzr4miur)b&(FT?h%aR~kAeJh@bFjq$4j8sz!`240Z0o>F zNx^no8r$MV%Mtd=bh2R7w|VFHh*TTC9>(EqX~2UmTXA@1! zUGby+`0HCX!aw;c@8Ch+9BX_@Veav` z8E>%9pH)W9^7D?Drg-f53Hf~M=l-Ityljg z-ohYY-V$%of|)?_mv~3dAdMFlCn#3{|D|4p z20qr$JXX*=si7GZI)n8zLnKJ!1EIv4A<6ik985Mt*PlRCpg?N|g;5Wxq4HwNB8%Z(9TRR*?-CPSmi zrDHFfpg~@aMv!vU*h$vtBL9fXM_VN$ic75FBTC0Jwik5n1w-`WsEN_D7bTwrt&cFe z0$|Rg1e}1T1n5zVpmz?8JO1(!6N-ki*fDJEm{C)jL$IQb$?q*)uc(*QRWD^k4!YEg z(IpHDG$ zn&CwJ?F4>rB11y>ADVw9=vcy9CzAiY=GW>aNIN=sMDueEa5A5yixn4jIhjve&Ci9z z$$Z*t{?wCU29M`w@>lgzf=@k3`59V1+rY_uI%$6I$uNVbi{>vlN&aljKm8>6FVg&# zC&}OUXY${z?YZ|PI-Trf;WQ8vONjA9QF8@h3=us{|6ginbGtS^YnJgaB_F*|s zhJT_V-^)ZN_)InUPsT)78~i8J$7UP+C({Qi4E}->=+5ZB8umFE{w0R|N(wl^XQ{z| zG8J5D@}ES7tu*=hVb*v3O#XW{f8|NaU;8up|ET$? z8$Vw8f9!wrbbD~;++%a9m?@f{efMPg?_-92PQv`wlSX+@hW|ddJwutw6Dg1QwJ!h3 z2nYW&3HCfunKvcypQuUqyD(nq6REX1LH>!xlx+$8CmK^;PT=P*^y7VAPvG|+j~Q`q zC-4`XK%tKk_$yD4!Dk8l^*P5^=${Gv)(QCcCGwx3K^#ovKS6^?PR#!VW8BjT?T4j3 zo=RV}z<)fIIwa}?`N!i=JU35$j@PC;wjlp_P43E`loj}OL$u5N+f8^;kJ=;4kJ z@#JILH0K!n$FkAcEtHp89gDx;G2|c1rd^I9|5$l+`LyyB>&;tL6K}oCDYwaQg+;y1%Mt1#7olU|A0#JXnndYl8^ikFXxAB>cYyKjR&QH|g{Y?>*mI zcbX0_LjiXqd`Qb<_%(#TF~S=Ve$xm)f^d5y{W^qO8R6RyZZ!C-5&p~w&qr843s}qi zu0~j|B_%v5A$}CXPZ;S3BfQiI_eXe<5%wWG%Lt!^@Crk}QxVp4ljQePH)~zkh(FLx z{E2k<7wG>{bB6Fe2s+!*ZJ@jDi2DB$;RlWM3lMhehw-x!)^nA}nS!vMizHlvaFvn1 z55jtGmiY4!)^odrzxTz<{~F=5jr4y<*tFNX2zN8$Uq<*MBfJseu}1h2gs(Ef_aYoL z!mALTXM}G-_!1+04Z_2W@GlTH+m9dN2BUtuBK*D)eyD4F`R+qlKkJb4uSQt^R*`TB zVf|ZH!q+3Le+x+X8idXIo{Vt4k>3b}^=|>;zZ7Bp>_EcZ5jNZB{`2DXiy&<3vj^d7 zL;f2GhmG(Sgw68&8DUf3wFp0C@ZW*3so$*#k2T_#B0Ss(UxDydMz|fqdhH%E=Kr%uNt?)fajxsTm?7?u!|1=y0eOZ`W!{? zoMo-sq1#8REXz6rVYfdq{P(k!oWBAh`wp*lQa){;0c8Jsuv0UC0JQ7iH>+n_&ihAQ7uK<48=!&*n*O0Hg=Kxa88W+?ge z8SUDKa_{e;$Dt1K^tlMrSClJfGQt~-^7csxXC{QdhtFt}e@{YqdqNn#r`OTHm7Cw4 z3E`y);i(DXf`l;qF~rHkCbqaRd{)PWKTQa~mJo)!mN@sj! zLt8*B4LW?=-dgvuS_?_L*^0#*`PKuHZz&-8t^(h?2HzzJpKjDgF2cD+_-usd8{xz4 z;_LHEgw6D~wo|^E7lYo;NHk^g8-F9iK-gMN{wp9lIs4f>0z&Gr8v+SwBb z({C8-m*M63o`-Ul0dn0m9+3TOB>3EQ(1j`R-3vO~^#DNjpNkXXJA&>7y)7Wy`Ijm2 z=|6{zKA?XLdb(b(QSN*AGT-_H{!O4$uit72U*B>1jM4OqKzI8Q<^2UOM$j!gJkl2H zBi%ng#$t7arr!$sg9d%7rcVHUl|k>R=|0e}H|RgLQSuM8vDVEs=yjl9fPCkJzDxHX z<~s>txBoIc6k)eNGECp#ZhvE#KBr-x4kKHu_2Q7$&E;l%F6gMf4(BA$e?nXm#x0yo zh~uq_5TKmxJ!EgP1;;kbWM* zZuuEM1L@e$#sT(VIRLu@{x>OJKl)mxeqVronYJ_2e+D|HnGSD(?$$f$aBQ^he1q== zgxz{zJiU<74v&Iv+TkIc&wZfN=@>q1$$yv5rxtWGpIZ?AR<~dB!H0KTKJ#@x<)EAS zl<9mXf$pvYnSPwkrx0{ApGy$lZsgMoVY56J=zKbZZsv2A&Zi^j?)sAXoPx01&KPb3 zJ`}gZkMQOGMpa%@TKPK?4)qMAWKGWdC?(H~vVa->>!n(sQ$M;d(d68OqB-&LRw zHTWha@Qu@aBS62@;2V~}hc$)Rxi9GYnX$A(JYI||2l|TebpgG*ArH%{I6f>lgs%hW zT@1cEJ@Tv~d6tHG8YXM_&Z#PXorVDo{TgOy_&Efl>n1;?VYP-6H1uisU7F&HGJn36~9iyfQEhzGc^1hjac&6uv)_j8u~Q+uASoBuHl^;&eAYX!(og2#=+`hqL(XTCzlPNsVxAJZPs8spkC1P>hIeW>OT#=3lQn#&jm}@gfQEGN zK{@nwMEE)83CUkW&KnHVXFH)!!|yO(FuYyEJ2jl8VV;J`8uDBh`PXR}(9o}8hK8SG z`~aH#l!nzB^7J|BJ`KM^J7jpfhIeW>OGB)|B_8Su8~|7bT~5W9BhMiz0{o@@1MsYK(v zqoPdXd`|Q-(#d@WU9b*9n`2ENF^Hyilr2HxGkM;Z8L zBQMP5v3wshcsSR)`e5FR;j0Zg{pYzn`hFE~!iEOV69&#r%Pv3XEEg|<&0Tzv!GrZg zjIMmvS1g?)l?9|HGAjnR0;- zfi2yPz}=2zH&x7qXK!#U3R0hVKmYT}mWXqG*Bk$w84G4DnKNTvd6_bg)_-yNj6k_I zY+1!z_)(@2X3j@h60TMNd4bTCO1eA<%nIs)tJO_vmn8zC^f;)TFB#Pas}BHvoes z5cMq&ec&dVI=Qv8AUI#M(v%eG-V1^3^vwaTFmj+!IVWI|`x;u5!a7=r%*8^YA4T%^ zgrnILv{D5XFY(gYm8$eekCK!xRn;i!tLWHu3x*kVq3LN}F)a!#mg@*u&4y@oUjj-^ znrbG^mLM%*zqw*0anZc;8^zWvW?0eqtk)J`$%Q zS|L2@2j=M3t;;h5n~&l5J&x18&SG(}0;2)?wNcO+ixySfSjHF&nU_PHRL!ydzxVfg z`{v|&z24qA_~*^d$?2Du2iPyaZ$A>e)7w)#Z$-Fhp$vuc?~TJ>{geU>!<>v~gcTg{ zyecg2A`ndcWcR{dN8lr5dRGSdPR9THB+S`Nk15%rQ`*58uMw!kfBC>?I!rQm!8Nh) zgrdn4bO35jqy4VO`%F)V?wMe|8~HQc0|l7p-NYJ_PM%!_>b+n| zp=EuHFqW?|f9K@k7gKSI?+!se;U_{4Ie+Dh$g4WkRE9@7Ucj+{7Xo5gzq}s~WO-_y zZO=nTe?8^w>dd2W$XD=c!Iul}2)Sa2>sVfD_G|EA!b(bzn7{}$XM_o*Euo3|HE^(H4-z8w10Ymnjmr(|Bs|P!Xip6)F8ZJcT+l zT>0Sn(yaHR-h-EfE06dj*b%XwnnxwUX2r3WEu)$b%Bl{1M!bd>4K|*SE?sr#8zI~* z{AYC&5xa!{x5EFHL{BAuJK?XFNd8)?I@e;PZIe6 z2-JI@%4Ic!y~34`sNh;*{}1vASEebwD}}TfEht=ht>U^vNUsamtBSNpNRJ6uzyFWA zFOQG1NZx;Q2;m45G`dky2N@6qBmu-As0m3R$Q20)DjGr(AQF<0Oh6Q2!X&^rjNq}Z z?s|a66^~WiRm4>^SzO{R9;>46g7;*j>y5+%e$P|g?@Z4yLH+*sn@`?US9NuDb@lna zeJRphgS1_lrNAJqR-`P0G*yw(4N{sSIZ0}u`1+2%;>~Ij@a*eHTeWE5>Nr(MTMg0+inPff`4owF`Ps52D3Zq@VcL+{v=Nuai#e}P6m#}KH>I+PO);`y zu7p`A$(y1`1qSIcq#j&Z2B}Vw(hbs?LTcG3k>Om0{wlH)Ly^U)Fewsdjzso?Dgu^} zz7*_wsa zs481;A^k;2=PT0tQnLOiq|^IC)%uQCg~T`YfM*)bfTmnXZXq47NDm9CSV$k7DqNd| zG*w9VDbjU98Y85Iic~Koepm^3`jZs!Z0akZMS%|p>N|>s&l0}*igbaHKDQWjFH#Jy zY$3fPq?;5eLrAScnn_Z?bD{$8G0g$bL2V7;yF>UsQF*yU%I10@%}|yt2C44qfTs`9 zfai7=b>xZy`&7ZtCeK9yPmw}1h@Kzt^i^nIqGJM{PgTD3CW^DT{;IPHs@0u@60PJf zQL!FPDozZzTT$n;{BiJrc}Z(Jo{R9z#nT<_{{p~DJau?3>Vk9S@hx{3o|g!LJJC7p zi+WB2eg>Y4y5c@4z$JJ%=Nm-Q?eTPG;JOrS5%B&Hzbwh$uIyX&Dvz>}d&VP&zdR0^q&B5^Ri>O}M=Fw3e_F%AcGG)@wh(-n&hX->xR z395E*$V5)IEp-_I&v?b9hBik_z$X%`L)x2CAd`FRYETncagX;%Ltxn;^wK57;cK2hq_>BE^d#w zPZ2j~FYQ+XHIO@m^5)opSyIq9i2D(7uM+nY;;s@mZ&Agoh`8Sp_cU?;N8IO$`(tqr z6ZZjepCWGd1NOLqU%2g8g}&leuL|rKz{8em1HUlCZmg#p&K395;?5KIL*kw+?mNU? zDDDm7R%4V^;#OmnDsi(DhyLQeTHMpbtzLo76SsN=8YXW23dF44a0~gvz2%=#xzJl4 zgL4uJ70_o_C7ptKvDCp5KaR zvv^JxPd1Q_#$oilT|Bpn=Q#0vSUiuW=Z)gYR<-Vgfam&?QDZT(6#wo>Lcr6YNSlSU z7i~zubBiK*g!DZmVvMRt)dp#yBF!~O7b{YML7J>cSqAA`MM^hF>5Akesev)tL+Gz1 z_GIx651})mCalfYOKfG~Dh~!9k2)z$f z$bCH|x3>y2SHkdZKHy1EqymHVoyyoOk{Z-If3|qvEg?Qt-svE@d)9Ykh*zB`ut#}0 zg>;Q@zo1AdBsGv^ck+$my+e6h5+YrM^wUC6Pbgn?_Q#6XgUT*yusurzY*M7%y=fUm zI-ru&Y>@t|NLvlkdy2HlAibtNEM2dZjdfhq$;VTl!Xzy)WHiy?jLEZfTvM`^$Oge40v5%nnaBt{mM%9 zLQ*5hs}*U9kkkmWN|B0%beBX>tVkCKX`_$|6)9UtoV~(O>$XZRIG18 z6{|pn=}lgYASV*Va9Nd^Sqj^!u;&RjvQ^?Za4wz&cq;L{1X>;73OrssBham^z`(|f z=Ndfg5#7Cb?u>f20)Gq-d-}T(<^eo^!(*Sv6NF9F__C!V$=eY}4Y#F23w=V?Q*;MB zA3=GX;ge;IN5lL#8vHjY{+kKH{ElrnHp|=5ZIz?(IY;9z$%o5TsAE>8;HXzeh0}Fbx-ql99wrmz;mslo<`P_9gS;*wN?=quNv#^C|PxZx8tH!v%MYDRuy?$ z-u8B!vaAG|unOf(f8HTC28JroadmkC&voK%xt>>HjRNz65c6LZS83fTC?CpwaosTi z&jZR`KqK8tH{M$ncvOMy3Ou2Jwq1+DmMgGAfmI5uR-jRVbqe?u5VHn6e^A&T6}U}- zO$ywlz@G``Z+sAT*@x#-JpaS<9iE@?)ZWmmQ}8Qz7#?fOtjqA2=SivZ7OOlwhMp6pF0wrEd}I)#%EJwqfd@6RJba>9e`R_2 ziQECtTPl#0hr2~;tnzRH?d$E3@{pz6QXYmYx0Hu|bO$_cOmF}!P?$%7>lKh&55-o|6<9sz9Cs7b&nc7V$}QXY08wP z$wYHR0X9l>&*OXb8&sOBqk+Dju;#KSs~U9~9W)2Y(KVk?cH+9O6tkd_X2 zs%y-hm;|kHJF(=UX1SW-SH87nHJHrr%vWv-wVyC}ht zfe!bv!$gQ%TwLphQkcDt9i8DHGkhp>Vk#T*jTyECllbNH%S*5TBX;B_!!Jt6iDfNQ zLT(J3sSDymv71KIUUs~uS14I_qGNhSgw#bNMjl1@bRH%$c`>tGWo(33EO|zjM(D2< zF}&^25rU&k7R&EQ;p}vX$#j&l?HTPEQ|e(sBlHRRMux2^TT+K55l*vo*rrh7V{!bl z3_ER|%dpGf>@(9xqxlL~UPBdKOv5bN5Ya3noGKpeZ5FMVUP}KF5z$5lG8IxjvBDU7 z=!z35)AWxOo^4Ip6(v~evcRtQkpdzZVo5M#uyab~U!tkUg_QRyPWMCP#Kj;;X8YLR}nTCw~hWk&QKb{bW% z2(L(qW+96VWcoygi6~W(fg-#jLz(hor#u!%q>QM#92s|%XLLvz!bQ~d2;)Rlbu(v8 zt?URp^S9$P{Ub~gOF#req=dt(V5ES<{Z;tk!0BpMQBOs>y2*{Z)x)5j#@l96=Baq-U@`za~eFWr0!We@}-z=3r z0{W@+5eTQGZ&snC4@yXCRr;o@6cI>7lA`I7qTvvO1*ig$9keSk=%fLv2#^bLrY!+5 z@Dn2#XU&{CY1UMywXC?Nk_&6+qw}kteH7h z&U7m$&&ru;O)Ri-bFAspa40X%`^9NqOPXQ!mvQ?4shC($}02yK%^LrI3lX8tL72e_%LD84L4$4TD7RG z)G}#Mue>ITW}l~BUQtoDpt!Q>N(?(@ixXUUSSf%i4=Wx#tGcr|ctuw;1hmjnN1a2THl{9^;Z1o%4!J_Gol4SWjl>kWK7 z@RbIB9`MTzJQMhI1J3|%??a_Nrvo2h`1b?;wV`hx;BOiDvA`cQ@Ls_0Ht?>%?fvnT zZvnUMNxUP?YRWhGKLse7k`!0RE_f&jtQh1IKwJO%ECPbl?vd z_$1)>8aU1?Y1(Aq=K#OWz()c9qk#_t{s#je2>eC^?+g4o13v-ywFZ6+@HY*-C-Bz| z{3zhN4g4U^GkM9tzX$%jf#V#NracDU2K*@l|2Oa!1Ai6xGY0-o;H?IJKkz>r_#MC- z4g6-{egnT8_&Nih3H&YtKM(k71IIZnO{)yNEAXo|{xLU41Ha0^zr}ei%MJW3;CA_b z6#Tn^*J^*_&j4R!;O7FLrt!ue*c%Ew-@wy>^PDsMHq(C)@KVG7RNyZg{>K3Smx1q3 zh5ZbCFL3ThwdFkv{BZ++82Cs7zZ3Wl-TpEDwZI1${%+ty4g6Bz|26RQfgdpNvw(LQ z6pkNv-8Q8fcyHi5gU!~jJMcjUo&fw*1IJ8C)42wY36`eG2L2}Siw%4y@P!7x75GvE zzYTbUfnNiBh+*$#z$Y5%DFr^pz%K_jlkY8u%^1&ob~e!1D~e7I>k7&jns=;8TEC8Ti@2 zuQu@0fcH1jp9*}0fp?@>OF1-zSqyMX`Bz&H28c)>`|wZIdM^xT4Tr~YU7;|{i_?+knq z@O=h88~CRNo(=pp1IKNNO?wRdcfhj^eQ=&d(+h_G=Qx+@Y{UOQz#lUFp8&quz_$S3 zX5clz?fz&c+V4fcxepP)&BU>>rfHGp$HG6ZcW$~5YhCD1{8ivf4g7iFdky>v;E!QJ zw$1+l@XrkVHsAxWbjS9;7I>+FuLAzDfnzOo6BkL@{7Zn}W#CwI-PG5J{}SLA8F)VM zcC1Oa!=DK}!AKw0Za2L@AncFz+)Ykr7JUTxs_0?#yX zoE_G5uYqp>{*i%WtyI%OBmb~AziGUIW4(Tp%fPXQzbW6yU##tK>Tlp!@89&0VGry9 zX!^Z@^SrV+S6Kf{;LjQU8Nf3Q|C50)Ht-(6?=Rub z=K)VL$~(?iYnp7}#{<9Cz`Fq7ZQ$SF+_ZxRz7P1hMtWWX-qVN=_X{^=81>;E;EN6X zM&L{E9RNSEcRBDM40~P(e1=h;&jP;Qz+J$18F+8t@rFIW#JO%Ojr{mG@M{czY<_LJ z%FzF2;2#_Ka^NQ!n^ zzPhG|4FA`Fe`Vkmz)v>tvA~}(!Vdx-XZW80{2s#}o8+2aGwhFD5>4EjZ|4VgP&8d@ z;1}ZPp8pzn4)6hneba$IVEAK27WdXCVtJ{+o*E`;n5ZFu_&)*29U1IXpVw}FAF6|! z=jEi}8^L<*cH;ZPW!k+D?}FpBdn?>qv^yQTfK9^k3`*!HZV%iL7dm%Gorxh+3Ot?! z-&cz&s_>Cj&ibh7gl>`*XK@AQdWzi3tIH0Ta+sePgy)s$Af1pq)5pT05X;KlB@54R z%SXOQba-Z_)g8Zn8N<}U5>EBY7&&~@=#e8cM|O7Z#E5jwug;yQsVz2-ov>n^JHf4V zmQ&fa8O~V0TGZ8C@DX+e10R$R`Td%6CoaDwy~*1lWmr1QIfu+g=4JGLTOP z!eNSH0W;7l1fpuoRNxz_5OffYk;u6qH#XPxLn>Unx)_R6*@+;x=7Cpn2S)=(V#iX_ zP`JT{{Nnwu!ISAVAq7i32L^nSl*z81@L;xa=POf#hE5a%Y6U;Xwbs6?E#Dcf<5{w- z?WB6286tORb4|H<2k|Arr^t?Ywh{6k?;?M$Yb5RE8_7sQ!Ye3zBe)uyS5|{36X{9! z9*C=3#v}(XW68)6Vfv zv3x%SFJPi~wyz9}N5XiMaT0V%SwitAg#AdP6{znD1tavWh3t%X+cP6W9I5_fO9~}F81?Bv;c2|j%1%F zEx;v=qqTirU~MJZFgqvK=#>N^xdS=rP{brk$!*Fe%XM?@rZD@Yd^+DySzwfw||IsP4# zn+*-pyyx|)o8n)?#_kC;V9bnE`$p_Bkb;VI{JY*461+bisyo@g<^k}TENNku#9$8~ z?ME}To$VbRNHJPh$2zu6i`x4Ha?zON;v#84$hm+u{0(7}NYTvfA_n*rVDNGL^PbnG z&f%XRjp@C>x5U+*fZCAiw`@Ic0F})%Tiw8%GqO~3t(vK2@C!^xLfK41GlgysCDd-F z-UC1DOm_w4EUDml1n`Yv1imh2OVvJ^RS>(OC_{Ho(%?dX-2k^xkj{dG2bcxz$NAk* zwF}ev87QsHEi0Tg<{k>O{VNJS1#X7gM#z#j2l02_{(%ea-(v8v9!mSS!e4*H_HTzY zeitHS`=Y?wlW+p1oi6S&p<(RC?`0!h1HhkgsBH^Kk%7L^fu!-PWaBptg`Oo79@Y+N z`P#lmV%XdEVQ&j%)0srC)O%+7bMSA^56eaOBrP7ZhW)>(B*(W@(r)ogCF>z4L)xun zj1je5U%+nKd)9^C&s;JRVAolh=nc*o&gpndH^9!F%_ohv^-j(=}Ki->5t>< zmKenWhQSpAXeQtK?$Dt&Hjx2u07Ez1c-*%{=T3AAsjSGHA!2|~T{1&E!!vh4>=Ql@B)>@sR5<;`%hN4bSC)GMQKo8>#AJfYa4T^Q@1;mY*QK;Mj3Fu=Z=Ln0Zp zNi7ZLQy_Df{q)H2NIe~N7((^ae`6CV{q)P&XJuy@cbU@qc6sOPtzF)~`iAA5{j?e4 zNNIgqLNJYw!WHVLJ566iec6hr*_>R7prQKmGZ5C7|Md>*T%&ci>x=2PRQqK!9cT;g zH`3FW+8w#R9Q+z;qrU7Xq(v_}QhnJCF0|j5gC{h8UGC4T@K33h4hwdTsy)(p--2Kq zxn63d>1nOEU3LCq=v@x}(8$#c^o$Pl3nSM-OpG46ijgsLJyuk=>&PF-AtP5?JdzZu zBX1xY))Cu}b>tNtwOvO{eINhIt|MlMBjwCm3BfvYHC!w|b%aJ8Im6x~8&y9>qJCt; z*fGbi=@equ3%tSFB`gi}P`&sQnWSDkh&^t0z4)(ApIt9FgtF_!o-gfsVTL$T`tFes zOxJC2h3ZB0`%~2TRn&z|$`JQ|-IFFiiG+MiwFd)|M3weMd?s$*v&XnS>F?a#wEXI+6`shGX$7(r1n&EpXs#dd*1b5=(G8rYM$u|kqvA%fO#z+HA+CA`ND`snB z)~+Ft%u$l<$J#YeM{3tDQ`1WzOO28)V2q(rlD7A67$5a!cxFPx_-GN|Vr6{v)#uO} zJ{i>K$nAYEu&_LKA*3lL9jQF-`%KCs$Mm|rkFTqYRTdrtWBaOrcd?NQUT(sg zW0yWA-)>RXf*&pXL69N?&DVhdthTlI$HCFUU+!W?L11)~f2wG2H~CF$_N2+Tl{5?G zQbfom-}YmnO0yr!(LmVk{Zj=yg@~?r54b^JGP?O(Dd;hD(Lz$Gs z+|=VCyQDcm54HPuv0apQ|0(p!c3Jc5MB3&1AtRUG|1Zlo$3td_BPH@73BknO4Ogh$ zH^)Pf?~g0N7F`Qs**I|O?f!l1O^ibg& z__f5}14GTU;5st4wrv9?u=d|cVe9bp99bRLm`c>E6o0Z2n<3Vc}m zaa;tRL{ngm61ev;EsoUFp2I+gf}& z0)jYBu{t;32SHi|9{^8>sGdp`Y@-yvh$5Q7f$y_VvQ$3;cl!y!zX0^dLCc5Esj#eW zb=`uuf`CyvzNKJ*g-l)#oCTzTFjV^IhsHaqd<>EP^HT2$R~F7dnhP8ISGaPSv>9~I zapmK4O+!B1zPEiHX8H0SNOY{81P{lyCGjnvBssQSkkIXGZ}U%sb~{#&06j3ddt%)l zsFM}gDrEx7eE+GGsRoAgck$!nk)z=fy0cOOfgR}k(e=9UBuQ5%Zz4VG6JUX-5YXSt z-_4hu!Z3Whk|7GdE-|rp&>Ql6vr_|&O_Y<157B>l2J;wxH@>ywd$RY(c*p7<2%S9J71h>TgC%kT{lM-33MX)oH&5 zD9tj=6FKaL{lQOA9MJ`-@8yv)m+NrZh`xPSq~F!rFPDDz;nRgotXvCf`;ADv%Wkf` zri|6$@#I)3FPA`_Oh}+wBQ;Fda0nsFQvu4;9%zj6G=t^oCAfp%e~iM2{Q80rEs&$( zHISv)$M}r@9Jts5xloz$4Thf=QUEilB;XK0ew#@LOk`2N1^gKdA?GRwynn!3Ec~2! zr&cZ(%1ob(cQZameMF=KeP8&#L-|N&;5i8FJRxv}ue} z{v%NVeE)N-e}ZYmy8_C8e9H$Y0233sy&5R^Y4od(MxN0W_cnZ0nWma!rJ;BO<_-S$ zBN*YIjh{OjJ_cVP_au>nhH@m{$)z~bRL_7b0dL<>Nj{G~0vtMtxj`F3o=u7-rUxyP zwDpQ6+4O6SHwXO4tAW#Czs9{7VKURonLB(HsF1o*K*2ltooi=%LCC67gqn1L$$_cZ z!E1|)-+kK89-*-I+6DRJ50Ph|BTx22aY^9opujB&YgKMZ&=YW@aSZ+q5PcWlfP?pt zhQ@8IOdCbU`k;;#*(KG-jI|2k7;F1Ah$&R)d3HLpdkyq!yB5Jr&wpr7-UHB{X8N>h zpS4UD^4N^13nO~h_dnmyZGAW+XvFrW4wj9G+Ae{o?+diIeIgU_cg@roL-u_ii0q%+ z{(;=usQY`wkPap6=8N;6Xo=Cnp-}})V=L!FE-pr3U(0qxdkCjBHQd0|>Mug55ost1 zsjak})ry$$l^-Km^iY$a;Yb`qisr+6D844k_p|rogWjLx-Df+tO;zn*WkR=?ysbZt z{-Wk|$F^S5BwiTT?fKE~xK9qa&rBTjMcqH!2jWw>3y%{|A3SMzQoXy_{AT*n@qesu zpq>!4=PdLD;R;s@PTm7YYAbJM#kcdFyeNVb_9a$f-t-IercazYewuUqwCPUl$HAQH zx!8&`9k3tZ=_g^mA10LX+x#LXUH11;^niwCeIos5f{wYTVj12#J6#g96j=-EpZ2}w!{%SzVo1>}AVeh}1qfA>uf#qYJN&Kq(tlYLJ{5tOo&izx?os$ZQOwW~ zCA+cDWiD)t-)73Y9C()2hxn!7V|va7WO`18zZw5gppOOp3h+Y3aEW&IG&?kans8q}+vol#64lLg7Ed$JkMt-Ybg!HTD76@sKZgjEd(S zK*qBRa1h|?D84$-8PAj`IuEoO1$rMq+F?Ir(hk@^Aa-~Gkm2sadU`wFOF&y2g|7mQ z>8$~z9%FR4V+_9M@o}>U=x4w`PV={eb{6pa0cn@bfQ)ZB*1y~F&A~_xpA94Mnc$Wq9+2st56E<12FUy$1ITd47~xi6F!8-3 zEQdJPx!ZDyzlw+X+6qX$o&t0MzYlO2;H`kC0p0*eI~4(r0GtWP_=Xzt?(YSfrvHfb z>2^G%e}#wgKLVtj7Xe2Dt_7qWR{>IP9U$dSF~a|Z5pj;DpBP0ylpKzSeBa@%m+^cG z$ar1{JR5LR6yFV?GoD3J^b*hqgFXb1cJ2a5J0FB>+8OstOSr#b{kxq$tgW~H5QX!D z6ZKdPNIfP1($41qGTvhiem_33^w9JVdxYhZz6THG;GSra^9Ug8WeFhdb_pQmUI0kB zgN*Pm;+6CiP5-`oST5=BM&VdLFY)XIq`tf-n)R|Qif=aPj3+&c-XC<<%by^dc6$?$ zc6%9+cDo;t;k@0#dW->WK@?sD8q+%+kb0b`!+nGG%eKAmOTxGa&l&K4ACUYn0J2^- z0@5y50Wv<^_Z$j07Nf#3QTPb(QO+Ph$~gv*_4326k>PlcGvz%PMgKGCr-NPr$aIef zWV+7id>;Wae2a!x0g7FY3hVJCURk*Q*S0V56Qgjf|CRW<0@6-A z*qZIce*uR9z6W?3;Ol_Qw>tot?%xA4zQu`Q`RxgoRif!*qUaf*Q$8o}DW@kO+liMD zhWYwWK+1grupi(JSZ8bNJr<)#pQaZ_(Q%@91m76&F`l7-jOTbjwiBPkNAm4~%zmKb zD^EoDdqE!zdIg~5JD}t{AoHE)#xq~raWAp0-zLkl{)0%VKPR7(x0Pk+<+t$@rg zj>74GH6Y`k86}6`Nl14_(Yt`oa`FY@qTK%i_6K|nkmcfTK$erM02#gz>xymt&{VJv zMc~L=vD2x5wA1s*k6wslBk;FvH_F5(+Rd@pA?@ZkZF&MeSb)C({pVWk-iWcn<=TyX zeHM=fClB^aS;IBG8U5qYc3AXnJUpE|bJ0#RPw3u+K7lWT5*Fhco?=h;m*6=XI?&Dg zO^da=85wno=1E7p!qfA~!!^qzw7VH}*jngY5$;Rv-h_7H589oMIt{1r09YBCz7M** zr0MC9_Y>UY4QxRKu>I$tnto*4%H z8pB;-@T@fAnu|2pVOc(HH_Mpqe%6S0l_B#JgXc=a%?rEiuwNKqZ!y9?Y`9TYL;Tkp z`b;+5Jq`COMqK>#XUBEC;Xd2Y0mJMNPoCkv&)`{axOwuvEmJKh$59eR#!(LXwn8pf z$4L~plr!owPM(e@H$hg{&BM`020K@`t7}H(4%3pV>g7eD12u3%A_bLHloi($sWU8! zrWa=0SCNKpK2;Z0N+cx<%Sv#2Wli}~UKA>E30<-1J4bnwrMkcrXZ93Dr3H6x@}9+U zyynwz%eAH?s*6qw@}?B=w4kDS2&I5J3;? zVJ5@YElksj(PRcu3>Tqn*fW;oqOcaxj5#xAM`x^(5W_<&LoH+Zsz^-V7)iDRMtH># z9O-|!=+4p+rpFL!cpfg%sHR0Y#u4|NssbKiXQ?CEGiR#`S6x=N$gXd8x>d24dQIO7 zoJ1SV!a}aj4^tNq>)M8Dg7a~4wJxp+E~!STwnefUD*mF9x>|SD;vyV76ZVc27ei|_ zBkr1tG8BG5b=hy^rNa1f#j9rRIM_Uy`pFfjyh#@xs!8Hiz`Pq4n4HqfbQIOrEM=3# z7LWHAM|v;~AmdD$|I5CZ;UhA!Wd=XBFNQZen;Tg?>f2Vpz^6s#T<-qKQ)q zrcGyeEkE9B#rR93WOUK~1eAwQTh>Sn{xJTu8t_u{EYi)m3-Fjf^76rWy3=1e#MX9d=~b}KFdv1o(q4LHT9H@ZAj_(s>;pomd>x`Ofe^zUz^5?a7MIH3iB z7Vr_ATEG=bKoAsLKnqso_!~EYq6K^jCj<~^0pG%@1ym~m2SBj}cqrgeDvUXTzMPb) zccC3c>Kf2yfY7bYHH@MQl1f@m-Xr(gY^gp`MV0}=rW+~R(Fl)ZB z(lT~ZWvzOHt3a`G%3MpG4X3UuV7G!7Q|2x;`$rZlm`_S;-1nH9tM(adZqtP`?jWkj zCh(bF$I@$O+&A!|zNXg?viLl1ulMRi%Y8f;nxh!@fFZ6mW50I?OB*&uxC&6<8l=FP zf*z(I&cwlzs9?-8&eahFe=joHxduO-LcBY+5V%J`&OSIyIpvhIi)-U4g*jzQnI=;F zjkl7P>&gdU*&7Mok*0*xlqQ^=6B%p{Y#BY2COsJjGF+4aCAI>XB0l00Z8c#mB4~MA z#Iy9<6?f3PV-u*B`%Hvq)|%m)RQP;b1-w#+!mop0+^&p6-W@Eb7K&+u6jL*NsS3{} z1`|gohJ5Wwj8&}fi_tnLJBLO z(uVcUlybh3!ll5HCXNDZDQASWNuvPoj*SG8L#&jhoOmTC%a$XpgD$S0U~fv?F7FQJ zs^uO7^9>28x@t;j1{Xp*Z3#WWY-`da654wrMNSH#2)jt97Nb8QP6zVJ_4R_6_4~CW5_fJk&e{ z4{|#Sf+KMoA&y+_AW2hj3MOo+13jCy=gaWCCc)+G=~%4@@KR6e z2dMP?Jpw|`Zpxv$h-ft<(#-&6aE(T^45|FKj0=>EeTIy4MFyJ#%Y8Ovu*OHrkjih% zNJaqFe%NaKhz%wP$(13|A*IgSAz$Zq6=jXB)Bq`H2FY#%m;zSzXc?=nkXmBP=&EE$&C)Wy z#o}zcwonGEMRZ!EhS)N8A^_4NwMxs_Dl$}?Mj33pqGd=sX3JQmWTdcWY8e$GL$zm= zAuDyF(ju*xEn|$5;WT6n6dBAVWm7gd(RxVRW6Ss+n^KS#4+7YFd<0Uc{zDH|@@N@S z-)$LxQ!?0}+cGwRgrJlC>!o)4;$)db+!!^cu1oeEsDFkdZ&`s7tO56YS&LEsSsze? z(8jvh|D;QX8Mn&71EX`vv?tY&}@rE?(Qmktm{tjy&3!+ zM6+$V81)J3DRtQt|BVt~<7@6AzEoH6GzjQKg^(DDTiH#rHd2L;WiN`a z-O(T~1}fIUO8+<=XISCKWH$@4dWbI*8Zzk^mYmGA+zPMQs(^X`N#PGpnw`H+Z3O!? z!ymfRRFXXqe~##hV!>f4uA8QWP!jh6i?$Tj-Z&bchllq`i8H~`_>Xu5dQz0}{oAqa zl$H-u9NT8a$%?d9@!j6>wQKp^eyC^2__iJR51m;;xpHYc|FsX(lzLM5&-Zo4eqWpK z-@X^xUPct!+fQ%)^MwVsJs9@Cf&TpGpMhLQ?(4|gc*~}iaXWeVuWd1iEr*i4hY}p? zxtBtx3Tey)hGIbzJGPzO@+p?rO^?$lNTA%-HGJRV&v(;y{tp+1*tUKZtFs%Msg|SR zSw!x8OP9vO$^|pid!X-%6zEI06VG=3^Nr69OwHG7NwJ%u-a6{INv5;v5nG*cqK>2C z9jJ0-MbaNnN8FC7&-$jO1jeV@(Q~aVqen5?kF6$JS8&pbtR5&(*D;-YwPx3(t=r>y zf3IWPbM+k_dN(eIH)&4KbBXJ4=d`OC;%-yRvJgc=ivnSS_Z4q8@FCGSeFKw zv|wOrqW3^I$NFUOw#Km|+RlHzAGz+Z?GT($pN*eSIaxIC1n+kKYd>Fm9t?Z(TFmYI z*FF@UWPh9#{%h}dxUBo>$$z0zxn4!bb)~C^W2O+f*^?{fIOJKtcoJR70Kq?DM+;hF z)XIH82esI%=)AIL25*BY*u|VUdW2e)xLEej)IY-xK)MC39Lw8wDRe)yH^3NJ_0~gx zvVboxFg3}}S9VmoSe?wsRXc+QNsim-0TP57Z8Ec(y~CMIo-)5rbVs= z5vh;SH?|**0s|GS;N_u!v9pOYoMtxNi9n9V4yqq&!I(`CkfO3_t8&shTa=T1NHd*K zssme4kWFl?o&`y=Ni6j%GJxVF1GL;uGTF`!gP`?D2$S5;# z2EoiV@Y`h}JV$Onw7t#`5YI}7JANVj8N_aUGM6e zP)<{^bgkIvD8qdL!}(f5wKT^lAU|`9%bHD)WfYJgh|n@dE!ElG-n~`AAXuk4!lltP zo@w?!1Fu_QnmyOGLMP1wKRCH7;R--AU9+JN4gOadIW9A9JJF;cLCwZ-MMU={SW48-c9vrib3}+eP zKa`KZ@vB5j>l$V)f1POc8tutF1*Sc>fZx%`Me~t1E!EmB)Y{FB(ypu4?y*Si+EUOt z>2Al-D7!N{?|NAN+BgOk`!8W)&|5*f&hmhTp^ft*;L)|-Y%P6wg{s2V9QISA5+U~B z5qhZ@t;Pr)mWwcud;1XEVAYvtG$*K53Ry_yVq2I^gro5-d>w6@#*f9%x2~ba{2@T7 z#x^&;=4kjAzDR`fA*sIOUNAWtk2CUNhHST)t@B}y&W9OM`LGK6VpvKpiOdJY7lg!# zEG7JhQWD@N4ijJ5#R`fTSv-;chpsb$-p_*ikcrS{WO{0B>UzyXo8k)v@a!ggBg@Flb@ z#kQ1cSffgVZKiLrsfCHW3|gwvFfw*p4{x3y*Fn>My?vI!J`hjauu5>=sg}EHq-}=B z0eWDdaT$oP1yTOsWDx#zlH1OLq{FS1K&$d!+hlwS;V_2w+U01x>B!ca(Z)4&QuuOR zY|}fj)~@%JwT2+}U$9nm&*0ZVxv=v{6-Qfvd9oK@>cJ}3(tD8dAjKzrhGDIA5IeD! zYWdpkpd@}C?=)qf?Ncc`>X*v_rI_{PVIA~o+W1D-KIGEi8(qx+33}#L0V8EMvm8XG zY!RgRr0F$Mb|HwJq)f?dn;o+p91m5t^B-!>`Pf~5cu5Hj*T69l9C-a2;v2V+ATV7@ zfV{BcquOhG;TtZRJArnhlIjCdp}&_3-2-j+;Su+zYW#!EE+gGTkOVqCSqez z*vJ;(OBCk1POE2hCv$=hdOm_ef5{frQbsjjtR?oFoH<6^^B?928wv!s-{hVF5s8X5 zMpVgf@9%wzO}ynk+Pg9rJI`80#3B4Re55%3Aj7WGhBYxPE<6x{n?5E}-%z~N51nk_u)8nqv`5^BT`4ETWK<5BxGJB@B*)g;09A+2) zA-gQ~wJ54DGrDWZ_IL21!TV!h9QN1Qm}#ME4S5ozj?NG(k*lY)S?bYkSxXvKD9_A1tv0L?Z{_w5tglIooX~0|C|}0ECZe zd>2xhAhlp4`w_6fn3ScLB4PM2LM+- z%3{M32*)0T0oXf$eGcaV;_WW^bigFQFZ#=Zo8(6TQ-Pleh#`9N4wvG)8ZZ&~I6(S8 z-%t6!eX6400Z95seHA?ukn;NhLZ{>poQm%rz+-@q29)>#j|cweQxtw3AoZC9$oNtK zDfdO}yCDB#fb?GiNdHlQ^uHZ@G3f6Dq<;<|{gVLc->;9t-#<~|+!sv$AFxP}`d}Zh zr1v=}LwW!ZTP~8nOH=e&8a83S1?`dw$oLLnfj!grA|UA_G`s_Px@Ry#*+s~ zeSQZ>J^s~G(QgDKem)>XCVz}L;7q;-5ZhRi=K#WF$rAzbr7$^7<40-y4Jb+f7C`!M z1cWJ*uh#fv?LS)MJX@Ch-$5zzKLbeoVU2qL8Gfo0vfq}&af$7w&bE7%L0@gqxva_N*=Eqq{ZpF_o@Wi74#Rzo!8635pKG`m z7;X;C?RZ@Voimm;-6|>{UMfrW3-byKCr+Dc$*zl{iBo6fO~{*$_3&Ifuh-#|l{*k@ zUlmv=({g6y%_u6If%79KXc1NOF2~)!MYXs=Rxzr5G{Rn8=PpwIR#6e;7h_jX$-+fN zyzf_STH!8&kV*zpBztApyA@3+a~GB^sVl>cw<=7eZV{UWOfT*lFakuXZtr4<+TtV; zayNk9r(|lRHquB8+>c_9u+UJaafUC*Y^{C%CV0o7)rq&-ZqG ziuN)W1&k0)o;;}P^7}RW6P`sQ#qel$tRZOgs~Pe)+}pwM+!NUo@tZ$e2h!+98)!X% zJ`H`AH5MJ#lYnSetO7jdkGy=K%5VPh+{e@)gB1nwhJT0yMoeYM@lEb?@xj^UR|~7` zn;6L2im~qHfWfE8$wRuZE_^x&>Hx?sq#ocAkWV3{9H%2d%3KvNbdcdw#Pt!`OA&(S zU8UlHY@9+iKlV9hmq8slyzE5JQaXdk`L zruXUR972e?6G^y`gyYX)Gga4}g!v>S(X|9F%&VlWpMe{MXe6g-m(u6+dQ zZ*2B;;26!UL^8wBu7Kx>Z~(l&=KJfngU|PhuciKdI1bgb!Hvh;t*b7rKN3vgNrC!6 zI8=M8P zp+F6Y82#C{+(Gg!K(ZaOUk*O5!(N84d1ESbeP7k^TsWlV<8Tb%yH4}T%*o1ymhUTf zrWuEvJ4E^FlNO7W$iGO3JBYp)@)w5X{}>@ZL-X7SBYq>!JlUeMq+b)Ez~?IQv4m9r1^>wjFSk;6KnRgPhue{ zfaYy)LSZ8LM4rGwd7$g*p-5jMNBu_R8p_!# zEHi<7DbJDnPboDIXELB$70z#dgfbn}RlYw<{*5sNzY=^k#Nigf>qW2@rp5SP3EmfC zn-bD+MuebsA&$W!=u0IiFDU2qDSaTQIK-AHY@Z36djNG;311i?HY3FU2CAj^@sGf7 zxu+}E+ag%IgjnwdtGYS?7TUmukPC!#&ZF7lSqN6}O?Eh zwrq#Zt;Xk8#fOhX+_)4Zo?!L{p7-(alLE&FI3}!c^3cLEY)h`HJi9xwrNia_2y4dV z!lfB!4A(G2K`U3t8o*cKL+2HjT6L9+Dyx=NS{#BD)Ks~vN~$WH&a<8UYr6|Ar@VS$ zSq*(bOCME%gIb70l1IiQYYAG>p%Zh@c3S<@htIaUQ$mfb-E*oISJ&uVarQ5b zNpueEZwo4P7uUF*GY}apTcO#BR@J#BwRYr)*aE?MVOdT2{N>J?GIw1~rL&}}lnD_g z$i%?tb~LN_lQUmj^^(d#m_l9%Ks5(!(3(Xx1sH# zK6^kfFzBtoM;ka6@ir|maPG5axVfPBH|W!WpJd>eAZj|=!13#$?<)h98gej6! z0a0|5+5Mr|C65B+cacqi0HN<9Lo^OxU17K<8t#6EyTWkKGu-$NBys_)Lc`52n(^`H z!(+SEK7aiJ&jULu-9_{9Hv0?bZkVst639GhBkGl$qVOF7r-+D)QQ+hZx=ZU8SL37- zw$N(he~EM?a#}#yQfMJ>-AkoOlj8x@TRq>oaha#}TkpRdJ}P}A+erI8y0~INt@$Dy zYoGr>8p^5c)eL8>-z~^!z6TSsNb!MFe!u2DI!lK~`LXt)J~Q8b%X>7#UxXlNLn3~* z4kXge_vkB7W}SezgV}O|80$TnN#=vk`@i`YeviH^;ypTug*oz4{VrheO^v)v>~bPy8o89nY>gBUnWT{% zBIjyk6ky;fe*ab4Rz*c{9Qh=LjZr>7@%2r7xCh2e;Ro;u{+r%N;lGIN=D!#4PX@N? zs|Uuf!-p;|J=2V~ZPug}ek^Uw6j130;6I2q? z-voWRL4OhW8Ux=2KA_1@0pfKi`EiXu42Y?(kvw^8v4oP=QaKh zK#oawX#7z?_N9F5qr5GE?2GTx_@4mT2j8UeYXLcS)csv@J#aLC$t$$K8<2f+mBtqU zqFGFyr}2vc(WEBpIf&#bz|o&4=WG8gKu#f!(fA0!qI zF2)_?Y&lgb!qQ@SMTbJforeo~mf&@{qN2PwG9@8ug!Z*%Wjv`#8^fNPttB}(4OAKWtrM1QSRI6!I3S^8~ z5`G!SsaWoXRizlD@(W5u6^@isgV9=?Rrwq5SwHKnQ4!-zd>NSkOXEzw=U7fvCefb8 z{7ptDwGMuSXs6_{hkU>1f1)Z*F89t4@6ar!yJuKjDMuz#u_h}vPMAyZyCMAu2cIiU@iTiiPxt;vNt>aGw2hh}D5ZQfj@d;iXO+}Rt& z^g{5TVDaq%gEQ`>_G9-a#JP`lY|BIL4z26u!I`=4q&(j+_D5X(8@i1;7b`C1^2MGw z@;)Eu>n+n5C@Gi<2yT=)o0Yu- zJsX+$xE=_UI;d-V3Mz#=8OH4T6blq|*hQ-;Eu!*!)`bPoB?VcQ>PvJ5QeD1|-~psZ zH0kXZ{AT1b^h)qo_oSRePNdrQ^nTV;EI&Ko;U`8Ejzrco4qZ`aTu>|6h6xb_Kesgt z1si1kvs$xIvj`A~fZucg(1H=L^#Ndm1>hur{((wmJ-y*v8~yAU~nDVQXywglOvzR%{q?P(-iC($n@7ZQMGU>3#;L?2=A}y z<3HN_LC=iO8CCX1|7A&yue(nhy)v=xRNQ8cw^{^GgrR+J1)Dh|^8?gMrJ<3R*?Hbw zsCr{6Txm7C+E?%{DHZ+%1PulAg@PeSFC)n7?Gs_@On*VDn&o-TJ=(X|`)M5NuzzY# zckeN{GtGUhs69QcTle-8h0q(W-rv8f$$h)GCw~8G-|lv!xX z#@Cb0w<^lW+<8cN@M~;rY(K?+K6{dw46lL#-Pj$?H10EfRQ~=d`5f#AuRnr(VOa8i zmOqE`haW+{Fz`I7!}K@%|Ji8P()~T8!`a`Giv-y*QGle zkAZ-8=l+&B_lW_|-wo~xaEo-5jZy}`M1t2HP4_go)vaHzLl_ES@ElN3+i^=2_Pc@R z&*_PPD^aFcLSw|CU&#=TNEr^8S1g;5 zl=5EP)2ef*PUz|s%hB*0HJt+qEa)=`bwS?(4>W4B>%kY}GQEM|Wi?rOrSi2)bf~>U zcqZ;-`bfIK#0@Nj&4W47~efL96{)=z&A?`i^8tq*1Wm}we;Y-tA&@^ zg;=;*xd2C{lUe4cEp;|BrkUqk6=e&GOP1rT^2)LWRqpa)H&z4KM8!spDzW~P;W06d z85!~v;ZFjQtc67Ja}ox@3UTatF(#YKvMUx;)s(vzF0Qq36guZttelE+Ozp(tC=nm1 zt{LlUmX_68B?{!_IL1hS0q@|M0G@qgQUyn zmzUt^c}otJ4j;^I@l@#u>7@(hoO??zHJG7Hmvk*A_lz)n~1bEoqN!AMB{N8Na`zGLQ z&y;-Yls^K;w{#ni+Z2h%|2Yy*d;mD}Ux!b5Boa@WgNQiSFayv9$h{`%fc*i70RDi) z4F-Gz5N}M$TL3u+vk8!MGM51k2h0IH18_eQgYW6dxGPHT__+tLFK~Z%t7#Jz#~jB+ zpe+N=JI`#Kdr-)ClEK%3yzK`3GtEc*4Llj(YXKYzxEioO;1z(>d$NY?qpAP@U}(ap z0S5s71@Lsh&48x?ZUj6NumN{G?SgHn57#x%!!r`}3qgO<0J5Z zJ_z*Lpxb(oo&!4mj_MCOzYXHIne?MI|9`R0!sOozKgxdvbW?r{aE}q+-@wQC{88c0 z0iE$dhCt4j;V*Hnh6NgCX_&5|Q^OPu83=!gm=hGZPs80BHfy+5!%Z4))R5m{8NNY7 z4DvQ6w1F$3M-)i`!vTNc#jqld5S;MUwZqjh0h8_*8HJqzqfreQcrfcZbFhxTE z(c@Vt(+i3<bNaUQW@Zyo+d#qIt`0PP~#Jzm!k-ekPiYQK}b{q6)}U(H=&W98tH~ zgt_d?i#oe1h-&jT9@Af4B4j6szTuZ0-2#GP_9JIiWOmAtT>K_=z2-(@A!Xf#b$HZp}l5k?m4-BLU{ zfAv(}>P=JJQLmfIUuOCX)qAE;LT{N7nCM=um&EG~r(X7}s4#29Os7f^In9?}XC$$J{?y!A8od+A8+>v3`7K<2Z&8U86kcGUWGb z=A*eko#D|%SvR9!UdWIU^U>1ii9G%*DvF#-<~t_GadQzCO|tbiCWO%~NBl4!jgrRI zqUu*vG$U{J41)!_bJ)3#|BN5y*+07ZE}DipbG(ySD^l?u2qL=Z&>lp_%LhXTk=Gya zxBh|*fXS)XkuJ{nsI`S^TT zC$v#MZ0XA;#xH0xH_XAJd@WrJ806YX`3Q+^F2}Xw4fWXAkg zcr7W6@)WF1P2R#+SKlstNmUy%LHQ>s)a^Lv=E7&X6Da#3P}|co_P3`qhRwj>cG2he z_&Ib$0WnXh6lx$L3WajNOe2(tt zztHJF8b`dJ;GgL9cLSxj%mJmkg1-ajcG^cpV(#(O^Mmc(b^iFXn3@y)N%f-{N!=Iz zEGMqpK$2g>*JLjy8To|g7tQ&MOQ82iH7o8!Y*?X??$2}LgLaxf9hs4e`EDkfL#SW_ zq``D@f{a~`szC#HqT0zikMSMoy0nKcnDM#qVB7NumT;?gEF>$+p${<&aV=lE@U3(X zBFW*@b)|n&&$zFAlX{MBSvs#Z2W1H}A6Fm&j2Z)FtG$OtFbYP<;1Arhcc8seQyBo% zkAx~SBkhHeUe75n*3kA$FAmOd55ZI}Fe}LWjr@~R5+H9c_;Rs_)GRqrDjp~wy06a-d|%nz zbz|-bb(l5(Pn6E-blq6`fvajL^VO00iAe@bHfSV{}kt#{8UH7yXfY|bwudE_rH&2f30t|N;SO;iJ%5LTD`p-AGa9T3lv;~0 zNMpKpIV#iu@A95F7|!1n6`B)^*eqE{9XeXGr9!u6qdP?Mvz=g&wFV>M9k~Ar3<)q> zmp(t^SS3^FtrvXsb+2TaAT3 z4aoWEwzG(+oS@pllR$({{;V|LgtWGk;ftO4j>codY-|#P`#Dc*frzOobQ(R85t)Fr zEVU{p&uirQ4+@L-KxN%=hzo8HpU?Zpdp?BkTF<)Q*IsMywYn!A*g@soF!F3V z_7}-ZLHjvxICt=VI{zl^%*d4&mAFTZ6+T=Oaam~?Z%$5-7+h)gw9>GxMXwI>ej~g>F@uBL$30y1qwKWU0j4)-xm# zxhaJ$ZRIvtKCqrHjpQ{)M^vd=h!J(R`e6!$v%tY(35I>lCG?}1e!RlMkRjV|7^l(} zA~k^?vg*$9aM8|nURL&u^sI5k7&5cIg01kw2S!L-j};=Otf9ew#WwDN*BL>0_$;@3 z8NCq)o`ER7itp`QdO2ssSv}imX?FU7En<>(pijuxs4m4x}-GR zY=(c`v(3RaG~h65U3LSkux%7urmZB?ay?+M6qXOpXEb=f5jmC7nT2v~4I{_3hQ%&C zMg}6Sp}`P6$)e*U*qaq6NnL0%M484lKKjM#TyEN}Wf_!^_hJF?r6W6k~ zFNxWnvb)&R z&Qd0T2hT$QADg>xV1&bGGM~i1gO$U?X@{j&Ixr?@QSE=t)SbK@XB0pN}~$hP&2@(l1~xdo`TuTsHh% ze7?Mg>d$j8WRx&HMVWB&%8jEUkmXRp3Wr}i*pBAop*3#6AD&A?{_|-K%zpzJ9?LR+ z2wniL1i5#_J*G3ke*!NACxYBd>Vse0gX$R*>PurI!Cpc)WFzr+KIBKy$nl7n`2xs2 zC!S|E8GH()`+Gp{LE&3%*$bKs(*6PT%bx?^1R3u0AUdGTpMf-g5JXpzxmNX+;3VkJ z0x+&g0Y zzY5Zy=%{3Wsv*ZK)S0E=*&x4vW&Yqiv!w9&9V_$oaggcj2AQwdf(&OWmHRz6%6$D-koIo{@v3%a6<7cs51t3UjrPTS-38J=&PK?uDsNY2fVq$#J>Kr!41x^j z7Lfk%yfXST6{LF}Voe^W{5t9v-S>d`;A)WW&jT4huIG9nPs^VGKCa{##(d^CCrr9NPm9@(x2~v^yeY) zGazQ`fj_rF)}`{>K}?l0ZvyFWg|Y;szsQ3Sf<1w2;q(W8@|_W?N8lf_o_RrgX`T{g zEP77EDCZzbGASh73)4VkY1(?^+gSWDtzV%Ume__jtD0^3JE~@z-ll4{Ywi`$KHK+z zs@cw8QZ?HSU&3OSwNZJp;*{JGeXS32rtj=IdT-|47dcGTZ>)a*9#Pk#Is)K|}U)Q24Z?{)0s zoBP22!;buNN6l{>eLn{r`6|cH5ssZ^$4-@_{=Q?M-#g-;{Mzxqug2K`ftoKj`f_(K zsLheHeff6uyK$~bTBWSBw=ThZHFo7*-%gV6#g{~?#U!v9D2CdNwsLPGu|{ndyZx7) zWHUf^IJk5!%kwrMtV{E?A#rH82k4NIk{J57t7>ZMqS#wVScWlPrHZbBXL9CBg!>2* ze0^iBv%fN|9Xf7V)*7qjDJv4UgpPg;*&SJhH?0s$Mu$h)>5h@45nA0wu_xEjj=ahx z?|-SI<~khf!ZrAYIs`~}j*qoXk!4jl%w$>Ba=Q+>t7MI$IBAb-v^LwBi;Z=w;aOd*8LQw-L9pY)KyW}GUVww^YMe(n zWZ#U|CBqWIrZ|u+Rp+`1q@RDWl(~_H^3V*SQgaI`dyWBRwsKG<)rbmbGbG9LV}3t2 z&GRnGFYr8XNIM011gmOwTFQLNuecXEe2Dsl*fbkIn zxchUxp_*e{*>xBs!Mnj)5JOS0UQavxV?TspOw_=q`r&yYeUL70j<1^ybYo?fX9nWA zC$HB^O7H}s>ybR`pm*J!$aqeled%^cJNnaaevbZZHD(7UDxsp0=4CRPVFt;Hk>(%d z;*sWre9A|f6UmA!a}L=)(p*d~&N3xpKHgj-%rZ;KofFJ$WP6smpWKjT9woPCnQda8 zWqwWW&N6S1`?AbG$PMGoXykP$dxANgJe*}NAVcHLEMc};Eaur}E$L;Ouaf!M=G$aZ zw)qKJk!}7!F3vVb$Y{2i$Vp6lw!y262q)W=lbf>*-hxHEvP~zsGuu2O<|ED1Vm{LR zPRvJ|x5Rv;d7s=p(qv8r_l-2ClZQu|d@?l36p`7Z%xsa5H8+ypC{r)yS!N}fKgx8H zMWf7@$%;{?k6b*;{D_Q>GB1$3$C`a)`zUje+%U=$xhSE)(Y#(nPAUBLPTgdEm^9#~TH-8{Q6U-4Z zKi!PQ%UPkKbmNf~nP##u-CQCZZ%V~{yje^xPB*ua`^K71GMa8Sk=f(TPssLk^ILL5 zx_OJ-oNhiOx2BtkoCNJmH&e*n>86C-mu_w#w~jN*NpFH#PaaM;50RnK=DTF}Xfq(@ zqs?A&_c-$|d3c;T;Sw-^v^kC3I@T1DMWf9XWW{JxPA(p8ZXlzh&1$lJwD}6TVYGRI z+&tR+n)I^FAh~t4`HjNF}VW|Q7{6A_LzcaU2%&3)wN4D&;>Vyt;VJ|#9v*KVCZiL~)8xKv^Cr1rocRm6d7K%|2av;=W)it| zj42>@jxlq{kTHwNY-8HU-DAvynHLsC}$C!h{Z1WE?6gJ@^AUkYM zB=g6bT+$1hLeYm!5xF_jRFI3uo8@HDShG$THXF&%ShJbjFu{C}%+E4UlNDj}I$4xu z-X#}@&Ddfv8aAIJ+r#EEazoh2H`<%SW-0Ys!{$yhdz^WI+!;1MBzK3+0J$%0{zM)Q zn-9oPrkOAU*lo;d}s)>TF(D#BX!AHPV;1l3#@Hub| zxCi_qco4h|`~bvrl^J93-8`5B-ULntZw9XbTfli>1gr)ZgDqecxDITCKi>v#2e*TF zfWHIVVZIl<6Z$_>4;}&6g2zq7Ix3h0c7SJso!~UE3%m+k2i^#-fj_O_dgwdAyTJ#+ zZtw@-J>ajvIQSO$C-A?)9*~P1*TelJuowEv!Ku(+1AYnmHQ>GA{on@h`yk$VHNOPE z4E-zMec*fG{ov>mv33OWQ^AeUUkQE%jDY2kw}2OccY}DYHV=bWfIGn%;AT{cI- zm7sSL-hT$K0I`u|ZUnyy|Ly>>Mr0lYAAtVH;Dg}r!LNaT0lyA%A*%-VP6V;dYo>w^ zL4G5+32XvSg}e>Kv$W{}Tfs*_ywhoZ3Vs9jeh;1m{UPvL@F=(zJmnOu6@mF6)+bC6 zSO+cyuL4(qrC=9$BDfjM0lyEP2L1v(9qb1`3%(6{;8E}lF!NNbk%AY3XM(f9T=07E zEbxoq+2DQPIp9|Cn~3l8;AZe;a6IIH1|Nq0U2qcgqjPXMHuR@}kAN3|ec(_ zJ7Dh?@OH2bd=&Brz;A;;1Rn!;fscdx!S8@v2wejECxhRG{vr_TeC8@}3-mXESg$j; zf>;AF>%bde{?FhKpnn3~3hn}b2>u87Bk%+832@@+SPugyfj8|u2V4Mq zUjs|P?|{!h{tCDn`nN%>cbXGC?3Fb|fG>hy0e=nt0Ne%kgX`h$5Qt|@ z!-e|8ehC~2ejm&RcY`N_ ze*^J;x(S~X3cU;W=YaU8#LNQs!;4$M{{VZzKZB2elM(*Y;053t;5hKVzze~NljL0u zGZj1;{>%eU0qa4Wv1;xDPlbLnh+|C5Pr)m|*T4(Gqu{0B>E~j+1*d@*fY*W8*E2Xc zH*^y8_k!5tGmnBdfX{$9ti=2YydF$H5A_;62fPlv5*$SQZvx;NQRz;D`&bj|!d%UItzU9tU0r9uF=D=YSpH zt>8mo8u$cwC-^*g0=O6aBKR&i68v9q6gcieJpF>_fuq4hLwE7i+?)$aoJrIL#ThYU{bsj88m0EDXo6~*d0CzoYY@uPI?ulD?X^VfYQ(zSB7!ezMI*1U z(z3+Np37WU>s7Duf(1-5MQFjv(AMEHZ>fjn*`={%zCPMo?coE~RB4i44$(@Iv{ZTc z&endUD?ZiL)OdV{Ts1fsYlwwt6HaLr^B^N#KbPUWFJ>n$b-^p{jK336oH*vyB005n zVnVHJiskVtWLl7kQLN$eQ0+uY{r9Ood}7Pv%e}_d71edk;#;(3d2pn+oWJcl#P`cl z+~ZQ`;X8*`ez_}7nvp)lr+G~@p~pA7$@(O3;9x~lZEHhoOR6|IBU5zEQLoB%&;mhq zsvxOMX`?aKhP-HRKYeD-(oRx5TAE`~Z^iO@`}MdaQAEr(e8|lVgOVQx;G}Xb9xP9L zlmxj>fq$%deNyq+Jq?B|pN5G4vKG!m#jzZZC48^3DF)ZbPOk3z^*;(H^)242<|eG< zS0h>V)u9?>y`MmDMSTlCS*}^8(pXcI*Fd{9H7#syb@eOJFzTwB8`j8Y+xiJNYXOfm z=aoZswPNDcRC{*IgVk8`&+&d4mfumG>KL7%iHEeAvSQju`WdeVP0i>vT9$dOja4fV zR#i1Vs#l{JH7JQ1KUn#E-L?XJsn3qXZ@x%^t;*<1w!vXRr8f*oj?(kb5L|aT#6R53=p=v1&k$A{m)+yVodgv5FwaYwoXbtr>wxapj z7E~d79w0i|I@B@WU*xv8!tX+m!PWIkL)aUFFU%e{Q?dW%cXX20C5Qn#&#I-^dXmmz zh%wtUx1j=qmSs(?4YjBiE0Og{-Q=)Vuwz!>bfr9 zb5m>7Rugnsbz;L-xDZFIHK=fC>Bnl;+Jy~M-=t}HOK}E4GX|{2rCw}BRHDzr53C`o zRM6tIj!R!rx4MSgmq@Ok$#N|iDtI$mvW~546vBxT=Cox9} zeS{fnH*Ye)sgR5(9Mv_l#}6%w#iA|rU^VYDu)_>xfulBvLDPyAXb>Ss z@89Qud4ryS5tuf%HZ*wn%E#jw7J)R{+8k|aN$Bmt8r-9lEDr3k=f{LauA@i@vE__$ z$sg(hxjp-XH9QzB{5Zy%TQLks-NzjnLASKLx%#3I|MTo=94I{YGmWSZ$k<7ZOk}f6 zKG=)aHLqy#qoh{gIVz3>l;juX>_OKc%2KF9Ok0-MtqN&h7K}|!--gzYNs`~e;^37) zjd22g>%i9%^4m&~weXFnvUq6!oL$Le%aO4iI$HKD$yT(hp%+O8(xaqGj%j&y6!DkF zk9fFYBD;JOhV2^paq-Vj@uNw(_BcagMKkR>ZFFm@8qbNbW2p6brHU4m%xi*lvrkHi z7DbXmH$raT3r8R6Vyhw!y=QMhl`mCJdv8vTe2g2zm z3?%BBY_>06pn{5?Y~WR)V3!UfKbC#Yl2W|ja{|IqzvV+i46?zLBT=u=xwW(;TN}o$ zo#X|sFtl=tMZHW?Bw6UqdAeaaOdljs@Dn-g5T51(j}Ay9CeiF=_S_wFwF_J2(&5& z4|p;RaK?>Gj6#7%vqTFS$JQf*<<%h#*kkV%)T<ufOC&hYW!y1oQIC;3~3Gr=c zT7?v0sP+d)nS(UZ)+e&Wd6(nMl6nl!){AHrhG(y0{w(;8988QaNe_0exEW7qI%|$r z#g;intZlVA^R+4GoWeQIDM}l5>Yq>^!v-?sqfG2s-i|M=jV-NFc8o0gM40wTm35Va zxQtx-HF_Xpzi$T%m~d|E&t-!F0aX^W{uRhG%txdHmEgT4t&Q@;))Mk7H7D)C%U?-P zyQ~gNnp!dWpqPo%243w8w4<$oz)q~$ab1h+jfTV`CRJqoD5#M>j>^kwRCj!1w z#tEB0;EGV5_|RF&bG$rZ>MTEXY*n%33TM0_M}S8|ybYFUwsq_p5>+E%z^4qPsfp7* zCdzR`Ba9KY2V`THZb|32I(WdkFV|KiOALu-l(5IeB31;yG?_JDtZQz97lBdmDCHX1 zvgL$Ya#)O7YFbu$euwL=!g>;P!KrL`=&*&C^i1jZ2b_@F^(j1@>cEBDdTT>c>EI7u z=HsxG+Bs>NCye+EB152k&~dAI$UYcwM($y?OO_q;F@xdbL=2S{n3(NV#OT7%~%hR2_>M20`P3!>LkR{0VPe zjjUfGwWtbonrv)yTBhV5VP@OCSa8ZAInWdX+XukO%BjdD)*L?aI(-S_l4Pb0fRDqj zk>ez2YR58fu3Oo(oOQwR+I8<=-shTgc`kV9k!NczKe#p$!=t}A;hOqSTftIQlG~Ji z*LB#62SZGM*v0x2wPfRAyI}gxv6JgF?D%TymQ-PS=TWR{gkojbNOK*E7d!Zlbz&k8 zobvMrYk#GIe!Ipv!yk(bQkzobTsKatjIKFj%u1k-ktx0=Ezn>{Tv?#?hVK`*VDYN1 zk@G~?ghhu1EIS6K7;s6GjYAhphA|z+ojwe3ip&EY;XWz6V?05-e%E8*T!Ql!dDtV; zj*}X3-(rd1lzniJ4N*1H(W8EDG zHsa~t&)1YT%6hU)*FJ4OO*7Tgh#%sXA7Ltm7J@HEwNWe6hZSe%mew`0_-R zPpp5yEEwL|kMMC?y5=f&-#Rgsxl3(RogK&RE9u@cETG1!>#Fdu6DaANEA^;c94pq~ zIoiH&&0zetZ0iB?2P>a-4U9D=bapi)sXw*P8#K1z2h%mKz1P}Ux_Ke%O0@1gLLv)f zaoHbPgEc=?L6~8yh68NUgv?IYur|w;SXj_@fJaCM)`B}qQ%r(qW!DTj++0IR7VKSlfMQ*_+8`wEd@VF8*iXLOFr=1aoM-)_Yg>e+)<0Fz5+7~+tDOjWybsch;Q3&cA%o+FjiDX9+sQj9VHg* zhpml?w(Ab4!DJG#O4!hcP)$%m&bxEaZ(~nRj<|K5IH^n6Pfmv;x80KUAI(SRTb!`@ zvrP1Ob|c4~*4xSZkaAUVN~x+;;%U{v(igTA;5)W+bhplHS|Shb)%9qc)*vwt)zL6j zENjiFLP?Jbof5PXEl+=kaP>v`(>UITL;*v)p2IN_3o%%1M~2FCSZL-|r8BRNEVy<~ zW$BE_%sCZTmClcp%~?jOMj%DpWtZUA`8tVM$sI6cO zQayS$EE3quJki4I8#P81^Ghq{&zp&$65-e=_~LojRz~K{iYzF-#*b0p)VfQ`8jf=~ zuPug7)W%K(&Mr~`KGed8Sx&|0O0(=|TL;$I=A>gwy>m^`DMhexg7o8&cBo^ihB$Rv zGIT*{c}Y^%qeQQ{wiFf5acCb<+_(*6>Xxp=MqLdP8)@|stUSmEI+`skTCMCs&30tA zb~^&6hEuwrbUx}%B+04D5>8d1m8^aW4s656S$@NqUs_xeDGzA|BsIAt-$P0MCi}@T zb81A}4?KrP6J=vz&Go^N=W4@(lPGH`Ax;X(y2UJKIUg3_&^~C3(taIAu^+go{eVP+ zRSJ8Xoal5vt}em?!gDD)r>X|=I1&V5Ltu1JEs!~L%F(Hm7nfOU=)#ifgm@c7#Lb1N zLpl-I#Z`59bmu2?_Tx1xl3MGZSZIesHNdv3ZKr70_*Bo|+j33ae#Xj&O0?s##`xfn zX+czCtDRWbp%L*zkH#GzzIlUVxJ4xGdVPuZx&S^(vx*ZZwH zQaNYl)uolT0EYJV5}04#ZHvHjzT*?+0U6ZK@{7rT0e6Zxk_Xxa|He)97OhRN<0OzrC>xw zn;5SBTWgXjQksZDFf+vXB}*Ga>|kDSEF(OkML5S4w+xe?`_|Ss+fJjUwfYt;^t41` zIB+tCPDi3eD_k=?mK{GeHlsf}ny#IcXu3v8(WL))oY&hPSswVLyuQKC12p?Y$n0j+ z?W49m*^>sW7xFQ3puy?~ZoxqEIb}qTy`ZwVymAibje!+@Axs-~zNVX8tQOXtor=nM zD&tWEGX)+}Den393$l4-a|ExP*xiTSP(w58>g-w*%(Sro(XJ@NTS%Mi)EguE72X2LYT}gzPdDm zXwI607zXzJoEh%qT;ER__7dH11aEfX;W+Su#{L@>t`l9n!*}?+;zVBVOfp7cqVdby zCa&DREa6L7dEBnx81hK*f^ytV%}RizrZ}?I${xmhEGujiN$xA`PUzKs9Z_!+;-Nu0 zW<$KgjuA2f>vLF{i{OPat+DDW?$b^#q3HuNr?-BTc@+mbENVqN% zS%n8?|L6$@X|IR1RdQx=A`z_3^ad+LtT!Li)eg1g^kPE|hxB9Cirdu<*P#!!H6#?* zi=21VWVv3cvFn){(;JyOQ-LajZeY%JoUWCW$|(|3SR%i6M%kR1k<#*n zc)`r#a-Gp9^^NpO%Z5qU2?u0EB}{z~K_$Qu<4!-pGGx88 z-L2n8E#Lzas}TK@PAR1)q-;s8`dk^Q;9`Jp*X^NbuURcp?N@Q%?lF2U$Er^Kf{~X- ziH?i9RlfiJsUngI^DCr-Vx^Xfip^x4tB%)M*hRJ=_PQONVt5Sk$|mGlV8#GadOk^g ziY(EIq#6X>2MtpCqhwLC9|^08mPq@<_jxo)>b8PNCP|ZnNH&s)vX0ovqpc;0sh52s zL)|aHHQshS#9Iq`*A>^*3#o_y7#S^=%af$WB%8c0H0!;Dz(&5@#lKC+0O}vXXFR{@;?Ms^Tim9!;yfZ7f^Gnvh zA{AHpNEJXpTG50h&Uv21NHH+A5M`Mj``_q+mtb7gR)k+NLi^YQO zB4wqrOj)9wt}ImMDRY%MN}~)b)09WYX!@0hl>3!?mAt==`Ls*fuiT;Brre_BnVhu0 zNx4zkqwG|+DPzh8Wvz0NvQk;5EKyEZ7Ao_Uxyl@+QHGUiN}dfW<*z)X+^^iL+@sv3 z>{sqkZc}bi_9-_hH!6FSoys<4Oxd8URW4FiD$A55%IV5NWu7uunWHqyurf_~6oaj# zUwKHmU%6Mwd-J6HmHo;c%5BOm%0A^L``_q+mtb7gR)k+NLi^YQjRw~PsCCcf_ zLS>#ZSDB+U%CIs`$+MOv{mMhi{mQ*c-WQ60X}gp>N1gf|%5BOm%0A^Lpa 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 GI{z<-KN$l6 literal 0 HcmV?d00001 From c3f003bf5b8696782628c1c118982aae3b215f98 Mon Sep 17 00:00:00 2001 From: Adam Potolsky Date: Fri, 1 May 2015 16:56:45 -0700 Subject: [PATCH 12/12] Adding new binary installer locations to make files #4587 --- src/lib/plugin/ns/CMakeLists.txt | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/lib/plugin/ns/CMakeLists.txt b/src/lib/plugin/ns/CMakeLists.txt index 952ae76e..653205e3 100644 --- a/src/lib/plugin/ns/CMakeLists.txt +++ b/src/lib/plugin/ns/CMakeLists.txt @@ -30,7 +30,8 @@ if (WIN32) endif() if (APPLE) - set(OPENSSL_INCLUDE ../../../../ext/openssl/include) + set(OPENSSL_PLAT_DIR openssl-osx) + set(OPENSSL_INCLUDE ../../../../ext/${OPENSSL_PLAT_DIR}/include) endif() include_directories( @@ -51,8 +52,8 @@ endif() if (UNIX) if (APPLE) set(OPENSSL_LIBS - ${CMAKE_SOURCE_DIR}/ext/openssl/libssl.a - ${CMAKE_SOURCE_DIR}/ext/openssl/libcrypto.a + ${CMAKE_SOURCE_DIR}/ext/${OPENSSL_PLAT_DIR}/libssl.a + ${CMAKE_SOURCE_DIR}/ext/${OPENSSL_PLAT_DIR}/libcrypto.a ) else() set(OPENSSL_LIBS ssl crypto)

    8g@B6QKH}7f-GHPUm_|0VaQ4K6>JcY6loo{-paO3S!W~Uc^aW(i&7&p_$QHe7r)w;Ne z^K8*=PQd{{cPggf)t^Z7e%*1kUI%AL^>L>h-Eay=+c>&5W!l8)E~n-+pNBxsamIvk zQ|gP|Vh!U?I;G(hq-k0_W#POb5k5=>&w-#l*^2!xeHpfcC#(7#RM0m7B2{; z>hrW>p#<4&TB*g&MX~P5vG7cy9q;oma-}Y9;iapdd~s+00=teRT}YPN8N%t~W=@#d zaLUXXQ#c!FY_>+@Av|%|GH31uuGn(xbYlZKxuCJZrHPI)g>tz(ic0trRR`(^HK?J{ zUJE<-(uFJ~I;?wEZ0pb+55s#gx5n6s$D)LDwbYJf74WW%`()~|Sat2W>?|mSJ?Rl0 ziQF2~lQiF> z3mawCVzIYlG7Lq0QFCJyi5|&|kfHQ;V%c4*=U5p+E!C$#e_B(0RJ9$;^XE@n7B37= zIs&T0bLLMPC$4I{R9TeSIUKkuHg#{Od=TXWu6|mv@NwPnR59ipPX} zmc-fw^nKi2M)J>eIkqqg)O_{GAgi1-=H7@w^MDkQyAdd}#`57OTK$+>f9fwhkCaDC z%#;JzT{ew{)J5!NXm`Afjhs&QgTx+Kq7g-Y9aQ-TMEVF;s_9mBO!a@X|+vTrQl$XiGKG9+zYGcdyC3O@e;gnBy;gu?f6mCk;Z;OqE-d$j7 zCz8B=meUVAP&}ngHCCH3(H2lSSY#RoPJ2Mw*^1tChPji=&cm5T&8wUa$ZYQ3F4~>7 zdPE7F8{5;B8=K3K=JD5&iu{cK9!L_!?*lR|kAIQ5obsCQR^{8Z{K&@m)j(ntUka3e z&DG?;7AXI$cPKyOOhqVG-1!M)iV@eCU3VNj4HR3M^;Poo#@NMyd9T2%G8)me1?KYt z^RU1?Juru3dDn_s^VBepL-ZQ2ENPg>c9An%<1XY}>vaqLhT#h~8vGhH$F7aH&cm@( z^H_Lg((tZL6Gvz2bt#+Lbk|sZ`u1hy$l~{GT0X(K-)1FZ(xqidl%Sx(?*uY#1#W^W zx%#PX()UT)m!p_u%fH%}$C#(yEsw?R%YVIZZ6yAi@v@fi)h;Y$60he zco<6f;U|94C$rk9r{RADa0GMS@kBIiqh!`kNu?Tg5Wi3Rp%a>yAD*#Wt93jnVIk{FP5V6e^rb=Im1fvgh9jHyVk zEzOKcc8<}_DY1Lyo%g<_e`@!!S({lNiL~Q3M4G5J$RDZs1sv28snzKmpp5ODl!P7I7C?6|7Tq^g3F zd%2Vb=dHH;!=yshQb7}Yq^ZR@?LxgNnVl%L5K}fBXI61C>j*KXr5_4R>jtr+Go6Fc zP^iwHUBN4gvDP8^0U{n(Vwx|P5ifF_`qnR&e-m9FIL^zP29PCi>WrFA>B|SlQg*un zm+F@*m|sGe-Cnx%(u0ju9#CAoL#jhMT)QWEG6GdaNhkg^+MLvV z!kJ^IGdR>007_#L{l4d_-P7+FE#XVF^h`+y^V;pWqB^cDjzf zmys*u@$N2`wM;HoOWgGirOW5SH%0Aq;B>NHI&J0Hb>_sSwF|XGq1l;Tsr;_m-i24$ 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 z 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�W?H+&F<^LXrlKaH_S>ZOG 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

=kz8m#yy@7vV>Ms@P{$ZFdbPj;hR#_OaguTz_O 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�RGCCX2#{??<+pzO0d(sjy?94I5H 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 ?U=u%l z&;;I-<3B^=8Eyjq*S69>K_ng~R-_T}_xPXdeJmr%s zkp;aZ!0Sg!pkrWUuSh!NEy?@(E%3Li z)KwIuIGz*%^VRs6ZzX|8=DBA{;1urGg_ouZU&;YhRk)gxl%G`G6`GUpYmX%7+FIX*H zF6G}sQ<+Wg_@^l9iCm5UDqfTAi30_VaggPe_WbSURD13w7GyQ@(8&4_M+@ZE0Sw}CwAV1I7&;H1fNhj> z>~IhebL^>>*tIS+tflx@AHzhK((b@KyK@g{32p)xRj=u~4jMAF`*eq#4|PJ7>y z=86_!@?t*=3cKCYIGJALC0xp%$g%oZK+}E#+hoP&N^Dm_;iK9z!M-cePVJ&QNYepm zV^!HHvmOS_w$WuIbcxAx95dH9xHJK-(e-`gr1*GF5pA;W*NLP!S;6UrZ_gr|T4rd* zhP7J5i_&y$$ozZqND;T}%H_F{S(|m{En&>%xMxUg zl&m%#6e$rN$4=fx>(yV%1k!PW(2HA|s6>a3!xiC-$)h(Tr^U~|2KpTZAX5ES62-^7 z#3(JWwoi3%(i0u#&&sUdvH=im*c1KU4!;wfRpJVVbmKN!&$97|WIS9=M>nBRS10kP zVSlNNH7PkqDtd>CtjM8jz)(7NdwH8%y1cu873?BVqI2sdPYNw_zl1Wvt(1aihZK!* zG$KA86BP?evlfC3TrF^KjCmF6-fKa0%0ARAu(6!ZAjn=DK8p9Iqo_PI?7C`C({Ld_ z1xsRwgoN`nE)(k@#Y@G^A63j!%;O7W-8Z}z&VTv93mjs#<%B*MTQQg;`M$x1IM@bTnjn+y=l$87g zsnh#S;jZxsB}N zr@p^TNGRJni%Co9JR)@d&b_h`vO4iJQ)A*!j^_pV(|rUpUBCo{_$5VL(dC;c*^@*F zXeVH71f-2X(6pVS>pk6i%$e~BI+ zrRa2eeCM+trN?`hO1Jc+$6s$t(W51?t1uNpvQAd4yMOHO-`f7`bCGN#}nc| zK#u`74$|mxWB)_a<6|ng2R#m@)_;N?onvE@M>{jG<4GTHK+3^%6cYE`oh_UwUi8;L zG4X3R`j20vTvtuu;kd5am^vAM7BfKXN?!+8g~4UE%P2g8^&$u2WeKJZ#4qJV&a5Ac zcf@YNV!sH^{f_%cCdbzEVpo-P+{p)ez|06YsEjMu;)Z>Xq`akE4tbCE zC4NqEhM9pEethS&<;o->zV!)BjE>IjJ|#Z7SUIsSPMjvE#D}P;y<%>>C+Hl|FBLD0 z{gq?>B8o0cCLC0`@_58;1n@iY7{66KE$M<5M$MGD= zFUU{Qxr)?3Ip3Y-*6;u8f3tIna`Vzl?V~>Obx=WJl2^%7>!U9UD0=vp&vW-hO_N@l zb6&xrGM6q@gu8fAv=}-6vn4Xjc8Ivr<2?6m)(3ECLJx7CJ0J28>F$u?ZA!jf;&&)| zC;smt1Xr7(#Nsx?CtqkDZ$*MX4fVk>7Gq(^lls<_(?4R=s}#r!ya74-2dZ>v?p zwQ^6w{U&PTz`5llZe)len*$r_Z?E>pv#+O;lzg9*zrP-pgbz^a0ObJ%ie=4uQ-PAY zO{Gn%D-flXnB%yF6Q9NWJGjPV`Absei!7J&M=!_t_1NjZqgzBT3+KeVL=Lb)vBQWTE8mh7cyOrDl3@?$}hxu1im z)`+{%402yUq(H-@w8?PQO6iAMbpR`9<^@D0dI{DM7N~Z)sgZ;y% z=6RZa1D@mKv31;JxhR|qw0-q8f3NqP`!=gGIdquzbw;914!4>LG(DSFx(IRx2`j*Jv2 z1ILyoxHWQWX|SR*@+Ypwcn%tjypr z!#6$GZyG*-1vf(4oDJmu2`1}c>vUP>0e}ib#)Rg8|}l{Y{a8%O{MvJqHL0^SGV-QAwo5~L!Qw|0!Z0YnHSTYSNS+w zUL34>{Z_jEb!g$I!J1V<3-1aopl*8g;CHCLd!S2?4`npu zFln_)-!|OA91aT1OZj~%n~XR!@HG8R$SYcdN>>&Xa;~$M#X5`1^2nJuBY?AAk}pEC zsK~5SHp1NSO(+bmpUBZK5ei<^BSGmAj$HXR30DmBt6n@wO=aRFX9ZKR#-cP&sk5Q8gUCi|AsiV&JS7QOx9j` zR0%t*;4C|@4V7(yQhHY_VA{@A?}_JB`2ZT}qY2=@sajW;XnCQD3%vMd+SG4@P550PCho@vraZ;R?`c_CekC=9mqwn^Qv$q*j)sB2p^%mn!dVxp`>9& zkPRyb+Ox!~p~PXy<;1PGI^c@L9mAozrK-icmdb*U(0%1Shqogi zpOH*|t&{%rA5Wi?Oh460pH2FzwJdZWY*i*MscN+S%C=z&9&tM!VNasyLvR`&??+Uu zjR!5E#dFYGSmP!_H_QRrz9eL>6MV_4$@&i%G`b{vUQMfKoR|hDZD^AFx#8{_;7pOh zRPrlT$yjX(CL8U(aZ<_07k5{J)d;mLUo2IOqzYsqcgCoYkhvo^YWNTDE?vQYkt%v* z8vIvE(f6elT`eUG{Nmip`UjlyN8x|II)$Mm{C!j<^=a_mER~#;R*3`u{Zhr9RH5Nl z7H&!S%O&n2UAlW>kIiSQHcF*(6UP1p2L$lj{S30>ImY3v z#r;#%T71uS$+ft^ciQsnNGg4}m*GO^ew!sqR=J; z+aJAIrI?7CzdfYHUH=R?pVqoWkQ<#vv$KZife>c8Orcyq!|yaEL?<)<;%b-%ClcS==M*lLAzlB$HHbM^o)j z>N}qJslzJ|-p|BQJo6}g3rDfe#_5M+NUdDMe!v??jYs{E3PjIm=jzhsei9=(quezw zm&Xv-+>4~l=GW_gUaX8;jm{}UTMwvREYS}*C$|kohS8i;>~dY-VlgARH;Wb3a)=bGD$qtc*rXChOKvPvK zm(lMy#h|IJ7--1{Gi^BAU(+%-)3ibjY=1%ao6L7CH=Wz7x}E?YDsp7+-Vne2DTx7ekT@(c7Xa?_E6=sbgzm z25 zRIIyxtvqAnvU+s=p&OnJ#{ZdyKXI;Z_-_#a0P-K-NyG0$iTtlLTq^6;@BvP_$BL95 zFM3p!d*&g_H5T0A3n^oz5`cite7!JkMDOrT_cZMj8ag-@vO<*7Yyc9>gwVs|A#zVs zt;hq?TlCSC`1r#R!#k6tV0-^WPl)xnC-yi61LKhj#s|>z9=h#vlAeNK)P1{4xyC7F z=9QGt_N`#={6m(IWCVlM=uq51GlE`?Ra~K0m|^bh6|#5({H$SWzAM6SGw*$Gi+x;RT&dZO^8iHRsF$a_>Rai>3P+6toOFdbN9KC_OR-(vf=Hy^k z(Ubdy-rh&OnivcVsZ=Z^oqNP4RQ6&XV~2|BKFE0(QPQDSt#!UHlWz*Ct$Wcm|Liy4 z{p+I{brtJ_%`cC<;~#G>d1YI$6URy`>sl>Qqh8-K|Di`*746EaO1eW8G|1&f+rUsY0WRd$mw!J5t4Ox&$|`icXVODd#;?PLhwy%VyAf zlX|*`P452y zJwY@3rPtFbx6EkZM)|EghsT2Y}HJ-C!lY##uI0IZv_U`%%nxSX5qCo3f*Y4 z(zkqgf`T7}{%igLKLfL=rGR<~ng)8-^I2Z64Cl5P(j-^6wzKDc^fX;77-M-dYhN+T zli!mZW4?Va$O1*FFQFCh?JDjG;+FaNV{Mmc?a(>mmHu0^Ty3VNEoIa`viO^jy=47l zt);$!Z&qpBs1jjgv4R)|h#Dg-bM>7H=`C{lyL&zN;_(VqqK$F(FAwRP+srV}FR@!{ zHqSc=g?=7(&Fl6SyITL2Wh{G9nlQAPCeT}qhf#Uvs1i48pc1@_)O5`m4Q-DK39RPk z`uO-fw#{Y_4pwZhuUJ_ZFT^d&%Cz(9_}Ig-MF*}{*0F%ki?9(WjU3t~zVX|gk9OOQ zrT}ehH8!f$4t1m!ed&$mox2QWiZPnD&KP0#so65;OcdIp?iG|j65i>hs*m-hGy%eqK>#j0|G`}f3_2nH;c9V^c zpRD7B{v`hH?sz#DjTTVu5i|SXOrX;~YcW^97LzG&r$G8@FOD`0QRK1D* z$xjpx>doCD^J6x+XgEHcy)S>kUB&Iz&CdxSiVxKV%|NNT7KrGjL`w~3px9`>lZK#U zHUqAhn?IuQZ;y>FX?@>qog(=iMupyXy)`h^qVdw(;&%NC+^)0dTE*?a!zPr>J=WYL z8|dBpr=#-hmBDB$gL-yGSIvZy*`LTvP&=$cbe9Fa&jQ=zM;-i_Rv6q-px>)6o4&UzzgWR@Z`+XQz=T-FM2#bHO!Ub9OQ_Qc?llh z*9V973-`r82MslFdAEo04m`tnpEJ~m*8$(=db8y9npWXIYwKW4N&W+W2SH{QJL~=} zUBoElC!(vOJct!lXXM1HmSGulG23Qr0?l*{O^ti@ z7d^LeWxQ~eOG7_NsV_+5T>j}4YhF;srRH+d3Wd$qu&`fL%W&Qac}lu9mdUc3-Yy4L zJnh|bnIvopKNhTjX}5NfGNpoc5T@~Yt_B+7d`n?e?8ejaeL^Z;Ih*LnNySSGr)i?s z1pm!3s{KN9)pE2LqTe}e*xVC^s49h?#8Hya6Gy)aPqW`lQP4kxd=PJlXCJRx3eL9b z)c{#<1=Ldm@4F&x!k1*T9FM{CyQ{91s=pXEv-CE<0LOkTUa8E_x&IHRZ)PETzH7r? zInTvvCC~Z@+jT|{dp?oR1)f*)YUY;S`iAT?R_m$E>}#!5i8flx)pNGmocCRs28u$M z6nw4P?{5rL&ZIlW}p}hv$zVifGMH)(_)v~HkQfx<#@?=Qj1mc zv~;;_Y)7)~QBx8_aK}BMX8Uxn9D|P+Ze}&-OuIh=mE5Xoj{<8|u~B8QSp(A5)=KP= z4$%uO)qZEb+HS z{6$Vi$@CEE3y``CR8?E1meEXmRPC0j1MK!t>}V|f64`b;NVUh7+M|YZn#d>HmnH%o zNbv+?!(n16sSLX#V2c}hVu8tkbiQy-788TJRJzwh1~Tz6y*6CW5m($OpKB}^ePj59|Z}C^H#MA9omed?$HekN|PmPx> z)b7cEgXrg}qZAU=-JV~-pzwp_?fkfyO^5N;sehJERMY1PMzh$|5cwsMMm(5f^^@3` z>|n{&2J5X1x;#1Ci>#_Ut!k^euE%_cJ8qc_FUaV^v( zF5q`LziSQ>DI9$Kp#8?8BQ=c~mB<%WTU&QyeD?vg*7*yLiC;Zsm{ERvwsjqnQk}WM zo=|L$^3!0eb9!0L1nkFnf3?ffZD&`|48J|WXbxIJn-H-ro6!CR6`N#QpWrJtO0AqTIIyCtnV=^1sJj=Kt{ zP&K?_9XPQsF1APOM&Djmb8)iKx6^1ml3%AAJ-})7uJDQW=xc^el?IQd!T1QJ!EfjW zucEO*w^GU`>rJ-5oxV0w|9jT^!+m` zm5|wbCn%wVstMZR1ntm4!wLF_6ZEPMLJ8>o(g}K22VrgDwVj~HbWo6>LQBK7NC$-o zI?@T6se{H7bb=E!SqEJ}P?ZxjK?e!Ds&#^Db&$ya^-j>qI%pC>mpVa5>7Z)}x=sgm z^W%>1o=ys8ihFAMU@+m7%aJ!`c@>hm2u6!uzbL(}PK2?_DqKg_f@`_0BWRZ7iUe7N zyzw)fkFqA;8u^+Uz0|0$ptbI&DtnEL^P1_Uw<_Z*y6tiiVUi*UWZIiPwN2^15~ru@ zN~>&9-ysElA^u&4gv^Y9xrLb=AQ)CmP_=ndeM@97(OLE?_kNkn>+E%rw}9tSdPZI5 zx53H;9zvc{A%L^N+VdCDO@+_*o9C6n$=W)V2+{|}t=T}u* z15;bB!B?Nz62Lut=NIBrgYu@TzUPu4*5s%zt=~}S!IUjW57obe=BEPPR6RdgMYl`t zc582gJk`u}yqZEc5sDJ=1}kx;#Jn!%ZM)S17XKX+b(NquH7z;ao5XLoJoTIY&ah_y zePKO%o35|v2kV>FUEgM9Rk7asWgO|`C;+F z=O>;&OgA%Lv~E>@*Yf@-)2wORnZS3Uu-(+w-xZ%w5*zpyFR_6;_-jodG8h~9h6-87 zU-37O)7fl!mnlRWfQfRsFNHbYG5*@TLuRRSb#0!(&zC)}W{&K_mmPg|AU8VVUW#Da z{%x6_zMoevv2i1hwDeM0I~nAHCVXgwVo#K{@EN`u_cZTWi|^lSFDEDVS=rb8gIRIR zm&UU9__o&k8eroWzDHYjtpxZrq^uIRU>B0Csl{)86u-E?;aRdeJ`V4R?~}zJyY^x0 zKC*E~OQbB3R|U8HC^qNe<%j9=hmz4)CSFkDV>+$LQhr0xD{K0@%z z(8Vw24dTI{0ouImd-yWk8~N%qvzsJsEb#BKqNqx4<9-yC)9jO*zw3N&UR(CHgi1hX zN5z)b1AUy$+v~SVn0sBUsGj&lshMr?93g>o3ToQ1P>f}tN{HG<;ldlE^Rw0iZYML2 z?^}0gR}2%L4b;n>9QJsB^bnez*BPk z&U}}<5j^*fAu<%h$0%qp;^*1T8yH67oa7k^c)5hXo$t4PoaK+-k>T98z|A~H^!t*4 zXWT!m#n6J3iC&a3Yqd(r@e4nfpnCIFD}#flf%u9|qxYN(+F ziEv;msC93)-b4baZ+I2{QXnBDO<)3&{e4S+f>%q5=SUGUZ+f!60k4`;f!u#(JxVBb zJ|;nW>2KYmgA^D7*01@t1OHy{{v;H;=}G2JY-~~0#J&GU;rNI17k!Rr6?;vkzrP(^ z@Qv!eY?0L7!$(qG&1KF)EE>Ptk6W5XR?GMk{Vni}_?$^3o2wYUk&gr~-^$A;ynH7w zpYrm(ynMzBN=mzA_F7y?XD@g_UFuNOhr)uu)(!~Vs?d5{;g_C?8yVU~pTimeCS>Yi z7da|98g5oV`5juBC_tI@x#Be<YrjTJ#D@fyYLm3-c4KQ zHM>qp_7hhzO)6%eHJTWDY0?TZ^e-Gdsdx`m5+_o-o~gV)u-r*-i9S(aXOqaNXL+FgtNQ z^JL=0s(qkzRV?yk+VvV=NKYP5-rMqcJN;f;yY z8OyeUDz2Wl{)TOq-<@Mg_f~gYqQkR)V;sLqgzAa^d78LdW&yHd zm1a=0U!vKtpP?!@Zqx?eAR!1OWJusEW8kHH8!AuG{km1CD^{=w_Zh%98?q_=F|IoO z13SfGFAQgpU03t{?5wJN93rTBXHH)g$%RU*jfHr?!;N5F^qc(IuW_%1=RUa%!8+!3 z-Ec}4CmQ3fKB$$87y!L+F_R$kil;(wB^fKi8ie5smy+?MX%)HfNG=cU$Hei)yD}=o zkAqB&V;>OO_bz&cR(Ip~cvX$}HYZeC`cr}^B{jHKs$%5SvCKbNs+jsV>nV~&=RD~O z<72ulaYl5`)2_%VN&f|ZAdhV4i=)2y80Phr7S<3{?0rH?W8Jf8h@35fJ9&gV{Usm1 zvtV@#&A|sSE5RS~|Jz6LCx1M+Q&1=DN$w|Nw$uFUHXW~BH3swvgbqVeDEZYBs|Z0wtSNkq%b&nptipR7$)$#* zO)V;Mwz2Fq64!c`v{`Te5|?Ins=28?(~ljwD5y>sPW>%;^Xp-Wg$w6jrctYt>YCzd z^>;rDEs6C@W7&9Osy;P2akgKn2k^nNN@!D1W_!;>LCvni$8gE53hT=&iL`=PLqcf` zLGMj~!;~(9)3T~E}_ut%pW_x{-UJ@;rf~`L4*n+M~rd9z2 zy9#rWYMqd2t~7nYYC*$QTx6GAtH_i4q2vJR6e(y=P7*^a{@MdWx>L=aRh$s`K-a%K zV*xbZJf8uKuFm$B0h4$`Is&9z{?$zZ-lgQw7X=zCsF9Jl*O3R!ca5683K<+)e#fZTYrbxExupjcmf184 znH%tE67Zb&q3!)1tsrR5b9Zqymz)+w&e&jkH;J-PGKfgGe4Qw9biwnqavTneQ9zYxaQUAoY11%x64xXKh9;=#pU9i z&ruyj{j}8T(seLt6m5A+>KL7@LpbbT2nu=v+pCXagTh>Au2S;g2r{bc+Z=bD)dPPg z>EcBX^9c7}e6YXHl(Wtd&N^#0Og~LQwb43EKte}CJ||?74!NW|UAoFg6Ovj*;xx|JRPg=4#QvV6y~&vR078~A#w4|P~y@1ZqlSA4`)>e9>E zxE(k^-c>kEKB;eU^l6LTy4T65b{bEy`Yy|X9&sQ^u`Az_s-?rV4a@I|ORB$B+iB}VWHT-3nWUKqC*48&m<3V<|iM>ww}pU?Ni*;dcdj5gYr>o$`u{TCaJD_ zvw}j>=eKD(zh^Ms0aPKfWVgmR1+kx9TdIH;;WDkXT2DC{08-d~Iy}B~c-&4g98|2u zte_=)m@1+hoS?ni+1E`s5J)d?b4FVGo)cvW#YlO+f4)53A9v}Jv^^Y!6thpJ_Be9| z*Fo-uZc#{2$_E!YH5bjPI9 z4*l!$q9YcP!4<9&=2vZdx1$@Q+`L%!F9=TzNX~oJ%asH>9u!7LTqs#018whLNu5kl zsk|DBd8KudAX-;0^~s9OddTIB*6eGZf}Zr;`#3SSw+j8IW->+AxJHDJ7SDa}%B+I= zW;ZEKCXVTkicM*7k}B$aKsug6Ic;U zK`VKU(Yy^w1i5h%vZ4zIrI(l8==VI$m90ooZ@L*SiH z2CG!$CN=W)MY+*6dkphkQIIglsnp19lfBYdMn8Zae_1&iSJo3WL=?w9 z+uMeE%(}G=B*h!c7Lp1TGEDp`O-@=aqdx1rx#I4>{j24${v>| z(#iEU4y^RjKIJbC{i(Et!qUq|pNSXr**^Ve$phCXsCk@=;H(3mFQ{(3{ zv`?T9qr^f}w)gj{h&==?R6z(o_o*O@`wBgc(q(cH`fTZ`T4mP(_C@NCdv75F#-Oqz z7a4?*>%I5R0@rdGAm`Bf*rM_`D}^tg9KGUzoGWD#^$GH96!>Pp~@fP1k!RqI3>O6xq0+tdrL zZ#VEFOC}zBob^i;7H~?OqNOj^5&;T_3n}i&MKWc;A!*S$Cl~tpq$F za5;XaQf?QjHkKVuNuhZ5@;5+Ys(cDL?~p~GGTHO_)-QvelU`^4ZzigWiQeJ`1yX&o zGP$Yg5S0nG`Y1Hz73V=R_wzT&p#CyXF{q{kfC9zb2PpU{MMb4$22bPrD#Cj&5sFwM zWY(B|Kn2kwKUYDJpm%XHXq*ZX`UxKm&V*kI+gWpoYnm-crRCi2^6Ej~I^>5uVe{hPLL55#<2jAxePa^n% z?%)|tIgd~d{o`pA=d^0{JfmLV7Ekg5eR>*yr$Ruf_~{Q0;}#rG<2}3zV_m57Gw5cj zxR=W26X0o_>ZF|EX`JM|PVzKfD6et|IK)fU*7z6?Bq03(ZXPF}_U3=8M7Bs+mxS>Y zRg664#I-z?e{cv&;(h#}%|hGzav}3!7s#Z`m#8=yDX&X?;?dc7`6QCcC4CbiqSNo2 zqcp{7QUs*cIUa-dG2tYyPc=yJk^8(Xf1qK^9z|8Y^qSL zpbCkymnf;D!4>1FH|UN@yB@zCYoj!Fp^Rj<31_je!7;0kw_)PH$;{eoFwkkL{Nr_nH+m4ZRSb>k;d zLO?Cj0mf;v#7dLpX+0>eC;>Z}CB4cH)M}|F2ce~A3ZYz?`LpcJi5%PenP}cj#ZA8A z)mo}ru&AsWEZE+~1krkL*Gzb(5TsNqQPwe3YkOx9pX94=NSbcG`W;t6G?S9j7nN1! z@kAh+xG$H9?zd$k@YLZ;q0XFMUWfChdb6S0@RU#A!=G8Z>&(CFd&hdn_v-#YW#5Wq znx{`om+p0BCYDJeMWREX%J3wfP*r4_S#-yr(8hbG@i*Xkp`F82#XL6~73++OEs*Kj zaA}QqGO^*}nxaeP$$VOT`fl3dj};9gz#sFT!6W9amA^&uo+u3t^B&KOPW%*!gE4Oj z0oLuRH;{9rs}we@uki+|rW!Tp$>e9f?*xtS4%$eNwG5mkmwZV#Dyb!oUf-PXwQ8}2 zJ)T;NbVR68rE%6jIvxl953pI~iXcK{AI7>SK7MCB_`b31MCrUOvqdb=zLgY8Q3pM6 z@#!}+3PcL|mUUN%aBs*j}P5SzB znofl-k_w)qg82CN?v6?o)%m^{X^k)#GJ zs~^b^vUoQ$@S$$BT7~{9^)MFfwmq=ys+Q*UQ_G(=uzKj+O~0EhTRPn9T063)uI*pZ zI<=)pi~zx4I=n4ks#Ym*ho*rmZo~lhm$O8XHt;Nj*K^{v=WTz^DwfP2; zTIGvq7j{HQSwvh4j;#OK4x(b&-?O=74ZByB^Cj<;6L!~`yOIsgQ4JQRCJpvcVQ+&x z-QS06NI}sj+q!%CcBwpZhh!>RLg`wCbm{9<-IhI%0Qr}!YCRc^WwUiv(s> zW6;x^1W=fDx=M!ye-C9!um16M!;`Jy`2(9^at(s(M?orAApKf_lxMA*DF{*^4Wd_) zARVnhg80=5Z9w|HO4l2tbb48gjIS;JtcWtD$vzx-{s;W5XE|ald&&Xk|M2!L@KF`l z{|U*4@Q53cXh4xw0*yv7ief^*?!pE(xPc&w_#_&nSgA$a#h?g@n*iI(Ra&i&YAZf! zwbkmcDnhWD@JaxAC_X@Z0KR684}3ua%KpFKGxzQz1Y6sF{`n|-@12=5XU?2CbLPyM zGb7^2Je+{cOUNW6@hOWwIh`T{`dH&%W1^0NDgoX;Y`lK_rN)%q{Ps+AbL=m%J&ih- z@c)Ixz#6V=fCTv;dIk7@Bz*`h{x1ick3>$e`9!vBIc_cj|6`j33AGdsHvhja{GWlc zs@M=X2e8*g{_hrb?8jrmC~y(fip@fzZmKV;?Klcz=wnh_A1Jf#EK9LlSqz@qfskcp z*5_D~z-gCvPyP;-gf_@kRy&C0ZGej_TD$sUXPOFerpdO)KKF&yw>#8*vJiC)LwWRV zg`90DBKv26&T#9oIp{vrrV4^Y@?_^lz~oky-6s&x$dGelW;=!|f=lp@X!+V*&gFWb~{k zV}r=`uOl12ek5PZS#TA;*aY~PP{(5Pd>m6A7m)P?89dR>vQtV{ARPl!K-MA~hYxJk zberR%UfdLX<~hec%)acmpW99dmleLHEm*|0Ix~zR^ zxS&a$Rs*_*f94Gj0G8?Em5pmp;c>Z19nB;JEd(GgsiFL0ELieA=JAp!f7}|E&@i;( zZKFLf26MP11SH2k}*{PT4F{t5Xj^OFkL<728W z0lB2gbfHhNlZ=+gIQK;>3w1H%F9e;{**ZV6_tn`~GCRbBtM&t=N6}xdXa)B?L<}MD zoa_T&(;#uTPR6Ie`!FID0X%F6vW?dP9^!dvXad;N)Y{Wi`vKJ_PtylIy*+k{N9vE) zV)dWYQ4_0Uny#ZO>M#x_R8jj0q4#({0s8^K<$Z24v27efR(%q<$qnjY7etx{*0Ej_ z3A}tVM{I_!8K7Rj6QHy`p7DIhso1fB{HKpW^jh4h*Ihr~h-dW@*FA<~id}!S0?fKN zPfB9p@*u(1u3;7SqD0qsx6-4=a7^t`pVV_4VPCCbryT+IsKa5iT^2nn*{Z@=Er)&= zYZWDs${=j1>dEO4LMC?i`C6#@p=LDbc5Z9&L$m^8j=Gw&{?A|=%*uCe;XIv&CEE(# z`kBnv?Bm!9 z+@=wF*>M!>=O}gijGR>cf*pbA1x1L98^FQBjp|08KrkJzJdc$X*f`32W45R(_?1fj z;ygB#tH-{i0?h0)`HoG0{Meg;pqHipd?Nj!zQ9rnla1}m!LV@hYxE*!fgFloe2`QiV;#S*ZYAlH8aP_zQCDxS zlQbklls~ESal<$KoaEDj3UZKqoN!*tHA(J|aiN$Rt}%fC^fIJc&i9)zGx^T+Ecc+t zyyo;m)gbBuPmVe3#BPhmxH%UWE2`=;_6|OUG@I2Q0i<<%LZ55?`1nK3AAf?HjstBPtKvny zfm=KPXO(ohC*%jyYa0ew$R77LNL!xYWkK|d;-3W3S@#NYrOBV&f>WsGO-}o~ny)HE zitO{E5@-E=$QYg*%C^4ZvBFnn2&`gF6{KfK3y+BR8N(SZF@QXWz zA2r%EQUYqMeTk(cYLNpLoVhAp9b8&jth2^<8M4CA3FG3d1*w94L z0;{}Ej0gJ|C(e0Ry0gylH!YzO@rwqZ2T)@N3(C$Alc+Nr7z zoIyEeY0rx`aG&;7lm`!P58_yO)<5yWA?Q*iEsP2hJPscp$47PD8r0V8xEIg-v%v=h ze18GoO|83*;2pmp6o|>9Xhk812Sm_D^)}~Qt$d@??e;vnM|05PFNjOd%h{l++3zU) z22M^s&+a&yP$~Q%7PX4ru$aM{2w&x{O{m5FeoYi{~aUw9zogs+w&}nu5ngn`(Dk8P%lPk-@~M;@QYaj~Jt=eY2biQ_YV zw9p%VQV&&2udxo^b)b)|D(pkmu3ef3x9`VBAJ{|d<@ZuL_{`-?@Bz*N-tZ$F;rMaO z7*15y=VKwDm34pkFOA6G9OA#o2ab@SjB_iSH6dMq*5Q;>&nT;*`!^ z?LuIqX1{N7io^RGFt^snTu9+H-(ML`14((@BM|TRW%U*R- ztH_O2Pg9BHF!eQklFNAx8sdv$KxIeD4tg%Gkh!z;(Z zoTcjkYx~-4v}23y0^x<``g}D+HX>NRTU447o4n!B9BuRz9UuG>_efxSJxbp>USZ%X z3w@tHdt|ve^|XU8(Kugbd~f*|HVk9MbP_y^R&>zBf%rSKyOx>hC#*{u21jZf-ta{? z`^@R7L2Otr&SSSx5BuGF$PYbi5#MXqu%ETP9xj49b`+(CEiVJ_Y7VH!&UU{~U?le} zm%S`!DST76skNdW*hY@HxOs(Eelhop;h*szU3v;1U;%`RTBO!#8I9T5t}k6Ds~1J< zhRC3BD3P%opRf?|0?LwJuO|x=Td&273@RIn!TZcf4mGE-Qo1S=2A8w zrS&Mj7|jxv7yGr1#W+J@}&8go}# z{TvRgte}rVA^lqlK$n9yU9v%!&CioA8J=)ZXp&*ntt3f2pb3Z>L~!=F9(!DDC6J~1 z{u+b{Yu(jS{9DfHNPP6{z) z*K@f&;;i-0+d?w+684j*-wOA5EcUk}%y*nXefN3{FBHxsEm!6r%fIs(-V9l=3u_T> z0bJb~Z0lkf%fs-n8me&I^+Kb9%e&!Jun=skZlg`)exSp(&%w?W?y60&MpA@`a95A9 zSf<=?kEE1@(PZf-3HpR)p?%ve7TQsU?OnaBdl(+BozW&@g6ofr`RDK^1dj|(#QYdw z{`9lNyfmdbLysChdkn23;2=I)Jd{Q3PKO`4<5+rhg>mp1r#f_tTYFjW-PzV`j<{G` zWymBi7SVFu-^c3qsm)NW8KA>jx>yRj-Qk^duWes&0co}Mt;GJljcR(8tknc*JTZPO|QMm(%HVW+Wp3CB*y6tqY9 z?XdnEsxd1w68disH1EUPnvUoPw}Q#Q$3_cBQ>?eN{stk(-bxkJeo}8uhx+{A_LkjW z(|D(4!7lZ8NOyHf{lTbu?xF9a>iro%L{-B^bj6?hAi;eSp6(x-2LIANNO))!o?d*t zON#2c(t-P~?|@P1^qb+U?Q2Ks>Ru@E9?njx6}bIbP0d8Y)3>IlsNc-S)9+u$x4k2f zujGoZDQX{!d5*@@T>QfkA9=RY!T7K4iHQAOb2KVm^@ha_jwLlQooyyk=-myyXEKhM zs}YkR-1wp%d4oH7qB(gXr7$fck^yuyW3S4`1_f;dyv>yEuFnvNd3x?+I3LQ4Gqo-N zJJU;0!}h`X1}mAh(1rjA>QC`M!A4NRW`bkHm(hSWh`8}k3NfL;pQ|AyTc_asJl&v> z;8J(~n%DNx&4A^Kw3kVsm$q~C(5g}m%*9{8=57JU{ant5ulv*8XWmJjwMAXoE-k5t z8$YHWt0e|dV~d~@%_Gff*N}cwt`x(oB|kar)y&t0qGcGMke{>81q@Kg#gk^=9mm@# z8s(kG@^Kf9n$Vvaa>l*L<|7}_Q|9%o_<_8oBxUUyf=w`f#pFSTu1O4?Sx`K+lYk3L zG|T?6&BBC7z?chTg-mc|-wxp%Ecvob=hyI7*zkCMpZBv}wA>9m)NgerKeh>stl^Jx z3lFmPQ!LAa=a|0L>Q!1nU-<_vT7fEto^<3Qk6I}f%B-GvW=?&No7;26lq*&nj!7#i zK``M_xtUIT)=XTi8*QY2aZ%WDE|NK~7pk>S<4Ow0&+u;Sb(-AI@S7vHzCfbx(^sZX zL_MD6xSIvU%*jAT#N=sGw@&@eLI=BCg+ztUYMcQeB)&j{q_96+!l-tB1kq7FG`^QV z0(_yk_WZlm9`!YBq|tRH=RDkyoif(|35t=$gJY1zz>OM38luWjBBlGn(_wv!@}U}6 zRIKrHD})xTnKZFXml>YZJ7-Z%iH2WFi?Xf&pAZuJE!BW|3_`B~osU0K zD|Y|eYtqY%@PyzDI|}43)2xTN7bV6hsIg}oLsS?|C|SqbL$Vei&3IES#23aJ)WOfh z>cco2l-}5xz-PwlL~_AaobS#Y)-yZU#}{p^TOa(2nrTvgSmE$~d}C-kAlg6@jA+*Q zaG^n};#I+y^2NwH_>eF};4Gs=eex7AY(~sBBkMzaHr`Sn;R~^gW+T9ck>(kKdaSJ^ zx!){PZF`Gsxt#+{cVgZ#86qlW0{?kmO@M<`O%&I(j+l z6wCNT6uZgzRqeyu)mN+nxb)LrZ=lFuarrC^p1zfr8oJ+NRqjFpWRs+TrwzR*uUi6T^LlCH-7*X_&D`MFvGHjPW!;}_=Ta}8Ap z_Wuh;FwX+GR5^xYQk_N@z<2tqMq(vBGIMOWXJd3^dO}1sT>B*YR%78qc)bhh0H>EFcpyn^(fwncO14hzE*fgxhTL0YI=o{L5iT@+Y0y?{Zw zd>EuRW`@@*NwBQ%9>l2~U=E_AZ!kvv6h>yw8xU`;{T9Z zbzvT6BLrE28^BPM@|t7d@t5~e*A#f8=FM{%@9TIp$RU@N_w1pA0j|z0LHgW}r7SK` z&>dIF_04oL_e{{QA|`}sggjLX+1kyzk&YrDjboPSC8@z4hD1?RL9Tbvc?pzd@5R^4 zUaK&NLJGVv>m7F~Xtojzg!>kjBJ1SH66Ev^4dGULpi^llceGL5QP2{XqRe?$Xo zkq7do*s%+5&fhmm@kCa0qj~D!D}pM*jWXsBrx>|C7XGd5JT4X8lo(m}0|-;I)g`D6 zb`Vm20Y6d{81IS|8_ zj3e54b9Q)SdbqF3q>#{pZ#eQ^#k^q0L6CXnkBelc%o~f(kj&@fO9z>^Q5}oX+X~Ki zoP$iE>gm`~n8dCXnT>8Jvc;ga3l`@m+n#gwM$K`Y8_F_`V-PIroalx?9{%rz|6>;p zBbZlq>#vwcy@~+bz%YU%quX}Dr?3oxA2wn7fs<#hpaw@XM+o#hf>2$=4#!{)Ei?jYE^pON+MK~;MHahF>!Us>Z1=q^pAISce z;Mr(t!N_dQ^$dKBu7ok?0zAAH7>c>sspFl<{5&o`KXZ^#go9Nwc_2`~_hQ7YgkjjB z{87o}^?c5fxC6E~aUR(_n1#x7fpo5VV?CP7)L8rZ0hR-Ni*!$FKLgb@yP?0cy`IdF z&y{6Q9YQ32jJmU9-)w%!vmmnJ#*U~jJBaf@==95dsQ{$CC?XGn$>XG!C&RJoK1$VaH$b{TnMj{JIvwH#Fidd`t;An;nbrAZn{7S5^S;90XYD?n*MYKKB)~)phUByKc0mOnr=4QM$Q7*+E?%8n8y6af8dWqiy{8;1&08$shlv)tSc}N zsa&WjAX$AQbn*vK2)DXG5L&DK>F6{}Z`h2d;Hy-(ps%o~LvCkXHdkb3POgtPZ5@Rd zIkKnnFM(`EJ7`P(Mz{IGii=>24c;u8ZWA?Kkn zgnV2q=VmJ>>+pMhG< zu@6EO->%O1h(ra&U#5{=#vfufl1&`y7(mCS3S1(#1hFQ{{*+*RDwlu-c+1~z<#H%s>x^euJMHCZbg)4xpUSHjDXq#AfXfLbQSNHCUiooIrd@o)SeD4 z;E2y<2n;!5>SDh}R!d`s>>ToWsnL$W;C^EdZ0eY1g1xmiQVCMIWHSfR9$>G-wYEd{ zacf~R4fivVbKYoczBJR%y{}-^t8GS$vEAc*dW)|rQf6!}OZ&{nNToOfIVasX*y@T$`sQpn*hnD_W-L>P!koeBj2a{hK+D~9vl_pbA%_eWSZELGtT3p+38fVWvc1gQ)5 zg&sJ!4|6H#>8L3g9CTnmvNZzBU0~k2G?Y6(mC@yL?vj#$qhlXJ@*(&ob6$w;UW;Fy z%W&@P7dovgb~lT<20yF$c}n1PNLc5x@c`D0xFH%?Z}^+Wz74VA{X8X@F(iuEDm!c7 zortS%ZQ~rxL4O3f(0|yb; z@cGIO)tmyomzF0OEL@sk#?fPZIvE&8_orfqzv`OaWI4AO+Qh{6^3C8|zj@BzuHgBg z5xtM@i3!e~Vy5@k`;h?Ln0ckOf7kT?(<^uia7|+6n>>lqV3G-VN`mvXASl+HfMwQjU4uFv7G5) zFU`RE+44Nla{JIr7S$ZDTx;>Amo9OiW7*`d;vnY;u! zUOXL_QJ#b+hH6+&3PWN{N7UHhb!8ZKS3`qhP@}*VczFY3P>;!=6VrM|>^1On?zA3N z&OYCULwBk*dMN5GDhTw23yv4$s{H|wYi{fTF7`y%(jxtt2g}U<*d>kJh9q3^!QMl^ z%+0Ix8}oBHJ|X_WE1v_^+iwEfB>3}qj2{p@C@w#-R_R{`o^HWt&I_j3?W{f)y2l01 zWpL8l6xuUi?Q|dHsu8-{=Tu2HsqU!#;usf>gyV}r?s(TauIAZbzZNU)rE`-7v1bxba`I1 zbkS*fQ3yYVJ1_*VO)7928=%$RSJCqxSOkm~1TN~86d}l4bV~3GMhGJC;R4+0S(lzS zSc50zvZ_N^c!L#a&wuxaLs3u3d-F2=X`hrD-?etb9m@W+UEYFkKzSE5M00NcRP?+{ zZL7c%IsnaM(0NB=B*2%~Yiw!g3-r|ESW5#RKLloB5&nPp`4#K4O5#+v(i(X?=*dz9 z;WTnF)wcE6kQ4hI1!OY-uW_ouKNU;4{5{W*hX+PkU0)!D}Nx$KJGt*zNT8}@NFGmhb zhha|JFL4h`t3y_|5KoR$V_R#+yl$oD`KhJ2=jjm{6P(y-z3*pqWfTyNNzWR}C5o(S z3<^P;k5;;<#rT*&pQ#Or^eF^=PBuEF4~M#@Pwm4;q7PPhozv&g#fkL!{NJQc`kNq6 zY`*;eP9HZ~th_61`oJ!6vRaEF2f{;@->B}>b8HsG?t5Q@B(UIJwwj8R-&j55HS)(? z*nB6R1#Jy?{LGhiEWTLzmUDj|LAa4^1|%7Hsz}}Q_byI!Rb#2i zamWWQ=76h2v|p6Pg&YXa0gk1nt{kq1CLL~6@aV@Gl!Z9 zTQ-I?<_YB}Cu}e`swY=LPm7_*VHEqLz6A#;Oj7iz(`P~QAuYuZV~2W5XyL4X3TTiv zx55~Uv0DE}yeE)El>!}3R?uCek>4;eMhA7@Q_}i>6vtbSO*VCP86zoLLi8@H#mKAuKByL_86tRP*AThcQI>xFota29%&gO2MzX~b_ zBDzUM*8r$^dX^XUiBAXg?q5ysewm^Ga)E%HPLQj8Ro?*W3_!IO7cSUL{M1`o)b?c{ zH4rw&xI!&i;Zh{6ZJp3?4GMyUm4HIR-H2Cn>?1IRyrc5qaKJeb+eELZ<2aIRf9mdd zp-P98P3i|Q8E5S8$ZU-q4zk3o)MG;TebNCYZ7&`4ymWo1#>dG_iy6^${(a9$ej}?K zsH(ON=v#C@gEkJwhav0LKpu)Vb2jU@cph$Bs5erh5w9NXH%;9um?yo?Vu`u2N$Ki@@M1G3}HF8BPbr?c5UE&aGQa znt3u^tM~5W@UA`<>DM70jsx#3(OxiU&KaH+J<$W$6dMD*2d$|*rY8b~d(cdRgv4^G zEC@_G&46ieZ%8zd;W0*~YZoLwW`@(WB_6`eO)c*!qKI+GSxq*%Fu%+Ac=TDJC~%*3 zWej(p-nwlu@dcB75o}7sy{OmC%3-@rHe>C!(3uge>jq@{H-$#5 zMJg_BMVVJ1pw)gu$~>dX1YSYk+%=Sg`9ZWmcN*BDP<=TnHuwgF^TRXK!_^qaSv4#N z8Z9;Bli-@s95AiqluIOeo2r%MKm?!0;gd?e1GO4i!}$E&?Xfr>D@(R|9~dI-Q9CU* zO5^Z{G&XzEX^sh}hCP#U{~|kC4b}BAMx(Kw`ysb~McCmJ^8DrnsqiSS2dnG#lylkG zs3+8xHupj-eY!O5&g>!kHL3DsG{M)UN%act`nhvidah?tDy9bni-^7BdSrgcz=zNt zE03oO^7i#C@}#w1)U-Prz`F#y3GiJ2&Iu+7qW+Kw5+zcD86ML;9G8?fMKVIW3Aqm- zcJZw9q>b=|R9ac6Dcu8~`?AogG&b;#AsoZT33(nIq4&rE=*-pLMSbi?n_@z*6NO$r z5-fqA(R^sdD|_`stT-&qut``mJbza(m*%@;u!RL%$0}?jA&K7uidTV#+SBHpns`10 z;k3K6G!V}3dCc%{Fr(s5XhOZ-P2=({JYU;LUfl!qkrIU=AzMu7LCIKYx~@V1|r(h^as|DVV3*> zcx!AkEq~X>zso3qt-#X^3RCri@Q1(D4m5^A^Cn<)wkXOUtQL-vc5`%z6wnTx;jWhW zihZ{`&iZA4a;Sww9Qtv5f4s+2R;MAvA$kiZINRA< zXX)PBto{af1Q=OyP-0zrVR!tW(oEX}?lL8RKr~V#*K(YXRxk)jlCK^5PfjGngAz?l zJo+N0)mxs_qO|H1uQ3PO^R=+~zJhCGa6_-x&_N<$TQ}aO1>RWWh4sw^b5jj4@`Jx% zZF1J7V~vcS{pzTmDKMtwI+vwjY}5=#jH0>-7AroZPHydnu5G+w&Pjy=ktgmxEPQ(u zIS|{w!f77BlXF=vc5;2@h(`g8G0E;lMFuT5&Sk@kjOI|wF(bagr@#fFA1dY!17}Sv zq`4t$27VfN*@^0YHYX`~6Jbux<4yA}yB&TQiWZ@8IT&W-q7!;SzC>}~GqQT3&8D$= zARSho;vxG+*39h{9U(&tcir*r(1@46X6aL+>sklaM)&f0m4*~(0Eoy^e5s8}9<5Rc zyxhtKnH$`c-)4tAV#x=kzJz5cZAe)KpAhcjv@=qXu$ ztK06>h#S%cbR|@VT|i$i!DBer!%;DBa%uSb%VBZ_#}*}=zPW6*RYc#DVSLiM&ic^$ z&twLM(j894%z-iFfgZ%m%snpr&%Jy8>G^)y6T-yU!nhpseDz=m8(*e!mw*#6w)$|D z2LQO4HtYisAAtA(1R;M9o8c43E2nvNnFbB{W>$dKdm&xbTaZljn4`uB*AiZth?}_> zknvC89V4Z} zWvqLCv+R~(aD(2^v4Jk43m8syY&{@x=?@Fw9^}O4F+di|SJ~PbW`lho8Eg~5<^wGA zHv$DNYLda@Dn^LYG@P<>)@?y{HqIHUu1w)Z>-o9r)8XGm_v6}fHY;4>tp6MGgyvUb z;5@|KyzAM_xd_#Imha$)@Th!ae5HD}7@fgOpwZ}C(BAWH#M~aim5tts{OULBI%_m8 zgQTXF61j?c2M%&N>o3NW-ONp==_MW!Hpeai6?-U8=YWj!UF^5Ph#rH?p5<-$7jbsj z@%cmouPN#c0D?85Td3`jvz`a+triDzV)Latp-V_FV`B$O!WA{!;?HCMqJ^w1_7Pt? z9&{s--&nP3eay<5ig_LLL#R3vHSL&}3t4vtS_xTKfu9DtC#Vz8psYjPy#5w3M#vHp znV^R;Au|l7=;1RaU}5tb_f$4UUuzI+CIp7#FYGE5JRdi~`K#QO>VBfgX@o24*c=l( zuXbS!Ev})!5?A;_)rBd6;{>F7<1x}J2o513csv;o$aStT&Y8Z@Ex9RyQ+41y$}63{ zkA;G-s-jY@`X$=}1`7|92k9k;+PR6C>apffS(gjTVloWF#}~JJxM_%Y798a^3gMWmdqW?w48p#bCL&QnEm64BruLn32$D!a)<+JiC-JUi$AwRj>^W zBRsIjHALaBSaFiW+*J$`j zXLaXeql|(5v6+K`Ny31+b!BDIUDha0`n6RQFQ zU@cNucdzD;_@aikU7nPz;81owVsRbz@!&cvp#r)3$M$JEH{14#&4d4d(lkKepCbO_ z=084F`3TU#gvzPcXXr?uQeI8M{vDe4GkMcWGeVGZz`+8D3b1tpnV=p7JA>@l3f9HW z5ZyTD7YvhbwPs!FtQB(Bk)muMNlIr2^btw>Vaf9}JFq;BMZ*H6xyKLcx+KA-y45XuIz4;?e)HP7;; zLYfx!E&<9a)Rkn8d&Mnlmq{AUJ2X(Ak%~nN=)a$ieY_5XT6kcvzsjFCv)ot%K?)U! zc6nfi{X?2}!x^@8vA=L+Bl^YVc{Abf(RWB=J>1&x#S>0(-j!IA%rV(lb!~6x#sljw znHxm!Y_w|$bPu0smZnB%lO56+&WOB&2Qk_DtEOYY{ew#c|FnD&{PXeCa5*`D;3+&A z4_?D^WU}e)hiSn-q6iBaPs!R_kLK!VE!vto1r9UejMiI9jUT)PKa^KBtG|;3xXITX zQ&cV&vp|YTdvVsWs@YS36X=7n!B?L4T`P{N;W(-JtLT8%f_LEogLocY{Z&LA_qo`` zf;`aXN<9&H^zv10^O@s|xH3w6U3pPc_}9IKY}}_sv$;6JKa+(}3B<5(A~{FK$P#VwB^$3L^<+{Wbe&_UO1&Z-_T z7iQH9@Y8T7iQDosglIdM8aQYF=ozBsRE_Q(I0u6(uR)*O$vO{tDIpkp(Hy%_)Q#8v zNr~KAqL*vZ?AF1?wt}rCt8c_zhWuLB1rw*zXZK1&$YQ1+@qRT{0);q2C5Jn<~N7 z-)p)bJxJ(&GJYDGN%x9DvZI6UsVu&=I)EdZzb6L5aGTY)Xlr@ex8{`8)-J~Tx2;{3baf0Laped62MQLJ*fEB-ocZ+rwnQ?tp;dB!8q1unuJ!C_9g(T#{jK0EqrS= zEV*gk)IoZ5gZ`ED@R)uW`gSkKd@lA_Thz-c;haB8M-16njvWuGW!*6l>h;x|-*9WdISrt4ly1L};xnF{Lz1Usw7Oa9j4ok&(E?>d^#Qb&V z5dthGD7I)!H28Tbn%R0K+i)zZM;jXR;Cblehokj}d+c*hs2&=>h8Bkj-}6@>N60Rl3QZY z*Dz;Vu`;3D%;c1aeY!MgsfFqUIp?E4I@Eijf7{CG%n49VW0TTG<$IuO{6ZjWS`tK2 zOJ?m=GvH|xU0quyW5>o&`@4PohZuIi6gw}sI z^U2bGPg1kTi~dVrBG&?q`td*=+Q6X53dy-eouyT9xGiZlKy4%V&@D4l0_CEu7NXxq zL3wCDnIyXdVAS9Ost+x`@EG(eA{!9?Z#Dc@|%5Gy)gOoF({b5m9mc8!KTMlkp_5O07=mm=Hr>S3Jz6bMNgWy1Uy z4^e|MYTLcS5?%zg7aNuVKUSsfhhDS#RY<*P5F_)d?A9K*A`SPce&P*Zm5t-2lvtJi z;u|t)s^GB-nkqp1A_x?iD!Mr92IEOS(SGJHJ~QAnE}5ZTgFN+ye~}%YGJ{?<2nn%C zy;m;%GK6ir9av#7Pdt&-U0^rMoDftk%g9m@22(YTQp09tfP{)LPBE}ExJgZxFIcKJ zYKL$-0|3%VfYkb&FZ}Dw)^vaPCag}*HO8?Mc^=>dspbVz;#%lFb`PFFOvn)^e>AeN z2O~FvF#%wvF*?(G()=0WG1H;B>~m+k17oxphR%si{ol%j5tPPIU;@O){f*imrgJq^Mc9k0!gwbDFVL6LQnHtp*<-&vw>7fL}s+ z!iExRb2t~uJzqFKci`KovG}&-89i`a>4qr$25*9zwM9LE%%Qey(IU5M>{5vxjhE{E z6G2H#fG`wnQL|W`IUW<&He7wG>hB@vZ&8=Y=ZkY&dkaWAx0jy{>U;UjeKB%l)0_qX zQrd;d+vr+KA2QsG1RV!DX0G@i$l}ilPy|Z?J|1ZJ2mY2(ZFM}gA2S-u72z`Z)3v^d0-=e1|*zEW_5OG?* zEr{obRg1z5H($w?dgS=F#N$tv|M4W9Kjwdoae_rHYEcqT&la9g5;Q)8I^;)oEB^^# zI>E_OC^SC%?h^b36LjQZ`oqa@ zFR*hW8ofKaw61Xug!_7&wfC44Qi)z9006}krU$a1798W**O(c|3Qw4>WgMH^a5I_& zzU>K~;y9Ur!H%gr(;T~4wctFS2sO}~(g!0szKJa}L58ls%=k)#m}L(M^uX|)Ipj6v z1o_yHeq$2^F6f+Zt>a``UuO3qE3R% zBG3tf-g%8ZaGEa%5;@+YtX=>Gh&}k@^a7XdYRg9%DexBJBxumLYB@K1AT^xjd(p3u z3ZQSkY$>TnU(HAfy_mNYc~fv^3Jg;y5iTSje1Q|Pc6*%@$`-Zz9r;B)pKQVt>>ln0 z)}^X>yZ{I+js?bDz=qVWVWYU3Pq-me_$6UejMtR6FW(9*)K$OLL^d2}47XZey5E?C zP0DL-!cFw^jT?Gm1E<{hihFE@++%Yy^bq%x#HZAY^?4ruK_G0m2;c|%%Ji@tKMhpj z)Rld((mbT4bAwLY#zg9G%7a9NdxDcrb42bPKns1U^IcV8qD>_%eD?~gnmH^sTmQSofkj&t4e>toiZG`C*%oM(s=14wua>;%_D9O z^zk^&$|P5Az!k<72YsfM zmX-88lHi73^4_c`^llY{&b1k$a%rOLOa^TJ-#i$U9egHjCoFm ze^1T}e9EPdS9fgpmqpil7M0>qKeKKQet-yi+{GJ}jQEE*ItRq-|A@(%tcyF*hrFT& zF9C~Sik5?hwQGoa!Y&u$-_6Y{DmCV3Y63rlX5bF(7aH8ir(T$7oTjweh1 zzg<|*3&wJl8!ZsbkcwAzm^!4KmIuppe)T6X4mP_up^aK9@p8!D*^{(i<`SI?OsdYg z#{tA)f7q%{4f0X6vC|v=512u!Ps_D8qrRnZzkv9DjniIixn)IV{8}i|b79BbsXm4; zJg9T~Ze)Z~U~E<&;tK$s139zC?$XHtvu5(%waQM%WZf*3EvOmJq9g z5(o>&)QCfwT$${iHJh_3I`|vnGuhYl#ffwesq~xILQzE+$s6*0*EWJ!jlQ()aeIQ_ z7|-xaDJgF8(%8hph!etj@}WIIwRWwf)lz|XBMxM6GaWIYIf$8&6+&apBNU%GW-`@P z>TM#RUAVRr%Mrj;lK?8Vew)tTLG!NQ#K`u^`9wX0$_?o#w9jvp&4lt&Zv3_eRqLjf zV_^?R7EeCZUO*NN(Gz_wBAUCL!*I`36Fw0A}U zDBX#TKiLAows+F>*0zMES0*-H7%twwZZuPs|Hf)Rtc|*Vci8=VD;rkH{((v0E4zPZ zcGkab3GEw&_MLBaG0?-24_>62(9M5X(^(@CUl6MVwp7*&mE89%Kqwmm^O@&QCMX@F z)SQUkzK~uZ*b|Z7_5ot7x9K_RwtE}?vlO{nAF#Y&FAYnRUqjwir*3abX0cpWZR=)7Kb34VPg`<=JZGUqo>`vE@~*ZVN{IP31kbD4Ql zK8GU?dvMOj^x<5#PH#-hT`758%M4sJcVV9A)E13$Q)}9`U7SzcrAE`plhX(6+upY^ zuVxYEYY%!_lMv<&bcV1x^vSLJVeIqfc|6AEyc*dt5AE(+7G1aPz-wyXYbWnSRfOAd;0k}RBPWY-k&lb^oxN#tUs&%wII~} zd1U$5e`;GNGr&)ie>SK`>L{0XO-FMI4*Jqs;me4E7;x`Ht_4?8YrxEDN%czV zI4>O=@rdzV97%o;cX;2C^p5_r{dxD^X7v;8>a0EgbN%+J@tw8qKjPnG0V>wWWd0@p9YMZT*8Fefo7;~D{kQVXbhLk*Jif|4 zNq)bt!+Rv@o%;O6%ei1zHS?|U<`{Qs%)BKV{t}OpC+W*o3AX&jW*=%xr|0HIbxQn8 zTHrJ)XD*tfW>uhd*f*kX=2EXuz#E_BdU^E`PR_Jq6A{VCItE#-?pUm^OolCC53zwQ z0jCpbt0IPQCQBOM*7?eoc^2LY<6EX38Q@fg$DR)7!*Y{A2&QS7**;HSrj8^F}*8nsTw zhx0aWS|6^%K~L>;jj&yxf9B-R1{HD5S6F6-YXGIptYs_ox{wMOW>RT|sQ2AAb*9=a zJ8Z$QGcdg4x)9!1Fy)n*za{u`vzC=iV53X$OLFUTzhKr`pkO-K^jVhsA#{YE7oVK z^-G(ydR>-ithLtTn%^n_SN-!Ap|DNe1bc(?Hio1lzhTIU&7oSaNuSHBK|*KCQpDIp z6UNWv8bVACK-mqJBeviPDHdZza*9^qtW~9qpTo=%PxDrCDG9Pv>#Z%&W|UPARu@zW z-Go*Ih7-b=7h`ZrbpTEF6XP;gA>=(j*Rtx37i=n7T>xzz4t&~XVXv+DEB-rEDMCcMp&rT0g=44cbNX z);S&d=PS#e;k=C&dg}Y&pMxB9;GZu~1mD0|(;OdNeq%H?nyp2rW*8B%7NtaXiBu6e zBK)owj(QQPR#NPCV4E$$Cpe10F038wQtCG*u@-9_X?7_ye`k-Q!gBLBLME}((}rQ$ ziLi3j409o>v8EioVAl+jNE(s{M?W2Xb|=rL*LHYc(c!(@p5*+Oba;QF!+U#&_p%R? z%iq`GJ(BdEpf5Mx6cev<=YzQVHZQEfaOI!c`WKMayr%}wFbQR^u4#n!L6!>@Q`o?Ff3jHqind7sSo9`W}B0t*j z_s+JN5&A!u;T?|b!P$lr^?db)5a6Ps^8k#>ndu}&r?$P=+S6;JK7ra^= zz;k3+-P2c{^A#OUWR$7vH3m2}J^Um~Bl6}=_k=cKn`^fme!4OXHq+oW z66{uHdiF+mw=IgD^FE?4!7|EmQ|&Y7h^ZEDFk{t{PTW$$dG8Bhtg^P0Hp`May0vw< zlktW`Pf3)xdfJ$4Tk|OWlFO?V5s9`vZJOcR;sv8GE%~I^|T?E@O zjK^1`r~~jM0ncT#uQ#c=&mIEEe*NBIRI+i|@YRRUFS3>cgM77_UMB$LMt(NCh|S)? zW`)-HwEfhQL-vog|36DwZcSA;p6J=v)HRq(_ZQ2ZMdFRa)EA+@i8khGvmfMp`+JG< zmhy*Ml6^?!It|)qP{^$kk<;F^2PZ0^?csKuuT;Z^c5uO*vl|{HdCaWWzR!;B$sOX3 zS0=`}T7!5AdOOZdrAHsU00{U^W!LVe4^*fv?c+^G0 zpC7X?cnM1l2>TJnLz_iYgxhfV!+{sp1prS z+l>T8*%-Z>D3_(Z6I;=JK&1lRAr7*g?B$V!um`)*uWG8s0rZ(%ZqrZG0F5UuAQ{wB z%h$mLnNf~I2Y(-I69dY-c)VKko50N0Frln-iXdoGR+l}w@Ls$tIe)mr`;Me{%4h5R;no?JToC*4o*Cpo+dh1D0j*Dm+lTdhakpKPd)CCffHwC z#s*9jYC{3!x0!X!0UE$^UOX9Z;XB&EH$&E=M5{X~bJl5+`LT9n*0~53>ztgB6ckHA z>v8aDF>`ijVh%Xyz#Omvd8t)n8aksvY$9gXb^GGe(5IY+1|owR@tgQGB+^_9Va^>| zx5! zmu#4ItjM!694jLXKy#_$lw=Ur%%y*1KCt?G*DtO9z68C7VZI7S8gaH0I`?rnlE~gJ zLL;EYi}UvHKw_aSCu(#AC-p-0f6`11Roa?Ft;G40?M37&7s{x|u1%nv(q8f; zUUw4js0iK2g=PjGNHgq+6k^tC+SA2v4(zj^LuoTOJCLJhoI(;kk|HEP22W$mbiXMi@met+5%SSvy!vXJL?qd)j@3{z0hOC75U2O= zW!JzZ?L?n02{orpdaD$(!Wbwi&@#hg3U#mRc^qohVT6(K8@K0Mhv@E}ZqZ}TOb-tZ zK$Td9UCJ0qx8Ta%gI;P{mcWm_?v`@ou$H~E^GDAM-Rg3YXg%aK# zd9y7VS#I%*E$pzG%~kCUlKmeq@+aq(e|YU!;lic6W1Zt?E(#FC=F208FHR;WVMYrQbnhLEolO_>c5$G7p(6zk|Mg zu&1qM#D#d0zCG-ypQ>+HUlZq>|3=>?%Kxdp{q0o2ftq7%0;&}n{FuId-T<2zo$1?4 zHOypvTaf%W^zCE%b*c|r{q06mmHWSef9FY^!cW$>->VX;{FuJY_WXa>x24j5Ti;%O z;=k0lrKf+QzI_$I+VUUQ@X=hr7^1SClz4&CN%vnZBs4rWUtytwVO3FPXe*Hf8KHK9 z>8?PwA;gs9Ge>D#ys^(&yuVK3(j%y#rfH1)mbu2NIiP zi+U8p){7BaL2+IwXnVt#P3Ckq8A^;^%t5s5cMOBGJ^m0IF6)dpahl0=EaH!|w23|m-OlUiNSA(r$4RJGj}AW{~?|}o(ZPo z@uc*dcP(1y>uz35K zfc7V)za39^VkLz1>HLYoZ-}Qqt-321*(`pxn5FLk;P3!r%UOXKNx zFahmPN*@+aKLaZvq%Y!648Okd^es9)9~%$PPfC9~p61k$JTCkDSE zp8m8>&%_3Voo>lL7dTY8r&#j_O=ay3i$p&X9b0`jfObyNY~gpD@56xuhkE9lZ{wyS z+iuVGU824wkUzdM2DuFSS{0Q4uR;fMoeLkpOpSptbk(;ARkzBxtG3z$+|pi+?t!^6 ze5Z^^Bg63Z^qHgcn?rX&!@>3#bb%0+?C_n`s+&U(Sf8C6N>(y$9!`E*4H<1U}&V|~3v=NJIXS_V1m z9>7ZsxjSW*rB_z!>;4C#_0f6VH6A5x^D^}l=IW|uU)5G0oR`qHG3`uGZ%uB-0X zNJ!_xmJVBxi4a2j-;Ub@t@Hbb8W*Jou`QI26;NaF)A&M5(~YWm3}4*V9LM)FzOV=C z_weXum9UGZhOfYGyqYZ7SWCR5R-J%Wb*zm?UPI9=XZ;-jS%x#o;n77N!;={v?S}ia zr{|*4-tbEDsB_u4QO;$fy%HNW6v-6cNeeaYHJTQU^Gf{8QOmOdEwT{*_>2(yzYMkt za$vTvWVN&YG-4fonF$;czG9(OuvZ!UE_~sI>;NGF^lWJw*!tR!$<`6DwL0_}nObrI zq_gflSkpW79-M10z1-rz)-;;hF{NRdmK?!$$&L{{Ql?<69_jy`?j9+}pLgW+$B;G$ z|L?*7zx;VT-y)PF%)a=gW-jx;wF+K(X@V5_m-d4ekPvGPF&oHQIBmbnZB2q})^Exw|1ZwoR7;F8}D^ zYFi$lWW+2FC&UPiecjD!8%o6)=|8tR7=RPEIy?vx#i9NiRtM5I*FGO0mZM>pSX9Q^ zI91!%WtYoXR{+Fa*=pc4XEAhnLgoa!+dpT#RQgci2!8WvQk~mn*x%ZuhC(^#X|%8L(P!L2Qu;z`Gku|T_`fyRQ|!&l zcGj^+q1Ng9qA@=p;LWV7G2h+G6?{oc5chj!J$V5-qxg>LfDjz5Psg(Y2XsqTum&Lf z#vL`Rz+C7?bzluymWf^`=QLdElW72wy0A#FfuLGQg#2duSqO3CFW3NpzO*-3%B7yf zilr3+ir^=WICIzu+obNZ8bgB}wl7Y^A>eF&p8$KZ*SsY+B8CUH13~K$U<2*Qo;4Tk z*!rz*2VCy5KAaG5M`gSncaJBfH^kGw)aky2^&OAc zgbri|$NG#VG})HX*#(ZAPG8B^fE=n1hsBg@ENMeBlg{-yL@zJd8hqbp>Q!^NmZ{6} zf68iPNe2;DW0NDiNXmv6#Z&EpYyHan&hFsd4}9PT%<*C=w@le z(5LimYd*Grz|e4`+zg43@1s8_ce8T}Wk%4^*LhtWx!E1JcZ+n@_Ks5vV*K1+^K*5Q zJ)?U({bik=o50Vk&fY&TZ5cNehgT9r$87F>&8fkD z=9uq8Z9Q+w0f|7_ZXkNF8)nH~e285VE_*)gk3Lv*z|ITx=hfyA>&AbGV1p)wR}#67 zb%-;}iqJ~Q7kCDOCmXq}b=+w9DR7N&9|*6dNjQ|=2@os_-1uCEK~MV_mJ}PE^%8+N zT*HLJDz(*rLHksHkCZDx&LjOlm}x(fCxW#4g!EtFS^ASh-}cv8IWFF*vPqb{uY)i> zB7~;PHiES^xZm+cz8?31qtvAjalktUJc50Mo@(xu^7j0%5c=GZ{x|N_8$TBP;21|e zt~boL@m)X26fPn8M-PI;9iF!e1PXU}&KjSnY+D?ku!+UZ9m{{-bCG9~_R!r~Zne+x zL|ZR?btkkWZb*xxmkPbiEhBU+Ms6f{bm(QWXNp`M9$5gKWGdJbr6+W2Hgx-iq${L{T+sN2RVD6G2lMvSJ+WaB^i7BQ z1|33;Jzby>Yy3yVYw;7>DC};P$cJK$5?5gY9`bp8qp`_(7cSHejKE?;cQriDt(w#c z1$v}lA6OF0%!@FI4n^U_MdfO<`aT>A{0db#fCI!(G+H%P?LXY6gCAC>pkv@U!H+ zR%pk#h>T$dVAn82R*HPY!lOuw3y}@>w65cQ>>Ddc_;Fg-Vjj?_Xf@sX0-02h_@?D# zcj&&Evs%Go8Fswfz=-};-O7H7#omq4oLJ7&q8trlJo5dDS~6dWybG_ zo+_g=fUzCbV6O8xOL0LEfS^$2ua8`)4x9If7s7lC{~l01rjX%1+~Ivk;ye5&q#M31 zv$_F+vF-a~aimx+?ul4FJ=8@weGIk3ieKKM>Tl&5Ij|i`8)~3-_E6s>=Rg}=mqo5b zHk;D=H*r3!iPfnF>T14#@sQPU=%AYswL~2+HQBe#Tk{<1o2aXuYgKENP@l~e#9lSd zPv?*-?hzrOr8FioxVfT7j{fvV5R%sRs~r9$gvG|5}t5Nq3VNQ6_^64G2)y)$E0)#I-4D* z;DLW??tI|II`6z&>eTfO)$nlV3uIMy8AKB@14sG6ve0Ug9RU(EeMTAL5jNVdx=9xQ zkI}s!J5yr?0Lu9zq?zg4pw`|b)fTPR`PUsO|F5k41FMtr-+iR~BP9QNbxkt-X-CSR zW#y0ILw-t#4|2LLsEt56D2U~xJFAMbc7=5oNyk6wJbnR>26>i)*lrG3eON@VKb@b$ zzoNrgk=e(=G3L;oe$8G$~_CB&#@kz&qEcs~1YZEVc9F}pj?<+=2Fa4M2-D%C% zs4N94|MhuL&_7$&LlU;kMLZubwPeZv;Jo{cR^a%bpLg%4QR$2y{^#d~A0n!UamP`d5mw2@8c=?SbycLs(rq=X!?9GwqAaYVog=Tmc+VAyKiS zP$b!0gn<@WM{*wloLIZWh$wRH$K+X!M;iBI@~n*UJ8(xBYClr^4x)kBLc0Id1G~_i zPR_W$K<2C90v}dRct9K}h6nNOD9^UL1y2cq4B$zCP~i4+G{$leI;3* zt?2OHZBugkB^}Qx}+G}adTAtGsuJOjKWacu%N@N9^KkI z)K<->me%egmLf5DgIT=@w@ToeLI8=!W!?ne?R;oivRrYg&mI+hda8t{rQ(1HwQ1^2 zTs01Jkg@5$(4MYoTbmA~sR2*mldLo4BGtRtQk({^K~)fP72M`&VDxynJuYq0ZjX=R z)f{`DM4az^x$K>^zGQcN0{x_a5H!Mt{ObG>(m$jbrk$_2Je13|>Z{s~ZKFs2U z|AGG7b0~0(%@sd69%Mg_N@x7=Ki7Yo#&pIVKSBSEGs$d#iZMyjya0Q~eJ#oIKGNa6 zcztquIO(1IWr-5p6PV&F*d=Gz+f}b(E#_f=z~P+UC!sMM>#=dCk2tdaM0i@CURGp5 zD$B*#&5sPtu37@d)VFhK*Xw{7 z$WBkHucG^r>f3j2GXAp>wmh-EH|_K!cuP+ecsmmDM|+AlB+%b#zg^y@Phm3r*&Wgs zbV#4nA^pt`=|k=GB>Ym&68!ok;sgBVB))6>_6<#L|2|x^mDK(Y>C?_lPG8m`ec6cQ z^tbKM6yS47B0l7Y#CMI~B)hytzuEU^h_{h_|K`vR>B}BWPCwR8PpaSbrwp2J zJE`yEbCT&X2|capf&A@>_!0k&hxPYk9m)?Kyg!Ma3p%8~S(uzY%}!6kw-C8HuWzWG z-=fcgvSfJ2c1ZuYGC6(U*;ad#>dU_RNcFAjG=GgA5BDX~gY%hQPgtfL*;$cI&{_>- z$j(v(aYq1X>N629;=)0L7@#KNo^-91Nlbie-?HC>;+s_WITRQ<$4~FAOmj?XWGB9a zex4B+*f0%G(6VlRS!-F7@M?}-3N0&L{r!SyG=jSyQ5N?D(jKN(PW&E3&6$eap5>P@ zscNq|u8Rt-#g-)2Ixuv*0PS+5n-$X%ZUDRzdDRsF*g6p&7^S=m7q^nNs10xufU+~h z*oqln^%R5=X9>#aOt>9EMU#X1G={s>xIbCO&-zAOs=Hf!nl`GUHdZahx{c~!^S21o zy@s+FD>t|h$;u7#vrungB-kp*q4s&eydhSP?ojK0FDh)GxQ@Hg#{-JMKSjL)3nziu zx7H=@f7LL<&a*5)jwjxYsqARUb9uXv%rLA9zr3$GDeOUDkoql-;M+aOkOO1|mnuMo z*8bGfD2VcV@q>7@x8ILn2~5kAgre1>kZQe$`R8rr^Z2t!+CVQpkHRxHd@xmAQV63t zw}gbYNYhKTRS!tB@4-#QCH{gho&9S77DZlB`6ya$_(y;XaFw>K9vaoNN5MZigIa17 z8xYNz@MTLcd3Wv>V{L19Y)!N}tohgv*R3J1sOLx)D>lTH`tXB9^|$H&=$SG4Kk?fi zq5lcM@<{Y=1itDr8<69acP#qX<#Ba01k2{#+zNB!guVn*`r2qUzQJWwYRp0a)hVy5 z0|u*i)-6LBE|{>jb|KopWOXR4)Bb=o{bex@td<)mY47Wdx{CLYL(LO8w-P~ ztqdbnglO>JT){7Uxe+*pY@c?Ou>Hg`BR$V+o}a2Owk4bA^LAVKAF%g-m@K(Y=hBRQ zhEw=79dYC!5DSMyiH6eyIf~5dQaxduKg1H{LKLL;(qd`*|Ksk<0~eUlE{h7JTlL`4n81(#8j4&Z>0&(NSkyF~%(+ zKv-mPM^P3xDz+@j7G>%0d8+R1?gUWZ_np5!esu1wy0xBj>eQ)Ir%n+A=MgYfiyF|v zgv~s^S)?23*!nm!-xWMpCoZ9M2<=Uo+){rll42-7|F&WblMplqJ_^R*6mtgi)LG<- z5@T2%tSTx_)yzw8McO$?TWl7NK{^hZN@Ni?%d{RHL$cv=h)-R|79Ee0=w$oOn|4Q*w~IU{>ENohqwg?K|a50AT}@=F}S^AeFK>T%kf$m?0J zkVhx_=D(}BXRP6HOcwByf8o|%4_{Ipht6O!M_ zZzKhbWuew!#gT@VUGtI8z{KHS=;MXt{pMm5u)-zdjioOCaxLu7#tOSl3sn7SR{aT0 zpLpo1Rr=4)l>If5^ONlTVBYqkI^Hc{R8pmkonzH@-fs&dJh@NTrg97cxxTg5AC-2g za_avAWw&!UW!I3KSc4W_11^mTmCn|^Ijpstbv;i^HxX+=EXHn!+P_OvHNzejcDy~Z zVde*_zwcd4yO^3z0p*;9D6{kyB*3+=@e9#!$8eTt&4aaEvzN9-j%IH*AG*BZ9imR` zc6aX8s!Qz>7y!EDw%fvJd%g&IB!olxX>{aqDw^=+n{0yL)IUQjhLC>g80B2G8j?7gJ6!yM6*-3utsl zRctfwtuzPD!np4!Hez^6Y}lY!{Z3-jWj%n08zqSDR{6M~2&_|_j|*ZrXj6<#SieD+ zhDcgir3%l+RN9M#sDV=Wk@-J4U5$VvnLkJD!WMnI{7_voe`G_O{E75FTa}?3g&D<^ z4(UdNh2T;;+%k+8SX$fKH9fk~@;qpKB>Ij!Kof)6*Hh3*y}(0cgZd8^TFLq7 z_nOd0HNh;GAQ-Qja8A4l4=g-12o(Q1+OAn~tX{C6d=3@Te)332jp|lOC;6^F`b`_& zW#KOesl}Sp6b&RR)PY}}ReuvcfIQ!LO_Aq42$}<*0C^q|T7OBNzzfx=FfL=q*++Qs zEtTvRC)-x=w$I?1b~!axIn%6ijD_Mi+zkXOPb>zvr6bcnz!fWzjvVkIX`?R{x2iI5 zKuP~>f5Lu_>_@ulM{(|V(iuZ5mG56ji+Pgp@Id}(H(d!SSV3t!dp>I6^pF<)C=f1p zLnoWblpV!^uTo)ZU!GYoE~TPVAio^91WHE^u>@aR2{>v%V$on%AEmg@#p@u|NCz0B zzwjnT66FLR6RfK^%A$g$;z{JSqH&98Jw2!a(l5LUwm2k>5GFs^j9Brxk06R1%dI+> z9-f2_7iAh9!p`ux6g4COJ!|y@Oz_Z!&4U$v?1qPBXu>p@pMV@l2Q46J3U1c?r@j|U zyCsNCOz@OUkT||yR;jQMCCQ0@U7IlxfB0aDd?yZ4U$2nTh@>lvY=Wt#3j^ z;XJ=1M!$K;ATCg?(jY!yW(iV)DM#DP(lRvfJX2rArj;<|i<&iO<~5Z-dI%Venz5W; z(Qb!WUx*2`jnty#rO!^X#)m4O;>q!{{A*D*tB92!K>1iM%R&xO!Po68pg!$C8F70( zd%nJ2)dqBPjqPX*~hC!=OU}sY*%#^O5}#zed4Ws@oqVmPBKefY|Ga-9FUWf>^c2G$(?+F1G8OdQl2B& zBi8&^k(61EQ_Ww&E~@mZ`PTjd+JA`sFE^>P)Ggs}j@*Phx+yyu{v4>Cij9rNkNxgP ziV67`Fpq>VM&`N}R40$Qr?bOnR8Q0K3^*5R(T$<0=nz)@o_o_<6uJqB2kufUsrkDZ5F53e{M z_LDU61{a1pWbksMQ5Goew|;%$5d0;@F7XSnFC0Yeaq^4s-!`ff$SnLHwGNE&n`W=X zMzgm&k%AQ-2sAycQ_9Ez$7UoLk>p6(q!3$|%J$p*=z(5VkK5W8lY~X)t2_S({Af7G zcOWZ$7~DdR&@QioV$31VSH)A8-YSnGY=STKxoj=i)DaTABjwGIqv)cAlx*A$J{5IU zG)B1{ z5T7{<&w>Fd_he#$vi)DuR-+@}UQY$0*z+_lhd##`km9)mmsW4nTtl`YE1PEqQXN&l zu1|G1CNt+&m9sZ<@+wI2E^_MS15)(zuc7RPb}er*_9w*{bT{da6qFcn?(li`=Pskq zcq$=`uk$-ppk*#B>y{Zm15i1|=;q9?fF)_D#1ZP6`7VMe7fy4r@Pn}{fnYw6cV!wJ zQF$7~h|%N$;L4}V1k&p+)O$H%f7t;NSj|1ij{%=QAl+4cC*E_{C0&~yn%W)w<_<(X zhbWLDmCY-V!&SdAeO#C30qJOQiuSWgkby39KcU z$pm8OEtvP0!TMK=E-5b9HTj>B0eZo%U>~E|v!vL3F_kUwmw$?Sr$8vc(dd-{Pc!TX z;SixZ{aM}!%nM4F*J{yoJ15;byW`MU#?U*Q|5-*2|p~KrFNVqW5nX}z zk@7t`xNw(2Na8q7}dtaFuH?tn_x!P^;f@7%B=-;cHV0 zdSh@jcL3Bt=X(Rr-S)VV%NcYNt!Q}~@CD1TCcGHbBvVe1FX)z5av-^=d@a*ra98Aj z0hy&6a5r(WA)v+9jBVnLt113uB=LI6K|Py`coq)hvA`FelrFMwibks@rNp>E-ajS( zxB`#*zapV{bN-{FRmfb>EUT<~R+c$}WmdDyER>lv zF2!oLOfyu~dl%F2yUL?2LL2kf1Sn;jn4}E?b7Lgk;KQ82#0F zk&H<*_Jg{81;RC?71Sy29;G;nD|8NuF^baJ*7wk(P^(im#H(szd+Hx#O%qTPI-34I zRBG4(`^+;bT{mZBk{Y#w{b0xYVH7XA0fR}C(tRk=xlKc1t{MA~TQ~1lWIJfGn0Z4q z8g}-JVIob{bQ)`VhBb9XO>s;x9$jX8>YwH3t&i`F66Gx`WkWs?T_MxrjF@DJQB+ut zRCOaRyX-QM$>crTjD?M&w{wko(WPiLFeJLRYruYmmlIe66bTM712w1yVEZOj#@8Vp ztvC;9B17RT3@YD2J-J5%H_wx?$H3 z#~t0l;oJtaV6U?q8R-NFtRO+(Hbls?!5BFd*T+!2r_DA!SEyZ2dmSp71OCYMc-($X z`L1@OqvG$~V+_KaNC_TSI)FiNRq}JF_4)~C07vU5Sh9Q4i($&{Gpc6b8E`JsqMO2# zGQ*R)=SHdCF$U+Apq)d&q>WZ`#`cGo-EvE|i7S{X8zQUYFdD81<}Y~E^Tf5d>M=40 z@P&%=^Cx8l^YSP44CWH=j>xm|Y?rBQw=>(X%$8+mV4twR0>`eJR!Tw-T|If$BMS)E`c&hcmjYmmZp)Sr?=*vqE z_O$)WYtnx~<+#pzv_XqDROUGqZ@C77NrG z4e@hR!@vbWOdB6x4^$s%jfR8Q1JEXAicc!I@*9*>FPn4fXKc=(9I@q@KUgZ@ehO<{ zAZO)Xs+!#0SR@CG-vY+Z##Sx~TyjaEhB1#{a7}>GZLJBe1%>PRcVbPz?G_69qq54d zP|k;AAqeAsV>JYM%FA^aCR%~O41y0|Q!-zL3T?@Jug~*6q;aPn?ps{*oonXDNKF}h zY-nmaWbpS9^kXDLvT9{Hb&d=`e%)ml(-gf6_)Xn+aWCR9c4{c#!xa&0g$$Z057U1t z*CQB#%>y7@LaH2)5jiU{ktv;jTWNjZ_kJV}UE+W^&QXqAn;|*v)Cv~425+y~J>^Wj zd_A_Y(MNVCngQ0h)#v#k;M^OYkiu@vx)>ukl1lyETWe10xpW;I7)~*(mZ_Y7CekkWCfVkBsy=nEU1OO)Jn5O#PX-`x0 zXG;}R)nq&a&PJ%1jN)uCe6u8z<{--aDSUNC__8iEoN$XnxVa-nC{rqDgaU1nZKMkYf!iUg)I=v1 zt6D0a3fFOWmykzV3zx_x}C@?MIov$6*(<}EMnt-G@W8gx@jRS&`FI?2wqF9{0 z$LRHPz`$OpgxrDKdfa~Kt-VFO;K)7H^x1fG;1EkPWnXDZF_<$8#3?!3e#Y4cpRz5* z7DYL?_yHFV;ZS2bozcWfgOXqc3u2+q-yOaIqN zw%X`=59Vf3>jna$;D=b#<2FR(E)#EL6Q?~6U~2%Oe=>ym9r-bzKmX)G_O=(O^87{v zZixsKEDRnYy<)&5>)+ZD!n*i#?GkdXnkwhj&-s6{zFIEKCx;VDu!vu zXYb=k`p;Hi83Q}5z&i|F4hugf`ws(uvjR^s@RAjn!@$c{pq7DoHN#WKIIGMBcG z|0grw1@ldI>dW^Kc*Y8>L;%&Ds&bqYE2%=2bWr@&Ea^F`8M9f^AgiPh15>QPcm_7X zPL&nj%)s@Js=z1)Zn6SH82A$1X0k#C=GCfX=QA+Y3S=`d&I%mQKz}Q61OjOOL)b$G z6d%JwL2*IBq2nJ%ym+fg)$!rG2+Xhoix`+?1>R)fIxFxm1W-r0s$)#7j!RV?x2pKD zvG@yFNAXfs$6r`drWGh-;CL%AjDfAqDp`L9&b7YeGtk`%oQVKxKSkBD@D;mTI zRs2)2crWX|YNe`s9BVk+3f#!RxmMr`22!j*K-FEL%KB@pteyF?O$Wt))h2#QEd3%C ze~&6>dMy4$#EWB|R&CnwHUdBXLj^u!pr7?+F$1MmppJoZEARpXyRAHrGjOx@W*M&KjUh{=c- z18^3Aeg6+jy3z_f#Xw1g`Z9-s`BtEofpHeMo5a8fD{wmlcUytc3{18H!x@-r1qLus zXaz1r04=^swfMGJi@&)*#^0*qC&%KKBVJr)W!?`Mh&(Gme2S~Az_$!sV+B5AV6+uj z#z2-8cn1O0ewM1`;#e)$tJ?di_`$LG0Bi4SWuD5Cj3XEi+$O;T% zAk7L~i~wqn{##-zBUZ}~=gWAPs@-kJQvzsNj&E@xOU?JYlhk~F`!YozBUs6YR=}?+ z`B7C8!9#k|5ml;^&s6-kvG|)2FTS%fcVS7*D^#)3Hxc;K`tl0`X#1Ng`#Z7hXQ*P| zR`H8s@kg;((<uw#QX$I3NQbU{f;Wtx8A% z^?+zX@z6qGB>=71ZHF+UAi}tqfh$4Tp0NiM6s6k%wx&N?!w%#aBfG%qvUCJ64h=zj zs`03w%w9Y)osGI2jY3_p~!!j0>qZYiNhwPRI_t~81(C1Nh{}!*$iz74#SJpeB zvQF(vpSw3+I@af>Ki^K@ZjbNTb}heRFbqQ~t&Xld-pZ!Ny&IO|i5honxJnDP+}%*T zXY0*gX{Ffg9VL4g&e6kTq4gLGdzi7A;jtsdkWy?ysO`ghs5XWwJvpnw0%%s^&9o9u6uiOsGEbJF$5kz6uXAV-J( z8@f6UJi)X&vrLRYf7FN0{&L(v4(>VB=UU)9wj6&0$BxF|;m2MF3l6>U$7DUa(B4l$ z3{#c)YWc^tpaBLSjm547%kjRZViTjweYGe6FR*DuOUiXxQzmuJOMOmlM?Q&1Fw;6; z*$)V<9M=ifBG{bCcT{Y{2_<0r4Ve^u=T?olX()Ra^r9D5pSd+!Chk!2=$)zuTP!0b zs*^e^l55M{ZPUnAVnjcsaR-RO=;hvqwdrE1&E$PlW6?Izxz)l)>K9MN&a;+DvrSqQ zj>tBSFbdN>gMlL4iaUcFAe_{I7g2_Tf7C4M5-I)B%)#D3xffXIkNx!FX=P#!3J)09 z$S*b;iU3K?i9h}%{22=1$8q3wNcboDYWb}#?7#QbB3rFLsaC^*1Jq^#esFqT>f>rV z@*zBeM;->`ugWxoEs*cD2uhmg;{d4J?$loSAvi%+VO+zG;A8njyaaN~IFFyUCk;xt z8lW+y0G?WLTS_|a&aUViFw&a)4tvFI`GKV1^#_+2(p`sODRC3!}RYeCUy*Mdo9 zjhoXuw<2(z{ZcMp*i1uDHv{=8dVXiPg+mVs1e!}6D3Js0c7;^MUPMRLzbj<_6t>6W z2t79R0!|=&3AU8_pgmB?f{vYL;Nlc+by9<@hhfhSvui!`(Dc*;r z7KJYhrFuA+m;B* z{(7Wkf9Q7+^3gs;7;H!HY5q-1BrajJppIL=h>|1r&Zv#+WwGt;i4@(B^|UM z>>eKp;k0Ovr1vB3o&?(ooyEitWb5m>*^19!csO?;EbP0lHK`dmFJ zEi`3RQU&g&T`3AMxq?@YKqE(~n78)J7$0KXQ##5m$qS>_ehPE=Q4pW66mky@T6*dD zO>U$qRlGY6GmCgvitfmS?Xr)Eu7gt9$iY+LN9{c{{GxDU-9O#}fKKhIf!|Zxk6kOZ ztz5=!Wgf}T#vx{Da{3pdA#`^hEFiDLYv^uRWLA&l+tg8xU{_Jss`zYi99?LVygM9p z5Nq=2zSyi|=^Jrk%UH+8xZEqo zz{$hFX%Zh2AW6ODc5y_nx`c`El2|NOSiIq2Y(08`!j@A@#1{LDeH1r0Q&2R3mjG1Y z_EYbHsN5STqQ{^JjMfzN!;NjvcVZB_1RsFZ7w}tP;n3orwtuMv`(*9^$HC<7txhi&g*vINl){;1urt-|putXP>PSa$nZ$0*x~Z!o?=hkR2PIdD-+m=^ z$SZ2y%fRTvUhl@F`%|Z)c@uC@@SdEBO$N2NP=M&PhAu5S*p*ggQSu1KT!8YUd z7)8dl?v_z_!oGlWzK#O{H{%>1M&PXQHJL3q-Gb}LaEJiMcm`zaa8A&2HllE#{1iN3 zFT3uA&W_#y$$b1y!!HlNyYPDszb5>4<2xjNwd?0hNq4r}|NCzR<9m#0ZMGD>m)Fe) zRg08u7PeDAdN}5GU^c$+Tm`*bf~e_HV;O(|Zx7FOO6G(>ukv)LuEV-q?i|0gkYe&$ z?%tgY#mD%^sra}f!Ar^zR@S#GwtyGP!g+XB2gtB@2-h7`uxo*=1Ce!DV%G80nG9#v zeO;i?!r4G<^}@WrzLas|RhluDRL&im8ow|`HhgMzXN~Ffe(p^Xai5KY=;huB%%7Q8#AQ! zJEfIpw*s0~i{>Lkf~^mST%x>^gU`a)A^|UT9O7bVP%QAl9Y)tD<`H~%CV-EppG9kD zRj)L1!+iy01=luV`9q(wpv>E`Le#lv!%i;TGptDHa3%7i;A>E@R!6@o5zIbCnK!yF zhf$iIZopf-KV3}tk>fzBYP=kfRtA`4fL{RPpGI~4$^>^ZrIdF~` zgvJtBAt+ur^{4^?HreP8l)h~GPZ9`Nq-gLG$m41$vg>&;#Oh}qS9=--iv68r*QqJP zfz-_ABoLpYnM)=V&NCi)P0fsog_M5qR8>AtS0GJxOaDl68-G!0fAIZ>h-_ahf7(xN z^DnW!hZ=Llh4==`dI%G98e_*!EN+YSd>$Gn9#rW;$7R@G&ykK!l7DHJPx=Z_?Y~i_ zw@#YYVZyfyG?F~Y6={Z+;wenwetLi><~wPI!;@42J0@?6N0ae(`u6-@&D?2r`}=v` zISS?g#upmwD1X5P7LcF2J_lAN$`^qq!l_;G9m8zPqa>gf^yRHgcIbx5ToA9}xQCT` z*B|iNqT2fT_)Zd`+Dr87Nc=_Mt)c6}w~um!v%_Ok!V}ZOBQYxy7~#SU(X#kJ+}Rz- zC1F-L=(=@#JlXS?tQ`t4J|6L{1IujaHm!Z15Y4w7i~K!K147B8AjyG(?-cd3hCEUG+P9hklJ#Ow^4% zq5U{UHJ`<;6la}8;#n$oJeQ$!5THe_9<%B^oFWw%R{oJGf`9I0i!xA zPhwydbmf3D4o`jpJ4cQoh%z)Pihc@+p1_taR{6h1ew3)j_C&6X)lh92gtz*jN>qkK z%<~k2=D@$BXQ{%MisoU;F5~4SNBPYDr9jOPBov)+d_B??>r6G7AAdbTLSA6@=!@@a zGCxJ~jh0=Y_%_20>yKelX4PsP4n`mVP z!NX@H!7M3bk8)iAn4QM{mn(2|L@(;G)eBhM2UzSEc_~D3%MLa}Qs3)xBm~0mNW&@a z8l{?dCPg}k1Jgi7+p(|+7!%VC2XTajNJXkK+C>?ZU7U%ODv~`(BbU5oVnoxa#UAxM9H= zh#gZ##`KXyk=63;Sk`jXp2bq^`lUw7s-NdEV;_)7oNayJc#Sp{te^a{I>m%eoQyVx zTD|hL#nd@+59wt*>hDETG2%8(XRF15Z%MW6X~`Pi80BD_5kGxQ5>D4-$jpCNnO|dO zib3L7EAwb1LSnsqtr)>qv!v2ztc4>X5@D0(X~N3h9G*H`{Oh|koNbslA0L$C8MC<3 z2em|Y0M()!l;VJTx42^<0T2XcN@mx4kzDk84h=;r6>_OiCEQ%$TM|OrdjzONlxPH5 zWBuQ9D+UqC^J;tn^SSha3`fhT{no(3c#?+3m+R(>S?New*9wXk-+yC|sMkzuMAfVz zw2e1La%>pS@S00`278r{LyKPiy~dZCJUJnL_y&r2oK6HqaLI52)0!n?$!xc?`0?ND zhLh@-$`}s^jwv`ookjBQ&ArIxyx#3tF0K3}%aw%~WM704JB2?0IDh2z+8`ZZW!isu!~Qk;SQ_{$H#;FbwN{v2^P0YBE*am}P$Z}*2CQBAniYToDg%I4t` z)Ob}Q%c|!od`0U=uR)iO8(Fb`0JiRo2VsPAc${nkNpDcfF`h9KBJJGvr)|geWw!VX4g;eqx>C0t`?r` z;`PMWZGg5yfThW8@ehyyqWjl))OSP*5xNPS0taBLO@u-PnACV~5&KATDudodO=Y^8 z%HG&P-bE>*qC2ZS8fj7Odnm4j#~@kZ&+FOy!5KIN0?F)TF%z!oJP3&lm)jZsjSSGThVoKW^ZKaoLuB)&uzAW& z5%+EeV@iJ~>p7VNlWwNC8|{ycWDtZD9k4WjxP&ty%~F*q$)VvlwnpUzn;r!DiW`*d z8mBOlQ0_;7oa*3HK04;#7|CJ}k5CQjKbvU13w76Xx%(E*t#cZRrIzu5&nVy&NZ`F+3@C42Qn7U1num@JN$7< z{P*MpT&xiCrAo5^X|y`fk)vg;ObO})shozS!1BhU6}D^d$J3^b?^VtRkQ20VYs-9u ztux=Yv)MI(81My|78+D>Mv;;ts$~V(8l{oQrRgGh6XWledZ8_<(930W{)#{(paYw= zj5azG_wZ#SMZavuS0WysJQBTKrhqjVt&x+6+!f3QKci+0xzv!D180k~e*9_vuFxLArtk~AQXx3SD=%Kb>ITf^1> z(~qNnq18#KCyY&Pxyw|9U8W*8en4XpdRml+AJ%h4I(`u1i$>yChTjp;# zyl{wk!-Gr~kGbkGUp<~v4-OlAt5c5#^OjFRRk`H5AgUTl##x%lC4_EP#s3Re~ zdMc&DeQPD9?AB6};3x6qzkstrgOC6_lD%!8alJ~c8>xSP9@H)mvQ)S+!$lxkizTms zro*Wd_z8?5!MziXpDYy*y~aU+%T|r9!;wTB^Mn+6u_E9hy9=nV|84~%TMH&$+zg?+foeII?g5DpuKuf~`UQEJgW$n6W>pxXZ z#jFM#_d~)CwNjc~jCZ&vY`_EV30>7($cKK522=7gDo!&rH@cfG*B#(6eP>u|x56&u zJ7Kbl6<9Od4!CfLKN>toLzXk_ELq4Rrx~nFJ2TTvW_mCoQvfsV7&N$ z2#zjV4^+7AQVtlbI2~nlVi|K-#-%7j>5!>&&18JtY^Jt`AqN=?1D=IyKhU)xqtLaW zi^KCF9A88mu+-iH&D@Q=(YY@SrbNJ0yzUGs@oDlVO69s*p3Yvu?xAFdD54A-qNDWs z2W3@V^AkG8Ls0H#*s(!7<({`pi9<+!zz`w?gK#ZrXI=ldI8634>l4hHfvh%6Y=`Wy zSM|cXuWpYigmdh7ju*_uZNuTAZ46kEzKww?!tMaQ1v4}Lu{?xhC_vbYaAJK}wrLaN z>F=v#_rsF2G$H?eWGV=go5=8d6($FfVKNVVC)beS1{GGEf&>OeDeZG4;&1&#%_k5j zlA;X@R3EL zmRs#w3gsf3Vw@NtD`;Jeke@8JiKFh)HE)CVqKzI@cTKH|c28C2Z5>Nj`Ic9B_oZ zXc~oT!;>)a6oXea1bcuidHio`7xJrJ5M{BVf|?jBYxW+KHRhlga1^mfdcpZi>r8UP zM-o-i8!D`a!N}ASLt@EQJpnXL5llBQyV;mRzt<5{E5uQ?F-&!sei%$0*iLx~MNlb1 zGX{*KYnlMB#V-?6Yb{Kz1E#p~C9ZizVhZ1P$1v45hJ4}%(0Qvy>O^s`Ynqsc3Rt%6 zGU`dFC5E|IkX~YLY&kIpT5EvOhw`wA`x)-FFlS>5H9Vnecv@mH@<=@Z0TPg?d0KtK zbw!tQr2^usOlR}o@77qjwdcZo*c!vy>^yE5 zax|VRhEA6Vgx0F-5$KiD5uaNBnALWvneDeN&J8gL(g@1BivW+eN|B7z;T6YTXM@#M zEeDGMj{zO9O$h+ekVDP8CrT)yu5YTr;o)!-lTSy&s6R>*-(SHpxT}FJQOl=hEXSI5 zIR-JuYbr;kvf%oh10Jm;9qop{)Jmm<0Rh?>;T%8bKyhj0<+Y~a= z2C@ymr&n9>O6 zq(r}eL@#W%AUi%1@#3p3ZRd=G^dFL`9<5rVw#Dp&!5FV(&Gv-K(IK1Xs(u)+p}XDb z!87W)PDbVP5-OKsgY>0;Eh>ks(J~u}c6(EjgFaA4hRA#plvuu$nt!0s1ryxJoqE1& z+^KeHHzkzjA`ZEEERIBJ;6X6@hwKqB;FWPDmfPx16sZr@qL=EC)9gZi3B}>jiG|$4 zLO%G(h6nhCmjk;k8?*6~vg&a7f#C`9lY!EJpVB|Z51mN?ME^=?PY1S#>qv1?tUZcM zto`qms&1&q>>bVywY$Y%iZbUKS-LkY!7v=i9k`$$~MvvyKZBLp>&5kxO5 z?>Py1)7d0qQ#_BnwwMu{_uJF&cOM)MK4TPo+$ak0Df?si+=rCt$Vb!S_)2AC9%W;C zCNzdJ&!Opeglf&7q2Do%82!2dMM4Xe*CbRfkwfuOJOR6hL(uQY#}7xpR%t^LN|U2O zURXI4rTr28jsg8zg?w2Rhljjj;3YPx3kp%l`F;BJtw_X=W)TsXblqGO;|QJu62`#* zplCMh`(rE_NCiO6NNAPp8f9)VzQt};8)gThIW)eWT`pU95WcvWvH8vOe7BnGswOd1 z-7T98r~fx2gvOkM#*k9zIK~_}4;=q&5fKV!9CecC6iS}+^kWC%Y%F$cp zv9it+PoOMdY{2huoWB#CkyGqaYOGRL$4WU%T!B)44`ueyl24oeR4+Rm{x}6%_>+q9 z+4B+pWBmOMsQ|Jw(Lj5akc&d`{(e~cr|~D78^<4-4E&8zjafZa!F(5j z=D^2+zjK5KP2rephrjP0IUN41vL3a{YK@hZD>nS_$M|FWfIq90Q>;>cj+Jt@co?Pp zkMXyt`EdBFL(vxgQb_HyUq<+k@%IQ)0e>G%iQ{h{X`dEPV)yrU6Ay{M%hj4W$8OVa z_JWyvyY_f%;(Mr0Hm@Sn9(ff<;EgZ>+k6r!5>*fPAqT zvZP3>?isj{CEam|l59QD#}s-DXFZ?;Ag%_jBZ$3&Ntscp%z<3j4R-XI1a$&jthK=q zF5Ajbr7hL^S)Xgj&P2;7;QrdCSoWTlHt3I5f}(;rILLAW`1WR`L?*0`ijkk2%2{1=Lq3#SxrD1p5&$ ze%fRsSaAZ0Pka2^ZGgh;SGgXSJGfG@7@Pvx9!;45=`tB3<^fg7JqeXKS;@7mA0ij1IkX#PLv|A{ECf#yTYA+ zjrU68@Jd#AG%A$PJ_yh@e1|VQ9DMT>d_j91gzF_qACADE+_>4YH>tuvYRLnl~)}LR}gz#a(*5BxiJ<#Z|DE z1gq$1GY+u={!l*Z*z~ZKg-8P{U1+aiRtJ@0%|{b63Wn-ap}6yU_44ILN^Se=$qtq$ zy=?yo)t+3~v*4CVLA^naICmRBAr)!CLDc$x2%8qH*86Bu{!!{%Y;GN(k|>+zZDOjB zDR@*3n`h7$oj|27^h+}E^JWIH;FRZO4zt0}@dhme&Tr9dM$Nl*?<=|h>Oq3o%Y$cA z*cqq`7b;vh&&e&^g+HNqZfWsuEhylw#O@k+VM@hFn!v#QkZ#~ZvXRF^4PPq0 z{*{PZDxMk7wn^2~>Ge+nB%rMmp^vdeJ;}H(BdAtb05`vM zXEv{E&JuNoX(Si(Wgx${_xI$XCE|kjtdR-L0f;^uaUe!ezX&L`eT>G{`a7*%dT@Lz zeb093t@|458jwP)e%Godb>0~4JmoIp2CNkCjJw^^ z*s_Y1K=OE)gdlP0s^&xlI)MLn*>Ru)>~tdj;!Miu@3E!a)FS<;8{Ub$+6Ok~O(@k> z{WSBzMj%gI)eWWb4T=(R1neV#-y5Ku%%o}ANZKO6uO46uJ>I7%I?|oSmM}*e4iAH} zfZuvp1;9D%%%hQiT?M?X2Q_G6Ff0bUm*1Y-oi?zUd2f_Zl(GU!p6GN5k@<> z3>9~jtVct-00MM@3w>o|DR=jmy~F$y8}zx@ut&l2qr%q3vgj$#C}Nlo{sDic9A`@j z{?d1B@Sku~JMe36UY7~5f>Q|!GWl zf?ZXZ2)!HFwW>wzCQY8?RW6dlCdzAWd=-PZB#n2{o5CxN3 zVP+#1{T27Oo3nNzi?LmdUrp1gS;Il+aOBBIt*(rv^=7^1tk)0vkj4+-gkS|VyVZ_( z^Szm1@)*QX*TW4Mhw_BA)xMa0iSp#}Y`tuxp^fs>oE4)2@<>Cl*V|rHs(aQ33Yz?` zLRf(}iM{`Z=GGa}Jv($`edyau@De;*-ax>?;BORZB3)j^yhL|y)f+`Gz3~TU67ENt z&^>=b_i@hXfK2M*G0p&3W)aV`L^hoa1H&Si#Wjd^9$fjym454W^TjM3n)AB44uHfC zuu{5kF;W|^w}`7|HtcbH#=GzV3+^zSO39!5n`crZf^Y!461z22X-d;I@chPaQfLO5 zM=$-@l&`47q?03Vf&B%B3+*8PBMW*g>t#O8nl-7wgE=HAw6V7|K|-u%?E83|ZqD0| zPkMT$yYO`v-?2PaC}(A*FcsRAKy{2rLa_da4p_zhi9G0_b>1sFo$_ji5GD= zC%@pqFBxa7_ZbHe;|4BAO50Ymh8Y9q8*GVYRz&0d)xw1v0mtE5xYIx*&?^IBvVc-N zy;}In24BGeztM;p&9zi>`96VBq(AJ%DQ+JcQCpg#)#8Q^Oj!O`yA|eDPj?6XKOiRbp!cw&myvhjS$^`@3{qZanQ z0sjN%4Gsr;v5+@)Q_BT=${QH=^>UbnD+`-_y=u`d2S%Ddw6(Gj@#*Nn$l`+iu4%n6 z+IjpGW`b%M5G8cSaoKFRYUMQTd3jfqC#8+AT>UqMBDsx`w9sC+YkCw#0#(@ZFz3w2 zJ473tx||Ji?3&T+>pItsxaQThNPM3(hArB!(Fn^xIQaqcC4n=qVYew zz{E_FF6yS^`v3gW3bWKL!3xwtx&_-PHdfNSH)h{Eu*#R3;YfEl3PZls%#C_gVJky8 zGd0k_7xX?=Hbt*$WIUjfI=i_rU9}5#i<+cloKwQA0vaVbM{!W7aC^lwp{9*m)gtC% zhwsHr@KLn;Odkd)d^BT}O8P|yaNDN@l|yxaL`35!uA#-#3*aPa2`DW~()BX*LNiMM z^W6dST}k-H4~hLT_7pT08opC9T|Nk!jT_TolxVCm4h(b-KPAJ{>VYg9+Lp_+|2~vl zV)ne)?6Zru+OAcFOR9UZ#L7@KZ(O&+@ayMyK|COE%3R_}7 zw72J@;$q`d@=?T%L|niup39+#ARWJGt`%t0NW_#PrVKHl&r$?2?x$ampbueK^G?nh z?t?5~&iO=^q3nxIxKYs>O2T^UlEREi*HT~j&IVuj%DiylK1186HB-msa4ikry-^SS zSQ##?G?K#Sx|aGwEtR0qlyG6Sq4o5I@9xPs(!%m^VXdKE0(fP8_##_q1A0Tf%Ng|(m1 zV{j#~U?WLBcY=Y)msYI#u-cRF`^^5`LmOS5R~ykIc1){H$zqtiSgZAA zB{4uItknjxz#M&9$t){Xcm6E<0A@%u@B@S%4l#m=Q>|9;scRZmxiGPfGpe@SqG~He zB1s4Ja_p@czcX4tA0Q$hYeGO8^Kx#6geK=`t~^Xi0X)Fc_$vBbwTRL}+~780sVn6* z>pYyg7-tR27LUAQ3l?KWwUb)!1dI5BT__D03n*N@h06{qbYr~A$RS$b&W_5d8( z)ZB^0Rqwe`eloN)@^p&sDq2JN2E>-^?RaV1$S_!V5 zH@mw69<)kI0%8oBR8p|hRsB91TvD(<*j=T$#BT=rIdHF)$OcXZnWN5!6!xIqk%hQg z!72f#s^&S8 zE|R0lZ(`L2{(!ct;iZSZZP1-|{alLVAS3*`1aO_f>8z5HVW9jyITp?CU!%>y&OHvF z^Fh)iUem+(WN0opXxmf5a{(9xI6~^G{*4Kn8|pAC`aO$v4|)Je+iybPV&@PT8B`&vp=-gy-D^&Q=(r&1q=l86D$!fcp`Dh3L1sj? zP}Ey-H+U>gelILG2Q=!9kxOiV?pb$oQ^&%K#B$sjD+lNh61>kq00(oxy8TG(-?Pqt zGOiImc{+zd$6|+)qLH&W#h6afnXl=_bV}NM?P5%)Y|YmU2_RDRSbua02i!FJ!oUeB z9j8*pS&Kb$Mvj{Gx$FawUwa9Ylye7~o)<9R<0sd2S_q&R@B)He4K>1~4qw5CK1UDJ zW!Kmzt>b`;#I6N9agDtSWkeT7SP+*H z8H~sfH@`@_SIZuYBYi6Fg6bPpb3pWDjNC{OxJnOKXfa&hV3Ym)!?Taf(VUoN zcfboVK*h7rD@x?^I=`hHP6?W({1?#sszsb!?Rl6dqUH1p`*Eo-(k`p3#dp!`Uq~xg z^^xJ$09U+90$p06v;RThtceo?QJ=UNqDg&5^f0{aNm;-9e+y~vR7khx@*B* zom~qGyEOig-g$cnTKeE7*Mfl^5!ESy9Z&uMW}K&09dKkg9OF2*uSDArbc2s&?M{6r zbdNjU(krb>stS{kUT%I0} z?uta>VyL8iW=~q4IHHS#5I^c=MrDR!tuwz_z`-BB1_MZUhIiP z7Zy7ghZbfTD|yvX=$q}Kg*})FDYKwWa5j1t5@;D{JobHY3bPUwkn!d4Pagkx`3IsK z=0pA&$v(3GIGT1(zeza0go?L%t&o9VqsH zKF#sIo3&y_I@efjpO35@8@-@1=K@T0T@qdKdUKzq-NoSLyUfHUUU zQECXDfpgb#*T7B>Zsspo?{^JYPo{POZUaNwo;kWFf=fK58Y>bUK{)_>4n2d=H6u%=w|aKn zE9_aKmX1BUjXg?wJ!=e~`Rb{9#xJp+u^{ve8a(miBkUQl$`$@uw{r4Q^dlKU%R9gf zEc$Od;sE~oj)*pXpWa!>@l*k5Lmy8;8J_}2?2`%h%h9EUXJk=KP(sgLM}-z|Hx?Jx z-iG`ly|C7I!~vV2*sa&uSfwC6@GNEnE6O6jjuCiSC?;d@ERN)8Z*wFu3CjoRX$3pr zHf{%8gOM`cV}59u*(!@w2e53xa^fz00UINmlBd4Z;k`Yn^;3^Rlp`5uU9P<*!@(T_ zhwdtFR19uU>Lc;*PaOQ6!cscz>20U0$3J6nKG+(a?po2`2n+g z8+Eb{m_T4iR3{(2|L118Bc7I>Ftjm$s84>IZTo$Fa_ipql$takD`|o|e}bF(Un-QhSe>f|d>O@bPkI^=XjL7faWa=@HJCGyAH0-iNWIL%YKmo9$pL?%+E@=?JzEb;<-{RX$Cg?-QGnOum7h0m{Kn`zaHO5 z<`SMqS<~-YA@yv$D->$tjq)**^a|w>wGzMz6ip9)$5)&o{)AU- zSRnZ*gtjA8Vh;533^~t_dm$n{m;&;)mCdPm$K2M(Ry3zE9LNd)K&;hLE&GhU)H_qd zZ1Z!dXQ*Eusf9aYx!h|u!qhKQf8)hdFAfiFzepCd3I0qULo z;H^;SP~)7SfreZSt+S&j+XQjSfEi}~DR-<&zSARYwLsY^Q&oP5rZM zN`n45Urs=l(j>;T6>O#hrUAI$%Mp?{ux2>tWyHu~p9Poy~pn?3vf3H@^> zNuaI%ne!#dIHrHj_!IhPsL`&+=9przF-oD9s;1k)T|XTSl*}N2>Mh-|R_}n!N<}P2 zYXFgyTZ(ZlJBSh?Db2W+L&w<%FPru)uZDU$+0gcd@7!lAtf|3n zudrUxPGOBb+VB;lu&ykeZD^By;n9=%{(w=%b3A;V3oQ7;Dp+#|#$-&vT}oYVBFH&Q z=Cy%)*Q0jhf<|;qsk#Y2f(OnHRr10iRronuA#1lES-albTI8z z`tE>dFWqZ<{lVR8Bc&BY{^by26)k`mI?(K%fqfAu7OCs@8%wG7hQeDr>8RZwQtJ(Ucc<)&M z!tpjB#i*gc&)0NA+Qjg+i&4WB0betW8ZHC)+TEz(GJvm{Mh({hCqsh)jdaHWJxRqe zwRi{2nzmZJ_uF0$DAQ!GVEX1+t2>txC67E9SBw)guIX^2nSs6f?J;@Ke8<4}{w`;V6Y7rTyLi%;i3-656d0V>ZG>gw3k zu*ue0trrzP#Tx0^Lw&jR0a?h0s6AJMi8^#B%R4|4v6{-@0P4T1=R=`}{$D81zoqhgQD|Y#A(ZDi3Ci;w7%u-i z<@vd2z0{pw@;A)U>fO>^&V%i-UrkC%bN-dlUUS|BolVr7AEaMyr$1L!eG-QANuy>I zDJrf##|oO-^V8$nbD6rWin$|N88EMJr#vr|%5#||~rKE`#>qB5F#yrW|MhuZuTF%Qj@YI9q^g8hJY`f`&D2qr7CKOf*dQCog`Tw5;F zwe86zvh?=Ka`Xhsa+TcDm5<-dp0w4K*VM|MyiqNCA|J9RjJA8ireUt2n*8Hh_QXFpLhZCLc>Rxs-!@$ITIvpJo{bx$Hv?tYs9X|eH&yLwj2&uRkhZ>gTQd4l7kH zxN!rj`7gzNCS@`p7Y2ReyFq(^-dVhMN2K%KK&adC4s|=Dw7OB~mKaSin6nxV`k?az zB#|7w`Cd09WXK=ZWDv3qp;dR|{2mUxC9jLjkX_e})VKP^I6hW5caD9(H|l)Xi$6XC z`=|eA!JdC-;;$C^rng$aX`bKU%aXe7JU{$m2eBVnoB_KdX{Xc&yqG&R^q@G#RZTxo zOjP3Xwde)=$Kz4;c(Sd;)y+D zb{&j@>ywkNrbz%iGy;M+K!W?2&e;RL($iC7rd)!xP(eT?$0zB+5tb#CUftsK{5?^B z;}5W;T;g{g@GC3xr0JiaXsir(p(01p^fd_O%fI7}jLL73j_@6=83(XUSb`Rq-92`D zJd4E~c-tu{_z9gvZhygsAdG>Sroc}d9#|kf3os8dd!B^(Y4TOnM2LNlGEV)fa3qAkypXLvT3uwvZcrM`;S`H8;2 z^nz{U({xyNMgae2FZvWHSnZnr9NJxC{2K58G~0jztb^wuYESAhH`pksK^SLxQ5Vn8 zmZL!0azW={V@1rO=Nd?`Fv9;Bn1H7k^~p@h)1AZ-7ah=N5DWk4yC-T$0Q<2j_B*3~ z=eB`nm;I>3;am#)_A~`{G^ba1Ceh(bdXG4Y0C8KfYUgqWtB6n7Np@EENGe!y7O-n} z2cTu$BsfIr&xLLj0?J0WIkDAfwAU zu!TddSj_4L=@p&)^t@W2rw7xIZwRf05^Xyi>IPk~j5t2v`5r=>7|nv3r?(le)PF<0 zL`4(CwoBN8(4w)B*>Js*JY++Dk^z$kHF(bsBY_mx_T|O~ZyC%TsC$8}1N0X#dT>=A z0mQ?|K^iFBfOoJ!%3=H?O}cXUcF1jdZqA0;CtZliNe-Sb+szAf(|kq|ZX^R` zt83F=`xxx#6PRk8-yZ8!gh7HDFGL`8Ez@qDgs~ z$cGJTdC|~Um@YJ4vT$;7?iRn%pyg!*yJ=PA2^Fz z3{Gm1D%7xsd!m(i)uPf1??iI`v3@um1`PVp{lL9Bs0F(KQ>7c@JCPJ8D>r!Qrix6W z~7=T%!o7z2ug`%-s-I#DI|sbF4-PF}2*}*iF%->qg=Qn2nNmq!bzzgz7%qxn~iyOC*i_h3C%z@8~*I+l$7R*l`173|?(qW{QK1+U$MxcdB#6zW( zAe{-iA%P^3h025VZK?qe^kZ|`_E=4R)P#jAcC;o^_fUy%yc2>W(!M*3(;8&n0OmIE z!!aT7iK<298JyYThabUH)Oqv~(Xb%RI-O{(|fPF0p&xh8r3UQuF1HsjCR*c)A z5-`ga9Xy7f7hKgV*ox3!dE;OMUQuGez@?y=sx)(GDLKf?hz^9G&Z@&xtX#+o>q4zV zrd$DXoQ2MUcW8Cr^4sWcfS;tr3XeR^Z{;;qUUp9!`h?lAszsH^Lr!lFOOmx>hh?ew z3(5y{K{VjeJ%&hNc4Xl@oA*Z}FRF_U#AXCI%enmpdzHV)?=cQ=ahZWkTQ4F8FcCS# z`^aN7-5sx255@@L44O~z0OX(y`B(UP^N*d#0UQBvI zy4MK7tyu0doD@eK7_FX(UxprrMi}0n`O&JC)6zK0pYHrhRVyZ?oZRSc&7FdI3s?FW z9hoXsxX}roXHlV}7z$59i3Pih;Cl|INo?OLd%DX{nc+#@@d-xKD3EYiA-?99P=cS` zx{(CLsaDNKbyg+9*mQ#RI&jRbGe|j*QvV-qUjiOgk+q$rvp^C$EP0G#J#x zMC^tRbRdx^izukkD1!szpmZZ>NP-<4;-wYW(UEa*Tt-J79TyByF(E7g1Of)_?&5&fJx{A}J04SGl>odF6)d;gCL? zYUQkSIU-tO+ydb4#yQ$=yj}9{?qv_uuo__7Jg&b*`AF-5wEk$rRhN&7!KQCa#W#^f zzKLjmAksiMq#pr^6jVwO@&E#R66eY5uSe}8usqEnFh2znbXK5@fYCqRktn-pSj}uv z^MHC>C*i4`MJgz+%?H3BoHlQ)r?!7d?JYohQ}7iF7Z+c83N9on(QC^sQZ~_m5jNN3 zPIOouUa096!)GwW2WiB?zLaTufSfb(9kFyX1BoP2+hh{9RMhKV`c+Q5l@*eBO8>_JNLSp$= z9RElRwXKQvO=?>c<4t%UU5yHkYg>cR4(~$)i3*NvTa$=q=u=U_3)|MD;+aecz>cujSo4I-|9Qfy1XSrikl@PNsP_Y6*SL0m z(byhaXngG{S2+z}pKiN*zw78Oa7KI0SIBPk^p~d|7Say*aC8WBF@JYOS5MyPMEhc* zp0_>MFzTZzad4SzAg$Xa#A^%7Z&eQ_VX4{&$V|sq_?&RY?nIKBnLEq-t!AYL-Bx7AxBchErRHon>DeUj#3e|e{6ika342;Kd0C!51Yv4Lp z*R@OVQjhMfXq?V#2yYwXp~s@Qt~P!$}LWol43s6U53D%Oa&Z{-gK) zrYC^B*fl^H2WtdKB-))9U6ECcnaXf313iz2(F`2dbE@t24_K4c;Ne`D+$- z!G5_dy{#n}^IB+hjV*@SRh0b^+^2{0POkjD6}vq~Kb%rro7klL%O`XT_tnbuo1`J| z-(>@uj(K&&e}v;Ih9gi1SCH{1OUo=SADHt^F($La_|)b9Imy11E;fkjVeE2)+5^Mp z?mNQ!dNG0Hd}mRMKcnDUd(CHnsvyf=^AUfC*=x4pS0`ebwibvgz$%SaVN zgLeF%80>=oZNXS~t=&bJp*6_f9&cYtV1l?5GUScHJS}em(8=l5$FB9I!uK=(6Q})= zb;i2Z{pfP_u`F+w>SM#~i`U@|$}OJdW-+@PH#`A>fzdWs{#yG3GNHdCRM2qdR3 z!_p_Z0JwS_ABd}E_ywZy*(Kkr<$F~{2X5Q}x2L5rzvfXQqoSNoL`2m!1ayGMe>~oo zTxhfu-nt{T8(3uuz9je(3THJG6vnn_#KJ2o2A>lv78Qad)73nm8-H5+zgZ<^%lMQTg}wak7gkKYjH}~? zS9*-=q2BF-ZDnLHyMM9NnD+i~vTJHlt9lXI&*E6~9x~=h;M;XbwixrrNGD_FJ!8Ip(NgX8iEg8$ z7w$8x8?ZQdWvH<@5I3D59c^tq9%rnfL8HYeq@%afD74MmaWkHB5wYE!wFytzMqzS2 z;l^{OEJUz?N$z$s!CS z7wcmgwu|Rl!)EK>Y1lL|ApjZF)~V`MMEM7<&e8$yB07JF<#p%bQv*8%^Jl78&qJ?4 zU)w|pHuYZ~lu^!I#9YSqSggx$`ZLFac)E+G~EoSlB*GGXd_|^ zg_cgDPY#m`vKuca^=p2w2>Hiyfkz!v8BWk3)7`@Aq7x5AD z;&Y4^<;7n9LSAggZ&(&wiWVow1eR(1- zs;-9!F?No^r|gQWM3#VWRv*i&N-N4=Tg7WviqoU9oDDTqAIn~ND1WE-yhx#w5+QVg zy(n?chm`T2Q-iqlpQ2CyEtmdPu~fAd?bK6=q)5^dsp7SQysDQwBvHi*yf5#-cvuP% z#T9-^A&p)iP+&=-gkMOa#M4WnE)}(uM14C+qO-He>FhOwP-9pcwf4aq@OFDva@0cn z`SG_De-GjBar`}nzc91LgSr0uy*b}4`4ji6^5;yQHB$bhlVbkw8wC$lKoL9-og;#$#ADnbk|xf7d9S$;S!pk3QOXQPm0HRy2pzGc%uq;~ zzarU^GJ60xrOZ%dR#z^i`rlfCZ(J*B!BG%H!Er;P5s#Y_-NqHYL^zDGg&IXRj6vMr zxS6O?0LXvhpSNZp(va?b zBoB=zZWpaxfjl>8KQD`>G(EM=K9!%|3^Nn+z)|Atgrtruy-fW_=La@yNE8NqWPcP1 zRi{61rN?~{Z>Aqy6On$ePWJ>-)>`Rryb_T*dhjBMm_m8pznXKIhLb7|8K~12fg9ZZPKvU_bH5HgC(VE-XCR*7R^->#@?4GB5>`kK%q?~O3Eg;_Z%( zs}t3b8=*dJ;IUAXXVd02E79K= zTb+B6r~G@&zGpJwmP1p{`nd^seH^dqqnAzqeOJRA2&4HHmH9GXrR*=7W?SA2Cot#` zg9G9RJK5`AzZDEKc`q#fxiQ{8vOd+*DG7^EEJH>A=6n(bM|3BU1=pXP<)XJ^W;)bS z1PVdN`b##ZaPp}ewRWYKrp{>y)Va^won+{srFtjW6>xe$^GN?%WZ(!gUXb3uxZ_rV z5c?O-USV>cj~in3U}E9!!#)`luTa_pmB@;UOXXc94iYuZC$}UOW7h@htn_!$+G+sC z;0U~@ki=wX2^_L%QO_V;M6d@*WMlZ-`=DLGSVu~L@4B=#$ZQKs5-NSm2kN#i2|i?u z?x+%rshz5nRrW@e`X+i7knc04T6@iP5Ovff;Rk|kCb`&Un|cS+vb7K?nx6H1m@!ju z5uxAleoc)p@e)&Rox`}sW{k2eI!I5}!Tc|O4?;I=)Xq+@4HY($5~ek&XUl;8ecl+v zUy%>GHQ;}WuJ6a+m@PIGUdW|dF?41~8a>FX1iQH22C zu2@Vv?3~ikrr78Pi;0;TsCDB1I+UQ<{8%zt01{`uy(}9WL4Mn(j za$I0i6e93AdHD_wL(x>*!?hk#62TWk8(pDheDQt@DDj97ZCE{TI@#b_;)+J)mHlKs zbWSzXs#>8?d7^Pvg}pcD9ME{ZwwF4%N21L%ugnlMimS<2WW^CS(V?qo2Ufp@fy1<> zVQ+($Lae!ES7HOM5JC>38YFsM6aoo@1N)_f~RCc`ID5jom;p!UtUuu$@gY4D3}Se-!NxuJ!0d2!VW> zLz|H14Pr~ZyQh4;YrQQaI<$V&dYdCEc$Ix+EXSpp!?2md;EZ0pqcXqKXZ^7%h%HwQ z9h-^(q_`XmQM8#UM0{B5Sbq$tsr^l2?IrB9jZuqAYJJGCfktmJA>yng5ZQSEFe!+9 z@h5VkGwNSA%W%3ng1Cx_yDu5US$a61#4e$h7q~zIWvoHOIyk&)oKI#|Mt+cs(Q}A% zk^14fPTMCrj8+}vg+-iFIG7>QGLZJcKq_Oo7z0FV`0hW{#Hi2tJf`7$Ez;#y#jxR9 z_MFz;!!d{ZFI9JJJPqKG<9;{*tECaC&dKfA4Wnh)v4}0he7jIw*f?`~!v2oUx6qmp zJrBw#40379h4J7kV5PX6TUI#y2LWd7V3xK6yxO^mtg9Bb*AO?S251L3g#IxFWw>Qw zL4xnAwTzlmF4%?y7}+f>0doC$ak3k=!6kq$yvVwNElz!g8GsqG=WOEWCg5mQ97nDB zN5TR5iVh{ffRwnz1K+-?#3(2}^N<0P5C9mp~l9a68-JAJHA1*Gx$W6x6D7o9T*o4!*(y|0uvG$ z$11c5=NA)03%-IW(p(&HQw#FR%f3P@m@4BSqEPUG_FS6v#^y9MK_R+~^UpV0-^^)5 zqs6Lx%aHvk*wz4}nGPA2KL%ENQH=-KcoOE-M&EY~cM)^+V`EJdoLaoAv1sgQ%%pcw zM6j9NaS7$28_kixHcx9{&JITMPR7Xp;~F7$9>jwg9O@Er_zVC9O7C&-_Kwk)2B-NK zB5Vi2hO%NWJX|~1rUpMt4;^n(*fJk#2$b6LdM<<*9M3htbd+|jqA6LO!{Gyo4`=1C z>dGfe<=9!}Rz_glJ?e`p5IFowg{=Pou(0tk1X0@X&MU6BsE7Z4O!g13TZfzUz>zk@ zqAH6Bot*d{Z2=XNry$?LhiP-)UnW?9x@2^R5ruT8etv-tNMdq351rmM08F>^PR)03 zCBTq3@Xsc6T2N3GgGqH!l`v9Ys_Zt<@OQ^6tVx84nTIf#@?W=%qM5Cf7Z!9@`k09H zO;aP&u?2x4hNs6Bh*P)`c4J5&ZIQIE>_XGR<3K`TU~06u?&N=d&Aqp#647<+Kl3ll=k{^p;#>*O0= zjIk=r*@w`>E@LxXm-@ML(|vv1xl^Nk-SK~nF9{(YaJbTzzq#Uz{LKrK$Q8}~mwN8# zAqG_b$CYO-qh5gx1mFhn!=!{Ft|djVU-YQ>0=kLIh$%siCklq@@5uoc*C$u;G|3bUlUbv5~zEF*)%^K|+y}bnO2+(XJ^;w%v zdJtfqmO(frwS)fPaS1+}2&U{61{K|jo0#&Geu9bSqU_1*G%H~_1amQtb4>t-%JtD- zI3Mv`n@1s$?GHs`SMun-GdJ2-Zlqrg_+u^x8Y>yOF0|t{0v^a~Yrnw(#HuXa9`2u@ z)cBtJeUtphqrDSwz><3@=c~QXQ8sp7mzm8J8x69RLn(J5bn@Ut_(y}~p^_a)qpGo0 z;db~?@KW)G6l~}YAq=0o06WyO{G!V!jNtyCqQQQSer9zDF6OoKrCYLE%(d1+dZ{Lz zGUxwvjWqCXY^U$Q9;OlP&X4h(=klvK?*Qnp9w@+MNM5~IUN;F)l3V=zJcSq^n?Qr| z+kq@RQQkTx<4OT>Q*{z!$EHbRvcpkg?C1FfY(;-Z^`8;gCPOQvY=H0Rn;F$CFh3Vg zVTVIo=btfS8T3Ht74z_gJ5J56(1)=qv~_{v{>Cm*`_(mwD+hOP@uB|-+_4BNX;8o% zgsP?{GzU&f+$DoyN_eBJFyBH@;JkOmie<0yqYzt(LM!xHU3!OnKv8^U71`?Fmtaf- zY1f~T8r8Vp=BlF+3Osi8*Hn=eM_XKiD)AXydjhhx{vFRKZ+xd-Kw(JI%ZrTvEaSM% zk<-(j+IaPpR6B_cv1@KnAlr0j_4oMKr^1t=_WE{pD>CJ)iggkR0;wgnL&cY;FzZWI zf;2R^@;OX@ae^*Fr^{PHX&=l1(gSIq_ND5=?$fcs4scD6qH`!q9@OBrAXELjc(&Y| z7OQ{H=P;mjySBl=z!XV6ag7p_3e=m09JS6H|Rt$wNSTlUbucb;9~sonL4hCCwvNR zP*>`DKNXY~)#AJ|ly%Y(40P23_;T$O2~E`W=%;gzHJ`cE)SeO^<7@5SKj9jo)Dok$ zh%RUcxEZGxSfY_%sO|@an9`XpeXpi>EQuaLi=t5AS3Q5{$x!PKp~YlGmMCf9y4ACx za6b~Gg7EdR<#}og_Zx-#5#xUkVv>BARoH+?GM{(?B@IHLBd#J*@2M?pscD#hu2Hfl zucXvFQEqu+D;zBVFa`iXx7;oRr?Sy1v?hBEBsO?T8|H3ae|yb1q2|fNuei`%gm*P5 z4-jVK$te6Vuh8Qi5U#pGR~@UX{!pq8K2uy?2sf6J2AtT5_T(4tpEodE!1Ry%s*k|( zqZDXmAQPAWr?Y+bLc^BfM)%yY8{D;ppJ4yQ6Whq%dk`+!|3|duYHN!2brrW0`%?`; z9JDRLo_veSE+GzdyS0VQm}IkoqXuZOAvmTqc!zqRetb4Zx>8Xm(UjGp|G{c~L` z={Bxw39b-Gfvqw?Xp#7*#3HSf>bMWwW-^xg$r-M!UK#3KEO1)iq8A`Ahy_OfqFRh0 zyx$VkU(gV?O#-0pB4e7P$e5d1WZa!yWE|v{rufyuerjrWF;@#QK_=-7Iv^?7NwCap z+K9={z+B*U68Z=e^^@M5sKo#%;OVMnC{9#ahz$eaA0aVN`g?QrO~|hxSkC!G3AkD_D`@q~&1bS>^fLZf=p9d|1 zsCIY@BuIw@q=tVjI0Wauhur+!`uC9s@LmphEkxf#aBm~H4|+|}fqQ5v-C$jViLDsy z&cK+e9-FMH0N^cO5kP^>iae^}x9Q2O1yKL z$M_F#QVC4T!C|AF_Iv2ELJk)9$O$3AH{~5W(t$B>wcm;pX|d|oKQV1V5*DoXnwiJ| zScUHK8b8y1h0o7~YY4je`JnzhTRuzfVf@T3 z0OY=iwe~Kly}(!(l<#f&`$EaiajKt%{{rLws_we|qzJ)*%TDM^>ny6%q$siSkrmUF z=hEO`Y;u~8`S8p2^}Sb_v-c~~kb?`A<|2BQ(AQ-ZOue);Ixz2WPZZ9s!IXh)nPd(i zvrMuHtUyEBjCbDydN;rmW*8(Z;Tq7*O?eu2>eOb+c&mMI4;&7Fs|xo=0RlV-VUti7 zn;=ZpARwBD2EkDb^+iJg{|B1+A^?g0F9Ff$_!W5OT`BkwUJNgxR^@w>ooZIsJC zDsUMXw$8!K#HW`EoB&aefx**mv)<#TYov=mqf9ymkzsWlgEaJ@A_AE$VXu}^dJ$AQ>mPFsd zU@RmB7g|wY9Km4$D5Vl&Y&Nt@_E2UReE3g0KBjCRGQk{~2HDEMiA9n)DT<dNTM?&DUGB^JViaY&$opQw~^JDTqHJM%ZR3|b!X(yTaBFL;@`3ngD_~5TXNca%?*U3s98YHh>^%kN|}sTeNp>%HENb1{kpI@ znXY&d=48`9`2UeTIfH!#asBu9WP9$#t#BS?8#JKQ28z-a|fmVJ{d8; zdgN9pl$JgD5`YD1k``%C9{mXI$){nxTrYGmU6~&y7g{k+dfmx>{O&`Y?8mnNjzH<{ zdQRL*5~A9p;t7p42c-enk7eLG?8g`W@pSg%5`%W%#XG8KofDJqe7k++cCj@14^+8o zd*Ewh#{Pl^-&lnBUuc7ssHu?N$uJZ)WHc01!z@ef5!tr$6GB_~_g~(4AU>&O(eY{k zH#fcx+CiwPj=P0ceTNJ7`-=U?V=G=m8CNvx@zwD$Mjl_0M_pr4H16y3AF#95&*K{p zBquc|ZC`YpF=Fp{u8y`>tJ3y@!@l|c<2L)!tI=S%V*BE0=Bre0UtDay#)be zW_vMc2?qkuYUBRo#sfXjYElbpi$#LjICit`_hg`;93->=__?6nzL^#0!}Ow6)`W>o!(c2h^=Leh9)^j)0!$5{EdoFX0K}Cxp}M#T z44o|a*}nKS0TBM}!>vYin-`g{CV)fCR};WK=Bo){qWK!9%N_#>NMB8O35ovzN3L;y zdgFoqr@-5z1EFEy<062Mvf1xhk1FfvCr|7WJ+cvHp3XWWaAmw}QF}F#=k}&eC)T|r zT8I|6CRhENM2ck6$lOejZN<0Dla6R$u4>>*#b*pi#$$8!l4v)!^My2}0LFFhMWoC3 zSYR*;G^*qbd-DDz(Gi6&Pp+22E|!iF8q}p7QFF%#0p1O8S;K`=LywGvJ)mcdu`8VN=|8JGTgZN$P2?H?X}N)Mv1`1#y;IijV3yl7hWIE>Fin zP;7|eEa83Zv)6)NygHJFM!HS^j63-hX=!bWh~;-;&ynIJ${BZT^zfL~O|i2h~?2 zC*{tIQXTvmA&|xeV6;3#Ro_G#1+L0K<7zIN|4ja(*-_Y(5ecvT-8~6c@i%*2PvDE=ZNj9 zlvzI+Woj-jXVl@HLxYWA1Y?Cs{Rhz}aX|r>%^V2)=Tv7Pd?>7(SSl-Z#dsU&X}=8o zJ+xnO;1=+~aHbX;%bHOoPLb(*u#1fvAv}-qh-`=;f+E*PSaBjm5SN{y9mZjJW%v-H zAwf4Nu6`JV-Iz^WX5@0bdtijrkMSG?d{OlzK1?R~WXfL6$C9#H{T1Iy6s>l^gL8HR z#UcnaKZpxM>puZx?tqKubsPzxR5iB@X1J5lm4^RhjD0b2VL95m+6t3x-tk4yK2zDy zP?ANjsu4 z0*I;aV5mZE&P2`c?1fmZwPEf@-Hl@{w4P#l2}AQ%^;v&RJ6#UDP2S$>UogFeb8u(l zJ>(#smkIpl?cJD!xoR{l-B@d5f~%==rFhyZ8$2;F-|I2~5{({SOy$`-IP-rzzCGuLlLkMC8wi$UmY}{w(Hyi}`mz0<(sr=sd?cmPn_K zT^f>>)ly{SUik8i6-1GLZE1L(%B|eLSpStFn_79fIZI$n!hSBCHnIPT38LP6lx$vy z`XSz>Qf9%Z+6^`yC%CzaC@5DLMPCbt9V4#o zQ1M9CI=ic$R7$K)BqB<#6X;!J?4@ArgtIh+V5p3RVeBd~V9nUf;mJg9`0~w0FY+*X zK{d_XDoNRS#EM$VwHyouWi;!VK7xpO)gg%^>>uWOH+!Uv0zw60p=Is@fDB>QlN|z~ zAT(G&(z3|{InkwxC^Qc%s5Ie=o;{x!;)<~{8{ z$EgCQDyA|qIn5z%9=uGzE2hN}j7b9K9fl*3e_KdB`Y;(-k{Y%Un?23y5O>P(`;Q+< zKC;g;xSsxqAltu31NRfUK|-Yy?bopC-P1tc+%5B0+G2fKZDUdsyx{^*pa64TkDP&V zH7GbyJ;wqeeBi(X=$C~faNjDBR*U?ux^g7K_NCNaTf;-oJw=1fdvurwLd2SH!LPcC zRZ@a+>@fvUD=1j1L~li??^b7_pBU@uf`Q_43EX!L<_NyQeha(qW_4*aIrnB2vz>d_ znnk&dcunWEjlht~Mt|^W6G% zNGASK&f2@`!(!Z_RJ*Rxn?wUCTY)8~8vP(is3b~#3>lyqa^Mkx40QF_y+pY$ljY%r z!g?p7URT`)yh!b^AD>iJsI|2TWMvKmT&WhbIgc?0k`8F4quRK750`|U67FKRctD8+T00Kx9LYP#8vmS&h|R8fpF0=p^%lV z?kQGx08eBHs>RNYhbvO^qrI7~I_f5<{YezFFmi&ezRQBQupm`N={1-+f>1(X=8`}? zfyEN^oW;EW5(_lyitex~k{(gFPy;KQa6w z#cfi&KPg-GH#Vzi1d+ymQ68{^oi~r{z(HZ}g2hB=7wpt2*xy_{0fVC1Hu%1i0*0YK z9E_$&hoPXd7`gcyiqWfZ>ofMB1t)7SF=zY7Zro74DTEE;;W+*f9c#%196Deb!~$B9 z=;^4X*uag}a-$ML+Iyls{+P}UnCa=bmWlarJ(DxqEZ~emiCC1dMSx_%Ga?e6dUAG( zlcyM@yu4Y%6pc~fSqQ5u@@tNF$9-|Zi=|`68Bkx0V{J__-jV)eRd-(OKStNcV|P_v z;6Fy!$Ya-54)!0TSLCt0$}nmIE9;%B(M86oX!!6TyMG z)BZTBROf5pVe$TXf7s$ZhcWpOr2+(lJAC%Y9{lHSYO`GOcyMesC6kmnUmBuGxHi`HhyA|y*D!y(iz`}*3mX0p4faVQA; zyGSC-z(N15^$w(~o3>#y0<#Tn5oymORlEOJT&>}oAn<{4T6M>ob$i2gC#VZd_y!7m z+e59>G4RGut&{PCNV>)m$V&PL@i-7dbW}sVWs6R|d3H9UN@ITa%R0=tt+*JE32lHl z-N$R!Mzn%^hpg7$I z6azwDMN(&kT)DLaA@3noBV^VT-O5Oj#Cq&8wvV7M2uES;#41cH?+?jwu?1m--DkG_ ze7Nlxb@EDG8KX6t6u6qq_60;(dXLV+LH7#?r1V~IKIXlESWEBq;^X=D`u&(!TBleRxWTUPCG(jiDz{b}Xrsi)$iRztU=f&TV&R3~a6R3vuy#a-n!Djh zs05QH(FLX5793@4alI9-{(LT?hw3vpqD)Xoqqn<{*)@@As@k9~GCRVhB>mw$#kCGJ zF(QAfZz$HUxZ|1Hz&0dPa`J2yCFf3E+X~bcd~MOU1l2n-wADKde|@nI_e~4f-a{TV zc~KM4Nrf{wmQj!c7d>pfUjjWG_f1`N2R;PPm1PxJHh>(C4>BGmFF=Fp1g>vH-shRb zH9{aQAC2p~GI0RqwkAklv;sRrgYWFZnr|4e@&lCsED+u!8eRvAw4T7?l&f4u_Zm@R zY<1PzAgCA*VrLO*K%gJi&kyTu*aQNZL*Fz><4!<<=)}-bt5G8jbEIRg@0Q80=0Q{g zB*0+ih2XYk=n8sZOpoC4I-Ys&;lk8&=)0GVzf80{2fq&WE_w>F;IX8FB~QM{mJ*Ek zfprps5kXYRLAq&oo`A5+Z?Zqqh*KZ(EmELZ<)7^+4;QUYRlww3jPv;zV|1xGly>Ww zcp4j7 z(pij5rHs&sQQcdVztvt-4H_vljt3SxU5El_m-`#@_xO@rZR>Cp&$-eOjCEd!80?6r z81l{vAuJXCE`v<9FLt6RR7$N*W<%$Uw$w?!#8~PiUt*J*d0iVC&JIqKGSpM0jHFOe z&1Otjs<-ld5v3B2M8UwdS>1O~)cqy&#}S?ZVdN~v1S_RI0oO=EHiw{2Rx-q1Nw*zBeP> zoZ<;>h*d@TKUcK8?*tfV35T~k!$DR9cP0Qsw>wYk8{kh84ikamu|tctSgl&BYqZ6x z;3|??41G3=VSvGzt%hM3br`c6&;%$n?C#Ymel>Sm}WXSgVFT31vhTBLg#z`yF(+7qdj?5>ahTt3=l;#jS za(0mAvc*jG2ps=VWg)6`)m;W+6+feH?{Rh4&b9SlrQ1@DW9?Blp@iG?iV|lcEbx(e z8~i~&djCiWdef3wn6iPv<|uRC_=!~IR=`c8~fPL9rx=bEFlz=pYdIA@=$`j8!t z=KAO-#%g^{Ml~`-Ys?+j*XFe^&8@IWV%!noTb3#pJ=1xuFRL=`XdEN4$dY zZYP@~ccL0hJT&;QQl(w#723C;>QNx z;*Fwp$MrxL0}D=~2&Nm=wLn}fJ_V=Yp&K3~B57pmiSLklDN+?4ev$eSQ~M!x4O4}D z&062W2ikev#z8jZ#B+wd{@;D(c0ul!Squ>u;{JvQQlTb%uyNy4<}O3rf~c}6mDvkB zX62iW7JQp7IvOlz;JL7}+oRZ!7^HY6i(wSDo0mvT)S#H9uK)ta?gBOVLt>beoK4Wx>^d9G5gb?jD z2p1YPDqtHLi`!CDA@k6@M_uS(Q`mKFS3}eJh^trH)$AEGy}@A-j_q7Ymto=iAx2ML zoKfC=D^)u)z8>g0~-mtB!dHHB%}HLz9g)_Vv~|7LqW2S!GA5-PoDuM zOPmAWP{iw=poaYhnIIqLy{stO42i4aNW1c=2XV26gm0$gXF#I%G4#GzR z6p#(@OQ)G<81Y~M1#Yqttwg?ec|YP^pPw9}p~bRfIWh|-Cc?;rN_2X>l^$1NrH@_^ zk$z~P+1r%qR(j8yBhuGf>1hR4`oq7CNPk|Zqy5=d`p(B9((kp>~EJ7OB3%4pMl}pIfk)homOQ4Xy8ksYC)t_=r!l{=*JE z>O45yLk|3RQ7^-b7vK&ux9<_hB#+KW9hE{ynV6^wfslxA9gToq_rCiJ`n*@S1p0Uv zi9(-mU|$x+%=5oidfaj={h4_Y>0?Yt11S|&`rI2M(uY{-Y16IrBfp7AkJst`W3j$u zkI@w#(5b4&&nL|>1>=aEU#n0>_+7)det=+#^DA8c!x8mAZ>7hD;XCMyNWWL7gJp!_ zd!sBOeTJ2uR$$eiqv4O_$4)aB6+EGLb35DQrKtTREF79cPeS#YL)&X!5Sr0jc()ZB z&P)>E6|!*I<_fi7xFxOy8l)}nPhZ;UDqIQ=j%{WxtHlJk3L>vBYq)eu@a;{rV80b?(8UFq3|% z;H&KZCjAl_i1Yx-%#r03JRcnyjs^pz+tHVgJ^sc-Lih(3d+~2vbWyRHj;0{6aNM5U z!Cr$y*imYeY$kF|=F37YNm2_UUL>I+Is5SdE16V4$A`!&z*&qgYC0SuDDYa;Lq}yM z$)-JMov8inkf8SWt(4z5W0Z=)a9}X(HDbe}eZd?MDfK5^YNIZ-u$5YjT=xTW&yV=% zS_M`GM21xF=g}qq-Pk>)h0ECFbs)?4lI1ykP;Jk#%iC1{V}$PR)L`#$`rna`Fy*Og z2l8kmU0?ztl%)J1&5r6qykRLCrEX^<#)gPKGl`~iPRGkp0t#nj7&WvJ@dmeO;|n-uO~rQR(voV z7^SGf3Pnv51B&-c>f6&fxyi{v(uksILim2fp7}c?!N`a9T4G-*-?+4Wt>&r}144krc*v zx%5-;{lb3$*y-_IGWnF~Ys z2os^vZ&Uk7W@3ffE`xBYM*ly;_q_C9;Cu92r{MdcrJeB|!<~yj+L_F!@ts;0f$!1Z z5JbUuE&=-$eBb)>{~q5Bef|gZZ3GEN7~jbUI`I9LiSKd5cTYr%_*MFT{s$%szGul= zh*rNFWf1-wd|Ujhmjx@rNp?{yvC@M)!@Zy6J=72|tt+s#i+PXpV6O6+)95K+EqCHVhi4s3M;*QNA-Ioo}D-w7>4&=E4>4ri5ebL z|2NZR{g-Ef9JQJ=KJE#;hw+E^W0CK={16MiluxX}6S0LFZa>~ij|=y2bmaQ=P)~FG zQ)-bzmk_wV6p5%oWBrVISnSXDUR1N@!Wui8V-^s}0yOS!Qz0{M}yNdvKBgG$???)#P@ z3A{ZJJQr?xu%=w|7CH8YAi~$Cz4tn~=Qg$LTC&c4I-FcCYKai`rXd*oK_q_XBi6wG zi>M=VJT^wYTl3|S9vY*@UX?fH7~BLXSSRN_L%S|G^$UhM{Ezsy^vP7KPK4XS5zLUU8!T+pX)JY+`|osezjM;D&}z2u zLIN&DSx>~IL2rs*AB(u2Q1z&ns|%;`{NXk=4wvg8Oy`_TUE_9cn5EpU@pQglKs3k+{fqbuM!A?#z}bG z!m6>l=D$icRXXGjv#U-3V|>r~XXo)PihMUlIU>0A2Or3Lm>N3k^UG4DtHyA+XS?!m zcbNDOLrUCaFK%0q04LF`e_`wKU!c}~R~`$k(qrKccoMK(>cX`_uEt{$U^5@qZ*S`2 zHo36M?rFwG=#mMDfs2bcAuh|Cv5k_xq+cFH&H{wzZE9;-V#{kpfTPgH1*)U#qXV`? zbEvev^pIU3EjISTdSt6Shgzt)`U>uYYs>Qh$a2E{SWP`&7Bn=P=4>QDUD{%*-GM8k zeX(w1dr5f%mUNYawY?rrkPQ9T6>)akT5!BH7>g%tGl$k76s+%arX_$Xvl_9WfvBCC z?{VnRU0iZOKGdN3)(TjDT(wEoh*`E;61~a)H2gF`2GVXt5fPDdUIecIzkD@fJazuI zZo0pLluwW-nFskJ_}OkNJ?>pAz2_|v=__?Q*w%6@{osU%^vA69v*-%HF-D0iPjY(t(_MA&M;e|Vz)`1h%j2}@g8HQ z<33Za_nB=FS_IHx`O2Wwlk~nty3S391E69mFcF0_M_WSbh9I$vPe8VgOUWo(IU)5J z+QgilG-DY*z~K8RK41x*H#60Hw#sBNJzTeNNe{zViyHK$h}lWTZIHUq)Hkc{`pYO* zfpBo6PzA!w{R1|EKCggCVJ(>If)h~A4vr6vx$1pLVS3)Bddm0EW)SkQPG7O`dZ6|* zS=%y)h8Sl6x@0&6X?_h)C#17fwXcC>uU6zHZL)T!zS<-li#fDswo2;3(fU#8y=gw zhpsF;#3>Tky<(Gii**=QO#*XHWbAMUU{|;6O0Yj{jI%*PtCli0zw^Z@=U|KNOrEN{ zA4lc{Xl`Y^dzN4B@sBz^=D_B^=S_z$#4c&ATm|7PnO$M9gm79Go74n`nj^FBUgD zhx0ol@^52)TuPY;@Y*UT=xXz%+P*s5p!J1O4&44oUnJBY+JJfnNrraVaWTw?g1zAF z5=uLU*CnvQ;8sg!%RgE1PgmCO^b*Tu-eBnz0}S2oOT$d+y+?H9JA14XxR7(P2dDC{-g zp=hB|N$;297tsGdde|D#Vz1eWv?8OM>RC#Y0M1m_CKTallzKz#j`~nS9&pdnu{e1T~%~R%(ea!F7RNNW!)n|~IprCH34D>S`g-Ab^m*d$q z=m4H;fM*7$&*qJMxndKc1y7FxhCMtm5I)TS{2aCl>C*iQY|ygN`e-IZ1RTk-;i&jH3V^%*4s|0#CceP%EDX~ros)s5IGK;n z%;Mk+#tH4z!PJ1Ex_=sQS>!Ls0F~gpjkl|uwNrn`7Bj2xaP!>s@CAusc^aj*9wiE} zZ_bh4hA-l^0kcc0C+j11c$6lOm69+Xy9Jn*a`>evu{djkx{Cb+yPlu(jr#C&8K;}% z9rVX{PJd{Xht=CUaTxr8^y*?IK0t`o&P>IuQ&ab|toJGo(*|`P(jd1W(zdFRk`FC_ zlJ4MlRq>RxpfV(7v#Jm>^!7G4Oqu8`s_mCiR9g}i%;idoIzr|195Te?FUAgrxnuC# z?Hwx1a&n%piIJZN>dgYn6=TCVC{<95bM4Sug6HDCnaLKqF!O zRO=_t$4bi}py?z|>L)v~4FWiI`n^_qT!EF|bWKG144sbo-_J^a*d38R#!657nV4k# zJ;zJB#cwloj?hMrafaUU^S8!$FA?8ZO<3a{S~>gEA2H93B>1e59Ta7%Tc3w#AJj{W z5rWMY2VmJUc4AWnL$cs47BDzN)Ss~s2YHs_zG-=ws`C3_k!*~gsn&c=r=am=s`euJ zGDod=S-#9yzd1|32mpnuF93*WivdifH3S-ko=Zq-M>{u+&ZUZkw^IDUVc5_1@i0frFbN+~W)XBeMca-3R95ay87w~GgP<7JFQQt!e zF)V8#9Ll`IJb@(~8Qh=j0oyr?auT{tPfYsHp9Lx~=WYd;gkwf*c%x0Td2fajz@B0* zvGn;4d&zhW3Z%`0Qr{2Q4paBS*hw&OU6;prKq$l5tr`G__MybA4OjZklp@YxBSB$laG3UQkUlEvyu43Zl zCuMzt`T_ST^f*uF2XdFPQ=HGw%#EOzDOP&iY%BfY$o1#NW_!>Vtn_kcMETxUdfItb z`oS@hZjN^ceuF0k6*9nxRt9x#hwpOsda%b>B$&lugQ0q`Cf(>wRnzW*pfsLjN)fh= z!wb?#lr!gz9{(z4it?pn+B^pwtA@)tgY`s4rI&kjH53v#vU~08raoD~JlLE^2JBCc zPZh#~No+b!+ z(>`rPWhei_1uK5RpLQP?XsOR2QTS8r?<4rjN-I6Cz)C*?l^alMe)yP9r#@q)H|0m9 z&$H6ge*TMD|7a~wsb59HgZGUXsxTRIyuphjCsMYN}~NbjRwMe zU@F(WWkh1wJs&H(;=Flfz8>o29#Zd^GE`u%S&L!_FHi=8QUCc+tMaemo7HfAKr(DD zt}Rbj?v9pIrDfl}8%B$jh?h$?tBhB;QrHINNY&oKdZ(rG7-J~~?4Df+4+?Ma{N{xP z&@k|2H@>*@<|J0yJw~ExhAYKo?4qxCNDMZc)pOw@6=7*cA*b{QFb&ucsV7v8%5c!JZEBMl7FKbL9`c8hzq`yH} z#D(d1x0N3E^`Fi3o>*;$(^u+r(Dw&c`oY|Y^vA69w3n^)atOb0`FUo#=!3OZmQ?tp zYWSvD?WcTT!RL?MZ@t(`k9*llp9@dxaQ(fl_EVNx>7ygzYipDKgG!sU1C zbj<%xtn^O%y(_KsxOc7eBUsvn%Rgq-pR(LaZ@MHReV&z`R$--&j%#T| zFBX0-w$ia~>mtspTIu@7x6%mUu>P6yAsbUoMOmew&Kw7S&y4cX`Vf&aK-+BMh_%~cLO&36K0tvS$v|qA!m`!#5F_HO8(;0uID_NHmIS^TdtWm4- zT;4Ktw}V}evnsfKW|5(Im59GG9kb?`_xvK*2*6ac)%F0HAL5-EfIKkE5qbivha0B2H$gBNB3**`xCx%)S6^ysAw4-BP? z4R126c#t7c>Kd!?=NMd`9RzeJUWCXcIAeNTEs#<1;m~*7{Y}_VDUA!)? zXW9gLHi?ECR?q8!D9F_{E!xBu*pD}e9y!ox*~?fO_CSHhiHx$D3`W(i1{yR=*cbm@ z>ciFvu5y5f;RU?G5$-a*&%uyQ7(X;i@JjtKpe?bJN#G=L+R=5shx=x*&I|bAJ&7Z zjtw|2#vzi`L6}y}rKZXMznA*kqH(NP)!r)$Ydz;YwO7uG01xq8T%F!^`IWjnwm9HS z4n+>ZQ;LLb;2O9%xR}F^4MUUq4#&tf)4)X4wUU^v`akUfNii0oGLaV^{w>OOb_|1S!-`WMBg)G*b>%m-K`nOGi?Z4mKaq9THFHCI|CU( zdK-ghT*jW@I^Xtdz1=P&7+%Q_%|x&K(4P~y%$f>VHUPr%aO_N>XND)DW`*8_c5qHT zgBMI=vR{xTYz$^rESGlR79yR^i<_DzI5>Q9%4eg6YJ!YmochDZG+a%{Rrk+ir4yWL zv3|flS=y#2VxrV@n97~RfwU1fWwjk!jT^>louu}LOvF2M)ZWk!$edYwLpI*#;I9mS zx%hLQS_5W{=ATo(6Z*uqaSB>Ij9LSpRJFfaDBj20V}8UpI?W=&RXsTf4X9)BtKLb8 za8B6Zs3{T8P~RfRHCM|Z^sxE1Lw6t(Mt@eJi(!^#^1rX8|LD(htN(){`?K3hkE^iK zdq(zWrB3%?eQ2d092U`^$E@_U0xP|IgrozWC-CVMcxG7brG(pixGbW+F;;q9xIMpK zFY5jbvD!-sw>L2oo_H%gt)B(Y&KwO7_%UX~sY+8eNxdZ~SaLC<^M0s|ynSs4UFOb! zJ;66Zt-$#zZ4H$vnfETIDI+Du*FTB!oHAFjo=mt%U=h^?Q&D>g+__GUhMdV9*an~u z*{h>)t7c`JRYPVBcCzEW^Ze~z9DIHp<-Pq_2DW#WaiWY4RaZxb7rfgO7>|?5JXNl0 z^5E!9R!DV)Wngz=nIGT58Rc;i8I3G>pkuvT&P=!IOm8z2BBQV-oWaQ5!$Se^KS8zv zW`ipY>za>j+Udk-lpd>*U4RkTT28r!`EToqfFN(2GOtJmLndzqC-;!ImvXCRDtSU@ zZ^K{c2bNMR>Bgr>kB`>{#sl-#MsJE5yTZmJedz$(9D)Bd$p}nfZ{Uc^-V8)< z7%xz8*(%o(y#HQ!fSZv+)praqy~9`-tHLNX7SZHeSK!HmV@1Wr5)L4pn_;{p3c>SS zq3u8(cC=yH^v}n+=*z;`{VJAf_hE`yfWBGX1>&HFHtM+iQXL=4h(R5=3tlQ%XY;es z5+JJtWbl-$Csb-x!f6L#AnLVb;;-YKtVQO7jt3}sZdRIG8ZmMQA;OvRcA1TIUxfBP zRb>JSbEmOn9rVohcwb^*>TRtL2u8N5T={78CA>ot2AQIF8S*XGcPma`YbrZ{jd2LO zmu_Wc@Z)b+PV7{p+qlJ=J6P!EtE(^oysT!_9(JCSOl^)A+A4%lS9Uqx1pR1_`jNFk zlg16C*P*_qV1^mbCvBW=KpkkN#=ot^SnDx%0q?j426#99XUa4!hOgZT>$6%uul!Ol z!t1Hyy``L;C@F$qFi3Gf^CfCh_rfL6baH$oXs*ZmK6w0n&e4*U=Ljds57vOp3F5f~*#BlsBXw zeV!YuKHe-J4j)mqw0M}4xd_R~G9W}*pMbW!qZ+DMcbeG&!jkrR^c6YN8gVhsOV^`sxw+8qNF^(nN zHDjCUuz48!a@pLR<4Jx8)|KC`L=cQX+MiJyn>$gZVHu{Ib0T(mAZ-N_3+<~xXWP^# zW`<+}YfOgupJ57^GO9t=gG+vhm2Om_kQF)w{@Pi(-d#v6WayMP*uOy9b&~6Bv$L<7 zxn4ysz&26CcB2W~jb_sivH_#efkr(BsHcbe+fCB+{del7&oc|mF>zOh&$OBz#+p$I z?V%(%3oZQcmh^rA3aA)V&whNIdNLI3BP*4b!hj3w*LqUiX7zN#N!+nfe<;a*57#;< z{-!P-WwzH)sXKXCY>|anScq*&0=&tYo!kcNC?Gh zmuIX1UQ|5_=I^lw@{q#tZ-{08rOP<#T8(#P{Z74z47`^SE0w1PNjT=Qu!K-{9!Cze zXV>ld%=Y@4?G*`_lZg^_%Z+e7+XKQ$MJSro!n}ov-kAn&<-Reot}iOdYLdhu@DB>4 zee+i2$o_N=Ic78(13V$z-Cc!CSJS$iZGCgDMhTaK{*yhuXZcU|@}~Pw_C|R7K-y8% z6g*Gud7qr@aBw)UHZ4Nz3aBXC)L&7tE8mu3U(DDa$lZwCOn3ryhSs_Azg^gyz+%_- zZ>Ye4`%PJ5YYEo)umP-K&mkq8p{CZ?UNghO{L*1J*W$py~PdIZ61A7V=GGlpMrU^O4m@~V0h_a0=ikvU4!8O*1Ft*SjdGSlgTnlUt?~e;f#9hdjcUTOHntO z>`}Z1#ytd4cfV30ZhHme%;loC(163A5~^Ofu-1ore{OPF8VHaxv-M^;TQP$v-(~+- z1W9neDclhR;CuDWXbw}e+Lg`UcFuDgYE7wp9fG&?E`11EuJaRSK0yF8RXOZFQR>{# zgeK)G2Yn~uli*2~1p-nB`~e|4@C%XCkikZ{Yh|i~Qe3(b{*Um&sxv!7`}dXsEh^Un zIWFEXLl9wGgSrXqE54eC~dT zN0fF%=xM9kw?G3%<%Ne!{6F=o0P44>7%yOeoy*MkhUBZP(xyEu-i>P#)%|}1D=o){ z(0H8C1`vb*X5LKQ{C*s`hP*GP0n)NRvi$=(>Yy)cJ=G!o9UQsJ ze+jV_mtRb?J_@6=KuS_0RG8Frlutj1CsVNdg#n}g=n zs1i%-vknYJ&OawnGV4=w{{4VPPNESBA-`80k-k)!r`StbF&9Wq+On_@y;=QmEroXF zXYg86hx*CLPbE>z6q>~xemYY=j)p+Moy+P%Ebc(t-W&vRr@fY&2tygj9DZ)N0JEqI z9l;&K#V}Vy4~}SZGuIzyx$3&0q`3ng0aGiqK_Y3~KcNWZ$+WgA$k~Vy`HMdFMc`#B z*HyFYb3QS<9yjt2;dwkq8-3}9LJ#ggvOS1$LhLcFO(em;o3R3KU^6+Pysnky@Vzdm ztm;wVSeRJQ)oUwA@x?E3Cp&_1>+%2ju26#~)QDp}r4_x28T4?Ax_6+AaR%#vCp?Ba ze`Lkm&@wC2!g+3zJXMS-)4_Q)7#aZjI!Zj&$Jq}AZK8lgaHeYfgeQggyGy|8GJIAG z_eqzF%W*t!6mCMn4vg73w}G(6n_d3n$@Zl|aG%lD6)~Y}SK$eye8g>cBaC88k+Fu` zHAg=V&u{z6=z=`^1I$;DZD0CN{Gz*_fUT>?-=18t-(_DN6~J|0_SMelK(dFwF@avS zf#gy?#^TW(c(?Sm3wZt6YNyT28s`qY>^TfI!4)V3ohRA>mu*46xmXd2JzjQ-=@D&`{ErZc%9yW+P6c~vv;QkqhIJiB6g z_3^x_tL>{BP{_V|O`t|fAiy?<0jRQ9T)TTJ z0<%3g7%jpW!)(FjO|FQFK$;C@p~Hi5xN!y{lhm!+=Tf26=%63-3Y4}kpx|U^g1p0> zEjoY~jx%85e2PY0b=@T6HudEI@pFmHV{s7j4~oJmdarEQUXz{>sK}%zPz%CQb+s?O z2SWxbiZ-dpIAYOIqoyH|PbU2^@(Jk&S9wR!PuI@$;|@Gx4cUbYZ7%9IU@``l_ zmh0reXiYO%Q3}mq4L%zo+<>3?=IF;+A=4u$Bi>9)2vbHR355yLe=NCT7|Eq8$Rz{h z;vl&sagcj+kh_P;#ch#d;J(=j=vE+Z@{8Ruw8Zzqe?T*Ab7P0i?ruTKu2<|)81V*- z_#{O2!}#hT(SfvS$SI>cJ0p`r>`;C0;PAejQH{~!iH!L)W6iM!7RobCZW!QF*YyyN zXe<|1bPR6S{?vMOE>X^OK68MbJkBs#uklMilEFooJH}Ad{<_V$D_FgK7nNQ`?F`c# zMl-pC+nww1^`Y`sH><-z)=VSWlyY}wD)ogjPhdX$WRAig+`iIYee43?K>NzE(FLxG zGYYP)!r_>)F$I@-d*Hn*-s7vQVlVUBYBu^t8jv=;4K3?mShOnVSy)*$`7ZJV?u>Tl z4uv8YNb>-ZI(9491^tl&SAqC?FgXq?NALj`H(;ZJj(Q)_7f8uM0V=#hv6>2udkhNi zL+a>{M9~)Y-EXOu5nhpg6iU1wIoxC5%(VaR7EBoo&DO`KeF1jBGu_{wZoYY;{{p=C zUb2Ql-P6yUWStD=BA?xu-06{~3(=GtcS$2uS{hu&vHwHdpTI|1U4Q&|LJ|l|n4m>;HSbe!dLPJkQE`!@hOH`}UbPpHR(x2Dx6gzAdRthbt$3SR|H4n4PAg%Ks*@$p{vJ50jj#Jz z3!Z^#WFaDOeuZgrK;5R8x!f+4UO~>8OMNdB&{G&c7{8igrkRj3e!J6%oI!39i{qDu zo_^F#>}1JbXopN_a7~e4YYF*;z~t4rS`O+YRBcp6SO3XrbqGl!`a6!IfxNobqz`f9 z{VItmjG9~vv{x2tdql&NEV;-Q=;x2s2EV{USKIkEvD8m|%uh^^=ynZ60ctFhg69?A zS%?eEtt@NHNiiW1r~Bmy*}r$W^9s#+2dg$1=RC~w1lQ=js(+`{m41T6n$~ni=k^*A@f(DZE=x~8{1=nBmA`&4TStTR!JdTb#n z=&jDHw`-w=7EE8NS2G{%*|WFK>kDnv*irrQk6)(=7v1Oj+4U{6t8!vhfVlRz7Q{<^ z5TCosbyNHb3akn*c1q8+<}aUG5LL|SVa2$U%-eaF?&>w4TWe`duY zf1>n(rI4YuKN;-Sv9k}q0%;|qZwU5-d!64*-DnwV7_WO73Veh&mbto87+r0~mFZ~} z5GZAe?s`B9h#RvM5LTbQ;bW^AISF7IxPXjnU6YMhnhH1?vb1wa(3b94F@LLaXz2e< zH>qbGKDqVel@1G;ueXr?_B7Gi+J{;%XWBaY zvEN)r2{nsyE%&|o2f|zkW@(;zM5Hx)Jkh8LJ#}d4uV`2N}qgkR{TBrq)Jdg zGps^TrL>#nAt=~sKh~PdDWJTVhh9ZqvCc=R?*YHQQL67i!20rjOWL>d-F!NQN?EOk zURM}u)w)FwHjy4?kE$-LS6;shH@b>~F8qU{m|dWN-(q(E!S>-2-yb*V%0+(D>q;_R z8AB-Wm(3gG-?uMc_RZ?cuPC9))tO(DS)F;9&h+(byje98AFpVT>&&j-InHpD1!@$Q z4bF64G4gu5EL+K zBBpR2xf;9y%2n@;Ez{9{5A#Q|rewdhnOx>1HIpov>6a+8C9t$hmaOMfgIA+#Jt?1I zqhE6-pgPfxRY-t6^C7|6L4ijpfZ0qBemm#fhmuDub`GO}eLCvs_2wXz zOP2iEHLM>0&gMt+*I|Cpq`6e`2bXAmY*WU9)eiG9alT0E?I&GF5_c4E+*NWfpY{Rv zT!5vq^h)!K-y_Ixo7s}h`(;liuDSm)y(1$D;TL7@kL%JW-}9U$5*b48*1_%}L9S47PoOVE$o4FLX(IcATsLb+>|4Ta>!eKpGUb^=>n@;O?(En|=M zRYR26N0*F$xB?DDRC$gAjav@fjT9(fI4q6#4JT`IX(&Q$0qi}oNar40wn|fxPG|iV zvh$5Ubp~RmRq{KB-UA=AN-XXkj)dyAnO5eV*1?&qhjKlQmx1&VDlGvX`fj3QZ;(T~ z|4wbUp5Lkixcza&HFNy_u|rBdA>^asux1l zug8xA&<~zlXYlo8)@*ScC?4$$qH5QR7_QW(^rbS`$SHDHUMpv*QRNG+|Uup{< z36HC<{(RQc?wZFrPryhb!IRVJy;bgXMoGXjbDTe0*J94f^2 zy07HjRT;u%elHNJcA7ze67>*z@;Dw8-3R1b*Ta4|73KE^vMr#ia* zd!j~+FngNOn3wa(S$OEu-;#&P$Nk-`GF_*n`DXcjPGX$#fSv?`s=;FdiSa<#Od+N2 zv=DWedu-KmL+WX^Vou-#Gd}?4LI+H17cf7dL==CK$~Wqp1~zzC724s9D}X@_cVC@* zH)n5|{gl1Tq zGE)7;%!P9Cuc4B@wh|_Qt>mjd!W16xQld24eSW}S{Ht3sLuY^Nvp)Iu!pE$%V;7b| z?ng{+C~L+qEX_X(Se)ZCmIxQ-62a559P^0koY+~RBWiNIu{*?Y{~nc`8#_wkg&fwW zQ%rrlhCW6-%XTm2r$nZf<)zkFO*_sBezuV|+g=98nO^J_UTa;X<>o@Dx zmwF618c^^IY-b2+v2a*a%oR6%at1yh?}4TggYYdZOdPj_kqVUUn=^#!Tb7pA+nDEn z#K2^E*voatGJ(HX{tBPE(Is(NHHO}+iR*8!L2Sk5T`}uhHDr)H(jl!HDl5B&d^JM1%*Cq_JnnBu_mV*sd^=Lgt`6}Q}+pBwKb$h9O@ z&_8ugoGh?U_wBP_VqKR`JAGl9YbEMkS}OAz`)c9%-Wd0bgE9k-Ve22%M8dg!m&ZF-^?0n>pYi4fpJ78M+S_CNe7Hj>mW^`E%8wf zl&dW$iv-HaS)geD(*?@?%Pc5@YlHbNkhm_JXY9|b3Wv@po;}d3K z&9CSc<8g`3Z&#F6&nTYxhV96MXkjv7c6FpJ$@jpzpfAu#SbZ6A2+@tQHD!MMwpg6T z)@(%=fDpkIEtwKe{>qhDpDD50Or!+ahLY`$ZLjsoS@wFLoNE4F=J#U$D*3H%V%P!y zX>GSN0E&Z2Ky;y7=ToE90qk+kc;)EN(tdyMuJu}P{mYwua-w-$zOtFw0*ST9Mtqsm z9aD*TL%NZD(?(9UsN_c2m@2TWE0|XUp;$=WZqiWp1nDw{^RnJMFGWwWUvRSJHMIQe ztiLPyJ>P#) z<6jC5nV-DXC2PB?=WfRE4m#Ut+n408@167TWl`VtUof73d)jd{dFXLk!sSou3!zfX zcWsE3NN9}Wrr49NEO+Bf`B+e10S97Zg2C$-44y0)%Vfa_SBxJcKj~2GpG7gmtC`32 z3Pvv5N!qR=xv_q!o&yfGRrczf`2OqtECf4@Y0X z+1oBD7PRH7}W0 z>~4Hl?&g!N?r+{9e5xK<97+}|t!b0mTKZl=B<~W-`(LY6V=$Q2M#qbtA88onvZE`C z{rMeg-D3wgl-_9fFgD$0^oC305^8*Bl`5b5QOW(n!^y=KrZ7E+Qyu6sbs}1`~{1 zSA;jt4nJFd`5moq_sRM0<~}+9;CV35)A;+n|4js?^GZYkv?^n{Ikkp*%pqJ7LvRy& zqc?Q4eR=m#>jP3UdP8M!fM*vLLlDVSbN?^2j|$!P1Etd8D)bMGQ-}FE2~uTE!|_v5 zr>1d`P|6l2v?vF%>8_mP433ol7l2ykcI3g>?Q+FE#^&x3-Tth;|M%WK7!=dI zeT6dLK)W+7?e1m&WgE6c{HmEcm{N{{OMQSgnri#e((qpp(nP~sEe)f#aAW#kani`? zfW;e&Y(*wE8Z{87K;%_(mn4fAL2WmM=09LnHPD#o>w}+ZODa>c44bT(#6@Ov-_rtQ zmr8138R~$)Dy8#TRQQLy+b8Fs_xj{C@_e4ZPxw32{}!-VI~Cj_-EXnutDqh|UAvj9 zQ-DB@4)VLKAN<2+6`r)7pHEIdgY{3glWc5oAbkGf$&7{ht1A=sSl1sdZ|4&XIgF2x z4l;I%32$Fs8au{b4R!!~GHRB|2S@eXpNg8vo0{+Kp8KH+rVh5bdWXF|{)g@@8<;L% zS@WOp+<%|Nz(@_XfXvMGA)zJj^}Yf1*$=TmTk`MT*AsX66FbjugaYfm9-6xm%QkQ0 z!}jIfVtuwR&yV%B(K%Cj#1vO8EnlZ&2W($n951T%zGgQu7{*YQI=F33o%fYY9jd~F z-3+&^BGQDUDERlaoU(DCaB-9?s{aBkmcxa;H#Lveo5`fA<;Ji?7|`D6;+>)tsTEH! z9Eeb4eQn-m{63E&H-4YbitPo~Q@RjuFo&mM@1-#EXy{R7?DvYPvL<$r4Ei?e>rReF zYrP$?rJ58SN2$0aHl2NIiM6HYXr4u4JrHA$`50SE%p_}>!c@y8lr{+g$kdV)!Lmoa zup(u&JVFjs%oHFn&C7zgf|kq7!$`$p-9Fx5oxG6NX^bUfy&1#ru(zu7Au0inq1G0D zgsIN;oBO>pU4IF>mJPVQqijZ|FN17fHmeJD7JTR;1O5Vl%YxAl(wSZBY-+WjS#a8M z1jRmrixYeA5foHNM_hi3k1=GIZfpTy?n92jeDLMhGIE%Wf3vd!!&8hkU6ciHRrTAU z=<;Y&yUF=`0US1-Kk#j*a^Tc+pd%ISD0t{`suR4gA>psUDo2{+625h>6-J^w3oYLfP%$wu8NA>zh= z2_q@VMYqeGG}PM6zuXjkW*XT`LIuAMupZWuhbz~3uUU7m$~9;|w60V|LbcD=d%ev4 zr%IrsE(e*%ZkZWlTa6t7%>DUUmNUD*!0XDUZ?XT((+p$|ME=PP%t>)MCp(`=sW-8I zYE(;Suh{qJc50P~UEH#>Fg7tfmqO4Px#CA{uPH7@KxJ*U=8lc%9<)SdwLwjV9{ckb zVh2ErAmDj!ShpG*aO{S|!MuN;cB9kj0@n98{@|~6q=N{az=b~tOD_G+4mNJb)7PI` zdu)53FbhbI`JJnw&YPG|q?S^`AaENj_ZhJH!FWlRe@~XeacUh}Z}0hV@>-&)waahb zjebAHy5nGQa^(vwk)6~C9UyDO3u>$1iWNnNo(vJJO?SRR3PgbHBqHFVclg-k)M4S4 z-CxBI$k0LX9a>lm8O*sfHjyDO*YLMe0l)h&{PBw`-{=$tFw~qk{S^@;b$!?lay-BH zrqng6HFhXq_O2T`wQP1V0Hh}BCpWV5v%z~SRnLHFNW&V^f&P#ltsy-;Ja<}VNQ>-{ z_V}kpF;(J~ruw-yudSDB1zpe;t~-lkefYOutULeiiFd2q(y}{k`9-{C_t)|6m2cE0 zZy;dKSLwP?Eq7_BV`3WvU}DX5qRv}~-p+Clcig7?qa)tI7OU9f%N*-E_Nj=T>?>G< ze@amMRQCwxaJfCGCj|HNUKD@*r4qV1Dw-k=KMgV%oQZZ6a0>U-RI~c@E_$c|8uPQi zSc+;uZnRde3}>NpxvA6f3v}@jk$J6=T`R*88G3{@_f1n)hRIxyXtiX~P~B!k$)!3Z znQG-pQ9v!r&mBA?oNFCu^;V5reZ7^m&ki6P9mjZ}f=5z#+PVoglo6lDL ztOnbGbm~S)?N$`Do1gAhC&b;K;>{gqUb&SmPnT@@o&EPaoySo3d<%l=hC<7%3d_n^ zj}nYDb?|Z+pFZZD{y5I|R(WNYXzS_Fh&H)Yfmiz1PP71MqTq8TDd zp=#(Q#j~dd2Rj>u+_f}J;AAVje8hb5w^~2rv#{CVt<+|FwM3FKa|vczeznY^A$in5 zrP%nkw3j7Za}soHQ`P4b&%CP^aTG}aqx}u$u?K7*-yt9?)H;`@&^%cP>$t1juEMU7 zLs0cay&DS!>)8%g?)eq0M_5?3B@DHm*#)bCJ{+vb&>D4D&tse|<5SSG(u&uMi1IbK zTih<(J%B{0gKc*06GalL_}>tuWRlK*@#BuE|LK#na0~lEo=rTX{N2OvJ9%nGa^8t% zVZ5^r4*k(iLJoes&Ww+xX6)dh&c%z`S)I%;64p#JH2+oJ=$LG|HB@Fc2~4u{Z)GU1`&rCRzb9by*;ElLc`00Nq-P;hwJYTcVoMQ7}P>Y;K#`w2o0rsu1TuLN9 zDvyk$n|Z=ti0o^{V%xeO^p}!E*#6Aym}jNVYc%a8YSkw>e(>!<9K$pJCX2IHVacts z<1JDk0@)e>U10}+z--%0RI8e{6)Q^>pcp9)45bNRu23o*&CCkoj}>4$5goRVyTqpCD<9AXtOx ztQqHOl=v@-LY~4*F3M_JCq#Zy=Y36RL#>p98@%(l&=p@Eb+bYRnkk@{vTzz!snvvz zId20@Z(FA2e`OIZbWT-Fg5%(T@ey|t3Ce!?$3_rMO2w63y(wj{bb7Nv8StmBtd(3haZW^N6c zCnKTZ&stx3^Yuy*^?I}LI59+mMKmN%(*Uz5S}Sn+5=M`f-JQs)?lhFs`49fp$WO5r z(;LjuCjcw_=`Wr4k-}P)8#^M?_~owgSK(_k{%hNKYA(LsiSC^keC}1zN5|TVLamCR z-`PkiLS<*KQ0oAGI*BjTD$OTSU#OJ}D{@+PA09s@ynRJ(Y;>l@pSl*?T#LPuqqlbU zrM{Nk18mm3SXn0PFI?7}UDn>o(Vuj_XD9HP3WhKQMf1T}R{O@0Wy0mJU5P1_u(kN= z{?12LEYUrcmzb0v@Y=enA?2|$8Nj)qJRZ|Y9A`>xf(QYl3hU+#DNkKvN7-Vs!yL!K z8vOeLM(Y?_2+k6Mft0hkspEi8Txkoz-J^+9JGo5K^5bAMR-EM{@o?LdzFs*0+c}`B z_wqzIU(!m?mfZ#M{AdEVf9sfSJ<6Dfnjh@v0(-PBf5I9D-JH14&dW>)GTbWK`Ht|k zfJcLOP(#)xB#NpO-`iaZP;zB61_0lWG>zzwD`hPvQnlXbKHk{;Xx>JfEivC(Vb)@? zsS3p`2DiQtO048%$rSzp8ACyauzv@;>g3rELP%emGoA$x)StI9PbX=;>0%VYN_9vO z=d8z=1x95*N{q-4d&?4|3&R6f)e;=JHZi)- z%Dmjfi2mD`%?-7QF!PpHuL#|C0lxz9ZvK%2Z(atxO7rXGd(sxNRE)N?2B0H7EL^=b z)YhzqhdPBw{KlXU+n43WFstkc4}30fy+o9rp+(EebHnqnf};j4;+kXy&F_}Y@um9B;O3uWiN)6TzLZin|;uqt1WT(rQZ;EAFQei%B2G-{{? zhao$@)E8wXovabQ%(3L8LzJ|O;>xB1LC!8)%&PvPpinnUQ1hC(>uWCc>-w7f-tDOq zK!{MB6F+@PD-Y!@ad~HwH+eSBd&56BtCzZiJm)2;iN1i$pw@O&GpGW@UuL;u6xqjy zoLEU+Ip(PY?cDyBYCg=>Je-P{;xuC8h3S}!dD4#x!;2GulsbeFeN}Cp;F1oqNeWFAv}kq{jlnvY zZZKsZ!f=nKGLf1H1IR5#gK=UA%FM0?vw2@8N9fwvE&v`KTq`ZDuLVB7R`=40>9G`A@g>hS>EjTf3#c zr>U*g*`M0uAZ`g!5icdASJ^Gf?qB7g$C$>QPNY1P8|yRhwY<04LopLl`ONXD<=Ec6 zHqWivnBA?^p8WMl-fII>d3)N@q1$f;0UQ?%*R2|M7Nsr@Cd5B(*`EXb^O-#s`JHY} z_}N?`|8#(Km$855KHq0QYfP3r%|CASZKfzR%KVH-ZC{hYPcXSGKMu~Dm}g>y<_`;e z9((|M{H66xJIZs#LK~TK^h$h9Gp_{X_p49lpB_ncONM3JGDXgDY$ZkD8i2`|rG##q z#5An;J`&pdg_{u)dxx9xb_=z}NzlZK3fXAZ#+BC!*%Q^)#Cq>_i|pHeDP)J{Z6LEZ z-%f+JHPZ%FqlSwYu~8Jqs~%S#jU6c>6d!>;e`0Z=q|QfF&Sew-oyd6g4i9`i?`?*w zmf_-G%(4+g>0h|{o!s&=NU$b$2K4zC$`kxCl+>wax*c7N_yHN6sV4A(kqzca)<5m) z^01p|N6@2ew|NRl2t{9b>^K@h}O?U!N08u zRgS-WHHHU%``46fd3It~hy;7FhutKNm$=V)bNOqF+ttRUt_|e-sQ2m0x>a`C3`#aWN|*c2 zl%QJkRPyZKs87$pJ9izWlVZ0*Yz@E-5!U3^8j zWgQM@VebM|sNcUL;?0@^SgWfaLb~d@03U){`T2>uj!4s}{*k_Uf$t`P&;yBw-;}tn6Xe!`EEXQJU`DN?9$#Wzl5A+DLMI zM>JXYY9!h4wu#@x#BNyYUHqy7f4_9%-s>}Etz;v_^Q?^(&3Ya>tCevb8_H^r-P~9f>Yba{t++X^hw;`41HC$JZ z*C9-*v34GQpY643o8whWpU0kvbgXG>j(|+WI<1`w^ z^?BOO0dHS&H9dzo%u_haF>hrtV(-A~-QKxbzjq_y$V{VUcRzo#vU^XcRnA*ARq@rK z)-9Ar0w)Ts{gE4L{hR%P=>R8GBw^_GTl<5J4@?#pzeNpeK;l|fO{CiK_&79t$nOe9 z{6qe}V5x1m5?(~t~lMe*Tm`K--g(8=~lAwYJZ=h zI?A-gco*c-wSJT)dev5lwxhmjUCq29grL7>tF2iELKYR&a?f-}J4KWQGq8he&Hb*5 z4P;aCNK+k$5nF4$%_%hOdr-HCu4?9;M(66*GF~mlC;~}L6;wjl{q++vGvKAxC zf&Weo7xLoI2Td0GP3~fNT$6*%3AV`;s$|g72H+M}o6C7Dsk!C`4GzJZX1wm?E7ztrg9z z0er~d&FeKs{=iG;U^PKeA(k89>TY7~9_-a!$7_XGcZJYx4WsH|TW~~13R9W*t0Ia) zwN*X1qNM5k{;;rGZ&a~2rcbRmCO?w*N+dD<)kNLe+C<%`M8l-cX4`DTC^*j~riDo7 zRTnnkQv@9*%qXvc0U!UW9Hyx`S_^%N5iPTPs5n8ziSr8`Bf>*`Zv6Og-m-A@v$Ky1 zIM8pVIm*uFKr8-^I|1>=#*fi3wXT^yJji{gpF4Y(`U`SfS`T=r!_~$g2K=NmACn|{ z)}a|t-aPB3oKV}bOe7)pU6*;S&Ft~g`D%AI5o@NEqU)NYuw;e1J|#-gQtxNCY#w=V zj!tA>Y#W;&_v?9^*`azqa`il7>zS{5Zl@lx$SS+0>der}P6VQNqpc&XCy6iIxk4HD zA_6;}r0+kZ>GR7v?;?M#7r#Q}6KZuKp|mu0aCV-KcdzrN=cn>esrkchhrB{Vesq*2 z%3rn4w<8|STNzE%X~Yu^qY~pMrDnpkzhSiVv0Z0cd*dfXy}Eq|n*ag>S8Bzf&i`Yu z|90d4gT3i-2Kz)i*x4ifu%9)1r2k0P?2(pwidivXYG$MlEzmNbo_1($^{!CcaMFi1 zTo-B^DmE*22#J7}4W??212jSj4>RF`WWgbiy!9VDx34sfu#=A+qsZmUc(i#IAFwDcBbRKtd9fp5J_bGb(%V& zS~0>#pAl*auyIeEFmjm|^@j5^OHv?(Ttl#LM%*I#8VC1t*ZRY?k%6g0>g-*VXFc-AN`8<5p^93#fEq| za9cRv-KgDPF(vW~P_6UwTC z03e*z;OzPL!tPeBD%Ppr8FO#X$&I0EwkUqwrV;#cwW)ZS&IMha`IPz(3mRiDBw0VO z2SyEebeU6N>PSYYDo9T76;Yq}1G5LdAia@K-*(eNQ%k!H!Tq9xd&AX2#&i;#cH}+x z`BnS*GCnVv#y`ok?=qMDNopxO!`Hm3k!fIGvnB@f8Bw7-PGG7_DaGoy@Jiz4GWltX zhRo={!mLa1!ez`${;D*{D#r}rvkpRi`N(&|_RRw?ym6c*(qx)cV^ z-1pjj*e7paiuj)gxEMBWUs{M=idUbX>Kl4`4JLmr?{sTfQ}%qPvO8U~5;4tViev+PQHZhD-4cjvcSosu4J4HKt8bSBr% zu(jrwHshREqeG8z^#4QZ1coQB5^;oSz4I^7g)dsSrDtEQL$%48b-in=j*fS)t!m1R z&9SGG)US?L)y}gVRM)Meq~g46H8bBv2vbk&p6C|4p$oO%Mgs$>&mOrD%r9@ZSv5tV z$1ZM5&-qzxl~d=2TF(UtmHw#%?^hN)JLl}42*sqdj*~M5+P>`gh^9Wu8m<0)p)nPt*913#ZQoeRPV>SZDlJJLJAv*50bzPF^R3cAiDNf?H0_XoM!$u}*T+4MdJQS!V+C2p?MO7{09gwaDsQBoeB7EuaJu zXxzqXnSGGly-^-bmhvb(pC(Y^+gs0rk0)e4IxY}tIuF~QTratv`WmN{&DO<^u!!kZ#}>hpRMc(Ly)S+eIOhf7ae zwY(M&PUb^`IVqTLRR1sQ&#|ErEo1325)@NB3EyO&IXYLz!)c&ftTfV8Qx?fv8Vgmf zSydz511z#I5h)DrQdN&s?)=3SYU11<`zW@Rof)_YeaBYDS*7eUniD4#{SRcQD)daY4SqLh z>s(xXTw9H_1ylctojrd7WDY=w9mY3%f93w3q%PE^R=B(AT4F{aU{VTd!x+RmjaniE zRBn@T!@EDc)ec@8B~#%GVv`#@q~!J(N^l477z=N`;H}Tw6su{O(T4*h8H*l-3nJ(^ zP$5H003q6RVPP~E=9!Kacq0lEJzV=4a2zCE;MuY6f=wWP*-aMvvOimjzinY8&-Xj_ z!ME@`e|z5~WX3#;Z^|L1W}H;HFxXqBhFH$!2i}4y2d4uw2|#^bDVCm+8uI$e__wA) zV-ik%|I0ibATwC89_E8pEV2dW&)>#!8I>> zpUKZ}wVkBui%1mhbuP#7h$4=(Zw%54h6U-5zm=6f!KGs~G9XB2PtjHW)F8d&tCRiu z^Ezxg@Eo!~Jl%u#iZb~tv*G#RM?Sm-ZwB=poej@QmkvBn2I-%z%7SNMkX~|ckbc94 z0G=oK6p(Y!|De61O#TO)&xOO!gdn|OW>DXqZ)UZ3YS3QMML~K~HarIf=_SL0^!L^W z@LaGzJRh_L8&G7H`x1?eSk2I*rn@a*K% zKKPjsv{#hL&o(Y={Dbs@CxiNKVBeXcuY-d2itY{4M`XjZz18*?<~1`&U%oED&o8s# zQJjnHcQ-zZTzTj_Q~!G?W-{&nJV-Cd)c@k^S?M*%ddaXL{pbvQ z7wiwuF+qDpnfzn3;prZv7YqpM8<7pq2Q5B6ioQC@AHM^$;aM4^m%JII-?=ux*G@j| zGk!mJ`N2;n|8msF8T{NBq!&CH)c5#nS?Lpk_KNNe(p#R*N^(0k^(@p9}VfXQ9gvelq!AWN*^d{~*0! zKv3UulpLA#%Y*iczB(bG_x7yxkwJRNn?d@48F+T`DT5!4-~RA*585wU7nHBehVO&f z!Tf(TNIyCozLhQ=`ko)8fA&lkd<%p0lBbv2^tn`C|_KNNe(nn;&vwdbT|7Qm2%ia0{etww^kH&AG_t*A$-wS^756#9e@6)s2 z{qcA0Ghg}y_nWm*?*%G);jiqzz;1mxtYb4VoOH>cU091sYJEpK6H3HM`#hNreKtwF2tnQX~>Va^oql^l_q`o0XC zLcZTr*)pB+&u0I%MLGh`2e!u!rh)cJHcXyrCpardCjHUS42pO!n{Bk_hk5%J*~XJC zZ2gu5%JO!>*)8-lMbmdX)~jWD=j_%pn^fV0^KFiY&$sdV%siVosMM9|Z%7~AOCVCZJ-DK{^?n5?dWk5I3b^=f~ zm>mZ~BAIJ1(A?NtBCfxg4R`Y1@@BBc4Ju{z-VGdGzn9tRJEGW6KQY?DOI#?5g zz`J>DVQump{7*Ve+rd_O`j@WS_E$|hzdZz3+gE_xy! z@==W3=8@bWQzvKmNK8@h6=_b(pv~IkwC7DFrZhSjDMqg+Ltsw*M^tI+FSq6f&)utt z_YFnx82yNyd$@U4PC>ml1nU~Cxv+D(BtNv|v%(a%(--Hr-ai@n36$;(lL z+*lYdMfKLJ3GM#@BoxMa^1Ay{UQxoWkU{zYus8Bz7YgpuXN16-(ETgC6`it16fnp8 z?rC*4F?8EFeNUDg>X$ju|9l3YTbAdw>^>}XD|b06%X_cukbF7n^KN$>Q-rnREmL{e z*jr&QzucY$g}u5m{UF+4$paUmE$z>bKkpGTe1edVLQV$xRqNy(3tnb+(`*HZ$yWcL# z8N%N*{?_yN41W*u_gDT71;IHzdi2QcmY3HfpC8@$>%qB`eH3&TLHqmyh^;k@{Bb6O zA@gk9r{oKuNPI`z|G134QnaLC#C zq>wZF13NW4`;ypzIZY5bI&AG~WNkr__@+YXy;oO`JByLRt@jyzj0&wRA@fs&OlsxrMHxIsK zk~y?&)pTonBh)IJU~)b{PV0`_VH#~1(a`ORG}F0)e~61H$GL~>In=Z><=;CL|6aaj z$201glKDP1DVSYpYPo*sL{SL1LX}P9AKDs2TQ>M)hk2g}ks0oBp^^jS;;bUH1b8}z zLlD?oHi{}xWvIhPWfjBMB3>X4R4GCd&xY>MMV}9=U%bRlnnUabjA*xQ_?Hy6|e5v;+g-{@ygwNwxGwjNV2G71S@Q^CeZ1UbfZ=D4zNAVWcnDZ$~DX@88%F(8oO(C7Cy4dN#Wo0$>-c=EnTI*<{3(MdW zcOP4nbI5T;Ie)Au%4uR!?BxAP|C?Kh-M?B(-1^qFwABECdHjc#Aq2}>op&VC6{|?I zHQ*ITi1o7PW!}_^R5!WrVg8BH|3fvg{K_{{XtXab4sU;!6IQvDsh8K|Z}m`qtPYWR z!UX!0Ec$Fb%lr0cyTRpGbH1%ZnBNZvQLvT@F_|*DK0;aPdP{FB0Stmo98ZO0ou#bF zl2cp;HC|>ecDck%v<}sKr|ImCu#VoF<|hqy&5yOcF>>_7sR(bE|pL+?S&}|iz0kz#?N0R3um**_<_zr6G{A{^ovy(nGFdH)c+q&N!iq(^#M~!7f$-I>nsIG7M=>e-W?0Rv?AAS0TZ7MQ3%!v|sBwoOranjCU=2pG1;_h+zRq+*@ACw>zk;rz%TA6CB^r z-PUqBM+)X6b;vu|95=?!Y)*WN{&iNr98ThorBwu!)Znn?L?E+3Fec~QqFf@IuW3j; z9}fS;^GYKMe)0yvWB8|N`v^`idw4VQQ@1G8gab}{i=&|4VZ^*qk&xCnhQ7P`?s@q+ z7}c!8d_-IriQR!N8`=s%I`>)i)|bm`#!j#oGFh}fbB#rSy|-|ay$kyjR@rpCjN1!2 zzp6SkcEDVDRy5zxi`c#C<+W86@sE)~kFfr>LP3M}5RL4nOy#)%W^G|)I>txy2`&`& zS6h31sCJJzw|_p<2v4(U;_wJN4&TSQLLsDxl@(2#D6Bw6h`?d*3qm<}oTuvpw`AX+ z2$H9tNziT`Gzx%1^M`s%H`Uu_DSpUwB<4LSu9fXGt9!jS?Bf&$NJXP4k(}_kxt*-Q zhzVD2oUPTEVlG&SdP}SN(a&A3pY`-}S)J?Wr$P2rLiJC=q;z9-YD~a!! z@Woi@=y>(kQKGO|CtaCI7Sn@%SjGU2X9uICJ$cSZ)QIO*wl5cg3Wxwh>|KNp%w2}( zC%WluwFf_mF2p(Onph8oCaEV2gT`5;`@j;BYg^cBGfw@ST9-u*~k;2@fK@{keF*9-Yt?5B8j>7;SHZio{8k0%yTl&DLj#g zhfn1RGaEjQ=QQeQcBSmYyG5HW>aY**7O`pG?8CcdfqSzL@0N$$n|*kUWf24?i6-iWHF{jD=nmn@88nj>vx+d1c73Bh2IZ&l5oFA57O<336(Gg$yRF6c zJW~;6^K z#r&1=2d1wA!B>IXt7`a*@YfhgJmN_35leK5N7@Bz;t@v;S4||(Wd5e`2d1wAyN@)x z9P`}65!fRO+?&wo-_8K_XLL1iHQn-1rpqKO{=u(rn$bAL;?rA(NuRe9#Y?Ut5v(@T ztbM7);ZSgwn3iwjLxO?R_Qk*-zsknI{q}9G`328FQ$o{|mOJJEuN^ECtc0)3*>pC8>ovaGwB$ro)TGV@_80wYZbBY ztk{v3%^`iGJfG`Ly2VikSRs^R(U>T)XIut=-(xT^AHVqa8lXWB`g7-DvVJa^jLk8!wpW=Xne|1@cp>Ijmq`NM|JE*|zho|n%qIS|Y_Lj?DuX$FF z^y-$?UlaPD&E$D}A>o$;mp#8D(!{NS<)_tFzc)LY957p6G+by~^1x_~uN+)ZUOm12 z({$=^EolhKzaa%lqu$#f<+Y6X%xycE4wAy};|=R&VO93BO|M|qc%l5A!2?!e{VVXE zY}wKCrhIQ>YCv-M{dl(CRM7I#`KeHH_%m{Iz4gb`(DKn~qmzC5Ap>w{LH^0@oAY}u z8$K`pSjf^Xm!WThr{0II2pvQQ-}lY`~p8$hSwYiJu#v!J91~vgc}U$ z;Zj%PbxMR6CwWN? zS2JQpc7E3;j*KRLSeU9-<_BEn2Af$SOPm3)^k=mCC;R#5yjVDB*fi0o=DF`MnjN=* zXaYX9+xSZXulPyRUc5q_qBk{ICPA1QS?6n3L)DG&fWh#9T*mV%nl>LiEC!GpY9mS| zVIw7^S_VMYuJXGb3wRg2`Yd2;-m6P@WwU@?mIVy3z0tf93;40EyBjQElg|RS)dwuX zPWk_V1&s9TC`qrP7FfWnfCVUGzE}W}Vk`@={PUZq{$KzyS6}K+{mrPh?RxozR%KRX`Y#%neSO?-y=<8yOJ*oC&zNz z@y}L7nx13IpCH;j@*5_3F_XMcB)uk0gtawuUQ?{m*WLUs^XIq1d(;hl>l>%;Re~ln zbvGqXs18?uJiE3wIb;$GyH#2}6cOHk3mO!TtlMW0a%nVK@R&Y7vCw`d%-9A~__;r8 zm+_4#%xo{CO>eXJnSD7f1(No=^fS!g5zOD*|8xHSp1R!pJ(T&InZCj7T~eQ3#+@R} z-WO*+;_V@JPpH-Dl{wBJLaSU9ra}d7;)ar!Y0h3joy?v_I-ohWf!E~O3z@SgnesWB zKAkdG4zhKQa@iypxNNVRJ+rmL+a5#y-C(xSZv>TzL4i$v0UbQK0>_wj6d=!#AkPp# z&pnwu$D4;-o?sgeoIRPD)iu^Fa(wvwNb=G0hv?+uiO`|> z`y@-YnE$r)Vh>XJY$VZE!-#96!VYh8<#w%kq1|gZF{Iq2?pE9}bd ze@8375nU65F$z(EbIyJdug4QAyDA4~sT^~yYuu&N{2^xD+qU`4mkS&KAJaMiTf_?& zuF6p*M0kqpM#~+2)w-nFKmCnvCQELj%K*WV#h``u!z<)a`r*8K%R8S_ZOM|!BQ<{> zp(f3rWm`X0$E9D1NE$viSoNUDb8ODAawa3|xFqs>=FXY;Y@bg>w#(8?u=nCdu8D=F zV)U-GcH}fM$QJyY`g$q#XDaWf%Ky%1DnF7usoyC0qMslBXFeY*t)~m`A`PgYuk%Lu zq7Xs1f1*ygb|auyU?;+ovdr%vmtHlhk$?fz7n*~PlBIFMm}>OBIoDG)jnmChbru4|2VbE^8|Gq8PbFV` zO*Kr8*{CCA4I)LU{FTRpp+RHF}!nlWpn*j(Ev(vfpO{$=T#c9wp2(gkT`CKLawPk4RSM zD5mo*$J6wMb3BsIjMy*5mIOJ2pjw$yA#hbwy`8?`%$d0xFUGxHtU_?V=w= ze>>Y;bJRDHkHW`WY#;s)H?Rt04*9%2!jf(_`Mks@OFl=dCdg;t7LgB5!~Z+^Ok3?* zv3ki2`TP}Ye)HCU_NEq&cSJDS<(r=n+e@_lnx*XtgQ(>(m;RQu)y?W);=2_x{urOff3L`KQG4nAKc8ouMux7Cwbjknn zaIwB$Q%efRh#DBh2Cis;srz6|nv-;G_B{oBt4_;siQEgSEjy+BkgJIrPrp+8|fSvNh28tLQ#%^Z}H`|Q5 zZpmtTq5etzYW{H}-0ffd;;!eG(|d>7eq(>1SIDw^AcewwqPwuLnt)eNg+Kop!r~5>LiDPz@d#Ww z>a8#rpt1Bdy;M)gqDVs50CrRVSc1>KU&*Udl|gHBYr0x{POWuQYwyMFkgV(BO7*9d z7^74IC{rd|8AfMYd$WhY|L1%=9;%G4=9n8{6O_PWiFmQWe&wABHdCP6_#gHw(plUC zwB}Uq3D>FN|2zAYC{=c;EMC9Y)}6IqDa)k)ultps`*r+}`<4GoU-6Ie7E=x0X7m-k zK&XxJ?(beIw`lK@*4Emb^J}N9SRR@mWvX!Q==2pwW%e)9R~+T`FUM;#HP7sy*}r6^ z^(9R)K$R?g#Y%A{r>|HCsr~<{uPF2PGY>&%_1@>`l*+=*!^)+v&?YS>PAIOKCOdVk<=dw#6XPb{#XtuJ=J z5B+VAJBl_|QSmCfo=f-M@34RC-~IpG?`Y?-x4z=IKwoiOmcC*oJD#;OAJ&d%`!}g8 zUNSdBOTM~dhBStq$7$>HeX563ymf{XwtmZN^6ZD;7jK&5uD4QKj0iyM%>YApzpsht zOOMMb;j1gc5id(!kvJ}z_<^sj&~icTr`fz++6pl}KHqIWTWy8Fpk4F#AO26;3VYsS z_u=oKXGyv?S#t(MbR#t;BNgV__Zb4Kt;RqlS#*>A?5+~~BQ2>L*YGqWU32WC2*1l> zSp)r7nFS}oW#oW|{Ln8sCf`gt8O1`E29 z6C?B&Sv5k(q>LZhqQecOVo#r}INK z;nlTM!JA}gk0j|lO`4|$(F#?OYfR@-a(Q*eWg1;Pu#SA=+iUX}D1MT?Hc|Jcc@D=8 zzer=}ZLSDebE#PIX^WXi$3y43R{Ne z$4`iO=N3kqxM8Dsc3(2xN~R|+;h)rrc12B&uHh~fGYJ%?6vfjg3)|C*k+!GjJR#}_ z`gMth9kPyq3hp|cV3y(^PQv;1wLmuB48+g2uX#QKQs8w5SpP?EAQ1M~8oY(2QQ#a@ zopv!yBZ(uRJlT^>%`)Azy8eI={iiSAa5bkN$k`j?5Be^}O33j(sr8m&nKz`4-yC72 zW2dvH4lGUCuvEUlIwEQ%Gh`td@NP&_2f>l>yh^uEOaoaDX$3E0hM*dhR*;(mfx))# ztJRBxrlB{^>R%H@f)qm8N<1V?slS`4QZrTNT=3D#U9c{;UTOdV>L)7t>*6?&q>6Z* zk{dfEy!c99LG7=Gf?AEgMQw%^R9}PeD=X%Y~+F|CWP-^nxdY^s&FovLD~x;06W% zwIKcI+q2SN3DQeu2I&vnm6g88rPKbSLHc{y{v$sR(hKGX=`XU^qoWS~8~ysZ11DK@ zNRXwNxZ(8oiK@^(=Z*e(SWQss0=R$-4jmI^4Fb`eTG{z$S=yp^9EN|v1Mv(NRo5m48YaGF|8kL;@8dWC! zQXAqXgo#OxnHWuyBdHwgQD@X9PFpo<98|^(paI$3SxvYv_fAwVv;zsKC^P>8 z|L)$dFPI(IdoZ%s!CV9D(Mi$d*)+vrd&{zjqJ+f1m28A4iMM~pSH5HomZg@kxNVuy zsH>zJLt`uiRnV{&f2T*ZIUE)H`=8PNqz6GR92&K7nXfiOA5ni7#b@?I#lj>b;m(uo zn%o%Fa=~Dt7!!HTk7JBNuRpvbIsA(=6w@ShYcJkdweR>7qkgw6irde#7R3vASc~F% ztcnsNDzHR??T>I!cfL=98Rrw^u>0+OgGdaoJGsal8qO$EilLZj6U1V9c1RO2bP|4{8HX7dquh}ak)x- z$*cvpV2*E=H%FzB!P{QzOR%(9qIK;rihOhXlT_Qo)b@?-H~Xcs+n=HmH~sJJ`~4{s z!3+-S!(*T(&IIVFl-OEh{_&dFAFC^7r+nVT=kVg+QRIpKDtEV%eYvy-Sz^_QVtrpV zq8!aUYwn2B#0bzZBEnx|A}=wj%#!h{QKeeJBk)f<_vxc$x@*m-H}|n8=$hZeBWHhI zLpd{dltr4oh~-__Df_oj>t?D{;NyAr>Xnx1RXL&7b(+rb<;f8bP7j;+4GbpJVhy%m z7i0T{{e%p^VC-D9^|9E-RI9)Bdh3GOC^hH~hBE&tI}Yw*n8mlY@AAzX!Tq-l+>5ue zdK)J>wV^TX=K3VV)}(tk{(0Pt0kwHsqj?_={IYiF4FlrcS1Afm4#!pt{MokNyy$6W ztvA&_=RT^oE#c6ZJ+e~(4&8mq>;yQWsSD^x)7bum+Amehk-V{mCWjX7MIV1SZbWIU zFn2`%&NEPt*CuZ0zba2d(Rrd?y%FWsnIU%=fpS(dI@KeJXX~J>>=Y?0i-z)8Vuay2 z8#L|+mCS}IbWU>36mLWs!TrlCUy$@;qG5E%Hw;*n$B9Tz=LT2~oCdo?_0Mve^`;YT zmB0$!{%4XqdjSJ^DtsBu-h?4(M(f6)zI;BK45Mn3+N^9+C(7fjrNR=GR*7I~8|>zk+ZRfLSm*wHpVtt1ahSy@}F2yhUbB=c^EmoM4lQzPQIV}#%TZH#VK|F!xc_G)|@ z86V5L-CpR$C#0CvH7~p)5y08`fmBdi4*JEEY5|MU)Foe%vivdP`ns{dv}60|Ng7-2 z_ZZthzvRYtik%3-*z%Sc+iy_{WrnT0g$Q!Kdsw4JHUQIu8TC+(+JU8Zuxs-!v;)*w zE5p=GM!)~qM_ZoPC=?`z`zV-NTJNC^<=Q$z7#;@;LL?}K*C}iy+*|&AkDVy)y;*3P zs_50ts^C8_YA`mL_dln5bZHnOBOFW0es71lmL=b6w-JdJk)8cis8z>pu>Mf1I6iFR z2h1X>$N7*NI?NKLH($94LtmrJPkk+CBI7v_Y>uWSBfZewie4Z?c1QZBhTD)qI>?b5 z6n1*@bdVrOI?EXNE!OXvB@&0IG@58)=th*8U(6S;R4owAR0Zj6R*n{3KL9t^F0fEQ z{JD*M?2vd_Yd(G1o_?=evXQ*(G_D`ir54^L2BdwMSvScldV;F5^bh|2vv=5zfYUgb zx9q9OYV!p`sIOf(g}S?2)H}t_^Hi(qg+_CYtKQLi%+fylOnX1WYO@Xgt$ur)J#5r) z%=uW_l5N`Pmr?6RAa+6Au3Zw;+OAp;rdG6hwrmG>eZ5WGt|lF3j}{?1|6r@0cE(wG zTa(Uia77)38T-pJ>y+U(El1V(9p%1{=ZJjA#Kw$di&-+j9=Y6hFqC%r9ccCBC-cq; znkIbFIGLM%#6pBe%X%AP+1yPDjsnabbELTxADmuuPMn+| z!^Fxp+D6P~VI3zSv%{QxtNI|z?qivUoozJMvg7Meo6HyH?*0wy$DFFzpqAbFu_Ib` z*TnkG-MxTs@gacsG~lJi@Z(|q7|D-_en>UW~4YDUGI+#`=Lg^mt;z4Gg4>ohPt36+iBrmE;N2=ex zzU+?BqP$^8#lFoY3+a-Ll@S0m6TEzUYtX5 zSqJ@gu55l$!Pu&*qF{f5_-)Y)+^q_UGkeh%$b^EG)C&2_xJ}N6+u9VbWOj$ zK-9`j)iipVnY0_AhpMvEEKB4K78{PNg_&DGc#1b8FcCQF=RD6+5 z3AG9wx)%O=Mdxq%S=WkPoL%mlRyn#j2}|0;_M?iP=?;j3c%J{RYkfa34~Bg8l3QqoYx&H1&_n7_9ZQLPis@27KI_dQNPwF%ks~a* zacd^raJ{*o&uXF~YY@y5NX>0;e&qHh-u!Y6wWwypP)9X)>wWICH9V}-q`R~p5|(}d zaE}38yJ)1AcClKw9*lLX@z1I(MS%zu&jgVt)XPGZ-|-u7E^P)t-r5>pG!(qb!p zNX)Dc)pFXxcxc7bc3Wb2jh3ElUkc$V;OF_L+3}ElV!+RTvNoHax45@r@%lah_Zf&b zPaiD7#~+jLkt2{VGfuJYA zivK%R9QBrQ8@dQ}vf22-*8yY97HzbOy2BFi^Iz!4>dQ8MC#zT1-EXJ4_h5;*tIgje zsyk6Zor)jT)hYRPs8jc-QzwkGokF~j|DkzGOOk-I_kA#%*kp8VXYOZ0?$uwqccB#? zI?Q{vD_j z>CncCC=0;p!j>Y)=&IW?^Bh3BLdlXvlpp~x^C=)AL{7m-Jpd3y`+hwER8}67%2Gmt z^{lk}#P2(Jg1hT%kdTk+0icvcCpqOYZo;T>w^oU?LZMr>fn2sq&S5>$GDCaG$MuZ` zijDi<%A0v%?Mg#hP2 ztT%@fG;iPP?C}>hX);!|;XQHA$B3%2Z##aX%}j+Q+NfsfCbRY?5CtNu$P|CaTajv6 z@(L|NLpzxmwlb^+KDV=imC>Zm6#;c#Dt_QSZ*5H0o1YV$jwmEqel`JqYwWdBIMzhq z-KKA)KkEzLd~2_DJ?fV7GFZ%#FWC8R!8qPb#(O@vdi!!DldM%k-u`ppok(Z5MU;fU z?=&qE!nA!pS+4s?WYDZtL#tc=&?3enUD6Y^^D|Pn!E_6(Ur%TeGJ)7K)+C%o!o;}w z$=*g3O`h@GU7x0#cNK+Nzoba>F76xpm>b9L!<6oj; zu(Nu-&a9`y|NL502RH9JD*lIO3RJE)zZa{9Q0`6No@Z(26Z4a6(+J7sM1L8oqJR8!|=FQzGEt^D{|uIjR3M}=B{At5X+e(q^8Vk-}VhIeiat(7r{akmR77c|?-md3%83 z4ZIT#jWEj9n}gc_@F@}+v8{o1z`FJ`sgi?EA-`i+x)7bSMlOZmM{+EajfflOSA+JX zyY?%gMYRKJ%0t6?&C1Uooa&Z;+C1KohaxSz%Vxd{QywTNgryE{#hILA?pXu>NS2%+ zs6h67_j(4eL=DlGo86bOeuhVG)Q;a8Cbxeq?uCMi@=;qYG=fMTgR9rNQsdoc*PuCx zk3oT^OaW7>yl^`wdLTI0VSy$~b?UmBx=L-R2P`TT0zljHg9 zgZ_;BQkBVQ{^-7(+4bcf_hlSk)Z6*)^%|RDgAeyjd<+C=9KwCD`dP)FgXQA?hqQNr zkFvP_{}Ymsa0wfQ0Nx;KRBY5nQ4E5b#SLyS(Rksa^^zKk)S{wh6$Bx;i6vcEQLEL~ z`nBF`ZL76nOtmI}1VkWe#k-6P zasBBep`h$|9w1c9_-G&(MELd2{9|`V_(gE}+~;`v@=(Ep9;fo*A-tl^l47b}0P9Kj zbCxYYr|h`i;~rkYLyugG^~5@`#Pe%yS@eQ+W{xX(dAHgZxQE^8bc!B2^-%&j_Clp) zG&hRxv&M*d$FSam?Lm7cu^mn|&t$|oi}nq-9m@P-?OX|6SUYE>ZW{cR$$eVbto)Ok zswrzOKEzJU(JlBISQBN35=Pi17^4h+B7Mw{B*|@}gvjXTe^H60@^faMwJc89u7&b3 z#>_08WG$iOf3RTz(dE^0m`8qOZO}YLMwMDt5dX7!)v5Wrkd5?lQ3!z}m2;iBGe;V) zjt&F$hgpF|Ac2n5be|6`FBh!Xixowy-1^QPNPQGQ)<0ClmLi;3$|BdP1HFc9Mjdkr z8?vkiJp?fCu(>s(yjK6Lg_IJkLkFl?wRwkqh9|cU2e0QxMcktY>c{cqIAkbBSzGuz zl!*~QvLcqwNEzDS)?Q~;WXppYf85=95U--lI(I zKS|XUo*}9#F&b1oFiF+k=vjMFMLcUH#VU$$B-%|RPcLd0#ap5HXD~~--;+HkWj`;&Anl~FxiiAIGF#tVU&O}Y39!rwuhX7(ZkhdEt8n2(RluI-h*d&pu6}W{yk)c z@`!et-_+W@d_LTwhC0;HF*F2(TP|@#n+pUfn2t7@By}{bG$q~H6e-1~awI1?d-T;n zt>N^`+;y=7vLs87mUT7(_!t121AwXr5At9S57*sz<|Fn5vlU0Pq-&Psu(_MG7#*`v zFZ@!+Q_82*4s~Fqip`-IU|;guZtiDCeS+PP=08FjQt`rlJoUl6wuf9TCnS=sEfts} z0E6Ock58F5G!>4uGH)2+G`Z~Ngo>7G{91^M)r_f~%?LjuDO1#%x<2+a)|GzK_owt= zt9r0qO+PtN?51Gq2EbPZ3v@&4OK6x2ixQ^ap? zGVM9RvstYvSlyJ<8j$vNkYXOBD3JVGmkzfC`YuVJCxzv1u3ksCLtgyxr!-aP@%prb ze4VA>rKIj&#T$2>x!K)H0ZFRJLCvqgQ_Q1HjD$nao)8@^^d2Tx3g{_tgjxGFC9J*% zyIX0bleWcb?`GzxX075T+^k)kAtu{m<&u@`{;ZYRgu&9d_c|TN`#3G7l+R>#mXr#s zAz)RZu)=u$6GQwV8i~B=r~^1pPxwOPwAzdVEg@Wm4bgUft$FAdzEQSlv3+H&t82`o zGnp;ji(cawU9f&MKC^EI?r0&`Yf25Wyh{)F0}jjyUbb^PSoG7D`HXH!7D1BguDOiK!s%u}uP z;%7Gqdf??%cmko4T~lp=}v0`W)1jQL0b8Me6uW9x6?ficu}& zzzlQ)4!%=00_;=86gC$WS_*|?yJ3MKkwPf;d@#B#QTt=Losu50`B6%N>_Cu>hu;R@ z40V2!uv|I84iUx%vLe+iR1^bgnTA9Twv~u^+)Bm&xH)LWoD~u`r_>4(*mP2SNL`~> znTGSp)^*eHSTM6ObkpA9HsuyeboM7QYGHvl$z-xCcJAJd>@AiDM%LyX3 zzwOxQgj^55q)U%6pa({dtv za$rMdB@$+GE{2sBvn!d6Ng{EF6#Vm(a)34AhA-M=B&z| zd}N2g+GE73zQ6LD`+2OoF!^Su&eCptIu1VNPL-B9M>hZ6 z4b(qa8vV(Yt)bczZZZ1=-E6W4T1mfUcM>b1Lq3NGcOZr$I+ecNUtLRs7OJ3(5R_L- zdxE0=VSWOtV?D-$GeYk?%9@%ir)}HUb`XOHryAC;mC-1ReMkx|vcwTnvwvO5F}1m* z_F!!ak=bLTQVh;YCznrbOQ`6hP{#X3TVt=9-I4c7{uORkk_OOSm@n2G1Z&#p;Df}P zhk_|{=UQH&#=Ge=76Idp&@3^HZ)gfMZ^*m+Z26@%UV#~QQ{>oiOtva+8|kP zj!#H$j0zGnc}BP`6qBc4~)WdnYAWHzGD8@4dKdnjfV~y1cuyV0x`PI*%Q6%}%|!lN*rJ&h1GzFv?_Y&W8`5ePPe+{tm$L3e6q7ie> z2s=5s7b><*cIa#VPphz1a+K0$2Mp;vN`lSe1~olXi}rKleTgueDTP}NS(qf%W^o9Q z@#eZO^3vjEiSj_%*U>He1b(@aUc&z8Efo99VfwXet;2K^AJ$>ox+xt=sk-CR0`!F4y!+GzQBZXWf}pn@HWjttrf zhY^bWV7psevkh5)gjWzQ%P*=MKJjJCX`GQMUj{Rihf%gg(jgZ;{vpZ zWIvnE%K{|^AUCd%(T3tm-~XH`XkV$noK1fA{I&XU5= zWZj?60%Yfrz2fy9htLfcA-VN;JkK8yMj0@$e_0a@1Zw2`)>5l;h=_1l3Ym99nnl0M z&^>o2xoS&O^&Vt;u6Bg#CJ<0cGzOSguO&i9)^N|v1>3#6W zCnO*}JIkdH&&tZq>f1LvOP{`Uv-xA}F;_VLNMSn?w5eE_U%7`BbEt5k<=)<|LF>S1 zutL!yp)B+YT6!G1N!h{kzTNo#y&I3JFjgZ8)NEaQZ6c64iA z?Xc)pa&@Au%?rg^@w=`w*R#rYmdL66pk|Fb?JOJ!JDnt@!cM+>cxoa?OP+S@1F|HE zs$*FT9TmzaQJk6t&%_m zM%Dv?Y^@n1YlXR^&HR(X@pEoZiC2!D^flh-8)+kUx(!lPcT3C@h^*+`Z`0%wf}iLLfF$_T zZR5*^jI(5(x7?-~2yziztrDZuGH-V0S00H<8Rkge;4=j@u09uApd@RxbL>oD+YBcn zdP!x?3bV&>*pK0w#<3>Z-*9rBW?ue{Mrn&37$vpV(CO4hL#aIg{$GFkitIE0uC*y@ z&ftgjxr>W$Wdpu>7(nqfqP*2;T|Nk{?_K_y!&Cez-X*;8{qm-tYh?N;`3>y z=^I(SKTrCXR^F#FHZ)dpK^p+DKjD@VU+)_i3nS%Mg6-FV7f zAA2Z|?SWi4&s-!wV3>H0buw6M&iYbSYA>Q3NvW@=BuS}PTJj*Kg3<4Gi)5SoVcgCv zb1on92Ae(Jd~loSWd!NRK~{n&tU`>eR@T}Pp~j0r&Zc_6&>1VsX&kP3I}JS3@W-@o zEKPGChK$(#Q^a01)hZEug_AJhrWU9A5x897jEPu*i@$yGKK!Va06e>h;wm%Xgi=q zk2yOo7~c}Ytt%}^Kp97=YN6g=gUw84#(gF8| zW>qq^q?PRK4=uJMq{V#k{M}ad(~2S6?}5D4WY|Dad;z^6NSn*p-FB@BaFYnIaQUN@ zIWK7svZ*9O%tKt0@Qjzp%TY?PaC~Or>rGl^&Cds0!d1j}$D^%gOL+#{?k~fQ=M3Xt zc17dlkIS*Gh8wThTruv|Ky+0$r>5hU2BIx|5#R!{CBZ(E-z6gxdD|;Lrb@!p4;1Cr z;yH=%yo{o7VIp?U$Mowt z3HXX(DG1c}19)!*djzgvTC0qkekqZ%jHL-Ip zt%yyg{56{sWc3f(ZcZ(WJ&yxihz#mw3n0wLp^VB4L7_NSb`>9^%8GCiTB~znb1s7| z0K!WN`*dbfe|aX0*SJ?N|9i&_ed9Gr@B-1P{D@t1X`)T(_LB0&($JEJc8c=UVr*?F zV{*3!$tA^kzS#%`{MNpstAM@y*^UItdGwkcq+hkKPpBGMGfC>=Lnear|Sy3=P!pX}|0lsNcN%aYizN*Nk_+2xIZ*jenBdw*vlMJ%->h8ods769N)h-XM8UAX!nbR z$Irhilpu<@H8`$)-n(4va0)oJ^-GQ-QYGIa8@Qnlid!g_4XwVA;N3CV4Xm8-JAXFz zoCSdfxx%5T3B>Idgr(jqUcseSI+bO|wvQb?|8Vx%@E?$D@d(8^T*=HZSN+j}{k2yb zH6pQWT**9kX)N&T%!$Z@hD~-z+sgQk^GAb{!F3$X9}oW@cf)_O*Zu?`!sFPzYO|3b zm$ZrwKb9Rxv&VSRE&cs0 z(#eUN!rAF5RQ;{xD$AIcP~8uGS#9Q>?z;YSv?8c#7kyE6TDMYDyizAnDoNGDZ2mMS>zwFU4c*7C_8`+T|9JSNd_k$^~+#q;ma zN(FR<2dLTuq%-^*4zi`Sz^pZ=QD9uzyMcz|DAAGYka+?adYMI!omA^A{s$5ytrH*e z{1a^psNd*g9{6-BTW)APXLD!PKVV|9)i7z;{mfr~wZpxPSz)9wj+N%O$a<|Z6|CMQ z_@q}0mrHN3$pGz(#=PziQx!t1b-4RV(g#>QLslnLe=UeoPDWvLwCnR}ateqhFCy`P zq||TiZ|iGM^*spMzk^en8MqS^_EvjFxAmE~S2&g~&-}r4D4vmA&MZiOoNiY+f`qz` zgeazW)7wf3EKms%v+MN>@d@di?TnnayM%G>^u@u}E!hcW!&&f6bZehTX0#<^S)wJn zZNdCOG~Iu3>$V)7FfZ8bCFzNsnit)+Z{(opoSd}CzOmrmfY}rAH19|c!9y&92YLwF z0=3zjmZsPC(<-DdL)wA^j{_^v=G*b^o9l`5KSRswI!}r9vsAMIFFN-F)j4CNlY60- z?!*GZb66o)yYJs3k_>2&?@Z~~J?8aOPEa@|GBX^zlrN;!il3z1(QTIBAaI)b`)`$2 zD}H)9+HSiZKczSe>9WngW6ROV$!lyS3!csEw2lJ4K}lhM8ck(WHkTYEi{7P#3U%&J z3LG{n!xS>X)nph1UZ!Wtw@C)Gz5LTY5bQdJah*!###Db~FA(|{XeQyJ4c0NeJV)CD ze36+Adzmlq6rxw;kg<2ClPh2^KADFImgte-`=4u zm+SaY-pGPT=WU#YI)0Z5MGmy~WJcvD%a|Y2G8@^%`WJnsq@S|)UmW4ZJlvg~+7)$T zz@`)O@*>=Sp{}srkI*N$cBPE6`(uw3)qef0;Tp#HjaX|@A07OiMxZIyn^SVk^^^eh zzOfTCi%!6RsRO-a*Daxw`#&F6*87hoJs#QbuZq0^NBlO!?SD#}F)gND!7`_5yURA{S8CbrG=)%) z`~PCWzPzuaR?SSM4A{+{jpL23YZa7idK$w(Ci*_3Um_DV#upOAZx|Wjrd|*3f{KpmHO~y*RiKpTI;~ z;Kon%gVyR>X0Op_kg}?@VL{Lq@8pV1>MWyJV|J)hg?%h2e3n^9!3V2Rwt+ zknZx&-NMiKq~BrFJJ|ej|L+ok=FhVS>?m*CyO2zi2l%D0@=E_cS-PK@OKET4oy@U= zeYBb(btjc6!kFk(O(=fw-PZbiJ4etok`O>tzn zrd=$R7oV0W&vj9_;EFzVv|G_Q^xS1ECkqw~C|lGg`5>nCWPZTzCtJ4=YmbZBf=x8jT3)ki zpehCzO<*8b&ELPgrnNj{X$rrE6D#4a(4sUJrW}ea_`D+HMca;@o;%M6*K;oqYBd`o zM4{5d9Zqy)MZBCW7eVg)Jauoa(1=KbYMmhd2d)~xN#J1|E$o)8&XLi%dHb>ell6j2#s*|O-+0pAZ71YV(U;-fV`U(m5&`&e z9I5i^(LQbl+oVcb(riw@q)du&dr~knr0$%SV?JP}!P##suYu%N@I@U&*Dvwviqq5dGWtV7D`~3aN7E2TWO|*Rj85VSJPND zrsdf;8WBH!`QM~Ox62TDwNm1j)!kxqA(POZLe{d)wShceqyHg^57r@4s-z!(o0IfM z@~M-BBsDk^N%`fNfxj+a)O6Q+Ecarz5N3v=t^ls+62qYCi@t2p-NB&RGKiQo()t(&IosxKGMYreG_KR-cjT8Vcb!Ihd1=5&Sv5rGa z>z!auXH+X{*s4#3l)N)T$iZJxGm<1183=lN$DGlh{2qHI}uL8I$Ccu`)Um z*{B4WnBf1_SoRu;5h4)jnhl*flj52C0(b*0wMZEg0!XAY*h95+tOZ=GvRI4!ANV?U zfVAwnOzlMEa-D0!N;1f=G(Wi+o~Q)X{KH2&j$1={6S^_UamT}PJxqp|h_hl64W^bR zkutX>CsBt$r0*@Avvabb$0j#b)S&aNGZ#bEikfqZJwD}KdSw$AL8s!>2D?+sv1zFB z7iflMO+KHND~k@fEAK3rQeB5i+Pv?ju=K{4Rnp0mrYfPf;#+TMZ2~=f z^yk4O{3+I-QvE3rTc6c7Vc-drCuP&X=AZM0{*D{L-eS^y5*3F)aI+VACz1(I{%L(! zHSJ)NER$I53r!|!ioB>gZ&_@!)0a@F(`!$Q5ljV6>m6IO#Np5(r2nzxG(7OJ^>r_Fyl9K&p2^FRANdf z6MljD)^f1APn(l4eetq5V+Cr7x#<|0B5DuzXIahKa0Xp7e}Z^IJCZ{dsiKVZ6ZXzH zy5mSNWWkp4tz!*q3E!o0ceL_7b;32~?oJ#>m(CT->eKBv`hEfROyPDrLM(_M!kX_} zfBM%G`S)W0MhG5SazYkv3R$%*DF{GZl@j@rc4x&y5|ogJBT)YlKoHeY-H*st;LjGo zvWg-uD9^)Ndth48i_Telm7MJ(Lz)t=LV0dTXLKj9W%ue`(^YR|9UzG+>$y5+5UP*a zsrtl}>h-GLYyGqWH1VuW@(}c!r{6YenJY9!6e7#Pa zywc#2NS0r`Ri4eJS!Ehn>M@g zZCIt~)2bkWdx5goA^9w_^GQ)cTuJbef67{KU!!BSM{O$2>k|tPjP%_<_Zr-gW2JKY z;RqeUP#lbDKduA!Q7}k>gwd(Y<<5dw)~WKZwgnI9J4!YfRGZaSn4GdgZbAz(A#Mhu zN6YRs3BGD6N{rex%7ngO0)N8R_{eUT5ZyB(FgT>j6u!PuO(7Hy*(x7 zo^@=d)Ga*PBq8Ma?ezOAU3(;c=AIQY9?2S4d#G*(5`JWATg3&x+-HFyHx#H?R$0?x zenywOROpgr&A+5YxHX1fw-%Sl{ESb!4xatUJV|;Ad1Fca_dD)=D!yWB)9n;CUw-3t zI_ufHA>wH6aPs}0I^=`n^kQI_6sRdiY#Kk#us!8RsjR0}rbvfl2!IkIcSc@fEQ}dB6EFw}gh74GPn15nrKpSoJEuv% z7xMf5DQB?q#3rMi8j5DLZz^j~Z=C#AB&Xq}VBoIjl%R`z?Jp5u)>yU@eW;w-g&o}j%iCZ6%d+0z=ko)rHX@|jJRX(C zXM3<8J;+Q#kW`lSuQ2K zL^jfTCc*+K#|C$vx52f#HNwZYN7sL8J1@2m#mGuv!+uJ|S4fgzf{Y~=)%`(r4!)`$ zrJH3n6tZ)K>;{e!9l5(K(B0*EftU1esB4V?2NzUZ3CH5LRif?8G3ItF*|%tL6m)h3COl55hUob}9S+A*rQ<3)@vS+jtLIg$b{rx3{5Hh( zuxEZVV``E;6vt&J5xJzfjfT{q-PK+KBHcL-&9~!$eq9?9r;j}FxuqwdUf`v4j*gef zSb`*S@2~UUXFcM-UlvMvKi$1YIlbP0f6I?k-cR)3=g;)t4<2LR?=-%i&~Y*^&udke zaOaMuA{TH=6SnG|6@%tbT1k--#}O#u&4cDwJwi;;i2RH|>&{6U-ljBcrHJ2?w-5t# z7zeft<~btR*=~de1H$g>Eda|UiuYz>Ja#{%L2WwoD7C3wgx&Nuf9M;@;A<=}Vq-)K zVQYNvRc=}8WxO;RrutLMMQG!s?zNYvn{!qr z*C9#q9eG{jBZqa--3qJch<)xnumabs*mE|XXr)#k^A6fOqAv>`?(8qx9|}BYkxZRA zDK>8Sdk%d}s*R3+S9JRPeYOZ7{{GK-Dg60>|2}KH|Netu%KPiwd)RPq|NY~Kq`aT* zzt8{nUJw50(e^#~-0^*U#`x{!&hz2bq~bHwf1j1a_w-bJHhp6I13pQ7_fN%Vz5hNx ziSNBfIDESAKT{WZJBD|1~a5nlx`a3j(2yC`B*M{VGxJJZ=N^1E?C*+8kRc ztqGI`&$?$~2GTv(?Z`d^dU>7U!@OvPw z)V_LspI+M_lhIxUEp!c^%`aZ~oix(gQRZPbb(Cidz-^u5tOR1hJTr*B{F}UzAku8n#S!K=Hl{ki)PuRw)>>!sz{pLG9wbq* zGZ!W&M(Tdb-vl(}2>KnyF;^_>!dsI2s*T_ft1p~QfeLaT%;IzOo7zDgsf|@hD7HL-7-4cDzSjREw|nl~m1LeYd=HH<%hEl&^0; zOo?!82C*zZBOe2D4((mk4Ad{SZ`PXo(d3~b$82lO9n$LK*B5S}9o<3#@3iP%^8e5e zc&FW%4;}AZrONE0O3edAuZQFHwu*hC!4>J&Gd)I0;VCfpoNVLi>w~t*$qbfi4#c2< z2gu>g54v7GjR&nAEH*8xH9!qKH=C62!IppeBtm*{g-O%d2njN2MW;7*kB8qvRkk^% zLJ$|^n)irQ2STy<&{bYQS zJ~pfD4$~@tHUovuH*YNSMR4t8^BG5BFt=sR6QBBnaJ`7*HZR%2@&Csf8*O3El5!`* z)NP`$<5gCH;d1d}N*)?-gW~KDn?AHGO3R~InNZX~fkuhf)!|aA z*}#+kuDm>qn0Txt!QtWPY-|>JHj_yWC*a)DI}2xi->#^$IsJ$Heu{1}(zUF$FVGv6NO z-~IUEzb!#@YT98l9e&9X_-uM7mz;JpaiOGRZA9XpNvb1ZG~Of4j&mivTQtZ7x)3-P zDy+7qpkO0g%yH4<(z%RfxHW#@=Wo^_Go>z6@idQ>nve{$7cQ;Lbi`{nML)|ClBQ@+ z+44}0N~Icwp;kdxQb8pt93@4nKiB?}{V}hi5m%CvhR4#QTQVaD2Hnnq!|B=+oXLTB zj7F6mu91tSgJ|c$TsjsRLs2+}z0OOuypwgpD|!+?PtA$-4>sB)%h`a>D{t&)5$xu> zrtx;;d)o(21ZrTL_xvu!qF;JCmn@Zt)h_qS#NIH&2z^64(b6!GyRBUgzQ~W770nEf zOv4q|YNZowbYPWg|0`Wv1hH!HT-~`h6QVMAr)h+$bznGyl~C7&kZ12Rv*cMT!ER8r zGGRg77Hb~oQS%|{aBMbotJb7Vpjc_}N=F|TBJIjgbmg_gh^5*%Vdw_$K<_ z!$IblRh6;#+;thmP?bN<@*6+l4A43meB$9gX8PqKsuft@#(YTC-tM8wHVmm zmL>=bL1AGHsHvcNAZ#*iFL*Xcf<11<&DGci~c3)vBpV*$9O@j9& z{En_6IP6R5AslMjOHlBSl|v%xNog>)qm2Ji@ruf0Z!KnX6&>3*avqYgz+9Txni$s> zIAu%F2I}RMjr(pM=QtQ7;scL|d{eEf@-!h?cv+HyVJJA6H}R@V<6$W1%u#2l)Q<0P zQGSna&6o0ra^K;gC~i8HpYch*MM+4Q*HuWSPHkx3V#VTQuiBh&6kk}xtL?7{9H5C8 zx5Z>3iN_Z6-F#{zU+H88OpP3-r}7U#pRn&MW9zU~NPc))%v*nQb9nwlk>I$BqL0dB z1JM@f{bf70(&A7?kVpViBSd1ap3s>2B$q2DT2P|QWAA3Bl_yq&qbqVM$9*%8o!Ms^ z@8O!FC^55|ONG+ddpW%(sO|bfJ7}!nCsL0UT%)`53eJ5>;^8SxkM^bNVeeQTX6V0N zlpOjx-h^wOE==QawNeTG<%bZIT|>v;FDjjFw6z*Dq**rxDkTCpSQ{5P;U1!9MdKrd zciYdW3vcH$`0S(XJCgA}v3G;x+^(4$kKUCv3ew&n(pJRQu(lSMZ3M-K-~oIlVIMmi zY;wf4q>bVAUhuvgPm0UZ_bv?AEGybxnem@+h9Nijy-Gx>Hl-m82W1NrPNI$N6|^Z* zmx(eHYUgr%ucYoN|CMsO5e6GG_-#iT26vXmbGEpDk?`aR_p=70;|u$Gsc>0j$-h?_ z+iGdm5!=kw*O#a$dAslljfYz?4T}x$5actr!+#3DC}$}zAf9q-;;9RG0mJ`=(&KQ# zQO4E4gjVl7B|Z@Tza+{3vN-)-V5=@k;r~Af^p0(SmS!A|$1P3Kv4yi%#?#a<(hd8Uz1C|7tO3<-G5c0m7-Kj z$ZUzXS<;!b%$i}d;CQCR^6>XA>?VINf_G-&V@1o5I=UGlp{)&uJ(7J{t6x(e6OhmT^@%9WDMDcnRvC6-)48DRVYI&@+Qpx>#a2UX& zgE#=nJ=0b02mA}T0L>MDAfb3+@fa=jU`tzo2qava+Q| z&-JHMpW%=1bMcC;i9iFU9@LikC5`io%{WE*G)~OJ4+?_M9zMDy_)la*S_y#)#D~cv z)TWneO|&HMTT$T94N7z>>Ia|U3kE)i&Le65K=}U2J@qGv&oktD4K%DnUGnkyQ^WW1 zsofQP?7=`6J`y#M=a5~&C(!UQrF|N`K4LpKjZ494SPwYePJf}%ZoLs`KJoM-j7X#t zx_$ok3UQ5ZN>7XJ&}JnfitDJZ;W)~{>tC1!BOG^ILqV+UW9p*sOx9$05>er%f$7L` zrA}3~SXmp!iFI7-5U5{AbD>xz^QUYbOKA{k^WCSgoF+^rg@p>?^75!dWiv1SLL!w> zw`SyJ?pK@p^@RJy0=3h0)I>}b0ZdNK%lttWr-qB!`J1L4-zE-71QbI#Gti*Z57VHS zbVbDFTTUjMtr!yb8hf$l?%r$({7ti^_8PVgR=w-Ik^@wFKAG;UOT4U(G#m}@YAN}T zXdBP1-7$zfAL00v;U>6`L>TptbyS&HLgmJZh|)?)thNpXPpaw{uIj#2Z5C_AC*6u- zbcbpAn%jwp7<({z)H~v1HkWTkj$Fe#fE~&56XMagg>bp(kY)CW5zT&S31L~3r&qgbY?<<^538@Zs zd@8#cH{NcM!=BVwodAw6r@Oz{JzdtbT6^5q647Fu^Bq3clOyp;l+m)wMB#C8o4M>i z$azJ>=&+(R96O!8_1_Eg)CkLp0*YBR0`(_b&b*=ov#X2V48`Uamr1RX1%@@xw(<10 zv@tcpT0%aP1!_YYxye-CFoK5;{*g4dJhyVX2gdjnqK@Iagp~>nb^iu;&k- zqk^*eso-EVcG_?hiCLC<(zj!$6>waEGHR7=tG3*Ipe>Ds38>-NV3{JY+^sVg9%)~& z`q7M%bJ#(E^Xwp?W>z)d%^UN@Z&Es;zM8jr;&f{7(2%x^F*y+8v?}YF^o@F}uQznN9zv9gG=4t_==04`(B5 zRjrj+FfTH*_t7-to(bnni0oK^*i*c zZ47$@-XbfUA5@^sfWFlI3U<4DPza4`l3m|5oGUB8B6cbBni<$zK7yq2{OJG)HZel{ z2v;Zackr01Nq`QRSw}iM=J7w8FQ6n;9!51yCF$z%N%tcJ`{>srWE+5(_z!wag1$>Z( zFC5^0o_PKd{Brj^nX7jH7MCY6puJLcote%9iaZWi_|F+#HbLmX+;e&&ue~AM*D?F$^!l_53$r^1PaDhAvA_eU+l|^ z^2D-4Ygx$vcfV9T^z(EpEEY_)ZrHD|_bn}t55!jfd__F}_+Rxyd#wXAj9ILKt$i?I zggn68v;Zpd5;p2R}?E0A6PoQE%WgH5JtUcTuQ`LrIrp7`aAXC zJ7072uXNq_=im4vG(T3F!jbw+&cEljX#P!4nSXW}zw0wQ|H^cV5F`1&n}1vO5X;Er zU-nyt^x=x*u6@B&2uiS+S$2d*)6U79!D?&Q=A_-PPi~rqxG{BWJ^so%c}{ZiD%Ls@ z9n0McqnMNx>~!zuNjWEi_I^0nJ0v@bTz6*W2z<&koihk;iSpPpk@-m3Ly zkWK|k)Hb_M9rj4ZS9ncTvT#EdIp2+`_NgC=YqpZ$jxc} zT_(Z#K+Din<gZx-9@6Eo`c__a;a(l z8H9s{_VoyJ38BHaf5`qe(qpLJ!D=N}b7Vq-LFa=s%X zL+hzx?Ms8tqBG#H$Eg99dpss9VsDq0T$5Hi%&s2`6TC&gk-TavpFS=zwph3nJyhp^_#8cqZd@VTIJ<8JYQ(LER zro?Qm>G$p|YixAWG|R~*uPe+%(LNi3Luh|Raarg^OyC8*0H#{+Q>3sEyfF9H@~ zdgK7!47NC53@x8ZD*(d`DPY#OGBPdrY>*m$l#VF<6F9|GC|JXq>)hnx zEO#ao^cNfvSaY5NcZb_dvm)vg9%uk8$ zu~u+JmloMA(^~Uw09qkPYWHjw8MI0re1j;l)_i#mx5jQ}8=HI+@ZP-28%St2X}J2) za}oD%K#FeZ7ii#Imv;Oi{+$|Ni2tJfFh1h{Ngd+(woczb1OBB61W<7>V|j-Lw%Rn!l~|IlJx(kFy)xC^S@w$hud%qHu<1R>y14-Z_O6wIaN@Y~*WG zo#oanq+F>v-Tv4psaj$t^20iX;O4qYl16)r7W;+0@RRxypWGg7(!n^suVQ&ao1sPb zujPq(m9b&3dBgqu2-mFSBy&*RyxjJJ1=)#}T*El$D{?!-n~;xPc{|rhH7Uu?icnU2 z|InffvR+K&UyPNN)ub{Q!~eJJ&60E8^ygo9{x9(Jb?0X%=T4kho0^p{QEq!8zt92- z)Heu~RGiHb4#^vT;_Ygc!VoF*i*GbQa=mK4m_PAJcUu30u#$$aHt|f63`R9kzUh2r zE}yK2u(l`=j>YX5Ad&lMd=@U(Sfv=zm&H#Yux*`sAxOlsE` z4L3)@c=le^zzwbRl3P`oUbA6r{?ult?eksAm+G{kO}B=T>2%bq%7j)lwY<)4$=xyu>v z%r;U&XP7kGP2N?+_a^IvJa1CiEcQ;>qQVR_XONHkjj{qte=D)et#uoQx6RQO3+M0p zjibmAFzFl?{3owH0i>|^)hWhSIQ(kvF9P^Lo z6tRe86z&xn@49KK5+Yx^eIbJv@t}wK_*+VLP6;jgS-aVThe*hBCQ%Rb_IAq&cA9ot z@7w{_2%G!nSA)_z9+!~Q`PEFVsox+%P|Q%XbpS>Th3@$r5?uH#ovFKG0O{Sy?WsNA zr;z7y>UXgUSA2avGLb+14NHfHk)phOd*hQ|udG>~$glKXD1}`Rg^bNo{xv}Gk{Twb z{{ddPcW6?}$}IDf!Mb5&vRoxNA>xmHj6=B9^`0539o`(?X03?e}WFa{;yeKEpmItw$sNEvwB>r@D3NOg_Z`r}F8P^7#OBk=F>YYrk~* z&l|71hQTeSrdwgE^@W=M@#HwK3*n&t~WzlL>OYPj; ze||jXuUqZvSP=u)H#lUeD0&fer!OW!R?bB263d8A%z*__1|px3C?YbzO~t?U5A9-yJ z5>%#0scX<&>o+F}Dmh zsGkK=ls~Ww=E!<@tQYz!iBi^{U9fvP0}9md?O^svftlp5ox*Dc@2d`X=izvu5Fyc_--JT9CU zydUi%yrKUM-gtRUa$mS%JcvQ|?L*%WMUEUuv3EbByG1XPRb~MHT(B~mI;6p;N<#1j z(hjxGGPf^V^jWIpvA+LH7=?T`1)CP35u1IV@fGqfF7y@hS(%zU4YCtg#O{|3xFYsv z+^0A@Mib{v9&aj@ZWfmi*(5?(fmk7`F{*`>JrR=<&#IL7nd5^O%pu#X^X*ZaQBw3m zHW!^C>`kxZQ-AL4`_@Qb&C+NNeN#qyCNOE7xW-~VFj<_6{Nw;TpsD2ibjrpj-Hq74 z&uk+e8V?UL@O4^H?W?1mM%5i$(wl9&r>`JE>Wq!1Eu3iNe)~z zX3@5=oki>tdkvdP`bWIO+c$ESbV1TyR1}7-5?2;4Bb8buhxIZh{kg+4CgF{|-~b=( z8$Gn=CeiL|PEdnc00kU&oQr35_KiJ}26d+groN=BZPuBzr!b4+$2%}@zRng2aV>rLTed6#u48d(JJdw zY-m3N07kYwQ!QwfbuyrB-$QRAO#=8HU)1vcW=RJvbv?!4xB_sbiV!}SXnk-NlSqFubg-aXXpW*^T0qft{Tueb>&;rCYc5V^ViuxtQXN#si+RQi0s+I{(0@ z?MJMhWIto*NM$RR&QJL|p8eFn`Q!kQn{D%N_;65KB7X+yJCH+SG6k@rbpp9{nbsOxrNsFI2NTnG9HAM|8i zOAzb;XnfLL2!e$9k~9d~*>;C5YheFctO2!ofhD+iCYFuwANjHrOIQ+Efd?!@;==;V zGWYce48#Ud7?-*9V3SV$68TqPq^8qJVB6tqVV08ww!=*A8CY}~d4lHYkY#mX$+*(G zL~veT{+=~Im%oSBX2(x#AK&k)EKu%zw{%gFx%(2hn!Qen{ExE(oj=^ySD(rAhg^&LWhv(ml|p@lMZI$@^EdVUFWs5as#6aE zowwYd=?8OwgTPy`>+iyu!w=z~)&u_E4tMzf+p|SMdYxZBfpm&j%}l}n4&i_9zeM_- z@o!3V=O^9pcbO5N`P9e%<*mDffAYNFnvfU4lBWC#e_bC|?XBxd!5XVCbe0%*PAvxo zZG$}DR?fvd-$(5+iL914qBU=pYDI)c@t1?6&D*-*3-R}7EIsEB(gg*@v(QI zdH6QW2xh1!R@gA>%=&0iz-7Jd5_se#utrvO2Tf*;QEFXHq7tTWP^)@Xa(_JyzgBg^ zO6s2za7mF7lqfE5yoRu`zEW>8l^xOAXZXd|j1FEJRtMLZ3;D!e!LxPdCwz~su=j6C zAM1tRsx)wmAOHS*x!#^<<9~tmBxSxl_m22&Mhd^3DDnFFij_kG$!IQgqW^)v6u&Z#qiQ4iIGse{yRi0OFR8Vl8x4q`iC~&w87-%ZT2%>PrKghzHmK1i3 zpUe02(POqhKMZfIgZIguKD;zGbl}$myxVpKUb=(#+a$b#Uh$i_EAUoru>GBsgjX$R zwVm-R5&bqj+S~Yj`;;BOTY+WTIUo5R{cZgvz1Dx))xTKvixoM!^Z48GyVBMFVR{E$ ze|{y1cKp(iKi}(*g?Het!0YGW9g~DtstsF@^jZJc-sp4oYC?75`3sR%=F!2u(dV{a z>+kLApQ-wJ8+xP96j%R;>2oMB;O|d}7;^O4pu3rO?vJHU-(7+C4KfILzfHm`kU-rT zo*Vza^hTdMNqPi*o&c6vynAo-xw6;#XS@0hs=x7_-sm&N)&F7ooa*}XBSCcYpX@Q; z>yM?+M}OXh`M;Zk_eP5kFO8InJHyj@kT=D7tt@s>ZO%L;LiF>amQbmHo9PuyXF3h_SRwL{KUOu=X$+pQ$ zG;A*hBF0TfD^>I-9aA~BaK)45|NV%i0Ju{A#DebS59%uK!N1VKuM_;Akb^W8zUALdf9j2YD_qsd zs@jeVELFSZkaFwSl3wc%boCEV{o=Q5)7|S^e!J4u|6%_9@=ZG*-?&{PuJtR8EoMqr z>povo=C|XIzJBTdxB0r+*!kM>I)gSB z{XK;!4*mlVd6f8ngZ~=`f0p3?sk;*7=G#OEzXyIigxiJ?C1t8wFt9g%?AvSoPvf?J zzUtS#)*C;rc+mFmhxzfn*DU|&{v*eaRocAn#6ON+SMCbDKR9^(lkgVzp#S*tzR*E* z^81&2cIOA~Yxm{7qvxgvdYj*ed~ApMDB3pdSVX|TyZo~9VM(v`KmEwo&r<#3S9_!9 zm9G8|)APkwEj^nB(aArV1AC$e-v16}DJ=Et`kw8vdH>lu$UT!nfb&yViw zjUS$N^&_fZ{Yr1+`GBkc!{ZqQ2KwbipNIll&x$|(KK z@T8(>Z>;A37k%Zb&nyw|egz`T{iqw#p8UJl(`h zGEgzT2dHWRo`XG)Z{J?)pY7^@^DpYxz1-XQuDHkc?}x{?6&Q@~^MYu{w+chc&hyKY zf4c&2p@VmI65iq-^q-{sa}YiGm*0K99K=S?(|29_oBps1{n^d6f6PHXzt;V`xBfh^ zEAU=?+0y5e1ATZc$}`uaJe#sB@NRPO-bmuN0Z+`H;q~1WcxO6zze>U@=m|e3|L^Wi zUK~>I_z_rUvCbKLTtBYtwf?73TmPGvsK2q@_NV*$WA(W)uKs`FM_|B@KN3ckA6uL~ zX<85Vpa0thepu+>y&()OytJP5%~8k~bDM+5eGZzJw-ZDvn?A|6^Uvl1z7)?r!=rfq zd{j<;J*i(&d!K`o=Tlt$9_ITY&OVlJ_ZQX=qo?(GXs`7@m34@G6VksIuj`Gz>+jkH zdU*SZ<}Q1av-k8s-|Kb--epdozbFas?w<4~%YS1Wyx!?^l-*xovhSJyHvPUg{`KgS ztNOFn_C}v2uKo}6-+SJEB58jtb@rYf=res+;Qi6Tdm~Aox}NkQOP`^=_HXZd?D$83 zWj1Ol>~Vgszq2>`y!8iLzf$$9*7Qc7+g$x0rq8~vKMxC{olgbtT6jIsXX38F>p+KR zzMqwZSFQY^JIPmTubqD5$!kRXW;ju6rlZWnR*VU6fg8f4$*x3hP9 zi63wpz%*}8L?>W=d)MF0qRr~_IGg~I{Jl$6xQg=x+dzV&l-DE;MsUn@GAPHZE_7!9 zT%GWpF2pu-^sj@Ju=(uAI)MNdS=}92ZyobLTt4eClGg0&x7*F zxnGdyWutlI1^pHRwUg|r!W!!mpi{$Qh0SIr)^pGGl9lSvf9w7y%b&Gc~@v_e9ojpla}zW{zqE`OJhO~e|zUNfgZ z!Qf!kTCOASJQ9*Qr>=QdQi7}I)Muhgggpm9W7M^U%hk=D5>ngo?21?P^WXl~jw~@1 z>iFyG_~YFVC@bhuylPI$fy;kH`D>c&fy>C0lgO2Zl;&V2Ttw*;0lwRw9daa#*&!~R;D$C#9>rYcRhPwJc zJpa7?P_rPy*ahZpXOHP&{;jy(n<+nZ-g2h5ze>W}(38Go`*)>-*Mt0i>u>Z4eOCRe za`yS|{j>GQ^jiN;SN|LBS006nzbD@;eK!4O7y8rc?NhX3$F+IJg_V97JB=Y zB)pa$^fmGGaF^r8=2dT+rKvs9!Dng@nUI{?)plwVm&T_~f7|WneTA>_Nfh`7`}*lZ zV?VzPJMmRjrn}mVskbxH3L@ozej8mkUPY2^Ah=n^y+TyGT)PRjAfu_O~r zM2?p8QEV-#4{C>+na@j}tj2nM?PG+Hv~>h@ZYlp!_jIOvD*sy@tDbGszj=;Up+Y>Z zbhiqiv(1F%*464&Wei*JlU{A%S{F!nkLRm}%DO{5$kUx30Luev5h zo_z>e%%2~(^6YG_Xm|5~8=<^=0}x-{A{Tqbc7>mIZ*2XU?5Zd41KT+jt@C~qm@_4| zZ1)nc^>kbuUCwlEi$Omp1^Ptq$tT^{jK3gN_GsC^L9N~$AT5TZd&GyEYPBfeMWptr1kn2oS{4e{uF zQ>5SF1sbEKCfPJ{9}#xYgRgg(q)w6(q-Z)IsZUO0+xY08G!ZwV%LVF>uy9v)JjrYU zY8g;%5JOJ@$=cDdgmT@0-EuW@&CA0q(E<5!(Ml?Z2x(tAyyKr%IXtv^u5By#%XLmf zNB9|^bOR##Gjr5mC7sro-vhNnZHX?`Ry$l{!iP%?uaS0mjamirmC_EY{vhp;H7Qjg z{KZU9AzW(;=x^tVh~nSSqB7uo!3Km#p|MJ1hpNpj9HwGFXo7NkKzQu!kJ7I4cj2KF z%hBlICiJR#nD|E9%A1h_zY9~mF2s{vxY=C(7hegVQOM#zs0|`hVb+ajXsytyh`Ybo@m?X>H%^PKF8_t+2pGyIs zsP7fANqII+kbTiRv$w2d>XgnX%=iY*-fbzz-af&1M;ByC$AiM?&s zv%<24>dz9P)yBGlS(EPdu53L2={0UzS>Lu<=DF1PY}JmtdnMD6j(UCWA}TPE#1R64{{`Vo7( z`FgOYqZ7d7DFx{=F&0X?FXy`%@`$+0p=+}Da~xG_zS~#dtkabuTWr@-q^a{a;}#3C zwkeML%(LU@otS45`1@=!88(@fR(rC?CeOdnjZNla994fIWvqObBoX2(RkP8|t@8Oq z>dhR?MxA|BzKaiT6)LDT?cfDJ2tB6*NC4(^?a#XTlg_%{;@{1mbS8lh8j3UC(&rXN z!1`kz0Mho366vQlpUm5$z}kncdb3kLnNhE9cZ}`llNn~Y)^6Y`+I!r<{a`+s6#S<) zm8#t(F^}?H`^(d}BoWr#9@no1;jqQFIYt!?{O78=mqVG$;T&6eJ55NA&J|LoK&y_8 z;`=PLES?vbHmL$uZw;?h!ziV`#)Un+TFne`7}}MKZ6IJq*_8{n0K2|m zr`a}5Qqk_*?Vx+s4+>8+S8&(^@wxgP@YV9Q01a^hB0c_vS{80cJ4+4wv%!N?R61^hQAmo+V^pKOiRp!$XZfZ<3@7r&h z6=0K`6FX{cN?ywz{DS}8$3+*5+*ajs$}YL zsX^_YTxsCv@5=}$NQ6N+_4A8@iO3gHf(e~qZQl3A&D2}N6$<2c+lQFW=rydD{VUQB zvVP%iirdK96gx+OySg_?fB3Cf*xt9u$Cl|_8GEfF_F{Bf-sPhScdXmmH!@yvrZa+3 zf^A1>ly9RB4Dk6%qDZdedwf#VZtcE%K;&kOx#5VEt&Big=kax0vm+#%asbjD0HtgN zz;oRJd}W^Q4uDc=b+gm^)Q6EKv>pkBw9uwnAOcXQC=?)~aE-Yd;RWur@_yl~vD za=K-M#BKgqJjyz^s*vSWX0gSzR1vBuJA?5K)2Aj>pa3c3~(O(K)Y-M~Z*(^hf zSt(1i486u<=+9wjqKHW(HpHB=cC#Xib^C^ST(e^A+~Kw5Ac1P(kSLF?7y=?nWT&>x zHSFB1w&=Yd`*dL)&ucHI(kNkkwk;57c#5aZ3-|-6r$I`wkPU1~!2A+a!L z=12p$sujAR)$(Jld06@e+5$h;nfM!<#ow57XN&%+TYp+CZpPy_%^1WzNG&#rmCR7? zq1DvB*1Y(-=Bt*(K>cNS3Hc6AX54d|Es0N|gj(E-7On5VTC?#y z4by7#T8oB_^+nF(B11*vaH8frex@qo2d&q`{V+o}zn9lrKB$Nt9=|9%etDqvvy9fy zGr3lr&;s+zGRFruPE!M52p$c~4BBU0# zYLfK*-h0{LDsj)7d){E5*Iq{1Qvcay?%6p!V;kqno#UQ~hgc@vGu@BQfE>j$+|2dt z6?2q(wy&4(?7(v!rTvWvPo*)l2K8!!5sg>W&#qI-%%M4jZY|%5(@NzvG(cw=f{UIT+GQpd1B?F?BJrX za``hcBc>w#XKCD_vv;uQYd-SHa!DqZcSaKpzs%e%Jkrl$S`#Ot{**}NEp-7<(bU@= zz87EN+4sj>>-B`>Z{^w)#Xd2ATfUiG7!PGfP9t~8aC0v|kG-32M<(#Qz}&*`amyAQ zg>i2f4@Q}5-Gjomz7oe=M1o3oO0oHcUvEKw`{oGV?AI*wBQyVjWp31l_0i1NMU&r} zNq5^Ni@wlMqyqrt>bJyxle4VyB4oL|+>^RRBmcsLrD?>^_O)O&gW6 zx^byiiHgGENji>)j)@F2%f2{+Ox5uj0WTdRD@*HlnT7?JI`dd1V-e`J&V(q-XOfr7MGtP3 zmQ3;yO&P^g-Ox6r*i|q`+SdrB?joWs4R+zap3)reGtYiTvxg%Rb-{2*s*HE%X`YXD zx`NTXXfWQh3b3F^beCvpL5QPTDo?J~&mw}MIDi<{T<>`D&3`(c{F0yXNe%GiCNuR; zPfO+6Q^;E-6VnWBdaC1-vZKp3wsvHY(W7=Za(mSFjaQT((z#E(qF-s}Fg?hMwq|zb z#wP^G7a7m2i&um*$Gv_uS%UE$9PGsq;?;2~+00-1(Z+%-t96 zo6&6v)j%_8*Lb6twe}#-UVz0i_6DiCv`;H3gAQmEUz!t_Zbu5`)gI97*3I0$Af>l+ zVcxRUketkK zOro+XohU@v=jnojpDeSn*PREC&yK8%ZcmTwBdDJGzvAg`P`~PYh^$m~^9slIsolpa z)G8}YAKCpk%6bZa=R)Dk(#2E?EFlvjSy^Tlo`@zNjD0FaK2$g%*!m#~NuK*v=IsPR zg%d*qjNYGsvOGcIkG?qFvu1KQsxlQh7bNZ@ZhYMFv znIA);j{RY6`xa8#`xre>8ZeEWHU+9Uf;@p-K_oUV2H9+LHD1k_2BOS6 z-93QDyk(FOQHEc(2)9Ev(qwnM#MS|pcK6|ox!Q8FjtHXMcax1A^!VPrAL`y?TX@|T z_y}p@3b^;1=Ggiqn^bkKN%yOJ@YlQd@hVsS$*uyDkDSlC3>;24{?QeV^|ARH5sjZH zc?R=fT69ZogcYN*z#5-PXmA)27r}p~?Z>WmujrP(5thZSmu$!N@;({nH!ukKHgm6( z$0$0Hy-=7OhCv9&sLv~`Vzh$`cL-RdYsg2$HRQwnArB}yRmzx0+w$0$1nM_H)o`q@ z#`;I_!IEb2!P|}x=JbdBGX2nghxR=LsJmSFg1REDZ)e7ewCw3^rRjarR+M7OS2n#c z2^3Z^w5^78Wn2S%YUUzRE5%l{8uH=xv0sKS3T80Fr!DFqYo*wt3F&-x3|EN>eHKm1 z2rW846KzwRG0ncu;urf&SE6q?J^|3@vm{I|kf@&KcRt&k$fby|&_)Qz;ccXExTY}v29`2D{%`0O)X z4K5qdV}swz7jrvPp=m}IUHbA$ue({#?&~cF4ON-qi#~#=`+#}u*QKiihlNC(-i;=kUKBb_9iAlh#4Lss^dy^9gHmA#^YY_yKNf#Gt3TtQGq2#BH*#e*2p8AxCP2?P+tJBqTn zilWY7P>$dPWcE4Ada$~#E350V>#mEgvH^4rR|rH7K@mg|UB!+g3a*AA$NazF>V7kC za_Ij4d_F_od)-}KU0q#WU0q!bvrE?l$mOf##hdE;HgR!u2Fgc~Vv8e!q;Ofqe48E@ zAPhq#tfN^~4Sx4nOkIzF+42!C3&2)AjE|UtFOzS@WRM+d(-!%LVK7mac$15#tW$65 zj|g_nOX$InEL|lZgV1oklW%J5R#M}DyW(Pq>QPpD9!E;(gzKJotBXymtAS}mT3xSt zXoO!N1tWJfNXX$^T(~zz2RB(vzJrH_1du-!vCp`;y&9RvM2hlc8w(f}FGl4Fi zeDfPWCFhrabgj3fb)W1Ymjvkdjrvej0XAC8%;IHuB?s9 zl@=dVL7+Ykf%;ewne>0wAM^9xyQhy`-7r&~Q-OT(x0rc*2)JvFXzmK0kJxM<3$b!O3u^xnUyb!Nd-TaL0A^4>SK);T*eD$Lcc1kPNsC7MoVpe_9ezMC3Obk(z&U8)U?+m9)i0M$K1;ACWdz&>6-A?`ka-YliWh8KJBvg(Eyc7;m2HYd2f6z~Vp6Lv$uRet7{oCLmujOG zra_n#uo9z=Kjkj4Mrd7`%|~Y8V)Uz|5NFFcWijBmx@?BcPaS&NQ9fj6R53eRwQ(rf>By8x8 z$x>J1b?8z+pu#rBqekK#wxmqFf$#hHs0)BzFJ6;@Pk9Ylt=S*=GfDw0m`3dZa@b z*P5i~M@lnc`Ef6Lit@45F@!a9S8N7MLw z6m8AFsmy`ngSZwM6n+91A58AxTjXM>4lL-Q-T4-I7lF|D0EW#OqkC0K6>xJ8ECeH-VNxigEb zD1uSJxD5=V8FDw9Fg4~|UKQR42TzG?1*4kLO>u}UJZ<#`N*>})+CDH(Jgv2}d6QO> zW*}o<)8`{)&eqRbQLZXtp?UBGpa@k$bIKv&9R&MkY5iMxDDl{s_ z$taK3dh{m7l=Hri6-2JhhJFLiCKa&L4Sh?;b$S5mN9SNK>wXN4yuHCeD}ST=b;>^y?i=5*&9`xEO#BTHf?`iwT4vLZyi*rq<3B{&9d@U6hW!^p#$s>Wx%mq2Y7Jj+52sllP#4;iI; z2$E9vkEU#2yDXFywktJJ_-S1@(4B1-8$APFVgCecH>_u27`8vgTVeZBuoq2x?E8=$ z_WRdwm4;zwo`Lo1)b?K)zp|>J5AtBu-yv2@?vMD}V{s>!CypkWdo6-UfKXb8+!~|i z&Dz{Av4&u0V1PPOAcMFsS4Hq2xe;SR-_8E7mHdJhs~0ome(o1>aT*9%n#D++RLOM zOCH*k_hb?Usb(9hQC1G)TYtb?!O_fTFp5}3Tgkn)u08%H28W?9L~s7?)GV2dp!^duvhGI!mQ1yE zNSi?BP`s4i(-vFEv8o|Gf>_p8nKBpH~X}Gt` zrGBUL-s5FjW{U2BRUHor16H4Ss%BalM5F$VfTZq(% z#-Zg5oi?M;x&}RXkEhW3kCPRJZpQxgDl=S)4cK`#S$aU-?f9NV-go_0D&p8@ zCFGC1+qcsj{u#~x^3lvVTlxuqw^{`F z>c71Ic#7=AXUUX@Nad7515g^;JH)K=t|4m$JIC$ZH?U@S`CYS?tZ_csWiZzdtND6f z{3%DC;-$`vm$Ju?89JUgj^DcDIF=H}BN#WIPl7z)7*biQj>RGqU~b{dZMPhcshx<` zEU#whOhpa|jPW2-rhG3loc|0?sv@Bg=f9-C{_mXM4MWqx`BxHg67mve+S3ZHZPHzd#}D^d^_I6pzQKnR}Juo?iaSW-)4(i_1;8bi%W2ar6l2o zR?RV6)N-BF+i=VX;h0Hrj>$m9paQsjb8LgU3Kiuw%nsX(-0X%nOxV$V=r28fXHLSQ$pA*W);ccT&X1GC8%$eA`olMi@x!XaR1i zfe&MPVUBt`pOXT8NCKn8SD{8-jZ3htU7>~(fuW&>SfB?ubP}}!8e1@rb$&?}r-7(A z8(pbCo`#RU%6q`sQLKngtl}7CnX7ejZ%M|)n<7hjoZC^^^J!f$UNFCdS#AN=LYR5I z?q{p1NW~{*Hp=l&+Gpf}_a>nlR0(OCyW&;UFhBQ6RO(*v9ETaNCBN@Gn4~H97t5C# zwY%R>v7rdNmJ;-bj>ZC6^N;p~5){a+%##dp$zio|uiV$^?##+dlfUC8fy^*`_Z>1~ z=(DIZ*oWX;^N*eaaKYCOw@HD&T3~fj#>z{QVO8cPzayTv*-D_CP}komEiAC=5WEu` z3D}JD9bTP+6@2g{zy(X_eE=*Fpl9KJG3+~X@|?{3n@=u;Ch+mlWBPh(cm%?O4_rV+ zqOE%T#Bmr`(gGb;VFE{x(7Nepfh2M%4@PlUoFZSqBu@^rnZ#Yeoxb@)G>MN2?tYKz z{;eUg_EM-(GqY_H2QiC&+3D_ft4PE;`hfYY^+Lh?>}k|L1_HsngYHNONw}YwDnw-| zPD$~)WvJi1knFcGWEHXAdt9&%1}MgF#Pw=|F}S*~aPxOQK{VQ3_s2xmoq6|DQg?JB zuEWOCV;bY8Y*la2oQ|7Pf?m`Ut5$zTwD!D%v&&ik5Y#VOkr4_hqOc)rw7XC$nz@Qy z7=`QGD)t>HYIE^>xagfb3?8VFXN8XDVQ2T~rNJz$5z}H@_}DQ&@Am9zl~g%!MI!D; z4Ycxw;UaR; zh^FbSba}7CW7wl}VMPKr7rF~$?&u(5!+7noGrY8w!cvW6%TNlQ$(7z88TaSXqh$#` zLy7lWm~a%VTrPD5Rs-lI5Mm5;)A!XC@IAmJawdihZcd(r{J1%J4P_spQ?irKOF%Qb zZa8>+uIDR{)5{c$ouZ~*Yv`SEK^vpFRLC{UdP@}sJYGtGS`MdcKWwT;1KoJvjD5c! zESA`E-?g4t-QRoxF0Px%~NY8I+F7OO%n(;xzNQ0u$` z=~(n|l7Rc&1(@n_UJ3_P7vm22z)84QCbX~BhWrX%)Q0`rHCPV8BPsYfmLij37r6pe zmb703IM*^m`_;kjai9bl_1H=HD=_ev`T~uIllj-GMYV%atz7EM+CsA{N>T!yuziyn zTYahL?(|FN&TJK04e#_dg}U|+#Sj!p&xPg^xgsr%7ZtI?dPRn%(yJHOd+q(5?$=sW zQP}D_SF~du&KI~JIWF&et6L31JasW~V?p|XI`10ZMD=N5t3CK!Jv=s4Xjudu3fSF7 zXT&WqgsIM99h8Jak7XgqG>7>f#2E-h%<#)f_}JM zn>hISNrn)V&om2+%4e@KguLehs-5nN8@OTwNxKzWxPBc{Zi~veU)w42WieS@Hv)fU z8qxB*`bsUI8tLmEnG$Zzb?WOFAIbJFU6iK(@2QV>3hI zn#!iLsPmi%jHEU`5RxPlwl96%leMdkhsrR>JoE7vU2w}E>^-dLRDLECsJy3Ux+b$b03nxCmW8AYfwri^&`olVoH zjB%tdZ<_w!36At7P1C11;m>TE{+Kg;QX;)ojjBNsj47CMpI8l>jb0eb=tO(DoKgMb z`RRlSbJzeexV&>!qk==$>iqQ+?Di++fA-oI@>e&Xf6&!U@>8C|^z9*5i|ta>!~z%d zmg~TIe(TiIry%RFXy_NpO9^-|Ay}P#vVQiP&h59xK}KPE zRnMe@?cw_gwW5YMBo5w~Z>6a28#roA@M(uJCe9zr$7}kbS)GhLYb$J4JlG)%*+oYG zP2}%l@^|20YT##G;4EV1qs0EfXkAoJvo6>^uO9{J>LEP>S^9k2d@f4u`-nwfadv~vKF0CM@AQm)JqqiiKtHNnz~G#6-u^?)z!ICWoK+VcTs=L7w8k8^OQoQI zwuCezNDaTo=j$vM_n1wV{^O)SXzHs|w-O@al>jxL*wmpCA5_nOekc~{a1j!2m4v&1 zF{eih--SV9f%7TN&LM)(;Nc)J8=Hf@08CCt%O3ySXW6u^YSNc19-|yA#>Oc>C;40ntQ8zyZZSa36FKhOt3Zr+PJ*!OvvhA@*3g zZVS<$4M_~Szy56Y)7*iJ^?IfnuQJnv$qycbg39oXtbp|5$GH@i9&FS;Ti@~! zaOqgn$~v@Cw634fl%EDlQ_j=;uG>?OZ@d5tNAtPQaxgZr1hXmZk!;XLB%(ndXg+RX z(g3z%k93YVL1NDso76BT$*$e^>Q|Fe;gd@1Nf%!PcP>FR04()dBb0^@sP}eB)q(39 zr{U_z{P5G2XrMp*&no$2R%$qUl?=%r+h^}*USXqw<4EIC89Kg3y@N@NGb%doY|}-4 zcF~7VB)aG*)CpDn;i05WNidzm9s<_F`8GX%;{Hm~_`Su__#*2@FIJwoa4obM{kl6c z{=jXu<#BEb`Fk0rkEvnHZSCoWovk3Ra+jGoU04 z-nbz|686C_{LeS=zdszR!XNlsa-mCmBqKEC93JUSNpDn$rbWBZDo3GTqY$~bW`cAt zu9yp)0kya@$cq)DVB!gkgZ3Hii%))yK|cVC_GatQ<(|O#KKQN&&gSLlXXp%B$RHRu zSLIj_?HjT}Pt`J7>q`~j)?c?akAbr7*fvoHeJTO++MdvFt6tQv;kcK2Lljl7gV z&S+G;fAhtA`(o<{ABbj%%YLjnPj~i1J;Af0)sfdHQ-dqz(3!@e6JLwP)!nA@&x6|3 zh|y+HB8*pfDZhMyunks2Y-`zle(Pa=fe~V#gmO@@Pqwc2f(qA|B=s*OL?*}bKAj7} zu5<5DuS@QdGH%FoCqvzZixWY7^zF{U8^a69ZsC7xR(rJyFR@8pBxlEJ^FEzd8QVH* zVZ2#R86y$_Yt*mwgw;siIrh)*9%aTFq+L76bkzw64X%fAe=j8W;G)PanPML31anwSYuDU{ ziT`UV{|XJMF|@6_FcKko%CIqWc}k$j1O*#_#UW}Pia~(%_}IJ*G};g%!T8UN&)5VI zt$D!+b09P~yKU@UE0033J;YZfdfwg-j*OpXDwNP~g-B?*kT zMKJD)Yh~SQi*DVqTDI%;ti9ecn(cDGA=0g0YXyaxkV$jqsD3mE&$&&{SAI*&w-41Y zeCN1E7h2$aJ>sQwCJ)o$<5u-PK5|_!Pa6sP4QK5&>hE6u)%F7ofh*USkXg$2m-77dxG8_R zY_zB^@yhbkQJ%&J_`<}3?Ldm)X_1ksSW18>(A2lF>RJ04703PfS}1%H_9eN|Fz8TC z_V9KvqrchfpAni%LbJT6>?5?z4v~uSr1$FKY!dj!Z($M99;+IRrtz8T$fsgz{s2aZ ztHBLKVL5~-Fk0iQOatA`N5pyM$G_wJI}B`Ny=vPhM0DOC%!eWB9ej{J8oUt=cvdeS zc}g(xulfG*A@-tP!@XNzI6cjJN_Y|`Xf1+^tQk0YjEy>4+tn3)uPvVu`(73Wc7RZ!=mFL(j)HGJtv?_XXs5qqqn-z8Of4rr$ zAG}TNfaYLRyi2&Bq1TM#^9|*HDzZMq0@__MhWZMEmsOzFlu&Le`_8eQ5roomD=abx z0&_x_qy|Cr@p#)FxRaCHpV5lJ^}G_3Geq5&LhY+vz!X_AQT|#ALQq@<)6juHA!Gy= z8FM{Co^wd+T2+p>(2#U)f|R%jbS!{^1G^#-TZ-e5j4j0-IMK2Y;PqrP4{Ys%_6LpA zV|}a6(Eta;^i=A30zuKTzNl&ixEvnF;(0@X3&lyOujumyd;Xr!yU` z=&D=sUVP2sSX?wSD>=t6UB{@!>+#x4<7^FsuR4w`De)UR^m1mfUA@nn8R+_QdZ0fm zN!puw*%j#2cMHDCp=(+Ru;ruP(88&Q zJwK22Td?XC!+#IlSr85Hg@Wk5N)Ap6-PV4_$Z74XU+)R_(bVudMh)fcb?iW^ zAj@}pdbVb=-A;N){0{M_lTK{!Go9!gAi?8)g4zxS-W@#e@UUL8z8J7!K6Slp{QTB? zgEuCrERd`L3^FaQwV?>h+^y>I(c*D<5#xyDgvvawU{{$LIn0yFB=n>1s6b!`{+!5V zbD%Ai21g38!K9O5GA}3W2g{4m&#j0^@%$ zn_n7(94MG!)yy(jE8A)hFmP9V3Wk$H5r3LNBrHotLBhR2*3ME{f?4oH7Pn0;9>7<7 zE)&B0pof1Csu#n=*RBu~G|h!kaR$qYbv;4LCLO40#vEHeJkuL2w1%gL8oCE@zIUq_ zjB3^5je7cZ@&gX|II|qs+B8c7K|L z=aK+4;N5#75x0nu3#0mpQ)E>8#9p*TEx{{i*D)W_$kc#=>8@BO)UQ#06_5c8=&foC zE)R#|j&XbiN?;sUi6s%9Kw!Dlg*3q3hGHx4z<-fZR`b(qAcH_0MJFyexyBtJ3* zTX|oUT^yf}B~};qrwl@G?D z?(@R)YOFlY8UiNlroZyBy(nssd2MAL#_XXyJ4NQ7yYg1R27$b&p4iLKKFKh_NX&q@*xl$>H!nrJk{WOiEWu58G}i2 zE6vdA$BT5HFQlt#q3N`eFLMWR`BJNbc;os+FxaN*O?KK-sXVP$?_Zdb0=4BmzlGJv zv;pMZ)b27SOQ?KpR;})e5O?r!R% zD;wu_ibOqbyXER}E4y2u3NEcEV$|ZAB5RHH-ii#6UETCGZ1|`%u6hd?t$XhrqRY=; zt=K~$Y}4$B9!mHtEpM9s*f)}Hi7t_V8U8JGi^RJ%pR1_EyWg5$<@})QpJd?cl@?V_ z`dKSZvrt@i!z1JFSC>y>*VI+u8wTH>&PAcJ^jI(( zrkytogieGoQA6+mLi8=IUV!q>0svqY|n7HFMIGe>Fk}59c$uQ(MP~s z9dXn{tf;|O;WCDMFdurQ;KSrzX1k+V;ERiNk4L(0DrdXyLY*rbNSj~R zm<^(;AQh=vB->kO4M$b*W-tPk~Qcw8JBvD7FSyr(GqEYtAk zAhU#Ms<6kH=FjC9YHHb==l$V!sB`G_C5_V;$>un+==7P1^ghrZ%=sF>zc<^42y^8o_2NUM2soI?(_0kL0i_;X{(A``t=g?gw%6>tz_bc5 zph)Ay1&G&0or%?~KYTwva3vZ%WFZTJc z+jLeQ?>NM@{lCyWw4mZ_J>tacyx1ipZrhwDBX09}VLEMFi2IO(>#_&hgAYN$FE+rO zgYS6&i@t`OKb?icP4R*E?)0Vu?@45pfw#zSjc7dR_`wW1W8wfBdia6k6O3bMM8y;F zMr6#*7%cQQTibyVXm+uw{v3?7(@|~2-+?v9g9uR+s9oa{jg~sNc#LD=82Zg1fbs4D zh1Cz|+kLHO(PJ1psbrP9*&9TR$9vQ}aT47WU#kRr;(VZ8D&wI~+z0@^4#6NU&bP*; zTd75s4~{c1@*VPpe(D}PGgS2>4mjU?N+IUzNO7maP*po*ZsT+R%XOjGz=LCG04h#%k#2^;lROC)Wlo_~t zr1{E+oEtn>e~ndLnlrnPS)X5;JFk1<^PGdxwo^Bx=75b?r{S=_3t}bwR(3hshR;{0 z_{xu59Za{5Mu*{PV4xlTKS#&P_qqS=O^tLY=ijtQ2S5L|iXdERhY~)fN4kU~ZCimphUTVs4~}yGyPyrw#~)YZasNRWAwoZ$Kc`h_&CU4KTc>#PBNdY53pJcSC*2pS zy4jbvZB7RCw&=xkjc*bn5EQh*dE(ywfe31cs0pr1I%EcMpsuQ7WAIQkqvxK`9-eiE zqh0xDB4pLe)tI^{sALyt$Kt8!#UbbM;`SW{Y` zsFV((0G~x0_!gChH_=vWxO4G1CQiV11zKacmkXoo2Q7)mLQi0-`AG z3!Ri^cHzh3$XmzPX38#n1~mfEB}I8F55)?@m)G5D)|Mortk-Ew$c)FA^#Gi@`COr- z&%*xD0R(U;z-cAW6IAqB#~J9R)K|Ycjc4b4wh=pc3O?Dc-=T z*80QS7L2$ccuI3w{JC?z!TnU}v5Jxn!_(B3YKp=Mu#eTKyEjOiJJyfL!SOE$t1966 z4v|F0)#uq+UyA_o*C0ByMWqvaAGux_a&yKUWK7%Q&gJ@hcT>5-bn)t1PS#TC*3nGGm zD+g&4SVxpMR;*Q3c-DqR4?BaJ1lC!`fn;t6U7#&8MK=rcVa-R7IB|TRhIziua#C|J z1Aj|Ew5ML^Y_sZgnRW!bNw?9o&({Ar+C1h2mIv9?#{;FgMb=$j$DZa)7wth}#f!|q zStad(pzf5-b4OZXS1i0Y@GW^!@D2SZclf)o9Ubh|K7u3%?O(>!f>xxhQ@GDjL z&2=axE!VB6hB&3lT;c-`^2`m7hNcf`(0fx{3WP|0179>u%W7< zC9hZ@ylAjNVvJ3%%BeCDEtjyfY8dMH;0#|n7vX*cD`41eyd z%;33@TPtSJkaT&(Ukg=BR(RDwUES^1F*^|60e%`Zx>J$%c@r0sfPagi$zmZ>kzLN# z=B`+ZKfw}J&pr!>_=axap0t)J-=usQGXtZU@kZg zfesTkR?lZ7Sh^&J9gFAip#WnN9B?o{???AT>j8?v$mHzz7B%d=)Re;`yqwW z&8WUHOqxu-*IW@Azal5%cOnb!|?(m4RtCt?orGal(%fEy(0XEq(YLK^KT{qW()2 zg`j%@#|Phc_oI^_P%_{^239>DK=Z?|&_SWV`Vz>_z7qPBjm#Fc9To#aZ$!RmTIr&H zrGfAm;R(pxShLbJ1-qhlp}`yo$69p(wr+9$(_L{TN{PqCoyfqbK?|nh0X8umvc1?^ zFY>%rWSP4nCLJyG`IU=TcZx} z>6YmTU3xQQg)Ve5Gi#^7{P6QM3^Du+oPj`L^&HBJF!H^H!YQ%Gv&->EIIH4Oe5uZct)zo#F(l@Nhurfa zrgILH3XU^=NyTP^{_;=r<%T`>mp{pu$Cly`*0XJ(3ZO)6!epIatC_eW<|EwRs}(G6f%Z#WFzwH%%4v2D=|wH~JpSy!MZSSARo zzPSID%XJ5_31vu%1>sL?BRCZo;=&z~hnBXgBPos(Oz-x=SzocSqJqC=Q~&1)DcThh zVm6_Uh<$_ok)N&A5a)g%6p8ukcsZ8r2jX=88hVmoq=P%-dpgEAJNyof~o35p15Fn6@ydU~nQ@~!MD`CF^5 zKqEo1NJ&gxC6BPQ?^2iPM}8fyGf>DadJ9{15E1Z2*r3s^M>sxG#o%RQEc)`b*&bfs z1AkR0&5o0ke(Rgca@4NQ?5iikJy?6=l%GF*-M;X32v>C!Pc`^es>7?O5g@i%xIkG8 zKSrT&!7{(KunJE&_n2?}Cw$!-`BoI^2T`C3zisLPL=y*lKD-5)@~t_`Z2w~vP&1KM z6e-w+bzl|u$1IfN`N^%Mm?u9xXP4@XjTT?ty1Cu3;)5%~ch;O;;W=+$^}7v$L8Gm# zId1?EHqLqi6gJLYDzfI(&@w*}`M23p|FU26vZ3OAg^}VcOk)|v*72h7^qTzeE#B~) zWgM)v*k)26zJfR{kplGG#7aaYB`UHjG4^|qwZI!L@cQN-t3n^TBSWO$Co1HLEg|>m z?Y&@Iu&aB4-uYNqB~1=`c^cwKKDaVUx33Kz+oFi zk3|A+3FF-=P{fIZQ73?qFRyxT7ZCJ~V(ZHyYdSm`r&r}$2czkD0Ws;p-3G8glNWJg zYT#bbqee4m)me~Pz(1uB9Lg0}?_2eXt0;U+4Z!Tn4+p&{S%bMZS`va1T-IwAEAG&hWwHyx zDKW15o=!Lu5XqMk`g0H+Al()3lY4T5UiX4m*oJz@j%*s-v<-oae;tB4;_cd!^JD-VvlwdP70q zhDR>u{E;$Ouoc31pv#a31r3YVbVwu!&{Oq9?Uqs?j$XobwNBJgEZFO|_IQqd3Qk9H zzgP|W0FJ7P3XEJ0BQps`;4RFd#DI%{uU2wCJ4mgzug=WHO7xmpdoBwv2Z`BH+G79X~=b zE~``9tCMm$;o=DUX$kVGH%`^_5l;YEyD`(&uTBrfJyc3CBS8XT+YQT0tU2meyRdg* zH19KiIvUHzGBSF4QSPdJ02b)VDG;+aGV5hfh%tc*ti!aHz&b(0HXwQFBY-8x?F?=C z9d3(oFDeA$1}=iCL!IQ%V6Cu69OmC?YSR%6jIbQJz#noUkEDk~Rd|}Z7?%i@=3CEm zPLSPIj0(DZz?8e*7ke*yvc$zG0txTI>_=U58VAG^0tK6~R1(6Eu^(d-rs=^V9ERQ1 z{bFPiM)cxS0mPLD4ADrFdPMbeG8hOTo?X1Os0iEy6 zX#0>q6D~mi!j`}wF>|VU7&*O9UeZ-PC!YW@QN%|htIGRP*f+}eLk@bm6If< zdX&~_lP;9BMMAEO0lT4oMM8>iu#aT$Z+Li_Dy=<484JN(tI}V^f*&fv51M+Lr+|7x zWVIp|5pWII!yS=Y7QG>n2s!jWz5dc-VK*U9kH78MPK!y$i$Fu&fRimE(SbP5_SG zSbIOUzo`w93(mMEo>pje7IF`$yVdPDV5;p$_1!gg$PbYr`8)Vq)kyYBoY`eR!oDA% z%9N7GDuEKV#hUElb_D!}d$Kt&oNrQp=^AeijOT2Q2X(0JZrvhlw8tOrA&p{t;$##j zK%1uV9T8{$dXwshl_g&PNWXQB&~qRW7?3~!p4kQg(6q#f!Bv{Bzl4IOS2avIJb&4U zzGRpIbypph%gOKvteyBS)}86DAor#AEMso0DR-7MI=XeJie#}x`fS%^Zte@payS~S}{u2Lt;`Nm^sn4VS z+|jO&_VSkb-$`$eT_-eSj87aAKM9w}gOW6Q;%(U>E?VXea^Bx&=#13okQy$_#s>x| z!H4~N~b=zy2(CS@T^uo>(yU5|CC zl^yUQd_xPv+=ie3v+#QmJa~PRIy(U#Si9A=0=;*OG}QdGzq8HX2}dI#q2{QO%i;n~ z=U*PrpCoTQ!heN7IL3p{zfkA5IzDp~X3j;pnVU03FRZa1!UtG%-bCyOyxlQP-d^IH z9#6Xbh%^qp2S@Ps&i+iB zc5Kxtxe^>7`aDTK%s5%7F8&V`E#SSjsy#sGt(^;(rZR|THy78oP^^o6%kVde4@TbD zP4y(hb65OBCbqWfUnrNi*8T9ac*nl~lp7PY1(&1P zhLLo8OtBP>_Ke^vIx<1_Edofh$}*!F*4)h4R$a6d-y&mE^Zc1}dggsHr#sI-=#&vi ziLH(KGxI)~eSq6_?V6j8kaihpynmNzQs_i1*c)DFZ4s~JaOD2fXaSlg z`$s5%Z!7pu- zCwr6IkS#nTQ@#2%B~XyTgP#8tcU|r>u4GhwI)c#Z*ty*0epkJbDncBjLOVzuXswuW z6TyR^a-G4-_n^PPp$*_r5In`;`GI_mc{6b?^cxXe(SOP)G4e78L{bOcMrOflh2%r* z1Ni%4J=a$CdxQ=Eh+j*MIO(DZ0aP?iy0&W12nGkB)O4KKkzwonlG9t|Id5^*oDoPrRpcHu%N zXb{1U>T(1DHFGa00?SCP`UVRnv~v)zFf8GspHU@h)kM9Yo5ht4?D}o|p@tN{J0I?v zZQ#p^bvC|d`15+p1_11p_Vu(mBsAn1&kQ-NCJCaL{+IQ#Abnd0LzF`#3i!W4WsT5u zv1cj(jk^lu(`pC(WE)ME7+{XHx}`w65q~AoCq-8U?-Crj#eq~fm#DK5VN{!dsnCPd z5ib@31tiHeB&p^+w^a?-gzC$$u$aI(112s?s;kj4$iVn5fCb`U|7xrH;n@F1k{0k4 z`Bc*0mQTPGd)-#8MqPac2S8)Dz6b)S3_66CqxZ^9suV_NP?-LMibkYsfazn?$f|Fj zLpwn94B!u=3omogtq{o}^s~TpyHvm5kSq`g@hQBq{54(L2!A8bmb5dN*IAozA3QD^ zR>QHOW^nEUoWHq|;{R@q_H<&LON@^XaN<{MN1oX%_@%IaHGT^aq_r9Rl0>awDEJwy zQZ!aA^gROqa4aa*B6 za((S(QUA;JwTjpGm!E#7KCK`2*EJaxKvYNmSNHEPlaxavKQQ$m{)y2Kqb@-b^2nZd z;u<2xF{fV$OdJ@6cut97{6kBG4xw%aWKj$IY8^n{{jLQY=en>J*nh#sdFc=lr-@eh ziAZ5?@`0V4KrvWMn25N5Xv|M?vQtLGFpcQodO0uuwb6L`f|vH)KwcUW@$Z2HM`!ZV zlR#Fz)*mhpVuG>d-wj_;Z52ZU_9tr9vtPgxYwgQZ^IX{f_N#pBOHMPBS90IuAm#t% z1=c#l0N;Nmy353s(*PW`K7d+T*D}0DMm>*df48~}Rq~P;h}WBZ> zsw>2dV=l6WGa-`6BD{N!PSylrfGVDuFj$hOmj(pCi*ay-!(aa?hJ zUBRx{qHcnAwnE$|!filZx>^*h#)>x+(FgNot7M`}Z9Xa|lrYck;XK>Q%(EN(j2pOt z^DM61^ylRfsjcb;;G?_JscAWs;wJ4ilCQOHDb%UBJpSipN%HvJYuUEj9rAb$+cv$g z$m49>-6OJi8&&R?MTBt}1qH1JL=I|67;FAnm~J?iW(jRI8je{O{iD;THckI8gnc}H zMAP&T%$D)={!P<6JK?u(n!dwXet)Yb_~A`1~5i8x^neqJa`pQvlfUB%BnhqeHe?%g`RmjERfVx&%AJpmno2LI0`bwNWt(&F~ zhaXTpeSeyx{Tlub7{uf0)lJhMbC!RxY5H1c`ocsyt}0R8f&0(4cTysMyuJ52=zUQ< z-OyWauiuG2X_nrt?fei}BwjTpS2Ql(zWu4D{U&{;W}bL@b)$5;Gf8p7zb`gQU(yKv z!ba(crz?7$TR%37CeNPFKQ)2GFKA}*|)(S;ufR$BzZ@u2+ zyD>3kjg}=Hm5EPh>m?luB`XuxbFB+y!Z}}NnpWD&`_t8{A191Utj4*(dJbt#=Se5L zsu-?40M!!kuKyW$uYc4cyu|v=UjJ*zysp7kY&hZk>PiabD;d`g>Lr((jnBfhE& z?~Q9Uy(yk=jZz$o`f{n!U1kCoNb7O-1*qo&Fm;#508Zb|y;3~@sBzsTgD`B}Wyl`8 zCC+I_RNtmc!(E!s?Egj8G_L-pv9nGH83)%R!k&dg6Af}$f_&12^yiK@U>l!XeN?}c zyXn*Nt?zyF_orlH$J{6O58M^OlQGtMxRn}pzC&xO>1=#3i!HnWBMFpTKZ%|)-i{JK z*_xIfJ<}ID5)1UTHmOZN#P&EAA%;jM6~aq+l^6EtpeW(0 zzz5kKyXO*sXqCNum1d07%2#En#2 zhLtU<$n|CFjkL!5HT#Zf{)YXDicq8dLji^*5)ShJ3V@<*jb;fubGXG zTWpJw6Yd(o)czz|pv@gk^pzz2tVH9}l72QwU9QOK4eV^LDVJV>;i7|)%dLzg_+j?Y zOQ&GKTt(&{Mh(q>KZ|WqRalbBa^ALkY=!EqM#W7Z|BFiY@mKab-#IptRI)^4@$_^0 zXz5X*zqU*`*ZYTkab1n;{aq96cHS!o@!8I9U@Y}c59Et?gq&p+XdPfKgt?0DNw0)cQXh$KFxkoRt>n50n=GC89Y4Xhuer zW3lv|>I7^x$8(JdgDMyW`efX`Ds=lfdgbW)ZT^5*KBUe@urdcrM8?~s@+Gsx<5^&d z@f2|d+{L(X7K_!YzYlAUB`$_KfH8&*Ch+zaHAGu{XeasPOQD;#`E0|B-5`iDe-oRv z-T#JuGmhx-mSm6EBa{@LcG@G1Ab(rDaHPv_(p5Ji*w4``Mb}rrGgV5vr>IMzO;`tc z)Ep=5>*&rHI(}kaXI_iP#@4Ey$iU>!u!#t2_2#!)|& z42fUe!2pIK_8JJ_J%PbQVCwIW;{t_!fj%~W^&8iezZmZU-X7NdU@BM)f60=ihiN1F znVzaXY({2c{d5oa=(Oy~27{-U*o-z^u5l)_e?i$Z5Llq)XH(a*S5Y9WwrHIYPU5i9 zE2&p!HaiSubU5%cSmkJ}M2q_+dzRs!IShEHO=x}o9d8}TiA)|4 z9k}W|Bu2AW@i0L2RJp4l&?(~sEMLGi_jXuS!tWWYCgTtHA2{(JzVKKK6LJp5B(B=T z!{F_ZIj=!V;>#e=BZqbL2{m*MoEmBv9yl2_2RiC&5HfKVu3fYp{%;#i$NvC`c-A$? zVnfSO!#sZKfSE$~$G7k4d+OM@1OrKnb$2A`n@fK*Tyg}eMn4GRe~dw3;2JgHK|6v% zU?AiJ?grrUp0@{thiCb5y#N&poC~XsZ381<60KD~hV9tlW=p^bXY*z%#~&Ij&NpYe zJ$C)PF9S1p6~h3PVAO0!6a|`()gJ*Cvet7AEG_z<)))5wU@%8XppZdDAL6(qi)CT_ zUpK%X`&={(Nl8?1uYX!7@A>8OvL2b5T;4^4A=k}CR>^>3pa4liA<1=$4=rJmjZL%h zOS&b&XjXa(T*{_)i`67Auv}^|b^+o^Bao!o2;s zwvLij$R5O~BQ`i#$7$j_JgP4DvnlRJs)!-X^M1c|2js(SZhCLV-IhOWmO1ho%4aWU z=FRF5K2hhgydpqgKJ;R|$@x=A5>ck`hR<3AWB^+&1)f~MKI7Gue*_4)`252Nx6P_p zV2;7vpj|(QcBtM)hZRLelwr4U1q@;->h|YZb_~RpphiR?fihJ3Fj97lx|Fann_O=s zOr!bK*6%%pHRGTeWwS8b*A)!@LT0A#eb&b+LpQgtiQnIvXywgt=@l2U;gH1VU@dqj z?DbU^kYr7#QqO zV{2tC1xl@rp8higyb?^W6}=oT(}w)aey5fP3wb9cEC-!pn*wLYHU-C!g}@LeX@=Mm zDcJ}^pe$IQ1n;QUvxJI6z`KPmpTrtQ?iy)e$qD5Px}G34=918^Q5;x(df*`8kRyu_Bu*fFgXUWC5M0B73pC=tR1q zqtE`9?I9Y+Fsga*xNJ7JobLsTF(60@k~Z*a%9P0DRJCgpIbqIt?QcUa+=(w%rnPAx zPI3h=0ghcj1e{5@0w_V|scwtmERK<3zwdm63Vtv%hTUx*N?IroXTQ#<6|9Tfq#7Z= z^^j13F)WsnMDy2?TnIVfr2mowLOjOfCedHQP%~HOl{(SlBUr2wkQF=W@l138ooRTyQyiap#9L>u|i9hWH zd#fTFaxO2L$Az$;Ar50vB;ybHn1xGfBmRxP6*wrIqB;jC^lm_e{EaxnOG8nu!rec@ zR_TN5;j2ZKQg3Zw7av^7BRc>y9bkMbaIzb#@|fCs4`9Gbk`X$d7M#PqDj&37m%0~) zFu+DjJbsDi8x%0m9w7Yt6_33g*h3dHUZ9BQDhVep>CAbk?(_iO<* zyE1M@qpl5JjZXDPutOaE$_JU?icYpp@`X=|ZKR`3VR(`&&>MH@UFMIBipxmI!)-*q zQjQAsK$4uEr%XiBGm=Elb~!Mo-bBl^#)t-$lJBQcXwTp@R)#U^HNjD!&o^?-s;x7u z@jd3KNZET_L$Q^!rQQ`d{gJBde?|LzNDC ze$1Is3{67MiEKv690xt`V@sAJOakah|4+LC!=(Y`(tr~i82A`H1e)%dp=mk+b`HDY zzvHsJ8Jb>xC{ELKu`|`GqS>J798J>(A8Gn9XsSrl2Z_nq#Kb|$(x=PoFs;f*LjIm0$x**-G1oo~f|*`QaXbdYITUX#|=$e>4% z=C`hQ;kYIEO(apZ`YV8PZcDemvxU&bYbk`3-8JfR(!mx&qX=Zdf#B^>Ga-MjbEyW< z4B}^ujwe2b@x*_`C(b*RKWEtT=d|3i^k5Goesq&yi_{WmTo9vm3`33oRiMpY?hDUB zafChC0s2|jrTB3zER@2HfeSH)uE6C_PEm6UnrcMNAjU(>iDGtzQyQd6jxSu`iuOeT zrvU0D1rh@20<feurE-jxIplRTp?y zE_qJJ_<(C^FEtyG{5o{)c~znvUmn|ljkpuD-?XbfB;D5mB{+vz(~0ytt|-c=G?jz8 z2>}Z|$u9Ps6l-mYU4ddy0My?;hpdWpeF1;yTsL&RG~l(kRPj!jh*0ld09EIGVI&D0 z`RY^%JY|EvS3qY8Xq;+Qs{Zx_B_aKxds}OHWpIk>@FT8YH6nL1ilGU<6}^$9)}V~= zlAV{XLB)^~&}%vq)zd)_S^ax`*Ifsd4YMAXH#5LOnP4HTAd9kxsP@paX&&bD*3S}M z-AZumr*TvhTSV|SoTKM)$yw*yXnuAXnS@#=>D?10iOpm0a73Vb2TJtTnufkFWlYPP zv&+B&h(inp!1@skuna|P2KY087Fnfa014og1MqUpT-_(A!7FsL8uV}BfT3_@-vDp_ zH*Ac4Cm0Pe7=>>mM$nj1InPjn4S<&L0O@2G8YP9!H-)Z1A$Iu3+<1(1{Xq6GH>;uO zRWPvj-PZF-a{Sh~|FE#cX`dS@c%;y(LHID(EY(lnga?rB-gnD%$8h>2?-Kq0X^BN??4o)Je1Ij zlXCEz{=7q7C~&m=8eq$>-ub!H5&~?UbWL1m${@+6z!Pv*&czfSOE-lyQnM*#s+;Hyhdik}(X#VKq$dPm)g2n}4~ zEdhMM=?31$kwx>syex@+TP7i{V0l;lXX)io5q7v7m{V0dNlsh2RA+%a`yYr0DcfMRh1iSy z_jiaFAs33-xCeye=zPP$e;RN{^ehTn%;dLosJ)S0PJF4-nuvc%F-T>-VfGIW?ll4w z8@{-K2dBnxVG3LM;oID?4s_Hu4zoL_Qn58vWVJ^dkZS_wt{SoCsNK&|y-eP=i_2?g zedTt2*r_|BKCdA-H}0(hI4%zX4zW(uZ+;G(ZEw#(8&yscyw|^L9^NIt49}^gdI@>w zCx$Y(c)S5ZWP?{OLZ{0GrkaM`tf@G&2uC0!vKLLAf`0(^1!=_kXEaSp*ejDM3QO4~ zSSKLaMY$Z0e;cn#mhguXRjI{N&luDLqm_;zMv9v%&c_~@vD?KDbesKUuiA?>&KKQ(CVcatBsR}(I-`!>vAwGoilvb_X3>?ymw zPMz4$GqGqBq`TRWkE$aSz8Pl+%|Ii&x`Y!|f*9QMz=)YI?*sNmrpIw#mNzel8SqFc%|JrLHiT?Y|H~&NbWjq~k zf3y83_$~X$G+pp}U>D)SVhQB}ToLE5pBBXrPl5xS?VFKQepn0T?|Z1F@;OQ6(^@G1 z^@A;yKe*e8|C$e*$Nx7t3K17)N%${ID*veTb~Ej7vHlrJ<;S;B{ywXv`g4-XpWH(E zui+ZrJpKoFIorQ|UkmNWQH$owFH0(a{tv0pAe(7_i}lY)D*ru}m(7*GuSNRjB$a=? zh4No7XbJy=A3EEAcMIiz(<1*aODg}|n&#>EQ;YS_NGg9*3+3-?k^VVJ<@>Zyp8n{~ z_us*t&h~%4x_SJ6(<1*aODg~9nug}be~b0cNGdwq zT3%#rD#C^Gk*+gWLfl0C_3<)Jc~zxLnfdDV)y=neQxd&&eGBdS*5HOM zR8-CSSkdvM!GUga)>o2L-}x=n*Dlmj|7IqY|GuhueE-@ae{Or<$scQ4DF2%Wob~JW zF3~09^zF7n=zGHxhQ2%J+hv^XElsL#d<*sc6z>~ywXUzfU7w-vRMtoO9!MfiJb(R; zVke1!e~kCX97`aj+#4ZqsXZ{Y7|er6n+M7%isC3b$pUki2n$J+3hG=e|X&Trs% zv-#tbq{hbKUu5Su@GsK%f7i*NHM88Nug1T%o!`LkZ{xo?jtF4$pU%H?doq2hE2aM) zvEg@X1ph@lzkxr=rvLQj;m@@58~k@_`V7J$S0U@nIDcq-M%eic{HZp5-fq5syV>~- z{OT+K#{PRB1HW4%`1{{8?KSWh_B0ux=Qr@HPcir(haIUm*eyP#am(b5;+ z4co%`2SFsELSXl*MlUWqJPOX!h=@~!zPC|S<)4Aytr_^=i+n}M>;;jKPd{s#RU;j{Bg)81#|f+DHC_3tLP zxAhl7&#g;=65Ctfh@RDUew&^Mh$9(?HV=P^o!^#^%pd7^rwxBeBluGr<=?qq=RJHNrFn)!+N@i<`9UMKxibSXps2lll@|1v-`^#42HY5G5pk1f*w#acs8 zgU=+=llV+;jF0BenRb3dpM{?bea1d(=)b%yxxFLo{5Jf582BBVhu_W4Z{ROs@Qz5w z@BV1uPih2z|0cmdbj0g^usv+8*xVa_E{xezR{N~S%hmfQr4+W>7W*8*`#PL~jUu!R z8{Qc%$8)yhd5GirTE}yl}8JD&GB zp3~1t)HT5IT;zD3=6Ig%cz)9H{FdW+m*e@E<9WcqL|qp+p1qFeD;&?|j_1c6&o4Wk z-*-G8bUb%CJ5g7T<2m2)TbH?xyJGQh2#04?O6iK<>G++4Ujcr( z_>IHwI{a?MFNoiK{37^0h2IPKy@uc0_-(}R1N=V2?+AXU?l>vsO#CjyuNc3p@Vf=S zyYQQXUl_k9@cTP{2arDlfB%GEC;V36w;sRu@cRV6I{bdbFBN!q#IFZ_KD_tC-}CSr zieDjqY}Z8mZp3doezWjffZuQNdj`M1;P)ne6uIyhJi_h^cl;iI)*5|wVYSE?ztu7D zBnXDHWv&QZ%}F?Q%JbM>s?sm^`eTyLzhL7m``*XU5!amVkVk%8RRy~DWA{YTYXn4O z9BlL*Pa$N=+}+PP9Of!{Za}rx@FG5VBDA>|byGS|Udu}{QF7n!3{KkZd@^JkToBd# z7kO|c7O3-U^d@u4HS4a1DFp1Ca+AUgTk4Fm!r-z@J<0Z z!aX_MJMNOi?a@+%lw$B)Y{V@@^X%ZQ-*O|4o$Nq)H%Mk2N z*4SBJqqVr4D)i-vVr!puD6~0EBRVS<9S8#C0NGEMXaZy)4qUXS#y0eVv_6>Lz9H&D zglNQr3XX-Tq&-mcRjvj;E5x;K^dxSd$`O_`i0K;Lf^=kCxd6|RQ46uB{FdqqDVw#i4I;6o0UFzPjp}?=9<&RKLx??rE~q1HIZI5QFuyp91h$fS2n0tf0FIB z`r+wm3@3|&Mej}Kmhonl+Xg8-O@T#=M4)A8Y7p^HV8A-;!NshK?4|e=nv$N{_O^66 zb5W7~GQNZd7lo(5{6E~o)?EYM{on~w0v8Npu-|nBu8b^thQKr4Hs1yQUJd_7!q1ZM zF|f+ls7}vvcU+_Jxz2Juv*3KG_B|_#!1t`sy2evz-GVwWy&A9 z=NO&*dRna#Fh_S#4+zXH>OO(F7AHQo2GOpLYaRzlB3-ATq3TtPRjqh_qhA9nNN_f-bg7>V$aed9^3+P4XgIK#cGRfogdLi^G}H3$$IchtA( z;|N`oW5ZbaB*@KBVYq|>!O6Ji=G9nX%N+d+otYQ?5oMCs`mcK7kL;_tXDnt0Yp1-k z51&D(`@HpmU-2`XQRgBXt_;ThhMOfXQqy(0a~%7>2vMk};xmh1uZs^tes~&rS$fy( zk1M%*?I2qMJ-JjQ`h|#r=qGHVv;Rs^OpRVGghB`QX%j{`M-3|=KxHTH$zUDfsDei+-0s*E!S9&G>U zE2<2CJixxC$rT&Yr%1q99N#H(r35-6Oug_&ox+hxyNR{x_ccGqMOy!^e@8acAa)7{0niTx4D*bNmk&eQB4<9{cjR?HbMX>fxNNHE5);iPN*NIy|mWLRq5 zZIE@eWt6DJeKePpx%syNEpk_MN9xMk(L}koq6VV!cWPQYGN=1thUyC)P1QmB;h%su z@>K9vb=X6f7Rubf#XJa}#iin~59njyu3(T$$Odq4>D$Lamqf9uc(LF{wPXL$SihJX zH8k8F>aE8009A7iiT69FTrbM)E|J`@71+93?IEbbTlnksByXN z3mX@GS@8?H?4>Bn1NYG}2ElFWPw$JLcN)%~;vDC2%CCRF1^{Jx z%GJkV{rTVh`58_RDS{i2Q9BTNfky(ctGZRqOd~}>W9W~XsV@vYNYLZc#VvD8vXZ_`U7G)B=z4b|FLn={kKn-*XSJ#G+WDe(GoUUT`p&d?3=a`*7OI3gAY99mijFH)3W8PiZe0 z19EMmLjVu+j2g8Mwg(=mRqDGK%&u@<<$>U6HsBVw&yN(ejl<7=L@T1wDcd_b+g4FOd_yPqbmMR8`gF@OL#rR|FTWQD{+f>Zc0!Q2n7$5|ZGFk<% zQxA+KqtwK@rqZ|$MJGdz#V4Q9VUd5Ux*oF*WY8095pMDt5aHWCAi{)OBBMcv;nPT3 ziWb!!Q6aP~h0`>QxrNqt)RG!JrNCOPde}gcvM^;HrWpaBl;WH|D6d!aZ6vSl`0XjW zeP|ds`(6;}Fmgux2i1e4Z5=kyRc)$AC*piAS|~?xe?2B~*egU$$G>5?3$1`qzaf*P z%+VB(G^~G8Er_HvD>HA?%+`{!wr5p*`iReOffYh)u|-Mz`3#kcim2FfrtJXi=EEId zUHW@+f;kHGX|a9GFy3Z+zRb4aT?L#*gF`fo2(`9`rwF4xzh$V=Y@QA9;U)mRSNbN| zmnUw+Oo$_31y+NEVm$)3b5~%OKc)PV6n6zZ$|+4tISi(ee`iSeXqfZmiV}TalzVwW z%B2WjR)Gugc;{BJ^{w?|Q6!k^8~CHU;xxj5sx^3z>imQZgvmuy_KQxoLv_Lz#Ae{| zdv8c;pqs>>9ty&j-_ySA4AhwT>=BhDN_g#I)ZBNSH5=Ib6MIRe*^e*V~clJ7Ots5QktVuQf=ntHmH@LvL8WYkNL@Smua zh?p?A%3NL|M_kxFRJr6<6AU=<3Xba^3Cc0k?uG>c(dXCx7`>sC=fj(Z{F$7}(hW7} zqBC^_H4S%eqU`dJ2I?ZOv4YH}hP*)`(OOOO{X^FB9kD1;s_TR${D`HF8agLpw+dtW z89v8Jb^}m~H0?U#jILu4Tq3i7i-4@U(nV`1tO(!RSE>MOsr(v-EB~`P_r#Z*unNB? zzF@Aaim=KQjHdwXq<3e%T5W!0$a|z$B`;wa5>5u^u^Q6aNpp`I1FbEHCO1?7Qblqj z?UvUhyWH+J*^zmlu|w((3JOVolGsw9|7dbq!>FA2?tVRG=zlTvKPsgEry$PW-=GGl6(&qjvHj0=_ z*(#jXPbv7V&V#lQRFX6Ex_VV5-vRQ_5A_~vXsk8#ox6iZx_XgKAw@5$%jie=*@2B8 z4dL~%njr-Y+dr8KC^yl9yy3Jf9L7wzFHTetXG+CVw-3=popkYo*rmBXHj<&_CJ0JW ziTCV}hVaiCcR7CXUAx;Di?_-c#N7y1P98DJZwjFuYS79}8K-aOM$2$;(m)Nl-W*=< zfGV%$7kU$)p>ynf;jX>;}?1qYRP0hjnQdmC10GC)Cu!+h}T$wjK9Yh4CUa z)7-Q9a%=-k9vtIm^VCXW1gO1}Dyh1@sTh}b?xdpIP^LP>e;D_L4~d!_n^(3hQnRdi zY+g93s}1De1fyE28tBveGn*9>9gwMOQHe#k?z~&!sq3#BgT!6lIUW{5^in2nX7qV# z=kQRBVpa{n|3*_@G{=h=f?OgE_-OlatB+TZR>tyxwUuhdtspHB49(d1AlU?bzF z@UYHX$8NX(2lj&Q^Ys$-J;2xZhx!UB_XUr7B@QWVg|EiseG$Q*5`dT_0oO25m!vM1;ArtqbU&*#M;;bpqS_dX5R4o>Ird|bK%!Iub0 zyGYFF2h>Zpe3y3DiGeKF6-}z7;}=WwV>808w8p&*uL`uFJ!6f>OY7pOhXU0v;)`Sn_7K zu?l->2PO zTCmN$C7PT zR1gdnnH>%Lm@T2acVqx(s(8~N39$pC3;(2h3@)lS^TZQ^V>5s@175S9DFUEolDMbR93weKGVl8}$4HI=SqE~? z2uGM>x(tG9gz(+|Sg^j{baz|+_z|u|!wN;uex8=MpM-I+@*MQq;4aXZDe>J#^ll51f`^<`2R3GSKNa?!dS5?WKhX~pE z?x$nm-_1wz>r=x0H=mJXGL{MUS!Ba3$Va;*I<;Gt*LpSh1AqH_9}UM$kRo}5Tl)vm zzR3M&>o@thostQqHiW@mx1z_LPVS$K_Wx!{LvNxS_Kvi;-p$ee29fXgn^)||4^Hmy ze^YoXfIR;g5I_<>fwkeW@IHEA|9Zqj%9G>9ScdYTutxLJON~`L2-$pcLD*>a_*%nS zR}Di<*~H>t$@bNnYvw^o$Z9J;274Orb@$yZ~02Z0}0#lQ9G7+-uG(mBm@pNB#5`!HQWYIBn*iJiCo#*_LtK(_(? z7{}SRuT`$&AO(r*de@^n;P=!27*I|X7w6k~$QV{DhQALAZ%}Zn@<(r5K2`UoRru6L z?d`6^i}fR#>oU`cei{WggR7lh@P zXhHU?YTTH|Ev&|kMe*>wj>+;vX{9On*WzK;PGQ(i2qFBUTxW~g;(PLMQM_2Xp^mWF?)wQP=r)S?Gaey`Z8+@Np~x_WLBWsJ zlNA&U$!JMP>IPC6r#ytOCW)yXfd-kgC^r1%`H=;=$K>tG8|CT6O|6M9c-dsn*2Xu| znKr`rs&0QMz$jr-3YTBQkf7&%I92+iH1Z8Mi6Zm=Wa+Jm8NegM0>&Rn$gcNK5gini zPw^@Xn<<4fDnfVP&o-ij!@DsS1OT?W!X)?(x7a=lPgn8RTxpX^8vW&uQ$H*Swm@CZ zaOaV?qTk>qFPx>>pC0rVoJZcNVldBrB`1$?8(CjM1_E;7 zwPdjXzt-p)m(FU7E*dFNQu&QX+E%yu?1G%iRCJZdW`w^ubRd>)E2|Cz{`dQEdQP-hmzdXN)bp2<*hs3}q`mAr_$*>9WK^gn|VC+|E1kGf15trm-4XNupp6gp@ z^RU)MLrOL*E{Z;dZ#du4L=QqEq@WA{={!J}) zs0)WB269&rPT1i_dy`z#TMUbGTzVciqGr^v_&F414;-r>dWxAPIqEtu>ifDdCQ(NPbAs<<@^VX%91k4eVc6KJd>AT9d4rO&~nIhcW;H(0F=BFB%I+V zp4d+CEun0D@?+MOR?y{`NvYxUhlct2FNOKjzB3mxpWn;p!+stK^GiR<%KzwozaDsx zF3f+DYhtvoSWW{2*|;?*m3%8{?*f<8UdgUJX!rC`77ABF#dVb!QQ|2FDp3gx(koxI zC(35OFNa**%&^zO0rXmh0sYtVTl7ISp@qUVMW$J$V*8>ADPoK_AHT6g7B0;~J#Cl6 zIN^i}rK7DAM*YGn{{VaNN zp6et|LrwBb_(-oBlXg=1TOxpxDopd?V`%AyDE4fAFOst58QYq$NQ-+eZ?KTAH6lU zaT2Ql(CjXnaNBl_w9&1ze$iw3L_0Pu2S_*5cSZDuRE#5l_3rpzgzv^B4q|vk{WSgO zW=(%w)!uBi>1XEUJP`y455%|`QXpm$FK_Afo&~r-mwwhu=P6rJkJo?D3|Z8QN8{J^UH1kg6h&(KmRQ3TdZ5q(l1_|4-Sq&L zLxe(^-^|Z;jr+?6-Z)xMl#7eQ5cT&3qfm4fe|XvA-hJLL{HZc%`#ACC(W%4~DSf3X z$=me90DnC7ynj-%9g=$FaI`OYSiR);`%IpIl$A1q@{2Gp=eYJeb%JL)^NkV{0jgau zW1;u*92$Y;N4N)mAqjFLjYOJGw{_g%a_>^L<((I0qr}#e_)vJiJNX+!2A1vQmqdCy zm@v1rk~qSm1cUx{@JgfbG2d$8%eTmVLxcx0xUKJB)aaSNW#VV;+hlcKfr{J3-z% zrHe;fN_>yVU>%n7@cM%BxiR8_6z}JYejdy6Y71Q2{ZN7*-K?jZ{{;9dp*=U{*8%bD zA@j=@iijkz2Sx@rkR8~oJoM!wkMZX}s2`URfT#EwxMy^s=G377!&3&mAkRz9%I(6A z*;YQX3}b>dXgZxzWZEo>10blHnMvHtP@!0j+x_!cT`1bqN z5Ij^WT-Zfb`n?wInsl*S(1pT&&_%CQ_3iG=?YhuW^!{GR`0YL6vL~WRd6Am!Ej2L8 zQb%I(0YS6MU%FNKfjcfA$Ui|*2|lMc=4Qn!2;`rv{FNByL+rwzQu*f_gF^{zjw+~e zg#rqkOhnKqd@EWad9S9qYGAW}pUSuQ+AsZ3)L+Z&?Dl;Af~@>LTjkT=9$WQi@=mv_ z(6zp1CGk%6MkC5YrzDQUK={i$YrDgS{3X)PDPjiKY3@E=#EUt(DF{F`2ke#gGsXKq5^KktaHx*>GHWVwYHI zB7*iRcgu~rIbCdwtKHtxs>E-cyX;Ess5jJxy_`)iYF>w#sp=%Xz2c6emnd7(01gBJ zRR@-w&dO{2kV6p6_sp0{9soPcVxNDGLIE9$n z`MCjFK2obi7j6U@}Dl@vHHM5jpYGIp`gh6Q8hyN|C0!r~_Z+ z-H+hm%Y(gE&EVHdLf9?+vbGB}&ime%Xu7QHLVl+wpn5Fpst-|dYhRCwUuID8g)3c% zqs{2BL@FpDOS4DTTDL1Dgsje2O-#F)B8xb-1D;k_Of(p=O_LH$UfgQ>v*;TtDA4{3 zG0T!BO6xws-{tOruY6FNE`22`qT?*TGx=`v8~3|+B@!^oRui^vqx;mPcavxs*eJU9o%Qa1B2lt}DbGNFDAw@3> zuI{5H8PAeH_Y+bkEr5K_kr>cCxxg4ma&@J}Btlr|#W3CM|1)`^^Z0DpK(nS*i)8@a z)Z`^Qi<)s~FiY>tYB9s^VZP;#;E>3EBgN>v3A%&!(QSXEmv9hJmZ_~0w+VexXb2pX zkcLDKbx!XYNlKz{YXwG5dx=_ECGI@4hZ)m2&O9I)>YfE5({P&nvzRA$$zN<4mypG@ z?5`5z^Yr|xwQ?zoT^-cP_`ekZ-Q?-*<3^v`4Epjrg59Fi25Ij_ZF0w=qKAWipYOcR z$e@3~Y`1ZoW@E2RzNE2>0rDWW`wojDKI_Z^1LZ+eK!Km23Ni?HJ=O_<28cSrY?M=2 zCRDFMnOQF}4fvg(2Q%?yRdQ`@@_jrJ+|?W#*O>hmm9TMXETk;cI%jHVvkaIZ@Df0k zqkmLf=Jk(%(X8HyUFF7*g6>(Q7lmVH=#q&Fe;hyJ5t#Ho*Z1UVu{aHNgiUjs-aaaE z{TL@pt!uhlVUB4RDVqmjU*j-buXWgz%row_^~8?pwf)52@uW@cII^_fR6-LAMTtD_ zVkK&oP10M(k*ID(_-D+|nkyJO-0LT7VOh%M?2Jpj9~v==(e3;!s6B4jqZ@3lUb@a%f0gz9nj}2#&8oBHbvHEb**vd5;s}{o>h@t zWowAlC93-s1l6^-R@W@m6UkLbynW5DuYI&!0l3~6jR_LW0Pg4+sJFw%H9z|g__*oH zT>OBT{dJoCzBcR68ie)^51I4OH#aBTm;!C<-%{P>PgCC>T{b7FT zzq0Isulf8~s<0`{@A*nr{(>;S_?$4m@eRv2d`((7UsO3iD3#1VvkZfNskwVKkP}O; zMD&%_iI?f!9v6#MUSDqheNu1NxB(;?y|swEB@q3iklXM6PzT0Xy23qKq;~WWz?&D@ z@f(69?ZuLFhgcUJ3FQb2$$N&}OB;BC2&NEiS@bE>g|}P0cdKDVmZ+mH(R$FKUqXh+ zJ9@$)C7NdpkvGzqJL$1((Y)N7qL?U76t6Wyomc@T zv^`!^@+z^tLnUdhxIn*ku$aEkMz%PH0Or{O&1$I`3D8}t_}X1K2;F@qfjrLxB0%jc zP^+Io9Ph1tT*{pL{i71~&cgcBJ2d{}QH;|0d}t{TGnXCw8G3AG{F(Q-2H15|23;Bd znWyFjD}aj`uf(rR_CZ*_6uspDU}~q4^kU(l+#OsZA#I}&i4C=I6iU0D-%QM z`Z9H0ccfRZ%G9xJt}gkA%^{+}S#663kRl2$cTdfhAgG-*KAL+MP+G;v-tpr3(Hl2X zrs49wn0}+)1@DunTxLw{Xm^_%^=@F|C~cGP(MHQT6sPz8^sYV={7h9p&-DD=716ck zH5juF0QsNaELfniK`s0P72F9ak8KtJYOH@efy~QxOFk-;gE{XVp%KNy8gDtt4mDnd-Bl>MiF`2j zGceXw6~1mV5F83Pw9!*6JlZ#MT zaD}P+-re?aIPaOW2@T4R=e4AbXG1hE7Y~scqG1h&{LsJUDPKZnO&+A04o-n#0>nBV z;Y09@^AQ`XP1YM}hYl=}eb6VRkCd*!#)z_t*K&^gLmKU-QHLaYRNH5#>q>l*;c@Hp z6R8ef$tz(r?m!O;KD1TIFREm1-Gq)8O>PmBIav0j-qGc`AUSO&mgw>veHTrm9HptK4+55-{mI`10$@36VLfBy@(PrDMup}Ym$pQU$GKBBTc{dMI%k(vxIn$ zCjTaD!<0@58Kxo((h@nD>MW6^=|Yx>w#ZIxZM^JfUA*R!=ZZRo&t)@BkQ3VIacA0gQ!e#;s2F z)s|ANYk3y?G3qdWVRX=Ri^0=43M9T6ugt6;?i@dUnumge>ca1L2f8=v4Z6F1x>SDa z_3^W90ql<|BpJ=lOXrKN9w`ipd~5Ra}f=z`Zw}_Lt`$LX!RiV(i1Z<1!LD6tLLTkPb}~3Vjlv zoozUYCciNIEv~hAh+a$hTev1Z6f50$o2A5&4C}o~*4IOu3v()yOC=G!Ggu>9<%aq~ zGIicYuCjWrl9QsI`r64dBlBdNoUe=8G>g?{OZlkHLezViptC7=#My@B(%pdNr zqHrmeX5W`*UR{y<%}bloU4v_oKVk9-Z2oKATqVi*Wlx%L$5Edi)nvb*$qOj}T5&uP+rIS7;o1VRsKu&zl#Y2B+4=8%HJ($7L~3HqL7tm>6>LfG0XD)GxKz^`-y3vY zJkc% zwG!JZSG4u~2GlSzHF>f7z>GOsF_GCx2FuIUj6Ht!ja&2%UHlY%GUWaB$%xOXN={_N ztFWAgW6NR87*{dI;~cR~W{3wjWtJ4hPQ|BYYzaBfrHUWiR0uA37W*Z4;oj09J4cg` z-)mcEskKH>Vn}-?=Rn9O6`IO%1whLCfOag4f`xoil{~@r&Vp~aJ{+nV&+8q)&emjdOA9~qQSeH%jQ zCDYcuAn6HIELX)t5WB;=$bBj@(i*Hto|NYY7j1k$&s8G~$V4%&PPw}QQEhT*SP?GW zLr<61P&ZY~HEqsQSYEZdIILSFsR3d{e(aI-TErBIm`|@@z+8A)m7X*($s?48scql0 z(9W}sF%gp2eJ5lyPxiOoXhZ^!s7kh1;)D;@lAGMHGsVbnC<^)aNbO;`jfv4dkH?yEam})O|h3R~6w`@S%yD_t ze)${E1)rl{EO}~?O1^v_VsWatg{<)MMTdK7nJze8f3zlNnR{m{ENOjY?*4ED!=?lS zs2XI{cn&3u!X5$)qsv;91<#xGZy>*Q+tW&b*u8c`FmWI2)C5b~dUyFJ;)7bw@x9Fo z<_Fa7u*Q<15N+$*HU-8S)|0vaW_*`39d6T~O>}sjx!(86QO$fP}&u7Ks_BzAH2&|OT@ zG*yPimiML#+uW6K09|CQWsYBWHK%Lh;=K)J|OykFA3rtKARnM{rDY5I?*CS1zo?WF@TA{t@1&&frF0{C++0dXImpjw|6P z-9?0uae+VDh@g~ouqxP>y!oHqP2&zPTRdjJf}5|uwI3bsZhbZeK~sExA6;kt&3*+G zKL2%L4xT@$;^+86xnZ5LEC_u01z~x+1aePUa4-eKMQz$*mi*^yh!-tE#<0gyWxybw z1E$t%u{b<&gwD8(z?hA8x7(*1_^tU(l(bysr{Oqy(lkhON>x9^G_<>wztoah!B|5?8OcmD1Bf7tqenEqF|>Y)D*Uf5CpqIc|T zCQmk8YgjJbpl}}Wx|k3lY4Z0po2nb_O*6-8fI3ig>wnQL`ZFMz*Mz7}I%+68L>od( zj@WH4u%+d6^+;}MC>xO&99b|ncl4}y-ss6Z)6>|7LM_uh8pz8aw5u@la|x#{Q2Mmk zUF9Q>9H{6&l!Kgmjk>fTQn3ZY+}b^a5v%=%>#5h->H zd>$J+s|X{GO@mYx54Rd|i=W?M@4c?_m0$Tvd`;#di~o_TUf|MqYbwLKCXF!aZsO;g ziKW5Q+#{|rd|GJ#FNDio>pyk1^<9&UVpW8Q-^8{MX)5bs+@g%3;rUlPydD3TBHZbA zE*So@yy;pIJMos}g&`EPa?F=u!~doHy}tZG|7-b~zWkv7wS2iR z-{*fVU*yYg`r?0tf3>HP9{+3mQue{m@BX*;6!m`^||q_5tz|K@t%zI-NM)b~{J>L7_O#}#Dtb>>za%RG~N zYC+az2D$A4L}*Vu$HT%6OxXwaHZQZaSbgD8MX@?`J5|r z%SWO|(@ZQ<@s76Y5q>)fEs!R^1UB|RUt#!zncH=(csVBlqf<3g6boT07>X|ZB@^fl zEYJf>wvmb1pG{7x?vkvtlzUXFCpXVSF#)D2V|e@Qb=MyY=jNCyF|r`X&W9ok2>-O0 z>!!;wBjm|bH)l@t`^bWE>BjdWvGmFyWy`W?`j`ZKY3h)2zQT=cPduwl@h!Y?{$(QI zU>wZaZL?tj_s`D-+^AISW6m;4Z6^|N({B$9CJ2&(Y%%%~68DIa5u6FX4H4d&UTn^U zFLSh9{0uEc7s^O>k?#8ama}=G#Q(G;Nb@-Eo^ySg(_e zKUvdF6a>s)*jpn_G73f(3YF-2snz8T z%N}a|Ft5DNJ5}kW(K%Cxq=7Rs`x3@lD{E@y@PAe|53NeR=xudSQoY1K?5GUIM##2e z<3p5p`8)B9=B0oPX5RmdIjDXdpCIA?GhyW;q9Gu=KNS|ao+8RzPNs?yw9GA`jGAhJ z+$cN8Z<_(Vme91ziQ9~e%D&}}-N+vCe)Iim;r?^0?mv51P!4mZ;SYdQ>-3+R2kAbL zSy@wSy#MG!!*{gAjr-IK|n_lcavTFDn+MavDv5RQp z!(&#)2d1JgjNaqQo(+pjQe*tLB_+qKOe_aSRlNDUMl)Do3=PpF>`lV zaJvFQH@Sqfu@57cA5jIM`^vwbj&^H$B|ad!p{*#M->}KUS|wN)U-<$5B+$EwTHIP& zw%A}r_Ry8SSKWMiuuE&VFXlGAC5Q5m*=Mvecof?t%>f=73og$QeJ8^Qg1GMSOw!^h z*JJaH|A6XLUXQBb?bEyMu|ix&!|2@d_?U)~cO;3ynD=Tz1;D)0ku)jRowZaJ0pvDPFh9v`i z%B6-#0P6#gJoa3RPQZ=WQMh1SZVwN8mDZcSrP6yn>_> zx6s^LB2BHNdrp$t>$s}nTVg$V{J1u`8U@}SrCZ~R^WF>)MwlcyjThs>9TJV z`3+?U#gEcPGa|B}=jaia<&7S7#onW%e4c(q@#r7(dG!^AqYsJiREdr|V)UUz;Y_zt zJ`o)2iMBM-$zmUHldTcqb$eScq6ciZTlqtl0F&EtiRSDnUaNMCrNkM#p*&8CWJE*&% ztspXc319RAWDB3s4a@W5MQZvHrGnA>^+{MjeV27N#_`XGTe>a^#$FWQq5#|+GkVmO zM{j7$jUUYQkgDM?#)jk8h@1P~Ao(AiA(D~T)5XnA#-w^Sb`&&zxT$L&5Vy;Qw*17X zXW))G=@+|p9(_pS;0if>Y2>C|;n*t9J2E}4&6i(m56{xT zwef53aT1&oV)EKbA=w7sl0X!mt(>0S{GS-MX=Nt9bf%_gujT4)?iKK^S zAp;+)V)xqQOQw;q*47y9ZpKjG#m+n?m!HTY%VWb~D{ErIU*~Ps5os;vVS=H=J)uKE zPa+wxAr_f`xFiw+t+E48CjogT2T+9fx%7 zrvkI0Wmtx_pyYTp)BPDxC}A;TQZv!xo*mMlOjOH6Y+65z8U^mxf5H&d+?zRSk{-(p zz3Qr~bie4T0^IaEFJvyQ%fQ)LMW$^OB6VcqVYnV!={-Ty>vU{x?Y!>BSlfuJ{C0_4 z9;05?xhL&;V(1>B-&ezbV+1*7snrZAm~g6D$o;|eWFU9*FY@z$&yZGr!p&s(Z&}ar z=SKF2X!4W5lR?3p2E8EeSDCtK$NC$*3m5Za#$)lrdU^Kb8qWOMnFZ!Ig6MfkIY3lx&pYjpe z4^ECDAE}`Gij0ZS2PQrzRudc9H-mlfKQ<_y2|d--aS~EP@R@csXimeSLw!3Px@b(M zwCkt%>t|#6HELkucsr#|`uM{YI4dorat*%)hCDq-a84@&?y%^yTE5;gegfl>uO2S? zc75!laXN~*_5tbb#}td@#PgCbcI^Yrv{DI@*_Am~(_*EA;UkGb%wyxy$)We^S!e3W zVqZo+Q}KxR1j>Zl`{Tx>FCK?Ywd2IseD>A)_Pr3 znIfVrmj(SVKuootXkwyaOH1s{M-+FbNkxrgXfKt<*p2zdr$=u~{-#tt2I6!R@4&+YBIw#jZd-zbw) zJmX3xBEXn?FN77PyDrzBzpvP6`xhPA3?IE-;3^*5qzbLein)tvdw&AaVkZ|<>EBu%J|Ac?O?9V%b zKLFk4UKjX=0kz5BqEPp(8IDl2b^v~G|LEo!hHu%Zh>5!eLL5mL#jJ*8i*|ojL(0m` zp2?Tx%Bu)k5TjlqGCNXChYNo=rRtUL8Twfw55anN$kiX9rYDJ2c?Lsb+f3LD94m9f zmB&I>Gj9CWz8?Edx}K`g zm5-W^Tzkp&ZU^N|tEJ`OZR8#faI?k{Q$ro4Xu*ldLYYq{8J7Z$vWVv7r@S8UH@ z*sie2TYM*XO4<$!zVMD$Z)+%$s{V^^$NZx)EO-+I#X1fp6K#0{Wv!l+U<$jIuw>U1 z6)W?_YADu)%+!sd%l;`OFg2Z>v}oT1`GubvN)w}L`${UM>Mr&+ii_0R3;{iv9;9j4 zeY;)=eQQgnlCRPk`~3-%7v@_1mS>jG9fgU0gG5Wo+8`B0|tanqCJi*xF&q zvHkIvOzfH-JFt1YkJtpqKzA)$9GNZhAtST`l1i|-yz7r>{C4Nat@6(ri^hrdMAQ=N z$*qpHt|!cp1$j;5*rL3wdI(OXE2ekrt5V#f=@sbasWEF8zn_QkrXaFlNuwLlwU^ZQ z{NU#gy9!fdWVkuVawqj|SBwKR>FAuALAi@vL3B>uAo}wB&O>gz4p>88r%zM0gHQo~ zKHG5Og`yTMB)nJ3>O~D^=ECVjz9C@2ta(z%Msh5Dpv_@qo~=B1;0V*K-M%CnQz&q| z|L(i=vBDWK=8{ti8q0bm&af}n9hq1N=D)ZiNTG>yp1 zLpC4CXU;`hFAT1B&{g?{A@R``vFtk2I~N6B~YqJ8QJ}2#kQ@B05KcE95Hdc!{McCYlonWB`t2o=(wzTl87xdhpvoWGbny}d+H*b|`)f4O5!u3#$Qeia}i z?H)cq7d?%$MJY;(JaxC4Zd_W=`Q$VT#n4jb(51M+Fw7(6FbQo>k|%vmrsi3hn(*QB z#&l8qEgFpxZ~KOq6TR^5+M{bl!1h+krRDlL7bV)(nY)7soYB-cz60;l~*Aw7MCin6zO)EVxSm5gQzfWfS8oAv-&QA_0|2p$#CBZ zb_LhaNAEzakZxu!`=~JMT?YZu%>|X$BDCn=aHsjsF0;-IlGj=Ibe~fsfL6P9{q&37 z7WsDTJLG?71T>`skW}3u#+5GqPDW|WJjhQa(g<$ZIEFnC{%dnr}Hq(~Z9$_K%0Fy{JASGeTq?e24>7&E&CR17 zBKbY6Ha{Q&M5nILh~>Zd?=7Yodw&fy;~_9;bJf1s?_NWy1Z2D0xt34Uh@;YoM{5FD zU)&%6p=rbyXwt#GZXHhJiYWp4I=tES38xl1SQr~WN99c?2y47d{jG9O)2Ky9xlOx} zN0-DG5GLDmy%@@5v7%iV5|lJEdIs9P9&>tG>xEDx^;(ZPQv!O;U!9*JsJei3-b@#l z%W4jm_Y%s`nvC^azpNMb@b_nW^bXFT_bi;MRpB4BVCe0t_bjkz1PdyIa%cl4sURyyuY)fL4OLHeMn2>`jQhCI{Vp6mUPFSZIiDOM}>q5Bda9>kW z5hXg@o;08d@_5rk)r)d}B-}&V^MwE?I26MD`Pd1QZDx{%zj_0|#n?~a&rCQ(P&}6e zj_ngy7zaP`L;H1}el^;K9SnVU58Cd2`@jSllayeljJjxfJ?uP}ewZ~XnpRQ^>YWn}8${4eaUFw@^{9a-(25a#D+ z`fGeND}QL%Uty-d3EA-U3iFFM?-7jm)nAA3jM{TMcwU9r4yFGqR2>a`9@A8#d?F|j{^E2&D%Z8^{ z*k9p2VSlCB@O*TtjTd^lHq3vLr=T+Pz0Bv=aPXKaepBZaslqSyAx8#fkQ ziDFS)N%J(lmX=~YSEf0qq!6^f)fUuR(i$iWf{Nhnq(^tfM0;|T=$2{DVRP2L| zKi;=W4(~_@Rn5T(wqJiAO)#LMrjv06o#P*Ed9)B|`mMf9%PqsYa|d6+P~?^rUzmi! zPp>C}%iNo0Rz-Lq7c}X*LKO!|ZvSsKb48)mm{2D1Jw(Cn62IfZ;C6`{KG{Ly7hmq6 z&CNLBQau{m zjgnfGgia_?qMWML$^(b)>sPr(@W?i~JBPWiD|g;DxdX!7Maq>!pRFpkq`K%rd6KyX zUSgz^UDb2c^2Zf4j?7a)4uv>7u}5UV#N5b&6MEuNv5U;5vM_VLRiX{M4lks4F)O!N zQ*~Tz3gN7v{cBM$IjhyS8vF9G(iOZ9rO#DQdoz&?L(A5FsppJt?|2p$lNPToAVHwCMbwgh2wyz>ma6W0AKihfPN3I(ftTv zzz_ZO)wuqr3Wr+}kZW`2hVVF*^uqF3a;_&EHuW1$hNf;@D*EDf>HJP;Z{O-jPC0*@ z`F<^*5&q8P?;ifz#zRZUtE|@U_<7^&JY5R}CF_|22+A^xTtH`em{OHb}& zzX$BUdtWrv;V%1lQ@T?|R?;2}(#}*`wNHCENUK)b(WKQ70hh8*`1D#ho;y@|gSzv+ ze9zjpyxo+?-JP)BXIXh0I?4M$K``nI}L1dphTcRu08#YcPi-PLz+BkVvDa@E?wl+u&1#eIW*_f)mOjC09L zx&>l38N9heZjA5V^!b;-7yiiKa{e0mOY?Upe;@KUjOkj&-?saM%ujC0i2)zNRe+F@ zaAG-EG>*!RG-4B>cTlzzJoR&t3?9%{+gE7|`W*C zW81;{2>n|Ee+#>EWa!(g*3hRLB$c|4hU*e2%%?w4nCN5hcOJw~HpU|Dw~^SW(*{PG zKBRx)hp4yh?)87l5aRTDLKLeB6m$MSAv%Uio~k?C9dJDQC?~M9{yg8G2M;|)2qfx`*jNonO^Ny#KDVg=H~Zkl$eFj8f4f|0MBcSQ2ci+sscO z3En(DAnK2?IHv0MWF&|^>EhM0pqticuU*a7n1AsV2*kK1oODT6ad)Abm=hKEa~?Td zXgv`Yi6BFX6~q4?tlj9svJmTZW}8W*mZ6SQ8s>cISG=hOe|5_CXEl%cGk66BfAHxZGh%*r*}Hs?W050&_8!( zz*t*g4afUYgNU7>Zjz10YkycPs0p9yQ4q-Ij~|1WlxM zjJ$_)FRVzUyjHVz=?4&ogQUgbT&V$ob#Zl-wiMS$r^y#JdF7hWm`2B}2CjOUc`QG5 zQY`hzkXdYy3+F&6uA?fLy8OHU9mqwMb$W(u7P%Ns^}Lte9!P%7l;Y&#s)mYaBlE75 zpoBPZuL@%1GAiX$+hGkx;(C3ij{3!0@?t;s)koH++28STkOjV&Hng_O$iL{5ewNW-0wp9>R3u{FJC2TCQD%YALOfpvx;vgUvd7H zw@bHxwLTEA5)!adg&VL=m_YR+U-!%lj|%=ypBV&Wj6dnMjDhRy$Y{-uGx& zEgB7X@E($u@vz<6mxAT)`CMqR%LJTe7k)**~bu0P3k0U8rN@P8rU-%im!3#Kbg})$^Q`{gIWGYf0A)7T(CcHJT;q0gdAa z-O4Bw+GvnpKiKan`=8?*?Nz4uM)BT;imqz)w9)r;ko6Q*Pqxjj_sL&D);>cb)Gj-M~I9pi#FZqy=W zW*%50iIYQ&SZ=3`0c7>^#&7pipOv4A_3BEHzU8mJ%4M1K9t2BC6`v54KRuIP&{dh0 zJ|>giyXz3rcMG~cD3hMoMI_eZ9zptUK7HTP6{ul&n{k7GnH}utL>W5_j=AnQPJz0P zYDoYw<9!1{*C>ZF%2f5Eax=N^$F>CCvL(>wmq4?v(?BTQ(fowC*QdW*bH^CNw13Np zdkdv2)DOKP-+QxJ=;WpODmk?~KJrvwvnuI0DCd0K{qYAtW;}w5N8z zQM+vfP4TjtJbvxr?=$R1eVvBRE1ZaKgh)d2A~KSDU?0CnKT1_Eo!&6P=d?7mNc7ZZy(T7W z$k~&@ck%0zEU&E1<-yFnXSCnx#+RrY=|&0R_gTgt;`bK;esN97ansK7_`RsRGtN_( zJ@AVV72=ms^9-n~1Z2rT{}z4~9Kwwy1vJdc;P(wz|5AXR;J!9Nu=DH5|L^$Chi`R_ zk-A5dM^VM~_ie#9#!9V;kE5+2)>dn91vO`@E2xQ~_)8)C$`RB3{>#iXP3_b)t#M01 z3wcZUK# z?YSyp-bT!q6XMW8QTO13J`I z4CB-4lQ=RQW4fCM8}^9u>g}sHA7{f-s4k4(jTp_JLc9?Uj9&*{t@XZCDuxKW(H(KL zG#%UNb#3rICNotxGi&6NwCrD+>PIg50Vp6zq)(t)<92IjAby|Y+?SPiG7WkT5fp__ zPS#s|j3`r`_q(K#xW677K%DRsYFF7@ub5=_CEj1fe>yAU04!$AZUd8nQ!o zX1_-?VstP^eZ=A!qP@6ySaMexiQFkKA}0rSP`3t{q$s_{4SY?s@A!!O?v0F7^>goJai7 zAkyZ=1-!*PZ!~>=B^MCKMi%rhsu;e~-^YF>!Fx6<5=ZM5!14vTP)(#sN7yjT^jb0B z|G+TMD__u~>ugHBZ>6*aVqe_h{^##Mi4~VWtq$TW;QS~4W8>wK1?kzZEJO;)iBxPv z-$}pd@)%K>i_F#fAzBa4!E8cR$+MU$0=DawV!P$40FT}>)q!Pdg8TGnaq?M%{1$rr z4?VBOj@9nQJf^vQue@PPj|4#u|B;v=_W6K~yzpFrtAtpt>6}i}Em!)~-lVF~t^72RUWQ3g~xp05xsy~-QXJrWm-(yn?%YrWkq=FLie6LZil zBQUv=uK%I3oUT9QYc-c!&+76|9)eHT!1b)>p6>lgJ{bOK*3K$-Bc>qjtXJ{b`7GtD zlApP`wc-upn(@;`5KrOQMN;%q{fsG`vgdS)MVzoQHzb)-S%X{akPsM|QBg*Nv z`NE=_=KZ>+XMlRf12roH)XL83w%KuQB`9qbS^0-YVO8jyn`_VqhG;~R)?fqcR*MZ> z#Sd$i!MOqk<{9%$Z6~u#o23A2Co7J>-!VDQe>2^C+w=3GBW>N#{Ig`*1~Xx+^WQK( z|DG^^?7Xb=-H(3gISKv%VSc}>vhtUO`NdPi{M&A@{9yko0bF;lFU2hQt%-*Z*Exe!X_u~ym+j#LaHe5|=$$0Q(k7unfh3|`Q zDQNer{9~|bl zUFYXBmETNK=D^+KYnd+(JemH!dMK;C2gCgQOn)CHv+{2a`zy@!_v95>`P0Mv;+;cy zN&|RgYV~iXnW1%bP%_!4(qC2N=zQTToAuhtHN7KK@wFgut1aYOfqABl$OXFBzq{!?NvdbZt*-rz<>wMxnC5L1i>UV`45Q66|Iz zcDU*l+Vdu%PNVNk7K=Nv00usm#>(8a_XpYvT?Mol%8T}PTj(DU8kGWj`NSjr{D|^I zJ0D~B|FX!y=7!2i1-Pbt#m|^5++?qJe>vF968Kh}RDh_uj7&t;zk05MWU#d*JH~T) zUH>$OA|w=fA-r1&eZADWFa4C*UuMdZCTa&M+IY+>K(8XTT z1GC?vZcX#x)G$3S_0{0U@5-+q(xNjU(E9xu)e*1mz9M=>VW~HV@n%3B2SLpD^*2vE)Vh-F@&DXI5{8ggw@1sn`1vn6@|s$QzFNFDdJj-8r2UE}2SY}A2~`^0y*{r^T8MuKo7ZNdBT zUk%o=g*_win(N{<2I}sknPI+MSD|e;yVNwF8@Lu<#TF6*x_bP~Z2HI`4g%-#Adae72Sm zbk2wI+wAl1DIpMFq++kYbB9}HO?>=^Qrp_yqE+Tx$Nr7-y4tmD&UAE1c1Nh6F*qkG zQOk`U{DJ@@oA{Zk{w+k;>gJxLWwgc}X;q~LsUGXbYVH8OXGR1_!gJo1$3{2sDI>SU zh*aHmU}^En5KDHH^DAL#f4cFD(RbjRCyt)Ie6f~scnoHM?wrQ3y73e82Qy=Zm$yfF zP_W>ED!a?+h_1NlfKavKWeYIW?&fez4f^`oHAaqr%rqna{;q>sbodI)hXAvtR9-)+ z>ia;=5_jo|LQRL;0}9T-{@?6h+s$Y4FwaZi4()Pvg5OMbLw7b_Hhy|={;c2Pyn2mt zW|3R|gdsGJLnV&AQG7wn#!I|se<|n$W(+R(USH#K&kA*@ya9n_P}tU@!%YS^Vuc@^ zW+GMnfH9lfYc;qX%y%k3x@kN4YT2PS2-+G#rtQaH{Vr?&dN9n-&kOTEY|6^N+2_N| z{_$;4|H(_T@~4OS#Y@BdQolbU?;W^3JV%H97497NH!T~U0bzdrCt-UNvfPzB~K3mly8v^}*M*A$)DW%^L3&VSfJ9F#pNM zto(^#|AnK&{KlVT}qvMWOFCM1nH1-3fNB;VRi4tFyteto*( zfAVXyDo~&H>}~tmett>TQV_voMMmzov@d>#5ZsRbi-ei;87I6Br7pchzH(jbqud)S~ zo1cKZawz3Ku=Ec1*7K4#YYQ-pzl&cwVG#Z-gw)Y_N6^I6R#Zok7v4?YslY4f*?>%{9W9U>2~2f{k9ZjH^Kk#!#$NN-fqvb9&{X07ZRm}X zx5>SEfu0(W#1v^-28tKS#^AO!rR67Qh;afNH35BK>@>}^1K7k z_{<+*waX_71J8hV9T?i_1UFb}{rlCqL~!cAYsK&-im9dWkm2^WHXeS$+amyOmB zcBA*PAvYD$W~c6BLL;q^eAV!mP2T0apOOpmcJ<*6_53&C4I{JlSYj-B2Fk%Y1M(a& z;nvI$kTS+Znx2(RZcka9Smc(q^24P0_;r#{2ILtNxztWHSQ!&_$dD?IJfva@$$6Am z5{9q4Xa!1Jf5~} z0$B~8vT{^PzLCr)BEnAYQtoqa^X~XZ6r*(8QY~@}#8RYy^L3K5q99I&Wp#cARAKAO zgVrZxTJPohZQpvUZ~cL7T7P`&);GmyeLk%dTdwnNK10@LpB9hC2cq$8uFLi>sU~?j+Vr8uqu-+=@n}l^mXhj5$`y@WO^pnvoo#)=rC-W5Hgg4KsWOufxHOw^ z16^C?$Vu%~J~g{?ET{~dPElPq>oVt?0jr*^W;3jMY%q?KE(%%o&wnpU4O#UMExp4X zwkX4@kE8)()x-b@YVT^LaHJs4JZ4>c&c#^sGaG_|iX#K;LI|P@1#+zT_Fc*p!!{%w zWwavCSg_o{bv2fY7RQS@!Q#N#0eoV`*C8C1MJ8FhMZM?o+XrwD_HZ^f5Ff4;TLX76MuL^?;@DiUIH|gzds+ev+ir! zAwCgpeY04mL1gz}1A68;4Pp|Ju`G>)2`*5Da=NKaodY3y8o5)Aq>4XiQ+HdJxPnIf zve;(-3iK!Q7cGah+$Z}6I~dP!7QXOVZ*Yt2&IhjlIbvP18b_KqlY~jXgz4xfX+>X; z%)1rZ_4a>rE^yOHho9Njl*-Rxg4v#`I3}0BJ1+J8bF;RmPxRn15#vrO!h*4v9+grj za%bXhap%7JOcl?6&f0LJvD%Y8yIJd?@%n#-1q) z6heb*_}-vxx`DJsTCwhV4xEBVzIwWsc>~t=MU46Oj*#t(+1tamFMPGTy?H%`JCL$v zaF)$PyI&%t2tadKqM3$c$|JK+(jbUw$X0kwlU9b`1Kt9LsP2olyZi0sL_MA)W7|h6 zq*IO!su&FOacJ0vX~TKlJx(k%Vd~G6VLGs}y~_Y~NOGn2md4}Y_L>;+@j^Z!kq3b= zx-dz%oyuux|3weruFanodx@2V`%-Rtk#bTTJObpJnX&Q`P;XCsBitkZCW2pa#rhgwBB`qBI;Qr z+5Ub`j-XH=J!v}V#r38K5L@1bZVVq8d0r?z)r(=xkVyuvMWjX6fBDvK$CCFgc;rah za{CMpnAOTk;_TUbBpm*`r@!;d_D4XF+3aSB7qH{msUj{ytKGd6W4@32!uZNc;N(#% zF(w3%A&a!aZ8N*-9%FO8T0EPpo~|8h8W*nr5ouZp6k-+Y+}NN`1tIemmnbO`de}pc zJ~P-uQDvXsb4qQH=o7Xn%ZL?!BWWIE-u$+TLOisiQFJ}xuUSupc@B}5i<1QqClYx=<)&T^M65TlXWkr--Tb~Jhgjaq9J z$;E2$E;V>J4R#KLCn5*IilWJXyF0%11o96}7W`?IyPXuVt;ShJu$AA6bkUp4;(fcP zUY`7wI$Pz|F%3wP!HgPK!LQWC%xWVrxn=}>-prVV z$4B^?s=gP-neVC<-z1fvB#RRBpN2$J#k2Xmh%gsI3Skvr#JhmRy8cr3z_K6n9D)(!CVo!g8b>YPg zvuAUjqR^|}GdMZOh@Ndx{u#+H6bX5WJNG&kCfn{x_so-OS^Hz+h?aW*8Tbx(CbS@L z(m)j4$$dy@25*IpneUs4LWI>tN_q{`42z=N{pqbVQK;$2@%*6oahj`+^qy7QFV#tZoWTnbvz%v063ruFK55lhtN+C2hp+6kcIqY+@$Gl#&sGq5!BbRuUZXSCIfx;Q8C znK)~?hECJ%T9|dwV$Dh9r8`-P_XCHD-BK(g~>t&lo99WZG#3g$8h2qvEo zO++~V5qbNxnN!Ay+U zQ3)pATaEUoAocX*%k#mWc7@e3!xPy6z zMLUJ(?l`)&RV^%h4>I2Iv0+{G_Cc_X_jd&h+-t9m2EBm(PahtDk1I_h6Xc4bO)c zW#!)-_SX&1lasRYr-%97@RVlYISmlE!OziQf8Fg(%Z6t_n4g~+--K*)c;dw30FMd1BzmFY8^qtCIv^_iz`tsoCo)Dj}HfN3R<}g41+AzQE!mRx1VSj~F z!~EMOX62s{<`<6+^ZNzxupVI5-HWb7i*7(ro>Oauc3O|~2Fm@PzYrI?9yjK~Gyk;< zZh9w3a5_<&0ZT~ne|28g;qIawDN>;>#@~%HrvzoroT{7-Ot0rq27Uf1Eus-(p=`Xo zb`>raBEESF5A;vdr|SjUHT@0sjmMw~2`;=#5<`G!)kh}z^=C1}MvszV#O? z=;lpPM`oqOIuHU+pqOxZZgoCusC}lNCmlh)Thyd%c@OrjB#;8!N=M6$*A(PjzXw2W z{-=#;24LCs#ntZbk75(JW@n%Mj?X^7JNtRd9_X`Mef9<2*}owh-?Jjbu=s9__dLrY zUe;>YgxhZ8HGBD*xA>a%-8Ijprg6QI0`7(*1j7vnH(oO^=Z2xg(<{nJ3|8$M1a-Bq zJ*K<%0jljMnt)g#nrx1{NiQ%hEHo_re768gdKl5WP(Xl(eeSoxJ0S!S#t8PaRPnh_ zX);#3+|xyX+H-cNoMZw#QG{AT(<%RPnLRK9g`O-48WSW)a09vp4!XJDP6B{Du-=TPa4>5$dRCBAV9D#N7;U6XZiz3!4{0w zdc|zM@Tku1i=(>f{At>}DTtf5TIV01+9K>wQEVwWbj7{c{q)n7s$Yg+>vBXGK+{Vt z>OIWK%;uD~tgqYBe}=zwJIOpzWEe14w@zI&#v32cUtJ}?<#B=?Y$#2qi}ydkV$)wD zsdX6%GSc+CGQeQ*a;iX{I`ZSLwM}=|?*6K^L_|OT&3KOQ@C5+7Q|d3)IV294glEhg#(wyk;cF!gsb`jKMpOt^@& z%Ejw4mOn*qRfw#}9AhCE##rt@V3xUKR5M)hF|arG&>KK~Du(k2J*ozisPnJ{PT`z= zr3eDL$G_E3*YOa@XW&w|O|s)l9LF-D+c~Eb2SO~Q z(&n$t0*6j~M}zHfKRGqDh#G4UIe+jypK_ zBTKPb{=?k{ZG@+c4WI(HVrtYoKjAuabRswOeMf9!!;gg0gZn(d(!0ULumy zT*T|)GD^aajwI}o>?-TsiKqmkoG~a_TE2%mYkv0EY9v*B$=@~1)$W!bq1kF)n2kUF z$&+Ut5TvT_VF^Fu4j68CWL(;Os@Aw$WU3(E;s&opPKJ$n)oz9)iJ9V(Qoe)Ny%muc z8mRKZ$uC!gI#~P>w~yI8v{EBY*MNT`n09x|zYNT#8Jdz*Vf)*dwLw{VZ8z!F+H5i8 zRqiw^Eq~m?T`1}HP%-X>sL`P+rocnVo~7xE<`R&J-Ss@sQ0A`NLwjO9@tHh3{pfofM$%jX)zeCJx z4Y4XZzv3IiVDi`cVb7Bbdw723?*}X+$3O8BOHMARN!Fu7wrYa+Mr_cc`hlv<`2+v5 zDhlY2k<<()j>iuD`&mpWf8_D$tsIlej7+utA5pb7Rm)yaJJ3(9{?4MDM^)cz{rNBc z@AY?~e@+lqyNjvcbrzkU^H|vV4!J!69#fMBsz#Y=@Bml-7-|43FRf|8_tbeV;k@A# zpK{I|i=|Ft!T;5L^0^_XDa9DUGLwJ7N1FV|+~3(sv8zz^fhlkYX4)1_7<2fKNBy#B z1I4N8*({4yu4veH2dsam7^TMu6{Z&Z1J>0fXBn2iVLh>aMywOXt#Jh>i_3JfYo!DI zZop2Ss*;6G>yU*Q5aBj=k{;OR9{wl$WUK!X>VqHsKeW9Gc$C%k#~%oR0OG_Yh$~T1 zQ&B-t1VNpV022rh7Z8gIibbqesmv(2u$V-RYJ+7oz-YTdTwi`ztknP_{2ND#RA3nBsve<9QPV?Trr2c z^xT*!OwZ|F)!LerkHNd3I<`n=0E=xox%*BX%8KbHcNHgjn-oayb+R@0hB{Y73;COu z8C=r}=HJU4R@K`5%H1p+zn4La@g<)^3hOcivg@@Uu%u7j;LiS3a?84w5rv)E zoTLcyKJXs3G`7SYWDmh5BiEHH-}OPv*Aac(Tz$}1goU*vQmsP~tw{5#rWfL%>2F5q zem zvQleslghTV!oD;x1$1M`vY2;&Ocy*ad*gI*ueVu}(=l{z#6I(y=Bqd@Ly^mBbeq56 z&0NH_zvTYl68hkxzLj+4=rBTXGxiPy4`?xk>&TgI%|~ARS*tE9&Q45qTQPD*1@zSc)iBbIaV^tq@PIPUFm32vsYFXMT z(X(Y~QDV4J^0L&@1EQesSp7+MUBp>_-ZBK@L|40}ZCT6G!o<$0@`{!v-4Z<(6_DDp zq)UATIU(Lz@rnSZ)T&}Be?>3N7XmRv-L-|Vy@?MWDb!QN zg2WqsXQAxAzDqjRx6}6P+eh{JTB6kFYkp+g`VP#kk2d2wB?hXGS-{?8vCdXh?6Gx1 z*&~S_WTHQ1CE51dKs7QiOU0tGmijKjZoEt4bo3EZVyU%NpM>}xLu#i)Fa8!Kj6O^*C7+Yl%fWC%W@fR2+S=O?oK5;yAY*^K0 z@o4g>m?VmnTwCY6oqv$(XHIWf!#28ecoV06exoUbdWK{ROg7q~)3J7y#Q!ba zQRi@I){?!*+Q!!7sUBLbFp!;8DZSh7ZoWTNDO$7-#dC8SYfVi>J@=lr!E4<2Bg9*6 zVI6b3PMCCa$9(u~Yob3QD)s<_-VWKyH>h@T6}4 znO&vbX3*U&z1#5IrD{Sn8m@;;+2HI1i)}LDwUWux_p1GO`Z_V z10%UzJK23eCH^ky#F0Zw=j|IV-=~&o`9@8XUA}w1Qahn6lV5vL8PInwrzaodA(30# zJk!(GUKDrNP^<4uqV*IzySK|Cq**R+0IH6h+9a{_-mXNL2) zOJ*>C3o`@xTa-DNztK!T{+49+Ire87r=nwTV9`z%Eu0V+tz^Jpd;wLr+65+!?wz-@ z5MKW)A&|S+FXNa4xVAE{a=Sd*{T6;98Ky7TV|DbxtcR0Z8eDrs*k&oI$-QZMWnCFs=~lLEwGp#Z zDGi&p;0#*~i{qO#UQO;m)s|{t%-xi4?a@7mg~YK0q0jS>ab_z7o*o(_s%cNSV^4#B!mg2fTv4r5w+ZBQ+u#iae}_iIdnuun;1g zXt58LvWA5pM;XqAoAfvNKbAtou$^or?3uF?8jsYP73`1O7Ok-xgN4~Uq5sz%d~=r4 z2H2xf+Dklw>*7UwYp}D6f?p3bn>MX;aWayGCww1MGd)qE!;qbKUUnOO#KDxW4M|Add1Vt$}ROQrV=@F*8 zC`g}-+an9!`72rQh`j|94q}|M=wa^zGhwldRLeymUD+M9MXImjx#qRGdk?C&6WO;l zb3~=t+T*R$imEnuzw&TG(z6ji^v9?c{0w_y|l`S<%Ez2N;YeGod=Z2DV1 zovu6|rsp4>lm1MYUi{lIz3Ny?M?vxqpRy9WZ|~}`y|((E#DOK--i$E4AY0#qV{_6+ zh3)maB5ZH=;GFaW!}Q|Q!}M>7e@gw_Clp@G>jN8Y`7W4G1uO4kS3k(&yf0vYx%irG zoSoJFTiWugUiEwFo^Yl%eQpq+G)W>psi?!f)9O0+l~Ap z{5n$iOTH!Xf<plb zN?)XTk{)v>;@`7w(9Tj3DcmMD4A=KtK#~F)T_E)PfJWYs*Dm5^pn`wF0Z`5@%45E@ z0rSy-5ER{AuL<|UbW$O~E~fGDbU>Eg0z@mG`2DH1M5C2S zD2i>_0atQ4-}OXwU% zL&Li9;-%@UZKP4U+ye07o!e5ra1}B~CXAg&QJjdXhO(5uxJCw|mASaB6Yd#~DqvG5 zUf?x7<_>7#OLq|AC;+>fBy`h0WY8eO?g)aOK;YwOKJ6>mk6f7pRmEfe!>jkGw~9gJ zeMSG^Ki_SiW4u_?wB`O0v37`11n6sA9)!ZVz)*S;l2^$8)(1>rXZP5JKeSrtC2`5^ ztiO#xRx{WMu1ijwNJo!YX6nZ00K>R;qsvQq+K~}>5XYw1t};pRLjwjp%#0)H9wFtIz8m9(quY^!X(-Q64RF~Jer%eLh{yX(&GIfMOX30-nG zeQj9IjR%zH;i}Uq(3Bmrp zWZU*`USh}`-`3ug|Iyxk7iilMws)Ub!?thFuV>Hv$J37%*3CFMwgJ?x|3NN0wU)fK zU&VAZ`X@4o5qBHFR!rZsqEla#s%q2sJVl1=3)KelV0eBS-hb_DE}!nWItHGoog}sH zF7L}iH#2a%O!YQgqZ|G&j;>{346zKn%TL`Oc}b(R9GzX3?l%~F4Y7El`5eGk zs{i~&>;CI^$o1qU*rU#F1FhH}Pd|QG;ohZnfDO+O{ASghq?G1{t#NT(*t;wmf5)0K(srC{Ee@?Nmdf$M3^o zdchT8`lqp+^s9Y3OX%rg`jdy`q|XS`i-(8lgIHrl|LKD6FXh0)dwK4=Z~wrse6RPz z@+ark-!)7xem+cp{Rm&bwyLKt`iRkUAN|`?ZK~jj+ZYEg8m_f*DI(6YEKp!$^~x&ewR_3pys~RVWhWI@f+E1%*^BkrZXXAVpb!S($ZGi8S>Qd4l^Y<-$PZh6NPT z99->w!53+e%w4AXK!GJMBkiqr=LO@uK?Akk%T7-c)B*Ok-h8HPa%hoMb&$yJOEE&Z z^M&8qfcK3M;otL(7|^FkR_T#p;6z7bnzw(r`&g- zpiZ5o|Bu|JP2{8=FyyuuN3?Xg}a)}vCrHg+aGuOqGu zTkSQNRz=A3O2z8eK@~|%SbAMbHKFLQSOprIS;Eyb1xCoMq|>N88V16Ko}lE(Q1Bm? zc?y==z*F#pd?CU_8C4qT$~YUFx>qr%>oE!gnVm;sA%nQSl=BhAx5eDSEBrG|se%J2 zCPTWPuowDeJgrOa*0?JFsoZul3}? z19RwYQkY&mJWSvJ(46$aVS2CY!}RI7<$H(e#TSI>pZfKnqdX;hUh^NV1W)e6&kU{# zB&u|;!zt`sVr+Z$46Y&qRkm->*DsZcQ)e03-V{7r}o0U6Ka}#gA1Vm!`sCfF! zLNlz<*3kkTr+Y>I0W!65bQ2H2tXKO?yiLbRPXU*9q98!eb8p{gTgt>GW)k1ajfM`r z#a|+3$MJ8vvVW*!i6iJIVE|DA%&rfV0DFj7@#&qe>a^pBd=4{^+qP(O+~o7o_BqB& zoxY^U-01e|4AlnK%xhm1>8^3{{@}LeE3YZ}*XUdn zR54vyLi?@7FQcxmi&~p#lpvF*q`&q{c0qdNQJGmt-^oK43_C1&QVjd$SZarU!IEb6kAbmc+hh=eQ!?AG5^e<-_WepJK^sEvC>bLx-=& z(^F9?Ok~>u7^A2m>=iwXN=A%J&8e+^aMyh9Y#099RMq!?9Q5#FdZ@6Ko4FLcwYXUt zY_0E-UKY&hG$2y5+@3n~^t}2E&mS01PtFf-3~nuc+LuWVNLLOp$Q}wl5C)@hNPc3c zV^za!T?L3zY^W*4*7wbH?!Sya6)!qUwQ7iR4s914cNlTdr$<2BQM&bWdP8~thIoEs zrpM53$^E(Qoti;TYw=K&r_@r^v4R|$03(6PT+meZU48NP%ofz%xXQI38D7d$-&oL$ z%@~BcenhB1MBj&5^3C5(=pS>V_B?E^Ib725$=@$Cmuz^?#^*hgk*9zH+RrLWpWiw3 zpVZ|R?qB4frbm2D6*pKc71e|Q`b+9D|G%cHW4c9Z-Z9kJO@F75PnSQY`nZ~dPYvM`TXz9L-sO0Y3ZUI7Y`}ZnQ<9?E`{6OWc4-iR^q;! zi-Is&wWTEabFL<8)1OjHcpu;AX_%wk$JbQWv)(PGgl;3^O2=e(YI}?1%nnssBE}aS zZxXZLKaleaE^#cn;^_>xyB8nn+jP}xufV-<1I#I1e0Grg337uUtX7|Tj-?i>)m2DA z3fw;Yof1XkFtbXwaYYVGPpo9 zYhw#G9hN9sa9QhNv}3GE?UbipX)V45^=LR{w`u%B+Uhu8+v2~K0IH% z)Q(Wnz1IiC__jk3rvv6`a7Wu$v_^alXIO~8Ha-}(`qTXIV&Aa5BT_vSRCROe+f>H& zth0&nOK7~4?T;e_P3_7@yrEJ(VncW6mpn8+baG)b#^0jku&S+{6MNOPFv_t=+4ru3 z@n!NBq-S-`6jW^-kW8R#(fBXc_+RnY*s$-DJ9-BB^F@b)fXvBScHOO{Gat+J!hZZV zUfUY%YZ0ZAO}4#BHfY9uM*rcp1JndYZWeX7Qf;ie;(34k72O{5G@tOyM`cvU!SL=7ZiH22ky7Z3J?5pPF zPn~){miob+PT&aec5!GApd{J<@frM89n&d!e8tddg^`+%#Jq-1;ZgS@g7ALF@KC0NbJY?l>pOvh9#eG#pRdeUWZg??AYVIMgpRH@$zML~= z&JW*iAz%&n7Ny28wI{K9pO~Gr1+mminGvb3WvNcFVfFL&jPjr=PBh^F>XN6_8;@Qi3Ga(zFfu1v&uOsav5HMfy*WNLZc zKz=o1x4_wg(X2U|fiF*uo8?}lG@~=PjsNO1GOBxu6bMG<4ySpv?_x{t7_1$yexjIZQem;cfh|*BH zDL$)t)~-Xl3yxmZ+6yYTIRzZDF>Dywm;Bt_SjBQJ4b6^#us zh~60|%fHPdQ~%LTU z?mylZKZcKWq>dYUa2r0(qqHD8n*@)KZthp#ZG(@q$wph#)mDyQ`I}^6hyJEW3bJKgo^R?`~?LK;=bDq_b+9%d2U-_oSs)BK!zBq_Y$MqXo!|41nv3ziqA zPwCdlZ9XSEQa5S@1fZhG+lbkKFVsxKH)l-T8_g_~*JHrn;AOYJTPK#SD1YvB%nMfPQ20dNvU=+6nwpv!C{EDTGsa7x@`q+BN zq0iy3LiGz@(!wdznW<-DF1XG4aC?2`j%#gw9XSYb5POh+k4$aQ&CA-qYKsunpST-x z9&wLSUu)&yXy&@dy*wS)G_d=%R=KPBCcV41t2M6?%oh^H(R_F`v17&1**NGw#)sk2 zBP@$i%J7 zQtO#o4Hg$|wR?d&Yg)MPjTSQdZLe6PyDJc-<@Ls#W%Kv!V>HO-e}Jhjf9o4i3<6z+ zE)nVB9Wj2rhYlyY9eWo)$r%+xiDQ+RTBi*GWYH_2fIbvRkGTd}p^G~ax9#R#_z-5A zd6g%VEtK(@zI2C>3G)0ENmO$oKTy|2{51cWTvaRVt#}hZfxD zU(%KsfeB%?1g=tuPdv=*9(1wf^4hL8q|L8eE}~?md-e6rmFS118Xa3f7oIc6g%Dq| z&_n!97UHe$GMXae`Eypev(}49ve->vW!dQ7ulS)g zQxdlKaM0e)Sv0l=@gC48d2{$ZM`=btn{h0t;`&zLo*m5sjlcW^ZEIG!(kDbQ1h2wA z>3=GRwf~@k&?Y!E1KdU2+Zq`|F+N$4N`A)X5(9;H(IATc=m&+i{*gthG~$a1ws zdvOn3HZu=lUyck*5P#*h#GVT;GoOZ_RSbzSWpwvrDNvgqO5xrk275@~?i^O3U}IBYCEJzTLlGlZU|QnR*v(Kz866Al@3O`3{&fF^+m5W8H{3r!Z3e5#L1B#eus^ zqC}>8f-p!BlN4H?c zIhEHWd5j8R2IPy};7=<9=rOqv^zPuGmhM(da%_g9FDrQ#*z_gm4bJxY%b?VE%hgL0 zdV_*HXLbYPA_}_=USrX1;aER3oF_pRYutp7S#hvZ;-$&Gh5<^jrpi=NWZ`dY4MxBZ zV>q8aYw)92HFp|NzmqIOzL|3++&J(S__vVvmlHLRjjkK|mCyoxwlc{A{Y&LYTaFRa zG|ZZWvEV67Gk)@2610}WOr0Jf+yQcqj`+Y`!ddV0j|%eZem}Y>eaVx*w~zzCKTQqy z3vx&vi$g$MxePZFn=YX{?rA1q8&{f!@+Gt$;5RbWg7AE(w|OL#SGujnT0y)WH0}Q%D8b@1v7CEu}jjHxqZln z#`G1hF&+35CP}FkZ5q=6zP3ZB{vN0eu|9chui~j=u;5Of*U~LNaSm$PK3H5We$e1M zEP!u9AK-hMZ*~&a;Oa0F1|*oxggz+TQltRV+gXsZM?0R8W_8{+lNsU(bZ)InP>UTl z4SJ86aO<)#xPpi+i(HWWzwkS4x#8DL&_BVd4?Z#xK63cw5(+k!qXGW#R1u);A0pK^ zG9-anOb}vGq(8jFG76>_5N3w?#q>A8Z-CaN9_#+`!rl1x}1qbPCIg=opQmQKsykw&wC$mQbW2c zvG+!sYt73}Td##ON0si0wx_R{uoC9XT>?jrHTR1KBGp}3f-nI{eeY)bFE_}p+XqAXHD81$ zE#bf5G7h6RVs(*02CgTyeR|P8?Izjnd14*~7CaT@sV-VK5>v`#Dz_W=seul649wN% zNStOlv`vT?RrLfjV~ad_Km0p^ry#eDt`0)Z45(7944Frd?c=Vs)Wn|g+KZT*tC0|% zfzD;rJ_7C;26+ACZExoFuCanZXIUx9VKVDKDs61BU(5HRQK|-)NrNu22Ox$RA>Iwy3q)VL;6P3@3C4{uana zS1$=T+a^=u{x_a#1_th9PIaoVSX@NLer?c7=)g$eXx8_D1P)_HRIn2;6^D@lo~f^k z65^QXu@Nu{#W>L4=tg!U-I4c%6Qd)1+5NI9-#@GmxDaA+xf`b&9sa8!yX0O!WE;UL z9MEaRF6P^YksJN0voTV$z|sb`bnS%3BXtSF+`20d>vSlMNzdW_$xKxuAMyV5vstUm-Msby3bFG`kftP6KWa}byFrSKz z4hkifrbc?gDNpr=c7*-`L4kv_OXD=r$jt2=7HOsy0R{u~c1SDw?JyqggjEFHsD+SpLVXW@j0bm(aEQp ziCifZ=bn4PfT)-rV>IBo@0Kt5sDP!TB0U$a#3_0BWxbZzODB>shz6i~(xFl@i>VTb zw`B6mQ^1R(vaa}H7i8PdncCZwc;)!Wp%)egCi7JChj+BzJ=FDn;avG1VjqN0ck|mYZ^?>Pmb> z^?A&t>!}D<`ADqw<&ncKEWBcYP&64+s${oCY)$eqJ#o>tnj1tN`?x^piU%9? z3p%Y=Y=bqa58Ouv`n>)D{qrV*e|O8~a4DAV)U$}ENu*nx_pY(+qU2!m7kmR^;u#2N(og zWn5|`9a+oymana9ehHg=_ck*Tv9m<8hTszuN+fo^cDoJ4@dEf|*F^xMvYQsJK;GfZ zmSskyZ7T;|ow=-PLTP71VdewI`3)gH_}78I1T(3nE*Og4ZJCs0n7?l5+`@T~NKaN) zLCcxwT24gV9_AmNsN683Po8uXJKJ5PpsdmT1^!1DAUI<%*tA1hostARBFcKnuz7`7 z{55Ct0s9c!hH8dSB}_@?i}1XAMhH(Qp`=GkULjhqZ^k1uGI!d`8#1YvDkkX3Az?{~ zs=SYSOUx&>EUpT48fw$U$j+_qTj4y_cTmgFOAF_5C}7bi3f%BTa(O}x5-7liA4d$a z6_%GJmX8JQXMAd1ZauoR@Crnu2}QQk@ysSDcO+BI-Du?^?r1>{2N>XcP%^bGikIC_ zW=@{wm^(3cs`pknXR#lV6%t#rr(}fp*~lg{2C;v88!DXX8zXgJ6wdB4s3p@SmcF!; zXgSKK?z0Qv>X|Mh)8}^LwFfy`m1BOVGG;CU*2~Rv7`u__i?&L+h1r_-W<(Dkx%PfF z2y32iKsgVHiQP0^0RgJBg9kEVH zb}yG{Db`3I*0jvql|V+FTi3)=BX$)tE*Q2vQn5bPx>^eUYiV-s4HQZAi4FTOxdWcH zh3QdUn;XDEYFYCVe!^_*H-7mmo!I=7GG=e#UMtt}8m2kbfj*n5cs)g8OhfKb{x{@KyG?NIpp`ED-+&49uySjBg6769nnYp`>uJ6$^}KnHay?<>+GTvu zEd((;CWx8XBkFP`w;Bf%wtw*-N~g!|g$DZX7pUL)6yjV;3URsS;?3edjzVR%=eu&n zQBHPU*i+MUWX)&EU0Oy)OA-Y%mMrmKGkx?anICIih4n0FtaG}>hP_l4srZOIh2%kX zkSVr2om-p8(uXVs!&XEpHpW`vYJRLDwJ4y$dFT;a-ERR<)wC=IAhzNI?Kq8F%`!cN z&XW*gv0z4A9@6HKGF9g`sQ*ItWb#iRxv0w~qJ(I#Y|Mr)g1-*oT4B6*L4!d>}) z9nX!y|CRjyjsFrf@(JICy^0O0Smv%ZugxhMc4Fa`JrxduNfgiT1iKH@EkCNkKKc-r zZ;6$5#w}A{`BRc5kU;+?pR?-Gq^B zRYr5ZzLqDqtuGZbDYh%(ThCVf-O$3^NL?LPpb%b@{i20xH0TeqV6@1b#zfDHDn-jT z1nr~>PCqlS??F3k#`)j46Y;>4{$SCb7dL(P_V1ra+(vLChl=FP}S(enW=? zMHzRauCcut@weXABmR|#3vwM#aV&ec`pB`@0xAGmm6}A^>22pv{loZ|fA?6=Ie+Rk zS}SFvE6^`u!8Y+OgYgeari&jJbt4os?|+NwfARK<(y;3n=BPj-g-g!lBMSYm+@AQo zh{boKR5Zq2J-YDB1XuYG$msF<6X2WU5M@y_vB9revXu*7%ldWV?;-ult6u6nW69@* zGkUtnvo8-@5~+!h+Z8jZ!sy#u;XE^RpYr!&%q*{^wow&p|E4q7DUYil=TWP0A) zGnl@StL`N;Ee!AH8}sdaQ8*)(|DPE>H_oVP?G(9cu4*3kW8|7yJiyexn4zUWr|^s8 z{F%}JYq#nIA&^Z6D~;AJI3g+^S985h`sx9`;2H`>o^6UPQm|Kdr^?vE7pYdn*T}Q~ zM6zX_$Nb*?_%{vbjx$*5FfFUd{}dO4Ye)5{#w8j3u8i9BXF`+kEkq$g@jl^xq69rSbfR8MTuJ0$-PlWfV7~>gz7ojyi$@ovs}< zDDupSoq5b}E1T>aPsh4YBnqrUG=4SH;gA^&PuI9h%D@o!d?NS>o6o`rpe3*R2?KJn z-O*6fXVK+Z| zH}r+nL^hQo+R54gO-tduvf8zzbOPM#`Gqi*baBxyqN)(_RTI?knQ6`L4{XPEb`3gBOrmPgNAoW9v)kONZM`jZ$V|I zColQQeHL>iS)MzhSxl~Y{&a&^j!jWD$st?uRKDSo&`2fqg8v{AfdAyS=Eeoh^&&;^ zvmcuWR0vJd(e6xOiec-o)HN4d&h|L`3uQIj z8)}tA{2Ay`o9t<#FoYl|BfGzv3AGK3o!O502J{ABYdbI6^0-l)_rzi2=PoOje9Ef( zHtZkb_uCqYZPZvYwYkT>X2=^*vFNuj*n9oeSLJ=p+!54c8$pz7U`-n_EB|ii-145E zU*b!;t*koQUx=YU@YN3-V1(z9r-XIC0u^L}`ENAU?w*?s=8iM~~? zIB^KRFuhwFqh(6e3rYB8+ew^+K(7t%whLhKp7t$&~W zDYt*ObEgH+%|8a;0M|Rwo&N12>6ZO_*qxlt(Rj{V0EX|^0N<~->aOzLdHO8hogLsl z=`oMfo!+kdw%q}E)d-lu`tPB0kEs*KE3OTO(?eG^bV0$ z2nj-X!bbO`3@~k9oA^-2H~aq#Stlprr>Ev1e(^Jp8n)brHX*ec4uij!BIuS6&5zuw z@d@MU1W`*C_)@9O?qSLWjZHy#@8?Yy64Tx4{UOH{+Ux~BSw@;5V=7(cqWWW8N;$l` zQ!e0FOw-}$VH}ml%*Rx;QUP+^lPio!a>}RjtKvl^S%wi6j@zBh3Xj43Hkw%bi1o4} zwNfG?CK>g(lkRzqWI$fsuN?~L26ynMLR^FU@6_zEVgGbx0@yZA4PZNAUxB4aQEsn} zV7Y(Ss9b|Pd*dd4h08=gnlf!#1JOh;a+AN^BsCL(;YsRGw4&-SGLou; zr1IS}%YliJg-#mXX@8vh`Q|F}$zxy*~yMfg`JT$H6A(`efhrlB<2!C%a3& zAeus;`LEK1uW#;`Nk@Zg{%mXOuoa14_^ z69n;w?>B|jH@H9X5@;eHtefroyyi^b=WDIc&(Y^1x0HYoeg_9H%d)XJ@vwkpjr-JY za5qMmO=P@7{`T3!?dJc#nEy=tW0?4*bqjo>zYZFG$QpfuM*FyNzEPX40dENAzr9t} z2fQIWMMM6c@a?%PY-0KuWIRn~Bck+P?r${=qER~0f02R)x~3ksT)0cW&_HN5C;Cd0 zhlcgmg%Ws^d%MRh4?2srZapiCFhWsC#_Ulz^~t^&Oxr9S@BJY_ge@8$AQJkPbQFJq zP?^P^CM|176ovextJM0u0kZFmpv%>}Izbt^y}#vdJI=yW9#1k#_Jc@98;#O*wX<8B z=t$WLuuS*Di19H9PcNfC--ce!nIF(g zf6HU^QlI(1=_Q2csRx7pzw1u(i&Cq zrg4f5NI_ej8k#*|Jnqv&)(1z^hRm=5Q6%w0Y`lwn8_;KOJ5Y97r?U5>TZ)iJE3#HEw-1CH@aXe>u%$+~$2?&&Q6ZBigB`eE z{JAG2wu5^K;z5G=a3Ho*rWNi$YQ~xIjv%523`_QkIe?{$AG}{<*64;Ys*v@%po6*n z8~A{Y0sWg{>*@d5zrPr$+5Y{N*Y^E84ldHMf5%+8ZU0(M^W#GQ`lx>s)V~w^XZtsb zn*WdfefuZhzbT-!L;phgy7Kn{jp@LQ)yNINHpGtYh=0x_qlqD7qnqx>-YZ zsfO%^7d76&q8Rrwb$gM>`WJMq{=RU|x5r=UBf{TU@V7EKpiY*gOo9BI2ESH=3)JA= zG#D<@9^T98X0W_Vp8M?7HhE4psbq~xe)>X(k|G2xLI~H&=ey2!0&0saxP=FB9BD1drOzUd=1ppY zRenr@)nw13fmKtQc`XUuczrhspY1;i!fohh%J16fhq!*PNh$npChBH~CoTUGurMy^ zf?ay^rq)cKs<}laiC*5P%kA+UpL)4`e$>&P{|Uq=+#Q~@q7nD(2U@O*y$vBt)=2&z ztxyJ~JnW%v+(b@BV91(n^tSw zUYSj(AU+Zah+OXlo^<7feg|@%0DY9)ZZI&Jjv|;+R36C1)4&RHF%A^0LT=s{2)a79 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�q)ohxmD7DF<`JqfMC@_A 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 literal 1265664 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 z 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