From cb0a82ea934fff98b762fb3fe23448a295dfde44 Mon Sep 17 00:00:00 2001 From: Niko PLP Date: Sun, 13 Aug 2023 17:36:28 +0300 Subject: [PATCH] openssl plugin for data at rest encryption in rocksdb --- env/env_encryption.cc | 1 + plugin/ippcp/test_macos/ippcp_example.cc | 4 +- .../include/crypto/__DECC_INCLUDE_EPILOGUE.H | 16 + .../include/crypto/__DECC_INCLUDE_PROLOGUE.H | 20 + plugin/openssl/include/crypto/aria.h | 50 + plugin/openssl/include/crypto/asn1.h | 113 + plugin/openssl/include/crypto/async.h | 15 + plugin/openssl/include/crypto/bn.h | 90 + plugin/openssl/include/crypto/bn_conf.h.in | 27 + plugin/openssl/include/crypto/bn_dh.h | 24 + plugin/openssl/include/crypto/bn_srp.h | 32 + plugin/openssl/include/crypto/chacha.h | 42 + plugin/openssl/include/crypto/cryptlib.h | 35 + plugin/openssl/include/crypto/ctype.h | 82 + plugin/openssl/include/crypto/dso_conf.h.in | 31 + plugin/openssl/include/crypto/ec.h | 53 + plugin/openssl/include/crypto/engine.h | 20 + plugin/openssl/include/crypto/err.h | 19 + plugin/openssl/include/crypto/evp.h | 442 ++ plugin/openssl/include/crypto/lhash.h | 15 + plugin/openssl/include/crypto/md32_common.h | 256 + plugin/openssl/include/crypto/objects.h | 12 + plugin/openssl/include/crypto/poly1305.h | 21 + plugin/openssl/include/crypto/rand.h | 144 + plugin/openssl/include/crypto/sha.h | 19 + plugin/openssl/include/crypto/siphash.h | 25 + plugin/openssl/include/crypto/sm2.h | 77 + plugin/openssl/include/crypto/sm2err.h | 65 + plugin/openssl/include/crypto/sm3.h | 39 + plugin/openssl/include/crypto/sm4.h | 37 + plugin/openssl/include/crypto/store.h | 28 + plugin/openssl/include/crypto/x509.h | 291 + .../internal/__DECC_INCLUDE_EPILOGUE.H | 16 + .../internal/__DECC_INCLUDE_PROLOGUE.H | 20 + plugin/openssl/include/internal/bio.h | 33 + plugin/openssl/include/internal/comp.h | 12 + plugin/openssl/include/internal/conf.h | 30 + .../openssl/include/internal/constant_time.h | 387 ++ plugin/openssl/include/internal/cryptlib.h | 99 + plugin/openssl/include/internal/dane.h | 103 + plugin/openssl/include/internal/dso.h | 165 + plugin/openssl/include/internal/dsoerr.h | 82 + plugin/openssl/include/internal/err.h | 15 + plugin/openssl/include/internal/nelem.h | 14 + plugin/openssl/include/internal/numbers.h | 68 + plugin/openssl/include/internal/o_dir.h | 52 + plugin/openssl/include/internal/o_str.h | 17 + plugin/openssl/include/internal/refcount.h | 153 + plugin/openssl/include/internal/sockets.h | 157 + plugin/openssl/include/internal/sslconf.h | 20 + plugin/openssl/include/internal/thread_once.h | 137 + plugin/openssl/include/internal/tsan_assist.h | 144 + .../include/openssl/__DECC_INCLUDE_EPILOGUE.H | 22 + .../include/openssl/__DECC_INCLUDE_PROLOGUE.H | 26 + plugin/openssl/include/openssl/aes.h | 92 + plugin/openssl/include/openssl/asn1.h | 886 +++ plugin/openssl/include/openssl/asn1_mac.h | 10 + plugin/openssl/include/openssl/asn1err.h | 256 + plugin/openssl/include/openssl/asn1t.h | 945 +++ plugin/openssl/include/openssl/async.h | 76 + plugin/openssl/include/openssl/asyncerr.h | 42 + plugin/openssl/include/openssl/bio.h | 801 +++ plugin/openssl/include/openssl/bioerr.h | 124 + plugin/openssl/include/openssl/blowfish.h | 61 + plugin/openssl/include/openssl/bn.h | 539 ++ plugin/openssl/include/openssl/bnerr.h | 101 + plugin/openssl/include/openssl/buffer.h | 58 + plugin/openssl/include/openssl/buffererr.h | 34 + plugin/openssl/include/openssl/camellia.h | 83 + plugin/openssl/include/openssl/cast.h | 53 + plugin/openssl/include/openssl/cmac.h | 41 + plugin/openssl/include/openssl/cms.h | 339 ++ plugin/openssl/include/openssl/cmserr.h | 203 + plugin/openssl/include/openssl/comp.h | 53 + plugin/openssl/include/openssl/comperr.h | 44 + plugin/openssl/include/openssl/conf.h | 168 + plugin/openssl/include/openssl/conf_api.h | 40 + plugin/openssl/include/openssl/conferr.h | 76 + plugin/openssl/include/openssl/crypto.h | 445 ++ plugin/openssl/include/openssl/cryptoerr.h | 57 + plugin/openssl/include/openssl/ct.h | 474 ++ plugin/openssl/include/openssl/cterr.h | 80 + plugin/openssl/include/openssl/des.h | 174 + plugin/openssl/include/openssl/dh.h | 343 ++ plugin/openssl/include/openssl/dherr.h | 89 + plugin/openssl/include/openssl/dsa.h | 244 + plugin/openssl/include/openssl/dsaerr.h | 72 + plugin/openssl/include/openssl/dtls1.h | 55 + plugin/openssl/include/openssl/e_os2.h | 301 + plugin/openssl/include/openssl/ebcdic.h | 33 + plugin/openssl/include/openssl/ec.h | 1484 +++++ plugin/openssl/include/openssl/ecdh.h | 10 + plugin/openssl/include/openssl/ecdsa.h | 10 + plugin/openssl/include/openssl/ecerr.h | 276 + plugin/openssl/include/openssl/engine.h | 752 +++ plugin/openssl/include/openssl/engineerr.h | 111 + plugin/openssl/include/openssl/err.h | 274 + plugin/openssl/include/openssl/evp.h | 1666 ++++++ plugin/openssl/include/openssl/evperr.h | 204 + plugin/openssl/include/openssl/hmac.h | 51 + plugin/openssl/include/openssl/idea.h | 64 + plugin/openssl/include/openssl/kdf.h | 97 + plugin/openssl/include/openssl/kdferr.h | 55 + plugin/openssl/include/openssl/lhash.h | 241 + plugin/openssl/include/openssl/md2.h | 44 + plugin/openssl/include/openssl/md4.h | 51 + plugin/openssl/include/openssl/md5.h | 50 + plugin/openssl/include/openssl/mdc2.h | 42 + plugin/openssl/include/openssl/modes.h | 208 + plugin/openssl/include/openssl/obj_mac.h | 5198 +++++++++++++++++ plugin/openssl/include/openssl/objects.h | 175 + plugin/openssl/include/openssl/objectserr.h | 42 + plugin/openssl/include/openssl/ocsp.h | 352 ++ plugin/openssl/include/openssl/ocsperr.h | 78 + plugin/openssl/include/openssl/opensslconf.h | 203 + plugin/openssl/include/openssl/opensslv.h | 101 + plugin/openssl/include/openssl/ossl_typ.h | 197 + plugin/openssl/include/openssl/pem.h | 378 ++ plugin/openssl/include/openssl/pem2.h | 13 + plugin/openssl/include/openssl/pemerr.h | 105 + plugin/openssl/include/openssl/pkcs12.h | 223 + plugin/openssl/include/openssl/pkcs12err.h | 81 + plugin/openssl/include/openssl/pkcs7.h | 319 + plugin/openssl/include/openssl/pkcs7err.h | 103 + plugin/openssl/include/openssl/rand.h | 77 + plugin/openssl/include/openssl/rand_drbg.h | 130 + plugin/openssl/include/openssl/randerr.h | 94 + plugin/openssl/include/openssl/rc2.h | 51 + plugin/openssl/include/openssl/rc4.h | 36 + plugin/openssl/include/openssl/rc5.h | 63 + plugin/openssl/include/openssl/ripemd.h | 47 + plugin/openssl/include/openssl/rsa.h | 513 ++ plugin/openssl/include/openssl/rsaerr.h | 167 + plugin/openssl/include/openssl/safestack.h | 207 + plugin/openssl/include/openssl/seed.h | 96 + plugin/openssl/include/openssl/sha.h | 119 + plugin/openssl/include/openssl/srp.h | 135 + plugin/openssl/include/openssl/srtp.h | 50 + plugin/openssl/include/openssl/ssl.h | 2448 ++++++++ plugin/openssl/include/openssl/ssl2.h | 24 + plugin/openssl/include/openssl/ssl3.h | 342 ++ plugin/openssl/include/openssl/sslerr.h | 776 +++ plugin/openssl/include/openssl/stack.h | 83 + plugin/openssl/include/openssl/store.h | 266 + plugin/openssl/include/openssl/storeerr.h | 91 + plugin/openssl/include/openssl/symhacks.h | 37 + plugin/openssl/include/openssl/tls1.h | 1237 ++++ plugin/openssl/include/openssl/ts.h | 559 ++ plugin/openssl/include/openssl/tserr.h | 132 + plugin/openssl/include/openssl/txt_db.h | 57 + plugin/openssl/include/openssl/ui.h | 368 ++ plugin/openssl/include/openssl/uierr.h | 65 + plugin/openssl/include/openssl/whrlpool.h | 48 + plugin/openssl/include/openssl/x509.h | 1050 ++++ plugin/openssl/include/openssl/x509_vfy.h | 632 ++ plugin/openssl/include/openssl/x509err.h | 129 + plugin/openssl/include/openssl/x509v3.h | 938 +++ plugin/openssl/include/openssl/x509v3err.h | 164 + plugin/openssl/openssl.mk | 4 + plugin/openssl/openssl_provider.cc | 295 + plugin/openssl/openssl_provider.h | 62 + plugin/openssl/portable_endian.h | 168 + plugin/openssl/test_openssl/Makefile | 12 + plugin/openssl/test_openssl/ippcp_example | Bin 0 -> 13281928 bytes plugin/openssl/test_openssl/ippcp_example.cc | 237 + plugin/openssl/tests/CMakeLists.txt | 61 + plugin/openssl/tests/ippcp_encryptor_test.cc | 430 ++ 167 files changed, 37165 insertions(+), 2 deletions(-) create mode 100644 plugin/openssl/include/crypto/__DECC_INCLUDE_EPILOGUE.H create mode 100644 plugin/openssl/include/crypto/__DECC_INCLUDE_PROLOGUE.H create mode 100644 plugin/openssl/include/crypto/aria.h create mode 100644 plugin/openssl/include/crypto/asn1.h create mode 100644 plugin/openssl/include/crypto/async.h create mode 100644 plugin/openssl/include/crypto/bn.h create mode 100644 plugin/openssl/include/crypto/bn_conf.h.in create mode 100644 plugin/openssl/include/crypto/bn_dh.h create mode 100644 plugin/openssl/include/crypto/bn_srp.h create mode 100644 plugin/openssl/include/crypto/chacha.h create mode 100644 plugin/openssl/include/crypto/cryptlib.h create mode 100644 plugin/openssl/include/crypto/ctype.h create mode 100644 plugin/openssl/include/crypto/dso_conf.h.in create mode 100644 plugin/openssl/include/crypto/ec.h create mode 100644 plugin/openssl/include/crypto/engine.h create mode 100644 plugin/openssl/include/crypto/err.h create mode 100644 plugin/openssl/include/crypto/evp.h create mode 100644 plugin/openssl/include/crypto/lhash.h create mode 100644 plugin/openssl/include/crypto/md32_common.h create mode 100644 plugin/openssl/include/crypto/objects.h create mode 100644 plugin/openssl/include/crypto/poly1305.h create mode 100644 plugin/openssl/include/crypto/rand.h create mode 100644 plugin/openssl/include/crypto/sha.h create mode 100644 plugin/openssl/include/crypto/siphash.h create mode 100644 plugin/openssl/include/crypto/sm2.h create mode 100644 plugin/openssl/include/crypto/sm2err.h create mode 100644 plugin/openssl/include/crypto/sm3.h create mode 100644 plugin/openssl/include/crypto/sm4.h create mode 100644 plugin/openssl/include/crypto/store.h create mode 100644 plugin/openssl/include/crypto/x509.h create mode 100644 plugin/openssl/include/internal/__DECC_INCLUDE_EPILOGUE.H create mode 100644 plugin/openssl/include/internal/__DECC_INCLUDE_PROLOGUE.H create mode 100644 plugin/openssl/include/internal/bio.h create mode 100644 plugin/openssl/include/internal/comp.h create mode 100644 plugin/openssl/include/internal/conf.h create mode 100644 plugin/openssl/include/internal/constant_time.h create mode 100644 plugin/openssl/include/internal/cryptlib.h create mode 100644 plugin/openssl/include/internal/dane.h create mode 100644 plugin/openssl/include/internal/dso.h create mode 100644 plugin/openssl/include/internal/dsoerr.h create mode 100644 plugin/openssl/include/internal/err.h create mode 100644 plugin/openssl/include/internal/nelem.h create mode 100644 plugin/openssl/include/internal/numbers.h create mode 100644 plugin/openssl/include/internal/o_dir.h create mode 100644 plugin/openssl/include/internal/o_str.h create mode 100644 plugin/openssl/include/internal/refcount.h create mode 100644 plugin/openssl/include/internal/sockets.h create mode 100644 plugin/openssl/include/internal/sslconf.h create mode 100644 plugin/openssl/include/internal/thread_once.h create mode 100644 plugin/openssl/include/internal/tsan_assist.h create mode 100644 plugin/openssl/include/openssl/__DECC_INCLUDE_EPILOGUE.H create mode 100644 plugin/openssl/include/openssl/__DECC_INCLUDE_PROLOGUE.H create mode 100644 plugin/openssl/include/openssl/aes.h create mode 100644 plugin/openssl/include/openssl/asn1.h create mode 100644 plugin/openssl/include/openssl/asn1_mac.h create mode 100644 plugin/openssl/include/openssl/asn1err.h create mode 100644 plugin/openssl/include/openssl/asn1t.h create mode 100644 plugin/openssl/include/openssl/async.h create mode 100644 plugin/openssl/include/openssl/asyncerr.h create mode 100644 plugin/openssl/include/openssl/bio.h create mode 100644 plugin/openssl/include/openssl/bioerr.h create mode 100644 plugin/openssl/include/openssl/blowfish.h create mode 100644 plugin/openssl/include/openssl/bn.h create mode 100644 plugin/openssl/include/openssl/bnerr.h create mode 100644 plugin/openssl/include/openssl/buffer.h create mode 100644 plugin/openssl/include/openssl/buffererr.h create mode 100644 plugin/openssl/include/openssl/camellia.h create mode 100644 plugin/openssl/include/openssl/cast.h create mode 100644 plugin/openssl/include/openssl/cmac.h create mode 100644 plugin/openssl/include/openssl/cms.h create mode 100644 plugin/openssl/include/openssl/cmserr.h create mode 100644 plugin/openssl/include/openssl/comp.h create mode 100644 plugin/openssl/include/openssl/comperr.h create mode 100644 plugin/openssl/include/openssl/conf.h create mode 100644 plugin/openssl/include/openssl/conf_api.h create mode 100644 plugin/openssl/include/openssl/conferr.h create mode 100644 plugin/openssl/include/openssl/crypto.h create mode 100644 plugin/openssl/include/openssl/cryptoerr.h create mode 100644 plugin/openssl/include/openssl/ct.h create mode 100644 plugin/openssl/include/openssl/cterr.h create mode 100644 plugin/openssl/include/openssl/des.h create mode 100644 plugin/openssl/include/openssl/dh.h create mode 100644 plugin/openssl/include/openssl/dherr.h create mode 100644 plugin/openssl/include/openssl/dsa.h create mode 100644 plugin/openssl/include/openssl/dsaerr.h create mode 100644 plugin/openssl/include/openssl/dtls1.h create mode 100644 plugin/openssl/include/openssl/e_os2.h create mode 100644 plugin/openssl/include/openssl/ebcdic.h create mode 100644 plugin/openssl/include/openssl/ec.h create mode 100644 plugin/openssl/include/openssl/ecdh.h create mode 100644 plugin/openssl/include/openssl/ecdsa.h create mode 100644 plugin/openssl/include/openssl/ecerr.h create mode 100644 plugin/openssl/include/openssl/engine.h create mode 100644 plugin/openssl/include/openssl/engineerr.h create mode 100644 plugin/openssl/include/openssl/err.h create mode 100644 plugin/openssl/include/openssl/evp.h create mode 100644 plugin/openssl/include/openssl/evperr.h create mode 100644 plugin/openssl/include/openssl/hmac.h create mode 100644 plugin/openssl/include/openssl/idea.h create mode 100644 plugin/openssl/include/openssl/kdf.h create mode 100644 plugin/openssl/include/openssl/kdferr.h create mode 100644 plugin/openssl/include/openssl/lhash.h create mode 100644 plugin/openssl/include/openssl/md2.h create mode 100644 plugin/openssl/include/openssl/md4.h create mode 100644 plugin/openssl/include/openssl/md5.h create mode 100644 plugin/openssl/include/openssl/mdc2.h create mode 100644 plugin/openssl/include/openssl/modes.h create mode 100644 plugin/openssl/include/openssl/obj_mac.h create mode 100644 plugin/openssl/include/openssl/objects.h create mode 100644 plugin/openssl/include/openssl/objectserr.h create mode 100644 plugin/openssl/include/openssl/ocsp.h create mode 100644 plugin/openssl/include/openssl/ocsperr.h create mode 100644 plugin/openssl/include/openssl/opensslconf.h create mode 100644 plugin/openssl/include/openssl/opensslv.h create mode 100644 plugin/openssl/include/openssl/ossl_typ.h create mode 100644 plugin/openssl/include/openssl/pem.h create mode 100644 plugin/openssl/include/openssl/pem2.h create mode 100644 plugin/openssl/include/openssl/pemerr.h create mode 100644 plugin/openssl/include/openssl/pkcs12.h create mode 100644 plugin/openssl/include/openssl/pkcs12err.h create mode 100644 plugin/openssl/include/openssl/pkcs7.h create mode 100644 plugin/openssl/include/openssl/pkcs7err.h create mode 100644 plugin/openssl/include/openssl/rand.h create mode 100644 plugin/openssl/include/openssl/rand_drbg.h create mode 100644 plugin/openssl/include/openssl/randerr.h create mode 100644 plugin/openssl/include/openssl/rc2.h create mode 100644 plugin/openssl/include/openssl/rc4.h create mode 100644 plugin/openssl/include/openssl/rc5.h create mode 100644 plugin/openssl/include/openssl/ripemd.h create mode 100644 plugin/openssl/include/openssl/rsa.h create mode 100644 plugin/openssl/include/openssl/rsaerr.h create mode 100644 plugin/openssl/include/openssl/safestack.h create mode 100644 plugin/openssl/include/openssl/seed.h create mode 100644 plugin/openssl/include/openssl/sha.h create mode 100644 plugin/openssl/include/openssl/srp.h create mode 100644 plugin/openssl/include/openssl/srtp.h create mode 100644 plugin/openssl/include/openssl/ssl.h create mode 100644 plugin/openssl/include/openssl/ssl2.h create mode 100644 plugin/openssl/include/openssl/ssl3.h create mode 100644 plugin/openssl/include/openssl/sslerr.h create mode 100644 plugin/openssl/include/openssl/stack.h create mode 100644 plugin/openssl/include/openssl/store.h create mode 100644 plugin/openssl/include/openssl/storeerr.h create mode 100644 plugin/openssl/include/openssl/symhacks.h create mode 100644 plugin/openssl/include/openssl/tls1.h create mode 100644 plugin/openssl/include/openssl/ts.h create mode 100644 plugin/openssl/include/openssl/tserr.h create mode 100644 plugin/openssl/include/openssl/txt_db.h create mode 100644 plugin/openssl/include/openssl/ui.h create mode 100644 plugin/openssl/include/openssl/uierr.h create mode 100644 plugin/openssl/include/openssl/whrlpool.h create mode 100644 plugin/openssl/include/openssl/x509.h create mode 100644 plugin/openssl/include/openssl/x509_vfy.h create mode 100644 plugin/openssl/include/openssl/x509err.h create mode 100644 plugin/openssl/include/openssl/x509v3.h create mode 100644 plugin/openssl/include/openssl/x509v3err.h create mode 100644 plugin/openssl/openssl.mk create mode 100644 plugin/openssl/openssl_provider.cc create mode 100644 plugin/openssl/openssl_provider.h create mode 100644 plugin/openssl/portable_endian.h create mode 100644 plugin/openssl/test_openssl/Makefile create mode 100755 plugin/openssl/test_openssl/ippcp_example create mode 100644 plugin/openssl/test_openssl/ippcp_example.cc create mode 100644 plugin/openssl/tests/CMakeLists.txt create mode 100644 plugin/openssl/tests/ippcp_encryptor_test.cc diff --git a/env/env_encryption.cc b/env/env_encryption.cc index 80b9793be..4774b0fd4 100644 --- a/env/env_encryption.cc +++ b/env/env_encryption.cc @@ -10,6 +10,7 @@ #include #include #include +#include #include "env/composite_env_wrapper.h" #include "env/env_encryption_ctr.h" diff --git a/plugin/ippcp/test_macos/ippcp_example.cc b/plugin/ippcp/test_macos/ippcp_example.cc index f7b66d9a1..ef2f32a0a 100644 --- a/plugin/ippcp/test_macos/ippcp_example.cc +++ b/plugin/ippcp/test_macos/ippcp_example.cc @@ -13,7 +13,7 @@ #include -#include "../ippcp_provider.h" +//#include "../ippcp_provider.h" using namespace ROCKSDB_NAMESPACE; @@ -26,7 +26,7 @@ int main() { std::shared_ptr provider; Status status = EncryptionProvider::CreateFromString( - ConfigOptions(), IppcpProvider::kName(), &provider); + ConfigOptions(), "ippcp", &provider); assert(status.ok()); status = diff --git a/plugin/openssl/include/crypto/__DECC_INCLUDE_EPILOGUE.H b/plugin/openssl/include/crypto/__DECC_INCLUDE_EPILOGUE.H new file mode 100644 index 000000000..c350018ad --- /dev/null +++ b/plugin/openssl/include/crypto/__DECC_INCLUDE_EPILOGUE.H @@ -0,0 +1,16 @@ +/* + * Copyright 2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +/* + * This file is only used by HP C on VMS, and is included automatically + * after each header file from this directory + */ + +/* restore state. Must correspond to the save in __decc_include_prologue.h */ +#pragma names restore diff --git a/plugin/openssl/include/crypto/__DECC_INCLUDE_PROLOGUE.H b/plugin/openssl/include/crypto/__DECC_INCLUDE_PROLOGUE.H new file mode 100644 index 000000000..9a9c777f9 --- /dev/null +++ b/plugin/openssl/include/crypto/__DECC_INCLUDE_PROLOGUE.H @@ -0,0 +1,20 @@ +/* + * Copyright 2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +/* + * This file is only used by HP C on VMS, and is included automatically + * after each header file from this directory + */ + +/* save state */ +#pragma names save +/* have the compiler shorten symbols larger than 31 chars to 23 chars + * followed by a 8 hex char CRC + */ +#pragma names as_is,shortened diff --git a/plugin/openssl/include/crypto/aria.h b/plugin/openssl/include/crypto/aria.h new file mode 100644 index 000000000..03a62950a --- /dev/null +++ b/plugin/openssl/include/crypto/aria.h @@ -0,0 +1,50 @@ +/* + * Copyright 2006-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + /* Copyright (c) 2017 National Security Research Institute. All rights reserved. */ + +#ifndef OSSL_CRYPTO_ARIA_H +# define OSSL_CRYPTO_ARIA_H + +# include + +# ifdef OPENSSL_NO_ARIA +# error ARIA is disabled. +# endif + +# define ARIA_ENCRYPT 1 +# define ARIA_DECRYPT 0 + +# define ARIA_BLOCK_SIZE 16 /* Size of each encryption/decryption block */ +# define ARIA_MAX_KEYS 17 /* Number of keys needed in the worst case */ + +typedef union { + unsigned char c[ARIA_BLOCK_SIZE]; + unsigned int u[ARIA_BLOCK_SIZE / sizeof(unsigned int)]; +} ARIA_u128; + +typedef unsigned char ARIA_c128[ARIA_BLOCK_SIZE]; + +struct aria_key_st { + ARIA_u128 rd_key[ARIA_MAX_KEYS]; + unsigned int rounds; +}; +typedef struct aria_key_st ARIA_KEY; + + +int aria_set_encrypt_key(const unsigned char *userKey, const int bits, + ARIA_KEY *key); +int aria_set_decrypt_key(const unsigned char *userKey, const int bits, + ARIA_KEY *key); + +void aria_encrypt(const unsigned char *in, unsigned char *out, + const ARIA_KEY *key); + +#endif diff --git a/plugin/openssl/include/crypto/asn1.h b/plugin/openssl/include/crypto/asn1.h new file mode 100644 index 000000000..9c9b4d897 --- /dev/null +++ b/plugin/openssl/include/crypto/asn1.h @@ -0,0 +1,113 @@ +/* + * Copyright 2015-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +/* Internal ASN1 structures and functions: not for application use */ + +/* ASN1 public key method structure */ + +struct evp_pkey_asn1_method_st { + int pkey_id; + int pkey_base_id; + unsigned long pkey_flags; + char *pem_str; + char *info; + 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 (*priv_decode) (EVP_PKEY *pk, const 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); + int (*pkey_size) (const EVP_PKEY *pk); + int (*pkey_bits) (const EVP_PKEY *pk); + int (*pkey_security_bits) (const EVP_PKEY *pk); + 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); + int (*sig_print) (BIO *out, + const X509_ALGOR *sigalg, const ASN1_STRING *sig, + int indent, ASN1_PCTX *pctx); + void (*pkey_free) (EVP_PKEY *pkey); + int (*pkey_ctrl) (EVP_PKEY *pkey, int op, long arg1, void *arg2); + /* Legacy functions for old PEM */ + int (*old_priv_decode) (EVP_PKEY *pkey, + const unsigned char **pder, int derlen); + int (*old_priv_encode) (const EVP_PKEY *pkey, unsigned char **pder); + /* Custom ASN1 signature verification */ + int (*item_verify) (EVP_MD_CTX *ctx, const ASN1_ITEM *it, void *asn, + X509_ALGOR *a, ASN1_BIT_STRING *sig, EVP_PKEY *pkey); + int (*item_sign) (EVP_MD_CTX *ctx, const ASN1_ITEM *it, void *asn, + X509_ALGOR *alg1, X509_ALGOR *alg2, + ASN1_BIT_STRING *sig); + int (*siginf_set) (X509_SIG_INFO *siginf, const X509_ALGOR *alg, + const ASN1_STRING *sig); + /* Check */ + int (*pkey_check) (const EVP_PKEY *pk); + int (*pkey_public_check) (const EVP_PKEY *pk); + int (*pkey_param_check) (const EVP_PKEY *pk); + /* Get/set raw private/public key data */ + int (*set_priv_key) (EVP_PKEY *pk, const unsigned char *priv, size_t len); + int (*set_pub_key) (EVP_PKEY *pk, const unsigned char *pub, size_t len); + int (*get_priv_key) (const EVP_PKEY *pk, unsigned char *priv, size_t *len); + int (*get_pub_key) (const EVP_PKEY *pk, unsigned char *pub, size_t *len); +} /* EVP_PKEY_ASN1_METHOD */ ; + +DEFINE_STACK_OF_CONST(EVP_PKEY_ASN1_METHOD) + +extern const EVP_PKEY_ASN1_METHOD cmac_asn1_meth; +extern const EVP_PKEY_ASN1_METHOD dh_asn1_meth; +extern const EVP_PKEY_ASN1_METHOD dhx_asn1_meth; +extern const EVP_PKEY_ASN1_METHOD dsa_asn1_meths[5]; +extern const EVP_PKEY_ASN1_METHOD eckey_asn1_meth; +extern const EVP_PKEY_ASN1_METHOD ecx25519_asn1_meth; +extern const EVP_PKEY_ASN1_METHOD ecx448_asn1_meth; +extern const EVP_PKEY_ASN1_METHOD ed25519_asn1_meth; +extern const EVP_PKEY_ASN1_METHOD ed448_asn1_meth; +extern const EVP_PKEY_ASN1_METHOD sm2_asn1_meth; +extern const EVP_PKEY_ASN1_METHOD poly1305_asn1_meth; + +extern const EVP_PKEY_ASN1_METHOD hmac_asn1_meth; +extern const EVP_PKEY_ASN1_METHOD rsa_asn1_meths[2]; +extern const EVP_PKEY_ASN1_METHOD rsa_pss_asn1_meth; +extern const EVP_PKEY_ASN1_METHOD siphash_asn1_meth; + +/* + * 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 */ +}; + +/* ASN1 print context structure */ + +struct asn1_pctx_st { + unsigned long flags; + unsigned long nm_flags; + unsigned long cert_flags; + unsigned long oid_flags; + unsigned long str_flags; +} /* ASN1_PCTX */ ; + +int asn1_d2i_read_bio(BIO *in, BUF_MEM **pb); diff --git a/plugin/openssl/include/crypto/async.h b/plugin/openssl/include/crypto/async.h new file mode 100644 index 000000000..dc8e937b0 --- /dev/null +++ b/plugin/openssl/include/crypto/async.h @@ -0,0 +1,15 @@ +/* + * Copyright 2016-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include + +int async_init(void); +void async_deinit(void); +void async_delete_thread_state(void); + diff --git a/plugin/openssl/include/crypto/bn.h b/plugin/openssl/include/crypto/bn.h new file mode 100644 index 000000000..250914c46 --- /dev/null +++ b/plugin/openssl/include/crypto/bn.h @@ -0,0 +1,90 @@ +/* + * Copyright 2014-2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OSSL_CRYPTO_BN_H +# define OSSL_CRYPTO_BN_H + +# include +# include + +BIGNUM *bn_wexpand(BIGNUM *a, int words); +BIGNUM *bn_expand2(BIGNUM *a, int words); + +void bn_correct_top(BIGNUM *a); + +/* + * Determine the modified width-(w+1) Non-Adjacent Form (wNAF) of 'scalar'. + * This is an array r[] of values that are either zero or odd with an + * absolute value less than 2^w satisfying scalar = \sum_j r[j]*2^j where at + * most one of any w+1 consecutive digits is non-zero with the exception that + * the most significant digit may be only w-1 zeros away from that next + * non-zero digit. + */ +signed char *bn_compute_wNAF(const BIGNUM *scalar, int w, size_t *ret_len); + +int bn_get_top(const BIGNUM *a); + +int bn_get_dmax(const BIGNUM *a); + +/* Set all words to zero */ +void bn_set_all_zero(BIGNUM *a); + +/* + * Copy the internal BIGNUM words into out which holds size elements (and size + * must be bigger than top) + */ +int bn_copy_words(BN_ULONG *out, const BIGNUM *in, int size); + +BN_ULONG *bn_get_words(const BIGNUM *a); + +/* + * Set the internal data words in a to point to words which contains size + * elements. The BN_FLG_STATIC_DATA flag is set + */ +void bn_set_static_words(BIGNUM *a, const BN_ULONG *words, int size); + +/* + * Copy words into the BIGNUM |a|, reallocating space as necessary. + * The negative flag of |a| is not modified. + * Returns 1 on success and 0 on failure. + */ +/* + * |num_words| is int because bn_expand2 takes an int. This is an internal + * function so we simply trust callers not to pass negative values. + */ +int bn_set_words(BIGNUM *a, const BN_ULONG *words, int num_words); + +/* + * Some BIGNUM functions assume most significant limb to be non-zero, which + * is customarily arranged by bn_correct_top. Output from below functions + * is not processed with bn_correct_top, and for this reason it may not be + * returned out of public API. It may only be passed internally into other + * functions known to support non-minimal or zero-padded BIGNUMs. Even + * though the goal is to facilitate constant-time-ness, not each subroutine + * is constant-time by itself. They all have pre-conditions, consult source + * code... + */ +int bn_mul_mont_fixed_top(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, + BN_MONT_CTX *mont, BN_CTX *ctx); +int bn_to_mont_fixed_top(BIGNUM *r, const BIGNUM *a, BN_MONT_CTX *mont, + BN_CTX *ctx); +int bn_from_mont_fixed_top(BIGNUM *r, const BIGNUM *a, BN_MONT_CTX *mont, + BN_CTX *ctx); +int bn_mod_add_fixed_top(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, + const BIGNUM *m); +int bn_mod_sub_fixed_top(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, + const BIGNUM *m); +int bn_mul_fixed_top(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx); +int bn_sqr_fixed_top(BIGNUM *r, const BIGNUM *a, BN_CTX *ctx); +int bn_lshift_fixed_top(BIGNUM *r, const BIGNUM *a, int n); +int bn_rshift_fixed_top(BIGNUM *r, const BIGNUM *a, int n); +int bn_div_fixed_top(BIGNUM *dv, BIGNUM *rem, const BIGNUM *m, + const BIGNUM *d, BN_CTX *ctx); + +#endif diff --git a/plugin/openssl/include/crypto/bn_conf.h.in b/plugin/openssl/include/crypto/bn_conf.h.in new file mode 100644 index 000000000..b6b9eb743 --- /dev/null +++ b/plugin/openssl/include/crypto/bn_conf.h.in @@ -0,0 +1,27 @@ +{- join("\n",map { "/* $_ */" } @autowarntext) -} +/* + * Copyright 2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OSSL_CRYPTO_BN_CONF_H +# define OSSL_CRYPTO_BN_CONF_H + +/* + * The contents of this file are not used in the UEFI build, as + * both 32-bit and 64-bit builds are supported from a single run + * of the Configure script. + */ + +/* Should we define BN_DIV2W here? */ + +/* Only one for the following should be defined */ +{- $config{b64l} ? "#define" : "#undef" -} SIXTY_FOUR_BIT_LONG +{- $config{b64} ? "#define" : "#undef" -} SIXTY_FOUR_BIT +{- $config{b32} ? "#define" : "#undef" -} THIRTY_TWO_BIT + +#endif diff --git a/plugin/openssl/include/crypto/bn_dh.h b/plugin/openssl/include/crypto/bn_dh.h new file mode 100644 index 000000000..70ebca287 --- /dev/null +++ b/plugin/openssl/include/crypto/bn_dh.h @@ -0,0 +1,24 @@ +/* + * Copyright 2015-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#define declare_dh_bn(x) \ + extern const BIGNUM _bignum_dh##x##_p; \ + extern const BIGNUM _bignum_dh##x##_g; \ + extern const BIGNUM _bignum_dh##x##_q; + +declare_dh_bn(1024_160) +declare_dh_bn(2048_224) +declare_dh_bn(2048_256) + +extern const BIGNUM _bignum_ffdhe2048_p; +extern const BIGNUM _bignum_ffdhe3072_p; +extern const BIGNUM _bignum_ffdhe4096_p; +extern const BIGNUM _bignum_ffdhe6144_p; +extern const BIGNUM _bignum_ffdhe8192_p; +extern const BIGNUM _bignum_const_2; diff --git a/plugin/openssl/include/crypto/bn_srp.h b/plugin/openssl/include/crypto/bn_srp.h new file mode 100644 index 000000000..d4b282a6b --- /dev/null +++ b/plugin/openssl/include/crypto/bn_srp.h @@ -0,0 +1,32 @@ +/* + * Copyright 2014-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_NO_SRP + +extern const BIGNUM bn_group_1024; + +extern const BIGNUM bn_group_1536; + +extern const BIGNUM bn_group_2048; + +extern const BIGNUM bn_group_3072; + +extern const BIGNUM bn_group_4096; + +extern const BIGNUM bn_group_6144; + +extern const BIGNUM bn_group_8192; + +extern const BIGNUM bn_generator_19; + +extern const BIGNUM bn_generator_5; + +extern const BIGNUM bn_generator_2; + +#endif diff --git a/plugin/openssl/include/crypto/chacha.h b/plugin/openssl/include/crypto/chacha.h new file mode 100644 index 000000000..4029400a6 --- /dev/null +++ b/plugin/openssl/include/crypto/chacha.h @@ -0,0 +1,42 @@ +/* + * Copyright 2015-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OSSL_CRYPTO_CHACHA_H +#define OSSL_CRYPTO_CHACHA_H + +#include + +/* + * ChaCha20_ctr32 encrypts |len| bytes from |inp| with the given key and + * nonce and writes the result to |out|, which may be equal to |inp|. + * The |key| is not 32 bytes of verbatim key material though, but the + * said material collected into 8 32-bit elements array in host byte + * order. Same approach applies to nonce: the |counter| argument is + * pointer to concatenated nonce and counter values collected into 4 + * 32-bit elements. This, passing crypto material collected into 32-bit + * elements as opposite to passing verbatim byte vectors, is chosen for + * efficiency in multi-call scenarios. + */ +void ChaCha20_ctr32(unsigned char *out, const unsigned char *inp, + size_t len, const unsigned int key[8], + const unsigned int counter[4]); +/* + * You can notice that there is no key setup procedure. Because it's + * as trivial as collecting bytes into 32-bit elements, it's reckoned + * that below macro is sufficient. + */ +#define CHACHA_U8TOU32(p) ( \ + ((unsigned int)(p)[0]) | ((unsigned int)(p)[1]<<8) | \ + ((unsigned int)(p)[2]<<16) | ((unsigned int)(p)[3]<<24) ) + +#define CHACHA_KEY_SIZE 32 +#define CHACHA_CTR_SIZE 16 +#define CHACHA_BLK_SIZE 64 + +#endif diff --git a/plugin/openssl/include/crypto/cryptlib.h b/plugin/openssl/include/crypto/cryptlib.h new file mode 100644 index 000000000..38b5dac9a --- /dev/null +++ b/plugin/openssl/include/crypto/cryptlib.h @@ -0,0 +1,35 @@ +/* + * Copyright 2016-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "internal/cryptlib.h" + +/* This file is not scanned by mkdef.pl, whereas cryptlib.h is */ + +struct thread_local_inits_st { + int async; + int err_state; + int rand; +}; + +int ossl_init_thread_start(uint64_t opts); + +/* + * OPENSSL_INIT flags. The primary list of these is in crypto.h. Flags below + * are those omitted from crypto.h because they are "reserved for internal + * use". + */ +# define OPENSSL_INIT_ZLIB 0x00010000L +# define OPENSSL_INIT_BASE_ONLY 0x00040000L + +/* OPENSSL_INIT_THREAD flags */ +# define OPENSSL_INIT_THREAD_ASYNC 0x01 +# define OPENSSL_INIT_THREAD_ERR_STATE 0x02 +# define OPENSSL_INIT_THREAD_RAND 0x04 + +void ossl_malloc_setup_failures(void); diff --git a/plugin/openssl/include/crypto/ctype.h b/plugin/openssl/include/crypto/ctype.h new file mode 100644 index 000000000..81ef8f5cf --- /dev/null +++ b/plugin/openssl/include/crypto/ctype.h @@ -0,0 +1,82 @@ +/* + * Copyright 2017-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +/* + * This version of ctype.h provides a standardised and platform + * independent implementation that supports seven bit ASCII characters. + * The specific intent is to not pass extended ASCII characters (> 127) + * even if the host operating system would. + * + * There is EBCDIC support included for machines which use this. However, + * there are a number of concerns about how well EBCDIC is supported + * throughout the rest of the source code. Refer to issue #4154 for + * details. + */ +#ifndef OSSL_CRYPTO_CTYPE_H +# define OSSL_CRYPTO_CTYPE_H + +# define CTYPE_MASK_lower 0x1 +# define CTYPE_MASK_upper 0x2 +# define CTYPE_MASK_digit 0x4 +# define CTYPE_MASK_space 0x8 +# define CTYPE_MASK_xdigit 0x10 +# define CTYPE_MASK_blank 0x20 +# define CTYPE_MASK_cntrl 0x40 +# define CTYPE_MASK_graph 0x80 +# define CTYPE_MASK_print 0x100 +# define CTYPE_MASK_punct 0x200 +# define CTYPE_MASK_base64 0x400 +# define CTYPE_MASK_asn1print 0x800 + +# define CTYPE_MASK_alpha (CTYPE_MASK_lower | CTYPE_MASK_upper) +# define CTYPE_MASK_alnum (CTYPE_MASK_alpha | CTYPE_MASK_digit) + +/* + * The ascii mask assumes that any other classification implies that + * the character is ASCII and that there are no ASCII characters + * that aren't in any of the classifications. + * + * This assumption holds at the moment, but it might not in the future. + */ +# define CTYPE_MASK_ascii (~0) + +# ifdef CHARSET_EBCDIC +int ossl_toascii(int c); +int ossl_fromascii(int c); +# else +# define ossl_toascii(c) (c) +# define ossl_fromascii(c) (c) +# endif +int ossl_ctype_check(int c, unsigned int mask); +int ossl_tolower(int c); +int ossl_toupper(int c); + +int ascii_isdigit(const char inchar); + +# define ossl_isalnum(c) (ossl_ctype_check((c), CTYPE_MASK_alnum)) +# define ossl_isalpha(c) (ossl_ctype_check((c), CTYPE_MASK_alpha)) +# ifdef CHARSET_EBCDIC +# define ossl_isascii(c) (ossl_ctype_check((c), CTYPE_MASK_ascii)) +# else +# define ossl_isascii(c) (((c) & ~127) == 0) +# endif +# define ossl_isblank(c) (ossl_ctype_check((c), CTYPE_MASK_blank)) +# define ossl_iscntrl(c) (ossl_ctype_check((c), CTYPE_MASK_cntrl)) +# define ossl_isdigit(c) (ossl_ctype_check((c), CTYPE_MASK_digit)) +# define ossl_isgraph(c) (ossl_ctype_check((c), CTYPE_MASK_graph)) +# define ossl_islower(c) (ossl_ctype_check((c), CTYPE_MASK_lower)) +# define ossl_isprint(c) (ossl_ctype_check((c), CTYPE_MASK_print)) +# define ossl_ispunct(c) (ossl_ctype_check((c), CTYPE_MASK_punct)) +# define ossl_isspace(c) (ossl_ctype_check((c), CTYPE_MASK_space)) +# define ossl_isupper(c) (ossl_ctype_check((c), CTYPE_MASK_upper)) +# define ossl_isxdigit(c) (ossl_ctype_check((c), CTYPE_MASK_xdigit)) +# define ossl_isbase64(c) (ossl_ctype_check((c), CTYPE_MASK_base64)) +# define ossl_isasn1print(c) (ossl_ctype_check((c), CTYPE_MASK_asn1print)) + +#endif diff --git a/plugin/openssl/include/crypto/dso_conf.h.in b/plugin/openssl/include/crypto/dso_conf.h.in new file mode 100644 index 000000000..57a09b10a --- /dev/null +++ b/plugin/openssl/include/crypto/dso_conf.h.in @@ -0,0 +1,31 @@ +{- join("\n",map { "/* $_ */" } @autowarntext) -} +/* + * Copyright 2016-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OSSL_CRYPTO_DSO_CONF_H +# define OSSL_CRYPTO_DSO_CONF_H +{- # The DSO code currently always implements all functions so that no + # applications will have to worry about that from a compilation point + # of view. However, the "method"s may return zero unless that platform + # has support compiled in for them. Currently each method is enabled + # by a define "DSO_" ... we translate the "dso_scheme" config + # string entry into using the following logic; + my $scheme = $disabled{dso} ? undef : uc $target{dso_scheme}; + if (!$scheme) { + $scheme = "NONE"; + } + my @macros = ( "DSO_$scheme" ); + if ($scheme eq 'DLFCN') { + @macros = ( "DSO_DLFCN", "HAVE_DLFCN_H" ); + } elsif ($scheme eq "DLFCN_NO_H") { + @macros = ( "DSO_DLFCN" ); + } + join("\n", map { "# define $_" } @macros); -} +# define DSO_EXTENSION "{- $target{dso_extension} -}" +#endif diff --git a/plugin/openssl/include/crypto/ec.h b/plugin/openssl/include/crypto/ec.h new file mode 100644 index 000000000..fe52ae704 --- /dev/null +++ b/plugin/openssl/include/crypto/ec.h @@ -0,0 +1,53 @@ +/* + * Copyright 2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +/* Internal EC functions for other submodules: not for application use */ + +#ifndef OSSL_CRYPTO_EC_H +# define OSSL_CRYPTO_EC_H +# include + +# ifndef OPENSSL_NO_EC + +# include + +/*- + * Computes the multiplicative inverse of x in the range + * [1,EC_GROUP::order), where EC_GROUP::order is the cardinality of the + * subgroup generated by the generator G: + * + * res := x^(-1) (mod EC_GROUP::order). + * + * This function expects the following two conditions to hold: + * - the EC_GROUP order is prime, and + * - x is included in the range [1, EC_GROUP::order). + * + * This function returns 1 on success, 0 on error. + * + * If the EC_GROUP order is even, this function explicitly returns 0 as + * an error. + * In case any of the two conditions stated above is not satisfied, + * the correctness of its output is not guaranteed, even if the return + * value could still be 1 (as primality testing and a conditional modular + * reduction round on the input can be omitted by the underlying + * implementations for better SCA properties on regular input values). + */ +__owur int ec_group_do_inverse_ord(const EC_GROUP *group, BIGNUM *res, + const BIGNUM *x, BN_CTX *ctx); + +/*- + * ECDH Key Derivation Function as defined in ANSI X9.63 + */ +int ecdh_KDF_X9_63(unsigned char *out, size_t outlen, + const unsigned char *Z, size_t Zlen, + const unsigned char *sinfo, size_t sinfolen, + const EVP_MD *md); + +# endif /* OPENSSL_NO_EC */ +#endif diff --git a/plugin/openssl/include/crypto/engine.h b/plugin/openssl/include/crypto/engine.h new file mode 100644 index 000000000..f80ae3ec3 --- /dev/null +++ b/plugin/openssl/include/crypto/engine.h @@ -0,0 +1,20 @@ +/* + * Copyright 2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include + +void engine_load_openssl_int(void); +void engine_load_devcrypto_int(void); +void engine_load_rdrand_int(void); +void engine_load_dynamic_int(void); +void engine_load_padlock_int(void); +void engine_load_capi_int(void); +void engine_load_dasync_int(void); +void engine_load_afalg_int(void); +void engine_cleanup_int(void); diff --git a/plugin/openssl/include/crypto/err.h b/plugin/openssl/include/crypto/err.h new file mode 100644 index 000000000..8ab0e5baa --- /dev/null +++ b/plugin/openssl/include/crypto/err.h @@ -0,0 +1,19 @@ +/* + * Copyright 2016-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OSSL_CRYPTO_ERR_H +# define OSSL_CRYPTO_ERR_H + +int err_load_crypto_strings_int(void); +void err_cleanup(void); +void err_delete_thread_state(void); +int err_shelve_state(void **); +void err_unshelve_state(void *); + +#endif diff --git a/plugin/openssl/include/crypto/evp.h b/plugin/openssl/include/crypto/evp.h new file mode 100644 index 000000000..d86aed36f --- /dev/null +++ b/plugin/openssl/include/crypto/evp.h @@ -0,0 +1,442 @@ +/* + * Copyright 2015-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include +#include "internal/refcount.h" + +/* + * Don't free up md_ctx->pctx in EVP_MD_CTX_reset, use the reserved flag + * values in evp.h + */ +#define EVP_MD_CTX_FLAG_KEEP_PKEY_CTX 0x0400 + +struct evp_pkey_ctx_st { + /* Method associated with this operation */ + const EVP_PKEY_METHOD *pmeth; + /* Engine that implements this method or NULL if builtin */ + ENGINE *engine; + /* Key: may be NULL */ + EVP_PKEY *pkey; + /* Peer key for key agreement, may be NULL */ + EVP_PKEY *peerkey; + /* Actual operation */ + int operation; + /* Algorithm specific data */ + void *data; + /* Application specific data */ + void *app_data; + /* Keygen callback */ + EVP_PKEY_gen_cb *pkey_gencb; + /* implementation specific keygen data */ + int *keygen_info; + int keygen_info_count; +} /* EVP_PKEY_CTX */ ; + +#define EVP_PKEY_FLAG_DYNAMIC 1 + +struct evp_pkey_method_st { + int pkey_id; + int flags; + int (*init) (EVP_PKEY_CTX *ctx); + int (*copy) (EVP_PKEY_CTX *dst, EVP_PKEY_CTX *src); + void (*cleanup) (EVP_PKEY_CTX *ctx); + int (*paramgen_init) (EVP_PKEY_CTX *ctx); + int (*paramgen) (EVP_PKEY_CTX *ctx, EVP_PKEY *pkey); + int (*keygen_init) (EVP_PKEY_CTX *ctx); + int (*keygen) (EVP_PKEY_CTX *ctx, EVP_PKEY *pkey); + 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); + 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); + int (*verify_recover_init) (EVP_PKEY_CTX *ctx); + int (*verify_recover) (EVP_PKEY_CTX *ctx, + unsigned char *rout, size_t *routlen, + const unsigned char *sig, size_t siglen); + 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); + 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); + int (*encrypt_init) (EVP_PKEY_CTX *ctx); + int (*encrypt) (EVP_PKEY_CTX *ctx, unsigned char *out, size_t *outlen, + const unsigned char *in, size_t inlen); + 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); + int (*derive_init) (EVP_PKEY_CTX *ctx); + int (*derive) (EVP_PKEY_CTX *ctx, unsigned char *key, size_t *keylen); + 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); + int (*digestsign) (EVP_MD_CTX *ctx, unsigned char *sig, size_t *siglen, + const unsigned char *tbs, size_t tbslen); + int (*digestverify) (EVP_MD_CTX *ctx, const unsigned char *sig, + size_t siglen, const unsigned char *tbs, + size_t tbslen); + int (*check) (EVP_PKEY *pkey); + int (*public_check) (EVP_PKEY *pkey); + int (*param_check) (EVP_PKEY *pkey); + + int (*digest_custom) (EVP_PKEY_CTX *ctx, EVP_MD_CTX *mctx); +} /* EVP_PKEY_METHOD */ ; + +DEFINE_STACK_OF_CONST(EVP_PKEY_METHOD) + +void evp_pkey_set_cb_translate(BN_GENCB *cb, EVP_PKEY_CTX *ctx); + +extern const EVP_PKEY_METHOD cmac_pkey_meth; +extern const EVP_PKEY_METHOD dh_pkey_meth; +extern const EVP_PKEY_METHOD dhx_pkey_meth; +extern const EVP_PKEY_METHOD dsa_pkey_meth; +extern const EVP_PKEY_METHOD ec_pkey_meth; +extern const EVP_PKEY_METHOD sm2_pkey_meth; +extern const EVP_PKEY_METHOD ecx25519_pkey_meth; +extern const EVP_PKEY_METHOD ecx448_pkey_meth; +extern const EVP_PKEY_METHOD ed25519_pkey_meth; +extern const EVP_PKEY_METHOD ed448_pkey_meth; +extern const EVP_PKEY_METHOD hmac_pkey_meth; +extern const EVP_PKEY_METHOD rsa_pkey_meth; +extern const EVP_PKEY_METHOD rsa_pss_pkey_meth; +extern const EVP_PKEY_METHOD scrypt_pkey_meth; +extern const EVP_PKEY_METHOD tls1_prf_pkey_meth; +extern const EVP_PKEY_METHOD hkdf_pkey_meth; +extern const EVP_PKEY_METHOD poly1305_pkey_meth; +extern const EVP_PKEY_METHOD siphash_pkey_meth; + +struct evp_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); + 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 */ ; + +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 */ ; + +/* Macros to code block cipher wrappers */ + +/* Wrapper functions for each cipher mode */ + +#define EVP_C_DATA(kstruct, ctx) \ + ((kstruct *)EVP_CIPHER_CTX_get_cipher_data(ctx)) + +#define BLOCK_CIPHER_ecb_loop() \ + size_t i, bl; \ + bl = EVP_CIPHER_CTX_cipher(ctx)->block_size; \ + if (inl < bl) return 1;\ + inl -= bl; \ + for (i=0; i <= inl; i+=bl) + +#define BLOCK_CIPHER_func_ecb(cname, cprefix, kstruct, ksched) \ +static int cname##_ecb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, const unsigned char *in, size_t inl) \ +{\ + BLOCK_CIPHER_ecb_loop() \ + cprefix##_ecb_encrypt(in + i, out + i, &EVP_C_DATA(kstruct,ctx)->ksched, EVP_CIPHER_CTX_encrypting(ctx)); \ + return 1;\ +} + +#define EVP_MAXCHUNK ((size_t)1<<(sizeof(long)*8-2)) + +#define BLOCK_CIPHER_func_ofb(cname, cprefix, cbits, kstruct, ksched) \ + static int cname##_ofb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, const unsigned char *in, size_t inl) \ +{\ + while(inl>=EVP_MAXCHUNK) {\ + int num = EVP_CIPHER_CTX_num(ctx);\ + cprefix##_ofb##cbits##_encrypt(in, out, (long)EVP_MAXCHUNK, &EVP_C_DATA(kstruct,ctx)->ksched, EVP_CIPHER_CTX_iv_noconst(ctx), &num); \ + EVP_CIPHER_CTX_set_num(ctx, num);\ + inl-=EVP_MAXCHUNK;\ + in +=EVP_MAXCHUNK;\ + out+=EVP_MAXCHUNK;\ + }\ + if (inl) {\ + int num = EVP_CIPHER_CTX_num(ctx);\ + cprefix##_ofb##cbits##_encrypt(in, out, (long)inl, &EVP_C_DATA(kstruct,ctx)->ksched, EVP_CIPHER_CTX_iv_noconst(ctx), &num); \ + EVP_CIPHER_CTX_set_num(ctx, num);\ + }\ + return 1;\ +} + +#define BLOCK_CIPHER_func_cbc(cname, cprefix, kstruct, ksched) \ +static int cname##_cbc_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, const unsigned char *in, size_t inl) \ +{\ + while(inl>=EVP_MAXCHUNK) \ + {\ + cprefix##_cbc_encrypt(in, out, (long)EVP_MAXCHUNK, &EVP_C_DATA(kstruct,ctx)->ksched, EVP_CIPHER_CTX_iv_noconst(ctx), EVP_CIPHER_CTX_encrypting(ctx));\ + inl-=EVP_MAXCHUNK;\ + in +=EVP_MAXCHUNK;\ + out+=EVP_MAXCHUNK;\ + }\ + if (inl)\ + cprefix##_cbc_encrypt(in, out, (long)inl, &EVP_C_DATA(kstruct,ctx)->ksched, EVP_CIPHER_CTX_iv_noconst(ctx), EVP_CIPHER_CTX_encrypting(ctx));\ + return 1;\ +} + +#define BLOCK_CIPHER_func_cfb(cname, cprefix, cbits, kstruct, ksched) \ +static int cname##_cfb##cbits##_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, const unsigned char *in, size_t inl) \ +{\ + size_t chunk = EVP_MAXCHUNK;\ + if (cbits == 1) chunk >>= 3;\ + if (inl < chunk) chunk = inl;\ + while (inl && inl >= chunk)\ + {\ + int num = EVP_CIPHER_CTX_num(ctx);\ + cprefix##_cfb##cbits##_encrypt(in, out, (long) \ + ((cbits == 1) \ + && !EVP_CIPHER_CTX_test_flags(ctx, EVP_CIPH_FLAG_LENGTH_BITS) \ + ? chunk*8 : chunk), \ + &EVP_C_DATA(kstruct, ctx)->ksched, EVP_CIPHER_CTX_iv_noconst(ctx),\ + &num, EVP_CIPHER_CTX_encrypting(ctx));\ + EVP_CIPHER_CTX_set_num(ctx, num);\ + inl -= chunk;\ + in += chunk;\ + out += chunk;\ + if (inl < chunk) chunk = inl;\ + }\ + return 1;\ +} + +#define BLOCK_CIPHER_all_funcs(cname, cprefix, cbits, kstruct, ksched) \ + BLOCK_CIPHER_func_cbc(cname, cprefix, kstruct, ksched) \ + BLOCK_CIPHER_func_cfb(cname, cprefix, cbits, kstruct, ksched) \ + BLOCK_CIPHER_func_ecb(cname, cprefix, kstruct, ksched) \ + BLOCK_CIPHER_func_ofb(cname, cprefix, cbits, kstruct, ksched) + +#define BLOCK_CIPHER_def1(cname, nmode, mode, MODE, kstruct, nid, block_size, \ + key_len, iv_len, flags, init_key, cleanup, \ + set_asn1, get_asn1, ctrl) \ +static const EVP_CIPHER cname##_##mode = { \ + nid##_##nmode, block_size, key_len, iv_len, \ + flags | EVP_CIPH_##MODE##_MODE, \ + init_key, \ + cname##_##mode##_cipher, \ + cleanup, \ + sizeof(kstruct), \ + set_asn1, get_asn1,\ + ctrl, \ + NULL \ +}; \ +const EVP_CIPHER *EVP_##cname##_##mode(void) { return &cname##_##mode; } + +#define BLOCK_CIPHER_def_cbc(cname, kstruct, nid, block_size, key_len, \ + iv_len, flags, init_key, cleanup, set_asn1, \ + get_asn1, ctrl) \ +BLOCK_CIPHER_def1(cname, cbc, cbc, CBC, kstruct, nid, block_size, key_len, \ + iv_len, flags, init_key, cleanup, set_asn1, get_asn1, ctrl) + +#define BLOCK_CIPHER_def_cfb(cname, kstruct, nid, key_len, \ + iv_len, cbits, flags, init_key, cleanup, \ + set_asn1, get_asn1, ctrl) \ +BLOCK_CIPHER_def1(cname, cfb##cbits, cfb##cbits, CFB, kstruct, nid, 1, \ + key_len, iv_len, flags, init_key, cleanup, set_asn1, \ + get_asn1, ctrl) + +#define BLOCK_CIPHER_def_ofb(cname, kstruct, nid, key_len, \ + iv_len, cbits, flags, init_key, cleanup, \ + set_asn1, get_asn1, ctrl) \ +BLOCK_CIPHER_def1(cname, ofb##cbits, ofb, OFB, kstruct, nid, 1, \ + key_len, iv_len, flags, init_key, cleanup, set_asn1, \ + get_asn1, ctrl) + +#define BLOCK_CIPHER_def_ecb(cname, kstruct, nid, block_size, key_len, \ + flags, init_key, cleanup, set_asn1, \ + get_asn1, ctrl) \ +BLOCK_CIPHER_def1(cname, ecb, ecb, ECB, kstruct, nid, block_size, key_len, \ + 0, flags, init_key, cleanup, set_asn1, get_asn1, ctrl) + +#define BLOCK_CIPHER_defs(cname, kstruct, \ + nid, block_size, key_len, iv_len, cbits, flags, \ + init_key, cleanup, set_asn1, get_asn1, ctrl) \ +BLOCK_CIPHER_def_cbc(cname, kstruct, nid, block_size, key_len, iv_len, flags, \ + init_key, cleanup, set_asn1, get_asn1, ctrl) \ +BLOCK_CIPHER_def_cfb(cname, kstruct, nid, key_len, iv_len, cbits, \ + flags, init_key, cleanup, set_asn1, get_asn1, ctrl) \ +BLOCK_CIPHER_def_ofb(cname, kstruct, nid, key_len, iv_len, cbits, \ + flags, init_key, cleanup, set_asn1, get_asn1, ctrl) \ +BLOCK_CIPHER_def_ecb(cname, kstruct, nid, block_size, key_len, flags, \ + init_key, cleanup, set_asn1, get_asn1, ctrl) + +/*- +#define BLOCK_CIPHER_defs(cname, kstruct, \ + nid, block_size, key_len, iv_len, flags,\ + init_key, cleanup, set_asn1, get_asn1, ctrl)\ +static const EVP_CIPHER cname##_cbc = {\ + nid##_cbc, block_size, key_len, iv_len, \ + flags | EVP_CIPH_CBC_MODE,\ + init_key,\ + cname##_cbc_cipher,\ + cleanup,\ + sizeof(EVP_CIPHER_CTX)-sizeof((((EVP_CIPHER_CTX *)NULL)->c))+\ + sizeof((((EVP_CIPHER_CTX *)NULL)->c.kstruct)),\ + set_asn1, get_asn1,\ + ctrl, \ + NULL \ +};\ +const EVP_CIPHER *EVP_##cname##_cbc(void) { return &cname##_cbc; }\ +static const EVP_CIPHER cname##_cfb = {\ + nid##_cfb64, 1, key_len, iv_len, \ + flags | EVP_CIPH_CFB_MODE,\ + init_key,\ + cname##_cfb_cipher,\ + cleanup,\ + sizeof(EVP_CIPHER_CTX)-sizeof((((EVP_CIPHER_CTX *)NULL)->c))+\ + sizeof((((EVP_CIPHER_CTX *)NULL)->c.kstruct)),\ + set_asn1, get_asn1,\ + ctrl,\ + NULL \ +};\ +const EVP_CIPHER *EVP_##cname##_cfb(void) { return &cname##_cfb; }\ +static const EVP_CIPHER cname##_ofb = {\ + nid##_ofb64, 1, key_len, iv_len, \ + flags | EVP_CIPH_OFB_MODE,\ + init_key,\ + cname##_ofb_cipher,\ + cleanup,\ + sizeof(EVP_CIPHER_CTX)-sizeof((((EVP_CIPHER_CTX *)NULL)->c))+\ + sizeof((((EVP_CIPHER_CTX *)NULL)->c.kstruct)),\ + set_asn1, get_asn1,\ + ctrl,\ + NULL \ +};\ +const EVP_CIPHER *EVP_##cname##_ofb(void) { return &cname##_ofb; }\ +static const EVP_CIPHER cname##_ecb = {\ + nid##_ecb, block_size, key_len, iv_len, \ + flags | EVP_CIPH_ECB_MODE,\ + init_key,\ + cname##_ecb_cipher,\ + cleanup,\ + sizeof(EVP_CIPHER_CTX)-sizeof((((EVP_CIPHER_CTX *)NULL)->c))+\ + sizeof((((EVP_CIPHER_CTX *)NULL)->c.kstruct)),\ + set_asn1, get_asn1,\ + ctrl,\ + NULL \ +};\ +const EVP_CIPHER *EVP_##cname##_ecb(void) { return &cname##_ecb; } +*/ + +#define IMPLEMENT_BLOCK_CIPHER(cname, ksched, cprefix, kstruct, nid, \ + block_size, key_len, iv_len, cbits, \ + flags, init_key, \ + cleanup, set_asn1, get_asn1, ctrl) \ + BLOCK_CIPHER_all_funcs(cname, cprefix, cbits, kstruct, ksched) \ + BLOCK_CIPHER_defs(cname, kstruct, nid, block_size, key_len, iv_len, \ + cbits, flags, init_key, cleanup, set_asn1, \ + get_asn1, ctrl) + +#define IMPLEMENT_CFBR(cipher,cprefix,kstruct,ksched,keysize,cbits,iv_len,fl) \ + BLOCK_CIPHER_func_cfb(cipher##_##keysize,cprefix,cbits,kstruct,ksched) \ + BLOCK_CIPHER_def_cfb(cipher##_##keysize,kstruct, \ + NID_##cipher##_##keysize, keysize/8, iv_len, cbits, \ + (fl)|EVP_CIPH_FLAG_DEFAULT_ASN1, \ + cipher##_init_key, NULL, NULL, NULL, NULL) + + +# ifndef OPENSSL_NO_EC + +#define X25519_KEYLEN 32 +#define X448_KEYLEN 56 +#define ED448_KEYLEN 57 + +#define MAX_KEYLEN ED448_KEYLEN + +typedef struct { + unsigned char pubkey[MAX_KEYLEN]; + unsigned char *privkey; +} ECX_KEY; + +#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; + CRYPTO_REF_COUNT references; + const EVP_PKEY_ASN1_METHOD *ameth; + ENGINE *engine; + ENGINE *pmeth_engine; /* If not NULL public key ENGINE to use */ + union { + void *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 */ + ECX_KEY *ecx; /* X25519, X448, Ed25519, Ed448 */ +# endif + } pkey; + int save_parameters; + STACK_OF(X509_ATTRIBUTE) *attributes; /* [ 0 ] */ + CRYPTO_RWLOCK *lock; +} /* EVP_PKEY */ ; + + +void openssl_add_all_ciphers_int(void); +void openssl_add_all_digests_int(void); +void evp_cleanup_int(void); +void evp_app_cleanup_int(void); + +/* Pulling defines out of C source files */ + +#define EVP_RC4_KEY_SIZE 16 +#ifndef TLS1_1_VERSION +# define TLS1_1_VERSION 0x0302 +#endif + +void evp_encode_ctx_set_flags(EVP_ENCODE_CTX *ctx, unsigned int flags); + +/* EVP_ENCODE_CTX flags */ +/* Don't generate new lines when encoding */ +#define EVP_ENCODE_CTX_NO_NEWLINES 1 +/* Use the SRP base64 alphabet instead of the standard one */ +#define EVP_ENCODE_CTX_USE_SRP_ALPHABET 2 diff --git a/plugin/openssl/include/crypto/lhash.h b/plugin/openssl/include/crypto/lhash.h new file mode 100644 index 000000000..ab060cce7 --- /dev/null +++ b/plugin/openssl/include/crypto/lhash.h @@ -0,0 +1,15 @@ +/* + * Copyright 2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OSSL_CRYPTO_LHASH_H +# define OSSL_CRYPTO_LHASH_H + +unsigned long openssl_lh_strcasehash(const char *); + +#endif diff --git a/plugin/openssl/include/crypto/md32_common.h b/plugin/openssl/include/crypto/md32_common.h new file mode 100644 index 000000000..1124e9c24 --- /dev/null +++ b/plugin/openssl/include/crypto/md32_common.h @@ -0,0 +1,256 @@ +/* + * Copyright 1999-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +/*- + * This is a generic 32 bit "collector" for message digest algorithms. + * Whenever needed it collects input character stream into chunks of + * 32 bit values and invokes a block function that performs actual hash + * calculations. + * + * Porting guide. + * + * Obligatory macros: + * + * DATA_ORDER_IS_BIG_ENDIAN or DATA_ORDER_IS_LITTLE_ENDIAN + * this macro defines byte order of input stream. + * HASH_CBLOCK + * size of a unit chunk HASH_BLOCK operates on. + * HASH_LONG + * has to be at least 32 bit wide. + * HASH_CTX + * context structure that at least contains following + * members: + * typedef struct { + * ... + * HASH_LONG Nl,Nh; + * either { + * HASH_LONG data[HASH_LBLOCK]; + * unsigned char data[HASH_CBLOCK]; + * }; + * unsigned int num; + * ... + * } HASH_CTX; + * data[] vector is expected to be zeroed upon first call to + * HASH_UPDATE. + * HASH_UPDATE + * name of "Update" function, implemented here. + * HASH_TRANSFORM + * name of "Transform" function, implemented here. + * HASH_FINAL + * name of "Final" function, implemented here. + * HASH_BLOCK_DATA_ORDER + * name of "block" function capable of treating *unaligned* input + * message in original (data) byte order, implemented externally. + * HASH_MAKE_STRING + * macro converting context variables to an ASCII hash string. + * + * MD5 example: + * + * #define DATA_ORDER_IS_LITTLE_ENDIAN + * + * #define HASH_LONG MD5_LONG + * #define HASH_CTX MD5_CTX + * #define HASH_CBLOCK MD5_CBLOCK + * #define HASH_UPDATE MD5_Update + * #define HASH_TRANSFORM MD5_Transform + * #define HASH_FINAL MD5_Final + * #define HASH_BLOCK_DATA_ORDER md5_block_data_order + */ + +#include + +#if !defined(DATA_ORDER_IS_BIG_ENDIAN) && !defined(DATA_ORDER_IS_LITTLE_ENDIAN) +# error "DATA_ORDER must be defined!" +#endif + +#ifndef HASH_CBLOCK +# error "HASH_CBLOCK must be defined!" +#endif +#ifndef HASH_LONG +# error "HASH_LONG must be defined!" +#endif +#ifndef HASH_CTX +# error "HASH_CTX must be defined!" +#endif + +#ifndef HASH_UPDATE +# error "HASH_UPDATE must be defined!" +#endif +#ifndef HASH_TRANSFORM +# error "HASH_TRANSFORM must be defined!" +#endif +#ifndef HASH_FINAL +# error "HASH_FINAL must be defined!" +#endif + +#ifndef HASH_BLOCK_DATA_ORDER +# error "HASH_BLOCK_DATA_ORDER must be defined!" +#endif + +#define ROTATE(a,n) (((a)<<(n))|(((a)&0xffffffff)>>(32-(n)))) + +#if defined(DATA_ORDER_IS_BIG_ENDIAN) + +# define HOST_c2l(c,l) (l =(((unsigned long)(*((c)++)))<<24), \ + l|=(((unsigned long)(*((c)++)))<<16), \ + l|=(((unsigned long)(*((c)++)))<< 8), \ + l|=(((unsigned long)(*((c)++))) ) ) +# define HOST_l2c(l,c) (*((c)++)=(unsigned char)(((l)>>24)&0xff), \ + *((c)++)=(unsigned char)(((l)>>16)&0xff), \ + *((c)++)=(unsigned char)(((l)>> 8)&0xff), \ + *((c)++)=(unsigned char)(((l) )&0xff), \ + l) + +#elif defined(DATA_ORDER_IS_LITTLE_ENDIAN) + +# define HOST_c2l(c,l) (l =(((unsigned long)(*((c)++))) ), \ + l|=(((unsigned long)(*((c)++)))<< 8), \ + l|=(((unsigned long)(*((c)++)))<<16), \ + l|=(((unsigned long)(*((c)++)))<<24) ) +# define HOST_l2c(l,c) (*((c)++)=(unsigned char)(((l) )&0xff), \ + *((c)++)=(unsigned char)(((l)>> 8)&0xff), \ + *((c)++)=(unsigned char)(((l)>>16)&0xff), \ + *((c)++)=(unsigned char)(((l)>>24)&0xff), \ + l) + +#endif + +/* + * Time for some action :-) + */ + +int HASH_UPDATE(HASH_CTX *c, const void *data_, size_t len) +{ + const unsigned char *data = data_; + unsigned char *p; + HASH_LONG l; + size_t n; + + if (len == 0) + return 1; + + l = (c->Nl + (((HASH_LONG) len) << 3)) & 0xffffffffUL; + if (l < c->Nl) /* overflow */ + c->Nh++; + c->Nh += (HASH_LONG) (len >> 29); /* might cause compiler warning on + * 16-bit */ + c->Nl = l; + + n = c->num; + if (n != 0) { + p = (unsigned char *)c->data; + + if (len >= HASH_CBLOCK || len + n >= HASH_CBLOCK) { + memcpy(p + n, data, HASH_CBLOCK - n); + HASH_BLOCK_DATA_ORDER(c, p, 1); + n = HASH_CBLOCK - n; + data += n; + len -= n; + c->num = 0; + /* + * We use memset rather than OPENSSL_cleanse() here deliberately. + * Using OPENSSL_cleanse() here could be a performance issue. It + * will get properly cleansed on finalisation so this isn't a + * security problem. + */ + memset(p, 0, HASH_CBLOCK); /* keep it zeroed */ + } else { + memcpy(p + n, data, len); + c->num += (unsigned int)len; + return 1; + } + } + + n = len / HASH_CBLOCK; + if (n > 0) { + HASH_BLOCK_DATA_ORDER(c, data, n); + n *= HASH_CBLOCK; + data += n; + len -= n; + } + + if (len != 0) { + p = (unsigned char *)c->data; + c->num = (unsigned int)len; + memcpy(p, data, len); + } + return 1; +} + +void HASH_TRANSFORM(HASH_CTX *c, const unsigned char *data) +{ + HASH_BLOCK_DATA_ORDER(c, data, 1); +} + +int HASH_FINAL(unsigned char *md, HASH_CTX *c) +{ + unsigned char *p = (unsigned char *)c->data; + size_t n = c->num; + + p[n] = 0x80; /* there is always room for one */ + n++; + + if (n > (HASH_CBLOCK - 8)) { + memset(p + n, 0, HASH_CBLOCK - n); + n = 0; + HASH_BLOCK_DATA_ORDER(c, p, 1); + } + memset(p + n, 0, HASH_CBLOCK - 8 - n); + + p += HASH_CBLOCK - 8; +#if defined(DATA_ORDER_IS_BIG_ENDIAN) + (void)HOST_l2c(c->Nh, p); + (void)HOST_l2c(c->Nl, p); +#elif defined(DATA_ORDER_IS_LITTLE_ENDIAN) + (void)HOST_l2c(c->Nl, p); + (void)HOST_l2c(c->Nh, p); +#endif + p -= HASH_CBLOCK; + HASH_BLOCK_DATA_ORDER(c, p, 1); + c->num = 0; + OPENSSL_cleanse(p, HASH_CBLOCK); + +#ifndef HASH_MAKE_STRING +# error "HASH_MAKE_STRING must be defined!" +#else + HASH_MAKE_STRING(c, md); +#endif + + return 1; +} + +#ifndef MD32_REG_T +# if defined(__alpha) || defined(__sparcv9) || defined(__mips) +# define MD32_REG_T long +/* + * This comment was originally written for MD5, which is why it + * discusses A-D. But it basically applies to all 32-bit digests, + * which is why it was moved to common header file. + * + * In case you wonder why A-D are declared as long and not + * as MD5_LONG. Doing so results in slight performance + * boost on LP64 architectures. The catch is we don't + * really care if 32 MSBs of a 64-bit register get polluted + * with eventual overflows as we *save* only 32 LSBs in + * *either* case. Now declaring 'em long excuses the compiler + * from keeping 32 MSBs zeroed resulting in 13% performance + * improvement under SPARC Solaris7/64 and 5% under AlphaLinux. + * Well, to be honest it should say that this *prevents* + * performance degradation. + */ +# else +/* + * Above is not absolute and there are LP64 compilers that + * generate better code if MD32_REG_T is defined int. The above + * pre-processor condition reflects the circumstances under which + * the conclusion was made and is subject to further extension. + */ +# define MD32_REG_T int +# endif +#endif diff --git a/plugin/openssl/include/crypto/objects.h b/plugin/openssl/include/crypto/objects.h new file mode 100644 index 000000000..76e1b4d98 --- /dev/null +++ b/plugin/openssl/include/crypto/objects.h @@ -0,0 +1,12 @@ +/* + * Copyright 2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include + +void obj_cleanup_int(void); diff --git a/plugin/openssl/include/crypto/poly1305.h b/plugin/openssl/include/crypto/poly1305.h new file mode 100644 index 000000000..5fef239d0 --- /dev/null +++ b/plugin/openssl/include/crypto/poly1305.h @@ -0,0 +1,21 @@ +/* + * Copyright 2015-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include + +#define POLY1305_BLOCK_SIZE 16 +#define POLY1305_DIGEST_SIZE 16 +#define POLY1305_KEY_SIZE 32 + +typedef struct poly1305_context POLY1305; + +size_t Poly1305_ctx_size(void); +void Poly1305_Init(POLY1305 *ctx, const unsigned char key[32]); +void Poly1305_Update(POLY1305 *ctx, const unsigned char *inp, size_t len); +void Poly1305_Final(POLY1305 *ctx, unsigned char mac[16]); diff --git a/plugin/openssl/include/crypto/rand.h b/plugin/openssl/include/crypto/rand.h new file mode 100644 index 000000000..9e02bb0e5 --- /dev/null +++ b/plugin/openssl/include/crypto/rand.h @@ -0,0 +1,144 @@ +/* + * Copyright 2016-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +/* + * Licensed under the OpenSSL licenses, (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * https://www.openssl.org/source/license.html + * or in the file LICENSE in the source distribution. + */ + +#ifndef OSSL_CRYPTO_RAND_H +# define OSSL_CRYPTO_RAND_H + +# include + +# if defined(__APPLE__) && !defined(OPENSSL_NO_APPLE_CRYPTO_RANDOM) +# include +# if (defined(__MAC_OS_X_VERSION_MIN_REQUIRED) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101200) || \ + (defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && __IPHONE_OS_VERSION_MIN_REQUIRED >= 80000) +# define OPENSSL_APPLE_CRYPTO_RANDOM 1 +# include +# include +# endif +# endif + +/* forward declaration */ +typedef struct rand_pool_st RAND_POOL; + +void rand_cleanup_int(void); +void rand_drbg_cleanup_int(void); +void drbg_delete_thread_state(void); + +/* Hardware-based seeding functions. */ +size_t rand_acquire_entropy_from_tsc(RAND_POOL *pool); +size_t rand_acquire_entropy_from_cpu(RAND_POOL *pool); + +/* DRBG entropy callbacks. */ +size_t rand_drbg_get_entropy(RAND_DRBG *drbg, + unsigned char **pout, + int entropy, size_t min_len, size_t max_len, + int prediction_resistance); +void rand_drbg_cleanup_entropy(RAND_DRBG *drbg, + unsigned char *out, size_t outlen); +size_t rand_drbg_get_nonce(RAND_DRBG *drbg, + unsigned char **pout, + int entropy, size_t min_len, size_t max_len); +void rand_drbg_cleanup_nonce(RAND_DRBG *drbg, + unsigned char *out, size_t outlen); + +size_t rand_drbg_get_additional_data(RAND_POOL *pool, unsigned char **pout); + +void rand_drbg_cleanup_additional_data(RAND_POOL *pool, unsigned char *out); + +/* + * RAND_POOL functions + */ +RAND_POOL *rand_pool_new(int entropy_requested, int secure, + size_t min_len, size_t max_len); +RAND_POOL *rand_pool_attach(const unsigned char *buffer, size_t len, + size_t entropy); +void rand_pool_free(RAND_POOL *pool); + +const unsigned char *rand_pool_buffer(RAND_POOL *pool); +unsigned char *rand_pool_detach(RAND_POOL *pool); +void rand_pool_reattach(RAND_POOL *pool, unsigned char *buffer); + +size_t rand_pool_entropy(RAND_POOL *pool); +size_t rand_pool_length(RAND_POOL *pool); + +size_t rand_pool_entropy_available(RAND_POOL *pool); +size_t rand_pool_entropy_needed(RAND_POOL *pool); +/* |entropy_factor| expresses how many bits of data contain 1 bit of entropy */ +size_t rand_pool_bytes_needed(RAND_POOL *pool, unsigned int entropy_factor); +size_t rand_pool_bytes_remaining(RAND_POOL *pool); + +int rand_pool_add(RAND_POOL *pool, + const unsigned char *buffer, size_t len, size_t entropy); +unsigned char *rand_pool_add_begin(RAND_POOL *pool, size_t len); +int rand_pool_add_end(RAND_POOL *pool, size_t len, size_t entropy); + + +/* + * Add random bytes to the pool to acquire requested amount of entropy + * + * This function is platform specific and tries to acquire the requested + * amount of entropy by polling platform specific entropy sources. + * + * If the function succeeds in acquiring at least |entropy_requested| bits + * of entropy, the total entropy count is returned. If it fails, it returns + * an entropy count of 0. + */ +size_t rand_pool_acquire_entropy(RAND_POOL *pool); + +/* + * Add some application specific nonce data + * + * This function is platform specific and adds some application specific + * data to the nonce used for instantiating the drbg. + * + * This data currently consists of the process and thread id, and a high + * resolution timestamp. The data does not include an atomic counter, + * because that is added by the calling function rand_drbg_get_nonce(). + * + * Returns 1 on success and 0 on failure. + */ +int rand_pool_add_nonce_data(RAND_POOL *pool); + + +/* + * Add some platform specific additional data + * + * This function is platform specific and adds some random noise to the + * additional data used for generating random bytes and for reseeding + * the drbg. + * + * Returns 1 on success and 0 on failure. + */ +int rand_pool_add_additional_data(RAND_POOL *pool); + +/* + * Initialise the random pool reseeding sources. + * + * Returns 1 on success and 0 on failure. + */ +int rand_pool_init(void); + +/* + * Finalise the random pool reseeding sources. + */ +void rand_pool_cleanup(void); + +/* + * Control the random pool use of open file descriptors. + */ +void rand_pool_keep_random_devices_open(int keep); + +#endif diff --git a/plugin/openssl/include/crypto/sha.h b/plugin/openssl/include/crypto/sha.h new file mode 100644 index 000000000..6d15edb9e --- /dev/null +++ b/plugin/openssl/include/crypto/sha.h @@ -0,0 +1,19 @@ +/* + * Copyright 2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OSSL_CRYPTO_SHA_H +# define OSSL_CRYPTO_SHA_H + +# include + +int sha512_224_init(SHA512_CTX *); +int sha512_256_init(SHA512_CTX *); + +#endif diff --git a/plugin/openssl/include/crypto/siphash.h b/plugin/openssl/include/crypto/siphash.h new file mode 100644 index 000000000..9573680f0 --- /dev/null +++ b/plugin/openssl/include/crypto/siphash.h @@ -0,0 +1,25 @@ +/* + * Copyright 2017-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include + +#define SIPHASH_BLOCK_SIZE 8 +#define SIPHASH_KEY_SIZE 16 +#define SIPHASH_MIN_DIGEST_SIZE 8 +#define SIPHASH_MAX_DIGEST_SIZE 16 + +typedef struct siphash_st SIPHASH; + +size_t SipHash_ctx_size(void); +size_t SipHash_hash_size(SIPHASH *ctx); +int SipHash_set_hash_size(SIPHASH *ctx, size_t hash_size); +int SipHash_Init(SIPHASH *ctx, const unsigned char *k, + int crounds, int drounds); +void SipHash_Update(SIPHASH *ctx, const unsigned char *in, size_t inlen); +int SipHash_Final(SIPHASH *ctx, unsigned char *out, size_t outlen); diff --git a/plugin/openssl/include/crypto/sm2.h b/plugin/openssl/include/crypto/sm2.h new file mode 100644 index 000000000..a7f5548c0 --- /dev/null +++ b/plugin/openssl/include/crypto/sm2.h @@ -0,0 +1,77 @@ +/* + * Copyright 2017-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2017 Ribose Inc. All Rights Reserved. + * Ported from Ribose contributions from Botan. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OSSL_CRYPTO_SM2_H +# define OSSL_CRYPTO_SM2_H +# include + +# ifndef OPENSSL_NO_SM2 + +# include + +/* The default user id as specified in GM/T 0009-2012 */ +# define SM2_DEFAULT_USERID "1234567812345678" + +int sm2_compute_z_digest(uint8_t *out, + const EVP_MD *digest, + const uint8_t *id, + const size_t id_len, + const EC_KEY *key); + +/* + * SM2 signature operation. Computes Z and then signs H(Z || msg) using SM2 + */ +ECDSA_SIG *sm2_do_sign(const EC_KEY *key, + const EVP_MD *digest, + const uint8_t *id, + const size_t id_len, + const uint8_t *msg, size_t msg_len); + +int sm2_do_verify(const EC_KEY *key, + const EVP_MD *digest, + const ECDSA_SIG *signature, + const uint8_t *id, + const size_t id_len, + const uint8_t *msg, size_t msg_len); + +/* + * SM2 signature generation. + */ +int sm2_sign(const unsigned char *dgst, int dgstlen, + unsigned char *sig, unsigned int *siglen, EC_KEY *eckey); + +/* + * SM2 signature verification. + */ +int sm2_verify(const unsigned char *dgst, int dgstlen, + const unsigned char *sig, int siglen, EC_KEY *eckey); + +/* + * SM2 encryption + */ +int sm2_ciphertext_size(const EC_KEY *key, const EVP_MD *digest, size_t msg_len, + size_t *ct_size); + +int sm2_plaintext_size(const unsigned char *ct, size_t ct_size, size_t *pt_size); + +int sm2_encrypt(const EC_KEY *key, + const EVP_MD *digest, + const uint8_t *msg, + size_t msg_len, + uint8_t *ciphertext_buf, size_t *ciphertext_len); + +int sm2_decrypt(const EC_KEY *key, + const EVP_MD *digest, + const uint8_t *ciphertext, + size_t ciphertext_len, uint8_t *ptext_buf, size_t *ptext_len); + +# endif /* OPENSSL_NO_SM2 */ +#endif diff --git a/plugin/openssl/include/crypto/sm2err.h b/plugin/openssl/include/crypto/sm2err.h new file mode 100644 index 000000000..d1c0ee259 --- /dev/null +++ b/plugin/openssl/include/crypto/sm2err.h @@ -0,0 +1,65 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OSSL_CRYPTO_SM2ERR_H +# define OSSL_CRYPTO_SM2ERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# include + +# ifndef OPENSSL_NO_SM2 + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_SM2_strings(void); + +/* + * SM2 function codes. + */ +# define SM2_F_PKEY_SM2_COPY 115 +# define SM2_F_PKEY_SM2_CTRL 109 +# define SM2_F_PKEY_SM2_CTRL_STR 110 +# define SM2_F_PKEY_SM2_DIGEST_CUSTOM 114 +# define SM2_F_PKEY_SM2_INIT 111 +# define SM2_F_PKEY_SM2_SIGN 112 +# define SM2_F_SM2_COMPUTE_MSG_HASH 100 +# define SM2_F_SM2_COMPUTE_USERID_DIGEST 101 +# define SM2_F_SM2_COMPUTE_Z_DIGEST 113 +# define SM2_F_SM2_DECRYPT 102 +# define SM2_F_SM2_ENCRYPT 103 +# define SM2_F_SM2_PLAINTEXT_SIZE 104 +# define SM2_F_SM2_SIGN 105 +# define SM2_F_SM2_SIG_GEN 106 +# define SM2_F_SM2_SIG_VERIFY 107 +# define SM2_F_SM2_VERIFY 108 + +/* + * SM2 reason codes. + */ +# define SM2_R_ASN1_ERROR 100 +# define SM2_R_BAD_SIGNATURE 101 +# define SM2_R_BUFFER_TOO_SMALL 107 +# define SM2_R_DIST_ID_TOO_LARGE 110 +# define SM2_R_ID_NOT_SET 112 +# define SM2_R_ID_TOO_LARGE 111 +# define SM2_R_INVALID_CURVE 108 +# define SM2_R_INVALID_DIGEST 102 +# define SM2_R_INVALID_DIGEST_TYPE 103 +# define SM2_R_INVALID_ENCODING 104 +# define SM2_R_INVALID_FIELD 105 +# define SM2_R_NO_PARAMETERS_SET 109 +# define SM2_R_USER_ID_TOO_LARGE 106 + +# endif +#endif diff --git a/plugin/openssl/include/crypto/sm3.h b/plugin/openssl/include/crypto/sm3.h new file mode 100644 index 000000000..97e746033 --- /dev/null +++ b/plugin/openssl/include/crypto/sm3.h @@ -0,0 +1,39 @@ +/* + * Copyright 2017 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2017 Ribose Inc. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OSSL_CRYPTO_SM3_H +# define OSSL_CRYPTO_SM3_H + +# include + +# ifdef OPENSSL_NO_SM3 +# error SM3 is disabled. +# endif + +# define SM3_DIGEST_LENGTH 32 +# define SM3_WORD unsigned int + +# define SM3_CBLOCK 64 +# define SM3_LBLOCK (SM3_CBLOCK/4) + +typedef struct SM3state_st { + SM3_WORD A, B, C, D, E, F, G, H; + SM3_WORD Nl, Nh; + SM3_WORD data[SM3_LBLOCK]; + unsigned int num; +} SM3_CTX; + +int sm3_init(SM3_CTX *c); +int sm3_update(SM3_CTX *c, const void *data, size_t len); +int sm3_final(unsigned char *md, SM3_CTX *c); + +void sm3_block_data_order(SM3_CTX *c, const void *p, size_t num); + +#endif diff --git a/plugin/openssl/include/crypto/sm4.h b/plugin/openssl/include/crypto/sm4.h new file mode 100644 index 000000000..abe28f385 --- /dev/null +++ b/plugin/openssl/include/crypto/sm4.h @@ -0,0 +1,37 @@ +/* + * Copyright 2017 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2017 Ribose Inc. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OSSL_CRYPTO_SM4_H +# define OSSL_CRYPTO_SM4_H + +# include +# include + +# ifdef OPENSSL_NO_SM4 +# error SM4 is disabled. +# endif + +# define SM4_ENCRYPT 1 +# define SM4_DECRYPT 0 + +# define SM4_BLOCK_SIZE 16 +# define SM4_KEY_SCHEDULE 32 + +typedef struct SM4_KEY_st { + uint32_t rk[SM4_KEY_SCHEDULE]; +} SM4_KEY; + +int SM4_set_key(const uint8_t *key, SM4_KEY *ks); + +void SM4_encrypt(const uint8_t *in, uint8_t *out, const SM4_KEY *ks); + +void SM4_decrypt(const uint8_t *in, uint8_t *out, const SM4_KEY *ks); + +#endif diff --git a/plugin/openssl/include/crypto/store.h b/plugin/openssl/include/crypto/store.h new file mode 100644 index 000000000..428d3c60e --- /dev/null +++ b/plugin/openssl/include/crypto/store.h @@ -0,0 +1,28 @@ +/* + * Copyright 2016-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OSSL_CRYPTO_STORE_H +# define OSSL_CRYPTO_STORE_H + +# include +# include +# include + +/* + * Two functions to read PEM data off an already opened BIO. To be used + * instead of OSSLSTORE_open() and OSSLSTORE_close(). Everything is done + * as usual with OSSLSTORE_load() and OSSLSTORE_eof(). + */ +OSSL_STORE_CTX *ossl_store_attach_pem_bio(BIO *bp, const UI_METHOD *ui_method, + void *ui_data); +int ossl_store_detach_pem_bio(OSSL_STORE_CTX *ctx); + +void ossl_store_cleanup_int(void); + +#endif diff --git a/plugin/openssl/include/crypto/x509.h b/plugin/openssl/include/crypto/x509.h new file mode 100644 index 000000000..243ea74f6 --- /dev/null +++ b/plugin/openssl/include/crypto/x509.h @@ -0,0 +1,291 @@ +/* + * Copyright 2015-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "internal/refcount.h" +#include +#include + +/* Internal X509 structures and functions: not for application use */ + +/* Note: unless otherwise stated a field pointer is mandatory and should + * never be set to NULL: the ASN.1 code and accessors rely on mandatory + * fields never being NULL. + */ + +/* + * name entry structure, equivalent to AttributeTypeAndValue defined + * in RFC5280 et al. + */ +struct X509_name_entry_st { + ASN1_OBJECT *object; /* AttributeType */ + ASN1_STRING *value; /* AttributeValue */ + int set; /* index of RDNSequence for this entry */ + int size; /* temp variable */ +}; + +/* Name from RFC 5280. */ +struct X509_name_st { + STACK_OF(X509_NAME_ENTRY) *entries; /* DN components */ + int modified; /* true if 'bytes' needs to be built */ + BUF_MEM *bytes; /* cached encoding: cannot be NULL */ + /* canonical encoding used for rapid Name comparison */ + unsigned char *canon_enc; + int canon_enclen; +} /* X509_NAME */ ; + +/* Signature info structure */ + +struct x509_sig_info_st { + /* NID of message digest */ + int mdnid; + /* NID of public key algorithm */ + int pknid; + /* Security bits */ + int secbits; + /* Various flags */ + uint32_t flags; +}; + +/* PKCS#10 certificate request */ + +struct X509_req_info_st { + ASN1_ENCODING enc; /* cached encoding of signed part */ + ASN1_INTEGER *version; /* version, defaults to v1(0) so can be NULL */ + X509_NAME *subject; /* certificate request DN */ + X509_PUBKEY *pubkey; /* public key of request */ + /* + * Zero or more attributes. + * NB: although attributes is a mandatory field some broken + * encodings omit it so this may be NULL in that case. + */ + STACK_OF(X509_ATTRIBUTE) *attributes; +}; + +struct X509_req_st { + X509_REQ_INFO req_info; /* signed certificate request data */ + X509_ALGOR sig_alg; /* signature algorithm */ + ASN1_BIT_STRING *signature; /* signature */ + CRYPTO_REF_COUNT references; + CRYPTO_RWLOCK *lock; +}; + +struct X509_crl_info_st { + ASN1_INTEGER *version; /* version: defaults to v1(0) so may be NULL */ + X509_ALGOR sig_alg; /* signature algorithm */ + X509_NAME *issuer; /* CRL issuer name */ + ASN1_TIME *lastUpdate; /* lastUpdate field */ + ASN1_TIME *nextUpdate; /* nextUpdate field: optional */ + STACK_OF(X509_REVOKED) *revoked; /* revoked entries: optional */ + STACK_OF(X509_EXTENSION) *extensions; /* extensions: optional */ + ASN1_ENCODING enc; /* encoding of signed portion of CRL */ +}; + +struct X509_crl_st { + X509_CRL_INFO crl; /* signed CRL data */ + X509_ALGOR sig_alg; /* CRL signature algorithm */ + ASN1_BIT_STRING signature; /* CRL signature */ + CRYPTO_REF_COUNT references; + int flags; + /* + * Cached copies of decoded extension values, since extensions + * are optional any of these can be NULL. + */ + 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; + STACK_OF(GENERAL_NAMES) *issuers; + /* hash of CRL */ + unsigned char sha1_hash[SHA_DIGEST_LENGTH]; + /* alternative method to handle this CRL */ + const X509_CRL_METHOD *meth; + void *meth_data; + CRYPTO_RWLOCK *lock; +}; + +struct x509_revoked_st { + ASN1_INTEGER serialNumber; /* revoked entry serial number */ + ASN1_TIME *revocationDate; /* revocation date */ + STACK_OF(X509_EXTENSION) *extensions; /* CRL entry extensions: optional */ + /* decoded value of CRLissuer extension: set if indirect CRL */ + STACK_OF(GENERAL_NAME) *issuer; + /* revocation reason: set to CRL_REASON_NONE if reason extension absent */ + int reason; + /* + * CRL entries are reordered for faster lookup of serial numbers. This + * field contains the original load sequence for this entry. + */ + int sequence; +}; + +/* + * 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. OpenSSL specific structure not defined + * in any RFC. + */ + +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 */ +}; + +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; +}; + +struct x509_st { + X509_CINF cert_info; + X509_ALGOR sig_alg; + ASN1_BIT_STRING signature; + X509_SIG_INFO siginf; + CRYPTO_REF_COUNT references; + CRYPTO_EX_DATA ex_data; + /* These contain copies of various extension values */ + long ex_pathlen; + long ex_pcpathlen; + uint32_t ex_flags; + uint32_t ex_kusage; + uint32_t ex_xkusage; + uint32_t 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 + unsigned char sha1_hash[SHA_DIGEST_LENGTH]; + X509_CERT_AUX *aux; + CRYPTO_RWLOCK *lock; + volatile int ex_cached; +} /* X509 */ ; + +/* + * 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; + /* 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); + /* Check policy status of the chain */ + 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; + /* number of untrusted certs */ + int num_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; + SSL_DANE *dane; + /* signed via bare TA public key, rather than CA certificate */ + int bare_ta_signed; +}; + +/* PKCS#8 private key info structure */ + +struct pkcs8_priv_key_info_st { + ASN1_INTEGER *version; + X509_ALGOR *pkeyalg; + ASN1_OCTET_STRING *pkey; + STACK_OF(X509_ATTRIBUTE) *attributes; +}; + +struct X509_sig_st { + X509_ALGOR *algor; + ASN1_OCTET_STRING *digest; +}; + +struct x509_object_st { + /* one of the above types */ + X509_LOOKUP_TYPE type; + union { + char *ptr; + X509 *x509; + X509_CRL *crl; + EVP_PKEY *pkey; + } data; +}; + +int a2i_ipadd(unsigned char *ipout, const char *ipasc); +int x509_set1_time(ASN1_TIME **ptm, const ASN1_TIME *tm); + +void x509_init_sig_info(X509 *x); + +int x509v3_add_len_value_uchar(const char *name, const unsigned char *value, + size_t vallen, STACK_OF(CONF_VALUE) **extlist); diff --git a/plugin/openssl/include/internal/__DECC_INCLUDE_EPILOGUE.H b/plugin/openssl/include/internal/__DECC_INCLUDE_EPILOGUE.H new file mode 100644 index 000000000..c350018ad --- /dev/null +++ b/plugin/openssl/include/internal/__DECC_INCLUDE_EPILOGUE.H @@ -0,0 +1,16 @@ +/* + * Copyright 2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +/* + * This file is only used by HP C on VMS, and is included automatically + * after each header file from this directory + */ + +/* restore state. Must correspond to the save in __decc_include_prologue.h */ +#pragma names restore diff --git a/plugin/openssl/include/internal/__DECC_INCLUDE_PROLOGUE.H b/plugin/openssl/include/internal/__DECC_INCLUDE_PROLOGUE.H new file mode 100644 index 000000000..9a9c777f9 --- /dev/null +++ b/plugin/openssl/include/internal/__DECC_INCLUDE_PROLOGUE.H @@ -0,0 +1,20 @@ +/* + * Copyright 2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +/* + * This file is only used by HP C on VMS, and is included automatically + * after each header file from this directory + */ + +/* save state */ +#pragma names save +/* have the compiler shorten symbols larger than 31 chars to 23 chars + * followed by a 8 hex char CRC + */ +#pragma names as_is,shortened diff --git a/plugin/openssl/include/internal/bio.h b/plugin/openssl/include/internal/bio.h new file mode 100644 index 000000000..c343b2762 --- /dev/null +++ b/plugin/openssl/include/internal/bio.h @@ -0,0 +1,33 @@ +/* + * Copyright 2016-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include + +struct bio_method_st { + int type; + char *name; + int (*bwrite) (BIO *, const char *, size_t, size_t *); + int (*bwrite_old) (BIO *, const char *, int); + int (*bread) (BIO *, char *, size_t, size_t *); + int (*bread_old) (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 *); +}; + +void bio_free_ex_data(BIO *bio); +void bio_cleanup(void); + + +/* Old style to new style BIO_METHOD conversion functions */ +int bwrite_conv(BIO *bio, const char *data, size_t datal, size_t *written); +int bread_conv(BIO *bio, char *data, size_t datal, size_t *read); diff --git a/plugin/openssl/include/internal/comp.h b/plugin/openssl/include/internal/comp.h new file mode 100644 index 000000000..ac6e38b47 --- /dev/null +++ b/plugin/openssl/include/internal/comp.h @@ -0,0 +1,12 @@ +/* + * Copyright 2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include + +void comp_zlib_cleanup_int(void); diff --git a/plugin/openssl/include/internal/conf.h b/plugin/openssl/include/internal/conf.h new file mode 100644 index 000000000..163fea8de --- /dev/null +++ b/plugin/openssl/include/internal/conf.h @@ -0,0 +1,30 @@ +/* + * Copyright 2016-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OSSL_INTERNAL_CONF_H +# define OSSL_INTERNAL_CONF_H + +#include + +#define DEFAULT_CONF_MFLAGS \ + (CONF_MFLAGS_DEFAULT_SECTION | \ + CONF_MFLAGS_IGNORE_MISSING_FILE | \ + CONF_MFLAGS_IGNORE_RETURN_CODES) + +struct ossl_init_settings_st { + char *filename; + char *appname; + unsigned long flags; +}; + +int openssl_config_int(const OPENSSL_INIT_SETTINGS *); +void openssl_no_config_int(void); +void conf_modules_free_int(void); + +#endif diff --git a/plugin/openssl/include/internal/constant_time.h b/plugin/openssl/include/internal/constant_time.h new file mode 100644 index 000000000..6600a1d72 --- /dev/null +++ b/plugin/openssl/include/internal/constant_time.h @@ -0,0 +1,387 @@ +/* + * Copyright 2014-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OSSL_INTERNAL_CONSTANT_TIME_H +# define OSSL_INTERNAL_CONSTANT_TIME_H + +# include +# include +# include /* For 'ossl_inline' */ + +/*- + * The boolean methods return a bitmask of all ones (0xff...f) for true + * and 0 for false. This is useful for choosing a value based on the result + * of a conditional in constant time. For example, + * if (a < b) { + * c = a; + * } else { + * c = b; + * } + * can be written as + * unsigned int lt = constant_time_lt(a, b); + * c = constant_time_select(lt, a, b); + */ + +/* Returns the given value with the MSB copied to all the other bits. */ +static ossl_inline unsigned int constant_time_msb(unsigned int a); +/* Convenience method for uint32_t. */ +static ossl_inline uint32_t constant_time_msb_32(uint32_t a); +/* Convenience method for uint64_t. */ +static ossl_inline uint64_t constant_time_msb_64(uint64_t a); + +/* Returns 0xff..f if a < b and 0 otherwise. */ +static ossl_inline unsigned int constant_time_lt(unsigned int a, + unsigned int b); +/* Convenience method for getting an 8-bit mask. */ +static ossl_inline unsigned char constant_time_lt_8(unsigned int a, + unsigned int b); +/* Convenience method for uint64_t. */ +static ossl_inline uint64_t constant_time_lt_64(uint64_t a, uint64_t b); + +/* Returns 0xff..f if a >= b and 0 otherwise. */ +static ossl_inline unsigned int constant_time_ge(unsigned int a, + unsigned int b); +/* Convenience method for getting an 8-bit mask. */ +static ossl_inline unsigned char constant_time_ge_8(unsigned int a, + unsigned int b); + +/* Returns 0xff..f if a == 0 and 0 otherwise. */ +static ossl_inline unsigned int constant_time_is_zero(unsigned int a); +/* Convenience method for getting an 8-bit mask. */ +static ossl_inline unsigned char constant_time_is_zero_8(unsigned int a); +/* Convenience method for getting a 32-bit mask. */ +static ossl_inline uint32_t constant_time_is_zero_32(uint32_t a); + +/* Returns 0xff..f if a == b and 0 otherwise. */ +static ossl_inline unsigned int constant_time_eq(unsigned int a, + unsigned int b); +/* Convenience method for getting an 8-bit mask. */ +static ossl_inline unsigned char constant_time_eq_8(unsigned int a, + unsigned int b); +/* Signed integers. */ +static ossl_inline unsigned int constant_time_eq_int(int a, int b); +/* Convenience method for getting an 8-bit mask. */ +static ossl_inline unsigned char constant_time_eq_int_8(int a, int b); + +/*- + * Returns (mask & a) | (~mask & b). + * + * When |mask| is all 1s or all 0s (as returned by the methods above), + * the select methods return either |a| (if |mask| is nonzero) or |b| + * (if |mask| is zero). + */ +static ossl_inline unsigned int constant_time_select(unsigned int mask, + unsigned int a, + unsigned int b); +/* Convenience method for unsigned chars. */ +static ossl_inline unsigned char constant_time_select_8(unsigned char mask, + unsigned char a, + unsigned char b); + +/* Convenience method for uint32_t. */ +static ossl_inline uint32_t constant_time_select_32(uint32_t mask, uint32_t a, + uint32_t b); + +/* Convenience method for uint64_t. */ +static ossl_inline uint64_t constant_time_select_64(uint64_t mask, uint64_t a, + uint64_t b); +/* Convenience method for signed integers. */ +static ossl_inline int constant_time_select_int(unsigned int mask, int a, + int b); + + +static ossl_inline unsigned int constant_time_msb(unsigned int a) +{ + return 0 - (a >> (sizeof(a) * 8 - 1)); +} + + +static ossl_inline uint32_t constant_time_msb_32(uint32_t a) +{ + return 0 - (a >> 31); +} + +static ossl_inline uint64_t constant_time_msb_64(uint64_t a) +{ + return 0 - (a >> 63); +} + +static ossl_inline size_t constant_time_msb_s(size_t a) +{ + return 0 - (a >> (sizeof(a) * 8 - 1)); +} + +static ossl_inline unsigned int constant_time_lt(unsigned int a, + unsigned int b) +{ + return constant_time_msb(a ^ ((a ^ b) | ((a - b) ^ b))); +} + +static ossl_inline size_t constant_time_lt_s(size_t a, size_t b) +{ + return constant_time_msb_s(a ^ ((a ^ b) | ((a - b) ^ b))); +} + +static ossl_inline unsigned char constant_time_lt_8(unsigned int a, + unsigned int b) +{ + return (unsigned char)constant_time_lt(a, b); +} + +static ossl_inline uint64_t constant_time_lt_64(uint64_t a, uint64_t b) +{ + return constant_time_msb_64(a ^ ((a ^ b) | ((a - b) ^ b))); +} + +static ossl_inline unsigned int constant_time_ge(unsigned int a, + unsigned int b) +{ + return ~constant_time_lt(a, b); +} + +static ossl_inline size_t constant_time_ge_s(size_t a, size_t b) +{ + return ~constant_time_lt_s(a, b); +} + +static ossl_inline unsigned char constant_time_ge_8(unsigned int a, + unsigned int b) +{ + return (unsigned char)constant_time_ge(a, b); +} + +static ossl_inline unsigned char constant_time_ge_8_s(size_t a, size_t b) +{ + return (unsigned char)constant_time_ge_s(a, b); +} + +static ossl_inline unsigned int constant_time_is_zero(unsigned int a) +{ + return constant_time_msb(~a & (a - 1)); +} + +static ossl_inline size_t constant_time_is_zero_s(size_t a) +{ + return constant_time_msb_s(~a & (a - 1)); +} + +static ossl_inline unsigned char constant_time_is_zero_8(unsigned int a) +{ + return (unsigned char)constant_time_is_zero(a); +} + +static ossl_inline uint32_t constant_time_is_zero_32(uint32_t a) +{ + return constant_time_msb_32(~a & (a - 1)); +} + +static ossl_inline unsigned int constant_time_eq(unsigned int a, + unsigned int b) +{ + return constant_time_is_zero(a ^ b); +} + +static ossl_inline size_t constant_time_eq_s(size_t a, size_t b) +{ + return constant_time_is_zero_s(a ^ b); +} + +static ossl_inline unsigned char constant_time_eq_8(unsigned int a, + unsigned int b) +{ + return (unsigned char)constant_time_eq(a, b); +} + +static ossl_inline unsigned char constant_time_eq_8_s(size_t a, size_t b) +{ + return (unsigned char)constant_time_eq_s(a, b); +} + +static ossl_inline unsigned int constant_time_eq_int(int a, int b) +{ + return constant_time_eq((unsigned)(a), (unsigned)(b)); +} + +static ossl_inline unsigned char constant_time_eq_int_8(int a, int b) +{ + return constant_time_eq_8((unsigned)(a), (unsigned)(b)); +} + +/* + * Returns the value unmodified, but avoids optimizations. + * The barriers prevent the compiler from narrowing down the + * possible value range of the mask and ~mask in the select + * statements, which avoids the recognition of the select + * and turning it into a conditional load or branch. + */ +static ossl_inline unsigned int value_barrier(unsigned int a) +{ +#if !defined(OPENSSL_NO_ASM) && defined(__GNUC__) + unsigned int r; + __asm__("" : "=r"(r) : "0"(a)); +#else + volatile unsigned int r = a; +#endif + return r; +} + +/* Convenience method for uint32_t. */ +static ossl_inline uint32_t value_barrier_32(uint32_t a) +{ +#if !defined(OPENSSL_NO_ASM) && defined(__GNUC__) + uint32_t r; + __asm__("" : "=r"(r) : "0"(a)); +#else + volatile uint32_t r = a; +#endif + return r; +} + +/* Convenience method for uint64_t. */ +static ossl_inline uint64_t value_barrier_64(uint64_t a) +{ +#if !defined(OPENSSL_NO_ASM) && defined(__GNUC__) + uint64_t r; + __asm__("" : "=r"(r) : "0"(a)); +#else + volatile uint64_t r = a; +#endif + return r; +} + +/* Convenience method for size_t. */ +static ossl_inline size_t value_barrier_s(size_t a) +{ +#if !defined(OPENSSL_NO_ASM) && defined(__GNUC__) + size_t r; + __asm__("" : "=r"(r) : "0"(a)); +#else + volatile size_t r = a; +#endif + return r; +} + +static ossl_inline unsigned int constant_time_select(unsigned int mask, + unsigned int a, + unsigned int b) +{ + return (value_barrier(mask) & a) | (value_barrier(~mask) & b); +} + +static ossl_inline size_t constant_time_select_s(size_t mask, + size_t a, + size_t b) +{ + return (value_barrier_s(mask) & a) | (value_barrier_s(~mask) & b); +} + +static ossl_inline unsigned char constant_time_select_8(unsigned char mask, + unsigned char a, + unsigned char b) +{ + return (unsigned char)constant_time_select(mask, a, b); +} + +static ossl_inline int constant_time_select_int(unsigned int mask, int a, + int b) +{ + return (int)constant_time_select(mask, (unsigned)(a), (unsigned)(b)); +} + +static ossl_inline int constant_time_select_int_s(size_t mask, int a, int b) +{ + return (int)constant_time_select((unsigned)mask, (unsigned)(a), + (unsigned)(b)); +} + +static ossl_inline uint32_t constant_time_select_32(uint32_t mask, uint32_t a, + uint32_t b) +{ + return (value_barrier_32(mask) & a) | (value_barrier_32(~mask) & b); +} + +static ossl_inline uint64_t constant_time_select_64(uint64_t mask, uint64_t a, + uint64_t b) +{ + return (value_barrier_64(mask) & a) | (value_barrier_64(~mask) & b); +} + +/* + * mask must be 0xFFFFFFFF or 0x00000000. + * + * if (mask) { + * uint32_t tmp = *a; + * + * *a = *b; + * *b = tmp; + * } + */ +static ossl_inline void constant_time_cond_swap_32(uint32_t mask, uint32_t *a, + uint32_t *b) +{ + uint32_t xor = *a ^ *b; + + xor &= mask; + *a ^= xor; + *b ^= xor; +} + +/* + * mask must be 0xFFFFFFFF or 0x00000000. + * + * if (mask) { + * uint64_t tmp = *a; + * + * *a = *b; + * *b = tmp; + * } + */ +static ossl_inline void constant_time_cond_swap_64(uint64_t mask, uint64_t *a, + uint64_t *b) +{ + uint64_t xor = *a ^ *b; + + xor &= mask; + *a ^= xor; + *b ^= xor; +} + +/* + * table is a two dimensional array of bytes. Each row has rowsize elements. + * Copies row number idx into out. rowsize and numrows are not considered + * private. + */ +static ossl_inline void constant_time_lookup(void *out, + const void *table, + size_t rowsize, + size_t numrows, + size_t idx) +{ + size_t i, j; + const unsigned char *tablec = (const unsigned char *)table; + unsigned char *outc = (unsigned char *)out; + unsigned char mask; + + memset(out, 0, rowsize); + + /* Note idx may underflow - but that is well defined */ + for (i = 0; i < numrows; i++, idx--) { + mask = (unsigned char)constant_time_is_zero_s(idx); + for (j = 0; j < rowsize; j++) + *(outc + j) |= constant_time_select_8(mask, *(tablec++), 0); + } +} + +/* + * Expected usage pattern is to unconditionally set error and then + * wipe it if there was no actual error. |clear| is 1 or 0. + */ +void err_clear_last_constant_time(int clear); + +#endif /* OSSL_INTERNAL_CONSTANT_TIME_H */ diff --git a/plugin/openssl/include/internal/cryptlib.h b/plugin/openssl/include/internal/cryptlib.h new file mode 100644 index 000000000..6e7291ae4 --- /dev/null +++ b/plugin/openssl/include/internal/cryptlib.h @@ -0,0 +1,99 @@ +/* + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OSSL_INTERNAL_CRYPTLIB_H +# define OSSL_INTERNAL_CRYPTLIB_H + +# include +# include + +# ifdef OPENSSL_USE_APPLINK +# undef BIO_FLAGS_UPLINK +# define BIO_FLAGS_UPLINK 0x8000 +# include "ms/uplink.h" +# endif + +# include +# include +# include +# include +# include "internal/nelem.h" + +#ifdef NDEBUG +# define ossl_assert(x) ((x) != 0) +#else +__owur static ossl_inline int ossl_assert_int(int expr, const char *exprstr, + const char *file, int line) +{ + if (!expr) + OPENSSL_die(exprstr, file, line); + + return expr; +} + +# define ossl_assert(x) ossl_assert_int((x) != 0, "Assertion failed: "#x, \ + __FILE__, __LINE__) + +#endif + +typedef struct ex_callback_st EX_CALLBACK; + +DEFINE_STACK_OF(EX_CALLBACK) + +typedef struct app_mem_info_st APP_INFO; + +typedef struct mem_st MEM; +DEFINE_LHASH_OF(MEM); + +# define OPENSSL_CONF "openssl.cnf" + +# ifndef OPENSSL_SYS_VMS +# define X509_CERT_AREA OPENSSLDIR +# define X509_CERT_DIR OPENSSLDIR "/certs" +# define X509_CERT_FILE OPENSSLDIR "/cert.pem" +# define X509_PRIVATE_DIR OPENSSLDIR "/private" +# define CTLOG_FILE OPENSSLDIR "/ct_log_list.cnf" +# else +# define X509_CERT_AREA "OSSL$DATAROOT:[000000]" +# define X509_CERT_DIR "OSSL$DATAROOT:[CERTS]" +# define X509_CERT_FILE "OSSL$DATAROOT:[000000]cert.pem" +# define X509_PRIVATE_DIR "OSSL$DATAROOT:[PRIVATE]" +# define CTLOG_FILE "OSSL$DATAROOT:[000000]ct_log_list.cnf" +# endif + +# define X509_CERT_DIR_EVP "SSL_CERT_DIR" +# define X509_CERT_FILE_EVP "SSL_CERT_FILE" +# define CTLOG_FILE_EVP "CTLOG_FILE" + +/* size of string representations */ +# define DECIMAL_SIZE(type) ((sizeof(type)*8+2)/3+1) +# define HEX_SIZE(type) (sizeof(type)*2) + +void OPENSSL_cpuid_setup(void); +extern unsigned int OPENSSL_ia32cap_P[]; +void OPENSSL_showfatal(const char *fmta, ...); +void crypto_cleanup_all_ex_data_int(void); +int openssl_init_fork_handlers(void); +int openssl_get_fork_id(void); + +char *ossl_safe_getenv(const char *name); + +extern CRYPTO_RWLOCK *memdbg_lock; +int openssl_strerror_r(int errnum, char *buf, size_t buflen); +# if !defined(OPENSSL_NO_STDIO) +FILE *openssl_fopen(const char *filename, const char *mode); +# else +void *openssl_fopen(const char *filename, const char *mode); +# endif + +uint32_t OPENSSL_rdtsc(void); +size_t OPENSSL_instrument_bus(unsigned int *, size_t); +size_t OPENSSL_instrument_bus2(unsigned int *, size_t, size_t); + +#endif diff --git a/plugin/openssl/include/internal/dane.h b/plugin/openssl/include/internal/dane.h new file mode 100644 index 000000000..7a39bd7d7 --- /dev/null +++ b/plugin/openssl/include/internal/dane.h @@ -0,0 +1,103 @@ +/* + * Copyright 2015-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OSSL_INTERNAL_DANE_H +#define OSSL_INTERNAL_DANE_H + +#include + +/*- + * Certificate usages: + * https://tools.ietf.org/html/rfc6698#section-2.1.1 + */ +#define DANETLS_USAGE_PKIX_TA 0 +#define DANETLS_USAGE_PKIX_EE 1 +#define DANETLS_USAGE_DANE_TA 2 +#define DANETLS_USAGE_DANE_EE 3 +#define DANETLS_USAGE_LAST DANETLS_USAGE_DANE_EE + +/*- + * Selectors: + * https://tools.ietf.org/html/rfc6698#section-2.1.2 + */ +#define DANETLS_SELECTOR_CERT 0 +#define DANETLS_SELECTOR_SPKI 1 +#define DANETLS_SELECTOR_LAST DANETLS_SELECTOR_SPKI + +/*- + * Matching types: + * https://tools.ietf.org/html/rfc6698#section-2.1.3 + */ +#define DANETLS_MATCHING_FULL 0 +#define DANETLS_MATCHING_2256 1 +#define DANETLS_MATCHING_2512 2 +#define DANETLS_MATCHING_LAST DANETLS_MATCHING_2512 + +typedef struct danetls_record_st { + uint8_t usage; + uint8_t selector; + uint8_t mtype; + unsigned char *data; + size_t dlen; + EVP_PKEY *spki; +} danetls_record; + +DEFINE_STACK_OF(danetls_record) + +/* + * Shared DANE context + */ +struct dane_ctx_st { + const EVP_MD **mdevp; /* mtype -> digest */ + uint8_t *mdord; /* mtype -> preference */ + uint8_t mdmax; /* highest supported mtype */ + unsigned long flags; /* feature bitmask */ +}; + +/* + * Per connection DANE state + */ +struct ssl_dane_st { + struct dane_ctx_st *dctx; + STACK_OF(danetls_record) *trecs; + STACK_OF(X509) *certs; /* DANE-TA(2) Cert(0) Full(0) certs */ + danetls_record *mtlsa; /* Matching TLSA record */ + X509 *mcert; /* DANE matched cert */ + uint32_t umask; /* Usages present */ + int mdpth; /* Depth of matched cert */ + int pdpth; /* Depth of PKIX trust */ + unsigned long flags; /* feature bitmask */ +}; + +#define DANETLS_ENABLED(dane) \ + ((dane) != NULL && sk_danetls_record_num((dane)->trecs) > 0) + +#define DANETLS_USAGE_BIT(u) (((uint32_t)1) << u) + +#define DANETLS_PKIX_TA_MASK (DANETLS_USAGE_BIT(DANETLS_USAGE_PKIX_TA)) +#define DANETLS_PKIX_EE_MASK (DANETLS_USAGE_BIT(DANETLS_USAGE_PKIX_EE)) +#define DANETLS_DANE_TA_MASK (DANETLS_USAGE_BIT(DANETLS_USAGE_DANE_TA)) +#define DANETLS_DANE_EE_MASK (DANETLS_USAGE_BIT(DANETLS_USAGE_DANE_EE)) + +#define DANETLS_PKIX_MASK (DANETLS_PKIX_TA_MASK | DANETLS_PKIX_EE_MASK) +#define DANETLS_DANE_MASK (DANETLS_DANE_TA_MASK | DANETLS_DANE_EE_MASK) +#define DANETLS_TA_MASK (DANETLS_PKIX_TA_MASK | DANETLS_DANE_TA_MASK) +#define DANETLS_EE_MASK (DANETLS_PKIX_EE_MASK | DANETLS_DANE_EE_MASK) + +#define DANETLS_HAS_PKIX(dane) ((dane) && ((dane)->umask & DANETLS_PKIX_MASK)) +#define DANETLS_HAS_DANE(dane) ((dane) && ((dane)->umask & DANETLS_DANE_MASK)) +#define DANETLS_HAS_TA(dane) ((dane) && ((dane)->umask & DANETLS_TA_MASK)) +#define DANETLS_HAS_EE(dane) ((dane) && ((dane)->umask & DANETLS_EE_MASK)) + +#define DANETLS_HAS_PKIX_TA(dane) ((dane)&&((dane)->umask & DANETLS_PKIX_TA_MASK)) +#define DANETLS_HAS_PKIX_EE(dane) ((dane)&&((dane)->umask & DANETLS_PKIX_EE_MASK)) +#define DANETLS_HAS_DANE_TA(dane) ((dane)&&((dane)->umask & DANETLS_DANE_TA_MASK)) +#define DANETLS_HAS_DANE_EE(dane) ((dane)&&((dane)->umask & DANETLS_DANE_EE_MASK)) + +#endif /* OSSL_INTERNAL_DANE_H */ diff --git a/plugin/openssl/include/internal/dso.h b/plugin/openssl/include/internal/dso.h new file mode 100644 index 000000000..c57c0c407 --- /dev/null +++ b/plugin/openssl/include/internal/dso.h @@ -0,0 +1,165 @@ +/* + * Copyright 2000-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OSSL_INTERNAL_DSO_H +# define OSSL_INTERNAL_DSO_H + +# include +# include "internal/dsoerr.h" + +/* 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 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". 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 + +/* + * Don't unload the DSO when we call DSO_free() + */ +# define DSO_FLAG_NO_UNLOAD_ON_FREE 0x04 + +/* + * 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; +typedef struct dso_meth_st DSO_METHOD; + +/* + * 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 independently 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 independently 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 *); + +DSO *DSO_new(void); +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); + +/* + * These functions can be used to get/set the platform-independent 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); + +/* + * The all-singing all-dancing load function, you normally pass NULL for the + * first and third parameters. Use DSO_up_ref 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 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 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 characters [including + * trailing zero] to accommodate 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); + +/* + * Like DSO_pathbyaddr() but instead returns a handle to the DSO for the symbol + * or NULL on error. + */ +DSO *DSO_dsobyaddr(void *addr, int flags); + +/* + * 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); + +int ERR_load_DSO_strings(void); + +#endif diff --git a/plugin/openssl/include/internal/dsoerr.h b/plugin/openssl/include/internal/dsoerr.h new file mode 100644 index 000000000..94d642a22 --- /dev/null +++ b/plugin/openssl/include/internal/dsoerr.h @@ -0,0 +1,82 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OSSL_INTERNAL_DSOERR_H +# define OSSL_INTERNAL_DSOERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_DSO_strings(void); + +/* + * DSO function codes. + */ +# define DSO_F_DLFCN_BIND_FUNC 100 +# 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_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_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_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 105 +# define DSO_F_DSO_SET_FILENAME 129 +# define DSO_F_DSO_UP_REF 114 +# 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 101 +# define DSO_F_WIN32_GLOBALLOOKUP 142 +# 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 109 +# define DSO_F_WIN32_SPLITTER 136 +# define DSO_F_WIN32_UNLOAD 121 + +/* + * DSO 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_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 + +#endif diff --git a/plugin/openssl/include/internal/err.h b/plugin/openssl/include/internal/err.h new file mode 100644 index 000000000..88dde7059 --- /dev/null +++ b/plugin/openssl/include/internal/err.h @@ -0,0 +1,15 @@ +/* + * Copyright 2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OSSL_INTERNAL_ERR_H +# define OSSL_INTERNAL_ERR_H + +void err_free_strings_int(void); + +#endif diff --git a/plugin/openssl/include/internal/nelem.h b/plugin/openssl/include/internal/nelem.h new file mode 100644 index 000000000..699ef88ee --- /dev/null +++ b/plugin/openssl/include/internal/nelem.h @@ -0,0 +1,14 @@ +/* + * Copyright 2017 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OSSL_INTERNAL_NELEM_H +# define OSSL_INTERNAL_NELEM_H + +# define OSSL_NELEM(x) (sizeof(x)/sizeof((x)[0])) +#endif diff --git a/plugin/openssl/include/internal/numbers.h b/plugin/openssl/include/internal/numbers.h new file mode 100644 index 000000000..f5ade5226 --- /dev/null +++ b/plugin/openssl/include/internal/numbers.h @@ -0,0 +1,68 @@ +/* + * Copyright 2015-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OSSL_INTERNAL_NUMBERS_H +# define OSSL_INTERNAL_NUMBERS_H + +# include + +# if (-1 & 3) == 0x03 /* Two's complement */ + +# define __MAXUINT__(T) ((T) -1) +# define __MAXINT__(T) ((T) ((((T) 1) << ((sizeof(T) * CHAR_BIT) - 1)) ^ __MAXUINT__(T))) +# define __MININT__(T) (-__MAXINT__(T) - 1) + +# elif (-1 & 3) == 0x02 /* One's complement */ + +# define __MAXUINT__(T) (((T) -1) + 1) +# define __MAXINT__(T) ((T) ((((T) 1) << ((sizeof(T) * CHAR_BIT) - 1)) ^ __MAXUINT__(T))) +# define __MININT__(T) (-__MAXINT__(T)) + +# elif (-1 & 3) == 0x01 /* Sign/magnitude */ + +# define __MAXINT__(T) ((T) (((((T) 1) << ((sizeof(T) * CHAR_BIT) - 2)) - 1) | (((T) 1) << ((sizeof(T) * CHAR_BIT) - 2)))) +# define __MAXUINT__(T) ((T) (__MAXINT__(T) | (((T) 1) << ((sizeof(T) * CHAR_BIT) - 1)))) +# define __MININT__(T) (-__MAXINT__(T)) + +# else + +# error "do not know the integer encoding on this architecture" + +# endif + +# ifndef INT8_MAX +# define INT8_MIN __MININT__(int8_t) +# define INT8_MAX __MAXINT__(int8_t) +# define UINT8_MAX __MAXUINT__(uint8_t) +# endif + +# ifndef INT16_MAX +# define INT16_MIN __MININT__(int16_t) +# define INT16_MAX __MAXINT__(int16_t) +# define UINT16_MAX __MAXUINT__(uint16_t) +# endif + +# ifndef INT32_MAX +# define INT32_MIN __MININT__(int32_t) +# define INT32_MAX __MAXINT__(int32_t) +# define UINT32_MAX __MAXUINT__(uint32_t) +# endif + +# ifndef INT64_MAX +# define INT64_MIN __MININT__(int64_t) +# define INT64_MAX __MAXINT__(int64_t) +# define UINT64_MAX __MAXUINT__(uint64_t) +# endif + +# ifndef SIZE_MAX +# define SIZE_MAX __MAXUINT__(size_t) +# endif + +#endif + diff --git a/plugin/openssl/include/internal/o_dir.h b/plugin/openssl/include/internal/o_dir.h new file mode 100644 index 000000000..dafc8dd2e --- /dev/null +++ b/plugin/openssl/include/internal/o_dir.h @@ -0,0 +1,52 @@ +/* + * Copyright 2004-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +/* + * This file is dual-licensed and is also available under the following + * terms: + * + * Copyright (c) 2004, Richard Levitte + * 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. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS 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 THE REGENTS 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. + */ + +#ifndef OSSL_INTERNAL_O_DIR_H +# define OSSL_INTERNAL_O_DIR_H + +typedef struct OPENSSL_dir_context_st OPENSSL_DIR_CTX; + +/* + * returns NULL on error or end-of-directory. If it is end-of-directory, + * errno will be zero + */ +const char *OPENSSL_DIR_read(OPENSSL_DIR_CTX **ctx, const char *directory); +/* returns 1 on success, 0 on error */ +int OPENSSL_DIR_end(OPENSSL_DIR_CTX **ctx); + +#endif /* LPDIR_H */ diff --git a/plugin/openssl/include/internal/o_str.h b/plugin/openssl/include/internal/o_str.h new file mode 100644 index 000000000..15c12e820 --- /dev/null +++ b/plugin/openssl/include/internal/o_str.h @@ -0,0 +1,17 @@ +/* + * Copyright 2003-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OSSL_INTERNAL_O_STR_H +# define OSSL_INTERNAL_O_STR_H + +# include /* to get size_t */ + +int OPENSSL_memcmp(const void *p1, const void *p2, size_t n); + +#endif diff --git a/plugin/openssl/include/internal/refcount.h b/plugin/openssl/include/internal/refcount.h new file mode 100644 index 000000000..9d8d4971b --- /dev/null +++ b/plugin/openssl/include/internal/refcount.h @@ -0,0 +1,153 @@ +/* + * Copyright 2016-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ +#ifndef OSSL_INTERNAL_REFCOUNT_H +# define OSSL_INTERNAL_REFCOUNT_H + +/* Used to checking reference counts, most while doing perl5 stuff :-) */ +# if defined(OPENSSL_NO_STDIO) +# if defined(REF_PRINT) +# error "REF_PRINT requires stdio" +# endif +# endif + +# if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L \ + && !defined(__STDC_NO_ATOMICS__) +# include +# define HAVE_C11_ATOMICS +# endif + +# if defined(HAVE_C11_ATOMICS) && defined(ATOMIC_INT_LOCK_FREE) \ + && ATOMIC_INT_LOCK_FREE > 0 + +# define HAVE_ATOMICS 1 + +typedef _Atomic int CRYPTO_REF_COUNT; + +static inline int CRYPTO_UP_REF(_Atomic int *val, int *ret, void *lock) +{ + *ret = atomic_fetch_add_explicit(val, 1, memory_order_relaxed) + 1; + return 1; +} + +/* + * Changes to shared structure other than reference counter have to be + * serialized. And any kind of serialization implies a release fence. This + * means that by the time reference counter is decremented all other + * changes are visible on all processors. Hence decrement itself can be + * relaxed. In case it hits zero, object will be destructed. Since it's + * last use of the object, destructor programmer might reason that access + * to mutable members doesn't have to be serialized anymore, which would + * otherwise imply an acquire fence. Hence conditional acquire fence... + */ +static inline int CRYPTO_DOWN_REF(_Atomic int *val, int *ret, void *lock) +{ + *ret = atomic_fetch_sub_explicit(val, 1, memory_order_relaxed) - 1; + if (*ret == 0) + atomic_thread_fence(memory_order_acquire); + return 1; +} + +# elif defined(__GNUC__) && defined(__ATOMIC_RELAXED) && __GCC_ATOMIC_INT_LOCK_FREE > 0 + +# define HAVE_ATOMICS 1 +#define UNUSED(x) (void)(x) + +typedef int CRYPTO_REF_COUNT; + +static __inline__ int CRYPTO_UP_REF(int *val, int *ret, void *lock) +{ + UNUSED(lock); + *ret = __atomic_fetch_add(val, 1, __ATOMIC_RELAXED) + 1; + return 1; +} + +static __inline__ int CRYPTO_DOWN_REF(int *val, int *ret, void *lock) +{ + UNUSED(lock); + *ret = __atomic_fetch_sub(val, 1, __ATOMIC_RELAXED) - 1; + if (*ret == 0) + __atomic_thread_fence(__ATOMIC_ACQUIRE); + return 1; +} + +# elif defined(_MSC_VER) && _MSC_VER>=1200 + +# define HAVE_ATOMICS 1 + +typedef volatile int CRYPTO_REF_COUNT; + +# if (defined(_M_ARM) && _M_ARM>=7 && !defined(_WIN32_WCE)) || defined(_M_ARM64) +# include +# if defined(_M_ARM64) && !defined(_ARM_BARRIER_ISH) +# define _ARM_BARRIER_ISH _ARM64_BARRIER_ISH +# endif + +static __inline int CRYPTO_UP_REF(volatile int *val, int *ret, void *lock) +{ + *ret = _InterlockedExchangeAdd_nf(val, 1) + 1; + return 1; +} + +static __inline int CRYPTO_DOWN_REF(volatile int *val, int *ret, void *lock) +{ + *ret = _InterlockedExchangeAdd_nf(val, -1) - 1; + if (*ret == 0) + __dmb(_ARM_BARRIER_ISH); + return 1; +} +# else +# if !defined(_WIN32_WCE) +# pragma intrinsic(_InterlockedExchangeAdd) +# else +# if _WIN32_WCE >= 0x600 + extern long __cdecl _InterlockedExchangeAdd(long volatile*, long); +# else + /* under Windows CE we still have old-style Interlocked* functions */ + extern long __cdecl InterlockedExchangeAdd(long volatile*, long); +# define _InterlockedExchangeAdd InterlockedExchangeAdd +# endif +# endif + +static __inline int CRYPTO_UP_REF(volatile int *val, int *ret, void *lock) +{ + *ret = _InterlockedExchangeAdd(val, 1) + 1; + return 1; +} + +static __inline int CRYPTO_DOWN_REF(volatile int *val, int *ret, void *lock) +{ + *ret = _InterlockedExchangeAdd(val, -1) - 1; + return 1; +} +# endif + +# else + +typedef int CRYPTO_REF_COUNT; + +# define CRYPTO_UP_REF(val, ret, lock) CRYPTO_atomic_add(val, 1, ret, lock) +# define CRYPTO_DOWN_REF(val, ret, lock) CRYPTO_atomic_add(val, -1, ret, lock) + +# endif + +# if !defined(NDEBUG) && !defined(OPENSSL_NO_STDIO) +# define REF_ASSERT_ISNT(test) \ + (void)((test) ? (OPENSSL_die("refcount error", __FILE__, __LINE__), 1) : 0) +# else +# define REF_ASSERT_ISNT(i) +# endif + +# ifdef REF_PRINT +# define REF_PRINT_COUNT(a, b) \ + fprintf(stderr, "%p:%4d:%s\n", b, b->references, a) +# else +# define REF_PRINT_COUNT(a, b) +# endif + +#endif diff --git a/plugin/openssl/include/internal/sockets.h b/plugin/openssl/include/internal/sockets.h new file mode 100644 index 000000000..4fc1aecdb --- /dev/null +++ b/plugin/openssl/include/internal/sockets.h @@ -0,0 +1,157 @@ +/* + * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + +#ifndef OSSL_INTERNAL_SOCKETS_H +# define OSSL_INTERNAL_SOCKETS_H + +# if defined(OPENSSL_SYS_VXWORKS) || defined(OPENSSL_SYS_UEFI) +# define NO_SYS_PARAM_H +# endif +# ifdef WIN32 +# define NO_SYS_UN_H +# endif +# ifdef OPENSSL_SYS_VMS +# define NO_SYS_PARAM_H +# define NO_SYS_UN_H +# endif + +# ifdef OPENSSL_NO_SOCK + +# elif defined(OPENSSL_SYS_WINDOWS) || defined(OPENSSL_SYS_MSDOS) +# if defined(__DJGPP__) +# include +# include +# include +# include +# include +# include +# elif defined(_WIN32_WCE) && _WIN32_WCE<410 +# define getservbyname _masked_declaration_getservbyname +# endif +# if !defined(IPPROTO_IP) + /* winsock[2].h was included already? */ +# include +# endif +# ifdef getservbyname + /* this is used to be wcecompat/include/winsock_extras.h */ +# undef getservbyname +struct servent *PASCAL getservbyname(const char *, const char *); +# endif + +# ifdef _WIN64 +/* + * Even though sizeof(SOCKET) is 8, it's safe to cast it to int, because + * the value constitutes an index in per-process table of limited size + * and not a real pointer. And we also depend on fact that all processors + * Windows run on happen to be two's-complement, which allows to + * interchange INVALID_SOCKET and -1. + */ +# define socket(d,t,p) ((int)socket(d,t,p)) +# define accept(s,f,l) ((int)accept(s,f,l)) +# endif + +# else + +# ifndef NO_SYS_PARAM_H +# include +# endif +# ifdef OPENSSL_SYS_VXWORKS +# include +# endif + +# include +# if defined(OPENSSL_SYS_VMS_NODECC) +# include +# include +# include +# else +# include +# ifndef NO_SYS_UN_H +# include +# ifndef UNIX_PATH_MAX +# define UNIX_PATH_MAX sizeof(((struct sockaddr_un *)NULL)->sun_path) +# endif +# endif +# ifdef FILIO_H +# include /* FIONBIO in some SVR4, e.g. unixware, solaris */ +# endif +# include +# include +# include +# endif + +# ifdef OPENSSL_SYS_AIX +# include +# endif + +# ifndef VMS +# include +# else +# if !defined(TCPIP_TYPE_SOCKETSHR) && defined(__VMS_VER) && (__VMS_VER > 70000000) + /* ioctl is only in VMS > 7.0 and when socketshr is not used */ +# include +# endif +# include +# if defined(TCPIP_TYPE_SOCKETSHR) +# include +# endif +# endif + +# ifndef INVALID_SOCKET +# define INVALID_SOCKET (-1) +# endif +# endif + +/* + * Some IPv6 implementations are broken, you can disable them in known + * bad versions. + */ +# if !defined(OPENSSL_USE_IPV6) +# if defined(AF_INET6) +# define OPENSSL_USE_IPV6 1 +# else +# define OPENSSL_USE_IPV6 0 +# endif +# endif + +# define get_last_socket_error() errno +# define clear_socket_error() errno=0 + +# if defined(OPENSSL_SYS_WINDOWS) +# undef get_last_socket_error +# undef clear_socket_error +# define get_last_socket_error() WSAGetLastError() +# define clear_socket_error() WSASetLastError(0) +# define readsocket(s,b,n) recv((s),(b),(n),0) +# define writesocket(s,b,n) send((s),(b),(n),0) +# elif defined(__DJGPP__) +# define WATT32 +# define WATT32_NO_OLDIES +# define closesocket(s) close_s(s) +# define readsocket(s,b,n) read_s(s,b,n) +# define writesocket(s,b,n) send(s,b,n,0) +# elif defined(OPENSSL_SYS_VMS) +# define ioctlsocket(a,b,c) ioctl(a,b,c) +# define closesocket(s) close(s) +# define readsocket(s,b,n) recv((s),(b),(n),0) +# define writesocket(s,b,n) send((s),(b),(n),0) +# elif defined(OPENSSL_SYS_VXWORKS) +# define ioctlsocket(a,b,c) ioctl((a),(b),(int)(c)) +# define closesocket(s) close(s) +# define readsocket(s,b,n) read((s),(b),(n)) +# define writesocket(s,b,n) write((s),(char *)(b),(n)) +# else +# define ioctlsocket(a,b,c) ioctl(a,b,c) +# define closesocket(s) close(s) +# define readsocket(s,b,n) read((s),(b),(n)) +# define writesocket(s,b,n) write((s),(b),(n)) +# endif + +#endif diff --git a/plugin/openssl/include/internal/sslconf.h b/plugin/openssl/include/internal/sslconf.h new file mode 100644 index 000000000..92c8941d0 --- /dev/null +++ b/plugin/openssl/include/internal/sslconf.h @@ -0,0 +1,20 @@ +/* + * Copyright 2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OSSL_INTERNAL_SSLCONF_H +# define OSSL_INTERNAL_SSLCONF_H + +typedef struct ssl_conf_cmd_st SSL_CONF_CMD; + +const SSL_CONF_CMD *conf_ssl_get(size_t idx, const char **name, size_t *cnt); +int conf_ssl_name_find(const char *name, size_t *idx); +void conf_ssl_get_cmd(const SSL_CONF_CMD *cmd, size_t idx, char **cmdstr, + char **arg); + +#endif diff --git a/plugin/openssl/include/internal/thread_once.h b/plugin/openssl/include/internal/thread_once.h new file mode 100644 index 000000000..8f8aa6e1c --- /dev/null +++ b/plugin/openssl/include/internal/thread_once.h @@ -0,0 +1,137 @@ +/* + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include + +/* + * DEFINE_RUN_ONCE: Define an initialiser function that should be run exactly + * once. It takes no arguments and returns and int result (1 for success or + * 0 for failure). Typical usage might be: + * + * DEFINE_RUN_ONCE(myinitfunc) + * { + * do_some_initialisation(); + * if (init_is_successful()) + * return 1; + * + * return 0; + * } + */ +#define DEFINE_RUN_ONCE(init) \ + static int init(void); \ + int init##_ossl_ret_ = 0; \ + void init##_ossl_(void) \ + { \ + init##_ossl_ret_ = init(); \ + } \ + static int init(void) + +/* + * DECLARE_RUN_ONCE: Declare an initialiser function that should be run exactly + * once that has been defined in another file via DEFINE_RUN_ONCE(). + */ +#define DECLARE_RUN_ONCE(init) \ + extern int init##_ossl_ret_; \ + void init##_ossl_(void); + +/* + * DEFINE_RUN_ONCE_STATIC: Define an initialiser function that should be run + * exactly once. This function will be declared as static within the file. It + * takes no arguments and returns and int result (1 for success or 0 for + * failure). Typical usage might be: + * + * DEFINE_RUN_ONCE_STATIC(myinitfunc) + * { + * do_some_initialisation(); + * if (init_is_successful()) + * return 1; + * + * return 0; + * } + */ +#define DEFINE_RUN_ONCE_STATIC(init) \ + static int init(void); \ + static int init##_ossl_ret_ = 0; \ + static void init##_ossl_(void) \ + { \ + init##_ossl_ret_ = init(); \ + } \ + static int init(void) + +/* + * DEFINE_RUN_ONCE_STATIC_ALT: Define an alternative initialiser function. This + * function will be declared as static within the file. It takes no arguments + * and returns an int result (1 for success or 0 for failure). An alternative + * initialiser function is expected to be associated with a primary initialiser + * function defined via DEFINE_ONCE_STATIC where both functions use the same + * CRYPTO_ONCE object to synchronise. Where an alternative initialiser function + * is used only one of the primary or the alternative initialiser function will + * ever be called - and that function will be called exactly once. Definition + * of an alternative initialiser function MUST occur AFTER the definition of the + * primary initialiser function. + * + * Typical usage might be: + * + * DEFINE_RUN_ONCE_STATIC(myinitfunc) + * { + * do_some_initialisation(); + * if (init_is_successful()) + * return 1; + * + * return 0; + * } + * + * DEFINE_RUN_ONCE_STATIC_ALT(myaltinitfunc, myinitfunc) + * { + * do_some_alternative_initialisation(); + * if (init_is_successful()) + * return 1; + * + * return 0; + * } + */ +#define DEFINE_RUN_ONCE_STATIC_ALT(initalt, init) \ + static int initalt(void); \ + static void initalt##_ossl_(void) \ + { \ + init##_ossl_ret_ = initalt(); \ + } \ + static int initalt(void) + +/* + * RUN_ONCE - use CRYPTO_THREAD_run_once, and check if the init succeeded + * @once: pointer to static object of type CRYPTO_ONCE + * @init: function name that was previously given to DEFINE_RUN_ONCE, + * DEFINE_RUN_ONCE_STATIC or DECLARE_RUN_ONCE. This function + * must return 1 for success or 0 for failure. + * + * The return value is 1 on success (*) or 0 in case of error. + * + * (*) by convention, since the init function must return 1 on success. + */ +#define RUN_ONCE(once, init) \ + (CRYPTO_THREAD_run_once(once, init##_ossl_) ? init##_ossl_ret_ : 0) + +/* + * RUN_ONCE_ALT - use CRYPTO_THREAD_run_once, to run an alternative initialiser + * function and check if that initialisation succeeded + * @once: pointer to static object of type CRYPTO_ONCE + * @initalt: alternative initialiser function name that was previously given to + * DEFINE_RUN_ONCE_STATIC_ALT. This function must return 1 for + * success or 0 for failure. + * @init: primary initialiser function name that was previously given to + * DEFINE_RUN_ONCE_STATIC. This function must return 1 for success or + * 0 for failure. + * + * The return value is 1 on success (*) or 0 in case of error. + * + * (*) by convention, since the init function must return 1 on success. + */ +#define RUN_ONCE_ALT(once, initalt, init) \ + (CRYPTO_THREAD_run_once(once, initalt##_ossl_) ? init##_ossl_ret_ : 0) diff --git a/plugin/openssl/include/internal/tsan_assist.h b/plugin/openssl/include/internal/tsan_assist.h new file mode 100644 index 000000000..cc30162eb --- /dev/null +++ b/plugin/openssl/include/internal/tsan_assist.h @@ -0,0 +1,144 @@ +/* + * Copyright 2018-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +/* + * Contemporary compilers implement lock-free atomic memory access + * primitives that facilitate writing "thread-opportunistic" or even real + * multi-threading low-overhead code. "Thread-opportunistic" is when + * exact result is not required, e.g. some statistics, or execution flow + * doesn't have to be unambiguous. Simplest example is lazy "constant" + * initialization when one can synchronize on variable itself, e.g. + * + * if (var == NOT_YET_INITIALIZED) + * var = function_returning_same_value(); + * + * This does work provided that loads and stores are single-instruction + * operations (and integer ones are on *all* supported platforms), but + * it upsets Thread Sanitizer. Suggested solution is + * + * if (tsan_load(&var) == NOT_YET_INITIALIZED) + * tsan_store(&var, function_returning_same_value()); + * + * Production machine code would be the same, so one can wonder why + * bother. Having Thread Sanitizer accept "thread-opportunistic" code + * allows to move on trouble-shooting real bugs. + * + * Resolving Thread Sanitizer nits was the initial purpose for this module, + * but it was later extended with more nuanced primitives that are useful + * even in "non-opportunistic" scenarios. Most notably verifying if a shared + * structure is fully initialized and bypassing the initialization lock. + * It's suggested to view macros defined in this module as "annotations" for + * thread-safe lock-free code, "Thread-Safe ANnotations"... + * + * It's assumed that ATOMIC_{LONG|INT}_LOCK_FREE are assigned same value as + * ATOMIC_POINTER_LOCK_FREE. And check for >= 2 ensures that corresponding + * code is inlined. It should be noted that statistics counters become + * accurate in such case. + * + * Special note about TSAN_QUALIFIER. It might be undesired to use it in + * a shared header. Because whether operation on specific variable or member + * is atomic or not might be irrelevant in other modules. In such case one + * can use TSAN_QUALIFIER in cast specifically when it has to count. + */ + +#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L \ + && !defined(__STDC_NO_ATOMICS__) +# include + +# if defined(ATOMIC_POINTER_LOCK_FREE) \ + && ATOMIC_POINTER_LOCK_FREE >= 2 +# define TSAN_QUALIFIER _Atomic +# define tsan_load(ptr) atomic_load_explicit((ptr), memory_order_relaxed) +# define tsan_store(ptr, val) atomic_store_explicit((ptr), (val), memory_order_relaxed) +# define tsan_counter(ptr) atomic_fetch_add_explicit((ptr), 1, memory_order_relaxed) +# define tsan_decr(ptr) atomic_fetch_add_explicit((ptr), -1, memory_order_relaxed) +# define tsan_ld_acq(ptr) atomic_load_explicit((ptr), memory_order_acquire) +# define tsan_st_rel(ptr, val) atomic_store_explicit((ptr), (val), memory_order_release) +# endif + +#elif defined(__GNUC__) && defined(__ATOMIC_RELAXED) + +# if defined(__GCC_ATOMIC_POINTER_LOCK_FREE) \ + && __GCC_ATOMIC_POINTER_LOCK_FREE >= 2 +# define TSAN_QUALIFIER volatile +# define tsan_load(ptr) __atomic_load_n((ptr), __ATOMIC_RELAXED) +# define tsan_store(ptr, val) __atomic_store_n((ptr), (val), __ATOMIC_RELAXED) +# define tsan_counter(ptr) __atomic_fetch_add((ptr), 1, __ATOMIC_RELAXED) +# define tsan_decr(ptr) __atomic_fetch_add((ptr), -1, __ATOMIC_RELAXED) +# define tsan_ld_acq(ptr) __atomic_load_n((ptr), __ATOMIC_ACQUIRE) +# define tsan_st_rel(ptr, val) __atomic_store_n((ptr), (val), __ATOMIC_RELEASE) +# endif + +#elif defined(_MSC_VER) && _MSC_VER>=1200 \ + && (defined(_M_IX86) || defined(_M_AMD64) || defined(_M_X64) || \ + defined(_M_ARM64) || (defined(_M_ARM) && _M_ARM >= 7 && !defined(_WIN32_WCE))) +/* + * There is subtle dependency on /volatile: command-line option. + * "ms" implies same semantic as memory_order_acquire for loads and + * memory_order_release for stores, while "iso" - memory_order_relaxed for + * either. Real complication is that defaults are different on x86 and ARM. + * There is explanation for that, "ms" is backward compatible with earlier + * compiler versions, while multi-processor ARM can be viewed as brand new + * platform to MSC and its users, and with non-relaxed semantic taking toll + * with additional instructions and penalties, it kind of makes sense to + * default to "iso"... + */ +# define TSAN_QUALIFIER volatile +# if defined(_M_ARM) || defined(_M_ARM64) +# define _InterlockedExchangeAdd _InterlockedExchangeAdd_nf +# pragma intrinsic(_InterlockedExchangeAdd_nf) +# pragma intrinsic(__iso_volatile_load32, __iso_volatile_store32) +# ifdef _WIN64 +# define _InterlockedExchangeAdd64 _InterlockedExchangeAdd64_nf +# pragma intrinsic(_InterlockedExchangeAdd64_nf) +# pragma intrinsic(__iso_volatile_load64, __iso_volatile_store64) +# define tsan_load(ptr) (sizeof(*(ptr)) == 8 ? __iso_volatile_load64(ptr) \ + : __iso_volatile_load32(ptr)) +# define tsan_store(ptr, val) (sizeof(*(ptr)) == 8 ? __iso_volatile_store64((ptr), (val)) \ + : __iso_volatile_store32((ptr), (val))) +# else +# define tsan_load(ptr) __iso_volatile_load32(ptr) +# define tsan_store(ptr, val) __iso_volatile_store32((ptr), (val)) +# endif +# else +# define tsan_load(ptr) (*(ptr)) +# define tsan_store(ptr, val) (*(ptr) = (val)) +# endif +# pragma intrinsic(_InterlockedExchangeAdd) +# ifdef _WIN64 +# pragma intrinsic(_InterlockedExchangeAdd64) +# define tsan_counter(ptr) (sizeof(*(ptr)) == 8 ? _InterlockedExchangeAdd64((ptr), 1) \ + : _InterlockedExchangeAdd((ptr), 1)) +# define tsan_decr(ptr) (sizeof(*(ptr)) == 8 ? _InterlockedExchangeAdd64((ptr), -1) \ + : _InterlockedExchangeAdd((ptr), -1)) +# else +# define tsan_counter(ptr) _InterlockedExchangeAdd((ptr), 1) +# define tsan_decr(ptr) _InterlockedExchangeAdd((ptr), -1) +# endif +# if !defined(_ISO_VOLATILE) +# define tsan_ld_acq(ptr) (*(ptr)) +# define tsan_st_rel(ptr, val) (*(ptr) = (val)) +# endif + +#endif + +#ifndef TSAN_QUALIFIER + +# define TSAN_QUALIFIER volatile +# define tsan_load(ptr) (*(ptr)) +# define tsan_store(ptr, val) (*(ptr) = (val)) +# define tsan_counter(ptr) ((*(ptr))++) +# define tsan_decr(ptr) ((*(ptr))--) +/* + * Lack of tsan_ld_acq and tsan_ld_rel means that compiler support is not + * sophisticated enough to support them. Code that relies on them should be + * protected with #ifdef tsan_ld_acq with locked fallback. + */ + +#endif diff --git a/plugin/openssl/include/openssl/__DECC_INCLUDE_EPILOGUE.H b/plugin/openssl/include/openssl/__DECC_INCLUDE_EPILOGUE.H new file mode 100644 index 000000000..ad0a5f56d --- /dev/null +++ b/plugin/openssl/include/openssl/__DECC_INCLUDE_EPILOGUE.H @@ -0,0 +1,22 @@ +/* + * Copyright 2016-2020 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +/* + * This file is only used by HP C/C++ on VMS, and is included automatically + * after each header file from this directory + */ + +/* + * The C++ compiler doesn't understand these pragmas, even though it + * understands the corresponding command line qualifier. + */ +#ifndef __cplusplus +/* restore state. Must correspond to the save in __decc_include_prologue.h */ +# pragma names restore +#endif diff --git a/plugin/openssl/include/openssl/__DECC_INCLUDE_PROLOGUE.H b/plugin/openssl/include/openssl/__DECC_INCLUDE_PROLOGUE.H new file mode 100644 index 000000000..5f5513e82 --- /dev/null +++ b/plugin/openssl/include/openssl/__DECC_INCLUDE_PROLOGUE.H @@ -0,0 +1,26 @@ +/* + * Copyright 2016-2020 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +/* + * This file is only used by HP C/C++ on VMS, and is included automatically + * after each header file from this directory + */ + +/* + * The C++ compiler doesn't understand these pragmas, even though it + * understands the corresponding command line qualifier. + */ +#ifndef __cplusplus +/* save state */ +# pragma names save +/* have the compiler shorten symbols larger than 31 chars to 23 chars + * followed by a 8 hex char CRC + */ +# pragma names as_is,shortened +#endif diff --git a/plugin/openssl/include/openssl/aes.h b/plugin/openssl/include/openssl/aes.h new file mode 100644 index 000000000..245c552ab --- /dev/null +++ b/plugin/openssl/include/openssl/aes.h @@ -0,0 +1,92 @@ +/* + * Copyright 2002-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_AES_H +# define HEADER_AES_H + +# include + +# include +# ifdef __cplusplus +extern "C" { +# endif + +# 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 + +/* 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); + +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); +/* 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 diff --git a/plugin/openssl/include/openssl/asn1.h b/plugin/openssl/include/openssl/asn1.h new file mode 100644 index 000000000..9522eec18 --- /dev/null +++ b/plugin/openssl/include/openssl/asn1.h @@ -0,0 +1,886 @@ +/* + * Copyright 1995-2017 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_ASN1_H +# define HEADER_ASN1_H + +# include +# include +# include +# include +# include +# include +# include + +# include +# if OPENSSL_API_COMPAT < 0x10100000L +# 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 /*compat*/ V_ASN1_PRIMITIVE_TAG + +# 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_UNDEF -1 +/* ASN.1 tag values */ +# define V_ASN1_EOC 0 +# define V_ASN1_BOOLEAN 1 /**/ +# define V_ASN1_INTEGER 2 +# 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_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 + +/* + * NB the constants below are used internally by ASN1_INTEGER + * and ASN1_ENUMERATED to indicate the sign. They are *not* on + * the wire tag values. + */ + +# define V_ASN1_NEG 0x100 +# define V_ASN1_NEG_INTEGER (2 | V_ASN1_NEG) +# define V_ASN1_NEG_ENUMERATED (10 | V_ASN1_NEG) + +/* 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; +DEFINE_STACK_OF(X509_ALGOR) + +# 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 +/* String is embedded and only content should be freed */ +# define ASN1_STRING_FLAG_EMBED 0x080 +/* String should be parsed in RFC 5280's time format */ +# define ASN1_STRING_FLAG_X509_TIME 0x100 +/* 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 +/* + * A zero passed to ASN1_STRING_TABLE_new_add for the flags is interpreted + * as "don't change" and STABLE_FLAGS_MALLOC is always set. By setting + * STABLE_FLAGS_MALLOC only we can clear the existing value. Use the alias + * STABLE_FLAGS_CLEAR to reflect this. + */ +# define STABLE_FLAGS_CLEAR STABLE_FLAGS_MALLOC +# 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; + +DEFINE_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 + +/* + * This flag specifies that RC2254 escaping shall be performed. + */ +#define ASN1_STRFLGS_ESC_2254 0x400 + +/* + * 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) + +DEFINE_STACK_OF(ASN1_INTEGER) + +DEFINE_STACK_OF(ASN1_GENERALSTRING) + +DEFINE_STACK_OF(ASN1_UTF8STRING) + +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; + +DEFINE_STACK_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) + +/* 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 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 + +DECLARE_ASN1_FUNCTIONS_fname(ASN1_TYPE, ASN1_ANY, ASN1_TYPE) + +int ASN1_TYPE_get(const 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_TYPE *ASN1_TYPE_pack_sequence(const ASN1_ITEM *it, void *s, ASN1_TYPE **t); +void *ASN1_TYPE_unpack_sequence(const ASN1_ITEM *it, const ASN1_TYPE *t); + +ASN1_OBJECT *ASN1_OBJECT_new(void); +void ASN1_OBJECT_free(ASN1_OBJECT *a); +int i2d_ASN1_OBJECT(const ASN1_OBJECT *a, unsigned char **pp); +ASN1_OBJECT *d2i_ASN1_OBJECT(ASN1_OBJECT **a, const unsigned char **pp, + long length); + +DECLARE_ASN1_ITEM(ASN1_OBJECT) + +DEFINE_STACK_OF(ASN1_OBJECT) + +ASN1_STRING *ASN1_STRING_new(void); +void ASN1_STRING_free(ASN1_STRING *a); +void ASN1_STRING_clear_free(ASN1_STRING *a); +int ASN1_STRING_copy(ASN1_STRING *dst, const ASN1_STRING *str); +ASN1_STRING *ASN1_STRING_dup(const ASN1_STRING *a); +ASN1_STRING *ASN1_STRING_type_new(int type); +int ASN1_STRING_cmp(const ASN1_STRING *a, const ASN1_STRING *b); + /* + * Since this is used to store all sorts of things, via macros, for now, + * make its data void * + */ +int ASN1_STRING_set(ASN1_STRING *str, const void *data, int len); +void ASN1_STRING_set0(ASN1_STRING *str, void *data, int len); +int ASN1_STRING_length(const ASN1_STRING *x); +void ASN1_STRING_length_set(ASN1_STRING *x, int n); +int ASN1_STRING_type(const ASN1_STRING *x); +DEPRECATEDIN_1_1_0(unsigned char *ASN1_STRING_data(ASN1_STRING *x)) +const unsigned char *ASN1_STRING_get0_data(const ASN1_STRING *x); + +DECLARE_ASN1_FUNCTIONS(ASN1_BIT_STRING) +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(const ASN1_BIT_STRING *a, int n); +int ASN1_BIT_STRING_check(const ASN1_BIT_STRING *a, + const unsigned char *flags, int flags_len); + +int ASN1_BIT_STRING_name_print(BIO *out, ASN1_BIT_STRING *bs, + BIT_STRING_BITNAME *tbl, int indent); +int ASN1_BIT_STRING_num_asc(const char *name, BIT_STRING_BITNAME *tbl); +int ASN1_BIT_STRING_set_asc(ASN1_BIT_STRING *bs, const char *name, int value, + BIT_STRING_BITNAME *tbl); + +DECLARE_ASN1_FUNCTIONS(ASN1_INTEGER) +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); + +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(const ASN1_TIME *t); +ASN1_GENERALIZEDTIME *ASN1_TIME_to_generalizedtime(const ASN1_TIME *t, + ASN1_GENERALIZEDTIME **out); +int ASN1_TIME_set_string(ASN1_TIME *s, const char *str); +int ASN1_TIME_set_string_X509(ASN1_TIME *s, const char *str); +int ASN1_TIME_to_tm(const ASN1_TIME *s, struct tm *tm); +int ASN1_TIME_normalize(ASN1_TIME *s); +int ASN1_TIME_cmp_time_t(const ASN1_TIME *s, time_t t); +int ASN1_TIME_compare(const ASN1_TIME *a, const ASN1_TIME *b); + +int i2a_ASN1_INTEGER(BIO *bp, const ASN1_INTEGER *a); +int a2i_ASN1_INTEGER(BIO *bp, ASN1_INTEGER *bs, char *buf, int size); +int i2a_ASN1_ENUMERATED(BIO *bp, const ASN1_ENUMERATED *a); +int a2i_ASN1_ENUMERATED(BIO *bp, ASN1_ENUMERATED *bs, char *buf, int size); +int i2a_ASN1_OBJECT(BIO *bp, const ASN1_OBJECT *a); +int a2i_ASN1_STRING(BIO *bp, ASN1_STRING *bs, char *buf, int size); +int i2a_ASN1_STRING(BIO *bp, const ASN1_STRING *a, int type); +int i2t_ASN1_OBJECT(char *buf, int buf_len, const 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_get_int64(int64_t *pr, const ASN1_INTEGER *a); +int ASN1_INTEGER_set_int64(ASN1_INTEGER *a, int64_t r); +int ASN1_INTEGER_get_uint64(uint64_t *pr, const ASN1_INTEGER *a); +int ASN1_INTEGER_set_uint64(ASN1_INTEGER *a, uint64_t r); + +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_get_int64(int64_t *pr, const ASN1_ENUMERATED *a); +int ASN1_ENUMERATED_set_int64(ASN1_ENUMERATED *a, int64_t r); + + +int ASN1_ENUMERATED_set(ASN1_ENUMERATED *a, long v); +long ASN1_ENUMERATED_get(const ASN1_ENUMERATED *a); +ASN1_ENUMERATED *BN_to_ASN1_ENUMERATED(const BIGNUM *bn, ASN1_ENUMERATED *ai); +BIGNUM *ASN1_ENUMERATED_to_BN(const 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); + +unsigned long ASN1_tag2bit(int tag); + +/* 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_STDIO +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, const ASN1_STRING *str, unsigned long flags); +# endif + +int ASN1_STRING_to_UTF8(unsigned char **out, const ASN1_STRING *in); + +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, const ASN1_STRING *str, unsigned long flags); +int ASN1_buf_print(BIO *bp, const unsigned char *buf, size_t buflen, int off); +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); +const char *ASN1_tag2str(int tag); + +/* Used to load and write Netscape format cert */ + +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(const 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(const ASN1_TYPE *a, long *num, + unsigned char *data, int max_len); + +void *ASN1_item_unpack(const ASN1_STRING *oct, const ASN1_ITEM *it); + +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); +void ASN1_add_stable_module(void); + +ASN1_TYPE *ASN1_generate_nconf(const char *str, CONF *nconf); +ASN1_TYPE *ASN1_generate_v3(const char *str, X509V3_CTX *cnf); +int ASN1_str2mask(const char *str, unsigned long *pmask); + +/* 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(const ASN1_PCTX *p); +void ASN1_PCTX_set_flags(ASN1_PCTX *p, unsigned long flags); +unsigned long ASN1_PCTX_get_nm_flags(const ASN1_PCTX *p); +void ASN1_PCTX_set_nm_flags(ASN1_PCTX *p, unsigned long flags); +unsigned long ASN1_PCTX_get_cert_flags(const ASN1_PCTX *p); +void ASN1_PCTX_set_cert_flags(ASN1_PCTX *p, unsigned long flags); +unsigned long ASN1_PCTX_get_oid_flags(const ASN1_PCTX *p); +void ASN1_PCTX_set_oid_flags(ASN1_PCTX *p, unsigned long flags); +unsigned long ASN1_PCTX_get_str_flags(const ASN1_PCTX *p); +void ASN1_PCTX_set_str_flags(ASN1_PCTX *p, unsigned long flags); + +ASN1_SCTX *ASN1_SCTX_new(int (*scan_cb) (ASN1_SCTX *ctx)); +void ASN1_SCTX_free(ASN1_SCTX *p); +const ASN1_ITEM *ASN1_SCTX_get_item(ASN1_SCTX *p); +const ASN1_TEMPLATE *ASN1_SCTX_get_template(ASN1_SCTX *p); +unsigned long ASN1_SCTX_get_flags(ASN1_SCTX *p); +void ASN1_SCTX_set_app_data(ASN1_SCTX *p, void *data); +void *ASN1_SCTX_get_app_data(ASN1_SCTX *p); + +const 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); + +const ASN1_ITEM *ASN1_ITEM_lookup(const char *name); +const ASN1_ITEM *ASN1_ITEM_get(size_t i); + +# ifdef __cplusplus +} +# endif +#endif diff --git a/plugin/openssl/include/openssl/asn1_mac.h b/plugin/openssl/include/openssl/asn1_mac.h new file mode 100644 index 000000000..7ac1782a3 --- /dev/null +++ b/plugin/openssl/include/openssl/asn1_mac.h @@ -0,0 +1,10 @@ +/* + * Copyright 2015-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#error "This file is obsolete; please update your software." diff --git a/plugin/openssl/include/openssl/asn1err.h b/plugin/openssl/include/openssl/asn1err.h new file mode 100644 index 000000000..e1ad1fefe --- /dev/null +++ b/plugin/openssl/include/openssl/asn1err.h @@ -0,0 +1,256 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_ASN1ERR_H +# define HEADER_ASN1ERR_H + +# include + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_ASN1_strings(void); + +/* + * ASN1 function codes. + */ +# define ASN1_F_A2D_ASN1_OBJECT 100 +# define ASN1_F_A2I_ASN1_INTEGER 102 +# define ASN1_F_A2I_ASN1_STRING 103 +# define ASN1_F_APPEND_EXP 176 +# define ASN1_F_ASN1_BIO_INIT 113 +# 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_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_DO_LOCK 233 +# define ASN1_F_ASN1_DUP 111 +# define ASN1_F_ASN1_ENC_SAVE 115 +# 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_GENERATE_V3 178 +# define ASN1_F_ASN1_GET_INT64 224 +# define ASN1_F_ASN1_GET_OBJECT 114 +# define ASN1_F_ASN1_GET_UINT64 225 +# define ASN1_F_ASN1_I2D_BIO 116 +# define ASN1_F_ASN1_I2D_FP 117 +# define ASN1_F_ASN1_ITEM_D2I_FP 206 +# define ASN1_F_ASN1_ITEM_DUP 191 +# define ASN1_F_ASN1_ITEM_EMBED_D2I 120 +# define ASN1_F_ASN1_ITEM_EMBED_NEW 121 +# define ASN1_F_ASN1_ITEM_EX_I2D 144 +# define ASN1_F_ASN1_ITEM_FLAGS_I2D 118 +# 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_PCTX_NEW 205 +# define ASN1_F_ASN1_PRIMITIVE_NEW 119 +# define ASN1_F_ASN1_SCTX_NEW 221 +# define ASN1_F_ASN1_SIGN 128 +# define ASN1_F_ASN1_STR2TYPE 179 +# define ASN1_F_ASN1_STRING_GET_INT64 227 +# define ASN1_F_ASN1_STRING_GET_UINT64 230 +# define ASN1_F_ASN1_STRING_SET 186 +# define ASN1_F_ASN1_STRING_TABLE_ADD 129 +# define ASN1_F_ASN1_STRING_TO_BN 228 +# 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_TYPE_GET_INT_OCTETSTRING 134 +# define ASN1_F_ASN1_TYPE_GET_OCTETSTRING 135 +# define ASN1_F_ASN1_UTCTIME_ADJ 218 +# 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_STRING 229 +# 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_C2I_IBUF 226 +# define ASN1_F_C2I_UINT64_INT 101 +# define ASN1_F_COLLECT_DATA 140 +# define ASN1_F_D2I_ASN1_OBJECT 147 +# define ASN1_F_D2I_ASN1_UINTEGER 150 +# define ASN1_F_D2I_AUTOPRIVATEKEY 207 +# define ASN1_F_D2I_PRIVATEKEY 154 +# define ASN1_F_D2I_PUBLICKEY 155 +# define ASN1_F_DO_BUF 142 +# define ASN1_F_DO_CREATE 124 +# define ASN1_F_DO_DUMP 125 +# define ASN1_F_DO_TCREATE 222 +# define ASN1_F_I2A_ASN1_OBJECT 126 +# define ASN1_F_I2D_ASN1_BIO_STREAM 211 +# define ASN1_F_I2D_ASN1_OBJECT 143 +# 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_PUBKEY 165 +# define ASN1_F_LONG_C2I 166 +# define ASN1_F_NDEF_PREFIX 127 +# define ASN1_F_NDEF_SUFFIX 136 +# 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_PBE2_SET_SCRYPT 231 +# 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_PKCS5_SCRYPT_SET 232 +# define ASN1_F_SMIME_READ_ASN1 212 +# define ASN1_F_SMIME_TEXT 213 +# define ASN1_F_STABLE_GET 138 +# define ASN1_F_STBL_MODULE_INIT 223 +# define ASN1_F_UINT32_C2I 105 +# define ASN1_F_UINT32_NEW 139 +# define ASN1_F_UINT64_C2I 112 +# define ASN1_F_UINT64_NEW 141 +# 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_PKEY_NEW 173 + +/* + * ASN1 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_OBJECT_HEADER 102 +# define ASN1_R_BAD_TEMPLATE 230 +# 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_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_SETTING_CIPHER_PARAMS 114 +# define ASN1_R_EXPECTING_AN_INTEGER 115 +# define ASN1_R_EXPECTING_AN_OBJECT 116 +# 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_NEGATIVE_VALUE 226 +# 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_PADDING 221 +# define ASN1_R_ILLEGAL_TAGGED_ANY 127 +# define ASN1_R_ILLEGAL_TIME_VALUE 184 +# define ASN1_R_ILLEGAL_ZERO_CONTENT 222 +# 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_SCRYPT_PARAMETERS 227 +# define ASN1_R_INVALID_SEPARATOR 131 +# define ASN1_R_INVALID_STRING_TABLE_VALUE 218 +# define ASN1_R_INVALID_UNIVERSALSTRING_LENGTH 133 +# define ASN1_R_INVALID_UTF8STRING 134 +# define ASN1_R_INVALID_VALUE 219 +# define ASN1_R_LIST_ERROR 188 +# define ASN1_R_MIME_NO_CONTENT_TYPE 206 +# define ASN1_R_MIME_PARSE_ERROR 207 +# define ASN1_R_MIME_SIG_PARSE_ERROR 208 +# define ASN1_R_MISSING_EOC 137 +# define ASN1_R_MISSING_SECOND_NUMBER 138 +# define ASN1_R_MISSING_VALUE 189 +# define ASN1_R_MSTRING_NOT_UNIVERSAL 139 +# define ASN1_R_MSTRING_WRONG_TAG 140 +# define ASN1_R_NESTED_ASN1_STRING 197 +# define ASN1_R_NESTED_TOO_DEEP 201 +# 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_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_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_THE_ASN1_OBJECT_IDENTIFIER_IS_NOT_KNOWN_FOR_THIS_MD 154 +# define ASN1_R_TIME_NOT_ASCII_FORMAT 193 +# define ASN1_R_TOO_LARGE 223 +# define ASN1_R_TOO_LONG 155 +# define ASN1_R_TOO_SMALL 224 +# define ASN1_R_TYPE_NOT_CONSTRUCTED 156 +# define ASN1_R_TYPE_NOT_PRIMITIVE 195 +# 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_UNSUPPORTED_ANY_DEFINED_BY_TYPE 164 +# define ASN1_R_UNSUPPORTED_CIPHER 228 +# define ASN1_R_UNSUPPORTED_PUBLIC_KEY_TYPE 167 +# define ASN1_R_UNSUPPORTED_TYPE 196 +# define ASN1_R_WRONG_INTEGER_TYPE 225 +# define ASN1_R_WRONG_PUBLIC_KEY_TYPE 200 +# define ASN1_R_WRONG_TAG 168 + +#endif diff --git a/plugin/openssl/include/openssl/asn1t.h b/plugin/openssl/include/openssl/asn1t.h new file mode 100644 index 000000000..a450ba0d9 --- /dev/null +++ b/plugin/openssl/include/openssl/asn1t.h @@ -0,0 +1,945 @@ +/* + * Copyright 2000-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#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) \ + const ASN1_ITEM itname##_it = { + +# define static_ASN1_ITEM_start(itname) \ + static 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 static_ASN1_ITEM_start(itname) \ + static ASN1_ITEM_start(itname) + +# 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) +# define static_ASN1_ITEM_TEMPLATE_END(tname) \ + ;\ + static_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 static_ASN1_SEQUENCE_END(stname) static_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),\ + #tname \ + ASN1_ITEM_end(tname) + +# define static_ASN1_SEQUENCE_END_name(stname, tname) \ + ;\ + static_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) \ + static const ASN1_AUX tname##_aux = {NULL, ASN1_AFLG_REFCOUNT, offsetof(tname, references), offsetof(tname, lock), 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 static_ASN1_NDEF_SEQUENCE_END(tname) \ + ;\ + static_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 static_ASN1_BROKEN_SEQUENCE_END(stname) \ + static_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 static_ASN1_SEQUENCE_END_cb(stname, tname) static_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),\ + #tname \ + ASN1_ITEM_end(tname) +# define static_ASN1_SEQUENCE_END_ref(stname, tname) \ + ;\ + static_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 static_ASN1_CHOICE_END(stname) static_ASN1_CHOICE_END_name(stname, stname) + +# define ASN1_CHOICE_END_name(stname, tname) ASN1_CHOICE_END_selector(stname, tname, type) + +# define static_ASN1_CHOICE_END_name(stname, tname) static_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 static_ASN1_CHOICE_END_selector(stname, tname, selname) \ + ;\ + static_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) } + +/* 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) +/* Embedded simple type */ +# define ASN1_EMBED(stname, field, type) ASN1_EX_TYPE(ASN1_TFLG_EMBED,0, stname, field, type) + +/* OPTIONAL simple type */ +# define ASN1_OPT(stname, field, type) ASN1_EX_TYPE(ASN1_TFLG_OPTIONAL, 0, stname, field, type) +# define ASN1_OPT_EMBED(stname, field, type) ASN1_EX_TYPE(ASN1_TFLG_OPTIONAL|ASN1_TFLG_EMBED, 0, stname, field, type) + +/* IMPLICIT tagged simple type */ +# define ASN1_IMP(stname, field, type, tag) ASN1_IMP_EX(stname, field, type, tag, 0) +# define ASN1_IMP_EMBED(stname, field, type, tag) ASN1_IMP_EX(stname, field, type, tag, ASN1_TFLG_EMBED) + +/* IMPLICIT tagged OPTIONAL simple type */ +# define ASN1_IMP_OPT(stname, field, type, tag) ASN1_IMP_EX(stname, field, type, tag, ASN1_TFLG_OPTIONAL) +# define ASN1_IMP_OPT_EMBED(stname, field, type, tag) ASN1_IMP_EX(stname, field, type, tag, ASN1_TFLG_OPTIONAL|ASN1_TFLG_EMBED) + +/* Same as above but EXPLICIT */ + +# define ASN1_EXP(stname, field, type, tag) ASN1_EXP_EX(stname, field, type, tag, 0) +# define ASN1_EXP_EMBED(stname, field, type, tag) ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_EMBED) +# define ASN1_EXP_OPT(stname, field, type, tag) ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_OPTIONAL) +# define ASN1_EXP_OPT_EMBED(stname, field, type, tag) ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_OPTIONAL|ASN1_TFLG_EMBED) + +/* 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, adb_cb, def, none) \ + ;\ + static const ASN1_ADB name##_adb = {\ + flags,\ + offsetof(name, field),\ + adb_cb,\ + name##_adbtbl,\ + sizeof(name##_adbtbl) / sizeof(ASN1_ADB_TABLE),\ + def,\ + none\ + } + +# else + +# define ASN1_ADB_END(name, flags, field, adb_cb, def, none) \ + ;\ + static const ASN1_ITEM *name##_adb(void) \ + { \ + static const ASN1_ADB internal_adb = \ + {\ + flags,\ + offsetof(name, field),\ + adb_cb,\ + 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 */ + const char *field_name; /* Field name */ + 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 */ + int (*adb_cb)(long *psel); /* Application callback */ + 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 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) + +/* Field is embedded and not a pointer */ +# define ASN1_TFLG_EMBED (0x1 << 12) + +/* 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) */ + const char *sname; /* Structure name */ +}; + +/*- + * 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. + * + * 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_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 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_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) + +# 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));\ + } + +# define IMPLEMENT_STATIC_ASN1_ENCODE_FUNCTIONS(stname) \ + static stname *d2i_##stname(stname **a, \ + const unsigned char **in, long len) \ + { \ + return (stname *)ASN1_item_d2i((ASN1_VALUE **)a, in, len, \ + ASN1_ITEM_rptr(stname)); \ + } \ + static int i2d_##stname(stname *a, unsigned char **out) \ + { \ + return ASN1_item_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(INT32) +DECLARE_ASN1_ITEM(ZINT32) +DECLARE_ASN1_ITEM(UINT32) +DECLARE_ASN1_ITEM(ZUINT32) +DECLARE_ASN1_ITEM(INT64) +DECLARE_ASN1_ITEM(ZINT64) +DECLARE_ASN1_ITEM(UINT64) +DECLARE_ASN1_ITEM(ZUINT64) + +# if OPENSSL_API_COMPAT < 0x10200000L +/* + * LONG and ZLONG are strongly discouraged for use as stored data, as the + * underlying C type (long) differs in size depending on the architecture. + * They are designed with 32-bit longs in mind. + */ +DECLARE_ASN1_ITEM(LONG) +DECLARE_ASN1_ITEM(ZLONG) +# endif + +DEFINE_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_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); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/plugin/openssl/include/openssl/async.h b/plugin/openssl/include/openssl/async.h new file mode 100644 index 000000000..7052b8905 --- /dev/null +++ b/plugin/openssl/include/openssl/async.h @@ -0,0 +1,76 @@ +/* + * Copyright 2015-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include + +#ifndef HEADER_ASYNC_H +# define HEADER_ASYNC_H + +#if defined(_WIN32) +# if defined(BASETYPES) || defined(_WINDEF_H) +/* application has to include to use this */ +#define OSSL_ASYNC_FD HANDLE +#define OSSL_BAD_ASYNC_FD INVALID_HANDLE_VALUE +# endif +#else +#define OSSL_ASYNC_FD int +#define OSSL_BAD_ASYNC_FD -1 +#endif +# include + + +# ifdef __cplusplus +extern "C" { +# endif + +typedef struct async_job_st ASYNC_JOB; +typedef struct async_wait_ctx_st ASYNC_WAIT_CTX; + +#define ASYNC_ERR 0 +#define ASYNC_NO_JOBS 1 +#define ASYNC_PAUSE 2 +#define ASYNC_FINISH 3 + +int ASYNC_init_thread(size_t max_size, size_t init_size); +void ASYNC_cleanup_thread(void); + +#ifdef OSSL_ASYNC_FD +ASYNC_WAIT_CTX *ASYNC_WAIT_CTX_new(void); +void ASYNC_WAIT_CTX_free(ASYNC_WAIT_CTX *ctx); +int ASYNC_WAIT_CTX_set_wait_fd(ASYNC_WAIT_CTX *ctx, const void *key, + OSSL_ASYNC_FD fd, + void *custom_data, + void (*cleanup)(ASYNC_WAIT_CTX *, const void *, + OSSL_ASYNC_FD, void *)); +int ASYNC_WAIT_CTX_get_fd(ASYNC_WAIT_CTX *ctx, const void *key, + OSSL_ASYNC_FD *fd, void **custom_data); +int ASYNC_WAIT_CTX_get_all_fds(ASYNC_WAIT_CTX *ctx, OSSL_ASYNC_FD *fd, + size_t *numfds); +int ASYNC_WAIT_CTX_get_changed_fds(ASYNC_WAIT_CTX *ctx, OSSL_ASYNC_FD *addfd, + size_t *numaddfds, OSSL_ASYNC_FD *delfd, + size_t *numdelfds); +int ASYNC_WAIT_CTX_clear_fd(ASYNC_WAIT_CTX *ctx, const void *key); +#endif + +int ASYNC_is_capable(void); + +int ASYNC_start_job(ASYNC_JOB **job, ASYNC_WAIT_CTX *ctx, int *ret, + int (*func)(void *), void *args, size_t size); +int ASYNC_pause_job(void); + +ASYNC_JOB *ASYNC_get_current_job(void); +ASYNC_WAIT_CTX *ASYNC_get_wait_ctx(ASYNC_JOB *job); +void ASYNC_block_pause(void); +void ASYNC_unblock_pause(void); + + +# ifdef __cplusplus +} +# endif +#endif diff --git a/plugin/openssl/include/openssl/asyncerr.h b/plugin/openssl/include/openssl/asyncerr.h new file mode 100644 index 000000000..91afbbb2f --- /dev/null +++ b/plugin/openssl/include/openssl/asyncerr.h @@ -0,0 +1,42 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_ASYNCERR_H +# define HEADER_ASYNCERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_ASYNC_strings(void); + +/* + * ASYNC function codes. + */ +# define ASYNC_F_ASYNC_CTX_NEW 100 +# define ASYNC_F_ASYNC_INIT_THREAD 101 +# define ASYNC_F_ASYNC_JOB_NEW 102 +# define ASYNC_F_ASYNC_PAUSE_JOB 103 +# define ASYNC_F_ASYNC_START_FUNC 104 +# define ASYNC_F_ASYNC_START_JOB 105 +# define ASYNC_F_ASYNC_WAIT_CTX_SET_WAIT_FD 106 + +/* + * ASYNC reason codes. + */ +# define ASYNC_R_FAILED_TO_SET_POOL 101 +# define ASYNC_R_FAILED_TO_SWAP_CONTEXT 102 +# define ASYNC_R_INIT_FAILED 105 +# define ASYNC_R_INVALID_POOL_SIZE 103 + +#endif diff --git a/plugin/openssl/include/openssl/bio.h b/plugin/openssl/include/openssl/bio.h new file mode 100644 index 000000000..ae559a510 --- /dev/null +++ b/plugin/openssl/include/openssl/bio.h @@ -0,0 +1,801 @@ +/* + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_BIO_H +# define HEADER_BIO_H + +# include + +# ifndef OPENSSL_NO_STDIO +# include +# endif +# include + +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +/* There are the classes of BIOs */ +# define BIO_TYPE_DESCRIPTOR 0x0100 /* socket, fd, connect or accept */ +# define BIO_TYPE_FILTER 0x0200 +# define BIO_TYPE_SOURCE_SINK 0x0400 + +/* These are the 'types' of BIOs */ +# define BIO_TYPE_NONE 0 +# define BIO_TYPE_MEM ( 1|BIO_TYPE_SOURCE_SINK) +# define BIO_TYPE_FILE ( 2|BIO_TYPE_SOURCE_SINK) + +# define BIO_TYPE_FD ( 4|BIO_TYPE_SOURCE_SINK|BIO_TYPE_DESCRIPTOR) +# define BIO_TYPE_SOCKET ( 5|BIO_TYPE_SOURCE_SINK|BIO_TYPE_DESCRIPTOR) +# define BIO_TYPE_NULL ( 6|BIO_TYPE_SOURCE_SINK) +# define BIO_TYPE_SSL ( 7|BIO_TYPE_FILTER) +# define BIO_TYPE_MD ( 8|BIO_TYPE_FILTER) +# define BIO_TYPE_BUFFER ( 9|BIO_TYPE_FILTER) +# define BIO_TYPE_CIPHER (10|BIO_TYPE_FILTER) +# define BIO_TYPE_BASE64 (11|BIO_TYPE_FILTER) +# define BIO_TYPE_CONNECT (12|BIO_TYPE_SOURCE_SINK|BIO_TYPE_DESCRIPTOR) +# define BIO_TYPE_ACCEPT (13|BIO_TYPE_SOURCE_SINK|BIO_TYPE_DESCRIPTOR) + +# define BIO_TYPE_NBIO_TEST (16|BIO_TYPE_FILTER)/* server proxy BIO */ +# define BIO_TYPE_NULL_FILTER (17|BIO_TYPE_FILTER) +# define BIO_TYPE_BIO (19|BIO_TYPE_SOURCE_SINK)/* half a BIO pair */ +# define BIO_TYPE_LINEBUFFER (20|BIO_TYPE_FILTER) +# define BIO_TYPE_DGRAM (21|BIO_TYPE_SOURCE_SINK|BIO_TYPE_DESCRIPTOR) +# define BIO_TYPE_ASN1 (22|BIO_TYPE_FILTER) +# define BIO_TYPE_COMP (23|BIO_TYPE_FILTER) +# ifndef OPENSSL_NO_SCTP +# define BIO_TYPE_DGRAM_SCTP (24|BIO_TYPE_SOURCE_SINK|BIO_TYPE_DESCRIPTOR) +# endif + +#define BIO_TYPE_START 128 + +/* + * 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 */ +# define BIO_CTRL_SET_CALLBACK 14/* opt - set callback function */ +# define BIO_CTRL_GET_CALLBACK 15/* opt - set callback function */ + +# define BIO_CTRL_PEEK 29/* BIO_f_buffer special */ +# 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 + +/* Deliberately outside of OPENSSL_NO_SCTP - used in bss_dgram.c */ +# define BIO_CTRL_DGRAM_SCTP_SET_IN_HANDSHAKE 50 +# ifndef OPENSSL_NO_SCTP +/* SCTP stuff */ +# 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 + +# define BIO_CTRL_DGRAM_SET_PEEK_MODE 71 + +/* 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 + +# define BIO_FLAGS_BASE64_NO_NL 0x100 + +/* + * This is used with memory BIOs: + * BIO_FLAGS_MEM_RDONLY means we shouldn't free up or change the data in any way; + * BIO_FLAGS_NONCLEAR_RST means we shouldn't clear data on reset. + */ +# define BIO_FLAGS_MEM_RDONLY 0x200 +# define BIO_FLAGS_NONCLEAR_RST 0x400 +# define BIO_FLAGS_IN_EOF 0x800 + +typedef union bio_addr_st BIO_ADDR; +typedef struct bio_addrinfo_st BIO_ADDRINFO; + +int BIO_get_new_index(void); +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) + +typedef long (*BIO_callback_fn)(BIO *b, int oper, const char *argp, int argi, + long argl, long ret); +typedef long (*BIO_callback_fn_ex)(BIO *b, int oper, const char *argp, + size_t len, int argi, + long argl, int ret, size_t *processed); +BIO_callback_fn BIO_get_callback(const BIO *b); +void BIO_set_callback(BIO *b, BIO_callback_fn callback); + +BIO_callback_fn_ex BIO_get_callback_ex(const BIO *b); +void BIO_set_callback_ex(BIO *b, BIO_callback_fn_ex callback); + +char *BIO_get_callback_arg(const BIO *b); +void BIO_set_callback_arg(BIO *b, char *arg); + +typedef struct bio_method_st BIO_METHOD; + +const char *BIO_method_name(const BIO *b); +int BIO_method_type(const BIO *b); + +typedef int BIO_info_cb(BIO *, int, int); +typedef BIO_info_cb bio_info_cb; /* backward compatibility */ + +DEFINE_STACK_OF(BIO) + +/* 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 + +/* + * #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_C_SET_CONNECT_MODE 155 + +# 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) + +# define BIO_set_nbio(b,n) BIO_ctrl(b,BIO_C_SET_NBIO,(n),NULL) + +# ifndef OPENSSL_NO_SOCK +/* IP families we support, for BIO_s_connect() and BIO_s_accept() */ +/* Note: the underlying operating system may not support some of them */ +# define BIO_FAMILY_IPV4 4 +# define BIO_FAMILY_IPV6 6 +# define BIO_FAMILY_IPANY 256 + +/* BIO_s_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_address(b,addr) BIO_ctrl(b,BIO_C_SET_CONNECT,2, \ + (char *)(addr)) +# define BIO_set_conn_ip_family(b,f) BIO_int_ctrl(b,BIO_C_SET_CONNECT,3,f) +# define BIO_get_conn_hostname(b) ((const char *)BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,0)) +# define BIO_get_conn_port(b) ((const char *)BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,1)) +# define BIO_get_conn_address(b) ((const BIO_ADDR *)BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,2)) +# define BIO_get_conn_ip_family(b) BIO_ctrl(b,BIO_C_GET_CONNECT,3,NULL) +# define BIO_set_conn_mode(b,n) BIO_ctrl(b,BIO_C_SET_CONNECT_MODE,(n),NULL) + +/* BIO_s_accept() */ +# define BIO_set_accept_name(b,name) BIO_ctrl(b,BIO_C_SET_ACCEPT,0, \ + (char *)(name)) +# define BIO_set_accept_port(b,port) BIO_ctrl(b,BIO_C_SET_ACCEPT,1, \ + (char *)(port)) +# define BIO_get_accept_name(b) ((const char *)BIO_ptr_ctrl(b,BIO_C_GET_ACCEPT,0)) +# define BIO_get_accept_port(b) ((const char *)BIO_ptr_ctrl(b,BIO_C_GET_ACCEPT,1)) +# define BIO_get_peer_name(b) ((const char *)BIO_ptr_ctrl(b,BIO_C_GET_ACCEPT,2)) +# define BIO_get_peer_port(b) ((const char *)BIO_ptr_ctrl(b,BIO_C_GET_ACCEPT,3)) +/* #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,2,(n)?(void *)"a":NULL) +# define BIO_set_accept_bios(b,bio) BIO_ctrl(b,BIO_C_SET_ACCEPT,3, \ + (char *)(bio)) +# define BIO_set_accept_ip_family(b,f) BIO_int_ctrl(b,BIO_C_SET_ACCEPT,4,f) +# define BIO_get_accept_ip_family(b) BIO_ctrl(b,BIO_C_GET_ACCEPT,4,NULL) + +/* Aliases kept for backward compatibility */ +# define BIO_BIND_NORMAL 0 +# define BIO_BIND_REUSEADDR BIO_SOCK_REUSEADDR +# define BIO_BIND_REUSEADDR_IF_UNUSED BIO_SOCK_REUSEADDR +# define BIO_set_bind_mode(b,mode) BIO_ctrl(b,BIO_C_SET_BIND_MODE,mode,NULL) +# define BIO_get_bind_mode(b) BIO_ctrl(b,BIO_C_GET_BIND_MODE,0,NULL) + +/* BIO_s_accept() and BIO_s_connect() */ +# define BIO_do_connect(b) BIO_do_handshake(b) +# define BIO_do_accept(b) BIO_do_handshake(b) +# endif /* OPENSSL_NO_SOCK */ + +# define BIO_do_handshake(b) BIO_ctrl(b,BIO_C_DO_STATE_MACHINE,0,NULL) + +/* BIO_s_datagram(), BIO_s_fd(), BIO_s_socket(), BIO_s_accept() and BIO_s_connect() */ +# define BIO_set_fd(b,fd,c) BIO_int_ctrl(b,BIO_C_SET_FD,c,fd) +# define BIO_get_fd(b,c) BIO_ctrl(b,BIO_C_GET_FD,0,(char *)(c)) + +/* BIO_s_file() */ +# define BIO_set_fp(b,fp,c) BIO_ctrl(b,BIO_C_SET_FILE_PTR,c,(char *)(fp)) +# define BIO_get_fp(b,fpp) BIO_ctrl(b,BIO_C_GET_FILE_PTR,0,(char *)(fpp)) + +/* BIO_s_fd() and BIO_s_file() */ +# define BIO_seek(b,ofs) (int)BIO_ctrl(b,BIO_C_FILE_SEEK,ofs,NULL) +# define BIO_tell(b) (int)BIO_ctrl(b,BIO_C_FILE_TELL,0,NULL) + +/* + * name is cast to lose const, but might be better to route through a + * function so we can do it safely + */ +# ifdef CONST_STRICT +/* + * If you are wondering why this isn't defined, its because CONST_STRICT is + * purely a compile-time kludge to allow const to be checked. + */ +int BIO_read_filename(BIO *b, const char *name); +# else +# define BIO_read_filename(b,name) (int)BIO_ctrl(b,BIO_C_SET_FILENAME, \ + BIO_CLOSE|BIO_FP_READ,(char *)(name)) +# endif +# define BIO_write_filename(b,name) (int)BIO_ctrl(b,BIO_C_SET_FILENAME, \ + BIO_CLOSE|BIO_FP_WRITE,name) +# define BIO_append_filename(b,name) (int)BIO_ctrl(b,BIO_C_SET_FILENAME, \ + BIO_CLOSE|BIO_FP_APPEND,name) +# define BIO_rw_filename(b,name) (int)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) +# define BIO_buffer_peek(b,s,l) BIO_ctrl(b,BIO_CTRL_PEEK,(l),(s)) + +/* 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,peer) \ + (int)BIO_ctrl(b, BIO_CTRL_DGRAM_SET_CONNECTED, 0, (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) + +#define BIO_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_BIO, l, p, newf, dupf, freef) +int BIO_set_ex_data(BIO *bio, int idx, void *data); +void *BIO_get_ex_data(BIO *bio, int idx); +uint64_t BIO_number_read(BIO *bio); +uint64_t 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); + +const BIO_METHOD *BIO_s_file(void); +BIO *BIO_new_file(const char *filename, const char *mode); +# ifndef OPENSSL_NO_STDIO +BIO *BIO_new_fp(FILE *stream, int close_flag); +# endif +BIO *BIO_new(const BIO_METHOD *type); +int BIO_free(BIO *a); +void BIO_set_data(BIO *a, void *ptr); +void *BIO_get_data(BIO *a); +void BIO_set_init(BIO *a, int init); +int BIO_get_init(BIO *a); +void BIO_set_shutdown(BIO *a, int shut); +int BIO_get_shutdown(BIO *a); +void BIO_vfree(BIO *a); +int BIO_up_ref(BIO *a); +int BIO_read(BIO *b, void *data, int dlen); +int BIO_read_ex(BIO *b, void *data, size_t dlen, size_t *readbytes); +int BIO_gets(BIO *bp, char *buf, int size); +int BIO_write(BIO *b, const void *data, int dlen); +int BIO_write_ex(BIO *b, const void *data, size_t dlen, size_t *written); +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, BIO_info_cb *fp); +void *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); +void BIO_set_next(BIO *b, BIO *next); +BIO *BIO_get_retry_BIO(BIO *bio, int *reason); +int BIO_get_retry_reason(BIO *bio); +void BIO_set_retry_reason(BIO *bio, int reason); +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); + +const BIO_METHOD *BIO_s_mem(void); +const BIO_METHOD *BIO_s_secmem(void); +BIO *BIO_new_mem_buf(const void *buf, int len); +# ifndef OPENSSL_NO_SOCK +const BIO_METHOD *BIO_s_socket(void); +const BIO_METHOD *BIO_s_connect(void); +const BIO_METHOD *BIO_s_accept(void); +# endif +const BIO_METHOD *BIO_s_fd(void); +const BIO_METHOD *BIO_s_log(void); +const BIO_METHOD *BIO_s_bio(void); +const BIO_METHOD *BIO_s_null(void); +const BIO_METHOD *BIO_f_null(void); +const BIO_METHOD *BIO_f_buffer(void); +const BIO_METHOD *BIO_f_linebuffer(void); +const BIO_METHOD *BIO_f_nbio_test(void); +# ifndef OPENSSL_NO_DGRAM +const BIO_METHOD *BIO_s_datagram(void); +int BIO_dgram_non_fatal_error(int error); +BIO *BIO_new_dgram(int fd, int close_flag); +# ifndef OPENSSL_NO_SCTP +const BIO_METHOD *BIO_s_datagram_sctp(void); +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 +# endif + +# ifndef OPENSSL_NO_SOCK +int BIO_sock_should_retry(int i); +int BIO_sock_non_fatal_error(int error); +# endif + +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_STDIO +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); + +# ifndef OPENSSL_NO_SOCK +BIO_ADDR *BIO_ADDR_new(void); +int BIO_ADDR_rawmake(BIO_ADDR *ap, int family, + const void *where, size_t wherelen, unsigned short port); +void BIO_ADDR_free(BIO_ADDR *); +void BIO_ADDR_clear(BIO_ADDR *ap); +int BIO_ADDR_family(const BIO_ADDR *ap); +int BIO_ADDR_rawaddress(const BIO_ADDR *ap, void *p, size_t *l); +unsigned short BIO_ADDR_rawport(const BIO_ADDR *ap); +char *BIO_ADDR_hostname_string(const BIO_ADDR *ap, int numeric); +char *BIO_ADDR_service_string(const BIO_ADDR *ap, int numeric); +char *BIO_ADDR_path_string(const BIO_ADDR *ap); + +const BIO_ADDRINFO *BIO_ADDRINFO_next(const BIO_ADDRINFO *bai); +int BIO_ADDRINFO_family(const BIO_ADDRINFO *bai); +int BIO_ADDRINFO_socktype(const BIO_ADDRINFO *bai); +int BIO_ADDRINFO_protocol(const BIO_ADDRINFO *bai); +const BIO_ADDR *BIO_ADDRINFO_address(const BIO_ADDRINFO *bai); +void BIO_ADDRINFO_free(BIO_ADDRINFO *bai); + +enum BIO_hostserv_priorities { + BIO_PARSE_PRIO_HOST, BIO_PARSE_PRIO_SERV +}; +int BIO_parse_hostserv(const char *hostserv, char **host, char **service, + enum BIO_hostserv_priorities hostserv_prio); +enum BIO_lookup_type { + BIO_LOOKUP_CLIENT, BIO_LOOKUP_SERVER +}; +int BIO_lookup(const char *host, const char *service, + enum BIO_lookup_type lookup_type, + int family, int socktype, BIO_ADDRINFO **res); +int BIO_lookup_ex(const char *host, const char *service, + int lookup_type, int family, int socktype, int protocol, + BIO_ADDRINFO **res); +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_sock_init(void); +# if OPENSSL_API_COMPAT < 0x10100000L +# define BIO_sock_cleanup() while(0) continue +# endif +int BIO_set_tcp_ndelay(int sock, int turn_on); + +DEPRECATEDIN_1_1_0(struct hostent *BIO_gethostbyname(const char *name)) +DEPRECATEDIN_1_1_0(int BIO_get_port(const char *str, unsigned short *port_ptr)) +DEPRECATEDIN_1_1_0(int BIO_get_host_ip(const char *str, unsigned char *ip)) +DEPRECATEDIN_1_1_0(int BIO_get_accept_socket(char *host_port, int mode)) +DEPRECATEDIN_1_1_0(int BIO_accept(int sock, char **ip_port)) + +union BIO_sock_info_u { + BIO_ADDR *addr; +}; +enum BIO_sock_info_type { + BIO_SOCK_INFO_ADDRESS +}; +int BIO_sock_info(int sock, + enum BIO_sock_info_type type, union BIO_sock_info_u *info); + +# define BIO_SOCK_REUSEADDR 0x01 +# define BIO_SOCK_V6_ONLY 0x02 +# define BIO_SOCK_KEEPALIVE 0x04 +# define BIO_SOCK_NONBLOCK 0x08 +# define BIO_SOCK_NODELAY 0x10 + +int BIO_socket(int domain, int socktype, int protocol, int options); +int BIO_connect(int sock, const BIO_ADDR *addr, int options); +int BIO_bind(int sock, const BIO_ADDR *addr, int options); +int BIO_listen(int sock, const BIO_ADDR *addr, int options); +int BIO_accept_ex(int accept_sock, BIO_ADDR *addr, int options); +int BIO_closesocket(int sock); + +BIO *BIO_new_socket(int sock, int close_flag); +BIO *BIO_new_connect(const char *host_port); +BIO *BIO_new_accept(const char *host_port); +# endif /* OPENSSL_NO_SOCK*/ + +BIO *BIO_new_fd(int fd, int close_flag); + +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); + */ + +# define ossl_bio__attr__(x) +# if defined(__GNUC__) && defined(__STDC_VERSION__) \ + && !defined(__APPLE__) + /* + * Because we support the 'z' modifier, which made its appearance in C99, + * we can't use __attribute__ with pre C99 dialects. + */ +# if __STDC_VERSION__ >= 199901L +# undef ossl_bio__attr__ +# define ossl_bio__attr__ __attribute__ +# if __GNUC__*10 + __GNUC_MINOR__ >= 44 +# define ossl_bio__printf__ __gnu_printf__ +# else +# define ossl_bio__printf__ __printf__ +# endif +# endif +# endif +int BIO_printf(BIO *bio, const char *format, ...) +ossl_bio__attr__((__format__(ossl_bio__printf__, 2, 3))); +int BIO_vprintf(BIO *bio, const char *format, va_list args) +ossl_bio__attr__((__format__(ossl_bio__printf__, 2, 0))); +int BIO_snprintf(char *buf, size_t n, const char *format, ...) +ossl_bio__attr__((__format__(ossl_bio__printf__, 3, 4))); +int BIO_vsnprintf(char *buf, size_t n, const char *format, va_list args) +ossl_bio__attr__((__format__(ossl_bio__printf__, 3, 0))); +# undef ossl_bio__attr__ +# undef ossl_bio__printf__ + + +BIO_METHOD *BIO_meth_new(int type, const char *name); +void BIO_meth_free(BIO_METHOD *biom); +int (*BIO_meth_get_write(const BIO_METHOD *biom)) (BIO *, const char *, int); +int (*BIO_meth_get_write_ex(const BIO_METHOD *biom)) (BIO *, const char *, size_t, + size_t *); +int BIO_meth_set_write(BIO_METHOD *biom, + int (*write) (BIO *, const char *, int)); +int BIO_meth_set_write_ex(BIO_METHOD *biom, + int (*bwrite) (BIO *, const char *, size_t, size_t *)); +int (*BIO_meth_get_read(const BIO_METHOD *biom)) (BIO *, char *, int); +int (*BIO_meth_get_read_ex(const BIO_METHOD *biom)) (BIO *, char *, size_t, size_t *); +int BIO_meth_set_read(BIO_METHOD *biom, + int (*read) (BIO *, char *, int)); +int BIO_meth_set_read_ex(BIO_METHOD *biom, + int (*bread) (BIO *, char *, size_t, size_t *)); +int (*BIO_meth_get_puts(const BIO_METHOD *biom)) (BIO *, const char *); +int BIO_meth_set_puts(BIO_METHOD *biom, + int (*puts) (BIO *, const char *)); +int (*BIO_meth_get_gets(const BIO_METHOD *biom)) (BIO *, char *, int); +int BIO_meth_set_gets(BIO_METHOD *biom, + int (*gets) (BIO *, char *, int)); +long (*BIO_meth_get_ctrl(const BIO_METHOD *biom)) (BIO *, int, long, void *); +int BIO_meth_set_ctrl(BIO_METHOD *biom, + long (*ctrl) (BIO *, int, long, void *)); +int (*BIO_meth_get_create(const BIO_METHOD *bion)) (BIO *); +int BIO_meth_set_create(BIO_METHOD *biom, int (*create) (BIO *)); +int (*BIO_meth_get_destroy(const BIO_METHOD *biom)) (BIO *); +int BIO_meth_set_destroy(BIO_METHOD *biom, int (*destroy) (BIO *)); +long (*BIO_meth_get_callback_ctrl(const BIO_METHOD *biom)) + (BIO *, int, BIO_info_cb *); +int BIO_meth_set_callback_ctrl(BIO_METHOD *biom, + long (*callback_ctrl) (BIO *, int, + BIO_info_cb *)); + +# ifdef __cplusplus +} +# endif +#endif diff --git a/plugin/openssl/include/openssl/bioerr.h b/plugin/openssl/include/openssl/bioerr.h new file mode 100644 index 000000000..46e2c96ee --- /dev/null +++ b/plugin/openssl/include/openssl/bioerr.h @@ -0,0 +1,124 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_BIOERR_H +# define HEADER_BIOERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_BIO_strings(void); + +/* + * BIO function codes. + */ +# define BIO_F_ACPT_STATE 100 +# define BIO_F_ADDRINFO_WRAP 148 +# define BIO_F_ADDR_STRINGS 134 +# define BIO_F_BIO_ACCEPT 101 +# define BIO_F_BIO_ACCEPT_EX 137 +# define BIO_F_BIO_ACCEPT_NEW 152 +# define BIO_F_BIO_ADDR_NEW 144 +# define BIO_F_BIO_BIND 147 +# define BIO_F_BIO_CALLBACK_CTRL 131 +# define BIO_F_BIO_CONNECT 138 +# define BIO_F_BIO_CONNECT_NEW 153 +# define BIO_F_BIO_CTRL 103 +# define BIO_F_BIO_GETS 104 +# define BIO_F_BIO_GET_HOST_IP 106 +# define BIO_F_BIO_GET_NEW_INDEX 102 +# define BIO_F_BIO_GET_PORT 107 +# define BIO_F_BIO_LISTEN 139 +# define BIO_F_BIO_LOOKUP 135 +# define BIO_F_BIO_LOOKUP_EX 143 +# define BIO_F_BIO_MAKE_PAIR 121 +# define BIO_F_BIO_METH_NEW 146 +# define BIO_F_BIO_NEW 108 +# define BIO_F_BIO_NEW_DGRAM_SCTP 145 +# 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_PARSE_HOSTSERV 136 +# define BIO_F_BIO_PUTS 110 +# define BIO_F_BIO_READ 111 +# define BIO_F_BIO_READ_EX 105 +# define BIO_F_BIO_READ_INTERN 120 +# define BIO_F_BIO_SOCKET 140 +# define BIO_F_BIO_SOCKET_NBIO 142 +# define BIO_F_BIO_SOCK_INFO 141 +# define BIO_F_BIO_SOCK_INIT 112 +# define BIO_F_BIO_WRITE 113 +# define BIO_F_BIO_WRITE_EX 119 +# define BIO_F_BIO_WRITE_INTERN 128 +# define BIO_F_BUFFER_CTRL 114 +# define BIO_F_CONN_CTRL 127 +# define BIO_F_CONN_STATE 115 +# define BIO_F_DGRAM_SCTP_NEW 149 +# define BIO_F_DGRAM_SCTP_READ 132 +# define BIO_F_DGRAM_SCTP_WRITE 133 +# define BIO_F_DOAPR_OUTCH 150 +# define BIO_F_FILE_CTRL 116 +# define BIO_F_FILE_READ 130 +# define BIO_F_LINEBUFFER_CTRL 129 +# define BIO_F_LINEBUFFER_NEW 151 +# define BIO_F_MEM_WRITE 117 +# define BIO_F_NBIOF_NEW 154 +# define BIO_F_SLG_WRITE 155 +# define BIO_F_SSL_NEW 118 + +/* + * BIO reason codes. + */ +# define BIO_R_ACCEPT_ERROR 100 +# define BIO_R_ADDRINFO_ADDR_IS_NOT_AF_INET 141 +# define BIO_R_AMBIGUOUS_HOST_OR_SERVICE 129 +# define BIO_R_BAD_FOPEN_MODE 101 +# define BIO_R_BROKEN_PIPE 124 +# define BIO_R_CONNECT_ERROR 103 +# define BIO_R_GETHOSTBYNAME_ADDR_IS_NOT_AF_INET 107 +# define BIO_R_GETSOCKNAME_ERROR 132 +# define BIO_R_GETSOCKNAME_TRUNCATED_ADDRESS 133 +# define BIO_R_GETTING_SOCKTYPE 134 +# define BIO_R_INVALID_ARGUMENT 125 +# define BIO_R_INVALID_SOCKET 135 +# define BIO_R_IN_USE 123 +# define BIO_R_LENGTH_TOO_LONG 102 +# define BIO_R_LISTEN_V6_ONLY 136 +# define BIO_R_LOOKUP_RETURNED_NOTHING 142 +# define BIO_R_MALFORMED_HOST_OR_SERVICE 130 +# define BIO_R_NBIO_CONNECT_ERROR 110 +# define BIO_R_NO_ACCEPT_ADDR_OR_SERVICE_SPECIFIED 143 +# define BIO_R_NO_HOSTNAME_OR_SERVICE_SPECIFIED 144 +# define BIO_R_NO_PORT_DEFINED 113 +# define BIO_R_NO_SUCH_FILE 128 +# define BIO_R_NULL_PARAMETER 115 +# define BIO_R_UNABLE_TO_BIND_SOCKET 117 +# define BIO_R_UNABLE_TO_CREATE_SOCKET 118 +# define BIO_R_UNABLE_TO_KEEPALIVE 137 +# define BIO_R_UNABLE_TO_LISTEN_SOCKET 119 +# define BIO_R_UNABLE_TO_NODELAY 138 +# define BIO_R_UNABLE_TO_REUSEADDR 139 +# define BIO_R_UNAVAILABLE_IP_FAMILY 145 +# define BIO_R_UNINITIALIZED 120 +# define BIO_R_UNKNOWN_INFO_TYPE 140 +# define BIO_R_UNSUPPORTED_IP_FAMILY 146 +# define BIO_R_UNSUPPORTED_METHOD 121 +# define BIO_R_UNSUPPORTED_PROTOCOL_FAMILY 131 +# define BIO_R_WRITE_TO_READ_ONLY_BIO 126 +# define BIO_R_WSASTARTUP 122 + +#endif diff --git a/plugin/openssl/include/openssl/blowfish.h b/plugin/openssl/include/openssl/blowfish.h new file mode 100644 index 000000000..cd3e460e9 --- /dev/null +++ b/plugin/openssl/include/openssl/blowfish.h @@ -0,0 +1,61 @@ +/* + * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_BLOWFISH_H +# define HEADER_BLOWFISH_H + +# include + +# ifndef OPENSSL_NO_BF +# include +# ifdef __cplusplus +extern "C" { +# endif + +# define BF_ENCRYPT 1 +# define BF_DECRYPT 0 + +/*- + * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + * ! BF_LONG has to be at least 32 bits wide. ! + * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + */ +# define BF_LONG unsigned int + +# 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; + +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 + +#endif diff --git a/plugin/openssl/include/openssl/bn.h b/plugin/openssl/include/openssl/bn.h new file mode 100644 index 000000000..d87766049 --- /dev/null +++ b/plugin/openssl/include/openssl/bn.h @@ -0,0 +1,539 @@ +/* + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_BN_H +# define HEADER_BN_H + +# include +# ifndef OPENSSL_NO_STDIO +# include +# endif +# include +# include +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * 64-bit processor with LP64 ABI + */ +# ifdef SIXTY_FOUR_BIT_LONG +# define BN_ULONG unsigned long +# define BN_BYTES 8 +# endif + +/* + * 64-bit processor other than LP64 ABI + */ +# ifdef SIXTY_FOUR_BIT +# define BN_ULONG unsigned long long +# define BN_BYTES 8 +# endif + +# ifdef THIRTY_TWO_BIT +# define BN_ULONG unsigned int +# define BN_BYTES 4 +# endif + +# define BN_BITS2 (BN_BYTES * 8) +# define BN_BITS (BN_BITS2 * 2) +# define BN_TBIT ((BN_ULONG)1 << (BN_BITS2 - 1)) + +# 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 +# define BN_FLG_SECURE 0x08 + +# if OPENSSL_API_COMPAT < 0x00908000L +/* deprecated name for the flag */ +# define BN_FLG_EXP_CONSTTIME BN_FLG_CONSTTIME +# define BN_FLG_FREE 0x8000 /* used for debugging */ +# endif + +void BN_set_flags(BIGNUM *b, int n); +int BN_get_flags(const BIGNUM *b, int n); + +/* Values for |top| in BN_rand() */ +#define BN_RAND_TOP_ANY -1 +#define BN_RAND_TOP_ONE 0 +#define BN_RAND_TOP_TWO 1 + +/* Values for |bottom| in BN_rand() */ +#define BN_RAND_BOTTOM_ANY 0 +#define BN_RAND_BOTTOM_ODD 1 + +/* + * get a clone of a BIGNUM with changed flags, for *temporary* use only (the + * two BIGNUMs cannot be used in parallel!). Also only for *read only* use. The + * value |dest| should be a newly allocated BIGNUM obtained via BN_new() that + * has not been otherwise initialised or used. + */ +void BN_with_flags(BIGNUM *dest, const BIGNUM *b, int flags); + +/* Wrapper function to make using BN_GENCB easier */ +int BN_GENCB_call(BN_GENCB *cb, int a, int b); + +BN_GENCB *BN_GENCB_new(void); +void BN_GENCB_free(BN_GENCB *cb); + +/* Populate a BN_GENCB structure with an "old"-style callback */ +void BN_GENCB_set_old(BN_GENCB *gencb, void (*callback) (int, int, void *), + void *cb_arg); + +/* Populate a BN_GENCB structure with a "new"-style callback */ +void BN_GENCB_set(BN_GENCB *gencb, int (*callback) (int, int, BN_GENCB *), + void *cb_arg); + +void *BN_GENCB_get_arg(BN_GENCB *cb); + +# define BN_prime_checks 0 /* default: select number of iterations based + * on the size of the number */ + +/* + * BN_prime_checks_for_size() returns the number of Miller-Rabin iterations + * that will be done for checking that a random number is probably prime. The + * error rate for accepting a composite number as prime depends on the size of + * the prime |b|. The error rates used are for calculating an RSA key with 2 primes, + * and so the level is what you would expect for a key of double the size of the + * prime. + * + * This table is generated using the algorithm of FIPS PUB 186-4 + * Digital Signature Standard (DSS), section F.1, page 117. + * (https://dx.doi.org/10.6028/NIST.FIPS.186-4) + * + * The following magma script was used to generate the output: + * securitybits:=125; + * k:=1024; + * for t:=1 to 65 do + * for M:=3 to Floor(2*Sqrt(k-1)-1) do + * S:=0; + * // Sum over m + * for m:=3 to M do + * s:=0; + * // Sum over j + * for j:=2 to m do + * s+:=(RealField(32)!2)^-(j+(k-1)/j); + * end for; + * S+:=2^(m-(m-1)*t)*s; + * end for; + * A:=2^(k-2-M*t); + * B:=8*(Pi(RealField(32))^2-6)/3*2^(k-2)*S; + * pkt:=2.00743*Log(2)*k*2^-k*(A+B); + * seclevel:=Floor(-Log(2,pkt)); + * if seclevel ge securitybits then + * printf "k: %5o, security: %o bits (t: %o, M: %o)\n",k,seclevel,t,M; + * break; + * end if; + * end for; + * if seclevel ge securitybits then break; end if; + * end for; + * + * It can be run online at: + * http://magma.maths.usyd.edu.au/calc + * + * And will output: + * k: 1024, security: 129 bits (t: 6, M: 23) + * + * k is the number of bits of the prime, securitybits is the level we want to + * reach. + * + * prime length | RSA key size | # MR tests | security level + * -------------+--------------|------------+--------------- + * (b) >= 6394 | >= 12788 | 3 | 256 bit + * (b) >= 3747 | >= 7494 | 3 | 192 bit + * (b) >= 1345 | >= 2690 | 4 | 128 bit + * (b) >= 1080 | >= 2160 | 5 | 128 bit + * (b) >= 852 | >= 1704 | 5 | 112 bit + * (b) >= 476 | >= 952 | 5 | 80 bit + * (b) >= 400 | >= 800 | 6 | 80 bit + * (b) >= 347 | >= 694 | 7 | 80 bit + * (b) >= 308 | >= 616 | 8 | 80 bit + * (b) >= 55 | >= 110 | 27 | 64 bit + * (b) >= 6 | >= 12 | 34 | 64 bit + */ + +# define BN_prime_checks_for_size(b) ((b) >= 3747 ? 3 : \ + (b) >= 1345 ? 4 : \ + (b) >= 476 ? 5 : \ + (b) >= 400 ? 6 : \ + (b) >= 347 ? 7 : \ + (b) >= 308 ? 8 : \ + (b) >= 55 ? 27 : \ + /* b >= 6 */ 34) + +# define BN_num_bytes(a) ((BN_num_bits(a)+7)/8) + +int BN_abs_is_word(const BIGNUM *a, const BN_ULONG w); +int BN_is_zero(const BIGNUM *a); +int BN_is_one(const BIGNUM *a); +int BN_is_word(const BIGNUM *a, const BN_ULONG w); +int BN_is_odd(const BIGNUM *a); + +# define BN_one(a) (BN_set_word((a),1)) + +void BN_zero_ex(BIGNUM *a); + +# if OPENSSL_API_COMPAT >= 0x00908000L +# 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); +BN_CTX *BN_CTX_secure_new(void); +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_priv_rand(BIGNUM *rnd, int bits, int top, int bottom); +int BN_rand_range(BIGNUM *rnd, const BIGNUM *range); +int BN_priv_rand_range(BIGNUM *rnd, const BIGNUM *range); +int BN_pseudo_rand(BIGNUM *rnd, int bits, int top, int bottom); +int BN_pseudo_rand_range(BIGNUM *rnd, const BIGNUM *range); +int BN_num_bits(const BIGNUM *a); +int BN_num_bits_word(BN_ULONG l); +int BN_security_bits(int L, int N); +BIGNUM *BN_new(void); +BIGNUM *BN_secure_new(void); +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); +int BN_bn2binpad(const BIGNUM *a, unsigned char *to, int tolen); +BIGNUM *BN_lebin2bn(const unsigned char *s, int len, BIGNUM *ret); +int BN_bn2lebinpad(const BIGNUM *a, unsigned char *to, int tolen); +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 b pointer to the BIGNUM object + * \return 1 if a < 0 and 0 otherwise + */ +int BN_is_negative(const BIGNUM *b); + +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_STDIO +int BN_print_fp(FILE *fp, const BIGNUM *a); +# endif +int BN_print(BIO *bio, const BIGNUM *a); +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 */ +DEPRECATEDIN_0_9_8(BIGNUM *BN_generate_prime(BIGNUM *ret, int bits, int safe, + const BIGNUM *add, + const BIGNUM *rem, + void (*callback) (int, int, + void *), + void *cb_arg)) +DEPRECATEDIN_0_9_8(int + BN_is_prime(const BIGNUM *p, int nchecks, + void (*callback) (int, int, void *), + BN_CTX *ctx, void *cb_arg)) +DEPRECATEDIN_0_9_8(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)) + +/* 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); +int BN_mod_mul_montgomery(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, + BN_MONT_CTX *mont, BN_CTX *ctx); +int BN_to_montgomery(BIGNUM *r, const BIGNUM *a, BN_MONT_CTX *mont, + BN_CTX *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, CRYPTO_RWLOCK *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 *); + +int BN_BLINDING_is_current_thread(BN_BLINDING *b); +void BN_BLINDING_set_current_thread(BN_BLINDING *b); +int BN_BLINDING_lock(BN_BLINDING *b); +int BN_BLINDING_unlock(BN_BLINDING *b); + +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); + +DEPRECATEDIN_0_9_8(void BN_set_params(int mul, int high, int low, int mont)) +DEPRECATEDIN_0_9_8(int BN_get_params(int which)) /* 0, mul, 1 high, 2 low, 3 + * mont */ + +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); + +int (*BN_nist_mod_func(const BIGNUM *p)) (BIGNUM *r, const BIGNUM *a, + const BIGNUM *field, BN_CTX *ctx); + +int BN_generate_dsa_nonce(BIGNUM *out, const BIGNUM *range, + const BIGNUM *priv, const unsigned char *message, + size_t message_len, BN_CTX *ctx); + +/* Primes from RFC 2409 */ +BIGNUM *BN_get_rfc2409_prime_768(BIGNUM *bn); +BIGNUM *BN_get_rfc2409_prime_1024(BIGNUM *bn); + +/* Primes from RFC 3526 */ +BIGNUM *BN_get_rfc3526_prime_1536(BIGNUM *bn); +BIGNUM *BN_get_rfc3526_prime_2048(BIGNUM *bn); +BIGNUM *BN_get_rfc3526_prime_3072(BIGNUM *bn); +BIGNUM *BN_get_rfc3526_prime_4096(BIGNUM *bn); +BIGNUM *BN_get_rfc3526_prime_6144(BIGNUM *bn); +BIGNUM *BN_get_rfc3526_prime_8192(BIGNUM *bn); + +# if OPENSSL_API_COMPAT < 0x10100000L +# define get_rfc2409_prime_768 BN_get_rfc2409_prime_768 +# define get_rfc2409_prime_1024 BN_get_rfc2409_prime_1024 +# define get_rfc3526_prime_1536 BN_get_rfc3526_prime_1536 +# define get_rfc3526_prime_2048 BN_get_rfc3526_prime_2048 +# define get_rfc3526_prime_3072 BN_get_rfc3526_prime_3072 +# define get_rfc3526_prime_4096 BN_get_rfc3526_prime_4096 +# define get_rfc3526_prime_6144 BN_get_rfc3526_prime_6144 +# define get_rfc3526_prime_8192 BN_get_rfc3526_prime_8192 +# endif + +int BN_bntest_rand(BIGNUM *rnd, int bits, int top, int bottom); + + +# ifdef __cplusplus +} +# endif +#endif diff --git a/plugin/openssl/include/openssl/bnerr.h b/plugin/openssl/include/openssl/bnerr.h new file mode 100644 index 000000000..5c83777f9 --- /dev/null +++ b/plugin/openssl/include/openssl/bnerr.h @@ -0,0 +1,101 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_BNERR_H +# define HEADER_BNERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_BN_strings(void); + +/* + * BN function codes. + */ +# define BN_F_BNRAND 127 +# define BN_F_BNRAND_RANGE 138 +# 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_COMPUTE_WNAF 142 +# 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_RECP 130 +# define BN_F_BN_EXP 123 +# define BN_F_BN_EXPAND_INTERNAL 120 +# define BN_F_BN_GENCB_NEW 143 +# define BN_F_BN_GENERATE_DSA_NONCE 140 +# define BN_F_BN_GENERATE_PRIME_EX 141 +# define BN_F_BN_GF2M_MOD 131 +# define BN_F_BN_GF2M_MOD_EXP 132 +# define BN_F_BN_GF2M_MOD_MUL 133 +# define BN_F_BN_GF2M_MOD_SOLVE_QUAD 134 +# define BN_F_BN_GF2M_MOD_SOLVE_QUAD_ARR 135 +# define BN_F_BN_GF2M_MOD_SQR 136 +# define BN_F_BN_GF2M_MOD_SQRT 137 +# define BN_F_BN_LSHIFT 145 +# define BN_F_BN_MOD_EXP2_MONT 118 +# define BN_F_BN_MOD_EXP_MONT 109 +# define BN_F_BN_MOD_EXP_MONT_CONSTTIME 124 +# define BN_F_BN_MOD_EXP_MONT_WORD 117 +# define BN_F_BN_MOD_EXP_RECP 125 +# define BN_F_BN_MOD_EXP_SIMPLE 126 +# define BN_F_BN_MOD_INVERSE 110 +# define BN_F_BN_MOD_INVERSE_NO_BRANCH 139 +# define BN_F_BN_MOD_LSHIFT_QUICK 119 +# define BN_F_BN_MOD_SQRT 121 +# define BN_F_BN_MONT_CTX_NEW 149 +# define BN_F_BN_MPI2BN 112 +# define BN_F_BN_NEW 113 +# define BN_F_BN_POOL_GET 147 +# define BN_F_BN_RAND 114 +# define BN_F_BN_RAND_RANGE 122 +# define BN_F_BN_RECP_CTX_NEW 150 +# define BN_F_BN_RSHIFT 146 +# define BN_F_BN_SET_WORDS 144 +# define BN_F_BN_STACK_PUSH 148 +# define BN_F_BN_USUB 115 +# define BN_F_OSSL_BN_RSA_DO_UNBLIND 151 + +/* + * BN reason codes. + */ +# define BN_R_ARG2_LT_ARG3 100 +# define BN_R_BAD_RECIPROCAL 101 +# define BN_R_BIGNUM_TOO_LONG 114 +# define BN_R_BITS_TOO_SMALL 118 +# define BN_R_CALLED_WITH_EVEN_MODULUS 102 +# define BN_R_DIV_BY_ZERO 103 +# define BN_R_ENCODING_ERROR 104 +# define BN_R_EXPAND_ON_STATIC_BIGNUM_DATA 105 +# define BN_R_INPUT_NOT_REDUCED 110 +# define BN_R_INVALID_LENGTH 106 +# define BN_R_INVALID_RANGE 115 +# define BN_R_INVALID_SHIFT 119 +# define BN_R_NOT_A_SQUARE 111 +# define BN_R_NOT_INITIALIZED 107 +# define BN_R_NO_INVERSE 108 +# define BN_R_NO_SOLUTION 116 +# define BN_R_PRIVATE_KEY_TOO_LARGE 117 +# define BN_R_P_IS_NOT_PRIME 112 +# define BN_R_TOO_MANY_ITERATIONS 113 +# define BN_R_TOO_MANY_TEMPORARY_VARIABLES 109 + +#endif diff --git a/plugin/openssl/include/openssl/buffer.h b/plugin/openssl/include/openssl/buffer.h new file mode 100644 index 000000000..d2765766b --- /dev/null +++ b/plugin/openssl/include/openssl/buffer.h @@ -0,0 +1,58 @@ +/* + * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_BUFFER_H +# define HEADER_BUFFER_H + +# include +# ifndef HEADER_CRYPTO_H +# include +# endif +# include + + +#ifdef __cplusplus +extern "C" { +#endif + +# include +# include + +/* + * These names are outdated as of OpenSSL 1.1; a future release + * will move them to be deprecated. + */ +# define BUF_strdup(s) OPENSSL_strdup(s) +# define BUF_strndup(s, size) OPENSSL_strndup(s, size) +# define BUF_memdup(data, size) OPENSSL_memdup(data, size) +# define BUF_strlcpy(dst, src, size) OPENSSL_strlcpy(dst, src, size) +# define BUF_strlcat(dst, src, size) OPENSSL_strlcat(dst, src, size) +# define BUF_strnlen(str, maxlen) OPENSSL_strnlen(str, maxlen) + +struct buf_mem_st { + size_t length; /* current number of bytes */ + char *data; + size_t max; /* size of buffer */ + unsigned long flags; +}; + +# define BUF_MEM_FLAG_SECURE 0x01 + +BUF_MEM *BUF_MEM_new(void); +BUF_MEM *BUF_MEM_new_ex(unsigned long flags); +void BUF_MEM_free(BUF_MEM *a); +size_t BUF_MEM_grow(BUF_MEM *str, size_t len); +size_t BUF_MEM_grow_clean(BUF_MEM *str, size_t len); +void BUF_reverse(unsigned char *out, const unsigned char *in, size_t siz); + + +# ifdef __cplusplus +} +# endif +#endif diff --git a/plugin/openssl/include/openssl/buffererr.h b/plugin/openssl/include/openssl/buffererr.h new file mode 100644 index 000000000..04f6ff7a8 --- /dev/null +++ b/plugin/openssl/include/openssl/buffererr.h @@ -0,0 +1,34 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_BUFERR_H +# define HEADER_BUFERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_BUF_strings(void); + +/* + * BUF function codes. + */ +# define BUF_F_BUF_MEM_GROW 100 +# define BUF_F_BUF_MEM_GROW_CLEAN 105 +# define BUF_F_BUF_MEM_NEW 101 + +/* + * BUF reason codes. + */ + +#endif diff --git a/plugin/openssl/include/openssl/camellia.h b/plugin/openssl/include/openssl/camellia.h new file mode 100644 index 000000000..151f3c134 --- /dev/null +++ b/plugin/openssl/include/openssl/camellia.h @@ -0,0 +1,83 @@ +/* + * Copyright 2006-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_CAMELLIA_H +# define HEADER_CAMELLIA_H + +# include + +# ifndef OPENSSL_NO_CAMELLIA +# include +#ifdef __cplusplus +extern "C" { +#endif + +# 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. + */ + +/* 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; + +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 + +#endif diff --git a/plugin/openssl/include/openssl/cast.h b/plugin/openssl/include/openssl/cast.h new file mode 100644 index 000000000..2cc89ae01 --- /dev/null +++ b/plugin/openssl/include/openssl/cast.h @@ -0,0 +1,53 @@ +/* + * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_CAST_H +# define HEADER_CAST_H + +# include + +# ifndef OPENSSL_NO_CAST +# ifdef __cplusplus +extern "C" { +# 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; + +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 + +#endif diff --git a/plugin/openssl/include/openssl/cmac.h b/plugin/openssl/include/openssl/cmac.h new file mode 100644 index 000000000..3535a9abf --- /dev/null +++ b/plugin/openssl/include/openssl/cmac.h @@ -0,0 +1,41 @@ +/* + * Copyright 2010-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_CMAC_H +# define HEADER_CMAC_H + +# ifndef OPENSSL_NO_CMAC + +#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 +#endif diff --git a/plugin/openssl/include/openssl/cms.h b/plugin/openssl/include/openssl/cms.h new file mode 100644 index 000000000..c7627968c --- /dev/null +++ b/plugin/openssl/include/openssl/cms.h @@ -0,0 +1,339 @@ +/* + * Copyright 2008-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_CMS_H +# define HEADER_CMS_H + +# include + +# ifndef OPENSSL_NO_CMS +# include +# include +# include +# 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; + +DEFINE_STACK_OF(CMS_SignerInfo) +DEFINE_STACK_OF(CMS_RecipientEncryptedKey) +DEFINE_STACK_OF(CMS_RecipientInfo) +DEFINE_STACK_OF(CMS_RevocationInfoChoice) +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 +# define CMS_ASCIICRLF 0x80000 + +const ASN1_OBJECT *CMS_get0_type(const 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, + const 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, const 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, const 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, + const 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); + +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); +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); + +/* Backward compatibility for spelling errors. */ +# define CMS_R_UNKNOWN_DIGEST_ALGORITM CMS_R_UNKNOWN_DIGEST_ALGORITHM +# define CMS_R_UNSUPPORTED_RECPIENTINFO_TYPE \ + CMS_R_UNSUPPORTED_RECIPIENTINFO_TYPE + +# ifdef __cplusplus +} +# endif +# endif +#endif diff --git a/plugin/openssl/include/openssl/cmserr.h b/plugin/openssl/include/openssl/cmserr.h new file mode 100644 index 000000000..d589f592c --- /dev/null +++ b/plugin/openssl/include/openssl/cmserr.h @@ -0,0 +1,203 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_CMSERR_H +# define HEADER_CMSERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# include + +# ifndef OPENSSL_NO_CMS + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_CMS_strings(void); + +/* + * CMS 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 179 +# 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_SI_CHECK_ATTRIBUTES 183 +# define CMS_F_CMS_STREAM 155 +# define CMS_F_CMS_UNCOMPRESS 156 +# define CMS_F_CMS_VERIFY 157 +# define CMS_F_KEK_UNWRAP_KEY 180 + +/* + * CMS reason codes. + */ +# define CMS_R_ADD_SIGNER_ERROR 99 +# define CMS_R_ATTRIBUTE_ERROR 161 +# 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_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_ALGORITHM 149 +# define CMS_R_UNKNOWN_ID 150 +# define CMS_R_UNSUPPORTED_COMPRESSION_ALGORITHM 151 +# define CMS_R_UNSUPPORTED_CONTENT_ENCRYPTION_ALGORITHM 194 +# 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_RECIPIENTINFO_TYPE 155 +# define CMS_R_UNSUPPORTED_RECIPIENT_TYPE 154 +# 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 + +# endif +#endif diff --git a/plugin/openssl/include/openssl/comp.h b/plugin/openssl/include/openssl/comp.h new file mode 100644 index 000000000..d814d3cf2 --- /dev/null +++ b/plugin/openssl/include/openssl/comp.h @@ -0,0 +1,53 @@ +/* + * Copyright 2015-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_COMP_H +# define HEADER_COMP_H + +# include + +# ifndef OPENSSL_NO_COMP +# include +# include +# ifdef __cplusplus +extern "C" { +# endif + + + +COMP_CTX *COMP_CTX_new(COMP_METHOD *meth); +const COMP_METHOD *COMP_CTX_get_method(const COMP_CTX *ctx); +int COMP_CTX_get_type(const COMP_CTX* comp); +int COMP_get_type(const COMP_METHOD *meth); +const char *COMP_get_name(const 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_zlib(void); + +#if OPENSSL_API_COMPAT < 0x10100000L +#define COMP_zlib_cleanup() while(0) continue +#endif + +# ifdef HEADER_BIO_H +# ifdef ZLIB +const BIO_METHOD *BIO_f_zlib(void); +# endif +# endif + + +# ifdef __cplusplus +} +# endif +# endif +#endif diff --git a/plugin/openssl/include/openssl/comperr.h b/plugin/openssl/include/openssl/comperr.h new file mode 100644 index 000000000..90231e9aa --- /dev/null +++ b/plugin/openssl/include/openssl/comperr.h @@ -0,0 +1,44 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_COMPERR_H +# define HEADER_COMPERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# include + +# ifndef OPENSSL_NO_COMP + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_COMP_strings(void); + +/* + * COMP 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 +# define COMP_F_COMP_CTX_NEW 103 + +/* + * COMP reason codes. + */ +# define COMP_R_ZLIB_DEFLATE_ERROR 99 +# define COMP_R_ZLIB_INFLATE_ERROR 100 +# define COMP_R_ZLIB_NOT_SUPPORTED 101 + +# endif +#endif diff --git a/plugin/openssl/include/openssl/conf.h b/plugin/openssl/include/openssl/conf.h new file mode 100644 index 000000000..7336cd2f1 --- /dev/null +++ b/plugin/openssl/include/openssl/conf.h @@ -0,0 +1,168 @@ +/* + * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#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; + +DEFINE_STACK_OF(CONF_VALUE) +DEFINE_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; + +DEFINE_STACK_OF(CONF_MODULE) +DEFINE_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_STDIO +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); +#ifndef OPENSSL_NO_STDIO +int CONF_dump_fp(LHASH_OF(CONF_VALUE) *conf, FILE *out); +#endif +int CONF_dump_bio(LHASH_OF(CONF_VALUE) *conf, BIO *out); + +DEPRECATEDIN_1_1_0(void OPENSSL_config(const char *config_name)) + +#if OPENSSL_API_COMPAT < 0x10100000L +# define OPENSSL_no_config() \ + OPENSSL_init_crypto(OPENSSL_INIT_NO_LOAD_CONFIG, NULL) +#endif + +/* + * 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); +void NCONF_free(CONF *conf); +void NCONF_free_data(CONF *conf); + +int NCONF_load(CONF *conf, const char *file, long *eline); +# ifndef OPENSSL_NO_STDIO +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); +#ifndef OPENSSL_NO_STDIO +int NCONF_dump_fp(const CONF *conf, FILE *out); +#endif +int NCONF_dump_bio(const CONF *conf, BIO *out); + +#define NCONF_get_number(c,g,n,r) NCONF_get_number_e(c,g,n,r) + +/* 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); +#if OPENSSL_API_COMPAT < 0x10100000L +# define CONF_modules_free() while(0) continue +#endif +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); + + +# ifdef __cplusplus +} +# endif +#endif diff --git a/plugin/openssl/include/openssl/conf_api.h b/plugin/openssl/include/openssl/conf_api.h new file mode 100644 index 000000000..a0275ad79 --- /dev/null +++ b/plugin/openssl/include/openssl/conf_api.h @@ -0,0 +1,40 @@ +/* + * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#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/plugin/openssl/include/openssl/conferr.h b/plugin/openssl/include/openssl/conferr.h new file mode 100644 index 000000000..32b922918 --- /dev/null +++ b/plugin/openssl/include/openssl/conferr.h @@ -0,0 +1,76 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_CONFERR_H +# define HEADER_CONFERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_CONF_strings(void); + +/* + * CONF function codes. + */ +# define CONF_F_CONF_DUMP_FP 104 +# define CONF_F_CONF_LOAD 100 +# define CONF_F_CONF_LOAD_FP 103 +# define CONF_F_CONF_PARSE_LIST 119 +# define CONF_F_DEF_LOAD 120 +# define CONF_F_DEF_LOAD_BIO 121 +# define CONF_F_GET_NEXT_FILE 107 +# define CONF_F_MODULE_ADD 122 +# 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_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_PROCESS_INCLUDE 116 +# define CONF_F_SSL_MODULE_INIT 123 +# define CONF_F_STR_COPY 101 + +/* + * CONF 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_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_NUMBER_TOO_LARGE 121 +# define CONF_R_RECURSIVE_DIRECTORY_INCLUDE 111 +# define CONF_R_SSL_COMMAND_SECTION_EMPTY 117 +# define CONF_R_SSL_COMMAND_SECTION_NOT_FOUND 118 +# define CONF_R_SSL_SECTION_EMPTY 119 +# define CONF_R_SSL_SECTION_NOT_FOUND 120 +# define CONF_R_UNABLE_TO_CREATE_NEW_SECTION 103 +# define CONF_R_UNKNOWN_MODULE_NAME 113 +# define CONF_R_VARIABLE_EXPANSION_TOO_LONG 116 +# define CONF_R_VARIABLE_HAS_NO_VALUE 104 + +#endif diff --git a/plugin/openssl/include/openssl/crypto.h b/plugin/openssl/include/openssl/crypto.h new file mode 100644 index 000000000..7d0b52623 --- /dev/null +++ b/plugin/openssl/include/openssl/crypto.h @@ -0,0 +1,445 @@ +/* + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_CRYPTO_H +# define HEADER_CRYPTO_H + +# include +# include + +# include + +# ifndef OPENSSL_NO_STDIO +# include +# endif + +# include +# 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 + +# if OPENSSL_API_COMPAT < 0x10100000L +# include +# endif + +#ifdef __cplusplus +extern "C" { +#endif + +# if OPENSSL_API_COMPAT < 0x10100000L +# define SSLeay OpenSSL_version_num +# define SSLeay_version OpenSSL_version +# define SSLEAY_VERSION_NUMBER OPENSSL_VERSION_NUMBER +# define SSLEAY_VERSION OPENSSL_VERSION +# define SSLEAY_CFLAGS OPENSSL_CFLAGS +# define SSLEAY_BUILT_ON OPENSSL_BUILT_ON +# define SSLEAY_PLATFORM OPENSSL_PLATFORM +# define SSLEAY_DIR OPENSSL_DIR + +/* + * Old type for allocating dynamic locks. No longer used. Use the new thread + * API instead. + */ +typedef struct { + int dummy; +} CRYPTO_dynlock; + +# endif /* OPENSSL_API_COMPAT */ + +typedef void CRYPTO_RWLOCK; + +CRYPTO_RWLOCK *CRYPTO_THREAD_lock_new(void); +int CRYPTO_THREAD_read_lock(CRYPTO_RWLOCK *lock); +int CRYPTO_THREAD_write_lock(CRYPTO_RWLOCK *lock); +int CRYPTO_THREAD_unlock(CRYPTO_RWLOCK *lock); +void CRYPTO_THREAD_lock_free(CRYPTO_RWLOCK *lock); + +int CRYPTO_atomic_add(int *val, int amount, int *ret, CRYPTO_RWLOCK *lock); + +/* + * The following can be used to detect memory leaks in the library. If + * used, it turns on malloc checking + */ +# define CRYPTO_MEM_CHECK_OFF 0x0 /* Control only */ +# define CRYPTO_MEM_CHECK_ON 0x1 /* Control and mode bit */ +# define CRYPTO_MEM_CHECK_ENABLE 0x2 /* Control and mode bit */ +# define CRYPTO_MEM_CHECK_DISABLE 0x3 /* Control only */ + +struct crypto_ex_data_st { + STACK_OF(void) *sk; +}; +DEFINE_STACK_OF(void) + +/* + * Per class, we have a STACK of function pointers. + */ +# define CRYPTO_EX_INDEX_SSL 0 +# define CRYPTO_EX_INDEX_SSL_CTX 1 +# define CRYPTO_EX_INDEX_SSL_SESSION 2 +# define CRYPTO_EX_INDEX_X509 3 +# define CRYPTO_EX_INDEX_X509_STORE 4 +# define CRYPTO_EX_INDEX_X509_STORE_CTX 5 +# define CRYPTO_EX_INDEX_DH 6 +# define CRYPTO_EX_INDEX_DSA 7 +# define CRYPTO_EX_INDEX_EC_KEY 8 +# define CRYPTO_EX_INDEX_RSA 9 +# define CRYPTO_EX_INDEX_ENGINE 10 +# define CRYPTO_EX_INDEX_UI 11 +# define CRYPTO_EX_INDEX_BIO 12 +# define CRYPTO_EX_INDEX_APP 13 +# define CRYPTO_EX_INDEX_UI_METHOD 14 +# define CRYPTO_EX_INDEX_DRBG 15 +# define CRYPTO_EX_INDEX__COUNT 16 + +/* No longer needed, so this is a no-op */ +#define OPENSSL_malloc_init() while(0) continue + +int CRYPTO_mem_ctrl(int mode); + +# define OPENSSL_malloc(num) \ + CRYPTO_malloc(num, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_zalloc(num) \ + CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_realloc(addr, num) \ + CRYPTO_realloc(addr, num, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_clear_realloc(addr, old_num, num) \ + CRYPTO_clear_realloc(addr, old_num, num, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_clear_free(addr, num) \ + CRYPTO_clear_free(addr, num, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_free(addr) \ + CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_memdup(str, s) \ + CRYPTO_memdup((str), s, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_strdup(str) \ + CRYPTO_strdup(str, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_strndup(str, n) \ + CRYPTO_strndup(str, n, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_secure_malloc(num) \ + CRYPTO_secure_malloc(num, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_secure_zalloc(num) \ + CRYPTO_secure_zalloc(num, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_secure_free(addr) \ + CRYPTO_secure_free(addr, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_secure_clear_free(addr, num) \ + CRYPTO_secure_clear_free(addr, num, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_secure_actual_size(ptr) \ + CRYPTO_secure_actual_size(ptr) + +size_t OPENSSL_strlcpy(char *dst, const char *src, size_t siz); +size_t OPENSSL_strlcat(char *dst, const char *src, size_t siz); +size_t OPENSSL_strnlen(const char *str, size_t maxlen); +char *OPENSSL_buf2hexstr(const unsigned char *buffer, long len); +unsigned char *OPENSSL_hexstr2buf(const char *str, long *len); +int OPENSSL_hexchar2int(unsigned char c); + +# define OPENSSL_MALLOC_MAX_NELEMS(type) (((1U<<(sizeof(int)*8-1))-1)/sizeof(type)) + +unsigned long OpenSSL_version_num(void); +const char *OpenSSL_version(int type); +# define OPENSSL_VERSION 0 +# define OPENSSL_CFLAGS 1 +# define OPENSSL_BUILT_ON 2 +# define OPENSSL_PLATFORM 3 +# define OPENSSL_DIR 4 +# define OPENSSL_ENGINES_DIR 5 + +int OPENSSL_issetugid(void); + +typedef void 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, const CRYPTO_EX_DATA *from, + void *from_d, int idx, long argl, void *argp); +__owur 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); +/* No longer use an index. */ +int CRYPTO_free_ex_index(int class_index, int idx); + +/* + * 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, + const 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); + +# if OPENSSL_API_COMPAT < 0x10100000L +/* + * This function cleans up all "ex_data" state. It mustn't be called under + * potential race-conditions. + */ +# define CRYPTO_cleanup_all_ex_data() while(0) continue + +/* + * The old locking functions have been removed completely without compatibility + * macros. This is because the old functions either could not properly report + * errors, or the returned error values were not clearly documented. + * Replacing the locking functions with no-ops would cause race condition + * issues in the affected applications. It is far better for them to fail at + * compile time. + * On the other hand, the locking callbacks are no longer used. Consequently, + * the callback management functions can be safely replaced with no-op macros. + */ +# define CRYPTO_num_locks() (1) +# define CRYPTO_set_locking_callback(func) +# define CRYPTO_get_locking_callback() (NULL) +# define CRYPTO_set_add_lock_callback(func) +# define CRYPTO_get_add_lock_callback() (NULL) + +/* + * These defines where used in combination with the old locking callbacks, + * they are not called anymore, but old code that's not called might still + * use them. + */ +# define CRYPTO_LOCK 1 +# define CRYPTO_UNLOCK 2 +# define CRYPTO_READ 4 +# define CRYPTO_WRITE 8 + +/* This structure is no longer used */ +typedef struct crypto_threadid_st { + int dummy; +} CRYPTO_THREADID; +/* Only use CRYPTO_THREADID_set_[numeric|pointer]() within callbacks */ +# define CRYPTO_THREADID_set_numeric(id, val) +# define CRYPTO_THREADID_set_pointer(id, ptr) +# define CRYPTO_THREADID_set_callback(threadid_func) (0) +# define CRYPTO_THREADID_get_callback() (NULL) +# define CRYPTO_THREADID_current(id) +# define CRYPTO_THREADID_cmp(a, b) (-1) +# define CRYPTO_THREADID_cpy(dest, src) +# define CRYPTO_THREADID_hash(id) (0UL) + +# if OPENSSL_API_COMPAT < 0x10000000L +# define CRYPTO_set_id_callback(func) +# define CRYPTO_get_id_callback() (NULL) +# define CRYPTO_thread_id() (0UL) +# endif /* OPENSSL_API_COMPAT < 0x10000000L */ + +# define CRYPTO_set_dynlock_create_callback(dyn_create_function) +# define CRYPTO_set_dynlock_lock_callback(dyn_lock_function) +# define CRYPTO_set_dynlock_destroy_callback(dyn_destroy_function) +# define CRYPTO_get_dynlock_create_callback() (NULL) +# define CRYPTO_get_dynlock_lock_callback() (NULL) +# define CRYPTO_get_dynlock_destroy_callback() (NULL) +# endif /* OPENSSL_API_COMPAT < 0x10100000L */ + +int CRYPTO_set_mem_functions( + void *(*m) (size_t, const char *, int), + void *(*r) (void *, size_t, const char *, int), + void (*f) (void *, const char *, int)); +int CRYPTO_set_mem_debug(int flag); +void CRYPTO_get_mem_functions( + void *(**m) (size_t, const char *, int), + void *(**r) (void *, size_t, const char *, int), + void (**f) (void *, const char *, int)); + +void *CRYPTO_malloc(size_t num, const char *file, int line); +void *CRYPTO_zalloc(size_t num, const char *file, int line); +void *CRYPTO_memdup(const void *str, size_t siz, const char *file, int line); +char *CRYPTO_strdup(const char *str, const char *file, int line); +char *CRYPTO_strndup(const char *str, size_t s, const char *file, int line); +void CRYPTO_free(void *ptr, const char *file, int line); +void CRYPTO_clear_free(void *ptr, size_t num, const char *file, int line); +void *CRYPTO_realloc(void *addr, size_t num, const char *file, int line); +void *CRYPTO_clear_realloc(void *addr, size_t old_num, size_t num, + const char *file, int line); + +int CRYPTO_secure_malloc_init(size_t sz, int minsize); +int CRYPTO_secure_malloc_done(void); +void *CRYPTO_secure_malloc(size_t num, const char *file, int line); +void *CRYPTO_secure_zalloc(size_t num, const char *file, int line); +void CRYPTO_secure_free(void *ptr, const char *file, int line); +void CRYPTO_secure_clear_free(void *ptr, size_t num, + const char *file, int line); +int CRYPTO_secure_allocated(const void *ptr); +int CRYPTO_secure_malloc_initialized(void); +size_t CRYPTO_secure_actual_size(void *ptr); +size_t CRYPTO_secure_used(void); + +void OPENSSL_cleanse(void *ptr, size_t len); + +# ifndef OPENSSL_NO_CRYPTO_MDEBUG +# define OPENSSL_mem_debug_push(info) \ + CRYPTO_mem_debug_push(info, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_mem_debug_pop() \ + CRYPTO_mem_debug_pop() +int CRYPTO_mem_debug_push(const char *info, const char *file, int line); +int CRYPTO_mem_debug_pop(void); +void CRYPTO_get_alloc_counts(int *mcount, int *rcount, int *fcount); + +/*- + * Debugging functions (enabled by CRYPTO_set_mem_debug(1)) + * The flag 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_mem_debug_malloc(void *addr, size_t num, int flag, + const char *file, int line); +void CRYPTO_mem_debug_realloc(void *addr1, void *addr2, size_t num, int flag, + const char *file, int line); +void CRYPTO_mem_debug_free(void *addr, int flag, + const char *file, int line); + +int CRYPTO_mem_leaks_cb(int (*cb) (const char *str, size_t len, void *u), + void *u); +# ifndef OPENSSL_NO_STDIO +int CRYPTO_mem_leaks_fp(FILE *); +# endif +int CRYPTO_mem_leaks(BIO *bio); +# endif + +/* die if we have to */ +ossl_noreturn void OPENSSL_die(const char *assertion, const char *file, int line); +# if OPENSSL_API_COMPAT < 0x10100000L +# define OpenSSLDie(f,l,a) OPENSSL_die((a),(f),(l)) +# endif +# define OPENSSL_assert(e) \ + (void)((e) ? 0 : (OPENSSL_die("assertion failed: " #e, OPENSSL_FILE, OPENSSL_LINE), 1)) + +int OPENSSL_isservice(void); + +int FIPS_mode(void); +int FIPS_mode_set(int r); + +void OPENSSL_init(void); +# ifdef OPENSSL_SYS_UNIX +void OPENSSL_fork_prepare(void); +void OPENSSL_fork_parent(void); +void OPENSSL_fork_child(void); +# endif + +struct tm *OPENSSL_gmtime(const time_t *timer, struct tm *result); +int OPENSSL_gmtime_adj(struct tm *tm, int offset_day, long offset_sec); +int OPENSSL_gmtime_diff(int *pday, int *psec, + const struct tm *from, const struct tm *to); + +/* + * 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 * in_a, const void * in_b, size_t len); + +/* Standard initialisation options */ +# define OPENSSL_INIT_NO_LOAD_CRYPTO_STRINGS 0x00000001L +# define OPENSSL_INIT_LOAD_CRYPTO_STRINGS 0x00000002L +# define OPENSSL_INIT_ADD_ALL_CIPHERS 0x00000004L +# define OPENSSL_INIT_ADD_ALL_DIGESTS 0x00000008L +# define OPENSSL_INIT_NO_ADD_ALL_CIPHERS 0x00000010L +# define OPENSSL_INIT_NO_ADD_ALL_DIGESTS 0x00000020L +# define OPENSSL_INIT_LOAD_CONFIG 0x00000040L +# define OPENSSL_INIT_NO_LOAD_CONFIG 0x00000080L +# define OPENSSL_INIT_ASYNC 0x00000100L +# define OPENSSL_INIT_ENGINE_RDRAND 0x00000200L +# define OPENSSL_INIT_ENGINE_DYNAMIC 0x00000400L +# define OPENSSL_INIT_ENGINE_OPENSSL 0x00000800L +# define OPENSSL_INIT_ENGINE_CRYPTODEV 0x00001000L +# define OPENSSL_INIT_ENGINE_CAPI 0x00002000L +# define OPENSSL_INIT_ENGINE_PADLOCK 0x00004000L +# define OPENSSL_INIT_ENGINE_AFALG 0x00008000L +/* OPENSSL_INIT_ZLIB 0x00010000L */ +# define OPENSSL_INIT_ATFORK 0x00020000L +/* OPENSSL_INIT_BASE_ONLY 0x00040000L */ +# define OPENSSL_INIT_NO_ATEXIT 0x00080000L +/* OPENSSL_INIT flag range 0xfff00000 reserved for OPENSSL_init_ssl() */ +/* Max OPENSSL_INIT flag value is 0x80000000 */ + +/* openssl and dasync not counted as builtin */ +# define OPENSSL_INIT_ENGINE_ALL_BUILTIN \ + (OPENSSL_INIT_ENGINE_RDRAND | OPENSSL_INIT_ENGINE_DYNAMIC \ + | OPENSSL_INIT_ENGINE_CRYPTODEV | OPENSSL_INIT_ENGINE_CAPI | \ + OPENSSL_INIT_ENGINE_PADLOCK) + + +/* Library initialisation functions */ +void OPENSSL_cleanup(void); +int OPENSSL_init_crypto(uint64_t opts, const OPENSSL_INIT_SETTINGS *settings); +int OPENSSL_atexit(void (*handler)(void)); +void OPENSSL_thread_stop(void); + +/* Low-level control of initialization */ +OPENSSL_INIT_SETTINGS *OPENSSL_INIT_new(void); +# ifndef OPENSSL_NO_STDIO +int OPENSSL_INIT_set_config_filename(OPENSSL_INIT_SETTINGS *settings, + const char *config_filename); +void OPENSSL_INIT_set_config_file_flags(OPENSSL_INIT_SETTINGS *settings, + unsigned long flags); +int OPENSSL_INIT_set_config_appname(OPENSSL_INIT_SETTINGS *settings, + const char *config_appname); +# endif +void OPENSSL_INIT_free(OPENSSL_INIT_SETTINGS *settings); + +# if defined(OPENSSL_THREADS) && !defined(CRYPTO_TDEBUG) +# if defined(_WIN32) +# if defined(BASETYPES) || defined(_WINDEF_H) +/* application has to include in order to use this */ +typedef DWORD CRYPTO_THREAD_LOCAL; +typedef DWORD CRYPTO_THREAD_ID; + +typedef LONG CRYPTO_ONCE; +# define CRYPTO_ONCE_STATIC_INIT 0 +# endif +# else +# include +typedef pthread_once_t CRYPTO_ONCE; +typedef pthread_key_t CRYPTO_THREAD_LOCAL; +typedef pthread_t CRYPTO_THREAD_ID; + +# define CRYPTO_ONCE_STATIC_INIT PTHREAD_ONCE_INIT +# endif +# endif + +# if !defined(CRYPTO_ONCE_STATIC_INIT) +typedef unsigned int CRYPTO_ONCE; +typedef unsigned int CRYPTO_THREAD_LOCAL; +typedef unsigned int CRYPTO_THREAD_ID; +# define CRYPTO_ONCE_STATIC_INIT 0 +# endif + +int CRYPTO_THREAD_run_once(CRYPTO_ONCE *once, void (*init)(void)); + +int CRYPTO_THREAD_init_local(CRYPTO_THREAD_LOCAL *key, void (*cleanup)(void *)); +void *CRYPTO_THREAD_get_local(CRYPTO_THREAD_LOCAL *key); +int CRYPTO_THREAD_set_local(CRYPTO_THREAD_LOCAL *key, void *val); +int CRYPTO_THREAD_cleanup_local(CRYPTO_THREAD_LOCAL *key); + +CRYPTO_THREAD_ID CRYPTO_THREAD_get_current_id(void); +int CRYPTO_THREAD_compare_id(CRYPTO_THREAD_ID a, CRYPTO_THREAD_ID b); + + +# ifdef __cplusplus +} +# endif +#endif diff --git a/plugin/openssl/include/openssl/cryptoerr.h b/plugin/openssl/include/openssl/cryptoerr.h new file mode 100644 index 000000000..3db5a4ee9 --- /dev/null +++ b/plugin/openssl/include/openssl/cryptoerr.h @@ -0,0 +1,57 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_CRYPTOERR_H +# define HEADER_CRYPTOERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_CRYPTO_strings(void); + +/* + * CRYPTO function codes. + */ +# define CRYPTO_F_CMAC_CTX_NEW 120 +# define CRYPTO_F_CRYPTO_DUP_EX_DATA 110 +# define CRYPTO_F_CRYPTO_FREE_EX_DATA 111 +# define CRYPTO_F_CRYPTO_GET_EX_NEW_INDEX 100 +# define CRYPTO_F_CRYPTO_MEMDUP 115 +# define CRYPTO_F_CRYPTO_NEW_EX_DATA 112 +# define CRYPTO_F_CRYPTO_OCB128_COPY_CTX 121 +# define CRYPTO_F_CRYPTO_OCB128_INIT 122 +# define CRYPTO_F_CRYPTO_SET_EX_DATA 102 +# define CRYPTO_F_FIPS_MODE_SET 109 +# define CRYPTO_F_GET_AND_LOCK 113 +# define CRYPTO_F_OPENSSL_ATEXIT 114 +# define CRYPTO_F_OPENSSL_BUF2HEXSTR 117 +# define CRYPTO_F_OPENSSL_FOPEN 119 +# define CRYPTO_F_OPENSSL_HEXSTR2BUF 118 +# define CRYPTO_F_OPENSSL_INIT_CRYPTO 116 +# define CRYPTO_F_OPENSSL_LH_NEW 126 +# define CRYPTO_F_OPENSSL_SK_DEEP_COPY 127 +# define CRYPTO_F_OPENSSL_SK_DUP 128 +# define CRYPTO_F_PKEY_HMAC_INIT 123 +# define CRYPTO_F_PKEY_POLY1305_INIT 124 +# define CRYPTO_F_PKEY_SIPHASH_INIT 125 +# define CRYPTO_F_SK_RESERVE 129 + +/* + * CRYPTO reason codes. + */ +# define CRYPTO_R_FIPS_MODE_NOT_SUPPORTED 101 +# define CRYPTO_R_ILLEGAL_HEX_DIGIT 102 +# define CRYPTO_R_ODD_NUMBER_OF_DIGITS 103 + +#endif diff --git a/plugin/openssl/include/openssl/ct.h b/plugin/openssl/include/openssl/ct.h new file mode 100644 index 000000000..ebdba34d6 --- /dev/null +++ b/plugin/openssl/include/openssl/ct.h @@ -0,0 +1,474 @@ +/* + * Copyright 2016-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_CT_H +# define HEADER_CT_H + +# include + +# ifndef OPENSSL_NO_CT +# include +# include +# include +# include +# ifdef __cplusplus +extern "C" { +# endif + + +/* Minimum RSA key size, from RFC6962 */ +# define SCT_MIN_RSA_BITS 2048 + +/* All hashes are SHA256 in v1 of Certificate Transparency */ +# define CT_V1_HASHLEN SHA256_DIGEST_LENGTH + +typedef enum { + CT_LOG_ENTRY_TYPE_NOT_SET = -1, + CT_LOG_ENTRY_TYPE_X509 = 0, + CT_LOG_ENTRY_TYPE_PRECERT = 1 +} ct_log_entry_type_t; + +typedef enum { + SCT_VERSION_NOT_SET = -1, + SCT_VERSION_V1 = 0 +} sct_version_t; + +typedef enum { + SCT_SOURCE_UNKNOWN, + SCT_SOURCE_TLS_EXTENSION, + SCT_SOURCE_X509V3_EXTENSION, + SCT_SOURCE_OCSP_STAPLED_RESPONSE +} sct_source_t; + +typedef enum { + SCT_VALIDATION_STATUS_NOT_SET, + SCT_VALIDATION_STATUS_UNKNOWN_LOG, + SCT_VALIDATION_STATUS_VALID, + SCT_VALIDATION_STATUS_INVALID, + SCT_VALIDATION_STATUS_UNVERIFIED, + SCT_VALIDATION_STATUS_UNKNOWN_VERSION +} sct_validation_status_t; + +DEFINE_STACK_OF(SCT) +DEFINE_STACK_OF(CTLOG) + +/****************************************** + * CT policy evaluation context functions * + ******************************************/ + +/* + * Creates a new, empty policy evaluation context. + * The caller is responsible for calling CT_POLICY_EVAL_CTX_free when finished + * with the CT_POLICY_EVAL_CTX. + */ +CT_POLICY_EVAL_CTX *CT_POLICY_EVAL_CTX_new(void); + +/* Deletes a policy evaluation context and anything it owns. */ +void CT_POLICY_EVAL_CTX_free(CT_POLICY_EVAL_CTX *ctx); + +/* Gets the peer certificate that the SCTs are for */ +X509* CT_POLICY_EVAL_CTX_get0_cert(const CT_POLICY_EVAL_CTX *ctx); + +/* + * Sets the certificate associated with the received SCTs. + * Increments the reference count of cert. + * Returns 1 on success, 0 otherwise. + */ +int CT_POLICY_EVAL_CTX_set1_cert(CT_POLICY_EVAL_CTX *ctx, X509 *cert); + +/* Gets the issuer of the aforementioned certificate */ +X509* CT_POLICY_EVAL_CTX_get0_issuer(const CT_POLICY_EVAL_CTX *ctx); + +/* + * Sets the issuer of the certificate associated with the received SCTs. + * Increments the reference count of issuer. + * Returns 1 on success, 0 otherwise. + */ +int CT_POLICY_EVAL_CTX_set1_issuer(CT_POLICY_EVAL_CTX *ctx, X509 *issuer); + +/* Gets the CT logs that are trusted sources of SCTs */ +const CTLOG_STORE *CT_POLICY_EVAL_CTX_get0_log_store(const CT_POLICY_EVAL_CTX *ctx); + +/* Sets the log store that is in use. It must outlive the CT_POLICY_EVAL_CTX. */ +void CT_POLICY_EVAL_CTX_set_shared_CTLOG_STORE(CT_POLICY_EVAL_CTX *ctx, + CTLOG_STORE *log_store); + +/* + * Gets the time, in milliseconds since the Unix epoch, that will be used as the + * current time when checking whether an SCT was issued in the future. + * Such SCTs will fail validation, as required by RFC6962. + */ +uint64_t CT_POLICY_EVAL_CTX_get_time(const CT_POLICY_EVAL_CTX *ctx); + +/* + * Sets the time to evaluate SCTs against, in milliseconds since the Unix epoch. + * If an SCT's timestamp is after this time, it will be interpreted as having + * been issued in the future. RFC6962 states that "TLS clients MUST reject SCTs + * whose timestamp is in the future", so an SCT will not validate in this case. + */ +void CT_POLICY_EVAL_CTX_set_time(CT_POLICY_EVAL_CTX *ctx, uint64_t time_in_ms); + +/***************** + * SCT functions * + *****************/ + +/* + * Creates a new, blank SCT. + * The caller is responsible for calling SCT_free when finished with the SCT. + */ +SCT *SCT_new(void); + +/* + * Creates a new SCT from some base64-encoded strings. + * The caller is responsible for calling SCT_free when finished with the SCT. + */ +SCT *SCT_new_from_base64(unsigned char version, + const char *logid_base64, + ct_log_entry_type_t entry_type, + uint64_t timestamp, + const char *extensions_base64, + const char *signature_base64); + +/* + * Frees the SCT and the underlying data structures. + */ +void SCT_free(SCT *sct); + +/* + * Free a stack of SCTs, and the underlying SCTs themselves. + * Intended to be compatible with X509V3_EXT_FREE. + */ +void SCT_LIST_free(STACK_OF(SCT) *a); + +/* + * Returns the version of the SCT. + */ +sct_version_t SCT_get_version(const SCT *sct); + +/* + * Set the version of an SCT. + * Returns 1 on success, 0 if the version is unrecognized. + */ +__owur int SCT_set_version(SCT *sct, sct_version_t version); + +/* + * Returns the log entry type of the SCT. + */ +ct_log_entry_type_t SCT_get_log_entry_type(const SCT *sct); + +/* + * Set the log entry type of an SCT. + * Returns 1 on success, 0 otherwise. + */ +__owur int SCT_set_log_entry_type(SCT *sct, ct_log_entry_type_t entry_type); + +/* + * Gets the ID of the log that an SCT came from. + * Ownership of the log ID remains with the SCT. + * Returns the length of the log ID. + */ +size_t SCT_get0_log_id(const SCT *sct, unsigned char **log_id); + +/* + * Set the log ID of an SCT to point directly to the *log_id specified. + * The SCT takes ownership of the specified pointer. + * Returns 1 on success, 0 otherwise. + */ +__owur int SCT_set0_log_id(SCT *sct, unsigned char *log_id, size_t log_id_len); + +/* + * Set the log ID of an SCT. + * This makes a copy of the log_id. + * Returns 1 on success, 0 otherwise. + */ +__owur int SCT_set1_log_id(SCT *sct, const unsigned char *log_id, + size_t log_id_len); + +/* + * Returns the timestamp for the SCT (epoch time in milliseconds). + */ +uint64_t SCT_get_timestamp(const SCT *sct); + +/* + * Set the timestamp of an SCT (epoch time in milliseconds). + */ +void SCT_set_timestamp(SCT *sct, uint64_t timestamp); + +/* + * Return the NID for the signature used by the SCT. + * For CT v1, this will be either NID_sha256WithRSAEncryption or + * NID_ecdsa_with_SHA256 (or NID_undef if incorrect/unset). + */ +int SCT_get_signature_nid(const SCT *sct); + +/* + * Set the signature type of an SCT + * For CT v1, this should be either NID_sha256WithRSAEncryption or + * NID_ecdsa_with_SHA256. + * Returns 1 on success, 0 otherwise. + */ +__owur int SCT_set_signature_nid(SCT *sct, int nid); + +/* + * Set *ext to point to the extension data for the SCT. ext must not be NULL. + * The SCT retains ownership of this pointer. + * Returns length of the data pointed to. + */ +size_t SCT_get0_extensions(const SCT *sct, unsigned char **ext); + +/* + * Set the extensions of an SCT to point directly to the *ext specified. + * The SCT takes ownership of the specified pointer. + */ +void SCT_set0_extensions(SCT *sct, unsigned char *ext, size_t ext_len); + +/* + * Set the extensions of an SCT. + * This takes a copy of the ext. + * Returns 1 on success, 0 otherwise. + */ +__owur int SCT_set1_extensions(SCT *sct, const unsigned char *ext, + size_t ext_len); + +/* + * Set *sig to point to the signature for the SCT. sig must not be NULL. + * The SCT retains ownership of this pointer. + * Returns length of the data pointed to. + */ +size_t SCT_get0_signature(const SCT *sct, unsigned char **sig); + +/* + * Set the signature of an SCT to point directly to the *sig specified. + * The SCT takes ownership of the specified pointer. + */ +void SCT_set0_signature(SCT *sct, unsigned char *sig, size_t sig_len); + +/* + * Set the signature of an SCT to be a copy of the *sig specified. + * Returns 1 on success, 0 otherwise. + */ +__owur int SCT_set1_signature(SCT *sct, const unsigned char *sig, + size_t sig_len); + +/* + * The origin of this SCT, e.g. TLS extension, OCSP response, etc. + */ +sct_source_t SCT_get_source(const SCT *sct); + +/* + * Set the origin of this SCT, e.g. TLS extension, OCSP response, etc. + * Returns 1 on success, 0 otherwise. + */ +__owur int SCT_set_source(SCT *sct, sct_source_t source); + +/* + * Returns a text string describing the validation status of |sct|. + */ +const char *SCT_validation_status_string(const SCT *sct); + +/* + * Pretty-prints an |sct| to |out|. + * It will be indented by the number of spaces specified by |indent|. + * If |logs| is not NULL, it will be used to lookup the CT log that the SCT came + * from, so that the log name can be printed. + */ +void SCT_print(const SCT *sct, BIO *out, int indent, const CTLOG_STORE *logs); + +/* + * Pretty-prints an |sct_list| to |out|. + * It will be indented by the number of spaces specified by |indent|. + * SCTs will be delimited by |separator|. + * If |logs| is not NULL, it will be used to lookup the CT log that each SCT + * came from, so that the log names can be printed. + */ +void SCT_LIST_print(const STACK_OF(SCT) *sct_list, BIO *out, int indent, + const char *separator, const CTLOG_STORE *logs); + +/* + * Gets the last result of validating this SCT. + * If it has not been validated yet, returns SCT_VALIDATION_STATUS_NOT_SET. + */ +sct_validation_status_t SCT_get_validation_status(const SCT *sct); + +/* + * Validates the given SCT with the provided context. + * Sets the "validation_status" field of the SCT. + * Returns 1 if the SCT is valid and the signature verifies. + * Returns 0 if the SCT is invalid or could not be verified. + * Returns -1 if an error occurs. + */ +__owur int SCT_validate(SCT *sct, const CT_POLICY_EVAL_CTX *ctx); + +/* + * Validates the given list of SCTs with the provided context. + * Sets the "validation_status" field of each SCT. + * Returns 1 if there are no invalid SCTs and all signatures verify. + * Returns 0 if at least one SCT is invalid or could not be verified. + * Returns a negative integer if an error occurs. + */ +__owur int SCT_LIST_validate(const STACK_OF(SCT) *scts, + CT_POLICY_EVAL_CTX *ctx); + + +/********************************* + * SCT parsing and serialisation * + *********************************/ + +/* + * Serialize (to TLS format) a stack of SCTs and return the length. + * "a" must not be NULL. + * If "pp" is NULL, just return the length of what would have been serialized. + * If "pp" is not NULL and "*pp" is null, function will allocate a new pointer + * for data that caller is responsible for freeing (only if function returns + * successfully). + * If "pp" is NULL and "*pp" is not NULL, caller is responsible for ensuring + * that "*pp" is large enough to accept all of the serialized data. + * Returns < 0 on error, >= 0 indicating bytes written (or would have been) + * on success. + */ +__owur int i2o_SCT_LIST(const STACK_OF(SCT) *a, unsigned char **pp); + +/* + * Convert TLS format SCT list to a stack of SCTs. + * If "a" or "*a" is NULL, a new stack will be created that the caller is + * responsible for freeing (by calling SCT_LIST_free). + * "**pp" and "*pp" must not be NULL. + * Upon success, "*pp" will point to after the last bytes read, and a stack + * will be returned. + * Upon failure, a NULL pointer will be returned, and the position of "*pp" is + * not defined. + */ +STACK_OF(SCT) *o2i_SCT_LIST(STACK_OF(SCT) **a, const unsigned char **pp, + size_t len); + +/* + * Serialize (to DER format) a stack of SCTs and return the length. + * "a" must not be NULL. + * If "pp" is NULL, just returns the length of what would have been serialized. + * If "pp" is not NULL and "*pp" is null, function will allocate a new pointer + * for data that caller is responsible for freeing (only if function returns + * successfully). + * If "pp" is NULL and "*pp" is not NULL, caller is responsible for ensuring + * that "*pp" is large enough to accept all of the serialized data. + * Returns < 0 on error, >= 0 indicating bytes written (or would have been) + * on success. + */ +__owur int i2d_SCT_LIST(const STACK_OF(SCT) *a, unsigned char **pp); + +/* + * Parses an SCT list in DER format and returns it. + * If "a" or "*a" is NULL, a new stack will be created that the caller is + * responsible for freeing (by calling SCT_LIST_free). + * "**pp" and "*pp" must not be NULL. + * Upon success, "*pp" will point to after the last bytes read, and a stack + * will be returned. + * Upon failure, a NULL pointer will be returned, and the position of "*pp" is + * not defined. + */ +STACK_OF(SCT) *d2i_SCT_LIST(STACK_OF(SCT) **a, const unsigned char **pp, + long len); + +/* + * Serialize (to TLS format) an |sct| and write it to |out|. + * If |out| is null, no SCT will be output but the length will still be returned. + * If |out| points to a null pointer, a string will be allocated to hold the + * TLS-format SCT. It is the responsibility of the caller to free it. + * If |out| points to an allocated string, the TLS-format SCT will be written + * to it. + * The length of the SCT in TLS format will be returned. + */ +__owur int i2o_SCT(const SCT *sct, unsigned char **out); + +/* + * Parses an SCT in TLS format and returns it. + * If |psct| is not null, it will end up pointing to the parsed SCT. If it + * already points to a non-null pointer, the pointer will be free'd. + * |in| should be a pointer to a string containing the TLS-format SCT. + * |in| will be advanced to the end of the SCT if parsing succeeds. + * |len| should be the length of the SCT in |in|. + * Returns NULL if an error occurs. + * If the SCT is an unsupported version, only the SCT's 'sct' and 'sct_len' + * fields will be populated (with |in| and |len| respectively). + */ +SCT *o2i_SCT(SCT **psct, const unsigned char **in, size_t len); + +/******************** + * CT log functions * + ********************/ + +/* + * Creates a new CT log instance with the given |public_key| and |name|. + * Takes ownership of |public_key| but copies |name|. + * Returns NULL if malloc fails or if |public_key| cannot be converted to DER. + * Should be deleted by the caller using CTLOG_free when no longer needed. + */ +CTLOG *CTLOG_new(EVP_PKEY *public_key, const char *name); + +/* + * Creates a new CTLOG instance with the base64-encoded SubjectPublicKeyInfo DER + * in |pkey_base64|. The |name| is a string to help users identify this log. + * Returns 1 on success, 0 on failure. + * Should be deleted by the caller using CTLOG_free when no longer needed. + */ +int CTLOG_new_from_base64(CTLOG ** ct_log, + const char *pkey_base64, const char *name); + +/* + * Deletes a CT log instance and its fields. + */ +void CTLOG_free(CTLOG *log); + +/* Gets the name of the CT log */ +const char *CTLOG_get0_name(const CTLOG *log); +/* Gets the ID of the CT log */ +void CTLOG_get0_log_id(const CTLOG *log, const uint8_t **log_id, + size_t *log_id_len); +/* Gets the public key of the CT log */ +EVP_PKEY *CTLOG_get0_public_key(const CTLOG *log); + +/************************** + * CT log store functions * + **************************/ + +/* + * Creates a new CT log store. + * Should be deleted by the caller using CTLOG_STORE_free when no longer needed. + */ +CTLOG_STORE *CTLOG_STORE_new(void); + +/* + * Deletes a CT log store and all of the CT log instances held within. + */ +void CTLOG_STORE_free(CTLOG_STORE *store); + +/* + * Finds a CT log in the store based on its log ID. + * Returns the CT log, or NULL if no match is found. + */ +const CTLOG *CTLOG_STORE_get0_log_by_id(const CTLOG_STORE *store, + const uint8_t *log_id, + size_t log_id_len); + +/* + * Loads a CT log list into a |store| from a |file|. + * Returns 1 if loading is successful, or 0 otherwise. + */ +__owur int CTLOG_STORE_load_file(CTLOG_STORE *store, const char *file); + +/* + * Loads the default CT log list into a |store|. + * Returns 1 if loading is successful, or 0 otherwise. + */ +__owur int CTLOG_STORE_load_default_file(CTLOG_STORE *store); + +# ifdef __cplusplus +} +# endif +# endif +#endif diff --git a/plugin/openssl/include/openssl/cterr.h b/plugin/openssl/include/openssl/cterr.h new file mode 100644 index 000000000..feb7bc566 --- /dev/null +++ b/plugin/openssl/include/openssl/cterr.h @@ -0,0 +1,80 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_CTERR_H +# define HEADER_CTERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# include + +# ifndef OPENSSL_NO_CT + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_CT_strings(void); + +/* + * CT function codes. + */ +# define CT_F_CTLOG_NEW 117 +# define CT_F_CTLOG_NEW_FROM_BASE64 118 +# define CT_F_CTLOG_NEW_FROM_CONF 119 +# define CT_F_CTLOG_STORE_LOAD_CTX_NEW 122 +# define CT_F_CTLOG_STORE_LOAD_FILE 123 +# define CT_F_CTLOG_STORE_LOAD_LOG 130 +# define CT_F_CTLOG_STORE_NEW 131 +# define CT_F_CT_BASE64_DECODE 124 +# define CT_F_CT_POLICY_EVAL_CTX_NEW 133 +# define CT_F_CT_V1_LOG_ID_FROM_PKEY 125 +# define CT_F_I2O_SCT 107 +# define CT_F_I2O_SCT_LIST 108 +# define CT_F_I2O_SCT_SIGNATURE 109 +# define CT_F_O2I_SCT 110 +# define CT_F_O2I_SCT_LIST 111 +# define CT_F_O2I_SCT_SIGNATURE 112 +# define CT_F_SCT_CTX_NEW 126 +# define CT_F_SCT_CTX_VERIFY 128 +# define CT_F_SCT_NEW 100 +# define CT_F_SCT_NEW_FROM_BASE64 127 +# define CT_F_SCT_SET0_LOG_ID 101 +# define CT_F_SCT_SET1_EXTENSIONS 114 +# define CT_F_SCT_SET1_LOG_ID 115 +# define CT_F_SCT_SET1_SIGNATURE 116 +# define CT_F_SCT_SET_LOG_ENTRY_TYPE 102 +# define CT_F_SCT_SET_SIGNATURE_NID 103 +# define CT_F_SCT_SET_VERSION 104 + +/* + * CT reason codes. + */ +# define CT_R_BASE64_DECODE_ERROR 108 +# define CT_R_INVALID_LOG_ID_LENGTH 100 +# define CT_R_LOG_CONF_INVALID 109 +# define CT_R_LOG_CONF_INVALID_KEY 110 +# define CT_R_LOG_CONF_MISSING_DESCRIPTION 111 +# define CT_R_LOG_CONF_MISSING_KEY 112 +# define CT_R_LOG_KEY_INVALID 113 +# define CT_R_SCT_FUTURE_TIMESTAMP 116 +# define CT_R_SCT_INVALID 104 +# define CT_R_SCT_INVALID_SIGNATURE 107 +# define CT_R_SCT_LIST_INVALID 105 +# define CT_R_SCT_LOG_ID_MISMATCH 114 +# define CT_R_SCT_NOT_SET 106 +# define CT_R_SCT_UNSUPPORTED_VERSION 115 +# define CT_R_UNRECOGNIZED_SIGNATURE_NID 101 +# define CT_R_UNSUPPORTED_ENTRY_TYPE 102 +# define CT_R_UNSUPPORTED_VERSION 103 + +# endif +#endif diff --git a/plugin/openssl/include/openssl/des.h b/plugin/openssl/include/openssl/des.h new file mode 100644 index 000000000..be4abbdfd --- /dev/null +++ b/plugin/openssl/include/openssl/des.h @@ -0,0 +1,174 @@ +/* + * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_DES_H +# define HEADER_DES_H + +# include + +# ifndef OPENSSL_NO_DES +# ifdef __cplusplus +extern "C" { +# endif +# include + +typedef unsigned int DES_LONG; + +# ifdef OPENSSL_BUILD_SHLIBCRYPTO +# undef OPENSSL_EXTERN +# define OPENSSL_EXTERN OPENSSL_EXPORT +# 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; + +# 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) + +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_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); +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); +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); + +# define DES_fixup_key_parity DES_set_odd_parity + +# ifdef __cplusplus +} +# endif +# endif + +#endif diff --git a/plugin/openssl/include/openssl/dh.h b/plugin/openssl/include/openssl/dh.h new file mode 100644 index 000000000..6c6ff3636 --- /dev/null +++ b/plugin/openssl/include/openssl/dh.h @@ -0,0 +1,343 @@ +/* + * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_DH_H +# define HEADER_DH_H + +# include + +# ifndef OPENSSL_NO_DH +# include +# include +# include +# include +# if OPENSSL_API_COMPAT < 0x10100000L +# include +# endif +# include + +# ifdef __cplusplus +extern "C" { +# endif + +# ifndef OPENSSL_DH_MAX_MODULUS_BITS +# define OPENSSL_DH_MAX_MODULUS_BITS 10000 +# endif +# ifndef OPENSSL_DH_CHECK_MAX_MODULUS_BITS +# define OPENSSL_DH_CHECK_MAX_MODULUS_BITS 32768 +# endif + +# define OPENSSL_DH_FIPS_MIN_MODULUS_BITS 1024 + +# define DH_FLAG_CACHE_MONT_P 0x01 + +# if OPENSSL_API_COMPAT < 0x10100000L +/* + * Does nothing. Previously this switched off constant time behaviour. + */ +# define DH_FLAG_NO_EXP_CONSTTIME 0x00 +# endif + +/* + * 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 responsibility 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 + +/* Already defined in ossl_typ.h */ +/* typedef struct dh_st DH; */ +/* typedef struct dh_method DH_METHOD; */ + +DECLARE_ASN1_ITEM(DHparams) + +# define DH_GENERATOR_2 2 +/* #define DH_GENERATOR_3 3 */ +# define DH_GENERATOR_5 5 + +/* DH_check error codes */ +# define DH_CHECK_P_NOT_PRIME 0x01 +# define DH_CHECK_P_NOT_SAFE_PRIME 0x02 +# define DH_UNABLE_TO_CHECK_GENERATOR 0x04 +# define DH_NOT_SUITABLE_GENERATOR 0x08 +# define DH_CHECK_Q_NOT_PRIME 0x10 +# define DH_CHECK_INVALID_Q_VALUE 0x20 +# define DH_CHECK_INVALID_J_VALUE 0x40 + +/* DH_check_pub_key error codes */ +# define DH_CHECK_PUBKEY_TOO_SMALL 0x01 +# define DH_CHECK_PUBKEY_TOO_LARGE 0x02 +# define DH_CHECK_PUBKEY_INVALID 0x04 + +/* + * primes p where (p-1)/2 is prime too are called "safe"; we define this for + * backward compatibility: + */ +# define DH_CHECK_P_NOT_STRONG_PRIME DH_CHECK_P_NOT_SAFE_PRIME + +# define d2i_DHparams_fp(fp,x) \ + (DH *)ASN1_d2i_fp((char *(*)())DH_new, \ + (char *(*)())d2i_DHparams, \ + (fp), \ + (unsigned char **)(x)) +# define i2d_DHparams_fp(fp,x) \ + ASN1_i2d_fp(i2d_DHparams,(fp), (unsigned char *)(x)) +# define d2i_DHparams_bio(bp,x) \ + ASN1_d2i_bio_of(DH, DH_new, d2i_DHparams, bp, x) +# define i2d_DHparams_bio(bp,x) \ + ASN1_i2d_bio_of_const(DH,i2d_DHparams,bp,x) + +# define d2i_DHxparams_fp(fp,x) \ + (DH *)ASN1_d2i_fp((char *(*)())DH_new, \ + (char *(*)())d2i_DHxparams, \ + (fp), \ + (unsigned char **)(x)) +# define i2d_DHxparams_fp(fp,x) \ + ASN1_i2d_fp(i2d_DHxparams,(fp), (unsigned char *)(x)) +# define d2i_DHxparams_bio(bp,x) \ + ASN1_d2i_bio_of(DH, DH_new, d2i_DHxparams, bp, x) +# define i2d_DHxparams_bio(bp,x) \ + ASN1_i2d_bio_of_const(DH, i2d_DHxparams, bp, x) + +DH *DHparams_dup(DH *); + +const DH_METHOD *DH_OpenSSL(void); + +void DH_set_default_method(const DH_METHOD *meth); +const DH_METHOD *DH_get_default_method(void); +int DH_set_method(DH *dh, const DH_METHOD *meth); +DH *DH_new_method(ENGINE *engine); + +DH *DH_new(void); +void DH_free(DH *dh); +int DH_up_ref(DH *dh); +int DH_bits(const DH *dh); +int DH_size(const DH *dh); +int DH_security_bits(const DH *dh); +#define DH_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_DH, l, p, newf, dupf, freef) +int DH_set_ex_data(DH *d, int idx, void *arg); +void *DH_get_ex_data(DH *d, int idx); + +/* Deprecated version */ +DEPRECATEDIN_0_9_8(DH *DH_generate_parameters(int prime_len, int generator, + void (*callback) (int, int, + void *), + void *cb_arg)) + +/* New version */ +int DH_generate_parameters_ex(DH *dh, int prime_len, int generator, + BN_GENCB *cb); + +int DH_check_params_ex(const DH *dh); +int DH_check_ex(const DH *dh); +int DH_check_pub_key_ex(const DH *dh, const BIGNUM *pub_key); +int DH_check_params(const DH *dh, int *ret); +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_STDIO +int DHparams_print_fp(FILE *fp, const DH *x); +# endif +int DHparams_print(BIO *bp, const DH *x); + +/* RFC 5114 parameters */ +DH *DH_get_1024_160(void); +DH *DH_get_2048_224(void); +DH *DH_get_2048_256(void); + +/* Named parameters, currently RFC7919 */ +DH *DH_new_by_nid(int nid); +int DH_get_nid(const DH *dh); + +# ifndef OPENSSL_NO_CMS +/* RFC2631 KDF */ +int DH_KDF_X9_42(unsigned char *out, size_t outlen, + const unsigned char *Z, size_t Zlen, + ASN1_OBJECT *key_oid, + const unsigned char *ukm, size_t ukmlen, const EVP_MD *md); +# endif + +void DH_get0_pqg(const DH *dh, + const BIGNUM **p, const BIGNUM **q, const BIGNUM **g); +int DH_set0_pqg(DH *dh, BIGNUM *p, BIGNUM *q, BIGNUM *g); +void DH_get0_key(const DH *dh, + const BIGNUM **pub_key, const BIGNUM **priv_key); +int DH_set0_key(DH *dh, BIGNUM *pub_key, BIGNUM *priv_key); +const BIGNUM *DH_get0_p(const DH *dh); +const BIGNUM *DH_get0_q(const DH *dh); +const BIGNUM *DH_get0_g(const DH *dh); +const BIGNUM *DH_get0_priv_key(const DH *dh); +const BIGNUM *DH_get0_pub_key(const DH *dh); +void DH_clear_flags(DH *dh, int flags); +int DH_test_flags(const DH *dh, int flags); +void DH_set_flags(DH *dh, int flags); +ENGINE *DH_get0_engine(DH *d); +long DH_get_length(const DH *dh); +int DH_set_length(DH *dh, long length); + +DH_METHOD *DH_meth_new(const char *name, int flags); +void DH_meth_free(DH_METHOD *dhm); +DH_METHOD *DH_meth_dup(const DH_METHOD *dhm); +const char *DH_meth_get0_name(const DH_METHOD *dhm); +int DH_meth_set1_name(DH_METHOD *dhm, const char *name); +int DH_meth_get_flags(const DH_METHOD *dhm); +int DH_meth_set_flags(DH_METHOD *dhm, int flags); +void *DH_meth_get0_app_data(const DH_METHOD *dhm); +int DH_meth_set0_app_data(DH_METHOD *dhm, void *app_data); +int (*DH_meth_get_generate_key(const DH_METHOD *dhm)) (DH *); +int DH_meth_set_generate_key(DH_METHOD *dhm, int (*generate_key) (DH *)); +int (*DH_meth_get_compute_key(const DH_METHOD *dhm)) + (unsigned char *key, const BIGNUM *pub_key, DH *dh); +int DH_meth_set_compute_key(DH_METHOD *dhm, + int (*compute_key) (unsigned char *key, const BIGNUM *pub_key, DH *dh)); +int (*DH_meth_get_bn_mod_exp(const DH_METHOD *dhm)) + (const DH *, BIGNUM *, const BIGNUM *, const BIGNUM *, const BIGNUM *, + BN_CTX *, BN_MONT_CTX *); +int DH_meth_set_bn_mod_exp(DH_METHOD *dhm, + int (*bn_mod_exp) (const DH *, BIGNUM *, const BIGNUM *, const BIGNUM *, + const BIGNUM *, BN_CTX *, BN_MONT_CTX *)); +int (*DH_meth_get_init(const DH_METHOD *dhm))(DH *); +int DH_meth_set_init(DH_METHOD *dhm, int (*init)(DH *)); +int (*DH_meth_get_finish(const DH_METHOD *dhm)) (DH *); +int DH_meth_set_finish(DH_METHOD *dhm, int (*finish) (DH *)); +int (*DH_meth_get_generate_params(const DH_METHOD *dhm)) + (DH *, int, int, BN_GENCB *); +int DH_meth_set_generate_params(DH_METHOD *dhm, + int (*generate_params) (DH *, int, int, BN_GENCB *)); + + +# 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_nid(ctx, nid) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DH, \ + EVP_PKEY_OP_PARAMGEN | EVP_PKEY_OP_KEYGEN, \ + EVP_PKEY_CTRL_DH_NID, nid, NULL) + +# define EVP_PKEY_CTX_set_dh_pad(ctx, pad) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DH, EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_DH_PAD, pad, 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) +# define EVP_PKEY_CTRL_DH_NID (EVP_PKEY_ALG_CTRL + 15) +# define EVP_PKEY_CTRL_DH_PAD (EVP_PKEY_ALG_CTRL + 16) + +/* KDF types */ +# define EVP_PKEY_DH_KDF_NONE 1 +# ifndef OPENSSL_NO_CMS +# define EVP_PKEY_DH_KDF_X9_42 2 +# endif + + +# ifdef __cplusplus +} +# endif +# endif +#endif diff --git a/plugin/openssl/include/openssl/dherr.h b/plugin/openssl/include/openssl/dherr.h new file mode 100644 index 000000000..528c81985 --- /dev/null +++ b/plugin/openssl/include/openssl/dherr.h @@ -0,0 +1,89 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_DHERR_H +# define HEADER_DHERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# include + +# ifndef OPENSSL_NO_DH + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_DH_strings(void); + +/* + * DH 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_CHECK 126 +# define DH_F_DH_CHECK_EX 121 +# define DH_F_DH_CHECK_PARAMS_EX 122 +# define DH_F_DH_CHECK_PUB_KEY_EX 123 +# define DH_F_DH_CMS_DECRYPT 114 +# define DH_F_DH_CMS_SET_PEERKEY 115 +# define DH_F_DH_CMS_SET_SHARED_INFO 116 +# define DH_F_DH_METH_DUP 117 +# define DH_F_DH_METH_NEW 118 +# define DH_F_DH_METH_SET1_NAME 119 +# define DH_F_DH_NEW_BY_NID 104 +# define DH_F_DH_NEW_METHOD 105 +# define DH_F_DH_PARAM_DECODE 107 +# define DH_F_DH_PKEY_PUBLIC_CHECK 124 +# 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_PKEY_DH_CTRL_STR 120 +# define DH_F_PKEY_DH_DERIVE 112 +# define DH_F_PKEY_DH_INIT 125 +# define DH_F_PKEY_DH_KEYGEN 113 + +/* + * DH reason codes. + */ +# define DH_R_BAD_GENERATOR 101 +# define DH_R_BN_DECODE_ERROR 109 +# define DH_R_BN_ERROR 106 +# define DH_R_CHECK_INVALID_J_VALUE 115 +# define DH_R_CHECK_INVALID_Q_VALUE 116 +# define DH_R_CHECK_PUBKEY_INVALID 122 +# define DH_R_CHECK_PUBKEY_TOO_LARGE 123 +# define DH_R_CHECK_PUBKEY_TOO_SMALL 124 +# define DH_R_CHECK_P_NOT_PRIME 117 +# define DH_R_CHECK_P_NOT_SAFE_PRIME 118 +# define DH_R_CHECK_Q_NOT_PRIME 119 +# define DH_R_DECODE_ERROR 104 +# define DH_R_INVALID_PARAMETER_NAME 110 +# define DH_R_INVALID_PARAMETER_NID 114 +# define DH_R_INVALID_PUBKEY 102 +# define DH_R_KDF_PARAMETER_ERROR 112 +# define DH_R_KEYS_NOT_SET 108 +# define DH_R_MISSING_PUBKEY 125 +# define DH_R_MODULUS_TOO_LARGE 103 +# define DH_R_NOT_SUITABLE_GENERATOR 120 +# 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 111 +# define DH_R_SHARED_INFO_ERROR 113 +# define DH_R_UNABLE_TO_CHECK_GENERATOR 121 + +# endif +#endif diff --git a/plugin/openssl/include/openssl/dsa.h b/plugin/openssl/include/openssl/dsa.h new file mode 100644 index 000000000..6d8a18a4a --- /dev/null +++ b/plugin/openssl/include/openssl/dsa.h @@ -0,0 +1,244 @@ +/* + * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_DSA_H +# define HEADER_DSA_H + +# include + +# ifndef OPENSSL_NO_DSA +# ifdef __cplusplus +extern "C" { +# endif +# include +# include +# include +# include +# include +# if OPENSSL_API_COMPAT < 0x10100000L +# include +# endif +# include + +# ifndef OPENSSL_DSA_MAX_MODULUS_BITS +# define OPENSSL_DSA_MAX_MODULUS_BITS 10000 +# endif + +# define OPENSSL_DSA_FIPS_MIN_MODULUS_BITS 1024 + +# define DSA_FLAG_CACHE_MONT_P 0x01 +# if OPENSSL_API_COMPAT < 0x10100000L +/* + * Does nothing. Previously this switched off constant time behaviour. + */ +# define DSA_FLAG_NO_EXP_CONSTTIME 0x00 +# endif + +/* + * 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 responsibility 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 +# define DSA_FLAG_FIPS_CHECKED 0x0800 + +/* Already defined in ossl_typ.h */ +/* typedef struct dsa_st DSA; */ +/* typedef struct dsa_method DSA_METHOD; */ + +typedef struct DSA_SIG_st DSA_SIG; + +# 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); +void DSA_SIG_get0(const DSA_SIG *sig, const BIGNUM **pr, const BIGNUM **ps); +int DSA_SIG_set0(DSA_SIG *sig, BIGNUM *r, BIGNUM *s); + +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 *); +const DSA_METHOD *DSA_get_method(DSA *d); + +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 *); +int DSA_bits(const DSA *d); +int DSA_security_bits(const DSA *d); + /* next 4 return -1 on error */ +DEPRECATEDIN_1_2_0(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); +#define DSA_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_DSA, l, p, newf, dupf, freef) +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 */ +DEPRECATEDIN_0_9_8(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)) + +/* 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); + +int DSAparams_print(BIO *bp, const DSA *x); +int DSA_print(BIO *bp, const DSA *x, int off); +# ifndef OPENSSL_NO_STDIO +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 64 +/* + * Primality test according to FIPS PUB 186-4, Appendix C.3. Since we only + * have one value here we set the number of checks to 64 which is the 128 bit + * security level that is the highest level and valid for creating a 3072 bit + * DSA key. + */ +# 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_CTX_set_dsa_paramgen_q_bits(ctx, qbits) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DSA, EVP_PKEY_OP_PARAMGEN, \ + EVP_PKEY_CTRL_DSA_PARAMGEN_Q_BITS, qbits, NULL) +# define EVP_PKEY_CTX_set_dsa_paramgen_md(ctx, md) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DSA, EVP_PKEY_OP_PARAMGEN, \ + EVP_PKEY_CTRL_DSA_PARAMGEN_MD, 0, (void *)(md)) + +# 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) + +void DSA_get0_pqg(const DSA *d, + const BIGNUM **p, const BIGNUM **q, const BIGNUM **g); +int DSA_set0_pqg(DSA *d, BIGNUM *p, BIGNUM *q, BIGNUM *g); +void DSA_get0_key(const DSA *d, + const BIGNUM **pub_key, const BIGNUM **priv_key); +int DSA_set0_key(DSA *d, BIGNUM *pub_key, BIGNUM *priv_key); +const BIGNUM *DSA_get0_p(const DSA *d); +const BIGNUM *DSA_get0_q(const DSA *d); +const BIGNUM *DSA_get0_g(const DSA *d); +const BIGNUM *DSA_get0_pub_key(const DSA *d); +const BIGNUM *DSA_get0_priv_key(const DSA *d); +void DSA_clear_flags(DSA *d, int flags); +int DSA_test_flags(const DSA *d, int flags); +void DSA_set_flags(DSA *d, int flags); +ENGINE *DSA_get0_engine(DSA *d); + +DSA_METHOD *DSA_meth_new(const char *name, int flags); +void DSA_meth_free(DSA_METHOD *dsam); +DSA_METHOD *DSA_meth_dup(const DSA_METHOD *dsam); +const char *DSA_meth_get0_name(const DSA_METHOD *dsam); +int DSA_meth_set1_name(DSA_METHOD *dsam, const char *name); +int DSA_meth_get_flags(const DSA_METHOD *dsam); +int DSA_meth_set_flags(DSA_METHOD *dsam, int flags); +void *DSA_meth_get0_app_data(const DSA_METHOD *dsam); +int DSA_meth_set0_app_data(DSA_METHOD *dsam, void *app_data); +DSA_SIG *(*DSA_meth_get_sign(const DSA_METHOD *dsam)) + (const unsigned char *, int, DSA *); +int DSA_meth_set_sign(DSA_METHOD *dsam, + DSA_SIG *(*sign) (const unsigned char *, int, DSA *)); +int (*DSA_meth_get_sign_setup(const DSA_METHOD *dsam)) + (DSA *, BN_CTX *, BIGNUM **, BIGNUM **); +int DSA_meth_set_sign_setup(DSA_METHOD *dsam, + int (*sign_setup) (DSA *, BN_CTX *, BIGNUM **, BIGNUM **)); +int (*DSA_meth_get_verify(const DSA_METHOD *dsam)) + (const unsigned char *, int, DSA_SIG *, DSA *); +int DSA_meth_set_verify(DSA_METHOD *dsam, + int (*verify) (const unsigned char *, int, DSA_SIG *, DSA *)); +int (*DSA_meth_get_mod_exp(const DSA_METHOD *dsam)) + (DSA *, BIGNUM *, const BIGNUM *, const BIGNUM *, const BIGNUM *, + const BIGNUM *, const BIGNUM *, BN_CTX *, BN_MONT_CTX *); +int DSA_meth_set_mod_exp(DSA_METHOD *dsam, + int (*mod_exp) (DSA *, BIGNUM *, const BIGNUM *, const BIGNUM *, + const BIGNUM *, const BIGNUM *, const BIGNUM *, BN_CTX *, + BN_MONT_CTX *)); +int (*DSA_meth_get_bn_mod_exp(const DSA_METHOD *dsam)) + (DSA *, BIGNUM *, const BIGNUM *, const BIGNUM *, const BIGNUM *, + BN_CTX *, BN_MONT_CTX *); +int DSA_meth_set_bn_mod_exp(DSA_METHOD *dsam, + int (*bn_mod_exp) (DSA *, BIGNUM *, const BIGNUM *, const BIGNUM *, + const BIGNUM *, BN_CTX *, BN_MONT_CTX *)); +int (*DSA_meth_get_init(const DSA_METHOD *dsam))(DSA *); +int DSA_meth_set_init(DSA_METHOD *dsam, int (*init)(DSA *)); +int (*DSA_meth_get_finish(const DSA_METHOD *dsam)) (DSA *); +int DSA_meth_set_finish(DSA_METHOD *dsam, int (*finish) (DSA *)); +int (*DSA_meth_get_paramgen(const DSA_METHOD *dsam)) + (DSA *, int, const unsigned char *, int, int *, unsigned long *, + BN_GENCB *); +int DSA_meth_set_paramgen(DSA_METHOD *dsam, + int (*paramgen) (DSA *, int, const unsigned char *, int, int *, + unsigned long *, BN_GENCB *)); +int (*DSA_meth_get_keygen(const DSA_METHOD *dsam)) (DSA *); +int DSA_meth_set_keygen(DSA_METHOD *dsam, int (*keygen) (DSA *)); + + +# ifdef __cplusplus +} +# endif +# endif +#endif diff --git a/plugin/openssl/include/openssl/dsaerr.h b/plugin/openssl/include/openssl/dsaerr.h new file mode 100644 index 000000000..495a1ac89 --- /dev/null +++ b/plugin/openssl/include/openssl/dsaerr.h @@ -0,0 +1,72 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_DSAERR_H +# define HEADER_DSAERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# include + +# ifndef OPENSSL_NO_DSA + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_DSA_strings(void); + +/* + * DSA function codes. + */ +# define DSA_F_DSAPARAMS_PRINT 100 +# define DSA_F_DSAPARAMS_PRINT_FP 101 +# define DSA_F_DSA_BUILTIN_PARAMGEN 125 +# 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_METH_DUP 127 +# define DSA_F_DSA_METH_NEW 128 +# define DSA_F_DSA_METH_SET1_NAME 129 +# 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 102 +# define DSA_F_OLD_DSA_PRIV_DECODE 122 +# define DSA_F_PKEY_DSA_CTRL 120 +# define DSA_F_PKEY_DSA_CTRL_STR 104 +# define DSA_F_PKEY_DSA_KEYGEN 121 + +/* + * DSA 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_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_MISSING_PRIVATE_KEY 111 +# define DSA_R_MODULUS_TOO_LARGE 103 +# define DSA_R_NO_PARAMETERS_SET 107 +# define DSA_R_PARAMETER_ENCODING_ERROR 105 +# define DSA_R_Q_NOT_PRIME 113 +# define DSA_R_SEED_LEN_SMALL 110 + +# endif +#endif diff --git a/plugin/openssl/include/openssl/dtls1.h b/plugin/openssl/include/openssl/dtls1.h new file mode 100644 index 000000000..d55ca9c33 --- /dev/null +++ b/plugin/openssl/include/openssl/dtls1.h @@ -0,0 +1,55 @@ +/* + * Copyright 2005-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_DTLS1_H +# define HEADER_DTLS1_H + +#ifdef __cplusplus +extern "C" { +#endif + +# define DTLS1_VERSION 0xFEFF +# define DTLS1_2_VERSION 0xFEFD +# define DTLS_MIN_VERSION DTLS1_VERSION +# define DTLS_MAX_VERSION DTLS1_2_VERSION +# define DTLS1_VERSION_MAJOR 0xFE + +# define DTLS1_BAD_VER 0x0100 + +/* Special value for method supporting multiple versions */ +# define DTLS_ANY_VERSION 0x1FFFF + +/* lengths of messages */ +/* + * Actually the max cookie length in DTLS is 255. But we can't change this now + * due to compatibility concerns. + */ +# 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 + +# define DTLS1_AL_HEADER_LENGTH 2 + +/* Timeout multipliers */ +# 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/plugin/openssl/include/openssl/e_os2.h b/plugin/openssl/include/openssl/e_os2.h new file mode 100644 index 000000000..5c88e5194 --- /dev/null +++ b/plugin/openssl/include/openssl/e_os2.h @@ -0,0 +1,301 @@ +/* + * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_E_OS2_H +# define HEADER_E_OS2_H + +# include + +#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 + +/* --------------------- Microsoft operating systems ---------------------- */ + +/* + * Note that MSDOS actually denotes 32-bit environments running on top of + * MS-DOS, such as DJGPP one. + */ +# if defined(OPENSSL_SYS_MSDOS) +# undef OPENSSL_SYS_UNIX +# 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... + */ +/* + * UEFI lives here because it might be built with a Microsoft toolchain and + * we need to avoid the false positive match on Windows. + */ +# if defined(OPENSSL_SYS_UEFI) +# undef OPENSSL_SYS_UNIX +# elif defined(OPENSSL_SYS_UWIN) +# undef OPENSSL_SYS_UNIX +# define OPENSSL_SYS_WIN32_UWIN +# else +# if defined(__CYGWIN__) || defined(OPENSSL_SYS_CYGWIN) +# define OPENSSL_SYS_WIN32_CYGWIN +# else +# if defined(_WIN32) || defined(OPENSSL_SYS_WIN32) +# undef OPENSSL_SYS_UNIX +# if !defined(OPENSSL_SYS_WIN32) +# define OPENSSL_SYS_WIN32 +# endif +# endif +# if defined(_WIN64) || defined(OPENSSL_SYS_WIN64) +# undef OPENSSL_SYS_UNIX +# if !defined(OPENSSL_SYS_WIN64) +# define OPENSSL_SYS_WIN64 +# endif +# endif +# if defined(OPENSSL_SYS_WINNT) +# undef OPENSSL_SYS_UNIX +# endif +# if defined(OPENSSL_SYS_WINCE) +# undef OPENSSL_SYS_UNIX +# endif +# endif +# endif + +/* Anything that tries to look like Microsoft is "Windows" */ +# if defined(OPENSSL_SYS_WIN32) || defined(OPENSSL_SYS_WIN64) || defined(OPENSSL_SYS_WINNT) || defined(OPENSSL_SYS_WINCE) +# undef OPENSSL_SYS_UNIX +# define OPENSSL_SYS_WINDOWS +# ifndef OPENSSL_SYS_MSDOS +# define OPENSSL_SYS_MSDOS +# endif +# endif + +/* + * DLL settings. This part is a bit tough, because it's up to the + * application implementor how he or she will link the application, so it + * requires some macro to be used. + */ +# ifdef OPENSSL_SYS_WINDOWS +# ifndef OPENSSL_OPT_WINDLL +# if defined(_WINDLL) /* This is used when building OpenSSL to + * indicate that DLL linkage should be used */ +# define OPENSSL_OPT_WINDLL +# endif +# endif +# endif + +/* ------------------------------- OpenVMS -------------------------------- */ +# if defined(__VMS) || defined(VMS) || defined(OPENSSL_SYS_VMS) +# if !defined(OPENSSL_SYS_VMS) +# undef OPENSSL_SYS_UNIX +# endif +# 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 + +/* -------------------------------- Unix ---------------------------------- */ +# ifdef OPENSSL_SYS_UNIX +# if defined(linux) || defined(__linux__) && !defined(OPENSSL_SYS_LINUX) +# define OPENSSL_SYS_LINUX +# endif +# if defined(_AIX) && !defined(OPENSSL_SYS_AIX) +# define OPENSSL_SYS_AIX +# endif +# endif + +/* -------------------------------- VOS ----------------------------------- */ +# if defined(__VOS__) && !defined(OPENSSL_SYS_VOS) +# define OPENSSL_SYS_VOS +# ifdef __HPPA__ +# define OPENSSL_SYS_VOS_HPPA +# endif +# ifdef __IA32__ +# define OPENSSL_SYS_VOS_IA32 +# 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 + +/*- + * OPENSSL_EXTERN is normally used to declare a symbol with possible extra + * attributes to handle its presence in a shared library. + * OPENSSL_EXPORT is used to define a symbol with extra possible attributes + * to make it visible in a shared library. + * Care needs to be taken when a header file is used both to declare and + * define symbols. 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 and OPENSSL_EXTERN + * have some generally sensible values. + */ + +# if defined(OPENSSL_SYS_WINDOWS) && defined(OPENSSL_OPT_WINDLL) +# define OPENSSL_EXPORT extern __declspec(dllexport) +# define OPENSSL_EXTERN extern __declspec(dllimport) +# else +# define OPENSSL_EXPORT extern +# define OPENSSL_EXTERN extern +# endif + +/*- + * 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) type _shadow_##name=value; +# define OPENSSL_DECLARE_GLOBAL(type,name) OPENSSL_EXPORT type _shadow_##name +# define OPENSSL_GLOBAL_REF(name) _shadow_##name +# endif + +# ifdef _WIN32 +# ifdef _WIN64 +# define ossl_ssize_t __int64 +# define OSSL_SSIZE_MAX _I64_MAX +# else +# define ossl_ssize_t int +# define OSSL_SSIZE_MAX INT_MAX +# endif +# endif + +# if defined(OPENSSL_SYS_UEFI) && !defined(ossl_ssize_t) +# define ossl_ssize_t INTN +# define OSSL_SSIZE_MAX MAX_INTN +# endif + +# ifndef ossl_ssize_t +# define ossl_ssize_t ssize_t +# if defined(SSIZE_MAX) +# define OSSL_SSIZE_MAX SSIZE_MAX +# elif defined(_POSIX_SSIZE_MAX) +# define OSSL_SSIZE_MAX _POSIX_SSIZE_MAX +# else +# define OSSL_SSIZE_MAX ((ssize_t)(SIZE_MAX>>1)) +# endif +# endif + +# ifdef DEBUG_UNUSED +# define __owur __attribute__((__warn_unused_result__)) +# else +# define __owur +# endif + +/* Standard integer types */ +# if defined(OPENSSL_SYS_UEFI) +typedef INT8 int8_t; +typedef UINT8 uint8_t; +typedef INT16 int16_t; +typedef UINT16 uint16_t; +typedef INT32 int32_t; +typedef UINT32 uint32_t; +typedef INT64 int64_t; +typedef UINT64 uint64_t; +# elif (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || \ + defined(__osf__) || defined(__sgi) || defined(__hpux) || \ + defined(OPENSSL_SYS_VMS) || defined (__OpenBSD__) +# include +# elif defined(_MSC_VER) && _MSC_VER<1600 +/* + * minimally required typdefs for systems not supporting inttypes.h or + * stdint.h: currently just older VC++ + */ +typedef signed char int8_t; +typedef unsigned char uint8_t; +typedef short int16_t; +typedef unsigned short uint16_t; +typedef int int32_t; +typedef unsigned int uint32_t; +typedef __int64 int64_t; +typedef unsigned __int64 uint64_t; +# else +# include +# endif + +/* ossl_inline: portable inline definition usable in public headers */ +# if !defined(inline) && !defined(__cplusplus) +# if defined(__STDC_VERSION__) && __STDC_VERSION__>=199901L + /* just use inline */ +# define ossl_inline inline +# elif defined(__GNUC__) && __GNUC__>=2 +# define ossl_inline __inline__ +# elif defined(_MSC_VER) + /* + * Visual Studio: inline is available in C++ only, however + * __inline is available for C, see + * http://msdn.microsoft.com/en-us/library/z8y1yy88.aspx + */ +# define ossl_inline __inline +# else +# define ossl_inline +# endif +# else +# define ossl_inline inline +# endif + +# if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L && \ + !defined(__cplusplus) +# define ossl_noreturn _Noreturn +# elif defined(__GNUC__) && __GNUC__ >= 2 +# define ossl_noreturn __attribute__((noreturn)) +# else +# define ossl_noreturn +# endif + +/* ossl_unused: portable unused attribute for use in public headers */ +# if defined(__GNUC__) +# define ossl_unused __attribute__((unused)) +# else +# define ossl_unused +# endif + +#ifdef __cplusplus +} +#endif +#endif diff --git a/plugin/openssl/include/openssl/ebcdic.h b/plugin/openssl/include/openssl/ebcdic.h new file mode 100644 index 000000000..aa0128559 --- /dev/null +++ b/plugin/openssl/include/openssl/ebcdic.h @@ -0,0 +1,33 @@ +/* + * Copyright 1999-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#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/plugin/openssl/include/openssl/ec.h b/plugin/openssl/include/openssl/ec.h new file mode 100644 index 000000000..24baf53c3 --- /dev/null +++ b/plugin/openssl/include/openssl/ec.h @@ -0,0 +1,1484 @@ +/* + * Copyright 2002-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_EC_H +# define HEADER_EC_H + +# include + +# ifndef OPENSSL_NO_EC +# include +# include +# if OPENSSL_API_COMPAT < 0x10100000L +# include +# endif +# include +# ifdef __cplusplus +extern "C" { +# endif + +# ifndef OPENSSL_ECC_MAX_FIELD_BITS +# define OPENSSL_ECC_MAX_FIELD_BITS 661 +# endif + +/** Enum for the point conversion form as defined in X9.62 (ECDSA) + * for the encoding of a elliptic curve point (x,y) */ +typedef enum { + /** the point is encoded as z||x, where the octet z specifies + * which solution of the quadratic equation y is */ + POINT_CONVERSION_COMPRESSED = 2, + /** the point is encoded as z||x||y, where z is the octet 0x04 */ + POINT_CONVERSION_UNCOMPRESSED = 4, + /** the point is encoded as z||x||y, where the octet z specifies + * which solution of the quadratic equation y is */ + POINT_CONVERSION_HYBRID = 6 +} point_conversion_form_t; + +typedef struct ec_method_st EC_METHOD; +typedef struct ec_group_st EC_GROUP; +typedef struct ec_point_st EC_POINT; +typedef struct ecpk_parameters_st ECPKPARAMETERS; +typedef struct ec_parameters_st ECPARAMETERS; + +/********************************************************************/ +/* 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 its 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 occurred + */ +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 montgomery data (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 unused + * \return 1 on success and 0 if an error occurred + */ +int EC_GROUP_get_order(const EC_GROUP *group, BIGNUM *order, BN_CTX *ctx); + +/** Gets the order of an EC_GROUP + * \param group EC_GROUP object + * \return the group order + */ +const BIGNUM *EC_GROUP_get0_order(const EC_GROUP *group); + +/** Gets the number of bits of the order of an EC_GROUP + * \param group EC_GROUP object + * \return number of bits of group order. + */ +int EC_GROUP_order_bits(const EC_GROUP *group); + +/** Gets the cofactor of a EC_GROUP + * \param group EC_GROUP object + * \param cofactor BIGNUM to which the cofactor is copied + * \param ctx unused + * \return 1 on success and 0 if an error occurred + */ +int EC_GROUP_get_cofactor(const EC_GROUP *group, BIGNUM *cofactor, + BN_CTX *ctx); + +/** Gets the cofactor of an EC_GROUP + * \param group EC_GROUP object + * \return the group cofactor + */ +const BIGNUM *EC_GROUP_get0_cofactor(const EC_GROUP *group); + +/** 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 parameters of a ec curve defined by y^2 = x^3 + a*x + b (for GFp) + * or y^2 + x*y = x^3 + a*x^2 + b (for GF2m) + * \param group EC_GROUP object + * \param p BIGNUM with the prime number (GFp) or the polynomial + * defining the underlying field (GF2m) + * \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 occurred + */ +int EC_GROUP_set_curve(EC_GROUP *group, const BIGNUM *p, const BIGNUM *a, + const BIGNUM *b, BN_CTX *ctx); + +/** Gets the parameters of the ec curve defined by y^2 = x^3 + a*x + b (for GFp) + * or y^2 + x*y = x^3 + a*x^2 + b (for GF2m) + * \param group EC_GROUP object + * \param p BIGNUM with the prime number (GFp) or the polynomial + * defining the underlying field (GF2m) + * \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 occurred + */ +int EC_GROUP_get_curve(const EC_GROUP *group, BIGNUM *p, BIGNUM *a, BIGNUM *b, + BN_CTX *ctx); + +/** Sets the parameters of an ec curve. Synonym for EC_GROUP_set_curve + * \param group EC_GROUP object + * \param p BIGNUM with the prime number (GFp) or the polynomial + * defining the underlying field (GF2m) + * \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 occurred + */ +DEPRECATEDIN_1_2_0(int EC_GROUP_set_curve_GFp(EC_GROUP *group, const BIGNUM *p, + const BIGNUM *a, const BIGNUM *b, + BN_CTX *ctx)) + +/** Gets the parameters of an ec curve. Synonym for EC_GROUP_get_curve + * \param group EC_GROUP object + * \param p BIGNUM with the prime number (GFp) or the polynomial + * defining the underlying field (GF2m) + * \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 occurred + */ +DEPRECATEDIN_1_2_0(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 an ec curve. Synonym for EC_GROUP_set_curve + * \param group EC_GROUP object + * \param p BIGNUM with the prime number (GFp) or the polynomial + * defining the underlying field (GF2m) + * \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 occurred + */ +DEPRECATEDIN_1_2_0(int EC_GROUP_set_curve_GF2m(EC_GROUP *group, const BIGNUM *p, + const BIGNUM *a, const BIGNUM *b, + BN_CTX *ctx)) + +/** Gets the parameters of an ec curve. Synonym for EC_GROUP_get_curve + * \param group EC_GROUP object + * \param p BIGNUM with the prime number (GFp) or the polynomial + * defining the underlying field (GF2m) + * \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 occurred + */ +DEPRECATEDIN_1_2_0(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 the groups are equal, 1 if not, or -1 on error + */ +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); + +/** Creates a new EC_GROUP object from an ECPARAMETERS object + * \param params pointer to the ECPARAMETERS object + * \return newly created EC_GROUP object with specified curve or NULL + * if an error occurred + */ +EC_GROUP *EC_GROUP_new_from_ecparameters(const ECPARAMETERS *params); + +/** Creates an ECPARAMETERS object for the given EC_GROUP object. + * \param group pointer to the EC_GROUP object + * \param params pointer to an existing ECPARAMETERS object or NULL + * \return pointer to the new ECPARAMETERS object or NULL + * if an error occurred. + */ +ECPARAMETERS *EC_GROUP_get_ecparameters(const EC_GROUP *group, + ECPARAMETERS *params); + +/** Creates a new EC_GROUP object from an ECPKPARAMETERS object + * \param params pointer to an existing ECPKPARAMETERS object, or NULL + * \return newly created EC_GROUP object with specified curve, or NULL + * if an error occurred + */ +EC_GROUP *EC_GROUP_new_from_ecpkparameters(const ECPKPARAMETERS *params); + +/** Creates an ECPKPARAMETERS object for the given EC_GROUP object. + * \param group pointer to the EC_GROUP object + * \param params pointer to an existing ECPKPARAMETERS object or NULL + * \return pointer to the new ECPKPARAMETERS object or NULL + * if an error occurred. + */ +ECPKPARAMETERS *EC_GROUP_get_ecpkparameters(const EC_GROUP *group, + ECPKPARAMETERS *params); + +/********************************************************************/ +/* 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 is 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 occurred + */ +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 occurred + */ +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 occurred + */ +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 occurred + */ +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 an EC_POINT + * \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 occurred + */ +int EC_POINT_set_affine_coordinates(const EC_GROUP *group, EC_POINT *p, + const BIGNUM *x, const BIGNUM *y, + BN_CTX *ctx); + +/** Gets the affine coordinates of an EC_POINT. + * \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 occurred + */ +int EC_POINT_get_affine_coordinates(const EC_GROUP *group, const EC_POINT *p, + BIGNUM *x, BIGNUM *y, BN_CTX *ctx); + +/** Sets the affine coordinates of an EC_POINT. A synonym of + * EC_POINT_set_affine_coordinates + * \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 occurred + */ +DEPRECATEDIN_1_2_0(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 an EC_POINT. A synonym of + * EC_POINT_get_affine_coordinates + * \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 occurred + */ +DEPRECATEDIN_1_2_0(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 + * \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 occurred + */ +int EC_POINT_set_compressed_coordinates(const EC_GROUP *group, EC_POINT *p, + const BIGNUM *x, int y_bit, + BN_CTX *ctx); + +/** Sets the x9.62 compressed coordinates of a EC_POINT. A synonym of + * EC_POINT_set_compressed_coordinates + * \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 occurred + */ +DEPRECATEDIN_1_2_0(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 an EC_POINT. A synonym of + * EC_POINT_set_affine_coordinates + * \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 occurred + */ +DEPRECATEDIN_1_2_0(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 an EC_POINT. A synonym of + * EC_POINT_get_affine_coordinates + * \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 occurred + */ +DEPRECATEDIN_1_2_0(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. A synonym of + * EC_POINT_set_compressed_coordinates + * \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 occurred + */ +DEPRECATEDIN_1_2_0(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 occurred + */ +int EC_POINT_oct2point(const EC_GROUP *group, EC_POINT *p, + const unsigned char *buf, size_t len, BN_CTX *ctx); + +/** Encodes an EC_POINT object to an allocated octet string + * \param group underlying EC_GROUP object + * \param point EC_POINT object + * \param form point conversion form + * \param pbuf returns pointer to allocated 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_point2buf(const EC_GROUP *group, const EC_POINT *point, + point_conversion_form_t form, + unsigned char **pbuf, 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 occurred + */ +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 occurred + */ +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 occurred + */ +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 the point is on the curve, 0 if not, or -1 on error + */ +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 1 if the points are not equal, 0 if they are, or -1 on error + */ +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 further 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 occurred + */ +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 occurred + */ +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 occurred + */ +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 */ +/********************************************************************/ + +DECLARE_ASN1_ITEM(ECPKPARAMETERS) +DECLARE_ASN1_ALLOC_FUNCTIONS(ECPKPARAMETERS) +DECLARE_ASN1_ITEM(ECPARAMETERS) +DECLARE_ASN1_ALLOC_FUNCTIONS(ECPARAMETERS) + +/* + * 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_EXPLICIT_CURVE 0x000 +# define OPENSSL_EC_NAMED_CURVE 0x001 + +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, (d2i_of_void *)d2i_ECPKParameters, (fp), \ + (void **)(x)) +# define i2d_ECPKParameters_fp(fp,x) \ + ASN1_i2d_fp((i2d_of_void *)i2d_ECPKParameters, (fp), (void *)(x)) + +int ECPKParameters_print(BIO *bp, const EC_GROUP *x, int off); +# ifndef OPENSSL_NO_STDIO +int ECPKParameters_print_fp(FILE *fp, const EC_GROUP *x, int off); +# endif + +/********************************************************************/ +/* EC_KEY functions */ +/********************************************************************/ + +/* 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 +# define EC_FLAG_COFACTOR_ECDH 0x1000 + +/** 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); + +int EC_KEY_decoded_from_explicit_params(const EC_KEY *key); + +/** 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 ENGINE object of a EC_KEY object + * \param eckey EC_KEY object + * \return the ENGINE object (possibly NULL). + */ +ENGINE *EC_KEY_get0_engine(const EC_KEY *eckey); + +/** 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); + +#define EC_KEY_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_EC_KEY, l, p, newf, dupf, freef) +int EC_KEY_set_ex_data(EC_KEY *key, int idx, void *arg); +void *EC_KEY_get_ex_data(const EC_KEY *key, int idx); + +/* 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); + +/** Indicates if an EC_KEY can be used for signing. + * \param eckey the EC_KEY object + * \return 1 if can can sign and 0 otherwise. + */ +int EC_KEY_can_sign(const EC_KEY *eckey); + +/** Sets a public key from affine coordinates performing + * necessary 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); + +/** Encodes an EC_KEY public key to an allocated octet string + * \param key key to encode + * \param form point conversion form + * \param pbuf returns pointer to allocated buffer + * \param ctx BN_CTX object (optional) + * \return the length of the encoded octet string or 0 if an error occurred + */ +size_t EC_KEY_key2buf(const EC_KEY *key, point_conversion_form_t form, + unsigned char **pbuf, BN_CTX *ctx); + +/** Decodes a EC_KEY public key from a octet string + * \param key key to decode + * \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 occurred + */ + +int EC_KEY_oct2key(EC_KEY *key, const unsigned char *buf, size_t len, + BN_CTX *ctx); + +/** Decodes an EC_KEY private key from an octet string + * \param key key to decode + * \param buf memory buffer with the encoded private key + * \param len length of the encoded key + * \return 1 on success and 0 if an error occurred + */ + +int EC_KEY_oct2priv(EC_KEY *key, const unsigned char *buf, size_t len); + +/** Encodes a EC_KEY private key to an octet string + * \param key key to encode + * \param buf memory buffer for the result. If NULL the function returns + * required buffer size. + * \param len length of the memory buffer + * \return the length of the encoded octet string or 0 if an error occurred + */ + +size_t EC_KEY_priv2oct(const EC_KEY *key, unsigned char *buf, size_t len); + +/** Encodes an EC_KEY private key to an allocated octet string + * \param eckey key to encode + * \param pbuf returns pointer to allocated buffer + * \return the length of the encoded octet string or 0 if an error occurred + */ +size_t EC_KEY_priv2buf(const EC_KEY *eckey, unsigned char **pbuf); + +/********************************************************************/ +/* 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 parameters 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(const EC_KEY *key, unsigned char **out); + +/** 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); + +# ifndef OPENSSL_NO_STDIO +/** 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 + +const EC_KEY_METHOD *EC_KEY_OpenSSL(void); +const EC_KEY_METHOD *EC_KEY_get_default_method(void); +void EC_KEY_set_default_method(const EC_KEY_METHOD *meth); +const EC_KEY_METHOD *EC_KEY_get_method(const EC_KEY *key); +int EC_KEY_set_method(EC_KEY *key, const EC_KEY_METHOD *meth); +EC_KEY *EC_KEY_new_method(ENGINE *engine); + +/** The old name for ecdh_KDF_X9_63 + * The ECDH KDF specification has been mistakingly attributed to ANSI X9.62, + * it is actually specified in ANSI X9.63. + * This identifier is retained for backwards compatibility + */ +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); + +int ECDH_compute_key(void *out, size_t outlen, const EC_POINT *pub_key, + const EC_KEY *ecdh, + void *(*KDF) (const void *in, size_t inlen, + void *out, size_t *outlen)); + +typedef struct ECDSA_SIG_st 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 a negative value + * on error + */ +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); + +/** Accessor for r and s fields of ECDSA_SIG + * \param sig pointer to ECDSA_SIG structure + * \param pr pointer to BIGNUM pointer for r (may be NULL) + * \param ps pointer to BIGNUM pointer for s (may be NULL) + */ +void ECDSA_SIG_get0(const ECDSA_SIG *sig, const BIGNUM **pr, const BIGNUM **ps); + +/** Accessor for r field of ECDSA_SIG + * \param sig pointer to ECDSA_SIG structure + */ +const BIGNUM *ECDSA_SIG_get0_r(const ECDSA_SIG *sig); + +/** Accessor for s field of ECDSA_SIG + * \param sig pointer to ECDSA_SIG structure + */ +const BIGNUM *ECDSA_SIG_get0_s(const ECDSA_SIG *sig); + +/** Setter for r and s fields of ECDSA_SIG + * \param sig pointer to ECDSA_SIG structure + * \param r pointer to BIGNUM for r (may be NULL) + * \param s pointer to BIGNUM for s (may be NULL) + */ +int ECDSA_SIG_set0(ECDSA_SIG *sig, BIGNUM *r, BIGNUM *s); + +/** 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 (optional), + * 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); + +/** 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 (optional), + * 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); + +/** 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); + +/********************************************************************/ +/* EC_KEY_METHOD constructors, destructors, writers and accessors */ +/********************************************************************/ + +EC_KEY_METHOD *EC_KEY_METHOD_new(const EC_KEY_METHOD *meth); +void EC_KEY_METHOD_free(EC_KEY_METHOD *meth); +void EC_KEY_METHOD_set_init(EC_KEY_METHOD *meth, + int (*init)(EC_KEY *key), + void (*finish)(EC_KEY *key), + int (*copy)(EC_KEY *dest, const EC_KEY *src), + int (*set_group)(EC_KEY *key, const EC_GROUP *grp), + int (*set_private)(EC_KEY *key, + const BIGNUM *priv_key), + int (*set_public)(EC_KEY *key, + const EC_POINT *pub_key)); + +void EC_KEY_METHOD_set_keygen(EC_KEY_METHOD *meth, + int (*keygen)(EC_KEY *key)); + +void EC_KEY_METHOD_set_compute_key(EC_KEY_METHOD *meth, + int (*ckey)(unsigned char **psec, + size_t *pseclen, + const EC_POINT *pub_key, + const EC_KEY *ecdh)); + +void EC_KEY_METHOD_set_sign(EC_KEY_METHOD *meth, + int (*sign)(int type, const unsigned char *dgst, + int dlen, unsigned char *sig, + unsigned int *siglen, + const BIGNUM *kinv, const BIGNUM *r, + EC_KEY *eckey), + int (*sign_setup)(EC_KEY *eckey, BN_CTX *ctx_in, + BIGNUM **kinvp, BIGNUM **rp), + ECDSA_SIG *(*sign_sig)(const unsigned char *dgst, + int dgst_len, + const BIGNUM *in_kinv, + const BIGNUM *in_r, + EC_KEY *eckey)); + +void EC_KEY_METHOD_set_verify(EC_KEY_METHOD *meth, + int (*verify)(int type, const unsigned + char *dgst, int dgst_len, + const unsigned char *sigbuf, + int sig_len, EC_KEY *eckey), + int (*verify_sig)(const unsigned char *dgst, + int dgst_len, + const ECDSA_SIG *sig, + EC_KEY *eckey)); + +void EC_KEY_METHOD_get_init(const EC_KEY_METHOD *meth, + int (**pinit)(EC_KEY *key), + void (**pfinish)(EC_KEY *key), + int (**pcopy)(EC_KEY *dest, const EC_KEY *src), + int (**pset_group)(EC_KEY *key, + const EC_GROUP *grp), + int (**pset_private)(EC_KEY *key, + const BIGNUM *priv_key), + int (**pset_public)(EC_KEY *key, + const EC_POINT *pub_key)); + +void EC_KEY_METHOD_get_keygen(const EC_KEY_METHOD *meth, + int (**pkeygen)(EC_KEY *key)); + +void EC_KEY_METHOD_get_compute_key(const EC_KEY_METHOD *meth, + int (**pck)(unsigned char **psec, + size_t *pseclen, + const EC_POINT *pub_key, + const EC_KEY *ecdh)); + +void EC_KEY_METHOD_get_sign(const EC_KEY_METHOD *meth, + int (**psign)(int type, const unsigned char *dgst, + int dlen, unsigned char *sig, + unsigned int *siglen, + const BIGNUM *kinv, const BIGNUM *r, + EC_KEY *eckey), + int (**psign_setup)(EC_KEY *eckey, BN_CTX *ctx_in, + BIGNUM **kinvp, BIGNUM **rp), + ECDSA_SIG *(**psign_sig)(const unsigned char *dgst, + int dgst_len, + const BIGNUM *in_kinv, + const BIGNUM *in_r, + EC_KEY *eckey)); + +void EC_KEY_METHOD_get_verify(const EC_KEY_METHOD *meth, + int (**pverify)(int type, const unsigned + char *dgst, int dgst_len, + const unsigned char *sigbuf, + int sig_len, EC_KEY *eckey), + int (**pverify_sig)(const unsigned char *dgst, + int dgst_len, + const ECDSA_SIG *sig, + EC_KEY *eckey)); + +# 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)) + +/* SM2 will skip the operation check so no need to pass operation here */ +# define EVP_PKEY_CTX_set1_id(ctx, id, id_len) \ + EVP_PKEY_CTX_ctrl(ctx, -1, -1, \ + EVP_PKEY_CTRL_SET1_ID, (int)id_len, (void*)(id)) + +# define EVP_PKEY_CTX_get1_id(ctx, id) \ + EVP_PKEY_CTX_ctrl(ctx, -1, -1, \ + EVP_PKEY_CTRL_GET1_ID, 0, (void*)(id)) + +# define EVP_PKEY_CTX_get1_id_len(ctx, id_len) \ + EVP_PKEY_CTX_ctrl(ctx, -1, -1, \ + EVP_PKEY_CTRL_GET1_ID_LEN, 0, (void*)(id_len)) + +# 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) +# define EVP_PKEY_CTRL_SET1_ID (EVP_PKEY_ALG_CTRL + 11) +# define EVP_PKEY_CTRL_GET1_ID (EVP_PKEY_ALG_CTRL + 12) +# define EVP_PKEY_CTRL_GET1_ID_LEN (EVP_PKEY_ALG_CTRL + 13) +/* KDF types */ +# define EVP_PKEY_ECDH_KDF_NONE 1 +# define EVP_PKEY_ECDH_KDF_X9_63 2 +/** The old name for EVP_PKEY_ECDH_KDF_X9_63 + * The ECDH KDF specification has been mistakingly attributed to ANSI X9.62, + * it is actually specified in ANSI X9.63. + * This identifier is retained for backwards compatibility + */ +# define EVP_PKEY_ECDH_KDF_X9_62 EVP_PKEY_ECDH_KDF_X9_63 + + +# ifdef __cplusplus +} +# endif +# endif +#endif diff --git a/plugin/openssl/include/openssl/ecdh.h b/plugin/openssl/include/openssl/ecdh.h new file mode 100644 index 000000000..681f3d5e5 --- /dev/null +++ b/plugin/openssl/include/openssl/ecdh.h @@ -0,0 +1,10 @@ +/* + * Copyright 2002-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include diff --git a/plugin/openssl/include/openssl/ecdsa.h b/plugin/openssl/include/openssl/ecdsa.h new file mode 100644 index 000000000..681f3d5e5 --- /dev/null +++ b/plugin/openssl/include/openssl/ecdsa.h @@ -0,0 +1,10 @@ +/* + * Copyright 2002-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include diff --git a/plugin/openssl/include/openssl/ecerr.h b/plugin/openssl/include/openssl/ecerr.h new file mode 100644 index 000000000..51738113d --- /dev/null +++ b/plugin/openssl/include/openssl/ecerr.h @@ -0,0 +1,276 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_ECERR_H +# define HEADER_ECERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# include + +# ifndef OPENSSL_NO_EC + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_EC_strings(void); + +/* + * EC function codes. + */ +# define EC_F_BN_TO_FELEM 224 +# 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_ECDH_COMPUTE_KEY 246 +# define EC_F_ECDH_SIMPLE_COMPUTE_KEY 257 +# define EC_F_ECDSA_DO_SIGN_EX 251 +# define EC_F_ECDSA_DO_VERIFY 252 +# define EC_F_ECDSA_SIGN_EX 254 +# define EC_F_ECDSA_SIGN_SETUP 248 +# define EC_F_ECDSA_SIG_NEW 265 +# define EC_F_ECDSA_VERIFY 253 +# define EC_F_ECD_ITEM_VERIFY 270 +# define EC_F_ECKEY_PARAM2TYPE 223 +# define EC_F_ECKEY_PARAM_DECODE 212 +# define EC_F_ECKEY_PRIV_DECODE 213 +# define EC_F_ECKEY_PRIV_ENCODE 214 +# define EC_F_ECKEY_PUB_DECODE 215 +# define EC_F_ECKEY_PUB_ENCODE 216 +# define EC_F_ECKEY_TYPE2PARAM 220 +# define EC_F_ECPARAMETERS_PRINT 147 +# define EC_F_ECPARAMETERS_PRINT_FP 148 +# define EC_F_ECPKPARAMETERS_PRINT 149 +# define EC_F_ECPKPARAMETERS_PRINT_FP 150 +# define EC_F_ECP_NISTZ256_GET_AFFINE 240 +# define EC_F_ECP_NISTZ256_INV_MOD_ORD 275 +# define EC_F_ECP_NISTZ256_MULT_PRECOMPUTE 243 +# define EC_F_ECP_NISTZ256_POINTS_MUL 241 +# define EC_F_ECP_NISTZ256_PRE_COMP_NEW 244 +# define EC_F_ECP_NISTZ256_WINDOWED_MUL 242 +# define EC_F_ECX_KEY_OP 266 +# define EC_F_ECX_PRIV_ENCODE 267 +# define EC_F_ECX_PUB_ENCODE 268 +# define EC_F_EC_ASN1_GROUP2CURVE 153 +# define EC_F_EC_ASN1_GROUP2FIELDID 154 +# define EC_F_EC_GF2M_MONTGOMERY_POINT_MULTIPLY 208 +# define EC_F_EC_GF2M_SIMPLE_FIELD_INV 296 +# 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_LADDER_POST 285 +# define EC_F_EC_GF2M_SIMPLE_LADDER_PRE 288 +# define EC_F_EC_GF2M_SIMPLE_OCT2POINT 160 +# define EC_F_EC_GF2M_SIMPLE_POINT2OCT 161 +# define EC_F_EC_GF2M_SIMPLE_POINTS_MUL 289 +# 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_INV 297 +# 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_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_BLIND_COORDINATES 287 +# define EC_F_EC_GFP_SIMPLE_FIELD_INV 298 +# 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_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_SET_AFFINE_COORDINATES 168 +# define EC_F_EC_GFP_SIMPLE_SET_COMPRESSED_COORDINATES 169 +# 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_GET_CURVE 291 +# 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_ECPARAMETERS 261 +# define EC_F_EC_GROUP_GET_ECPKPARAMETERS 262 +# 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_NEW_FROM_ECPARAMETERS 263 +# define EC_F_EC_GROUP_NEW_FROM_ECPKPARAMETERS 264 +# define EC_F_EC_GROUP_SET_CURVE 292 +# define EC_F_EC_GROUP_SET_CURVE_GF2M 176 +# define EC_F_EC_GROUP_SET_CURVE_GFP 109 +# define EC_F_EC_GROUP_SET_GENERATOR 111 +# define EC_F_EC_GROUP_SET_SEED 286 +# 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_NEW_METHOD 245 +# define EC_F_EC_KEY_OCT2PRIV 255 +# define EC_F_EC_KEY_PRINT 180 +# define EC_F_EC_KEY_PRINT_FP 181 +# define EC_F_EC_KEY_PRIV2BUF 279 +# define EC_F_EC_KEY_PRIV2OCT 256 +# define EC_F_EC_KEY_SET_PUBLIC_KEY_AFFINE_COORDINATES 229 +# define EC_F_EC_KEY_SIMPLE_CHECK_KEY 258 +# define EC_F_EC_KEY_SIMPLE_OCT2PRIV 259 +# define EC_F_EC_KEY_SIMPLE_PRIV2OCT 260 +# define EC_F_EC_PKEY_CHECK 273 +# define EC_F_EC_PKEY_PARAM_CHECK 274 +# define EC_F_EC_POINTS_MAKE_AFFINE 136 +# define EC_F_EC_POINTS_MUL 290 +# define EC_F_EC_POINT_ADD 112 +# define EC_F_EC_POINT_BN2POINT 280 +# 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 293 +# 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_NEW 121 +# define EC_F_EC_POINT_OCT2POINT 122 +# define EC_F_EC_POINT_POINT2BUF 281 +# define EC_F_EC_POINT_POINT2OCT 123 +# define EC_F_EC_POINT_SET_AFFINE_COORDINATES 294 +# 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 295 +# 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_NEW 196 +# define EC_F_EC_SCALAR_MUL_LADDER 284 +# define EC_F_EC_WNAF_MUL 187 +# define EC_F_EC_WNAF_PRECOMPUTE_MULT 188 +# define EC_F_I2D_ECPARAMETERS 190 +# define EC_F_I2D_ECPKPARAMETERS 191 +# define EC_F_I2D_ECPRIVATEKEY 192 +# define EC_F_I2O_ECPUBLICKEY 151 +# define EC_F_NISTP224_PRE_COMP_NEW 227 +# define EC_F_NISTP256_PRE_COMP_NEW 236 +# define EC_F_NISTP521_PRE_COMP_NEW 237 +# define EC_F_O2I_ECPUBLICKEY 152 +# define EC_F_OLD_EC_PRIV_DECODE 222 +# define EC_F_OSSL_ECDH_COMPUTE_KEY 247 +# define EC_F_OSSL_ECDSA_SIGN_SIG 249 +# define EC_F_OSSL_ECDSA_VERIFY_SIG 250 +# define EC_F_PKEY_ECD_CTRL 271 +# define EC_F_PKEY_ECD_DIGESTSIGN 272 +# define EC_F_PKEY_ECD_DIGESTSIGN25519 276 +# define EC_F_PKEY_ECD_DIGESTSIGN448 277 +# define EC_F_PKEY_ECX_DERIVE 269 +# 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_INIT 282 +# define EC_F_PKEY_EC_KDF_DERIVE 283 +# define EC_F_PKEY_EC_KEYGEN 199 +# define EC_F_PKEY_EC_PARAMGEN 219 +# define EC_F_PKEY_EC_SIGN 218 +# define EC_F_VALIDATE_ECX_DERIVE 278 + +/* + * EC reason codes. + */ +# define EC_R_ASN1_ERROR 115 +# define EC_R_BAD_SIGNATURE 156 +# define EC_R_BIGNUM_OUT_OF_RANGE 144 +# define EC_R_BUFFER_TOO_SMALL 100 +# define EC_R_CANNOT_INVERT 165 +# define EC_R_COORDINATES_OUT_OF_RANGE 146 +# define EC_R_CURVE_DOES_NOT_SUPPORT_ECDH 160 +# define EC_R_CURVE_DOES_NOT_SUPPORT_SIGNING 159 +# 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_KEY 116 +# define EC_R_INVALID_OUTPUT_LENGTH 161 +# define EC_R_INVALID_PEER_KEY 133 +# 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_LADDER_POST_FAILURE 136 +# define EC_R_LADDER_PRE_FAILURE 153 +# define EC_R_LADDER_STEP_FAILURE 162 +# define EC_R_MISSING_OID 167 +# define EC_R_MISSING_PARAMETERS 124 +# define EC_R_MISSING_PRIVATE_KEY 125 +# define EC_R_NEED_NEW_SETUP_VALUES 157 +# define EC_R_NOT_A_NIST_PRIME 135 +# define EC_R_NOT_IMPLEMENTED 126 +# define EC_R_NOT_INITIALIZED 111 +# define EC_R_NO_PARAMETERS_SET 139 +# define EC_R_NO_PRIVATE_VALUE 154 +# define EC_R_OPERATION_NOT_SUPPORTED 152 +# define EC_R_PASSED_NULL_PARAMETER 134 +# define EC_R_PEER_KEY_ERROR 149 +# define EC_R_PKPARAMETERS2GROUP_FAILURE 127 +# define EC_R_POINT_ARITHMETIC_FAILURE 155 +# define EC_R_POINT_AT_INFINITY 106 +# define EC_R_POINT_COORDINATES_BLIND_FAILURE 163 +# define EC_R_POINT_IS_NOT_ON_CURVE 107 +# define EC_R_RANDOM_NUMBER_GENERATION_FAILED 158 +# 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_COFACTOR 164 +# 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 + +# endif +#endif diff --git a/plugin/openssl/include/openssl/engine.h b/plugin/openssl/include/openssl/engine.h new file mode 100644 index 000000000..d707eaeb6 --- /dev/null +++ b/plugin/openssl/include/openssl/engine.h @@ -0,0 +1,752 @@ +/* + * Copyright 2000-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_ENGINE_H +# define HEADER_ENGINE_H + +# include + +# ifndef OPENSSL_NO_ENGINE +# if OPENSSL_API_COMPAT < 0x10100000L +# include +# include +# include +# include +# include +# include +# include +# include +# endif +# include +# 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_CIPHERS (unsigned int)0x0040 +# define ENGINE_METHOD_DIGESTS (unsigned int)0x0080 +# define ENGINE_METHOD_PKEY_METHS (unsigned int)0x0200 +# define ENGINE_METHOD_PKEY_ASN1_METHS (unsigned int)0x0400 +# define ENGINE_METHOD_EC (unsigned int)0x0800 +/* 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); + +#if OPENSSL_API_COMPAT < 0x10100000L +# define ENGINE_load_openssl() \ + OPENSSL_init_crypto(OPENSSL_INIT_ENGINE_OPENSSL, NULL) +# define ENGINE_load_dynamic() \ + OPENSSL_init_crypto(OPENSSL_INIT_ENGINE_DYNAMIC, NULL) +# ifndef OPENSSL_NO_STATIC_ENGINE +# define ENGINE_load_padlock() \ + OPENSSL_init_crypto(OPENSSL_INIT_ENGINE_PADLOCK, NULL) +# define ENGINE_load_capi() \ + OPENSSL_init_crypto(OPENSSL_INIT_ENGINE_CAPI, NULL) +# define ENGINE_load_afalg() \ + OPENSSL_init_crypto(OPENSSL_INIT_ENGINE_AFALG, NULL) +# endif +# define ENGINE_load_cryptodev() \ + OPENSSL_init_crypto(OPENSSL_INIT_ENGINE_CRYPTODEV, NULL) +# define ENGINE_load_rdrand() \ + OPENSSL_init_crypto(OPENSSL_INIT_ENGINE_RDRAND, NULL) +#endif +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. + */ + +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_EC(ENGINE *e); +void ENGINE_unregister_EC(ENGINE *e); +void ENGINE_register_all_EC(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_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 parameterised 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_EC(ENGINE *e, const EC_KEY_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_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. */ +#define ENGINE_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_ENGINE, l, p, newf, dupf, freef) +int ENGINE_set_ex_data(ENGINE *e, int idx, void *arg); +void *ENGINE_get_ex_data(const ENGINE *e, int idx); + +#if OPENSSL_API_COMPAT < 0x10100000L +/* + * This function previously cleaned up anything that needs it. Auto-deinit will + * now take care of it so it is no longer required to call this function. + */ +# define ENGINE_cleanup() while(0) continue +#endif + +/* + * 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 EC_KEY_METHOD *ENGINE_get_EC(const ENGINE *e); +const DH_METHOD *ENGINE_get_DH(const ENGINE *e); +const RAND_METHOD *ENGINE_get_RAND(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_EC(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_EC(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)0x00030000 +/* + * Binary versions older than this are too old for us (whether we're a loader + * or a loadee) + */ +# define OSSL_DYNAMIC_OLDEST (unsigned long)0x00030000 + +/* + * 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_fn) (size_t, const char *, int); +typedef void *(*dyn_MEM_realloc_fn) (void *, size_t, const char *, int); +typedef void (*dyn_MEM_free_fn) (void *, const char *, int); +typedef struct st_dynamic_MEM_fns { + dyn_MEM_malloc_fn malloc_fn; + dyn_MEM_realloc_fn realloc_fn; + dyn_MEM_free_fn free_fn; +} dynamic_MEM_fns; +/* + * FIXME: Perhaps the memory and locking code (crypto.h) should declare and + * use these types so we (and any other dependent code) can simplify a bit?? + */ +/* The top-level structure */ +typedef struct st_dynamic_fns { + void *static_state; + dynamic_MEM_fns mem_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; \ + CRYPTO_set_mem_functions(fns->mem_fns.malloc_fn, \ + fns->mem_fns.realloc_fn, \ + fns->mem_fns.free_fn); \ + OPENSSL_init_crypto(OPENSSL_INIT_NO_ATEXIT, NULL); \ + 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(__DragonFly__) +DEPRECATEDIN_1_1_0(void ENGINE_setup_bsd_cryptodev(void)) +# endif + + +# ifdef __cplusplus +} +# endif +# endif +#endif diff --git a/plugin/openssl/include/openssl/engineerr.h b/plugin/openssl/include/openssl/engineerr.h new file mode 100644 index 000000000..05e84bd2a --- /dev/null +++ b/plugin/openssl/include/openssl/engineerr.h @@ -0,0 +1,111 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_ENGINEERR_H +# define HEADER_ENGINEERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# include + +# ifndef OPENSSL_NO_ENGINE + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_ENGINE_strings(void); + +/* + * ENGINE function codes. + */ +# define ENGINE_F_DIGEST_UPDATE 198 +# 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_GET_CIPHER 185 +# define ENGINE_F_ENGINE_GET_DIGEST 186 +# define ENGINE_F_ENGINE_GET_FIRST 195 +# define ENGINE_F_ENGINE_GET_LAST 196 +# 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_PKEY_ASN1_FIND_STR 197 +# define ENGINE_F_ENGINE_REMOVE 123 +# define ENGINE_F_ENGINE_SET_DEFAULT_STRING 189 +# 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_UNLOCKED_FINISH 191 +# define ENGINE_F_ENGINE_UP_REF 190 +# define ENGINE_F_INT_CLEANUP_ITEM 199 +# 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_OSSL_HMAC_INIT 200 + +/* + * ENGINE 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_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_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_UNIMPLEMENTED_CIPHER 146 +# define ENGINE_R_UNIMPLEMENTED_DIGEST 147 +# define ENGINE_R_UNIMPLEMENTED_PUBLIC_KEY_METHOD 101 +# define ENGINE_R_VERSION_INCOMPATIBILITY 145 + +# endif +#endif diff --git a/plugin/openssl/include/openssl/err.h b/plugin/openssl/include/openssl/err.h new file mode 100644 index 000000000..b49f88129 --- /dev/null +++ b/plugin/openssl/include/openssl/err.h @@ -0,0 +1,274 @@ +/* + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_ERR_H +# define HEADER_ERR_H + +# include + +# ifndef OPENSSL_NO_STDIO +# include +# include +# endif + +# include +# include +# include + +#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_FLAG_CLEAR 0x02 + +# define ERR_NUM_ERRORS 16 +typedef struct err_state_st { + 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_OSSL_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_CT 50 +# define ERR_LIB_ASYNC 51 +# define ERR_LIB_KDF 52 +# define ERR_LIB_SM2 53 + +# define ERR_LIB_USER 128 + +# define SYSerr(f,r) ERR_PUT_error(ERR_LIB_SYS,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define BNerr(f,r) ERR_PUT_error(ERR_LIB_BN,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define RSAerr(f,r) ERR_PUT_error(ERR_LIB_RSA,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define DHerr(f,r) ERR_PUT_error(ERR_LIB_DH,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define EVPerr(f,r) ERR_PUT_error(ERR_LIB_EVP,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define BUFerr(f,r) ERR_PUT_error(ERR_LIB_BUF,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define OBJerr(f,r) ERR_PUT_error(ERR_LIB_OBJ,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define PEMerr(f,r) ERR_PUT_error(ERR_LIB_PEM,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define DSAerr(f,r) ERR_PUT_error(ERR_LIB_DSA,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define X509err(f,r) ERR_PUT_error(ERR_LIB_X509,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define ASN1err(f,r) ERR_PUT_error(ERR_LIB_ASN1,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define CONFerr(f,r) ERR_PUT_error(ERR_LIB_CONF,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define CRYPTOerr(f,r) ERR_PUT_error(ERR_LIB_CRYPTO,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define ECerr(f,r) ERR_PUT_error(ERR_LIB_EC,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define SSLerr(f,r) ERR_PUT_error(ERR_LIB_SSL,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define BIOerr(f,r) ERR_PUT_error(ERR_LIB_BIO,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define PKCS7err(f,r) ERR_PUT_error(ERR_LIB_PKCS7,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define X509V3err(f,r) ERR_PUT_error(ERR_LIB_X509V3,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define PKCS12err(f,r) ERR_PUT_error(ERR_LIB_PKCS12,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define RANDerr(f,r) ERR_PUT_error(ERR_LIB_RAND,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define DSOerr(f,r) ERR_PUT_error(ERR_LIB_DSO,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define ENGINEerr(f,r) ERR_PUT_error(ERR_LIB_ENGINE,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define OCSPerr(f,r) ERR_PUT_error(ERR_LIB_OCSP,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define UIerr(f,r) ERR_PUT_error(ERR_LIB_UI,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define COMPerr(f,r) ERR_PUT_error(ERR_LIB_COMP,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define ECDSAerr(f,r) ERR_PUT_error(ERR_LIB_ECDSA,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define ECDHerr(f,r) ERR_PUT_error(ERR_LIB_ECDH,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define OSSL_STOREerr(f,r) ERR_PUT_error(ERR_LIB_OSSL_STORE,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define FIPSerr(f,r) ERR_PUT_error(ERR_LIB_FIPS,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define CMSerr(f,r) ERR_PUT_error(ERR_LIB_CMS,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define TSerr(f,r) ERR_PUT_error(ERR_LIB_TS,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define HMACerr(f,r) ERR_PUT_error(ERR_LIB_HMAC,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define CTerr(f,r) ERR_PUT_error(ERR_LIB_CT,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define ASYNCerr(f,r) ERR_PUT_error(ERR_LIB_ASYNC,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define KDFerr(f,r) ERR_PUT_error(ERR_LIB_KDF,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define SM2err(f,r) ERR_PUT_error(ERR_LIB_SM2,(f),(r),OPENSSL_FILE,OPENSSL_LINE) + +# define ERR_PACK(l,f,r) ( \ + (((unsigned int)(l) & 0x0FF) << 24L) | \ + (((unsigned int)(f) & 0xFFF) << 12L) | \ + (((unsigned int)(r) & 0xFFF) ) ) +# define ERR_GET_LIB(l) (int)(((l) >> 24L) & 0x0FFL) +# define ERR_GET_FUNC(l) (int)(((l) >> 12L) & 0xFFFL) +# define ERR_GET_REASON(l) (int)( (l) & 0xFFFL) +# define ERR_FATAL_ERROR(l) (int)( (l) & ERR_R_FATAL) + +/* OS functions */ +# define SYS_F_FOPEN 1 +# define SYS_F_CONNECT 2 +# define SYS_F_GETSERVBYNAME 3 +# define SYS_F_SOCKET 4 +# define SYS_F_IOCTLSOCKET 5 +# define SYS_F_BIND 6 +# define SYS_F_LISTEN 7 +# define SYS_F_ACCEPT 8 +# define SYS_F_WSASTARTUP 9/* Winsock stuff */ +# define SYS_F_OPENDIR 10 +# define SYS_F_FREAD 11 +# define SYS_F_GETADDRINFO 12 +# define SYS_F_GETNAMEINFO 13 +# define SYS_F_SETSOCKOPT 14 +# define SYS_F_GETSOCKOPT 15 +# define SYS_F_GETSOCKNAME 16 +# define SYS_F_GETHOSTBYNAME 17 +# define SYS_F_FFLUSH 18 +# define SYS_F_OPEN 19 +# define SYS_F_CLOSE 20 +# define SYS_F_IOCTL 21 +# define SYS_F_STAT 22 +# define SYS_F_FCNTL 23 +# define SYS_F_FSTAT 24 + +/* 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_EC_LIB ERR_LIB_EC/* 16 */ +# 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_ENGINE_LIB ERR_LIB_ENGINE/* 38 */ +# define ERR_R_UI_LIB ERR_LIB_UI/* 40 */ +# define ERR_R_ECDSA_LIB ERR_LIB_ECDSA/* 42 */ +# define ERR_R_OSSL_STORE_LIB ERR_LIB_OSSL_STORE/* 44 */ + +# define ERR_R_NESTED_ASN1_ERROR 58 +# 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) +# define ERR_R_INIT_FAIL (6|ERR_R_FATAL) +# define ERR_R_PASSED_INVALID_ARGUMENT (7) +# define ERR_R_OPERATION_FAIL (8|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; + +DEFINE_LHASH_OF(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_STDIO +void ERR_print_errors_fp(FILE *fp); +# endif +void ERR_print_errors(BIO *bp); +void ERR_add_error_data(int num, ...); +void ERR_add_error_vdata(int num, va_list args); +int ERR_load_strings(int lib, ERR_STRING_DATA *str); +int ERR_load_strings_const(const ERR_STRING_DATA *str); +int ERR_unload_strings(int lib, ERR_STRING_DATA *str); +int ERR_load_ERR_strings(void); + +#if OPENSSL_API_COMPAT < 0x10100000L +# define ERR_load_crypto_strings() \ + OPENSSL_init_crypto(OPENSSL_INIT_LOAD_CRYPTO_STRINGS, NULL) +# define ERR_free_strings() while(0) continue +#endif + +DEPRECATEDIN_1_1_0(void ERR_remove_thread_state(void *)) +DEPRECATEDIN_1_0_0(void ERR_remove_state(unsigned long pid)) +ERR_STATE *ERR_get_state(void); + +int ERR_get_next_error_library(void); + +int ERR_set_mark(void); +int ERR_pop_to_mark(void); +int ERR_clear_last_mark(void); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/plugin/openssl/include/openssl/evp.h b/plugin/openssl/include/openssl/evp.h new file mode 100644 index 000000000..a411f3f2f --- /dev/null +++ b/plugin/openssl/include/openssl/evp.h @@ -0,0 +1,1666 @@ +/* + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_ENVELOPE_H +# define HEADER_ENVELOPE_H + +# include +# include +# include +# include +# include + +# define EVP_MAX_MD_SIZE 64/* longest known is SHA512 */ +# define EVP_MAX_KEY_LENGTH 64 +# define EVP_MAX_IV_LENGTH 16 +# define EVP_MAX_BLOCK_LENGTH 32 + +# define PKCS5_SALT_LEN 8 +/* Default PKCS#5 iteration count */ +# define PKCS5_DEFAULT_ITER 2048 + +# include + +# define EVP_PK_RSA 0x0001 +# define EVP_PK_DSA 0x0002 +# define EVP_PK_DH 0x0004 +# define EVP_PK_EC 0x0008 +# define EVP_PKT_SIGN 0x0010 +# define EVP_PKT_ENC 0x0020 +# define EVP_PKT_EXCH 0x0040 +# define EVP_PKS_RSA 0x0100 +# define EVP_PKS_DSA 0x0200 +# define EVP_PKS_EC 0x0400 + +# define EVP_PKEY_NONE NID_undef +# define EVP_PKEY_RSA NID_rsaEncryption +# define EVP_PKEY_RSA2 NID_rsa +# define EVP_PKEY_RSA_PSS NID_rsassaPss +# 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_SM2 NID_sm2 +# define EVP_PKEY_HMAC NID_hmac +# define EVP_PKEY_CMAC NID_cmac +# define EVP_PKEY_SCRYPT NID_id_scrypt +# define EVP_PKEY_TLS1_PRF NID_tls1_prf +# define EVP_PKEY_HKDF NID_hkdf +# define EVP_PKEY_POLY1305 NID_poly1305 +# define EVP_PKEY_SIPHASH NID_siphash +# define EVP_PKEY_X25519 NID_X25519 +# define EVP_PKEY_ED25519 NID_ED25519 +# define EVP_PKEY_X448 NID_X448 +# define EVP_PKEY_ED448 NID_ED448 + +#ifdef __cplusplus +extern "C" { +#endif + +# 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 +EVP_MD *EVP_MD_meth_new(int md_type, int pkey_type); +EVP_MD *EVP_MD_meth_dup(const EVP_MD *md); +void EVP_MD_meth_free(EVP_MD *md); + +int EVP_MD_meth_set_input_blocksize(EVP_MD *md, int blocksize); +int EVP_MD_meth_set_result_size(EVP_MD *md, int resultsize); +int EVP_MD_meth_set_app_datasize(EVP_MD *md, int datasize); +int EVP_MD_meth_set_flags(EVP_MD *md, unsigned long flags); +int EVP_MD_meth_set_init(EVP_MD *md, int (*init)(EVP_MD_CTX *ctx)); +int EVP_MD_meth_set_update(EVP_MD *md, int (*update)(EVP_MD_CTX *ctx, + const void *data, + size_t count)); +int EVP_MD_meth_set_final(EVP_MD *md, int (*final)(EVP_MD_CTX *ctx, + unsigned char *md)); +int EVP_MD_meth_set_copy(EVP_MD *md, int (*copy)(EVP_MD_CTX *to, + const EVP_MD_CTX *from)); +int EVP_MD_meth_set_cleanup(EVP_MD *md, int (*cleanup)(EVP_MD_CTX *ctx)); +int EVP_MD_meth_set_ctrl(EVP_MD *md, int (*ctrl)(EVP_MD_CTX *ctx, int cmd, + int p1, void *p2)); + +int EVP_MD_meth_get_input_blocksize(const EVP_MD *md); +int EVP_MD_meth_get_result_size(const EVP_MD *md); +int EVP_MD_meth_get_app_datasize(const EVP_MD *md); +unsigned long EVP_MD_meth_get_flags(const EVP_MD *md); +int (*EVP_MD_meth_get_init(const EVP_MD *md))(EVP_MD_CTX *ctx); +int (*EVP_MD_meth_get_update(const EVP_MD *md))(EVP_MD_CTX *ctx, + const void *data, + size_t count); +int (*EVP_MD_meth_get_final(const EVP_MD *md))(EVP_MD_CTX *ctx, + unsigned char *md); +int (*EVP_MD_meth_get_copy(const EVP_MD *md))(EVP_MD_CTX *to, + const EVP_MD_CTX *from); +int (*EVP_MD_meth_get_cleanup(const EVP_MD *md))(EVP_MD_CTX *ctx); +int (*EVP_MD_meth_get_ctrl(const EVP_MD *md))(EVP_MD_CTX *ctx, int cmd, + int p1, void *p2); + +/* digest can only handle a single block */ +# define EVP_MD_FLAG_ONESHOT 0x0001 + +/* digest is extensible-output function, XOF */ +# define EVP_MD_FLAG_XOF 0x0002 + +/* 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 +# define EVP_MD_CTRL_XOF_LEN 0x3 + +/* Minimum Algorithm specific ctrl value */ + +# define EVP_MD_CTRL_ALG_CTRL 0x1000 + +# endif /* !EVP_MD */ + +/* 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_reset */ +/* + * 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 */ +/* + * Some functions such as EVP_DigestSign only finalise copies of internal + * contexts so additional data can be included after the finalisation call. + * This is inefficient if this functionality is not required: it is disabled + * if the following flag is set. + */ +# define EVP_MD_CTX_FLAG_FINALISE 0x0200 +/* NOTE: 0x0400 is reserved for internal usage */ + +EVP_CIPHER *EVP_CIPHER_meth_new(int cipher_type, int block_size, int key_len); +EVP_CIPHER *EVP_CIPHER_meth_dup(const EVP_CIPHER *cipher); +void EVP_CIPHER_meth_free(EVP_CIPHER *cipher); + +int EVP_CIPHER_meth_set_iv_length(EVP_CIPHER *cipher, int iv_len); +int EVP_CIPHER_meth_set_flags(EVP_CIPHER *cipher, unsigned long flags); +int EVP_CIPHER_meth_set_impl_ctx_size(EVP_CIPHER *cipher, int ctx_size); +int EVP_CIPHER_meth_set_init(EVP_CIPHER *cipher, + int (*init) (EVP_CIPHER_CTX *ctx, + const unsigned char *key, + const unsigned char *iv, + int enc)); +int EVP_CIPHER_meth_set_do_cipher(EVP_CIPHER *cipher, + int (*do_cipher) (EVP_CIPHER_CTX *ctx, + unsigned char *out, + const unsigned char *in, + size_t inl)); +int EVP_CIPHER_meth_set_cleanup(EVP_CIPHER *cipher, + int (*cleanup) (EVP_CIPHER_CTX *)); +int EVP_CIPHER_meth_set_set_asn1_params(EVP_CIPHER *cipher, + int (*set_asn1_parameters) (EVP_CIPHER_CTX *, + ASN1_TYPE *)); +int EVP_CIPHER_meth_set_get_asn1_params(EVP_CIPHER *cipher, + int (*get_asn1_parameters) (EVP_CIPHER_CTX *, + ASN1_TYPE *)); +int EVP_CIPHER_meth_set_ctrl(EVP_CIPHER *cipher, + int (*ctrl) (EVP_CIPHER_CTX *, int type, + int arg, void *ptr)); + +int (*EVP_CIPHER_meth_get_init(const EVP_CIPHER *cipher))(EVP_CIPHER_CTX *ctx, + const unsigned char *key, + const unsigned char *iv, + int enc); +int (*EVP_CIPHER_meth_get_do_cipher(const EVP_CIPHER *cipher))(EVP_CIPHER_CTX *ctx, + unsigned char *out, + const unsigned char *in, + size_t inl); +int (*EVP_CIPHER_meth_get_cleanup(const EVP_CIPHER *cipher))(EVP_CIPHER_CTX *); +int (*EVP_CIPHER_meth_get_set_asn1_params(const EVP_CIPHER *cipher))(EVP_CIPHER_CTX *, + ASN1_TYPE *); +int (*EVP_CIPHER_meth_get_get_asn1_params(const EVP_CIPHER *cipher))(EVP_CIPHER_CTX *, + ASN1_TYPE *); +int (*EVP_CIPHER_meth_get_ctrl(const EVP_CIPHER *cipher))(EVP_CIPHER_CTX *, + int type, int arg, + void *ptr); + +/* 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_OCB_MODE 0x10003 +# 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 +/* Don't use standard iv length function */ +# define EVP_CIPH_CUSTOM_IV_LENGTH 0x800 +/* 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 can handle pipeline operations */ +# define EVP_CIPH_FLAG_PIPELINE 0X800000 + +/* + * 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_AEAD_SET_IVLEN 0x9 +# define EVP_CTRL_AEAD_GET_TAG 0x10 +# define EVP_CTRL_AEAD_SET_TAG 0x11 +# define EVP_CTRL_AEAD_SET_IV_FIXED 0x12 +# define EVP_CTRL_GCM_SET_IVLEN EVP_CTRL_AEAD_SET_IVLEN +# define EVP_CTRL_GCM_GET_TAG EVP_CTRL_AEAD_GET_TAG +# define EVP_CTRL_GCM_SET_TAG EVP_CTRL_AEAD_SET_TAG +# define EVP_CTRL_GCM_SET_IV_FIXED EVP_CTRL_AEAD_SET_IV_FIXED +# define EVP_CTRL_GCM_IV_GEN 0x13 +# define EVP_CTRL_CCM_SET_IVLEN EVP_CTRL_AEAD_SET_IVLEN +# define EVP_CTRL_CCM_GET_TAG EVP_CTRL_AEAD_GET_TAG +# define EVP_CTRL_CCM_SET_TAG EVP_CTRL_AEAD_SET_TAG +# define EVP_CTRL_CCM_SET_IV_FIXED EVP_CTRL_AEAD_SET_IV_FIXED +# 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 + +# define EVP_CTRL_SSL3_MASTER_SECRET 0x1d + +/* EVP_CTRL_SET_SBOX takes the char * specifying S-boxes */ +# define EVP_CTRL_SET_SBOX 0x1e +/* + * EVP_CTRL_SBOX_USED takes a 'size_t' and 'char *', pointing at a + * pre-allocated buffer with specified size + */ +# define EVP_CTRL_SBOX_USED 0x1f +/* EVP_CTRL_KEY_MESH takes 'size_t' number of bytes to mesh the key after, + * 0 switches meshing off + */ +# define EVP_CTRL_KEY_MESH 0x20 +/* EVP_CTRL_BLOCK_PADDING_MODE takes the padding mode */ +# define EVP_CTRL_BLOCK_PADDING_MODE 0x21 + +/* Set the output buffers to use for a pipelined operation */ +# define EVP_CTRL_SET_PIPELINE_OUTPUT_BUFS 0x22 +/* Set the input buffers to use for a pipelined operation */ +# define EVP_CTRL_SET_PIPELINE_INPUT_BUFS 0x23 +/* Set the input buffer lengths to use for a pipelined operation */ +# define EVP_CTRL_SET_PIPELINE_INPUT_LENS 0x24 + +# define EVP_CTRL_GET_IVLEN 0x25 + +/* Padding modes */ +#define EVP_PADDING_PKCS7 1 +#define EVP_PADDING_ISO7816_4 2 +#define EVP_PADDING_ANSI923 3 +#define EVP_PADDING_ISO10126 4 +#define EVP_PADDING_ZERO 5 + +/* RFC 5246 defines additional data to be 13 bytes in length */ +# define EVP_AEAD_TLS1_AAD_LEN 13 + +typedef struct { + unsigned char *out; + const unsigned char *inp; + size_t len; + unsigned int interleave; +} EVP_CTRL_TLS1_1_MULTIBLOCK_PARAM; + +/* GCM TLS constants */ +/* Length of fixed part of IV derived from PRF */ +# define EVP_GCM_TLS_FIXED_IV_LEN 4 +/* Length of explicit part of IV part of TLS records */ +# define EVP_GCM_TLS_EXPLICIT_IV_LEN 8 +/* Length of tag for TLS */ +# define EVP_GCM_TLS_TAG_LEN 16 + +/* CCM TLS constants */ +/* Length of fixed part of IV derived from PRF */ +# define EVP_CCM_TLS_FIXED_IV_LEN 4 +/* Length of explicit part of IV part of TLS records */ +# define EVP_CCM_TLS_EXPLICIT_IV_LEN 8 +/* Total length of CCM IV length for TLS */ +# define EVP_CCM_TLS_IV_LEN 12 +/* Length of tag for TLS */ +# define EVP_CCM_TLS_TAG_LEN 16 +/* Length of CCM8 tag for TLS */ +# define EVP_CCM8_TLS_TAG_LEN 8 + +/* Length of tag for TLS */ +# define EVP_CHACHAPOLY_TLS_TAG_LEN 16 + +typedef struct evp_cipher_info_st { + const EVP_CIPHER *cipher; + unsigned char iv[EVP_MAX_IV_LENGTH]; +} EVP_CIPHER_INFO; + + +/* 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 +# ifndef OPENSSL_NO_SIPHASH +# define EVP_PKEY_assign_SIPHASH(pkey,shkey) EVP_PKEY_assign((pkey),EVP_PKEY_SIPHASH,\ + (char *)(shkey)) +# endif + +# ifndef OPENSSL_NO_POLY1305 +# define EVP_PKEY_assign_POLY1305(pkey,polykey) EVP_PKEY_assign((pkey),EVP_PKEY_POLY1305,\ + (char *)(polykey)) +# 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); +int (*EVP_MD_CTX_update_fn(EVP_MD_CTX *ctx))(EVP_MD_CTX *ctx, + const void *data, size_t count); +void EVP_MD_CTX_set_update_fn(EVP_MD_CTX *ctx, + int (*update) (EVP_MD_CTX *ctx, + const void *data, size_t count)); +# 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)) +EVP_PKEY_CTX *EVP_MD_CTX_pkey_ctx(const EVP_MD_CTX *ctx); +void EVP_MD_CTX_set_pkey_ctx(EVP_MD_CTX *ctx, EVP_PKEY_CTX *pctx); +void *EVP_MD_CTX_md_data(const EVP_MD_CTX *ctx); + +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_impl_ctx_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_encrypting(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); +const unsigned char *EVP_CIPHER_CTX_iv(const EVP_CIPHER_CTX *ctx); +const unsigned char *EVP_CIPHER_CTX_original_iv(const EVP_CIPHER_CTX *ctx); +unsigned char *EVP_CIPHER_CTX_iv_noconst(EVP_CIPHER_CTX *ctx); +unsigned char *EVP_CIPHER_CTX_buf_noconst(EVP_CIPHER_CTX *ctx); +int EVP_CIPHER_CTX_num(const EVP_CIPHER_CTX *ctx); +void EVP_CIPHER_CTX_set_num(EVP_CIPHER_CTX *ctx, int num); +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); +void *EVP_CIPHER_CTX_get_cipher_data(const EVP_CIPHER_CTX *ctx); +void *EVP_CIPHER_CTX_set_cipher_data(EVP_CIPHER_CTX *ctx, void *cipher_data); +# define EVP_CIPHER_CTX_type(c) EVP_CIPHER_type(EVP_CIPHER_CTX_cipher(c)) +# if OPENSSL_API_COMPAT < 0x10100000L +# define EVP_CIPHER_CTX_flags(c) EVP_CIPHER_flags(EVP_CIPHER_CTX_cipher(c)) +# endif +# define EVP_CIPHER_CTX_mode(c) EVP_CIPHER_mode(EVP_CIPHER_CTX_cipher(c)) + +# 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)) + +/*__owur*/ 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); + +int EVP_MD_CTX_ctrl(EVP_MD_CTX *ctx, int cmd, int p1, void *p2); +EVP_MD_CTX *EVP_MD_CTX_new(void); +int EVP_MD_CTX_reset(EVP_MD_CTX *ctx); +void EVP_MD_CTX_free(EVP_MD_CTX *ctx); +# define EVP_MD_CTX_create() EVP_MD_CTX_new() +# define EVP_MD_CTX_init(ctx) EVP_MD_CTX_reset((ctx)) +# define EVP_MD_CTX_destroy(ctx) EVP_MD_CTX_free((ctx)) +__owur 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); +__owur int EVP_DigestInit_ex(EVP_MD_CTX *ctx, const EVP_MD *type, + ENGINE *impl); +__owur int EVP_DigestUpdate(EVP_MD_CTX *ctx, const void *d, + size_t cnt); +__owur int EVP_DigestFinal_ex(EVP_MD_CTX *ctx, unsigned char *md, + unsigned int *s); +__owur int EVP_Digest(const void *data, size_t count, + unsigned char *md, unsigned int *size, + const EVP_MD *type, ENGINE *impl); + +__owur int EVP_MD_CTX_copy(EVP_MD_CTX *out, const EVP_MD_CTX *in); +__owur int EVP_DigestInit(EVP_MD_CTX *ctx, const EVP_MD *type); +__owur int EVP_DigestFinal(EVP_MD_CTX *ctx, unsigned char *md, + unsigned int *s); +__owur int EVP_DigestFinalXOF(EVP_MD_CTX *ctx, unsigned char *md, + size_t len); + +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); + +__owur 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); + +__owur int EVP_EncryptInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, + const unsigned char *key, const unsigned char *iv); +/*__owur*/ int EVP_EncryptInit_ex(EVP_CIPHER_CTX *ctx, + const EVP_CIPHER *cipher, ENGINE *impl, + const unsigned char *key, + const unsigned char *iv); +/*__owur*/ int EVP_EncryptUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, + int *outl, const unsigned char *in, int inl); +/*__owur*/ int EVP_EncryptFinal_ex(EVP_CIPHER_CTX *ctx, unsigned char *out, + int *outl); +/*__owur*/ int EVP_EncryptFinal(EVP_CIPHER_CTX *ctx, unsigned char *out, + int *outl); + +__owur int EVP_DecryptInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, + const unsigned char *key, const unsigned char *iv); +/*__owur*/ int EVP_DecryptInit_ex(EVP_CIPHER_CTX *ctx, + const EVP_CIPHER *cipher, ENGINE *impl, + const unsigned char *key, + const unsigned char *iv); +/*__owur*/ int EVP_DecryptUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, + int *outl, const unsigned char *in, int inl); +__owur int EVP_DecryptFinal(EVP_CIPHER_CTX *ctx, unsigned char *outm, + int *outl); +/*__owur*/ int EVP_DecryptFinal_ex(EVP_CIPHER_CTX *ctx, unsigned char *outm, + int *outl); + +__owur int EVP_CipherInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, + const unsigned char *key, const unsigned char *iv, + int enc); +/*__owur*/ int EVP_CipherInit_ex(EVP_CIPHER_CTX *ctx, + const EVP_CIPHER *cipher, ENGINE *impl, + const unsigned char *key, + const unsigned char *iv, int enc); +__owur int EVP_CipherUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, + int *outl, const unsigned char *in, int inl); +__owur int EVP_CipherFinal(EVP_CIPHER_CTX *ctx, unsigned char *outm, + int *outl); +__owur int EVP_CipherFinal_ex(EVP_CIPHER_CTX *ctx, unsigned char *outm, + int *outl); + +__owur int EVP_SignFinal(EVP_MD_CTX *ctx, unsigned char *md, unsigned int *s, + EVP_PKEY *pkey); + +__owur int EVP_DigestSign(EVP_MD_CTX *ctx, unsigned char *sigret, + size_t *siglen, const unsigned char *tbs, + size_t tbslen); + +__owur int EVP_VerifyFinal(EVP_MD_CTX *ctx, const unsigned char *sigbuf, + unsigned int siglen, EVP_PKEY *pkey); + +__owur int EVP_DigestVerify(EVP_MD_CTX *ctx, const unsigned char *sigret, + size_t siglen, const unsigned char *tbs, + size_t tbslen); + +/*__owur*/ int EVP_DigestSignInit(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx, + const EVP_MD *type, ENGINE *e, + EVP_PKEY *pkey); +__owur int EVP_DigestSignFinal(EVP_MD_CTX *ctx, unsigned char *sigret, + size_t *siglen); + +__owur int EVP_DigestVerifyInit(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx, + const EVP_MD *type, ENGINE *e, + EVP_PKEY *pkey); +__owur int EVP_DigestVerifyFinal(EVP_MD_CTX *ctx, const unsigned char *sig, + size_t siglen); + +# ifndef OPENSSL_NO_RSA +__owur int EVP_OpenInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *type, + const unsigned char *ek, int ekl, + const unsigned char *iv, EVP_PKEY *priv); +__owur int EVP_OpenFinal(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl); + +__owur int EVP_SealInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *type, + unsigned char **ek, int *ekl, unsigned char *iv, + EVP_PKEY **pubk, int npubk); +__owur int EVP_SealFinal(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl); +# endif + +EVP_ENCODE_CTX *EVP_ENCODE_CTX_new(void); +void EVP_ENCODE_CTX_free(EVP_ENCODE_CTX *ctx); +int EVP_ENCODE_CTX_copy(EVP_ENCODE_CTX *dctx, EVP_ENCODE_CTX *sctx); +int EVP_ENCODE_CTX_num(EVP_ENCODE_CTX *ctx); +void EVP_EncodeInit(EVP_ENCODE_CTX *ctx); +int 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); + +# if OPENSSL_API_COMPAT < 0x10100000L +# define EVP_CIPHER_CTX_init(c) EVP_CIPHER_CTX_reset(c) +# define EVP_CIPHER_CTX_cleanup(c) EVP_CIPHER_CTX_reset(c) +# endif +EVP_CIPHER_CTX *EVP_CIPHER_CTX_new(void); +int EVP_CIPHER_CTX_reset(EVP_CIPHER_CTX *c); +void EVP_CIPHER_CTX_free(EVP_CIPHER_CTX *c); +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); + +const BIO_METHOD *BIO_f_md(void); +const BIO_METHOD *BIO_f_base64(void); +const BIO_METHOD *BIO_f_cipher(void); +const BIO_METHOD *BIO_f_reliable(void); +__owur int BIO_set_cipher(BIO *b, const EVP_CIPHER *c, const unsigned char *k, + const unsigned char *i, int enc); + +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); +const EVP_MD *EVP_md5_sha1(void); +# endif +# ifndef OPENSSL_NO_BLAKE2 +const EVP_MD *EVP_blake2b512(void); +const EVP_MD *EVP_blake2s256(void); +# endif +const EVP_MD *EVP_sha1(void); +const EVP_MD *EVP_sha224(void); +const EVP_MD *EVP_sha256(void); +const EVP_MD *EVP_sha384(void); +const EVP_MD *EVP_sha512(void); +const EVP_MD *EVP_sha512_224(void); +const EVP_MD *EVP_sha512_256(void); +const EVP_MD *EVP_sha3_224(void); +const EVP_MD *EVP_sha3_256(void); +const EVP_MD *EVP_sha3_384(void); +const EVP_MD *EVP_sha3_512(void); +const EVP_MD *EVP_shake128(void); +const EVP_MD *EVP_shake256(void); +# ifndef OPENSSL_NO_MDC2 +const EVP_MD *EVP_mdc2(void); +# endif +# ifndef OPENSSL_NO_RMD160 +const EVP_MD *EVP_ripemd160(void); +# endif +# ifndef OPENSSL_NO_WHIRLPOOL +const EVP_MD *EVP_whirlpool(void); +# endif +# ifndef OPENSSL_NO_SM3 +const EVP_MD *EVP_sm3(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 +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? + */ +# 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 +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_128_wrap_pad(void); +# ifndef OPENSSL_NO_OCB +const EVP_CIPHER *EVP_aes_128_ocb(void); +# endif +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_192_wrap_pad(void); +# ifndef OPENSSL_NO_OCB +const EVP_CIPHER *EVP_aes_192_ocb(void); +# endif +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); +const EVP_CIPHER *EVP_aes_256_wrap_pad(void); +# ifndef OPENSSL_NO_OCB +const EVP_CIPHER *EVP_aes_256_ocb(void); +# endif +const EVP_CIPHER *EVP_aes_128_cbc_hmac_sha1(void); +const EVP_CIPHER *EVP_aes_256_cbc_hmac_sha1(void); +const EVP_CIPHER *EVP_aes_128_cbc_hmac_sha256(void); +const EVP_CIPHER *EVP_aes_256_cbc_hmac_sha256(void); +# ifndef OPENSSL_NO_ARIA +const EVP_CIPHER *EVP_aria_128_ecb(void); +const EVP_CIPHER *EVP_aria_128_cbc(void); +const EVP_CIPHER *EVP_aria_128_cfb1(void); +const EVP_CIPHER *EVP_aria_128_cfb8(void); +const EVP_CIPHER *EVP_aria_128_cfb128(void); +# define EVP_aria_128_cfb EVP_aria_128_cfb128 +const EVP_CIPHER *EVP_aria_128_ctr(void); +const EVP_CIPHER *EVP_aria_128_ofb(void); +const EVP_CIPHER *EVP_aria_128_gcm(void); +const EVP_CIPHER *EVP_aria_128_ccm(void); +const EVP_CIPHER *EVP_aria_192_ecb(void); +const EVP_CIPHER *EVP_aria_192_cbc(void); +const EVP_CIPHER *EVP_aria_192_cfb1(void); +const EVP_CIPHER *EVP_aria_192_cfb8(void); +const EVP_CIPHER *EVP_aria_192_cfb128(void); +# define EVP_aria_192_cfb EVP_aria_192_cfb128 +const EVP_CIPHER *EVP_aria_192_ctr(void); +const EVP_CIPHER *EVP_aria_192_ofb(void); +const EVP_CIPHER *EVP_aria_192_gcm(void); +const EVP_CIPHER *EVP_aria_192_ccm(void); +const EVP_CIPHER *EVP_aria_256_ecb(void); +const EVP_CIPHER *EVP_aria_256_cbc(void); +const EVP_CIPHER *EVP_aria_256_cfb1(void); +const EVP_CIPHER *EVP_aria_256_cfb8(void); +const EVP_CIPHER *EVP_aria_256_cfb128(void); +# define EVP_aria_256_cfb EVP_aria_256_cfb128 +const EVP_CIPHER *EVP_aria_256_ctr(void); +const EVP_CIPHER *EVP_aria_256_ofb(void); +const EVP_CIPHER *EVP_aria_256_gcm(void); +const EVP_CIPHER *EVP_aria_256_ccm(void); +# 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_128_ctr(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_192_ctr(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); +const EVP_CIPHER *EVP_camellia_256_ctr(void); +# endif +# ifndef OPENSSL_NO_CHACHA +const EVP_CIPHER *EVP_chacha20(void); +# ifndef OPENSSL_NO_POLY1305 +const EVP_CIPHER *EVP_chacha20_poly1305(void); +# endif +# 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 + +# ifndef OPENSSL_NO_SM4 +const EVP_CIPHER *EVP_sm4_ecb(void); +const EVP_CIPHER *EVP_sm4_cbc(void); +const EVP_CIPHER *EVP_sm4_cfb128(void); +# define EVP_sm4_cfb EVP_sm4_cfb128 +const EVP_CIPHER *EVP_sm4_ofb(void); +const EVP_CIPHER *EVP_sm4_ctr(void); +# endif + +# if OPENSSL_API_COMPAT < 0x10100000L +# define OPENSSL_add_all_algorithms_conf() \ + OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_CIPHERS \ + | OPENSSL_INIT_ADD_ALL_DIGESTS \ + | OPENSSL_INIT_LOAD_CONFIG, NULL) +# define OPENSSL_add_all_algorithms_noconf() \ + OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_CIPHERS \ + | OPENSSL_INIT_ADD_ALL_DIGESTS, NULL) + +# 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 + +# define OpenSSL_add_all_ciphers() \ + OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_CIPHERS, NULL) +# define OpenSSL_add_all_digests() \ + OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_DIGESTS, NULL) + +# define EVP_cleanup() while(0) continue +# endif + +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_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(const EVP_PKEY *pkey); +int EVP_PKEY_security_bits(const EVP_PKEY *pkey); +int EVP_PKEY_size(const 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_set_alias_type(EVP_PKEY *pkey, int type); +# ifndef OPENSSL_NO_ENGINE +int EVP_PKEY_set1_engine(EVP_PKEY *pkey, ENGINE *e); +ENGINE *EVP_PKEY_get0_engine(const EVP_PKEY *pkey); +# endif +int EVP_PKEY_assign(EVP_PKEY *pkey, int type, void *key); +void *EVP_PKEY_get0(const EVP_PKEY *pkey); +const unsigned char *EVP_PKEY_get0_hmac(const EVP_PKEY *pkey, size_t *len); +# ifndef OPENSSL_NO_POLY1305 +const unsigned char *EVP_PKEY_get0_poly1305(const EVP_PKEY *pkey, size_t *len); +# endif +# ifndef OPENSSL_NO_SIPHASH +const unsigned char *EVP_PKEY_get0_siphash(const EVP_PKEY *pkey, size_t *len); +# endif + +# ifndef OPENSSL_NO_RSA +struct rsa_st; +int EVP_PKEY_set1_RSA(EVP_PKEY *pkey, struct rsa_st *key); +struct rsa_st *EVP_PKEY_get0_RSA(EVP_PKEY *pkey); +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_get0_DSA(EVP_PKEY *pkey); +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_get0_DH(EVP_PKEY *pkey); +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_get0_EC_KEY(EVP_PKEY *pkey); +struct ec_key_st *EVP_PKEY_get1_EC_KEY(EVP_PKEY *pkey); +# endif + +EVP_PKEY *EVP_PKEY_new(void); +int EVP_PKEY_up_ref(EVP_PKEY *pkey); +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_PKEY_set1_tls_encodedpoint(EVP_PKEY *pkey, + const unsigned char *pt, size_t ptlen); +size_t EVP_PKEY_get1_tls_encodedpoint(EVP_PKEY *pkey, unsigned char **ppt); + +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); + +#ifndef OPENSSL_NO_SCRYPT +int EVP_PBE_scrypt(const char *pass, size_t passlen, + const unsigned char *salt, size_t saltlen, + uint64_t N, uint64_t r, uint64_t p, uint64_t maxmem, + unsigned char *key, size_t keylen); + +int PKCS5_v2_scrypt_keyivgen(EVP_CIPHER_CTX *ctx, const char *pass, + int passlen, ASN1_TYPE *param, + const EVP_CIPHER *c, const EVP_MD *md, int en_de); +#endif + +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 +/* Is a PKCS#5 v2.0 KDF */ +# define EVP_PBE_TYPE_KDF 0x2 + +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); +int EVP_PBE_get(int *ptype, int *ppbe_nid, size_t num); + +# 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 + +# define ASN1_PKEY_CTRL_SET1_TLS_ENCPT 0x9 +# define ASN1_PKEY_CTRL_GET1_TLS_ENCPT 0xa + +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(const 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, + const PKCS8_PRIV_KEY_INFO + *p8inf), + int (*priv_encode) (PKCS8_PRIV_KEY_INFO *p8, + const EVP_PKEY *pk), + int (*priv_print) (BIO *out, + const EVP_PKEY *pkey, + int indent, + ASN1_PCTX *pctx)); +void EVP_PKEY_asn1_set_param(EVP_PKEY_ASN1_METHOD *ameth, + int (*param_decode) (EVP_PKEY *pkey, + const unsigned char **pder, + int derlen), + int (*param_encode) (const EVP_PKEY *pkey, + unsigned char **pder), + int (*param_missing) (const EVP_PKEY *pk), + int (*param_copy) (EVP_PKEY *to, + const EVP_PKEY *from), + int (*param_cmp) (const EVP_PKEY *a, + const EVP_PKEY *b), + int (*param_print) (BIO *out, + const EVP_PKEY *pkey, + int indent, + ASN1_PCTX *pctx)); + +void EVP_PKEY_asn1_set_free(EVP_PKEY_ASN1_METHOD *ameth, + void (*pkey_free) (EVP_PKEY *pkey)); +void EVP_PKEY_asn1_set_ctrl(EVP_PKEY_ASN1_METHOD *ameth, + int (*pkey_ctrl) (EVP_PKEY *pkey, int op, + long arg1, void *arg2)); +void EVP_PKEY_asn1_set_item(EVP_PKEY_ASN1_METHOD *ameth, + int (*item_verify) (EVP_MD_CTX *ctx, + const ASN1_ITEM *it, + void *asn, + X509_ALGOR *a, + ASN1_BIT_STRING *sig, + EVP_PKEY *pkey), + int (*item_sign) (EVP_MD_CTX *ctx, + const ASN1_ITEM *it, + void *asn, + X509_ALGOR *alg1, + X509_ALGOR *alg2, + ASN1_BIT_STRING *sig)); + +void EVP_PKEY_asn1_set_siginf(EVP_PKEY_ASN1_METHOD *ameth, + int (*siginf_set) (X509_SIG_INFO *siginf, + const X509_ALGOR *alg, + const ASN1_STRING *sig)); + +void EVP_PKEY_asn1_set_check(EVP_PKEY_ASN1_METHOD *ameth, + int (*pkey_check) (const EVP_PKEY *pk)); + +void EVP_PKEY_asn1_set_public_check(EVP_PKEY_ASN1_METHOD *ameth, + int (*pkey_pub_check) (const EVP_PKEY *pk)); + +void EVP_PKEY_asn1_set_param_check(EVP_PKEY_ASN1_METHOD *ameth, + int (*pkey_param_check) (const EVP_PKEY *pk)); + +void EVP_PKEY_asn1_set_set_priv_key(EVP_PKEY_ASN1_METHOD *ameth, + int (*set_priv_key) (EVP_PKEY *pk, + const unsigned char + *priv, + size_t len)); +void EVP_PKEY_asn1_set_set_pub_key(EVP_PKEY_ASN1_METHOD *ameth, + int (*set_pub_key) (EVP_PKEY *pk, + const unsigned char *pub, + size_t len)); +void EVP_PKEY_asn1_set_get_priv_key(EVP_PKEY_ASN1_METHOD *ameth, + int (*get_priv_key) (const EVP_PKEY *pk, + unsigned char *priv, + size_t *len)); +void EVP_PKEY_asn1_set_get_pub_key(EVP_PKEY_ASN1_METHOD *ameth, + int (*get_pub_key) (const EVP_PKEY *pk, + unsigned char *pub, + size_t *len)); + +void EVP_PKEY_asn1_set_security_bits(EVP_PKEY_ASN1_METHOD *ameth, + int (*pkey_security_bits) (const EVP_PKEY + *pk)); + +# 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_TYPE_SIG | EVP_PKEY_OP_TYPE_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_CTX_set_mac_key(ctx, key, len) \ + EVP_PKEY_CTX_ctrl(ctx, -1, EVP_PKEY_OP_KEYGEN, \ + EVP_PKEY_CTRL_SET_MAC_KEY, len, (void *)(key)) + +# 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_CTRL_SET_DIGEST_SIZE 14 + +# 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); +int EVP_PKEY_meth_remove(const EVP_PKEY_METHOD *pmeth); +size_t EVP_PKEY_meth_get_count(void); +const EVP_PKEY_METHOD *EVP_PKEY_meth_get0(size_t idx); + +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_ctrl_uint64(EVP_PKEY_CTX *ctx, int keytype, int optype, + int cmd, uint64_t value); + +int EVP_PKEY_CTX_str2ctrl(EVP_PKEY_CTX *ctx, int cmd, const char *str); +int EVP_PKEY_CTX_hex2ctrl(EVP_PKEY_CTX *ctx, int cmd, const char *hex); + +int EVP_PKEY_CTX_md(EVP_PKEY_CTX *ctx, int optype, int cmd, const char *md); + +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); +EVP_PKEY *EVP_PKEY_new_raw_private_key(int type, ENGINE *e, + const unsigned char *priv, + size_t len); +EVP_PKEY *EVP_PKEY_new_raw_public_key(int type, ENGINE *e, + const unsigned char *pub, + size_t len); +int EVP_PKEY_get_raw_private_key(const EVP_PKEY *pkey, unsigned char *priv, + size_t *len); +int EVP_PKEY_get_raw_public_key(const EVP_PKEY *pkey, unsigned char *pub, + size_t *len); + +EVP_PKEY *EVP_PKEY_new_CMAC_key(ENGINE *e, const unsigned char *priv, + size_t len, const EVP_CIPHER *cipher); + +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); +int EVP_PKEY_check(EVP_PKEY_CTX *ctx); +int EVP_PKEY_public_check(EVP_PKEY_CTX *ctx); +int EVP_PKEY_param_check(EVP_PKEY_CTX *ctx); + +void EVP_PKEY_CTX_set_cb(EVP_PKEY_CTX *ctx, EVP_PKEY_gen_cb *cb); +EVP_PKEY_gen_cb *EVP_PKEY_CTX_get_cb(EVP_PKEY_CTX *ctx); + +int EVP_PKEY_CTX_get_keygen_info(EVP_PKEY_CTX *ctx, int idx); + +void EVP_PKEY_meth_set_init(EVP_PKEY_METHOD *pmeth, + int (*init) (EVP_PKEY_CTX *ctx)); + +void EVP_PKEY_meth_set_copy(EVP_PKEY_METHOD *pmeth, + int (*copy) (EVP_PKEY_CTX *dst, + EVP_PKEY_CTX *src)); + +void EVP_PKEY_meth_set_cleanup(EVP_PKEY_METHOD *pmeth, + void (*cleanup) (EVP_PKEY_CTX *ctx)); + +void EVP_PKEY_meth_set_paramgen(EVP_PKEY_METHOD *pmeth, + int (*paramgen_init) (EVP_PKEY_CTX *ctx), + int (*paramgen) (EVP_PKEY_CTX *ctx, + EVP_PKEY *pkey)); + +void EVP_PKEY_meth_set_keygen(EVP_PKEY_METHOD *pmeth, + int (*keygen_init) (EVP_PKEY_CTX *ctx), + int (*keygen) (EVP_PKEY_CTX *ctx, + EVP_PKEY *pkey)); + +void EVP_PKEY_meth_set_sign(EVP_PKEY_METHOD *pmeth, + int (*sign_init) (EVP_PKEY_CTX *ctx), + int (*sign) (EVP_PKEY_CTX *ctx, + unsigned char *sig, size_t *siglen, + const unsigned char *tbs, + size_t tbslen)); + +void EVP_PKEY_meth_set_verify(EVP_PKEY_METHOD *pmeth, + int (*verify_init) (EVP_PKEY_CTX *ctx), + int (*verify) (EVP_PKEY_CTX *ctx, + const unsigned char *sig, + size_t siglen, + const unsigned char *tbs, + size_t tbslen)); + +void EVP_PKEY_meth_set_verify_recover(EVP_PKEY_METHOD *pmeth, + int (*verify_recover_init) (EVP_PKEY_CTX + *ctx), + int (*verify_recover) (EVP_PKEY_CTX + *ctx, + unsigned char + *sig, + size_t *siglen, + const unsigned + char *tbs, + size_t tbslen)); + +void EVP_PKEY_meth_set_signctx(EVP_PKEY_METHOD *pmeth, + int (*signctx_init) (EVP_PKEY_CTX *ctx, + EVP_MD_CTX *mctx), + int (*signctx) (EVP_PKEY_CTX *ctx, + unsigned char *sig, + size_t *siglen, + EVP_MD_CTX *mctx)); + +void EVP_PKEY_meth_set_verifyctx(EVP_PKEY_METHOD *pmeth, + int (*verifyctx_init) (EVP_PKEY_CTX *ctx, + EVP_MD_CTX *mctx), + int (*verifyctx) (EVP_PKEY_CTX *ctx, + const unsigned char *sig, + int siglen, + EVP_MD_CTX *mctx)); + +void EVP_PKEY_meth_set_encrypt(EVP_PKEY_METHOD *pmeth, + int (*encrypt_init) (EVP_PKEY_CTX *ctx), + int (*encryptfn) (EVP_PKEY_CTX *ctx, + unsigned char *out, + size_t *outlen, + const unsigned char *in, + size_t inlen)); + +void EVP_PKEY_meth_set_decrypt(EVP_PKEY_METHOD *pmeth, + int (*decrypt_init) (EVP_PKEY_CTX *ctx), + int (*decrypt) (EVP_PKEY_CTX *ctx, + unsigned char *out, + size_t *outlen, + const unsigned char *in, + size_t inlen)); + +void EVP_PKEY_meth_set_derive(EVP_PKEY_METHOD *pmeth, + int (*derive_init) (EVP_PKEY_CTX *ctx), + int (*derive) (EVP_PKEY_CTX *ctx, + unsigned char *key, + size_t *keylen)); + +void EVP_PKEY_meth_set_ctrl(EVP_PKEY_METHOD *pmeth, + int (*ctrl) (EVP_PKEY_CTX *ctx, int type, int p1, + void *p2), + int (*ctrl_str) (EVP_PKEY_CTX *ctx, + const char *type, + const char *value)); + +void EVP_PKEY_meth_set_digestsign(EVP_PKEY_METHOD *pmeth, + int (*digestsign) (EVP_MD_CTX *ctx, + unsigned char *sig, + size_t *siglen, + const unsigned char *tbs, + size_t tbslen)); + +void EVP_PKEY_meth_set_digestverify(EVP_PKEY_METHOD *pmeth, + int (*digestverify) (EVP_MD_CTX *ctx, + const unsigned char *sig, + size_t siglen, + const unsigned char *tbs, + size_t tbslen)); + +void EVP_PKEY_meth_set_check(EVP_PKEY_METHOD *pmeth, + int (*check) (EVP_PKEY *pkey)); + +void EVP_PKEY_meth_set_public_check(EVP_PKEY_METHOD *pmeth, + int (*check) (EVP_PKEY *pkey)); + +void EVP_PKEY_meth_set_param_check(EVP_PKEY_METHOD *pmeth, + int (*check) (EVP_PKEY *pkey)); + +void EVP_PKEY_meth_set_digest_custom(EVP_PKEY_METHOD *pmeth, + int (*digest_custom) (EVP_PKEY_CTX *ctx, + EVP_MD_CTX *mctx)); + +void EVP_PKEY_meth_get_init(const EVP_PKEY_METHOD *pmeth, + int (**pinit) (EVP_PKEY_CTX *ctx)); + +void EVP_PKEY_meth_get_copy(const EVP_PKEY_METHOD *pmeth, + int (**pcopy) (EVP_PKEY_CTX *dst, + EVP_PKEY_CTX *src)); + +void EVP_PKEY_meth_get_cleanup(const EVP_PKEY_METHOD *pmeth, + void (**pcleanup) (EVP_PKEY_CTX *ctx)); + +void EVP_PKEY_meth_get_paramgen(const EVP_PKEY_METHOD *pmeth, + int (**pparamgen_init) (EVP_PKEY_CTX *ctx), + int (**pparamgen) (EVP_PKEY_CTX *ctx, + EVP_PKEY *pkey)); + +void EVP_PKEY_meth_get_keygen(const EVP_PKEY_METHOD *pmeth, + int (**pkeygen_init) (EVP_PKEY_CTX *ctx), + int (**pkeygen) (EVP_PKEY_CTX *ctx, + EVP_PKEY *pkey)); + +void EVP_PKEY_meth_get_sign(const EVP_PKEY_METHOD *pmeth, + int (**psign_init) (EVP_PKEY_CTX *ctx), + int (**psign) (EVP_PKEY_CTX *ctx, + unsigned char *sig, size_t *siglen, + const unsigned char *tbs, + size_t tbslen)); + +void EVP_PKEY_meth_get_verify(const EVP_PKEY_METHOD *pmeth, + int (**pverify_init) (EVP_PKEY_CTX *ctx), + int (**pverify) (EVP_PKEY_CTX *ctx, + const unsigned char *sig, + size_t siglen, + const unsigned char *tbs, + size_t tbslen)); + +void EVP_PKEY_meth_get_verify_recover(const EVP_PKEY_METHOD *pmeth, + int (**pverify_recover_init) (EVP_PKEY_CTX + *ctx), + int (**pverify_recover) (EVP_PKEY_CTX + *ctx, + unsigned char + *sig, + size_t *siglen, + const unsigned + char *tbs, + size_t tbslen)); + +void EVP_PKEY_meth_get_signctx(const EVP_PKEY_METHOD *pmeth, + int (**psignctx_init) (EVP_PKEY_CTX *ctx, + EVP_MD_CTX *mctx), + int (**psignctx) (EVP_PKEY_CTX *ctx, + unsigned char *sig, + size_t *siglen, + EVP_MD_CTX *mctx)); + +void EVP_PKEY_meth_get_verifyctx(const EVP_PKEY_METHOD *pmeth, + int (**pverifyctx_init) (EVP_PKEY_CTX *ctx, + EVP_MD_CTX *mctx), + int (**pverifyctx) (EVP_PKEY_CTX *ctx, + const unsigned char *sig, + int siglen, + EVP_MD_CTX *mctx)); + +void EVP_PKEY_meth_get_encrypt(const EVP_PKEY_METHOD *pmeth, + int (**pencrypt_init) (EVP_PKEY_CTX *ctx), + int (**pencryptfn) (EVP_PKEY_CTX *ctx, + unsigned char *out, + size_t *outlen, + const unsigned char *in, + size_t inlen)); + +void EVP_PKEY_meth_get_decrypt(const EVP_PKEY_METHOD *pmeth, + int (**pdecrypt_init) (EVP_PKEY_CTX *ctx), + int (**pdecrypt) (EVP_PKEY_CTX *ctx, + unsigned char *out, + size_t *outlen, + const unsigned char *in, + size_t inlen)); + +void EVP_PKEY_meth_get_derive(const EVP_PKEY_METHOD *pmeth, + int (**pderive_init) (EVP_PKEY_CTX *ctx), + int (**pderive) (EVP_PKEY_CTX *ctx, + unsigned char *key, + size_t *keylen)); + +void EVP_PKEY_meth_get_ctrl(const EVP_PKEY_METHOD *pmeth, + int (**pctrl) (EVP_PKEY_CTX *ctx, int type, int p1, + void *p2), + int (**pctrl_str) (EVP_PKEY_CTX *ctx, + const char *type, + const char *value)); + +void EVP_PKEY_meth_get_digestsign(EVP_PKEY_METHOD *pmeth, + int (**digestsign) (EVP_MD_CTX *ctx, + unsigned char *sig, + size_t *siglen, + const unsigned char *tbs, + size_t tbslen)); + +void EVP_PKEY_meth_get_digestverify(EVP_PKEY_METHOD *pmeth, + int (**digestverify) (EVP_MD_CTX *ctx, + const unsigned char *sig, + size_t siglen, + const unsigned char *tbs, + size_t tbslen)); + +void EVP_PKEY_meth_get_check(const EVP_PKEY_METHOD *pmeth, + int (**pcheck) (EVP_PKEY *pkey)); + +void EVP_PKEY_meth_get_public_check(const EVP_PKEY_METHOD *pmeth, + int (**pcheck) (EVP_PKEY *pkey)); + +void EVP_PKEY_meth_get_param_check(const EVP_PKEY_METHOD *pmeth, + int (**pcheck) (EVP_PKEY *pkey)); + +void EVP_PKEY_meth_get_digest_custom(EVP_PKEY_METHOD *pmeth, + int (**pdigest_custom) (EVP_PKEY_CTX *ctx, + EVP_MD_CTX *mctx)); +void EVP_add_alg_module(void); + + +# ifdef __cplusplus +} +# endif +#endif diff --git a/plugin/openssl/include/openssl/evperr.h b/plugin/openssl/include/openssl/evperr.h new file mode 100644 index 000000000..b4ea90ae9 --- /dev/null +++ b/plugin/openssl/include/openssl/evperr.h @@ -0,0 +1,204 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_EVPERR_H +# define HEADER_EVPERR_H + +# include + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_EVP_strings(void); + +/* + * EVP function codes. + */ +# define EVP_F_AESNI_INIT_KEY 165 +# define EVP_F_AESNI_XTS_INIT_KEY 207 +# define EVP_F_AES_GCM_CTRL 196 +# define EVP_F_AES_INIT_KEY 133 +# define EVP_F_AES_OCB_CIPHER 169 +# define EVP_F_AES_T4_INIT_KEY 178 +# define EVP_F_AES_T4_XTS_INIT_KEY 208 +# define EVP_F_AES_WRAP_CIPHER 170 +# define EVP_F_AES_XTS_INIT_KEY 209 +# define EVP_F_ALG_MODULE_INIT 177 +# define EVP_F_ARIA_CCM_INIT_KEY 175 +# define EVP_F_ARIA_GCM_CTRL 197 +# define EVP_F_ARIA_GCM_INIT_KEY 176 +# define EVP_F_ARIA_INIT_KEY 185 +# define EVP_F_B64_NEW 198 +# define EVP_F_CAMELLIA_INIT_KEY 159 +# define EVP_F_CHACHA20_POLY1305_CTRL 182 +# define EVP_F_CMLL_T4_INIT_KEY 179 +# define EVP_F_DES_EDE3_WRAP_CIPHER 171 +# define EVP_F_DO_SIGVER_INIT 161 +# define EVP_F_ENC_NEW 199 +# define EVP_F_EVP_CIPHERINIT_EX 123 +# define EVP_F_EVP_CIPHER_ASN1_TO_PARAM 204 +# 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_CIPHER_PARAM_TO_ASN1 205 +# define EVP_F_EVP_DECRYPTFINAL_EX 101 +# define EVP_F_EVP_DECRYPTUPDATE 166 +# define EVP_F_EVP_DIGESTFINALXOF 174 +# define EVP_F_EVP_DIGESTINIT_EX 128 +# define EVP_F_EVP_ENCRYPTDECRYPTUPDATE 219 +# define EVP_F_EVP_ENCRYPTFINAL_EX 127 +# define EVP_F_EVP_ENCRYPTUPDATE 167 +# 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_PBE_SCRYPT 181 +# define EVP_F_EVP_PKCS82PKEY 111 +# define EVP_F_EVP_PKEY2PKCS8 113 +# define EVP_F_EVP_PKEY_ASN1_ADD0 188 +# define EVP_F_EVP_PKEY_CHECK 186 +# 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_CTX_MD 168 +# 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_GET0_DH 119 +# define EVP_F_EVP_PKEY_GET0_DSA 120 +# define EVP_F_EVP_PKEY_GET0_EC_KEY 131 +# define EVP_F_EVP_PKEY_GET0_HMAC 183 +# define EVP_F_EVP_PKEY_GET0_POLY1305 184 +# define EVP_F_EVP_PKEY_GET0_RSA 121 +# define EVP_F_EVP_PKEY_GET0_SIPHASH 172 +# define EVP_F_EVP_PKEY_GET_RAW_PRIVATE_KEY 202 +# define EVP_F_EVP_PKEY_GET_RAW_PUBLIC_KEY 203 +# define EVP_F_EVP_PKEY_KEYGEN 146 +# define EVP_F_EVP_PKEY_KEYGEN_INIT 147 +# define EVP_F_EVP_PKEY_METH_ADD0 194 +# define EVP_F_EVP_PKEY_METH_NEW 195 +# define EVP_F_EVP_PKEY_NEW 106 +# define EVP_F_EVP_PKEY_NEW_CMAC_KEY 193 +# define EVP_F_EVP_PKEY_NEW_RAW_PRIVATE_KEY 191 +# define EVP_F_EVP_PKEY_NEW_RAW_PUBLIC_KEY 192 +# define EVP_F_EVP_PKEY_PARAMGEN 148 +# define EVP_F_EVP_PKEY_PARAMGEN_INIT 149 +# define EVP_F_EVP_PKEY_PARAM_CHECK 189 +# define EVP_F_EVP_PKEY_PUBLIC_CHECK 190 +# define EVP_F_EVP_PKEY_SET1_ENGINE 187 +# define EVP_F_EVP_PKEY_SET_ALIAS_TYPE 206 +# 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_SIGNFINAL 107 +# define EVP_F_EVP_VERIFYFINAL 108 +# define EVP_F_INT_CTX_NEW 157 +# define EVP_F_OK_NEW 200 +# 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_PKCS5_V2_SCRYPT_KEYIVGEN 180 +# define EVP_F_PKEY_SET_TYPE 158 +# define EVP_F_RC2_MAGIC_TO_METH 109 +# define EVP_F_RC5_CTRL 125 +# define EVP_F_R_32_12_16_INIT_KEY 242 +# define EVP_F_S390X_AES_GCM_CTRL 201 +# define EVP_F_UPDATE 173 + +/* + * EVP reason codes. + */ +# define EVP_R_AES_KEY_SETUP_FAILED 143 +# define EVP_R_ARIA_KEY_SETUP_FAILED 176 +# define EVP_R_BAD_DECRYPT 100 +# define EVP_R_BAD_KEY_LENGTH 195 +# 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_COPY_ERROR 173 +# 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_ERROR_LOADING_SECTION 165 +# define EVP_R_ERROR_SETTING_FIPS_MODE 166 +# define EVP_R_EXPECTING_AN_HMAC_KEY 174 +# 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_EC_KEY 142 +# define EVP_R_EXPECTING_A_POLY1305_KEY 164 +# define EVP_R_EXPECTING_A_SIPHASH_KEY 175 +# define EVP_R_FIPS_MODE_NOT_SUPPORTED 167 +# define EVP_R_GET_RAW_KEY_FAILED 182 +# define EVP_R_ILLEGAL_SCRYPT_PARAMETERS 171 +# 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_IV_LENGTH 194 +# define EVP_R_INVALID_KEY 163 +# define EVP_R_INVALID_KEY_LENGTH 130 +# define EVP_R_INVALID_OPERATION 148 +# define EVP_R_KEYGEN_FAILURE 120 +# define EVP_R_KEY_SETUP_FAILED 180 +# define EVP_R_MEMORY_LIMIT_EXCEEDED 172 +# define EVP_R_MESSAGE_DIGEST_IS_NULL 159 +# define EVP_R_METHOD_NOT_SUPPORTED 144 +# define EVP_R_MISSING_PARAMETERS 103 +# define EVP_R_NOT_XOF_OR_INVALID_LENGTH 178 +# 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_KEY_SET 154 +# define EVP_R_NO_OPERATION_SET 149 +# define EVP_R_ONLY_ONESHOT_SUPPORTED 177 +# define EVP_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE 150 +# define EVP_R_OPERATON_NOT_INITIALIZED 151 +# define EVP_R_OUTPUT_WOULD_OVERFLOW 184 +# define EVP_R_PARTIALLY_OVERLAPPING 162 +# define EVP_R_PBKDF2_ERROR 181 +# define EVP_R_PKEY_APPLICATION_ASN1_METHOD_ALREADY_REGISTERED 179 +# 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_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_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_NUMBER_OF_ROUNDS 135 +# 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_XTS_DUPLICATED_KEYS 183 + +#endif diff --git a/plugin/openssl/include/openssl/hmac.h b/plugin/openssl/include/openssl/hmac.h new file mode 100644 index 000000000..458efc1d5 --- /dev/null +++ b/plugin/openssl/include/openssl/hmac.h @@ -0,0 +1,51 @@ +/* + * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_HMAC_H +# define HEADER_HMAC_H + +# include + +# include + +# if OPENSSL_API_COMPAT < 0x10200000L +# define HMAC_MAX_MD_CBLOCK 128 /* Deprecated */ +# endif + +#ifdef __cplusplus +extern "C" { +#endif + +size_t HMAC_size(const HMAC_CTX *e); +HMAC_CTX *HMAC_CTX_new(void); +int HMAC_CTX_reset(HMAC_CTX *ctx); +void HMAC_CTX_free(HMAC_CTX *ctx); + +DEPRECATEDIN_1_1_0(__owur int HMAC_Init(HMAC_CTX *ctx, const void *key, int len, + const EVP_MD *md)) + +/*__owur*/ int HMAC_Init_ex(HMAC_CTX *ctx, const void *key, int len, + const EVP_MD *md, ENGINE *impl); +/*__owur*/ int HMAC_Update(HMAC_CTX *ctx, const unsigned char *data, + size_t len); +/*__owur*/ 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); +__owur int HMAC_CTX_copy(HMAC_CTX *dctx, HMAC_CTX *sctx); + +void HMAC_CTX_set_flags(HMAC_CTX *ctx, unsigned long flags); +const EVP_MD *HMAC_CTX_get_md(const HMAC_CTX *ctx); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/plugin/openssl/include/openssl/idea.h b/plugin/openssl/include/openssl/idea.h new file mode 100644 index 000000000..4334f3ea7 --- /dev/null +++ b/plugin/openssl/include/openssl/idea.h @@ -0,0 +1,64 @@ +/* + * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_IDEA_H +# define HEADER_IDEA_H + +# include + +# ifndef OPENSSL_NO_IDEA +# ifdef __cplusplus +extern "C" { +# endif + +typedef unsigned int IDEA_INT; + +# define IDEA_ENCRYPT 1 +# define IDEA_DECRYPT 0 + +# define IDEA_BLOCK 8 +# define IDEA_KEY_LENGTH 16 + +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); +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); + +# if OPENSSL_API_COMPAT < 0x10100000L +# define idea_options IDEA_options +# define idea_ecb_encrypt IDEA_ecb_encrypt +# define idea_set_encrypt_key IDEA_set_encrypt_key +# define idea_set_decrypt_key IDEA_set_decrypt_key +# define idea_cbc_encrypt IDEA_cbc_encrypt +# define idea_cfb64_encrypt IDEA_cfb64_encrypt +# define idea_ofb64_encrypt IDEA_ofb64_encrypt +# define idea_encrypt IDEA_encrypt +# endif + +# ifdef __cplusplus +} +# endif +# endif + +#endif diff --git a/plugin/openssl/include/openssl/kdf.h b/plugin/openssl/include/openssl/kdf.h new file mode 100644 index 000000000..5abd4c371 --- /dev/null +++ b/plugin/openssl/include/openssl/kdf.h @@ -0,0 +1,97 @@ +/* + * Copyright 2016-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_KDF_H +# define HEADER_KDF_H + +# include +#ifdef __cplusplus +extern "C" { +#endif + +# define EVP_PKEY_CTRL_TLS_MD (EVP_PKEY_ALG_CTRL) +# define EVP_PKEY_CTRL_TLS_SECRET (EVP_PKEY_ALG_CTRL + 1) +# define EVP_PKEY_CTRL_TLS_SEED (EVP_PKEY_ALG_CTRL + 2) +# define EVP_PKEY_CTRL_HKDF_MD (EVP_PKEY_ALG_CTRL + 3) +# define EVP_PKEY_CTRL_HKDF_SALT (EVP_PKEY_ALG_CTRL + 4) +# define EVP_PKEY_CTRL_HKDF_KEY (EVP_PKEY_ALG_CTRL + 5) +# define EVP_PKEY_CTRL_HKDF_INFO (EVP_PKEY_ALG_CTRL + 6) +# define EVP_PKEY_CTRL_HKDF_MODE (EVP_PKEY_ALG_CTRL + 7) +# define EVP_PKEY_CTRL_PASS (EVP_PKEY_ALG_CTRL + 8) +# define EVP_PKEY_CTRL_SCRYPT_SALT (EVP_PKEY_ALG_CTRL + 9) +# define EVP_PKEY_CTRL_SCRYPT_N (EVP_PKEY_ALG_CTRL + 10) +# define EVP_PKEY_CTRL_SCRYPT_R (EVP_PKEY_ALG_CTRL + 11) +# define EVP_PKEY_CTRL_SCRYPT_P (EVP_PKEY_ALG_CTRL + 12) +# define EVP_PKEY_CTRL_SCRYPT_MAXMEM_BYTES (EVP_PKEY_ALG_CTRL + 13) + +# define EVP_PKEY_HKDEF_MODE_EXTRACT_AND_EXPAND 0 +# define EVP_PKEY_HKDEF_MODE_EXTRACT_ONLY 1 +# define EVP_PKEY_HKDEF_MODE_EXPAND_ONLY 2 + +# define EVP_PKEY_CTX_set_tls1_prf_md(pctx, md) \ + EVP_PKEY_CTX_ctrl(pctx, -1, EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_TLS_MD, 0, (void *)(md)) + +# define EVP_PKEY_CTX_set1_tls1_prf_secret(pctx, sec, seclen) \ + EVP_PKEY_CTX_ctrl(pctx, -1, EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_TLS_SECRET, seclen, (void *)(sec)) + +# define EVP_PKEY_CTX_add1_tls1_prf_seed(pctx, seed, seedlen) \ + EVP_PKEY_CTX_ctrl(pctx, -1, EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_TLS_SEED, seedlen, (void *)(seed)) + +# define EVP_PKEY_CTX_set_hkdf_md(pctx, md) \ + EVP_PKEY_CTX_ctrl(pctx, -1, EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_HKDF_MD, 0, (void *)(md)) + +# define EVP_PKEY_CTX_set1_hkdf_salt(pctx, salt, saltlen) \ + EVP_PKEY_CTX_ctrl(pctx, -1, EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_HKDF_SALT, saltlen, (void *)(salt)) + +# define EVP_PKEY_CTX_set1_hkdf_key(pctx, key, keylen) \ + EVP_PKEY_CTX_ctrl(pctx, -1, EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_HKDF_KEY, keylen, (void *)(key)) + +# define EVP_PKEY_CTX_add1_hkdf_info(pctx, info, infolen) \ + EVP_PKEY_CTX_ctrl(pctx, -1, EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_HKDF_INFO, infolen, (void *)(info)) + +# define EVP_PKEY_CTX_hkdf_mode(pctx, mode) \ + EVP_PKEY_CTX_ctrl(pctx, -1, EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_HKDF_MODE, mode, NULL) + +# define EVP_PKEY_CTX_set1_pbe_pass(pctx, pass, passlen) \ + EVP_PKEY_CTX_ctrl(pctx, -1, EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_PASS, passlen, (void *)(pass)) + +# define EVP_PKEY_CTX_set1_scrypt_salt(pctx, salt, saltlen) \ + EVP_PKEY_CTX_ctrl(pctx, -1, EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_SCRYPT_SALT, saltlen, (void *)(salt)) + +# define EVP_PKEY_CTX_set_scrypt_N(pctx, n) \ + EVP_PKEY_CTX_ctrl_uint64(pctx, -1, EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_SCRYPT_N, n) + +# define EVP_PKEY_CTX_set_scrypt_r(pctx, r) \ + EVP_PKEY_CTX_ctrl_uint64(pctx, -1, EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_SCRYPT_R, r) + +# define EVP_PKEY_CTX_set_scrypt_p(pctx, p) \ + EVP_PKEY_CTX_ctrl_uint64(pctx, -1, EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_SCRYPT_P, p) + +# define EVP_PKEY_CTX_set_scrypt_maxmem_bytes(pctx, maxmem_bytes) \ + EVP_PKEY_CTX_ctrl_uint64(pctx, -1, EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_SCRYPT_MAXMEM_BYTES, maxmem_bytes) + + +# ifdef __cplusplus +} +# endif +#endif diff --git a/plugin/openssl/include/openssl/kdferr.h b/plugin/openssl/include/openssl/kdferr.h new file mode 100644 index 000000000..3f51bd022 --- /dev/null +++ b/plugin/openssl/include/openssl/kdferr.h @@ -0,0 +1,55 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_KDFERR_H +# define HEADER_KDFERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_KDF_strings(void); + +/* + * KDF function codes. + */ +# define KDF_F_PKEY_HKDF_CTRL_STR 103 +# define KDF_F_PKEY_HKDF_DERIVE 102 +# define KDF_F_PKEY_HKDF_INIT 108 +# define KDF_F_PKEY_SCRYPT_CTRL_STR 104 +# define KDF_F_PKEY_SCRYPT_CTRL_UINT64 105 +# define KDF_F_PKEY_SCRYPT_DERIVE 109 +# define KDF_F_PKEY_SCRYPT_INIT 106 +# define KDF_F_PKEY_SCRYPT_SET_MEMBUF 107 +# define KDF_F_PKEY_TLS1_PRF_CTRL_STR 100 +# define KDF_F_PKEY_TLS1_PRF_DERIVE 101 +# define KDF_F_PKEY_TLS1_PRF_INIT 110 +# define KDF_F_TLS1_PRF_ALG 111 + +/* + * KDF reason codes. + */ +# define KDF_R_INVALID_DIGEST 100 +# define KDF_R_MISSING_ITERATION_COUNT 109 +# define KDF_R_MISSING_KEY 104 +# define KDF_R_MISSING_MESSAGE_DIGEST 105 +# define KDF_R_MISSING_PARAMETER 101 +# define KDF_R_MISSING_PASS 110 +# define KDF_R_MISSING_SALT 111 +# define KDF_R_MISSING_SECRET 107 +# define KDF_R_MISSING_SEED 106 +# define KDF_R_UNKNOWN_PARAMETER_TYPE 103 +# define KDF_R_VALUE_ERROR 108 +# define KDF_R_VALUE_MISSING 102 + +#endif diff --git a/plugin/openssl/include/openssl/lhash.h b/plugin/openssl/include/openssl/lhash.h new file mode 100644 index 000000000..2e42d727d --- /dev/null +++ b/plugin/openssl/include/openssl/lhash.h @@ -0,0 +1,241 @@ +/* + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +/* + * Header for dynamic hash table routines Author - Eric Young + */ + +#ifndef HEADER_LHASH_H +# define HEADER_LHASH_H + +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct lhash_node_st OPENSSL_LH_NODE; +typedef int (*OPENSSL_LH_COMPFUNC) (const void *, const void *); +typedef unsigned long (*OPENSSL_LH_HASHFUNC) (const void *); +typedef void (*OPENSSL_LH_DOALL_FUNC) (void *); +typedef void (*OPENSSL_LH_DOALL_FUNCARG) (void *, void *); +typedef struct lhash_st OPENSSL_LHASH; + +/* + * 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 + +/* 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 + + +# define LH_LOAD_MULT 256 + +int OPENSSL_LH_error(OPENSSL_LHASH *lh); +OPENSSL_LHASH *OPENSSL_LH_new(OPENSSL_LH_HASHFUNC h, OPENSSL_LH_COMPFUNC c); +void OPENSSL_LH_free(OPENSSL_LHASH *lh); +void *OPENSSL_LH_insert(OPENSSL_LHASH *lh, void *data); +void *OPENSSL_LH_delete(OPENSSL_LHASH *lh, const void *data); +void *OPENSSL_LH_retrieve(OPENSSL_LHASH *lh, const void *data); +void OPENSSL_LH_doall(OPENSSL_LHASH *lh, OPENSSL_LH_DOALL_FUNC func); +void OPENSSL_LH_doall_arg(OPENSSL_LHASH *lh, OPENSSL_LH_DOALL_FUNCARG func, void *arg); +unsigned long OPENSSL_LH_strhash(const char *c); +unsigned long OPENSSL_LH_num_items(const OPENSSL_LHASH *lh); +unsigned long OPENSSL_LH_get_down_load(const OPENSSL_LHASH *lh); +void OPENSSL_LH_set_down_load(OPENSSL_LHASH *lh, unsigned long down_load); + +# ifndef OPENSSL_NO_STDIO +void OPENSSL_LH_stats(const OPENSSL_LHASH *lh, FILE *fp); +void OPENSSL_LH_node_stats(const OPENSSL_LHASH *lh, FILE *fp); +void OPENSSL_LH_node_usage_stats(const OPENSSL_LHASH *lh, FILE *fp); +# endif +void OPENSSL_LH_stats_bio(const OPENSSL_LHASH *lh, BIO *out); +void OPENSSL_LH_node_stats_bio(const OPENSSL_LHASH *lh, BIO *out); +void OPENSSL_LH_node_usage_stats_bio(const OPENSSL_LHASH *lh, BIO *out); + +# if OPENSSL_API_COMPAT < 0x10100000L +# define _LHASH OPENSSL_LHASH +# define LHASH_NODE OPENSSL_LH_NODE +# define lh_error OPENSSL_LH_error +# define lh_new OPENSSL_LH_new +# define lh_free OPENSSL_LH_free +# define lh_insert OPENSSL_LH_insert +# define lh_delete OPENSSL_LH_delete +# define lh_retrieve OPENSSL_LH_retrieve +# define lh_doall OPENSSL_LH_doall +# define lh_doall_arg OPENSSL_LH_doall_arg +# define lh_strhash OPENSSL_LH_strhash +# define lh_num_items OPENSSL_LH_num_items +# ifndef OPENSSL_NO_STDIO +# define lh_stats OPENSSL_LH_stats +# define lh_node_stats OPENSSL_LH_node_stats +# define lh_node_usage_stats OPENSSL_LH_node_usage_stats +# endif +# define lh_stats_bio OPENSSL_LH_stats_bio +# define lh_node_stats_bio OPENSSL_LH_node_stats_bio +# define lh_node_usage_stats_bio OPENSSL_LH_node_usage_stats_bio +# endif + +/* Type checking... */ + +# define LHASH_OF(type) struct lhash_st_##type + +# define DEFINE_LHASH_OF(type) \ + LHASH_OF(type) { union lh_##type##_dummy { void* d1; unsigned long d2; int d3; } dummy; }; \ + static ossl_unused ossl_inline LHASH_OF(type) *lh_##type##_new(unsigned long (*hfn)(const type *), \ + int (*cfn)(const type *, const type *)) \ + { \ + return (LHASH_OF(type) *) \ + OPENSSL_LH_new((OPENSSL_LH_HASHFUNC)hfn, (OPENSSL_LH_COMPFUNC)cfn); \ + } \ + static ossl_unused ossl_inline void lh_##type##_free(LHASH_OF(type) *lh) \ + { \ + OPENSSL_LH_free((OPENSSL_LHASH *)lh); \ + } \ + static ossl_unused ossl_inline type *lh_##type##_insert(LHASH_OF(type) *lh, type *d) \ + { \ + return (type *)OPENSSL_LH_insert((OPENSSL_LHASH *)lh, d); \ + } \ + static ossl_unused ossl_inline type *lh_##type##_delete(LHASH_OF(type) *lh, const type *d) \ + { \ + return (type *)OPENSSL_LH_delete((OPENSSL_LHASH *)lh, d); \ + } \ + static ossl_unused ossl_inline type *lh_##type##_retrieve(LHASH_OF(type) *lh, const type *d) \ + { \ + return (type *)OPENSSL_LH_retrieve((OPENSSL_LHASH *)lh, d); \ + } \ + static ossl_unused ossl_inline int lh_##type##_error(LHASH_OF(type) *lh) \ + { \ + return OPENSSL_LH_error((OPENSSL_LHASH *)lh); \ + } \ + static ossl_unused ossl_inline unsigned long lh_##type##_num_items(LHASH_OF(type) *lh) \ + { \ + return OPENSSL_LH_num_items((OPENSSL_LHASH *)lh); \ + } \ + static ossl_unused ossl_inline void lh_##type##_node_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + { \ + OPENSSL_LH_node_stats_bio((const OPENSSL_LHASH *)lh, out); \ + } \ + static ossl_unused ossl_inline void lh_##type##_node_usage_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + { \ + OPENSSL_LH_node_usage_stats_bio((const OPENSSL_LHASH *)lh, out); \ + } \ + static ossl_unused ossl_inline void lh_##type##_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + { \ + OPENSSL_LH_stats_bio((const OPENSSL_LHASH *)lh, out); \ + } \ + static ossl_unused ossl_inline unsigned long lh_##type##_get_down_load(LHASH_OF(type) *lh) \ + { \ + return OPENSSL_LH_get_down_load((OPENSSL_LHASH *)lh); \ + } \ + static ossl_unused ossl_inline void lh_##type##_set_down_load(LHASH_OF(type) *lh, unsigned long dl) \ + { \ + OPENSSL_LH_set_down_load((OPENSSL_LHASH *)lh, dl); \ + } \ + static ossl_unused ossl_inline void lh_##type##_doall(LHASH_OF(type) *lh, \ + void (*doall)(type *)) \ + { \ + OPENSSL_LH_doall((OPENSSL_LHASH *)lh, (OPENSSL_LH_DOALL_FUNC)doall); \ + } \ + LHASH_OF(type) + +#define IMPLEMENT_LHASH_DOALL_ARG_CONST(type, argtype) \ + int_implement_lhash_doall(type, argtype, const type) + +#define IMPLEMENT_LHASH_DOALL_ARG(type, argtype) \ + int_implement_lhash_doall(type, argtype, type) + +#define int_implement_lhash_doall(type, argtype, cbargtype) \ + static ossl_unused ossl_inline void \ + lh_##type##_doall_##argtype(LHASH_OF(type) *lh, \ + void (*fn)(cbargtype *, argtype *), \ + argtype *arg) \ + { \ + OPENSSL_LH_doall_arg((OPENSSL_LHASH *)lh, (OPENSSL_LH_DOALL_FUNCARG)fn, (void *)arg); \ + } \ + LHASH_OF(type) + +DEFINE_LHASH_OF(OPENSSL_STRING); +# ifdef _MSC_VER +/* + * push and pop this warning: + * warning C4090: 'function': different 'const' qualifiers + */ +# pragma warning (push) +# pragma warning (disable: 4090) +# endif + +DEFINE_LHASH_OF(OPENSSL_CSTRING); + +# ifdef _MSC_VER +# pragma warning (pop) +# endif + +/* + * If called without higher optimization (min. -xO3) the Oracle Developer + * Studio compiler generates code for the defined (static inline) functions + * above. + * This would later lead to the linker complaining about missing symbols when + * this header file is included but the resulting object is not linked against + * the Crypto library (openssl#6912). + */ +# ifdef __SUNPRO_C +# pragma weak OPENSSL_LH_new +# pragma weak OPENSSL_LH_free +# pragma weak OPENSSL_LH_insert +# pragma weak OPENSSL_LH_delete +# pragma weak OPENSSL_LH_retrieve +# pragma weak OPENSSL_LH_error +# pragma weak OPENSSL_LH_num_items +# pragma weak OPENSSL_LH_node_stats_bio +# pragma weak OPENSSL_LH_node_usage_stats_bio +# pragma weak OPENSSL_LH_stats_bio +# pragma weak OPENSSL_LH_get_down_load +# pragma weak OPENSSL_LH_set_down_load +# pragma weak OPENSSL_LH_doall +# pragma weak OPENSSL_LH_doall_arg +# endif /* __SUNPRO_C */ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/plugin/openssl/include/openssl/md2.h b/plugin/openssl/include/openssl/md2.h new file mode 100644 index 000000000..7faf8e3d6 --- /dev/null +++ b/plugin/openssl/include/openssl/md2.h @@ -0,0 +1,44 @@ +/* + * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_MD2_H +# define HEADER_MD2_H + +# include + +# ifndef OPENSSL_NO_MD2 +# include +# ifdef __cplusplus +extern "C" { +# endif + +typedef unsigned char MD2_INT; + +# define MD2_DIGEST_LENGTH 16 +# define MD2_BLOCK 16 + +typedef struct MD2state_st { + unsigned int num; + unsigned char data[MD2_BLOCK]; + MD2_INT cksm[MD2_BLOCK]; + MD2_INT state[MD2_BLOCK]; +} MD2_CTX; + +const char *MD2_options(void); +int MD2_Init(MD2_CTX *c); +int MD2_Update(MD2_CTX *c, const unsigned char *data, size_t len); +int MD2_Final(unsigned char *md, MD2_CTX *c); +unsigned char *MD2(const unsigned char *d, size_t n, unsigned char *md); + +# ifdef __cplusplus +} +# endif +# endif + +#endif diff --git a/plugin/openssl/include/openssl/md4.h b/plugin/openssl/include/openssl/md4.h new file mode 100644 index 000000000..940e29db4 --- /dev/null +++ b/plugin/openssl/include/openssl/md4.h @@ -0,0 +1,51 @@ +/* + * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_MD4_H +# define HEADER_MD4_H + +# include + +# ifndef OPENSSL_NO_MD4 +# include +# include +# ifdef __cplusplus +extern "C" { +# endif + +/*- + * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + * ! MD4_LONG has to be at least 32 bits wide. ! + * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + */ +# define MD4_LONG unsigned int + +# 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; + +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 + +#endif diff --git a/plugin/openssl/include/openssl/md5.h b/plugin/openssl/include/openssl/md5.h new file mode 100644 index 000000000..2deb77211 --- /dev/null +++ b/plugin/openssl/include/openssl/md5.h @@ -0,0 +1,50 @@ +/* + * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_MD5_H +# define HEADER_MD5_H + +# include + +# ifndef OPENSSL_NO_MD5 +# include +# include +# ifdef __cplusplus +extern "C" { +# endif + +/* + * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + * ! MD5_LONG has to be at least 32 bits wide. ! + * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + */ +# define MD5_LONG unsigned int + +# 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; + +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 + +#endif diff --git a/plugin/openssl/include/openssl/mdc2.h b/plugin/openssl/include/openssl/mdc2.h new file mode 100644 index 000000000..aabd2bfaa --- /dev/null +++ b/plugin/openssl/include/openssl/mdc2.h @@ -0,0 +1,42 @@ +/* + * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_MDC2_H +# define HEADER_MDC2_H + +# include + +#ifndef OPENSSL_NO_MDC2 +# include +# include +# ifdef __cplusplus +extern "C" { +# 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; + +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 + +#endif diff --git a/plugin/openssl/include/openssl/modes.h b/plugin/openssl/include/openssl/modes.h new file mode 100644 index 000000000..d544f98d5 --- /dev/null +++ b/plugin/openssl/include/openssl/modes.h @@ -0,0 +1,208 @@ +/* + * Copyright 2008-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_MODES_H +# define HEADER_MODES_H + +# 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); +size_t CRYPTO_128_wrap_pad(void *key, const unsigned char *icv, + unsigned char *out, const unsigned char *in, + size_t inlen, block128_f block); +size_t CRYPTO_128_unwrap_pad(void *key, const unsigned char *icv, + unsigned char *out, const unsigned char *in, + size_t inlen, block128_f block); + +# ifndef OPENSSL_NO_OCB +typedef struct ocb128_context OCB128_CONTEXT; + +typedef void (*ocb128_f) (const unsigned char *in, unsigned char *out, + size_t blocks, const void *key, + size_t start_block_num, + unsigned char offset_i[16], + const unsigned char L_[][16], + unsigned char checksum[16]); + +OCB128_CONTEXT *CRYPTO_ocb128_new(void *keyenc, void *keydec, + block128_f encrypt, block128_f decrypt, + ocb128_f stream); +int CRYPTO_ocb128_init(OCB128_CONTEXT *ctx, void *keyenc, void *keydec, + block128_f encrypt, block128_f decrypt, + ocb128_f stream); +int CRYPTO_ocb128_copy_ctx(OCB128_CONTEXT *dest, OCB128_CONTEXT *src, + void *keyenc, void *keydec); +int CRYPTO_ocb128_setiv(OCB128_CONTEXT *ctx, const unsigned char *iv, + size_t len, size_t taglen); +int CRYPTO_ocb128_aad(OCB128_CONTEXT *ctx, const unsigned char *aad, + size_t len); +int CRYPTO_ocb128_encrypt(OCB128_CONTEXT *ctx, const unsigned char *in, + unsigned char *out, size_t len); +int CRYPTO_ocb128_decrypt(OCB128_CONTEXT *ctx, const unsigned char *in, + unsigned char *out, size_t len); +int CRYPTO_ocb128_finish(OCB128_CONTEXT *ctx, const unsigned char *tag, + size_t len); +int CRYPTO_ocb128_tag(OCB128_CONTEXT *ctx, unsigned char *tag, size_t len); +void CRYPTO_ocb128_cleanup(OCB128_CONTEXT *ctx); +# endif /* OPENSSL_NO_OCB */ + +# ifdef __cplusplus +} +# endif + +#endif diff --git a/plugin/openssl/include/openssl/obj_mac.h b/plugin/openssl/include/openssl/obj_mac.h new file mode 100644 index 000000000..53516a06c --- /dev/null +++ b/plugin/openssl/include/openssl/obj_mac.h @@ -0,0 +1,5198 @@ +/* + * WARNING: do not edit! + * Generated by crypto/objects/objects.pl + * + * Copyright 2000-2022 The OpenSSL Project Authors. All Rights Reserved. + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#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_x509ExtAdmission "x509ExtAdmission" +#define LN_x509ExtAdmission "Professional Information or basis for Admission" +#define NID_x509ExtAdmission 1093 +#define OBJ_x509ExtAdmission OBJ_identified_organization,36L,8L,3L,3L + +#define SN_certicom_arc "certicom-arc" +#define NID_certicom_arc 677 +#define OBJ_certicom_arc OBJ_identified_organization,132L + +#define SN_ieee "ieee" +#define NID_ieee 1170 +#define OBJ_ieee OBJ_identified_organization,111L + +#define SN_ieee_siswg "ieee-siswg" +#define LN_ieee_siswg "IEEE Security in Storage Working Group" +#define NID_ieee_siswg 1171 +#define OBJ_ieee_siswg OBJ_ieee,2L,1619L + +#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_ISO_CN "ISO-CN" +#define LN_ISO_CN "ISO CN Member Body" +#define NID_ISO_CN 1140 +#define OBJ_ISO_CN OBJ_member_body,156L + +#define SN_oscca "oscca" +#define NID_oscca 1141 +#define OBJ_oscca OBJ_ISO_CN,10197L + +#define SN_sm_scheme "sm-scheme" +#define NID_sm_scheme 1142 +#define OBJ_sm_scheme OBJ_oscca,1L + +#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_sha512_224WithRSAEncryption "RSA-SHA512/224" +#define LN_sha512_224WithRSAEncryption "sha512-224WithRSAEncryption" +#define NID_sha512_224WithRSAEncryption 1145 +#define OBJ_sha512_224WithRSAEncryption OBJ_pkcs1,15L + +#define SN_sha512_256WithRSAEncryption "RSA-SHA512/256" +#define LN_sha512_256WithRSAEncryption "sha512-256WithRSAEncryption" +#define NID_sha512_256WithRSAEncryption 1146 +#define OBJ_sha512_256WithRSAEncryption OBJ_pkcs1,16L + +#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_smime_ct_contentCollection "id-smime-ct-contentCollection" +#define NID_id_smime_ct_contentCollection 1058 +#define OBJ_id_smime_ct_contentCollection OBJ_id_smime_ct,19L + +#define SN_id_smime_ct_authEnvelopedData "id-smime-ct-authEnvelopedData" +#define NID_id_smime_ct_authEnvelopedData 1059 +#define OBJ_id_smime_ct_authEnvelopedData OBJ_id_smime_ct,23L + +#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_ct_xml "id-ct-xml" +#define NID_id_ct_xml 1060 +#define OBJ_id_ct_xml OBJ_id_smime_ct,28L + +#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_aa_signingCertificateV2 "id-smime-aa-signingCertificateV2" +#define NID_id_smime_aa_signingCertificateV2 1086 +#define OBJ_id_smime_aa_signingCertificateV2 OBJ_id_smime_aa,47L + +#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 SN_sm2 "SM2" +#define LN_sm2 "sm2" +#define NID_sm2 1172 +#define OBJ_sm2 OBJ_sm_scheme,301L + +#define SN_sm3 "SM3" +#define LN_sm3 "sm3" +#define NID_sm3 1143 +#define OBJ_sm3 OBJ_sm_scheme,401L + +#define SN_sm3WithRSAEncryption "RSA-SM3" +#define LN_sm3WithRSAEncryption "sm3WithRSAEncryption" +#define NID_sm3WithRSAEncryption 1144 +#define OBJ_sm3WithRSAEncryption OBJ_sm_scheme,504L + +#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 LN_hmacWithSHA512_224 "hmacWithSHA512-224" +#define NID_hmacWithSHA512_224 1193 +#define OBJ_hmacWithSHA512_224 OBJ_rsadsi,2L,12L + +#define LN_hmacWithSHA512_256 "hmacWithSHA512-256" +#define NID_hmacWithSHA512_256 1194 +#define OBJ_hmacWithSHA512_256 OBJ_rsadsi,2L,13L + +#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 Smartcard Login" +#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 User 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_tlsfeature "tlsfeature" +#define LN_tlsfeature "TLS Feature" +#define NID_tlsfeature 1020 +#define OBJ_tlsfeature OBJ_id_pe,24L + +#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_ipsec_IKE "ipsecIKE" +#define LN_ipsec_IKE "ipsec Internet Key Exchange" +#define NID_ipsec_IKE 1022 +#define OBJ_ipsec_IKE OBJ_id_kp,17L + +#define SN_capwapAC "capwapAC" +#define LN_capwapAC "Ctrl/provision WAP Access" +#define NID_capwapAC 1023 +#define OBJ_capwapAC OBJ_id_kp,18L + +#define SN_capwapWTP "capwapWTP" +#define LN_capwapWTP "Ctrl/Provision WAP Termination" +#define NID_capwapWTP 1024 +#define OBJ_capwapWTP OBJ_id_kp,19L + +#define SN_sshClient "secureShellClient" +#define LN_sshClient "SSH Client" +#define NID_sshClient 1025 +#define OBJ_sshClient OBJ_id_kp,21L + +#define SN_sshServer "secureShellServer" +#define LN_sshServer "SSH Server" +#define NID_sshServer 1026 +#define OBJ_sshServer OBJ_id_kp,22L + +#define SN_sendRouter "sendRouter" +#define LN_sendRouter "Send Router" +#define NID_sendRouter 1027 +#define OBJ_sendRouter OBJ_id_kp,23L + +#define SN_sendProxiedRouter "sendProxiedRouter" +#define LN_sendProxiedRouter "Send Proxied Router" +#define NID_sendProxiedRouter 1028 +#define OBJ_sendProxiedRouter OBJ_id_kp,24L + +#define SN_sendOwner "sendOwner" +#define LN_sendOwner "Send Owner" +#define NID_sendOwner 1029 +#define OBJ_sendOwner OBJ_id_kp,25L + +#define SN_sendProxiedOwner "sendProxiedOwner" +#define LN_sendProxiedOwner "Send Proxied Owner" +#define NID_sendProxiedOwner 1030 +#define OBJ_sendProxiedOwner OBJ_id_kp,26L + +#define SN_cmcCA "cmcCA" +#define LN_cmcCA "CMC Certificate Authority" +#define NID_cmcCA 1131 +#define OBJ_cmcCA OBJ_id_kp,27L + +#define SN_cmcRA "cmcRA" +#define LN_cmcRA "CMC Registration Authority" +#define NID_cmcRA 1132 +#define OBJ_cmcRA OBJ_id_kp,28L + +#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_blake2b512 "BLAKE2b512" +#define LN_blake2b512 "blake2b512" +#define NID_blake2b512 1056 +#define OBJ_blake2b512 1L,3L,6L,1L,4L,1L,1722L,12L,2L,1L,16L + +#define SN_blake2s256 "BLAKE2s256" +#define LN_blake2s256 "blake2s256" +#define NID_blake2s256 1057 +#define OBJ_blake2s256 1L,3L,6L,1L,4L,1L,1722L,12L,2L,2L,8L + +#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 LN_organizationIdentifier "organizationIdentifier" +#define NID_organizationIdentifier 1089 +#define OBJ_organizationIdentifier OBJ_X509,97L + +#define SN_countryCode3c "c3" +#define LN_countryCode3c "countryCode3c" +#define NID_countryCode3c 1090 +#define OBJ_countryCode3c OBJ_X509,98L + +#define SN_countryCode3n "n3" +#define LN_countryCode3n "countryCode3n" +#define NID_countryCode3n 1091 +#define OBJ_countryCode3n OBJ_X509,99L + +#define LN_dnsName "dnsName" +#define NID_dnsName 1092 +#define OBJ_dnsName OBJ_X509,100L + +#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 Distribution 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_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_xts "AES-128-XTS" +#define LN_aes_128_xts "aes-128-xts" +#define NID_aes_128_xts 913 +#define OBJ_aes_128_xts OBJ_ieee_siswg,0L,1L,1L + +#define SN_aes_256_xts "AES-256-XTS" +#define LN_aes_256_xts "aes-256-xts" +#define NID_aes_256_xts 914 +#define OBJ_aes_256_xts OBJ_ieee_siswg,0L,1L,2L + +#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_ocb "AES-128-OCB" +#define LN_aes_128_ocb "aes-128-ocb" +#define NID_aes_128_ocb 958 + +#define SN_aes_192_ocb "AES-192-OCB" +#define LN_aes_192_ocb "aes-192-ocb" +#define NID_aes_192_ocb 959 + +#define SN_aes_256_ocb "AES-256-OCB" +#define LN_aes_256_ocb "aes-256-ocb" +#define NID_aes_256_ocb 960 + +#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 SN_sha512_224 "SHA512-224" +#define LN_sha512_224 "sha512-224" +#define NID_sha512_224 1094 +#define OBJ_sha512_224 OBJ_nist_hashalgs,5L + +#define SN_sha512_256 "SHA512-256" +#define LN_sha512_256 "sha512-256" +#define NID_sha512_256 1095 +#define OBJ_sha512_256 OBJ_nist_hashalgs,6L + +#define SN_sha3_224 "SHA3-224" +#define LN_sha3_224 "sha3-224" +#define NID_sha3_224 1096 +#define OBJ_sha3_224 OBJ_nist_hashalgs,7L + +#define SN_sha3_256 "SHA3-256" +#define LN_sha3_256 "sha3-256" +#define NID_sha3_256 1097 +#define OBJ_sha3_256 OBJ_nist_hashalgs,8L + +#define SN_sha3_384 "SHA3-384" +#define LN_sha3_384 "sha3-384" +#define NID_sha3_384 1098 +#define OBJ_sha3_384 OBJ_nist_hashalgs,9L + +#define SN_sha3_512 "SHA3-512" +#define LN_sha3_512 "sha3-512" +#define NID_sha3_512 1099 +#define OBJ_sha3_512 OBJ_nist_hashalgs,10L + +#define SN_shake128 "SHAKE128" +#define LN_shake128 "shake128" +#define NID_shake128 1100 +#define OBJ_shake128 OBJ_nist_hashalgs,11L + +#define SN_shake256 "SHAKE256" +#define LN_shake256 "shake256" +#define NID_shake256 1101 +#define OBJ_shake256 OBJ_nist_hashalgs,12L + +#define SN_hmac_sha3_224 "id-hmacWithSHA3-224" +#define LN_hmac_sha3_224 "hmac-sha3-224" +#define NID_hmac_sha3_224 1102 +#define OBJ_hmac_sha3_224 OBJ_nist_hashalgs,13L + +#define SN_hmac_sha3_256 "id-hmacWithSHA3-256" +#define LN_hmac_sha3_256 "hmac-sha3-256" +#define NID_hmac_sha3_256 1103 +#define OBJ_hmac_sha3_256 OBJ_nist_hashalgs,14L + +#define SN_hmac_sha3_384 "id-hmacWithSHA3-384" +#define LN_hmac_sha3_384 "hmac-sha3-384" +#define NID_hmac_sha3_384 1104 +#define OBJ_hmac_sha3_384 OBJ_nist_hashalgs,15L + +#define SN_hmac_sha3_512 "id-hmacWithSHA3-512" +#define LN_hmac_sha3_512 "hmac-sha3-512" +#define NID_hmac_sha3_512 1105 +#define OBJ_hmac_sha3_512 OBJ_nist_hashalgs,16L + +#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 OBJ_sigAlgs OBJ_nistAlgorithms,3L + +#define SN_dsa_with_SHA384 "id-dsa-with-sha384" +#define LN_dsa_with_SHA384 "dsa_with_SHA384" +#define NID_dsa_with_SHA384 1106 +#define OBJ_dsa_with_SHA384 OBJ_sigAlgs,3L + +#define SN_dsa_with_SHA512 "id-dsa-with-sha512" +#define LN_dsa_with_SHA512 "dsa_with_SHA512" +#define NID_dsa_with_SHA512 1107 +#define OBJ_dsa_with_SHA512 OBJ_sigAlgs,4L + +#define SN_dsa_with_SHA3_224 "id-dsa-with-sha3-224" +#define LN_dsa_with_SHA3_224 "dsa_with_SHA3-224" +#define NID_dsa_with_SHA3_224 1108 +#define OBJ_dsa_with_SHA3_224 OBJ_sigAlgs,5L + +#define SN_dsa_with_SHA3_256 "id-dsa-with-sha3-256" +#define LN_dsa_with_SHA3_256 "dsa_with_SHA3-256" +#define NID_dsa_with_SHA3_256 1109 +#define OBJ_dsa_with_SHA3_256 OBJ_sigAlgs,6L + +#define SN_dsa_with_SHA3_384 "id-dsa-with-sha3-384" +#define LN_dsa_with_SHA3_384 "dsa_with_SHA3-384" +#define NID_dsa_with_SHA3_384 1110 +#define OBJ_dsa_with_SHA3_384 OBJ_sigAlgs,7L + +#define SN_dsa_with_SHA3_512 "id-dsa-with-sha3-512" +#define LN_dsa_with_SHA3_512 "dsa_with_SHA3-512" +#define NID_dsa_with_SHA3_512 1111 +#define OBJ_dsa_with_SHA3_512 OBJ_sigAlgs,8L + +#define SN_ecdsa_with_SHA3_224 "id-ecdsa-with-sha3-224" +#define LN_ecdsa_with_SHA3_224 "ecdsa_with_SHA3-224" +#define NID_ecdsa_with_SHA3_224 1112 +#define OBJ_ecdsa_with_SHA3_224 OBJ_sigAlgs,9L + +#define SN_ecdsa_with_SHA3_256 "id-ecdsa-with-sha3-256" +#define LN_ecdsa_with_SHA3_256 "ecdsa_with_SHA3-256" +#define NID_ecdsa_with_SHA3_256 1113 +#define OBJ_ecdsa_with_SHA3_256 OBJ_sigAlgs,10L + +#define SN_ecdsa_with_SHA3_384 "id-ecdsa-with-sha3-384" +#define LN_ecdsa_with_SHA3_384 "ecdsa_with_SHA3-384" +#define NID_ecdsa_with_SHA3_384 1114 +#define OBJ_ecdsa_with_SHA3_384 OBJ_sigAlgs,11L + +#define SN_ecdsa_with_SHA3_512 "id-ecdsa-with-sha3-512" +#define LN_ecdsa_with_SHA3_512 "ecdsa_with_SHA3-512" +#define NID_ecdsa_with_SHA3_512 1115 +#define OBJ_ecdsa_with_SHA3_512 OBJ_sigAlgs,12L + +#define SN_RSA_SHA3_224 "id-rsassa-pkcs1-v1_5-with-sha3-224" +#define LN_RSA_SHA3_224 "RSA-SHA3-224" +#define NID_RSA_SHA3_224 1116 +#define OBJ_RSA_SHA3_224 OBJ_sigAlgs,13L + +#define SN_RSA_SHA3_256 "id-rsassa-pkcs1-v1_5-with-sha3-256" +#define LN_RSA_SHA3_256 "RSA-SHA3-256" +#define NID_RSA_SHA3_256 1117 +#define OBJ_RSA_SHA3_256 OBJ_sigAlgs,14L + +#define SN_RSA_SHA3_384 "id-rsassa-pkcs1-v1_5-with-sha3-384" +#define LN_RSA_SHA3_384 "RSA-SHA3-384" +#define NID_RSA_SHA3_384 1118 +#define OBJ_RSA_SHA3_384 OBJ_sigAlgs,15L + +#define SN_RSA_SHA3_512 "id-rsassa-pkcs1-v1_5-with-sha3-512" +#define LN_RSA_SHA3_512 "RSA-SHA3-512" +#define NID_RSA_SHA3_512 1119 +#define OBJ_RSA_SHA3_512 OBJ_sigAlgs,16L + +#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 SN_uniqueIdentifier "uid" +#define LN_uniqueIdentifier "uniqueIdentifier" +#define NID_uniqueIdentifier 102 +#define OBJ_uniqueIdentifier OBJ_pilotAttributeType,44L + +#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_tc26 "id-tc26" +#define NID_id_tc26 974 +#define OBJ_id_tc26 OBJ_member_body,643L,7L,1L + +#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_gost89_cnt_12 "gost89-cnt-12" +#define NID_gost89_cnt_12 975 + +#define SN_gost89_cbc "gost89-cbc" +#define NID_gost89_cbc 1009 + +#define SN_gost89_ecb "gost89-ecb" +#define NID_gost89_ecb 1010 + +#define SN_gost89_ctr "gost89-ctr" +#define NID_gost89_ctr 1011 + +#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_gost_mac_12 "gost-mac-12" +#define NID_gost_mac_12 976 + +#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_id_tc26_algorithms "id-tc26-algorithms" +#define NID_id_tc26_algorithms 977 +#define OBJ_id_tc26_algorithms OBJ_id_tc26,1L + +#define SN_id_tc26_sign "id-tc26-sign" +#define NID_id_tc26_sign 978 +#define OBJ_id_tc26_sign OBJ_id_tc26_algorithms,1L + +#define SN_id_GostR3410_2012_256 "gost2012_256" +#define LN_id_GostR3410_2012_256 "GOST R 34.10-2012 with 256 bit modulus" +#define NID_id_GostR3410_2012_256 979 +#define OBJ_id_GostR3410_2012_256 OBJ_id_tc26_sign,1L + +#define SN_id_GostR3410_2012_512 "gost2012_512" +#define LN_id_GostR3410_2012_512 "GOST R 34.10-2012 with 512 bit modulus" +#define NID_id_GostR3410_2012_512 980 +#define OBJ_id_GostR3410_2012_512 OBJ_id_tc26_sign,2L + +#define SN_id_tc26_digest "id-tc26-digest" +#define NID_id_tc26_digest 981 +#define OBJ_id_tc26_digest OBJ_id_tc26_algorithms,2L + +#define SN_id_GostR3411_2012_256 "md_gost12_256" +#define LN_id_GostR3411_2012_256 "GOST R 34.11-2012 with 256 bit hash" +#define NID_id_GostR3411_2012_256 982 +#define OBJ_id_GostR3411_2012_256 OBJ_id_tc26_digest,2L + +#define SN_id_GostR3411_2012_512 "md_gost12_512" +#define LN_id_GostR3411_2012_512 "GOST R 34.11-2012 with 512 bit hash" +#define NID_id_GostR3411_2012_512 983 +#define OBJ_id_GostR3411_2012_512 OBJ_id_tc26_digest,3L + +#define SN_id_tc26_signwithdigest "id-tc26-signwithdigest" +#define NID_id_tc26_signwithdigest 984 +#define OBJ_id_tc26_signwithdigest OBJ_id_tc26_algorithms,3L + +#define SN_id_tc26_signwithdigest_gost3410_2012_256 "id-tc26-signwithdigest-gost3410-2012-256" +#define LN_id_tc26_signwithdigest_gost3410_2012_256 "GOST R 34.10-2012 with GOST R 34.11-2012 (256 bit)" +#define NID_id_tc26_signwithdigest_gost3410_2012_256 985 +#define OBJ_id_tc26_signwithdigest_gost3410_2012_256 OBJ_id_tc26_signwithdigest,2L + +#define SN_id_tc26_signwithdigest_gost3410_2012_512 "id-tc26-signwithdigest-gost3410-2012-512" +#define LN_id_tc26_signwithdigest_gost3410_2012_512 "GOST R 34.10-2012 with GOST R 34.11-2012 (512 bit)" +#define NID_id_tc26_signwithdigest_gost3410_2012_512 986 +#define OBJ_id_tc26_signwithdigest_gost3410_2012_512 OBJ_id_tc26_signwithdigest,3L + +#define SN_id_tc26_mac "id-tc26-mac" +#define NID_id_tc26_mac 987 +#define OBJ_id_tc26_mac OBJ_id_tc26_algorithms,4L + +#define SN_id_tc26_hmac_gost_3411_2012_256 "id-tc26-hmac-gost-3411-2012-256" +#define LN_id_tc26_hmac_gost_3411_2012_256 "HMAC GOST 34.11-2012 256 bit" +#define NID_id_tc26_hmac_gost_3411_2012_256 988 +#define OBJ_id_tc26_hmac_gost_3411_2012_256 OBJ_id_tc26_mac,1L + +#define SN_id_tc26_hmac_gost_3411_2012_512 "id-tc26-hmac-gost-3411-2012-512" +#define LN_id_tc26_hmac_gost_3411_2012_512 "HMAC GOST 34.11-2012 512 bit" +#define NID_id_tc26_hmac_gost_3411_2012_512 989 +#define OBJ_id_tc26_hmac_gost_3411_2012_512 OBJ_id_tc26_mac,2L + +#define SN_id_tc26_cipher "id-tc26-cipher" +#define NID_id_tc26_cipher 990 +#define OBJ_id_tc26_cipher OBJ_id_tc26_algorithms,5L + +#define SN_id_tc26_cipher_gostr3412_2015_magma "id-tc26-cipher-gostr3412-2015-magma" +#define NID_id_tc26_cipher_gostr3412_2015_magma 1173 +#define OBJ_id_tc26_cipher_gostr3412_2015_magma OBJ_id_tc26_cipher,1L + +#define SN_id_tc26_cipher_gostr3412_2015_magma_ctracpkm "id-tc26-cipher-gostr3412-2015-magma-ctracpkm" +#define NID_id_tc26_cipher_gostr3412_2015_magma_ctracpkm 1174 +#define OBJ_id_tc26_cipher_gostr3412_2015_magma_ctracpkm OBJ_id_tc26_cipher_gostr3412_2015_magma,1L + +#define SN_id_tc26_cipher_gostr3412_2015_magma_ctracpkm_omac "id-tc26-cipher-gostr3412-2015-magma-ctracpkm-omac" +#define NID_id_tc26_cipher_gostr3412_2015_magma_ctracpkm_omac 1175 +#define OBJ_id_tc26_cipher_gostr3412_2015_magma_ctracpkm_omac OBJ_id_tc26_cipher_gostr3412_2015_magma,2L + +#define SN_id_tc26_cipher_gostr3412_2015_kuznyechik "id-tc26-cipher-gostr3412-2015-kuznyechik" +#define NID_id_tc26_cipher_gostr3412_2015_kuznyechik 1176 +#define OBJ_id_tc26_cipher_gostr3412_2015_kuznyechik OBJ_id_tc26_cipher,2L + +#define SN_id_tc26_cipher_gostr3412_2015_kuznyechik_ctracpkm "id-tc26-cipher-gostr3412-2015-kuznyechik-ctracpkm" +#define NID_id_tc26_cipher_gostr3412_2015_kuznyechik_ctracpkm 1177 +#define OBJ_id_tc26_cipher_gostr3412_2015_kuznyechik_ctracpkm OBJ_id_tc26_cipher_gostr3412_2015_kuznyechik,1L + +#define SN_id_tc26_cipher_gostr3412_2015_kuznyechik_ctracpkm_omac "id-tc26-cipher-gostr3412-2015-kuznyechik-ctracpkm-omac" +#define NID_id_tc26_cipher_gostr3412_2015_kuznyechik_ctracpkm_omac 1178 +#define OBJ_id_tc26_cipher_gostr3412_2015_kuznyechik_ctracpkm_omac OBJ_id_tc26_cipher_gostr3412_2015_kuznyechik,2L + +#define SN_id_tc26_agreement "id-tc26-agreement" +#define NID_id_tc26_agreement 991 +#define OBJ_id_tc26_agreement OBJ_id_tc26_algorithms,6L + +#define SN_id_tc26_agreement_gost_3410_2012_256 "id-tc26-agreement-gost-3410-2012-256" +#define NID_id_tc26_agreement_gost_3410_2012_256 992 +#define OBJ_id_tc26_agreement_gost_3410_2012_256 OBJ_id_tc26_agreement,1L + +#define SN_id_tc26_agreement_gost_3410_2012_512 "id-tc26-agreement-gost-3410-2012-512" +#define NID_id_tc26_agreement_gost_3410_2012_512 993 +#define OBJ_id_tc26_agreement_gost_3410_2012_512 OBJ_id_tc26_agreement,2L + +#define SN_id_tc26_wrap "id-tc26-wrap" +#define NID_id_tc26_wrap 1179 +#define OBJ_id_tc26_wrap OBJ_id_tc26_algorithms,7L + +#define SN_id_tc26_wrap_gostr3412_2015_magma "id-tc26-wrap-gostr3412-2015-magma" +#define NID_id_tc26_wrap_gostr3412_2015_magma 1180 +#define OBJ_id_tc26_wrap_gostr3412_2015_magma OBJ_id_tc26_wrap,1L + +#define SN_id_tc26_wrap_gostr3412_2015_magma_kexp15 "id-tc26-wrap-gostr3412-2015-magma-kexp15" +#define NID_id_tc26_wrap_gostr3412_2015_magma_kexp15 1181 +#define OBJ_id_tc26_wrap_gostr3412_2015_magma_kexp15 OBJ_id_tc26_wrap_gostr3412_2015_magma,1L + +#define SN_id_tc26_wrap_gostr3412_2015_kuznyechik "id-tc26-wrap-gostr3412-2015-kuznyechik" +#define NID_id_tc26_wrap_gostr3412_2015_kuznyechik 1182 +#define OBJ_id_tc26_wrap_gostr3412_2015_kuznyechik OBJ_id_tc26_wrap,2L + +#define SN_id_tc26_wrap_gostr3412_2015_kuznyechik_kexp15 "id-tc26-wrap-gostr3412-2015-kuznyechik-kexp15" +#define NID_id_tc26_wrap_gostr3412_2015_kuznyechik_kexp15 1183 +#define OBJ_id_tc26_wrap_gostr3412_2015_kuznyechik_kexp15 OBJ_id_tc26_wrap_gostr3412_2015_kuznyechik,1L + +#define SN_id_tc26_constants "id-tc26-constants" +#define NID_id_tc26_constants 994 +#define OBJ_id_tc26_constants OBJ_id_tc26,2L + +#define SN_id_tc26_sign_constants "id-tc26-sign-constants" +#define NID_id_tc26_sign_constants 995 +#define OBJ_id_tc26_sign_constants OBJ_id_tc26_constants,1L + +#define SN_id_tc26_gost_3410_2012_256_constants "id-tc26-gost-3410-2012-256-constants" +#define NID_id_tc26_gost_3410_2012_256_constants 1147 +#define OBJ_id_tc26_gost_3410_2012_256_constants OBJ_id_tc26_sign_constants,1L + +#define SN_id_tc26_gost_3410_2012_256_paramSetA "id-tc26-gost-3410-2012-256-paramSetA" +#define LN_id_tc26_gost_3410_2012_256_paramSetA "GOST R 34.10-2012 (256 bit) ParamSet A" +#define NID_id_tc26_gost_3410_2012_256_paramSetA 1148 +#define OBJ_id_tc26_gost_3410_2012_256_paramSetA OBJ_id_tc26_gost_3410_2012_256_constants,1L + +#define SN_id_tc26_gost_3410_2012_256_paramSetB "id-tc26-gost-3410-2012-256-paramSetB" +#define LN_id_tc26_gost_3410_2012_256_paramSetB "GOST R 34.10-2012 (256 bit) ParamSet B" +#define NID_id_tc26_gost_3410_2012_256_paramSetB 1184 +#define OBJ_id_tc26_gost_3410_2012_256_paramSetB OBJ_id_tc26_gost_3410_2012_256_constants,2L + +#define SN_id_tc26_gost_3410_2012_256_paramSetC "id-tc26-gost-3410-2012-256-paramSetC" +#define LN_id_tc26_gost_3410_2012_256_paramSetC "GOST R 34.10-2012 (256 bit) ParamSet C" +#define NID_id_tc26_gost_3410_2012_256_paramSetC 1185 +#define OBJ_id_tc26_gost_3410_2012_256_paramSetC OBJ_id_tc26_gost_3410_2012_256_constants,3L + +#define SN_id_tc26_gost_3410_2012_256_paramSetD "id-tc26-gost-3410-2012-256-paramSetD" +#define LN_id_tc26_gost_3410_2012_256_paramSetD "GOST R 34.10-2012 (256 bit) ParamSet D" +#define NID_id_tc26_gost_3410_2012_256_paramSetD 1186 +#define OBJ_id_tc26_gost_3410_2012_256_paramSetD OBJ_id_tc26_gost_3410_2012_256_constants,4L + +#define SN_id_tc26_gost_3410_2012_512_constants "id-tc26-gost-3410-2012-512-constants" +#define NID_id_tc26_gost_3410_2012_512_constants 996 +#define OBJ_id_tc26_gost_3410_2012_512_constants OBJ_id_tc26_sign_constants,2L + +#define SN_id_tc26_gost_3410_2012_512_paramSetTest "id-tc26-gost-3410-2012-512-paramSetTest" +#define LN_id_tc26_gost_3410_2012_512_paramSetTest "GOST R 34.10-2012 (512 bit) testing parameter set" +#define NID_id_tc26_gost_3410_2012_512_paramSetTest 997 +#define OBJ_id_tc26_gost_3410_2012_512_paramSetTest OBJ_id_tc26_gost_3410_2012_512_constants,0L + +#define SN_id_tc26_gost_3410_2012_512_paramSetA "id-tc26-gost-3410-2012-512-paramSetA" +#define LN_id_tc26_gost_3410_2012_512_paramSetA "GOST R 34.10-2012 (512 bit) ParamSet A" +#define NID_id_tc26_gost_3410_2012_512_paramSetA 998 +#define OBJ_id_tc26_gost_3410_2012_512_paramSetA OBJ_id_tc26_gost_3410_2012_512_constants,1L + +#define SN_id_tc26_gost_3410_2012_512_paramSetB "id-tc26-gost-3410-2012-512-paramSetB" +#define LN_id_tc26_gost_3410_2012_512_paramSetB "GOST R 34.10-2012 (512 bit) ParamSet B" +#define NID_id_tc26_gost_3410_2012_512_paramSetB 999 +#define OBJ_id_tc26_gost_3410_2012_512_paramSetB OBJ_id_tc26_gost_3410_2012_512_constants,2L + +#define SN_id_tc26_gost_3410_2012_512_paramSetC "id-tc26-gost-3410-2012-512-paramSetC" +#define LN_id_tc26_gost_3410_2012_512_paramSetC "GOST R 34.10-2012 (512 bit) ParamSet C" +#define NID_id_tc26_gost_3410_2012_512_paramSetC 1149 +#define OBJ_id_tc26_gost_3410_2012_512_paramSetC OBJ_id_tc26_gost_3410_2012_512_constants,3L + +#define SN_id_tc26_digest_constants "id-tc26-digest-constants" +#define NID_id_tc26_digest_constants 1000 +#define OBJ_id_tc26_digest_constants OBJ_id_tc26_constants,2L + +#define SN_id_tc26_cipher_constants "id-tc26-cipher-constants" +#define NID_id_tc26_cipher_constants 1001 +#define OBJ_id_tc26_cipher_constants OBJ_id_tc26_constants,5L + +#define SN_id_tc26_gost_28147_constants "id-tc26-gost-28147-constants" +#define NID_id_tc26_gost_28147_constants 1002 +#define OBJ_id_tc26_gost_28147_constants OBJ_id_tc26_cipher_constants,1L + +#define SN_id_tc26_gost_28147_param_Z "id-tc26-gost-28147-param-Z" +#define LN_id_tc26_gost_28147_param_Z "GOST 28147-89 TC26 parameter set" +#define NID_id_tc26_gost_28147_param_Z 1003 +#define OBJ_id_tc26_gost_28147_param_Z OBJ_id_tc26_gost_28147_constants,1L + +#define SN_INN "INN" +#define LN_INN "INN" +#define NID_INN 1004 +#define OBJ_INN OBJ_member_body,643L,3L,131L,1L,1L + +#define SN_OGRN "OGRN" +#define LN_OGRN "OGRN" +#define NID_OGRN 1005 +#define OBJ_OGRN OBJ_member_body,643L,100L,1L + +#define SN_SNILS "SNILS" +#define LN_SNILS "SNILS" +#define NID_SNILS 1006 +#define OBJ_SNILS OBJ_member_body,643L,100L,3L + +#define SN_subjectSignTool "subjectSignTool" +#define LN_subjectSignTool "Signing Tool of Subject" +#define NID_subjectSignTool 1007 +#define OBJ_subjectSignTool OBJ_member_body,643L,100L,111L + +#define SN_issuerSignTool "issuerSignTool" +#define LN_issuerSignTool "Signing Tool of Issuer" +#define NID_issuerSignTool 1008 +#define OBJ_issuerSignTool OBJ_member_body,643L,100L,112L + +#define SN_grasshopper_ecb "grasshopper-ecb" +#define NID_grasshopper_ecb 1012 + +#define SN_grasshopper_ctr "grasshopper-ctr" +#define NID_grasshopper_ctr 1013 + +#define SN_grasshopper_ofb "grasshopper-ofb" +#define NID_grasshopper_ofb 1014 + +#define SN_grasshopper_cbc "grasshopper-cbc" +#define NID_grasshopper_cbc 1015 + +#define SN_grasshopper_cfb "grasshopper-cfb" +#define NID_grasshopper_cfb 1016 + +#define SN_grasshopper_mac "grasshopper-mac" +#define NID_grasshopper_mac 1017 + +#define SN_magma_ecb "magma-ecb" +#define NID_magma_ecb 1187 + +#define SN_magma_ctr "magma-ctr" +#define NID_magma_ctr 1188 + +#define SN_magma_ofb "magma-ofb" +#define NID_magma_ofb 1189 + +#define SN_magma_cbc "magma-cbc" +#define NID_magma_cbc 1190 + +#define SN_magma_cfb "magma-cfb" +#define NID_magma_cfb 1191 + +#define SN_magma_mac "magma-mac" +#define NID_magma_mac 1192 + +#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_128_gcm "CAMELLIA-128-GCM" +#define LN_camellia_128_gcm "camellia-128-gcm" +#define NID_camellia_128_gcm 961 +#define OBJ_camellia_128_gcm OBJ_camellia,6L + +#define SN_camellia_128_ccm "CAMELLIA-128-CCM" +#define LN_camellia_128_ccm "camellia-128-ccm" +#define NID_camellia_128_ccm 962 +#define OBJ_camellia_128_ccm OBJ_camellia,7L + +#define SN_camellia_128_ctr "CAMELLIA-128-CTR" +#define LN_camellia_128_ctr "camellia-128-ctr" +#define NID_camellia_128_ctr 963 +#define OBJ_camellia_128_ctr OBJ_camellia,9L + +#define SN_camellia_128_cmac "CAMELLIA-128-CMAC" +#define LN_camellia_128_cmac "camellia-128-cmac" +#define NID_camellia_128_cmac 964 +#define OBJ_camellia_128_cmac OBJ_camellia,10L + +#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_192_gcm "CAMELLIA-192-GCM" +#define LN_camellia_192_gcm "camellia-192-gcm" +#define NID_camellia_192_gcm 965 +#define OBJ_camellia_192_gcm OBJ_camellia,26L + +#define SN_camellia_192_ccm "CAMELLIA-192-CCM" +#define LN_camellia_192_ccm "camellia-192-ccm" +#define NID_camellia_192_ccm 966 +#define OBJ_camellia_192_ccm OBJ_camellia,27L + +#define SN_camellia_192_ctr "CAMELLIA-192-CTR" +#define LN_camellia_192_ctr "camellia-192-ctr" +#define NID_camellia_192_ctr 967 +#define OBJ_camellia_192_ctr OBJ_camellia,29L + +#define SN_camellia_192_cmac "CAMELLIA-192-CMAC" +#define LN_camellia_192_cmac "camellia-192-cmac" +#define NID_camellia_192_cmac 968 +#define OBJ_camellia_192_cmac OBJ_camellia,30L + +#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_256_gcm "CAMELLIA-256-GCM" +#define LN_camellia_256_gcm "camellia-256-gcm" +#define NID_camellia_256_gcm 969 +#define OBJ_camellia_256_gcm OBJ_camellia,46L + +#define SN_camellia_256_ccm "CAMELLIA-256-CCM" +#define LN_camellia_256_ccm "camellia-256-ccm" +#define NID_camellia_256_ccm 970 +#define OBJ_camellia_256_ccm OBJ_camellia,47L + +#define SN_camellia_256_ctr "CAMELLIA-256-CTR" +#define LN_camellia_256_ctr "camellia-256-ctr" +#define NID_camellia_256_ctr 971 +#define OBJ_camellia_256_ctr OBJ_camellia,49L + +#define SN_camellia_256_cmac "CAMELLIA-256-CMAC" +#define LN_camellia_256_cmac "camellia-256-cmac" +#define NID_camellia_256_cmac 972 +#define OBJ_camellia_256_cmac OBJ_camellia,50L + +#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 OBJ_aria 1L,2L,410L,200046L,1L,1L + +#define SN_aria_128_ecb "ARIA-128-ECB" +#define LN_aria_128_ecb "aria-128-ecb" +#define NID_aria_128_ecb 1065 +#define OBJ_aria_128_ecb OBJ_aria,1L + +#define SN_aria_128_cbc "ARIA-128-CBC" +#define LN_aria_128_cbc "aria-128-cbc" +#define NID_aria_128_cbc 1066 +#define OBJ_aria_128_cbc OBJ_aria,2L + +#define SN_aria_128_cfb128 "ARIA-128-CFB" +#define LN_aria_128_cfb128 "aria-128-cfb" +#define NID_aria_128_cfb128 1067 +#define OBJ_aria_128_cfb128 OBJ_aria,3L + +#define SN_aria_128_ofb128 "ARIA-128-OFB" +#define LN_aria_128_ofb128 "aria-128-ofb" +#define NID_aria_128_ofb128 1068 +#define OBJ_aria_128_ofb128 OBJ_aria,4L + +#define SN_aria_128_ctr "ARIA-128-CTR" +#define LN_aria_128_ctr "aria-128-ctr" +#define NID_aria_128_ctr 1069 +#define OBJ_aria_128_ctr OBJ_aria,5L + +#define SN_aria_192_ecb "ARIA-192-ECB" +#define LN_aria_192_ecb "aria-192-ecb" +#define NID_aria_192_ecb 1070 +#define OBJ_aria_192_ecb OBJ_aria,6L + +#define SN_aria_192_cbc "ARIA-192-CBC" +#define LN_aria_192_cbc "aria-192-cbc" +#define NID_aria_192_cbc 1071 +#define OBJ_aria_192_cbc OBJ_aria,7L + +#define SN_aria_192_cfb128 "ARIA-192-CFB" +#define LN_aria_192_cfb128 "aria-192-cfb" +#define NID_aria_192_cfb128 1072 +#define OBJ_aria_192_cfb128 OBJ_aria,8L + +#define SN_aria_192_ofb128 "ARIA-192-OFB" +#define LN_aria_192_ofb128 "aria-192-ofb" +#define NID_aria_192_ofb128 1073 +#define OBJ_aria_192_ofb128 OBJ_aria,9L + +#define SN_aria_192_ctr "ARIA-192-CTR" +#define LN_aria_192_ctr "aria-192-ctr" +#define NID_aria_192_ctr 1074 +#define OBJ_aria_192_ctr OBJ_aria,10L + +#define SN_aria_256_ecb "ARIA-256-ECB" +#define LN_aria_256_ecb "aria-256-ecb" +#define NID_aria_256_ecb 1075 +#define OBJ_aria_256_ecb OBJ_aria,11L + +#define SN_aria_256_cbc "ARIA-256-CBC" +#define LN_aria_256_cbc "aria-256-cbc" +#define NID_aria_256_cbc 1076 +#define OBJ_aria_256_cbc OBJ_aria,12L + +#define SN_aria_256_cfb128 "ARIA-256-CFB" +#define LN_aria_256_cfb128 "aria-256-cfb" +#define NID_aria_256_cfb128 1077 +#define OBJ_aria_256_cfb128 OBJ_aria,13L + +#define SN_aria_256_ofb128 "ARIA-256-OFB" +#define LN_aria_256_ofb128 "aria-256-ofb" +#define NID_aria_256_ofb128 1078 +#define OBJ_aria_256_ofb128 OBJ_aria,14L + +#define SN_aria_256_ctr "ARIA-256-CTR" +#define LN_aria_256_ctr "aria-256-ctr" +#define NID_aria_256_ctr 1079 +#define OBJ_aria_256_ctr OBJ_aria,15L + +#define SN_aria_128_cfb1 "ARIA-128-CFB1" +#define LN_aria_128_cfb1 "aria-128-cfb1" +#define NID_aria_128_cfb1 1080 + +#define SN_aria_192_cfb1 "ARIA-192-CFB1" +#define LN_aria_192_cfb1 "aria-192-cfb1" +#define NID_aria_192_cfb1 1081 + +#define SN_aria_256_cfb1 "ARIA-256-CFB1" +#define LN_aria_256_cfb1 "aria-256-cfb1" +#define NID_aria_256_cfb1 1082 + +#define SN_aria_128_cfb8 "ARIA-128-CFB8" +#define LN_aria_128_cfb8 "aria-128-cfb8" +#define NID_aria_128_cfb8 1083 + +#define SN_aria_192_cfb8 "ARIA-192-CFB8" +#define LN_aria_192_cfb8 "aria-192-cfb8" +#define NID_aria_192_cfb8 1084 + +#define SN_aria_256_cfb8 "ARIA-256-CFB8" +#define LN_aria_256_cfb8 "aria-256-cfb8" +#define NID_aria_256_cfb8 1085 + +#define SN_aria_128_ccm "ARIA-128-CCM" +#define LN_aria_128_ccm "aria-128-ccm" +#define NID_aria_128_ccm 1120 +#define OBJ_aria_128_ccm OBJ_aria,37L + +#define SN_aria_192_ccm "ARIA-192-CCM" +#define LN_aria_192_ccm "aria-192-ccm" +#define NID_aria_192_ccm 1121 +#define OBJ_aria_192_ccm OBJ_aria,38L + +#define SN_aria_256_ccm "ARIA-256-CCM" +#define LN_aria_256_ccm "aria-256-ccm" +#define NID_aria_256_ccm 1122 +#define OBJ_aria_256_ccm OBJ_aria,39L + +#define SN_aria_128_gcm "ARIA-128-GCM" +#define LN_aria_128_gcm "aria-128-gcm" +#define NID_aria_128_gcm 1123 +#define OBJ_aria_128_gcm OBJ_aria,34L + +#define SN_aria_192_gcm "ARIA-192-GCM" +#define LN_aria_192_gcm "aria-192-gcm" +#define NID_aria_192_gcm 1124 +#define OBJ_aria_192_gcm OBJ_aria,35L + +#define SN_aria_256_gcm "ARIA-256-GCM" +#define LN_aria_256_gcm "aria-256-gcm" +#define NID_aria_256_gcm 1125 +#define OBJ_aria_256_gcm OBJ_aria,36L + +#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_sm4_ecb "SM4-ECB" +#define LN_sm4_ecb "sm4-ecb" +#define NID_sm4_ecb 1133 +#define OBJ_sm4_ecb OBJ_sm_scheme,104L,1L + +#define SN_sm4_cbc "SM4-CBC" +#define LN_sm4_cbc "sm4-cbc" +#define NID_sm4_cbc 1134 +#define OBJ_sm4_cbc OBJ_sm_scheme,104L,2L + +#define SN_sm4_ofb128 "SM4-OFB" +#define LN_sm4_ofb128 "sm4-ofb" +#define NID_sm4_ofb128 1135 +#define OBJ_sm4_ofb128 OBJ_sm_scheme,104L,3L + +#define SN_sm4_cfb128 "SM4-CFB" +#define LN_sm4_cfb128 "sm4-cfb" +#define NID_sm4_cfb128 1137 +#define OBJ_sm4_cfb128 OBJ_sm_scheme,104L,4L + +#define SN_sm4_cfb1 "SM4-CFB1" +#define LN_sm4_cfb1 "sm4-cfb1" +#define NID_sm4_cfb1 1136 +#define OBJ_sm4_cfb1 OBJ_sm_scheme,104L,5L + +#define SN_sm4_cfb8 "SM4-CFB8" +#define LN_sm4_cfb8 "sm4-cfb8" +#define NID_sm4_cfb8 1138 +#define OBJ_sm4_cfb8 OBJ_sm_scheme,104L,6L + +#define SN_sm4_ctr "SM4-CTR" +#define LN_sm4_ctr "sm4-ctr" +#define NID_sm4_ctr 1139 +#define OBJ_sm4_ctr OBJ_sm_scheme,104L,7L + +#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_chacha20_poly1305 "ChaCha20-Poly1305" +#define LN_chacha20_poly1305 "chacha20-poly1305" +#define NID_chacha20_poly1305 1018 + +#define SN_chacha20 "ChaCha20" +#define LN_chacha20 "chacha20" +#define NID_chacha20 1019 + +#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 + +#define SN_id_scrypt "id-scrypt" +#define LN_id_scrypt "scrypt" +#define NID_id_scrypt 973 +#define OBJ_id_scrypt 1L,3L,6L,1L,4L,1L,11591L,4L,11L + +#define SN_tls1_prf "TLS1-PRF" +#define LN_tls1_prf "tls1-prf" +#define NID_tls1_prf 1021 + +#define SN_hkdf "HKDF" +#define LN_hkdf "hkdf" +#define NID_hkdf 1036 + +#define SN_id_pkinit "id-pkinit" +#define NID_id_pkinit 1031 +#define OBJ_id_pkinit 1L,3L,6L,1L,5L,2L,3L + +#define SN_pkInitClientAuth "pkInitClientAuth" +#define LN_pkInitClientAuth "PKINIT Client Auth" +#define NID_pkInitClientAuth 1032 +#define OBJ_pkInitClientAuth OBJ_id_pkinit,4L + +#define SN_pkInitKDC "pkInitKDC" +#define LN_pkInitKDC "Signing KDC Response" +#define NID_pkInitKDC 1033 +#define OBJ_pkInitKDC OBJ_id_pkinit,5L + +#define SN_X25519 "X25519" +#define NID_X25519 1034 +#define OBJ_X25519 1L,3L,101L,110L + +#define SN_X448 "X448" +#define NID_X448 1035 +#define OBJ_X448 1L,3L,101L,111L + +#define SN_ED25519 "ED25519" +#define NID_ED25519 1087 +#define OBJ_ED25519 1L,3L,101L,112L + +#define SN_ED448 "ED448" +#define NID_ED448 1088 +#define OBJ_ED448 1L,3L,101L,113L + +#define SN_kx_rsa "KxRSA" +#define LN_kx_rsa "kx-rsa" +#define NID_kx_rsa 1037 + +#define SN_kx_ecdhe "KxECDHE" +#define LN_kx_ecdhe "kx-ecdhe" +#define NID_kx_ecdhe 1038 + +#define SN_kx_dhe "KxDHE" +#define LN_kx_dhe "kx-dhe" +#define NID_kx_dhe 1039 + +#define SN_kx_ecdhe_psk "KxECDHE-PSK" +#define LN_kx_ecdhe_psk "kx-ecdhe-psk" +#define NID_kx_ecdhe_psk 1040 + +#define SN_kx_dhe_psk "KxDHE-PSK" +#define LN_kx_dhe_psk "kx-dhe-psk" +#define NID_kx_dhe_psk 1041 + +#define SN_kx_rsa_psk "KxRSA_PSK" +#define LN_kx_rsa_psk "kx-rsa-psk" +#define NID_kx_rsa_psk 1042 + +#define SN_kx_psk "KxPSK" +#define LN_kx_psk "kx-psk" +#define NID_kx_psk 1043 + +#define SN_kx_srp "KxSRP" +#define LN_kx_srp "kx-srp" +#define NID_kx_srp 1044 + +#define SN_kx_gost "KxGOST" +#define LN_kx_gost "kx-gost" +#define NID_kx_gost 1045 + +#define SN_kx_any "KxANY" +#define LN_kx_any "kx-any" +#define NID_kx_any 1063 + +#define SN_auth_rsa "AuthRSA" +#define LN_auth_rsa "auth-rsa" +#define NID_auth_rsa 1046 + +#define SN_auth_ecdsa "AuthECDSA" +#define LN_auth_ecdsa "auth-ecdsa" +#define NID_auth_ecdsa 1047 + +#define SN_auth_psk "AuthPSK" +#define LN_auth_psk "auth-psk" +#define NID_auth_psk 1048 + +#define SN_auth_dss "AuthDSS" +#define LN_auth_dss "auth-dss" +#define NID_auth_dss 1049 + +#define SN_auth_gost01 "AuthGOST01" +#define LN_auth_gost01 "auth-gost01" +#define NID_auth_gost01 1050 + +#define SN_auth_gost12 "AuthGOST12" +#define LN_auth_gost12 "auth-gost12" +#define NID_auth_gost12 1051 + +#define SN_auth_srp "AuthSRP" +#define LN_auth_srp "auth-srp" +#define NID_auth_srp 1052 + +#define SN_auth_null "AuthNULL" +#define LN_auth_null "auth-null" +#define NID_auth_null 1053 + +#define SN_auth_any "AuthANY" +#define LN_auth_any "auth-any" +#define NID_auth_any 1064 + +#define SN_poly1305 "Poly1305" +#define LN_poly1305 "poly1305" +#define NID_poly1305 1061 + +#define SN_siphash "SipHash" +#define LN_siphash "siphash" +#define NID_siphash 1062 + +#define SN_ffdhe2048 "ffdhe2048" +#define NID_ffdhe2048 1126 + +#define SN_ffdhe3072 "ffdhe3072" +#define NID_ffdhe3072 1127 + +#define SN_ffdhe4096 "ffdhe4096" +#define NID_ffdhe4096 1128 + +#define SN_ffdhe6144 "ffdhe6144" +#define NID_ffdhe6144 1129 + +#define SN_ffdhe8192 "ffdhe8192" +#define NID_ffdhe8192 1130 + +#define SN_ISO_UA "ISO-UA" +#define NID_ISO_UA 1150 +#define OBJ_ISO_UA OBJ_member_body,804L + +#define SN_ua_pki "ua-pki" +#define NID_ua_pki 1151 +#define OBJ_ua_pki OBJ_ISO_UA,2L,1L,1L,1L + +#define SN_dstu28147 "dstu28147" +#define LN_dstu28147 "DSTU Gost 28147-2009" +#define NID_dstu28147 1152 +#define OBJ_dstu28147 OBJ_ua_pki,1L,1L,1L + +#define SN_dstu28147_ofb "dstu28147-ofb" +#define LN_dstu28147_ofb "DSTU Gost 28147-2009 OFB mode" +#define NID_dstu28147_ofb 1153 +#define OBJ_dstu28147_ofb OBJ_dstu28147,2L + +#define SN_dstu28147_cfb "dstu28147-cfb" +#define LN_dstu28147_cfb "DSTU Gost 28147-2009 CFB mode" +#define NID_dstu28147_cfb 1154 +#define OBJ_dstu28147_cfb OBJ_dstu28147,3L + +#define SN_dstu28147_wrap "dstu28147-wrap" +#define LN_dstu28147_wrap "DSTU Gost 28147-2009 key wrap" +#define NID_dstu28147_wrap 1155 +#define OBJ_dstu28147_wrap OBJ_dstu28147,5L + +#define SN_hmacWithDstu34311 "hmacWithDstu34311" +#define LN_hmacWithDstu34311 "HMAC DSTU Gost 34311-95" +#define NID_hmacWithDstu34311 1156 +#define OBJ_hmacWithDstu34311 OBJ_ua_pki,1L,1L,2L + +#define SN_dstu34311 "dstu34311" +#define LN_dstu34311 "DSTU Gost 34311-95" +#define NID_dstu34311 1157 +#define OBJ_dstu34311 OBJ_ua_pki,1L,2L,1L + +#define SN_dstu4145le "dstu4145le" +#define LN_dstu4145le "DSTU 4145-2002 little endian" +#define NID_dstu4145le 1158 +#define OBJ_dstu4145le OBJ_ua_pki,1L,3L,1L,1L + +#define SN_dstu4145be "dstu4145be" +#define LN_dstu4145be "DSTU 4145-2002 big endian" +#define NID_dstu4145be 1159 +#define OBJ_dstu4145be OBJ_dstu4145le,1L,1L + +#define SN_uacurve0 "uacurve0" +#define LN_uacurve0 "DSTU curve 0" +#define NID_uacurve0 1160 +#define OBJ_uacurve0 OBJ_dstu4145le,2L,0L + +#define SN_uacurve1 "uacurve1" +#define LN_uacurve1 "DSTU curve 1" +#define NID_uacurve1 1161 +#define OBJ_uacurve1 OBJ_dstu4145le,2L,1L + +#define SN_uacurve2 "uacurve2" +#define LN_uacurve2 "DSTU curve 2" +#define NID_uacurve2 1162 +#define OBJ_uacurve2 OBJ_dstu4145le,2L,2L + +#define SN_uacurve3 "uacurve3" +#define LN_uacurve3 "DSTU curve 3" +#define NID_uacurve3 1163 +#define OBJ_uacurve3 OBJ_dstu4145le,2L,3L + +#define SN_uacurve4 "uacurve4" +#define LN_uacurve4 "DSTU curve 4" +#define NID_uacurve4 1164 +#define OBJ_uacurve4 OBJ_dstu4145le,2L,4L + +#define SN_uacurve5 "uacurve5" +#define LN_uacurve5 "DSTU curve 5" +#define NID_uacurve5 1165 +#define OBJ_uacurve5 OBJ_dstu4145le,2L,5L + +#define SN_uacurve6 "uacurve6" +#define LN_uacurve6 "DSTU curve 6" +#define NID_uacurve6 1166 +#define OBJ_uacurve6 OBJ_dstu4145le,2L,6L + +#define SN_uacurve7 "uacurve7" +#define LN_uacurve7 "DSTU curve 7" +#define NID_uacurve7 1167 +#define OBJ_uacurve7 OBJ_dstu4145le,2L,7L + +#define SN_uacurve8 "uacurve8" +#define LN_uacurve8 "DSTU curve 8" +#define NID_uacurve8 1168 +#define OBJ_uacurve8 OBJ_dstu4145le,2L,8L + +#define SN_uacurve9 "uacurve9" +#define LN_uacurve9 "DSTU curve 9" +#define NID_uacurve9 1169 +#define OBJ_uacurve9 OBJ_dstu4145le,2L,9L diff --git a/plugin/openssl/include/openssl/objects.h b/plugin/openssl/include/openssl/objects.h new file mode 100644 index 000000000..5e8b5762f --- /dev/null +++ b/plugin/openssl/include/openssl/objects.h @@ -0,0 +1,175 @@ +/* + * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_OBJECTS_H +# define HEADER_OBJECTS_H + +# include +# include +# 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 assignment 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, declare 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); +#if OPENSSL_API_COMPAT < 0x10100000L +# define OBJ_cleanup() while(0) continue +#endif +int OBJ_create_objects(BIO *in); + +size_t OBJ_length(const ASN1_OBJECT *obj); +const unsigned char *OBJ_get0_data(const ASN1_OBJECT *obj); + +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); + + +# ifdef __cplusplus +} +# endif +#endif diff --git a/plugin/openssl/include/openssl/objectserr.h b/plugin/openssl/include/openssl/objectserr.h new file mode 100644 index 000000000..02e166f1a --- /dev/null +++ b/plugin/openssl/include/openssl/objectserr.h @@ -0,0 +1,42 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_OBJERR_H +# define HEADER_OBJERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_OBJ_strings(void); + +/* + * OBJ function codes. + */ +# define OBJ_F_OBJ_ADD_OBJECT 105 +# define OBJ_F_OBJ_ADD_SIGID 107 +# 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 +# define OBJ_F_OBJ_TXT2OBJ 108 + +/* + * OBJ reason codes. + */ +# define OBJ_R_OID_EXISTS 102 +# define OBJ_R_UNKNOWN_NID 101 + +#endif diff --git a/plugin/openssl/include/openssl/ocsp.h b/plugin/openssl/include/openssl/ocsp.h new file mode 100644 index 000000000..4d759a49d --- /dev/null +++ b/plugin/openssl/include/openssl/ocsp.h @@ -0,0 +1,352 @@ +/* + * Copyright 2000-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_OCSP_H +# define HEADER_OCSP_H + +#include + +/* + * These definitions are outside the OPENSSL_NO_OCSP guard because although for + * historical reasons they have OCSP_* names, they can actually be used + * independently of OCSP. E.g. see RFC5280 + */ +/*- + * 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 + + +# ifndef OPENSSL_NO_OCSP + +# include +# 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 + +typedef struct ocsp_cert_id_st OCSP_CERTID; + +DEFINE_STACK_OF(OCSP_CERTID) + +typedef struct ocsp_one_request_st OCSP_ONEREQ; + +DEFINE_STACK_OF(OCSP_ONEREQ) + +typedef struct ocsp_req_info_st OCSP_REQINFO; +typedef struct ocsp_signature_st OCSP_SIGNATURE; +typedef struct ocsp_request_st OCSP_REQUEST; + +# 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 + +typedef struct ocsp_resp_bytes_st OCSP_RESPBYTES; + +# define V_OCSP_RESPID_NAME 0 +# define V_OCSP_RESPID_KEY 1 + +DEFINE_STACK_OF(OCSP_RESPID) + +typedef struct ocsp_revoked_info_st OCSP_REVOKEDINFO; + +# define V_OCSP_CERTSTATUS_GOOD 0 +# define V_OCSP_CERTSTATUS_REVOKED 1 +# define V_OCSP_CERTSTATUS_UNKNOWN 2 + +typedef struct ocsp_cert_status_st OCSP_CERTSTATUS; +typedef struct ocsp_single_response_st OCSP_SINGLERESP; + +DEFINE_STACK_OF(OCSP_SINGLERESP) + +typedef struct ocsp_response_data_st OCSP_RESPDATA; + +typedef struct ocsp_basic_response_st OCSP_BASICRESP; + +typedef struct ocsp_crl_id_st OCSP_CRLID; +typedef struct ocsp_service_locator_st 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 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_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, const X509 *subject, + const X509 *issuer); + +OCSP_CERTID *OCSP_cert_id_new(const EVP_MD *dgst, + const X509_NAME *issuerName, + const ASN1_BIT_STRING *issuerKey, + const 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); + +const ASN1_OCTET_STRING *OCSP_resp_get0_signature(const OCSP_BASICRESP *bs); +const X509_ALGOR *OCSP_resp_get0_tbs_sigalg(const OCSP_BASICRESP *bs); +const OCSP_RESPDATA *OCSP_resp_get0_respdata(const OCSP_BASICRESP *bs); +int OCSP_resp_get0_signer(OCSP_BASICRESP *bs, X509 **signer, + STACK_OF(X509) *extra_certs); + +int OCSP_resp_count(OCSP_BASICRESP *bs); +OCSP_SINGLERESP *OCSP_resp_get0(OCSP_BASICRESP *bs, int idx); +const ASN1_GENERALIZEDTIME *OCSP_resp_get0_produced_at(const OCSP_BASICRESP* bs); +const STACK_OF(X509) *OCSP_resp_get0_certs(const OCSP_BASICRESP *bs); +int OCSP_resp_get0_id(const OCSP_BASICRESP *bs, + const ASN1_OCTET_STRING **pid, + const X509_NAME **pname); +int OCSP_resp_get1_id(const OCSP_BASICRESP *bs, + ASN1_OCTET_STRING **pid, + X509_NAME **pname); + +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(const OCSP_CERTID *a, const OCSP_CERTID *b); +int OCSP_id_cmp(const OCSP_CERTID *a, const 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); +int OCSP_basic_sign_ctx(OCSP_BASICRESP *brsp, + X509 *signer, EVP_MD_CTX *ctx, + STACK_OF(X509) *certs, unsigned long flags); +int OCSP_RESPID_set_by_name(OCSP_RESPID *respid, X509 *cert); +int OCSP_RESPID_set_by_key(OCSP_RESPID *respid, X509 *cert); +int OCSP_RESPID_match(OCSP_RESPID *respid, X509 *cert); + +X509_EXTENSION *OCSP_crlID_new(const 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, const 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, const 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, const 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, const 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, const 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); +const OCSP_CERTID *OCSP_SINGLERESP_get0_id(const OCSP_SINGLERESP *x); + +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); + + +# ifdef __cplusplus +} +# endif +# endif +#endif diff --git a/plugin/openssl/include/openssl/ocsperr.h b/plugin/openssl/include/openssl/ocsperr.h new file mode 100644 index 000000000..8dd9e01a1 --- /dev/null +++ b/plugin/openssl/include/openssl/ocsperr.h @@ -0,0 +1,78 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_OCSPERR_H +# define HEADER_OCSPERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# include + +# ifndef OPENSSL_NO_OCSP + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_OCSP_strings(void); + +/* + * OCSP function codes. + */ +# 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_SIGN_CTX 119 +# 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_PARSE_HTTP_LINE1 118 + +/* + * OCSP reason codes. + */ +# 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_RESPONSE_DATA 108 +# define OCSP_R_NO_REVOKED_TIME 109 +# define OCSP_R_NO_SIGNER_KEY 130 +# 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_RESPONSE_ERROR 114 +# define OCSP_R_SERVER_RESPONSE_PARSE_ERROR 115 +# 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 + +# endif +#endif diff --git a/plugin/openssl/include/openssl/opensslconf.h b/plugin/openssl/include/openssl/opensslconf.h new file mode 100644 index 000000000..d8572be04 --- /dev/null +++ b/plugin/openssl/include/openssl/opensslconf.h @@ -0,0 +1,203 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from include/openssl/opensslconf.h.in + * + * Copyright 2016-2020 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef OPENSSL_ALGORITHM_DEFINES +# error OPENSSL_ALGORITHM_DEFINES no longer supported +#endif + +/* + * OpenSSL was configured with the following options: + */ + +#ifndef OPENSSL_SYS_MACOSX +# define OPENSSL_SYS_MACOSX 1 +#endif +#ifndef OPENSSL_NO_MD2 +# define OPENSSL_NO_MD2 +#endif +#ifndef OPENSSL_NO_RC5 +# define OPENSSL_NO_RC5 +#endif +#ifndef OPENSSL_THREADS +# define OPENSSL_THREADS +#endif +#ifndef OPENSSL_RAND_SEED_OS +# define OPENSSL_RAND_SEED_OS +#endif +#ifndef OPENSSL_NO_AFALGENG +# define OPENSSL_NO_AFALGENG +#endif +#ifndef OPENSSL_NO_ASAN +# define OPENSSL_NO_ASAN +#endif +#ifndef OPENSSL_NO_CRYPTO_MDEBUG +# define OPENSSL_NO_CRYPTO_MDEBUG +#endif +#ifndef OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE +# define OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE +#endif +#ifndef OPENSSL_NO_DEVCRYPTOENG +# define OPENSSL_NO_DEVCRYPTOENG +#endif +#ifndef OPENSSL_NO_EC_NISTP_64_GCC_128 +# define OPENSSL_NO_EC_NISTP_64_GCC_128 +#endif +#ifndef OPENSSL_NO_EGD +# define OPENSSL_NO_EGD +#endif +#ifndef OPENSSL_NO_EXTERNAL_TESTS +# define OPENSSL_NO_EXTERNAL_TESTS +#endif +#ifndef OPENSSL_NO_FUZZ_AFL +# define OPENSSL_NO_FUZZ_AFL +#endif +#ifndef OPENSSL_NO_FUZZ_LIBFUZZER +# define OPENSSL_NO_FUZZ_LIBFUZZER +#endif +#ifndef OPENSSL_NO_HEARTBEATS +# define OPENSSL_NO_HEARTBEATS +#endif +#ifndef OPENSSL_NO_MSAN +# define OPENSSL_NO_MSAN +#endif +#ifndef OPENSSL_NO_SCTP +# define OPENSSL_NO_SCTP +#endif +#ifndef OPENSSL_NO_SSL_TRACE +# define OPENSSL_NO_SSL_TRACE +#endif +#ifndef OPENSSL_NO_SSL3 +# define OPENSSL_NO_SSL3 +#endif +#ifndef OPENSSL_NO_SSL3_METHOD +# define OPENSSL_NO_SSL3_METHOD +#endif +#ifndef OPENSSL_NO_UBSAN +# define OPENSSL_NO_UBSAN +#endif +#ifndef OPENSSL_NO_UNIT_TEST +# define OPENSSL_NO_UNIT_TEST +#endif +#ifndef OPENSSL_NO_WEAK_SSL_CIPHERS +# define OPENSSL_NO_WEAK_SSL_CIPHERS +#endif +#ifndef OPENSSL_NO_STATIC_ENGINE +# define OPENSSL_NO_STATIC_ENGINE +#endif + + +/* + * Sometimes OPENSSSL_NO_xxx ends up with an empty file and some compilers + * don't like that. This will hopefully silence them. + */ +#define NON_EMPTY_TRANSLATION_UNIT static void *dummy = &dummy; + +/* + * Applications should use -DOPENSSL_API_COMPAT= to suppress the + * declarations of functions deprecated in or before . Otherwise, they + * still won't see them if the library has been built to disable deprecated + * functions. + */ +#ifndef DECLARE_DEPRECATED +# define DECLARE_DEPRECATED(f) f; +# ifdef __GNUC__ +# if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ > 0) +# undef DECLARE_DEPRECATED +# define DECLARE_DEPRECATED(f) f __attribute__ ((deprecated)); +# endif +# elif defined(__SUNPRO_C) +# if (__SUNPRO_C >= 0x5130) +# undef DECLARE_DEPRECATED +# define DECLARE_DEPRECATED(f) f __attribute__ ((deprecated)); +# endif +# endif +#endif + +#ifndef OPENSSL_FILE +# ifdef OPENSSL_NO_FILENAMES +# define OPENSSL_FILE "" +# define OPENSSL_LINE 0 +# else +# define OPENSSL_FILE __FILE__ +# define OPENSSL_LINE __LINE__ +# endif +#endif + +#ifndef OPENSSL_MIN_API +# define OPENSSL_MIN_API 0 +#endif + +#if !defined(OPENSSL_API_COMPAT) || OPENSSL_API_COMPAT < OPENSSL_MIN_API +# undef OPENSSL_API_COMPAT +# define OPENSSL_API_COMPAT OPENSSL_MIN_API +#endif + +/* + * Do not deprecate things to be deprecated in version 1.2.0 before the + * OpenSSL version number matches. + */ +#if OPENSSL_VERSION_NUMBER < 0x10200000L +# define DEPRECATEDIN_1_2_0(f) f; +#elif OPENSSL_API_COMPAT < 0x10200000L +# define DEPRECATEDIN_1_2_0(f) DECLARE_DEPRECATED(f) +#else +# define DEPRECATEDIN_1_2_0(f) +#endif + +#if OPENSSL_API_COMPAT < 0x10100000L +# define DEPRECATEDIN_1_1_0(f) DECLARE_DEPRECATED(f) +#else +# define DEPRECATEDIN_1_1_0(f) +#endif + +#if OPENSSL_API_COMPAT < 0x10000000L +# define DEPRECATEDIN_1_0_0(f) DECLARE_DEPRECATED(f) +#else +# define DEPRECATEDIN_1_0_0(f) +#endif + +#if OPENSSL_API_COMPAT < 0x00908000L +# define DEPRECATEDIN_0_9_8(f) DECLARE_DEPRECATED(f) +#else +# define DEPRECATEDIN_0_9_8(f) +#endif + +/* Generate 80386 code? */ +#undef I386_ONLY + +#undef OPENSSL_UNISTD +#define OPENSSL_UNISTD + +#undef OPENSSL_EXPORT_VAR_AS_FUNCTION + +/* + * The following are cipher-specific, but are part of the public API. + */ +#if !defined(OPENSSL_SYS_UEFI) +# undef BN_LLONG +/* Only one for the following should be defined */ +# define SIXTY_FOUR_BIT_LONG +# undef SIXTY_FOUR_BIT +# undef THIRTY_TWO_BIT +#endif + +#define RC4_INT unsigned int + +#ifdef __cplusplus +} +#endif diff --git a/plugin/openssl/include/openssl/opensslv.h b/plugin/openssl/include/openssl/opensslv.h new file mode 100644 index 000000000..0dc99eccd --- /dev/null +++ b/plugin/openssl/include/openssl/opensslv.h @@ -0,0 +1,101 @@ +/* + * Copyright 1999-2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#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 0x1010116fL +# define OPENSSL_VERSION_TEXT "OpenSSL 1.1.1v 1 Aug 2023" + +/*- + * 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 version 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.1" + + +#ifdef __cplusplus +} +#endif +#endif /* HEADER_OPENSSLV_H */ diff --git a/plugin/openssl/include/openssl/ossl_typ.h b/plugin/openssl/include/openssl/ossl_typ.h new file mode 100644 index 000000000..e0edfaaf4 --- /dev/null +++ b/plugin/openssl/include/openssl/ossl_typ.h @@ -0,0 +1,197 @@ +/* + * Copyright 2001-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_OPENSSL_TYPES_H +# define HEADER_OPENSSL_TYPES_H + +#include + +#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; +typedef struct asn1_sctx_st ASN1_SCTX; + +# ifdef _WIN32 +# undef X509_NAME +# undef X509_EXTENSIONS +# undef PKCS7_ISSUER_AND_SERIAL +# undef PKCS7_SIGNER_INFO +# undef OCSP_REQUEST +# undef OCSP_RESPONSE +# endif + +# ifdef BIGNUM +# undef BIGNUM +# endif +struct dane_st; +typedef struct bio_st BIO; +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 evp_md_st EVP_MD; +typedef struct evp_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 evp_Encode_Ctx_st EVP_ENCODE_CTX; + +typedef struct hmac_ctx_st HMAC_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 rsa_pss_params_st RSA_PSS_PARAMS; + +typedef struct ec_key_st EC_KEY; +typedef struct ec_key_method_st EC_KEY_METHOD; + +typedef struct rand_meth_st RAND_METHOD; +typedef struct rand_drbg_st RAND_DRBG; + +typedef struct ssl_dane_st SSL_DANE; +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 x509_object_st X509_OBJECT; +typedef struct x509_lookup_st X509_LOOKUP; +typedef struct x509_lookup_method_st X509_LOOKUP_METHOD; +typedef struct X509_VERIFY_PARAM_st X509_VERIFY_PARAM; + +typedef struct x509_sig_info_st X509_SIG_INFO; + +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 ossl_init_settings_st OPENSSL_INIT_SETTINGS; + +typedef struct ui_st UI; +typedef struct ui_method_st UI_METHOD; + +typedef struct engine_st ENGINE; +typedef struct ssl_st SSL; +typedef struct ssl_ctx_st SSL_CTX; + +typedef struct comp_ctx_st COMP_CTX; +typedef struct comp_method_st COMP_METHOD; + +typedef struct X509_POLICY_NODE_st X509_POLICY_NODE; +typedef struct X509_POLICY_LEVEL_st X509_POLICY_LEVEL; +typedef struct X509_POLICY_TREE_st X509_POLICY_TREE; +typedef struct X509_POLICY_CACHE_st X509_POLICY_CACHE; + +typedef struct AUTHORITY_KEYID_st AUTHORITY_KEYID; +typedef struct DIST_POINT_st DIST_POINT; +typedef struct ISSUING_DIST_POINT_st ISSUING_DIST_POINT; +typedef struct NAME_CONSTRAINTS_st NAME_CONSTRAINTS; + +typedef struct crypto_ex_data_st CRYPTO_EX_DATA; + +typedef struct ocsp_req_ctx_st OCSP_REQ_CTX; +typedef struct ocsp_response_st OCSP_RESPONSE; +typedef struct ocsp_responder_id_st OCSP_RESPID; + +typedef struct sct_st SCT; +typedef struct sct_ctx_st SCT_CTX; +typedef struct ctlog_st CTLOG; +typedef struct ctlog_store_st CTLOG_STORE; +typedef struct ct_policy_eval_ctx_st CT_POLICY_EVAL_CTX; + +typedef struct ossl_store_info_st OSSL_STORE_INFO; +typedef struct ossl_store_search_st OSSL_STORE_SEARCH; + +#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L && \ + defined(INTMAX_MAX) && defined(UINTMAX_MAX) +typedef intmax_t ossl_intmax_t; +typedef uintmax_t ossl_uintmax_t; +#else +/* + * Not long long, because the C-library can only be expected to provide + * strtoll(), strtoull() at the same time as intmax_t and strtoimax(), + * strtoumax(). Since we use these for parsing arguments, we need the + * conversion functions, not just the sizes. + */ +typedef long ossl_intmax_t; +typedef unsigned long ossl_uintmax_t; +#endif + +#ifdef __cplusplus +} +#endif +#endif /* def HEADER_OPENSSL_TYPES_H */ diff --git a/plugin/openssl/include/openssl/pem.h b/plugin/openssl/include/openssl/pem.h new file mode 100644 index 000000000..2ef5b5d04 --- /dev/null +++ b/plugin/openssl/include/openssl/pem.h @@ -0,0 +1,378 @@ +/* + * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_PEM_H +# define HEADER_PEM_H + +# include +# include +# include +# include +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +# define PEM_BUFSIZE 1024 + +# define PEM_STRING_X509_OLD "X509 CERTIFICATE" +# define PEM_STRING_X509 "CERTIFICATE" +# 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" + +# define PEM_TYPE_ENCRYPTED 10 +# define PEM_TYPE_MIC_ONLY 20 +# define PEM_TYPE_MIC_CLEAR 30 +# define PEM_TYPE_CLEAR 40 + +/* + * 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_STDIO + +# 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_STDIO) + +# define DECLARE_PEM_read_fp(name, type) /**/ +# define DECLARE_PEM_write_fp(name, type) /**/ +# define DECLARE_PEM_write_fp_const(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 + +# 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); + +# 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) +typedef int pem_password_cb (char *buf, int size, int rwflag, void *userdata); + +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); + +int PEM_read_bio(BIO *bp, char **name, char **header, + unsigned char **data, long *len); +# define PEM_FLAG_SECURE 0x1 +# define PEM_FLAG_EAY_COMPATIBLE 0x2 +# define PEM_FLAG_ONLY_B64 0x4 +int PEM_read_bio_ex(BIO *bp, char **name, char **header, + unsigned char **data, long *len, unsigned int flags); +int PEM_bytes_read_bio_secmem(unsigned char **pdata, long *plen, char **pnm, + const char *name, BIO *bp, pem_password_cb *cb, + void *u); +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); + +#ifndef OPENSSL_NO_STDIO +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); +#endif + +int PEM_SignInit(EVP_MD_CTX *ctx, EVP_MD *type); +int 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); + +/* The default pem_password_cb that's used internally */ +int PEM_def_callback(char *buf, int num, int rwflag, void *userdata); +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_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_PrivateKey_traditional(BIO *bp, EVP_PKEY *x, + const EVP_CIPHER *enc, + unsigned char *kstr, int klen, + pem_password_cb *cb, void *u); + +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); + +# ifndef OPENSSL_NO_STDIO +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); +# endif +EVP_PKEY *PEM_read_bio_Parameters(BIO *bp, EVP_PKEY **x); +int PEM_write_bio_Parameters(BIO *bp, EVP_PKEY *x); + +# ifndef OPENSSL_NO_DSA +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 +# endif + +# ifdef __cplusplus +} +# endif +#endif diff --git a/plugin/openssl/include/openssl/pem2.h b/plugin/openssl/include/openssl/pem2.h new file mode 100644 index 000000000..038fe790a --- /dev/null +++ b/plugin/openssl/include/openssl/pem2.h @@ -0,0 +1,13 @@ +/* + * Copyright 1999-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_PEM2_H +# define HEADER_PEM2_H +# include +#endif diff --git a/plugin/openssl/include/openssl/pemerr.h b/plugin/openssl/include/openssl/pemerr.h new file mode 100644 index 000000000..4f7e3574b --- /dev/null +++ b/plugin/openssl/include/openssl/pemerr.h @@ -0,0 +1,105 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_PEMERR_H +# define HEADER_PEMERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_PEM_strings(void); + +/* + * PEM 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_I2B 146 +# 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_GET_HEADER_AND_DATA 143 +# define PEM_F_GET_NAME 144 +# 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_GET_EVP_CIPHER_INFO 107 +# 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_EX 145 +# 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_SIGNFINAL 112 +# define PEM_F_PEM_WRITE 113 +# define PEM_F_PEM_WRITE_BIO 114 +# define PEM_F_PEM_WRITE_BIO_PRIVATEKEY_TRADITIONAL 147 +# 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 + +/* + * PEM reason codes. + */ +# define PEM_R_BAD_BASE64_DECODE 100 +# define PEM_R_BAD_DECRYPT 101 +# define PEM_R_BAD_END_LINE 102 +# define PEM_R_BAD_IV_CHARS 103 +# define PEM_R_BAD_MAGIC_NUMBER 116 +# define PEM_R_BAD_PASSWORD_READ 104 +# define PEM_R_BAD_VERSION_NUMBER 117 +# define PEM_R_BIO_WRITE_FAILURE 118 +# define PEM_R_CIPHER_IS_NULL 127 +# define PEM_R_ERROR_CONVERTING_PRIVATE_KEY 115 +# define PEM_R_EXPECTING_PRIVATE_KEY_BLOB 119 +# define PEM_R_EXPECTING_PUBLIC_KEY_BLOB 120 +# define PEM_R_HEADER_TOO_LONG 128 +# define PEM_R_INCONSISTENT_HEADER 121 +# define PEM_R_KEYBLOB_HEADER_PARSE_ERROR 122 +# define PEM_R_KEYBLOB_TOO_SHORT 123 +# define PEM_R_MISSING_DEK_IV 129 +# 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_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_UNEXPECTED_DEK_IV 130 +# define PEM_R_UNSUPPORTED_CIPHER 113 +# define PEM_R_UNSUPPORTED_ENCRYPTION 114 +# define PEM_R_UNSUPPORTED_KEY_COMPONENTS 126 +# define PEM_R_UNSUPPORTED_PUBLIC_KEY_TYPE 110 + +#endif diff --git a/plugin/openssl/include/openssl/pkcs12.h b/plugin/openssl/include/openssl/pkcs12.h new file mode 100644 index 000000000..3f43dad6d --- /dev/null +++ b/plugin/openssl/include/openssl/pkcs12.h @@ -0,0 +1,223 @@ +/* + * Copyright 1999-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_PKCS12_H +# define HEADER_PKCS12_H + +# include +# 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 + +/* It's not clear if these are actually needed... */ +# define PKCS12_key_gen PKCS12_key_gen_utf8 +# define PKCS12_add_friendlyname PKCS12_add_friendlyname_utf8 + +/* MS key usage constants */ + +# define KEY_EX 0x10 +# define KEY_SIG 0x80 + +typedef struct PKCS12_MAC_DATA_st PKCS12_MAC_DATA; + +typedef struct PKCS12_st PKCS12; + +typedef struct PKCS12_SAFEBAG_st PKCS12_SAFEBAG; + +DEFINE_STACK_OF(PKCS12_SAFEBAG) + +typedef struct pkcs12_bag_st PKCS12_BAGS; + +# define PKCS12_ERROR 0 +# define PKCS12_OK 1 + +/* Compatibility macros */ + +#if OPENSSL_API_COMPAT < 0x10100000L + +# define M_PKCS12_bag_type PKCS12_bag_type +# define M_PKCS12_cert_bag_type PKCS12_cert_bag_type +# define M_PKCS12_crl_bag_type PKCS12_cert_bag_type + +# define PKCS12_certbag2x509 PKCS12_SAFEBAG_get1_cert +# define PKCS12_certbag2scrl PKCS12_SAFEBAG_get1_crl +# define PKCS12_bag_type PKCS12_SAFEBAG_get_nid +# define PKCS12_cert_bag_type PKCS12_SAFEBAG_get_bag_nid +# define PKCS12_x5092certbag PKCS12_SAFEBAG_create_cert +# define PKCS12_x509crl2certbag PKCS12_SAFEBAG_create_crl +# define PKCS12_MAKE_KEYBAG PKCS12_SAFEBAG_create0_p8inf +# define PKCS12_MAKE_SHKEYBAG PKCS12_SAFEBAG_create_pkcs8_encrypt + +#endif + +DEPRECATEDIN_1_1_0(ASN1_TYPE *PKCS12_get_attr(const PKCS12_SAFEBAG *bag, int attr_nid)) + +ASN1_TYPE *PKCS8_get_attr(PKCS8_PRIV_KEY_INFO *p8, int attr_nid); +int PKCS12_mac_present(const PKCS12 *p12); +void PKCS12_get0_mac(const ASN1_OCTET_STRING **pmac, + const X509_ALGOR **pmacalg, + const ASN1_OCTET_STRING **psalt, + const ASN1_INTEGER **piter, + const PKCS12 *p12); + +const ASN1_TYPE *PKCS12_SAFEBAG_get0_attr(const PKCS12_SAFEBAG *bag, + int attr_nid); +const ASN1_OBJECT *PKCS12_SAFEBAG_get0_type(const PKCS12_SAFEBAG *bag); +int PKCS12_SAFEBAG_get_nid(const PKCS12_SAFEBAG *bag); +int PKCS12_SAFEBAG_get_bag_nid(const PKCS12_SAFEBAG *bag); + +X509 *PKCS12_SAFEBAG_get1_cert(const PKCS12_SAFEBAG *bag); +X509_CRL *PKCS12_SAFEBAG_get1_crl(const PKCS12_SAFEBAG *bag); +const STACK_OF(PKCS12_SAFEBAG) * +PKCS12_SAFEBAG_get0_safes(const PKCS12_SAFEBAG *bag); +const PKCS8_PRIV_KEY_INFO *PKCS12_SAFEBAG_get0_p8inf(const PKCS12_SAFEBAG *bag); +const X509_SIG *PKCS12_SAFEBAG_get0_pkcs8(const PKCS12_SAFEBAG *bag); + +PKCS12_SAFEBAG *PKCS12_SAFEBAG_create_cert(X509 *x509); +PKCS12_SAFEBAG *PKCS12_SAFEBAG_create_crl(X509_CRL *crl); +PKCS12_SAFEBAG *PKCS12_SAFEBAG_create0_p8inf(PKCS8_PRIV_KEY_INFO *p8); +PKCS12_SAFEBAG *PKCS12_SAFEBAG_create0_pkcs8(X509_SIG *p8); +PKCS12_SAFEBAG *PKCS12_SAFEBAG_create_pkcs8_encrypt(int pbe_nid, + const char *pass, + int passlen, + unsigned char *salt, + int saltlen, int iter, + PKCS8_PRIV_KEY_INFO *p8inf); + +PKCS12_SAFEBAG *PKCS12_item_pack_safebag(void *obj, const ASN1_ITEM *it, + int nid1, int nid2); +PKCS8_PRIV_KEY_INFO *PKCS8_decrypt(const X509_SIG *p8, const char *pass, + int passlen); +PKCS8_PRIV_KEY_INFO *PKCS12_decrypt_skey(const 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); +X509_SIG *PKCS8_set0_pbe(const char *pass, int passlen, + PKCS8_PRIV_KEY_INFO *p8inf, X509_ALGOR *pbe); +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(const 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_friendlyname_utf8(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(const STACK_OF(X509_ATTRIBUTE) *attrs, + int attr_nid); +char *PKCS12_get_friendlyname(PKCS12_SAFEBAG *bag); +const STACK_OF(X509_ATTRIBUTE) * +PKCS12_SAFEBAG_get0_attrs(const PKCS12_SAFEBAG *bag); +unsigned char *PKCS12_pbe_crypt(const X509_ALGOR *algor, + const char *pass, int passlen, + const unsigned char *in, int inlen, + unsigned char **data, int *datalen, + int en_de); +void *PKCS12_item_decrypt_d2i(const X509_ALGOR *algor, const ASN1_ITEM *it, + const char *pass, int passlen, + const 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_key_gen_utf8(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_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(const unsigned char *uni, int unilen); +unsigned char *OPENSSL_utf82uni(const char *asc, int asclen, + unsigned char **uni, int *unilen); +char *OPENSSL_uni2utf8(const 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(const char *pass, const 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, const char *pass); +int PKCS12_add_safe(STACK_OF(PKCS7) **psafes, STACK_OF(PKCS12_SAFEBAG) *bags, + int safe_nid, int iter, const char *pass); +PKCS12 *PKCS12_add_safes(STACK_OF(PKCS7) *safes, int p7_nid); + +int i2d_PKCS12_bio(BIO *bp, PKCS12 *p12); +# ifndef OPENSSL_NO_STDIO +int i2d_PKCS12_fp(FILE *fp, PKCS12 *p12); +# endif +PKCS12 *d2i_PKCS12_bio(BIO *bp, PKCS12 **p12); +# ifndef OPENSSL_NO_STDIO +PKCS12 *d2i_PKCS12_fp(FILE *fp, PKCS12 **p12); +# endif +int PKCS12_newpass(PKCS12 *p12, const char *oldpass, const char *newpass); + +# ifdef __cplusplus +} +# endif +#endif diff --git a/plugin/openssl/include/openssl/pkcs12err.h b/plugin/openssl/include/openssl/pkcs12err.h new file mode 100644 index 000000000..eff5eb260 --- /dev/null +++ b/plugin/openssl/include/openssl/pkcs12err.h @@ -0,0 +1,81 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_PKCS12ERR_H +# define HEADER_PKCS12ERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_PKCS12_strings(void); + +/* + * PKCS12 function codes. + */ +# define PKCS12_F_OPENSSL_ASC2UNI 121 +# define PKCS12_F_OPENSSL_UNI2ASC 124 +# define PKCS12_F_OPENSSL_UNI2UTF8 127 +# define PKCS12_F_OPENSSL_UTF82UNI 129 +# 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_KEY_GEN_UTF8 116 +# 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_SAFEBAG_CREATE0_P8INF 112 +# define PKCS12_F_PKCS12_SAFEBAG_CREATE0_PKCS8 113 +# define PKCS12_F_PKCS12_SAFEBAG_CREATE_PKCS8_ENCRYPT 133 +# 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_ENCRYPT 125 +# define PKCS12_F_PKCS8_SET0_PBE 132 + +/* + * PKCS12 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_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 + +#endif diff --git a/plugin/openssl/include/openssl/pkcs7.h b/plugin/openssl/include/openssl/pkcs7.h new file mode 100644 index 000000000..9b66e002d --- /dev/null +++ b/plugin/openssl/include/openssl/pkcs7.h @@ -0,0 +1,319 @@ +/* + * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_PKCS7_H +# define HEADER_PKCS7_H + +# include +# include +# include + +# include +# include +# include + +#ifdef __cplusplus +extern "C" { +#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; + +DEFINE_STACK_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; + +DEFINE_STACK_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; + +DEFINE_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 +# define PKCS7_NO_DUAL_CONTENT 0x10000 + +/* 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 + +/* CRLF ASCII canonicalisation */ +# define SMIME_ASCIICRLF 0x80000 + +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_STDIO +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); + +# ifdef __cplusplus +} +# endif +#endif diff --git a/plugin/openssl/include/openssl/pkcs7err.h b/plugin/openssl/include/openssl/pkcs7err.h new file mode 100644 index 000000000..02e0299a3 --- /dev/null +++ b/plugin/openssl/include/openssl/pkcs7err.h @@ -0,0 +1,103 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_PKCS7ERR_H +# define HEADER_PKCS7ERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_PKCS7_strings(void); + +/* + * PKCS7 function codes. + */ +# define PKCS7_F_DO_PKCS7_SIGNED_ATTRIB 136 +# 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_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 + +/* + * PKCS7 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_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_NULL_POINTER 143 +# define PKCS7_R_INVALID_SIGNED_DATA_TYPE 155 +# define PKCS7_R_NO_CONTENT 122 +# define PKCS7_R_NO_DEFAULT_DIGEST 151 +# define PKCS7_R_NO_MATCHING_DIGEST_TYPE_FOUND 154 +# define PKCS7_R_NO_RECIPIENT_MATCHES_CERTIFICATE 115 +# define PKCS7_R_NO_SIGNATURES_ON_DATA 123 +# define PKCS7_R_NO_SIGNERS 142 +# 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_DATASIGN 145 +# 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_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 + +#endif diff --git a/plugin/openssl/include/openssl/rand.h b/plugin/openssl/include/openssl/rand.h new file mode 100644 index 000000000..38a2a2718 --- /dev/null +++ b/plugin/openssl/include/openssl/rand.h @@ -0,0 +1,77 @@ +/* + * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_RAND_H +# define HEADER_RAND_H + +# include +# include +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +struct rand_meth_st { + int (*seed) (const void *buf, int num); + int (*bytes) (unsigned char *buf, int num); + void (*cleanup) (void); + int (*add) (const void *buf, int num, double randomness); + int (*pseudorand) (unsigned char *buf, int num); + int (*status) (void); +}; + +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_OpenSSL(void); + +# if OPENSSL_API_COMPAT < 0x10100000L +# define RAND_cleanup() while(0) continue +# endif +int RAND_bytes(unsigned char *buf, int num); +int RAND_priv_bytes(unsigned char *buf, int num); +DEPRECATEDIN_1_1_0(int RAND_pseudo_bytes(unsigned char *buf, int num)) + +void RAND_seed(const void *buf, int num); +void RAND_keep_random_devices_open(int keep); + +# if defined(__ANDROID__) && defined(__NDK_FPABI__) +__NDK_FPABI__ /* __attribute__((pcs("aapcs"))) on ARM */ +# endif +void RAND_add(const void *buf, int num, double randomness); +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); + +# ifndef OPENSSL_NO_EGD +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); +# endif + +int RAND_poll(void); + +# if defined(_WIN32) && (defined(BASETYPES) || defined(_WINDEF_H)) +/* application has to include in order to use these */ +DEPRECATEDIN_1_1_0(void RAND_screen(void)) +DEPRECATEDIN_1_1_0(int RAND_event(UINT, WPARAM, LPARAM)) +# endif + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/plugin/openssl/include/openssl/rand_drbg.h b/plugin/openssl/include/openssl/rand_drbg.h new file mode 100644 index 000000000..45b731b73 --- /dev/null +++ b/plugin/openssl/include/openssl/rand_drbg.h @@ -0,0 +1,130 @@ +/* + * Copyright 2017-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_DRBG_RAND_H +# define HEADER_DRBG_RAND_H + +# include +# include +# include + +/* + * RAND_DRBG flags + * + * Note: if new flags are added, the constant `rand_drbg_used_flags` + * in drbg_lib.c needs to be updated accordingly. + */ + +/* In CTR mode, disable derivation function ctr_df */ +# define RAND_DRBG_FLAG_CTR_NO_DF 0x1 + + +# if OPENSSL_API_COMPAT < 0x10200000L +/* This #define was replaced by an internal constant and should not be used. */ +# define RAND_DRBG_USED_FLAGS (RAND_DRBG_FLAG_CTR_NO_DF) +# endif + +/* + * Default security strength (in the sense of [NIST SP 800-90Ar1]) + * + * NIST SP 800-90Ar1 supports the strength of the DRBG being smaller than that + * of the cipher by collecting less entropy. The current DRBG implementation + * does not take RAND_DRBG_STRENGTH into account and sets the strength of the + * DRBG to that of the cipher. + * + * RAND_DRBG_STRENGTH is currently only used for the legacy RAND + * implementation. + * + * Currently supported ciphers are: NID_aes_128_ctr, NID_aes_192_ctr and + * NID_aes_256_ctr + */ +# define RAND_DRBG_STRENGTH 256 +/* Default drbg type */ +# define RAND_DRBG_TYPE NID_aes_256_ctr +/* Default drbg flags */ +# define RAND_DRBG_FLAGS 0 + + +# ifdef __cplusplus +extern "C" { +# endif + +/* + * Object lifetime functions. + */ +RAND_DRBG *RAND_DRBG_new(int type, unsigned int flags, RAND_DRBG *parent); +RAND_DRBG *RAND_DRBG_secure_new(int type, unsigned int flags, RAND_DRBG *parent); +int RAND_DRBG_set(RAND_DRBG *drbg, int type, unsigned int flags); +int RAND_DRBG_set_defaults(int type, unsigned int flags); +int RAND_DRBG_instantiate(RAND_DRBG *drbg, + const unsigned char *pers, size_t perslen); +int RAND_DRBG_uninstantiate(RAND_DRBG *drbg); +void RAND_DRBG_free(RAND_DRBG *drbg); + +/* + * Object "use" functions. + */ +int RAND_DRBG_reseed(RAND_DRBG *drbg, + const unsigned char *adin, size_t adinlen, + int prediction_resistance); +int RAND_DRBG_generate(RAND_DRBG *drbg, unsigned char *out, size_t outlen, + int prediction_resistance, + const unsigned char *adin, size_t adinlen); +int RAND_DRBG_bytes(RAND_DRBG *drbg, unsigned char *out, size_t outlen); + +int RAND_DRBG_set_reseed_interval(RAND_DRBG *drbg, unsigned int interval); +int RAND_DRBG_set_reseed_time_interval(RAND_DRBG *drbg, time_t interval); + +int RAND_DRBG_set_reseed_defaults( + unsigned int master_reseed_interval, + unsigned int slave_reseed_interval, + time_t master_reseed_time_interval, + time_t slave_reseed_time_interval + ); + +RAND_DRBG *RAND_DRBG_get0_master(void); +RAND_DRBG *RAND_DRBG_get0_public(void); +RAND_DRBG *RAND_DRBG_get0_private(void); + +/* + * EXDATA + */ +# define RAND_DRBG_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_DRBG, l, p, newf, dupf, freef) +int RAND_DRBG_set_ex_data(RAND_DRBG *drbg, int idx, void *arg); +void *RAND_DRBG_get_ex_data(const RAND_DRBG *drbg, int idx); + +/* + * Callback function typedefs + */ +typedef size_t (*RAND_DRBG_get_entropy_fn)(RAND_DRBG *drbg, + unsigned char **pout, + int entropy, size_t min_len, + size_t max_len, + int prediction_resistance); +typedef void (*RAND_DRBG_cleanup_entropy_fn)(RAND_DRBG *ctx, + unsigned char *out, size_t outlen); +typedef size_t (*RAND_DRBG_get_nonce_fn)(RAND_DRBG *drbg, unsigned char **pout, + int entropy, size_t min_len, + size_t max_len); +typedef void (*RAND_DRBG_cleanup_nonce_fn)(RAND_DRBG *drbg, + unsigned char *out, size_t outlen); + +int RAND_DRBG_set_callbacks(RAND_DRBG *drbg, + RAND_DRBG_get_entropy_fn get_entropy, + RAND_DRBG_cleanup_entropy_fn cleanup_entropy, + RAND_DRBG_get_nonce_fn get_nonce, + RAND_DRBG_cleanup_nonce_fn cleanup_nonce); + + +# ifdef __cplusplus +} +# endif + +#endif diff --git a/plugin/openssl/include/openssl/randerr.h b/plugin/openssl/include/openssl/randerr.h new file mode 100644 index 000000000..79d57905e --- /dev/null +++ b/plugin/openssl/include/openssl/randerr.h @@ -0,0 +1,94 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_RANDERR_H +# define HEADER_RANDERR_H + +# include + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_RAND_strings(void); + +/* + * RAND function codes. + */ +# define RAND_F_DATA_COLLECT_METHOD 127 +# define RAND_F_DRBG_BYTES 101 +# define RAND_F_DRBG_GET_ENTROPY 105 +# define RAND_F_DRBG_SETUP 117 +# define RAND_F_GET_ENTROPY 106 +# define RAND_F_RAND_BYTES 100 +# define RAND_F_RAND_DRBG_ENABLE_LOCKING 119 +# define RAND_F_RAND_DRBG_GENERATE 107 +# define RAND_F_RAND_DRBG_GET_ENTROPY 120 +# define RAND_F_RAND_DRBG_GET_NONCE 123 +# define RAND_F_RAND_DRBG_INSTANTIATE 108 +# define RAND_F_RAND_DRBG_NEW 109 +# define RAND_F_RAND_DRBG_RESEED 110 +# define RAND_F_RAND_DRBG_RESTART 102 +# define RAND_F_RAND_DRBG_SET 104 +# define RAND_F_RAND_DRBG_SET_DEFAULTS 121 +# define RAND_F_RAND_DRBG_UNINSTANTIATE 118 +# define RAND_F_RAND_LOAD_FILE 111 +# define RAND_F_RAND_POOL_ACQUIRE_ENTROPY 122 +# define RAND_F_RAND_POOL_ADD 103 +# define RAND_F_RAND_POOL_ADD_BEGIN 113 +# define RAND_F_RAND_POOL_ADD_END 114 +# define RAND_F_RAND_POOL_ATTACH 124 +# define RAND_F_RAND_POOL_BYTES_NEEDED 115 +# define RAND_F_RAND_POOL_GROW 125 +# define RAND_F_RAND_POOL_NEW 116 +# define RAND_F_RAND_PSEUDO_BYTES 126 +# define RAND_F_RAND_WRITE_FILE 112 + +/* + * RAND reason codes. + */ +# define RAND_R_ADDITIONAL_INPUT_TOO_LONG 102 +# define RAND_R_ALREADY_INSTANTIATED 103 +# define RAND_R_ARGUMENT_OUT_OF_RANGE 105 +# define RAND_R_CANNOT_OPEN_FILE 121 +# define RAND_R_DRBG_ALREADY_INITIALIZED 129 +# define RAND_R_DRBG_NOT_INITIALISED 104 +# define RAND_R_ENTROPY_INPUT_TOO_LONG 106 +# define RAND_R_ENTROPY_OUT_OF_RANGE 124 +# define RAND_R_ERROR_ENTROPY_POOL_WAS_IGNORED 127 +# define RAND_R_ERROR_INITIALISING_DRBG 107 +# define RAND_R_ERROR_INSTANTIATING_DRBG 108 +# define RAND_R_ERROR_RETRIEVING_ADDITIONAL_INPUT 109 +# define RAND_R_ERROR_RETRIEVING_ENTROPY 110 +# define RAND_R_ERROR_RETRIEVING_NONCE 111 +# define RAND_R_FAILED_TO_CREATE_LOCK 126 +# define RAND_R_FUNC_NOT_IMPLEMENTED 101 +# define RAND_R_FWRITE_ERROR 123 +# define RAND_R_GENERATE_ERROR 112 +# define RAND_R_INTERNAL_ERROR 113 +# define RAND_R_IN_ERROR_STATE 114 +# define RAND_R_NOT_A_REGULAR_FILE 122 +# define RAND_R_NOT_INSTANTIATED 115 +# define RAND_R_NO_DRBG_IMPLEMENTATION_SELECTED 128 +# define RAND_R_PARENT_LOCKING_NOT_ENABLED 130 +# define RAND_R_PARENT_STRENGTH_TOO_WEAK 131 +# define RAND_R_PERSONALISATION_STRING_TOO_LONG 116 +# define RAND_R_PREDICTION_RESISTANCE_NOT_SUPPORTED 133 +# define RAND_R_PRNG_NOT_SEEDED 100 +# define RAND_R_RANDOM_POOL_OVERFLOW 125 +# define RAND_R_RANDOM_POOL_UNDERFLOW 134 +# define RAND_R_REQUEST_TOO_LARGE_FOR_DRBG 117 +# define RAND_R_RESEED_ERROR 118 +# define RAND_R_SELFTEST_FAILURE 119 +# define RAND_R_TOO_LITTLE_NONCE_REQUESTED 135 +# define RAND_R_TOO_MUCH_NONCE_REQUESTED 136 +# define RAND_R_UNSUPPORTED_DRBG_FLAGS 132 +# define RAND_R_UNSUPPORTED_DRBG_TYPE 120 + +#endif diff --git a/plugin/openssl/include/openssl/rc2.h b/plugin/openssl/include/openssl/rc2.h new file mode 100644 index 000000000..585f9e4c3 --- /dev/null +++ b/plugin/openssl/include/openssl/rc2.h @@ -0,0 +1,51 @@ +/* + * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_RC2_H +# define HEADER_RC2_H + +# include + +# ifndef OPENSSL_NO_RC2 +# ifdef __cplusplus +extern "C" { +# endif + +typedef unsigned int RC2_INT; + +# define RC2_ENCRYPT 1 +# define RC2_DECRYPT 0 + +# define RC2_BLOCK 8 +# define RC2_KEY_LENGTH 16 + +typedef struct rc2_key_st { + RC2_INT data[64]; +} RC2_KEY; + +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 + +#endif diff --git a/plugin/openssl/include/openssl/rc4.h b/plugin/openssl/include/openssl/rc4.h new file mode 100644 index 000000000..86803b37f --- /dev/null +++ b/plugin/openssl/include/openssl/rc4.h @@ -0,0 +1,36 @@ +/* + * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_RC4_H +# define HEADER_RC4_H + +# include + +# ifndef OPENSSL_NO_RC4 +# 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 RC4(RC4_KEY *key, size_t len, const unsigned char *indata, + unsigned char *outdata); + +# ifdef __cplusplus +} +# endif +# endif + +#endif diff --git a/plugin/openssl/include/openssl/rc5.h b/plugin/openssl/include/openssl/rc5.h new file mode 100644 index 000000000..793f88e4e --- /dev/null +++ b/plugin/openssl/include/openssl/rc5.h @@ -0,0 +1,63 @@ +/* + * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_RC5_H +# define HEADER_RC5_H + +# include + +# ifndef OPENSSL_NO_RC5 +# ifdef __cplusplus +extern "C" { +# endif + +# define RC5_ENCRYPT 1 +# define RC5_DECRYPT 0 + +# define RC5_32_INT unsigned int + +# define RC5_32_BLOCK 8 +# define RC5_32_KEY_LENGTH 16/* This is a default, max is 255 */ + +/* + * This are the only values supported. Tweak the code if you want more The + * most supported modes will be RC5-32/12/16 RC5-32/16/8 + */ +# define RC5_8_ROUNDS 8 +# define RC5_12_ROUNDS 12 +# define RC5_16_ROUNDS 16 + +typedef struct rc5_key_st { + /* Number of rounds */ + int rounds; + RC5_32_INT data[2 * (RC5_16_ROUNDS + 1)]; +} RC5_32_KEY; + +void RC5_32_set_key(RC5_32_KEY *key, int len, const unsigned char *data, + int rounds); +void RC5_32_ecb_encrypt(const unsigned char *in, unsigned char *out, + RC5_32_KEY *key, int enc); +void RC5_32_encrypt(unsigned long *data, RC5_32_KEY *key); +void RC5_32_decrypt(unsigned long *data, RC5_32_KEY *key); +void RC5_32_cbc_encrypt(const unsigned char *in, unsigned char *out, + long length, RC5_32_KEY *ks, unsigned char *iv, + int enc); +void RC5_32_cfb64_encrypt(const unsigned char *in, unsigned char *out, + long length, RC5_32_KEY *schedule, + unsigned char *ivec, int *num, int enc); +void RC5_32_ofb64_encrypt(const unsigned char *in, unsigned char *out, + long length, RC5_32_KEY *schedule, + unsigned char *ivec, int *num); + +# ifdef __cplusplus +} +# endif +# endif + +#endif diff --git a/plugin/openssl/include/openssl/ripemd.h b/plugin/openssl/include/openssl/ripemd.h new file mode 100644 index 000000000..c42026aa4 --- /dev/null +++ b/plugin/openssl/include/openssl/ripemd.h @@ -0,0 +1,47 @@ +/* + * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_RIPEMD_H +# define HEADER_RIPEMD_H + +# include + +#ifndef OPENSSL_NO_RMD160 +# include +# include +# ifdef __cplusplus +extern "C" { +# endif + +# define RIPEMD160_LONG unsigned int + +# 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; + +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 + + +#endif diff --git a/plugin/openssl/include/openssl/rsa.h b/plugin/openssl/include/openssl/rsa.h new file mode 100644 index 000000000..5e76365c0 --- /dev/null +++ b/plugin/openssl/include/openssl/rsa.h @@ -0,0 +1,513 @@ +/* + * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_RSA_H +# define HEADER_RSA_H + +# include + +# ifndef OPENSSL_NO_RSA +# include +# include +# include +# include +# if OPENSSL_API_COMPAT < 0x10100000L +# include +# endif +# include +# ifdef __cplusplus +extern "C" { +# endif + +/* The types RSA and RSA_METHOD are defined in ossl_typ.h */ + +# ifndef OPENSSL_RSA_MAX_MODULUS_BITS +# define OPENSSL_RSA_MAX_MODULUS_BITS 16384 +# endif + +# define OPENSSL_RSA_FIPS_MIN_MODULUS_BITS 1024 + +# 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 + +/* based on RFC 8017 appendix A.1.2 */ +# define RSA_ASN1_VERSION_DEFAULT 0 +# define RSA_ASN1_VERSION_MULTI 1 + +# define RSA_DEFAULT_PRIME_NUM 2 + +# 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 + +/* + * 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 +# if OPENSSL_API_COMPAT < 0x10100000L +/* + * Does nothing. Previously this switched off constant time behaviour. + */ +# define RSA_FLAG_NO_CONSTTIME 0x0000 +# endif +# if OPENSSL_API_COMPAT < 0x00908000L +/* 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) \ + RSA_pkey_ctx_ctrl(ctx, -1, EVP_PKEY_CTRL_RSA_PADDING, pad, NULL) + +# define EVP_PKEY_CTX_get_rsa_padding(ctx, ppad) \ + RSA_pkey_ctx_ctrl(ctx, -1, EVP_PKEY_CTRL_GET_RSA_PADDING, 0, ppad) + +# define EVP_PKEY_CTX_set_rsa_pss_saltlen(ctx, len) \ + RSA_pkey_ctx_ctrl(ctx, (EVP_PKEY_OP_SIGN|EVP_PKEY_OP_VERIFY), \ + EVP_PKEY_CTRL_RSA_PSS_SALTLEN, len, NULL) +/* Salt length matches digest */ +# define RSA_PSS_SALTLEN_DIGEST -1 +/* Verify only: auto detect salt length */ +# define RSA_PSS_SALTLEN_AUTO -2 +/* Set salt length to maximum possible */ +# define RSA_PSS_SALTLEN_MAX -3 +/* Old compatible max salt length for sign only */ +# define RSA_PSS_SALTLEN_MAX_SIGN -2 + +# define EVP_PKEY_CTX_set_rsa_pss_keygen_saltlen(ctx, len) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_RSA_PSS, EVP_PKEY_OP_KEYGEN, \ + EVP_PKEY_CTRL_RSA_PSS_SALTLEN, len, NULL) + +# define EVP_PKEY_CTX_get_rsa_pss_saltlen(ctx, plen) \ + RSA_pkey_ctx_ctrl(ctx, (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) \ + RSA_pkey_ctx_ctrl(ctx, EVP_PKEY_OP_KEYGEN, \ + EVP_PKEY_CTRL_RSA_KEYGEN_BITS, bits, NULL) + +# define EVP_PKEY_CTX_set_rsa_keygen_pubexp(ctx, pubexp) \ + RSA_pkey_ctx_ctrl(ctx, EVP_PKEY_OP_KEYGEN, \ + EVP_PKEY_CTRL_RSA_KEYGEN_PUBEXP, 0, pubexp) + +# define EVP_PKEY_CTX_set_rsa_keygen_primes(ctx, primes) \ + RSA_pkey_ctx_ctrl(ctx, EVP_PKEY_OP_KEYGEN, \ + EVP_PKEY_CTRL_RSA_KEYGEN_PRIMES, primes, NULL) + +# define EVP_PKEY_CTX_set_rsa_mgf1_md(ctx, md) \ + RSA_pkey_ctx_ctrl(ctx, 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_pss_keygen_mgf1_md(ctx, md) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_RSA_PSS, EVP_PKEY_OP_KEYGEN, \ + 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) \ + RSA_pkey_ctx_ctrl(ctx, 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_CTX_set_rsa_pss_keygen_md(ctx, md) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_RSA_PSS, \ + EVP_PKEY_OP_KEYGEN, EVP_PKEY_CTRL_MD, \ + 0, (void *)(md)) + +# 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 EVP_PKEY_CTRL_RSA_KEYGEN_PRIMES (EVP_PKEY_ALG_CTRL + 13) + +# 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_bits(const RSA *rsa); +int RSA_size(const RSA *rsa); +int RSA_security_bits(const RSA *rsa); + +int RSA_set0_key(RSA *r, BIGNUM *n, BIGNUM *e, BIGNUM *d); +int RSA_set0_factors(RSA *r, BIGNUM *p, BIGNUM *q); +int RSA_set0_crt_params(RSA *r,BIGNUM *dmp1, BIGNUM *dmq1, BIGNUM *iqmp); +int RSA_set0_multi_prime_params(RSA *r, BIGNUM *primes[], BIGNUM *exps[], + BIGNUM *coeffs[], int pnum); +void RSA_get0_key(const RSA *r, + const BIGNUM **n, const BIGNUM **e, const BIGNUM **d); +void RSA_get0_factors(const RSA *r, const BIGNUM **p, const BIGNUM **q); +int RSA_get_multi_prime_extra_count(const RSA *r); +int RSA_get0_multi_prime_factors(const RSA *r, const BIGNUM *primes[]); +void RSA_get0_crt_params(const RSA *r, + const BIGNUM **dmp1, const BIGNUM **dmq1, + const BIGNUM **iqmp); +int RSA_get0_multi_prime_crt_params(const RSA *r, const BIGNUM *exps[], + const BIGNUM *coeffs[]); +const BIGNUM *RSA_get0_n(const RSA *d); +const BIGNUM *RSA_get0_e(const RSA *d); +const BIGNUM *RSA_get0_d(const RSA *d); +const BIGNUM *RSA_get0_p(const RSA *d); +const BIGNUM *RSA_get0_q(const RSA *d); +const BIGNUM *RSA_get0_dmp1(const RSA *r); +const BIGNUM *RSA_get0_dmq1(const RSA *r); +const BIGNUM *RSA_get0_iqmp(const RSA *r); +const RSA_PSS_PARAMS *RSA_get0_pss_params(const RSA *r); +void RSA_clear_flags(RSA *r, int flags); +int RSA_test_flags(const RSA *r, int flags); +void RSA_set_flags(RSA *r, int flags); +int RSA_get_version(RSA *r); +ENGINE *RSA_get0_engine(const RSA *r); + +/* Deprecated version */ +DEPRECATEDIN_0_9_8(RSA *RSA_generate_key(int bits, unsigned long e, void + (*callback) (int, int, void *), + void *cb_arg)) + +/* New version */ +int RSA_generate_key_ex(RSA *rsa, int bits, BIGNUM *e, BN_GENCB *cb); +/* Multi-prime version */ +int RSA_generate_multi_prime_key(RSA *rsa, int bits, int primes, + BIGNUM *e, BN_GENCB *cb); + +int RSA_X931_derive_ex(RSA *rsa, BIGNUM *p1, BIGNUM *p2, BIGNUM *q1, + BIGNUM *q2, const BIGNUM *Xp1, const BIGNUM *Xp2, + const BIGNUM *Xp, const BIGNUM *Xq1, const BIGNUM *Xq2, + const BIGNUM *Xq, const BIGNUM *e, BN_GENCB *cb); +int RSA_X931_generate_key_ex(RSA *rsa, int bits, const BIGNUM *e, + BN_GENCB *cb); + +int RSA_check_key(const RSA *); +int RSA_check_key_ex(const RSA *, BN_GENCB *cb); + /* 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_null_method(void); +const RSA_METHOD *RSA_get_method(const RSA *rsa); +int RSA_set_method(RSA *rsa, const RSA_METHOD *meth); + +/* these are the actual RSA functions */ +const RSA_METHOD *RSA_PKCS1_OpenSSL(void); + +int RSA_pkey_ctx_ctrl(EVP_PKEY_CTX *ctx, int optype, int cmd, int p1, void *p2); + +DECLARE_ASN1_ENCODE_FUNCTIONS_const(RSA, RSAPublicKey) +DECLARE_ASN1_ENCODE_FUNCTIONS_const(RSA, RSAPrivateKey) + +struct rsa_pss_params_st { + X509_ALGOR *hashAlgorithm; + X509_ALGOR *maskGenAlgorithm; + ASN1_INTEGER *saltLength; + ASN1_INTEGER *trailerField; + /* Decoded hash algorithm from maskGenAlgorithm */ + X509_ALGOR *maskHash; +}; + +DECLARE_ASN1_FUNCTIONS(RSA_PSS_PARAMS) + +typedef struct rsa_oaep_params_st { + X509_ALGOR *hashFunc; + X509_ALGOR *maskGenFunc; + X509_ALGOR *pSourceFunc; + /* Decoded hash algorithm from maskGenFunc */ + X509_ALGOR *maskHash; +} RSA_OAEP_PARAMS; + +DECLARE_ASN1_FUNCTIONS(RSA_OAEP_PARAMS) + +# ifndef OPENSSL_NO_STDIO +int RSA_print_fp(FILE *fp, const RSA *r, int offset); +# endif + +int RSA_print(BIO *bp, const RSA *r, int offset); + +/* + * 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); + +#define RSA_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_RSA, l, p, newf, dupf, freef) +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 + +RSA_METHOD *RSA_meth_new(const char *name, int flags); +void RSA_meth_free(RSA_METHOD *meth); +RSA_METHOD *RSA_meth_dup(const RSA_METHOD *meth); +const char *RSA_meth_get0_name(const RSA_METHOD *meth); +int RSA_meth_set1_name(RSA_METHOD *meth, const char *name); +int RSA_meth_get_flags(const RSA_METHOD *meth); +int RSA_meth_set_flags(RSA_METHOD *meth, int flags); +void *RSA_meth_get0_app_data(const RSA_METHOD *meth); +int RSA_meth_set0_app_data(RSA_METHOD *meth, void *app_data); +int (*RSA_meth_get_pub_enc(const RSA_METHOD *meth)) + (int flen, const unsigned char *from, + unsigned char *to, RSA *rsa, int padding); +int RSA_meth_set_pub_enc(RSA_METHOD *rsa, + int (*pub_enc) (int flen, const unsigned char *from, + unsigned char *to, RSA *rsa, + int padding)); +int (*RSA_meth_get_pub_dec(const RSA_METHOD *meth)) + (int flen, const unsigned char *from, + unsigned char *to, RSA *rsa, int padding); +int RSA_meth_set_pub_dec(RSA_METHOD *rsa, + int (*pub_dec) (int flen, const unsigned char *from, + unsigned char *to, RSA *rsa, + int padding)); +int (*RSA_meth_get_priv_enc(const RSA_METHOD *meth)) + (int flen, const unsigned char *from, + unsigned char *to, RSA *rsa, int padding); +int RSA_meth_set_priv_enc(RSA_METHOD *rsa, + int (*priv_enc) (int flen, const unsigned char *from, + unsigned char *to, RSA *rsa, + int padding)); +int (*RSA_meth_get_priv_dec(const RSA_METHOD *meth)) + (int flen, const unsigned char *from, + unsigned char *to, RSA *rsa, int padding); +int RSA_meth_set_priv_dec(RSA_METHOD *rsa, + int (*priv_dec) (int flen, const unsigned char *from, + unsigned char *to, RSA *rsa, + int padding)); +int (*RSA_meth_get_mod_exp(const RSA_METHOD *meth)) + (BIGNUM *r0, const BIGNUM *i, RSA *rsa, BN_CTX *ctx); +int RSA_meth_set_mod_exp(RSA_METHOD *rsa, + int (*mod_exp) (BIGNUM *r0, const BIGNUM *i, RSA *rsa, + BN_CTX *ctx)); +int (*RSA_meth_get_bn_mod_exp(const RSA_METHOD *meth)) + (BIGNUM *r, const BIGNUM *a, const BIGNUM *p, + const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx); +int RSA_meth_set_bn_mod_exp(RSA_METHOD *rsa, + int (*bn_mod_exp) (BIGNUM *r, + const BIGNUM *a, + const BIGNUM *p, + const BIGNUM *m, + BN_CTX *ctx, + BN_MONT_CTX *m_ctx)); +int (*RSA_meth_get_init(const RSA_METHOD *meth)) (RSA *rsa); +int RSA_meth_set_init(RSA_METHOD *rsa, int (*init) (RSA *rsa)); +int (*RSA_meth_get_finish(const RSA_METHOD *meth)) (RSA *rsa); +int RSA_meth_set_finish(RSA_METHOD *rsa, int (*finish) (RSA *rsa)); +int (*RSA_meth_get_sign(const RSA_METHOD *meth)) + (int type, + const unsigned char *m, unsigned int m_length, + unsigned char *sigret, unsigned int *siglen, + const RSA *rsa); +int RSA_meth_set_sign(RSA_METHOD *rsa, + int (*sign) (int type, const unsigned char *m, + unsigned int m_length, + unsigned char *sigret, unsigned int *siglen, + const RSA *rsa)); +int (*RSA_meth_get_verify(const RSA_METHOD *meth)) + (int dtype, const unsigned char *m, + unsigned int m_length, const unsigned char *sigbuf, + unsigned int siglen, const RSA *rsa); +int RSA_meth_set_verify(RSA_METHOD *rsa, + int (*verify) (int dtype, const unsigned char *m, + unsigned int m_length, + const unsigned char *sigbuf, + unsigned int siglen, const RSA *rsa)); +int (*RSA_meth_get_keygen(const RSA_METHOD *meth)) + (RSA *rsa, int bits, BIGNUM *e, BN_GENCB *cb); +int RSA_meth_set_keygen(RSA_METHOD *rsa, + int (*keygen) (RSA *rsa, int bits, BIGNUM *e, + BN_GENCB *cb)); +int (*RSA_meth_get_multi_prime_keygen(const RSA_METHOD *meth)) + (RSA *rsa, int bits, int primes, BIGNUM *e, BN_GENCB *cb); +int RSA_meth_set_multi_prime_keygen(RSA_METHOD *meth, + int (*keygen) (RSA *rsa, int bits, + int primes, BIGNUM *e, + BN_GENCB *cb)); + +# ifdef __cplusplus +} +# endif +# endif +#endif diff --git a/plugin/openssl/include/openssl/rsaerr.h b/plugin/openssl/include/openssl/rsaerr.h new file mode 100644 index 000000000..59b15e13e --- /dev/null +++ b/plugin/openssl/include/openssl/rsaerr.h @@ -0,0 +1,167 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_RSAERR_H +# define HEADER_RSAERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_RSA_strings(void); + +/* + * RSA function codes. + */ +# define RSA_F_CHECK_PADDING_MD 140 +# define RSA_F_ENCODE_PKCS1 146 +# define RSA_F_INT_RSA_VERIFY 145 +# define RSA_F_OLD_RSA_PRIV_DECODE 147 +# define RSA_F_PKEY_PSS_INIT 165 +# 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 149 +# define RSA_F_PKEY_RSA_VERIFYRECOVER 141 +# define RSA_F_RSA_ALGOR_TO_MD 156 +# define RSA_F_RSA_BUILTIN_KEYGEN 129 +# define RSA_F_RSA_CHECK_KEY 123 +# define RSA_F_RSA_CHECK_KEY_EX 160 +# define RSA_F_RSA_CMS_DECRYPT 159 +# define RSA_F_RSA_CMS_VERIFY 158 +# define RSA_F_RSA_ITEM_VERIFY 148 +# define RSA_F_RSA_METH_DUP 161 +# define RSA_F_RSA_METH_NEW 162 +# define RSA_F_RSA_METH_SET1_NAME 163 +# define RSA_F_RSA_MGF1_TO_MD 157 +# define RSA_F_RSA_MULTIP_INFO_NEW 166 +# define RSA_F_RSA_NEW_METHOD 106 +# define RSA_F_RSA_NULL 124 +# 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_OSSL_PRIVATE_DECRYPT 101 +# define RSA_F_RSA_OSSL_PRIVATE_ENCRYPT 102 +# define RSA_F_RSA_OSSL_PUBLIC_DECRYPT 103 +# define RSA_F_RSA_OSSL_PUBLIC_ENCRYPT 104 +# 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 154 +# define RSA_F_RSA_PADDING_ADD_PKCS1_PSS 125 +# define RSA_F_RSA_PADDING_ADD_PKCS1_PSS_MGF1 152 +# 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 153 +# 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_PARAM_DECODE 164 +# define RSA_F_RSA_PRINT 115 +# define RSA_F_RSA_PRINT_FP 116 +# define RSA_F_RSA_PRIV_DECODE 150 +# define RSA_F_RSA_PRIV_ENCODE 138 +# define RSA_F_RSA_PSS_GET_PARAM 151 +# define RSA_F_RSA_PSS_TO_CTX 155 +# 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_MGF1 126 +# define RSA_F_SETUP_TBUF 167 + +/* + * RSA 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 158 +# define RSA_R_DIGEST_NOT_ALLOWED 145 +# 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 157 +# define RSA_R_INVALID_DIGEST_LENGTH 143 +# define RSA_R_INVALID_HEADER 137 +# define RSA_R_INVALID_LABEL 160 +# define RSA_R_INVALID_MESSAGE_LENGTH 131 +# define RSA_R_INVALID_MGF1_MD 156 +# define RSA_R_INVALID_MULTI_PRIME_KEY 167 +# define RSA_R_INVALID_OAEP_PARAMETERS 161 +# 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_PRIME_NUM_INVALID 165 +# define RSA_R_KEY_SIZE_TOO_SMALL 120 +# define RSA_R_LAST_OCTET_INVALID 134 +# define RSA_R_MISSING_PRIVATE_KEY 179 +# define RSA_R_MGF1_DIGEST_NOT_ALLOWED 152 +# define RSA_R_MODULUS_TOO_LARGE 105 +# define RSA_R_MP_COEFFICIENT_NOT_INVERSE_OF_R 168 +# define RSA_R_MP_EXPONENT_NOT_CONGRUENT_TO_D 169 +# define RSA_R_MP_R_NOT_PRIME 170 +# define RSA_R_NO_PUBLIC_EXPONENT 140 +# define RSA_R_NULL_BEFORE_BLOCK_MISSING 113 +# define RSA_R_N_DOES_NOT_EQUAL_PRODUCT_OF_PRIMES 172 +# define RSA_R_N_DOES_NOT_EQUAL_P_Q 127 +# define RSA_R_OAEP_DECODING_ERROR 121 +# 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_PSS_SALTLEN_TOO_SMALL 164 +# 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 166 +# define RSA_R_UNKNOWN_MASK_DIGEST 151 +# define RSA_R_UNKNOWN_PADDING_TYPE 118 +# define RSA_R_UNSUPPORTED_ENCRYPTION_TYPE 162 +# define RSA_R_UNSUPPORTED_LABEL_SOURCE 163 +# 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 + +#endif diff --git a/plugin/openssl/include/openssl/safestack.h b/plugin/openssl/include/openssl/safestack.h new file mode 100644 index 000000000..38b557897 --- /dev/null +++ b/plugin/openssl/include/openssl/safestack.h @@ -0,0 +1,207 @@ +/* + * Copyright 1999-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_SAFESTACK_H +# define HEADER_SAFESTACK_H + +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +# define STACK_OF(type) struct stack_st_##type + +# define SKM_DEFINE_STACK_OF(t1, t2, t3) \ + STACK_OF(t1); \ + typedef int (*sk_##t1##_compfunc)(const t3 * const *a, const t3 *const *b); \ + typedef void (*sk_##t1##_freefunc)(t3 *a); \ + typedef t3 * (*sk_##t1##_copyfunc)(const t3 *a); \ + static ossl_unused ossl_inline int sk_##t1##_num(const STACK_OF(t1) *sk) \ + { \ + return OPENSSL_sk_num((const OPENSSL_STACK *)sk); \ + } \ + static ossl_unused ossl_inline t2 *sk_##t1##_value(const STACK_OF(t1) *sk, int idx) \ + { \ + return (t2 *)OPENSSL_sk_value((const OPENSSL_STACK *)sk, idx); \ + } \ + static ossl_unused ossl_inline STACK_OF(t1) *sk_##t1##_new(sk_##t1##_compfunc compare) \ + { \ + return (STACK_OF(t1) *)OPENSSL_sk_new((OPENSSL_sk_compfunc)compare); \ + } \ + static ossl_unused ossl_inline STACK_OF(t1) *sk_##t1##_new_null(void) \ + { \ + return (STACK_OF(t1) *)OPENSSL_sk_new_null(); \ + } \ + static ossl_unused ossl_inline STACK_OF(t1) *sk_##t1##_new_reserve(sk_##t1##_compfunc compare, int n) \ + { \ + return (STACK_OF(t1) *)OPENSSL_sk_new_reserve((OPENSSL_sk_compfunc)compare, n); \ + } \ + static ossl_unused ossl_inline int sk_##t1##_reserve(STACK_OF(t1) *sk, int n) \ + { \ + return OPENSSL_sk_reserve((OPENSSL_STACK *)sk, n); \ + } \ + static ossl_unused ossl_inline void sk_##t1##_free(STACK_OF(t1) *sk) \ + { \ + OPENSSL_sk_free((OPENSSL_STACK *)sk); \ + } \ + static ossl_unused ossl_inline void sk_##t1##_zero(STACK_OF(t1) *sk) \ + { \ + OPENSSL_sk_zero((OPENSSL_STACK *)sk); \ + } \ + static ossl_unused ossl_inline t2 *sk_##t1##_delete(STACK_OF(t1) *sk, int i) \ + { \ + return (t2 *)OPENSSL_sk_delete((OPENSSL_STACK *)sk, i); \ + } \ + static ossl_unused ossl_inline t2 *sk_##t1##_delete_ptr(STACK_OF(t1) *sk, t2 *ptr) \ + { \ + return (t2 *)OPENSSL_sk_delete_ptr((OPENSSL_STACK *)sk, \ + (const void *)ptr); \ + } \ + static ossl_unused ossl_inline int sk_##t1##_push(STACK_OF(t1) *sk, t2 *ptr) \ + { \ + return OPENSSL_sk_push((OPENSSL_STACK *)sk, (const void *)ptr); \ + } \ + static ossl_unused ossl_inline int sk_##t1##_unshift(STACK_OF(t1) *sk, t2 *ptr) \ + { \ + return OPENSSL_sk_unshift((OPENSSL_STACK *)sk, (const void *)ptr); \ + } \ + static ossl_unused ossl_inline t2 *sk_##t1##_pop(STACK_OF(t1) *sk) \ + { \ + return (t2 *)OPENSSL_sk_pop((OPENSSL_STACK *)sk); \ + } \ + static ossl_unused ossl_inline t2 *sk_##t1##_shift(STACK_OF(t1) *sk) \ + { \ + return (t2 *)OPENSSL_sk_shift((OPENSSL_STACK *)sk); \ + } \ + static ossl_unused ossl_inline void sk_##t1##_pop_free(STACK_OF(t1) *sk, sk_##t1##_freefunc freefunc) \ + { \ + OPENSSL_sk_pop_free((OPENSSL_STACK *)sk, (OPENSSL_sk_freefunc)freefunc); \ + } \ + static ossl_unused ossl_inline int sk_##t1##_insert(STACK_OF(t1) *sk, t2 *ptr, int idx) \ + { \ + return OPENSSL_sk_insert((OPENSSL_STACK *)sk, (const void *)ptr, idx); \ + } \ + static ossl_unused ossl_inline t2 *sk_##t1##_set(STACK_OF(t1) *sk, int idx, t2 *ptr) \ + { \ + return (t2 *)OPENSSL_sk_set((OPENSSL_STACK *)sk, idx, (const void *)ptr); \ + } \ + static ossl_unused ossl_inline int sk_##t1##_find(STACK_OF(t1) *sk, t2 *ptr) \ + { \ + return OPENSSL_sk_find((OPENSSL_STACK *)sk, (const void *)ptr); \ + } \ + static ossl_unused ossl_inline int sk_##t1##_find_ex(STACK_OF(t1) *sk, t2 *ptr) \ + { \ + return OPENSSL_sk_find_ex((OPENSSL_STACK *)sk, (const void *)ptr); \ + } \ + static ossl_unused ossl_inline void sk_##t1##_sort(STACK_OF(t1) *sk) \ + { \ + OPENSSL_sk_sort((OPENSSL_STACK *)sk); \ + } \ + static ossl_unused ossl_inline int sk_##t1##_is_sorted(const STACK_OF(t1) *sk) \ + { \ + return OPENSSL_sk_is_sorted((const OPENSSL_STACK *)sk); \ + } \ + static ossl_unused ossl_inline STACK_OF(t1) * sk_##t1##_dup(const STACK_OF(t1) *sk) \ + { \ + return (STACK_OF(t1) *)OPENSSL_sk_dup((const OPENSSL_STACK *)sk); \ + } \ + static ossl_unused ossl_inline STACK_OF(t1) *sk_##t1##_deep_copy(const STACK_OF(t1) *sk, \ + sk_##t1##_copyfunc copyfunc, \ + sk_##t1##_freefunc freefunc) \ + { \ + return (STACK_OF(t1) *)OPENSSL_sk_deep_copy((const OPENSSL_STACK *)sk, \ + (OPENSSL_sk_copyfunc)copyfunc, \ + (OPENSSL_sk_freefunc)freefunc); \ + } \ + static ossl_unused ossl_inline sk_##t1##_compfunc sk_##t1##_set_cmp_func(STACK_OF(t1) *sk, sk_##t1##_compfunc compare) \ + { \ + return (sk_##t1##_compfunc)OPENSSL_sk_set_cmp_func((OPENSSL_STACK *)sk, (OPENSSL_sk_compfunc)compare); \ + } + +# define DEFINE_SPECIAL_STACK_OF(t1, t2) SKM_DEFINE_STACK_OF(t1, t2, t2) +# define DEFINE_STACK_OF(t) SKM_DEFINE_STACK_OF(t, t, t) +# define DEFINE_SPECIAL_STACK_OF_CONST(t1, t2) \ + SKM_DEFINE_STACK_OF(t1, const t2, t2) +# define DEFINE_STACK_OF_CONST(t) SKM_DEFINE_STACK_OF(t, const t, t) + +/*- + * 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. + */ +DEFINE_SPECIAL_STACK_OF(OPENSSL_STRING, char) +DEFINE_SPECIAL_STACK_OF_CONST(OPENSSL_CSTRING, char) + +/* + * Similarly, we sometimes use a block of characters, NOT nul-terminated. + * These should also be distinguished from "normal" stacks. + */ +typedef void *OPENSSL_BLOCK; +DEFINE_SPECIAL_STACK_OF(OPENSSL_BLOCK, void) + +/* + * If called without higher optimization (min. -xO3) the Oracle Developer + * Studio compiler generates code for the defined (static inline) functions + * above. + * This would later lead to the linker complaining about missing symbols when + * this header file is included but the resulting object is not linked against + * the Crypto library (openssl#6912). + */ +# ifdef __SUNPRO_C +# pragma weak OPENSSL_sk_num +# pragma weak OPENSSL_sk_value +# pragma weak OPENSSL_sk_new +# pragma weak OPENSSL_sk_new_null +# pragma weak OPENSSL_sk_new_reserve +# pragma weak OPENSSL_sk_reserve +# pragma weak OPENSSL_sk_free +# pragma weak OPENSSL_sk_zero +# pragma weak OPENSSL_sk_delete +# pragma weak OPENSSL_sk_delete_ptr +# pragma weak OPENSSL_sk_push +# pragma weak OPENSSL_sk_unshift +# pragma weak OPENSSL_sk_pop +# pragma weak OPENSSL_sk_shift +# pragma weak OPENSSL_sk_pop_free +# pragma weak OPENSSL_sk_insert +# pragma weak OPENSSL_sk_set +# pragma weak OPENSSL_sk_find +# pragma weak OPENSSL_sk_find_ex +# pragma weak OPENSSL_sk_sort +# pragma weak OPENSSL_sk_is_sorted +# pragma weak OPENSSL_sk_dup +# pragma weak OPENSSL_sk_deep_copy +# pragma weak OPENSSL_sk_set_cmp_func +# endif /* __SUNPRO_C */ + +# ifdef __cplusplus +} +# endif +#endif diff --git a/plugin/openssl/include/openssl/seed.h b/plugin/openssl/include/openssl/seed.h new file mode 100644 index 000000000..de10b0857 --- /dev/null +++ b/plugin/openssl/include/openssl/seed.h @@ -0,0 +1,96 @@ +/* + * Copyright 2007-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +/* + * 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. + */ + +#ifndef HEADER_SEED_H +# define HEADER_SEED_H + +# include + +# ifndef OPENSSL_NO_SEED +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +/* look whether we need 'long' to get 32 bits */ +# ifdef AES_LONG +# ifndef SEED_LONG +# define SEED_LONG 1 +# endif +# endif + +# include + +# define SEED_BLOCK_SIZE 16 +# define SEED_KEY_LENGTH 16 + +typedef struct seed_key_st { +# ifdef SEED_LONG + unsigned long data[32]; +# else + unsigned int data[32]; +# endif +} SEED_KEY_SCHEDULE; + +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 + +#endif diff --git a/plugin/openssl/include/openssl/sha.h b/plugin/openssl/include/openssl/sha.h new file mode 100644 index 000000000..6a1eb0de8 --- /dev/null +++ b/plugin/openssl/include/openssl/sha.h @@ -0,0 +1,119 @@ +/* + * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_SHA_H +# define HEADER_SHA_H + +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +/*- + * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + * ! SHA_LONG has to be at least 32 bits wide. ! + * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + */ +# define SHA_LONG unsigned int + +# 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; + +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); + +# define SHA256_CBLOCK (SHA_LBLOCK*4)/* SHA-256 treats input data as a + * contiguous array of 32 bit wide + * big-endian values. */ + +typedef struct SHA256state_st { + SHA_LONG h[8]; + SHA_LONG Nl, Nh; + SHA_LONG data[SHA_LBLOCK]; + unsigned int num, md_len; +} SHA256_CTX; + +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); + +# define SHA224_DIGEST_LENGTH 28 +# define SHA256_DIGEST_LENGTH 32 +# define SHA384_DIGEST_LENGTH 48 +# define SHA512_DIGEST_LENGTH 64 + +/* + * 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; + +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); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/plugin/openssl/include/openssl/srp.h b/plugin/openssl/include/openssl/srp.h new file mode 100644 index 000000000..aaf13558e --- /dev/null +++ b/plugin/openssl/include/openssl/srp.h @@ -0,0 +1,135 @@ +/* + * Copyright 2004-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2004, EdelKey Project. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + * + * Originally written by Christophe Renou and Peter Sylvester, + * for the EdelKey project. + */ + +#ifndef HEADER_SRP_H +# define HEADER_SRP_H + +#include + +#ifndef OPENSSL_NO_SRP +# include +# include +# include +# include +# include + +# ifdef __cplusplus +extern "C" { +# endif + +typedef struct SRP_gN_cache_st { + char *b64_bn; + BIGNUM *bn; +} SRP_gN_cache; + + +DEFINE_STACK_OF(SRP_gN_cache) + +typedef struct SRP_user_pwd_st { + /* Owned by us. */ + char *id; + BIGNUM *s; + BIGNUM *v; + /* Not owned by us. */ + const BIGNUM *g; + const BIGNUM *N; + /* Owned by us. */ + char *info; +} SRP_user_pwd; + +void SRP_user_pwd_free(SRP_user_pwd *user_pwd); + +DEFINE_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; + const BIGNUM *default_g; + const BIGNUM *default_N; +} SRP_VBASE; + +/* + * Internal structure storing N and g pair + */ +typedef struct SRP_gN_st { + char *id; + const BIGNUM *g; + const BIGNUM *N; +} SRP_gN; + +DEFINE_STACK_OF(SRP_gN) + +SRP_VBASE *SRP_VBASE_new(char *seed_key); +void SRP_VBASE_free(SRP_VBASE *vb); +int SRP_VBASE_init(SRP_VBASE *vb, char *verifier_file); + +/* This method ignores the configured seed and fails for an unknown user. */ +DEPRECATEDIN_1_1_0(SRP_user_pwd *SRP_VBASE_get_by_user(SRP_VBASE *vb, char *username)) +/* NOTE: unlike in SRP_VBASE_get_by_user, caller owns the returned pointer.*/ +SRP_user_pwd *SRP_VBASE_get1_by_user(SRP_VBASE *vb, char *username); + +char *SRP_create_verifier(const char *user, const char *pass, char **salt, + char **verifier, const char *N, const char *g); +int SRP_create_verifier_BN(const char *user, const char *pass, BIGNUM **salt, + BIGNUM **verifier, const BIGNUM *N, + const 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(const BIGNUM *g, const BIGNUM *N); +SRP_gN *SRP_get_default_gN(const char *id); + +/* server side .... */ +BIGNUM *SRP_Calc_server_key(const BIGNUM *A, const BIGNUM *v, const BIGNUM *u, + const BIGNUM *b, const BIGNUM *N); +BIGNUM *SRP_Calc_B(const BIGNUM *b, const BIGNUM *N, const BIGNUM *g, + const BIGNUM *v); +int SRP_Verify_A_mod_N(const BIGNUM *A, const BIGNUM *N); +BIGNUM *SRP_Calc_u(const BIGNUM *A, const BIGNUM *B, const BIGNUM *N); + +/* client side .... */ +BIGNUM *SRP_Calc_x(const BIGNUM *s, const char *user, const char *pass); +BIGNUM *SRP_Calc_A(const BIGNUM *a, const BIGNUM *N, const BIGNUM *g); +BIGNUM *SRP_Calc_client_key(const BIGNUM *N, const BIGNUM *B, const BIGNUM *g, + const BIGNUM *x, const BIGNUM *a, const BIGNUM *u); +int SRP_Verify_B_mod_N(const BIGNUM *B, const BIGNUM *N); + +# define SRP_MINIMAL_N 1024 + +# ifdef __cplusplus +} +# endif +# endif + +#endif diff --git a/plugin/openssl/include/openssl/srtp.h b/plugin/openssl/include/openssl/srtp.h new file mode 100644 index 000000000..0b57c2356 --- /dev/null +++ b/plugin/openssl/include/openssl/srtp.h @@ -0,0 +1,50 @@ +/* + * Copyright 2011-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +/* + * 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 + +/* AEAD SRTP protection profiles from RFC 7714 */ +# define SRTP_AEAD_AES_128_GCM 0x0007 +# define SRTP_AEAD_AES_256_GCM 0x0008 + +# ifndef OPENSSL_NO_SRTP + +__owur int SSL_CTX_set_tlsext_use_srtp(SSL_CTX *ctx, const char *profiles); +__owur int SSL_set_tlsext_use_srtp(SSL *ssl, const char *profiles); + +__owur STACK_OF(SRTP_PROTECTION_PROFILE) *SSL_get_srtp_profiles(SSL *ssl); +__owur SRTP_PROTECTION_PROFILE *SSL_get_selected_srtp_profile(SSL *s); + +# endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/plugin/openssl/include/openssl/ssl.h b/plugin/openssl/include/openssl/ssl.h new file mode 100644 index 000000000..9af0c8995 --- /dev/null +++ b/plugin/openssl/include/openssl/ssl.h @@ -0,0 +1,2448 @@ +/* + * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved + * Copyright 2005 Nokia. All rights reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_SSL_H +# define HEADER_SSL_H + +# include +# include +# include +# include +# if OPENSSL_API_COMPAT < 0x10100000L +# include +# include +# include +# endif +# include +# include +# include +# include + +# include +# include +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +/* OpenSSL 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 + +# 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 + +/* The maximum number of encrypt/decrypt pipelines we can support */ +# define SSL_MAX_PIPELINES 32 + +/* text strings for the ciphers */ + +/* These are used to specify which ciphers to use and not to use */ + +# define SSL_TXT_LOW "LOW" +# define SSL_TXT_MEDIUM "MEDIUM" +# define SSL_TXT_HIGH "HIGH" +# define SSL_TXT_FIPS "FIPS" + +# 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"/* this cipher class has been removed */ +# define SSL_TXT_kDHd "kDHd"/* this cipher class has been removed */ +# define SSL_TXT_kDH "kDH"/* this cipher class has been removed */ +# define SSL_TXT_kEDH "kEDH"/* alias for kDHE */ +# define SSL_TXT_kDHE "kDHE" +# define SSL_TXT_kECDHr "kECDHr"/* this cipher class has been removed */ +# define SSL_TXT_kECDHe "kECDHe"/* this cipher class has been removed */ +# define SSL_TXT_kECDH "kECDH"/* this cipher class has been removed */ +# define SSL_TXT_kEECDH "kEECDH"/* alias for kECDHE */ +# define SSL_TXT_kECDHE "kECDHE" +# define SSL_TXT_kPSK "kPSK" +# define SSL_TXT_kRSAPSK "kRSAPSK" +# define SSL_TXT_kECDHEPSK "kECDHEPSK" +# define SSL_TXT_kDHEPSK "kDHEPSK" +# 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"/* this cipher class has been removed */ +# define SSL_TXT_aECDH "aECDH"/* this cipher class has been removed */ +# define SSL_TXT_aECDSA "aECDSA" +# define SSL_TXT_aPSK "aPSK" +# define SSL_TXT_aGOST94 "aGOST94" +# define SSL_TXT_aGOST01 "aGOST01" +# define SSL_TXT_aGOST12 "aGOST12" +# define SSL_TXT_aGOST "aGOST" +# define SSL_TXT_aSRP "aSRP" + +# define SSL_TXT_DSS "DSS" +# define SSL_TXT_DH "DH" +# define SSL_TXT_DHE "DHE"/* same as "kDHE:-ADH" */ +# define SSL_TXT_EDH "EDH"/* alias for DHE */ +# define SSL_TXT_ADH "ADH" +# define SSL_TXT_RSA "RSA" +# define SSL_TXT_ECDH "ECDH" +# define SSL_TXT_EECDH "EECDH"/* alias for ECDHE" */ +# define SSL_TXT_ECDHE "ECDHE"/* same as "kECDHE:-AECDH" */ +# define SSL_TXT_AECDH "AECDH" +# define SSL_TXT_ECDSA "ECDSA" +# 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_AES_CCM "AESCCM" +# define SSL_TXT_AES_CCM_8 "AESCCM8" +# define SSL_TXT_CAMELLIA128 "CAMELLIA128" +# define SSL_TXT_CAMELLIA256 "CAMELLIA256" +# define SSL_TXT_CAMELLIA "CAMELLIA" +# define SSL_TXT_CHACHA20 "CHACHA20" +# define SSL_TXT_GOST "GOST89" +# define SSL_TXT_ARIA "ARIA" +# define SSL_TXT_ARIA_GCM "ARIAGCM" +# define SSL_TXT_ARIA128 "ARIA128" +# define SSL_TXT_ARIA256 "ARIA256" + +# 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_GOST12 "GOST12" +# define SSL_TXT_GOST89MAC12 "GOST89MAC12" +# define SSL_TXT_SHA256 "SHA256" +# define SSL_TXT_SHA384 "SHA384" + +# 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_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'. + * This applies to ciphersuites for TLSv1.2 and below. + */ +# define SSL_DEFAULT_CIPHER_LIST "ALL:!COMPLEMENTOFDEFAULT:!eNULL" +/* This is the default set of TLSv1.3 ciphersuites */ +# if !defined(OPENSSL_NO_CHACHA) && !defined(OPENSSL_NO_POLY1305) +# define TLS_DEFAULT_CIPHERSUITES "TLS_AES_256_GCM_SHA384:" \ + "TLS_CHACHA20_POLY1305_SHA256:" \ + "TLS_AES_128_GCM_SHA256" +# else +# define TLS_DEFAULT_CIPHERSUITES "TLS_AES_256_GCM_SHA384:" \ + "TLS_AES_128_GCM_SHA256" +#endif +/* + * 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 + +# 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; +typedef struct ssl_comp_st SSL_COMP; + +STACK_OF(SSL_CIPHER); +STACK_OF(SSL_COMP); + +/* 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; + +DEFINE_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, + const SSL_CIPHER **cipher, void *arg); + +/* Extension context codes */ +/* This extension is only allowed in TLS */ +#define SSL_EXT_TLS_ONLY 0x0001 +/* This extension is only allowed in DTLS */ +#define SSL_EXT_DTLS_ONLY 0x0002 +/* Some extensions may be allowed in DTLS but we don't implement them for it */ +#define SSL_EXT_TLS_IMPLEMENTATION_ONLY 0x0004 +/* Most extensions are not defined for SSLv3 but EXT_TYPE_renegotiate is */ +#define SSL_EXT_SSL3_ALLOWED 0x0008 +/* Extension is only defined for TLS1.2 and below */ +#define SSL_EXT_TLS1_2_AND_BELOW_ONLY 0x0010 +/* Extension is only defined for TLS1.3 and above */ +#define SSL_EXT_TLS1_3_ONLY 0x0020 +/* Ignore this extension during parsing if we are resuming */ +#define SSL_EXT_IGNORE_ON_RESUMPTION 0x0040 +#define SSL_EXT_CLIENT_HELLO 0x0080 +/* Really means TLS1.2 or below */ +#define SSL_EXT_TLS1_2_SERVER_HELLO 0x0100 +#define SSL_EXT_TLS1_3_SERVER_HELLO 0x0200 +#define SSL_EXT_TLS1_3_ENCRYPTED_EXTENSIONS 0x0400 +#define SSL_EXT_TLS1_3_HELLO_RETRY_REQUEST 0x0800 +#define SSL_EXT_TLS1_3_CERTIFICATE 0x1000 +#define SSL_EXT_TLS1_3_NEW_SESSION_TICKET 0x2000 +#define SSL_EXT_TLS1_3_CERTIFICATE_REQUEST 0x4000 + +/* 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); + + +typedef int (*SSL_custom_ext_add_cb_ex)(SSL *s, unsigned int ext_type, + unsigned int context, + const unsigned char **out, + size_t *outlen, X509 *x, + size_t chainidx, + int *al, void *add_arg); + +typedef void (*SSL_custom_ext_free_cb_ex)(SSL *s, unsigned int ext_type, + unsigned int context, + const unsigned char *out, + void *add_arg); + +typedef int (*SSL_custom_ext_parse_cb_ex)(SSL *s, unsigned int ext_type, + unsigned int context, + const unsigned char *in, + size_t inlen, X509 *x, + size_t chainidx, + int *al, void *parse_arg); + +/* Typedef for verification callback */ +typedef int (*SSL_verify_cb)(int preverify_ok, X509_STORE_CTX *x509_ctx); + +/* + * Some values are reserved until OpenSSL 1.2.0 because they were previously + * included in SSL_OP_ALL in a 1.1.x release. + * + * Reserved value (until OpenSSL 1.2.0) 0x00000001U + * Reserved value (until OpenSSL 1.2.0) 0x00000002U + */ +/* Allow initial connection to servers that don't support RI */ +# define SSL_OP_LEGACY_SERVER_CONNECT 0x00000004U + +/* Reserved value (until OpenSSL 1.2.0) 0x00000008U */ +# define SSL_OP_TLSEXT_PADDING 0x00000010U +/* Reserved value (until OpenSSL 1.2.0) 0x00000020U */ +# define SSL_OP_SAFARI_ECDHE_ECDSA_BUG 0x00000040U +/* + * Reserved value (until OpenSSL 1.2.0) 0x00000080U + * Reserved value (until OpenSSL 1.2.0) 0x00000100U + * Reserved value (until OpenSSL 1.2.0) 0x00000200U + */ + +/* In TLSv1.3 allow a non-(ec)dhe based kex_mode */ +# define SSL_OP_ALLOW_NO_DHE_KEX 0x00000400U + +/* + * 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 0x00000800U + +/* DTLS options */ +# define SSL_OP_NO_QUERY_MTU 0x00001000U +/* Turn on Cookie Exchange (on relevant for servers) */ +# define SSL_OP_COOKIE_EXCHANGE 0x00002000U +/* Don't use RFC4507 ticket extension */ +# define SSL_OP_NO_TICKET 0x00004000U +# ifndef OPENSSL_NO_DTLS1_METHOD +/* Use Cisco's "speshul" version of DTLS_BAD_VER + * (only with deprecated DTLSv1_client_method()) */ +# define SSL_OP_CISCO_ANYCONNECT 0x00008000U +# endif + +/* As server, disallow session resumption on renegotiation */ +# define SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION 0x00010000U +/* Don't use compression even if supported */ +# define SSL_OP_NO_COMPRESSION 0x00020000U +/* Permit unsafe legacy renegotiation */ +# define SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION 0x00040000U +/* Disable encrypt-then-mac */ +# define SSL_OP_NO_ENCRYPT_THEN_MAC 0x00080000U + +/* + * Enable TLSv1.3 Compatibility mode. This is on by default. A future version + * of OpenSSL may have this disabled by default. + */ +# define SSL_OP_ENABLE_MIDDLEBOX_COMPAT 0x00100000U + +/* Prioritize Chacha20Poly1305 when client does. + * Modifies SSL_OP_CIPHER_SERVER_PREFERENCE */ +# define SSL_OP_PRIORITIZE_CHACHA 0x00200000U + +/* + * Set on servers to choose the cipher according to the server's preferences + */ +# define SSL_OP_CIPHER_SERVER_PREFERENCE 0x00400000U +/* + * 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 0x00800000U + +/* + * Switches off automatic TLSv1.3 anti-replay protection for early data. This + * is a server-side option only (no effect on the client). + */ +# define SSL_OP_NO_ANTI_REPLAY 0x01000000U + +# define SSL_OP_NO_SSLv3 0x02000000U +# define SSL_OP_NO_TLSv1 0x04000000U +# define SSL_OP_NO_TLSv1_2 0x08000000U +# define SSL_OP_NO_TLSv1_1 0x10000000U +# define SSL_OP_NO_TLSv1_3 0x20000000U + +# define SSL_OP_NO_DTLSv1 0x04000000U +# define SSL_OP_NO_DTLSv1_2 0x08000000U + +# define SSL_OP_NO_SSL_MASK (SSL_OP_NO_SSLv3|\ + SSL_OP_NO_TLSv1|SSL_OP_NO_TLSv1_1|SSL_OP_NO_TLSv1_2|SSL_OP_NO_TLSv1_3) +# define SSL_OP_NO_DTLS_MASK (SSL_OP_NO_DTLSv1|SSL_OP_NO_DTLSv1_2) + +/* Disallow all renegotiation */ +# define SSL_OP_NO_RENEGOTIATION 0x40000000U + +/* + * 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 0x80000000U + +/* + * SSL_OP_ALL: various bug workarounds that should be rather harmless. + * This used to be 0x000FFFFFL before 0.9.7. + * This used to be 0x80000BFFU before 1.1.1. + */ +# define SSL_OP_ALL (SSL_OP_CRYPTOPRO_TLSEXT_BUG|\ + SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS|\ + SSL_OP_LEGACY_SERVER_CONNECT|\ + SSL_OP_TLSEXT_PADDING|\ + SSL_OP_SAFARI_ECDHE_ECDSA_BUG) + +/* OBSOLETE OPTIONS: retained for compatibility */ + +/* Removed from OpenSSL 1.1.0. Was 0x00000001L */ +/* Related to removed SSLv2. */ +# define SSL_OP_MICROSOFT_SESS_ID_BUG 0x0 +/* Removed from OpenSSL 1.1.0. Was 0x00000002L */ +/* Related to removed SSLv2. */ +# define SSL_OP_NETSCAPE_CHALLENGE_BUG 0x0 +/* Removed from OpenSSL 0.9.8q and 1.0.0c. Was 0x00000008L */ +/* Dead forever, see CVE-2010-4180 */ +# define SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG 0x0 +/* Removed from OpenSSL 1.0.1h and 1.0.2. Was 0x00000010L */ +/* Refers to ancient SSLREF and SSLv2. */ +# define SSL_OP_SSLREF2_REUSE_CERT_TYPE_BUG 0x0 +/* Removed from OpenSSL 1.1.0. Was 0x00000020 */ +# define SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER 0x0 +/* Removed from OpenSSL 0.9.7h and 0.9.8b. Was 0x00000040L */ +# define SSL_OP_MSIE_SSLV2_RSA_PADDING 0x0 +/* Removed from OpenSSL 1.1.0. Was 0x00000080 */ +/* Ancient SSLeay version. */ +# define SSL_OP_SSLEAY_080_CLIENT_DH_BUG 0x0 +/* Removed from OpenSSL 1.1.0. Was 0x00000100L */ +# define SSL_OP_TLS_D5_BUG 0x0 +/* Removed from OpenSSL 1.1.0. Was 0x00000200L */ +# define SSL_OP_TLS_BLOCK_PADDING_BUG 0x0 +/* Removed from OpenSSL 1.1.0. Was 0x00080000L */ +# define SSL_OP_SINGLE_ECDH_USE 0x0 +/* Removed from OpenSSL 1.1.0. Was 0x00100000L */ +# define SSL_OP_SINGLE_DH_USE 0x0 +/* Removed from OpenSSL 1.0.1k and 1.0.2. Was 0x00200000L */ +# define SSL_OP_EPHEMERAL_RSA 0x0 +/* Removed from OpenSSL 1.1.0. Was 0x01000000L */ +# define SSL_OP_NO_SSLv2 0x0 +/* Removed from OpenSSL 1.0.1. Was 0x08000000L */ +# define SSL_OP_PKCS1_CHECK_1 0x0 +/* Removed from OpenSSL 1.0.1. Was 0x10000000L */ +# define SSL_OP_PKCS1_CHECK_2 0x0 +/* Removed from OpenSSL 1.1.0. Was 0x20000000L */ +# define SSL_OP_NETSCAPE_CA_DN_BUG 0x0 +/* Removed from OpenSSL 1.1.0. Was 0x40000000L */ +# define SSL_OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUG 0x0 + +/* + * 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 0x00000001U +/* + * 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 0x00000002U +/* + * Never bother the application with retries if the transport is blocking: + */ +# define SSL_MODE_AUTO_RETRY 0x00000004U +/* Don't attempt to automatically build certificate chain */ +# define SSL_MODE_NO_AUTO_CHAIN 0x00000008U +/* + * Save RAM by releasing read and write buffers when they're empty. (SSL3 and + * TLS only.) Released buffers are freed. + */ +# define SSL_MODE_RELEASE_BUFFERS 0x00000010U +/* + * 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 0x00000020U +# define SSL_MODE_SEND_SERVERHELLO_TIME 0x00000040U +/* + * 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 0x00000080U +/* + * Support Asynchronous operation + */ +# define SSL_MODE_ASYNC 0x00000100U + +/* + * When using DTLS/SCTP, include the terminating zero in the label + * used for computing the endpoint-pair shared secret. Required for + * interoperability with implementations having this bug like these + * older version of OpenSSL: + * - OpenSSL 1.0.0 series + * - OpenSSL 1.0.1 series + * - OpenSSL 1.0.2 series + * - OpenSSL 1.1.0 series + * - OpenSSL 1.1.1 and 1.1.1a + */ +# define SSL_MODE_DTLS_SCTP_LABEL_LENGTH_BUG 0x00000400U + +/* Cert related flags */ +/* + * Many implementations ignore some aspects of the TLS standards such as + * enforcing certificate chain algorithms. When this is set we enforce them. + */ +# define SSL_CERT_FLAG_TLS_STRICT 0x00000001U + +/* 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 +# define SSL_CONF_FLAG_REQUIRE_PRIVATE 0x40 +/* 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 +# define SSL_CONF_TYPE_NONE 0x4 + +/* Maximum length of the application-controlled segment of a a TLSv1.3 cookie */ +# define SSL_COOKIE_LENGTH 4096 + +/* + * Note: SSL[_CTX]_set_{options,mode} use |= op on the previous value, they + * cannot be used to clear bits. + */ + +unsigned long SSL_CTX_get_options(const SSL_CTX *ctx); +unsigned long SSL_get_options(const SSL *s); +unsigned long SSL_CTX_clear_options(SSL_CTX *ctx, unsigned long op); +unsigned long SSL_clear_options(SSL *s, unsigned long op); +unsigned long SSL_CTX_set_options(SSL_CTX *ctx, unsigned long op); +unsigned long SSL_set_options(SSL *s, unsigned long op); + +# 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_DTLS_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)) + +# define SSL_get_extms_support(s) \ + SSL_ctrl((s),SSL_CTRL_GET_EXTMS_SUPPORT,0,NULL) + +# ifndef OPENSSL_NO_SRP + +/* see tls_srp.c */ +__owur int SSL_SRP_CTX_init(SSL *s); +__owur 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); +__owur int SSL_srp_server_param_with_username(SSL *s, int *ad); +__owur int SRP_Calc_A_param(SSL *s); + +# endif + +/* 100k max cert list */ +# define SSL_MAX_CERT_LIST_DEFAULT 1024*100 + +# 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 SSLv3/TLSv1 it is 32 + * bytes. The callback can alter this length to be less if desired. It is + * also an error for the callback to set the size to zero. + */ +typedef int (*GEN_SESSION_CB) (SSL *ssl, unsigned char *id, + unsigned int *id_len); + +# 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, + const unsigned char + *data, int len, + int *copy)); +SSL_SESSION *(*SSL_CTX_sess_get_get_cb(SSL_CTX *ctx)) (struct ssl_st *ssl, + const 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 +__owur 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, + const unsigned + char *cookie, + unsigned int + cookie_len)); + +void SSL_CTX_set_stateless_cookie_generate_cb( + SSL_CTX *ctx, + int (*gen_stateless_cookie_cb) (SSL *ssl, + unsigned char *cookie, + size_t *cookie_len)); +void SSL_CTX_set_stateless_cookie_verify_cb( + SSL_CTX *ctx, + int (*verify_stateless_cookie_cb) (SSL *ssl, + const unsigned char *cookie, + size_t cookie_len)); +# ifndef OPENSSL_NO_NEXTPROTONEG + +typedef int (*SSL_CTX_npn_advertised_cb_func)(SSL *ssl, + const unsigned char **out, + unsigned int *outlen, + void *arg); +void SSL_CTX_set_next_protos_advertised_cb(SSL_CTX *s, + SSL_CTX_npn_advertised_cb_func cb, + void *arg); +# define SSL_CTX_set_npn_advertised_cb SSL_CTX_set_next_protos_advertised_cb + +typedef int (*SSL_CTX_npn_select_cb_func)(SSL *s, + unsigned char **out, + unsigned char *outlen, + const unsigned char *in, + unsigned int inlen, + void *arg); +void SSL_CTX_set_next_proto_select_cb(SSL_CTX *s, + SSL_CTX_npn_select_cb_func cb, + void *arg); +# define SSL_CTX_set_npn_select_cb SSL_CTX_set_next_proto_select_cb + +void SSL_get0_next_proto_negotiated(const SSL *s, const unsigned char **data, + unsigned *len); +# define SSL_get0_npn_negotiated SSL_get0_next_proto_negotiated +# endif + +__owur 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); + +# define OPENSSL_NPN_UNSUPPORTED 0 +# define OPENSSL_NPN_NEGOTIATED 1 +# define OPENSSL_NPN_NO_OVERLAP 2 + +__owur int SSL_CTX_set_alpn_protos(SSL_CTX *ctx, const unsigned char *protos, + unsigned int protos_len); +__owur int SSL_set_alpn_protos(SSL *ssl, const unsigned char *protos, + unsigned int protos_len); +typedef int (*SSL_CTX_alpn_select_cb_func)(SSL *ssl, + const unsigned char **out, + unsigned char *outlen, + const unsigned char *in, + unsigned int inlen, + void *arg); +void SSL_CTX_set_alpn_select_cb(SSL_CTX *ctx, + SSL_CTX_alpn_select_cb_func cb, + void *arg); +void SSL_get0_alpn_selected(const SSL *ssl, const unsigned char **data, + unsigned int *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 +typedef unsigned int (*SSL_psk_client_cb_func)(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_client_callback(SSL_CTX *ctx, SSL_psk_client_cb_func cb); +void SSL_set_psk_client_callback(SSL *ssl, SSL_psk_client_cb_func cb); + +typedef unsigned int (*SSL_psk_server_cb_func)(SSL *ssl, + const char *identity, + unsigned char *psk, + unsigned int max_psk_len); +void SSL_CTX_set_psk_server_callback(SSL_CTX *ctx, SSL_psk_server_cb_func cb); +void SSL_set_psk_server_callback(SSL *ssl, SSL_psk_server_cb_func cb); + +__owur int SSL_CTX_use_psk_identity_hint(SSL_CTX *ctx, const char *identity_hint); +__owur 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 + +typedef int (*SSL_psk_find_session_cb_func)(SSL *ssl, + const unsigned char *identity, + size_t identity_len, + SSL_SESSION **sess); +typedef int (*SSL_psk_use_session_cb_func)(SSL *ssl, const EVP_MD *md, + const unsigned char **id, + size_t *idlen, + SSL_SESSION **sess); + +void SSL_set_psk_find_session_callback(SSL *s, SSL_psk_find_session_cb_func cb); +void SSL_CTX_set_psk_find_session_callback(SSL_CTX *ctx, + SSL_psk_find_session_cb_func cb); +void SSL_set_psk_use_session_callback(SSL *s, SSL_psk_use_session_cb_func cb); +void SSL_CTX_set_psk_use_session_callback(SSL_CTX *ctx, + SSL_psk_use_session_cb_func cb); + +/* Register callbacks to handle custom TLS Extensions for client or server. */ + +__owur int SSL_CTX_has_client_custom_ext(const SSL_CTX *ctx, + unsigned int ext_type); + +__owur 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); + +__owur 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); + +__owur int SSL_CTX_add_custom_ext(SSL_CTX *ctx, unsigned int ext_type, + unsigned int context, + SSL_custom_ext_add_cb_ex add_cb, + SSL_custom_ext_free_cb_ex free_cb, + void *add_arg, + SSL_custom_ext_parse_cb_ex parse_cb, + void *parse_arg); + +__owur int SSL_extension_supported(unsigned int ext_type); + +# define SSL_NOTHING 1 +# define SSL_WRITING 2 +# define SSL_READING 3 +# define SSL_X509_LOOKUP 4 +# define SSL_ASYNC_PAUSED 5 +# define SSL_ASYNC_NO_JOBS 6 +# define SSL_CLIENT_HELLO_CB 7 + +/* 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_want_async(s) (SSL_want(s) == SSL_ASYNC_PAUSED) +# define SSL_want_async_job(s) (SSL_want(s) == SSL_ASYNC_NO_JOBS) +# define SSL_want_client_hello_cb(s) (SSL_want(s) == SSL_CLIENT_HELLO_CB) + +# define SSL_MAC_FLAG_READ_MAC_STREAM 1 +# define SSL_MAC_FLAG_WRITE_MAC_STREAM 2 + +/* + * A callback for logging out TLS key material. This callback should log out + * |line| followed by a newline. + */ +typedef void (*SSL_CTX_keylog_cb_func)(const SSL *ssl, const char *line); + +/* + * SSL_CTX_set_keylog_callback configures a callback to log key material. This + * is intended for debugging use with tools like Wireshark. The cb function + * should log line followed by a newline. + */ +void SSL_CTX_set_keylog_callback(SSL_CTX *ctx, SSL_CTX_keylog_cb_func cb); + +/* + * SSL_CTX_get_keylog_callback returns the callback configured by + * SSL_CTX_set_keylog_callback. + */ +SSL_CTX_keylog_cb_func SSL_CTX_get_keylog_callback(const SSL_CTX *ctx); + +int SSL_CTX_set_max_early_data(SSL_CTX *ctx, uint32_t max_early_data); +uint32_t SSL_CTX_get_max_early_data(const SSL_CTX *ctx); +int SSL_set_max_early_data(SSL *s, uint32_t max_early_data); +uint32_t SSL_get_max_early_data(const SSL *s); +int SSL_CTX_set_recv_max_early_data(SSL_CTX *ctx, uint32_t recv_max_early_data); +uint32_t SSL_CTX_get_recv_max_early_data(const SSL_CTX *ctx); +int SSL_set_recv_max_early_data(SSL *s, uint32_t recv_max_early_data); +uint32_t SSL_get_recv_max_early_data(const SSL *s); + +#ifdef __cplusplus +} +#endif + +# include +# include +# include /* This is mostly sslv3 with a few tweaks */ +# include /* Datagram TLS */ +# include /* Support for the use_srtp extension */ + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * These need to be after the above set of includes due to a compiler bug + * in VisualStudio 2015 + */ +DEFINE_STACK_OF_CONST(SSL_CIPHER) +DEFINE_STACK_OF(SSL_COMP) + +/* 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))) +DEPRECATEDIN_1_1_0(void SSL_set_debug(SSL *s, int debug)) + +/* TLSv1.3 KeyUpdate message types */ +/* -1 used so that this is an invalid value for the on-the-wire protocol */ +#define SSL_KEY_UPDATE_NONE -1 +/* Values as defined for the on-the-wire protocol */ +#define SSL_KEY_UPDATE_NOT_REQUESTED 0 +#define SSL_KEY_UPDATE_REQUESTED 1 + +/* + * The valid handshake states (one for each type message sent and one for each + * type of message received). There are also two "special" states: + * TLS = TLS or DTLS state + * DTLS = DTLS specific state + * CR/SR = Client Read/Server Read + * CW/SW = Client Write/Server Write + * + * The "special" states are: + * TLS_ST_BEFORE = No handshake has been initiated yet + * TLS_ST_OK = A handshake has been successfully completed + */ +typedef enum { + TLS_ST_BEFORE, + TLS_ST_OK, + DTLS_ST_CR_HELLO_VERIFY_REQUEST, + TLS_ST_CR_SRVR_HELLO, + TLS_ST_CR_CERT, + TLS_ST_CR_CERT_STATUS, + TLS_ST_CR_KEY_EXCH, + TLS_ST_CR_CERT_REQ, + TLS_ST_CR_SRVR_DONE, + TLS_ST_CR_SESSION_TICKET, + TLS_ST_CR_CHANGE, + TLS_ST_CR_FINISHED, + TLS_ST_CW_CLNT_HELLO, + TLS_ST_CW_CERT, + TLS_ST_CW_KEY_EXCH, + TLS_ST_CW_CERT_VRFY, + TLS_ST_CW_CHANGE, + TLS_ST_CW_NEXT_PROTO, + TLS_ST_CW_FINISHED, + TLS_ST_SW_HELLO_REQ, + TLS_ST_SR_CLNT_HELLO, + DTLS_ST_SW_HELLO_VERIFY_REQUEST, + TLS_ST_SW_SRVR_HELLO, + TLS_ST_SW_CERT, + TLS_ST_SW_KEY_EXCH, + TLS_ST_SW_CERT_REQ, + TLS_ST_SW_SRVR_DONE, + TLS_ST_SR_CERT, + TLS_ST_SR_KEY_EXCH, + TLS_ST_SR_CERT_VRFY, + TLS_ST_SR_NEXT_PROTO, + TLS_ST_SR_CHANGE, + TLS_ST_SR_FINISHED, + TLS_ST_SW_SESSION_TICKET, + TLS_ST_SW_CERT_STATUS, + TLS_ST_SW_CHANGE, + TLS_ST_SW_FINISHED, + TLS_ST_SW_ENCRYPTED_EXTENSIONS, + TLS_ST_CR_ENCRYPTED_EXTENSIONS, + TLS_ST_CR_CERT_VRFY, + TLS_ST_SW_CERT_VRFY, + TLS_ST_CR_HELLO_REQ, + TLS_ST_SW_KEY_UPDATE, + TLS_ST_CW_KEY_UPDATE, + TLS_ST_SR_KEY_UPDATE, + TLS_ST_CR_KEY_UPDATE, + TLS_ST_EARLY_DATA, + TLS_ST_PENDING_EARLY_DATA_END, + TLS_ST_CW_END_OF_EARLY_DATA, + TLS_ST_SR_END_OF_EARLY_DATA +} OSSL_HANDSHAKE_STATE; + +/* + * Most of the following state values are no longer used and are defined to be + * the closest equivalent value in the current state machine code. Not all + * defines have an equivalent and are set to a dummy value (-1). SSL_ST_CONNECT + * and SSL_ST_ACCEPT are still in use in the definition of SSL_CB_ACCEPT_LOOP, + * SSL_CB_ACCEPT_EXIT, SSL_CB_CONNECT_LOOP and SSL_CB_CONNECT_EXIT. + */ + +# define SSL_ST_CONNECT 0x1000 +# define SSL_ST_ACCEPT 0x2000 + +# define SSL_ST_MASK 0x0FFF + +# 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_in_connect_init(a) (SSL_in_init(a) && !SSL_is_server(a)) +# define SSL_in_accept_init(a) (SSL_in_init(a) && SSL_is_server(a)) +int SSL_in_init(const SSL *s); +int SSL_in_before(const SSL *s); +int SSL_is_init_finished(const SSL *s); + +/* + * The following 3 states are kept in ssl->rlayer.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 3 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 SSL_VERIFY_POST_HANDSHAKE 0x08 + +# if OPENSSL_API_COMPAT < 0x10100000L +# define OpenSSL_add_ssl_algorithms() SSL_library_init() +# define SSLeay_add_ssl_algorithms() SSL_library_init() +# 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_MISSING_EXTENSION TLS13_AD_MISSING_EXTENSION +# define SSL_AD_CERTIFICATE_REQUIRED TLS13_AD_CERTIFICATE_REQUIRED +# 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_AD_NO_APPLICATION_PROTOCOL TLS1_AD_NO_APPLICATION_PROTOCOL +# 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_ERROR_WANT_ASYNC 9 +# define SSL_ERROR_WANT_ASYNC_JOB 10 +# define SSL_ERROR_WANT_CLIENT_HELLO_CB 11 +# define SSL_CTRL_SET_TMP_DH 3 +# define SSL_CTRL_SET_TMP_ECDH 4 +# define SSL_CTRL_SET_TMP_DH_CB 6 +# 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_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 */ +# 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_DTLS_EXT_SEND_HEARTBEAT 85 +# define SSL_CTRL_GET_DTLS_EXT_HEARTBEAT_PENDING 86 +# define SSL_CTRL_SET_DTLS_EXT_HEARTBEAT_NO_REQUESTS 87 +# endif +# define DTLS_CTRL_GET_TIMEOUT 73 +# define DTLS_CTRL_HANDLE_TIMEOUT 74 +# define SSL_CTRL_GET_RI_SUPPORT 76 +# define SSL_CTRL_CLEAR_MODE 78 +# define SSL_CTRL_SET_NOT_RESUMABLE_SESS_CB 79 +# 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_GROUPS 90 +# define SSL_CTRL_SET_GROUPS 91 +# define SSL_CTRL_SET_GROUPS_LIST 92 +# define SSL_CTRL_GET_SHARED_GROUP 93 +# 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_PEER_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_SET_DH_AUTO 118 +# define DTLS_CTRL_SET_LINK_MTU 120 +# define DTLS_CTRL_GET_LINK_MIN_MTU 121 +# define SSL_CTRL_GET_EXTMS_SUPPORT 122 +# define SSL_CTRL_SET_MIN_PROTO_VERSION 123 +# define SSL_CTRL_SET_MAX_PROTO_VERSION 124 +# define SSL_CTRL_SET_SPLIT_SEND_FRAGMENT 125 +# define SSL_CTRL_SET_MAX_PIPELINES 126 +# define SSL_CTRL_GET_TLSEXT_STATUS_REQ_TYPE 127 +# define SSL_CTRL_GET_TLSEXT_STATUS_REQ_CB 128 +# define SSL_CTRL_GET_TLSEXT_STATUS_REQ_CB_ARG 129 +# define SSL_CTRL_GET_MIN_PROTO_VERSION 130 +# define SSL_CTRL_GET_MAX_PROTO_VERSION 131 +# define SSL_CTRL_GET_SIGNATURE_NID 132 +# define SSL_CTRL_GET_TMP_KEY 133 +# define SSL_CTRL_GET_VERIFY_CERT_STORE 137 +# define SSL_CTRL_GET_CHAIN_CERT_STORE 138 +# 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 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_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_CTX_set_dh_auto(ctx, onoff) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_DH_AUTO,onoff,NULL) +# define SSL_set_dh_auto(s, onoff) \ + SSL_ctrl(s,SSL_CTRL_SET_DH_AUTO,onoff,NULL) +# 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_get0_verify_cert_store(ctx,st) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_GET_VERIFY_CERT_STORE,0,(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_CTX_get0_chain_cert_store(ctx,st) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_GET_CHAIN_CERT_STORE,0,(char *)(st)) +# define SSL_set0_chain(s,sk) \ + SSL_ctrl(s,SSL_CTRL_CHAIN,0,(char *)(sk)) +# define SSL_set1_chain(s,sk) \ + SSL_ctrl(s,SSL_CTRL_CHAIN,1,(char *)(sk)) +# define SSL_add0_chain_cert(s,x509) \ + SSL_ctrl(s,SSL_CTRL_CHAIN_CERT,0,(char *)(x509)) +# define SSL_add1_chain_cert(s,x509) \ + SSL_ctrl(s,SSL_CTRL_CHAIN_CERT,1,(char *)(x509)) +# define SSL_get0_chain_certs(s,px509) \ + SSL_ctrl(s,SSL_CTRL_GET_CHAIN_CERTS,0,px509) +# define SSL_clear_chain_certs(s) \ + SSL_set0_chain(s,NULL) +# define SSL_build_cert_chain(s, flags) \ + SSL_ctrl(s,SSL_CTRL_BUILD_CERT_CHAIN, flags, NULL) +# define SSL_select_current_cert(s,x509) \ + SSL_ctrl(s,SSL_CTRL_SELECT_CURRENT_CERT,0,(char *)(x509)) +# define SSL_set_current_cert(s,op) \ + SSL_ctrl(s,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_get0_verify_cert_store(s,st) \ + SSL_ctrl(s,SSL_CTRL_GET_VERIFY_CERT_STORE,0,(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_get0_chain_cert_store(s,st) \ + SSL_ctrl(s,SSL_CTRL_GET_CHAIN_CERT_STORE,0,(char *)(st)) +# define SSL_get1_groups(s, glist) \ + SSL_ctrl(s,SSL_CTRL_GET_GROUPS,0,(int*)(glist)) +# define SSL_CTX_set1_groups(ctx, glist, glistlen) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_GROUPS,glistlen,(int *)(glist)) +# define SSL_CTX_set1_groups_list(ctx, s) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_GROUPS_LIST,0,(char *)(s)) +# define SSL_set1_groups(s, glist, glistlen) \ + SSL_ctrl(s,SSL_CTRL_SET_GROUPS,glistlen,(char *)(glist)) +# define SSL_set1_groups_list(s, str) \ + SSL_ctrl(s,SSL_CTRL_SET_GROUPS_LIST,0,(char *)(str)) +# define SSL_get_shared_group(s, n) \ + SSL_ctrl(s,SSL_CTRL_GET_SHARED_GROUP,n,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(s, slist, slistlen) \ + SSL_ctrl(s,SSL_CTRL_SET_SIGALGS,slistlen,(int *)(slist)) +# define SSL_set1_sigalgs_list(s, str) \ + SSL_ctrl(s,SSL_CTRL_SET_SIGALGS_LIST,0,(char *)(str)) +# 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(s, slist, slistlen) \ + SSL_ctrl(s,SSL_CTRL_SET_CLIENT_SIGALGS,slistlen,(int *)(slist)) +# define SSL_set1_client_sigalgs_list(s, str) \ + SSL_ctrl(s,SSL_CTRL_SET_CLIENT_SIGALGS_LIST,0,(char *)(str)) +# 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_signature_nid(s, pn) \ + SSL_ctrl(s,SSL_CTRL_GET_SIGNATURE_NID,0,pn) +# define SSL_get_peer_signature_nid(s, pn) \ + SSL_ctrl(s,SSL_CTRL_GET_PEER_SIGNATURE_NID,0,pn) +# define SSL_get_peer_tmp_key(s, pk) \ + SSL_ctrl(s,SSL_CTRL_GET_PEER_TMP_KEY,0,pk) +# define SSL_get_tmp_key(s, pk) \ + SSL_ctrl(s,SSL_CTRL_GET_TMP_KEY,0,pk) +# define SSL_get0_raw_cipherlist(s, plst) \ + SSL_ctrl(s,SSL_CTRL_GET_RAW_CIPHERLIST,0,plst) +# define SSL_get0_ec_point_formats(s, plst) \ + SSL_ctrl(s,SSL_CTRL_GET_EC_POINT_FORMATS,0,plst) +# define SSL_CTX_set_min_proto_version(ctx, version) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_MIN_PROTO_VERSION, version, NULL) +# define SSL_CTX_set_max_proto_version(ctx, version) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_MAX_PROTO_VERSION, version, NULL) +# define SSL_CTX_get_min_proto_version(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_GET_MIN_PROTO_VERSION, 0, NULL) +# define SSL_CTX_get_max_proto_version(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_GET_MAX_PROTO_VERSION, 0, NULL) +# define SSL_set_min_proto_version(s, version) \ + SSL_ctrl(s, SSL_CTRL_SET_MIN_PROTO_VERSION, version, NULL) +# define SSL_set_max_proto_version(s, version) \ + SSL_ctrl(s, SSL_CTRL_SET_MAX_PROTO_VERSION, version, NULL) +# define SSL_get_min_proto_version(s) \ + SSL_ctrl(s, SSL_CTRL_GET_MIN_PROTO_VERSION, 0, NULL) +# define SSL_get_max_proto_version(s) \ + SSL_ctrl(s, SSL_CTRL_GET_MAX_PROTO_VERSION, 0, NULL) + +/* Backwards compatibility, original 1.1.0 names */ +# define SSL_CTRL_GET_SERVER_TMP_KEY \ + SSL_CTRL_GET_PEER_TMP_KEY +# define SSL_get_server_tmp_key(s, pk) \ + SSL_get_peer_tmp_key(s, pk) + +/* + * The following symbol names are old and obsolete. They are kept + * for compatibility reasons only and should not be used anymore. + */ +# define SSL_CTRL_GET_CURVES SSL_CTRL_GET_GROUPS +# define SSL_CTRL_SET_CURVES SSL_CTRL_SET_GROUPS +# define SSL_CTRL_SET_CURVES_LIST SSL_CTRL_SET_GROUPS_LIST +# define SSL_CTRL_GET_SHARED_CURVE SSL_CTRL_GET_SHARED_GROUP + +# define SSL_get1_curves SSL_get1_groups +# define SSL_CTX_set1_curves SSL_CTX_set1_groups +# define SSL_CTX_set1_curves_list SSL_CTX_set1_groups_list +# define SSL_set1_curves SSL_set1_groups +# define SSL_set1_curves_list SSL_set1_groups_list +# define SSL_get_shared_curve SSL_get_shared_group + + +# if OPENSSL_API_COMPAT < 0x10100000L +/* Provide some compatibility macros for removed functionality. */ +# define SSL_CTX_need_tmp_RSA(ctx) 0 +# define SSL_CTX_set_tmp_rsa(ctx,rsa) 1 +# define SSL_need_tmp_RSA(ssl) 0 +# define SSL_set_tmp_rsa(ssl,rsa) 1 +# define SSL_CTX_set_ecdh_auto(dummy, onoff) ((onoff) != 0) +# define SSL_set_ecdh_auto(dummy, onoff) ((onoff) != 0) +/* + * We "pretend" to call the callback to avoid warnings about unused static + * functions. + */ +# define SSL_CTX_set_tmp_rsa_callback(ctx, cb) while(0) (cb)(NULL, 0, 0) +# define SSL_set_tmp_rsa_callback(ssl, cb) while(0) (cb)(NULL, 0, 0) +# endif +__owur const BIO_METHOD *BIO_f_ssl(void); +__owur BIO *BIO_new_ssl(SSL_CTX *ctx, int client); +__owur BIO *BIO_new_ssl_connect(SSL_CTX *ctx); +__owur BIO *BIO_new_buffer_ssl_connect(SSL_CTX *ctx); +__owur int BIO_ssl_copy_session_id(BIO *to, BIO *from); +void BIO_ssl_shutdown(BIO *ssl_bio); + +__owur int SSL_CTX_set_cipher_list(SSL_CTX *, const char *str); +__owur SSL_CTX *SSL_CTX_new(const SSL_METHOD *meth); +int SSL_CTX_up_ref(SSL_CTX *ctx); +void SSL_CTX_free(SSL_CTX *); +__owur long SSL_CTX_set_timeout(SSL_CTX *ctx, long t); +__owur long SSL_CTX_get_timeout(const SSL_CTX *ctx); +__owur X509_STORE *SSL_CTX_get_cert_store(const SSL_CTX *); +void SSL_CTX_set_cert_store(SSL_CTX *, X509_STORE *); +void SSL_CTX_set1_cert_store(SSL_CTX *, X509_STORE *); +__owur int SSL_want(const SSL *s); +__owur int SSL_clear(SSL *s); + +void SSL_CTX_flush_sessions(SSL_CTX *ctx, long tm); + +__owur const SSL_CIPHER *SSL_get_current_cipher(const SSL *s); +__owur const SSL_CIPHER *SSL_get_pending_cipher(const SSL *s); +__owur int SSL_CIPHER_get_bits(const SSL_CIPHER *c, int *alg_bits); +__owur const char *SSL_CIPHER_get_version(const SSL_CIPHER *c); +__owur const char *SSL_CIPHER_get_name(const SSL_CIPHER *c); +__owur const char *SSL_CIPHER_standard_name(const SSL_CIPHER *c); +__owur const char *OPENSSL_cipher_name(const char *rfc_name); +__owur uint32_t SSL_CIPHER_get_id(const SSL_CIPHER *c); +__owur uint16_t SSL_CIPHER_get_protocol_id(const SSL_CIPHER *c); +__owur int SSL_CIPHER_get_kx_nid(const SSL_CIPHER *c); +__owur int SSL_CIPHER_get_auth_nid(const SSL_CIPHER *c); +__owur const EVP_MD *SSL_CIPHER_get_handshake_digest(const SSL_CIPHER *c); +__owur int SSL_CIPHER_is_aead(const SSL_CIPHER *c); + +__owur int SSL_get_fd(const SSL *s); +__owur int SSL_get_rfd(const SSL *s); +__owur int SSL_get_wfd(const SSL *s); +__owur const char *SSL_get_cipher_list(const SSL *s, int n); +__owur char *SSL_get_shared_ciphers(const SSL *s, char *buf, int size); +__owur int SSL_get_read_ahead(const SSL *s); +__owur int SSL_pending(const SSL *s); +__owur int SSL_has_pending(const SSL *s); +# ifndef OPENSSL_NO_SOCK +__owur int SSL_set_fd(SSL *s, int fd); +__owur int SSL_set_rfd(SSL *s, int fd); +__owur int SSL_set_wfd(SSL *s, int fd); +# endif +void SSL_set0_rbio(SSL *s, BIO *rbio); +void SSL_set0_wbio(SSL *s, BIO *wbio); +void SSL_set_bio(SSL *s, BIO *rbio, BIO *wbio); +__owur BIO *SSL_get_rbio(const SSL *s); +__owur BIO *SSL_get_wbio(const SSL *s); +__owur int SSL_set_cipher_list(SSL *s, const char *str); +__owur int SSL_CTX_set_ciphersuites(SSL_CTX *ctx, const char *str); +__owur int SSL_set_ciphersuites(SSL *s, const char *str); +void SSL_set_read_ahead(SSL *s, int yes); +__owur int SSL_get_verify_mode(const SSL *s); +__owur int SSL_get_verify_depth(const SSL *s); +__owur SSL_verify_cb SSL_get_verify_callback(const SSL *s); +void SSL_set_verify(SSL *s, int mode, SSL_verify_cb callback); +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 +__owur int SSL_use_RSAPrivateKey(SSL *ssl, RSA *rsa); +__owur int SSL_use_RSAPrivateKey_ASN1(SSL *ssl, const unsigned char *d, + long len); +# endif +__owur int SSL_use_PrivateKey(SSL *ssl, EVP_PKEY *pkey); +__owur int SSL_use_PrivateKey_ASN1(int pk, SSL *ssl, const unsigned char *d, + long len); +__owur int SSL_use_certificate(SSL *ssl, X509 *x); +__owur int SSL_use_certificate_ASN1(SSL *ssl, const unsigned char *d, int len); +__owur int SSL_use_cert_and_key(SSL *ssl, X509 *x509, EVP_PKEY *privatekey, + STACK_OF(X509) *chain, int override); + + +/* serverinfo file format versions */ +# define SSL_SERVERINFOV1 1 +# define SSL_SERVERINFOV2 2 + +/* Set serverinfo data for the current active cert. */ +__owur int SSL_CTX_use_serverinfo(SSL_CTX *ctx, const unsigned char *serverinfo, + size_t serverinfo_length); +__owur int SSL_CTX_use_serverinfo_ex(SSL_CTX *ctx, unsigned int version, + const unsigned char *serverinfo, + size_t serverinfo_length); +__owur int SSL_CTX_use_serverinfo_file(SSL_CTX *ctx, const char *file); + +#ifndef OPENSSL_NO_RSA +__owur int SSL_use_RSAPrivateKey_file(SSL *ssl, const char *file, int type); +#endif + +__owur int SSL_use_PrivateKey_file(SSL *ssl, const char *file, int type); +__owur int SSL_use_certificate_file(SSL *ssl, const char *file, int type); + +#ifndef OPENSSL_NO_RSA +__owur int SSL_CTX_use_RSAPrivateKey_file(SSL_CTX *ctx, const char *file, + int type); +#endif +__owur int SSL_CTX_use_PrivateKey_file(SSL_CTX *ctx, const char *file, + int type); +__owur int SSL_CTX_use_certificate_file(SSL_CTX *ctx, const char *file, + int type); +/* PEM type */ +__owur int SSL_CTX_use_certificate_chain_file(SSL_CTX *ctx, const char *file); +__owur int SSL_use_certificate_chain_file(SSL *ssl, const char *file); +__owur STACK_OF(X509_NAME) *SSL_load_client_CA_file(const char *file); +__owur int SSL_add_file_cert_subjects_to_stack(STACK_OF(X509_NAME) *stackCAs, + const char *file); +int SSL_add_dir_cert_subjects_to_stack(STACK_OF(X509_NAME) *stackCAs, + const char *dir); + +# if OPENSSL_API_COMPAT < 0x10100000L +# define SSL_load_error_strings() \ + OPENSSL_init_ssl(OPENSSL_INIT_LOAD_SSL_STRINGS \ + | OPENSSL_INIT_LOAD_CRYPTO_STRINGS, NULL) +# endif + +__owur const char *SSL_state_string(const SSL *s); +__owur const char *SSL_rstate_string(const SSL *s); +__owur const char *SSL_state_string_long(const SSL *s); +__owur const char *SSL_rstate_string_long(const SSL *s); +__owur long SSL_SESSION_get_time(const SSL_SESSION *s); +__owur long SSL_SESSION_set_time(SSL_SESSION *s, long t); +__owur long SSL_SESSION_get_timeout(const SSL_SESSION *s); +__owur long SSL_SESSION_set_timeout(SSL_SESSION *s, long t); +__owur int SSL_SESSION_get_protocol_version(const SSL_SESSION *s); +__owur int SSL_SESSION_set_protocol_version(SSL_SESSION *s, int version); + +__owur const char *SSL_SESSION_get0_hostname(const SSL_SESSION *s); +__owur int SSL_SESSION_set1_hostname(SSL_SESSION *s, const char *hostname); +void SSL_SESSION_get0_alpn_selected(const SSL_SESSION *s, + const unsigned char **alpn, + size_t *len); +__owur int SSL_SESSION_set1_alpn_selected(SSL_SESSION *s, + const unsigned char *alpn, + size_t len); +__owur const SSL_CIPHER *SSL_SESSION_get0_cipher(const SSL_SESSION *s); +__owur int SSL_SESSION_set_cipher(SSL_SESSION *s, const SSL_CIPHER *cipher); +__owur int SSL_SESSION_has_ticket(const SSL_SESSION *s); +__owur unsigned long SSL_SESSION_get_ticket_lifetime_hint(const SSL_SESSION *s); +void SSL_SESSION_get0_ticket(const SSL_SESSION *s, const unsigned char **tick, + size_t *len); +__owur uint32_t SSL_SESSION_get_max_early_data(const SSL_SESSION *s); +__owur int SSL_SESSION_set_max_early_data(SSL_SESSION *s, + uint32_t max_early_data); +__owur int SSL_copy_session_id(SSL *to, const SSL *from); +__owur X509 *SSL_SESSION_get0_peer(SSL_SESSION *s); +__owur int SSL_SESSION_set1_id_context(SSL_SESSION *s, + const unsigned char *sid_ctx, + unsigned int sid_ctx_len); +__owur int SSL_SESSION_set1_id(SSL_SESSION *s, const unsigned char *sid, + unsigned int sid_len); +__owur int SSL_SESSION_is_resumable(const SSL_SESSION *s); + +__owur SSL_SESSION *SSL_SESSION_new(void); +__owur SSL_SESSION *SSL_SESSION_dup(SSL_SESSION *src); +const unsigned char *SSL_SESSION_get_id(const SSL_SESSION *s, + unsigned int *len); +const unsigned char *SSL_SESSION_get0_id_context(const SSL_SESSION *s, + unsigned int *len); +__owur unsigned int SSL_SESSION_get_compress_id(const SSL_SESSION *s); +# ifndef OPENSSL_NO_STDIO +int SSL_SESSION_print_fp(FILE *fp, const SSL_SESSION *ses); +# endif +int SSL_SESSION_print(BIO *fp, const SSL_SESSION *ses); +int SSL_SESSION_print_keylog(BIO *bp, const SSL_SESSION *x); +int SSL_SESSION_up_ref(SSL_SESSION *ses); +void SSL_SESSION_free(SSL_SESSION *ses); +__owur int i2d_SSL_SESSION(SSL_SESSION *in, unsigned char **pp); +__owur int SSL_set_session(SSL *to, SSL_SESSION *session); +int SSL_CTX_add_session(SSL_CTX *ctx, SSL_SESSION *session); +int SSL_CTX_remove_session(SSL_CTX *ctx, SSL_SESSION *session); +__owur int SSL_CTX_set_generate_session_id(SSL_CTX *ctx, GEN_SESSION_CB cb); +__owur int SSL_set_generate_session_id(SSL *s, GEN_SESSION_CB cb); +__owur int SSL_has_matching_session_id(const SSL *s, + 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 +__owur X509 *SSL_get_peer_certificate(const SSL *s); +# endif + +__owur STACK_OF(X509) *SSL_get_peer_cert_chain(const SSL *s); + +__owur int SSL_CTX_get_verify_mode(const SSL_CTX *ctx); +__owur int SSL_CTX_get_verify_depth(const SSL_CTX *ctx); +__owur SSL_verify_cb SSL_CTX_get_verify_callback(const SSL_CTX *ctx); +void SSL_CTX_set_verify(SSL_CTX *ctx, int mode, SSL_verify_cb callback); +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 +__owur int SSL_CTX_use_RSAPrivateKey(SSL_CTX *ctx, RSA *rsa); +__owur int SSL_CTX_use_RSAPrivateKey_ASN1(SSL_CTX *ctx, const unsigned char *d, + long len); +# endif +__owur int SSL_CTX_use_PrivateKey(SSL_CTX *ctx, EVP_PKEY *pkey); +__owur int SSL_CTX_use_PrivateKey_ASN1(int pk, SSL_CTX *ctx, + const unsigned char *d, long len); +__owur int SSL_CTX_use_certificate(SSL_CTX *ctx, X509 *x); +__owur int SSL_CTX_use_certificate_ASN1(SSL_CTX *ctx, int len, + const unsigned char *d); +__owur int SSL_CTX_use_cert_and_key(SSL_CTX *ctx, X509 *x509, EVP_PKEY *privatekey, + STACK_OF(X509) *chain, int override); + +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); +pem_password_cb *SSL_CTX_get_default_passwd_cb(SSL_CTX *ctx); +void *SSL_CTX_get_default_passwd_cb_userdata(SSL_CTX *ctx); +void SSL_set_default_passwd_cb(SSL *s, pem_password_cb *cb); +void SSL_set_default_passwd_cb_userdata(SSL *s, void *u); +pem_password_cb *SSL_get_default_passwd_cb(SSL *s); +void *SSL_get_default_passwd_cb_userdata(SSL *s); + +__owur int SSL_CTX_check_private_key(const SSL_CTX *ctx); +__owur int SSL_check_private_key(const SSL *ctx); + +__owur 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_up_ref(SSL *s); +int SSL_is_dtls(const SSL *s); +__owur int SSL_set_session_id_context(SSL *ssl, const unsigned char *sid_ctx, + unsigned int sid_ctx_len); + +__owur int SSL_CTX_set_purpose(SSL_CTX *ctx, int purpose); +__owur int SSL_set_purpose(SSL *ssl, int purpose); +__owur int SSL_CTX_set_trust(SSL_CTX *ctx, int trust); +__owur int SSL_set_trust(SSL *ssl, int trust); + +__owur int SSL_set1_host(SSL *s, const char *hostname); +__owur int SSL_add1_host(SSL *s, const char *hostname); +__owur const char *SSL_get0_peername(SSL *s); +void SSL_set_hostflags(SSL *s, unsigned int flags); + +__owur int SSL_CTX_dane_enable(SSL_CTX *ctx); +__owur int SSL_CTX_dane_mtype_set(SSL_CTX *ctx, const EVP_MD *md, + uint8_t mtype, uint8_t ord); +__owur int SSL_dane_enable(SSL *s, const char *basedomain); +__owur int SSL_dane_tlsa_add(SSL *s, uint8_t usage, uint8_t selector, + uint8_t mtype, unsigned const char *data, size_t dlen); +__owur int SSL_get0_dane_authority(SSL *s, X509 **mcert, EVP_PKEY **mspki); +__owur int SSL_get0_dane_tlsa(SSL *s, uint8_t *usage, uint8_t *selector, + uint8_t *mtype, unsigned const char **data, + size_t *dlen); +/* + * Bridge opacity barrier between libcrypt and libssl, also needed to support + * offline testing in test/danetest.c + */ +SSL_DANE *SSL_get0_dane(SSL *ssl); +/* + * DANE flags + */ +unsigned long SSL_CTX_dane_set_flags(SSL_CTX *ctx, unsigned long flags); +unsigned long SSL_CTX_dane_clear_flags(SSL_CTX *ctx, unsigned long flags); +unsigned long SSL_dane_set_flags(SSL *ssl, unsigned long flags); +unsigned long SSL_dane_clear_flags(SSL *ssl, unsigned long flags); + +__owur int SSL_CTX_set1_param(SSL_CTX *ctx, X509_VERIFY_PARAM *vpm); +__owur int SSL_set1_param(SSL *ssl, X509_VERIFY_PARAM *vpm); + +__owur X509_VERIFY_PARAM *SSL_CTX_get0_param(SSL_CTX *ctx); +__owur 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); + +__owur BIGNUM *SSL_get_srp_g(SSL *s); +__owur BIGNUM *SSL_get_srp_N(SSL *s); + +__owur char *SSL_get_srp_username(SSL *s); +__owur char *SSL_get_srp_userinfo(SSL *s); +# endif + +/* + * ClientHello callback and helpers. + */ + +# define SSL_CLIENT_HELLO_SUCCESS 1 +# define SSL_CLIENT_HELLO_ERROR 0 +# define SSL_CLIENT_HELLO_RETRY (-1) + +typedef int (*SSL_client_hello_cb_fn) (SSL *s, int *al, void *arg); +void SSL_CTX_set_client_hello_cb(SSL_CTX *c, SSL_client_hello_cb_fn cb, + void *arg); +int SSL_client_hello_isv2(SSL *s); +unsigned int SSL_client_hello_get0_legacy_version(SSL *s); +size_t SSL_client_hello_get0_random(SSL *s, const unsigned char **out); +size_t SSL_client_hello_get0_session_id(SSL *s, const unsigned char **out); +size_t SSL_client_hello_get0_ciphers(SSL *s, const unsigned char **out); +size_t SSL_client_hello_get0_compression_methods(SSL *s, + const unsigned char **out); +int SSL_client_hello_get1_extensions_present(SSL *s, int **out, size_t *outlen); +int SSL_client_hello_get0_ext(SSL *s, unsigned int type, + const unsigned char **out, size_t *outlen); + +void SSL_certs_clear(SSL *s); +void SSL_free(SSL *ssl); +# ifdef OSSL_ASYNC_FD +/* + * Windows application developer has to include windows.h to use these. + */ +__owur int SSL_waiting_for_async(SSL *s); +__owur int SSL_get_all_async_fds(SSL *s, OSSL_ASYNC_FD *fds, size_t *numfds); +__owur int SSL_get_changed_async_fds(SSL *s, OSSL_ASYNC_FD *addfd, + size_t *numaddfds, OSSL_ASYNC_FD *delfd, + size_t *numdelfds); +# endif +__owur int SSL_accept(SSL *ssl); +__owur int SSL_stateless(SSL *s); +__owur int SSL_connect(SSL *ssl); +__owur int SSL_read(SSL *ssl, void *buf, int num); +__owur int SSL_read_ex(SSL *ssl, void *buf, size_t num, size_t *readbytes); + +# define SSL_READ_EARLY_DATA_ERROR 0 +# define SSL_READ_EARLY_DATA_SUCCESS 1 +# define SSL_READ_EARLY_DATA_FINISH 2 + +__owur int SSL_read_early_data(SSL *s, void *buf, size_t num, + size_t *readbytes); +__owur int SSL_peek(SSL *ssl, void *buf, int num); +__owur int SSL_peek_ex(SSL *ssl, void *buf, size_t num, size_t *readbytes); +__owur int SSL_write(SSL *ssl, const void *buf, int num); +__owur int SSL_write_ex(SSL *s, const void *buf, size_t num, size_t *written); +__owur int SSL_write_early_data(SSL *s, const void *buf, size_t num, + size_t *written); +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)); + +# define SSL_EARLY_DATA_NOT_SENT 0 +# define SSL_EARLY_DATA_REJECTED 1 +# define SSL_EARLY_DATA_ACCEPTED 2 + +__owur int SSL_get_early_data_status(const SSL *s); + +__owur int SSL_get_error(const SSL *s, int ret_code); +__owur const char *SSL_get_version(const SSL *s); + +/* This sets the 'default' SSL version that SSL_new() will create */ +__owur int SSL_CTX_set_ssl_version(SSL_CTX *ctx, const SSL_METHOD *meth); + +# ifndef OPENSSL_NO_SSL3_METHOD +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *SSLv3_method(void)) /* SSLv3 */ +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *SSLv3_server_method(void)) +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *SSLv3_client_method(void)) +# endif + +#define SSLv23_method TLS_method +#define SSLv23_server_method TLS_server_method +#define SSLv23_client_method TLS_client_method + +/* Negotiate highest available SSL/TLS version */ +__owur const SSL_METHOD *TLS_method(void); +__owur const SSL_METHOD *TLS_server_method(void); +__owur const SSL_METHOD *TLS_client_method(void); + +# ifndef OPENSSL_NO_TLS1_METHOD +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *TLSv1_method(void)) /* TLSv1.0 */ +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *TLSv1_server_method(void)) +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *TLSv1_client_method(void)) +# endif + +# ifndef OPENSSL_NO_TLS1_1_METHOD +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *TLSv1_1_method(void)) /* TLSv1.1 */ +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *TLSv1_1_server_method(void)) +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *TLSv1_1_client_method(void)) +# endif + +# ifndef OPENSSL_NO_TLS1_2_METHOD +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *TLSv1_2_method(void)) /* TLSv1.2 */ +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *TLSv1_2_server_method(void)) +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *TLSv1_2_client_method(void)) +# endif + +# ifndef OPENSSL_NO_DTLS1_METHOD +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *DTLSv1_method(void)) /* DTLSv1.0 */ +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *DTLSv1_server_method(void)) +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *DTLSv1_client_method(void)) +# endif + +# ifndef OPENSSL_NO_DTLS1_2_METHOD +/* DTLSv1.2 */ +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *DTLSv1_2_method(void)) +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *DTLSv1_2_server_method(void)) +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *DTLSv1_2_client_method(void)) +# endif + +__owur const SSL_METHOD *DTLS_method(void); /* DTLS 1.0 and 1.2 */ +__owur const SSL_METHOD *DTLS_server_method(void); /* DTLS 1.0 and 1.2 */ +__owur const SSL_METHOD *DTLS_client_method(void); /* DTLS 1.0 and 1.2 */ + +__owur size_t DTLS_get_data_mtu(const SSL *s); + +__owur STACK_OF(SSL_CIPHER) *SSL_get_ciphers(const SSL *s); +__owur STACK_OF(SSL_CIPHER) *SSL_CTX_get_ciphers(const SSL_CTX *ctx); +__owur STACK_OF(SSL_CIPHER) *SSL_get_client_ciphers(const SSL *s); +__owur STACK_OF(SSL_CIPHER) *SSL_get1_supported_ciphers(SSL *s); + +__owur int SSL_do_handshake(SSL *s); +int SSL_key_update(SSL *s, int updatetype); +int SSL_get_key_update_type(const SSL *s); +int SSL_renegotiate(SSL *s); +int SSL_renegotiate_abbreviated(SSL *s); +__owur int SSL_renegotiate_pending(const SSL *s); +int SSL_shutdown(SSL *s); +__owur int SSL_verify_client_post_handshake(SSL *s); +void SSL_CTX_set_post_handshake_auth(SSL_CTX *ctx, int val); +void SSL_set_post_handshake_auth(SSL *s, int val); + +__owur const SSL_METHOD *SSL_CTX_get_ssl_method(const SSL_CTX *ctx); +__owur const SSL_METHOD *SSL_get_ssl_method(const SSL *s); +__owur int SSL_set_ssl_method(SSL *s, const SSL_METHOD *method); +__owur const char *SSL_alert_type_string_long(int value); +__owur const char *SSL_alert_type_string(int value); +__owur const char *SSL_alert_desc_string_long(int value); +__owur const char *SSL_alert_desc_string(int value); + +void SSL_set0_CA_list(SSL *s, STACK_OF(X509_NAME) *name_list); +void SSL_CTX_set0_CA_list(SSL_CTX *ctx, STACK_OF(X509_NAME) *name_list); +__owur const STACK_OF(X509_NAME) *SSL_get0_CA_list(const SSL *s); +__owur const STACK_OF(X509_NAME) *SSL_CTX_get0_CA_list(const SSL_CTX *ctx); +__owur int SSL_add1_to_CA_list(SSL *ssl, const X509 *x); +__owur int SSL_CTX_add1_to_CA_list(SSL_CTX *ctx, const X509 *x); +__owur const STACK_OF(X509_NAME) *SSL_get0_peer_CA_list(const SSL *s); + +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); +__owur STACK_OF(X509_NAME) *SSL_get_client_CA_list(const SSL *s); +__owur STACK_OF(X509_NAME) *SSL_CTX_get_client_CA_list(const SSL_CTX *s); +__owur int SSL_add_client_CA(SSL *ssl, X509 *x); +__owur 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); + +__owur long SSL_get_default_timeout(const SSL *s); + +# if OPENSSL_API_COMPAT < 0x10100000L +# define SSL_library_init() OPENSSL_init_ssl(0, NULL) +# endif + +__owur char *SSL_CIPHER_description(const SSL_CIPHER *, char *buf, int size); +__owur STACK_OF(X509_NAME) *SSL_dup_CA_list(const STACK_OF(X509_NAME) *sk); + +__owur SSL *SSL_dup(SSL *ssl); + +__owur X509 *SSL_get_certificate(const SSL *ssl); +/* + * EVP_PKEY + */ +struct evp_pkey_st *SSL_get_privatekey(const SSL *ssl); + +__owur X509 *SSL_CTX_get0_certificate(const SSL_CTX *ctx); +__owur EVP_PKEY *SSL_CTX_get0_privatekey(const SSL_CTX *ctx); + +void SSL_CTX_set_quiet_shutdown(SSL_CTX *ctx, int mode); +__owur int SSL_CTX_get_quiet_shutdown(const SSL_CTX *ctx); +void SSL_set_quiet_shutdown(SSL *ssl, int mode); +__owur int SSL_get_quiet_shutdown(const SSL *ssl); +void SSL_set_shutdown(SSL *ssl, int mode); +__owur int SSL_get_shutdown(const SSL *ssl); +__owur int SSL_version(const SSL *ssl); +__owur int SSL_client_version(const SSL *s); +__owur int SSL_CTX_set_default_verify_paths(SSL_CTX *ctx); +__owur int SSL_CTX_set_default_verify_dir(SSL_CTX *ctx); +__owur int SSL_CTX_set_default_verify_file(SSL_CTX *ctx); +__owur 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 */ +__owur SSL_SESSION *SSL_get_session(const SSL *ssl); +__owur SSL_SESSION *SSL_get1_session(SSL *ssl); /* obtain a reference count */ +__owur 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); +__owur OSSL_HANDSHAKE_STATE SSL_get_state(const SSL *ssl); + +void SSL_set_verify_result(SSL *ssl, long v); +__owur long SSL_get_verify_result(const SSL *ssl); +__owur STACK_OF(X509) *SSL_get0_verified_chain(const SSL *s); + +__owur size_t SSL_get_client_random(const SSL *ssl, unsigned char *out, + size_t outlen); +__owur size_t SSL_get_server_random(const SSL *ssl, unsigned char *out, + size_t outlen); +__owur size_t SSL_SESSION_get_master_key(const SSL_SESSION *sess, + unsigned char *out, size_t outlen); +__owur int SSL_SESSION_set1_master_key(SSL_SESSION *sess, + const unsigned char *in, size_t len); +uint8_t SSL_SESSION_get_max_fragment_length(const SSL_SESSION *sess); + +#define SSL_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_SSL, l, p, newf, dupf, freef) +__owur int SSL_set_ex_data(SSL *ssl, int idx, void *data); +void *SSL_get_ex_data(const SSL *ssl, int idx); +#define SSL_SESSION_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_SSL_SESSION, l, p, newf, dupf, freef) +__owur 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); +#define SSL_CTX_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_SSL_CTX, l, p, newf, dupf, freef) +__owur 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); + +__owur 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) +# define SSL_CTX_set_split_send_fragment(ctx,m) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_SPLIT_SEND_FRAGMENT,m,NULL) +# define SSL_set_split_send_fragment(ssl,m) \ + SSL_ctrl(ssl,SSL_CTRL_SET_SPLIT_SEND_FRAGMENT,m,NULL) +# define SSL_CTX_set_max_pipelines(ctx,m) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_MAX_PIPELINES,m,NULL) +# define SSL_set_max_pipelines(ssl,m) \ + SSL_ctrl(ssl,SSL_CTRL_SET_MAX_PIPELINES,m,NULL) + +void SSL_CTX_set_default_read_buffer_len(SSL_CTX *ctx, size_t len); +void SSL_set_default_read_buffer_len(SSL *s, size_t len); + +# ifndef OPENSSL_NO_DH +/* NB: the |keylength| is only applicable when is_export is true */ +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 + +__owur const COMP_METHOD *SSL_get_current_compression(const SSL *s); +__owur const COMP_METHOD *SSL_get_current_expansion(const SSL *s); +__owur const char *SSL_COMP_get_name(const COMP_METHOD *comp); +__owur const char *SSL_COMP_get0_name(const SSL_COMP *comp); +__owur int SSL_COMP_get_id(const SSL_COMP *comp); +STACK_OF(SSL_COMP) *SSL_COMP_get_compression_methods(void); +__owur STACK_OF(SSL_COMP) *SSL_COMP_set0_compression_methods(STACK_OF(SSL_COMP) + *meths); +# if OPENSSL_API_COMPAT < 0x10100000L +# define SSL_COMP_free_compression_methods() while(0) continue +# endif +__owur int SSL_COMP_add_compression_method(int id, COMP_METHOD *cm); + +const SSL_CIPHER *SSL_CIPHER_find(SSL *ssl, const unsigned char *ptr); +int SSL_CIPHER_get_cipher_nid(const SSL_CIPHER *c); +int SSL_CIPHER_get_digest_nid(const SSL_CIPHER *c); +int SSL_bytes_to_cipher_list(SSL *s, const unsigned char *bytes, size_t len, + int isv2format, STACK_OF(SSL_CIPHER) **sk, + STACK_OF(SSL_CIPHER) **scsvs); + +/* TLS extensions functions */ +__owur int SSL_set_session_ticket_ext(SSL *s, void *ext_data, int ext_len); + +__owur int SSL_set_session_ticket_ext_cb(SSL *s, + tls_session_ticket_ext_cb_fn cb, + void *arg); + +/* Pre-shared secret session resumption functions */ +__owur int SSL_set_session_secret_cb(SSL *s, + tls_session_secret_cb_fn session_secret_cb, + void *arg); + +void SSL_CTX_set_not_resumable_session_callback(SSL_CTX *ctx, + int (*cb) (SSL *ssl, + int + is_forward_secure)); + +void SSL_set_not_resumable_session_callback(SSL *ssl, + int (*cb) (SSL *ssl, + int is_forward_secure)); + +void SSL_CTX_set_record_padding_callback(SSL_CTX *ctx, + size_t (*cb) (SSL *ssl, int type, + size_t len, void *arg)); +void SSL_CTX_set_record_padding_callback_arg(SSL_CTX *ctx, void *arg); +void *SSL_CTX_get_record_padding_callback_arg(const SSL_CTX *ctx); +int SSL_CTX_set_block_padding(SSL_CTX *ctx, size_t block_size); + +void SSL_set_record_padding_callback(SSL *ssl, + size_t (*cb) (SSL *ssl, int type, + size_t len, void *arg)); +void SSL_set_record_padding_callback_arg(SSL *ssl, void *arg); +void *SSL_get_record_padding_callback_arg(const SSL *ssl); +int SSL_set_block_padding(SSL *ssl, size_t block_size); + +int SSL_set_num_tickets(SSL *s, size_t num_tickets); +size_t SSL_get_num_tickets(const SSL *s); +int SSL_CTX_set_num_tickets(SSL_CTX *ctx, size_t num_tickets); +size_t SSL_CTX_get_num_tickets(const SSL_CTX *ctx); + +# if OPENSSL_API_COMPAT < 0x10100000L +# define SSL_cache_hit(s) SSL_session_reused(s) +# endif + +__owur int SSL_session_reused(const SSL *s); +__owur int SSL_is_server(const SSL *s); + +__owur __owur 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); +__owur unsigned int SSL_CONF_CTX_clear_flags(SSL_CONF_CTX *cctx, + unsigned int flags); +__owur 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); + +__owur int SSL_CONF_cmd(SSL_CONF_CTX *cctx, const char *cmd, const char *value); +__owur int SSL_CONF_cmd_argv(SSL_CONF_CTX *cctx, int *pargc, char ***pargv); +__owur int SSL_CONF_cmd_value_type(SSL_CONF_CTX *cctx, const char *cmd); + +void SSL_add_ssl_module(void); +int SSL_config(SSL *s, const char *name); +int SSL_CTX_config(SSL_CTX *ctx, const char *name); + +# 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); +# endif + +# ifndef OPENSSL_NO_SOCK +int DTLSv1_listen(SSL *s, BIO_ADDR *client); +# endif + +# ifndef OPENSSL_NO_CT + +/* + * A callback for verifying that the received SCTs are sufficient. + * Expected to return 1 if they are sufficient, otherwise 0. + * May return a negative integer if an error occurs. + * A connection should be aborted if the SCTs are deemed insufficient. + */ +typedef int (*ssl_ct_validation_cb)(const CT_POLICY_EVAL_CTX *ctx, + const STACK_OF(SCT) *scts, void *arg); + +/* + * Sets a |callback| that is invoked upon receipt of ServerHelloDone to validate + * the received SCTs. + * If the callback returns a non-positive result, the connection is terminated. + * Call this function before beginning a handshake. + * If a NULL |callback| is provided, SCT validation is disabled. + * |arg| is arbitrary userdata that will be passed to the callback whenever it + * is invoked. Ownership of |arg| remains with the caller. + * + * NOTE: A side-effect of setting a CT callback is that an OCSP stapled response + * will be requested. + */ +int SSL_set_ct_validation_callback(SSL *s, ssl_ct_validation_cb callback, + void *arg); +int SSL_CTX_set_ct_validation_callback(SSL_CTX *ctx, + ssl_ct_validation_cb callback, + void *arg); +#define SSL_disable_ct(s) \ + ((void) SSL_set_validation_callback((s), NULL, NULL)) +#define SSL_CTX_disable_ct(ctx) \ + ((void) SSL_CTX_set_validation_callback((ctx), NULL, NULL)) + +/* + * The validation type enumerates the available behaviours of the built-in SSL + * CT validation callback selected via SSL_enable_ct() and SSL_CTX_enable_ct(). + * The underlying callback is a static function in libssl. + */ +enum { + SSL_CT_VALIDATION_PERMISSIVE = 0, + SSL_CT_VALIDATION_STRICT +}; + +/* + * Enable CT by setting up a callback that implements one of the built-in + * validation variants. The SSL_CT_VALIDATION_PERMISSIVE variant always + * continues the handshake, the application can make appropriate decisions at + * handshake completion. The SSL_CT_VALIDATION_STRICT variant requires at + * least one valid SCT, or else handshake termination will be requested. The + * handshake may continue anyway if SSL_VERIFY_NONE is in effect. + */ +int SSL_enable_ct(SSL *s, int validation_mode); +int SSL_CTX_enable_ct(SSL_CTX *ctx, int validation_mode); + +/* + * Report whether a non-NULL callback is enabled. + */ +int SSL_ct_is_enabled(const SSL *s); +int SSL_CTX_ct_is_enabled(const SSL_CTX *ctx); + +/* Gets the SCTs received from a connection */ +const STACK_OF(SCT) *SSL_get0_peer_scts(SSL *s); + +/* + * Loads the CT log list from the default location. + * If a CTLOG_STORE has previously been set using SSL_CTX_set_ctlog_store, + * the log information loaded from this file will be appended to the + * CTLOG_STORE. + * Returns 1 on success, 0 otherwise. + */ +int SSL_CTX_set_default_ctlog_list_file(SSL_CTX *ctx); + +/* + * Loads the CT log list from the specified file path. + * If a CTLOG_STORE has previously been set using SSL_CTX_set_ctlog_store, + * the log information loaded from this file will be appended to the + * CTLOG_STORE. + * Returns 1 on success, 0 otherwise. + */ +int SSL_CTX_set_ctlog_list_file(SSL_CTX *ctx, const char *path); + +/* + * Sets the CT log list used by all SSL connections created from this SSL_CTX. + * Ownership of the CTLOG_STORE is transferred to the SSL_CTX. + */ +void SSL_CTX_set0_ctlog_store(SSL_CTX *ctx, CTLOG_STORE *logs); + +/* + * Gets the CT log list used by all SSL connections created from this SSL_CTX. + * This will be NULL unless one of the following functions has been called: + * - SSL_CTX_set_default_ctlog_list_file + * - SSL_CTX_set_ctlog_list_file + * - SSL_CTX_set_ctlog_store + */ +const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx); + +# endif /* OPENSSL_NO_CT */ + +/* What the "other" parameter contains in security callback */ +/* Mask for type */ +# define SSL_SECOP_OTHER_TYPE 0xffff0000 +# define SSL_SECOP_OTHER_NONE 0 +# define SSL_SECOP_OTHER_CIPHER (1 << 16) +# define SSL_SECOP_OTHER_CURVE (2 << 16) +# define SSL_SECOP_OTHER_DH (3 << 16) +# define SSL_SECOP_OTHER_PKEY (4 << 16) +# define SSL_SECOP_OTHER_SIGALG (5 << 16) +# define SSL_SECOP_OTHER_CERT (6 << 16) + +/* Indicated operation refers to peer key or certificate */ +# define SSL_SECOP_PEER 0x1000 + +/* Values for "op" parameter in security callback */ + +/* Called to filter ciphers */ +/* Ciphers client supports */ +# define SSL_SECOP_CIPHER_SUPPORTED (1 | SSL_SECOP_OTHER_CIPHER) +/* Cipher shared by client/server */ +# define SSL_SECOP_CIPHER_SHARED (2 | SSL_SECOP_OTHER_CIPHER) +/* Sanity check of cipher server selects */ +# define SSL_SECOP_CIPHER_CHECK (3 | SSL_SECOP_OTHER_CIPHER) +/* Curves supported by client */ +# define SSL_SECOP_CURVE_SUPPORTED (4 | SSL_SECOP_OTHER_CURVE) +/* Curves shared by client/server */ +# define SSL_SECOP_CURVE_SHARED (5 | SSL_SECOP_OTHER_CURVE) +/* Sanity check of curve server selects */ +# define SSL_SECOP_CURVE_CHECK (6 | SSL_SECOP_OTHER_CURVE) +/* Temporary DH key */ +# define SSL_SECOP_TMP_DH (7 | SSL_SECOP_OTHER_PKEY) +/* SSL/TLS version */ +# define SSL_SECOP_VERSION (9 | SSL_SECOP_OTHER_NONE) +/* Session tickets */ +# define SSL_SECOP_TICKET (10 | SSL_SECOP_OTHER_NONE) +/* Supported signature algorithms sent to peer */ +# define SSL_SECOP_SIGALG_SUPPORTED (11 | SSL_SECOP_OTHER_SIGALG) +/* Shared signature algorithm */ +# define SSL_SECOP_SIGALG_SHARED (12 | SSL_SECOP_OTHER_SIGALG) +/* Sanity check signature algorithm allowed */ +# define SSL_SECOP_SIGALG_CHECK (13 | SSL_SECOP_OTHER_SIGALG) +/* Used to get mask of supported public key signature algorithms */ +# define SSL_SECOP_SIGALG_MASK (14 | SSL_SECOP_OTHER_SIGALG) +/* Use to see if compression is allowed */ +# define SSL_SECOP_COMPRESSION (15 | SSL_SECOP_OTHER_NONE) +/* EE key in certificate */ +# define SSL_SECOP_EE_KEY (16 | SSL_SECOP_OTHER_CERT) +/* CA key in certificate */ +# define SSL_SECOP_CA_KEY (17 | SSL_SECOP_OTHER_CERT) +/* CA digest algorithm in certificate */ +# define SSL_SECOP_CA_MD (18 | SSL_SECOP_OTHER_CERT) +/* Peer EE key in certificate */ +# define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER) +/* Peer CA key in certificate */ +# define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER) +/* Peer CA digest algorithm in certificate */ +# define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER) + +void SSL_set_security_level(SSL *s, int level); +__owur int SSL_get_security_level(const SSL *s); +void SSL_set_security_callback(SSL *s, + int (*cb) (const SSL *s, const SSL_CTX *ctx, + int op, int bits, int nid, + void *other, void *ex)); +int (*SSL_get_security_callback(const SSL *s)) (const SSL *s, + const SSL_CTX *ctx, int op, + int bits, int nid, void *other, + void *ex); +void SSL_set0_security_ex_data(SSL *s, void *ex); +__owur void *SSL_get0_security_ex_data(const SSL *s); + +void SSL_CTX_set_security_level(SSL_CTX *ctx, int level); +__owur int SSL_CTX_get_security_level(const SSL_CTX *ctx); +void SSL_CTX_set_security_callback(SSL_CTX *ctx, + int (*cb) (const SSL *s, const SSL_CTX *ctx, + int op, int bits, int nid, + void *other, void *ex)); +int (*SSL_CTX_get_security_callback(const SSL_CTX *ctx)) (const SSL *s, + const SSL_CTX *ctx, + int op, int bits, + int nid, + void *other, + void *ex); +void SSL_CTX_set0_security_ex_data(SSL_CTX *ctx, void *ex); +__owur void *SSL_CTX_get0_security_ex_data(const SSL_CTX *ctx); + +/* OPENSSL_INIT flag 0x010000 reserved for internal use */ +# define OPENSSL_INIT_NO_LOAD_SSL_STRINGS 0x00100000L +# define OPENSSL_INIT_LOAD_SSL_STRINGS 0x00200000L + +# define OPENSSL_INIT_SSL_DEFAULT \ + (OPENSSL_INIT_LOAD_SSL_STRINGS | OPENSSL_INIT_LOAD_CRYPTO_STRINGS) + +int OPENSSL_init_ssl(uint64_t opts, const OPENSSL_INIT_SETTINGS *settings); + +# ifndef OPENSSL_NO_UNIT_TEST +__owur const struct openssl_ssl_test_functions *SSL_test_functions(void); +# endif + +__owur int SSL_free_buffers(SSL *ssl); +__owur int SSL_alloc_buffers(SSL *ssl); + +/* Status codes passed to the decrypt session ticket callback. Some of these + * are for internal use only and are never passed to the callback. */ +typedef int SSL_TICKET_STATUS; + +/* Support for ticket appdata */ +/* fatal error, malloc failure */ +# define SSL_TICKET_FATAL_ERR_MALLOC 0 +/* fatal error, either from parsing or decrypting the ticket */ +# define SSL_TICKET_FATAL_ERR_OTHER 1 +/* No ticket present */ +# define SSL_TICKET_NONE 2 +/* Empty ticket present */ +# define SSL_TICKET_EMPTY 3 +/* the ticket couldn't be decrypted */ +# define SSL_TICKET_NO_DECRYPT 4 +/* a ticket was successfully decrypted */ +# define SSL_TICKET_SUCCESS 5 +/* same as above but the ticket needs to be renewed */ +# define SSL_TICKET_SUCCESS_RENEW 6 + +/* Return codes for the decrypt session ticket callback */ +typedef int SSL_TICKET_RETURN; + +/* An error occurred */ +#define SSL_TICKET_RETURN_ABORT 0 +/* Do not use the ticket, do not send a renewed ticket to the client */ +#define SSL_TICKET_RETURN_IGNORE 1 +/* Do not use the ticket, send a renewed ticket to the client */ +#define SSL_TICKET_RETURN_IGNORE_RENEW 2 +/* Use the ticket, do not send a renewed ticket to the client */ +#define SSL_TICKET_RETURN_USE 3 +/* Use the ticket, send a renewed ticket to the client */ +#define SSL_TICKET_RETURN_USE_RENEW 4 + +typedef int (*SSL_CTX_generate_session_ticket_fn)(SSL *s, void *arg); +typedef SSL_TICKET_RETURN (*SSL_CTX_decrypt_session_ticket_fn)(SSL *s, SSL_SESSION *ss, + const unsigned char *keyname, + size_t keyname_length, + SSL_TICKET_STATUS status, + void *arg); +int SSL_CTX_set_session_ticket_cb(SSL_CTX *ctx, + SSL_CTX_generate_session_ticket_fn gen_cb, + SSL_CTX_decrypt_session_ticket_fn dec_cb, + void *arg); +int SSL_SESSION_set1_ticket_appdata(SSL_SESSION *ss, const void *data, size_t len); +int SSL_SESSION_get0_ticket_appdata(SSL_SESSION *ss, void **data, size_t *len); + +extern const char SSL_version_str[]; + +typedef unsigned int (*DTLS_timer_cb)(SSL *s, unsigned int timer_us); + +void DTLS_set_timer_cb(SSL *s, DTLS_timer_cb cb); + + +typedef int (*SSL_allow_early_data_cb_fn)(SSL *s, void *arg); +void SSL_CTX_set_allow_early_data_cb(SSL_CTX *ctx, + SSL_allow_early_data_cb_fn cb, + void *arg); +void SSL_set_allow_early_data_cb(SSL *s, + SSL_allow_early_data_cb_fn cb, + void *arg); + +# ifdef __cplusplus +} +# endif +#endif diff --git a/plugin/openssl/include/openssl/ssl2.h b/plugin/openssl/include/openssl/ssl2.h new file mode 100644 index 000000000..5321bd272 --- /dev/null +++ b/plugin/openssl/include/openssl/ssl2.h @@ -0,0 +1,24 @@ +/* + * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_SSL2_H +# define HEADER_SSL2_H + +#ifdef __cplusplus +extern "C" { +#endif + +# define SSL2_VERSION 0x0002 + +# define SSL2_MT_CLIENT_HELLO 1 + +#ifdef __cplusplus +} +#endif +#endif diff --git a/plugin/openssl/include/openssl/ssl3.h b/plugin/openssl/include/openssl/ssl3.h new file mode 100644 index 000000000..07effba28 --- /dev/null +++ b/plugin/openssl/include/openssl/ssl3.h @@ -0,0 +1,342 @@ +/* + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_SSL3_H +# define HEADER_SSL3_H + +# include +# 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_DHE_DSS_DES_40_CBC_SHA 0x03000011 +# define SSL3_CK_EDH_DSS_DES_40_CBC_SHA SSL3_CK_DHE_DSS_DES_40_CBC_SHA +# define SSL3_CK_DHE_DSS_DES_64_CBC_SHA 0x03000012 +# define SSL3_CK_EDH_DSS_DES_64_CBC_SHA SSL3_CK_DHE_DSS_DES_64_CBC_SHA +# define SSL3_CK_DHE_DSS_DES_192_CBC3_SHA 0x03000013 +# define SSL3_CK_EDH_DSS_DES_192_CBC3_SHA SSL3_CK_DHE_DSS_DES_192_CBC3_SHA +# define SSL3_CK_DHE_RSA_DES_40_CBC_SHA 0x03000014 +# define SSL3_CK_EDH_RSA_DES_40_CBC_SHA SSL3_CK_DHE_RSA_DES_40_CBC_SHA +# define SSL3_CK_DHE_RSA_DES_64_CBC_SHA 0x03000015 +# define SSL3_CK_EDH_RSA_DES_64_CBC_SHA SSL3_CK_DHE_RSA_DES_64_CBC_SHA +# define SSL3_CK_DHE_RSA_DES_192_CBC3_SHA 0x03000016 +# define SSL3_CK_EDH_RSA_DES_192_CBC3_SHA SSL3_CK_DHE_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 + +/* a bundle of RFC standard cipher names, generated from ssl3_ciphers[] */ +# define SSL3_RFC_RSA_NULL_MD5 "TLS_RSA_WITH_NULL_MD5" +# define SSL3_RFC_RSA_NULL_SHA "TLS_RSA_WITH_NULL_SHA" +# define SSL3_RFC_RSA_DES_192_CBC3_SHA "TLS_RSA_WITH_3DES_EDE_CBC_SHA" +# define SSL3_RFC_DHE_DSS_DES_192_CBC3_SHA "TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA" +# define SSL3_RFC_DHE_RSA_DES_192_CBC3_SHA "TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA" +# define SSL3_RFC_ADH_DES_192_CBC_SHA "TLS_DH_anon_WITH_3DES_EDE_CBC_SHA" +# define SSL3_RFC_RSA_IDEA_128_SHA "TLS_RSA_WITH_IDEA_CBC_SHA" +# define SSL3_RFC_RSA_RC4_128_MD5 "TLS_RSA_WITH_RC4_128_MD5" +# define SSL3_RFC_RSA_RC4_128_SHA "TLS_RSA_WITH_RC4_128_SHA" +# define SSL3_RFC_ADH_RC4_128_MD5 "TLS_DH_anon_WITH_RC4_128_MD5" + +# 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" + +# 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) +# define SSL3_RT_MAX_TLS13_ENCRYPTED_OVERHEAD 256 + +/* + * 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_TLS13_ENCRYPTED_LENGTH \ + (SSL3_RT_MAX_PLAIN_LENGTH + SSL3_RT_MAX_TLS13_ENCRYPTED_OVERHEAD) +# 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 DTLS1_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 types for SSL/TLS header info */ +# define SSL3_RT_HEADER 0x100 +# define SSL3_RT_INNER_CONTENT_TYPE 0x101 + +# 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 + + +# 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 for *either* SSLv3 and TLSv1. + */ +# define SSL3_CT_NUMBER 10 + +# if defined(TLS_CT_NUMBER) +# if TLS_CT_NUMBER != SSL3_CT_NUMBER +# error "SSL/TLS CT_NUMBER values do not match" +# endif +# endif + +/* No longer used as of OpenSSL 1.1.1 */ +# define SSL3_FLAGS_NO_RENEGOTIATE_CIPHERS 0x0001 + +/* Removed from OpenSSL 1.1.0 */ +# define TLS1_FLAGS_TLS_PADDING_BUG 0x0 + +# define TLS1_FLAGS_SKIP_CERT_VERIFY 0x0010 + +/* Set if we encrypt then mac instead of usual mac then encrypt */ +# define TLS1_FLAGS_ENCRYPT_THEN_MAC_READ 0x0100 +# define TLS1_FLAGS_ENCRYPT_THEN_MAC TLS1_FLAGS_ENCRYPT_THEN_MAC_READ + +/* Set if extended master secret extension received from peer */ +# define TLS1_FLAGS_RECEIVED_EXTMS 0x0200 + +# define TLS1_FLAGS_ENCRYPT_THEN_MAC_WRITE 0x0400 + +# define TLS1_FLAGS_STATELESS 0x0800 + +/* Set if extended master secret extension required on renegotiation */ +# define TLS1_FLAGS_REQUIRED_EXTMS 0x1000 + +# 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_END_OF_EARLY_DATA 5 +# define SSL3_MT_ENCRYPTED_EXTENSIONS 8 +# 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_URL 21 +# define SSL3_MT_CERTIFICATE_STATUS 22 +# define SSL3_MT_SUPPLEMENTAL_DATA 23 +# define SSL3_MT_KEY_UPDATE 24 +# ifndef OPENSSL_NO_NEXTPROTONEG +# define SSL3_MT_NEXT_PROTO 67 +# endif +# define SSL3_MT_MESSAGE_HASH 254 +# define DTLS1_MT_HELLO_VERIFY_REQUEST 3 + +/* Dummy message type for handling CCS like a normal handshake message */ +# define SSL3_MT_CHANGE_CIPHER_SPEC 0x0101 + +# define SSL3_MT_CCS 1 + +/* These are used when changing over to a new cipher */ +# define SSL3_CC_READ 0x001 +# define SSL3_CC_WRITE 0x002 +# define SSL3_CC_CLIENT 0x010 +# define SSL3_CC_SERVER 0x020 +# define SSL3_CC_EARLY 0x040 +# define SSL3_CC_HANDSHAKE 0x080 +# define SSL3_CC_APPLICATION 0x100 +# 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/plugin/openssl/include/openssl/sslerr.h b/plugin/openssl/include/openssl/sslerr.h new file mode 100644 index 000000000..701d61c6e --- /dev/null +++ b/plugin/openssl/include/openssl/sslerr.h @@ -0,0 +1,776 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_SSLERR_H +# define HEADER_SSLERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_SSL_strings(void); + +/* + * SSL function codes. + */ +# define SSL_F_ADD_CLIENT_KEY_SHARE_EXT 438 +# define SSL_F_ADD_KEY_SHARE 512 +# define SSL_F_BYTES_TO_CIPHER_LIST 519 +# define SSL_F_CHECK_SUITEB_CIPHER_LIST 331 +# define SSL_F_CIPHERSUITE_CB 622 +# define SSL_F_CONSTRUCT_CA_NAMES 552 +# define SSL_F_CONSTRUCT_KEY_EXCHANGE_TBS 553 +# define SSL_F_CONSTRUCT_STATEFUL_TICKET 636 +# define SSL_F_CONSTRUCT_STATELESS_TICKET 637 +# define SSL_F_CREATE_SYNTHETIC_MESSAGE_HASH 539 +# define SSL_F_CREATE_TICKET_PREQUEL 638 +# define SSL_F_CT_MOVE_SCTS 345 +# define SSL_F_CT_STRICT 349 +# define SSL_F_CUSTOM_EXT_ADD 554 +# define SSL_F_CUSTOM_EXT_PARSE 555 +# define SSL_F_D2I_SSL_SESSION 103 +# define SSL_F_DANE_CTX_ENABLE 347 +# define SSL_F_DANE_MTYPE_SET 393 +# define SSL_F_DANE_TLSA_ADD 394 +# define SSL_F_DERIVE_SECRET_KEY_AND_IV 514 +# define SSL_F_DO_DTLS1_WRITE 245 +# define SSL_F_DO_SSL3_WRITE 104 +# define SSL_F_DTLS1_BUFFER_RECORD 247 +# define SSL_F_DTLS1_CHECK_TIMEOUT_NUM 318 +# define SSL_F_DTLS1_HEARTBEAT 305 +# define SSL_F_DTLS1_HM_FRAGMENT_NEW 623 +# define SSL_F_DTLS1_PREPROCESS_FRAGMENT 288 +# define SSL_F_DTLS1_PROCESS_BUFFERED_RECORDS 424 +# define SSL_F_DTLS1_PROCESS_RECORD 257 +# define SSL_F_DTLS1_READ_BYTES 258 +# define SSL_F_DTLS1_READ_FAILED 339 +# define SSL_F_DTLS1_RETRANSMIT_MESSAGE 390 +# define SSL_F_DTLS1_WRITE_APP_DATA_BYTES 268 +# define SSL_F_DTLS1_WRITE_BYTES 545 +# define SSL_F_DTLSV1_LISTEN 350 +# define SSL_F_DTLS_CONSTRUCT_CHANGE_CIPHER_SPEC 371 +# define SSL_F_DTLS_CONSTRUCT_HELLO_VERIFY_REQUEST 385 +# define SSL_F_DTLS_GET_REASSEMBLED_MESSAGE 370 +# define SSL_F_DTLS_PROCESS_HELLO_VERIFY 386 +# define SSL_F_DTLS_RECORD_LAYER_NEW 635 +# define SSL_F_DTLS_WAIT_FOR_DRY 592 +# define SSL_F_EARLY_DATA_COUNT_OK 532 +# define SSL_F_FINAL_EARLY_DATA 556 +# define SSL_F_FINAL_EC_PT_FORMATS 485 +# define SSL_F_FINAL_EMS 486 +# define SSL_F_FINAL_KEY_SHARE 503 +# define SSL_F_FINAL_MAXFRAGMENTLEN 557 +# define SSL_F_FINAL_PSK 639 +# define SSL_F_FINAL_RENEGOTIATE 483 +# define SSL_F_FINAL_SERVER_NAME 558 +# define SSL_F_FINAL_SIG_ALGS 497 +# define SSL_F_GET_CERT_VERIFY_TBS_DATA 588 +# define SSL_F_NSS_KEYLOG_INT 500 +# define SSL_F_OPENSSL_INIT_SSL 342 +# define SSL_F_OSSL_STATEM_CLIENT13_READ_TRANSITION 436 +# define SSL_F_OSSL_STATEM_CLIENT13_WRITE_TRANSITION 598 +# define SSL_F_OSSL_STATEM_CLIENT_CONSTRUCT_MESSAGE 430 +# define SSL_F_OSSL_STATEM_CLIENT_POST_PROCESS_MESSAGE 593 +# define SSL_F_OSSL_STATEM_CLIENT_PROCESS_MESSAGE 594 +# define SSL_F_OSSL_STATEM_CLIENT_READ_TRANSITION 417 +# define SSL_F_OSSL_STATEM_CLIENT_WRITE_TRANSITION 599 +# define SSL_F_OSSL_STATEM_SERVER13_READ_TRANSITION 437 +# define SSL_F_OSSL_STATEM_SERVER13_WRITE_TRANSITION 600 +# define SSL_F_OSSL_STATEM_SERVER_CONSTRUCT_MESSAGE 431 +# define SSL_F_OSSL_STATEM_SERVER_POST_PROCESS_MESSAGE 601 +# define SSL_F_OSSL_STATEM_SERVER_POST_WORK 602 +# define SSL_F_OSSL_STATEM_SERVER_PRE_WORK 640 +# define SSL_F_OSSL_STATEM_SERVER_PROCESS_MESSAGE 603 +# define SSL_F_OSSL_STATEM_SERVER_READ_TRANSITION 418 +# define SSL_F_OSSL_STATEM_SERVER_WRITE_TRANSITION 604 +# define SSL_F_PARSE_CA_NAMES 541 +# define SSL_F_PITEM_NEW 624 +# define SSL_F_PQUEUE_NEW 625 +# define SSL_F_PROCESS_KEY_SHARE_EXT 439 +# define SSL_F_READ_STATE_MACHINE 352 +# define SSL_F_SET_CLIENT_CIPHERSUITE 540 +# define SSL_F_SRP_GENERATE_CLIENT_MASTER_SECRET 595 +# define SSL_F_SRP_GENERATE_SERVER_MASTER_SECRET 589 +# define SSL_F_SRP_VERIFY_SERVER_PARAM 596 +# define SSL_F_SSL3_CHANGE_CIPHER_STATE 129 +# define SSL_F_SSL3_CHECK_CERT_AND_ALGORITHM 130 +# 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 608 +# define SSL_F_SSL3_FINAL_FINISH_MAC 285 +# define SSL_F_SSL3_FINISH_MAC 587 +# define SSL_F_SSL3_GENERATE_KEY_BLOCK 238 +# define SSL_F_SSL3_GENERATE_MASTER_SECRET 388 +# define SSL_F_SSL3_GET_RECORD 143 +# define SSL_F_SSL3_INIT_FINISHED_MAC 397 +# define SSL_F_SSL3_OUTPUT_CERT_CHAIN 147 +# define SSL_F_SSL3_READ_BYTES 148 +# define SSL_F_SSL3_READ_N 149 +# 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 316 +# define SSL_F_SSL_ADD_CERT_TO_BUF 319 +# define SSL_F_SSL_ADD_CERT_TO_WPACKET 493 +# 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_CACHE_CIPHERLIST 520 +# define SSL_F_SSL_CERT_ADD0_CHAIN_CERT 346 +# define SSL_F_SSL_CERT_DUP 221 +# define SSL_F_SSL_CERT_NEW 162 +# define SSL_F_SSL_CERT_SET0_CHAIN 340 +# define SSL_F_SSL_CHECK_PRIVATE_KEY 163 +# define SSL_F_SSL_CHECK_SERVERHELLO_TLSEXT 280 +# define SSL_F_SSL_CHECK_SRP_EXT_CLIENTHELLO 606 +# define SSL_F_SSL_CHECK_SRVR_ECC_CERT_AND_ALG 279 +# define SSL_F_SSL_CHOOSE_CLIENT_VERSION 607 +# define SSL_F_SSL_CIPHER_DESCRIPTION 626 +# define SSL_F_SSL_CIPHER_LIST_TO_BYTES 425 +# 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_CLIENT_HELLO_GET1_EXTENSIONS_PRESENT 627 +# 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_ENABLE_CT 398 +# define SSL_F_SSL_CTX_MAKE_PROFILES 309 +# define SSL_F_SSL_CTX_NEW 169 +# define SSL_F_SSL_CTX_SET_ALPN_PROTOS 343 +# 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_CT_VALIDATION_CALLBACK 396 +# 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_TLSEXT_MAX_FRAGMENT_LENGTH 551 +# define SSL_F_SSL_CTX_USE_CERTIFICATE 171 +# define SSL_F_SSL_CTX_USE_CERTIFICATE_ASN1 172 +# 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_EX 543 +# define SSL_F_SSL_CTX_USE_SERVERINFO_FILE 337 +# define SSL_F_SSL_DANE_DUP 403 +# define SSL_F_SSL_DANE_ENABLE 395 +# define SSL_F_SSL_DERIVE 590 +# define SSL_F_SSL_DO_CONFIG 391 +# define SSL_F_SSL_DO_HANDSHAKE 180 +# define SSL_F_SSL_DUP_CA_LIST 408 +# define SSL_F_SSL_ENABLE_CT 402 +# define SSL_F_SSL_GENERATE_PKEY_GROUP 559 +# define SSL_F_SSL_GENERATE_SESSION_ID 547 +# 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_SIGN_PKEY 183 +# define SSL_F_SSL_HANDSHAKE_HASH 560 +# define SSL_F_SSL_INIT_WBIO_BUFFER 184 +# define SSL_F_SSL_KEY_UPDATE 515 +# define SSL_F_SSL_LOAD_CLIENT_CA_FILE 185 +# define SSL_F_SSL_LOG_MASTER_SECRET 498 +# define SSL_F_SSL_LOG_RSA_CLIENT_KEY_EXCHANGE 499 +# define SSL_F_SSL_MODULE_INIT 392 +# define SSL_F_SSL_NEW 186 +# define SSL_F_SSL_NEXT_PROTO_VALIDATE 565 +# 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_PEEK_EX 432 +# define SSL_F_SSL_PEEK_INTERNAL 522 +# define SSL_F_SSL_READ 223 +# define SSL_F_SSL_READ_EARLY_DATA 529 +# define SSL_F_SSL_READ_EX 434 +# define SSL_F_SSL_READ_INTERNAL 523 +# define SSL_F_SSL_RENEGOTIATE 516 +# define SSL_F_SSL_RENEGOTIATE_ABBREVIATED 546 +# define SSL_F_SSL_SCAN_CLIENTHELLO_TLSEXT 320 +# define SSL_F_SSL_SCAN_SERVERHELLO_TLSEXT 321 +# define SSL_F_SSL_SESSION_DUP 348 +# define SSL_F_SSL_SESSION_NEW 189 +# define SSL_F_SSL_SESSION_PRINT_FP 190 +# define SSL_F_SSL_SESSION_SET1_ID 423 +# define SSL_F_SSL_SESSION_SET1_ID_CONTEXT 312 +# define SSL_F_SSL_SET_ALPN_PROTOS 344 +# define SSL_F_SSL_SET_CERT 191 +# define SSL_F_SSL_SET_CERT_AND_KEY 621 +# define SSL_F_SSL_SET_CIPHER_LIST 271 +# define SSL_F_SSL_SET_CT_VALIDATION_CALLBACK 399 +# define SSL_F_SSL_SET_FD 192 +# define SSL_F_SSL_SET_PKEY 193 +# 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_TLSEXT_MAX_FRAGMENT_LENGTH 550 +# 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_START_ASYNC_JOB 389 +# 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_VALIDATE_CT 400 +# define SSL_F_SSL_VERIFY_CERT_CHAIN 207 +# define SSL_F_SSL_VERIFY_CLIENT_POST_HANDSHAKE 616 +# define SSL_F_SSL_WRITE 208 +# define SSL_F_SSL_WRITE_EARLY_DATA 526 +# define SSL_F_SSL_WRITE_EARLY_FINISH 527 +# define SSL_F_SSL_WRITE_EX 433 +# define SSL_F_SSL_WRITE_INTERNAL 524 +# define SSL_F_STATE_MACHINE 353 +# define SSL_F_TLS12_CHECK_PEER_SIGALG 333 +# define SSL_F_TLS12_COPY_SIGALGS 533 +# define SSL_F_TLS13_CHANGE_CIPHER_STATE 440 +# define SSL_F_TLS13_ENC 609 +# define SSL_F_TLS13_FINAL_FINISH_MAC 605 +# define SSL_F_TLS13_GENERATE_SECRET 591 +# define SSL_F_TLS13_HKDF_EXPAND 561 +# define SSL_F_TLS13_RESTORE_HANDSHAKE_DIGEST_FOR_PHA 617 +# define SSL_F_TLS13_SAVE_HANDSHAKE_DIGEST_FOR_PHA 618 +# define SSL_F_TLS13_SETUP_KEY_BLOCK 441 +# define SSL_F_TLS1_CHANGE_CIPHER_STATE 209 +# define SSL_F_TLS1_CHECK_DUPLICATE_EXTENSIONS 341 +# define SSL_F_TLS1_ENC 401 +# define SSL_F_TLS1_EXPORT_KEYING_MATERIAL 314 +# define SSL_F_TLS1_GET_CURVELIST 338 +# define SSL_F_TLS1_PRF 284 +# define SSL_F_TLS1_SAVE_U16 628 +# define SSL_F_TLS1_SETUP_KEY_BLOCK 211 +# define SSL_F_TLS1_SET_GROUPS 629 +# define SSL_F_TLS1_SET_RAW_SIGALGS 630 +# define SSL_F_TLS1_SET_SERVER_SIGALGS 335 +# define SSL_F_TLS1_SET_SHARED_SIGALGS 631 +# define SSL_F_TLS1_SET_SIGALGS 632 +# define SSL_F_TLS_CHOOSE_SIGALG 513 +# define SSL_F_TLS_CLIENT_KEY_EXCHANGE_POST_WORK 354 +# define SSL_F_TLS_COLLECT_EXTENSIONS 435 +# define SSL_F_TLS_CONSTRUCT_CERTIFICATE_AUTHORITIES 542 +# define SSL_F_TLS_CONSTRUCT_CERTIFICATE_REQUEST 372 +# define SSL_F_TLS_CONSTRUCT_CERT_STATUS 429 +# define SSL_F_TLS_CONSTRUCT_CERT_STATUS_BODY 494 +# define SSL_F_TLS_CONSTRUCT_CERT_VERIFY 496 +# define SSL_F_TLS_CONSTRUCT_CHANGE_CIPHER_SPEC 427 +# define SSL_F_TLS_CONSTRUCT_CKE_DHE 404 +# define SSL_F_TLS_CONSTRUCT_CKE_ECDHE 405 +# define SSL_F_TLS_CONSTRUCT_CKE_GOST 406 +# define SSL_F_TLS_CONSTRUCT_CKE_PSK_PREAMBLE 407 +# define SSL_F_TLS_CONSTRUCT_CKE_RSA 409 +# define SSL_F_TLS_CONSTRUCT_CKE_SRP 410 +# define SSL_F_TLS_CONSTRUCT_CLIENT_CERTIFICATE 484 +# define SSL_F_TLS_CONSTRUCT_CLIENT_HELLO 487 +# define SSL_F_TLS_CONSTRUCT_CLIENT_KEY_EXCHANGE 488 +# define SSL_F_TLS_CONSTRUCT_CLIENT_VERIFY 489 +# define SSL_F_TLS_CONSTRUCT_CTOS_ALPN 466 +# define SSL_F_TLS_CONSTRUCT_CTOS_CERTIFICATE 355 +# define SSL_F_TLS_CONSTRUCT_CTOS_COOKIE 535 +# define SSL_F_TLS_CONSTRUCT_CTOS_EARLY_DATA 530 +# define SSL_F_TLS_CONSTRUCT_CTOS_EC_PT_FORMATS 467 +# define SSL_F_TLS_CONSTRUCT_CTOS_EMS 468 +# define SSL_F_TLS_CONSTRUCT_CTOS_ETM 469 +# define SSL_F_TLS_CONSTRUCT_CTOS_HELLO 356 +# define SSL_F_TLS_CONSTRUCT_CTOS_KEY_EXCHANGE 357 +# define SSL_F_TLS_CONSTRUCT_CTOS_KEY_SHARE 470 +# define SSL_F_TLS_CONSTRUCT_CTOS_MAXFRAGMENTLEN 549 +# define SSL_F_TLS_CONSTRUCT_CTOS_NPN 471 +# define SSL_F_TLS_CONSTRUCT_CTOS_PADDING 472 +# define SSL_F_TLS_CONSTRUCT_CTOS_POST_HANDSHAKE_AUTH 619 +# define SSL_F_TLS_CONSTRUCT_CTOS_PSK 501 +# define SSL_F_TLS_CONSTRUCT_CTOS_PSK_KEX_MODES 509 +# define SSL_F_TLS_CONSTRUCT_CTOS_RENEGOTIATE 473 +# define SSL_F_TLS_CONSTRUCT_CTOS_SCT 474 +# define SSL_F_TLS_CONSTRUCT_CTOS_SERVER_NAME 475 +# define SSL_F_TLS_CONSTRUCT_CTOS_SESSION_TICKET 476 +# define SSL_F_TLS_CONSTRUCT_CTOS_SIG_ALGS 477 +# define SSL_F_TLS_CONSTRUCT_CTOS_SRP 478 +# define SSL_F_TLS_CONSTRUCT_CTOS_STATUS_REQUEST 479 +# define SSL_F_TLS_CONSTRUCT_CTOS_SUPPORTED_GROUPS 480 +# define SSL_F_TLS_CONSTRUCT_CTOS_SUPPORTED_VERSIONS 481 +# define SSL_F_TLS_CONSTRUCT_CTOS_USE_SRTP 482 +# define SSL_F_TLS_CONSTRUCT_CTOS_VERIFY 358 +# define SSL_F_TLS_CONSTRUCT_ENCRYPTED_EXTENSIONS 443 +# define SSL_F_TLS_CONSTRUCT_END_OF_EARLY_DATA 536 +# define SSL_F_TLS_CONSTRUCT_EXTENSIONS 447 +# define SSL_F_TLS_CONSTRUCT_FINISHED 359 +# define SSL_F_TLS_CONSTRUCT_HELLO_REQUEST 373 +# define SSL_F_TLS_CONSTRUCT_HELLO_RETRY_REQUEST 510 +# define SSL_F_TLS_CONSTRUCT_KEY_UPDATE 517 +# define SSL_F_TLS_CONSTRUCT_NEW_SESSION_TICKET 428 +# define SSL_F_TLS_CONSTRUCT_NEXT_PROTO 426 +# define SSL_F_TLS_CONSTRUCT_SERVER_CERTIFICATE 490 +# define SSL_F_TLS_CONSTRUCT_SERVER_HELLO 491 +# define SSL_F_TLS_CONSTRUCT_SERVER_KEY_EXCHANGE 492 +# define SSL_F_TLS_CONSTRUCT_STOC_ALPN 451 +# define SSL_F_TLS_CONSTRUCT_STOC_CERTIFICATE 374 +# define SSL_F_TLS_CONSTRUCT_STOC_COOKIE 613 +# define SSL_F_TLS_CONSTRUCT_STOC_CRYPTOPRO_BUG 452 +# define SSL_F_TLS_CONSTRUCT_STOC_DONE 375 +# define SSL_F_TLS_CONSTRUCT_STOC_EARLY_DATA 531 +# define SSL_F_TLS_CONSTRUCT_STOC_EARLY_DATA_INFO 525 +# define SSL_F_TLS_CONSTRUCT_STOC_EC_PT_FORMATS 453 +# define SSL_F_TLS_CONSTRUCT_STOC_EMS 454 +# define SSL_F_TLS_CONSTRUCT_STOC_ETM 455 +# define SSL_F_TLS_CONSTRUCT_STOC_HELLO 376 +# define SSL_F_TLS_CONSTRUCT_STOC_KEY_EXCHANGE 377 +# define SSL_F_TLS_CONSTRUCT_STOC_KEY_SHARE 456 +# define SSL_F_TLS_CONSTRUCT_STOC_MAXFRAGMENTLEN 548 +# define SSL_F_TLS_CONSTRUCT_STOC_NEXT_PROTO_NEG 457 +# define SSL_F_TLS_CONSTRUCT_STOC_PSK 504 +# define SSL_F_TLS_CONSTRUCT_STOC_RENEGOTIATE 458 +# define SSL_F_TLS_CONSTRUCT_STOC_SERVER_NAME 459 +# define SSL_F_TLS_CONSTRUCT_STOC_SESSION_TICKET 460 +# define SSL_F_TLS_CONSTRUCT_STOC_STATUS_REQUEST 461 +# define SSL_F_TLS_CONSTRUCT_STOC_SUPPORTED_GROUPS 544 +# define SSL_F_TLS_CONSTRUCT_STOC_SUPPORTED_VERSIONS 611 +# define SSL_F_TLS_CONSTRUCT_STOC_USE_SRTP 462 +# define SSL_F_TLS_EARLY_POST_PROCESS_CLIENT_HELLO 521 +# define SSL_F_TLS_FINISH_HANDSHAKE 597 +# define SSL_F_TLS_GET_MESSAGE_BODY 351 +# define SSL_F_TLS_GET_MESSAGE_HEADER 387 +# define SSL_F_TLS_HANDLE_ALPN 562 +# define SSL_F_TLS_HANDLE_STATUS_REQUEST 563 +# define SSL_F_TLS_PARSE_CERTIFICATE_AUTHORITIES 566 +# define SSL_F_TLS_PARSE_CLIENTHELLO_TLSEXT 449 +# define SSL_F_TLS_PARSE_CTOS_ALPN 567 +# define SSL_F_TLS_PARSE_CTOS_COOKIE 614 +# define SSL_F_TLS_PARSE_CTOS_EARLY_DATA 568 +# define SSL_F_TLS_PARSE_CTOS_EC_PT_FORMATS 569 +# define SSL_F_TLS_PARSE_CTOS_EMS 570 +# define SSL_F_TLS_PARSE_CTOS_KEY_SHARE 463 +# define SSL_F_TLS_PARSE_CTOS_MAXFRAGMENTLEN 571 +# define SSL_F_TLS_PARSE_CTOS_POST_HANDSHAKE_AUTH 620 +# define SSL_F_TLS_PARSE_CTOS_PSK 505 +# define SSL_F_TLS_PARSE_CTOS_PSK_KEX_MODES 572 +# define SSL_F_TLS_PARSE_CTOS_RENEGOTIATE 464 +# define SSL_F_TLS_PARSE_CTOS_SERVER_NAME 573 +# define SSL_F_TLS_PARSE_CTOS_SESSION_TICKET 574 +# define SSL_F_TLS_PARSE_CTOS_SIG_ALGS 575 +# define SSL_F_TLS_PARSE_CTOS_SIG_ALGS_CERT 615 +# define SSL_F_TLS_PARSE_CTOS_SRP 576 +# define SSL_F_TLS_PARSE_CTOS_STATUS_REQUEST 577 +# define SSL_F_TLS_PARSE_CTOS_SUPPORTED_GROUPS 578 +# define SSL_F_TLS_PARSE_CTOS_USE_SRTP 465 +# define SSL_F_TLS_PARSE_STOC_ALPN 579 +# define SSL_F_TLS_PARSE_STOC_COOKIE 534 +# define SSL_F_TLS_PARSE_STOC_EARLY_DATA 538 +# define SSL_F_TLS_PARSE_STOC_EARLY_DATA_INFO 528 +# define SSL_F_TLS_PARSE_STOC_EC_PT_FORMATS 580 +# define SSL_F_TLS_PARSE_STOC_KEY_SHARE 445 +# define SSL_F_TLS_PARSE_STOC_MAXFRAGMENTLEN 581 +# define SSL_F_TLS_PARSE_STOC_NPN 582 +# define SSL_F_TLS_PARSE_STOC_PSK 502 +# define SSL_F_TLS_PARSE_STOC_RENEGOTIATE 448 +# define SSL_F_TLS_PARSE_STOC_SCT 564 +# define SSL_F_TLS_PARSE_STOC_SERVER_NAME 583 +# define SSL_F_TLS_PARSE_STOC_SESSION_TICKET 584 +# define SSL_F_TLS_PARSE_STOC_STATUS_REQUEST 585 +# define SSL_F_TLS_PARSE_STOC_SUPPORTED_VERSIONS 612 +# define SSL_F_TLS_PARSE_STOC_USE_SRTP 446 +# define SSL_F_TLS_POST_PROCESS_CLIENT_HELLO 378 +# define SSL_F_TLS_POST_PROCESS_CLIENT_KEY_EXCHANGE 384 +# define SSL_F_TLS_PREPARE_CLIENT_CERTIFICATE 360 +# define SSL_F_TLS_PROCESS_AS_HELLO_RETRY_REQUEST 610 +# define SSL_F_TLS_PROCESS_CERTIFICATE_REQUEST 361 +# define SSL_F_TLS_PROCESS_CERT_STATUS 362 +# define SSL_F_TLS_PROCESS_CERT_STATUS_BODY 495 +# define SSL_F_TLS_PROCESS_CERT_VERIFY 379 +# define SSL_F_TLS_PROCESS_CHANGE_CIPHER_SPEC 363 +# define SSL_F_TLS_PROCESS_CKE_DHE 411 +# define SSL_F_TLS_PROCESS_CKE_ECDHE 412 +# define SSL_F_TLS_PROCESS_CKE_GOST 413 +# define SSL_F_TLS_PROCESS_CKE_PSK_PREAMBLE 414 +# define SSL_F_TLS_PROCESS_CKE_RSA 415 +# define SSL_F_TLS_PROCESS_CKE_SRP 416 +# define SSL_F_TLS_PROCESS_CLIENT_CERTIFICATE 380 +# define SSL_F_TLS_PROCESS_CLIENT_HELLO 381 +# define SSL_F_TLS_PROCESS_CLIENT_KEY_EXCHANGE 382 +# define SSL_F_TLS_PROCESS_ENCRYPTED_EXTENSIONS 444 +# define SSL_F_TLS_PROCESS_END_OF_EARLY_DATA 537 +# define SSL_F_TLS_PROCESS_FINISHED 364 +# define SSL_F_TLS_PROCESS_HELLO_REQ 507 +# define SSL_F_TLS_PROCESS_HELLO_RETRY_REQUEST 511 +# define SSL_F_TLS_PROCESS_INITIAL_SERVER_FLIGHT 442 +# define SSL_F_TLS_PROCESS_KEY_EXCHANGE 365 +# define SSL_F_TLS_PROCESS_KEY_UPDATE 518 +# define SSL_F_TLS_PROCESS_NEW_SESSION_TICKET 366 +# define SSL_F_TLS_PROCESS_NEXT_PROTO 383 +# define SSL_F_TLS_PROCESS_SERVER_CERTIFICATE 367 +# define SSL_F_TLS_PROCESS_SERVER_DONE 368 +# define SSL_F_TLS_PROCESS_SERVER_HELLO 369 +# define SSL_F_TLS_PROCESS_SKE_DHE 419 +# define SSL_F_TLS_PROCESS_SKE_ECDHE 420 +# define SSL_F_TLS_PROCESS_SKE_PSK_PREAMBLE 421 +# define SSL_F_TLS_PROCESS_SKE_SRP 422 +# define SSL_F_TLS_PSK_DO_BINDER 506 +# define SSL_F_TLS_SCAN_CLIENTHELLO_TLSEXT 450 +# define SSL_F_TLS_SETUP_HANDSHAKE 508 +# define SSL_F_USE_CERTIFICATE_CHAIN_FILE 220 +# define SSL_F_WPACKET_INTERN_INIT_LEN 633 +# define SSL_F_WPACKET_START_SUB_PACKET_LEN__ 634 +# define SSL_F_WRITE_STATE_MACHINE 586 + +/* + * SSL reason codes. + */ +# define SSL_R_APPLICATION_DATA_AFTER_CLOSE_NOTIFY 291 +# define SSL_R_APP_DATA_IN_HANDSHAKE 100 +# define SSL_R_ATTEMPT_TO_REUSE_SESSION_IN_DIFFERENT_CONTEXT 272 +# define SSL_R_AT_LEAST_TLS_1_0_NEEDED_IN_FIPS_MODE 143 +# define SSL_R_AT_LEAST_TLS_1_2_NEEDED_IN_SUITEB_MODE 158 +# define SSL_R_BAD_CHANGE_CIPHER_SPEC 103 +# define SSL_R_BAD_CIPHER 186 +# 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_VALUE 102 +# define SSL_R_BAD_DIGEST_LENGTH 111 +# define SSL_R_BAD_EARLY_DATA 233 +# define SSL_R_BAD_ECC_CERT 304 +# define SSL_R_BAD_ECPOINT 306 +# define SSL_R_BAD_EXTENSION 110 +# define SSL_R_BAD_HANDSHAKE_LENGTH 332 +# define SSL_R_BAD_HANDSHAKE_STATE 236 +# define SSL_R_BAD_HELLO_REQUEST 105 +# define SSL_R_BAD_HRR_VERSION 263 +# define SSL_R_BAD_KEY_SHARE 108 +# define SSL_R_BAD_KEY_UPDATE 122 +# define SSL_R_BAD_LEGACY_VERSION 292 +# define SSL_R_BAD_LENGTH 271 +# define SSL_R_BAD_PACKET 240 +# define SSL_R_BAD_PACKET_LENGTH 115 +# define SSL_R_BAD_PROTOCOL_VERSION_NUMBER 116 +# define SSL_R_BAD_PSK 219 +# define SSL_R_BAD_PSK_IDENTITY 114 +# define SSL_R_BAD_RECORD_TYPE 443 +# define SSL_R_BAD_RSA_ENCRYPT 119 +# define SSL_R_BAD_SIGNATURE 123 +# define SSL_R_BAD_SRP_A_LENGTH 347 +# define SSL_R_BAD_SRP_PARAMETERS 371 +# 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_VALUE 384 +# define SSL_R_BAD_WRITE_RETRY 127 +# define SSL_R_BINDER_DOES_NOT_VERIFY 253 +# 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_CALLBACK_FAILED 234 +# define SSL_R_CANNOT_CHANGE_CIPHER 109 +# define SSL_R_CA_DN_LENGTH_MISMATCH 131 +# define SSL_R_CA_KEY_TOO_SMALL 397 +# define SSL_R_CA_MD_TOO_WEAK 398 +# 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_CIPHERSUITE_DIGEST_HAS_CHANGED 218 +# define SSL_R_CIPHER_CODE_WRONG_LENGTH 137 +# define SSL_R_CIPHER_OR_HASH_UNAVAILABLE 138 +# 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_TYPE_NOT_SET 144 +# define SSL_R_CONTEXT_NOT_DANE_ENABLED 167 +# define SSL_R_COOKIE_GEN_CALLBACK_FAILURE 400 +# define SSL_R_COOKIE_MISMATCH 308 +# define SSL_R_CUSTOM_EXT_HANDLER_ALREADY_INSTALLED 206 +# define SSL_R_DANE_ALREADY_ENABLED 172 +# define SSL_R_DANE_CANNOT_OVERRIDE_MTYPE_FULL 173 +# define SSL_R_DANE_NOT_ENABLED 175 +# define SSL_R_DANE_TLSA_BAD_CERTIFICATE 180 +# define SSL_R_DANE_TLSA_BAD_CERTIFICATE_USAGE 184 +# define SSL_R_DANE_TLSA_BAD_DATA_LENGTH 189 +# define SSL_R_DANE_TLSA_BAD_DIGEST_LENGTH 192 +# define SSL_R_DANE_TLSA_BAD_MATCHING_TYPE 200 +# define SSL_R_DANE_TLSA_BAD_PUBLIC_KEY 201 +# define SSL_R_DANE_TLSA_BAD_SELECTOR 202 +# define SSL_R_DANE_TLSA_NULL_DATA 203 +# define SSL_R_DATA_BETWEEN_CCS_AND_FINISHED 145 +# define SSL_R_DATA_LENGTH_TOO_LONG 146 +# define SSL_R_DECRYPTION_FAILED 147 +# define SSL_R_DECRYPTION_FAILED_OR_BAD_RECORD_MAC 281 +# define SSL_R_DH_KEY_TOO_SMALL 394 +# 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_SIGNING 318 +# define SSL_R_ECDH_REQUIRED_FOR_SUITEB_MODE 374 +# define SSL_R_EE_KEY_TOO_SMALL 399 +# define SSL_R_EMPTY_SRTP_PROTECTION_PROFILE_LIST 354 +# define SSL_R_ENCRYPTED_LENGTH_TOO_LONG 150 +# define SSL_R_ERROR_IN_RECEIVED_CIPHER_LIST 151 +# define SSL_R_ERROR_SETTING_TLSA_BASE_DOMAIN 204 +# define SSL_R_EXCEEDS_MAX_FRAGMENT_SIZE 194 +# define SSL_R_EXCESSIVE_MESSAGE_SIZE 152 +# define SSL_R_EXTENSION_NOT_RECEIVED 279 +# define SSL_R_EXTRA_DATA_IN_MESSAGE 153 +# define SSL_R_EXT_LENGTH_MISMATCH 163 +# define SSL_R_FAILED_TO_INIT_ASYNC 405 +# define SSL_R_FRAGMENTED_CLIENT_HELLO 401 +# define SSL_R_GOT_A_FIN_BEFORE_A_CCS 154 +# define SSL_R_HTTPS_PROXY_REQUEST 155 +# define SSL_R_HTTP_REQUEST 156 +# define SSL_R_ILLEGAL_POINT_COMPRESSION 162 +# define SSL_R_ILLEGAL_SUITEB_DIGEST 380 +# define SSL_R_INAPPROPRIATE_FALLBACK 373 +# define SSL_R_INCONSISTENT_COMPRESSION 340 +# define SSL_R_INCONSISTENT_EARLY_DATA_ALPN 222 +# define SSL_R_INCONSISTENT_EARLY_DATA_SNI 231 +# define SSL_R_INCONSISTENT_EXTMS 104 +# define SSL_R_INSUFFICIENT_SECURITY 241 +# define SSL_R_INVALID_ALERT 205 +# define SSL_R_INVALID_CCS_MESSAGE 260 +# define SSL_R_INVALID_CERTIFICATE_OR_ALG 238 +# define SSL_R_INVALID_COMMAND 280 +# define SSL_R_INVALID_COMPRESSION_ALGORITHM 341 +# define SSL_R_INVALID_CONFIG 283 +# define SSL_R_INVALID_CONFIGURATION_NAME 113 +# define SSL_R_INVALID_CONTEXT 282 +# define SSL_R_INVALID_CT_VALIDATION_TYPE 212 +# define SSL_R_INVALID_KEY_UPDATE_TYPE 120 +# define SSL_R_INVALID_MAX_EARLY_DATA 174 +# define SSL_R_INVALID_NULL_CMD_NAME 385 +# define SSL_R_INVALID_SEQUENCE_NUMBER 402 +# define SSL_R_INVALID_SERVERINFO_DATA 388 +# define SSL_R_INVALID_SESSION_ID 999 +# 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_LENGTH_MISMATCH 159 +# define SSL_R_LENGTH_TOO_LONG 404 +# define SSL_R_LENGTH_TOO_SHORT 160 +# define SSL_R_LIBRARY_BUG 274 +# define SSL_R_LIBRARY_HAS_NO_CIPHERS 161 +# define SSL_R_MISSING_DSA_SIGNING_CERT 165 +# define SSL_R_MISSING_ECDSA_SIGNING_CERT 381 +# define SSL_R_MISSING_FATAL 256 +# define SSL_R_MISSING_PARAMETERS 290 +# define SSL_R_MISSING_PSK_KEX_MODES_EXTENSION 310 +# 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_SIGALGS_EXTENSION 112 +# define SSL_R_MISSING_SIGNING_CERT 221 +# define SSL_R_MISSING_SRP_PARAM 358 +# define SSL_R_MISSING_SUPPORTED_GROUPS_EXTENSION 209 +# define SSL_R_MISSING_TMP_DH_KEY 171 +# define SSL_R_MISSING_TMP_ECDH_KEY 311 +# define SSL_R_MIXED_HANDSHAKE_AND_NON_HANDSHAKE_DATA 293 +# define SSL_R_NOT_ON_RECORD_BOUNDARY 182 +# define SSL_R_NOT_REPLACING_CERTIFICATE 289 +# define SSL_R_NOT_SERVER 284 +# define SSL_R_NO_APPLICATION_PROTOCOL 235 +# define SSL_R_NO_CERTIFICATES_RETURNED 176 +# define SSL_R_NO_CERTIFICATE_ASSIGNED 177 +# define SSL_R_NO_CERTIFICATE_SET 179 +# define SSL_R_NO_CHANGE_FOLLOWING_HRR 214 +# define SSL_R_NO_CIPHERS_AVAILABLE 181 +# define SSL_R_NO_CIPHERS_SPECIFIED 183 +# define SSL_R_NO_CIPHER_MATCH 185 +# define SSL_R_NO_CLIENT_CERT_METHOD 331 +# define SSL_R_NO_COMPRESSION_SPECIFIED 187 +# define SSL_R_NO_COOKIE_CALLBACK_SET 287 +# 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_PRIVATE_KEY_ASSIGNED 190 +# define SSL_R_NO_PROTOCOLS_AVAILABLE 191 +# 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_GROUPS 410 +# define SSL_R_NO_SHARED_SIGNATURE_ALGORITHMS 376 +# define SSL_R_NO_SRTP_PROFILES 359 +# define SSL_R_NO_SUITABLE_KEY_SHARE 101 +# define SSL_R_NO_SUITABLE_SIGNATURE_ALGORITHM 118 +# define SSL_R_NO_VALID_SCTS 216 +# define SSL_R_NO_VERIFY_COOKIE_CALLBACK 403 +# define SSL_R_NULL_SSL_CTX 195 +# define SSL_R_NULL_SSL_METHOD_PASSED 196 +# define SSL_R_OCSP_CALLBACK_FAILURE 294 +# define SSL_R_OLD_SESSION_CIPHER_NOT_RETURNED 197 +# define SSL_R_OLD_SESSION_COMPRESSION_ALGORITHM_NOT_RETURNED 344 +# define SSL_R_OVERFLOW_ERROR 237 +# 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_PEM_NAME_BAD_PREFIX 391 +# define SSL_R_PEM_NAME_TOO_SHORT 392 +# define SSL_R_PIPELINE_FAILURE 406 +# define SSL_R_POST_HANDSHAKE_AUTH_ENCODING_ERR 278 +# define SSL_R_PRIVATE_KEY_MISMATCH 288 +# 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_READ_BIO_NOT_SET 211 +# define SSL_R_READ_TIMEOUT_EXPIRED 312 +# define SSL_R_RECORD_LENGTH_MISMATCH 213 +# 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_REQUEST_PENDING 285 +# define SSL_R_REQUEST_SENT 286 +# define SSL_R_REQUIRED_CIPHER_MISSING 215 +# define SSL_R_REQUIRED_COMPRESSION_ALGORITHM_MISSING 342 +# define SSL_R_SCSV_RECEIVED_WHEN_RENEGOTIATING 345 +# define SSL_R_SCT_VERIFICATION_FAILED 208 +# define SSL_R_SERVERHELLO_TLSEXT 275 +# define SSL_R_SESSION_ID_CONTEXT_UNINITIALIZED 277 +# define SSL_R_SHUTDOWN_WHILE_IN_INIT 407 +# define SSL_R_SIGNATURE_ALGORITHMS_ERROR 360 +# define SSL_R_SIGNATURE_FOR_NON_SIGNING_CERTIFICATE 220 +# define SSL_R_SRP_A_CALC 361 +# define SSL_R_SRTP_COULD_NOT_ALLOCATE_PROFILES 362 +# define SSL_R_SRTP_PROTECTION_PROFILE_LIST_TOO_LONG 363 +# define SSL_R_SRTP_UNKNOWN_PROTECTION_PROFILE 364 +# define SSL_R_SSL3_EXT_INVALID_MAX_FRAGMENT_LENGTH 232 +# 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_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_COMMAND_SECTION_EMPTY 117 +# define SSL_R_SSL_COMMAND_SECTION_NOT_FOUND 125 +# 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_NEGATIVE_LENGTH 372 +# define SSL_R_SSL_SECTION_EMPTY 126 +# define SSL_R_SSL_SECTION_NOT_FOUND 136 +# 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_TOO_LONG 408 +# define SSL_R_SSL_SESSION_VERSION_MISMATCH 210 +# define SSL_R_STILL_IN_INIT 121 +# define SSL_R_TLSV13_ALERT_CERTIFICATE_REQUIRED 1116 +# define SSL_R_TLSV13_ALERT_MISSING_EXTENSION 1109 +# 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_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_TOO_MANY_KEY_UPDATES 132 +# define SSL_R_TOO_MANY_WARN_ALERTS 409 +# define SSL_R_TOO_MUCH_EARLY_DATA 164 +# define SSL_R_UNABLE_TO_FIND_ECDH_PARAMETERS 314 +# define SSL_R_UNABLE_TO_FIND_PUBLIC_KEY_PARAMETERS 239 +# define SSL_R_UNABLE_TO_LOAD_SSL3_MD5_ROUTINES 242 +# define SSL_R_UNABLE_TO_LOAD_SSL3_SHA1_ROUTINES 243 +# define SSL_R_UNEXPECTED_CCS_MESSAGE 262 +# define SSL_R_UNEXPECTED_END_OF_EARLY_DATA 178 +# 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_COMMAND 139 +# 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_SSL_VERSION 254 +# define SSL_R_UNKNOWN_STATE 255 +# define SSL_R_UNSAFE_LEGACY_RENEGOTIATION_DISABLED 338 +# define SSL_R_UNSOLICITED_EXTENSION 217 +# define SSL_R_UNSUPPORTED_COMPRESSION_ALGORITHM 257 +# 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_VERSION_TOO_HIGH 166 +# define SSL_R_VERSION_TOO_LOW 396 +# define SSL_R_WRONG_CERTIFICATE_TYPE 383 +# define SSL_R_WRONG_CIPHER_RETURNED 261 +# define SSL_R_WRONG_CURVE 378 +# 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 + +#endif diff --git a/plugin/openssl/include/openssl/stack.h b/plugin/openssl/include/openssl/stack.h new file mode 100644 index 000000000..cfc075057 --- /dev/null +++ b/plugin/openssl/include/openssl/stack.h @@ -0,0 +1,83 @@ +/* + * Copyright 1995-2017 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_STACK_H +# define HEADER_STACK_H + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct stack_st OPENSSL_STACK; /* Use STACK_OF(...) instead */ + +typedef int (*OPENSSL_sk_compfunc)(const void *, const void *); +typedef void (*OPENSSL_sk_freefunc)(void *); +typedef void *(*OPENSSL_sk_copyfunc)(const void *); + +int OPENSSL_sk_num(const OPENSSL_STACK *); +void *OPENSSL_sk_value(const OPENSSL_STACK *, int); + +void *OPENSSL_sk_set(OPENSSL_STACK *st, int i, const void *data); + +OPENSSL_STACK *OPENSSL_sk_new(OPENSSL_sk_compfunc cmp); +OPENSSL_STACK *OPENSSL_sk_new_null(void); +OPENSSL_STACK *OPENSSL_sk_new_reserve(OPENSSL_sk_compfunc c, int n); +int OPENSSL_sk_reserve(OPENSSL_STACK *st, int n); +void OPENSSL_sk_free(OPENSSL_STACK *); +void OPENSSL_sk_pop_free(OPENSSL_STACK *st, void (*func) (void *)); +OPENSSL_STACK *OPENSSL_sk_deep_copy(const OPENSSL_STACK *, + OPENSSL_sk_copyfunc c, + OPENSSL_sk_freefunc f); +int OPENSSL_sk_insert(OPENSSL_STACK *sk, const void *data, int where); +void *OPENSSL_sk_delete(OPENSSL_STACK *st, int loc); +void *OPENSSL_sk_delete_ptr(OPENSSL_STACK *st, const void *p); +int OPENSSL_sk_find(OPENSSL_STACK *st, const void *data); +int OPENSSL_sk_find_ex(OPENSSL_STACK *st, const void *data); +int OPENSSL_sk_push(OPENSSL_STACK *st, const void *data); +int OPENSSL_sk_unshift(OPENSSL_STACK *st, const void *data); +void *OPENSSL_sk_shift(OPENSSL_STACK *st); +void *OPENSSL_sk_pop(OPENSSL_STACK *st); +void OPENSSL_sk_zero(OPENSSL_STACK *st); +OPENSSL_sk_compfunc OPENSSL_sk_set_cmp_func(OPENSSL_STACK *sk, + OPENSSL_sk_compfunc cmp); +OPENSSL_STACK *OPENSSL_sk_dup(const OPENSSL_STACK *st); +void OPENSSL_sk_sort(OPENSSL_STACK *st); +int OPENSSL_sk_is_sorted(const OPENSSL_STACK *st); + +# if OPENSSL_API_COMPAT < 0x10100000L +# define _STACK OPENSSL_STACK +# define sk_num OPENSSL_sk_num +# define sk_value OPENSSL_sk_value +# define sk_set OPENSSL_sk_set +# define sk_new OPENSSL_sk_new +# define sk_new_null OPENSSL_sk_new_null +# define sk_free OPENSSL_sk_free +# define sk_pop_free OPENSSL_sk_pop_free +# define sk_deep_copy OPENSSL_sk_deep_copy +# define sk_insert OPENSSL_sk_insert +# define sk_delete OPENSSL_sk_delete +# define sk_delete_ptr OPENSSL_sk_delete_ptr +# define sk_find OPENSSL_sk_find +# define sk_find_ex OPENSSL_sk_find_ex +# define sk_push OPENSSL_sk_push +# define sk_unshift OPENSSL_sk_unshift +# define sk_shift OPENSSL_sk_shift +# define sk_pop OPENSSL_sk_pop +# define sk_zero OPENSSL_sk_zero +# define sk_set_cmp_func OPENSSL_sk_set_cmp_func +# define sk_dup OPENSSL_sk_dup +# define sk_sort OPENSSL_sk_sort +# define sk_is_sorted OPENSSL_sk_is_sorted +# endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/plugin/openssl/include/openssl/store.h b/plugin/openssl/include/openssl/store.h new file mode 100644 index 000000000..a40a7339e --- /dev/null +++ b/plugin/openssl/include/openssl/store.h @@ -0,0 +1,266 @@ +/* + * Copyright 2016-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_OSSL_STORE_H +# define HEADER_OSSL_STORE_H + +# include +# include +# include +# include + +# ifdef __cplusplus +extern "C" { +# endif + +/*- + * The main OSSL_STORE functions. + * ------------------------------ + * + * These allow applications to open a channel to a resource with supported + * data (keys, certs, crls, ...), read the data a piece at a time and decide + * what to do with it, and finally close. + */ + +typedef struct ossl_store_ctx_st OSSL_STORE_CTX; + +/* + * Typedef for the OSSL_STORE_INFO post processing callback. This can be used + * to massage the given OSSL_STORE_INFO, or to drop it entirely (by returning + * NULL). + */ +typedef OSSL_STORE_INFO *(*OSSL_STORE_post_process_info_fn)(OSSL_STORE_INFO *, + void *); + +/* + * Open a channel given a URI. The given UI method will be used any time the + * loader needs extra input, for example when a password or pin is needed, and + * will be passed the same user data every time it's needed in this context. + * + * Returns a context reference which represents the channel to communicate + * through. + */ +OSSL_STORE_CTX *OSSL_STORE_open(const char *uri, const UI_METHOD *ui_method, + void *ui_data, + OSSL_STORE_post_process_info_fn post_process, + void *post_process_data); + +/* + * Control / fine tune the OSSL_STORE channel. |cmd| determines what is to be + * done, and depends on the underlying loader (use OSSL_STORE_get0_scheme to + * determine which loader is used), except for common commands (see below). + * Each command takes different arguments. + */ +int OSSL_STORE_ctrl(OSSL_STORE_CTX *ctx, int cmd, ... /* args */); +int OSSL_STORE_vctrl(OSSL_STORE_CTX *ctx, int cmd, va_list args); + +/* + * Common ctrl commands that different loaders may choose to support. + */ +/* int on = 0 or 1; STORE_ctrl(ctx, STORE_C_USE_SECMEM, &on); */ +# define OSSL_STORE_C_USE_SECMEM 1 +/* Where custom commands start */ +# define OSSL_STORE_C_CUSTOM_START 100 + +/* + * Read one data item (a key, a cert, a CRL) that is supported by the OSSL_STORE + * functionality, given a context. + * Returns a OSSL_STORE_INFO pointer, from which OpenSSL typed data can be + * extracted with OSSL_STORE_INFO_get0_PKEY(), OSSL_STORE_INFO_get0_CERT(), ... + * NULL is returned on error, which may include that the data found at the URI + * can't be figured out for certain or is ambiguous. + */ +OSSL_STORE_INFO *OSSL_STORE_load(OSSL_STORE_CTX *ctx); + +/* + * Check if end of data (end of file) is reached + * Returns 1 on end, 0 otherwise. + */ +int OSSL_STORE_eof(OSSL_STORE_CTX *ctx); + +/* + * Check if an error occurred + * Returns 1 if it did, 0 otherwise. + */ +int OSSL_STORE_error(OSSL_STORE_CTX *ctx); + +/* + * Close the channel + * Returns 1 on success, 0 on error. + */ +int OSSL_STORE_close(OSSL_STORE_CTX *ctx); + + +/*- + * Extracting OpenSSL types from and creating new OSSL_STORE_INFOs + * --------------------------------------------------------------- + */ + +/* + * Types of data that can be ossl_stored in a OSSL_STORE_INFO. + * OSSL_STORE_INFO_NAME is typically found when getting a listing of + * available "files" / "tokens" / what have you. + */ +# define OSSL_STORE_INFO_NAME 1 /* char * */ +# define OSSL_STORE_INFO_PARAMS 2 /* EVP_PKEY * */ +# define OSSL_STORE_INFO_PKEY 3 /* EVP_PKEY * */ +# define OSSL_STORE_INFO_CERT 4 /* X509 * */ +# define OSSL_STORE_INFO_CRL 5 /* X509_CRL * */ + +/* + * Functions to generate OSSL_STORE_INFOs, one function for each type we + * support having in them, as well as a generic constructor. + * + * In all cases, ownership of the object is transferred to the OSSL_STORE_INFO + * and will therefore be freed when the OSSL_STORE_INFO is freed. + */ +OSSL_STORE_INFO *OSSL_STORE_INFO_new_NAME(char *name); +int OSSL_STORE_INFO_set0_NAME_description(OSSL_STORE_INFO *info, char *desc); +OSSL_STORE_INFO *OSSL_STORE_INFO_new_PARAMS(EVP_PKEY *params); +OSSL_STORE_INFO *OSSL_STORE_INFO_new_PKEY(EVP_PKEY *pkey); +OSSL_STORE_INFO *OSSL_STORE_INFO_new_CERT(X509 *x509); +OSSL_STORE_INFO *OSSL_STORE_INFO_new_CRL(X509_CRL *crl); + +/* + * Functions to try to extract data from a OSSL_STORE_INFO. + */ +int OSSL_STORE_INFO_get_type(const OSSL_STORE_INFO *info); +const char *OSSL_STORE_INFO_get0_NAME(const OSSL_STORE_INFO *info); +char *OSSL_STORE_INFO_get1_NAME(const OSSL_STORE_INFO *info); +const char *OSSL_STORE_INFO_get0_NAME_description(const OSSL_STORE_INFO *info); +char *OSSL_STORE_INFO_get1_NAME_description(const OSSL_STORE_INFO *info); +EVP_PKEY *OSSL_STORE_INFO_get0_PARAMS(const OSSL_STORE_INFO *info); +EVP_PKEY *OSSL_STORE_INFO_get1_PARAMS(const OSSL_STORE_INFO *info); +EVP_PKEY *OSSL_STORE_INFO_get0_PKEY(const OSSL_STORE_INFO *info); +EVP_PKEY *OSSL_STORE_INFO_get1_PKEY(const OSSL_STORE_INFO *info); +X509 *OSSL_STORE_INFO_get0_CERT(const OSSL_STORE_INFO *info); +X509 *OSSL_STORE_INFO_get1_CERT(const OSSL_STORE_INFO *info); +X509_CRL *OSSL_STORE_INFO_get0_CRL(const OSSL_STORE_INFO *info); +X509_CRL *OSSL_STORE_INFO_get1_CRL(const OSSL_STORE_INFO *info); + +const char *OSSL_STORE_INFO_type_string(int type); + +/* + * Free the OSSL_STORE_INFO + */ +void OSSL_STORE_INFO_free(OSSL_STORE_INFO *info); + + +/*- + * Functions to construct a search URI from a base URI and search criteria + * ----------------------------------------------------------------------- + */ + +/* OSSL_STORE search types */ +# define OSSL_STORE_SEARCH_BY_NAME 1 /* subject in certs, issuer in CRLs */ +# define OSSL_STORE_SEARCH_BY_ISSUER_SERIAL 2 +# define OSSL_STORE_SEARCH_BY_KEY_FINGERPRINT 3 +# define OSSL_STORE_SEARCH_BY_ALIAS 4 + +/* To check what search types the scheme handler supports */ +int OSSL_STORE_supports_search(OSSL_STORE_CTX *ctx, int search_type); + +/* Search term constructors */ +/* + * The input is considered to be owned by the caller, and must therefore + * remain present throughout the lifetime of the returned OSSL_STORE_SEARCH + */ +OSSL_STORE_SEARCH *OSSL_STORE_SEARCH_by_name(X509_NAME *name); +OSSL_STORE_SEARCH *OSSL_STORE_SEARCH_by_issuer_serial(X509_NAME *name, + const ASN1_INTEGER + *serial); +OSSL_STORE_SEARCH *OSSL_STORE_SEARCH_by_key_fingerprint(const EVP_MD *digest, + const unsigned char + *bytes, size_t len); +OSSL_STORE_SEARCH *OSSL_STORE_SEARCH_by_alias(const char *alias); + +/* Search term destructor */ +void OSSL_STORE_SEARCH_free(OSSL_STORE_SEARCH *search); + +/* Search term accessors */ +int OSSL_STORE_SEARCH_get_type(const OSSL_STORE_SEARCH *criterion); +X509_NAME *OSSL_STORE_SEARCH_get0_name(OSSL_STORE_SEARCH *criterion); +const ASN1_INTEGER *OSSL_STORE_SEARCH_get0_serial(const OSSL_STORE_SEARCH + *criterion); +const unsigned char *OSSL_STORE_SEARCH_get0_bytes(const OSSL_STORE_SEARCH + *criterion, size_t *length); +const char *OSSL_STORE_SEARCH_get0_string(const OSSL_STORE_SEARCH *criterion); +const EVP_MD *OSSL_STORE_SEARCH_get0_digest(const OSSL_STORE_SEARCH *criterion); + +/* + * Add search criterion and expected return type (which can be unspecified) + * to the loading channel. This MUST happen before the first OSSL_STORE_load(). + */ +int OSSL_STORE_expect(OSSL_STORE_CTX *ctx, int expected_type); +int OSSL_STORE_find(OSSL_STORE_CTX *ctx, OSSL_STORE_SEARCH *search); + + +/*- + * Function to register a loader for the given URI scheme. + * ------------------------------------------------------- + * + * The loader receives all the main components of an URI except for the + * scheme. + */ + +typedef struct ossl_store_loader_st OSSL_STORE_LOADER; +OSSL_STORE_LOADER *OSSL_STORE_LOADER_new(ENGINE *e, const char *scheme); +const ENGINE *OSSL_STORE_LOADER_get0_engine(const OSSL_STORE_LOADER *loader); +const char *OSSL_STORE_LOADER_get0_scheme(const OSSL_STORE_LOADER *loader); +/* struct ossl_store_loader_ctx_st is defined differently by each loader */ +typedef struct ossl_store_loader_ctx_st OSSL_STORE_LOADER_CTX; +typedef OSSL_STORE_LOADER_CTX *(*OSSL_STORE_open_fn)(const OSSL_STORE_LOADER + *loader, + const char *uri, + const UI_METHOD *ui_method, + void *ui_data); +int OSSL_STORE_LOADER_set_open(OSSL_STORE_LOADER *loader, + OSSL_STORE_open_fn open_function); +typedef int (*OSSL_STORE_ctrl_fn)(OSSL_STORE_LOADER_CTX *ctx, int cmd, + va_list args); +int OSSL_STORE_LOADER_set_ctrl(OSSL_STORE_LOADER *loader, + OSSL_STORE_ctrl_fn ctrl_function); +typedef int (*OSSL_STORE_expect_fn)(OSSL_STORE_LOADER_CTX *ctx, int expected); +int OSSL_STORE_LOADER_set_expect(OSSL_STORE_LOADER *loader, + OSSL_STORE_expect_fn expect_function); +typedef int (*OSSL_STORE_find_fn)(OSSL_STORE_LOADER_CTX *ctx, + OSSL_STORE_SEARCH *criteria); +int OSSL_STORE_LOADER_set_find(OSSL_STORE_LOADER *loader, + OSSL_STORE_find_fn find_function); +typedef OSSL_STORE_INFO *(*OSSL_STORE_load_fn)(OSSL_STORE_LOADER_CTX *ctx, + const UI_METHOD *ui_method, + void *ui_data); +int OSSL_STORE_LOADER_set_load(OSSL_STORE_LOADER *loader, + OSSL_STORE_load_fn load_function); +typedef int (*OSSL_STORE_eof_fn)(OSSL_STORE_LOADER_CTX *ctx); +int OSSL_STORE_LOADER_set_eof(OSSL_STORE_LOADER *loader, + OSSL_STORE_eof_fn eof_function); +typedef int (*OSSL_STORE_error_fn)(OSSL_STORE_LOADER_CTX *ctx); +int OSSL_STORE_LOADER_set_error(OSSL_STORE_LOADER *loader, + OSSL_STORE_error_fn error_function); +typedef int (*OSSL_STORE_close_fn)(OSSL_STORE_LOADER_CTX *ctx); +int OSSL_STORE_LOADER_set_close(OSSL_STORE_LOADER *loader, + OSSL_STORE_close_fn close_function); +void OSSL_STORE_LOADER_free(OSSL_STORE_LOADER *loader); + +int OSSL_STORE_register_loader(OSSL_STORE_LOADER *loader); +OSSL_STORE_LOADER *OSSL_STORE_unregister_loader(const char *scheme); + +/*- + * Functions to list STORE loaders + * ------------------------------- + */ +int OSSL_STORE_do_all_loaders(void (*do_function) (const OSSL_STORE_LOADER + *loader, void *do_arg), + void *do_arg); + +# ifdef __cplusplus +} +# endif +#endif diff --git a/plugin/openssl/include/openssl/storeerr.h b/plugin/openssl/include/openssl/storeerr.h new file mode 100644 index 000000000..190eab07f --- /dev/null +++ b/plugin/openssl/include/openssl/storeerr.h @@ -0,0 +1,91 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_OSSL_STOREERR_H +# define HEADER_OSSL_STOREERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_OSSL_STORE_strings(void); + +/* + * OSSL_STORE function codes. + */ +# define OSSL_STORE_F_FILE_CTRL 129 +# define OSSL_STORE_F_FILE_FIND 138 +# define OSSL_STORE_F_FILE_GET_PASS 118 +# define OSSL_STORE_F_FILE_LOAD 119 +# define OSSL_STORE_F_FILE_LOAD_TRY_DECODE 124 +# define OSSL_STORE_F_FILE_NAME_TO_URI 126 +# define OSSL_STORE_F_FILE_OPEN 120 +# define OSSL_STORE_F_OSSL_STORE_ATTACH_PEM_BIO 127 +# define OSSL_STORE_F_OSSL_STORE_EXPECT 130 +# define OSSL_STORE_F_OSSL_STORE_FILE_ATTACH_PEM_BIO_INT 128 +# define OSSL_STORE_F_OSSL_STORE_FIND 131 +# define OSSL_STORE_F_OSSL_STORE_GET0_LOADER_INT 100 +# define OSSL_STORE_F_OSSL_STORE_INFO_GET1_CERT 101 +# define OSSL_STORE_F_OSSL_STORE_INFO_GET1_CRL 102 +# define OSSL_STORE_F_OSSL_STORE_INFO_GET1_NAME 103 +# define OSSL_STORE_F_OSSL_STORE_INFO_GET1_NAME_DESCRIPTION 135 +# define OSSL_STORE_F_OSSL_STORE_INFO_GET1_PARAMS 104 +# define OSSL_STORE_F_OSSL_STORE_INFO_GET1_PKEY 105 +# define OSSL_STORE_F_OSSL_STORE_INFO_NEW_CERT 106 +# define OSSL_STORE_F_OSSL_STORE_INFO_NEW_CRL 107 +# define OSSL_STORE_F_OSSL_STORE_INFO_NEW_EMBEDDED 123 +# define OSSL_STORE_F_OSSL_STORE_INFO_NEW_NAME 109 +# define OSSL_STORE_F_OSSL_STORE_INFO_NEW_PARAMS 110 +# define OSSL_STORE_F_OSSL_STORE_INFO_NEW_PKEY 111 +# define OSSL_STORE_F_OSSL_STORE_INFO_SET0_NAME_DESCRIPTION 134 +# define OSSL_STORE_F_OSSL_STORE_INIT_ONCE 112 +# define OSSL_STORE_F_OSSL_STORE_LOADER_NEW 113 +# define OSSL_STORE_F_OSSL_STORE_OPEN 114 +# define OSSL_STORE_F_OSSL_STORE_OPEN_INT 115 +# define OSSL_STORE_F_OSSL_STORE_REGISTER_LOADER_INT 117 +# define OSSL_STORE_F_OSSL_STORE_SEARCH_BY_ALIAS 132 +# define OSSL_STORE_F_OSSL_STORE_SEARCH_BY_ISSUER_SERIAL 133 +# define OSSL_STORE_F_OSSL_STORE_SEARCH_BY_KEY_FINGERPRINT 136 +# define OSSL_STORE_F_OSSL_STORE_SEARCH_BY_NAME 137 +# define OSSL_STORE_F_OSSL_STORE_UNREGISTER_LOADER_INT 116 +# define OSSL_STORE_F_TRY_DECODE_PARAMS 121 +# define OSSL_STORE_F_TRY_DECODE_PKCS12 122 +# define OSSL_STORE_F_TRY_DECODE_PKCS8ENCRYPTED 125 + +/* + * OSSL_STORE reason codes. + */ +# define OSSL_STORE_R_AMBIGUOUS_CONTENT_TYPE 107 +# define OSSL_STORE_R_BAD_PASSWORD_READ 115 +# define OSSL_STORE_R_ERROR_VERIFYING_PKCS12_MAC 113 +# define OSSL_STORE_R_FINGERPRINT_SIZE_DOES_NOT_MATCH_DIGEST 121 +# define OSSL_STORE_R_INVALID_SCHEME 106 +# define OSSL_STORE_R_IS_NOT_A 112 +# define OSSL_STORE_R_LOADER_INCOMPLETE 116 +# define OSSL_STORE_R_LOADING_STARTED 117 +# define OSSL_STORE_R_NOT_A_CERTIFICATE 100 +# define OSSL_STORE_R_NOT_A_CRL 101 +# define OSSL_STORE_R_NOT_A_KEY 102 +# define OSSL_STORE_R_NOT_A_NAME 103 +# define OSSL_STORE_R_NOT_PARAMETERS 104 +# define OSSL_STORE_R_PASSPHRASE_CALLBACK_ERROR 114 +# define OSSL_STORE_R_PATH_MUST_BE_ABSOLUTE 108 +# define OSSL_STORE_R_SEARCH_ONLY_SUPPORTED_FOR_DIRECTORIES 119 +# define OSSL_STORE_R_UI_PROCESS_INTERRUPTED_OR_CANCELLED 109 +# define OSSL_STORE_R_UNREGISTERED_SCHEME 105 +# define OSSL_STORE_R_UNSUPPORTED_CONTENT_TYPE 110 +# define OSSL_STORE_R_UNSUPPORTED_OPERATION 118 +# define OSSL_STORE_R_UNSUPPORTED_SEARCH_TYPE 120 +# define OSSL_STORE_R_URI_AUTHORITY_UNSUPPORTED 111 + +#endif diff --git a/plugin/openssl/include/openssl/symhacks.h b/plugin/openssl/include/openssl/symhacks.h new file mode 100644 index 000000000..156ea6e4e --- /dev/null +++ b/plugin/openssl/include/openssl/symhacks.h @@ -0,0 +1,37 @@ +/* + * Copyright 1999-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_SYMHACKS_H +# define HEADER_SYMHACKS_H + +# include + +/* Case insensitive linking causes problems.... */ +# if defined(OPENSSL_SYS_VMS) +# 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 + +/* 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/plugin/openssl/include/openssl/tls1.h b/plugin/openssl/include/openssl/tls1.h new file mode 100644 index 000000000..76d9fda46 --- /dev/null +++ b/plugin/openssl/include/openssl/tls1.h @@ -0,0 +1,1237 @@ +/* + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved + * Copyright 2005 Nokia. All rights reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_TLS1_H +# define HEADER_TLS1_H + +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Default security level if not overridden at config time */ +# ifndef OPENSSL_TLS_SECURITY_LEVEL +# define OPENSSL_TLS_SECURITY_LEVEL 1 +# endif + +# define TLS1_VERSION 0x0301 +# define TLS1_1_VERSION 0x0302 +# define TLS1_2_VERSION 0x0303 +# define TLS1_3_VERSION 0x0304 +# define TLS_MAX_VERSION TLS1_3_VERSION + +/* Special value for method supporting multiple versions */ +# define TLS_ANY_VERSION 0x10000 + +# 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) \ + ((SSL_version(s) >> 8) == TLS1_VERSION_MAJOR ? SSL_version(s) : 0) + +# define TLS1_get_client_version(s) \ + ((SSL_client_version(s) >> 8) == TLS1_VERSION_MAJOR ? SSL_client_version(s) : 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 +/* TLSv1.3 alerts */ +# define TLS13_AD_MISSING_EXTENSION 109 /* fatal */ +# define TLS13_AD_CERTIFICATE_REQUIRED 116 /* fatal */ +/* 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 */ +# define TLS1_AD_NO_APPLICATION_PROTOCOL 120 /* 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 */ +/* + * Prior to TLSv1.3 the supported_groups extension was known as + * elliptic_curves + */ +# define TLSEXT_TYPE_supported_groups 10 +# define TLSEXT_TYPE_elliptic_curves TLSEXT_TYPE_supported_groups +# define TLSEXT_TYPE_ec_point_formats 11 + + +/* ExtensionType value from RFC5054 */ +# define TLSEXT_TYPE_srp 12 + +/* ExtensionType values from RFC5246 */ +# define TLSEXT_TYPE_signature_algorithms 13 + +/* ExtensionType value from RFC5764 */ +# define TLSEXT_TYPE_use_srtp 14 + +/* ExtensionType value from RFC5620 */ +# define TLSEXT_TYPE_heartbeat 15 + +/* ExtensionType value from RFC7301 */ +# define TLSEXT_TYPE_application_layer_protocol_negotiation 16 + +/* + * Extension type for Certificate Transparency + * https://tools.ietf.org/html/rfc6962#section-3.3.1 + */ +# define TLSEXT_TYPE_signed_certificate_timestamp 18 + +/* + * ExtensionType value for TLS padding extension. + * http://tools.ietf.org/html/draft-agl-tls-padding + */ +# define TLSEXT_TYPE_padding 21 + +/* ExtensionType value from RFC7366 */ +# define TLSEXT_TYPE_encrypt_then_mac 22 + +/* ExtensionType value from RFC7627 */ +# define TLSEXT_TYPE_extended_master_secret 23 + +/* ExtensionType value from RFC4507 */ +# define TLSEXT_TYPE_session_ticket 35 + +/* As defined for TLS1.3 */ +# define TLSEXT_TYPE_psk 41 +# define TLSEXT_TYPE_early_data 42 +# define TLSEXT_TYPE_supported_versions 43 +# define TLSEXT_TYPE_cookie 44 +# define TLSEXT_TYPE_psk_kex_modes 45 +# define TLSEXT_TYPE_certificate_authorities 47 +# define TLSEXT_TYPE_post_handshake_auth 49 +# define TLSEXT_TYPE_signature_algorithms_cert 50 +# define TLSEXT_TYPE_key_share 51 + +/* Temporary extension type */ +# define TLSEXT_TYPE_renegotiate 0xff01 + +# ifndef OPENSSL_NO_NEXTPROTONEG +/* This is not an IANA defined extension number */ +# define TLSEXT_TYPE_next_proto_neg 13172 +# endif + +/* NameType value from RFC3546 */ +# define TLSEXT_NAMETYPE_host_name 0 +/* status request value from RFC3546 */ +# define TLSEXT_STATUSTYPE_ocsp 1 + +/* ECPointFormat values from RFC4492 */ +# define TLSEXT_ECPOINTFORMAT_first 0 +# define TLSEXT_ECPOINTFORMAT_uncompressed 0 +# define TLSEXT_ECPOINTFORMAT_ansiX962_compressed_prime 1 +# define TLSEXT_ECPOINTFORMAT_ansiX962_compressed_char2 2 +# define TLSEXT_ECPOINTFORMAT_last 2 + +/* Signature and hash algorithms from RFC5246 */ +# define TLSEXT_signature_anonymous 0 +# define TLSEXT_signature_rsa 1 +# define TLSEXT_signature_dsa 2 +# define TLSEXT_signature_ecdsa 3 +# define TLSEXT_signature_gostr34102001 237 +# define TLSEXT_signature_gostr34102012_256 238 +# define TLSEXT_signature_gostr34102012_512 239 + +/* Total number of different signature algorithms */ +# define TLSEXT_signature_num 7 + +# 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 +# define TLSEXT_hash_gostr3411 237 +# define TLSEXT_hash_gostr34112012_256 238 +# define TLSEXT_hash_gostr34112012_512 239 + +/* Total number of different digest algorithms */ + +# define TLSEXT_hash_num 10 + +/* Flag set for unrecognised algorithms */ +# define TLSEXT_nid_unknown 0x1000000 + +/* ECC curves */ + +# define TLSEXT_curve_P_256 23 +# define TLSEXT_curve_P_384 24 + +/* OpenSSL value to disable maximum fragment length extension */ +# define TLSEXT_max_fragment_length_DISABLED 0 +/* Allowed values for max fragment length extension */ +# define TLSEXT_max_fragment_length_512 1 +# define TLSEXT_max_fragment_length_1024 2 +# define TLSEXT_max_fragment_length_2048 3 +# define TLSEXT_max_fragment_length_4096 4 + +int SSL_CTX_set_tlsext_max_fragment_length(SSL_CTX *ctx, uint8_t mode); +int SSL_set_tlsext_max_fragment_length(SSL *ssl, uint8_t mode); + +# define TLSEXT_MAXLEN_host_name 255 + +__owur const char *SSL_get_servername(const SSL *s, const int type); +__owur 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 + * 0 or -1 otherwise. + */ +__owur int SSL_export_keying_material(SSL *s, unsigned char *out, size_t olen, + const char *label, size_t llen, + const unsigned char *context, + size_t contextlen, int use_context); + +/* + * SSL_export_keying_material_early exports a value derived from the + * early exporter master secret, as specified in + * https://tools.ietf.org/html/draft-ietf-tls-tls13-23. It writes + * |olen| bytes to |out| given a label and optional context. It + * returns 1 on success and 0 otherwise. + */ +__owur int SSL_export_keying_material_early(SSL *s, unsigned char *out, + size_t olen, const char *label, + size_t llen, + const unsigned char *context, + size_t contextlen); + +int SSL_get_peer_signature_type_nid(const SSL *s, int *pnid); +int SSL_get_signature_type_nid(const SSL *s, int *pnid); + +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); + +__owur 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,\ + (void *)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,arg) + +# define SSL_get_tlsext_status_type(ssl) \ + SSL_ctrl(ssl,SSL_CTRL_GET_TLSEXT_STATUS_REQ_TYPE,0,NULL) + +# 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,arg) + +# define SSL_set_tlsext_status_exts(ssl, arg) \ + SSL_ctrl(ssl,SSL_CTRL_SET_TLSEXT_STATUS_REQ_EXTS,0,arg) + +# define SSL_get_tlsext_status_ids(ssl, arg) \ + SSL_ctrl(ssl,SSL_CTRL_GET_TLSEXT_STATUS_REQ_IDS,0,arg) + +# define SSL_set_tlsext_status_ids(ssl, arg) \ + SSL_ctrl(ssl,SSL_CTRL_SET_TLSEXT_STATUS_REQ_IDS,0,arg) + +# define SSL_get_tlsext_status_ocsp_resp(ssl, arg) \ + SSL_ctrl(ssl,SSL_CTRL_GET_TLSEXT_STATUS_REQ_OCSP_RESP,0,arg) + +# define SSL_set_tlsext_status_ocsp_resp(ssl, arg, arglen) \ + SSL_ctrl(ssl,SSL_CTRL_SET_TLSEXT_STATUS_REQ_OCSP_RESP,arglen,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,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_get_tlsext_status_cb(ssl, cb) \ + SSL_CTX_ctrl(ssl,SSL_CTRL_GET_TLSEXT_STATUS_REQ_CB,0,(void *)cb) +# 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_get_tlsext_status_arg(ssl, arg) \ + SSL_CTX_ctrl(ssl,SSL_CTRL_GET_TLSEXT_STATUS_REQ_CB_ARG,0,arg) +# define SSL_CTX_set_tlsext_status_arg(ssl, arg) \ + SSL_CTX_ctrl(ssl,SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB_ARG,0,arg) + +# define SSL_CTX_set_tlsext_status_type(ssl, type) \ + SSL_CTX_ctrl(ssl,SSL_CTRL_SET_TLSEXT_STATUS_REQ_TYPE,type,NULL) + +# define SSL_CTX_get_tlsext_status_type(ssl) \ + SSL_CTX_ctrl(ssl,SSL_CTRL_GET_TLSEXT_STATUS_REQ_TYPE,0,NULL) + +# 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_DTLSEXT_HB_ENABLED 0x01 +# define SSL_DTLSEXT_HB_DONT_SEND_REQUESTS 0x02 +# define SSL_DTLSEXT_HB_DONT_RECV_REQUESTS 0x04 +# define SSL_get_dtlsext_heartbeat_pending(ssl) \ + SSL_ctrl(ssl,SSL_CTRL_GET_DTLS_EXT_HEARTBEAT_PENDING,0,NULL) +# define SSL_set_dtlsext_heartbeat_no_requests(ssl, arg) \ + SSL_ctrl(ssl,SSL_CTRL_SET_DTLS_EXT_HEARTBEAT_NO_REQUESTS,arg,NULL) + +# if OPENSSL_API_COMPAT < 0x10100000L +# define SSL_CTRL_TLS_EXT_SEND_HEARTBEAT \ + SSL_CTRL_DTLS_EXT_SEND_HEARTBEAT +# define SSL_CTRL_GET_TLS_EXT_HEARTBEAT_PENDING \ + SSL_CTRL_GET_DTLS_EXT_HEARTBEAT_PENDING +# define SSL_CTRL_SET_TLS_EXT_HEARTBEAT_NO_REQUESTS \ + SSL_CTRL_SET_DTLS_EXT_HEARTBEAT_NO_REQUESTS +# define SSL_TLSEXT_HB_ENABLED \ + SSL_DTLSEXT_HB_ENABLED +# define SSL_TLSEXT_HB_DONT_SEND_REQUESTS \ + SSL_DTLSEXT_HB_DONT_SEND_REQUESTS +# define SSL_TLSEXT_HB_DONT_RECV_REQUESTS \ + SSL_DTLSEXT_HB_DONT_RECV_REQUESTS +# define SSL_get_tlsext_heartbeat_pending(ssl) \ + SSL_get_dtlsext_heartbeat_pending(ssl) +# define SSL_set_tlsext_heartbeat_no_requests(ssl, arg) \ + SSL_set_dtlsext_heartbeat_no_requests(ssl,arg) +# 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 +# define TLS1_CK_DHE_PSK_WITH_RC4_128_SHA 0x0300008E +# define TLS1_CK_DHE_PSK_WITH_3DES_EDE_CBC_SHA 0x0300008F +# define TLS1_CK_DHE_PSK_WITH_AES_128_CBC_SHA 0x03000090 +# define TLS1_CK_DHE_PSK_WITH_AES_256_CBC_SHA 0x03000091 +# define TLS1_CK_RSA_PSK_WITH_RC4_128_SHA 0x03000092 +# define TLS1_CK_RSA_PSK_WITH_3DES_EDE_CBC_SHA 0x03000093 +# define TLS1_CK_RSA_PSK_WITH_AES_128_CBC_SHA 0x03000094 +# define TLS1_CK_RSA_PSK_WITH_AES_256_CBC_SHA 0x03000095 + +/* PSK ciphersuites from 5487 */ +# define TLS1_CK_PSK_WITH_AES_128_GCM_SHA256 0x030000A8 +# define TLS1_CK_PSK_WITH_AES_256_GCM_SHA384 0x030000A9 +# define TLS1_CK_DHE_PSK_WITH_AES_128_GCM_SHA256 0x030000AA +# define TLS1_CK_DHE_PSK_WITH_AES_256_GCM_SHA384 0x030000AB +# define TLS1_CK_RSA_PSK_WITH_AES_128_GCM_SHA256 0x030000AC +# define TLS1_CK_RSA_PSK_WITH_AES_256_GCM_SHA384 0x030000AD +# define TLS1_CK_PSK_WITH_AES_128_CBC_SHA256 0x030000AE +# define TLS1_CK_PSK_WITH_AES_256_CBC_SHA384 0x030000AF +# define TLS1_CK_PSK_WITH_NULL_SHA256 0x030000B0 +# define TLS1_CK_PSK_WITH_NULL_SHA384 0x030000B1 +# define TLS1_CK_DHE_PSK_WITH_AES_128_CBC_SHA256 0x030000B2 +# define TLS1_CK_DHE_PSK_WITH_AES_256_CBC_SHA384 0x030000B3 +# define TLS1_CK_DHE_PSK_WITH_NULL_SHA256 0x030000B4 +# define TLS1_CK_DHE_PSK_WITH_NULL_SHA384 0x030000B5 +# define TLS1_CK_RSA_PSK_WITH_AES_128_CBC_SHA256 0x030000B6 +# define TLS1_CK_RSA_PSK_WITH_AES_256_CBC_SHA384 0x030000B7 +# define TLS1_CK_RSA_PSK_WITH_NULL_SHA256 0x030000B8 +# define TLS1_CK_RSA_PSK_WITH_NULL_SHA384 0x030000B9 + +/* NULL PSK ciphersuites from RFC4785 */ +# define TLS1_CK_PSK_WITH_NULL_SHA 0x0300002C +# define TLS1_CK_DHE_PSK_WITH_NULL_SHA 0x0300002D +# define TLS1_CK_RSA_PSK_WITH_NULL_SHA 0x0300002E + +/* 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 + +/* CCM ciphersuites from RFC6655 */ +# define TLS1_CK_RSA_WITH_AES_128_CCM 0x0300C09C +# define TLS1_CK_RSA_WITH_AES_256_CCM 0x0300C09D +# define TLS1_CK_DHE_RSA_WITH_AES_128_CCM 0x0300C09E +# define TLS1_CK_DHE_RSA_WITH_AES_256_CCM 0x0300C09F +# define TLS1_CK_RSA_WITH_AES_128_CCM_8 0x0300C0A0 +# define TLS1_CK_RSA_WITH_AES_256_CCM_8 0x0300C0A1 +# define TLS1_CK_DHE_RSA_WITH_AES_128_CCM_8 0x0300C0A2 +# define TLS1_CK_DHE_RSA_WITH_AES_256_CCM_8 0x0300C0A3 +# define TLS1_CK_PSK_WITH_AES_128_CCM 0x0300C0A4 +# define TLS1_CK_PSK_WITH_AES_256_CCM 0x0300C0A5 +# define TLS1_CK_DHE_PSK_WITH_AES_128_CCM 0x0300C0A6 +# define TLS1_CK_DHE_PSK_WITH_AES_256_CCM 0x0300C0A7 +# define TLS1_CK_PSK_WITH_AES_128_CCM_8 0x0300C0A8 +# define TLS1_CK_PSK_WITH_AES_256_CCM_8 0x0300C0A9 +# define TLS1_CK_DHE_PSK_WITH_AES_128_CCM_8 0x0300C0AA +# define TLS1_CK_DHE_PSK_WITH_AES_256_CCM_8 0x0300C0AB + +/* CCM ciphersuites from RFC7251 */ +# define TLS1_CK_ECDHE_ECDSA_WITH_AES_128_CCM 0x0300C0AC +# define TLS1_CK_ECDHE_ECDSA_WITH_AES_256_CCM 0x0300C0AD +# define TLS1_CK_ECDHE_ECDSA_WITH_AES_128_CCM_8 0x0300C0AE +# define TLS1_CK_ECDHE_ECDSA_WITH_AES_256_CCM_8 0x0300C0AF + +/* TLS 1.2 Camellia SHA-256 ciphersuites from RFC5932 */ +# define TLS1_CK_RSA_WITH_CAMELLIA_128_CBC_SHA256 0x030000BA +# define TLS1_CK_DH_DSS_WITH_CAMELLIA_128_CBC_SHA256 0x030000BB +# define TLS1_CK_DH_RSA_WITH_CAMELLIA_128_CBC_SHA256 0x030000BC +# define TLS1_CK_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA256 0x030000BD +# define TLS1_CK_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 0x030000BE +# define TLS1_CK_ADH_WITH_CAMELLIA_128_CBC_SHA256 0x030000BF + +# define TLS1_CK_RSA_WITH_CAMELLIA_256_CBC_SHA256 0x030000C0 +# define TLS1_CK_DH_DSS_WITH_CAMELLIA_256_CBC_SHA256 0x030000C1 +# define TLS1_CK_DH_RSA_WITH_CAMELLIA_256_CBC_SHA256 0x030000C2 +# define TLS1_CK_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA256 0x030000C3 +# define TLS1_CK_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256 0x030000C4 +# define TLS1_CK_ADH_WITH_CAMELLIA_256_CBC_SHA256 0x030000C5 + +/* ECC ciphersuites from RFC4492 */ +# 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 + +/* ECDHE PSK ciphersuites from RFC5489 */ +# define TLS1_CK_ECDHE_PSK_WITH_RC4_128_SHA 0x0300C033 +# define TLS1_CK_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA 0x0300C034 +# define TLS1_CK_ECDHE_PSK_WITH_AES_128_CBC_SHA 0x0300C035 +# define TLS1_CK_ECDHE_PSK_WITH_AES_256_CBC_SHA 0x0300C036 + +# define TLS1_CK_ECDHE_PSK_WITH_AES_128_CBC_SHA256 0x0300C037 +# define TLS1_CK_ECDHE_PSK_WITH_AES_256_CBC_SHA384 0x0300C038 + +/* NULL PSK ciphersuites from RFC4785 */ +# define TLS1_CK_ECDHE_PSK_WITH_NULL_SHA 0x0300C039 +# define TLS1_CK_ECDHE_PSK_WITH_NULL_SHA256 0x0300C03A +# define TLS1_CK_ECDHE_PSK_WITH_NULL_SHA384 0x0300C03B + +/* Camellia-CBC ciphersuites from RFC6367 */ +# define TLS1_CK_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256 0x0300C072 +# define TLS1_CK_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384 0x0300C073 +# define TLS1_CK_ECDH_ECDSA_WITH_CAMELLIA_128_CBC_SHA256 0x0300C074 +# define TLS1_CK_ECDH_ECDSA_WITH_CAMELLIA_256_CBC_SHA384 0x0300C075 +# define TLS1_CK_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 0x0300C076 +# define TLS1_CK_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384 0x0300C077 +# define TLS1_CK_ECDH_RSA_WITH_CAMELLIA_128_CBC_SHA256 0x0300C078 +# define TLS1_CK_ECDH_RSA_WITH_CAMELLIA_256_CBC_SHA384 0x0300C079 + +# define TLS1_CK_PSK_WITH_CAMELLIA_128_CBC_SHA256 0x0300C094 +# define TLS1_CK_PSK_WITH_CAMELLIA_256_CBC_SHA384 0x0300C095 +# define TLS1_CK_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256 0x0300C096 +# define TLS1_CK_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384 0x0300C097 +# define TLS1_CK_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256 0x0300C098 +# define TLS1_CK_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384 0x0300C099 +# define TLS1_CK_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256 0x0300C09A +# define TLS1_CK_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384 0x0300C09B + +/* draft-ietf-tls-chacha20-poly1305-03 */ +# define TLS1_CK_ECDHE_RSA_WITH_CHACHA20_POLY1305 0x0300CCA8 +# define TLS1_CK_ECDHE_ECDSA_WITH_CHACHA20_POLY1305 0x0300CCA9 +# define TLS1_CK_DHE_RSA_WITH_CHACHA20_POLY1305 0x0300CCAA +# define TLS1_CK_PSK_WITH_CHACHA20_POLY1305 0x0300CCAB +# define TLS1_CK_ECDHE_PSK_WITH_CHACHA20_POLY1305 0x0300CCAC +# define TLS1_CK_DHE_PSK_WITH_CHACHA20_POLY1305 0x0300CCAD +# define TLS1_CK_RSA_PSK_WITH_CHACHA20_POLY1305 0x0300CCAE + +/* TLS v1.3 ciphersuites */ +# define TLS1_3_CK_AES_128_GCM_SHA256 0x03001301 +# define TLS1_3_CK_AES_256_GCM_SHA384 0x03001302 +# define TLS1_3_CK_CHACHA20_POLY1305_SHA256 0x03001303 +# define TLS1_3_CK_AES_128_CCM_SHA256 0x03001304 +# define TLS1_3_CK_AES_128_CCM_8_SHA256 0x03001305 + +/* Aria ciphersuites from RFC6209 */ +# define TLS1_CK_RSA_WITH_ARIA_128_GCM_SHA256 0x0300C050 +# define TLS1_CK_RSA_WITH_ARIA_256_GCM_SHA384 0x0300C051 +# define TLS1_CK_DHE_RSA_WITH_ARIA_128_GCM_SHA256 0x0300C052 +# define TLS1_CK_DHE_RSA_WITH_ARIA_256_GCM_SHA384 0x0300C053 +# define TLS1_CK_DH_RSA_WITH_ARIA_128_GCM_SHA256 0x0300C054 +# define TLS1_CK_DH_RSA_WITH_ARIA_256_GCM_SHA384 0x0300C055 +# define TLS1_CK_DHE_DSS_WITH_ARIA_128_GCM_SHA256 0x0300C056 +# define TLS1_CK_DHE_DSS_WITH_ARIA_256_GCM_SHA384 0x0300C057 +# define TLS1_CK_DH_DSS_WITH_ARIA_128_GCM_SHA256 0x0300C058 +# define TLS1_CK_DH_DSS_WITH_ARIA_256_GCM_SHA384 0x0300C059 +# define TLS1_CK_DH_anon_WITH_ARIA_128_GCM_SHA256 0x0300C05A +# define TLS1_CK_DH_anon_WITH_ARIA_256_GCM_SHA384 0x0300C05B +# define TLS1_CK_ECDHE_ECDSA_WITH_ARIA_128_GCM_SHA256 0x0300C05C +# define TLS1_CK_ECDHE_ECDSA_WITH_ARIA_256_GCM_SHA384 0x0300C05D +# define TLS1_CK_ECDH_ECDSA_WITH_ARIA_128_GCM_SHA256 0x0300C05E +# define TLS1_CK_ECDH_ECDSA_WITH_ARIA_256_GCM_SHA384 0x0300C05F +# define TLS1_CK_ECDHE_RSA_WITH_ARIA_128_GCM_SHA256 0x0300C060 +# define TLS1_CK_ECDHE_RSA_WITH_ARIA_256_GCM_SHA384 0x0300C061 +# define TLS1_CK_ECDH_RSA_WITH_ARIA_128_GCM_SHA256 0x0300C062 +# define TLS1_CK_ECDH_RSA_WITH_ARIA_256_GCM_SHA384 0x0300C063 +# define TLS1_CK_PSK_WITH_ARIA_128_GCM_SHA256 0x0300C06A +# define TLS1_CK_PSK_WITH_ARIA_256_GCM_SHA384 0x0300C06B +# define TLS1_CK_DHE_PSK_WITH_ARIA_128_GCM_SHA256 0x0300C06C +# define TLS1_CK_DHE_PSK_WITH_ARIA_256_GCM_SHA384 0x0300C06D +# define TLS1_CK_RSA_PSK_WITH_ARIA_128_GCM_SHA256 0x0300C06E +# define TLS1_CK_RSA_PSK_WITH_ARIA_256_GCM_SHA384 0x0300C06F + +/* a bundle of RFC standard cipher names, generated from ssl3_ciphers[] */ +# define TLS1_RFC_RSA_WITH_AES_128_SHA "TLS_RSA_WITH_AES_128_CBC_SHA" +# define TLS1_RFC_DHE_DSS_WITH_AES_128_SHA "TLS_DHE_DSS_WITH_AES_128_CBC_SHA" +# define TLS1_RFC_DHE_RSA_WITH_AES_128_SHA "TLS_DHE_RSA_WITH_AES_128_CBC_SHA" +# define TLS1_RFC_ADH_WITH_AES_128_SHA "TLS_DH_anon_WITH_AES_128_CBC_SHA" +# define TLS1_RFC_RSA_WITH_AES_256_SHA "TLS_RSA_WITH_AES_256_CBC_SHA" +# define TLS1_RFC_DHE_DSS_WITH_AES_256_SHA "TLS_DHE_DSS_WITH_AES_256_CBC_SHA" +# define TLS1_RFC_DHE_RSA_WITH_AES_256_SHA "TLS_DHE_RSA_WITH_AES_256_CBC_SHA" +# define TLS1_RFC_ADH_WITH_AES_256_SHA "TLS_DH_anon_WITH_AES_256_CBC_SHA" +# define TLS1_RFC_RSA_WITH_NULL_SHA256 "TLS_RSA_WITH_NULL_SHA256" +# define TLS1_RFC_RSA_WITH_AES_128_SHA256 "TLS_RSA_WITH_AES_128_CBC_SHA256" +# define TLS1_RFC_RSA_WITH_AES_256_SHA256 "TLS_RSA_WITH_AES_256_CBC_SHA256" +# define TLS1_RFC_DHE_DSS_WITH_AES_128_SHA256 "TLS_DHE_DSS_WITH_AES_128_CBC_SHA256" +# define TLS1_RFC_DHE_RSA_WITH_AES_128_SHA256 "TLS_DHE_RSA_WITH_AES_128_CBC_SHA256" +# define TLS1_RFC_DHE_DSS_WITH_AES_256_SHA256 "TLS_DHE_DSS_WITH_AES_256_CBC_SHA256" +# define TLS1_RFC_DHE_RSA_WITH_AES_256_SHA256 "TLS_DHE_RSA_WITH_AES_256_CBC_SHA256" +# define TLS1_RFC_ADH_WITH_AES_128_SHA256 "TLS_DH_anon_WITH_AES_128_CBC_SHA256" +# define TLS1_RFC_ADH_WITH_AES_256_SHA256 "TLS_DH_anon_WITH_AES_256_CBC_SHA256" +# define TLS1_RFC_RSA_WITH_AES_128_GCM_SHA256 "TLS_RSA_WITH_AES_128_GCM_SHA256" +# define TLS1_RFC_RSA_WITH_AES_256_GCM_SHA384 "TLS_RSA_WITH_AES_256_GCM_SHA384" +# define TLS1_RFC_DHE_RSA_WITH_AES_128_GCM_SHA256 "TLS_DHE_RSA_WITH_AES_128_GCM_SHA256" +# define TLS1_RFC_DHE_RSA_WITH_AES_256_GCM_SHA384 "TLS_DHE_RSA_WITH_AES_256_GCM_SHA384" +# define TLS1_RFC_DHE_DSS_WITH_AES_128_GCM_SHA256 "TLS_DHE_DSS_WITH_AES_128_GCM_SHA256" +# define TLS1_RFC_DHE_DSS_WITH_AES_256_GCM_SHA384 "TLS_DHE_DSS_WITH_AES_256_GCM_SHA384" +# define TLS1_RFC_ADH_WITH_AES_128_GCM_SHA256 "TLS_DH_anon_WITH_AES_128_GCM_SHA256" +# define TLS1_RFC_ADH_WITH_AES_256_GCM_SHA384 "TLS_DH_anon_WITH_AES_256_GCM_SHA384" +# define TLS1_RFC_RSA_WITH_AES_128_CCM "TLS_RSA_WITH_AES_128_CCM" +# define TLS1_RFC_RSA_WITH_AES_256_CCM "TLS_RSA_WITH_AES_256_CCM" +# define TLS1_RFC_DHE_RSA_WITH_AES_128_CCM "TLS_DHE_RSA_WITH_AES_128_CCM" +# define TLS1_RFC_DHE_RSA_WITH_AES_256_CCM "TLS_DHE_RSA_WITH_AES_256_CCM" +# define TLS1_RFC_RSA_WITH_AES_128_CCM_8 "TLS_RSA_WITH_AES_128_CCM_8" +# define TLS1_RFC_RSA_WITH_AES_256_CCM_8 "TLS_RSA_WITH_AES_256_CCM_8" +# define TLS1_RFC_DHE_RSA_WITH_AES_128_CCM_8 "TLS_DHE_RSA_WITH_AES_128_CCM_8" +# define TLS1_RFC_DHE_RSA_WITH_AES_256_CCM_8 "TLS_DHE_RSA_WITH_AES_256_CCM_8" +# define TLS1_RFC_PSK_WITH_AES_128_CCM "TLS_PSK_WITH_AES_128_CCM" +# define TLS1_RFC_PSK_WITH_AES_256_CCM "TLS_PSK_WITH_AES_256_CCM" +# define TLS1_RFC_DHE_PSK_WITH_AES_128_CCM "TLS_DHE_PSK_WITH_AES_128_CCM" +# define TLS1_RFC_DHE_PSK_WITH_AES_256_CCM "TLS_DHE_PSK_WITH_AES_256_CCM" +# define TLS1_RFC_PSK_WITH_AES_128_CCM_8 "TLS_PSK_WITH_AES_128_CCM_8" +# define TLS1_RFC_PSK_WITH_AES_256_CCM_8 "TLS_PSK_WITH_AES_256_CCM_8" +# define TLS1_RFC_DHE_PSK_WITH_AES_128_CCM_8 "TLS_PSK_DHE_WITH_AES_128_CCM_8" +# define TLS1_RFC_DHE_PSK_WITH_AES_256_CCM_8 "TLS_PSK_DHE_WITH_AES_256_CCM_8" +# define TLS1_RFC_ECDHE_ECDSA_WITH_AES_128_CCM "TLS_ECDHE_ECDSA_WITH_AES_128_CCM" +# define TLS1_RFC_ECDHE_ECDSA_WITH_AES_256_CCM "TLS_ECDHE_ECDSA_WITH_AES_256_CCM" +# define TLS1_RFC_ECDHE_ECDSA_WITH_AES_128_CCM_8 "TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8" +# define TLS1_RFC_ECDHE_ECDSA_WITH_AES_256_CCM_8 "TLS_ECDHE_ECDSA_WITH_AES_256_CCM_8" +# define TLS1_3_RFC_AES_128_GCM_SHA256 "TLS_AES_128_GCM_SHA256" +# define TLS1_3_RFC_AES_256_GCM_SHA384 "TLS_AES_256_GCM_SHA384" +# define TLS1_3_RFC_CHACHA20_POLY1305_SHA256 "TLS_CHACHA20_POLY1305_SHA256" +# define TLS1_3_RFC_AES_128_CCM_SHA256 "TLS_AES_128_CCM_SHA256" +# define TLS1_3_RFC_AES_128_CCM_8_SHA256 "TLS_AES_128_CCM_8_SHA256" +# define TLS1_RFC_ECDHE_ECDSA_WITH_NULL_SHA "TLS_ECDHE_ECDSA_WITH_NULL_SHA" +# define TLS1_RFC_ECDHE_ECDSA_WITH_DES_192_CBC3_SHA "TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA" +# define TLS1_RFC_ECDHE_ECDSA_WITH_AES_128_CBC_SHA "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA" +# define TLS1_RFC_ECDHE_ECDSA_WITH_AES_256_CBC_SHA "TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA" +# define TLS1_RFC_ECDHE_RSA_WITH_NULL_SHA "TLS_ECDHE_RSA_WITH_NULL_SHA" +# define TLS1_RFC_ECDHE_RSA_WITH_DES_192_CBC3_SHA "TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA" +# define TLS1_RFC_ECDHE_RSA_WITH_AES_128_CBC_SHA "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA" +# define TLS1_RFC_ECDHE_RSA_WITH_AES_256_CBC_SHA "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA" +# define TLS1_RFC_ECDH_anon_WITH_NULL_SHA "TLS_ECDH_anon_WITH_NULL_SHA" +# define TLS1_RFC_ECDH_anon_WITH_DES_192_CBC3_SHA "TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA" +# define TLS1_RFC_ECDH_anon_WITH_AES_128_CBC_SHA "TLS_ECDH_anon_WITH_AES_128_CBC_SHA" +# define TLS1_RFC_ECDH_anon_WITH_AES_256_CBC_SHA "TLS_ECDH_anon_WITH_AES_256_CBC_SHA" +# define TLS1_RFC_ECDHE_ECDSA_WITH_AES_128_SHA256 "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256" +# define TLS1_RFC_ECDHE_ECDSA_WITH_AES_256_SHA384 "TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384" +# define TLS1_RFC_ECDHE_RSA_WITH_AES_128_SHA256 "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256" +# define TLS1_RFC_ECDHE_RSA_WITH_AES_256_SHA384 "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384" +# define TLS1_RFC_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256" +# define TLS1_RFC_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384" +# define TLS1_RFC_ECDHE_RSA_WITH_AES_128_GCM_SHA256 "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256" +# define TLS1_RFC_ECDHE_RSA_WITH_AES_256_GCM_SHA384 "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384" +# define TLS1_RFC_PSK_WITH_NULL_SHA "TLS_PSK_WITH_NULL_SHA" +# define TLS1_RFC_DHE_PSK_WITH_NULL_SHA "TLS_DHE_PSK_WITH_NULL_SHA" +# define TLS1_RFC_RSA_PSK_WITH_NULL_SHA "TLS_RSA_PSK_WITH_NULL_SHA" +# define TLS1_RFC_PSK_WITH_3DES_EDE_CBC_SHA "TLS_PSK_WITH_3DES_EDE_CBC_SHA" +# define TLS1_RFC_PSK_WITH_AES_128_CBC_SHA "TLS_PSK_WITH_AES_128_CBC_SHA" +# define TLS1_RFC_PSK_WITH_AES_256_CBC_SHA "TLS_PSK_WITH_AES_256_CBC_SHA" +# define TLS1_RFC_DHE_PSK_WITH_3DES_EDE_CBC_SHA "TLS_DHE_PSK_WITH_3DES_EDE_CBC_SHA" +# define TLS1_RFC_DHE_PSK_WITH_AES_128_CBC_SHA "TLS_DHE_PSK_WITH_AES_128_CBC_SHA" +# define TLS1_RFC_DHE_PSK_WITH_AES_256_CBC_SHA "TLS_DHE_PSK_WITH_AES_256_CBC_SHA" +# define TLS1_RFC_RSA_PSK_WITH_3DES_EDE_CBC_SHA "TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA" +# define TLS1_RFC_RSA_PSK_WITH_AES_128_CBC_SHA "TLS_RSA_PSK_WITH_AES_128_CBC_SHA" +# define TLS1_RFC_RSA_PSK_WITH_AES_256_CBC_SHA "TLS_RSA_PSK_WITH_AES_256_CBC_SHA" +# define TLS1_RFC_PSK_WITH_AES_128_GCM_SHA256 "TLS_PSK_WITH_AES_128_GCM_SHA256" +# define TLS1_RFC_PSK_WITH_AES_256_GCM_SHA384 "TLS_PSK_WITH_AES_256_GCM_SHA384" +# define TLS1_RFC_DHE_PSK_WITH_AES_128_GCM_SHA256 "TLS_DHE_PSK_WITH_AES_128_GCM_SHA256" +# define TLS1_RFC_DHE_PSK_WITH_AES_256_GCM_SHA384 "TLS_DHE_PSK_WITH_AES_256_GCM_SHA384" +# define TLS1_RFC_RSA_PSK_WITH_AES_128_GCM_SHA256 "TLS_RSA_PSK_WITH_AES_128_GCM_SHA256" +# define TLS1_RFC_RSA_PSK_WITH_AES_256_GCM_SHA384 "TLS_RSA_PSK_WITH_AES_256_GCM_SHA384" +# define TLS1_RFC_PSK_WITH_AES_128_CBC_SHA256 "TLS_PSK_WITH_AES_128_CBC_SHA256" +# define TLS1_RFC_PSK_WITH_AES_256_CBC_SHA384 "TLS_PSK_WITH_AES_256_CBC_SHA384" +# define TLS1_RFC_PSK_WITH_NULL_SHA256 "TLS_PSK_WITH_NULL_SHA256" +# define TLS1_RFC_PSK_WITH_NULL_SHA384 "TLS_PSK_WITH_NULL_SHA384" +# define TLS1_RFC_DHE_PSK_WITH_AES_128_CBC_SHA256 "TLS_DHE_PSK_WITH_AES_128_CBC_SHA256" +# define TLS1_RFC_DHE_PSK_WITH_AES_256_CBC_SHA384 "TLS_DHE_PSK_WITH_AES_256_CBC_SHA384" +# define TLS1_RFC_DHE_PSK_WITH_NULL_SHA256 "TLS_DHE_PSK_WITH_NULL_SHA256" +# define TLS1_RFC_DHE_PSK_WITH_NULL_SHA384 "TLS_DHE_PSK_WITH_NULL_SHA384" +# define TLS1_RFC_RSA_PSK_WITH_AES_128_CBC_SHA256 "TLS_RSA_PSK_WITH_AES_128_CBC_SHA256" +# define TLS1_RFC_RSA_PSK_WITH_AES_256_CBC_SHA384 "TLS_RSA_PSK_WITH_AES_256_CBC_SHA384" +# define TLS1_RFC_RSA_PSK_WITH_NULL_SHA256 "TLS_RSA_PSK_WITH_NULL_SHA256" +# define TLS1_RFC_RSA_PSK_WITH_NULL_SHA384 "TLS_RSA_PSK_WITH_NULL_SHA384" +# define TLS1_RFC_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA "TLS_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA" +# define TLS1_RFC_ECDHE_PSK_WITH_AES_128_CBC_SHA "TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA" +# define TLS1_RFC_ECDHE_PSK_WITH_AES_256_CBC_SHA "TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA" +# define TLS1_RFC_ECDHE_PSK_WITH_AES_128_CBC_SHA256 "TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA256" +# define TLS1_RFC_ECDHE_PSK_WITH_AES_256_CBC_SHA384 "TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA384" +# define TLS1_RFC_ECDHE_PSK_WITH_NULL_SHA "TLS_ECDHE_PSK_WITH_NULL_SHA" +# define TLS1_RFC_ECDHE_PSK_WITH_NULL_SHA256 "TLS_ECDHE_PSK_WITH_NULL_SHA256" +# define TLS1_RFC_ECDHE_PSK_WITH_NULL_SHA384 "TLS_ECDHE_PSK_WITH_NULL_SHA384" +# define TLS1_RFC_SRP_SHA_WITH_3DES_EDE_CBC_SHA "TLS_SRP_SHA_WITH_3DES_EDE_CBC_SHA" +# define TLS1_RFC_SRP_SHA_RSA_WITH_3DES_EDE_CBC_SHA "TLS_SRP_SHA_RSA_WITH_3DES_EDE_CBC_SHA" +# define TLS1_RFC_SRP_SHA_DSS_WITH_3DES_EDE_CBC_SHA "TLS_SRP_SHA_DSS_WITH_3DES_EDE_CBC_SHA" +# define TLS1_RFC_SRP_SHA_WITH_AES_128_CBC_SHA "TLS_SRP_SHA_WITH_AES_128_CBC_SHA" +# define TLS1_RFC_SRP_SHA_RSA_WITH_AES_128_CBC_SHA "TLS_SRP_SHA_RSA_WITH_AES_128_CBC_SHA" +# define TLS1_RFC_SRP_SHA_DSS_WITH_AES_128_CBC_SHA "TLS_SRP_SHA_DSS_WITH_AES_128_CBC_SHA" +# define TLS1_RFC_SRP_SHA_WITH_AES_256_CBC_SHA "TLS_SRP_SHA_WITH_AES_256_CBC_SHA" +# define TLS1_RFC_SRP_SHA_RSA_WITH_AES_256_CBC_SHA "TLS_SRP_SHA_RSA_WITH_AES_256_CBC_SHA" +# define TLS1_RFC_SRP_SHA_DSS_WITH_AES_256_CBC_SHA "TLS_SRP_SHA_DSS_WITH_AES_256_CBC_SHA" +# define TLS1_RFC_DHE_RSA_WITH_CHACHA20_POLY1305 "TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256" +# define TLS1_RFC_ECDHE_RSA_WITH_CHACHA20_POLY1305 "TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256" +# define TLS1_RFC_ECDHE_ECDSA_WITH_CHACHA20_POLY1305 "TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256" +# define TLS1_RFC_PSK_WITH_CHACHA20_POLY1305 "TLS_PSK_WITH_CHACHA20_POLY1305_SHA256" +# define TLS1_RFC_ECDHE_PSK_WITH_CHACHA20_POLY1305 "TLS_ECDHE_PSK_WITH_CHACHA20_POLY1305_SHA256" +# define TLS1_RFC_DHE_PSK_WITH_CHACHA20_POLY1305 "TLS_DHE_PSK_WITH_CHACHA20_POLY1305_SHA256" +# define TLS1_RFC_RSA_PSK_WITH_CHACHA20_POLY1305 "TLS_RSA_PSK_WITH_CHACHA20_POLY1305_SHA256" +# define TLS1_RFC_RSA_WITH_CAMELLIA_128_CBC_SHA256 "TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256" +# define TLS1_RFC_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA256 "TLS_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA256" +# define TLS1_RFC_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 "TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256" +# define TLS1_RFC_ADH_WITH_CAMELLIA_128_CBC_SHA256 "TLS_DH_anon_WITH_CAMELLIA_128_CBC_SHA256" +# define TLS1_RFC_RSA_WITH_CAMELLIA_256_CBC_SHA256 "TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256" +# define TLS1_RFC_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA256 "TLS_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA256" +# define TLS1_RFC_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256 "TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256" +# define TLS1_RFC_ADH_WITH_CAMELLIA_256_CBC_SHA256 "TLS_DH_anon_WITH_CAMELLIA_256_CBC_SHA256" +# define TLS1_RFC_RSA_WITH_CAMELLIA_256_CBC_SHA "TLS_RSA_WITH_CAMELLIA_256_CBC_SHA" +# define TLS1_RFC_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA "TLS_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA" +# define TLS1_RFC_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA "TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA" +# define TLS1_RFC_ADH_WITH_CAMELLIA_256_CBC_SHA "TLS_DH_anon_WITH_CAMELLIA_256_CBC_SHA" +# define TLS1_RFC_RSA_WITH_CAMELLIA_128_CBC_SHA "TLS_RSA_WITH_CAMELLIA_128_CBC_SHA" +# define TLS1_RFC_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA "TLS_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA" +# define TLS1_RFC_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA "TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA" +# define TLS1_RFC_ADH_WITH_CAMELLIA_128_CBC_SHA "TLS_DH_anon_WITH_CAMELLIA_128_CBC_SHA" +# define TLS1_RFC_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256 "TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256" +# define TLS1_RFC_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384 "TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384" +# define TLS1_RFC_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 "TLS_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256" +# define TLS1_RFC_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384 "TLS_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384" +# define TLS1_RFC_PSK_WITH_CAMELLIA_128_CBC_SHA256 "TLS_PSK_WITH_CAMELLIA_128_CBC_SHA256" +# define TLS1_RFC_PSK_WITH_CAMELLIA_256_CBC_SHA384 "TLS_PSK_WITH_CAMELLIA_256_CBC_SHA384" +# define TLS1_RFC_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256 "TLS_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256" +# define TLS1_RFC_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384 "TLS_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384" +# define TLS1_RFC_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256 "TLS_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256" +# define TLS1_RFC_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384 "TLS_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384" +# define TLS1_RFC_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256 "TLS_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256" +# define TLS1_RFC_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384 "TLS_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384" +# define TLS1_RFC_RSA_WITH_SEED_SHA "TLS_RSA_WITH_SEED_CBC_SHA" +# define TLS1_RFC_DHE_DSS_WITH_SEED_SHA "TLS_DHE_DSS_WITH_SEED_CBC_SHA" +# define TLS1_RFC_DHE_RSA_WITH_SEED_SHA "TLS_DHE_RSA_WITH_SEED_CBC_SHA" +# define TLS1_RFC_ADH_WITH_SEED_SHA "TLS_DH_anon_WITH_SEED_CBC_SHA" +# define TLS1_RFC_ECDHE_PSK_WITH_RC4_128_SHA "TLS_ECDHE_PSK_WITH_RC4_128_SHA" +# define TLS1_RFC_ECDH_anon_WITH_RC4_128_SHA "TLS_ECDH_anon_WITH_RC4_128_SHA" +# define TLS1_RFC_ECDHE_ECDSA_WITH_RC4_128_SHA "TLS_ECDHE_ECDSA_WITH_RC4_128_SHA" +# define TLS1_RFC_ECDHE_RSA_WITH_RC4_128_SHA "TLS_ECDHE_RSA_WITH_RC4_128_SHA" +# define TLS1_RFC_PSK_WITH_RC4_128_SHA "TLS_PSK_WITH_RC4_128_SHA" +# define TLS1_RFC_RSA_PSK_WITH_RC4_128_SHA "TLS_RSA_PSK_WITH_RC4_128_SHA" +# define TLS1_RFC_DHE_PSK_WITH_RC4_128_SHA "TLS_DHE_PSK_WITH_RC4_128_SHA" +# define TLS1_RFC_RSA_WITH_ARIA_128_GCM_SHA256 "TLS_RSA_WITH_ARIA_128_GCM_SHA256" +# define TLS1_RFC_RSA_WITH_ARIA_256_GCM_SHA384 "TLS_RSA_WITH_ARIA_256_GCM_SHA384" +# define TLS1_RFC_DHE_RSA_WITH_ARIA_128_GCM_SHA256 "TLS_DHE_RSA_WITH_ARIA_128_GCM_SHA256" +# define TLS1_RFC_DHE_RSA_WITH_ARIA_256_GCM_SHA384 "TLS_DHE_RSA_WITH_ARIA_256_GCM_SHA384" +# define TLS1_RFC_DH_RSA_WITH_ARIA_128_GCM_SHA256 "TLS_DH_RSA_WITH_ARIA_128_GCM_SHA256" +# define TLS1_RFC_DH_RSA_WITH_ARIA_256_GCM_SHA384 "TLS_DH_RSA_WITH_ARIA_256_GCM_SHA384" +# define TLS1_RFC_DHE_DSS_WITH_ARIA_128_GCM_SHA256 "TLS_DHE_DSS_WITH_ARIA_128_GCM_SHA256" +# define TLS1_RFC_DHE_DSS_WITH_ARIA_256_GCM_SHA384 "TLS_DHE_DSS_WITH_ARIA_256_GCM_SHA384" +# define TLS1_RFC_DH_DSS_WITH_ARIA_128_GCM_SHA256 "TLS_DH_DSS_WITH_ARIA_128_GCM_SHA256" +# define TLS1_RFC_DH_DSS_WITH_ARIA_256_GCM_SHA384 "TLS_DH_DSS_WITH_ARIA_256_GCM_SHA384" +# define TLS1_RFC_DH_anon_WITH_ARIA_128_GCM_SHA256 "TLS_DH_anon_WITH_ARIA_128_GCM_SHA256" +# define TLS1_RFC_DH_anon_WITH_ARIA_256_GCM_SHA384 "TLS_DH_anon_WITH_ARIA_256_GCM_SHA384" +# define TLS1_RFC_ECDHE_ECDSA_WITH_ARIA_128_GCM_SHA256 "TLS_ECDHE_ECDSA_WITH_ARIA_128_GCM_SHA256" +# define TLS1_RFC_ECDHE_ECDSA_WITH_ARIA_256_GCM_SHA384 "TLS_ECDHE_ECDSA_WITH_ARIA_256_GCM_SHA384" +# define TLS1_RFC_ECDH_ECDSA_WITH_ARIA_128_GCM_SHA256 "TLS_ECDH_ECDSA_WITH_ARIA_128_GCM_SHA256" +# define TLS1_RFC_ECDH_ECDSA_WITH_ARIA_256_GCM_SHA384 "TLS_ECDH_ECDSA_WITH_ARIA_256_GCM_SHA384" +# define TLS1_RFC_ECDHE_RSA_WITH_ARIA_128_GCM_SHA256 "TLS_ECDHE_RSA_WITH_ARIA_128_GCM_SHA256" +# define TLS1_RFC_ECDHE_RSA_WITH_ARIA_256_GCM_SHA384 "TLS_ECDHE_RSA_WITH_ARIA_256_GCM_SHA384" +# define TLS1_RFC_ECDH_RSA_WITH_ARIA_128_GCM_SHA256 "TLS_ECDH_RSA_WITH_ARIA_128_GCM_SHA256" +# define TLS1_RFC_ECDH_RSA_WITH_ARIA_256_GCM_SHA384 "TLS_ECDH_RSA_WITH_ARIA_256_GCM_SHA384" +# define TLS1_RFC_PSK_WITH_ARIA_128_GCM_SHA256 "TLS_PSK_WITH_ARIA_128_GCM_SHA256" +# define TLS1_RFC_PSK_WITH_ARIA_256_GCM_SHA384 "TLS_PSK_WITH_ARIA_256_GCM_SHA384" +# define TLS1_RFC_DHE_PSK_WITH_ARIA_128_GCM_SHA256 "TLS_DHE_PSK_WITH_ARIA_128_GCM_SHA256" +# define TLS1_RFC_DHE_PSK_WITH_ARIA_256_GCM_SHA384 "TLS_DHE_PSK_WITH_ARIA_256_GCM_SHA384" +# define TLS1_RFC_RSA_PSK_WITH_ARIA_128_GCM_SHA256 "TLS_RSA_PSK_WITH_ARIA_128_GCM_SHA256" +# define TLS1_RFC_RSA_PSK_WITH_ARIA_256_GCM_SHA384 "TLS_RSA_PSK_WITH_ARIA_256_GCM_SHA384" + + +/* + * 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_DHE_DSS_WITH_RC4_128_SHA "DHE-DSS-RC4-SHA" + +# define TLS1_TXT_PSK_WITH_NULL_SHA "PSK-NULL-SHA" +# define TLS1_TXT_DHE_PSK_WITH_NULL_SHA "DHE-PSK-NULL-SHA" +# define TLS1_TXT_RSA_PSK_WITH_NULL_SHA "RSA-PSK-NULL-SHA" + +/* AES ciphersuites from RFC3268 */ +# define TLS1_TXT_RSA_WITH_AES_128_SHA "AES128-SHA" +# define TLS1_TXT_DH_DSS_WITH_AES_128_SHA "DH-DSS-AES128-SHA" +# define TLS1_TXT_DH_RSA_WITH_AES_128_SHA "DH-RSA-AES128-SHA" +# define TLS1_TXT_DHE_DSS_WITH_AES_128_SHA "DHE-DSS-AES128-SHA" +# define TLS1_TXT_DHE_RSA_WITH_AES_128_SHA "DHE-RSA-AES128-SHA" +# define TLS1_TXT_ADH_WITH_AES_128_SHA "ADH-AES128-SHA" + +# define TLS1_TXT_RSA_WITH_AES_256_SHA "AES256-SHA" +# define TLS1_TXT_DH_DSS_WITH_AES_256_SHA "DH-DSS-AES256-SHA" +# define TLS1_TXT_DH_RSA_WITH_AES_256_SHA "DH-RSA-AES256-SHA" +# define TLS1_TXT_DHE_DSS_WITH_AES_256_SHA "DHE-DSS-AES256-SHA" +# define TLS1_TXT_DHE_RSA_WITH_AES_256_SHA "DHE-RSA-AES256-SHA" +# define TLS1_TXT_ADH_WITH_AES_256_SHA "ADH-AES256-SHA" + +/* ECC ciphersuites from RFC4492 */ +# define TLS1_TXT_ECDH_ECDSA_WITH_NULL_SHA "ECDH-ECDSA-NULL-SHA" +# define TLS1_TXT_ECDH_ECDSA_WITH_RC4_128_SHA "ECDH-ECDSA-RC4-SHA" +# define TLS1_TXT_ECDH_ECDSA_WITH_DES_192_CBC3_SHA "ECDH-ECDSA-DES-CBC3-SHA" +# define TLS1_TXT_ECDH_ECDSA_WITH_AES_128_CBC_SHA "ECDH-ECDSA-AES128-SHA" +# define TLS1_TXT_ECDH_ECDSA_WITH_AES_256_CBC_SHA "ECDH-ECDSA-AES256-SHA" + +# define TLS1_TXT_ECDHE_ECDSA_WITH_NULL_SHA "ECDHE-ECDSA-NULL-SHA" +# define TLS1_TXT_ECDHE_ECDSA_WITH_RC4_128_SHA "ECDHE-ECDSA-RC4-SHA" +# define TLS1_TXT_ECDHE_ECDSA_WITH_DES_192_CBC3_SHA "ECDHE-ECDSA-DES-CBC3-SHA" +# define TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_CBC_SHA "ECDHE-ECDSA-AES128-SHA" +# define TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_CBC_SHA "ECDHE-ECDSA-AES256-SHA" + +# define TLS1_TXT_ECDH_RSA_WITH_NULL_SHA "ECDH-RSA-NULL-SHA" +# define TLS1_TXT_ECDH_RSA_WITH_RC4_128_SHA "ECDH-RSA-RC4-SHA" +# define TLS1_TXT_ECDH_RSA_WITH_DES_192_CBC3_SHA "ECDH-RSA-DES-CBC3-SHA" +# define TLS1_TXT_ECDH_RSA_WITH_AES_128_CBC_SHA "ECDH-RSA-AES128-SHA" +# define TLS1_TXT_ECDH_RSA_WITH_AES_256_CBC_SHA "ECDH-RSA-AES256-SHA" + +# define TLS1_TXT_ECDHE_RSA_WITH_NULL_SHA "ECDHE-RSA-NULL-SHA" +# define TLS1_TXT_ECDHE_RSA_WITH_RC4_128_SHA "ECDHE-RSA-RC4-SHA" +# define TLS1_TXT_ECDHE_RSA_WITH_DES_192_CBC3_SHA "ECDHE-RSA-DES-CBC3-SHA" +# define TLS1_TXT_ECDHE_RSA_WITH_AES_128_CBC_SHA "ECDHE-RSA-AES128-SHA" +# define TLS1_TXT_ECDHE_RSA_WITH_AES_256_CBC_SHA "ECDHE-RSA-AES256-SHA" + +# define TLS1_TXT_ECDH_anon_WITH_NULL_SHA "AECDH-NULL-SHA" +# define TLS1_TXT_ECDH_anon_WITH_RC4_128_SHA "AECDH-RC4-SHA" +# define TLS1_TXT_ECDH_anon_WITH_DES_192_CBC3_SHA "AECDH-DES-CBC3-SHA" +# define TLS1_TXT_ECDH_anon_WITH_AES_128_CBC_SHA "AECDH-AES128-SHA" +# define TLS1_TXT_ECDH_anon_WITH_AES_256_CBC_SHA "AECDH-AES256-SHA" + +/* PSK ciphersuites from RFC 4279 */ +# define TLS1_TXT_PSK_WITH_RC4_128_SHA "PSK-RC4-SHA" +# define TLS1_TXT_PSK_WITH_3DES_EDE_CBC_SHA "PSK-3DES-EDE-CBC-SHA" +# define TLS1_TXT_PSK_WITH_AES_128_CBC_SHA "PSK-AES128-CBC-SHA" +# define TLS1_TXT_PSK_WITH_AES_256_CBC_SHA "PSK-AES256-CBC-SHA" + +# define TLS1_TXT_DHE_PSK_WITH_RC4_128_SHA "DHE-PSK-RC4-SHA" +# define TLS1_TXT_DHE_PSK_WITH_3DES_EDE_CBC_SHA "DHE-PSK-3DES-EDE-CBC-SHA" +# define TLS1_TXT_DHE_PSK_WITH_AES_128_CBC_SHA "DHE-PSK-AES128-CBC-SHA" +# define TLS1_TXT_DHE_PSK_WITH_AES_256_CBC_SHA "DHE-PSK-AES256-CBC-SHA" +# define TLS1_TXT_RSA_PSK_WITH_RC4_128_SHA "RSA-PSK-RC4-SHA" +# define TLS1_TXT_RSA_PSK_WITH_3DES_EDE_CBC_SHA "RSA-PSK-3DES-EDE-CBC-SHA" +# define TLS1_TXT_RSA_PSK_WITH_AES_128_CBC_SHA "RSA-PSK-AES128-CBC-SHA" +# define TLS1_TXT_RSA_PSK_WITH_AES_256_CBC_SHA "RSA-PSK-AES256-CBC-SHA" + +/* PSK ciphersuites from RFC 5487 */ +# define TLS1_TXT_PSK_WITH_AES_128_GCM_SHA256 "PSK-AES128-GCM-SHA256" +# define TLS1_TXT_PSK_WITH_AES_256_GCM_SHA384 "PSK-AES256-GCM-SHA384" +# define TLS1_TXT_DHE_PSK_WITH_AES_128_GCM_SHA256 "DHE-PSK-AES128-GCM-SHA256" +# define TLS1_TXT_DHE_PSK_WITH_AES_256_GCM_SHA384 "DHE-PSK-AES256-GCM-SHA384" +# define TLS1_TXT_RSA_PSK_WITH_AES_128_GCM_SHA256 "RSA-PSK-AES128-GCM-SHA256" +# define TLS1_TXT_RSA_PSK_WITH_AES_256_GCM_SHA384 "RSA-PSK-AES256-GCM-SHA384" + +# define TLS1_TXT_PSK_WITH_AES_128_CBC_SHA256 "PSK-AES128-CBC-SHA256" +# define TLS1_TXT_PSK_WITH_AES_256_CBC_SHA384 "PSK-AES256-CBC-SHA384" +# define TLS1_TXT_PSK_WITH_NULL_SHA256 "PSK-NULL-SHA256" +# define TLS1_TXT_PSK_WITH_NULL_SHA384 "PSK-NULL-SHA384" + +# define TLS1_TXT_DHE_PSK_WITH_AES_128_CBC_SHA256 "DHE-PSK-AES128-CBC-SHA256" +# define TLS1_TXT_DHE_PSK_WITH_AES_256_CBC_SHA384 "DHE-PSK-AES256-CBC-SHA384" +# define TLS1_TXT_DHE_PSK_WITH_NULL_SHA256 "DHE-PSK-NULL-SHA256" +# define TLS1_TXT_DHE_PSK_WITH_NULL_SHA384 "DHE-PSK-NULL-SHA384" + +# define TLS1_TXT_RSA_PSK_WITH_AES_128_CBC_SHA256 "RSA-PSK-AES128-CBC-SHA256" +# define TLS1_TXT_RSA_PSK_WITH_AES_256_CBC_SHA384 "RSA-PSK-AES256-CBC-SHA384" +# define TLS1_TXT_RSA_PSK_WITH_NULL_SHA256 "RSA-PSK-NULL-SHA256" +# define TLS1_TXT_RSA_PSK_WITH_NULL_SHA384 "RSA-PSK-NULL-SHA384" + +/* 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" + +/* TLS 1.2 Camellia SHA-256 ciphersuites from RFC5932 */ +# define TLS1_TXT_RSA_WITH_CAMELLIA_128_CBC_SHA256 "CAMELLIA128-SHA256" +# define TLS1_TXT_DH_DSS_WITH_CAMELLIA_128_CBC_SHA256 "DH-DSS-CAMELLIA128-SHA256" +# define TLS1_TXT_DH_RSA_WITH_CAMELLIA_128_CBC_SHA256 "DH-RSA-CAMELLIA128-SHA256" +# define TLS1_TXT_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA256 "DHE-DSS-CAMELLIA128-SHA256" +# define TLS1_TXT_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 "DHE-RSA-CAMELLIA128-SHA256" +# define TLS1_TXT_ADH_WITH_CAMELLIA_128_CBC_SHA256 "ADH-CAMELLIA128-SHA256" + +# define TLS1_TXT_RSA_WITH_CAMELLIA_256_CBC_SHA256 "CAMELLIA256-SHA256" +# define TLS1_TXT_DH_DSS_WITH_CAMELLIA_256_CBC_SHA256 "DH-DSS-CAMELLIA256-SHA256" +# define TLS1_TXT_DH_RSA_WITH_CAMELLIA_256_CBC_SHA256 "DH-RSA-CAMELLIA256-SHA256" +# define TLS1_TXT_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA256 "DHE-DSS-CAMELLIA256-SHA256" +# define TLS1_TXT_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256 "DHE-RSA-CAMELLIA256-SHA256" +# define TLS1_TXT_ADH_WITH_CAMELLIA_256_CBC_SHA256 "ADH-CAMELLIA256-SHA256" + +# define TLS1_TXT_PSK_WITH_CAMELLIA_128_CBC_SHA256 "PSK-CAMELLIA128-SHA256" +# define TLS1_TXT_PSK_WITH_CAMELLIA_256_CBC_SHA384 "PSK-CAMELLIA256-SHA384" +# define TLS1_TXT_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256 "DHE-PSK-CAMELLIA128-SHA256" +# define TLS1_TXT_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384 "DHE-PSK-CAMELLIA256-SHA384" +# define TLS1_TXT_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256 "RSA-PSK-CAMELLIA128-SHA256" +# define TLS1_TXT_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384 "RSA-PSK-CAMELLIA256-SHA384" +# define TLS1_TXT_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256 "ECDHE-PSK-CAMELLIA128-SHA256" +# define TLS1_TXT_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384 "ECDHE-PSK-CAMELLIA256-SHA384" + +/* 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" + +/* CCM ciphersuites from RFC6655 */ +# define TLS1_TXT_RSA_WITH_AES_128_CCM "AES128-CCM" +# define TLS1_TXT_RSA_WITH_AES_256_CCM "AES256-CCM" +# define TLS1_TXT_DHE_RSA_WITH_AES_128_CCM "DHE-RSA-AES128-CCM" +# define TLS1_TXT_DHE_RSA_WITH_AES_256_CCM "DHE-RSA-AES256-CCM" + +# define TLS1_TXT_RSA_WITH_AES_128_CCM_8 "AES128-CCM8" +# define TLS1_TXT_RSA_WITH_AES_256_CCM_8 "AES256-CCM8" +# define TLS1_TXT_DHE_RSA_WITH_AES_128_CCM_8 "DHE-RSA-AES128-CCM8" +# define TLS1_TXT_DHE_RSA_WITH_AES_256_CCM_8 "DHE-RSA-AES256-CCM8" + +# define TLS1_TXT_PSK_WITH_AES_128_CCM "PSK-AES128-CCM" +# define TLS1_TXT_PSK_WITH_AES_256_CCM "PSK-AES256-CCM" +# define TLS1_TXT_DHE_PSK_WITH_AES_128_CCM "DHE-PSK-AES128-CCM" +# define TLS1_TXT_DHE_PSK_WITH_AES_256_CCM "DHE-PSK-AES256-CCM" + +# define TLS1_TXT_PSK_WITH_AES_128_CCM_8 "PSK-AES128-CCM8" +# define TLS1_TXT_PSK_WITH_AES_256_CCM_8 "PSK-AES256-CCM8" +# define TLS1_TXT_DHE_PSK_WITH_AES_128_CCM_8 "DHE-PSK-AES128-CCM8" +# define TLS1_TXT_DHE_PSK_WITH_AES_256_CCM_8 "DHE-PSK-AES256-CCM8" + +/* CCM ciphersuites from RFC7251 */ +# define TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_CCM "ECDHE-ECDSA-AES128-CCM" +# define TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_CCM "ECDHE-ECDSA-AES256-CCM" +# define TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_CCM_8 "ECDHE-ECDSA-AES128-CCM8" +# define TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_CCM_8 "ECDHE-ECDSA-AES256-CCM8" + +/* 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" + +/* TLS v1.2 PSK GCM ciphersuites from RFC5487 */ +# define TLS1_TXT_PSK_WITH_AES_128_GCM_SHA256 "PSK-AES128-GCM-SHA256" +# define TLS1_TXT_PSK_WITH_AES_256_GCM_SHA384 "PSK-AES256-GCM-SHA384" + +/* ECDHE PSK ciphersuites from RFC 5489 */ +# define TLS1_TXT_ECDHE_PSK_WITH_RC4_128_SHA "ECDHE-PSK-RC4-SHA" +# define TLS1_TXT_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA "ECDHE-PSK-3DES-EDE-CBC-SHA" +# define TLS1_TXT_ECDHE_PSK_WITH_AES_128_CBC_SHA "ECDHE-PSK-AES128-CBC-SHA" +# define TLS1_TXT_ECDHE_PSK_WITH_AES_256_CBC_SHA "ECDHE-PSK-AES256-CBC-SHA" + +# define TLS1_TXT_ECDHE_PSK_WITH_AES_128_CBC_SHA256 "ECDHE-PSK-AES128-CBC-SHA256" +# define TLS1_TXT_ECDHE_PSK_WITH_AES_256_CBC_SHA384 "ECDHE-PSK-AES256-CBC-SHA384" + +# define TLS1_TXT_ECDHE_PSK_WITH_NULL_SHA "ECDHE-PSK-NULL-SHA" +# define TLS1_TXT_ECDHE_PSK_WITH_NULL_SHA256 "ECDHE-PSK-NULL-SHA256" +# define TLS1_TXT_ECDHE_PSK_WITH_NULL_SHA384 "ECDHE-PSK-NULL-SHA384" + +/* Camellia-CBC ciphersuites from RFC6367 */ +# define TLS1_TXT_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256 "ECDHE-ECDSA-CAMELLIA128-SHA256" +# define TLS1_TXT_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384 "ECDHE-ECDSA-CAMELLIA256-SHA384" +# define TLS1_TXT_ECDH_ECDSA_WITH_CAMELLIA_128_CBC_SHA256 "ECDH-ECDSA-CAMELLIA128-SHA256" +# define TLS1_TXT_ECDH_ECDSA_WITH_CAMELLIA_256_CBC_SHA384 "ECDH-ECDSA-CAMELLIA256-SHA384" +# define TLS1_TXT_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 "ECDHE-RSA-CAMELLIA128-SHA256" +# define TLS1_TXT_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384 "ECDHE-RSA-CAMELLIA256-SHA384" +# define TLS1_TXT_ECDH_RSA_WITH_CAMELLIA_128_CBC_SHA256 "ECDH-RSA-CAMELLIA128-SHA256" +# define TLS1_TXT_ECDH_RSA_WITH_CAMELLIA_256_CBC_SHA384 "ECDH-RSA-CAMELLIA256-SHA384" + +/* draft-ietf-tls-chacha20-poly1305-03 */ +# define TLS1_TXT_ECDHE_RSA_WITH_CHACHA20_POLY1305 "ECDHE-RSA-CHACHA20-POLY1305" +# define TLS1_TXT_ECDHE_ECDSA_WITH_CHACHA20_POLY1305 "ECDHE-ECDSA-CHACHA20-POLY1305" +# define TLS1_TXT_DHE_RSA_WITH_CHACHA20_POLY1305 "DHE-RSA-CHACHA20-POLY1305" +# define TLS1_TXT_PSK_WITH_CHACHA20_POLY1305 "PSK-CHACHA20-POLY1305" +# define TLS1_TXT_ECDHE_PSK_WITH_CHACHA20_POLY1305 "ECDHE-PSK-CHACHA20-POLY1305" +# define TLS1_TXT_DHE_PSK_WITH_CHACHA20_POLY1305 "DHE-PSK-CHACHA20-POLY1305" +# define TLS1_TXT_RSA_PSK_WITH_CHACHA20_POLY1305 "RSA-PSK-CHACHA20-POLY1305" + +/* Aria ciphersuites from RFC6209 */ +# define TLS1_TXT_RSA_WITH_ARIA_128_GCM_SHA256 "ARIA128-GCM-SHA256" +# define TLS1_TXT_RSA_WITH_ARIA_256_GCM_SHA384 "ARIA256-GCM-SHA384" +# define TLS1_TXT_DHE_RSA_WITH_ARIA_128_GCM_SHA256 "DHE-RSA-ARIA128-GCM-SHA256" +# define TLS1_TXT_DHE_RSA_WITH_ARIA_256_GCM_SHA384 "DHE-RSA-ARIA256-GCM-SHA384" +# define TLS1_TXT_DH_RSA_WITH_ARIA_128_GCM_SHA256 "DH-RSA-ARIA128-GCM-SHA256" +# define TLS1_TXT_DH_RSA_WITH_ARIA_256_GCM_SHA384 "DH-RSA-ARIA256-GCM-SHA384" +# define TLS1_TXT_DHE_DSS_WITH_ARIA_128_GCM_SHA256 "DHE-DSS-ARIA128-GCM-SHA256" +# define TLS1_TXT_DHE_DSS_WITH_ARIA_256_GCM_SHA384 "DHE-DSS-ARIA256-GCM-SHA384" +# define TLS1_TXT_DH_DSS_WITH_ARIA_128_GCM_SHA256 "DH-DSS-ARIA128-GCM-SHA256" +# define TLS1_TXT_DH_DSS_WITH_ARIA_256_GCM_SHA384 "DH-DSS-ARIA256-GCM-SHA384" +# define TLS1_TXT_DH_anon_WITH_ARIA_128_GCM_SHA256 "ADH-ARIA128-GCM-SHA256" +# define TLS1_TXT_DH_anon_WITH_ARIA_256_GCM_SHA384 "ADH-ARIA256-GCM-SHA384" +# define TLS1_TXT_ECDHE_ECDSA_WITH_ARIA_128_GCM_SHA256 "ECDHE-ECDSA-ARIA128-GCM-SHA256" +# define TLS1_TXT_ECDHE_ECDSA_WITH_ARIA_256_GCM_SHA384 "ECDHE-ECDSA-ARIA256-GCM-SHA384" +# define TLS1_TXT_ECDH_ECDSA_WITH_ARIA_128_GCM_SHA256 "ECDH-ECDSA-ARIA128-GCM-SHA256" +# define TLS1_TXT_ECDH_ECDSA_WITH_ARIA_256_GCM_SHA384 "ECDH-ECDSA-ARIA256-GCM-SHA384" +# define TLS1_TXT_ECDHE_RSA_WITH_ARIA_128_GCM_SHA256 "ECDHE-ARIA128-GCM-SHA256" +# define TLS1_TXT_ECDHE_RSA_WITH_ARIA_256_GCM_SHA384 "ECDHE-ARIA256-GCM-SHA384" +# define TLS1_TXT_ECDH_RSA_WITH_ARIA_128_GCM_SHA256 "ECDH-ARIA128-GCM-SHA256" +# define TLS1_TXT_ECDH_RSA_WITH_ARIA_256_GCM_SHA384 "ECDH-ARIA256-GCM-SHA384" +# define TLS1_TXT_PSK_WITH_ARIA_128_GCM_SHA256 "PSK-ARIA128-GCM-SHA256" +# define TLS1_TXT_PSK_WITH_ARIA_256_GCM_SHA384 "PSK-ARIA256-GCM-SHA384" +# define TLS1_TXT_DHE_PSK_WITH_ARIA_128_GCM_SHA256 "DHE-PSK-ARIA128-GCM-SHA256" +# define TLS1_TXT_DHE_PSK_WITH_ARIA_256_GCM_SHA384 "DHE-PSK-ARIA256-GCM-SHA384" +# define TLS1_TXT_RSA_PSK_WITH_ARIA_128_GCM_SHA256 "RSA-PSK-ARIA128-GCM-SHA256" +# define TLS1_TXT_RSA_PSK_WITH_ARIA_256_GCM_SHA384 "RSA-PSK-ARIA256-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_GOST01_SIGN 22 +# define TLS_CT_GOST12_SIGN 238 +# define TLS_CT_GOST12_512_SIGN 239 + +/* + * when correcting this number, correct also SSL3_CT_NUMBER in ssl3.h (see + * comment there) + */ +# define TLS_CT_NUMBER 10 + +# if defined(SSL3_CT_NUMBER) +# if TLS_CT_NUMBER != SSL3_CT_NUMBER +# error "SSL/TLS CT_NUMBER values do not match" +# endif +# endif + +# define TLS1_FINISH_MAC_LENGTH 12 + +# define TLS_MD_MAX_CONST_SIZE 22 +# 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_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 +# define TLS_MD_EXTENDED_MASTER_SECRET_CONST "extended master secret" +# define TLS_MD_EXTENDED_MASTER_SECRET_CONST_SIZE 22 + +# 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" +# undef TLS_MD_EXTENDED_MASTER_SECRET_CONST +/* + * extended master secret + */ +# define TLS_MD_EXTENDED_MASTER_SECRET_CONST "\x65\x78\x74\x65\x6e\x64\x65\x64\x20\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/plugin/openssl/include/openssl/ts.h b/plugin/openssl/include/openssl/ts.h new file mode 100644 index 000000000..3b58aa527 --- /dev/null +++ b/plugin/openssl/include/openssl/ts.h @@ -0,0 +1,559 @@ +/* + * Copyright 2006-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_TS_H +# define HEADER_TS_H + +# include + +# ifndef OPENSSL_NO_TS +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +# ifdef __cplusplus +extern "C" { +# endif + +# include +# include + +typedef struct TS_msg_imprint_st TS_MSG_IMPRINT; +typedef struct TS_req_st TS_REQ; +typedef struct TS_accuracy_st TS_ACCURACY; +typedef struct TS_tst_info_st TS_TST_INFO; + +/* Possible values for status. */ +# 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. */ +# 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 TS_STATUS_INFO; +typedef struct ESS_issuer_serial ESS_ISSUER_SERIAL; +typedef struct ESS_cert_id ESS_CERT_ID; +typedef struct ESS_signing_cert ESS_SIGNING_CERT; + +DEFINE_STACK_OF(ESS_CERT_ID) + +typedef struct ESS_cert_id_v2_st ESS_CERT_ID_V2; +typedef struct ESS_signing_cert_v2_st ESS_SIGNING_CERT_V2; + +DEFINE_STACK_OF(ESS_CERT_ID_V2) + +typedef struct TS_resp_st TS_RESP; + +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); + +#ifndef OPENSSL_NO_STDIO +TS_REQ *d2i_TS_REQ_fp(FILE *fp, TS_REQ **a); +int i2d_TS_REQ_fp(FILE *fp, TS_REQ *a); +#endif +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); + +#ifndef OPENSSL_NO_STDIO +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); +#endif +TS_MSG_IMPRINT *d2i_TS_MSG_IMPRINT_bio(BIO *bio, TS_MSG_IMPRINT **a); +int i2d_TS_MSG_IMPRINT_bio(BIO *bio, 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); + +#ifndef OPENSSL_NO_STDIO +TS_RESP *d2i_TS_RESP_fp(FILE *fp, TS_RESP **a); +int i2d_TS_RESP_fp(FILE *fp, TS_RESP *a); +#endif +TS_RESP *d2i_TS_RESP_bio(BIO *bio, TS_RESP **a); +int i2d_TS_RESP_bio(BIO *bio, 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); + +#ifndef OPENSSL_NO_STDIO +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); +#endif +TS_TST_INFO *d2i_TS_TST_INFO_bio(BIO *bio, TS_TST_INFO **a); +int i2d_TS_TST_INFO_bio(BIO *bio, 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); + +ESS_CERT_ID_V2 *ESS_CERT_ID_V2_new(void); +void ESS_CERT_ID_V2_free(ESS_CERT_ID_V2 *a); +int i2d_ESS_CERT_ID_V2(const ESS_CERT_ID_V2 *a, unsigned char **pp); +ESS_CERT_ID_V2 *d2i_ESS_CERT_ID_V2(ESS_CERT_ID_V2 **a, + const unsigned char **pp, long length); +ESS_CERT_ID_V2 *ESS_CERT_ID_V2_dup(ESS_CERT_ID_V2 *a); + +ESS_SIGNING_CERT_V2 *ESS_SIGNING_CERT_V2_new(void); +void ESS_SIGNING_CERT_V2_free(ESS_SIGNING_CERT_V2 *a); +int i2d_ESS_SIGNING_CERT_V2(const ESS_SIGNING_CERT_V2 *a, unsigned char **pp); +ESS_SIGNING_CERT_V2 *d2i_ESS_SIGNING_CERT_V2(ESS_SIGNING_CERT_V2 **a, + const unsigned char **pp, + long length); +ESS_SIGNING_CERT_V2 *ESS_SIGNING_CERT_V2_dup(ESS_SIGNING_CERT_V2 *a); + +int TS_REQ_set_version(TS_REQ *a, long version); +long TS_REQ_get_version(const TS_REQ *a); + +int TS_STATUS_INFO_set_status(TS_STATUS_INFO *a, int i); +const ASN1_INTEGER *TS_STATUS_INFO_get0_status(const TS_STATUS_INFO *a); + +const STACK_OF(ASN1_UTF8STRING) * +TS_STATUS_INFO_get0_text(const TS_STATUS_INFO *a); + +const ASN1_BIT_STRING * +TS_STATUS_INFO_get0_failure_info(const TS_STATUS_INFO *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, const 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, const 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, const 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 TS_RESP_CTX; + +DEFINE_STACK_OF_CONST(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); + +int TS_RESP_CTX_set_signer_digest(TS_RESP_CTX *ctx, + const EVP_MD *signer_digest); +int TS_RESP_CTX_set_ess_cert_id_digest(TS_RESP_CTX *ctx, const EVP_MD *md); + +/* This parameter must be set. */ +int TS_RESP_CTX_set_def_policy(TS_RESP_CTX *ctx, const 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, const ASN1_OBJECT *policy); + +/* + * Adds a new acceptable message digest. Note that no message digests are + * accepted by default. The md argument is shared with the caller. + */ +int TS_RESP_CTX_add_md(TS_RESP_CTX *ctx, const EVP_MD *md); + +/* Accuracy is not included by default. */ +int TS_RESP_CTX_set_accuracy(TS_RESP_CTX *ctx, + int secs, int millis, int micros); + +/* + * Clock precision digits, i.e. the number of decimal digits: '0' means sec, + * '3' msec, '6' usec, and so on. Default is 0. + */ +int TS_RESP_CTX_set_clock_precision_digits(TS_RESP_CTX *ctx, + unsigned clock_precision_digits); +/* At most we accept usec precision. */ +# define TS_MAX_CLOCK_PRECISION_DIGITS 6 + +/* Maximum status message length */ +# define TS_MAX_STATUS_LENGTH (1024 * 1024) + +/* No flags are set by default. */ +void TS_RESP_CTX_add_flags(TS_RESP_CTX *ctx, int flags); + +/* Default callback always returns a constant. */ +void TS_RESP_CTX_set_serial_cb(TS_RESP_CTX *ctx, TS_serial_cb cb, void *data); + +/* Default callback uses the gettimeofday() and gmtime() system calls. */ +void TS_RESP_CTX_set_time_cb(TS_RESP_CTX *ctx, TS_time_cb cb, void *data); + +/* + * Default callback rejects all extensions. The extension callback is called + * when the TS_TST_INFO object is already set up and not signed yet. + */ +/* FIXME: extension handling is not tested yet. */ +void TS_RESP_CTX_set_extension_cb(TS_RESP_CTX *ctx, + TS_extension_cb cb, void *data); + +/* The following methods can be used in the callbacks. */ +int TS_RESP_CTX_set_status_info(TS_RESP_CTX *ctx, + int status, const char *text); + +/* Sets the status info only if it is still TS_STATUS_GRANTED. */ +int TS_RESP_CTX_set_status_info_cond(TS_RESP_CTX *ctx, + int status, const char *text); + +int TS_RESP_CTX_add_failure_info(TS_RESP_CTX *ctx, int failure); + +/* The get methods below can be used in the extension callback. */ +TS_REQ *TS_RESP_CTX_get_request(TS_RESP_CTX *ctx); + +TS_TST_INFO *TS_RESP_CTX_get_tst_info(TS_RESP_CTX *ctx); + +/* + * Creates the signed TS_TST_INFO and puts it in TS_RESP. + * In case of errors it sets the status info properly. + * Returns NULL only in case of memory allocation/fatal error. + */ +TS_RESP *TS_RESP_create_response(TS_RESP_CTX *ctx, BIO *req_bio); + +/* + * Declarations related to response verification, + * they are defined in ts/ts_resp_verify.c. + */ + +int TS_RESP_verify_signature(PKCS7 *token, STACK_OF(X509) *certs, + X509_STORE *store, X509 **signer_out); + +/* Context structure for the generic verify method. */ + +/* Verify the signer's certificate and the signature of the response. */ +# define TS_VFY_SIGNATURE (1u << 0) +/* Verify the version number of the response. */ +# define TS_VFY_VERSION (1u << 1) +/* Verify if the policy supplied by the user matches the policy of the TSA. */ +# define TS_VFY_POLICY (1u << 2) +/* + * Verify the message imprint provided by the user. This flag should not be + * specified with TS_VFY_DATA. + */ +# define TS_VFY_IMPRINT (1u << 3) +/* + * Verify the message imprint computed by the verify method from the user + * provided data and the MD algorithm of the response. This flag should not + * be specified with TS_VFY_IMPRINT. + */ +# define TS_VFY_DATA (1u << 4) +/* Verify the nonce value. */ +# define TS_VFY_NONCE (1u << 5) +/* Verify if the TSA name field matches the signer certificate. */ +# define TS_VFY_SIGNER (1u << 6) +/* Verify if the TSA name field equals to the user provided name. */ +# define TS_VFY_TSA_NAME (1u << 7) + +/* You can use the following convenience constants. */ +# define TS_VFY_ALL_IMPRINT (TS_VFY_SIGNATURE \ + | TS_VFY_VERSION \ + | TS_VFY_POLICY \ + | TS_VFY_IMPRINT \ + | TS_VFY_NONCE \ + | TS_VFY_SIGNER \ + | TS_VFY_TSA_NAME) +# define TS_VFY_ALL_DATA (TS_VFY_SIGNATURE \ + | TS_VFY_VERSION \ + | TS_VFY_POLICY \ + | TS_VFY_DATA \ + | TS_VFY_NONCE \ + | TS_VFY_SIGNER \ + | TS_VFY_TSA_NAME) + +typedef struct TS_verify_ctx 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, + */ +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); +int TS_VERIFY_CTX_set_flags(TS_VERIFY_CTX *ctx, int f); +int TS_VERIFY_CTX_add_flags(TS_VERIFY_CTX *ctx, int f); +BIO *TS_VERIFY_CTX_set_data(TS_VERIFY_CTX *ctx, BIO *b); +unsigned char *TS_VERIFY_CTX_set_imprint(TS_VERIFY_CTX *ctx, + unsigned char *hexstr, long len); +X509_STORE *TS_VERIFY_CTX_set_store(TS_VERIFY_CTX *ctx, X509_STORE *s); +STACK_OF(X509) *TS_VERIFY_CTS_set_certs(TS_VERIFY_CTX *ctx, STACK_OF(X509) *certs); + +/*- + * 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); +#ifndef OPENSSL_NO_ENGINE +int TS_CONF_set_crypto_device(CONF *conf, const char *section, + const char *device); +int TS_CONF_set_default_engine(const char *name); +#endif +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_signer_digest(CONF *conf, const char *section, + const char *md, 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); +int TS_CONF_set_ess_cert_id_digest(CONF *conf, const char *section, + TS_RESP_CTX *ctx); + +# ifdef __cplusplus +} +# endif +# endif +#endif diff --git a/plugin/openssl/include/openssl/tserr.h b/plugin/openssl/include/openssl/tserr.h new file mode 100644 index 000000000..07f23339c --- /dev/null +++ b/plugin/openssl/include/openssl/tserr.h @@ -0,0 +1,132 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_TSERR_H +# define HEADER_TSERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# include + +# ifndef OPENSSL_NO_TS + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_TS_strings(void); + +/* + * TS function codes. + */ +# 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_ADD_SIGNING_CERT_V2 147 +# define TS_F_ESS_CERT_ID_NEW_INIT 113 +# define TS_F_ESS_CERT_ID_V2_NEW_INIT 156 +# define TS_F_ESS_SIGNING_CERT_NEW_INIT 114 +# define TS_F_ESS_SIGNING_CERT_V2_NEW_INIT 157 +# 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_INVALID 151 +# define TS_F_TS_CONF_LOAD_CERT 153 +# define TS_F_TS_CONF_LOAD_CERTS 154 +# define TS_F_TS_CONF_LOAD_KEY 155 +# define TS_F_TS_CONF_LOOKUP_FAIL 152 +# 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_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 + +/* + * TS reason codes. + */ +# define TS_R_BAD_PKCS7_TYPE 132 +# define TS_R_BAD_TYPE 133 +# define TS_R_CANNOT_LOAD_CERT 137 +# define TS_R_CANNOT_LOAD_KEY 138 +# 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_DETACHED_CONTENT 134 +# define TS_R_ESS_ADD_SIGNING_CERT_ERROR 116 +# define TS_R_ESS_ADD_SIGNING_CERT_V2_ERROR 139 +# 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_VAR_BAD_VALUE 135 +# define TS_R_VAR_LOOKUP_FAILURE 136 +# define TS_R_WRONG_CONTENT_TYPE 114 + +# endif +#endif diff --git a/plugin/openssl/include/openssl/txt_db.h b/plugin/openssl/include/openssl/txt_db.h new file mode 100644 index 000000000..ec981a439 --- /dev/null +++ b/plugin/openssl/include/openssl/txt_db.h @@ -0,0 +1,57 @@ +/* + * Copyright 1995-2017 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_TXT_DB_H +# define HEADER_TXT_DB_H + +# include +# include +# 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 +# define DB_ERROR_WRONG_NUM_FIELDS 6 + +#ifdef __cplusplus +extern "C" { +#endif + +typedef OPENSSL_STRING *OPENSSL_PSTRING; +DEFINE_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; + +TXT_DB *TXT_DB_read(BIO *in, int num); +long TXT_DB_write(BIO *out, TXT_DB *db); +int TXT_DB_create_index(TXT_DB *db, int field, int (*qual) (OPENSSL_STRING *), + OPENSSL_LH_HASHFUNC hash, OPENSSL_LH_COMPFUNC 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/plugin/openssl/include/openssl/ui.h b/plugin/openssl/include/openssl/ui.h new file mode 100644 index 000000000..7c721ec81 --- /dev/null +++ b/plugin/openssl/include/openssl/ui.h @@ -0,0 +1,368 @@ +/* + * Copyright 2001-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_UI_H +# define HEADER_UI_H + +# include + +# if OPENSSL_API_COMPAT < 0x10100000L +# include +# endif +# include +# include +# include +# include + +/* For compatibility reasons, the macro OPENSSL_NO_UI is currently retained */ +# if OPENSSL_API_COMPAT < 0x10200000L +# ifdef OPENSSL_NO_UI_CONSOLE +# define OPENSSL_NO_UI +# endif +# endif + +# ifdef __cplusplus +extern "C" { +# endif + +/* + * 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 useful 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); +/* + * Alternatively, this function is used to duplicate the user data. + * This uses the duplicator method function. The destroy function will + * be used to free the user data in this case. + */ +int UI_dup_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); +int UI_get_result_length(UI *ui, int i); + +/* When all strings have been added, process the whole thing. */ +int UI_process(UI *ui); + +/* + * Give a user interface parameterised 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) + +# define UI_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_UI, l, p, newf, dupf, freef) +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); + +# ifndef OPENSSL_NO_UI_CONSOLE + +/* The method with all the built-in thingies */ +UI_METHOD *UI_OpenSSL(void); + +# endif + +/* + * NULL method. Literally does nothing, but may serve as a placeholder + * to avoid internal default. + */ +const UI_METHOD *UI_null(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 with 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; +DEFINE_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(const 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_data_duplicator(UI_METHOD *method, + void *(*duplicator) (UI *ui, void *ui_data), + void (*destructor)(UI *ui, void *ui_data)); +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_set_ex_data(UI_METHOD *method, int idx, void *data); +int (*UI_method_get_opener(const UI_METHOD *method)) (UI *); +int (*UI_method_get_writer(const UI_METHOD *method)) (UI *, UI_STRING *); +int (*UI_method_get_flusher(const UI_METHOD *method)) (UI *); +int (*UI_method_get_reader(const UI_METHOD *method)) (UI *, UI_STRING *); +int (*UI_method_get_closer(const UI_METHOD *method)) (UI *); +char *(*UI_method_get_prompt_constructor(const UI_METHOD *method)) + (UI *, const char *, const char *); +void *(*UI_method_get_data_duplicator(const UI_METHOD *method)) (UI *, void *); +void (*UI_method_get_data_destructor(const UI_METHOD *method)) (UI *, void *); +const void *UI_method_get_ex_data(const UI_METHOD *method, int idx); + +/* + * 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 prompt + * 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); +int UI_get_result_string_length(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); +int UI_set_result_ex(UI *ui, UI_STRING *uis, const char *result, int len); + +/* 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); +UI_METHOD *UI_UTIL_wrap_read_pem_callback(pem_password_cb *cb, int rwflag); + + +# ifdef __cplusplus +} +# endif +#endif diff --git a/plugin/openssl/include/openssl/uierr.h b/plugin/openssl/include/openssl/uierr.h new file mode 100644 index 000000000..bd68864d0 --- /dev/null +++ b/plugin/openssl/include/openssl/uierr.h @@ -0,0 +1,65 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_UIERR_H +# define HEADER_UIERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_UI_strings(void); + +/* + * UI function codes. + */ +# define UI_F_CLOSE_CONSOLE 115 +# define UI_F_ECHO_CONSOLE 116 +# define UI_F_GENERAL_ALLOCATE_BOOLEAN 108 +# define UI_F_GENERAL_ALLOCATE_PROMPT 109 +# define UI_F_NOECHO_CONSOLE 117 +# define UI_F_OPEN_CONSOLE 114 +# define UI_F_UI_CONSTRUCT_PROMPT 121 +# define UI_F_UI_CREATE_METHOD 112 +# 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_USER_DATA 118 +# define UI_F_UI_DUP_VERIFY_STRING 106 +# define UI_F_UI_GET0_RESULT 107 +# define UI_F_UI_GET_RESULT_LENGTH 119 +# define UI_F_UI_NEW_METHOD 104 +# define UI_F_UI_PROCESS 113 +# define UI_F_UI_SET_RESULT 105 +# define UI_F_UI_SET_RESULT_EX 120 + +/* + * UI 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_PROCESSING_ERROR 107 +# define UI_R_RESULT_TOO_LARGE 100 +# define UI_R_RESULT_TOO_SMALL 101 +# define UI_R_SYSASSIGN_ERROR 109 +# define UI_R_SYSDASSGN_ERROR 110 +# define UI_R_SYSQIOW_ERROR 111 +# define UI_R_UNKNOWN_CONTROL_COMMAND 106 +# define UI_R_UNKNOWN_TTYGET_ERRNO_VALUE 108 +# define UI_R_USER_DATA_DUPLICATION_UNSUPPORTED 112 + +#endif diff --git a/plugin/openssl/include/openssl/whrlpool.h b/plugin/openssl/include/openssl/whrlpool.h new file mode 100644 index 000000000..20ea3503b --- /dev/null +++ b/plugin/openssl/include/openssl/whrlpool.h @@ -0,0 +1,48 @@ +/* + * Copyright 2005-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_WHRLPOOL_H +# define HEADER_WHRLPOOL_H + +#include + +# ifndef OPENSSL_NO_WHIRLPOOL +# 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; + +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); + +# ifdef __cplusplus +} +# endif +# endif + +#endif diff --git a/plugin/openssl/include/openssl/x509.h b/plugin/openssl/include/openssl/x509.h new file mode 100644 index 000000000..3ff86ec7b --- /dev/null +++ b/plugin/openssl/include/openssl/x509.h @@ -0,0 +1,1050 @@ +/* + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_X509_H +# define HEADER_X509_H + +# include +# include +# include +# include +# include +# include +# include +# include +# include + +# if OPENSSL_API_COMPAT < 0x10100000L +# include +# include +# include +# endif + +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + + +/* Flags for X509_get_signature_info() */ +/* Signature info is valid */ +# define X509_SIG_INFO_VALID 0x1 +/* Signature is suitable for TLS use */ +# define X509_SIG_INFO_TLS 0x2 + +# 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 + +struct X509_algor_st { + ASN1_OBJECT *algorithm; + ASN1_TYPE *parameter; +} /* X509_ALGOR */ ; + +typedef STACK_OF(X509_ALGOR) X509_ALGORS; + +typedef struct X509_val_st { + ASN1_TIME *notBefore; + ASN1_TIME *notAfter; +} X509_VAL; + +typedef struct X509_sig_st X509_SIG; + +typedef struct X509_name_entry_st X509_NAME_ENTRY; + +DEFINE_STACK_OF(X509_NAME_ENTRY) + +DEFINE_STACK_OF(X509_NAME) + +# define X509_EX_V_NETSCAPE_HACK 0x8000 +# define X509_EX_V_INIT 0x0001 +typedef struct X509_extension_st X509_EXTENSION; + +typedef STACK_OF(X509_EXTENSION) X509_EXTENSIONS; + +DEFINE_STACK_OF(X509_EXTENSION) + +typedef struct x509_attributes_st X509_ATTRIBUTE; + +DEFINE_STACK_OF(X509_ATTRIBUTE) + +typedef struct X509_req_info_st X509_REQ_INFO; + +typedef struct X509_req_st X509_REQ; + +typedef struct x509_cert_aux_st X509_CERT_AUX; + +typedef struct x509_cinf_st X509_CINF; + +DEFINE_STACK_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; + +DEFINE_STACK_OF(X509_TRUST) + +/* standard trust ids */ + +# define X509_TRUST_DEFAULT 0 /* 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 (1U << 0) +# define X509_TRUST_DYNAMIC_NAME (1U << 1) +/* No compat trust if self-signed, preempts "DO_SS" */ +# define X509_TRUST_NO_SS_COMPAT (1U << 2) +/* Compat trust if no explicit accepted trust EKUs */ +# define X509_TRUST_DO_SS_COMPAT (1U << 3) +/* Accept "anyEKU" as a wildcard trust OID */ +# define X509_TRUST_OK_ANY_EKU (1U << 4) + +/* 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; 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) + +DEFINE_STACK_OF(X509_REVOKED) + +typedef struct X509_crl_info_st X509_CRL_INFO; + +DEFINE_STACK_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; +} X509_PKEY; + +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; +} X509_INFO; + +DEFINE_STACK_OF(X509_INFO) + +/* + * The next 2 structures and their 8 routines are used to manipulate Netscape's + * 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; + +#ifndef OPENSSL_NO_SCRYPT +typedef struct SCRYPT_PARAMS_st { + ASN1_OCTET_STRING *salt; + ASN1_INTEGER *costParameter; + ASN1_INTEGER *blockSize; + ASN1_INTEGER *parallelizationParameter; + ASN1_INTEGER *keyLength; +} SCRYPT_PARAMS; +#endif + +#ifdef __cplusplus +} +#endif + +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +# define X509_EXT_PACK_UNKNOWN 1 +# define X509_EXT_PACK_STRING 2 + +# define X509_extract_key(x) X509_get_pubkey(x)/*****/ +# define X509_REQ_extract_key(a) X509_REQ_get_pubkey(a) +# define X509_name_cmp(a,b) X509_NAME_cmp((a),(b)) + +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); + +const char *X509_verify_cert_error_string(long n); + +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, const X509_ALGOR *alg, + const 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); +# ifndef OPENSSL_NO_OCSP +int X509_http_nbio(OCSP_REQ_CTX *rctx, X509 **pcert); +# endif +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); +# ifndef OPENSSL_NO_OCSP +int X509_CRL_http_nbio(OCSP_REQ_CTX *rctx, X509_CRL **pcrl); +# endif +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); + +# ifndef OPENSSL_NO_STDIO +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 + +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); + +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(const ASN1_OBJECT **paobj, int *pptype, + const void **ppval, const 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); +int X509_ALGOR_copy(X509_ALGOR *dest, const X509_ALGOR *src); + +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_get0(X509_PUBKEY *key); +EVP_PKEY *X509_PUBKEY_get(X509_PUBKEY *key); +int X509_get_pubkey_parameters(EVP_PKEY *pkey, STACK_OF(X509) *chain); +long X509_get_pathlen(X509 *x); +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) +void X509_SIG_get0(const X509_SIG *sig, const X509_ALGOR **palg, + const ASN1_OCTET_STRING **pdigest); +void X509_SIG_getm(X509_SIG *sig, X509_ALGOR **palg, + ASN1_OCTET_STRING **pdigest); + +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) + +#define X509_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_X509, l, p, newf, dupf, freef) +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); + +int X509_SIG_INFO_get(const X509_SIG_INFO *siginf, int *mdnid, int *pknid, + int *secbits, uint32_t *flags); +void X509_SIG_INFO_set(X509_SIG_INFO *siginf, int mdnid, int pknid, + int secbits, uint32_t flags); + +int X509_get_signature_info(X509 *x, int *mdnid, int *pknid, int *secbits, + uint32_t *flags); + +void X509_get0_signature(const ASN1_BIT_STRING **psig, + const X509_ALGOR **palg, const X509 *x); +int X509_get_signature_nid(const X509 *x); + +int X509_trusted(const X509 *x); +int X509_alias_set1(X509 *x, const unsigned char *name, int len); +int X509_keyid_set1(X509 *x, const 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, const ASN1_OBJECT *obj); +int X509_add1_reject_object(X509 *x, const ASN1_OBJECT *obj); +void X509_trust_clear(X509 *x); +void X509_reject_clear(X509 *x); + +STACK_OF(ASN1_OBJECT) *X509_get0_trust_objects(X509 *x); +STACK_OF(ASN1_OBJECT) *X509_get0_reject_objects(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); + +DECLARE_ASN1_FUNCTIONS(NETSCAPE_SPKI) +DECLARE_ASN1_FUNCTIONS(NETSCAPE_SPKAC) +DECLARE_ASN1_FUNCTIONS(NETSCAPE_CERT_SEQUENCE) + +X509_INFO *X509_INFO_new(void); +void X509_INFO_free(X509_INFO *a); +char *X509_NAME_oneline(const 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); + +long X509_get_version(const X509 *x); +int X509_set_version(X509 *x, long version); +int X509_set_serialNumber(X509 *x, ASN1_INTEGER *serial); +ASN1_INTEGER *X509_get_serialNumber(X509 *x); +const ASN1_INTEGER *X509_get0_serialNumber(const X509 *x); +int X509_set_issuer_name(X509 *x, X509_NAME *name); +X509_NAME *X509_get_issuer_name(const X509 *a); +int X509_set_subject_name(X509 *x, X509_NAME *name); +X509_NAME *X509_get_subject_name(const X509 *a); +const ASN1_TIME * X509_get0_notBefore(const X509 *x); +ASN1_TIME *X509_getm_notBefore(const X509 *x); +int X509_set1_notBefore(X509 *x, const ASN1_TIME *tm); +const ASN1_TIME *X509_get0_notAfter(const X509 *x); +ASN1_TIME *X509_getm_notAfter(const X509 *x); +int X509_set1_notAfter(X509 *x, const ASN1_TIME *tm); +int X509_set_pubkey(X509 *x, EVP_PKEY *pkey); +int X509_up_ref(X509 *x); +int X509_get_signature_type(const X509 *x); + +# if OPENSSL_API_COMPAT < 0x10100000L +# define X509_get_notBefore X509_getm_notBefore +# define X509_get_notAfter X509_getm_notAfter +# define X509_set_notBefore X509_set1_notBefore +# define X509_set_notAfter X509_set1_notAfter +#endif + + +/* + * This one is only used so that a binary form can output, as in + * i2d_X509_PUBKEY(X509_get_X509_PUBKEY(x), &buf) + */ +X509_PUBKEY *X509_get_X509_PUBKEY(const X509 *x); +const STACK_OF(X509_EXTENSION) *X509_get0_extensions(const X509 *x); +void X509_get0_uids(const X509 *x, const ASN1_BIT_STRING **piuid, + const ASN1_BIT_STRING **psuid); +const X509_ALGOR *X509_get0_tbs_sigalg(const X509 *x); + +EVP_PKEY *X509_get0_pubkey(const X509 *x); +EVP_PKEY *X509_get_pubkey(X509 *x); +ASN1_BIT_STRING *X509_get0_pubkey_bitstr(const X509 *x); +int X509_certificate_type(const X509 *x, const EVP_PKEY *pubkey); + +long X509_REQ_get_version(const X509_REQ *req); +int X509_REQ_set_version(X509_REQ *x, long version); +X509_NAME *X509_REQ_get_subject_name(const X509_REQ *req); +int X509_REQ_set_subject_name(X509_REQ *req, X509_NAME *name); +void X509_REQ_get0_signature(const X509_REQ *req, const ASN1_BIT_STRING **psig, + const X509_ALGOR **palg); +void X509_REQ_set0_signature(X509_REQ *req, ASN1_BIT_STRING *psig); +int X509_REQ_set1_signature_algo(X509_REQ *req, X509_ALGOR *palg); +int X509_REQ_get_signature_nid(const X509_REQ *req); +int i2d_re_X509_REQ_tbs(X509_REQ *req, unsigned char **pp); +int X509_REQ_set_pubkey(X509_REQ *x, EVP_PKEY *pkey); +EVP_PKEY *X509_REQ_get_pubkey(X509_REQ *req); +EVP_PKEY *X509_REQ_get0_pubkey(X509_REQ *req); +X509_PUBKEY *X509_REQ_get_X509_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, const 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_set1_lastUpdate(X509_CRL *x, const ASN1_TIME *tm); +int X509_CRL_set1_nextUpdate(X509_CRL *x, const ASN1_TIME *tm); +int X509_CRL_sort(X509_CRL *crl); +int X509_CRL_up_ref(X509_CRL *crl); + +# if OPENSSL_API_COMPAT < 0x10100000L +# define X509_CRL_set_lastUpdate X509_CRL_set1_lastUpdate +# define X509_CRL_set_nextUpdate X509_CRL_set1_nextUpdate +#endif + +long X509_CRL_get_version(const X509_CRL *crl); +const ASN1_TIME *X509_CRL_get0_lastUpdate(const X509_CRL *crl); +const ASN1_TIME *X509_CRL_get0_nextUpdate(const X509_CRL *crl); +DEPRECATEDIN_1_1_0(ASN1_TIME *X509_CRL_get_lastUpdate(X509_CRL *crl)) +DEPRECATEDIN_1_1_0(ASN1_TIME *X509_CRL_get_nextUpdate(X509_CRL *crl)) +X509_NAME *X509_CRL_get_issuer(const X509_CRL *crl); +const STACK_OF(X509_EXTENSION) *X509_CRL_get0_extensions(const X509_CRL *crl); +STACK_OF(X509_REVOKED) *X509_CRL_get_REVOKED(X509_CRL *crl); +void X509_CRL_get0_signature(const X509_CRL *crl, const ASN1_BIT_STRING **psig, + const X509_ALGOR **palg); +int X509_CRL_get_signature_nid(const X509_CRL *crl); +int i2d_re_X509_CRL_tbs(X509_CRL *req, unsigned char **pp); + +const ASN1_INTEGER *X509_REVOKED_get0_serialNumber(const X509_REVOKED *x); +int X509_REVOKED_set_serialNumber(X509_REVOKED *x, ASN1_INTEGER *serial); +const ASN1_TIME *X509_REVOKED_get0_revocationDate(const X509_REVOKED *x); +int X509_REVOKED_set_revocationDate(X509_REVOKED *r, ASN1_TIME *tm); +const STACK_OF(X509_EXTENSION) * +X509_REVOKED_get0_extensions(const X509_REVOKED *r); + +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(const X509 *x509, const 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); +int X509_aux_print(BIO *out, X509 *x, int indent); +# ifndef OPENSSL_NO_STDIO +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, const X509_NAME *nm, int indent, + unsigned long flags); +# endif + +int X509_NAME_print(BIO *bp, const X509_NAME *name, int obase); +int X509_NAME_print_ex(BIO *out, const 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_CRL_print_ex(BIO *out, X509_CRL *x, unsigned long nmflag); +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); + +int X509_NAME_entry_count(const 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, const ASN1_OBJECT *obj, + char *buf, int len); + +/* + * NOTE: you should be passing -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, const ASN1_OBJECT *obj, + int lastpos); +X509_NAME_ENTRY *X509_NAME_get_entry(const 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, const X509_NAME_ENTRY *ne, + int loc, int set); +int X509_NAME_add_entry_by_OBJ(X509_NAME *name, const ASN1_OBJECT *obj, int type, + const unsigned char *bytes, int len, int loc, + int set); +int X509_NAME_add_entry_by_NID(X509_NAME *name, int nid, int type, + const 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, + const 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, + const ASN1_OBJECT *obj, int type, + const unsigned char *bytes, + int len); +int X509_NAME_ENTRY_set_object(X509_NAME_ENTRY *ne, const 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(const X509_NAME_ENTRY *ne); +ASN1_STRING * X509_NAME_ENTRY_get_data(const X509_NAME_ENTRY *ne); +int X509_NAME_ENTRY_set(const X509_NAME_ENTRY *ne); + +int X509_NAME_get0_der(X509_NAME *nm, const unsigned char **pder, + size_t *pderlen); + +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, + const 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(const X509 *x); +int X509_get_ext_by_NID(const X509 *x, int nid, int lastpos); +int X509_get_ext_by_OBJ(const X509 *x, const ASN1_OBJECT *obj, int lastpos); +int X509_get_ext_by_critical(const X509 *x, int crit, int lastpos); +X509_EXTENSION *X509_get_ext(const 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(const 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(const X509_CRL *x); +int X509_CRL_get_ext_by_NID(const X509_CRL *x, int nid, int lastpos); +int X509_CRL_get_ext_by_OBJ(const X509_CRL *x, const ASN1_OBJECT *obj, + int lastpos); +int X509_CRL_get_ext_by_critical(const X509_CRL *x, int crit, int lastpos); +X509_EXTENSION *X509_CRL_get_ext(const 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(const 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(const X509_REVOKED *x); +int X509_REVOKED_get_ext_by_NID(const X509_REVOKED *x, int nid, int lastpos); +int X509_REVOKED_get_ext_by_OBJ(const X509_REVOKED *x, const ASN1_OBJECT *obj, + int lastpos); +int X509_REVOKED_get_ext_by_critical(const X509_REVOKED *x, int crit, + int lastpos); +X509_EXTENSION *X509_REVOKED_get_ext(const 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(const 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, + const ASN1_OBJECT *obj, int crit, + ASN1_OCTET_STRING *data); +int X509_EXTENSION_set_object(X509_EXTENSION *ex, const 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(const 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, + const 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(const STACK_OF(X509_ATTRIBUTE) *x, + const 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(const 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, const 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) +#ifndef OPENSSL_NO_SCRYPT +DECLARE_ASN1_FUNCTIONS(SCRYPT_PARAMS) +#endif + +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); + +#ifndef OPENSSL_NO_SCRYPT +X509_ALGOR *PKCS5_pbe2_set_scrypt(const EVP_CIPHER *cipher, + const unsigned char *salt, int saltlen, + unsigned char *aiv, uint64_t N, uint64_t r, + uint64_t p); +#endif + +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(const PKCS8_PRIV_KEY_INFO *p8); +PKCS8_PRIV_KEY_INFO *EVP_PKEY2PKCS8(EVP_PKEY *pkey); + +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(const ASN1_OBJECT **ppkalg, + const unsigned char **pk, int *ppklen, + const X509_ALGOR **pa, const PKCS8_PRIV_KEY_INFO *p8); + +const STACK_OF(X509_ATTRIBUTE) * +PKCS8_pkey_get0_attrs(const PKCS8_PRIV_KEY_INFO *p8); +int PKCS8_pkey_add1_attr_by_NID(PKCS8_PRIV_KEY_INFO *p8, int nid, int type, + const unsigned char *bytes, int len); + +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), + const char *name, int arg1, void *arg2); +void X509_TRUST_cleanup(void); +int X509_TRUST_get_flags(const X509_TRUST *xp); +char *X509_TRUST_get0_name(const X509_TRUST *xp); +int X509_TRUST_get_trust(const X509_TRUST *xp); + +# ifdef __cplusplus +} +# endif +#endif diff --git a/plugin/openssl/include/openssl/x509_vfy.h b/plugin/openssl/include/openssl/x509_vfy.h new file mode 100644 index 000000000..25c79f1be --- /dev/null +++ b/plugin/openssl/include/openssl/x509_vfy.h @@ -0,0 +1,632 @@ +/* + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_X509_VFY_H +# define HEADER_X509_VFY_H + +/* + * Protect against recursion, x509.h and x509_vfy.h each include the other. + */ +# ifndef HEADER_X509_H +# include +# endif + +# include +# include +# include +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +/*- +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. +*/ + +typedef enum { + X509_LU_NONE = 0, + X509_LU_X509, X509_LU_CRL +} X509_LOOKUP_TYPE; + +#if OPENSSL_API_COMPAT < 0x10100000L +#define X509_LU_RETRY -1 +#define X509_LU_FAIL 0 +#endif + +DEFINE_STACK_OF(X509_LOOKUP) +DEFINE_STACK_OF(X509_OBJECT) +DEFINE_STACK_OF(X509_VERIFY_PARAM) + +int X509_STORE_set_depth(X509_STORE *store, int depth); + +typedef int (*X509_STORE_CTX_verify_cb)(int, X509_STORE_CTX *); +typedef int (*X509_STORE_CTX_verify_fn)(X509_STORE_CTX *); +typedef int (*X509_STORE_CTX_get_issuer_fn)(X509 **issuer, + X509_STORE_CTX *ctx, X509 *x); +typedef int (*X509_STORE_CTX_check_issued_fn)(X509_STORE_CTX *ctx, + X509 *x, X509 *issuer); +typedef int (*X509_STORE_CTX_check_revocation_fn)(X509_STORE_CTX *ctx); +typedef int (*X509_STORE_CTX_get_crl_fn)(X509_STORE_CTX *ctx, + X509_CRL **crl, X509 *x); +typedef int (*X509_STORE_CTX_check_crl_fn)(X509_STORE_CTX *ctx, X509_CRL *crl); +typedef int (*X509_STORE_CTX_cert_crl_fn)(X509_STORE_CTX *ctx, + X509_CRL *crl, X509 *x); +typedef int (*X509_STORE_CTX_check_policy_fn)(X509_STORE_CTX *ctx); +typedef STACK_OF(X509) *(*X509_STORE_CTX_lookup_certs_fn)(X509_STORE_CTX *ctx, + X509_NAME *nm); +typedef STACK_OF(X509_CRL) *(*X509_STORE_CTX_lookup_crls_fn)(X509_STORE_CTX *ctx, + X509_NAME *nm); +typedef int (*X509_STORE_CTX_cleanup_fn)(X509_STORE_CTX *ctx); + + +void X509_STORE_CTX_set_depth(X509_STORE_CTX *ctx, int depth); + +# define X509_STORE_CTX_set_app_data(ctx,data) \ + X509_STORE_CTX_set_ex_data(ctx,0,data) +# define X509_STORE_CTX_get_app_data(ctx) \ + X509_STORE_CTX_get_ex_data(ctx,0) + +# define X509_L_FILE_LOAD 1 +# define X509_L_ADD_DIR 2 + +# define X509_LOOKUP_load_file(x,name,type) \ + X509_LOOKUP_ctrl((x),X509_L_FILE_LOAD,(name),(long)(type),NULL) + +# define X509_LOOKUP_add_dir(x,name,type) \ + X509_LOOKUP_ctrl((x),X509_L_ADD_DIR,(name),(long)(type),NULL) + +# define X509_V_OK 0 +# define X509_V_ERR_UNSPECIFIED 1 +# define X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT 2 +# define X509_V_ERR_UNABLE_TO_GET_CRL 3 +# define X509_V_ERR_UNABLE_TO_DECRYPT_CERT_SIGNATURE 4 +# define X509_V_ERR_UNABLE_TO_DECRYPT_CRL_SIGNATURE 5 +# define X509_V_ERR_UNABLE_TO_DECODE_ISSUER_PUBLIC_KEY 6 +# define X509_V_ERR_CERT_SIGNATURE_FAILURE 7 +# define X509_V_ERR_CRL_SIGNATURE_FAILURE 8 +# define X509_V_ERR_CERT_NOT_YET_VALID 9 +# define X509_V_ERR_CERT_HAS_EXPIRED 10 +# define X509_V_ERR_CRL_NOT_YET_VALID 11 +# define X509_V_ERR_CRL_HAS_EXPIRED 12 +# define X509_V_ERR_ERROR_IN_CERT_NOT_BEFORE_FIELD 13 +# define X509_V_ERR_ERROR_IN_CERT_NOT_AFTER_FIELD 14 +# define X509_V_ERR_ERROR_IN_CRL_LAST_UPDATE_FIELD 15 +# define X509_V_ERR_ERROR_IN_CRL_NEXT_UPDATE_FIELD 16 +# define X509_V_ERR_OUT_OF_MEM 17 +# define X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT 18 +# define X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN 19 +# define X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY 20 +# define X509_V_ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE 21 +# define X509_V_ERR_CERT_CHAIN_TOO_LONG 22 +# define X509_V_ERR_CERT_REVOKED 23 +# define X509_V_ERR_INVALID_CA 24 +# define X509_V_ERR_PATH_LENGTH_EXCEEDED 25 +# define X509_V_ERR_INVALID_PURPOSE 26 +# define X509_V_ERR_CERT_UNTRUSTED 27 +# define X509_V_ERR_CERT_REJECTED 28 +/* These are 'informational' when looking for issuer cert */ +# define X509_V_ERR_SUBJECT_ISSUER_MISMATCH 29 +# define X509_V_ERR_AKID_SKID_MISMATCH 30 +# define X509_V_ERR_AKID_ISSUER_SERIAL_MISMATCH 31 +# define X509_V_ERR_KEYUSAGE_NO_CERTSIGN 32 +# define X509_V_ERR_UNABLE_TO_GET_CRL_ISSUER 33 +# define X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION 34 +# define X509_V_ERR_KEYUSAGE_NO_CRL_SIGN 35 +# define X509_V_ERR_UNHANDLED_CRITICAL_CRL_EXTENSION 36 +# define X509_V_ERR_INVALID_NON_CA 37 +# define X509_V_ERR_PROXY_PATH_LENGTH_EXCEEDED 38 +# define X509_V_ERR_KEYUSAGE_NO_DIGITAL_SIGNATURE 39 +# define X509_V_ERR_PROXY_CERTIFICATES_NOT_ALLOWED 40 +# define X509_V_ERR_INVALID_EXTENSION 41 +# define X509_V_ERR_INVALID_POLICY_EXTENSION 42 +# define X509_V_ERR_NO_EXPLICIT_POLICY 43 +# define X509_V_ERR_DIFFERENT_CRL_SCOPE 44 +# define X509_V_ERR_UNSUPPORTED_EXTENSION_FEATURE 45 +# define X509_V_ERR_UNNESTED_RESOURCE 46 +# define X509_V_ERR_PERMITTED_VIOLATION 47 +# define X509_V_ERR_EXCLUDED_VIOLATION 48 +# define X509_V_ERR_SUBTREE_MINMAX 49 +/* The application is not happy */ +# define X509_V_ERR_APPLICATION_VERIFICATION 50 +# define X509_V_ERR_UNSUPPORTED_CONSTRAINT_TYPE 51 +# define X509_V_ERR_UNSUPPORTED_CONSTRAINT_SYNTAX 52 +# define X509_V_ERR_UNSUPPORTED_NAME_SYNTAX 53 +# define X509_V_ERR_CRL_PATH_VALIDATION_ERROR 54 +/* Another issuer check debug option */ +# define X509_V_ERR_PATH_LOOP 55 +/* 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 +/* DANE TLSA errors */ +# define X509_V_ERR_DANE_NO_MATCH 65 +/* security level errors */ +# define X509_V_ERR_EE_KEY_TOO_SMALL 66 +# define X509_V_ERR_CA_KEY_TOO_SMALL 67 +# define X509_V_ERR_CA_MD_TOO_WEAK 68 +/* Caller error */ +# define X509_V_ERR_INVALID_CALL 69 +/* Issuer lookup error */ +# define X509_V_ERR_STORE_LOOKUP 70 +/* Certificate transparency */ +# define X509_V_ERR_NO_VALID_SCTS 71 + +# define X509_V_ERR_PROXY_SUBJECT_NAME_VIOLATION 72 +/* OCSP status errors */ +# define X509_V_ERR_OCSP_VERIFY_NEEDED 73 /* Need OCSP verification */ +# define X509_V_ERR_OCSP_VERIFY_FAILED 74 /* Couldn't verify cert through OCSP */ +# define X509_V_ERR_OCSP_CERT_UNKNOWN 75 /* Certificate wasn't recognized by the OCSP responder */ +# define X509_V_ERR_SIGNATURE_ALGORITHM_MISMATCH 76 +# define X509_V_ERR_NO_ISSUER_PUBLIC_KEY 77 +# define X509_V_ERR_UNSUPPORTED_SIGNATURE_ALGORITHM 78 +# define X509_V_ERR_EC_KEY_EXPLICIT_PARAMS 79 + +/* Certificate verify flags */ + +# if OPENSSL_API_COMPAT < 0x10100000L +# define X509_V_FLAG_CB_ISSUER_CHECK 0x0 /* Deprecated */ +# endif +/* 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 self-signed CA signature */ +# define X509_V_FLAG_CHECK_SS_SIGNATURE 0x4000 +/* Use trusted store first */ +# define X509_V_FLAG_TRUSTED_FIRST 0x8000 +/* Suite B 128 bit only mode: not normally used */ +# define X509_V_FLAG_SUITEB_128_LOS_ONLY 0x10000 +/* Suite B 192 bit only mode */ +# define X509_V_FLAG_SUITEB_192_LOS 0x20000 +/* Suite B 128 bit mode allowing 192 bit algorithms */ +# define X509_V_FLAG_SUITEB_128_LOS 0x30000 +/* Allow partial chains if at least one certificate is in trusted store */ +# define X509_V_FLAG_PARTIAL_CHAIN 0x80000 +/* + * If the initial chain is not trusted, do not attempt to build an alternative + * chain. Alternate chain checking was introduced in 1.1.0. Setting this flag + * will force the behaviour to match that of previous versions. + */ +# define X509_V_FLAG_NO_ALT_CHAINS 0x100000 +/* Do not check certificate/CRL validity against current time */ +# define X509_V_FLAG_NO_CHECK_TIME 0x200000 + +# 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, X509_LOOKUP_TYPE type, + X509_NAME *name); +X509_OBJECT *X509_OBJECT_retrieve_by_subject(STACK_OF(X509_OBJECT) *h, + X509_LOOKUP_TYPE type, + X509_NAME *name); +X509_OBJECT *X509_OBJECT_retrieve_match(STACK_OF(X509_OBJECT) *h, + X509_OBJECT *x); +int X509_OBJECT_up_ref_count(X509_OBJECT *a); +X509_OBJECT *X509_OBJECT_new(void); +void X509_OBJECT_free(X509_OBJECT *a); +X509_LOOKUP_TYPE X509_OBJECT_get_type(const X509_OBJECT *a); +X509 *X509_OBJECT_get0_X509(const X509_OBJECT *a); +int X509_OBJECT_set1_X509(X509_OBJECT *a, X509 *obj); +X509_CRL *X509_OBJECT_get0_X509_CRL(X509_OBJECT *a); +int X509_OBJECT_set1_X509_CRL(X509_OBJECT *a, X509_CRL *obj); +X509_STORE *X509_STORE_new(void); +void X509_STORE_free(X509_STORE *v); +int X509_STORE_lock(X509_STORE *ctx); +int X509_STORE_unlock(X509_STORE *ctx); +int X509_STORE_up_ref(X509_STORE *v); +STACK_OF(X509_OBJECT) *X509_STORE_get0_objects(X509_STORE *v); + +STACK_OF(X509) *X509_STORE_CTX_get1_certs(X509_STORE_CTX *st, X509_NAME *nm); +STACK_OF(X509_CRL) *X509_STORE_CTX_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); +X509_VERIFY_PARAM *X509_STORE_get0_param(X509_STORE *ctx); + +void X509_STORE_set_verify(X509_STORE *ctx, X509_STORE_CTX_verify_fn verify); +#define X509_STORE_set_verify_func(ctx, func) \ + X509_STORE_set_verify((ctx),(func)) +void X509_STORE_CTX_set_verify(X509_STORE_CTX *ctx, + X509_STORE_CTX_verify_fn verify); +X509_STORE_CTX_verify_fn X509_STORE_get_verify(X509_STORE *ctx); +void X509_STORE_set_verify_cb(X509_STORE *ctx, + X509_STORE_CTX_verify_cb verify_cb); +# define X509_STORE_set_verify_cb_func(ctx,func) \ + X509_STORE_set_verify_cb((ctx),(func)) +X509_STORE_CTX_verify_cb X509_STORE_get_verify_cb(X509_STORE *ctx); +void X509_STORE_set_get_issuer(X509_STORE *ctx, + X509_STORE_CTX_get_issuer_fn get_issuer); +X509_STORE_CTX_get_issuer_fn X509_STORE_get_get_issuer(X509_STORE *ctx); +void X509_STORE_set_check_issued(X509_STORE *ctx, + X509_STORE_CTX_check_issued_fn check_issued); +X509_STORE_CTX_check_issued_fn X509_STORE_get_check_issued(X509_STORE *ctx); +void X509_STORE_set_check_revocation(X509_STORE *ctx, + X509_STORE_CTX_check_revocation_fn check_revocation); +X509_STORE_CTX_check_revocation_fn X509_STORE_get_check_revocation(X509_STORE *ctx); +void X509_STORE_set_get_crl(X509_STORE *ctx, + X509_STORE_CTX_get_crl_fn get_crl); +X509_STORE_CTX_get_crl_fn X509_STORE_get_get_crl(X509_STORE *ctx); +void X509_STORE_set_check_crl(X509_STORE *ctx, + X509_STORE_CTX_check_crl_fn check_crl); +X509_STORE_CTX_check_crl_fn X509_STORE_get_check_crl(X509_STORE *ctx); +void X509_STORE_set_cert_crl(X509_STORE *ctx, + X509_STORE_CTX_cert_crl_fn cert_crl); +X509_STORE_CTX_cert_crl_fn X509_STORE_get_cert_crl(X509_STORE *ctx); +void X509_STORE_set_check_policy(X509_STORE *ctx, + X509_STORE_CTX_check_policy_fn check_policy); +X509_STORE_CTX_check_policy_fn X509_STORE_get_check_policy(X509_STORE *ctx); +void X509_STORE_set_lookup_certs(X509_STORE *ctx, + X509_STORE_CTX_lookup_certs_fn lookup_certs); +X509_STORE_CTX_lookup_certs_fn X509_STORE_get_lookup_certs(X509_STORE *ctx); +void X509_STORE_set_lookup_crls(X509_STORE *ctx, + X509_STORE_CTX_lookup_crls_fn lookup_crls); +#define X509_STORE_set_lookup_crls_cb(ctx, func) \ + X509_STORE_set_lookup_crls((ctx), (func)) +X509_STORE_CTX_lookup_crls_fn X509_STORE_get_lookup_crls(X509_STORE *ctx); +void X509_STORE_set_cleanup(X509_STORE *ctx, + X509_STORE_CTX_cleanup_fn cleanup); +X509_STORE_CTX_cleanup_fn X509_STORE_get_cleanup(X509_STORE *ctx); + +#define X509_STORE_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_X509_STORE, l, p, newf, dupf, freef) +int X509_STORE_set_ex_data(X509_STORE *ctx, int idx, void *data); +void *X509_STORE_get_ex_data(X509_STORE *ctx, int idx); + +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_set0_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 *X509_STORE_CTX_get0_cert(X509_STORE_CTX *ctx); +STACK_OF(X509)* X509_STORE_CTX_get0_untrusted(X509_STORE_CTX *ctx); +void X509_STORE_CTX_set0_untrusted(X509_STORE_CTX *ctx, STACK_OF(X509) *sk); +void X509_STORE_CTX_set_verify_cb(X509_STORE_CTX *ctx, + X509_STORE_CTX_verify_cb verify); +X509_STORE_CTX_verify_cb X509_STORE_CTX_get_verify_cb(X509_STORE_CTX *ctx); +X509_STORE_CTX_verify_fn X509_STORE_CTX_get_verify(X509_STORE_CTX *ctx); +X509_STORE_CTX_get_issuer_fn X509_STORE_CTX_get_get_issuer(X509_STORE_CTX *ctx); +X509_STORE_CTX_check_issued_fn X509_STORE_CTX_get_check_issued(X509_STORE_CTX *ctx); +X509_STORE_CTX_check_revocation_fn X509_STORE_CTX_get_check_revocation(X509_STORE_CTX *ctx); +X509_STORE_CTX_get_crl_fn X509_STORE_CTX_get_get_crl(X509_STORE_CTX *ctx); +X509_STORE_CTX_check_crl_fn X509_STORE_CTX_get_check_crl(X509_STORE_CTX *ctx); +X509_STORE_CTX_cert_crl_fn X509_STORE_CTX_get_cert_crl(X509_STORE_CTX *ctx); +X509_STORE_CTX_check_policy_fn X509_STORE_CTX_get_check_policy(X509_STORE_CTX *ctx); +X509_STORE_CTX_lookup_certs_fn X509_STORE_CTX_get_lookup_certs(X509_STORE_CTX *ctx); +X509_STORE_CTX_lookup_crls_fn X509_STORE_CTX_get_lookup_crls(X509_STORE_CTX *ctx); +X509_STORE_CTX_cleanup_fn X509_STORE_CTX_get_cleanup(X509_STORE_CTX *ctx); + +#if OPENSSL_API_COMPAT < 0x10100000L +# define X509_STORE_CTX_get_chain X509_STORE_CTX_get0_chain +# define X509_STORE_CTX_set_chain X509_STORE_CTX_set0_untrusted +# define X509_STORE_CTX_trusted_stack X509_STORE_CTX_set0_trusted_stack +# define X509_STORE_get_by_subject X509_STORE_CTX_get_by_subject +# define X509_STORE_get1_certs X509_STORE_CTX_get1_certs +# define X509_STORE_get1_crls X509_STORE_CTX_get1_crls +/* the following macro is misspelled; use X509_STORE_get1_certs instead */ +# define X509_STORE_get1_cert X509_STORE_CTX_get1_certs +/* the following macro is misspelled; use X509_STORE_get1_crls instead */ +# define X509_STORE_get1_crl X509_STORE_CTX_get1_crls +#endif + +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); + +typedef int (*X509_LOOKUP_ctrl_fn)(X509_LOOKUP *ctx, int cmd, const char *argc, + long argl, char **ret); +typedef int (*X509_LOOKUP_get_by_subject_fn)(X509_LOOKUP *ctx, + X509_LOOKUP_TYPE type, + X509_NAME *name, + X509_OBJECT *ret); +typedef int (*X509_LOOKUP_get_by_issuer_serial_fn)(X509_LOOKUP *ctx, + X509_LOOKUP_TYPE type, + X509_NAME *name, + ASN1_INTEGER *serial, + X509_OBJECT *ret); +typedef int (*X509_LOOKUP_get_by_fingerprint_fn)(X509_LOOKUP *ctx, + X509_LOOKUP_TYPE type, + const unsigned char* bytes, + int len, + X509_OBJECT *ret); +typedef int (*X509_LOOKUP_get_by_alias_fn)(X509_LOOKUP *ctx, + X509_LOOKUP_TYPE type, + const char *str, + int len, + X509_OBJECT *ret); + +X509_LOOKUP_METHOD *X509_LOOKUP_meth_new(const char *name); +void X509_LOOKUP_meth_free(X509_LOOKUP_METHOD *method); + +int X509_LOOKUP_meth_set_new_item(X509_LOOKUP_METHOD *method, + int (*new_item) (X509_LOOKUP *ctx)); +int (*X509_LOOKUP_meth_get_new_item(const X509_LOOKUP_METHOD* method)) + (X509_LOOKUP *ctx); + +int X509_LOOKUP_meth_set_free(X509_LOOKUP_METHOD *method, + void (*free_fn) (X509_LOOKUP *ctx)); +void (*X509_LOOKUP_meth_get_free(const X509_LOOKUP_METHOD* method)) + (X509_LOOKUP *ctx); + +int X509_LOOKUP_meth_set_init(X509_LOOKUP_METHOD *method, + int (*init) (X509_LOOKUP *ctx)); +int (*X509_LOOKUP_meth_get_init(const X509_LOOKUP_METHOD* method)) + (X509_LOOKUP *ctx); + +int X509_LOOKUP_meth_set_shutdown(X509_LOOKUP_METHOD *method, + int (*shutdown) (X509_LOOKUP *ctx)); +int (*X509_LOOKUP_meth_get_shutdown(const X509_LOOKUP_METHOD* method)) + (X509_LOOKUP *ctx); + +int X509_LOOKUP_meth_set_ctrl(X509_LOOKUP_METHOD *method, + X509_LOOKUP_ctrl_fn ctrl_fn); +X509_LOOKUP_ctrl_fn X509_LOOKUP_meth_get_ctrl(const X509_LOOKUP_METHOD *method); + +int X509_LOOKUP_meth_set_get_by_subject(X509_LOOKUP_METHOD *method, + X509_LOOKUP_get_by_subject_fn fn); +X509_LOOKUP_get_by_subject_fn X509_LOOKUP_meth_get_get_by_subject( + const X509_LOOKUP_METHOD *method); + +int X509_LOOKUP_meth_set_get_by_issuer_serial(X509_LOOKUP_METHOD *method, + X509_LOOKUP_get_by_issuer_serial_fn fn); +X509_LOOKUP_get_by_issuer_serial_fn X509_LOOKUP_meth_get_get_by_issuer_serial( + const X509_LOOKUP_METHOD *method); + +int X509_LOOKUP_meth_set_get_by_fingerprint(X509_LOOKUP_METHOD *method, + X509_LOOKUP_get_by_fingerprint_fn fn); +X509_LOOKUP_get_by_fingerprint_fn X509_LOOKUP_meth_get_get_by_fingerprint( + const X509_LOOKUP_METHOD *method); + +int X509_LOOKUP_meth_set_get_by_alias(X509_LOOKUP_METHOD *method, + X509_LOOKUP_get_by_alias_fn fn); +X509_LOOKUP_get_by_alias_fn X509_LOOKUP_meth_get_get_by_alias( + const X509_LOOKUP_METHOD *method); + + +int X509_STORE_add_cert(X509_STORE *ctx, X509 *x); +int X509_STORE_add_crl(X509_STORE *ctx, X509_CRL *x); + +int X509_STORE_CTX_get_by_subject(X509_STORE_CTX *vs, X509_LOOKUP_TYPE type, + X509_NAME *name, X509_OBJECT *ret); +X509_OBJECT *X509_STORE_CTX_get_obj_by_subject(X509_STORE_CTX *vs, + X509_LOOKUP_TYPE type, + X509_NAME *name); + +int X509_LOOKUP_ctrl(X509_LOOKUP *ctx, int cmd, const char *argc, + long argl, char **ret); + +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); + +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, X509_LOOKUP_TYPE type, + X509_NAME *name, X509_OBJECT *ret); +int X509_LOOKUP_by_issuer_serial(X509_LOOKUP *ctx, X509_LOOKUP_TYPE type, + X509_NAME *name, ASN1_INTEGER *serial, + X509_OBJECT *ret); +int X509_LOOKUP_by_fingerprint(X509_LOOKUP *ctx, X509_LOOKUP_TYPE type, + const unsigned char *bytes, int len, + X509_OBJECT *ret); +int X509_LOOKUP_by_alias(X509_LOOKUP *ctx, X509_LOOKUP_TYPE type, + const char *str, int len, X509_OBJECT *ret); +int X509_LOOKUP_set_method_data(X509_LOOKUP *ctx, void *data); +void *X509_LOOKUP_get_method_data(const X509_LOOKUP *ctx); +X509_STORE *X509_LOOKUP_get_store(const X509_LOOKUP *ctx); +int X509_LOOKUP_shutdown(X509_LOOKUP *ctx); + +int X509_STORE_load_locations(X509_STORE *ctx, + const char *file, const char *dir); +int X509_STORE_set_default_paths(X509_STORE *ctx); + +#define X509_STORE_CTX_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_X509_STORE_CTX, l, p, newf, dupf, freef) +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); +void X509_STORE_CTX_set_error_depth(X509_STORE_CTX *ctx, int depth); +X509 *X509_STORE_CTX_get_current_cert(X509_STORE_CTX *ctx); +void X509_STORE_CTX_set_current_cert(X509_STORE_CTX *ctx, X509 *x); +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_get0_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_set0_verified_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); + +X509_POLICY_TREE *X509_STORE_CTX_get0_policy_tree(X509_STORE_CTX *ctx); +int X509_STORE_CTX_get_explicit_policy(X509_STORE_CTX *ctx); +int X509_STORE_CTX_get_num_untrusted(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); + +/* + * Bridge opacity barrier between libcrypt and libssl, also needed to support + * offline testing in test/danetest.c + */ +void X509_STORE_CTX_set0_dane(X509_STORE_CTX *ctx, SSL_DANE *dane); +#define DANE_FLAG_NO_DANE_EE_NAMECHECKS (1L << 0) + +/* 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_auth_level(X509_VERIFY_PARAM *param, int auth_level); +time_t X509_VERIFY_PARAM_get_time(const X509_VERIFY_PARAM *param); +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_set_inh_flags(X509_VERIFY_PARAM *param, + uint32_t flags); +uint32_t X509_VERIFY_PARAM_get_inh_flags(const X509_VERIFY_PARAM *param); + +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); +unsigned int X509_VERIFY_PARAM_get_hostflags(const X509_VERIFY_PARAM *param); +char *X509_VERIFY_PARAM_get0_peername(X509_VERIFY_PARAM *); +void X509_VERIFY_PARAM_move_peername(X509_VERIFY_PARAM *, 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); +int X509_VERIFY_PARAM_get_auth_level(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); + +/* Non positive return values are errors */ +#define X509_PCY_TREE_FAILURE -2 /* Failure to satisfy explicit policy */ +#define X509_PCY_TREE_INVALID -1 /* Inconsistent or invalid extensions */ +#define X509_PCY_TREE_INTERNAL 0 /* Internal error, most likely malloc */ + +/* + * Positive return values form a bit mask, all but the first are internal to + * the library and don't appear in results from X509_policy_check(). + */ +#define X509_PCY_TREE_VALID 1 /* The policy tree is valid */ +#define X509_PCY_TREE_EMPTY 2 /* The policy tree is empty */ +#define X509_PCY_TREE_EXPLICIT 4 /* Explicit policy required */ + +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/plugin/openssl/include/openssl/x509err.h b/plugin/openssl/include/openssl/x509err.h new file mode 100644 index 000000000..cd08673f8 --- /dev/null +++ b/plugin/openssl/include/openssl/x509err.h @@ -0,0 +1,129 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_X509ERR_H +# define HEADER_X509ERR_H + +# include + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_X509_strings(void); + +/* + * X509 function codes. + */ +# define X509_F_ADD_CERT_DIR 100 +# define X509_F_BUILD_CHAIN 106 +# define X509_F_BY_FILE_CTRL 101 +# define X509_F_CHECK_NAME_CONSTRAINTS 149 +# define X509_F_CHECK_POLICY 145 +# define X509_F_DANE_I2D 107 +# define X509_F_DIR_CTRL 102 +# define X509_F_GET_CERT_BY_SUBJECT 103 +# define X509_F_I2D_X509_AUX 151 +# define X509_F_LOOKUP_CERTS_SK 152 +# define X509_F_NETSCAPE_SPKI_B64_DECODE 129 +# define X509_F_NETSCAPE_SPKI_B64_ENCODE 130 +# define X509_F_NEW_DIR 153 +# 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_METHOD_NEW 154 +# 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_LOOKUP_METH_NEW 160 +# define X509_F_X509_LOOKUP_NEW 155 +# define X509_F_X509_NAME_ADD_ENTRY 113 +# define X509_F_X509_NAME_CANON 156 +# 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_OBJECT_NEW 150 +# define X509_F_X509_PRINT_EX_FP 118 +# define X509_F_X509_PUBKEY_DECODE 148 +# define X509_F_X509_PUBKEY_GET 161 +# define X509_F_X509_PUBKEY_GET0 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_ADD_LOOKUP 157 +# 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_STORE_NEW 158 +# 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 +# define X509_F_X509_VERIFY_PARAM_NEW 159 + +/* + * X509 reason codes. + */ +# define X509_R_AKID_MISMATCH 110 +# define X509_R_BAD_SELECTOR 133 +# 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_IDP_MISMATCH 128 +# define X509_R_INVALID_ATTRIBUTES 138 +# define X509_R_INVALID_DIRECTORY 113 +# define X509_R_INVALID_FIELD_NAME 119 +# define X509_R_INVALID_TRUST 123 +# define X509_R_ISSUER_MISMATCH 129 +# define X509_R_KEY_TYPE_MISMATCH 115 +# define X509_R_KEY_VALUES_MISMATCH 116 +# define X509_R_LOADING_CERT_DIR 103 +# define X509_R_LOADING_DEFAULTS 104 +# define X509_R_METHOD_NOT_SUPPORTED 124 +# define X509_R_NAME_TOO_LONG 134 +# define X509_R_NEWER_CRL_NOT_NEWER 132 +# define X509_R_NO_CERTIFICATE_FOUND 135 +# define X509_R_NO_CERTIFICATE_OR_CRL_FOUND 136 +# define X509_R_NO_CERT_SET_FOR_US_TO_VERIFY 105 +# define X509_R_NO_CRL_FOUND 137 +# 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 + +#endif diff --git a/plugin/openssl/include/openssl/x509v3.h b/plugin/openssl/include/openssl/x509v3.h new file mode 100644 index 000000000..3a4f04c18 --- /dev/null +++ b/plugin/openssl/include/openssl/x509v3.h @@ -0,0 +1,938 @@ +/* + * Copyright 1999-2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_X509V3_H +# define HEADER_X509V3_H + +# include +# include +# include +# include + +#ifdef __cplusplus +extern "C" { +#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, const char *section, const char *value); + STACK_OF(CONF_VALUE) *(*get_section) (void *db, const 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 +# define X509V3_CTX_REPLACE 0x2 + 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; + +DEFINE_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_STRING *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 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; + +typedef STACK_OF(ASN1_INTEGER) TLS_FEATURE; + +DEFINE_STACK_OF(GENERAL_NAME) +typedef STACK_OF(GENERAL_NAME) GENERAL_NAMES; +DEFINE_STACK_OF(GENERAL_NAMES) + +DEFINE_STACK_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; + +DEFINE_STACK_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; + +DEFINE_STACK_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; + +DEFINE_STACK_OF(POLICYQUALINFO) + +typedef struct POLICYINFO_st { + ASN1_OBJECT *policyid; + STACK_OF(POLICYQUALINFO) *qualifiers; +} POLICYINFO; + +typedef STACK_OF(POLICYINFO) CERTIFICATEPOLICIES; + +DEFINE_STACK_OF(POLICYINFO) + +typedef struct POLICY_MAPPING_st { + ASN1_OBJECT *issuerDomainPolicy; + ASN1_OBJECT *subjectDomainPolicy; +} POLICY_MAPPING; + +DEFINE_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; + +DEFINE_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 +/* EXFLAG_SET is set to indicate that some values have been precomputed */ +# define EXFLAG_SET 0x100 +# define EXFLAG_CRITICAL 0x200 +# define EXFLAG_PROXY 0x400 + +# define EXFLAG_INVALID_POLICY 0x800 +# define EXFLAG_FRESHEST 0x1000 +# define EXFLAG_SS 0x2000 /* cert is apparently self-signed */ + +# define EXFLAG_NO_FINGERPRINT 0x100000 + +# 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 + +DEFINE_STACK_OF(X509_PURPOSE) + +DECLARE_ASN1_FUNCTIONS(BASIC_CONSTRAINTS) + +DECLARE_ASN1_FUNCTIONS(SXNET) +DECLARE_ASN1_FUNCTIONS(SXNETID) + +int SXNET_add_id_asc(SXNET **psx, const char *zone, const char *user, int userlen); +int SXNET_add_id_ulong(SXNET **psx, unsigned long lzone, const char *user, + int userlen); +int SXNET_add_id_INTEGER(SXNET **psx, ASN1_INTEGER *izone, const char *user, + int userlen); + +ASN1_OCTET_STRING *SXNET_get_id_asc(SXNET *sx, const 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); +char *i2s_ASN1_IA5STRING(X509V3_EXT_METHOD *method, ASN1_IA5STRING *ia5); +ASN1_IA5STRING *s2i_ASN1_IA5STRING(X509V3_EXT_METHOD *method, + X509V3_CTX *ctx, const char *str); + +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(const GENERAL_NAME *a, int *ptype); +int GENERAL_NAME_set0_othername(GENERAL_NAME *gen, + ASN1_OBJECT *oid, ASN1_TYPE *value); +int GENERAL_NAME_get0_otherName(const GENERAL_NAME *gen, + ASN1_OBJECT **poid, ASN1_TYPE **pvalue); + +char *i2s_ASN1_OCTET_STRING(X509V3_EXT_METHOD *method, + const ASN1_OCTET_STRING *ia5); +ASN1_OCTET_STRING *s2i_ASN1_OCTET_STRING(X509V3_EXT_METHOD *method, + X509V3_CTX *ctx, const char *str); + +DECLARE_ASN1_FUNCTIONS(EXTENDED_KEY_USAGE) +int i2a_ACCESS_DESCRIPTION(BIO *bp, const ACCESS_DESCRIPTION *a); + +DECLARE_ASN1_ALLOC_FUNCTIONS(TLS_FEATURE) + +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); +int NAME_CONSTRAINTS_check_CN(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, + const 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, + const char *value); +X509_EXTENSION *X509V3_EXT_nconf(CONF *conf, X509V3_CTX *ctx, const char *name, + const char *value); +int X509V3_EXT_add_nconf_sk(CONF *conf, X509V3_CTX *ctx, const char *section, + STACK_OF(X509_EXTENSION) **sk); +int X509V3_EXT_add_nconf(CONF *conf, X509V3_CTX *ctx, const char *section, + X509 *cert); +int X509V3_EXT_REQ_add_nconf(CONF *conf, X509V3_CTX *ctx, const char *section, + X509_REQ *req); +int X509V3_EXT_CRL_add_nconf(CONF *conf, X509V3_CTX *ctx, const char *section, + X509_CRL *crl); + +X509_EXTENSION *X509V3_EXT_conf_nid(LHASH_OF(CONF_VALUE) *conf, + X509V3_CTX *ctx, int ext_nid, + const char *value); +X509_EXTENSION *X509V3_EXT_conf(LHASH_OF(CONF_VALUE) *conf, X509V3_CTX *ctx, + const char *name, const char *value); +int X509V3_EXT_add_conf(LHASH_OF(CONF_VALUE) *conf, X509V3_CTX *ctx, + const char *section, X509 *cert); +int X509V3_EXT_REQ_add_conf(LHASH_OF(CONF_VALUE) *conf, X509V3_CTX *ctx, + const char *section, X509_REQ *req); +int X509V3_EXT_CRL_add_conf(LHASH_OF(CONF_VALUE) *conf, X509V3_CTX *ctx, + const char *section, X509_CRL *crl); + +int X509V3_add_value_bool_nf(const char *name, int asn1_bool, + STACK_OF(CONF_VALUE) **extlist); +int X509V3_get_value_bool(const CONF_VALUE *value, int *asn1_bool); +int X509V3_get_value_int(const 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, const char *name, const char *section); +STACK_OF(CONF_VALUE) *X509V3_get_section(X509V3_CTX *ctx, const 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, const ASN1_INTEGER *aint, + STACK_OF(CONF_VALUE) **extlist); +char *i2s_ASN1_INTEGER(X509V3_EXT_METHOD *meth, const ASN1_INTEGER *aint); +ASN1_INTEGER *s2i_ASN1_INTEGER(X509V3_EXT_METHOD *meth, const char *value); +char *i2s_ASN1_ENUMERATED(X509V3_EXT_METHOD *meth, const ASN1_ENUMERATED *aint); +char *i2s_ASN1_ENUMERATED_TABLE(X509V3_EXT_METHOD *meth, + const 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(const STACK_OF(X509_EXTENSION) *x, int nid, int *crit, + int *idx); + +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); + +#if OPENSSL_API_COMPAT < 0x10100000L +/* The new declarations are in crypto.h, but the old ones were here. */ +# define hex_to_string OPENSSL_buf2hexstr +# define string_to_hex OPENSSL_hexstr2buf +#endif + +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); +#ifndef OPENSSL_NO_STDIO +int X509V3_EXT_print_fp(FILE *out, X509_EXTENSION *ext, int flag, int indent); +#endif +int X509V3_extensions_print(BIO *out, const char *title, + const 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); +void X509_set_proxy_flag(X509 *x); +void X509_set_proxy_pathlen(X509 *x, long l); +long X509_get_proxy_pathlen(X509 *x); + +uint32_t X509_get_extension_flags(X509 *x); +uint32_t X509_get_key_usage(X509 *x); +uint32_t X509_get_extended_key_usage(X509 *x); +const ASN1_OCTET_STRING *X509_get0_subject_key_id(X509 *x); +const ASN1_OCTET_STRING *X509_get0_authority_key_id(X509 *x); +const GENERAL_NAMES *X509_get0_authority_issuer(X509 *x); +const ASN1_INTEGER *X509_get0_authority_serial(X509 *x); + +int X509_PURPOSE_get_count(void); +X509_PURPOSE *X509_PURPOSE_get0(int idx); +int X509_PURPOSE_get_by_sname(const 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), + const char *name, const char *sname, void *arg); +char *X509_PURPOSE_get0_name(const X509_PURPOSE *xp); +char *X509_PURPOSE_get0_sname(const X509_PURPOSE *xp); +int X509_PURPOSE_get_trust(const X509_PURPOSE *xp); +void X509_PURPOSE_cleanup(void); +int X509_PURPOSE_get_id(const 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 +/* Never check the subject CN */ +# define X509_CHECK_FLAG_NEVER_CHECK_SUBJECT 0x20 +/* + * 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 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); +DEFINE_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; +DEFINE_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; +DEFINE_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; +DEFINE_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 X509v3_asid_add_inherit(ASIdentifiers *asid, int which); +int X509v3_asid_add_id_or_range(ASIdentifiers *asid, int which, + ASN1_INTEGER *min, ASN1_INTEGER *max); +int X509v3_addr_add_inherit(IPAddrBlocks *addr, + const unsigned afi, const unsigned *safi); +int X509v3_addr_add_prefix(IPAddrBlocks *addr, + const unsigned afi, const unsigned *safi, + unsigned char *a, const int prefixlen); +int X509v3_addr_add_range(IPAddrBlocks *addr, + const unsigned afi, const unsigned *safi, + unsigned char *min, unsigned char *max); +unsigned X509v3_addr_get_afi(const IPAddressFamily *f); +int X509v3_addr_get_range(IPAddressOrRange *aor, const unsigned afi, + unsigned char *min, unsigned char *max, + const int length); + +/* + * Canonical forms. + */ +int X509v3_asid_is_canonical(ASIdentifiers *asid); +int X509v3_addr_is_canonical(IPAddrBlocks *addr); +int X509v3_asid_canonize(ASIdentifiers *asid); +int X509v3_addr_canonize(IPAddrBlocks *addr); + +/* + * Tests for inheritance and containment. + */ +int X509v3_asid_inherits(ASIdentifiers *asid); +int X509v3_addr_inherits(IPAddrBlocks *addr); +int X509v3_asid_subset(ASIdentifiers *a, ASIdentifiers *b); +int X509v3_addr_subset(IPAddrBlocks *a, IPAddrBlocks *b); + +/* + * Check whether RFC 3779 extensions nest properly in chains. + */ +int X509v3_asid_validate_path(X509_STORE_CTX *); +int X509v3_addr_validate_path(X509_STORE_CTX *); +int X509v3_asid_validate_resource_set(STACK_OF(X509) *chain, + ASIdentifiers *ext, + int allow_inheritance); +int X509v3_addr_validate_resource_set(STACK_OF(X509) *chain, + IPAddrBlocks *ext, int allow_inheritance); + +#endif /* OPENSSL_NO_RFC3779 */ + +DEFINE_STACK_OF(ASN1_STRING) + +/* + * Admission Syntax + */ +typedef struct NamingAuthority_st NAMING_AUTHORITY; +typedef struct ProfessionInfo_st PROFESSION_INFO; +typedef struct Admissions_st ADMISSIONS; +typedef struct AdmissionSyntax_st ADMISSION_SYNTAX; +DECLARE_ASN1_FUNCTIONS(NAMING_AUTHORITY) +DECLARE_ASN1_FUNCTIONS(PROFESSION_INFO) +DECLARE_ASN1_FUNCTIONS(ADMISSIONS) +DECLARE_ASN1_FUNCTIONS(ADMISSION_SYNTAX) +DEFINE_STACK_OF(ADMISSIONS) +DEFINE_STACK_OF(PROFESSION_INFO) +typedef STACK_OF(PROFESSION_INFO) PROFESSION_INFOS; + +const ASN1_OBJECT *NAMING_AUTHORITY_get0_authorityId( + const NAMING_AUTHORITY *n); +const ASN1_IA5STRING *NAMING_AUTHORITY_get0_authorityURL( + const NAMING_AUTHORITY *n); +const ASN1_STRING *NAMING_AUTHORITY_get0_authorityText( + const NAMING_AUTHORITY *n); +void NAMING_AUTHORITY_set0_authorityId(NAMING_AUTHORITY *n, + ASN1_OBJECT* namingAuthorityId); +void NAMING_AUTHORITY_set0_authorityURL(NAMING_AUTHORITY *n, + ASN1_IA5STRING* namingAuthorityUrl); +void NAMING_AUTHORITY_set0_authorityText(NAMING_AUTHORITY *n, + ASN1_STRING* namingAuthorityText); + +const GENERAL_NAME *ADMISSION_SYNTAX_get0_admissionAuthority( + const ADMISSION_SYNTAX *as); +void ADMISSION_SYNTAX_set0_admissionAuthority( + ADMISSION_SYNTAX *as, GENERAL_NAME *aa); +const STACK_OF(ADMISSIONS) *ADMISSION_SYNTAX_get0_contentsOfAdmissions( + const ADMISSION_SYNTAX *as); +void ADMISSION_SYNTAX_set0_contentsOfAdmissions( + ADMISSION_SYNTAX *as, STACK_OF(ADMISSIONS) *a); +const GENERAL_NAME *ADMISSIONS_get0_admissionAuthority(const ADMISSIONS *a); +void ADMISSIONS_set0_admissionAuthority(ADMISSIONS *a, GENERAL_NAME *aa); +const NAMING_AUTHORITY *ADMISSIONS_get0_namingAuthority(const ADMISSIONS *a); +void ADMISSIONS_set0_namingAuthority(ADMISSIONS *a, NAMING_AUTHORITY *na); +const PROFESSION_INFOS *ADMISSIONS_get0_professionInfos(const ADMISSIONS *a); +void ADMISSIONS_set0_professionInfos(ADMISSIONS *a, PROFESSION_INFOS *pi); +const ASN1_OCTET_STRING *PROFESSION_INFO_get0_addProfessionInfo( + const PROFESSION_INFO *pi); +void PROFESSION_INFO_set0_addProfessionInfo( + PROFESSION_INFO *pi, ASN1_OCTET_STRING *aos); +const NAMING_AUTHORITY *PROFESSION_INFO_get0_namingAuthority( + const PROFESSION_INFO *pi); +void PROFESSION_INFO_set0_namingAuthority( + PROFESSION_INFO *pi, NAMING_AUTHORITY *na); +const STACK_OF(ASN1_STRING) *PROFESSION_INFO_get0_professionItems( + const PROFESSION_INFO *pi); +void PROFESSION_INFO_set0_professionItems( + PROFESSION_INFO *pi, STACK_OF(ASN1_STRING) *as); +const STACK_OF(ASN1_OBJECT) *PROFESSION_INFO_get0_professionOIDs( + const PROFESSION_INFO *pi); +void PROFESSION_INFO_set0_professionOIDs( + PROFESSION_INFO *pi, STACK_OF(ASN1_OBJECT) *po); +const ASN1_PRINTABLESTRING *PROFESSION_INFO_get0_registrationNumber( + const PROFESSION_INFO *pi); +void PROFESSION_INFO_set0_registrationNumber( + PROFESSION_INFO *pi, ASN1_PRINTABLESTRING *rn); + +# ifdef __cplusplus +} +# endif +#endif diff --git a/plugin/openssl/include/openssl/x509v3err.h b/plugin/openssl/include/openssl/x509v3err.h new file mode 100644 index 000000000..3b9f7139d --- /dev/null +++ b/plugin/openssl/include/openssl/x509v3err.h @@ -0,0 +1,164 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_X509V3ERR_H +# define HEADER_X509V3ERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_X509V3_strings(void); + +/* + * X509V3 function codes. + */ +# define X509V3_F_A2I_GENERAL_NAME 164 +# define X509V3_F_ADDR_VALIDATE_PATH_INTERNAL 166 +# define X509V3_F_ASIDENTIFIERCHOICE_CANONIZE 161 +# define X509V3_F_ASIDENTIFIERCHOICE_IS_CANONICAL 162 +# define X509V3_F_BIGNUM_TO_STRING 167 +# define X509V3_F_COPY_EMAIL 122 +# define X509V3_F_COPY_ISSUER 123 +# define X509V3_F_DO_DIRNAME 144 +# define X509V3_F_DO_EXT_I2D 135 +# define X509V3_F_DO_EXT_NCONF 151 +# define X509V3_F_GNAMES_FROM_SECTNAME 156 +# 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_I2V_AUTHORITY_KEYID 173 +# define X509V3_F_LEVEL_ADD_NODE 168 +# define X509V3_F_NOTICE_SECTION 132 +# define X509V3_F_NREF_NOS 133 +# define X509V3_F_POLICY_CACHE_CREATE 169 +# define X509V3_F_POLICY_CACHE_NEW 170 +# define X509V3_F_POLICY_DATA_NEW 171 +# 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_SKEY_ID 115 +# define X509V3_F_SET_DIST_POINT_NAME 158 +# 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_TREE_INIT 172 +# 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_V2I_TLS_FEATURE 165 +# define X509V3_F_V3_GENERIC_EXTENSION 116 +# define X509V3_F_X509V3_ADD1_I2D 140 +# define X509V3_F_X509V3_ADD_LEN_VALUE 174 +# 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_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 + +/* + * X509V3 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_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_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_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_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 + +#endif diff --git a/plugin/openssl/openssl.mk b/plugin/openssl/openssl.mk new file mode 100644 index 000000000..a090fc48f --- /dev/null +++ b/plugin/openssl/openssl.mk @@ -0,0 +1,4 @@ +openssl_SOURCES = openssl_provider.cc +openssl_HEADERS = openssl_provider.h +openssl_LDFLAGS = -lcrypto +openssl_CXXFLAGS = -Iplugin/openssl/include -isystemplgun/openssl/include diff --git a/plugin/openssl/openssl_provider.cc b/plugin/openssl/openssl_provider.cc new file mode 100644 index 000000000..25a2d78f6 --- /dev/null +++ b/plugin/openssl/openssl_provider.cc @@ -0,0 +1,295 @@ +/* + * Copyright (c) 2022-2023 Niko Bonnieure, Par le Peuple, NextGraph.org developers + * All rights reserved. + * Licensed under the Apache License, Version 2.0 + * + * or the MIT license , + * at your option. All files in the project carrying such + * notice may not be copied, modified, or distributed except + * according to those terms. +// Copyright (c) 2011-present, Facebook, Inc. All rights reserved. +// Copyright (c) 2020 Intel Corporation +// This source code is licensed under both the GPLv2 (found in the +// COPYING file in the root directory) and Apache 2.0 License +// (found in the LICENSE.Apache file in the root directory). + */ + +#ifndef ROCKSDB_LITE + +#include "openssl_provider.h" + +#include +#include +#include "rocksdb/utilities/customizable_util.h" +#include +#include +#include +#include +#include +#include "portable_endian.h" + +#endif + +namespace ROCKSDB_NAMESPACE { + +#ifndef ROCKSDB_LITE + +static void RegisterEncryptionAES() { + static std::once_flag once; + std::call_once(once, [&]() { + + ERR_load_crypto_strings(); + + ObjectLibrary::Default()->AddFactory( + OpensslProvider::kName(), + [](const std::string& /* uri */, std::unique_ptr* f, + std::string* /* errmsg */) { + *f = OpensslProvider::CreateProvider(); + return f->get(); + }); + + }); +} + +Status EncryptionProvider::CreateFromString( + const ConfigOptions& config_options, const std::string& value, + std::shared_ptr* result) { + RegisterEncryptionAES(); + return LoadSharedObject(config_options, value, result); +} + +// extern "C" FactoryFunc ippcp_reg; + +// FactoryFunc ippcp_reg = +// ObjectLibrary::Default()->AddFactory( +// OpensslProvider::kName(), +// [](const std::string& /* uri */, std::unique_ptr* f, +// std::string* /* errmsg */) { +// *f = OpensslProvider::CreateProvider(); +// return f->get(); +// }); + +// OpensslCipherStream implements BlockAccessCipherStream using AES block +// cipher and a CTR mode of operation. +// +class OpensslCipherStream : public BlockAccessCipherStream { + public: + static constexpr size_t kBlockSize = 16; // in bytes + //static constexpr size_t kCounterLen = 64; // in bits + + OpensslCipherStream(const EVP_CIPHER *aes_cipher, const unsigned char* key, const char* init_vector); + + ~OpensslCipherStream(); + + virtual Status Encrypt(uint64_t fileOffset, char* data, + size_t dataSize) override; + virtual Status Decrypt(uint64_t fileOffset, char* data, + size_t dataSize) override; + virtual size_t BlockSize() override { return kBlockSize; } + + protected: + // These functions are not needed and will never be called! + virtual void AllocateScratch(std::string&) override {} + virtual Status EncryptBlock(uint64_t, char*, char*) override { + return Status::NotSupported("Operation not supported."); + } + virtual Status DecryptBlock(uint64_t, char*, char*) override { + return Status::NotSupported("Operation not supported."); + } + + private: + const EVP_CIPHER *aes_cipher_; + const unsigned char* key_; + char init_vector_[kBlockSize]; + EVP_CIPHER_CTX* ctx_; + + Status handleErrors(const char * str); +}; + +OpensslCipherStream::OpensslCipherStream(const EVP_CIPHER *aes_cipher, + const unsigned char* key, + const char* init_vector) + : aes_cipher_(aes_cipher), key_(key), ctx_(nullptr) { + memcpy(init_vector_,init_vector,kBlockSize); + ctx_ = EVP_CIPHER_CTX_new(); +} + +OpensslCipherStream::~OpensslCipherStream() { + //EVP_CIPHER_free(aes_cipher_); + if (ctx_ != nullptr) EVP_CIPHER_CTX_free(ctx_); +} + +Status OpensslCipherStream::handleErrors(const char * str) { + ERR_print_errors_fp(stderr); + if (ctx_ != nullptr) { + EVP_CIPHER_CTX_free(ctx_); + ctx_ = nullptr; + } + return Status::Aborted(str); +} + +// #include +// void printb(const char * name, const char * buffer, size_t n) { +// int nn = static_cast(n); +// printf("%s (%d)\n",name,nn); +// for(int i = 0; i(buffer[i])); + +// printf("\n"); +// } + +Status OpensslCipherStream::Encrypt(uint64_t fileOffset, char* data, + size_t dataSize) { + if (dataSize == 0) return Status::OK(); + + if ( 1 != EVP_CIPHER_CTX_reset(ctx_)) { return handleErrors("Failed to reset context."); } + + size_t index = fileOffset / kBlockSize; + size_t offset = fileOffset % kBlockSize; + + // printf("\nfileOffset %" PRIu64 " INDEX %zu OFFSET %zu\n",fileOffset,index,offset); + // printb("data",data,dataSize); + + unsigned char ctr_block[kBlockSize]; + + uint64_t init_vector_lower_part; + memcpy(&init_vector_lower_part, init_vector_+8, sizeof init_vector_lower_part); + // printb("right part of IV",init_vector_+8,8); + + uint64_t init_vector_lower_part_h = be64toh(init_vector_lower_part); + // printf("right part of IV as host %" PRIu64 "\n",init_vector_lower_part_h); + + memcpy(ctr_block, init_vector_, 8); + ctr_block[7] &= 254; // we zero the right-most bit, for the eventual remainder + // printb("left part of IV",(const char*)ctr_block,8); + + if (index > ULLONG_MAX - init_vector_lower_part_h) { + // we have an overflow already now, even before dataSize is added + // we set the remainder bit + // use |= 1 to set the right-most last bit to 1 (the remainder) + ctr_block[7] |= 1; + // printf("will overflow\n"); + // printb("new left part of IV",(const char*)ctr_block,8); + } + + uint64_t be_counter = htobe64(index + init_vector_lower_part_h); + // printf("counter as host %" PRIu64 "\n",index + init_vector_lower_part_h); + // printf("counter as BE %" PRIu64 "\n",be_counter); + char* ptr_counter = (char*)&be_counter; + for (size_t i = 8; i < 16; ++i) + ctr_block[i] = ptr_counter[i-8]; + + // printb("right part of IV",(const char*)ctr_block+8,8); + + int len; + + if( 1 != EVP_EncryptInit_ex(ctx_, aes_cipher_, NULL, key_, ctr_block)) return handleErrors("Failed to init cipher."); + EVP_CIPHER_CTX_set_padding(ctx_, 0); + + if (offset == 0) { + //unsigned char *out = (unsigned char*)malloc(dataSize); + if( 1 != EVP_EncryptUpdate(ctx_, reinterpret_cast(data), &len, reinterpret_cast(data), static_cast(dataSize))) return handleErrors("Failed to encrypt."); + //memcpy(data, out, dataSize); + //EVP_EncryptFinal_ex(ctx_, reinterpret_cast(data) + len, &len); + + } else { + + unsigned char zero_block[kBlockSize]{0}; + //unsigned char zero_block_out[kBlockSize]{0}; + if( 1 != EVP_EncryptUpdate(ctx_, zero_block, &len, zero_block, static_cast(kBlockSize))) return handleErrors("Failed to encrypt zero block."); + //unsigned char * end = reinterpret_cast(zero_block) + len; + + size_t n = std::min(kBlockSize - offset, dataSize); + for (size_t i = 0; i < n; ++i) data[i] ^= zero_block[offset + i]; + memset(zero_block, 0, kBlockSize); + + n = kBlockSize - offset; + if (dataSize > n) { + char* ptr = (char*)(data + n); + //unsigned char *out = (unsigned char*)malloc(dataSize - n); + if( 1 != EVP_EncryptUpdate(ctx_, reinterpret_cast(ptr), &len, reinterpret_cast(ptr), static_cast(dataSize - n))) return handleErrors("Failed to encrypt remaining."); + //memcpy(ptr, out, dataSize - n); + //end = reinterpret_cast(ptr) + len; + } + + //EVP_EncryptFinal_ex(ctx_, end, &len); + } + + return Status::OK(); +} + +Status OpensslCipherStream::Decrypt(uint64_t fileOffset, char* data, + size_t dataSize) { + // Decryption is implemented as encryption in CTR mode of operation + return Encrypt(fileOffset, data, dataSize); +} + +std::unique_ptr OpensslProvider::CreateProvider() { + return std::unique_ptr(new OpensslProvider); +} + +Status OpensslProvider::handleErrors (const char * str) const { + ERR_print_errors_fp(stderr); + return Status::Aborted(str); +} + +Status OpensslProvider::AddCipher(const std::string& /*descriptor*/, + const char* cipher, size_t len, + bool /*for_write*/) { + // We currently don't support more than one encryption key + if (aes_cipher_ != nullptr) { + return Status::InvalidArgument("Multiple encryption keys not supported."); + } + + key_ = reinterpret_cast(cipher); + + if (len == 16) { aes_cipher_ = EVP_aes_128_ctr(); } + else if (len == 24) { aes_cipher_ = EVP_aes_192_ctr(); } + else if (len == 32) { aes_cipher_ = EVP_aes_256_ctr(); } + else return Status::InvalidArgument("Invalid key size in provider."); + + //if( 1 != EVP_CIPHER_up_ref(aes_cipher_)) return handleErrors("Failed to create provider."); + + return Status::OK(); +} + +Status OpensslProvider::CreateNewPrefix(const std::string& /*fname*/, + char* prefix, size_t prefixLength) const { + if (1 != RAND_bytes(reinterpret_cast(prefix), static_cast(prefixLength)) ){ + return handleErrors("Failed to get random numbers.");//Status::Aborted(ERR_reason_error_string(ERR_get_error())); + } + //if( 1 != EVP_CIPHER_up_ref(aes_cipher_)) return handleErrors("Failed to create OpensslCipherStream."); + + // printb("new prefix",prefix,32); + + OpensslCipherStream cs(aes_cipher_, key_, prefix); + Status s = cs.Encrypt(0, prefix + OpensslCipherStream::kBlockSize, + prefixLength - OpensslCipherStream::kBlockSize); + // printb("encoded prefix",prefix + OpensslCipherStream::kBlockSize,16); + return s; +} + +Status OpensslProvider::CreateCipherStream( + const std::string& /*fname*/, const EnvOptions& /*options*/, Slice& prefix, + std::unique_ptr* result) { + assert(result != nullptr); + assert(prefix.size() >= OpensslCipherStream::kBlockSize); + //if( 1 != EVP_CIPHER_up_ref(aes_cipher_)) return handleErrors("Failed to create OpensslCipherStream."); + result->reset(new OpensslCipherStream(aes_cipher_, key_, prefix.data())); + Status status = (*result)->Decrypt( + 0, (char*)prefix.data() + OpensslCipherStream::kBlockSize, + prefix.size() - OpensslCipherStream::kBlockSize); + // printb("decoded prefix",(char*)prefix.data() + OpensslCipherStream::kBlockSize,16); + return status; +} + +OpensslProvider::~OpensslProvider() { + ////EVP_CIPHER_free(aes_cipher_); + //FIXME: zero the key + //memset(key_, 0, key_len_); + (void)(key_len_); +} + +#endif // ROCKSDB_LITE + +} // namespace ROCKSDB_NAMESPACE diff --git a/plugin/openssl/openssl_provider.h b/plugin/openssl/openssl_provider.h new file mode 100644 index 000000000..efee9aecd --- /dev/null +++ b/plugin/openssl/openssl_provider.h @@ -0,0 +1,62 @@ +// Copyright (c) 2011-present, Facebook, Inc. All rights reserved. +// Copyright (c) 2020 Intel Corporation +// This source code is licensed under both the GPLv2 (found in the +// COPYING file in the root directory) and Apache 2.0 License +// (found in the LICENSE.Apache file in the root directory). + +#pragma once + +#if !defined(ROCKSDB_LITE) + +#include +#include + +#include + +namespace ROCKSDB_NAMESPACE { + + +// This encryption provider uses AES block cipher and a CTR mode of operation +// with a cryptographically secure IV that is randomly generated. +// +// Note: a prefix size of 4096 (4K) is chosen for optimal performance. +// +class OpensslProvider : public EncryptionProvider { + public: + static constexpr size_t kPrefixSize = 4096; + + static std::unique_ptr CreateProvider(); + + static const char* kName() { return "ippcp"; } + + virtual const char* Name() const override { return kName(); } + + virtual size_t GetPrefixLength() const override { return kPrefixSize; } + + virtual Status AddCipher(const std::string& /*descriptor*/, + const char* /*cipher*/, size_t /*len*/, + bool /*for_write*/) override; + + virtual Status CreateNewPrefix(const std::string& fname, char* prefix, + size_t prefixLength) const override; + + virtual Status CreateCipherStream( + const std::string& fname, const EnvOptions& options, Slice& prefix, + std::unique_ptr* result) override; + + virtual ~OpensslProvider(); + + private: + const EVP_CIPHER *aes_cipher_; + const unsigned char *key_; + size_t key_len_; + OpensslProvider() + : aes_cipher_(nullptr), key_(nullptr), key_len_(0) {} + OpensslProvider(const OpensslProvider&) = delete; + OpensslProvider& operator=(const OpensslProvider&) = delete; + Status handleErrors (const char * str) const; +}; + +} // namespace ROCKSDB_NAMESPACE + +#endif // !defined(ROCKSDB_LITE) diff --git a/plugin/openssl/portable_endian.h b/plugin/openssl/portable_endian.h new file mode 100644 index 000000000..1b8a3a6c2 --- /dev/null +++ b/plugin/openssl/portable_endian.h @@ -0,0 +1,168 @@ +// "License": Public Domain +// I, Mathias Panzenböck, place this file hereby into the public domain. Use it at your own risk for whatever you like. +// In case there are jurisdictions that don't support putting things in the public domain you can also consider it to +// be "dual licensed" under the BSD, MIT and Apache licenses, if you want to. This code is trivial anyway. Consider it +// an example on how to get the endian conversion functions on different platforms. + +#ifndef PORTABLE_ENDIAN_H__ +#define PORTABLE_ENDIAN_H__ + +#if (defined(_WIN16) || defined(_WIN32) || defined(_WIN64)) && !defined(__WINDOWS__) + +# define __WINDOWS__ + +#endif + +#if defined(__linux__) || defined(__CYGWIN__) + +# include + +#elif defined(__APPLE__) + +# include + +# define htobe16(x) OSSwapHostToBigInt16(x) +# define htole16(x) OSSwapHostToLittleInt16(x) +# define be16toh(x) OSSwapBigToHostInt16(x) +# define le16toh(x) OSSwapLittleToHostInt16(x) + +# define htobe32(x) OSSwapHostToBigInt32(x) +# define htole32(x) OSSwapHostToLittleInt32(x) +# define be32toh(x) OSSwapBigToHostInt32(x) +# define le32toh(x) OSSwapLittleToHostInt32(x) + +# define htobe64(x) OSSwapHostToBigInt64(x) +# define htole64(x) OSSwapHostToLittleInt64(x) +# define be64toh(x) OSSwapBigToHostInt64(x) +# define le64toh(x) OSSwapLittleToHostInt64(x) + +# define __BYTE_ORDER BYTE_ORDER +# define __BIG_ENDIAN BIG_ENDIAN +# define __LITTLE_ENDIAN LITTLE_ENDIAN +# define __PDP_ENDIAN PDP_ENDIAN + +#elif defined(__OpenBSD__) + +# include + +#elif defined(__NetBSD__) || defined(__FreeBSD__) || defined(__DragonFly__) + +# include + +# define be16toh(x) betoh16(x) +# define le16toh(x) letoh16(x) + +# define be32toh(x) betoh32(x) +# define le32toh(x) letoh32(x) + +# define be64toh(x) betoh64(x) +# define le64toh(x) letoh64(x) + +#elif defined(__WINDOWS__) + +# include +# include + +# if BYTE_ORDER == LITTLE_ENDIAN + +# define htobe16(x) htons(x) +# define htole16(x) (x) +# define be16toh(x) ntohs(x) +# define le16toh(x) (x) + +# define htobe32(x) htonl(x) +# define htole32(x) (x) +# define be32toh(x) ntohl(x) +# define le32toh(x) (x) + +# define htobe64(x) htonll(x) +# define htole64(x) (x) +# define be64toh(x) ntohll(x) +# define le64toh(x) (x) + +# elif BYTE_ORDER == BIG_ENDIAN + + /* that would be xbox 360 */ +# define htobe16(x) (x) +# define htole16(x) __builtin_bswap16(x) +# define be16toh(x) (x) +# define le16toh(x) __builtin_bswap16(x) + +# define htobe32(x) (x) +# define htole32(x) __builtin_bswap32(x) +# define be32toh(x) (x) +# define le32toh(x) __builtin_bswap32(x) + +# define htobe64(x) (x) +# define htole64(x) __builtin_bswap64(x) +# define be64toh(x) (x) +# define le64toh(x) __builtin_bswap64(x) + +# else + +# error byte order not supported + +# endif + +# define __BYTE_ORDER BYTE_ORDER +# define __BIG_ENDIAN BIG_ENDIAN +# define __LITTLE_ENDIAN LITTLE_ENDIAN +# define __PDP_ENDIAN PDP_ENDIAN + +#elif defined(_NEWLIB_VERSION) + + /* + * GNU ARM toolchain, and possibly other bare-metal toolchains + * built on newlib. Tested with + * (GNU Tools for ARM Embedded Processors 6-2017-q2-update + */ + +# include + +# if BYTE_ORDER == LITTLE_ENDIAN + +# define htobe16(x) __bswap16(x) +# define htole16(x) (x) +# define be16toh(x) __bswap16(x) +# define le16toh(x) (x) + +# define htobe32(x) __bswap32(x) +# define htole32(x) (x) +# define be32toh(x) __bswap32(x) +# define le32toh(x) (x) + +# define htobe64(x) __bswap64(x) +# define htole64(x) (x) +# define be64toh(x) __bswap64(x) +# define le64toh(x) (x) + +# elif BYTE_ORDER == BIG_ENDIAN + +# define htobe16(x) (x) +# define htole16(x) __bswap16(x) +# define be16toh(x) (x) +# define le16toh(x) __bswap16(x) + +# define htobe32(x) (x) +# define htole32(x) __bswap32(x) +# define be32toh(x) (x) +# define le32toh(x) __bswap32(x) + +# define htobe64(x) (x) +# define htole64(x) __bswap64(x) +# define be64toh(x) (x) +# define le64toh(x) __bswap64(x) + +# else + +# error byte order not supported + +# endif + +#else + +# error platform not supported + +#endif + +#endif \ No newline at end of file diff --git a/plugin/openssl/test_openssl/Makefile b/plugin/openssl/test_openssl/Makefile new file mode 100644 index 000000000..3c5375829 --- /dev/null +++ b/plugin/openssl/test_openssl/Makefile @@ -0,0 +1,12 @@ +include ../../../make_config.mk + +PLATFORM_LDFLAGS += -lrocksdb -lcrypto -L../../.. -L/Users/nl/Desktop/nextgraph/dev/rust-rocksdb/target/debug/build/openssl-sys-019f70ebcbe84526/out/openssl-build/install/lib/ +.PHONY: clean + +all: ippcp_example + +ippcp_example: ippcp_example.cc + $(CXX) $(CXXFLAGS) $@.cc -o$@ -I../../../include -O2 $(PLATFORM_LDFLAGS) $(PLATFORM_CXXFLAGS) -I../include + +clean: + rm -rf ./ippcp_example diff --git a/plugin/openssl/test_openssl/ippcp_example b/plugin/openssl/test_openssl/ippcp_example new file mode 100755 index 0000000000000000000000000000000000000000..11600a4539671455de37b2ef7dfa1cdb2d1d3fe3 GIT binary patch literal 13281928 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

<4u+NxNhU9y=eVSY`i&gghM(Z%Fj+C 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

|U<5?B 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

`{EhI2+FHKF6lcItK(j_$XYjKT|$f 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

  • 9eL#$#j-wsIL9|nt1xOD*ms4 zrB|VBX-+MBxqMay-}1!JHBCgTk*S)EbrVr0INX0<#o_tpn!lw~_Qk9IO{50KCrvyi zl9#;XF{zUunTE7o&$4>E*_|(D9YLFKBS;2YZw;{23e8O4tWrKjg{th5Q=ZmQKOoD9 z0c6Avn`OkqgdQ==h(`!LYL*d?5_-%mBOW94d$WxAJ>9I|#LRC}y_%O;S^Z#a{H!wK ze2WX^NSP&3K3kzznzb%EBPz`OptA>w?%!9wEV8LS-D~zb=Wr3{R@6OT`=BqSTZ>hn zS(68d?kXk$5?yH_SaeTO9QpZJertLWO*`Q52#GYwlzj5%4mc9&u|Tu|N5cDFrQ^&$ z%hJT!enSoZ*iQ&T?yfWtad8nH!E8W`_F=ozT$Xp!B#Rv)6JA^8d|*I2VGH;c)uo%S z#s89SOAh(zjbu!K%0u}fuI$YkD0P4H8@WBP|3yU(t+aS`Y4QzRBOz?9nSz3)dsJMB zoL`&cLp7yx43e72>}B^EOP6muNKh7bIiftt4Cbkagvu7WdV>-X)LS;qRUIG9cn zb-Z}5!cO5P^n#hjw9KpTFF0%uxMUi9XDvg-vya{G9Yq9;cYUZZvvlN|WR`1H)1xj- zpEjC(RjSQti`6&F*x=a`z!tHzy|}a3$isEQ7jpOY)rz5-*i!s`$)b0{YjT$2+riN! zYAEw%CaKmYDfKkXJ8LcToAP#vR^{!$tg5Mu5v~e;lr>aeyef9}FF3;DUbk+Hyli5f z&XlzO1TgX9Y;MoMt+l5njy|~ZU?BJ4B}^6OF$_loU=|4JUqj~j*{ePYl{TA_9BtUB zPy~m>HMre!rJwch{xUbc%%Si6l8n$(u&{%fT1Z|uA$iFJtrXmT+k*`5s;kM1d&i%# zoTYSYb?0G3`FDQ`0~`T+^D6%^+9J<~$#W+&rFj2)E}iEU{IQnIsfwm9b^EoSIaF#h z%LHW)XIB=Z!*)YFR?iJBZAL|e(Xrqu0LBW)>;k8e6k$g?TEoY>&y^?cc}z4BY4wexTL zl4j7r!yhCIHv7DP(z4{*B2)wMR!1lOr}i)0T@KFaL`(Z97{eMM*p`rn2DT-np@D75 zvkFuzbON3Y@wQp|w`j3k7qn2zE*59ZU{Q?PXJe^@wL$Q#mb#am4Vepi@G6iTvpF#Y zciiBgLp^w8PCuu>|B)Qk%uAIh$+QluSWJTorl_o)?pA??~KMcctf z6kb?6UCVpCdec`E9AklB=*+l-jmTKXVZ)YLTz-dGAQ#4CUtITk?CUkuHh&6hAm|Q{ zlBbyOR5f z4%lTsx|nqLhlcdZL4FNKTZim(_%I^z!oFE_w0G91JP8S^(qN(Z=%Mx4C|(SmrWpl- zL5PO&UJODuf8MtIFvAhNLpj3{EEl&9314jW`^hJI5x)p@rr;(I{bqRnq`2_>O&4)v zotir|*a9Tti^**Vg%|J#EY-X?yNqE+3GW@yX3_wt$d1J_^(k}w(?1*zXg7RLU41ri zIMo;7@8^?;{!6?#NMXbDM=(s`#QW5U%(G*u_Y;+^<4-u|i*3xmBuDPkxp~B9uVYyH z{*bTa7kxp|Kl9sEzvZuADCTYo1sEA-(@>{o)qj9US%&xdHxbG!WFLE%G@hXx-s|~! z5T(OO$}J$AIeyKG;ggh9bZ~yI(1dA-%^%7wPzSBC<%Z|csm|LJ#bfKZdI>bb>k(V& zS^rj5Wd`g=2Gc8!#b$D&^hs`)iM4I

    8Jt|+HhRqa-fTaRt!Fv{v4p= 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

    BX!wL4}c#iD(|SBac_+=c?%7y_`KpTlC}K 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

    7K9eLdAh?vN^b@f66tI!k-MqU~?T&Lxwf&H20 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ĝ*VA5}3&+AYC zRXopBVb6kPE_?Q^~s2I+8C$nSNiPQwHRY+BLCtc!#Cf? zNMl`ukZmfzCUdk&dtbykPe&!7Hu8Mrygy)^fhK}?D_0wh$BAx=edVxfIGqmA%I*>A za8w9 z!3{3tiK-4}EDlct}I0sy%02BKw2uonR=a3NSL@CWq=Pk$nEE@1-U0>ZP$ z|LuM)-Lm!P)A#AmfBkxZ(ncgp+c7>_8pp@)^(`$mu|AWfI2HM&1`X+eZId6XMJDBF ztCpjkB1a!3e)Ew`!YM~PRV`V;UPtBz){!IA5VZu|lIU%iJG^Pt{z1KhGZ9X4 z?NXcwH5)*=&l)!S9u>q#+D75y(3othlr}HtZ<70k=cmh8$g)m0QJU>s3OEihyX7>L zZlxBs(%}+F*gB9+srEx41SdOq@5wk=?-F6Le^i48=l7k7`%hMz72Ig8|whr+v7-c!N7W=KDiegi|6qX07G(8+W5okj41!>T4!9hWta+tO24tnbdoW7KJT*5&>pPfm0w73xM zOeyvOK2dxbR|VdLzb0~>DZrAip>9GORCN!@<`qULcBw8lFf=g&5vf;<=19AJu4bN| zIau}G|6GTe5isF&$cLpstb-M(X%KBF+UJX0QRj4`%3GIu;&j)tv3MQ?gI2>L)$_Dv<4=`rj!bL87_}Oq z>6Q%*H<{ZCl!9#Y**zWtV?olDnfBvh6s_*&Hya>Dv&45?s^L`2<3XmXA$+~eL8Kh; zI8$FDt$wt$`bjB*jzW5}@z6=a#(U5>Oz4N$1v7NZCz#;{X_XK835Iz(@m$~b$27Dm z@}eA`_)2|-_Nle~C13z7aDA-)j&Dz7Nl6*+O|K~_mz&dTN-E^8@tTqea(jAB32vdz zW&9+$u)U__be_$rM7=->xw73~1##Y`CQs6o=dqVcmv}sERY}^PpiTm!y=h;piV%t` zI9)49613ZNnZ$*T#t5=9nWtvx>VXx z(&M4PtpKY1n-kCVx*u}+N2^g!+&>RRj+6D|;R4wYAvCZr>cpul?!m_3(oWHK17`M7 zPbW^}`Mog@ly+!GF%KP{AM;?`@l_=7AS`4;RoIi2yb8{fx(d#dx(d#N({0XGa2_0P zbFPB(^m7%QCqMo^2XAXmyS(npwILT{ebvP)XmMB)3y6w)a1zHcyF@G4fT=Wwz1fAe zk)yowV)ay5<-Yy6)(^p@1JqNl;nC**W?&-2dWWa^7_+td;;XN|#$S9D2Kir`truT0 zr}*OH>*nF>KC=~`ix^;;PaU515K`l_@1`;a4e33!r)il$wKiy4`KE>2gCeWA zV1T71t|jz7dhgcO9{*gH-splv>dq7x=p7E2^O^uPJOBWkZ47f8hrFa_dm`9}?}1?` zB%5vwPc8D=bpQ>UCLWAR?cMh}d-u8E3cu{#=b|)thFNjCk1?3gJ_){XuGq?-K>aeD z9k{SN#5!dME=@bP)jhFqKgv_D>dO-32u)F;+k| zXX9-REbOXN5X0NIHc{=wJPJ4>JY!xvROK*{V|DDWR_tlxwjXBqwxXJ~`LD6k%?cb7| zjBAp(ALqOF{Mw0U`0-x+!kuJSK1KOB+SS_-!;Ps++q3-JndcJZL4~Q^8jUjm&)J

    cgMlvr0i2+pf+-pej^65xWe2K22y(OFu<34RXUS(8QDPhd;tA$dhg^6nJ7jV(%U{lJL+rEte(05T@Tnh2;A{p4u8jYZ)U)l2@hLTl zc)|mqBV;r@f{q9iyEX`1B)C6Z661l3)0B;6(nxY#H9m%ZXMl2+T=7YT7DG%hqhUPD z(_00C%^rW(og!g_YWaA#J+wS^n`G5Isf#|YHc-Rp1I$S=8It-N9+3+!6B{0VkSQVp zZ~&?}Z7Eb?TRJ=s!bnVtFc@ncsrm9LNy6}Xbs>t{0tu1Ua*yFtdY2)iG|VcILr_@!D*Pl4e=n-qogJ^ zl^8h8vfUArnsr`wS*JvjXx2G1;Z2+8tTuHQS%x_ zv?$xyjCzpS>bZW-)qdY)*FmywFk9jA&$)We0(^CJcwWG!#ATIS=~Ah4ea7>C7ih3GK7&*tsGhZtn69NZ*W#tPzeGIRvo zwR?ip6xUTuDNgW>nqo8yGz3;KEja-lR2MoQ$R#%vKB{52xxjh><++mPX z3sGemmk4DwppbC0%Sbrt-|>qPl(G;&q%9MY3vVQKBfnsgjr6y7@Ja3BYoV<~(KG@>b zsb^yJdnCm8xq2@rYQryFJ{)=%ZX|RQii?S#l?BR*z+&R)5WU9`S23|lV7d}@_DK{k zZM{>n$ElMMm)IBUzexzjdZ8s31HXSb3(msY>_j0Hd#Eimvb>cOF=pR)l;E(FMGXt> zhGR6ofJ`9ppTvAC*y9b&eeq?CkTN<#yICU?BSd$lvL%}wO?%aS1ZLE1L<5wG*JHQP zjo9UM?6v}N)=8wjisZo)!3VDx29Rqc&T1=Ul30k25Cv7m`Y*&t<6A~(Fk8dU8=isS z6|jo-L6G}slS8@{>XL$2ZJ?8hV5cPfMg(vC$+sf-J9JkfIA=dnbyYoqT9fBtclQuu z#n3$R?%ngrnsT?%S@X=xwpL=G0TXZ!Ddx0A1@JdXHhZ-M`HFC{NN$lwL+jEeG}7LDBc0n1A-|WFY}1kS|L!7zMbi<6_U-m zSwmS_)XGrAw$P19tOJ5694|qL*IFS^kbW!ETXLKUbkk5)7IiTcv7K~d66=6q3dc(j z;OOXBLsj zjY+Hnf+-v?L5LU3@1&nc*IFUjteZ8Il|{3i*m}A#iFH6Qh2td%{y_$1K{sYy<}KtM^8kXG;GZ!(p2dytZF z;_YELM#Gi6DJw;^;fB;+V$h6C!>lT2Kp}`6t_(!dVtjs+1VnTtM3x9ZB*)5l^*4&Y zNVNz*Boo;OcQ!>I+@$0Km^yr$uzP2Uz1riGV$X~;%qG`nNIf%R)gusbb&T6fnTO0M*Xq8Ilg5S`mo27RK$RoI~=h8kFSHVh*6XG^kDu zig8kYYz513yu?AgTF3#^PA1QgaR8+dh`8;H+e-;k#Tu04($Wo}3N@$##_gqS11L%qU?sV&>@uK=~7iU6t8~TQ%&PGu*|4@2{5kl$N#29T*^F~%WpQ~tbp!8hL zSiFgSxKmUyMP@{R^pc#3VP2F&sAeSF3ekX3g<_f!U=+x`Ke!7GDu@0y8O`rjX29G? z%EP#hPx3GwgC7r?`zp ziY^9q=QAJLE}IN%#5x5qh2td%@nTSS(idxJk_~Jxp%~Pi*aEs3 z$>B)8nB;T3%p+c~I@5vGoouDzVl}Ml`I|UuFzq5jtO=>do(AM_4gF)WB!&uD!?c;SZ3|dfrCCS{I;p2$V)@$`K#zY1&~bq4yVLQGdkdBs7MH+NyOPt4<dG=nMOObvxHz~!=546W7W+jBIZP!NWc&q z!6SWwTYlnqut{>iYRlc&xPrHa^eNn9LsAzW;m*;GWZP_T+OGsR4Lu@sOEa_39iXmS@%P+NnH^)t%4H_GOa8RfV{xH7R1&I>kd z7>7%~fTYklvWmtdW4&33MHv4`EOi!xw@VX7(*D`dejpYhQ5#(;o0Y;A4!$E-H+Khi ziEYAyUmO>YhGq3dcb$&lzC~Gl2C=OP$+P^!(pko8lWO4BZqf%99IWMuUs+>dB-OpF z7N-l@t#J4d4z{CKL62fT3KWccxt8~w;zU|j{2u(&9^Ch#l!BJ|VR zQK+IE?%v4;K3V|a>@%Aqi}(84lv>_nZ83>%*pnu;Oyhx0Z%*wz@JJoU@(Z^D-c+ryeFQ6rd;nJ8sK<`*rwm%w#R$n>+G=n?ba1^RS! zNN*EzmD;yROvt@cqF0uwooJB6(W$njeCo)~j@P1nlJX%P{F+u4h9CGJ z3^=|>qBitTKkk@3wmWqn?(K+4yARi5fzPKGh+1e9eoQDVwGf-{Y$Qb+Inp9^$FJAe zfF{G0-Xru4oLIKu)}|8=!sC`={+^WMpV`=s;h+w<8lh`peFceHz##$3Gm?YB}AqIeP;%~xDN4F9HoQ{t7Je)EbhqDYVpE|O#z1Br$P4tg!W{84fQp^@H z36p3LUn+wBTh;wEu2>0;U?QUi%SM~H@aQ%23)ozAIUUbFrW31F17{rio z5C3@C+1P@xb6mT6;8??zr%rC8@dh!nv@xqX7*vVRLqHnW8;ysfp9$xK81)zt%Fu(_ zksRJqc%_XwPDHf%-jb^<*6IXY@Fr+kS+9f`aMS}mR=Pca9j6Pa(34(;qkGa;_|ke( zB}j{wsWct8&T-4>LXg3DOhJaOL_0De4uzY8?*e{fx|PIMg8Fq(oR&>!Kl2A{+|g7bmTy{*bI# zFBO(oOGj}NpKvyI=%geqk6%hCTN^SU%>1dPuQGM+cSLTnOQffix|Sm@*cL=omJyl> zxyj9zNodKKD#T#KCO0_faF^m+l_F;eI3;KKMLGL(xUQU~Ut_0vT&wW?<9njI2Lweu zRwEN|p(7~;-!S4FtZ*Ol?-7xf#6`F9=LmOXM;Wq1c2p8rrtGLKOv;XNO!O_XLxx|G z9nr-iJ060gWyf_#^_Cr6B-C=_z0p`x)A#)#NH;1M;+{e{0)(O|nMww9wuU(((Gi9+ zQvXw`B_p+eq&r08^1482Vu;-L6Uc`gGHaltLKum@!6Qq_JMi85r;nQ+$i7Q&-Jj#- z|7<&sQ*VzNs2z({JK_=tW{wAGE$LMLaU3{xo7+FXTh>Bl%X1ssQ>~B!WOV8lojV)m z1yR5(QNW}Xikb4FRLT$*7dxmb^=!Zlrw$x#gcjiCmiU7ROh*XH(i2By`N*_#;b|JRgvea#$xxlD4}Orr)%gc)wK=xaSFt@X(X5zN zU^G4={qaA!kt^U6g=vEx`Uho$I2b~)^{4XT$(|U>;m%4m^sE*jckC#I5 zA1WIHfx9Iu(q>Qlq9K?B9Mhh_<{ECP#8krEr&EG<8TIYH$Q}gNM0V?NRA|wNU0&mu z*LN8Ob{41<7@a6#>Mo>y*$woM*kxSsl5xVug`7Rac@BM=z3-V~CiXV;D|Jj%q=DW>&3|pksZIQ&GjMzpNJo{u@h%**v_f6OnD<^W{)(^xVMs7z5u1;9L$pQVF)Ui!^X7t5i^HJBHgPGAwW=xW zvA*#{_QnjVEqp-$dj6W}1DcBt@&$13FrS6CD4suGl;*88N@q zXU)b0=l#H8xRe(+0=V!}De{p5)13GH??BnB!PPdRFclDP+AXQ@!tM|$0TxzN==R1N!a zIAl3sbP;{}jVc%Q2qyFOCQc(`lUdIOZ{)>9{@K3qPDM5Lo24M6v>zW@h2bA0zD`>GgbOtKq)3bk+B4kD|s;uE9sc6?Wb2Y2XQPEpaTs=`yUJH!VS z>?Wi{z@QHCA%Ged0&+UUhX8JhLO^bZ-X0YdT?+wu9pa-D6zwUsrwY5%^5eyVN!}IO z?vQ3)fPoJv=EV+2T^*}Wss(|&^xr;aLhA6^O!(L^m>)KB=&;h}gX!;!+%uf|?JiES zd%cemMNFE0yBMGHzKF~&Qk__c+c&9T5=1s5qg>1F|pZo`DSkaOxwonaHh|ik1Y`yMvq$|H86H2tsIu#m$;8(>iNSSF*15@F8$Sg5zj41oozbD6q+8y7`*fd=r42t4)L+`kZ~j9XUr0mh5LC`%rVko*d{BFPaq_0=eVb6N6f^!wth>P}LUO7N8D`Eo%UWRnlYg zB0|tTsi$c*+E*tpV1ihPBNW*fS;}-sr4tf-oUmaP4WTtm>lVS)Y7oqi?m}HMRh$iG zPW3#av7U+T2FK1@2Uy92;A6tM7w#T6)*{H#uyBcW2e|@IE#@2RgS&x?iIa@Q z=oBOj{e?Jrh{?zIaVbXRI8IMXK|l7Oc>oVXF7d97e4_678Rn(yLk#6k+zVyW#~=sTgtQ9U=!r98Z+#Dl>enhUp9p*BQuwjMz_Sn9nMpUE#15 zwcz-99%Q4CB|A{qEiKI#uf*zx)l%F-gohD<9$Q*nD~Vg+m1D?lWC-v^AO+~tu8}yZM3pNm&32e7#O4kGw2~jsAV}}ew57{0`%5&3_J+JhJ1_> z@DO!O=bXq?7)lMJR7hEIFw7sW)@jl*TUu^be5AS!aS5)7r2)kZv>^^d$1KyhrJYMj zUaPTVJ~{5PEo9T~#(Xkoc3`;AeptNTo{j`m_=ocyy;q8IEXY#_yLvA}alI6zsL85O zidGOOd-Nrjixk~(nIlD^2W!L6jiV_@bw(cVU`F*xj1aL|8-u#zJ&lZg$LDxC0UCc%ohpM1iB+iiXBxZ%BOlXUK`0Xb9{s0CUGHOlY)W zEsDTomO;#Nuw)69p)enhMpfqfj_&m0Sn>ue8$IfdPu@r;_8RO-%3zE-)-8Hu(&Bgn zrm;_^jZA+r?MXwy|FZ?|sit*3;C7oEzRvMt&w{t2Cos)d@pWK|Y5iGb63)#SjTdo5 z;2WD~LG$oo3kqptiQ%o*zB=1$Uy$v=sd)tm0Sg` zLw{*O0#LFQ&N|8kJ8uTfx;P=BBf@Zm#O~sl%^Z#}P22Y{wda`s@wG9d@tz=xJ>0*u{K^!(o|q7+Vk+ z3mlEc`@v|~QL%p1Fw`R8acZz5ehV3p38L`SMmD>ZSfAay619=-5SwdJ9kTpPNe)v% zUiX~dygP}g+Ig#JkKIe&1*bUEW$UZ|dEQO(=HckE>gcb%WXrxRY&7o2_0E zV{lgsnn^`n^fG5`NuaN3n~Lx-#}-l8IJU_08OD~HxiYrQximGlKtmsEaA0wU>mgrA zmzYlmy7k{cpnDGjvY$b>g9j=m%vR3gE^rr-D`yCCIF2{XJ%Z*UKb=A51?&6H0NZr> zN5o&FxWRsvicTZMr&MaQzlNwE*KNi&a{mA>yz)lc)gQj_W|1v_$J7vHXk^nW^D*sv zvabj`ZWv}v*4iO*8Izym$!$FxL-Wd~=A{n*lC;(5+5~`US3|-4s<-0CjY^q{8^w!3`IUbx8+O&^ZvB_xY(%a#+*e=64Z=8>OJN{;pIk#NWn>o2| z3g+Am`~BWBCs@H@&X4!}FES_XifW}0uwUj(01b5|;^TkQb@=Gw0V;R!e^t2={|lAV zJ5SVlwCey}j{7*&FA%Rs##EQ{S&L1uQnBzNmlCe;&cz+0`}pirI;rgC`7D1YPEcg@ z#)}|5zy+8#CwrsKJ|&tS7qihD2a{~}@Yiw6xieq>T5Ebu!;Gx>W)l39JIbcaUZ!C5JprKxl|5vTzIYRMjNR$_GG!bE+-NSvGaZepLr z^n@>dBw7?2nJd~tb@+~-kDo+Y0x!EGq8zy~MIpn3D@?*_-VF}e0ltoZNalt}Ti`7s znD`+sxF)m=j$(d5aDMbjMqa61N6|DwJf9Hf!dd)hZj5B(v-eu1JPie5A6`8Q%?ex< z4?t=qhQ=>N>iEkLK>(VJJv)9rV&l9|Cca+BIeNYSDu5HcMt$ye^&0=h2yAC%UXeiI zz`%KlAH?%CE{JBaYAvGUU+HQgY(B!!m~>EeXExXp z$*lDui0^+HA_p;PX4_9c1t31tzE&4Q$7x(6^cs9|{&4B)(5RV}Sfy#B$xPZ5YT8Kd zKD46ncBDxdC<{zMZcx=H3~WPQ zfyBJtAhN^Dhpf{s@a}WJ&LS{)ZR9yTG>)BSWzc)%%F|t-1MhEzA^Oj!B(D+hG0|Vt zvQJnKF%#nHAQQ>3rFA|W|G}=&5F2){!;0w@STX%)V5Dcfh-KC=Rz?{B2)~9CuEts_J@_Uy!qr$xr3c@?k#D4@2jBO|Hx^Rq!S}uL zjdfIdfP+gmQcuVhsm_mApiJI}4DnEga4diAvtEK7$(h~?EaFdkOj=6BjZ}X@oS1M^J?Nq!yH9bVD!uzu%JBLyQup6~ zZbwX7|FH;`0}Y9lPBZC0S0Q$<`p@Klruq+My!4&;qu{Tn+CeKd34okX2x!c*$rZJF zOaEMBNBdl3nMgWdQ06w3twXTLQOLCofXRYeOxJ`*mWk<+b>diV$!UzR*Xed*Q;pk# z#!~-0co@|LvNKQIyl|12f5}DEz%Bvi#>&vKC87 zzyF&5W2x`3FogZSGf9cIQcVduLJ8C@x#hKOo{pr`H*&3xq~k{Bsq3ZL^FBN_ZBhNu z5hzLS2BQv?zNnsR0f&-?4Ega#0W*0XVMvyj`vi>1XE! zVcW&9Dk3Xw6m^tYTSwsXLx6T{jyL}O7`&!147sgJSX?2mD}huMG+d;?cI4lms*!qm zpB+6_I0J*whCSJ}k&pbP4SNO|A?R6b-pHIQG}xr1@+21 zo+20;T$F z!yzb1fN5Yk0%$|EH8rx#(ExXss9Dm!-2KeKDVTdNZ|(iA#-Es|FCQT=}HIbau;b_VSXTQ;N=D3 z>O|m;jm<>8EDd!tGPxJ(W(0e*BCDhgBZE*a6ZK&)h^}s>?6B|}nly^zDKOSQt4$HO zf%`f)x(<~SdPG){9w0ucj+T``+-?WH#FjFIsfzMpSoCLf7WOFEc^6$EvQ!f4p}iOg zgFUpu*H%YB5bi%#4}O5*>jtcpVOoIYE~JX{`d=83c9QLl#)r_NfOtY}Z-~zBz;|H* z1)>5GqdQSxQMS#(v7RRpFlyo}O+s(oc1%{{cpTBffi~juEy?dga^UDzAZ-*74KVsQ zZluo`MT^Lu(O-9P^1y z5Anj2qp8HWxYKC7n+9z+J6orPi6g6osCe;2Dk5D2`f*z8+;J*fhtXO738tN=UtLWf z(27Yit1VyPX$_lW^KoDnW&9m>IV#^UGy*}wg=v7I2^e&WV|T%UO`A=YL~u4zNwl?& z(Pm_w;E5xbg6Hs~VX?(zV=KOJL!U4-T$z@^B}V9^$(#EMoNrNPoI3!a>2(RlA}2tI zPJFrjwT>}3011a#fw@LTa7DSo(we~mrwPfhl^DO=EGBt1pQ~9XV&v}Lob8SLKkD8E zzRsfB`%g$hQ*Jvz!3YI{21r4%l>&*akkIV**=6q%ghExSRfJPs0c**IA{0_~67uxn zsW}IW^;Ixlzz7<@7X4?{SxYZdWQ`oPg1@{7+L ziSdN=7qvp84&nQ!su@lPz;_#`tw)Zx zR``{lpNb2N-U1aK z!oT%t?XJ|A;^bGi8PFFezZt#{mAqt!_qTR?HdfT|yW-y#XYrZawPZFpU?%G`bRSEW zt&bZ@7*598v~DDmMO_UxktD3Dc{zde6nLu%EMhe)ZgvT*z!&_;1O{qdr0r5dGAY>7 z3ckJePJ?zvh~_pdaQsUb1$$ri4waaA$Kwjq^@4WX|LsJP3;(*U%CThAW}MtYYp5#6 zctV?nUQL$F!synL7sCr#DuX_5;!`A%Ph-97*;Z66v$n|&jll(It7ZZwr)a)-O=}+gjW8PQ1iY_c-GHlDLvK|rlCV}5wF3OUhttN07abGtP+pRgF$0|}Iv(a?P3q2%A?=u1r z4PrQvp^ci)HY8k^t!!PC|3<=t-_jdktz?C%6))Tlt|dNP^&@Sbiq5Utf7X{@wkW!j zRr^!O$FqI>=&SZ8Hk)NQ9Mm*sj0+otV}egXGkA$h ztF8t2-)0_u_&6;6t5y|%0i|z4sg=oW*6wq4Z9h2+w|=CekshNT zDKDlc@snW#v?-*dk=9QTLcyIhB6xgrSjav~`!RlW5jACI4%g2s6k2IR)8^wA`k4Nu zenhHFLoYLhH&I-1^7t%uo)%K)HF-~7jH)n`$4meNY%IZy4GVFE3sT}z;$ zw4XJBhSHid;X$Q5h`{ifAj`ZAC-%``>*FLi!E`;dDE%s}RoC+KA8Y7VtRRt4u<$~s zDE*F2q+{1jq9#0#lcgqEm_RNpT``#p=}FFL{O)3Jt^BM8A|pbA=$E%JC_PI^vf|%J zTS}pYBH)uAqumP(#O8s`#m(QK#s&C-Bh{lbGKZOd7zwdz+5^0*QuM2hlCM-bf3#sAcIiKmXmma{flIeoOuT^j>8y zW)^PA_R-?zv_ELQncJ;XsDslhs5WO$WHM3q{3+6UB@x5VaQ7$HoIzRjjxl`d{A6VL z&;LGO{sEaOx%sNg0d~5Ma+HNt*;P17j0Ib|>ob%-d`*1dD zo_hV8=*nR8H_@utTbiF?P+3rRzBEckmUA-Y=nSagVTy#r|Dl=wcx`g$i~E;7tF=w?!QJ3QTJIG5E9$r}9^J5fpzxAo zEVYsQ=zogUJq;g5-(&7GTv$)NVio(QJ&^Ez*C)k3djZRAFi;|(VD*a&SS_lG4uv7k zc~9s%3i{!V2Wx9p5%b~)V`I7T;Hu0XqAzT)Vt)MKk0Wj!1kMYT-ECVW$6srT_g9-h zZ@KytjIV~@Q)$}%a1lIyaJ@>a&FsaM55_MnZ_=pcnZ^w-@99Iu8D?N8dQ>MC_AfaL zexgIf)NcZe%T2gn3gnlopN@MvFOhl6P20THc5B$&iwJ03@2Eh@d@Fy#i#f2Hs?fq<_%Wa{0I;?!uBDriOG^xyt>jX+-D_D_~H@LovM`jE9GH<7S=`83= zi~Qc|4ihx2FD52GoV->^8dMYih-37JM)aqN`fSOjKepiIw%~&Pj3_qSpIq@5Q+%eu z;76{1$`h=||kGhW;qY2D7^B7=*oHNg=^72YQbjrc)bESm5tr$&H9D{|5sjxfcaya~N- z*w4$jrZp&we}nvggt#jme;n5T-U*~X9~;^j!=k@Y=DvDo%G@)g%)LvjZsWq%^x3q^ zOkLdq#GV+}D%D%;LJByUFPQgU6P)=N#8uO=p;5L2vK9+j*|INJuH3kvUR>e0&Bc|n zNWqmUjIaYvw0brDUkj)ILtHa6(?8T}=h{bkrEEr4I$m=*gz5D1s?4}y_>S#Jzqy?G zy@B~{kd!$k1Xtdyy~*ZsCc^3EwOHu1>6yPKy=fsLQPWVXPoqaL+V>Mn-IgRmhth9QzdCSHfPF^LNK~d? zEc+Dw9GBr_YE$Mj*?k*TTm6Dge8DG491<3z1G!3pdl8r&>;01-d8{A5Pt4Cd!GoK` zbL8Lab-aiy&tAgK<2%a@(lxO9lz@Y~Hf-Z{r%%BFuo1YpBEvLGX@}@cNmb!obaZ6R zUb@!uCHMrJ;tVc1#gJU~{;4do=74Q?7dIc`cwZv!3l*6Ic^g*y%HZp2vn?s}RcB~} z^GF5)6>;3j$S)fs(1_C`OqsJHm6=9entCK1S@XI2ZGA>Q`W;)?t|s5>jyutD9dbye zW)ZZ&wlCFFg}r3c)Kt$F`w(!!+fQb_*89eV??25qJjb>ePr3KaDA(}Y_uJ3y0q*XPYs9Srd8TQ|bxFh^*_+!4p~2 z$oiWKU*Vo+3`Vw|)%^gGrZgUu(TL(mGzJrtWH$1Wm4y zliC1b7;vVT`XjBCq@cFc%YfJ>h)mmn9b@iT!;d{Ae$25ZjU6}IAM?lUn&X$V;3=bu z*)5UQxVS&}xtROc;9n^fOHh$kU7bS)t)@40j6o+4j{?4C0%kD7=*ZV9J-43tyJm9 z`pw6o_|W*-npmU}n_zl3b#^x|HO4<%1>SUpqos|hpIpIWpxO}--#UKx|CR7N56S|4 z92I^E;w(506b13?DDs9&p@az#&l7jtU9^8&KSYnjWYW_oATK z^8Zcfgj(R;!I}4H9oRfNP)v$rZ3+XLR-M0@c^dbUJ>lpxQQOYs)FOQ$N2K}b+?jCS zNno!Ay3`n1*RqNuNym?_bj)hyj^lcXrW(^)w94~EB;sD8BUlb;bEeFNuK0OqIbLFw zr2B>QuS4Sf!s*u``F`Q->yUuIaPoCX!e2P|Iwa!X$<%YaOCc(V`OVZjdgD$|C*i)G zKy-yHFVc32z@Q&c2lQFoj~($7V64^-GB4=9p=~fl$r*5HD*Hfu19iF?P*bQ>oP=F30pgo%`2smZJ{N!F@lmd53p-;p)D z7Zx2KJHV5Ze)9>e6t+l0;@;5|Ibjfm{wA_OMjbg`VrAUDKkhy(O6uMdcX@0s(HZ>9 zK87-4r#xcJXhOp@Cjak=V|j4R1`)vY=%`#CT#$`M>uXB1LhT6+v1)0VjLhf*M zn)fmIEu_AR>$B+}*i`{2Ab1OES>ygUE)1Q$JHbvCjb`H1!RFme&(cxhXQ<#B^DtPT zdl4E$$Dh4osI!Mz2mY)!Av>X!hf<^wTSi;AB}>6L)&;a@k(q&m{WHDRV~}1J&Gf!^ zj1B;1dcQlyXzIIY)=qeA=9JcBbi%lv|3y3!_@N{*k;XyplC!dWIE!3T?~k)8pl<$Z>4yN`v-V(7ocTkxz43GIgPCU$~l$$#%SkGtq zKRRZRyfgjQV{~JfgUp$!yN+>`ry;VuccypEF*^U8MeEH|BoL}Oj&!mb`B@;tG_XCW zZpE=oQx6MRt*O?cAQlJ?)_C0baoozdd%m??BPH&6l#YBW)bGZvPyiRbHOaUXZ>F3D zf1~>-ed!E-_w@T1EU^8HtSRbf8v_JRqE%aIJpv%UG}B|=x;f(3rmUNXbI~F07!<6_ z9qb5Ea&XF%@1tkft`y>gGY2p&>dhFhRsk&4CfWR(i@}X`A0rt{o;k1MfO1NEIRO`c zv0+oYV$eA-0ok{3u_UB%6xC2*CR^Zq)e>`-9x z@Cy;_FCd{4Oz#hUxJ`|=hn~4?5+Dq13vwR_2axsINoiAX{LnaK8Rfb0jSz;0E zNU(%Fm~>$;@zTeINrUVa#XcA871`5dTX9gf6%(?pI5ykXhRnQdXX{KCY-d3_+u3Rp zXghm!53(0UAXN8Z z^NXSU0nLQerIkfoz)fu;;+^EHnfn{vJ2eePKPJf3)1IRW+HG{k=7YZ*O<}8Drs4(l6k(kp=G^!-y&j;c5)Jq zy*X<-NbHhd_U7S6%CSH#;aU*RH*Mc%KBB(2by2ni2RMR2oMSp29Q(d}7Bw-1wYD7lq#$cIehP!nLJ9P$$Ki7*5%OkP4h8HT`y$xBFe7y=(AFCmA8AuwX{ ziVW4@(pWia>_{oc&+ed0Tof3dikTm29RM0Zium*`B=x!?sPCjl;mYgR zj|=7WEkq-nH-Ixs8hdF0Y=yER-o;TH@OI(VA5g?+b@zWQA8|!tQ)Oq3AeOb~+9^UlWzmo56H$tHB%dqo`W8)mrZ)y!ChyX~Lk)!I$e4 zO06pxHS|J~M`os++t~>2x^3z%HV#ygbN1D$DOR^B;_r$__kvJsGPN)_w}8LIUH%B$ zzNqNLUNJAh0YtPavsZZjfHY6-2u}-^Y-o)(x^Dy`%aJ zQ`@&FNa&$?=6DNuU2?`8F4wX8`U57&JgU%dy;X$vSZ^iXZtJbUyUKWx(wN&6>J5RW zb$xA{`Ob`ojp7UL)Y@xMmZ2GFH_DzLK2;~VIj%~_*6xf-2NjUFfXa0(0XK`8_x=?)slSLWc}qOqXRbCK2* zonP9fEV@19v&=V?K_0&6ns4ZWJQ{d|N$67Q zQ_%JWO_yV6%!NQr>dn3 zU4s};B&Rl*POL(>u>Yt+s)EUcWHx2jr?nOr3`&>=nVKqWO`QP9$h{+NSDSU^cjpmIeair}Q$i7kWx)D!ylG-W3tkRG=-njm_7w<2R*J0b|5dpxT$p><> zjeI2B{@8?pSgL1hqr0j1wG!l#sTWI{KkdBpY^K8CPfAB|?;@~lW`FrP$3wC+gK6@x zGi6%U!aq6g}^(J^ul{v_1rBCJ&SZ`5HcD67sA%zOn zPiq-Y*xrztv9owMg;Ewvp~5WnCX1Op!qbpIHL}0+mkY(gbcF}c+-O)FG+GSVP5;7} zS&BkTD((0)T45a0bt3i3}Z4TkWbx1zRWr@)L&8t8&~u2Kpps0fM_lW56A-J(U@~J>5OaSXHg6kYNde+s4tRvI%cl zCUQ!2AUQQW`eLmtU{edmG$bjv7H0=H(sl@Yru328O_ivLpGTvwPKP?@$&iH|K3}0J3l?G%)m#lzq)ooeoGHl65h=l$ ztqy4ZnS%`e_XA+Dd^m@bEc0=qrtA!#-M4VOn}I4Uk}(6HI(togvs6|JnglI@ZSg#nP zE!Hc>XtVKV86$Orz_3$AA*42$SI1$D_8YZrH9zwGQOzeQYzxhXHce0=7_JVt9f|Mtxiw?E4Q*L+yaJGf!nbhr&P!mp?e zo*;^Ec#X&St_tquJ0qEb;93Y?GfjU*Ec%=pdJ1F8tF!sH+p;R1Nv^9F+~~iEN!GA5 zS~L~4LIW53h*`rrrWX78NLwpIiXuaGXsUW8h3d1?$Vu%@9bU;O3$bmjK@LAFQBrDn z6%A1En@>RJJ#(u=+m26WbxpHM>mweOd-7Mze)Gm+lkM$19AOYAj9`HgH*v(&a)%~; zaKpc=^X4udQ=#CkBeoerV#F8TYKz#XH6fukWrk-s5Z+T&MI>tOSu=fBsM(RIKS#mr z1oWA^b=`qR<~0V-qn%RTlr|ugBia?ZD?@jcT%+D*ls9`o>F5TayenwTDS)p^?A(4w z$lFvUYYg+2M*G1olJU9@5Or`UXb!Wy!Yb;DeuSo0A7&t0lW|51t}jCQX*Hd zVvU%$n6pCJfe|5J3`jxHT&xZK7ZW;nB}kJzxDY$hze3&bbfQN$(WObQq47HJ6tM@RkJIw(I4w8hkN4v z4x6tT1R6GZnGix;0M|%lL(5{Gw~QpbZ&W+mN{W;FI^18;1D7a?gC@nv^QAc2Ceq?~ zE9|9~#Sre-g8hFj3w;|WZi}`QH}A@cR%fO(?kAQw{(j&27|Vpe=MN$|>wz!YdoN$O zbFU(kek=pl89e+;3&XH3BMQ}g2-Xn6((&7+D8r1Sb1U{efC zPZUfuhi4{-yv|~9U&HJ-7`@kF_`7d#8kJ|qcrO`BLrQE$JU>MdT5ga%t; zpJ1Y*>b`t|FwIpAcMNwrR9f>s{HfvWa{SzB&XQL|MjiJ($GgIDyzj0Mo!|=moR)Rw zc?G?Y73!|+TGV_JcFD}z5ba_%8$uhIfPPy@_3(>{>NF_oodFy7X!GQjJ6iPJd{o>! zqlSl9C1uT-pqK`VsQS$ykQx#yN|TgVxvmoj6-PD{S#$NEk}cU}7DMk!=9}IraJlHs zF%M?XrFP}h5ZAn+XC5ht`-?XlGVdq45T0;`75sJLz7XuqNXt(htr>_pE(~%Y{V^{F}&lph}tDgGF9zlM9 zpwa4NMr_FyWF|w?ji5agE4k0MXpgL}WB4Z0`UJ?N_a2~0Q%nMst^UI2K=3K^sWhvF za2$RIA15gN3w;^w^1=#|hncdEHD#ZmveE8Sp1=GYq-WWAs!J#m+{dSxvyWv^^10i1 z;ee?AE)zrb8%*^#o6oM|Gw&@Nk!VH^(szb$yq=+*mibm@C*9K~t>_rssKE+>}S+gm*NesYsiU zd;L6qg8Mbf?mdm}qAG-rHMS4+6GOK)bn8Rc3Eig9onu}7G9AM6CSLl(z5uJ4y04=O zTF5)%=9BZ`3`X=`W0IQ{sPdfg9N`%7A@!XYn-Z-}mb3LT4OuUJwqOD+q<=9CA|M#* z3+`F_J}5DFg~L+FIc<&LHf6~~oQn=Zmg0D~njjtVxW=0~)b^h`1znJNMKJO5H)tAg z_g00eIWCIUQh$B($8?3&#Z+{(wmh?c9^ja{n#fivnB2KL6Jw)}LE}?y)KH3+U$6e8 z9q<*Ypy|19P{9oIOPWMxm}~7Ymy?)w6_``3XBalZ*qPzRM0V?M$rF{35V=Zc+`FiL zeLZG|f&-v_SquUsH3{#+8s0u>a{R?Bg6;qE1~lSkb<=XcqN>cy77fsPjb`xVPn7@q zA|j$}e(m`$j!6kmo9eAaF{1@Y8$kVn644nKMXpWw>jn_ls68N8ePmsylyD$RjqYo= z0}YPAdxBk${un8&siM@T`eBR0`K8PN28e@G_9! zCj4rGNHHsiWl`|g<2Q^X{#yL1hpmXMHLe5t%d2bLA60iya3h4fDwK48ikG!)#RM+G zZ<>XFeopt`N+qr6Ypq^EUacH>H6Qn~-WDAFakRf6bmxVxnQequ>Klw}QU}H5ZjXCy z8c+;|Ex>s*Qc?C2LSvq@41TfK>!i8fthIK+)Y}Q;Xu^!wgh?$?kc_;Nw>Wu3W|EyR zVxX{{pi2DJDj+!WP-*>}WQKhaXoGM67=*Hy8MVAK)6EVu_#)x#*wi5H*tqC-y|9Q2 zWxSMv0l68vm&EBT;JqwRPDu1+TZ2z1n}1n9p#utig3!&u9)xBd8a`jBRE2ZmrE-Jx z4QhwIm_$+NdOvPMy28R2uMF-Xgo`W?61amy3X5wLZc^!3Vv>JNFF>coh(_XdRgqRb zCJhf>QJ8`G>g`dDT1Z9Q|5}ApSDt)5{W+tlWhpiX9%|Lc;u@;5?&tCXw|!s}w3Za` znZaE&Ed3b*;g!ryS6ta>72~8%(go<^>f-bR8hVaU6lOQd!3)PbMT)wWD01M<)TW>3 zBkKN@?;QrL=lanHY$f5a)po#!n$O7%*n7$GO!ACV*nQxoch%}%k~!?cZAZC*`t zj!G4g4>=~%gSo35FV!W5Yj2|C&+S(K7F|2e^mE={VFDzK@Q*$1N3)88qHTP0za*HE zk9ecxl%n7zeJkSVd_X)hA>YJlvjxuxy&rxhZ)niq{ z`}u>?Hjke-XdXlJ+a_zy_tn2mbH!}E61p#h?$e?BhtL(JP`ZtwdspcGE_8n#x<3!y zAIY_5MHv|7bi$bW(5(&KiJ@B)x>ccT*QLJP5q7x^*DnR1PxDQ|;)AfT!-6uYXIjf$ zQ{UDAM84N^vUkl?qt@5E1qp{)ab~*li8Y*lhgo6Kn4v2wn4u@1-8xmrAt?LQJH0RM z>Xh7BOX+$Ft@#Pz#+^-kcGoLOai4AZCgR}fu!a!KRVc^c9N?AbY~*09S|M8{r})2~ zs$Ji-ZLP)yv*vauIT4E%XZFdH1l|vxDoKy}Eh&R^1L0XqtJfPa`TLzxY~(w)e=rM# z3KsuzFOobLobzT5^{*j8Q1%wzgeSuAhHcRz?rWan{o0hC;cj`WMu0nTXx+XR{88yh ze^9=hhM!Q*+AzG#gwGvFP1z+mzU4CP?(MIcaR)5~+Q&Y03DfP?_5+JLd2>7*g3HRi ziNSlzV@2eNw2nhJ*=ixB$4Y%4{EwPhfU>ry38%&|;V8{axOsocPPi{oteGX6u#4Zw z^>gbFsMEH0lnHxqF8={Ge>h?5>*G4=Opdw`a~l4+2FbFAp#_Gvlrg3&s;SsC}zKq1;r^877`3-&q<)Y!CE#w zD?!y&^aE7Y7R2$E+8fGCb9XF<-B5N)X3h_BT=uMc--=w3=sGuYKAvxNbWzT^kw5V2 z`L|khQwigIVc5m@o*Q|OG*_B%1BItMp}k8sifk9KF4mj}8#I%qTWLV9Fa7KA)mQKy zxu5Q!a_P3^ZR+maMs;|m74BpT#dvx1)jQazZaD#C-np06+{Imy*7LyPn0HOJy$O0v zbq;2c-}J{y;?l@XtcIY`-%9nO-=cw<8i|N$KVe_F`1Nf*VnQh)Ts<9ycLb5W4zvlc-5@qa&zt9{M zJQdD`M_2EJivulqCp_A7t{Yv2r!4E*AM zixssjUIiOYNP4MbZe0mWrTf%-;rtb^NIgUOu_kt$LHU$|4l4YLl|8!HH2tVBX6lI zinLzFSbPM`JDp?}^Y$KwZ&MXsh;K3PMsVOu82M#Y}4$7?u zI{(e#&kMuw2g@n{?f7$CX94~sv-o3{ujIZgR+)YCvqkh{mUn(_1ysgj(ue={cQ9$? zy9Sdk+a^p3z@(`^9fnD_Q@z{+}!cR%Yr#c@%VVGD$|a&v5`T1^BnS%G#;@ z`B%TIV%`a!_e6Hp)NiS&*AxOUPk&E8E$$ufxW{W-{&hI^F3?uHkA(^Erj_#7y`TJ; zc6_sk<=19!s^&Nb-!~eA@2_T0VRI)zPYpXBK7ARD?$7N4VqsP8I@J=?(r6B-=h*}6 z1wjqpj$ii23+*|GESD1P*yuUISfY7_wf3VNK|SSbY|9q*+rtkP#Tj@FTHZC(ETWM; z`ytikeZx{!lFD+j`Bc=4$l&iEeVt9cj6=4^>Dd4vw_oHO;S*W|ozyE;Xv)>2yMjjj zbZN?BcWG7)H`_3SxT=_ybe5Fr^Ll8BEl}rxw4qY{bYvzM*K;bJ+LTwS=fQe63cnKF z;`oWJvg@-UIPc1_MU!DzH&)HPyWqSe^$MnX|A*}h)sL=X|NnFQLbZRRSN~)7g*5A- zF5Oz+M%Wkn15uW~jAmbG4Y7vCSo=c1;Bz$lLaBoCN35UCx$;N8Kl7z**_)9NR0Sui z>{09s9b*dExqYF-cC;^axH)HC39S_wF_XD0$Seg05Y#`livs554QHITzJf$SG4+T^ zHcJ9dXL&A3JAXc1%Zg7%KC< z`z-x%+>-3Y`+WUpHk{EgyWw=%^s0@y4?3>yaqi-9xyq9*<5P?zvI_kd?uBBOz?(r} zLd+P#&z|Oejbcm&nQH#B2@>^lpqm>pS+KaLdAEeOxFX@5Q=S=<@D~@y9(l!R_8(OD z_^g7>h-r_Ou|s*8v-yZ2yP2ccr(Z*_haON}Ti6QeeyzW_i)|v8wVl3Rm=0cI4M47* zpzmsW>tDtSJR1d+M3=*r)Sw?&Zp)v)o#P53b7}kErSXT8V#A3uURqoAZ&V^=i^_Y+!=Je?CSHf zr}T^<<2a*|-5Fzs;xjO`icGWt=uFFy-H)eUTTra z)h>sk<{QUbU;>v}r`-hhrSxSo^_gU$R~e1hOLdxD?Q$rp#W-Gv30!8Kb`#iV;==q& z9eS0M^<6Nk!zU;>v}r`-hhnUrCEMTA~O8n2hyYI3#9p{Om! z@d6XL%sTBRu+O9n^D83sD$;npRJo)a+_A->s6ktl&KhIxGV8RPz&?{Q%&&;ht4QPZ zQdPDnITTf49Iw&@F0)R%3G6c|!~BW}y^1tmFI8)DwacNX8sm5qP2e)?w41;_lQPV& zh|sG@;|0G>u68*TRc{>6F@ejh({2L$Ov*67B0{esjTihjx!UDW)Ewh@^Gx6}>$ICd zP@F)Mi8++_D$;~{sRbriyK(&XMSL*_2<#}?b#(rJ9!hBsPr?46m>zV?nMqm2FtAzS9)u><& zUifWr+vP+mQY-Zp*}GjXpWWf7Tw2tRL;K|LwZ(qP;cLJ+-ewcH%sTBRu+PM)T3Vpg zp;u{)*GmO9^Q$(qb=qxUsvJ48kQ|3<25rhB6S&Me?Iy6##D!%mBJ?Vw@q*+gSGydF zG8#{wS7`#5S*P6u_L;aazfy-@r7>QR+~jJPLs2!x@ni;o!Ld%e0u3urxVvsF%J0uZ zei3Csj5B@Ute^GDM*U;=JDdM=%bf|ocY5F3)hU$oKI_N|Ufp2i>WNHV?kH6_6CQDT zx9{pie)EuX$Ke-${RsXQIdzX*vcFS&uT$5HnY?~o*5W>7t6p=3o$Pnc8>**u!RjmF zjLv&cezBr4ouF_gxh?1(M2hAASP?Lt{7-V!_+s-)aj{f7 zRaORzf+rRO3-@je2=&9l56to>^ZdoGGu_hnX8D)DSI#csigENYPS@Q(C)|y})D~TY z+`QPOx%CrpdrR<~J0BE9_2gt^^L8Ay&!ZK7x00IbSs<(7y8L+glF4xj7Mc-{oF? za1HTs_o%ol-MGt;e4697!T5xJEDDrG+CR64CeGw)z79r-MZ)vQvR@Gxrwae8QUH!U z@>-(!A?Nb}_z$EzBG>4CkJB6MB4v=6ce)Pn%u^HSCe<=vv0@H&S3CIPuC>i!t&gF! zGEafUTZx{JkM=JxsoEBquj^ZIWY5Sq=E~9aP$6i3NWzV1R(ZJTro;(%dr*N{ip7;$>B7A_uUA;n?u@Gq-YwFQ8n!dKe4#KHWsi<(JNwqzgi}sn-7K?e~ zC>Y_f=1}%2ddLa;rrBMXv)TZ=x(8EBn45Z8_AJ$1z!{62^ca@dkW=47lG1^ghpye{ zB5O`HhAr9OoLYt9-5Qy5(0ohvA_jX|Co&YgDze6@#Q2awY42tgC$X7Bj`|v2qCbT6 zJ)}=Vu)4`3De+2~m9G{drBKbx7EvMy6w_S4|`RsrNXfVNS{D zkH#NX8%s=yfmq%43V+}88i2cuN|iU#@kvqSy6yJ{0>d zME(TO5-t4nN%6?rqxWR5^n{sSX@HtQzvE$aCI=k+A#fsD`TgkdiI@joLs+B*rfhmO zCjAzD2G3q~0GB`99-5 zw*@8Bcle|qZ!)ldV9LxF$h^irGq^kSA<|k>su8gLNPoZ_%0rX!(^z16FKrE=o^-F{ zpSj%`g2ud84x#Fz;7tx=bB+M^xF%{$8|0|~YCOWu@%@fF^|7JwVi)9XF_)XqS-~51 z2J?n`V?0BgI?b>N(Jse#*h>L>g9mMDcxTL?)dZqS|0(95;RsOygYE^mV1Q&d%Y_p( z;blybF=16OUxOh$<1U0Gpsi*|eU%AZdc&bb^?+05Qd&H6Xqf}y&=#0;HTb*({`0)H z%unu@MZH3Gg3g`d|2pCSr4hwpPgjb3p z_|!LJ?$iwyg%WiShRTcaNaGuExAaZijNm7G%pv@QURJ@e4)bM_MjCpO$KeOF_$1uT z62<$S6#639GKZc7KOV{9_Kp;Bw;VhW_3r=-5H#UFD10DYNC!zbIuShaE=vR-gcc>- zv}fjtE~xI$i~wS>qZ(PejArl293@(yGY&zTV@-KoqeH23XP3YQ(%zT-WX1#D<*1{!$9&6TrY5uC4 zmAS#%FF(1A{B0*g*LsKTu*1-CZOo~g+Y)Kx^{%1xaulH^!FRKQeITlgQ%+N#;Yz+; zdULpia+&ReffqCJA<%L1W^n!y$mV7&(LQ2PVyH*Ak~83VXW_{AXk=aUj!ro8{e~?t z3fPQ%w;g#K_%4S2f@jC^;Cr-#g<>G?f3p}|*=%y$yhTZkDzaH`C^b-s>l;06-)eUI zs}%_27F5YRgm^?VsoeYyP zZqQ)eKBhs!x&>LR!vdmN2^0Re&@1Y5vh?Yr;GPj+iZyr>)SE4u4C!R;7kL`FZhSO; z=|7KexJZRDv%F!Ul07&X}tpV@W zN3KQm9e+cFaJvp2SRX9^p!xMU|2OWmub3GMR|W~ETd4><*pVcf^+75W+4Z3bKjU=K zv>agHpebxC0W8}aW9QdHtLHUpe~14ZgdG?6N?D?&!c$De>~HB~fj-f!EkC zXy6yf_$~mM0T*B+(N+?T!Z}1*i_P^R3z_tLa92=F4kcDQAig#nINCK4BJ1g5S&XxK zzHzQ!pm+%x-e(Fc55(If^vw$px>x|~6P!&gyws-22AY=`Q{@LJ3?>TuFiyi=kYcp! zVCWF#n3d%{jX__u3lkzk-O#NfkfxKkTE4L;LgNz9RdeYia{(-|oxrQ>73JM1tb;qz z;4x`h5N*IPZ)aBA%MkTz>|m{tHt^Y44V({$oWhnO1& z9TSLIN5s_{JG}AGQ~@mPL);tJ8}m<+tuMovde^J_h*Q8@?holyF94_pMD_-nqyY9& z@wjWqTxM>5MLKuq{N7u?eT_x^A$Yym(1Wp|hndT9Z|;iN(EU3!J8tP`#MJ}mGyQSL z&-6MQ;m^iS?ED7aYB+>(nCVacjA99TGw#}fFtc$t$1Q!s2s$1HO)2Dvnf@Lp zYAR)u2{AN-N^v+q)tJ^{=4Yn%jLqX>-WM>sF>~093EC@q%LOZ1u@WXfyTy!iyDZZ7 zfmS8EB&WB_U;JKrw&qB7uIl{OzIzb9qT=lWe+c+HNX6{yRN|qBnKlrCMI^S5tiVQK zBS3Nf+C|2(uYuU-BGvfdO=e75(`I;GtCTwXqUtU&KgPsv>o$RY4^AxA%j7rj-BA62 zB8FAJMIom8&GPxyuD`$96yY!LH-Wz5BpeFPXNspkyF)9sDjAEm9C~b9F=zt)BH%=b zT2U^L!5Jzf)r-xDwo1ITt4a~W+BH!jrd>7i`D;zt{%TXGzuc7M`zE{JrX);={y>Hb z(^_&yUk5%4Q+(vDnrWAw`uA66=(tw2FO^TCQ%`EyfIPFbpY(fHwC#}RsgTF<@KWQq zvTQt}i@?ytyaZC`qZu$w|6hYB_5rVB=*jK;&#q_Ye6m1apeE)%5OW_xCLOsuywlO9NFTsDL$^L1B3AOy< z@~EK7y8L>1gWVW@$a^pD6WYcJjL_HLBP@KwIa$DFtH_pZ{9w!-{|MZ{AhGwWhv724 zM?Y^}#{Lr{5ovuvI21X+1!QovLgKAqPQ3z3OQ`~EO7jgZfD-rLL2sK;(ib2zO zBWDBdAF2a0y|{L?d-TxE?KHC|?!s@`K_bm#V#*#?Z$li}o^86Wz_Keh@*WB2h9S(^ z*(PS@#XKxKe#NxUY^cNbv7Kfr#Js7h_zhLeRCvRz{^{LCMsobxFg*KIZa*|(Cn>(1 zOED)T$Z!+GF>&6_8f{aT23mJn%s8BqM@u`jR-R=6IJZ1=^3Dp36c%{tDHewlJ1Z>* zkH1eEy2UFYBp+rI*67H%(Cw52q>8lyH{zGE2|O&eF;6#n{*~ zOW(7z6iHhsoVI&g#PzuyN;nzv?6ywZ{xf~_=Kf)HnmN3iYyMr`Tr`GF#Z)E*^RzmF zPHosx;C{(JgC3Pa>&>=dkAC*+E6wabO_!(yMF@5lOI?1mJpc#>WcA?jqLmz zvjnCj!y-L=jtwU;A90P&k(W|KUKZ_yyflu~*I4q(9Pv0DTbsvAr?U!c=l(6+-uQ%c z15ae9wwFb&zDmo#zn^3(&e?k`b&4Mu`V*&7$SDkU;9auF_cy?mz>jX%KDgHiB;n}n z$q6#Se?U$YL-3L1-_l$|<^#d0SIOCFdBRU>zh;Cj?)4JA=%Ok%Bj$*ng+$Rc*8Pwc z7)pq+$kIBK1YwcBv?r@W5EkV25nGeku(RIIb{Z=9BfM2oIf#r7^p}9B!J`uB7Y`OB1EJ)I}w*w zWC4)b)9Qofxy>#K0J5wKK(TVp%ueO=EQ7prfRQ8^msPSNm*Ewpr~pYzTaQDT5%+fh5MA%F4AX85UU4in zgcL+)$-J$jqu9qSa2|>Ivv;u~k{5}5hyRQ@s~dLECCZz!sJ!``I^In6Wb<>8@g9>| z640y^C9>vZBSb;od|C~<7F8LJpc@%PBR{b#P>C_>rEr}3Ngww+sO zMjyiVci8dIWV`G|HxBi<(Tx)2V3`R8j}~OA9g(&-BvKdx3BJmtoM2vgEQ7HqI+|f1PMb-Md{NUJChIxd@B|1ukA2Sp@xG&-|uYYP(?P4 zhu71i)R=si!`8>2&FrvtOx@)J1cKPiAY&W`-IOg#maAHa8n)^{;loZ!9N$1&$eM*RQl8RSHSngUrRR!AqMaDk9gWdc_-X z)GB<~xgBjXrT8|hZ)B)O-f}ZXD`}%TC%!g*702ss>)@A$E1%B5cb*bJjN z{>ce6h7;>Z4Br3m^MaDKWJ;i|jT}2H*(eHJK(CRx1awgUZ$juS$>H%p(8^r${NZU$ z=!4%0cCjt{uoz1t{&eiEY(=}oeJA+l88N8U-5G%SR>Hdi^XTtgjIBV9|JnMYK5y(> zqkbj2$pR zZ$;+xywwo-%JiypBcI!?XScT^6?@*Y5G}Hrfwv-OJwlpKZE)_Obp5qBlQt-%Cvr48 zeA6~y5PCebe3yj>Gr~?}ZGY;G6SqBKw!+Tuw`9QozTn2$^rG%=rru_~Hg(k$jeD;7 zcaPAIf6qaSF2TWogV4V>Kr!t)0Gm@FTX80Zc~f-!W-c)-;9E*n3E;+?5veUD*n2Oz z=+m5faOwHd^wl(4>FvdTn`f%Z=$nQJ4Z=%)KrgFEMSJVX{`n z>$WaLFhD*Yl8o2&H$P_Iqlq8dqpyC)+ucb`?FEhAZJt`#KNmsLKGM%+>ReLcOj%gb zoQb(CUz~Q0L$tS#m9>5CXZqeB|(e}DFU-Q0dBv_~^0UzerV zz-2Rhzunh|GQzym6Yl-4{-OHiUSY4k~f4DXqX?>2?Wi>4mbq}L^x#V8vSEzfL(35w(4*gPD@RiezifLB$ zlJ{oq-A|ZB?<*CMlnk%D^89PS3fPV8zb8hnSnmsE9AuPpjseH8N^eOxC@3dFYqt3q&J2)Li2NQZ=l;C}d$BV)ZE0OorDb0DLIt!oOvEI~CYIv0-%_V3Sw z+Jw3&-B29he*FsqH;2lzIZd90{M&?^W6davr{Jrnqy;L%gem0 zq|IMSIxct-5If#QjL$p4lg59UBbqrDJ7`TosS5Wlo0tu$4c=rZ7(x+)^o#gK%v*t! z-JhJ+)WGAmy3V$|Q{eMan=@D5`x*~jU9k)Yd5hrC@;GQZn|_|3bv0Q&-Hvp#VP|Mcn#38GlH>$WEM zYUpDj#Ap$tK9spc%C&E0RmCDFJ?rouyeYT$d5mV9RmsB6dq!JIWBz#FG+K0U^Jk*) z7{@hu@siR8cWm<{+ADy0jjKvC6SNp_!(;)g&DfK?c;(xfUA)~%*5EaklxKF!`S)mW zclok~Z*Dy?_Ys!7(ogHqB(SG-WiNJ0JW2o?NnIg0jt#BOsoalIN2K)#^NEhfyJHt} zq`QH$1p~dyG~zkmk> zSug23i+?d$gbSqxcFOA14J`aUKNo)^=AK!R`N~CmIlX@_b&4TQW`Io^^f4|eSd6W{ zbXa~9<)8UC%4e&x@X;73tg2&}Qs{jV(coGOm@#?}Y^VuhXrM3U0bqV8O<<4Ew@#)g zgKbS(XCuxKdLi3)iCpyz^0$Vy>Hx0{=zNs7m37Xkw?BBr1Fq2UA4B)pOtHELBdK4K z=VU*A0TSfq2g(yiO@2Uo;ohLc-4OF`)4-=*EV>U-OUO2jo>0c&DOg! zR);dU8JOmAkU4Zel||aP=BX95S2b8+Fd2FrEDI{7<6o~`+Q^h)Fpc@RZHzW%V1OgX zH&0rkBQuXLlAK_Zs2pT7+R$+yXJm7q2>NzWTi2QmU%vKLqqLLS6-;7VgQ;)l@5hvt z*#>BPOB=PDrH%H>7$2pLN7^K&Sl3u|AGM7?Gw`%FRr76Z8oiAQrj11g3Z}ll(Z)9( z*N~fMM`>e+ZDWfZ*SrTx8~3+uG{w5tFEDYVz;VdJQSlnZQQy?@)^;h{H}&c6Rck`` zgTxXx$z#yMK9B2{#<(4_u{?IvxQ$Nl%OykDbu{$B9oOM_Wj`=yP1rH!Jsz0{6{#)Q z$OhNX)FO{5RODW3ZJV~|p2#T+KJn5F4f@E|NI4>X9Y49O1ExELS;yF{BfxuB=IgmU z7L^L~y!E1~ZUoxYWR5oNGxMaNaepzXWwj^T1(0$vyNgqR1=HMtfeDU?nrl;eeqs3f zgZ%`Q#yIdp9ausvP7QT!e8MJ&x5+rClL#;FeWx7mJ=XhrN!sf zHhX_U3vu!D&=a08y+Gyk_?Jai>Ef!ZCiZ2cyZGbuD5t&V`sC# zmu`-o{YS)_=#lK$He*0BbEfi6BX#_2wws#`15ms%?q4v_8F$a2A&Uze(p(cZ0v%@h zAaNRZ@v*sb`J=F?wS_3Q4)y6ma+{Zr3 z^}bp%bbrGT%JW|By$g%0=QZ00-OY_-1IA$0qGRlEkqJpI%7oeW zjR5}@ruepRLwz!5wmr3|(K#FQJadY3a8DxMzF@$t&w@X12#^%%nrT-vr?6unffoA4 zYSPgCSE3L*?DRjFh8j2P+emzeh2ZU1_ETR)GWstS(yX1pfWwy7ZN2FHn0JCRfnDu0 z+9sXsH-4U3u4{x-BW*83J)G>8HWHigzBFBX-z|04G5z&7#;JRg?QDPK>OTWFw#6mb zK4hP@h0A}D)}N3)R`)=py`RY7CVfeqLa@7fH(#Z5|dwqxWm|y6tucR`PSmU8c%>KbR>JHn0>h=3cFTGJc zbYYHOVoz8aJk<#6)%%xHP>^e_7{vTg+=lkFPbenW(J{@3BAVp!@jMP8QiWMD9ebOO zWl9w-QKlFsx;bXy$MT68Pp*}<(1^k0wpcM1R-U?Ie|Q2mV^6}@2QN+6Mh@!ZJ{xoQ zVmrx}@?5r*TwgW1NQL{y^jSXHsq+B1T?tS`+12i#(?i>-c*vdr0jmw|6)lM$c?Z&3y>J?As=iMM7fy>E**} zV5gf~E6n^$zjV?L^;uh692mf$Ba>i#;I?7SwhiXa%&8N(@TRw^Q@s;((U4sV3&Ix2 z8Md~ZdMS=dsO@k{)}&ND4Lb5j^^z*Om6U^);%t$fgOR%0m&E7@Mz``!Jh!vp z!?ySM9ouU`a~u(X=FSHVXeh;`hk5y>3E9=|&vq#9CB`RTVJEcO+s&1E7%LChA^mN` z(~JHTjL)qaZGX=zY$HY=pRd{We8lmYv15Isj!%7de1Lq+K)x5q|Id%l_v?qjQ}D6l za~%s;rQ&4oj+!NN+c7EQ~BPW?`f$srn8{@#~ySMU*3Le z7OK*|;P7FEnf0cx?2otPj~D@M$*34UyY;7Uf**$_x-qb0#({jaPrCp<~&jCM$-S<#sIF9DXjrMSfpN&=YuL z?sZ#CNP@O43#^ycE!(QdzV<;J{oyTw;|#s!p*K=tY}hCf%R2pCrWnWbTNIKttd@Po zs86}oM!?rzVG>5w*GlVk@K)jVqKMerYiuCEY}c6*x#r=mwch!7>#cXu(%B0dI<9m0 zYFv7=fum~-b2TnqD&*d{N~}TQ;hia;8+F~l=&$~Ih&1i--e|`y9mZMb8s{dxPfx~9Ip7iw3|2SZ6$ zOxb%3D1Ku&IEwLyF*qS|T>J zf4fx4``SC?T5o6GyCU?GPzjLJx9bVd3%_;Ag?L@OvoHMSg=%P+5bw&ocU9;mdpF)< zVtcZ&etSP&8d@%Sd0%@4PS}9TytgXvt;u^QhF;38l{f0%G8Gri4$7-Hz8U3s9lSad zFWc(yrZ0~;sT1t5>ai&=%ppmWQv2<5l+um%Xr41Y+UJ`>LMtNR71308xV3Oak2q)p+(xNXwjH5rioq6wyytgawU77c;%6q%>UX`goK+uD? z7-a3orEEF+!#j}oZq9n?ePm6yreP30e}ACCgSltnF_y@Kg(k>MZ|CfZlZJx5FW4XZ z{uB2Tl`y@AyDyZU0JMSh3sh%38z|Oz?hie@_}RQi%v-1GgNEa@+j>2iTl+R5!e|c$ z(@o@jMOG7;@NRMNbLNTspsz<8_N_c~8^xw&PjVmKL?HW669R$PgEuEL^-}8$J~i)7 zXLFe4t*fArn7ghLN20bpLVwV6tn4n2!IFad->|KH0rGmsNa_}X>L)?JAO#8Or z3tGvW@NW_c1z$8Vom4H;?t<=S)GzH6_HNL;g~GDx?(4YRM?lNaaVuzDb|%ZH(jjs0 zGB){_RWOsk{cS<)x!^F0m$}-y*OPx@v)msHUaUturdDS=Aj%XBsngyK-GVnJZ$Bo9 zT%#@E1)@f`r+ptW1@^S>^<%OfW6OtdKmT&Kl>eC{P0Eyz{ z`0RT@HRipb$=i4@DEawthwg;01uZ-VxY~Dxnl}@;nXJKF1?sh+2WVSUFw1<_6gMNj zzO2?3kgg-Ju!lMM7kkjul@&$Jvtkl{ajosEV9-cp%AFu1oIlL&j|=eW&~I6E_~U0o ze0m3b8maG;{$ca`1u*U$d49cu%!T}0`pam*=xZ4co33;V~0ty_xN& zQ3$7-B2>XQC%-*JiaEIyX39@e3h&37@*l-)ZqX#o`1QFNe|3JwueURPeZh=3{@@|< zP_gKKaq`pn%#2Ug;WOBnjN&ucmpqlS%`8pMO-th}=B+nq?b#ws#^ydk4N50%s41lR zPC^Yjf7OOs((xNY4e5vxnk^i&^Zsp}pgyM{*7@m0^S^6>Q z0z2M+VJezu$=*)>38;&P1*;c|gsd0I3aQ9?Lq%>UEpX3LkwY^l&)e_v;^f$zCKEDa zqcdW3oW_#?=^T9!J_V;9&1Z;3hkf>Kj&auui-I~EUN8UkM`RQ(bO>%e6#I1k`jsLs zx_^RSU=Ds@{RS={Sij&B6r&m$^RJu}3{FwuS5^hjeOjZ{hZ@RI@O%7{GJdnA@PV7o z^m~+$hgp6;NME2S?p-k_e$*9BGIAF$IidOM(kC>QY-@vk-rI%VZA4eHxH(}DzVFns znlDWIAy^c4DzhA?_z4*{as0;09yA!y%Bu|q-lc?MbL&5KHzo*QPolAhj*WRbiS3V_ z>}NI1wJKxZK4*Wcuf*fPO+t!+8mJ*}0CINQ1a(0p?BR7$S}@cpHZr(X(cXe`OHhv? zcW{G(!qtE7j{CJHL#);Z%AIIe( zrk|A1({|0-*inZ6L&RSaD={m1r1fN4E7*S(7o9pKOB`jFb^x0wF-w2*mnor~D1m16 z_B?Q>7XY`DG=@NU%S_Typ!ywU9R}6=he0)%@D1@wVO6xhV;-kQForeMy{YAXKIm{u z7q0#!-`>=6p9yt4^sExYS?i5;I~MFNfBO~^-ATua%&=|c6^U+vABJFF*%-4bgS7gC znOubzPF^z8948N(mrdYJuT}mP6{^L(VLspme`-09V|%!6BJB&tA3Ro4baZyJcu_#z z3(sFf&$0Ys2XoCI$5T?HUIBILoz$f@yyfzOnxw7oQuk__-+FJP?Gb`ny8C4+Jkqw2 zU$iNz?P%RqZNP4Z>#k}Ie5CcKO5y*mTC*Gbh?umjFFMz}4W+?8{7Bf3)ZJtCGT~*M z^2vUPOh!rHmz!kQJYdIqYHtu+Py(2dur;A1zoylcx3V}nS!Y4W+Q9JNpkjDq%xkUQ ztTCe9ypA(~SAUs*%g?xT!H;W947rl`rDbI+N1Jl|K|}6-`jS`5g_62Y$1U|g8mo;g z*Xzs-Sn>y+_4TGXyhK{x^k!sl`wXhTxMiJ2J6L$On3j~l!;61{j&R;7NeMW~Ly?sM z?K`!R-quhKFS>$E2y!@9>P>gbkAa4kJ3BP?TuG6>Iy&w(I2>M?^3U53+e5dlS2u$w zAHkMtP3Za>$2DpW!GQg)=evn~L67~e0$ z<59K7qxy_Z|FSn%P>0UHdBKTNcxLm{!C|ui!OinYgLRb!IE2%X#T^irZWJ^WV}L&C z(deXmgYF}aEaJUf#>Lp|IyZ83|HY@m>8?n1*8uKalZ{N;6^^&Wj?I$%*euc5G#?hJ zf&TK+@Namo7PCyyPwpCf_4O^?nh9X`7ik#{)G}Dq7wwY6i&H-@;;E>PqUN(`S~uFQ zE2K~P)bV7vE!xeiR9&QDCHA6sxY3{XMUAezHb?5Jil9!UTs$Dha(Zg;W{uc$R0^`O zypB3K(_q`uJ&|D#PCQ_2SZ~+}Q$pA-N>Lk{Bf&~aLPb6-XKA#HKJ7U*5^3E?rRgMH z0*z~z)*ri)r^!W|9KUS#r!))(vLVcmAR>Fq!rHhYK%>AVAzvfFKupv?LN^s#oDAFEW4ye=eKz58=;2!G9b+8Vr9#XdZ^D zTSyXVb?LNOzMYcGYU7{$l~y9ojXBg0e(=K*_USJmp(NcKg0nCv()J?WNX1p+zgVnF ztMPYRKSC16yGqMejAx*$Vm|LkJN|zR5DUqjApAsqvxLs7?E$7CVe^+%sUV_E22bHGayQ;S+OcT~$rM*B<6qdd8DhZ|< zI$Eo(ob#$xe8$|?YLR#<>*AAl23MNUYpTUQD|XNnx709HR~`a^-8n-wPtiGs>d#+> zp-LzyWT?3LwF0e0QG5;V9qMWDz(M28S8&mlxtAcnemLjQ`?kE#L$kM4g{gznOuT)u z@<8)qC3g}eTR8U6GTu`}h>6T#-vcS^vhoJ+xZu=JnwKh@cg;RUS!(OqJzvj<(AD5q z`ldO-n^)u-Q29L~{w*8vL_XqXwd_(NSch+uV8!u`6}X`6uLs!Te;p>?W=MzGN0^tZ zIa>Btp9f|KpCfxVmM7)yE6ICnkkpFv^OZfP%JxtzFmSlT3$}YM%)TNymR|FUWHBnQ zwQ+Agk6|v>W0=wjYgn(j%)+7v;ac#*vNl%hLCj6Dv!gOx$Ag%g7GD_i+QJ7hYk3f} zcF;8CPmA>+<~clwIkkG13RR~UvG!ANy znVMsJHH_5qbv09|W$|rg&0`~L7T*?RzRC<1#2>vZ2Y|Of zNplubX>h@ThDCz9kz$oeFsVmjS7G)@+6E9W;6muQ$b+Y5LwWD*U`EthE)+ zGZkL8(+Xp`3XiZAiZRGmxOB$~(aF{>VRV*UimBY;Yd)35yP;#(P0=ov@t-twOfTLP z{R!Tm;@xFa^rv`#hPPx>^k;Z~j<>`$q zzKcN0i#a}a5eEgo9=}87aMITin&$$SMmyLMOwgt%?p<2XsyK1#ZpkB5F}lGW!J_|< zxi6oTXCqOR*l-)Hy#ISTa0zc|MOk@JwqaTz4!P3Ji&beoNKpq~zs~ z1F#kgi6fhftfGf)ZodOu0jqKa@b#zpx^D(qv+yySTscl*nR0%ja(<*4ncCE6uN&Zg zGYl_rZuT+~vkUcup7^HhO#Q$cZ_1vXt8k$xO4X3)#7>Mpj|DVKPy&?Xa3oU7dTD&)Bf+% zXDpUqR5SHGKXS4c6zXN|o{OVjid25(bRPUXKT>7xb=`GqO2uni9(e8OlD~>5NKdTVUo6;a zv(cDIZl?$!tC(h$hMeon<2fCnblH;ZF>{f$V&Yqkw6&$DoQwg&SJ=;f9NJ3W&v#!O z9p?Tqm@$KiDm;^{;7m!ri!;fw=G6x!_T?X&~LM$sKKZVO-Nb#5w8cM^`LZ=XR!*Q#WqbbSbESt>0Pk`ysv zYxb-h{mEH_Mv-e|ZWMKY4?$}w_by2O}+v zyv0zJKIGnxQ%@Ky^OOX+?-5lA|-0LKa*{>fF zJHvke8_^54yb+x-s`^+9-%EHSHUU1?y$7kJl<&726XT8O`S)WW`q+)0^_yBT3a~{n zOyN&r+J3U8vdxED8Yf6s;W9Y8yKIk=r7M)m zBAH@U6{^H~t}ete6XmE8Iu}As>&;*ms0N4(N!C6S38s+N`gGG_*{KC-tK_{!<+MJn zoB0kz82(kW4BLahmoK(GB4{%4F~V`$8}u*6r6z6xtyYtZ`cTu;N#jBGX+zaIxJo$$ns$!JDi6V+ zrWF2i`~tN6P>zO}J!mZyZA82Qe3b93L_C%9;EH6+Ek)+Do7T%_QOty`^_WLYo4MWK z@I8i0T6^5mwC2o&?&h~jo2D;aRzcORk7x$DR!mB20He2bXQ%7_LO3CFGw~v(pqCzX z!3{POUmLquNk^$Gu=%Z#i4m<^oAzn8o0g@~WgE-3L|eZ|<0f=Z*xK6N#9EEE>Kz;| zk0L3preZX=I;o9C)nU$R;nBhh(RsuN<7?edX$mx~Zy7(i@dKfFRFWIUpS9R9-r8)# zc=VCbg4&laZpWs?7-oX7xHsPHJLk8ovo3I3))&mxmUY2KqgX*uZ!sU37Skw?jm8X7 zYcuGl%8p?{=7_yY{t><26&H(M@yCm!SME2=iuuyL?1uNVuZ7|B317#ibv|*|ZKVps z`fo(Puu$>NG1 zj8kwA`TDZ>pq)FAj_IVTBsw}WXQu1uTyw3X+I1a~2W40ny%l^32T{|%%R8YcAeIS! z8MA+_I>ixO)8HSi*OxDmRU@7wNSqU{f$W&Vgm0HV7ixFhz4~+F=(zvYelAQ2$3kyx z!qCX8iI?hj)}vd(+eZt_gMUXMnIDY#r-qX!JDe*{4XLk`1-+!`*nT@MdXXirJ#wrt zY<^(Fev$yUJ2oZCf)3?_TwaB%YT)o*558$1cU8KN<+zWvq0J|4r%{?Hx&Y<5fH$~Q zAEdj4>wR;Jo z71*1f4_X@B%(2b&Z+oee`KiE;a9Hr1;y!E=(1&&Q-NKF!AI#P78_b=FuXD4wn;tj# zpU{||&ohR)`o^#}9mEi1PtC1wf$XJjYms{_H}-3MRLl|EWAKefD^shYwH zbmaas+`!8=L}nU9JbM*%vy!_!_|A(n(~PTfhsEct(P8nrfb<|(ZT?0hFh>rwFDDY} zk{j=p#@epSr>r7{6QS)p01MQeoJ_KuOvLMmQ#3F57sr?u+lw93Vkf+0t|eKS@ivB( z#|JVk6eFGmXD&`L%L0_?@Q(^mdZUzO;Ko&AZW7v2R%Y)1!CJYG7I)hnD~1{t4JrH0x&RW$IV3|4YLdwq&D$ zKV3~$Z&F%an$HbtDo84-3|ootJ6%;uPOnzx;Bt1Au&6vq>4@xoi;9E@Y`st*^{thZ zE#O3NI8|}!E(2It;GZveXP|GQV4b3zr*nbZl6t3x&N>Ta@NSvFsPk1Sm zB-0+RlIJheRuHXtXv;&6`VotgyRlwMIgEhBt+E`M+G>|`BQwS$+6$u_T{N06sbzt> zl4_j6W`9+LJwN5mBIlei$6Wji0F@v$9hv;Um{N9SH= zl-diAl;q|x<<9}xY1mK~T91HVC9<_OAZf!Yn-T9MBqGX?uI$nLTdv3!v3vbC6Arq2f2SJFEckHw|7FymASC$Z7i)2!w$3)8LkZgT2y`WVHh zBfDoC7{lcD*U1ixhf}Yj(ve$+YjBeu9T958A)bU4uHLl1K%v3XQ_rnuM-O!xz8E=% z&3=V2ynE|%X%1~Ds;#ugf+b6nXDL`mSRTTkv+%GU^AJAU!oz#aL--sEkLWQE;d3n< z=`oLnK*CJgD#zODU&GR=Lt$Rz%I4i{^BbDS(pHgHG^&W}COqBuE_;=!-UxIXc5tX3 z{FHp!hjJ@%FdjRouR7GZGgL&LN~m8)(3WZ2_5%s746 zSli%#vz-ZoC~BMLiQnRw=oT$wP1D+b>_&FyYrA8NhAfqUM>OUz#{h~YtWbw>$Cx`} zEIGAv+aRT0gZ5V^g5G!Y)`UGz+`4Q zR9i>8zg2F{Sk`Yit+tj)qNNb`*Q$N2S1p>Dzov~oiTHWoTVuHnc9XPI>z00J6%L8g zgMe8saap@vsEm;AzUzw0)UsG!5D-Vppq&oMZBxg5!z5nn&aur3rmY-7W&uey)A7$C zUaePrV|2|U9AbFUHCs8nsHH!K#_?B0*K`BT3Y~0lym6g?ivfCOll4!h9DsE$)fnqN zOCBO-$W=;p7$LnWLA+>n(3U_w@|QXIq=hBi!;uCEGXm$ zx_Gyn0)kF1;2X{m=Fr;1GEfaj->zMC4J#Ar=7^kw>7ezy*uQQNz4J zSmgR)hDCWOG~Pe&DAAMpJ3C_st=C&Bec^b+Y+uuJZV!TnE2#t1AWafRN$Sy z(OOaI$X;k{0Q_!KA@!M^4&LuG?nAp>M7!NnFhc zRceI%PD#Buli5PIWOw6gOx=Cca8qW)M&h(k1b@%J)nYLi=cVql+^Ie9wQCK0ZG}u) zqU9THwRfb#uP{c@VyR{B+$)`2$vW|P5Vf@yQgW#UwS9kzP=0PMP5zi%%*mz6pO|OZ z(&TOC8NM|6Q}c{in!MdS5!S~le4xB&>kUGISX5^SgWca9M~Swz_Fb*`MHxf=XSJkb2A5N0)g+FvWD<{ydEa{M(yjNqT| zk)0a=v6^R_UI%i@B;DunX?=w)6DNz z+O8Vib{hA!onBRIry)(dhbJM~5l#XZ?zkyU&?%U?*E#NZ$Kg6e$ZCKFzxE2r-S&Iw zEigoM%KeZo9=n>O5aLiFq&;`JvW)umW#Rd) zMFe*cq4_bLj&|ZlAH8WWO_AfoUus?)!d;j_^FrUhr0*NcvRJfolzgg7UkB6P)m(5) zBH8vt8c?nH;}!4N=wRA#fwdr)!9H@1aIdUy-I*Abt+diB2sBZEwWr4YXrdkpbB;HD0dcie z(ee=sBrLHBA39xbOGj5vClFf48?JqoMVOvLbFx>4@>Y(22|_3|nv#bqIsOLppnEWYEUARu?sS5=~8BD-6>Ovkxe99uAF62?fr!4~NLLNnkU2Cg@x{yZ^ z6Dl!_YEtlyQ?%LRHBQ;LNIV&zr<(~QC!Ss z(LEtelK7X6XgNibFa}41Bn#oGzl9VCl!?BBGEpvFJUI1D(IfwlLjNcI9}NA)qycde zCb#WbAWV=y25d6s-apyWJKPG*GS)fz!NPh?(IATmeX-*;|dtb%_$#vtX1 z*MM(>lIM!3hn6xU70A=psM|A+dGb;>xlr>q@qU<0!O7o4xZBz`{ART@IO2M7_tu<& z+POoj`qvK+7WpSag?sK|zxBuMJ6G!%_9Km!)NTKLEEO%ZRWTprB}Xi!TLvBvH?4+Xit@91ZvdML~9Ic_`Jx(}ZX z<+!8CcgQ%1>;CaSghY+3jwb)6nqT858_iCmJT}6<_b4ZOK7o8LRo18BAhPe1R4?}v zYQ}^x@GIPGMfT9_vDt5sSZHxKh4uYKCGL?uRiFJh{9+q%ghLc#r);Yjq+rB9^Ef_% zxS*?Dk+0KcRO{7WhjIpE7vAkLa%`j&>y#_xAP(m3toLycw^{#JLaREq!Z?VVh}<;? zaY4vIoRQ-o_7QpbSxJAsz(*nx|NEoNZ}i?jWaFv@`Rh_doP_#+%tsL438UWPtnZN2R|_k{)FK zE{MLL{{F4vL;5@O=Dy^~)8D(c*84$J_kU23xW@Be^{|LB^n7s6D9vdeGv;n>!HhAZ)CaUAW(m<1ffZt#z6cpz=@^OZRCw%SXxfHOR`&J zjLoD4Upr1BfeyTNZOLvW_$%57F^27OIQAa5JuwHkuO#TD-hv(Fm}buhYNKnOFvIl2 z_x6T&ts;>a=}eWG{qx}`ygfu-=hZx(sK7`iDD??%e2uqgKxd9k0q>eY@N>{t^LSG) zQ%^+!5_hK->#OrVo70b&6l{K7Q=qtkS_>SnT9d7olBd=zaFOJ>xTVCm8{e5 z$Fa^{b^f#w6P{+{|IwzF2ZrS)+@-hLgsakQFsfnqSN9Fu()~|s%QhT}D1l+J%?wf` zY@JvrBba}%A*;(ySJiu)&R zY>`x{i10mrQaI` zGSP9e0W>_0UV?#pn%hmwSe;umDwEP0mHCd+NGhr$IouCZ#pp^Y=5N#*Wq%ogL%&DfB3nDXj0fT3tK)ku+<$ ztXOT%Z!2*$8OwPFI$ru40T{Jc0UT8@jR9ywEkrF70M(M4)vC67r83>UJ4T@6lWw(6r4wVXPv>EOENZ*c8zKMaO|(I(#cK<*aMx1Tx)H2DoKTb?jB zc(Kpps^6)@5+m!}X>DB(+8?=^Z>7va%}Z4C32IDO<$^)UtuwhNv|my37X~HISMp9Z za?mh0_+45L4dc7C9;8&!FucpwLs-ea`ozCoy>}NH4-GFg?r+x>>DrU`=el;+lj<6R z5iVi`qpfSY#aNcxaNH%zT=UmXDem2s*PmGuoTny-6@QQ94*}>!`C99&R-nwLqOtpV z@L@2WJgC;Mo)1)d6&2Px_QPv^b!)D#4{UeCNUfSn!GsU3^$(Ma`&z16FD9}?}Ivme<~{MYqiz7+70a~Hf67OQ}%jI+0uNi&pn~O z66w}oP-C^8VzX98J-8i<`G#Dv&!1M@*H5X|>x*i=*OFJLR_=>74Zf3{-jajwSE*B% z)~HiUJb3se@BQ~n-C~_PsKQ78g9=AcVeF!$xGc8lQCE*b(tA~tsH%fEO10vU`L_$5 zy6>xszUTVw!wQB;kr(&1tu<6lF_h^qGt4?}sA|gEaYuoDH@zR>50+ua)`w@yrxxS; zq+Ogpe1}Ae2&X?zCunl?yihnToV8-P;Ba&QC|I>*Ihb6Khg5SUpmZN*2;--hDa~m# zG+R_j;$q%;s}1`E3Rb@0sQ@`e%ciQGwqJ1LTDtYrkR6FwVa*`Pdj=NV^Aqi{BjNI-Q2u5?co>)r=mC!glf;tBv+DO z{lGh>;H?O~=zpv-FUcKYTqgO;(APkZL0ah4ER%~)O;ZGonJf<-FPlXKZwtkvQ+Su~ zT|eU6LPMhP z4TRxK!^}O&Kg);SNj~B)@-YPh+;G|;vfiP#K#T1Yyn1axK><~a>>l}9#*W%$d!(Du zNG8tOdXV;dVJ+E9gkTUVY4B$QC8HNZQi#M_yd^+8hKZd1GIcyzMlf1w1RmsEGa*L3 zQPTxFNol5CSgVLZ^k1)XW|BK_1Q7O}esg{!+PPueyNPqT%o5x99-6v(sfl+rH$lLQ zSFZmHGfUR`lYz=eB~=s}?W`3m4n@xEIh}tlG&}K2CStraD_|+RpPWTo;_2p940Sy1 z%|OKj-IVrns*U^0b%Ho0y5{$i{>my*IVvmh^h&8^#M7(9(ja(p#6gF)d-U7V?X&Oz z{<)UAyh;v=^wv1+2hlBpn#~@X8IpYvTp0$t6-@nLtjI|(b*2at}((=%4RgX%H zk|L>AH&;=~F+eIWWKXihTEOLrxb!}VXtoxkpup}g%%cj>9kU7GG;Pw3(gb6{N6w`o zbacf^gLcwZ6l%u)YE3SbJ*v$~mr!c3;YgjAbag5#FRr$x_>_}lf^}^pd(1=l#}=N3 z9)o;D{KQ2dA(fAa+gt=9Qu&DZsf$2HDjyNIy9k7&@(I$baG8g4)Z&=`4a~q!3$>xv zJTD~HH6#y93{C4}Lza zzB?cM2=WOP#!6K=!O>Q)u_9iLO{ZvU9aFk)=}76VeMX2Z-Bn3eVBSt!g9m!)43DXQ z#&$ZTu=xM^ta^yfV=BGC^0L8lzL{D!SD{pTj+~4j14<4L4Rgky(-ZeT$I4Qspt(>| zn_!B1lq;!OA&Qst0VVmXSE?R(0+n@V|hvU^AiGQGM^QRyxf z8|+c2yJJw@Hgc)7rqT!0y)&tLN}Ena!-rg@O{a6=)?z-tGg&E*2^6dG1$R8>ffOA7 z=6JX1Io^#^!Y(y3_$GP6q7ti#6fAb`xW2Y|!3ab(9|tjUyk^}uBWJ5h zy=eUkSHudnhhRDcl8tyea_>`i(4ls*E~;>B@Y5@705Q=-3>1N-bI>6{l(W*5`ZK3i zh2^X4wtVGb>0M)CEnoSF__~W=`N~JcwJw6?D<2Wpxd@i8d_*jC5iDQ%w0v!HWz11C z2QS|@pRwgTB#)C;JWW~%U>jh;BzT0#mM+_79mkIt1x`Iv6&(CJWES_&Bza+^<>(Ew ze+cul>`_BRY+MNy#D?r<%r<<%BCADvyo>BqZi8q@&Aq7a!jRN%3vq))Pdj`ZB;28Ct?aY<*e#;t}htVm##AUj0 zT*-^4j)iQUc%l;0`^`9AhSyM(f3iN+kG3cC^w)phH%Bw-ZX2cAC~Q-M;(vyTX+CKz z_%jr~{M3fl2|C}{%xO?4fSvlnAOUQ&HO_QoJff{Jd2CGjPQfb?s2i$it6kIamyHpK z{gLZs-^W?9EY36>K>-M-BFv<_{Vr2qpWQ8Cv@62VjwbgabKidaKta}8HK@VFA-e0D zyHX%xR^lmySWW^gVXk>^kuQ^c5J$l5F-VUj%l0q}-rj;YD0p{-UhcD-ulZES;u2=0 zN*RWWe!Nkzp!dIKqJUvIx)CeM3ooDsuzIx}+lV}C?{7BLyo7ZGnvvUeM~v+myzTN3 z^pJgb%GjYB@077acV5KFL$=;2V?S)~MN}Z0UE%Iq{nQ8SzHGY(leRNCBfqfbXkqPZ zAFL3pbgAvIzKh{TbNUz01^;|f5_j3BWpqdxY@_yZQq4x~W2os=1Q~+atu}=!*vD%r zQ~P+FecTfa*~c;Q@n-gTSN=yjUr-_J-}*lI3gv@Ix;4Q8Hff$!#JH zoDh>x;6ig$0tB23&2^zIE>umZKDwq$s~-3EGjT(y5v^+^)ZniW8`l7zWlq{mil$e{ zpc+R2vY!@X3d-@9$zB>fT2f}z80@*i8goG9YOhhMQbnHOL9RAR$=H)26-T0qaIK1y ziiVv@{-!{KR!ku$$~h*k)%PMw)d5G8=Ez*wXf7%cEvfjux_*rxjhEna2fPil^BX}D zKBk0NiKX>D+^a&yz$l&-sR*rK7J4@hvn<-WL>>pvhV<=P;O1d;-J9firB}AAI=<@Ok>`PU5zeCZ1vM>J1u+%RVA2?m6LRYK6)QK1+g5Y|06k zr_6brUNCJ{f9QZ(jv2jVx3Y293nxUdAvR@#IBr~r*>gb`+yn_Qa#D1dtynrMN0sQn z@SS~dU4GEYYlIwJy2%5)I-H}E4npnD(J=*~u(WN2R2mo#A6Sx2M`81&lBU3sN&Y#^ zMfHCvcwZ@a|5@<9Q}B*J{X>QE+314z;DUE-=oOCFnqh0O`*JXn#ZjwN#`qOGz$T~> z_RHbjQ|e)Wb-IQwR`q6%A@PQXX5AFo1EPYtxIH0VTx^~=TL*85$04g*chYAR>DP@kpcaL#`3 z44j@m=^MNUxSKb8ois-yjh%@ttRQm?d4%&9lftT6^X>Eoc~ zk8Ix`Z2R!bO3vFpd}$ACAD*SCkoRCwXeA00pARN3!!JyXD(;)vQwtmw_RjS%!h4Ca zJ11+oN%1oH*Q22S^tGKkC$rj~BdRxefv7C_zDtFI(o|mX2O^p3Rq~&^r;P7LKCxe3 zHL~eMy)C(DvkqvBRU*R!fuj9eWXLq8U2q)*_MI%>u*aC0+2QA<|RX*A`ekioYd0>OIa+b@@)mZq0BLHaCE&ZZM{%+fg_v((ho*T*pPaico9 zh>vsJ&|}#>tq%J#(L!|*`sPx0t+ynKaYZc0Q zMCkr1bdL^uepu)p;M|bvZ8}+6J{XW0!V__94LNgw5l%UNsA=!)#~mdVe(Y#{k!-VA z1v`^N7^KsQ1cbX}kdAa|vjko=U2y1)@nDf)q|(A}CMHvYI;@JzvlG?BhXspa*?sYc zdt#q1_=ZuedCipI@CWu~O&H9=T;awSJn^SN?8XNeHOSM74Mnu#|6q7)X+(}ntb0h4 z#`q(;)2&Vy6N^V!avmklDng0-Yd)Qn*MG5x9$p%R5C8f{;lqoH@!=yxy$>IDDW7YD zE-#ej^+wc`NbqfvbLjFDBV~ziAZWW^xUCo;=k;68Ion(GO0!L+f7&wuk*(33cFXph zN%SkOmTo~Dp`?FJZT(WDrfg2oj5|_0#+EiAta?K-pyVS>`}f_)0LJ`VLSyWYL|ZlC zz4Ui=s}@1-$Le@l5$QWNZgdjBy*%BfZAfGDSNmP^k;FBz^yj%)`&w&vELwkyS$=0f zZG+1re5WgSVAGV;mTiH`Le}3d4lr8(U0u(GJkW_d*W-v;q_UwDWap1*hmcCez;!8$ z+jEoM3-+&HI&w;?du%C2W{%1=J$uBi?Jf2_0aB`?>gbwnYgw4g?|+xgJAhC3ka&7K zonWiLt`2W>4{Qu+RaFnIio*vqDD9dNz6)=Sx?AL9@Cf6SF|%ow5jGMgHuTDxL+F*k zGxH+V#!K09!o<9}i;Nk>31ekCC-kl?cvls?9R;r}+k|;#xFPgzDR{SqUbeA9WN*P6 z6udh^Z;x3a(O{T~mQ3cTIM>uL$Q|7 z29iqP85z{B|Ai?%N}EOB#gN$gsBczzGNh-gK(x@^VI8B`9G``xL`#=j5pD%7-6pXC z`j+We|3UZint!|834po23Z8%RZJ;c;I~kzXWiUr0;79(jM~<-EE{#Q5eGzUHVX3EW zHU-<1kHfA)U3o3TJ%T4Lp2q4|a#+>Z3RN}jmE{l&>ybk$etnAyd@lIwW<$|A{Yc?w zd(Sxclt=a|GcIC>SuJ{Iy6-@6Mt(oZ<8!@V!^5fzVxh94({TO`UvKE3C&8^&-==ta zE;Jf;?_z=vIYpb?DZHt{1vz$X&mZpJ2KwNk{JDWYDK~b~W6~ z*hO(=!doWX>Ad9yuTJ~I*ouO;vf!;Mc*PhgMrjcM;5)$m2R}`2tmCGg1W(buC(l4kG>iD)m5X)` z)WHJdPZ?a`Hoc|I8iY23PCRvaTgW5F{gvH-3mwKSI1M%LL|Zl79GG|!0no#WEtkZ! z?6b3S_8I+#4zu;)H_-fZS7A#76i{YJiVkJ!J1B}yHgu8;Nl8Pu%;dq=`=29UV8j*g`-mP4EUhwQdGQIP`+e zc%(l4>K>@$m)(P@JDp#K_{0BZFPYHSBPUEgJ4p-$)2)ePJ^#CNH749;txy@Syu4>g zYNK7Sz!u&p|MU?Py0OFYqwbb1!|dIm;^*MGKV^cD`Ke~k=g3F*0@0k1IjzczdTzDrN+jH4msZxo0l{~QiNZs`UXtSF(q@ICn) zzSCP>pY>9ol?1}$jVaA9Y0drzcSN*8QjpJtItEfx`#W)k2LjWN2rKcc<74( zS?&i7pEu6n!Q)$BzE>c}oP&QlvMh`VrSOk4OS5DgcJr_v+No0~& zA9_QVm`^X`dce>d%u0JM&{Y@~-)_;phx5)AQIk12o67b$c??vy?LWA-ALXdP zJT{e@CRgCHWuK3kvU>h5P3;Q>o_u#OW2@qPIlmeC-m~&FbJPn`LLy z<;j&!PY8czqxNWTIQdhjS7d8REcYf&E=yDv#*f+3AAH)rhMH1_mhOIa1d(9V3pu2m zJ<0P`xb%D9^u|5mrT)!WM!bRh;ng^yd%`Q-;$e|_(Z98o&10Eg-yb}~a`sv#ms8wx zZqD~14KA8Hx%Hj5U)IP38sounV4=^1j{U>q{x^6%``y^MXBtwk#5TS&JYLfqUA!N) zh{;PeY?FDl10*^#U7mmngch%%Zdq@cp5C+9&W=}-fc35ZDXG^szBYUSV`kWydTC_h zhyp0W`EsXmvFTOby{n%0xjcSHUiK*do!(X5m+avZX7>Gz*um}H8R_~IA4Zd{w038t z-38S2oso-N;0G4?j0>!?!0s*}wtZ*h&#EMv?6$yfUEo0r+~5M+EpV<2{KW!l4&Uss zz}r<8&{Z|->PeIyyxpa)mRLotM*aII4_CqqmLPDjbAH)&&Xeya6l}GGn_R*Sm+&nm zbXbC`-;Q{J#|$OhY6%CsFKXQvhbiHDOL)=R)p~+Uc!^Lj+Y)~15}e53Y{#|W1&jD(qeC8Xrm@6L#Z)0mKxzpSRcc#q&> z@M{`o;5v@znSBosUl>|jZ<>#}`E`75eoe~FuW7mYb@t9kjp}In&z+HS^L*9HU9IX8 zR^2scr7?S6k>YvXYRucJ|k1UsiR_g}eoU*4^3@PyGD6OA@o=gkayQFNPhyY<5rWLDZZiyP((; zS&Z*khO8Mkw&BVvtgWbVo_w`R>^!k?-t4&-&YMkzml45O@=F0<#xZ$GCUT)-_@nt3 z6ue&yy*-gB_~26}o`UOjhBbVS0w)r|sGWe*#4I@;my(acLGs9`9daaIO07_WtKg7= z_n^?bp^Bv7#!dsu?nDBVyZ>N7$&MFL+^oD3=)+d6z2>|NFKe1T`AR}#ytVVLylD3P z`KQx8ER&}e0H&&*+DclnnNLNf^+fK&Cjf0wVY%kVX#N_DI5Bp`{KSQqT}H&Oi0Fy@ znqLaI4QHepoj&9T%9x3KR|$&AM7~q--W+;eH}1R3x^V-MbYr;d#+M0sYnu{tn-Wtm zp(1s|R@#+Uoawr8$rYE(pTqi7H@vkWh_Riiaj#FJ^TC{;;kZKD?ohmUCS&b96==TNhZ$qzZ(T~>{jDAQYEgE>h zTGUL4p{D-JW=|E27~IP)`_hGK6(OMFTJ$*$yr7b)Jxt5Ar}ju1avooE#Y+u2Qw3!r zah$Lrv4VGM=yeSl;~FxNNE))(HRJ$7-daNepPN0O$`~vMn9I}Vxe zQ^7m0;Jq^R_C#jj+k+y{!JR@+rs9HeVwuR<_`-%Z;tk7dD0rub-k!*(@l|-8u`5^* zXEr5h=#j*Dodn~;fJ7WbL{H@7`Xmz>gA?vMM=6Fsnz~QHJ5cFj9e%C5)8^NEL^7;b zI{ey8$Xk2-IrA?0+9elienr8ym(5OGa^)4rYv>r{3$JLp@Ur8lAnEC;J%DOA@`-RP zb*&F8z`L&C?F_v=kssqb)H-n5H3`j{$Z}%5&U3B=wa`x@nu*9n()@;KcPZYmD@zLA z*3b*0#g}8=jGm$IshGl)R;PpapPoxgt7;l}G#h&7& z4w*nqCUQK#iNtJ>_p!>$+^9lFLt0R81c%VxU-IiZ`E%uKl5c_l;nE2ujsKiM%bwaQ7N){+hB1GvhQIm)^+-qrry#}ZM> zyVtx;5Hx4;iZ)_`VuCa$&(bL&cV=s0l8cjT5j>nCDGe+pM%vv$>qP2`u9?j1x`}-x z)wpKztLWhD#`jGRPk0)xFcd~K8`!L1UZ*IQU!8Y$Sl=nsm#rw&cyYT5R-t3_g(ePs zUmKnZe%ArN{-{;dKIo6RQ~!zlh<&QyJuK%AYXTtK{NU9@s)V{}}Lz$AZdbll{*cy{CejB@=^bH3W@EZmqU~eyf~dWApAcf+l=nr(oKk7y@|tb<^;=4tM)XYns-!rTMN)OH{rBx8H*OZiuFVoV|MU*2jJW343~-KOIujRwb;3^3 zo039r$huOkDU6W&;5a@YO#mS+2N##Nw@b5LQ2L%;YMo#mL|nYaNEsF1sQ6cZP37r3 zN)+!Nj?X1mEBTKkYvqTZlqv3R;>g=AP}D5sg&Lde6`1ZLS9tdUsaR)l-+7gE>~F!6 zRYI!;1T$p)E_!7SP_9euboNa$uS$B)TCLv}d>Ud?whIrE!Ccm@dx$wW_C}B$*WD^; zPVT%IIWxD`x;ze93lA{`FPx+tE~jiA#?mMaH>B?ztGU31RqcCMEY>?*tz#>#w0z$3 zSo)T+Rm54gzXv1t=WSS?>%A1Esh?_Ki;Crp2QgyvHVo%^etWMV!)4g5!9^4;6%aKl zY+HJ@LN@*Ww7(fIv{YW3BbpCwcpMbV3RTSIc&MwI92`P>DlPR?JoWdWWwgv!xi>s` zmZ7Kw^q+pE-DpJ_k##*>9;7GvHe-WgtW5>A8|%3$*k7gBin-%b78}2iFW=Uq0BV6& za46XIYPLsP7F+l1xid*0O@w%kIY)<{|m$tKFZ=^y^MSmS9HVzORygioM+)(-s zha}faO_N(EN{grd9hBPyb??q_9B8o}Y9l6`RVp8PspZxdrdcF7L6!JT{MUo$lO?LD zrYG8Z3-YloL-4eP-5@6*(yK1D!W%Gf9Bw0ocC~_4kY4O5>eH> zz9z@7tq5Dec9HD9ej+*)N~c&GEbI9sHwMv`&!|BerIqv@j6WxDVweT6-1_kRAN9jG z21k7vTTZ+Vfc3nFP^*H|8)k5W|7*8)(hDns4HK~&#NuIlnT7eiy0t1EGlZIE+>qYN z8PJXPV7cI+6&GFe?S32-^=F_f(J0;KYP;ftqQorw7>}3p)XGCd6@thC+{#=+MVK&# z#ZRw7Wp;UJJ29L;_^UO0xp|{5FyFa^u6_ou%!z1O2~e8J4oElJM2)r_CW<0e8f$5_ zgtETF6@euS6%~&7#~Og(?iRmVlb>O)&2>*0>-#l;KhrvP0sYjU7LfXE=o56ksdZhi&MUgd&6uUh8k(X=>BRO}h@2;ekxMO7AtEP* zk-kMLMC3_fr09Yk3lVv87@4+6h17SOy9I=!iPugBVNto-2qMAapJ|`iHFCO?Gy%1l z+=9;ylX54m4!v=?fU1Iv-rJobBF8?Vsl`N4Kk z2kLvgp^_EABWDgAcl`ozq>b1MzIfrg;GT8MRrqgzj<#5OomOseoAaw9!QV6))9cju z;BDtugM-(dUyTgxB4Qfln}ZC=Jr|sYE6Q?@e;!nH#-a0>V*Y4M>L0PxyIA3@q!6)~ zU*sx?2xCF%gywHllq6UY^;p61Ld zDR8st^4>*uZ{|*=2RZDe&)pW>_K)35QZqMmAxcf>KA6C)t4<5z{>e8{bUZzK8{dRq z3wly=hZ7yHX7Lo@>v3yK2vxTr1+K7lK1+ME0j)8)B&yY6Bqw zRyWjKi=wS93@feL@u#p=2Nx!M*ghGD```vXWet4nf6>5&Z-fn0lW3rtL<2PoXyBY& z18;B*JTuq8kLUI6{x7%hnZJkaQ;Yn1*yk8Ro?@g z-W1{tf0#Z*@Ozo@&TAITT?rZp^@VJ{qCL3i6-~^#JR9#v);#YJd#ZjriVVSTr@hMi zLebVHngmhY%ksc}*CRp3=drc)ZIa<@3*X*08h0RQCp+7|vQhDbM@(-zxciQ`urHgANKetTw*18+rw3FQGW`caqvI$IWeWN_ju^@h0we zt(!wI_^$``hF`9XAsJJTdmCRvacsnnMK9=T7xw12p{wnsT#0NEXU_X4OZsoY0p7u; zOthcuwR6@n5G*Q!;lalJLnk}O6A~zUYM1mzP()J&;aS2N zlag~3E+^dX!qNy%>bP*6SNO*8Dx~eYx=t^3?y)>aC&HE+1#mXr-*o#ZI1hQ zsJYVFI-{=ndT`&g4bu7v{=GtAJslkorul-hDQ&Yrb|Aj=DBa!$DQ=JXXH>-|ol!l1 zfg$2xGtMrnLhWr6v%mB8^aY|YT>@*F_=4xwjI*g}((cJ6i|>}y_wYADK7v>jh; z>jkk^xgPep8Xepmsy@I_&fcw$B#uDdw8QfwCq8@*_Hj`Lk%|w+ku-efK*h{~S>R{O zQBDrJfk1N_2z^?$Oz_dthJH^%a3iXwRprt64%*ir{P|VaxSYOQ^M+>NTax%#^M+r@ zBT3=}6DGD2DslRLG#FkIbuu$qEOdSh>!g=t3_Z=#U5J{tS^(d4M6+##BbyG_tZ0Pk z%pQQx5fsn!L{^rzKNmn{v%Vv>%SAcY2S{Ib5JMDpJ5$fyt#-g+FOmf*A){iE>frrv z(JRX#1rc%ruS-RxIpKomUkxd=p_g)kr?JrwgNfQ+CFQE^mm;3af&F9yJBoge`t(O_ zen>D)S7^rO_9aGyebV@o+^n#z^6=bdM<;EoTrI{**FbQBd9Uow{gd_DEo1%<<#5?Y zoJxbgCfqw=qs5}|<{2%G`$tWqauitgdG-Kz-#k}EZo9fTx1XYPZ)}ghHrJQOtS^5I z`;uqT!_A%n++`g8ZvmL1|-G5;{G0;zFaWm7$|)DPWetBXPD3lOyYS6pCw}35Dr439 zf|B7Tf~h2N2rCf@TE8n9MREHiVgdHue4KkX%9usJO)2hHgiWiWr+58Q=9+PidY>Zo zkT))qsMSi-qm4NM%;!1#4yvgS1G%83a2`6zQ_9I|xPU>m9>uAgnvK!c%UF)FbbM?D z6>PEoJP$UTMQ9r#Z1-oUI(Z4RqQ%N83r9LX?p?62=-Fyj7i zO`vhk*%D~Lx!J6a`#)A9i_X=oTJ#ZyRkux9dex;cc{tmnHdnKczE8Lj78PBS z>bIhn*;3nufP-2DlibCSS>!gM#s9IK1BwbpRLD{+#S+9Nlf*;9)o zPIS`cvv;4-esr>?T;9IXR{06r!v+MKCutG7x-uiAjaSmQL#-X$z!hZc+fF=~PVEBI z$pOXXiE*g{g4-^--*B76J=qVV$3FzYJ!%N<47msV+sxF4I zTx(o*pZC%8U;1DKKD2+o`RM&K8+b1S@BNj&Ez6;7*U)f1W8TqWa(cC0aFbjt^+W4} zu9LhFEcyiFmsz}kUg@u{XK}y0B55w>khLN8Ght%|4;X7}bAjeVPE2+@XjyZhgv)8R6w+yZ0SdPCK@Vsi^lgdB7PqN$nIO*7&n?-HzS~?ad4ageNMIM`9 zPR?N>tDsunrXvlNyA()$lFb=X=S|kq2Mf)13;Jxw$I|M4r9;<9e4;7y6q7R90TOU$K@3Ie<@CY_cD1kEO30TfrtY zD`-4)f7#7hru`42O|hwHcQoZ#uR*f3f)&!s@?WNO5dT!)eu6R<}5(FToBdz)H6fSHpp)$DNO?pf44 z5N-LnGWg(lc#p?nEWl_3jdN%sA|6!TA;Wb<9Zurg+L@@$?~QEwbyy&bEnmW&Kgw27 zkmf{N?btxBKU9h~y~?j?Qmt^81C za{C;5s%PY**#_~Kjt>5FqBibN(tRA{N*viP+(HQ-+?OZ58TJJQj)CA8V6W_5u}rdn z>5_)&0CRQG3NiXL;)ZI1uC@CA*VYhCtA9dQW&Hl#+8%SSx<3CYvrq z-*51$=w3yop3>P>r)u$kFt%HTrYCcZ#&i^O?hms|crEw#6KwZV=PnO^_~7W0=IUYd z%7VnVM>E+e_L^GQ-wGyC1?;0lmF;%i)>L7){Zz(uR^F7d{#ebFLn-OetB;L-yPJFb z$!^b|x$62u^X;xHYIlCDawmZTT#0qNyIMn`ZtG8e!6)Ze9`kcvGDi8CqmkfCX>kj! zcIF(bX&qZlO0;zczdEp9jvGtg=*nl!K%K|amv6~J3N7rWSM9-PJ|!4AVCPz*@~j3e zxYXahaXg~&7D_NL2mMu)o_h~PCIiBXfx9XWQG!wMvk6c4PXaCr+nX2OQ<6ZWBBhn= z-ue4A*ivX(#jM3?H>B}83oW{4<}Pr?l{b1NdKpr*<)G{hHLpcm7ZV#@Q@=&$Sn6^Q zIv0euD*RmwZ&mnyg}-Ov`xSmb;qP1c0fiq_SZkxF{y~NRpzsO{|AAVWI3XU(uN;O# zE5{AR1HLxrLD(+Z`Zy>j_#G*Ix^iFGZs1>Z^HLxwmtgY03^lpY*Lra)<6L49yD&xB zM0T+{rd#^VRa5+h_prCemYCS1opvtQRAG%Y@!-vH1XPkZg|oe3xyG$R?Y5Kr`Zn&p zx?_CQ#U_o6w(2NR$Kiq{E2LX~o1&@uX5KxpDfHQ*?XA@g&ZlQan6M=r-`D_eDp26~ zk@hAA$LuW^t6b{#D0jMl!VYa0+nX15mL!-1Y#JXj{!6`*=C?;R{nDn==t3bU?FgsU zwJN9SKb4|Z=xiN}7SsJb{~ld)R;{eS!bYCuv28bIM*@sG+5a#M(7+@=cbhv^Z^G=; z%kEU2M>X!TBYXr0chca#@d)&WR2)v=LM(my@Q(Z}WgUsOJ`)aj9u^<|-4%SN1+baE z?XtRf&E-s^|2I~`#Eh{dd+L zxO-R|PHTox$4?Gjb0OM>aKWWH9TxVM+^ieHtOHQftPNmZ2^u5=K8^@SYaEF$q&3R! zF6jRcJH62s_X;5r#56}vpETvjvII|)Q>))>Mfiyw{aW((*^(d6N)dhKh^vLWK>A-_ zEaGZlRMRc&Tg?l9TGDhRU_SB;pOViQKjO$3rs`}XgX~3O_i+w!>QWiQ1M{Y&`ltKx zBg>|b-}6ZAUWl#)kLcohiRBB8I>WzgM?XYSeOz=>y-8+JXKLgz)JApJq4pg~UZt#A zI3;mVeQMzpooB5-2v8IqFVs5t=6ZVFj()>bfY3HQa8GWxQ!|PhFx{Y%2gR4REiZ{}> zMaA1_+oIx4v~5xG7TUIGR~xA3uU*Nc@=}Y;F-qpf)?FZtTUm?2JW~47T9rlf(Fer2 z?NiUTxmlWz72@#xn~ifxV$*4vb^eZCb9Rk3MCCcW@ztJ|RWuKoXILt8->}B(wk+4> zk;Ws09nz4{Fhm-U-ZdC$L``XUSBT>WR$NgXDe->3@P;?Z7YQ(*Lk^m8hefrZW|lH9 z#{w9((@ah`bp-P&HLxy^zpg}I`z>SS3?ksbE?a`n91Vu3Q@x;^kgn|rDjoyp?4`~a zr55*RcjvX2vh#C6X~|Ob%vEv!+Omck3}C5+s66uM06rL{V97J@8YiHz=YLu{dY3W% zgbfuXU7t?e2Hq*?#x-uFA5Uqiv?RY;lGx2~Lm8xV;0tNBY@SoZIK`l87pNSnR6m2O z>CQ((kJkHY1W~S{rdzY$AH06WkJ^DrmJbSRi zCQkIb-MWfSqswP*GX5^7@BcqN;JQ*LT8w>oz*X|6+yU2lf7LvD4hx!g4sjRn7B*iC z-1g5!+EKNsmVBQy)3bNyJwy4;>JCmjn*m};;xHWyv}_P$OA`AuuhWQ>BzAX4Zlc@= zv#+|s;J0*=i4~?{bn{F!)VhE#g)5myNX1%SEXA!?mkK7-N;BiBvDBYpHIMP! zH0Pi6t0$;#@v!RAQQA=RN>f{MYf~#23v{Hi{a%&rn6_1rY#m%(i1{)WVSHRCQQg7g z>vMeEuUkj&f{$CpJm_SwQX9GSaJVbHVOz}KKjwc8WPQ%3`n{TS%KEQ9z*xC0(KR=} zMF%@dYaWiK|7FP6Yy#1mO6&hR0S${PTA)pPdNmI|h<{+8$l< zbudGY6^;I=yYD2LGem#7<&|oqdQ}pU~ zig2lYY4h#OVg3eayK(_oShaE%f;n$xIN5LvnASkn58N& zAG$nI^g1-F#1^`3t3@ycKpn+}Yc6qdg(#bXqBDp>@8(a)Ibhigtet?C-CYU^nqRXG z%)#&0<>0wwQ3y|!EhLwpV$6thS30cLs>gvLns2(?8k^f;tjoSXMv*BoQ5z*GXnAY* z>yE`vICGv&YA!tIXR&tF@1^k$Y!w!caai@-5e5`1qD5v%YyoktLVYPo91@})bOy5f za_hi)7$!EoIH9|(rI~!qrVm$=n7FGODj%Q)_=)ShlBM=F{6=gL@CH!~iR0K&4eTGl zWaO!Z5b3wINXuaerbI!}I;7zXn;$iMaDCOxIA-Lr%*cjLre3#K!*slQul%z8=FJY< z*kr=Imlf{76HSVF>=QaFO!4=v@5)$;mtS*w717qYl#myY4N|U%CeN|7d)(eS$qDkJ ztw+Ke<>h|S)_duNHgbpJnVi3~h#N!s+FAX|>u7{%JzU$3w$(E=x`jx@RHU2mW(K|` z;e?yL63?kTNmQ(hHjQnnv+yOlfWQ%Tn%gZVJRPffoc-eQ=&hT=EhDnfo{Z=9RMSE~ zaO>{i_GtZ+5)Ga9B=*&ldggj?4X$?4IM(1;%`NXEW_AX5KUN@S>=^8g;73fK_Y*UB z4k2br>h3D#kYAO$XEqukM_FO&QrZM>9q67tz0WvFnYy`+2SO72TE7L+#KVD?Za}w- zJt0-!DIr7!&F89-Xrj+Q10gUfFIWs7bR-}VMh>j%gO_uJ)V_k8#T!Ksq%G;5v06AK z(N+hNTcPl$qPnn2L4rz zK{TyC=+ETvH{($)LROf`azuV~ocL4`d$g=FJ5TFI2tO|pIb1lx2KfWzB3zAhbiNG6 z-}rIW@qv;MpplbQv&nP^4KV0xZ#~!8y}`HavL&AE*5xPhpVrTE~Xc z%VXSmpcZ4?pEX8px5GalZNBjgb=qLyj?#Dpc*4`!{R-F_{X^4I*)$(RUMD@N`Tlxr zQkOd4^io|m zHQW+L8dmP5ysADep*nxc*hXHHj^6kbp>@%!?aVIX zu(=XM!z3a1zk^%vgAu*Ns4>HZn0W%?tB6@J)2uB zvRRFSe^Gc=kv^zwkB+f}xA&IXslVthsm;~3?Y6WdQ+!bx@qcHIP_Tam7$I*;>R6=?AG*iEwco54}Jyyfv zCxKwed_yeTbE%fHQ7M;`(svg=N;aCnq(0jvJzKhPJ2b|xF1%^DlOa|1(3e-wmdd1+w`JDbQ_vej87v-HF-Nw0M7+beS zlOjlR*MR*y+~{l5>2*Elc7{664w9I+w7$2^LOlR&Y5ntU28y2g=Lx*fX3*%Ve}TY@ zZ3d8@`WFfOrOjZ{Q~wtNe{D0c^wj@VgBs9rZTa}!-ISDFk=AmF1RYn|uom)I?DvRu z(gMe(7l{+$k8=3O=4UMRM|VR#x@H*k0+(`5W3l%imH1e8yeI~|O-Fd?QRUkjO6od~ zQZrIdUtxd~i^=h+k##6g}vNu$E~{^0Mjyq^>5n5}ONzuY%FK95g6()YrX z)I8^Z^*!StLk}|BtnV$j8rR!ZZVDCv^#4o((p6(!qCjB zY%;cNV&{7XWyIR zrFt#w`n@MO_o%r>Vz*rtP=NOl;8^!dy0bj1_jpnXOv^m zbm4w|qo^4HTpa3|i0F;)>Z|k;S5*BvxAc0Pg(TbAYRF z&rT>zAS{r?T9&9SWv>32Tcq=I(bRGs@pv_xqUmp`E`RY1JL1{1;*9jM71JlhE6SW0 zBj(@LrV(RLm)3&zyCt~UA%YqB{uT*q9 zwoe*TS5)F{0~1j*{8VacHE)a8mUId+5}E>1o66x2$gGjl{!|s{*weNex$f7@51#-xr~Gfs5~`eP>an%liDA(s8|@@!)GI$EUw9*(y=8j- zjC7nGS-9)I#p<$*!?iP1++mLL%-?OW0@KTCb=LEpbz0rnRBh?0j;C+8q`Ng#{4pJ% z=XDv3J2P<%uEzZhrs93oQE1coT*C3su3}JcL)9dI6DBxT$a9zfqKj zDG~`5DlHxP;k!9(<>npF^-@&ujc(fnyp=;!XQ@8!Ln_lR-_f*){7PIC6FPVAOjBJ8 z#@##n9rYMBN@WvvUD-aavZsIaVU?Y%%GiJ&y2vq+CFj~^!{TxjRorhJ)8PL^EMtRz z{@Akm3EfUXvr}+s7=Q5C#A$K=E>AdxI~o(7u9LDUdp1*;ycf4mcy+?oSj$PzmefXX zxi7kGBZ_8q(JB8QbMFElXI1C_C$wq9b;3Q|qf|%*q+LK8E0Ae2?F^lPLMhaRLIt^b z!2%g5TMDVk*i42;<7%}kUF)u{6=mtFEd?y36p{jp0bMDg5OIZP94-|#1aZm#{rR5f znM;zEy0881{`-PFXU=n;bN$}W_k2%(w0c{#IuE5zHa&a&v#HC^V@Likd)%@xnftnU z0<^oqDk>aTBK3y<(;tmD{hE5HAdV{+G(Oq%^m6=7Z+UANdh>}X!-?FHQ_|Zh70(vh z2BITK*<9@dd7sdl-A@tsX6(_YsUrb(y3F!>@J|LYZ@f0WBp0}DJ`1nxIND50<~kcy!& z>bP%|3B%*V(>I?f!PCKRKI4mbcRr84?Ei8;*Fq%5!c#Z7JD<<>)n(E?_KON>ew^O{ z{JAJ|*Qr4cL7`)vs;SDImidaP;=%v4ng?X-GZc`7O>z-QNe?xbn$!^LKdR52zx7Vr zR!CL(Ut6p})J*)BkSr3MzwEw)e4(b?MW*aL_fx!}Ay+!T_A;6|rn#znPIK7+oxDDO zUi)qFs`TLoKDWU=0ik*mBb2J^;%X4rWN6PR$G6}9q68oBcJR@7$?n3(+m{MHj90e( zy^IAg$(XYgz#aoK({fg5BWRf$8VFjFp>?1oHP$px&i%gjk@0{aL#{~$Aw{X2|FQGo z#H!txkD>o4&Bw8BKI#|k?tHv@$^Y~D$QeA1CbDUAcRC*-i{;pJLc3i7h|EZNw{Yt( zC#Oq1uSa|64ua~UU9D4^6&;MxU-LcC$&YJsG)7&DEAQK zNA{9`BSBN5?Ppe{aX<+BSD&AUv>WZCliE-$o(V5QkMZFBgFi2=?~!hOXI!+q>$~5g z|L5!b-Al%U_f_PMyT0LSE}j>jS9YtrcyXCOOVJ+KJv$CNS<*G3dv>C$rMi3eSzRrA zbkCmK)k03Pt7T&M>{M4vO=$ay=Wav>9U_Q`x7_!uFJkaHOnA9vwQy%&3y73zmxxFG zKQ0>E?}YzratpJl2bE^1?LBf2GABC11cf#9J3CwW8)J5m(_d!$a^^SInE0L|z}AJ} zLz6w)Xh`Jv#t&C2aV2^jf_-2IO;6H%nqg75&xG^?lg(nAQ^6vX6t7HaAR~i8d{1_g zQ1*J;4m4vE2Ta^_hnA+EoxNX8CGaA*|6E)T7{edG7%~Rha*AYlDBcvw*dSXP|Jp;L zY|2;5(V_}@ob#6R%iU}X?>53u?+**~$1scxBI5$zzxb{_SwskIe@hYPYW(+K%;I%y ztrcVY*rdh)pMtsemc{)AiwRW0%aiUgb;6_1=eQWoHJ%>Mce-7pim{RM-S zpP6;`FL5vWHnHu_OnPnAZzrC7n*$JUBy(2|Cv$kaVl-PYfRhHA^?H(X>#ijUg!kay!##3I~ zq!BevSvv4Kkd4P4Yyy_~4vo`j*govlHGbQdQdwO}@=pFR+8;~e^p(4+HZ}F(RQ9FB zmXQgVpg4%mg*^GwBbi@l5cirYKQeMmDwnQHP3^-Z7T@xh3GoLpW$0fd-t?E7j!SHL zdk?&dlaX0F7@KqZ#tMg05Zjh$dg8`9|0sfH7jv>tV16_IYyXI zKZ2WQWhcIMws*^0%+!D0N-$L%=xF%`!oT`I20~KV!9;cukL9(gEZqVax&5@CQJ3v3 z<%ht)%B-!NhG3)btMUlG`oi)XBgV5g8oa!MZjs{lScI{uZ`n!wVVoSU18iPBGw!ub ze>?spx80<>6qoS!UMV75-r_#1$E%axsn2uSD$~gUj;0?2FKczSX8DDzJK!C|BE>B; z*VgKEler27%Z&kTL9ZaoAW8tRjT|w%^@2$+jZeY?Ili*oYcsvc$T=9dBIo?dsyjKE z1MPNQli)b429{Q;DR;$coz;na?oAe6r|IZc;ewDJ;RmfQ$8#9u%Nqzf=3q7Gs&s^~ ziJ<;uwvg#{)ob?|Y)EC_NSKd3e#~8w+m{R4yopD|z2p&^v~?gQ7u_v3AWBr11xGJ;YKr(o@p8M>8m~#6Z z%uA*h`o{ejKUo+i|Gt!*6DGaWnn@Dx_+8(oHt*oSJd+>E-vyYB8}E1_FUll@QS@rX z%k`6JGwbQH&^UW>{c~#7wv$!>q=73~SWjMAsD?_|BjOqWhr4k;0&r}(84&NFi{+!(CX3Z*J4z$nU zxZEuEsJKOaJ)^;aT z7Ojh9Zda~X(@^Tmg37+MSN5gH^<~A_zI2V-7hsLPT({G{d>c3k`qC+%3i`5lzs*aR zI(?|?-inm6+^``IjL}BJX#ghH2v@2L3%>?0!gby`s4p`Y4W!S{f8SN`^}aE6o-}Tq z<;1X}&bQBY#PI()P_3Fb9#Gvzu93GQCXe`g6RU41BOGwZB1H2qqu@|x8jDdaT$ERY>vb)*;Zm8BFNZaWSH z*(NGMV1#e=();Mp!_{qPB;9S;P|R)Q6=qPIUQ(M7!+$I#7t2@39dx+@QU8bJ=AS16 z=X>U83n{3uJ`fcqy4_udM!7Y@nZjOi5#PInQVFkhiX86OnUH9w;yI7TF?j!LUg#Bm z-TZ@ga&)2#=?md_;?3_W?1TIA@xzIktw#;ts2M2l^C9%EY_Qhz=up3P>{~nND`WO~ z6!uCy`5Ii|H?I2{S=fEUyxbb0S=fDHAqs{3*vIz%*SCkg|G{~??tPkTDd;qFI=89y zLmUBE&1RAFyCzTC)=F(6RnB*7lKK7=`9*#P968<_fKvWhaIcJCb!^t6+cZQvFOs&B zTe>(tbLrJ>h@=|?FMd;0;+3Ri;G&~>alM`Ek`NV^_yC|}CA`g54#G6e{>Hfm-1RO? zaN++8S#$~ZyHvR|Im$;^mFKBQANtqZ7t8ATt*`vc^t;0je@;U{D7=e540(yG(LTx1 zyRz}HWa_j+W3_fYm(Ph@UZ0$KR}WQa`XiZ(|E!dof!v0rd{CH(b_Zv2 zlAyQBkbl)Id?~dP%Y-F<^xZq%Kafjr>9|<3*$*Hx5CNOeoTus>jhUE;-2G$GnT|U} z|8sKTO`v-vnj;&}uYXB0$ieYkTm2gxMyh|UuzwNWohrEoT>hLHUHde zjL2lf{)|fFge#`?{A_z+FiA`wN|VnE6O4*-waNDYVIXgdSN&_;@v8sd2-ydpB~mrM zko{%?(dLKM`M1#*v{K33bqkrU#Q{OrvFFa~w3(4xv5m!S?QV#BD|{_$HZw-vPD$T1 zO&#^UAJ=dyC2pf6IcINjup@7&N9Kg&b4lH%cIj=^#8UX&dhsOgS>D8S>))C2cRhq< zUp+KKPF(GwDD$7n{u!%s zf3FsLM(V>+CKtgr;=#=+u zrC<<+!vg=J>AkJFE7s;$GP$YTw+DGE>t8NC;2)3xM0%Y)%@NalzfApbG{{Kgh|9))eB<4%@F2(|`ufBgDfPlN~ zkBoM${F7G8dr*tU&0GN!f3QV-Q>am$t{XBUUY$OY@W+jX5A=jwZXPuT@7kF2&4bbr zXOao{?w?rEFOd~>adjlqE$|CwZY820rFNnX!s;R=4v9Ok6y> zt#EXSe+J;w(OZuz(Ar36k3c>*EuhtaSuJ8Pw7D<6f8nVsdlD=9+*GAkw{6AQ@H1MA zb=B!ZJV%$CV~{6A|7MB){Z{M(`gd$O z{o_qJ{p08E(m#r7{D+hgKjs0cr1LAlXuI{4rT?BNW|7dvpmO^rMjk0dLi(J_{hNpy z%uxdZh0Iv;{?=X7HogFEMB5JEWVCJQ9?>=*y7KY)CECWl@S8;o{THGPY>Mn{7`PE} zk)inOKiW*dj-aQR3xIL?b8j|r%gIqRBYMvXUwNwaP)j~Xs)T3m(v~t@JG5|a1-u3L z)>ejZ3#eukzRgnqeqO4!?ZUDuIneb+;e!D`7zclA#@6>b0~>?Czb4bLcE!W8GM9Oy z2D9&9c!oAF^Kxj<>r_ep%lyGhdT0XDiq4rr9P0d4)RRA0Wu8)*pXkrE`XfKByu7{i ziL;lbj|nJYBr}~C0mX}CE>KZ!(4t1SLd{ef6m5GZU!&JMnEX;r+%^&vJy?Uo(VVNr z$6c$Fsn-9`GwI}e)XDF-YAEbbL~e^4pPwy|GtTbJ0r<16QxMc7Z^ABjrT~e;E%^7ptFG$r)0rdNhXaL+Mc=bE#ZcgN%5c=0Pzgcx+UbOcuDc} zmrC(`uB3PpwT=k18&uZ+fHfjzxjKE+kZn3tr>BN0=4l~}qzY%!VN*$K>P{}{9Cuc3I8hEGygE%hp<35BCL3MAt0U1KF(cZ^O&MU_Q#6NAm4UPU6FyQmp9 z!fJH!ix|ss9+A%98Z=$H5NUS$kpJ{SlkmV_xsJZ*Un0A5J;_A&>zjBK6`!gr;b2~z#sUa z0C4l@lDv!gKjd9Os;`zH()lFo9V`RU?6ml{6gRRISZ0)gVI{wXXGNQf+9iS9Q*(i%N-a(o*O|Pd^Hqp1_Z*?(QjkcxcUqafcF#WgM)X?gWz45qaq}Q zPeD>x79{5d$q;+YfMDoDwU_a7Ldv@e=|2R1L|6m*t z5AYw*yl{}M3~knEOoHNr3-6cy&+L7ZQscvKH*d<|cbTda{2HApn>2&pMZC53cJO;_ zxMr9Qbhx+|y)W={L^yrJKk@x#(A&9|X-)**0D<#j;L6BEu4OHgO>agzXQ60CyC(NJ z^4^{K1}~yrbJz-33S*A0&o93#%4&7+pLl}t--cdH_C>VJ7-?p z>*%H99X!zqUGs z>nX5~&8%IHcTfigAu*{=eddA~>x3tQfZe9Y2J+m<0MM@jC7Q2aqWK5#3~9d7*5%+@ zsQyfSF=rIb4;BK6rivn*N~0J4W2YKE=p%+&{MJD9-*`7*9}#@d7c;f21$FWk6fGiHB*`z-YMJn_uJ>P^ zhETcj3-x5MZ4v35N`i=R4fgn&h;H7cUDPY0xqUOlFcJSEPu!%wi76mc7>x|kiyW-a z6xBb6Jk`|Nm${hV)uEwQ^$6+o6j+hpt{U+!08MN)5;;yT%jLDXF666mP)DU;til;P zWEH(vzS|=Mi7fkQOg_GB#Q6w<mYGIK zAQiihV)%;EF@4VF4(444tgrr*xO z@)g80|9!w}{&S=-wuLAv??+pFEi+2L#M3Q&RdkkQ@dLL>Tl_x*qj9h1w`g_YS=n|L4u*GD#XZPL24*QyuZ27B+VQg!}}%$}^5 zUR2=??bTe&3WQZSQKCVk!r-89vzw>sA)~-UWc%NPisbJjHT~KA0`)a#M4#J$)Hhhz zb|F7Laz+EzG>};wAWrp8O0_CMKweUl>Ttz_j|1iujA~6U#riVa_#0tF_N^O{|H)ew zJd5xT;54r-Owis8JhIVKG2M9`$H_|V(7_oz3bXK8cOp0+DF*>$Jr5mbW4aT#N$Gzw<>oHHI zv#V4;t!?6gA1yC7R9Vi3h3>^-9{!3?guVqA{@p>&Gs1E1TzSa6a3%Gnxk)g0)=JJ( zoj6UryMTL2YyB{>k*5#ec#t~F33=_wYkdCT2_hi@#6d!eF1tCei}!TXb!wG5#Xe*i zEZHzT*XaP3Uj8%=QAJg637?En^{yxL9aO!gu3>u!&}3`#e{A3 zGKUJ+$Cc}QQOk>YR{0}l2&w?VI2kxkYI=UC_M`_V?>gtuLp{pLhqaN3{o z$qAA>O3C3;vMQtsWjogW=8CG%FiZ@nPA*!r$0|WJK)ui&wz&SfufOadc`9U)ehRX2 zyHOGRRwA7rv$1ZtTAy$?E06p~lvPp#!fENus|DK1}~Zw1>Ajw4c`u+AGY2H*dPo9zQ1lX`YH^ zH>@|X%535xoKNW9l~uhia~lu;^H+!Xe%1Q|e80K56lu*>;MpgJ=;_0P;G&+j(A0X^ z@J&ZMkD^R3#|<2wPouM1B!BpL$-+ujr%wsYj_EUp41nD-4XfBn#)&N?SiVSSg3SC3 z{;+m}F#k#lgjUNfWYz)S{<)Uv^S(O0q41#pB)=2c{;*t2SZ->mT-yi8v?dR-Oaqtn z;=;!YoXX`(*HcWULZIsO=AftPM}w}VPcxIL_35d`QlFkK{9|Fi!amd?qi}!W@Pg~f zC~*8bpU{D&8d)Vc9_ABermAp2Vc)_`EXyA#oTh3{=T8Y93sd;X=cc7qaQ?P4{Tcdv zhLsPbxN@jX^Fv@+I7Cu7y8!%XEbLjBSm640tF;81KLR&a7xx><90b6*|~&8f|~BJpjoo`{#tboon8>%4tH1 zT+6`#qG4NYx%WFWPxB6@jE#TtM|ygB)xE~Dh$W#nXx}_a?N6tDj&X8>vQ=eNG@IGZ z*C+-U6=pT2a$N%v+V}o_wUO}dVT^Byj$W|-)5E%k7Op^XepR8C#aBGE9#N9aZOUZF zw`NCtg#BaBmBK@Td99-l{);mR{E=JZ%01gwG|hzcEe+U}!O!PW)PQYl7W0~OT?;W= zv_>9iS7VWln-Xf@U;u$wVLOoV*k9oC+5vnqrG_zpJHiBy*s+m$xSV zs%CM6`pIP41OjzGpIJkQg|{M|Sq~o#8FBx!`{|YENrgqGsJE#cl8a1pP)J^Um+Qz` z#Ct(Yp7U1Y9z54O=*DDj%9F|5El&~&|F7x23%|f(O7f*PXw#8XTC*E8UtDG;4VZ9= z(uQw1vXx-S9sT$jJm-J%jJHM-D>8bm|Di#-&1#uR zn3);i*Nu^AUq;#038Z&*+G(VqDp^e33$P(lQ*{^zOqX?V%g8(@}F4?*quK^ zLNc=a^9T(HfJp(z7_t6w zHgsw5Tw+fzGf1hTr%AsutNL-X;U9&YgXfIkIW2fL2G54zSsy&>f+xg7-!pQ|5G_}$ zs>Mq4To^p(*%K;c?RO~Xk9%V#nIJjrGWo6)5Usz%FXaxFlG{tkfl_i?DcM^}ZYm|$ zmy+vB$+bbUuS0;V_64N+M^e}lBxM)Uzy6NaQs#$B$x}QTU~0-qlbQj)iA;?DC3>&Q{K==(RN=K1>HHiGaTG@%8MRkJ8Sk|y;n*($GRK{zEaAW;&Pz)N-5_(E(emYlt_LfPZmQDjk1#D-*&W-{842b$-i9h z++_Iu?|aLIPhdigHpF%7SPTofksBjKxz+*BcW`g?@TB;?kDUGT!}<@>wFT>!JiK($ z_S4tmkdWV#KOLLJ8>%9omBfemT{t|DSBw)FhpZtx-8gFm`WEPxFj z{Kq80J$w}G9D)yvXnT;G&vPAX`HU^(Y)%PnuniKo{I+L@ItKY&oj!c1Ll|3~K5nR` zxjOxKL-HuyP&nP_v4uzUmr!R=O4lphFTD3JQYK%tJ)tA;e$sw6qLJPxx}L)!wTZ0! z)kft_WbltXa-7zi@r@GS38fPPSM1^C%<7CFn8XaA4t`Vco%XYlHlrW?1XHdj;bU4C+ z(1by2VIp_-Vq}G-no2HwXvqIFrZ!t2XMHyRLfg^7$DLQn90=}SIgbD>0v_P_)BU)d ze-&LbH>*I~`e4Vr?fB4X;b^y0?wl5mmeay972lURFudR#7*gKd=7v}_h?L`M-Y5- z4Z2Lscr)XPbnXpT@xMeR`D#+Qk8Xn>npf+*aX~H8IfMM9w|sTsh@HUOp(>DT7!Tea z9t&?q{gN}kwQG307SD`V(!kp*IMWtgwDFHMc)ON8|5w@sZ%CWt!x?*e24g%8#=IrYEPoPfV#U)T9WRhw>3X*As`m19YA6S%a=Gdm(h~Gc|xNbX=e-dni3V zp)}#lcVG_&zKAw)NC;oo?+m_<5PZF#YV!M&A`HROG9q5MuyBo0O%4JYa-DQ9#(>;t zl$*fkOi85kTf)K;Ik)+UWF$3I^sBH;R9rZ+pN(QG-3-Wc1@yNq^zYECb1V9g-!xty zZlj<)jNkb*#QcL{41mSl1B|2>fz{xpXm2=welo|MG#?OEx{O%OYZ-(*h^|lN{&k(w z=yQi+t|%-h%|7@h-R?sbzA>+a6H-*>pRG{lA3lf?mZBmif~K+$s1<)5osAC7UW~Im zp|h9xtJQh0CiZ7|a7QoktY+8oI__RC^l#=hG;M}thIg_e%%x%2`3q;4s-lTTLfbad za-~hD=H*mHsd`E|mcWz*d)kVVu{-Vl>_C$-1!fAanSX?S6zO9){}w|o>D{#SfgbuI zf0QTG-TxV7iwXP_JALv{bTXOxo7rDU9>e#O1} z=kZK>_b(MsLBr&seO4gN<^`&G(kVJD-3bGT1G{-=w)&3$uF@{>Exicco{x`tYxW~a%obIuC z9JgUMFfrnH?N^DyK|Gxc=DT=?_7y^3DW2hmIAEMR_=!0@AORbxHsRtKdL-5GX|Brf ze1PCFjAuCfRU$z=9x<#r^*o0U@oZ&0!w`O*zbyBsVW~`P{_Tv<>OY!3CYigbHZk=% zLKoG}0r;dA(>*7Rtp(Hl&GuluvqBY=f_E)A|tnXuyc^vD8EOm33St$GJV17+o-#_2XLxYvSIA zdi@3aGqNnof26yNe2y{jeiOE3R#n(N*23ZaHxs)<)~L*4Rix%X#J#h!Uf zEhT>8_nz?9$R>evd_s)kvEEef1Bu+Fwer9IdkFoeME@g$Fqsm;ys{_Pp`7eW{f)2a z*Nz09C3^VRQ62sd_J)s>)vu`wa@>9_sF*F2-oiwyIeRAIwl|qIFuSN%QOOl0>RcjINp z^B?Q`YTFXTCC$^R+@y%J@#8)&$AXu}%9k`Q2kvH+8 zgm>h_0G(Fy42sS5T0e>Pc_Q!T5*zyXMD9W`>V>w8+<5z2hOLtRmL0*<*E3Q#%a82e z;>UB>5681N49ELt1?6T1rBd0yrkdVpdsu-seM!E))PTIiqa9i@ z**{9_b?%&Cy%M=I3->ve5Vk`IwO7z(^S^>H2uaeA7A3A_Q`7z2P$8#6QlO zFSO`kS^4iLfbK_N-*}ONlHy84$ML zghG*St@A&$rv_uxh$)c(&RE~}zjHV8FJr|qsbZ{^@~h5k0ME8l_MijC1vQD>p(4l* zo+pllXQNGDtbpf<4xYc`P-2f!@Ep>n^Y}&+M}#o=$wUL`n!OFAiAZ-*V#|vY=Xyt; zYGD1Uzc&Mem7H2{;T5v4`hQ{BAm#&rf3v<%R0HiT(^9#UK`f>*&l+Q;((2^S9gJt^ z5Aqy{=dRlhZ1ewobmr)Q;GXC9;5lf|+`05>{xIdih3j@up8x0jlymUk9}Vy!>hPmu z%K-Q=K%TH;!IrIp>uP$ zoL1*|>f61^bJwj3N?!9nMW%r0iW-BG5dJFp*NT@VGO+7ncBa{wvM|47M>eD)>f@yQ!6#<%<)p8 zx8lun@2{%5<^9Fi2xKqphuC-nk*-g&x0muhdL;c=qsfdntXXSN$pX8B5?w~2^0fEr1RccbKkcyfF&+LU`CHeWdE{Fi!?0-D4tH8*kOM;y=VGA=UKf zNay*72#{`>vUu$JgbUMlP-#&L`<3@sI>8z(k}#pXhkSaDb&*&}7Y;Ht+sEGD>|OX| z2`6^e&*Qbh-qAk|kAh%!BAN4OFnUBmZ?ZcLTCP$mS*c;%M1f4iUvj6PIlc~)?D7dZ4<`!&nm{JqpM{a zOtA<5@h``-Ez{%Kxiga4k2j;}ec5%(#jhJ`i4$*t?$FuRoS}=1pPedG#h@0t{>;-) zl?}?Yy({R?LiNW#la3T;C>VHi*A2{wkS2w?*OH(I^WxcM3!@{CB)p5KXt^RC>kwlC zI$b!eM~8wyuAq%r7uSRZ6(AQKhD6zr;8HME(DWSl?Yt4sEox7BR}$%Q>pq1XBUm?9g`hZ-t7d}`H zeejF0e<=@1XIIF#^a_-ev0W^p43XRyfHJA=1dlA5AQ`{6!0=@(rtMdvw=Wdh!~SXs zR?48?eIQF6P)3wYC?h*4P{x*kGO|iSn--&tLQ9(RO)XDsAEe* z@QqPNZUxlvu}NfGSfYR;&ZWr-qippdVH|3yuTJj=U{YVve)$@J~Q(h6vR;0wiU-c+n@Mn(S++3VE5MD|ZU!B8vvMj%o3E7-J% zb}53g!{9)f!WYNx;HW(Iy9#~MA%5@UDDKZw>8Fef%~8R+ehYr zd9Q}JMs(_6u=!332J(%gPeBeyD&N7T`(Ts4`c)(Se?lT z><>BtVOO{i>C#2D7F#jNv`T8uKBtRZZ#~(Bt)#~-UDyKxQGgd$@Ir@Xdng|3Bqrm7 z#9hlr?Blm%-Jcp@osj!uU*?G@8e`w?Dh+?TAeQGq@Eo+Kcd3sA80)^xkLPCZpg7{d zY-CkYwp&q+XZtF~b4TzT*7M5#*;M0BC(H&_CmCJJo=v;62e5zB8MQUZJ#-%p^mVom z^H=Mrh*Utu`M3EMl9lW)15(-A%`WL^e7#}U_&RqSd|mcV_^PuN!q=ep0ltpgc?8vZ zA!H;|Eho0@&q4v_Ec0obJq%!mlf>{e*0w3FUCXXv&y}* z@a9#`hS{^MGm1T)I}5^Lor(9G2^o%V6Ux(O64EJwaEPs0NC;CH$RLH&LSZD=GH4xY zu|>D&K@c%^))YZ#Nze@_gjNG)`tc$v1_Bgf9Kpu-NMNK-$2RNtpl~Y0z{vw( zcr$Q3gX~@N*QE<83B*2AL?HmAa+Rmq4%HwZj%8P8ixa2eXBUY77Csl+1HIYPK)iPD zlr;GsLNW*;*`D-RpIys5ZM-h+Th^t$1NqoghEaV&IFPKG_Mli|v4z{EKc$*p zjdWc02lSI}I5PexMpI@R1Jzx%JHd0IO00V}yk@pBP@cv>+3wZ`8Y?8yFuNgmHtNaJ zK`Yn@#U#yjnQYX;{t-0o!rMfD%)pd#U=b}-V`=gFwb;XOq?Rpf@%I=PGf8fROAE zDnDFepFJ8LSQ!q-J_uP35^UH_?%~1gQ5WN^W8bjQo?8UhqxIk7M)K}PCcOm%uyeAziW=dc5U4GJ5>gcZzC{H)qozF zw$Y49Cy<l(-wh1htoSy{&E9NJ}8-~7jiG*@9i97M*t&Mu>6 zv!P{Y1C_T*Wsm^T`5-ZJ%ixW>G29Kj6XW+59gZ=!;J6ov6Y=aH;!~etmqnJ$$JjGl zeq2cadF5r+8C4^ZeJ+3TD_DSVAZHcxNBxm}tN;>H9#xsFDZu$1rL@G7&Ov_X-vF)S z-o7!WB!2nC74d3({ET^x431R*f?fs6eWddP6UEw`f}cN?A6(2bWpRQ(G;W3~j8c=R zI^}(DN{_H^=3UaoBb^rV(_6GI(ciz8jHGu(PvIE-B}8Syi*ZkH{{Z`g+!*T0&r>(Y zSbdQFQdJ`D2kVrBC{lSqSm`6<$$_E7$OleeE9~p&c_=rIBIOFOUo>lFFQU656cF3B zAsv*pjNd&W>W37Br(pr*8l5ELC{-Xm@OoTIHJzQVziNNWyJQ+C*Xu<7z3zxj{W9>uM_V6@^fXTxJc!7Ui=>;@|q_-bH`j&y#5oU!Z6 z^7d$XIXOVk!(3{0rM_vp@q*8nG4Nhl5LsVme2TEZgY*F7lbbK^0@F`zeOJ}7keGby z^>8-FUe1Up*9@39A5J}!B!O`3VOoBPHg`Gj$lC%TxBiIUUym6(J=s*t!W85x@eb&u zO{Xl}C>cb2`$M2gB7$$ox=_kHEO3y55;=0X=aRHEMMyn|6xv5{w8svA_hN% z@p36+_O;=Ye++5Y-pQK0*id{6u?heIjP%R-(z8Jk&ZR5QuPESDc6d++A!0 zWf+Rax{3FouL6;%bxI%;wM{`N3jEZSXwVud(Wr#2MkKRchE}XfLRD4F&_s&i!r^+D z)=;({p~66a1vO4@hz`+E5vFFVJ5C}9nsx8n@FTWO3EiiM6!11TbNL_IA$DZh?6bwV zC@AbSefghLV9o>wM3I5CF$&DF2u9Lhf*#%Zn#o44H}9;<>`XRF<7QVbY%PvI(!|k&FmHl zMO{B)&Zqa{B$7RRZy_&oCCB2hbMO@A_9k*Sfw-Yui8LYnbK+&fyAW0891wSo@b(^_ zLfiE+G*KqtH**?-ZwzIf{3oX9lm{~|6m^H47#FU^(;90QlS)+KPicQdnty&HDSF=Z z?=--j4LwCeCPo@FWcG>&giN7Cg^lElGGyMvC)RmxP=6=G$lqYdOnILQ3?qts8PKPE zj&yVPDKu$Qy<5FqR^L4z@z$)a#m**kAAhIL{!LaKxT;xknrf`Gtag40Nfy>oLbsN- z7;Q71vT&OO^1Cr>wxcZ=FFLs(VrXeBn(cv@em7FY>LOH_2nTr%R9WqhVNltb1Q#8e zglTCl%ghW;qEmw;nG2_6wKVXH{R!;Br*$pp3Jf{21m7KY=?=()OiSIoF81thAj83^ zDb}V|g_?EI1{_n}KzvchHsFzQH&FGxV?>n%6B_O9v{xLaBUHhLQ_x&#!)a`D zX7I+nBv4;Y6m1U(GE^vJ1fs_?!B58kPE{cgAS@W}yatpz(&^h|U1}r9KgW-NV_?P` zpL%bChKTxQF9ShKHsLbTw+ox_$JxUv+JuYLL{e>t6FeJeKq9rH+yAXSoJi&*2z3CL z8h`#OeixbHqIVdYjyEN^;WOc#b6Av!g*hg(8OtkHc)N4*ww-aNX!nKCN_cpJ(y4pI zlmHKyQY9LP^u{6a-^7&A)ErZaWS(`DU8t8oK*Jk{Fd;N9U#t0LJ$t$qtd6n?Gx}-emj-iTv zw!K?jkZ~uPeLDL`Kl?k^diJ^2>|X+s6Yau69pZXOa&8?5*F(#qdQ&)o)*O47-Jm`h zMUqkA*2e75{CCk#_Lm`2N4qXyVPX|XoyuO@XwaPh^7ykSz-hw-=w>jMeF8M@5gI@8 zpCKCeK;75Iu-6F303f0X37 z)Wp_P6h(4}t>>To56~NRqc!`Yt>+b3Bphu4B7$B7iecCb)H*{kTTA*~T*^o$>v|z> zcaQ7EXj?AhT z$5~*Ad3vdnvc6%hkA@PG1xDL1Tl zIK#27bBb_NEr++jr}+(h>HI&rA)ZBlz20U9PJ< zMpfkoqOtzoS92wABKriFnX&^L&(*Y9byd)&0cNs2ncd=l7~5f#Feh1EGYF_S4Me&? zAl(NnXPiA&V>^_Tui3@sYt~k-!AoJ0+tAMS0i1raNd!LZm6GCGxxp>k{h^{Nk3Qg3 zd3?D=oS-`a0V+`>gI<{m>Z9Fgn1*!tVgSGHcH##~-pNsUu%|BRKq zM2+`x6stA2d|ly`@qk`$+VHlzwNdT*-L$EZmI(7DMFc8ITQ@e+17MM&MOYkb9^&>t znUe%IYP)kcog(lkI=WanB6 zra3V9dW+CYQvhJBfwI6~EYM4rO9Tk?(pW?AjgxPj>@1iuQk}>ZIj)Wlg)n&{NW#&pVfYa)mNs;vf?37&36 z2t5aG!hdbJ!;R4m%&^7`ftLoM%{#$O1JYx|4oS0I?GOGc;49tSOI|dqWf!fEbtR{i z!EC_IFv^XES+`HIU${>p*RjHW2DOXYcLKTZxb&{4RRdV3bY4VL-G?l2%d5 zN&}rpT|2k7ihqtHYw7H~4DAw}3sL&-NTutyZU45N04Qj;70~=?tJvqC{3m}Y-v44W zyWMr<%}|KPFCK_Qwktwp018~3ZeR9kS8WRR(&}h$mamYaNf`%D)?^lJ{!rZZtVoy~p?eLrb3S33NG`#!567x91!)`8R5}leoryc~{X) z0L>jMo^q+LGZUCnDeB+jFDiCrSON-aWgw#B%mmGq|3|O0QzoY%0w6g#2atY8_{$8H z?DOPe?M8Ij%Mz(55c6Ox{sk|I`|5fF?ftR;i=P`3ARzrFM8Cl2Bd{j~A_yYx7~sS` zL$q=nf@op@cHvQbDh8F8j|-JA>>4WfHK^=(WRLte5ncoFqO}{(*I6dQ@-z`PnL7{8 z6j~rcCTV0U?pjE@sJ(2YqmAcrIO;442 zlE`jXPXfaS2Y&HrIjpsdSfU}Irhrq$JHZ)wlyG498ftLd!#8%9;izc#ZDA|(;LoB} z#@%Y(nzk;@T?88_nz#%kli8MWKr(=g$i}@)yHDmWgJ+)=Y!*6ahY%=7*_FpSQMcyO zcj!)bQRH3e_)GVRW&a%Qcw|Dp7HDbip2_$EpmaNCNlaBNpfRj5J7&ueQEy;ym77qz zv19hPi>M)cJbSzaXlm`U>q48m45_si$Ve$X@_sO&<=D~OZ7*88tr*-agh^ed>s?Vs zJVBSxG-wvqomvJZtp@HUqTyoM;XKLRWLnTA2O0<@ZwNZ3Sa$>+#jd;^%qlGJu;wo2 zKZMADbOI~mgQUb&M>$1b3e(1!7`?FVcuj}@?VlPW4~O2`rKJl^uLhSKX+=(bWFpe# zi**%pDkr-u!uj~Wr?Oqyw^qE|B~;G-M?CvS7h?B|L5(J_;z;+VInr$^y4vAq7v0F| zo#C3B-XHh&JslPv_`r<}N|^~w4uSV=r1NZ}rt=5o^qY_K13xYB8gG}-P~%#bOC|wN8ggvr(E3eZzun*TAKBl-u$2UT!)no)^M=9Qwn} znFgyE>kl`_`NPebA*#+MvGa$!t=T{7C-RiiS4^OBDCw(#H7#&YGl6!rHH|j$hno}l z!_A4)Y?(jY9On-=XI{`Av5b&CZ(Hc!^l^ZE{ZeIaz=b3FinN~koIAQq&kPAWh{`?`A#d_Qm_`r>FrzvX9yGG7; zQzw2U10^?_F9Yrp_Ne!lyYQrun@E`_4GOb)()5~6_70vjJKZYWnT4J+Q@*)yn3Jh# zB^N=7^B-j&lZKrxJf}g(<2*fdO152HLDsq*r*)Guvc_8dS&vF4w=_=c_69!-q`})m z&=9547FPI zptY-I0It`AdZMGSocNl{DXbd?VFMKh>2wqa8?No2G8sB6G{)17{5IKwXnL5Y{n^$i zwjj0UyVmCVAxEb*wp`}!&>0<*mY#6HV6ly0W- zO4qli`zu`Ew((Q0Zx3vh>)Vw*-+?pe{~r&JjQkAbd6ob7HQ%>Rbqz95lRkZ6n7pi% zJSR+gr^QLez0<4F?Bm|Szfa^x@@r_ONB`n7{aGxLJ>%J>wOrgdr)q0SBw&Vbs?A@; zUS;t-Grw1U^UpZnwX4<9_N{v7f2a8j{K-beR*7spnoCcx-aT1R+@1G{+>G=W03-rK zk#Q6mDJcQoi4zhX|Ft91p>_z^w2fbffOG>l&Gsf95yeU^b9J>M%$%lwtv(H2EE%^zo_NrC|jI~e4byAz5gZPN9cvvI2$O8Lp^&fZyS+N*DXMWsbnc3j73kD#t+vB;i zfp8kyOAq?q&x=F26=dD6{-;@&!T9CYd!i`ca4Zb5S)oamOrA_%aR*(-dda)N_P-E) z3R4N&uFGJ@Y`XzAx7PVzpnO1iz|(EA8}i&lgS~;_a6KZaqI@a9U>SIq#uMIWT#q!! z2@#_QHQ%lY*9>Z7gM$?!cVxB`@;Scgq~ISJRiGu0Vasn!&6>Iw@5tC;8K1b~hKBjq z{KFMw_?D5p;>IgJ(J=cOG6u=$&rIg~lTPCJu(v@O_|R{&$4~ulY+)`sel$gEO?>H1 zT0^3M>#Z)DAd)}H=!3Q7Pk%P)-KEbf@Yj{);zwZQ?A)m{&OV`S#&BZGtJtwO>sw%; z|Gvppb~*Buk;`iKsyhqY^~E&@*z=a&*CQXUne@z@st0`h8o(8R>e^YUs_ZkI%UWOU zA0~p8+pO;5qTs*Y%g>RmiOZ4E=`l-NPlTk%?QH`1T+M=sB@%fMi^A3KOn5nkybyRS z>%ZaC1;lC+q)i{vWhK{~Wnip$SkGNrOdh+W3OHtk$64RX@28f&|0li=J}RSU{#C8Y zUbL0-A|XB-e9WU8s6p)yHb@?KflQ+v58Be)8lC>E3rbb$z0RBD9+dxlJU8)}c=hum z^X3uCh{(c;%U9|vg|lN;6HSlY@{7U*^q53$9`uJ$>b5lroQB3$N zmC8JN>xmu1wdq;We)~;Vs&vPVl`qSS_N}yjf?B$OkhOc=KPjOnD>dZ*^CcQ2Xi*lv zYpdaRJo`E^B=?}GCZT*d&i}!`%04a5&-ADKD=u?|?R)?Dt19NtUwLii@0&he`TM1t zDt|w{toVESQ~8@u$8#stzxaLFnPtE4)5!7{xFRf@`#p4q72&tmPqeBY4Yr8GOQ5vN z2d(J6`rg0b@yS)YC3#O3co!vaqyRg4G6<#d0~N%kwEiOI&CbUJ@C!FkJW%UI&AjT6 ztoZKEfdLc&E*j900v^+ZD#G*dc1z<4?n+DL68?TMMf9)V7(q2P_hml8Z{2R$t1?t0 zJAPy;p1S=mEJ$B$0F)1?m}X$JMN;(K$z#t`C!(8FtAC+CiJRE;x~i>K7i+5pM=|=*z(dXTS;j=Jirb%@nGJoJ1NDZ2JEY_E+Z|9UND1Zaae80obyZI<)~kd& zBoy~Nz4ec;Id1osy5kbpo$**2`U`2!MIEf z&_9(-88vd7EgWTk>CQNdfxM?Wks~0c7h6lfGy*1(%?S&;7s|!LZNLPvUE|!1FuV`{ zNY&MxFfyMl|BCd?-e)r~ax}PR<{J!tyr+BAJm=Ir!11Mf_ zwYLW127sY+w+AqR0Z5X2Ym)F+aRdQt+jlS(}6B{{&8i zH@))Q6;^1;fk$i6^VE?5E26&>R_Jwr75@SRffXtO9BY03ePCkS)_H{Hf|cEJhGq{1^Z--G*X8hwc@^N^pIL@}s=lT`b$(A-u7{VcBcn z7nYUD)50%>P%q-w%;9qU>UH?FO%HFg{qjuw@MrcF@#{qcN4rPZ@aq@+2EPXQsEA+R z1;74}m`XX8jb$qS>(7?Sw7S;khP zk=x+g##e*}mt?Uvr$xd2dEq%FIO?!iV-oBWqMd90EJW;2Q=N@!yXr(K;+DfkI*Sz@Y)0vIx z?Fm(DqC*9Le&_EqJNtf2|E9@w7WBS+zKaDnO;d-?Kbj6zEKVorstF1-s&KqBcCWr~ z?xem@{wTLM1Z^a9iyMiXz|wTN8T*R$J?A?3gQNBU0Uk+I|5~=nKfgYS?ru$16Cx?- zpna6g-D@2TK02CSB&&zx)xFanjZfVgkF-3V$nH1BDo|Q*)9*#Q%?@SK`=?(I3HJ`i zS?3`zqWMX5uTW!UvkY`so4I~dQOQJ&UCLjl#@?b7I;+|FrN8oj55L#yo4(lK1Wbr+ zCt@eF`mxtP_G^YpD0fx|4Q#zMFuR!-Cpy!>B7wfn@or@_z)^qthme-+NbkdFS3IoY zptJkWtcTcSw_1I!vZ6Lr+Y-kz{vTz69Tkh0lg4r7E5M)X@*`=4SuayC+kotTG2L&@au8|Jnn?6>SCbfWEi) z&yRgyY#+Pp^q{5aYs)4WuM;Vc*d0f_&b+}USUC+7Kkd@1#C5?2C*P* zk9%p~zjJeF;*NB>TkCnr5zfqB#>WFGpt&)5dGov!YQSf|2COA>U1qb-E%0O0pGB3! z!JwUd_CmI%nzk;#Wv&AM=Z@ThC+e13EU0ZS#-71z)wukZx7 zu6oOR{e$lcZ1B4wd>=^JqVOFX2<-2@SjDi#TR1Z#DbtLSm!Kz%-%wotV>XY0kMi}; zwQnLIN=U3r>#z06{!Gi`-B$%O^1r>{2)s@@)*mSOGUOo69v8p-)9c6%E2+wT`XFLz zbKm-&VCD>xCCnRzZ{B@%y!OBQ)ZV+o?;`y^UsSTnK%nN*S3(jQZj!Wb((TN9unoq2 z%^+6$y((JO_Fk-Q5UBSBAIywxk7N#)+Gx9pDkEFD?P54^bR<{C3P`R=nfD5eAVQ4M zi<1w@6{%D%NfBrL>$ecdj^tjJF+$2@m6&- z^5s61Ht>jL=bRPTP9%~Ch| z`40B89$wZXUUm>hI1ZAtW4F~6vuXW;Ul3u zC4P23MgHdT9W&1O_S}u}y+oO^@fF!?xv^2w^X6}g$r}G~^tV9(9||*@v^Qd~9~%Hh z2Q_~fxDSeNn)QiKUHJ7#%@Q~|3*`HZr1jC3x$HNUquqwYeUSBY2NByt#@7`~Z>fh3L>fcIzLI0Nj%m2pw z9TxQOz+nD*RRtP{2OPrWF!V<^CKL zH!g~++nroJ+Eq{FzOD*VxqDPyU<`<@Ww(v}I^9L}i4sfd(KvE5{LFg`Bf4}XHz7IU z>Sp+Aovvef0VjgwRR6}AS0*CY{t6>*&97fiP~&CWuZ%SA`x{GN{LGb+Tb|W!>HshJ z|KcafcFE2B1L+Zb+B zMmPkA7^X5M9f7Y?rgz%Uj+GmM89MLd>HzeiFCGS=wHZyEaF1J{w^^Wm|C<0FUu@!w z`;O4p&fBkSN-eV>&<%I5WM!kU|%!ev9ZI z4xZ}oQwgLN)B+9Dzwt|l!K4@T4n1VS-_rxQfov;G=E@B|+amJgp9Am>#d;kf81U!W zd=+Q2IFmMQTrfK$& zPjT_21z!)8nUXx^&WniRm)|L#WlhZrO%b(SEY?@0b4fzCSQ%-w5i?t8o00`Pbb}9ACJ! z4sMn{yl`SUe{W;i$5V#nuOOnh0UL z5A@QlqJO{x3Vr5(pGp(C&8jh3{YD~dDcsDs9U+Z<s7-vizv_Ax!mk9(_?o5-%wx7IV!#XD8Vvl()|{ff(I4-5HS%2?5-ttu-a(W}j> zUZbWH-sY=|WiPgm*O)(x?xTCrKl`i9ns?flzj{8NK7Dnm>;_fDM{yqhyekeQO2D^V zR%Q@|hjrV=pp^Xfcklc=l0HfOBe|oL94;lRK**p#Z7Eq-O4f(TTt+Qn{Zj0`zKncd zs-yiGxy%F=NN5xXrGwK*x+(e0KWUCO?@-2C3i@d>aSI+=BrWp6N=mgLg)u`4hh;5??qf|8Epc zWS?gh28Lp^#j!m!{RMnh;NXW$_P?Pz=!52AH}_Ypa|XYpBome93g)cl#V6)hb?f4c&i69& zWTYi*GMC)T=V!jEIox$kk4L}FXk>o^OYFvCZT*TGS+r?)%6^%$;qekXc?~Pz#v#lfNj6F=ap6H-J?!76 zQF9o#-zX4=1Zp2xBG9w^{>~{&`C+ul`_U95lgjWvqOW+X>y6vLv>K}L!zqs7-Z4d& z8#A?M{Un_0_wxl4iygO~<2l>n*?p#jfpwC(nuid|oC{tu`}<_}H(I%YX#1H}Z66Z@ zTCr6PMu$45Z0E`KYl+;Crugc^U78m(yXS#n1;$xyu}g26vc&%aZ)Ej z>&VE<(Ms#&)aCX0OZko8e{DE#AXcRFFp0Hi@?Acn;%WAL07JZIQ5x9_XZ0ESui(NAwxGpDHCOU$lu`UGVh z8MM36`cm^#rZ%42w=4LnKPqom+KUG5y6fBeqYe8iJDX^v;`<+`o?mMG*QpZO^iO|U zdH0c5z)TM2IzzwzX|PZed)5~#u~GJ){N9!E1x8Y{18Tp8kK$6@RvkI-d6@t5GiF!dMFJX+eCG({f8QMpvOio+0RfZrcU(auqS^9;_5o!M+ z>~-5w&7DKz_BRhl;}Ag6{u#*k*uduzWiCqG3iD{sZr7^NhZwhY+#{$}lPA;k^j-wM zXe9A)@|wZsSrNp)kz0?3GYEU)C)i!$H}03X{HKb_pJ;lR8>Nz}`JQ9e!TjD3= z^g*)eH#dHQ%gl8HIX9*iF-94KMv>0Y-}y!;W~of^Sq)L zGQPUXO2KUj%9nj{q-T?@$@1Pr(_h;T7H=USy6qS3H`4KQno{_2w_P;4V{RDPjzNuv z$v&OcVQ>R#AltH#|#w&GlN&T%=`I*ju)kJFSJ@{;_}@znAiR2fuA`{Ut!C zD*in$HKi}8P_E{%r`>#G6i)98ZJSrrm;84#>4o>2x@aRRTGbBo-)fp&RX9MesBtwl z6>18=D!TX^e%2Zo@z4Fdz{J*D=Rv%Ek9&_MF%r*me{S}+hBBR}sE_GB*}&eyCB~eL zbuRO5zX*Y1AoulphU5&?fk|1`XY9w#?lH|hWHBaFW?~)^(0G(tn)x*V3iIf7kM-^$ z?VHRV9z{8*KlUK&DkJt1>LI&bKl@`khXcU~0{4x7G9~HV)G#!sp%ifOM1=vF1_M-p zA|quYyA9QCT=aR%lxhBvOrKsgsPbr^5-`V2Y z+{LP;vfrad#L}(N>>b29qnF-h%>f1?GY92r-hA}`WAER?qpYqzZafHs;Wz;S@qoq_ zHHfiL#S#^pNP_p^L{UVs1qCq(RSuFFMdfHRm2oLKBVQZ*r}8qymPrLA24$umba>k`z0L64nwi9B_fbQqvAVhOI@Q&P%bQhK#>}LQ+`jU* z662n)=!wAYtwcdD`xme~Fgj;S;C@83ba$#KJyt)HR9RoRXoWdNd+#1ov~{VDMY~1b zUeSJ~VxoZF`Ci8ksm_VtqizxNg0(-j-+8<~GxK>TVZwR%eds-ECu~t@%uz=f`-gvi zXCiUzd3A?7M#6S0ZaDeCGQ;)2gH4ptwxuQVv296`Y=&fSyM`9KAAzbvb1d;%)D0Sg zn3R>&S2CO0RI1J49ry2dn<_X#k!_1=p>hrKl-a1JOleUqVD!L)v@>g(Rg0oAtnOt@ zuR{0;D_wc+ON(UO9AD@eH>-zny-pFv&1CgSGH}wO9wr7UZzts=J(LT6zrxQf6R~5M zBUV59S&=NH^}dC)84GEHZy{Z$&S9R-FPR2K;6qYrSyLW65KAaom5XDZ!I6-34&TaH#FM@) zGVO2BL8&)hmhFF1pw+lKD0OvU`6kJE%1zn~Cn-apsFTQ078`CsK#zIDoS`*B;H-P) ztcPB_+Rk9xb0`_z?MdZH zMD>+E%x?WU$$Q~9Ht}au0`cwo#D$qSGBCY+yLgrwn~3b8??i52U6GYr7M;ui&xUkC zR$mwsKLXtD{(-bUKIL^E-yd8MEGXYIQp+`8c}dk*v?bWDQJ-J6pRC?Y;@cj3dml6Z z2f>0K!G2HS{TIA9Q^}1g=uPD5%kP>mf2Qp3nuBL2s z6+<>;^szE=--#=@-94IUrUUZ#5l&A>~Q4yt=U?#f+0$4nbr*DV2Eufxjgq5x5Xa zAkb;-NMKiwz_Ud^oy~3E?bz8!zB`UzjeW&?FC?6tp6{5=w5+K=yRV(;v6)_0#!vNU z%Hia+LU+fER;C>l4V;7Qffbh-enXg(KV~x0jYhL&Bl>!r6V)f)0iQR;|)ejsTgAe80ig0 z9rqqG*O11WVoOR!7r@>I?ZWZSrb+j*&Bds+&Cbv}JeAfgm4?t?8|eLlRcQl^YgO8Y zCsay`|4+zqkIxpr*MY^qIR2j&zlF>XSA1+L=tWO)CMxTkp-T^{JXKn0&&yQci?Rit zgkg6-ey?N*XXeZY@cYzIVvJ??7?0ayV76WYbKI|*!jAboRvQI7YgPLATo419VTpr=LUYpYn*DS{D&Royu0b5?bw0W6avyVQR)xaZ^JarnND9NzliPOcJx zkpnS224hJwwj8chCT5I`J|3N6Fm0-c?*rM3@zZb@w^YT$&G2?V!>HP5D1JQmar>O@ z24_PFZ1CvI*9>cadZA@4%4cNTX!xp2p;a;IA!fhzXtC4Br3mIBGsj&Nqu5#0Ev6P> zhEWKaSF=8kndgy14l|3DArfo)&|RhveQisJKJ<0_*`W{pEvpOkq51pwp{k4@)@CYW z6IwM#+$(-}h{|Xn$^RcKqt}@IDnsvZn#wrc+RHHE9il$otND-XBUt++$Lo!NuO=7O zNwD^h)~m%`j#umb`s!%!PV=Hwx{GJ%RGR1s>60^`G#PDyTH{{fLp-34e#B=Zf>F&&wV=f zCJK82qj?mbnMzC)S46w%)4f%qPf{$A2+9`(J2sxW_iqxu?2hO8Rp*4JJNW(?H_udm)aRA0Z$ z)|cj~9Sv_C%s~~+hEh)tQ(xQk?d``CTTc?tZG9QO+ximSIrUYq&$vCQms~HD)Xx<6 zNF;`uCry7dZDMvcnBGI%?X8>I~14JS)Ci6uJ zlb0sL;{9?slN`k2Aq(~&P(qx4{zE%Q?EMMmZWOKT@~E7)uF~^FI<+&2OpJ>CaeU70 z7Si9r$4{WYnLnVd{FkG;M1oHH2B-a5r)0}5|76d}R%eJ_vv1%DS@v1*uVEeg&y$n4 zYyT4*=I({f1B>9(sB@aHM3P@~f4W2>Jh6y1Iwx4ZEoas7MlsZ^NRB*UMRJ@8d)*y# zdq)zTIKtaEoG8s_?|S5GmB~p3?W|aZ6a63g1Ekc2f{$||qhY?DYPbUe3PSCTq4vL2 zmNeh;mTt7zTsfpU+=(m1cuKqTq5@w0W01|8Kjp)y@@K>G&F$Mej1LZtZ|oPuR|Gz; zwmS?yzrC3KOV63hi_G#ya$O#x_raYqOiR!|d&)OrC7>~Jk)3k7P_@Mvz z&%$}`UvHD5b&kCsO zR}UyF+@9|)OH3}5u_igbn`=5>JF zPpQKX%7O(IMausHzPQ{I#Z`}lE2@*QH@znNH)0>=Le6k}HV6o&F&?N&1=^v?8^9OkyHKiGqh(e z#Nyhjk1FHuwEl}l>MVEB-&pes!X;c9{7$fTJApE;Wg{Rj=HC7?t}~m-Ih_3H`>l_3 z$U<`$mU`yHjZpkmZ%DS$)P%hxjJt!ut`-zIO8rH)JgsZA(T2;yosxoJ?XUDvvmpn$ zZEp##6)r1ql9w9vyISpijP|90guQ2M{)uY6w&5q&t9iR0Q2`u_lQzm-I=Ff|g482D z%B-EY-l<0DS$Yj&S?mQ1Sfrb z$2fmdoUD!We)E|bz%J)=zv7>*;xqi1AL-bedHZWR-UoGzAw$~Stfk-8Keqwxub)?7 zPv`!JUF-_b2GKz6I&4s85xfOuxEF6H@vwG@X_3a8T*V4M!aEfkhNE`G-ZY@@sn|(4 zx(bY2aZU!j5&f|~Z!d8+mZ((8xux6=)*z6T2pp9JP(A{AXQCd^FLIuNS%+mrh4CP^-E&(!x50DQ zcn=e5`NjodbtyidJoV!5F}uq-s1gGJG| z(mg8U?<-knVpn1xU>9EWrYA~4^hb4 zMQqhPiwzDj!+OLQ{JoGAeOl`StpSd!#O^WQIF>8jjLfhJMR$f+8C@%Cb*b3ut8|l+ zzH$V#9ago)#7pL?-_%$kv3@RJ?%M>ko`HuiYL;pHwT`Z~b&QYBl1$r*d?k7!H+`o^ z=IU1`!P%z2tNbURGq}S%)^KaOW-q6+!pR%xY`F)W{csFLiB-w!g!mSL_?9Xy zMCE8H@ZaHGh^`^d`ysTFJYU_--Aw z=_Kx6VVrwc$>G%)6Lznr(0t9cUu*2we0{}Z6OFUc8Tt!tcST^Q7>{OW=ywZgL!7W! zt5%4++%(+s;GCFk$#Y`1WiK|(gDaGlt1_pTb4Sw>0l0O>os(Q;a#);PWxv<2vES?0 z@U2E^n)&huz7ol1KDg@;cn`RePxA?|IQg`Ef^!~xRUW~`558)@AJ}QXAK2-oSowcm zik1K8`7G}VNy=k+PXv-Yexa?t(}SPxp^T>R@+-A|fAtB$@7{6pD-V9UAw!jXr`VXR z_*n|&H`n;>V^PRbiQnBzY`jnKvy=|Kw+=6ALX;}T3KL`Ymg!}|xi8gC51!Ne<<8TC z`(A>+m4*YvS#9E+GvEzE&I$e#s{>AJPolMo4cok|G}pxM4g4N(@f&(~Gd}U;UN8J< zg_kRD7-3mM=C69bTQcn7Fw|xd(IPQmp9c=|LI))e2Fe$8($WA2m~Px4fYVHimzRRW z6sv{)?RmV;>HXB1(}U?=OId-K9<1J4$VdNL^D(La_i$6OEo2v(9U*uknH9mz{u@|H z!^{#hnlsxsQVRK~6v(Sl4axP^Nlp=FW6ZvC^W%!~h<@B#zd_uLQZl4?{bz6jA&IpH zh0Vo%y34z=5Ktb^LIC8BpL;-iJ8gERe{m9P{;dwZz^NZMZ|0nNGb6WBboK2`u_2-* zQ#jkJw_bFRCf_pWfFk^Q7GCj{!zdve7`EZ$R1u(j!~m|vw?wZsjyD3JBV82|`8DHA zXPA(A$th_J)@t#Q9`&mIdeo6Zmq_jvp2Sj{D6T|Vb*u3w2Wh!(ehBx=?(6D2o^$X2 z3r@*jgEf;4vgM|<^t>%B5OhdCyxsP{Df-_J=zsTl{qNh62THCkT)YZiskZ5S-<;W# znc0KNsWSF%q>>?aS;^$W#l;=+TUc6|Tu493JA&x>LFwVSq0Fzf+D_N04&o^0ZYGCx znjt>Nf!7d69Jc$iHT3swS`OkM~dElx|iu^1Hp2;q> zU-h(;>_7iK&8k;w#PN8GhSl-c*K~I8SA+Eigow(*@95JT`98Wr(b&7`?IVqiROyD+ ztX2mH84X(KJlPf_P;6Yg(D~ATNq-eJe-NCM7^pmw{VzEXy9UFe7dJT$g|y}fcL1dc zC)V!5SMz=fv~#9e^f3LcSou(Whjo&N?Ptz9NkOmQV#X!v8!)30#w3T4TZc6h!;W{} zJ&+woxXV!<9_D!-<|(F#MZM1JhIk#H#j-L+de;9l6^TWFi>P0rxlwZM{j0a>=i2ln9A*>VanOYSl})(VCY+y1IMOCu zaL|M^vkAv2;k1Ni4@|Kosl6XI^)zAtE|oB90ES=s(W2C%Z?flDwqvGs!`R-ew)WQW zSEkp6J1=ti-_HLor}Nc&oz5qOJ5O(M+8dmuO$}&gr=)qo%jtYw4$OJuc1a)`NsOE$ z?+ZX%r20PjA3|lD;kAFG5xhVkr-rY2K*FZ7+<}Fb$S)%xuk-&LE%0gnUsa;F$nl>f zdYeRVVR5;tK|d`7pWJyBL?-+HVyD<|=8L8s!Spo&cM@6!9cv}`ea5Zs*RLnKUSV9m z7rg8d$b&naQgDXeRRE;oH%n2xwN{*(vlqmC7ujz()j%om$k5gQuZv8vKcL7PbS7iy z9r@$~LH&1If_6aUgKA028^v?&i;ONN0W8>R$t^hfPVylAtNg#f|I>>31~K1J%$Fm|o+NiHu^K*AUR+=<;}ZdBG&m^z9t-D|&0T_;v(txF63 zwPOMNDQPJ~5Gi_fy>iU}l*>~znp3r>Vk0Sm2bN|*#{-G#dom6?p4#;m!A6n;Am%WW zH(;p_d@vKU76gC9s{)usup_RMFt49zzr97UOQg8Sc(Vc%UI!Nwa;MSl<&1jdy;XU) z%pkaJI{tZlGf_3~P1yaH$Zx3#MITbN~a z%e6y(9Sn@pyy8TU^NJ9yY%?viQ!w^2mD3tGt!cd}=^XI;C4DJ9IJ3eUvt$_x8q*vw zRIcXhPqb&%xOk0ZfMnC=ZqYE5cb^B9mfS)wy0LW7! zgeAo6I8CfKW4c#C-P(gFxe;8+mlxqtMR*Yp6Tuds_Rltgn3|qPKrXM^ulyidRls_$zRi}PSFd~Gx?Rnbg29vRvDR8t$Q-yF2Rd_$=z_ZvDzB@_5Su( z$FPe*)~863&N0xb=?nm-*exp%nuDH`P{-Dval#?c5!ZovYaO zitPT~-IpB0!P^(RXZP^F=l&f(tpo&X&y>wh3pe*pL7q?6*V2tT0FGj0oT-TUt8f~%7nUD&m_6}Vdqr}R(HH$%7)TT$XcMl1hl;3fiC(~xKOBust=KLb(M1Dvrt*}+ma9BJXcCX|# zdq(6vaCoi7Jyr;oZc;PKQK;!6w*C(0NndvOUaOx-dcgj>c+ViE*~R2YkN@()=2*!wp#-llh7y+#E=u>$ZJ`|8j||o^6RE{GO$)>pOnw4^XHAe0ObF2J7A z$1Hg!$7$xYeof;ym}~1ZQyeL%hLO_UkIXBQ5^{f#P4cIMB-!)rY?3=k67ICiiFb}%0Aa)b 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

    ^3yTmH?I3f4ZiJGwscc9>zuKVS4h2^ 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 XPajHSO-Jt124 z5P?=N9&036PsJf4Ut%?iyRXwvm_Ob;3%a`i)ksc;W9CG-I==*F7J~RJ2nAUj$p4NV z{K=3j|A9|}`NPj2t$fCC^{iZvM60$%yWTH$?g)X7|3-X6ooFovyQ~FgG5h8FqjDK7 z21htoX|}gGjDCXIg&ZaH%#}AK+>Lo{_~Fj(8BEltioEo0YEk9F9bbfyFBvgTp8j+I0G6x$CcbTvj{q zH;5*n`Y>F*FiiexFh68W4H&t$o9scTi3^mEuqK0taQsE=EH0sMg+?je+A(z>BwT3KpbVLh zP0>4FyQX~hUawsP(&DZV1EMMg7e&o@&5hq#@XqQRzr)-L)QsPXthp8`wv=v+R+;hV z$m3q8WBH8spBA5w?6d}6VMU+OEQ{6L&Gfrl=OU8R&DN)9?+_&w;(McrFGN6U6bgpn>I<$s*vXAj4$%W7-s7bO{W)`590li(rJFoyGdW5pwj4L)HaBf z`QYxf<>T&+de`Y$9ae()G14{%veD?iR+oCVC`!!nAo}F+sxeXYxq!P zbfQUj_($%)JANq8Pbm?m-+F0ziT<+=vaS(WyK1|<`$liM^Uv?xq5sG~-j1igRurvy zBC=*brZ&nl=v1_VBoZvJel17Eq=|vxaxs_ov|5TQtIYYe(OohA?|6Z+4t*yw&W#MS z(Q096jg||;B@K-g>#eHFc2rZ!0~3e0S*RH_*_N+bpxQcWON;CHFO8KzN9AeA5SvqL z?GRY(Z*b0jXVA>Xc&{Y?(nV(%iw8zF)DOq-r&aa|0rYX1PI>3T1iT6vXXH^~k~+}Y zJM=Z}>O&>Ofx$ESHG~C{dJTtYa==iGGD+jQM(MQdANLNWmF+R?R8dz^j7YDs6|I(X ztJPwaQS>kXNi|m%PV_DS9w-?=6vPyaslTBD;KmTCVgI;@nSd4yoEq>%`9(sRYU#a9 zfbFONSB>v;qPW73R8WKk7`k#O-c~rGqPi&81%je=!en_aGKUwqi~ju!pM*R7f$6u= z+QAC=Jm}sli3IAUIeLH=Z3*)vn!ZWNE#(GG$&LQ0ARx~w86=)5@h4t)sJy$kvd3z@ zS!A9n*;7jKcI9S$4Uepz!rDh`?n0l-R68-|oo)02UO_8ogKZ8*rA3=!ZVlE(B^dlL zAK$b`DkrliM@UhnppEQd-&N_j5%nQUF*`oOt?>etHDb(>UhjXC9^ zm{Y3$Z7E?j(r3rJ)l`4Bs=v2T5%*+r)cW{-n%P6;Ggcq)J;D!KDjPw*EP4Mp?D;B9cwCI?Xo&=LSdWKv4&aCuB@1TSD{KeydK}_b7 z7zl0lj~XXVxIgMHBw2yVE6rkS1{>Tnl)=f&SJ6Xxo<=NdpUD2Jz|sp?3gJDB|Iz7O zfj&LUL};QnC9x@Tl;F^-KxXB>uucCfrF<#5s}&OZ{X zdOy&8EES)+K8Cy57lY}v~3CBTQ=)m?Q@xT54 z;>e}HWAxf1yLq4de#+^m94na&5wYwgZx2_9-R5ll)HZdxQMWAb%tI8_Dko z@;3(g>&ahF{)QlbeURTyemnW=g8cR%zm@z}`q0X=wZXGilcqMcMr$68tU3lvH9FJZ zHWUKo!~Lwjv%0E|RAQ@tQwtvM(IO*p&tNi3Iu_otgnevFSp-#7-W2 zW{!74uhvp|!BH;u$gV5z3!oX;H()f7#B9R@eijo_(+7TCW!`@l~;vG>hI!JiLa&(6e zQOwTrNJ_p?39CdjKL{;k*Nyj@{f&*>8FdK_=EBh_S5IZ{f!W7wmYZn#Om7}Ml_}<7 znlv*Vn^dBsd2C8}4b@%+5AhBnY$k;y`8Bgl+8}~a;xj1Nm<}RLdtf3>LF3e(bWA+u z3YJ9PKw_IKD=b@iJPOMS%MJ@;H8h3YN2?0kGjR88Fj<(=z1m)L{go_nROb7 zz@F3eYNp5Lg>b(>u7R(-^8n-0a%XZ=dCP1QC{j_i#UW_RM=5biYZS=f9s;*|f%h-g zKl1f_2Jh|BK}{nvl?C;&$%f}meZn+dzIB>;Pp#8;FgEZeSl!qt=MqhrYIv-X;SncX z4y~kbrf3TXP2inc7kci|=^o|5HUv!z{aIyJ^4X5g%w@T+#byL;v0pcbU<|)*hU-$M z8eRvG6iH#Ppe1w4TZrl&x(nI`h;p6>hd>B~7?ItJAhFqE0>+yCc1a%lyd~wBJVh?u z$ZNoR1HMHcN_>jb8Me(3$eLy4Eq}_C6~I@ge5ED;Hz=~?6jXyydOsEFtOw<1w$tW8 zL2U_saq)3p)0O;F=F2<=t^?-T&a*^z@Q5aOJY<^KqKnM8@y-yR%-9ggpq%0dB!lp# zV)M7D)S0}vyyZ0~J#|PxvRdjrf6&nR$;--@yhixxmM=Trv8IC(TwsSP4TZ^b?&LMGjjuL3TI*zdcVJsOl+1jciNPKBW>4now-dq>*;+r zD>=P*rBl?4b2T%;YRfIjnOuj-y{rT??Yv}g88RA}iD-PwFlgo71c4a5(;!_Jl(!t? z5Kbz!-c0YDfXV{L@c^D8sRl$cW0*?4E=rffxDWw>?Q(!=N31 z>J*xJt(Wqoa1u4l0;E4<)J<6WBg|U<(HEi2LbK?~ zsEE#&3uD1dIG_Saw26rvNByG|{-UB>$|DmDC@{i&o85HGz1OcZG`OCoS*)xkx-{(* zR?3QtNaMR)8FQWssg;>&)JjKjG=2#G>m;Zbo~hm4OaXB@{VcA(WaDPfDV_o-LI$HG<86h)St{80!f5% z;e^xL&Iz~Haf66?ybPEwEz>OQV1Pz`4iNbdGnqbQ>gLNa#b#S}!4a9JV6gWTfauup`+PeU&F71pX8Cq_ex?QP)r=DH+FsfcKiE?Z-=kSAgu>GFNZWGMy|Ub|JuTc!}W zCFxk~R0#FEqjxGK->%t~wTc_$mbZ;vv?nNgr}mh#v&%l}7Zwl#%B+0lEnmb_$4Bae z@hcqj>M-I{Su;v(A7r)%2$jKERt}~`F)vDnGI?geY#u5THj{j>u3Y}sVnCv0scDQx zJ70ofeTntU2O&Uts41?H+oA_%fo7nERmV9Bk1Hlz-oPk^K@28@;mnD&tt|74tn6^#(J*>-3oYp*NF; zS*De9A1L^2+NeApSzL!;K+~rWWX{khY3WqVro9)^%eiLKvJs+it%N5td7l6u4XeM! zkWGpaA0ld?;sEd*Zk07MGg6C7x*k)G`cm_n3H5$Hz;CGpj1+hQ1&&rZHAIg0O@YBN zSx8=Jh33Bs+$VF0DX;}rZf-dey8$DqdCPA_@|^i8&p4;WBi=bwc=`nMY@69hKI5Op z8+1Q}Q9$7(j@!ll!a`{m^w7e|@#<;)%<4RK?qozlGMWc=Kxe~kNgmv}eM>#yok>}6 zd(dYFIFfn>7z|r}O@kBX#67V9F8(@ni@t-s$e85-^Bi0$;pcPo)m_cF52R38)dbku*_qcP2K^ZByWUW z4SKFDo`hXBJxAgI7O|2k*cDt_Bqg1I9BUSqU>L(3urxE&7)_0$%zLKFA+Y(tHkzp- z=!)84u^x2C_AbZqn(loX1NQ6Jq8rDXH7hRhN3J z1dkLjhIq1sF?>65D*Hwn+sBRy2+ubQcgs^Sg)#Sc!FhM=fC0z5=m5ycMF;Tem;>;- zX81uSHu>;_Y-Djrx#S_I=<)1T+LofFidWgq)`N4Q$?}=)FSD-dcLHnc8h%yG*hYTg ze(!&wyb31H%B#vgmb|Jglvh#A$C6j6Jw{$dK_6RQrNY?POrAkue{*>ih3Dl};C)ls z|3rC}1wkmU0uKL;@+!!GPF_{^x0F`}*oR={gXL9aA0V$P+r7N1?EkjB3L(yLc~#km z$g9f!7s;#W-cIr=wf}?URqFrWT3!YI%{A2E|EuyUCOdo^l7X@hmsjzwl~+N!E-3r^ z%B!ey38d)nCa*GmrPBFj|4s5L>b|(_qsgmib6#Fmwp)1>uNiq2HOvB}{}bg^G*Pl9 zVdck{SJ6+0az2*4Dk$S)%BzA>{@dkMv||ns`Mb)i7*Yw#V66Tg@+y=DbMmS(!0}Dk{&*tI9r}yo$1nyh;;`P1s*4uVQ&M@~X1GT3$s7MqX9+KS^Fi zqYxYz>h-siS22N%yoxz=GEo2c@+w+s}F_bF( zRq`rR&c~Nm1UQk@&y6yo!3Yb^d$FtAxW;IiD*39`Y)xGx92!!v7X|l^NB) zSYAbI^YSYA!M~}zO7>m5^$+1b>QrrywEY(o(z=Hzj@}k}CBg2a-|3hXxE(>GFOs@i z6W1kF^y~hJjC^W$1tuw&ME=;CUi6ZKobC0**Yjt$I-iP^j*N^gij>xuqP>QElW0C} z9fCT^vgc0Vx)Sl^1n#T3t|qM|ttE9x9iuvx>T1&AB0J6|8KV9wXJv(Af$#tE%cy;# z-W7P1zzY775`U_1J%3j}uc!GI4fl_}@?|OCVUlG`f{5HwzmfBVcG9h+tq#uakPULV zmQcEmYeKxo-8Z7Qhrl9QNM1V)W01S7hFTg8GW5@mK^h&o;$7Xiz0vJ|B#8Z<_++_C zx@U28&v<2Gbo}rCJ}Y4s`ULY})Ki-fm!dQ6Hg}LaUb*AL-1X#c@UQvI-XmJ8 z_gGTm|5J7^EdTI#@U8KT3pxtkbd+y;%8A&q5nu7^@d}C}>YnExnMv*?dTuH)C(jKf zgE=jc$qi%i3^12BkPWXz4>bA3j1(VtU*Z`=2iu5;$+h2=Mn=tjk+xR7PwYn18&HDg z%ne%|^d->vvi-9?xu?SRq4kIm zC+24iBzN2VNLvDco!^cg@3f8lnbnCQejh3f00adCZ`Oc45t-$a@@!T=DX2J$X%^oY zDV@tlW9REaE@tO9k35}`W4yi%o)d?xGnz8s4 z@8b5MJzEvplMcuKSxm0^)fWDz3;rJhcKdoE*!TK$2==F6{9v#rR-XTT$Rcy$v20bK z&$Zhb+id68`HOQ?YS#o}*hI7FoIKpNX}v$wwki8Bw!XsoA1h&yAnIOAbqDCM!($J|=dT2hCU->k~WSQem}rJx0$$ZSNzuhoacF_+cGpoUhT znG_?msV79?mZnT2V-9_V+6U7-Q;NQtFub^eKSoy!4M+(>f_}s*f{ut7nx4ceg04uZ zCfAp76+vg_p%G|$BTL9!chIM@{So0d9hyhMrbqKC=n`f96@A*#xK8RwO;~&``CMij z#3dZRMldi=O@?|GVDHkeqXM48UcJ>kjQCC?51<#~Zv3zicaQkvhv4q2CdV6*4H?91MEAV9c9?AqT={ z#G8WwZ)UvXf9-JN@ITVzWTgi7wB_X5*0zXx{Ac>v5Dw}=+!hTe+4E`11){uOZLD*~L3ZPtj)7jbB2ShQBe z85;RLXGGm*>X{F5XlBKq4{>O&B?YP$vU~(Z8mk4xtQH$Z9=JB-fs|puCIR<1P!fg+ zb2oPy$-11jE0(k<^!cmD;RjSREZHQBEB7g7o<}AMuS;52tQ!$obr<1LF|xLy%!-|x z^Bm+o7%^iv3?rFwy55pW^F309JtC(s=uhWcO-7g2ZTlQInQt2Xnthij$!o)kLmbAr1VcZJYqW!(_*6LfGoJb2!H={lrccBj;BV#_ z{>Z)AdSQS#Ak!&hWwD3YymXuOtyZ%Y^I+b^kyEQ!?rZ`-1u^ee)^4(SZKQHlE!mOE zv^A`z zQjM(}9o4Q#%)l2bwQyPtnF0Z9hD;R;nXeukLS{n$2SX;Y|M?z-gO-U!PgbKS+pc?E zE03u$VGz_cC~KxhWVL)5nCTIzG7!*pDc1snh)`fq$|bbMSWj{ZSz4tI$6NzIa_ILe z0|_^|mbjmTREIU@xvkj~@}wcquhm4!V<^V~^f%|Gx7TIiX7R+RyU zhTEyHiFj4=$2^FpuQ7NG3WH;8$Oiq-qtl+*)4X7xMbnoXgbqszcW$HL8#7PQJ=^}7 zen1A{5bO@kGMb8h0X#nrhhbQ0!(wzY7M8_;Y#A0KWTwTk7;aiDi(#kD{>^9)O05;T zX}FA!%u!<(sttAC*0lQ-z^mW?gKo{QSc$gqdy!wb{_aA*hDc=+HAs9Ry}lB3Hle*a zM#IcRHl^g9Je2w9J20GyKY8*)X5zlsCWK3Wwko_r$%^4v2HAiKsJoqJ_sIdO4jQ&NdJtH4q{-5F&*nYsWF$K*;Vm4hq<{lYy>w9J2-CN?On4IN9`ql%dj& z<78%$b{r@3oBh|YYXN+6h+tXj0Mm!aJ=Pm(%?k&F@VV`=4};IY=HYWX@~DiQ{{B^P z;Un=|2ay_f>tusFf=q}zf{buSkP+?(GQyn@GJh5Bn6b@lpw;0tHMBgOtLCxUX+~D3 z^isMW9L){88h0|oj-{Q)FriUukj=OXWEhP=>|}<$IoN0x4m--e?#T>$lTwGYOdTRE zC1vQr3~7cg6Gr4m9X~wAFvC&W3nx-W+DXdm@r^7k9f6i)<^f2h9dfb7g}Z0^F(T;G zuXRbEa#LO9V<#xpXIi8lsYRrnL5rYBRMEUq<27`qqfhD5DKnetl$qUh%FK2;<;{m_ zUJ6i*#%aM|K_P;zGpl)JzzcVZFDAd2w3f7w)G;da!^{^7IgFwHcd-9;Fm^Zo6LInR zCUg|P3tj$;7;)9%ir7+(zj#*km4>t8Cy#vatia_}d!i)bejb961rP;W6GJaWqwI=2 zhBtDc|KChyhj6p&!H*68`bY?`r4I-2YHV*vFK5x+4HGDsy$y0^K?sp0X`@@IFY`Xw z&fzC3KMix+I_=4tgL%mA*33gbF!PYzubGF<1@myoc3Bg#nJP6ADa1@fZILw*DI}bT zNhV_RUojDLcs2w^8`UVL>pHAS=;}#Bd5v%E7sBrNhYDeboyKlp7ip8jfrxvHW_=oV zoyY`od%)_1Ln(S^$rPypkKu02q_$*=djlS3HLx*MxS0i9L>SNnbc)n~htz%qWUl z)S|W(FRix+CW?=ufh3y4>9na~TgRU)uk;!!KjNhBfO*pL1VI~X1GtB>Hs28{Yv9|)lSdCR3cV4}t`y{11 zA_FYz)SY7dZj4;SlVDHh&$@*KUBrMVD% zJ0uFL1`!1d!sB<%g7C{-g&^D!QOJXEC|p^F`?>?C5j7M}qiddrs0L(X)&GykMu3Hb z_G?+%+Pp(BmhO@T;|q@!f)OgP9c{H>3^jHc+A0$((A8BA_=b?IIk$3)Y0~~hOw*iz zzOu#}`l@4SQTjQCzJhNsO`)=Hn%xmp7vegH++w*X!LVGEU|23nuxk%;CkmOv+JhMz z==rC@G$`vZD4o5XGPi)Tf}CJMHN-SxXBN~Ih!vv6wR?!VuFtbr1NYPRe4FmUq~R9v zEps2d;$0(V%z4h0__6xl;Fe#bAeh*_9eS4&7BU+;v&3ZjxNZq7vIm9rlueTa)&Yy; zD&kxHsUxxjIqK11AO{R!J?F`*3?&XVo+L)g{VMgQFDA(7b>U-qrD@K>+2&T=-!*If zhu&mYo-nQ%upk?1>?d_9yq<)(%ru^CqwXz>1eS5wD=RRqZqG{*`fW`7cJVbseBl26VclY^VT5;q$o3pjEjQGK=xr8T;s99uqL${%x!~~gT4b3)K zMNr~CVjY53+}AHZviJ+j;usLAmqRML1gf2!#WV}_H-;IYhn7yKGyeS#8NjE%!AtHu zHhOFy*~nTqK+ZSGz{8i-_;45EWC1gTR!UsUc>|p zM9((}vaB6+W;SK5?@zkn^$mTcOrfY}5HFBh3;RM%p5%&>-B-TC9kf(>wwPlX7H*-XzgFrzOom>Cb_cyb+n> zJ^VexUw-!G^?^Rp|N6u2QYZR2|LZ4!QlGK^^*vrdf9bRGzh0tV{0siqKg2e!JOM;1 zaHK6mnApv_8vA)HBWbL}y(086(n`&!m^Z&HQn5a3B5pO{);~;W?X40xw7HG&zrNV_b@VT%lhsmGPp zy3r~8>^%i@dQ-5J*K5q_;kDeD*X{71Uw;ggz9(-^Z+;o3%;ax)usOXEs%o$~y}w~j zZ<);LU4H*D1;%^O4;Z-K8vD}k;6g?A2C*DkhBFd-;)nmPo`o1@IRIZOSp9X{w++QO z;NeF5&c_Pjy8?wdmjGI0A{Coa=VF;2>ij8yAQlLpU^A3t3Gck@Xhs1`gmR;Tsn>qY z-UN`0RHiOH$bWk4w*K10k+PdXuV3@O%gCdu_c{`q(#(~DFSb&tUN?e^{KG7Eo4d`4 zqqpDzf$RT>bJ|}SD$jWb=`(6XmNTNS{WL1;z{t$K#|qNSDf^-q)kvmyB`eQd~11Tiu%~#=El|n0uF&Wrj!k zF&XzJJ_q+3*Sikqa@^37&*ro7+03`~&J!87E?CXL+6Wkl9FFjOVdp0QJKJ^%H0CC+ z-_iP?gt_T5%uO9O-J<*TnbDn9$@&yX^poxW7+_SMQ)v8OZU3)6%(j2gy8nUp8+*FO zz8|xW!Naz;H?z!I5jUna?`v4Q@(6#o_m;wcK7j?vh4IK58?lx}YpPT6zASO`@vpUs zy@y6C{~o&b^QEk3iOb5I3Yn(Rw|3{guFwCoWO4PGkhacHL%UeV;-pjA<%Fg^kaY`W zF@6IxKGgJEQiLbIAp{*j>1h7>HKQTj(v zYWYEMk9=@+J}Bd}K>{6O>R*TTLYZoa=D$tP2anDNkIdx|$5I>{dU0vY#Xx*NL^%^_ z=mTVzV|uaLfGNMC!m|s6S>XBpe~a+`wuLyF{C^$TaF>JM7UT0$ipfBy2WT4T_>ZnO zpz(>&z#;|EKMia?Se6ft&Iil$!SVUvgnZCA{j`P2h^zilu9FYW&Ijk_gJ?WN-dA#2kd zzND8h>1aH10x&45Au>Dr zl^{F)70%9og|h@e84U@*RI?e1#C$e1n*U#87_$)c``cLE6J}4B-R1pXINyW0ZYTKb z_ZpCB#siZ7Tjx1w(+Z;4IsPbf+)P(46X^Pe?u#SpX+s&c(I7utV^;6Y@x7cSsa3GP zu)9hB>5iWM%qx6qmHU+v|GW1XPO`w>o^kW>+#kh?c6@w!*A6Q0bCf66a+f;?UKfEM zn-jHGwv5%nXT)8w+lZu+YFm02`jub$jC?7IzZxg8RN@)OT{>BhlzCI{2s*^r;1cP! z1wn}vf}o@{3Wmy-Dj3>xi5`x(RLLFJ=B4?}CPz@tqM#fnwd9g~Py&vibOkBh zh&(*wN08E$Yk*flyGc-HHQ4Qy+p+MCwG?H$>$4$=*>SDmUh zi~#vpDj!er49dTPTS7=1rXlUAUNzV@cFrcYH?7t2PP+$l_xx28o(4-^jm%(LlK4*I z`KwNn-cVqkhAQ(+svgp9;ydz#X+1mepRjkk?z9G&sCOkEr*vR=s&k+iavBQTIj@ znKCI=3*c8w5L6ly^p1c+zd5L~0 zqD&8WiFtTSOYNI^cuR}yn|XLk`)pCF6u!U`apxsBW2!#9^^Bd946MYlgwQ*nOxDtja9Y`^Kh5gx1Twt#2d|{ z>Df@zDd^79JY`8QP}mDeFsNH0p{Op0cr*D!7UmvL)QmE-bwOi}cj9!RM5YjjpT2IO zzk%6i=l>OLcH}a;;uZWT4du`VVM*X@;BBo1Sz!sz2CgcLRdB=Wz3rV1e93O{Q*813 z%ohI+vy8BHuYCN{k^VnXqO;qY$8#I`v;P2DL_ETN$v-YJ3`G5Ut$Ug)pVP&b8DG*vo`T=xFhP?#CsR-cHX+R zUA*HYw#Lq1x3-ga=5K#VDk(C#Hq`dKT(tf26O$_fUA! zp$iY2_@G=AT%Nub;3$2HC7Y1RbEwKl)s!kGJ(1Go<)h+(i4P9I|F1czVUL+i9>M94 zndFWQmled1HsOZ$VHh>4>on3t$*;W6k^dp{t-l=)igj4Ko`XniW2n&x+Ob_7^DxcO z)Dzz;R{7QfM1-9aH%7MhM%*VdLt|sx(RQeHkM7Kr+Vd*+y@+=d?GH6xO`#%8$~qcv zaSKXKKCIcs~cF^d(c)^{)7RP-81y=d@D)lZao3fxR z{zk;zORe_yen4MbObB8la2V^` zQ7?d}@cn*)&F>I8Bz9jttCmKU&Rb{iA32GVTTRSxJh+m7yYem@Sl;08+4+?9ujm+I z(@bux_LYT}t`x``lI$60;%W#927TsmNM~A52&l9-b2JWJ@R>DCCnewD7KT&tR_K~A zjGd9bCaQ};#;G_WDK2)NfEur*ZK56S3$a6xvLhMR1?xjXj{A_71^M(c zCXnwhI*e9vSD{IFL;XvCtFpr@xtF_Atn>n;F(28-CR16qkJs*J)T*0iA)W67o`!?Dj&)SKR4l7PKR@u333Zvc` zYU}}qvUJU@7W}TbkLT8#P~%<{hszdHv)+8para?GDrL37HEs(30lk90D~BI6=fPZa zx)H^WMmEr<1pONWns!Dj zUJ{9D7ba|6O`0Mn6vj0Fy3n;9Dl~EQ^TZYTeXG>tzd8*se!#(i!hMYdTcD9X zwN4)HBbgA~oV{>ayI})7Gh+hI+W8OWmr{CsPca)Tt;`>P6~mc%6&Y}7e0U`rz?D+r zq4ZU}w{qX);^UwRdMX9a-*R= z4J4lclA1TI%M?;=b3LDn_+@M#8I4FIcIU=e$CxC5cXkzh?#**Ps!g9zRM)?EIV-zu>>kY4bkYhkb(Bb0}BhQ1(K~^AhFIzHqqrs*Z<-Y=W z4Ip#(^U2P_{D|&kJ}x*hr;qX3jQ7hs$Hy<13XabU&#QFa!~O?0hAkY1$r;|thvQ6z=h7DgPL9yJSe@)jSGi$f zG+N;o(${DrURsRzrsER~9M-etYj!W=Ys~lqInd0Ziuo&5TxUDCku+!cBOw$}#qrIy(s`cfOvm)d~7)CTlL+8LrRwNlUw=u1Z9IVLlL zBUd%Y5Snv=?l%KM^DLgZnU0bFG-C^6!;qpG!I+}+F<{Tbn7(8-at&u`OmFpX{VQXd zmA?(1zvE->6F>D^5M|(w5@(8(YEDOqi#RnPo*>hoV=DyZo<2_msBm^l?>E z5voQ5Wwu*$7VP?YPU4D7bg2B7=XyXBEyfKkEPWC0>T=PQy*bm4@5ga1=cas0@+tFW zPA(MCzszVS@yC_CIPM=6XYwiaX!XZ?u2DJfZ_%d>tH|k z+484r|HH!Qqxn<7>i>k4pACOn8`PQIE1c4Y;On#CPv82*&Vl{^Dt|gx4f}ZhbYGHv zYW}p8>q-AJ{OK|%%KtilI*LmFzr&w?@z3z5`|y+FPwQ^_7x>dEGHF5l`ig-xdN6$+ zjho3Xa{=X1T%qCo1ZR|v`;2gTXTd?bvUt_PgPh`xPUQor`XDn7 z2Qp$gw0fG&Yu(<)LHHY)FAn&2et#8|-i|N+>9iR=e~Y4E5GS!X%un)%DnUwd(PE$F ztW!Yn=B?D;v>bezmAG;e497Z{ofrIP_b)5LU$aR~W@9Cd8wkEM@}vQrXBLfoi*gXq zZHXVwS$UF^2Z|@p>P-aws$(|e@mR6N@u%Tkx)gcYjbQ(Suq46R=efKypoM3j{>wlg zzQvBrmuGobPAc=KD&M|_o6+S4ovJ<^--YHS{mzRulGy_HA)&aLkvC`vBktP~bQZTr|Lf{iQ^jxQ=ZP%Y>HPdmInTOYGI_0%?n#eotW0{Fe)$3vAMyg&POfc~$ z_1#I;E5D6tRm^=@%`3tecBrg=Jcq`iJ(uc1x(PgjLKI_yUh`yq^jfR*aPPE_WhRm{ z*KD%X(%Jdo+#pB=N!>A@JMCkciA*hBL8R@~(w2O%ISA551!nmg^Ac`$tT%{;v3Hv48CUURE`GY_wMrQW>ORVMOI`&ecpn|o|Z^YEIx zZA#y!w2x&bGPSgi$e`b1ii2Qj5TxHqK)>~%-}*qm%_CKxO~%;dGn*VLhsTzF) z8fk5|Jn$PJ^TA!FUy4uav8O#YW|r_4v{4@v4BgwjiQqZzGCgQQmmW+%9^~)VW6z~} z@U6#wGmlig9zkh-5F|$*L2~Fpj#Bo70(yv2F|&dR>jqBK#&7nP~H9M&)EqnB|$}ErSisj8&jNryQ=&iGSR-FoM_Nl)T^;yI73>Ivd~ zJw2z7@ey(208^wcTKr7JJ(0DwCxWxwrqN~>Q<@oO$e_!PyOx!T`THIB zLpAh|`yKCP?{}<6WuY4>ZK&}-g{}zxi~z~p?>Hu9)fTKsDR;l)HVuTkPM4gF1h?>h z$M9Nr*p%AT^eG182i)(7n)@Bn4gHY8H@czocq}fBx$`-4<$gzWyZaqqQB?yOVsyc? z_d9L`Vuc*ecJiEm8D6h}_rsjEd3bHz8N5y|fYG45@X2*-qf~C>Zj|;I;LK9|f=TfACT8njKkloBhW$!vVb*|35=1Mnu|v8+^z! z{(k6M-8wZI09=pr;QuRh5H*4%oz9<5I@$b#_kZHDeVk&BeA*!toe}p@wm+f9E6B?E z9Vc{HSU$SSpG&i)DV#X^bf7Z=HQ}R;w6E8{?YsT`vl9P(^jVOlNa7wn{93wkd?I>b zQKbFF5wYSItG#O$5ntmr9<66I(NNC=sS@qtKK#ES+wKT8{sIEycxzj%_DV<9zogq9t4#msAjTFZXVw9@p|*tPB4+H z?c;hAnYubqV=b+PaEp_g5%6I%nr#zj)Z6x*vWo98 zWT(K8UA2-t{LNWG`c*-?mBDjGkUq)xBAh9m#c@vj7WMeAx~#(Dp$f92>t${fCEyhOldm;P zw@SK-lB628YX<(TLnoIsjZHgWpJl(FyKe(_CApP`i-&Jtc7VCHS(#TR{H=1MNLcFsmL(kPD}qS-YbAa;O~X7r zb&VVi;Vg+1V}=Q%ckbS>v~m#So;2Eo;C}Id?zr*M{G2oz@xb(Pqcu1Rlx72E3Pcmr zN0;kF%Dc4G;fTK?6>5Bjc+QKut9n!AbybdcMmO5G4E`B?Jo|Y1AOlEo0)J@bHna;F z`c&F>NYT*IjZ66Q(9*^FDim^0pd@g_J%N%=p`@!Q<#Lq<@4u5$JgknpCnQM^>Yh-5 zx|etH&egw2lDrmO2cvOA2hx?Ex(1_r$Q4TtkuYkt2g-+VB3FTT-F0I$_(w4KS;jm4 z3($n~L*dzT@fV%M-0t2gzc~I6kgU&N!pF?Z*|dQw;n^Uf(B_|w!qr9rBgdb7q(0$p z;2G?KwgX#q_c2=e{-vWRiQR$4<1?zyoR|Lb7KE-1w^3-Mp?~Otk&(pA{%BKQ=qK%& zArl|O{0+ZCG7T zB*j6dNsQYfwB!~ziQ0a*3;ja$MTRci#p)MEGN)O^!4@fv1^R*}80ZTI;h-pzOn=Nw z4iI^uz96a)gY^Yzf}Kdrm=sD~YPmE^?BV0NjHPs7W|Z=K^-Sj73_IHxAC449S7Xny zTJ}d^e`U#BZneu$k~wOhB%F&jt(S2l?Ua6}>FqdoihCC9K5?V7wHGZy&|_?u+T)IV zAXlnwKpsm5>)$!4lJJP*)JP^~$yf8iG1*{Z(rAKC;+W#|KR^yL>fjNZ`_s=emM!|1 z-5=|=F72lsn1U$z$A$HUw>3;xK zl@Tb7E$Q!{T2yq|Yi_5|{cS!~yv-!f) zE2MqI{t>+Pw=5x{R|A}=%vSs*Dz)pwV}t73maUJf)X-dYcTh@Zm}+to^Jw&DqiEtE zoU2XKkJ_3{Z6)umw|$-x?yf_3QzCm!%XNMUu*&r}3oonhxa4)Qr{>_oDqfV_6_kR) zo748qZ(mS-_SxshC1hqpeg4H4(XFGR-uFr)#UC2e)o=T|ePe%#3_^`R1{Ca^+fcSa z%QotMpWBLyn^R#~?nm=w+;}YWUR4&lr?m0GMZ37MyPW=HW;%9Nre2CNrK$D1rEuBJm>7g|zLHtu zBoJJ?YtDl5`RmLyZ8}ejeWK*H!)k;d@GRk#`>V`ELa8{jSdm`Fd&9e2`jb6fnLA-h znMqO|s4P?)orTP0g~gvep!h2bir$0QW6>55cLBvu3HY_xpd9GxglUUQO?t1&*v^K&z`u!?Qx?Ezqxn`01P~zQ7 zK?#S2+4P^2pDM>~GPzO)Ry2shxA{-jgVaR9Jt`_?jK%N*$iB-d*DZn`hZ^VM=0>@* z6>&1qc{S{cH)$7|Ac7Kg?>2R(n%YRGvM4s04|e8*T|qF_w26?Y8a-0`oy4SX99mQK zC)|=0aUKyW^6KsaEBvukWdXgo+21IFZ`|?7EaW!-tOX%i_K!p1QGW|mv%?|;<+MZMt_#hirbkmd`(B-`~t-8OyfHC@Cm zfa9%ExBRp~0Z3L~Mbo@Vm)-;LrMsH2DEb3M+cEPmF;H9Fmfk}ds|0;CPfg|fo62t{ zL1wQEnknJ7OpWDyndDe^z}3@4KAx|sKshRH+fzF5x&yKWTfJM?wZ5ob;-`ja7@yI&NdTbtqJ zU~FIY<5br$Wk`Iul}mQi3>1fI@4K*|%x!-8_GO}| zmt&3ci+R33Inxn|Nj()=Ec=d%MU5XUd-O^{WzviK_IV*CaW&@iLKxJPe+S=99cQ4X zet4GE%9js+k)^-7j*I0|of;?BXfGB`tP!p|UPv71@b6^@0$*MxBAjtsn_$){rI#qcQfofsxC1or@;!R(JjNAVRj$ z*#?`|^_s@nDWnGZzc#=(-~6~L@g`0EV-9Q882`h6SKS7jeuWu}ZfK)GT|gV*u`|c& zXSU=#0lYrC>O%^uephvPlh)rku|D z0=Qy~yS(6!I%0pb?taOsSO;rq?m`5NWVL1a&Z$n#K&F;C7IMrEXmP7w1E~>xV(~rf zAhY-;g}`?4jiJ*mjr^?z#I|*jS?b2-`qN#vhjeU>wA=DF6@a*Kh7H)y1mtMrK9Hlv zzXY^n>h`2#can<<)NXILSwj)QjezxwW{=ojzDbPN{c_t<$znrBPU!|;w_jS>O zn<XblkRvy!Y-R;zVEK+V7^zXPwrAdF-eX{M+Vb`dqTr<#O{Dv-K1<%8Y%pdSQNO+ADHZdN^DoxEc#bc3!J`R|>bpEPGv z7awoX$1kX8h{-d2hlJil9PM36H#A;EvC~Q1t+x1=oog7~WC5egVMmxPow#AR+)h@U z6?W9|{B6g0J-e$uuz}f@xGvaGAeta#`_o^ z-E3&s&=XC}?<`yaR7X^6$20y$X$e$*5TDN$rL($uL1Rtz!o>|-xeo*0u2oLE9 zKcw)(gok#7A6EDg!oxbkk0|^o;gXKkzlHcfkSl z!^rU>$no~f4?#=J-4q+!6ZLkPr7OLX^Bhfft8`K~E-eqW`P9HKTDh<+eyrnt5ou_s zvCO2cDdmoA{1w&rc}WbpcWfnw(aL1}$#jM;M#pZ_ODZi<26(CEsz@0|1r7XMVFQQT zR^^(s5-DfUq_OGidC50vV0$hz2|uPiCz2@Fp0IL=SfZ{O@rJN>k7D#WDi1@?KtNmi zTgI#T?)%XxNNT*30gy-2mo;e&SR31#i#tr1s8fk*uI60<-cK{{Lpn@=_tVY$&<+#e z{afaJSceJlKF_?DbeI4gZaRwyRvSG8FJp_>tv0iK7k>dWQ4K=$FgP7lU>E z{bW4Mb(+D#TI!VPxQJZ(xOt7Oh`5_|azm*b<9i^l>$3O1nLpSZpFWP+Qy%{U)_Isc z@GI8C(X_H?;yX;Bvbr~+*U?Hp)N}y~cxhczh2m>@WC<;0xsD|+u0m9Fo_dnF`4T<6 zlCA%hTgMF;?K-Ypg}r4PQgsnj2LM2)1OO|Y;)T_m+mlj_bq(-Ys9DWzy+LKrstFeg zLSOzjmL;_xxrwPi)znH&2B04&qOyyAu#($8Oxo)UEY{l8_!H)7H-UV!*Z=tiTIweK zF3C6WMbZAA`kdfGWa4hs>$jh2R_&DqtM)IoYQuaOS(_H_Rfy?~s47u%-TBif2Aj57 zp=e@WCqm3iM6(k_BQFNpMOJP#|NCsErp#-L&s!!H8H1LrFU!IY3L#ltmW3Z`t~P7S zvhc&r)n;W`7Jj6;+N>+f!jCprZ?~!x;#-M71ZZl_9=NK!PRD!0D=jZb(<<1*EZ z%fK-S2B6o#-?9=(0p>0PJR|q>mwsObOgiR2b4#}{#Gj++V3Y6-TSpsPeo@bXETl!f z!xFcOg`8IfU#DS%W(KHt<*z;g>WPKipc;3KdSRj7iX7@~0QK%L$ZO26+6rML|L{G- zNWQ%)$4Gt_==X=ugJR`EzdxLoL%;o~3iP{2-}Vg9?>au~40gP5@%{5ng5M~?zCnV2 zQ+}_GDWCG6wcmfK??wlexD)if0Dp_YXBd!AioYAr`4sqj%X$Cf_&ZH7+75pYCAI*6 zD@>x?;ARKbVzj{|*I-hB!=a|hB70N$@n2##nmZ}!*9?HynPSVSven-Rcr&9iWw2K1 zU)!(gyX}+Nl0~JDtF7*o%vmbo+Jf@MMz{J4R6cApUo#Q?oX*duo`;7TB(U@Fy>kVv zNq7IpzFBK>bf^6 zb~E_mjXLKh9w5LB5=bAF;Qj=4$hzS>f$*e}99BLyXSR?bG3oTR(~A7l!5LVDM}95D zOEP0PSVxs+-a2y}+(PFZjQ@(m!Rmf#deJ!pEIbe5uNz*UYlJVcX2<)Xa4qWHqgzwr z$t&OU@f|qASwyNU_w6F>TmsSWL4cJdbHo-7$V3ep>SS7Vp)onV0i_D=2*HZd4$^C1bT+Bcc?VYT58B_% zX2?!nY1rC8Vv`f#RFw(phU}vap1^yRyScxmh~DYsscv`e&Fl85pHfs8$=GA4edvbS zu~RQQ_7S}5^TDyi+8#lamG0Wz_vDUKN2f|o)HQ3E*B|mGoOHi`6QAtFo;zTn#%klK z1`~ulKfRl!O1irJ{spAZVB#RjIC;!@87AI2th@$h1|61V`c=0FU|giVSElWL>-^II*g~#itj`3|D$IhFqnmtp?mf=P=EZR2rZO z7S%`Hba-OYFEOgF^P1J1QjgRb=TC+*fP`f{~))l&Jeq^#$Q5`g2rE{`lwtQoHK31->=&nqLP`AUjn7H`O)*m zwtw*oe}BqjI9NIc^EX@1wAAF?(+5(MfWIj`4`>6_(-Ek-_^T|9Y+3kb z9wm`f*h=fYx|N14`4WO7P^r~F;#&vcWg00ovIT<{zJMVV3eA=$V%g*MJDbIu6@-N65qm{R)oKWLX z3Sp&m5_g}+yOX%#TRhN#8F9dfqJ}kkDGJ@teq?cJXB|d2jQ1T)7Le0@hVu*^W&6(_ zfRXw7#Z14Z6K&5F?TFWt=U;Yd6L^ogA2O6o*j5Yb8&o0db}Kz~yt^Hh^wy9O5CA3} z`)nEh=#{E$B2mRRD+K~->JvJKF&DYVhWI&bhY;n4i}JGEaDgm0Tp-I0n;kdlk>!R9 zWVzw(cHLZqLY4~^GZXX&^9tx@Qu*hh~)28N{%9V z0v@!dpdqg*4a{)Ua#ENUY2~;Vf_49RV*Jf~55|&~3Ai+AvL5aP4wgz~AK6Q2%y?s? zt$jhb73YCa%j3%y?$7GbN;wQHoLM`NI=(csclBDV|DYLydE^v70Ll8UQ75MjV`lCKAE{=y9{a5vzRj ze*-ZVLVE^{5RyC)<1{|l3DIaaiUXQ&203wZ>qm|9z7$aZKF+GLqZ?}44;e~zDlE9` z5HHL`D+HniKL{IYd|O-Lr%$uE8EQ%kif`}}AW5j{X~jIt4`3b=YWf8w8r1^?=k<&l zq)rp+(~~(?e37{5H>Fb`gjvj{)S^muHXY_4OTz}^#Tb7)u~-hurp{tU7SUwWEX(j2 zZ0S2y3(eh^Xs}r%qX9L=lf&6w^KysWydot7l&@5 z#{TUpmpe*J)@#)$Tr+Dj2V_w3WhESl)6)Vb?|nmD)ByC*Dbf6O;2>47!ZDo!h~C+^kwyoq`mG!}{jF|wwuE(l+2IA_6`Y^4|L(6}JDG7QihmK(F=8keK(flVGsVUhrO)7j zo8O3w#pHLm`MFXX+507R_y2H;6(H{ zL-&ST&%sE?Ic7e4;XB>%L#gncsu@Dj#?;nq6ItleR^2YUqo~&uhvspvxg(U0KFFRK z`@PO+<-4IqxxoldbCI@lIGYu>6U@rn37X{}fjhyh#GT;wi@&VCzDPCqck<)kc{1IX zJzDQ>ZQWq2lPswTfisq1|FC3(Ja0tZ3&xGc>s^`S;+=|?B~j7mN{$3G>>pRgfW%$l z_gH9Ag=KHy8pD&pdI+m8IY^S~ibTy$;*yGxW4dG^GL5|#Sduv`JD-IgAI(2wEGFij zQ|iCKEY@s(il?o40$UoEU+9CRecN#tza*hraAMGcY1tN(sRf5vdD_~6=^;lKWnR|?L@5gyFc#T&=9sqDm1Iuhd(hzO zY=f~8|61l?%kO?-c>Rtd1+QP5Cz6xnMFn@DkMIaP3DggC?H6aSrLruEL=PT5%FcmX zD5aqvT*qKyx~9_@AAVzMtoWVC6CZL+cj_N2Puy00Xx@V}AvH>O64H&Aq}_(L@V>vPe{^ku&ly!`lV zT_NVW5_8H!3*f>|>Slanp~$w-4<#x+E^(y%dUi#8>W zel9+y)*JSIZED#2!c*;}kqff$bO#F{bW-J9qMdeKnL(CDr9=v|CB8o<4*EFW?^6UC z>V3-jYLN2<(?EAF7iH|WX%L^I1$m%;!~pmW9G@kxk7hnnG8+w%aK~HGtq04`E^mbz zlYG?R73dOqt$ikk*lz@SH*~>i^|vI+RKK{jC_WKc542{D-5Ib+M}{`Z)sKVuo@@6}z)f_LC*md) z9T1zKR{wh+47c)9qt!&)i>R3PDV^O+sqF~rgKb8l$8&JEw0 z3JW=D496a+@CqAV+y?1wV_2+9S${dW0}|y^7{05XSV1M!_;a#Z$f#n#Qg>nimT(I& zIRZ+Jm}F)8U}uL+kpJ) zU>eZRl!QAImrv6n@97&T9s!4S%0<-9qgyKgc|>%?K(2KgxyRfZYU=; zd+F6k`Wn{gCAXJ;*orYl{JN;NXnN=#gJ8z_VOhY|;iOiOKsD=$H=~I=1j0xHvkyiZ z{)63UZ37bUy=oG}rXm7oKhzE*C=qxpac)io{`PSIOzTiy1dh1JZm<8L`#tkdIHqV? z2PO&ZsX6j4WZ`$N;2hvbQL~}lCy;<&iWbl*rI`_t#HAQo|2wTSKp}%apOk_4du3ky zjbIyz?2h?{0>SWPwXk80h6}uscFF*>ra32rVaBy@e~V@ZIGqe|Iw_ofz~J-)f+IMc z7f*7pB!|;0`RG3oQ#0v&R=jCY>ULr+PA5ntoMtrUBdCzxfS>_#uQ>jIqUzrDy3g|C zXlOc18S~%B17k)W7_;&~&>1BE(R&8TcjFOr`@rvqV6O@~Jd+An3;TODRhr~*B;CtT zwpkX77XlA>dQk=E5VJurdjC_d5d{fda}U2{V`R~m2SJ-wfnj{s9G zu%i|wX6qs8n#eeknr^||+S*_lF>n1)uV+te?iqiWaRS=qfJZ8T7c2*;fK+#sLAFJ2Z-3c_DWI~8g-Tg(7AlXQ20GZeE*GXns#L654ehnl ze~Y9sTlwK^;l}{>Q1Y@wKKjmpCGuLzDL|ZIWJms?MGfYH)vQnDHfeQ}3)nC$43XJWlHcQ3GBSF zR$$EFa>*$LKjGq8W1*8Yau`Gm<()}I!~I}%=49GN*e;zTUw-J-ptJ$o>-H?P%%%i}}G zRrhW{87t;pkoRo-#2Yv_Hjb&xaxaGqOzzQ|`tHqIE6w7+Z%tzQVMWbmd59+NK7n}d z0M{L!ISSP)95%e%qaD>hW&}C_Mvc#Dco-WMH>({mHgnB`Yt^q}L)D)PUe$CAJ3Pw_ ztTC-kO!`#|{J_=I*$&-va?t(jyzMB8VW=GMZh?e*%)+PZx^U1~(unRvR#=kzSMz2wV!gMeVSNNClt=Am56vrs+g*QZ*ge6CVCB`ngYsw+L7Ej&L+;!xeq7u#iizH6}RL#w| zGpMz0S+5!O;=1K3J^rhJdetRiT)No(8os4_hKN^(_!iW=1HQ#JJDNyT(!MwwB{L=l z^DS+E?QJt3YTwFIv0Y9vv!Om1)oc?+nl-Mm4|^^d6aXv`&S$7?d^hoi*quUDdZXU5 zjF+9LW_C7yhYzOl%M1$)SzAQAoGk0Lzv)7XE|^UOz2JJ9<-Sn6VK=M`{4toHQGcYp zOylc&f@w@=P;CY;YEK@(f2C?fJk9ZHsPUfn)JS{8x+i2)=cehKi2UTotmz9?2JQ8C zsg}UN36TE%DkyAE`UA!Q2#F^U&vxZln&+!v8jA4>R; zK111#(a%ZxIi8=);rja8^+xm1-^|lWrJMafD*F*6QGyOWq{r}LgwA3`#4V(CB&3)C zb+5>d+8?LcQLDQ+b7}e!rF_|@Gz~kIk~7Dv*o$p_oEwiXC}vEym3RriQG4!ocINZzv(n#;S{H2s) zr1xyr>@wUR59gNPzB+KJKQmtPo1Mttt5tx`AME;TZeIC^s%?XJ!k;IS)(zSTzXNtj zShe+N;ar}_+)kfnE+%D+ME+jU(I|ofn&v0&UKm!o$bXzr;KSd$St(@8)&XMat@Kp4jW(4>o-|MK(^n+30U)?g5?pz}ACq zBRfZ_f$e>_F^AOYO1}Ld?RDcKQ9su&fm84d9G@ z7mTad#Up!zDSlFLUFA!e+Wh3ue2i9JQ5I_aFP$KmJ2dfwIl)2B-WPubaL4x^aDN5? zU3^of)EV2S5Za@R+pJev!h@A85MCo*TMv)Y)C=Ki2{rzMapZ6nqU$q046J6J5JLi& zkuMEbxD~ku@5o@@Mf=GgPCwv>Y`9G$`mL_nyjD${Y+@B&;TOu#0!&&G)DUVMwtXKL z`8(>Pv|#?FKJK!^K5k)-27UZ~w%K}*&-+w;yj{h-kL9I#Ep-QSkXI^LSp~9lQZ=B7 zIvr}##hUbD*zf`vEDl-_YWje$k%ptkA=P+`puv+ZFEhVAh#yx%*#c;C>sV(@BoQ5l z*{&DkpO3lQxQ}=l=e5k}$X0Y7pURYGPK>yZ#l~V;&fs&ccO=Toy>)wMj&jCw;MG(2 z)o3MFej4Q~2mi5riB5vrvWx=Dr6paKhGn%BmHSZB_H7^iwfPItR)JY8C}*Oo}=;3u(mRhH1PYTZ7W z3MKEt;Mm4oY<$#~(5X*^4u9aXkumrz_6dfmk^a@J#K>`NU=bkvVCaI~BZ-s7A%l%J zy%f43>FmnzT?( zzhxVqZp<)564NyT-J!;Z$;S{#p(%9j243<*@wB}kumgl(Rl}OxrueMSO3l)(DK$uD zjuOC~RsMmM(6*4MhF637BuFFzxudp-BHi~QoZnVj9~sL@89P>Q4-RYIMMxAc)n3cp zBQuMYMv}vbcY_{|obTSP5Vm_Eox_zDLWuRTEOv&3MwlK0F9XwK9C6`Rb0~MsCq()! zvZ(ec)V{-}{SSZ%;0$65-uQ-)TK5(TbsWX3u4@*LtmVJO|1+sjr8vmGH~ZIi!_gk0 zR5z0q{MxxfgM4xJu@f2H`Ar5<+Y-jOJD^}fZ z7{nHn!Hw_HeCf(?%*ktRP5uT6#d93?HSrvS__rmmYYE{)4#>wdETpJXGfT2`d!hCrV z?_OKpZ;~e8-&Ee;V3NIiZF#@3<^9c+hgHc)0;7Bqeyovaf&P|e8gHaUi9jBZP&^z< zk{+}AAwpoqo(cd?y9;-@fMHGWsQ%1;Fz8k|VLmI) zu8fyX5~FnUY_{w=%Rr==$MfO zESHkuCE=bZR6_ntx~=|$q`O~3$7yhz|Cb}xiFv5EcSI6Dk|KkZQ5mlg95ZGc1J@6q zW@0&tcb{Rz{F7HmSW&l1Vn~Kmm7k5Ws=PpOk}NYaTQfD{xA2b@|60WRmR#MfXDNF& z{zkTuPN-eV<;gl&3?|rS<5O<4KaNIb(5o>xB+(>g`g;a#4Kz(RY4uB#{Kubl&Ba)Q z0FPTVJod~k;*Efhod8Nps?s~uY)MYXqaqSJq+fQ^b%z9|%VrO)f4jK(h9Uq=@-jWV zs>zfi(URs@37&hZ(CRSl;dH|!K>?prDV;9b8wZF{G6+e5W&@u1 z?sUI?(NHvUrH9H8ji;nY!?xW**Z#)TP_pMWs==I=b?vPv_hxg{RB$k!FlTZ`&4yhH z9hELmaNG5=37q!YTWB0RYewo0?h`P0JDV_JIvR}K>l9PJ=G&A=12^+x*8ci6-?cH1 z6O-=bhYD2k#NLS;ZAYueD{@{ZW1tVzYyiQ8yS9~X;=JiBREDzZz(yI!Y6Elkme{;9 zkkth?%0N~XnCrJB*j^cEfF|(LiJC5h6;UoA)c9Lo3W| zcbhUlu-Y_1+8<{>d_8karUEsZ9S`1Ke)EK2!yH`fNfq>D5#O>sY5jF?f99*Epievl zzJ7$subJex{xazOR>;0YOlpy#J8VZrGVBWb4~@VTBplr~a!Lk6qV4WLh8iX6@*gKj zTGCuwlqJ{N*$gk0JBA&R-H`ulGC_8+34IvZJ{bYN6hrl%Up={A*mhlCvWY3K$u1YnByC{HVxjFWP7rV`kZA@`nihm$iD<}J# zsEtV{%xW_?$rpF}7t*<9;V#i4tztX1K16k0(aIM?jbEqX)y>1kbZQEQQ!MB;U^VFfA2}ce^Hn@`xn|Ik1MwK@~T>zeoie-z)vJfZh6j- zI&E!}#>7veq^-h4Nu|s{42DE9^R-|d1THfr$azgc&V5XQC0FevC$qKaPh3jUL4|+n zAqNy?7Fuole>+SA4tTv$yPmD98V{5?E^GFp(o|I$-G_Cq8qEU=?3AOqC$ml_s0Xw#Qy6Wc!Z{J%KDNvx)+k-BQ7Py+F0JM_{IS7eJKq^&99u>efGZZvZ1=)&Obr$IvU6r`kU_LQErn+~yt-H)GqHb1!Y_ronru+id>Ul6(>Fc^O zPv-&DGT=7$bXbjh$yo4R@?K->nk&%_SCtjT$6EfZn-T6YEkz9qL3p;!XP4>Mmk`v-nm=#f3Y$IV|sn_E!8FL*tN zlf;>$3nKJhUifb0*V+5x#ij;0;M{%jQD-t9-l)UR5F@?W--iTj2NZk*_-UEFVO)T$ znqpSJe9mlpUwrN#I2S(TATzK(InNHP^gB?w-DQeaU(;10H0%#d z`((c_>rVj!Qi@;kNc#svC8*)B8pq-3V?s?&nPqNk&Y{8>P!AV0f0m)3_V>6z2MeKp z7){5a0$yx}1jgt=rcmRL$jwd?hYEiu9UkfNLi4;jD^rXKGyn0*b=RP}j7 zI>vYQmB+EJ%`hy0@xkUDhsb1x7;5EbUv(VhZAQ|(H*_S4OWOMiTSHA313uH=Gw_js z&83LsMDmfKOAGJUVPU*KUIod?&ANYQ@bi;L7NKG&PcP|3NAYRv8?)T_{oTO^f=uLx99n=jM**s=tyNMv{c(B zcG>Kd=XdHpOC?5v5VcL&aTcK#*%od}9|*#dUOV+zf*Xn6VrcDtNCKrbpg9`sBdMih z!Re6wP~-FTleA^|5jh88pz@swUhODfh^x&Uek@MbJ)Qm!a!0(GeQIdL8##`feSMNW znxX|zeP|&=ADEHDUzH!#GTE>W(N9nZ`%kb$?X2ur_QFn`Wu9GbsQSi4Q9Dqa%F){-jVjwYa z2&44+B)0uaO?wD8B@uGB)#1EE4nzEhK+9@8=K^&G0fBJRzn3U(=A0UCd_ze?O&g?+ z0gF`ueTgM?b)d3yF#;u1z~%bLaB`h7eG_4gJCeG#^sS86HnIDQdVF`-5~sMcA6kXP!K14?LE}(^wIU#S_sOKhDy7DLNZOn+CB8Kd zUm5Xn^a_{9&-lNh=$P>UJ!LUlj&6pyO{}zrDl;~VAEIJ1Vbc(9r9&xe@@j2 zU>0QyhP-3pL$TaCpy3)gpQi8E$CTd>-h974s$;zzwqF6y4vjC3SH`@v_v^_M0`6*L z1$LwD6yE?;+ZOyGTKqCMEpiqO&*5|)t$-;qUnph#W5E;C#L~3nn5>j|=B4L=ChYN-Av+_h{#Ag5U{lpuz zNH<-7Y+rwy#A*P1 zbiu&p5hA}I$iweZ{E47{(8bEw>E8s*t5Gg6WOzyropW#!1ztRmd}gUu_-`fl7v$R$U0PW>I-? z4*1kC3oD?(I*L02kPOR&1f5+49Rs7G+rubJzjFL>F#brzIFQ3e{M$~&d*XXrxf1eT z$z`<=Tge2S@9zC$r}&}%m*oGQwLAx}0sXc&cMYJT>jhLtj34fZQ$ZGtOm=)+vtd{(9l+d_@w z45h)OLPNNd1(|Y+i4g*Fi%mBocev_dn8nBJk_dWRpdPBFC_gzwUuwPS2ljD^?!ej< z0Wd&Eng=_NuEZQH#lY0)(~Eu$VB^#N4$)3x)@bv|LRA_c!w_X^ z=+=)fnD^Gy>?@(4Br~rVg8PO{Vg-#h6nDhuMRDN^J7|pl#xgf9d z5SV`iPs;~qW`l`IRRr<(H1RI=XVg(QzkrE=FAVbcWbNZNyzWTi=$%&T9P$OWR3#32 zEl$I;Vji4!zZ@IsiIU$uXvAr3Gs0b?RBxi>lzmJT!xm1Ors%eABHWf<1hvB@D5?$| zXo5Is0L=%1URw)36#2h@WWOS=mx~j`XOa7Wzw2miLSKWc`N`l?byO6z7YkD=$Z9OuOkp%&eb zFAp`%R3m9L*9xba>MP%_#`Jt7RPz*?9*6i{U*t+i5}Pah{OA%ASC>8>YCM;~w1z7W z*^h2Y27#)%b^W&)Ng7>DNttWm!}Kyy*XdM9=V7Jceh#rei>9#*O}idNx4b~ zWpJrb+1UoBCs0UX3ETob!0@XMI)#omXS4u+s1h}-qr?~LUfZdxGjl2kb!sY)W0K-# zK1bx41(Ev_N!0V7+cDyqw&p~#1 z^13$OxB)T#D~yV?963Z)KCfU*|>=&8xXoJ}9xy_djXV85DhHPf}>VanmU$DpxJ8O3Zh+-z2be1{t3`+`Nj z&$;H_r3Mw#V}ZO%*!K@maW-Z9zeojxJCX`KlR8qd!3^$2rS3zKiob-Gz6E|VET(SP zUinCjM3#*E&5NKF@5<{xmp&S5 zY*CLAhrJP+rjDsGjNe=yraM#4EL%7!tJJ|25`A`OflTmsrqhm>P-4feDdPi+^UTun z%)XMhuw~9&;Wd3c4c*LClfYU4DJQX?fmFGL)V^*)2@It2VIs$kd zLGz7kALi;AY^d%0Z0HMxt~r<$9nzU(tJ=A++%pBcuujQgU{x}GAfNM9wCG5W2CH_z zr*U{udZ@A|O8)e~V1)ZJ&F91FJwDa6r=7u}|I#uYl$30lV~N+4Fplx2sT;5YOV(>r z44|VHbrL1tv<)d3p)n*yp`=^@OOza9+hg7elpXSfC*Oi1T9E!Z=)__(KjsaOK`#*^ z_U6HH4u;8?e>YG=kux;b+VDQJeI5Y%*7Zs7>91_~6C)3ZRz4WIRvc)wxFaTinorBM zZp4ir1zLXVsL_ejm`;yXu3K>DN6by`!x?fBYWf@{rS}z<+k47%YID*6xuDZppYoml z`tIiYC+YNVAv*nQ^#@qB4=z@N3jPl+$TlQf-;Q8;*B%^Fo=BM=+NKtehViz{g2oe} z&M6ILnh!fF^DN5Df+fCNAw4yhu{jJBN8JYJ%l0nmA5+HZ{B1hYUq=WXyj@X$9iADM z8DdUGKCUDgprw?pAxJKK%p1EIS;WBgx8e2iIFQwmf;K6Uis!Uvj(?BCg%Yi|+E`$i zm}eI}RYrU@ETkB;ncTWZKR43;Y6+W*ufaZjt<;%va+e6xf?;+8Sl8y4?`3IIGW3h~ z>e3C>jgQ9H)+WC7werZ;r(?yhW&QvwmgI^c^SLvQuxSp3%r31%35ad!1pmc7m0edS z#32sc3k3VAY<~iOVz@spN~ym&iUAG z;3Z@;9-{=#PfI@{IY{1?H>+{RBnidrupb2a^p=?*{$nBr<9$;$;nvdqnGaO_iE87 zjCGAwR5={~{YZ70?ZC-w=E;Ky%WOX2#$v^<1YGMZH+ppGEO!_u&+rls!RberDRT7j zi7SuhICtY!yBV?V3;q^{HRc|K-))$&i^_D;yASYWm9N#0Fe-52o>{8FyAGfO z^6BbJ-vE2mKHwgF{+T_`4H^qmrXwUDFUxb;G5NmpPxW4yrej%a=Q{ffe!C+?bxXc; z5>p^mawZRhwyBbD<%6f@gQsMJiAhrlve7o2Mq<o`c&zeh2M0_@VPr zBl$^`bjh!hJ0gn1o7Bv4wlV*Qy?23+syG|}6Cn~**my&1y+loI@K)j#3bnf>3ukp# zVr>*#QL2SnuT*vg#XvBL?q*$^*4k2A+E}&4+6!92cmWc@Bp_2m! z^7}r|oZUUUNdVFIec%7*&xhJQ{V>l?L%hW%U4E&}vdA(Y>hMl5S>8z|Z_IFnHG3`Di>H8R+&^K(Y=7}L3N(R- ziZ%98JPMa#$U$tmZ}R}vt!axETlRBBGR?CbLh_zm{wYIW zt3;}nC<=3Mg#%k4x1wk$RdeZtss@-mZx=Mg+JF{XP7QtcHQBbXDYn_XPssb3E$md@wL zzFh`X!U;bnvbrTvff3dezb82uyGI{8>Y7NEe^y7`TyrP4&Cabl`om}9?T>-@s6br} zw)+zOO7jEp#qxR}wpd;jIp$u@y*)@j^1fZfRV;ikO}LV^nbkB_r(aGytgo7|P`G+X z4R&g`LP}TD%zfpAp#!Y8*ZSijr7y%EmWw@wsY6eP(^J`uo5}yc?%Gql0hAhsx@Lla zW1!sFg|tqD0UygC0gK_G`0U{Z7JMWzvkD_G{?3_Tr%)aSgvrPp4otV0hnAU{ zX?0ri0*Fg)664&F+Ls?SJVF$EU0IcVL;8~T82#%DrLW|{`e zja|iC!ZujW+YC4caOt;C%zIl0(uzHt!2##q9_Un4$W`d$mV#XJ)|6a_+&PzC+%Bg* zi7Et6H$A=Othyb{5l;zoq+_i1(6cvl#hD{q>6=iFv0mmFWFtd5yxO0Rv6geyp?0mt z@Ym3fz5h40N9l>4A7_o+7RKBKCr-5@gKp?T5=X=jbD+n^(f*wBm=)1e_dAKA6Ydab zgJWYEVuzT*@$wAsDip~`9B?iyg(8hP98onSX-paJbC|?s;60|CH=s#lP?rn5$AHaa zz0?4_Pv>upm$F`gGgpN-S2MNJ2jOPrk*0r%qF>74OR)i)$9dDM=7YO|NAYQyB}sI= zM+fRo1(gG7$G}<4y;$ovv*#9DS$- zHB+a{Rb|z`4=zX@7>vuRP(y+0wGRq^DTXp_g9I=&8>wNV0zuiaUo)O@{|06xYk>t& zWPNY?bhN77jJ=}lC(30bzG!T3UHFdE1t=u5HQj|r7HAjN%C^_(!f?|CJJWzfXf4gR z!E#p*_K+Uz%>hc5)AIH90BN~ySjuUj8-aS@zXN8xC&qiN)wb2$hOu&d9P8hBFk)Ou z+*ceMHhuD_e|rd76H* zbrxSNjA3V%*r#qYejF!$VqjY@W1#cTegL6R-G<#(+Y^@wKG}cdxy{}Sm*d>tGT$}- zMlIjJ&EBo|{2yw5ahu(*_xy2M|G+-$|Ej)U(q{MX^?li&oduEHET`6Bd4NFMO8D5W z4?r&r&6-|Zza~7|DtsJK%dCApi%RO(%-Abdy@83l8)l1`=_hzlL9rcNpb}yN7z~5^ z(1YK>)eisb0vx2yOzzFIJVxqV91FcJBIg5m|8?j6y`1;=i<6hBBE~7Nk5B7g(V8j= zhLE7(_YWbQ|OXsk*9uzC;B~Z zQ6fphlNWKHF4CYy=$0pXtrSUjEg5qaIttmj_T3Xbl-q2f<9N#Zrkqadd~>msb-pQ@ zqr8&OWlKtKy5tMor(4$#F4+0-RwJunsX}5=4lt z2#kEnQ}=y7OoJ}}Q+6Qtl?Dwa-Cz>o)9s&9M<7NpXu&5>{VHk0XTT}+yVZhIq1aRQ zSkoL&{f$&Yl$@T})h0%5*Iz8(P)rJ9>W2vuJ3VGgf9!eu1y)Nn1W+PwIHZ=?TuR z>7F!l>x^nJw#@$5pPUJbM^P_hJFSXwy?g$*3X)~H?=9cKdor=-^In<-5q2uMjXDA` z{#(V#5jhZzP@M}m#!A6mgy>PGW!O+r$#x+6n#{+~h8x%MiUZLf%d|DPQO9i-H}1JR zrzfrQm0j$~B&t%}kQ1}F)06Y$8=tKwpD1}O77F^lkVn&#LMn3M#)kO@HxB9@H#~K7 zw0zNT{s4ZArp}s%q0$iW07>)Hdka+2ySVxjKRCD`De-3lF^q@<#i>2fu#|{Ba_lsiGfYK? zg^H6u*8=_F6qLT#K+~U61|uFpH}s@3L)&FkFh6t_l@9xZy9^w@Ovv7z3rdDvS$0Qu zkO%YqWH}q}Kx{-HMtGP)&|(+|UpSHtpOF!8CdXJMclk=pDNQY#ySw-LxV!r~{*FXJ zS;KP`*9d=-C(qCEf!lcgKG)@3<@r6X<*<$WZtd>=kgKH0-w2+o_>-`c*K!qpHOoKF z$+5ReZ_p6_Jt}cZN3OhTG+WGlu`01vzn4OldA3F3v{dRVxOiDXN)20i)qz2bLH7$J zu4Zp%nLzT9%dGD9)TNFJoG~s@7#W)u!gkQEG9ZO+d@8r(pZ%`jfO&Eq`Iob=JO2HH zDbtJX1Z}CZ3ZLZLBcwKCGvixWcpsLRAMX{}pDqmOvSpKuAa|@49Eri;qtWU+f{CxZ z@{SK8b(gjx`(08dNKIMGEmHDK21qehNEw?TcBQR!3XZEqF1Uj~g22lE010EV0OiG}bbQOfXYZ15OMl!Mx zSmJ+xnEaj_=aPy!cH5p@(!MY8>N~}9oPNk6lF%~-yQ|8RdqWO;%cFbJukNZzpS@R} z`X`u;_UiX~^o#+KoCnBB-pk!~zg(J{zTNz))H%K7cUO%_o!VPQrb|}pknQG|eD*Hm zp8eXpJ-QqA*sDlQA)+)xZ^kXc>7wsi@zDIyg>|c$gQ5A!Q`zBX$ERXVch%I--Uv_q zk73E|b9*+#Q-6Wve3P7HHFsaYrzEbp{oXr0`s}H{TXLQu$8qV)Vx4oOWmG2OXPzsb z`cI|enLR&=`Nm{YAyLWAkm_vbFng2P+}+f)i(mYed~sl}U)+>3U#vG@WJH5%x+f%~ zyXxZPWxckfYR0Z~{BUW;^?Wd&P!!phInDUD1P#tia6L_97jft@m`;2Do*(nn|6OuE zeVc*3n>%0a8-;w4^QfM6$Vzup?JmN(zjW|+YVO&=IH@wS2jz6o8QC-;Ynr=@AO5v; zsl4ZhJ@qlk87!Th&0Tr|*VeQUtIq-*>*jlj$FR3&v zxq55wjjr2Dq{+pGKR)T#*%mL}xfZ|r=B~APjI{VpyGM&X^%auSNKW#r(kh3D3N{RO zbwQrD!LGUUg?&puyT?TbdhWKhE_jFsxNn}E{ku27gOj+cjM>TkFchk-xr0%c zKs}gf4`*T7TmWD;0R<77z0Vbvw|=8McNit8+v?H6<4GcgTG2h*VWJ!T59(>`4|4aA zp2q$VcMt1n><@GIh@Qs&2zQJ1H1@@O6fQOGcz_Za>YRNRTiQq9dhO)vwE8~odT#?! zkVd``ULNh2oK6S8!Y^Z%m=;@!Too)-!pJSeP#v|Ja#c__zJ?0wdR0WjHI1^0BM0{O zt>k&;17!xyRp2cf@*RKRNIsA}#Jv5&t=Z;%f2ZEIU*&B%fh2XDhJP<7{CipI@KhwNNPVq!?VFzh(eM**%oqJmS)nf)F5Ar)y{@dEFM3{Ce_u3M#>wq$J87c&=Uyw+W_SAm@1TQu;OSx}bHiqw~Ubu-8lNz^tos};;5 zn&*xtIdaw-V=j9R>GZj*dPttuTd_ zA!KoSP8Di7Upzv1hR}joO-n5D$oxV%I+jyB6Q^UN^%BNdg(>t9xYPO(vRlRRf!%Eg z#v9hes+Wg{$DS6i&mvl7|L_%HrW@mKG-~(!Ong9zG4hs5TOYM|Cma2D+DCMxQ`(3B zW!i^vdgdJjn&QK_28agYC(Ds_Vg$O3NBlsV7WMC#3 ztibRA)P88lpH4}>@!kFJGH$M0U(?s({^g=h)B?wR=gKvYFFfir9T)p~3Ir>*S`}-B zPHW_kx{n7;C+cgpWhH)$z>sh=vHmMlUnOrsU{q+*v_YBk*h3Rg^42{D%p=Ge-nWl> zO-7yp<(w0tYeJEY@qpX$F>P;}!9U^+iq8L3j0I$NhxbFj?O8P5ySc3}a+p|bjBJ~J zc(1EKfi9OAg^g^x`W3Mxk@!hK>++XmPU~Cs@M>2*p9CcnA-B^6C+R#Ox}2(OM=04!wjS z7>^=;`~;lLr(xVZ`Z2002=tq6Y4LWe?ahAnM+|Q28`C(Uy8nhiY}^E1BWloq>DUGm z;5t6rvI;wvczMqn)^2xFn2=CH6`V_|=<0r<7?78q>=(1jrgZe%12YI`{U0MZBLL3W zDd*T{WZQO1Daek090;vH@!hH9-)68V$*5%1xXc z8TGHIYz+OZG8$UhIPn$|Ip-xh@$p9g&!hfTjn%i3f($uYO_1S;OzW=t72%8eI#C(f z)JQ;o8RO@RdO-C8zjK_jKRRB+r~0B7=t0WqQcgtLuTH{*6Y zUm|GwL_&O6VWDwdS&-&w7~GAXI@w#qs&B%LX$BksX$MRz=UB_Ks2}g}%NH=o?@fIZ zqKR2IWVkjIv+d`AMN&3$p~PiGg{gaEqhNY}5R6$Tvb{jv6Og0J7tjtYf~Z7{`QEfY zSvOjayF5bZc`e~PGyq8AOpq_i~14tzlJ#KY^ z9yxAxH4E(9*UEAsJPn=Ix+J_~tNreavZe?C^2C`%b~{-z_dB1{mBtlsCKn&E+cGDW zq)$09^egrxvT@sow!1OZ2?kw}!FJ>Z!ez@r34o^)Zr4*knMC1uJ1M;)db&A}JG3%- zx{1IWdOUi%IgLBCDtfv(j63v1^mHfuE@4$1WD<|fNeFkDT3YLFC{aklT~F>ujr4F9@k9UKw~(D?4y*18RZ z!TY%1G>>p3kk817)R}~04+Rp|2y0k}q?+~K>i6R={xdWB!pHaP?j=nC02K5BcJc5~ zoM!gJ2Y-t_pQ2!W;35oy>z0+^DsJ$g|@MsqA(&N-x-6^8Tt{=(bs z{^gJfVockWuO7rw{+P8Sy@m_l@HG-;J|$|F=da->u9Nc1*`USz%T0mYHGE$R1S?X( ziho!Ykfez%EEu}X5Rx6UKwP$ou4ly#YLi8LEQ|P9UBn3w)rxc5SY5>1Wf2Dvx7d?k zlnEATVrnn2C$Nu@xKuso`6~db=h~iisq8@*{-Q6exBs?A2t(SwS>iD|@n$B3IF3XP zFCu2g^DH2(!W9V15_?W)!sW~XICOjtuM?lc73y=iQhg2|SD(XG>T~!+uFqi?CRNT+ zUx}J#d+5``VEdaf3oK^xH#0Ewg6*y_0^-YS?=H=hBYD%gl2a!+?=ak{>tv(c?mb-O zp$w-4cp+Mv+QP&L)E)~pYbdt(cR&gFRTCO6)XaS?LO>zoMD%DvHfSh!sFsb0Y=K!c zTj}IlR-4q&%(tDDKJ(lIs1sM0>r27jN` zO0{$Bx$E936*Dc%#DdpBquttq3j(n?kJ#Fd|HV4-f>s~^r?b;)N zK&qU?f5x+kvWd_z8y~t74w~N=Y)TQP(_vk$78%|&B3%^bi$>M zdAG4I#99&yT4}$ph3#;+brGHkm`vR)t6eZY*g`uNYpZ(|61uJ5v_09-K|)tVPD-5- zNSq7#?35H||7!J{2K}4{{hS84!S^Y05Qx&Y4e-e^byg)b0RG_)Gt^gdY9HIrr7^)(X7)@$^ehtz+-b5En^v5<0IJX_YpB5V!y9#sh4pM1MXe;=`-H+& zh{}BFAV>_u>4z-1x5x3Pfa!jCzZw=&5A51#KZclx2`kpz3L`U(FJPjYiSNyD|7mab z9)*wB!t3o5pD?7iUfQ7cw{Cj|QLLmz0J6>B-SnfD4@U)8NlLELerVUE3i=@gOn6?` zWL)+n+x+hfpBB@2BWyQ>sf|@XW0-QOu}NMJ#Y;o+i;F|U-Uy$`DJB~A2{VN@8^`05 zd0#l~+qzg}V;JiAqx{ucZT~2;3T2gpY7!^#-B|}I$NQ$l58LhO(FLJGB0AMXQ$>hn zD%OPrz2L{U*?$G2^7aHE*j$WOYGpK7moHl=fYuf_`sYe)`I~8@tTn&VwdOWmYksY3 z&2MzAnU}lPH0xUPio!)BHrRKslI2GEazlyrR=S>9bROlw{^?Ufl=U5VECX43#J0}< zG5N{0+$j$}v99Kkg77(v$Fc@NHB-OY5Qq~l8Q#ZbpmYP_vc+Jhpj!l^@XsBz!A~$~ z5k7%=h7^+Rj_|*gWx@b+f|2-61QOMSsbk$u%&btEo+XDGQ%Z@%aGov zAwuj{*~7#ZUdONDmqYN&{=yXD9xKb-(wn-PX9~i{g91xrC9waziWMrca02f^`s0yj z?00H~ca!ayY}Z&k$5BMs<@c9}tl7SnN8!fegq6y?XfMitYj3BRE2Px6$43|78WLec z=)YHvwG9(S0r_}LEmjD$(309Cuo@QKJSP^LRw2vZY@e<5BUGYQ7=Ax$-%DjYS@DGu z%_124(Ec4MzB$3NvI3?R;XB0>@pVsql1B5@8i{n(!be&mMnj|n8n$k#$TfzoK8RuU z&zBwBYTLKDLk`2VrIlPaW~D+vh%JQuNtbYr?cjM=K2y0~vmPUc9uX-_fn26?2?c^D zMCOMo-V0O^BvT=;EU*YL_SFG4tmS@0b3L(*BPLOOkMFtXs~= zI%D^i-LFe+wE`29!a?zr8T{4vUBZWB(zU3?zKksDOi?~}URMlez-B&d8Jr>1-R~r1uImW_?2h*eQM$k!c^~1+<`C}(O{VeYi{Gl=SWHvH# zc0lvxTLh1BcCuX>IpBP+;Jvuz*y}+fR2noZ^0;if4%22a6tF6~lwC&wR3H4|WC27k z(-)=}OW}WBqw8L_@OUk(K_;cFmq%t(7g7l6Mn)Or>*!y`a{&TUPPUPSUX({UFwIEo z(*9Z7fv;%u>>=8&EPN+u+g$Md`*P_>2EKRl=$kXXOa=GbnJ7C0U(AG8`9xB%Nt8&z z#1)PbNn$l+C3Y|@D6?_!jGraENPL>nBUKwck_hY^282>$Sfw)BBYy+ydCe-YCVY(1 zl?A3OIw-v5aM9PdLc}r=W)UMBl_4-S#(J#g#FbOYuPb#4=%% z7})pi8%daRx(p3l)0sv&@gNVfDUnFA0f`z47jVRigILxP1%2b(Hi&CR7sQu~HLKSZ z|J_a|r6`Iv#r>=LSoBv&nToZ+iVbiXUBpR5vN&KmVx)5rBZ)HTl(a5rJS+Wpw=QVB zijg{ipa7`bKBQAt1=R($3RVt&Q&xK?#!@;Ef{PsXjL&@WPG~AxUi~j=D#UW>^Jpr> z_(!!Am!qY4H~h`Mv=skFOVQ1ktCnJNZJ_So2Tc3Qm_+5V1*)T%%qokH;_JHS*(||- z-^4mSc^7Yl5|dF+ybeG7mOU9v5^18UCsskc37;B+sZ8*`(3tn^?@A(TJ{)Hg+^-ma8{2PKenwk4eA6^hK!|L^ z#W%G)Ds(B={JF^f1*yW$<{hgld;cR^m51x0eYlcW`p`aD@(r-ktR&OtDKmP;_6U5!LO^m*jtMi?BOme2ze>bKZum zsjPdZ95U$~FzFmF+30_qM8p!SxDaLU2{}-bpgu59G(+P4i^yBTg;3*s`zw#A$a_Aq z^+n{Z+%rC#NF2MvHTD4@8xNFbC9;!zb%uy$#SX5M zwWbA8#@ zjwo`iiXwl(=Vdpx))7U%;D{n$}Iv81bu(SX9Z}M|8SL}1a3Ku{3n=A5Y-IfQL1%sF1 zLSJAX>y*u5=`L}-p)B2FyphAw-A@86oqR5zrNe+E%hFXX6`Cb1-3<@qv2-VCR4O6GCyZCk9(5bc2fJ`=gwNxJ3se3Ug?9Mn<3v|MZNa^d;;$1_gwnp{~|x9Fi2F9p6(e(pkc-EMyF+fb#if3G&y8a|d-8J?f{Xuy{M@~u&S&H2X7ff*;_@S{XN!I5f_!qY z3;f)5tN+jObHDsi4}R|KzwHb^H~ik6s2*{FAZ&O&C)&fsxh z>=`xomQD86Ss9&clij;jUCs_W->S~BsPi|xUKyK=kZub?Itd|Q*Ml04$gL7H%#I%j z!P`m!M;&)K`7m`JDLcU_i$yh}5#7rD(pCOVQQv*|H$g@*2Cp zALPHXH20MSJc@;P0o$Tbye3DkM+7hQigGNK>h}T*4SDQgyrwtW*h7A7&3R|OEEA6XF|l;Fv5`O#C_AlAxv)=4+aJI7#23c} z_NGmcopx~K7A(G0syEo!ACFb@QGfId$NuA|M zbAi3}p59r@O5W;&wLDlp1Nl1iPx5Ln_J|{lF`}G+$RSs5($$ic4+`nh;EVCIRlP7v z)C-up;Hh$du05~@HAKBYZLJRVVwhDtsD$fry5JBl#Dktmd35U%vSBBcZZ&fsxCn7h zL$^o>v7IFZSMRp7{~>-7DRh?r@8S!fOYS4RmH|y)U5%K}`j!e~Sg|h6zsm7)r^Uk~ zI74s05p>=DC1tJdWr2%`@>17PLJ+&_*6ox*@X4w1Fv+L8m}H?hpNBtA_h;_;dHvaR zxAZ5+9=O}F2kc=F+(FqucSqo&j6HD2bz%?PiY88of1W*Xmk0S6Jn@N2y*skuqI9J;9o^^O)PkjS;;)@PY zG3Pi=5?P7U2S}fHg zT0trM7(usu%U%f@Ywtr&(imT+jeFAve&!kXT5*CW30X9zy)Ii{JrfHfr%6H})1_1) z0u2>PhoG&Q_i7z8V6-J#G!_zTU_&B}H8A8`M1}Akmk?MYYYm*~d)iK>huHKq5YX(s zXSfKY9&wX85cWY}lc`0;cSCujC#~I0QW@(0cNx-Xdo4)sL*sRfMhAx z6`iF#ZNGT{CrADtv)?@a{2taPAKal#b~7xCtUh2|Z}yvy-_@J-$z8o#pZxBR0%GB_ zcfx-2DlNR;4&Tx1csTM?D{Z_f{+oe`+6fi&me69i|K_Q#Jjdv_#B{JT&69~RAE|IB zSl}}3eEZJ-IsZ*Of{31Qr>>EmOcB<|)C6aZO#5$+CENIK%6zh~aZ0=WHy_Bn{0m?Bz08Yz z_5K5-%97N(f1$6rceXvjTYa$YQ{*$kdHz;jb?dux@o~HUg|F%c^Z(2Kg-R}G{7%Sa z#=r34vxHvSy17*2w;|*k|3amg0UrN{{R@ZYH*p%noGYL1)4$N7=>InVLhIXkAirZ? zkNpH4sukkZV?QySvf81{e&R9RPl$h^EH`=kiRHT)8T;$=WvR*YFMNtbAt=507e4cQ zDZd^6!oO4Ci}Nom`n@hPP0$MV?MsDQ?#;h&7Ngm7?b(ihVMt$CZ;!vtFiCm-Ep_kg zz`tizKNXwZT^K@f0G`C2{}6ov7J9q6ghde z_4t3w8$FhR1*FPm^1iuBwX^<(qQCnr`-zSR|Ih6wUOThLe&Y6D?#zB-=C69&Pwe08 zeq#Ku(*v~=`-#J~@Or!Kmu9Nu?eEh2iT}3zUTB)V91L;E?+1j0fV$-O7m|s#z2Exlmd>EfG~L1@W^I_z1|jkHM2hBRqC9{n6V!cX#}?RcujB^ zO2fLyY3BUA@9Rh}3npe{56_z{2ouwz=r|^?2^^Aty&s+@r)A^+rswYLMOcT-nKlv$ z8OM6*sn2wEZ7j4Q#2GNPndNTtygfvh^(WeYI4) zdMz>^fDtZ4xU^qkYP1#C6aB1Fb-$c zy&MnB{#L)a(!tbM(RK{r&^t#ehw4KZ$%3SuDnbApoKAjosz!*8pHRt}QStBXMYM_V zAVN=Uv|{?1)b994)1Ne?CksN2Z1>a;k}B{yzc4njD*(dLw~95DG5<4m)6Y3Jsrs2v z{0dZQ?|SMV=ZnFMUh_%#9zSN8gzxbaz9%#xH+;|c0*RU`dke5ieOHE%uS9;U$6ZS> zAY9s;Y-zd#0T4+w72s16((pc0vf+JdELV7+A)qKNNm=O#KYk+oAc_|xC^aE|YH~vS zym2ci-r+A0j7VRpKu#(elq$Kpe<(J&fQLvCVsQz%eSTH!tYYl>e6g`*Ss=T&x<=f` zu{xRUdB*-KJ-nsCI9O*+21_3mw$d8*p?C!a3m=VeWF=#mKI79FLJo^vW{rGO#!8O- z(i6r~y9c_Nj@hE7AsxEqrhFFHa@Tj4d_av|ad86oiuQZXqFn_-DroBPVEot%S6Q46 z`B({hCdHbV2E4(>rq+sIQ!1vZ`&uJEmJ@I!K7+3mDB{P5%&J-MaQ%!l6Oayf4D402 zS}(-bxF|ce#Tl2@L!D4#avazpoFCSJm1coCPb;~ITjSvS5G2!EMAHEd z1{@^)B+SkLVk|H_5n9w(Y5>|ZBl9jYW!otMRU2_no zL^v3^l{46B^p_^qO=7~De?eZL(cddT-MYNkzrrrNMvh1I0aYsGvpbw&Lgf$Q_yasL^E^pzB8a@%h{|I@AbMW2K9DqmE zFsom&r$G>jkT_Ocvnv}5wX=ieY_!3o%TxG6^{3->G$P_ezQk@Q+MDNDY7EGB(l})$ z=L*W3;A-+B+jv{XEj;pF1Ji392vS zV_)!d4XQtvp!%)Ac&-H1zb)o}w8MX!_AKsa#`~Miz1Yc1yoK)Y(e~L*bRbu&LxgrO zsi`4ug5-s4nfK9uw@O6)9{?NAlF0LQ+X$q;f(HP6T|X|kx?j|PfmPVqy+IH`;yaGv zrqK65Ve0GL4DdZLAXUMQ$M=9IRnE;2-vdKZhjO!fSE)+|m|`y%+F&ix3r+oviLZ7xjGnpe~iSE5IH~dt}=cw+LVPSY;G2#?{*# z^|_E7yutR@yyc`TqQ@5sqGz4L?2mpX?{;ViDN}7aM4 zh8|0|R}h=+ir_>j_EGpm`hO{FmnoAvG`n6pMRUs;Y_Spt zzZ>)6WQ#n8xW6*-IdbAF$ZmC1^X7eE$>7^tZi1>W@+01tcnZee&oO>QSSHP9`y$+lIg&#x#TYt65tW+PhAMC*UW z-(vpmBw&yG`S+yBpQPvi-9x(kwL5?L`S+79f7vOS?{7Hgoe6N9Y$F=|BN`_T$C;x% z7@r95GV!7NNR7s26RY~DuAzjZ5@_J)roT?3TpAupa`4FxifI~qy^*Z3EmCseq0 zQ(<)8ncSRM7;X4A*Y<|9qyXiG9&nNA?-}Mt&nzxL2nkQsD3{-Zzy;$|pvv=_`4swk z0$5rSw`hQ`cJ_>d$XBd*gLDI>`6N;K`@9-|vyJ$hZ4!SoP=zBE5jMTlD8OLLr(8iS-Qi;C z5C8f&^K^=H=IMnwXP$PBQhaZsLSQzRODR<_5l+5A=~1o8h;os-vr8kWE-$ehNf9AR z{iBFohPqEdg{fLVrv1q;B`(U97Y9bZ?5UScmuFFf024cfi`(^1Qf@aXKWf)IN%_4= zxujk1B;^j1a%sEXNs3@B^<37jcan0KNx8gT??AnV`J~W0xkx8a=TBv{rka&J6cdWK zIIoP!s~`^s%U>W-ZANOnyZai){m2&`TgdeiuDfx)lxsh(mvQaS^>VJ5To@BNjxy&< zo5SZ>iNyjjdsTxl6bijmAYCfgZJ(kFxE~A1<3)!H?+C{)JZ!l!=8{S0;yNVkaf8&Z z{p0Y^)FXC@bPVGKryWKw>nNU8fi;jBflVgMIioL^;<{AuxF|i z0rr;>H-sS#GlvS8-?vxZ2)(nj#lnZW=}i!+5KX<8Lc!RlGI8Dw#FuQ8CUo2&7x`z# zD?u6Z1jQtQPY^ejbCcD>s(TW<|MY`v)0M0Ln)8mO^sKwGF;WgSvl=IQ8~yCEgr;2% zO`9we>SyEPKH7ftj-h)Pv~K$148={F!`8A0+1K zIZ9%L61Zk(mas@h?iTR&x`PX97aNjaFE0N6dR#Ua$Z*H!l>!QwlybR@+!Wa_IhS72Y^p&VY)KDVO_lb3a1%SjCbs!X$Vz30@NHR|A__xG@QZ z{0~j*^En^biVu`Xb04K{k?+OFu(cZ+zENUZ>NB=az7i{OF3H7_jmb-CVS0xDgvFH^ z?rqP`aAG%!-dE7jHN%CjI`lNXNwt6fGgzf}fRbI-0OC8kg`U<*moUrIA3TH)ifC|B ztzjKp@=8bEAfyGPuWY=01XvH|Pll*-@Ljykvy11hJ{?{CUK$@vskA(WSyE- z#bO_fUp+jS_{N+g1I$@xv0p5!Bx`=FUJ{*LSo6EMR7MkKV%*weV%)V+@*5|YRz~k~ zO%CEJIm>){)ng9Hil5~KDx-gqRoGYiQ6aaz&l7)bX5m*hz*+k-Kt)z4jGlDp3@hj? z44+h_rGi_DqQcpV(Q{3P;4kT9B%~-yrDWt{^i#DgnjFI(DR!3U z{=E(KgH3`Z{&K;_Jy<(h4;NW}2--LZ&zk=LOw4aA<+^BA@T;}=SZvhZ;x#MjZ4$X?pE z_6zjmfP>9`;qM3x$Gmw|WR@Bj*&5jui3H*oAnYOj0h9!>$QXUe>etVwCr$9qIq7%K z5!-2b$A@$D5y((W0vA;y=95rSt8p&xv<7zh;-Q0dZ!)kmQUfy+()jQb2p)%IK1oiO z1b7#;?yrQJc!7i&{JOv(Q8fHIL1?x;X&FKy6lHfa7jU{nBzw%#D5A*^fEhFF&1U3oU{qfb&^~Iu?vQW;**Eh)pW8QeTX{fSM?A zevG6mvK)v;!RhGVCNE0lHY>KT6(54Op)F9?J}@+Ln~8Ia^t1w(g7=V6v<5t5HcKG; zK)>*E%TaG!{eTYVs4 z;Hlg?ZsKP&Y?kP$$SLnU2n2(}UzLUklsmMa44}e`Yl$Rqbr9HF>O4CL>eHm^g1_erm@eDN!)-tunNytg2zpPvsuJ3vE5T2`@h2>1$x5^Us zHW27KR+caWfl?|Ysd7d>1Z2am2D`1U$$s#)tXKzz;^SaPq(F7E!;fsU_i4n)U}6`s zyTeDHtt`` z0I#JwK!|yeV#B!Ov#>bCz+%Mod{`Jb2sZ3S5hEJj=Nc6aXQ~9#J@qehPNlu|S_C^! zb0;({FDl+1_KW12?HFkL{METzuqM~mB(uKAUaV7TItPC2E{9*17$cwD*m&D1U;Y`( zdp~3O2|FmC)A);Bg>^lacz`TePUo6xWfauPyU+gRlyCZs<>&9Xd>*`;TKag!$isS! zPg7T)M!v8va9~Dn!bL0$Mqku)Aj%3YuWMo zimCs_sXJ`{16S>A`|ozuf2gVd+8x(_&Q90=BUk-Lnfkx9)SyW{##>AU`l)*On#>EgN1$pO-k9tnK9&*M6RSrSI??pW6E*g+W`dQsIfosvpCMF&??{V9r<6 zc&TjZi7*R;az+)RK2QB(P>I9qCUEdYtjnsii@ly(+AYtw9u@l~w)9rN$`6RFbM}PZ zsGq0)XS^(r$Zd7)>+b?!@9u)U;aUu-Q+)JfXOG`V!e* z*ddApPpD}PRCLJB8lHIpKB{Hdf}+_)?y>Kp3+;pFt#hB zgcy?MyzIPqA1?+*t`DC}j6G4ja(tAYC)4gOaxY?*fA6A*1r z6|YaoZc<`e3wy-b>%-=?c}IKG!tWT(eh^wsvB6`y^4^~E*A|C8hU z`sKZi?~|l{uJKJ!fsF4@e$>bKB9D6_R((J7SMBGJgdjy7jwR}ZiZz5;vFcKYY#wFm zzJQ4)=11psS*TnCu`?#1!n$4XG%`4KP{q3RQ@8}xSCgPG@gf@v#q!0$SjV0K>klGw zV6V#@;>3mfgR$4_8+{x^j1sY#-6J7o=LX`lkOE<&hNO?=Gnkkh3?%9XPrZ)^-@^T@ zx*6pKp869ct6`m|{$y_Ch>p1behCnR7EPji<`IlYJrK*X71 zhEjv*adM}p{ufkl|AOgEZnmWCy+y!eUq?==My$txTEj{al_!dR_`~fqFVi#;@w^+{ zmDYJ0E)lJc(`<7F-+r|p4~iUi?;t~`hAN%nfY2=NoW+P%tmxf96@!8B8BXM6$HCtr zv*P6M&{=WxZ}%&qF+^Y&%8wDjsy{Qi||YY)ls7ddFqd%g?+d0 zufFJjQ~C>{+4OpW87tP zZr78OBo4rv43D|F>B8y(qaC$P@np zu^XhPfy51+a_P{EW^~-33#uv8%Ei}y!v-#eDC^~Is9mvAqPOjT`wVU3lb%JbNDXgp zroc$%)p3ku@>qUSd!>3D!JW4(A8;|lfb{CXALL4}oc(;(epO?{X6Wy~P%D42^mhgX z6;NvT^XRYeFoynqVh>>3F7$U_DK6CXc{;saO8U_yJEWv*q)3{QVyIbEcu_8uaS=dN zCd3_o+t(tdxpvgr6(S>SnWw&1D){A;9@8Lvl|6^l)TK0J#)W+}#MKBPb_KiC4(!U) z$g78q?vT)Z-yw8JTxmQ?w%ijHLL=V_SNo!SA>UP&QslK7R7yjdsC-x1N=Lry&^wjy zDr@P;cXOFbmGAcCC(oZOBu^yx?ikaCFuw$svkd>l}o6ooRz(W+$Z?ZBp~5fxaaTSC+4J`N3}o*pQu`o#YlPMbAMUB|kXs>p zOSo|%h?2bm(vmOsLiYX}ByW#z2<^-#cP9(EJ4wi0acXzBv1J~qJLV!o>W;fWNnNf# zkQ1Mctz2_@o2W6`vSe=j4%p1`u$fD5muZn^GtHB*nGZCPtZZgmQ6FRu1&nOfDpA%Q zaf+dFg_K1N=4DLY5oC_fHms(Y4@3s>=oQYhsi40s%#r#2*n6Sa8{)_m>*zjnI1FEH z%SM@};cy^+U6~XP#oj?1_z;zWgrR0%i`;dqj9U(cyoN`J&gL(vq-6nP-{MH>HcnJJ z6eUTzLMhdwMA1~vhd8?gl69z4Dh+?1r=iw^(;`!+UU^km@=B}+ulV8Q(kreE zm-19>Jy<#UvdQ7e-=<{oln!rsDR6qEtQ`M;Wy_~Z3$4UrZAYx#KA6GBS{Xr!+TB|~ zD=rRYw~F;Bi4(NF(ppxdJiTAyq-PEUGUm85`|0!3HHqE2Q%!XfYCNFSYXz*)oOH7J zQ7ngF1JdHiQ6h0;hbCX-(I5Lr+Dfpd^wK6#n<`^AgNj-Z9bYhh1PjrE{H?-%#9u@` zg-NN%77!drk=(7q2N$vTOdpRMl@hS>Q6fSrLcDEoK|`xO;L`r<>~KJ zm>_)+v@rMV@eNO38NYmf_;P!t0+*dix&%A_3+($zO-;~`N+k8yvR{*xYwRw4Fmg-! z8_KptJPY8?XCp-z66n^GSX@(XGVn|rPv)CvhKQ5$LHZo_-80LU35BSu*4QkMJ~qpv zo0y1t_Q2R)c=WN@q00!@EyqC=H7z?H9FhKbUIt@Yvl!C?#xT`-#TfAoa9OI~E0*f5 zmI+2E#_GJA@CwEziq811%+Ll)@mI|Xb&L|~c!SB3WXMbv^8=&xJm@^JW9QtrFKzZm z3nNEtR=2Lg$T6GE(drzeeU2bWg*H0?zE9){8+_kdu!DIE$BZzp+3wHRl4ca7F^-U~*?#BlU2DbDbj_Zv zxRTe3Hp!VRt$2VtmYZfSx_ucZ+n3Znu1O(#kypZlWJ}YHsbKPDet2VpzQKlM92=4w zncn&@5WCTANN()pnGCteKW@9s9SiS`t=#(BZ`{Cz4arh@8)F1EB&-2%+n1qX;+tkO z@{?vVWiujlHF*I)uC_^|E|Er!m7hB(nf$H%{E8nanF}e8OCzN}jg&u3UBl?K+LwGU zjg%=2Xm|(wTtm)WyGn8#{9KX3LvC66>ESfC9;-zZTO&hK<*6f5houfp9jrwS4vPav ztzAU9TnCOkv|amMkcI8ji)ZI=pYr9;_*X!OFq9N)LZ+>l{>5&6iC^ak;CNBL-xy;# zp{Wkvae^MeQn5ykQmcDceA0) z&aS$@tV!T1Laq-vw9I9%+|eL*n)2S1j)vFuHkeo}X~GdNl*R>PpV+scZjn9LEO{Fz zIFf~-Fw97)1Yxb4F##qeE_1YQw#DslSbqbAjTGLc$+;h1;AyCrdp$%Yu~;lZapMv| zunye(_YWXr3ndXY$iCoLn*mHaHbfSKrbQDC#ezm7J20J8k@EM>9gP_K70>m@QLAA$ zhD)6t4PGwNEh}DhauYxmCr$h}lx=P3NhQn>rm$^hTp1&y(__n8V3!h5sn{KLxr@^ z<5%EwO^lFdyjt{wjY9%l0@PI{Zv!uj1btk~kBrcXGoQvg!VGXUO zbQc$C?a~r{>}$`F8EEn_n5t`Iq}B7tir*^lfnlbWsZ=O=og{|h)2l$ONp{O$b^}SM zpt20FYjN6)9fW~gWm&m=forK;C1I%EBo>!Sory#N7gkki62nm|iSdQfF+M98ZNE2Y z3-^nqfM6?RXt8|Rz7I-KtF>Sa$Vj~aRZutn)!1}n3eMfyb-eM+bNZeu%RW-uu#DVEQdOQfyI68hn5UI$pQTj7U4APmkW8stUMzh%cBBoK@ftSEMnp;c-ikf~O*O|^2)l(Ywr+T5M0>Fv`H z00Es$6={Kk-!fy|Ey$o;kIy@TKrX`fy|;v;PPtkIG#McgIH+s9r-UTRNQ^52=pi_1+>x#(w< za^FtT%{m^1;xupkspguxhng4Ul6_&S=5gk*2`C^Q_r1mmNGukTX5V{yvU{`ACsV(d z%Ip!;QI96!9B8A?xDTj5J>xb~!kKY$o4?0eaJFE6X2xj|X9dgKYTZD|%#4%9$O>NU zYvgFPdel^k@6lVQ@(oYDcvJamuPY0%O8$$+1QOx08G%G)*;If&Lt8`wW|*G(!4%b# zJ{Qg>J+(jbSqu{-r>j>xSHCOqSWS!T+*i_bueh@1e0$q&Yo?1Qi zZBi%(QlF4ipQVb;N#CxtJUfnnP>@bWxZy);H%3Aa5bL;j|+LrZ?2s#Ixc+&B5?Eql8^+RjJAxgX8aJ|ka-)X9w7{uk$+ zq!dpIW+|RL$t3@fYntN8Jq-p($`L`Zwq{a#QoPM)D8-W^?vhIJUL;Q`Ub=$D#0JXY z!*LA4QdZLmJOvXAB{32bro5T&;%2vzU3j1y_$J@vE}g;bFhz?r4<6hu#*)pcCtbIv zUZ$}KW9#qc<=)IcV2Z<6a)O>=?;9Il<@@4SuQvsaO8LdeLvMKghvxTd*BhQ?D3)A@PZ2ZK=0jOk4T5tqWzLOZn5=o-Dxo` zT4*w;+RVj%_%3#zvOjh2k?Q|IheEM`vy*kuuGe>G^DgV_7m973`fYsMt`GKsai035 zo@71Y`;XD|DxP?vq?;Laksrb-E-%EqE9bLn-`qkXP-p! zWjB$Z6jLnM97_*2L?je@AFQGI(&Y^lD~OyX+%GbW`mzP`%)daazDzc5fkb^-r(DUC ztNfGuE_18pTDkYN*K1vfG9J-NbZIo(-ZU3Kw@k%M@_p5@-lQ{FfMVmX;Jo zj!X^LWw+uiOk!frWbM%5b1Ws-WGti6{XBF?q<9)p^`M@kqOXL4q7SW zHR4-Y#>+?5Uh1@$N>wMAhRK9sQAzLQ50;M&wSOul_U=VpZRl}6O}UWbvZwfgU!*QQ z{E?jajsKJOezn1az_abz`%R?CPTPZNxW`Y~c7IlTKYj60Ui{D5`#m#Guqa=kyM)xw zWe-+E1qfR0*<;KgXYKvc@fZonHwz!JANUB>7u&S7U;wz=Zm)D`yG;sjak2T z#GRQCe|#kqXkFcojx11hSu4_?&PsVDQPlP=RhNmdaIF-#2z3(_Cny4;vGzFv_+M9w z6Pj4jf`8XSyYR2)3|4(T07oWo58k zJ&WoD2yBCCxp0n&>edj4uHSo zBZD1VA6g@}KD}`b#xB)~F@ZsMrhbhVX<}?*dH65$jTylD;Vx0o_B-E8jPX{^vLR$7 zP%L@{D4Ij&FZr4xkTLbJ;uFeUUHeldUBgH8YeYFrSHO@^!Sa_g6|6Wh2hLaXPHso~ zbh$I85kp;&tym{tk6fRMDN%PdSc~c0TQAYMIm-lc7H5abXDbme%QTy8Ak<>8s?&}#@pZFV zL&dW2D=vHLkL8hxT8bLCJP-?(jX;*@^9&QG?D*8-PSl*kUEY(Wcu!v7cu#&$z|c|{ znU}gV6F+AIGdB89ow1_zX)UGmB>n4DO`1=VvKVv%H%W6^w99$$Sud_K`x|fnnl8tO z@-_R(Dp}~n?{Q=Jf<{7EMo}+1UXP+)T#YR?PLHBqT*ECskD^|5TpmTe=y*JedhuEM z>vDLE&ngbYWKS>F)@MT@n1pLHq()P{qzZ0~kb(5oo>~yWcRgny&R@qsI3sW&_TT~) zoz9)MM_z`znv^DfX-1R4oVqii!a-r=r5hn#F8^6&Z^E{+HW+gEPYq2C(fLfxC<|&j z?S;%^hpE7DHbWFlPi`Vp@ZsifC>rM3XVksJlrxsUMK4~TRh0CNkDsbgWEEcgS$Z(x zZNbR%y^JL)+4q=jXTJy>G6)%!2K@bKMMzIQVL^edOk0#oLh9z)o0ubtl=G-a{a#)uRs>kZG>unh!$?2+Y;glkO# zn`F5oVWvr7mn?TATxSy4Cd(ZOH70?5vfRlq)G`dUd@pYpet)VCLnhb3e^OZ{oheIv z)QU8wieQ}@!PfcDgRO~(qUoQZn=Z^eS6+{gbxm5eZgo~X25M0Fa5mz+&m-XCOPZhQ>hYIS}7A&h>`g`uO&*}BvtjBZSvB5gO_`(`-L`-#8 zK8e{uY*HM2ivB(;LnfRVnx_u^!C=s>Lp6LdNZD9($jbMVAw(jxxP%*6G7Pgs7kVQM zb!AKgKZ#0o%OGlq&6C|%R+CpMr%%K*NKEaF3JE;c9#a{Uu`uw}Zet=<(t5~*S0#(5 z=mW+QCF&jO9~+2l6KKfc@hcN;ap=4`|#VL_tGIGHKL)U zi*hk3i&dZLs5QmbUN)U}$!NjI#rdTr|DU{PZyd!Q^=`yM<+?{+12As$svZlQ%An`QpLrO(! z@=7i)P&F!qM>A9(N^9ap@BA2aGMeNPYNKc=7n%T2L{th)c{Yko85KthoTE&(%y4+q z!(mjzJTYowdM35CH=HMTX|{uECh^QgXh52v5G_+Q$=Z;ZB7u}M&6>(Zd)7l`n#Iv_ zRW0A!53_*qULu%~J;c>~zM_?Qujyc?(S%@Gv|(@gy;YFQ8(p}sUKYy)iO$=fUyZN$ z1YZPu3wVapv;TH7exq^KrYDyQh}?LfYK|R<_l=OeiLQVsq4+5(BbW1Ljf}hw3ZgRd zi%UPFc;Cp#2OtX+oOFrzUy&Y2XvR}iQNs92X9SQHt*!^AN$wOvEw*}uP9G`nF3D25 zkG+sQ6%uD^TZg7zYW6hj%{)j>yV!KPl>b_B;?`0Du2DC#v^vOb zl>dzhDMNs(VlMUgHC_j(YCi^hmt!1(p7{!%jTl~F%8|?VUY`th$^P5RvooUpy?+@| z+iTMMh+m{<#k?>7HDqbR?{~+_dd#$Xqnn?ij+;NQ7M}gz{q1REwKNhq!Yz@ zTKq3mM0E~5CbJ`r>vc~5;ovWxD29)+yHDb`-ah$#9t|VM)Gd*krXQC?$}Z@M zl)Y@UC^2eD=N(Cld^@`p7^ho-lsBD1ML9*YN{lfqvrg|Kx%NonMA6$`Tof1)(+vDm zjqOdNp+cg@5OM^+CG<$u7;?k25GL_h)f=9bLWvqf*Yd^&p;h9&sy9NNbRN6L!l*Iw zQvqd>{r-sp;i5@bXSgR%!}X{OjT%E(5f>9h)fWrUj6Fn5)hN2wn{~*Fb8JeWxPD!j zlPVXAvL$Uv!qo5LKr&-j0vX=i-Bq`BH&4C9Osm_<_-z2Q;44dXmGrP+5tYv@bR)QH zrmDDpjm4;i2O1&^pL4)^)*!>)aLPftz&^C+v%mi5Rexz*16Kx@Deu_J$qQC|YHUWN zN-|`|sx5=59;=D@l3{FlSckM2VxsL@ODKg(sO?AERAQri@E-^26qf8PUn5V#*X+hM z&DY31Q%r_V$Q)BoE+!?9C_@PaE}n+lg}P=7W=QWZAaTj(WXVs1^RJY2z^NudY3mH> z8&jy&bXceq-|sX}0x*VIW@ewT4xg;BhLvp7Vvd}~%!hU*L++Wh>74e%KzeNUN2dJ7=E$3VFWX)>&!qZU)eDVGF)PJ41 zZ8r@U@}i5k3t6G!1X-8-spMx+cO7vMlV2v;-P=4&U`{HwVPvGp88h1VJcRf>&^UI; z7Y_}52yXaVACL&2XJ0~I1`5w^W#>@sf>tKyVR8cT8vGLh-(PuPiBq4KC0~J7bT^4K zFZl~e?}aYRa=-lJK3+bTbmwznZ|@7(dQZbB8K-;rL8ydXI2@;tJJ>dxi(P|UB6&Bt zIojv33~NUFTnbvpO)S;icYVBz_F3|?6jPo)*G^CvV0-uD6#l}~0G>2!qo7kDTF4E0<59 zh`h0ZQvXTi@&>*GJ1dA_kAgFIzMrdHZn&Fe-q?ryP8R%Zt8;m*Wb0o9C`)7H}6grhM0Q z-VvGXHDAq_7-jS`5_1e)FFHVkK8}lA3Eb;gR9l2??GAHL&rD;iK2)sZPE;+Qqu28- zDzxfmjwlHGGlfd6__PsnQqbd<(p_7Qf^g&}5ectV{lQwqyf2_B zKqUMEw=Wv~!He9kGx~#d+`hyuBH@>~eVJQC!Y?zX{tbL@gM3dLpV1!-q2Y{pCRb*9 zgE)_?2e~`mPmcVpDi}Xm6aZ~@>9-PleI)f_dtGc{)BDhmjvbLIetZ2q%k#ID1go>! z-us%QS9~A|f!I@lw)ejlsCX*q`P(PK_?5*N?r|PcA|!HyU_&x|KxpLqS4ps7+#a@I zV)z`fCS(6fecL(=3uE@}2W>r zq`tLCkFG*9rYC#HAk2&Gdh+Zjq^-5CQm zS)QX>Q~MjCcHM?TYhb4)ZSqWL#aS0Kc%1c2I$grct!qZfrhw%ntX)3 z(8UXDoV4)Xn>^>P_8j-HP(QFP1w z*>r{Cmz5P0I=DO7V2Ae+fTPYa07r$F>K8Z++l9T#PK)>dn5{+_nH%!0JyU)W>1F`eUN=}PWgfsmpbrg|LsFZ;O>K=jmpfuEplF48ZQAuJZTQOp2u<<9ZIx2#- zD3Q>*X3lRDNi!3^kqIv>aP1K?@q5H`s*>4WH+yJ7n3DpX*^TWBM^8pe2eJyzDaKia zEmP#+hu|FzJU4po{i!4q=A0u7?8_pXuppROis0*a6vqp134mRO0<+y zt?bJ8zi+ebjjs&F{~%uyZ&UGy&~5Y#OCu&fQZ_W3($C)&ir-n*DrF1Nx_8^l?%muS zEZiUf8g_4CMe9bNXTizF z%#vW@qM;D9q4vAwAF+~*DWya7<05d~#9j7Ly%e>iv@9A zECq;o`HVn#aB+EL&p02DG198ur@_J4hxTvSOyS%bnS_zAep326J?E>JX1?mwU}+8d z)u%)Ro%_{4$&^maz(7<#Fp3W>C`|2!IIeEFTeWS@W6IDc6OY&@_Q9XVBDg5dF19^S z+xTH1u@{Rl#b$h@QFgUPitMM?eVKl#uU#v-a0!lsD{*Z!6j$A{5-UMPs=nL*NYl{y zfM=~hp+Buu9UfyqKJf9*F7wZZ<| z*0HK223`A-uV5*{Lo_2Bv2STPsnGG0nOdd-Q!8=Ok0~O{n|+v2{*w~l6_LjNe>m6D z`8JDkN)5Nz)!e3-=-6?ish1Xk!{n47$b44aX5CznjSzSiv;oLt2p=!-Av!Fzi(h0YW3RFl4bP~*wC)7>Er(nMr_OCV;3>?RA_S80a2Xa$ljbuE?WWLR+6X+)%BRhvWmu zYxtG3&oXXHuToGT%Q#@;A>;7T1RaOLaskAfDd3R8C!9(nrc$@Po5b5CB+p4B?(q>X ztW*ZHD10F`sGfr3SRopOY3*r0#Cz2&f$T=i0z3t+Stv2RI5jkL9vBiUwj%EdEP`mX z0*Q&GfPtAkuGFggf9#zLcvRK3_!G!LkSt+m%)d+oL3uqke>eG>=9b+Lu7I1{w+JM3z!gli58 zL_-`v@G_RM&|}HIf(CN!8%Nr(eUYKO!0-z2pdh1Q8gA^Z<6oF~gvS+G9@9-{xBl=f zOxzE*#|hkEoK6)#%F&m_WiC zfI01w(!U5`vcL}g)yO7nUA<#)WD)cdEqv^*`I8`0O_!Rp$1n+QbKlwmw|a(MSuV(N zN)S(RDqKkl?I{TYfndt$LVIREoEI;fW`9a%_LwoVKZUjV5N=%UHSch(t4(vS zYODF|%q?#y0YZDZBgwqYotM&!($)AzLm1lOzM)K3cWOd0F3Gj=5FQ#17_e4&(9A4H{{)85LOi1}foR1~4SU8OAo#<{_%VEeufb}9l`kk#HNypt_(3XM(~_r^ zuH|}W5S9Zee6&B`uT^PXEdVFV@8K$6t^!$5pq0%l2qt~u?@7BO2RtQdVHCw&I+Mpi zxe>`5{Bl(RjR?0S<}-lm4h#K{JJ12x<0tpYJMNqHhXeJMVJ}Yeo`>M8WzRLuV1~=w znx`8V*jkS43e{Yu>>@a?3Ho@Ka}}0W?|r>ChR3^x;CWnb#w}4ZU>6)#8Z(z1jU1+w zgF(S-#l*$ApZgA@;jRsc_#o6R`?+gmKeuE4dHyI9m${ewUUG~&w*2Hq87?-h_|KN? zAz+48g{m%oQ?+E^$2_@Eo`LWJ4g`(y!IQs`$^(&;5ZppRV}`i!FyW${0-9R*t+olV zgb6gJ_6U)KWq%M}qc-ThD`Xq(>34+PsCLN-8qU}oeW)GD81eR=v@&!iC+Y1iw43Z5 zw43Y=w3|95D?d;CCVTtrCMiIU+e<3@1q&%wpZhrk%yh=)nL4oJecjwStCwwXE(dvt zRb`BMM7VTh;&MN>DA*7*=nHyr(@WXp=HTRIN*ZadXDw-5yyzihT)gPP&d9iU(SwI3Pe+D8v_WQdiOYk_dbWJ@u(-sNuB)*3t!L&~oH;S@iGY)VW z%@`#WGLfEnu(5zh=?g4-PIgQJ%>gmh2*iA0k?xu>a9lPSQTR!*PoxDbKJ~lARIv`! z53Q)5+#dX~KZ1}KnNp;zzyv`9(dkA0(piO9A7c}D>O9Q{~)nmV#15to*Y3y|Kni6+BlqBWbfudBU#F0KsaU)q7bsnm?AO>0hm(FMTKY{ zxIs&R9{Q=W>4_D}O619MDQ%J}jpJmy+A5b4;m9Tc)iJU$MHr4z4(({w-`$`lRYY3` zHZmDV0RaSBtlWt6HjA~JGdKvU4ACwUR<+IWD0U77N) z_`z2PBo{ZkS0d3)&t+*8?1wHG{ z+lrmR!M<>(zjWt37R#M7&)}G$Q<~`+s=UC z!*gPeM>QZo>NC*$)%_RyepmYr_v`lriK{k(3gevS}HFHQ9`&{X}nZ;Vjkxafd0n`v@Nf;?Yo zeZI=3_31S%O*Y&kt@ zl=q3d_5=n&&?Fk7H-8KE3zYtC{y^v~iN32daAaq)KYC9ghA$yQkq|Aa`+~upCr$F*c=dKl7R(8~8nh)j#}67l5w>q70a z0PCE$pFhkwB((r*Pv-fL7C%U=zy`zuky2(wckLe(PY=PUC$}XJcVZXwZy>zg$|uHe zfyntr(d;LDJ`bX8H;aBLQ2JExrQ|;TqnS7e#-);)k?rV#(Uyq@D8MNnS+;xy?4aU{ z&#8KS0TbMlB?vmUmr0)MJT^oEiIiKv&E{_dhRD&WuApUe{GA}`X~%NM7D+_!yI=aM(Ed8ZY0X~4KAB`hgUCd z&j}WAhhhO|G7!uP^^4rbR^hyNsWbiWI(lsLIB?qeU5Xr4n4~|6}jz*a? zb|Hj4IrImk+h6b<@x{9T^<{swSJOA^+S_=(TAs#N0AKUN<&Ld(1KmwqRLDKjPgUs9l7w6FAktA0LDAn#y`P#!6zMF&oQK=hGDtHs}@p;1)wV$|hRiF8c#1f%oQYUp+! zQ{s_<-RhJ3iTO5CUd~??i?|~F;R1BbMnsYGhN*_cg6`it&qFfbbE0uNvp5&1iiLtd zyqc4Nt=`wc;ZiMf6-pX?Q^62$_-Wyy5!4SU`#1ds5@f`NB|*T~GyMuR8J|^#7c=eh zm*J4Dn+h1iWoZeyZ8tcftO$Q>JOrt8i9w3fo?JYm>)`0sSOjnSbci`P?1J z=5q@QOrnwn>>O0F&A^t!CcOh^oVz+Q=^SH=zO&F*5AZn1hR5sf9^mm;5_*P5qw!f! z@K{RncM6YoOh~^AcxaI+&^wD9*(WuSgBjIAjZ#!a1%@>$^q z8gNhp4kV}%6H)kS?56h=6gG9k&$8i17I?7#VZr0Efhl-=>dJt}ouu^uj~bPFggtXhD6$_m5e5KD_y+j0JKDeIU;HULFdyiy! zq@&R;kZ$r+JAIZ31j~VqT1#SNs9by0fG{8qb3xlzd79i&AV1b@Piv*0yKkByD@z7Z z?i;>gvaIKD`GLcp8^xWJ2+u7!REF1LU-9;{qbKzD(V{>prY~IfJ?3dq{1m?vJRa=~ z!}pGiAZuf};7#DH-|bQWW+6m;1Pd7yuYByj@okzdy3pDe)CzJ;zHjR~U(3e4KyHh# z_>Ic&GcAcc^qDmqdvh#j>l^0!a3aeUOf185`9u7B8r2lSFkAO1-nnPFCG?iBW_yYI zhHEHvdV`PqmPB`~g;_*|*;OY`R3k5a;dm%XD2TZg79aT;X@#T}^^jIV+K99?vwqrB z9$*n!pO9s+uVrVRujQjWe=geR>+xGAapC8DEg$3w+WsAskVgC1i_cvX2+t^BEo5x7 z;ur&!YiDKnGaClS0)qy%&xs6fbYB)(ncaWeSF^KZ-V$p)C0n5rvUMM+sX)}tY27eE zLs}teS-VeK329loPkYL>(jB2Nbl_A{+9FjZKLMR_@Q6zme1{qMzZKf=?T;YUDg5^r zgT~u?`$}JQ-*^M?6Kj?eFgnQxf`RZW`mY2t@dpt1nq=TL$-qly*$-8WCNauE2S*rm z&^tv3ZVFO#&<~t}4tk-Cb>AS{jiN~vIuI*r#zcSgn=+oWF;1JDA1HqR?C2?n`dW7M z4wS+!+M$J3q&r{n+reXK9i)Kr13gDGdJYJ~+ou1fm&t3miXJ5bWbm&0#%d|Mv>noD zch~kuk?s@y4ypyHA$q`Ct@ur?OrqGRdzN5gi}bVQ zo8H1fl_^Qslb@(j1-+PJqFPrO1$)6&FRHZx+kD{w*!sS^_9tXSy$QB%^R@h~x37!6 zf}OPTeFd@4px&>w=ry!tCnl}5q&57xYDw3C`2)B#!|0swjGQ z7vy2G>Hng@y7*GbcMNYqq`qCau^(`xpog#LV!(I2d6 zD^JB%vS7fe-FoysQz6zCE$-T1(z0`+r?B0*&R@)!wQLKo1?RZPv*x|N!SBnVI$vqO~O5V(J{F) zb+#lh!x6`isVVRXJckwpis|U*%!IwQCvEBDs|ClvuaP=hkvck+mg-jd6lsE~Oh*3d z0)6%yVnSfXgkOL>4D+7iugl1}nyIZ#b@v&00)55q~5ArdQhP;^=pV#OB3ira-D6>TqbsH1HAENj1hlG@K% z-0s5$xdR^5D1jJ(YSfT)Y+6Hdf1Bi{Hw4%wj7)2gOCdl6lzT1PTo_8Z*vW5q-*_Sx zzS`35@4}?qKVQ!a{1Lj2`y37WbX8%KQWexkLH*o2c`MF+!N@7bBCa zMTXN#*Sl-qhd`A=YXW;l?@56^cf~7GOp>v56a#H{NKsE?f`M@p&5MiynMENX6O?Qs zv-&>=eCI|I?wny47+fYxq@si;b1Wu#5lr$BIkYfY)t2c9p3PdAED`xcK9wvLg_t-L zRz?;-=YhDmGSVNNQy3`ykS?~nYkp3fnSC%$TKt?zkE;7*VEf$oDU@#JIl7tuhV(G6HWqr(7sXy6?5$7H`*lM*L?fr8Y3r~{krJK) zGc77PmwOFl4!j38IVXg5Guk2d^uZ(GKz9( z?;lmv=&7Ao+qdBKRK*H3%~3SAB}x=zFiD-7#>IQ%s5eOH!=Ix%DnK1)rv=) z%y7f2)%YtkDt*=9NUzG8@X9S200=z-#ykkLmTM6YZS~PJW1`_+S-~HHNaf&d7&Z>3 z&dR}^5+Y;e;0`U~AFOL(|6ux+H(0CLQRuD}`vWZ!91Q%<9gI{XNZTq%E46oiY1a;$ zvZg*kyZ_L7Pi{|$KMRDBNsfI=#SWtj3T4VpPfE;D9cIRq32{KBmgY`DtMCJ0gn&X}S!SiAM*7N72&&>6uhLNH_f*uNyU$!wKr!kcR%Jadx zmreG}2!5)6`FH8M$9-GeeW&+zZ~j&v7I?@Aaw~cid?8>LEvs8qg+JBO=SW$h0=nNg3^MKid|{Uf*>S_ z)n;I`Fnhsf`AWW4=&bCY5{E-&!(vkJ0YYz)iF8-d3H3^$LN8{aR=s;bC)BIxgnAX7 znDv^?I-R0{s9M1A}MFY^Rv^W1l&>hD>wrIvMiX80#_S4X$UrM-4-T z5JJ1iG6q4YnFw|UddXZabi#C{=!DtIk`|RH1AN;>Rup0oQITgesE2r{Bt>s@4*S)n z_;m_%ptyx|$X^GiHBsa*cin-iiSF8gJgup;T>`3gzKA`Qs`eS8*lwoMcIkn%(Uiti z8%=49Hue&xVlWgD`MZ(L+)f*khD1Fd?mq_{A+sW9pr^>W%_e6PdP){R@G&}o;A3~d zn)ZO8YQKQc5T;ESnzDeWCf?f{{)Q8|Aj=2`kGDB&H+%`8{0+YdzN`RWz!}zUE9CgS zm=RbwgLg1wZ*xG_D4ew$MPCdrg%2{hpw+v|P|xS}y2p zw%mcvvPhJ%kVT?}&giAXeZA2uhQh5CK7-{BOfhGncHNt$c>~Pm$>GX9z!|}4V`344 zl!?V8$P~Uv2YSTjD~6KYngdpJN9NyuVgt}X<~bnqEVwb5h1P`?s5ud2w&p~W)GU18 z1>0{ony%)?6#UFN(NnV~&l~=*J0f?}A8BGgh;9ROUe-IJ?eIK;o^_kctuA*&e!X1g zQ%imY7&Lle2Yg;nM^0g_!GZjVH$|h+0F4Rmm^D#Fn>A zi%tO6#n8rlo@s(Qn#DN^cOYlI_v-Y58x+v+^e{ zOzz;hj=u-_v*4A{3u1p&n?Fo ze8rroe^2cMK5p#d}4M_B#YlO9%F<~|UH)$=K z^7P|2DfOpf6{roZmnZ%l4tZI3fEg zoxYShbeec;3*reoQyqHuM_JUNAD|9hCQ|$%A2`*a=6Wpt+Eh;?s z`jQ^+L<_&mz;FyWaT@j6)1SdVkM~?mh|8d!0MJLn|!yd;gfW5w) zo67iJ8Rqi5(uE5q-xmnGLfixe%D1xmjZHz#e%%}E>Q zou0vU2?x@iA-I;{x44Bl%}x3bJ_OdH?TVXDSJ;1c>4y+YH-V4S;DHHW`A9MCBaGu@ ze`7cV;X6CZOn(&rYI}zNY5ke>R|Fd1%3sR~Uc;D%Co+{S5yMq?tIEEp``cq`TpWhQ4hg6CTRMFpka2~ zljLmNLXvr}iM42j^DSlZnhC|J9E>)0PIME)tnto!R zjj|*xD^g?aB+GR%43ADEdSV;BlIF8)uNuZd~+NqrrIpJ$r z{%Vg~z8Se15(h!}rwG5J_uYIbI~A?Gw#ngRh}A9vkg2j^J9 z=)&=}# zbm-G)kKC56E+>fT=kaPFHCipZV{*m2*|F4@$ESZe#O&DjjE<%7MeM7kKkx?HXb+XM z4>4)549|`Q)^IR7siBzZXz#=CTCj)e>;|S~G^&aOdn z1L*>ig>R;V#M~d3o!{{{D6?CGRJUxBw)daEEj@1zs@|pO`7L?x zM$Zkg^g*~83UrWk4X=Ah(v#A^^zkZ)bLRT*Y`g{=JxYyNKdVRG_;0y`|Hhyp$6!6c z>mCnQZThz%UZqd7UQZ{6ZuI$W`0vR1>Em^RymuR~D$PMLA3~Il!Fr9?Jshli)4%); zuhOxbUsD}Z{Yjr-%9(J~G@AOS=2J_4@9gSh9NW2El{5*{z=8Kx%T%7v?lX;2OwLAc z%YM`PUg@b-nC0LR;ib?!%BiXro={{|Et~=G z`cidO_o~y^8=c(3WqkFh{nhE+ze;V%PH%|xMfUn_EM-q@_Ftlx^c@y6x%iIA80o^N zGGU2!wzz%%PedmpUiBNL;VpV^?a>#vPI&*WU#}_Dwqla^F*d4bD8z-P{HjHwJwYpd zYW_)|y9+9c+y}T?zJEr}boYg>XLusV7EE_v7fbwxyc#NvWDOud2gJmKTy}#l+d!=K zinrq1>&h4L|8?LE>hqtjo$f9=>_(%gXDQ;D&)ri7p5z{x^M!j!MbUKkPoJU=oHbn+ z``rEGw$I&@2ChT3NE;4Z%9D@Z_}qQro1f$R2j|=`%JZ}7?vvKy*KaFMzzVdm{E0SZ ztG{^b{2+!*(|ztMU!dTDIYzAm^VL(;Oa(t4*tG9RslZieRIrW;+NI#nwP7#F^BF3@ zsZhlWsd2~nMRo*>*I^nXU2RtVb&qLDEMft!g%=eh#FMCrU$h0__XK%B)}rTG{;81N zw=Wiq#js>derH$uak6s6CD$9fNq;mgJuwF3o*|4--lS<vp-M36iiSaw^pl$`D!`~p->UxR)`^H_*@VM;Ct1phb zo+5Pd6_;JAMMnL$KO+@AaOR}9yYxdTnOdG8RX>?LjSmtUWiAG(r%=Nko zxoe+=c$T?7GvCf<3AN1CTQ%KXyP3C|9j^KPnq^7n{{8xS2QPC?F|#fe-DA{s8n4NH zwM*#U!2PeIEjURsI6!pN1k&_BysEkzrMr?>e)vf%B-rXYg#Sad=GoI`2QU8V71Ok^ zYae2?<}0S1c*SM2FAEZ}^L)wJ#ea$(^*}$>+iTCKwvjd?OJj zsaoB&M@n4W^}Kv9HOF0R?O@yrMu#^MY<1nk|6{1W>ehne|qr)RaAOh>ZBuYaPvzk*a$S#(o)3y7^3ge0p7_&ig45<>=UAXU zddZyGb1%Mx?LRpl`smzgS6+JAl{4r>ek;yYX(G5tK?jbKCU(B8nz;QunwT$5>|-=B zpK_&%e-VQcc!RYX%1Y2F#@*ldoiibg0mlHDS3Jrq* zt3cYY`XvRdOG(u?5KiP#jq-RTpjsuVhzu9KAR&(lx41O&J|!D_6`p*qgqHL-Q2{hK8dPiR4$dcxa$$(%x*qm z2k)_h(Zg;h*y_54|8#R152Kqkgv@SE?W?+3eD2$_PSoF6r+RuV8T8Kxt0M>0zMpjc zO(LXr@#;eDpOML|UD~RG(cv!=Y<0Eqe?Z*zB#%p{U2*aBxa%>3*UWEqJ}RU{ye>*rmI)*h#DMf z|Dc)EusK-5mE*5ah252{bzAtidRUAoT*gHGF<0G|<~;Hx50+fa)H#pJXYR^25<~^% z_O>{t56a(~SF;6owEOII-x{mw+{clq_&J^p-8aX?nWS;vtEMZDjP|?8W6NB3PDsr^ ziwLUuXBh!~fBJ0BKT~*@AHcl84o`WBeavweM1yM*c)h+_i%LS6nPucNZaP-&J|4eWy$NK7n3A zvi~4ScV)J3Le(qw0o%A1jfM8Vq}m@WT_eN8#3rhx1mXJsO;O;+!jI%n^28s67f5 zT{Hj01@eZ3Y)p?QUdkJcpQ%dCP`ttTFPVO#n!ps}A1=LK)LZqsvWi}BeO~oCHl8lH zX`= z9_OpFT^CAPbhwuX@R))Y8hD&0k&l`HxP+bn0TTcM9Uvf>1^_@m2L#NiuSW>P%S(cn z&AGC*{1gGiyj}_rW#<5hzdfe_@p=_)??b~9-%kNzwZwfS=>Vd>O#op_uTFhWc}lOC zQhuQ_ZL)NXa%klyG3Kw?*&At!K=@@Q47}OH-NYECRlj;|Sq_yvgK;B+;9lu%!Uu_% zXEi5#3r=uFE+|O$(YjWvkJyu828hTv5pRcS5Yx^c<9gE|CPU4q z*4r3qEsp8apOxh|N;}r7i#zo5c}*V7)`D80T3ZahIL7^A@GFWfd?!ztyjsnnj&=Lt zRylIVYlrUURffP7mm#p_@3`yXfPq(_*zfG%FRWm6cs)T-db~I;ME@NS{WkzpWn{|l zD@btg*pzxtXXcxrH;(fqMAk`$#kDei`T5M^2BRmc5tN~Y%+ri7i!As zpg;P!KmsNiWM|I3vP8~y`mS;l^LT@#qe1`EJYM59?Yzp5V4D?`9Z^FA&2EZ(dMBS& zKi(kuLi;9heA8;a1qV@LJJI?uNRn^?W$5pN8(QS?81WP<5BV8eg{viB;X;#yX zw7W?Y>Fu61f?GCuBflkfAl}(AHa?(#XHow}^^z(!QtzZx21p<)jlKKcKmCwk3dnH< zS`wsc2Ut_Bh}SerDnByBR6qsW>|i^=#~)}KNrv@yY=<4x?O>-J+-3$Vm(3sVseLUp z_klv(0e8Ba#*GjCNJfQpExdSrtG6Rpf4Q|RXIaJgk%gg={^)~JBOch-+r0-KfJp{% zJ~`bhC2R1L>ct&7Qhca?@_U|eYjU8xK(p)hFuCNSRcM^8T(z~J^g|B+TId9y!{rCw zwJVZ9jB z5wib@J)x=4z<$KsrAqGCl#3A%p6RiJRsTtOE+=OvW*3X|bKJFSDOrE){X=si`PyaA z-0cxitVQ*7#8M7`cU>QSNX~0k=dN}8J`b0a*KR?w3VUA(4)lo0F4AxP!-91$Kh4&u zDzLsssTh`MQ_;rd#<`&MzGwXwWV@FJBZkvTuv` zsh=&8Qon)s+Q5)A)B5F9#3%mZ1T4Nj_z>R}C`C`{y2W=V{}ShRa()VU8u>j2Zpt+Z zp4QP-xxV;~GTMTi1TEww*hsAW2wKQVu*ry&SPMA`#_U)NIf)fi5#%IjAt%8OJFkVD z#CF=T7IJ!)nPV>J1Rp32ukYmYg|o-I>o)Qpi2hZYjU(3Ot!xJhTR0v%^(-3=_POh% z6~5@5(gKimIa7q-=gX@V^dw7gbM@jzvQHTw9FAqs^2F_AwP6)1OuUScuMndbmm~|y zV9`CTS>RYJSIJc`ekCV(xEk|tOUw2nS`r84^6VFx_+0K&#cMrbY(d4M2dfjD=F5eT zxRg?AP4S8q+Sgy)$;7!r%Uvq^T=z=u{7Ex#53iOQLU$$~lSWGa#?yKgw=DTbB!T29 zviJM>0pgI9j~B;s)ZCg;k6SxljIdJ`$z-|yNnvR6^+W3GxPBi`8yg+_DODb|nW&%| z+`qHZ-6RyPQ6xHMCU*P5smelT%*dPj1(IQ40utdif{@V_5&z9%Ka%8mF z)8vNsqeuCwM~2YKZ9|cWDkr{F>QYJJeKj2Y<9AujpTT_@6*b4Ylx)jvYS7MBeGVkq zS~0%BK|6zq0_c)6aUNkCVs?ANUudQC^0_@GQlt83wjf+@bjWB=ShXjKMVyhz0pu`- zFMh_YJOOxSLnwSIT{dmAD4u3a~^0T+LCPC3VJisV$^mmKKQBEK#d z=tG6IGgUfn)uPjyxpHMvPVm@-*nxsis_AkE3A|1;Orzu*$$|@Eg4K)m$q90}*UVO@ zpb>RFvPe<$3aF^bq~>*xm4hy}%@Lh2DHxhwflmP;giP@H`igFZtVI^hMb0+~xdPC2C*%`}HRY&% zOq2;8=isy+=r03XHb0>_t$qSYJ}&bX@PO@yXeOoy`})Hx1S|aEWa1&wU!_xemhqGQ z#vLXv7V1B3I@BLg61^0S>)(hb)tK0J6W8W+DFGfNHW>H2dc{n)poxAw-zuCJj&jDn zDUPzglnF=iK5B84BS~bue<8R6KPvl0yVSv^m4hHt@;0~EFl}%>n4_5u)8PNn-wc%| zSo9w#ePXDTGao+kuKo^{CO1p7ZY8h7vM8?qeqgF;3rUmQe`>axb|Z;~y|R*5&!g@w zg4kfQejLklG#>{W0!Z+<2YMOON~qB2c64AJr1;4UiE z@afT#z*Ca=8p`#%$0P&c>xNDWgpbAdOTM_K2Qb*kEx<3rod(`)2oCdyKeJJyL92OO za3@Fj<-1zg;46_|tK3-pa>v`-a{jvZ&r(wOeP~*;S1-!X2@dd7=}m zfFLgrqBOO-w7kkQVN}yD+g`@@PyL$VBA)8csC2KKQSRBY21xtXZN~d;WCoDNuqtvE z(8l9H0(<7?@Ko1 zbh)$!$?!E<-XZPFkQLqfT4Iw3XoiV(Ao7R; zB#wcMyHMOKMT~UU%GJ%5C~2HcNDLv$5NDioQ%aJ#Yh|~&sfsA!whcTpFea1Uuul^K z>!#5~Vx`M1HIx0=hI<~$x0#X9w>dfH%Yx*R@xfyqlGOK&`mt;=G(j&vY*fBK@xIb` z<^EK~oP=pLr+B}!cvGL9l3(DjxP#uwLEcIJ=#?|8m&}BliEB8|lft$FR!l{EYDf>6^F|6iu#Hn@|;~?ahROxM=G!e_>c#C z9$@$(j0RmHWPF(3B{g>&-~_Su080z^lYH?Q!`B7*wJ=@FRa8f?EC2n|)s`-Hx{npm zBYie!LGbpH5CxX>iJMpPQEgD_GG6QH*)n>>^Ri|1i09?Y=n>CZ%jgl$E0$G&we$=d z90%G~{H5n!$tiu-IF$kg>DRGY`z5`w`(<3>iheM~!8PO3kD(9IS?GOplg!@cd@VzW z;X4|-cXXfhEpq7Y1oPJ(?1s)ui2|L~jJ%4lxu2WD7j5b05yF+iubA>d#P!OTW2lS< z$@GPRQ=M@c{gwIEr-MtSXnCp^9YSa}`tNvM9Py0SF<9y*dkMzto+DCeeAOl4lD6K? zCRY`kU&w{kX0X!^ZnJ|qjK7&7-waNV*U1t495j`6gRErBZ6d8!w^!RY8*q+ zZzOyb$V0wY0Tcz1bFfMb^ zfA|+6W>u6k9|Ymj4(*i3 zWqq*+@*Y~ZxI%WyF*YQE`>@RF*3P4icJ^|#^M(73cJ3?fj1Kgk%u>vP(Zhmtj}4(r zJ+uk*TcubbYmMltDo|7Zh;I?O8uVXFAhJq0o|Ew@(p;nfuu51UX(>)9C$g%+8vO#& z6IUzzQAo}Oz0ksbDU=tI7$}xW77Ykxd<_;SHY$6i)I^}zhhU=sL1s*BhS_#t#&p+? zkeWU-S}9p*iIr2OFK3OauOnSeHg&hijJ^>l(;|<{dCYh3 zWu!p zO#J$mz7Cb8p-)2JwRCeKU;$c3Z?*(B9Si3YR@m;^OC(7&Vhc**b*}?eb0pf$V7%@v zLWYdiA#se-w~@y9OtBzioGp0_p{o$?qGYrp2}rV2MiZtJuNz?|k$t2JQd*UjJxyF2 zZN^$Q8_|cQBOJ-or+lQ~dMI!$J4uWrR0@E6Ogg8Z^B&hv#e6sQsa~a8q*&!tO4A=- zp|GJ*pDTfg;-Aj?6|1ber)Nw#MWwm!`q;u%9n;69Yh+NA8cqLi$-vfFX3ZX}<}Kh6 z1Swt7|5$svVgvdg1h;I8OzF=>7ttxx(>X;!_NG(9=+S#LAKj_s&rE)|uQ?@!y6N~M zG!0S8$@ESo%34ay6ACctTks#lm8(uj*|1EpgX64Vba*8}Y*?^e5gV2pkHcuGR6)Y^ z%%!6Fc9oGK?kY`v;ffjYC#(2jc6{83KVHQb+wrYN{Lw1@NIQO&5r3$PKg5imyxO$D zvFI25EHqWX@ELcED_pA+TmdcST4)*dR$~)Y%{pTtQ3Mj!T7#pNs*vqwzsK|4CQ1L8jaU!DpY+YBxz7$Yu%5C>dpHkNy3FtANCa6k(#7_ zj>n>@jVd68-|cExK_Q~Po1kvR?AwaQW|?;#8X=C{uOs*pL5|$NMDS&T+yeVD!B+@! z4eTofUnR&ru&+Xq-u3Juiq>bnG)=aI7O%J7WYO)?|8kd5=N-aEL_=~=@-#zUd{_Si zDd={^6ZX;m$kAIWiqu)wMI-cOq-?1u$PKO+#e}|y*W~k%zre@|DpkQ`Qa#mY=7fen zsdNp~c!$yaz zK&XK=drzIKrW|%^MXPS?4XQ3rktWDxtaiIYmD1wSSVu!EGa6cyt)WM#hHljlY!sGe zfJF6urRsYQ$x>wK{^Ud5_?_$*{2x93kLj`LpGuEM{jMi^Jb;w!^!U|(rO{)O*PiL| zc~YJ9_$u$vm@i%TLSF&|i>A7Ql7C$x4rNN&Y{2gu}{o!&D$#)C_)S^JDWrl^$=tvnP72B_%sO zUQUW*e!PI!p6PKEsfr%Q8@C~Qc}KY;bEP~@laum6N*pOK6k2^Dkd0OmivHobGj>NB ztv8N}90Sxidebp_@<6($M#zQK8j0mS?5a zH6&ZK`rXT~hCC1#TQRJu$1r*+Y2e>nevQ%Nf1dpM`RzT?=Le)@r_Z&dIOy|nUVEm` zJ4kiX=Uu$-hCWXk`(4pzp|sSVOZSty9aGeoC0WpZ^MCF+eFm@YnLhtOIT@5_3FR4N zYYMkMM@whO$Bvec%huAfR7$+p-cAlDC7ugJE4PCne7K9xgI;~eU@ zT3_ytK0WsO(qpeLJ@)$2W3Ml9m~E{u@$`8O>&sRD^7Un;S{Bd@fw8U}IaF4h{-|2< z`lBqmSZcQa^T>4EuLPM=%giH^<@Rz#_BT-4okEuE^g5Un2fg;^wP$+$N6m&zPeaIw_wpaSoSS?F~nnf7!(&70pdz5X34f^eLx&ON8sN91EiOMiVr zmX_X3CYey{f2rto0j~~v4XW3k==J~fLEly%q&7MJY5Jhw-6B|&B2Z588Zl8V$b9s}r+ZinCyLGnw|324i!2rop+C zlQB7>K{{KSkWQId^g*X&G;~n5hPqWlx9YB+XO(F?p-fArwHd5^{z9~~q6##qkpKg>#B#0vQO@bQ; zqDb99@GXKUQr{x@HbE4rZ!>s-4)OMl2rq?l1ga)3Uq0o-2Jmt<4f zxsV8ud$PwuZufX zyM}0g_zO9&gnsvAhko}@q&VpL*Ssov7EEv=gi>}cR>g=aRS=6^8@Ah4qeIOkgYW5M zq@4beWNAw?jMz+-ubNW~-EN_@#3BFk>ZIi_zn`VMn;{KHcMnJopRW4*3h`WKBG;8t>Tf_XaTK{sfZ9c++k>0-@H^E-G5S7yz%>eb;9aR^wbAK_;!SLQ})@oQGYaC6k5<;<#DqDMwDesyC-`h`ivO?`r;gqBLGs-CkkH33rKuP)%!?S{>%2-JzE%Hey#k{euf*eQ^whbx#7w?lr`F|Rh9q7RHKXe>SdzgsqXQQg zC?LmVbhj5u*Hdm9TWPHnZ9>`k)f~rHtJA+~FuyXv?ELCt$5+wxuYMws;j*gKK1&MF zspgzUmH^f*dj#oxNKd+S<6HyM+ipxp*y#<*y;62~r@W=&Lb*z)Z6J=(G;Gz1a@hSE z&W@HGJ#g0wH&d~k=B!yXA}2VTLB^0&Hq2+!Kg5MpfAs5qPv!`_S=`HlCBKW2Aru~0 zI8w52~R9^moJjX^*@^w3T@JV0OhI5Lbpge^e^wuUhD{p zEvMLWwD7M9{EI2t7eC0+K$8IMtto-d^+9|f@|p4oYjQ0`spL4Cd3b$t zpn9c-19*+;o9L=%OW#~MjZTULgZnTg73j~CBILQcR*=TYzp)2_77gyEKX$pI!ipdM zgM6*uK%1}Kcvu>@nLy138Q|w4ozIMrB>ZuRp>p*MqUXb}GZfB|f%n9*$uK-n`@>UV z`eQiJG9wF<88pCRGF|$uL(-Vc#T1`L_^Q__qCZPv&P6b@4Z+ha;t)%9A)*k69D4%? zNJF4;05q)!@%-^2luy!{FX!0hI}fm1^|}Z1MV?(OfD6Y$e?pV zOn-KoG3XD@lCE^=-&b8pov%rhWf^aEUXPjLw?B{`$mI-hPlP!OlCT*rQUa39Q@9!3 zs+i1HeJ%I|M8&=)QAu?v`nSqE=N~KYT1R<*hibZ&*LBiA)V|}4^7Iu#fo3}g)j3a` zI@UAHd`z0+{F-wlu=5xy4+aTdqKuD+085i+KRQ_PY(~TKE}|dvT5e9VJ=I?8d>ve1 zlH8xJj;N>H`8ejf#f|W_n7-heG-MCbZcokP!d$}%y)SZ+Fim&uO`wVX_^SrvT+BF# zd-UsNe8tZnhxN_*y44%Yn;!SJTy|-zceNk}wS;2&1IveSo8}tF)ZL$oytN;2jw?F+ zUB!gA>Km5|E)8Ek2ERT?eJ}9}gKZQBdlqI8O)%IM$ultsX~J;1fM+9XniXkYd>Uy; zlc03UO|E^$LU|DSFJYTYD4F9@(4FeXgTERgtD)~>jyN%2v2(8e;5MR(coD+M1zv>A zjH8VP9_EorW2-)lS0q*LOYP247S{`Sxzt?0Yf>77zgMGrRc}oj%js2vHEo1NBIu}= zX`|klHkRuffwH(acGt>cmWiQBe}SmPV0jZ~^5iTbdU?`q`W=Ed9YI99{zvk8w)DwG zCOAxGRW9h6%U4UR%q2?-^rdF`_@SZfB$9;FLH#A93hVmu5@Aa=w?^NY{>u5Lv}AKW zw&<~M@jpaA9|Hr6ZZ4gXg&rR%`iIK9-6&5VL|In3^$efgA=Xz>*F|S~a#H8-l{_Ks zhcb7%SN2(13)}V=dSknQ;bfR{@*|ia(06) zP_W`wAI-?kY08zLTH0({HxOo1Ehvl4rj~hL*!0zOHNrDqZf9cWWBcyoQWm0dW?Ma% z_^uB7ePPCXwe!8Jv7T3Dk8ge7;7q4HIdI}EuTi}VJkr~+9a0g=y&~Ji8jj7~X~#@JoN6I@dm5oerPn z3Ln-hc0GA@_xc)llfGg%>B8xD)t~0wq{nuXu6AF-J-1($XuGOkEkAbgeaCLT*LRcN zxtsKDyGhSU!{6@Xqikh&(SEVJ+g1Mu?IvAJgm?9Q(QeX9c9TA0H|gcON!NChUbUO_ zNxMm(nwD3?Cyd$sfZJLG38(%RDehQNEjWZ8zyvyGft4oAjx>NuRl! z^toy2COmrN_uc#7koJA|^yO*kHoO~&caDG5RbYrSWI;b)kq_U>5w(tGKb*Q^ZGE+% zTCJojeTOmML|yI2Dsiai@AW(R64}ItQ3 z@WZkn!<$%{^O$Np#K4(ytEF7!l!;Ysq`ZJl5>;GyfS3ZXXM)E$R@d#8GTvj_DtVN# zlI)vY=-4;$vTq^==GSps3R{aPSDIGMdx22DIKO(iLVWJ&TAkmWp zWhX#7XylWv3jMvS$rqX2%rY!=Sn>>8V3nThYe?;3|AQ3Ae!#DJmHhzjp0$P%{Br3v zs(_504_N|acH$>wq`lG$a}?xCEUsk|)z~_7<$v-#StWGSM-|9XC^;X>5MIzo_XxdTUqR~ogg&URV6Z+Q z^kIDkWA&komCn)`8uE(lU>p|Etv8`4mtGf=rG*GJ1xgA>cr)lp5fAqIQwxcz6ug5N z<(;cD3c0H4*Gta*KG9t zdsV<5(D$`u?2*2I`BOu)H{r?*`nKku#v^w#|CsZRc5U|gYwGU4*Z1X1d;WUvs%-Pu zUX9;OUjIw*`;xg?@cSn!G6TQ8L}uXkF@3Y(_hFLHoW#=bJCB6y`2F#mH2mJcYc~8| zO}t_BB8yEJy6oI%o4;-+V~_YfeyV}r^Jit?w{bt=(#>rYzPB<@Ifu7i7$tTi1_Nck zVbES95*-N7=q61JP>~tfv~_kjY+9d}1)E-!d?q#xPL`$SZ}{ayBxT2^+evZo%LuR8 z@M*p(K=`E$`7ZEjEE#*mr~jH_;M38UWx*%If9%rDBB5}Nr+68Qt3#f==d`MmpB%va zn#~_1A|i4Sxx|JkpQmIYSYQXmXvmC}!Iz+Q&{Nqkm8i(pI=S7%l*r2oQiwobeHpc+ z?x~UxRtG#0#pm*dZeNbMHXuSZO5XJItyv73>NuUec!j%G77&^t+_MY7{^?GAh)X;m zhYB7qAuSO8I@8|(7l@D0YLeByt`~zI(eiuT1*1FN#g&8FeUW{&uzyg;^myeUlsfX* z0ca`*eFGwlM3l@MB&`zx?@|2^5OMM^xPk&l@Qt}ii>Nh5l1-HzIE69b7Vli7HRHN)lC$aFryg{NO4{^m&?P zyTN4}oPBiJ5ES{-Mf0=_qam06>E$49WLlFK*W7gp`r@m3x8^Q1zKG@x@kRVYbYJA$A)UVPME(LguDycm#P!dRZFqp#rb62ZZC9bM z2z{kOI|%Jip|1&jtwP@r`oT_7|K`?Gfh?Mo4+w3wvc8 z+_kcGuMeVIbhgdPp;BZYP~Qn@B!&@^z0lKyoc*Qm2aj^DZ)#Ro%NnP0ANq#dV{Uk6 zf1%c78He>a))em+>n6WR*~Jt2?(d1Jm@fV3ONIZj1=!3TzD@dZKRMm#LhUGl5_?v9Zzu{xqC5knpXUU*0Q579y?Fg!fjl1Sn958#WW)2Un3Wzhyq{n-`T3w zT6Xr;o&>P+6L;3`ntRY0`dYs3gVRs02j2*RqO}p8J#oD<$hnH5e5GsLH~xZ*dO5tC zEmhB!*4*GUwdY$=;4ZEx;jf&(x%?IKH$iDwwl>lgZqou)97gKHQ=JD+IP^DQJtI@ytv%4TPOUGx^~$Hxkhr2D?c9&{hC(u zH|k%I?=HSU<}V&i#v^7tI*mu8@#ruf?Z%^;2Y#!T%OkG7BP79?Joyon@8w6ZQ3X^` z{J6=_2?6e9+3Bv6E#3rHPJCdG4m-}UK&@p{U;Q1(3-^4@TFd)=wdep2^T?T)K+MXZ7VzN!4thFmQ?p1M3{ zRi1LAT#s3ir_g*?)wqk7R`brI!FV(pk0#?0Gal{6qr-S~^3cM+GzMs?k;CMen*Y0%cU(q!D}O57o0|rv z2-{8Z6Y&R(jfwaJ^+(S1N9N=QO22W}4x%q&7MGtaGWc!0LiHcPqFTjkOu)V{8F16< zuKfUj_{8QST+!%p7kR7s7ie%7kK?bR8vWf00ak?qY`o%60zO~q+rf!Q65bW{6)QZg zsE_64p8AS=c)3Tt+*@C9uSDKgUvZy2@2{`8pTzs6swSUl%z*&aM71&x0<|?4i>)5_ zD_Ayq;ffgVofyuzYfocXe9=HVZrp;0^GzqYRIk)MSoYw^d=j1C&YiZMNG+YpDa9aV zN*IWok;JVY-S&kK7q8P;r{Z=n;vZUIn3_})h>YgXKNO3yvx%)FAor+mpa^RXX!W#*}j!p9{i~LXwteA!(xZEHTQFp(zGq%{ujgL^Jo( z!QKy~`u}7;v3jLsiwr#e4ryo$4P{;*9*~Yl4*cjg>3>{5k37!dDtGqR)!?@DO+~bz z$ZA2i{gV8dG@?7aTvfaKUVp)`6ft^}xbUKMeN!7X?v?t0qSSGc0Qvy6nE(o5HMiI3 z16*KfH+{g@lOdk_Dqjg9{YlA}T_5lVlCsOQ%cMqI zeqY3EHhsV)s(?Mv2b@ku8Y^AszCW_`977+l|Br=&o%Ry>s&|9i{e071LiX z$bwS$sK^YIx|PTblnQ;G1*NW#d?rdAoE%}ykFer%iO-Htr%QDGG0@j(;FScKljKii2M*;x!w7U7`xugZ;zP$=D-)T|CyD|9;d1e*LeLr%Lu3e)TXk z+l^n{ry?`3>Q_W&VAaB87Oa{h`Lgq?b4kjMPp3pO4sU@M#(}+6|vBRFN6@G=|6wd@4$0!KWi6Uv_-TBPlyReLOx5 zpEmHC4WCvMzi0Cw8GGbUxns=vFYxbzPvv_JJ{?$<1)m0}$P9ei3N>fo)B2CH;M0qe zFFQUxL{fHqx}6jUe~R#$4WH(#0``DEjU{7`_%z;Y;M39L{$21%+iURYX=t3YeR9iJ{GDLX!ml^X5&u8h}g_;j=?U=Q%=EB`L=>Axxre0o{? zcfqHsy#}8`&}cV&xJI+0 zfmekO%_(@P&5+f^8~7kVbguswsEHdVzXf}j| zFLgDM-7NxnD6Qy`;PO1=o!K)~U$`NJGadiL?^ zCw1EL(~b&rykaQ`DgO38@mNg>L}6~G%aPRC_@^Z`s;)y|kfd$!wH5F+E&QgwdF1KT zy;Z;SOvTqy{zc?Ggus5U-oMMxk2k0Wn=Z%x<)@s^Ix7pkm#WANdLK$;2EDu9$U^U5 zLr9j$TIeJ1ozZ8E!1MP?xP7$P%}yXdtn$bE$5%f24SBPlz6e|$z7esAD48-A}Qevj4z zx0A6){LU>k@O%F04*YiFlgv$l@Lqks#@_$IWM{8FKh_&A(hbAD8Yz((81^BN85q|3 zauy6*CHYJYOS5180}0vjYnjw%&%cX!&4yo>r~-t43JN&a7c*0mfUGq1)5+K)etAwa z@N54OJ>b_~J0Dy83j5_Wef?gv{{zi-!>0RGWCk|8$Ru?3fP1B_~X)D;L|UM8~C((_`eH2?M3@P&}cV&x==-C;L{i)Gw`YC z#Vq)AgyhSPPkAI|$ES}^OT(uPyk^6v)x_`F{71$f`P0Ue&H3--e;0h(i}rs`&4Nz@ zRAdG|ZH1aM@M-;XS@7va$(J3U9wI3_KHW}=gFi)h&4y3&RRMdzpT?50M|>LgLj#|V z9`^5oPkYh+4>a11KRux$Gw|tdA~W!*er*W90)r==wZKD~UB1D}lbXY2dlX8qZqzS{lz^HN%6tv{XX0hCkdPj;e!FGBd^ zg>$MU5{lQ!`7NdGQWvMm!Bx@ANEU*kGB<-VSY}YvOcIPMMSD(;I=CwGr4)NPPg4sv zmmun)YV{cho|T#_?5*e7C?`|-6ZKKMN{>v*XYlj+M8Dy%UJP(=f0Tg#(R3wHx;1!_@*~qn`QH~mGNbWJV)~I8ZTpcKZTpcK zZTpcK?eHUmGgH&)>K1j1H#b<6c$pftZmwkBE)hI0pm`km6aCi~Z!@7MRH)I|pJ>uo zlZ%6y_4vnZ(Ek({?3RvMXCVI|$&ov%h!PdukmM+bexLn^TGF%olfPW5xAFS|UIo9i z-y}au71NnI-e{b{k0^UQy--S$w%1llGdRVf4^&b3w5*f!8p<&&XB|?#y*Jg{*7V-K z`U6LApJ>hO?Mg|udwY2DOuM)Eccj0!k|TS6uO-FN-&wr&+~0sIW~*LtywD?1DWn_v zX;OshsE=3Eo3r%$bgSP7svOeq6Q$pB{MBxulfM4ft%vp={moq`G75FVJq$gyTAltz zMG6@>HY08#GGl(2xhBi}aFOK8K0j2Flzo0UPHMF2=TKg=%@4g*0edh%ym^9ZtfFMY z&x5Fl%`Lp#@!6N7UVE8Xeou5_sg*PD1mU2pH%WOGrgX$8GNt_3*H84(HiV(TJ zP|mF##3?7v!MEaFHe6BY3oj{5{2p=)lwMsZ=kvKWV2ikM;`U_GLZZPVyW~t>Ctl>k zaXg-Ojptz05;GkK)RZE5E+|Z1C_9O`22Lx1{lP+N;B=SzMhd`@MXCT_e6&iI0yr=o zgYU(xMi_6jA`rfsMAyM)_sYC_Xde#ol&IYUeW*Z@(?xTy8>pT$d8W;8Dfqm0#lJOt zw$3uTmjRzV7@EMRYLNjSjc0cFtTYSwH^raVFV6~}4~h-=lw51Tr--KoABV1Aofk6}^Q~F;HMxapp-T4`2(?Ts$AXLw-_81e?jL31{8gsO%!4Wp#x9Qk!{WaS65ec;KmTv7^y36+c zs(X2A|DUt5Tou7R6EL&+c`ws=0$4!@oQ2dtwkEa(FqpCCCPFy>WlZw zX`pw#NS%XVtwhxxrJ{7AI*B1FAcrM%zWS>O?!#X44tqwQG89K23Wtgm4jJb!1zwi_ zni0MEHsZQ}hCwM|Z+pBh#?fUd(;r>cP7sN|(~Kb~LXspBlxfTen$o;=(zkgq(Hu;c zM#p52yigkG8uYrLVqM8MN_1C`aI{Lj-O(Twh3{xmk2>S+U2!;b{P_${WR*(56=c>U ztWlTCC_0D2{L#DABYan(6rEmX^x+a3Ekfjj+j#D_+%I2KO>X~M%DrDb!uNOb)~(#B zX1R;D?@75I8s#>savxTY@WZhz<%X2RJNm2L7OMOK)J>Hx$Lr?ukdbLs5d)^j>!uMi zEf}x6m}l_fc{5t;W=I|+r)r*B^kErveaYDXJ38vc72|k3EQLKL!>Es*B=M^xLcg|H z4Tv<>SGqI%fJ9aajC`fva0yDCKu(|&JWz=kMR=!IqJ|kQf;Z**O25WCO!QV1z!&*{zccsVy}QX0O0}_nK4kCQd*{xaIdjgLGiT16 z0RzwPi%D_VDUc*~8y74i7~rd(ec~i#2g^@>Fbj=q1 zqGee(#d=>mZ^5MjRx z6|y}sON#t)u2%mLO!_$zm|_~KPa~T+(`1v*`2o^Sk}muhTgjdYoBGg+n7T;Xg;9pm z8%7x^;9oCCXxZoqcpnl%KK>LWN&?54K*=#m9+k1=(;bH{*~6N(lCMF@C^Y_kdDX$* zif&9GtO~;6Qh>?1BPFCd`9xx3y(Y?x_VlN&Bcl-HSEkpgVk<)~gV!>> z4=6Ie8$?=$ESi&>FyI{`7l&_@Md@{jT>AtAc64182G5*hIYq6j> z{dq;l9yd;__%v4Bsn&sekd=gOPmMwh55y_Kv0gl9lY}q;A*IfB%Z=HE003hyE4Vd(Rz^gw;M0^A7GYp?POpo!cg{OWlo9jGC?GgIDSL` zJNMBzsjqk6N0UTG*hYfWi*bM+{>q$5jN{m}mS8n&NQWtdZi}CeWYas; zcZZ9npQ%qT5pORe3!L=a;Wb$a^#TrxmCyv@0v)U40+U1;pN9VW;J1V5pJ$(yg&rma zoOcW<;0K3A0sWB|H9V20Q$QbYXn8gdsJw`wbvzJN#{dV3Gm_I?+HZHcVU`-Egs1On zckZ(KK0w4gRc%IDiML=S%Jv4A=Oob_U&Bh0<0Z5Q#wOup{Cr+w@)(AGYZmz+o+ zLsm2<(n(;%{8YEs>hqx{k=fhm4!$CSEqw*;ORP13pW4Qdr?uq`D%Z46V!dM?E^@JC zAyQl{p}A60q${9ZYqe`VuQ3GW7Yih=29)FaRd2-GUt_TvbE+KFBUeChE)}RA-gdB( z@l@g9n@aF+nA&v+=kYpMq&nie2oW9;KfM_jYn^K&F1_kpn{eq}=h}=*R-J1LE;d9_ zlHxYx$8Lspd-Y!c3QBHLM-3AJA)AD4aKl`TpK3*}3|*AYK_T1r%Ry3tCNb;{*w71 zz9DB0*_KZ0K|TRUSLZ2zA8$&E@0Z-c{qEqG z>XkSe3u7|FfLUGuGfQ|_%tN}yTH3is zQ=AP)Jj6yZ5kMww|B~TnFG`7#O#|bVFanrj;+QJJ8M0;IQP1QU@@ z?bSRiq_j3GFN*C@b*{%tYs>Sn#`rkWPcV%|#wU<|l4-0mK8f^GOk zL73L-5gAv)Dq`cZZon#{<1!6cMSNVQ0jr3R%QRpWF>;v(tf^6Q-8eZH5!3)Mna-yE z9UYKPzBV<6r=@`vRvb~Dm1nPh0F6Aqx4q^bT=h=Zi9i;plLiX4*9<^|<7W{Cf}ZR( z2cfMhRf32u_Ucbi3WlXiUvYvCK_?KTL*=6>c0LkjD=_bLT}Fq!j33NdKSDA-O{pb~ zXD1Cl&JvH|wmM?3*}x(~2skW|sUPi5EvMgb9Ow8SLg$@e#dLJ$tIO~-aS|HZ2p}`l z0zNcoO7_lpQQU(ZwI~$z^VrY9yqy#YuON8x%DR!jLT1iW$t_MAZQAm0_`l(CtR4BTb3F?g* zo;Xj$TLi&hhu2-VXA<6++B1&jWNgpz%$#h`AW`amHEW<0kJW6sp?~T61Y75Yl;>`i z?V3iR^Y!5iCX-N7>yGLVJXS&))L>$3QQw;-1g?|~v>Xe$0D0@s$siJlAg@F=7`OUXHZ(~V zUF~lw2Ot^7f4ni#$4J~}rjM^swTV7H5RgF2%zAvNP94Az&X<=W0L=d?@G#f zS5nNol2YE)g^&l4Q1cQ5@;T@~O(xlEw!pj+=TBEM^Bwi&9LmgZ7_eDg0d@lcoFcC6)wD&u;H?nHMMUF=w=yzIX??sxQ(ksr z7=}Rgn*KOhH?%~7O~hV(AM_4y_#wD6k2JCpbT#XjZPEa5n=?&|C0OYzh>P z1aNxL8fK*`c?LMUSQOKFPqMb*+g|ewxFFsx)F&}+w>MjTCn+H@dt)IEJg`?^DCC52 zD2tacjd0vTzwoz7aGerd>InolDnL9zX)0UbpLd<(<^|9!N|~i;fzL5-!K~{Xc%bk> zc+BH1PB5(Sx>B3bZ%Rmkc*C)0aIpwYftZ_Ci`#&r^@kolUYmMBvIi8Hj<(0wAf~fx zrDAtMj|~c^J*2((R_q41uY;JMj1bHlao91k+Fg@TOE`xx*j<;QnpL?19x+ja$|K%r z2uxWvJT?0`P+~y(pVg~*{Xm%7rcob8d!j(Ki-#QXt^RrOdx^1dcoxfNOM>v{>lz$^ zMhzT^9&Z4!h{s*Qa(`dIA~XwhQlaQ1u~jsFBGcMXDwTU6P>+-tNa+~h%+xEcT6D>% z7`vo0pceJj`$P1-(Iu-mxd-~#!i*gwryxe()QI-mUBY`0J*2fYtQE!PX2425YtgV$ z$h5u@R`zldF-i6G_C5w;#3^+P@tJxHsLRxIHwt2_jDTz!GOvc&9(7Bxz@>m;G?lE> z4o)%7-Bue}5)YLQSp6e3V(_1-b&UU(cmON`9=--l^6(ll@G_@5j<3j>dzn598RxLU#}|uwIzdLJUvHPV|O+ zu&*m|w#Tf#E0oYJ7!M=9%Tb@b`b@zNwyB#zWRSI>%Uz?0AlT!2iAU55D5~+u+sfe@ zhBDK-{Xm-X9o81wfe2eNFKi68Y2 zv=LF}>HZL&hWr=7fEiQ2x}~E-YG2nA2bzSzH5=cc0|!3qGPEyGaAvMIILaHEgVBB> z%riBQW2e)sBO=pJ_2KHZzz1bsIe{AzcCES^YjrH;t8i8 z;)}%hL}UKu4enE)_ymKq8%D@%w6)YexXjjZ?`l-k2uk;2PwkxASsaEulK~=Q#BrNIFRSpyf4^$oOz4W}`hqO}= z=hqIXQ>@!NaCk%NDn`^YAm+4ASm5)`i8*Zx=0}}@wW?qx_&@= zk-CD+2`SkecZ7#-5e=x?n5`6TQ=Y!zjN(N0dwU*K?2lqWuoWj@oW>3R3~jB z<1P8XcOxvOUz@@VWjS#SsNNI&C)5}iNO3-q2PPhA#f4N$u~lL{wHHYUC)01vHBF5n zy*g*T6cEJ_ zL(0Ng=hnI!u?ON$P|p3QB#OM@IfLC*Z||cJy9WY?=3+QqxvQSF;^dG+Y77S&Oo4=#pg+-P6t{Zp;01q&#!e${%nhP;0c zdbh<~e->gU4EZwrHTRNXa4WKMni>IW`Hxo@VjIu~?rIl4o)^W3q zH)6Vun`d|ua=~K1F{J zY;8f$dcx=DwrAy9{n==KU$7{SU-snYL}9|h!8C#_O56Kd;Wid7&&ABVSp6*s%PmiY zo*XJa69aZd&g4+mnUh1FGohDUjK98`I({&CUW>h>2TE+?e>65wT9bk zdIR2gKl~VCq}fyOA*75=3HfW4g6E|G`SmzJH({|8VhFTo2$2zq(~{f(eiiGPo#n}g zUyjw}NydKfEXo`45%EM{1o-B=R(neJ`G-R^qfUK1HPxrKJ5?#a4yY?deJB!=+`n2~ z#FB({mGa*_ga}^!j6+4@6k+X1K&_1?N<~^H4p;+3)S!f2K29>|F(|k*;QPNI;FSQp z!-sWg0)D_h5Mmfs>EwE^8Q$&qBJq}l7YB%KWC2i_n)Va2B!cHi`v&~^SMJRLaSE>? zoI-8;>U`ahp=ug2w~cAr$GDA*+sXo|i#)iaFv5l66_-MJamY)KyjbLg9x%w##-#-= zzpi5HaXPhj)bGM?V4TH&bkwy6oV%8<2>rnWM2>Bi1{=Nd?Q%9n*yY}Zxo9a64%Y#? zEl4>iB+g$xmnc}NKNx4zy+A7R)+Aw$z#XC!N=zBPlyI)xW@4hZBn7<_k0-_5$W zdV{$l9d@+jWLKLq(Bedv$I(pw8?T(~-GvdOP2r*?{{@tzTJT`k(|Nc-9~SLU%g`{v zmVGep<|MM*;R<*vPix}>d-Dg5s(0*4c%c7Dr={+=LABHS%Ex(lEbcKGV77ey9>X>7 zPuK6W;*F*GiO6~&W8;3V=HbYbX*Zx6DnLWa(JZn>(Lat zkj;0VA&3?Iq#_8DunU?XHY_x86fVRc?x1ulOqNi|V10yy1SN5I zh7z)!pp{AyIsn!v!Y<`!eoAw-@qzmpaNgp|y%r!3E-4|~-_O;-+Esk@;3au@v`u?7 z&b7;4^9O>oax?RrECbKGgRPLUfiG;nL4hx<{;@(AbvhF8ZG%$kgf2R;N)&UHGS0ip zepz`tYK)ia^r{FM?e-~Q23ylyX;>V@I4s`12#?Tg)1D(*#>;+OW zE0~SGosYitqi>=42g5WvqC+_hqC?reK+~_s=$JzFK3`4jbHw*{{<;JA35TzQj;GflJ7K^tODeb@UjmwsEdD{~#cdP0~b-dch}S zErP$$R1yGMI0`MKzG*KI##(#9G_+|3+B6$&nh$#QN6qdXd=;pCd!$K zEpm?D!~d(Fhy^?2}gwr|A0-oC@rFP}bLBCc~2 zTN36bb}=4&o$WhM1LLrSrR+ab`wlT4ygoWp`_%XTgYCOQ1LMfrcZl)e;AxrKm;Ik? z-%<^XBWvFw#)A_wwl6>aAMC$-3;t#KVxrGO%}zQ}>A16P>*mtqpU2z{{>*7>uQ z(4|<0y8?gbDWSV+F|8GMq2NN1yf}Z8*dI6vs$QO5kEcO+@O%;KKz#1QED7s)Q5aG-alP+r`2I-nQ5XCI#8Z25Zxc0$^#Z_i zWaWJ>%Io!wmlv(*ZHZP4w$|O5i(ag?*WGyxuNULNu_Do{?#|;y0xKqW29QGUW!rOp zG!set;0ko;MeI;?_?<91Ew+vztQoAW)JJp`e`qt zF1<_u^#!c!0C!HTBFl>1S<*y@yBzM-GB)x#&@nXNSZST68`*(X>v zO{gvLFHm$+oYg~~6`Lr|m~ZI*rsR2e7Qk?H|w za&?8ZA<5MjElDelOu7QR!kce6F2QN{1mOx0vMoFgHB?1FTQxIL0D>@xOK@#K)H9<2 z4($<`a&XxxaL=^G|VH|=hARr~cTuEQjpC7MhxtYTh@C&(Cnla8q z+NSKTqd~~Pb0~{TPno^+))Q&S)yhle8rdl1YB*#r+xnAq1qvR2+CB{Qq-mv4eY%Y+ zRd68F(O~%0+0>uCSpt?lE)TRcQ`EOgVvd`o;LOQB#U3gGtls}d3Ff))s(;^2GBfB$ z?oSO}ox@4Vs3gI8LgSS1tvTw@e}FpBjcfLBf#D0REc)Mehc0x>n2t1{b0qFBZH4jM zkxMfhCW}hWPc-{*)m{g6h$Q3Ykjii`m*K*;JMIBiun9eU1qLT>IL1Y6IL@bQpKYJg z;mqcSV^8?je7WoxfnGpE5!iiT!F7{y@ka>uFke4-FGi$aL#z5GcnmN*Ot$9Drq`SJ zI$RmSb|Sb?dx9UjgS*sAHN^ejt7iVx*8^eimZo2>305t4SbWFAh^+Z}T!GrLZe!G@ zwx2_KhP-tOCq>y3Y-)CRLf2wUF3YEL-v-@LFX`O(NUC$+F@MLZ?P@cI)AqYm?L}aR zXWc=$8Sr2y9Kl5#24FR|BLzE~QEX{dr2}r1SX6SbV=qekH0p}vDoy3H=gjiY^Ob?e zn`5r62;6a#+<+#d(A5Xf5%f_t@O~pouHG%yq#NPG2ssJi5b~~Z2QPx(Kp$C21NyL$ zedxii;i}EkO-uki6Lxv^O42TU*2Shg(cb_l3qB{!H(VEWZDQx4W&Vg7{%~X}1nO&q zz<&Z9ZPqt9QN@0B13DD9OBzZ+Y%#Tw{kv{j1HEpb=+K>H+L}aPING4ZU-E-{ki#3E zjm@(Hnyvdr!WQm71@`o5+2Sj2Xf`73P0LC2ad&LShg!y~WJTZoxvaMWw_s>E>pRjK z1Mq9vF`nRi>XUy;>6?7Ok9ul#=pcuu)$7m&$=L0G8w*l5PV?ChT(!Fp9kcomlne+L zqP~qs@n7(cor9c{@OU+y3&aETRtX-os!t(bX?q{5zc6v0c++6@pOcuRXF6GAx>qaT ze{7-vqI5Hg3}1iO`4!ox0IOsRxTutmFc>NPz7u#B=0GFn?r(RRPO zLnA!l+2#$f=w3mP!M~|PU+jlD5_iD*GJ#sM*IxZcs2S36QrrK^okrUBSMD^@cE56` zk+%7jJB_rxuiR;rzV+3W9sfScgj+ z@k{U{_oUcsvZyN?$f138Zp7HWXOFWL!=(qI- zt{@5}Wy>oGLLI&v1I#y#$6ta|)A4wT8p6}WB(fKT7~I4AQi14>!)Csmk;6~}2k{8n zs_k1X5cNtgQ0$65K5=1k#KU}Yk2(|?y58^gIqEU(_e$V4^M0@Am^r!M>uKClgcxnX zFbw4b-v5K)P!EwVJnS(Vyu{iWW`MHFG+1%xY%FmMe$vPX28(GZJiVoMbv)tAj@O|a z`i&-cNgk6JYd@Do9Z8e z7Q$_HqS}hAqVaHdt!z-6am!cz5~Bgh;h-VBlR$N-HQQ6Uaj9F(nB4uGwm@egT@>y?K=PT|ve675faJ5aWv4TG0FuwumYtCvJV3 zGa&ZVTD*y0Mgb_IB*?uha$^LxN^qP^^_x#NaZY_YeWdgr+MoWu8~VBWE+>ga&`%*T z7Ph_je7F4@Yt7idf0GhjTSEymF1Y~*XZlU?(47Urv7C4kyXj| zfsxq0e%+VzJZ+YJYnFq~E9a7wna$E}l~#sz|*LELB z`80f*KB!m3Muc9tps)ID>O@~@@}~YLNqn9z@%hBF-O|gw&u7G^K`#N$0gbq^3OsJQ zu#KD1Sxs^>)+crQ^a@PKG5u1kFT(@-JUD+U`}Zp$ZXRt`3brp9L*G^Vqp#ra1%*yN zm2E-?Zed$GnaTIOKpBmF4po~qJ2}SBL(4DWQ~nVRSs`b>a0=^aGxM(r_hNoe{F|P2 zia%^$S25W9-dVdex?a=3q`-ZgpHEH*aDfdb!(1Zsa zZK8crpId^0`^aOvljCsb_bvD?^*y3FLgLSa^`}oieT_v`d%b=<>{5l&lxJ9WqOSTu zG1pyQm_}o+dv0>wyd;WPgCN7+D{0$?RU|y45$h!I==IB8pRcOLWGxyjO1`jHKf>yv z0tgSYDfy-e>hUd|>`15$X4$d@^A|2ye1i|g-xYJ+H(ONtAS-=2pjDb$A$4`FLf_P` zD{G8F`w#oEfpNdO?4{$8-FDPbvhj2pI2|g*OtJLN&YI#NnD&}!m=namCng5^L;s%= zP3p%eOl-OlZS)8=Ppf`cYJvU^mR=%|CDh8zsM(+l3`^BOI~9_?6}qCK0UU8if;nY`N9m1VE7`fV^7C9-gC3lvnG z-J%)T2Q$Js45h#mp1UH66Lcd;Q6w=0m~VjnGa}w27wq1lfp>j15i_gi9CvU)o;!FI zL%c<}Q4i~GC7XOV(17g5Cd0x6+}Yni#zG|q!lGGy_G;L>|61ilk4{@n437HhBoe@C z)JZ-w5ggViY>vKqN4NSta{q~9vU6bmsZ>P)hA*#>iyFZgPN+d?5mAx8+!q$G=O=1p zpT>X4nd5s~i1L_v?(l&cL8O4-5P7o`*k~0+N2sHbUBvyNo%;mb5cZ+X?0tQIhKYY| z3%?|SxIT&X2+RjUD+)6&)TQqKLL7^}AZeWR(J_@aix}a~zO!Il<&tb2H#?1a4O%4rP{uwSn z*c@cgaCZTcMAttyXv~tFZ^-t9$E@*S=kcvTC;I&D-sp3IyWU#!VWLO-O=FR`kKYUC zOHK&H_#}b*8D3x&Zsct!DCInsqr{U;=bcn^E)Vd9j#cj-iZwH|blVE-&cUiAcoSk# z9!UTc8DJW*eY=MD-HjRGeFrZ9?_X|BhxeD_NhWyj?OYzl2T$m18TO-|r3N>tJC6qR zVQi+sysfIam>nOCst3nlK^v>6LAdG~ZE?eKH@Hg(Q?2j5i$d6U1y757zn+mw=h zi?3r8(1I70<}YlM!dd7{2BR2fubH0(GS>G(_H`HRWPn{p6nGlTRs7dmDf!5L2bNDQ z?&dGE+$Ebm_6cpUgxag~@u|DyS^JOZ6r=9sc^Badcn^H0RK3yLcR|q(K@SkpxkAFl z%4k2K0MC|JD6%Mk2OL&ya=3%IV!w6CcK>tkf>*G@)7yUgdSvPLdzgsB3ckMx4r|V0 zS+o{zJQ;r6A?y04@+RAW$X{RDYbt=acn6kkuo%oWq~>>R>VC)pv8Ug<3Gu;!r-Mq> zJAHlQi?AyAwI$}8N%>RZJSc{d0+eO z7b8!yC=LIIE-zN9;jB~}UrWXK3NQrDaCH)QxN2i8#)UI>2>q70iOkP(8 zc*Q>@wz5{Hn5<7GS0|HA$z)?Pxh9!xNG5kBldZ{QOEMWrCfkxpHJRL(OdimaE1T)? zgl;@w7v}(ZtZiNhjL_v6J6`q_;EcI8WX1T~=4_8T{7xnG!+lEd)_tDPgf^sAq*YI_ ztWAkcU`8}`f~XN!Q62IeKpyNV-PER3ZN%R}hyC^{MGt1ocKVI0R~NFR+Dtu-|WtAP=saBJPq`{8d^@6NuCDIU^Da zF9Aj}|J;8fMcr8tZ@LhQ4_XhwUJri_#xs9I34gz>eL|bqkN?Ac>W5E3h`puf-Q+5I zyC@R>3NnIX^|~iG_Er-tAy2jO(6-Odp#XY7ELY9DgQJf=T0in6>Js#v)HlMmh$;Uk zKN9)X+mSQ*-Hial%n(is<~zBppu-`{i&vy%sgFO5f|8%e`QH@Sqt&}*4VwOtgU>X7 zJ*-FMNEB<1G;&Kiwx5=x|HHOHmCmGnP1l#jes&S32i*jp9Lb<}Be~ETRIo5V9swbebBgRa+={D9-B=lf5|@BK zri<_{x(M&Wvi9GEi?BEeR=5biif6lpi|}rwUK1|DuOan!;UfHZAQ4+!rHgPI%M&ib zAW@gNW92sWEp)P&lE%!OF;dk`fuLZx9=>or(Y$!xh{h$ee$DA6= zXo1&a&fF}#j5-~}y}e7^=YMNxyDyuN=HXxvX1BDx^|9`8|L9+cd(21vb$X7Z;d?o% z>jvMySlpE?`S#%ZUU2%6P!E(~htF4V1`W@|wx_;C(^BKxf zTN*Lk#X`dahcEng6GQY*{|+(K;_L2+;pRUGVvzQMjQ!84NsskEL_miAm+*R|=rvSg zNwWKT5M+BA$olwvD0n%u>?ssq4T)ezaVorB$OF0AC*y?S89kW@0!T{Bi?aPvQ4hkNoTKI(iV^j~?y@-mc{t<9PNI zipQscoGKr>hPSW>;r+?)Q&F4>Zx`~6E4w{~+&6!h3hd$Vo3jVuJ-a)2yQT-F2SHx3 zCKbi0^x&0Ki8TFTN)N*O!fy`+Z`b&p-h=R-cu07=;J2AQ2<)PVQjyy|zabzx%&R>J z@`m4}f}BdfUDHEj55j9d0(kfJAiP)qUnl%({!H*s;wEv;KMCGNSRrO~4F~tVVkc@x zy%Vot=iUc9cOkASuKAkX8=2to9_03PLCNHYuB0DbuO>5vW2iDjh_=MTSf<$AL3BdssLXg<~ogv#n@{h*CV=u zSNSi4cglYmywm^7;GOwj2JhVeGI$q$d*RjQ%UzEj^?l=r%pRDdd zcu(vMFZM?uUNMDu*YS$GeIM(C0WrBA%>5SOfup`hdnJOw-~@U7EFyiqbY{x_4&uvL zFQ3k@uv3IzX>K+8S3FfsUp>F>LD&LK>+R|EfkjT95kvbLbY{3A^%Q+P`oN*+LypiU zU=feDry#YZK?-HFnnN{I26P7f2Q~i!<32xwKAO^=!k%i+nEO*PZ?wn6pK?Cs33;LK zEJ*>oxTnBg{_`}j>m@&(dHIp>(}8J+$4^61tKQ#-g`XZ{s2|*yjvo`e-zI)qyE+Zf z6#O!NjfhWCwRah|@FKp75?nhIPIgLg{ajqc9sqghporx_@hlx`V%V9Be~47_EFOl} zGwK6QOH#MkaH=N{!nqRC7_zSk@kMfqb|-R_j!o{Wy#Wul0#uF1JNWM$bC1~Iu?A%} zvanKnetF(Lp0U9V!EhdLz?%r)Ad106X#1sFke*P@GFCSZ2XRzw#%oLw8kL}e>4SF- zu9!Y}8*l|X@hHq`tCb+7Hb;O$mZrHcVoNV}?!a>#w7p#^Y4zQRBY&D|73?~0f{(lR zah%!07!yc7QLA9r@e@owS*u{z@smtGRjXjv@l#B$uT`+?m@y{25glkHw5$+N;IEmU zI|I~$d(ju6uz1!bZ=y&)|QG+NP z)h6EpYMZ(kPZ=d?c>G#+o90+A`uI}O$Kn(vbg?Pe66V`_Mt9Zw0b}p?Nh~2G2@1#a zprfYd!o_qN{=7I4;zOmNSwgITt;1aMH{Z?nb)MY(T5o-{JU1UW_v9ATdhfzbfw(!X z)_XT@P7^nyYrQ|k&1i9Rdad^!+?+0M&ZzaS!p#`~jhQRqXh3=NP{fyV)~~@kH+;LTu;Y!6|NwIRmsMODhqL- zF*lyutKVY>p0cVFj_uXE_@+PJ#GgmX6B4{9&oR=E3@nYw^Ba_~tHoUs^Ie96)Jkjn z8V4^|BoAJ$NFKag0Y9{7;9rJgoGQdAPIWxQslqtJ$<4#BHI5d(W=WSf(f3R5fxmWW zEt#946D~$12U0KG-26kK)FjSMI`nbd{&Co7e*hX2m*(Kgxv7P8|BhOOQWARlA|OMS%9Pn?INpC~;w z(6721NEKEP!&yM;TVg!Z$A>9!$%lhyj;G*&JhAJs`McNgKTpk5Nr-1JT{x4KM5ZH(kr@R?$5h6gaBMtMuVvRCgWz3>RN;4?TB zPRc`&kGJHX_G+HDhOi_!7pw*6z^O0=skpY`+J-C4MU!{oig#1+`DOT<+@h0UtZW}C z5r&^nP=3iS-|y|~lzp|6_eGuiz`x3ewUa-LIzMFcquR+IMV%ip`El*!kE70ynf#=7 z@+VQ}Cro}?JNeV7^HazT1tjj2Bu;VUD7~%pD0oKm z`t=6q7hIL zi4wXPy&e~5CE6d|raYm@f_h;`!P4Q1b*oa+tk@^CFaQXHflTAFy$XQB z;~A{n%HT0KJzwk%pJP{U+F0xkP0fSQpK8axv8j337B$t5Kx0$$a+pFqkfC`zdmd2w z?D!dK$6;r7A*f4{$QPZ;6vl5H80ov!9iD2>FRi;OFTeKK(r9^JzJ)ghrL|Yt3wU23 z?oZ?WX}mv8+>hq{Xx@(&_owszbl#sX?$6-;8N5FO`zbtmg*H3pm& zBWRJmn$*VO6mcs%#XoUZMIpHVZm)hqWP;rh;t})=UvNRsxC(m4)u3m0@N$%OQHwh^ zQIG(%AW6_jfTD4Vn{N$Bb6;ugMFvSDZO}B*22mqzP&Lv9StH$vt`YU@0P2-=T}HaT z`A*Pv2~yx9MAse_zMyCcx&p82){jMUwJ8bMDX^Q zVdaz~gV)(p^y{xZBK-E4KD*_PBZ7BIPvLi1CV0i*LVM?QV?F^1jQg2s_j6P3vHlvs zpx6Oj0)rFsH`L;m^Kt#YKIIjkxb*-!hK}^^M5WQz+a~)2YkLJI9|| zk^*m255oJMF5%Vs2l$U12EJQ*5dLebyTZ4$58qj;>r=2RXj_oF*Qch7uex7v`J^hT zPXS-qf**1W`j_{q@ddD=pVNgsw#W2=Q_zI&^q0)*0r@?}V>jQP26kuvcVJ&%?CO}( zWBS0Bm1%&c*t^a8VG6uGrVk7|GI)DTADA6DBK-E4KCpI026&~sns~vH$g3RjRrm6$ z9F-p){q@*F)~e+h@Y89$PvMsyTOa;MWd?Y)@c{N%hp@-$_AhxJMA-JgIJpKHwp~+; zR28G?R3Q573I{jfk8_76=JRlQg!kx3bSxPlOhhOBtMxYnF#=zre)Z3t@YH}O zx;?0ycmt1~Z;CendUFWV(H+hzZdbu#Cg`7 z1c(LSm#G|Si@CV+IhJi_BZ`~19y@VcXtn=ven&^0s}&*oZ`9pkxHU)^*0WGf$!qrN zIDlc)gI26IZ5L4wwj;GeL_OGn)QckO!HY=k6j2X$BK4ApdhimaCL+%9E*1%|&+PaE zY*|$$Vn0_;LQ+PeYXo=^W{J8QPeW|DSvTLjz~`6`d+VQ+rdc=5cFb}tW~8{sl_n%+ z`EIz@fxD-pt|-=c$Nc0xCoVWM;^#|2cOk3|2feilPcEUsZdyQFj8$Z`XG3?@w;PAY zygHTz$hD!%lVz+)meGJBv35!ju>ff7zt7=40#jpsv02$3Ut`4*-hGPQFxz&GOyQ|UacP1);>3T-7(43mgy_h%+X8JYiUCR(YU4G`< ziYK+|3O>R2B34~QU5Hye--X_g9R}H8Q!kQFvGOAQ0#eMOyAV>Igk?l6LHG#)V4)6R zg{cC27ZprY-v`PQSc3wHA0VlN7)uObVH&`X3xJ>Jdp5W+@tCLy$=@U%kufj2hH#I1 z?_!97{z;K$$V1&f0&5i7;WG;4?cGa|z0<)h!<8n4D7<0Of}2T}I7y~u{_LB53{370 zuW%yvT|}K7A>*0P=s6MK(qjI72D8fdhOWyigcaR4ISGqg4@0Cdp6C7njKw&lr9ajW zvcY-&cM~Tmq29vR06hWm3(_w6%y%Yb4}z%&Cpr?@SU+$8{}?Gc)YttSDR>@DZgSme zlQ&2YZTKs&igx&aC0<0JXYHI5L@&f4DofF1u{oBdtVSuII(6nEqK)!1J`0bMFk`$~ zk!w%^OzH9S@V)7Myr`S}eN*$B@$eYaX3A0EIKwM%mk$+5f9@$_>StS) zmfs=stA9k!xisZ<8hz+zB;z=;ifnLXM--uJ%4;tktl<2zM-6B_P&vFI zC)PqM9G);wKrAiPr9h}OAIT|X=TNBwNkt}ek#x!=BtcEFNLrPU8?qo=$h%-oJ})uh z5yF0s3aMa;)y%_l3Wlg~xd7h_Mqw5(YCyZvK*W0?`-OW4edS#Zl(fHsue@uG#j1&5 z^Fc)rV-W>m8MCn{=0FJ+TyuGaQ$?N-dP*!SPdo^R37{wJZKST!YuWqoahM$;(a-RN z=3|-nA3Q7U-NZx_eRxau`p$NTW+1%V77^avJ^dG#Ic!zg0c?qwVm$lirQ+FVPC-jE~q%RKpF0h2c$06A? z5AMv?=JHTYF78S@BITj*P^3aNIs9G4PeW@5@OQm}Uj?C09l_i3a)Ve0M-0;JU{)SH z1Q^gRJnV_H;gS?lKcU20?Y3@#572T2&SV1rp;AhQ2+IiRlA%eISks6LB)X^I13DXo zRxRV>aF~x(N^DV>x8&1BLx~JuHUf&px5Ej^-SNCP_^D@{Xq2ySX`r&BpD(*K>az56 zcWm*5epAm9_W!Yur8F4bK*CkG;YOW(V;@UYn3S#F@KbrDd5#y)=YrU)HbdYE+`0?4 z0N^PCwm(c4Agw1zN_drg_)gK*(k4nSHS6UpAb-7RPOOF((gx|@rtVrG@J>)lqcy+d zi$-hdk7~$BII6}WNMkjgxQjm$S_$Z6 z!i1=>PY6ir+A>3OQD;a}0l1@v0I=4NM+~y47v7+w30{xu4yt$l0i1#(7>R=tfg&Fw zx2`8esULxVaU#=dq%FSDcv{O`r1}OlEwEnji+_kRTJR5OBEa|7(kbA^GaDs0j&rpl z$I8v*T9ar|&j#EODTyC)k^Gho11yPtiF28rkF*dx9qI%E9G;sB@ZTTlV@cSVvy5N$ zN-+14K?xCc%#9RLEbY^$2SD7EC++vaFFfJLBpK~j?-)J^#Be`HDvHE4ywxI%^5Z7) zaW&qi#VdmvpiTzF2Cbfe8};$)^)^{O;U{%cJsE|vpB~1wu8O1tsyMGG@*|N}!i)1E zZg)wNSo%6iqOuL6XB#V(WLY|YtR-3{$Po?>Nh(zCsM3kxgJHmFiBZ2Kg5bj-0-=}D zlCX&_dS|`S4NvluK53s^&QE~AU2}B={uN*7@>2XG1KP}H{Qy$M}WIb3mo=UdI91nY$68xB_==pwc>edR}sBg~h zs#`sJ+2P72Lj1s|S%@yxWbs`^T}0|P0bL6caagkj!&ZtZa4Y$w>cGD8TK_BdssZ34 zI5gqG2zylnnqC&p8ei)Qz~6Z#9b;?gvlf36KNOgl={}C5>#TLICvfRi=Xw&C-gU00 zaLKB3t;fZtpEid>&@i^Q+p9ekS2+ApefxTZxDUA+c=Q&)Ye1o>+l3g}a49_(xzrtC z9^k$~e=FYP@l6xn#2G~vhl&CBFu%ODkNDq==R|wZRj*V%gURNMfG1d43v@%+!C^~1 z4-{M$&AQN1Ugv+s6RK>%2z2!6PC^vGfEWO^X>;htP>^(D-I@vWHSDu^dPhhE{D(|J-~4U73PCcO0Y#8~#U4b{jA?{=VwCqs%EYNPu6 z4V?c4tT^y2R9UZXz-=N|M~;DL4VB0e!Mlh6S_~>x$WQ*CJOupqvukx)k}UepZ~Ne- z3gR_;tr9Kj$8*SnnA;_;1~OYnDdJGfN=(08*?Re9>dA!Xd{Y(yI$Tp>oH$wo-G6if zr>+`>h}JMve7*XiKz%CAL(~`WG|}Jm1@gA2!NF+3&TEVo*wr@0BPXpUsFCbLlen{Sqt+&+cDw^r)fC9 zs8e~Tb}moaud1Ti>LB3DEVGjKRK#Nz(LHxUrh7w0_H|Z>XN;Al2zPv-m#;sJ1l!R+ z2YUI>1u^|ZF1k&e$FRYHR;Wi^kCL!6!k%v%i=`uOmQWt|&7NPz zGi$Niz^*(#%QySF%Wk19OvzRrpL)am*{=EidFYm?a|AfpcJ`^XgoFJ$AJ}j&5yd?L z2zEc7gP9DzXg;iAA)BI|pHS=*=O=9atpt|mCyW4V%uG8!!5>XLr?%ib${bmGrxOw0 zzeygPAb7Yz?T6fy{+4S)%qzg%V)Y<`Bucv_Ep!zx`c^<+@WH-)37=#=4eb!9b z_ep(Dvv1pS?k9pMSiYI_5E_4e#O3SAHRjJw5Etn;xjxnPc?g~4V_$sOrM&G!at#l> z>147oWv#SVgl*pwPcp^#e+;aYRvz>_#`m8B!cZIW8cd?*Jq{`X^ucJ+4)xtvdtvU> zZCL-S@GX1n(jTzLBs@ZY)b|f4EBA_N7`K?gHu04);>M(T9AD!lF7X=JQ{c#o<4)8$-OW<8u(c}#ah>}n@W?kQQ51j2%e@RNGV)3ixML()NW|t+y=?G=oU|KX0CQxv)E*F7-z{21-7J#wfeu`F4RV= z|5}rt_|Vlv0R}s51C*S+Rm-Oly~C5EAo`StSs~VbYb=4`R8~e zjw9Dj4Tng@^OOelQ~$zD815MHyQ@}lLU7;r1><&k9*1^*IgEA|ZxCjiumi9u!57`Z zcG&NvIocNeg&aw^`5{#7PR=Ti*CajdyXrMFu+$M+qF^tXz4|_|tvCD-(aCpC@eW#* zw%^-3?n2))I8uHe$rZuy)hE%f*aL%=i^_<_*T!##;2Y5@&V?>Pd4fgcq#`DI9EGFw z`2pBg1hMF*bc`EV^9zTaqAjn(VF`8<*)S`$z%yV%6iw@5rL0{Pg;SxP0aM1?S?xM8 zIcaaU`mh)yL>dcm;DNpRLgb>M4mHI~m`3z0sYSL)a0Lu8VfiPxQDN;rfu~>j=UwNx zc>$P%JBpMhEO*XZFpK;wxg|X2xf28{vIMmmeW-CXly4A%Sl9%wc>@`E8Hg2zfXq5 z)J#rh@~$G=5PGZ6r-ar|VLR;N;Y>dC&x_wnjD^FqSUy`4bk$}6N1#yyhY~>vdodx` zmQG}6roeLl_W+C5mDPo!lY~r*pUAW(?xoBH0_EyR)D=kS7}rX3uefR<9mgKeE`bCn z`kvk&Ql9EvvWi0-(8m^L>==z&^#$V^(SEy2&Wbf6w!7q%IVc2R2CU?>77Z(f0xN>% zff(^7*-02{HK}>~bOSNM2)PiSskeZ-Og(p_AU4R8unUKD9q1qL!5qf<+{(?ABPQ{wHnJp2wE#@<8ZmI?S`xr5@c{CJ$LrPoz^6_uZJL;5pId!9 zbkf-=vdAyTC){GSL@UWR0+~ch9%Uxh)<1EoRVVGzXd2lV3nl|H1X-JFlSbcLeLnrvgr6Jy}61L|o2PB98iUd@vrF z^wm!5$?vAV*X@-n_sRfGw(s7j4@s&Lvu%BC5|IkVwndZ4O?oms<`E>7@C7y4-j*v?kc8h7V@*u`g&e6 z@f(Dl%r*1SxpHK#!b9h36RQmCEr-s<6%xQD7cMf$f$#-aFJYs{%-l^J5Bt+DAose< zf!vTSe6KDcRQ~{o2X>w?AE@^t17-{0EFBf!yRr*Z7z}AsgI94WRP+~y46c_z%-ur( zgRhqdKT>~pCEka`LW=s^OGs#(qCO~6#(KW=7YtpE2AqIgGMPTVGv-I|$Ew=v5DHa?`p{cAZ6|EA z53fMm`+CFI7ecJiTwQcoR{~Q>UIOT82m9>_R$OuZ+Z19y$=z6=jVC~8$tOmC=>9izp>JYet$NP+R!eE% z{5*@j<`&QjrU?@Zjl(G6Ac!r-%MouOVz0ge9P6etoaX8fb=6v8t{-!HfLIQ2hR{qR zx+R#74(vj0eicI$5D_(y#^I=IBYbQS!Egpl;Z#FlBmCS|gm8u`KB2$P^&%icR-Q2n zEze6%L(B7$^U(6VcxOFQgcX?A33hZR!fV(-6)T zk@(BRQP{R}s1tnPqCZvZDEY{JQP-CH83Ev|MKj$4F4GKc_>_@4_5!7~#9jdN@|C5v z0(&cwzMW}c?{=iCm{+Vl1WfBF_zKM=t zXN{arX_JCcUq7`7)d@zD(7{zEo3P4HvhkAa(a)RC9!|rbSognR1aVKWrUhK%4nF4& z!XA$GFvw!t*t_+CuT@|X8+Yllx|RMq2OzHb#)Ja(O)z#>_MfV~;NMru?d#4iZI5Cm zQQ6?@MjW)1lg8N)N0+FebUwB3hnC=;K@|H?1Ix8;pce=9n6 zle;6vy1n-De_~`1pTDV&1`6j)h-IBT)}b_AggMx(n;o+z1isZ?=QC z{U*f9Pad*xmT&HaX!*&*VLqDQ05c9`6e^@WCkx=s;9`)2k8sV^t~tEMOQ3;+d|RT) zW)Wf^T*$DN^BKEGZ#9WLSeApS<}#}EAqpfBAk`DT)yj|1i$0vpTiF5<4gr1=CMKlk zk+^J-#gLj_3udSOu?W=*M^i*Uvfo~czT}LxW+W1D@@S3Q*KLophtY4dn}mPJF%=aKmyz zZsgp(5?F#ULFnhRCA{A7&AnhJKwo??IegnGR<$<@$D*s(`VaIC)=6>R@0;qKpf^UQ z89ApcmUZe_2eO{pOOX+4JQ(tC#(OMep2aR-gY)NNu7@ei|3J=!Gg@UMs;_gs;v1;` z7(Ay#TODENc|!hrd-ZjSh!NbCFE+y4mxbDBB^rLhtS7v}KT%W;-5X-=%aJ_dRu&5a|?mHIFPSm>J# zA{z&qyUyWT;FxvowY=@8G|gVT*g>M>?GV`f7WjROZ@5lmJ{E5sQa|9^lR%f_3Irx> zX_&wYFflCAQN>tzYI@cO$e_aDv{5xrX{T-4I z)96~~dIT4&bN>Ms$Y`P-Yfl;@ih4y%O&`16IPP7%s+Dq>J-%OPV~d+N;R z55704idRp<=Wsy8S13)1H3N$s{Ir_ohG!r`$+SrOMp(icSz*ZEijZtAamsTj)Faf< z_#S)>fuqS@@;CT^pgjsI1odT|XqLTDh)y)gUf%XYFqjjC>_xPe6DfQB^@x$8%ica& zFkLP;+@RqOt%=@=QuI=#5$m;JXSDG>*~U0r0xcAdVSh8baSpoC)b8uu0ye1qC{JSy zStA%@HDj|}Sm#<@TH7ZIJ+sbrUuo?`D1`SRc|VfiiwAH4Up$Bl_~JqGMFS|b0kr}l zI8s;e#l$3ETm-(DcnH2QzLtFP1n@6s=89>EMo)`I3>c1T7TLxzYqSPCae zH>tJky;QFfoNqq|Pqm!JRN@EB3H(egCzwb-gVmaEz!>#97R$=tQq15-O-9qHTCQUe0Dgi{gWr^ zh@WmoyxCbfA6W>Hz2+uxOMC%-$bz)c3+3^Ii?|#Pfa!a`TKxjqHCqWHrbV(fF58Eb zt}!*(>WBA2UyS*hx4|YtVYY=U~Lt7FLvrts^Zr@1&?Sj6{0r*qO(kh&?>MM}_uHa*+ zBh32QwahvV6_W4hl=0Z(2XXW=%0*wcu`hp--k1Jxiqm%+XfD1K*aImg;CutYv0r@- zP1XxAJTr_#!J$ua@gKM%I(~ry2+O^tsWRH|$AITl*tVh%*IN6wR}{(#lvBNdb%bqC zkC1a=1gH0e7UxqHF=}+%o595NF>zyOG)|nQFUWrN4Ah94Y2=9CYqw%?I6&0u_A61J zy;FUk@vE@yqJO=<^<|wOrdCFk1u`tf)An)bID@Q`J(D+z)DUN&X)va!R< zX0-IOvHQORQ^QAn=w)L^D^P*qWuv|ToI>lgqt%#Ghz9o=O&47zH$lp)eOJ-B&)k0L zQdBB%B(j{tQbS{={g88yVK?7`3%c!cWS~-uB=JeSzBFF+pjrM%e}V9r)z6N%s5b!` zNSB>eQo8Us0T^qrb1rqhqWc(lR_gh{6t?AAB!G(C_6kK(z;yL`;MEgeoQtF$6S%}TJXa)XF-??Ok~U2(Nh7G1T$oHYB$JIu z9)%omC)Xc_*GG_qU6xR&n?XuSczv6E#0u5*H=)Mx1usWwR9nl;(o|dH=X3G3`uIeW z>U!3sglhu4WHQxaEkfp+a_C%6nagqLTsbn=J^*@%8iheOEVl^&uBjYpEkG<4E<>8Ww2UMEmA;|Y5_7~7~68-ipZ7& zgPl+UZJ*yJIUo9v^yAG%DNuRT&rYVIcmnkmjKfqlG{12%@Nd6>4Beq_xKLKRc5Em4 zX!fVe_XeYG%unH*6T;+61R_5{!4{N`%W|;$1B=`>`v~C934PFtW_9mvVm}WSWt$eA zq<(M@rymX~Wzg634LzG;uASt>L_h50aqZ+`^}Dg8kNA#PAll;~Z-`2+JQhZTERJBh z77@l)OPzO9)V0ZCe{9-jJlssi^3&ER%sg{SgD$xIczYu;4W>G{*ap#MLUY=TWf(4i+PhgvRjOd~L>c|rI3=7;JP8|=$eth9Fg%Om;=n!Anof#Ns@n?Ch zOF;>8f4A)Uq;#hLZTIo=wXqJp(ED>PDvp}*yLtoVG@x|WY^J3A0B(vo} zK4_-*4;&hZAYEwZ!B;z`6bpR%hDbaXoA5{sE7o1`j>=V6AmTNN>fRsfMAf+HJL-Li zSKXPYTunMv4Kk=Iq6A${lCsQHB_Lod?0=iEpiVZyDsnwow=;2F!l#^WkDwxIW&skI zy~aZAUJzNMMr85#Aqx{|@}|T&?Dvk4*yaI685(!(h8U+q7*6$uhc_MhbauKG{icA@OFHOm){z_r>Pa$%hMXU7z*5X3Nv%65kb^ua~~Oo&@NMcF=4U`x>s_x}BfA+*%F zTH^l$BNU&N?#J8_-1UlLeL-zI4})j;3VexmDeFe}{ypxKUQt5dMGnqIuP2Xi3WI$w zv?}G%bfYc6z<`t|%th+Q<0M)4Uy>wihdS_1l69drlhZb=b{gN>i+1z80e8q>C89KsXd2=uJ#xelhvieMew8hWi7;3PFyhw( zDYad#N%>GJTF?OLvj*)#Ph!BP$>m+npgGWrVb{xSK`x1zZ5|veV~O)A;*Pt6Vz34q@O94G@?nIAmDfIY>L67qcdi;b2D@l)203Je9=Oqd9HTOw71wp<` zf_xeDY9dIe#%2d#NsiZ*kQ_Iuw=LGlamJcO$EnLhU67-z6{j%t|BDs&6Tu~L#ayb> zA;=O9#FE|-&|*eiYx+4|(cuI>t*UIb_)auaV)bq@jJ1-G3_^rnsS%=rUHc|NOx-nQ zQ{VqC$(`WU5P=lGrJ@jbP8o}^z*9?K7P?uJCemr@U%u}RMl`v9^nEyhlN zPv|ERktbH#@ka8!XjaDfqo($!)yFA7=lV?fMX1k?DNb`HVPDhQtG!pcd0(9J-q5EH z6>rkm?@+ZD)W zj+8e87MSJDpgRsz-e5@JgbvE;Hz03R@DsQ#ZQR?zr(d_csYIbkc{7djCR;QOPQ_GK zO!DSZW<8X=IVte9$(wi1)a1?Ik&yCc(+Xqc+i_Y_-lUIzUC!4!>-+f`=WFV#XG_KC zBSiH;Bo7Xmn52Dz<;HKejk+C zN#ECI`6jsy|2VUJBPC*Log$w)zt1fHn=Ii_4nAm1M@At$PZymW!cD8c<5Zj0dffgKxR`gk%nBYykySBMj=R-m?t}nTRP#R)dtfnd(vcgQ7;@#6XWJ28VqZvO?~KWIIRVb!^-OVnWDZ`5_4D; zk9)$RPd(u<0ahO_DuLL0SDi76#BA7yy7QmC2W|)K#(c=C?)_(bA(vc!FwJ!heJ4q; zReSSkiG+`taDzLz!3p|OUjv`HgIm~G%r@Xfd+J~;wuEhgeG~CKE00#z&CSaO<5U-S zcm^hScDJ?*e8N7Z!d{?G3Y{oHJmB50L}% zA)5!uZ%~5xP8xIz5Hc(2-jDioZ2rCDEiktT=iTkI;k^4IARPF!KkClA@cw;OJ@M%j z=iR-iKnc+zRO|^lDBrYgr}}cXc2FKBxf8*!a*@_-!-NIXEjF6kC)N$P+uYrW7$0HZBwrVkpwUcu-80|z7XrNTKL2d zPlh1HBCLp7rR_Py7OZ?>sDqS|R^X6pW6-rD=Gus_+1jKDR70fglBR7C>+_dYayK z7M%sKtBTG7_3HCzg|?8A3T!|1x29JHFedsTV}`$z%FpOuz(M=7T)@8rWoS#UbH`I8 zu{WZ0w2X882_>9V&c|Y1A52HP?wk7 ztY>^YJY_k*6*Nls+87CTizul>eexu>C}}I}QhrRw^nZ;z_^hyL!;%Gf`ykRIj2vjJ z&b{^MFmQ*@2YI|hN15fIDrRhV)g!Wz>n1 zY2o0G^m9mec5o+sPZRyYbG(Lldc$dw4rp*Jc~5-|l;$azzs5J%Yu&4KxElXr6?ToL zL|)gRinnW|K1EAhiUSXJoO0OuzmwrH@)M+p94*?!19(Ob!!p`_wF)1~i;w8NpdVo<`j zmfkABOkX>_ode;MPH(5v&+Jy8zZnuHlRm#B|FHG>TThkxeE3*n{HML_W8Lso zzZ&u%6o$cGS|H%}!NDT4Tg1Tdx%4fNVL@(&S^$N*OnBd# zgISA^l8fVUMM!cH5k!O}PYnp71QC*a6bb{& z+N*6yxT_AXSaR&-aMpP^RMh^X2hsdV;jHiS+{_c%{F`)zjBn=;>`0sa{C+5~GVQ@^?Swwx?Ge?4{wFH`MKUaqpw-16lWS^c+sa)qbAW6RzvruKJkdHag1 z`s49nJpOVpAAdQRkG~v@$NZ?;9spXH`mw!1OWk9SXsHM6ZAhWi>iz*HKDpw@{TrCr zd&NEdBTT$~#RL7@nD}zAmgmdCTAnWlYk9sLEb}NUo4LhFsfr%7*PP1h>JHOE7L$V7W-YKJd-%YmipnIkEkX(P`~PQ~$JQ_)s{XRnz7I1~S8#=l|DQGfL% z)#`Nny1{Sy{?RYAc?4#pu?peej+t(s*C9R_CFu%>&}S=ff!jq8wt0AF+QcjuPJ`Ll zIF!#>Xe-!d!2jd!T;QWBuE(DM3jxFpFOBc0X$w9osI&w`6O)Czx~urW(khBoC@2br zT}2cPCedv6zirxTf7C}CTeY;+-w#`*AR-B17JLT#5FZs(tarO=!AC$*^8cPQclYjY zHh{mj{%rI4WbfRWxie>G&YYP!a~^1sR?VC&@3c5-exH%=R6{DeO!LsTWq3qpIH3v>8*N^^bw8!r)H!F49ET`s z++nK6wZB*$>F4^ls9aqa7^QNDbM8v#RUZ!Oq?|SI`^~i z5I(hPZ!9ecT?pPj|5C0h=`iVnnCH#GlAvsq^~4aR)-}Xr6z8zVx!rcGSUffq%~Ivc z&v$1Wf^lor?ZpQOH(vg-6!onABy*D{Tx2;mjm{mspK~V9VAlv==P8-Q7ya>Z zCjSP^zDs7W`f-EFt6q7#lF;HK8D!jOMeV-+$4{MI9kthi{mL}%k#=bg~0a2@e$ zV~55BBcIT^qGUhh_r(9uU%L3y*$#N(&*qe}U}Sc&{W`CVXmTPAPrd^r8Le(3ZC_ix zm=>kHXvq1s!EVr!ci1-;OIuxebnI_hwOipUzul}&MF?=CUUee+BQmSQtIJBo1HcGU z4I+I)R0T0pMV;OsJ-~`xR8|~_kuMMnlvO|=Wrf^tK)-@U90v$9A|fTbk~zkU0L)Aj zzS+!_zu~QWn_Zadi;JrPJ{u?+;DvbV9w={v4MTL_O7bmjUS#kOAJYW|F1TTZcA9_b_r>$nDG<7P23uv`;LF z-gT~m9-7xEqCIH3(<%Tc6aWP9LV4>UZvuD^dFv@}0(eh(>m_djcrSVL$eRG}QJ7fs zfmZ>~(RzP)kYEAwL+KobX?Pd$l{GhEOrfz?nYT{%u&4C&*5A%E)zd~qie_q&sS5bq zTYn&}Pkcu@#H>*D+hs>odqdge0&iWR#K%0t|19(sIZ*j>2;~y@<^3hDuB=90<8@^X zJmt?qG$m%D+2&`E@ejR+6eM<&1H7p3;3)_sJ!>!rvcMeZr#1vW@1FhEzcjG&90W&~g20}EwBg6g!DVg>kcoq8(nD&#=s-T~_EEV4JBFV@EC=B(Jk=C)0{_?y`2Xh3 zg8yY+^TXdN88hKuN`$ca?(eU3EiFWoyB|UNYq!~td^2^D{m_byXFB^@?9OTQkGilh z$5|ls*3AU%zr-4J)8hmRyuNMz*x8-F$j-{zEvOoO)N|g&BR2#g9rgW5PmDE_WYF_6 zA)NJImz_hU?_-`%`bmP`dbI0sq&GS&hdVM%X#8P6X2@$0s$k@!;P6&Xamr7{I^WEW zUslT0+F`Z+{fI?>70@`cdZ@UjaEI3)w`OkZnqkP-7p+O#=baEf3khs^sqoU#DfmY`le|dX&BcfQPX>LLw zdbEY)ycIjS$|_vzAO2j>$dtl);9i0Yh|12U7VTCwF#sdHg(<)608F<7d5P#TgSP`&Z9I;KK=Fl?oWfUE_FJ-H+)Y+ko zd_EZ2X(KY($sO0y=?p99ilqewQQvPPz9-{8u@_Id+~}oEJixn_T@a{$l)Y^~nL%9l zq*8TizCtcp+UE}z}3Kz4(}frz9mEIF8?JVO3Uj-Y55$rV}sJNV@y?) zmX&XUnzC!eW_(X!@iz*Gf4pnLM)a7oc_)7Km_?5jgkJf)Y$O%a9W~r9X|tx(>W4Q7~MBG&sI2h z*c1Asj(kT0SeE=o%(HZ(bOq|9B}SQWn0>HTaiJ*qhX&=|afM*#sK{UH2v`jAnW)6( zzSJZBGDfy!9Il-D-23sAe=6iTZj?i>F-xhZA*P7qMk+RpDTy&hm2Jr2)CFSWuI_yr z-M^|rGQ`#Tq`_DW;Ppe&nvXQe7^d_Wwgt-P6?toiG5=8?JM$SxSqx4cP)D_NyEomG zN`cUOilm3dDW9I^IMc9o9Ii4L&RK+6T2U-@dY2i|jI=YoY}<%wqlmsGMy7X_nx@PU zM~MZOAju%HveSTWItRvRpFCy{Z>D=?OYN<@hn#{p_H3dOKaw}&k^r;`qF)MXPc^+G z=Maa8f8C=*yoLFxr&V)IeJg`{52e6iSo=6p;f<*_|~Kh@nqQWpjTiEu~OCJ)+^i$y{gdR z%(c^T46$rQpjRVk71U2Ts-dGZfvs8iSV4GT0BEAxBu8JS(bs|%=!NNxMQUf7+Np9! z*%By!&0F_l3N?15TA)s?vPp)1wGv(j*y~VQAPBjI=9n zphtluCl?>lH8PF>r-DC7g%pXj3?eat{>q?!*Fkae$aKPnl8j|1V$az!3Lg7lNCe39 zi)WNBO222HzfgU#7rWIa~|2BeND*Z?cY!`$xUT*L8z=t z*W*RV*PPw=T>-zew*vmRr@H|>DCsWXm*mp3a4?gQ*@psn5<^6Bd*=lTT*?OLftF*k z^AmE&ERD7K7*71$yStw?M%4hXOy$5T~w}cQxg&Yfn@roiI1@Q`5!G!;waj}39e!ly- zr`2%^wE7Qnwuuf(HBs-^t`aU=XSg)8fmOJ~wnG*>LZ^M0*LRwSNqt(!29U;KNPn+w zJDwKgw2h{QI92e(r2b;S(#5 z3@I2vb4EhCISID1Tv;aPJmf zF5E4b?8c(YIee%4@zk|>^J0c7V?L(*(a&1r;N&Iy#7N)qDRsm=_xDY4k1?NkqdI0k zgDWHTijKH%XL5LIe3gIP)gSvq!0P%#R|2oAR${R9&#M1Or;Dzh$d8}384WM_m zFMTq>z}r!jf){T0wZPjEsxaK{Z6cn$BM07ByYRaU9e8m@q`#O~$6hY%Y$gL@8vfH@;FJ~SAfgFiBXW$39wf8+>m0*Z9+sZw*- zgMpYlJdS?aY5FNmDCO=a@UiKy-1$p;B0EoY+k=0=ed$kgHyiEE9dmR%>sSkh)?>H_ zC~plRHA;*_Z`_wP2`f#52NZi^7)behzep@aZS@gzT}TJkV%)I2X}z`&Vb0>(_gn=TDsH51eO& zXL>!z*ni$?s##quMR%u=5YvvJom+r#54oBoIl6M`9&=SOmMd%aoJG)OqEvLCyD1;m z(X$Z0rYY_S9aBn7h%?yrvPZ+ZQ=;V~gYVA#x0K%B)RH1*2=worz%SUT#CPLUe5GnC z`)us1LcVmChF`Dc(2(BqXTkIL)t?ETzwJHXzx-)?C+LfoW)SQq z@lTrC^cZpExJVFwUqv*lL=$>bjSAO`Etlg!Re2l z#!Y<&v|vP@-hx|%Bw$@HKxVuXZQO>6C+&KGlwx;m$2qSB2t+ju z4$LRYAM*nf#xn|A{X1UtAGtxVDx&)bqUWGlR3-*5m%>9_42MQ=g>67(=kqlSmllZV z`deBZjn26z`0WR57^1S=3f48q_W_uoE~<8_%6D~Ru%V(c9I0*yE`{UAcvLimA8Pb9 zHu!#9-RO%F*N7?T2H)=*egCh)_i*E+7*YQZ8OuqJaJ#^S4T|i(FyIfdPo+)@TuOlt z@iCu}U$QNyc<1ti;x|y-Qw<=~q-WZEkI1Bw!?_@DJH@q2w;yf4_r9WYR;z~EuMjIX zJj0hK_fLJN@8=s?n=SHHY{01HLRs0(1=B-{T#URg;VXk!5g5jDN!%fVVGu_8&;zA)z`E?@dC%c-W#0r)ATbslN7ur8t!}}+P5W=E#jr6b#xBcRK z+A*0$g!-G$lUxCbhEOIi0qgU>W&L*xjL-Sc?1f!sus&LLlmeuVd7D>|=KxDaTciJ-3vbD{W_qNSoI z82QMcsgl#sCHZ*+!SWBhb-gKE&F<#hV4;~JW_R_2sIuydc7}N>Oe8yXqns53Rnmi zm4O;5LZL(gq81G{bhay*=qvr3h{;%Wp%abUAV(wvCrz8<&&+m{UBgs;|R85Rz?)7<3A zyf9k$rap*JvYH>v+BeAnf^(hr8Co_Snd%=p6j?I8jPB}~ko%84!GfQHzX=`6I-j`r zndtilBhRSG!skTG4ik#(?7P{?A>olUYT z8NxFu|N3usOOyV0%Rut5K;$^qc9tkL>?k!OFAzj(?8|Jb8Luod?yX7ZwSQf$Vt$ebXhdsI?D+$0!@3YO9) z865RT)u=0WgPapq$w>o|4S7(MB8JEQ8B?1v7p4qHgEZY+&dzJ8Q=lGU*>km%rO~&X z>-USgA$`j^C}KvDs~Q>f<>X$W+EyzFt<=NfV|rLzrH92;Ae?)=lEY%+Ee~)xPMc~L zE-nZy5Q$T{6!X@-DKN)8@4k_L6V``Yz4XZsFAX$VgmbsaSK=r{IfQ2KwYclv3$h5qc9!nl%%PTLs8P|Xu zp4lAMq!+Z*Ca%F9-}HvM!Pmsi9-j+SgdN&?QGt1q1KhNyM9izYapBW!m`SfN>Bz_7 zKgC^?qO0`qB;)l0O|dKfsx#8fASq8s%9lw=tRzGO5-aGktlh4C1j(qXGgN9c&#*_t zkfX7imu^nF4e(f+>9}A%A%~tZN_JeLoHfQ< z_n@Tg+$tN^CQN87;Wcp_Tm|W`F5CneHv0`SGv6g_A$aPr5v(1Xts|c^4H7oOumDON zuv|_N%HGVG0@)R5y`B=px?YoV6c7%PJzYX1@qsO4PbWgbQ>jYG#)!RR7fgWl91%F^ z2b&FMaYVRB)G&QNhcWOJaZl!U@tFW@c_gKTERc*fe+_Rh<$s#Oely!uC7iHzN%v&$~ z8pB0#_OLY=13T_K0yx z#m6#<0M`IIZDn=C!pAt_tOA%8%tlXNceRT)7b-941#XJ|pyHwkNF`Tvfn)0&19P0y%I8cB4E z_9HNO>>)Ii*fe}PFA6@A`KWx54|fv8PV#Ws$2v^G@G)XG8Ma7gcw+K`vNsP|@}Pzx+}X5Aa4UUvFZ*pHzmQ7bvX^vwFX_4{W|g0Lo*=U_p*fk^4GSNN}9KB5jjN*jSa%fp`wv3BR3?Eo8Gkg0HWv6JPkM8>hjhLE+e5l~h1^4W zDQi|XJ}bVdzH%`~cfDFdAX%}kvq|ne)DdS0R`(We?}}yLYYYI@o>~z48=h50=sLj2 zL5LwEGGj0%_q;qrrZqWUk}&a=on%mBEpw1-ciByye~*J5%U$f4FraP1P%Q$TXPwC41=#Lfob#;XSI6-dsM@yAmEJhtg zEbZ{tiQ~D-#$IKj+SHeDN*Z%9&G8TKo%m36s+^_>t@}gb4MhqVFI`l!prlW}BB-{* zetMIjMOXTvKJNE0UZcB=S2n&>>?PgmE`1?Oks&Fv?GTbOF)ORe%XEcza#p6U=~MTT zK4UNGbM}(1W)af;g**>b5h;h78ouk?(iNVDy_DCqm-NMZNpIdu`jWk*FWpP}^1Y?M8uUeeq5lD;V`-R^sfnY99LH=#yIkv9gO>kH{ppxu2#s9RaQkg^1jQ zxv!;|m0SWT_Q`y6Jaf3tEjStd@3`NHAijyIrdA|=|PhlF=n`0;?w;KqC9P9 z#7-$q^Z3;wn78gd$!E@)9f`Mj(P|63RBKLwB`=y)tnsdlBj7yqqDMe+o5}f4FIl|x zw{nO{4B$t+tB4CX;a@fh*G6nEL?<<~6I^Nzdt4w3E8RKZH3s#3hm)13iDc8wIia2A z>NdAqCo8PLjEH?9WF}|5^VZFlluA+((+HWvT}PmB2Ui*P>GA>k_p$Mv;`d|6tNtTJ zaa!RuaH1!RkgYk={WBm94YMD4p$n9d%AXPIblw^U17~?oqn*eHiR3KALL?^Mrol&% zAqMThnV2QFErA&BXkwE{6%%p6@^?c)_DHxmWtDL5oqX;NNZg=u?<8(epW)Hv&Rh+P zGp4dr_Sl7aVNU+pfjK-VG1ROK<~Sm|AlVK)Nd~#d&^Cm_VoFYgTY{@AXpP-Ysw2>a zS0M}!AWQ)+mC9ja)1A&?ViK+FXT?D!L04;7de%hdj0i-gj^^G(Jmo|SEr-n*9V>p+ zfZDxr$lBjK(MCw#%3x$A55kBWdjM2d2PF@a70sD|$uCPZ&Dr%Q*;h-7`1f&AO$Tiu z3DnD9(+>Nojk&vR^rM7cr}w)P&E7-B)?(MPJRydS``bvk9q*B`D#X`zhDvloBdCTh zd-7mWJsBb0lJxo`dh+EHoU6J$kRNBYaQ}ydXVnku8W*2g@8&R%c zY*yJEtJSFNQYG1xDk1rkQXejBA(Z-BO6^b)JtKYQl-4d;vP;`0-ybV5N=W`_c~Fn1TKe98`)Ns1e7oR0<1cd{6rZW3T)o?Blsh4}dtdGpegyg7O-`zUYz1E#g$`%R_Dn-8;Z=9S5sf$s}s zV8CB@zAMYbbG|merC1Ox=K0;g59JH@cSJrey z#3@DcTv(dCh&T*#wdlH(DuJn5N)7DO^&8b8$|wLKBu$nA*vPf8?`%l{Vcviu7?Fdj zXNMpo%^T~p!+jb25h_z{_o7SWTtD$}BUo+mOx=%Xkt^xH33R#J!P0xi3g2x6H zCuLAQZ{4BP0Dw~pI@V&l#UGtg6pT(QW{&f`Atxs5$ZhiGt#9Uqy3e9d*9!(j z)`*chEPUbur~IYxZT=Wrna;Qqd1Gn#M9u-;y8q%-Bb$R7K9}#$-+y4`m?8Ul_3Bdg z3YfLC6W=8l{9yfJ8eui^@mH~ue?2pVEihM;OT^5|F|gDURZ^z(mx0viQwsg&c+|eS zf=;rRZIIP^ofYHCB(jj@`CWT$T&Cz0k!OV_;v67cYOj1>gtPI%=2y>gG*@)QqZL>$ zZJ9rC-D|HO(~>;GMM}B*-I%D|Qiy=DCO+};Wa!ODL{>+3ns`uQexG%%uOIV5vajS> z|HONfH%hTjd|Ygmh7Nt=y>CAM#Llm-xfZSGR|W49%jg+HpU;f#cbaf)V2pS6oZD|? z%epo8`_FlAZ=t>?KEAkh-5b~SYw1Tp1J32f2&-`$pZNHq4eMU}_&EL9W<4ss%wLT) za-&pYd8@Wt<+zlu+9p-Wu3-k{3(6WSJzP)}iO)2O9*{y&Jd`Gn@W&=}a-vTjkiyW) z$e-QrfWGxVBid`b;A(xdin&f&YDIg98-_sSs52r%w)>;VH3%w4HMxRnw=p>m5%hz~ zq|h%kD1~|)#X6r09Jw>uCpE&YSla2?GciF5s9iVOJwJ%4O)fiyUtte=2F^Ohig@$2 zcNFN<#ju_IV+P%^9siacNxhg+p3ENX<cVmj~?Ld5!&WD>E={lsp$A!l*eT^KrW-RnEwe-^{WZ2X>CC(F-T zIp@4D1eJT2Yeb2Tl`dn0vX)Q1wfFODFhd8=ds}O=$H)y#>=L>dqRkW6)ntm$@tX+il~%X|7Jxiq@@G^VHvdd8BMqrVS5w`6YtJL4SPW(Zqt zoVR`)R2X*KhtyJFzx#wt+7v^=W4H0n?z$)l!wH89BT-9|2RLBJ+a2ylvcA=xg8PuVF=Le!{^H;G4vSfPrL1wd zY(5)_n_xR;w+8ZD92Aq0!RA0@(h|;sO9PQ9%abMP`qAqTMn2FIAEHkQbJ+4Ot0-o3 zgGrLJSgC^T#vUFqIC#0HG!!(!h)!y^|68zE{FaC#wdkZJI3sI@ zCAnS*q(~45we%xhOgG6EAj%R3`802V2tN11Er~N(`~otrV*d5{#3{To+cMd3_9NQ` z1lh0N)0(xvWFHTya2R`2i`FKtU6YlbF>!7m&byx96w6oc-?hPb8+h z{cfMG<^A*byEoT&x8EJKdSCXte|k<6fFClF5~%25^}!R{WJHoDchcCd;D3*u3i{GVq7so^aR?in5r&u z*RWog9>+pL8-48v3SN<-o|z3%lk6WccSWA0otzt0NN^*e=hY%M_oiJhl8bdzg03j#Pn6LhR-O^SpRjvr_(FUViFtGQ@>FOFZ&OVr9W$S zKJzu@euLE!hfXcwPTThb%j@$sTSiEZu!sl6L{1gj)Y~6BtI%u*mK6HEKH0mg1t!85 zuy)_BB66{qh^_@3y~W7p3`16d#}39uPg7xdvSa%;d})VosWFq?Vvmt7>~a%cVq({) z1}{x-P#56hb>QHTGtSp{DSUlXtT_QWyrNU>K$;rzFoM zYqR}u#>am}WrN&~7357?)NQGv`X`UnqJW=k04)A4ASKBrY^{)8upJF8;$3`%Q1-L^ zlF3oL%HO8V_6aLw`^S2o+V7?GtAvAs2oAkoDocRaXn~!wYP7sWJ<|n&mEY2yt>kc+ zaz~1i>;vDjdw>+d=rxueDpf#-)5ZHY>{t%%Qw<|#>HD_QJ#bB=0FzLzN2``zpBPEYC>R_tWL_GnM9--#xmwy z(26llLnWpqbUYTKv~hV3`Hlf7Z@pYOC;mdk-eoGKC?`fl#Or5B6%sm-!?P|gy?QoaS4x@7XNO8>&AwEosu3cK zjr#3PGE-G*&z{2QIg^#irju1Ha*N&Lf$5pbtgA7*1D$n?WY#ea>xW4N%(@1~cm!eZ zGF+gYnVxhcohg&9*kn6TCS8eyV=?)XNvA1JuVu}>_T@77Z~!Kzo15%s9+f#FO)dBuO>N~rl{hekTXLOb=J>BrHlbzI5 zOVbx?y354k3QXW(;?Wix{cqW$WsEsh7d&jprOR(m`u#oLPkQ4S#hEcf~g~_I3vf8>2 zMlUZLfzk1h-`y?gd2B2&>y0Zm%ftOK(Spa7SHf?xbjU6o)le3Np@<7`oBUDetJ*+r zlgF1P;UF1Sv~cFnS|+DdsBV@4FT;mc^-{y5PX0l~R251t;bCLE#fQ4uNGV0UNPo5e zb`Sj}DstXs2Lxg_D#vm^5#feqd45?@vbVA;xi=L4$R+!+uey@0(L1oqn8E(Y8aQCe zt9&NZFIfJ!c>{ux_T+K?$hP2-?Mc?d_CQ}-wde;p$4ngPwWm**A6CMAs=ePCA5_pS&a!&1kR4hJ3 zzm*xlwE*3|COp-2D>#kwqV-n4K^Bg6du%r^g5en%|Z+hg4LC$A|Ooa@1 zy6op)$WG7QU(6RCLDX|tM|vY+#a4+=*^wQOG6wX7{n4$Rov8)0Nqil|>zjE<@3hrR zM6tDe&fMA8%)ETsT-LK65Ytxw6Ukx4?q15%ianxUYC*)m{9aziJzK7hC*)(T#hzqK z{3?mCBP(QC3&R>*xU@TOyn)z*LPy9_!Zh|wkUX3~A%C1!fO{yH8DrnS{yFIoQ=zLX($OQi~)vRgtNR;C3&X&*BpQnUTu zQs{#_I)8sfpdU9`p?^dM!;H@FF%q5{ourK59!6$QL*lF>-HipwdmIF(_tP$sy>&v* z-P6G^w(Y4q_)lh3KGBpMOyArj`4ofqi17P~D8jV4 z@q)|nhtyX8UsRRZjXNKfV#bwgbs60_2jjV^ZoGFHVW%6vBu)6Tv(&Lv%Dt!46mR`V z&@y4R`x5^-c5in$KKvGG#;9+7O?z|KiS*`w3m!#1FKl25=ixG*#jgboOtuQCYW{Ifv;VYOWlWOFT;1Uy(pwehwE8FUq z^C%2P9%LlkIMMUXv!+I#{8{mu1`{fX*EDGeX@PjnQYVt& z5;xfF1{XWQc+GMR;oKvx^^()G zQ1V7Rx9BIMZqmoNEtJQuB62(w_Z0H;?N##a`BK;|e8}ZxqLxf~o=^t_0y;yp?FGLd zU67oS#0+B`r9X)~PX#sJvx_BVyxxG0mH7QYI%%W*BZxvU`eix%dpPOdgXM`z{dmJT!@!}K*Lt zUyO}=ny`KMuapLEH5Va4-dL-Q{qYKUN%3}>1hj&_8*mj=Ozc%DNkaOtn^_PWdV^*Z z9dpjiV)OT~bE%QuKTj$?hSC#P$VS%)Q$M;ymP2`ojXO~?d`g4}6aMU8b6`yKBUAQi z|KB_Tgkf3TERY#2d0esND!zr42%E7pbP9fsK$BgWcjJ0q$-$bJI`9i6x%wmZWCWNJN1!Sl)7ZsGaMFaHVfET$0YkRd=Jcj{>bNZd#Y@>wxY+m)H} ztufE)%y)s;+)qWX8K(LvLLbbb4m*@Y*={F7}9P-{u&L6rC2r>1YeUIJ%+n zD#eoQTa{Nu@nDNws%+u1I>t%bz5lW7Bk}D8{IHmNG>CVJ{c zqssas!Iuc)LEB^D95@md}Q)i z`gcnz+VtH+8IWH-Z)B1k{lyYt~K&frC;R}OOtACyc zrIu-A4oclaWDZK*T%HG|u9JKYN)1Vlf*vw}mlK&EpU#lFs)`FkT&!JRYLDeLA3hze z1?&SpeSFUz@afY3G5GX{yZ?jmY3COSpJp>tyO5~q8kvJn=Mb5LPbYpo4?Yc-e7X2E zgvk8(^zqNK@F~e_K79HE@uF?NSNim8GImR!9(vH=Q|+C5#HW9w^-dJ3zA(h;sGsIR zrh_yx2bp>inS)Gko}34nUSZ;=kSTM$TSt6;eEKyh8T9E+Ui0BotroBk`1CC@c8gDi z4;Xwp=_miL_+<2n-NjDy^}aCp^gPqF3vt?@kvaJEFp)X045ryWXA2Yd(BBNekEqeCkKWZt>}yUmJXS{XJmm9$^3_jh=H0^><*J)%9 zK3z^^4nFxtTYS1_iNU8I-S(e? zPbFU@d^+*J^5D~Ojm*KPAw=fj(}&0B!Kb&G`1$bZkHqK4r$uyTzyN_Zxhw`r&^HK9zov@ac7?X&3tRqDJQ6(>fw^@aeu|^Wf86k}nT^sv|x> zK3yTzx%BBmUi0Bol@_oM_;fHCyTzx<`wTw4|NTAU)4vzLVAvN4rM}Nh?SfLbXk-pb zeV51_lsb2K9+dJ+zTETO$wcPIr-P*~7oYm`nh&4e|G_@4cTbYBTYUP#FAP5YBK9AI zPon?%h1o)#)|3aIzNV2m_;e(ZIr!A$D|ztgBj$b=eA-H6etde8lni`Y$!k7*`h^y- z5AG0i%%n)4LX(!>68Fz&_y9OO1QLr$s+C`1HG5 z_J~jaUi&BOi-b~VGgG^u)Od}|L8*~M=AhJ|(mW{DSMufVpFU{l4xe5kB?F(H;x!*W z{Z0$m2YhNIW4H8a<6Q=yF01PXpEhxK5sb8caqsVTgm63)nUm~T?re#&%2G({Pb#pRO-^JD|yX_ zU*~B7f?t9Hd$=DyhK$|f*T6fS_3!3x@XN>>{Cm->$zLRT^)qH}7sUFpM&=;aA|i7T z>)VIqL9A~|zFc}$O=Nz2I!5Yp@#zp=^WjrZEnpw$)l0Q|z^6-p;;er+?Gc~8!29!D ze)-fd5;C33H0^>+evQmQrjv=xL8hSx5->$-t+lc+H1TztaNt z0iPPl*e!i}=)auxZ($yMO6&77L;>SAP>m6y&-;mYSr2SUAhcLjgdDb-#vu>MPDcM(Rd21xL00se z#9%lKQ#fh+U6!{M@iDOsCTed8S0Ox!XvhSbAy!X|0Jfmgv6zI6RdpFcR*Akuqj4rp zLXvATi*U7f*|=}^J)@wqBaXd9Rp<%L3`9pwA}$aeH=c)@CV7?O0_7jyaFyUkAXYXQ z6%pAU5iyBCRC+v*h(6_}b4p77?o2U7g`s2;)9RA{bF3YC)nl_}H=nSICB~oei!=w!HHxRAY;?RrM7@XKdj3v6qPax;W z=k4on;KSOTxD?SI2}HH8u=p$m#RmARR3*0M(VmhW8F8}HJis0GRZVihoz!CA&ZzGz zxH0nXGq_?qUg6ls0Hup)CD{C`{X-_6M1eOF6;~BpUhtob5kp6FJEEP7 zM*ECFM76hhCR1gSmOp8oM61ZiBO4x zw;6>^`@cuZ?7wPx^5~R)A(|a3*f#>$>tD7^qrLSP&{Hm2)jT?eGVG>f1W%Z;e!HW( zsMLckGqRbUR>O*Fd2fAkaOVC^$w}yUrrVntKNVod0$hz)$0=sMG>E&#q zTk5ZUhWUzBJWQ!0sVWA?u_dqr461DFb$EfQl|kB?LCNa2Qw!`P7Z~y;Ci4)PMmZCb zmh6i>8RQ@qZgo%`8*agM>Kc|vkvmM;*-A-KJLIgx*K9Q6 zm)a|@PcKn)_DsGBA=#`0V(93jf(cLxLEaXIz|hgV_)MhavFGU*g%ohg(yn>ke`t+ zJ1erc?)wsVBR^)r@z!640)dbM`nNUIO9+(dgJs%UOmfo)XH%@{gT)M(SxXu%vzCZy z8R-Lv;GOd`*OIFwYuB~pVEyhNSW9+M%U(Kw=6LIWPFEzv@R@I9N3wUNs=GjAEkO}O z4S1_CZ<&-JnmO&!$73oxs)dB?n*;+P7Uuv3hHdv-D#W6V_A7CD=qa zl+MQ%dx^Ee7?GKU@+k9R#q84AbEaKgI*+#^YsL6WXU@XHObARvXR&l%22p9jTbc+< z+cSS&$kxKFIp`N`Oo)Ao`h#dBwkJ}nQVrqMdeop8PT%P)V`b?lN)YRqD;Se&A%2c@ zrZEU1S%|E{qMje6MA+a;9+jCXaRo_YtX+&AC*<^%?2(kb=Ibi?T2u-p#tgZ) zUN#qrH%)Dcg!9~Ko=!`=bz*-E+M%tv>{`zqBGUIwvGdN3QY{SxgU_VHxTKpejTTKG0XkBB)4LjD9Jr8+yeUulX9s^`I$*E3P*_PkDX8)64wS>MD?b2 zLQzq&FZ6ATeJiD>N=WELA6I5dm_iAzjtKU9U3h7kDH!Y3^Hq}x{|38_{?Y;|q*g3N zsQ%I|CL^?wIh@uwS!?Wdnf}`-W`9~=>xC0ZmcCy6S6H1}STCLa&67ScGktr`_nlLX zecLp=j{b%f+4#lf*Qp8z&NebsIA+M)jZbjS7yrj99B0o|7rpIa{eVFU<&YE^*7FmIOpH1 zGv<3PKKUd6Ui`T^UnG3$oRbHiIy5o|pI##}2cOpT$%9WTBwsE*-AiPCd}@@sT>jkk zyynBF%d~)fz^5@}>=vKyxz*s);8_{?gng6IqSM*D81k+5cAWR-ocEq3GggAKtanaQs7?!CXHI>YHVCnN zG+|oEnmsRc78O4f_bor`(yOMm`5vR3x8x8#6p%RFm@mc2RkK2)XTcho4C3n|EWR%A zb{mLY^#kF*DCZ&3M9z^diDRJ-pQU2K#-s1|B$|DAu^f-S-%|wf<1`+9zo!X4Lon^j3DZuZ z@26ubMhLxiVsABB3No~(;*G-JkykOfG{?c@Aidc>SfiG*tsOvAVxYvwFy;2sD`ZL} z4^4tSYT7U~MDzcRsiIidKRHNK(v}w6Ns&%#n;~Di3<9CgDg9I?7Cuy37{zS;RGBYg z{Zn>K|8Deq{uhaUpLS&)`u#PH%%R^$5@}`c2YU3#L%%-)5xUUttwiRh-%pZ~LBCh> znvZ_}LJQaj`n`aRfSG?ku;^w(zt5YVMZa$q1dHU^pO)--e_HD3tM0U--;<+X!$8Z~ z=ZW)KaRecXy1Dj;Q~TlcdEz&%S?7t|{2BA%mKI87Q7{J;mWC00n$L!6n%pnJmi-co=8YW$?H+N1_ybDSzeq(e{(1Wa2-sg8!?AN&gsrv9?VW-0vopxrK4Mm%}B=a)&=k`E}ive?@lr z7dqu(7g|bhEtm;*L!N1JF!($fy;jJCNq!vUzSa})A;mniVsbn z7e4%PT6g&HC@C5E@Ecyc$A=iHdGR6CZTa8IF8@rY{9JrENekE$K1{mN#fRY%1`T&j z{g>jyxzLB(mBaTr(FZnTpAUUl$3)6cAAU_r20q-$YxnrDkkq{RaCx`opOIbuSf~74 zd^lPQ*b_e7cY})$*GU+BNM8Ie#fQ&*y=eZt@ZsT0yTgY&NXfv5D6ie)!&Ri_#fS5| zEq_dQ`Nult=i|E54TO}4j&ef zl7SCb^4dK<1WC<{4<~n9{=wPh_jk(A#fSHq>B0u;em{BpwJtu)lrZ?Pa`Jx`J}m#d z@S*O)?(pFXQZn%2LSDPahjFCl#fP$P%kP(6{w`*;l%I9FgAc#C zpc{Nh@rO$7?|r*BSvTpO)D-7FYC>to8M-OalU<0*UUKih{!RHuEg;nw=02&D8JoHS z78}QUpVXm|IsBv7h~)g3d7rfA?{9TA3ARG=b>aULnV)~uD0OA<|9MsXTLM>LiFc9|HF*$f=~BrWDY+4fXEztn)^;3 ze3~iwa`EYWBJ<kR#jjT-hUl5V@s zl^*h3e!GZOh;U)H|Lg>!1-bN7zqbdGK%Iv6CJLxdNDCwWiLSgK%r%>Pm* zC1zXUUrjXpD{gu0bxbJS<_UjnOfY&%nIFdr!-VfNNcfjW*!PkyHNp4VCTS%iWmQ5+ zYVUKET}OIy83GW(FZ9Q6k%#;l*41=U{n4M+XvE9m!;`1E%K_!nYt`h)I)9Hg{5i`$ zhLnz~Qez)(gnfuq^b7_<=Wt6i$E~8LR&nEGsqk>ObR!>eguV5=O!#lK_}FqkZX?x? zq!xpf@*$OYn?Z5;vzhmUn90Qh;HR*fi?s-cB_>p9*ej~mJC$)>X=7SSu7;y5O=N&?qUzDx!-pov zrskX4`<)nRMLIfk3~8Ywy^n7funU2~-}y9^hkj$#USIV0@V$DknjDN&pm$^ov&4H_ zOYG$O9)OstHFip$%Ko7~rS>>xwOG`tU5ByLi;RIwxqOS;D@f7omR(sJ@Rq{)uCOaR zs{51`hWE4YAyuyck`LIwQ_4WE+EGFRQ+d$zbKD;KbFm;ydsFk-*>icSzsGb|;b&yl zcKd7Jt>JBk75RRR;E#$zPXMcM${6(&NnWKX6G}QJOg58hhW#fU=T7^VXH#o*)VFVy zTu3Sczzsx!H%e2qQHgJn*&TxEO^JKR;zsCx&d{RwgkzmZj-*$;A? z$W?C4bN1mPI?4dwRBBhzCmmHqg<+3clf^zHK2I*5k~om>g~TEqB@hR|KEd>@&C+2G z{Y#bCd6-+?`+O(m$xZq7C3d@kR*PImIHSmq7zHWv2NVf?+SxGyD3H5qDY80S)`~0V zj71_fKG0ii@>cjGI77sT`uhxyeG65JUCYXjUS)-$KI%s&>G8)xWrg-N+KfI((S{(W z`L3LkH`zYTgkbTg2L`JMKezv{+uLQrE%U9ES>g_fa2?K>s)+&nkX5nhZ(XI?isw@ zCQ~Ve53)a;$b{&V2IlN-X4;%RhYBkc=R7aUB5tZL>X-mQiCwZS5W98`v#Ch2W`=!- zqDH4Z%YgEg3{WZ!C>c}d2r|3p9jX6TsX;pvRuJjn} zsF3{6_{krynhXgph*nKqQWQE7EsXuy2ZZ-We%c=k>|f}QT~LVMvZx^9nU+*T~h z;Z8}hYX7?1>cnF54m5!d0urMD5-#$yv~RSNMdY;t(Rt)&PcUx;|HJrhbVt?Ho}r8U zJK_{v6RP&dzApjmQIX7+HP2$dvIFI(jkG|(ZA~05QLS5!u!gTcEB5dR?jmpU50Cp7 z#W};&NYP4f{FlZ3g-9{a8{v+#7z20r2j@)`PhVoa{PrfPDB64E261JRW+b>6;jS+% z3PqiRWfN4y(AdQc6|&_b42!98RJ%;^>G_u7|LxNN4%njKDGCl>7mU2+Z|&@f{tunn zN|SI7{$~LJ7gPFoL@*jI4h{$W_pH{Bds?fxUY0+vRsQj{U-q}|?%^+Q3wTf8rmn%v zo-NGo$+zBL{_Hiy_A~EuaU5}CBG0Csj$bDjg3r1rWE*XkvtlQ|PqWX6^xAb+?1o+V zP}_Rr5SkSb@$c8g8`vu#9G<|~t?^h`#Lf*L-njSVc* zb(=pvbAn~cAB&_w%u`lkmdKcA?sKkAMmcbm0s@AXoPGpLizR5C?uZwI#C|MlV zP2SW|v8gchE(Lb?c$xMD&sJvQ~m_s;zX>MzW$ z|2=AxiTMGo&xT_YDK5Im`G!4YZM>wj)a>^Yzt75$#wVsN`;#;5Nyf1N`u+Fy+9jYzP8#)eprCc%AOn^C{%ucyyR^->yy@eI;ut$!mO zC#V2iBb4to>~2~{Ta;6e3$)?IwOcJ+=go5os5GuGq|ndbZ>!mnQy06xSrM& z3vbY!|B~N+L2||>eG-Z5F2tV4dvxI^NcnBE`%5Q8Jq4V6qNAhXPi!0+6-0g8teNWz zp1fl$1%Hq(IJ3K*{jz~4yv-;AtfM8?Oy4&BvL_(5+C8lm&+Rzxjr;CgS8DBe4S#&Z z^)hg}?MZ!Km-~HIdm=j$qaa0D^v(EZU@s_Mu}9){QC1o`fE+4PDtX*9Bszo!IZmsQ zFFaI*GONOK=T2igx4~LIciPpV^JiWqZ_l;)UT~Bq({h}4$R|>g;s%2LLsC-Q*zd4M zAgr9PI)C}Aq4WNU-XK)M@bKi9U_9Hj!lp6K+5h5dHr=j!=L_{Uy@d?$YKT6YOgu*D z1~V<8_|@#pM`&iGJS#xVJo`-so#k{FN9Qfw9L^uF04}@d>72kM1i59wv@6RCsvF0$ zKC-jHkCv}=N?zb;@BN+jX;n(&HNU#D7t z(Q%u3vwx}yzc2|Wn=kH{gnCW5!X&8VSajS~k}yjXMw)~}%@-$2!g-poGp^tkn}l7w z*<&O9lok>OO`!*OK-b5H$D`!C!>yXzgQnUY8{SKOgZ?_X2+ zbwUci#-{LVLJGgm>+pOeaECAH@U&~-N-Z}m)!jz19iDQ9;R%MILLzU{$X*(`g2?_7 zd4)zkCk2EaB=XOM>`5AVheqB*tya_tWW0r8uvW# zgdg-1%Ix`-8@%5Q{=x~yJ@*h|7c5zS>Zaf61{XWQHqRnLL;R0d&Aw{RrI%s6ATsK^ z#7vKS=J1$(b(`l($r|@u%|rL$aT8-opCO4RIL!&RdCnr#j}p${IfGA6;W>U*cwXG& zCj?{7EEt}%d291j@QcSv%{A@nxaX_9SD$|NoHoz#gjkfvUAv2^6&pID^(EZC+OM5j zPMJqYnyL6uH+Ya6JirOYJwpgNoiWf&-`@@PcY|8Wq`+S<~7o4yNXt$SytE z=BXic9K*JNr+@YAs}7W%-SPFbU;4jsPG5)LPg)W^ni-`M(X!G39 zF9qDqLnOCp#*Zaq-18$zkeIlq$qmMwplQYtrWrR7Ni(JhPj#T@V&1G3;n19LX#7kn zl4j^^n|<}!rWrG@o;hy@b5NRrlC1xaWU(I1oMH27l!Q4Me-fC`5~i1fp*mh!*h1 zP*eY`Y2&4j7~EO2zI~}c#T&h1AUanDUV0^7afD3Mwu++xWFlYpGl2M|ptxr|4+oGc zH(22W4Ipz3ASVzBAY0(O(lrBlLo;2|q)WU=9Zi*SPit!$xX0b#N;kON3C2Ck2sza2cW(MpH~63v zZ1en>5Z;=D;n1}CrQf&|guaCsCTKm6nITApWCg16JH>&vfOA{9fHPO(`J>xryTMs* zaHbP%^PEdaX!}__tNFBoCltpY_XG(!fSy6nDQ|)stagGBc0#4ra{tv#h_l0J|9cK2 z1~=W|P(Uak5krV*^9+?w;+{b~oVDi&iQx}W_j7|EwU}5#U+)~P__dQrhINA>B`@)2 ztvKQQxihbsd8y!+7iv3eT4?6%t51-jV~{VsI(+G@6ROdsZmT$uYFF}!&{*nP?o>eV z5jXf-C)nn>lhEPXfYYxF3D$UiNQ|}o{MnEe+DXI$BI2G~`E|%{9YLoli`?LiP7p#( zXppsB3p{t44Cgn9q3|eU%HV$`WmqnJm>Ik8DIHAPAm2<%x^9<~*tf~xdV>Z7!<~gCF3v=dw$sZaCST27i zqn#xrxUXxQGIjUle31Jt=Q;QOdePerG%jUmYzMZ+IP^BzZ=Ef@iXtj3_sFZAO*Le~ zkMm`iIv@^pR5*{GZB}OmYBu}h$&&|4jQe2TYsN{8N_RGC67MqCVe=$bfrP>yIo?9Q z6_q5>aM}Gx zR}g+w!l-^eN_eG&(fwRW_%R8i{P`H+RT4(~a}`bH^3Bnf@<*!6iW1+UWNz}B#V}S6 zrYkv?s9l{xUb+R!AH8<8QHY(?tUTlG_ARGjM+#eH-%%A+0d+l9Z;+~8B~=C0(Na}V z9W_-2)zMQ`P@fS%(#ohJ@xg!tuaW0yJP{1+qO2MswzB4?!h*`iUS-}o;SZeB(_1eb z@{~EZlzBH(Uu?l45Q-pFQE=g2Z-S>sq|^37#N`=}O0V9US=G_VSba zer~;a3YeVRo9EeICN>$6nFf|udI$F2m&vy4ggs0)>PRD>8OJpvq~^Pojez?xH>FK9`2W$bh)p3m;0(fo6jbZ2vhl3qhM3HjK>4=N zK~y-OaAkD-XzVrkQMrYg{Ie6^qIO?1c~5V!dQ^IUe^$kGOa;Z26crQ{3lQxJ1V*aF zl4mR?3`5o@?n7V2^kh&5PTJV$YhmEdZVa}H{8wc|u+Sg($ypRDnLZuAM&DYJ7^`(W z7_29FcvPgTzQbGh7&)n7x&72|l$2pxCmtZi9(SYq`d&Q)+_1MECwr!KU2L&MJy)~8 zlDj}ZOzlAA4TNnww< zu>I)=N%2!X5zfI5`%LhhwZTUbxou1C&)u%0V2tn@SJ(^J^S+*}4sq!P?76su25_HF zto~ub5F!&!`=8xPMfvI3lcZ$K@0Gmj{Fb3*)a2n-dAAm0qg5dTl!3+&77?So6@-;% zSV|cxB+41FB+F-8a+K1a>~{3CPm#=qN@UxANHxYm><=cGP3-|+ky+vLM0I{#z%Enn znvgjhVMQj4;5m%vFrKA6OL?+6=b}?pzVUXS()T_aBuBd9bg0J}733I=5M4#%=~lx8 zi%U_iJm*fd8&7$=6HFdIe|n^9er4nM1r1dTDjRR9p${5r<(HR5`Xaw=5Emx8-shzF z)!c{u3*r0Q*nb#4l@CghlYdPwRvRcMIK4Q*^y013f2m%))$K)p^p*x@sL)!1VsnTf zLuxcF4DmGg)t|%okNGV9>yCXLO)JQdU;Nkh@78jKav%E_l-(sgU)3|GPqXgZ&GPcE z!H1JSE4&{oygmM};H?||8T)rH@TTlv@1$APk$SyP6U$3~@<%w9?uOX6kirtSN-R9s zZ&t|?Q?GYrj-5$kIU;pjG{z%%lQRH0#ePKUU|>v0@Mf7bDbb3?#FzwYe1$|t>PO21 zTfRJ`;x~MAUbU^f9t$vXXtY@CnrM-MGSnz(FO zVW^*Mfk)fDNtGD9s6Q_;rS=D9tSRhu7dE5;hTq|_Um?D-=G21Faiq!m+9E*9X~0=* zjEn}b z_u#RYYV6&*xzF4`+)F&WAjU@QhaBDE+7D?YC1d|^J+Hcdm`GbPJ4CyG3aOQi``2wi z?oGztTQ9q?npJ}P9C9xdD*u1d*J}2az7{Dw>z~@s7ax_cpDm3|_w%92aW1|ChJ7;W z`TP4|QZo9xKd;^Q_d7>we>=Thx4~QI5%b2M7b@$lUsWQQ;7tC=Zb9WHVa#%dEHyYH z51CiyP<}ixb4X30;E~DG-LBF5d+DDcWXjT)ff$H1$!PoI(yabT^4d-Rc|*JE4c<>S0aKZ6Q%?m05<(#(_W z@dDU!=J*FgK&E7s7LrY}`q{%JBa5`06Z26l>5iUpm_ZVHz*U>iA{}Q+)zd}exx)}h~*jN zV;L~Cv2YKnE-smDWg z#B~KEW2w#X#A_wRZ3|V^m5~{FqDd12;AC%{b-1QtA}=4y@v$vjd?>VR156P@z8*bW zGxnA-PjHax?3BjSYXYnfm7}v7=yJ<)T4PtWng||sQ zeMHxhXi0v+xl!T~0SHp;gVK6MRQK~8tq#v?*64oC?7i7^OLV{WB-vz-wwvtH zc9Sik{GNo~QB^xT((JY6ibIs=rQTZdK95|Y)i+eueiS}98BEy=ij8hL?+pGq?Y<^^XKek+dXL~3U`$SNOZ`?p$=9JOJ4 zqU&UAOneaVEnlZ=vA1@X%0lZz>@kgeNqs5JuR!i@L!);J@yoWl>wQo)eAhicx`H!|5Tf0WS?t+599}GgH zGxFToA(%xivDG}si(U8d;N)qk@eu}d4_|e!KUl$=jQ%a*vFH9x)@nM;_ydJsnHz@} z=d_i8f%ITzoF}>Rv1|k7m?r93F$tYa6e{+&F54(anvvD@GI+7o4f2zyZRSU@nb44F zPBMk#O!>@TEpH(k@hXT+SQ)9jjTRP7uv#A`?G);&h^^M2$m(isXL17}HJfRl-_2$} zjOIXPb71%vp#d_0Xg$%s6ecaj_yVyz1t3_NtP3!JY9JMWWgKoncx1(pdV|Bi?*99z zd|?lPhVSU1h~p`)j5*MADJ8d>Daj+_5 zx~F56emA8Y`_*(+DSN`Szo$=>P(7cZCO!ZwD4b#!_(afG%@mqJ(Nv{Q7%O56Fl1g* zXpi?~%~$z75F4=ZE;$5bGXmJd9>_!2-mG#DH|O*MK4A6zd&x#K<((#nO!us=}0CoLWmtX742_1@szba}!H4A{Cvj-?` zw3?ru$e~^#H#A(Z(L1EFwIVvL(7R6=?iBBajtV528M=;bXhiiqtvS4JFe)n6t*R5< zYEC&omWirYrSwf*OIK%?-h>Qe?c_W10QS|tu(MZBoqLr(Hk+ayQ^|h@vF!+r!D6%hIz5xsB z)RLf^==aSiA$mOrP7w-_^`Z6kGpEP>Pspg#MXn$T9Xlu+g69Vc1mQz*uDs{9(`jP6 z`6ZOVY-Ot1`^B z`DVKFCR8A;CI`6Rv1g(3(Y%!@eOkWE!=AWDyk8$1U#17{;=Xt3Uwx7*Vhi(nu8<3f zwwrxHQieSRvV{el?NouepMep-#k;%$S{A?iruF}RpPke{)~UZVU4KvDmeifH)Bd~f zGtUNkvIkMv2^JtsxT9V+6RuWq@)Lr;?DsMQclI8MyZiS`nbq2c-kciQ+)>|>RWyaq z?DmA+@2ovhPwnh|A?s{6?`I_X_09pix@|~|(cRKx`%#zKBtx`zrZt3A^UJ{6bF1Xm zoC~lqlzVdW#Rzy`YAs{2vO0JS%^gP`VHMQ_EP<5h`l0>lw!M?2y{XzBcB#rPF@-Cn z^*O%K&H2BL%x}_=ZOg&Mw#-R&z8i5?%b(!rq7*y?gbXk zqN>^Pk`s3V=c{`OoaxoV`UCb1??{37K_+Hk?E;^L7$}MYYp44x#5@80yjd1vo`8OV z&qB--(2okwm{B#~CwK+=dGo5KOFcXRJw|AA=P$0r(k?GiQq0l;_^0gz{DV4y@5swN z!+(On{|U28OmB5@5`*8Pz_-&Ko`86|Z^qpD3;<6+ydXSp-rV`JjtRtqYv~V9KwL3% z&XpE^Ocsyd38-`SR7_iWOyd!BOAw<3z;OU5hl8Dw0$-`Z$E^gT=T}vYSK7$Kc$+D>*G{Vc zY7ePCCI7ni5&;{F!Mo;sqGDXTkF#1b(W2uE*s92qj82GUsBF!i48nSWzcMC9@{L@TjVCJ)%Vg`DgjU z`y~fS*;dNFV6#Gd{M~!uChrN4Up)sahOx1|awJL}@n?4Qp1)TxHm+l6b4Bgr-kY1H z8SlmGXLwKT-`xN2-uwZ7kb~bss+zQkI*)rQ@Ce_@zv{ryrzB^a_k{HUZ`r4T;oJDx zCW~9gyL++^9*vLb+m+N^S^IdXf93F&s|Qp@o=)yp8F{ht@TZe|RzzBcz7X8LEf{%` z^ZB!)gGKsetH;d=;g%3FRTkuzw8wKp2jG0p3SQ zdWl(@xhQ|HjJ#hN9XyyCy*0;BIvB0MkSy|)z;a~8@b&W#$EjSKuNeM%=#VzKHY;7l zjQWbhU*LteHc3y*BW7?eH-PS_7``z)11YOwaK5;tV>1?cT!QX+g3bDLEf1kTS1H)UxZOM>he=~HW zcg_0J;R(F*KPvb7ll~g+>Np0Gn>=p~o2ZWDc&YVt=uB!MG!M2Z4Or88n{Jo<@)5$9?VVNI&@GPEHDd$4=(}U#G1Km%P11b*J?>))>l8Sl*k(1X4I>d8& zL*_*z!nMBly*)Dq(B*&D754^M0K%UXJDKq$`og^>vQHlPr!!<@xY_)Y0>TMNE+r{6 zd{kd$r0#g7_y^q5+(`VaNBdD{)HC=@YQSP8&?$bFl(+u4Qz$ihtTabceq%-*_ARzr zMONY#9a;k*p**bLJK?`UoNW{Sl`K}{lj7E}EVfhN1mF2G3N ze>)qQyI2(czYqvEzUe@a-TF0|t)J9m>znhsYyIdzlYh>%`HSc2wvE>QeaZKfQGWn?}lnJ;w8EM}9~CKuIYmb_Ck@9LD9150ePuB)QVvJFj; z%nSKr4AWU=xZ5kyx|oNLE@o@WT{yMNcxw*Jmz`Om$%!hg&|?stDpwq>qQ%3rV_ zO353TBx0DUQ6W69jJBhI%J#7m>F9haWvBnxL)gK)!`XY*p$Z-ApNy*3rYN>kOF z_ldG%%F1t%^IIst@v@R!@&ZoYIOlhw^E*X;y=%(yRuMl-g1~TpYZ<(;%;zd}_6ZK} zko`DgL_X{Jp>V)v`D|!2cLiZ&PZ*PCeNQPrsR0j;pf}6cqZ8X}a4Txd1y&gVJyiA_MNK+`h9Cxm?)ZQdqD(sYdu z)YIU1iMKUeVRdYotBeG|lNfh6-4_M88!D3MAZ`(=Xl=+TQ!ep%-*)}=xGFS8w zlqbxZ^F-JaddUL8r)Be!1o_i7=zc~(jq^mE@;^KX>?=EpAqaOp%JK#&hjqye<~j`lva zKN5I3$MBqN;jM@+Ec_-mySGC8d^I`+Z@{{k&NhK}dnb6`>Jl&L9KaHI z38I4(YDV!Ws`V70ZAIj$KLYV*xDcGlAuEN&x4XafbkXM=O$n1LUC!L^AA$~L)?$^b z?2a}x*QYX<-O*0>EflA3A5ZM?OL1JAt>O?n{G%Alo^(Dx`a;MdC6BV7?E#*v1ZV$w zc)tAn8^ZH8)Ahdq&#Z3>&pH1cc>eO)H^k3+=J|gCKNa5;o}vF8c>cJ<#gFBuzDm)C zd=dA5%u+4BC9h(L!c~gf(c`kNOZ?U_AqzjoP2t=g{7bww4NS;*Z+2C$VoLFvI+?si z>J4==`HMQ4ys1tmZ_lMvXF^%B;H9daOLA)BA`oclYo_iTmR;Y!|p+ zF}3YNz=@)>5V+djE`_h5uq+SX-|pgX7yN0e)c&962OqY7LwGhZQU43@O!}tql>T?% zdFG$r5I+wxQU440IqjRmbNGJ;p5OdK@Y6+}yA?Lktvq)NFOcV^J@04kWXiYaXiiV^ z+?cNQY5X1Hc@-n!Rz!zexmKKgQNApF75TQ=MmYP#9QvG?g->q!CZg6~pg+pCNZAA2 zqxFDyJ?lG4xEc{Jgr|irpb;7fziJvkJBVY?egyx;*pA2~$)iNZiL*I%j*;YLC?6>% z-&8aE9b+^YS!*yNYBt$6Rkj2pXLF`a_}@d>Z*<}`Bl*m7nqo&n3*Z^XS()t0Hk(3V z)F6~tZRMl_~I>g;$w@zySYf}maQUy8B3>7|6o4tl7@>gh0T}EegQ_7$hxsiZ zTfZ#8_yto_Sp4muWTTJsr!M$gNZD@jcQr4--;2+5#@~9)=?QW91Zob08A8A=X#U;VR?Q?k{V9lUmZ~*+#l4J$r1M^sKx7{E8CY_UD(ppg&`~ z^k?`^`*T6p`mDTBBz+QvhN+O6-Tj-)d$CB|!W*HBW@x%q_P3v6xRCClRk!A~`&+HL zb&L7i->Jo!@4MRWHZw0QsT8@`$*AcbsfjZpY27?MP=MQPenO^TuJ&W4iOl^;X1oO% zBn=AwvfditxLjnIz3R=@dhe<@he*wfQRrH~-H_`+XuTxW=-1x|jmq$(x2701r1*xW zeEt1tSAT!{K59Q6zK)~6pO6HOpT9qKA2q0z6L*00=e50yV2AlpvmVzh7lb=XAsgrA z51=W)ak!M{S7kF4LzfSQq)`mP_VN8JsEiyFj9voElXXlW#sl-U)>ApY{3Bqqp_wn@GxPJ{pH|+3rqI*II z{{*8Ih;ptQsjL>=Q51L4$jxeO9Z_T8KtdWx_s;DtA=p<-9oACz`{`;prg5s7P*1IO zJybxLhq{b_?L@=z6Ia7=Ng{4L-*Q67v66R9-(c*lTu!t&oLrR~^!m>N+L)N`k`}LI zy*?L9<^Wk31Iin$h%+vQH-9?_b!uI1_@Z|8XUYvvQ@?aMhG;Y|Gu27RoYH}}E5<`M zx7i(V$#v$G+zGL4gAj6t0TwmfW}<;xe?=VEW@*LQh z?847oeU58?+d{W1ja z1QzEGWq0ERD}w7J$^fEW8$d_@G?TKeU7B5^4)SuudN?k3Vo@%Y_{i|qoK7h!7sK+l z;gYrowJfw-EVw07JZ+S0{mKaG#DUPP>6lzFIZCBS6Z3r5+^I63tpi_d*tu(UDoPFJ z6UNY)(e>%6$XsKBcR!bziq#oYahXg-reAHLw8m8A+n5-;d)MHjKQ=WJc{NsMV!kal zUS?u}q+K6=>z(KzFtRygLSB%R30ZAdrh0SUM>1^$`rJ?`U>#@78JamoGQ+dlZWWBh zVpFAl=}E+2*8@0;Mz3GN5srWwz8bEe+17I} zY!Cb#dh}$K?%8~tWeaNkE#m#M4Z=q<*r(YdH3@^P&J7>v5JUI`XJEpM+o~zg9IrRW z2m}tXY;oA6-~n$>mvs7QktvcHJ|h`SV&MQU)#uQGZcjEdF523j$zz;`L$V>MPwtmd zJk{|=9mZ5oQ?}^^vM}tY+^vx73Ca#5)Ig#b|o0+^tk7cPkZ1K%~m!D;WM|m~j6c$uVj1dq#cb@U5Yfq>np-%QtKj`RXHgC*$sA z!*68mA>Z8!04+$$M4IOqz#7Q6wE~Izkg5AKloXz7(qg@7q}DB!CF7a3*sysGVo zRFnoVW50O4^ffx*$Rn8xRygF$3l{C!M|0!^rtcG7_n)V9txxr7az&BZ8wl)nS+0HP zgg+Y<2bE=Ibf|Yt?kWwCT*}2gJ9>roOr9ZTLL|fA4a7XZzyI`{(k7NLYI}ZYdm!;R zlLt<_-i%^oBvJ`-SU+kwnjOFF4l&)AXgA`4hx>r}d^ehpZ zWGGYHj?^ZT2q+nw%pmh6rQ^(4YLmZ^4bDEr+&`r92=;@^KAZx$U~hS$D{>gZ=-n_c zD5F9xo*$=^Q8yVI79vRiHP3^>0|#C_^Ysq14+Ig2t!v{dY16Bv zGP@_O9wb1llMM4vQp(iMBMpbDm!F>aDT|pcrLHhNm&&)LigsSt7PV|xm$UOyjkZ*) z{Pfu3$e%nT9U4|NS8zNq_i~W?5cI<+y?L~|0+{e#uzwjm-C3Hg6i}}cv>g@|_bIwM zp(4d_J?6sxsqtbNyA6<7##Rbsk+;eTDY|$MX>y&sFx$5XV-f24NK?$Wg?Vj1^dPL+ z`J0k&xvwhn#R|`9^MexV@7usUgrrDN5pJm|;YSr?PTapNVvmjNOHs4+U70GOC++d} ztvsP$d2AfiXjbS$qRU<}=K0MZ{S@oRb%XG)0$Ds({8o_Yd0JnLDJYE->BbC`nQY-ce2^hzH|eBZT2{!Q zpYvB4BGJc*|0@roN;&l{8Ikm2qUXP|9{s>4lW28{NRu;fhIt~z@sn(`PVxzd^49wv@Se6xc9&^jvN*mBZkjJsHNh6iaeh!%h*T3tj z%>59BaBDQDEK)v_Xj*uLp`OFUQ^K_k`P^IclCbgRk8f#z+!sDQ5WQ+!AhKW^zgq&) z#U>D0!v71l1QMlNCa+4mY}mxhu}A&3KoRw< zJWS@ZnwconDSIDGB~EjIu%_vO=y%Qg5FXamfW6(kPFn9gMP0L`$Q)yPA&W=b!KAYU zu#&XD2`qHn!vb|bxz5N;zfaZ&Y{}$;thNsU%G&2-!0Yj4lt0;)H;*e4-S2+QjO;WY zJKvY|!>l6pZOK)c?ua@+6+h+$UZf!!Cv%;6wSfKUJ)P`3L?5g-D549qQXEUs@*N(e zxNlo2&J#W&5F7A2J}hlwZIiJ|Npa=}j1cRR7i2OS6>)1eeBIHQs|&C&sfSOH%OaH? zX#ct{?Pu8YO(b{(?4Sv2xW+(a=_=Gb*mu`wsCr!H8kyXH#hqvUmV$`?4yJk&?gIh# z?b-M8V%pU%`>k+E2WVQG8=F~OjnHo zd$?c45EIBPEAYeCBL72s<|KxFd2t_a%_OMLT9w8BBGU&y)ZZ$mNMN>70kI>QbgpJJwm&?n!^H3Oz z7mZmhO+_cKV#yH&KV%!7&}6Ramz&desqoq8)f3<`jyj=Br8mxsOa~Gk%c8{|V;86J_!hIGZLH|Bkvj zS&%(`jk(x>4}C)hBsT1hyHCd{VXH|1Kc0hv>w_|@sb1QcqsR{CjxK=d5h+8E9fv>_ z*>gd*e18nzTcn@ED+lS>KA$-V_VrO-UXabn9tb777- zODgYz=Kg(iQ4BPrvbz=Fps!Z*hu0CTB0NEag54sLD#C-{KMU{#YyQDw#nP7sibBqc z>_wn`fb{2;{W*M!G$;F(HWBlZ_Y7zle~8b^BX8sQ&|uErBbS!Yx6@6r{H2|bX}qiY0GoE(^BL1XC638+LbH5l%`F3C{*7oErcS%OD(-(N$DA&( zcfrT!eIPq_Cmr~~4nWBO^yco@SbnZ{H4d{CNk5jnOOq!FLz!``NIg2)#&scp)0u5T z0Lfuebc8LMER=^6(%~!7v#A2=d>>>DBhvjFj%Fot`LRDEB;)bv^Rnc|jYO4hl2=Hr0&93sGOgGco zgumw9)Ksf|!y91~bIhbyotY*E=yq?bI>fZv*-pFHUlA(SAU&|V0*(&Y1#8K*;$JCT z&rUaGX}HSOVcHoKpykS%PCEv zw{`&K+MeZ4Mf6@7uF$ciD+ull2R$6sw8KF65cIU7?jVrGOjXM?>{g%VFMi=-@1wVr{I5 z(!&XMxIVs-tI0LukvR4K+c?`-Na01MP*cv7Vha@IBH~l+k-s1gyX1K| zd$k~as8!djr9~u&SHZuT4^>Fm9R=k_0*W&KUr?9q;i7i1B8kXbGGa*lcpRE@1__h5 zu~|fF5>2bOM#BxLwRPJ{nCx0vAVg9l{8Qw0Zag)g@7?vY^zu+yH$%J%*m&dtUQVJ^ zC>JRb;beGAXgFb$>o^A27*2JiZV0EkQiPoxBZwf@v5_X9&eD{k&2^?;8 zQQkuWVS3&zKe5MHEI|uZ#*rn+ImSw_LbXA#Y*~=5MYZSgoMV1RgTgHwPC?`c;TBhZ zEk|!M30a}f=f@q$y(!-2C&R9Q4UBrD;KCl&=Lz(PDzLMeoGc+oG$51VHBSG_Qfqz7^=s?X|$(`bh98g%!SzE*w7nmm$DL15dBmp8Kb z`djs6cnAa7Xg=RW=AmuhrxH2VuqEFkvu&kh2}W3CQnPzssbI6&K!NV(^RIc6F`s`X z)j!Jsbe+$k@0z9Z_B+WTa=rpo&Y2BoEE=WATr98ill_xzksXaAU0zEoY3yZyx0pK0G>sG|b;FH(uk8?kb9m(&!D4#xv_RnR&BWyyE` zrWqmxyXGT_5}m-+OM2(5D9a7?t!ZvVZ+}{@D(9EKO5lElCbFKGS2;Pk)k{2Vaatmk zvcs}MiNB#DvN}&DM&!;MezN(s`C_A$Pp0kd%KI~qmPsUTxSeE_4TvSlgR{RcU2Wx+ zcjXId)9%3<(gI8Ml5Y237YOB|jCfbJUzuXcMXaHoZHx8P+4U=)U=N^XX@d?1*qvXe>-MfV=X)!C0egoC}WU!W6Mwm~Lj#x_aB1jNmn8_C9{A4H(Wu+fpD zo*!I)v!~}CACMzAq)HX@vMqX$RvMLJnv*d%=z*EWvOBlnQ|CC6J(n9EDsk(ZR zFDHEUW7RZfu75^_18p%HD1@pAwP2U{Qx0N_6=UMdx4m;h<(;IStLTo38n-a~k4==? zifwK718>a;KBnJu*t?3BETIz)C&-+#a;b-%tn#hZ-v?NJ_eeUmO_3iBek-67{ow^O3+Mp8g{ z6+l}VNGT+POO?J}({=+t^2~6w-R`6%Lu;?<~K%%qoEt@wJO$h0$@cpIexmEa{I{iE9X9y|dkZ6?((-{a=mWp6bC?`wi zcF}eP^9wSSrAOtMIx2_EMYeVY^D&=h3C;hA10|djfe@RRk3xsIc9M>wq$9kiD1f5` z{md;bSpIacvmUT@CuEq%5{5MW$*-fj}=P4Z=zw@ zCQ5+Ta4Toia?jc$Y;Qq+y|Sv}Y+10SJ6VvzEeNTXXRKmq80BF1VCqi>(&nHCgM~)p zA(w83_e~xzWc~U9Le_c=wDXRO=$}~cQtmJK41CG?NTz&SN5A0u6O~+73-ia(lPt#r z1QKp?f{8)6%@wgLa+3qo1URGK59^G)#bB8Ej|m~Gm85wY=QdIPA8!6~u+Xw7|3#_% zE*!;DGCfF&J$|X^%i4!x(&KMN^yFMiskd2FWikZ0s``gmw=xQ)5sWq#_cv8fGD^jL z!b4dGyfqT?Ir{|QU2pAl>Cli@vCzC+QqV!$IV3DU*A>LMF3Bn#)-uC&MizQbMOh6e z*D`A*wAa*W)0`84*|XVGUK*Z}Nz@B{yC7gV}BM+nbCaX59m7NP~r+_at@1Bb!P?C+4aS|ojWU!;Q zl_<${q1N+~=9HdH?B2%fO$psy1jtht*C2;Yd-j?tUF8#at@$T^T1I zKQ2Ue_v_n5yvbPK#_}lZTXxiUk2#5a2b)(gb?ChG6TMV#5UP49e`JT~rCx_%C&%{Z1WlO+@ar#vgr3;(1>_}O63ceI$_ zpWJLB?L&^DD}2Ud1=8C+^+Pqat%%HH3x={fHsF(cP{l}#uuWfghx zQJ3fcExt8`BTOoA6JR$%UuyC-VUErpw&8XX6Cx8eYBh zr5tQog@0GB66Vdqy(nN8;l1f5O)(JV5w4v6+*~+BT)~!tyvd4p7j#ZlyE|%2PO~yi zBV*Mp(8m3Zh3=7>oZ0#xQpS(Q(sL~@jn(g3dvdR)IAs$U-{?}!2aO|Zgh zYTjGxj`sS!U3gs!_4q*OKqrlXgN$Ica z(qC62NU7Z4Jv>DA(`zqSOY2J8pF|m05e-)-`&LH&7TokV!LTRodFx;}7`rytL6Z-9EGLj8=qu~3Jj$(yA@rw@8fNOE}>dD!wph@e4iVwg9T zBD$93aV2JWK+;EfCbnEGib4HE(_UiKerwSVGnJ;2?^H&_taWk|*Pw{LVhI|!Kx|2_ z8Ol_kb@KqF)Jf`PR(;}1Hd;av9Bh%=ms$w{s~PqeZ% zAnRR}Sre7nBeO`1velNt5%+@2{dssFhgX?XX)@i)H3|r83=PRO!P-K2STJ@8yZg;h z_~gCL$T7{7f-}HkB`g0rtiB$wS&ghb4J%4Y@ie#>r>%jVnw8Z@N+Pdp^Aa;uda{9s z0~ZvO#rh1c<8rWAcs)Du@CnINt-Y4LeKS9>{GDyW8Hd8nz!Yq^HL(0?Hp!EliF(xn zhEQd26|1=iIw*_xIU0`d&kK(5=X8`=3+YAdc3JV&aD-51YVy z-{Ck~F6)S**xP^MjJ3i>y}ww$V3OsadTv?UEFW=1sLU$m4#Ji7b`Ly_gLY|d+N`+? zs%&$Kxc~Va69#-;aX^N)Xok^VGPo1abs-bbMMs_ix*3vHSLAi`!Cz(dV$$F+0;+Ch zGNNP9fB>l(oyG4nS2bnLIji}kPqJ51xRh2U3t_9Npeh;EQGby6owm=*+<&eD7wUf~ ztCZ~z4A|d5Hj9P5@;BzMXTSmx-7>*rWk*+GFR$&W-$p^}O?*lBKvxd`+FNs)2V$@5 zm+~bZ&Dp4!Wg?(7}Jg8@R+=|FEI#U%H0)>(KUcS1&*lDi)$5$Q65etUP6?g03_5^dE3l5Km_f8&e?SE7J zWJ`OAwFh0a&Fr(r>T7KYcuRFf z#9p!#(VJ~t|4WPFljTe>hKlmfjGkANm)s|1|Hcx3W-L^c zTM@Orrv~$oehSaD+U?YWeY2zTE}?flEczK@-L($^yj%+{*YB=>$5Rn2FDPK^rkgP} z?f}-CwJxi4;QA$zg*xihxML0KvNe?t*7?y1$w78qC6RY4|4>)?wD;l4hh{`7pNacd z3yn2F{!Nzr*&1=~$PU9>GaY7XK4u~@Vra%B5{6q$Hy|(ZN@MqyQE=x_=^EHkZ)ig* zgQs_{?1xnLC}Yg}AgA&ns)Tb@cR#;W6NiC93&Gq%<8VH0aV8qcjZ80{X{6bhkLk_t zGyL}9_gQ|soore3=N>bQ&>$KDvz@_Q{&b(^U$8RH(7xJpipb*<+gN7Gx6#F|-_bj; zHe-se4=#^$FtRBSxmi_R!zpU##dRN`{BHXdomG2sx$bM7EGT#m%4k=_1{bvVDaZ}) zLGSwvhU*?5h*lKj$5Hwv$_w&jpi0~O42B*95CrRTu{jSAgU-!dW25D#;BLqDm1CoQ zP8l1mIEBCggou`#r^hDxoFdGJzUDJr#F9E8pHyB7WoAnh# zK7ko|P)61ThCFAv&Dd>ln^PAQLrIWnirsjVM_7CLwEU9EZ|-`~4PYNeMfiz zYpbYUQ}G8g;a$cT*yk&}1O}Kd6(B=g{u^D{PH?$v+Fo%y@qG&ItbV8u~?I9&d+EX37=@63s&E z0j_X2`$`6DQ^No1l}KZ8|6g*<&mn7->RMI0dEHETO(d~aD~W9}19-2JSYO63G1{`4 zguMsRy6XBIi+_YJz7nBpi+SY%8JNxH+54me+5STkb4q(5R}gpGk;xDc9XZ7GqVeU$ z`-BOvK{|8xani*qin~s(Jm@2vrL+Gx8vdUL@lv<@y|^^D3!hV z2$;~tx)-;%@|E*}Y=m`$n#?dB?f7L%((L(Ct%-7AKiLoWcfJf0BZLB42{OmhCb8V+ z5vkpZ+HW(N1P8DDDw`qgl77t(fSD0Lw=3!5rmpsL^JmK$>?XvP*MxH4$T9EHS{CL0 zl99@w-0{5s*D3c9z7opaPy68PcU^s@cnHhdfD?4L^AN>|h+gJH=$7tWO3{%%P@7eNAD7&K9A#@f@`oO8kA%HMm1U8{@tIQ zZWrp*o5cGhYmvVJ576!>iHy6u$SK#<9aC!Z4pKljoBUtOFuL|`vS0ef{bx4GLJ|R2 z_Gs%Z7=hFIxoEv@=V#94LLTk_p!0`uKg`S-GvSJY3TzUrMZ#R~7+R#{e-|r#v)*FZ| z$YsJXcSSMt365y_<~n8;baE>EWAJ>{>LF{tZo;dugzB5wDbX+|Ud$rz5QTP5-UZH@ zm_53u@tqL(iMAgqkEQARUxWWVC`IVpTu7zMi}wxfZO+!z@!s0&8GBR8Q?x*+uy+?W z_ShgPv6gwZ{0m~C4>;{A!N9qA6Z-5ZrBa z-Z$)jY}o!zxbo#(OYv}YQFrIx#!H6v(c^E`7+xY@rWlxYKF`S?_!4FB!Qg9 z(eL0K^LuJd^;&STU{lsa@$nu7|NH z(K69M)U)5#a#l_0@vEIA0$6IJsLXC>IzVdY=n7F=PZr0&4g7#Ij(;U%-$2uX5G+)E zMQU##hY$+4^HY^$ngB|A?p%(lOZ?SrB$D&(zKOt*TxFB=$c;9l-&Qt$lx=gyzu9Ja zr#3}%*o!vX6IA(tC0fVZ4WEf27bBPpMqzC9rt5HOV%BG{fnRm>ftaC|^`PDCw7NV=Ah}rX> z@*&eZ(Q!i^NBhVX7(%WqB9efwf(xl)qDgw+G(l3bRYSAXP!T;o#(Qj1DkAqTq7rY- zMEc8~zS<4zMlh)fb!@iP_##F;B_{@zZoXrlv-li^m8eIOC#1KFqHki)&4CCSYV2Wc z-Ew6TCeTt?{6@WN!oE_uuW5g7pDax7pZR$S-~I!YRb^}`i;mjC6AUNl9rYJEV=NPM zSoxGjifF!&8Ubt@yGMnKS$PJ81FhrbsBgV>vjjw6x{ZqA_e!6<*NvBtsT3b~e^Ic5 zYZc?U6<+@ikxiqk-TFRee5F38GmCu5k?Fc*{i+zD^*Qes999_%=TW1?NATA6mB#n0 zh#i0EcR+XKZ^?d)n&1KFbJ@FAq4{f1$KCo1W8|+P2HWo#^={qX%(Fj}queLVuq}F$ z>%HzukZVra@wH>5!%oDtG)r)3s~2F|pp~~$xzGmxEl>DRwpW{beh%@9#s!y0g20vp zBV&jW*N?_oaqLBem65sml@Z+iJ>ySc$l)_0oUBB*6o`0A$O=Zk+g8UTVfKqFqZ0mT zWGUI^rQlvUW+`nZaw>&}V|V5Y!sWoV-8{i;VZHkD3f3#}j5h86Ban!O5A_+uY>yTj zdF<(MkafRJK4&*!e$3Y()++L}lGb!3EmYF;`Q$p`RwysccVz;vQS~3nN$bZ39f-;* z5LHEE+kwn3YwmeVZ4@$^sDx6;UyGSHaVXL>lRC*Th2 z;rx-ePK>(EIRM~v0)?&A?Jx<|C896}RsMP_dm3LYG{9**Ztjc4JHIyr0)gbSm$sU$M46aupe!r% z$!~e&$~?i>HFwI0S?8%pf%VaPoYvc(?^kLL!d$;yW^%f=Z0&RoxP*pgoCPnXBH~XDHOx${#(BUadg@<%D~{9VsHN zPtzY`XRq@T!qgwU^*jyNt2-{VEwY%)3xU|i$t z*+VWF9gVLy?MjuYc&ali`7nDJ&ST5}Zx4e=CgyQPXXjz~4Y?UC^FAJ-Y*PyW$ul6# zKy>7TL*PH5i}%b4ba);hUAiXM4&1Guqk{bzf83GHsAvim2^GtZpGZCXgOu3Fg;G<0 z|6V!WZw3Q+^`SKlosI)aXC^6w-N{V%2J#< z#AhLwv1;32{#+%*_Y`H@E|ZjmA7D{+wahj7Ji9~?`}0`nMb>b+++J>V$s0HPB;DlIwMNl+QNEV}eJ)(s5cF#ClBI-<@xqifZrWx$P|{ zQ)W#K;i0lb@LQVH`U;ZId3g@C z_M!6SJDhvQ$~n<9r_xI1LI8J_g`nBaP)@8SG)e@7JhE8`UZu1w1hsnYn`0jZ*t&*b zC$(3?|6q8|thopmtKp#jhjYwpx69P6h*h=1hB(gKDopei#yNSWS;sqP{r*OE#k#BO zOzNr}{*O?_3V*B4l2&HPCObadk9Jq{j{Iu@7 zP53M-a_6m8OW#Cp#=${7kEpKAEa^g79z#sfn*4OAe6L&-8V8r|`WBUyk2{tam+GS! zm;Fi^7Y(RL$ZcmMVD|uGDJHQKo6War1gj*rwF01{Yqa3>5g^$Z^j#^`k(L?V{jH7W zHILBSZj>EQ@U_%V4j_V;Vz%*Xphw~g4X7@*oQe49$z#p!k{ug(B1I}<_s*klf0_=O z7`(`OsNfdnCFCSxfAnTb?tWum0?%3tUpdx)3yQ&qv!lL1*^D)}Juq49oL6l&eQp(a zzK}_LWJPpDds(5XJ(m=l512bLED}4n&DV@WA<=#(yuT3un?)IQVdw|PW3$eiaR2$-Zi~gKSikm z6>bcjXdg!9R~LULRFFK<#_Q!x`2FMo;vPc2oJfJ5m(5ww04Gzib*&#WQaQ9>o)lmi z*nk#^n|E#^kWm6D&ppFP*ehiK;zS1sg0*^UWoIDAHp?~$pcw~kW*>0G{xP<$iAKzO zs}IU4U-5vX)uwEZirDJ4JS6u*1ZyE7$9|J(T<19Zg6{6KQEmBnC`hb;#H2~hHUA3e zSn!<2kWN!2dCKiu>NN*aUfsSmEKo=Cm*!@zA@24}b@g%_ti=tu5is7W*MaF0Z_}MG zav#`p*3dN&9R*(<1G64g$S=CvQ9gcs{GvhR(%0xHHWG5bMK2vLuD8$|&qfvVSi&35 zP|hw{F)C0uCV;3rE)bhP&XoUBUE{{!8CSNbbj6r!>dLMuUGc+e@LjiD{_?O)ALMVG zQ~G!rin-|Z68J!lq2guxurIxSo_z!`>&R?12%YBt`Qz=$B9QL>o?LUU_GGlvlhL*( z*GnJVo?PFxCjve&>w#1n+U)bti9IXt!}X>Zy5NH8Vde{lw6+=H=pMoXu0kQ%63xZR zhM-hEY1NaL*ySwq;Egj=D{xL1fpZgAuM(h1lvF&u#`zq_SPSC*cXLbuQ%7ZJ_ZaTA zb&h7v9;jWQh9-iKOUQ|d>I zY`zOc@qswt?!My*KkJ^@7H~hyfijbl1I3hDe7KnzYD?XgX-k~|YZ?!$U2Lf{>Z)G4 z0bA;dA=}gnYs8 zlXJAN{08Z|zkzd=m*m7^2$mOX#cW#ar30!eRqw{&f^wcXWl4`g00+nP_{b@XuW(4b zR#*g8Q-!YuQB;K`%Vb20s)^O%b zI%?Ly9boL~61pX8AXiObWuP0(ojgjn7XttmWmxuA2Wnpk4Z_&*0Pn-Ge}I)`Z|7{w z$yxSUP6-gL?A0yDja9Y;hQH>m0q7h#ZnthcWv;=Q-VFAP-VFAv-VD~sjR#iHCezDq zdJh-CBegj!(IEMG)Zn-#$@m1;E-1H{wwM*4I($8XJf$$Jn_c$0^A`(hzm;Q-r#3;Y zjxaPU$W3z3db?I>)soVbx$!5`tSl2kzZuJfi()~WxAsW@Y1_!3B!}A^Lf7YpsuY#y z@_q6m^5jLr9J8fA)uH_q$aA@YD7sFY`L+}TWSrUBL#17*_Jjw>c2FKyEB5^75R%_B^p_-o2T zx?h_^gI<42^^)A&<*(($N_#C^PqrIbB4q=I37&?$vYN^}rwE0ik2LrH(8iP4?-|RW z4mAh8D;i>!MU`;XKZ6a8#JlQG{Jw{BHCh}BTG5Llb&DGx11$BXUHK{_Ut??BDUd|K z>c@~c`$L#G_n}b^9hTXS1iji@eK}KZeClvW2%Q{rNsP@(ai7Y_c5h8OPE0j)Q76^w zRp9j&Jc$CYBdx&um}h^W8oHaWW?4SI*~=QwE9{CCd{`16D9yFk{~f*k#59;wz)j= zc`)*-$zzk&b|0OPC@Gg;h*;7*qAqk&o(MePGSP8|GwFEpWZ}1;ye7Jxc=8zjd=t(9?`i7l#Q$iW-5{*1k%d9( zy`6ef_QJxCIT#g=5r}MW@2l$gALJ){2Rb+h(=!2c8wAK+s}DDa@6QRXOoF3C4j5_0 zfM%9S`CbC{Lk0chlp~rGFY)DeiQili9X5U-M>%p)j+jdYBOTZv9itZ5{VSuF<#7a( zpX|#C7AH!9*da$#m{T_b8o28Rv5tm+=)IA@?`foG@2K@dHzK6nh8h@6v)oAjR!x)88tGzmM{n>Ry)WD&;js7DV&L@`Bo+ z19p@QGe|5##K+N%smU(*xEahk80H?b@%^VVyy1r&OH1L>K*V!6iDWUVp9Rl@`HOU( z4rdu!+RFJ{Y;3+=f1~^8el3Qv!tng?w!rX1+V%_PpsDT{u#E)j1ylUH_cJ37ufE=j z3J>tB!Iv~*R66W(8d;2IN`3$b`BUYDqhI?N6b^`tC>*Y^RcQs2+ZuoJRYzv|EmJy| zKh69Z#k zWo#BfVPXpkMXMNE`#y_tSqZ2Ph`}*`$_JOo8T&XwSX1#^<{Y80khLSK!;Hhpq?`CV%~x9`VFoZ$^ZtA^(^Ys1?pD`Z}%)m(b$D+zk?1 zyE1wV(<85P_?Mxfsrd^QMNf6mas&vX*%U;|I4ipt1U&&#F3uwezmE^XY)l;;oS?1j zI)PQSaoigsy#<@?W*%LoK64}5vP^#!8~-}$secr8jva(RO!NakDC+U@gidC!=qrd@ zErH28rU0B1p{(5Md)@kr{{8x0pVt&kwSo|l=KwNKc~VJ!#}?&J`rI+402I=GR=91R z+ivB<^bFAPw86x0;RUur-@90dI`jV1pyu>+zvGy$^*Q%D7DE`OL~2!UUNf~4;Uea_ z`+L$r?|7Ln$LuY%a2q0dVZ5ve^$07(p)y>|zVvT4V*MK(xs|lJg({r);u|^g_ma6xGq0Aip{L1Q zDw(r1vs5!5BQrp1a@+ajrV%Lfx!v>T06z5A*3jd2PosU1C8OQ5+&`Q6HTidJ;&)bJ*^x-x9<-~IsNLMpoNf2` zw4oYN1Jj8k<;9KqLePP*si8EYBR}BDEY=slwJ&t*zmGa^peKFC# zkh3lt|DL>fN?#miU-Yprj^GJiEpwdtVaG>?Q@6h(YXpLu^fSd@xR;`2!*#WozcS?=n z{o6euP59b9V>NM{0$DE={y-}{PqIT>sPKD|d4*;krkNZbk35>xa@_zipa2aabVIdRX!QZ(UtgdaA?Ql;kD-Zf#E4(1#xtSEZA1lgxe#TSW^CSN5MQJHjH7DV@hTrm0XU~g!7L$UHj+{oA zF7{2o$$6byip*sARl;+nyt55oo=#S!lb1Tlgl7sV2N{#o?=MOxFL07^PYJ0(!N&yH z%g>y9X+>mY5jlY-(x;w!uDFzV@J9mZqvVr>{wPvnha4&e6P|EvBbGVWPHYA`L-@XKv~wuN)4a0wZV+%^1!p_DMc)I5(L(H0?;&m;*_X2=WM zz_fI7ij%aq*Oz`@k#aVfAf+C~B1jp^Q(%(-Aczy@yd`BP_wtIA}{#s+Tw+-X${ z7K|0^Y|g0`fu^E(Ng+`5=Tp%q#XWnH5(IgqG8cSQX`V0pO2(gp9c7 zQ~pvx8$bO7=-45Dm4XS+W_ckw3C~~B$=95u?Z(fRXg6BOq#LiHtf3pf<|(i?9GVvn zjn)w1bVFy`+&O34Zp@rBbHU}zLFon&!7PeL^CTT&+zYFKXd%_)S%~IIjS0_eejJFd zNGC6Ik`|&pEJWv%2}BoIh>CfVo$-S6=0fZihG|z;R?QB%v{x~6LFm*|$BChPUhq%6 zfhuQJS!lRcSM<*bkB4gZun>LiQHZ|a$AM@^I{8m0X(3v8jp7JtRUrB^noV#N=ZT@F z{aIC`9pm9yvo4(~P+6>4h|ZOP7px>o4wGpbFF6uG?%?bG7Lc2zqJ-y0ejGr4l1~1} zNm@YuwpamKLMDJrvVctHDX>;qz`0cmXpF(Kh?ymTKy!;z6eELW!8%XktXi-N!?QwI zG9M?bt8hEIqS&xczIYARB_3u!r^$q8KpLX{>14ljvX7HYczTg?xK~G?RF}Ap$nD){ zPBQNKD=9otD#M|wMZOErcX(bPhY7lgpP3<8g%ky<6L-jcZvsxfg7YWI=O1W$G@Wcp zCs#YkxaWUJ32*-?zvcAgNBqKZf(g&;nu$Gg_u=*{3J({P$ z+V7kXqVsq0t#Dx*z!9wO<~byqt1V<#E+{E$>Z;8CrMH6;)^WFa{T zPnf@UX{)kc=a#b0nt67_J?sRR^N{ZxjcPOK%hb&NKFG*{({|;mNHi4DNu`s;#3KqKzcvUy>WshBfdIhzwgRKk}XIaaG^N)pXvPL!mXP z%5L=wvqPl44GJC1VxS=y5;fo`Fd!%r*X+H4DtS~rM_X?Enk@fsz8C*y?XP2OZ+;|| zMpw%SNNsp|>%d5D4CD6XF``dM*O%!peU4k7d`x{Zpyo6(UBfvs;P6T2F_I}KhxQP* zfJZhG$KS^uAvWyCIYO%gfB4VWIt)JTvU`~Jklj6u@NWqpojRbjzI1{xpBucb_8mE$ z+{zy_o=;H_IB&uyB~O(nJ;K}$^7U$HQ6R{P3#hLBh)l)4TbTk^ZI;Z>z_OxBY?4Y- zSazJq2P;xGYmlH!B%j9T8A#T^%H|lUGrG{VBh_`288b5~kt~ekDxBo&0)ScLt6@8Ujp(Aa&N8 zakCGCOe*V>r=`aTq_zY`ENxvd3f8vDESm$-F88+-V78$q*#2Zix-jq!-RPcI;z5yD zx=t1pE%>eEkrLIH&S^z2t$JI}XXTwzW0U!4u1tuf4OGy;SIQhb=4o;<;SV2)3bX*{ z7ve@T1>6p3SRX7uN)uyPuq!yea%Q%K@AwzuH(W(48V{kFXY^r6H+|@D`bq6#7fJV;t-eo!JGI_o^|PN|A#`Z_2+>2j?3;7VcOO}XKtlE-1b&57%si?dF)vbSP5hI_dKx=f2|q-gsPh*{;T89()HZb{db1$lc|52-c;L zgOn3(O`XOgpWNL)9*@kl@HtIC%wtzlxS3p8;%}|`KQkVmR_$s$wlI&oj>l8v?s7bu zvd80YTT`d;s3v#!kH@hNe9m|r({0lpZF;-uH+>i5akEAfO` zQMs(NuFv4ox{ARttn$GQ$0{G}u&m`y*z6klg=y8wuW+q8F0d2f?TDabCMI?9;7hl zW{3nGo{*db1JB1w*TY;^7V}A8B{B7t!R6F2_DHd8~45Fp}<&t^~JGaR!Jt@z|M1 zoMf)jLiGEDo@acl&|=BLAQ2QcO?l@jNDD zSAKI5xr*tXt;aGR83;bn*3^jx^2y!({N|BqS!4S!kDbTXV{Rr_`Tr%m;5UrNv-r0V zK|*a+~N zjY29vrjsiwAKdBE^aqFKKjg6d)h^3#Qo8x6;E9NLX8mNPn^)bXNlYR#SpIUJ%mY)j zKUuzi$Cz8m6)(^55y>HtOLI!3#+i|;KDV(-@v)RpZq{n%+iE)b6O1F*vgfqRAERR7 z$Y9Qzq3!)XxmE{+rhDe3pD`yh+HU8OA?eiiOXSLsy!^fFA?dt7?vbC0YG$|YZ%&-F zD}L&;J!u6;x?Twd9&7q*cXzSB*{0)>lBfTAvErl?KW!#=_w&;$s5OI?U)F8Yer&Lub9sCrW3!~O7712l^jfE@QlZ8HJx}y z1G)bJeid|}b9m+GZrdKLZErV6UywZ@DSow+@z|!UYPXNavI}-S9oiiS5c%%!R+FnVnOpse9{GS<*PbTboJlZaW&5vkGpL(op4f3?tfrBhB(kU<8gGiZTHc(x0}A_{p;iLAL3V2&)fBQR5G2r zj>jqF?tDCa+2gUVt)|m>Y&-uyG9I^6Z3Zpe!eiI@5z@A|o2$?5VLW!FuiWkH`3vXj zaO^~X+{|32C!OT0Uz5Ab^}JBWBPCy5XKU)Ts7@hw_pj&u9r$#5w3vR~HvJycLfF;T zaoNN1|53ggbjN!cR3zK+2ir)c&(|^c(jtc`^V!NYR!;$7k1n91Z{e| zx!~;oGvo35vv)Nf4b0`P{T2_SDS_755mr7@~YCvn}pHlV#xP!6KG}& zz}*;)Z8(&Z$WroJiA@jBB=ErhQpx+0g{9RzU+E5Uw@O|)OgE3hAvz7Rx8}R@<}TjI zKznPC=do?5)Ve9D7dHJ5uh^LTYdC=S-&f%+C#<8~KqO{8M?mVO@ji!QwC1n&?7?3& z3vqv~v{J`uI12NQ&;V0L73C{tbBWV?xzwZFtjP=~cZI+Df2EBNohAceUZ~K{cdv;L z4Ka^16#*$zmlU4Lb;_>JK0_g)x+Ya=k4>J70;E2z(&k)ot9z(e42Ci|!ED<=C(0X3 zuG*Jad!B$TR7bOQ(1oMXI+|Q7SrJoXQt4zH<;2wkq?ObEvLgH0v$7_~Q#^K_9F=C3 z7D9U+&>Q(=bc)4=?G87;D0zx=k;G0_+*6$LI<^gFvTdwWS4WU5GjZgZG84P3PrIIf zyZ8L&jx%>cHQpLMzo~<1bfO%Lf@F@!pPr}oZaBYrUr0nw$Nv%B>C}Fna%M|Km#H19 zFi(-I{CiCDtp5eEmt+%rwQZ{tv0tohrA}?WXA5y!QxF8Tx_rj!8-Ggf zF4y~s+0-!K*3^j_#*w@G*Za?dS);t2$IhedF@GjkhU680_K%Z5sV=`Tv>mxVwB; z<5ACi?m9oNA$OPaV^Q{aoNH_9G(U>S-TmY7`sl3jc!kHV^J6u+GCv+3)oDC3V=D^( z>in$w$n(cr7w8A2ZtJXkvMf~5VNZTvtdR%4wS*tskK+_TZj|JmPK$oqVx~W&wTF!j z%X^-C?cOL8cs=FUQ-k`J_jXKYt$kyFTd|@8-dZYe*JCXEOADp8UrVO$@T z#wBhFktb?Y-Y0lUMQj0~%R_@PS(h{6dYlAY^NxBs>k}z+Mdb}Wo6X&1&E{5Gv$>lc zvpH_q#%%5bX)#9d;WtW^jERw?Y`%$nQ0|z`y~Kmr$ee=$vXn;)%^%2Z_c!E*=O-77 zKLC*1yB2^LSAJ_hC*f$Yxlhhs(YuadBC*NM45fqySj#A~^=XiieT=m9Q@@J&o7D2| zbBV6Trx}W*N~c9#OB>DU7OdM?eQpz=?Ro3B$hC8#lO$|AmbSsuXYGJ%gGXORBu7DR zoo(w>t7sDD*OWcDgO zmKQq7{#0)Ci>Oxy5${UGGGC)mRYtxdTbv!ZNNO+qHe7cQYd|jCr&%yf;MyYsO=ndt z9A9-+7 zFG*OFiMfP5!K)?llaW~t)e_nzbO?7;hED2uL`U-2$u9PD^b;&pCG_6sKBG}93z zEJ{r6^eIA%w=rD;iS_y_vdx@T0>L>hD(pf3A9HU4A60d}k7s~D0C56}#C?>gp@@dM z1rbe52JUF0QADtcLLnHGtuP}f0?{OGhUwI3wN2~NXlol=+lE$YaAPQt1QiXgxI)$9 ziGzY$a3%ledC$EwcV=!vQ2PD-{d^>I&pr1n?|Jw4J?B&yNU_4E3)s2E!R%}!{A3-n zx{a{DXdpc4RU<5yO%{i}xQsJgie}XGYhkX*W&&4Wc}F!T2V0lPV735%LjjR_SuUEA z7DJO7RQVgj@F90+xB@qJRO5U?ept;9tK0O$?efsb2S2xRMDR;pg|?6oRgYa6L<_rR z7kbj*kj_R8Ya~@Spah>T;fv$=Lh?3d;j#TX{fe6zRA2c<529+Reu4W6I@N~&ku{*I z`TE6nzIaJq$l%=7*Wg7v8T+k-&G~7U@Un2zB3ydE*;<*3gtS;&CgtLCWPkMY` zT?UMDqDLcqZ$8E=EFag=TI2}#hgy3M$x$}Qa5_dFO-Q}@dw^QK6S?Kk5eU@Y-n z{gkiFlN-Y*Ok?3sq)@u|--1Gtr@BfCn>Z%7Y^Q5yV;0@X=!Nd2*;7$D1})MZ0VqV* zUS<*t3`^@oU){;OtH+SQycL?dzLUKB$+RBGyQZ^a)Kv#W#qo^|YROCAP2SBx zTiwgM3sA#R-i_u9XL)y+eB&VRz6FRJ<=uPoqKESCUj%el^6t4G@0Yy0UOFawb9E)} z3|4WJccLR*dVH+toEc?2_KZ=!1R<6`+UuW%(5e^akI*UB6s?S~9(5sv9=%AH6L^ z8<2brj+UO#TPbQt7?Ap9y(*ALM|wMvuafC)uoNcI+cyA`sp{@qzkHq$wX|{3F9AT& zFCV(fnce`W6#X*DF1cIY(l7Co`enVEFK?XaZ4%zZ>8&C4NZK3@4fOVdQ+h^k2iU*D zT9Co?xmAy!hzP3^~*7*^+dm%ySz*N@=hQ}7xYEb!qK0y7qI@G`sLuu zd!S!V$&FE0Oux)}`n&0u2cfO*^~(=VB}Iq==1%aZY~c%M{c^Q@y(qCQkccZ_bqpj}g?>f|Qq`yn}!kPZgly4m9?`V19K!1JYMGxuk zRRX#z`kQz8e$ihDZJE>S%DyXS6-WE-BE0FA{*L2FL4U(f`oE<=?j1VN^6xOCX+oL5 zuzdEMnVSBZW-i15WZox|>F=DAdqRH;7I#N~cLE>wm;Uww$lq7~UEBlun=&Gm{<7A8 zH~KpWZFNt7ALPUkG)eyPg){xFmTw&B?_PP~Kz~*8qKEW18I`-Fzl$dB7yS*Cj=PtC zSXXEIdk$~9rN8@$5|n?#yP-cr;(NIExun4td|A$5`o;)dozE<=;5HqH1IAbQLN|CM zj!=d;g3cJkc_bge@IzqFi}O>sBPrpdk#zD&tN>RJpuJd7?=uv0&SnT<0e*sF9YP2= z7P5$^9cm}aDunTH_-C{Calqe<89bMhz@wI$Jfu@>7C%$?<{)x*@~*_8c8A;Ec_9 z!8H6-br+KG*p(}=K>Xl0bIB!y8&Nw>AjRFB%@CfnMVID-Ye{ms@(BV4U(hGdfC1xU z5-^DHhj`41R-RBFILrqP5} zoE<3l$r~qwt_p9urKHIm8W80QPqIOm5--s7gbWeV6VfW+IO&3(%($FMPv79KE=^1f z$YDpam5Ld(h|o??iSf8{EWkdA35RkPE-ahwFDs%)Qiy3`oRF$dAR%psi{$j|E~9Vb z)+|W$jue^nloStt3Cr$8Pw}`dNPbSJ*CFqesz3Ig2l+` z@+bC>oGwKh-IG%;Y6u?c_}g*vnCu@Byzk3b$>j7g;9*j8oSfd2!XA>--w9Dia++Pz zb8?!^E*VC&{3EgW+r{$6iJZ>Bn{LS|gF^#34LCZPoKoX&2TVR?9eDW!m%p8)jHZRY zStYXda#u zy;mHK{zmr$o;n}7B_ub@`R{k92)yv29L|*m3&Q42R z`a80Tu@3rQH}dMXBf6xg{g+pD1#x;xl~+5COqExEe02ZF=>fFSy}YVG4V%3Bi99;W ztIPQ+nVbrwFo~Q_mckyAQzs$nD6eju&~tKHgI1i$>38zRNnTasO}FGUg+l{5{phe{ za&nee#ley~xeA#&;43<{Hr1vQi-CEj9CeFSIrqvVF2rCdVt5=JTl!)26 z1syFeKO$yVBVzV>2`=_x#O!ll_-a^JyKqaugR|^326@$~^CQPv`H_3n2H=6O^Z8hQ zWDCZH{K%H#u-r$9fM9X(BkI38J+dUI)TzS+VH?b}NWWxYRhSVnQv>AmQZul`q8fj0 zoT6Y+Rk#9ni|Wp-6bV(QCjMjpNa|uV(mhFyLJheGkrq|0Iz}EHB~)*|N+zj~0D=@1 z@HHvyAxS+h$i(LYQF%=L$86vAy#q!39q<)Au-I7!~ zhX#`BcSs^hCGBU?`Hr9`5Qm_%FZld^kQ7`KBq>CtD{#P}x~MBd5z}*vV;@BR%A~v*oyTRc41gqu#$AFsmrpjbY#b#-$*nt{S^d`QfHI8*p-vN;>@9O>M}!Q_3HD# zk-9wc3H%jG+!XLvh&PT2j^ce2X8@5~eSD~l*Es-9BT_w&8g~6p9+Rmnmo*>cE8V5| zE9fjywNfbEi-ASarIt#e48_4;A)}WeO0yTCGN?;~E5Tn;Q;M-rzuzP*X3pbmx*WT->YA=HTD+@pm&nX! z@1t1-#%j+9${D3dPv25=J3@AVUSmm=*_5 zW)?3O84fjeYRZsgEdL~rST4d<7JUhE>53tGQB2?51$e|f(8Z(DU}#dN8t^btT`&4M z9dfn1D_~eSe_2O$E4tRMxvfOHzGwqiDI?W_Ymw-g6BPOHVB&8Yx_9|;5UJd&q1vQS z=*a&t3I(YjmqKYD*Sh}M%FLCq$Q-1-yHG0zf#eA8$>*84J4TXo_4J3K1DXDh*nwj- zC?9XS#mPh1D{yk?Ai+udekpstZ609Y3vR|O0fL7}YQF(^XiFN3qoJ8>R6=+3PN)ya zH|i_}8rUjp#FItVdJ-?!Na20dT{(Y*u< zrez`HxFLt9`NH1Z;$Rs_3j1!tCD;R_kq|i;77`l4qlkoLbwHg3aU>+X?XKauXA%k7 ziFOCqs8>PLHt%pN9+96<3}kDgUr;L_BK~ouT>;= zIN~VMeq>9M+H_hnj-Cb@w{4-##-qt4rM1wcEcMV z)9Moax%q6t(xzxCmY&7dd49gN0SJdIaRX4RIvQ`{SlXDHu(Erg#?nvvnJf~1w%B=j z=6<{`UHOOo6W5c`Mz`YnO!k>9u8)(#ByoL^6z)r0@8~ax*eG-;?2?$CBXlV3!dnUl4IR zS@;_VL~KQ}FcA^55$yH-;!qi?zpk@{BS3+Outrak0BxUpC_kLWjhiegM%RP3uUM~Y0=%2w9cmw+$b?E>gZwSX$BMq7{Ux;A-;Eu5n4vf~i z=IKa@2D%0+Oq5+BWAxU8cXF*%_!OcnN3JC@v0Hrx`seOma}V!-@rY4-cs@~RQbav; zf1GvZnkb+^Tq*mgWgjNH+VaX+U(SDB#HU|t_J}Co1c-GFYd95^W$0I$BEmd>yS&K>A>W_ z*pM%4;5gq-oP2iA+H)s0ED<-1sXs|FkZ-v4^cYT26iOrdw|OT5pYoZ*-oO zbbN(_e&Ap~b)^tE+D}Fj`>h9F5#@k+M6VR-e}L_$Z~KV-1dZUp*iWNIB@nGX%9O${fJUyk{q(hqHMg>`8~f>H)B*}> z<1yKODjuDHf=f6J+)hdR>0Y+(h=P@P(=7^K&Mv_Sr+k};f~odX16ULG4-sWbf*XyX zsnm(_B#{t^kMtGimMv1T4+mS>LWqhE3gD$Y&wk1y!(rimW0bc(tc`~&pM$xqCgSOm0ty(2I%C8OMb0u49N@YE zfYk@tU?K5a87E_nO{v8%;BYy-ZWva*C_A5n(CESYN;VLILpV!hQY#E^c%}+E`nmiA zSYe79ESQ3%K3|v$BQB2}#MRJn&xz_a^gv5i?}Owdf;GlsO6OaNe-~L?C3e~BW2g*G zj6k%l3|B<`j_qi+=6?#B5p^WBQVMg0N&Ewa)YMc!3Nu+4_+zwDy#@fd2a4j<;PRh~ z)|%8Ms1rTSbTBeF#Ip@*)!8UE!s3hsj2mE_0nTDEpFWCUo7zA;81kjyfulY}`6Y~_ zq)}`M=u)sHmP0J{gC-rzN3Dkrm7{G5*s$;Wf^X`RX5izP+lT<7xS(xcq&NcUfrbiY z5J}~*8LdK*7KukdvR2_Zu_I=h4nq2A!GZ;4NJD*c9xQ>iiQW|qqeGp$Hw*JGEcJ!x z2BJM=ox9`g2Q+;wnw2~F0b@Rvvg4EG*z+JJn~x=eN1$b%DaT+aG^&cb_D_=Cj5fNJ zWLL7!WJxw&3X>$+Xer#6BpZlYKo?VzCHPprQa>Ik7~|w)dGRYfcPRAwkd>H^WewhR zE6IM23dF%*bO;Wn`2VH={}2zUp+2vJjpB!fJ|Ct^fHPKrib?uB{C^r3O?{pM20=#z z9C2VQlzPjqwST5{`cgD$hD1!37Dq@^@rs+L_S02737$XfeJz_w+?+?x-z}Ff#Az$i^kdNqD0jCRRWjS3cQkY_cFvae|B+nd6%w%6$OQy!5eh3P;DOtnu zXd)*Ygs)z`cL#A(I1g=CK_A+#v@FF-O{CB*(!^8Szp!wVE0n<8G}l^-3RVoAQIZUf ziq;W$ z(=B>_xJRSsu1|@cUHDson=lArYa+Kq@{29sv=f^Q*w`e|5+_l?)?|t?V!m?~izdwn)y%)&K)_Z7q?H%iJ^P^9(e>3%Z;_bR=PQKD$hI zK97<@qMTOo(^xZ03W?GQD!z;*?tK2_b3r~m`(zcr|4AnDr8=JJGRLL%9!}ja zrruonSpsGib)4YfZoA9FkXhLHa0h`Fyrf~!c zjG&`h+7Xvr4hvtDLTOXjS|$shl0s?U&emisf?3jD9cqEC>8TU5m=hwAw;?B(Xmy&X zdYClL##%Lt?K*O^V!Y`Vr;cT3z^UVQX>L~36+Y=CIhcmm01x6Dk9@(6I1msF3~Xu# z2)DDATmvGm#$Ky?&h`2(XJEW+#}%7GjCpR_SW_Rn%#c! zh0Weyf`Lsa1wPfpg{AHE22ysazn9#K15|$w zFLny^ImPncr}`Hh{97sfC#H{C{3o6tV4icA!i7j1i7u`<_8edr*Abs+)^wm;To)Xc zEC3$?x!HjGARbLNMWqK8>$SmQSbu|y*rODI8EBzf!{B`Om~0q~l0ssn&Bc`^gwbgoFyBRUH!k>CAI(*K*^ap z5W&~=hY$_PyRie zi9%`(Dx|pk{~(2$Nyc)eZj(aF!30E`ll2iGHyAvM93f+d8bt#K*+=f8zJraYCX5 zdnA`M?bJ9fLiTozh#85gdjyfqBz1qN(eOaU{|6_d;GaRvHcogq9urXz@&Bs*L&3>t zqgxa_lYOSd|D`Yq1rL%!8w$QcA*snBj)FVdyF|fH)LTb&iGqK_cg`qyC*E|6g4eQ3 z@WR>uO%%rt_NaqBkcdFq9v}k7<4u-5kQkZLs773Zv`WA)qK)>-i5#Fp?`#i@pA!&! zpgh?gc<=)ey1B{zxc#&TJ{m;zEoKi~s1nfY96Vy^v`WNqi*O}BXEW@o^w z!S52U9R0uF3!jVx)^`B#sZ0BEk~$#xbl<=PeEJ&nW@A@7@tA~9e_gSE`1BB(=oX)9 z*k!VPxkw6=@abwP+!sFOu|r3E`XtL4pZc<0M||4(-ahbYEh-S7)@}da;1kj`ZKCvh z;uA&T#2e?$&{^yW-im%Z4hS}t_D{g3zkt1?5b#{`I~1Q~rU( zC+hg)7u`6II{u7gdH3kM2Lz+`Lff;+yDR^bfKkPGOv0!^OZN|>`lE?%F-n27Q!wg9 zDNMqsr=)OS7*&T_&irY}P-l#q#daO}Q!(Cji&4k2GhozlZzl4m%dzY7Yh(nhcoISN zV87zf;ymv2A8xcnAmclC``qisXJETzV6cfWrJ2k)d>x31uSWmF$}H$zjL1_@zO3h$ z!EIL-Ts^gYz@PVa#*+dCzpe4?dSbuEbAcYu{j2tSJehhtYWYKZ5q#3)+KaMT$VX4l z{mZyCTz6yhKU?FQ@RW?NV?wUjm`n53CVT`SczObayWiphrw_@B4HvdRrqNQENkV7% z9an(#BaAwyW$+IMq3Pf1zeTT?t$*Ks^nax8|Bhi@_OHYKh|Fn-?8FBN>+?IS|2#c^ zLv2Epo+82Bz(UObhY9^7U8XS0n!nY5D1F>v_CeyJiulz+$v}$ZQY@dtf|rR;9TQ^X zJ$ygL8+}8@duzf_x)^VGXqV%)CS?Nk*MLHN$U6ROjrZ>w|2rm>YWPl5vr!xH&F=|* zjn(5lK4B=ZI0|zu_$Grc8NW_V>AxLq_O$=UUl({iaHt&=3H>L5;^%0b_$BvAA@ej7 zMjA49$d4;GWL%kw|MRW!#putc$JZnJJ5rDDt3&ML+b{at^*BBa_OsF7CbZdO`hQK} zb5qy-C&6b98c&e_rO0##=PnM-C8#ixmAz^vz_fK4!3mkg;l)|t(#64Mb^TTf#(qc_ z%PkJiKr-X|*x;@vq0|TkU>+_lRfarxJwT5If*vh}v)5h49HLk%o5vWl&3~9LG~VMI)9la1GJAZ%<(~H6qf*J38$A9333MS< zEDM4OP-6NVtFvbGW+Mc_fP?zp?z{x~;mghU*nxmnSm#Pl^eTLV;8P@_1;E#X9)OVY z4I5yBxz&KLWxTv*1K79_F~Z9tlCOqA=qHS#BzOZ}rngXZVtQk}D$pNjmn%|Iy~MQz zbUZl&9_W|kcrkuLe+piN$`ep|eAfC|U5@8xuOy5|?&E_~JhURq z=)EMfW1Y*7hkiz=*oE-qkk0?a$L`?2sN9)jU8c9!y}B3Ds|hnd?8#gR1%t*orx%!+*}uUQ5eY%bv*DC&c^n4@d56x=4O^~VK1Zd zi{0+Zw^4?h)|&7%Y|-FwpCfC$5oA5CGpgUf)taMmTi+00<&ND{93KaTBbExZZ1Yt< z=fYPJT+W8HM4XPW1I{>g3Mrby7p@Q90>DtSZfWD&_?jf;b5-s%a4}Zpm%aQy2tHH! z<#>=-cv)lR*GB~=s`KHZ!{u*t8w)x%y8Kfyl?WJnQ}joyqOud-&X2vFGpnGbUwU6( z%LFoww1Soi%p^=}AB8_^*SGd2XCT)`H#yC>1s9D^U4@owpE?TFRoQ1*xF@`}!BykM zHiM}R?&<~< z`YnHimeoVebywYi;E55$mc;Esx$9+4{gdYe(bWscgxk^Iy)b<9$u3on6>g8(8@k+T z=-0M}`s}lzW6=<}OQAWT=_Xv!m-hMZp<41uG}?swq6VIJhV`NneQ*Z%m#}F1Wma`(3Gj zB(;B!t^GdVwS7z9zgRa`vEt-3{~IM^@V{$6~T-2S<#?SG1i+1k%B+mCpX+P}@#{&0@} zKC^wMRV>X?e?dEzG5I_G=6s&B#_(qJU0WyXfeplpE73`ONmBSJ?w8(N65IeOhrHNX zE&V`PCMyJiHJIGc_PuoZx%7RZ=P9rYbONdKmAcJ@A-o*Jq|!wwfSeqlu0`$2ygvR7 zB{-_11o`?IC1Y?N$+8A_75AB zAg`yzrwV%(>8nE_zSc~iIeXr@4>5gNyu$vE@7%(D>ZJzxju zvABJf&0*m~8DPBFEFfF_$)axk5?fxdi==p^x3!?AUo#TOS9&)U)J$+SdpF_dGx*ti zrT1C<>9f+i8Gq87y_+!|Z=0nPAonN37o@(>=}%Yx!HR&cV{dioGbptYbE_;HSxKIa zm0&vu#U)6d`y3Y+JNH%ya%&g5W#0>W^sWh}t&- zSy*c5Ygi#ln$(PEG1KtS&N`|%a{uAz4psLwP#<4t?F9#RSlY{^T8zJ@3-tw>(ne_p zTdPh+3+C4qv9Ir1B0!SFuP)nwM26tr`V0WSdQ!b8Sr}*|@2!jWqlOg@+>enm0;-vvRZ2ZEJjJ|*Tx3TpZ` z<5u03-gN~vasz;*N{?7kwt6$kSSkfaX26Ax_&ZwI>U*fS&1*L){eFRoU?`(eu%@SLMeClx%HtlU`>Y8{{ z*nF-_E0j!xrd;&OLCvAP#q3lIJ0UECe_ zJ_zm977Kw(w#Kk`5`bL-R6#?jcncy6;&Ujwt*WIt_H`uwbrZgB?BZ*66h`2KDnhI` z&tmyXz4j@g2F>Wi4sWX~aB7FQ&K1auo(HWE;SSitre;50H2dgDSlNi0)=CJry8K)4 zxK&*uk9ArNZBXaqk$73Tp_E8@b-^`L*9!{agQKG7%TIJNEP9N|mjlO2-#P4Cav&Sj zUIGWO|7<;BFP%nFB%K0U==4o_L_5z%U$N|2*sD&gH|9S#D!)2rQEzB*;^+edr`HIg z8ytWXvV@+_b)3@u<&Ff_;g&F!(WLtuh>*klVNm5jCCLM3vMxP z+1q(uTH4|r!7aKpq#2&sz{rFK;NRcZ_o0&QR_Dj!+kMm@u@wV}_8J{QZa!xQr=@+k z+P}m7`o!Kmt+fDq;Sb|J$)%amKJdo5o=Qv0gr=)zXkhqH^g*$KjS8PeF<>4?2_`?K z0Z+#F0ckH?3jlViA8_5mXSClTXbNP0UAcj&?$sc$;5uVVJ1n-acZ=cndbdLlX~Yj; zKjb1p9edZE1Bk-SVzN=4>-sF9L7PUD?doL^r$#o2{5Yz` z-am@>M5Mp0BO=+s0sl)A=VgOYOrO7OB91Ke1)nS6$y*Fgt^8A5lm9Jn5?Z`RYw{71wJ@`2ez!QU8rzBH;|2pkNJjCxu1dx86S z7>koqhRYzKl(i-)We^i@000mZYj3mbWPO0VS|@{tNxVw?p_kQ2Q_#!qjG$@#bwx~M z?1x@t(kAsE{N{dfAOA-A}#jQhc&s zdf9R8gXgYjy=;hdNu}21*Lqo+RDedL^|FrvQY$gId%dhhYD!Z!y=)arsbFcn?16Z5 z|Bv;uEQ}_csRJdvd*@rzPqrnd>()ef0YMNvbbid+IR1xgw2 z?7@jk`k>A>_0;3vLanCWVviujIl8TV=zq8DtOqN>uGpC6=cIbX*iu!*UHv)@_Mlv& zQxuewhiCwLjPPC5QlC1RGA^PD00t@{)qi32uiTvP+7)`@W zGX2bx8X!^YyHEomoo|pP;3K;={&kP-yk$)=SXB-N176T%*=VgijLEXm)<8q8Q6uAx z?-#pKezYC4&S0?Wt>D@^`$2n*3$%%K)&`Soi?+_T;OC3lI(tc5XD@5(>}AlocPrG2 zt$;8?KQ`+u_@r=w*jsI#Ekdbfj-4$B*cFOtQB1N8OiDSV>SEL<>fExS9zDdhUK&}a zu`Qf|=YNviMrF$*i186T)~TWL2&DfD9vf9(KAJ|(1JQ>?LB^-!+kftf0T)gQXf0ADUo1UpbW5!cGJ=u({9lTC@qCz zl*LmN9P9T^uD^BwK&KiW1LCjY`IrUBn=^tLv*0C}0UYBYZd-*3!fZ2pVnB2D>f{xR z`NQa&ZWdNZUHQ3tL@`Bd0*>!Ytbr=WViyOO!qsItyhT}#>350W|03o4obJB2^w-Jy zGXyJP_b?$ zdqg{3yhf{pmFqE&ZR+8FX$87y02S!`G`R^ZzFaaNiQlRpgFWL54aW9dG!ye5V7#~N ztPqmbBI$-)1FU02o4fMgEDfiB{>V8HEG}P5ff(OLSk4hk+kHXRtA5kKrD_&geZc#}^#z3l?OEKOtr>7Br7{AviU@cg&t_ui!w% z$M+gqZ&1-kW7DdS53CLYtLp z?07!vW&;mJ0Yx~T(fQHR`Dk0`S6HH>G2b+kes>GY`%$g zzE$3^bMp;;{z=C16yKQRI2bAx8Z;+MA9#(r5AU@P9B6&pKS2Y)*%;9SYJEGwcgH-Kf`(&Bw> z-rVU6n!Rr^sE~uDY|~2_T&G6=hwBKleg?+BUA+zDh)zMi$24PP;S|G#B%v_=w&Z8A zY5bL-dK~Xr3L+^iHO6&zy3-c-Gh7j{x>9FrQEP$10<`BU=1!PJqy)&WT1Ak>_$^dF zvRNGlHy!?Ke}FDk0Y6wXXU_Z?xCkM~2pS$^&4LB<7y3Q3aE7)42$U_Fcaq<;2oPYr z#XoEQ!nvNA^YMgu%Vp)W7kL)UK~1vfoDtoy=cgMvqBt{(@f*|MgCoD-r@W}#2#sH0 zj9KSD*T-|ecwWJZDaME|jNm86p4W}z+9+-IylA+dF^@e3Mq`8aW>A`|;h3vs5fH%|B@<*ukwd9C*lIza6*w}66 zs#B@huGBxV>URru#8%`blyOC#{(Cp`FNJU_2x3Rs*H|PIHS}WPISc-)wB`vOvff*N zW%+q>)IYGsMZrb+kX$%L>u0=}bMyWhviWq zY$X$wutzSKN=IRiaMz`IY7`zJ4KszW>PRc70k=p3ZL!$u<6Z;OV)}r@yU{CT2amjR zGOTb6*0kc0%gYhK0hisTe)2U9gLnNCS9%)@YWie1dmCX6tSYD}%0}R36@LGdzY)24 zgntpbd6a(*QFCtT2OILcAD|{beuFa z69H1+lQ?`Fq0+f?-BtfVLyqCs^VpgWzfPlDl;PLll+5B_c`Ud(V~!^FEZpvze?*#^ zg-?9p%Rv{#@cV1eeWyD9O~zN>=X4QY<#f#et4!C7u*!51VwLG4#wycI4zear_a-a{ zrb{N>7GKMmD3t(e4&Fu7bUa3n=H*6N1-Q)?JGz$?gU_d7i4pjyIT3a%%hk~sItqf! zk||i(C!03#wyr>v&7L)Ayl@xx1T+`olT^_3d*gotnrpydQbFTGsVxFM9*^*d=R>dP zgt;S(0e`0vmbg+B6kyNka>S7%*^dUq9Jt_hh+gB^90cBtp~f0w*>n`)2_i$^vNIbx zJVl1)ue1EXqUQXg)6|J*E)_`cyoP&h;qT~-4u}ql_Ko(5_LC$Trp4ORV{Z5xz7~>b z0ZDKcngA|EIm!02Ka=ZP@t5{zK!tG;WYdTLffpcCQy=!=YrA~1=p8Z&XXsp)fq1sN zY68#*^j{o0K03;MYz6y*{i!>rLN?x7=0CiNN(-(^%6O z@pWJe5?px}-KBdvI}0k#OLJHEMGfo{YNfo^INsuYnvH9DefwVl{R1bj3!3}&CT$`Q z%LR>R6XPWlV8Y=!9nT;}a}f4yhvDkehn;ZkEtGN+{>*5h^&OuBXUNx9>Iqe_7mz5W z{)+nT+D0R&c`E;c4<1C&W~?F7lMsOD z(3^^jCth(;;Rrr~2Mz7>dI25vKfEO{uKE*!(cS!RLSMG|{RC+R;;7N{J5$<``R$=wUFK&a z@?(rO^XF+Q-}h`ylILuj^G{4ur?K(mY3_bGVVd`XaJ!!73cTes1Amk?x9A%g#O21w z2~&*T6P9p4(7xiW0w3nDG5&=#Da6x|DfM;1%KXf(^st%<9;jh&gyU+?NZ?(;O31RB z!u+D((jw?t22cc}UlfloBc<7jXMLCcuDA8~IF@#Q`m^gt!*x5AD~k51A7wt2pdSsw zqmzC#2BRUP-STDsxPBz@TTM|;x)Hrai16dE)g~;Wc}!^KvZgfuK_S2|w8#*?jo<1f zbW0Ka833xKQN-db8d1Z5KBQ3_2=Qt-rh%vtV~uAqj#GiMqfrwXVbf>%%NF7Zgs8Qk z#Dp=?X`1srX{wIRg(rdnq0MZ?C?ni~aM_C#*?X9CvsJvhTcNMLroFna;pZFLtNW(* z>b|ADx-b$$2qK%-q)|6mHkfVp0DPu6F zX)d>^`KT)9vUFo}kftkxU4c|C_`Q%y?6fBF54`~i8|RoddH8Ry_ zY%uUgC}gGwa2huFKt6W3tDeM?c|+G?J&(j4l+hueN8gBzhHJe@&)?y#@0M@zZ~kNa z$LBu(Li?)#YG$Owr;EX5_>P3$#aV<7jdsde|O}nln zRv%g*myW2nAJkBP>3%}p;!iPtBlp7~-yL3sR=^Mdj0gak%LF$nfH(s{#Kjr!12)Y5 zDGHSnkO;E2mIQZ1vot^PjcE44{3S>M@W%zDd+i{7r6{;d;z(bruZY=z>NDyQjEzuz z8n#I-7a3{Wsy7E59y(}9Ukn|M?V;aIUCB0(nGZKxn^F015D^Hd0nMpH z+6Z6xg$SJ{75M`Zz1HPF6_5356&|D6#l6c~Io0CeG=e?SHQ0?rl|VdLN0^6}#rn9) z>VsX@s}ekNB!%^QK`H>IxPKV79M*!k3@?Ne%L*+o68|P<2%*{E7re%3--Q21w$<*C`6RAsZqbkHtV>l1b2<^)aVMIwSkESwa!N98T@f9~a+a7Y8?WmKxDRyZ>6p)4%Wc z@Sd5Ty>NO}m8CXjsL!zA@ZM>hFzrWEUys$l%vOIxSM^Q*=@j};!|BKAPbyb<(%d!A zkVD0e#cW7x@jfiRL~mn16pKFze$ICP+BJ=lG0mHTF@~*1Kb5%Bug!0t;!8k;;abYU^vWZ4!n3KTS#j6LVN*S zMoRJ?RS9h5V2|9@-@bpM{Vy~|V=9tOAG!lC@PVlhrJ*S&eF!pSQmY~P^Ee0pCt42z z{4g33;T|J&I7PU#{Qegz`flk;exFTR7WqxgvE(b%dox2T%tSbgmJ{^-+rG{4IvhM4lY;#7#D(U z^26l>DgHT9Yg&;{hkXp#m$D~%n2Dci4H^aL0!xUVC+YOM9gwh0uN(P00q~O7aZQN} z*SoIwjc7r&z-!*oaQc+BVb4AFlgwyu6qJnEiwI~*@FyAFPW_e*9HLEKDGp0s4U7tE z4Zq+Tg@*>OW6m|xWgh=cY|$Fxi&l?C13922(rHSlbV9i(9k>-8Uvs49ve(92s6h)A zUAC|c>)fF}|1AK$dQzj6G6Src)MTa1aMNOi`T}dA8xJ!w8EgM8W_01ueI_Y)(Th44 zbG35kB%4__+JB(F*a-BJLkV4h<0R92l-!_kreu1bXP(FAuHt28(eZ|Px9xHaRuuLZ zfrSw@Umh!5&}n%J@-%s@bNSZ^j$Xn?eXg6ks*IEzdXl>^R32WmUnZojH{j$&5%Pc( zfom;O;3X^(^{_mmC&ID4>w=3 z^kIZa!|A_Us+B2h!-LBxQa6Wg@B5~cK|Fk~@RK4x_x=8f`Q+CmeLu+d{XgU1H<;h=-jVeEu}R-=Hc@dgK0wC| zB(}c_iZ{nG&1|Ou?b!VRTAvN4@4iW(bgdLmwMD7JYpdB_$b=krpBOC@&Eld$^Vzrwf_$Zj_Q822P{3P zr7(k7+P)e1nC#&5piDgs$~GN*gET?H!MCt%hJXIT8_9BFF1?vV)KKnx(InqCqEp74d5*PjGpE%8Q%AbCEi`OZ8iUW4=PY z^|mnRM#aI8<&LH-+XOp7l&RrDk(Y7%A9aW!TYkZTJLqqfJIjHUjCG0mVVWHh>#A6O zP@4b81uN6e!LGg+fCg2Oz(glWh0Qvx#+a?{s*hpVH1~$3(h8a}Ls>0_h-5VvCI+&s zl)?73_yU+%+1cqo)Dnti02D*Sw@MHWUt6`UR7R`2Tk$bM+cgqA!_MKFLTlr2O(FLU z*A#Nwa7|&#u3_dcwin@RUu6WmaajeAAW~RcBwkaeimxX8rRpysB%mR;@sPIOX%%_B z7apSySKnfFvampat#+N`un_O)j_80{wFRqPqu;Jpm@@J9W-qU@#U056VesfI@55;-h|WZWRnYV$Hv2F*CMdhB7Qny(cpKFxSUp1AT|EOu?bqTTc(T=s zI1CxVcm*(X1mQEX_yWS6h<0cY&NX4EL5LhAfuS9Qv!JOm=_;!%O}&FAl7M*sV_30& zd7Eb8lnRg-Z2gtq$7{ULpzH~hJ=^Sk5~D}3#IpaHRDn1OENFKXFF#anjtiP;tcKXu zUxJ!Be{u3Pst!DIvM-=AXPF*bwitx_1x_$MGf2_GC2>rIL<*QuGuH4zl{yd%c2Hu+JUsX z!DlwvnH2d}B3jgM&;yjaDzcQcl@m_3x%{yIG&CXCR#3ZgLbmNu-sji~ z;{F=A@Kf_0ao}#6x&$LN*2M2u1{cZz#JWloq{hFe$IgSSh;HRl| zA&w`0AsjWBQp70zv*$DEy%~w3U61aDpAp<~k+Cm-dGdIZpOeRL1Q%!8;fwVETHu_Y z3DEuet`~UQ^h=yIMF-qvCBb#RV5{MJ#RwOjg)2-9XgL z`NQ-pZig?VvzG2h;A2vnUT`HbYY|fQP2Dp-TkcQp-u_)VA>TH9!Ix57LG8ZgpZuQo zr9OY|bPUS~4LY)=5W1yx{@l0-o93U9SPS-teCouLFOn z5nh_9`rHN~4`EXmoP{WhugY4nrhG%v>IJ8L6)Sz7U)D`e(ZeFD0G z_-JA#VlLf&d3?to`TXIn@n;+S$Csqj8{t7K4m05NVqhHyExx0+9^DVzC#E$%NP?Rj zfqbCg5uFgtr*F$9xgULe=P~_!PCFG3I;*9pmNAKt~{bTLVbOFE1CL)s$0J?jQ7~RF;#nV8J(~85_mLo|w z;Eqlf`hh`HJZ8K90$9L#>UqwU=NkenhiQL=0WKHnkAlGG(HEI-6e`5^z*+tl+MDu> zAr)ZH#}z2f2<(pj%@_Jz1=|7L#}1G--0L8Icz`t7A+&m4j=fF&ri!-V;&QHDD%*$1HnIJRKdFv{Zg;lvGw5rP4Mv>J@vm1LG5a zndEl^g#ZK(`}!BYDhe%~RuG=h87!Q}qL)xqP}%8PK9Ib}|tmKb9*0@q*!xoYGCgQd2|lU8mpVDof(4g=$3ewY91(_k4qtE~+g1=aW8>HH++uvefE|*Iuy5+q zF)rDuWCYuAs3bh_I2vg?uw8*szUFg#cN^Hp>n{4D;^uQZPYsMTDm!~EJOR}Lz%8RQ zZBq>nsR$RPZ-rYSTmZm%xBJ3H8J*2Ix3RY?&`*@nC;~QxnJBVsTD-z7>LJLRT#l3q zD={3M27$)hk;>yeg24D7(GuZ_9TjK63_UfFzPb^Ko`#pLf$oE0!9Ti> z1%`cGl-?9u;0PWEa%`k@VaR3@fd&{>o%4C*vI zSR)H&Q8_Y41%&kCD_@H@gJ0uGFtYtwHWmELw`Hf)=#x^zhr8*IRKxYS2nTqY*5Gu_ zFF*-$BHBCZk3i^I=eP73el{+6E}TAZ-h97j{sqCJ;k}F|Q$P-&{2Oh_tAIL@wW!kEH)}oadQ1LSJ~fOZ@?y17IoW*pSlwC+Z}0e|~eH(?B&- z!Qp@bqjJE0xs#iwTC4gIzAg?buwTO_XQe;VXkveBad|2-bJ^jVfNTJ>()Ulj*mDtP z2CqA9lOpkxczmY+#uxNvL~o4_qrUsx^E4K5=eVFZ=@nMd6`9T_m?}Pz;y>g%v_pM-&zqglvLV{G`imgi8X(%1G2##|Y0#og zs$Fn7NoY!5#Zm~ik|e>#9Aum#9cjM@KYXF{c#s(WvxyHLIc*BHjSy}w|@UkP-@*BG(o)44@s7>M-nIxn}CJL#Mi9%{5h15t0sS8Si zA88@gC!0blbpQ}k-!3r+u+c$GRRF(C^1;dJoH+%=t;Z#h(BIL5jwd0>q1?7i_JP2xJNj zQPZxLi#A&1loG5)TC;3YPiv{Z8J=GRaS(5+U@9Fg0%*`WPJzF5=5sy&BA}3#CaH9d z{NNwGwST1*7v<`_nWu5cPiHMJONP=_M{mzz(J|C-DgW*ST_T5xcbc3~5<07(V?quD zJgkj8bt7Kk85wo2;Mt>Q<2m{aU{Dhq5;UQ7bqUJha>k)xlbqesC5WND=3nsLqFFf2 zg>eKYolrX!pf7#IBg}Z(D{2y?owZE>3`UydzP|egViHgHC{MrxrpP2zJw+`*RUG#S zrIERUGS8zQmb|~D*-w-<5xH5I%-~}7ueJWv-|L{i*NanS8Fr{>1^%*=9k?9R=8-|a z21f+G9n;>&c43}5XzvGW?R^h`1>Gqf&=N1$2s&8`tidh zwWb-sY_wx80RjdWa5?LXR!-~ft$L5z`je)%{&RG+HlLjzj?M}A7C5KzpDiUVOK2kB zgQnAuoo;Fti*kx;X5_L}*x|XbtMWLOQro!v_zk|=h&pvdq-52iFE#k2lRhW$129G> zdsB4TYeC}sDPs}LXHMgPk4j)pL(otx@jb?zM77mpiWWuBBd^-LAtspLUIgqM#lj{O z@^7PlNk+DgFEgWvleCaE1rCiKNxhj}UzgbRuThi03eP9*vYFXvCKfM=@h|$baJX}4 zF&tU!;l;a%J=chIJPSU@JT>?u?jpjW1v}JgyrkGX2JSW^1f?Dhts_l;S8L3lb(-a4 zf@eegn;yT%7cS1ujGMrJ{u8Fn% zCnVMuU+9r+O|2Yy3rO|Z^GI=DLytkH+tfJpS51+n7z92>Egn0~?E9j-@5{92FS zT@kC3y&b)@TeI_t1^Z2^UQMcJV<0y1ek~eGHF=?*#jH>q@7toX*O5@0Nm*y$3r(nQ zT}a@2SeV6{Uq$*umq6V(p*9PluFFd3_#+S~0rTGV7NJJ)rO@Z)*jtKBw6AsG=q*%4 zK;xaO2=5FAb#M`m&0paZHV$ru%N4#S9dEPIM@~!`kI>Kb*As*;@H_5jYK6#c!(K+5 z0NU*9iJvJ#Ka=>t#F5yVqKyA~m{!Jtoe^rb*WM1Qzzj`gyx-_Z`-MjwCE;bR=#g>W68FFFc2|7~Y<90M^kA>i zQTmwP;xS(?I-;E-DgMbU@S_WJ@Mhs+S`Mgusu8}}b$-P;BTfy>Y;gHU>G$mmC*$E1 zI*6kq2V^XY5;a1*P-f=q;#Ep zkOZ8i;HJZ3`MEKE+Mdf?0k|R&A8=O<=L2E{_TGyiNkfV8g7&ZB25)rn01aIDlkIY_ z0Dz2*>h!~ijIqGU^tnXF?a-of611omHS#G6BdSb|s&lBNCJ)u6wib>>3nYZ0vqfjJ z;@>fOWAf*6xj%`T~sOfV+zV8CDYIy-oNoY>?G@RE6Y4jj7tV+iG*Io5* zXi_-)HhQ#u1;7(F8e>JpcUS$2HG==aZAw!;R7v4aUhgUimF2)~2S4C$AoQfV0w&A% zht^&n?GOAZ3BKyvva2NQ^)P7;cZya2mikdR@EfU!Y^*?oFTBLXo22^SGS=L{xPnJq zvUzh0Xk_#z`)Gg<==`!l$DMuX!GRK^a~-_6fe&#&HE6-imyj=OP=IY`P+e<^YD!)$ z4kCpreI76%G^wI!B?>~`8Wg$`NH`w40_=h zkN}+gKTI4qs$h3ZO;PX}zlW#kVf4{spy21?lSP}g{PqT)ZO=gae2-~z>*7*iQbF)d z&`b44fCYGDaq!cpP9<1ElWNo{Y+k!B(}3O&}vik`u;G$Xs{^2HvPD9{Zp(I*kXm;k(X%%Lgs% zu>N3HTh+};A1wlJC;{U{I%xr?H_!7>lm0)TY{Gb*)tN}g*j&s~qm3*k&n9L9GJ*HNWSsb1%0mNPHKSD*I zTWtvs#h)F28vo3&hL9u;+V{1?sb8Hpwxr&4<*lnx$aLNA| zuTG_>!T37*uD;9(J9qvXeI$yiddEbT%zYQYDVrbM*qe?kkK}Ev_bmiAxJk>*L<=lM zo@Ehnc%(U8OweWLfsA&klLkZApwk^2bv{uy;-D57vW!5%Sz`sr?`@#3-FgiDQ=>d4OV_x8^b34z7+S-zA;BuKe~||VBa*0NP<|0 zxPaGz#csD&{R1@?7ziiQNUY8^Q2c1^Zd2!Cq&As#JsQw!ktp@zYcW_yAWr-jg&^DD zYBZ^igDpXLkh}q6$3*F2GOBIrpdWLklI0)rr=L$$!G3^n7g$%sE(Jve;}Z4MADX;G zmI`LM6^CNL&~Wq;sh`Cip_kFs$=nYv)2>0N6{@TN*Ftj24M;*+3K6(>^b2Y_(60Dr zkINfW>_A1Vr?VF_ItPerE$K4nCGE;J2#R_KB%ipdU&yNNB}tWC8(USl27xC~ub@w2 zIJOnI6D_1FGaM95D$esP)Q1lWWLEO1*xxZPW%PKKo`q8WJypMD(*fMMX0{+0@Yz8L zT^=W0cB*01Eb{#H5y@9@SpUz#sj#*{rdQOcBV_UMJFb664xpRpYjq?BYWEUFt4W`e z%2%ZuW7+~g*5>9-SYD9>rfNo=)RTJ2OzueR1^GCnl*ZLSY9-LhbAX(y}dtj&Z%f>quP5xyI=U?#AQMmvtq zQ1L!y+3r)e*;{$q%VP24aaj(;exUeqNq7ze-H?9+$dGTQCjuP#%gVS9!d*o#s@72I zF}+5a9%|`*+V894&qP?Bj4{>2UDm*RqmGSB{91TnAU4#axViw=NET#&V5jEt@2h$g zI&*onR4ecR73?7z-9G} z=&0YY-o^Wr9LrHHk;iNo9s_*=@edF~OmbK(rceI_dLNAjG^X045AcpzSRP$K2J%s( zNOAC;4bf}xk8qN*=$t4%CO6t(0>*#71(aa~ip|9ALcdyd4dD@+_5*knwlp;(VVEmX zPSg%QO;?w~)|<8=|TsFgzEy_El}^=Z4RoAsFp6i-~AD==0YK!1v_d$K;~|24Kg!_b0W zpHaHd*4$Y#7-U9Haaf;QcD9ni1t)>F>0CF$*G%JL-msi3ShA|zRecfhz|MDicQhle z03#MBEcY_O!$=?a1~}ibzbglos^B;phfF)Lq6)By8Y5VpNt<-cMt9W-DEEco=Rsi> z3h};)S9b-gxs$gzC|7O3i@{ChQTUi(jjkVtoLpn^&Wf{NqM-ig-*{FMSMs} z2)A>JSrpCG_BtZF*yY8peBtpfeN%M@1|hdp4=D`yIa98wUbYVGp4U{Dgl7%*Rlc{I zT6$n=FKWke5&vop?b3+_MZ5PhGwOW%m^5U|Juyy?i1#7-LNJve?KNl1dd z3};rAe-KaF;`ZU_AoPcHFeCIRfvuN8uI}CqpcV%oEoG0qz558jCA-F352xz=yhG{q z=s3$CLvt;BRrX+`^4;CUl-(eE4WmY*@);~E#Bi{z0do?>ct_0u{sBfO#b8vAqwgDk z4;Y0fn=m4LaO=2+PjN`&KuB-^YsXPVhg<#A+o8+228ngU$OFkkqb2~21OVpqDHzV< zA2ZXa1^Z%%{$`Mm>#A>|Gs1VVo_hWp9^Am6aycLF9r>Ykj>A}zn7e8!oE1@Td`01+ z(f1uju#mC=={d-`M!^U3Q~yTP;o_=$qz;=o49%ckn+l?+J%b()42Bnke)Ar^A&-)- zKo;frgHXw0xMz*9oJE1)CXiBsUInLPF0hXHoe`7+C{Xvpl)5U56@xIN^moCVz#d^J zj;+o`^M0I#uU))ZjL+NizfXhTyMX}HK3=4Ehc8U_=Oo9=d}EGDh?h|r%c}TqXGbBT zW$@e}gZVBl8BmG%0R5r@lqmW|4VA7Q>KB*bThT8nK%q72d^|R~aE}1lo84_e8e4Z6 z>h=e<)~nU{=^ohrPt!V7GQ=s9xfW;-)y@MtanQZA;u`d275*U??gDmG5L`Erhb z8OGmfjsFXdzcWQY()%Us`r_^Q)*3(V2Dp_?LGUiQRP-Pdr{g(PkpFI=?HMj7o|7E{OpJ@7MbY?+6nZ} zZwG*e#E?Lbd(^vMh#|pqejLMlv%yfo|8bL?KI_6HXn}xicik- zAT@-k^;l_ON4?tp%>YwP=!-Y9{)iIcj$(L-GR+QjHyBm8iP!m}f4dNEs_T3(J2uAB{%toiv)My0i>gXiUwycS0yHn?eJGv`x&UUE`a34WiNqSplN85K) z2nYkT9S%IAzY^PZZ^vM44*91pA!V(Q8`|AP-eSEiXE^ zB)C_*y(&woY;Ev`R@Y$I+`I@-A<5#}W9asJ-^z#D`o#ci-$1AO8V|bdM>D|Vfq7#X zs|bhrWTL0)dorOg4au*2%={{{&Ru(vqk3`>de6kW)9xk8$0=H(s1$8_)LChWSFn6Ti(E<8Ycn??`+l>q@595n;%|=p4Ho7ytx)e%EX>3Hr2K-F-prap1Ea--UZuWp zAWNM;?SoDfpI=jWQvr@V$e)F+jWDM$BXNi~SF&Go^T`DqP;xF?c+g4QC>n%$F(nHz z!FnTjxDmPnkJt{`gWY>?6r<75)H+8WBeju=4l;z;W{tms5E*8^Wdn&WfeExI|9z&z z^nF#0dhLHi74m_rbh+L(7{$hFh+@=m7OKX2?yo;)MT*4?~cRo0`N?cRCjt2IbX6>wiCs>#r_8!|jIhT9UG!xUNLLk+v+wi1!d%bo6ahx0{(o+;|qiZZ&Q^qwfW(XQZ7ea9aE1 zc%&_-ZC)!5QRB?Smw}kFO<2nYbm;m$O+Pa3-tn=4(EUTMpR*I z$kD4QV(4RlCEqnhdJ&4F;F@JIyi#?g>XqErk{SKdS%B++P~PWHz>8<>%&<&;K_yZUY*vRK^IR2zWlO_E1P zO|{XksS>-B1M4?uAEK_FVB(f&st?(5`yKTkU_oqil?}JKiP47J!-?C&iQA&jwyJfz zxK6N;m|)VRJ_49iLnvJ9re70V;)*O*0{g$EutnXCzx2&Qkwv;5@}NaA0Em8^*!*p1 zo+wp)zJ&(U@um3F&GYci_~J00eEYnb1x#@ix)Rt++`}8gA2}Z*UtICrlif;F?V4|x zbT|pWiO1051?D^OT zA9Yx9`2S<>T;QXsu7#f=2}A@YC}>cWs8JKO8Y*ZasEK6A8JGclV709kTTrZ8sZ4-Y zz+e){ZZ-+m~g)v%;Q#f;3O*ck11nsXa zir*tF>(|tt1f2lx&o`&<)+OW}6Yt=l^&d0v-20c9fGl$2ULq}I9ynL{nes2K)AIHg zmru7>6#!oM(91r-y!Ft7a{-7uZIbc^F@p3k_|lu)Wy#)zobMDEMP9A>?r#XTg`|-O z&UGT(bnOXtb9lm0`@j1THH%z`3y`q6W7C4GaBNE=T^y9;eEG7M@aIZ;(b39ecJCn? zMz#jSNQkGDfd5m%@RxK)D;k0ONX#;1)n6|{R_#&AaT%3VQ%U?_=@~Un)*AP@<6tR* zz$cs~n3^(HC+4RI{2=*{A6zS-JD3l}VN`;q^@iQWHyGG)Kw7pr0Ny@!f(-D+6Pry! zAwM`v>Uo%sXrIJsN@Atfbb8PfHzMPHw%dK@E}igST%V|R5ZXoOm(fJdg#;6D3HsXz z^CF=}G5~WjMf!p+$3qe^)xW>+GzC+xz!0f_bFV6KsKyg5J%Y*8XH%99DyrcP++aHy z@@&=iUU%0|%!Ik}hYLB&qBmhONx!@p5yCFz8}a=Me+1Hb&hYAA5IdaBfYg*V!}RtI zJTr@{pX!0Ex!*(SrO)_VLj?Mj0-bw<^Ub+-^u3OXK^p$Af<4lH!-9P}K{}q?&o%L! zoZO-h5(LBSTw45PX6G)@j&6T@3W9K*L}D5kCMcyBS7@?^6&enD#*Y*SDKcWul?+x^KVZQq}elo;VM`NqW(eXODc2-~W z*;H*IFZj`R3nltQvn&wt0b^U)ovE;VZL%-Zn|&JnQt_eZ_p8&tzjBK!d!Xsnc>YCu zx~nI0f48=|dJW&Ca8L0uezlL*lJ!qNhE~MB292K9Aakk6%}&JVfE2?mcNb6> zPpx;eunvzuQR~k>oS4b4$Xj=uXvMIQ8}i(X*LQbw&pqP9wKrvo4^?UWjgM;6J}TlP z+A}l|JC7Enf|Gkx(A(aE|MjDoT)GSc<_cS!GA}QHtXPw3mk!Sg`2#Mj6vV4Wr~(T- zJVb>pM8RrxuYXyL3A@AgA8L6WG*TDBo#n4?3zlpSm%ktOPkK#+g2RH&!nu`A)pI3M z){yb{#fn47XapDx=&zM32ZZ;pfGwo;@-%dNtb|H{>>VJLqOMh;KyydRRIkV5h&Ow_4d&I{a_Bm}{*rQFM zXGrDFV^Z|>;olPU<&S3hS4 z#y*FlI^B|8V!C@KXyV3YQj}GKuJT^cKk0=){hJ(|fy14mnn=wAc01+l>#RjDX`B$XE_t?rE%CTW#}vCp~@K`yUqX$U$_HUvE*=Y3v7(`d-}e)S~S z3sxA5RETG4$>luY7sLn62%3sax)H|3{Df88^nTamkj5qt9M zf2Y3m`Qf|^o4}Y@feZdF-ie{*&&f2*%$wqjI~upX>bYw$gQh9E^6k+sNhfflNf|%isz%+#q&#GJ3uunt=qT#lAJO z(}=aqZma6Ty>9#pf0cGt{JN13Idq7LwU0OwI#=&MD@;~^m3efC^WQhBu}e!mrlnqV zvrZPu6pVkKw9 zz0RVygjT(3wwR4sKV_HLk;vE{cXBXwiiQll<+6MZ+?*8-iL$i(*Bb)9q`2(F%yIC8p6Ks@! z04<#zOL(5mmNRMY-Ynz7w#ePi#EOMw8sn?nJJ4smXf{hyo!koCwOZnJ_xC4d@;q<7 zerj}r^%T3oI}-fr(q-wu@5QfHr+qYnk5c^V99omvJF-Uwz1Qnvgkgj*v8a9=vab_0 z*I%!}qBK4b_khI@NuPi9u;o1Lg6rjeFndXv0Q}g>x+MkKHyo*963bAKF+uK;mzDNR zc9sXR$zS(l1;%vbPJ>qnBeI^C2}e6M_H2S{B<%&aw|4BiJukZ6^Ea*wSP)*7E+{>k6w5F9OB!FO1eyM*EDy^~TmSl(x7&c#|A_qX^^#0lO7th4pQHagkq8{Kpb+Nd-uIMj zdS6{MSHpl4JeAG80VgVB4rC=bbFM^$nHOA9UsNj$z+*r`dt8xW&a4bGJq~1Sf;~CV z-Ozb(#ji9PO5ZzQ(wA@1m)=%Mq1@R^lq*Z2ataBuTvePvmTF#l>s?RzE>=y$DFpgL z`S6SIMePF`KUrh>=7vUjj0%q>Txbg8m8r%A{?gISK(lXunm_U;&7bC%{ER<}Rc{76 zKr;ZecXF+ce7OQsynYh7UbItLUXtd%*pcHtNi&Wn=3nIl_Z%37@D~*iVx?4>c%Q_H zS8gb+!G}TqxZ5CVR*31&#FH#%!%9jJS9m+qf`5|yvZ4)(c&NXA!z@XaG|VuM3VBT| zHXb@|XM>cqoOSZTeTh13=K_)~S7V{@wN=^rVP$t~mF)!!eDemSsD&e4~-QqYbT^B+_sY zgP7AIzoHFmwa(8%B{=%St8Y=zIgVtzH%N^ugT8i&wQ$H@g_18KVN*6p;O_3n@n{Q| zzZMx(S-Z4*Fpu_ugM;1e;gZ+z&T7`y=Chq}TdB6Ou1s>Asd#88D^?2JAPwQCFGVDR zy}d#DRjb)qHAC0>maG5Mo{*0)@mD%4d0BCeKg;?~g8)Me4+K(SJIgBBYAySyVrnSs zx*=n?EVo5uuvSbeww#783I@wJN8k{zyRSfeVzTB(xBE0dzz^%Y20tbQx(KnnY_s5! zaQaJ(E!qvipWv5;X*8PJ&uv;EO|iS2H@4OEl?4wMHqX?neK3-3I)Rz}#S70jkr{t1 z{lLovet}CrZH>R}TdE&DaEa(gFS@^{fS49ZE+Hx0Ak;)79R_7(8oUO-8hY~cGKi1e6jlAyUF6veO7pA=XTB%wO zJzA|NH_^W|*lGK*D|nfLh{DqV<8rCX8G5QVlE=29mPh_PN^=IXT%rH=s_)R=^_lxV zSS%!_QP>`9PS!|pzFk0>M$mnJH=!Ua+E%%InuX_KaBrZ?>?-eaJC36p3A-FNIxOTJ zlX8T~h|E!_VUC!yv@dRvFPI_wXq}m)ajWnCUP0-;$1l}5L$4nplafCED>bLz@%OGz z=PPK#g3FsKFu4Q6>V-Y)sz;VcZ`IyfeWtu+L3*LVKzxwR|?*;Lkq1nCq|IWcO zqW=2-wcho8nfZIAydbN`%ng+e{7WKK%#EQPFOMlHy_u8p= zZ`cGMe=d?Uc6)p_d%6!+@R9pZK?giwL_TsB6}lfCrR|kTjb=~9+t=_S@DqJM7#+g~ ztt_wHT9C(H35su=Ap9@LCZ9X!RlKsgC+GhSJzMA|ZD+->vstt#?CioZnM4yim!bB6 zw~+_R1O`doRLJ)#uh=&*9xs^sth`OJLA>bky~qo)|0y!Tld}?haS(7mWM|@6bpbmj z6<=n@tKU-;F&qDGTe()SWqwMZ8H(hr~atF2Iqppu5oU z_t@7m3Z&Lo=Bh;&LtVoL$tUivUx?(ASe=S#D{a4k@{K*puQlb}&%m+NcdyBJNhaN^ zKOGsbQ~IUG6I=F1o^0FLxkJBA*NkY{-mr^fh9_Aqkt?s6bLpI`FSDWzyU8KK{`@(Y zUi-bPe?Ue|Gp_!@rSq?zGiM$dZ7TM5@bQN+o=p(vetz0nT2=_9(TR(^FfaJ7sInjz=TQj(!45rnMhXoz@2E5Er`aXSGqT9A10GyTwgeEJ|- z+mIy^l(SB{?dBiJj5+HHO_qElR5@@8w>vp!F1)jv^6R9$aSM6ue96}e+yTdaN@wRV zqf6EX%Rh+>6*3&ACWPX+k@gFb!sG-2MQW|`{rwe@V~dupw~l{KsVq~fP#*o))x`*? zYmYqoD@9Yh4wiq~cZci^3f=OL`+L1szveJAF?UttF{3TstC)bHN;)9Gy&m8K#x*z7 z8E1USp9GpC|G9c6e#g8q3WUr8Gb!bT+Zt>dVYOU?6RltiXd&2id57ZAoO$gHaVZL7 z{Cr3XX_DCTh{>EK)+G?*&1yxA<#+TzjCJRx5F>UpX%8um z6{I-MLkeSGD)hkQZ+MDM#-5j+%Jm$DiX|Sxe9qL#{5yKo^>ZdzvBYUmoaw(V#S#<+ z=|cad{!Peo@)sb>w9$$z*Z)MuH@@hPiYy!c3uKwc8-py(($kKH)jSNcNJf#>B3qx= zUKioM&4wRKk(Nu%Wucdn@pCf3o?Cfbd2M^cZ+UX+MpffLnXuO;*@<+;Z5x$=E)N70U2eF&2f8euo9L#L;5m1ZtY<@n|C(rY%X1+v-$R~n9bkF8$0*mZApF@EA3vsZ3()uauyfXyx+YCOVF-3ehJI%J#onwWmf*hIN-n|uy2Vh&#JrvE zL380#awKSj1eADSHAUU6RA^z08<>^HPnfL$(y;1$8Fq(;Md20ex?~hsEvL+$v*47P z>qJT%PEJR|DE@wL_O;ivHylBV#dbq6Pu5)dz;#Dpan)}Pa}nUX$4IlLocja?qIzyJ zk<+F*6SWep%l(VyRHWss(wwTa99wg&w45JkjvNn7)O;B^*z9IV7GAW@2I=Cx6*_dT zN8KqaoV}qyUUz7C7#X=tNUl431mJIweZM}T?{(FEVdG%7G8LRy?heCDs-3O-u;{vKG7cp}0307_ zPAyoxnE!elGq59bWuIGU+23bF><9Ul%~4A+r(Uv_&9@faYsLdDIHrkT1E>W|##$Nihz+64NO3M^-S9;f#Bf{pG^pqtQ&`RM0_?m+-&w)oEv zu6sFqPtce1yctT;{+t1?#C-#d=QGo9X5i974Mi*au+n=rVYT-hH;~@ru0+p1be}m= zdVf}`Ukmawy7i%ZkCwnMJ2}1unLYo|y_q6_oSt(JZ?CSu(4*_hTJ;b6Qu*vl59#CSkS$6KOHtC(^<;66uv`>D6AkvZKC8$XEV_qjwjr z%e~{(xmqaC4;Yx=n^pGjSJjQsYb=Q+=q?^6)gYvS}*tCAQ43_*~LkuF4jF^d~S!uVC?&)u2A$YdB|23 z@alHkhpI)*E!7^~)hI=5;o&2PzQox%XXuI-CuTiJZr0dV_u5fx!=(5jON7+^0aZXO zZv23r%LDKdevEz99%ChL7JDv2*p3(7u=$GWFfYgcD!+PfXH@_t?lXRxioE^RB!6f9 z_{?2eCbRY}oOYIS?&9OfSDR&iW@}|KKQGGsOoqaln`wEGgL}=(WMZzJB@N5GByJNg z;(L$fH^=TL+I9*DGWiL8_%!6*4RY591F|aH8{~peU)b3ogedU+lTPqH_vUrtA+|wa zZ&09e2y6evl{Y`Z>_FVG@B6Zv%yG0?Z& zAZekKcZR*hv)jG>8|wU6PdQYwJ9wL#@=W|fW02bLKez}vOpkScio=hxfEp|MaDY&X z4GU!|Kyr`#znxq1wQ`&*znME$pNnA$C8{?B?FWQGt433rEdB9?rgXMf8rGfvBjMcd z`Y-PE7weao`%iB3FCV52vAA~xYNhM#fkvz}H|1!uS?+*aDcL+%d(SoAQx-IeG8Vl9 zu2sI>i1>vYpM zFGtdw-EZWbo>jY~lSmpj&>#^UrMF?C1IaJ@HU)OmL~~C-vIi&7gP?@qtlZn-V|Q?; zROqii4f_%I)-}h*l0a1uK%~LLklG7_pj5f=1lOOD@zYq(gc&?ZZYcV)oOwAWWFND4 zQnB#|D0A=QO`5;Y9sHE|IoxKKKqg%-e@Z?Z)H*#K6ppzK};+;%3 zaok}Ofh{Drk_0ifl6;sXi19GVM@WJgkC1$nB#7~-AcnYksJyL6;q5B1Q|3)A!}He% zn0I%34&JB}glZsKVFASD+@W+kj>m(%Kz7>+(T>U|c$TfSnMS+6=JWq4Jb~NxV72~x zG+fu^IQwGDw{$Re!xWy;z}5~;&|k){1BLFB)}$PozQQ_y=h|A;aR z+mQmX33RxhoomYO<;lzV52OUQ2?@4OcC#!r(zB)94&KY9KfKoU!ed0r45UlMgMb-G z7^}1ja^3D~y{$E4wL9Ovjk57j{M2}W!ooc-qCb68)p73CQh1E?;XKnvWg*ziSpL5$ z?@)cE%Nbxi*d5O+4~#X#IPD|bJUxJVBt?Y7j`-v>RMU)pcTDcp@0!Qs+k4x`jQpxs z#H+%fEg=$oZ~Mj?COrA;{|w+26+gb`A

    kUKW-{uev!6-%V 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

    ae@^wE)BWcxJu!Y?_Uhm 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�xYG$t7_tja zv-Gx3Yq3)wBgIY~qH*HTQK;VW6uM{RIztBZwEfRgv8bik!y*<{V%w#G?>-1BEh(X;|_g`81-L3y1~9zhjV?ydETW+GCrXu4#)`5EdJngLH7<3$zm_UjdkR@5t0 zd=caMro9GeeoNfQa6n<^NGLMwQ8d>Eie|A6D4LuDRdi0VAooU3)nfd=fy^b&ZwxM!p^9WpnM8t<(4jU%MiE3$IOkMKp=S+8MfS5)WVIPVL&WT2E=T* z(L)cQ($1)qpd!vFdaQ!D{0e2|M$bv4pWH-s^3IQ#8$A<(h=&YYZY*lyMo*O>R!}Oj z;YN?4fXXfj0iU4?;kQZdb)??y=2&OV^Iq?dOirTqEd+s zH+rB5RMr`l5md?<6%|xip{(4zA__EMgfYwq0(hvVw{_qkMu2Iip;H@;amP7c-qA z8K7g6ue6}D&Zvl>QqCy9pu)~5kDz=`C~UvaM7A*>nBkCn>=RNjs-rV1EvTq7Dk7+m zGs-V0uR>YtRl3|}GSp^XH@H8b_YRQBA~CY9S1ejluTT#~16d`u-SWeJwV+bYsHmXA z&Zv-}dx79nnjzs2Q7F9AWsLxwFk7PWAr*N7liP%5!0H+t^~sEjizEvTq7Dk7+m zLRq=_%iKc5ZSp_4uk(H%$zzw93|nq2TEPusR3YY7Vm939jaHzF&Kf9)2C~kmjG$5qW#yLfm$+qNGd_Qf zxzVe?NIp!4EjJdmaHE%pA?8zJHr%{|ayg@lqJg}#p0a{UE0mR+t6V2NR44yKxY5ho z$Yg{JTW&0B;YP22L(H$lY`D?;;y`(vQ7%ChoHdXaJ!KTi%FW+eDz^}9M(e9wZuGW2 zl8=&M%Z)`X+~|FMh=r7x4L5qhA1JRg$|ID3_oLN&{AI;pS4gMPM`TdYQS=B_c>Z zLxwFk7PWArYe*m#Rbn>W=-v{bLe40^puEl~kD!W516FSSGPe+Md*&a^jjnY;@>w!$ zxv{8)8(j&y|1?6`}`2^)rC@VKtnVW~W9W31FLL_9eaD@{$7PWArE0rLY zQDQdS=nf{JqRyy@phC_lzo5JdW#vZKHmMy_*o>wZx!mX`DI!Fvk-a885I>&*clZPlux0o+`Q%S%}3+gj2D<2T{wp1U1ZpDV^Iq?y0Q#nc`_ho z!;S7Z11jx|N(n0BjG|lA5SL$}tlV5>ZXV*MKhNCgYB-2^$gt(cq84s+xg5j_N+mYj z=r%f_GR~;9prX#Gh@e6WW#v{lrCcXrGyb%RxzXi)NZw0^EjJdmaHH%0AXZc=vEfGd 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

    h8ILIFt?!m&y+N#K1hmF0v<~rF0V=@_M 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

    ``IVef=lfmeL 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

    B{H8GKii>l1Yl$n#- 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%0AF)7@7J`t1oYtBKu^eZzF3Dian)d>_)LQ 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

    8RXpn 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

    vR}Y-Z~L6I+Wwh72Hc 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%0AEg=K}E)rC2~x98Mgu!Pb{8n+%Gn2OxW}a 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%0DNTf66x~zZz`I4mxzE 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 z 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